Built motion from commit 270fd027.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Fri, 10 Sep 2021 13:07:55 +0000 (15:07 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Fri, 10 Sep 2021 13:07:55 +0000 (15:07 +0200)
1194 files changed:
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/de.json
public/app/login/i18n/de.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/quick-panel/i18n/de.json
public/app/reset/i18n/de.json
public/app/toolbar/i18n/de.json
public/index.html
public/scripts/app.5d0b6216.js [moved from public/scripts/app.b7a358c4.js with 99% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/migrations/2.5.35.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js

index ecbcf3a..5b2dd30 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-10T12:21:57.322Z",
+    "time": "2021-09-10T12:52:47.467Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 1e4a07b..d84058e 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-10T12:21:57.322Z",
+    "time": "2021-09-10T12:52:47.467Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 3b53b1d..225e85b 100644 (file)
@@ -50,7 +50,6 @@
     "aws-sdk": "2.610.0",
     "bimedia-machine-uuid": "1.0.1",
     "bluebird": "3.7.2",
-    "html-entities": "^2.3.2",
     "body-parser": "1.19.0",
     "compare-versions": "3.6.0",
     "composable-middleware": "0.3.0",
index 53a27fb..5c4734e 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Ihr Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-mail Adresse",
+    "TITLE": "Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÜCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
+    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
+      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
+      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
     }
   }
 }
index c090dfa..bced170 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Melden Sie sich bei Ihrem Konto an",
+    "TITLE": "Bitte mit Ihrem Konto anmelden",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Erinnere Dich an Mich",
+    "REMEMBER_ME": "Anmeldedaten merken",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "LOG IN",
+    "LOG_IN": "ANMELDEN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Melden Sie sich mit Google",
-    "WITH_FACEBOOK": "Mit Facebook anmelden",
+    "WITH_GOOGLE": "Anmeldung mit Google",
+    "WITH_FACEBOOK": "Anmeldung mit Facebook",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
+    "CREATE_ACCOUNT": "Konto erstellen",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Stornieren",
-    "SELECT": "Wählen",
+    "CANCEL": "Abbrechen",
+    "SELECT": "Auswählen",
     "TELEPHONES": "Telefone"
   }
 }
index e60162b..e6b577a 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
+      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Betreiber",
+    "OPERATOR": "Operator",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
+    "LIMITED_RESULT": "Ergebins begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Bestellung von",
+    "ORDER_BY": "Sortieren nach",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
+    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
+    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 4bc9896..02f4f10 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl von Malen pro Interaktion",
+    "TIMES": "Anzahl der Zeiten pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
+    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
+    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Key",
+    "KEY": "Schlüssel",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
-    "NONE": "Keine",
+    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "NONE": "Nichts",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
+    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Website-Script",
+    "WEBSITESCRIPT": "Webseiten-Skript",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
+    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Nachricht schließen",
-    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
+    "CLOSINGMESSAGE": "Abschluss Nachricht",
+    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Echte Priorität",
+    "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
-      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontakt Manager Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
+    "CM_FIELD": "Kontaktmanager-Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Maus über",
+    "MOUSEOVER": "Mouse-Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Wählschalter",
+    "SELECTOR": "Selektion",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Bis",
-    "DOWN": "Unten",
-    "COLLAPSE": "Zusammenklappen",
-    "PROACTIVEACTIONS": "Proaktive Aktionen",
-    "DISPOSITIONS": "Dispositionen",
+    "UP": "Nach Oben",
+    "DOWN": "Nach Unten",
+    "COLLAPSE": "Einklappen",
+    "PROACTIVEACTIONS": "Proaktive Anfragen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Aussehen",
+    "APPEARANCE": "Darstellung",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Tastenfarbe",
+    "BUTTONCOLOR": "Buttonfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Eingabebezeichnung",
-    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
-    "EMAIL_TITLE": "E-Mail-Eingabe Label",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
-    "START_CHAT_BUTTON": "'Chat starten' Taste",
-    "AGENTS_BUSY": "Meldung für besetzte Agenten",
+    "NAME_TITLE": "Name Titel",
+    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
+    "EMAIL_TITLE": "E-Mail Titel",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
+    "START_CHAT_BUTTON": "'Chat starten' Button",
+    "AGENTS_BUSY": "Agenten besetzt",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
-    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
+    "MESSAGE_TITLE": "Nachricht Titel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
+    "ENQUIRY_BUTTON": "Anfrage-Button",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Bewertung Senden Tasten-Text",
-    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
+    "RATING_SEND": "Button Bewertung senden",
+    "RATING_SKIP": "Button Bewertung überspringen",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktive",
+    "PROACTIVE": "Proaktiv",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schliessen",
+    "CLOSE": "Schließen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbettung",
+    "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
-      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
+      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
+      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
+      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
-      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
-      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
-      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
-      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
-      "INTERVAL": "Wählen Sie eins aus der Liste aus",
+      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
+      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
+      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
+      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
+      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
+      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
+      "INTERVAL": "Bitte aus der Liste wählen",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
-      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
+      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
+      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Dispositionen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
-    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
+    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
-    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
+    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Abgerundet",
-    "SQUARED": "Quadratisch",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ROUNDED": "Rundes Design",
+    "SQUARED": "Eckiges Design",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "ALL": "Alles",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Wählen Sie eine Website",
+    "SELECTED_WEBSITE": "Ausgewählte Webseite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Wählen Sie eine Website",
+    "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Wartetitel",
-    "WAITINGMESSAGE": "Wartende Nachricht",
+    "WAITINGTITLE": "Titel während Warten",
+    "WAITINGMESSAGE": "Wartenachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Pausiert",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "WRITING": "Schreiben",
+    "WAITING": "Wartezustand",
+    "WRITING": "am Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Interne",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Sprache",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
+    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spion",
+    "AGENTAVATAR": "Agenten-Avatar",
+    "SPYINTERACTION": "Mitlesen",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Frage schließen",
+    "CLOSINGQUESTION": "Abschlussfrage",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
-    "OFFLINEMESSAGEBODY": "Nachrichtentext",
-    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
-    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
-    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
+    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
+    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
+    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
+    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
+    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Ton",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
+    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer in Warteschlange",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Bot-Name",
+    "BOTNAME": "Botname",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teams Verband",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ENABLESENDBUTTON": "Sendetaste aktivieren",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
+    "ENABLESENDBUTTON": "Senden-Button aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Key",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Gegenstand",
+    "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "NOTE": "Hinweis",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "NOTE": "Notiz",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index da8b00a..3c27f23 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "Sprachwarteschlange ID",
-    "CAMPAIGNID": "Kampagne ID",
-    "STATE": "Zustand",
+    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "CAMPAIGNID": "Kampagnen-ID",
+    "STATE": "Status",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper Geschichte",
+    "FINAL": "Hopper final",
+    "HISTORY": "Hopper historisch",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
+    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositionen",
-    "VOICEDISPOSITIONS": "Sprachdispositionen",
-    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alle Löschen",
+    "DELETE_ALL": "Alles Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Fertig",
-    "SUCCESS": "Erfolgreich",
+    "FINISH": "Beenden",
+    "SUCCESS": "Erfolg",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
-    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
-    "VAT": "Mwst.",
-    "COMPANYID": "Ihre Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
+    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
+    "VAT": "Ust-ID.",
+    "COMPANYID": "Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "NONE": "Keine",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "Duplikate prüfen",
+    "CHECK_DUPLICATES": "auf Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV",
+    "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Wählen Sie eine Liste aus",
-    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
-    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
+    "SELECT_LIST": "Liste auswählen",
+    "SELECT_COMPANY": "Unternehmen auswählen",
+    "SELECT_TAGS": "Tags auswählen",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler exportieren",
+    "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei aussuchen",
+    "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenreise",
-    "SELECT_TAG": "Wählen Sie Tags aus",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "SELECT_TAG": "Tag auswählen",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftage",
+    "EXPIREDAY": "Ablauftag",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Codice Fiscale / VAT",
-    "RECALLME": "Ruf mich zurück",
+    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
+    "RECALLME": "Rückruf anfordern",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Zur Aktion klicken"
+    "CLICKTOACTION": "Klicken für Aktion"
   }
 }
index df9fabe..dbfb7c7 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Home",
+    "HOME": "Startseite",
     "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "MAIL": "E-Mail",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Name des Betriebssystems",
-    "OS_VERSION": "Version des Betriebssystems",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Ruf mich zurück",
-    "DROP_RATE": "Abgebrochene Anrufrate",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufnahmen",
-    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
+    "RECORDINGS": "Aufzeichnungen",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Entsorgen",
+    "DISPOSE": "Qualifizieren",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer Anruf",
+    "DIALER_CALL": "Dialer-Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Keine",
+    "NONE": "Nichts",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Spezielle",
+    "SPECIAL": "Speziell",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Verschieben",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobile",
+    "MOBILE": "Mobilnummer",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprache",
+    "VOICE": "Sprachanrufe",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
-    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
-    "WAITING": "Anrufe in der Warteschlange",
+    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
+    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen",
-    "OUTBOUND_ANSWERED": "Angenommen",
-    "ABANDONED": "Verlassen",
-    "TOTAL_OFFERED": "Insgesamt",
+    "INBOUND_ANSWERED": "Angenommen eingehend",
+    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
+    "ABANDONED": "Abgebrochen",
+    "TOTAL_OFFERED": "Gesamt angeboten",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "ABANDON_RATE": "Verlassene Anrufrate",
-    "UNMANAGED": "Nicht verwaltete",
-    "TOTAL": "Insgesamt",
+    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
+    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
+    "ABANDON_RATE": "Abbruchrate",
+    "UNMANAGED": "Nicht bearbeitet",
+    "TOTAL": "Gesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
-      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
-      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
-      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
-      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
-      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
-      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
-      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
-      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
-      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
-      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
-      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
-      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
-      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
-      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
+      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
+      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
+      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
+      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
+      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
+      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
+      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
+      "OPENED": "Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
+      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
+      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
+      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
+      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
+      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "WELCOME_TO_MOTION": "Willkommen bei Motion",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Contact Manager",
+    "CONTACTMANAGER": "Kontaktmanager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu laden",
+    "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
-    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
-    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
-    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
-    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
-    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
-    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
+    "TALKING_TEXT": "Aktive Anrufe",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
+    "ABANDONED_TEXT": "Abgebrochene Anrufe",
+    "DROP_RATE_TEXT": "Abbruchrate",
+    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
+    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
+    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
+    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
+    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
+    "OF": "von",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
-    "DISPOSITIONS": "Dispositionen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
-    "ACCEPT": "Akzeptieren",
+    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
+    "DISPOSITIONS": "Qualifizierungen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
+    "ACCEPT": "Annehmen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Info",
+    "INFO": "Information",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
+    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Wählen Sie die Webseite",
-    "ALL": "Alle",
+    "SELECT_WEBSITE": "Webseite auswählen",
+    "ALL": "Alles",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Zeigen",
+    "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Wählen Sie einen Benutzer",
+    "SELECT_USER": "Benutzer auswählen",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Ende am",
+    "END_AT": "Beendet am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
+    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
-    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "LOADING_INTERACTION": "Interaktion wird geladen",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anruf",
+    "CALL_NUMBER": "Anrufen",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf richtig gespeichert",
-    "CALL_DISPOSED": "Anruf richtig entsorgt",
-    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
+    "CALL_SAVED": "Anruf erfolgreich gespeichert",
+    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Wählen Sie den Agenten aus",
+    "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
+    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Verlassen",
-    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
+    "ABANDONAT": "Abgebrochen",
+    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
+    "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
-    "CUSTOMER_JOURNEY": "Kundenreise",
+    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
-    "ABANDONED_RATE": "Verlassene Rate",
-    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
-    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
-    "MANAGED": "Verwaltet",
-    "MANAGED_RATE": "Verwaltete Rate",
-    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
-    "MANAGED_TEXT": "Verwaltete Interaktionen",
-    "OPENED_TEXT": "Geöffnete Interaktionen",
+    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
+    "ABANDONED_RATE": "Abbruchrate",
+    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
+    "MANAGED": "Bearbeitet",
+    "MANAGED_RATE": "Bearbeitungsrate",
+    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
+    "MANAGED_TEXT": "Interaktionen bearbeitet",
+    "OPENED_TEXT": "Interaktionen geöffnet",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Nicht verwaltete Rate",
-    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
-    "VOICE_ABANDONED": "Verlassen",
-    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
-    "VOICE_ABANDON_RATE": "Verlassene Rate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
+    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
+    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
+    "VOICE_ABANDONED": "Abgebrochen",
+    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "VOICE_ABANDON_RATE": "Abbruchrate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Angenommene Rate",
+    "VOICE_ANSWER_RATE": "Antwortrate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Insgesamt",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht verwaltet",
-    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht bearbeitet",
+    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Privat",
+    "PRIVATE": "Persönlich",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
+    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
-    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
-    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
-    "SELECT_ALL": "Alle auswählen",
+    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
+    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
+    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
+    "SELECT_ALL": "Alles auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "Id",
+    "ID": "ID",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Stornieren",
-    "DRAFT": "Entwurf",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
+    "CANCEL": "Abbrechen",
+    "DRAFT": "Entwurf speichern",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Buchhaltung",
+    "ACCOUNTINGDOC": "Abrechnungsdokumente",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle",
-    "ALL_STATUS": "Alle",
-    "ALL_STEP": "Alle",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "BALANCE",
+    "BALANCE": "SALDO",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "Von",
+    "FROM": "von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Insgesamt",
+    "INVOICETOTAL": "Gesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Insgesamt",
+    "QUOTATIONTOTAL": "Gesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Insgesamt",
+    "QUOTATIONTOTALS": "Gesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
+    "WORKFLOW": "Arbeitsablauf wählen",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "Und",
+    "AND": "und",
     "APPLY": "Anwenden",
-    "CONTAINS": "Enthält",
+    "CONTAINS": "enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "Endet mit",
-    "EQUALS": "Gleich",
-    "IS_AMONG": "Ist unter",
-    "IS_BETWEEN": "Ist zwischen",
-    "IS_GREATER_THAN": "Ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
-    "IS_LESS_THAN": "Ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
-    "IS_NOT_AMONG": "Ist nicht unter",
-    "IS_NOT_EQUAL": "Ist nicht gleich",
+    "ENDS_WITH": "endet mit",
+    "EQUALS": "gleich",
+    "IS_AMONG": "ist unter",
+    "IS_BETWEEN": "ist zwischen",
+    "IS_GREATER_THAN": "ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
+    "IS_LESS_THAN": "ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
+    "IS_NOT_AMONG": "ist nicht innerhalb",
+    "IS_NOT_EQUAL": "ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "Beginnt mit",
+    "STARTS_WITH": "beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Wählen",
+    "CHOOSE": "Auswählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+    "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Wählen",
+    "SELECT": "Auswählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
+    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
-    "AGENT_PRESENCE": "Agentenpräsenz",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 4b2f44e..fd1c6a8 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Der Port ist erforderlich",
+      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
+      "HOST_REQUIRED": "Host wird benötigt",
+      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "AGENT_REQUIRED": "Der Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
-      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Die Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
-      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
-      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
+      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
+      "AGENT_REQUIRED": "Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
+      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
+      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
+      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
+      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
-    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
-    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
-    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
-    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
-    "MAILDISPOSITIONS": "E-Mail Verfügungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
+    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
+    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
+    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
+    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
-      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
-      "FONT_FAMILY": "Standardschriftfamilie",
+      "USERNAME": "Benutzername für die Authentifizierung",
+      "PASSWORD": "Passwort für die Authentifizierung",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
+      "FONT_FAMILY": "Standard-Schriften",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
+      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "DISPOSITION": "Qualifizierung",
+    "GOTOIF": "GoToIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "WAITING": "Wartezustand",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Mithören",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
-    "PENDING": "Ausstehend",
-    "SEND_AS_PENDING": "Senden als Ausstehend",
-    "SEND_AND_CLOSE": "Senden und Schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
-    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "PENDING": "Warten auf Rückmeldung",
+    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
+    "SEND_AND_CLOSE": "Senden und schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
+    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "MARK_AS_UNREAD": "Als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
+    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail SubStatus",
+    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
+    "SEND_AS": "Senden als",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTTRANSFER": "Agentenübertragung",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
-    "TRANSFER": "Transfer",
-    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
+    "TAG": "Tag",
+    "AGENTTRANSFER": "Weiterleitung Agent",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ADVANCED": "Fortgeschritten",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
+    "ADVANCED": "Erweitert",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
+    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 235afae..97c6fe2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 3bd5ad2..495ea1e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index f150ff2..054564e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index a85d3cb..56d6276 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index bf299e5..0202268 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index be3860b..b934012 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index edbcd90..bbf8e7b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index c3cb181..d5a9a13 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 1170227..043d58e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index c4fbe7e..86fb87a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 68e0c53..212fdff 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 3fd4f57..190c600 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index 29c0869..a3774d1 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 154c0b7..aad4d13 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 361f77e..0ab1946 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index d49bd20..0fbd637 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index d694357..2bda13c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index ac5383c..e93ddba 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 39efe9f..534d51d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 171327a..4085544 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 4646459..0c17adc 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index 18246b8..ac2f84c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 2956f0d..98dc201 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index 0ef1225..d002733 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
-      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
-      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
-      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
+      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
+      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
+      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
+      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
-      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Format ungültig",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
+      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenteb bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
-    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
-    "PENALTY": "Strafe",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
-    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
-    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
-    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
-    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
-    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
+    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
+    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
+    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
-      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
+      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
+      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "SELECT_ACCOUNT": "Konto auswählen",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "INFO": "Info",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "INFO": "Information",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "VOICE": "Voice",
+    "WAITING": "Wartezustand",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Mithören",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
-    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
+    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
+    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
-    "MAPKEY": "Karten Schlüssel",
+    "TAG": "Tag",
+    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "MAPKEY": "MAP-KEY",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Weiterleitung Agent",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
-    "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "DIALOGFLOW": "Dialogablauf",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
+    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
+    "DIALOGFLOW": "DialogFlow",
+    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot-Name",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "BOTNAME": "Botname",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index b5e8a7a..ee88755 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse.",
+    "NO_RESULTS": "Keine Ergebnisse",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich).",
+    "NAME_REQUIRED": "Name (erforderlich)",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
-      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
-      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
-      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
-      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
-      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
-      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
-      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
+      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "HOST_REQUIRED": "Host ist erforderlich",
+      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
+      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
+      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
+      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
+      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
+      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
+      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
+      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
+    "INTERNAL": "Intern",
+    "TRANSPORT": "Transport",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 120",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 160",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
-      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
-      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
-      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
-      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
-      "CALLGROUP": "Legt der Agent callgroup",
-      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
+      "CHATCAPACITY": "0 für unbegrenzt",
+      "MAILCAPACITY": "0 für unbegrenzt",
+      "FAXCAPACITY": "0 für unbegrenzt",
+      "SMSCAPACITY": "0 für unbegrenzt",
+      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
+      "CALLGROUP": "Anrufgruppe",
+      "PICKUPGROUP": "Übernahmegruppe",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren / entsperren",
-      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren/entsperren",
+      "DISABLED": "Auswählen zum Aktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "CHANGEPASSWORD_AGENT": "Agent",
+    "CHANGEPASSWORD_USER": "Nutzer",
+    "CHANGEPASSWORD_TELEPHONE": "Telefon",
+    "LOGININPAUSE": "Pause nach Anmelden",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
+    "CHANSPY": "Listen-In",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Chat Kapazität",
-    "MAILCAPACITY": "E-Kapazität",
-    "FAXCAPACITY": "Fax Kapazität",
-    "SMSCAPACITY": "Sms-Kapazität",
-    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
+    "CHATCAPACITY": "Kapazität Chats",
+    "MAILCAPACITY": "Kapazität E-Mail",
+    "FAXCAPACITY": "Kapazität Fax",
+    "SMSCAPACITY": "Kapazität SMSW",
+    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
+    "AUTOANSWER": "Auto-Antwort",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Unbedingte",
-    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
-    "NOREPLY": "Keine Antwort",
-    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
-    "BUSY": "Besetzt",
-    "BUSYNUMBER": "Nummer besetzt",
-    "REMOTE_CONTROL": "Fernbedienung",
-    "REMOTECONTROL": "Fernbedienung",
-    "REMOTECONTROLPORT": "Fernbedienung",
+    "UNCONDITIONAL": "Generell",
+    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
+    "NOREPLY": "Bei keiner Antwort",
+    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
+    "BUSY": "Bei Besetzt",
+    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
+    "REMOTE_CONTROL": "Remote-Nebenstelle",
+    "REMOTECONTROL": "Remote-Nebenstelle",
+    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Ablaufdatum",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
+    "PENALTY": "Verzögerung",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Telefonnummern",
+    "CALLERID": "Anrufer-ID",
+    "ENABLERECORDING": "Aufzeichnung aktiv",
     "STAFF": "Personal",
-    "ID": "Id",
+    "ID": "ID",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "Melden Sie Warteschlange",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
+    "CALLGROUP": "Gruppenanruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
-    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
-    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
-    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
-    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
+    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
+    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
+    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
+    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
-    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
+    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "WebControl anzeigen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Nicht stören",
+    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
+    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
-    "READANDEDIT": "Lesen, Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
-    "GENERAL_PERMISSIONS": "Allgemeines",
-    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
-    "OUTBOUNDPROXY": "Oubound-Proxy",
+    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Berechtigungen verwalten",
+    "READANDEDIT": "Lesen und Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
+    "GENERAL_PERMISSIONS": "Allgemein",
+    "ENABLEMESSENGER": "Internen Messenger aktivieren",
+    "OUTBOUNDPROXY": "Outbound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Unterstützt Video",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen"
+    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
+    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
   }
 }
index 6207bf0..d62768d 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "HOST_REQUIRED": "Der Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
-      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "HOST_REQUIRED": "Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
-      "URL_REQUIRED": "Die URL ist erforderlich",
-      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Der Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
-      "TYPE_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "ACCOUNT_REQUIRED": "Pflichtfeld",
-      "FIELD_REQUIRED": "Pflichtfeld",
-      "INTEGRATION_REQUIRED": "Pflichtfeld",
-      "LIST_REQUIRED": "Pflichtfeld",
-      "TEMPLATE_REQUIRED": "Pflichtfeld",
-      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
-      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
-      "QUEUE_REQUIRED": "Pflichtfeld",
-      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
-      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
-      "MONTH_TO_REQUIRED": "Pflichtfeld",
+      "HOUR_REQUIRED": "Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
+      "URL_REQUIRED": "URL ist erforderlich",
+      "URL_MUST_VALID_URL": "URL ungültiges Format",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
+      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
+      "TYPE_REQUIRED": "Typ ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
+      "FIELD_REQUIRED": "Feld ist erforderlich",
+      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
+      "LIST_REQUIRED": "Liste ist erforderlich",
+      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
+      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
+      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
+      "QUEUE_REQUIRED": "Warteschlange erforderlich",
+      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
+      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
+      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
+      "MONTH_TO_REQUIRED": "Monat erforderlich",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Pflichtfeld",
-      "CONFIGURATION_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "LOCATION_REQUIRED": "Pflichtfeld",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "FONTSIZE_REQUIRED": "Pflichtfeld",
-      "PATH_REQUIRED": "Pflichtfeld",
-      "FORMAT_REQUIRED": "Pflichtfeld",
-      "REPORT_REQUIRED": "Pflichtfeld",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "REFRESH_REQUIRED": "Pflichtfeld",
-      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
-      "OUTPUT_REQUIRED": "Pflichtfeld",
-      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
-      "REPORTTYPE_REQUIRED": "Pflichtfeld",
-      "AGENT_REQUIRED": "Pflichtfeld",
-      "INFO_REQUIRED": "Pflichtfeld",
-      "SCRIPT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
-      "TIMEOUT_REQUIRED": "Pflichtfeld",
-      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
+      "ACTION_REQUIRED": "Aktion erforderlich",
+      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "LOCATION_REQUIRED": "Standort erforderlich",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
+      "PATH_REQUIRED": "Pfad erforderlich",
+      "FORMAT_REQUIRED": "Format erforderlich",
+      "REPORT_REQUIRED": "Report erforderlich",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
+      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
+      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
+      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
+      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
+      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
+      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
+      "AGENT_REQUIRED": "Agent erforderlich",
+      "INFO_REQUIRED": "Information erforderlich",
+      "SCRIPT_REQUIRED": "Skript erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_REQUIRED": "Timeout erforderlich",
+      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
-      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
+      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
-      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
-      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
+      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
+      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
+      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
-      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
-      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
-      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
-      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
-      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
-      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
+      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
+      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
+      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
+      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
+      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
+      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
+      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "Aus der Domäne",
-    "FROMUSER": "Vom Benutzer",
-    "OUTBOUNDPROXY": "Ausgehender Proxy",
-    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
-    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From Nutzer",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CANNEDANSWER": "Testvorlage löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Abschließen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Weitere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "Neuer Zeitplan",
-    "ADD_SCHEDULE": "Zeitplan hinzufügen",
-    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
-    "DELETE_SCHEDULE": "Zeitplan löschen",
+    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
+    "SCHEDULER": "Berichtsplanung",
+    "NEW_SCHEDULE": "Neue Planung",
+    "ADD_SCHEDULE": "Planung hinzufügen",
+    "EDIT_SCHEDULE": "Planung bearbeiten",
+    "DELETE_SCHEDULE": "Planung löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Weiterleitung",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL-Weiterleitung",
+    "WEB_POPUP": "Web-Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Licht",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
+    "SELECT": "Auswählen",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
+    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
+    "CRON": "CrOn",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "Um",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "Von",
+    "OF": "von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "Bcc",
-    "EMAILCCADDRESS": "Cc",
-    "RUN_SCHEDULE": "Zeitplan ausführen",
-    "ADD_DISPOSITION": "Disposition hinzufügen",
-    "DELETE_DISPOSITION": "Disposition löschen",
-    "DISPOSITIONS": "Dispositionen",
-    "EDIT_DISPOSITION": "Disposition bearbeiten",
-    "NEW_DISPOSITION": "Neue Disposition",
-    "CLONE_TRUNK": "Klon-Trunk",
-    "BODY": "Karosserie",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "EMAILBCCADDRESS": "BCC",
+    "EMAILCCADDRESS": "CC",
+    "RUN_SCHEDULE": "Zeitplanung ausführen",
+    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
+    "DELETE_DISPOSITION": "Qualifizierung löschen",
+    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
+    "NEW_DISPOSITION": "Neue Qualifizierung",
+    "CLONE_TRUNK": "Trunk klonen",
+    "BODY": "Textinhalt",
+    "CANNEDANSWERS": "Textvorlagen",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorherigen Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Dispositionen",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "LEVEL": "Niveau",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "SELECT_LEVEL": "Wählen Sie eine Ebene",
-    "TITLEFONTSIZE": "Schrifttitelgröße"
+    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
+    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
+    "LEVEL": "Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "SELECT_LEVEL": "Ebene auswählen",
+    "TITLEFONTSIZE": "Schriftgröße Titel"
   }
 }
index c698d09..b21bd68 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "DELETE_VOICEDISPOSITION": "Disposition löschen",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
-    "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Die MOH-Sounds",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
+    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
+    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
+    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
+    "MOHSOUNDS": "MOH-Töne",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
-      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
-      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
-      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
-      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
-      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
+      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
+      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
+      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
+      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
+      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Bitte erneut versuchen",
+    "WRAPUPTIME": "Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
-      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
-      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
-      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
-      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
-      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
-      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
-      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
-      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
-      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
-      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
-      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
-      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
-      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
-      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
-      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
-      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
-      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
-      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
-      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
-      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
-      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
-      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
-      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
-      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
-      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
-      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden",
+      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
+      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
+      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
+      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
+      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
+      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
+      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
+      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
+      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
+      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
+      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
+      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
+      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
+      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
+      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
+      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
+      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
+      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
+      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Überspringen",
+      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Überspringen",
+      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Überspringen",
+      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Überspringen",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Überspringen",
+      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
+      "MINUTEANNOUNCE": "Ansage \"Minute\"",
+      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Überspringen",
+      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Überspringen",
+      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
+      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
+      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
+      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
+      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf übergeben werden können. ",
+      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf übergeben werden können. ",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
-      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
-      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Änderungen nicht verlieren möchten."
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
+      "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
     },
-    "MUSICONHOLD": "Musik auf Halten",
-    "ANNOUNCETOAGENT": "Geben Sie Agent",
-    "ANNOUNCEMENTS": "Ankündigungen",
-    "ADVANCED": "Erweiterte",
-    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
-    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
-    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
-    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
-    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
-    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
-    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
-    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
-    "PERIODICANNOUNCE": "Periodische verkünden",
-    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
-    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
-    "THEREAREANNOUNCE": "'Es gibt' verkünden",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
-    "MINUTESANNOUNCE": "Minuten ankündigen",
-    "MINUTEANNOUNCE": "Minute verkünden",
-    "SECONDSANNOUNCE": "Sekunden,",
+    "MUSICONHOLD": "Wartemusik",
+    "ANNOUNCETOAGENT": "Ansage an Agenten",
+    "ANNOUNCEMENTS": "Ansagen",
+    "ADVANCED": "Erweitert",
+    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
+    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
+    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
+    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
+    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
+    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
+    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
+    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
+    "PERIODICANNOUNCE": "Wiederholende Ansagen",
+    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
+    "YOUARENEXTANNOUNCE": "Erste Position",
+    "THEREAREANNOUNCE": "Es befinden sich",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
+    "MINUTESANNOUNCE": "Minuten",
+    "MINUTEANNOUNCE": "Minute",
+    "SECONDSANNOUNCE": "Sekunden",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Verzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "SETINTERFACEVARIABLES": "Interface-Variablen",
+    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
+    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
+    "ATTACH": "Anhängen",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
+    "MAXSECONDS": "Max. Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
-    "MUSICONHOLDS": "Musik auf Halten",
-    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
-    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Interner Anruf",
+    "EXTERNALDIAL": "Externer Anruf",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
+    "CUSTOM": "Benutzerdefiniert",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_APP": "App bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "Anwendung löschen",
+    "DELETE_APP": "App löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Ablehnungsgrund",
+    "OUTBOUNDDIAL": "Extern wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
-    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
-    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
+    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
+    "DELETE_MOHSOUND": "Musik bei Halten löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
-    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Routen",
-    "NEW_CONTEXT": "Neue Kontext",
+    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
-    "NEW_CHANSPY": "Neue ChanSpy",
-    "PENALTY": "Strafe",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
-    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
+    "NEW_MUSICONHOLD": "Neue Haltemusik",
+    "NEW_CHANSPY": "Neuer Listen-In",
+    "PENALTY": "Verzögerung",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "EDIT_DIAL": "Wählen anpassen",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
-    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
-    "EDIT_RINGGROUP": "Gruppe bearbeiten",
-    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
-    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
-    "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten.",
-    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
-    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
+    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
+    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
+    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
+    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
+    "EDIT_QUEUE": "Warteschlange bearbeiten",
+    "EDIT_SET": "Set bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_HANGUP": "Auflegen bearbeiten",
+    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "NO": "Keine",
-    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
-    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
-    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
+    "NO": "Nein",
+    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
+    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
+    "HANGUPCAUSE_17": "17 = Besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Nach Oben",
+    "INFO": "Information",
+    "TRUNKS": "Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "UNPAUSE": "Pause",
-    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
-    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
-    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
-    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "WRONG_EXTENSION": "Ungültige Dateiendung",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
-    "SENTIMENT": "Gefühl",
-    "SENTIMENTANALYSIS": "Stimmungsanalyse",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
-    "ALIAS": "Alias"
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene"
   }
 }
index 80b51fd..c10b0a5 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "AGENT_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Pflichtfeld",
       "DESCRIPTION_REQUIRED": "Pflichtfeld",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
       "LANGUAGE_REQUIRED": "Pflichtfeld",
       "LEXREGION_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "NAME_REQUIRED": "Pflichtfeld",
       "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
       "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
+    "ACCOUNTSID": "Konto-ID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer Agent",
+    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
+    "AGENT_TIMEOUT": "Timeout Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "Botname",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "DEFAULT_PAUSE": "Standard Pause",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Anordnung",
-    "DISPOSITIONS": "Dispositionen",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
-    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_GOTOP": "GoTop bearbeiten",
     "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GENERAL": "Allgemeines",
+    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
+    "FALSEPRIORITY": "Priorität falsch",
+    "GENERAL": "Allgemein",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
-    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
-    "ID": "Ich würde",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
+    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
+    "ID": "ID",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "Region",
-    "LIST": "Aufführen",
-    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Eingeloggt (Verbunden mit SIP)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
+    "SAVE": "Speichern",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Mitlesen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "TIMES": "Mal",
-    "TO": "Zu",
-    "TOKEN": "Zeichen",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "TRANSFER": "Transfer",
+    "TIMES": "Zeiten",
+    "TO": "an",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TRANSFER": "Weiterleiten",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Art",
+    "TYPE": "Typ",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 3162f7a..fd8ccd9 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Anwendungsserver",
-    "USER_STATS": "Benutzer Stats",
-    "EVENTS": "Veranstaltungen",
-    "NOTES": "Hinweise",
-    "QUICK_SETTINGS": "Schnelle Einstellungen",
+    "APP_SERVERS": "Server Anwendung",
+    "USER_STATS": "Benutzer Statistiken",
+    "EVENTS": "Ereignisse",
+    "NOTES": "Notizen",
+    "QUICK_SETTINGS": "Schnelleinstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Triebwerke",
-    "RECENT": "Die jüngsten",
+    "RETRO_THRUSTERS": "Retro Thrusters",
+    "RECENT": "Neuste",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
+    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neue Token",
-    "OLD_TOKEN": "Alte Token",
+    "NEW_TOKEN": "Neuer Token",
+    "OLD_TOKEN": "Alter Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.",
-    "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf",
+    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
+    "GRAY_PERIOD_EXPIRATION": "Ablauf Testphase",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
-    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
-    "SAVE": "sparen",
-    "INFO": "Info",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
+    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
+    "SAVE": "Speichern",
+    "INFO": "Information",
     "NEW_CHATGROUP": "Neue Gruppe",
     "NAME": "Name",
     "MEMBERS": "Mitglieder",
@@ -65,9 +65,9 @@
     "DELETE": "Löschen",
     "SEARCH": "Suche",
     "USERS": "Benutzer",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Kontaktieren Sie xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID Ihres Rechners wurde aufgrund einer Änderung Ihres Systems aktualisiert. Kontaktieren Sie xCALLY Motion Support Team, das sowohl Ihren alten als auch Ihren neuen UUID sendet.",
-    "MESSENGER_DISABLED": "Das interne Messaging ist für diesen Agenten deaktiviert!",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Bitte den Support kontaktieren.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
+    "MESSENGER_DISABLED": "Internes Messaging für diesen Benutzer nicht aktiviert",
     "WARNING": "Warnung"
   }
 }
index 1d7248b..6eb58fc 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Ihr Kennwort zurücksetzen",
-    "EMAIL_ADRESS": "E-mail Adresse",
-    "PASSWORD": "Kennwort",
-    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
-    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
+    "TITLE": "Passwort zurücksetzen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
+    "PASSWORD": "Passwort",
+    "PASSWORD_CONFIRM": "Passwort bestätigen",
+    "UPDATE_PASSWORD": "Passwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "PASSWORD_RESET": "Kennwort zurücksetzen",
-    "PASSWORD_RESET_MESSAGE": "Ihr Passwort wurde korrekt zurückgesetzt wurde, können Sie sich jetzt!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "PASSWORD_RESET": "Passwort zurücksetzen",
+    "PASSWORD_RESET_MESSAGE": "Das Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun erneut anmelden",
+    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld \"E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse",
-      "PASSWORD_REQUIRED": "Kennwort Feld ist erforderlich.",
+      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
+      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index a399ee6..b6abdf2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation wechseln",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
+    "TOGGLE_NAVIGATION": "Navigation umschalten",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Benutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
+    "USER_SETTINGS": "Nutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnische",
+    "FINNISH": "Finnisch",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Login Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
+    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Lebenslauf",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
-    "LATVIAN": "Lettische",
+    "RESUME": "Fortsetzen",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
+    "LATVIAN": "Lettisch",
     "POLISH": "Polnisch",
     "ERRORS": {
       "FIELD_REQUIRED": "Pflichtfeld",
       "PASSWORD_REQUIRED": "Pflichtfeld",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
+      "PASSWORD_OLDPASSWORD_MATCH": "Die Passwörter stimmen nicht überein"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Ungültige Lizenz",
+    "INVALID_LICENSE": "Lizenz ungültig",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Bedarf",
+    "REQUIREMENTS": "Anforderungen",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Eingetragen",
+    "REGISTERED": "Registriert",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Warmer Transfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Redner",
-    "RINGING": "Klingelton",
+    "SPEAKER": "Lautsprecher",
+    "RINGING": "Klingeln",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienstleistungen",
+    "SERVICES": "Dienste",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingelgerät",
-    "SPEAKERDEVICE": "Lautsprechergerät",
-    "MICROPHONEDEVICE": "Mikrofon Gerät",
+    "RINGINGDEVICE": "Klingeln auf Gerät",
+    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
+    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "die Einstellungen",
+    "SETTINGS": "Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "estnisch",
+    "ESTONIAN": "Estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianer",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sessions",
-    "CHANGE_LANGUAGE_MESSAGE": "Denken Sie daran, die Seite zu aktualisieren, um die RTL-Unterstützung anzuwenden (falls aktiviert).",
+    "BRAZILIAN": "Brasilianisch",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
+    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
     "CHANGE_LANGUAGE_TITLE": "Sprache ändern",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
     "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "LITHUANIAN": "litauisch",
+    "LITHUANIAN": "Litauisch",
     "NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
index 4f9ba95..f796324 100644 (file)
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.b7a358c4.js"></script>
+  <script src="scripts/app.5d0b6216.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 99%
rename from public/scripts/app.b7a358c4.js
rename to public/scripts/app.5d0b6216.js
index 3d6c0d3..f9858f6 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get().$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=2,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(n.disconnect(),n.connect(),a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row">\n          <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n            <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n            <md-card-header layout="row" layout-align="space-between">\n              <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                <timer start-time="call.answertime"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                </md-tooltip>\n              </span>\n              <span ng-if="call.disposedAt" class="text-boxed amber-200-bg mr-0">\n                <timer start-time="call.disposedAt"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                </md-tooltip>\n              </span>\n            </md-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="mr-16">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="mr-8">\n                  </md-icon>\n                  <span class="h1" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                </div>\n\n                <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                  <md-icon md-font-icon="icon-account"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></md-icon>\n                  Queue: {{call.queue}}\n                </div>\n                <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                  <md-icon md-font-icon="icon-minus"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get().$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(n.disconnect(),n.connect(),a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row">\n          <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n            <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n            <md-card-header layout="row" layout-align="space-between">\n              <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                <timer start-time="call.answertime"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                </md-tooltip>\n              </span>\n              <span ng-if="call.disposedAt" class="text-boxed amber-200-bg mr-0">\n                <timer start-time="call.disposedAt"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                </md-tooltip>\n              </span>\n            </md-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="mr-16">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="mr-8">\n                  </md-icon>\n                  <span class="h1" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                </div>\n\n                <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                  <md-icon md-font-icon="icon-account"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></md-icon>\n                  Queue: {{call.queue}}\n                </div>\n                <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                  <md-icon md-font-icon="icon-minus"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index a350009..82b719d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','TEXT','sequelize','VIRTUAL','action','STRING','contactManager','motionbar','browser','bot','script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'];(function(_0x2fd08f,_0x2b2bb9){var _0x56a019=function(_0x8d0247){while(--_0x8d0247){_0x2fd08f['push'](_0x2fd08f['shift']());}};_0x56a019(++_0x2b2bb9);}(_0x11e5,0x8b));var _0x511e=function(_0x5a474d,_0x3c85e2){_0x5a474d=_0x5a474d-0x0;var _0x512f2a=_0x11e5[_0x5a474d];return _0x512f2a;};'use strict';var Sequelize=require(_0x511e('0x0'));module['exports']={'name':{'type':Sequelize[_0x511e('0x1')],'get':function(_0x269c68){return this['getDataValue'](_0x511e('0x2'));}},'action':{'type':Sequelize[_0x511e('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x511e('0x4'),'integration',_0x511e('0x5'),'jscripty','urlForward',_0x511e('0x6'),_0x511e('0x7'),_0x511e('0x8')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0x511e('0x3')](0x1000),'comment':_0x511e('0x9')},'data2':{'type':Sequelize[_0x511e('0x3')](0x1000),'comment':_0x511e('0xa')},'data3':{'type':Sequelize[_0x511e('0x3')](0x1000),'comment':_0x511e('0xb')},'data4':{'type':Sequelize[_0x511e('0x3')](0x1000),'comments':_0x511e('0xc')},'data5':{'type':Sequelize[_0x511e('0x3')](0x1000),'comments':_0x511e('0xd')},'data6':{'type':Sequelize[_0x511e('0x3')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x511e('0xe')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0xa751=['exports','VIRTUAL','action','contactManager','integration','motionbar','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','sequelize'];(function(_0x12f13d,_0x34a04c){var _0x6c4736=function(_0x36bc85){while(--_0x36bc85){_0x12f13d['push'](_0x12f13d['shift']());}};_0x6c4736(++_0x34a04c);}(_0xa751,0x175));var _0x1a75=function(_0x541277,_0xe60f66){_0x541277=_0x541277-0x0;var _0x10ded9=_0xa751[_0x541277];return _0x10ded9;};'use strict';var Sequelize=require(_0x1a75('0x0'));module[_0x1a75('0x1')]={'name':{'type':Sequelize[_0x1a75('0x2')],'get':function(_0x636b0){return this['getDataValue'](_0x1a75('0x3'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x1a75('0x4'),_0x1a75('0x5'),_0x1a75('0x6'),'jscripty',_0x1a75('0x7'),_0x1a75('0x8'),_0x1a75('0x9'),_0x1a75('0xa')]],'msg':_0x1a75('0xb')}},'comment':_0x1a75('0xb')},'data1':{'type':Sequelize[_0x1a75('0xc')](0x1000),'comment':'jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'},'data2':{'type':Sequelize['STRING'](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0x1a75('0xc')](0x1000),'comment':_0x1a75('0xd')},'data4':{'type':Sequelize[_0x1a75('0xc')](0x1000),'comments':_0x1a75('0xe')},'data5':{'type':Sequelize[_0x1a75('0xc')](0x1000),'comments':_0x1a75('0xf')},'data6':{'type':Sequelize[_0x1a75('0xc')],'comments':_0x1a75('0x10')},'data7':{'type':Sequelize['TEXT'],'comments':'urlForward[body]'}};
\ No newline at end of file
index b4e7206..21adb69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc962=['undefined','limit','count','Content-Range','apply','save','update','then','error','stack','name','send','body','Action','params','catch','destroy','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x4d2993,_0x1d827d){var _0x5d7d4b=function(_0x9ca18f){while(--_0x9ca18f){_0x4d2993['push'](_0x4d2993['shift']());}};_0x5d7d4b(++_0x1d827d);}(_0xc962,0x6d));var _0x2c96=function(_0x44b565,_0x20b3b3){_0x44b565=_0x44b565-0x0;var _0x35cb2e=_0xc962[_0x44b565];return _0x35cb2e;};'use strict';var emlformat=require(_0x2c96('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x2c96('0x1'));var moment=require(_0x2c96('0x2'));var BPromise=require(_0x2c96('0x3'));var Mustache=require(_0x2c96('0x4'));var util=require(_0x2c96('0x5'));var path=require(_0x2c96('0x6'));var sox=require(_0x2c96('0x7'));var csv=require(_0x2c96('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c96('0x9'));var _=require(_0x2c96('0xa'));var squel=require(_0x2c96('0xb'));var crypto=require(_0x2c96('0xc'));var jsforce=require(_0x2c96('0xd'));var deskjs=require(_0x2c96('0xe'));var toCsv=require(_0x2c96('0x8'));var querystring=require(_0x2c96('0xf'));var Papa=require(_0x2c96('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2c96('0x11'));var as=require(_0x2c96('0x12'));var hardwareService=require(_0x2c96('0x13'));var logger=require(_0x2c96('0x14'))(_0x2c96('0x15'));var utils=require(_0x2c96('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2c96('0x17'))['db'];function respondWithStatusCode(_0x43d83f,_0x27a97c){_0x27a97c=_0x27a97c||0xcc;return function(_0x2491a4){if(_0x2491a4){return _0x43d83f[_0x2c96('0x18')](_0x27a97c);}return _0x43d83f[_0x2c96('0x19')](_0x27a97c)[_0x2c96('0x1a')]();};}function respondWithResult(_0x534203,_0x4fa416){_0x4fa416=_0x4fa416||0xc8;return function(_0x4c1d9a){if(_0x4c1d9a){return _0x534203[_0x2c96('0x19')](_0x4fa416)[_0x2c96('0x1b')](_0x4c1d9a);}};}function respondWithFilteredResult(_0x567ef0,_0x35ad10){return function(_0x3903a7){if(_0x3903a7){var _0x54649f=typeof _0x35ad10[_0x2c96('0x1c')]===_0x2c96('0x1d')&&typeof _0x35ad10[_0x2c96('0x1e')]===_0x2c96('0x1d');var _0x4757f3=_0x3903a7[_0x2c96('0x1f')];var _0x2ccbed=_0x54649f?0x0:_0x35ad10[_0x2c96('0x1c')];var _0x3fde3e=_0x54649f?_0x3903a7['count']:_0x35ad10['offset']+_0x35ad10[_0x2c96('0x1e')];var _0x3fb8a6;if(_0x3fde3e>=_0x4757f3){_0x3fde3e=_0x4757f3;_0x3fb8a6=0xc8;}else{_0x3fb8a6=0xce;}_0x567ef0[_0x2c96('0x19')](_0x3fb8a6);return _0x567ef0['set'](_0x2c96('0x20'),_0x2ccbed+'-'+_0x3fde3e+'/'+_0x4757f3)[_0x2c96('0x1b')](_0x3903a7);}return null;};}function patchUpdates(_0x17573b){return function(_0x4f8178){try{jsonpatch[_0x2c96('0x21')](_0x4f8178,_0x17573b,!![]);}catch(_0x3450ab){return BPromise['reject'](_0x3450ab);}return _0x4f8178[_0x2c96('0x22')]();};}function saveUpdates(_0x173867,_0x361e42){return function(_0x14daf1){if(_0x14daf1){return _0x14daf1[_0x2c96('0x23')](_0x173867)[_0x2c96('0x24')](function(_0x623e95){return _0x623e95;});}return null;};}function removeEntity(_0x5b2332,_0x3d8b21){return function(_0x58933c){if(_0x58933c){return _0x58933c['destroy']()[_0x2c96('0x24')](function(){_0x5b2332['status'](0xcc)[_0x2c96('0x1a')]();});}};}function handleEntityNotFound(_0x66cd41,_0x39e8bf){return function(_0xa5a767){if(!_0xa5a767){_0x66cd41['sendStatus'](0x194);}return _0xa5a767;};}function handleError(_0x345b6c,_0x1496bb){_0x1496bb=_0x1496bb||0x1f4;return function(_0x490f14){logger[_0x2c96('0x25')](_0x490f14[_0x2c96('0x26')]);if(_0x490f14[_0x2c96('0x27')]){delete _0x490f14[_0x2c96('0x27')];}_0x345b6c['status'](_0x1496bb)[_0x2c96('0x28')](_0x490f14);};}exports[_0x2c96('0x23')]=function(_0x1ddcc5,_0x319ad5){if(_0x1ddcc5['body']['id']){delete _0x1ddcc5[_0x2c96('0x29')]['id'];}return db[_0x2c96('0x2a')]['find']({'where':{'id':_0x1ddcc5[_0x2c96('0x2b')]['id']}})['then'](handleEntityNotFound(_0x319ad5,null))[_0x2c96('0x24')](saveUpdates(_0x1ddcc5[_0x2c96('0x29')],null))[_0x2c96('0x24')](respondWithResult(_0x319ad5,null))[_0x2c96('0x2c')](handleError(_0x319ad5,null));};exports[_0x2c96('0x2d')]=function(_0x30799f,_0x431038){return db[_0x2c96('0x2a')]['find']({'where':{'id':_0x30799f[_0x2c96('0x2b')]['id']}})[_0x2c96('0x24')](handleEntityNotFound(_0x431038,null))[_0x2c96('0x24')](removeEntity(_0x431038,null))['catch'](handleError(_0x431038,null));};
\ No newline at end of file
+var _0xe0e0=['apply','reject','save','then','destroy','name','update','body','Action','find','params','catch','eml-format','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range'];(function(_0x269329,_0x33e8d2){var _0x5cf5d0=function(_0x5e0b5c){while(--_0x5e0b5c){_0x269329['push'](_0x269329['shift']());}};_0x5cf5d0(++_0x33e8d2);}(_0xe0e0,0x90));var _0x0e0e=function(_0x158c24,_0x46bc03){_0x158c24=_0x158c24-0x0;var _0x19d244=_0xe0e0[_0x158c24];return _0x19d244;};'use strict';var emlformat=require(_0x0e0e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0e0e('0x1'));var rp=require('request-promise');var moment=require(_0x0e0e('0x2'));var BPromise=require(_0x0e0e('0x3'));var Mustache=require('mustache');var util=require(_0x0e0e('0x4'));var path=require(_0x0e0e('0x5'));var sox=require(_0x0e0e('0x6'));var csv=require(_0x0e0e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0e0e('0x8'));var _=require(_0x0e0e('0x9'));var squel=require(_0x0e0e('0xa'));var crypto=require(_0x0e0e('0xb'));var jsforce=require(_0x0e0e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x0e0e('0x7'));var querystring=require('querystring');var Papa=require(_0x0e0e('0xd'));var Redis=require(_0x0e0e('0xe'));var authService=require(_0x0e0e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0e0e('0x10'));var hardwareService=require(_0x0e0e('0x11'));var logger=require(_0x0e0e('0x12'))(_0x0e0e('0x13'));var utils=require(_0x0e0e('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x0e0e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42d740,_0x42f6f0){_0x42f6f0=_0x42f6f0||0xcc;return function(_0x3e6fad){if(_0x3e6fad){return _0x42d740[_0x0e0e('0x16')](_0x42f6f0);}return _0x42d740[_0x0e0e('0x17')](_0x42f6f0)[_0x0e0e('0x18')]();};}function respondWithResult(_0x4bae11,_0x2ddefb){_0x2ddefb=_0x2ddefb||0xc8;return function(_0x32da07){if(_0x32da07){return _0x4bae11[_0x0e0e('0x17')](_0x2ddefb)[_0x0e0e('0x19')](_0x32da07);}};}function respondWithFilteredResult(_0x42306d,_0x360a5e){return function(_0x31f0e3){if(_0x31f0e3){var _0x408c75=typeof _0x360a5e['offset']===_0x0e0e('0x1a')&&typeof _0x360a5e[_0x0e0e('0x1b')]===_0x0e0e('0x1a');var _0x17d4fe=_0x31f0e3['count'];var _0xa4f392=_0x408c75?0x0:_0x360a5e[_0x0e0e('0x1c')];var _0x1dedcc=_0x408c75?_0x31f0e3[_0x0e0e('0x1d')]:_0x360a5e['offset']+_0x360a5e[_0x0e0e('0x1b')];var _0x56ad2e;if(_0x1dedcc>=_0x17d4fe){_0x1dedcc=_0x17d4fe;_0x56ad2e=0xc8;}else{_0x56ad2e=0xce;}_0x42306d[_0x0e0e('0x17')](_0x56ad2e);return _0x42306d[_0x0e0e('0x1e')](_0x0e0e('0x1f'),_0xa4f392+'-'+_0x1dedcc+'/'+_0x17d4fe)[_0x0e0e('0x19')](_0x31f0e3);}return null;};}function patchUpdates(_0x2f5559){return function(_0x3e3182){try{jsonpatch[_0x0e0e('0x20')](_0x3e3182,_0x2f5559,!![]);}catch(_0x58ee12){return BPromise[_0x0e0e('0x21')](_0x58ee12);}return _0x3e3182[_0x0e0e('0x22')]();};}function saveUpdates(_0x2a282f,_0x1fd476){return function(_0x304cfd){if(_0x304cfd){return _0x304cfd['update'](_0x2a282f)[_0x0e0e('0x23')](function(_0x416917){return _0x416917;});}return null;};}function removeEntity(_0x28ac2b,_0x5cae9f){return function(_0x426141){if(_0x426141){return _0x426141[_0x0e0e('0x24')]()[_0x0e0e('0x23')](function(){_0x28ac2b[_0x0e0e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26ce67,_0x802750){return function(_0x16ae1c){if(!_0x16ae1c){_0x26ce67['sendStatus'](0x194);}return _0x16ae1c;};}function handleError(_0x122475,_0x54e81f){_0x54e81f=_0x54e81f||0x1f4;return function(_0x330781){logger['error'](_0x330781['stack']);if(_0x330781[_0x0e0e('0x25')]){delete _0x330781[_0x0e0e('0x25')];}_0x122475[_0x0e0e('0x17')](_0x54e81f)['send'](_0x330781);};}exports[_0x0e0e('0x26')]=function(_0x50e1f1,_0x3f3b7e){if(_0x50e1f1[_0x0e0e('0x27')]['id']){delete _0x50e1f1[_0x0e0e('0x27')]['id'];}return db[_0x0e0e('0x28')][_0x0e0e('0x29')]({'where':{'id':_0x50e1f1['params']['id']}})['then'](handleEntityNotFound(_0x3f3b7e,null))[_0x0e0e('0x23')](saveUpdates(_0x50e1f1[_0x0e0e('0x27')],null))['then'](respondWithResult(_0x3f3b7e,null))['catch'](handleError(_0x3f3b7e,null));};exports[_0x0e0e('0x24')]=function(_0x53888f,_0x13ef1c){return db['Action'][_0x0e0e('0x29')]({'where':{'id':_0x53888f[_0x0e0e('0x2a')]['id']}})[_0x0e0e('0x23')](handleEntityNotFound(_0x13ef1c,null))[_0x0e0e('0x23')](removeEntity(_0x13ef1c,null))[_0x0e0e('0x2b')](handleError(_0x13ef1c,null));};
\ No newline at end of file
index 512d91d..19cac3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb9c=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./action.attributes','exports','define','Action','lodash'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xcb9c,0x110));var _0xccb9=function(_0x275e98,_0x219859){_0x275e98=_0x275e98-0x0;var _0x173b69=_0xcb9c[_0x275e98];return _0x173b69;};'use strict';var _=require(_0xccb9('0x0'));var util=require(_0xccb9('0x1'));var logger=require(_0xccb9('0x2'))(_0xccb9('0x3'));var moment=require(_0xccb9('0x4'));var BPromise=require(_0xccb9('0x5'));var rp=require(_0xccb9('0x6'));var fs=require('fs');var path=require(_0xccb9('0x7'));var rimraf=require('rimraf');var config=require(_0xccb9('0x8'));var attributes=require(_0xccb9('0x9'));module[_0xccb9('0xa')]=function(_0x5bb0e5,_0x34a3da){return _0x5bb0e5[_0xccb9('0xb')](_0xccb9('0xc'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x854e=['request-promise','path','../../config/environment','./action.attributes','exports','define','Action','tools_actions','lodash','util','moment','bluebird'];(function(_0x1d2640,_0x22451d){var _0x2b6b84=function(_0x17d31b){while(--_0x17d31b){_0x1d2640['push'](_0x1d2640['shift']());}};_0x2b6b84(++_0x22451d);}(_0x854e,0xa4));var _0xe854=function(_0x3d13bb,_0x262a54){_0x3d13bb=_0x3d13bb-0x0;var _0x4b5a1b=_0x854e[_0x3d13bb];return _0x4b5a1b;};'use strict';var _=require(_0xe854('0x0'));var util=require(_0xe854('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe854('0x2'));var BPromise=require(_0xe854('0x3'));var rp=require(_0xe854('0x4'));var fs=require('fs');var path=require(_0xe854('0x5'));var rimraf=require('rimraf');var config=require(_0xe854('0x6'));var attributes=require(_0xe854('0x7'));module[_0xe854('0x8')]=function(_0x616c4f,_0x465450){return _0x616c4f[_0xe854('0x9')](_0xe854('0xa'),attributes,{'tableName':_0xe854('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ab43bc..1730fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2e20fb,_0x5b5c93){var _0x5e445a=function(_0x425bb3){while(--_0x425bb3){_0x2e20fb['push'](_0x2e20fb['shift']());}};_0x5e445a(++_0x5b5c93);}(_0x5fab,0x177));var _0xb5fa=function(_0x264b61,_0x4a5017){_0x264b61=_0x264b61-0x0;var _0x8fff4f=_0x5fab[_0x264b61];return _0x8fff4f;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
+var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x206251,_0x6c4977){var _0x442b47=function(_0x1e4beb){while(--_0x1e4beb){_0x206251['push'](_0x206251['shift']());}};_0x442b47(++_0x6c4977);}(_0x5fab,0x177));var _0xb5fa=function(_0x4c29f9,_0x5bddd4){_0x4c29f9=_0x4c29f9-0x0;var _0x4e17b8=_0x5fab[_0x4c29f9];return _0x4e17b8;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
index 18c6c79..fcb19bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4ce=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','update','destroy','exports','util','path','connect-timeout','express'];(function(_0x30acd2,_0x2f8429){var _0x217263=function(_0x1955cb){while(--_0x1955cb){_0x30acd2['push'](_0x30acd2['shift']());}};_0x217263(++_0x2f8429);}(_0xe4ce,0xec));var _0xee4c=function(_0x548ee8,_0x2b0e1e){_0x548ee8=_0x548ee8-0x0;var _0x2687e1=_0xe4ce[_0x548ee8];return _0x2687e1;};'use strict';var multer=require('multer');var util=require(_0xee4c('0x0'));var path=require(_0xee4c('0x1'));var timeout=require(_0xee4c('0x2'));var express=require(_0xee4c('0x3'));var router=express[_0xee4c('0x4')]();var fs_extra=require(_0xee4c('0x5'));var auth=require(_0xee4c('0x6'));var interaction=require(_0xee4c('0x7'));var config=require(_0xee4c('0x8'));var controller=require(_0xee4c('0x9'));router[_0xee4c('0xa')](_0xee4c('0xb'),auth[_0xee4c('0xc')](),controller[_0xee4c('0xd')]);router['delete']('/:id',auth[_0xee4c('0xc')](),controller[_0xee4c('0xe')]);module[_0xee4c('0xf')]=router;
\ No newline at end of file
+var _0xd886=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','path'];(function(_0x3e274d,_0x35f95f){var _0x352bf9=function(_0x3e0e40){while(--_0x3e0e40){_0x3e274d['push'](_0x3e274d['shift']());}};_0x352bf9(++_0x35f95f);}(_0xd886,0x1c0));var _0x6d88=function(_0xaedca4,_0x2778fa){_0xaedca4=_0xaedca4-0x0;var _0x27227a=_0xd886[_0xaedca4];return _0x27227a;};'use strict';var multer=require(_0x6d88('0x0'));var util=require('util');var path=require(_0x6d88('0x1'));var timeout=require(_0x6d88('0x2'));var express=require(_0x6d88('0x3'));var router=express[_0x6d88('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6d88('0x5'));var interaction=require(_0x6d88('0x6'));var config=require(_0x6d88('0x7'));var controller=require('./action.controller');router[_0x6d88('0x8')](_0x6d88('0x9'),auth[_0x6d88('0xa')](),controller[_0x6d88('0xb')]);router[_0x6d88('0xc')](_0x6d88('0x9'),auth[_0x6d88('0xa')](),controller[_0x6d88('0xd')]);module[_0x6d88('0xe')]=router;
\ No newline at end of file
index 8a74a00..6f431ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ca=['STRING','TEXT','sequelize','exports'];(function(_0x331615,_0x13aebd){var _0x4ba773=function(_0x577243){while(--_0x577243){_0x331615['push'](_0x331615['shift']());}};_0x4ba773(++_0x13aebd);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x424ebf,_0x4c64d3){_0x424ebf=_0x424ebf-0x0;var _0x4c6aef=_0xf2ca[_0x424ebf];return _0x4c6aef;};'use strict';var Sequelize=require(_0xaf2c('0x0'));module[_0xaf2c('0x1')]={'name':{'type':Sequelize[_0xaf2c('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0xaf2c('0x2')]},'table':{'type':Sequelize[_0xaf2c('0x2')]},'conditions':{'type':Sequelize[_0xaf2c('0x3')]},'joins':{'type':Sequelize[_0xaf2c('0x3')]}};
\ No newline at end of file
+var _0x3eea=['STRING','TEXT','sequelize'];(function(_0x4ae147,_0x48202e){var _0x49c225=function(_0x3e6333){while(--_0x3e6333){_0x4ae147['push'](_0x4ae147['shift']());}};_0x49c225(++_0x48202e);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x42f392,_0x344a62){_0x42f392=_0x42f392-0x0;var _0x48caaa=_0x3eea[_0x42f392];return _0x48caaa;};'use strict';var Sequelize=require(_0xa3ee('0x0'));module['exports']={'name':{'type':Sequelize[_0xa3ee('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa3ee('0x1')]},'parent':{'type':Sequelize[_0xa3ee('0x1')]},'table':{'type':Sequelize[_0xa3ee('0x1')]},'conditions':{'type':Sequelize[_0xa3ee('0x2')]},'joins':{'type':Sequelize[_0xa3ee('0x2')]}};
\ No newline at end of file
index ca254eb..619614e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d96=['json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','CustomReports','error','stack','name','send','AnalyticCustomReport','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','replace','format','groupBy','group','orderBy','field','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','join','COUNT(DISTINCT\x20%s)','MAX(%s)','HOUR(%s)','IS\x20EMPTY','metric','function','DESC','alias','web','fullPath','randomstring','generate','output','custom','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','child_process','fork','../../components/export/','savename','countTable','SELECT','runReport','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end'];(function(_0x3a2014,_0x20cd5d){var _0x1095ca=function(_0x4fff29){while(--_0x4fff29){_0x3a2014['push'](_0x3a2014['shift']());}};_0x1095ca(++_0x20cd5d);}(_0x4d96,0x89));var _0x64d9=function(_0x17f29d,_0x131c17){_0x17f29d=_0x17f29d-0x0;var _0x679af4=_0x4d96[_0x17f29d];return _0x679af4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x64d9('0x0'));var zipdir=require(_0x64d9('0x1'));var jsonpatch=require(_0x64d9('0x2'));var rp=require(_0x64d9('0x3'));var moment=require(_0x64d9('0x4'));var BPromise=require(_0x64d9('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x64d9('0x6'));var sox=require(_0x64d9('0x7'));var csv=require(_0x64d9('0x8'));var ejs=require(_0x64d9('0x9'));var fs=require('fs');var fs_extra=require(_0x64d9('0xa'));var _=require(_0x64d9('0xb'));var squel=require('squel');var crypto=require(_0x64d9('0xc'));var jsforce=require(_0x64d9('0xd'));var deskjs=require(_0x64d9('0xe'));var toCsv=require(_0x64d9('0x8'));var querystring=require('querystring');var Papa=require(_0x64d9('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x64d9('0x10'));var hardwareService=require(_0x64d9('0x11'));var logger=require(_0x64d9('0x12'))(_0x64d9('0x13'));var utils=require(_0x64d9('0x14'));var config=require(_0x64d9('0x15'));var licenseUtil=require(_0x64d9('0x16'));var db=require(_0x64d9('0x17'))['db'];var dbH=require(_0x64d9('0x17'))[_0x64d9('0x18')];function respondWithStatusCode(_0x432b1e,_0x2a00c9){_0x2a00c9=_0x2a00c9||0xcc;return function(_0x14c9f0){if(_0x14c9f0){return _0x432b1e[_0x64d9('0x19')](_0x2a00c9);}return _0x432b1e[_0x64d9('0x1a')](_0x2a00c9)[_0x64d9('0x1b')]();};}function respondWithResult(_0x4600ae,_0x433352){_0x433352=_0x433352||0xc8;return function(_0x4614f9){if(_0x4614f9){return _0x4600ae[_0x64d9('0x1a')](_0x433352)[_0x64d9('0x1c')](_0x4614f9);}};}function respondWithFilteredResult(_0x4302af,_0x239a15){return function(_0x5fc4e9){if(_0x5fc4e9){var _0x5cc1c5=typeof _0x239a15[_0x64d9('0x1d')]==='undefined'&&typeof _0x239a15[_0x64d9('0x1e')]===_0x64d9('0x1f');var _0x506bc8=_0x5fc4e9[_0x64d9('0x20')];var _0x322b14=_0x5cc1c5?0x0:_0x239a15[_0x64d9('0x1d')];var _0x197dda=_0x5cc1c5?_0x5fc4e9[_0x64d9('0x20')]:_0x239a15[_0x64d9('0x1d')]+_0x239a15[_0x64d9('0x1e')];var _0x564b23;if(_0x197dda>=_0x506bc8){_0x197dda=_0x506bc8;_0x564b23=0xc8;}else{_0x564b23=0xce;}_0x4302af[_0x64d9('0x1a')](_0x564b23);return _0x4302af[_0x64d9('0x21')](_0x64d9('0x22'),_0x322b14+'-'+_0x197dda+'/'+_0x506bc8)[_0x64d9('0x1c')](_0x5fc4e9);}return null;};}function patchUpdates(_0x2a3767){return function(_0x5750ae){try{jsonpatch[_0x64d9('0x23')](_0x5750ae,_0x2a3767,!![]);}catch(_0x77078f){return BPromise[_0x64d9('0x24')](_0x77078f);}return _0x5750ae[_0x64d9('0x25')]();};}function saveUpdates(_0x19911e,_0x483503){return function(_0x37366b){if(_0x37366b){return _0x37366b['update'](_0x19911e)[_0x64d9('0x26')](function(_0x867d74){return _0x867d74;});}return null;};}function removeEntity(_0x562633,_0x1f1e6c){return function(_0x45362d){if(_0x45362d){return _0x45362d[_0x64d9('0x27')]()['then'](function(){var _0x23d665=_0x45362d['get']({'plain':!![]});var _0x501689=_0x64d9('0x28');return db['UserProfileResource'][_0x64d9('0x27')]({'where':{'type':_0x501689,'resourceId':_0x23d665['id']}})[_0x64d9('0x26')](function(){return _0x45362d;});})[_0x64d9('0x26')](function(){_0x562633[_0x64d9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x437cd6,_0x326a2f){return function(_0x285613){if(!_0x285613){_0x437cd6[_0x64d9('0x19')](0x194);}return _0x285613;};}function handleError(_0x13c711,_0x6b04c0){_0x6b04c0=_0x6b04c0||0x1f4;return function(_0x111fd6){logger[_0x64d9('0x29')](_0x111fd6[_0x64d9('0x2a')]);if(_0x111fd6['name']){delete _0x111fd6[_0x64d9('0x2b')];}_0x13c711['status'](_0x6b04c0)[_0x64d9('0x2c')](_0x111fd6);};}exports['index']=function(_0x41f119,_0x1ab302){var _0xbbe1d3={},_0x4a919b={},_0x3c9514={'count':0x0,'rows':[]};var _0xe4d924=_['map'](db[_0x64d9('0x2d')]['rawAttributes'],function(_0x44328a){return{'name':_0x44328a[_0x64d9('0x2e')],'type':_0x44328a[_0x64d9('0x2f')][_0x64d9('0x30')]};});_0x4a919b[_0x64d9('0x31')]=_[_0x64d9('0x32')](_0xe4d924,_0x64d9('0x2b'));_0x4a919b[_0x64d9('0x33')]=_[_0x64d9('0x34')](_0x41f119[_0x64d9('0x33')]);_0x4a919b[_0x64d9('0x35')]=_[_0x64d9('0x36')](_0x4a919b[_0x64d9('0x31')],_0x4a919b['query']);_0xbbe1d3[_0x64d9('0x37')]=_[_0x64d9('0x36')](_0x4a919b[_0x64d9('0x31')],qs['fields'](_0x41f119['query'][_0x64d9('0x38')]));_0xbbe1d3[_0x64d9('0x37')]=_0xbbe1d3[_0x64d9('0x37')][_0x64d9('0x39')]?_0xbbe1d3[_0x64d9('0x37')]:_0x4a919b[_0x64d9('0x31')];if(!_0x41f119['query'][_0x64d9('0x3a')](_0x64d9('0x3b'))){_0xbbe1d3[_0x64d9('0x1e')]=qs[_0x64d9('0x1e')](_0x41f119['query'][_0x64d9('0x1e')]);_0xbbe1d3['offset']=qs[_0x64d9('0x1d')](_0x41f119['query'][_0x64d9('0x1d')]);}_0xbbe1d3[_0x64d9('0x3c')]=qs['sort'](_0x41f119[_0x64d9('0x33')][_0x64d9('0x3d')]);_0xbbe1d3['where']=qs[_0x64d9('0x35')](_['pick'](_0x41f119[_0x64d9('0x33')],_0x4a919b[_0x64d9('0x35')]),_0xe4d924);if(_0x41f119[_0x64d9('0x33')][_0x64d9('0x3e')]){_0xbbe1d3[_0x64d9('0x3f')]=_[_0x64d9('0x40')](_0xbbe1d3[_0x64d9('0x3f')],{'$or':_[_0x64d9('0x32')](_0xe4d924,function(_0x5d6bfa){if(_0x5d6bfa['type']!==_0x64d9('0x41')){var _0x421de5={};_0x421de5[_0x5d6bfa['name']]={'$like':'%'+_0x41f119[_0x64d9('0x33')][_0x64d9('0x3e')]+'%'};return _0x421de5;}})});}_0xbbe1d3=_[_0x64d9('0x40')]({},_0xbbe1d3,_0x41f119[_0x64d9('0x42')]);var _0x29336e={'where':_0xbbe1d3['where']};return db[_0x64d9('0x2d')][_0x64d9('0x20')](_0x29336e)['then'](function(_0x1cb935){_0x3c9514['count']=_0x1cb935;if(_0x41f119[_0x64d9('0x33')][_0x64d9('0x43')]){_0xbbe1d3[_0x64d9('0x44')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0x64d9('0x45')](_0xbbe1d3);})[_0x64d9('0x26')](function(_0x1968fa){_0x3c9514[_0x64d9('0x46')]=_0x1968fa;return _0x3c9514;})[_0x64d9('0x26')](respondWithFilteredResult(_0x1ab302,_0xbbe1d3))[_0x64d9('0x47')](handleError(_0x1ab302,null));};exports[_0x64d9('0x48')]=function(_0x57209b,_0x451438){var _0x58f013={'raw':![],'where':{'id':_0x57209b[_0x64d9('0x49')]['id']}},_0x48ba67={};_0x48ba67[_0x64d9('0x31')]=_[_0x64d9('0x34')](db['AnalyticCustomReport'][_0x64d9('0x4a')]);_0x48ba67[_0x64d9('0x33')]=_['keys'](_0x57209b[_0x64d9('0x33')]);_0x48ba67[_0x64d9('0x35')]=_['intersection'](_0x48ba67[_0x64d9('0x31')],_0x48ba67[_0x64d9('0x33')]);_0x58f013['attributes']=_[_0x64d9('0x36')](_0x48ba67[_0x64d9('0x31')],qs['fields'](_0x57209b[_0x64d9('0x33')][_0x64d9('0x38')]));_0x58f013[_0x64d9('0x37')]=_0x58f013[_0x64d9('0x37')]['length']?_0x58f013['attributes']:_0x48ba67['model'];if(_0x57209b['query'][_0x64d9('0x43')]){_0x58f013[_0x64d9('0x44')]=[{'all':!![]}];}_0x58f013=_[_0x64d9('0x40')]({},_0x58f013,_0x57209b[_0x64d9('0x42')]);return db[_0x64d9('0x2d')][_0x64d9('0x4b')](_0x58f013)['then'](handleEntityNotFound(_0x451438,null))[_0x64d9('0x26')](respondWithResult(_0x451438,null))['catch'](handleError(_0x451438,null));};exports[_0x64d9('0x4c')]=function(_0x18cc6a,_0x2024db){return db[_0x64d9('0x2d')][_0x64d9('0x4c')](_0x18cc6a[_0x64d9('0x4d')],{})[_0x64d9('0x26')](function(_0x1bbf8e){var _0x4c5980=_0x18cc6a[_0x64d9('0x4e')][_0x64d9('0x4f')]({'plain':!![]});if(!_0x4c5980)throw new Error(_0x64d9('0x50'));if(_0x4c5980['role']===_0x64d9('0x4e')){var _0x519859=_0x1bbf8e[_0x64d9('0x4f')]({'plain':!![]});var _0x15233b=_0x64d9('0x51');return db[_0x64d9('0x52')][_0x64d9('0x4b')]({'where':{'name':_0x15233b,'userProfileId':_0x4c5980[_0x64d9('0x53')]},'raw':!![]})[_0x64d9('0x26')](function(_0x312129){if(_0x312129&&_0x312129['autoAssociation']===0x0){return db['UserProfileResource'][_0x64d9('0x4c')]({'name':_0x519859['name'],'resourceId':_0x519859['id'],'type':_0x64d9('0x28'),'sectionId':_0x312129['id']},{})[_0x64d9('0x26')](function(){return _0x1bbf8e;});}else{return _0x1bbf8e;}})['catch'](function(_0xa1c035){logger['error'](_0x64d9('0x54'),_0xa1c035);throw _0xa1c035;});}return _0x1bbf8e;})[_0x64d9('0x26')](respondWithResult(_0x2024db,0xc9))['catch'](handleError(_0x2024db,null));};exports[_0x64d9('0x55')]=function(_0xbcf7ad,_0x4b4324){if(_0xbcf7ad[_0x64d9('0x4d')]['id']){delete _0xbcf7ad[_0x64d9('0x4d')]['id'];}return db[_0x64d9('0x2d')][_0x64d9('0x4b')]({'where':{'id':_0xbcf7ad[_0x64d9('0x49')]['id']}})[_0x64d9('0x26')](handleEntityNotFound(_0x4b4324,null))[_0x64d9('0x26')](saveUpdates(_0xbcf7ad[_0x64d9('0x4d')],null))[_0x64d9('0x26')](respondWithResult(_0x4b4324,null))[_0x64d9('0x47')](handleError(_0x4b4324,null));};exports[_0x64d9('0x27')]=function(_0x19fd6b,_0x34dc53){return db['AnalyticCustomReport'][_0x64d9('0x4b')]({'where':{'id':_0x19fd6b[_0x64d9('0x49')]['id']}})[_0x64d9('0x26')](handleEntityNotFound(_0x34dc53,null))[_0x64d9('0x26')](removeEntity(_0x34dc53,null))[_0x64d9('0x47')](handleError(_0x34dc53,null));};exports['preview']=function(_0x268fbc,_0x56dc4d){var _0x27e1e5=0xa;var _0x4dcc44=['join',_0x64d9('0x56'),_0x64d9('0x57'),_0x64d9('0x58')];var _0x4db90e={'SUM':_0x64d9('0x59'),'COUNT':_0x64d9('0x5a'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x64d9('0x5b'),'AVG':_0x64d9('0x5c'),'GROUP_CONCAT':_0x64d9('0x5d'),'GROUP_CONCAT ASC':_0x64d9('0x5e'),'GROUP_CONCAT DESC':_0x64d9('0x5f')};var _0x1806a0={'SEC_TO_TIME':_0x64d9('0x60'),'DATE':_0x64d9('0x61'),'HOUR':'HOUR(%s)','ROUND':_0x64d9('0x62'),'UNIX_TIMESTAMP':_0x64d9('0x63')};var _0x51bf9d=function(_0x488def){return!_[_0x64d9('0x64')]([_0x64d9('0x65'),_0x64d9('0x66'),'IS\x20EMPTY',_0x64d9('0x67')],_0x488def);};var _0x5043c7=function(_0x130a19){if(!_0x130a19||!_0x130a19['rules'][_0x64d9('0x39')]){return'';}for(var _0x48ee02='(',_0xadfc8=0x0;_0xadfc8<_0x130a19[_0x64d9('0x68')][_0x64d9('0x39')];_0xadfc8+=0x1){_0xadfc8>0x0&&(_0x48ee02+='\x20'+_0x130a19[_0x64d9('0x69')]+'\x20');_0x48ee02+=_0x130a19[_0x64d9('0x68')][_0xadfc8]['group']?_0x5043c7(_0x130a19[_0x64d9('0x68')][_0xadfc8]['group']):_0x130a19['rules'][_0xadfc8]['field']+'\x20'+_0x130a19[_0x64d9('0x68')][_0xadfc8][_0x64d9('0x6a')]+(_0x51bf9d(_0x130a19[_0x64d9('0x68')][_0xadfc8]['condition'])?'\x20'+_0x130a19[_0x64d9('0x68')][_0xadfc8][_0x64d9('0x6b')]:'');}return _0x48ee02+')';};var _0x191bf3={'where':{'id':_0x268fbc[_0x64d9('0x49')]['id']}},_0x133a87,_0x47ba40,_0x42b39f,_0x50ca2f,_0x49612e;_0x191bf3=_['merge']({},_0x191bf3,_0x268fbc[_0x64d9('0x42')]);return db['AnalyticCustomReport'][_0x64d9('0x4b')](_0x191bf3)[_0x64d9('0x26')](function(_0x52696a){if(_0x52696a){_0x133a87=_0x52696a;return _0x52696a[_0x64d9('0x6c')]();}return null;})[_0x64d9('0x26')](function(_0x567565){if(_0x567565){if(!_0x567565[_0x64d9('0x39')]){throw new db[(_0x64d9('0x6d'))][(_0x64d9('0x6e'))](_0x64d9('0x6f'),0x193);}_0x47ba40=_0x567565;return db[_0x64d9('0x70')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x3725c9){if(_0x3725c9){_0x42b39f=_[_0x64d9('0x71')](_0x3725c9,'id');var _0x5e02b4;var _0xa1fbca=squel[_0x64d9('0x72')]();_0xa1fbca[_0x64d9('0x73')](_0x133a87['table']);for(var _0xb58347=0x0;_0xb58347<_0x47ba40['length'];_0xb58347+=0x1){_0x5e02b4=_0x47ba40[_0xb58347][_0x64d9('0x74')]?_0x42b39f[_0x47ba40[_0xb58347][_0x64d9('0x74')]]['metric']:_0x47ba40[_0xb58347]['field'];_0x5e02b4=_0x47ba40[_0xb58347]['function']?_[_0x64d9('0x75')](_0x4db90e[_0x47ba40[_0xb58347]['function']],'%s',_0x5e02b4):_0x5e02b4;_0x5e02b4=_0x47ba40[_0xb58347][_0x64d9('0x76')]?_[_0x64d9('0x75')](_0x1806a0[_0x47ba40[_0xb58347][_0x64d9('0x76')]],'%s',_0x5e02b4):_0x5e02b4;if(_0x47ba40[_0xb58347][_0x64d9('0x77')]){_0xa1fbca[_0x64d9('0x78')](_0x5e02b4);}_0x47ba40[_0xb58347]['orderBy']&&_0xa1fbca['order'](_0x5e02b4,_0x47ba40[_0xb58347][_0x64d9('0x79')]==='DESC'?![]:!![]);_0xa1fbca[_0x64d9('0x7a')](_0x5e02b4,_0x47ba40[_0xb58347]['alias']||_0x5e02b4);}if(_0x133a87[_0x64d9('0x7b')]){_0x133a87['joins']=JSON[_0x64d9('0x7c')](_0x133a87[_0x64d9('0x7b')]);for(var _0x4b53e4=0x0;_0x4b53e4<_0x133a87['joins'][_0x64d9('0x39')];_0x4b53e4+=0x1){if(_0x133a87[_0x64d9('0x7b')][_0x4b53e4][_0x64d9('0x2f')]&&_['includes'](_0x4dcc44,_0x133a87['joins'][_0x4b53e4][_0x64d9('0x2f')])&&_0x133a87[_0x64d9('0x7b')][_0x4b53e4][_0x64d9('0x7d')]&&_0x133a87[_0x64d9('0x7b')][_0x4b53e4]['foreignTable']&&_0x133a87['joins'][_0x4b53e4][_0x64d9('0x7e')]){_0xa1fbca[_0x133a87[_0x64d9('0x7b')][_0x4b53e4][_0x64d9('0x2f')]](_0x133a87['joins'][_0x4b53e4][_0x64d9('0x7f')],null,util['format'](_0x64d9('0x80'),_0x133a87[_0x64d9('0x81')],_0x133a87[_0x64d9('0x7b')][_0x4b53e4]['parentKey'],_0x133a87[_0x64d9('0x7b')][_0x4b53e4][_0x64d9('0x7f')],_0x133a87[_0x64d9('0x7b')][_0x4b53e4][_0x64d9('0x7e')]));}}}if(_0x133a87[_0x64d9('0x82')]){_0x133a87[_0x64d9('0x82')]=JSON[_0x64d9('0x7c')](_0x133a87['conditions']);_0xa1fbca[_0x64d9('0x3f')](_0x5043c7(_0x133a87[_0x64d9('0x82')][_0x64d9('0x78')]));}_0x49612e=_0xa1fbca[_0x64d9('0x83')]();_0xa1fbca[_0x64d9('0x1e')](_0x27e1e5);_0xa1fbca[_0x64d9('0x1d')](0x0);logger[_0x64d9('0x84')](_0x64d9('0x85'),_0xa1fbca[_0x64d9('0x86')]());return dbH[_0x64d9('0x87')][_0x64d9('0x33')](_0xa1fbca[_0x64d9('0x86')](),{'type':dbH['sequelize'][_0x64d9('0x88')]['SELECT']});}})['then'](respondWithResult(_0x56dc4d,null))[_0x64d9('0x47')](handleError(_0x56dc4d,null));};function runReport(_0x1c7901,_0x2286e8,_0x46fc80){var _0x651f98=_0x2286e8[_0x64d9('0x2b')];var _0x31cf90=0xa;var _0xf32067=[_0x64d9('0x89'),_0x64d9('0x56'),_0x64d9('0x57'),_0x64d9('0x58')];var _0x3dffb3={'SUM':'SUM(%s)','COUNT':_0x64d9('0x5a'),'COUNT DISTINCT':_0x64d9('0x8a'),'MAX':_0x64d9('0x8b'),'MIN':_0x64d9('0x5b'),'AVG':_0x64d9('0x5c'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x64d9('0x5e'),'GROUP_CONCAT DESC':_0x64d9('0x5f')};var _0x287ae1={'SEC_TO_TIME':_0x64d9('0x60'),'DATE':_0x64d9('0x61'),'HOUR':_0x64d9('0x8c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x64d9('0x63')};var _0x3decb1=function(_0x50c198){return!_[_0x64d9('0x64')]([_0x64d9('0x65'),_0x64d9('0x66'),_0x64d9('0x8d'),_0x64d9('0x67')],_0x50c198);};var _0x270976=function(_0x32e7c9){if(!_0x32e7c9||!_0x32e7c9[_0x64d9('0x68')]['length']){return'';}for(var _0x28e8d5='(',_0x42e756=0x0;_0x42e756<_0x32e7c9[_0x64d9('0x68')]['length'];_0x42e756+=0x1){_0x42e756>0x0&&(_0x28e8d5+='\x20'+_0x32e7c9[_0x64d9('0x69')]+'\x20');_0x28e8d5+=_0x32e7c9[_0x64d9('0x68')][_0x42e756][_0x64d9('0x78')]?_0x270976(_0x32e7c9['rules'][_0x42e756][_0x64d9('0x78')]):_0x32e7c9['rules'][_0x42e756][_0x64d9('0x7a')]+'\x20'+_0x32e7c9[_0x64d9('0x68')][_0x42e756][_0x64d9('0x6a')]+(_0x3decb1(_0x32e7c9[_0x64d9('0x68')][_0x42e756][_0x64d9('0x6a')])?'\x20'+_0x32e7c9[_0x64d9('0x68')][_0x42e756][_0x64d9('0x6b')]:'');}return _0x28e8d5+')';};var _0x682ff6={'where':{'id':_0x1c7901['id']}},_0x372958,_0x3afff4,_0x47116c,_0x2e5ce3,_0x43162e;_0x682ff6=_['merge']({},_0x682ff6,_0x46fc80);return db[_0x64d9('0x2d')][_0x64d9('0x4b')](_0x682ff6)['then'](function(_0xf41af8){if(_0xf41af8){_0x372958=_0xf41af8;return _0xf41af8[_0x64d9('0x6c')]();}return null;})[_0x64d9('0x26')](function(_0x35d124){if(_0x35d124){if(!_0x35d124[_0x64d9('0x39')]){throw new db[(_0x64d9('0x6d'))][(_0x64d9('0x6e'))](_0x64d9('0x6f'),0x193);}_0x3afff4=_0x35d124;return db[_0x64d9('0x70')][_0x64d9('0x45')]({'raw':!![]});}return null;})[_0x64d9('0x26')](function(_0x5bc97d){if(_0x5bc97d){_0x47116c=_['keyBy'](_0x5bc97d,'id');var _0x1a0d48;var _0x4c242c=squel['select']();_0x4c242c[_0x64d9('0x73')](_0x372958[_0x64d9('0x81')]);for(var _0x427e95=0x0;_0x427e95<_0x3afff4[_0x64d9('0x39')];_0x427e95+=0x1){_0x1a0d48=_0x3afff4[_0x427e95]['MetricId']?_0x47116c[_0x3afff4[_0x427e95]['MetricId']][_0x64d9('0x8e')]:_0x3afff4[_0x427e95][_0x64d9('0x7a')];_0x1a0d48=_0x3afff4[_0x427e95][_0x64d9('0x8f')]?_[_0x64d9('0x75')](_0x3dffb3[_0x3afff4[_0x427e95][_0x64d9('0x8f')]],'%s',_0x1a0d48):_0x1a0d48;_0x1a0d48=_0x3afff4[_0x427e95][_0x64d9('0x76')]?_['replace'](_0x287ae1[_0x3afff4[_0x427e95]['format']],'%s',_0x1a0d48):_0x1a0d48;if(_0x3afff4[_0x427e95][_0x64d9('0x77')]){_0x4c242c['group'](_0x1a0d48);}_0x3afff4[_0x427e95][_0x64d9('0x79')]&&_0x4c242c[_0x64d9('0x3c')](_0x1a0d48,_0x3afff4[_0x427e95][_0x64d9('0x79')]===_0x64d9('0x90')?![]:!![]);_0x4c242c[_0x64d9('0x7a')](_0x1a0d48,_0x3afff4[_0x427e95][_0x64d9('0x91')]||_0x1a0d48);}if(_0x372958[_0x64d9('0x7b')]){_0x372958[_0x64d9('0x7b')]=JSON[_0x64d9('0x7c')](_0x372958[_0x64d9('0x7b')]);for(var _0xb02c61=0x0;_0xb02c61<_0x372958[_0x64d9('0x7b')]['length'];_0xb02c61+=0x1){if(_0x372958[_0x64d9('0x7b')][_0xb02c61]['type']&&_[_0x64d9('0x64')](_0xf32067,_0x372958[_0x64d9('0x7b')][_0xb02c61][_0x64d9('0x2f')])&&_0x372958['joins'][_0xb02c61][_0x64d9('0x7d')]&&_0x372958[_0x64d9('0x7b')][_0xb02c61][_0x64d9('0x7f')]&&_0x372958[_0x64d9('0x7b')][_0xb02c61][_0x64d9('0x7e')]){_0x4c242c[_0x372958[_0x64d9('0x7b')][_0xb02c61]['type']](_0x372958['joins'][_0xb02c61]['foreignTable'],null,util[_0x64d9('0x76')](_0x64d9('0x80'),_0x372958['table'],_0x372958[_0x64d9('0x7b')][_0xb02c61][_0x64d9('0x7d')],_0x372958['joins'][_0xb02c61][_0x64d9('0x7f')],_0x372958[_0x64d9('0x7b')][_0xb02c61][_0x64d9('0x7e')]));}}}if(_0x372958[_0x64d9('0x82')]){_0x372958[_0x64d9('0x82')]=JSON[_0x64d9('0x7c')](_0x372958[_0x64d9('0x82')]);_0x4c242c[_0x64d9('0x3f')](_0x270976(_0x372958[_0x64d9('0x82')][_0x64d9('0x78')]));}_0x43162e=_0x4c242c[_0x64d9('0x83')]();_0x4c242c['limit'](_0x31cf90);_0x4c242c[_0x64d9('0x1d')](0x0);return;}})['then'](function(){if(_0x2286e8['output']===_0x64d9('0x92')){return null;}var _0x28d213=_['merge'](_0x2286e8,{'name':_0x2286e8[_0x64d9('0x93')]||_0x2286e8[_0x64d9('0x2b')]||_0x372958[_0x64d9('0x2b')],'basename':_0x651f98,'savename':util[_0x64d9('0x76')]('%s-%s.%s',_0x2286e8['name']||_0x372958['name'],require(_0x64d9('0x94'))[_0x64d9('0x95')](0x4),_0x2286e8[_0x64d9('0x96')]||'csv'),'reportId':_0x372958['id'],'reportType':_0x64d9('0x97')});return db[_0x64d9('0x98')][_0x64d9('0x4c')](_0x28d213,{'raw':!![]});})[_0x64d9('0x26')](function(_0x253c15){if(_0x372958['table']===_0x64d9('0x99')){_0x43162e[_0x64d9('0x3f')](_0x372958['table']+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x2286e8[_0x64d9('0x9a')],_0x2286e8[_0x64d9('0x9b')]);}else{_0x43162e[_0x64d9('0x3f')](_0x372958[_0x64d9('0x81')]+_0x64d9('0x9c'),_0x2286e8[_0x64d9('0x9a')],_0x2286e8[_0x64d9('0x9b')]);}if(_0x253c15){logger[_0x64d9('0x9d')]('Run\x20Query:',_0x43162e[_0x64d9('0x86')]());require(_0x64d9('0x9e'))[_0x64d9('0x9f')](path[_0x64d9('0x89')](__dirname,_0x64d9('0xa0'),_0x253c15[_0x64d9('0x96')]),[_0x253c15['id'],_0x43162e[_0x64d9('0x86')](),path[_0x64d9('0x89')](__dirname,'../../files/reports',_0x253c15[_0x64d9('0xa1')]),_0x651f98]);return _0x253c15;}else{var _0x49521b=squel[_0x64d9('0x72')]();_0x49521b[_0x64d9('0x73')]('('+_0x43162e[_0x64d9('0x86')]()+')',_0x64d9('0xa2'));_0x49521b['field']('COUNT(*)','count');_0x43162e['limit'](_0x2286e8['limit']||_0x31cf90);_0x43162e[_0x64d9('0x1d')](_0x2286e8[_0x64d9('0x1d')]||0x0);return dbH[_0x64d9('0x87')][_0x64d9('0x33')](_0x49521b['toString'](),{'type':dbH[_0x64d9('0x87')][_0x64d9('0x88')][_0x64d9('0xa3')]})['then'](function(_0x297a58){if(!_0x297a58[_0x64d9('0x39')]){_0x2e5ce3=0x0;}else{_0x2e5ce3=_0x297a58[0x0][_0x64d9('0x20')]||0x0;}return dbH[_0x64d9('0x87')][_0x64d9('0x33')](_0x43162e[_0x64d9('0x86')](),{'type':dbH[_0x64d9('0x87')]['QueryTypes'][_0x64d9('0xa3')]});})[_0x64d9('0x26')](function(_0x3b987a){return{'rows':_0x3b987a||[],'count':_0x2e5ce3};});}});}exports['run']=function(_0x4d0c74,_0x14a56a){return runReport(_0x4d0c74[_0x64d9('0x49')],_0x4d0c74[_0x64d9('0x33')],_0x4d0c74[_0x64d9('0x42')])[_0x64d9('0x26')](respondWithResult(_0x14a56a,null))[_0x64d9('0x47')](handleError(_0x14a56a,null));};exports[_0x64d9('0xa4')]=runReport;exports['query']=function(_0x1ccd74,_0x112df7){var _0x16646f=0xa;var _0x57d884=[_0x64d9('0x89'),_0x64d9('0x56'),_0x64d9('0x57'),_0x64d9('0x58')];var _0x3c20a0={'SUM':_0x64d9('0x59'),'COUNT':_0x64d9('0x5a'),'COUNT DISTINCT':_0x64d9('0x8a'),'MAX':_0x64d9('0x8b'),'MIN':_0x64d9('0x5b'),'AVG':_0x64d9('0x5c'),'GROUP_CONCAT':_0x64d9('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x64d9('0x5f')};var _0x53dba6={'SEC_TO_TIME':_0x64d9('0x60'),'DATE':_0x64d9('0x61'),'HOUR':_0x64d9('0x8c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x64d9('0x63')};var _0x2022b0=function(_0x563116){return!_[_0x64d9('0x64')](['IS\x20NULL',_0x64d9('0x66'),_0x64d9('0x8d'),_0x64d9('0x67')],_0x563116);};var _0x4a2a38=function(_0x7333bf){if(!_0x7333bf||!_0x7333bf['rules'][_0x64d9('0x39')]){return'';}for(var _0x1001f2='(',_0x3c6179=0x0;_0x3c6179<_0x7333bf[_0x64d9('0x68')]['length'];_0x3c6179+=0x1){_0x3c6179>0x0&&(_0x1001f2+='\x20'+_0x7333bf[_0x64d9('0x69')]+'\x20');_0x1001f2+=_0x7333bf[_0x64d9('0x68')][_0x3c6179][_0x64d9('0x78')]?_0x4a2a38(_0x7333bf[_0x64d9('0x68')][_0x3c6179][_0x64d9('0x78')]):_0x7333bf[_0x64d9('0x68')][_0x3c6179][_0x64d9('0x7a')]+'\x20'+_0x7333bf[_0x64d9('0x68')][_0x3c6179][_0x64d9('0x6a')]+(_0x2022b0(_0x7333bf[_0x64d9('0x68')][_0x3c6179][_0x64d9('0x6a')])?'\x20'+_0x7333bf['rules'][_0x3c6179][_0x64d9('0x6b')]:'');}return _0x1001f2+')';};var _0x22c151={'where':{'id':_0x1ccd74['params']['id']}},_0x906989,_0x43d459,_0x94fa1f,_0x3817e8,_0x33977a;_0x22c151=_[_0x64d9('0x40')]({},_0x22c151,_0x1ccd74[_0x64d9('0x42')]);return db[_0x64d9('0x2d')][_0x64d9('0x4b')](_0x22c151)[_0x64d9('0x26')](function(_0x165c9e){if(_0x165c9e){_0x906989=_0x165c9e;return _0x165c9e['getFields']();}return null;})[_0x64d9('0x26')](function(_0x1846ff){if(_0x1846ff){if(!_0x1846ff[_0x64d9('0x39')]){throw new db['Sequelize'][(_0x64d9('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x43d459=_0x1846ff;return db[_0x64d9('0x70')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x20b149){if(_0x20b149){_0x94fa1f=_[_0x64d9('0x71')](_0x20b149,'id');var _0x1b2c72;var _0x1283dc=squel[_0x64d9('0x72')]();_0x1283dc[_0x64d9('0x73')](_0x906989[_0x64d9('0x81')]);for(var _0x2e78c8=0x0;_0x2e78c8<_0x43d459['length'];_0x2e78c8+=0x1){_0x1b2c72=_0x43d459[_0x2e78c8][_0x64d9('0x74')]?_0x94fa1f[_0x43d459[_0x2e78c8][_0x64d9('0x74')]][_0x64d9('0x8e')]:_0x43d459[_0x2e78c8][_0x64d9('0x7a')];_0x1b2c72=_0x43d459[_0x2e78c8][_0x64d9('0x8f')]?_['replace'](_0x3c20a0[_0x43d459[_0x2e78c8][_0x64d9('0x8f')]],'%s',_0x1b2c72):_0x1b2c72;_0x1b2c72=_0x43d459[_0x2e78c8][_0x64d9('0x76')]?_[_0x64d9('0x75')](_0x53dba6[_0x43d459[_0x2e78c8]['format']],'%s',_0x1b2c72):_0x1b2c72;if(_0x43d459[_0x2e78c8][_0x64d9('0x77')]){_0x1283dc[_0x64d9('0x78')](_0x1b2c72);}_0x43d459[_0x2e78c8][_0x64d9('0x79')]&&_0x1283dc[_0x64d9('0x3c')](_0x1b2c72,_0x43d459[_0x2e78c8][_0x64d9('0x79')]===_0x64d9('0x90')?![]:!![]);_0x1283dc[_0x64d9('0x7a')](_0x1b2c72,_0x43d459[_0x2e78c8]['alias']||_0x1b2c72);}if(_0x906989[_0x64d9('0x7b')]){_0x906989['joins']=JSON[_0x64d9('0x7c')](_0x906989['joins']);for(var _0x507b93=0x0;_0x507b93<_0x906989[_0x64d9('0x7b')][_0x64d9('0x39')];_0x507b93+=0x1){if(_0x906989[_0x64d9('0x7b')][_0x507b93][_0x64d9('0x2f')]&&_['includes'](_0x57d884,_0x906989[_0x64d9('0x7b')][_0x507b93][_0x64d9('0x2f')])&&_0x906989['joins'][_0x507b93][_0x64d9('0x7d')]&&_0x906989[_0x64d9('0x7b')][_0x507b93]['foreignTable']&&_0x906989['joins'][_0x507b93][_0x64d9('0x7e')]){_0x1283dc[_0x906989[_0x64d9('0x7b')][_0x507b93]['type']](_0x906989[_0x64d9('0x7b')][_0x507b93][_0x64d9('0x7f')],null,util[_0x64d9('0x76')](_0x64d9('0x80'),_0x906989[_0x64d9('0x81')],_0x906989[_0x64d9('0x7b')][_0x507b93][_0x64d9('0x7d')],_0x906989[_0x64d9('0x7b')][_0x507b93][_0x64d9('0x7f')],_0x906989[_0x64d9('0x7b')][_0x507b93][_0x64d9('0x7e')]));}}}if(_0x906989['conditions']){_0x906989['conditions']=JSON[_0x64d9('0x7c')](_0x906989[_0x64d9('0x82')]);_0x1283dc[_0x64d9('0x3f')](_0x4a2a38(_0x906989[_0x64d9('0x82')][_0x64d9('0x78')]));}_0x33977a=_0x1283dc[_0x64d9('0x83')]();_0x1283dc[_0x64d9('0x1e')](_0x16646f);_0x1283dc[_0x64d9('0x1d')](0x0);logger[_0x64d9('0x84')](_0x64d9('0x85'),_0x1283dc[_0x64d9('0x86')]());return dbH[_0x64d9('0x87')][_0x64d9('0x33')](_0x1283dc[_0x64d9('0x86')](),{'type':dbH['sequelize']['QueryTypes'][_0x64d9('0xa3')]});}})[_0x64d9('0x26')](function(){return{'sql':_0x33977a[_0x64d9('0x86')]()};})[_0x64d9('0x26')](respondWithResult(_0x112df7,null))['catch'](handleError(_0x112df7,null));};
\ No newline at end of file
+var _0x7687=['sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','dbH','sendStatus','status','end','offset','undefined','limit','count','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','send','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','include','findAll','catch','params','keys','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','find','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','options','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','function','replace','format','orderBy','DESC','alias','joins','parentKey','foreignKey','foreignTable','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','SEC_TO_TIME(%s)','operator','ValidationErrorItem','metric','groupBy','parse','%s.%s\x20=\x20%s.%s','output','web','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','join','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','runReport','getFields','debug','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x58b176,_0x223ace){var _0x75b2e7=function(_0x410191){while(--_0x410191){_0x58b176['push'](_0x58b176['shift']());}};_0x75b2e7(++_0x223ace);}(_0x7687,0x1e3));var _0x7768=function(_0x7feb90,_0x28e700){_0x7feb90=_0x7feb90-0x0;var _0x3c5b33=_0x7687[_0x7feb90];return _0x3c5b33;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7768('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7768('0x1'));var rp=require(_0x7768('0x2'));var moment=require(_0x7768('0x3'));var BPromise=require(_0x7768('0x4'));var Mustache=require(_0x7768('0x5'));var util=require('util');var path=require('path');var sox=require(_0x7768('0x6'));var csv=require(_0x7768('0x7'));var ejs=require(_0x7768('0x8'));var fs=require('fs');var fs_extra=require(_0x7768('0x9'));var _=require(_0x7768('0xa'));var squel=require('squel');var crypto=require(_0x7768('0xb'));var jsforce=require(_0x7768('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7768('0x7'));var querystring=require(_0x7768('0xd'));var Papa=require(_0x7768('0xe'));var Redis=require(_0x7768('0xf'));var authService=require(_0x7768('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x7768('0x11'));var hardwareService=require(_0x7768('0x12'));var logger=require(_0x7768('0x13'))('api');var utils=require(_0x7768('0x14'));var config=require(_0x7768('0x15'));var licenseUtil=require(_0x7768('0x16'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x7768('0x17')];function respondWithStatusCode(_0x2b2fa4,_0x5173ba){_0x5173ba=_0x5173ba||0xcc;return function(_0x50af9a){if(_0x50af9a){return _0x2b2fa4[_0x7768('0x18')](_0x5173ba);}return _0x2b2fa4[_0x7768('0x19')](_0x5173ba)[_0x7768('0x1a')]();};}function respondWithResult(_0x24795a,_0x30a5f6){_0x30a5f6=_0x30a5f6||0xc8;return function(_0x2a9273){if(_0x2a9273){return _0x24795a[_0x7768('0x19')](_0x30a5f6)['json'](_0x2a9273);}};}function respondWithFilteredResult(_0x36888d,_0x1dd049){return function(_0x557f84){if(_0x557f84){var _0xad056f=typeof _0x1dd049[_0x7768('0x1b')]===_0x7768('0x1c')&&typeof _0x1dd049[_0x7768('0x1d')]===_0x7768('0x1c');var _0x389833=_0x557f84[_0x7768('0x1e')];var _0x4fe072=_0xad056f?0x0:_0x1dd049['offset'];var _0x488c27=_0xad056f?_0x557f84[_0x7768('0x1e')]:_0x1dd049['offset']+_0x1dd049[_0x7768('0x1d')];var _0x4b6cf8;if(_0x488c27>=_0x389833){_0x488c27=_0x389833;_0x4b6cf8=0xc8;}else{_0x4b6cf8=0xce;}_0x36888d['status'](_0x4b6cf8);return _0x36888d['set']('Content-Range',_0x4fe072+'-'+_0x488c27+'/'+_0x389833)['json'](_0x557f84);}return null;};}function patchUpdates(_0x16386c){return function(_0x5b22c2){try{jsonpatch[_0x7768('0x1f')](_0x5b22c2,_0x16386c,!![]);}catch(_0x4afd3b){return BPromise[_0x7768('0x20')](_0x4afd3b);}return _0x5b22c2[_0x7768('0x21')]();};}function saveUpdates(_0x4af37b,_0x83725e){return function(_0x3fa36e){if(_0x3fa36e){return _0x3fa36e['update'](_0x4af37b)[_0x7768('0x22')](function(_0x1a7f2a){return _0x1a7f2a;});}return null;};}function removeEntity(_0x425080,_0x48210){return function(_0x3d080b){if(_0x3d080b){return _0x3d080b[_0x7768('0x23')]()[_0x7768('0x22')](function(){var _0x23d9b6=_0x3d080b[_0x7768('0x24')]({'plain':!![]});var _0x214253='CustomReports';return db[_0x7768('0x25')][_0x7768('0x23')]({'where':{'type':_0x214253,'resourceId':_0x23d9b6['id']}})['then'](function(){return _0x3d080b;});})[_0x7768('0x22')](function(){_0x425080[_0x7768('0x19')](0xcc)[_0x7768('0x1a')]();});}};}function handleEntityNotFound(_0x2a2bd8,_0x5274fd){return function(_0x40a72f){if(!_0x40a72f){_0x2a2bd8[_0x7768('0x18')](0x194);}return _0x40a72f;};}function handleError(_0x3ca985,_0x497214){_0x497214=_0x497214||0x1f4;return function(_0x1bd3bc){logger[_0x7768('0x26')](_0x1bd3bc[_0x7768('0x27')]);if(_0x1bd3bc[_0x7768('0x28')]){delete _0x1bd3bc['name'];}_0x3ca985['status'](_0x497214)[_0x7768('0x29')](_0x1bd3bc);};}exports['index']=function(_0xfc87d3,_0x264631){var _0x34ef11={},_0x3b58e3={},_0xd27df2={'count':0x0,'rows':[]};var _0x189e8e=_[_0x7768('0x2a')](db[_0x7768('0x2b')][_0x7768('0x2c')],function(_0x50fc29){return{'name':_0x50fc29[_0x7768('0x2d')],'type':_0x50fc29[_0x7768('0x2e')][_0x7768('0x2f')]};});_0x3b58e3['model']=_[_0x7768('0x2a')](_0x189e8e,_0x7768('0x28'));_0x3b58e3[_0x7768('0x30')]=_['keys'](_0xfc87d3[_0x7768('0x30')]);_0x3b58e3[_0x7768('0x31')]=_['intersection'](_0x3b58e3[_0x7768('0x32')],_0x3b58e3[_0x7768('0x30')]);_0x34ef11[_0x7768('0x33')]=_[_0x7768('0x34')](_0x3b58e3[_0x7768('0x32')],qs[_0x7768('0x35')](_0xfc87d3[_0x7768('0x30')][_0x7768('0x35')]));_0x34ef11['attributes']=_0x34ef11[_0x7768('0x33')][_0x7768('0x36')]?_0x34ef11[_0x7768('0x33')]:_0x3b58e3[_0x7768('0x32')];if(!_0xfc87d3[_0x7768('0x30')][_0x7768('0x37')](_0x7768('0x38'))){_0x34ef11[_0x7768('0x1d')]=qs[_0x7768('0x1d')](_0xfc87d3['query'][_0x7768('0x1d')]);_0x34ef11[_0x7768('0x1b')]=qs[_0x7768('0x1b')](_0xfc87d3[_0x7768('0x30')][_0x7768('0x1b')]);}_0x34ef11[_0x7768('0x39')]=qs[_0x7768('0x3a')](_0xfc87d3[_0x7768('0x30')][_0x7768('0x3a')]);_0x34ef11[_0x7768('0x3b')]=qs['filters'](_['pick'](_0xfc87d3[_0x7768('0x30')],_0x3b58e3['filters']),_0x189e8e);if(_0xfc87d3[_0x7768('0x30')][_0x7768('0x3c')]){_0x34ef11[_0x7768('0x3b')]=_['merge'](_0x34ef11[_0x7768('0x3b')],{'$or':_[_0x7768('0x2a')](_0x189e8e,function(_0xd63b61){if(_0xd63b61[_0x7768('0x2e')]!=='VIRTUAL'){var _0x429e9f={};_0x429e9f[_0xd63b61['name']]={'$like':'%'+_0xfc87d3[_0x7768('0x30')][_0x7768('0x3c')]+'%'};return _0x429e9f;}})});}_0x34ef11=_[_0x7768('0x3d')]({},_0x34ef11,_0xfc87d3['options']);var _0x41ad82={'where':_0x34ef11[_0x7768('0x3b')]};return db[_0x7768('0x2b')]['count'](_0x41ad82)[_0x7768('0x22')](function(_0xca4e1a){_0xd27df2[_0x7768('0x1e')]=_0xca4e1a;if(_0xfc87d3['query']['includeAll']){_0x34ef11[_0x7768('0x3e')]=[{'all':!![]}];}return db[_0x7768('0x2b')][_0x7768('0x3f')](_0x34ef11);})['then'](function(_0x42fb0f){_0xd27df2['rows']=_0x42fb0f;return _0xd27df2;})[_0x7768('0x22')](respondWithFilteredResult(_0x264631,_0x34ef11))[_0x7768('0x40')](handleError(_0x264631,null));};exports['show']=function(_0xe816f8,_0x559156){var _0x467b6a={'raw':![],'where':{'id':_0xe816f8[_0x7768('0x41')]['id']}},_0x37f76b={};_0x37f76b[_0x7768('0x32')]=_[_0x7768('0x42')](db['AnalyticCustomReport'][_0x7768('0x2c')]);_0x37f76b[_0x7768('0x30')]=_[_0x7768('0x42')](_0xe816f8['query']);_0x37f76b[_0x7768('0x31')]=_[_0x7768('0x34')](_0x37f76b[_0x7768('0x32')],_0x37f76b[_0x7768('0x30')]);_0x467b6a['attributes']=_[_0x7768('0x34')](_0x37f76b[_0x7768('0x32')],qs[_0x7768('0x35')](_0xe816f8[_0x7768('0x30')][_0x7768('0x35')]));_0x467b6a['attributes']=_0x467b6a[_0x7768('0x33')]['length']?_0x467b6a[_0x7768('0x33')]:_0x37f76b[_0x7768('0x32')];if(_0xe816f8[_0x7768('0x30')][_0x7768('0x43')]){_0x467b6a['include']=[{'all':!![]}];}_0x467b6a=_[_0x7768('0x3d')]({},_0x467b6a,_0xe816f8['options']);return db['AnalyticCustomReport']['find'](_0x467b6a)[_0x7768('0x22')](handleEntityNotFound(_0x559156,null))['then'](respondWithResult(_0x559156,null))[_0x7768('0x40')](handleError(_0x559156,null));};exports[_0x7768('0x44')]=function(_0x7919a9,_0x398fc0){return db['AnalyticCustomReport']['create'](_0x7919a9['body'],{})[_0x7768('0x22')](function(_0x46e186){var _0x5380e4=_0x7919a9['user'][_0x7768('0x24')]({'plain':!![]});if(!_0x5380e4)throw new Error(_0x7768('0x45'));if(_0x5380e4[_0x7768('0x46')]===_0x7768('0x47')){var _0x31c8a5=_0x46e186[_0x7768('0x24')]({'plain':!![]});var _0x2f881f=_0x7768('0x48');return db['UserProfileSection'][_0x7768('0x49')]({'where':{'name':_0x2f881f,'userProfileId':_0x5380e4[_0x7768('0x4a')]},'raw':!![]})[_0x7768('0x22')](function(_0x56ca40){if(_0x56ca40&&_0x56ca40[_0x7768('0x4b')]===0x0){return db[_0x7768('0x25')][_0x7768('0x44')]({'name':_0x31c8a5[_0x7768('0x28')],'resourceId':_0x31c8a5['id'],'type':_0x7768('0x4c'),'sectionId':_0x56ca40['id']},{})[_0x7768('0x22')](function(){return _0x46e186;});}else{return _0x46e186;}})['catch'](function(_0x1feaf3){logger[_0x7768('0x26')](_0x7768('0x4d'),_0x1feaf3);throw _0x1feaf3;});}return _0x46e186;})[_0x7768('0x22')](respondWithResult(_0x398fc0,0xc9))['catch'](handleError(_0x398fc0,null));};exports[_0x7768('0x4e')]=function(_0x5c6301,_0x15a844){if(_0x5c6301[_0x7768('0x4f')]['id']){delete _0x5c6301[_0x7768('0x4f')]['id'];}return db[_0x7768('0x2b')][_0x7768('0x49')]({'where':{'id':_0x5c6301[_0x7768('0x41')]['id']}})[_0x7768('0x22')](handleEntityNotFound(_0x15a844,null))[_0x7768('0x22')](saveUpdates(_0x5c6301[_0x7768('0x4f')],null))[_0x7768('0x22')](respondWithResult(_0x15a844,null))[_0x7768('0x40')](handleError(_0x15a844,null));};exports['destroy']=function(_0x5acb6b,_0x38927a){return db[_0x7768('0x2b')][_0x7768('0x49')]({'where':{'id':_0x5acb6b[_0x7768('0x41')]['id']}})[_0x7768('0x22')](handleEntityNotFound(_0x38927a,null))['then'](removeEntity(_0x38927a,null))[_0x7768('0x40')](handleError(_0x38927a,null));};exports['preview']=function(_0x40adde,_0x4bf67b){var _0x5c9a88=0xa;var _0x5c00a9=['join',_0x7768('0x50'),_0x7768('0x51'),_0x7768('0x52')];var _0x11475d={'SUM':_0x7768('0x53'),'COUNT':_0x7768('0x54'),'COUNT DISTINCT':_0x7768('0x55'),'MAX':_0x7768('0x56'),'MIN':_0x7768('0x57'),'AVG':_0x7768('0x58'),'GROUP_CONCAT':_0x7768('0x59'),'GROUP_CONCAT ASC':_0x7768('0x5a'),'GROUP_CONCAT DESC':_0x7768('0x5b')};var _0x2e4c66={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x7768('0x5c'),'HOUR':_0x7768('0x5d'),'ROUND':_0x7768('0x5e'),'UNIX_TIMESTAMP':_0x7768('0x5f')};var _0x36f746=function(_0xc866b2){return!_[_0x7768('0x60')]([_0x7768('0x61'),_0x7768('0x62'),_0x7768('0x63'),_0x7768('0x64')],_0xc866b2);};var _0x2ac4ce=function(_0x4e888e){if(!_0x4e888e||!_0x4e888e[_0x7768('0x65')][_0x7768('0x36')]){return'';}for(var _0x3eba4d='(',_0x4369c0=0x0;_0x4369c0<_0x4e888e[_0x7768('0x65')]['length'];_0x4369c0+=0x1){_0x4369c0>0x0&&(_0x3eba4d+='\x20'+_0x4e888e['operator']+'\x20');_0x3eba4d+=_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x66')]?_0x2ac4ce(_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x66')]):_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x67')]+'\x20'+_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x68')]+(_0x36f746(_0x4e888e['rules'][_0x4369c0][_0x7768('0x68')])?'\x20'+_0x4e888e['rules'][_0x4369c0][_0x7768('0x69')]:'');}return _0x3eba4d+')';};var _0x36cfb3={'where':{'id':_0x40adde[_0x7768('0x41')]['id']}},_0x3b7d21,_0x8c54f4,_0x3337d1,_0x5753a0,_0x206337;_0x36cfb3=_['merge']({},_0x36cfb3,_0x40adde[_0x7768('0x6a')]);return db[_0x7768('0x2b')][_0x7768('0x49')](_0x36cfb3)[_0x7768('0x22')](function(_0x418a3f){if(_0x418a3f){_0x3b7d21=_0x418a3f;return _0x418a3f['getFields']();}return null;})[_0x7768('0x22')](function(_0x527a2e){if(_0x527a2e){if(!_0x527a2e[_0x7768('0x36')]){throw new db[(_0x7768('0x6b'))]['ValidationErrorItem'](_0x7768('0x6c'),0x193);}_0x8c54f4=_0x527a2e;return db[_0x7768('0x6d')][_0x7768('0x3f')]({'raw':!![]});}return null;})['then'](function(_0x1debe4){if(_0x1debe4){_0x3337d1=_[_0x7768('0x6e')](_0x1debe4,'id');var _0x5afd68;var _0x340b66=squel[_0x7768('0x6f')]();_0x340b66[_0x7768('0x70')](_0x3b7d21[_0x7768('0x71')]);for(var _0x258045=0x0;_0x258045<_0x8c54f4['length'];_0x258045+=0x1){_0x5afd68=_0x8c54f4[_0x258045][_0x7768('0x72')]?_0x3337d1[_0x8c54f4[_0x258045][_0x7768('0x72')]]['metric']:_0x8c54f4[_0x258045]['field'];_0x5afd68=_0x8c54f4[_0x258045][_0x7768('0x73')]?_[_0x7768('0x74')](_0x11475d[_0x8c54f4[_0x258045][_0x7768('0x73')]],'%s',_0x5afd68):_0x5afd68;_0x5afd68=_0x8c54f4[_0x258045][_0x7768('0x75')]?_[_0x7768('0x74')](_0x2e4c66[_0x8c54f4[_0x258045][_0x7768('0x75')]],'%s',_0x5afd68):_0x5afd68;if(_0x8c54f4[_0x258045]['groupBy']){_0x340b66[_0x7768('0x66')](_0x5afd68);}_0x8c54f4[_0x258045][_0x7768('0x76')]&&_0x340b66[_0x7768('0x39')](_0x5afd68,_0x8c54f4[_0x258045][_0x7768('0x76')]===_0x7768('0x77')?![]:!![]);_0x340b66[_0x7768('0x67')](_0x5afd68,_0x8c54f4[_0x258045][_0x7768('0x78')]||_0x5afd68);}if(_0x3b7d21['joins']){_0x3b7d21['joins']=JSON['parse'](_0x3b7d21[_0x7768('0x79')]);for(var _0x37e693=0x0;_0x37e693<_0x3b7d21[_0x7768('0x79')][_0x7768('0x36')];_0x37e693+=0x1){if(_0x3b7d21['joins'][_0x37e693]['type']&&_['includes'](_0x5c00a9,_0x3b7d21['joins'][_0x37e693][_0x7768('0x2e')])&&_0x3b7d21['joins'][_0x37e693][_0x7768('0x7a')]&&_0x3b7d21['joins'][_0x37e693]['foreignTable']&&_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7b')]){_0x340b66[_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x2e')]](_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7c')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3b7d21[_0x7768('0x71')],_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7a')],_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7c')],_0x3b7d21['joins'][_0x37e693][_0x7768('0x7b')]));}}}if(_0x3b7d21[_0x7768('0x7d')]){_0x3b7d21[_0x7768('0x7d')]=JSON['parse'](_0x3b7d21[_0x7768('0x7d')]);_0x340b66[_0x7768('0x3b')](_0x2ac4ce(_0x3b7d21[_0x7768('0x7d')][_0x7768('0x66')]));}_0x206337=_0x340b66[_0x7768('0x7e')]();_0x340b66[_0x7768('0x1d')](_0x5c9a88);_0x340b66[_0x7768('0x1b')](0x0);logger['debug'](_0x7768('0x7f'),_0x340b66[_0x7768('0x80')]());return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x340b66[_0x7768('0x80')](),{'type':dbH[_0x7768('0x81')][_0x7768('0x82')][_0x7768('0x83')]});}})[_0x7768('0x22')](respondWithResult(_0x4bf67b,null))[_0x7768('0x40')](handleError(_0x4bf67b,null));};function runReport(_0x1bc61a,_0x5db4b4,_0x3ea9d6){var _0x1db77d=_0x5db4b4[_0x7768('0x28')];var _0x8550b=0xa;var _0x52b0bc=['join',_0x7768('0x50'),_0x7768('0x51'),_0x7768('0x52')];var _0x4d9fef={'SUM':'SUM(%s)','COUNT':_0x7768('0x54'),'COUNT DISTINCT':_0x7768('0x55'),'MAX':_0x7768('0x56'),'MIN':_0x7768('0x57'),'AVG':_0x7768('0x58'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x7768('0x5a'),'GROUP_CONCAT DESC':_0x7768('0x5b')};var _0x518c17={'SEC_TO_TIME':_0x7768('0x84'),'DATE':'DATE(%s)','HOUR':_0x7768('0x5d'),'ROUND':_0x7768('0x5e'),'UNIX_TIMESTAMP':_0x7768('0x5f')};var _0x3613c3=function(_0x1fead7){return!_['includes']([_0x7768('0x61'),_0x7768('0x62'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x1fead7);};var _0x4a23fb=function(_0xb95232){if(!_0xb95232||!_0xb95232[_0x7768('0x65')]['length']){return'';}for(var _0x2d1e5e='(',_0x4750a9=0x0;_0x4750a9<_0xb95232[_0x7768('0x65')][_0x7768('0x36')];_0x4750a9+=0x1){_0x4750a9>0x0&&(_0x2d1e5e+='\x20'+_0xb95232[_0x7768('0x85')]+'\x20');_0x2d1e5e+=_0xb95232[_0x7768('0x65')][_0x4750a9]['group']?_0x4a23fb(_0xb95232[_0x7768('0x65')][_0x4750a9]['group']):_0xb95232['rules'][_0x4750a9][_0x7768('0x67')]+'\x20'+_0xb95232[_0x7768('0x65')][_0x4750a9][_0x7768('0x68')]+(_0x3613c3(_0xb95232[_0x7768('0x65')][_0x4750a9]['condition'])?'\x20'+_0xb95232[_0x7768('0x65')][_0x4750a9]['value']:'');}return _0x2d1e5e+')';};var _0x260ada={'where':{'id':_0x1bc61a['id']}},_0x20e1ca,_0x2f7f37,_0x593ffe,_0xc3ed31,_0x60932c;_0x260ada=_[_0x7768('0x3d')]({},_0x260ada,_0x3ea9d6);return db[_0x7768('0x2b')]['find'](_0x260ada)[_0x7768('0x22')](function(_0x3749c1){if(_0x3749c1){_0x20e1ca=_0x3749c1;return _0x3749c1['getFields']();}return null;})[_0x7768('0x22')](function(_0x127188){if(_0x127188){if(!_0x127188[_0x7768('0x36')]){throw new db[(_0x7768('0x6b'))][(_0x7768('0x86'))](_0x7768('0x6c'),0x193);}_0x2f7f37=_0x127188;return db['AnalyticMetric'][_0x7768('0x3f')]({'raw':!![]});}return null;})['then'](function(_0x221a5a){if(_0x221a5a){_0x593ffe=_[_0x7768('0x6e')](_0x221a5a,'id');var _0x385919;var _0x1c264d=squel[_0x7768('0x6f')]();_0x1c264d[_0x7768('0x70')](_0x20e1ca['table']);for(var _0x5c3e45=0x0;_0x5c3e45<_0x2f7f37[_0x7768('0x36')];_0x5c3e45+=0x1){_0x385919=_0x2f7f37[_0x5c3e45]['MetricId']?_0x593ffe[_0x2f7f37[_0x5c3e45][_0x7768('0x72')]][_0x7768('0x87')]:_0x2f7f37[_0x5c3e45][_0x7768('0x67')];_0x385919=_0x2f7f37[_0x5c3e45][_0x7768('0x73')]?_[_0x7768('0x74')](_0x4d9fef[_0x2f7f37[_0x5c3e45][_0x7768('0x73')]],'%s',_0x385919):_0x385919;_0x385919=_0x2f7f37[_0x5c3e45][_0x7768('0x75')]?_[_0x7768('0x74')](_0x518c17[_0x2f7f37[_0x5c3e45][_0x7768('0x75')]],'%s',_0x385919):_0x385919;if(_0x2f7f37[_0x5c3e45][_0x7768('0x88')]){_0x1c264d[_0x7768('0x66')](_0x385919);}_0x2f7f37[_0x5c3e45][_0x7768('0x76')]&&_0x1c264d['order'](_0x385919,_0x2f7f37[_0x5c3e45][_0x7768('0x76')]==='DESC'?![]:!![]);_0x1c264d[_0x7768('0x67')](_0x385919,_0x2f7f37[_0x5c3e45]['alias']||_0x385919);}if(_0x20e1ca[_0x7768('0x79')]){_0x20e1ca['joins']=JSON[_0x7768('0x89')](_0x20e1ca[_0x7768('0x79')]);for(var _0x59904f=0x0;_0x59904f<_0x20e1ca[_0x7768('0x79')][_0x7768('0x36')];_0x59904f+=0x1){if(_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x2e')]&&_[_0x7768('0x60')](_0x52b0bc,_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x2e')])&&_0x20e1ca['joins'][_0x59904f][_0x7768('0x7a')]&&_0x20e1ca['joins'][_0x59904f]['foreignTable']&&_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7b')]){_0x1c264d[_0x20e1ca[_0x7768('0x79')][_0x59904f]['type']](_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7c')],null,util[_0x7768('0x75')](_0x7768('0x8a'),_0x20e1ca[_0x7768('0x71')],_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7a')],_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7c')],_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7b')]));}}}if(_0x20e1ca[_0x7768('0x7d')]){_0x20e1ca[_0x7768('0x7d')]=JSON[_0x7768('0x89')](_0x20e1ca['conditions']);_0x1c264d[_0x7768('0x3b')](_0x4a23fb(_0x20e1ca[_0x7768('0x7d')][_0x7768('0x66')]));}_0x60932c=_0x1c264d[_0x7768('0x7e')]();_0x1c264d[_0x7768('0x1d')](_0x8550b);_0x1c264d['offset'](0x0);return;}})['then'](function(){if(_0x5db4b4[_0x7768('0x8b')]===_0x7768('0x8c')){return null;}var _0x37b414=_['merge'](_0x5db4b4,{'name':_0x5db4b4['fullPath']||_0x5db4b4[_0x7768('0x28')]||_0x20e1ca['name'],'basename':_0x1db77d,'savename':util[_0x7768('0x75')](_0x7768('0x8d'),_0x5db4b4['name']||_0x20e1ca[_0x7768('0x28')],require(_0x7768('0x8e'))[_0x7768('0x8f')](0x4),_0x5db4b4[_0x7768('0x8b')]||_0x7768('0x90')),'reportId':_0x20e1ca['id'],'reportType':_0x7768('0x91')});return db[_0x7768('0x92')][_0x7768('0x44')](_0x37b414,{'raw':!![]});})[_0x7768('0x22')](function(_0xbbd9e6){if(_0x20e1ca[_0x7768('0x71')]===_0x7768('0x93')){_0x60932c[_0x7768('0x3b')](_0x20e1ca[_0x7768('0x71')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x5db4b4[_0x7768('0x94')],_0x5db4b4[_0x7768('0x95')]);}else{_0x60932c[_0x7768('0x3b')](_0x20e1ca[_0x7768('0x71')]+_0x7768('0x96'),_0x5db4b4[_0x7768('0x94')],_0x5db4b4['endDate']);}if(_0xbbd9e6){logger[_0x7768('0x97')](_0x7768('0x98'),_0x60932c[_0x7768('0x80')]());require(_0x7768('0x99'))['fork'](path[_0x7768('0x9a')](__dirname,_0x7768('0x9b'),_0xbbd9e6[_0x7768('0x8b')]),[_0xbbd9e6['id'],_0x60932c[_0x7768('0x80')](),path[_0x7768('0x9a')](__dirname,_0x7768('0x9c'),_0xbbd9e6[_0x7768('0x9d')]),_0x1db77d]);return _0xbbd9e6;}else{var _0x4bd5ac=squel[_0x7768('0x6f')]();_0x4bd5ac['from']('('+_0x60932c['toString']()+')',_0x7768('0x9e'));_0x4bd5ac[_0x7768('0x67')](_0x7768('0x9f'),_0x7768('0x1e'));_0x60932c[_0x7768('0x1d')](_0x5db4b4['limit']||_0x8550b);_0x60932c[_0x7768('0x1b')](_0x5db4b4[_0x7768('0x1b')]||0x0);return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x4bd5ac[_0x7768('0x80')](),{'type':dbH[_0x7768('0x81')]['QueryTypes']['SELECT']})[_0x7768('0x22')](function(_0x1e2db1){if(!_0x1e2db1[_0x7768('0x36')]){_0xc3ed31=0x0;}else{_0xc3ed31=_0x1e2db1[0x0][_0x7768('0x1e')]||0x0;}return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x60932c['toString'](),{'type':dbH[_0x7768('0x81')][_0x7768('0x82')][_0x7768('0x83')]});})['then'](function(_0x258c53){return{'rows':_0x258c53||[],'count':_0xc3ed31};});}});}exports['run']=function(_0x34f927,_0xd11c33){return runReport(_0x34f927[_0x7768('0x41')],_0x34f927['query'],_0x34f927[_0x7768('0x6a')])[_0x7768('0x22')](respondWithResult(_0xd11c33,null))[_0x7768('0x40')](handleError(_0xd11c33,null));};exports[_0x7768('0xa0')]=runReport;exports[_0x7768('0x30')]=function(_0x4ce28d,_0x342741){var _0x283180=0xa;var _0xbf6c23=[_0x7768('0x9a'),_0x7768('0x50'),_0x7768('0x51'),'cross_join'];var _0x24b72a={'SUM':_0x7768('0x53'),'COUNT':_0x7768('0x54'),'COUNT DISTINCT':_0x7768('0x55'),'MAX':_0x7768('0x56'),'MIN':'MIN(%s)','AVG':_0x7768('0x58'),'GROUP_CONCAT':_0x7768('0x59'),'GROUP_CONCAT ASC':_0x7768('0x5a'),'GROUP_CONCAT DESC':_0x7768('0x5b')};var _0x22d25f={'SEC_TO_TIME':_0x7768('0x84'),'DATE':_0x7768('0x5c'),'HOUR':'HOUR(%s)','ROUND':_0x7768('0x5e'),'UNIX_TIMESTAMP':_0x7768('0x5f')};var _0x2c0589=function(_0x442e22){return!_[_0x7768('0x60')]([_0x7768('0x61'),'IS\x20NOT\x20NULL',_0x7768('0x63'),_0x7768('0x64')],_0x442e22);};var _0x5cecb2=function(_0x424a87){if(!_0x424a87||!_0x424a87[_0x7768('0x65')][_0x7768('0x36')]){return'';}for(var _0xa046a6='(',_0x356c01=0x0;_0x356c01<_0x424a87['rules']['length'];_0x356c01+=0x1){_0x356c01>0x0&&(_0xa046a6+='\x20'+_0x424a87[_0x7768('0x85')]+'\x20');_0xa046a6+=_0x424a87[_0x7768('0x65')][_0x356c01]['group']?_0x5cecb2(_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x66')]):_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x67')]+'\x20'+_0x424a87['rules'][_0x356c01][_0x7768('0x68')]+(_0x2c0589(_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x68')])?'\x20'+_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x69')]:'');}return _0xa046a6+')';};var _0x464a89={'where':{'id':_0x4ce28d['params']['id']}},_0x4cebb7,_0x3822a3,_0x151157,_0x5c7e1b,_0x423f90;_0x464a89=_[_0x7768('0x3d')]({},_0x464a89,_0x4ce28d[_0x7768('0x6a')]);return db[_0x7768('0x2b')][_0x7768('0x49')](_0x464a89)[_0x7768('0x22')](function(_0x43cb6d){if(_0x43cb6d){_0x4cebb7=_0x43cb6d;return _0x43cb6d[_0x7768('0xa1')]();}return null;})['then'](function(_0x3b9191){if(_0x3b9191){if(!_0x3b9191['length']){throw new db[(_0x7768('0x6b'))][(_0x7768('0x86'))](_0x7768('0x6c'),0x193);}_0x3822a3=_0x3b9191;return db[_0x7768('0x6d')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x3e2a09){if(_0x3e2a09){_0x151157=_[_0x7768('0x6e')](_0x3e2a09,'id');var _0x300775;var _0x1a1b86=squel[_0x7768('0x6f')]();_0x1a1b86[_0x7768('0x70')](_0x4cebb7[_0x7768('0x71')]);for(var _0xd8795f=0x0;_0xd8795f<_0x3822a3[_0x7768('0x36')];_0xd8795f+=0x1){_0x300775=_0x3822a3[_0xd8795f][_0x7768('0x72')]?_0x151157[_0x3822a3[_0xd8795f][_0x7768('0x72')]][_0x7768('0x87')]:_0x3822a3[_0xd8795f][_0x7768('0x67')];_0x300775=_0x3822a3[_0xd8795f][_0x7768('0x73')]?_[_0x7768('0x74')](_0x24b72a[_0x3822a3[_0xd8795f][_0x7768('0x73')]],'%s',_0x300775):_0x300775;_0x300775=_0x3822a3[_0xd8795f][_0x7768('0x75')]?_[_0x7768('0x74')](_0x22d25f[_0x3822a3[_0xd8795f][_0x7768('0x75')]],'%s',_0x300775):_0x300775;if(_0x3822a3[_0xd8795f]['groupBy']){_0x1a1b86[_0x7768('0x66')](_0x300775);}_0x3822a3[_0xd8795f][_0x7768('0x76')]&&_0x1a1b86[_0x7768('0x39')](_0x300775,_0x3822a3[_0xd8795f][_0x7768('0x76')]==='DESC'?![]:!![]);_0x1a1b86[_0x7768('0x67')](_0x300775,_0x3822a3[_0xd8795f]['alias']||_0x300775);}if(_0x4cebb7[_0x7768('0x79')]){_0x4cebb7[_0x7768('0x79')]=JSON['parse'](_0x4cebb7[_0x7768('0x79')]);for(var _0x22cdfc=0x0;_0x22cdfc<_0x4cebb7[_0x7768('0x79')]['length'];_0x22cdfc+=0x1){if(_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x2e')]&&_['includes'](_0xbf6c23,_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['type'])&&_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7a')]&&_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7c')]&&_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['foreignKey']){_0x1a1b86[_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x2e')]](_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7c')],null,util[_0x7768('0x75')](_0x7768('0x8a'),_0x4cebb7[_0x7768('0x71')],_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['parentKey'],_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['foreignTable'],_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7b')]));}}}if(_0x4cebb7[_0x7768('0x7d')]){_0x4cebb7[_0x7768('0x7d')]=JSON[_0x7768('0x89')](_0x4cebb7[_0x7768('0x7d')]);_0x1a1b86[_0x7768('0x3b')](_0x5cecb2(_0x4cebb7['conditions']['group']));}_0x423f90=_0x1a1b86[_0x7768('0x7e')]();_0x1a1b86[_0x7768('0x1d')](_0x283180);_0x1a1b86[_0x7768('0x1b')](0x0);logger[_0x7768('0xa2')](_0x7768('0x7f'),_0x1a1b86['toString']());return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x1a1b86[_0x7768('0x80')](),{'type':dbH[_0x7768('0x81')][_0x7768('0x82')][_0x7768('0x83')]});}})[_0x7768('0x22')](function(){return{'sql':_0x423f90[_0x7768('0x80')]()};})[_0x7768('0x22')](respondWithResult(_0x342741,null))['catch'](handleError(_0x342741,null));};
\ No newline at end of file
index 3bab273..5a49ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65a4=['moment','bluebird','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','util','../../config/logger'];(function(_0x17b139,_0x44ca66){var _0x19a5a4=function(_0x1019c4){while(--_0x1019c4){_0x17b139['push'](_0x17b139['shift']());}};_0x19a5a4(++_0x44ca66);}(_0x65a4,0x1ae));var _0x465a=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x65a4[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require(_0x465a('0x0'));var logger=require(_0x465a('0x1'))('api');var moment=require(_0x465a('0x2'));var BPromise=require(_0x465a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x465a('0x4'));var rimraf=require(_0x465a('0x5'));var config=require(_0x465a('0x6'));var attributes=require(_0x465a('0x7'));module[_0x465a('0x8')]=function(_0x1208bc,_0x3198fd){return _0x1208bc[_0x465a('0x9')](_0x465a('0xa'),attributes,{'tableName':_0x465a('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ca6=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./analyticCustomReport.attributes','exports'];(function(_0x1dfa63,_0x362bd4){var _0x26f2a9=function(_0x31cc52){while(--_0x31cc52){_0x1dfa63['push'](_0x1dfa63['shift']());}};_0x26f2a9(++_0x362bd4);}(_0x8ca6,0x168));var _0x68ca=function(_0x355f51,_0xfed1b0){_0x355f51=_0x355f51-0x0;var _0x1d59b7=_0x8ca6[_0x355f51];return _0x1d59b7;};'use strict';var _=require(_0x68ca('0x0'));var util=require('util');var logger=require(_0x68ca('0x1'))(_0x68ca('0x2'));var moment=require(_0x68ca('0x3'));var BPromise=require(_0x68ca('0x4'));var rp=require(_0x68ca('0x5'));var fs=require('fs');var path=require(_0x68ca('0x6'));var rimraf=require(_0x68ca('0x7'));var config=require('../../config/environment');var attributes=require(_0x68ca('0x8'));module[_0x68ca('0x9')]=function(_0x56e304,_0x814d4b){return _0x56e304['define']('AnalyticCustomReport',attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f06d74..b3cb738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ab1=['client','http','request','then','info','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','AnalyticCustomReport,\x20%s,\x20%s','message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x44a9f8,_0x54c90f){var _0x3a8546=function(_0x2dcbd9){while(--_0x2dcbd9){_0x44a9f8['push'](_0x44a9f8['shift']());}};_0x3a8546(++_0x54c90f);}(_0x3ab1,0xb4));var _0x13ab=function(_0x4c2a19,_0xbe609f){_0x4c2a19=_0x4c2a19-0x0;var _0x2bfbe3=_0x3ab1[_0x4c2a19];return _0x2bfbe3;};'use strict';var _=require(_0x13ab('0x0'));var util=require(_0x13ab('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x13ab('0x2'));var fs=require('fs');var Redis=require(_0x13ab('0x3'));var db=require(_0x13ab('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x13ab('0x5'))(_0x13ab('0x6'));var config=require(_0x13ab('0x7'));var jayson=require(_0x13ab('0x8'));var client=jayson[_0x13ab('0x9')][_0x13ab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x191285,_0x5d7d27,_0x2fd4fb){return new BPromise(function(_0x4190a1,_0x477c6a){return client[_0x13ab('0xb')](_0x191285,_0x2fd4fb)[_0x13ab('0xc')](function(_0x153483){logger[_0x13ab('0xd')]('AnalyticCustomReport,\x20%s,\x20%s',_0x5d7d27,_0x13ab('0xe'));logger[_0x13ab('0xf')](_0x13ab('0x10'),_0x5d7d27,_0x13ab('0xe'),JSON['stringify'](_0x153483));if(_0x153483[_0x13ab('0x11')]){if(_0x153483['error']['code']===0x1f4){logger['error'](_0x13ab('0x12'),_0x5d7d27,_0x153483[_0x13ab('0x11')][_0x13ab('0x13')]);return _0x477c6a(_0x153483['error']['message']);}logger['error'](_0x13ab('0x12'),_0x5d7d27,_0x153483[_0x13ab('0x11')][_0x13ab('0x13')]);return _0x4190a1(_0x153483[_0x13ab('0x11')][_0x13ab('0x13')]);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x5d7d27,_0x13ab('0xe'));_0x4190a1(_0x153483[_0x13ab('0x14')][_0x13ab('0x13')]);}})['catch'](function(_0x522252){logger[_0x13ab('0x11')](_0x13ab('0x12'),_0x5d7d27,_0x522252);_0x477c6a(_0x522252);});});}
\ No newline at end of file
+var _0x36bf=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3c9268,_0x1a0c1f){var _0x4c62e5=function(_0x1d79c0){while(--_0x1d79c0){_0x3c9268['push'](_0x3c9268['shift']());}};_0x4c62e5(++_0x1a0c1f);}(_0x36bf,0x17a));var _0xf36b=function(_0x3f7176,_0xf060f5){_0x3f7176=_0x3f7176-0x0;var _0x3783a0=_0x36bf[_0x3f7176];return _0x3783a0;};'use strict';var _=require(_0xf36b('0x0'));var util=require(_0xf36b('0x1'));var moment=require(_0xf36b('0x2'));var BPromise=require(_0xf36b('0x3'));var rs=require(_0xf36b('0x4'));var fs=require('fs');var Redis=require(_0xf36b('0x5'));var db=require(_0xf36b('0x6'))['db'];var utils=require(_0xf36b('0x7'));var logger=require('../../config/logger')(_0xf36b('0x8'));var config=require(_0xf36b('0x9'));var jayson=require(_0xf36b('0xa'));var client=jayson[_0xf36b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14a70d,_0x45eb39,_0x3c0d33){return new BPromise(function(_0xca133d,_0x3d54a5){return client[_0xf36b('0xc')](_0x14a70d,_0x3c0d33)[_0xf36b('0xd')](function(_0x58d100){logger[_0xf36b('0xe')](_0xf36b('0xf'),_0x45eb39,_0xf36b('0x10'));logger['debug'](_0xf36b('0x11'),_0x45eb39,_0xf36b('0x10'),JSON[_0xf36b('0x12')](_0x58d100));if(_0x58d100[_0xf36b('0x13')]){if(_0x58d100[_0xf36b('0x13')][_0xf36b('0x14')]===0x1f4){logger[_0xf36b('0x13')](_0xf36b('0xf'),_0x45eb39,_0x58d100[_0xf36b('0x13')][_0xf36b('0x15')]);return _0x3d54a5(_0x58d100[_0xf36b('0x13')][_0xf36b('0x15')]);}logger[_0xf36b('0x13')](_0xf36b('0xf'),_0x45eb39,_0x58d100[_0xf36b('0x13')][_0xf36b('0x15')]);return _0xca133d(_0x58d100['error'][_0xf36b('0x15')]);}else{logger[_0xf36b('0xe')](_0xf36b('0xf'),_0x45eb39,_0xf36b('0x10'));_0xca133d(_0x58d100[_0xf36b('0x16')]['message']);}})[_0xf36b('0x17')](function(_0x1dc554){logger[_0xf36b('0x13')](_0xf36b('0xf'),_0x45eb39,_0x1dc554);_0x3d54a5(_0x1dc554);});});}
\ No newline at end of file
index dbcce9c..4958b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7f0=['post','create','update','delete','/:id','destroy','exports','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','show','/:id/preview','/:id/run','run','/:id/query'];(function(_0x429e41,_0x26cf44){var _0x285dd1=function(_0x5631fe){while(--_0x5631fe){_0x429e41['push'](_0x429e41['shift']());}};_0x285dd1(++_0x26cf44);}(_0xe7f0,0xc4));var _0x0e7f=function(_0x10d0f0,_0x1eba3d){_0x10d0f0=_0x10d0f0-0x0;var _0x93e308=_0xe7f0[_0x10d0f0];return _0x93e308;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0e7f('0x0'));var router=express[_0x0e7f('0x1')]();var fs_extra=require(_0x0e7f('0x2'));var auth=require(_0x0e7f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x0e7f('0x4'));var controller=require(_0x0e7f('0x5'));router[_0x0e7f('0x6')]('/',auth[_0x0e7f('0x7')](),controller[_0x0e7f('0x8')]);router[_0x0e7f('0x6')]('/:id',auth[_0x0e7f('0x7')](),controller[_0x0e7f('0x9')]);router['get'](_0x0e7f('0xa'),auth[_0x0e7f('0x7')](),controller['preview']);router[_0x0e7f('0x6')](_0x0e7f('0xb'),auth[_0x0e7f('0x7')](),controller[_0x0e7f('0xc')]);router[_0x0e7f('0x6')](_0x0e7f('0xd'),auth[_0x0e7f('0x7')](),controller['query']);router[_0x0e7f('0xe')]('/',auth['isAuthenticated'](),controller[_0x0e7f('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0e7f('0x10')]);router[_0x0e7f('0x11')](_0x0e7f('0x12'),auth['isAuthenticated'](),controller[_0x0e7f('0x13')]);module[_0x0e7f('0x14')]=router;
\ No newline at end of file
+var _0x43c1=['preview','/:id/run','run','/:id/query','query','post','create','update','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','/:id/preview'];(function(_0x1809c5,_0x46cabc){var _0x5254a4=function(_0xd1d319){while(--_0xd1d319){_0x1809c5['push'](_0x1809c5['shift']());}};_0x5254a4(++_0x46cabc);}(_0x43c1,0x163));var _0x143c=function(_0x4c6f20,_0x41a475){_0x4c6f20=_0x4c6f20-0x0;var _0x4812c9=_0x43c1[_0x4c6f20];return _0x4812c9;};'use strict';var multer=require(_0x143c('0x0'));var util=require(_0x143c('0x1'));var path=require(_0x143c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x143c('0x3')]();var fs_extra=require(_0x143c('0x4'));var auth=require(_0x143c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x143c('0x6'));var controller=require(_0x143c('0x7'));router[_0x143c('0x8')]('/',auth[_0x143c('0x9')](),controller[_0x143c('0xa')]);router[_0x143c('0x8')](_0x143c('0xb'),auth[_0x143c('0x9')](),controller['show']);router[_0x143c('0x8')](_0x143c('0xc'),auth[_0x143c('0x9')](),controller[_0x143c('0xd')]);router[_0x143c('0x8')](_0x143c('0xe'),auth[_0x143c('0x9')](),controller[_0x143c('0xf')]);router['get'](_0x143c('0x10'),auth[_0x143c('0x9')](),controller[_0x143c('0x11')]);router[_0x143c('0x12')]('/',auth[_0x143c('0x9')](),controller[_0x143c('0x13')]);router['put'](_0x143c('0xb'),auth['isAuthenticated'](),controller[_0x143c('0x14')]);router[_0x143c('0x15')]('/:id',auth[_0x143c('0x9')](),controller['destroy']);module[_0x143c('0x16')]=router;
\ No newline at end of file
index ecb1595..7c42f34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['exports','STRING','TEXT','sequelize'];(function(_0x5bff0,_0x20716d){var _0x3ead2e=function(_0x14f592){while(--_0x14f592){_0x5bff0['push'](_0x5bff0['shift']());}};_0x3ead2e(++_0x20716d);}(_0x5075,0x73));var _0x5507=function(_0x4af42d,_0x226c6d){_0x4af42d=_0x4af42d-0x0;var _0x14b54f=_0x5075[_0x4af42d];return _0x14b54f;};'use strict';var Sequelize=require(_0x5507('0x0'));module[_0x5507('0x1')]={'name':{'type':Sequelize[_0x5507('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5507('0x2')]},'parent':{'type':Sequelize[_0x5507('0x2')]},'table':{'type':Sequelize[_0x5507('0x2')]},'conditions':{'type':Sequelize[_0x5507('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xabce=['exports','STRING','TEXT','sequelize'];(function(_0x4f9e2b,_0x393590){var _0x5e223b=function(_0x3cb751){while(--_0x3cb751){_0x4f9e2b['push'](_0x4f9e2b['shift']());}};_0x5e223b(++_0x393590);}(_0xabce,0x103));var _0xeabc=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0xabce[_0x543084];return _0x306a57;};'use strict';var Sequelize=require(_0xeabc('0x0'));module[_0xeabc('0x1')]={'name':{'type':Sequelize[_0xeabc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xeabc('0x2')]},'parent':{'type':Sequelize[_0xeabc('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xeabc('0x3')]}};
\ No newline at end of file
index 89986b7..4a13ceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','include','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','find','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','select','table','MetricId','metric','field','function','replace','format','groupBy','order','orderBy','DESC','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','sequelize','QueryTypes','right_join','SEC_TO_TIME(%s)','IS\x20EMPTY','Sequelize','keyBy','from','alias','output','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','COUNT(*)','SELECT','run','runReport','MIN(%s)','debug','eml-format','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','DefaultReports','name','map'];(function(_0x474e07,_0x223d57){var _0x53f32b=function(_0xbcf040){while(--_0xbcf040){_0x474e07['push'](_0x474e07['shift']());}};_0x53f32b(++_0x223d57);}(_0x2675,0x75));var _0x5267=function(_0x28af04,_0xde7ae5){_0x28af04=_0x28af04-0x0;var _0x48ad3e=_0x2675[_0x28af04];return _0x48ad3e;};'use strict';var emlformat=require(_0x5267('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5267('0x1'));var moment=require(_0x5267('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x5267('0x3'));var util=require(_0x5267('0x4'));var path=require('path');var sox=require(_0x5267('0x5'));var csv=require(_0x5267('0x6'));var ejs=require(_0x5267('0x7'));var fs=require('fs');var fs_extra=require(_0x5267('0x8'));var _=require(_0x5267('0x9'));var squel=require(_0x5267('0xa'));var crypto=require('crypto');var jsforce=require(_0x5267('0xb'));var deskjs=require(_0x5267('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5267('0xd'));var Papa=require('papaparse');var Redis=require(_0x5267('0xe'));var authService=require(_0x5267('0xf'));var qs=require(_0x5267('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5267('0x11'));var logger=require('../../config/logger')(_0x5267('0x12'));var utils=require('../../config/utils');var config=require(_0x5267('0x13'));var licenseUtil=require(_0x5267('0x14'));var db=require(_0x5267('0x15'))['db'];var dbH=require(_0x5267('0x15'))[_0x5267('0x16')];function respondWithStatusCode(_0x1171b9,_0x20785c){_0x20785c=_0x20785c||0xcc;return function(_0x36dc17){if(_0x36dc17){return _0x1171b9[_0x5267('0x17')](_0x20785c);}return _0x1171b9[_0x5267('0x18')](_0x20785c)[_0x5267('0x19')]();};}function respondWithResult(_0x29349a,_0x3e2bab){_0x3e2bab=_0x3e2bab||0xc8;return function(_0x548040){if(_0x548040){return _0x29349a['status'](_0x3e2bab)[_0x5267('0x1a')](_0x548040);}};}function respondWithFilteredResult(_0x40d897,_0x38a147){return function(_0x3f5344){if(_0x3f5344){var _0x46b2c2=typeof _0x38a147[_0x5267('0x1b')]===_0x5267('0x1c')&&typeof _0x38a147[_0x5267('0x1d')]===_0x5267('0x1c');var _0xb1c97a=_0x3f5344[_0x5267('0x1e')];var _0x1ab03=_0x46b2c2?0x0:_0x38a147['offset'];var _0x18f32e=_0x46b2c2?_0x3f5344[_0x5267('0x1e')]:_0x38a147['offset']+_0x38a147[_0x5267('0x1d')];var _0x56733e;if(_0x18f32e>=_0xb1c97a){_0x18f32e=_0xb1c97a;_0x56733e=0xc8;}else{_0x56733e=0xce;}_0x40d897[_0x5267('0x18')](_0x56733e);return _0x40d897[_0x5267('0x1f')](_0x5267('0x20'),_0x1ab03+'-'+_0x18f32e+'/'+_0xb1c97a)[_0x5267('0x1a')](_0x3f5344);}return null;};}function patchUpdates(_0x5ca9c6){return function(_0x4dd637){try{jsonpatch[_0x5267('0x21')](_0x4dd637,_0x5ca9c6,!![]);}catch(_0x5aebdd){return BPromise[_0x5267('0x22')](_0x5aebdd);}return _0x4dd637[_0x5267('0x23')]();};}function saveUpdates(_0x3b53ac,_0x56dd95){return function(_0x499f19){if(_0x499f19){return _0x499f19['update'](_0x3b53ac)['then'](function(_0x5ea6a6){return _0x5ea6a6;});}return null;};}function removeEntity(_0x26c7f8,_0x399e64){return function(_0x2d761d){if(_0x2d761d){return _0x2d761d[_0x5267('0x24')]()[_0x5267('0x25')](function(){var _0x40d1be=_0x2d761d[_0x5267('0x26')]({'plain':!![]});var _0x220e03=_0x5267('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x220e03,'resourceId':_0x40d1be['id']}})[_0x5267('0x25')](function(){return _0x2d761d;});})[_0x5267('0x25')](function(){_0x26c7f8['status'](0xcc)[_0x5267('0x19')]();});}};}function handleEntityNotFound(_0x52504e,_0x4d7c2a){return function(_0x43e7e7){if(!_0x43e7e7){_0x52504e[_0x5267('0x17')](0x194);}return _0x43e7e7;};}function handleError(_0x1f33b7,_0x2d2ace){_0x2d2ace=_0x2d2ace||0x1f4;return function(_0x33c431){logger['error'](_0x33c431['stack']);if(_0x33c431[_0x5267('0x28')]){delete _0x33c431[_0x5267('0x28')];}_0x1f33b7[_0x5267('0x18')](_0x2d2ace)['send'](_0x33c431);};}exports['index']=function(_0xbe7922,_0x3ef2a8){var _0x1fa725={},_0x5bec7e={},_0x59b091={'count':0x0,'rows':[]};var _0x2249a1=_[_0x5267('0x29')](db[_0x5267('0x2a')][_0x5267('0x2b')],function(_0x5bbb83){return{'name':_0x5bbb83[_0x5267('0x2c')],'type':_0x5bbb83[_0x5267('0x2d')][_0x5267('0x2e')]};});_0x5bec7e[_0x5267('0x2f')]=_[_0x5267('0x29')](_0x2249a1,_0x5267('0x28'));_0x5bec7e[_0x5267('0x30')]=_[_0x5267('0x31')](_0xbe7922['query']);_0x5bec7e['filters']=_[_0x5267('0x32')](_0x5bec7e['model'],_0x5bec7e[_0x5267('0x30')]);_0x1fa725[_0x5267('0x33')]=_[_0x5267('0x32')](_0x5bec7e[_0x5267('0x2f')],qs['fields'](_0xbe7922[_0x5267('0x30')][_0x5267('0x34')]));_0x1fa725[_0x5267('0x33')]=_0x1fa725[_0x5267('0x33')][_0x5267('0x35')]?_0x1fa725[_0x5267('0x33')]:_0x5bec7e[_0x5267('0x2f')];if(!_0xbe7922[_0x5267('0x30')]['hasOwnProperty'](_0x5267('0x36'))){_0x1fa725['limit']=qs[_0x5267('0x1d')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1d')]);_0x1fa725[_0x5267('0x1b')]=qs[_0x5267('0x1b')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1b')]);}_0x1fa725['order']=qs[_0x5267('0x37')](_0xbe7922[_0x5267('0x30')][_0x5267('0x37')]);_0x1fa725[_0x5267('0x38')]=qs[_0x5267('0x39')](_[_0x5267('0x3a')](_0xbe7922[_0x5267('0x30')],_0x5bec7e['filters']),_0x2249a1);if(_0xbe7922[_0x5267('0x30')]['filter']){_0x1fa725[_0x5267('0x38')]=_['merge'](_0x1fa725['where'],{'$or':_['map'](_0x2249a1,function(_0x46bfcc){if(_0x46bfcc['type']!==_0x5267('0x3b')){var _0x146476={};_0x146476[_0x46bfcc[_0x5267('0x28')]]={'$like':'%'+_0xbe7922[_0x5267('0x30')]['filter']+'%'};return _0x146476;}})});}_0x1fa725=_[_0x5267('0x3c')]({},_0x1fa725,_0xbe7922[_0x5267('0x3d')]);var _0x588edf={'where':_0x1fa725['where']};return db[_0x5267('0x2a')]['count'](_0x588edf)[_0x5267('0x25')](function(_0x1cf94a){_0x59b091[_0x5267('0x1e')]=_0x1cf94a;if(_0xbe7922[_0x5267('0x30')][_0x5267('0x3e')]){_0x1fa725[_0x5267('0x3f')]=[{'all':!![]}];}return db[_0x5267('0x2a')]['findAll'](_0x1fa725);})['then'](function(_0x28ea4a){_0x59b091['rows']=_0x28ea4a;return _0x59b091;})[_0x5267('0x25')](respondWithFilteredResult(_0x3ef2a8,_0x1fa725))[_0x5267('0x40')](handleError(_0x3ef2a8,null));};exports['show']=function(_0x1fa925,_0xc764cd){var _0x299a13={'raw':!![],'where':{'id':_0x1fa925[_0x5267('0x41')]['id']}},_0x161fed={};_0x161fed[_0x5267('0x2f')]=_[_0x5267('0x31')](db[_0x5267('0x2a')][_0x5267('0x2b')]);_0x161fed['query']=_[_0x5267('0x31')](_0x1fa925[_0x5267('0x30')]);_0x161fed[_0x5267('0x39')]=_[_0x5267('0x32')](_0x161fed[_0x5267('0x2f')],_0x161fed['query']);_0x299a13[_0x5267('0x33')]=_['intersection'](_0x161fed[_0x5267('0x2f')],qs['fields'](_0x1fa925['query'][_0x5267('0x34')]));_0x299a13['attributes']=_0x299a13[_0x5267('0x33')][_0x5267('0x35')]?_0x299a13[_0x5267('0x33')]:_0x161fed[_0x5267('0x2f')];if(_0x1fa925['query'][_0x5267('0x3e')]){_0x299a13['include']=[{'all':!![]}];}_0x299a13=_['merge']({},_0x299a13,_0x1fa925[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x299a13)['then'](handleEntityNotFound(_0xc764cd,null))[_0x5267('0x25')](respondWithResult(_0xc764cd,null))[_0x5267('0x40')](handleError(_0xc764cd,null));};exports[_0x5267('0x42')]=function(_0x1b5a7e,_0x1c2803){return db[_0x5267('0x2a')][_0x5267('0x42')](_0x1b5a7e[_0x5267('0x43')],{})[_0x5267('0x25')](function(_0x2cfe09){var _0x21b040=_0x1b5a7e[_0x5267('0x44')][_0x5267('0x26')]({'plain':!![]});if(!_0x21b040)throw new Error(_0x5267('0x45'));if(_0x21b040['role']===_0x5267('0x44')){var _0x466d46=_0x2cfe09[_0x5267('0x26')]({'plain':!![]});var _0x4f0148=_0x5267('0x46');return db[_0x5267('0x47')][_0x5267('0x48')]({'where':{'name':_0x4f0148,'userProfileId':_0x21b040[_0x5267('0x49')]},'raw':!![]})[_0x5267('0x25')](function(_0x1457cf){if(_0x1457cf&&_0x1457cf['autoAssociation']===0x0){return db[_0x5267('0x4a')]['create']({'name':_0x466d46[_0x5267('0x28')],'resourceId':_0x466d46['id'],'type':_0x5267('0x27'),'sectionId':_0x1457cf['id']},{})[_0x5267('0x25')](function(){return _0x2cfe09;});}else{return _0x2cfe09;}})[_0x5267('0x40')](function(_0x91b932){logger[_0x5267('0x4b')](_0x5267('0x4c'),_0x91b932);throw _0x91b932;});}return _0x2cfe09;})['then'](respondWithResult(_0x1c2803,0xc9))['catch'](handleError(_0x1c2803,null));};exports[_0x5267('0x4d')]=function(_0x15b5c9,_0x566b6f){if(_0x15b5c9[_0x5267('0x43')]['id']){delete _0x15b5c9['body']['id'];}return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0x15b5c9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x566b6f,null))[_0x5267('0x25')](saveUpdates(_0x15b5c9[_0x5267('0x43')],null))[_0x5267('0x25')](respondWithResult(_0x566b6f,null))[_0x5267('0x40')](handleError(_0x566b6f,null));};exports[_0x5267('0x24')]=function(_0xf0b5a9,_0x43d254){return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0xf0b5a9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x43d254,null))[_0x5267('0x25')](removeEntity(_0x43d254,null))[_0x5267('0x40')](handleError(_0x43d254,null));};exports[_0x5267('0x4e')]=function(_0x552211,_0x195575){var _0x5ad1ce=0xa;var _0x1522d6=[_0x5267('0x4f'),_0x5267('0x50'),'right_join',_0x5267('0x51')];var _0x161dab={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x51220c={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x4e3771=function(_0x489780){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),'IS\x20EMPTY',_0x5267('0x60')],_0x489780);};var _0xc88193=function(_0x293e61){if(!_0x293e61||!_0x293e61[_0x5267('0x61')]['length']){return'';}for(var _0x5a87b5='(',_0x540ab8=0x0;_0x540ab8<_0x293e61[_0x5267('0x61')][_0x5267('0x35')];_0x540ab8+=0x1){_0x540ab8>0x0&&(_0x5a87b5+='\x20'+_0x293e61[_0x5267('0x62')]+'\x20');_0x5a87b5+=_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]?_0xc88193(_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]):_0x293e61[_0x5267('0x61')][_0x540ab8]['field']+'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x64')]+(_0x4e3771(_0x293e61['rules'][_0x540ab8][_0x5267('0x64')])?'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x65')]:'');}return _0x5a87b5+')';};var _0x1b6dd7={'where':{'id':_0x552211[_0x5267('0x41')]['id']}},_0x19adf5,_0xde1ecd,_0x4915f4,_0x2ca259,_0x726410;_0x1b6dd7=_[_0x5267('0x3c')]({},_0x1b6dd7,_0x552211[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x1b6dd7)[_0x5267('0x25')](function(_0x87465){if(_0x87465){_0x19adf5=_0x87465;return _0x87465[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x1a4016){if(_0x1a4016){if(!_0x1a4016[_0x5267('0x35')]){throw new db['Sequelize'][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0xde1ecd=_0x1a4016;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})['then'](function(_0x516e6e){if(_0x516e6e){_0x4915f4=_['keyBy'](_0x516e6e,'id');var _0x910f97;var _0x5cca85=squel[_0x5267('0x6b')]();_0x5cca85['from'](_0x19adf5[_0x5267('0x6c')]);for(var _0x1150ba=0x0;_0x1150ba<_0xde1ecd[_0x5267('0x35')];_0x1150ba+=0x1){_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x6d')]?_0x4915f4[_0xde1ecd[_0x1150ba][_0x5267('0x6d')]][_0x5267('0x6e')]:_0xde1ecd[_0x1150ba][_0x5267('0x6f')];_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x70')]?_['replace'](_0x161dab[_0xde1ecd[_0x1150ba]['function']],'%s',_0x910f97):_0x910f97;_0x910f97=_0xde1ecd[_0x1150ba]['format']?_[_0x5267('0x71')](_0x51220c[_0xde1ecd[_0x1150ba][_0x5267('0x72')]],'%s',_0x910f97):_0x910f97;if(_0xde1ecd[_0x1150ba][_0x5267('0x73')]){_0x5cca85[_0x5267('0x63')](_0x910f97);}_0xde1ecd[_0x1150ba]['orderBy']&&_0x5cca85[_0x5267('0x74')](_0x910f97,_0xde1ecd[_0x1150ba][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x5cca85[_0x5267('0x6f')](_0x910f97,_0xde1ecd[_0x1150ba]['alias']||_0x910f97);}if(_0x19adf5[_0x5267('0x77')]){_0x19adf5[_0x5267('0x77')]=JSON['parse'](_0x19adf5[_0x5267('0x77')]);for(var _0x268805=0x0;_0x268805<_0x19adf5['joins']['length'];_0x268805+=0x1){if(_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x2d')]&&_['includes'](_0x1522d6,_0x19adf5['joins'][_0x268805][_0x5267('0x2d')])&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')]&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')]&&_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]){_0x5cca85[_0x19adf5[_0x5267('0x77')][_0x268805]['type']](_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x19adf5[_0x5267('0x6c')],_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')],_0x19adf5[_0x5267('0x77')][_0x268805]['foreignTable'],_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]));}}}if(_0x19adf5[_0x5267('0x7c')]){_0x19adf5[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x19adf5['conditions']);_0x5cca85[_0x5267('0x38')](_0xc88193(_0x19adf5['conditions'][_0x5267('0x63')]));}_0x726410=_0x5cca85[_0x5267('0x7e')]();_0x5cca85[_0x5267('0x1d')](_0x5ad1ce);_0x5cca85[_0x5267('0x1b')](0x0);logger['debug']('Limited\x20Query:',_0x5cca85[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x5cca85[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')]['SELECT']});}})[_0x5267('0x25')](respondWithResult(_0x195575,null))['catch'](handleError(_0x195575,null));};function runReport(_0x418a03,_0x5b8026,_0x2c2b95){var _0x20888d=_0x5b8026[_0x5267('0x28')];var _0x87aa90=0xa;var _0x164cc1=[_0x5267('0x4f'),_0x5267('0x50'),_0x5267('0x82'),_0x5267('0x51')];var _0x28e4b6={'SUM':_0x5267('0x52'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0xd18795={'SEC_TO_TIME':_0x5267('0x83'),'DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x2543a4=function(_0x2feea8){return!_[_0x5267('0x5d')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x5267('0x84'),_0x5267('0x60')],_0x2feea8);};var _0x199ff6=function(_0xbf36fb){if(!_0xbf36fb||!_0xbf36fb['rules'][_0x5267('0x35')]){return'';}for(var _0x3cc775='(',_0x2630f2=0x0;_0x2630f2<_0xbf36fb[_0x5267('0x61')][_0x5267('0x35')];_0x2630f2+=0x1){_0x2630f2>0x0&&(_0x3cc775+='\x20'+_0xbf36fb[_0x5267('0x62')]+'\x20');_0x3cc775+=_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]?_0x199ff6(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]):_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x6f')]+'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2]['condition']+(_0x2543a4(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x64')])?'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x65')]:'');}return _0x3cc775+')';};var _0x447b5f={'where':{'id':_0x418a03['id']}},_0x25ce90,_0x257c69,_0x160c9c,_0x42694a,_0x11a2f4;_0x447b5f=_[_0x5267('0x3c')]({},_0x447b5f,_0x2c2b95);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x447b5f)[_0x5267('0x25')](function(_0x35c3b7){if(_0x35c3b7){_0x25ce90=_0x35c3b7;return _0x35c3b7[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x35a4a3){if(_0x35a4a3){if(!_0x35a4a3[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0x257c69=_0x35a4a3;return db[_0x5267('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x318393){if(_0x318393){_0x160c9c=_[_0x5267('0x86')](_0x318393,'id');var _0x405eb4;var _0x38f5b7=squel['select']();_0x38f5b7[_0x5267('0x87')](_0x25ce90[_0x5267('0x6c')]);for(var _0x4c68cd=0x0;_0x4c68cd<_0x257c69['length'];_0x4c68cd+=0x1){_0x405eb4=_0x257c69[_0x4c68cd]['MetricId']?_0x160c9c[_0x257c69[_0x4c68cd][_0x5267('0x6d')]]['metric']:_0x257c69[_0x4c68cd][_0x5267('0x6f')];_0x405eb4=_0x257c69[_0x4c68cd]['function']?_['replace'](_0x28e4b6[_0x257c69[_0x4c68cd][_0x5267('0x70')]],'%s',_0x405eb4):_0x405eb4;_0x405eb4=_0x257c69[_0x4c68cd][_0x5267('0x72')]?_[_0x5267('0x71')](_0xd18795[_0x257c69[_0x4c68cd][_0x5267('0x72')]],'%s',_0x405eb4):_0x405eb4;if(_0x257c69[_0x4c68cd][_0x5267('0x73')]){_0x38f5b7['group'](_0x405eb4);}_0x257c69[_0x4c68cd]['orderBy']&&_0x38f5b7[_0x5267('0x74')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x38f5b7[_0x5267('0x6f')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x88')]||_0x405eb4);}if(_0x25ce90['joins']){_0x25ce90[_0x5267('0x77')]=JSON['parse'](_0x25ce90['joins']);for(var _0x3dfd8d=0x0;_0x3dfd8d<_0x25ce90['joins']['length'];_0x3dfd8d+=0x1){if(_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x2d')]&&_['includes'](_0x164cc1,_0x25ce90['joins'][_0x3dfd8d]['type'])&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['parentKey']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x7a')]){_0x38f5b7[_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x2d')]](_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x25ce90[_0x5267('0x6c')],_0x25ce90['joins'][_0x3dfd8d]['parentKey'],_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable'],_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x7a')]));}}}if(_0x25ce90['conditions']){_0x25ce90[_0x5267('0x7c')]=JSON['parse'](_0x25ce90[_0x5267('0x7c')]);_0x38f5b7['where'](_0x199ff6(_0x25ce90[_0x5267('0x7c')][_0x5267('0x63')]));}_0x11a2f4=_0x38f5b7[_0x5267('0x7e')]();_0x38f5b7[_0x5267('0x1d')](_0x87aa90);_0x38f5b7[_0x5267('0x1b')](0x0);return;}})[_0x5267('0x25')](function(){if(_0x5b8026[_0x5267('0x89')]==='web'){return null;}var _0x4df99f=_[_0x5267('0x3c')](_0x5b8026,{'name':_0x5b8026['fullPath']||_0x5b8026['name']||_0x25ce90['name'],'basename':_0x20888d,'savename':util['format']('%s-%s.%s',_0x5b8026['name']||_0x25ce90[_0x5267('0x28')],require(_0x5267('0x8a'))[_0x5267('0x8b')](0x4),_0x5b8026[_0x5267('0x89')]||_0x5267('0x8c')),'reportId':_0x25ce90['id'],'reportType':_0x5267('0x8d')});return db[_0x5267('0x8e')][_0x5267('0x42')](_0x4df99f,{'raw':!![]});})['then'](function(_0x5df23d){if(_0x25ce90['table']===_0x5267('0x8f')){_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+_0x5267('0x90'),_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}else{_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}if(_0x5df23d){logger[_0x5267('0x93')](_0x5267('0x94'),_0x11a2f4[_0x5267('0x7f')]());require(_0x5267('0x95'))[_0x5267('0x96')](path['join'](__dirname,'../../components/export/',_0x5df23d['output']),[_0x5df23d['id'],_0x11a2f4[_0x5267('0x7f')](),path[_0x5267('0x4f')](__dirname,_0x5267('0x97'),_0x5df23d[_0x5267('0x98')]),_0x20888d]);return _0x5df23d;}else{var _0x190ef4=squel[_0x5267('0x6b')]();_0x190ef4['from']('('+_0x11a2f4[_0x5267('0x7f')]()+')','countTable');_0x190ef4[_0x5267('0x6f')](_0x5267('0x99'),_0x5267('0x1e'));_0x11a2f4[_0x5267('0x1d')](_0x5b8026[_0x5267('0x1d')]||_0x87aa90);_0x11a2f4['offset'](_0x5b8026[_0x5267('0x1b')]||0x0);return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x190ef4['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x5267('0x9a')]})[_0x5267('0x25')](function(_0x1be763){if(!_0x1be763[_0x5267('0x35')]){_0x42694a=0x0;}else{_0x42694a=_0x1be763[0x0]['count']||0x0;}return dbH['sequelize'][_0x5267('0x30')](_0x11a2f4[_0x5267('0x7f')](),{'type':dbH['sequelize'][_0x5267('0x81')][_0x5267('0x9a')]});})['then'](function(_0x5005b3){return{'rows':_0x5005b3||[],'count':_0x42694a};});}});}exports[_0x5267('0x9b')]=function(_0x11a6f4,_0x5a16ee){return runReport(_0x11a6f4[_0x5267('0x41')],_0x11a6f4[_0x5267('0x30')],_0x11a6f4[_0x5267('0x3d')])[_0x5267('0x25')](respondWithResult(_0x5a16ee,null))[_0x5267('0x40')](handleError(_0x5a16ee,null));};exports[_0x5267('0x9c')]=runReport;exports[_0x5267('0x30')]=function(_0x1e9651,_0x66da7a){var _0x54b582=0xa;var _0x4e4724=[_0x5267('0x4f'),'left_join',_0x5267('0x82'),_0x5267('0x51')];var _0x2722f9={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':_0x5267('0x9d'),'AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x5909b3={'SEC_TO_TIME':_0x5267('0x83'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x1d7987=function(_0x59efe1){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),_0x5267('0x84'),_0x5267('0x60')],_0x59efe1);};var _0x46c79e=function(_0xcfba51){if(!_0xcfba51||!_0xcfba51[_0x5267('0x61')][_0x5267('0x35')]){return'';}for(var _0x3c5516='(',_0x1e8367=0x0;_0x1e8367<_0xcfba51[_0x5267('0x61')]['length'];_0x1e8367+=0x1){_0x1e8367>0x0&&(_0x3c5516+='\x20'+_0xcfba51[_0x5267('0x62')]+'\x20');_0x3c5516+=_0xcfba51[_0x5267('0x61')][_0x1e8367]['group']?_0x46c79e(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x63')]):_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x6f')]+'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x64')]+(_0x1d7987(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x64')])?'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x65')]:'');}return _0x3c5516+')';};var _0x19935d={'where':{'id':_0x1e9651[_0x5267('0x41')]['id']}},_0x3102e0,_0x2d215e,_0xc0af94,_0x178080,_0x3485ab;_0x19935d=_[_0x5267('0x3c')]({},_0x19935d,_0x1e9651['options']);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x19935d)['then'](function(_0x17d2d4){if(_0x17d2d4){_0x3102e0=_0x17d2d4;return _0x17d2d4['getFields']();}return null;})[_0x5267('0x25')](function(_0x4c5a26){if(_0x4c5a26){if(!_0x4c5a26[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d215e=_0x4c5a26;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x1a0883){if(_0x1a0883){_0xc0af94=_[_0x5267('0x86')](_0x1a0883,'id');var _0x501da6;var _0x3dcf73=squel['select']();_0x3dcf73['from'](_0x3102e0['table']);for(var _0x1ded05=0x0;_0x1ded05<_0x2d215e[_0x5267('0x35')];_0x1ded05+=0x1){_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x6d')]?_0xc0af94[_0x2d215e[_0x1ded05][_0x5267('0x6d')]][_0x5267('0x6e')]:_0x2d215e[_0x1ded05][_0x5267('0x6f')];_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x70')]?_['replace'](_0x2722f9[_0x2d215e[_0x1ded05]['function']],'%s',_0x501da6):_0x501da6;_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x72')]?_[_0x5267('0x71')](_0x5909b3[_0x2d215e[_0x1ded05][_0x5267('0x72')]],'%s',_0x501da6):_0x501da6;if(_0x2d215e[_0x1ded05][_0x5267('0x73')]){_0x3dcf73[_0x5267('0x63')](_0x501da6);}_0x2d215e[_0x1ded05]['orderBy']&&_0x3dcf73[_0x5267('0x74')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x3dcf73[_0x5267('0x6f')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x88')]||_0x501da6);}if(_0x3102e0['joins']){_0x3102e0[_0x5267('0x77')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x77')]);for(var _0x4bfafd=0x0;_0x4bfafd<_0x3102e0[_0x5267('0x77')]['length'];_0x4bfafd+=0x1){if(_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]&&_['includes'](_0x4e4724,_0x3102e0[_0x5267('0x77')][_0x4bfafd]['type'])&&_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')]&&_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')]&&_0x3102e0[_0x5267('0x77')][_0x4bfafd]['foreignKey']){_0x3dcf73[_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]](_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x79')],null,util[_0x5267('0x72')]('%s.%s\x20=\x20%s.%s',_0x3102e0['table'],_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x7a')]));}}}if(_0x3102e0[_0x5267('0x7c')]){_0x3102e0[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x7c')]);_0x3dcf73[_0x5267('0x38')](_0x46c79e(_0x3102e0[_0x5267('0x7c')][_0x5267('0x63')]));}_0x3485ab=_0x3dcf73[_0x5267('0x7e')]();_0x3dcf73[_0x5267('0x1d')](_0x54b582);_0x3dcf73[_0x5267('0x1b')](0x0);logger[_0x5267('0x9e')]('Limited\x20Query:',_0x3dcf73[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x3dcf73[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')][_0x5267('0x9a')]});}})[_0x5267('0x25')](function(){return{'sql':_0x3485ab[_0x5267('0x7f')]()};})[_0x5267('0x25')](respondWithResult(_0x66da7a,null))[_0x5267('0x40')](handleError(_0x66da7a,null));};
\ No newline at end of file
+var _0x687b=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','sendStatus','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','findAll','catch','params','intersection','includeAll','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','merge','getFields','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SUM(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ValidationErrorItem','DESC','parentKey','web','fullPath','%s-%s.%s','output','csv','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','SELECT','run','runReport','cross_join','%s.%s\x20=\x20%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x687b,0x14a));var _0xb687=function(_0x508d16,_0x3e5c76){_0x508d16=_0x508d16-0x0;var _0x169e38=_0x687b[_0x508d16];return _0x169e38;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];var dbH=require(_0xb687('0x1b'))['dbH'];function respondWithStatusCode(_0x4c97ed,_0x3e85b3){_0x3e85b3=_0x3e85b3||0xcc;return function(_0x155ebe){if(_0x155ebe){return _0x4c97ed['sendStatus'](_0x3e85b3);}return _0x4c97ed[_0xb687('0x1c')](_0x3e85b3)[_0xb687('0x1d')]();};}function respondWithResult(_0x1f1f35,_0x30d502){_0x30d502=_0x30d502||0xc8;return function(_0x838dd4){if(_0x838dd4){return _0x1f1f35[_0xb687('0x1c')](_0x30d502)[_0xb687('0x1e')](_0x838dd4);}};}function respondWithFilteredResult(_0x141375,_0x263085){return function(_0x2c7a18){if(_0x2c7a18){var _0x25124a=typeof _0x263085[_0xb687('0x1f')]==='undefined'&&typeof _0x263085[_0xb687('0x20')]===_0xb687('0x21');var _0x30d370=_0x2c7a18['count'];var _0x48958d=_0x25124a?0x0:_0x263085[_0xb687('0x1f')];var _0x3a10ef=_0x25124a?_0x2c7a18[_0xb687('0x22')]:_0x263085['offset']+_0x263085[_0xb687('0x20')];var _0x481f1d;if(_0x3a10ef>=_0x30d370){_0x3a10ef=_0x30d370;_0x481f1d=0xc8;}else{_0x481f1d=0xce;}_0x141375[_0xb687('0x1c')](_0x481f1d);return _0x141375[_0xb687('0x23')](_0xb687('0x24'),_0x48958d+'-'+_0x3a10ef+'/'+_0x30d370)[_0xb687('0x1e')](_0x2c7a18);}return null;};}function patchUpdates(_0x49d5a1){return function(_0x3a73d5){try{jsonpatch['apply'](_0x3a73d5,_0x49d5a1,!![]);}catch(_0x335541){return BPromise[_0xb687('0x25')](_0x335541);}return _0x3a73d5[_0xb687('0x26')]();};}function saveUpdates(_0x546fde,_0x1dc06b){return function(_0x491623){if(_0x491623){return _0x491623[_0xb687('0x27')](_0x546fde)[_0xb687('0x28')](function(_0xbf6c58){return _0xbf6c58;});}return null;};}function removeEntity(_0x38866c,_0xf48ba4){return function(_0x2f0a0a){if(_0x2f0a0a){return _0x2f0a0a['destroy']()[_0xb687('0x28')](function(){var _0x129347=_0x2f0a0a[_0xb687('0x29')]({'plain':!![]});var _0x1a0261=_0xb687('0x2a');return db[_0xb687('0x2b')][_0xb687('0x2c')]({'where':{'type':_0x1a0261,'resourceId':_0x129347['id']}})[_0xb687('0x28')](function(){return _0x2f0a0a;});})[_0xb687('0x28')](function(){_0x38866c[_0xb687('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3712cf,_0x192966){return function(_0x392721){if(!_0x392721){_0x3712cf[_0xb687('0x2d')](0x194);}return _0x392721;};}function handleError(_0x2e5c8d,_0x173c58){_0x173c58=_0x173c58||0x1f4;return function(_0x4e9a06){logger[_0xb687('0x2e')](_0x4e9a06['stack']);if(_0x4e9a06[_0xb687('0x2f')]){delete _0x4e9a06[_0xb687('0x2f')];}_0x2e5c8d[_0xb687('0x1c')](_0x173c58)[_0xb687('0x30')](_0x4e9a06);};}exports[_0xb687('0x31')]=function(_0x43d20d,_0xf1f0dd){var _0x556815={},_0x3da2be={},_0xe3428f={'count':0x0,'rows':[]};var _0x3c08ab=_[_0xb687('0x32')](db[_0xb687('0x33')][_0xb687('0x34')],function(_0x44be88){return{'name':_0x44be88[_0xb687('0x35')],'type':_0x44be88[_0xb687('0x36')][_0xb687('0x37')]};});_0x3da2be[_0xb687('0x38')]=_['map'](_0x3c08ab,'name');_0x3da2be[_0xb687('0x39')]=_[_0xb687('0x3a')](_0x43d20d[_0xb687('0x39')]);_0x3da2be[_0xb687('0x3b')]=_['intersection'](_0x3da2be['model'],_0x3da2be[_0xb687('0x39')]);_0x556815[_0xb687('0x3c')]=_['intersection'](_0x3da2be[_0xb687('0x38')],qs[_0xb687('0x3d')](_0x43d20d['query'][_0xb687('0x3d')]));_0x556815['attributes']=_0x556815[_0xb687('0x3c')][_0xb687('0x3e')]?_0x556815[_0xb687('0x3c')]:_0x3da2be[_0xb687('0x38')];if(!_0x43d20d[_0xb687('0x39')][_0xb687('0x3f')]('nolimit')){_0x556815[_0xb687('0x20')]=qs[_0xb687('0x20')](_0x43d20d[_0xb687('0x39')][_0xb687('0x20')]);_0x556815['offset']=qs[_0xb687('0x1f')](_0x43d20d[_0xb687('0x39')][_0xb687('0x1f')]);}_0x556815[_0xb687('0x40')]=qs[_0xb687('0x41')](_0x43d20d['query'][_0xb687('0x41')]);_0x556815[_0xb687('0x42')]=qs[_0xb687('0x3b')](_[_0xb687('0x43')](_0x43d20d[_0xb687('0x39')],_0x3da2be[_0xb687('0x3b')]),_0x3c08ab);if(_0x43d20d['query']['filter']){_0x556815[_0xb687('0x42')]=_['merge'](_0x556815[_0xb687('0x42')],{'$or':_[_0xb687('0x32')](_0x3c08ab,function(_0x48d3b1){if(_0x48d3b1[_0xb687('0x36')]!==_0xb687('0x44')){var _0x57776b={};_0x57776b[_0x48d3b1[_0xb687('0x2f')]]={'$like':'%'+_0x43d20d[_0xb687('0x39')][_0xb687('0x45')]+'%'};return _0x57776b;}})});}_0x556815=_['merge']({},_0x556815,_0x43d20d[_0xb687('0x46')]);var _0x9cffb2={'where':_0x556815[_0xb687('0x42')]};return db[_0xb687('0x33')][_0xb687('0x22')](_0x9cffb2)[_0xb687('0x28')](function(_0x21b9ef){_0xe3428f['count']=_0x21b9ef;if(_0x43d20d[_0xb687('0x39')]['includeAll']){_0x556815['include']=[{'all':!![]}];}return db[_0xb687('0x33')][_0xb687('0x47')](_0x556815);})['then'](function(_0x19a21c){_0xe3428f['rows']=_0x19a21c;return _0xe3428f;})[_0xb687('0x28')](respondWithFilteredResult(_0xf1f0dd,_0x556815))[_0xb687('0x48')](handleError(_0xf1f0dd,null));};exports['show']=function(_0x4cb7a0,_0x3a8509){var _0x5d9cb0={'raw':!![],'where':{'id':_0x4cb7a0[_0xb687('0x49')]['id']}},_0x247c67={};_0x247c67[_0xb687('0x38')]=_[_0xb687('0x3a')](db[_0xb687('0x33')][_0xb687('0x34')]);_0x247c67[_0xb687('0x39')]=_[_0xb687('0x3a')](_0x4cb7a0[_0xb687('0x39')]);_0x247c67[_0xb687('0x3b')]=_[_0xb687('0x4a')](_0x247c67[_0xb687('0x38')],_0x247c67['query']);_0x5d9cb0[_0xb687('0x3c')]=_['intersection'](_0x247c67[_0xb687('0x38')],qs[_0xb687('0x3d')](_0x4cb7a0[_0xb687('0x39')][_0xb687('0x3d')]));_0x5d9cb0[_0xb687('0x3c')]=_0x5d9cb0[_0xb687('0x3c')]['length']?_0x5d9cb0['attributes']:_0x247c67[_0xb687('0x38')];if(_0x4cb7a0[_0xb687('0x39')][_0xb687('0x4b')]){_0x5d9cb0[_0xb687('0x4c')]=[{'all':!![]}];}_0x5d9cb0=_['merge']({},_0x5d9cb0,_0x4cb7a0[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x5d9cb0)[_0xb687('0x28')](handleEntityNotFound(_0x3a8509,null))['then'](respondWithResult(_0x3a8509,null))[_0xb687('0x48')](handleError(_0x3a8509,null));};exports[_0xb687('0x4e')]=function(_0x162b19,_0x401b99){return db['AnalyticDefaultReport']['create'](_0x162b19[_0xb687('0x4f')],{})[_0xb687('0x28')](function(_0x42b61a){var _0x508862=_0x162b19['user'][_0xb687('0x29')]({'plain':!![]});if(!_0x508862)throw new Error(_0xb687('0x50'));if(_0x508862[_0xb687('0x51')]===_0xb687('0x52')){var _0x34205d=_0x42b61a[_0xb687('0x29')]({'plain':!![]});var _0x602864=_0xb687('0x53');return db['UserProfileSection'][_0xb687('0x4d')]({'where':{'name':_0x602864,'userProfileId':_0x508862[_0xb687('0x54')]},'raw':!![]})[_0xb687('0x28')](function(_0x4f5784){if(_0x4f5784&&_0x4f5784['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x34205d[_0xb687('0x2f')],'resourceId':_0x34205d['id'],'type':_0xb687('0x2a'),'sectionId':_0x4f5784['id']},{})[_0xb687('0x28')](function(){return _0x42b61a;});}else{return _0x42b61a;}})[_0xb687('0x48')](function(_0x1ddfd4){logger[_0xb687('0x2e')](_0xb687('0x55'),_0x1ddfd4);throw _0x1ddfd4;});}return _0x42b61a;})[_0xb687('0x28')](respondWithResult(_0x401b99,0xc9))[_0xb687('0x48')](handleError(_0x401b99,null));};exports[_0xb687('0x27')]=function(_0x128264,_0x166900){if(_0x128264[_0xb687('0x4f')]['id']){delete _0x128264[_0xb687('0x4f')]['id'];}return db[_0xb687('0x33')][_0xb687('0x4d')]({'where':{'id':_0x128264[_0xb687('0x49')]['id']}})['then'](handleEntityNotFound(_0x166900,null))['then'](saveUpdates(_0x128264[_0xb687('0x4f')],null))[_0xb687('0x28')](respondWithResult(_0x166900,null))[_0xb687('0x48')](handleError(_0x166900,null));};exports[_0xb687('0x2c')]=function(_0x4e5642,_0xfa8790){return db[_0xb687('0x33')]['find']({'where':{'id':_0x4e5642[_0xb687('0x49')]['id']}})['then'](handleEntityNotFound(_0xfa8790,null))[_0xb687('0x28')](removeEntity(_0xfa8790,null))[_0xb687('0x48')](handleError(_0xfa8790,null));};exports['preview']=function(_0x4fb188,_0x13ad6a){var _0x4ab9c5=0xa;var _0x5ea8fd=[_0xb687('0x56'),_0xb687('0x57'),_0xb687('0x58'),'cross_join'];var _0x25e140={'SUM':'SUM(%s)','COUNT':_0xb687('0x59'),'COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':_0xb687('0x5c'),'AVG':_0xb687('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb687('0x5e')};var _0x58ec8b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':_0xb687('0x60')};var _0xbc3a94=function(_0x4bc18f){return!_[_0xb687('0x61')]([_0xb687('0x62'),_0xb687('0x63'),_0xb687('0x64'),_0xb687('0x65')],_0x4bc18f);};var _0x17505c=function(_0x132e3a){if(!_0x132e3a||!_0x132e3a['rules']['length']){return'';}for(var _0x2714c6='(',_0x4906df=0x0;_0x4906df<_0x132e3a[_0xb687('0x66')][_0xb687('0x3e')];_0x4906df+=0x1){_0x4906df>0x0&&(_0x2714c6+='\x20'+_0x132e3a[_0xb687('0x67')]+'\x20');_0x2714c6+=_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x68')]?_0x17505c(_0x132e3a['rules'][_0x4906df][_0xb687('0x68')]):_0x132e3a['rules'][_0x4906df][_0xb687('0x69')]+'\x20'+_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6a')]+(_0xbc3a94(_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6a')])?'\x20'+_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6b')]:'');}return _0x2714c6+')';};var _0x5deb7a={'where':{'id':_0x4fb188['params']['id']}},_0x28a6aa,_0x31ed20,_0x8942b7,_0x36bb4b,_0x258caf;_0x5deb7a=_[_0xb687('0x6c')]({},_0x5deb7a,_0x4fb188[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x5deb7a)[_0xb687('0x28')](function(_0x15ef44){if(_0x15ef44){_0x28a6aa=_0x15ef44;return _0x15ef44[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x177ea4){if(_0x177ea4){if(!_0x177ea4[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))]['ValidationErrorItem'](_0xb687('0x6f'),0x193);}_0x31ed20=_0x177ea4;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x505f7a){if(_0x505f7a){_0x8942b7=_[_0xb687('0x71')](_0x505f7a,'id');var _0x1a6075;var _0x53b00a=squel[_0xb687('0x72')]();_0x53b00a[_0xb687('0x73')](_0x28a6aa[_0xb687('0x74')]);for(var _0x5eeb75=0x0;_0x5eeb75<_0x31ed20[_0xb687('0x3e')];_0x5eeb75+=0x1){_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x75')]?_0x8942b7[_0x31ed20[_0x5eeb75]['MetricId']][_0xb687('0x76')]:_0x31ed20[_0x5eeb75][_0xb687('0x69')];_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x77')]?_[_0xb687('0x78')](_0x25e140[_0x31ed20[_0x5eeb75]['function']],'%s',_0x1a6075):_0x1a6075;_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x79')]?_[_0xb687('0x78')](_0x58ec8b[_0x31ed20[_0x5eeb75]['format']],'%s',_0x1a6075):_0x1a6075;if(_0x31ed20[_0x5eeb75][_0xb687('0x7a')]){_0x53b00a[_0xb687('0x68')](_0x1a6075);}_0x31ed20[_0x5eeb75]['orderBy']&&_0x53b00a['order'](_0x1a6075,_0x31ed20[_0x5eeb75][_0xb687('0x7b')]==='DESC'?![]:!![]);_0x53b00a[_0xb687('0x69')](_0x1a6075,_0x31ed20[_0x5eeb75][_0xb687('0x7c')]||_0x1a6075);}if(_0x28a6aa[_0xb687('0x7d')]){_0x28a6aa[_0xb687('0x7d')]=JSON[_0xb687('0x7e')](_0x28a6aa[_0xb687('0x7d')]);for(var _0x229bc4=0x0;_0x229bc4<_0x28a6aa[_0xb687('0x7d')]['length'];_0x229bc4+=0x1){if(_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')]&&_[_0xb687('0x61')](_0x5ea8fd,_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')])&&_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['parentKey']&&_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x7f')]&&_0x28a6aa['joins'][_0x229bc4][_0xb687('0x80')]){_0x53b00a[_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')]](_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['foreignTable'],null,util[_0xb687('0x79')]('%s.%s\x20=\x20%s.%s',_0x28a6aa['table'],_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['parentKey'],_0x28a6aa['joins'][_0x229bc4][_0xb687('0x7f')],_0x28a6aa['joins'][_0x229bc4][_0xb687('0x80')]));}}}if(_0x28a6aa[_0xb687('0x81')]){_0x28a6aa['conditions']=JSON[_0xb687('0x7e')](_0x28a6aa[_0xb687('0x81')]);_0x53b00a['where'](_0x17505c(_0x28a6aa[_0xb687('0x81')][_0xb687('0x68')]));}_0x258caf=_0x53b00a[_0xb687('0x82')]();_0x53b00a[_0xb687('0x20')](_0x4ab9c5);_0x53b00a[_0xb687('0x1f')](0x0);logger[_0xb687('0x83')](_0xb687('0x84'),_0x53b00a[_0xb687('0x85')]());return dbH[_0xb687('0x86')][_0xb687('0x39')](_0x53b00a[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')]['SELECT']});}})['then'](respondWithResult(_0x13ad6a,null))[_0xb687('0x48')](handleError(_0x13ad6a,null));};function runReport(_0x29e830,_0x22ebca,_0xfecb8d){var _0x3a7339=_0x22ebca['name'];var _0x59c94b=0xa;var _0x29e27e=[_0xb687('0x56'),_0xb687('0x57'),_0xb687('0x58'),'cross_join'];var _0x448d59={'SUM':_0xb687('0x88'),'COUNT':_0xb687('0x59'),'COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':_0xb687('0x5c'),'AVG':_0xb687('0x5d'),'GROUP_CONCAT':_0xb687('0x89'),'GROUP_CONCAT ASC':_0xb687('0x8a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x25f5c3={'SEC_TO_TIME':_0xb687('0x8b'),'DATE':_0xb687('0x8c'),'HOUR':_0xb687('0x8d'),'ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1037b1=function(_0x3bf480){return!_['includes']([_0xb687('0x62'),'IS\x20NOT\x20NULL',_0xb687('0x64'),_0xb687('0x65')],_0x3bf480);};var _0x5ec5f6=function(_0x1c683e){if(!_0x1c683e||!_0x1c683e[_0xb687('0x66')]['length']){return'';}for(var _0x231caa='(',_0x3479c5=0x0;_0x3479c5<_0x1c683e[_0xb687('0x66')][_0xb687('0x3e')];_0x3479c5+=0x1){_0x3479c5>0x0&&(_0x231caa+='\x20'+_0x1c683e[_0xb687('0x67')]+'\x20');_0x231caa+=_0x1c683e[_0xb687('0x66')][_0x3479c5]['group']?_0x5ec5f6(_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x68')]):_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x69')]+'\x20'+_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6a')]+(_0x1037b1(_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6a')])?'\x20'+_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6b')]:'');}return _0x231caa+')';};var _0x290ddf={'where':{'id':_0x29e830['id']}},_0x5ee585,_0x10fb0,_0x5be566,_0x3d98e2,_0x3aa1c8;_0x290ddf=_['merge']({},_0x290ddf,_0xfecb8d);return db['AnalyticDefaultReport'][_0xb687('0x4d')](_0x290ddf)[_0xb687('0x28')](function(_0x3b4acf){if(_0x3b4acf){_0x5ee585=_0x3b4acf;return _0x3b4acf[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x1c3de0){if(_0x1c3de0){if(!_0x1c3de0[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))][(_0xb687('0x8e'))](_0xb687('0x6f'),0x193);}_0x10fb0=_0x1c3de0;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x1ea6fd){if(_0x1ea6fd){_0x5be566=_[_0xb687('0x71')](_0x1ea6fd,'id');var _0x3f45b7;var _0x508550=squel['select']();_0x508550[_0xb687('0x73')](_0x5ee585['table']);for(var _0x5f2557=0x0;_0x5f2557<_0x10fb0[_0xb687('0x3e')];_0x5f2557+=0x1){_0x3f45b7=_0x10fb0[_0x5f2557][_0xb687('0x75')]?_0x5be566[_0x10fb0[_0x5f2557]['MetricId']][_0xb687('0x76')]:_0x10fb0[_0x5f2557][_0xb687('0x69')];_0x3f45b7=_0x10fb0[_0x5f2557]['function']?_[_0xb687('0x78')](_0x448d59[_0x10fb0[_0x5f2557][_0xb687('0x77')]],'%s',_0x3f45b7):_0x3f45b7;_0x3f45b7=_0x10fb0[_0x5f2557][_0xb687('0x79')]?_[_0xb687('0x78')](_0x25f5c3[_0x10fb0[_0x5f2557][_0xb687('0x79')]],'%s',_0x3f45b7):_0x3f45b7;if(_0x10fb0[_0x5f2557][_0xb687('0x7a')]){_0x508550[_0xb687('0x68')](_0x3f45b7);}_0x10fb0[_0x5f2557][_0xb687('0x7b')]&&_0x508550[_0xb687('0x40')](_0x3f45b7,_0x10fb0[_0x5f2557]['orderBy']===_0xb687('0x8f')?![]:!![]);_0x508550[_0xb687('0x69')](_0x3f45b7,_0x10fb0[_0x5f2557]['alias']||_0x3f45b7);}if(_0x5ee585[_0xb687('0x7d')]){_0x5ee585['joins']=JSON[_0xb687('0x7e')](_0x5ee585[_0xb687('0x7d')]);for(var _0x59166c=0x0;_0x59166c<_0x5ee585[_0xb687('0x7d')][_0xb687('0x3e')];_0x59166c+=0x1){if(_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')]&&_[_0xb687('0x61')](_0x29e27e,_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')])&&_0x5ee585['joins'][_0x59166c]['parentKey']&&_0x5ee585[_0xb687('0x7d')][_0x59166c]['foreignTable']&&_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x80')]){_0x508550[_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')]](_0x5ee585['joins'][_0x59166c][_0xb687('0x7f')],null,util[_0xb687('0x79')]('%s.%s\x20=\x20%s.%s',_0x5ee585[_0xb687('0x74')],_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x90')],_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x7f')],_0x5ee585[_0xb687('0x7d')][_0x59166c]['foreignKey']));}}}if(_0x5ee585[_0xb687('0x81')]){_0x5ee585[_0xb687('0x81')]=JSON[_0xb687('0x7e')](_0x5ee585[_0xb687('0x81')]);_0x508550[_0xb687('0x42')](_0x5ec5f6(_0x5ee585[_0xb687('0x81')][_0xb687('0x68')]));}_0x3aa1c8=_0x508550[_0xb687('0x82')]();_0x508550[_0xb687('0x20')](_0x59c94b);_0x508550[_0xb687('0x1f')](0x0);return;}})['then'](function(){if(_0x22ebca['output']===_0xb687('0x91')){return null;}var _0x1a7cd8=_[_0xb687('0x6c')](_0x22ebca,{'name':_0x22ebca[_0xb687('0x92')]||_0x22ebca[_0xb687('0x2f')]||_0x5ee585[_0xb687('0x2f')],'basename':_0x3a7339,'savename':util[_0xb687('0x79')](_0xb687('0x93'),_0x22ebca[_0xb687('0x2f')]||_0x5ee585['name'],require('randomstring')['generate'](0x4),_0x22ebca[_0xb687('0x94')]||_0xb687('0x95')),'reportId':_0x5ee585['id'],'reportType':_0xb687('0x96')});return db[_0xb687('0x97')][_0xb687('0x4e')](_0x1a7cd8,{'raw':!![]});})[_0xb687('0x28')](function(_0x473130){if(_0x5ee585[_0xb687('0x74')]==='cdr'){_0x3aa1c8[_0xb687('0x42')](_0x5ee585[_0xb687('0x74')]+_0xb687('0x98'),_0x22ebca[_0xb687('0x99')],_0x22ebca[_0xb687('0x9a')]);}else{_0x3aa1c8[_0xb687('0x42')](_0x5ee585[_0xb687('0x74')]+_0xb687('0x9b'),_0x22ebca['startDate'],_0x22ebca[_0xb687('0x9a')]);}if(_0x473130){logger['info'](_0xb687('0x9c'),_0x3aa1c8[_0xb687('0x85')]());require('child_process')[_0xb687('0x9d')](path[_0xb687('0x56')](__dirname,_0xb687('0x9e'),_0x473130['output']),[_0x473130['id'],_0x3aa1c8[_0xb687('0x85')](),path[_0xb687('0x56')](__dirname,_0xb687('0x9f'),_0x473130[_0xb687('0xa0')]),_0x3a7339]);return _0x473130;}else{var _0x3d4596=squel[_0xb687('0x72')]();_0x3d4596[_0xb687('0x73')]('('+_0x3aa1c8['toString']()+')',_0xb687('0xa1'));_0x3d4596[_0xb687('0x69')](_0xb687('0xa2'),_0xb687('0x22'));_0x3aa1c8[_0xb687('0x20')](_0x22ebca['limit']||_0x59c94b);_0x3aa1c8[_0xb687('0x1f')](_0x22ebca[_0xb687('0x1f')]||0x0);return dbH[_0xb687('0x86')]['query'](_0x3d4596[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')][_0xb687('0xa3')]})['then'](function(_0x3dbbd6){if(!_0x3dbbd6[_0xb687('0x3e')]){_0x3d98e2=0x0;}else{_0x3d98e2=_0x3dbbd6[0x0][_0xb687('0x22')]||0x0;}return dbH['sequelize'][_0xb687('0x39')](_0x3aa1c8[_0xb687('0x85')](),{'type':dbH[_0xb687('0x86')][_0xb687('0x87')][_0xb687('0xa3')]});})[_0xb687('0x28')](function(_0x15e599){return{'rows':_0x15e599||[],'count':_0x3d98e2};});}});}exports[_0xb687('0xa4')]=function(_0x8f6ba0,_0x568aca){return runReport(_0x8f6ba0[_0xb687('0x49')],_0x8f6ba0[_0xb687('0x39')],_0x8f6ba0[_0xb687('0x46')])['then'](respondWithResult(_0x568aca,null))['catch'](handleError(_0x568aca,null));};exports[_0xb687('0xa5')]=runReport;exports['query']=function(_0x187810,_0x1d21ef){var _0x386d12=0xa;var _0x4dd8f4=['join',_0xb687('0x57'),_0xb687('0x58'),_0xb687('0xa6')];var _0x295795={'SUM':_0xb687('0x88'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':'MIN(%s)','AVG':_0xb687('0x5d'),'GROUP_CONCAT':_0xb687('0x89'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb687('0x5e')};var _0xe7056c={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xb687('0x8c'),'HOUR':_0xb687('0x8d'),'ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':_0xb687('0x60')};var _0x1b1cf5=function(_0x46283c){return!_[_0xb687('0x61')](['IS\x20NULL',_0xb687('0x63'),'IS\x20EMPTY',_0xb687('0x65')],_0x46283c);};var _0x394ed6=function(_0x875169){if(!_0x875169||!_0x875169[_0xb687('0x66')]['length']){return'';}for(var _0x1ec485='(',_0x55a919=0x0;_0x55a919<_0x875169['rules'][_0xb687('0x3e')];_0x55a919+=0x1){_0x55a919>0x0&&(_0x1ec485+='\x20'+_0x875169[_0xb687('0x67')]+'\x20');_0x1ec485+=_0x875169[_0xb687('0x66')][_0x55a919]['group']?_0x394ed6(_0x875169[_0xb687('0x66')][_0x55a919][_0xb687('0x68')]):_0x875169['rules'][_0x55a919][_0xb687('0x69')]+'\x20'+_0x875169['rules'][_0x55a919][_0xb687('0x6a')]+(_0x1b1cf5(_0x875169[_0xb687('0x66')][_0x55a919]['condition'])?'\x20'+_0x875169[_0xb687('0x66')][_0x55a919]['value']:'');}return _0x1ec485+')';};var _0x2aecd5={'where':{'id':_0x187810[_0xb687('0x49')]['id']}},_0x58955e,_0x488a2a,_0x303738,_0x3904a3,_0x581338;_0x2aecd5=_['merge']({},_0x2aecd5,_0x187810[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x2aecd5)['then'](function(_0xc29834){if(_0xc29834){_0x58955e=_0xc29834;return _0xc29834[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x1f2f2b){if(_0x1f2f2b){if(!_0x1f2f2b[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))]['ValidationErrorItem'](_0xb687('0x6f'),0x193);}_0x488a2a=_0x1f2f2b;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x3591e2){if(_0x3591e2){_0x303738=_['keyBy'](_0x3591e2,'id');var _0x4d0c14;var _0x200b55=squel[_0xb687('0x72')]();_0x200b55[_0xb687('0x73')](_0x58955e[_0xb687('0x74')]);for(var _0x33f4de=0x0;_0x33f4de<_0x488a2a[_0xb687('0x3e')];_0x33f4de+=0x1){_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x75')]?_0x303738[_0x488a2a[_0x33f4de]['MetricId']][_0xb687('0x76')]:_0x488a2a[_0x33f4de][_0xb687('0x69')];_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x77')]?_['replace'](_0x295795[_0x488a2a[_0x33f4de][_0xb687('0x77')]],'%s',_0x4d0c14):_0x4d0c14;_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x79')]?_[_0xb687('0x78')](_0xe7056c[_0x488a2a[_0x33f4de]['format']],'%s',_0x4d0c14):_0x4d0c14;if(_0x488a2a[_0x33f4de][_0xb687('0x7a')]){_0x200b55[_0xb687('0x68')](_0x4d0c14);}_0x488a2a[_0x33f4de]['orderBy']&&_0x200b55[_0xb687('0x40')](_0x4d0c14,_0x488a2a[_0x33f4de][_0xb687('0x7b')]===_0xb687('0x8f')?![]:!![]);_0x200b55[_0xb687('0x69')](_0x4d0c14,_0x488a2a[_0x33f4de]['alias']||_0x4d0c14);}if(_0x58955e[_0xb687('0x7d')]){_0x58955e[_0xb687('0x7d')]=JSON[_0xb687('0x7e')](_0x58955e[_0xb687('0x7d')]);for(var _0xcff220=0x0;_0xcff220<_0x58955e['joins'][_0xb687('0x3e')];_0xcff220+=0x1){if(_0x58955e[_0xb687('0x7d')][_0xcff220]['type']&&_[_0xb687('0x61')](_0x4dd8f4,_0x58955e[_0xb687('0x7d')][_0xcff220]['type'])&&_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x90')]&&_0x58955e[_0xb687('0x7d')][_0xcff220]['foreignTable']&&_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x80')]){_0x200b55[_0x58955e['joins'][_0xcff220]['type']](_0x58955e['joins'][_0xcff220][_0xb687('0x7f')],null,util['format'](_0xb687('0xa7'),_0x58955e[_0xb687('0x74')],_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x90')],_0x58955e[_0xb687('0x7d')][_0xcff220]['foreignTable'],_0x58955e['joins'][_0xcff220][_0xb687('0x80')]));}}}if(_0x58955e[_0xb687('0x81')]){_0x58955e[_0xb687('0x81')]=JSON[_0xb687('0x7e')](_0x58955e[_0xb687('0x81')]);_0x200b55[_0xb687('0x42')](_0x394ed6(_0x58955e[_0xb687('0x81')]['group']));}_0x581338=_0x200b55['clone']();_0x200b55['limit'](_0x386d12);_0x200b55[_0xb687('0x1f')](0x0);logger[_0xb687('0x83')](_0xb687('0x84'),_0x200b55['toString']());return dbH['sequelize']['query'](_0x200b55[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')][_0xb687('0xa3')]});}})[_0xb687('0x28')](function(){return{'sql':_0x581338[_0xb687('0x85')]()};})[_0xb687('0x28')](respondWithResult(_0x1d21ef,null))[_0xb687('0x48')](handleError(_0x1d21ef,null));};
\ No newline at end of file
index 8e414b0..09e34aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f1a=['lodash','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports'];(function(_0xf49e6e,_0x1d33b1){var _0x4889b6=function(_0x2c0bf7){while(--_0x2c0bf7){_0xf49e6e['push'](_0xf49e6e['shift']());}};_0x4889b6(++_0x1d33b1);}(_0x1f1a,0x12c));var _0xa1f1=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x1f1a[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0xa1f1('0x0'));var util=require('util');var logger=require(_0xa1f1('0x1'))(_0xa1f1('0x2'));var moment=require('moment');var BPromise=require(_0xa1f1('0x3'));var rp=require(_0xa1f1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa1f1('0x5'));var config=require(_0xa1f1('0x6'));var attributes=require(_0xa1f1('0x7'));module[_0xa1f1('0x8')]=function(_0x21b5ce,_0x3c866f){return _0x21b5ce[_0xa1f1('0x9')](_0xa1f1('0xa'),attributes,{'tableName':_0xa1f1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b97=['exports','define','AnalyticDefaultReport','util','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x522543,_0x12cc4e){var _0x2880c2=function(_0x29fe06){while(--_0x29fe06){_0x522543['push'](_0x522543['shift']());}};_0x2880c2(++_0x12cc4e);}(_0x0b97,0xc9));var _0x70b9=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0b97[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0x70b9('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x70b9('0x1'));var BPromise=require(_0x70b9('0x2'));var rp=require(_0x70b9('0x3'));var fs=require('fs');var path=require(_0x70b9('0x4'));var rimraf=require('rimraf');var config=require(_0x70b9('0x5'));var attributes=require('./analyticDefaultReport.attributes');module[_0x70b9('0x6')]=function(_0x59363b,_0x23d9e3){return _0x59363b[_0x70b9('0x7')](_0x70b9('0x8'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 27ab6c4..2a2ac96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0701=['../../config/environment','jayson/promise','client','http','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x31d849,_0x3db9bc){var _0x1c55b3=function(_0x3b8040){while(--_0x3b8040){_0x31d849['push'](_0x31d849['shift']());}};_0x1c55b3(++_0x3db9bc);}(_0x0701,0xca));var _0x1070=function(_0x52f09a,_0x58f11b){_0x52f09a=_0x52f09a-0x0;var _0x1899a3=_0x0701[_0x52f09a];return _0x1899a3;};'use strict';var _=require('lodash');var util=require(_0x1070('0x0'));var moment=require('moment');var BPromise=require(_0x1070('0x1'));var rs=require(_0x1070('0x2'));var fs=require('fs');var Redis=require(_0x1070('0x3'));var db=require(_0x1070('0x4'))['db'];var utils=require(_0x1070('0x5'));var logger=require(_0x1070('0x6'))(_0x1070('0x7'));var config=require(_0x1070('0x8'));var jayson=require(_0x1070('0x9'));var client=jayson[_0x1070('0xa')][_0x1070('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x124abd,_0x124414,_0x32aadd){return new BPromise(function(_0x26d067,_0xbabe8e){return client['request'](_0x124abd,_0x32aadd)['then'](function(_0x4c4e53){logger[_0x1070('0xc')](_0x1070('0xd'),_0x124414,_0x1070('0xe'));logger['debug'](_0x1070('0xf'),_0x124414,_0x1070('0xe'),JSON['stringify'](_0x4c4e53));if(_0x4c4e53['error']){if(_0x4c4e53[_0x1070('0x10')][_0x1070('0x11')]===0x1f4){logger['error'](_0x1070('0xd'),_0x124414,_0x4c4e53[_0x1070('0x10')][_0x1070('0x12')]);return _0xbabe8e(_0x4c4e53[_0x1070('0x10')][_0x1070('0x12')]);}logger['error']('AnalyticDefaultReport,\x20%s,\x20%s',_0x124414,_0x4c4e53[_0x1070('0x10')][_0x1070('0x12')]);return _0x26d067(_0x4c4e53['error']['message']);}else{logger[_0x1070('0xc')](_0x1070('0xd'),_0x124414,_0x1070('0xe'));_0x26d067(_0x4c4e53[_0x1070('0x13')][_0x1070('0x12')]);}})[_0x1070('0x14')](function(_0x4727b2){logger[_0x1070('0x10')](_0x1070('0xd'),_0x124414,_0x4727b2);_0xbabe8e(_0x4727b2);});});}
\ No newline at end of file
+var _0xec07=['message','util','moment','bluebird','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xec07,0x1e1));var _0x7ec0=function(_0x333630,_0xc5d7be){_0x333630=_0x333630-0x0;var _0x3e6140=_0xec07[_0x333630];return _0x3e6140;};'use strict';var _=require('lodash');var util=require(_0x7ec0('0x0'));var moment=require(_0x7ec0('0x1'));var BPromise=require(_0x7ec0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7ec0('0x3'))('rpc');var config=require(_0x7ec0('0x4'));var jayson=require(_0x7ec0('0x5'));var client=jayson[_0x7ec0('0x6')][_0x7ec0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16ab61,_0x37e611,_0x2bd4ab){return new BPromise(function(_0x528c64,_0xef993a){return client[_0x7ec0('0x8')](_0x16ab61,_0x2bd4ab)[_0x7ec0('0x9')](function(_0x88e17a){logger[_0x7ec0('0xa')](_0x7ec0('0xb'),_0x37e611,'request\x20sent');logger['debug'](_0x7ec0('0xc'),_0x37e611,_0x7ec0('0xd'),JSON['stringify'](_0x88e17a));if(_0x88e17a[_0x7ec0('0xe')]){if(_0x88e17a[_0x7ec0('0xe')]['code']===0x1f4){logger[_0x7ec0('0xe')](_0x7ec0('0xb'),_0x37e611,_0x88e17a[_0x7ec0('0xe')][_0x7ec0('0xf')]);return _0xef993a(_0x88e17a[_0x7ec0('0xe')][_0x7ec0('0xf')]);}logger[_0x7ec0('0xe')](_0x7ec0('0xb'),_0x37e611,_0x88e17a[_0x7ec0('0xe')]['message']);return _0x528c64(_0x88e17a['error'][_0x7ec0('0xf')]);}else{logger[_0x7ec0('0xa')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x37e611,_0x7ec0('0xd'));_0x528c64(_0x88e17a['result'][_0x7ec0('0xf')]);}})['catch'](function(_0x17ea0b){logger[_0x7ec0('0xe')](_0x7ec0('0xb'),_0x37e611,_0x17ea0b);_0xef993a(_0x17ea0b);});});}
\ No newline at end of file
index 967184d..cc9e4db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeded=['Router','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','/:id/preview','preview','run','query','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4c7043,_0x24bff4){var _0x3ec724=function(_0x43ec0d){while(--_0x43ec0d){_0x4c7043['push'](_0x4c7043['shift']());}};_0x3ec724(++_0x24bff4);}(_0xeded,0x10f));var _0xdede=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xeded[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xdede('0x0'));var util=require(_0xdede('0x1'));var path=require(_0xdede('0x2'));var timeout=require(_0xdede('0x3'));var express=require(_0xdede('0x4'));var router=express[_0xdede('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdede('0x6'));var interaction=require(_0xdede('0x7'));var config=require('../../config/environment');var controller=require(_0xdede('0x8'));router[_0xdede('0x9')]('/',auth[_0xdede('0xa')](),controller[_0xdede('0xb')]);router[_0xdede('0x9')](_0xdede('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xdede('0x9')](_0xdede('0xd'),auth[_0xdede('0xa')](),controller[_0xdede('0xe')]);router[_0xdede('0x9')]('/:id/run',auth[_0xdede('0xa')](),controller[_0xdede('0xf')]);router[_0xdede('0x9')]('/:id/query',auth['isAuthenticated'](),controller[_0xdede('0x10')]);router[_0xdede('0x11')]('/',auth[_0xdede('0xa')](),controller['create']);router[_0xdede('0x12')](_0xdede('0xc'),auth[_0xdede('0xa')](),controller[_0xdede('0x13')]);router[_0xdede('0x14')](_0xdede('0xc'),auth[_0xdede('0xa')](),controller[_0xdede('0x15')]);module[_0xdede('0x16')]=router;
\ No newline at end of file
+var _0x797a=['/:id/run','run','/:id/query','query','update','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','show','/:id/preview','preview'];(function(_0x5466c3,_0x29b1c5){var _0x24b50d=function(_0x2b82bf){while(--_0x2b82bf){_0x5466c3['push'](_0x5466c3['shift']());}};_0x24b50d(++_0x29b1c5);}(_0x797a,0xe4));var _0xa797=function(_0x465b12,_0x2ec29f){_0x465b12=_0x465b12-0x0;var _0x25b09f=_0x797a[_0x465b12];return _0x25b09f;};'use strict';var multer=require('multer');var util=require(_0xa797('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa797('0x1'));var router=express[_0xa797('0x2')]();var fs_extra=require(_0xa797('0x3'));var auth=require(_0xa797('0x4'));var interaction=require(_0xa797('0x5'));var config=require(_0xa797('0x6'));var controller=require(_0xa797('0x7'));router[_0xa797('0x8')]('/',auth[_0xa797('0x9')](),controller[_0xa797('0xa')]);router[_0xa797('0x8')]('/:id',auth[_0xa797('0x9')](),controller[_0xa797('0xb')]);router[_0xa797('0x8')](_0xa797('0xc'),auth['isAuthenticated'](),controller[_0xa797('0xd')]);router['get'](_0xa797('0xe'),auth[_0xa797('0x9')](),controller[_0xa797('0xf')]);router[_0xa797('0x8')](_0xa797('0x10'),auth['isAuthenticated'](),controller[_0xa797('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0xa797('0x9')](),controller[_0xa797('0x12')]);router[_0xa797('0x13')]('/:id',auth[_0xa797('0x9')](),controller[_0xa797('0x14')]);module[_0xa797('0x15')]=router;
\ No newline at end of file
index 4d7b9c7..6cd5903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2512=['scheduled','INTEGER','sequelize','moment','exports','STRING','ENUM','csv','DATE','Loading'];(function(_0x146624,_0x103622){var _0x4b05fc=function(_0x3f40b3){while(--_0x3f40b3){_0x146624['push'](_0x146624['shift']());}};_0x4b05fc(++_0x103622);}(_0x2512,0xc0));var _0x2251=function(_0x59dccc,_0x184c1c){_0x59dccc=_0x59dccc-0x0;var _0xc97bcb=_0x2512[_0x59dccc];return _0xc97bcb;};'use strict';var Sequelize=require(_0x2251('0x0'));var moment=require(_0x2251('0x1'));module[_0x2251('0x2')]={'name':{'type':Sequelize[_0x2251('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x2251('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x2251('0x4')](_0x2251('0x5'),'pdf','xlsx'),'allowNull':![],'defaultValue':_0x2251('0x5')},'savename':{'type':Sequelize[_0x2251('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x2251('0x6')]},'endDate':{'type':Sequelize[_0x2251('0x6')]},'status':{'type':Sequelize[_0x2251('0x3')],'defaultValue':_0x2251('0x7')},'type':{'type':Sequelize[_0x2251('0x4')]('manual',_0x2251('0x8')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x2251('0x9')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2290=['UNSIGNED','sequelize','moment','STRING','ENUM','csv','DATE','Loading','manual','INTEGER'];(function(_0x9dd37c,_0x3e255e){var _0x2a522c=function(_0x2ce2ca){while(--_0x2ce2ca){_0x9dd37c['push'](_0x9dd37c['shift']());}};_0x2a522c(++_0x3e255e);}(_0x2290,0x83));var _0x0229=function(_0x1d32b4,_0x1e58ab){_0x1d32b4=_0x1d32b4-0x0;var _0x409d3c=_0x2290[_0x1d32b4];return _0x409d3c;};'use strict';var Sequelize=require(_0x0229('0x0'));var moment=require(_0x0229('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x0229('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x0229('0x3')](_0x0229('0x4'),'pdf','xlsx'),'allowNull':![],'defaultValue':_0x0229('0x4')},'savename':{'type':Sequelize[_0x0229('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x0229('0x5')]},'endDate':{'type':Sequelize[_0x0229('0x5')]},'status':{'type':Sequelize[_0x0229('0x2')],'defaultValue':_0x0229('0x6')},'type':{'type':Sequelize['ENUM'](_0x0229('0x7'),'scheduled'),'allowNull':![],'defaultValue':_0x0229('0x7')},'reportId':{'type':Sequelize[_0x0229('0x8')](0xb)[_0x0229('0x9')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 963e5e8..21fa16c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5627=['ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','UserProfileResource','error','name','map','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','AnalyticExtractedReport','includeAll','include','rows','catch','show','filters','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','exists','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x5627,0x1d5));var _0x7562=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5627[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x7562('0x0'));var rimraf=require(_0x7562('0x1'));var zipdir=require(_0x7562('0x2'));var jsonpatch=require(_0x7562('0x3'));var rp=require(_0x7562('0x4'));var moment=require(_0x7562('0x5'));var BPromise=require(_0x7562('0x6'));var Mustache=require('mustache');var util=require(_0x7562('0x7'));var path=require(_0x7562('0x8'));var sox=require(_0x7562('0x9'));var csv=require(_0x7562('0xa'));var ejs=require(_0x7562('0xb'));var fs=require('fs');var fs_extra=require(_0x7562('0xc'));var _=require('lodash');var squel=require(_0x7562('0xd'));var crypto=require(_0x7562('0xe'));var jsforce=require(_0x7562('0xf'));var deskjs=require(_0x7562('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7562('0x11'));var Redis=require('ioredis');var authService=require(_0x7562('0x12'));var qs=require(_0x7562('0x13'));var as=require(_0x7562('0x14'));var hardwareService=require(_0x7562('0x15'));var logger=require('../../config/logger')(_0x7562('0x16'));var utils=require(_0x7562('0x17'));var config=require(_0x7562('0x18'));var licenseUtil=require(_0x7562('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3943d4,_0x431588){_0x431588=_0x431588||0xcc;return function(_0x416f15){if(_0x416f15){return _0x3943d4[_0x7562('0x1a')](_0x431588);}return _0x3943d4[_0x7562('0x1b')](_0x431588)[_0x7562('0x1c')]();};}function respondWithResult(_0x41598f,_0x4ea694){_0x4ea694=_0x4ea694||0xc8;return function(_0x13c931){if(_0x13c931){return _0x41598f[_0x7562('0x1b')](_0x4ea694)[_0x7562('0x1d')](_0x13c931);}};}function respondWithFilteredResult(_0x1e5818,_0x9f7563){return function(_0x5951bf){if(_0x5951bf){var _0x1e50c9=typeof _0x9f7563['offset']===_0x7562('0x1e')&&typeof _0x9f7563[_0x7562('0x1f')]===_0x7562('0x1e');var _0x5b722f=_0x5951bf[_0x7562('0x20')];var _0xbf4ab6=_0x1e50c9?0x0:_0x9f7563[_0x7562('0x21')];var _0x1ae96f=_0x1e50c9?_0x5951bf[_0x7562('0x20')]:_0x9f7563[_0x7562('0x21')]+_0x9f7563['limit'];var _0x5b7892;if(_0x1ae96f>=_0x5b722f){_0x1ae96f=_0x5b722f;_0x5b7892=0xc8;}else{_0x5b7892=0xce;}_0x1e5818[_0x7562('0x1b')](_0x5b7892);return _0x1e5818[_0x7562('0x22')](_0x7562('0x23'),_0xbf4ab6+'-'+_0x1ae96f+'/'+_0x5b722f)[_0x7562('0x1d')](_0x5951bf);}return null;};}function patchUpdates(_0x584e02){return function(_0x21c084){try{jsonpatch['apply'](_0x21c084,_0x584e02,!![]);}catch(_0x27aaa0){return BPromise['reject'](_0x27aaa0);}return _0x21c084[_0x7562('0x24')]();};}function saveUpdates(_0x8d3a57,_0x3b06b4){return function(_0x35646d){if(_0x35646d){return _0x35646d[_0x7562('0x25')](_0x8d3a57)[_0x7562('0x26')](function(_0x463417){return _0x463417;});}return null;};}function removeEntity(_0x1c2f3b,_0x29a841){return function(_0x212b1a){if(_0x212b1a){return _0x212b1a[_0x7562('0x27')]()[_0x7562('0x26')](function(){var _0x93cc7=_0x212b1a['get']({'plain':!![]});var _0x4c3726='ExtractedReports';return db[_0x7562('0x28')][_0x7562('0x27')]({'where':{'type':_0x4c3726,'resourceId':_0x93cc7['id']}})[_0x7562('0x26')](function(){return _0x212b1a;});})[_0x7562('0x26')](function(){_0x1c2f3b[_0x7562('0x1b')](0xcc)[_0x7562('0x1c')]();});}};}function handleEntityNotFound(_0x3ddb97,_0x5a0dac){return function(_0xe924a){if(!_0xe924a){_0x3ddb97[_0x7562('0x1a')](0x194);}return _0xe924a;};}function handleError(_0x5554e6,_0x476b81){_0x476b81=_0x476b81||0x1f4;return function(_0x3bb8a0){logger[_0x7562('0x29')](_0x3bb8a0['stack']);if(_0x3bb8a0[_0x7562('0x2a')]){delete _0x3bb8a0[_0x7562('0x2a')];}_0x5554e6[_0x7562('0x1b')](_0x476b81)['send'](_0x3bb8a0);};}exports['index']=function(_0x3a4e5f,_0x5b9247){var _0x500bd6={},_0x2cde91={},_0xa7a045={'count':0x0,'rows':[]};var _0x41668e=_[_0x7562('0x2b')](db['AnalyticExtractedReport'][_0x7562('0x2c')],function(_0x32200b){return{'name':_0x32200b[_0x7562('0x2d')],'type':_0x32200b[_0x7562('0x2e')]['key']};});_0x2cde91[_0x7562('0x2f')]=_[_0x7562('0x2b')](_0x41668e,_0x7562('0x2a'));_0x2cde91[_0x7562('0x30')]=_[_0x7562('0x31')](_0x3a4e5f['query']);_0x2cde91['filters']=_['intersection'](_0x2cde91['model'],_0x2cde91[_0x7562('0x30')]);_0x500bd6[_0x7562('0x32')]=_[_0x7562('0x33')](_0x2cde91[_0x7562('0x2f')],qs[_0x7562('0x34')](_0x3a4e5f['query'][_0x7562('0x34')]));_0x500bd6['attributes']=_0x500bd6['attributes'][_0x7562('0x35')]?_0x500bd6[_0x7562('0x32')]:_0x2cde91[_0x7562('0x2f')];if(!_0x3a4e5f[_0x7562('0x30')][_0x7562('0x36')](_0x7562('0x37'))){_0x500bd6[_0x7562('0x1f')]=qs[_0x7562('0x1f')](_0x3a4e5f[_0x7562('0x30')][_0x7562('0x1f')]);_0x500bd6['offset']=qs[_0x7562('0x21')](_0x3a4e5f[_0x7562('0x30')][_0x7562('0x21')]);}_0x500bd6[_0x7562('0x38')]=qs[_0x7562('0x39')](_0x3a4e5f[_0x7562('0x30')][_0x7562('0x39')]);_0x500bd6['where']=qs['filters'](_[_0x7562('0x3a')](_0x3a4e5f[_0x7562('0x30')],_0x2cde91['filters']),_0x41668e);if(_0x3a4e5f[_0x7562('0x30')][_0x7562('0x3b')]){_0x500bd6['where']=_[_0x7562('0x3c')](_0x500bd6[_0x7562('0x3d')],{'$or':_[_0x7562('0x2b')](_0x41668e,function(_0x5a98fe){if(_0x5a98fe[_0x7562('0x2e')]!==_0x7562('0x3e')){var _0x28f4a8={};_0x28f4a8[_0x5a98fe[_0x7562('0x2a')]]={'$like':'%'+_0x3a4e5f[_0x7562('0x30')][_0x7562('0x3b')]+'%'};return _0x28f4a8;}})});}_0x500bd6=_['merge']({},_0x500bd6,_0x3a4e5f[_0x7562('0x3f')]);var _0x54f47f={'where':_0x500bd6[_0x7562('0x3d')]};return db[_0x7562('0x40')][_0x7562('0x20')](_0x54f47f)[_0x7562('0x26')](function(_0xc56e02){_0xa7a045[_0x7562('0x20')]=_0xc56e02;if(_0x3a4e5f[_0x7562('0x30')][_0x7562('0x41')]){_0x500bd6[_0x7562('0x42')]=[{'all':!![]}];}return db['AnalyticExtractedReport']['findAll'](_0x500bd6);})[_0x7562('0x26')](function(_0x2cc20a){_0xa7a045[_0x7562('0x43')]=_0x2cc20a;return _0xa7a045;})[_0x7562('0x26')](respondWithFilteredResult(_0x5b9247,_0x500bd6))[_0x7562('0x44')](handleError(_0x5b9247,null));};exports[_0x7562('0x45')]=function(_0x433447,_0x41ef7a){var _0x3f8663={'raw':!![],'where':{'id':_0x433447['params']['id']}},_0x5b54ba={};_0x5b54ba['model']=_[_0x7562('0x31')](db[_0x7562('0x40')][_0x7562('0x2c')]);_0x5b54ba[_0x7562('0x30')]=_[_0x7562('0x31')](_0x433447[_0x7562('0x30')]);_0x5b54ba[_0x7562('0x46')]=_['intersection'](_0x5b54ba[_0x7562('0x2f')],_0x5b54ba[_0x7562('0x30')]);_0x3f8663['attributes']=_[_0x7562('0x33')](_0x5b54ba[_0x7562('0x2f')],qs[_0x7562('0x34')](_0x433447[_0x7562('0x30')][_0x7562('0x34')]));_0x3f8663[_0x7562('0x32')]=_0x3f8663[_0x7562('0x32')][_0x7562('0x35')]?_0x3f8663[_0x7562('0x32')]:_0x5b54ba['model'];if(_0x433447[_0x7562('0x30')][_0x7562('0x41')]){_0x3f8663['include']=[{'all':!![]}];}_0x3f8663=_[_0x7562('0x3c')]({},_0x3f8663,_0x433447[_0x7562('0x3f')]);return db['AnalyticExtractedReport'][_0x7562('0x47')](_0x3f8663)[_0x7562('0x26')](handleEntityNotFound(_0x41ef7a,null))['then'](respondWithResult(_0x41ef7a,null))[_0x7562('0x44')](handleError(_0x41ef7a,null));};exports[_0x7562('0x48')]=function(_0x36ca77,_0x3380b3){return db['AnalyticExtractedReport'][_0x7562('0x48')](_0x36ca77['body'],{})[_0x7562('0x26')](function(_0x47a5b8){var _0x546dae=_0x36ca77[_0x7562('0x49')][_0x7562('0x4a')]({'plain':!![]});if(!_0x546dae)throw new Error(_0x7562('0x4b'));if(_0x546dae[_0x7562('0x4c')]==='user'){var _0x2b6b79=_0x47a5b8[_0x7562('0x4a')]({'plain':!![]});var _0x106f68='ExtractedReports';return db['UserProfileSection']['find']({'where':{'name':_0x106f68,'userProfileId':_0x546dae[_0x7562('0x4d')]},'raw':!![]})['then'](function(_0x2b6f2a){if(_0x2b6f2a&&_0x2b6f2a[_0x7562('0x4e')]===0x0){return db[_0x7562('0x28')][_0x7562('0x48')]({'name':_0x2b6b79[_0x7562('0x2a')],'resourceId':_0x2b6b79['id'],'type':_0x2b6f2a['name'],'sectionId':_0x2b6f2a['id']},{})[_0x7562('0x26')](function(){return _0x47a5b8;});}else{return _0x47a5b8;}})['catch'](function(_0x207350){logger['error'](_0x7562('0x4f'),_0x207350);throw _0x207350;});}return _0x47a5b8;})[_0x7562('0x26')](respondWithResult(_0x3380b3,0xc9))[_0x7562('0x44')](handleError(_0x3380b3,null));};exports[_0x7562('0x25')]=function(_0x3c9c1c,_0x414f37){if(_0x3c9c1c[_0x7562('0x50')]['id']){delete _0x3c9c1c[_0x7562('0x50')]['id'];}return db['AnalyticExtractedReport'][_0x7562('0x47')]({'where':{'id':_0x3c9c1c['params']['id']}})['then'](handleEntityNotFound(_0x414f37,null))[_0x7562('0x26')](saveUpdates(_0x3c9c1c[_0x7562('0x50')],null))[_0x7562('0x26')](respondWithResult(_0x414f37,null))[_0x7562('0x44')](handleError(_0x414f37,null));};exports[_0x7562('0x27')]=function(_0x4bb8a2,_0x492452){return db[_0x7562('0x40')][_0x7562('0x47')]({'where':{'id':_0x4bb8a2[_0x7562('0x51')]['id']}})[_0x7562('0x26')](handleEntityNotFound(_0x492452,null))[_0x7562('0x26')](removeEntity(_0x492452,null))[_0x7562('0x44')](handleError(_0x492452,null));};exports[_0x7562('0x52')]=function(_0x18466a,_0x46e7fc,_0x2d0a28){return db[_0x7562('0x40')][_0x7562('0x47')]({'where':{'id':_0x18466a[_0x7562('0x51')]['id']},'attributes':['name',_0x7562('0x53'),_0x7562('0x54'),_0x7562('0x55')],'raw':!![]})[_0x7562('0x26')](handleEntityNotFound(_0x46e7fc,null))['then'](function(_0x43c572){if(_0x43c572){if(!fs[_0x7562('0x56')](path[_0x7562('0x57')](config[_0x7562('0x58')],_0x7562('0x59'),_0x43c572['savename']))){throw new db[(_0x7562('0x5a'))][(_0x7562('0x5b'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x18466a[_0x7562('0x30')][_0x7562('0x5c')]){return _0x46e7fc[_0x7562('0x1a')](0xc8);}return _0x46e7fc[_0x7562('0x52')](path[_0x7562('0x57')](config[_0x7562('0x58')],_0x7562('0x59'),_0x43c572[_0x7562('0x54')]),util[_0x7562('0x5d')](_0x7562('0x5e'),_0x43c572['basename']||_0x43c572[_0x7562('0x2a')],_0x43c572[_0x7562('0x55')][_0x7562('0x5f')]()));}})['catch'](handleError(_0x46e7fc,null));};
\ No newline at end of file
+var _0x2366=['Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','download','savename','output','join','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','server/files/reports','format','eml-format','rimraf','request-promise','moment','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','get','ExtractedReports','UserProfileResource','stack','name','send','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body'];(function(_0x336913,_0x44d282){var _0x16d33f=function(_0x551537){while(--_0x551537){_0x336913['push'](_0x336913['shift']());}};_0x16d33f(++_0x44d282);}(_0x2366,0x177));var _0x6236=function(_0xb60643,_0x5a28f0){_0xb60643=_0xb60643-0x0;var _0x2375d3=_0x2366[_0xb60643];return _0x2375d3;};'use strict';var emlformat=require(_0x6236('0x0'));var rimraf=require(_0x6236('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6236('0x2'));var moment=require(_0x6236('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6236('0x4'));var util=require(_0x6236('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x6236('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6236('0x7'));var _=require(_0x6236('0x8'));var squel=require(_0x6236('0x9'));var crypto=require(_0x6236('0xa'));var jsforce=require(_0x6236('0xb'));var deskjs=require(_0x6236('0xc'));var toCsv=require(_0x6236('0x6'));var querystring=require(_0x6236('0xd'));var Papa=require(_0x6236('0xe'));var Redis=require(_0x6236('0xf'));var authService=require(_0x6236('0x10'));var qs=require(_0x6236('0x11'));var as=require(_0x6236('0x12'));var hardwareService=require(_0x6236('0x13'));var logger=require(_0x6236('0x14'))(_0x6236('0x15'));var utils=require('../../config/utils');var config=require(_0x6236('0x16'));var licenseUtil=require(_0x6236('0x17'));var db=require(_0x6236('0x18'))['db'];function respondWithStatusCode(_0x1642ea,_0x3eac46){_0x3eac46=_0x3eac46||0xcc;return function(_0xcca0bb){if(_0xcca0bb){return _0x1642ea[_0x6236('0x19')](_0x3eac46);}return _0x1642ea[_0x6236('0x1a')](_0x3eac46)[_0x6236('0x1b')]();};}function respondWithResult(_0x5489a2,_0x3d811e){_0x3d811e=_0x3d811e||0xc8;return function(_0x220f6b){if(_0x220f6b){return _0x5489a2[_0x6236('0x1a')](_0x3d811e)[_0x6236('0x1c')](_0x220f6b);}};}function respondWithFilteredResult(_0x3ddc32,_0xa5656b){return function(_0x4a3b2b){if(_0x4a3b2b){var _0x2bbe00=typeof _0xa5656b[_0x6236('0x1d')]===_0x6236('0x1e')&&typeof _0xa5656b[_0x6236('0x1f')]===_0x6236('0x1e');var _0x3def41=_0x4a3b2b[_0x6236('0x20')];var _0x4b4d72=_0x2bbe00?0x0:_0xa5656b[_0x6236('0x1d')];var _0x15fb3c=_0x2bbe00?_0x4a3b2b[_0x6236('0x20')]:_0xa5656b[_0x6236('0x1d')]+_0xa5656b[_0x6236('0x1f')];var _0x49ea64;if(_0x15fb3c>=_0x3def41){_0x15fb3c=_0x3def41;_0x49ea64=0xc8;}else{_0x49ea64=0xce;}_0x3ddc32[_0x6236('0x1a')](_0x49ea64);return _0x3ddc32[_0x6236('0x21')](_0x6236('0x22'),_0x4b4d72+'-'+_0x15fb3c+'/'+_0x3def41)[_0x6236('0x1c')](_0x4a3b2b);}return null;};}function patchUpdates(_0x1c88c4){return function(_0x1e471d){try{jsonpatch[_0x6236('0x23')](_0x1e471d,_0x1c88c4,!![]);}catch(_0x2b7e3e){return BPromise['reject'](_0x2b7e3e);}return _0x1e471d['save']();};}function saveUpdates(_0x5d9702,_0x4cc3dd){return function(_0x3184a6){if(_0x3184a6){return _0x3184a6['update'](_0x5d9702)[_0x6236('0x24')](function(_0xaad2ab){return _0xaad2ab;});}return null;};}function removeEntity(_0x38a612,_0x5f072c){return function(_0x6f43ff){if(_0x6f43ff){return _0x6f43ff[_0x6236('0x25')]()[_0x6236('0x24')](function(){var _0x45f7ec=_0x6f43ff[_0x6236('0x26')]({'plain':!![]});var _0xf908ce=_0x6236('0x27');return db[_0x6236('0x28')][_0x6236('0x25')]({'where':{'type':_0xf908ce,'resourceId':_0x45f7ec['id']}})[_0x6236('0x24')](function(){return _0x6f43ff;});})[_0x6236('0x24')](function(){_0x38a612[_0x6236('0x1a')](0xcc)[_0x6236('0x1b')]();});}};}function handleEntityNotFound(_0x390408,_0x353b82){return function(_0x321312){if(!_0x321312){_0x390408[_0x6236('0x19')](0x194);}return _0x321312;};}function handleError(_0x85302f,_0x278689){_0x278689=_0x278689||0x1f4;return function(_0x352ea4){logger['error'](_0x352ea4[_0x6236('0x29')]);if(_0x352ea4[_0x6236('0x2a')]){delete _0x352ea4[_0x6236('0x2a')];}_0x85302f['status'](_0x278689)[_0x6236('0x2b')](_0x352ea4);};}exports['index']=function(_0x55e795,_0x5ebe11){var _0xe0b6={},_0x404306={},_0x177bd6={'count':0x0,'rows':[]};var _0x230fa6=_[_0x6236('0x2c')](db[_0x6236('0x2d')][_0x6236('0x2e')],function(_0x56516b){return{'name':_0x56516b[_0x6236('0x2f')],'type':_0x56516b[_0x6236('0x30')][_0x6236('0x31')]};});_0x404306[_0x6236('0x32')]=_[_0x6236('0x2c')](_0x230fa6,'name');_0x404306[_0x6236('0x33')]=_['keys'](_0x55e795[_0x6236('0x33')]);_0x404306[_0x6236('0x34')]=_[_0x6236('0x35')](_0x404306[_0x6236('0x32')],_0x404306[_0x6236('0x33')]);_0xe0b6['attributes']=_[_0x6236('0x35')](_0x404306['model'],qs['fields'](_0x55e795['query'][_0x6236('0x36')]));_0xe0b6['attributes']=_0xe0b6[_0x6236('0x37')][_0x6236('0x38')]?_0xe0b6[_0x6236('0x37')]:_0x404306[_0x6236('0x32')];if(!_0x55e795[_0x6236('0x33')][_0x6236('0x39')](_0x6236('0x3a'))){_0xe0b6[_0x6236('0x1f')]=qs['limit'](_0x55e795[_0x6236('0x33')][_0x6236('0x1f')]);_0xe0b6['offset']=qs[_0x6236('0x1d')](_0x55e795['query'][_0x6236('0x1d')]);}_0xe0b6['order']=qs['sort'](_0x55e795[_0x6236('0x33')][_0x6236('0x3b')]);_0xe0b6[_0x6236('0x3c')]=qs[_0x6236('0x34')](_[_0x6236('0x3d')](_0x55e795['query'],_0x404306[_0x6236('0x34')]),_0x230fa6);if(_0x55e795[_0x6236('0x33')][_0x6236('0x3e')]){_0xe0b6[_0x6236('0x3c')]=_[_0x6236('0x3f')](_0xe0b6[_0x6236('0x3c')],{'$or':_[_0x6236('0x2c')](_0x230fa6,function(_0x536165){if(_0x536165[_0x6236('0x30')]!=='VIRTUAL'){var _0x28630e={};_0x28630e[_0x536165[_0x6236('0x2a')]]={'$like':'%'+_0x55e795[_0x6236('0x33')][_0x6236('0x3e')]+'%'};return _0x28630e;}})});}_0xe0b6=_[_0x6236('0x3f')]({},_0xe0b6,_0x55e795[_0x6236('0x40')]);var _0x3c08eb={'where':_0xe0b6[_0x6236('0x3c')]};return db[_0x6236('0x2d')][_0x6236('0x20')](_0x3c08eb)[_0x6236('0x24')](function(_0x39378d){_0x177bd6[_0x6236('0x20')]=_0x39378d;if(_0x55e795[_0x6236('0x33')][_0x6236('0x41')]){_0xe0b6['include']=[{'all':!![]}];}return db[_0x6236('0x2d')][_0x6236('0x42')](_0xe0b6);})['then'](function(_0x8edda7){_0x177bd6[_0x6236('0x43')]=_0x8edda7;return _0x177bd6;})[_0x6236('0x24')](respondWithFilteredResult(_0x5ebe11,_0xe0b6))[_0x6236('0x44')](handleError(_0x5ebe11,null));};exports['show']=function(_0x2d5ed4,_0x16d96e){var _0x2732d9={'raw':!![],'where':{'id':_0x2d5ed4[_0x6236('0x45')]['id']}},_0x27d78e={};_0x27d78e[_0x6236('0x32')]=_[_0x6236('0x46')](db[_0x6236('0x2d')][_0x6236('0x2e')]);_0x27d78e['query']=_[_0x6236('0x46')](_0x2d5ed4['query']);_0x27d78e[_0x6236('0x34')]=_[_0x6236('0x35')](_0x27d78e[_0x6236('0x32')],_0x27d78e[_0x6236('0x33')]);_0x2732d9[_0x6236('0x37')]=_[_0x6236('0x35')](_0x27d78e['model'],qs[_0x6236('0x36')](_0x2d5ed4[_0x6236('0x33')]['fields']));_0x2732d9[_0x6236('0x37')]=_0x2732d9[_0x6236('0x37')][_0x6236('0x38')]?_0x2732d9['attributes']:_0x27d78e[_0x6236('0x32')];if(_0x2d5ed4[_0x6236('0x33')][_0x6236('0x41')]){_0x2732d9[_0x6236('0x47')]=[{'all':!![]}];}_0x2732d9=_[_0x6236('0x3f')]({},_0x2732d9,_0x2d5ed4[_0x6236('0x40')]);return db['AnalyticExtractedReport'][_0x6236('0x48')](_0x2732d9)[_0x6236('0x24')](handleEntityNotFound(_0x16d96e,null))[_0x6236('0x24')](respondWithResult(_0x16d96e,null))['catch'](handleError(_0x16d96e,null));};exports[_0x6236('0x49')]=function(_0x3cd442,_0x12d5e2){return db['AnalyticExtractedReport'][_0x6236('0x49')](_0x3cd442[_0x6236('0x4a')],{})[_0x6236('0x24')](function(_0x139742){var _0x46ca8d=_0x3cd442['user'][_0x6236('0x26')]({'plain':!![]});if(!_0x46ca8d)throw new Error(_0x6236('0x4b'));if(_0x46ca8d['role']==='user'){var _0x5675e2=_0x139742[_0x6236('0x26')]({'plain':!![]});var _0x49c855=_0x6236('0x27');return db[_0x6236('0x4c')][_0x6236('0x48')]({'where':{'name':_0x49c855,'userProfileId':_0x46ca8d['userProfileId']},'raw':!![]})[_0x6236('0x24')](function(_0x9f8af0){if(_0x9f8af0&&_0x9f8af0[_0x6236('0x4d')]===0x0){return db[_0x6236('0x28')]['create']({'name':_0x5675e2[_0x6236('0x2a')],'resourceId':_0x5675e2['id'],'type':_0x9f8af0[_0x6236('0x2a')],'sectionId':_0x9f8af0['id']},{})[_0x6236('0x24')](function(){return _0x139742;});}else{return _0x139742;}})[_0x6236('0x44')](function(_0x32185e){logger[_0x6236('0x4e')](_0x6236('0x4f'),_0x32185e);throw _0x32185e;});}return _0x139742;})[_0x6236('0x24')](respondWithResult(_0x12d5e2,0xc9))[_0x6236('0x44')](handleError(_0x12d5e2,null));};exports[_0x6236('0x50')]=function(_0x1b1116,_0x2be60a){if(_0x1b1116[_0x6236('0x4a')]['id']){delete _0x1b1116[_0x6236('0x4a')]['id'];}return db[_0x6236('0x2d')][_0x6236('0x48')]({'where':{'id':_0x1b1116['params']['id']}})['then'](handleEntityNotFound(_0x2be60a,null))[_0x6236('0x24')](saveUpdates(_0x1b1116[_0x6236('0x4a')],null))['then'](respondWithResult(_0x2be60a,null))['catch'](handleError(_0x2be60a,null));};exports[_0x6236('0x25')]=function(_0x4f5a31,_0x414ef4){return db['AnalyticExtractedReport'][_0x6236('0x48')]({'where':{'id':_0x4f5a31[_0x6236('0x45')]['id']}})[_0x6236('0x24')](handleEntityNotFound(_0x414ef4,null))['then'](removeEntity(_0x414ef4,null))[_0x6236('0x44')](handleError(_0x414ef4,null));};exports[_0x6236('0x51')]=function(_0x2d6508,_0x456bd1,_0x11c46f){return db[_0x6236('0x2d')][_0x6236('0x48')]({'where':{'id':_0x2d6508[_0x6236('0x45')]['id']},'attributes':[_0x6236('0x2a'),'basename',_0x6236('0x52'),_0x6236('0x53')],'raw':!![]})['then'](handleEntityNotFound(_0x456bd1,null))[_0x6236('0x24')](function(_0x2ba210){if(_0x2ba210){if(!fs['existsSync'](path[_0x6236('0x54')](config['root'],'server/files/reports',_0x2ba210[_0x6236('0x52')]))){throw new db['Sequelize'][(_0x6236('0x55'))](_0x6236('0x56'));}if(_0x2d6508['query'][_0x6236('0x57')]){return _0x456bd1['sendStatus'](0xc8);}return _0x456bd1[_0x6236('0x51')](path['join'](config['root'],_0x6236('0x58'),_0x2ba210[_0x6236('0x52')]),util[_0x6236('0x59')]('%s.%s',_0x2ba210['basename']||_0x2ba210[_0x6236('0x2a')],_0x2ba210[_0x6236('0x53')]['toLowerCase']()));}})['catch'](handleError(_0x456bd1,null));};
\ No newline at end of file
index ba2527d..713b871 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67bb=['bluebird','request-promise','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','api','moment'];(function(_0x5e8602,_0x2ce012){var _0x4434fb=function(_0x5ea1cb){while(--_0x5ea1cb){_0x5e8602['push'](_0x5e8602['shift']());}};_0x4434fb(++_0x2ce012);}(_0x67bb,0xa3));var _0xb67b=function(_0x479218,_0x4ebc6a){_0x479218=_0x479218-0x0;var _0x5f0a39=_0x67bb[_0x479218];return _0x5f0a39;};'use strict';var _=require(_0xb67b('0x0'));var util=require(_0xb67b('0x1'));var logger=require(_0xb67b('0x2'))(_0xb67b('0x3'));var moment=require(_0xb67b('0x4'));var BPromise=require(_0xb67b('0x5'));var rp=require(_0xb67b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb67b('0x7'));var config=require(_0xb67b('0x8'));var attributes=require(_0xb67b('0x9'));module[_0xb67b('0xa')]=function(_0xbb344d,_0x4a0e40){return _0xbb344d[_0xb67b('0xb')](_0xb67b('0xc'),attributes,{'tableName':_0xb67b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb075=['define','AnalyticExtractedReport','lodash','util','../../config/logger','moment','./analyticExtractedReport.attributes','exports'];(function(_0x5aba01,_0x11a9ed){var _0x1b6c10=function(_0x3089f2){while(--_0x3089f2){_0x5aba01['push'](_0x5aba01['shift']());}};_0x1b6c10(++_0x11a9ed);}(_0xb075,0xc2));var _0x5b07=function(_0xeddc51,_0x3c9e18){_0xeddc51=_0xeddc51-0x0;var _0x211bf3=_0xb075[_0xeddc51];return _0x211bf3;};'use strict';var _=require(_0x5b07('0x0'));var util=require(_0x5b07('0x1'));var logger=require(_0x5b07('0x2'))('api');var moment=require(_0x5b07('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5b07('0x4'));module[_0x5b07('0x5')]=function(_0x5a0fb8,_0x3c6df0){return _0x5a0fb8[_0x5b07('0x6')](_0x5b07('0x7'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 275f482..5ea6ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6137=['message','AnalyticExtractedReport,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','then','info','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x314dbf,_0x262af1){var _0x541e60=function(_0x56ad0d){while(--_0x56ad0d){_0x314dbf['push'](_0x314dbf['shift']());}};_0x541e60(++_0x262af1);}(_0x6137,0x11c));var _0x7613=function(_0x155c1b,_0x2bf8ef){_0x155c1b=_0x155c1b-0x0;var _0x1a0045=_0x6137[_0x155c1b];return _0x1a0045;};'use strict';var _=require(_0x7613('0x0'));var util=require('util');var moment=require(_0x7613('0x1'));var BPromise=require(_0x7613('0x2'));var rs=require(_0x7613('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7613('0x4'))['db'];var utils=require(_0x7613('0x5'));var logger=require(_0x7613('0x6'))('rpc');var config=require(_0x7613('0x7'));var jayson=require(_0x7613('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x283b3b,_0x1e07d0,_0x38bb53){return new BPromise(function(_0x236678,_0x3a6e13){return client['request'](_0x283b3b,_0x38bb53)[_0x7613('0x9')](function(_0x486862){logger[_0x7613('0xa')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1e07d0,'request\x20sent');logger[_0x7613('0xb')](_0x7613('0xc'),_0x1e07d0,_0x7613('0xd'),JSON[_0x7613('0xe')](_0x486862));if(_0x486862['error']){if(_0x486862[_0x7613('0xf')]['code']===0x1f4){logger[_0x7613('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1e07d0,_0x486862[_0x7613('0xf')][_0x7613('0x10')]);return _0x3a6e13(_0x486862[_0x7613('0xf')][_0x7613('0x10')]);}logger[_0x7613('0xf')](_0x7613('0x11'),_0x1e07d0,_0x486862[_0x7613('0xf')]['message']);return _0x236678(_0x486862[_0x7613('0xf')][_0x7613('0x10')]);}else{logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x1e07d0,_0x7613('0xd'));_0x236678(_0x486862[_0x7613('0x12')][_0x7613('0x10')]);}})[_0x7613('0x13')](function(_0x5b5485){logger['error'](_0x7613('0x11'),_0x1e07d0,_0x5b5485);_0x3a6e13(_0x5b5485);});});}
\ No newline at end of file
+var _0xb338=['error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','rpc','../../config/environment','client','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xb338,0x16e));var _0x8b33=function(_0x279994,_0x582317){_0x279994=_0x279994-0x0;var _0x353d7a=_0xb338[_0x279994];return _0x353d7a;};'use strict';var _=require(_0x8b33('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8b33('0x1'));var rs=require(_0x8b33('0x2'));var fs=require('fs');var Redis=require(_0x8b33('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8b33('0x4'));var config=require(_0x8b33('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8b33('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2eb2d8,_0x19edd5,_0x50537d){return new BPromise(function(_0x58907c,_0x2ec064){return client[_0x8b33('0x7')](_0x2eb2d8,_0x50537d)[_0x8b33('0x8')](function(_0x109216){logger[_0x8b33('0x9')](_0x8b33('0xa'),_0x19edd5,_0x8b33('0xb'));logger['debug'](_0x8b33('0xc'),_0x19edd5,_0x8b33('0xb'),JSON[_0x8b33('0xd')](_0x109216));if(_0x109216[_0x8b33('0xe')]){if(_0x109216[_0x8b33('0xe')][_0x8b33('0xf')]===0x1f4){logger[_0x8b33('0xe')](_0x8b33('0xa'),_0x19edd5,_0x109216['error'][_0x8b33('0x10')]);return _0x2ec064(_0x109216[_0x8b33('0xe')][_0x8b33('0x10')]);}logger[_0x8b33('0xe')](_0x8b33('0xa'),_0x19edd5,_0x109216[_0x8b33('0xe')][_0x8b33('0x10')]);return _0x58907c(_0x109216[_0x8b33('0xe')][_0x8b33('0x10')]);}else{logger['info'](_0x8b33('0xa'),_0x19edd5,'request\x20sent');_0x58907c(_0x109216[_0x8b33('0x11')][_0x8b33('0x10')]);}})[_0x8b33('0x12')](function(_0x541a20){logger[_0x8b33('0xe')](_0x8b33('0xa'),_0x19edd5,_0x541a20);_0x2ec064(_0x541a20);});});}
\ No newline at end of file
index 0b27378..3713754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadf2=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x39ad32,_0x2a822d){var _0x12d60b=function(_0x167ad3){while(--_0x167ad3){_0x39ad32['push'](_0x39ad32['shift']());}};_0x12d60b(++_0x2a822d);}(_0xadf2,0x146));var _0x2adf=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0xadf2[_0x1203f];return _0x365f0a;};'use strict';var multer=require(_0x2adf('0x0'));var util=require(_0x2adf('0x1'));var path=require(_0x2adf('0x2'));var timeout=require(_0x2adf('0x3'));var express=require(_0x2adf('0x4'));var router=express[_0x2adf('0x5')]();var fs_extra=require(_0x2adf('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2adf('0x7'));var config=require(_0x2adf('0x8'));var controller=require(_0x2adf('0x9'));router[_0x2adf('0xa')]('/',auth[_0x2adf('0xb')](),controller[_0x2adf('0xc')]);router[_0x2adf('0xa')](_0x2adf('0xd'),auth['isAuthenticated'](),controller[_0x2adf('0xe')]);router[_0x2adf('0xa')](_0x2adf('0xf'),auth[_0x2adf('0xb')](),controller[_0x2adf('0x10')]);router[_0x2adf('0x11')]('/',auth[_0x2adf('0xb')](),controller['create']);router[_0x2adf('0x12')](_0x2adf('0xd'),auth['isAuthenticated'](),controller[_0x2adf('0x13')]);router['delete'](_0x2adf('0xd'),auth[_0x2adf('0xb')](),controller[_0x2adf('0x14')]);module[_0x2adf('0x15')]=router;
\ No newline at end of file
+var _0xe229=['exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id','/:id/download','post','create','put','update','delete','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe229,0x91));var _0x9e22=function(_0x55fd4e,_0x41746c){_0x55fd4e=_0x55fd4e-0x0;var _0x880ff8=_0xe229[_0x55fd4e];return _0x880ff8;};'use strict';var multer=require('multer');var util=require(_0x9e22('0x0'));var path=require('path');var timeout=require(_0x9e22('0x1'));var express=require(_0x9e22('0x2'));var router=express[_0x9e22('0x3')]();var fs_extra=require(_0x9e22('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9e22('0x5'));var controller=require(_0x9e22('0x6'));router[_0x9e22('0x7')]('/',auth[_0x9e22('0x8')](),controller['index']);router[_0x9e22('0x7')](_0x9e22('0x9'),auth[_0x9e22('0x8')](),controller['show']);router[_0x9e22('0x7')](_0x9e22('0xa'),auth[_0x9e22('0x8')](),controller['download']);router[_0x9e22('0xb')]('/',auth[_0x9e22('0x8')](),controller[_0x9e22('0xc')]);router[_0x9e22('0xd')](_0x9e22('0x9'),auth[_0x9e22('0x8')](),controller[_0x9e22('0xe')]);router[_0x9e22('0xf')](_0x9e22('0x9'),auth['isAuthenticated'](),controller[_0x9e22('0x10')]);module[_0x9e22('0x11')]=router;
\ No newline at end of file
index c6a5443..b87af32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e8=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0xc25da0,_0x1949b6){var _0x20fb4c=function(_0x2d72fc){while(--_0x2d72fc){_0xc25da0['push'](_0xc25da0['shift']());}};_0x20fb4c(++_0x1949b6);}(_0x48e8,0x153));var _0x848e=function(_0x1bd4a7,_0x5a27b8){_0x1bd4a7=_0x1bd4a7-0x0;var _0x524a91=_0x48e8[_0x1bd4a7];return _0x524a91;};'use strict';var Sequelize=require(_0x848e('0x0'));module[_0x848e('0x1')]={'field':{'type':Sequelize[_0x848e('0x2')]},'alias':{'type':Sequelize[_0x848e('0x3')]},'function':{'type':Sequelize[_0x848e('0x3')]},'format':{'type':Sequelize[_0x848e('0x3')]},'groupBy':{'type':Sequelize[_0x848e('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0x848e('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2dd8=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x8bb4c1,_0x2d6e53){var _0x67a6e1=function(_0x1155e5){while(--_0x1155e5){_0x8bb4c1['push'](_0x8bb4c1['shift']());}};_0x67a6e1(++_0x2d6e53);}(_0x2dd8,0x67));var _0x82dd=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2dd8[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x82dd('0x0'));module[_0x82dd('0x1')]={'field':{'type':Sequelize[_0x82dd('0x2')]},'alias':{'type':Sequelize[_0x82dd('0x3')]},'function':{'type':Sequelize[_0x82dd('0x3')]},'format':{'type':Sequelize[_0x82dd('0x3')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x82dd('0x3')]},'custom':{'type':Sequelize[_0x82dd('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 594367d..9c1923c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd667=['offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','find','create','bulkCreate','body','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json'];(function(_0x21e646,_0x5944f9){var _0x4f02ae=function(_0x1456a7){while(--_0x1456a7){_0x21e646['push'](_0x21e646['shift']());}};_0x4f02ae(++_0x5944f9);}(_0xd667,0x120));var _0x7d66=function(_0x50b02a,_0x57dd42){_0x50b02a=_0x50b02a-0x0;var _0x279b52=_0xd667[_0x50b02a];return _0x279b52;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7d66('0x0'));var rp=require('request-promise');var moment=require(_0x7d66('0x1'));var BPromise=require(_0x7d66('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7d66('0x3'));var sox=require(_0x7d66('0x4'));var csv=require(_0x7d66('0x5'));var ejs=require(_0x7d66('0x6'));var fs=require('fs');var fs_extra=require(_0x7d66('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x7d66('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x7d66('0x9'));var toCsv=require(_0x7d66('0x5'));var querystring=require('querystring');var Papa=require(_0x7d66('0xa'));var Redis=require(_0x7d66('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x7d66('0xc'));var as=require(_0x7d66('0xd'));var hardwareService=require(_0x7d66('0xe'));var logger=require(_0x7d66('0xf'))(_0x7d66('0x10'));var utils=require(_0x7d66('0x11'));var config=require(_0x7d66('0x12'));var licenseUtil=require(_0x7d66('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5dd3d5,_0x12a28e){_0x12a28e=_0x12a28e||0xcc;return function(_0x930bf6){if(_0x930bf6){return _0x5dd3d5[_0x7d66('0x14')](_0x12a28e);}return _0x5dd3d5[_0x7d66('0x15')](_0x12a28e)[_0x7d66('0x16')]();};}function respondWithResult(_0x33edb2,_0xc09fd8){_0xc09fd8=_0xc09fd8||0xc8;return function(_0x206a8a){if(_0x206a8a){return _0x33edb2[_0x7d66('0x15')](_0xc09fd8)[_0x7d66('0x17')](_0x206a8a);}};}function respondWithFilteredResult(_0x101cc2,_0x40e732){return function(_0x4f6df2){if(_0x4f6df2){var _0x488cfa=typeof _0x40e732[_0x7d66('0x18')]===_0x7d66('0x19')&&typeof _0x40e732[_0x7d66('0x1a')]===_0x7d66('0x19');var _0x4d24c9=_0x4f6df2[_0x7d66('0x1b')];var _0x3ecb0e=_0x488cfa?0x0:_0x40e732[_0x7d66('0x18')];var _0x42552f=_0x488cfa?_0x4f6df2[_0x7d66('0x1b')]:_0x40e732[_0x7d66('0x18')]+_0x40e732[_0x7d66('0x1a')];var _0x484dc1;if(_0x42552f>=_0x4d24c9){_0x42552f=_0x4d24c9;_0x484dc1=0xc8;}else{_0x484dc1=0xce;}_0x101cc2[_0x7d66('0x15')](_0x484dc1);return _0x101cc2['set']('Content-Range',_0x3ecb0e+'-'+_0x42552f+'/'+_0x4d24c9)['json'](_0x4f6df2);}return null;};}function patchUpdates(_0x49cf0c){return function(_0x4ffd30){try{jsonpatch[_0x7d66('0x1c')](_0x4ffd30,_0x49cf0c,!![]);}catch(_0x837ccb){return BPromise[_0x7d66('0x1d')](_0x837ccb);}return _0x4ffd30[_0x7d66('0x1e')]();};}function saveUpdates(_0x4e0e4d,_0x188a73){return function(_0x2acd0a){if(_0x2acd0a){return _0x2acd0a[_0x7d66('0x1f')](_0x4e0e4d)[_0x7d66('0x20')](function(_0x2108e6){return _0x2108e6;});}return null;};}function removeEntity(_0x2266a2,_0x33b801){return function(_0x13fb89){if(_0x13fb89){return _0x13fb89[_0x7d66('0x21')]()['then'](function(){_0x2266a2[_0x7d66('0x15')](0xcc)[_0x7d66('0x16')]();});}};}function handleEntityNotFound(_0x4d260e,_0xba0c53){return function(_0xff9ace){if(!_0xff9ace){_0x4d260e[_0x7d66('0x14')](0x194);}return _0xff9ace;};}function handleError(_0x714296,_0x30bb6f){_0x30bb6f=_0x30bb6f||0x1f4;return function(_0x1a8bef){logger[_0x7d66('0x22')](_0x1a8bef[_0x7d66('0x23')]);if(_0x1a8bef[_0x7d66('0x24')]){delete _0x1a8bef[_0x7d66('0x24')];}_0x714296[_0x7d66('0x15')](_0x30bb6f)[_0x7d66('0x25')](_0x1a8bef);};}exports[_0x7d66('0x26')]=function(_0xc7eb99,_0x3c6a20){var _0x4b5d9e={},_0xcb562d={},_0x31c460={'count':0x0,'rows':[]};var _0x2740b1=_[_0x7d66('0x27')](db[_0x7d66('0x28')][_0x7d66('0x29')],function(_0x7e4369){return{'name':_0x7e4369['fieldName'],'type':_0x7e4369[_0x7d66('0x2a')][_0x7d66('0x2b')]};});_0xcb562d['model']=_[_0x7d66('0x27')](_0x2740b1,_0x7d66('0x24'));_0xcb562d[_0x7d66('0x2c')]=_[_0x7d66('0x2d')](_0xc7eb99[_0x7d66('0x2c')]);_0xcb562d[_0x7d66('0x2e')]=_[_0x7d66('0x2f')](_0xcb562d[_0x7d66('0x30')],_0xcb562d[_0x7d66('0x2c')]);_0x4b5d9e['attributes']=_[_0x7d66('0x2f')](_0xcb562d[_0x7d66('0x30')],qs[_0x7d66('0x31')](_0xc7eb99['query'][_0x7d66('0x31')]));_0x4b5d9e[_0x7d66('0x32')]=_0x4b5d9e[_0x7d66('0x32')][_0x7d66('0x33')]?_0x4b5d9e['attributes']:_0xcb562d[_0x7d66('0x30')];if(!_0xc7eb99[_0x7d66('0x2c')][_0x7d66('0x34')](_0x7d66('0x35'))){_0x4b5d9e[_0x7d66('0x1a')]=qs[_0x7d66('0x1a')](_0xc7eb99[_0x7d66('0x2c')][_0x7d66('0x1a')]);_0x4b5d9e[_0x7d66('0x18')]=qs['offset'](_0xc7eb99['query'][_0x7d66('0x18')]);}_0x4b5d9e[_0x7d66('0x36')]=qs[_0x7d66('0x37')](_0xc7eb99[_0x7d66('0x2c')]['sort']);_0x4b5d9e[_0x7d66('0x38')]=qs[_0x7d66('0x2e')](_[_0x7d66('0x39')](_0xc7eb99[_0x7d66('0x2c')],_0xcb562d[_0x7d66('0x2e')]),_0x2740b1);if(_0xc7eb99[_0x7d66('0x2c')][_0x7d66('0x3a')]){_0x4b5d9e['where']=_[_0x7d66('0x3b')](_0x4b5d9e['where'],{'$or':_[_0x7d66('0x27')](_0x2740b1,function(_0x36b8ec){if(_0x36b8ec['type']!=='VIRTUAL'){var _0x50e6c2={};_0x50e6c2[_0x36b8ec['name']]={'$like':'%'+_0xc7eb99[_0x7d66('0x2c')]['filter']+'%'};return _0x50e6c2;}})});}_0x4b5d9e=_[_0x7d66('0x3b')]({},_0x4b5d9e,_0xc7eb99['options']);var _0x1b6fa2={'where':_0x4b5d9e[_0x7d66('0x38')]};return db[_0x7d66('0x28')][_0x7d66('0x1b')](_0x1b6fa2)[_0x7d66('0x20')](function(_0x2063f3){_0x31c460['count']=_0x2063f3;if(_0xc7eb99['query'][_0x7d66('0x3c')]){_0x4b5d9e[_0x7d66('0x3d')]=[{'all':!![]}];}return db[_0x7d66('0x28')][_0x7d66('0x3e')](_0x4b5d9e);})[_0x7d66('0x20')](function(_0x501dd1){_0x31c460[_0x7d66('0x3f')]=_0x501dd1;return _0x31c460;})[_0x7d66('0x20')](respondWithFilteredResult(_0x3c6a20,_0x4b5d9e))[_0x7d66('0x40')](handleError(_0x3c6a20,null));};exports[_0x7d66('0x41')]=function(_0x113ec3,_0x244943){var _0x2cd77f={'raw':![],'where':{'id':_0x113ec3[_0x7d66('0x42')]['id']}},_0x35e463={};_0x35e463[_0x7d66('0x30')]=_[_0x7d66('0x2d')](db[_0x7d66('0x28')][_0x7d66('0x29')]);_0x35e463['query']=_[_0x7d66('0x2d')](_0x113ec3[_0x7d66('0x2c')]);_0x35e463[_0x7d66('0x2e')]=_['intersection'](_0x35e463[_0x7d66('0x30')],_0x35e463[_0x7d66('0x2c')]);_0x2cd77f[_0x7d66('0x32')]=_[_0x7d66('0x2f')](_0x35e463[_0x7d66('0x30')],qs[_0x7d66('0x31')](_0x113ec3[_0x7d66('0x2c')]['fields']));_0x2cd77f[_0x7d66('0x32')]=_0x2cd77f['attributes'][_0x7d66('0x33')]?_0x2cd77f[_0x7d66('0x32')]:_0x35e463[_0x7d66('0x30')];if(_0x113ec3['query']['includeAll']){_0x2cd77f[_0x7d66('0x3d')]=[{'all':!![]}];}_0x2cd77f=_[_0x7d66('0x3b')]({},_0x2cd77f,_0x113ec3['options']);return db[_0x7d66('0x28')][_0x7d66('0x43')](_0x2cd77f)[_0x7d66('0x20')](handleEntityNotFound(_0x244943,null))[_0x7d66('0x20')](respondWithResult(_0x244943,null))[_0x7d66('0x40')](handleError(_0x244943,null));};exports[_0x7d66('0x44')]=function(_0x5bbebc,_0x2f009c){return db['AnalyticFieldReport'][_0x7d66('0x44')](_0x5bbebc['body'],{})[_0x7d66('0x20')](respondWithResult(_0x2f009c,0xc9))[_0x7d66('0x40')](handleError(_0x2f009c,null));};exports[_0x7d66('0x45')]=function(_0x247c1a,_0x570090){return db[_0x7d66('0x28')][_0x7d66('0x45')](_0x247c1a[_0x7d66('0x46')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x570090,0xc9))[_0x7d66('0x40')](handleError(_0x570090,null));};exports['update']=function(_0xa67852,_0x193de4){if(_0xa67852[_0x7d66('0x46')]['id']){delete _0xa67852[_0x7d66('0x46')]['id'];}return db[_0x7d66('0x28')][_0x7d66('0x43')]({'where':{'id':_0xa67852[_0x7d66('0x42')]['id']}})[_0x7d66('0x20')](handleEntityNotFound(_0x193de4,null))[_0x7d66('0x20')](saveUpdates(_0xa67852[_0x7d66('0x46')],null))[_0x7d66('0x20')](respondWithResult(_0x193de4,null))['catch'](handleError(_0x193de4,null));};exports['destroy']=function(_0x26a462,_0x31b571){return db[_0x7d66('0x28')][_0x7d66('0x43')]({'where':{'id':_0x26a462['params']['id']}})[_0x7d66('0x20')](handleEntityNotFound(_0x31b571,null))[_0x7d66('0x20')](removeEntity(_0x31b571,null))['catch'](handleError(_0x31b571,null));};exports['bulkDestroy']=function(_0xa4e141,_0x1db0ad){return db['AnalyticFieldReport'][_0x7d66('0x21')]({'where':{'id':_0xa4e141[_0x7d66('0x2c')][_0x7d66('0x47')]||[]},'raw':![],'individualHooks':!![]})[_0x7d66('0x20')](respondWithResult(_0x1db0ad,0xcc))['catch'](handleError(_0x1db0ad,null));};exports[_0x7d66('0x48')]=function(_0x4e9674,_0x226734,_0x19e780){return db[_0x7d66('0x49')][_0x7d66('0x4a')]({'where':{'id':_0x4e9674[_0x7d66('0x42')]['id']}})['then'](handleEntityNotFound(_0x226734,null))['then'](function(_0x4320eb){if(_0x4320eb){return db[_0x7d66('0x4b')][_0x7d66('0x4c')](function(_0x32b3f3){return db['AnalyticFieldReport'][_0x7d66('0x21')]({'where':{'CustomReportId':_0x4e9674[_0x7d66('0x42')]['id']},'transaction':_0x32b3f3})[_0x7d66('0x20')](function(_0x4b673c){var _0x4646e8=_[_0x7d66('0x27')](_0x4e9674[_0x7d66('0x46')],function(_0x1fc058){delete _0x1fc058['id'];_0x1fc058[_0x7d66('0x4d')]=_0x4e9674[_0x7d66('0x42')]['id'];return _0x1fc058;});return db[_0x7d66('0x28')][_0x7d66('0x45')](_0x4646e8,{'transaction':_0x32b3f3});});})[_0x7d66('0x20')](function(){return db['AnalyticFieldReport'][_0x7d66('0x3e')]({'where':{'CustomReportId':_0x4e9674['params']['id']}});});}})[_0x7d66('0x20')](respondWithResult(_0x226734,null))['catch'](handleError(_0x226734,null));};
\ No newline at end of file
+var _0x6a69=['pick','filter','map','type','merge','then','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','bulkCreate','bulkDestroy','ids','addFields','sequelize','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','json','reject','update','destroy','error','stack','name','AnalyticFieldReport','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','sort','where'];(function(_0x116482,_0x35ddae){var _0x56db37=function(_0xc3685c){while(--_0xc3685c){_0x116482['push'](_0x116482['shift']());}};_0x56db37(++_0x35ddae);}(_0x6a69,0xfc));var _0x96a6=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0x6a69[_0x3aaf0a];return _0x33e6bc;};'use strict';var emlformat=require(_0x96a6('0x0'));var rimraf=require(_0x96a6('0x1'));var zipdir=require(_0x96a6('0x2'));var jsonpatch=require(_0x96a6('0x3'));var rp=require(_0x96a6('0x4'));var moment=require('moment');var BPromise=require(_0x96a6('0x5'));var Mustache=require(_0x96a6('0x6'));var util=require(_0x96a6('0x7'));var path=require(_0x96a6('0x8'));var sox=require(_0x96a6('0x9'));var csv=require(_0x96a6('0xa'));var ejs=require(_0x96a6('0xb'));var fs=require('fs');var fs_extra=require(_0x96a6('0xc'));var _=require(_0x96a6('0xd'));var squel=require(_0x96a6('0xe'));var crypto=require(_0x96a6('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x96a6('0x10'));var toCsv=require(_0x96a6('0xa'));var querystring=require(_0x96a6('0x11'));var Papa=require('papaparse');var Redis=require(_0x96a6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x96a6('0x13'));var as=require(_0x96a6('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x96a6('0x15'))(_0x96a6('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x96a6('0x17'));var db=require(_0x96a6('0x18'))['db'];function respondWithStatusCode(_0x338feb,_0x32c120){_0x32c120=_0x32c120||0xcc;return function(_0x1edc9e){if(_0x1edc9e){return _0x338feb[_0x96a6('0x19')](_0x32c120);}return _0x338feb[_0x96a6('0x1a')](_0x32c120)[_0x96a6('0x1b')]();};}function respondWithResult(_0x5330a4,_0x437b6d){_0x437b6d=_0x437b6d||0xc8;return function(_0x2e1f06){if(_0x2e1f06){return _0x5330a4['status'](_0x437b6d)['json'](_0x2e1f06);}};}function respondWithFilteredResult(_0x2965eb,_0x30abdf){return function(_0x5ae2d7){if(_0x5ae2d7){var _0x56b0cb=typeof _0x30abdf[_0x96a6('0x1c')]==='undefined'&&typeof _0x30abdf['limit']===_0x96a6('0x1d');var _0x11397b=_0x5ae2d7[_0x96a6('0x1e')];var _0x2fbc8c=_0x56b0cb?0x0:_0x30abdf[_0x96a6('0x1c')];var _0x281e97=_0x56b0cb?_0x5ae2d7[_0x96a6('0x1e')]:_0x30abdf[_0x96a6('0x1c')]+_0x30abdf[_0x96a6('0x1f')];var _0x3b2787;if(_0x281e97>=_0x11397b){_0x281e97=_0x11397b;_0x3b2787=0xc8;}else{_0x3b2787=0xce;}_0x2965eb[_0x96a6('0x1a')](_0x3b2787);return _0x2965eb['set']('Content-Range',_0x2fbc8c+'-'+_0x281e97+'/'+_0x11397b)[_0x96a6('0x20')](_0x5ae2d7);}return null;};}function patchUpdates(_0x33e73b){return function(_0x199673){try{jsonpatch['apply'](_0x199673,_0x33e73b,!![]);}catch(_0x21afac){return BPromise[_0x96a6('0x21')](_0x21afac);}return _0x199673['save']();};}function saveUpdates(_0x4920f5,_0x1be17c){return function(_0x3b61b9){if(_0x3b61b9){return _0x3b61b9[_0x96a6('0x22')](_0x4920f5)['then'](function(_0x2b1566){return _0x2b1566;});}return null;};}function removeEntity(_0x8321ba,_0x1c6539){return function(_0x482e46){if(_0x482e46){return _0x482e46[_0x96a6('0x23')]()['then'](function(){_0x8321ba[_0x96a6('0x1a')](0xcc)[_0x96a6('0x1b')]();});}};}function handleEntityNotFound(_0x55673b,_0x2ba118){return function(_0x4c8e7e){if(!_0x4c8e7e){_0x55673b['sendStatus'](0x194);}return _0x4c8e7e;};}function handleError(_0x594808,_0xe18ff7){_0xe18ff7=_0xe18ff7||0x1f4;return function(_0x5e9247){logger[_0x96a6('0x24')](_0x5e9247[_0x96a6('0x25')]);if(_0x5e9247[_0x96a6('0x26')]){delete _0x5e9247['name'];}_0x594808[_0x96a6('0x1a')](_0xe18ff7)['send'](_0x5e9247);};}exports['index']=function(_0x2dc0bd,_0x308d28){var _0x360909={},_0x2eedef={},_0x4e96c2={'count':0x0,'rows':[]};var _0xe58ced=_['map'](db[_0x96a6('0x27')]['rawAttributes'],function(_0x4327a8){return{'name':_0x4327a8[_0x96a6('0x28')],'type':_0x4327a8['type'][_0x96a6('0x29')]};});_0x2eedef[_0x96a6('0x2a')]=_['map'](_0xe58ced,_0x96a6('0x26'));_0x2eedef['query']=_[_0x96a6('0x2b')](_0x2dc0bd[_0x96a6('0x2c')]);_0x2eedef[_0x96a6('0x2d')]=_[_0x96a6('0x2e')](_0x2eedef[_0x96a6('0x2a')],_0x2eedef[_0x96a6('0x2c')]);_0x360909[_0x96a6('0x2f')]=_[_0x96a6('0x2e')](_0x2eedef['model'],qs[_0x96a6('0x30')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x30')]));_0x360909['attributes']=_0x360909['attributes'][_0x96a6('0x31')]?_0x360909[_0x96a6('0x2f')]:_0x2eedef[_0x96a6('0x2a')];if(!_0x2dc0bd['query']['hasOwnProperty']('nolimit')){_0x360909[_0x96a6('0x1f')]=qs[_0x96a6('0x1f')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x1f')]);_0x360909[_0x96a6('0x1c')]=qs[_0x96a6('0x1c')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x1c')]);}_0x360909['order']=qs[_0x96a6('0x32')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x32')]);_0x360909[_0x96a6('0x33')]=qs[_0x96a6('0x2d')](_[_0x96a6('0x34')](_0x2dc0bd[_0x96a6('0x2c')],_0x2eedef[_0x96a6('0x2d')]),_0xe58ced);if(_0x2dc0bd['query'][_0x96a6('0x35')]){_0x360909['where']=_['merge'](_0x360909[_0x96a6('0x33')],{'$or':_[_0x96a6('0x36')](_0xe58ced,function(_0x27e9cd){if(_0x27e9cd[_0x96a6('0x37')]!=='VIRTUAL'){var _0x485aca={};_0x485aca[_0x27e9cd[_0x96a6('0x26')]]={'$like':'%'+_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x35')]+'%'};return _0x485aca;}})});}_0x360909=_[_0x96a6('0x38')]({},_0x360909,_0x2dc0bd['options']);var _0x2ebfb5={'where':_0x360909['where']};return db[_0x96a6('0x27')][_0x96a6('0x1e')](_0x2ebfb5)[_0x96a6('0x39')](function(_0x4e6d52){_0x4e96c2[_0x96a6('0x1e')]=_0x4e6d52;if(_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x3a')]){_0x360909[_0x96a6('0x3b')]=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x96a6('0x3c')](_0x360909);})[_0x96a6('0x39')](function(_0x3a3bbe){_0x4e96c2[_0x96a6('0x3d')]=_0x3a3bbe;return _0x4e96c2;})[_0x96a6('0x39')](respondWithFilteredResult(_0x308d28,_0x360909))[_0x96a6('0x3e')](handleError(_0x308d28,null));};exports[_0x96a6('0x3f')]=function(_0x67f9c3,_0x99ffa4){var _0x3e6885={'raw':![],'where':{'id':_0x67f9c3[_0x96a6('0x40')]['id']}},_0x2a2f94={};_0x2a2f94['model']=_[_0x96a6('0x2b')](db[_0x96a6('0x27')][_0x96a6('0x41')]);_0x2a2f94[_0x96a6('0x2c')]=_[_0x96a6('0x2b')](_0x67f9c3['query']);_0x2a2f94[_0x96a6('0x2d')]=_[_0x96a6('0x2e')](_0x2a2f94[_0x96a6('0x2a')],_0x2a2f94[_0x96a6('0x2c')]);_0x3e6885[_0x96a6('0x2f')]=_[_0x96a6('0x2e')](_0x2a2f94['model'],qs['fields'](_0x67f9c3[_0x96a6('0x2c')]['fields']));_0x3e6885['attributes']=_0x3e6885['attributes'][_0x96a6('0x31')]?_0x3e6885[_0x96a6('0x2f')]:_0x2a2f94['model'];if(_0x67f9c3[_0x96a6('0x2c')][_0x96a6('0x3a')]){_0x3e6885[_0x96a6('0x3b')]=[{'all':!![]}];}_0x3e6885=_[_0x96a6('0x38')]({},_0x3e6885,_0x67f9c3[_0x96a6('0x42')]);return db[_0x96a6('0x27')][_0x96a6('0x43')](_0x3e6885)['then'](handleEntityNotFound(_0x99ffa4,null))['then'](respondWithResult(_0x99ffa4,null))['catch'](handleError(_0x99ffa4,null));};exports[_0x96a6('0x44')]=function(_0x1c10d4,_0x16637a){return db[_0x96a6('0x27')][_0x96a6('0x44')](_0x1c10d4[_0x96a6('0x45')],{})[_0x96a6('0x39')](respondWithResult(_0x16637a,0xc9))[_0x96a6('0x3e')](handleError(_0x16637a,null));};exports[_0x96a6('0x46')]=function(_0x4b1018,_0x4ec448){return db['AnalyticFieldReport'][_0x96a6('0x46')](_0x4b1018[_0x96a6('0x45')],{'raw':![],'individualHooks':!![]})[_0x96a6('0x39')](respondWithResult(_0x4ec448,0xc9))[_0x96a6('0x3e')](handleError(_0x4ec448,null));};exports[_0x96a6('0x22')]=function(_0x6332b2,_0xf71eb6){if(_0x6332b2[_0x96a6('0x45')]['id']){delete _0x6332b2[_0x96a6('0x45')]['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x6332b2[_0x96a6('0x40')]['id']}})[_0x96a6('0x39')](handleEntityNotFound(_0xf71eb6,null))['then'](saveUpdates(_0x6332b2[_0x96a6('0x45')],null))[_0x96a6('0x39')](respondWithResult(_0xf71eb6,null))[_0x96a6('0x3e')](handleError(_0xf71eb6,null));};exports['destroy']=function(_0x45dffb,_0x1abd9b){return db['AnalyticFieldReport']['find']({'where':{'id':_0x45dffb[_0x96a6('0x40')]['id']}})[_0x96a6('0x39')](handleEntityNotFound(_0x1abd9b,null))['then'](removeEntity(_0x1abd9b,null))[_0x96a6('0x3e')](handleError(_0x1abd9b,null));};exports[_0x96a6('0x47')]=function(_0x41dad6,_0x1e68f3){return db[_0x96a6('0x27')][_0x96a6('0x23')]({'where':{'id':_0x41dad6[_0x96a6('0x2c')][_0x96a6('0x48')]||[]},'raw':![],'individualHooks':!![]})[_0x96a6('0x39')](respondWithResult(_0x1e68f3,0xcc))[_0x96a6('0x3e')](handleError(_0x1e68f3,null));};exports[_0x96a6('0x49')]=function(_0x1bfc37,_0x133d4a,_0x4c068b){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x1bfc37[_0x96a6('0x40')]['id']}})[_0x96a6('0x39')](handleEntityNotFound(_0x133d4a,null))[_0x96a6('0x39')](function(_0x165a38){if(_0x165a38){return db[_0x96a6('0x4a')]['transaction'](function(_0x3f0f30){return db[_0x96a6('0x27')][_0x96a6('0x23')]({'where':{'CustomReportId':_0x1bfc37['params']['id']},'transaction':_0x3f0f30})[_0x96a6('0x39')](function(_0x4328d2){var _0x4531c2=_[_0x96a6('0x36')](_0x1bfc37[_0x96a6('0x45')],function(_0xd46bc8){delete _0xd46bc8['id'];_0xd46bc8[_0x96a6('0x4b')]=_0x1bfc37[_0x96a6('0x40')]['id'];return _0xd46bc8;});return db[_0x96a6('0x27')][_0x96a6('0x46')](_0x4531c2,{'transaction':_0x3f0f30});});})[_0x96a6('0x39')](function(){return db[_0x96a6('0x27')][_0x96a6('0x3c')]({'where':{'CustomReportId':_0x1bfc37['params']['id']}});});}})[_0x96a6('0x39')](respondWithResult(_0x133d4a,null))['catch'](handleError(_0x133d4a,null));};
\ No newline at end of file
index ad3d41d..39d604f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x938a=['exports','AnalyticFieldReport','analytics_report_fields','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./analyticFieldReport.attributes'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x938a,0xb7));var _0xa938=function(_0x3e4584,_0x43afce){_0x3e4584=_0x3e4584-0x0;var _0x272f56=_0x938a[_0x3e4584];return _0x272f56;};'use strict';var _=require(_0xa938('0x0'));var util=require(_0xa938('0x1'));var logger=require('../../config/logger')(_0xa938('0x2'));var moment=require(_0xa938('0x3'));var BPromise=require(_0xa938('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa938('0x5'));var rimraf=require(_0xa938('0x6'));var config=require(_0xa938('0x7'));var attributes=require(_0xa938('0x8'));module[_0xa938('0x9')]=function(_0x30c7d8,_0x4f775f){return _0x30c7d8['define'](_0xa938('0xa'),attributes,{'tableName':_0xa938('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3fa4=['analytics_report_fields','util','api','moment','bluebird','request-promise','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport'];(function(_0x2d2454,_0x3b40c0){var _0x3de56e=function(_0x4eff6f){while(--_0x4eff6f){_0x2d2454['push'](_0x2d2454['shift']());}};_0x3de56e(++_0x3b40c0);}(_0x3fa4,0x177));var _0x43fa=function(_0x3b702c,_0x503f7a){_0x3b702c=_0x3b702c-0x0;var _0x2cd3f9=_0x3fa4[_0x3b702c];return _0x2cd3f9;};'use strict';var _=require('lodash');var util=require(_0x43fa('0x0'));var logger=require('../../config/logger')(_0x43fa('0x1'));var moment=require(_0x43fa('0x2'));var BPromise=require(_0x43fa('0x3'));var rp=require(_0x43fa('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x43fa('0x5'));var attributes=require(_0x43fa('0x6'));module[_0x43fa('0x7')]=function(_0x20307a,_0x3d9ce9){return _0x20307a[_0x43fa('0x8')](_0x43fa('0x9'),attributes,{'tableName':_0x43fa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90918dd..7bfa3f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4455=['AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','then','info'];(function(_0x27cae0,_0xa9c427){var _0x1a3b1d=function(_0x4d2d55){while(--_0x4d2d55){_0x27cae0['push'](_0x27cae0['shift']());}};_0x1a3b1d(++_0xa9c427);}(_0x4455,0x14c));var _0x5445=function(_0x3eea25,_0x227322){_0x3eea25=_0x3eea25-0x0;var _0x377094=_0x4455[_0x3eea25];return _0x377094;};'use strict';var _=require(_0x5445('0x0'));var util=require(_0x5445('0x1'));var moment=require(_0x5445('0x2'));var BPromise=require(_0x5445('0x3'));var rs=require(_0x5445('0x4'));var fs=require('fs');var Redis=require(_0x5445('0x5'));var db=require(_0x5445('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5445('0x7'))('rpc');var config=require(_0x5445('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5445('0x9')][_0x5445('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2dded8,_0x451cdb,_0x52f3d7){return new BPromise(function(_0x27ec2f,_0x227c64){return client['request'](_0x2dded8,_0x52f3d7)[_0x5445('0xb')](function(_0x92f20d){logger[_0x5445('0xc')](_0x5445('0xd'),_0x451cdb,'request\x20sent');logger[_0x5445('0xe')](_0x5445('0xf'),_0x451cdb,_0x5445('0x10'),JSON[_0x5445('0x11')](_0x92f20d));if(_0x92f20d[_0x5445('0x12')]){if(_0x92f20d[_0x5445('0x12')][_0x5445('0x13')]===0x1f4){logger['error'](_0x5445('0xd'),_0x451cdb,_0x92f20d[_0x5445('0x12')][_0x5445('0x14')]);return _0x227c64(_0x92f20d[_0x5445('0x12')][_0x5445('0x14')]);}logger[_0x5445('0x12')]('AnalyticFieldReport,\x20%s,\x20%s',_0x451cdb,_0x92f20d[_0x5445('0x12')][_0x5445('0x14')]);return _0x27ec2f(_0x92f20d[_0x5445('0x12')][_0x5445('0x14')]);}else{logger[_0x5445('0xc')](_0x5445('0xd'),_0x451cdb,'request\x20sent');_0x27ec2f(_0x92f20d[_0x5445('0x15')]['message']);}})[_0x5445('0x16')](function(_0x31f000){logger[_0x5445('0x12')](_0x5445('0xd'),_0x451cdb,_0x31f000);_0x227c64(_0x31f000);});});}
\ No newline at end of file
+var _0x5786=['then','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x555cdd,_0x220ffd){var _0x1f6f86=function(_0x4ccd74){while(--_0x4ccd74){_0x555cdd['push'](_0x555cdd['shift']());}};_0x1f6f86(++_0x220ffd);}(_0x5786,0x67));var _0x6578=function(_0x48551d,_0x276682){_0x48551d=_0x48551d-0x0;var _0x360e5=_0x5786[_0x48551d];return _0x360e5;};'use strict';var _=require(_0x6578('0x0'));var util=require(_0x6578('0x1'));var moment=require(_0x6578('0x2'));var BPromise=require(_0x6578('0x3'));var rs=require(_0x6578('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6578('0x5'))['db'];var utils=require(_0x6578('0x6'));var logger=require(_0x6578('0x7'))('rpc');var config=require(_0x6578('0x8'));var jayson=require(_0x6578('0x9'));var client=jayson[_0x6578('0xa')][_0x6578('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a1f0b,_0x538369,_0x5ff5b5){return new BPromise(function(_0x35d96e,_0x390e4c){return client['request'](_0x2a1f0b,_0x5ff5b5)[_0x6578('0xc')](function(_0x2b0247){logger['info'](_0x6578('0xd'),_0x538369,'request\x20sent');logger[_0x6578('0xe')](_0x6578('0xf'),_0x538369,_0x6578('0x10'),JSON[_0x6578('0x11')](_0x2b0247));if(_0x2b0247[_0x6578('0x12')]){if(_0x2b0247[_0x6578('0x12')]['code']===0x1f4){logger['error'](_0x6578('0xd'),_0x538369,_0x2b0247[_0x6578('0x12')][_0x6578('0x13')]);return _0x390e4c(_0x2b0247[_0x6578('0x12')][_0x6578('0x13')]);}logger['error'](_0x6578('0xd'),_0x538369,_0x2b0247[_0x6578('0x12')][_0x6578('0x13')]);return _0x35d96e(_0x2b0247['error'][_0x6578('0x13')]);}else{logger[_0x6578('0x14')](_0x6578('0xd'),_0x538369,'request\x20sent');_0x35d96e(_0x2b0247[_0x6578('0x15')][_0x6578('0x13')]);}})[_0x6578('0x16')](function(_0x11227c){logger[_0x6578('0x12')](_0x6578('0xd'),_0x538369,_0x11227c);_0x390e4c(_0x11227c);});});}
\ No newline at end of file
index 65574fe..09087da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x558f07,_0x112aec){var _0x5a4eb6=function(_0x460258){while(--_0x460258){_0x558f07['push'](_0x558f07['shift']());}};_0x5a4eb6(++_0x112aec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x4708ea,_0x1bc4b7){var _0x2cb7d1=function(_0x3859b9){while(--_0x3859b9){_0x4708ea['push'](_0x4708ea['shift']());}};_0x2cb7d1(++_0x1bc4b7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
index d4d8c2c..bbd1785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x438a=['sequelize','exports','STRING','name','TEXT'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x438a,0x18b));var _0xa438=function(_0x25dc04,_0x2acf53){_0x25dc04=_0x25dc04-0x0;var _0xfbbf59=_0x438a[_0x25dc04];return _0xfbbf59;};'use strict';var Sequelize=require(_0xa438('0x0'));module[_0xa438('0x1')]={'name':{'type':Sequelize[_0xa438('0x2')],'allowNull':![],'unique':_0xa438('0x3')},'table':{'type':Sequelize[_0xa438('0x2')]},'metric':{'type':Sequelize[_0xa438('0x4')]},'description':{'type':Sequelize[_0xa438('0x2')]}};
\ No newline at end of file
+var _0x1cf3=['TEXT','sequelize','exports','STRING','name'];(function(_0x1b9169,_0x40f904){var _0x59ea07=function(_0x4c2bec){while(--_0x4c2bec){_0x1b9169['push'](_0x1b9169['shift']());}};_0x59ea07(++_0x40f904);}(_0x1cf3,0x1be));var _0x31cf=function(_0x502bdc,_0x235ac2){_0x502bdc=_0x502bdc-0x0;var _0x60e375=_0x1cf3[_0x502bdc];return _0x60e375;};'use strict';var Sequelize=require(_0x31cf('0x0'));module[_0x31cf('0x1')]={'name':{'type':Sequelize[_0x31cf('0x2')],'allowNull':![],'unique':_0x31cf('0x3')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x31cf('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 86c095e..f5d2ed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','json','undefined','limit','offset','apply','reject','update','destroy','get','Metrics','then','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','params','keys','find'];(function(_0x111455,_0x274b6e){var _0x54e83d=function(_0x2ee37a){while(--_0x2ee37a){_0x111455['push'](_0x111455['shift']());}};_0x54e83d(++_0x274b6e);}(_0x00bb,0x1d8));var _0xb00b=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x00bb[_0x15bc81];return _0x59440e;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];function respondWithStatusCode(_0x2d8ddf,_0x1be8aa){_0x1be8aa=_0x1be8aa||0xcc;return function(_0x466b9b){if(_0x466b9b){return _0x2d8ddf[_0xb00b('0x15')](_0x1be8aa);}return _0x2d8ddf[_0xb00b('0x16')](_0x1be8aa)['end']();};}function respondWithResult(_0x218de2,_0xb0d42e){_0xb0d42e=_0xb0d42e||0xc8;return function(_0x482fe6){if(_0x482fe6){return _0x218de2[_0xb00b('0x16')](_0xb0d42e)[_0xb00b('0x17')](_0x482fe6);}};}function respondWithFilteredResult(_0x540b79,_0x5da36b){return function(_0x9b471e){if(_0x9b471e){var _0x4dcd45=typeof _0x5da36b['offset']===_0xb00b('0x18')&&typeof _0x5da36b[_0xb00b('0x19')]===_0xb00b('0x18');var _0xbb72fc=_0x9b471e['count'];var _0x2a7231=_0x4dcd45?0x0:_0x5da36b['offset'];var _0x415f91=_0x4dcd45?_0x9b471e['count']:_0x5da36b[_0xb00b('0x1a')]+_0x5da36b['limit'];var _0xb26ebb;if(_0x415f91>=_0xbb72fc){_0x415f91=_0xbb72fc;_0xb26ebb=0xc8;}else{_0xb26ebb=0xce;}_0x540b79[_0xb00b('0x16')](_0xb26ebb);return _0x540b79['set']('Content-Range',_0x2a7231+'-'+_0x415f91+'/'+_0xbb72fc)[_0xb00b('0x17')](_0x9b471e);}return null;};}function patchUpdates(_0x4a334b){return function(_0x1344c4){try{jsonpatch[_0xb00b('0x1b')](_0x1344c4,_0x4a334b,!![]);}catch(_0x2fe48d){return BPromise[_0xb00b('0x1c')](_0x2fe48d);}return _0x1344c4['save']();};}function saveUpdates(_0x362ee0,_0x4df284){return function(_0x25a973){if(_0x25a973){return _0x25a973[_0xb00b('0x1d')](_0x362ee0)['then'](function(_0x231293){return _0x231293;});}return null;};}function removeEntity(_0x2896d1,_0x520444){return function(_0x3ab3cc){if(_0x3ab3cc){return _0x3ab3cc[_0xb00b('0x1e')]()['then'](function(){var _0x44efe5=_0x3ab3cc[_0xb00b('0x1f')]({'plain':!![]});var _0x3c9500=_0xb00b('0x20');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c9500,'resourceId':_0x44efe5['id']}})[_0xb00b('0x21')](function(){return _0x3ab3cc;});})['then'](function(){_0x2896d1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16ac55,_0x73b6b0){return function(_0x2592cf){if(!_0x2592cf){_0x16ac55[_0xb00b('0x15')](0x194);}return _0x2592cf;};}function handleError(_0x1f14fa,_0x197379){_0x197379=_0x197379||0x1f4;return function(_0x15d3b9){logger['error'](_0x15d3b9[_0xb00b('0x22')]);if(_0x15d3b9['name']){delete _0x15d3b9[_0xb00b('0x23')];}_0x1f14fa[_0xb00b('0x16')](_0x197379)[_0xb00b('0x24')](_0x15d3b9);};}exports['index']=function(_0x2fc11a,_0x280ed3){var _0x16fbd5={},_0x183233={},_0x303625={'count':0x0,'rows':[]};var _0x2b9824=_[_0xb00b('0x25')](db[_0xb00b('0x26')][_0xb00b('0x27')],function(_0x54e247){return{'name':_0x54e247[_0xb00b('0x28')],'type':_0x54e247[_0xb00b('0x29')]['key']};});_0x183233[_0xb00b('0x2a')]=_[_0xb00b('0x25')](_0x2b9824,'name');_0x183233[_0xb00b('0x2b')]=_['keys'](_0x2fc11a[_0xb00b('0x2b')]);_0x183233[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x183233[_0xb00b('0x2a')],_0x183233[_0xb00b('0x2b')]);_0x16fbd5[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x183233['model'],qs['fields'](_0x2fc11a['query'][_0xb00b('0x2f')]));_0x16fbd5[_0xb00b('0x2e')]=_0x16fbd5[_0xb00b('0x2e')][_0xb00b('0x30')]?_0x16fbd5['attributes']:_0x183233[_0xb00b('0x2a')];if(!_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x31')](_0xb00b('0x32'))){_0x16fbd5[_0xb00b('0x19')]=qs[_0xb00b('0x19')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x19')]);_0x16fbd5['offset']=qs['offset'](_0x2fc11a[_0xb00b('0x2b')]['offset']);}_0x16fbd5[_0xb00b('0x33')]=qs[_0xb00b('0x34')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x34')]);_0x16fbd5[_0xb00b('0x35')]=qs[_0xb00b('0x2c')](_[_0xb00b('0x36')](_0x2fc11a['query'],_0x183233[_0xb00b('0x2c')]),_0x2b9824);if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]){_0x16fbd5[_0xb00b('0x35')]=_[_0xb00b('0x38')](_0x16fbd5[_0xb00b('0x35')],{'$or':_['map'](_0x2b9824,function(_0x36980a){if(_0x36980a[_0xb00b('0x29')]!=='VIRTUAL'){var _0x17ff34={};_0x17ff34[_0x36980a[_0xb00b('0x23')]]={'$like':'%'+_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]+'%'};return _0x17ff34;}})});}_0x16fbd5=_[_0xb00b('0x38')]({},_0x16fbd5,_0x2fc11a['options']);var _0x14ff6a={'where':_0x16fbd5[_0xb00b('0x35')]};return db[_0xb00b('0x26')][_0xb00b('0x39')](_0x14ff6a)['then'](function(_0x4867fe){_0x303625[_0xb00b('0x39')]=_0x4867fe;if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x16fbd5[_0xb00b('0x3b')]=[{'all':!![]}];}return db[_0xb00b('0x26')][_0xb00b('0x3c')](_0x16fbd5);})[_0xb00b('0x21')](function(_0x493841){_0x303625[_0xb00b('0x3d')]=_0x493841;return _0x303625;})[_0xb00b('0x21')](respondWithFilteredResult(_0x280ed3,_0x16fbd5))[_0xb00b('0x3e')](handleError(_0x280ed3,null));};exports[_0xb00b('0x3f')]=function(_0x302ded,_0x1dc4c5){var _0x2e3d83={'raw':!![],'where':{'id':_0x302ded[_0xb00b('0x40')]['id']}},_0x974a29={};_0x974a29[_0xb00b('0x2a')]=_[_0xb00b('0x41')](db[_0xb00b('0x26')]['rawAttributes']);_0x974a29[_0xb00b('0x2b')]=_[_0xb00b('0x41')](_0x302ded[_0xb00b('0x2b')]);_0x974a29[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],_0x974a29[_0xb00b('0x2b')]);_0x2e3d83[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],qs[_0xb00b('0x2f')](_0x302ded[_0xb00b('0x2b')]['fields']));_0x2e3d83['attributes']=_0x2e3d83['attributes'][_0xb00b('0x30')]?_0x2e3d83[_0xb00b('0x2e')]:_0x974a29['model'];if(_0x302ded[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x2e3d83[_0xb00b('0x3b')]=[{'all':!![]}];}_0x2e3d83=_[_0xb00b('0x38')]({},_0x2e3d83,_0x302ded['options']);return db['AnalyticMetric'][_0xb00b('0x42')](_0x2e3d83)[_0xb00b('0x21')](handleEntityNotFound(_0x1dc4c5,null))['then'](respondWithResult(_0x1dc4c5,null))['catch'](handleError(_0x1dc4c5,null));};exports[_0xb00b('0x43')]=function(_0x3a205d,_0x4e0be4){return db[_0xb00b('0x26')]['create'](_0x3a205d['body'],{})['then'](function(_0x465d90){var _0x481515=_0x3a205d[_0xb00b('0x44')][_0xb00b('0x1f')]({'plain':!![]});if(!_0x481515)throw new Error(_0xb00b('0x45'));if(_0x481515[_0xb00b('0x46')]===_0xb00b('0x44')){var _0xda60ca=_0x465d90['get']({'plain':!![]});var _0x5bd40c=_0xb00b('0x20');return db[_0xb00b('0x47')]['find']({'where':{'name':_0x5bd40c,'userProfileId':_0x481515[_0xb00b('0x48')]},'raw':!![]})[_0xb00b('0x21')](function(_0x57f6ab){if(_0x57f6ab&&_0x57f6ab[_0xb00b('0x49')]===0x0){return db[_0xb00b('0x4a')][_0xb00b('0x43')]({'name':_0xda60ca['name'],'resourceId':_0xda60ca['id'],'type':_0x57f6ab['name'],'sectionId':_0x57f6ab['id']},{})[_0xb00b('0x21')](function(){return _0x465d90;});}else{return _0x465d90;}})[_0xb00b('0x3e')](function(_0x12737d){logger[_0xb00b('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12737d);throw _0x12737d;});}return _0x465d90;})[_0xb00b('0x21')](respondWithResult(_0x4e0be4,0xc9))[_0xb00b('0x3e')](handleError(_0x4e0be4,null));};exports['update']=function(_0x4cd9fd,_0x160965){if(_0x4cd9fd['body']['id']){delete _0x4cd9fd[_0xb00b('0x4c')]['id'];}return db[_0xb00b('0x26')][_0xb00b('0x42')]({'where':{'id':_0x4cd9fd[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x160965,null))[_0xb00b('0x21')](saveUpdates(_0x4cd9fd['body'],null))[_0xb00b('0x21')](respondWithResult(_0x160965,null))['catch'](handleError(_0x160965,null));};exports[_0xb00b('0x1e')]=function(_0x98caa9,_0x4129ba){return db['AnalyticMetric'][_0xb00b('0x42')]({'where':{'id':_0x98caa9[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x4129ba,null))['then'](removeEntity(_0x4129ba,null))[_0xb00b('0x3e')](handleError(_0x4129ba,null));};
\ No newline at end of file
+var _0x00bb=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','json','undefined','limit','offset','apply','reject','update','destroy','get','Metrics','then','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','params','keys','find'];(function(_0xb62f2d,_0x395b4c){var _0x558c14=function(_0x284225){while(--_0x284225){_0xb62f2d['push'](_0xb62f2d['shift']());}};_0x558c14(++_0x395b4c);}(_0x00bb,0x1d8));var _0xb00b=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x00bb[_0x55f8b4];return _0x2475f9;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];function respondWithStatusCode(_0x2d8ddf,_0x1be8aa){_0x1be8aa=_0x1be8aa||0xcc;return function(_0x466b9b){if(_0x466b9b){return _0x2d8ddf[_0xb00b('0x15')](_0x1be8aa);}return _0x2d8ddf[_0xb00b('0x16')](_0x1be8aa)['end']();};}function respondWithResult(_0x218de2,_0xb0d42e){_0xb0d42e=_0xb0d42e||0xc8;return function(_0x482fe6){if(_0x482fe6){return _0x218de2[_0xb00b('0x16')](_0xb0d42e)[_0xb00b('0x17')](_0x482fe6);}};}function respondWithFilteredResult(_0x540b79,_0x5da36b){return function(_0x9b471e){if(_0x9b471e){var _0x4dcd45=typeof _0x5da36b['offset']===_0xb00b('0x18')&&typeof _0x5da36b[_0xb00b('0x19')]===_0xb00b('0x18');var _0xbb72fc=_0x9b471e['count'];var _0x2a7231=_0x4dcd45?0x0:_0x5da36b['offset'];var _0x415f91=_0x4dcd45?_0x9b471e['count']:_0x5da36b[_0xb00b('0x1a')]+_0x5da36b['limit'];var _0xb26ebb;if(_0x415f91>=_0xbb72fc){_0x415f91=_0xbb72fc;_0xb26ebb=0xc8;}else{_0xb26ebb=0xce;}_0x540b79[_0xb00b('0x16')](_0xb26ebb);return _0x540b79['set']('Content-Range',_0x2a7231+'-'+_0x415f91+'/'+_0xbb72fc)[_0xb00b('0x17')](_0x9b471e);}return null;};}function patchUpdates(_0x4a334b){return function(_0x1344c4){try{jsonpatch[_0xb00b('0x1b')](_0x1344c4,_0x4a334b,!![]);}catch(_0x2fe48d){return BPromise[_0xb00b('0x1c')](_0x2fe48d);}return _0x1344c4['save']();};}function saveUpdates(_0x362ee0,_0x4df284){return function(_0x25a973){if(_0x25a973){return _0x25a973[_0xb00b('0x1d')](_0x362ee0)['then'](function(_0x231293){return _0x231293;});}return null;};}function removeEntity(_0x2896d1,_0x520444){return function(_0x3ab3cc){if(_0x3ab3cc){return _0x3ab3cc[_0xb00b('0x1e')]()['then'](function(){var _0x44efe5=_0x3ab3cc[_0xb00b('0x1f')]({'plain':!![]});var _0x3c9500=_0xb00b('0x20');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c9500,'resourceId':_0x44efe5['id']}})[_0xb00b('0x21')](function(){return _0x3ab3cc;});})['then'](function(){_0x2896d1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16ac55,_0x73b6b0){return function(_0x2592cf){if(!_0x2592cf){_0x16ac55[_0xb00b('0x15')](0x194);}return _0x2592cf;};}function handleError(_0x1f14fa,_0x197379){_0x197379=_0x197379||0x1f4;return function(_0x15d3b9){logger['error'](_0x15d3b9[_0xb00b('0x22')]);if(_0x15d3b9['name']){delete _0x15d3b9[_0xb00b('0x23')];}_0x1f14fa[_0xb00b('0x16')](_0x197379)[_0xb00b('0x24')](_0x15d3b9);};}exports['index']=function(_0x2fc11a,_0x280ed3){var _0x16fbd5={},_0x183233={},_0x303625={'count':0x0,'rows':[]};var _0x2b9824=_[_0xb00b('0x25')](db[_0xb00b('0x26')][_0xb00b('0x27')],function(_0x54e247){return{'name':_0x54e247[_0xb00b('0x28')],'type':_0x54e247[_0xb00b('0x29')]['key']};});_0x183233[_0xb00b('0x2a')]=_[_0xb00b('0x25')](_0x2b9824,'name');_0x183233[_0xb00b('0x2b')]=_['keys'](_0x2fc11a[_0xb00b('0x2b')]);_0x183233[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x183233[_0xb00b('0x2a')],_0x183233[_0xb00b('0x2b')]);_0x16fbd5[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x183233['model'],qs['fields'](_0x2fc11a['query'][_0xb00b('0x2f')]));_0x16fbd5[_0xb00b('0x2e')]=_0x16fbd5[_0xb00b('0x2e')][_0xb00b('0x30')]?_0x16fbd5['attributes']:_0x183233[_0xb00b('0x2a')];if(!_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x31')](_0xb00b('0x32'))){_0x16fbd5[_0xb00b('0x19')]=qs[_0xb00b('0x19')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x19')]);_0x16fbd5['offset']=qs['offset'](_0x2fc11a[_0xb00b('0x2b')]['offset']);}_0x16fbd5[_0xb00b('0x33')]=qs[_0xb00b('0x34')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x34')]);_0x16fbd5[_0xb00b('0x35')]=qs[_0xb00b('0x2c')](_[_0xb00b('0x36')](_0x2fc11a['query'],_0x183233[_0xb00b('0x2c')]),_0x2b9824);if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]){_0x16fbd5[_0xb00b('0x35')]=_[_0xb00b('0x38')](_0x16fbd5[_0xb00b('0x35')],{'$or':_['map'](_0x2b9824,function(_0x36980a){if(_0x36980a[_0xb00b('0x29')]!=='VIRTUAL'){var _0x17ff34={};_0x17ff34[_0x36980a[_0xb00b('0x23')]]={'$like':'%'+_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]+'%'};return _0x17ff34;}})});}_0x16fbd5=_[_0xb00b('0x38')]({},_0x16fbd5,_0x2fc11a['options']);var _0x14ff6a={'where':_0x16fbd5[_0xb00b('0x35')]};return db[_0xb00b('0x26')][_0xb00b('0x39')](_0x14ff6a)['then'](function(_0x4867fe){_0x303625[_0xb00b('0x39')]=_0x4867fe;if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x16fbd5[_0xb00b('0x3b')]=[{'all':!![]}];}return db[_0xb00b('0x26')][_0xb00b('0x3c')](_0x16fbd5);})[_0xb00b('0x21')](function(_0x493841){_0x303625[_0xb00b('0x3d')]=_0x493841;return _0x303625;})[_0xb00b('0x21')](respondWithFilteredResult(_0x280ed3,_0x16fbd5))[_0xb00b('0x3e')](handleError(_0x280ed3,null));};exports[_0xb00b('0x3f')]=function(_0x302ded,_0x1dc4c5){var _0x2e3d83={'raw':!![],'where':{'id':_0x302ded[_0xb00b('0x40')]['id']}},_0x974a29={};_0x974a29[_0xb00b('0x2a')]=_[_0xb00b('0x41')](db[_0xb00b('0x26')]['rawAttributes']);_0x974a29[_0xb00b('0x2b')]=_[_0xb00b('0x41')](_0x302ded[_0xb00b('0x2b')]);_0x974a29[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],_0x974a29[_0xb00b('0x2b')]);_0x2e3d83[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],qs[_0xb00b('0x2f')](_0x302ded[_0xb00b('0x2b')]['fields']));_0x2e3d83['attributes']=_0x2e3d83['attributes'][_0xb00b('0x30')]?_0x2e3d83[_0xb00b('0x2e')]:_0x974a29['model'];if(_0x302ded[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x2e3d83[_0xb00b('0x3b')]=[{'all':!![]}];}_0x2e3d83=_[_0xb00b('0x38')]({},_0x2e3d83,_0x302ded['options']);return db['AnalyticMetric'][_0xb00b('0x42')](_0x2e3d83)[_0xb00b('0x21')](handleEntityNotFound(_0x1dc4c5,null))['then'](respondWithResult(_0x1dc4c5,null))['catch'](handleError(_0x1dc4c5,null));};exports[_0xb00b('0x43')]=function(_0x3a205d,_0x4e0be4){return db[_0xb00b('0x26')]['create'](_0x3a205d['body'],{})['then'](function(_0x465d90){var _0x481515=_0x3a205d[_0xb00b('0x44')][_0xb00b('0x1f')]({'plain':!![]});if(!_0x481515)throw new Error(_0xb00b('0x45'));if(_0x481515[_0xb00b('0x46')]===_0xb00b('0x44')){var _0xda60ca=_0x465d90['get']({'plain':!![]});var _0x5bd40c=_0xb00b('0x20');return db[_0xb00b('0x47')]['find']({'where':{'name':_0x5bd40c,'userProfileId':_0x481515[_0xb00b('0x48')]},'raw':!![]})[_0xb00b('0x21')](function(_0x57f6ab){if(_0x57f6ab&&_0x57f6ab[_0xb00b('0x49')]===0x0){return db[_0xb00b('0x4a')][_0xb00b('0x43')]({'name':_0xda60ca['name'],'resourceId':_0xda60ca['id'],'type':_0x57f6ab['name'],'sectionId':_0x57f6ab['id']},{})[_0xb00b('0x21')](function(){return _0x465d90;});}else{return _0x465d90;}})[_0xb00b('0x3e')](function(_0x12737d){logger[_0xb00b('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12737d);throw _0x12737d;});}return _0x465d90;})[_0xb00b('0x21')](respondWithResult(_0x4e0be4,0xc9))[_0xb00b('0x3e')](handleError(_0x4e0be4,null));};exports['update']=function(_0x4cd9fd,_0x160965){if(_0x4cd9fd['body']['id']){delete _0x4cd9fd[_0xb00b('0x4c')]['id'];}return db[_0xb00b('0x26')][_0xb00b('0x42')]({'where':{'id':_0x4cd9fd[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x160965,null))[_0xb00b('0x21')](saveUpdates(_0x4cd9fd['body'],null))[_0xb00b('0x21')](respondWithResult(_0x160965,null))['catch'](handleError(_0x160965,null));};exports[_0xb00b('0x1e')]=function(_0x98caa9,_0x4129ba){return db['AnalyticMetric'][_0xb00b('0x42')]({'where':{'id':_0x98caa9[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x4129ba,null))['then'](removeEntity(_0x4129ba,null))[_0xb00b('0x3e')](handleError(_0x4129ba,null));};
\ No newline at end of file
index 0ed80cd..efeff15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f5=['moment','bluebird','path','rimraf','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics','util','api'];(function(_0x22fc46,_0x25ae77){var _0x1a4946=function(_0x37f6d0){while(--_0x37f6d0){_0x22fc46['push'](_0x22fc46['shift']());}};_0x1a4946(++_0x25ae77);}(_0x14f5,0xae));var _0x514f=function(_0x3c5735,_0x1f4f53){_0x3c5735=_0x3c5735-0x0;var _0x2cd61d=_0x14f5[_0x3c5735];return _0x2cd61d;};'use strict';var _=require('lodash');var util=require(_0x514f('0x0'));var logger=require('../../config/logger')(_0x514f('0x1'));var moment=require(_0x514f('0x2'));var BPromise=require(_0x514f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x514f('0x4'));var rimraf=require(_0x514f('0x5'));var config=require('../../config/environment');var attributes=require(_0x514f('0x6'));module[_0x514f('0x7')]=function(_0xc2ca56,_0x434452){return _0xc2ca56[_0x514f('0x8')](_0x514f('0x9'),attributes,{'tableName':_0x514f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb1aa=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','analytics_metrics','lodash','util','api'];(function(_0x4d2263,_0x3fbf0d){var _0x24aba0=function(_0x389a59){while(--_0x389a59){_0x4d2263['push'](_0x4d2263['shift']());}};_0x24aba0(++_0x3fbf0d);}(_0xb1aa,0x159));var _0xab1a=function(_0x5309,_0x6fe8){_0x5309=_0x5309-0x0;var _0x589511=_0xb1aa[_0x5309];return _0x589511;};'use strict';var _=require(_0xab1a('0x0'));var util=require(_0xab1a('0x1'));var logger=require('../../config/logger')(_0xab1a('0x2'));var moment=require('moment');var BPromise=require(_0xab1a('0x3'));var rp=require(_0xab1a('0x4'));var fs=require('fs');var path=require(_0xab1a('0x5'));var rimraf=require(_0xab1a('0x6'));var config=require(_0xab1a('0x7'));var attributes=require(_0xab1a('0x8'));module[_0xab1a('0x9')]=function(_0x6fcb8,_0x38b3c8){return _0x6fcb8[_0xab1a('0xa')]('AnalyticMetric',attributes,{'tableName':_0xab1a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd9428d..3e03ba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ed1=['AnalyticMetric,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','AnalyticMetric,\x20%s,\x20%s'];(function(_0x313ca1,_0x2b46de){var _0x4f9057=function(_0x1da794){while(--_0x1da794){_0x313ca1['push'](_0x313ca1['shift']());}};_0x4f9057(++_0x2b46de);}(_0x1ed1,0x161));var _0x11ed=function(_0x4d6265,_0x1794ee){_0x4d6265=_0x4d6265-0x0;var _0x108595=_0x1ed1[_0x4d6265];return _0x108595;};'use strict';var _=require(_0x11ed('0x0'));var util=require(_0x11ed('0x1'));var moment=require(_0x11ed('0x2'));var BPromise=require(_0x11ed('0x3'));var rs=require(_0x11ed('0x4'));var fs=require('fs');var Redis=require(_0x11ed('0x5'));var db=require(_0x11ed('0x6'))['db'];var utils=require(_0x11ed('0x7'));var logger=require(_0x11ed('0x8'))('rpc');var config=require(_0x11ed('0x9'));var jayson=require(_0x11ed('0xa'));var client=jayson[_0x11ed('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x293483,_0x19618d,_0x36de89){return new BPromise(function(_0x58ab37,_0x4f9c63){return client[_0x11ed('0xc')](_0x293483,_0x36de89)[_0x11ed('0xd')](function(_0x2bf2bf){logger['info'](_0x11ed('0xe'),_0x19618d,'request\x20sent');logger['debug'](_0x11ed('0xf'),_0x19618d,_0x11ed('0x10'),JSON[_0x11ed('0x11')](_0x2bf2bf));if(_0x2bf2bf[_0x11ed('0x12')]){if(_0x2bf2bf[_0x11ed('0x12')][_0x11ed('0x13')]===0x1f4){logger[_0x11ed('0x12')](_0x11ed('0xe'),_0x19618d,_0x2bf2bf['error'][_0x11ed('0x14')]);return _0x4f9c63(_0x2bf2bf[_0x11ed('0x12')][_0x11ed('0x14')]);}logger['error'](_0x11ed('0xe'),_0x19618d,_0x2bf2bf[_0x11ed('0x12')][_0x11ed('0x14')]);return _0x58ab37(_0x2bf2bf[_0x11ed('0x12')][_0x11ed('0x14')]);}else{logger[_0x11ed('0x15')](_0x11ed('0xe'),_0x19618d,_0x11ed('0x10'));_0x58ab37(_0x2bf2bf['result'][_0x11ed('0x14')]);}})[_0x11ed('0x16')](function(_0x116828){logger[_0x11ed('0x12')](_0x11ed('0xe'),_0x19618d,_0x116828);_0x4f9c63(_0x116828);});});}
\ No newline at end of file
+var _0xeca9=['request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticMetric,\x20%s,\x20%s'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xeca9,0x1bf));var _0x9eca=function(_0x7604a8,_0x456695){_0x7604a8=_0x7604a8-0x0;var _0x14ed94=_0xeca9[_0x7604a8];return _0x14ed94;};'use strict';var _=require(_0x9eca('0x0'));var util=require('util');var moment=require(_0x9eca('0x1'));var BPromise=require(_0x9eca('0x2'));var rs=require(_0x9eca('0x3'));var fs=require('fs');var Redis=require(_0x9eca('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9eca('0x5'));var logger=require(_0x9eca('0x6'))(_0x9eca('0x7'));var config=require(_0x9eca('0x8'));var jayson=require(_0x9eca('0x9'));var client=jayson[_0x9eca('0xa')][_0x9eca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5f4eaa,_0x375636,_0x583b1c){return new BPromise(function(_0x139502,_0x1dabaa){return client[_0x9eca('0xc')](_0x5f4eaa,_0x583b1c)['then'](function(_0x366391){logger[_0x9eca('0xd')](_0x9eca('0xe'),_0x375636,_0x9eca('0xf'));logger['debug'](_0x9eca('0x10'),_0x375636,_0x9eca('0xf'),JSON[_0x9eca('0x11')](_0x366391));if(_0x366391[_0x9eca('0x12')]){if(_0x366391[_0x9eca('0x12')][_0x9eca('0x13')]===0x1f4){logger[_0x9eca('0x12')](_0x9eca('0xe'),_0x375636,_0x366391[_0x9eca('0x12')][_0x9eca('0x14')]);return _0x1dabaa(_0x366391['error']['message']);}logger[_0x9eca('0x12')](_0x9eca('0xe'),_0x375636,_0x366391[_0x9eca('0x12')][_0x9eca('0x14')]);return _0x139502(_0x366391[_0x9eca('0x12')][_0x9eca('0x14')]);}else{logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x375636,_0x9eca('0xf'));_0x139502(_0x366391['result']['message']);}})[_0x9eca('0x15')](function(_0x17cd5f){logger[_0x9eca('0x12')](_0x9eca('0xe'),_0x375636,_0x17cd5f);_0x1dabaa(_0x17cd5f);});});}
\ No newline at end of file
index 082888b..4f22a5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac0a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','post','put','update','delete','destroy','exports','path','connect-timeout'];(function(_0x56e4e7,_0x1db098){var _0x383618=function(_0xb088c6){while(--_0xb088c6){_0x56e4e7['push'](_0x56e4e7['shift']());}};_0x383618(++_0x1db098);}(_0xac0a,0x11e));var _0xaac0=function(_0x52cb4b,_0x44aae6){_0x52cb4b=_0x52cb4b-0x0;var _0xb506df=_0xac0a[_0x52cb4b];return _0xb506df;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaac0('0x0'));var timeout=require(_0xaac0('0x1'));var express=require('express');var router=express[_0xaac0('0x2')]();var fs_extra=require(_0xaac0('0x3'));var auth=require(_0xaac0('0x4'));var interaction=require(_0xaac0('0x5'));var config=require(_0xaac0('0x6'));var controller=require(_0xaac0('0x7'));router[_0xaac0('0x8')]('/',auth[_0xaac0('0x9')](),controller[_0xaac0('0xa')]);router[_0xaac0('0x8')](_0xaac0('0xb'),auth[_0xaac0('0x9')](),controller['show']);router[_0xaac0('0xc')]('/',auth[_0xaac0('0x9')](),controller['create']);router[_0xaac0('0xd')](_0xaac0('0xb'),auth[_0xaac0('0x9')](),controller[_0xaac0('0xe')]);router[_0xaac0('0xf')](_0xaac0('0xb'),auth[_0xaac0('0x9')](),controller[_0xaac0('0x10')]);module[_0xaac0('0x11')]=router;
\ No newline at end of file
+var _0xaa5c=['delete','destroy','multer','util','path','connect-timeout','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x150854,_0x1e82ea){var _0x3bed25=function(_0x5151ac){while(--_0x5151ac){_0x150854['push'](_0x150854['shift']());}};_0x3bed25(++_0x1e82ea);}(_0xaa5c,0x1f2));var _0xcaa5=function(_0x2a44be,_0x408c61){_0x2a44be=_0x2a44be-0x0;var _0x4a2cee=_0xaa5c[_0x2a44be];return _0x4a2cee;};'use strict';var multer=require(_0xcaa5('0x0'));var util=require(_0xcaa5('0x1'));var path=require(_0xcaa5('0x2'));var timeout=require(_0xcaa5('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcaa5('0x4'));var config=require('../../config/environment');var controller=require('./analyticMetric.controller');router[_0xcaa5('0x5')]('/',auth[_0xcaa5('0x6')](),controller[_0xcaa5('0x7')]);router['get'](_0xcaa5('0x8'),auth[_0xcaa5('0x6')](),controller[_0xcaa5('0x9')]);router[_0xcaa5('0xa')]('/',auth['isAuthenticated'](),controller[_0xcaa5('0xb')]);router[_0xcaa5('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xcaa5('0xd')]);router[_0xcaa5('0xe')](_0xcaa5('0x8'),auth['isAuthenticated'](),controller[_0xcaa5('0xf')]);module['exports']=router;
\ No newline at end of file
index a8460bf..23f2034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b83=['sequelize','exports','TEXT'];(function(_0xef0e02,_0x25703b){var _0x542c19=function(_0x4855c0){while(--_0x4855c0){_0xef0e02['push'](_0xef0e02['shift']());}};_0x542c19(++_0x25703b);}(_0x4b83,0xba));var _0x34b8=function(_0xe4a604,_0x225d31){_0xe4a604=_0xe4a604-0x0;var _0x240f2f=_0x4b83[_0xe4a604];return _0x240f2f;};'use strict';var Sequelize=require(_0x34b8('0x0'));module[_0x34b8('0x1')]={'tree':{'type':Sequelize[_0x34b8('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xade8=['TEXT','sequelize','exports'];(function(_0x74e8b5,_0x190ea8){var _0xa0f960=function(_0x37581d){while(--_0x37581d){_0x74e8b5['push'](_0x74e8b5['shift']());}};_0xa0f960(++_0x190ea8);}(_0xade8,0x70));var _0x8ade=function(_0x5c0ba3,_0x1b4f6f){_0x5c0ba3=_0x5c0ba3-0x0;var _0x5015f3=_0xade8[_0x5c0ba3];return _0x5015f3;};'use strict';var Sequelize=require(_0x8ade('0x0'));module[_0x8ade('0x1')]={'tree':{'type':Sequelize[_0x8ade('0x2')],'allowNull':![]}};
\ No newline at end of file
index b70fa67..8d7faa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ae7=['set','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','rawAttributes','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','options','count','includeAll','AnalyticTreeReport','rows','catch','show','params','include','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit'];(function(_0x4303e1,_0x492c81){var _0x548ec9=function(_0x26e6c3){while(--_0x26e6c3){_0x4303e1['push'](_0x4303e1['shift']());}};_0x548ec9(++_0x492c81);}(_0x7ae7,0x19e));var _0x77ae=function(_0x5199af,_0x1eb67c){_0x5199af=_0x5199af-0x0;var _0x381974=_0x7ae7[_0x5199af];return _0x381974;};'use strict';var emlformat=require(_0x77ae('0x0'));var rimraf=require(_0x77ae('0x1'));var zipdir=require(_0x77ae('0x2'));var jsonpatch=require(_0x77ae('0x3'));var rp=require('request-promise');var moment=require(_0x77ae('0x4'));var BPromise=require(_0x77ae('0x5'));var Mustache=require(_0x77ae('0x6'));var util=require(_0x77ae('0x7'));var path=require('path');var sox=require(_0x77ae('0x8'));var csv=require(_0x77ae('0x9'));var ejs=require(_0x77ae('0xa'));var fs=require('fs');var fs_extra=require(_0x77ae('0xb'));var _=require(_0x77ae('0xc'));var squel=require('squel');var crypto=require(_0x77ae('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x77ae('0xe'));var toCsv=require('to-csv');var querystring=require(_0x77ae('0xf'));var Papa=require(_0x77ae('0x10'));var Redis=require(_0x77ae('0x11'));var authService=require(_0x77ae('0x12'));var qs=require(_0x77ae('0x13'));var as=require(_0x77ae('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x77ae('0x15'));var utils=require(_0x77ae('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x77ae('0x17'))['db'];function respondWithStatusCode(_0x3dce55,_0x1a381b){_0x1a381b=_0x1a381b||0xcc;return function(_0x522bb4){if(_0x522bb4){return _0x3dce55[_0x77ae('0x18')](_0x1a381b);}return _0x3dce55['status'](_0x1a381b)['end']();};}function respondWithResult(_0x3ea8a3,_0x54a11b){_0x54a11b=_0x54a11b||0xc8;return function(_0xf649d4){if(_0xf649d4){return _0x3ea8a3[_0x77ae('0x19')](_0x54a11b)[_0x77ae('0x1a')](_0xf649d4);}};}function respondWithFilteredResult(_0x42cb04,_0x5c70d8){return function(_0x38a283){if(_0x38a283){var _0x3e574b=typeof _0x5c70d8[_0x77ae('0x1b')]===_0x77ae('0x1c')&&typeof _0x5c70d8[_0x77ae('0x1d')]===_0x77ae('0x1c');var _0xa4cd3b=_0x38a283['count'];var _0x59c4e2=_0x3e574b?0x0:_0x5c70d8['offset'];var _0x26e6f0=_0x3e574b?_0x38a283['count']:_0x5c70d8[_0x77ae('0x1b')]+_0x5c70d8[_0x77ae('0x1d')];var _0x57e778;if(_0x26e6f0>=_0xa4cd3b){_0x26e6f0=_0xa4cd3b;_0x57e778=0xc8;}else{_0x57e778=0xce;}_0x42cb04[_0x77ae('0x19')](_0x57e778);return _0x42cb04[_0x77ae('0x1e')](_0x77ae('0x1f'),_0x59c4e2+'-'+_0x26e6f0+'/'+_0xa4cd3b)[_0x77ae('0x1a')](_0x38a283);}return null;};}function patchUpdates(_0x13359b){return function(_0x29a553){try{jsonpatch[_0x77ae('0x20')](_0x29a553,_0x13359b,!![]);}catch(_0xa69b7f){return BPromise[_0x77ae('0x21')](_0xa69b7f);}return _0x29a553[_0x77ae('0x22')]();};}function saveUpdates(_0x35ed78,_0x51c51b){return function(_0x5ec6dd){if(_0x5ec6dd){return _0x5ec6dd[_0x77ae('0x23')](_0x35ed78)['then'](function(_0x199ee6){return _0x199ee6;});}return null;};}function removeEntity(_0x44efb7,_0x1b7116){return function(_0x47b7f9){if(_0x47b7f9){return _0x47b7f9['destroy']()[_0x77ae('0x24')](function(){_0x44efb7['status'](0xcc)[_0x77ae('0x25')]();});}};}function handleEntityNotFound(_0x482336,_0x1951de){return function(_0x6f82d1){if(!_0x6f82d1){_0x482336[_0x77ae('0x18')](0x194);}return _0x6f82d1;};}function handleError(_0x545f6e,_0x2eeaf9){_0x2eeaf9=_0x2eeaf9||0x1f4;return function(_0x166d59){logger[_0x77ae('0x26')](_0x166d59[_0x77ae('0x27')]);if(_0x166d59['name']){delete _0x166d59[_0x77ae('0x28')];}_0x545f6e[_0x77ae('0x19')](_0x2eeaf9)[_0x77ae('0x29')](_0x166d59);};}exports[_0x77ae('0x2a')]=function(_0x190b49,_0x2838e9){var _0x49a804={},_0x33f148={},_0x2cbbee={'count':0x0,'rows':[]};var _0x6b650d=_['map'](db['AnalyticTreeReport'][_0x77ae('0x2b')],function(_0x21ebae){return{'name':_0x21ebae['fieldName'],'type':_0x21ebae[_0x77ae('0x2c')]['key']};});_0x33f148[_0x77ae('0x2d')]=_[_0x77ae('0x2e')](_0x6b650d,'name');_0x33f148[_0x77ae('0x2f')]=_[_0x77ae('0x30')](_0x190b49['query']);_0x33f148['filters']=_[_0x77ae('0x31')](_0x33f148[_0x77ae('0x2d')],_0x33f148[_0x77ae('0x2f')]);_0x49a804[_0x77ae('0x32')]=_['intersection'](_0x33f148[_0x77ae('0x2d')],qs[_0x77ae('0x33')](_0x190b49['query']['fields']));_0x49a804[_0x77ae('0x32')]=_0x49a804[_0x77ae('0x32')][_0x77ae('0x34')]?_0x49a804[_0x77ae('0x32')]:_0x33f148['model'];if(!_0x190b49[_0x77ae('0x2f')][_0x77ae('0x35')]('nolimit')){_0x49a804['limit']=qs[_0x77ae('0x1d')](_0x190b49[_0x77ae('0x2f')][_0x77ae('0x1d')]);_0x49a804[_0x77ae('0x1b')]=qs['offset'](_0x190b49[_0x77ae('0x2f')][_0x77ae('0x1b')]);}_0x49a804[_0x77ae('0x36')]=qs['sort'](_0x190b49[_0x77ae('0x2f')][_0x77ae('0x37')]);_0x49a804['where']=qs[_0x77ae('0x38')](_[_0x77ae('0x39')](_0x190b49[_0x77ae('0x2f')],_0x33f148[_0x77ae('0x38')]),_0x6b650d);if(_0x190b49[_0x77ae('0x2f')][_0x77ae('0x3a')]){_0x49a804[_0x77ae('0x3b')]=_['merge'](_0x49a804[_0x77ae('0x3b')],{'$or':_[_0x77ae('0x2e')](_0x6b650d,function(_0x3c6080){if(_0x3c6080[_0x77ae('0x2c')]!=='VIRTUAL'){var _0x3cba52={};_0x3cba52[_0x3c6080[_0x77ae('0x28')]]={'$like':'%'+_0x190b49[_0x77ae('0x2f')][_0x77ae('0x3a')]+'%'};return _0x3cba52;}})});}_0x49a804=_[_0x77ae('0x3c')]({},_0x49a804,_0x190b49[_0x77ae('0x3d')]);var _0x22cdbb={'where':_0x49a804[_0x77ae('0x3b')]};return db['AnalyticTreeReport'][_0x77ae('0x3e')](_0x22cdbb)[_0x77ae('0x24')](function(_0x5a8022){_0x2cbbee[_0x77ae('0x3e')]=_0x5a8022;if(_0x190b49['query'][_0x77ae('0x3f')]){_0x49a804['include']=[{'all':!![]}];}return db[_0x77ae('0x40')]['findAll'](_0x49a804);})[_0x77ae('0x24')](function(_0x58d429){_0x2cbbee[_0x77ae('0x41')]=_0x58d429;return _0x2cbbee;})[_0x77ae('0x24')](respondWithFilteredResult(_0x2838e9,_0x49a804))[_0x77ae('0x42')](handleError(_0x2838e9,null));};exports[_0x77ae('0x43')]=function(_0x3a8d5d,_0x5919c0){var _0x5a7daa={'raw':!![],'where':{'id':_0x3a8d5d[_0x77ae('0x44')]['id']}},_0x20da03={};_0x20da03[_0x77ae('0x2d')]=_['keys'](db[_0x77ae('0x40')][_0x77ae('0x2b')]);_0x20da03[_0x77ae('0x2f')]=_[_0x77ae('0x30')](_0x3a8d5d[_0x77ae('0x2f')]);_0x20da03[_0x77ae('0x38')]=_['intersection'](_0x20da03[_0x77ae('0x2d')],_0x20da03[_0x77ae('0x2f')]);_0x5a7daa[_0x77ae('0x32')]=_[_0x77ae('0x31')](_0x20da03[_0x77ae('0x2d')],qs[_0x77ae('0x33')](_0x3a8d5d[_0x77ae('0x2f')][_0x77ae('0x33')]));_0x5a7daa[_0x77ae('0x32')]=_0x5a7daa['attributes'][_0x77ae('0x34')]?_0x5a7daa[_0x77ae('0x32')]:_0x20da03[_0x77ae('0x2d')];if(_0x3a8d5d['query'][_0x77ae('0x3f')]){_0x5a7daa[_0x77ae('0x45')]=[{'all':!![]}];}_0x5a7daa=_[_0x77ae('0x3c')]({},_0x5a7daa,_0x3a8d5d[_0x77ae('0x3d')]);return db['AnalyticTreeReport'][_0x77ae('0x46')](_0x5a7daa)[_0x77ae('0x24')](handleEntityNotFound(_0x5919c0,null))[_0x77ae('0x24')](respondWithResult(_0x5919c0,null))[_0x77ae('0x42')](handleError(_0x5919c0,null));};exports[_0x77ae('0x47')]=function(_0xb20e4e,_0x41bf89){return db[_0x77ae('0x40')][_0x77ae('0x47')](_0xb20e4e[_0x77ae('0x48')],{})[_0x77ae('0x24')](respondWithResult(_0x41bf89,0xc9))[_0x77ae('0x42')](handleError(_0x41bf89,null));};exports['update']=function(_0x1b1635,_0x3b8f5e){if(_0x1b1635[_0x77ae('0x48')]['id']){delete _0x1b1635[_0x77ae('0x48')]['id'];}return db[_0x77ae('0x40')]['find']({'where':{'id':_0x1b1635[_0x77ae('0x44')]['id']}})[_0x77ae('0x24')](handleEntityNotFound(_0x3b8f5e,null))[_0x77ae('0x24')](saveUpdates(_0x1b1635['body'],null))[_0x77ae('0x24')](respondWithResult(_0x3b8f5e,null))[_0x77ae('0x42')](handleError(_0x3b8f5e,null));};exports[_0x77ae('0x49')]=function(_0xf023d7,_0x3d107f){return db[_0x77ae('0x40')][_0x77ae('0x46')]({'where':{'id':_0xf023d7[_0x77ae('0x44')]['id']}})['then'](handleEntityNotFound(_0x3d107f,null))['then'](removeEntity(_0x3d107f,null))[_0x77ae('0x42')](handleError(_0x3d107f,null));};
\ No newline at end of file
+var _0xd56c=['params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','sort','merge','where','VIRTUAL','filter','AnalyticTreeReport','findAll','rows','show','include','options','find','catch','create','body'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd56c,0x122));var _0xcd56=function(_0x4c7cf6,_0x55daa3){_0x4c7cf6=_0x4c7cf6-0x0;var _0x1fc227=_0xd56c[_0x4c7cf6];return _0x1fc227;};'use strict';var emlformat=require(_0xcd56('0x0'));var rimraf=require(_0xcd56('0x1'));var zipdir=require(_0xcd56('0x2'));var jsonpatch=require(_0xcd56('0x3'));var rp=require(_0xcd56('0x4'));var moment=require('moment');var BPromise=require(_0xcd56('0x5'));var Mustache=require('mustache');var util=require(_0xcd56('0x6'));var path=require(_0xcd56('0x7'));var sox=require(_0xcd56('0x8'));var csv=require(_0xcd56('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcd56('0xa'));var _=require('lodash');var squel=require(_0xcd56('0xb'));var crypto=require(_0xcd56('0xc'));var jsforce=require(_0xcd56('0xd'));var deskjs=require(_0xcd56('0xe'));var toCsv=require(_0xcd56('0x9'));var querystring=require(_0xcd56('0xf'));var Papa=require(_0xcd56('0x10'));var Redis=require(_0xcd56('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcd56('0x12'));var as=require(_0xcd56('0x13'));var hardwareService=require(_0xcd56('0x14'));var logger=require(_0xcd56('0x15'))(_0xcd56('0x16'));var utils=require(_0xcd56('0x17'));var config=require(_0xcd56('0x18'));var licenseUtil=require(_0xcd56('0x19'));var db=require(_0xcd56('0x1a'))['db'];function respondWithStatusCode(_0x209a17,_0x3125b2){_0x3125b2=_0x3125b2||0xcc;return function(_0x5f04fd){if(_0x5f04fd){return _0x209a17[_0xcd56('0x1b')](_0x3125b2);}return _0x209a17[_0xcd56('0x1c')](_0x3125b2)[_0xcd56('0x1d')]();};}function respondWithResult(_0x1412bb,_0x5521ff){_0x5521ff=_0x5521ff||0xc8;return function(_0x3c16fe){if(_0x3c16fe){return _0x1412bb['status'](_0x5521ff)[_0xcd56('0x1e')](_0x3c16fe);}};}function respondWithFilteredResult(_0x1f69b1,_0x30037f){return function(_0x59494a){if(_0x59494a){var _0x227da8=typeof _0x30037f[_0xcd56('0x1f')]===_0xcd56('0x20')&&typeof _0x30037f[_0xcd56('0x21')]===_0xcd56('0x20');var _0x14c23c=_0x59494a['count'];var _0x42ff5d=_0x227da8?0x0:_0x30037f[_0xcd56('0x1f')];var _0x268066=_0x227da8?_0x59494a[_0xcd56('0x22')]:_0x30037f[_0xcd56('0x1f')]+_0x30037f['limit'];var _0x52758b;if(_0x268066>=_0x14c23c){_0x268066=_0x14c23c;_0x52758b=0xc8;}else{_0x52758b=0xce;}_0x1f69b1[_0xcd56('0x1c')](_0x52758b);return _0x1f69b1['set'](_0xcd56('0x23'),_0x42ff5d+'-'+_0x268066+'/'+_0x14c23c)['json'](_0x59494a);}return null;};}function patchUpdates(_0x3773ce){return function(_0x334a45){try{jsonpatch[_0xcd56('0x24')](_0x334a45,_0x3773ce,!![]);}catch(_0x2ec6fe){return BPromise[_0xcd56('0x25')](_0x2ec6fe);}return _0x334a45['save']();};}function saveUpdates(_0x10dd2f,_0x49e01b){return function(_0x3f55cb){if(_0x3f55cb){return _0x3f55cb[_0xcd56('0x26')](_0x10dd2f)[_0xcd56('0x27')](function(_0x30980d){return _0x30980d;});}return null;};}function removeEntity(_0x477ae0,_0x38d402){return function(_0x438579){if(_0x438579){return _0x438579['destroy']()['then'](function(){_0x477ae0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x29b815,_0xd514f7){return function(_0x48d75a){if(!_0x48d75a){_0x29b815[_0xcd56('0x1b')](0x194);}return _0x48d75a;};}function handleError(_0x4021b1,_0x44e9db){_0x44e9db=_0x44e9db||0x1f4;return function(_0x194d64){logger[_0xcd56('0x28')](_0x194d64[_0xcd56('0x29')]);if(_0x194d64[_0xcd56('0x2a')]){delete _0x194d64[_0xcd56('0x2a')];}_0x4021b1[_0xcd56('0x1c')](_0x44e9db)[_0xcd56('0x2b')](_0x194d64);};}exports[_0xcd56('0x2c')]=function(_0x205473,_0x46f998){var _0x16ada3={},_0x88a636={},_0x388041={'count':0x0,'rows':[]};var _0x1e270d=_['map'](db['AnalyticTreeReport'][_0xcd56('0x2d')],function(_0x65783c){return{'name':_0x65783c[_0xcd56('0x2e')],'type':_0x65783c[_0xcd56('0x2f')][_0xcd56('0x30')]};});_0x88a636['model']=_['map'](_0x1e270d,_0xcd56('0x2a'));_0x88a636[_0xcd56('0x31')]=_['keys'](_0x205473[_0xcd56('0x31')]);_0x88a636[_0xcd56('0x32')]=_[_0xcd56('0x33')](_0x88a636['model'],_0x88a636[_0xcd56('0x31')]);_0x16ada3['attributes']=_[_0xcd56('0x33')](_0x88a636[_0xcd56('0x34')],qs[_0xcd56('0x35')](_0x205473['query'][_0xcd56('0x35')]));_0x16ada3['attributes']=_0x16ada3[_0xcd56('0x36')]['length']?_0x16ada3[_0xcd56('0x36')]:_0x88a636[_0xcd56('0x34')];if(!_0x205473[_0xcd56('0x31')]['hasOwnProperty']('nolimit')){_0x16ada3['limit']=qs[_0xcd56('0x21')](_0x205473[_0xcd56('0x31')][_0xcd56('0x21')]);_0x16ada3[_0xcd56('0x1f')]=qs[_0xcd56('0x1f')](_0x205473['query'][_0xcd56('0x1f')]);}_0x16ada3['order']=qs[_0xcd56('0x37')](_0x205473[_0xcd56('0x31')]['sort']);_0x16ada3['where']=qs[_0xcd56('0x32')](_['pick'](_0x205473[_0xcd56('0x31')],_0x88a636[_0xcd56('0x32')]),_0x1e270d);if(_0x205473['query']['filter']){_0x16ada3['where']=_[_0xcd56('0x38')](_0x16ada3[_0xcd56('0x39')],{'$or':_['map'](_0x1e270d,function(_0x3f5e54){if(_0x3f5e54['type']!==_0xcd56('0x3a')){var _0x5710f9={};_0x5710f9[_0x3f5e54[_0xcd56('0x2a')]]={'$like':'%'+_0x205473[_0xcd56('0x31')][_0xcd56('0x3b')]+'%'};return _0x5710f9;}})});}_0x16ada3=_[_0xcd56('0x38')]({},_0x16ada3,_0x205473['options']);var _0x36b7fb={'where':_0x16ada3[_0xcd56('0x39')]};return db['AnalyticTreeReport'][_0xcd56('0x22')](_0x36b7fb)[_0xcd56('0x27')](function(_0x2ed58b){_0x388041[_0xcd56('0x22')]=_0x2ed58b;if(_0x205473['query']['includeAll']){_0x16ada3['include']=[{'all':!![]}];}return db[_0xcd56('0x3c')][_0xcd56('0x3d')](_0x16ada3);})['then'](function(_0x289271){_0x388041[_0xcd56('0x3e')]=_0x289271;return _0x388041;})[_0xcd56('0x27')](respondWithFilteredResult(_0x46f998,_0x16ada3))['catch'](handleError(_0x46f998,null));};exports[_0xcd56('0x3f')]=function(_0x2b7352,_0x215cdb){var _0x102abb={'raw':!![],'where':{'id':_0x2b7352['params']['id']}},_0x422fb3={};_0x422fb3[_0xcd56('0x34')]=_['keys'](db['AnalyticTreeReport'][_0xcd56('0x2d')]);_0x422fb3['query']=_['keys'](_0x2b7352[_0xcd56('0x31')]);_0x422fb3[_0xcd56('0x32')]=_['intersection'](_0x422fb3['model'],_0x422fb3[_0xcd56('0x31')]);_0x102abb['attributes']=_[_0xcd56('0x33')](_0x422fb3[_0xcd56('0x34')],qs[_0xcd56('0x35')](_0x2b7352[_0xcd56('0x31')]['fields']));_0x102abb[_0xcd56('0x36')]=_0x102abb[_0xcd56('0x36')]['length']?_0x102abb['attributes']:_0x422fb3['model'];if(_0x2b7352[_0xcd56('0x31')]['includeAll']){_0x102abb[_0xcd56('0x40')]=[{'all':!![]}];}_0x102abb=_['merge']({},_0x102abb,_0x2b7352[_0xcd56('0x41')]);return db[_0xcd56('0x3c')][_0xcd56('0x42')](_0x102abb)[_0xcd56('0x27')](handleEntityNotFound(_0x215cdb,null))[_0xcd56('0x27')](respondWithResult(_0x215cdb,null))[_0xcd56('0x43')](handleError(_0x215cdb,null));};exports[_0xcd56('0x44')]=function(_0x4a9529,_0x2b7e86){return db[_0xcd56('0x3c')][_0xcd56('0x44')](_0x4a9529[_0xcd56('0x45')],{})['then'](respondWithResult(_0x2b7e86,0xc9))[_0xcd56('0x43')](handleError(_0x2b7e86,null));};exports[_0xcd56('0x26')]=function(_0x108ec1,_0x2cbc3c){if(_0x108ec1[_0xcd56('0x45')]['id']){delete _0x108ec1[_0xcd56('0x45')]['id'];}return db[_0xcd56('0x3c')][_0xcd56('0x42')]({'where':{'id':_0x108ec1[_0xcd56('0x46')]['id']}})['then'](handleEntityNotFound(_0x2cbc3c,null))['then'](saveUpdates(_0x108ec1[_0xcd56('0x45')],null))[_0xcd56('0x27')](respondWithResult(_0x2cbc3c,null))[_0xcd56('0x43')](handleError(_0x2cbc3c,null));};exports[_0xcd56('0x47')]=function(_0x5c7c40,_0x25e2ec){return db['AnalyticTreeReport'][_0xcd56('0x42')]({'where':{'id':_0x5c7c40[_0xcd56('0x46')]['id']}})[_0xcd56('0x27')](handleEntityNotFound(_0x25e2ec,null))['then'](removeEntity(_0x25e2ec,null))[_0xcd56('0x43')](handleError(_0x25e2ec,null));};
\ No newline at end of file
index c70bbe6..dd51f3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbedd=['define','AnalyticTreeReport','analytics_report_trees','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0xbedd,0xdf));var _0xdbed=function(_0x428d9a,_0x4e724d){_0x428d9a=_0x428d9a-0x0;var _0x50da90=_0xbedd[_0x428d9a];return _0x50da90;};'use strict';var _=require(_0xdbed('0x0'));var util=require('util');var logger=require(_0xdbed('0x1'))('api');var moment=require('moment');var BPromise=require(_0xdbed('0x2'));var rp=require(_0xdbed('0x3'));var fs=require('fs');var path=require(_0xdbed('0x4'));var rimraf=require(_0xdbed('0x5'));var config=require(_0xdbed('0x6'));var attributes=require(_0xdbed('0x7'));module['exports']=function(_0x463bdb,_0x1ca51d){return _0x463bdb[_0xdbed('0x8')](_0xdbed('0x9'),attributes,{'tableName':_0xdbed('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x577d=['request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','util','../../config/logger','api','bluebird'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x577d,0x6a));var _0xd577=function(_0x1f6e7e,_0x272853){_0x1f6e7e=_0x1f6e7e-0x0;var _0xc33b31=_0x577d[_0x1f6e7e];return _0xc33b31;};'use strict';var _=require('lodash');var util=require(_0xd577('0x0'));var logger=require(_0xd577('0x1'))(_0xd577('0x2'));var moment=require('moment');var BPromise=require(_0xd577('0x3'));var rp=require(_0xd577('0x4'));var fs=require('fs');var path=require(_0xd577('0x5'));var rimraf=require(_0xd577('0x6'));var config=require(_0xd577('0x7'));var attributes=require(_0xd577('0x8'));module[_0xd577('0x9')]=function(_0x410e16,_0xd4cc08){return _0x410e16[_0xd577('0xa')]('AnalyticTreeReport',attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb252f9..fa62cb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2cb11a,_0x27f77a){var _0xe67271=function(_0x5e4e3e){while(--_0x5e4e3e){_0x2cb11a['push'](_0x2cb11a['shift']());}};_0xe67271(++_0x27f77a);}(_0xadb5,0xad));var _0x5adb=function(_0x21d19a,_0x2b48d7){_0x21d19a=_0x21d19a-0x0;var _0x183628=_0xadb5[_0x21d19a];return _0x183628;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x3075e3,_0x4b37b9){var _0x46be8a=function(_0xa9b028){while(--_0xa9b028){_0x3075e3['push'](_0x3075e3['shift']());}};_0x46be8a(++_0x4b37b9);}(_0xdb28,0x106));var _0x8db2=function(_0x16572f,_0x4ff85e){_0x16572f=_0x16572f-0x0;var _0x2ecb85=_0xdb28[_0x16572f];return _0x2ecb85;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 15edbaf..6c47e0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff68=['isAuthenticated','/:id','show','post','put','update','destroy','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./analyticTreeReport.controller','get'];(function(_0x277721,_0x46971e){var _0x286051=function(_0x130c98){while(--_0x130c98){_0x277721['push'](_0x277721['shift']());}};_0x286051(++_0x46971e);}(_0xff68,0xd7));var _0x8ff6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xff68[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x8ff6('0x0'));var express=require(_0x8ff6('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8ff6('0x2'));var interaction=require(_0x8ff6('0x3'));var config=require('../../config/environment');var controller=require(_0x8ff6('0x4'));router[_0x8ff6('0x5')]('/',auth[_0x8ff6('0x6')](),controller['index']);router[_0x8ff6('0x5')](_0x8ff6('0x7'),auth[_0x8ff6('0x6')](),controller[_0x8ff6('0x8')]);router[_0x8ff6('0x9')]('/',auth[_0x8ff6('0x6')](),controller['create']);router[_0x8ff6('0xa')](_0x8ff6('0x7'),auth[_0x8ff6('0x6')](),controller[_0x8ff6('0xb')]);router['delete'](_0x8ff6('0x7'),auth['isAuthenticated'](),controller[_0x8ff6('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x7d2a=['put','update','delete','destroy','exports','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x3c84ee,_0x158c08){var _0x620596=function(_0x23d3a1){while(--_0x23d3a1){_0x3c84ee['push'](_0x3c84ee['shift']());}};_0x620596(++_0x158c08);}(_0x7d2a,0xdd));var _0xa7d2=function(_0x9e21ef,_0x2e414e){_0x9e21ef=_0x9e21ef-0x0;var _0x122bc8=_0x7d2a[_0x9e21ef];return _0x122bc8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa7d2('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa7d2('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xa7d2('0x2'));var interaction=require(_0xa7d2('0x3'));var config=require(_0xa7d2('0x4'));var controller=require(_0xa7d2('0x5'));router['get']('/',auth[_0xa7d2('0x6')](),controller[_0xa7d2('0x7')]);router[_0xa7d2('0x8')](_0xa7d2('0x9'),auth[_0xa7d2('0x6')](),controller[_0xa7d2('0xa')]);router[_0xa7d2('0xb')]('/',auth[_0xa7d2('0x6')](),controller[_0xa7d2('0xc')]);router[_0xa7d2('0xd')](_0xa7d2('0x9'),auth[_0xa7d2('0x6')](),controller[_0xa7d2('0xe')]);router[_0xa7d2('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xa7d2('0x10')]);module[_0xa7d2('0x11')]=router;
\ No newline at end of file
index b04d422..7ea4f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc39c=['exports','STRING'];(function(_0x18b680,_0xad85cd){var _0x441328=function(_0x28bdfb){while(--_0x28bdfb){_0x18b680['push'](_0x18b680['shift']());}};_0x441328(++_0xad85cd);}(_0xc39c,0xd2));var _0xcc39=function(_0x3ed234,_0xcda5dc){_0x3ed234=_0x3ed234-0x0;var _0x593f3a=_0xc39c[_0x3ed234];return _0x593f3a;};'use strict';var Sequelize=require('sequelize');module[_0xcc39('0x0')]={'name':{'type':Sequelize[_0xcc39('0x1')]},'basename':{'type':Sequelize[_0xcc39('0x1')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd846=['sequelize','exports','STRING'];(function(_0x369a98,_0x32250c){var _0x29565c=function(_0x1a6973){while(--_0x1a6973){_0x369a98['push'](_0x369a98['shift']());}};_0x29565c(++_0x32250c);}(_0xd846,0x195));var _0x6d84=function(_0x1a45d6,_0x4fa342){_0x1a45d6=_0x1a45d6-0x0;var _0x1b1813=_0xd846[_0x1a45d6];return _0x1b1813;};'use strict';var Sequelize=require(_0x6d84('0x0'));module[_0x6d84('0x1')]={'name':{'type':Sequelize[_0x6d84('0x2')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 13dc6d2..b2c8c38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71be=['intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','clone','omit','createdAt','updatedAt','body','create','update','file','originalname','filename','type','mimetype','download','findOne','ChatOfflineMessageId','server/files/attachments/','offline-chat/','join','basename','eml-format','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','then','sendStatus','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','model','query','keys','filters'];(function(_0x36ed3c,_0x44a00a){var _0x52a2e0=function(_0x3f7af9){while(--_0x3f7af9){_0x36ed3c['push'](_0x36ed3c['shift']());}};_0x52a2e0(++_0x44a00a);}(_0x71be,0x86));var _0xe71b=function(_0x577519,_0x346daf){_0x577519=_0x577519-0x0;var _0x5b12f7=_0x71be[_0x577519];return _0x5b12f7;};'use strict';var emlformat=require(_0xe71b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe71b('0x1'));var moment=require(_0xe71b('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xe71b('0x3'));var util=require(_0xe71b('0x4'));var path=require(_0xe71b('0x5'));var sox=require(_0xe71b('0x6'));var csv=require(_0xe71b('0x7'));var ejs=require(_0xe71b('0x8'));var fs=require('fs');var fs_extra=require(_0xe71b('0x9'));var _=require(_0xe71b('0xa'));var squel=require(_0xe71b('0xb'));var crypto=require(_0xe71b('0xc'));var jsforce=require(_0xe71b('0xd'));var deskjs=require(_0xe71b('0xe'));var toCsv=require(_0xe71b('0x7'));var querystring=require(_0xe71b('0xf'));var Papa=require(_0xe71b('0x10'));var Redis=require(_0xe71b('0x11'));var authService=require(_0xe71b('0x12'));var qs=require(_0xe71b('0x13'));var as=require(_0xe71b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe71b('0x15'))(_0xe71b('0x16'));var utils=require(_0xe71b('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe71b('0x18'))['db'];function respondWithStatusCode(_0x304f32,_0x5b765e){_0x5b765e=_0x5b765e||0xcc;return function(_0x2bca94){if(_0x2bca94){return _0x304f32['sendStatus'](_0x5b765e);}return _0x304f32[_0xe71b('0x19')](_0x5b765e)[_0xe71b('0x1a')]();};}function respondWithResult(_0x810cc2,_0x4d4833){_0x4d4833=_0x4d4833||0xc8;return function(_0x21f305){if(_0x21f305){return _0x810cc2[_0xe71b('0x19')](_0x4d4833)['json'](_0x21f305);}};}function respondWithFilteredResult(_0x4442d5,_0x4388da){return function(_0x4c5884){if(_0x4c5884){var _0x5d59e4=typeof _0x4388da['offset']===_0xe71b('0x1b')&&typeof _0x4388da[_0xe71b('0x1c')]===_0xe71b('0x1b');var _0x453f33=_0x4c5884[_0xe71b('0x1d')];var _0x340331=_0x5d59e4?0x0:_0x4388da[_0xe71b('0x1e')];var _0x4a4589=_0x5d59e4?_0x4c5884[_0xe71b('0x1d')]:_0x4388da[_0xe71b('0x1e')]+_0x4388da[_0xe71b('0x1c')];var _0x1c5a52;if(_0x4a4589>=_0x453f33){_0x4a4589=_0x453f33;_0x1c5a52=0xc8;}else{_0x1c5a52=0xce;}_0x4442d5[_0xe71b('0x19')](_0x1c5a52);return _0x4442d5[_0xe71b('0x1f')](_0xe71b('0x20'),_0x340331+'-'+_0x4a4589+'/'+_0x453f33)[_0xe71b('0x21')](_0x4c5884);}return null;};}function patchUpdates(_0x5617c2){return function(_0x8185b){try{jsonpatch[_0xe71b('0x22')](_0x8185b,_0x5617c2,!![]);}catch(_0x4dc51b){return BPromise[_0xe71b('0x23')](_0x4dc51b);}return _0x8185b[_0xe71b('0x24')]();};}function saveUpdates(_0x1bfdcd,_0xa32480){return function(_0x5f4270){if(_0x5f4270){return _0x5f4270['update'](_0x1bfdcd)[_0xe71b('0x25')](function(_0x19f16c){return _0x19f16c;});}return null;};}function removeEntity(_0x4d869d,_0x2cab00){return function(_0x81d5e){if(_0x81d5e){return _0x81d5e['destroy']()[_0xe71b('0x25')](function(){_0x4d869d[_0xe71b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d29fd,_0x163afa){return function(_0x59f458){if(!_0x59f458){_0x5d29fd[_0xe71b('0x26')](0x194);}return _0x59f458;};}function handleError(_0x464717,_0x31545e){_0x31545e=_0x31545e||0x1f4;return function(_0xf5c211){logger[_0xe71b('0x27')](_0xf5c211[_0xe71b('0x28')]);if(_0xf5c211[_0xe71b('0x29')]){delete _0xf5c211[_0xe71b('0x29')];}_0x464717[_0xe71b('0x19')](_0x31545e)[_0xe71b('0x2a')](_0xf5c211);};}exports[_0xe71b('0x2b')]=function(_0x208bc8,_0x364eac){var _0x7e2127={},_0x52dd16={},_0x370b27={'count':0x0,'rows':[]};var _0x44e2fa=_[_0xe71b('0x2c')](db[_0xe71b('0x2d')][_0xe71b('0x2e')],function(_0x4cbd15){return{'name':_0x4cbd15[_0xe71b('0x2f')],'type':_0x4cbd15['type']['key']};});_0x52dd16[_0xe71b('0x30')]=_[_0xe71b('0x2c')](_0x44e2fa,_0xe71b('0x29'));_0x52dd16[_0xe71b('0x31')]=_[_0xe71b('0x32')](_0x208bc8['query']);_0x52dd16[_0xe71b('0x33')]=_[_0xe71b('0x34')](_0x52dd16[_0xe71b('0x30')],_0x52dd16[_0xe71b('0x31')]);_0x7e2127['attributes']=_[_0xe71b('0x34')](_0x52dd16[_0xe71b('0x30')],qs[_0xe71b('0x35')](_0x208bc8[_0xe71b('0x31')]['fields']));_0x7e2127[_0xe71b('0x36')]=_0x7e2127['attributes'][_0xe71b('0x37')]?_0x7e2127[_0xe71b('0x36')]:_0x52dd16['model'];if(!_0x208bc8[_0xe71b('0x31')][_0xe71b('0x38')](_0xe71b('0x39'))){_0x7e2127[_0xe71b('0x1c')]=qs[_0xe71b('0x1c')](_0x208bc8['query'][_0xe71b('0x1c')]);_0x7e2127[_0xe71b('0x1e')]=qs[_0xe71b('0x1e')](_0x208bc8[_0xe71b('0x31')][_0xe71b('0x1e')]);}_0x7e2127[_0xe71b('0x3a')]=qs['sort'](_0x208bc8['query'][_0xe71b('0x3b')]);_0x7e2127[_0xe71b('0x3c')]=qs[_0xe71b('0x33')](_[_0xe71b('0x3d')](_0x208bc8[_0xe71b('0x31')],_0x52dd16[_0xe71b('0x33')]),_0x44e2fa);if(_0x208bc8[_0xe71b('0x31')][_0xe71b('0x3e')]){_0x7e2127[_0xe71b('0x3c')]=_[_0xe71b('0x3f')](_0x7e2127[_0xe71b('0x3c')],{'$or':_[_0xe71b('0x2c')](_0x44e2fa,function(_0x1ea591){if(_0x1ea591['type']!==_0xe71b('0x40')){var _0x3e2617={};_0x3e2617[_0x1ea591[_0xe71b('0x29')]]={'$like':'%'+_0x208bc8[_0xe71b('0x31')][_0xe71b('0x3e')]+'%'};return _0x3e2617;}})});}_0x7e2127=_[_0xe71b('0x3f')]({},_0x7e2127,_0x208bc8[_0xe71b('0x41')]);var _0x2a90e7={'where':_0x7e2127[_0xe71b('0x3c')]};return db[_0xe71b('0x2d')][_0xe71b('0x1d')](_0x2a90e7)['then'](function(_0x201798){_0x370b27[_0xe71b('0x1d')]=_0x201798;if(_0x208bc8[_0xe71b('0x31')][_0xe71b('0x42')]){_0x7e2127[_0xe71b('0x43')]=[{'all':!![]}];}return db[_0xe71b('0x2d')][_0xe71b('0x44')](_0x7e2127);})[_0xe71b('0x25')](function(_0x190afe){_0x370b27[_0xe71b('0x45')]=_0x190afe;return _0x370b27;})[_0xe71b('0x25')](respondWithFilteredResult(_0x364eac,_0x7e2127))['catch'](handleError(_0x364eac,null));};exports[_0xe71b('0x46')]=function(_0xf932f7,_0x2c9217){var _0x4b676f={'raw':!![],'where':{'id':_0xf932f7[_0xe71b('0x47')]['id']}},_0x523805={};_0x523805[_0xe71b('0x30')]=_[_0xe71b('0x32')](db['Attachment'][_0xe71b('0x2e')]);_0x523805[_0xe71b('0x31')]=_[_0xe71b('0x32')](_0xf932f7[_0xe71b('0x31')]);_0x523805[_0xe71b('0x33')]=_[_0xe71b('0x34')](_0x523805['model'],_0x523805['query']);_0x4b676f[_0xe71b('0x36')]=_[_0xe71b('0x34')](_0x523805['model'],qs['fields'](_0xf932f7['query'][_0xe71b('0x35')]));_0x4b676f[_0xe71b('0x36')]=_0x4b676f[_0xe71b('0x36')]['length']?_0x4b676f['attributes']:_0x523805[_0xe71b('0x30')];if(_0xf932f7['query'][_0xe71b('0x42')]){_0x4b676f['include']=[{'all':!![]}];}_0x4b676f=_[_0xe71b('0x3f')]({},_0x4b676f,_0xf932f7[_0xe71b('0x41')]);return db[_0xe71b('0x2d')][_0xe71b('0x48')](_0x4b676f)[_0xe71b('0x25')](handleEntityNotFound(_0x2c9217,null))[_0xe71b('0x25')](respondWithResult(_0x2c9217,null))[_0xe71b('0x49')](handleError(_0x2c9217,null));};exports[_0xe71b('0x4a')]=function(_0x42e6d0,_0x34a40a){var _0x430fcf={'where':{'id':_0x42e6d0[_0xe71b('0x47')]['id']}},_0x541131={};_0x541131['model']=_[_0xe71b('0x32')](db[_0xe71b('0x2d')][_0xe71b('0x2e')]);_0x430fcf[_0xe71b('0x36')]=_['intersection'](_0x541131[_0xe71b('0x30')],qs[_0xe71b('0x35')](_0x42e6d0['query'][_0xe71b('0x35')]));_0x430fcf[_0xe71b('0x36')]=_0x430fcf[_0xe71b('0x36')]['length']?_0x430fcf[_0xe71b('0x36')]:_0x541131[_0xe71b('0x30')];if(_0x42e6d0[_0xe71b('0x31')]['includeAll']){_0x430fcf[_0xe71b('0x43')]=[{'all':!![]}];}_0x430fcf=_[_0xe71b('0x3f')]({},_0x430fcf,_0x42e6d0['options']);return db[_0xe71b('0x2d')]['find'](_0x430fcf)[_0xe71b('0x25')](handleEntityNotFound(_0x34a40a,null))[_0xe71b('0x25')](function(_0x8876b8){if(_0x8876b8){var _0x5bb387=_0x8876b8['get']({'plain':!![]});_0x5bb387=qs[_0xe71b('0x4b')](_0x5bb387,['id',_0xe71b('0x4c'),_0xe71b('0x4d')]);_0x42e6d0[_0xe71b('0x4e')]=_['omit'](_0x42e6d0[_0xe71b('0x4e')],['id','createdAt','updatedAt']);return db[_0xe71b('0x2d')][_0xe71b('0x4f')](_[_0xe71b('0x3f')](_0x5bb387,_0x42e6d0[_0xe71b('0x4e')]),{'include':_0x42e6d0[_0xe71b('0x31')][_0xe71b('0x42')]?[{'all':!![]}]:undefined});}})[_0xe71b('0x25')](respondWithResult(_0x34a40a,0xc9))[_0xe71b('0x49')](handleError(_0x34a40a,null));};exports[_0xe71b('0x50')]=function(_0x2b890b,_0x19cc7d){if(_0x2b890b['body']['id']){delete _0x2b890b['body']['id'];}return db['Attachment'][_0xe71b('0x48')]({'where':{'id':_0x2b890b[_0xe71b('0x47')]['id']}})[_0xe71b('0x25')](handleEntityNotFound(_0x19cc7d,null))[_0xe71b('0x25')](saveUpdates(_0x2b890b[_0xe71b('0x4e')],null))['then'](respondWithResult(_0x19cc7d,null))[_0xe71b('0x49')](handleError(_0x19cc7d,null));};exports['destroy']=function(_0x7176b8,_0x41a2d7){return db[_0xe71b('0x2d')][_0xe71b('0x48')]({'where':{'id':_0x7176b8[_0xe71b('0x47')]['id']}})[_0xe71b('0x25')](handleEntityNotFound(_0x41a2d7,null))['then'](removeEntity(_0x41a2d7,null))[_0xe71b('0x49')](handleError(_0x41a2d7,null));};exports[_0xe71b('0x4f')]=function(_0x31c448,_0x2545b1,_0x20ecc7){_0x31c448['body'][_0xe71b('0x29')]=_0x31c448[_0xe71b('0x51')][_0xe71b('0x52')];_0x31c448[_0xe71b('0x4e')]['basename']=_0x31c448[_0xe71b('0x51')][_0xe71b('0x53')];_0x31c448['body'][_0xe71b('0x54')]=_0x31c448[_0xe71b('0x51')][_0xe71b('0x55')];return db[_0xe71b('0x2d')]['create'](_0x31c448[_0xe71b('0x4e')])['then'](respondWithResult(_0x2545b1,0xc9))[_0xe71b('0x49')](handleError(_0x2545b1,null));};exports[_0xe71b('0x56')]=function(_0x22826c,_0x12e89a,_0x3b8609){return db[_0xe71b('0x2d')][_0xe71b('0x57')]({'where':{'id':_0x22826c['params']['id']},'raw':!![]})[_0xe71b('0x25')](handleEntityNotFound(_0x12e89a,null))[_0xe71b('0x25')](function(_0x12bd95){if(_0x12bd95){var _0x35e5fd=_0x12bd95[_0xe71b('0x58')]!==null;var _0x3f830e=path['join'](config['root'],_0xe71b('0x59'));if(_0x35e5fd){_0x3f830e=path['join'](_0x3f830e,_0xe71b('0x5a'));}var _0x7aacee=path[_0xe71b('0x5b')](_0x3f830e,_0x12bd95[_0xe71b('0x5c')]);return _0x12e89a['download'](_0x7aacee);}})['catch'](handleError(_0x12e89a,null));};
\ No newline at end of file
+var _0x5c4a=['download','findOne','ChatOfflineMessageId','join','root','offline-chat/','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','Attachment','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','includeAll','include','findAll','rows','catch','show','params','find','clone','get','omit','updatedAt','body','createdAt','create','destroy','file','basename','filename','mimetype'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x5c4a,0x1cd));var _0xa5c4=function(_0xb00436,_0x4344b6){_0xb00436=_0xb00436-0x0;var _0x2facd9=_0x5c4a[_0xb00436];return _0x2facd9;};'use strict';var emlformat=require(_0xa5c4('0x0'));var rimraf=require(_0xa5c4('0x1'));var zipdir=require(_0xa5c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa5c4('0x3'));var moment=require(_0xa5c4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa5c4('0x5'));var util=require(_0xa5c4('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xa5c4('0x7'));var ejs=require(_0xa5c4('0x8'));var fs=require('fs');var fs_extra=require(_0xa5c4('0x9'));var _=require(_0xa5c4('0xa'));var squel=require('squel');var crypto=require(_0xa5c4('0xb'));var jsforce=require(_0xa5c4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa5c4('0x7'));var querystring=require(_0xa5c4('0xd'));var Papa=require('papaparse');var Redis=require(_0xa5c4('0xe'));var authService=require(_0xa5c4('0xf'));var qs=require(_0xa5c4('0x10'));var as=require(_0xa5c4('0x11'));var hardwareService=require(_0xa5c4('0x12'));var logger=require(_0xa5c4('0x13'))(_0xa5c4('0x14'));var utils=require(_0xa5c4('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa5c4('0x16'))['db'];function respondWithStatusCode(_0x5d29ae,_0x55283a){_0x55283a=_0x55283a||0xcc;return function(_0x45a1a4){if(_0x45a1a4){return _0x5d29ae[_0xa5c4('0x17')](_0x55283a);}return _0x5d29ae[_0xa5c4('0x18')](_0x55283a)[_0xa5c4('0x19')]();};}function respondWithResult(_0x54c1e9,_0x4683fc){_0x4683fc=_0x4683fc||0xc8;return function(_0xc6082a){if(_0xc6082a){return _0x54c1e9['status'](_0x4683fc)['json'](_0xc6082a);}};}function respondWithFilteredResult(_0x3379ff,_0x2b131a){return function(_0x28bb7a){if(_0x28bb7a){var _0xbffb6=typeof _0x2b131a[_0xa5c4('0x1a')]==='undefined'&&typeof _0x2b131a[_0xa5c4('0x1b')]===_0xa5c4('0x1c');var _0x3178ac=_0x28bb7a[_0xa5c4('0x1d')];var _0x5d7de4=_0xbffb6?0x0:_0x2b131a[_0xa5c4('0x1a')];var _0x215fe2=_0xbffb6?_0x28bb7a[_0xa5c4('0x1d')]:_0x2b131a['offset']+_0x2b131a[_0xa5c4('0x1b')];var _0x14b1b5;if(_0x215fe2>=_0x3178ac){_0x215fe2=_0x3178ac;_0x14b1b5=0xc8;}else{_0x14b1b5=0xce;}_0x3379ff[_0xa5c4('0x18')](_0x14b1b5);return _0x3379ff[_0xa5c4('0x1e')](_0xa5c4('0x1f'),_0x5d7de4+'-'+_0x215fe2+'/'+_0x3178ac)[_0xa5c4('0x20')](_0x28bb7a);}return null;};}function patchUpdates(_0x7cda8b){return function(_0x228230){try{jsonpatch[_0xa5c4('0x21')](_0x228230,_0x7cda8b,!![]);}catch(_0x31c24e){return BPromise[_0xa5c4('0x22')](_0x31c24e);}return _0x228230[_0xa5c4('0x23')]();};}function saveUpdates(_0x207d93,_0x28b475){return function(_0x35f155){if(_0x35f155){return _0x35f155[_0xa5c4('0x24')](_0x207d93)['then'](function(_0xa406f6){return _0xa406f6;});}return null;};}function removeEntity(_0x50a6e7,_0x1fd248){return function(_0x1ef0eb){if(_0x1ef0eb){return _0x1ef0eb['destroy']()[_0xa5c4('0x25')](function(){_0x50a6e7['status'](0xcc)[_0xa5c4('0x19')]();});}};}function handleEntityNotFound(_0x28eff1,_0xdc8679){return function(_0x21edb3){if(!_0x21edb3){_0x28eff1[_0xa5c4('0x17')](0x194);}return _0x21edb3;};}function handleError(_0x22a841,_0x2e355c){_0x2e355c=_0x2e355c||0x1f4;return function(_0x12e4d0){logger[_0xa5c4('0x26')](_0x12e4d0[_0xa5c4('0x27')]);if(_0x12e4d0[_0xa5c4('0x28')]){delete _0x12e4d0[_0xa5c4('0x28')];}_0x22a841[_0xa5c4('0x18')](_0x2e355c)[_0xa5c4('0x29')](_0x12e4d0);};}exports[_0xa5c4('0x2a')]=function(_0xa2abc4,_0xebd73a){var _0x2116f7={},_0x2c48e2={},_0x48dde3={'count':0x0,'rows':[]};var _0x384eaf=_['map'](db[_0xa5c4('0x2b')][_0xa5c4('0x2c')],function(_0x3313fe){return{'name':_0x3313fe[_0xa5c4('0x2d')],'type':_0x3313fe['type'][_0xa5c4('0x2e')]};});_0x2c48e2['model']=_[_0xa5c4('0x2f')](_0x384eaf,_0xa5c4('0x28'));_0x2c48e2[_0xa5c4('0x30')]=_[_0xa5c4('0x31')](_0xa2abc4[_0xa5c4('0x30')]);_0x2c48e2[_0xa5c4('0x32')]=_[_0xa5c4('0x33')](_0x2c48e2[_0xa5c4('0x34')],_0x2c48e2[_0xa5c4('0x30')]);_0x2116f7['attributes']=_[_0xa5c4('0x33')](_0x2c48e2[_0xa5c4('0x34')],qs['fields'](_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x35')]));_0x2116f7[_0xa5c4('0x36')]=_0x2116f7[_0xa5c4('0x36')][_0xa5c4('0x37')]?_0x2116f7[_0xa5c4('0x36')]:_0x2c48e2['model'];if(!_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x38')](_0xa5c4('0x39'))){_0x2116f7['limit']=qs[_0xa5c4('0x1b')](_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x1b')]);_0x2116f7[_0xa5c4('0x1a')]=qs['offset'](_0xa2abc4['query'][_0xa5c4('0x1a')]);}_0x2116f7[_0xa5c4('0x3a')]=qs['sort'](_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x3b')]);_0x2116f7[_0xa5c4('0x3c')]=qs[_0xa5c4('0x32')](_['pick'](_0xa2abc4[_0xa5c4('0x30')],_0x2c48e2[_0xa5c4('0x32')]),_0x384eaf);if(_0xa2abc4[_0xa5c4('0x30')]['filter']){_0x2116f7[_0xa5c4('0x3c')]=_[_0xa5c4('0x3d')](_0x2116f7['where'],{'$or':_[_0xa5c4('0x2f')](_0x384eaf,function(_0x50532a){if(_0x50532a[_0xa5c4('0x3e')]!=='VIRTUAL'){var _0x545f21={};_0x545f21[_0x50532a[_0xa5c4('0x28')]]={'$like':'%'+_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x3f')]+'%'};return _0x545f21;}})});}_0x2116f7=_[_0xa5c4('0x3d')]({},_0x2116f7,_0xa2abc4[_0xa5c4('0x40')]);var _0x342251={'where':_0x2116f7[_0xa5c4('0x3c')]};return db[_0xa5c4('0x2b')][_0xa5c4('0x1d')](_0x342251)[_0xa5c4('0x25')](function(_0x21bdf7){_0x48dde3[_0xa5c4('0x1d')]=_0x21bdf7;if(_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x41')]){_0x2116f7[_0xa5c4('0x42')]=[{'all':!![]}];}return db[_0xa5c4('0x2b')][_0xa5c4('0x43')](_0x2116f7);})[_0xa5c4('0x25')](function(_0x18990a){_0x48dde3[_0xa5c4('0x44')]=_0x18990a;return _0x48dde3;})[_0xa5c4('0x25')](respondWithFilteredResult(_0xebd73a,_0x2116f7))[_0xa5c4('0x45')](handleError(_0xebd73a,null));};exports[_0xa5c4('0x46')]=function(_0x182e5a,_0x51fcb4){var _0x3de368={'raw':!![],'where':{'id':_0x182e5a[_0xa5c4('0x47')]['id']}},_0x49cc49={};_0x49cc49['model']=_[_0xa5c4('0x31')](db['Attachment'][_0xa5c4('0x2c')]);_0x49cc49['query']=_[_0xa5c4('0x31')](_0x182e5a['query']);_0x49cc49[_0xa5c4('0x32')]=_['intersection'](_0x49cc49[_0xa5c4('0x34')],_0x49cc49['query']);_0x3de368[_0xa5c4('0x36')]=_[_0xa5c4('0x33')](_0x49cc49['model'],qs[_0xa5c4('0x35')](_0x182e5a['query'][_0xa5c4('0x35')]));_0x3de368[_0xa5c4('0x36')]=_0x3de368[_0xa5c4('0x36')]['length']?_0x3de368[_0xa5c4('0x36')]:_0x49cc49[_0xa5c4('0x34')];if(_0x182e5a[_0xa5c4('0x30')][_0xa5c4('0x41')]){_0x3de368[_0xa5c4('0x42')]=[{'all':!![]}];}_0x3de368=_[_0xa5c4('0x3d')]({},_0x3de368,_0x182e5a[_0xa5c4('0x40')]);return db[_0xa5c4('0x2b')][_0xa5c4('0x48')](_0x3de368)[_0xa5c4('0x25')](handleEntityNotFound(_0x51fcb4,null))[_0xa5c4('0x25')](respondWithResult(_0x51fcb4,null))[_0xa5c4('0x45')](handleError(_0x51fcb4,null));};exports[_0xa5c4('0x49')]=function(_0x2d5a03,_0x2c4c5d){var _0xe23ed1={'where':{'id':_0x2d5a03[_0xa5c4('0x47')]['id']}},_0x3ef34e={};_0x3ef34e['model']=_[_0xa5c4('0x31')](db[_0xa5c4('0x2b')]['rawAttributes']);_0xe23ed1[_0xa5c4('0x36')]=_[_0xa5c4('0x33')](_0x3ef34e[_0xa5c4('0x34')],qs[_0xa5c4('0x35')](_0x2d5a03[_0xa5c4('0x30')][_0xa5c4('0x35')]));_0xe23ed1[_0xa5c4('0x36')]=_0xe23ed1['attributes']['length']?_0xe23ed1[_0xa5c4('0x36')]:_0x3ef34e[_0xa5c4('0x34')];if(_0x2d5a03[_0xa5c4('0x30')][_0xa5c4('0x41')]){_0xe23ed1[_0xa5c4('0x42')]=[{'all':!![]}];}_0xe23ed1=_['merge']({},_0xe23ed1,_0x2d5a03[_0xa5c4('0x40')]);return db[_0xa5c4('0x2b')][_0xa5c4('0x48')](_0xe23ed1)[_0xa5c4('0x25')](handleEntityNotFound(_0x2c4c5d,null))[_0xa5c4('0x25')](function(_0x323ec6){if(_0x323ec6){var _0x4fbd17=_0x323ec6[_0xa5c4('0x4a')]({'plain':!![]});_0x4fbd17=qs[_0xa5c4('0x4b')](_0x4fbd17,['id','createdAt',_0xa5c4('0x4c')]);_0x2d5a03[_0xa5c4('0x4d')]=_[_0xa5c4('0x4b')](_0x2d5a03[_0xa5c4('0x4d')],['id',_0xa5c4('0x4e'),_0xa5c4('0x4c')]);return db[_0xa5c4('0x2b')][_0xa5c4('0x4f')](_[_0xa5c4('0x3d')](_0x4fbd17,_0x2d5a03[_0xa5c4('0x4d')]),{'include':_0x2d5a03[_0xa5c4('0x30')]['includeAll']?[{'all':!![]}]:undefined});}})[_0xa5c4('0x25')](respondWithResult(_0x2c4c5d,0xc9))['catch'](handleError(_0x2c4c5d,null));};exports[_0xa5c4('0x24')]=function(_0x56251f,_0x2b6385){if(_0x56251f[_0xa5c4('0x4d')]['id']){delete _0x56251f[_0xa5c4('0x4d')]['id'];}return db['Attachment'][_0xa5c4('0x48')]({'where':{'id':_0x56251f[_0xa5c4('0x47')]['id']}})[_0xa5c4('0x25')](handleEntityNotFound(_0x2b6385,null))[_0xa5c4('0x25')](saveUpdates(_0x56251f[_0xa5c4('0x4d')],null))['then'](respondWithResult(_0x2b6385,null))[_0xa5c4('0x45')](handleError(_0x2b6385,null));};exports[_0xa5c4('0x50')]=function(_0x1110c7,_0x1e9bff){return db['Attachment']['find']({'where':{'id':_0x1110c7['params']['id']}})[_0xa5c4('0x25')](handleEntityNotFound(_0x1e9bff,null))['then'](removeEntity(_0x1e9bff,null))[_0xa5c4('0x45')](handleError(_0x1e9bff,null));};exports[_0xa5c4('0x4f')]=function(_0x96ad28,_0xa139ed,_0x2b372b){_0x96ad28[_0xa5c4('0x4d')][_0xa5c4('0x28')]=_0x96ad28[_0xa5c4('0x51')]['originalname'];_0x96ad28[_0xa5c4('0x4d')][_0xa5c4('0x52')]=_0x96ad28[_0xa5c4('0x51')][_0xa5c4('0x53')];_0x96ad28[_0xa5c4('0x4d')][_0xa5c4('0x3e')]=_0x96ad28[_0xa5c4('0x51')][_0xa5c4('0x54')];return db[_0xa5c4('0x2b')][_0xa5c4('0x4f')](_0x96ad28['body'])[_0xa5c4('0x25')](respondWithResult(_0xa139ed,0xc9))[_0xa5c4('0x45')](handleError(_0xa139ed,null));};exports[_0xa5c4('0x55')]=function(_0x354002,_0x46c724,_0xe1fb41){return db[_0xa5c4('0x2b')][_0xa5c4('0x56')]({'where':{'id':_0x354002['params']['id']},'raw':!![]})[_0xa5c4('0x25')](handleEntityNotFound(_0x46c724,null))[_0xa5c4('0x25')](function(_0xabe9c7){if(_0xabe9c7){var _0x21bb9d=_0xabe9c7[_0xa5c4('0x57')]!==null;var _0x513fb1=path[_0xa5c4('0x58')](config[_0xa5c4('0x59')],'server/files/attachments/');if(_0x21bb9d){_0x513fb1=path[_0xa5c4('0x58')](_0x513fb1,_0xa5c4('0x5a'));}var _0x38328a=path[_0xa5c4('0x58')](_0x513fb1,_0xabe9c7[_0xa5c4('0x52')]);return _0x46c724['download'](_0x38328a);}})[_0xa5c4('0x45')](handleError(_0x46c724,null));};
\ No newline at end of file
index 81d27fe..52cb280 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61bc=['bluebird','rimraf','../../config/environment','./attachment.attributes','define','attachments','util','../../config/logger','api','moment'];(function(_0x439a54,_0x50e19a){var _0x194a38=function(_0x584c87){while(--_0x584c87){_0x439a54['push'](_0x439a54['shift']());}};_0x194a38(++_0x50e19a);}(_0x61bc,0x1d2));var _0xc61b=function(_0x375766,_0x446b5f){_0x375766=_0x375766-0x0;var _0x21e179=_0x61bc[_0x375766];return _0x21e179;};'use strict';var _=require('lodash');var util=require(_0xc61b('0x0'));var logger=require(_0xc61b('0x1'))(_0xc61b('0x2'));var moment=require(_0xc61b('0x3'));var BPromise=require(_0xc61b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc61b('0x5'));var config=require(_0xc61b('0x6'));var attributes=require(_0xc61b('0x7'));module['exports']=function(_0xc99cf1,_0x48a133){return _0xc99cf1[_0xc61b('0x8')]('Attachment',attributes,{'tableName':_0xc61b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb8b=['rimraf','../../config/environment','./attachment.attributes','define','attachments','lodash','util','../../config/logger','api','moment','path'];(function(_0x23c31a,_0xdc4107){var _0x4d5585=function(_0x1b5d46){while(--_0x1b5d46){_0x23c31a['push'](_0x23c31a['shift']());}};_0x4d5585(++_0xdc4107);}(_0xbb8b,0x94));var _0xbbb8=function(_0x58f4d5,_0x544abf){_0x58f4d5=_0x58f4d5-0x0;var _0x1fa72b=_0xbb8b[_0x58f4d5];return _0x1fa72b;};'use strict';var _=require(_0xbbb8('0x0'));var util=require(_0xbbb8('0x1'));var logger=require(_0xbbb8('0x2'))(_0xbbb8('0x3'));var moment=require(_0xbbb8('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbbb8('0x5'));var rimraf=require(_0xbbb8('0x6'));var config=require(_0xbbb8('0x7'));var attributes=require(_0xbbb8('0x8'));module['exports']=function(_0x374c3f,_0x21101d){return _0x374c3f[_0xbbb8('0x9')]('Attachment',attributes,{'tableName':_0xbbb8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 27cbad7..b1af33f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8388=['rpc','jayson/promise','client','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','error','code','message','Attachment,\x20%s,\x20%s','info','result','catch','CreateAttachment','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4e93a9,_0x413f30){var _0x43013c=function(_0x3a0cf3){while(--_0x3a0cf3){_0x4e93a9['push'](_0x4e93a9['shift']());}};_0x43013c(++_0x413f30);}(_0x8388,0x18d));var _0x8838=function(_0x1bc762,_0x523eb3){_0x1bc762=_0x1bc762-0x0;var _0x40f70c=_0x8388[_0x1bc762];return _0x40f70c;};'use strict';var _=require(_0x8838('0x0'));var util=require(_0x8838('0x1'));var moment=require(_0x8838('0x2'));var BPromise=require(_0x8838('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8838('0x4'));var db=require(_0x8838('0x5'))['db'];var utils=require(_0x8838('0x6'));var logger=require(_0x8838('0x7'))(_0x8838('0x8'));var config=require('../../config/environment');var jayson=require(_0x8838('0x9'));var client=jayson[_0x8838('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xca2d0f,_0x2d9615,_0x27707c){return new BPromise(function(_0x56596f,_0x4645f4){return client['request'](_0xca2d0f,_0x27707c)['then'](function(_0x8555b2){logger['info']('Attachment,\x20%s,\x20%s',_0x2d9615,_0x8838('0xb'));logger[_0x8838('0xc')](_0x8838('0xd'),_0x2d9615,_0x8838('0xb'),JSON['stringify'](_0x8555b2));if(_0x8555b2[_0x8838('0xe')]){if(_0x8555b2[_0x8838('0xe')][_0x8838('0xf')]===0x1f4){logger[_0x8838('0xe')]('Attachment,\x20%s,\x20%s',_0x2d9615,_0x8555b2[_0x8838('0xe')]['message']);return _0x4645f4(_0x8555b2['error'][_0x8838('0x10')]);}logger[_0x8838('0xe')](_0x8838('0x11'),_0x2d9615,_0x8555b2[_0x8838('0xe')][_0x8838('0x10')]);return _0x56596f(_0x8555b2[_0x8838('0xe')][_0x8838('0x10')]);}else{logger[_0x8838('0x12')]('Attachment,\x20%s,\x20%s',_0x2d9615,_0x8838('0xb'));_0x56596f(_0x8555b2[_0x8838('0x13')]['message']);}})[_0x8838('0x14')](function(_0xab3fb8){logger[_0x8838('0xe')]('Attachment,\x20%s,\x20%s',_0x2d9615,_0xab3fb8);_0x4645f4(_0xab3fb8);});});}exports[_0x8838('0x15')]=function(_0x522d44){var _0xc4129=this;return new Promise(function(_0x204120,_0xe9e4f4){return db['Attachment'][_0x8838('0x16')](_0x522d44[_0x8838('0x17')],{'raw':_0x522d44['options']?_0x522d44[_0x8838('0x18')][_0x8838('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x9de0f6){logger[_0x8838('0x12')]('CreateAttachment',_0x522d44);logger['debug'](_0x8838('0x15'),_0x522d44,JSON[_0x8838('0x1a')](_0x9de0f6));_0x204120(_0x9de0f6);})[_0x8838('0x14')](function(_0xb74e1b){logger[_0x8838('0xe')](_0x8838('0x15'),_0xb74e1b[_0x8838('0x10')],_0x522d44);_0xe9e4f4(_0xc4129[_0x8838('0xe')](0x1f4,_0xb74e1b[_0x8838('0x10')]));});});};
\ No newline at end of file
+var _0xd64b=['http','request','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateAttachment','Attachment','body','options','then','debug','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x123b5f,_0x573521){var _0x55d569=function(_0x34d1c5){while(--_0x34d1c5){_0x123b5f['push'](_0x123b5f['shift']());}};_0x55d569(++_0x573521);}(_0xd64b,0xc1));var _0xbd64=function(_0x46aad3,_0x5c363f){_0x46aad3=_0x46aad3-0x0;var _0x20e425=_0xd64b[_0x46aad3];return _0x20e425;};'use strict';var _=require(_0xbd64('0x0'));var util=require('util');var moment=require(_0xbd64('0x1'));var BPromise=require('bluebird');var rs=require(_0xbd64('0x2'));var fs=require('fs');var Redis=require(_0xbd64('0x3'));var db=require(_0xbd64('0x4'))['db'];var utils=require(_0xbd64('0x5'));var logger=require(_0xbd64('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xbd64('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x32995f,_0x3e700e,_0x38204e){return new BPromise(function(_0x3f1f17,_0x2b8543){return client[_0xbd64('0x8')](_0x32995f,_0x38204e)['then'](function(_0x5ae70c){logger[_0xbd64('0x9')](_0xbd64('0xa'),_0x3e700e,_0xbd64('0xb'));logger['debug'](_0xbd64('0xc'),_0x3e700e,_0xbd64('0xb'),JSON[_0xbd64('0xd')](_0x5ae70c));if(_0x5ae70c[_0xbd64('0xe')]){if(_0x5ae70c['error'][_0xbd64('0xf')]===0x1f4){logger['error'](_0xbd64('0xa'),_0x3e700e,_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);return _0x2b8543(_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);}logger[_0xbd64('0xe')](_0xbd64('0xa'),_0x3e700e,_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);return _0x3f1f17(_0x5ae70c['error'][_0xbd64('0x10')]);}else{logger[_0xbd64('0x9')](_0xbd64('0xa'),_0x3e700e,_0xbd64('0xb'));_0x3f1f17(_0x5ae70c[_0xbd64('0x11')]['message']);}})[_0xbd64('0x12')](function(_0x5332e0){logger[_0xbd64('0xe')](_0xbd64('0xa'),_0x3e700e,_0x5332e0);_0x2b8543(_0x5332e0);});});}exports[_0xbd64('0x13')]=function(_0x1d7a14){var _0x17d015=this;return new Promise(function(_0x2f4554,_0xa5491d){return db[_0xbd64('0x14')]['create'](_0x1d7a14[_0xbd64('0x15')],{'raw':_0x1d7a14[_0xbd64('0x16')]?_0x1d7a14['options']['raw']===undefined?!![]:![]:!![]})[_0xbd64('0x17')](function(_0x42b328){logger[_0xbd64('0x9')](_0xbd64('0x13'),_0x1d7a14);logger[_0xbd64('0x18')](_0xbd64('0x13'),_0x1d7a14,JSON['stringify'](_0x42b328));_0x2f4554(_0x42b328);})['catch'](function(_0x6038f){logger[_0xbd64('0xe')](_0xbd64('0x13'),_0x6038f[_0xbd64('0x10')],_0x1d7a14);_0xa5491d(_0x17d015['error'](0x1f4,_0x6038f['message']));});});};
\ No newline at end of file
index 6accaf9..eec75bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x26d319,_0x15e6f1){var _0xbd58df=function(_0xda75c6){while(--_0xda75c6){_0x26d319['push'](_0x26d319['shift']());}};_0xbd58df(++_0x15e6f1);}(_0x2032,0xd9));var _0x2203=function(_0x25ac96,_0x3ff063){_0x25ac96=_0x25ac96-0x0;var _0x1a3761=_0x2032[_0x25ac96];return _0x1a3761;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
+var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x209fcd,_0x1ecccc){var _0x501d5e=function(_0x8d74fe){while(--_0x8d74fe){_0x209fcd['push'](_0x209fcd['shift']());}};_0x501d5e(++_0x1ecccc);}(_0x5f66,0x1a0));var _0x65f6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5f66[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
index ec298e6..e9076c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff0=['signToken','../../config/utils','login','authenticate','google','/login','profile','email','callback','clientID','Setting','blockDuration','then','User','find','map','emails','value','admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','clearBlockUser','getLicense','passport-google-oauth20','../../config/environment','../../components/auth/service'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7ff0,0x190));var _0x07ff=function(_0x1e06f1,_0x59d7e1){_0x1e06f1=_0x1e06f1-0x0;var _0x34f77e=_0x7ff0[_0x1e06f1];return _0x34f77e;};'use strict';var _=require('lodash');var passport=require('passport');var GoogleStrategy=require(_0x07ff('0x0'))['Strategy'];var moment=require('moment');var db=require('../../mysqldb')['db'];var config=require(_0x07ff('0x1'));var signToken=require(_0x07ff('0x2'))[_0x07ff('0x3')];var utils=require(_0x07ff('0x4'));exports[_0x07ff('0x5')]=passport[_0x07ff('0x6')](_0x07ff('0x7'),{'failureRedirect':_0x07ff('0x8'),'scope':[_0x07ff('0x9'),_0x07ff('0xa')],'session':![]});exports[_0x07ff('0xb')]=passport[_0x07ff('0x6')](_0x07ff('0x7'),{'failureRedirect':_0x07ff('0x8'),'session':![]});passport['use'](new GoogleStrategy({'clientID':config['google']?config[_0x07ff('0x7')][_0x07ff('0xc')]:'id','clientSecret':config['google']?config[_0x07ff('0x7')]['clientSecret']:'secret','callbackURL':config[_0x07ff('0x7')]?config['google']['callbackURL']:''},function(_0x41f650,_0x47f785,_0x12a2db,_0x372d39){var _0x307161,_0xb1028b;return db[_0x07ff('0xd')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x07ff('0xe')],'raw':!![]})[_0x07ff('0xf')](function(_0x598a26){_0x307161=_0x598a26;return db[_0x07ff('0x10')][_0x07ff('0x11')]({'where':{'email':_[_0x07ff('0x12')](_0x12a2db[_0x07ff('0x13')],_0x07ff('0x14')),'role':{'$or':[_0x07ff('0x15'),_0x07ff('0x16'),_0x07ff('0x17')]}}});})[_0x07ff('0xf')](function(_0x24d937){_0xb1028b=_0x24d937;if(_0xb1028b){if(_0xb1028b[_0x07ff('0x18')]){return _0x372d39(_0x07ff('0x19'));}else if(_0x307161[_0x07ff('0xe')]>0x0){if(_0xb1028b[_0x07ff('0x1a')]){if(moment(_0xb1028b[_0x07ff('0x1b')])[_0x07ff('0x1c')](_0x307161['blockDuration'],'minutes')>moment()){return _0x372d39(_0x07ff('0x19'));}else{return utils[_0x07ff('0x1d')](_0xb1028b,0x0,![],null)[_0x07ff('0xf')](function(){return utils[_0x07ff('0x1e')](_0xb1028b);})[_0x07ff('0xf')](function(){return _0x372d39(null,_0xb1028b);});}}else{return utils[_0x07ff('0x1e')](_0xb1028b)[_0x07ff('0xf')](function(){return _0x372d39(null,_0xb1028b);});}}else{return utils[_0x07ff('0x1e')](_0xb1028b)[_0x07ff('0xf')](function(){return _0x372d39(null,_0xb1028b);});}}return _0x372d39(_0x07ff('0x19'));})['catch'](function(_0xcf0144){_0x372d39(_0xcf0144);});}));
\ No newline at end of file
+var _0x0cbe=['clearBlockUser','getLicense','lodash','Strategy','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','email','callback','google','/login','use','clientID','clientSecret','callbackURL','findOne','blockDuration','User','find','emails','value','admin','user','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','minutes'];(function(_0x44e5c7,_0x3102eb){var _0x3bf7ac=function(_0x113a0f){while(--_0x113a0f){_0x44e5c7['push'](_0x44e5c7['shift']());}};_0x3bf7ac(++_0x3102eb);}(_0x0cbe,0x1b4));var _0xe0cb=function(_0x1230b9,_0x2e3b21){_0x1230b9=_0x1230b9-0x0;var _0x34d5d0=_0x0cbe[_0x1230b9];return _0x34d5d0;};'use strict';var _=require(_0xe0cb('0x0'));var passport=require('passport');var GoogleStrategy=require('passport-google-oauth20')[_0xe0cb('0x1')];var moment=require('moment');var db=require(_0xe0cb('0x2'))['db'];var config=require(_0xe0cb('0x3'));var signToken=require(_0xe0cb('0x4'))[_0xe0cb('0x5')];var utils=require(_0xe0cb('0x6'));exports[_0xe0cb('0x7')]=passport['authenticate']('google',{'failureRedirect':'/login','scope':['profile',_0xe0cb('0x8')],'session':![]});exports[_0xe0cb('0x9')]=passport['authenticate'](_0xe0cb('0xa'),{'failureRedirect':_0xe0cb('0xb'),'session':![]});passport[_0xe0cb('0xc')](new GoogleStrategy({'clientID':config['google']?config[_0xe0cb('0xa')][_0xe0cb('0xd')]:'id','clientSecret':config['google']?config['google'][_0xe0cb('0xe')]:'secret','callbackURL':config['google']?config[_0xe0cb('0xa')][_0xe0cb('0xf')]:''},function(_0xeacbc4,_0x355c98,_0x2a3130,_0x14eb18){var _0x60ddba,_0x5e69ec;return db['Setting'][_0xe0cb('0x10')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xe0cb('0x11')],'raw':!![]})['then'](function(_0x3165cf){_0x60ddba=_0x3165cf;return db[_0xe0cb('0x12')][_0xe0cb('0x13')]({'where':{'email':_['map'](_0x2a3130[_0xe0cb('0x14')],_0xe0cb('0x15')),'role':{'$or':[_0xe0cb('0x16'),_0xe0cb('0x17'),'agent']}}});})[_0xe0cb('0x18')](function(_0x58bc44){_0x5e69ec=_0x58bc44;if(_0x5e69ec){if(_0x5e69ec['disabled']){return _0x14eb18(_0xe0cb('0x19'));}else if(_0x60ddba[_0xe0cb('0x11')]>0x0){if(_0x5e69ec[_0xe0cb('0x1a')]){if(moment(_0x5e69ec[_0xe0cb('0x1b')])['add'](_0x60ddba[_0xe0cb('0x11')],_0xe0cb('0x1c'))>moment()){return _0x14eb18('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xe0cb('0x1d')](_0x5e69ec,0x0,![],null)['then'](function(){return utils[_0xe0cb('0x1e')](_0x5e69ec);})['then'](function(){return _0x14eb18(null,_0x5e69ec);});}}else{return utils[_0xe0cb('0x1e')](_0x5e69ec)[_0xe0cb('0x18')](function(){return _0x14eb18(null,_0x5e69ec);});}}else{return utils['getLicense'](_0x5e69ec)[_0xe0cb('0x18')](function(){return _0x14eb18(null,_0x5e69ec);});}}return _0x14eb18(_0xe0cb('0x19'));})['catch'](function(_0x3d8a8d){_0x14eb18(_0x3d8a8d);});}));
\ No newline at end of file
index 9e2a4c2..c71290c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe168=['exports','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','isMiddleware','setTokenCookie'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xe168,0x79));var _0x8e16=function(_0x5e92ea,_0x2511c2){_0x5e92ea=_0x5e92ea-0x0;var _0x5d1e68=_0xe168[_0x5e92ea];return _0x5d1e68;};'use strict';var express=require('express');var passport=require(_0x8e16('0x0'));var router=express[_0x8e16('0x1')]();var controller=require(_0x8e16('0x2'));var userController=require(_0x8e16('0x3'));var authService=require(_0x8e16('0x4'));router[_0x8e16('0x5')]('/',controller[_0x8e16('0x6')]);router['get']('/callback',controller['callback'],authService[_0x8e16('0x7')],userController[_0x8e16('0x6')],authService[_0x8e16('0x8')]);module[_0x8e16('0x9')]=router;
\ No newline at end of file
+var _0x5458=['Router','./authGoogle.controller','login','get','/callback','callback','isMiddleware','setTokenCookie','exports','express','passport'];(function(_0xc57312,_0x2a29fc){var _0x149a92=function(_0x1eaa88){while(--_0x1eaa88){_0xc57312['push'](_0xc57312['shift']());}};_0x149a92(++_0x2a29fc);}(_0x5458,0x1d7));var _0x8545=function(_0x2cec32,_0x3d8434){_0x2cec32=_0x2cec32-0x0;var _0x2f50fd=_0x5458[_0x2cec32];return _0x2f50fd;};'use strict';var express=require(_0x8545('0x0'));var passport=require(_0x8545('0x1'));var router=express[_0x8545('0x2')]();var controller=require(_0x8545('0x3'));var userController=require('../user/user.controller.js');var authService=require('../../components/auth/service');router['get']('/',controller[_0x8545('0x4')]);router[_0x8545('0x5')](_0x8545('0x6'),controller[_0x8545('0x7')],authService[_0x8545('0x8')],userController[_0x8545('0x4')],authService[_0x8545('0x9')]);module[_0x8545('0xa')]=router;
\ No newline at end of file
index f618ce4..3337add 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','Reset\x20Email\x20sent!','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','findOne','securePassword','passwordHistoryLimit','enforcePasswordHistory','previousPasswords','validatePasswordHistory','password','Password\x20reset!','passport-local','Strategy','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','allowedLoginAttempts','blockDuration','name','salt','disabled','blocked','blockedAt','loginAttempts','admin','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser','add','minutes','getLicense','catch','MailAccount','find','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','auth','pass','format','\x22%s\x22\x20<%s>','user','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','status','message','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','json','body','trim','toLowerCase','User','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','now','save','https://'];(function(_0x317452,_0x1e1170){var _0x5a7ae3=function(_0x20cb38){while(--_0x20cb38){_0x317452['push'](_0x317452['shift']());}};_0x5a7ae3(++_0x1e1170);}(_0x3e74,0x1e4));var _0x43e7=function(_0x470622,_0x5a7fb2){_0x470622=_0x470622-0x0;var _0x4b26b2=_0x3e74[_0x470622];return _0x4b26b2;};'use strict';var util=require('util');var passport=require('passport');var LocalStrategy=require(_0x43e7('0x0'))[_0x43e7('0x1')];var jayson=require('jayson/promise');var _=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var moment=require(_0x43e7('0x4'));var db=require(_0x43e7('0x5'))['db'];var authService=require(_0x43e7('0x6'));var utils=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232b});function localAuthenticate(_0x43bf32,_0x50fe45,_0x5310d9,_0x4abe5e){var _0x2917a3,_0x5c04dc;return db[_0x43e7('0xa')]['findOne']({'where':{'id':0x1},'attributes':[_0x43e7('0xb'),_0x43e7('0xc')],'raw':!![]})['then'](function(_0x54e551){_0x2917a3=_0x54e551;return _0x43bf32['findOne']({'attributes':['id',_0x43e7('0xd'),'password',_0x43e7('0xe'),'role',_0x43e7('0xf'),_0x43e7('0x10'),_0x43e7('0x11'),_0x43e7('0x12')],'where':{'name':_0x50fe45,'role':{'$or':[_0x43e7('0x13'),'user',_0x43e7('0x14')]}}});})[_0x43e7('0x15')](function(_0x610417){if(!_0x610417||_0x610417&&_0x610417[_0x43e7('0xd')]!==_0x50fe45){throw new Error(_0x43e7('0x16'));}else{_0x5c04dc=_0x610417;return _0x5c04dc;}})[_0x43e7('0x15')](function(){_0x5c04dc['authenticate'](_0x5310d9,function(_0x12aeb5,_0x38bf01){var _0x1607b9=_0x5c04dc['loginAttempts']+0x1;if(_0x12aeb5){return _0x4abe5e(_0x12aeb5);}else if(!_0x38bf01){if(_0x5c04dc[_0x43e7('0xf')]){return _0x4abe5e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x2917a3['allowedLoginAttempts']>0x0){if(_0x5c04dc[_0x43e7('0x10')]){if(_0x2917a3['blockDuration']>0x0){if(moment(_0x5c04dc[_0x43e7('0x11')])['add'](_0x2917a3[_0x43e7('0xc')],'minutes')>moment()){return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});}else{return utils['clearBlockUser'](_0x5c04dc,_0x1607b9,![],null)['then'](function(){return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});});}}else{return _0x4abe5e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x1607b9>=_0x2917a3[_0x43e7('0xb')]){return utils[_0x43e7('0x17')](_0x5c04dc,0x0,!![],moment())[_0x43e7('0x15')](function(){return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});});}else{return utils[_0x43e7('0x17')](_0x5c04dc,_0x1607b9,![],null)[_0x43e7('0x15')](function(){return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});});}}}else{return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});}}else{if(_0x5c04dc['disabled']){return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});}else if(_0x2917a3[_0x43e7('0xb')]>0x0){if(_0x5c04dc[_0x43e7('0x10')]){if(_0x2917a3[_0x43e7('0xc')]>0x0){if(moment(_0x5c04dc['blockedAt'])[_0x43e7('0x18')](_0x2917a3['blockDuration'],_0x43e7('0x19'))>moment()){return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});}else{return utils[_0x43e7('0x17')](_0x5c04dc,0x0,![],null)[_0x43e7('0x15')](function(){return utils[_0x43e7('0x1a')](_0x5c04dc);})[_0x43e7('0x15')](function(){return _0x4abe5e(null,_0x5c04dc);});}}else{return _0x4abe5e(null,![],{'message':_0x43e7('0x16')});}}else{return utils[_0x43e7('0x17')](_0x5c04dc,0x0,![],null)['then'](function(){return utils['getLicense'](_0x5c04dc);})[_0x43e7('0x15')](function(){return _0x4abe5e(null,_0x5c04dc);})[_0x43e7('0x1b')](function(_0x5dc1fd){return _0x4abe5e(null,![],_0x5dc1fd);});}}else{if(_0x5c04dc[_0x43e7('0x10')]){return _0x4abe5e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x43e7('0x1a')](_0x5c04dc)['then'](function(){return _0x4abe5e(null,_0x5c04dc);});}}}});})['catch'](function(_0x4ce1ad){return _0x4abe5e(null,![],_0x4ce1ad);});}function sendServiceMail(_0x179fe5){return db[_0x43e7('0x1c')][_0x43e7('0x1d')]({'where':{'service':!![]},'attributes':['id',_0x43e7('0xd'),_0x43e7('0x1e')],'include':[{'model':db['MailServerOut'],'as':_0x43e7('0x1f')}]})[_0x43e7('0x15')](function(_0x15b653){if(!_0x15b653){throw new Error(_0x43e7('0x20'));}var _0x34f921={'tls':{'rejectUnauthorized':![]}};if(_0x15b653['Smtp'][_0x43e7('0x21')]){_0x34f921[_0x43e7('0x21')]=_0x15b653[_0x43e7('0x1f')][_0x43e7('0x21')];}else{_0x34f921[_0x43e7('0x22')]=_0x15b653[_0x43e7('0x1f')][_0x43e7('0x22')];_0x34f921[_0x43e7('0x23')]=_0x15b653[_0x43e7('0x1f')][_0x43e7('0x23')];_0x34f921['secure']=_0x15b653[_0x43e7('0x1f')][_0x43e7('0x24')];}if(_0x15b653['Smtp']['authentication']){_0x34f921[_0x43e7('0x25')]={'user':_0x15b653['Smtp']['user'],'pass':_0x15b653[_0x43e7('0x1f')][_0x43e7('0x26')]};}var _0x143c77={'account':_0x34f921,'message':_['merge']({'from':util[_0x43e7('0x27')](_0x43e7('0x28'),_0x15b653['name'],_0x15b653[_0x43e7('0x1e')]||_0x15b653[_0x43e7('0x1f')][_0x43e7('0x29')])},_0x179fe5)};return client[_0x43e7('0x2a')](_0x43e7('0x2b'),_0x143c77);})[_0x43e7('0x15')](function(_0x5cc7e3){if(_0x5cc7e3[_0x43e7('0x2c')]){throw new Error(util[_0x43e7('0x27')](_0x43e7('0x2d'),_0x5cc7e3['error']['message']||JSON['stringify'](_0x5cc7e3[_0x43e7('0x2c')])));}return!![];});}function handleError(_0x5aa91e,_0x144bb3,_0x270e6c){return _0x5aa91e[_0x43e7('0x2e')](_0x144bb3||0x1f4)['send']({'message':_0x270e6c?_0x270e6c[_0x43e7('0x2f')]||_0x270e6c:''});}exports[_0x43e7('0x30')]=function(_0x33268f,_0x311248,_0x5ecbd7){passport['authenticate'](_0x43e7('0x31'),function(_0x54f1f7,_0x85fca3,_0x39afad){var _0x54f9b7=_0x54f1f7||_0x39afad;if(_0x54f9b7){return handleError(_0x311248,0x191,_0x54f9b7);}if(!_0x85fca3){return handleError(_0x311248,0x194,{'message':_0x43e7('0x32')});}else{var _0x515dd2={'payload':{'id':_0x85fca3['id'],'role':_0x85fca3[_0x43e7('0x33')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x515dd2)[_0x43e7('0x15')](function(_0x578825){_0x311248[_0x43e7('0x34')]({'id':_0x85fca3['id'],'token':_0x578825,'statusCall':'','isAlreadyLogged':_0x85fca3['online']});});}})(_0x33268f,_0x311248,_0x5ecbd7);};exports['forgot']=function(_0x31eeb4,_0x5dee0,_0x319dd0){if(!_0x31eeb4[_0x43e7('0x35')][_0x43e7('0x1e')]){return handleError(_0x5dee0,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x1d863a=rs['generate']();_0x31eeb4[_0x43e7('0x35')][_0x43e7('0x1e')]=_0x31eeb4[_0x43e7('0x35')][_0x43e7('0x1e')][_0x43e7('0x36')]()[_0x43e7('0x37')]();var _0x3a49bd;return db[_0x43e7('0xa')]['findOne']({'where':{'id':0x1},'attributes':[_0x43e7('0xb'),_0x43e7('0xc')],'raw':!![]})[_0x43e7('0x15')](function(_0x113461){_0x3a49bd=_0x113461;return db[_0x43e7('0x38')]['find']({'where':{'email':_0x31eeb4[_0x43e7('0x35')][_0x43e7('0x1e')]}});})[_0x43e7('0x15')](function(_0x489c52){if(!_0x489c52){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x489c52['disabled']){throw new Error(_0x43e7('0x39'));}if(_0x489c52[_0x43e7('0x10')]){if(moment(_0x489c52['blockedAt'])[_0x43e7('0x18')](_0x3a49bd[_0x43e7('0xc')],_0x43e7('0x19'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x489c52[_0x43e7('0x10')]=![];_0x489c52[_0x43e7('0x11')]=null;}}_0x489c52['resetPasswordToken']=_0x1d863a;_0x489c52[_0x43e7('0x3a')]=Date[_0x43e7('0x3b')]()+0x36ee80;return _0x489c52[_0x43e7('0x3c')]();})[_0x43e7('0x15')](function(){return sendServiceMail({'to':_0x31eeb4[_0x43e7('0x35')][_0x43e7('0x1e')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x43e7('0x3d')+_0x31eeb4[_0x43e7('0x3e')][_0x43e7('0x22')]+_0x43e7('0x3f')+_0x1d863a+'\x0a\x0a'+_0x43e7('0x40')});})[_0x43e7('0x15')](function(){_0x5dee0[_0x43e7('0x2e')](0xc8)[_0x43e7('0x41')]({'message':_0x43e7('0x42')});})[_0x43e7('0x1b')](function(_0x3f5b38){return handleError(_0x5dee0,0x1f4,_0x3f5b38);});};exports[_0x43e7('0x43')]=function(_0x20e90f,_0x5c72f3,_0x34f0b8){return db['User']['find']({'where':{'resetPasswordToken':_0x20e90f['params'][_0x43e7('0x44')],'resetPasswordExpires':{'$gt':Date[_0x43e7('0x3b')]()}}})[_0x43e7('0x15')](function(_0x250d01){if(!_0x250d01){throw new Error(_0x43e7('0x45'));}return db[_0x43e7('0xa')][_0x43e7('0x46')]({'attributes':['id',_0x43e7('0x47'),'enforcePasswordHistory',_0x43e7('0x48')]})[_0x43e7('0x15')](function(_0x3ad53b){if(_0x3ad53b[_0x43e7('0x47')])authService['validatePasswordPattern'](_0x20e90f['body']['password']);if(!_0x3ad53b[_0x43e7('0x49')]||!_0x250d01[_0x43e7('0x4a')])return _0x250d01;authService[_0x43e7('0x4b')](_0x20e90f[_0x43e7('0x35')][_0x43e7('0x4c')],_0x250d01[_0x43e7('0x4a')],_0x3ad53b['passwordHistoryLimit']);return _0x250d01;})[_0x43e7('0x15')](function(){_0x250d01[_0x43e7('0x4c')]=_0x20e90f[_0x43e7('0x35')][_0x43e7('0x4c')];_0x250d01['resetPasswordToken']=null;_0x250d01[_0x43e7('0x3a')]=null;return _0x250d01[_0x43e7('0x3c')]();});})[_0x43e7('0x15')](function(){_0x5c72f3['status'](0xc8)[_0x43e7('0x41')]({'message':_0x43e7('0x4d')});})[_0x43e7('0x1b')](function(_0x1ce0c1){return handleError(_0x5c72f3,0x1f4,_0x1ce0c1);});};passport['use'](new LocalStrategy({'usernameField':_0x43e7('0xd'),'passwordField':_0x43e7('0x4c')},function(_0x2cf3fd,_0x419a62,_0x40da1f){return localAuthenticate(db['User'],_0x2cf3fd,_0x419a62,_0x40da1f);}));
\ No newline at end of file
+var _0x4c67=['Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','status','reset','User','params','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','save','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','then','name','password','role','blocked','blockedAt','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','disabled','add','blockDuration','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','format','\x22%s\x22\x20<%s>','request','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','send','local'];(function(_0x27e850,_0x43ce4d){var _0x4f89a7=function(_0x518a47){while(--_0x518a47){_0x27e850['push'](_0x27e850['shift']());}};_0x4f89a7(++_0x43ce4d);}(_0x4c67,0x1cd));var _0x74c6=function(_0xb0d70a,_0x184342){_0xb0d70a=_0xb0d70a-0x0;var _0xb600c7=_0x4c67[_0xb0d70a];return _0xb600c7;};'use strict';var util=require(_0x74c6('0x0'));var passport=require(_0x74c6('0x1'));var LocalStrategy=require(_0x74c6('0x2'))[_0x74c6('0x3')];var jayson=require(_0x74c6('0x4'));var _=require(_0x74c6('0x5'));var rs=require(_0x74c6('0x6'));var moment=require(_0x74c6('0x7'));var db=require(_0x74c6('0x8'))['db'];var authService=require(_0x74c6('0x9'));var utils=require(_0x74c6('0xa'));var client=jayson[_0x74c6('0xb')][_0x74c6('0xc')]({'port':0x232b});function localAuthenticate(_0x3a86dc,_0xf3a76e,_0x5d446c,_0x13a36d){var _0x3973d8,_0x36a3df;return db[_0x74c6('0xd')][_0x74c6('0xe')]({'where':{'id':0x1},'attributes':[_0x74c6('0xf'),'blockDuration'],'raw':!![]})[_0x74c6('0x10')](function(_0x5055f8){_0x3973d8=_0x5055f8;return _0x3a86dc[_0x74c6('0xe')]({'attributes':['id',_0x74c6('0x11'),_0x74c6('0x12'),'salt',_0x74c6('0x13'),'disabled',_0x74c6('0x14'),_0x74c6('0x15'),'loginAttempts'],'where':{'name':_0xf3a76e,'role':{'$or':[_0x74c6('0x16'),_0x74c6('0x17'),_0x74c6('0x18')]}}});})['then'](function(_0x108b5d){if(!_0x108b5d||_0x108b5d&&_0x108b5d[_0x74c6('0x11')]!==_0xf3a76e){throw new Error(_0x74c6('0x19'));}else{_0x36a3df=_0x108b5d;return _0x36a3df;}})['then'](function(){_0x36a3df[_0x74c6('0x1a')](_0x5d446c,function(_0x59f524,_0x40b62e){var _0x496784=_0x36a3df[_0x74c6('0x1b')]+0x1;if(_0x59f524){return _0x13a36d(_0x59f524);}else if(!_0x40b62e){if(_0x36a3df[_0x74c6('0x1c')]){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}else if(_0x3973d8[_0x74c6('0xf')]>0x0){if(_0x36a3df[_0x74c6('0x14')]){if(_0x3973d8['blockDuration']>0x0){if(moment(_0x36a3df[_0x74c6('0x15')])[_0x74c6('0x1d')](_0x3973d8[_0x74c6('0x1e')],_0x74c6('0x1f'))>moment()){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}else{return utils[_0x74c6('0x20')](_0x36a3df,_0x496784,![],null)[_0x74c6('0x10')](function(){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});});}}else{return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}}else{if(_0x496784>=_0x3973d8[_0x74c6('0xf')]){return utils['clearBlockUser'](_0x36a3df,0x0,!![],moment())[_0x74c6('0x10')](function(){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});});}else{return utils[_0x74c6('0x20')](_0x36a3df,_0x496784,![],null)[_0x74c6('0x10')](function(){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});});}}}else{return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}}else{if(_0x36a3df['disabled']){return _0x13a36d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x3973d8[_0x74c6('0xf')]>0x0){if(_0x36a3df[_0x74c6('0x14')]){if(_0x3973d8[_0x74c6('0x1e')]>0x0){if(moment(_0x36a3df[_0x74c6('0x15')])[_0x74c6('0x1d')](_0x3973d8[_0x74c6('0x1e')],_0x74c6('0x1f'))>moment()){return _0x13a36d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x74c6('0x20')](_0x36a3df,0x0,![],null)['then'](function(){return utils[_0x74c6('0x21')](_0x36a3df);})['then'](function(){return _0x13a36d(null,_0x36a3df);});}}else{return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}}else{return utils['clearBlockUser'](_0x36a3df,0x0,![],null)[_0x74c6('0x10')](function(){return utils['getLicense'](_0x36a3df);})['then'](function(){return _0x13a36d(null,_0x36a3df);})[_0x74c6('0x22')](function(_0x45d95d){return _0x13a36d(null,![],_0x45d95d);});}}else{if(_0x36a3df['blocked']){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}else{return utils[_0x74c6('0x21')](_0x36a3df)['then'](function(){return _0x13a36d(null,_0x36a3df);});}}}});})['catch'](function(_0x3b4f70){return _0x13a36d(null,![],_0x3b4f70);});}function sendServiceMail(_0x22502d){return db[_0x74c6('0x23')][_0x74c6('0x24')]({'where':{'service':!![]},'attributes':['id',_0x74c6('0x11'),_0x74c6('0x25')],'include':[{'model':db['MailServerOut'],'as':_0x74c6('0x26')}]})['then'](function(_0x55512a){if(!_0x55512a){throw new Error(_0x74c6('0x27'));}var _0x3233f6={'tls':{'rejectUnauthorized':![]}};if(_0x55512a[_0x74c6('0x26')]['service']){_0x3233f6[_0x74c6('0x28')]=_0x55512a['Smtp'][_0x74c6('0x28')];}else{_0x3233f6[_0x74c6('0x29')]=_0x55512a[_0x74c6('0x26')][_0x74c6('0x29')];_0x3233f6[_0x74c6('0x2a')]=_0x55512a[_0x74c6('0x26')][_0x74c6('0x2a')];_0x3233f6['secure']=_0x55512a[_0x74c6('0x26')][_0x74c6('0x2b')];}if(_0x55512a[_0x74c6('0x26')][_0x74c6('0x2c')]){_0x3233f6[_0x74c6('0x2d')]={'user':_0x55512a[_0x74c6('0x26')][_0x74c6('0x17')],'pass':_0x55512a[_0x74c6('0x26')]['pass']};}var _0x4fff33={'account':_0x3233f6,'message':_['merge']({'from':util[_0x74c6('0x2e')](_0x74c6('0x2f'),_0x55512a[_0x74c6('0x11')],_0x55512a[_0x74c6('0x25')]||_0x55512a[_0x74c6('0x26')]['user'])},_0x22502d)};return client[_0x74c6('0x30')]('SendMail',_0x4fff33);})[_0x74c6('0x10')](function(_0x998db8){if(_0x998db8[_0x74c6('0x31')]){throw new Error(util[_0x74c6('0x2e')](_0x74c6('0x32'),_0x998db8[_0x74c6('0x31')][_0x74c6('0x33')]||JSON[_0x74c6('0x34')](_0x998db8[_0x74c6('0x31')])));}return!![];});}function handleError(_0x389454,_0x5682ca,_0x22aa1a){return _0x389454['status'](_0x5682ca||0x1f4)[_0x74c6('0x35')]({'message':_0x22aa1a?_0x22aa1a['message']||_0x22aa1a:''});}exports['login']=function(_0x410a6a,_0x1e5b06,_0x16e3d1){passport['authenticate'](_0x74c6('0x36'),function(_0x1cea8a,_0x3c700f,_0x511459){var _0x1fe02e=_0x1cea8a||_0x511459;if(_0x1fe02e){return handleError(_0x1e5b06,0x191,_0x1fe02e);}if(!_0x3c700f){return handleError(_0x1e5b06,0x194,{'message':_0x74c6('0x37')});}else{var _0x46c590={'payload':{'id':_0x3c700f['id'],'role':_0x3c700f[_0x74c6('0x13')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x46c590)['then'](function(_0x3679f6){_0x1e5b06[_0x74c6('0x38')]({'id':_0x3c700f['id'],'token':_0x3679f6,'statusCall':'','isAlreadyLogged':_0x3c700f[_0x74c6('0x39')]});});}})(_0x410a6a,_0x1e5b06,_0x16e3d1);};exports['forgot']=function(_0x18b20b,_0x11acf1,_0x293ce4){if(!_0x18b20b[_0x74c6('0x3a')]['email']){return handleError(_0x11acf1,0x1f4,{'message':_0x74c6('0x3b')});}var _0x3fa2e7=rs[_0x74c6('0x3c')]();_0x18b20b[_0x74c6('0x3a')][_0x74c6('0x25')]=_0x18b20b[_0x74c6('0x3a')][_0x74c6('0x25')][_0x74c6('0x3d')]()[_0x74c6('0x3e')]();var _0x102dfb;return db[_0x74c6('0xd')]['findOne']({'where':{'id':0x1},'attributes':[_0x74c6('0xf'),_0x74c6('0x1e')],'raw':!![]})[_0x74c6('0x10')](function(_0x3bc978){_0x102dfb=_0x3bc978;return db['User'][_0x74c6('0x24')]({'where':{'email':_0x18b20b[_0x74c6('0x3a')][_0x74c6('0x25')]}});})[_0x74c6('0x10')](function(_0x5184b0){if(!_0x5184b0){throw new Error(_0x74c6('0x3f'));}if(_0x5184b0['disabled']){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x5184b0[_0x74c6('0x14')]){if(moment(_0x5184b0[_0x74c6('0x15')])['add'](_0x102dfb[_0x74c6('0x1e')],'minutes')>moment()){throw new Error(_0x74c6('0x40'));}else{_0x5184b0[_0x74c6('0x14')]=![];_0x5184b0['blockedAt']=null;}}_0x5184b0['resetPasswordToken']=_0x3fa2e7;_0x5184b0[_0x74c6('0x41')]=Date['now']()+0x36ee80;return _0x5184b0['save']();})['then'](function(){return sendServiceMail({'to':_0x18b20b[_0x74c6('0x3a')]['email'],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x74c6('0x42')+_0x74c6('0x43')+_0x18b20b[_0x74c6('0x44')][_0x74c6('0x29')]+_0x74c6('0x45')+_0x3fa2e7+'\x0a\x0a'+_0x74c6('0x46')});})[_0x74c6('0x10')](function(){_0x11acf1[_0x74c6('0x47')](0xc8)[_0x74c6('0x35')]({'message':'Reset\x20Email\x20sent!'});})[_0x74c6('0x22')](function(_0x9000c7){return handleError(_0x11acf1,0x1f4,_0x9000c7);});};exports[_0x74c6('0x48')]=function(_0x444859,_0x233f44,_0x915102){return db[_0x74c6('0x49')]['find']({'where':{'resetPasswordToken':_0x444859[_0x74c6('0x4a')]['token'],'resetPasswordExpires':{'$gt':Date[_0x74c6('0x4b')]()}}})[_0x74c6('0x10')](function(_0x5bbd3f){if(!_0x5bbd3f){throw new Error(_0x74c6('0x4c'));}return db[_0x74c6('0xd')][_0x74c6('0xe')]({'attributes':['id',_0x74c6('0x4d'),_0x74c6('0x4e'),_0x74c6('0x4f')]})[_0x74c6('0x10')](function(_0x431262){if(_0x431262['securePassword'])authService[_0x74c6('0x50')](_0x444859[_0x74c6('0x3a')][_0x74c6('0x12')]);if(!_0x431262[_0x74c6('0x4e')]||!_0x5bbd3f[_0x74c6('0x51')])return _0x5bbd3f;authService[_0x74c6('0x52')](_0x444859['body'][_0x74c6('0x12')],_0x5bbd3f[_0x74c6('0x51')],_0x431262['passwordHistoryLimit']);return _0x5bbd3f;})[_0x74c6('0x10')](function(){_0x5bbd3f[_0x74c6('0x12')]=_0x444859[_0x74c6('0x3a')][_0x74c6('0x12')];_0x5bbd3f['resetPasswordToken']=null;_0x5bbd3f[_0x74c6('0x41')]=null;return _0x5bbd3f[_0x74c6('0x53')]();});})['then'](function(){_0x233f44[_0x74c6('0x47')](0xc8)[_0x74c6('0x35')]({'message':_0x74c6('0x54')});})[_0x74c6('0x22')](function(_0x44cba8){return handleError(_0x233f44,0x1f4,_0x44cba8);});};passport[_0x74c6('0x55')](new LocalStrategy({'usernameField':_0x74c6('0x11'),'passwordField':_0x74c6('0x12')},function(_0x531d6a,_0x5452d6,_0x53cd52){return localAuthenticate(db[_0x74c6('0x49')],_0x531d6a,_0x5452d6,_0x53cd52);}));
\ No newline at end of file
index 95ae69e..a665786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1002=['reset','exports','Router','post','login'];(function(_0xd7b7c4,_0x3bde33){var _0x3701d4=function(_0x37f7de){while(--_0x37f7de){_0xd7b7c4['push'](_0xd7b7c4['shift']());}};_0x3701d4(++_0x3bde33);}(_0x1002,0x12e));var _0x2100=function(_0x325a95,_0x3ed033){_0x325a95=_0x325a95-0x0;var _0x55bdfa=_0x1002[_0x325a95];return _0x55bdfa;};'use strict';var express=require('express');var router=express[_0x2100('0x0')]();var controller=require('./authLocal.controller');router[_0x2100('0x1')]('/',controller[_0x2100('0x2')]);router[_0x2100('0x1')]('/forgot',controller['forgot']);router[_0x2100('0x1')]('/reset/:token',controller[_0x2100('0x3')]);module[_0x2100('0x4')]=router;
\ No newline at end of file
+var _0x222e=['Router','post','login','forgot','/reset/:token','exports'];(function(_0x405308,_0x321c8d){var _0xdb2cad=function(_0x50bf38){while(--_0x50bf38){_0x405308['push'](_0x405308['shift']());}};_0xdb2cad(++_0x321c8d);}(_0x222e,0xba));var _0xe222=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x222e[_0x3dd15e];return _0x231fd0;};'use strict';var express=require('express');var router=express[_0xe222('0x0')]();var controller=require('./authLocal.controller');router[_0xe222('0x1')]('/',controller[_0xe222('0x2')]);router[_0xe222('0x1')]('/forgot',controller[_0xe222('0x3')]);router[_0xe222('0x1')](_0xe222('0x4'),controller['reset']);module[_0xe222('0x5')]=router;
\ No newline at end of file
index 52947cc..c288cf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x987f=['sequelize','exports','STRING','BOOLEAN','INTEGER'];(function(_0x27c3f0,_0x198aa2){var _0x11e51c=function(_0x2a48ec){while(--_0x2a48ec){_0x27c3f0['push'](_0x27c3f0['shift']());}};_0x11e51c(++_0x198aa2);}(_0x987f,0x11d));var _0xf987=function(_0x599318,_0x319486){_0x599318=_0x599318-0x0;var _0x7b06fa=_0x987f[_0x599318];return _0x7b06fa;};'use strict';var Sequelize=require(_0xf987('0x0'));module[_0xf987('0x1')]={'name':{'type':Sequelize[_0xf987('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xf987('0x2')]},'description':{'type':Sequelize[_0xf987('0x2')]},'status':{'type':Sequelize[_0xf987('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xf987('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xb125=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x161eca,_0x26bf52){var _0x3e352d=function(_0x312e8e){while(--_0x312e8e){_0x161eca['push'](_0x161eca['shift']());}};_0x3e352d(++_0x26bf52);}(_0xb125,0xbf));var _0x5b12=function(_0x2f19b4,_0x5f3c16){_0x2f19b4=_0x2f19b4-0x0;var _0xde470=_0xb125[_0x2f19b4];return _0xde470;};'use strict';var Sequelize=require(_0x5b12('0x0'));module[_0x5b12('0x1')]={'name':{'type':Sequelize[_0x5b12('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x5b12('0x2')]},'description':{'type':Sequelize[_0x5b12('0x2')]},'status':{'type':Sequelize[_0x5b12('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x5b12('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 8c18abb..c025b08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca15=['getActions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','update','then','error','stack','name','index','map','Automation','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','body','destroy','addConditions','Condition','ids','getConditions','findOne','addActions','Action','omit'];(function(_0x499238,_0x226523){var _0x5613f7=function(_0x33cd11){while(--_0x33cd11){_0x499238['push'](_0x499238['shift']());}};_0x5613f7(++_0x226523);}(_0xca15,0x182));var _0x5ca1=function(_0x8377ed,_0x5d4c1a){_0x8377ed=_0x8377ed-0x0;var _0x1a71ae=_0xca15[_0x8377ed];return _0x1a71ae;};'use strict';var emlformat=require(_0x5ca1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5ca1('0x1'));var jsonpatch=require(_0x5ca1('0x2'));var rp=require(_0x5ca1('0x3'));var moment=require(_0x5ca1('0x4'));var BPromise=require(_0x5ca1('0x5'));var Mustache=require('mustache');var util=require(_0x5ca1('0x6'));var path=require(_0x5ca1('0x7'));var sox=require(_0x5ca1('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5ca1('0x9'));var _=require(_0x5ca1('0xa'));var squel=require(_0x5ca1('0xb'));var crypto=require('crypto');var jsforce=require(_0x5ca1('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5ca1('0xd'));var Papa=require('papaparse');var Redis=require(_0x5ca1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x5ca1('0xf'));var as=require(_0x5ca1('0x10'));var hardwareService=require(_0x5ca1('0x11'));var logger=require(_0x5ca1('0x12'))(_0x5ca1('0x13'));var utils=require(_0x5ca1('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39e5b6,_0x2d82c0){_0x2d82c0=_0x2d82c0||0xcc;return function(_0x21d9e2){if(_0x21d9e2){return _0x39e5b6[_0x5ca1('0x15')](_0x2d82c0);}return _0x39e5b6[_0x5ca1('0x16')](_0x2d82c0)[_0x5ca1('0x17')]();};}function respondWithResult(_0x162f72,_0x4773db){_0x4773db=_0x4773db||0xc8;return function(_0x14b882){if(_0x14b882){return _0x162f72[_0x5ca1('0x16')](_0x4773db)[_0x5ca1('0x18')](_0x14b882);}};}function respondWithFilteredResult(_0x400e3c,_0x88c886){return function(_0x4a19bd){if(_0x4a19bd){var _0x3ef025=typeof _0x88c886[_0x5ca1('0x19')]===_0x5ca1('0x1a')&&typeof _0x88c886[_0x5ca1('0x1b')]==='undefined';var _0x3d88d6=_0x4a19bd['count'];var _0x1940bb=_0x3ef025?0x0:_0x88c886[_0x5ca1('0x19')];var _0x339bd0=_0x3ef025?_0x4a19bd['count']:_0x88c886[_0x5ca1('0x19')]+_0x88c886['limit'];var _0x3dc14f;if(_0x339bd0>=_0x3d88d6){_0x339bd0=_0x3d88d6;_0x3dc14f=0xc8;}else{_0x3dc14f=0xce;}_0x400e3c['status'](_0x3dc14f);return _0x400e3c[_0x5ca1('0x1c')](_0x5ca1('0x1d'),_0x1940bb+'-'+_0x339bd0+'/'+_0x3d88d6)[_0x5ca1('0x18')](_0x4a19bd);}return null;};}function patchUpdates(_0xb824e1){return function(_0x4c0896){try{jsonpatch['apply'](_0x4c0896,_0xb824e1,!![]);}catch(_0x41a6c3){return BPromise[_0x5ca1('0x1e')](_0x41a6c3);}return _0x4c0896['save']();};}function saveUpdates(_0x2fab4e,_0x1d9dea){return function(_0x39a28c){if(_0x39a28c){return _0x39a28c[_0x5ca1('0x1f')](_0x2fab4e)[_0x5ca1('0x20')](function(_0x1685e1){return _0x1685e1;});}return null;};}function removeEntity(_0x584f1a,_0x5a89b5){return function(_0x3ed0cc){if(_0x3ed0cc){return _0x3ed0cc['destroy']()[_0x5ca1('0x20')](function(){_0x584f1a[_0x5ca1('0x16')](0xcc)[_0x5ca1('0x17')]();});}};}function handleEntityNotFound(_0x2ab53f,_0x64a2b6){return function(_0xa14173){if(!_0xa14173){_0x2ab53f['sendStatus'](0x194);}return _0xa14173;};}function handleError(_0x50248b,_0x3409da){_0x3409da=_0x3409da||0x1f4;return function(_0x544c50){logger[_0x5ca1('0x21')](_0x544c50[_0x5ca1('0x22')]);if(_0x544c50[_0x5ca1('0x23')]){delete _0x544c50['name'];}_0x50248b['status'](_0x3409da)['send'](_0x544c50);};}exports[_0x5ca1('0x24')]=function(_0x5afc87,_0x1a86fe){var _0x2f24c2={},_0x52f07b={},_0xa2e433={'count':0x0,'rows':[]};var _0x3c7a64=_[_0x5ca1('0x25')](db[_0x5ca1('0x26')][_0x5ca1('0x27')],function(_0x58d55f){return{'name':_0x58d55f['fieldName'],'type':_0x58d55f[_0x5ca1('0x28')]['key']};});_0x52f07b[_0x5ca1('0x29')]=_['map'](_0x3c7a64,_0x5ca1('0x23'));_0x52f07b[_0x5ca1('0x2a')]=_[_0x5ca1('0x2b')](_0x5afc87[_0x5ca1('0x2a')]);_0x52f07b['filters']=_[_0x5ca1('0x2c')](_0x52f07b[_0x5ca1('0x29')],_0x52f07b[_0x5ca1('0x2a')]);_0x2f24c2[_0x5ca1('0x2d')]=_['intersection'](_0x52f07b[_0x5ca1('0x29')],qs[_0x5ca1('0x2e')](_0x5afc87['query'][_0x5ca1('0x2e')]));_0x2f24c2['attributes']=_0x2f24c2[_0x5ca1('0x2d')][_0x5ca1('0x2f')]?_0x2f24c2[_0x5ca1('0x2d')]:_0x52f07b[_0x5ca1('0x29')];if(!_0x5afc87[_0x5ca1('0x2a')][_0x5ca1('0x30')](_0x5ca1('0x31'))){_0x2f24c2[_0x5ca1('0x1b')]=qs[_0x5ca1('0x1b')](_0x5afc87[_0x5ca1('0x2a')][_0x5ca1('0x1b')]);_0x2f24c2['offset']=qs[_0x5ca1('0x19')](_0x5afc87[_0x5ca1('0x2a')]['offset']);}_0x2f24c2[_0x5ca1('0x32')]=qs[_0x5ca1('0x33')](_0x5afc87[_0x5ca1('0x2a')][_0x5ca1('0x33')]);_0x2f24c2[_0x5ca1('0x34')]=qs[_0x5ca1('0x35')](_[_0x5ca1('0x36')](_0x5afc87[_0x5ca1('0x2a')],_0x52f07b['filters']),_0x3c7a64);if(_0x5afc87['query'][_0x5ca1('0x37')]){_0x2f24c2[_0x5ca1('0x34')]=_[_0x5ca1('0x38')](_0x2f24c2[_0x5ca1('0x34')],{'$or':_['map'](_0x3c7a64,function(_0x2ed4f9){if(_0x2ed4f9['type']!==_0x5ca1('0x39')){var _0x4ffea0={};_0x4ffea0[_0x2ed4f9[_0x5ca1('0x23')]]={'$like':'%'+_0x5afc87[_0x5ca1('0x2a')][_0x5ca1('0x37')]+'%'};return _0x4ffea0;}})});}_0x2f24c2=_['merge']({},_0x2f24c2,_0x5afc87[_0x5ca1('0x3a')]);var _0x1ca1a2={'where':_0x2f24c2[_0x5ca1('0x34')]};return db[_0x5ca1('0x26')]['count'](_0x1ca1a2)[_0x5ca1('0x20')](function(_0x3e961f){_0xa2e433['count']=_0x3e961f;if(_0x5afc87[_0x5ca1('0x2a')][_0x5ca1('0x3b')]){_0x2f24c2[_0x5ca1('0x3c')]=[{'all':!![]}];}return db[_0x5ca1('0x26')]['findAll'](_0x2f24c2);})[_0x5ca1('0x20')](function(_0xe9e20c){_0xa2e433[_0x5ca1('0x3d')]=_0xe9e20c;return _0xa2e433;})[_0x5ca1('0x20')](respondWithFilteredResult(_0x1a86fe,_0x2f24c2))[_0x5ca1('0x3e')](handleError(_0x1a86fe,null));};exports[_0x5ca1('0x3f')]=function(_0x2326c5,_0x3d596d){var _0x4e5944={'raw':![],'where':{'id':_0x2326c5[_0x5ca1('0x40')]['id']}},_0x269389={};_0x269389[_0x5ca1('0x29')]=_[_0x5ca1('0x2b')](db[_0x5ca1('0x26')]['rawAttributes']);_0x269389[_0x5ca1('0x2a')]=_[_0x5ca1('0x2b')](_0x2326c5['query']);_0x269389[_0x5ca1('0x35')]=_[_0x5ca1('0x2c')](_0x269389[_0x5ca1('0x29')],_0x269389[_0x5ca1('0x2a')]);_0x4e5944[_0x5ca1('0x2d')]=_['intersection'](_0x269389[_0x5ca1('0x29')],qs[_0x5ca1('0x2e')](_0x2326c5[_0x5ca1('0x2a')]['fields']));_0x4e5944[_0x5ca1('0x2d')]=_0x4e5944[_0x5ca1('0x2d')]['length']?_0x4e5944[_0x5ca1('0x2d')]:_0x269389[_0x5ca1('0x29')];if(_0x2326c5['query']['includeAll']){_0x4e5944['include']=[{'all':!![]}];}_0x4e5944=_[_0x5ca1('0x38')]({},_0x4e5944,_0x2326c5[_0x5ca1('0x3a')]);return db[_0x5ca1('0x26')][_0x5ca1('0x41')](_0x4e5944)[_0x5ca1('0x20')](handleEntityNotFound(_0x3d596d,null))[_0x5ca1('0x20')](respondWithResult(_0x3d596d,null))['catch'](handleError(_0x3d596d,null));};exports['create']=function(_0x356c4e,_0x46c3c5){return db['Automation']['create'](_0x356c4e['body'],{})[_0x5ca1('0x20')](respondWithResult(_0x46c3c5,0xc9))[_0x5ca1('0x3e')](handleError(_0x46c3c5,null));};exports[_0x5ca1('0x1f')]=function(_0x1761ba,_0x5440c0){if(_0x1761ba[_0x5ca1('0x42')]['id']){delete _0x1761ba['body']['id'];}return db[_0x5ca1('0x26')][_0x5ca1('0x41')]({'where':{'id':_0x1761ba[_0x5ca1('0x40')]['id']}})[_0x5ca1('0x20')](handleEntityNotFound(_0x5440c0,null))['then'](saveUpdates(_0x1761ba[_0x5ca1('0x42')],null))['then'](respondWithResult(_0x5440c0,null))[_0x5ca1('0x3e')](handleError(_0x5440c0,null));};exports[_0x5ca1('0x43')]=function(_0x51b84b,_0x1ebad1){return db[_0x5ca1('0x26')][_0x5ca1('0x41')]({'where':{'id':_0x51b84b['params']['id']}})[_0x5ca1('0x20')](handleEntityNotFound(_0x1ebad1,null))[_0x5ca1('0x20')](removeEntity(_0x1ebad1,null))['catch'](handleError(_0x1ebad1,null));};exports[_0x5ca1('0x44')]=function(_0x225a6f,_0x515f3f,_0x3db3d4){return db[_0x5ca1('0x45')][_0x5ca1('0x41')]({'where':{'id':_0x225a6f[_0x5ca1('0x40')]['id']}})[_0x5ca1('0x20')](handleEntityNotFound(_0x515f3f,null))[_0x5ca1('0x20')](function(_0x2c2cef){if(_0x2c2cef){return _0x2c2cef[_0x5ca1('0x44')](_0x225a6f[_0x5ca1('0x42')][_0x5ca1('0x46')],_['omit'](_0x225a6f['body'],['ids','id'])||{});}})[_0x5ca1('0x20')](respondWithResult(_0x515f3f,null))[_0x5ca1('0x3e')](handleError(_0x515f3f,null));};exports[_0x5ca1('0x47')]=function(_0x23d644,_0x5c5463,_0x3a9415){var _0x4519c3={};var _0x14ce93={};var _0x50b98c;var _0x405282;return db[_0x5ca1('0x26')][_0x5ca1('0x48')]({'where':{'id':_0x23d644[_0x5ca1('0x40')]['id']}})[_0x5ca1('0x20')](handleEntityNotFound(_0x5c5463,null))['then'](function(_0x2243f3){if(_0x2243f3){_0x50b98c=_0x2243f3;_0x14ce93[_0x5ca1('0x29')]=_[_0x5ca1('0x2b')](db[_0x5ca1('0x45')][_0x5ca1('0x27')]);_0x14ce93[_0x5ca1('0x2a')]=_[_0x5ca1('0x2b')](_0x23d644[_0x5ca1('0x2a')]);_0x14ce93[_0x5ca1('0x35')]=_[_0x5ca1('0x2c')](_0x14ce93['model'],_0x14ce93[_0x5ca1('0x2a')]);_0x4519c3[_0x5ca1('0x2d')]=_[_0x5ca1('0x2c')](_0x14ce93[_0x5ca1('0x29')],qs[_0x5ca1('0x2e')](_0x23d644[_0x5ca1('0x2a')][_0x5ca1('0x2e')]));_0x4519c3[_0x5ca1('0x2d')]=_0x4519c3[_0x5ca1('0x2d')][_0x5ca1('0x2f')]?_0x4519c3[_0x5ca1('0x2d')]:_0x14ce93['model'];_0x4519c3[_0x5ca1('0x32')]=qs['sort'](_0x23d644[_0x5ca1('0x2a')][_0x5ca1('0x33')]);_0x4519c3[_0x5ca1('0x34')]=qs[_0x5ca1('0x35')](_['pick'](_0x23d644[_0x5ca1('0x2a')],_0x14ce93[_0x5ca1('0x35')]));if(_0x23d644[_0x5ca1('0x2a')]['filter']){_0x4519c3[_0x5ca1('0x34')]=_['merge'](_0x4519c3[_0x5ca1('0x34')],{'$or':_[_0x5ca1('0x25')](_0x4519c3[_0x5ca1('0x2d')],function(_0x559936){var _0x231d83={};_0x231d83[_0x559936]={'$like':'%'+_0x23d644[_0x5ca1('0x2a')]['filter']+'%'};return _0x231d83;})});}_0x4519c3=_['merge']({},_0x4519c3,_0x23d644[_0x5ca1('0x3a')]);return _0x50b98c['getConditions'](_0x4519c3);}})['then'](function(_0x561577){if(_0x561577){_0x405282=_0x561577[_0x5ca1('0x2f')];if(!_0x23d644['query'][_0x5ca1('0x30')](_0x5ca1('0x31'))){_0x4519c3[_0x5ca1('0x1b')]=qs[_0x5ca1('0x1b')](_0x23d644['query']['limit']);_0x4519c3[_0x5ca1('0x19')]=qs[_0x5ca1('0x19')](_0x23d644['query'][_0x5ca1('0x19')]);}return _0x50b98c['getConditions'](_0x4519c3);}})['then'](function(_0x16b610){if(_0x16b610){return _0x16b610?{'count':_0x405282,'rows':_0x16b610}:null;}})[_0x5ca1('0x20')](respondWithResult(_0x5c5463,null))[_0x5ca1('0x3e')](handleError(_0x5c5463,null));};exports[_0x5ca1('0x49')]=function(_0xc9d694,_0x112556,_0x247266){return db[_0x5ca1('0x4a')]['find']({'where':{'id':_0xc9d694[_0x5ca1('0x40')]['id']}})[_0x5ca1('0x20')](handleEntityNotFound(_0x112556,null))[_0x5ca1('0x20')](function(_0x1ddfcb){if(_0x1ddfcb){return _0x1ddfcb[_0x5ca1('0x49')](_0xc9d694[_0x5ca1('0x42')][_0x5ca1('0x46')],_[_0x5ca1('0x4b')](_0xc9d694[_0x5ca1('0x42')],['ids','id'])||{});}})[_0x5ca1('0x20')](respondWithResult(_0x112556,null))[_0x5ca1('0x3e')](handleError(_0x112556,null));};exports[_0x5ca1('0x4c')]=function(_0x1a4cbf,_0x5be831,_0xeb04d2){var _0x300de6={};var _0x4e5031={};var _0x4d029e;var _0x302dcb;return db[_0x5ca1('0x26')][_0x5ca1('0x48')]({'where':{'id':_0x1a4cbf[_0x5ca1('0x40')]['id']}})[_0x5ca1('0x20')](handleEntityNotFound(_0x5be831,null))[_0x5ca1('0x20')](function(_0xb6897c){if(_0xb6897c){_0x4d029e=_0xb6897c;_0x4e5031[_0x5ca1('0x29')]=_[_0x5ca1('0x2b')](db[_0x5ca1('0x4a')][_0x5ca1('0x27')]);_0x4e5031[_0x5ca1('0x2a')]=_['keys'](_0x1a4cbf[_0x5ca1('0x2a')]);_0x4e5031[_0x5ca1('0x35')]=_[_0x5ca1('0x2c')](_0x4e5031[_0x5ca1('0x29')],_0x4e5031[_0x5ca1('0x2a')]);_0x300de6[_0x5ca1('0x2d')]=_[_0x5ca1('0x2c')](_0x4e5031['model'],qs['fields'](_0x1a4cbf[_0x5ca1('0x2a')][_0x5ca1('0x2e')]));_0x300de6[_0x5ca1('0x2d')]=_0x300de6[_0x5ca1('0x2d')][_0x5ca1('0x2f')]?_0x300de6[_0x5ca1('0x2d')]:_0x4e5031[_0x5ca1('0x29')];_0x300de6[_0x5ca1('0x32')]=qs[_0x5ca1('0x33')](_0x1a4cbf[_0x5ca1('0x2a')][_0x5ca1('0x33')]);_0x300de6['where']=qs[_0x5ca1('0x35')](_[_0x5ca1('0x36')](_0x1a4cbf['query'],_0x4e5031[_0x5ca1('0x35')]));if(_0x1a4cbf[_0x5ca1('0x2a')]['filter']){_0x300de6['where']=_[_0x5ca1('0x38')](_0x300de6[_0x5ca1('0x34')],{'$or':_[_0x5ca1('0x25')](_0x300de6['attributes'],function(_0xcd3360){var _0x241ad1={};_0x241ad1[_0xcd3360]={'$like':'%'+_0x1a4cbf[_0x5ca1('0x2a')][_0x5ca1('0x37')]+'%'};return _0x241ad1;})});}_0x300de6=_[_0x5ca1('0x38')]({},_0x300de6,_0x1a4cbf[_0x5ca1('0x3a')]);return _0x4d029e[_0x5ca1('0x4c')](_0x300de6);}})['then'](function(_0x66de7b){if(_0x66de7b){_0x302dcb=_0x66de7b[_0x5ca1('0x2f')];if(!_0x1a4cbf[_0x5ca1('0x2a')][_0x5ca1('0x30')](_0x5ca1('0x31'))){_0x300de6[_0x5ca1('0x1b')]=qs[_0x5ca1('0x1b')](_0x1a4cbf[_0x5ca1('0x2a')][_0x5ca1('0x1b')]);_0x300de6[_0x5ca1('0x19')]=qs[_0x5ca1('0x19')](_0x1a4cbf[_0x5ca1('0x2a')][_0x5ca1('0x19')]);}return _0x4d029e['getActions'](_0x300de6);}})[_0x5ca1('0x20')](function(_0x1b4148){if(_0x1b4148){return _0x1b4148?{'count':_0x302dcb,'rows':_0x1b4148}:null;}})['then'](respondWithResult(_0x5be831,null))[_0x5ca1('0x3e')](handleError(_0x5be831,null));};
\ No newline at end of file
+var _0x51d5=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','rows','catch','show','params','keys','rawAttributes','include','merge','find','create','body','addConditions','Condition','ids','omit','findOne','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','Automation','fieldName','type','key','model','map','query','filters','intersection','attributes'];(function(_0x30bc31,_0x4e9338){var _0x5aa220=function(_0x4a03f3){while(--_0x4a03f3){_0x30bc31['push'](_0x30bc31['shift']());}};_0x5aa220(++_0x4e9338);}(_0x51d5,0x1c4));var _0x551d=function(_0xbed5cc,_0x461395){_0xbed5cc=_0xbed5cc-0x0;var _0x953d51=_0x51d5[_0xbed5cc];return _0x953d51;};'use strict';var emlformat=require(_0x551d('0x0'));var rimraf=require(_0x551d('0x1'));var zipdir=require(_0x551d('0x2'));var jsonpatch=require(_0x551d('0x3'));var rp=require('request-promise');var moment=require(_0x551d('0x4'));var BPromise=require(_0x551d('0x5'));var Mustache=require(_0x551d('0x6'));var util=require(_0x551d('0x7'));var path=require(_0x551d('0x8'));var sox=require(_0x551d('0x9'));var csv=require(_0x551d('0xa'));var ejs=require(_0x551d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x551d('0xc'));var crypto=require(_0x551d('0xd'));var jsforce=require(_0x551d('0xe'));var deskjs=require(_0x551d('0xf'));var toCsv=require(_0x551d('0xa'));var querystring=require(_0x551d('0x10'));var Papa=require(_0x551d('0x11'));var Redis=require(_0x551d('0x12'));var authService=require(_0x551d('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x551d('0x14'));var hardwareService=require(_0x551d('0x15'));var logger=require(_0x551d('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x551d('0x17'))['db'];function respondWithStatusCode(_0x4c8000,_0xa390cd){_0xa390cd=_0xa390cd||0xcc;return function(_0x405d8a){if(_0x405d8a){return _0x4c8000[_0x551d('0x18')](_0xa390cd);}return _0x4c8000[_0x551d('0x19')](_0xa390cd)[_0x551d('0x1a')]();};}function respondWithResult(_0x139e62,_0x1edee5){_0x1edee5=_0x1edee5||0xc8;return function(_0x5b3997){if(_0x5b3997){return _0x139e62['status'](_0x1edee5)['json'](_0x5b3997);}};}function respondWithFilteredResult(_0x2dcc25,_0xe58f01){return function(_0x12d5c6){if(_0x12d5c6){var _0x463aff=typeof _0xe58f01[_0x551d('0x1b')]===_0x551d('0x1c')&&typeof _0xe58f01[_0x551d('0x1d')]===_0x551d('0x1c');var _0x1939c4=_0x12d5c6['count'];var _0x4b7320=_0x463aff?0x0:_0xe58f01[_0x551d('0x1b')];var _0x417069=_0x463aff?_0x12d5c6[_0x551d('0x1e')]:_0xe58f01[_0x551d('0x1b')]+_0xe58f01[_0x551d('0x1d')];var _0x4b10ee;if(_0x417069>=_0x1939c4){_0x417069=_0x1939c4;_0x4b10ee=0xc8;}else{_0x4b10ee=0xce;}_0x2dcc25['status'](_0x4b10ee);return _0x2dcc25['set'](_0x551d('0x1f'),_0x4b7320+'-'+_0x417069+'/'+_0x1939c4)['json'](_0x12d5c6);}return null;};}function patchUpdates(_0x59da88){return function(_0x403c04){try{jsonpatch[_0x551d('0x20')](_0x403c04,_0x59da88,!![]);}catch(_0x5de6f0){return BPromise[_0x551d('0x21')](_0x5de6f0);}return _0x403c04['save']();};}function saveUpdates(_0x1cd263,_0x1a8c98){return function(_0x19f50b){if(_0x19f50b){return _0x19f50b[_0x551d('0x22')](_0x1cd263)['then'](function(_0x1c0952){return _0x1c0952;});}return null;};}function removeEntity(_0xcc35a5,_0x5c0c6e){return function(_0x542892){if(_0x542892){return _0x542892[_0x551d('0x23')]()[_0x551d('0x24')](function(){_0xcc35a5[_0x551d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a5f1d,_0x47782f){return function(_0x4498e5){if(!_0x4498e5){_0x3a5f1d[_0x551d('0x18')](0x194);}return _0x4498e5;};}function handleError(_0x1eea98,_0x5d086e){_0x5d086e=_0x5d086e||0x1f4;return function(_0xf5ae05){logger[_0x551d('0x25')](_0xf5ae05[_0x551d('0x26')]);if(_0xf5ae05[_0x551d('0x27')]){delete _0xf5ae05['name'];}_0x1eea98[_0x551d('0x19')](_0x5d086e)[_0x551d('0x28')](_0xf5ae05);};}exports[_0x551d('0x29')]=function(_0x57f3b0,_0xfc8730){var _0x42e45e={},_0xcc3506={},_0x2b35eb={'count':0x0,'rows':[]};var _0x21d9ec=_['map'](db[_0x551d('0x2a')]['rawAttributes'],function(_0x2e4cfc){return{'name':_0x2e4cfc[_0x551d('0x2b')],'type':_0x2e4cfc[_0x551d('0x2c')][_0x551d('0x2d')]};});_0xcc3506[_0x551d('0x2e')]=_[_0x551d('0x2f')](_0x21d9ec,'name');_0xcc3506[_0x551d('0x30')]=_['keys'](_0x57f3b0['query']);_0xcc3506[_0x551d('0x31')]=_[_0x551d('0x32')](_0xcc3506[_0x551d('0x2e')],_0xcc3506[_0x551d('0x30')]);_0x42e45e[_0x551d('0x33')]=_[_0x551d('0x32')](_0xcc3506[_0x551d('0x2e')],qs[_0x551d('0x34')](_0x57f3b0[_0x551d('0x30')][_0x551d('0x34')]));_0x42e45e['attributes']=_0x42e45e[_0x551d('0x33')][_0x551d('0x35')]?_0x42e45e['attributes']:_0xcc3506[_0x551d('0x2e')];if(!_0x57f3b0[_0x551d('0x30')][_0x551d('0x36')](_0x551d('0x37'))){_0x42e45e['limit']=qs['limit'](_0x57f3b0[_0x551d('0x30')][_0x551d('0x1d')]);_0x42e45e['offset']=qs['offset'](_0x57f3b0[_0x551d('0x30')][_0x551d('0x1b')]);}_0x42e45e[_0x551d('0x38')]=qs[_0x551d('0x39')](_0x57f3b0[_0x551d('0x30')][_0x551d('0x39')]);_0x42e45e[_0x551d('0x3a')]=qs[_0x551d('0x31')](_[_0x551d('0x3b')](_0x57f3b0['query'],_0xcc3506[_0x551d('0x31')]),_0x21d9ec);if(_0x57f3b0[_0x551d('0x30')][_0x551d('0x3c')]){_0x42e45e['where']=_['merge'](_0x42e45e[_0x551d('0x3a')],{'$or':_[_0x551d('0x2f')](_0x21d9ec,function(_0xbb96a6){if(_0xbb96a6[_0x551d('0x2c')]!==_0x551d('0x3d')){var _0x34194d={};_0x34194d[_0xbb96a6[_0x551d('0x27')]]={'$like':'%'+_0x57f3b0[_0x551d('0x30')][_0x551d('0x3c')]+'%'};return _0x34194d;}})});}_0x42e45e=_['merge']({},_0x42e45e,_0x57f3b0[_0x551d('0x3e')]);var _0x3216de={'where':_0x42e45e[_0x551d('0x3a')]};return db['Automation']['count'](_0x3216de)[_0x551d('0x24')](function(_0x6adef5){_0x2b35eb[_0x551d('0x1e')]=_0x6adef5;if(_0x57f3b0[_0x551d('0x30')][_0x551d('0x3f')]){_0x42e45e['include']=[{'all':!![]}];}return db[_0x551d('0x2a')]['findAll'](_0x42e45e);})[_0x551d('0x24')](function(_0x126d7f){_0x2b35eb[_0x551d('0x40')]=_0x126d7f;return _0x2b35eb;})[_0x551d('0x24')](respondWithFilteredResult(_0xfc8730,_0x42e45e))[_0x551d('0x41')](handleError(_0xfc8730,null));};exports[_0x551d('0x42')]=function(_0x226a3d,_0x2e99a1){var _0x4540fb={'raw':![],'where':{'id':_0x226a3d[_0x551d('0x43')]['id']}},_0x366d7f={};_0x366d7f[_0x551d('0x2e')]=_[_0x551d('0x44')](db[_0x551d('0x2a')][_0x551d('0x45')]);_0x366d7f['query']=_[_0x551d('0x44')](_0x226a3d[_0x551d('0x30')]);_0x366d7f[_0x551d('0x31')]=_['intersection'](_0x366d7f['model'],_0x366d7f['query']);_0x4540fb['attributes']=_[_0x551d('0x32')](_0x366d7f[_0x551d('0x2e')],qs['fields'](_0x226a3d[_0x551d('0x30')][_0x551d('0x34')]));_0x4540fb[_0x551d('0x33')]=_0x4540fb[_0x551d('0x33')]['length']?_0x4540fb['attributes']:_0x366d7f[_0x551d('0x2e')];if(_0x226a3d[_0x551d('0x30')][_0x551d('0x3f')]){_0x4540fb[_0x551d('0x46')]=[{'all':!![]}];}_0x4540fb=_[_0x551d('0x47')]({},_0x4540fb,_0x226a3d['options']);return db[_0x551d('0x2a')][_0x551d('0x48')](_0x4540fb)[_0x551d('0x24')](handleEntityNotFound(_0x2e99a1,null))[_0x551d('0x24')](respondWithResult(_0x2e99a1,null))[_0x551d('0x41')](handleError(_0x2e99a1,null));};exports[_0x551d('0x49')]=function(_0x515909,_0x3ad8e4){return db[_0x551d('0x2a')][_0x551d('0x49')](_0x515909[_0x551d('0x4a')],{})['then'](respondWithResult(_0x3ad8e4,0xc9))['catch'](handleError(_0x3ad8e4,null));};exports[_0x551d('0x22')]=function(_0x3761b7,_0x863790){if(_0x3761b7[_0x551d('0x4a')]['id']){delete _0x3761b7['body']['id'];}return db[_0x551d('0x2a')][_0x551d('0x48')]({'where':{'id':_0x3761b7[_0x551d('0x43')]['id']}})['then'](handleEntityNotFound(_0x863790,null))[_0x551d('0x24')](saveUpdates(_0x3761b7[_0x551d('0x4a')],null))[_0x551d('0x24')](respondWithResult(_0x863790,null))[_0x551d('0x41')](handleError(_0x863790,null));};exports[_0x551d('0x23')]=function(_0x5afe7f,_0x46d6ed){return db[_0x551d('0x2a')]['find']({'where':{'id':_0x5afe7f[_0x551d('0x43')]['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x46d6ed,null))['then'](removeEntity(_0x46d6ed,null))[_0x551d('0x41')](handleError(_0x46d6ed,null));};exports[_0x551d('0x4b')]=function(_0x404023,_0x148d59,_0x2ae503){return db[_0x551d('0x4c')][_0x551d('0x48')]({'where':{'id':_0x404023[_0x551d('0x43')]['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x148d59,null))[_0x551d('0x24')](function(_0x44dfb4){if(_0x44dfb4){return _0x44dfb4[_0x551d('0x4b')](_0x404023[_0x551d('0x4a')][_0x551d('0x4d')],_[_0x551d('0x4e')](_0x404023[_0x551d('0x4a')],['ids','id'])||{});}})[_0x551d('0x24')](respondWithResult(_0x148d59,null))['catch'](handleError(_0x148d59,null));};exports['getConditions']=function(_0x295237,_0x30ee51,_0x1334e7){var _0x4f33b8={};var _0x528c7f={};var _0xeacefa;var _0x1bfece;return db[_0x551d('0x2a')][_0x551d('0x4f')]({'where':{'id':_0x295237['params']['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x30ee51,null))[_0x551d('0x24')](function(_0xea6b1f){if(_0xea6b1f){_0xeacefa=_0xea6b1f;_0x528c7f[_0x551d('0x2e')]=_[_0x551d('0x44')](db[_0x551d('0x4c')]['rawAttributes']);_0x528c7f['query']=_[_0x551d('0x44')](_0x295237[_0x551d('0x30')]);_0x528c7f[_0x551d('0x31')]=_['intersection'](_0x528c7f[_0x551d('0x2e')],_0x528c7f[_0x551d('0x30')]);_0x4f33b8[_0x551d('0x33')]=_['intersection'](_0x528c7f[_0x551d('0x2e')],qs[_0x551d('0x34')](_0x295237[_0x551d('0x30')][_0x551d('0x34')]));_0x4f33b8[_0x551d('0x33')]=_0x4f33b8['attributes'][_0x551d('0x35')]?_0x4f33b8[_0x551d('0x33')]:_0x528c7f[_0x551d('0x2e')];_0x4f33b8[_0x551d('0x38')]=qs['sort'](_0x295237[_0x551d('0x30')][_0x551d('0x39')]);_0x4f33b8[_0x551d('0x3a')]=qs[_0x551d('0x31')](_[_0x551d('0x3b')](_0x295237[_0x551d('0x30')],_0x528c7f[_0x551d('0x31')]));if(_0x295237[_0x551d('0x30')][_0x551d('0x3c')]){_0x4f33b8['where']=_[_0x551d('0x47')](_0x4f33b8[_0x551d('0x3a')],{'$or':_[_0x551d('0x2f')](_0x4f33b8[_0x551d('0x33')],function(_0x52628f){var _0x69ebfa={};_0x69ebfa[_0x52628f]={'$like':'%'+_0x295237[_0x551d('0x30')][_0x551d('0x3c')]+'%'};return _0x69ebfa;})});}_0x4f33b8=_[_0x551d('0x47')]({},_0x4f33b8,_0x295237['options']);return _0xeacefa[_0x551d('0x50')](_0x4f33b8);}})[_0x551d('0x24')](function(_0x1d1fd7){if(_0x1d1fd7){_0x1bfece=_0x1d1fd7['length'];if(!_0x295237['query'][_0x551d('0x36')]('nolimit')){_0x4f33b8['limit']=qs[_0x551d('0x1d')](_0x295237[_0x551d('0x30')][_0x551d('0x1d')]);_0x4f33b8['offset']=qs[_0x551d('0x1b')](_0x295237[_0x551d('0x30')]['offset']);}return _0xeacefa[_0x551d('0x50')](_0x4f33b8);}})[_0x551d('0x24')](function(_0x443187){if(_0x443187){return _0x443187?{'count':_0x1bfece,'rows':_0x443187}:null;}})[_0x551d('0x24')](respondWithResult(_0x30ee51,null))[_0x551d('0x41')](handleError(_0x30ee51,null));};exports[_0x551d('0x51')]=function(_0x9dfe2b,_0x200144,_0x247e70){return db[_0x551d('0x52')][_0x551d('0x48')]({'where':{'id':_0x9dfe2b[_0x551d('0x43')]['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x200144,null))[_0x551d('0x24')](function(_0x44df17){if(_0x44df17){return _0x44df17['addActions'](_0x9dfe2b[_0x551d('0x4a')][_0x551d('0x4d')],_[_0x551d('0x4e')](_0x9dfe2b[_0x551d('0x4a')],[_0x551d('0x4d'),'id'])||{});}})['then'](respondWithResult(_0x200144,null))[_0x551d('0x41')](handleError(_0x200144,null));};exports['getActions']=function(_0x2fb303,_0x2e2710,_0x37a53b){var _0x3cc9c9={};var _0x6fddc0={};var _0x372eb2;var _0x58ada0;return db[_0x551d('0x2a')][_0x551d('0x4f')]({'where':{'id':_0x2fb303[_0x551d('0x43')]['id']}})['then'](handleEntityNotFound(_0x2e2710,null))['then'](function(_0x3b021f){if(_0x3b021f){_0x372eb2=_0x3b021f;_0x6fddc0[_0x551d('0x2e')]=_[_0x551d('0x44')](db[_0x551d('0x52')][_0x551d('0x45')]);_0x6fddc0[_0x551d('0x30')]=_[_0x551d('0x44')](_0x2fb303[_0x551d('0x30')]);_0x6fddc0['filters']=_[_0x551d('0x32')](_0x6fddc0[_0x551d('0x2e')],_0x6fddc0[_0x551d('0x30')]);_0x3cc9c9[_0x551d('0x33')]=_['intersection'](_0x6fddc0[_0x551d('0x2e')],qs[_0x551d('0x34')](_0x2fb303['query']['fields']));_0x3cc9c9[_0x551d('0x33')]=_0x3cc9c9[_0x551d('0x33')]['length']?_0x3cc9c9[_0x551d('0x33')]:_0x6fddc0['model'];_0x3cc9c9['order']=qs[_0x551d('0x39')](_0x2fb303[_0x551d('0x30')][_0x551d('0x39')]);_0x3cc9c9[_0x551d('0x3a')]=qs[_0x551d('0x31')](_['pick'](_0x2fb303[_0x551d('0x30')],_0x6fddc0['filters']));if(_0x2fb303['query'][_0x551d('0x3c')]){_0x3cc9c9[_0x551d('0x3a')]=_[_0x551d('0x47')](_0x3cc9c9['where'],{'$or':_[_0x551d('0x2f')](_0x3cc9c9[_0x551d('0x33')],function(_0x21dbaf){var _0x4cdffe={};_0x4cdffe[_0x21dbaf]={'$like':'%'+_0x2fb303[_0x551d('0x30')][_0x551d('0x3c')]+'%'};return _0x4cdffe;})});}_0x3cc9c9=_[_0x551d('0x47')]({},_0x3cc9c9,_0x2fb303['options']);return _0x372eb2[_0x551d('0x53')](_0x3cc9c9);}})[_0x551d('0x24')](function(_0x5b1ac8){if(_0x5b1ac8){_0x58ada0=_0x5b1ac8[_0x551d('0x35')];if(!_0x2fb303['query'][_0x551d('0x36')]('nolimit')){_0x3cc9c9[_0x551d('0x1d')]=qs[_0x551d('0x1d')](_0x2fb303['query']['limit']);_0x3cc9c9[_0x551d('0x1b')]=qs[_0x551d('0x1b')](_0x2fb303['query'][_0x551d('0x1b')]);}return _0x372eb2[_0x551d('0x53')](_0x3cc9c9);}})['then'](function(_0x5eb07){if(_0x5eb07){return _0x5eb07?{'count':_0x58ada0,'rows':_0x5eb07}:null;}})['then'](respondWithResult(_0x2e2710,null))[_0x551d('0x41')](handleError(_0x2e2710,null));};
\ No newline at end of file
index c473c9a..d65fb93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x739d=['../../config/environment','./automation.attributes','exports','define','lodash','util','bluebird','request-promise','path'];(function(_0x73740d,_0x49a324){var _0x3eecfe=function(_0x21a628){while(--_0x21a628){_0x73740d['push'](_0x73740d['shift']());}};_0x3eecfe(++_0x49a324);}(_0x739d,0x100));var _0xd739=function(_0x46ed8c,_0x3c606f){_0x46ed8c=_0x46ed8c-0x0;var _0x4d83f9=_0x739d[_0x46ed8c];return _0x4d83f9;};'use strict';var _=require(_0xd739('0x0'));var util=require(_0xd739('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xd739('0x2'));var rp=require(_0xd739('0x3'));var fs=require('fs');var path=require(_0xd739('0x4'));var rimraf=require('rimraf');var config=require(_0xd739('0x5'));var attributes=require(_0xd739('0x6'));module[_0xd739('0x7')]=function(_0x374ef0,_0x5375c3){return _0x374ef0[_0xd739('0x8')]('Automation',attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8367=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations'];(function(_0x46bf1c,_0x4aafb3){var _0x1c51cb=function(_0x8e9e18){while(--_0x8e9e18){_0x46bf1c['push'](_0x46bf1c['shift']());}};_0x1c51cb(++_0x4aafb3);}(_0x8367,0x90));var _0x7836=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0x8367[_0x2cf2e9];return _0xd3670d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7836('0x0'))(_0x7836('0x1'));var moment=require('moment');var BPromise=require(_0x7836('0x2'));var rp=require(_0x7836('0x3'));var fs=require('fs');var path=require(_0x7836('0x4'));var rimraf=require(_0x7836('0x5'));var config=require(_0x7836('0x6'));var attributes=require(_0x7836('0x7'));module[_0x7836('0x8')]=function(_0x251549,_0x331b96){return _0x251549[_0x7836('0x9')](_0x7836('0xa'),attributes,{'tableName':_0x7836('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a12e286..a9025cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57b7=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Automation,\x20%s,\x20%s','debug','request\x20sent','error','message','result','catch'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x57b7,0x160));var _0x757b=function(_0x5eeee0,_0x49c455){_0x5eeee0=_0x5eeee0-0x0;var _0x54f8fc=_0x57b7[_0x5eeee0];return _0x54f8fc;};'use strict';var _=require(_0x757b('0x0'));var util=require(_0x757b('0x1'));var moment=require(_0x757b('0x2'));var BPromise=require(_0x757b('0x3'));var rs=require(_0x757b('0x4'));var fs=require('fs');var Redis=require(_0x757b('0x5'));var db=require(_0x757b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x757b('0x7'))(_0x757b('0x8'));var config=require(_0x757b('0x9'));var jayson=require(_0x757b('0xa'));var client=jayson['client'][_0x757b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x8528c7,_0x36c83c,_0x224503){return new BPromise(function(_0x18b130,_0x1845cf){return client[_0x757b('0xc')](_0x8528c7,_0x224503)[_0x757b('0xd')](function(_0x53a1ce){logger[_0x757b('0xe')](_0x757b('0xf'),_0x36c83c,'request\x20sent');logger[_0x757b('0x10')]('Automation,\x20%s,\x20%s,\x20%s',_0x36c83c,_0x757b('0x11'),JSON['stringify'](_0x53a1ce));if(_0x53a1ce[_0x757b('0x12')]){if(_0x53a1ce[_0x757b('0x12')]['code']===0x1f4){logger[_0x757b('0x12')](_0x757b('0xf'),_0x36c83c,_0x53a1ce['error'][_0x757b('0x13')]);return _0x1845cf(_0x53a1ce['error'][_0x757b('0x13')]);}logger[_0x757b('0x12')]('Automation,\x20%s,\x20%s',_0x36c83c,_0x53a1ce[_0x757b('0x12')]['message']);return _0x18b130(_0x53a1ce[_0x757b('0x12')][_0x757b('0x13')]);}else{logger[_0x757b('0xe')]('Automation,\x20%s,\x20%s',_0x36c83c,_0x757b('0x11'));_0x18b130(_0x53a1ce[_0x757b('0x14')]['message']);}})[_0x757b('0x15')](function(_0x493286){logger['error'](_0x757b('0xf'),_0x36c83c,_0x493286);_0x1845cf(_0x493286);});});}
\ No newline at end of file
+var _0xc933=['Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x3624d7,_0x2448d0){var _0x25d064=function(_0x5dce00){while(--_0x5dce00){_0x3624d7['push'](_0x3624d7['shift']());}};_0x25d064(++_0x2448d0);}(_0xc933,0xf9));var _0x3c93=function(_0x486064,_0x2c2d50){_0x486064=_0x486064-0x0;var _0x468c82=_0xc933[_0x486064];return _0x468c82;};'use strict';var _=require(_0x3c93('0x0'));var util=require(_0x3c93('0x1'));var moment=require(_0x3c93('0x2'));var BPromise=require(_0x3c93('0x3'));var rs=require(_0x3c93('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3c93('0x5'))['db'];var utils=require(_0x3c93('0x6'));var logger=require(_0x3c93('0x7'))(_0x3c93('0x8'));var config=require(_0x3c93('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3c93('0xa')][_0x3c93('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52c22c,_0x411bb7,_0x489139){return new BPromise(function(_0x1b505a,_0x2ead14){return client[_0x3c93('0xc')](_0x52c22c,_0x489139)[_0x3c93('0xd')](function(_0x46f9e8){logger[_0x3c93('0xe')]('Automation,\x20%s,\x20%s',_0x411bb7,'request\x20sent');logger['debug'](_0x3c93('0xf'),_0x411bb7,_0x3c93('0x10'),JSON[_0x3c93('0x11')](_0x46f9e8));if(_0x46f9e8[_0x3c93('0x12')]){if(_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x13')]===0x1f4){logger[_0x3c93('0x12')](_0x3c93('0x14'),_0x411bb7,_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x15')]);return _0x2ead14(_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x15')]);}logger[_0x3c93('0x12')](_0x3c93('0x14'),_0x411bb7,_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x15')]);return _0x1b505a(_0x46f9e8[_0x3c93('0x12')]['message']);}else{logger['info'](_0x3c93('0x14'),_0x411bb7,_0x3c93('0x10'));_0x1b505a(_0x46f9e8[_0x3c93('0x16')][_0x3c93('0x15')]);}})[_0x3c93('0x17')](function(_0x8b3fdc){logger[_0x3c93('0x12')]('Automation,\x20%s,\x20%s',_0x411bb7,_0x8b3fdc);_0x2ead14(_0x8b3fdc);});});}
\ No newline at end of file
index 7997bd8..8185c44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fec=['create','/:id/conditions','addConditions','addActions','put','delete','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./automation.controller','index','get','/:id','isAuthenticated','getConditions','getActions','post'];(function(_0x540e9d,_0x5a4d9a){var _0x58641e=function(_0x204357){while(--_0x204357){_0x540e9d['push'](_0x540e9d['shift']());}};_0x58641e(++_0x5a4d9a);}(_0x1fec,0x1ea));var _0xc1fe=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1fec[_0x17d9e3];return _0x14192d;};'use strict';var multer=require('multer');var util=require(_0xc1fe('0x0'));var path=require(_0xc1fe('0x1'));var timeout=require(_0xc1fe('0x2'));var express=require(_0xc1fe('0x3'));var router=express[_0xc1fe('0x4')]();var fs_extra=require(_0xc1fe('0x5'));var auth=require(_0xc1fe('0x6'));var interaction=require(_0xc1fe('0x7'));var config=require('../../config/environment');var controller=require(_0xc1fe('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xc1fe('0x9')]);router[_0xc1fe('0xa')](_0xc1fe('0xb'),auth[_0xc1fe('0xc')](),controller['show']);router[_0xc1fe('0xa')]('/:id/conditions',auth['isAuthenticated'](),controller[_0xc1fe('0xd')]);router[_0xc1fe('0xa')]('/:id/actions',auth[_0xc1fe('0xc')](),controller[_0xc1fe('0xe')]);router[_0xc1fe('0xf')]('/',auth[_0xc1fe('0xc')](),controller[_0xc1fe('0x10')]);router['post'](_0xc1fe('0x11'),auth['isAuthenticated'](),controller[_0xc1fe('0x12')]);router[_0xc1fe('0xf')]('/:id/actions',auth['isAuthenticated'](),controller[_0xc1fe('0x13')]);router[_0xc1fe('0x14')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xc1fe('0x15')](_0xc1fe('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf442=['put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','show','/:id/conditions','getConditions','/:id/actions','getActions','post','addConditions','addActions'];(function(_0x3f25db,_0x1d3686){var _0x54f29d=function(_0x2963bb){while(--_0x2963bb){_0x3f25db['push'](_0x3f25db['shift']());}};_0x54f29d(++_0x1d3686);}(_0xf442,0xbc));var _0x2f44=function(_0x4a924e,_0x1839ff){_0x4a924e=_0x4a924e-0x0;var _0x142474=_0xf442[_0x4a924e];return _0x142474;};'use strict';var multer=require(_0x2f44('0x0'));var util=require(_0x2f44('0x1'));var path=require(_0x2f44('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f44('0x3'));var router=express[_0x2f44('0x4')]();var fs_extra=require(_0x2f44('0x5'));var auth=require(_0x2f44('0x6'));var interaction=require(_0x2f44('0x7'));var config=require(_0x2f44('0x8'));var controller=require(_0x2f44('0x9'));router[_0x2f44('0xa')]('/',auth[_0x2f44('0xb')](),controller['index']);router[_0x2f44('0xa')]('/:id',auth[_0x2f44('0xb')](),controller[_0x2f44('0xc')]);router[_0x2f44('0xa')](_0x2f44('0xd'),auth[_0x2f44('0xb')](),controller[_0x2f44('0xe')]);router[_0x2f44('0xa')](_0x2f44('0xf'),auth[_0x2f44('0xb')](),controller[_0x2f44('0x10')]);router['post']('/',auth[_0x2f44('0xb')](),controller['create']);router[_0x2f44('0x11')]('/:id/conditions',auth[_0x2f44('0xb')](),controller[_0x2f44('0x12')]);router[_0x2f44('0x11')]('/:id/actions',auth[_0x2f44('0xb')](),controller[_0x2f44('0x13')]);router[_0x2f44('0x14')](_0x2f44('0x15'),auth[_0x2f44('0xb')](),controller[_0x2f44('0x16')]);router[_0x2f44('0x17')](_0x2f44('0x15'),auth[_0x2f44('0xb')](),controller[_0x2f44('0x18')]);module[_0x2f44('0x19')]=router;
\ No newline at end of file
index eb09d3f..05cbb48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe52a=['ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','ENUM','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name'];(function(_0x51a20,_0x195290){var _0x18dbbd=function(_0x522eac){while(--_0x522eac){_0x51a20['push'](_0x51a20['shift']());}};_0x18dbbd(++_0x195290);}(_0xe52a,0x94));var _0xae52=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xe52a[_0x1ac595];return _0x455fff;};'use strict';var Sequelize=require(_0xae52('0x0'));module[_0xae52('0x1')]={'name':{'type':Sequelize[_0xae52('0x2')],'unique':_0xae52('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0xae52('0x4')),'allowNull':![],'defaultValue':_0xae52('0x4')},'description':{'type':Sequelize[_0xae52('0x2')]},'active':{'type':Sequelize[_0xae52('0x5')],'defaultValue':0x0,'comment':_0xae52('0x6')},'limitCalls':{'type':Sequelize[_0xae52('0x7')](0x4)[_0xae52('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xae52('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xae52('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xae52('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xae52('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xae52('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xae52('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xae52('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0xae52('0x7')](0x5)[_0xae52('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)[_0xae52('0x8')],'defaultValue':0x3,'comment':_0xae52('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xae52('0x7')](0x5)[_0xae52('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xae52('0x10')},'dialTimezone':{'type':Sequelize[_0xae52('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xae52('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xae52('0x11')](_0xae52('0x12'),_0xae52('0x13'),'onlyIfOpen'),'defaultValue':_0xae52('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xae52('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0xae52('0x7')](0x9)[_0xae52('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xae52('0x15')},'dialAMDGreeting':{'type':Sequelize[_0xae52('0x7')](0x9)[_0xae52('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xae52('0x7')](0x9)[_0xae52('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xae52('0x7')](0x9)[_0xae52('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xae52('0x7')](0x9)[_0xae52('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xae52('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xae52('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xae52('0x7')](0x9)[_0xae52('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xae52('0x7')](0x5)[_0xae52('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xae52('0x17')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xae52('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xae52('0x18')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xae52('0x19'),_0xae52('0x1a')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xae52('0x7')](0x3)[_0xae52('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xae52('0x1b')},'dialCutDigit':{'type':Sequelize[_0xae52('0x7')](0x3)[_0xae52('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)[_0xae52('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xae52('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xae52('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0x1d')},'dialDropMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)[_0xae52('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xae52('0x1e')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xae52('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xae52('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xae52('0x7')](0x5)[_0xae52('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)[_0xae52('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xae52('0x22')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0x23')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xae52('0x7')](0x3)[_0xae52('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xae52('0x24')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xae52('0x7')](0x5)[_0xae52('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xae52('0x25')}};
\ No newline at end of file
+var _0x202d=['Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','name','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','onlyIfOpen','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x2e03ec,_0x4867f7){var _0x2eb7e5=function(_0x3c5cfe){while(--_0x3c5cfe){_0x2e03ec['push'](_0x2e03ec['shift']());}};_0x2eb7e5(++_0x4867f7);}(_0x202d,0x16d));var _0xd202=function(_0x18986d,_0x71d595){_0x18986d=_0x18986d-0x0;var _0x268515=_0x202d[_0x18986d];return _0x268515;};'use strict';var Sequelize=require('sequelize');module[_0xd202('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xd202('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xd202('0x2')]('ivr'),'allowNull':![],'defaultValue':_0xd202('0x3')},'description':{'type':Sequelize[_0xd202('0x4')]},'active':{'type':Sequelize[_0xd202('0x5')],'defaultValue':0x0,'comment':_0xd202('0x6')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xd202('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xd202('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xd202('0x4')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xd202('0x4')]},'dialOriginateTimeout':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'comment':_0xd202('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xd202('0xe')},'dialTimezone':{'type':Sequelize[_0xd202('0x4')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xd202('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0xd202('0x2')]('always','never',_0xd202('0x10')),'defaultValue':_0xd202('0x11')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xd202('0x12')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xd202('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xd202('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xd202('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd202('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xd202('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xd202('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xd202('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd202('0x19')},'dialOrderByScheduledAt':{'type':Sequelize[_0xd202('0x2')](_0xd202('0x1a'),_0xd202('0x1b')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xd202('0x4')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xd202('0x1c')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xd202('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x23')}};
\ No newline at end of file
index 6007383..78cfeec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1edc=['order','CampaignId','rows','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','CmListId','toString','NOW()','from','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','CampaignId\x20=\x20?','cm_hopper','into','cm_contacts','COALESCE(phone,\x27\x27)','all','removeLists','getBlackLists','addBlackLists','deletedAt\x20IS\x20NULL','push','sequelize','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','undefined','limit','count','offset','status','Content-Range','apply','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','error','name','index','map','Campaign','rawAttributes','fieldName','type','keys','query','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','includeAll','findAll','catch','show','params','length','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','body','getHoppers','findOne','CmHopper'];(function(_0x22dac7,_0x45d32a){var _0x3e6cfa=function(_0x4c2e9d){while(--_0x4c2e9d){_0x22dac7['push'](_0x22dac7['shift']());}};_0x3e6cfa(++_0x45d32a);}(_0x1edc,0x135));var _0xc1ed=function(_0x51cbc6,_0x56410c){_0x51cbc6=_0x51cbc6-0x0;var _0x2dc19c=_0x1edc[_0x51cbc6];return _0x2dc19c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc1ed('0x0'));var zipdir=require(_0xc1ed('0x1'));var jsonpatch=require(_0xc1ed('0x2'));var rp=require(_0xc1ed('0x3'));var moment=require(_0xc1ed('0x4'));var BPromise=require(_0xc1ed('0x5'));var Mustache=require(_0xc1ed('0x6'));var util=require(_0xc1ed('0x7'));var path=require(_0xc1ed('0x8'));var sox=require(_0xc1ed('0x9'));var csv=require('to-csv');var ejs=require(_0xc1ed('0xa'));var fs=require('fs');var fs_extra=require(_0xc1ed('0xb'));var _=require('lodash');var squel=require(_0xc1ed('0xc'));var crypto=require(_0xc1ed('0xd'));var jsforce=require(_0xc1ed('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc1ed('0xf'));var querystring=require(_0xc1ed('0x10'));var Papa=require(_0xc1ed('0x11'));var Redis=require(_0xc1ed('0x12'));var authService=require(_0xc1ed('0x13'));var qs=require(_0xc1ed('0x14'));var as=require(_0xc1ed('0x15'));var hardwareService=require(_0xc1ed('0x16'));var logger=require(_0xc1ed('0x17'))(_0xc1ed('0x18'));var utils=require(_0xc1ed('0x19'));var config=require(_0xc1ed('0x1a'));var licenseUtil=require(_0xc1ed('0x1b'));var db=require(_0xc1ed('0x1c'))['db'];function respondWithStatusCode(_0x5bfe81,_0x5052ca){_0x5052ca=_0x5052ca||0xcc;return function(_0x357cb1){if(_0x357cb1){return _0x5bfe81[_0xc1ed('0x1d')](_0x5052ca);}return _0x5bfe81['status'](_0x5052ca)['end']();};}function respondWithResult(_0x1c87d9,_0x47b779){_0x47b779=_0x47b779||0xc8;return function(_0x5b0fc6){if(_0x5b0fc6){return _0x1c87d9['status'](_0x47b779)[_0xc1ed('0x1e')](_0x5b0fc6);}};}function respondWithFilteredResult(_0x3cfa24,_0x14bf29){return function(_0x245b49){if(_0x245b49){var _0x2952de=typeof _0x14bf29['offset']===_0xc1ed('0x1f')&&typeof _0x14bf29[_0xc1ed('0x20')]===_0xc1ed('0x1f');var _0x3ebee3=_0x245b49[_0xc1ed('0x21')];var _0x5babbd=_0x2952de?0x0:_0x14bf29[_0xc1ed('0x22')];var _0x265105=_0x2952de?_0x245b49[_0xc1ed('0x21')]:_0x14bf29[_0xc1ed('0x22')]+_0x14bf29[_0xc1ed('0x20')];var _0x1b2a69;if(_0x265105>=_0x3ebee3){_0x265105=_0x3ebee3;_0x1b2a69=0xc8;}else{_0x1b2a69=0xce;}_0x3cfa24[_0xc1ed('0x23')](_0x1b2a69);return _0x3cfa24['set'](_0xc1ed('0x24'),_0x5babbd+'-'+_0x265105+'/'+_0x3ebee3)[_0xc1ed('0x1e')](_0x245b49);}return null;};}function patchUpdates(_0x2b2cb9){return function(_0xf617fc){try{jsonpatch[_0xc1ed('0x25')](_0xf617fc,_0x2b2cb9,!![]);}catch(_0x3ac073){return BPromise['reject'](_0x3ac073);}return _0xf617fc[_0xc1ed('0x26')]();};}function saveUpdates(_0x44bff,_0xd64e2d){return function(_0x4941a3){if(_0x4941a3){return _0x4941a3[_0xc1ed('0x27')](_0x44bff)[_0xc1ed('0x28')](function(_0x3559d7){return _0x3559d7;});}return null;};}function removeEntity(_0x3e6132,_0x13acef){return function(_0x4d77bd){if(_0x4d77bd){return _0x4d77bd[_0xc1ed('0x29')]()[_0xc1ed('0x28')](function(){var _0x59f0ec=_0x4d77bd[_0xc1ed('0x2a')]({'plain':!![]});var _0x2a9610=_0xc1ed('0x2b');return db[_0xc1ed('0x2c')][_0xc1ed('0x29')]({'where':{'type':_0x2a9610,'resourceId':_0x59f0ec['id']}})[_0xc1ed('0x28')](function(){return _0x4d77bd;});})['then'](function(){_0x3e6132[_0xc1ed('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3bfd39,_0x4f6f8f){return function(_0x2c53fb){if(!_0x2c53fb){_0x3bfd39[_0xc1ed('0x1d')](0x194);}return _0x2c53fb;};}function handleError(_0x5c74d5,_0x27127a){_0x27127a=_0x27127a||0x1f4;return function(_0x1bf98e){logger[_0xc1ed('0x2d')](_0x1bf98e['stack']);if(_0x1bf98e[_0xc1ed('0x2e')]){delete _0x1bf98e[_0xc1ed('0x2e')];}_0x5c74d5[_0xc1ed('0x23')](_0x27127a)['send'](_0x1bf98e);};}exports[_0xc1ed('0x2f')]=function(_0x49ba26,_0x3d99c4){var _0x4b31a7={},_0x5a18b5={},_0x287a54={'count':0x0,'rows':[]};var _0x42134c=_[_0xc1ed('0x30')](db[_0xc1ed('0x31')][_0xc1ed('0x32')],function(_0x5464d3){return{'name':_0x5464d3[_0xc1ed('0x33')],'type':_0x5464d3[_0xc1ed('0x34')]['key']};});_0x5a18b5['model']=_[_0xc1ed('0x30')](_0x42134c,_0xc1ed('0x2e'));_0x5a18b5['query']=_[_0xc1ed('0x35')](_0x49ba26[_0xc1ed('0x36')]);_0x5a18b5[_0xc1ed('0x37')]=_[_0xc1ed('0x38')](_0x5a18b5['model'],_0x5a18b5[_0xc1ed('0x36')]);_0x4b31a7[_0xc1ed('0x39')]=_[_0xc1ed('0x38')](_0x5a18b5[_0xc1ed('0x3a')],qs[_0xc1ed('0x3b')](_0x49ba26['query'][_0xc1ed('0x3b')]));_0x4b31a7[_0xc1ed('0x39')]=_0x4b31a7['attributes']['length']?_0x4b31a7[_0xc1ed('0x39')]:_0x5a18b5[_0xc1ed('0x3a')];if(!_0x49ba26['query'][_0xc1ed('0x3c')](_0xc1ed('0x3d'))){_0x4b31a7[_0xc1ed('0x20')]=qs[_0xc1ed('0x20')](_0x49ba26[_0xc1ed('0x36')][_0xc1ed('0x20')]);_0x4b31a7[_0xc1ed('0x22')]=qs[_0xc1ed('0x22')](_0x49ba26[_0xc1ed('0x36')][_0xc1ed('0x22')]);}_0x4b31a7['order']=qs[_0xc1ed('0x3e')](_0x49ba26[_0xc1ed('0x36')][_0xc1ed('0x3e')]);_0x4b31a7[_0xc1ed('0x3f')]=qs[_0xc1ed('0x37')](_[_0xc1ed('0x40')](_0x49ba26[_0xc1ed('0x36')],_0x5a18b5['filters']),_0x42134c);if(_0x49ba26[_0xc1ed('0x36')][_0xc1ed('0x41')]){_0x4b31a7[_0xc1ed('0x3f')]=_[_0xc1ed('0x42')](_0x4b31a7[_0xc1ed('0x3f')],{'$or':_[_0xc1ed('0x30')](_0x42134c,function(_0x2a4c12){if(_0x2a4c12[_0xc1ed('0x34')]!=='VIRTUAL'){var _0x122d06={};_0x122d06[_0x2a4c12[_0xc1ed('0x2e')]]={'$like':'%'+_0x49ba26[_0xc1ed('0x36')][_0xc1ed('0x41')]+'%'};return _0x122d06;}})});}_0x4b31a7=_[_0xc1ed('0x42')]({},_0x4b31a7,_0x49ba26['options']);var _0x19924a={'where':_0x4b31a7[_0xc1ed('0x3f')]};return db['Campaign']['count'](_0x19924a)[_0xc1ed('0x28')](function(_0xa421d2){_0x287a54['count']=_0xa421d2;if(_0x49ba26[_0xc1ed('0x36')][_0xc1ed('0x43')]){_0x4b31a7['include']=[{'all':!![]}];}return db[_0xc1ed('0x31')][_0xc1ed('0x44')](_0x4b31a7);})[_0xc1ed('0x28')](function(_0x3f0fb8){_0x287a54['rows']=_0x3f0fb8;return _0x287a54;})['then'](respondWithFilteredResult(_0x3d99c4,_0x4b31a7))[_0xc1ed('0x45')](handleError(_0x3d99c4,null));};exports[_0xc1ed('0x46')]=function(_0x223d16,_0x3f1b3a){var _0x4f791b={'raw':![],'where':{'id':_0x223d16[_0xc1ed('0x47')]['id']}},_0x31f08c={};_0x31f08c[_0xc1ed('0x3a')]=_['keys'](db[_0xc1ed('0x31')][_0xc1ed('0x32')]);_0x31f08c['query']=_[_0xc1ed('0x35')](_0x223d16[_0xc1ed('0x36')]);_0x31f08c[_0xc1ed('0x37')]=_['intersection'](_0x31f08c[_0xc1ed('0x3a')],_0x31f08c[_0xc1ed('0x36')]);_0x4f791b['attributes']=_[_0xc1ed('0x38')](_0x31f08c[_0xc1ed('0x3a')],qs['fields'](_0x223d16[_0xc1ed('0x36')][_0xc1ed('0x3b')]));_0x4f791b[_0xc1ed('0x39')]=_0x4f791b['attributes'][_0xc1ed('0x48')]?_0x4f791b[_0xc1ed('0x39')]:_0x31f08c[_0xc1ed('0x3a')];if(_0x223d16[_0xc1ed('0x36')][_0xc1ed('0x43')]){_0x4f791b[_0xc1ed('0x49')]=[{'all':!![]}];}_0x4f791b=_[_0xc1ed('0x42')]({},_0x4f791b,_0x223d16[_0xc1ed('0x4a')]);return db[_0xc1ed('0x31')][_0xc1ed('0x4b')](_0x4f791b)[_0xc1ed('0x28')](handleEntityNotFound(_0x3f1b3a,null))['then'](respondWithResult(_0x3f1b3a,null))[_0xc1ed('0x45')](handleError(_0x3f1b3a,null));};exports[_0xc1ed('0x4c')]=function(_0x5b5743,_0x5dc1f7){return db[_0xc1ed('0x31')][_0xc1ed('0x4c')](_0x5b5743['body'],{})[_0xc1ed('0x28')](function(_0x55ccda){var _0x4c4e4d=_0x5b5743[_0xc1ed('0x4d')][_0xc1ed('0x2a')]({'plain':!![]});if(!_0x4c4e4d)throw new Error(_0xc1ed('0x4e'));if(_0x4c4e4d[_0xc1ed('0x4f')]==='user'){var _0x5d96b3=_0x55ccda[_0xc1ed('0x2a')]({'plain':!![]});var _0x2846e5=_0xc1ed('0x2b');return db[_0xc1ed('0x50')][_0xc1ed('0x4b')]({'where':{'name':_0x2846e5,'userProfileId':_0x4c4e4d['userProfileId']},'raw':!![]})[_0xc1ed('0x28')](function(_0x29ae3c){if(_0x29ae3c&&_0x29ae3c[_0xc1ed('0x51')]===0x0){return db[_0xc1ed('0x2c')][_0xc1ed('0x4c')]({'name':_0x5d96b3[_0xc1ed('0x2e')],'resourceId':_0x5d96b3['id'],'type':_0x29ae3c[_0xc1ed('0x2e')],'sectionId':_0x29ae3c['id']},{})[_0xc1ed('0x28')](function(){return _0x55ccda;});}else{return _0x55ccda;}})[_0xc1ed('0x45')](function(_0x1fb11d){logger[_0xc1ed('0x2d')](_0xc1ed('0x52'),_0x1fb11d);throw _0x1fb11d;});}return _0x55ccda;})['then'](respondWithResult(_0x5dc1f7,0xc9))[_0xc1ed('0x45')](handleError(_0x5dc1f7,null));};exports['clone']=function(_0x59ced5,_0x13194e){var _0x3c6d26={'where':{'id':_0x59ced5[_0xc1ed('0x47')]['id']}},_0x4d4061={};_0x4d4061['model']=_[_0xc1ed('0x35')](db[_0xc1ed('0x31')][_0xc1ed('0x32')]);_0x3c6d26[_0xc1ed('0x39')]=_['intersection'](_0x4d4061[_0xc1ed('0x3a')],qs[_0xc1ed('0x3b')](_0x59ced5['query']['fields']));_0x3c6d26['attributes']=_0x3c6d26[_0xc1ed('0x39')][_0xc1ed('0x48')]?_0x3c6d26[_0xc1ed('0x39')]:_0x4d4061[_0xc1ed('0x3a')];if(_0x59ced5['query'][_0xc1ed('0x43')]){_0x3c6d26[_0xc1ed('0x49')]=[{'all':!![]}];}_0x3c6d26=_[_0xc1ed('0x42')]({},_0x3c6d26,_0x59ced5[_0xc1ed('0x4a')]);return db[_0xc1ed('0x31')][_0xc1ed('0x4b')](_0x3c6d26)[_0xc1ed('0x28')](handleEntityNotFound(_0x13194e,null))[_0xc1ed('0x28')](function(_0x14520c){if(_0x14520c){var _0x33c886=_0x14520c['get']({'plain':!![]});_0x33c886=qs[_0xc1ed('0x53')](_0x33c886,['id',_0xc1ed('0x54'),_0xc1ed('0x55')]);_0x59ced5[_0xc1ed('0x56')]=_[_0xc1ed('0x53')](_0x59ced5[_0xc1ed('0x56')],['id','createdAt','updatedAt']);return db[_0xc1ed('0x31')][_0xc1ed('0x4c')](_[_0xc1ed('0x42')](_0x33c886,_0x59ced5[_0xc1ed('0x56')]),{'include':_0x59ced5['query'][_0xc1ed('0x43')]?[{'all':!![]}]:undefined})[_0xc1ed('0x28')](function(_0xb1982b){var _0x4adc95=_0x59ced5[_0xc1ed('0x4d')][_0xc1ed('0x2a')]({'plain':!![]});if(!_0x4adc95)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4adc95[_0xc1ed('0x4f')]===_0xc1ed('0x4d')){var _0x209c78=_0xb1982b[_0xc1ed('0x2a')]({'plain':!![]});var _0x564c16=_0xc1ed('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x564c16,'userProfileId':_0x4adc95['userProfileId']},'raw':!![]})[_0xc1ed('0x28')](function(_0x143698){if(_0x143698&&_0x143698[_0xc1ed('0x51')]===0x0){return db[_0xc1ed('0x2c')][_0xc1ed('0x4c')]({'name':_0x209c78[_0xc1ed('0x2e')],'resourceId':_0x209c78['id'],'type':_0x143698[_0xc1ed('0x2e')],'sectionId':_0x143698['id']},{})[_0xc1ed('0x28')](function(){return _0xb1982b;});}else{return _0xb1982b;}})[_0xc1ed('0x45')](function(_0x15da19){logger[_0xc1ed('0x2d')](_0xc1ed('0x52'),_0x15da19);throw _0x15da19;});}return _0xb1982b;});}})[_0xc1ed('0x28')](respondWithResult(_0x13194e,0xc9))[_0xc1ed('0x45')](handleError(_0x13194e,null));};exports[_0xc1ed('0x27')]=function(_0x1e7390,_0x4e4d8e){if(_0x1e7390['body']['id']){delete _0x1e7390[_0xc1ed('0x56')]['id'];}return db[_0xc1ed('0x31')]['find']({'where':{'id':_0x1e7390[_0xc1ed('0x47')]['id']}})[_0xc1ed('0x28')](handleEntityNotFound(_0x4e4d8e,null))[_0xc1ed('0x28')](saveUpdates(_0x1e7390[_0xc1ed('0x56')],null))[_0xc1ed('0x28')](respondWithResult(_0x4e4d8e,null))[_0xc1ed('0x45')](handleError(_0x4e4d8e,null));};exports[_0xc1ed('0x29')]=function(_0x4bda89,_0x29f639){return db[_0xc1ed('0x31')][_0xc1ed('0x4b')]({'where':{'id':_0x4bda89['params']['id']}})[_0xc1ed('0x28')](handleEntityNotFound(_0x29f639,null))[_0xc1ed('0x28')](removeEntity(_0x29f639,null))[_0xc1ed('0x45')](handleError(_0x29f639,null));};exports[_0xc1ed('0x57')]=function(_0x4b3d3d,_0x40c31c,_0x431c27){var _0x518c1c={'raw':!![],'where':{}};var _0x8cb2b8={};var _0x5341cc={'count':0x0,'rows':[]};return db[_0xc1ed('0x31')][_0xc1ed('0x58')]({'where':{'id':_0x4b3d3d[_0xc1ed('0x47')]['id']}})[_0xc1ed('0x28')](handleEntityNotFound(_0x40c31c,null))['then'](function(_0x4e6cf4){if(_0x4e6cf4){_0x8cb2b8[_0xc1ed('0x3a')]=_[_0xc1ed('0x35')](db[_0xc1ed('0x59')][_0xc1ed('0x32')]);_0x8cb2b8[_0xc1ed('0x36')]=_['keys'](_0x4b3d3d[_0xc1ed('0x36')]);_0x8cb2b8[_0xc1ed('0x37')]=_[_0xc1ed('0x38')](_0x8cb2b8[_0xc1ed('0x3a')],_0x8cb2b8[_0xc1ed('0x36')]);_0x518c1c['attributes']=_[_0xc1ed('0x38')](_0x8cb2b8[_0xc1ed('0x3a')],qs['fields'](_0x4b3d3d[_0xc1ed('0x36')][_0xc1ed('0x3b')]));_0x518c1c['attributes']=_0x518c1c[_0xc1ed('0x39')][_0xc1ed('0x48')]?_0x518c1c[_0xc1ed('0x39')]:_0x8cb2b8[_0xc1ed('0x3a')];if(!_0x4b3d3d['query'][_0xc1ed('0x3c')]('nolimit')){_0x518c1c['limit']=qs['limit'](_0x4b3d3d[_0xc1ed('0x36')][_0xc1ed('0x20')]);_0x518c1c[_0xc1ed('0x22')]=qs['offset'](_0x4b3d3d[_0xc1ed('0x36')][_0xc1ed('0x22')]);}_0x518c1c[_0xc1ed('0x5a')]=qs[_0xc1ed('0x3e')](_0x4b3d3d[_0xc1ed('0x36')][_0xc1ed('0x3e')]);_0x518c1c[_0xc1ed('0x3f')]=qs['filters'](_[_0xc1ed('0x40')](_0x4b3d3d[_0xc1ed('0x36')],_0x8cb2b8[_0xc1ed('0x37')]));_0x518c1c[_0xc1ed('0x3f')][_0xc1ed('0x5b')]=_0x4e6cf4['id'];if(_0x4b3d3d[_0xc1ed('0x36')][_0xc1ed('0x41')]){_0x518c1c['where']=_[_0xc1ed('0x42')](_0x518c1c['where'],{'$or':_['map'](_0x518c1c['attributes'],function(_0xec7b84){var _0x385f2c={};_0x385f2c[_0xec7b84]={'$like':'%'+_0x4b3d3d[_0xc1ed('0x36')]['filter']+'%'};return _0x385f2c;})});}_0x518c1c=_[_0xc1ed('0x42')]({},_0x518c1c,_0x4b3d3d[_0xc1ed('0x4a')]);return db[_0xc1ed('0x59')][_0xc1ed('0x21')]({'where':_0x518c1c[_0xc1ed('0x3f')]})['then'](function(_0x3de7b8){_0x5341cc[_0xc1ed('0x21')]=_0x3de7b8;if(_0x4b3d3d['query']['includeAll']){_0x518c1c[_0xc1ed('0x49')]=[{'all':!![]}];}return db[_0xc1ed('0x59')]['findAll'](_0x518c1c);})[_0xc1ed('0x28')](function(_0x21ca68){_0x5341cc[_0xc1ed('0x5c')]=_0x21ca68;return _0x5341cc;});}})[_0xc1ed('0x28')](respondWithFilteredResult(_0x40c31c,_0x518c1c))['catch'](handleError(_0x40c31c,null));};exports[_0xc1ed('0x5d')]=function(_0x536af1,_0xdc1b33,_0x4b8faa){var _0x200a06={'raw':!![],'where':{}};var _0x4a204f={};var _0x1e10c3={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x536af1['params']['id']}})['then'](handleEntityNotFound(_0xdc1b33,null))[_0xc1ed('0x28')](function(_0x4e9bd2){if(_0x4e9bd2){_0x4a204f['model']=_['keys'](db[_0xc1ed('0x5e')][_0xc1ed('0x32')]);_0x4a204f[_0xc1ed('0x36')]=_[_0xc1ed('0x35')](_0x536af1[_0xc1ed('0x36')]);_0x4a204f['filters']=_[_0xc1ed('0x38')](_0x4a204f['model'],_0x4a204f[_0xc1ed('0x36')]);_0x200a06[_0xc1ed('0x39')]=_[_0xc1ed('0x38')](_0x4a204f[_0xc1ed('0x3a')],qs[_0xc1ed('0x3b')](_0x536af1[_0xc1ed('0x36')][_0xc1ed('0x3b')]));_0x200a06[_0xc1ed('0x39')]=_0x200a06[_0xc1ed('0x39')]['length']?_0x200a06[_0xc1ed('0x39')]:_0x4a204f[_0xc1ed('0x3a')];if(!_0x536af1[_0xc1ed('0x36')][_0xc1ed('0x3c')]('nolimit')){_0x200a06['limit']=qs[_0xc1ed('0x20')](_0x536af1[_0xc1ed('0x36')][_0xc1ed('0x20')]);_0x200a06[_0xc1ed('0x22')]=qs[_0xc1ed('0x22')](_0x536af1[_0xc1ed('0x36')]['offset']);}_0x200a06[_0xc1ed('0x5a')]=qs[_0xc1ed('0x3e')](_0x536af1[_0xc1ed('0x36')][_0xc1ed('0x3e')]);_0x200a06[_0xc1ed('0x3f')]=qs['filters'](_[_0xc1ed('0x40')](_0x536af1[_0xc1ed('0x36')],_0x4a204f[_0xc1ed('0x37')]));_0x200a06[_0xc1ed('0x3f')][_0xc1ed('0x5b')]=_0x4e9bd2['id'];if(_0x536af1['query'][_0xc1ed('0x41')]){_0x200a06[_0xc1ed('0x3f')]=_[_0xc1ed('0x42')](_0x200a06[_0xc1ed('0x3f')],{'$or':_[_0xc1ed('0x30')](_0x200a06[_0xc1ed('0x39')],function(_0x24fab3){var _0x229ea7={};_0x229ea7[_0x24fab3]={'$like':'%'+_0x536af1[_0xc1ed('0x36')][_0xc1ed('0x41')]+'%'};return _0x229ea7;})});}_0x200a06=_[_0xc1ed('0x42')]({},_0x200a06,_0x536af1[_0xc1ed('0x4a')]);return db['CmHopperHistory']['count']({'where':_0x200a06[_0xc1ed('0x3f')]})['then'](function(_0x52d3fe){_0x1e10c3[_0xc1ed('0x21')]=_0x52d3fe;if(_0x536af1[_0xc1ed('0x36')]['includeAll']){_0x200a06[_0xc1ed('0x49')]=[{'all':!![]}];}return db[_0xc1ed('0x5e')][_0xc1ed('0x44')](_0x200a06);})[_0xc1ed('0x28')](function(_0x253c6b){_0x1e10c3[_0xc1ed('0x5c')]=_0x253c6b;return _0x1e10c3;});}})[_0xc1ed('0x28')](respondWithFilteredResult(_0xdc1b33,_0x200a06))[_0xc1ed('0x45')](handleError(_0xdc1b33,null));};exports['getHopperFinals']=function(_0x596172,_0x1752e1,_0x35a163){var _0x43df21={'raw':!![],'where':{}};var _0x3c86fc={};var _0x175ca1={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x596172[_0xc1ed('0x47')]['id']}})[_0xc1ed('0x28')](handleEntityNotFound(_0x1752e1,null))[_0xc1ed('0x28')](function(_0x41c938){if(_0x41c938){_0x3c86fc[_0xc1ed('0x3a')]=_[_0xc1ed('0x35')](db[_0xc1ed('0x5f')][_0xc1ed('0x32')]);_0x3c86fc[_0xc1ed('0x36')]=_[_0xc1ed('0x35')](_0x596172[_0xc1ed('0x36')]);_0x3c86fc[_0xc1ed('0x37')]=_['intersection'](_0x3c86fc['model'],_0x3c86fc['query']);_0x43df21[_0xc1ed('0x39')]=_[_0xc1ed('0x38')](_0x3c86fc[_0xc1ed('0x3a')],qs['fields'](_0x596172['query'][_0xc1ed('0x3b')]));_0x43df21[_0xc1ed('0x39')]=_0x43df21['attributes']['length']?_0x43df21[_0xc1ed('0x39')]:_0x3c86fc['model'];if(!_0x596172[_0xc1ed('0x36')][_0xc1ed('0x3c')]('nolimit')){_0x43df21['limit']=qs[_0xc1ed('0x20')](_0x596172[_0xc1ed('0x36')][_0xc1ed('0x20')]);_0x43df21[_0xc1ed('0x22')]=qs[_0xc1ed('0x22')](_0x596172[_0xc1ed('0x36')][_0xc1ed('0x22')]);}_0x43df21['order']=qs[_0xc1ed('0x3e')](_0x596172[_0xc1ed('0x36')][_0xc1ed('0x3e')]);_0x43df21[_0xc1ed('0x3f')]=qs[_0xc1ed('0x37')](_[_0xc1ed('0x40')](_0x596172['query'],_0x3c86fc['filters']));_0x43df21[_0xc1ed('0x3f')][_0xc1ed('0x5b')]=_0x41c938['id'];if(_0x596172[_0xc1ed('0x36')][_0xc1ed('0x41')]){_0x43df21[_0xc1ed('0x3f')]=_['merge'](_0x43df21[_0xc1ed('0x3f')],{'$or':_[_0xc1ed('0x30')](_0x43df21['attributes'],function(_0x2209fd){var _0x53e278={};_0x53e278[_0x2209fd]={'$like':'%'+_0x596172[_0xc1ed('0x36')]['filter']+'%'};return _0x53e278;})});}_0x43df21=_[_0xc1ed('0x42')]({},_0x43df21,_0x596172['options']);return db[_0xc1ed('0x5f')][_0xc1ed('0x21')]({'where':_0x43df21[_0xc1ed('0x3f')]})[_0xc1ed('0x28')](function(_0x375151){_0x175ca1[_0xc1ed('0x21')]=_0x375151;if(_0x596172[_0xc1ed('0x36')][_0xc1ed('0x43')]){_0x43df21['include']=[{'all':!![]}];}return db[_0xc1ed('0x5f')][_0xc1ed('0x44')](_0x43df21);})[_0xc1ed('0x28')](function(_0x208da0){_0x175ca1[_0xc1ed('0x5c')]=_0x208da0;return _0x175ca1;});}})['then'](respondWithFilteredResult(_0x1752e1,_0x43df21))['catch'](handleError(_0x1752e1,null));};exports[_0xc1ed('0x60')]=function(_0x59f58b,_0x298f11,_0x342f94){var _0x2e2cd2={'raw':!![],'where':{}};var _0x27f371={};var _0x97a12b={'count':0x0,'rows':[]};return db[_0xc1ed('0x31')][_0xc1ed('0x58')]({'where':{'id':_0x59f58b[_0xc1ed('0x47')]['id']}})[_0xc1ed('0x28')](handleEntityNotFound(_0x298f11,null))['then'](function(_0x2dd821){if(_0x2dd821){_0x27f371[_0xc1ed('0x3a')]=_[_0xc1ed('0x35')](db[_0xc1ed('0x61')][_0xc1ed('0x32')]);_0x27f371['query']=_[_0xc1ed('0x35')](_0x59f58b[_0xc1ed('0x36')]);_0x27f371[_0xc1ed('0x37')]=_['intersection'](_0x27f371[_0xc1ed('0x3a')],_0x27f371[_0xc1ed('0x36')]);_0x2e2cd2[_0xc1ed('0x39')]=_['intersection'](_0x27f371[_0xc1ed('0x3a')],qs[_0xc1ed('0x3b')](_0x59f58b['query'][_0xc1ed('0x3b')]));_0x2e2cd2[_0xc1ed('0x39')]=_0x2e2cd2[_0xc1ed('0x39')][_0xc1ed('0x48')]?_0x2e2cd2[_0xc1ed('0x39')]:_0x27f371[_0xc1ed('0x3a')];if(!_0x59f58b['query'][_0xc1ed('0x3c')](_0xc1ed('0x3d'))){_0x2e2cd2[_0xc1ed('0x20')]=qs[_0xc1ed('0x20')](_0x59f58b[_0xc1ed('0x36')][_0xc1ed('0x20')]);_0x2e2cd2[_0xc1ed('0x22')]=qs[_0xc1ed('0x22')](_0x59f58b[_0xc1ed('0x36')][_0xc1ed('0x22')]);}_0x2e2cd2[_0xc1ed('0x5a')]=qs['sort'](_0x59f58b[_0xc1ed('0x36')][_0xc1ed('0x3e')]);_0x2e2cd2[_0xc1ed('0x3f')]=qs[_0xc1ed('0x37')](_[_0xc1ed('0x40')](_0x59f58b[_0xc1ed('0x36')],_0x27f371[_0xc1ed('0x37')]));_0x2e2cd2[_0xc1ed('0x3f')]['CampaignId']=_0x2dd821['id'];if(_0x59f58b[_0xc1ed('0x36')][_0xc1ed('0x41')]){_0x2e2cd2[_0xc1ed('0x3f')]=_[_0xc1ed('0x42')](_0x2e2cd2[_0xc1ed('0x3f')],{'$or':_[_0xc1ed('0x30')](_0x2e2cd2['attributes'],function(_0x53894b){var _0x1df74b={};_0x1df74b[_0x53894b]={'$like':'%'+_0x59f58b[_0xc1ed('0x36')][_0xc1ed('0x41')]+'%'};return _0x1df74b;})});}_0x2e2cd2=_[_0xc1ed('0x42')]({},_0x2e2cd2,_0x59f58b[_0xc1ed('0x4a')]);return db['CmHopperBlack'][_0xc1ed('0x21')]({'where':_0x2e2cd2[_0xc1ed('0x3f')]})['then'](function(_0x3d6535){_0x97a12b[_0xc1ed('0x21')]=_0x3d6535;if(_0x59f58b[_0xc1ed('0x36')][_0xc1ed('0x43')]){_0x2e2cd2['include']=[{'all':!![]}];}return db[_0xc1ed('0x61')]['findAll'](_0x2e2cd2);})[_0xc1ed('0x28')](function(_0x2f6021){_0x97a12b['rows']=_0x2f6021;return _0x97a12b;});}})[_0xc1ed('0x28')](respondWithFilteredResult(_0x298f11,_0x2e2cd2))[_0xc1ed('0x45')](handleError(_0x298f11,null));};exports[_0xc1ed('0x62')]=function(_0x1cece0,_0x13935e,_0x3e2aef){var _0x6fa108={};var _0x3fe337={};var _0xe1a21b;var _0x2eeb73;return db[_0xc1ed('0x31')]['findOne']({'where':{'id':_0x1cece0['params']['id']}})['then'](handleEntityNotFound(_0x13935e,null))[_0xc1ed('0x28')](function(_0x42d972){if(_0x42d972){_0xe1a21b=_0x42d972;_0x3fe337[_0xc1ed('0x3a')]=_['keys'](db[_0xc1ed('0x63')][_0xc1ed('0x32')]);_0x3fe337[_0xc1ed('0x36')]=_[_0xc1ed('0x35')](_0x1cece0[_0xc1ed('0x36')]);_0x3fe337[_0xc1ed('0x37')]=_[_0xc1ed('0x38')](_0x3fe337['model'],_0x3fe337['query']);_0x6fa108[_0xc1ed('0x39')]=_[_0xc1ed('0x38')](_0x3fe337['model'],qs[_0xc1ed('0x3b')](_0x1cece0[_0xc1ed('0x36')]['fields']));_0x6fa108[_0xc1ed('0x39')]=_0x6fa108['attributes']['length']?_0x6fa108[_0xc1ed('0x39')]:_0x3fe337[_0xc1ed('0x3a')];_0x6fa108['order']=qs[_0xc1ed('0x3e')](_0x1cece0['query'][_0xc1ed('0x3e')]);_0x6fa108[_0xc1ed('0x3f')]=qs[_0xc1ed('0x37')](_[_0xc1ed('0x40')](_0x1cece0['query'],_0x3fe337[_0xc1ed('0x37')]));if(_0x1cece0['query']['filter']){_0x6fa108[_0xc1ed('0x3f')]=_[_0xc1ed('0x42')](_0x6fa108[_0xc1ed('0x3f')],{'$or':_['map'](_0x6fa108['attributes'],function(_0x42475e){var _0x32d318={};_0x32d318[_0x42475e]={'$like':'%'+_0x1cece0[_0xc1ed('0x36')][_0xc1ed('0x41')]+'%'};return _0x32d318;})});}_0x6fa108=_['merge']({},_0x6fa108,_0x1cece0['options']);return _0xe1a21b[_0xc1ed('0x62')](_0x6fa108);}})[_0xc1ed('0x28')](function(_0xb7937a){if(_0xb7937a){_0x2eeb73=_0xb7937a[_0xc1ed('0x48')];if(!_0x1cece0[_0xc1ed('0x36')][_0xc1ed('0x3c')](_0xc1ed('0x3d'))){_0x6fa108[_0xc1ed('0x20')]=qs[_0xc1ed('0x20')](_0x1cece0['query'][_0xc1ed('0x20')]);_0x6fa108[_0xc1ed('0x22')]=qs['offset'](_0x1cece0[_0xc1ed('0x36')][_0xc1ed('0x22')]);}return _0xe1a21b['getLists'](_0x6fa108);}})['then'](function(_0x271ac6){if(_0x271ac6){return _0x271ac6?{'count':_0x2eeb73,'rows':_0x271ac6}:null;}})[_0xc1ed('0x28')](respondWithResult(_0x13935e,null))[_0xc1ed('0x45')](handleError(_0x13935e,null));};exports['addLists']=function(_0x366df9,_0x1b8fde,_0x3f371){var _0x3539fa,_0x487fb9;return db[_0xc1ed('0x31')][_0xc1ed('0x4b')]({'where':{'id':_0x366df9['params']['id']}})['then'](handleEntityNotFound(_0x1b8fde,null))[_0xc1ed('0x28')](function(_0x319f0b){if(_0x319f0b){_0x487fb9=_0x319f0b;return _0x319f0b[_0xc1ed('0x64')](_0x366df9['body'][_0xc1ed('0x65')],_[_0xc1ed('0x53')](_0x366df9[_0xc1ed('0x56')],[_0xc1ed('0x65'),'id'])||{});}return null;})[_0xc1ed('0x66')](function(_0x38a3e4){var _0x1c5c06;_0x3539fa=_0x38a3e4||[];var _0x1d7b69=[];if(_0x38a3e4){for(var _0x2dc77a=0x0;_0x2dc77a<_0x38a3e4[_0xc1ed('0x48')];_0x2dc77a+=0x1){var _0x295607=_0x38a3e4[_0x2dc77a]['get']({'plain':!![]});_0x487fb9[_0xc1ed('0x67')]=_0x366df9[_0xc1ed('0x56')]['dialCheckDuplicateType']?_0x366df9[_0xc1ed('0x56')][_0xc1ed('0x67')]:_0x487fb9[_0xc1ed('0x67')];switch(_0x487fb9['dialCheckDuplicateType']){case _0xc1ed('0x68'):_0x1c5c06=squel[_0xc1ed('0x69')]()['into']('cm_hopper')[_0xc1ed('0x6a')]([_0xc1ed('0x6b'),_0xc1ed('0x6c'),_0xc1ed('0x6d'),_0xc1ed('0x6e'),_0xc1ed('0x5b'),_0xc1ed('0x54'),_0xc1ed('0x55')],squel[_0xc1ed('0x6f')]()[_0xc1ed('0x70')](_0xc1ed('0x6b'),'phone')[_0xc1ed('0x70')]('NOW()',_0xc1ed('0x6c'))['field']('id',_0xc1ed('0x6d'))['field'](_0x295607[_0xc1ed('0x71')][_0xc1ed('0x72')](),_0xc1ed('0x6e'))[_0xc1ed('0x70')](_0x366df9[_0xc1ed('0x47')]['id']['toString'](),_0xc1ed('0x5b'))['field'](_0xc1ed('0x73'),_0xc1ed('0x54'))[_0xc1ed('0x70')](_0xc1ed('0x73'),'updatedAt')[_0xc1ed('0x74')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0xc1ed('0x3f')](_0xc1ed('0x75'),_0x295607['CmListId'][_0xc1ed('0x72')]())['where'](_0xc1ed('0x76'))['where'](_0xc1ed('0x77'),squel[_0xc1ed('0x6f')]()[_0xc1ed('0x70')]('COALESCE(calleridnum,\x27\x27)')[_0xc1ed('0x74')]('cm_hopper_final')[_0xc1ed('0x3f')](_0xc1ed('0x78'),_0x366df9[_0xc1ed('0x47')]['id']['toString']()))[_0xc1ed('0x3f')](_0xc1ed('0x77'),squel['select']()['field']('COALESCE(phone,\x27\x27)')[_0xc1ed('0x74')](_0xc1ed('0x79'))[_0xc1ed('0x3f')](_0xc1ed('0x78'),_0x366df9['params']['id'][_0xc1ed('0x72')]())))[_0xc1ed('0x72')]();break;case'onlyIfOpen':_0x1c5c06=squel[_0xc1ed('0x69')]()[_0xc1ed('0x7a')](_0xc1ed('0x79'))[_0xc1ed('0x6a')]([_0xc1ed('0x6b'),_0xc1ed('0x6c'),_0xc1ed('0x6d'),_0xc1ed('0x6e'),_0xc1ed('0x5b'),_0xc1ed('0x54'),_0xc1ed('0x55')],squel[_0xc1ed('0x6f')]()[_0xc1ed('0x70')](_0xc1ed('0x6b'),_0xc1ed('0x6b'))[_0xc1ed('0x70')]('NOW()',_0xc1ed('0x6c'))[_0xc1ed('0x70')]('id',_0xc1ed('0x6d'))[_0xc1ed('0x70')](_0x295607['CmListId'][_0xc1ed('0x72')](),'ListId')['field'](_0x366df9[_0xc1ed('0x47')]['id'][_0xc1ed('0x72')](),_0xc1ed('0x5b'))[_0xc1ed('0x70')](_0xc1ed('0x73'),_0xc1ed('0x54'))['field'](_0xc1ed('0x73'),_0xc1ed('0x55'))['from'](_0xc1ed('0x7b'))[_0xc1ed('0x3f')]('deletedAt\x20IS\x20NULL')[_0xc1ed('0x3f')](_0xc1ed('0x75'),_0x295607[_0xc1ed('0x71')][_0xc1ed('0x72')]())[_0xc1ed('0x3f')](_0xc1ed('0x76'))[_0xc1ed('0x3f')](_0xc1ed('0x77'),squel['select']()['field'](_0xc1ed('0x7c'))['from'](_0xc1ed('0x79'))[_0xc1ed('0x3f')](_0xc1ed('0x78'),_0x366df9[_0xc1ed('0x47')]['id'][_0xc1ed('0x72')]())))[_0xc1ed('0x72')]();break;default:_0x1c5c06=squel[_0xc1ed('0x69')]()['into'](_0xc1ed('0x79'))[_0xc1ed('0x6a')](['phone','scheduledAt',_0xc1ed('0x6d'),_0xc1ed('0x6e'),_0xc1ed('0x5b'),_0xc1ed('0x54'),_0xc1ed('0x55')],squel['select']()['field'](_0xc1ed('0x6b'),_0xc1ed('0x6b'))[_0xc1ed('0x70')](_0xc1ed('0x73'),_0xc1ed('0x6c'))['field']('id',_0xc1ed('0x6d'))[_0xc1ed('0x70')](_0x295607['CmListId'][_0xc1ed('0x72')](),_0xc1ed('0x6e'))[_0xc1ed('0x70')](_0x366df9[_0xc1ed('0x47')]['id']['toString'](),_0xc1ed('0x5b'))[_0xc1ed('0x70')](_0xc1ed('0x73'),_0xc1ed('0x54'))[_0xc1ed('0x70')](_0xc1ed('0x73'),_0xc1ed('0x55'))[_0xc1ed('0x74')](_0xc1ed('0x7b'))[_0xc1ed('0x3f')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x295607[_0xc1ed('0x71')]['toString']())[_0xc1ed('0x3f')](_0xc1ed('0x76')))['toString']();}_0x1d7b69['push'](db['sequelize'][_0xc1ed('0x36')](_0x1c5c06));}return BPromise[_0xc1ed('0x7d')](_0x1d7b69);}})[_0xc1ed('0x28')](function(){return _0x3539fa;})[_0xc1ed('0x28')](respondWithResult(_0x1b8fde,null))['catch'](handleError(_0x1b8fde,null));};exports[_0xc1ed('0x7e')]=function(_0x43e802,_0x531eee,_0x11641a){return db['Campaign'][_0xc1ed('0x4b')]({'where':{'id':_0x43e802[_0xc1ed('0x47')]['id']}})['then'](handleEntityNotFound(_0x531eee,null))[_0xc1ed('0x28')](function(_0x27684e){if(_0x27684e){return _0x27684e[_0xc1ed('0x7e')](_0x43e802[_0xc1ed('0x36')][_0xc1ed('0x65')]);}})[_0xc1ed('0x28')](function(_0x461cf5){if(_0x461cf5){return db['CmHopper'][_0xc1ed('0x29')]({'where':{'ListId':_0x43e802[_0xc1ed('0x36')][_0xc1ed('0x65')],'CampaignId':_0x43e802[_0xc1ed('0x47')]['id']}})[_0xc1ed('0x28')](function(){return _0x461cf5;});}})[_0xc1ed('0x28')](respondWithStatusCode(_0x531eee,null))[_0xc1ed('0x45')](handleError(_0x531eee,null));};exports[_0xc1ed('0x7f')]=function(_0x3f0efc,_0x4b2200,_0x58fef4){var _0x171ef0={};var _0x121dc5={};var _0x2dabe9;var _0x39b8be;return db['Campaign'][_0xc1ed('0x58')]({'where':{'id':_0x3f0efc['params']['id']}})[_0xc1ed('0x28')](handleEntityNotFound(_0x4b2200,null))[_0xc1ed('0x28')](function(_0x1b48a5){if(_0x1b48a5){_0x2dabe9=_0x1b48a5;_0x121dc5['model']=_[_0xc1ed('0x35')](db['CmList'][_0xc1ed('0x32')]);_0x121dc5[_0xc1ed('0x36')]=_['keys'](_0x3f0efc['query']);_0x121dc5[_0xc1ed('0x37')]=_[_0xc1ed('0x38')](_0x121dc5['model'],_0x121dc5['query']);_0x171ef0[_0xc1ed('0x39')]=_[_0xc1ed('0x38')](_0x121dc5[_0xc1ed('0x3a')],qs[_0xc1ed('0x3b')](_0x3f0efc[_0xc1ed('0x36')][_0xc1ed('0x3b')]));_0x171ef0[_0xc1ed('0x39')]=_0x171ef0[_0xc1ed('0x39')][_0xc1ed('0x48')]?_0x171ef0[_0xc1ed('0x39')]:_0x121dc5['model'];_0x171ef0['order']=qs[_0xc1ed('0x3e')](_0x3f0efc[_0xc1ed('0x36')]['sort']);_0x171ef0[_0xc1ed('0x3f')]=qs[_0xc1ed('0x37')](_[_0xc1ed('0x40')](_0x3f0efc[_0xc1ed('0x36')],_0x121dc5[_0xc1ed('0x37')]));if(_0x3f0efc[_0xc1ed('0x36')]['filter']){_0x171ef0[_0xc1ed('0x3f')]=_[_0xc1ed('0x42')](_0x171ef0[_0xc1ed('0x3f')],{'$or':_['map'](_0x171ef0['attributes'],function(_0x240b28){var _0x1cb505={};_0x1cb505[_0x240b28]={'$like':'%'+_0x3f0efc[_0xc1ed('0x36')][_0xc1ed('0x41')]+'%'};return _0x1cb505;})});}_0x171ef0=_[_0xc1ed('0x42')]({},_0x171ef0,_0x3f0efc[_0xc1ed('0x4a')]);return _0x2dabe9[_0xc1ed('0x7f')](_0x171ef0);}})[_0xc1ed('0x28')](function(_0x196e9e){if(_0x196e9e){_0x39b8be=_0x196e9e[_0xc1ed('0x48')];if(!_0x3f0efc['query'][_0xc1ed('0x3c')](_0xc1ed('0x3d'))){_0x171ef0[_0xc1ed('0x20')]=qs[_0xc1ed('0x20')](_0x3f0efc[_0xc1ed('0x36')][_0xc1ed('0x20')]);_0x171ef0[_0xc1ed('0x22')]=qs['offset'](_0x3f0efc[_0xc1ed('0x36')]['offset']);}return _0x2dabe9[_0xc1ed('0x7f')](_0x171ef0);}})[_0xc1ed('0x28')](function(_0x1c5967){if(_0x1c5967){return _0x1c5967?{'count':_0x39b8be,'rows':_0x1c5967}:null;}})[_0xc1ed('0x28')](respondWithResult(_0x4b2200,null))['catch'](handleError(_0x4b2200,null));};exports['addBlackLists']=function(_0xe6a30d,_0x121e5b,_0x33a17b){var _0x254ffc,_0x4cf08c;return db[_0xc1ed('0x31')][_0xc1ed('0x4b')]({'where':{'id':_0xe6a30d[_0xc1ed('0x47')]['id']}})['then'](handleEntityNotFound(_0x121e5b,null))['then'](function(_0x3c2f1a){if(_0x3c2f1a){_0x4cf08c=_0x3c2f1a;return _0x3c2f1a[_0xc1ed('0x80')](_0xe6a30d[_0xc1ed('0x56')][_0xc1ed('0x65')],_[_0xc1ed('0x53')](_0xe6a30d[_0xc1ed('0x56')],[_0xc1ed('0x65'),'id'])||{});}return null;})['spread'](function(_0x420a80){var _0x5f34d6;_0x254ffc=_0x420a80||[];var _0x5162fc=[];if(_0x420a80){for(var _0x501e47=0x0;_0x501e47<_0x420a80[_0xc1ed('0x48')];_0x501e47+=0x1){var _0x23efe9=_0x420a80[_0x501e47][_0xc1ed('0x2a')]({'plain':!![]});_0x5f34d6=squel[_0xc1ed('0x69')]()[_0xc1ed('0x7a')]('cm_hopper_black')['fromQuery']([_0xc1ed('0x6b'),_0xc1ed('0x6d'),_0xc1ed('0x6e'),_0xc1ed('0x5b'),_0xc1ed('0x54'),_0xc1ed('0x55')],squel[_0xc1ed('0x6f')]()[_0xc1ed('0x70')](_0xc1ed('0x6b'),_0xc1ed('0x6b'))[_0xc1ed('0x70')]('id',_0xc1ed('0x6d'))[_0xc1ed('0x70')](_0x23efe9[_0xc1ed('0x71')][_0xc1ed('0x72')](),_0xc1ed('0x6e'))[_0xc1ed('0x70')](_0xe6a30d[_0xc1ed('0x47')]['id'][_0xc1ed('0x72')](),_0xc1ed('0x5b'))['field'](_0xc1ed('0x73'),_0xc1ed('0x54'))[_0xc1ed('0x70')](_0xc1ed('0x73'),_0xc1ed('0x55'))[_0xc1ed('0x74')]('cm_contacts')[_0xc1ed('0x3f')](_0xc1ed('0x81'))[_0xc1ed('0x3f')](_0xc1ed('0x75'),_0x23efe9[_0xc1ed('0x71')][_0xc1ed('0x72')]())[_0xc1ed('0x3f')](_0xc1ed('0x76')))[_0xc1ed('0x72')]();_0x5162fc[_0xc1ed('0x82')](db[_0xc1ed('0x83')][_0xc1ed('0x36')](_0x5f34d6));}return BPromise['all'](_0x5162fc);}})[_0xc1ed('0x28')](function(){return _0x254ffc;})[_0xc1ed('0x28')](respondWithResult(_0x121e5b,null))['catch'](handleError(_0x121e5b,null));};exports[_0xc1ed('0x84')]=function(_0x1ee431,_0x4d2e55,_0x14055a){return db[_0xc1ed('0x31')][_0xc1ed('0x4b')]({'where':{'id':_0x1ee431[_0xc1ed('0x47')]['id']}})[_0xc1ed('0x28')](handleEntityNotFound(_0x4d2e55,null))[_0xc1ed('0x28')](function(_0x47cd5d){if(_0x47cd5d){return _0x47cd5d['removeBlackLists'](_0x1ee431[_0xc1ed('0x36')][_0xc1ed('0x65')]);}})[_0xc1ed('0x28')](function(_0x2db743){if(_0x2db743){return db[_0xc1ed('0x61')][_0xc1ed('0x29')]({'where':{'ListId':_0x1ee431[_0xc1ed('0x36')][_0xc1ed('0x65')],'CampaignId':_0x1ee431['params']['id']}})['then'](function(){return _0x2db743;});}})['then'](respondWithStatusCode(_0x4d2e55,null))[_0xc1ed('0x45')](handleError(_0x4d2e55,null));};
\ No newline at end of file
+var _0x0e4d=['end','error','stack','name','send','index','map','Campaign','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','keys','find','body','user','autoAssociation','create','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','order','sort','where','CampaignId','rows','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','select','field','NOW()','ContactId','toString','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','CmListId','deletedAt\x20IS\x20NULL','COALESCE(phone,\x27\x27)','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','save','then','get','IvrCampaigns','UserProfileResource','destroy'];(function(_0x14540b,_0x85d32d){var _0x394822=function(_0x2e9b0e){while(--_0x2e9b0e){_0x14540b['push'](_0x14540b['shift']());}};_0x394822(++_0x85d32d);}(_0x0e4d,0x170));var _0xd0e4=function(_0x2a70d4,_0x3296bd){_0x2a70d4=_0x2a70d4-0x0;var _0x3ac4f6=_0x0e4d[_0x2a70d4];return _0x3ac4f6;};'use strict';var emlformat=require(_0xd0e4('0x0'));var rimraf=require(_0xd0e4('0x1'));var zipdir=require(_0xd0e4('0x2'));var jsonpatch=require(_0xd0e4('0x3'));var rp=require(_0xd0e4('0x4'));var moment=require(_0xd0e4('0x5'));var BPromise=require(_0xd0e4('0x6'));var Mustache=require('mustache');var util=require(_0xd0e4('0x7'));var path=require(_0xd0e4('0x8'));var sox=require(_0xd0e4('0x9'));var csv=require(_0xd0e4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd0e4('0xb'));var _=require(_0xd0e4('0xc'));var squel=require(_0xd0e4('0xd'));var crypto=require(_0xd0e4('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd0e4('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd0e4('0x10'));var Papa=require(_0xd0e4('0x11'));var Redis=require(_0xd0e4('0x12'));var authService=require(_0xd0e4('0x13'));var qs=require(_0xd0e4('0x14'));var as=require(_0xd0e4('0x15'));var hardwareService=require(_0xd0e4('0x16'));var logger=require('../../config/logger')(_0xd0e4('0x17'));var utils=require(_0xd0e4('0x18'));var config=require(_0xd0e4('0x19'));var licenseUtil=require(_0xd0e4('0x1a'));var db=require(_0xd0e4('0x1b'))['db'];function respondWithStatusCode(_0xdfa269,_0x41a936){_0x41a936=_0x41a936||0xcc;return function(_0x2701b2){if(_0x2701b2){return _0xdfa269[_0xd0e4('0x1c')](_0x41a936);}return _0xdfa269[_0xd0e4('0x1d')](_0x41a936)['end']();};}function respondWithResult(_0x479183,_0x4e7e42){_0x4e7e42=_0x4e7e42||0xc8;return function(_0x663e21){if(_0x663e21){return _0x479183['status'](_0x4e7e42)['json'](_0x663e21);}};}function respondWithFilteredResult(_0x38c9c5,_0x44c704){return function(_0x1256b2){if(_0x1256b2){var _0x2a97da=typeof _0x44c704[_0xd0e4('0x1e')]===_0xd0e4('0x1f')&&typeof _0x44c704[_0xd0e4('0x20')]===_0xd0e4('0x1f');var _0xd1a072=_0x1256b2[_0xd0e4('0x21')];var _0x16dcdf=_0x2a97da?0x0:_0x44c704[_0xd0e4('0x1e')];var _0x426f2e=_0x2a97da?_0x1256b2[_0xd0e4('0x21')]:_0x44c704[_0xd0e4('0x1e')]+_0x44c704[_0xd0e4('0x20')];var _0x3ed59c;if(_0x426f2e>=_0xd1a072){_0x426f2e=_0xd1a072;_0x3ed59c=0xc8;}else{_0x3ed59c=0xce;}_0x38c9c5[_0xd0e4('0x1d')](_0x3ed59c);return _0x38c9c5[_0xd0e4('0x22')](_0xd0e4('0x23'),_0x16dcdf+'-'+_0x426f2e+'/'+_0xd1a072)[_0xd0e4('0x24')](_0x1256b2);}return null;};}function patchUpdates(_0x4edfec){return function(_0x1080a3){try{jsonpatch['apply'](_0x1080a3,_0x4edfec,!![]);}catch(_0x3d2c2f){return BPromise['reject'](_0x3d2c2f);}return _0x1080a3[_0xd0e4('0x25')]();};}function saveUpdates(_0x374be5,_0x6ae283){return function(_0xb2b51a){if(_0xb2b51a){return _0xb2b51a['update'](_0x374be5)['then'](function(_0x195527){return _0x195527;});}return null;};}function removeEntity(_0x9afb19,_0x1709dd){return function(_0x5b238a){if(_0x5b238a){return _0x5b238a['destroy']()[_0xd0e4('0x26')](function(){var _0x401ba1=_0x5b238a[_0xd0e4('0x27')]({'plain':!![]});var _0x2346c9=_0xd0e4('0x28');return db[_0xd0e4('0x29')][_0xd0e4('0x2a')]({'where':{'type':_0x2346c9,'resourceId':_0x401ba1['id']}})[_0xd0e4('0x26')](function(){return _0x5b238a;});})[_0xd0e4('0x26')](function(){_0x9afb19['status'](0xcc)[_0xd0e4('0x2b')]();});}};}function handleEntityNotFound(_0x3ec5a5,_0x315634){return function(_0x3a5335){if(!_0x3a5335){_0x3ec5a5[_0xd0e4('0x1c')](0x194);}return _0x3a5335;};}function handleError(_0x332637,_0x4ce2de){_0x4ce2de=_0x4ce2de||0x1f4;return function(_0x50ada1){logger[_0xd0e4('0x2c')](_0x50ada1[_0xd0e4('0x2d')]);if(_0x50ada1[_0xd0e4('0x2e')]){delete _0x50ada1[_0xd0e4('0x2e')];}_0x332637[_0xd0e4('0x1d')](_0x4ce2de)[_0xd0e4('0x2f')](_0x50ada1);};}exports[_0xd0e4('0x30')]=function(_0x5cd6e2,_0x3ded2e){var _0x49d774={},_0x426ccb={},_0xa9acc2={'count':0x0,'rows':[]};var _0x35c9e0=_[_0xd0e4('0x31')](db[_0xd0e4('0x32')][_0xd0e4('0x33')],function(_0x4a4a46){return{'name':_0x4a4a46['fieldName'],'type':_0x4a4a46[_0xd0e4('0x34')][_0xd0e4('0x35')]};});_0x426ccb[_0xd0e4('0x36')]=_[_0xd0e4('0x31')](_0x35c9e0,_0xd0e4('0x2e'));_0x426ccb[_0xd0e4('0x37')]=_['keys'](_0x5cd6e2[_0xd0e4('0x37')]);_0x426ccb[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x426ccb[_0xd0e4('0x36')],_0x426ccb[_0xd0e4('0x37')]);_0x49d774[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x426ccb[_0xd0e4('0x36')],qs['fields'](_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x49d774[_0xd0e4('0x3a')]=_0x49d774[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x49d774[_0xd0e4('0x3a')]:_0x426ccb[_0xd0e4('0x36')];if(!_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x49d774[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x49d774['offset']=qs[_0xd0e4('0x1e')](_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x1e')]);}_0x49d774['order']=qs['sort'](_0x5cd6e2['query']['sort']);_0x49d774['where']=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x5cd6e2[_0xd0e4('0x37')],_0x426ccb[_0xd0e4('0x38')]),_0x35c9e0);if(_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x49d774['where']=_['merge'](_0x49d774['where'],{'$or':_[_0xd0e4('0x31')](_0x35c9e0,function(_0x863592){if(_0x863592['type']!=='VIRTUAL'){var _0x31355c={};_0x31355c[_0x863592[_0xd0e4('0x2e')]]={'$like':'%'+_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x31355c;}})});}_0x49d774=_[_0xd0e4('0x41')]({},_0x49d774,_0x5cd6e2[_0xd0e4('0x42')]);var _0x31547a={'where':_0x49d774['where']};return db['Campaign']['count'](_0x31547a)['then'](function(_0xda2c94){_0xa9acc2['count']=_0xda2c94;if(_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x43')]){_0x49d774[_0xd0e4('0x44')]=[{'all':!![]}];}return db[_0xd0e4('0x32')][_0xd0e4('0x45')](_0x49d774);})[_0xd0e4('0x26')](function(_0x5035ec){_0xa9acc2['rows']=_0x5035ec;return _0xa9acc2;})[_0xd0e4('0x26')](respondWithFilteredResult(_0x3ded2e,_0x49d774))[_0xd0e4('0x46')](handleError(_0x3ded2e,null));};exports[_0xd0e4('0x47')]=function(_0x247e02,_0x4bae4a){var _0x5f10bd={'raw':![],'where':{'id':_0x247e02[_0xd0e4('0x48')]['id']}},_0x4166e2={};_0x4166e2['model']=_[_0xd0e4('0x49')](db[_0xd0e4('0x32')][_0xd0e4('0x33')]);_0x4166e2[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x247e02['query']);_0x4166e2[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x4166e2[_0xd0e4('0x36')],_0x4166e2[_0xd0e4('0x37')]);_0x5f10bd[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x4166e2[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x247e02[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x5f10bd['attributes']=_0x5f10bd['attributes']['length']?_0x5f10bd[_0xd0e4('0x3a')]:_0x4166e2[_0xd0e4('0x36')];if(_0x247e02[_0xd0e4('0x37')]['includeAll']){_0x5f10bd[_0xd0e4('0x44')]=[{'all':!![]}];}_0x5f10bd=_[_0xd0e4('0x41')]({},_0x5f10bd,_0x247e02['options']);return db[_0xd0e4('0x32')][_0xd0e4('0x4a')](_0x5f10bd)[_0xd0e4('0x26')](handleEntityNotFound(_0x4bae4a,null))[_0xd0e4('0x26')](respondWithResult(_0x4bae4a,null))[_0xd0e4('0x46')](handleError(_0x4bae4a,null));};exports['create']=function(_0x3c355b,_0x2b6595){return db[_0xd0e4('0x32')]['create'](_0x3c355b[_0xd0e4('0x4b')],{})['then'](function(_0x2d233e){var _0x1db878=_0x3c355b[_0xd0e4('0x4c')][_0xd0e4('0x27')]({'plain':!![]});if(!_0x1db878)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1db878['role']===_0xd0e4('0x4c')){var _0x2e589e=_0x2d233e[_0xd0e4('0x27')]({'plain':!![]});var _0x4509ee=_0xd0e4('0x28');return db['UserProfileSection'][_0xd0e4('0x4a')]({'where':{'name':_0x4509ee,'userProfileId':_0x1db878['userProfileId']},'raw':!![]})[_0xd0e4('0x26')](function(_0x2716d3){if(_0x2716d3&&_0x2716d3[_0xd0e4('0x4d')]===0x0){return db[_0xd0e4('0x29')][_0xd0e4('0x4e')]({'name':_0x2e589e[_0xd0e4('0x2e')],'resourceId':_0x2e589e['id'],'type':_0x2716d3[_0xd0e4('0x2e')],'sectionId':_0x2716d3['id']},{})[_0xd0e4('0x26')](function(){return _0x2d233e;});}else{return _0x2d233e;}})[_0xd0e4('0x46')](function(_0x3c95c6){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3c95c6);throw _0x3c95c6;});}return _0x2d233e;})[_0xd0e4('0x26')](respondWithResult(_0x2b6595,0xc9))[_0xd0e4('0x46')](handleError(_0x2b6595,null));};exports['clone']=function(_0x1c5aa8,_0x1940a0){var _0xf57ec1={'where':{'id':_0x1c5aa8[_0xd0e4('0x48')]['id']}},_0x1716a5={};_0x1716a5[_0xd0e4('0x36')]=_['keys'](db['Campaign'][_0xd0e4('0x33')]);_0xf57ec1[_0xd0e4('0x3a')]=_['intersection'](_0x1716a5['model'],qs[_0xd0e4('0x3b')](_0x1c5aa8[_0xd0e4('0x37')]['fields']));_0xf57ec1[_0xd0e4('0x3a')]=_0xf57ec1[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0xf57ec1[_0xd0e4('0x3a')]:_0x1716a5[_0xd0e4('0x36')];if(_0x1c5aa8['query'][_0xd0e4('0x43')]){_0xf57ec1[_0xd0e4('0x44')]=[{'all':!![]}];}_0xf57ec1=_['merge']({},_0xf57ec1,_0x1c5aa8['options']);return db[_0xd0e4('0x32')][_0xd0e4('0x4a')](_0xf57ec1)[_0xd0e4('0x26')](handleEntityNotFound(_0x1940a0,null))[_0xd0e4('0x26')](function(_0x586709){if(_0x586709){var _0x163f36=_0x586709['get']({'plain':!![]});_0x163f36=qs[_0xd0e4('0x4f')](_0x163f36,['id',_0xd0e4('0x50'),_0xd0e4('0x51')]);_0x1c5aa8[_0xd0e4('0x4b')]=_[_0xd0e4('0x4f')](_0x1c5aa8[_0xd0e4('0x4b')],['id',_0xd0e4('0x50'),'updatedAt']);return db[_0xd0e4('0x32')][_0xd0e4('0x4e')](_['merge'](_0x163f36,_0x1c5aa8[_0xd0e4('0x4b')]),{'include':_0x1c5aa8[_0xd0e4('0x37')][_0xd0e4('0x43')]?[{'all':!![]}]:undefined})[_0xd0e4('0x26')](function(_0x2b9604){var _0x5138bf=_0x1c5aa8[_0xd0e4('0x4c')][_0xd0e4('0x27')]({'plain':!![]});if(!_0x5138bf)throw new Error(_0xd0e4('0x52'));if(_0x5138bf[_0xd0e4('0x53')]==='user'){var _0x49c3bf=_0x2b9604[_0xd0e4('0x27')]({'plain':!![]});var _0x5baf26=_0xd0e4('0x28');return db[_0xd0e4('0x54')][_0xd0e4('0x4a')]({'where':{'name':_0x5baf26,'userProfileId':_0x5138bf['userProfileId']},'raw':!![]})[_0xd0e4('0x26')](function(_0x26043f){if(_0x26043f&&_0x26043f[_0xd0e4('0x4d')]===0x0){return db[_0xd0e4('0x29')][_0xd0e4('0x4e')]({'name':_0x49c3bf['name'],'resourceId':_0x49c3bf['id'],'type':_0x26043f[_0xd0e4('0x2e')],'sectionId':_0x26043f['id']},{})[_0xd0e4('0x26')](function(){return _0x2b9604;});}else{return _0x2b9604;}})[_0xd0e4('0x46')](function(_0x1e8d35){logger[_0xd0e4('0x2c')](_0xd0e4('0x55'),_0x1e8d35);throw _0x1e8d35;});}return _0x2b9604;});}})[_0xd0e4('0x26')](respondWithResult(_0x1940a0,0xc9))[_0xd0e4('0x46')](handleError(_0x1940a0,null));};exports['update']=function(_0xad379d,_0x3dcb27){if(_0xad379d[_0xd0e4('0x4b')]['id']){delete _0xad379d['body']['id'];}return db[_0xd0e4('0x32')][_0xd0e4('0x4a')]({'where':{'id':_0xad379d[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x3dcb27,null))[_0xd0e4('0x26')](saveUpdates(_0xad379d[_0xd0e4('0x4b')],null))[_0xd0e4('0x26')](respondWithResult(_0x3dcb27,null))[_0xd0e4('0x46')](handleError(_0x3dcb27,null));};exports['destroy']=function(_0x326937,_0x5cbc8e){return db[_0xd0e4('0x32')][_0xd0e4('0x4a')]({'where':{'id':_0x326937[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x5cbc8e,null))[_0xd0e4('0x26')](removeEntity(_0x5cbc8e,null))[_0xd0e4('0x46')](handleError(_0x5cbc8e,null));};exports[_0xd0e4('0x56')]=function(_0x32432f,_0x14264f,_0xd58965){var _0x479239={'raw':!![],'where':{}};var _0x2a401a={};var _0x4dd01d={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x32432f[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x14264f,null))[_0xd0e4('0x26')](function(_0x21429a){if(_0x21429a){_0x2a401a[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x58')]['rawAttributes']);_0x2a401a[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x32432f[_0xd0e4('0x37')]);_0x2a401a['filters']=_[_0xd0e4('0x39')](_0x2a401a[_0xd0e4('0x36')],_0x2a401a[_0xd0e4('0x37')]);_0x479239[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x2a401a[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x479239['attributes']=_0x479239[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x479239['attributes']:_0x2a401a[_0xd0e4('0x36')];if(!_0x32432f[_0xd0e4('0x37')]['hasOwnProperty'](_0xd0e4('0x3e'))){_0x479239[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x32432f[_0xd0e4('0x37')]['limit']);_0x479239['offset']=qs[_0xd0e4('0x1e')](_0x32432f[_0xd0e4('0x37')]['offset']);}_0x479239[_0xd0e4('0x59')]=qs[_0xd0e4('0x5a')](_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x479239['where']=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x32432f[_0xd0e4('0x37')],_0x2a401a[_0xd0e4('0x38')]));_0x479239[_0xd0e4('0x5b')][_0xd0e4('0x5c')]=_0x21429a['id'];if(_0x32432f['query'][_0xd0e4('0x40')]){_0x479239[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x479239[_0xd0e4('0x5b')],{'$or':_['map'](_0x479239[_0xd0e4('0x3a')],function(_0x17f1a2){var _0x49ba5f={};_0x49ba5f[_0x17f1a2]={'$like':'%'+_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x49ba5f;})});}_0x479239=_[_0xd0e4('0x41')]({},_0x479239,_0x32432f['options']);return db[_0xd0e4('0x58')][_0xd0e4('0x21')]({'where':_0x479239[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0xaf472c){_0x4dd01d['count']=_0xaf472c;if(_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x43')]){_0x479239[_0xd0e4('0x44')]=[{'all':!![]}];}return db['CmHopper'][_0xd0e4('0x45')](_0x479239);})[_0xd0e4('0x26')](function(_0x1fbbdd){_0x4dd01d[_0xd0e4('0x5d')]=_0x1fbbdd;return _0x4dd01d;});}})['then'](respondWithFilteredResult(_0x14264f,_0x479239))[_0xd0e4('0x46')](handleError(_0x14264f,null));};exports[_0xd0e4('0x5e')]=function(_0x452f0e,_0x2e7972,_0x3e71c7){var _0x2fa976={'raw':!![],'where':{}};var _0x43da74={};var _0x30a07d={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x452f0e['params']['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x2e7972,null))['then'](function(_0x319111){if(_0x319111){_0x43da74['model']=_[_0xd0e4('0x49')](db[_0xd0e4('0x5f')]['rawAttributes']);_0x43da74[_0xd0e4('0x37')]=_['keys'](_0x452f0e[_0xd0e4('0x37')]);_0x43da74[_0xd0e4('0x38')]=_['intersection'](_0x43da74[_0xd0e4('0x36')],_0x43da74['query']);_0x2fa976[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x43da74[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x2fa976[_0xd0e4('0x3a')]=_0x2fa976[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x2fa976[_0xd0e4('0x3a')]:_0x43da74[_0xd0e4('0x36')];if(!_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x3d')]('nolimit')){_0x2fa976[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x2fa976[_0xd0e4('0x1e')]=qs[_0xd0e4('0x1e')](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x1e')]);}_0x2fa976[_0xd0e4('0x59')]=qs['sort'](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x2fa976[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x452f0e['query'],_0x43da74[_0xd0e4('0x38')]));_0x2fa976[_0xd0e4('0x5b')]['CampaignId']=_0x319111['id'];if(_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x2fa976[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x2fa976[_0xd0e4('0x5b')],{'$or':_[_0xd0e4('0x31')](_0x2fa976[_0xd0e4('0x3a')],function(_0x76aa45){var _0x43c78a={};_0x43c78a[_0x76aa45]={'$like':'%'+_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x43c78a;})});}_0x2fa976=_[_0xd0e4('0x41')]({},_0x2fa976,_0x452f0e[_0xd0e4('0x42')]);return db[_0xd0e4('0x5f')][_0xd0e4('0x21')]({'where':_0x2fa976[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0x11872e){_0x30a07d[_0xd0e4('0x21')]=_0x11872e;if(_0x452f0e[_0xd0e4('0x37')]['includeAll']){_0x2fa976[_0xd0e4('0x44')]=[{'all':!![]}];}return db[_0xd0e4('0x5f')][_0xd0e4('0x45')](_0x2fa976);})[_0xd0e4('0x26')](function(_0x47bf4c){_0x30a07d[_0xd0e4('0x5d')]=_0x47bf4c;return _0x30a07d;});}})[_0xd0e4('0x26')](respondWithFilteredResult(_0x2e7972,_0x2fa976))[_0xd0e4('0x46')](handleError(_0x2e7972,null));};exports['getHopperFinals']=function(_0x4829ad,_0x131f89,_0x3598d1){var _0x34178c={'raw':!![],'where':{}};var _0x571007={};var _0x506878={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x4829ad[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x131f89,null))[_0xd0e4('0x26')](function(_0x489cb3){if(_0x489cb3){_0x571007[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x60')][_0xd0e4('0x33')]);_0x571007['query']=_[_0xd0e4('0x49')](_0x4829ad[_0xd0e4('0x37')]);_0x571007['filters']=_[_0xd0e4('0x39')](_0x571007['model'],_0x571007['query']);_0x34178c[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x571007[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x4829ad[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x34178c['attributes']=_0x34178c[_0xd0e4('0x3a')]['length']?_0x34178c[_0xd0e4('0x3a')]:_0x571007[_0xd0e4('0x36')];if(!_0x4829ad['query'][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x34178c['limit']=qs['limit'](_0x4829ad['query']['limit']);_0x34178c[_0xd0e4('0x1e')]=qs[_0xd0e4('0x1e')](_0x4829ad[_0xd0e4('0x37')]['offset']);}_0x34178c[_0xd0e4('0x59')]=qs['sort'](_0x4829ad[_0xd0e4('0x37')]['sort']);_0x34178c[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x4829ad[_0xd0e4('0x37')],_0x571007[_0xd0e4('0x38')]));_0x34178c[_0xd0e4('0x5b')][_0xd0e4('0x5c')]=_0x489cb3['id'];if(_0x4829ad['query'][_0xd0e4('0x40')]){_0x34178c[_0xd0e4('0x5b')]=_['merge'](_0x34178c[_0xd0e4('0x5b')],{'$or':_['map'](_0x34178c['attributes'],function(_0x1436a3){var _0x27f330={};_0x27f330[_0x1436a3]={'$like':'%'+_0x4829ad[_0xd0e4('0x37')]['filter']+'%'};return _0x27f330;})});}_0x34178c=_[_0xd0e4('0x41')]({},_0x34178c,_0x4829ad[_0xd0e4('0x42')]);return db[_0xd0e4('0x60')][_0xd0e4('0x21')]({'where':_0x34178c[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0x4faf08){_0x506878[_0xd0e4('0x21')]=_0x4faf08;if(_0x4829ad[_0xd0e4('0x37')][_0xd0e4('0x43')]){_0x34178c['include']=[{'all':!![]}];}return db['CmHopperFinal'][_0xd0e4('0x45')](_0x34178c);})['then'](function(_0x4a6ffc){_0x506878['rows']=_0x4a6ffc;return _0x506878;});}})['then'](respondWithFilteredResult(_0x131f89,_0x34178c))[_0xd0e4('0x46')](handleError(_0x131f89,null));};exports[_0xd0e4('0x61')]=function(_0x24203b,_0x18d494,_0x21bd70){var _0x564f6c={'raw':!![],'where':{}};var _0x508df2={};var _0x32ca9c={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x24203b[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x18d494,null))[_0xd0e4('0x26')](function(_0x31bd17){if(_0x31bd17){_0x508df2[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x62')]['rawAttributes']);_0x508df2[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x24203b[_0xd0e4('0x37')]);_0x508df2[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x508df2[_0xd0e4('0x36')],_0x508df2[_0xd0e4('0x37')]);_0x564f6c[_0xd0e4('0x3a')]=_['intersection'](_0x508df2[_0xd0e4('0x36')],qs['fields'](_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x564f6c[_0xd0e4('0x3a')]=_0x564f6c[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x564f6c[_0xd0e4('0x3a')]:_0x508df2[_0xd0e4('0x36')];if(!_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x564f6c[_0xd0e4('0x20')]=qs['limit'](_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x564f6c['offset']=qs[_0xd0e4('0x1e')](_0x24203b[_0xd0e4('0x37')]['offset']);}_0x564f6c[_0xd0e4('0x59')]=qs[_0xd0e4('0x5a')](_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x564f6c[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x24203b['query'],_0x508df2[_0xd0e4('0x38')]));_0x564f6c['where'][_0xd0e4('0x5c')]=_0x31bd17['id'];if(_0x24203b[_0xd0e4('0x37')]['filter']){_0x564f6c[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x564f6c[_0xd0e4('0x5b')],{'$or':_[_0xd0e4('0x31')](_0x564f6c[_0xd0e4('0x3a')],function(_0xea66c9){var _0x528cd3={};_0x528cd3[_0xea66c9]={'$like':'%'+_0x24203b[_0xd0e4('0x37')]['filter']+'%'};return _0x528cd3;})});}_0x564f6c=_[_0xd0e4('0x41')]({},_0x564f6c,_0x24203b[_0xd0e4('0x42')]);return db[_0xd0e4('0x62')][_0xd0e4('0x21')]({'where':_0x564f6c[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0x4b74d6){_0x32ca9c['count']=_0x4b74d6;if(_0x24203b['query']['includeAll']){_0x564f6c['include']=[{'all':!![]}];}return db[_0xd0e4('0x62')][_0xd0e4('0x45')](_0x564f6c);})['then'](function(_0x5a83fb){_0x32ca9c['rows']=_0x5a83fb;return _0x32ca9c;});}})[_0xd0e4('0x26')](respondWithFilteredResult(_0x18d494,_0x564f6c))['catch'](handleError(_0x18d494,null));};exports[_0xd0e4('0x63')]=function(_0x5e4e1e,_0x124667,_0x19a6f6){var _0x3b84d9={};var _0x40cfc9={};var _0x320833;var _0x110cdb;return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x5e4e1e['params']['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x124667,null))[_0xd0e4('0x26')](function(_0x1e3bb5){if(_0x1e3bb5){_0x320833=_0x1e3bb5;_0x40cfc9[_0xd0e4('0x36')]=_['keys'](db[_0xd0e4('0x64')][_0xd0e4('0x33')]);_0x40cfc9[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x5e4e1e[_0xd0e4('0x37')]);_0x40cfc9[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x40cfc9['model'],_0x40cfc9[_0xd0e4('0x37')]);_0x3b84d9[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x40cfc9[_0xd0e4('0x36')],qs['fields'](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x3b84d9[_0xd0e4('0x3a')]=_0x3b84d9[_0xd0e4('0x3a')]['length']?_0x3b84d9[_0xd0e4('0x3a')]:_0x40cfc9[_0xd0e4('0x36')];_0x3b84d9[_0xd0e4('0x59')]=qs[_0xd0e4('0x5a')](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x3b84d9['where']=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x5e4e1e[_0xd0e4('0x37')],_0x40cfc9[_0xd0e4('0x38')]));if(_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x3b84d9[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x3b84d9[_0xd0e4('0x5b')],{'$or':_[_0xd0e4('0x31')](_0x3b84d9[_0xd0e4('0x3a')],function(_0x44009b){var _0x2ca751={};_0x2ca751[_0x44009b]={'$like':'%'+_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x2ca751;})});}_0x3b84d9=_[_0xd0e4('0x41')]({},_0x3b84d9,_0x5e4e1e['options']);return _0x320833['getLists'](_0x3b84d9);}})[_0xd0e4('0x26')](function(_0x233d05){if(_0x233d05){_0x110cdb=_0x233d05[_0xd0e4('0x3c')];if(!_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x3d')]('nolimit')){_0x3b84d9[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x3b84d9[_0xd0e4('0x1e')]=qs['offset'](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x1e')]);}return _0x320833[_0xd0e4('0x63')](_0x3b84d9);}})[_0xd0e4('0x26')](function(_0x3d5a80){if(_0x3d5a80){return _0x3d5a80?{'count':_0x110cdb,'rows':_0x3d5a80}:null;}})['then'](respondWithResult(_0x124667,null))['catch'](handleError(_0x124667,null));};exports['addLists']=function(_0x1974a5,_0x1fef81,_0x2ca3ac){var _0x6f800,_0xe7fff8;return db['Campaign'][_0xd0e4('0x4a')]({'where':{'id':_0x1974a5['params']['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x1fef81,null))[_0xd0e4('0x26')](function(_0x57ba5e){if(_0x57ba5e){_0xe7fff8=_0x57ba5e;return _0x57ba5e['addLists'](_0x1974a5[_0xd0e4('0x4b')][_0xd0e4('0x65')],_[_0xd0e4('0x4f')](_0x1974a5['body'],['ids','id'])||{});}return null;})[_0xd0e4('0x66')](function(_0x350f0a){var _0x30a55e;_0x6f800=_0x350f0a||[];var _0x16d928=[];if(_0x350f0a){for(var _0x517ab1=0x0;_0x517ab1<_0x350f0a[_0xd0e4('0x3c')];_0x517ab1+=0x1){var _0x26c1dc=_0x350f0a[_0x517ab1]['get']({'plain':!![]});_0xe7fff8[_0xd0e4('0x67')]=_0x1974a5[_0xd0e4('0x4b')][_0xd0e4('0x67')]?_0x1974a5[_0xd0e4('0x4b')]['dialCheckDuplicateType']:_0xe7fff8[_0xd0e4('0x67')];switch(_0xe7fff8[_0xd0e4('0x67')]){case _0xd0e4('0x68'):_0x30a55e=squel[_0xd0e4('0x69')]()[_0xd0e4('0x6a')](_0xd0e4('0x6b'))[_0xd0e4('0x6c')]([_0xd0e4('0x6d'),_0xd0e4('0x6e'),'ContactId',_0xd0e4('0x6f'),'CampaignId',_0xd0e4('0x50'),_0xd0e4('0x51')],squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('phone','phone')['field'](_0xd0e4('0x72'),_0xd0e4('0x6e'))['field']('id',_0xd0e4('0x73'))['field'](_0x26c1dc['CmListId'][_0xd0e4('0x74')](),'ListId')[_0xd0e4('0x71')](_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x51'))[_0xd0e4('0x75')](_0xd0e4('0x76'))[_0xd0e4('0x5b')]('deletedAt\x20IS\x20NULL')[_0xd0e4('0x5b')](_0xd0e4('0x77'),_0x26c1dc['CmListId'][_0xd0e4('0x74')]())[_0xd0e4('0x5b')](_0xd0e4('0x78'))[_0xd0e4('0x5b')](_0xd0e4('0x79'),squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')](_0xd0e4('0x7a'))[_0xd0e4('0x75')](_0xd0e4('0x7b'))[_0xd0e4('0x5b')](_0xd0e4('0x7c'),_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')]()))[_0xd0e4('0x5b')]('phone\x20NOT\x20IN\x20(?)',squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('COALESCE(phone,\x27\x27)')['from'](_0xd0e4('0x6b'))[_0xd0e4('0x5b')](_0xd0e4('0x7c'),_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')]())))[_0xd0e4('0x74')]();break;case _0xd0e4('0x7d'):_0x30a55e=squel[_0xd0e4('0x69')]()[_0xd0e4('0x6a')](_0xd0e4('0x6b'))['fromQuery']([_0xd0e4('0x6d'),_0xd0e4('0x6e'),'ContactId','ListId',_0xd0e4('0x5c'),_0xd0e4('0x50'),_0xd0e4('0x51')],squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('phone',_0xd0e4('0x6d'))[_0xd0e4('0x71')](_0xd0e4('0x72'),'scheduledAt')[_0xd0e4('0x71')]('id',_0xd0e4('0x73'))[_0xd0e4('0x71')](_0x26c1dc[_0xd0e4('0x7e')]['toString'](),'ListId')['field'](_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x51'))[_0xd0e4('0x75')]('cm_contacts')[_0xd0e4('0x5b')](_0xd0e4('0x7f'))['where'](_0xd0e4('0x77'),_0x26c1dc[_0xd0e4('0x7e')][_0xd0e4('0x74')]())[_0xd0e4('0x5b')]('phone\x20IS\x20NOT\x20NULL')[_0xd0e4('0x5b')](_0xd0e4('0x79'),squel[_0xd0e4('0x70')]()['field'](_0xd0e4('0x80'))['from']('cm_hopper')[_0xd0e4('0x5b')](_0xd0e4('0x7c'),_0x1974a5[_0xd0e4('0x48')]['id']['toString']())))[_0xd0e4('0x74')]();break;default:_0x30a55e=squel['insert']()['into']('cm_hopper')[_0xd0e4('0x6c')]([_0xd0e4('0x6d'),'scheduledAt',_0xd0e4('0x73'),'ListId',_0xd0e4('0x5c'),_0xd0e4('0x50'),_0xd0e4('0x51')],squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('phone','phone')[_0xd0e4('0x71')]('NOW()',_0xd0e4('0x6e'))[_0xd0e4('0x71')]('id',_0xd0e4('0x73'))[_0xd0e4('0x71')](_0x26c1dc[_0xd0e4('0x7e')][_0xd0e4('0x74')](),_0xd0e4('0x6f'))[_0xd0e4('0x71')](_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))[_0xd0e4('0x71')]('NOW()',_0xd0e4('0x51'))[_0xd0e4('0x75')](_0xd0e4('0x76'))['where'](_0xd0e4('0x7f'))[_0xd0e4('0x5b')](_0xd0e4('0x77'),_0x26c1dc['CmListId']['toString']())[_0xd0e4('0x5b')](_0xd0e4('0x78')))['toString']();}_0x16d928[_0xd0e4('0x81')](db[_0xd0e4('0x82')][_0xd0e4('0x37')](_0x30a55e));}return BPromise[_0xd0e4('0x83')](_0x16d928);}})[_0xd0e4('0x26')](function(){return _0x6f800;})[_0xd0e4('0x26')](respondWithResult(_0x1fef81,null))[_0xd0e4('0x46')](handleError(_0x1fef81,null));};exports[_0xd0e4('0x84')]=function(_0x925a14,_0x4f0407,_0x1050fd){return db['Campaign'][_0xd0e4('0x4a')]({'where':{'id':_0x925a14[_0xd0e4('0x48')]['id']}})['then'](handleEntityNotFound(_0x4f0407,null))[_0xd0e4('0x26')](function(_0x1235c5){if(_0x1235c5){return _0x1235c5[_0xd0e4('0x84')](_0x925a14[_0xd0e4('0x37')]['ids']);}})[_0xd0e4('0x26')](function(_0x2db666){if(_0x2db666){return db[_0xd0e4('0x58')][_0xd0e4('0x2a')]({'where':{'ListId':_0x925a14[_0xd0e4('0x37')][_0xd0e4('0x65')],'CampaignId':_0x925a14[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](function(){return _0x2db666;});}})[_0xd0e4('0x26')](respondWithStatusCode(_0x4f0407,null))[_0xd0e4('0x46')](handleError(_0x4f0407,null));};exports['getBlackLists']=function(_0x4176f3,_0xb78ad5,_0x59e78d){var _0x17dcc8={};var _0x2377cf={};var _0x1c63e6;var _0x4dbf61;return db[_0xd0e4('0x32')]['findOne']({'where':{'id':_0x4176f3['params']['id']}})['then'](handleEntityNotFound(_0xb78ad5,null))[_0xd0e4('0x26')](function(_0xed8438){if(_0xed8438){_0x1c63e6=_0xed8438;_0x2377cf[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x64')]['rawAttributes']);_0x2377cf[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x4176f3[_0xd0e4('0x37')]);_0x2377cf['filters']=_[_0xd0e4('0x39')](_0x2377cf['model'],_0x2377cf['query']);_0x17dcc8['attributes']=_[_0xd0e4('0x39')](_0x2377cf['model'],qs[_0xd0e4('0x3b')](_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x17dcc8[_0xd0e4('0x3a')]=_0x17dcc8[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x17dcc8['attributes']:_0x2377cf['model'];_0x17dcc8['order']=qs[_0xd0e4('0x5a')](_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x17dcc8[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x4176f3[_0xd0e4('0x37')],_0x2377cf[_0xd0e4('0x38')]));if(_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x17dcc8['where']=_[_0xd0e4('0x41')](_0x17dcc8['where'],{'$or':_['map'](_0x17dcc8[_0xd0e4('0x3a')],function(_0x2e5398){var _0x7abd55={};_0x7abd55[_0x2e5398]={'$like':'%'+_0x4176f3[_0xd0e4('0x37')]['filter']+'%'};return _0x7abd55;})});}_0x17dcc8=_[_0xd0e4('0x41')]({},_0x17dcc8,_0x4176f3[_0xd0e4('0x42')]);return _0x1c63e6[_0xd0e4('0x85')](_0x17dcc8);}})[_0xd0e4('0x26')](function(_0x310855){if(_0x310855){_0x4dbf61=_0x310855['length'];if(!_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x17dcc8['limit']=qs[_0xd0e4('0x20')](_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x17dcc8[_0xd0e4('0x1e')]=qs[_0xd0e4('0x1e')](_0x4176f3[_0xd0e4('0x37')]['offset']);}return _0x1c63e6[_0xd0e4('0x85')](_0x17dcc8);}})[_0xd0e4('0x26')](function(_0x40b646){if(_0x40b646){return _0x40b646?{'count':_0x4dbf61,'rows':_0x40b646}:null;}})[_0xd0e4('0x26')](respondWithResult(_0xb78ad5,null))['catch'](handleError(_0xb78ad5,null));};exports[_0xd0e4('0x86')]=function(_0x22be0a,_0x23036c,_0x1b4a4f){var _0x1891ce,_0x45d39f;return db['Campaign']['find']({'where':{'id':_0x22be0a[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x23036c,null))[_0xd0e4('0x26')](function(_0x5e5aba){if(_0x5e5aba){_0x45d39f=_0x5e5aba;return _0x5e5aba[_0xd0e4('0x86')](_0x22be0a[_0xd0e4('0x4b')]['ids'],_[_0xd0e4('0x4f')](_0x22be0a[_0xd0e4('0x4b')],[_0xd0e4('0x65'),'id'])||{});}return null;})['spread'](function(_0x57cad7){var _0x58640f;_0x1891ce=_0x57cad7||[];var _0x445ce2=[];if(_0x57cad7){for(var _0x393375=0x0;_0x393375<_0x57cad7['length'];_0x393375+=0x1){var _0x1e2fad=_0x57cad7[_0x393375][_0xd0e4('0x27')]({'plain':!![]});_0x58640f=squel[_0xd0e4('0x69')]()[_0xd0e4('0x6a')](_0xd0e4('0x87'))['fromQuery'](['phone','ContactId',_0xd0e4('0x6f'),_0xd0e4('0x5c'),_0xd0e4('0x50'),_0xd0e4('0x51')],squel['select']()['field'](_0xd0e4('0x6d'),_0xd0e4('0x6d'))[_0xd0e4('0x71')]('id',_0xd0e4('0x73'))[_0xd0e4('0x71')](_0x1e2fad[_0xd0e4('0x7e')][_0xd0e4('0x74')](),_0xd0e4('0x6f'))[_0xd0e4('0x71')](_0x22be0a[_0xd0e4('0x48')]['id']['toString'](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))['field'](_0xd0e4('0x72'),_0xd0e4('0x51'))[_0xd0e4('0x75')](_0xd0e4('0x76'))[_0xd0e4('0x5b')]('deletedAt\x20IS\x20NULL')[_0xd0e4('0x5b')](_0xd0e4('0x77'),_0x1e2fad[_0xd0e4('0x7e')][_0xd0e4('0x74')]())[_0xd0e4('0x5b')]('phone\x20IS\x20NOT\x20NULL'))[_0xd0e4('0x74')]();_0x445ce2[_0xd0e4('0x81')](db['sequelize'][_0xd0e4('0x37')](_0x58640f));}return BPromise[_0xd0e4('0x83')](_0x445ce2);}})[_0xd0e4('0x26')](function(){return _0x1891ce;})[_0xd0e4('0x26')](respondWithResult(_0x23036c,null))[_0xd0e4('0x46')](handleError(_0x23036c,null));};exports[_0xd0e4('0x88')]=function(_0x3a2933,_0x476d87,_0x3d3a74){return db[_0xd0e4('0x32')][_0xd0e4('0x4a')]({'where':{'id':_0x3a2933[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x476d87,null))[_0xd0e4('0x26')](function(_0x298f68){if(_0x298f68){return _0x298f68['removeBlackLists'](_0x3a2933[_0xd0e4('0x37')]['ids']);}})[_0xd0e4('0x26')](function(_0x4307e3){if(_0x4307e3){return db[_0xd0e4('0x62')]['destroy']({'where':{'ListId':_0x3a2933[_0xd0e4('0x37')]['ids'],'CampaignId':_0x3a2933['params']['id']}})['then'](function(){return _0x4307e3;});}})[_0xd0e4('0x26')](respondWithStatusCode(_0x476d87,null))[_0xd0e4('0x46')](handleError(_0x476d87,null));};
\ No newline at end of file
index 6ec8ea1..c36f454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x5c6022,_0x5cd10b){var _0x4ab5af=function(_0x988aff){while(--_0x988aff){_0x5c6022['push'](_0x5c6022['shift']());}};_0x4ab5af(++_0x5cd10b);}(_0x7a54,0x106));var _0x47a5=function(_0x144c05,_0x152f5a){_0x144c05=_0x144c05-0x0;var _0x1157c4=_0x7a54[_0x144c05];return _0x1157c4;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 695e037..8e3bd35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa854=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCampaign','Campaign','findAll','raw','options','where','attributes','include','map','model','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x340bf4,_0x37dfb4){var _0x491343=function(_0x445a68){while(--_0x445a68){_0x340bf4['push'](_0x340bf4['shift']());}};_0x491343(++_0x37dfb4);}(_0xa854,0x103));var _0x4a85=function(_0x3e7bb3,_0x351063){_0x3e7bb3=_0x3e7bb3-0x0;var _0x5708d5=_0xa854[_0x3e7bb3];return _0x5708d5;};'use strict';var _=require(_0x4a85('0x0'));var util=require(_0x4a85('0x1'));var moment=require(_0x4a85('0x2'));var BPromise=require(_0x4a85('0x3'));var rs=require(_0x4a85('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a85('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a85('0x6'))('rpc');var config=require(_0x4a85('0x7'));var jayson=require(_0x4a85('0x8'));var client=jayson['client'][_0x4a85('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x142b27,_0x545fce,_0xb1605c){return new BPromise(function(_0x507c59,_0x2a3050){return client[_0x4a85('0xa')](_0x142b27,_0xb1605c)[_0x4a85('0xb')](function(_0x1cb2dc){logger[_0x4a85('0xc')](_0x4a85('0xd'),_0x545fce,_0x4a85('0xe'));logger[_0x4a85('0xf')](_0x4a85('0x10'),_0x545fce,'request\x20sent',JSON[_0x4a85('0x11')](_0x1cb2dc));if(_0x1cb2dc[_0x4a85('0x12')]){if(_0x1cb2dc[_0x4a85('0x12')][_0x4a85('0x13')]===0x1f4){logger[_0x4a85('0x12')](_0x4a85('0xd'),_0x545fce,_0x1cb2dc[_0x4a85('0x12')][_0x4a85('0x14')]);return _0x2a3050(_0x1cb2dc[_0x4a85('0x12')]['message']);}logger[_0x4a85('0x12')](_0x4a85('0xd'),_0x545fce,_0x1cb2dc[_0x4a85('0x12')][_0x4a85('0x14')]);return _0x507c59(_0x1cb2dc[_0x4a85('0x12')][_0x4a85('0x14')]);}else{logger[_0x4a85('0xc')](_0x4a85('0xd'),_0x545fce,_0x4a85('0xe'));_0x507c59(_0x1cb2dc[_0x4a85('0x15')][_0x4a85('0x14')]);}})['catch'](function(_0x28a7d3){logger[_0x4a85('0x12')]('Campaign,\x20%s,\x20%s',_0x545fce,_0x28a7d3);_0x2a3050(_0x28a7d3);});});}exports[_0x4a85('0x16')]=function(_0x159ed0){var _0x4435db=this;return new Promise(function(_0x50e210,_0x374f34){return db[_0x4a85('0x17')][_0x4a85('0x18')]({'raw':_0x159ed0['options']?_0x159ed0['options'][_0x4a85('0x19')]===undefined?!![]:![]:!![],'where':_0x159ed0[_0x4a85('0x1a')]?_0x159ed0[_0x4a85('0x1a')][_0x4a85('0x1b')]||null:null,'attributes':_0x159ed0[_0x4a85('0x1a')]?_0x159ed0[_0x4a85('0x1a')][_0x4a85('0x1c')]||null:null,'limit':_0x159ed0[_0x4a85('0x1a')]?_0x159ed0['options']['limit']||null:null,'include':_0x159ed0['options']?_0x159ed0[_0x4a85('0x1a')][_0x4a85('0x1d')]?_[_0x4a85('0x1e')](_0x159ed0[_0x4a85('0x1a')]['include'],function(_0x154bea){return{'model':db[_0x154bea[_0x4a85('0x1f')]],'as':_0x154bea['as'],'attributes':_0x154bea[_0x4a85('0x1c')],'include':_0x154bea[_0x4a85('0x1d')]?_[_0x4a85('0x1e')](_0x154bea['include'],function(_0x1075e2){return{'model':db[_0x1075e2[_0x4a85('0x1f')]],'as':_0x1075e2['as'],'attributes':_0x1075e2[_0x4a85('0x1c')],'include':_0x1075e2[_0x4a85('0x1d')]?_[_0x4a85('0x1e')](_0x1075e2[_0x4a85('0x1d')],function(_0x4a34d5){return{'model':db[_0x4a34d5[_0x4a85('0x1f')]],'as':_0x4a34d5['as'],'attributes':_0x4a34d5[_0x4a85('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4a85('0xb')](function(_0x56c41b){logger[_0x4a85('0xc')]('GetCampaign',_0x159ed0);logger[_0x4a85('0xf')](_0x4a85('0x16'),_0x159ed0,JSON[_0x4a85('0x11')](_0x56c41b));_0x50e210(_0x56c41b);})[_0x4a85('0x20')](function(_0x4596c6){logger[_0x4a85('0x12')](_0x4a85('0x16'),_0x4596c6[_0x4a85('0x14')],_0x159ed0);_0x374f34(_0x4435db['error'](0x1f4,_0x4596c6[_0x4a85('0x14')]));});});};
\ No newline at end of file
+var _0x45ea=['Campaign,\x20%s,\x20%s','result','catch','GetCampaign','Campaign','findAll','options','raw','where','limit','include','map','model','attributes','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0x45ea,0x1f0));var _0xa45e=function(_0x4b5c87,_0x536cba){_0x4b5c87=_0x4b5c87-0x0;var _0x44a35e=_0x45ea[_0x4b5c87];return _0x44a35e;};'use strict';var _=require(_0xa45e('0x0'));var util=require(_0xa45e('0x1'));var moment=require(_0xa45e('0x2'));var BPromise=require(_0xa45e('0x3'));var rs=require(_0xa45e('0x4'));var fs=require('fs');var Redis=require(_0xa45e('0x5'));var db=require(_0xa45e('0x6'))['db'];var utils=require(_0xa45e('0x7'));var logger=require(_0xa45e('0x8'))(_0xa45e('0x9'));var config=require(_0xa45e('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xa45e('0xb')][_0xa45e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x573ff8,_0x53dd85,_0x479cd8){return new BPromise(function(_0x40befe,_0x350f60){return client[_0xa45e('0xd')](_0x573ff8,_0x479cd8)[_0xa45e('0xe')](function(_0x2d73b0){logger['info']('Campaign,\x20%s,\x20%s',_0x53dd85,_0xa45e('0xf'));logger[_0xa45e('0x10')](_0xa45e('0x11'),_0x53dd85,_0xa45e('0xf'),JSON['stringify'](_0x2d73b0));if(_0x2d73b0[_0xa45e('0x12')]){if(_0x2d73b0['error'][_0xa45e('0x13')]===0x1f4){logger[_0xa45e('0x12')]('Campaign,\x20%s,\x20%s',_0x53dd85,_0x2d73b0['error'][_0xa45e('0x14')]);return _0x350f60(_0x2d73b0['error'][_0xa45e('0x14')]);}logger['error']('Campaign,\x20%s,\x20%s',_0x53dd85,_0x2d73b0['error'][_0xa45e('0x14')]);return _0x40befe(_0x2d73b0['error'][_0xa45e('0x14')]);}else{logger[_0xa45e('0x15')](_0xa45e('0x16'),_0x53dd85,_0xa45e('0xf'));_0x40befe(_0x2d73b0[_0xa45e('0x17')]['message']);}})[_0xa45e('0x18')](function(_0x1eeb1d){logger[_0xa45e('0x12')](_0xa45e('0x16'),_0x53dd85,_0x1eeb1d);_0x350f60(_0x1eeb1d);});});}exports[_0xa45e('0x19')]=function(_0x534e87){var _0x34b6c8=this;return new Promise(function(_0x8e85c1,_0xa7a6f4){return db[_0xa45e('0x1a')][_0xa45e('0x1b')]({'raw':_0x534e87[_0xa45e('0x1c')]?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x1d')]===undefined?!![]:![]:!![],'where':_0x534e87['options']?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x1e')]||null:null,'attributes':_0x534e87[_0xa45e('0x1c')]?_0x534e87['options']['attributes']||null:null,'limit':_0x534e87[_0xa45e('0x1c')]?_0x534e87['options'][_0xa45e('0x1f')]||null:null,'include':_0x534e87[_0xa45e('0x1c')]?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x20')]?_[_0xa45e('0x21')](_0x534e87['options'][_0xa45e('0x20')],function(_0x54f14d){return{'model':db[_0x54f14d[_0xa45e('0x22')]],'as':_0x54f14d['as'],'attributes':_0x54f14d[_0xa45e('0x23')],'include':_0x54f14d['include']?_['map'](_0x54f14d[_0xa45e('0x20')],function(_0x5aec7d){return{'model':db[_0x5aec7d[_0xa45e('0x22')]],'as':_0x5aec7d['as'],'attributes':_0x5aec7d[_0xa45e('0x23')],'include':_0x5aec7d[_0xa45e('0x20')]?_['map'](_0x5aec7d['include'],function(_0x2c7c9e){return{'model':db[_0x2c7c9e[_0xa45e('0x22')]],'as':_0x2c7c9e['as'],'attributes':_0x2c7c9e[_0xa45e('0x23')]};}):[]};}):[]};}):[]:[]})[_0xa45e('0xe')](function(_0x78a762){logger['info'](_0xa45e('0x19'),_0x534e87);logger[_0xa45e('0x10')]('GetCampaign',_0x534e87,JSON[_0xa45e('0x24')](_0x78a762));_0x8e85c1(_0x78a762);})['catch'](function(_0x552cb5){logger[_0xa45e('0x12')](_0xa45e('0x19'),_0x552cb5['message'],_0x534e87);_0xa7a6f4(_0x34b6c8['error'](0x1f4,_0x552cb5[_0xa45e('0x14')]));});});};
\ No newline at end of file
index 10e464d..257836c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d6=['/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addBlackLists','put','delete','destroy','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./campaign.controller','isAuthenticated','index','get','/:id','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xe4d6,0xd7));var _0x6e4d=function(_0x312765,_0x39e8b0){_0x312765=_0x312765-0x0;var _0x389760=_0xe4d6[_0x312765];return _0x389760;};'use strict';var multer=require(_0x6e4d('0x0'));var util=require(_0x6e4d('0x1'));var path=require(_0x6e4d('0x2'));var timeout=require(_0x6e4d('0x3'));var express=require('express');var router=express[_0x6e4d('0x4')]();var fs_extra=require(_0x6e4d('0x5'));var auth=require(_0x6e4d('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6e4d('0x7'));router['get']('/',auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x9')]);router[_0x6e4d('0xa')](_0x6e4d('0xb'),auth[_0x6e4d('0x8')](),controller['show']);router['get'](_0x6e4d('0xc'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0xd')]);router['get'](_0x6e4d('0xe'),auth['isAuthenticated'](),controller[_0x6e4d('0xf')]);router[_0x6e4d('0xa')](_0x6e4d('0x10'),auth[_0x6e4d('0x8')](),controller['getHopperFinals']);router['get'](_0x6e4d('0x11'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x12')]);router[_0x6e4d('0xa')](_0x6e4d('0x13'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x14')]);router[_0x6e4d('0xa')](_0x6e4d('0x15'),auth['isAuthenticated'](),controller[_0x6e4d('0x16')]);router[_0x6e4d('0x17')]('/',auth[_0x6e4d('0x8')](),controller['create']);router['post'](_0x6e4d('0x18'),auth['isAuthenticated'](),controller[_0x6e4d('0x19')]);router[_0x6e4d('0x17')]('/:id/lists',auth[_0x6e4d('0x8')](),controller['addLists']);router[_0x6e4d('0x17')](_0x6e4d('0x15'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x1a')]);router[_0x6e4d('0x1b')]('/:id',auth[_0x6e4d('0x8')](),controller['update']);router[_0x6e4d('0x1c')](_0x6e4d('0xb'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x1d')]);router['delete'](_0x6e4d('0x13'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x1e')]);router[_0x6e4d('0x1c')]('/:id/blacklists',auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x1f')]);module[_0x6e4d('0x20')]=router;
\ No newline at end of file
+var _0x38e2=['get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','getHopperFinals','/:id/hopper_black','getLists','/:id/blacklists','post','/:id/clone','/:id/lists','addLists','addBlackLists','update','delete','destroy','removeLists','removeBlackLists','exports','util','path','Router','fs-extra','../../config/environment','./campaign.controller'];(function(_0xc14a52,_0x5b84b9){var _0x2e5227=function(_0x580348){while(--_0x580348){_0xc14a52['push'](_0xc14a52['shift']());}};_0x2e5227(++_0x5b84b9);}(_0x38e2,0xff));var _0x238e=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x38e2[_0x4a9fb1];return _0x348672;};'use strict';var multer=require('multer');var util=require(_0x238e('0x0'));var path=require(_0x238e('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x238e('0x2')]();var fs_extra=require(_0x238e('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x238e('0x4'));var controller=require(_0x238e('0x5'));router[_0x238e('0x6')]('/',auth[_0x238e('0x7')](),controller[_0x238e('0x8')]);router['get'](_0x238e('0x9'),auth[_0x238e('0x7')](),controller[_0x238e('0xa')]);router['get'](_0x238e('0xb'),auth['isAuthenticated'](),controller[_0x238e('0xc')]);router['get']('/:id/hopper_histories',auth[_0x238e('0x7')](),controller[_0x238e('0xd')]);router[_0x238e('0x6')]('/:id/hopper_finals',auth[_0x238e('0x7')](),controller[_0x238e('0xe')]);router[_0x238e('0x6')](_0x238e('0xf'),auth[_0x238e('0x7')](),controller['getHopperBlacks']);router[_0x238e('0x6')]('/:id/lists',auth[_0x238e('0x7')](),controller[_0x238e('0x10')]);router[_0x238e('0x6')](_0x238e('0x11'),auth[_0x238e('0x7')](),controller['getBlackLists']);router[_0x238e('0x12')]('/',auth[_0x238e('0x7')](),controller['create']);router['post'](_0x238e('0x13'),auth[_0x238e('0x7')](),controller['clone']);router[_0x238e('0x12')](_0x238e('0x14'),auth[_0x238e('0x7')](),controller[_0x238e('0x15')]);router[_0x238e('0x12')](_0x238e('0x11'),auth[_0x238e('0x7')](),controller[_0x238e('0x16')]);router['put'](_0x238e('0x9'),auth[_0x238e('0x7')](),controller[_0x238e('0x17')]);router[_0x238e('0x18')](_0x238e('0x9'),auth[_0x238e('0x7')](),controller[_0x238e('0x19')]);router[_0x238e('0x18')]('/:id/lists',auth['isAuthenticated'](),controller[_0x238e('0x1a')]);router[_0x238e('0x18')](_0x238e('0x11'),auth['isAuthenticated'](),controller[_0x238e('0x1b')]);module[_0x238e('0x1c')]=router;
\ No newline at end of file
index 27f9c95..7fa8627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc02b=['VIRTUAL','getDataValue','key','sequelize','STRING','TEXT'];(function(_0x4a77b8,_0xdd710){var _0x509c8c=function(_0x2bf2a5){while(--_0x2bf2a5){_0x4a77b8['push'](_0x4a77b8['shift']());}};_0x509c8c(++_0xdd710);}(_0xc02b,0x183));var _0xbc02=function(_0x5c18ef,_0xa2e81d){_0x5c18ef=_0x5c18ef-0x0;var _0x33789d=_0xc02b[_0x5c18ef];return _0x33789d;};'use strict';var Sequelize=require(_0xbc02('0x0'));module['exports']={'key':{'type':Sequelize[_0xbc02('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0xbc02('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xbc02('0x1')]},'name':{'type':Sequelize[_0xbc02('0x3')],'get':function(){return this[_0xbc02('0x4')](_0xbc02('0x5'));}}};
\ No newline at end of file
+var _0x5571=['getDataValue','key','sequelize','STRING','VIRTUAL'];(function(_0x2dfd2b,_0x522d82){var _0x3fda3a=function(_0x3d28ef){while(--_0x3d28ef){_0x2dfd2b['push'](_0x2dfd2b['shift']());}};_0x3fda3a(++_0x522d82);}(_0x5571,0x156));var _0x1557=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x5571[_0x166742];return _0xb7814a;};'use strict';var Sequelize=require(_0x1557('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x1557('0x1')]},'name':{'type':Sequelize[_0x1557('0x2')],'get':function(){return this[_0x1557('0x3')](_0x1557('0x4'));}}};
\ No newline at end of file
index 8be5529..9e9160c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec0=['zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','Content-Range','reject','save','update','then','get','destroy','error','name','send','index','map','CannedAnswer','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','params','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf'];(function(_0xbb6973,_0x34c32e){var _0x2f19f2=function(_0x32a42e){while(--_0x32a42e){_0xbb6973['push'](_0xbb6973['shift']());}};_0x2f19f2(++_0x34c32e);}(_0x3ec0,0xa8));var _0x03ec=function(_0x5c42de,_0x4b3fcd){_0x5c42de=_0x5c42de-0x0;var _0x7e3b46=_0x3ec0[_0x5c42de];return _0x7e3b46;};'use strict';var emlformat=require(_0x03ec('0x0'));var rimraf=require(_0x03ec('0x1'));var zipdir=require(_0x03ec('0x2'));var jsonpatch=require(_0x03ec('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x03ec('0x4'));var Mustache=require(_0x03ec('0x5'));var util=require(_0x03ec('0x6'));var path=require(_0x03ec('0x7'));var sox=require(_0x03ec('0x8'));var csv=require('to-csv');var ejs=require(_0x03ec('0x9'));var fs=require('fs');var fs_extra=require(_0x03ec('0xa'));var _=require(_0x03ec('0xb'));var squel=require('squel');var crypto=require(_0x03ec('0xc'));var jsforce=require(_0x03ec('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x03ec('0xe'));var querystring=require(_0x03ec('0xf'));var Papa=require('papaparse');var Redis=require(_0x03ec('0x10'));var authService=require(_0x03ec('0x11'));var qs=require(_0x03ec('0x12'));var as=require(_0x03ec('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x03ec('0x14'))(_0x03ec('0x15'));var utils=require(_0x03ec('0x16'));var config=require(_0x03ec('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x03ec('0x18'))['db'];function respondWithStatusCode(_0x28c845,_0x1aab11){_0x1aab11=_0x1aab11||0xcc;return function(_0x3c7382){if(_0x3c7382){return _0x28c845[_0x03ec('0x19')](_0x1aab11);}return _0x28c845[_0x03ec('0x1a')](_0x1aab11)[_0x03ec('0x1b')]();};}function respondWithResult(_0x436233,_0x79c2b7){_0x79c2b7=_0x79c2b7||0xc8;return function(_0x2ce012){if(_0x2ce012){return _0x436233[_0x03ec('0x1a')](_0x79c2b7)[_0x03ec('0x1c')](_0x2ce012);}};}function respondWithFilteredResult(_0x3a57ef,_0x1323db){return function(_0x276380){if(_0x276380){var _0x5755f7=typeof _0x1323db['offset']===_0x03ec('0x1d')&&typeof _0x1323db[_0x03ec('0x1e')]===_0x03ec('0x1d');var _0x3aba5d=_0x276380[_0x03ec('0x1f')];var _0x13f07a=_0x5755f7?0x0:_0x1323db['offset'];var _0x29810f=_0x5755f7?_0x276380[_0x03ec('0x1f')]:_0x1323db['offset']+_0x1323db[_0x03ec('0x1e')];var _0x45a7a0;if(_0x29810f>=_0x3aba5d){_0x29810f=_0x3aba5d;_0x45a7a0=0xc8;}else{_0x45a7a0=0xce;}_0x3a57ef[_0x03ec('0x1a')](_0x45a7a0);return _0x3a57ef['set'](_0x03ec('0x20'),_0x13f07a+'-'+_0x29810f+'/'+_0x3aba5d)['json'](_0x276380);}return null;};}function patchUpdates(_0x461675){return function(_0x2abd9c){try{jsonpatch['apply'](_0x2abd9c,_0x461675,!![]);}catch(_0x35dfd7){return BPromise[_0x03ec('0x21')](_0x35dfd7);}return _0x2abd9c[_0x03ec('0x22')]();};}function saveUpdates(_0x1f60f0,_0x467642){return function(_0x19d383){if(_0x19d383){return _0x19d383[_0x03ec('0x23')](_0x1f60f0)[_0x03ec('0x24')](function(_0x5579d1){return _0x5579d1;});}return null;};}function removeEntity(_0x1a8644,_0x5cf033){return function(_0x3e6a1b){if(_0x3e6a1b){return _0x3e6a1b['destroy']()[_0x03ec('0x24')](function(){var _0x32823b=_0x3e6a1b[_0x03ec('0x25')]({'plain':!![]});var _0x8d8590='CannedAnswers';return db['UserProfileResource'][_0x03ec('0x26')]({'where':{'type':_0x8d8590,'resourceId':_0x32823b['id']}})[_0x03ec('0x24')](function(){return _0x3e6a1b;});})[_0x03ec('0x24')](function(){_0x1a8644[_0x03ec('0x1a')](0xcc)[_0x03ec('0x1b')]();});}};}function handleEntityNotFound(_0x50edbb,_0x2f943a){return function(_0xc00f34){if(!_0xc00f34){_0x50edbb[_0x03ec('0x19')](0x194);}return _0xc00f34;};}function handleError(_0x3baf44,_0x1bfa5f){_0x1bfa5f=_0x1bfa5f||0x1f4;return function(_0x2090c5){logger[_0x03ec('0x27')](_0x2090c5['stack']);if(_0x2090c5[_0x03ec('0x28')]){delete _0x2090c5['name'];}_0x3baf44[_0x03ec('0x1a')](_0x1bfa5f)[_0x03ec('0x29')](_0x2090c5);};}exports[_0x03ec('0x2a')]=function(_0x475fc1,_0x38d7fa){var _0x80a941={},_0x1458eb={},_0x15ee08={'count':0x0,'rows':[]};var _0x36e930=_[_0x03ec('0x2b')](db[_0x03ec('0x2c')][_0x03ec('0x2d')],function(_0x51acb6){return{'name':_0x51acb6[_0x03ec('0x2e')],'type':_0x51acb6['type'][_0x03ec('0x2f')]};});_0x1458eb[_0x03ec('0x30')]=_[_0x03ec('0x2b')](_0x36e930,_0x03ec('0x28'));_0x1458eb[_0x03ec('0x31')]=_[_0x03ec('0x32')](_0x475fc1[_0x03ec('0x31')]);_0x1458eb[_0x03ec('0x33')]=_[_0x03ec('0x34')](_0x1458eb['model'],_0x1458eb[_0x03ec('0x31')]);_0x80a941[_0x03ec('0x35')]=_[_0x03ec('0x34')](_0x1458eb[_0x03ec('0x30')],qs[_0x03ec('0x36')](_0x475fc1['query'][_0x03ec('0x36')]));_0x80a941[_0x03ec('0x35')]=_0x80a941['attributes'][_0x03ec('0x37')]?_0x80a941[_0x03ec('0x35')]:_0x1458eb['model'];if(!_0x475fc1[_0x03ec('0x31')][_0x03ec('0x38')](_0x03ec('0x39'))){_0x80a941[_0x03ec('0x1e')]=qs[_0x03ec('0x1e')](_0x475fc1[_0x03ec('0x31')]['limit']);_0x80a941['offset']=qs[_0x03ec('0x3a')](_0x475fc1['query'][_0x03ec('0x3a')]);}_0x80a941['order']=qs[_0x03ec('0x3b')](_0x475fc1[_0x03ec('0x31')]['sort']);_0x80a941[_0x03ec('0x3c')]=qs[_0x03ec('0x33')](_[_0x03ec('0x3d')](_0x475fc1[_0x03ec('0x31')],_0x1458eb[_0x03ec('0x33')]),_0x36e930);if(_0x475fc1[_0x03ec('0x31')][_0x03ec('0x3e')]){_0x80a941[_0x03ec('0x3c')]=_[_0x03ec('0x3f')](_0x80a941[_0x03ec('0x3c')],{'$or':[{'key':{'$like':'%'+_0x475fc1[_0x03ec('0x31')][_0x03ec('0x3e')]+'%'}},{'value':{'$like':'%'+_0x475fc1[_0x03ec('0x31')][_0x03ec('0x3e')]+'%'}}]});}_0x80a941=_[_0x03ec('0x3f')]({},_0x80a941,_0x475fc1[_0x03ec('0x40')]);var _0x354482={'where':_0x80a941[_0x03ec('0x3c')]};return db[_0x03ec('0x2c')]['count'](_0x354482)[_0x03ec('0x24')](function(_0x1ed017){_0x15ee08['count']=_0x1ed017;if(_0x475fc1[_0x03ec('0x31')][_0x03ec('0x41')]){_0x80a941[_0x03ec('0x42')]=[{'all':!![]}];}return db[_0x03ec('0x2c')]['findAll'](_0x80a941);})[_0x03ec('0x24')](function(_0x57c170){_0x15ee08[_0x03ec('0x43')]=_0x57c170;return _0x15ee08;})['then'](respondWithFilteredResult(_0x38d7fa,_0x80a941))[_0x03ec('0x44')](handleError(_0x38d7fa,null));};exports['show']=function(_0x44fc18,_0xbc51f9){var _0x3ea222={'raw':!![],'where':{'id':_0x44fc18[_0x03ec('0x45')]['id']}},_0x5c5a38={};_0x5c5a38[_0x03ec('0x30')]=_['keys'](db[_0x03ec('0x2c')][_0x03ec('0x2d')]);_0x5c5a38[_0x03ec('0x31')]=_[_0x03ec('0x32')](_0x44fc18[_0x03ec('0x31')]);_0x5c5a38[_0x03ec('0x33')]=_[_0x03ec('0x34')](_0x5c5a38[_0x03ec('0x30')],_0x5c5a38[_0x03ec('0x31')]);_0x3ea222[_0x03ec('0x35')]=_[_0x03ec('0x34')](_0x5c5a38[_0x03ec('0x30')],qs['fields'](_0x44fc18['query'][_0x03ec('0x36')]));_0x3ea222['attributes']=_0x3ea222[_0x03ec('0x35')]['length']?_0x3ea222[_0x03ec('0x35')]:_0x5c5a38['model'];if(_0x44fc18['query'][_0x03ec('0x41')]){_0x3ea222[_0x03ec('0x42')]=[{'all':!![]}];}_0x3ea222=_[_0x03ec('0x3f')]({},_0x3ea222,_0x44fc18['options']);return db[_0x03ec('0x2c')][_0x03ec('0x46')](_0x3ea222)[_0x03ec('0x24')](handleEntityNotFound(_0xbc51f9,null))[_0x03ec('0x24')](respondWithResult(_0xbc51f9,null))[_0x03ec('0x44')](handleError(_0xbc51f9,null));};exports[_0x03ec('0x23')]=function(_0x38d6c8,_0x1506b4){if(_0x38d6c8[_0x03ec('0x47')]['id']){delete _0x38d6c8[_0x03ec('0x47')]['id'];}return db[_0x03ec('0x2c')][_0x03ec('0x46')]({'where':{'id':_0x38d6c8[_0x03ec('0x45')]['id']}})[_0x03ec('0x24')](handleEntityNotFound(_0x1506b4,null))['then'](saveUpdates(_0x38d6c8[_0x03ec('0x47')],null))[_0x03ec('0x24')](respondWithResult(_0x1506b4,null))[_0x03ec('0x44')](handleError(_0x1506b4,null));};exports[_0x03ec('0x26')]=function(_0x1abbd6,_0x6445b1){return db[_0x03ec('0x2c')][_0x03ec('0x46')]({'where':{'id':_0x1abbd6[_0x03ec('0x45')]['id']}})[_0x03ec('0x24')](handleEntityNotFound(_0x6445b1,null))[_0x03ec('0x24')](removeEntity(_0x6445b1,null))[_0x03ec('0x44')](handleError(_0x6445b1,null));};exports[_0x03ec('0x48')]=function(_0x124c8e,_0x342c4f){var _0x21cc44={'key':_0x124c8e[_0x03ec('0x47')][_0x03ec('0x2f')]};if(_0x124c8e[_0x03ec('0x47')][_0x03ec('0x49')]){_0x21cc44[_0x03ec('0x49')]=_0x124c8e['body'][_0x03ec('0x49')];}else if(_0x124c8e['body'][_0x03ec('0x4a')]){_0x21cc44[_0x03ec('0x4a')]=_0x124c8e[_0x03ec('0x47')]['SmsAccountId'];}else if(_0x124c8e[_0x03ec('0x47')][_0x03ec('0x4b')]){_0x21cc44['OpenchannelAccountId']=_0x124c8e[_0x03ec('0x47')][_0x03ec('0x4b')];}else if(_0x124c8e[_0x03ec('0x47')]['ChatWebsiteId']){_0x21cc44[_0x03ec('0x4c')]=_0x124c8e['body'][_0x03ec('0x4c')];}return db[_0x03ec('0x2c')][_0x03ec('0x46')]({'where':_0x21cc44})['then'](function(_0x3985dc){if(_0x3985dc){throw new db[(_0x03ec('0x4d'))][(_0x03ec('0x4e'))](_0x03ec('0x4f'));}return db[_0x03ec('0x2c')]['create'](_0x124c8e[_0x03ec('0x47')]);})['then'](function(_0x2facc7){var _0x279b0a=_0x124c8e[_0x03ec('0x50')][_0x03ec('0x25')]({'plain':!![]});if(!_0x279b0a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x279b0a['role']===_0x03ec('0x50')){var _0x333f2f=_0x2facc7['get']({'plain':!![]});return db[_0x03ec('0x51')][_0x03ec('0x46')]({'where':{'name':'CannedAnswers','userProfileId':_0x279b0a[_0x03ec('0x52')]},'raw':!![]})['then'](function(_0x4242af){if(_0x4242af&&_0x4242af[_0x03ec('0x53')]===0x0){return db['UserProfileResource'][_0x03ec('0x48')]({'name':_0x333f2f[_0x03ec('0x28')],'resourceId':_0x333f2f['id'],'type':_0x4242af[_0x03ec('0x28')],'sectionId':_0x4242af['id']},{})[_0x03ec('0x24')](function(){return _0x2facc7;});}else{return _0x2facc7;}})[_0x03ec('0x44')](function(_0x46128c){logger[_0x03ec('0x27')](_0x03ec('0x54'),_0x46128c);throw _0x46128c;});}return _0x2facc7;})['then'](respondWithResult(_0x342c4f,0xc9))[_0x03ec('0x44')](handleError(_0x342c4f,null));};
\ No newline at end of file
+var _0x1c9c=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','options','CannedAnswer','includeAll','catch','params','include','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','destroy','CannedAnswers','UserProfileResource','error','stack','name','send','map','rawAttributes'];(function(_0x118573,_0x2512d4){var _0x35d116=function(_0x48423a){while(--_0x48423a){_0x118573['push'](_0x118573['shift']());}};_0x35d116(++_0x2512d4);}(_0x1c9c,0x121));var _0xc1c9=function(_0x127187,_0x4f7f5c){_0x127187=_0x127187-0x0;var _0xcb9e8e=_0x1c9c[_0x127187];return _0xcb9e8e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc1c9('0x0'));var zipdir=require(_0xc1c9('0x1'));var jsonpatch=require(_0xc1c9('0x2'));var rp=require(_0xc1c9('0x3'));var moment=require('moment');var BPromise=require(_0xc1c9('0x4'));var Mustache=require(_0xc1c9('0x5'));var util=require(_0xc1c9('0x6'));var path=require(_0xc1c9('0x7'));var sox=require(_0xc1c9('0x8'));var csv=require(_0xc1c9('0x9'));var ejs=require(_0xc1c9('0xa'));var fs=require('fs');var fs_extra=require(_0xc1c9('0xb'));var _=require(_0xc1c9('0xc'));var squel=require(_0xc1c9('0xd'));var crypto=require('crypto');var jsforce=require(_0xc1c9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc1c9('0x9'));var querystring=require('querystring');var Papa=require(_0xc1c9('0xf'));var Redis=require(_0xc1c9('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc1c9('0x11'));var hardwareService=require(_0xc1c9('0x12'));var logger=require(_0xc1c9('0x13'))(_0xc1c9('0x14'));var utils=require(_0xc1c9('0x15'));var config=require(_0xc1c9('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc1c9('0x17'))['db'];function respondWithStatusCode(_0x38ac0c,_0x312967){_0x312967=_0x312967||0xcc;return function(_0x2a542c){if(_0x2a542c){return _0x38ac0c[_0xc1c9('0x18')](_0x312967);}return _0x38ac0c['status'](_0x312967)[_0xc1c9('0x19')]();};}function respondWithResult(_0xe8f057,_0x528723){_0x528723=_0x528723||0xc8;return function(_0x4f395f){if(_0x4f395f){return _0xe8f057[_0xc1c9('0x1a')](_0x528723)['json'](_0x4f395f);}};}function respondWithFilteredResult(_0x377391,_0x389144){return function(_0x3a2658){if(_0x3a2658){var _0x34177f=typeof _0x389144['offset']===_0xc1c9('0x1b')&&typeof _0x389144[_0xc1c9('0x1c')]===_0xc1c9('0x1b');var _0x34247b=_0x3a2658[_0xc1c9('0x1d')];var _0x4cc5b1=_0x34177f?0x0:_0x389144[_0xc1c9('0x1e')];var _0x2195d0=_0x34177f?_0x3a2658[_0xc1c9('0x1d')]:_0x389144[_0xc1c9('0x1e')]+_0x389144[_0xc1c9('0x1c')];var _0x317b8f;if(_0x2195d0>=_0x34247b){_0x2195d0=_0x34247b;_0x317b8f=0xc8;}else{_0x317b8f=0xce;}_0x377391[_0xc1c9('0x1a')](_0x317b8f);return _0x377391[_0xc1c9('0x1f')](_0xc1c9('0x20'),_0x4cc5b1+'-'+_0x2195d0+'/'+_0x34247b)[_0xc1c9('0x21')](_0x3a2658);}return null;};}function patchUpdates(_0x16662e){return function(_0x1dfe0e){try{jsonpatch[_0xc1c9('0x22')](_0x1dfe0e,_0x16662e,!![]);}catch(_0x5c94de){return BPromise[_0xc1c9('0x23')](_0x5c94de);}return _0x1dfe0e['save']();};}function saveUpdates(_0x3bb2e6,_0x3aebef){return function(_0x258796){if(_0x258796){return _0x258796[_0xc1c9('0x24')](_0x3bb2e6)[_0xc1c9('0x25')](function(_0xc1e90b){return _0xc1e90b;});}return null;};}function removeEntity(_0x59b02a,_0x19e5ef){return function(_0x3679a0){if(_0x3679a0){return _0x3679a0[_0xc1c9('0x26')]()[_0xc1c9('0x25')](function(){var _0x19f9b4=_0x3679a0['get']({'plain':!![]});var _0xf2d291=_0xc1c9('0x27');return db[_0xc1c9('0x28')]['destroy']({'where':{'type':_0xf2d291,'resourceId':_0x19f9b4['id']}})['then'](function(){return _0x3679a0;});})[_0xc1c9('0x25')](function(){_0x59b02a[_0xc1c9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3be0cf,_0x3723cc){return function(_0x3151fc){if(!_0x3151fc){_0x3be0cf[_0xc1c9('0x18')](0x194);}return _0x3151fc;};}function handleError(_0x4039b0,_0x502609){_0x502609=_0x502609||0x1f4;return function(_0xa92d31){logger[_0xc1c9('0x29')](_0xa92d31[_0xc1c9('0x2a')]);if(_0xa92d31[_0xc1c9('0x2b')]){delete _0xa92d31[_0xc1c9('0x2b')];}_0x4039b0['status'](_0x502609)[_0xc1c9('0x2c')](_0xa92d31);};}exports['index']=function(_0x22f813,_0x2a0554){var _0x214f3a={},_0x4e6fd4={},_0x2b753b={'count':0x0,'rows':[]};var _0x17a205=_[_0xc1c9('0x2d')](db['CannedAnswer'][_0xc1c9('0x2e')],function(_0xbf078c){return{'name':_0xbf078c[_0xc1c9('0x2f')],'type':_0xbf078c[_0xc1c9('0x30')][_0xc1c9('0x31')]};});_0x4e6fd4[_0xc1c9('0x32')]=_[_0xc1c9('0x2d')](_0x17a205,'name');_0x4e6fd4[_0xc1c9('0x33')]=_[_0xc1c9('0x34')](_0x22f813[_0xc1c9('0x33')]);_0x4e6fd4[_0xc1c9('0x35')]=_[_0xc1c9('0x36')](_0x4e6fd4[_0xc1c9('0x32')],_0x4e6fd4[_0xc1c9('0x33')]);_0x214f3a[_0xc1c9('0x37')]=_[_0xc1c9('0x36')](_0x4e6fd4['model'],qs['fields'](_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x38')]));_0x214f3a[_0xc1c9('0x37')]=_0x214f3a[_0xc1c9('0x37')][_0xc1c9('0x39')]?_0x214f3a[_0xc1c9('0x37')]:_0x4e6fd4[_0xc1c9('0x32')];if(!_0x22f813['query']['hasOwnProperty']('nolimit')){_0x214f3a[_0xc1c9('0x1c')]=qs['limit'](_0x22f813['query'][_0xc1c9('0x1c')]);_0x214f3a[_0xc1c9('0x1e')]=qs[_0xc1c9('0x1e')](_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x1e')]);}_0x214f3a[_0xc1c9('0x3a')]=qs[_0xc1c9('0x3b')](_0x22f813['query']['sort']);_0x214f3a[_0xc1c9('0x3c')]=qs[_0xc1c9('0x35')](_['pick'](_0x22f813[_0xc1c9('0x33')],_0x4e6fd4[_0xc1c9('0x35')]),_0x17a205);if(_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x3d')]){_0x214f3a['where']=_[_0xc1c9('0x3e')](_0x214f3a['where'],{'$or':[{'key':{'$like':'%'+_0x22f813[_0xc1c9('0x33')]['filter']+'%'}},{'value':{'$like':'%'+_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x3d')]+'%'}}]});}_0x214f3a=_['merge']({},_0x214f3a,_0x22f813[_0xc1c9('0x3f')]);var _0x388df9={'where':_0x214f3a[_0xc1c9('0x3c')]};return db[_0xc1c9('0x40')][_0xc1c9('0x1d')](_0x388df9)['then'](function(_0x3e0ad8){_0x2b753b[_0xc1c9('0x1d')]=_0x3e0ad8;if(_0x22f813['query'][_0xc1c9('0x41')]){_0x214f3a['include']=[{'all':!![]}];}return db[_0xc1c9('0x40')]['findAll'](_0x214f3a);})['then'](function(_0x3395c8){_0x2b753b['rows']=_0x3395c8;return _0x2b753b;})[_0xc1c9('0x25')](respondWithFilteredResult(_0x2a0554,_0x214f3a))[_0xc1c9('0x42')](handleError(_0x2a0554,null));};exports['show']=function(_0x37a84d,_0x548354){var _0x1f82b7={'raw':!![],'where':{'id':_0x37a84d[_0xc1c9('0x43')]['id']}},_0x489203={};_0x489203[_0xc1c9('0x32')]=_[_0xc1c9('0x34')](db[_0xc1c9('0x40')][_0xc1c9('0x2e')]);_0x489203[_0xc1c9('0x33')]=_[_0xc1c9('0x34')](_0x37a84d[_0xc1c9('0x33')]);_0x489203[_0xc1c9('0x35')]=_[_0xc1c9('0x36')](_0x489203[_0xc1c9('0x32')],_0x489203[_0xc1c9('0x33')]);_0x1f82b7[_0xc1c9('0x37')]=_['intersection'](_0x489203[_0xc1c9('0x32')],qs[_0xc1c9('0x38')](_0x37a84d[_0xc1c9('0x33')]['fields']));_0x1f82b7[_0xc1c9('0x37')]=_0x1f82b7[_0xc1c9('0x37')][_0xc1c9('0x39')]?_0x1f82b7[_0xc1c9('0x37')]:_0x489203[_0xc1c9('0x32')];if(_0x37a84d[_0xc1c9('0x33')][_0xc1c9('0x41')]){_0x1f82b7[_0xc1c9('0x44')]=[{'all':!![]}];}_0x1f82b7=_['merge']({},_0x1f82b7,_0x37a84d[_0xc1c9('0x3f')]);return db[_0xc1c9('0x40')][_0xc1c9('0x45')](_0x1f82b7)[_0xc1c9('0x25')](handleEntityNotFound(_0x548354,null))[_0xc1c9('0x25')](respondWithResult(_0x548354,null))[_0xc1c9('0x42')](handleError(_0x548354,null));};exports[_0xc1c9('0x24')]=function(_0xdf9b7e,_0x5c39ff){if(_0xdf9b7e['body']['id']){delete _0xdf9b7e[_0xc1c9('0x46')]['id'];}return db[_0xc1c9('0x40')][_0xc1c9('0x45')]({'where':{'id':_0xdf9b7e[_0xc1c9('0x43')]['id']}})[_0xc1c9('0x25')](handleEntityNotFound(_0x5c39ff,null))['then'](saveUpdates(_0xdf9b7e['body'],null))[_0xc1c9('0x25')](respondWithResult(_0x5c39ff,null))[_0xc1c9('0x42')](handleError(_0x5c39ff,null));};exports[_0xc1c9('0x26')]=function(_0x107839,_0x22db33){return db['CannedAnswer'][_0xc1c9('0x45')]({'where':{'id':_0x107839[_0xc1c9('0x43')]['id']}})[_0xc1c9('0x25')](handleEntityNotFound(_0x22db33,null))['then'](removeEntity(_0x22db33,null))[_0xc1c9('0x42')](handleError(_0x22db33,null));};exports[_0xc1c9('0x47')]=function(_0x558f09,_0x4143bd){var _0x577d05={'key':_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x31')]};if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x48')]){_0x577d05[_0xc1c9('0x48')]=_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x48')];}else if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x49')]){_0x577d05[_0xc1c9('0x49')]=_0x558f09[_0xc1c9('0x46')]['SmsAccountId'];}else if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4a')]){_0x577d05['OpenchannelAccountId']=_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4a')];}else if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4b')]){_0x577d05[_0xc1c9('0x4b')]=_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4b')];}return db[_0xc1c9('0x40')][_0xc1c9('0x45')]({'where':_0x577d05})[_0xc1c9('0x25')](function(_0x3228f2){if(_0x3228f2){throw new db[(_0xc1c9('0x4c'))]['ValidationError'](_0xc1c9('0x4d'));}return db[_0xc1c9('0x40')][_0xc1c9('0x47')](_0x558f09['body']);})['then'](function(_0x1d41c2){var _0x59831b=_0x558f09['user'][_0xc1c9('0x4e')]({'plain':!![]});if(!_0x59831b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x59831b[_0xc1c9('0x4f')]==='user'){var _0xed0ed=_0x1d41c2['get']({'plain':!![]});return db[_0xc1c9('0x50')][_0xc1c9('0x45')]({'where':{'name':_0xc1c9('0x27'),'userProfileId':_0x59831b[_0xc1c9('0x51')]},'raw':!![]})[_0xc1c9('0x25')](function(_0x2fb8a3){if(_0x2fb8a3&&_0x2fb8a3[_0xc1c9('0x52')]===0x0){return db['UserProfileResource']['create']({'name':_0xed0ed[_0xc1c9('0x2b')],'resourceId':_0xed0ed['id'],'type':_0x2fb8a3[_0xc1c9('0x2b')],'sectionId':_0x2fb8a3['id']},{})[_0xc1c9('0x25')](function(){return _0x1d41c2;});}else{return _0x1d41c2;}})[_0xc1c9('0x42')](function(_0x254fd1){logger[_0xc1c9('0x29')](_0xc1c9('0x53'),_0x254fd1);throw _0x254fd1;});}return _0x1d41c2;})[_0xc1c9('0x25')](respondWithResult(_0x4143bd,0xc9))[_0xc1c9('0x42')](handleError(_0x4143bd,null));};
\ No newline at end of file
index 2e9c5a5..18226a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc7c=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0xbc7c,0x1a4));var _0xcbc7=function(_0x3b8170,_0x3f8a3f){_0x3b8170=_0x3b8170-0x0;var _0xbd0a3b=_0xbc7c[_0x3b8170];return _0xbd0a3b;};'use strict';var _=require('lodash');var util=require(_0xcbc7('0x0'));var logger=require('../../config/logger')(_0xcbc7('0x1'));var moment=require(_0xcbc7('0x2'));var BPromise=require(_0xcbc7('0x3'));var rp=require(_0xcbc7('0x4'));var fs=require('fs');var path=require(_0xcbc7('0x5'));var rimraf=require(_0xcbc7('0x6'));var config=require(_0xcbc7('0x7'));var attributes=require(_0xcbc7('0x8'));module[_0xcbc7('0x9')]=function(_0x4a1d0f,_0x1dc456){return _0x4a1d0f[_0xcbc7('0xa')](_0xcbc7('0xb'),attributes,{'tableName':_0xcbc7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xcbc7('0xd')});};
\ No newline at end of file
+var _0xb789=['./cannedAnswer.attributes','define','CannedAnswer','utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x409456,_0x36e168){var _0x9e5160=function(_0x59fa4c){while(--_0x59fa4c){_0x409456['push'](_0x409456['shift']());}};_0x9e5160(++_0x36e168);}(_0xb789,0xc7));var _0x9b78=function(_0x521c46,_0x64b23b){_0x521c46=_0x521c46-0x0;var _0x5502fe=_0xb789[_0x521c46];return _0x5502fe;};'use strict';var _=require('lodash');var util=require(_0x9b78('0x0'));var logger=require(_0x9b78('0x1'))(_0x9b78('0x2'));var moment=require(_0x9b78('0x3'));var BPromise=require(_0x9b78('0x4'));var rp=require(_0x9b78('0x5'));var fs=require('fs');var path=require(_0x9b78('0x6'));var rimraf=require(_0x9b78('0x7'));var config=require(_0x9b78('0x8'));var attributes=require(_0x9b78('0x9'));module['exports']=function(_0x48ca05,_0x16723e){return _0x48ca05[_0x9b78('0xa')](_0x9b78('0xb'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9b78('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 13e07a5..1562b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x31bd37,_0x5f5495){var _0x524163=function(_0x2b48a0){while(--_0x2b48a0){_0x31bd37['push'](_0x31bd37['shift']());}};_0x524163(++_0x5f5495);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x215545,_0x1bac4e){var _0x152390=function(_0x34a3c5){while(--_0x34a3c5){_0x215545['push'](_0x215545['shift']());}};_0x152390(++_0x1bac4e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 0e1704c..df401ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f0=['get','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./cannedAnswer.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x36f0,0x9f));var _0x036f=function(_0x58a975,_0x4f7451){_0x58a975=_0x58a975-0x0;var _0x47f055=_0x36f0[_0x58a975];return _0x47f055;};'use strict';var multer=require(_0x036f('0x0'));var util=require(_0x036f('0x1'));var path=require(_0x036f('0x2'));var timeout=require(_0x036f('0x3'));var express=require('express');var router=express[_0x036f('0x4')]();var fs_extra=require(_0x036f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x036f('0x6'));var config=require(_0x036f('0x7'));var controller=require(_0x036f('0x8'));router[_0x036f('0x9')]('/',auth['isAuthenticated'](),controller[_0x036f('0xa')]);router[_0x036f('0x9')](_0x036f('0xb'),auth['isAuthenticated'](),controller[_0x036f('0xc')]);router[_0x036f('0xd')]('/',auth[_0x036f('0xe')](),controller[_0x036f('0xf')]);router[_0x036f('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x036f('0x11')]);router[_0x036f('0x12')]('/:id',auth[_0x036f('0xe')](),controller[_0x036f('0x13')]);module[_0x036f('0x14')]=router;
\ No newline at end of file
+var _0xcda6=['create','put','update','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x5b209c,_0x1d3141){var _0x1afe7a=function(_0x12f16f){while(--_0x12f16f){_0x5b209c['push'](_0x5b209c['shift']());}};_0x1afe7a(++_0x1d3141);}(_0xcda6,0x192));var _0x6cda=function(_0x4d9fa4,_0x168f86){_0x4d9fa4=_0x4d9fa4-0x0;var _0x2b3a61=_0xcda6[_0x4d9fa4];return _0x2b3a61;};'use strict';var multer=require(_0x6cda('0x0'));var util=require(_0x6cda('0x1'));var path=require('path');var timeout=require(_0x6cda('0x2'));var express=require(_0x6cda('0x3'));var router=express[_0x6cda('0x4')]();var fs_extra=require(_0x6cda('0x5'));var auth=require(_0x6cda('0x6'));var interaction=require(_0x6cda('0x7'));var config=require(_0x6cda('0x8'));var controller=require(_0x6cda('0x9'));router[_0x6cda('0xa')]('/',auth[_0x6cda('0xb')](),controller[_0x6cda('0xc')]);router[_0x6cda('0xa')](_0x6cda('0xd'),auth[_0x6cda('0xb')](),controller[_0x6cda('0xe')]);router[_0x6cda('0xf')]('/',auth[_0x6cda('0xb')](),controller[_0x6cda('0x10')]);router[_0x6cda('0x11')](_0x6cda('0xd'),auth[_0x6cda('0xb')](),controller[_0x6cda('0x12')]);router['delete']('/:id',auth[_0x6cda('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 19f0b35..ac53e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b52=['1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports'];(function(_0xb63a92,_0x306d43){var _0x38fe73=function(_0x5c04ff){while(--_0x5c04ff){_0xb63a92['push'](_0xb63a92['shift']());}};_0x38fe73(++_0x306d43);}(_0x2b52,0x12a));var _0x22b5=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x2b52[_0x29d915];return _0x160f86;};'use strict';var Sequelize=require(_0x22b5('0x0'));module[_0x22b5('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x22b5('0x2')},'clid':{'type':Sequelize[_0x22b5('0x3')]},'src':{'type':Sequelize[_0x22b5('0x3')]},'dst':{'type':Sequelize[_0x22b5('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x22b5('0x3')]},'lastapp':{'type':Sequelize[_0x22b5('0x3')]},'lastdata':{'type':Sequelize[_0x22b5('0x3')]},'duration':{'type':Sequelize[_0x22b5('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x22b5('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x22b5('0x3')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x22b5('0x3')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x22b5('0x3')]},'peeraccount':{'type':Sequelize[_0x22b5('0x3')]},'type':{'type':Sequelize[_0x22b5('0x3')]},'tag':{'type':Sequelize[_0x22b5('0x3')]}};
\ No newline at end of file
+var _0xbc9d=['sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x1b3158,_0xeb878f){var _0x25a2b0=function(_0x3b1114){while(--_0x3b1114){_0x1b3158['push'](_0x1b3158['shift']());}};_0x25a2b0(++_0xeb878f);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x404751,_0x5e9ca7){_0x404751=_0x404751-0x0;var _0x24e50d=_0xbc9d[_0x404751];return _0x24e50d;};'use strict';var Sequelize=require(_0xdbc9('0x0'));module[_0xdbc9('0x1')]={'calldate':{'type':Sequelize[_0xdbc9('0x2')],'allowNull':![],'defaultValue':_0xdbc9('0x3')},'clid':{'type':Sequelize[_0xdbc9('0x4')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xdbc9('0x4')]},'dstchannel':{'type':Sequelize[_0xdbc9('0x4')]},'lastapp':{'type':Sequelize[_0xdbc9('0x4')]},'lastdata':{'type':Sequelize[_0xdbc9('0x4')]},'duration':{'type':Sequelize[_0xdbc9('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xdbc9('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xdbc9('0x4')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xdbc9('0x4')]},'userfield':{'type':Sequelize[_0xdbc9('0x4')]},'uniqueid':{'type':Sequelize[_0xdbc9('0x4')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xdbc9('0x4')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0xdbc9('0x4')]}};
\ No newline at end of file
index 7a6f81e..8499e13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1670=['bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','Cdr','includeAll','include','findAll','rows','show','create','body','find','params','catch','describe','eml-format','rimraf','fast-json-patch','moment'];(function(_0x3ab909,_0x1f0383){var _0x3147bd=function(_0x4dc8f0){while(--_0x4dc8f0){_0x3ab909['push'](_0x3ab909['shift']());}};_0x3147bd(++_0x1f0383);}(_0x1670,0x9a));var _0x0167=function(_0x1138cb,_0x369d94){_0x1138cb=_0x1138cb-0x0;var _0x5b981f=_0x1670[_0x1138cb];return _0x5b981f;};'use strict';var emlformat=require(_0x0167('0x0'));var rimraf=require(_0x0167('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0167('0x2'));var rp=require('request-promise');var moment=require(_0x0167('0x3'));var BPromise=require(_0x0167('0x4'));var Mustache=require(_0x0167('0x5'));var util=require(_0x0167('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0167('0x7'));var ejs=require(_0x0167('0x8'));var fs=require('fs');var fs_extra=require(_0x0167('0x9'));var _=require(_0x0167('0xa'));var squel=require(_0x0167('0xb'));var crypto=require(_0x0167('0xc'));var jsforce=require(_0x0167('0xd'));var deskjs=require(_0x0167('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0167('0xf'));var Redis=require(_0x0167('0x10'));var authService=require(_0x0167('0x11'));var qs=require(_0x0167('0x12'));var as=require(_0x0167('0x13'));var hardwareService=require(_0x0167('0x14'));var logger=require(_0x0167('0x15'))(_0x0167('0x16'));var utils=require(_0x0167('0x17'));var config=require(_0x0167('0x18'));var licenseUtil=require(_0x0167('0x19'));var db=require(_0x0167('0x1a'))['db'];function respondWithStatusCode(_0x34ac02,_0x2ebfa3){_0x2ebfa3=_0x2ebfa3||0xcc;return function(_0x570965){if(_0x570965){return _0x34ac02[_0x0167('0x1b')](_0x2ebfa3);}return _0x34ac02['status'](_0x2ebfa3)[_0x0167('0x1c')]();};}function respondWithResult(_0x5eb5f9,_0x7744d1){_0x7744d1=_0x7744d1||0xc8;return function(_0x39e644){if(_0x39e644){return _0x5eb5f9[_0x0167('0x1d')](_0x7744d1)['json'](_0x39e644);}};}function respondWithFilteredResult(_0x50c1a3,_0x547dea){return function(_0x2eeaa7){if(_0x2eeaa7){var _0x7ae6e7=typeof _0x547dea['offset']===_0x0167('0x1e')&&typeof _0x547dea['limit']==='undefined';var _0x38f934=_0x2eeaa7['count'];var _0x22f07c=_0x7ae6e7?0x0:_0x547dea['offset'];var _0x16094a=_0x7ae6e7?_0x2eeaa7[_0x0167('0x1f')]:_0x547dea[_0x0167('0x20')]+_0x547dea[_0x0167('0x21')];var _0xc3f9fe;if(_0x16094a>=_0x38f934){_0x16094a=_0x38f934;_0xc3f9fe=0xc8;}else{_0xc3f9fe=0xce;}_0x50c1a3[_0x0167('0x1d')](_0xc3f9fe);return _0x50c1a3[_0x0167('0x22')](_0x0167('0x23'),_0x22f07c+'-'+_0x16094a+'/'+_0x38f934)[_0x0167('0x24')](_0x2eeaa7);}return null;};}function patchUpdates(_0x7c626){return function(_0x221d7c){try{jsonpatch[_0x0167('0x25')](_0x221d7c,_0x7c626,!![]);}catch(_0x5ba3d0){return BPromise[_0x0167('0x26')](_0x5ba3d0);}return _0x221d7c[_0x0167('0x27')]();};}function saveUpdates(_0x2375ff,_0x480245){return function(_0x2f69c3){if(_0x2f69c3){return _0x2f69c3[_0x0167('0x28')](_0x2375ff)[_0x0167('0x29')](function(_0x3c0a58){return _0x3c0a58;});}return null;};}function removeEntity(_0x5d25df,_0x38e811){return function(_0x4e8618){if(_0x4e8618){return _0x4e8618[_0x0167('0x2a')]()[_0x0167('0x29')](function(){_0x5d25df[_0x0167('0x1d')](0xcc)[_0x0167('0x1c')]();});}};}function handleEntityNotFound(_0x46231b,_0x41c8f9){return function(_0x31c5eb){if(!_0x31c5eb){_0x46231b['sendStatus'](0x194);}return _0x31c5eb;};}function handleError(_0x358b97,_0x436865){_0x436865=_0x436865||0x1f4;return function(_0x23a863){logger['error'](_0x23a863[_0x0167('0x2b')]);if(_0x23a863[_0x0167('0x2c')]){delete _0x23a863['name'];}_0x358b97[_0x0167('0x1d')](_0x436865)[_0x0167('0x2d')](_0x23a863);};}exports['index']=function(_0x31bbdc,_0x44dd56){var _0x4179d4={},_0x5610ef={},_0x210a3d={'count':0x0,'rows':[]};var _0x39b105=_['map'](db['Cdr'][_0x0167('0x2e')],function(_0x124763){return{'name':_0x124763[_0x0167('0x2f')],'type':_0x124763[_0x0167('0x30')]['key']};});_0x5610ef['model']=_[_0x0167('0x31')](_0x39b105,'name');_0x5610ef['query']=_[_0x0167('0x32')](_0x31bbdc[_0x0167('0x33')]);_0x5610ef[_0x0167('0x34')]=_[_0x0167('0x35')](_0x5610ef[_0x0167('0x36')],_0x5610ef[_0x0167('0x33')]);_0x4179d4[_0x0167('0x37')]=_['intersection'](_0x5610ef['model'],qs[_0x0167('0x38')](_0x31bbdc[_0x0167('0x33')][_0x0167('0x38')]));_0x4179d4[_0x0167('0x37')]=_0x4179d4[_0x0167('0x37')][_0x0167('0x39')]?_0x4179d4['attributes']:_0x5610ef[_0x0167('0x36')];if(!_0x31bbdc['query']['hasOwnProperty'](_0x0167('0x3a'))){_0x4179d4[_0x0167('0x21')]=qs[_0x0167('0x21')](_0x31bbdc['query'][_0x0167('0x21')]);_0x4179d4[_0x0167('0x20')]=qs[_0x0167('0x20')](_0x31bbdc[_0x0167('0x33')]['offset']);}_0x4179d4[_0x0167('0x3b')]=qs[_0x0167('0x3c')](_0x31bbdc[_0x0167('0x33')]['sort']);_0x4179d4[_0x0167('0x3d')]=qs[_0x0167('0x34')](_[_0x0167('0x3e')](_0x31bbdc[_0x0167('0x33')],_0x5610ef[_0x0167('0x34')]),_0x39b105);if(_0x31bbdc['query'][_0x0167('0x3f')]){_0x4179d4[_0x0167('0x3d')]=_['merge'](_0x4179d4[_0x0167('0x3d')],{'$or':_[_0x0167('0x31')](_0x39b105,function(_0x179f4d){if(_0x179f4d[_0x0167('0x30')]!==_0x0167('0x40')){var _0xfcc906={};_0xfcc906[_0x179f4d['name']]={'$like':'%'+_0x31bbdc[_0x0167('0x33')][_0x0167('0x3f')]+'%'};return _0xfcc906;}})});}_0x4179d4=_[_0x0167('0x41')]({},_0x4179d4,_0x31bbdc[_0x0167('0x42')]);var _0x49dc4d={'where':_0x4179d4[_0x0167('0x3d')]};return db[_0x0167('0x43')]['count'](_0x49dc4d)[_0x0167('0x29')](function(_0x3c393a){_0x210a3d[_0x0167('0x1f')]=_0x3c393a;if(_0x31bbdc['query'][_0x0167('0x44')]){_0x4179d4[_0x0167('0x45')]=[{'all':!![]}];}return db[_0x0167('0x43')][_0x0167('0x46')](_0x4179d4);})[_0x0167('0x29')](function(_0x42183d){_0x210a3d[_0x0167('0x47')]=_0x42183d;return _0x210a3d;})[_0x0167('0x29')](respondWithFilteredResult(_0x44dd56,_0x4179d4))['catch'](handleError(_0x44dd56,null));};exports[_0x0167('0x48')]=function(_0x47d862,_0x45f0d5){var _0x237969={'raw':!![],'where':{'id':_0x47d862['params']['id']}},_0x31d3da={};_0x31d3da['model']=_['keys'](db[_0x0167('0x43')][_0x0167('0x2e')]);_0x31d3da[_0x0167('0x33')]=_[_0x0167('0x32')](_0x47d862[_0x0167('0x33')]);_0x31d3da[_0x0167('0x34')]=_['intersection'](_0x31d3da['model'],_0x31d3da['query']);_0x237969[_0x0167('0x37')]=_['intersection'](_0x31d3da[_0x0167('0x36')],qs[_0x0167('0x38')](_0x47d862[_0x0167('0x33')][_0x0167('0x38')]));_0x237969['attributes']=_0x237969[_0x0167('0x37')][_0x0167('0x39')]?_0x237969[_0x0167('0x37')]:_0x31d3da[_0x0167('0x36')];if(_0x47d862[_0x0167('0x33')][_0x0167('0x44')]){_0x237969[_0x0167('0x45')]=[{'all':!![]}];}_0x237969=_[_0x0167('0x41')]({},_0x237969,_0x47d862[_0x0167('0x42')]);return db[_0x0167('0x43')]['find'](_0x237969)['then'](handleEntityNotFound(_0x45f0d5,null))[_0x0167('0x29')](respondWithResult(_0x45f0d5,null))['catch'](handleError(_0x45f0d5,null));};exports[_0x0167('0x49')]=function(_0x4d9315,_0x2c3efc){return db['Cdr'][_0x0167('0x49')](_0x4d9315[_0x0167('0x4a')],{})['then'](respondWithResult(_0x2c3efc,0xc9))['catch'](handleError(_0x2c3efc,null));};exports['update']=function(_0x174a7a,_0x55aaa0){if(_0x174a7a['body']['id']){delete _0x174a7a[_0x0167('0x4a')]['id'];}return db['Cdr'][_0x0167('0x4b')]({'where':{'id':_0x174a7a[_0x0167('0x4c')]['id']}})[_0x0167('0x29')](handleEntityNotFound(_0x55aaa0,null))['then'](saveUpdates(_0x174a7a[_0x0167('0x4a')],null))['then'](respondWithResult(_0x55aaa0,null))['catch'](handleError(_0x55aaa0,null));};exports['destroy']=function(_0xecc47d,_0x396c91){return db[_0x0167('0x43')][_0x0167('0x4b')]({'where':{'id':_0xecc47d[_0x0167('0x4c')]['id']}})['then'](handleEntityNotFound(_0x396c91,null))[_0x0167('0x29')](removeEntity(_0x396c91,null))[_0x0167('0x4d')](handleError(_0x396c91,null));};exports[_0x0167('0x4e')]=function(_0x441b4e,_0x5af280){return db['Cdr'][_0x0167('0x4e')]()['then'](respondWithResult(_0x5af280,null))[_0x0167('0x4d')](handleError(_0x5af280,null));};
\ No newline at end of file
+var _0xe107=['Cdr','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','rows','catch','show','params','includeAll','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index'];(function(_0x506538,_0x2fe4f7){var _0x360146=function(_0x3a7eca){while(--_0x3a7eca){_0x506538['push'](_0x506538['shift']());}};_0x360146(++_0x2fe4f7);}(_0xe107,0xb3));var _0x7e10=function(_0x4d1e9a,_0x26a0a1){_0x4d1e9a=_0x4d1e9a-0x0;var _0x48cbf0=_0xe107[_0x4d1e9a];return _0x48cbf0;};'use strict';var emlformat=require(_0x7e10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7e10('0x1'));var jsonpatch=require(_0x7e10('0x2'));var rp=require(_0x7e10('0x3'));var moment=require('moment');var BPromise=require(_0x7e10('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7e10('0x5'));var sox=require(_0x7e10('0x6'));var csv=require(_0x7e10('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e10('0x8'));var squel=require(_0x7e10('0x9'));var crypto=require(_0x7e10('0xa'));var jsforce=require(_0x7e10('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7e10('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7e10('0xd'));var qs=require(_0x7e10('0xe'));var as=require(_0x7e10('0xf'));var hardwareService=require(_0x7e10('0x10'));var logger=require(_0x7e10('0x11'))('api');var utils=require(_0x7e10('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x7e10('0x13'));var db=require(_0x7e10('0x14'))['db'];function respondWithStatusCode(_0x2f4d72,_0x5434dd){_0x5434dd=_0x5434dd||0xcc;return function(_0xc2e42b){if(_0xc2e42b){return _0x2f4d72[_0x7e10('0x15')](_0x5434dd);}return _0x2f4d72[_0x7e10('0x16')](_0x5434dd)[_0x7e10('0x17')]();};}function respondWithResult(_0x119ff5,_0x1b4d9d){_0x1b4d9d=_0x1b4d9d||0xc8;return function(_0x1c2b22){if(_0x1c2b22){return _0x119ff5[_0x7e10('0x16')](_0x1b4d9d)['json'](_0x1c2b22);}};}function respondWithFilteredResult(_0x15e9e5,_0x433221){return function(_0x4bd78a){if(_0x4bd78a){var _0x48339f=typeof _0x433221[_0x7e10('0x18')]==='undefined'&&typeof _0x433221[_0x7e10('0x19')]===_0x7e10('0x1a');var _0xdbda1a=_0x4bd78a[_0x7e10('0x1b')];var _0x4fd639=_0x48339f?0x0:_0x433221[_0x7e10('0x18')];var _0x2b4850=_0x48339f?_0x4bd78a[_0x7e10('0x1b')]:_0x433221['offset']+_0x433221[_0x7e10('0x19')];var _0x36149a;if(_0x2b4850>=_0xdbda1a){_0x2b4850=_0xdbda1a;_0x36149a=0xc8;}else{_0x36149a=0xce;}_0x15e9e5[_0x7e10('0x16')](_0x36149a);return _0x15e9e5[_0x7e10('0x1c')](_0x7e10('0x1d'),_0x4fd639+'-'+_0x2b4850+'/'+_0xdbda1a)['json'](_0x4bd78a);}return null;};}function patchUpdates(_0x45a0cb){return function(_0x2c6227){try{jsonpatch['apply'](_0x2c6227,_0x45a0cb,!![]);}catch(_0x3c5629){return BPromise[_0x7e10('0x1e')](_0x3c5629);}return _0x2c6227[_0x7e10('0x1f')]();};}function saveUpdates(_0x482faa,_0x4a667b){return function(_0x415cb7){if(_0x415cb7){return _0x415cb7[_0x7e10('0x20')](_0x482faa)[_0x7e10('0x21')](function(_0x1c72df){return _0x1c72df;});}return null;};}function removeEntity(_0x35e7c9,_0x105a55){return function(_0x12c36d){if(_0x12c36d){return _0x12c36d[_0x7e10('0x22')]()['then'](function(){_0x35e7c9['status'](0xcc)[_0x7e10('0x17')]();});}};}function handleEntityNotFound(_0xe34c1e,_0x1bfe8a){return function(_0x13eeb3){if(!_0x13eeb3){_0xe34c1e['sendStatus'](0x194);}return _0x13eeb3;};}function handleError(_0x537365,_0x116446){_0x116446=_0x116446||0x1f4;return function(_0x12ba1b){logger[_0x7e10('0x23')](_0x12ba1b[_0x7e10('0x24')]);if(_0x12ba1b[_0x7e10('0x25')]){delete _0x12ba1b[_0x7e10('0x25')];}_0x537365[_0x7e10('0x16')](_0x116446)[_0x7e10('0x26')](_0x12ba1b);};}exports[_0x7e10('0x27')]=function(_0x3b020c,_0x5691f8){var _0x4e225d={},_0xbc509={},_0x884343={'count':0x0,'rows':[]};var _0x560460=_['map'](db[_0x7e10('0x28')][_0x7e10('0x29')],function(_0x537587){return{'name':_0x537587[_0x7e10('0x2a')],'type':_0x537587['type'][_0x7e10('0x2b')]};});_0xbc509[_0x7e10('0x2c')]=_[_0x7e10('0x2d')](_0x560460,_0x7e10('0x25'));_0xbc509[_0x7e10('0x2e')]=_[_0x7e10('0x2f')](_0x3b020c['query']);_0xbc509[_0x7e10('0x30')]=_['intersection'](_0xbc509[_0x7e10('0x2c')],_0xbc509[_0x7e10('0x2e')]);_0x4e225d[_0x7e10('0x31')]=_[_0x7e10('0x32')](_0xbc509[_0x7e10('0x2c')],qs[_0x7e10('0x33')](_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x33')]));_0x4e225d[_0x7e10('0x31')]=_0x4e225d['attributes'][_0x7e10('0x34')]?_0x4e225d[_0x7e10('0x31')]:_0xbc509[_0x7e10('0x2c')];if(!_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x35')]('nolimit')){_0x4e225d[_0x7e10('0x19')]=qs[_0x7e10('0x19')](_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x19')]);_0x4e225d['offset']=qs['offset'](_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x18')]);}_0x4e225d[_0x7e10('0x36')]=qs[_0x7e10('0x37')](_0x3b020c['query'][_0x7e10('0x37')]);_0x4e225d[_0x7e10('0x38')]=qs['filters'](_[_0x7e10('0x39')](_0x3b020c[_0x7e10('0x2e')],_0xbc509['filters']),_0x560460);if(_0x3b020c['query']['filter']){_0x4e225d[_0x7e10('0x38')]=_[_0x7e10('0x3a')](_0x4e225d[_0x7e10('0x38')],{'$or':_[_0x7e10('0x2d')](_0x560460,function(_0xd696d2){if(_0xd696d2[_0x7e10('0x3b')]!==_0x7e10('0x3c')){var _0x419085={};_0x419085[_0xd696d2['name']]={'$like':'%'+_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x3d')]+'%'};return _0x419085;}})});}_0x4e225d=_[_0x7e10('0x3a')]({},_0x4e225d,_0x3b020c[_0x7e10('0x3e')]);var _0x4ebf4a={'where':_0x4e225d[_0x7e10('0x38')]};return db[_0x7e10('0x28')][_0x7e10('0x1b')](_0x4ebf4a)[_0x7e10('0x21')](function(_0x3ad2f0){_0x884343[_0x7e10('0x1b')]=_0x3ad2f0;if(_0x3b020c[_0x7e10('0x2e')]['includeAll']){_0x4e225d[_0x7e10('0x3f')]=[{'all':!![]}];}return db[_0x7e10('0x28')]['findAll'](_0x4e225d);})[_0x7e10('0x21')](function(_0x5c62ac){_0x884343[_0x7e10('0x40')]=_0x5c62ac;return _0x884343;})['then'](respondWithFilteredResult(_0x5691f8,_0x4e225d))[_0x7e10('0x41')](handleError(_0x5691f8,null));};exports[_0x7e10('0x42')]=function(_0x1940ff,_0x18e9b2){var _0x3c6a01={'raw':!![],'where':{'id':_0x1940ff[_0x7e10('0x43')]['id']}},_0x4c2946={};_0x4c2946[_0x7e10('0x2c')]=_[_0x7e10('0x2f')](db[_0x7e10('0x28')][_0x7e10('0x29')]);_0x4c2946['query']=_[_0x7e10('0x2f')](_0x1940ff[_0x7e10('0x2e')]);_0x4c2946['filters']=_['intersection'](_0x4c2946[_0x7e10('0x2c')],_0x4c2946[_0x7e10('0x2e')]);_0x3c6a01['attributes']=_[_0x7e10('0x32')](_0x4c2946['model'],qs[_0x7e10('0x33')](_0x1940ff['query'][_0x7e10('0x33')]));_0x3c6a01[_0x7e10('0x31')]=_0x3c6a01['attributes']['length']?_0x3c6a01['attributes']:_0x4c2946['model'];if(_0x1940ff['query'][_0x7e10('0x44')]){_0x3c6a01[_0x7e10('0x3f')]=[{'all':!![]}];}_0x3c6a01=_[_0x7e10('0x3a')]({},_0x3c6a01,_0x1940ff[_0x7e10('0x3e')]);return db[_0x7e10('0x28')]['find'](_0x3c6a01)[_0x7e10('0x21')](handleEntityNotFound(_0x18e9b2,null))['then'](respondWithResult(_0x18e9b2,null))[_0x7e10('0x41')](handleError(_0x18e9b2,null));};exports[_0x7e10('0x45')]=function(_0x43745a,_0x290f9c){return db['Cdr']['create'](_0x43745a[_0x7e10('0x46')],{})[_0x7e10('0x21')](respondWithResult(_0x290f9c,0xc9))['catch'](handleError(_0x290f9c,null));};exports['update']=function(_0x2ceaec,_0x3f0a05){if(_0x2ceaec[_0x7e10('0x46')]['id']){delete _0x2ceaec[_0x7e10('0x46')]['id'];}return db[_0x7e10('0x28')][_0x7e10('0x47')]({'where':{'id':_0x2ceaec[_0x7e10('0x43')]['id']}})[_0x7e10('0x21')](handleEntityNotFound(_0x3f0a05,null))['then'](saveUpdates(_0x2ceaec[_0x7e10('0x46')],null))['then'](respondWithResult(_0x3f0a05,null))[_0x7e10('0x41')](handleError(_0x3f0a05,null));};exports[_0x7e10('0x22')]=function(_0x29bd0d,_0x4fec7f){return db['Cdr'][_0x7e10('0x47')]({'where':{'id':_0x29bd0d[_0x7e10('0x43')]['id']}})[_0x7e10('0x21')](handleEntityNotFound(_0x4fec7f,null))[_0x7e10('0x21')](removeEntity(_0x4fec7f,null))[_0x7e10('0x41')](handleError(_0x4fec7f,null));};exports['describe']=function(_0x39c23d,_0x498ebf){return db['Cdr'][_0x7e10('0x48')]()[_0x7e10('0x21')](respondWithResult(_0x498ebf,null))['catch'](handleError(_0x498ebf,null));};
\ No newline at end of file
index 48e4c20..7916c99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x5f025e,_0x459129){var _0x3467cb=function(_0x1ceb7a){while(--_0x1ceb7a){_0x5f025e['push'](_0x5f025e['shift']());}};_0x3467cb(++_0x459129);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x4a2ff3,_0x34da4c){var _0x220c47=function(_0x25a04c){while(--_0x25a04c){_0x4a2ff3['push'](_0x4a2ff3['shift']());}};_0x220c47(++_0x34da4c);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index 2922e56..069f5c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0245=['Cdr,\x20%s,\x20%s','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info'];(function(_0x2a0183,_0x3fc93c){var _0x158c3a=function(_0x57a903){while(--_0x57a903){_0x2a0183['push'](_0x2a0183['shift']());}};_0x158c3a(++_0x3fc93c);}(_0x0245,0xcf));var _0x5024=function(_0x5b4222,_0x4039eb){_0x5b4222=_0x5b4222-0x0;var _0x28ef21=_0x0245[_0x5b4222];return _0x28ef21;};'use strict';var _=require(_0x5024('0x0'));var util=require(_0x5024('0x1'));var moment=require(_0x5024('0x2'));var BPromise=require(_0x5024('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5024('0x4'));var db=require(_0x5024('0x5'))['db'];var utils=require(_0x5024('0x6'));var logger=require('../../config/logger')(_0x5024('0x7'));var config=require('../../config/environment');var jayson=require(_0x5024('0x8'));var client=jayson[_0x5024('0x9')][_0x5024('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32f197,_0x39f105,_0x5e4e2e){return new BPromise(function(_0x265130,_0x3e181e){return client[_0x5024('0xb')](_0x32f197,_0x5e4e2e)['then'](function(_0x46d49c){logger[_0x5024('0xc')](_0x5024('0xd'),_0x39f105,'request\x20sent');logger['debug'](_0x5024('0xe'),_0x39f105,_0x5024('0xf'),JSON[_0x5024('0x10')](_0x46d49c));if(_0x46d49c['error']){if(_0x46d49c[_0x5024('0x11')]['code']===0x1f4){logger[_0x5024('0x11')](_0x5024('0xd'),_0x39f105,_0x46d49c['error'][_0x5024('0x12')]);return _0x3e181e(_0x46d49c[_0x5024('0x11')][_0x5024('0x12')]);}logger[_0x5024('0x11')](_0x5024('0xd'),_0x39f105,_0x46d49c[_0x5024('0x11')]['message']);return _0x265130(_0x46d49c[_0x5024('0x11')]['message']);}else{logger[_0x5024('0xc')]('Cdr,\x20%s,\x20%s',_0x39f105,'request\x20sent');_0x265130(_0x46d49c[_0x5024('0x13')]['message']);}})['catch'](function(_0x3e7a3c){logger['error'](_0x5024('0xd'),_0x39f105,_0x3e7a3c);_0x3e181e(_0x3e7a3c);});});}
\ No newline at end of file
+var _0xca28=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca28,0x1db));var _0x8ca2=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xca28[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require(_0x8ca2('0x0'));var util=require('util');var moment=require(_0x8ca2('0x1'));var BPromise=require('bluebird');var rs=require(_0x8ca2('0x2'));var fs=require('fs');var Redis=require(_0x8ca2('0x3'));var db=require(_0x8ca2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8ca2('0x5'))('rpc');var config=require(_0x8ca2('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8ca2('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4b84c1,_0x5c40e2,_0x3f2bc9){return new BPromise(function(_0x26ff28,_0x3afa6f){return client[_0x8ca2('0x8')](_0x4b84c1,_0x3f2bc9)[_0x8ca2('0x9')](function(_0xb513eb){logger[_0x8ca2('0xa')](_0x8ca2('0xb'),_0x5c40e2,_0x8ca2('0xc'));logger[_0x8ca2('0xd')]('Cdr,\x20%s,\x20%s,\x20%s',_0x5c40e2,_0x8ca2('0xc'),JSON[_0x8ca2('0xe')](_0xb513eb));if(_0xb513eb[_0x8ca2('0xf')]){if(_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x10')]===0x1f4){logger[_0x8ca2('0xf')](_0x8ca2('0xb'),_0x5c40e2,_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);return _0x3afa6f(_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);}logger[_0x8ca2('0xf')]('Cdr,\x20%s,\x20%s',_0x5c40e2,_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);return _0x26ff28(_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);}else{logger['info'](_0x8ca2('0xb'),_0x5c40e2,_0x8ca2('0xc'));_0x26ff28(_0xb513eb['result'][_0x8ca2('0x11')]);}})[_0x8ca2('0x12')](function(_0x43304e){logger[_0x8ca2('0xf')](_0x8ca2('0xb'),_0x5c40e2,_0x43304e);_0x3afa6f(_0x43304e);});});}
\ No newline at end of file
index 2624e34..4a6ed72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x7dbd65,_0x18da49){var _0x33d551=function(_0x7ce789){while(--_0x7ce789){_0x7dbd65['push'](_0x7dbd65['shift']());}};_0x33d551(++_0x18da49);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x280f4a,_0x2ed8d6){var _0x1bb157=function(_0x37de94){while(--_0x37de94){_0x280f4a['push'](_0x280f4a['shift']());}};_0x1bb157(++_0x2ed8d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 43b1994..93ff1f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa84=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xfa84,0xc7));var _0x4fa8=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xfa84[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0x4fa8('0x0'));module['exports']={'priority':{'type':Sequelize[_0x4fa8('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x4fa8('0x2')],'allowNull':![],'defaultValue':_0x4fa8('0x3')},'appdata':{'type':Sequelize[_0x4fa8('0x4')]()},'description':{'type':Sequelize[_0x4fa8('0x2')]},'interval':{'type':Sequelize[_0x4fa8('0x2')],'defaultValue':_0x4fa8('0x5')}};
\ No newline at end of file
+var _0x7ba2=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x2d4421,_0x15a84f){var _0x2d3b01=function(_0xb9e94c){while(--_0xb9e94c){_0x2d4421['push'](_0x2d4421['shift']());}};_0x2d3b01(++_0x15a84f);}(_0x7ba2,0x164));var _0x27ba=function(_0x338338,_0x782573){_0x338338=_0x338338-0x0;var _0x3cf852=_0x7ba2[_0x338338];return _0x3cf852;};'use strict';var Sequelize=require(_0x27ba('0x0'));module[_0x27ba('0x1')]={'priority':{'type':Sequelize[_0x27ba('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x27ba('0x3')],'allowNull':![],'defaultValue':_0x27ba('0x4')},'appdata':{'type':Sequelize[_0x27ba('0x5')]()},'description':{'type':Sequelize[_0x27ba('0x3')]},'interval':{'type':Sequelize[_0x27ba('0x3')],'defaultValue':_0x27ba('0x6')}};
\ No newline at end of file
index 8941cb5..ac0abf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','sendStatus','error','name','send','show','params','keys','rawAttributes','query','intersection','model','fields','attributes','includeAll','include','merge','options','ChatApplication','find','catch','body'];(function(_0x35862b,_0x542b1e){var _0x7b9fb3=function(_0x201852){while(--_0x201852){_0x35862b['push'](_0x35862b['shift']());}};_0x7b9fb3(++_0x542b1e);}(_0x7fce,0xdc));var _0xe7fc=function(_0xa57be,_0x564a5c){_0xa57be=_0xa57be-0x0;var _0x30ca39=_0x7fce[_0xa57be];return _0x30ca39;};'use strict';var emlformat=require(_0xe7fc('0x0'));var rimraf=require(_0xe7fc('0x1'));var zipdir=require(_0xe7fc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7fc('0x3'));var moment=require('moment');var BPromise=require(_0xe7fc('0x4'));var Mustache=require('mustache');var util=require(_0xe7fc('0x5'));var path=require(_0xe7fc('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe7fc('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe7fc('0x8'));var squel=require(_0xe7fc('0x9'));var crypto=require(_0xe7fc('0xa'));var jsforce=require(_0xe7fc('0xb'));var deskjs=require(_0xe7fc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe7fc('0xd'));var Papa=require('papaparse');var Redis=require(_0xe7fc('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe7fc('0xf'));var as=require(_0xe7fc('0x10'));var hardwareService=require(_0xe7fc('0x11'));var logger=require(_0xe7fc('0x12'))('api');var utils=require(_0xe7fc('0x13'));var config=require(_0xe7fc('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x243600,_0x59da2e){_0x59da2e=_0x59da2e||0xcc;return function(_0x38512a){if(_0x38512a){return _0x243600['sendStatus'](_0x59da2e);}return _0x243600['status'](_0x59da2e)[_0xe7fc('0x15')]();};}function respondWithResult(_0x14fcbf,_0x235692){_0x235692=_0x235692||0xc8;return function(_0x307f58){if(_0x307f58){return _0x14fcbf[_0xe7fc('0x16')](_0x235692)['json'](_0x307f58);}};}function respondWithFilteredResult(_0x272cd5,_0x5ce83f){return function(_0x4da73b){if(_0x4da73b){var _0x1302e5=typeof _0x5ce83f[_0xe7fc('0x17')]===_0xe7fc('0x18')&&typeof _0x5ce83f[_0xe7fc('0x19')]==='undefined';var _0x552429=_0x4da73b['count'];var _0x4aa4f0=_0x1302e5?0x0:_0x5ce83f['offset'];var _0x490a99=_0x1302e5?_0x4da73b[_0xe7fc('0x1a')]:_0x5ce83f['offset']+_0x5ce83f[_0xe7fc('0x19')];var _0xb43fde;if(_0x490a99>=_0x552429){_0x490a99=_0x552429;_0xb43fde=0xc8;}else{_0xb43fde=0xce;}_0x272cd5[_0xe7fc('0x16')](_0xb43fde);return _0x272cd5[_0xe7fc('0x1b')](_0xe7fc('0x1c'),_0x4aa4f0+'-'+_0x490a99+'/'+_0x552429)[_0xe7fc('0x1d')](_0x4da73b);}return null;};}function patchUpdates(_0x329051){return function(_0x763103){try{jsonpatch['apply'](_0x763103,_0x329051,!![]);}catch(_0x39c75a){return BPromise[_0xe7fc('0x1e')](_0x39c75a);}return _0x763103['save']();};}function saveUpdates(_0x587dee,_0x35bb53){return function(_0x3c31e7){if(_0x3c31e7){return _0x3c31e7[_0xe7fc('0x1f')](_0x587dee)[_0xe7fc('0x20')](function(_0x26977a){return _0x26977a;});}return null;};}function removeEntity(_0x11c5a3,_0x3f850f){return function(_0x1731b6){if(_0x1731b6){return _0x1731b6[_0xe7fc('0x21')]()[_0xe7fc('0x20')](function(){_0x11c5a3[_0xe7fc('0x16')](0xcc)[_0xe7fc('0x15')]();});}};}function handleEntityNotFound(_0x12ebdd,_0x5255b7){return function(_0x2d9e77){if(!_0x2d9e77){_0x12ebdd[_0xe7fc('0x22')](0x194);}return _0x2d9e77;};}function handleError(_0x416464,_0x3be1fd){_0x3be1fd=_0x3be1fd||0x1f4;return function(_0x2249ed){logger[_0xe7fc('0x23')](_0x2249ed['stack']);if(_0x2249ed[_0xe7fc('0x24')]){delete _0x2249ed[_0xe7fc('0x24')];}_0x416464[_0xe7fc('0x16')](_0x3be1fd)[_0xe7fc('0x25')](_0x2249ed);};}exports[_0xe7fc('0x26')]=function(_0x4416b5,_0x383ca6){var _0x4da084={'raw':!![],'where':{'id':_0x4416b5[_0xe7fc('0x27')]['id']}},_0x36a68b={};_0x36a68b['model']=_[_0xe7fc('0x28')](db['ChatApplication'][_0xe7fc('0x29')]);_0x36a68b[_0xe7fc('0x2a')]=_['keys'](_0x4416b5[_0xe7fc('0x2a')]);_0x36a68b['filters']=_[_0xe7fc('0x2b')](_0x36a68b[_0xe7fc('0x2c')],_0x36a68b[_0xe7fc('0x2a')]);_0x4da084['attributes']=_[_0xe7fc('0x2b')](_0x36a68b['model'],qs[_0xe7fc('0x2d')](_0x4416b5[_0xe7fc('0x2a')]['fields']));_0x4da084['attributes']=_0x4da084['attributes']['length']?_0x4da084[_0xe7fc('0x2e')]:_0x36a68b[_0xe7fc('0x2c')];if(_0x4416b5[_0xe7fc('0x2a')][_0xe7fc('0x2f')]){_0x4da084[_0xe7fc('0x30')]=[{'all':!![]}];}_0x4da084=_[_0xe7fc('0x31')]({},_0x4da084,_0x4416b5[_0xe7fc('0x32')]);return db[_0xe7fc('0x33')][_0xe7fc('0x34')](_0x4da084)[_0xe7fc('0x20')](handleEntityNotFound(_0x383ca6,null))['then'](respondWithResult(_0x383ca6,null))[_0xe7fc('0x35')](handleError(_0x383ca6,null));};exports[_0xe7fc('0x1f')]=function(_0x1d8d62,_0x266856){if(_0x1d8d62[_0xe7fc('0x36')]['id']){delete _0x1d8d62['body']['id'];}return db[_0xe7fc('0x33')][_0xe7fc('0x34')]({'where':{'id':_0x1d8d62[_0xe7fc('0x27')]['id']}})[_0xe7fc('0x20')](handleEntityNotFound(_0x266856,null))[_0xe7fc('0x20')](saveUpdates(_0x1d8d62[_0xe7fc('0x36')],null))[_0xe7fc('0x20')](respondWithResult(_0x266856,null))[_0xe7fc('0x35')](handleError(_0x266856,null));};exports[_0xe7fc('0x21')]=function(_0xb0e7b2,_0x1bb010){return db[_0xe7fc('0x33')]['find']({'where':{'id':_0xb0e7b2[_0xe7fc('0x27')]['id']}})[_0xe7fc('0x20')](handleEntityNotFound(_0x1bb010,null))[_0xe7fc('0x20')](removeEntity(_0x1bb010,null))[_0xe7fc('0x35')](handleError(_0x1bb010,null));};
\ No newline at end of file
+var _0x1c4f=['intersection','attributes','fields','length','includeAll','include','merge','options','catch','update','body','find','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','error','stack','name','send','params','model','keys','ChatApplication','rawAttributes','query','filters'];(function(_0x58197a,_0x138b7a){var _0xd2c78b=function(_0x2b0a15){while(--_0x2b0a15){_0x58197a['push'](_0x58197a['shift']());}};_0xd2c78b(++_0x138b7a);}(_0x1c4f,0x1f4));var _0xf1c4=function(_0x38f068,_0x348f6d){_0x38f068=_0x38f068-0x0;var _0x25114e=_0x1c4f[_0x38f068];return _0x25114e;};'use strict';var emlformat=require(_0xf1c4('0x0'));var rimraf=require(_0xf1c4('0x1'));var zipdir=require(_0xf1c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf1c4('0x3'));var moment=require(_0xf1c4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf1c4('0x5'));var util=require(_0xf1c4('0x6'));var path=require(_0xf1c4('0x7'));var sox=require('sox');var csv=require(_0xf1c4('0x8'));var ejs=require(_0xf1c4('0x9'));var fs=require('fs');var fs_extra=require(_0xf1c4('0xa'));var _=require(_0xf1c4('0xb'));var squel=require(_0xf1c4('0xc'));var crypto=require(_0xf1c4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf1c4('0xe'));var toCsv=require(_0xf1c4('0x8'));var querystring=require(_0xf1c4('0xf'));var Papa=require('papaparse');var Redis=require(_0xf1c4('0x10'));var authService=require(_0xf1c4('0x11'));var qs=require(_0xf1c4('0x12'));var as=require(_0xf1c4('0x13'));var hardwareService=require(_0xf1c4('0x14'));var logger=require(_0xf1c4('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xf1c4('0x16'));var licenseUtil=require(_0xf1c4('0x17'));var db=require(_0xf1c4('0x18'))['db'];function respondWithStatusCode(_0x63cbf4,_0x45e5c3){_0x45e5c3=_0x45e5c3||0xcc;return function(_0x2f7302){if(_0x2f7302){return _0x63cbf4[_0xf1c4('0x19')](_0x45e5c3);}return _0x63cbf4['status'](_0x45e5c3)[_0xf1c4('0x1a')]();};}function respondWithResult(_0x4b1189,_0x2d49ce){_0x2d49ce=_0x2d49ce||0xc8;return function(_0x3c211b){if(_0x3c211b){return _0x4b1189[_0xf1c4('0x1b')](_0x2d49ce)[_0xf1c4('0x1c')](_0x3c211b);}};}function respondWithFilteredResult(_0x390dfa,_0x119d04){return function(_0x30efff){if(_0x30efff){var _0xa294d3=typeof _0x119d04[_0xf1c4('0x1d')]===_0xf1c4('0x1e')&&typeof _0x119d04[_0xf1c4('0x1f')]==='undefined';var _0x3ab930=_0x30efff['count'];var _0x4dd06f=_0xa294d3?0x0:_0x119d04[_0xf1c4('0x1d')];var _0x87cd5f=_0xa294d3?_0x30efff['count']:_0x119d04[_0xf1c4('0x1d')]+_0x119d04[_0xf1c4('0x1f')];var _0x3d6795;if(_0x87cd5f>=_0x3ab930){_0x87cd5f=_0x3ab930;_0x3d6795=0xc8;}else{_0x3d6795=0xce;}_0x390dfa[_0xf1c4('0x1b')](_0x3d6795);return _0x390dfa[_0xf1c4('0x20')](_0xf1c4('0x21'),_0x4dd06f+'-'+_0x87cd5f+'/'+_0x3ab930)['json'](_0x30efff);}return null;};}function patchUpdates(_0x5b48a5){return function(_0x3e8616){try{jsonpatch[_0xf1c4('0x22')](_0x3e8616,_0x5b48a5,!![]);}catch(_0x6dcb98){return BPromise[_0xf1c4('0x23')](_0x6dcb98);}return _0x3e8616[_0xf1c4('0x24')]();};}function saveUpdates(_0x3384f2,_0x20a0ff){return function(_0x4ffb27){if(_0x4ffb27){return _0x4ffb27['update'](_0x3384f2)[_0xf1c4('0x25')](function(_0x496518){return _0x496518;});}return null;};}function removeEntity(_0x4ca299,_0x1e4521){return function(_0x215a62){if(_0x215a62){return _0x215a62['destroy']()[_0xf1c4('0x25')](function(){_0x4ca299['status'](0xcc)[_0xf1c4('0x1a')]();});}};}function handleEntityNotFound(_0x4e351d,_0x1bc59e){return function(_0x286028){if(!_0x286028){_0x4e351d[_0xf1c4('0x19')](0x194);}return _0x286028;};}function handleError(_0x2d6417,_0x1a7440){_0x1a7440=_0x1a7440||0x1f4;return function(_0x6d3d79){logger[_0xf1c4('0x26')](_0x6d3d79[_0xf1c4('0x27')]);if(_0x6d3d79[_0xf1c4('0x28')]){delete _0x6d3d79['name'];}_0x2d6417[_0xf1c4('0x1b')](_0x1a7440)[_0xf1c4('0x29')](_0x6d3d79);};}exports['show']=function(_0x5b51ea,_0x316048){var _0x1f29fe={'raw':!![],'where':{'id':_0x5b51ea[_0xf1c4('0x2a')]['id']}},_0x30e431={};_0x30e431[_0xf1c4('0x2b')]=_[_0xf1c4('0x2c')](db[_0xf1c4('0x2d')][_0xf1c4('0x2e')]);_0x30e431[_0xf1c4('0x2f')]=_[_0xf1c4('0x2c')](_0x5b51ea[_0xf1c4('0x2f')]);_0x30e431[_0xf1c4('0x30')]=_[_0xf1c4('0x31')](_0x30e431[_0xf1c4('0x2b')],_0x30e431['query']);_0x1f29fe[_0xf1c4('0x32')]=_[_0xf1c4('0x31')](_0x30e431[_0xf1c4('0x2b')],qs[_0xf1c4('0x33')](_0x5b51ea[_0xf1c4('0x2f')][_0xf1c4('0x33')]));_0x1f29fe[_0xf1c4('0x32')]=_0x1f29fe[_0xf1c4('0x32')][_0xf1c4('0x34')]?_0x1f29fe[_0xf1c4('0x32')]:_0x30e431['model'];if(_0x5b51ea['query'][_0xf1c4('0x35')]){_0x1f29fe[_0xf1c4('0x36')]=[{'all':!![]}];}_0x1f29fe=_[_0xf1c4('0x37')]({},_0x1f29fe,_0x5b51ea[_0xf1c4('0x38')]);return db[_0xf1c4('0x2d')]['find'](_0x1f29fe)[_0xf1c4('0x25')](handleEntityNotFound(_0x316048,null))[_0xf1c4('0x25')](respondWithResult(_0x316048,null))[_0xf1c4('0x39')](handleError(_0x316048,null));};exports[_0xf1c4('0x3a')]=function(_0x456724,_0xa62d5){if(_0x456724[_0xf1c4('0x3b')]['id']){delete _0x456724[_0xf1c4('0x3b')]['id'];}return db[_0xf1c4('0x2d')][_0xf1c4('0x3c')]({'where':{'id':_0x456724[_0xf1c4('0x2a')]['id']}})['then'](handleEntityNotFound(_0xa62d5,null))[_0xf1c4('0x25')](saveUpdates(_0x456724['body'],null))[_0xf1c4('0x25')](respondWithResult(_0xa62d5,null))[_0xf1c4('0x39')](handleError(_0xa62d5,null));};exports['destroy']=function(_0x1abc5b,_0x20a9ad){return db[_0xf1c4('0x2d')]['find']({'where':{'id':_0x1abc5b['params']['id']}})[_0xf1c4('0x25')](handleEntityNotFound(_0x20a9ad,null))['then'](removeEntity(_0x20a9ad,null))['catch'](handleError(_0x20a9ad,null));};
\ No newline at end of file
index b3bda6c..291789b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f40=['bluebird','request-promise','path','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','utf8mb4_unicode_ci','util','../../config/logger','api'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9f40,0xc0));var _0x09f4=function(_0x14e57c,_0x5741dd){_0x14e57c=_0x14e57c-0x0;var _0x162915=_0x9f40[_0x14e57c];return _0x162915;};'use strict';var _=require('lodash');var util=require(_0x09f4('0x0'));var logger=require(_0x09f4('0x1'))(_0x09f4('0x2'));var moment=require('moment');var BPromise=require(_0x09f4('0x3'));var rp=require(_0x09f4('0x4'));var fs=require('fs');var path=require(_0x09f4('0x5'));var rimraf=require(_0x09f4('0x6'));var config=require(_0x09f4('0x7'));var attributes=require(_0x09f4('0x8'));module[_0x09f4('0x9')]=function(_0x56d06d,_0x419ceb){return _0x56d06d[_0x09f4('0xa')](_0x09f4('0xb'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x09f4('0xc')});};
\ No newline at end of file
+var _0x2cf9=['define','chat_applications','utf8mb4','util','../../config/logger','api','moment','bluebird','../../config/environment','exports'];(function(_0x2dd849,_0x589410){var _0x3ac26c=function(_0x7a8ce9){while(--_0x7a8ce9){_0x2dd849['push'](_0x2dd849['shift']());}};_0x3ac26c(++_0x589410);}(_0x2cf9,0x111));var _0x92cf=function(_0x48c25e,_0x1fd81c){_0x48c25e=_0x48c25e-0x0;var _0x1d393f=_0x2cf9[_0x48c25e];return _0x1d393f;};'use strict';var _=require('lodash');var util=require(_0x92cf('0x0'));var logger=require(_0x92cf('0x1'))(_0x92cf('0x2'));var moment=require(_0x92cf('0x3'));var BPromise=require(_0x92cf('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x92cf('0x5'));var attributes=require('./chatApplication.attributes');module[_0x92cf('0x6')]=function(_0x49ab2d,_0x51ad1a){return _0x49ab2d[_0x92cf('0x7')]('ChatApplication',attributes,{'tableName':_0x92cf('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x92cf('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 49b17d3..2f7f7e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde0=['catch','lodash','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0xf51b8e,_0x3686a3){var _0x39536c=function(_0x1b705c){while(--_0x1b705c){_0xf51b8e['push'](_0xf51b8e['shift']());}};_0x39536c(++_0x3686a3);}(_0xbde0,0x1ef));var _0x0bde=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xbde0[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x0bde('0x0'));var util=require('util');var moment=require(_0x0bde('0x1'));var BPromise=require('bluebird');var rs=require(_0x0bde('0x2'));var fs=require('fs');var Redis=require(_0x0bde('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0bde('0x4'))(_0x0bde('0x5'));var config=require(_0x0bde('0x6'));var jayson=require(_0x0bde('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d3a2c,_0x2445d6,_0xeeb62a){return new BPromise(function(_0x59bf26,_0x10e80a){return client['request'](_0x2d3a2c,_0xeeb62a)['then'](function(_0x47d336){logger['info'](_0x0bde('0x8'),_0x2445d6,_0x0bde('0x9'));logger[_0x0bde('0xa')](_0x0bde('0xb'),_0x2445d6,_0x0bde('0x9'),JSON[_0x0bde('0xc')](_0x47d336));if(_0x47d336[_0x0bde('0xd')]){if(_0x47d336[_0x0bde('0xd')][_0x0bde('0xe')]===0x1f4){logger[_0x0bde('0xd')](_0x0bde('0x8'),_0x2445d6,_0x47d336[_0x0bde('0xd')]['message']);return _0x10e80a(_0x47d336[_0x0bde('0xd')]['message']);}logger[_0x0bde('0xd')](_0x0bde('0x8'),_0x2445d6,_0x47d336[_0x0bde('0xd')][_0x0bde('0xf')]);return _0x59bf26(_0x47d336[_0x0bde('0xd')][_0x0bde('0xf')]);}else{logger[_0x0bde('0x10')]('ChatApplication,\x20%s,\x20%s',_0x2445d6,'request\x20sent');_0x59bf26(_0x47d336[_0x0bde('0x11')][_0x0bde('0xf')]);}})[_0x0bde('0x12')](function(_0x32efa0){logger[_0x0bde('0xd')](_0x0bde('0x8'),_0x2445d6,_0x32efa0);_0x10e80a(_0x32efa0);});});}
\ No newline at end of file
+var _0x632a=['../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x31f806,_0x35fd82){var _0x3afcf9=function(_0x4add30){while(--_0x4add30){_0x31f806['push'](_0x31f806['shift']());}};_0x3afcf9(++_0x35fd82);}(_0x632a,0xc9));var _0xa632=function(_0x29ee1d,_0x372a1f){_0x29ee1d=_0x29ee1d-0x0;var _0x310878=_0x632a[_0x29ee1d];return _0x310878;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xa632('0x0'));var rs=require(_0xa632('0x1'));var fs=require('fs');var Redis=require(_0xa632('0x2'));var db=require(_0xa632('0x3'))['db'];var utils=require(_0xa632('0x4'));var logger=require('../../config/logger')(_0xa632('0x5'));var config=require(_0xa632('0x6'));var jayson=require(_0xa632('0x7'));var client=jayson[_0xa632('0x8')][_0xa632('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x70d989,_0x369b94,_0x572a6c){return new BPromise(function(_0x18454c,_0x55f9a3){return client[_0xa632('0xa')](_0x70d989,_0x572a6c)[_0xa632('0xb')](function(_0x47a5a4){logger[_0xa632('0xc')](_0xa632('0xd'),_0x369b94,_0xa632('0xe'));logger[_0xa632('0xf')](_0xa632('0x10'),_0x369b94,'request\x20sent',JSON[_0xa632('0x11')](_0x47a5a4));if(_0x47a5a4['error']){if(_0x47a5a4[_0xa632('0x12')][_0xa632('0x13')]===0x1f4){logger[_0xa632('0x12')](_0xa632('0xd'),_0x369b94,_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);return _0x55f9a3(_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);}logger['error'](_0xa632('0xd'),_0x369b94,_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);return _0x18454c(_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);}else{logger[_0xa632('0xc')](_0xa632('0xd'),_0x369b94,_0xa632('0xe'));_0x18454c(_0x47a5a4[_0xa632('0x15')][_0xa632('0x14')]);}})[_0xa632('0x16')](function(_0x4b417e){logger[_0xa632('0x12')](_0xa632('0xd'),_0x369b94,_0x4b417e);_0x55f9a3(_0x4b417e);});});}
\ No newline at end of file
index 9f3c272..b005466 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe6d=['./chatApplication.controller','/:id','isAuthenticated','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x331a47,_0x3e4a6e){var _0x498008=function(_0x31b716){while(--_0x31b716){_0x331a47['push'](_0x331a47['shift']());}};_0x498008(++_0x3e4a6e);}(_0xfe6d,0x178));var _0xdfe6=function(_0xc6b104,_0x1d805a){_0xc6b104=_0xc6b104-0x0;var _0x1c6fce=_0xfe6d[_0xc6b104];return _0x1c6fce;};'use strict';var multer=require(_0xdfe6('0x0'));var util=require('util');var path=require(_0xdfe6('0x1'));var timeout=require(_0xdfe6('0x2'));var express=require(_0xdfe6('0x3'));var router=express[_0xdfe6('0x4')]();var fs_extra=require(_0xdfe6('0x5'));var auth=require(_0xdfe6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdfe6('0x7'));var controller=require(_0xdfe6('0x8'));router['get'](_0xdfe6('0x9'),auth[_0xdfe6('0xa')](),controller['show']);router[_0xdfe6('0xb')](_0xdfe6('0x9'),auth['isAuthenticated'](),controller[_0xdfe6('0xc')]);router[_0xdfe6('0xd')](_0xdfe6('0x9'),auth[_0xdfe6('0xa')](),controller[_0xdfe6('0xe')]);module[_0xdfe6('0xf')]=router;
\ No newline at end of file
+var _0x693e=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','isAuthenticated','show','/:id','update','delete','destroy','exports','multer','path','express'];(function(_0x7b9e2a,_0x532a3c){var _0x2e1ba3=function(_0x3099bc){while(--_0x3099bc){_0x7b9e2a['push'](_0x7b9e2a['shift']());}};_0x2e1ba3(++_0x532a3c);}(_0x693e,0xc9));var _0xe693=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x693e[_0x465a0c];return _0x1e202e;};'use strict';var multer=require(_0xe693('0x0'));var util=require('util');var path=require(_0xe693('0x1'));var timeout=require('connect-timeout');var express=require(_0xe693('0x2'));var router=express[_0xe693('0x3')]();var fs_extra=require(_0xe693('0x4'));var auth=require(_0xe693('0x5'));var interaction=require(_0xe693('0x6'));var config=require(_0xe693('0x7'));var controller=require(_0xe693('0x8'));router[_0xe693('0x9')]('/:id',auth[_0xe693('0xa')](),controller[_0xe693('0xb')]);router['put'](_0xe693('0xc'),auth['isAuthenticated'](),controller[_0xe693('0xd')]);router[_0xe693('0xe')](_0xe693('0xc'),auth[_0xe693('0xa')](),controller[_0xe693('0xf')]);module[_0xe693('0x10')]=router;
\ No newline at end of file
index 863bab0..4e6ca8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x195f=['exports','STRING','BOOLEAN','sequelize'];(function(_0x297c55,_0x34fa75){var _0x120389=function(_0x595108){while(--_0x595108){_0x297c55['push'](_0x297c55['shift']());}};_0x120389(++_0x34fa75);}(_0x195f,0x113));var _0xf195=function(_0x15106b,_0x4d96f6){_0x15106b=_0x15106b-0x0;var _0x521203=_0x195f[_0x15106b];return _0x521203;};'use strict';var Sequelize=require(_0xf195('0x0'));module[_0xf195('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xf195('0x2')]},'write':{'type':Sequelize[_0xf195('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7e4b=['sequelize','exports','STRING','BOOLEAN'];(function(_0x5eb9f3,_0x2bbd9f){var _0x3c2ae9=function(_0x4a3eb1){while(--_0x4a3eb1){_0x5eb9f3['push'](_0x5eb9f3['shift']());}};_0x3c2ae9(++_0x2bbd9f);}(_0x7e4b,0x84));var _0xb7e4=function(_0x54df4c,_0x52a7dd){_0x54df4c=_0x54df4c-0x0;var _0x4e50d6=_0x7e4b[_0x54df4c];return _0x4e50d6;};'use strict';var Sequelize=require(_0xb7e4('0x0'));module[_0xb7e4('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb7e4('0x2')]},'write':{'type':Sequelize[_0xb7e4('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index a473d7a..ecf1c62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17ac=['name','send','index','ChatGroup','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','show','params','find','create','body','catch','describe','getUnread','ChatInternalMessage','toInteger','addMembers','ids','omit','getMembers','User','pick','nolimit','removeMembers','addMessage','ChatGroupId','findOne','$gte','getMessages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatGroup.socket','register','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','destroy','error'];(function(_0x55738f,_0x595b6f){var _0x5f40b8=function(_0x390ee8){while(--_0x390ee8){_0x55738f['push'](_0x55738f['shift']());}};_0x5f40b8(++_0x595b6f);}(_0x17ac,0x15b));var _0xc17a=function(_0x4a2378,_0x14106e){_0x4a2378=_0x4a2378-0x0;var _0x1ce2e0=_0x17ac[_0x4a2378];return _0x1ce2e0;};'use strict';var emlformat=require(_0xc17a('0x0'));var rimraf=require(_0xc17a('0x1'));var zipdir=require(_0xc17a('0x2'));var jsonpatch=require(_0xc17a('0x3'));var rp=require(_0xc17a('0x4'));var moment=require(_0xc17a('0x5'));var BPromise=require(_0xc17a('0x6'));var Mustache=require('mustache');var util=require(_0xc17a('0x7'));var path=require('path');var sox=require(_0xc17a('0x8'));var csv=require('to-csv');var ejs=require(_0xc17a('0x9'));var fs=require('fs');var fs_extra=require(_0xc17a('0xa'));var _=require(_0xc17a('0xb'));var squel=require(_0xc17a('0xc'));var crypto=require('crypto');var jsforce=require(_0xc17a('0xd'));var deskjs=require(_0xc17a('0xe'));var toCsv=require(_0xc17a('0xf'));var querystring=require('querystring');var Papa=require(_0xc17a('0x10'));var Redis=require(_0xc17a('0x11'));var authService=require(_0xc17a('0x12'));var qs=require(_0xc17a('0x13'));var as=require(_0xc17a('0x14'));var hardwareService=require(_0xc17a('0x15'));var logger=require(_0xc17a('0x16'))(_0xc17a('0x17'));var utils=require('../../config/utils');var config=require(_0xc17a('0x18'));var licenseUtil=require(_0xc17a('0x19'));var db=require(_0xc17a('0x1a'))['db'];config[_0xc17a('0x1b')]=_[_0xc17a('0x1c')](config['redis'],{'host':_0xc17a('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc17a('0x1b')]));require(_0xc17a('0x1e'))[_0xc17a('0x1f')](socket);function respondWithStatusCode(_0x19ac39,_0x2169ef){_0x2169ef=_0x2169ef||0xcc;return function(_0x3fd0b0){if(_0x3fd0b0){return _0x19ac39[_0xc17a('0x20')](_0x2169ef);}return _0x19ac39['status'](_0x2169ef)[_0xc17a('0x21')]();};}function respondWithResult(_0x12b5c5,_0x190dfb){_0x190dfb=_0x190dfb||0xc8;return function(_0x569f0f){if(_0x569f0f){return _0x12b5c5['status'](_0x190dfb)[_0xc17a('0x22')](_0x569f0f);}};}function respondWithFilteredResult(_0x14071b,_0x1bb572){return function(_0x4a381f){if(_0x4a381f){var _0x2ee8c0=typeof _0x1bb572['offset']===_0xc17a('0x23')&&typeof _0x1bb572[_0xc17a('0x24')]==='undefined';var _0x3ecbbf=_0x4a381f[_0xc17a('0x25')];var _0x5d2def=_0x2ee8c0?0x0:_0x1bb572[_0xc17a('0x26')];var _0x19a6d5=_0x2ee8c0?_0x4a381f['count']:_0x1bb572['offset']+_0x1bb572[_0xc17a('0x24')];var _0x2a45b1;if(_0x19a6d5>=_0x3ecbbf){_0x19a6d5=_0x3ecbbf;_0x2a45b1=0xc8;}else{_0x2a45b1=0xce;}_0x14071b[_0xc17a('0x27')](_0x2a45b1);return _0x14071b[_0xc17a('0x28')](_0xc17a('0x29'),_0x5d2def+'-'+_0x19a6d5+'/'+_0x3ecbbf)[_0xc17a('0x22')](_0x4a381f);}return null;};}function patchUpdates(_0x6f3c14){return function(_0x40a483){try{jsonpatch[_0xc17a('0x2a')](_0x40a483,_0x6f3c14,!![]);}catch(_0x318282){return BPromise[_0xc17a('0x2b')](_0x318282);}return _0x40a483[_0xc17a('0x2c')]();};}function saveUpdates(_0x6c0067,_0x1ee001){return function(_0x2a8340){if(_0x2a8340){return _0x2a8340[_0xc17a('0x2d')](_0x6c0067)[_0xc17a('0x2e')](function(_0x25698){return _0x25698;});}return null;};}function removeEntity(_0x19698c,_0x404999){return function(_0x46c3a5){if(_0x46c3a5){return _0x46c3a5[_0xc17a('0x2f')]()['then'](function(){_0x19698c[_0xc17a('0x27')](0xcc)[_0xc17a('0x21')]();});}};}function handleEntityNotFound(_0x2b52e2,_0x218d01){return function(_0x298902){if(!_0x298902){_0x2b52e2[_0xc17a('0x20')](0x194);}return _0x298902;};}function handleError(_0x325005,_0x361e56){_0x361e56=_0x361e56||0x1f4;return function(_0x3aeda6){logger[_0xc17a('0x30')](_0x3aeda6['stack']);if(_0x3aeda6[_0xc17a('0x31')]){delete _0x3aeda6[_0xc17a('0x31')];}_0x325005[_0xc17a('0x27')](_0x361e56)[_0xc17a('0x32')](_0x3aeda6);};}exports[_0xc17a('0x33')]=function(_0x29f88d,_0x37be31){var _0x211a43={},_0x3fdf72={},_0x2fb060={'count':0x0,'rows':[]};var _0x614237=_['map'](db[_0xc17a('0x34')][_0xc17a('0x35')],function(_0x1a87d4){return{'name':_0x1a87d4[_0xc17a('0x36')],'type':_0x1a87d4[_0xc17a('0x37')][_0xc17a('0x38')]};});_0x3fdf72[_0xc17a('0x39')]=_[_0xc17a('0x3a')](_0x614237,'name');_0x3fdf72['query']=_[_0xc17a('0x3b')](_0x29f88d[_0xc17a('0x3c')]);_0x3fdf72['filters']=_[_0xc17a('0x3d')](_0x3fdf72['model'],_0x3fdf72[_0xc17a('0x3c')]);_0x211a43['attributes']=_['intersection'](_0x3fdf72[_0xc17a('0x39')],qs[_0xc17a('0x3e')](_0x29f88d[_0xc17a('0x3c')][_0xc17a('0x3e')]));_0x211a43[_0xc17a('0x3f')]=_0x211a43[_0xc17a('0x3f')][_0xc17a('0x40')]?_0x211a43[_0xc17a('0x3f')]:_0x3fdf72[_0xc17a('0x39')];if(!_0x29f88d[_0xc17a('0x3c')][_0xc17a('0x41')]('nolimit')){_0x211a43['limit']=qs['limit'](_0x29f88d[_0xc17a('0x3c')][_0xc17a('0x24')]);_0x211a43[_0xc17a('0x26')]=qs[_0xc17a('0x26')](_0x29f88d[_0xc17a('0x3c')][_0xc17a('0x26')]);}_0x211a43[_0xc17a('0x42')]=qs[_0xc17a('0x43')](_0x29f88d[_0xc17a('0x3c')][_0xc17a('0x43')]);_0x211a43[_0xc17a('0x44')]=qs[_0xc17a('0x45')](_['pick'](_0x29f88d[_0xc17a('0x3c')],_0x3fdf72[_0xc17a('0x45')]),_0x614237);if(_0x29f88d[_0xc17a('0x3c')]['filter']){_0x211a43['where']=_[_0xc17a('0x46')](_0x211a43[_0xc17a('0x44')],{'$or':_[_0xc17a('0x3a')](_0x614237,function(_0x19629b){if(_0x19629b[_0xc17a('0x37')]!==_0xc17a('0x47')){var _0x1ecd90={};_0x1ecd90[_0x19629b[_0xc17a('0x31')]]={'$like':'%'+_0x29f88d[_0xc17a('0x3c')][_0xc17a('0x48')]+'%'};return _0x1ecd90;}})});}_0x211a43=_['merge']({},_0x211a43,_0x29f88d[_0xc17a('0x49')]);var _0x5d41a5={'where':_0x211a43['where']};return db[_0xc17a('0x34')][_0xc17a('0x25')](_0x5d41a5)[_0xc17a('0x2e')](function(_0x153247){_0x2fb060[_0xc17a('0x25')]=_0x153247;if(_0x29f88d['query'][_0xc17a('0x4a')]){_0x211a43[_0xc17a('0x4b')]=[{'all':!![]}];}return db[_0xc17a('0x34')]['findAll'](_0x211a43);})['then'](function(_0x15b8e5){_0x2fb060['rows']=_0x15b8e5;return _0x2fb060;})['then'](respondWithFilteredResult(_0x37be31,_0x211a43))['catch'](handleError(_0x37be31,null));};exports[_0xc17a('0x4c')]=function(_0x3a4517,_0x43e569){var _0x2859ed={'raw':!![],'where':{'id':_0x3a4517[_0xc17a('0x4d')]['id']}},_0x4f5cf4={};_0x4f5cf4[_0xc17a('0x39')]=_[_0xc17a('0x3b')](db[_0xc17a('0x34')][_0xc17a('0x35')]);_0x4f5cf4[_0xc17a('0x3c')]=_['keys'](_0x3a4517[_0xc17a('0x3c')]);_0x4f5cf4[_0xc17a('0x45')]=_[_0xc17a('0x3d')](_0x4f5cf4[_0xc17a('0x39')],_0x4f5cf4[_0xc17a('0x3c')]);_0x2859ed[_0xc17a('0x3f')]=_[_0xc17a('0x3d')](_0x4f5cf4[_0xc17a('0x39')],qs[_0xc17a('0x3e')](_0x3a4517['query']['fields']));_0x2859ed[_0xc17a('0x3f')]=_0x2859ed[_0xc17a('0x3f')][_0xc17a('0x40')]?_0x2859ed['attributes']:_0x4f5cf4[_0xc17a('0x39')];if(_0x3a4517[_0xc17a('0x3c')][_0xc17a('0x4a')]){_0x2859ed[_0xc17a('0x4b')]=[{'all':!![]}];}_0x2859ed=_['merge']({},_0x2859ed,_0x3a4517[_0xc17a('0x49')]);return db[_0xc17a('0x34')][_0xc17a('0x4e')](_0x2859ed)[_0xc17a('0x2e')](handleEntityNotFound(_0x43e569,null))[_0xc17a('0x2e')](respondWithResult(_0x43e569,null))['catch'](handleError(_0x43e569,null));};exports[_0xc17a('0x4f')]=function(_0x126c1b,_0x34e0e0){return db[_0xc17a('0x34')][_0xc17a('0x4f')](_0x126c1b[_0xc17a('0x50')],{})[_0xc17a('0x2e')](respondWithResult(_0x34e0e0,0xc9))[_0xc17a('0x51')](handleError(_0x34e0e0,null));};exports[_0xc17a('0x2d')]=function(_0x3f29b4,_0x393023){if(_0x3f29b4[_0xc17a('0x50')]['id']){delete _0x3f29b4[_0xc17a('0x50')]['id'];}return db[_0xc17a('0x34')][_0xc17a('0x4e')]({'where':{'id':_0x3f29b4[_0xc17a('0x4d')]['id']}})[_0xc17a('0x2e')](handleEntityNotFound(_0x393023,null))[_0xc17a('0x2e')](saveUpdates(_0x3f29b4[_0xc17a('0x50')],null))[_0xc17a('0x2e')](respondWithResult(_0x393023,null))[_0xc17a('0x51')](handleError(_0x393023,null));};exports[_0xc17a('0x2f')]=function(_0x1c35d0,_0x9f8b5f){return db[_0xc17a('0x34')][_0xc17a('0x4e')]({'where':{'id':_0x1c35d0[_0xc17a('0x4d')]['id']}})[_0xc17a('0x2e')](handleEntityNotFound(_0x9f8b5f,null))[_0xc17a('0x2e')](removeEntity(_0x9f8b5f,null))[_0xc17a('0x51')](handleError(_0x9f8b5f,null));};exports[_0xc17a('0x52')]=function(_0x273636,_0x18e6dc){return db[_0xc17a('0x34')][_0xc17a('0x52')]()['then'](respondWithResult(_0x18e6dc,null))['catch'](handleError(_0x18e6dc,null));};exports[_0xc17a('0x53')]=function(_0x1b97e3,_0x280b26,_0x48bcd7){return db[_0xc17a('0x54')][_0xc17a('0x25')]({'where':{'ChatGroupId':_0x1b97e3[_0xc17a('0x4d')]['id'],'ToId':_0x1b97e3['user']['id'],'read':![]}})['then'](function(_0x5ab627){return{'id':_[_0xc17a('0x55')](_0x1b97e3[_0xc17a('0x4d')]['id']),'count':_0x5ab627};})[_0xc17a('0x2e')](respondWithResult(_0x280b26,null))['catch'](handleError(_0x280b26,null));};exports[_0xc17a('0x56')]=function(_0x42ccb3,_0x2c9eab,_0x2ce8c6){return db[_0xc17a('0x34')][_0xc17a('0x4e')]({'where':{'id':_0x42ccb3[_0xc17a('0x4d')]['id']}})[_0xc17a('0x2e')](handleEntityNotFound(_0x2c9eab,null))['then'](function(_0x396fbe){if(_0x396fbe){return _0x396fbe[_0xc17a('0x56')](_0x42ccb3['body'][_0xc17a('0x57')],_[_0xc17a('0x58')](_0x42ccb3[_0xc17a('0x50')],[_0xc17a('0x57'),'id'])||{});}})[_0xc17a('0x2e')](respondWithResult(_0x2c9eab,null))[_0xc17a('0x51')](handleError(_0x2c9eab,null));};exports[_0xc17a('0x59')]=function(_0x4b7c3f,_0x57ed76,_0x42e148){var _0x12371d={};var _0x141e17={};var _0x3c00d5;var _0x38af46;return db[_0xc17a('0x34')]['findOne']({'where':{'id':_0x4b7c3f['params']['id']}})['then'](handleEntityNotFound(_0x57ed76,null))[_0xc17a('0x2e')](function(_0x45eccf){if(_0x45eccf){_0x3c00d5=_0x45eccf;_0x141e17['model']=_[_0xc17a('0x3b')](db[_0xc17a('0x5a')][_0xc17a('0x35')]);_0x141e17[_0xc17a('0x3c')]=_['keys'](_0x4b7c3f[_0xc17a('0x3c')]);_0x141e17[_0xc17a('0x45')]=_['intersection'](_0x141e17[_0xc17a('0x39')],_0x141e17['query']);_0x12371d[_0xc17a('0x3f')]=_[_0xc17a('0x3d')](_0x141e17[_0xc17a('0x39')],qs[_0xc17a('0x3e')](_0x4b7c3f[_0xc17a('0x3c')][_0xc17a('0x3e')]));_0x12371d[_0xc17a('0x3f')]=_0x12371d['attributes']['length']?_0x12371d['attributes']:_0x141e17['model'];_0x12371d[_0xc17a('0x42')]=qs[_0xc17a('0x43')](_0x4b7c3f[_0xc17a('0x3c')][_0xc17a('0x43')]);_0x12371d[_0xc17a('0x44')]=qs['filters'](_[_0xc17a('0x5b')](_0x4b7c3f[_0xc17a('0x3c')],_0x141e17[_0xc17a('0x45')]));if(_0x4b7c3f[_0xc17a('0x3c')]['filter']){_0x12371d[_0xc17a('0x44')]=_['merge'](_0x12371d[_0xc17a('0x44')],{'$or':_['map'](_0x12371d[_0xc17a('0x3f')],function(_0x5957f9){var _0x1a62d3={};_0x1a62d3[_0x5957f9]={'$like':'%'+_0x4b7c3f[_0xc17a('0x3c')][_0xc17a('0x48')]+'%'};return _0x1a62d3;})});}_0x12371d=_[_0xc17a('0x46')]({},_0x12371d,_0x4b7c3f[_0xc17a('0x49')]);return _0x3c00d5[_0xc17a('0x59')](_0x12371d);}})['then'](function(_0x13ea51){if(_0x13ea51){_0x38af46=_0x13ea51[_0xc17a('0x40')];if(!_0x4b7c3f['query'][_0xc17a('0x41')](_0xc17a('0x5c'))){_0x12371d['limit']=qs[_0xc17a('0x24')](_0x4b7c3f[_0xc17a('0x3c')][_0xc17a('0x24')]);_0x12371d[_0xc17a('0x26')]=qs[_0xc17a('0x26')](_0x4b7c3f['query'][_0xc17a('0x26')]);}return _0x3c00d5[_0xc17a('0x59')](_0x12371d);}})[_0xc17a('0x2e')](function(_0x1196e7){if(_0x1196e7){return _0x1196e7?{'count':_0x38af46,'rows':_0x1196e7}:null;}})[_0xc17a('0x2e')](respondWithResult(_0x57ed76,null))[_0xc17a('0x51')](handleError(_0x57ed76,null));};exports['removeMembers']=function(_0x5a85dc,_0x59d97b,_0x1c9286){return db[_0xc17a('0x34')][_0xc17a('0x4e')]({'where':{'id':_0x5a85dc[_0xc17a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x59d97b,null))[_0xc17a('0x2e')](function(_0x12a607){if(_0x12a607){return _0x12a607[_0xc17a('0x5d')](_0x5a85dc[_0xc17a('0x3c')][_0xc17a('0x57')]);}})[_0xc17a('0x2e')](respondWithStatusCode(_0x59d97b,null))[_0xc17a('0x51')](handleError(_0x59d97b,null));};exports[_0xc17a('0x5e')]=function(_0x160de2,_0x5306bc,_0x1c368e){if(_0x160de2['body']['id']){delete _0x160de2[_0xc17a('0x50')]['id'];}return db[_0xc17a('0x34')][_0xc17a('0x4e')]({'where':{'id':_0x160de2[_0xc17a('0x4d')]['id']}})[_0xc17a('0x2e')](handleEntityNotFound(_0x5306bc,null))[_0xc17a('0x2e')](function(_0x5f2d97){if(_0x5f2d97){_0x160de2[_0xc17a('0x50')][_0xc17a('0x5f')]=_0x5f2d97['id'];return db['ChatInternalMessage'][_0xc17a('0x4f')](_0x160de2['body']);}})['then'](respondWithResult(_0x5306bc,null))['catch'](handleError(_0x5306bc,null));};exports['getMessages']=function(_0x126162,_0x2c52b7,_0x38c071){var _0x5d3a0e={};var _0x383cae={};var _0x1b6e30;var _0x4db49d;return db[_0xc17a('0x34')][_0xc17a('0x60')]({'where':{'id':_0x126162[_0xc17a('0x4d')]['id']}})[_0xc17a('0x2e')](handleEntityNotFound(_0x2c52b7,null))[_0xc17a('0x2e')](function(_0x86d3a4){if(_0x86d3a4){_0x1b6e30=_0x86d3a4;_0x383cae[_0xc17a('0x39')]=_['keys'](db['ChatInternalMessage'][_0xc17a('0x35')]);_0x383cae[_0xc17a('0x3c')]=_[_0xc17a('0x3b')](_0x126162[_0xc17a('0x3c')]);_0x383cae[_0xc17a('0x45')]=_['intersection'](_0x383cae[_0xc17a('0x39')],_0x383cae[_0xc17a('0x3c')]);_0x5d3a0e[_0xc17a('0x3f')]=_['intersection'](_0x383cae[_0xc17a('0x39')],qs['fields'](_0x126162[_0xc17a('0x3c')][_0xc17a('0x3e')]));_0x5d3a0e[_0xc17a('0x3f')]=_0x5d3a0e[_0xc17a('0x3f')][_0xc17a('0x40')]?_0x5d3a0e[_0xc17a('0x3f')]:_0x383cae[_0xc17a('0x39')];_0x5d3a0e['order']=qs['sort'](_0x126162['query'][_0xc17a('0x43')]);_0x5d3a0e[_0xc17a('0x44')]=qs[_0xc17a('0x45')](_[_0xc17a('0x5b')](_0x126162[_0xc17a('0x3c')],_0x383cae['filters']));if(_0x126162[_0xc17a('0x3c')][_0xc17a('0x48')]){_0x5d3a0e[_0xc17a('0x44')]=_['merge'](_0x5d3a0e[_0xc17a('0x44')],{'$or':_['map'](_0x5d3a0e[_0xc17a('0x3f')],function(_0x3f0a9b){var _0x231945={};_0x231945[_0x3f0a9b]={'$like':'%'+_0x126162['query'][_0xc17a('0x48')]+'%'};return _0x231945;})});}if(_0x126162[_0xc17a('0x3c')][_0xc17a('0x61')]){var _0x105022=_0x126162[_0xc17a('0x3c')]['$gte']['split'](',');var _0x5a359f={};_0x5a359f[_0x105022[0x0]]={'$gte':moment(_0x105022[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x5d3a0e['where']=_[_0xc17a('0x46')](_0x5d3a0e[_0xc17a('0x44')],_0x5a359f);}_0x5d3a0e=_[_0xc17a('0x46')]({},_0x5d3a0e,_0x126162[_0xc17a('0x49')]);return _0x1b6e30[_0xc17a('0x62')](_0x5d3a0e);}})[_0xc17a('0x2e')](function(_0x58597b){if(_0x58597b){_0x4db49d=_0x58597b['length'];if(!_0x126162[_0xc17a('0x3c')][_0xc17a('0x41')](_0xc17a('0x5c'))){_0x5d3a0e['limit']=qs[_0xc17a('0x24')](_0x126162[_0xc17a('0x3c')][_0xc17a('0x24')]);_0x5d3a0e[_0xc17a('0x26')]=qs[_0xc17a('0x26')](_0x126162[_0xc17a('0x3c')][_0xc17a('0x26')]);}return _0x1b6e30[_0xc17a('0x62')](_0x5d3a0e);}})['then'](function(_0x13f4cd){if(_0x13f4cd){return _0x13f4cd?{'count':_0x4db49d,'rows':_0x13f4cd}:null;}})[_0xc17a('0x2e')](respondWithResult(_0x2c52b7,null))[_0xc17a('0x51')](handleError(_0x2c52b7,null));};
\ No newline at end of file
+var _0x4f47=['body','update','find','describe','ChatInternalMessage','toInteger','addMembers','ids','omit','findOne','User','options','getMembers','removeMembers','ChatGroupId','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./chatGroup.socket','register','sendStatus','end','status','json','offset','count','limit','apply','save','destroy','name','index','map','ChatGroup','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','rows','then','catch','show','params','create'];(function(_0x32ae4e,_0x1dd4b0){var _0x1084a7=function(_0x50c403){while(--_0x50c403){_0x32ae4e['push'](_0x32ae4e['shift']());}};_0x1084a7(++_0x1dd4b0);}(_0x4f47,0x11e));var _0x74f4=function(_0xca3e89,_0x238440){_0xca3e89=_0xca3e89-0x0;var _0x4feb8b=_0x4f47[_0xca3e89];return _0x4feb8b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x74f4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x74f4('0x1'));var rp=require('request-promise');var moment=require(_0x74f4('0x2'));var BPromise=require(_0x74f4('0x3'));var Mustache=require(_0x74f4('0x4'));var util=require('util');var path=require(_0x74f4('0x5'));var sox=require(_0x74f4('0x6'));var csv=require(_0x74f4('0x7'));var ejs=require(_0x74f4('0x8'));var fs=require('fs');var fs_extra=require(_0x74f4('0x9'));var _=require(_0x74f4('0xa'));var squel=require(_0x74f4('0xb'));var crypto=require('crypto');var jsforce=require(_0x74f4('0xc'));var deskjs=require(_0x74f4('0xd'));var toCsv=require(_0x74f4('0x7'));var querystring=require(_0x74f4('0xe'));var Papa=require('papaparse');var Redis=require(_0x74f4('0xf'));var authService=require(_0x74f4('0x10'));var qs=require(_0x74f4('0x11'));var as=require(_0x74f4('0x12'));var hardwareService=require(_0x74f4('0x13'));var logger=require(_0x74f4('0x14'))(_0x74f4('0x15'));var utils=require('../../config/utils');var config=require(_0x74f4('0x16'));var licenseUtil=require(_0x74f4('0x17'));var db=require(_0x74f4('0x18'))['db'];config[_0x74f4('0x19')]=_[_0x74f4('0x1a')](config[_0x74f4('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x74f4('0x19')]));require(_0x74f4('0x1b'))[_0x74f4('0x1c')](socket);function respondWithStatusCode(_0x161c0e,_0x56cb90){_0x56cb90=_0x56cb90||0xcc;return function(_0x5e5cfe){if(_0x5e5cfe){return _0x161c0e[_0x74f4('0x1d')](_0x56cb90);}return _0x161c0e['status'](_0x56cb90)[_0x74f4('0x1e')]();};}function respondWithResult(_0x407e23,_0x1db2e1){_0x1db2e1=_0x1db2e1||0xc8;return function(_0x2d2556){if(_0x2d2556){return _0x407e23[_0x74f4('0x1f')](_0x1db2e1)[_0x74f4('0x20')](_0x2d2556);}};}function respondWithFilteredResult(_0x383717,_0x57afdf){return function(_0x5b54f6){if(_0x5b54f6){var _0x45bcf6=typeof _0x57afdf[_0x74f4('0x21')]==='undefined'&&typeof _0x57afdf['limit']==='undefined';var _0x182e39=_0x5b54f6[_0x74f4('0x22')];var _0x145323=_0x45bcf6?0x0:_0x57afdf['offset'];var _0x8d4810=_0x45bcf6?_0x5b54f6[_0x74f4('0x22')]:_0x57afdf[_0x74f4('0x21')]+_0x57afdf[_0x74f4('0x23')];var _0x5c7ba7;if(_0x8d4810>=_0x182e39){_0x8d4810=_0x182e39;_0x5c7ba7=0xc8;}else{_0x5c7ba7=0xce;}_0x383717[_0x74f4('0x1f')](_0x5c7ba7);return _0x383717['set']('Content-Range',_0x145323+'-'+_0x8d4810+'/'+_0x182e39)[_0x74f4('0x20')](_0x5b54f6);}return null;};}function patchUpdates(_0x219f96){return function(_0x436aaa){try{jsonpatch[_0x74f4('0x24')](_0x436aaa,_0x219f96,!![]);}catch(_0x42659e){return BPromise['reject'](_0x42659e);}return _0x436aaa[_0x74f4('0x25')]();};}function saveUpdates(_0x4462fe,_0x3c894e){return function(_0x14a220){if(_0x14a220){return _0x14a220['update'](_0x4462fe)['then'](function(_0x4f8b1b){return _0x4f8b1b;});}return null;};}function removeEntity(_0x43f554,_0x2c6a28){return function(_0x4a8b0b){if(_0x4a8b0b){return _0x4a8b0b[_0x74f4('0x26')]()['then'](function(){_0x43f554[_0x74f4('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ab021,_0x321353){return function(_0x429459){if(!_0x429459){_0x2ab021['sendStatus'](0x194);}return _0x429459;};}function handleError(_0xa7d247,_0x51c3de){_0x51c3de=_0x51c3de||0x1f4;return function(_0x5efa70){logger['error'](_0x5efa70['stack']);if(_0x5efa70['name']){delete _0x5efa70[_0x74f4('0x27')];}_0xa7d247['status'](_0x51c3de)['send'](_0x5efa70);};}exports[_0x74f4('0x28')]=function(_0x2964b4,_0x25912d){var _0xe57d4f={},_0x679a00={},_0x5a979b={'count':0x0,'rows':[]};var _0x49335e=_[_0x74f4('0x29')](db[_0x74f4('0x2a')][_0x74f4('0x2b')],function(_0x24ea2b){return{'name':_0x24ea2b[_0x74f4('0x2c')],'type':_0x24ea2b['type'][_0x74f4('0x2d')]};});_0x679a00[_0x74f4('0x2e')]=_[_0x74f4('0x29')](_0x49335e,_0x74f4('0x27'));_0x679a00[_0x74f4('0x2f')]=_[_0x74f4('0x30')](_0x2964b4[_0x74f4('0x2f')]);_0x679a00[_0x74f4('0x31')]=_[_0x74f4('0x32')](_0x679a00[_0x74f4('0x2e')],_0x679a00[_0x74f4('0x2f')]);_0xe57d4f[_0x74f4('0x33')]=_[_0x74f4('0x32')](_0x679a00[_0x74f4('0x2e')],qs[_0x74f4('0x34')](_0x2964b4['query'][_0x74f4('0x34')]));_0xe57d4f[_0x74f4('0x33')]=_0xe57d4f[_0x74f4('0x33')][_0x74f4('0x35')]?_0xe57d4f[_0x74f4('0x33')]:_0x679a00[_0x74f4('0x2e')];if(!_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x36')](_0x74f4('0x37'))){_0xe57d4f[_0x74f4('0x23')]=qs['limit'](_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x23')]);_0xe57d4f[_0x74f4('0x21')]=qs[_0x74f4('0x21')](_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x21')]);}_0xe57d4f[_0x74f4('0x38')]=qs[_0x74f4('0x39')](_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x39')]);_0xe57d4f[_0x74f4('0x3a')]=qs[_0x74f4('0x31')](_[_0x74f4('0x3b')](_0x2964b4['query'],_0x679a00['filters']),_0x49335e);if(_0x2964b4['query'][_0x74f4('0x3c')]){_0xe57d4f['where']=_[_0x74f4('0x3d')](_0xe57d4f[_0x74f4('0x3a')],{'$or':_[_0x74f4('0x29')](_0x49335e,function(_0x386e07){if(_0x386e07['type']!=='VIRTUAL'){var _0x3d1d99={};_0x3d1d99[_0x386e07['name']]={'$like':'%'+_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x3c')]+'%'};return _0x3d1d99;}})});}_0xe57d4f=_[_0x74f4('0x3d')]({},_0xe57d4f,_0x2964b4['options']);var _0x18f26f={'where':_0xe57d4f['where']};return db[_0x74f4('0x2a')][_0x74f4('0x22')](_0x18f26f)['then'](function(_0x463b49){_0x5a979b[_0x74f4('0x22')]=_0x463b49;if(_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x3e')]){_0xe57d4f[_0x74f4('0x3f')]=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0xe57d4f);})['then'](function(_0x13ac99){_0x5a979b[_0x74f4('0x40')]=_0x13ac99;return _0x5a979b;})[_0x74f4('0x41')](respondWithFilteredResult(_0x25912d,_0xe57d4f))[_0x74f4('0x42')](handleError(_0x25912d,null));};exports[_0x74f4('0x43')]=function(_0x3893dc,_0x3d0c3e){var _0x3c3e11={'raw':!![],'where':{'id':_0x3893dc[_0x74f4('0x44')]['id']}},_0x2c57c4={};_0x2c57c4[_0x74f4('0x2e')]=_[_0x74f4('0x30')](db[_0x74f4('0x2a')][_0x74f4('0x2b')]);_0x2c57c4[_0x74f4('0x2f')]=_[_0x74f4('0x30')](_0x3893dc[_0x74f4('0x2f')]);_0x2c57c4['filters']=_[_0x74f4('0x32')](_0x2c57c4[_0x74f4('0x2e')],_0x2c57c4[_0x74f4('0x2f')]);_0x3c3e11[_0x74f4('0x33')]=_['intersection'](_0x2c57c4['model'],qs[_0x74f4('0x34')](_0x3893dc[_0x74f4('0x2f')][_0x74f4('0x34')]));_0x3c3e11['attributes']=_0x3c3e11[_0x74f4('0x33')]['length']?_0x3c3e11[_0x74f4('0x33')]:_0x2c57c4[_0x74f4('0x2e')];if(_0x3893dc[_0x74f4('0x2f')]['includeAll']){_0x3c3e11['include']=[{'all':!![]}];}_0x3c3e11=_[_0x74f4('0x3d')]({},_0x3c3e11,_0x3893dc['options']);return db[_0x74f4('0x2a')]['find'](_0x3c3e11)[_0x74f4('0x41')](handleEntityNotFound(_0x3d0c3e,null))[_0x74f4('0x41')](respondWithResult(_0x3d0c3e,null))[_0x74f4('0x42')](handleError(_0x3d0c3e,null));};exports[_0x74f4('0x45')]=function(_0x2836c5,_0x5d302c){return db[_0x74f4('0x2a')][_0x74f4('0x45')](_0x2836c5[_0x74f4('0x46')],{})[_0x74f4('0x41')](respondWithResult(_0x5d302c,0xc9))['catch'](handleError(_0x5d302c,null));};exports[_0x74f4('0x47')]=function(_0x40e4e6,_0x159281){if(_0x40e4e6[_0x74f4('0x46')]['id']){delete _0x40e4e6['body']['id'];}return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x40e4e6[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x159281,null))['then'](saveUpdates(_0x40e4e6[_0x74f4('0x46')],null))[_0x74f4('0x41')](respondWithResult(_0x159281,null))[_0x74f4('0x42')](handleError(_0x159281,null));};exports['destroy']=function(_0x15f75c,_0xbe6cea){return db['ChatGroup']['find']({'where':{'id':_0x15f75c[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0xbe6cea,null))['then'](removeEntity(_0xbe6cea,null))[_0x74f4('0x42')](handleError(_0xbe6cea,null));};exports[_0x74f4('0x49')]=function(_0x2943e1,_0x4c8f4e){return db[_0x74f4('0x2a')]['describe']()[_0x74f4('0x41')](respondWithResult(_0x4c8f4e,null))[_0x74f4('0x42')](handleError(_0x4c8f4e,null));};exports['getUnread']=function(_0xc6f85a,_0x2efc06,_0x296345){return db[_0x74f4('0x4a')]['count']({'where':{'ChatGroupId':_0xc6f85a[_0x74f4('0x44')]['id'],'ToId':_0xc6f85a['user']['id'],'read':![]}})[_0x74f4('0x41')](function(_0x518755){return{'id':_[_0x74f4('0x4b')](_0xc6f85a[_0x74f4('0x44')]['id']),'count':_0x518755};})['then'](respondWithResult(_0x2efc06,null))['catch'](handleError(_0x2efc06,null));};exports[_0x74f4('0x4c')]=function(_0x493727,_0x118b0a,_0x3f4b51){return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x493727[_0x74f4('0x44')]['id']}})['then'](handleEntityNotFound(_0x118b0a,null))[_0x74f4('0x41')](function(_0x5c0e50){if(_0x5c0e50){return _0x5c0e50[_0x74f4('0x4c')](_0x493727[_0x74f4('0x46')][_0x74f4('0x4d')],_[_0x74f4('0x4e')](_0x493727['body'],[_0x74f4('0x4d'),'id'])||{});}})[_0x74f4('0x41')](respondWithResult(_0x118b0a,null))[_0x74f4('0x42')](handleError(_0x118b0a,null));};exports['getMembers']=function(_0xc540fc,_0x3e27fa,_0x1fdfee){var _0x5b4c60={};var _0x2cadb1={};var _0x36df51;var _0x5d5611;return db[_0x74f4('0x2a')][_0x74f4('0x4f')]({'where':{'id':_0xc540fc[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x3e27fa,null))[_0x74f4('0x41')](function(_0x2111da){if(_0x2111da){_0x36df51=_0x2111da;_0x2cadb1[_0x74f4('0x2e')]=_['keys'](db[_0x74f4('0x50')][_0x74f4('0x2b')]);_0x2cadb1[_0x74f4('0x2f')]=_['keys'](_0xc540fc[_0x74f4('0x2f')]);_0x2cadb1['filters']=_[_0x74f4('0x32')](_0x2cadb1[_0x74f4('0x2e')],_0x2cadb1[_0x74f4('0x2f')]);_0x5b4c60['attributes']=_[_0x74f4('0x32')](_0x2cadb1[_0x74f4('0x2e')],qs[_0x74f4('0x34')](_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x34')]));_0x5b4c60['attributes']=_0x5b4c60['attributes'][_0x74f4('0x35')]?_0x5b4c60[_0x74f4('0x33')]:_0x2cadb1['model'];_0x5b4c60['order']=qs['sort'](_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x39')]);_0x5b4c60['where']=qs[_0x74f4('0x31')](_[_0x74f4('0x3b')](_0xc540fc[_0x74f4('0x2f')],_0x2cadb1['filters']));if(_0xc540fc[_0x74f4('0x2f')]['filter']){_0x5b4c60['where']=_[_0x74f4('0x3d')](_0x5b4c60['where'],{'$or':_[_0x74f4('0x29')](_0x5b4c60[_0x74f4('0x33')],function(_0x2515e9){var _0x173042={};_0x173042[_0x2515e9]={'$like':'%'+_0xc540fc['query'][_0x74f4('0x3c')]+'%'};return _0x173042;})});}_0x5b4c60=_[_0x74f4('0x3d')]({},_0x5b4c60,_0xc540fc[_0x74f4('0x51')]);return _0x36df51[_0x74f4('0x52')](_0x5b4c60);}})[_0x74f4('0x41')](function(_0x43cab1){if(_0x43cab1){_0x5d5611=_0x43cab1['length'];if(!_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x36')](_0x74f4('0x37'))){_0x5b4c60[_0x74f4('0x23')]=qs[_0x74f4('0x23')](_0xc540fc[_0x74f4('0x2f')]['limit']);_0x5b4c60['offset']=qs[_0x74f4('0x21')](_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x21')]);}return _0x36df51[_0x74f4('0x52')](_0x5b4c60);}})[_0x74f4('0x41')](function(_0x2e584e){if(_0x2e584e){return _0x2e584e?{'count':_0x5d5611,'rows':_0x2e584e}:null;}})[_0x74f4('0x41')](respondWithResult(_0x3e27fa,null))['catch'](handleError(_0x3e27fa,null));};exports[_0x74f4('0x53')]=function(_0x9f3a68,_0x245ba2,_0x3a53a0){return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x9f3a68[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x245ba2,null))[_0x74f4('0x41')](function(_0x207f56){if(_0x207f56){return _0x207f56[_0x74f4('0x53')](_0x9f3a68[_0x74f4('0x2f')]['ids']);}})[_0x74f4('0x41')](respondWithStatusCode(_0x245ba2,null))[_0x74f4('0x42')](handleError(_0x245ba2,null));};exports['addMessage']=function(_0x101f17,_0x3d1a85,_0x535f59){if(_0x101f17['body']['id']){delete _0x101f17[_0x74f4('0x46')]['id'];}return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x101f17[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x3d1a85,null))[_0x74f4('0x41')](function(_0x13fe94){if(_0x13fe94){_0x101f17[_0x74f4('0x46')][_0x74f4('0x54')]=_0x13fe94['id'];return db[_0x74f4('0x4a')][_0x74f4('0x45')](_0x101f17['body']);}})[_0x74f4('0x41')](respondWithResult(_0x3d1a85,null))['catch'](handleError(_0x3d1a85,null));};exports[_0x74f4('0x55')]=function(_0x29938a,_0x4b4625,_0x545ade){var _0x59a0c1={};var _0x4061ad={};var _0x348152;var _0x3454ad;return db['ChatGroup']['findOne']({'where':{'id':_0x29938a['params']['id']}})['then'](handleEntityNotFound(_0x4b4625,null))['then'](function(_0x5d7863){if(_0x5d7863){_0x348152=_0x5d7863;_0x4061ad[_0x74f4('0x2e')]=_[_0x74f4('0x30')](db[_0x74f4('0x4a')][_0x74f4('0x2b')]);_0x4061ad['query']=_[_0x74f4('0x30')](_0x29938a[_0x74f4('0x2f')]);_0x4061ad['filters']=_[_0x74f4('0x32')](_0x4061ad[_0x74f4('0x2e')],_0x4061ad['query']);_0x59a0c1[_0x74f4('0x33')]=_[_0x74f4('0x32')](_0x4061ad[_0x74f4('0x2e')],qs[_0x74f4('0x34')](_0x29938a[_0x74f4('0x2f')][_0x74f4('0x34')]));_0x59a0c1[_0x74f4('0x33')]=_0x59a0c1[_0x74f4('0x33')][_0x74f4('0x35')]?_0x59a0c1[_0x74f4('0x33')]:_0x4061ad[_0x74f4('0x2e')];_0x59a0c1['order']=qs['sort'](_0x29938a['query'][_0x74f4('0x39')]);_0x59a0c1[_0x74f4('0x3a')]=qs[_0x74f4('0x31')](_[_0x74f4('0x3b')](_0x29938a['query'],_0x4061ad[_0x74f4('0x31')]));if(_0x29938a[_0x74f4('0x2f')][_0x74f4('0x3c')]){_0x59a0c1[_0x74f4('0x3a')]=_['merge'](_0x59a0c1[_0x74f4('0x3a')],{'$or':_['map'](_0x59a0c1[_0x74f4('0x33')],function(_0x485e69){var _0x295d08={};_0x295d08[_0x485e69]={'$like':'%'+_0x29938a['query'][_0x74f4('0x3c')]+'%'};return _0x295d08;})});}if(_0x29938a['query'][_0x74f4('0x56')]){var _0x3c4abd=_0x29938a[_0x74f4('0x2f')][_0x74f4('0x56')][_0x74f4('0x57')](',');var _0x334b58={};_0x334b58[_0x3c4abd[0x0]]={'$gte':moment(_0x3c4abd[0x1])['format'](_0x74f4('0x58'))};_0x59a0c1[_0x74f4('0x3a')]=_[_0x74f4('0x3d')](_0x59a0c1['where'],_0x334b58);}_0x59a0c1=_[_0x74f4('0x3d')]({},_0x59a0c1,_0x29938a[_0x74f4('0x51')]);return _0x348152[_0x74f4('0x55')](_0x59a0c1);}})['then'](function(_0x2d2938){if(_0x2d2938){_0x3454ad=_0x2d2938[_0x74f4('0x35')];if(!_0x29938a[_0x74f4('0x2f')][_0x74f4('0x36')](_0x74f4('0x37'))){_0x59a0c1[_0x74f4('0x23')]=qs['limit'](_0x29938a[_0x74f4('0x2f')]['limit']);_0x59a0c1[_0x74f4('0x21')]=qs['offset'](_0x29938a[_0x74f4('0x2f')][_0x74f4('0x21')]);}return _0x348152[_0x74f4('0x55')](_0x59a0c1);}})[_0x74f4('0x41')](function(_0x4595b0){if(_0x4595b0){return _0x4595b0?{'count':_0x3454ad,'rows':_0x4595b0}:null;}})['then'](respondWithResult(_0x4b4625,null))['catch'](handleError(_0x4b4625,null));};
\ No newline at end of file
index 021f6bc..c69fa45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed0b=['exports','events','ChatGroup','setMaxListeners','save','hasOwnProperty','hook'];(function(_0x105a81,_0x1c526c){var _0x13f5ab=function(_0x24c33f){while(--_0x24c33f){_0x105a81['push'](_0x105a81['shift']());}};_0x13f5ab(++_0x1c526c);}(_0xed0b,0x15f));var _0xbed0=function(_0x334651,_0x6e99f6){_0x334651=_0x334651-0x0;var _0x29657c=_0xed0b[_0x334651];return _0x29657c;};'use strict';var EventEmitter=require(_0xbed0('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0xbed0('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xbed0('0x2')](0x0);var events={'afterCreate':_0xbed0('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4d10b0){return function(_0x4375b2,_0x59df8c,_0x223998){ChatGroupEvents['emit'](_0x4d10b0+':'+_0x4375b2['id'],_0x4375b2);ChatGroupEvents['emit'](_0x4d10b0,_0x4375b2);_0x223998(null);};}for(var e in events){if(events[_0xbed0('0x4')](e)){var event=events[e];ChatGroup[_0xbed0('0x5')](e,emitEvent(event));}}module[_0xbed0('0x6')]=ChatGroupEvents;
\ No newline at end of file
+var _0xd159=['../../mysqldb','ChatGroup','setMaxListeners','update','remove','emit','hook','exports','events'];(function(_0xb301d4,_0x27ed18){var _0x3b5bde=function(_0x1fbc5f){while(--_0x1fbc5f){_0xb301d4['push'](_0xb301d4['shift']());}};_0x3b5bde(++_0x27ed18);}(_0xd159,0x19d));var _0x9d15=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd159[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x9d15('0x0'));var ChatGroup=require(_0x9d15('0x1'))['db'][_0x9d15('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x9d15('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9d15('0x4'),'afterDestroy':_0x9d15('0x5')};function emitEvent(_0x47f341){return function(_0x33e4f6,_0x46601a,_0x2d5ffa){ChatGroupEvents['emit'](_0x47f341+':'+_0x33e4f6['id'],_0x33e4f6);ChatGroupEvents[_0x9d15('0x6')](_0x47f341,_0x33e4f6);_0x2d5ffa(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x9d15('0x7')](e,emitEvent(event));}}module[_0x9d15('0x8')]=ChatGroupEvents;
\ No newline at end of file
index 86351c2..c89ca29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4760=['util','moment','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','define','ChatGroup','chat_groups','lodash'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x4760,0xaf));var _0x0476=function(_0x1a1172,_0x23864e){_0x1a1172=_0x1a1172-0x0;var _0x2dd3cf=_0x4760[_0x1a1172];return _0x2dd3cf;};'use strict';var _=require(_0x0476('0x0'));var util=require(_0x0476('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0476('0x2'));var BPromise=require(_0x0476('0x3'));var rp=require(_0x0476('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0476('0x5'));var config=require(_0x0476('0x6'));var attributes=require(_0x0476('0x7'));module['exports']=function(_0x2f83a4,_0x2da335){return _0x2f83a4[_0x0476('0x8')](_0x0476('0x9'),attributes,{'tableName':_0x0476('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x156e=['../../config/environment','exports','define','ChatGroup','lodash','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x30c2ae,_0x4c98a2){var _0x1ee1cc=function(_0x165922){while(--_0x165922){_0x30c2ae['push'](_0x30c2ae['shift']());}};_0x1ee1cc(++_0x4c98a2);}(_0x156e,0x144));var _0xe156=function(_0x4f3416,_0x597da8){_0x4f3416=_0x4f3416-0x0;var _0x2160ae=_0x156e[_0x4f3416];return _0x2160ae;};'use strict';var _=require(_0xe156('0x0'));var util=require('util');var logger=require(_0xe156('0x1'))('api');var moment=require(_0xe156('0x2'));var BPromise=require('bluebird');var rp=require(_0xe156('0x3'));var fs=require('fs');var path=require(_0xe156('0x4'));var rimraf=require(_0xe156('0x5'));var config=require(_0xe156('0x6'));var attributes=require('./chatGroup.attributes');module[_0xe156('0x7')]=function(_0xd2ee2,_0x295a72){return _0xd2ee2[_0xe156('0x8')](_0xe156('0x9'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1afaeeb..ca77143 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4006=['rpc','client','redis','defaults','localhost','./chatGroup.socket','register','request','then','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x110924,_0x1374bb){var _0x12905b=function(_0x47d32c){while(--_0x47d32c){_0x110924['push'](_0x110924['shift']());}};_0x12905b(++_0x1374bb);}(_0x4006,0x1c7));var _0x6400=function(_0x4145cc,_0x438fc4){_0x4145cc=_0x4145cc-0x0;var _0xaf2cf0=_0x4006[_0x4145cc];return _0xaf2cf0;};'use strict';var _=require('lodash');var util=require(_0x6400('0x0'));var moment=require(_0x6400('0x1'));var BPromise=require(_0x6400('0x2'));var rs=require(_0x6400('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6400('0x4'));var logger=require('../../config/logger')(_0x6400('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6400('0x6')]['http']({'port':0x232a});config[_0x6400('0x7')]=_[_0x6400('0x8')](config[_0x6400('0x7')],{'host':_0x6400('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6400('0x7')]));require(_0x6400('0xa'))[_0x6400('0xb')](socket);function respondWithRpcPromise(_0x356982,_0x3b124f,_0x1c59d0){return new BPromise(function(_0x411472,_0xc3cf61){return client[_0x6400('0xc')](_0x356982,_0x1c59d0)[_0x6400('0xd')](function(_0x264391){logger['info'](_0x6400('0xe'),_0x3b124f,_0x6400('0xf'));logger[_0x6400('0x10')](_0x6400('0x11'),_0x3b124f,'request\x20sent',JSON[_0x6400('0x12')](_0x264391));if(_0x264391[_0x6400('0x13')]){if(_0x264391['error']['code']===0x1f4){logger['error'](_0x6400('0xe'),_0x3b124f,_0x264391[_0x6400('0x13')]['message']);return _0xc3cf61(_0x264391[_0x6400('0x13')]['message']);}logger[_0x6400('0x13')]('ChatGroup,\x20%s,\x20%s',_0x3b124f,_0x264391[_0x6400('0x13')][_0x6400('0x14')]);return _0x411472(_0x264391[_0x6400('0x13')][_0x6400('0x14')]);}else{logger['info'](_0x6400('0xe'),_0x3b124f,_0x6400('0xf'));_0x411472(_0x264391[_0x6400('0x15')]['message']);}})[_0x6400('0x16')](function(_0x205f8b){logger['error'](_0x6400('0xe'),_0x3b124f,_0x205f8b);_0xc3cf61(_0x205f8b);});});}
\ No newline at end of file
+var _0x9ade=['./chatGroup.socket','register','request','then','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','ChatGroup,\x20%s,\x20%s','message','result','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x272d86,_0x150473){var _0x490717=function(_0x369744){while(--_0x369744){_0x272d86['push'](_0x272d86['shift']());}};_0x490717(++_0x150473);}(_0x9ade,0x107));var _0xe9ad=function(_0x1fd563,_0x196466){_0x1fd563=_0x1fd563-0x0;var _0x4673f3=_0x9ade[_0x1fd563];return _0x4673f3;};'use strict';var _=require(_0xe9ad('0x0'));var util=require(_0xe9ad('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe9ad('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe9ad('0x3'))['db'];var utils=require(_0xe9ad('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe9ad('0x5'));var jayson=require(_0xe9ad('0x6'));var client=jayson[_0xe9ad('0x7')][_0xe9ad('0x8')]({'port':0x232a});config[_0xe9ad('0x9')]=_[_0xe9ad('0xa')](config[_0xe9ad('0x9')],{'host':_0xe9ad('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe9ad('0x9')]));require(_0xe9ad('0xc'))[_0xe9ad('0xd')](socket);function respondWithRpcPromise(_0x3b353f,_0x268c04,_0x25927c){return new BPromise(function(_0x16ef20,_0x2e8e3e){return client[_0xe9ad('0xe')](_0x3b353f,_0x25927c)[_0xe9ad('0xf')](function(_0x1aec2b){logger[_0xe9ad('0x10')]('ChatGroup,\x20%s,\x20%s',_0x268c04,_0xe9ad('0x11'));logger[_0xe9ad('0x12')](_0xe9ad('0x13'),_0x268c04,_0xe9ad('0x11'),JSON['stringify'](_0x1aec2b));if(_0x1aec2b[_0xe9ad('0x14')]){if(_0x1aec2b[_0xe9ad('0x14')][_0xe9ad('0x15')]===0x1f4){logger[_0xe9ad('0x14')]('ChatGroup,\x20%s,\x20%s',_0x268c04,_0x1aec2b[_0xe9ad('0x14')]['message']);return _0x2e8e3e(_0x1aec2b[_0xe9ad('0x14')]['message']);}logger[_0xe9ad('0x14')](_0xe9ad('0x16'),_0x268c04,_0x1aec2b[_0xe9ad('0x14')][_0xe9ad('0x17')]);return _0x16ef20(_0x1aec2b['error'][_0xe9ad('0x17')]);}else{logger[_0xe9ad('0x10')](_0xe9ad('0x16'),_0x268c04,_0xe9ad('0x11'));_0x16ef20(_0x1aec2b[_0xe9ad('0x18')][_0xe9ad('0x17')]);}})['catch'](function(_0x3939dd){logger[_0xe9ad('0x14')](_0xe9ad('0x16'),_0x268c04,_0x3939dd);_0x2e8e3e(_0x3939dd);});});}
\ No newline at end of file
index dd4334d..5a58e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb2=['chatGroup:','remove','update','length'];(function(_0x38162f,_0x1558f2){var _0xad645a=function(_0x1fb032){while(--_0x1fb032){_0x38162f['push'](_0x38162f['shift']());}};_0xad645a(++_0x1558f2);}(_0xcbb2,0xe1));var _0x2cbb=function(_0x55852a,_0x14ae5e){_0x55852a=_0x55852a-0x0;var _0x3051c0=_0xcbb2[_0x55852a];return _0x3051c0;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=['save',_0x2cbb('0x0'),_0x2cbb('0x1')];function createListener(_0xf4a821,_0x4af068){return function(_0x13438c){_0x4af068['emit'](_0xf4a821,_0x13438c);};}function removeListener(_0x1297cd,_0x55325d){return function(){ChatGroupEvents['removeListener'](_0x1297cd,_0x55325d);};}exports['register']=function(_0x18ed8b){for(var _0x14db01=0x0,_0x418ca1=events[_0x2cbb('0x2')];_0x14db01<_0x418ca1;_0x14db01++){var _0x4c4cef=events[_0x14db01];var _0x38180e=createListener(_0x2cbb('0x3')+_0x4c4cef,_0x18ed8b);ChatGroupEvents['on'](_0x4c4cef,_0x38180e);}};
\ No newline at end of file
+var _0xad89=['length','./chatGroup.events','save','update','emit','removeListener','register'];(function(_0x4503e3,_0x1533fc){var _0x1bb659=function(_0x16a555){while(--_0x16a555){_0x4503e3['push'](_0x4503e3['shift']());}};_0x1bb659(++_0x1533fc);}(_0xad89,0x9b));var _0x9ad8=function(_0x56fd29,_0x17790b){_0x56fd29=_0x56fd29-0x0;var _0x2a0bf7=_0xad89[_0x56fd29];return _0x2a0bf7;};'use strict';var ChatGroupEvents=require(_0x9ad8('0x0'));var events=[_0x9ad8('0x1'),'remove',_0x9ad8('0x2')];function createListener(_0x3111d9,_0xfe7830){return function(_0x1d60dc){_0xfe7830[_0x9ad8('0x3')](_0x3111d9,_0x1d60dc);};}function removeListener(_0x5a628c,_0x1ffe59){return function(){ChatGroupEvents[_0x9ad8('0x4')](_0x5a628c,_0x1ffe59);};}exports[_0x9ad8('0x5')]=function(_0x164bbd){for(var _0x4b3917=0x0,_0x19de26=events[_0x9ad8('0x6')];_0x4b3917<_0x19de26;_0x4b3917++){var _0x738734=events[_0x4b3917];var _0x296985=createListener('chatGroup:'+_0x738734,_0x164bbd);ChatGroupEvents['on'](_0x738734,_0x296985);}};
\ No newline at end of file
index d4cd23a..f1c67ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1238=['put','update','delete','/:id/members','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','index','isAuthenticated','describe','/:id','show','getMembers','/:id/messages','getMessages','post','addMembers','addMessage'];(function(_0xac83c3,_0x558091){var _0x3044b7=function(_0x5dde92){while(--_0x5dde92){_0xac83c3['push'](_0xac83c3['shift']());}};_0x3044b7(++_0x558091);}(_0x1238,0x81));var _0x8123=function(_0x332ddf,_0x1ed1b5){_0x332ddf=_0x332ddf-0x0;var _0x4798a9=_0x1238[_0x332ddf];return _0x4798a9;};'use strict';var multer=require(_0x8123('0x0'));var util=require(_0x8123('0x1'));var path=require('path');var timeout=require(_0x8123('0x2'));var express=require(_0x8123('0x3'));var router=express[_0x8123('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8123('0x5'));var interaction=require(_0x8123('0x6'));var config=require(_0x8123('0x7'));var controller=require(_0x8123('0x8'));router[_0x8123('0x9')]('/',auth['isAuthenticated'](),controller[_0x8123('0xa')]);router['get']('/describe',auth[_0x8123('0xb')](),controller[_0x8123('0xc')]);router[_0x8123('0x9')](_0x8123('0xd'),auth[_0x8123('0xb')](),controller[_0x8123('0xe')]);router[_0x8123('0x9')]('/:id/unread',auth['isAuthenticated'](),controller['getUnread']);router[_0x8123('0x9')]('/:id/members',auth[_0x8123('0xb')](),controller[_0x8123('0xf')]);router[_0x8123('0x9')](_0x8123('0x10'),auth[_0x8123('0xb')](),controller[_0x8123('0x11')]);router['post']('/',auth[_0x8123('0xb')](),controller['create']);router[_0x8123('0x12')]('/:id/members',auth[_0x8123('0xb')](),controller[_0x8123('0x13')]);router[_0x8123('0x12')](_0x8123('0x10'),auth[_0x8123('0xb')](),controller[_0x8123('0x14')]);router[_0x8123('0x15')](_0x8123('0xd'),auth[_0x8123('0xb')](),controller[_0x8123('0x16')]);router[_0x8123('0x17')](_0x8123('0xd'),auth[_0x8123('0xb')](),controller['destroy']);router[_0x8123('0x17')](_0x8123('0x18'),auth[_0x8123('0xb')](),controller['removeMembers']);module['exports']=router;
\ No newline at end of file
+var _0xe929=['put','update','delete','destroy','removeMembers','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','/describe','describe','/:id','/:id/unread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage'];(function(_0x767b78,_0x16270b){var _0x5daeed=function(_0x4b0739){while(--_0x4b0739){_0x767b78['push'](_0x767b78['shift']());}};_0x5daeed(++_0x16270b);}(_0xe929,0x1d6));var _0x9e92=function(_0xcda377,_0x1e2678){_0xcda377=_0xcda377-0x0;var _0x1c024f=_0xe929[_0xcda377];return _0x1c024f;};'use strict';var multer=require(_0x9e92('0x0'));var util=require('util');var path=require(_0x9e92('0x1'));var timeout=require(_0x9e92('0x2'));var express=require(_0x9e92('0x3'));var router=express['Router']();var fs_extra=require(_0x9e92('0x4'));var auth=require(_0x9e92('0x5'));var interaction=require(_0x9e92('0x6'));var config=require(_0x9e92('0x7'));var controller=require(_0x9e92('0x8'));router[_0x9e92('0x9')]('/',auth[_0x9e92('0xa')](),controller['index']);router[_0x9e92('0x9')](_0x9e92('0xb'),auth['isAuthenticated'](),controller[_0x9e92('0xc')]);router[_0x9e92('0x9')](_0x9e92('0xd'),auth[_0x9e92('0xa')](),controller['show']);router[_0x9e92('0x9')](_0x9e92('0xe'),auth[_0x9e92('0xa')](),controller['getUnread']);router[_0x9e92('0x9')](_0x9e92('0xf'),auth['isAuthenticated'](),controller[_0x9e92('0x10')]);router['get'](_0x9e92('0x11'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x12')]);router[_0x9e92('0x13')]('/',auth[_0x9e92('0xa')](),controller[_0x9e92('0x14')]);router['post']('/:id/members',auth[_0x9e92('0xa')](),controller[_0x9e92('0x15')]);router[_0x9e92('0x13')](_0x9e92('0x11'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x16')]);router[_0x9e92('0x17')](_0x9e92('0xd'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x18')]);router[_0x9e92('0x19')](_0x9e92('0xd'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x1a')]);router[_0x9e92('0x19')](_0x9e92('0xf'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x1b')]);module[_0x9e92('0x1c')]=router;
\ No newline at end of file
index b21d9c2..c5fe4be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['BOOLEAN','ENUM','star','thumb','TEXT','STRING','DATE','long','out','sequelize','exports'];(function(_0x5a3cd6,_0x6d913a){var _0xe9ae08=function(_0x18f574){while(--_0x18f574){_0x5a3cd6['push'](_0x5a3cd6['shift']());}};_0xe9ae08(++_0x6d913a);}(_0xe706,0xa3));var _0x6e70=function(_0x1f2422,_0x125fd2){_0x1f2422=_0x1f2422-0x0;var _0x4fb420=_0xe706[_0x1f2422];return _0x4fb420;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'closed':{'type':Sequelize[_0x6e70('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x6e70('0x3')](_0x6e70('0x4'),_0x6e70('0x5')),'defaultValue':_0x6e70('0x4')},'ratingMessage':{'type':Sequelize[_0x6e70('0x6')]},'pathTranscript':{'type':Sequelize[_0x6e70('0x6')]},'mailTranscript':{'type':Sequelize[_0x6e70('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x6e70('0x8')]},'disposition':{'type':Sequelize[_0x6e70('0x7')]},'secondDisposition':{'type':Sequelize[_0x6e70('0x7')]},'thirdDisposition':{'type':Sequelize[_0x6e70('0x7')]},'note':{'type':Sequelize[_0x6e70('0x7')]},'browserName':{'type':Sequelize[_0x6e70('0x7')]},'browserVersion':{'type':Sequelize[_0x6e70('0x7')]},'osName':{'type':Sequelize[_0x6e70('0x7')]},'osVersion':{'type':Sequelize[_0x6e70('0x7')]},'deviceModel':{'type':Sequelize[_0x6e70('0x7')]},'deviceVendor':{'type':Sequelize[_0x6e70('0x7')]},'deviceType':{'type':Sequelize[_0x6e70('0x7')]},'referer':{'type':Sequelize[_0x6e70('0x6')]},'customerIp':{'type':Sequelize[_0x6e70('0x7')]},'formData':{'type':Sequelize[_0x6e70('0x6')](_0x6e70('0x9'))},'read1stAt':{'type':Sequelize[_0x6e70('0x8')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x6e70('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x6e70('0x7')]},'customerPort':{'type':Sequelize[_0x6e70('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x6e70('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x6e70('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xefe3=['DATE','STRING','long','out','BOOLEAN','sequelize','ENUM','star','thumb','TEXT'];(function(_0x316159,_0x257f7e){var _0x45d577=function(_0xd896a){while(--_0xd896a){_0x316159['push'](_0x316159['shift']());}};_0x45d577(++_0x257f7e);}(_0xefe3,0xf5));var _0x3efe=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xefe3[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x3efe('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x3efe('0x1')](_0x3efe('0x2'),_0x3efe('0x3')),'defaultValue':_0x3efe('0x2')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x3efe('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x3efe('0x5')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x3efe('0x6')]},'thirdDisposition':{'type':Sequelize[_0x3efe('0x6')]},'note':{'type':Sequelize[_0x3efe('0x6')]},'browserName':{'type':Sequelize[_0x3efe('0x6')]},'browserVersion':{'type':Sequelize[_0x3efe('0x6')]},'osName':{'type':Sequelize[_0x3efe('0x6')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x3efe('0x6')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x3efe('0x6')]},'referer':{'type':Sequelize[_0x3efe('0x4')]},'customerIp':{'type':Sequelize[_0x3efe('0x6')]},'formData':{'type':Sequelize[_0x3efe('0x4')](_0x3efe('0x7'))},'read1stAt':{'type':Sequelize[_0x3efe('0x5')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x3efe('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x3efe('0x6')]},'customerPort':{'type':Sequelize[_0x3efe('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x3efe('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x3efe('0x9')],'defaultValue':![]}};
\ No newline at end of file
index 149e138..3b3ce0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','Attachment','attachmentDownload','attachId','ChatOfflineMessageId','join','root','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','ChatMessage','Messages','%s%d','agentAlias','customer','Visitor','agentIdentifier','website_alias','System','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','SendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','nolimit','YYYY-MM-DD\x20HH:mm:ss','findAll','getMyMessages','includeAgent','spread','chatInteractionTags:save','removeTags','files','tmp','attachments','lastName','Account','Owner','get','mkdirSync','N.A.','browserName','customerIp','customerPort','createReadStream','pipe','createWriteStream','firstName','renderFile','server','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','then','request\x20sent','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','send','merge','body','contact','interaction','account','Users','map','TagIds','split','forEach','Tags','push','index','ChatInteraction','rawAttributes','fieldName','type','name','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','field','color','from','tools_tags','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','isEmpty','where','i.ChatWebsiteId\x20IN\x20?','createdAt','parse','$gte','$lte','null','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','agent','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','ChatWebsiteId','sequelize','toString','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','ChatInteractionId','all','rows','show','params','filters','includeAll','include','options','create','describe','createVidaooSession','ChatWebsite','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','fullname','email','POST','isNull','follow','vidaooMetadata','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','customUpdate','CmContact','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned'];(function(_0x238aff,_0x588dd9){var _0x1b3dcf=function(_0x41996e){while(--_0x41996e){_0x238aff['push'](_0x238aff['shift']());}};_0x1b3dcf(++_0x588dd9);}(_0x0b0e,0x187));var _0xe0b0=function(_0x47794f,_0x12c9b3){_0x47794f=_0x47794f-0x0;var _0x2ca51d=_0x0b0e[_0x47794f];return _0x2ca51d;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var pdf=require(_0xe0b0('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe0b0('0x14'))(_0xe0b0('0x15'));var utils=require(_0xe0b0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe0b0('0x17'));var db=require(_0xe0b0('0x18'))['db'];config[_0xe0b0('0x19')]=_[_0xe0b0('0x1a')](config[_0xe0b0('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xe0b0('0x1b'))(new Redis(config[_0xe0b0('0x19')]));require(_0xe0b0('0x1c'))[_0xe0b0('0x1d')](socket);var jayson=require(_0xe0b0('0x1e'));var client=jayson['client'][_0xe0b0('0x1f')]({'port':0x232b});var client9004=jayson['client'][_0xe0b0('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0xadee6e,_0x519ae8,_0x11fdca,_0x4a4cc0){return new BPromise(function(_0x2d6fb6,_0x100204){var _0x56bcc7=_0x4a4cc0||client;return _0x56bcc7['request'](_0xadee6e,_0x11fdca)[_0xe0b0('0x20')](function(_0x50a441){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x519ae8,_0xe0b0('0x21'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x519ae8,_0xe0b0('0x21'),JSON['stringify'](_0x50a441));if(_0x50a441[_0xe0b0('0x22')]){if(_0x50a441['error'][_0xe0b0('0x23')]===0x1f4){logger[_0xe0b0('0x22')](_0xe0b0('0x24'),_0x519ae8,_0x50a441[_0xe0b0('0x22')][_0xe0b0('0x25')]);return _0x100204(_0x50a441['error']['message']);}logger[_0xe0b0('0x22')]('ChatInteraction,\x20%s,\x20%s',_0x519ae8,_0x50a441[_0xe0b0('0x22')][_0xe0b0('0x25')]);return _0x2d6fb6(_0x50a441['error'][_0xe0b0('0x25')]);}else{logger['info'](_0xe0b0('0x24'),_0x519ae8,'request\x20sent');_0x2d6fb6(_0x50a441[_0xe0b0('0x26')]['message']);}})[_0xe0b0('0x27')](function(_0x4de537){logger[_0xe0b0('0x22')]('ChatInteraction,\x20%s,\x20%s',_0x519ae8,_0x4de537);_0x100204(_0x4de537);});});}function respondWithStatusCode(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0xcc;return function(_0x362aba){if(_0x362aba){return _0x3c221d[_0xe0b0('0x28')](_0x5c5317);}return _0x3c221d[_0xe0b0('0x29')](_0x5c5317)[_0xe0b0('0x2a')]();};}function respondWithResult(_0x3ec2,_0x10745d){_0x10745d=_0x10745d||0xc8;return function(_0x5200a6){if(_0x5200a6){return _0x3ec2[_0xe0b0('0x29')](_0x10745d)[_0xe0b0('0x2b')](_0x5200a6);}};}function respondWithFilteredResult(_0x5b7a64,_0x15e13b){return function(_0x419b1f){if(_0x419b1f){var _0x36d137=typeof _0x15e13b[_0xe0b0('0x2c')]===_0xe0b0('0x2d')&&typeof _0x15e13b[_0xe0b0('0x2e')]===_0xe0b0('0x2d');var _0x4fb3b7=_0x419b1f[_0xe0b0('0x2f')];var _0x3c0109=_0x36d137?0x0:_0x15e13b['offset'];var _0x4fe400=_0x36d137?_0x419b1f[_0xe0b0('0x2f')]:_0x15e13b[_0xe0b0('0x2c')]+_0x15e13b[_0xe0b0('0x2e')];var _0x3f81d5;if(_0x4fe400>=_0x4fb3b7){_0x4fe400=_0x4fb3b7;_0x3f81d5=0xc8;}else{_0x3f81d5=0xce;}_0x5b7a64[_0xe0b0('0x29')](_0x3f81d5);return _0x5b7a64['set'](_0xe0b0('0x30'),_0x3c0109+'-'+_0x4fe400+'/'+_0x4fb3b7)[_0xe0b0('0x2b')](_0x419b1f);}return null;};}function patchUpdates(_0x7867c4){return function(_0x29d725){try{jsonpatch[_0xe0b0('0x31')](_0x29d725,_0x7867c4,!![]);}catch(_0x4fe835){return BPromise[_0xe0b0('0x32')](_0x4fe835);}return _0x29d725[_0xe0b0('0x33')]();};}function saveUpdates(_0xfc51d3,_0x31c6f5){return function(_0x3575bc){if(_0x3575bc){return _0x3575bc[_0xe0b0('0x34')](_0xfc51d3)[_0xe0b0('0x20')](function(_0x20908f){return _0x20908f;});}return null;};}function removeEntity(_0x2125d5,_0x1dd010){return function(_0xd56467){if(_0xd56467){return _0xd56467[_0xe0b0('0x35')]()[_0xe0b0('0x20')](function(){_0x2125d5[_0xe0b0('0x29')](0xcc)[_0xe0b0('0x2a')]();});}};}function handleEntityNotFound(_0x4cf80c,_0x121608){return function(_0x135be5){if(!_0x135be5){_0x4cf80c[_0xe0b0('0x28')](0x194);}return _0x135be5;};}function handleError(_0x1eb3f9,_0x1a2d24){_0x1a2d24=_0x1a2d24||0x1f4;return function(_0x2c6e60){logger[_0xe0b0('0x22')](_0x2c6e60['stack']);if(_0x2c6e60['name']){delete _0x2c6e60['name'];}_0x1eb3f9['status'](_0x1a2d24)[_0xe0b0('0x36')](_0x2c6e60);};}function getMustacheRender(_0xc3d967,_0xe6f635){return Mustache['render'](_0xc3d967,_[_0xe0b0('0x37')](_0xe6f635[_0xe0b0('0x38')],{'contact':_0xe6f635[_0xe0b0('0x39')],'message':_0xe6f635[_0xe0b0('0x25')],'agent':_0xe6f635['agent'],'interaction':_0xe6f635[_0xe0b0('0x3a')],'account':_0xe6f635[_0xe0b0('0x3b')]}))||'';}function getInteractionUsers(_0x43d352,_0x30dcbb){return new BPromise(function(_0x4265e3,_0x1205db){try{if(_0x30dcbb[_0x43d352['id']]){_0x43d352[_0xe0b0('0x3c')]=_[_0xe0b0('0x3d')](_0x30dcbb[_0x43d352['id']],function(_0xeaffbb){return{'id':_0xeaffbb['id'],'fullname':_0xeaffbb['fullname']};});}}catch(_0x3e349b){_0x1205db(_0x3e349b);}_0x4265e3(_0x43d352);});}function getInteractionTags(_0x54f646,_0x34178d){return new BPromise(function(_0x2d5f47,_0x46c4ea){try{if(_0x54f646[_0xe0b0('0x3e')]){_0x54f646['Tags']=[];_0x54f646[_0xe0b0('0x3e')][_0xe0b0('0x3f')](',')[_0xe0b0('0x40')](function(_0x402a0e){_0x54f646[_0xe0b0('0x41')][_0xe0b0('0x42')](_0x34178d[_0x402a0e]);});}delete _0x54f646[_0xe0b0('0x3e')];}catch(_0x3bde8b){_0x46c4ea(_0x3bde8b);}_0x2d5f47(_0x54f646);});}function updateChatInteraction(_0x52ffe4,_0x2aad80,_0x309bbf){return new BPromise(function(_0x528818,_0x515bd2){return getInteractionUsers(_0x52ffe4,_0x309bbf)[_0xe0b0('0x20')](function(_0x247f8d){return getInteractionTags(_0x247f8d,_0x2aad80);})['then'](function(_0x18a59d){_0x528818(_0x18a59d);})[_0xe0b0('0x27')](function(_0x6bca5c){_0x515bd2(_0x6bca5c);});});}exports[_0xe0b0('0x43')]=function(_0x1a8cc7,_0x5c31b5){var _0x5d2fa2={},_0x51c580={},_0xc3235b={'count':0x0,'rows':[]};var _0x38e715=_['map'](db[_0xe0b0('0x44')][_0xe0b0('0x45')],function(_0x14197b){return{'name':_0x14197b[_0xe0b0('0x46')],'type':_0x14197b[_0xe0b0('0x47')]['key']};});_0x51c580['model']=_[_0xe0b0('0x3d')](_0x38e715,_0xe0b0('0x48'));_0x51c580[_0xe0b0('0x49')]=_[_0xe0b0('0x4a')](_0x1a8cc7[_0xe0b0('0x49')]);_0x51c580['filters']=_[_0xe0b0('0x4b')](_0x51c580[_0xe0b0('0x4c')],_0x51c580['query']);_0x5d2fa2['attributes']=_['intersection'](_0x51c580[_0xe0b0('0x4c')],qs[_0xe0b0('0x4d')](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x4d')]));_0x5d2fa2['attributes']=_0x5d2fa2[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x5d2fa2['attributes']:_0x51c580['model'];if(!_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x50')]('nolimit')){_0x5d2fa2[_0xe0b0('0x2e')]=qs[_0xe0b0('0x2e')](_0x1a8cc7['query']['limit']);_0x5d2fa2[_0xe0b0('0x2c')]=qs['offset'](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x2c')]);}_0x5d2fa2[_0xe0b0('0x51')]=qs[_0xe0b0('0x52')](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x52')]);_0x5d2fa2['where']=qs['filters'](_[_0xe0b0('0x53')](_0x1a8cc7['query'],_0x51c580['filters']),_0x38e715);var _0x249d9a=[];var _0x222174=squel['select']()['field']('id')[_0xe0b0('0x54')](_0xe0b0('0x48'))[_0xe0b0('0x54')](_0xe0b0('0x55'))[_0xe0b0('0x56')](_0xe0b0('0x57'));var _0x84fabb=squel['select']()[_0xe0b0('0x54')]('u.id')[_0xe0b0('0x54')]('u.fullname')['field'](_0xe0b0('0x58'))[_0xe0b0('0x56')](_0xe0b0('0x59'),'ui')[_0xe0b0('0x5a')](_0xe0b0('0x5b'),'u',_0xe0b0('0x5c'));var _0x4548da=squel[_0xe0b0('0x5d')]()[_0xe0b0('0x56')]('chat_interactions','i')[_0xe0b0('0x5a')]('cm_contacts','c',_0xe0b0('0x5e'))[_0xe0b0('0x5a')](_0xe0b0('0x5b'),'o',_0xe0b0('0x5f'))[_0xe0b0('0x5a')](_0xe0b0('0x60'),'a','a.id\x20=\x20i.ChatWebsiteId')[_0xe0b0('0x5a')](_0xe0b0('0x61'),'me',_0xe0b0('0x62'))[_0xe0b0('0x5a')](_0xe0b0('0x63'),'it',_0xe0b0('0x64'))[_0xe0b0('0x5a')](_0xe0b0('0x57'),'t',_0xe0b0('0x65'));var _0xf331df=squel[_0xe0b0('0x66')]();var _0x18ab99=[];var _0xc719d2=squel[_0xe0b0('0x66')]();var _0xcdf97;if(_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x67')]){_0xcdf97=as[_0xe0b0('0x68')](_0x1a8cc7['query'][_0xe0b0('0x67')]);var _0xe7fbac=_0xcdf97[_0xe0b0('0x69')];for(var _0x2f24e6=0x0;_0x2f24e6<_0xcdf97[_0xe0b0('0x6a')][_0xe0b0('0x4f')];_0x2f24e6++){var _0x2bdb59=_0xcdf97['conditions'][_0x2f24e6];var _0x47dcc4='i';var _0x139014=_[_0xe0b0('0x6b')](_0x38e715,[_0xe0b0('0x48'),_0x2bdb59['field']]);if(!_0x139014){switch(_0x2bdb59[_0xe0b0('0x54')]){case _0xe0b0('0x6c'):if(_0x2bdb59[_0xe0b0('0x6d')]==0x1){_0x4548da[_0xe0b0('0x6e')]('`'+_0x2bdb59[_0xe0b0('0x54')]+'`\x20=\x200');}else{_0x4548da[_0xe0b0('0x6e')]('`'+_0x2bdb59[_0xe0b0('0x54')]+_0xe0b0('0x6f'));}break;case'Contact':if(_0x2bdb59[_0xe0b0('0x70')]===_0xe0b0('0x71')){if(_0x2bdb59['value'][_0xe0b0('0x3f')]('\x20')['length']>0x1){_0xf331df[_0xe7fbac]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xe0b0('0x72')](_0x2bdb59['value']),null);}else{var _0x4d75e4='%'+_0x2bdb59[_0xe0b0('0x6d')]+'%';_0xf331df[_0xe7fbac](_0xe0b0('0x73'),_0x4d75e4,_0x4d75e4,_0x4d75e4);}}else{_0x139014=_[_0xe0b0('0x6b')](_0x38e715,[_0xe0b0('0x48'),'ContactId']);_0x2bdb59[_0xe0b0('0x54')]=_0xe0b0('0x74');_0x14da9c=as[_0xe0b0('0x75')](_0x47dcc4,_0x139014[_0xe0b0('0x47')],_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c[_0xe0b0('0x76')],_0x14da9c[_0xe0b0('0x6d')][_0xe0b0('0x77')],_0x14da9c[_0xe0b0('0x6d')]['end']);}break;case'Tag':var _0x4b41a=_0x2bdb59[_0xe0b0('0x6d')][_0xe0b0('0x3f')](',')['map'](function(_0x49b754){return Number(_0x49b754);});_0x4b41a[_0xe0b0('0x40')](function(_0x26f36f){_0xc719d2['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x26f36f+',%');});_0x18ab99=_['union'](_0x18ab99,_0x4b41a);break;case _0xe0b0('0x78'):if(_0x2bdb59[_0xe0b0('0x70')]===_0xe0b0('0x71')){_0xf331df[_0xe7fbac](_0xe0b0('0x79'),'%'+_0x2bdb59[_0xe0b0('0x6d')]+'%',null);}else{_0x139014=_[_0xe0b0('0x6b')](_0x38e715,[_0xe0b0('0x48'),_0xe0b0('0x7a')]);_0x2bdb59['field']=_0xe0b0('0x7a');_0x14da9c=as[_0xe0b0('0x75')](_0x47dcc4,_0x139014[_0xe0b0('0x47')],_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c['text'],_0x14da9c['value']['start'],_0x14da9c['value']['end']);}break;case'body':_0x14da9c=as[_0xe0b0('0x75')]('me',null,_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c['text'],_0x14da9c['value'][_0xe0b0('0x77')],_0x14da9c[_0xe0b0('0x6d')][_0xe0b0('0x2a')]);break;}}else{var _0x14da9c=as[_0xe0b0('0x75')](_0x47dcc4,_0x139014[_0xe0b0('0x47')],_0x2bdb59);_0xf331df[_0xe7fbac](_0x14da9c[_0xe0b0('0x76')],_0x14da9c[_0xe0b0('0x6d')]['start'],_0x14da9c[_0xe0b0('0x6d')][_0xe0b0('0x2a')]);}}}else{var _0x86e90=_(_0x1a8cc7[_0xe0b0('0x49')])[_0xe0b0('0x4a')]()[_0xe0b0('0x3d')](function(_0x16a2ae){return _['some'](_0x38e715,[_0xe0b0('0x48'),_0x16a2ae])?_0x16a2ae:undefined;})['compact']()[_0xe0b0('0x6d')]();if(!_[_0xe0b0('0x7b')](_0x86e90)){_0x86e90[_0xe0b0('0x40')](function(_0x9c7221){if(_0x9c7221==='ChatWebsiteId'){_0x4548da[_0xe0b0('0x7c')](_0xe0b0('0x7d'),[]['concat'](_0x1a8cc7['query'][_0x9c7221]));}else if(_0x9c7221===_0xe0b0('0x7e')){var _0x30adc5=JSON[_0xe0b0('0x7f')](_0x1a8cc7[_0xe0b0('0x49')][_0x9c7221])[_0xe0b0('0x80')];var _0x31dd21=JSON[_0xe0b0('0x7f')](_0x1a8cc7[_0xe0b0('0x49')][_0x9c7221])[_0xe0b0('0x81')];_0x4548da[_0xe0b0('0x7c')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x30adc5,_0x31dd21);}else{if(_0x1a8cc7['query'][_0x9c7221]===_0xe0b0('0x82')){_0x4548da['where']('i.'+_0x9c7221+'\x20IS\x20NULL');}else{_0x4548da['where']('i.'+_0x9c7221+'\x20=\x20?',_0x1a8cc7[_0xe0b0('0x49')][_0x9c7221]);}}});}if(_0x1a8cc7['query'][_0xe0b0('0x83')]){if(_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x83')]==0x1){_0x4548da[_0xe0b0('0x6e')]('`unreadMessages`\x20=\x200');}else{_0x4548da[_0xe0b0('0x6e')](_0xe0b0('0x84'));}}if(_0x1a8cc7['query'][_0xe0b0('0x85')]){_0x18ab99=_[_0xe0b0('0x86')](_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x85')])?_0x1a8cc7[_0xe0b0('0x49')]['tag']:new Array(_0x1a8cc7['query']['tag']);_0x18ab99['forEach'](function(_0x5c258b){_0xc719d2['or'](_0xe0b0('0x87'),'%,'+_0x5c258b+',%');});}if(_0x1a8cc7['query'][_0xe0b0('0x88')]){var _0x5f4aaf=_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x88')][_0xe0b0('0x89')]('\x5c','\x5c\x5c')[_0xe0b0('0x89')](/'/g,'\x27\x27');if(qs[_0xe0b0('0x8a')](_0x5f4aaf)){_0xf331df['or'](_0xe0b0('0x8b'),_0x5f4aaf+'%');}else{_0xf331df['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x5f4aaf))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5f4aaf+'%');}}}_0x4548da['where'](_0xf331df);_0x4548da[_0xe0b0('0x8c')](_0xe0b0('0x8d'));var _0x264363={'type':db[_0xe0b0('0x8e')][_0xe0b0('0x8f')]['SELECT'],'raw':!![]};var _0x234716=_0x4548da[_0xe0b0('0x90')]();_0x234716[_0xe0b0('0x54')](_0xe0b0('0x8d'));_0x234716[_0xe0b0('0x54')](_0xe0b0('0x91'),_0xe0b0('0x6c'));if(_0x5d2fa2[_0xe0b0('0x51')]){_0x5d2fa2[_0xe0b0('0x51')]['forEach'](function(_0x589c47){var _0x6e0e9=_0x589c47[0x0]===_0xe0b0('0x92')?_0x589c47[0x0]:'i.'+_0x589c47[0x0];_0x4548da['order'](_0x6e0e9,_0x589c47[0x1]===_0xe0b0('0x93')?![]:!![]);});}if(!_[_0xe0b0('0x7b')](_0x18ab99)){_0x4548da[_0xe0b0('0x6e')](_0xc719d2);_0x234716[_0xe0b0('0x7c')](_0xe0b0('0x94'),_0x18ab99);}BPromise[_0xe0b0('0x95')]()[_0xe0b0('0x20')](function(){if(!_0xcdf97){if(_0x1a8cc7[_0xe0b0('0x49')]['ChatWebsiteId'])return;_0x234716['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x4548da[_0xe0b0('0x7c')](_0xe0b0('0x96'));return;}if(_0x1a8cc7['user'][_0xe0b0('0x97')]!==_0xe0b0('0x98'))return;return _0x1a8cc7[_0xe0b0('0x99')][_0xe0b0('0x9a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x56c4b9){if(_['isEmpty'](_0x56c4b9)){_0x234716[_0xe0b0('0x7c')](_0xe0b0('0x9b'));_0x4548da['where'](_0xe0b0('0x9b'));}else{_0x234716[_0xe0b0('0x7c')]('i.ChatWebsiteId\x20IN\x20?',_['map'](_0x56c4b9,'id'));_0x4548da[_0xe0b0('0x7c')]('i.ChatWebsiteId\x20IN\x20?',_[_0xe0b0('0x3d')](_0x56c4b9,'id'));}});})['then'](function(){if(_0x1a8cc7[_0xe0b0('0x99')][_0xe0b0('0x97')]===_0xe0b0('0x98')&&!_0xcdf97&&!_0x1a8cc7[_0xe0b0('0x49')][_0xe0b0('0x9c')])return[];return db[_0xe0b0('0x9d')][_0xe0b0('0x49')](_0x234716[_0xe0b0('0x9e')](),_0x264363);})[_0xe0b0('0x20')](function(_0x48497e){_0xc3235b[_0xe0b0('0x2f')]=_0x48497e[_0xe0b0('0x4f')];if(_0xc3235b[_0xe0b0('0x2f')]===0x0)return[];return db['sequelize'][_0xe0b0('0x49')](_0x222174['toString'](),_0x264363)[_0xe0b0('0x20')](function(_0x350c40){_0x249d9a=_['keyBy'](_0x350c40,'id');_0x264363=_[_0xe0b0('0x37')](_0x264363,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1a8cc7['query'][_0xe0b0('0x4d')]){_0x5d2fa2['attributes']['forEach'](function(_0x4f027c){_0x4548da[_0xe0b0('0x54')]('i.'+_0x4f027c);});}else{_0x4548da[_0xe0b0('0x54')](_0xe0b0('0x91'),_0xe0b0('0x6c'));_0x4548da[_0xe0b0('0x54')]('a.key',_0xe0b0('0x9f'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa0'),'Account.mandatoryDisposition');_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa1'),'contactName');_0x4548da['field'](_0xe0b0('0xa2'));_0x4548da['field'](_0xe0b0('0xa3'),_0xe0b0('0xa4'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa5'),_0xe0b0('0xa6'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa7'),'Contact.email');_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xa8'),_0xe0b0('0xa9'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xaa'),'Contact.mobile');_0x4548da['field'](_0xe0b0('0xab'),_0xe0b0('0xac'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xad'),_0xe0b0('0xae'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xaf'),_0xe0b0('0xb0'));_0x4548da[_0xe0b0('0x54')](_0xe0b0('0xb1'),'TagIds');}if(_0x5d2fa2[_0xe0b0('0x2e')])_0x4548da[_0xe0b0('0x2e')](_0x5d2fa2[_0xe0b0('0x2e')]);if(_0x5d2fa2[_0xe0b0('0x2c')])_0x4548da['offset'](_0x5d2fa2[_0xe0b0('0x2c')]);return db[_0xe0b0('0x9d')][_0xe0b0('0x49')](_0x4548da[_0xe0b0('0x9e')](),_0x264363);})[_0xe0b0('0x20')](function(_0x484cb2){if(_0x484cb2[_0xe0b0('0x4f')]>0x0)_0x84fabb['where'](_0xe0b0('0xb2'),_[_0xe0b0('0x3d')](_0x484cb2,'id'));return db[_0xe0b0('0x9d')][_0xe0b0('0x49')](_0x84fabb[_0xe0b0('0x9e')](),_0x264363)['then'](function(_0x567e42){var _0x3822e4=_['groupBy'](_0x567e42,_0xe0b0('0xb3'));var _0x4c82d6=[];_0x484cb2[_0xe0b0('0x40')](function(_0x474fbb){_0x4c82d6[_0xe0b0('0x42')](updateChatInteraction(_0x474fbb,_0x249d9a,_0x3822e4));});return BPromise[_0xe0b0('0xb4')](_0x4c82d6);});});})[_0xe0b0('0x20')](function(_0x1bb4da){_0xc3235b[_0xe0b0('0xb5')]=_0x1bb4da;return _0xc3235b;})['then'](respondWithFilteredResult(_0x5c31b5,_0x5d2fa2))['catch'](handleError(_0x5c31b5,null));};exports[_0xe0b0('0xb6')]=function(_0x717e74,_0x184938){var _0x20d6bd={'raw':![],'where':{'id':_0x717e74[_0xe0b0('0xb7')]['id']}},_0xd83992={};_0xd83992[_0xe0b0('0x4c')]=_[_0xe0b0('0x4a')](db[_0xe0b0('0x44')][_0xe0b0('0x45')]);_0xd83992['query']=_['keys'](_0x717e74[_0xe0b0('0x49')]);_0xd83992[_0xe0b0('0xb8')]=_[_0xe0b0('0x4b')](_0xd83992[_0xe0b0('0x4c')],_0xd83992[_0xe0b0('0x49')]);_0x20d6bd[_0xe0b0('0x4e')]=_[_0xe0b0('0x4b')](_0xd83992['model'],qs['fields'](_0x717e74[_0xe0b0('0x49')][_0xe0b0('0x4d')]));_0x20d6bd[_0xe0b0('0x4e')]=_0x20d6bd[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x20d6bd[_0xe0b0('0x4e')]:_0xd83992[_0xe0b0('0x4c')];if(_0x717e74[_0xe0b0('0x49')][_0xe0b0('0xb9')]){_0x20d6bd[_0xe0b0('0xba')]=[{'all':!![]}];}_0x20d6bd=_['merge']({},_0x20d6bd,_0x717e74[_0xe0b0('0xbb')]);return db[_0xe0b0('0x44')]['find'](_0x20d6bd)[_0xe0b0('0x20')](handleEntityNotFound(_0x184938,null))[_0xe0b0('0x20')](respondWithResult(_0x184938,null))[_0xe0b0('0x27')](handleError(_0x184938,null));};exports[_0xe0b0('0xbc')]=function(_0x41fdef,_0x594f91){return db[_0xe0b0('0x44')][_0xe0b0('0xbc')](_0x41fdef[_0xe0b0('0x38')],{})[_0xe0b0('0x20')](respondWithResult(_0x594f91,0xc9))[_0xe0b0('0x27')](handleError(_0x594f91,null));};exports['update']=function(_0x475404,_0x58d61b){if(_0x475404[_0xe0b0('0x38')]['id']){delete _0x475404[_0xe0b0('0x38')]['id'];}return db[_0xe0b0('0x44')]['find']({'where':{'id':_0x475404['params']['id']}})[_0xe0b0('0x20')](handleEntityNotFound(_0x58d61b,null))[_0xe0b0('0x20')](saveUpdates(_0x475404[_0xe0b0('0x38')],null))['then'](respondWithResult(_0x58d61b,null))['catch'](handleError(_0x58d61b,null));};exports['destroy']=function(_0x5175e1,_0x57694c){return db['ChatInteraction'][_0xe0b0('0x6b')]({'where':{'id':_0x5175e1[_0xe0b0('0xb7')]['id']}})['then'](handleEntityNotFound(_0x57694c,null))[_0xe0b0('0x20')](removeEntity(_0x57694c,null))[_0xe0b0('0x27')](handleError(_0x57694c,null));};exports[_0xe0b0('0xbd')]=function(_0xd73b8a,_0x437588){return db['ChatInteraction']['describe']()[_0xe0b0('0x20')](respondWithResult(_0x437588,null))[_0xe0b0('0x27')](handleError(_0x437588,null));};exports[_0xe0b0('0xbe')]=function(_0x52dfd8,_0x6ab413){var _0x395083=_0x52dfd8[_0xe0b0('0xb7')]['id'];var _0xd231c4;var _0x35ca4e;var _0x1b8d4a;return db['ChatInteraction']['findOne']({'where':{'id':_0x395083}})['then'](function(_0x1ce027){_0xd231c4=_0x1ce027;return db[_0xe0b0('0xbf')][_0xe0b0('0xc0')]({'where':{'id':_0x1ce027[_0xe0b0('0x9c')]},'attributes':['id',_0xe0b0('0xc1'),_0xe0b0('0xc2'),_0xe0b0('0xc3'),_0xe0b0('0xc4'),'vidaooMetadata'],'raw':!![]});})['then'](function(_0x28ba25){if(_0x28ba25&&_0x28ba25[_0xe0b0('0xc1')]&&_0x28ba25[_0xe0b0('0xc2')]){_0x35ca4e=_0x28ba25;var _0x5451e7={'interaction':{'id':_0x395083},'agent':{'id':_0x52dfd8[_0xe0b0('0x99')]['id'],'name':_0x52dfd8[_0xe0b0('0x99')][_0xe0b0('0x48')],'fullname':_0x52dfd8['user'][_0xe0b0('0xc5')],'email':_0x52dfd8['user'][_0xe0b0('0xc6')]},'contact':_0x52dfd8[_0xe0b0('0x38')][_0xe0b0('0x39')],'account':_0x52dfd8[_0xe0b0('0x38')][_0xe0b0('0x3b')]};var _0x26df60={'rejectUnauthorized':![],'method':_0xe0b0('0xc7'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x28ba25[_0xe0b0('0xc1')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x52dfd8[_0xe0b0('0x99')]['email']],'buttons':null,'topic':_0x35ca4e[_0xe0b0('0xc3')],'note':_[_0xe0b0('0xc8')](_0x35ca4e[_0xe0b0('0xc4')])?null:getMustacheRender(_0x35ca4e['vidaooNote'],_0x5451e7),'metadata':null},'redirect':_0xe0b0('0xc9'),'json':!![]};try{if(!_[_0xe0b0('0xc8')](_0x35ca4e[_0xe0b0('0xca')])){var _0x566a6e=getMustacheRender(_0x35ca4e[_0xe0b0('0xca')],_0x5451e7);var _0x32f67b=JSON[_0xe0b0('0x7f')](_0x566a6e);_0x26df60[_0xe0b0('0x38')][_0xe0b0('0xcb')]=_0x32f67b;}}catch(_0x15be52){throw new db['Sequelize'][(_0xe0b0('0xcc'))](_0xe0b0('0xcd'));}return rp(_0x26df60);}else{throw new db[(_0xe0b0('0x8e'))][(_0xe0b0('0xcc'))](_0xe0b0('0xce'));}})[_0xe0b0('0x20')](function(_0x38b2cf){_0x1b8d4a=_0x38b2cf;if(_0x1b8d4a['id']){var _0x31b01a={'body':_0x1b8d4a[_0xe0b0('0xcf')],'ChatWebsiteId':_0x35ca4e['id'],'ChatInteractionId':_0xd231c4['id'],'direction':_0xe0b0('0xd0'),'UserId':_0x52dfd8[_0xe0b0('0x99')]['id']};return db['ChatMessage'][_0xe0b0('0xbc')](_0x31b01a,{});}else{throw new db['Sequelize']['ValidationError'](_0xe0b0('0xd1'));}})[_0xe0b0('0x20')](function(){return _0xd231c4['updateAttributes']({'vidaooSessionId':_0x1b8d4a['id']});})[_0xe0b0('0x20')](respondWithResult(_0x6ab413,null))[_0xe0b0('0x27')](handleError(_0x6ab413,null));};exports[_0xe0b0('0xd2')]=function(_0x11e969,_0xa18619){if(_0x11e969[_0xe0b0('0x38')]['id']){delete _0x11e969[_0xe0b0('0x38')]['id'];}return db[_0xe0b0('0x44')][_0xe0b0('0x6b')]({'where':{'id':_0x11e969['params']['id']},'include':[{'model':db[_0xe0b0('0xd3')],'as':_0xe0b0('0xd4')}]})[_0xe0b0('0x20')](handleEntityNotFound(_0xa18619,null))[_0xe0b0('0x20')](saveUpdates(_0x11e969['body'],null))['then'](respondWithResult(_0xa18619,null))[_0xe0b0('0x27')](handleError(_0xa18619,null));};exports[_0xe0b0('0xd5')]=function(_0x333c2a,_0x2cd7db,_0x308d03){if(_0x333c2a[_0xe0b0('0x38')]['id']){delete _0x333c2a[_0xe0b0('0x38')]['id'];}return db[_0xe0b0('0x44')][_0xe0b0('0x6b')]({'where':{'id':_0x333c2a[_0xe0b0('0xb7')]['id']}})[_0xe0b0('0x20')](function(_0xaa7a71){if(!_0xaa7a71){logger[_0xe0b0('0x22')](_0xe0b0('0xd6'),_0xe0b0('0xd5'),0x194,_0xe0b0('0xd7'));_0x2cd7db[_0xe0b0('0x28')](0x194);}else{if(_0xaa7a71[_0xe0b0('0x7a')]){throw new db[(_0xe0b0('0x8e'))]['ValidationError'](_0xe0b0('0xd8'));}}return _0xaa7a71;})[_0xe0b0('0x20')](function(_0x36a006){if(_0x36a006){return _0x36a006['update']({'closed':_0x333c2a[_0xe0b0('0x38')][_0xe0b0('0xd9')],'disposition':_0x333c2a[_0xe0b0('0x38')][_0xe0b0('0xda')]})[_0xe0b0('0x20')](function(_0x3532f1){return _0x3532f1;});}})[_0xe0b0('0x20')](function(_0x581ae9){return respondWithRpcPromise(_0xe0b0('0xdb'),'abandon',_0x333c2a[_0xe0b0('0x38')],client9004);})['then'](respondWithResult(_0x2cd7db,null))[_0xe0b0('0x27')](handleError(_0x2cd7db,null));};exports[_0xe0b0('0xdc')]=function(_0x4bd799,_0x2102bc,_0x4f0cbe){_0x4bd799[_0xe0b0('0x38')][_0xe0b0('0x48')]=_0x4bd799[_0xe0b0('0xdd')][_0xe0b0('0xde')];_0x4bd799[_0xe0b0('0x38')][_0xe0b0('0xdf')]=_0x4bd799[_0xe0b0('0xdd')][_0xe0b0('0xe0')];_0x4bd799['body'][_0xe0b0('0x47')]=_0x4bd799['file']['mimetype'];return db[_0xe0b0('0xe1')][_0xe0b0('0xbc')](_0x4bd799[_0xe0b0('0x38')])['then'](respondWithResult(_0x2102bc,0xc9))['catch'](handleError(_0x2102bc,null));};exports[_0xe0b0('0xe2')]=function(_0x3c207e,_0x4fc379,_0x98e7c9){return db[_0xe0b0('0x44')][_0xe0b0('0xc0')]({'where':{'id':_0x3c207e[_0xe0b0('0xb7')]['id']},'raw':!![]})[_0xe0b0('0x20')](handleEntityNotFound(_0x4fc379,null))[_0xe0b0('0x20')](function(_0x4074bb){if(_0x4074bb){if(_0x4074bb[_0xe0b0('0xd9')]){return _0x4fc379[_0xe0b0('0x29')](0x193)['json']({'status':0x193,'message':'Unauthorized'});}return db[_0xe0b0('0xe1')][_0xe0b0('0xc0')]({'where':{'id':_0x3c207e[_0xe0b0('0x49')][_0xe0b0('0xe3')]},'raw':!![]})[_0xe0b0('0x20')](handleEntityNotFound(_0x4fc379,null));}})[_0xe0b0('0x20')](function(_0x54f90a){if(_0x54f90a){var _0x1aa40b=_0x54f90a[_0xe0b0('0xe4')]!==null;var _0x22c8a2=path[_0xe0b0('0xe5')](config[_0xe0b0('0xe6')],'server/files/attachments/');if(_0x1aa40b){_0x22c8a2=path[_0xe0b0('0xe5')](_0x22c8a2,_0xe0b0('0xe7'));}var _0x321b0b=path[_0xe0b0('0xe5')](_0x22c8a2,_0x54f90a[_0xe0b0('0xdf')]);return _0x4fc379[_0xe0b0('0xe8')](_0x321b0b);}})[_0xe0b0('0x27')](handleError(_0x4fc379,null));};exports[_0xe0b0('0xe9')]=function(_0x1ccfc1,_0x2b1474){var _0x574f0a=null;var _0x108371=null;var _0x3f2ec=null;var _0x4f0db7=null;if(_0x1ccfc1[_0xe0b0('0x38')]['id']){delete _0x1ccfc1['body']['id'];}if(_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xea')]){_0x4f0db7=path['join'](config[_0xe0b0('0xe6')],_0xe0b0('0xeb'),util[_0xe0b0('0xec')](_0xe0b0('0xed'),Date[_0xe0b0('0xee')]()));_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xef')]=_0x4f0db7;}return db['ChatInteraction']['find']({'where':{'id':_0x1ccfc1[_0xe0b0('0xb7')]['id']},'include':[{'model':db[_0xe0b0('0xf0')],'as':_0xe0b0('0xf1'),'include':[{'model':db['User'],'as':_0xe0b0('0x78')}]}]})[_0xe0b0('0x20')](handleEntityNotFound(_0x2b1474,null))[_0xe0b0('0x20')](saveUpdates(_0x1ccfc1[_0xe0b0('0x38')],null))[_0xe0b0('0x20')](function(_0x117d00){if(_0x117d00){_0x574f0a=_0x117d00;return db[_0xe0b0('0xbf')][_0xe0b0('0x6b')]({'where':{'id':_0x574f0a[_0xe0b0('0x9c')]}});}})[_0xe0b0('0x20')](function(_0x5aa313){if(_0x5aa313){_0x3f2ec=_0x5aa313;return db['CmContact'][_0xe0b0('0x6b')]({'where':{'id':_0x574f0a[_0xe0b0('0x74')]}});}})[_0xe0b0('0x20')](function(_0x3c93c6){if(_0x3c93c6){_0x108371=_0x3c93c6;if(_0x4f0db7){var _0x203351=null;for(var _0x343409=0x1;_0x343409<_0x574f0a[_0xe0b0('0xf1')]['length'];++_0x343409){_0x203351=_0x574f0a[_0xe0b0('0xf1')][_0x343409];var _0x2e7fe2=_0x203351[_0xe0b0('0x7a')]?util['format'](_0xe0b0('0xf2'),_0x3f2ec[_0xe0b0('0xf3')],_0x203351['UserId']):'System';var _0x3b3473=_0x1ccfc1['body'][_0xe0b0('0xf4')]||util['format'](_0xe0b0('0xf2'),_0xe0b0('0xf5'),_0x203351['ContactId']);switch(_0x3f2ec[_0xe0b0('0xf6')]){case _0xe0b0('0xf7'):_0x2e7fe2=_0x203351['UserId']?util[_0xe0b0('0xec')]('%s%d',_0x3f2ec[_0xe0b0('0xf3')],_0x203351[_0xe0b0('0x7a')]):_0xe0b0('0xf8');break;case _0xe0b0('0xf9'):_0x2e7fe2=_0x203351[_0xe0b0('0x7a')]?_0x203351[_0xe0b0('0x78')][_0xe0b0('0xfa')]||_0x203351['User'][_0xe0b0('0xc5')]:_0xe0b0('0xf8');break;case'agent_fullname':_0x2e7fe2=_0x203351['UserId']?_0x203351[_0xe0b0('0x78')]['fullname']:_0xe0b0('0xf8');break;default:_0x2e7fe2=_0x203351[_0xe0b0('0x7a')]?util[_0xe0b0('0xec')](_0xe0b0('0xf2'),_0x3f2ec[_0xe0b0('0xf3')],_0x203351[_0xe0b0('0x7a')]):_0xe0b0('0xf8');}var _0x8364b0=util[_0xe0b0('0xec')](_0xe0b0('0xfb'),moment(_0x203351[_0xe0b0('0x7e')])[_0xe0b0('0xec')](_0xe0b0('0xfc')),_0x203351[_0xe0b0('0xfd')]==='in'?_0x3b3473:_0x2e7fe2,_0x203351['body']);if(!_0x203351[_0xe0b0('0xfe')]){fs[_0xe0b0('0xff')](_0x4f0db7,_0x8364b0);}}return db[_0xe0b0('0x100')][_0xe0b0('0xc0')]({'where':{'service':!![]},'include':[{'model':db[_0xe0b0('0x101')],'as':'Smtp','raw':!![]}]});}}})[_0xe0b0('0x20')](function(_0x3a75d8){if(_0x3a75d8&&_0x3a75d8[_0xe0b0('0x102')]&&_0x1ccfc1[_0xe0b0('0x38')]){var _0x1e2ef8={'tls':{'rejectUnauthorized':![]}};if(_0x3a75d8[_0xe0b0('0x102')]['service']){_0x1e2ef8[_0xe0b0('0x103')]=_0x3a75d8['Smtp'][_0xe0b0('0x103')];}else{_0x1e2ef8[_0xe0b0('0x104')]=_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x104')];_0x1e2ef8[_0xe0b0('0x105')]=_0x3a75d8[_0xe0b0('0x102')]['port'];_0x1e2ef8[_0xe0b0('0x106')]=_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x106')];}if(_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x107')]){_0x1e2ef8[_0xe0b0('0x108')]={'user':_0x3a75d8[_0xe0b0('0x102')][_0xe0b0('0x99')],'pass':_0x3a75d8['Smtp']['pass']};}return respondWithRpcPromise(_0xe0b0('0x109'),'sendMail',{'account':_0x1e2ef8,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x3a75d8['name'],_0x3a75d8[_0xe0b0('0xc6')]||_0x3a75d8['Smtp']['user']),'to':_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xea')],'subject':_0xe0b0('0x10a'),'text':util[_0xe0b0('0xec')](_0xe0b0('0x10b'),_0x1ccfc1[_0xe0b0('0x38')][_0xe0b0('0xea')]),'attachments':[{'path':_0x4f0db7}]}})[_0xe0b0('0x20')](function(){return _0x574f0a;})[_0xe0b0('0x27')](function(_0x43f1b1){console['error'](_0x43f1b1);});}else{return _0x574f0a;}})['then'](respondWithStatusCode(_0x2b1474,0xc8))[_0xe0b0('0x27')](handleError(_0x2b1474,null));};exports[_0xe0b0('0x10c')]=function(_0x2b8a03,_0x4f784a,_0x4b5a48){return db[_0xe0b0('0xf0')]['find']({'where':{'id':_0x2b8a03[_0xe0b0('0xb7')]['id']}})[_0xe0b0('0x20')](handleEntityNotFound(_0x4f784a,null))['then'](function(_0x2e393e){if(_0x2e393e){return _0x2e393e[_0xe0b0('0x10c')](_0x2b8a03[_0xe0b0('0x38')][_0xe0b0('0x10d')],_[_0xe0b0('0x10e')](_0x2b8a03[_0xe0b0('0x38')],[_0xe0b0('0x10d'),'id'])||{});}})['then'](respondWithResult(_0x4f784a,null))[_0xe0b0('0x27')](handleError(_0x4f784a,null));};exports[_0xe0b0('0x10f')]=function(_0x1f3162,_0x22da3a,_0x2b2c68){var _0x5c5c2d={'raw':![],'where':{}};var _0x4d6429={};var _0x322d1b={'count':0x0,'rows':[]};return db['ChatInteraction']['findOne']({'where':{'id':_0x1f3162[_0xe0b0('0xb7')]['id']}})['then'](handleEntityNotFound(_0x22da3a,null))[_0xe0b0('0x20')](function(_0x151da2){if(_0x151da2){_0x4d6429[_0xe0b0('0x4c')]=_[_0xe0b0('0x4a')](db['ChatMessage']['rawAttributes']);_0x4d6429[_0xe0b0('0x49')]=_[_0xe0b0('0x4a')](_0x1f3162[_0xe0b0('0x49')]);_0x4d6429[_0xe0b0('0xb8')]=_[_0xe0b0('0x4b')](_0x4d6429[_0xe0b0('0x4c')],_0x4d6429[_0xe0b0('0x49')]);_0x5c5c2d[_0xe0b0('0x4e')]=_['intersection'](_0x4d6429[_0xe0b0('0x4c')],qs[_0xe0b0('0x4d')](_0x1f3162[_0xe0b0('0x49')]['fields']));_0x5c5c2d[_0xe0b0('0x4e')]=_0x5c5c2d[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x5c5c2d[_0xe0b0('0x4e')]:_0x4d6429[_0xe0b0('0x4c')];if(!_0x1f3162[_0xe0b0('0x49')]['hasOwnProperty'](_0xe0b0('0x110'))){_0x5c5c2d[_0xe0b0('0x2e')]=qs[_0xe0b0('0x2e')](_0x1f3162['query'][_0xe0b0('0x2e')]);_0x5c5c2d[_0xe0b0('0x2c')]=qs[_0xe0b0('0x2c')](_0x1f3162[_0xe0b0('0x49')]['offset']);}_0x5c5c2d[_0xe0b0('0x51')]=qs[_0xe0b0('0x52')](_0x1f3162[_0xe0b0('0x49')][_0xe0b0('0x52')]);_0x5c5c2d[_0xe0b0('0x7c')]=qs[_0xe0b0('0xb8')](_[_0xe0b0('0x53')](_0x1f3162[_0xe0b0('0x49')],_0x4d6429['filters']));_0x5c5c2d[_0xe0b0('0x7c')]['ChatInteractionId']=_0x151da2['id'];if(_0x1f3162['query'][_0xe0b0('0x88')]){_0x5c5c2d[_0xe0b0('0x7c')]=_[_0xe0b0('0x37')](_0x5c5c2d['where'],{'$or':_[_0xe0b0('0x3d')](_0x5c5c2d['attributes'],function(_0xf0c217){var _0x4c5406={};_0x4c5406[_0xf0c217]={'$like':'%'+_0x1f3162['query']['filter']+'%'};return _0x4c5406;})});}if(_0x1f3162[_0xe0b0('0x49')][_0xe0b0('0x80')]){var _0x55e013=_0x1f3162[_0xe0b0('0x49')]['$gte']['split'](',');var _0x31fa9d={};_0x31fa9d[_0x55e013[0x0]]={'$gte':moment(_0x55e013[0x1])['format'](_0xe0b0('0x111'))};_0x5c5c2d[_0xe0b0('0x7c')]=_[_0xe0b0('0x37')](_0x5c5c2d[_0xe0b0('0x7c')],_0x31fa9d);}_0x5c5c2d=_['merge']({},_0x5c5c2d,_0x1f3162[_0xe0b0('0xbb')]);return db[_0xe0b0('0xf0')][_0xe0b0('0x2f')]({'where':_0x5c5c2d[_0xe0b0('0x7c')]})[_0xe0b0('0x20')](function(_0x51600e){_0x322d1b[_0xe0b0('0x2f')]=_0x51600e;if(_0x1f3162[_0xe0b0('0x49')]['includeAll']){_0x5c5c2d[_0xe0b0('0xba')]=[{'all':!![]}];}return db['ChatMessage'][_0xe0b0('0x112')](_0x5c5c2d);})[_0xe0b0('0x20')](function(_0x1e0374){_0x322d1b[_0xe0b0('0xb5')]=_0x1e0374;return _0x322d1b;});}})[_0xe0b0('0x20')](respondWithFilteredResult(_0x22da3a,_0x5c5c2d))[_0xe0b0('0x27')](handleError(_0x22da3a,null));};exports[_0xe0b0('0x113')]=function(_0x5b7b02,_0x565f67,_0x2853bf){var _0x4c0d9d={'where':{}},_0x38dd79={},_0x2dc446={'count':0x0,'rows':[]};return db[_0xe0b0('0x44')][_0xe0b0('0xc0')]({'where':{'id':_0x5b7b02[_0xe0b0('0xb7')]['id']}})[_0xe0b0('0x20')](handleEntityNotFound(_0x565f67,null))['then'](function(_0x5996a6){if(_0x5996a6){_0x38dd79[_0xe0b0('0x4c')]=_[_0xe0b0('0x4a')](db['ChatMessage'][_0xe0b0('0x45')]);_0x38dd79[_0xe0b0('0x49')]=_['keys'](_0x5b7b02[_0xe0b0('0x49')]);_0x38dd79[_0xe0b0('0xb8')]=_[_0xe0b0('0x4b')](_0x38dd79['model'],_0x38dd79[_0xe0b0('0x49')]);_0x4c0d9d[_0xe0b0('0x4e')]=_[_0xe0b0('0x4b')](_0x38dd79[_0xe0b0('0x4c')],qs['fields'](_0x5b7b02[_0xe0b0('0x49')]['fields']));_0x4c0d9d[_0xe0b0('0x4e')]=_0x4c0d9d[_0xe0b0('0x4e')][_0xe0b0('0x4f')]?_0x4c0d9d['attributes']:_0x38dd79[_0xe0b0('0x4c')];if(!_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0x50')](_0xe0b0('0x110'))){_0x4c0d9d['limit']=qs[_0xe0b0('0x2e')](_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0x2e')]);_0x4c0d9d[_0xe0b0('0x2c')]=qs[_0xe0b0('0x2c')](_0x5b7b02[_0xe0b0('0x49')]['offset']);}_0x4c0d9d['order']=qs['sort'](_0x5b7b02[_0xe0b0('0x49')]['sort']);_0x4c0d9d[_0xe0b0('0x7c')]=qs['filters'](_['pick'](_0x5b7b02[_0xe0b0('0x49')],_0x38dd79[_0xe0b0('0xb8')]));_0x4c0d9d[_0xe0b0('0x7c')][_0xe0b0('0xb3')]=_0x5996a6['id'];if(_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0x88')]){_0x4c0d9d[_0xe0b0('0x7c')]=_['merge'](_0x4c0d9d[_0xe0b0('0x7c')],{'$or':_[_0xe0b0('0x3d')](_0x4c0d9d[_0xe0b0('0x4e')],function(_0x15033e){var _0x14ba21={};_0x14ba21[_0x15033e]={'$like':'%'+_0x5b7b02[_0xe0b0('0x49')]['filter']+'%'};return _0x14ba21;})});}_0x4c0d9d['where'][_0xe0b0('0xfe')]=![];if(_0x5b7b02[_0xe0b0('0x49')]['id']){_0x4c0d9d[_0xe0b0('0x7c')]['id']={'$gt':_0x5b7b02[_0xe0b0('0x49')]['id']};}_0x4c0d9d=_[_0xe0b0('0x37')]({},_0x4c0d9d,_0x5b7b02[_0xe0b0('0xbb')]);return db[_0xe0b0('0xf0')]['count']({'where':_0x4c0d9d['where']})[_0xe0b0('0x20')](function(_0x16386b){_0x2dc446[_0xe0b0('0x2f')]=_0x16386b;_0x4c0d9d['include']=[];if(_0x5b7b02['query'][_0xe0b0('0x114')]){_0x4c0d9d[_0xe0b0('0xba')][_0xe0b0('0x42')]({'model':db[_0xe0b0('0x78')],'as':_0xe0b0('0x78'),'attributes':['id',_0xe0b0('0xc5'),_0xe0b0('0xfa')]});}if(_0x5b7b02[_0xe0b0('0x49')][_0xe0b0('0xb9')]){_0x4c0d9d[_0xe0b0('0xba')]=[{'all':!![]}];}return db['ChatMessage'][_0xe0b0('0x112')](_0x4c0d9d);})['then'](function(_0x2df3df){_0x2dc446['rows']=_0x2df3df;return _0x2dc446;});}})[_0xe0b0('0x20')](respondWithFilteredResult(_0x565f67,_0x4c0d9d))[_0xe0b0('0x27')](handleError(_0x565f67,null));};exports['addTags']=function(_0x236966,_0x41fd0e,_0x17e7d4){return db['ChatInteraction'][_0xe0b0('0x6b')]({'where':{'id':_0x236966[_0xe0b0('0xb7')]['id']}})['then'](handleEntityNotFound(_0x41fd0e,null))[_0xe0b0('0x20')](function(_0x19dafb){if(_0x19dafb){return _0x19dafb['setTags'](_0x236966['body'][_0xe0b0('0x10d')],_[_0xe0b0('0x10e')](_0x236966['body'],['ids','id'])||{})[_0xe0b0('0x115')](function(){return db['Tag'][_0xe0b0('0x112')]({'attributes':['id',_0xe0b0('0x48'),_0xe0b0('0x55')],'where':{'id':_0x236966[_0xe0b0('0x38')][_0xe0b0('0x10d')]}});})[_0xe0b0('0x20')](function(_0x36106e){socket['emit'](_0xe0b0('0x116'),{'id':Number(_0x236966['params']['id']),'tags':_0x36106e||[]});return{'id':Number(_0x236966['params']['id']),'tags':_0x36106e||[]};});}})['then'](respondWithResult(_0x41fd0e,null))[_0xe0b0('0x27')](handleError(_0x41fd0e,null));};exports[_0xe0b0('0x117')]=function(_0x263288,_0x7117ca,_0x21ccfe){return db['ChatInteraction']['find']({'where':{'id':_0x263288['params']['id']}})['then'](handleEntityNotFound(_0x7117ca,null))[_0xe0b0('0x20')](function(_0x1bd420){if(_0x1bd420){return _0x1bd420[_0xe0b0('0x117')](_0x263288['query'][_0xe0b0('0x10d')]);}})[_0xe0b0('0x20')](respondWithStatusCode(_0x7117ca,null))[_0xe0b0('0x27')](handleError(_0x7117ca,null));};exports[_0xe0b0('0xe8')]=function(_0x2d2852,_0x16a02b){var _0x125ead=moment()['unix']()[_0xe0b0('0x9e')]();var _0x380fe1=path[_0xe0b0('0xe5')](config[_0xe0b0('0xe6')],'server',_0xe0b0('0x118'),_0xe0b0('0x119'));var _0x3eb643=path[_0xe0b0('0xe5')](config['root'],'server',_0xe0b0('0x118'),_0xe0b0('0x11a'));var _0x26bd6c=path[_0xe0b0('0xe5')](_0x380fe1,_0x125ead);var _0x104409=util[_0xe0b0('0xec')]('transcript-%d-%s.zip',_0x2d2852[_0xe0b0('0xb7')]['id'],_0x125ead);var _0x6f9dbd=path[_0xe0b0('0xe5')](_0x380fe1,_0x104409);var _0x4c6646=[];_0x4c6646[_0xe0b0('0x42')]({'model':db['User'],'as':_0xe0b0('0x78'),'attributes':['id',_0xe0b0('0xc5')],'raw':!![]});_0x4c6646['push']({'model':db[_0xe0b0('0xd3')],'as':'Contact','attributes':['id','firstName',_0xe0b0('0x11b')],'raw':!![]});if(_0x2d2852['query']['attachments']){_0x4c6646['push']({'model':db[_0xe0b0('0xe1')],'as':_0xe0b0('0xe1'),'raw':!![]});}var _0x573ca9=[{'model':db[_0xe0b0('0xf0')],'as':'Messages','attributes':['id',_0xe0b0('0x38'),_0xe0b0('0x7e'),_0xe0b0('0xfd'),_0xe0b0('0xfe'),'read'],'include':_0x4c6646}];_0x573ca9['push']({'model':db['ChatWebsite'],'as':_0xe0b0('0x11c'),'attributes':['id',_0xe0b0('0x48')]});_0x573ca9['push']({'model':db['User'],'as':_0xe0b0('0x11d'),'attributes':['id',_0xe0b0('0xc5')]});return db[_0xe0b0('0x44')][_0xe0b0('0x6b')]({'where':{'id':_0x2d2852['params']['id']},'include':_0x573ca9})['then'](handleEntityNotFound(_0x16a02b,null))[_0xe0b0('0x20')](function(_0x329684){if(_0x329684){var _0x5b1bb7=_0x329684[_0xe0b0('0x11e')]({'plain':!![]});fs[_0xe0b0('0x11f')](_0x26bd6c);var _0x5b7df1={'channel':'Chat','account':_0x5b1bb7['Account'][_0xe0b0('0x48')],'agent':_0x5b1bb7[_0xe0b0('0x11d')]?_0x5b1bb7['Owner'][_0xe0b0('0xc5')]:_0xe0b0('0x120'),'createdAt':moment(_0x5b1bb7[_0xe0b0('0x7e')])[_0xe0b0('0xec')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe0b0('0x9e')](),'closedAt':_0x5b1bb7[_0xe0b0('0xd9')]?moment(_0x5b1bb7['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xe0b0('0x9e')]():'','disposition':_0x5b1bb7['disposition'],'chatInfo':{'browser':_0x5b1bb7[_0xe0b0('0x121')],'os':_0x5b1bb7['osName'],'referer':_0x5b1bb7['referer'],'customerIp':_0x5b1bb7[_0xe0b0('0x122')],'customerPort':_0x5b1bb7[_0xe0b0('0x123')]?_0x5b1bb7[_0xe0b0('0x123')]:_0xe0b0('0x120')},'messages':_(_0x5b1bb7['Messages'])['tail']()['filter']({'secret':![]})['map'](function(_0x26a916){if(_0x26a916[_0xe0b0('0xe1')]){var _0x5b5bb2=path['join'](_0x3eb643,_0x26a916[_0xe0b0('0xe1')][_0xe0b0('0xdf')]);if(fs['existsSync'](_0x5b5bb2)){fs[_0xe0b0('0x124')](_0x5b5bb2)[_0xe0b0('0x125')](fs[_0xe0b0('0x126')](path[_0xe0b0('0xe5')](_0x26bd6c,_0x26a916['Attachment'][_0xe0b0('0xdf')])));}}return{'date':moment(_0x26a916[_0xe0b0('0x7e')])[_0xe0b0('0xec')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe0b0('0x9e')](),'sender':_0x26a916[_0xe0b0('0xfd')]===_0xe0b0('0xd0')?_0x26a916[_0xe0b0('0x78')]?_0x26a916['User'][_0xe0b0('0xc5')]:_0xe0b0('0xf8'):_0x26a916[_0xe0b0('0xd4')][_0xe0b0('0x127')]+(_0x26a916[_0xe0b0('0xd4')]['lastName']?'\x20'+_0x26a916[_0xe0b0('0xd4')][_0xe0b0('0x11b')]:''),'body':_0x26a916['Attachment']?_0x26a916[_0xe0b0('0xe1')][_0xe0b0('0xdf')]:_0x26a916[_0xe0b0('0x38')],'direction':_0x26a916[_0xe0b0('0xfd')]===_0xe0b0('0xd0')?'A':'C','secret':_0x26a916[_0xe0b0('0xfe')],'read':_0x26a916['read'],'attachment':_0x26a916[_0xe0b0('0xe1')]};})[_0xe0b0('0x6d')]()};return ejs[_0xe0b0('0x128')](path[_0xe0b0('0xe5')](config[_0xe0b0('0xe6')],_0xe0b0('0x129'),_0xe0b0('0x12a'),_0xe0b0('0x12b')),{'interaction':_0x5b7df1})[_0xe0b0('0x20')](function(_0x1f5871){var _0x4d12b2=path[_0xe0b0('0xe5')](_0x26bd6c,'transcript-'+_0x5b1bb7['id']+'-'+_0x125ead+_0xe0b0('0x12c'));var _0x4b655d={'path':_0x4d12b2,'channel':'Chat','interactionId':_0x5b1bb7['id']};return pdf[_0xe0b0('0x12d')](_0x1f5871,_0x4b655d);})[_0xe0b0('0x20')](function(){return new BPromise(function(_0x5b8cef,_0x4d4eae){zipdir(_0x26bd6c,{'saveTo':_0x6f9dbd},function(_0x388f0d,_0x317dee){if(_0x388f0d)return _0x4d4eae(_0x388f0d);return _0x5b8cef(_0x317dee);});})['then'](function(){return new BPromise(function(_0x5501c2,_0xa7f2cf){rimraf(_0x26bd6c,function(_0x2c61b3){if(_0x2c61b3)_0xa7f2cf(_0x2c61b3);return _0x5501c2();});});})['then'](function(){return _0x16a02b[_0xe0b0('0xe8')](_0x6f9dbd,_0x104409,function(_0x465315){if(_0x465315){console[_0xe0b0('0x12e')](_0xe0b0('0x12f'),_0x465315);}else{fs['unlinkSync'](_0x6f9dbd);}});});});}else{return _0x16a02b[_0xe0b0('0x28')](0xc8);}})[_0xe0b0('0x27')](handleError(_0x16a02b,null));};
\ No newline at end of file
+var _0x4fc2=['result','catch','sendStatus','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','destroy','stack','name','send','render','merge','body','contact','agent','interaction','account','map','fullname','TagIds','Tags','split','forEach','push','ChatInteraction','rawAttributes','type','key','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','select','field','color','from','tools_tags','u.id','u.fullname','ui.ChatInteractionId','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','search','parseSearch','sqlOperator','conditions','find','unreadMessages','`\x20=\x200','having','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','keys','some','compact','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','SELECT','DESC','t.id\x20IN\x20?','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','Contact.firstName','c.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','params','includeAll','options','create','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','metadata','Sequelize','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','attachmentUpload','file','originalname','filename','mimetype','Attachment','Unauthorized','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','basename','download','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','User','ChatWebsite','%s%d','agentAlias','System','customer','website_alias','alias','agent_fullname','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','pick','YYYY-MM-DD\x20HH:mm:ss','include','findAll','getMyMessages','includeAgent','addTags','setTags','spread','Tag','removeTags','unix','server','files','attachments','transcript-%d-%s.zip','firstName','lastName','direction','Account','Owner','mkdirSync','N.A.','closedAt','customerIp','customerPort','existsSync','createWriteStream','out','renderFile','downloadInteraction.ejs','transcript-','.pdf','Chat','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message'];(function(_0x3a3b8a,_0xad9999){var _0x3db2ee=function(_0x3448d4){while(--_0x3448d4){_0x3a3b8a['push'](_0x3a3b8a['shift']());}};_0x3db2ee(++_0xad9999);}(_0x4fc2,0x111));var _0x24fc=function(_0x4f0456,_0x795c81){_0x4f0456=_0x4f0456-0x0;var _0x52caea=_0x4fc2[_0x4f0456];return _0x52caea;};'use strict';var emlformat=require(_0x24fc('0x0'));var rimraf=require(_0x24fc('0x1'));var zipdir=require(_0x24fc('0x2'));var jsonpatch=require(_0x24fc('0x3'));var rp=require('request-promise');var moment=require(_0x24fc('0x4'));var BPromise=require(_0x24fc('0x5'));var Mustache=require(_0x24fc('0x6'));var util=require('util');var path=require(_0x24fc('0x7'));var sox=require(_0x24fc('0x8'));var csv=require('to-csv');var ejs=require(_0x24fc('0x9'));var fs=require('fs');var fs_extra=require(_0x24fc('0xa'));var _=require('lodash');var squel=require(_0x24fc('0xb'));var crypto=require(_0x24fc('0xc'));var jsforce=require(_0x24fc('0xd'));var deskjs=require(_0x24fc('0xe'));var toCsv=require(_0x24fc('0xf'));var querystring=require(_0x24fc('0x10'));var Papa=require('papaparse');var Redis=require(_0x24fc('0x11'));var authService=require(_0x24fc('0x12'));var qs=require(_0x24fc('0x13'));var as=require(_0x24fc('0x14'));var pdf=require(_0x24fc('0x15'));var hardwareService=require(_0x24fc('0x16'));var logger=require(_0x24fc('0x17'))(_0x24fc('0x18'));var utils=require('../../config/utils');var config=require(_0x24fc('0x19'));var licenseUtil=require(_0x24fc('0x1a'));var db=require('../../mysqldb')['db'];config[_0x24fc('0x1b')]=_[_0x24fc('0x1c')](config[_0x24fc('0x1b')],{'host':_0x24fc('0x1d'),'port':0x18eb});var socket=require(_0x24fc('0x1e'))(new Redis(config[_0x24fc('0x1b')]));require('./chatInteraction.socket')[_0x24fc('0x1f')](socket);var jayson=require(_0x24fc('0x20'));var client=jayson[_0x24fc('0x21')][_0x24fc('0x22')]({'port':0x232b});var client9004=jayson['client'][_0x24fc('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x588543,_0x4af098,_0x3385c7,_0x218fb6){return new BPromise(function(_0x41c593,_0x25cb40){var _0x52a884=_0x218fb6||client;return _0x52a884[_0x24fc('0x23')](_0x588543,_0x3385c7)[_0x24fc('0x24')](function(_0x6cfa0a){logger[_0x24fc('0x25')]('ChatInteraction,\x20%s,\x20%s',_0x4af098,_0x24fc('0x26'));logger[_0x24fc('0x27')](_0x24fc('0x28'),_0x4af098,'request\x20sent',JSON[_0x24fc('0x29')](_0x6cfa0a));if(_0x6cfa0a[_0x24fc('0x2a')]){if(_0x6cfa0a[_0x24fc('0x2a')][_0x24fc('0x2b')]===0x1f4){logger['error'](_0x24fc('0x2c'),_0x4af098,_0x6cfa0a['error'][_0x24fc('0x2d')]);return _0x25cb40(_0x6cfa0a['error'][_0x24fc('0x2d')]);}logger[_0x24fc('0x2a')](_0x24fc('0x2c'),_0x4af098,_0x6cfa0a['error'][_0x24fc('0x2d')]);return _0x41c593(_0x6cfa0a['error'][_0x24fc('0x2d')]);}else{logger[_0x24fc('0x25')](_0x24fc('0x2c'),_0x4af098,_0x24fc('0x26'));_0x41c593(_0x6cfa0a[_0x24fc('0x2e')][_0x24fc('0x2d')]);}})[_0x24fc('0x2f')](function(_0x20192b){logger[_0x24fc('0x2a')](_0x24fc('0x2c'),_0x4af098,_0x20192b);_0x25cb40(_0x20192b);});});}function respondWithStatusCode(_0x568441,_0x11c913){_0x11c913=_0x11c913||0xcc;return function(_0x16f27f){if(_0x16f27f){return _0x568441[_0x24fc('0x30')](_0x11c913);}return _0x568441['status'](_0x11c913)[_0x24fc('0x31')]();};}function respondWithResult(_0x3d1ec8,_0x35f9f9){_0x35f9f9=_0x35f9f9||0xc8;return function(_0x290f84){if(_0x290f84){return _0x3d1ec8[_0x24fc('0x32')](_0x35f9f9)[_0x24fc('0x33')](_0x290f84);}};}function respondWithFilteredResult(_0x5ac1f2,_0x240ae7){return function(_0x29a461){if(_0x29a461){var _0x3c99ed=typeof _0x240ae7[_0x24fc('0x34')]===_0x24fc('0x35')&&typeof _0x240ae7['limit']==='undefined';var _0x4e6f73=_0x29a461[_0x24fc('0x36')];var _0x574ba3=_0x3c99ed?0x0:_0x240ae7[_0x24fc('0x34')];var _0x3e6389=_0x3c99ed?_0x29a461[_0x24fc('0x36')]:_0x240ae7[_0x24fc('0x34')]+_0x240ae7['limit'];var _0x66eec0;if(_0x3e6389>=_0x4e6f73){_0x3e6389=_0x4e6f73;_0x66eec0=0xc8;}else{_0x66eec0=0xce;}_0x5ac1f2[_0x24fc('0x32')](_0x66eec0);return _0x5ac1f2['set'](_0x24fc('0x37'),_0x574ba3+'-'+_0x3e6389+'/'+_0x4e6f73)[_0x24fc('0x33')](_0x29a461);}return null;};}function patchUpdates(_0x4d756f){return function(_0x48c62a){try{jsonpatch[_0x24fc('0x38')](_0x48c62a,_0x4d756f,!![]);}catch(_0x56eae7){return BPromise[_0x24fc('0x39')](_0x56eae7);}return _0x48c62a[_0x24fc('0x3a')]();};}function saveUpdates(_0x5491b0,_0x2ae896){return function(_0x33bbf2){if(_0x33bbf2){return _0x33bbf2[_0x24fc('0x3b')](_0x5491b0)[_0x24fc('0x24')](function(_0x1c5874){return _0x1c5874;});}return null;};}function removeEntity(_0x1e205d,_0x3b3932){return function(_0x2a209d){if(_0x2a209d){return _0x2a209d[_0x24fc('0x3c')]()['then'](function(){_0x1e205d[_0x24fc('0x32')](0xcc)[_0x24fc('0x31')]();});}};}function handleEntityNotFound(_0x2fbe30,_0x316aa2){return function(_0x242bd5){if(!_0x242bd5){_0x2fbe30['sendStatus'](0x194);}return _0x242bd5;};}function handleError(_0x56a9bd,_0xd52d10){_0xd52d10=_0xd52d10||0x1f4;return function(_0x5d48fe){logger[_0x24fc('0x2a')](_0x5d48fe[_0x24fc('0x3d')]);if(_0x5d48fe[_0x24fc('0x3e')]){delete _0x5d48fe[_0x24fc('0x3e')];}_0x56a9bd['status'](_0xd52d10)[_0x24fc('0x3f')](_0x5d48fe);};}function getMustacheRender(_0x4f4ec8,_0x65771d){return Mustache[_0x24fc('0x40')](_0x4f4ec8,_[_0x24fc('0x41')](_0x65771d[_0x24fc('0x42')],{'contact':_0x65771d[_0x24fc('0x43')],'message':_0x65771d['message'],'agent':_0x65771d[_0x24fc('0x44')],'interaction':_0x65771d[_0x24fc('0x45')],'account':_0x65771d[_0x24fc('0x46')]}))||'';}function getInteractionUsers(_0x22a75c,_0x5ceae2){return new BPromise(function(_0x172923,_0x2f0bd9){try{if(_0x5ceae2[_0x22a75c['id']]){_0x22a75c['Users']=_[_0x24fc('0x47')](_0x5ceae2[_0x22a75c['id']],function(_0x52df2e){return{'id':_0x52df2e['id'],'fullname':_0x52df2e[_0x24fc('0x48')]};});}}catch(_0x2fd30d){_0x2f0bd9(_0x2fd30d);}_0x172923(_0x22a75c);});}function getInteractionTags(_0x3a15ab,_0x1e045a){return new BPromise(function(_0x431189,_0x278b18){try{if(_0x3a15ab[_0x24fc('0x49')]){_0x3a15ab[_0x24fc('0x4a')]=[];_0x3a15ab['TagIds'][_0x24fc('0x4b')](',')[_0x24fc('0x4c')](function(_0x32f72c){_0x3a15ab['Tags'][_0x24fc('0x4d')](_0x1e045a[_0x32f72c]);});}delete _0x3a15ab[_0x24fc('0x49')];}catch(_0x4ae4a7){_0x278b18(_0x4ae4a7);}_0x431189(_0x3a15ab);});}function updateChatInteraction(_0x2c4a6c,_0x22f30b,_0x2c598c){return new BPromise(function(_0x5e4e9b,_0x31ddd0){return getInteractionUsers(_0x2c4a6c,_0x2c598c)[_0x24fc('0x24')](function(_0x585e48){return getInteractionTags(_0x585e48,_0x22f30b);})[_0x24fc('0x24')](function(_0x169982){_0x5e4e9b(_0x169982);})[_0x24fc('0x2f')](function(_0x2a0ac4){_0x31ddd0(_0x2a0ac4);});});}exports['index']=function(_0x2eecaf,_0x9bc56a){var _0x3ce7b3={},_0x7b38fa={},_0xbcbcfa={'count':0x0,'rows':[]};var _0x58a950=_[_0x24fc('0x47')](db[_0x24fc('0x4e')][_0x24fc('0x4f')],function(_0x3c6ffb){return{'name':_0x3c6ffb['fieldName'],'type':_0x3c6ffb[_0x24fc('0x50')][_0x24fc('0x51')]};});_0x7b38fa['model']=_['map'](_0x58a950,_0x24fc('0x3e'));_0x7b38fa['query']=_['keys'](_0x2eecaf[_0x24fc('0x52')]);_0x7b38fa['filters']=_[_0x24fc('0x53')](_0x7b38fa[_0x24fc('0x54')],_0x7b38fa[_0x24fc('0x52')]);_0x3ce7b3['attributes']=_[_0x24fc('0x53')](_0x7b38fa[_0x24fc('0x54')],qs[_0x24fc('0x55')](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x55')]));_0x3ce7b3[_0x24fc('0x56')]=_0x3ce7b3[_0x24fc('0x56')][_0x24fc('0x57')]?_0x3ce7b3['attributes']:_0x7b38fa['model'];if(!_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x58')](_0x24fc('0x59'))){_0x3ce7b3['limit']=qs['limit'](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x5a')]);_0x3ce7b3[_0x24fc('0x34')]=qs[_0x24fc('0x34')](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x34')]);}_0x3ce7b3[_0x24fc('0x5b')]=qs[_0x24fc('0x5c')](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x5c')]);_0x3ce7b3[_0x24fc('0x5d')]=qs[_0x24fc('0x5e')](_['pick'](_0x2eecaf[_0x24fc('0x52')],_0x7b38fa[_0x24fc('0x5e')]),_0x58a950);var _0x32a466=[];var _0xb0fc00=squel[_0x24fc('0x5f')]()['field']('id')[_0x24fc('0x60')]('name')[_0x24fc('0x60')](_0x24fc('0x61'))[_0x24fc('0x62')](_0x24fc('0x63'));var _0x40f42b=squel[_0x24fc('0x5f')]()['field'](_0x24fc('0x64'))[_0x24fc('0x60')](_0x24fc('0x65'))[_0x24fc('0x60')](_0x24fc('0x66'))[_0x24fc('0x62')]('user_has_chat_interactions','ui')[_0x24fc('0x67')](_0x24fc('0x68'),'u',_0x24fc('0x69'));var _0x1b69ad=squel[_0x24fc('0x5f')]()[_0x24fc('0x62')](_0x24fc('0x6a'),'i')['left_join'](_0x24fc('0x6b'),'c',_0x24fc('0x6c'))['left_join'](_0x24fc('0x68'),'o',_0x24fc('0x6d'))[_0x24fc('0x67')](_0x24fc('0x6e'),'a',_0x24fc('0x6f'))[_0x24fc('0x67')]('chat_messages','me',_0x24fc('0x70'))['left_join'](_0x24fc('0x71'),'it',_0x24fc('0x72'))['left_join'](_0x24fc('0x63'),'t','t.id\x20=\x20it.TagId');var _0x1c1f74=squel['expr']();var _0xdff811=[];var _0x27b612=squel['expr']();var _0x2edef7;if(_0x2eecaf['query'][_0x24fc('0x73')]){_0x2edef7=as[_0x24fc('0x74')](_0x2eecaf['query'][_0x24fc('0x73')]);var _0x3ec1a8=_0x2edef7[_0x24fc('0x75')];for(var _0x47179d=0x0;_0x47179d<_0x2edef7[_0x24fc('0x76')]['length'];_0x47179d++){var _0x39da59=_0x2edef7[_0x24fc('0x76')][_0x47179d];var _0x2d657a='i';var _0x2b5dca=_[_0x24fc('0x77')](_0x58a950,['name',_0x39da59['field']]);if(!_0x2b5dca){switch(_0x39da59[_0x24fc('0x60')]){case _0x24fc('0x78'):if(_0x39da59['value']==0x1){_0x1b69ad['having']('`'+_0x39da59[_0x24fc('0x60')]+_0x24fc('0x79'));}else{_0x1b69ad[_0x24fc('0x7a')]('`'+_0x39da59[_0x24fc('0x60')]+'`\x20>\x200');}break;case _0x24fc('0x7b'):if(_0x39da59[_0x24fc('0x7c')]===_0x24fc('0x7d')){if(_0x39da59[_0x24fc('0x7e')][_0x24fc('0x4b')]('\x20')[_0x24fc('0x57')]>0x1){_0x1c1f74[_0x3ec1a8](_0x24fc('0x7f'),qs[_0x24fc('0x80')](_0x39da59[_0x24fc('0x7e')]),null);}else{var _0x1f6a71='%'+_0x39da59[_0x24fc('0x7e')]+'%';_0x1c1f74[_0x3ec1a8](_0x24fc('0x81'),_0x1f6a71,_0x1f6a71,_0x1f6a71);}}else{_0x2b5dca=_[_0x24fc('0x77')](_0x58a950,[_0x24fc('0x3e'),_0x24fc('0x82')]);_0x39da59['field']=_0x24fc('0x82');_0x10ef7c=as[_0x24fc('0x83')](_0x2d657a,_0x2b5dca[_0x24fc('0x50')],_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c[_0x24fc('0x84')],_0x10ef7c[_0x24fc('0x7e')][_0x24fc('0x85')],_0x10ef7c[_0x24fc('0x7e')][_0x24fc('0x31')]);}break;case'Tag':var _0x3475b8=_0x39da59[_0x24fc('0x7e')][_0x24fc('0x4b')](',')[_0x24fc('0x47')](function(_0x55fceb){return Number(_0x55fceb);});_0x3475b8[_0x24fc('0x4c')](function(_0x29b381){_0x27b612['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x29b381+',%');});_0xdff811=_['union'](_0xdff811,_0x3475b8);break;case'User':if(_0x39da59[_0x24fc('0x7c')]===_0x24fc('0x7d')){_0x1c1f74[_0x3ec1a8](_0x24fc('0x86'),'%'+_0x39da59[_0x24fc('0x7e')]+'%',null);}else{_0x2b5dca=_[_0x24fc('0x77')](_0x58a950,[_0x24fc('0x3e'),'UserId']);_0x39da59[_0x24fc('0x60')]=_0x24fc('0x87');_0x10ef7c=as['buildExpression'](_0x2d657a,_0x2b5dca['type'],_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c[_0x24fc('0x84')],_0x10ef7c[_0x24fc('0x7e')][_0x24fc('0x85')],_0x10ef7c['value'][_0x24fc('0x31')]);}break;case _0x24fc('0x42'):_0x10ef7c=as[_0x24fc('0x83')]('me',null,_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c['text'],_0x10ef7c['value']['start'],_0x10ef7c['value']['end']);break;}}else{var _0x10ef7c=as[_0x24fc('0x83')](_0x2d657a,_0x2b5dca[_0x24fc('0x50')],_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c[_0x24fc('0x84')],_0x10ef7c['value'][_0x24fc('0x85')],_0x10ef7c['value'][_0x24fc('0x31')]);}}}else{var _0x4e6eec=_(_0x2eecaf[_0x24fc('0x52')])[_0x24fc('0x88')]()[_0x24fc('0x47')](function(_0x4291bd){return _[_0x24fc('0x89')](_0x58a950,[_0x24fc('0x3e'),_0x4291bd])?_0x4291bd:undefined;})[_0x24fc('0x8a')]()['value']();if(!_[_0x24fc('0x8b')](_0x4e6eec)){_0x4e6eec[_0x24fc('0x4c')](function(_0x2de101){if(_0x2de101==='ChatWebsiteId'){_0x1b69ad['where'](_0x24fc('0x8c'),[][_0x24fc('0x8d')](_0x2eecaf['query'][_0x2de101]));}else if(_0x2de101===_0x24fc('0x8e')){var _0x1a2e6d=JSON['parse'](_0x2eecaf[_0x24fc('0x52')][_0x2de101])[_0x24fc('0x8f')];var _0x5249ea=JSON[_0x24fc('0x90')](_0x2eecaf[_0x24fc('0x52')][_0x2de101])[_0x24fc('0x91')];_0x1b69ad[_0x24fc('0x5d')](_0x24fc('0x92'),_0x1a2e6d,_0x5249ea);}else{if(_0x2eecaf[_0x24fc('0x52')][_0x2de101]==='null'){_0x1b69ad['where']('i.'+_0x2de101+_0x24fc('0x93'));}else{_0x1b69ad['where']('i.'+_0x2de101+_0x24fc('0x94'),_0x2eecaf['query'][_0x2de101]);}}});}if(_0x2eecaf['query'][_0x24fc('0x95')]){if(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x95')]==0x1){_0x1b69ad[_0x24fc('0x7a')](_0x24fc('0x96'));}else{_0x1b69ad[_0x24fc('0x7a')](_0x24fc('0x97'));}}if(_0x2eecaf[_0x24fc('0x52')]['tag']){_0xdff811=_[_0x24fc('0x98')](_0x2eecaf[_0x24fc('0x52')]['tag'])?_0x2eecaf['query'][_0x24fc('0x99')]:new Array(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x99')]);_0xdff811[_0x24fc('0x4c')](function(_0xd1e6){_0x27b612['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xd1e6+',%');});}if(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x9a')]){var _0x5ca35b=_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x9a')][_0x24fc('0x9b')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x24fc('0x9c')](_0x5ca35b)){_0x1c1f74['or'](_0x24fc('0x9d'),_0x5ca35b+'%');}else{_0x1c1f74['or'](_0x24fc('0x9e'),qs[_0x24fc('0x80')](_0x5ca35b))['or'](_0x24fc('0x9f'),_0x5ca35b+'%');}}}_0x1b69ad[_0x24fc('0x5d')](_0x1c1f74);_0x1b69ad[_0x24fc('0xa0')](_0x24fc('0xa1'));var _0x188edb={'type':db['Sequelize'][_0x24fc('0xa2')][_0x24fc('0xa3')],'raw':!![]};var _0x1dcccf=_0x1b69ad['clone']();_0x1dcccf['field']('i.id');_0x1dcccf[_0x24fc('0x60')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x24fc('0x78'));if(_0x3ce7b3[_0x24fc('0x5b')]){_0x3ce7b3['order'][_0x24fc('0x4c')](function(_0x559692){var _0x41cef7=_0x559692[0x0]==='contactName'?_0x559692[0x0]:'i.'+_0x559692[0x0];_0x1b69ad[_0x24fc('0x5b')](_0x41cef7,_0x559692[0x1]===_0x24fc('0xa4')?![]:!![]);});}if(!_[_0x24fc('0x8b')](_0xdff811)){_0x1b69ad[_0x24fc('0x7a')](_0x27b612);_0x1dcccf[_0x24fc('0x5d')](_0x24fc('0xa5'),_0xdff811);}BPromise['resolve']()[_0x24fc('0x24')](function(){if(!_0x2edef7){if(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0xa6')])return;_0x1dcccf[_0x24fc('0x5d')](_0x24fc('0xa7'));_0x1b69ad[_0x24fc('0x5d')](_0x24fc('0xa7'));return;}if(_0x2eecaf[_0x24fc('0xa8')][_0x24fc('0xa9')]!=='agent')return;return _0x2eecaf[_0x24fc('0xa8')][_0x24fc('0xaa')]({'attributes':['id'],'raw':!![]})[_0x24fc('0x24')](function(_0x30ed50){if(_['isEmpty'](_0x30ed50)){_0x1dcccf[_0x24fc('0x5d')](_0x24fc('0xab'));_0x1b69ad[_0x24fc('0x5d')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x1dcccf[_0x24fc('0x5d')]('i.ChatWebsiteId\x20IN\x20?',_['map'](_0x30ed50,'id'));_0x1b69ad['where'](_0x24fc('0x8c'),_['map'](_0x30ed50,'id'));}});})[_0x24fc('0x24')](function(){if(_0x2eecaf[_0x24fc('0xa8')][_0x24fc('0xa9')]===_0x24fc('0x44')&&!_0x2edef7&&!_0x2eecaf['query'][_0x24fc('0xa6')])return[];return db[_0x24fc('0xac')][_0x24fc('0x52')](_0x1dcccf[_0x24fc('0xad')](),_0x188edb);})[_0x24fc('0x24')](function(_0x5c80a5){_0xbcbcfa[_0x24fc('0x36')]=_0x5c80a5[_0x24fc('0x57')];if(_0xbcbcfa[_0x24fc('0x36')]===0x0)return[];return db[_0x24fc('0xac')]['query'](_0xb0fc00['toString'](),_0x188edb)[_0x24fc('0x24')](function(_0x4216da){_0x32a466=_[_0x24fc('0xae')](_0x4216da,'id');_0x188edb=_[_0x24fc('0x41')](_0x188edb,{'model':db[_0x24fc('0x4e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2eecaf['query'][_0x24fc('0x55')]){_0x3ce7b3[_0x24fc('0x56')][_0x24fc('0x4c')](function(_0x5d5a59){_0x1b69ad[_0x24fc('0x60')]('i.'+_0x5d5a59);});}else{_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xaf'),_0x24fc('0x78'));_0x1b69ad[_0x24fc('0x60')]('a.key','Account.key');_0x1b69ad['field'](_0x24fc('0xb0'),_0x24fc('0xb1'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb2'),_0x24fc('0xb3'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb4'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb5'),_0x24fc('0xb6'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb7'),'Contact.lastName');_0x1b69ad['field'](_0x24fc('0xb8'),'Contact.email');_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb9'),_0x24fc('0xba'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xbb'),_0x24fc('0xbc'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xbd'),_0x24fc('0xbe'));_0x1b69ad['field'](_0x24fc('0xbf'),_0x24fc('0xc0'));_0x1b69ad['field']('o.internal',_0x24fc('0xc1'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xc2'),_0x24fc('0x49'));}if(_0x3ce7b3[_0x24fc('0x5a')])_0x1b69ad[_0x24fc('0x5a')](_0x3ce7b3['limit']);if(_0x3ce7b3[_0x24fc('0x34')])_0x1b69ad[_0x24fc('0x34')](_0x3ce7b3[_0x24fc('0x34')]);return db[_0x24fc('0xac')]['query'](_0x1b69ad[_0x24fc('0xad')](),_0x188edb);})[_0x24fc('0x24')](function(_0x1506e8){if(_0x1506e8['length']>0x0)_0x40f42b[_0x24fc('0x5d')](_0x24fc('0xc3'),_[_0x24fc('0x47')](_0x1506e8,'id'));return db['sequelize'][_0x24fc('0x52')](_0x40f42b[_0x24fc('0xad')](),_0x188edb)['then'](function(_0x543db4){var _0x283251=_[_0x24fc('0xc4')](_0x543db4,_0x24fc('0xc5'));var _0x2029cd=[];_0x1506e8[_0x24fc('0x4c')](function(_0x3afe80){_0x2029cd['push'](updateChatInteraction(_0x3afe80,_0x32a466,_0x283251));});return BPromise[_0x24fc('0xc6')](_0x2029cd);});});})[_0x24fc('0x24')](function(_0x17a6a9){_0xbcbcfa[_0x24fc('0xc7')]=_0x17a6a9;return _0xbcbcfa;})[_0x24fc('0x24')](respondWithFilteredResult(_0x9bc56a,_0x3ce7b3))[_0x24fc('0x2f')](handleError(_0x9bc56a,null));};exports['show']=function(_0x4018d3,_0x4a2522){var _0x5226aa={'raw':![],'where':{'id':_0x4018d3[_0x24fc('0xc8')]['id']}},_0x260a62={};_0x260a62['model']=_[_0x24fc('0x88')](db[_0x24fc('0x4e')][_0x24fc('0x4f')]);_0x260a62[_0x24fc('0x52')]=_['keys'](_0x4018d3[_0x24fc('0x52')]);_0x260a62[_0x24fc('0x5e')]=_[_0x24fc('0x53')](_0x260a62[_0x24fc('0x54')],_0x260a62[_0x24fc('0x52')]);_0x5226aa[_0x24fc('0x56')]=_['intersection'](_0x260a62['model'],qs['fields'](_0x4018d3[_0x24fc('0x52')][_0x24fc('0x55')]));_0x5226aa['attributes']=_0x5226aa[_0x24fc('0x56')][_0x24fc('0x57')]?_0x5226aa[_0x24fc('0x56')]:_0x260a62['model'];if(_0x4018d3[_0x24fc('0x52')][_0x24fc('0xc9')]){_0x5226aa['include']=[{'all':!![]}];}_0x5226aa=_['merge']({},_0x5226aa,_0x4018d3[_0x24fc('0xca')]);return db[_0x24fc('0x4e')][_0x24fc('0x77')](_0x5226aa)['then'](handleEntityNotFound(_0x4a2522,null))[_0x24fc('0x24')](respondWithResult(_0x4a2522,null))['catch'](handleError(_0x4a2522,null));};exports['create']=function(_0x344c0f,_0x52484a){return db['ChatInteraction'][_0x24fc('0xcb')](_0x344c0f['body'],{})[_0x24fc('0x24')](respondWithResult(_0x52484a,0xc9))[_0x24fc('0x2f')](handleError(_0x52484a,null));};exports[_0x24fc('0x3b')]=function(_0x11eaeb,_0x4ae346){if(_0x11eaeb[_0x24fc('0x42')]['id']){delete _0x11eaeb[_0x24fc('0x42')]['id'];}return db['ChatInteraction'][_0x24fc('0x77')]({'where':{'id':_0x11eaeb[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x4ae346,null))[_0x24fc('0x24')](saveUpdates(_0x11eaeb[_0x24fc('0x42')],null))['then'](respondWithResult(_0x4ae346,null))[_0x24fc('0x2f')](handleError(_0x4ae346,null));};exports[_0x24fc('0x3c')]=function(_0x5793d9,_0x759d35){return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x5793d9[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x759d35,null))['then'](removeEntity(_0x759d35,null))[_0x24fc('0x2f')](handleError(_0x759d35,null));};exports['describe']=function(_0x5c8969,_0x42c158){return db[_0x24fc('0x4e')][_0x24fc('0xcc')]()['then'](respondWithResult(_0x42c158,null))['catch'](handleError(_0x42c158,null));};exports[_0x24fc('0xcd')]=function(_0x38fba8,_0xfa9d58){var _0x353a64=_0x38fba8[_0x24fc('0xc8')]['id'];var _0x4ee1ad;var _0x4875bd;var _0x1efb25;return db['ChatInteraction']['findOne']({'where':{'id':_0x353a64}})[_0x24fc('0x24')](function(_0x484775){_0x4ee1ad=_0x484775;return db['ChatWebsite'][_0x24fc('0xce')]({'where':{'id':_0x484775[_0x24fc('0xa6')]},'attributes':['id',_0x24fc('0xcf'),_0x24fc('0xd0'),_0x24fc('0xd1'),_0x24fc('0xd2'),_0x24fc('0xd3')],'raw':!![]});})['then'](function(_0x3b2891){if(_0x3b2891&&_0x3b2891[_0x24fc('0xcf')]&&_0x3b2891[_0x24fc('0xd0')]){_0x4875bd=_0x3b2891;var _0x6e3447={'interaction':{'id':_0x353a64},'agent':{'id':_0x38fba8[_0x24fc('0xa8')]['id'],'name':_0x38fba8[_0x24fc('0xa8')][_0x24fc('0x3e')],'fullname':_0x38fba8[_0x24fc('0xa8')][_0x24fc('0x48')],'email':_0x38fba8[_0x24fc('0xa8')][_0x24fc('0xd4')]},'contact':_0x38fba8[_0x24fc('0x42')][_0x24fc('0x43')],'account':_0x38fba8[_0x24fc('0x42')][_0x24fc('0x46')]};var _0x38ec08={'rejectUnauthorized':![],'method':_0x24fc('0xd5'),'url':_0x24fc('0xd6'),'headers':{'X-APIKEY':_0x3b2891[_0x24fc('0xcf')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x38fba8[_0x24fc('0xa8')][_0x24fc('0xd4')]],'buttons':null,'topic':_0x4875bd[_0x24fc('0xd1')],'note':_[_0x24fc('0xd7')](_0x4875bd[_0x24fc('0xd2')])?null:getMustacheRender(_0x4875bd[_0x24fc('0xd2')],_0x6e3447),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x24fc('0xd7')](_0x4875bd[_0x24fc('0xd3')])){var _0x1d8a8f=getMustacheRender(_0x4875bd[_0x24fc('0xd3')],_0x6e3447);var _0x534388=JSON['parse'](_0x1d8a8f);_0x38ec08['body'][_0x24fc('0xd8')]=_0x534388;}}catch(_0x5aa947){throw new db[(_0x24fc('0xd9'))]['ValidationError'](_0x24fc('0xda'));}return rp(_0x38ec08);}else{throw new db[(_0x24fc('0xd9'))][(_0x24fc('0xdb'))](_0x24fc('0xdc'));}})[_0x24fc('0x24')](function(_0x468477){_0x1efb25=_0x468477;if(_0x1efb25['id']){var _0x1c4ac1={'body':_0x1efb25[_0x24fc('0xdd')],'ChatWebsiteId':_0x4875bd['id'],'ChatInteractionId':_0x4ee1ad['id'],'direction':'out','UserId':_0x38fba8[_0x24fc('0xa8')]['id']};return db[_0x24fc('0xde')][_0x24fc('0xcb')](_0x1c4ac1,{});}else{throw new db[(_0x24fc('0xd9'))]['ValidationError'](_0x24fc('0xdf'));}})[_0x24fc('0x24')](function(){return _0x4ee1ad[_0x24fc('0xe0')]({'vidaooSessionId':_0x1efb25['id']});})[_0x24fc('0x24')](respondWithResult(_0xfa9d58,null))[_0x24fc('0x2f')](handleError(_0xfa9d58,null));};exports[_0x24fc('0xe1')]=function(_0x17280c,_0x13f9e3){if(_0x17280c[_0x24fc('0x42')]['id']){delete _0x17280c[_0x24fc('0x42')]['id'];}return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x17280c['params']['id']},'include':[{'model':db[_0x24fc('0xe2')],'as':_0x24fc('0x7b')}]})[_0x24fc('0x24')](handleEntityNotFound(_0x13f9e3,null))[_0x24fc('0x24')](saveUpdates(_0x17280c[_0x24fc('0x42')],null))[_0x24fc('0x24')](respondWithResult(_0x13f9e3,null))[_0x24fc('0x2f')](handleError(_0x13f9e3,null));};exports['abandon']=function(_0x2400a3,_0x16368d,_0x5b1fe2){if(_0x2400a3[_0x24fc('0x42')]['id']){delete _0x2400a3[_0x24fc('0x42')]['id'];}return db['ChatInteraction'][_0x24fc('0x77')]({'where':{'id':_0x2400a3['params']['id']}})[_0x24fc('0x24')](function(_0x21d6d3){if(!_0x21d6d3){logger['error'](_0x24fc('0xe3'),_0x24fc('0xe4'),0x194,_0x24fc('0xe5'));_0x16368d[_0x24fc('0x30')](0x194);}else{if(_0x21d6d3[_0x24fc('0x87')]){throw new db[(_0x24fc('0xd9'))][(_0x24fc('0xdb'))](_0x24fc('0xe6'));}}return _0x21d6d3;})[_0x24fc('0x24')](function(_0x2c6ac9){if(_0x2c6ac9){return _0x2c6ac9[_0x24fc('0x3b')]({'closed':_0x2400a3[_0x24fc('0x42')][_0x24fc('0xe7')],'disposition':_0x2400a3[_0x24fc('0x42')][_0x24fc('0xe8')]})[_0x24fc('0x24')](function(_0x2ccd34){return _0x2ccd34;});}})['then'](function(_0x51764e){return respondWithRpcPromise('AbandonInteraction',_0x24fc('0xe4'),_0x2400a3['body'],client9004);})[_0x24fc('0x24')](respondWithResult(_0x16368d,null))[_0x24fc('0x2f')](handleError(_0x16368d,null));};exports[_0x24fc('0xe9')]=function(_0x2d7ecb,_0xf4f427,_0x41fbf1){_0x2d7ecb[_0x24fc('0x42')][_0x24fc('0x3e')]=_0x2d7ecb[_0x24fc('0xea')][_0x24fc('0xeb')];_0x2d7ecb[_0x24fc('0x42')]['basename']=_0x2d7ecb['file'][_0x24fc('0xec')];_0x2d7ecb[_0x24fc('0x42')][_0x24fc('0x50')]=_0x2d7ecb['file'][_0x24fc('0xed')];return db[_0x24fc('0xee')][_0x24fc('0xcb')](_0x2d7ecb[_0x24fc('0x42')])[_0x24fc('0x24')](respondWithResult(_0xf4f427,0xc9))[_0x24fc('0x2f')](handleError(_0xf4f427,null));};exports['attachmentDownload']=function(_0x3c41c1,_0x337fad,_0x525d4f){return db[_0x24fc('0x4e')]['findOne']({'where':{'id':_0x3c41c1['params']['id']},'raw':!![]})[_0x24fc('0x24')](handleEntityNotFound(_0x337fad,null))[_0x24fc('0x24')](function(_0x282848){if(_0x282848){if(_0x282848[_0x24fc('0xe7')]){return _0x337fad['status'](0x193)[_0x24fc('0x33')]({'status':0x193,'message':_0x24fc('0xef')});}return db[_0x24fc('0xee')][_0x24fc('0xce')]({'where':{'id':_0x3c41c1[_0x24fc('0x52')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x337fad,null));}})[_0x24fc('0x24')](function(_0x2cbaa1){if(_0x2cbaa1){var _0xaab85=_0x2cbaa1[_0x24fc('0xf0')]!==null;var _0x42d3ae=path['join'](config[_0x24fc('0xf1')],_0x24fc('0xf2'));if(_0xaab85){_0x42d3ae=path[_0x24fc('0xf3')](_0x42d3ae,_0x24fc('0xf4'));}var _0xc73868=path[_0x24fc('0xf3')](_0x42d3ae,_0x2cbaa1[_0x24fc('0xf5')]);return _0x337fad[_0x24fc('0xf6')](_0xc73868);}})[_0x24fc('0x2f')](handleError(_0x337fad,null));};exports['close']=function(_0x3f0da7,_0x36f9d2){var _0x50a4c5=null;var _0x299fd8=null;var _0x5d01fa=null;var _0x92d51d=null;if(_0x3f0da7[_0x24fc('0x42')]['id']){delete _0x3f0da7['body']['id'];}if(_0x3f0da7['body'][_0x24fc('0xf7')]){_0x92d51d=path['join'](config[_0x24fc('0xf1')],_0x24fc('0xf8'),util[_0x24fc('0xf9')](_0x24fc('0xfa'),Date['now']()));_0x3f0da7[_0x24fc('0x42')][_0x24fc('0xfb')]=_0x92d51d;}return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x3f0da7[_0x24fc('0xc8')]['id']},'include':[{'model':db[_0x24fc('0xde')],'as':_0x24fc('0xfc'),'include':[{'model':db[_0x24fc('0xfd')],'as':_0x24fc('0xfd')}]}]})[_0x24fc('0x24')](handleEntityNotFound(_0x36f9d2,null))[_0x24fc('0x24')](saveUpdates(_0x3f0da7[_0x24fc('0x42')],null))[_0x24fc('0x24')](function(_0x210bc5){if(_0x210bc5){_0x50a4c5=_0x210bc5;return db[_0x24fc('0xfe')][_0x24fc('0x77')]({'where':{'id':_0x50a4c5[_0x24fc('0xa6')]}});}})[_0x24fc('0x24')](function(_0x4dbbf1){if(_0x4dbbf1){_0x5d01fa=_0x4dbbf1;return db[_0x24fc('0xe2')][_0x24fc('0x77')]({'where':{'id':_0x50a4c5[_0x24fc('0x82')]}});}})[_0x24fc('0x24')](function(_0x61a50b){if(_0x61a50b){_0x299fd8=_0x61a50b;if(_0x92d51d){var _0x282e8c=null;for(var _0x47637c=0x1;_0x47637c<_0x50a4c5[_0x24fc('0xfc')]['length'];++_0x47637c){_0x282e8c=_0x50a4c5[_0x24fc('0xfc')][_0x47637c];var _0x36788c=_0x282e8c[_0x24fc('0x87')]?util['format'](_0x24fc('0xff'),_0x5d01fa[_0x24fc('0x100')],_0x282e8c[_0x24fc('0x87')]):_0x24fc('0x101');var _0x1bbfe1=_0x3f0da7[_0x24fc('0x42')][_0x24fc('0x102')]||util[_0x24fc('0xf9')]('%s%d','Visitor',_0x282e8c[_0x24fc('0x82')]);switch(_0x5d01fa['agentIdentifier']){case _0x24fc('0x103'):_0x36788c=_0x282e8c[_0x24fc('0x87')]?util[_0x24fc('0xf9')](_0x24fc('0xff'),_0x5d01fa[_0x24fc('0x100')],_0x282e8c[_0x24fc('0x87')]):_0x24fc('0x101');break;case'agent_alias':_0x36788c=_0x282e8c[_0x24fc('0x87')]?_0x282e8c[_0x24fc('0xfd')][_0x24fc('0x104')]||_0x282e8c['User'][_0x24fc('0x48')]:_0x24fc('0x101');break;case _0x24fc('0x105'):_0x36788c=_0x282e8c['UserId']?_0x282e8c[_0x24fc('0xfd')][_0x24fc('0x48')]:_0x24fc('0x101');break;default:_0x36788c=_0x282e8c[_0x24fc('0x87')]?util[_0x24fc('0xf9')](_0x24fc('0xff'),_0x5d01fa[_0x24fc('0x100')],_0x282e8c[_0x24fc('0x87')]):_0x24fc('0x101');}var _0x3f1c36=util['format']('[%s]\x20%s:\x20%s\x0a',moment(_0x282e8c[_0x24fc('0x8e')])[_0x24fc('0xf9')](_0x24fc('0x106')),_0x282e8c['direction']==='in'?_0x1bbfe1:_0x36788c,_0x282e8c[_0x24fc('0x42')]);if(!_0x282e8c[_0x24fc('0x107')]){fs[_0x24fc('0x108')](_0x92d51d,_0x3f1c36);}}return db[_0x24fc('0x109')][_0x24fc('0xce')]({'where':{'service':!![]},'include':[{'model':db[_0x24fc('0x10a')],'as':_0x24fc('0x10b'),'raw':!![]}]});}}})[_0x24fc('0x24')](function(_0x18ab28){if(_0x18ab28&&_0x18ab28[_0x24fc('0x10b')]&&_0x3f0da7[_0x24fc('0x42')]){var _0x14b0b5={'tls':{'rejectUnauthorized':![]}};if(_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x10c')]){_0x14b0b5[_0x24fc('0x10c')]=_0x18ab28['Smtp'][_0x24fc('0x10c')];}else{_0x14b0b5[_0x24fc('0x10d')]=_0x18ab28[_0x24fc('0x10b')]['host'];_0x14b0b5[_0x24fc('0x10e')]=_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x10e')];_0x14b0b5[_0x24fc('0x10f')]=_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x10f')];}if(_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x110')]){_0x14b0b5[_0x24fc('0x111')]={'user':_0x18ab28[_0x24fc('0x10b')][_0x24fc('0xa8')],'pass':_0x18ab28[_0x24fc('0x10b')]['pass']};}return respondWithRpcPromise(_0x24fc('0x112'),_0x24fc('0x113'),{'account':_0x14b0b5,'message':{'from':util[_0x24fc('0xf9')](_0x24fc('0x114'),_0x18ab28[_0x24fc('0x3e')],_0x18ab28[_0x24fc('0xd4')]||_0x18ab28['Smtp'][_0x24fc('0xa8')]),'to':_0x3f0da7[_0x24fc('0x42')][_0x24fc('0xf7')],'subject':_0x24fc('0x115'),'text':util[_0x24fc('0xf9')](_0x24fc('0x116'),_0x3f0da7[_0x24fc('0x42')][_0x24fc('0xf7')]),'attachments':[{'path':_0x92d51d}]}})[_0x24fc('0x24')](function(){return _0x50a4c5;})[_0x24fc('0x2f')](function(_0x51ecc4){console['error'](_0x51ecc4);});}else{return _0x50a4c5;}})['then'](respondWithStatusCode(_0x36f9d2,0xc8))[_0x24fc('0x2f')](handleError(_0x36f9d2,null));};exports[_0x24fc('0x117')]=function(_0x21d021,_0x15035b,_0xe5f00){return db[_0x24fc('0xde')][_0x24fc('0x77')]({'where':{'id':_0x21d021[_0x24fc('0xc8')]['id']}})['then'](handleEntityNotFound(_0x15035b,null))[_0x24fc('0x24')](function(_0x263597){if(_0x263597){return _0x263597['addMessage'](_0x21d021[_0x24fc('0x42')][_0x24fc('0x118')],_[_0x24fc('0x119')](_0x21d021[_0x24fc('0x42')],[_0x24fc('0x118'),'id'])||{});}})[_0x24fc('0x24')](respondWithResult(_0x15035b,null))[_0x24fc('0x2f')](handleError(_0x15035b,null));};exports['getMessages']=function(_0xda0576,_0x1a136f,_0x47833f){var _0x59d561={'raw':![],'where':{}};var _0x4614fe={};var _0x7a2cca={'count':0x0,'rows':[]};return db[_0x24fc('0x4e')][_0x24fc('0xce')]({'where':{'id':_0xda0576[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x1a136f,null))['then'](function(_0x14bd08){if(_0x14bd08){_0x4614fe[_0x24fc('0x54')]=_['keys'](db[_0x24fc('0xde')][_0x24fc('0x4f')]);_0x4614fe[_0x24fc('0x52')]=_[_0x24fc('0x88')](_0xda0576[_0x24fc('0x52')]);_0x4614fe[_0x24fc('0x5e')]=_[_0x24fc('0x53')](_0x4614fe[_0x24fc('0x54')],_0x4614fe[_0x24fc('0x52')]);_0x59d561[_0x24fc('0x56')]=_['intersection'](_0x4614fe['model'],qs[_0x24fc('0x55')](_0xda0576[_0x24fc('0x52')]['fields']));_0x59d561[_0x24fc('0x56')]=_0x59d561[_0x24fc('0x56')][_0x24fc('0x57')]?_0x59d561['attributes']:_0x4614fe[_0x24fc('0x54')];if(!_0xda0576[_0x24fc('0x52')][_0x24fc('0x58')](_0x24fc('0x59'))){_0x59d561['limit']=qs[_0x24fc('0x5a')](_0xda0576['query'][_0x24fc('0x5a')]);_0x59d561['offset']=qs[_0x24fc('0x34')](_0xda0576[_0x24fc('0x52')]['offset']);}_0x59d561[_0x24fc('0x5b')]=qs[_0x24fc('0x5c')](_0xda0576[_0x24fc('0x52')]['sort']);_0x59d561[_0x24fc('0x5d')]=qs[_0x24fc('0x5e')](_[_0x24fc('0x11a')](_0xda0576['query'],_0x4614fe[_0x24fc('0x5e')]));_0x59d561[_0x24fc('0x5d')][_0x24fc('0xc5')]=_0x14bd08['id'];if(_0xda0576['query'][_0x24fc('0x9a')]){_0x59d561[_0x24fc('0x5d')]=_[_0x24fc('0x41')](_0x59d561[_0x24fc('0x5d')],{'$or':_[_0x24fc('0x47')](_0x59d561[_0x24fc('0x56')],function(_0x6fa372){var _0x1e5616={};_0x1e5616[_0x6fa372]={'$like':'%'+_0xda0576[_0x24fc('0x52')]['filter']+'%'};return _0x1e5616;})});}if(_0xda0576['query'][_0x24fc('0x8f')]){var _0x59cd3c=_0xda0576[_0x24fc('0x52')]['$gte']['split'](',');var _0x235cd7={};_0x235cd7[_0x59cd3c[0x0]]={'$gte':moment(_0x59cd3c[0x1])['format'](_0x24fc('0x11b'))};_0x59d561[_0x24fc('0x5d')]=_[_0x24fc('0x41')](_0x59d561['where'],_0x235cd7);}_0x59d561=_[_0x24fc('0x41')]({},_0x59d561,_0xda0576[_0x24fc('0xca')]);return db[_0x24fc('0xde')][_0x24fc('0x36')]({'where':_0x59d561[_0x24fc('0x5d')]})[_0x24fc('0x24')](function(_0x3e6fda){_0x7a2cca[_0x24fc('0x36')]=_0x3e6fda;if(_0xda0576[_0x24fc('0x52')][_0x24fc('0xc9')]){_0x59d561[_0x24fc('0x11c')]=[{'all':!![]}];}return db[_0x24fc('0xde')][_0x24fc('0x11d')](_0x59d561);})[_0x24fc('0x24')](function(_0x4f5acf){_0x7a2cca[_0x24fc('0xc7')]=_0x4f5acf;return _0x7a2cca;});}})[_0x24fc('0x24')](respondWithFilteredResult(_0x1a136f,_0x59d561))[_0x24fc('0x2f')](handleError(_0x1a136f,null));};exports[_0x24fc('0x11e')]=function(_0x4ba8de,_0x53e48e,_0x50012d){var _0x1449f2={'where':{}},_0x43492b={},_0x487e55={'count':0x0,'rows':[]};return db[_0x24fc('0x4e')][_0x24fc('0xce')]({'where':{'id':_0x4ba8de['params']['id']}})['then'](handleEntityNotFound(_0x53e48e,null))[_0x24fc('0x24')](function(_0x5a41d8){if(_0x5a41d8){_0x43492b['model']=_['keys'](db[_0x24fc('0xde')][_0x24fc('0x4f')]);_0x43492b[_0x24fc('0x52')]=_[_0x24fc('0x88')](_0x4ba8de[_0x24fc('0x52')]);_0x43492b[_0x24fc('0x5e')]=_[_0x24fc('0x53')](_0x43492b[_0x24fc('0x54')],_0x43492b['query']);_0x1449f2[_0x24fc('0x56')]=_[_0x24fc('0x53')](_0x43492b[_0x24fc('0x54')],qs[_0x24fc('0x55')](_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x55')]));_0x1449f2[_0x24fc('0x56')]=_0x1449f2[_0x24fc('0x56')][_0x24fc('0x57')]?_0x1449f2[_0x24fc('0x56')]:_0x43492b[_0x24fc('0x54')];if(!_0x4ba8de[_0x24fc('0x52')]['hasOwnProperty'](_0x24fc('0x59'))){_0x1449f2[_0x24fc('0x5a')]=qs[_0x24fc('0x5a')](_0x4ba8de[_0x24fc('0x52')]['limit']);_0x1449f2[_0x24fc('0x34')]=qs[_0x24fc('0x34')](_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x34')]);}_0x1449f2['order']=qs['sort'](_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x5c')]);_0x1449f2[_0x24fc('0x5d')]=qs[_0x24fc('0x5e')](_['pick'](_0x4ba8de[_0x24fc('0x52')],_0x43492b['filters']));_0x1449f2[_0x24fc('0x5d')][_0x24fc('0xc5')]=_0x5a41d8['id'];if(_0x4ba8de[_0x24fc('0x52')]['filter']){_0x1449f2[_0x24fc('0x5d')]=_[_0x24fc('0x41')](_0x1449f2[_0x24fc('0x5d')],{'$or':_[_0x24fc('0x47')](_0x1449f2['attributes'],function(_0x4ae822){var _0x545714={};_0x545714[_0x4ae822]={'$like':'%'+_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x9a')]+'%'};return _0x545714;})});}_0x1449f2[_0x24fc('0x5d')]['secret']=![];if(_0x4ba8de[_0x24fc('0x52')]['id']){_0x1449f2[_0x24fc('0x5d')]['id']={'$gt':_0x4ba8de['query']['id']};}_0x1449f2=_[_0x24fc('0x41')]({},_0x1449f2,_0x4ba8de[_0x24fc('0xca')]);return db[_0x24fc('0xde')][_0x24fc('0x36')]({'where':_0x1449f2['where']})['then'](function(_0x12921f){_0x487e55[_0x24fc('0x36')]=_0x12921f;_0x1449f2['include']=[];if(_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x11f')]){_0x1449f2[_0x24fc('0x11c')]['push']({'model':db[_0x24fc('0xfd')],'as':_0x24fc('0xfd'),'attributes':['id','fullname','alias']});}if(_0x4ba8de[_0x24fc('0x52')][_0x24fc('0xc9')]){_0x1449f2[_0x24fc('0x11c')]=[{'all':!![]}];}return db[_0x24fc('0xde')][_0x24fc('0x11d')](_0x1449f2);})[_0x24fc('0x24')](function(_0x214f7d){_0x487e55[_0x24fc('0xc7')]=_0x214f7d;return _0x487e55;});}})[_0x24fc('0x24')](respondWithFilteredResult(_0x53e48e,_0x1449f2))[_0x24fc('0x2f')](handleError(_0x53e48e,null));};exports[_0x24fc('0x120')]=function(_0x1a7f96,_0x59d246,_0x281eed){return db[_0x24fc('0x4e')]['find']({'where':{'id':_0x1a7f96[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x59d246,null))['then'](function(_0x4e2c71){if(_0x4e2c71){return _0x4e2c71[_0x24fc('0x121')](_0x1a7f96['body'][_0x24fc('0x118')],_['omit'](_0x1a7f96[_0x24fc('0x42')],['ids','id'])||{})[_0x24fc('0x122')](function(){return db[_0x24fc('0x123')][_0x24fc('0x11d')]({'attributes':['id',_0x24fc('0x3e'),_0x24fc('0x61')],'where':{'id':_0x1a7f96[_0x24fc('0x42')][_0x24fc('0x118')]}});})[_0x24fc('0x24')](function(_0x3c5996){socket['emit']('chatInteractionTags:save',{'id':Number(_0x1a7f96['params']['id']),'tags':_0x3c5996||[]});return{'id':Number(_0x1a7f96[_0x24fc('0xc8')]['id']),'tags':_0x3c5996||[]};});}})[_0x24fc('0x24')](respondWithResult(_0x59d246,null))[_0x24fc('0x2f')](handleError(_0x59d246,null));};exports['removeTags']=function(_0x8dc31b,_0x5941bd,_0x4d73bb){return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x8dc31b[_0x24fc('0xc8')]['id']}})['then'](handleEntityNotFound(_0x5941bd,null))[_0x24fc('0x24')](function(_0x464057){if(_0x464057){return _0x464057[_0x24fc('0x124')](_0x8dc31b[_0x24fc('0x52')][_0x24fc('0x118')]);}})[_0x24fc('0x24')](respondWithStatusCode(_0x5941bd,null))['catch'](handleError(_0x5941bd,null));};exports[_0x24fc('0xf6')]=function(_0x9c34d9,_0x3e4f49){var _0x231f0b=moment()[_0x24fc('0x125')]()['toString']();var _0x34355e=path[_0x24fc('0xf3')](config[_0x24fc('0xf1')],_0x24fc('0x126'),_0x24fc('0x127'),'tmp');var _0x4d0910=path[_0x24fc('0xf3')](config[_0x24fc('0xf1')],'server','files',_0x24fc('0x128'));var _0x49025e=path[_0x24fc('0xf3')](_0x34355e,_0x231f0b);var _0x2c9a19=util['format'](_0x24fc('0x129'),_0x9c34d9['params']['id'],_0x231f0b);var _0x38ca24=path['join'](_0x34355e,_0x2c9a19);var _0x53a9aa=[];_0x53a9aa['push']({'model':db['User'],'as':_0x24fc('0xfd'),'attributes':['id',_0x24fc('0x48')],'raw':!![]});_0x53a9aa['push']({'model':db[_0x24fc('0xe2')],'as':_0x24fc('0x7b'),'attributes':['id',_0x24fc('0x12a'),_0x24fc('0x12b')],'raw':!![]});if(_0x9c34d9[_0x24fc('0x52')]['attachments']){_0x53a9aa[_0x24fc('0x4d')]({'model':db[_0x24fc('0xee')],'as':_0x24fc('0xee'),'raw':!![]});}var _0x2139e8=[{'model':db[_0x24fc('0xde')],'as':_0x24fc('0xfc'),'attributes':['id',_0x24fc('0x42'),'createdAt',_0x24fc('0x12c'),_0x24fc('0x107'),_0x24fc('0x95')],'include':_0x53a9aa}];_0x2139e8[_0x24fc('0x4d')]({'model':db['ChatWebsite'],'as':_0x24fc('0x12d'),'attributes':['id',_0x24fc('0x3e')]});_0x2139e8[_0x24fc('0x4d')]({'model':db[_0x24fc('0xfd')],'as':_0x24fc('0x12e'),'attributes':['id','fullname']});return db[_0x24fc('0x4e')]['find']({'where':{'id':_0x9c34d9[_0x24fc('0xc8')]['id']},'include':_0x2139e8})[_0x24fc('0x24')](handleEntityNotFound(_0x3e4f49,null))[_0x24fc('0x24')](function(_0x26179a){if(_0x26179a){var _0x6f1617=_0x26179a['get']({'plain':!![]});fs[_0x24fc('0x12f')](_0x49025e);var _0x57dfbc={'channel':'Chat','account':_0x6f1617['Account'][_0x24fc('0x3e')],'agent':_0x6f1617[_0x24fc('0x12e')]?_0x6f1617[_0x24fc('0x12e')][_0x24fc('0x48')]:_0x24fc('0x130'),'createdAt':moment(_0x6f1617[_0x24fc('0x8e')])[_0x24fc('0xf9')](_0x24fc('0x11b'))[_0x24fc('0xad')](),'closedAt':_0x6f1617[_0x24fc('0xe7')]?moment(_0x6f1617[_0x24fc('0x131')])[_0x24fc('0xf9')](_0x24fc('0x11b'))['toString']():'','disposition':_0x6f1617['disposition'],'chatInfo':{'browser':_0x6f1617['browserName'],'os':_0x6f1617['osName'],'referer':_0x6f1617['referer'],'customerIp':_0x6f1617[_0x24fc('0x132')],'customerPort':_0x6f1617[_0x24fc('0x133')]?_0x6f1617[_0x24fc('0x133')]:_0x24fc('0x130')},'messages':_(_0x6f1617['Messages'])['tail']()[_0x24fc('0x9a')]({'secret':![]})[_0x24fc('0x47')](function(_0x2ee9a6){if(_0x2ee9a6[_0x24fc('0xee')]){var _0x40409c=path['join'](_0x4d0910,_0x2ee9a6[_0x24fc('0xee')][_0x24fc('0xf5')]);if(fs[_0x24fc('0x134')](_0x40409c)){fs['createReadStream'](_0x40409c)['pipe'](fs[_0x24fc('0x135')](path[_0x24fc('0xf3')](_0x49025e,_0x2ee9a6[_0x24fc('0xee')][_0x24fc('0xf5')])));}}return{'date':moment(_0x2ee9a6[_0x24fc('0x8e')])[_0x24fc('0xf9')](_0x24fc('0x11b'))['toString'](),'sender':_0x2ee9a6[_0x24fc('0x12c')]===_0x24fc('0x136')?_0x2ee9a6[_0x24fc('0xfd')]?_0x2ee9a6[_0x24fc('0xfd')]['fullname']:'System':_0x2ee9a6['Contact']['firstName']+(_0x2ee9a6['Contact'][_0x24fc('0x12b')]?'\x20'+_0x2ee9a6[_0x24fc('0x7b')]['lastName']:''),'body':_0x2ee9a6[_0x24fc('0xee')]?_0x2ee9a6[_0x24fc('0xee')]['basename']:_0x2ee9a6[_0x24fc('0x42')],'direction':_0x2ee9a6['direction']===_0x24fc('0x136')?'A':'C','secret':_0x2ee9a6[_0x24fc('0x107')],'read':_0x2ee9a6[_0x24fc('0x95')],'attachment':_0x2ee9a6['Attachment']};})[_0x24fc('0x7e')]()};return ejs[_0x24fc('0x137')](path['join'](config[_0x24fc('0xf1')],'server','views',_0x24fc('0x138')),{'interaction':_0x57dfbc})[_0x24fc('0x24')](function(_0x24101d){var _0x5defce=path[_0x24fc('0xf3')](_0x49025e,_0x24fc('0x139')+_0x6f1617['id']+'-'+_0x231f0b+_0x24fc('0x13a'));var _0x187770={'path':_0x5defce,'channel':_0x24fc('0x13b'),'interactionId':_0x6f1617['id']};return pdf['createPdfFromHTML'](_0x24101d,_0x187770);})['then'](function(){return new BPromise(function(_0x3357cb,_0x2b633b){zipdir(_0x49025e,{'saveTo':_0x38ca24},function(_0x4ad7c4,_0x1d8b26){if(_0x4ad7c4)return _0x2b633b(_0x4ad7c4);return _0x3357cb(_0x1d8b26);});})[_0x24fc('0x24')](function(){return new BPromise(function(_0x4b0f8b,_0x59d408){rimraf(_0x49025e,function(_0x547f6b){if(_0x547f6b)_0x59d408(_0x547f6b);return _0x4b0f8b();});});})[_0x24fc('0x24')](function(){return _0x3e4f49[_0x24fc('0xf6')](_0x38ca24,_0x2c9a19,function(_0x3a2ffd){if(_0x3a2ffd){console[_0x24fc('0x13c')](_0x24fc('0x13d'),_0x3a2ffd);}else{fs[_0x24fc('0x13e')](_0x38ca24);}});});});}else{return _0x3e4f49[_0x24fc('0x30')](0xc8);}})['catch'](handleError(_0x3e4f49,null));};
\ No newline at end of file
index a3cb1ba..ca04ec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0071=['then','setDataValue','Users','map','findAll','emit','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove','getUsers'];(function(_0x1b3852,_0x433d0e){var _0x2c8f2c=function(_0x3db1b0){while(--_0x3db1b0){_0x1b3852['push'](_0x1b3852['shift']());}};_0x2c8f2c(++_0x433d0e);}(_0x0071,0x1b1));var _0x1007=function(_0xbf60c7,_0x1a744b){_0xbf60c7=_0xbf60c7-0x0;var _0x4c14ab=_0x0071[_0xbf60c7];return _0x4c14ab;};'use strict';var EventEmitter=require(_0x1007('0x0'));var ChatInteraction=require(_0x1007('0x1'))['db'][_0x1007('0x2')];var ChatMessage=require(_0x1007('0x1'))['db'][_0x1007('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x1007('0x4')](0x0);var events={'afterCreate':_0x1007('0x5'),'afterUpdate':_0x1007('0x6'),'afterDestroy':_0x1007('0x7')};function emitEvent(_0x139893){return function(_0x4051a6,_0x1bc80e,_0x245ce5){_0x4051a6[_0x1007('0x8')]({'attributes':['id'],'raw':!![]})[_0x1007('0x9')](function(_0x2e609e){_0x4051a6[_0x1007('0xa')](_0x1007('0xb'),_0x2e609e[_0x1007('0xc')](function(_0x24de0c){return{'id':_0x24de0c['id']};}));return ChatMessage[_0x1007('0xd')]({'where':{'ChatInteractionId':_0x4051a6['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1007('0x9')](function(_0x2cb19d){_0x4051a6[_0x1007('0xa')]('unreadMessages',_0x2cb19d['length']);ChatInteractionEvents['emit'](_0x139893+':'+_0x4051a6['id'],_0x4051a6);ChatInteractionEvents[_0x1007('0xe')](_0x139893,_0x4051a6);_0x245ce5(null);})['catch'](_0x245ce5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0x1007('0xf')](e,emitEvent(event));}}module[_0x1007('0x10')]=ChatInteractionEvents;
\ No newline at end of file
+var _0xe35a=['emit','catch','hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','save','update','remove','setDataValue','Users','map','findAll','unreadMessages','length'];(function(_0x5781b7,_0xc6fd47){var _0x16cd32=function(_0x4591f4){while(--_0x4591f4){_0x5781b7['push'](_0x5781b7['shift']());}};_0x16cd32(++_0xc6fd47);}(_0xe35a,0x169));var _0xae35=function(_0x55e743,_0xd9c53b){_0x55e743=_0x55e743-0x0;var _0x3f77d5=_0xe35a[_0x55e743];return _0x3f77d5;};'use strict';var EventEmitter=require(_0xae35('0x0'));var ChatInteraction=require(_0xae35('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xae35('0x1'))['db'][_0xae35('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xae35('0x3')](0x0);var events={'afterCreate':_0xae35('0x4'),'afterUpdate':_0xae35('0x5'),'afterDestroy':_0xae35('0x6')};function emitEvent(_0x471e9f){return function(_0x16b99c,_0x1e081f,_0x5ba8de){_0x16b99c['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x566a21){_0x16b99c[_0xae35('0x7')](_0xae35('0x8'),_0x566a21[_0xae35('0x9')](function(_0x566102){return{'id':_0x566102['id']};}));return ChatMessage[_0xae35('0xa')]({'where':{'ChatInteractionId':_0x16b99c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4f2573){_0x16b99c[_0xae35('0x7')](_0xae35('0xb'),_0x4f2573[_0xae35('0xc')]);ChatInteractionEvents['emit'](_0x471e9f+':'+_0x16b99c['id'],_0x16b99c);ChatInteractionEvents[_0xae35('0xd')](_0x471e9f,_0x16b99c);_0x5ba8de(null);})[_0xae35('0xe')](_0x5ba8de(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0xae35('0xf')](e,emitEvent(event));}}module[_0xae35('0x10')]=ChatInteractionEvents;
\ No newline at end of file
index 879c6af..ef63c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc2=['closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports'];(function(_0x3e2b4b,_0x25d3c7){var _0x11a501=function(_0x79be10){while(--_0x79be10){_0x3e2b4b['push'](_0x3e2b4b['shift']());}};_0x11a501(++_0x25d3c7);}(_0xdfc2,0x100));var _0x2dfc=function(_0x3855bd,_0x3983c1){_0x3855bd=_0x3855bd-0x0;var _0x5ddf0b=_0xdfc2[_0x3855bd];return _0x5ddf0b;};'use strict';var _=require(_0x2dfc('0x0'));var util=require(_0x2dfc('0x1'));var logger=require(_0x2dfc('0x2'))(_0x2dfc('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2dfc('0x4'));var fs=require('fs');var path=require(_0x2dfc('0x5'));var rimraf=require(_0x2dfc('0x6'));var config=require(_0x2dfc('0x7'));var attributes=require(_0x2dfc('0x8'));module[_0x2dfc('0x9')]=function(_0x267385,_0x4e4a32){return _0x267385['define']('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1e2799,_0x2aea92,_0x1c5f7e){if(_0x1e2799['changed'](_0x2dfc('0xa'))){_0x1e2799['closedAt']=moment()[_0x2dfc('0xb')](_0x2dfc('0xc'));}_0x1c5f7e(null,_0x1e2799);}},'charset':'utf8mb4','collate':_0x2dfc('0xd')});};
\ No newline at end of file
+var _0x8af2=['changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions'];(function(_0x590a38,_0x2bc65c){var _0xf36626=function(_0x551cd1){while(--_0x551cd1){_0x590a38['push'](_0x590a38['shift']());}};_0xf36626(++_0x2bc65c);}(_0x8af2,0xc4));var _0x28af=function(_0xb7f655,_0x230280){_0xb7f655=_0xb7f655-0x0;var _0xda39b7=_0x8af2[_0xb7f655];return _0xda39b7;};'use strict';var _=require('lodash');var util=require(_0x28af('0x0'));var logger=require(_0x28af('0x1'))(_0x28af('0x2'));var moment=require(_0x28af('0x3'));var BPromise=require(_0x28af('0x4'));var rp=require(_0x28af('0x5'));var fs=require('fs');var path=require(_0x28af('0x6'));var rimraf=require('rimraf');var config=require(_0x28af('0x7'));var attributes=require(_0x28af('0x8'));module[_0x28af('0x9')]=function(_0x1ea1e2,_0x12be5){return _0x1ea1e2[_0x28af('0xa')](_0x28af('0xb'),attributes,{'tableName':_0x28af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x152586,_0x331ab0,_0x5ee2cf){if(_0x152586[_0x28af('0xd')](_0x28af('0xe'))){_0x152586['closedAt']=moment()[_0x28af('0xf')](_0x28af('0x10'));}_0x5ee2cf(null,_0x152586);}},'charset':_0x28af('0x11'),'collate':_0x28af('0x12')});};
\ No newline at end of file
index 45f1d9c..485e41a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35d2=['../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','stringify','code','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','attributes','limit','find','addTags','ids','omit','AddTags','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x35d2,0x118));var _0x235d=function(_0x2705c6,_0x54f9b1){_0x2705c6=_0x2705c6-0x0;var _0x28737c=_0x35d2[_0x2705c6];return _0x28737c;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x235d('0x0'));var rs=require(_0x235d('0x1'));var fs=require('fs');var Redis=require(_0x235d('0x2'));var db=require(_0x235d('0x3'))['db'];var utils=require(_0x235d('0x4'));var logger=require(_0x235d('0x5'))(_0x235d('0x6'));var config=require(_0x235d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x235d('0x8')][_0x235d('0x9')]({'port':0x232a});config['redis']=_[_0x235d('0xa')](config[_0x235d('0xb')],{'host':_0x235d('0xc'),'port':0x18eb});var socket=require(_0x235d('0xd'))(new Redis(config[_0x235d('0xb')]));require('./chatInteraction.socket')[_0x235d('0xe')](socket);function respondWithRpcPromise(_0x36b261,_0x3f4c70,_0x1f5c7b){return new BPromise(function(_0x42b9ca,_0x4d4443){return client[_0x235d('0xf')](_0x36b261,_0x1f5c7b)[_0x235d('0x10')](function(_0x363d37){logger[_0x235d('0x11')]('ChatInteraction,\x20%s,\x20%s',_0x3f4c70,_0x235d('0x12'));logger[_0x235d('0x13')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x3f4c70,_0x235d('0x12'),JSON[_0x235d('0x14')](_0x363d37));if(_0x363d37['error']){if(_0x363d37['error'][_0x235d('0x15')]===0x1f4){logger[_0x235d('0x16')](_0x235d('0x17'),_0x3f4c70,_0x363d37['error'][_0x235d('0x18')]);return _0x4d4443(_0x363d37[_0x235d('0x16')][_0x235d('0x18')]);}logger[_0x235d('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x3f4c70,_0x363d37['error']['message']);return _0x42b9ca(_0x363d37[_0x235d('0x16')][_0x235d('0x18')]);}else{logger[_0x235d('0x11')](_0x235d('0x17'),_0x3f4c70,_0x235d('0x12'));_0x42b9ca(_0x363d37[_0x235d('0x19')][_0x235d('0x18')]);}})[_0x235d('0x1a')](function(_0x1b319b){logger[_0x235d('0x16')](_0x235d('0x17'),_0x3f4c70,_0x1b319b);_0x4d4443(_0x1b319b);});});}exports[_0x235d('0x1b')]=function(_0x355122){var _0x3a8944=this;return new Promise(function(_0x310bf4,_0x19d491){return db[_0x235d('0x1c')][_0x235d('0x1d')](_0x355122[_0x235d('0x1e')],{'raw':_0x355122[_0x235d('0x1f')]?_0x355122[_0x235d('0x1f')][_0x235d('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x355122['options']?_0x355122[_0x235d('0x1f')][_0x235d('0x21')]||null:null,'attributes':_0x355122['options']?_0x355122[_0x235d('0x1f')][_0x235d('0x22')]||null:null,'limit':_0x355122[_0x235d('0x1f')]?_0x355122[_0x235d('0x1f')][_0x235d('0x23')]||null:null})['then'](function(_0x507d84){logger[_0x235d('0x11')](_0x235d('0x1b'),_0x355122);logger[_0x235d('0x13')]('UpdateChatInteraction',_0x355122,JSON[_0x235d('0x14')](_0x507d84));_0x310bf4(_0x507d84);})[_0x235d('0x1a')](function(_0x1c80c6){logger[_0x235d('0x16')]('UpdateChatInteraction',_0x1c80c6[_0x235d('0x18')],_0x355122);_0x19d491(_0x3a8944['error'](0x1f4,_0x1c80c6[_0x235d('0x18')]));});});};exports['AddTagsToChatInteraction']=function(_0x5e33ce){return new Promise(function(_0x5cc660,_0x11179c){return db['ChatInteraction'][_0x235d('0x24')]({'where':_0x5e33ce['options']?_0x5e33ce[_0x235d('0x1f')][_0x235d('0x21')]||null:null})[_0x235d('0x10')](function(_0x586a97){if(_0x586a97){return _0x586a97[_0x235d('0x25')](_0x5e33ce['body'][_0x235d('0x26')],_[_0x235d('0x27')](_0x5e33ce[_0x235d('0x1e')],[_0x235d('0x26'),'id'])||{});}})['spread'](function(_0x144a3b){logger[_0x235d('0x11')](_0x235d('0x28'),_0x5e33ce);logger['debug'](_0x235d('0x28'),_0x5e33ce,JSON[_0x235d('0x14')](_0x144a3b));_0x5cc660(_0x144a3b);})[_0x235d('0x1a')](function(_0x370cce){logger[_0x235d('0x16')](_0x235d('0x28'),_0x370cce[_0x235d('0x18')],_0x5e33ce);_0x11179c(_this[_0x235d('0x16')](0x1f4,_0x370cce['message']));});});};
\ No newline at end of file
+var _0xcedf=['client','http','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatInteraction,\x20%s,\x20%s','info','result','UpdateChatInteraction','ChatInteraction','body','options','raw','where','attributes','then','catch','AddTagsToChatInteraction','find','addTags','omit','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x13ebf1,_0x47b024){var _0x2f925d=function(_0x3d3d60){while(--_0x3d3d60){_0x13ebf1['push'](_0x13ebf1['shift']());}};_0x2f925d(++_0x47b024);}(_0xcedf,0x11d));var _0xfced=function(_0x19bf15,_0x2a69f8){_0x19bf15=_0x19bf15-0x0;var _0x2feaa2=_0xcedf[_0x19bf15];return _0x2feaa2;};'use strict';var _=require(_0xfced('0x0'));var util=require(_0xfced('0x1'));var moment=require(_0xfced('0x2'));var BPromise=require(_0xfced('0x3'));var rs=require(_0xfced('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfced('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfced('0x6'))(_0xfced('0x7'));var config=require(_0xfced('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfced('0x9')][_0xfced('0xa')]({'port':0x232a});config['redis']=_[_0xfced('0xb')](config[_0xfced('0xc')],{'host':_0xfced('0xd'),'port':0x18eb});var socket=require(_0xfced('0xe'))(new Redis(config[_0xfced('0xc')]));require(_0xfced('0xf'))[_0xfced('0x10')](socket);function respondWithRpcPromise(_0x2c6abc,_0x383573,_0x252c76){return new BPromise(function(_0x1c4502,_0x2ab0af){return client['request'](_0x2c6abc,_0x252c76)['then'](function(_0x4a0159){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x383573,_0xfced('0x11'));logger[_0xfced('0x12')](_0xfced('0x13'),_0x383573,'request\x20sent',JSON[_0xfced('0x14')](_0x4a0159));if(_0x4a0159[_0xfced('0x15')]){if(_0x4a0159[_0xfced('0x15')]['code']===0x1f4){logger[_0xfced('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x383573,_0x4a0159['error']['message']);return _0x2ab0af(_0x4a0159[_0xfced('0x15')][_0xfced('0x16')]);}logger[_0xfced('0x15')](_0xfced('0x17'),_0x383573,_0x4a0159[_0xfced('0x15')]['message']);return _0x1c4502(_0x4a0159[_0xfced('0x15')]['message']);}else{logger[_0xfced('0x18')]('ChatInteraction,\x20%s,\x20%s',_0x383573,_0xfced('0x11'));_0x1c4502(_0x4a0159[_0xfced('0x19')]['message']);}})['catch'](function(_0x5e38ed){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x383573,_0x5e38ed);_0x2ab0af(_0x5e38ed);});});}exports[_0xfced('0x1a')]=function(_0x16e92d){var _0x19828b=this;return new Promise(function(_0x1ef7b9,_0x1e200c){return db[_0xfced('0x1b')]['update'](_0x16e92d[_0xfced('0x1c')],{'raw':_0x16e92d[_0xfced('0x1d')]?_0x16e92d['options'][_0xfced('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16e92d[_0xfced('0x1d')]?_0x16e92d[_0xfced('0x1d')][_0xfced('0x1f')]||null:null,'attributes':_0x16e92d[_0xfced('0x1d')]?_0x16e92d[_0xfced('0x1d')][_0xfced('0x20')]||null:null,'limit':_0x16e92d[_0xfced('0x1d')]?_0x16e92d[_0xfced('0x1d')]['limit']||null:null})[_0xfced('0x21')](function(_0x3e559c){logger['info'](_0xfced('0x1a'),_0x16e92d);logger[_0xfced('0x12')](_0xfced('0x1a'),_0x16e92d,JSON[_0xfced('0x14')](_0x3e559c));_0x1ef7b9(_0x3e559c);})[_0xfced('0x22')](function(_0x22bd37){logger['error'](_0xfced('0x1a'),_0x22bd37[_0xfced('0x16')],_0x16e92d);_0x1e200c(_0x19828b[_0xfced('0x15')](0x1f4,_0x22bd37[_0xfced('0x16')]));});});};exports[_0xfced('0x23')]=function(_0x128872){return new Promise(function(_0x368f17,_0x15941a){return db['ChatInteraction'][_0xfced('0x24')]({'where':_0x128872[_0xfced('0x1d')]?_0x128872['options'][_0xfced('0x1f')]||null:null})[_0xfced('0x21')](function(_0x5bbe2f){if(_0x5bbe2f){return _0x5bbe2f[_0xfced('0x25')](_0x128872['body']['ids'],_[_0xfced('0x26')](_0x128872['body'],[_0xfced('0x27'),'id'])||{});}})[_0xfced('0x28')](function(_0x5e8d90){logger['info'](_0xfced('0x29'),_0x128872);logger[_0xfced('0x12')](_0xfced('0x29'),_0x128872,JSON[_0xfced('0x14')](_0x5e8d90));_0x368f17(_0x5e8d90);})[_0xfced('0x22')](function(_0x4c5a32){logger[_0xfced('0x15')](_0xfced('0x29'),_0x4c5a32['message'],_0x128872);_0x15941a(_this['error'](0x1f4,_0x4c5a32[_0xfced('0x16')]));});});};
\ No newline at end of file
index ab857ca..e5dc68b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2086=['./chatInteraction.events','save','update','emit','removeListener','length','chatInteraction:'];(function(_0x5e327e,_0x224abf){var _0x326561=function(_0x43ca91){while(--_0x43ca91){_0x5e327e['push'](_0x5e327e['shift']());}};_0x326561(++_0x224abf);}(_0x2086,0x165));var _0x6208=function(_0x5c0404,_0x385870){_0x5c0404=_0x5c0404-0x0;var _0xc74be4=_0x2086[_0x5c0404];return _0xc74be4;};'use strict';var ChatInteractionEvents=require(_0x6208('0x0'));var events=[_0x6208('0x1'),'remove',_0x6208('0x2')];function createListener(_0x366656,_0x5adb71){return function(_0x52df5d){_0x5adb71[_0x6208('0x3')](_0x366656,_0x52df5d);};}function removeListener(_0x89822e,_0x11f438){return function(){ChatInteractionEvents[_0x6208('0x4')](_0x89822e,_0x11f438);};}exports['register']=function(_0x3e4d8c){for(var _0x3c3573=0x0,_0x17b6ef=events[_0x6208('0x5')];_0x3c3573<_0x17b6ef;_0x3c3573++){var _0x5bbcbd=events[_0x3c3573];var _0x311ec3=createListener(_0x6208('0x6')+_0x5bbcbd,_0x3e4d8c);ChatInteractionEvents['on'](_0x5bbcbd,_0x311ec3);}};
\ No newline at end of file
+var _0x88eb=['remove','emit','removeListener','register','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x3bcce8,_0x146a9b){var _0x1bacf1=function(_0x11a055){while(--_0x11a055){_0x3bcce8['push'](_0x3bcce8['shift']());}};_0x1bacf1(++_0x146a9b);}(_0x88eb,0x76));var _0xb88e=function(_0x18c50c,_0x14230b){_0x18c50c=_0x18c50c-0x0;var _0x4a8711=_0x88eb[_0x18c50c];return _0x4a8711;};'use strict';var ChatInteractionEvents=require(_0xb88e('0x0'));var events=[_0xb88e('0x1'),_0xb88e('0x2'),'update'];function createListener(_0x2ef77f,_0x5ed101){return function(_0x307c95){_0x5ed101[_0xb88e('0x3')](_0x2ef77f,_0x307c95);};}function removeListener(_0x18d953,_0x44dfaa){return function(){ChatInteractionEvents[_0xb88e('0x4')](_0x18d953,_0x44dfaa);};}exports[_0xb88e('0x5')]=function(_0x442da8){for(var _0x14854b=0x0,_0xf77ae2=events[_0xb88e('0x6')];_0x14854b<_0xf77ae2;_0x14854b++){var _0x453dc5=events[_0x14854b];var _0x102017=createListener(_0xb88e('0x7')+_0x453dc5,_0x442da8);ChatInteractionEvents['on'](_0x453dc5,_0x102017);}};
\ No newline at end of file
index 74e059c..5513f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1852=['/:id','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','download','create','post','/:id/vidaoo','createVidaooSession','diskStorage','join','server/files/attachments/','format','%s-%s','replace','/:id/attachment_upload','single','attachmentUpload','/:id/tags','tracked','addTags','put','chat','update','/:id/custom_update','/:id/abandon','abandon','close','delete','chatinteraction:destroy','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x52684f,_0xff73fc){var _0x4a55f0=function(_0x8ce37c){while(--_0x8ce37c){_0x52684f['push'](_0x52684f['shift']());}};_0x4a55f0(++_0xff73fc);}(_0x1852,0x156));var _0x2185=function(_0x5100d1,_0x5c6126){_0x5100d1=_0x5100d1-0x0;var _0x535de9=_0x1852[_0x5100d1];return _0x535de9;};'use strict';var multer=require(_0x2185('0x0'));var util=require(_0x2185('0x1'));var path=require('path');var timeout=require(_0x2185('0x2'));var express=require(_0x2185('0x3'));var router=express[_0x2185('0x4')]();var fs_extra=require(_0x2185('0x5'));var auth=require(_0x2185('0x6'));var interaction=require(_0x2185('0x7'));var config=require(_0x2185('0x8'));var controller=require(_0x2185('0x9'));router['get']('/',auth[_0x2185('0xa')](),controller[_0x2185('0xb')]);router[_0x2185('0xc')](_0x2185('0xd'),auth[_0x2185('0xa')](),controller[_0x2185('0xe')]);router[_0x2185('0xc')](_0x2185('0xf'),auth['isChatInteractionAuthorized'](),controller[_0x2185('0x10')]);router['get'](_0x2185('0x11'),auth[_0x2185('0x12')](),controller[_0x2185('0x13')]);router[_0x2185('0xc')](_0x2185('0x14'),auth['isAuthenticated'](),controller[_0x2185('0x15')]);router[_0x2185('0xc')](_0x2185('0x16'),auth[_0x2185('0x12')](),controller['getMyMessages']);router[_0x2185('0xc')]('/:id/download',auth[_0x2185('0xa')](),controller[_0x2185('0x17')]);router['post']('/',auth[_0x2185('0xa')](),controller[_0x2185('0x18')]);router[_0x2185('0x19')](_0x2185('0x1a'),auth[_0x2185('0xa')](),controller[_0x2185('0x1b')]);var upload=multer({'storage':multer[_0x2185('0x1c')]({'destination':function(_0x54319c,_0x343cc0,_0x510f0d){_0x510f0d(null,path[_0x2185('0x1d')](config['root'],_0x2185('0x1e')));},'filename':function(_0x1e8970,_0x39b3b1,_0x9a3787){_0x9a3787(null,util[_0x2185('0x1f')](_0x2185('0x20'),Date['now'](),_0x39b3b1['originalname'][_0x2185('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0x2185('0x22'),upload[_0x2185('0x23')]('file'),controller[_0x2185('0x24')]);router[_0x2185('0x19')](_0x2185('0x14'),auth[_0x2185('0x12')](),controller['addMessage']);router[_0x2185('0x19')](_0x2185('0x25'),auth[_0x2185('0xa')](),interaction[_0x2185('0x26')]('chat','chatinteraction:addtags'),controller[_0x2185('0x27')]);router[_0x2185('0x28')](_0x2185('0xf'),auth[_0x2185('0xa')](),interaction[_0x2185('0x26')](_0x2185('0x29'),'chatinteraction:update'),controller[_0x2185('0x2a')]);router[_0x2185('0x28')](_0x2185('0x2b'),controller['customUpdate']);router['put'](_0x2185('0x2c'),auth['isChatInteractionAuthorized'](),controller[_0x2185('0x2d')]);router[_0x2185('0x28')]('/:id/close',controller[_0x2185('0x2e')]);router[_0x2185('0x2f')](_0x2185('0xf'),auth[_0x2185('0xa')](),interaction[_0x2185('0x26')](_0x2185('0x29'),_0x2185('0x30')),controller['destroy']);router[_0x2185('0x2f')](_0x2185('0x25'),auth['isAuthenticated'](),controller[_0x2185('0x31')]);module[_0x2185('0x32')]=router;
\ No newline at end of file
+var _0x7742=['attachmentDownload','/:id/messages','getMessages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','join','root','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','tracked','chat','chatinteraction:addtags','/:id/custom_update','customUpdate','/:id/abandon','abandon','put','delete','destroy','/:id/tags','removeTags','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','/describe','describe','get','/:id','isChatInteractionAuthorized','show','/:id/attachment_download'];(function(_0x58dbff,_0x597def){var _0x2a32d2=function(_0x1eed91){while(--_0x1eed91){_0x58dbff['push'](_0x58dbff['shift']());}};_0x2a32d2(++_0x597def);}(_0x7742,0x83));var _0x2774=function(_0x2ff861,_0x5f32c9){_0x2ff861=_0x2ff861-0x0;var _0x52fe98=_0x7742[_0x2ff861];return _0x52fe98;};'use strict';var multer=require(_0x2774('0x0'));var util=require('util');var path=require(_0x2774('0x1'));var timeout=require(_0x2774('0x2'));var express=require(_0x2774('0x3'));var router=express[_0x2774('0x4')]();var fs_extra=require(_0x2774('0x5'));var auth=require(_0x2774('0x6'));var interaction=require(_0x2774('0x7'));var config=require(_0x2774('0x8'));var controller=require(_0x2774('0x9'));router['get']('/',auth[_0x2774('0xa')](),controller[_0x2774('0xb')]);router['get'](_0x2774('0xc'),auth[_0x2774('0xa')](),controller[_0x2774('0xd')]);router[_0x2774('0xe')](_0x2774('0xf'),auth[_0x2774('0x10')](),controller[_0x2774('0x11')]);router[_0x2774('0xe')](_0x2774('0x12'),auth[_0x2774('0x10')](),controller[_0x2774('0x13')]);router[_0x2774('0xe')](_0x2774('0x14'),auth[_0x2774('0xa')](),controller[_0x2774('0x15')]);router[_0x2774('0xe')]('/:id/my_messages',auth[_0x2774('0x10')](),controller['getMyMessages']);router[_0x2774('0xe')](_0x2774('0x16'),auth[_0x2774('0xa')](),controller[_0x2774('0x17')]);router[_0x2774('0x18')]('/',auth['isAuthenticated'](),controller[_0x2774('0x19')]);router[_0x2774('0x18')](_0x2774('0x1a'),auth[_0x2774('0xa')](),controller[_0x2774('0x1b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x412183,_0x3ca785,_0x1826be){_0x1826be(null,path[_0x2774('0x1c')](config[_0x2774('0x1d')],'server/files/attachments/'));},'filename':function(_0x234cf8,_0x79dfaa,_0x7b6c51){_0x7b6c51(null,util['format'](_0x2774('0x1e'),Date[_0x2774('0x1f')](),_0x79dfaa[_0x2774('0x20')][_0x2774('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2774('0x18')](_0x2774('0x22'),upload[_0x2774('0x23')](_0x2774('0x24')),controller[_0x2774('0x25')]);router[_0x2774('0x18')](_0x2774('0x14'),auth['isChatInteractionAuthorized'](),controller['addMessage']);router[_0x2774('0x18')]('/:id/tags',auth[_0x2774('0xa')](),interaction[_0x2774('0x26')](_0x2774('0x27'),_0x2774('0x28')),controller['addTags']);router['put'](_0x2774('0xf'),auth[_0x2774('0xa')](),interaction[_0x2774('0x26')]('chat','chatinteraction:update'),controller['update']);router['put'](_0x2774('0x29'),controller[_0x2774('0x2a')]);router['put'](_0x2774('0x2b'),auth[_0x2774('0x10')](),controller[_0x2774('0x2c')]);router[_0x2774('0x2d')]('/:id/close',controller['close']);router[_0x2774('0x2e')](_0x2774('0xf'),auth['isAuthenticated'](),interaction[_0x2774('0x26')](_0x2774('0x27'),'chatinteraction:destroy'),controller[_0x2774('0x2f')]);router[_0x2774('0x2e')](_0x2774('0x30'),auth[_0x2774('0xa')](),controller[_0x2774('0x31')]);module['exports']=router;
\ No newline at end of file
index a26e26e..84a2bea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bee=['exports','medium','BOOLEAN','INTEGER','sequelize'];(function(_0x2ba612,_0x2bf4a6){var _0x369b4b=function(_0x2aa2f1){while(--_0x2aa2f1){_0x2ba612['push'](_0x2ba612['shift']());}};_0x369b4b(++_0x2bf4a6);}(_0x7bee,0x1f3));var _0xe7be=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x7bee[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0xe7be('0x0'));module[_0xe7be('0x1')]={'body':{'type':Sequelize['TEXT'](_0xe7be('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xe7be('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xe7be('0x4')]}};
\ No newline at end of file
+var _0x4ae4=['sequelize','exports','BOOLEAN','INTEGER'];(function(_0x11f1ff,_0x39ec23){var _0x1ecfa9=function(_0x51bd8b){while(--_0x51bd8b){_0x11f1ff['push'](_0x11f1ff['shift']());}};_0x1ecfa9(++_0x39ec23);}(_0x4ae4,0x1bc));var _0x44ae=function(_0x64bb04,_0x5f4f72){_0x64bb04=_0x64bb04-0x0;var _0x21f87d=_0x4ae4[_0x64bb04];return _0x21f87d;};'use strict';var Sequelize=require(_0x44ae('0x0'));module[_0x44ae('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x44ae('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x44ae('0x3')]}};
\ No newline at end of file
index 2c946ba..641d55e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e59=['localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','find','create','body','update','describe','messages','lastMessageAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','agent','admin','user','fullname','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','resourceId','push','createdAt','FromId','ToId','-createdAt','all','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0e59,0x1b0));var _0x90e5=function(_0x5403a3,_0x5ad112){_0x5403a3=_0x5403a3-0x0;var _0x55cd89=_0x0e59[_0x5403a3];return _0x55cd89;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x90e5('0x0'));var zipdir=require(_0x90e5('0x1'));var jsonpatch=require(_0x90e5('0x2'));var rp=require(_0x90e5('0x3'));var moment=require(_0x90e5('0x4'));var BPromise=require(_0x90e5('0x5'));var Mustache=require(_0x90e5('0x6'));var util=require(_0x90e5('0x7'));var path=require(_0x90e5('0x8'));var sox=require(_0x90e5('0x9'));var csv=require(_0x90e5('0xa'));var ejs=require(_0x90e5('0xb'));var fs=require('fs');var fs_extra=require(_0x90e5('0xc'));var _=require(_0x90e5('0xd'));var squel=require(_0x90e5('0xe'));var crypto=require(_0x90e5('0xf'));var jsforce=require(_0x90e5('0x10'));var deskjs=require(_0x90e5('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x90e5('0x12'));var authService=require(_0x90e5('0x13'));var qs=require(_0x90e5('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x90e5('0x15'));var logger=require(_0x90e5('0x16'))(_0x90e5('0x17'));var utils=require('../../config/utils');var config=require(_0x90e5('0x18'));var licenseUtil=require(_0x90e5('0x19'));var db=require(_0x90e5('0x1a'))['db'];config[_0x90e5('0x1b')]=_['defaults'](config[_0x90e5('0x1b')],{'host':_0x90e5('0x1c'),'port':0x18eb});var socket=require(_0x90e5('0x1d'))(new Redis(config[_0x90e5('0x1b')]));require('./chatInternalMessage.socket')['register'](socket);function respondWithStatusCode(_0x34add5,_0x3398ab){_0x3398ab=_0x3398ab||0xcc;return function(_0x291acb){if(_0x291acb){return _0x34add5[_0x90e5('0x1e')](_0x3398ab);}return _0x34add5[_0x90e5('0x1f')](_0x3398ab)[_0x90e5('0x20')]();};}function respondWithResult(_0x13cfca,_0x20ccf3){_0x20ccf3=_0x20ccf3||0xc8;return function(_0x2e47ff){if(_0x2e47ff){return _0x13cfca[_0x90e5('0x1f')](_0x20ccf3)[_0x90e5('0x21')](_0x2e47ff);}};}function respondWithFilteredResult(_0x4c1a08,_0x25056c){return function(_0xb5fba1){if(_0xb5fba1){var _0x1e1ad5=typeof _0x25056c[_0x90e5('0x22')]===_0x90e5('0x23')&&typeof _0x25056c[_0x90e5('0x24')]===_0x90e5('0x23');var _0x26e5d0=_0xb5fba1['count'];var _0xb5f656=_0x1e1ad5?0x0:_0x25056c[_0x90e5('0x22')];var _0x35513d=_0x1e1ad5?_0xb5fba1[_0x90e5('0x25')]:_0x25056c['offset']+_0x25056c[_0x90e5('0x24')];var _0x219749;if(_0x35513d>=_0x26e5d0){_0x35513d=_0x26e5d0;_0x219749=0xc8;}else{_0x219749=0xce;}_0x4c1a08[_0x90e5('0x1f')](_0x219749);return _0x4c1a08[_0x90e5('0x26')](_0x90e5('0x27'),_0xb5f656+'-'+_0x35513d+'/'+_0x26e5d0)[_0x90e5('0x21')](_0xb5fba1);}return null;};}function patchUpdates(_0x1f3abf){return function(_0x4e06eb){try{jsonpatch[_0x90e5('0x28')](_0x4e06eb,_0x1f3abf,!![]);}catch(_0x3d00e4){return BPromise[_0x90e5('0x29')](_0x3d00e4);}return _0x4e06eb[_0x90e5('0x2a')]();};}function saveUpdates(_0x555791,_0x443d10){return function(_0xaeb1ef){if(_0xaeb1ef){return _0xaeb1ef['update'](_0x555791)[_0x90e5('0x2b')](function(_0x3246cc){return _0x3246cc;});}return null;};}function removeEntity(_0x184daa,_0x1d8b5c){return function(_0xf2867f){if(_0xf2867f){return _0xf2867f[_0x90e5('0x2c')]()[_0x90e5('0x2b')](function(){_0x184daa[_0x90e5('0x1f')](0xcc)[_0x90e5('0x20')]();});}};}function handleEntityNotFound(_0x7d5ece,_0x1c3767){return function(_0x1596db){if(!_0x1596db){_0x7d5ece[_0x90e5('0x1e')](0x194);}return _0x1596db;};}function handleError(_0x169b20,_0x10b882){_0x10b882=_0x10b882||0x1f4;return function(_0x346688){logger[_0x90e5('0x2d')](_0x346688[_0x90e5('0x2e')]);if(_0x346688[_0x90e5('0x2f')]){delete _0x346688[_0x90e5('0x2f')];}_0x169b20['status'](_0x10b882)[_0x90e5('0x30')](_0x346688);};}exports[_0x90e5('0x31')]=function(_0x42d88e,_0x5c74ad){var _0x335e3a={},_0x29543f={},_0x539b30={'count':0x0,'rows':[]};var _0x434fb3=_[_0x90e5('0x32')](db[_0x90e5('0x33')][_0x90e5('0x34')],function(_0x49451a){return{'name':_0x49451a[_0x90e5('0x35')],'type':_0x49451a[_0x90e5('0x36')][_0x90e5('0x37')]};});_0x29543f['model']=_['map'](_0x434fb3,'name');_0x29543f[_0x90e5('0x38')]=_[_0x90e5('0x39')](_0x42d88e[_0x90e5('0x38')]);_0x29543f[_0x90e5('0x3a')]=_[_0x90e5('0x3b')](_0x29543f[_0x90e5('0x3c')],_0x29543f[_0x90e5('0x38')]);_0x335e3a[_0x90e5('0x3d')]=_['intersection'](_0x29543f[_0x90e5('0x3c')],qs['fields'](_0x42d88e[_0x90e5('0x38')][_0x90e5('0x3e')]));_0x335e3a[_0x90e5('0x3d')]=_0x335e3a[_0x90e5('0x3d')][_0x90e5('0x3f')]?_0x335e3a[_0x90e5('0x3d')]:_0x29543f[_0x90e5('0x3c')];if(!_0x42d88e[_0x90e5('0x38')]['hasOwnProperty'](_0x90e5('0x40'))){_0x335e3a['limit']=qs[_0x90e5('0x24')](_0x42d88e['query'][_0x90e5('0x24')]);_0x335e3a['offset']=qs['offset'](_0x42d88e[_0x90e5('0x38')][_0x90e5('0x22')]);}_0x335e3a[_0x90e5('0x41')]=qs['sort'](_0x42d88e[_0x90e5('0x38')][_0x90e5('0x42')]);_0x335e3a['where']=qs[_0x90e5('0x3a')](_['pick'](_0x42d88e[_0x90e5('0x38')],_0x29543f[_0x90e5('0x3a')]),_0x434fb3);if(_0x42d88e[_0x90e5('0x38')][_0x90e5('0x43')]){_0x335e3a[_0x90e5('0x44')]=_[_0x90e5('0x45')](_0x335e3a[_0x90e5('0x44')],{'$or':_[_0x90e5('0x32')](_0x434fb3,function(_0x5b1537){if(_0x5b1537[_0x90e5('0x36')]!==_0x90e5('0x46')){var _0x447c12={};_0x447c12[_0x5b1537[_0x90e5('0x2f')]]={'$like':'%'+_0x42d88e[_0x90e5('0x38')][_0x90e5('0x43')]+'%'};return _0x447c12;}})});}_0x335e3a=_[_0x90e5('0x45')]({},_0x335e3a,_0x42d88e['options']);var _0x4cb76a={'where':_0x335e3a[_0x90e5('0x44')]};return db[_0x90e5('0x33')]['count'](_0x4cb76a)['then'](function(_0x535694){_0x539b30[_0x90e5('0x25')]=_0x535694;if(_0x42d88e[_0x90e5('0x38')][_0x90e5('0x47')]){_0x335e3a[_0x90e5('0x48')]=[{'all':!![]}];}return db[_0x90e5('0x33')][_0x90e5('0x49')](_0x335e3a);})[_0x90e5('0x2b')](function(_0x968c1f){_0x539b30[_0x90e5('0x4a')]=_0x968c1f;return _0x539b30;})[_0x90e5('0x2b')](respondWithFilteredResult(_0x5c74ad,_0x335e3a))[_0x90e5('0x4b')](handleError(_0x5c74ad,null));};exports['show']=function(_0x4965fe,_0x582878){var _0x3b2c7d={'raw':!![],'where':{'id':_0x4965fe[_0x90e5('0x4c')]['id']}},_0x1a0b89={};_0x1a0b89[_0x90e5('0x3c')]=_['keys'](db[_0x90e5('0x33')]['rawAttributes']);_0x1a0b89[_0x90e5('0x38')]=_[_0x90e5('0x39')](_0x4965fe[_0x90e5('0x38')]);_0x1a0b89[_0x90e5('0x3a')]=_[_0x90e5('0x3b')](_0x1a0b89[_0x90e5('0x3c')],_0x1a0b89[_0x90e5('0x38')]);_0x3b2c7d[_0x90e5('0x3d')]=_[_0x90e5('0x3b')](_0x1a0b89[_0x90e5('0x3c')],qs['fields'](_0x4965fe[_0x90e5('0x38')][_0x90e5('0x3e')]));_0x3b2c7d['attributes']=_0x3b2c7d['attributes'][_0x90e5('0x3f')]?_0x3b2c7d[_0x90e5('0x3d')]:_0x1a0b89[_0x90e5('0x3c')];if(_0x4965fe['query'][_0x90e5('0x47')]){_0x3b2c7d[_0x90e5('0x48')]=[{'all':!![]}];}_0x3b2c7d=_[_0x90e5('0x45')]({},_0x3b2c7d,_0x4965fe['options']);return db[_0x90e5('0x33')][_0x90e5('0x4d')](_0x3b2c7d)[_0x90e5('0x2b')](handleEntityNotFound(_0x582878,null))[_0x90e5('0x2b')](respondWithResult(_0x582878,null))[_0x90e5('0x4b')](handleError(_0x582878,null));};exports[_0x90e5('0x4e')]=function(_0x35f65d,_0x192d89){return db['ChatInternalMessage'][_0x90e5('0x4e')](_0x35f65d[_0x90e5('0x4f')],{})[_0x90e5('0x2b')](respondWithResult(_0x192d89,0xc9))[_0x90e5('0x4b')](handleError(_0x192d89,null));};exports[_0x90e5('0x50')]=function(_0x539b9c,_0x5a8929){if(_0x539b9c[_0x90e5('0x4f')]['id']){delete _0x539b9c['body']['id'];}return db[_0x90e5('0x33')]['find']({'where':{'id':_0x539b9c['params']['id']}})[_0x90e5('0x2b')](handleEntityNotFound(_0x5a8929,null))[_0x90e5('0x2b')](saveUpdates(_0x539b9c[_0x90e5('0x4f')],null))['then'](respondWithResult(_0x5a8929,null))[_0x90e5('0x4b')](handleError(_0x5a8929,null));};exports[_0x90e5('0x2c')]=function(_0x59c769,_0xb68e65){return db[_0x90e5('0x33')][_0x90e5('0x4d')]({'where':{'id':_0x59c769[_0x90e5('0x4c')]['id']}})[_0x90e5('0x2b')](handleEntityNotFound(_0xb68e65,null))['then'](removeEntity(_0xb68e65,null))[_0x90e5('0x4b')](handleError(_0xb68e65,null));};exports[_0x90e5('0x51')]=function(_0x5deda7,_0x704084){return db[_0x90e5('0x33')][_0x90e5('0x51')]()[_0x90e5('0x2b')](respondWithResult(_0x704084,null))[_0x90e5('0x4b')](handleError(_0x704084,null));};function wrapUser(_0x30bc3d){return function(_0x22b565){var _0xa000a7=_0x30bc3d['get']({'plain':!![]});_0xa000a7[_0x90e5('0x52')]=[];if(_0x22b565){_0xa000a7[_0x90e5('0x53')]=_0x22b565['createdAt'];_0xa000a7[_0x90e5('0x54')]=_0x22b565;}else{_0xa000a7[_0x90e5('0x53')]=moment(0x0)[_0x90e5('0x55')](_0x90e5('0x56'));_0xa000a7[_0x90e5('0x54')]={};}return _0xa000a7;};}exports['getUsers']=function(_0x2adaa5,_0x2a54d5,_0x4cb752){var _0x461154=[];return db['User'][_0x90e5('0x49')]({'where':{'role':[_0x90e5('0x57'),_0x90e5('0x58'),_0x90e5('0x59')]},'attributes':['id',_0x90e5('0x5a'),'name','role',_0x90e5('0x5b'),_0x90e5('0x5c'),_0x90e5('0x5d'),_0x90e5('0x5e'),_0x90e5('0x5f'),_0x90e5('0x60')],'order':qs[_0x90e5('0x42')](_0x90e5('0x61')),'include':[{'model':db[_0x90e5('0x62')],'as':_0x90e5('0x63'),'attributes':['id',_0x90e5('0x2f'),_0x90e5('0x36')],'through':{'attributes':[]}}]})[_0x90e5('0x2b')](function(_0x88e1ce){if(_0x88e1ce){var _0x30dd43=_0x2adaa5[_0x90e5('0x59')][_0x90e5('0x64')]({'plain':!![]});if(!_0x30dd43)throw new Error(_0x90e5('0x65'));if(_0x30dd43[_0x90e5('0x66')]===_0x90e5('0x59')){return db[_0x90e5('0x67')][_0x90e5('0x4d')]({'where':{'name':_0x90e5('0x68'),'userProfileId':_0x30dd43[_0x90e5('0x69')]},'raw':!![]})['then'](function(_0x5ef5a1){if(_0x5ef5a1){if(_0x5ef5a1[_0x90e5('0x6a')]===0x0){return db[_0x90e5('0x6b')][_0x90e5('0x49')]({'where':{'sectionId':_0x5ef5a1['id']},'raw':!![]})['then'](function(_0x2bb811){var _0x327e17=[];if(_['isEmpty'](_0x2bb811)){_0x327e17=_[_0x90e5('0x43')](_0x88e1ce,function(_0x4a22a5){if(_0x4a22a5[_0x90e5('0x66')]!==_0x90e5('0x57')){return _0x4a22a5;}});return _0x327e17;}else{for(var _0x4eeab6=0x0;_0x4eeab6<_0x88e1ce[_0x90e5('0x3f')];_0x4eeab6++){var _0x7b490b=_0x88e1ce[_0x4eeab6];if(_0x7b490b[_0x90e5('0x66')]===_0x90e5('0x57')){var _0x35b903=_[_0x90e5('0x4d')](_0x2bb811,function(_0x4e011d){return _0x4e011d[_0x90e5('0x6c')]===_0x7b490b['id'];});if(_0x35b903)_0x327e17['push'](_0x7b490b);}else{_0x327e17[_0x90e5('0x6d')](_0x7b490b);}}return _0x327e17;}});}else{return _0x88e1ce;}}else{var _0x5a7081=_[_0x90e5('0x43')](_0x88e1ce,function(_0x2ba94e){if(_0x2ba94e[_0x90e5('0x66')]!==_0x90e5('0x57')){return _0x2ba94e;}});return _0x5a7081;}});}else{return _0x88e1ce;}}})[_0x90e5('0x2b')](function(_0x1d0879){var _0x5b144a=[];if(_0x1d0879){_0x461154=_0x1d0879;for(var _0x5f2f1c=0x0;_0x5f2f1c<_0x1d0879[_0x90e5('0x3f')];_0x5f2f1c+=0x1){_0x461154[_0x5f2f1c]['messages']=[];_0x5b144a[_0x90e5('0x6d')](db[_0x90e5('0x33')][_0x90e5('0x4d')]({'where':{'FromId':[_0x2adaa5[_0x90e5('0x59')]['id'],_0x1d0879[_0x5f2f1c]['id']],'ToId':[_0x2adaa5[_0x90e5('0x59')]['id'],_0x1d0879[_0x5f2f1c]['id']],'ChatGroupId':null},'attributes':['id',_0x90e5('0x6e'),_0x90e5('0x6f'),_0x90e5('0x70'),'read',_0x90e5('0x4f')],'order':qs[_0x90e5('0x42')](_0x90e5('0x71')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x90e5('0x2b')](wrapUser(_0x1d0879[_0x5f2f1c])));}return BPromise[_0x90e5('0x72')](_0x5b144a);}return[];})[_0x90e5('0x2b')](function(_0x409be9){return{'rows':_0x409be9,'count':_0x409be9[_0x90e5('0x3f')]};})['then'](respondWithResult(_0x2a54d5,null))[_0x90e5('0x4b')](handleError(_0x2a54d5,null));};
\ No newline at end of file
+var _0x6322=['isEmpty','resourceId','push','messages','FromId','read','-createdAt','all','zip-dir','fast-json-patch','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','map','rawAttributes','fieldName','key','name','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','type','filter','merge','options','ChatInternalMessage','includeAll','rows','catch','show','params','intersection','find','create','body','update','describe','get','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','admin','user','role','userpic','internal','lastLoginAt','showWebBar','-online','VoiceQueues','UserProfileSection','Agents','userProfileId','autoAssociation'];(function(_0x197748,_0x2de892){var _0x3ada6e=function(_0x294fc6){while(--_0x294fc6){_0x197748['push'](_0x197748['shift']());}};_0x3ada6e(++_0x2de892);}(_0x6322,0x71));var _0x2632=function(_0xf1a6c9,_0x53db67){_0xf1a6c9=_0xf1a6c9-0x0;var _0x38745f=_0x6322[_0xf1a6c9];return _0x38745f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2632('0x0'));var jsonpatch=require(_0x2632('0x1'));var rp=require('request-promise');var moment=require(_0x2632('0x2'));var BPromise=require(_0x2632('0x3'));var Mustache=require('mustache');var util=require(_0x2632('0x4'));var path=require(_0x2632('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2632('0x6'));var fs=require('fs');var fs_extra=require(_0x2632('0x7'));var _=require(_0x2632('0x8'));var squel=require(_0x2632('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2632('0xa'));var querystring=require(_0x2632('0xb'));var Papa=require(_0x2632('0xc'));var Redis=require('ioredis');var authService=require(_0x2632('0xd'));var qs=require(_0x2632('0xe'));var as=require(_0x2632('0xf'));var hardwareService=require(_0x2632('0x10'));var logger=require('../../config/logger')(_0x2632('0x11'));var utils=require(_0x2632('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x2632('0x13'));var db=require(_0x2632('0x14'))['db'];config[_0x2632('0x15')]=_['defaults'](config[_0x2632('0x15')],{'host':_0x2632('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2632('0x15')]));require('./chatInternalMessage.socket')[_0x2632('0x17')](socket);function respondWithStatusCode(_0x27fa51,_0x57361d){_0x57361d=_0x57361d||0xcc;return function(_0x41ef2f){if(_0x41ef2f){return _0x27fa51[_0x2632('0x18')](_0x57361d);}return _0x27fa51[_0x2632('0x19')](_0x57361d)['end']();};}function respondWithResult(_0x39a695,_0x5afc05){_0x5afc05=_0x5afc05||0xc8;return function(_0x521f6c){if(_0x521f6c){return _0x39a695[_0x2632('0x19')](_0x5afc05)[_0x2632('0x1a')](_0x521f6c);}};}function respondWithFilteredResult(_0x5e05d3,_0x23802f){return function(_0x35bd89){if(_0x35bd89){var _0x5d5c3a=typeof _0x23802f[_0x2632('0x1b')]===_0x2632('0x1c')&&typeof _0x23802f[_0x2632('0x1d')]===_0x2632('0x1c');var _0x38730d=_0x35bd89[_0x2632('0x1e')];var _0x19e49e=_0x5d5c3a?0x0:_0x23802f[_0x2632('0x1b')];var _0x507c96=_0x5d5c3a?_0x35bd89[_0x2632('0x1e')]:_0x23802f[_0x2632('0x1b')]+_0x23802f[_0x2632('0x1d')];var _0x115809;if(_0x507c96>=_0x38730d){_0x507c96=_0x38730d;_0x115809=0xc8;}else{_0x115809=0xce;}_0x5e05d3[_0x2632('0x19')](_0x115809);return _0x5e05d3[_0x2632('0x1f')](_0x2632('0x20'),_0x19e49e+'-'+_0x507c96+'/'+_0x38730d)[_0x2632('0x1a')](_0x35bd89);}return null;};}function patchUpdates(_0x4e8b81){return function(_0x1b79bd){try{jsonpatch[_0x2632('0x21')](_0x1b79bd,_0x4e8b81,!![]);}catch(_0x5b56d8){return BPromise[_0x2632('0x22')](_0x5b56d8);}return _0x1b79bd[_0x2632('0x23')]();};}function saveUpdates(_0x49375b,_0x118819){return function(_0x386f24){if(_0x386f24){return _0x386f24['update'](_0x49375b)[_0x2632('0x24')](function(_0x397fb6){return _0x397fb6;});}return null;};}function removeEntity(_0x383db0,_0x36f868){return function(_0x24bed2){if(_0x24bed2){return _0x24bed2[_0x2632('0x25')]()[_0x2632('0x24')](function(){_0x383db0['status'](0xcc)[_0x2632('0x26')]();});}};}function handleEntityNotFound(_0x4bfdad,_0x3e8606){return function(_0x4f96b8){if(!_0x4f96b8){_0x4bfdad[_0x2632('0x18')](0x194);}return _0x4f96b8;};}function handleError(_0x3139ca,_0x5234bc){_0x5234bc=_0x5234bc||0x1f4;return function(_0x2a9171){logger[_0x2632('0x27')](_0x2a9171[_0x2632('0x28')]);if(_0x2a9171['name']){delete _0x2a9171['name'];}_0x3139ca[_0x2632('0x19')](_0x5234bc)['send'](_0x2a9171);};}exports['index']=function(_0x24fafc,_0x42edff){var _0x11c02e={},_0x47b326={},_0x574248={'count':0x0,'rows':[]};var _0x29c2af=_[_0x2632('0x29')](db['ChatInternalMessage'][_0x2632('0x2a')],function(_0x5e1a39){return{'name':_0x5e1a39[_0x2632('0x2b')],'type':_0x5e1a39['type'][_0x2632('0x2c')]};});_0x47b326['model']=_[_0x2632('0x29')](_0x29c2af,_0x2632('0x2d'));_0x47b326[_0x2632('0x2e')]=_[_0x2632('0x2f')](_0x24fafc[_0x2632('0x2e')]);_0x47b326[_0x2632('0x30')]=_['intersection'](_0x47b326['model'],_0x47b326[_0x2632('0x2e')]);_0x11c02e[_0x2632('0x31')]=_['intersection'](_0x47b326[_0x2632('0x32')],qs[_0x2632('0x33')](_0x24fafc[_0x2632('0x2e')]['fields']));_0x11c02e['attributes']=_0x11c02e[_0x2632('0x31')][_0x2632('0x34')]?_0x11c02e[_0x2632('0x31')]:_0x47b326['model'];if(!_0x24fafc[_0x2632('0x2e')][_0x2632('0x35')](_0x2632('0x36'))){_0x11c02e[_0x2632('0x1d')]=qs[_0x2632('0x1d')](_0x24fafc['query'][_0x2632('0x1d')]);_0x11c02e['offset']=qs[_0x2632('0x1b')](_0x24fafc[_0x2632('0x2e')][_0x2632('0x1b')]);}_0x11c02e[_0x2632('0x37')]=qs[_0x2632('0x38')](_0x24fafc['query']['sort']);_0x11c02e['where']=qs[_0x2632('0x30')](_[_0x2632('0x39')](_0x24fafc[_0x2632('0x2e')],_0x47b326[_0x2632('0x30')]),_0x29c2af);if(_0x24fafc['query']['filter']){_0x11c02e[_0x2632('0x3a')]=_['merge'](_0x11c02e[_0x2632('0x3a')],{'$or':_[_0x2632('0x29')](_0x29c2af,function(_0x16ff13){if(_0x16ff13[_0x2632('0x3b')]!=='VIRTUAL'){var _0x10dc9d={};_0x10dc9d[_0x16ff13[_0x2632('0x2d')]]={'$like':'%'+_0x24fafc[_0x2632('0x2e')][_0x2632('0x3c')]+'%'};return _0x10dc9d;}})});}_0x11c02e=_[_0x2632('0x3d')]({},_0x11c02e,_0x24fafc[_0x2632('0x3e')]);var _0x35a9ad={'where':_0x11c02e[_0x2632('0x3a')]};return db[_0x2632('0x3f')][_0x2632('0x1e')](_0x35a9ad)[_0x2632('0x24')](function(_0x31b407){_0x574248['count']=_0x31b407;if(_0x24fafc['query'][_0x2632('0x40')]){_0x11c02e['include']=[{'all':!![]}];}return db[_0x2632('0x3f')]['findAll'](_0x11c02e);})['then'](function(_0x56ee15){_0x574248[_0x2632('0x41')]=_0x56ee15;return _0x574248;})[_0x2632('0x24')](respondWithFilteredResult(_0x42edff,_0x11c02e))[_0x2632('0x42')](handleError(_0x42edff,null));};exports[_0x2632('0x43')]=function(_0x565e4f,_0x5de9a1){var _0x200f79={'raw':!![],'where':{'id':_0x565e4f[_0x2632('0x44')]['id']}},_0x454eda={};_0x454eda[_0x2632('0x32')]=_['keys'](db[_0x2632('0x3f')][_0x2632('0x2a')]);_0x454eda[_0x2632('0x2e')]=_['keys'](_0x565e4f[_0x2632('0x2e')]);_0x454eda[_0x2632('0x30')]=_[_0x2632('0x45')](_0x454eda[_0x2632('0x32')],_0x454eda[_0x2632('0x2e')]);_0x200f79[_0x2632('0x31')]=_[_0x2632('0x45')](_0x454eda[_0x2632('0x32')],qs[_0x2632('0x33')](_0x565e4f['query'][_0x2632('0x33')]));_0x200f79[_0x2632('0x31')]=_0x200f79[_0x2632('0x31')][_0x2632('0x34')]?_0x200f79[_0x2632('0x31')]:_0x454eda['model'];if(_0x565e4f['query'][_0x2632('0x40')]){_0x200f79['include']=[{'all':!![]}];}_0x200f79=_[_0x2632('0x3d')]({},_0x200f79,_0x565e4f[_0x2632('0x3e')]);return db[_0x2632('0x3f')][_0x2632('0x46')](_0x200f79)[_0x2632('0x24')](handleEntityNotFound(_0x5de9a1,null))[_0x2632('0x24')](respondWithResult(_0x5de9a1,null))[_0x2632('0x42')](handleError(_0x5de9a1,null));};exports[_0x2632('0x47')]=function(_0x3ae190,_0x5caaab){return db['ChatInternalMessage'][_0x2632('0x47')](_0x3ae190[_0x2632('0x48')],{})[_0x2632('0x24')](respondWithResult(_0x5caaab,0xc9))[_0x2632('0x42')](handleError(_0x5caaab,null));};exports[_0x2632('0x49')]=function(_0x106161,_0x5a1b91){if(_0x106161[_0x2632('0x48')]['id']){delete _0x106161['body']['id'];}return db[_0x2632('0x3f')]['find']({'where':{'id':_0x106161[_0x2632('0x44')]['id']}})[_0x2632('0x24')](handleEntityNotFound(_0x5a1b91,null))[_0x2632('0x24')](saveUpdates(_0x106161[_0x2632('0x48')],null))[_0x2632('0x24')](respondWithResult(_0x5a1b91,null))[_0x2632('0x42')](handleError(_0x5a1b91,null));};exports[_0x2632('0x25')]=function(_0x3a3d46,_0x41843f){return db[_0x2632('0x3f')][_0x2632('0x46')]({'where':{'id':_0x3a3d46['params']['id']}})['then'](handleEntityNotFound(_0x41843f,null))['then'](removeEntity(_0x41843f,null))['catch'](handleError(_0x41843f,null));};exports[_0x2632('0x4a')]=function(_0x517107,_0x9a4f70){return db[_0x2632('0x3f')][_0x2632('0x4a')]()['then'](respondWithResult(_0x9a4f70,null))['catch'](handleError(_0x9a4f70,null));};function wrapUser(_0x5eeed8){return function(_0x3f6dee){var _0x1dbec3=_0x5eeed8[_0x2632('0x4b')]({'plain':!![]});_0x1dbec3['messages']=[];if(_0x3f6dee){_0x1dbec3[_0x2632('0x4c')]=_0x3f6dee[_0x2632('0x4d')];_0x1dbec3[_0x2632('0x4e')]=_0x3f6dee;}else{_0x1dbec3[_0x2632('0x4c')]=moment(0x0)[_0x2632('0x4f')](_0x2632('0x50'));_0x1dbec3[_0x2632('0x4e')]={};}return _0x1dbec3;};}exports[_0x2632('0x51')]=function(_0x2dfe98,_0x3aeeae,_0x2c8105){var _0x4bc938=[];return db[_0x2632('0x52')][_0x2632('0x53')]({'where':{'role':['agent',_0x2632('0x54'),_0x2632('0x55')]},'attributes':['id','fullname','name',_0x2632('0x56'),_0x2632('0x57'),_0x2632('0x58'),'online',_0x2632('0x59'),'allowmessenger',_0x2632('0x5a')],'order':qs[_0x2632('0x38')](_0x2632('0x5b')),'include':[{'model':db['VoiceQueue'],'as':_0x2632('0x5c'),'attributes':['id','name',_0x2632('0x3b')],'through':{'attributes':[]}}]})[_0x2632('0x24')](function(_0x1d7120){if(_0x1d7120){var _0x3b5208=_0x2dfe98[_0x2632('0x55')][_0x2632('0x4b')]({'plain':!![]});if(!_0x3b5208)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b5208[_0x2632('0x56')]===_0x2632('0x55')){return db[_0x2632('0x5d')][_0x2632('0x46')]({'where':{'name':_0x2632('0x5e'),'userProfileId':_0x3b5208[_0x2632('0x5f')]},'raw':!![]})['then'](function(_0x5eae37){if(_0x5eae37){if(_0x5eae37[_0x2632('0x60')]===0x0){return db['UserProfileResource'][_0x2632('0x53')]({'where':{'sectionId':_0x5eae37['id']},'raw':!![]})[_0x2632('0x24')](function(_0x16b90a){var _0x2bc9fe=[];if(_[_0x2632('0x61')](_0x16b90a)){_0x2bc9fe=_[_0x2632('0x3c')](_0x1d7120,function(_0x181494){if(_0x181494[_0x2632('0x56')]!=='agent'){return _0x181494;}});return _0x2bc9fe;}else{for(var _0xa7919b=0x0;_0xa7919b<_0x1d7120[_0x2632('0x34')];_0xa7919b++){var _0x41fa47=_0x1d7120[_0xa7919b];if(_0x41fa47[_0x2632('0x56')]==='agent'){var _0x4df6ea=_[_0x2632('0x46')](_0x16b90a,function(_0x4d1781){return _0x4d1781[_0x2632('0x62')]===_0x41fa47['id'];});if(_0x4df6ea)_0x2bc9fe[_0x2632('0x63')](_0x41fa47);}else{_0x2bc9fe[_0x2632('0x63')](_0x41fa47);}}return _0x2bc9fe;}});}else{return _0x1d7120;}}else{var _0x19c372=_[_0x2632('0x3c')](_0x1d7120,function(_0x49d4b5){if(_0x49d4b5['role']!=='agent'){return _0x49d4b5;}});return _0x19c372;}});}else{return _0x1d7120;}}})[_0x2632('0x24')](function(_0x50ebd1){var _0x56e1d1=[];if(_0x50ebd1){_0x4bc938=_0x50ebd1;for(var _0x3acc41=0x0;_0x3acc41<_0x50ebd1[_0x2632('0x34')];_0x3acc41+=0x1){_0x4bc938[_0x3acc41][_0x2632('0x64')]=[];_0x56e1d1[_0x2632('0x63')](db[_0x2632('0x3f')][_0x2632('0x46')]({'where':{'FromId':[_0x2dfe98[_0x2632('0x55')]['id'],_0x50ebd1[_0x3acc41]['id']],'ToId':[_0x2dfe98['user']['id'],_0x50ebd1[_0x3acc41]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x2632('0x65'),'ToId',_0x2632('0x66'),_0x2632('0x48')],'order':qs[_0x2632('0x38')](_0x2632('0x67')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x2632('0x24')](wrapUser(_0x50ebd1[_0x3acc41])));}return BPromise[_0x2632('0x68')](_0x56e1d1);}return[];})['then'](function(_0x365969){return{'rows':_0x365969,'count':_0x365969[_0x2632('0x34')]};})[_0x2632('0x24')](respondWithResult(_0x3aeeae,null))[_0x2632('0x42')](handleError(_0x3aeeae,null));};
\ No newline at end of file
index e86ba09..6b47f9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06bc=['emit','hasOwnProperty','exports','../../mysqldb','update','remove'];(function(_0x372433,_0xb55d02){var _0x375ac3=function(_0x1c1d22){while(--_0x1c1d22){_0x372433['push'](_0x372433['shift']());}};_0x375ac3(++_0xb55d02);}(_0x06bc,0x6f));var _0xc06b=function(_0xeff764,_0x377cfe){_0xeff764=_0xeff764-0x0;var _0xe75e9f=_0x06bc[_0xeff764];return _0xe75e9f;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0xc06b('0x0'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc06b('0x1'),'afterDestroy':_0xc06b('0x2')};function emitEvent(_0x4f8ac9){return function(_0x546c5c,_0x1cd221,_0xb72d52){ChatInternalMessageEvents[_0xc06b('0x3')](_0x4f8ac9+':'+_0x546c5c['id'],_0x546c5c);ChatInternalMessageEvents['emit'](_0x4f8ac9,_0x546c5c);_0xb72d52(null);};}for(var e in events){if(events[_0xc06b('0x4')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0xc06b('0x5')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x3951=['update','remove','emit','hasOwnProperty','exports','events','ChatInternalMessage','save'];(function(_0x49357a,_0x13a5f1){var _0x1061f5=function(_0x3fda0b){while(--_0x3fda0b){_0x49357a['push'](_0x49357a['shift']());}};_0x1061f5(++_0x13a5f1);}(_0x3951,0xdd));var _0x1395=function(_0x11ed7a,_0x2e0a4d){_0x11ed7a=_0x11ed7a-0x0;var _0x3e2b7f=_0x3951[_0x11ed7a];return _0x3e2b7f;};'use strict';var EventEmitter=require(_0x1395('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x1395('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1395('0x2'),'afterUpdate':_0x1395('0x3'),'afterDestroy':_0x1395('0x4')};function emitEvent(_0x3814cc){return function(_0x1b4a93,_0x570f2b,_0x122a01){ChatInternalMessageEvents[_0x1395('0x5')](_0x3814cc+':'+_0x1b4a93['id'],_0x1b4a93);ChatInternalMessageEvents[_0x1395('0x5')](_0x3814cc,_0x1b4a93);_0x122a01(null);};}for(var e in events){if(events[_0x1395('0x6')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x1395('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
index a0d97de..ffa53e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38fb=['path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x370b63,_0x2a9126){var _0x5590b2=function(_0x5dc74c){while(--_0x5dc74c){_0x370b63['push'](_0x370b63['shift']());}};_0x5590b2(++_0x2a9126);}(_0x38fb,0x143));var _0xb38f=function(_0x5eef05,_0x1be989){_0x5eef05=_0x5eef05-0x0;var _0x56d4b8=_0x38fb[_0x5eef05];return _0x56d4b8;};'use strict';var _=require(_0xb38f('0x0'));var util=require(_0xb38f('0x1'));var logger=require(_0xb38f('0x2'))(_0xb38f('0x3'));var moment=require(_0xb38f('0x4'));var BPromise=require(_0xb38f('0x5'));var rp=require(_0xb38f('0x6'));var fs=require('fs');var path=require(_0xb38f('0x7'));var rimraf=require(_0xb38f('0x8'));var config=require(_0xb38f('0x9'));var attributes=require(_0xb38f('0xa'));module[_0xb38f('0xb')]=function(_0x50950a,_0x48e2c9){return _0x50950a[_0xb38f('0xc')](_0xb38f('0xd'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xb38f('0xe')});};
\ No newline at end of file
+var _0x0366=['request-promise','path','../../config/environment','./chatInternalMessage.attributes','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird'];(function(_0x5d0645,_0x366956){var _0x1491f1=function(_0x34e665){while(--_0x34e665){_0x5d0645['push'](_0x5d0645['shift']());}};_0x1491f1(++_0x366956);}(_0x0366,0xec));var _0x6036=function(_0x5264ba,_0xa15aba){_0x5264ba=_0x5264ba-0x0;var _0x286a31=_0x0366[_0x5264ba];return _0x286a31;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6036('0x0'))(_0x6036('0x1'));var moment=require(_0x6036('0x2'));var BPromise=require(_0x6036('0x3'));var rp=require(_0x6036('0x4'));var fs=require('fs');var path=require(_0x6036('0x5'));var rimraf=require('rimraf');var config=require(_0x6036('0x6'));var attributes=require(_0x6036('0x7'));module['exports']=function(_0x46e8d9,_0x3dcae2){return _0x46e8d9[_0x6036('0x8')](_0x6036('0x9'),attributes,{'tableName':_0x6036('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6036('0xb')});};
\ No newline at end of file
index 45fb2fc..791528d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba92=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','info'];(function(_0x479f47,_0x3d619a){var _0xc3fac2=function(_0x351634){while(--_0x351634){_0x479f47['push'](_0x479f47['shift']());}};_0xc3fac2(++_0x3d619a);}(_0xba92,0xe9));var _0x2ba9=function(_0x4dad6c,_0x131c34){_0x4dad6c=_0x4dad6c-0x0;var _0x1100a0=_0xba92[_0x4dad6c];return _0x1100a0;};'use strict';var _=require(_0x2ba9('0x0'));var util=require(_0x2ba9('0x1'));var moment=require(_0x2ba9('0x2'));var BPromise=require(_0x2ba9('0x3'));var rs=require(_0x2ba9('0x4'));var fs=require('fs');var Redis=require(_0x2ba9('0x5'));var db=require(_0x2ba9('0x6'))['db'];var utils=require(_0x2ba9('0x7'));var logger=require('../../config/logger')(_0x2ba9('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2ba9('0x9')][_0x2ba9('0xa')]({'port':0x232a});config[_0x2ba9('0xb')]=_[_0x2ba9('0xc')](config['redis'],{'host':_0x2ba9('0xd'),'port':0x18eb});var socket=require(_0x2ba9('0xe'))(new Redis(config[_0x2ba9('0xb')]));require(_0x2ba9('0xf'))[_0x2ba9('0x10')](socket);function respondWithRpcPromise(_0x400937,_0x3feb02,_0x2ebbd9){return new BPromise(function(_0x233de2,_0x430f69){return client[_0x2ba9('0x11')](_0x400937,_0x2ebbd9)[_0x2ba9('0x12')](function(_0xdb397a){logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x3feb02,'request\x20sent');logger[_0x2ba9('0x13')](_0x2ba9('0x14'),_0x3feb02,_0x2ba9('0x15'),JSON[_0x2ba9('0x16')](_0xdb397a));if(_0xdb397a['error']){if(_0xdb397a[_0x2ba9('0x17')][_0x2ba9('0x18')]===0x1f4){logger[_0x2ba9('0x17')](_0x2ba9('0x19'),_0x3feb02,_0xdb397a[_0x2ba9('0x17')][_0x2ba9('0x1a')]);return _0x430f69(_0xdb397a[_0x2ba9('0x17')][_0x2ba9('0x1a')]);}logger[_0x2ba9('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x3feb02,_0xdb397a[_0x2ba9('0x17')][_0x2ba9('0x1a')]);return _0x233de2(_0xdb397a[_0x2ba9('0x17')][_0x2ba9('0x1a')]);}else{logger[_0x2ba9('0x1b')](_0x2ba9('0x19'),_0x3feb02,'request\x20sent');_0x233de2(_0xdb397a['result'][_0x2ba9('0x1a')]);}})[_0x2ba9('0x1c')](function(_0x5a9f02){logger[_0x2ba9('0x17')](_0x2ba9('0x19'),_0x3feb02,_0x5a9f02);_0x430f69(_0x5a9f02);});});}
\ No newline at end of file
+var _0xb83b=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xb83b,0x8e));var _0xbb83=function(_0x56f91f,_0x432546){_0x56f91f=_0x56f91f-0x0;var _0x569d0a=_0xb83b[_0x56f91f];return _0x569d0a;};'use strict';var _=require(_0xbb83('0x0'));var util=require(_0xbb83('0x1'));var moment=require(_0xbb83('0x2'));var BPromise=require(_0xbb83('0x3'));var rs=require(_0xbb83('0x4'));var fs=require('fs');var Redis=require(_0xbb83('0x5'));var db=require(_0xbb83('0x6'))['db'];var utils=require(_0xbb83('0x7'));var logger=require(_0xbb83('0x8'))(_0xbb83('0x9'));var config=require(_0xbb83('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb83('0xb')]({'port':0x232a});config[_0xbb83('0xc')]=_['defaults'](config[_0xbb83('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xbb83('0xd'))(new Redis(config[_0xbb83('0xc')]));require(_0xbb83('0xe'))[_0xbb83('0xf')](socket);function respondWithRpcPromise(_0x34bcac,_0x546764,_0x45bb5c){return new BPromise(function(_0x17cb96,_0x4f6411){return client[_0xbb83('0x10')](_0x34bcac,_0x45bb5c)[_0xbb83('0x11')](function(_0x34e3f5){logger[_0xbb83('0x12')](_0xbb83('0x13'),_0x546764,_0xbb83('0x14'));logger[_0xbb83('0x15')](_0xbb83('0x16'),_0x546764,_0xbb83('0x14'),JSON[_0xbb83('0x17')](_0x34e3f5));if(_0x34e3f5[_0xbb83('0x18')]){if(_0x34e3f5[_0xbb83('0x18')]['code']===0x1f4){logger['error'](_0xbb83('0x13'),_0x546764,_0x34e3f5['error'][_0xbb83('0x19')]);return _0x4f6411(_0x34e3f5['error']['message']);}logger[_0xbb83('0x18')](_0xbb83('0x13'),_0x546764,_0x34e3f5['error'][_0xbb83('0x19')]);return _0x17cb96(_0x34e3f5['error'][_0xbb83('0x19')]);}else{logger['info'](_0xbb83('0x13'),_0x546764,_0xbb83('0x14'));_0x17cb96(_0x34e3f5[_0xbb83('0x1a')]['message']);}})[_0xbb83('0x1b')](function(_0x3dda74){logger['error'](_0xbb83('0x13'),_0x546764,_0x3dda74);_0x4f6411(_0x3dda74);});});}
\ No newline at end of file
index f89442b..b30382c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x025d=['register','length','chatInternalMessage:','./chatInternalMessage.events','save','remove','update','emit','removeListener'];(function(_0x493a97,_0x50a93e){var _0x51f171=function(_0x26a0bb){while(--_0x26a0bb){_0x493a97['push'](_0x493a97['shift']());}};_0x51f171(++_0x50a93e);}(_0x025d,0x18f));var _0xd025=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x025d[_0x432682];return _0x463d05;};'use strict';var ChatInternalMessageEvents=require(_0xd025('0x0'));var events=[_0xd025('0x1'),_0xd025('0x2'),_0xd025('0x3')];function createListener(_0xa38c42,_0x5c466d){return function(_0x4f6c64){_0x5c466d[_0xd025('0x4')](_0xa38c42,_0x4f6c64);};}function removeListener(_0x26cbba,_0x579801){return function(){ChatInternalMessageEvents[_0xd025('0x5')](_0x26cbba,_0x579801);};}exports[_0xd025('0x6')]=function(_0x543a36){for(var _0x26cae7=0x0,_0x4777f7=events[_0xd025('0x7')];_0x26cae7<_0x4777f7;_0x26cae7++){var _0x4a7d22=events[_0x26cae7];var _0x103add=createListener(_0xd025('0x8')+_0x4a7d22,_0x543a36);ChatInternalMessageEvents['on'](_0x4a7d22,_0x103add);}};
\ No newline at end of file
+var _0xaa75=['removeListener','length','chatInternalMessage:','./chatInternalMessage.events','emit'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0xaa75,0x120));var _0x5aa7=function(_0x5b8fc7,_0x577d99){_0x5b8fc7=_0x5b8fc7-0x0;var _0x5165f6=_0xaa75[_0x5b8fc7];return _0x5165f6;};'use strict';var ChatInternalMessageEvents=require(_0x5aa7('0x0'));var events=['save','remove','update'];function createListener(_0x2164d1,_0x5b2db3){return function(_0x148400){_0x5b2db3[_0x5aa7('0x1')](_0x2164d1,_0x148400);};}function removeListener(_0x54b448,_0x209d08){return function(){ChatInternalMessageEvents[_0x5aa7('0x2')](_0x54b448,_0x209d08);};}exports['register']=function(_0x47d2ff){for(var _0x442022=0x0,_0x27575e=events[_0x5aa7('0x3')];_0x442022<_0x27575e;_0x442022++){var _0x291130=events[_0x442022];var _0x1b502a=createListener(_0x5aa7('0x4')+_0x291130,_0x47d2ff);ChatInternalMessageEvents['on'](_0x291130,_0x1b502a);}};
\ No newline at end of file
index e9bad2f..d42ba04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x463e=['update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','/describe','describe','/users','getUsers','/:id','show','create','put'];(function(_0x158c24,_0x46bc03){var _0x19d244=function(_0xa67520){while(--_0xa67520){_0x158c24['push'](_0x158c24['shift']());}};_0x19d244(++_0x46bc03);}(_0x463e,0x87));var _0xe463=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x463e[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0xe463('0x0'));var util=require(_0xe463('0x1'));var path=require(_0xe463('0x2'));var timeout=require(_0xe463('0x3'));var express=require('express');var router=express[_0xe463('0x4')]();var fs_extra=require(_0xe463('0x5'));var auth=require(_0xe463('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe463('0x7'));var controller=require(_0xe463('0x8'));router[_0xe463('0x9')]('/',auth[_0xe463('0xa')](),controller['index']);router[_0xe463('0x9')](_0xe463('0xb'),auth[_0xe463('0xa')](),controller[_0xe463('0xc')]);router[_0xe463('0x9')](_0xe463('0xd'),auth[_0xe463('0xa')](),controller[_0xe463('0xe')]);router[_0xe463('0x9')](_0xe463('0xf'),auth[_0xe463('0xa')](),controller[_0xe463('0x10')]);router['post']('/',auth[_0xe463('0xa')](),controller[_0xe463('0x11')]);router[_0xe463('0x12')](_0xe463('0xf'),controller[_0xe463('0x13')]);router['delete'](_0xe463('0xf'),auth[_0xe463('0xa')](),controller[_0xe463('0x14')]);module[_0xe463('0x15')]=router;
\ No newline at end of file
+var _0x4dba=['../../components/interaction/service','../../config/environment','isAuthenticated','/describe','describe','get','/users','getUsers','show','post','put','update','/:id','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x34abca,_0x33b8d4){var _0x3d3472=function(_0x5ce42f){while(--_0x5ce42f){_0x34abca['push'](_0x34abca['shift']());}};_0x3d3472(++_0x33b8d4);}(_0x4dba,0xe0));var _0xa4db=function(_0x14cc37,_0x3c2c69){_0x14cc37=_0x14cc37-0x0;var _0x11a633=_0x4dba[_0x14cc37];return _0x11a633;};'use strict';var multer=require('multer');var util=require(_0xa4db('0x0'));var path=require(_0xa4db('0x1'));var timeout=require(_0xa4db('0x2'));var express=require(_0xa4db('0x3'));var router=express[_0xa4db('0x4')]();var fs_extra=require(_0xa4db('0x5'));var auth=require(_0xa4db('0x6'));var interaction=require(_0xa4db('0x7'));var config=require(_0xa4db('0x8'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth[_0xa4db('0x9')](),controller['index']);router['get'](_0xa4db('0xa'),auth[_0xa4db('0x9')](),controller[_0xa4db('0xb')]);router[_0xa4db('0xc')](_0xa4db('0xd'),auth['isAuthenticated'](),controller[_0xa4db('0xe')]);router[_0xa4db('0xc')]('/:id',auth[_0xa4db('0x9')](),controller[_0xa4db('0xf')]);router[_0xa4db('0x10')]('/',auth[_0xa4db('0x9')](),controller['create']);router[_0xa4db('0x11')]('/:id',controller[_0xa4db('0x12')]);router['delete'](_0xa4db('0x13'),auth[_0xa4db('0x9')](),controller[_0xa4db('0x14')]);module['exports']=router;
\ No newline at end of file
index dc4c2b5..347b3ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e21=['DATE','STRING','sequelize','exports','TEXT','BOOLEAN','ENUM','out'];(function(_0x10f92d,_0x21f26f){var _0x97766c=function(_0x3052f5){while(--_0x3052f5){_0x10f92d['push'](_0x10f92d['shift']());}};_0x97766c(++_0x21f26f);}(_0x2e21,0xba));var _0x12e2=function(_0x276f15,_0x17c840){_0x276f15=_0x276f15-0x0;var _0x1c7626=_0x2e21[_0x276f15];return _0x1c7626;};'use strict';var Sequelize=require(_0x12e2('0x0'));module[_0x12e2('0x1')]={'body':{'type':Sequelize[_0x12e2('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x12e2('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x12e2('0x4')]('in',_0x12e2('0x5')),'defaultValue':_0x12e2('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x12e2('0x6')]},'providerName':{'type':Sequelize[_0x12e2('0x7')]},'providerResponse':{'type':Sequelize[_0x12e2('0x2')]}};
\ No newline at end of file
+var _0x3f72=['sequelize','exports','TEXT','BOOLEAN','ENUM','out','DATE'];(function(_0x4449ef,_0x2ed2ad){var _0x2becaf=function(_0x16789f){while(--_0x16789f){_0x4449ef['push'](_0x4449ef['shift']());}};_0x2becaf(++_0x2ed2ad);}(_0x3f72,0xaf));var _0x23f7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3f72[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x23f7('0x0'));module[_0x23f7('0x1')]={'body':{'type':Sequelize[_0x23f7('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x23f7('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x23f7('0x4')]('in',_0x23f7('0x5')),'defaultValue':_0x23f7('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x23f7('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x23f7('0x2')]}};
\ No newline at end of file
index d5ad3c6..073d82c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','chat-interactions','chat','ChatInteraction','RejectMessage','rejectMessage','Sequelize','QueryTypes','SELECT','fullname','rejectmessage','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','body','find','describe','../../config/logger','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteractionId','isNil','read1stAt','format'];(function(_0x4d1210,_0x1532dd){var _0x29b5a9=function(_0x5d236a){while(--_0x5d236a){_0x4d1210['push'](_0x4d1210['shift']());}};_0x29b5a9(++_0x1532dd);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}exports['index']=function(_0x24936a,_0x3d9717){var _0x381c37={},_0x1ef87a={},_0x4f41ae={'count':0x0,'rows':[]};var _0x31916f=_[_0x0a9e('0x3a')](db[_0x0a9e('0x3b')]['rawAttributes'],function(_0x1dbf74){return{'name':_0x1dbf74[_0x0a9e('0x3c')],'type':_0x1dbf74[_0x0a9e('0x3d')]['key']};});_0x1ef87a['model']=_[_0x0a9e('0x3a')](_0x31916f,_0x0a9e('0x38'));_0x1ef87a['query']=_[_0x0a9e('0x3e')](_0x24936a[_0x0a9e('0x3f')]);_0x1ef87a[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],_0x1ef87a['query']);_0x381c37[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],qs[_0x0a9e('0x43')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x43')]));_0x381c37['attributes']=_0x381c37[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x381c37[_0x0a9e('0x42')]:_0x1ef87a[_0x0a9e('0x45')];if(!_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x46')](_0x0a9e('0x47'))){_0x381c37[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x30')]);_0x381c37[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x2d')]);}_0x381c37['order']=qs['sort'](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x48')]);_0x381c37[_0x0a9e('0x49')]=qs[_0x0a9e('0x40')](_[_0x0a9e('0x4a')](_0x24936a[_0x0a9e('0x3f')],_0x1ef87a[_0x0a9e('0x40')]),_0x31916f);if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]){_0x381c37[_0x0a9e('0x49')]=_[_0x0a9e('0x4c')](_0x381c37[_0x0a9e('0x49')],{'$or':_['map'](_0x31916f,function(_0x117c99){if(_0x117c99[_0x0a9e('0x3d')]!==_0x0a9e('0x4d')){var _0xfbd5ad={};_0xfbd5ad[_0x117c99[_0x0a9e('0x38')]]={'$like':'%'+_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]+'%'};return _0xfbd5ad;}})});}_0x381c37=_[_0x0a9e('0x4c')]({},_0x381c37,_0x24936a['options']);var _0x2e9d90={'where':_0x381c37['where']};return db[_0x0a9e('0x3b')][_0x0a9e('0x2f')](_0x2e9d90)[_0x0a9e('0x1d')](function(_0x562fb4){_0x4f41ae[_0x0a9e('0x2f')]=_0x562fb4;if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4e')]){_0x381c37[_0x0a9e('0x4f')]=[{'all':!![]}];}return db[_0x0a9e('0x3b')][_0x0a9e('0x50')](_0x381c37);})[_0x0a9e('0x1d')](function(_0x5bbcde){_0x4f41ae[_0x0a9e('0x51')]=_0x5bbcde;return _0x4f41ae;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x3d9717,_0x381c37))[_0x0a9e('0x28')](handleError(_0x3d9717,null));};exports[_0x0a9e('0x52')]=function(_0x409789,_0x992c77){var _0x6054ee={'raw':!![],'where':{'id':_0x409789[_0x0a9e('0x53')]['id']}},_0x19383e={};_0x19383e['model']=_[_0x0a9e('0x3e')](db[_0x0a9e('0x3b')]['rawAttributes']);_0x19383e['query']=_['keys'](_0x409789[_0x0a9e('0x3f')]);_0x19383e[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],_0x19383e[_0x0a9e('0x3f')]);_0x6054ee[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],qs['fields'](_0x409789['query']['fields']));_0x6054ee[_0x0a9e('0x42')]=_0x6054ee[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x6054ee['attributes']:_0x19383e[_0x0a9e('0x45')];if(_0x409789[_0x0a9e('0x3f')]['includeAll']){_0x6054ee['include']=[{'all':!![]}];}_0x6054ee=_[_0x0a9e('0x4c')]({},_0x6054ee,_0x409789['options']);return db[_0x0a9e('0x3b')]['find'](_0x6054ee)[_0x0a9e('0x1d')](handleEntityNotFound(_0x992c77,null))[_0x0a9e('0x1d')](respondWithResult(_0x992c77,null))[_0x0a9e('0x28')](handleError(_0x992c77,null));};exports['create']=function(_0x2f82da,_0x1bf38a){return db['ChatMessage']['create'](_0x2f82da[_0x0a9e('0x54')],{})[_0x0a9e('0x1d')](respondWithResult(_0x1bf38a,0xc9))['catch'](handleError(_0x1bf38a,null));};exports[_0x0a9e('0x35')]=function(_0x5ce9ac,_0x211ef9){if(_0x5ce9ac['body']['id']){delete _0x5ce9ac[_0x0a9e('0x54')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ce9ac['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x211ef9,null))['then'](saveUpdates(_0x5ce9ac[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](respondWithResult(_0x211ef9,null))[_0x0a9e('0x28')](handleError(_0x211ef9,null));};exports[_0x0a9e('0x36')]=function(_0x232830,_0x272738){return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x232830['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x272738,null))[_0x0a9e('0x1d')](removeEntity(_0x272738,null))[_0x0a9e('0x28')](handleError(_0x272738,null));};exports[_0x0a9e('0x56')]=function(_0xb83dfd,_0x156662){return db['ChatMessage'][_0x0a9e('0x56')]()[_0x0a9e('0x1d')](respondWithResult(_0x156662,null))['catch'](handleError(_0x156662,null));};var interaction_log=require(_0x0a9e('0x57'))('chat-interactions');exports[_0x0a9e('0x58')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee){var _0x273cb5={'agent':{},'channel':'chat'};if(_0x5ba1f9[_0x0a9e('0x54')]['id']){delete _0x5ba1f9[_0x0a9e('0x54')]['id'];}_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x59')]=!![];_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5a')]=moment()['format'](_0x0a9e('0x5b'));_0x5ba1f9['body'][_0x0a9e('0x5c')]=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')]||_0x5ba1f9['user']['id'];_0x273cb5[_0x0a9e('0x5d')]['id']=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')];return db[_0x0a9e('0x3b')]['find']({'where':{'id':_0x5ba1f9[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](saveUpdates(_0x5ba1f9[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](function(_0x88dcbf){if(_0x88dcbf){_0x273cb5[_0x0a9e('0x26')]=_0x88dcbf[_0x0a9e('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0a9e('0x55')]({'where':{'id':_0x88dcbf[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](function(_0x3528b7){if(_0x3528b7){return _0x3528b7['update']({'UserId':_0x5ba1f9['body'][_0x0a9e('0x5c')],'read1stAt':_[_0x0a9e('0x60')](_0x3528b7[_0x0a9e('0x61')])?moment()[_0x0a9e('0x62')](_0x0a9e('0x5b')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x387489){if(_0x387489){_0x273cb5[_0x0a9e('0x63')]=_0x387489[_0x0a9e('0x5e')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')](_0x0a9e('0x64'),_0x5ba1f9[_0x0a9e('0x65')]['id'],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x66')],_0x273cb5[_0x0a9e('0x63')]['id'],_0x5ba1f9[_0x0a9e('0x54')]?JSON['stringify'](_0x5ba1f9[_0x0a9e('0x54')]):_0x0a9e('0x67'));return respondWithRpcPromise(_0x0a9e('0x68'),'acceptMessage',_0x273cb5);}return null;})[_0x0a9e('0x1d')](function(_0x30944e){var _0x4b341d=_0x0a9e('0x69')+_0x30944e[_0x0a9e('0x26')][_0x0a9e('0x6a')];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0x4b341d,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0a9e('0x1d')](function(_0x18bf5d){return _0x18bf5d;});})[_0x0a9e('0x1d')](function(_0x23a7d3){if(_0x23a7d3){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x23a7d3[0x0];if(!_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),'fullname',_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})['then'](function(_0x2ed01e){if(!_0x2ed01e)return null;_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x2ed01e;return _0x273cb5;})[_0x0a9e('0x1d')](function(_0x542ece){if(_0x542ece){if(_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x6f')]){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x70')]=util['format'](_0x0a9e('0x71'),_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')]);_0x273cb5[_0x0a9e('0x26')]['channel']=_0x273cb5[_0x0a9e('0x72')];_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x58');return respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x75'),'message':_[_0x0a9e('0x4c')](_0x273cb5[_0x0a9e('0x26')],JSON[_0x0a9e('0x76')](_0x273cb5[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x273cb5;});}return _0x273cb5;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4b3c1a,null))['catch'](handleError(_0x4b3c1a,null));};var interaction_log=require(_0x0a9e('0x57'))(_0x0a9e('0x78'));exports[_0x0a9e('0x33')]=function(_0x563627,_0x3736e0,_0x33dda0){var _0x8cea96={'agent':{},'channel':_0x0a9e('0x79')};if(_0x563627['body']['id']){delete _0x563627['body']['id'];}_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')]=_0x563627['body'][_0x0a9e('0x5c')]||_0x563627['user']['id'];_0x8cea96[_0x0a9e('0x5d')]['id']=_0x563627[_0x0a9e('0x54')]['UserId'];return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))[_0x0a9e('0x1d')](function(_0x1f42a0){if(_0x1f42a0){_0x8cea96[_0x0a9e('0x26')]=_0x1f42a0['get']({'plain':!![]});return db[_0x0a9e('0x7a')][_0x0a9e('0x55')]({'where':{'id':_0x1f42a0[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))['then'](function(_0xf51744){if(_0xf51744){_0x8cea96[_0x0a9e('0x63')]=_0xf51744['get']({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x563627[_0x0a9e('0x65')]['id'],_0x563627[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x563627[_0x0a9e('0x65')]['role'],_0x8cea96['interaction']['id'],_0x563627[_0x0a9e('0x54')]?JSON[_0x0a9e('0x23')](_0x563627[_0x0a9e('0x54')]):'null');return respondWithRpcPromise(_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x8cea96);}return null;})['then'](function(_0x4e46b2){var _0xf0a802='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e46b2['message']['ContactId'];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0xf0a802,{'type':db[_0x0a9e('0x7d')][_0x0a9e('0x7e')][_0x0a9e('0x7f')],'raw':!![]})[_0x0a9e('0x1d')](function(_0x5a8854){return _0x5a8854;});})[_0x0a9e('0x1d')](function(_0x5955f1){if(_0x5955f1){_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x5955f1[0x0];if(!_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),_0x0a9e('0x80'),_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})[_0x0a9e('0x1d')](function(_0x1910bf){if(!_0x1910bf)return null;_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x1910bf;return _0x8cea96;})['then'](function(_0x2645d6){if(_0x2645d6){_0x2645d6[_0x0a9e('0x26')]['interface']=util[_0x0a9e('0x62')](_0x0a9e('0x71'),_0x563627[_0x0a9e('0x65')]['name']);_0x2645d6[_0x0a9e('0x26')]['channel']=_0x8cea96[_0x0a9e('0x72')];_0x2645d6[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x33');respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x81'),'message':_[_0x0a9e('0x4c')](_0x8cea96['message'],JSON[_0x0a9e('0x76')](_0x8cea96[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002);return _0x8cea96;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x3736e0,null))[_0x0a9e('0x28')](handleError(_0x3736e0,null));};
\ No newline at end of file
+var _0xd432=['index','map','ChatMessage','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','describe','chat-interactions','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','null','RejectMessage','rejectMessage','ContactId','motionChannel','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0xd432,0x15c));var _0x2d43=function(_0x51448f,_0x51c208){_0x51448f=_0x51448f-0x0;var _0x16cc33=_0xd432[_0x51448f];return _0x16cc33;};'use strict';var emlformat=require(_0x2d43('0x0'));var rimraf=require(_0x2d43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2d43('0x2'));var rp=require(_0x2d43('0x3'));var moment=require(_0x2d43('0x4'));var BPromise=require(_0x2d43('0x5'));var Mustache=require(_0x2d43('0x6'));var util=require(_0x2d43('0x7'));var path=require(_0x2d43('0x8'));var sox=require(_0x2d43('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2d43('0xa'));var squel=require(_0x2d43('0xb'));var crypto=require('crypto');var jsforce=require(_0x2d43('0xc'));var deskjs=require(_0x2d43('0xd'));var toCsv=require(_0x2d43('0xe'));var querystring=require(_0x2d43('0xf'));var Papa=require(_0x2d43('0x10'));var Redis=require(_0x2d43('0x11'));var authService=require(_0x2d43('0x12'));var qs=require(_0x2d43('0x13'));var as=require(_0x2d43('0x14'));var hardwareService=require(_0x2d43('0x15'));var logger=require(_0x2d43('0x16'))('api');var utils=require(_0x2d43('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2d43('0x18'));var db=require(_0x2d43('0x19'))['db'];config[_0x2d43('0x1a')]=_['defaults'](config[_0x2d43('0x1a')],{'host':_0x2d43('0x1b'),'port':0x18eb});var socket=require(_0x2d43('0x1c'))(new Redis(config['redis']));require(_0x2d43('0x1d'))[_0x2d43('0x1e')](socket);var jayson=require(_0x2d43('0x1f'));var client=jayson[_0x2d43('0x20')][_0x2d43('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x2d43('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x40ff52,_0x597182,_0x470893,_0x3d86bc){return new BPromise(function(_0x3ff6b,_0x300dc8){var _0x150d90=_0x3d86bc||client;return _0x150d90[_0x2d43('0x22')](_0x40ff52,_0x470893)[_0x2d43('0x23')](function(_0x81d389){logger[_0x2d43('0x24')](_0x2d43('0x25'),_0x597182,_0x2d43('0x26'));logger['debug'](_0x2d43('0x27'),_0x597182,_0x2d43('0x26'),JSON[_0x2d43('0x28')](_0x81d389));if(_0x81d389[_0x2d43('0x29')]){if(_0x81d389[_0x2d43('0x29')][_0x2d43('0x2a')]===0x1f4){logger[_0x2d43('0x29')](_0x2d43('0x25'),_0x597182,_0x81d389['error']['message']);return _0x300dc8(_0x81d389[_0x2d43('0x29')][_0x2d43('0x2b')]);}logger['error'](_0x2d43('0x25'),_0x597182,_0x81d389[_0x2d43('0x29')]['message']);return _0x3ff6b(_0x81d389['error'][_0x2d43('0x2b')]);}else{logger['info'](_0x2d43('0x25'),_0x597182,'request\x20sent');_0x3ff6b(_0x81d389[_0x2d43('0x2c')][_0x2d43('0x2b')]);}})['catch'](function(_0xfd45ac){logger[_0x2d43('0x29')](_0x2d43('0x25'),_0x597182,_0xfd45ac);_0x300dc8(_0xfd45ac);});});}function respondWithStatusCode(_0x2661c2,_0x5e7881){_0x5e7881=_0x5e7881||0xcc;return function(_0x29eb6f){if(_0x29eb6f){return _0x2661c2[_0x2d43('0x2d')](_0x5e7881);}return _0x2661c2[_0x2d43('0x2e')](_0x5e7881)[_0x2d43('0x2f')]();};}function respondWithResult(_0xfcd274,_0x1c691c){_0x1c691c=_0x1c691c||0xc8;return function(_0x4334ea){if(_0x4334ea){return _0xfcd274[_0x2d43('0x2e')](_0x1c691c)[_0x2d43('0x30')](_0x4334ea);}};}function respondWithFilteredResult(_0x84ff60,_0x445b97){return function(_0x98467){if(_0x98467){var _0x299d3e=typeof _0x445b97[_0x2d43('0x31')]===_0x2d43('0x32')&&typeof _0x445b97[_0x2d43('0x33')]==='undefined';var _0x17f675=_0x98467[_0x2d43('0x34')];var _0x408462=_0x299d3e?0x0:_0x445b97[_0x2d43('0x31')];var _0x1d639f=_0x299d3e?_0x98467[_0x2d43('0x34')]:_0x445b97['offset']+_0x445b97[_0x2d43('0x33')];var _0x11d175;if(_0x1d639f>=_0x17f675){_0x1d639f=_0x17f675;_0x11d175=0xc8;}else{_0x11d175=0xce;}_0x84ff60[_0x2d43('0x2e')](_0x11d175);return _0x84ff60[_0x2d43('0x35')](_0x2d43('0x36'),_0x408462+'-'+_0x1d639f+'/'+_0x17f675)[_0x2d43('0x30')](_0x98467);}return null;};}function patchUpdates(_0x1379ed){return function(_0x4404c2){try{jsonpatch[_0x2d43('0x37')](_0x4404c2,_0x1379ed,!![]);}catch(_0x2b1fed){return BPromise[_0x2d43('0x38')](_0x2b1fed);}return _0x4404c2[_0x2d43('0x39')]();};}function saveUpdates(_0x1eec69,_0x216c0a){return function(_0x32f1a7){if(_0x32f1a7){return _0x32f1a7[_0x2d43('0x3a')](_0x1eec69)[_0x2d43('0x23')](function(_0x100139){return _0x100139;});}return null;};}function removeEntity(_0x2ee489,_0x435b1a){return function(_0x1acd13){if(_0x1acd13){return _0x1acd13[_0x2d43('0x3b')]()[_0x2d43('0x23')](function(){_0x2ee489[_0x2d43('0x2e')](0xcc)[_0x2d43('0x2f')]();});}};}function handleEntityNotFound(_0x20c1b8,_0x5a8317){return function(_0x5ed645){if(!_0x5ed645){_0x20c1b8[_0x2d43('0x2d')](0x194);}return _0x5ed645;};}function handleError(_0x4c65c5,_0x1b0b9e){_0x1b0b9e=_0x1b0b9e||0x1f4;return function(_0x80d39d){logger['error'](_0x80d39d[_0x2d43('0x3c')]);if(_0x80d39d[_0x2d43('0x3d')]){delete _0x80d39d[_0x2d43('0x3d')];}_0x4c65c5[_0x2d43('0x2e')](_0x1b0b9e)[_0x2d43('0x3e')](_0x80d39d);};}exports[_0x2d43('0x3f')]=function(_0x583ae9,_0x5b26a0){var _0x35d889={},_0x8832ba={},_0x21f275={'count':0x0,'rows':[]};var _0x363f70=_[_0x2d43('0x40')](db[_0x2d43('0x41')][_0x2d43('0x42')],function(_0x5eafd9){return{'name':_0x5eafd9['fieldName'],'type':_0x5eafd9[_0x2d43('0x43')][_0x2d43('0x44')]};});_0x8832ba[_0x2d43('0x45')]=_[_0x2d43('0x40')](_0x363f70,_0x2d43('0x3d'));_0x8832ba[_0x2d43('0x46')]=_['keys'](_0x583ae9[_0x2d43('0x46')]);_0x8832ba[_0x2d43('0x47')]=_['intersection'](_0x8832ba['model'],_0x8832ba[_0x2d43('0x46')]);_0x35d889[_0x2d43('0x48')]=_[_0x2d43('0x49')](_0x8832ba['model'],qs[_0x2d43('0x4a')](_0x583ae9['query'][_0x2d43('0x4a')]));_0x35d889[_0x2d43('0x48')]=_0x35d889['attributes'][_0x2d43('0x4b')]?_0x35d889[_0x2d43('0x48')]:_0x8832ba[_0x2d43('0x45')];if(!_0x583ae9[_0x2d43('0x46')][_0x2d43('0x4c')](_0x2d43('0x4d'))){_0x35d889[_0x2d43('0x33')]=qs[_0x2d43('0x33')](_0x583ae9[_0x2d43('0x46')][_0x2d43('0x33')]);_0x35d889['offset']=qs[_0x2d43('0x31')](_0x583ae9[_0x2d43('0x46')][_0x2d43('0x31')]);}_0x35d889[_0x2d43('0x4e')]=qs[_0x2d43('0x4f')](_0x583ae9[_0x2d43('0x46')][_0x2d43('0x4f')]);_0x35d889[_0x2d43('0x50')]=qs[_0x2d43('0x47')](_[_0x2d43('0x51')](_0x583ae9[_0x2d43('0x46')],_0x8832ba['filters']),_0x363f70);if(_0x583ae9[_0x2d43('0x46')][_0x2d43('0x52')]){_0x35d889[_0x2d43('0x50')]=_[_0x2d43('0x53')](_0x35d889[_0x2d43('0x50')],{'$or':_[_0x2d43('0x40')](_0x363f70,function(_0x4f7501){if(_0x4f7501[_0x2d43('0x43')]!==_0x2d43('0x54')){var _0xf6cb92={};_0xf6cb92[_0x4f7501['name']]={'$like':'%'+_0x583ae9[_0x2d43('0x46')][_0x2d43('0x52')]+'%'};return _0xf6cb92;}})});}_0x35d889=_[_0x2d43('0x53')]({},_0x35d889,_0x583ae9[_0x2d43('0x55')]);var _0x1078ad={'where':_0x35d889[_0x2d43('0x50')]};return db[_0x2d43('0x41')][_0x2d43('0x34')](_0x1078ad)[_0x2d43('0x23')](function(_0x1b3361){_0x21f275[_0x2d43('0x34')]=_0x1b3361;if(_0x583ae9['query'][_0x2d43('0x56')]){_0x35d889[_0x2d43('0x57')]=[{'all':!![]}];}return db[_0x2d43('0x41')]['findAll'](_0x35d889);})[_0x2d43('0x23')](function(_0x1f0b4c){_0x21f275[_0x2d43('0x58')]=_0x1f0b4c;return _0x21f275;})[_0x2d43('0x23')](respondWithFilteredResult(_0x5b26a0,_0x35d889))[_0x2d43('0x59')](handleError(_0x5b26a0,null));};exports[_0x2d43('0x5a')]=function(_0x5be686,_0x5096b9){var _0x343ff7={'raw':!![],'where':{'id':_0x5be686[_0x2d43('0x5b')]['id']}},_0x44a4b0={};_0x44a4b0[_0x2d43('0x45')]=_['keys'](db[_0x2d43('0x41')][_0x2d43('0x42')]);_0x44a4b0[_0x2d43('0x46')]=_[_0x2d43('0x5c')](_0x5be686[_0x2d43('0x46')]);_0x44a4b0[_0x2d43('0x47')]=_[_0x2d43('0x49')](_0x44a4b0['model'],_0x44a4b0[_0x2d43('0x46')]);_0x343ff7['attributes']=_[_0x2d43('0x49')](_0x44a4b0['model'],qs['fields'](_0x5be686[_0x2d43('0x46')][_0x2d43('0x4a')]));_0x343ff7[_0x2d43('0x48')]=_0x343ff7[_0x2d43('0x48')][_0x2d43('0x4b')]?_0x343ff7[_0x2d43('0x48')]:_0x44a4b0[_0x2d43('0x45')];if(_0x5be686[_0x2d43('0x46')][_0x2d43('0x56')]){_0x343ff7[_0x2d43('0x57')]=[{'all':!![]}];}_0x343ff7=_['merge']({},_0x343ff7,_0x5be686[_0x2d43('0x55')]);return db[_0x2d43('0x41')][_0x2d43('0x5d')](_0x343ff7)[_0x2d43('0x23')](handleEntityNotFound(_0x5096b9,null))[_0x2d43('0x23')](respondWithResult(_0x5096b9,null))[_0x2d43('0x59')](handleError(_0x5096b9,null));};exports[_0x2d43('0x5e')]=function(_0x3b8900,_0x130e99){return db[_0x2d43('0x41')][_0x2d43('0x5e')](_0x3b8900[_0x2d43('0x5f')],{})['then'](respondWithResult(_0x130e99,0xc9))['catch'](handleError(_0x130e99,null));};exports[_0x2d43('0x3a')]=function(_0x8e0a87,_0x20849f){if(_0x8e0a87['body']['id']){delete _0x8e0a87[_0x2d43('0x5f')]['id'];}return db[_0x2d43('0x41')]['find']({'where':{'id':_0x8e0a87[_0x2d43('0x5b')]['id']}})[_0x2d43('0x23')](handleEntityNotFound(_0x20849f,null))[_0x2d43('0x23')](saveUpdates(_0x8e0a87[_0x2d43('0x5f')],null))[_0x2d43('0x23')](respondWithResult(_0x20849f,null))[_0x2d43('0x59')](handleError(_0x20849f,null));};exports[_0x2d43('0x3b')]=function(_0x5b544c,_0x5261ea){return db[_0x2d43('0x41')]['find']({'where':{'id':_0x5b544c[_0x2d43('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5261ea,null))[_0x2d43('0x23')](removeEntity(_0x5261ea,null))[_0x2d43('0x59')](handleError(_0x5261ea,null));};exports[_0x2d43('0x60')]=function(_0x6c9c7b,_0x58c955){return db['ChatMessage']['describe']()[_0x2d43('0x23')](respondWithResult(_0x58c955,null))['catch'](handleError(_0x58c955,null));};var interaction_log=require(_0x2d43('0x16'))(_0x2d43('0x61'));exports[_0x2d43('0x62')]=function(_0x40c203,_0x1832f0,_0x3175f5){var _0x27a133={'agent':{},'channel':_0x2d43('0x63')};if(_0x40c203[_0x2d43('0x5f')]['id']){delete _0x40c203['body']['id'];}_0x40c203[_0x2d43('0x5f')]['read']=!![];_0x40c203[_0x2d43('0x5f')]['readAt']=moment()[_0x2d43('0x64')](_0x2d43('0x65'));_0x40c203[_0x2d43('0x5f')]['UserId']=_0x40c203[_0x2d43('0x5f')][_0x2d43('0x66')]||_0x40c203[_0x2d43('0x67')]['id'];_0x27a133[_0x2d43('0x68')]['id']=_0x40c203[_0x2d43('0x5f')]['UserId'];return db[_0x2d43('0x41')][_0x2d43('0x5d')]({'where':{'id':_0x40c203[_0x2d43('0x5b')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1832f0,null))['then'](saveUpdates(_0x40c203[_0x2d43('0x5f')],null))[_0x2d43('0x23')](function(_0x4959d6){if(_0x4959d6){_0x27a133['message']=_0x4959d6[_0x2d43('0x69')]({'plain':!![]});return db[_0x2d43('0x6a')][_0x2d43('0x5d')]({'where':{'id':_0x4959d6[_0x2d43('0x6b')]}});}return null;})[_0x2d43('0x23')](handleEntityNotFound(_0x1832f0,null))['then'](function(_0x3d5f1c){if(_0x3d5f1c){return _0x3d5f1c[_0x2d43('0x3a')]({'UserId':_0x40c203['body'][_0x2d43('0x66')],'read1stAt':_[_0x2d43('0x6c')](_0x3d5f1c[_0x2d43('0x6d')])?moment()[_0x2d43('0x64')](_0x2d43('0x65')):undefined});}return null;})[_0x2d43('0x23')](function(_0x530dbf){if(_0x530dbf){_0x27a133[_0x2d43('0x6e')]=_0x530dbf[_0x2d43('0x69')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x40c203[_0x2d43('0x67')]['id'],_0x40c203['user']['name'],_0x40c203[_0x2d43('0x67')]['role'],_0x27a133[_0x2d43('0x6e')]['id'],_0x40c203[_0x2d43('0x5f')]?JSON[_0x2d43('0x28')](_0x40c203['body']):'null');return respondWithRpcPromise(_0x2d43('0x6f'),_0x2d43('0x70'),_0x27a133);}return null;})['then'](function(_0x453e88){var _0x52a28a=_0x2d43('0x71')+_0x453e88[_0x2d43('0x2b')]['ContactId'];return db[_0x2d43('0x72')][_0x2d43('0x46')](_0x52a28a,{'type':db[_0x2d43('0x73')][_0x2d43('0x74')]['SELECT'],'raw':!![]})['then'](function(_0x5992ce){return _0x5992ce;});})[_0x2d43('0x23')](function(_0x223397){if(_0x223397){_0x27a133['message'][_0x2d43('0x75')]=_0x223397[0x0];if(!_0x40c203[_0x2d43('0x5f')]['UserId'])return;return db[_0x2d43('0x76')][_0x2d43('0x5d')]({'where':{'id':_0x40c203['body']['UserId'],'role':'agent'},'attributes':['id',_0x2d43('0x3d'),_0x2d43('0x77'),_0x2d43('0x78'),_0x2d43('0x79')],'raw':!![]});}return null;})[_0x2d43('0x23')](function(_0x3e1aa4){if(!_0x3e1aa4)return null;_0x27a133[_0x2d43('0x2b')][_0x2d43('0x68')]=_0x3e1aa4;return _0x27a133;})['then'](function(_0x18881b){if(_0x18881b){if(_0x40c203[_0x2d43('0x5f')][_0x2d43('0x7a')]){_0x27a133[_0x2d43('0x2b')][_0x2d43('0x7b')]=util[_0x2d43('0x64')](_0x2d43('0x7c'),_0x40c203[_0x2d43('0x67')][_0x2d43('0x3d')]);_0x27a133[_0x2d43('0x2b')][_0x2d43('0x7d')]=_0x27a133[_0x2d43('0x7d')];_0x27a133[_0x2d43('0x2b')]['motionChannel']=_0x27a133['channel'];_0x27a133[_0x2d43('0x2b')][_0x2d43('0x7e')]=_0x2d43('0x62');return respondWithRpcPromise(_0x2d43('0x7f'),_0x2d43('0x7f'),{'event':_0x2d43('0x80'),'message':_[_0x2d43('0x53')](_0x27a133['message'],JSON[_0x2d43('0x81')](_0x27a133[_0x2d43('0x6e')][_0x2d43('0x82')]))},client9002)['then'](function(){return _0x27a133;});}return _0x27a133;}return null;})['then'](respondWithResult(_0x1832f0,null))[_0x2d43('0x59')](handleError(_0x1832f0,null));};var interaction_log=require(_0x2d43('0x16'))(_0x2d43('0x61'));exports[_0x2d43('0x38')]=function(_0x22af22,_0x598545,_0x4d5628){var _0xf531d2={'agent':{},'channel':_0x2d43('0x63')};if(_0x22af22['body']['id']){delete _0x22af22['body']['id'];}_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')]=_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')]||_0x22af22['user']['id'];_0xf531d2[_0x2d43('0x68')]['id']=_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')];return db[_0x2d43('0x41')][_0x2d43('0x5d')]({'where':{'id':_0x22af22[_0x2d43('0x5b')]['id'],'UserId':null}})[_0x2d43('0x23')](handleEntityNotFound(_0x598545,null))[_0x2d43('0x23')](function(_0x12d404){if(_0x12d404){_0xf531d2[_0x2d43('0x2b')]=_0x12d404['get']({'plain':!![]});return db[_0x2d43('0x6a')][_0x2d43('0x5d')]({'where':{'id':_0x12d404[_0x2d43('0x6b')]}});}return null;})[_0x2d43('0x23')](handleEntityNotFound(_0x598545,null))[_0x2d43('0x23')](function(_0xf7dfc5){if(_0xf7dfc5){_0xf531d2['interaction']=_0xf7dfc5[_0x2d43('0x69')]({'plain':!![]});interaction_log[_0x2d43('0x24')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x22af22[_0x2d43('0x67')]['id'],_0x22af22[_0x2d43('0x67')][_0x2d43('0x3d')],_0x22af22[_0x2d43('0x67')]['role'],_0xf531d2[_0x2d43('0x6e')]['id'],_0x22af22[_0x2d43('0x5f')]?JSON[_0x2d43('0x28')](_0x22af22[_0x2d43('0x5f')]):_0x2d43('0x83'));return respondWithRpcPromise(_0x2d43('0x84'),_0x2d43('0x85'),_0xf531d2);}return null;})[_0x2d43('0x23')](function(_0x548061){var _0x78a69f=_0x2d43('0x71')+_0x548061[_0x2d43('0x2b')][_0x2d43('0x86')];return db[_0x2d43('0x72')][_0x2d43('0x46')](_0x78a69f,{'type':db[_0x2d43('0x73')][_0x2d43('0x74')]['SELECT'],'raw':!![]})[_0x2d43('0x23')](function(_0x5027d8){return _0x5027d8;});})[_0x2d43('0x23')](function(_0x3af216){if(_0x3af216){_0xf531d2[_0x2d43('0x2b')][_0x2d43('0x75')]=_0x3af216[0x0];if(!_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')])return;return db[_0x2d43('0x76')][_0x2d43('0x5d')]({'where':{'id':_0x22af22[_0x2d43('0x5f')]['UserId'],'role':_0x2d43('0x68')},'attributes':['id','name','fullname',_0x2d43('0x78'),'internal'],'raw':!![]});}return null;})[_0x2d43('0x23')](function(_0x2e97c4){if(!_0x2e97c4)return null;_0xf531d2['message'][_0x2d43('0x68')]=_0x2e97c4;return _0xf531d2;})[_0x2d43('0x23')](function(_0x46d5e9){if(_0x46d5e9){_0x46d5e9[_0x2d43('0x2b')][_0x2d43('0x7b')]=util[_0x2d43('0x64')]('SIP/%s',_0x22af22[_0x2d43('0x67')][_0x2d43('0x3d')]);_0x46d5e9[_0x2d43('0x2b')]['channel']=_0xf531d2[_0x2d43('0x7d')];_0x46d5e9[_0x2d43('0x2b')][_0x2d43('0x87')]=_0xf531d2[_0x2d43('0x7d')];_0x46d5e9[_0x2d43('0x2b')]['event']=_0x2d43('0x38');respondWithRpcPromise(_0x2d43('0x7f'),_0x2d43('0x7f'),{'event':_0x2d43('0x88'),'message':_[_0x2d43('0x53')](_0xf531d2[_0x2d43('0x2b')],JSON['parse'](_0xf531d2[_0x2d43('0x6e')][_0x2d43('0x82')]))},client9002);return _0xf531d2;}return null;})[_0x2d43('0x23')](respondWithResult(_0x598545,null))[_0x2d43('0x59')](handleError(_0x598545,null));};
\ No newline at end of file
index 2a58b73..6177939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd8f=['hook','exports','events','ChatMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x505c95,_0x19f37d){var _0x1266cd=function(_0x294a96){while(--_0x294a96){_0x505c95['push'](_0x505c95['shift']());}};_0x1266cd(++_0x19f37d);}(_0xfd8f,0x19c));var _0xffd8=function(_0x31d927,_0x236eb1){_0x31d927=_0x31d927-0x0;var _0x439b70=_0xfd8f[_0x31d927];return _0x439b70;};'use strict';var EventEmitter=require(_0xffd8('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0xffd8('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xffd8('0x2')](0x0);var events={'afterCreate':_0xffd8('0x3'),'afterUpdate':_0xffd8('0x4'),'afterDestroy':_0xffd8('0x5')};function emitEvent(_0x27df06){return function(_0x4548ee,_0x5a7b65,_0xbd2bea){ChatMessageEvents[_0xffd8('0x6')](_0x27df06+':'+_0x4548ee['id'],_0x4548ee);ChatMessageEvents[_0xffd8('0x6')](_0x27df06,_0x4548ee);_0xbd2bea(null);};}for(var e in events){if(events[_0xffd8('0x7')](e)){var event=events[e];ChatMessage[_0xffd8('0x8')](e,emitEvent(event));}}module[_0xffd8('0x9')]=ChatMessageEvents;
\ No newline at end of file
+var _0x91fc=['save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0x2236c1,_0x1aa68e){var _0x4d8284=function(_0xf64989){while(--_0xf64989){_0x2236c1['push'](_0x2236c1['shift']());}};_0x4d8284(++_0x1aa68e);}(_0x91fc,0x12f));var _0xc91f=function(_0x263793,_0x1afda4){_0x263793=_0x263793-0x0;var _0x205c2f=_0x91fc[_0x263793];return _0x205c2f;};'use strict';var EventEmitter=require(_0xc91f('0x0'));var ChatMessage=require(_0xc91f('0x1'))['db'][_0xc91f('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc91f('0x3'),'afterUpdate':_0xc91f('0x4'),'afterDestroy':'remove'};function emitEvent(_0xa4d8ad){return function(_0x43d6a5,_0x5c8a74,_0x2c7c38){ChatMessageEvents[_0xc91f('0x5')](_0xa4d8ad+':'+_0x43d6a5['id'],_0x43d6a5);ChatMessageEvents['emit'](_0xa4d8ad,_0x43d6a5);_0x2c7c38(null);};}for(var e in events){if(events[_0xc91f('0x6')](e)){var event=events[e];ChatMessage[_0xc91f('0x7')](e,emitEvent(event));}}module[_0xc91f('0x8')]=ChatMessageEvents;
\ No newline at end of file
index 45ae7d0..357a1c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dbf=['error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','models','direction','toLowerCase','out','isNil','UserId','ChatInteraction','findOne','then','update','createdAt','catch'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x3dbf,0x8f));var _0xf3db=function(_0x33076f,_0x1b1a84){_0x33076f=_0x33076f-0x0;var _0x47aa7b=_0x3dbf[_0x33076f];return _0x47aa7b;};'use strict';var _=require('lodash');var util=require(_0xf3db('0x0'));var logger=require(_0xf3db('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf3db('0x2'));var rp=require(_0xf3db('0x3'));var fs=require('fs');var path=require(_0xf3db('0x4'));var rimraf=require(_0xf3db('0x5'));var config=require(_0xf3db('0x6'));var attributes=require(_0xf3db('0x7'));module[_0xf3db('0x8')]=function(_0x5644db,_0x80b3d6){return _0x5644db[_0xf3db('0x9')](_0xf3db('0xa'),attributes,{'tableName':_0xf3db('0xb'),'paranoid':![],'indexes':[{'name':_0xf3db('0xc'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1c9610,_0x468a12,_0x24f61d){var _0x4bf5ea=_0x5644db[_0xf3db('0xd')];var _0x3ea20e=_0x1c9610['get']({'plain':!![]});if(_0x3ea20e[_0xf3db('0xe')][_0xf3db('0xf')]()==='in'||_0x3ea20e[_0xf3db('0xe')][_0xf3db('0xf')]()===_0xf3db('0x10')&&!_0x3ea20e['secret']&&!_[_0xf3db('0x11')](_0x3ea20e[_0xf3db('0x12')])){_0x4bf5ea[_0xf3db('0x13')][_0xf3db('0x14')]({'where':{'id':_0x3ea20e['ChatInteractionId']}})[_0xf3db('0x15')](function(_0x156969){if(_0x156969){_0x156969[_0xf3db('0x16')]({'lastMsgAt':_0x3ea20e[_0xf3db('0x17')],'lastMsgDirection':_0x3ea20e[_0xf3db('0xe')]['toLowerCase']()});}})[_0xf3db('0x18')](function(_0x3be46e){console[_0xf3db('0x19')](_0x3be46e);});}_0x24f61d();}},'charset':_0xf3db('0x1a'),'collate':_0xf3db('0x1b')});};
\ No newline at end of file
+var _0x5d0f=['direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','request-promise','path','../../config/environment','./chatMessage.attributes','exports','define','chat_messages','fti_chat_messages','body','models','get'];(function(_0x274394,_0x6fd912){var _0x2a2773=function(_0x2ab84c){while(--_0x2ab84c){_0x274394['push'](_0x274394['shift']());}};_0x2a2773(++_0x6fd912);}(_0x5d0f,0x126));var _0xf5d0=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0x5d0f[_0x352e09];return _0x1b7094;};'use strict';var _=require(_0xf5d0('0x0'));var util=require(_0xf5d0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf5d0('0x2'));var BPromise=require('bluebird');var rp=require(_0xf5d0('0x3'));var fs=require('fs');var path=require(_0xf5d0('0x4'));var rimraf=require('rimraf');var config=require(_0xf5d0('0x5'));var attributes=require(_0xf5d0('0x6'));module[_0xf5d0('0x7')]=function(_0x1c9b59,_0x1cf225){return _0x1c9b59[_0xf5d0('0x8')]('ChatMessage',attributes,{'tableName':_0xf5d0('0x9'),'paranoid':![],'indexes':[{'name':_0xf5d0('0xa'),'fields':[_0xf5d0('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5eb171,_0x5c40e6,_0x34d78c){var _0x52617=_0x1c9b59[_0xf5d0('0xc')];var _0x27730e=_0x5eb171[_0xf5d0('0xd')]({'plain':!![]});if(_0x27730e[_0xf5d0('0xe')][_0xf5d0('0xf')]()==='in'||_0x27730e[_0xf5d0('0xe')]['toLowerCase']()===_0xf5d0('0x10')&&!_0x27730e[_0xf5d0('0x11')]&&!_[_0xf5d0('0x12')](_0x27730e[_0xf5d0('0x13')])){_0x52617[_0xf5d0('0x14')][_0xf5d0('0x15')]({'where':{'id':_0x27730e[_0xf5d0('0x16')]}})[_0xf5d0('0x17')](function(_0x3fdc00){if(_0x3fdc00){_0x3fdc00['update']({'lastMsgAt':_0x27730e[_0xf5d0('0x18')],'lastMsgDirection':_0x27730e[_0xf5d0('0xe')][_0xf5d0('0xf')]()});}})['catch'](function(_0x6fa4a5){console[_0xf5d0('0x19')](_0x6fa4a5);});}_0x34d78c();}},'charset':_0xf5d0('0x1a'),'collate':_0xf5d0('0x1b')});};
\ No newline at end of file
index e680c3b..21f1490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x927c=['stringify','error','message','result','CreateChatMessage','ChatMessage','create','body','options','catch','util','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','then','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x927c,0x190));var _0xc927=function(_0x1c5a9e,_0x26a8d9){_0x1c5a9e=_0x1c5a9e-0x0;var _0x1e82b6=_0x927c[_0x1c5a9e];return _0x1e82b6;};'use strict';var _=require('lodash');var util=require(_0xc927('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc927('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc927('0x2'))(_0xc927('0x3'));var config=require(_0xc927('0x4'));var jayson=require(_0xc927('0x5'));var client=jayson[_0xc927('0x6')][_0xc927('0x7')]({'port':0x232a});config[_0xc927('0x8')]=_[_0xc927('0x9')](config['redis'],{'host':_0xc927('0xa'),'port':0x18eb});var socket=require(_0xc927('0xb'))(new Redis(config[_0xc927('0x8')]));require(_0xc927('0xc'))[_0xc927('0xd')](socket);function respondWithRpcPromise(_0x1a246c,_0x4af2c5,_0x401ff3){return new BPromise(function(_0x375e17,_0x2e88ea){return client['request'](_0x1a246c,_0x401ff3)[_0xc927('0xe')](function(_0x5bc909){logger[_0xc927('0xf')](_0xc927('0x10'),_0x4af2c5,'request\x20sent');logger[_0xc927('0x11')](_0xc927('0x12'),_0x4af2c5,_0xc927('0x13'),JSON[_0xc927('0x14')](_0x5bc909));if(_0x5bc909[_0xc927('0x15')]){if(_0x5bc909[_0xc927('0x15')]['code']===0x1f4){logger[_0xc927('0x15')](_0xc927('0x10'),_0x4af2c5,_0x5bc909[_0xc927('0x15')][_0xc927('0x16')]);return _0x2e88ea(_0x5bc909[_0xc927('0x15')][_0xc927('0x16')]);}logger[_0xc927('0x15')](_0xc927('0x10'),_0x4af2c5,_0x5bc909['error'][_0xc927('0x16')]);return _0x375e17(_0x5bc909[_0xc927('0x15')][_0xc927('0x16')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x4af2c5,'request\x20sent');_0x375e17(_0x5bc909[_0xc927('0x17')][_0xc927('0x16')]);}})['catch'](function(_0x69804a){logger['error'](_0xc927('0x10'),_0x4af2c5,_0x69804a);_0x2e88ea(_0x69804a);});});}exports[_0xc927('0x18')]=function(_0x6773bc){var _0x1a8d78=this;return new Promise(function(_0x4156ec,_0x823d10){return db[_0xc927('0x19')][_0xc927('0x1a')](_0x6773bc[_0xc927('0x1b')],{'raw':_0x6773bc['options']?_0x6773bc[_0xc927('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xc927('0xe')](function(_0x59390c){logger[_0xc927('0xf')](_0xc927('0x18'),_0x6773bc);logger['debug'](_0xc927('0x18'),_0x6773bc,JSON[_0xc927('0x14')](_0x59390c));_0x4156ec(_0x59390c);})[_0xc927('0x1d')](function(_0x958ac6){logger['error'](_0xc927('0x18'),_0x958ac6[_0xc927('0x16')],_0x6773bc);_0x823d10(_0x1a8d78['error'](0x1f4,_0x958ac6[_0xc927('0x16')]));});});};
\ No newline at end of file
+var _0x3741=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring'];(function(_0x343612,_0x49f812){var _0xb90f74=function(_0x8cc7b4){while(--_0x8cc7b4){_0x343612['push'](_0x343612['shift']());}};_0xb90f74(++_0x49f812);}(_0x3741,0x17c));var _0x1374=function(_0x10c16d,_0x2b3e14){_0x10c16d=_0x10c16d-0x0;var _0x5896f4=_0x3741[_0x10c16d];return _0x5896f4;};'use strict';var _=require(_0x1374('0x0'));var util=require(_0x1374('0x1'));var moment=require(_0x1374('0x2'));var BPromise=require(_0x1374('0x3'));var rs=require(_0x1374('0x4'));var fs=require('fs');var Redis=require(_0x1374('0x5'));var db=require(_0x1374('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1374('0x7'))('rpc');var config=require(_0x1374('0x8'));var jayson=require(_0x1374('0x9'));var client=jayson[_0x1374('0xa')][_0x1374('0xb')]({'port':0x232a});config[_0x1374('0xc')]=_[_0x1374('0xd')](config[_0x1374('0xc')],{'host':_0x1374('0xe'),'port':0x18eb});var socket=require(_0x1374('0xf'))(new Redis(config[_0x1374('0xc')]));require(_0x1374('0x10'))['register'](socket);function respondWithRpcPromise(_0x47dfcc,_0x317fb5,_0x27ec85){return new BPromise(function(_0x39e8b9,_0x4a7b81){return client[_0x1374('0x11')](_0x47dfcc,_0x27ec85)[_0x1374('0x12')](function(_0x1616c3){logger[_0x1374('0x13')](_0x1374('0x14'),_0x317fb5,_0x1374('0x15'));logger[_0x1374('0x16')](_0x1374('0x17'),_0x317fb5,_0x1374('0x15'),JSON[_0x1374('0x18')](_0x1616c3));if(_0x1616c3[_0x1374('0x19')]){if(_0x1616c3[_0x1374('0x19')][_0x1374('0x1a')]===0x1f4){logger[_0x1374('0x19')](_0x1374('0x14'),_0x317fb5,_0x1616c3[_0x1374('0x19')][_0x1374('0x1b')]);return _0x4a7b81(_0x1616c3[_0x1374('0x19')][_0x1374('0x1b')]);}logger[_0x1374('0x19')]('ChatMessage,\x20%s,\x20%s',_0x317fb5,_0x1616c3['error'][_0x1374('0x1b')]);return _0x39e8b9(_0x1616c3[_0x1374('0x19')]['message']);}else{logger['info'](_0x1374('0x14'),_0x317fb5,_0x1374('0x15'));_0x39e8b9(_0x1616c3[_0x1374('0x1c')][_0x1374('0x1b')]);}})[_0x1374('0x1d')](function(_0x3416fa){logger[_0x1374('0x19')](_0x1374('0x14'),_0x317fb5,_0x3416fa);_0x4a7b81(_0x3416fa);});});}exports[_0x1374('0x1e')]=function(_0x162990){var _0x2e6417=this;return new Promise(function(_0x184358,_0x599cbf){return db['ChatMessage'][_0x1374('0x1f')](_0x162990[_0x1374('0x20')],{'raw':_0x162990[_0x1374('0x21')]?_0x162990[_0x1374('0x21')][_0x1374('0x22')]===undefined?!![]:![]:!![]})[_0x1374('0x12')](function(_0x35ae7d){logger[_0x1374('0x13')](_0x1374('0x1e'),_0x162990);logger[_0x1374('0x16')](_0x1374('0x1e'),_0x162990,JSON[_0x1374('0x18')](_0x35ae7d));_0x184358(_0x35ae7d);})[_0x1374('0x1d')](function(_0x2e122b){logger[_0x1374('0x19')]('CreateChatMessage',_0x2e122b[_0x1374('0x1b')],_0x162990);_0x599cbf(_0x2e6417['error'](0x1f4,_0x2e122b['message']));});});};
\ No newline at end of file
index 913d605..b96a6b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['save','emit','removeListener','register','length','chatMessage:'];(function(_0x19c75a,_0x5fde73){var _0xe51d07=function(_0x49b7e1){while(--_0x49b7e1){_0x19c75a['push'](_0x19c75a['shift']());}};_0xe51d07(++_0x5fde73);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x21c579,_0x1c9c8e){_0x21c579=_0x21c579-0x0;var _0x563d82=_0xdbf5[_0x21c579];return _0x563d82;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x5dbf('0x0'),'remove','update'];function createListener(_0x19d2b4,_0xfd972b){return function(_0x32ec6b){_0xfd972b[_0x5dbf('0x1')](_0x19d2b4,_0x32ec6b);};}function removeListener(_0x38b629,_0x1a1ea9){return function(){ChatMessageEvents[_0x5dbf('0x2')](_0x38b629,_0x1a1ea9);};}exports[_0x5dbf('0x3')]=function(_0x3f8628){for(var _0x3f8222=0x0,_0x209b7d=events[_0x5dbf('0x4')];_0x3f8222<_0x209b7d;_0x3f8222++){var _0x93e657=events[_0x3f8222];var _0x52b039=createListener(_0x5dbf('0x5')+_0x93e657,_0x3f8628);ChatMessageEvents['on'](_0x93e657,_0x52b039);}};
\ No newline at end of file
+var _0x2b83=['remove','removeListener','length','save'];(function(_0x4ad762,_0x3e7464){var _0x56f931=function(_0x1a6c40){while(--_0x1a6c40){_0x4ad762['push'](_0x4ad762['shift']());}};_0x56f931(++_0x3e7464);}(_0x2b83,0x1d3));var _0x32b8=function(_0x269800,_0x397af7){_0x269800=_0x269800-0x0;var _0x21f7ed=_0x2b83[_0x269800];return _0x21f7ed;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x32b8('0x0'),_0x32b8('0x1'),'update'];function createListener(_0x3fcbdc,_0x287f16){return function(_0x304105){_0x287f16['emit'](_0x3fcbdc,_0x304105);};}function removeListener(_0x51d3b4,_0xdd712a){return function(){ChatMessageEvents[_0x32b8('0x2')](_0x51d3b4,_0xdd712a);};}exports['register']=function(_0x6bbc3d){for(var _0x55abd0=0x0,_0x18150c=events[_0x32b8('0x3')];_0x55abd0<_0x18150c;_0x55abd0++){var _0x36bde3=events[_0x55abd0];var _0x10a967=createListener('chatMessage:'+_0x36bde3,_0x6bbc3d);ChatMessageEvents['on'](_0x36bde3,_0x10a967);}};
\ No newline at end of file
index cc4f489..8b32fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab70=['isAuthenticated','index','get','/describe','/:id','show','tracked','chat','create','update','put','/:id/accept','/:id/reject','reject','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x32cb1f,_0x37db1d){var _0x37f3f6=function(_0x48683d){while(--_0x48683d){_0x32cb1f['push'](_0x32cb1f['shift']());}};_0x37f3f6(++_0x37db1d);}(_0xab70,0x82));var _0x0ab7=function(_0x2a5f3d,_0x21a8a2){_0x2a5f3d=_0x2a5f3d-0x0;var _0x22ab1a=_0xab70[_0x2a5f3d];return _0x22ab1a;};'use strict';var multer=require(_0x0ab7('0x0'));var util=require('util');var path=require(_0x0ab7('0x1'));var timeout=require(_0x0ab7('0x2'));var express=require(_0x0ab7('0x3'));var router=express[_0x0ab7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0ab7('0x5'));var interaction=require(_0x0ab7('0x6'));var config=require(_0x0ab7('0x7'));var controller=require('./chatMessage.controller');router['get']('/',auth[_0x0ab7('0x8')](),controller[_0x0ab7('0x9')]);router[_0x0ab7('0xa')](_0x0ab7('0xb'),auth[_0x0ab7('0x8')](),controller['describe']);router[_0x0ab7('0xa')](_0x0ab7('0xc'),auth['isAuthenticated'](),controller[_0x0ab7('0xd')]);router['post']('/',auth[_0x0ab7('0x8')](),interaction[_0x0ab7('0xe')](_0x0ab7('0xf'),'chatmessage:create'),controller[_0x0ab7('0x10')]);router['put'](_0x0ab7('0xc'),controller[_0x0ab7('0x11')]);router[_0x0ab7('0x12')](_0x0ab7('0x13'),auth[_0x0ab7('0x8')](),controller['accept']);router[_0x0ab7('0x12')](_0x0ab7('0x14'),auth[_0x0ab7('0x8')](),controller[_0x0ab7('0x15')]);router['delete']('/:id',auth[_0x0ab7('0x8')](),controller['destroy']);module[_0x0ab7('0x16')]=router;
\ No newline at end of file
+var _0xdee4=['../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','create','put','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x534af9,_0x1fa0a8){var _0x1a79dd=function(_0x257495){while(--_0x257495){_0x534af9['push'](_0x534af9['shift']());}};_0x1a79dd(++_0x1fa0a8);}(_0xdee4,0x69));var _0x4dee=function(_0x24e71b,_0x2f73f5){_0x24e71b=_0x24e71b-0x0;var _0x303be8=_0xdee4[_0x24e71b];return _0x303be8;};'use strict';var multer=require(_0x4dee('0x0'));var util=require(_0x4dee('0x1'));var path=require('path');var timeout=require(_0x4dee('0x2'));var express=require(_0x4dee('0x3'));var router=express[_0x4dee('0x4')]();var fs_extra=require(_0x4dee('0x5'));var auth=require(_0x4dee('0x6'));var interaction=require(_0x4dee('0x7'));var config=require(_0x4dee('0x8'));var controller=require(_0x4dee('0x9'));router[_0x4dee('0xa')]('/',auth[_0x4dee('0xb')](),controller[_0x4dee('0xc')]);router[_0x4dee('0xa')](_0x4dee('0xd'),auth[_0x4dee('0xb')](),controller[_0x4dee('0xe')]);router[_0x4dee('0xa')](_0x4dee('0xf'),auth[_0x4dee('0xb')](),controller[_0x4dee('0x10')]);router[_0x4dee('0x11')]('/',auth[_0x4dee('0xb')](),interaction[_0x4dee('0x12')](_0x4dee('0x13'),'chatmessage:create'),controller[_0x4dee('0x14')]);router[_0x4dee('0x15')]('/:id',controller['update']);router[_0x4dee('0x15')](_0x4dee('0x16'),auth['isAuthenticated'](),controller[_0x4dee('0x17')]);router['put'](_0x4dee('0x18'),auth[_0x4dee('0xb')](),controller['reject']);router[_0x4dee('0x19')](_0x4dee('0xf'),auth[_0x4dee('0xb')](),controller[_0x4dee('0x1a')]);module[_0x4dee('0x1b')]=router;
\ No newline at end of file
index 1c4e22c..c001b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x352d=['TEXT','medium','sequelize','exports'];(function(_0x37e848,_0x418405){var _0x512fe7=function(_0x1652c3){while(--_0x1652c3){_0x37e848['push'](_0x37e848['shift']());}};_0x512fe7(++_0x418405);}(_0x352d,0xce));var _0xd352=function(_0x21cd8a,_0x34bbd9){_0x21cd8a=_0x21cd8a-0x0;var _0x154e70=_0x352d[_0x21cd8a];return _0x154e70;};'use strict';var Sequelize=require(_0xd352('0x0'));module[_0xd352('0x1')]={'body':{'type':Sequelize[_0xd352('0x2')](_0xd352('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0x7886=['sequelize','exports','TEXT','medium'];(function(_0x369e3d,_0x1bb259){var _0xf9567f=function(_0x40fee0){while(--_0x40fee0){_0x369e3d['push'](_0x369e3d['shift']());}};_0xf9567f(++_0x1bb259);}(_0x7886,0xc4));var _0x6788=function(_0xf11596,_0x18bfb1){_0xf11596=_0xf11596-0x0;var _0x3459cf=_0x7886[_0xf11596];return _0x3459cf;};'use strict';var Sequelize=require(_0x6788('0x0'));module[_0x6788('0x1')]={'body':{'type':Sequelize[_0x6788('0x2')](_0x6788('0x3')),'allowNull':![]}};
\ No newline at end of file
index b362619..7b639fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x7a54,0x106));var _0x47a5=function(_0x4cb3c6,_0xb22422){_0x4cb3c6=_0x4cb3c6-0x0;var _0x15afcb=_0x7a54[_0x4cb3c6];return _0x15afcb;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x7a54,0x106));var _0x47a5=function(_0x5966a9,_0x5723bf){_0x5966a9=_0x5966a9-0x0;var _0x1872c8=_0x7a54[_0x5966a9];return _0x1872c8;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index e8794e8..8f2cd2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7953=['chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','path','rimraf','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage'];(function(_0x43b584,_0x20a6bd){var _0x48f27b=function(_0x1eeb77){while(--_0x1eeb77){_0x43b584['push'](_0x43b584['shift']());}};_0x48f27b(++_0x20a6bd);}(_0x7953,0x1b0));var _0x3795=function(_0x34d275,_0x5d84ee){_0x34d275=_0x34d275-0x0;var _0x1379cc=_0x7953[_0x34d275];return _0x1379cc;};'use strict';var _=require(_0x3795('0x0'));var util=require('util');var logger=require(_0x3795('0x1'))(_0x3795('0x2'));var moment=require(_0x3795('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3795('0x4'));var rimraf=require(_0x3795('0x5'));var config=require('../../config/environment');var attributes=require(_0x3795('0x6'));module[_0x3795('0x7')]=function(_0x5ba445,_0x4f6dce){return _0x5ba445[_0x3795('0x8')](_0x3795('0x9'),attributes,{'tableName':_0x3795('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3795('0xb'),'collate':_0x3795('0xc')});};
\ No newline at end of file
+var _0xd6a3=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatOfflineMessage.attributes','exports','define','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci'];(function(_0x2b96ec,_0x3169cc){var _0x2964ac=function(_0x4b7794){while(--_0x4b7794){_0x2b96ec['push'](_0x2b96ec['shift']());}};_0x2964ac(++_0x3169cc);}(_0xd6a3,0x1b2));var _0x3d6a=function(_0x3ae505,_0x169761){_0x3ae505=_0x3ae505-0x0;var _0x7ec319=_0xd6a3[_0x3ae505];return _0x7ec319;};'use strict';var _=require(_0x3d6a('0x0'));var util=require('util');var logger=require(_0x3d6a('0x1'))(_0x3d6a('0x2'));var moment=require(_0x3d6a('0x3'));var BPromise=require(_0x3d6a('0x4'));var rp=require(_0x3d6a('0x5'));var fs=require('fs');var path=require(_0x3d6a('0x6'));var rimraf=require('rimraf');var config=require(_0x3d6a('0x7'));var attributes=require(_0x3d6a('0x8'));module[_0x3d6a('0x9')]=function(_0x3ba166,_0x17d5a3){return _0x3ba166[_0x3d6a('0xa')]('ChatOfflineMessage',attributes,{'tableName':_0x3d6a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3d6a('0xc'),'collate':_0x3d6a('0xd')});};
\ No newline at end of file
index b8c660a..677e046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe421=['result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x15a320,_0x15fc2f){var _0x6e1776=function(_0x164e61){while(--_0x164e61){_0x15a320['push'](_0x15a320['shift']());}};_0x6e1776(++_0x15fc2f);}(_0xe421,0x18d));var _0x1e42=function(_0x1793fc,_0x3789a3){_0x1793fc=_0x1793fc-0x0;var _0x25b7b9=_0xe421[_0x1793fc];return _0x25b7b9;};'use strict';var _=require(_0x1e42('0x0'));var util=require(_0x1e42('0x1'));var moment=require(_0x1e42('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1e42('0x3'));var db=require(_0x1e42('0x4'))['db'];var utils=require(_0x1e42('0x5'));var logger=require('../../config/logger')(_0x1e42('0x6'));var config=require('../../config/environment');var jayson=require(_0x1e42('0x7'));var client=jayson['client'][_0x1e42('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5eb087,_0x159cff,_0x22d013){return new BPromise(function(_0x3ea539,_0x497a62){return client['request'](_0x5eb087,_0x22d013)[_0x1e42('0x9')](function(_0x2e0ceb){logger[_0x1e42('0xa')](_0x1e42('0xb'),_0x159cff,_0x1e42('0xc'));logger[_0x1e42('0xd')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x159cff,_0x1e42('0xc'),JSON['stringify'](_0x2e0ceb));if(_0x2e0ceb['error']){if(_0x2e0ceb[_0x1e42('0xe')][_0x1e42('0xf')]===0x1f4){logger[_0x1e42('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x159cff,_0x2e0ceb[_0x1e42('0xe')]['message']);return _0x497a62(_0x2e0ceb[_0x1e42('0xe')][_0x1e42('0x10')]);}logger[_0x1e42('0xe')](_0x1e42('0xb'),_0x159cff,_0x2e0ceb[_0x1e42('0xe')][_0x1e42('0x10')]);return _0x3ea539(_0x2e0ceb[_0x1e42('0xe')]['message']);}else{logger[_0x1e42('0xa')]('ChatOfflineMessage,\x20%s,\x20%s',_0x159cff,'request\x20sent');_0x3ea539(_0x2e0ceb[_0x1e42('0x11')][_0x1e42('0x10')]);}})['catch'](function(_0x34aa1d){logger[_0x1e42('0xe')](_0x1e42('0xb'),_0x159cff,_0x34aa1d);_0x497a62(_0x34aa1d);});});}
\ No newline at end of file
+var _0xf03e=['message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2c8374,_0x5814ab){var _0x6c87d9=function(_0x175add){while(--_0x175add){_0x2c8374['push'](_0x2c8374['shift']());}};_0x6c87d9(++_0x5814ab);}(_0xf03e,0x114));var _0xef03=function(_0x4335b8,_0x42e161){_0x4335b8=_0x4335b8-0x0;var _0x3b9326=_0xf03e[_0x4335b8];return _0x3b9326;};'use strict';var _=require(_0xef03('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xef03('0x1'));var rs=require(_0xef03('0x2'));var fs=require('fs');var Redis=require(_0xef03('0x3'));var db=require(_0xef03('0x4'))['db'];var utils=require(_0xef03('0x5'));var logger=require('../../config/logger')(_0xef03('0x6'));var config=require('../../config/environment');var jayson=require(_0xef03('0x7'));var client=jayson[_0xef03('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46b4ca,_0x3c8d45,_0xaa144d){return new BPromise(function(_0x998644,_0x40a9ba){return client[_0xef03('0x9')](_0x46b4ca,_0xaa144d)[_0xef03('0xa')](function(_0x16065a){logger[_0xef03('0xb')](_0xef03('0xc'),_0x3c8d45,'request\x20sent');logger[_0xef03('0xd')](_0xef03('0xe'),_0x3c8d45,_0xef03('0xf'),JSON[_0xef03('0x10')](_0x16065a));if(_0x16065a[_0xef03('0x11')]){if(_0x16065a['error']['code']===0x1f4){logger[_0xef03('0x11')](_0xef03('0xc'),_0x3c8d45,_0x16065a[_0xef03('0x11')][_0xef03('0x12')]);return _0x40a9ba(_0x16065a['error'][_0xef03('0x12')]);}logger[_0xef03('0x11')](_0xef03('0xc'),_0x3c8d45,_0x16065a[_0xef03('0x11')][_0xef03('0x12')]);return _0x998644(_0x16065a[_0xef03('0x11')][_0xef03('0x12')]);}else{logger[_0xef03('0xb')](_0xef03('0xc'),_0x3c8d45,_0xef03('0xf'));_0x998644(_0x16065a[_0xef03('0x13')][_0xef03('0x12')]);}})[_0xef03('0x14')](function(_0xa9bb92){logger[_0xef03('0x11')](_0xef03('0xc'),_0x3c8d45,_0xa9bb92);_0x40a9ba(_0xa9bb92);});});}
\ No newline at end of file
index 822de3b..a4858dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4119=['isAuthenticated','index','/describe','post','create','/:id','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','./chatOfflineMessage.controller','get'];(function(_0x2a4497,_0x1b0574){var _0x4c6de6=function(_0x344071){while(--_0x344071){_0x2a4497['push'](_0x2a4497['shift']());}};_0x4c6de6(++_0x1b0574);}(_0x4119,0x179));var _0x9411=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x4119[_0x30ae5e];return _0x1f2e93;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9411('0x0'));var timeout=require(_0x9411('0x1'));var express=require(_0x9411('0x2'));var router=express['Router']();var fs_extra=require(_0x9411('0x3'));var auth=require(_0x9411('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9411('0x5'));router[_0x9411('0x6')]('/',auth[_0x9411('0x7')](),controller[_0x9411('0x8')]);router['get'](_0x9411('0x9'),auth[_0x9411('0x7')](),controller['describe']);router[_0x9411('0x6')]('/:id',auth[_0x9411('0x7')](),controller['show']);router[_0x9411('0xa')]('/',auth[_0x9411('0x7')](),controller[_0x9411('0xb')]);router['put'](_0x9411('0xc'),auth['isAuthenticated'](),controller[_0x9411('0xd')]);router['delete'](_0x9411('0xc'),auth[_0x9411('0x7')](),controller[_0x9411('0xe')]);module[_0x9411('0xf')]=router;
\ No newline at end of file
+var _0x9c21=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','delete','destroy','multer','util','express','Router'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9c21,0x12e));var _0x19c2=function(_0x3e45d4,_0x10e70c){_0x3e45d4=_0x3e45d4-0x0;var _0x140f7f=_0x9c21[_0x3e45d4];return _0x140f7f;};'use strict';var multer=require(_0x19c2('0x0'));var util=require(_0x19c2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x19c2('0x2'));var router=express[_0x19c2('0x3')]();var fs_extra=require(_0x19c2('0x4'));var auth=require(_0x19c2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x19c2('0x6'));var controller=require('./chatOfflineMessage.controller');router[_0x19c2('0x7')]('/',auth[_0x19c2('0x8')](),controller[_0x19c2('0x9')]);router['get'](_0x19c2('0xa'),auth[_0x19c2('0x8')](),controller[_0x19c2('0xb')]);router['get'](_0x19c2('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x19c2('0xd')]('/',auth[_0x19c2('0x8')](),controller[_0x19c2('0xe')]);router['put']('/:id',auth[_0x19c2('0x8')](),controller['update']);router[_0x19c2('0xf')]('/:id',auth[_0x19c2('0x8')](),controller[_0x19c2('0x10')]);module['exports']=router;
\ No newline at end of file
index 6f83ede..508c39f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5057=['ENUM','timeout','mouseOver','sequelize','STRING'];(function(_0x4ada02,_0x206e9a){var _0x1449ae=function(_0x389ebb){while(--_0x389ebb){_0x4ada02['push'](_0x4ada02['shift']());}};_0x1449ae(++_0x206e9a);}(_0x5057,0x111));var _0x7505=function(_0x3b4693,_0x3a608a){_0x3b4693=_0x3b4693-0x0;var _0x2750ed=_0x5057[_0x3b4693];return _0x2750ed;};'use strict';var Sequelize=require(_0x7505('0x0'));module['exports']={'name':{'type':Sequelize[_0x7505('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x7505('0x2')]('mouseOver',_0x7505('0x3')),'defaultValue':_0x7505('0x4')},'selector':{'type':Sequelize[_0x7505('0x1')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd3c7=['timeout','sequelize','exports','STRING','ENUM','mouseOver'];(function(_0x45fcf6,_0x540aae){var _0x341062=function(_0x9b9f67){while(--_0x9b9f67){_0x45fcf6['push'](_0x45fcf6['shift']());}};_0x341062(++_0x540aae);}(_0xd3c7,0x109));var _0x7d3c=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xd3c7[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x7d3c('0x0'));module[_0x7d3c('0x1')]={'name':{'type':Sequelize[_0x7d3c('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7d3c('0x3')](_0x7d3c('0x4'),_0x7d3c('0x5')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 8da2b3c..c0be037 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec46=['to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','name','send','show','params','model','keys','rawAttributes','query','intersection','fields','attributes','length','includeAll','include','merge','options','ChatProactiveAction','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xec46,0x19c));var _0x6ec4=function(_0x3ae34a,_0x143082){_0x3ae34a=_0x3ae34a-0x0;var _0x4c9edc=_0xec46[_0x3ae34a];return _0x4c9edc;};'use strict';var emlformat=require(_0x6ec4('0x0'));var rimraf=require(_0x6ec4('0x1'));var zipdir=require(_0x6ec4('0x2'));var jsonpatch=require(_0x6ec4('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6ec4('0x4'));var Mustache=require(_0x6ec4('0x5'));var util=require(_0x6ec4('0x6'));var path=require('path');var sox=require(_0x6ec4('0x7'));var csv=require(_0x6ec4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6ec4('0x9'));var _=require('lodash');var squel=require(_0x6ec4('0xa'));var crypto=require(_0x6ec4('0xb'));var jsforce=require(_0x6ec4('0xc'));var deskjs=require(_0x6ec4('0xd'));var toCsv=require(_0x6ec4('0x8'));var querystring=require(_0x6ec4('0xe'));var Papa=require(_0x6ec4('0xf'));var Redis=require(_0x6ec4('0x10'));var authService=require(_0x6ec4('0x11'));var qs=require(_0x6ec4('0x12'));var as=require(_0x6ec4('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6ec4('0x14'));var utils=require(_0x6ec4('0x15'));var config=require(_0x6ec4('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x6ec4('0x17'))['db'];function respondWithStatusCode(_0x489707,_0x472484){_0x472484=_0x472484||0xcc;return function(_0x5e9b01){if(_0x5e9b01){return _0x489707[_0x6ec4('0x18')](_0x472484);}return _0x489707[_0x6ec4('0x19')](_0x472484)[_0x6ec4('0x1a')]();};}function respondWithResult(_0x15f87f,_0x2813b6){_0x2813b6=_0x2813b6||0xc8;return function(_0x5882d1){if(_0x5882d1){return _0x15f87f[_0x6ec4('0x19')](_0x2813b6)[_0x6ec4('0x1b')](_0x5882d1);}};}function respondWithFilteredResult(_0x43d7f8,_0x272d71){return function(_0x4f5390){if(_0x4f5390){var _0x861a21=typeof _0x272d71[_0x6ec4('0x1c')]===_0x6ec4('0x1d')&&typeof _0x272d71[_0x6ec4('0x1e')]===_0x6ec4('0x1d');var _0x1b7c00=_0x4f5390['count'];var _0x327724=_0x861a21?0x0:_0x272d71['offset'];var _0x516f22=_0x861a21?_0x4f5390[_0x6ec4('0x1f')]:_0x272d71['offset']+_0x272d71[_0x6ec4('0x1e')];var _0x1db2ea;if(_0x516f22>=_0x1b7c00){_0x516f22=_0x1b7c00;_0x1db2ea=0xc8;}else{_0x1db2ea=0xce;}_0x43d7f8[_0x6ec4('0x19')](_0x1db2ea);return _0x43d7f8['set'](_0x6ec4('0x20'),_0x327724+'-'+_0x516f22+'/'+_0x1b7c00)['json'](_0x4f5390);}return null;};}function patchUpdates(_0x574d80){return function(_0x9689ab){try{jsonpatch[_0x6ec4('0x21')](_0x9689ab,_0x574d80,!![]);}catch(_0x5b4966){return BPromise[_0x6ec4('0x22')](_0x5b4966);}return _0x9689ab[_0x6ec4('0x23')]();};}function saveUpdates(_0x34b76e,_0x364cfc){return function(_0x5032a1){if(_0x5032a1){return _0x5032a1[_0x6ec4('0x24')](_0x34b76e)['then'](function(_0x5ef6a5){return _0x5ef6a5;});}return null;};}function removeEntity(_0x2a6f2f,_0x766a30){return function(_0x3dd6e0){if(_0x3dd6e0){return _0x3dd6e0[_0x6ec4('0x25')]()[_0x6ec4('0x26')](function(){_0x2a6f2f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x183257,_0x52b927){return function(_0x1bc94e){if(!_0x1bc94e){_0x183257['sendStatus'](0x194);}return _0x1bc94e;};}function handleError(_0x3bac89,_0x4dc97d){_0x4dc97d=_0x4dc97d||0x1f4;return function(_0x239430){logger['error'](_0x239430['stack']);if(_0x239430[_0x6ec4('0x27')]){delete _0x239430['name'];}_0x3bac89[_0x6ec4('0x19')](_0x4dc97d)[_0x6ec4('0x28')](_0x239430);};}exports[_0x6ec4('0x29')]=function(_0x51606c,_0x33ea66){var _0x486951={'raw':!![],'where':{'id':_0x51606c[_0x6ec4('0x2a')]['id']}},_0x1ada63={};_0x1ada63[_0x6ec4('0x2b')]=_[_0x6ec4('0x2c')](db['ChatProactiveAction'][_0x6ec4('0x2d')]);_0x1ada63[_0x6ec4('0x2e')]=_[_0x6ec4('0x2c')](_0x51606c[_0x6ec4('0x2e')]);_0x1ada63['filters']=_['intersection'](_0x1ada63[_0x6ec4('0x2b')],_0x1ada63[_0x6ec4('0x2e')]);_0x486951['attributes']=_[_0x6ec4('0x2f')](_0x1ada63['model'],qs[_0x6ec4('0x30')](_0x51606c[_0x6ec4('0x2e')][_0x6ec4('0x30')]));_0x486951[_0x6ec4('0x31')]=_0x486951['attributes'][_0x6ec4('0x32')]?_0x486951[_0x6ec4('0x31')]:_0x1ada63[_0x6ec4('0x2b')];if(_0x51606c[_0x6ec4('0x2e')][_0x6ec4('0x33')]){_0x486951[_0x6ec4('0x34')]=[{'all':!![]}];}_0x486951=_[_0x6ec4('0x35')]({},_0x486951,_0x51606c[_0x6ec4('0x36')]);return db[_0x6ec4('0x37')]['find'](_0x486951)[_0x6ec4('0x26')](handleEntityNotFound(_0x33ea66,null))[_0x6ec4('0x26')](respondWithResult(_0x33ea66,null))[_0x6ec4('0x38')](handleError(_0x33ea66,null));};exports['create']=function(_0x72790,_0x52e04f){return db['ChatProactiveAction'][_0x6ec4('0x39')](_0x72790[_0x6ec4('0x3a')],{})['then'](respondWithResult(_0x52e04f,0xc9))['catch'](handleError(_0x52e04f,null));};exports['update']=function(_0x51d98b,_0x529ccf){if(_0x51d98b[_0x6ec4('0x3a')]['id']){delete _0x51d98b['body']['id'];}return db[_0x6ec4('0x37')]['find']({'where':{'id':_0x51d98b[_0x6ec4('0x2a')]['id']}})[_0x6ec4('0x26')](handleEntityNotFound(_0x529ccf,null))['then'](saveUpdates(_0x51d98b[_0x6ec4('0x3a')],null))[_0x6ec4('0x26')](respondWithResult(_0x529ccf,null))['catch'](handleError(_0x529ccf,null));};exports[_0x6ec4('0x25')]=function(_0x494a1f,_0x13daac){return db['ChatProactiveAction'][_0x6ec4('0x3b')]({'where':{'id':_0x494a1f[_0x6ec4('0x2a')]['id']}})[_0x6ec4('0x26')](handleEntityNotFound(_0x13daac,null))[_0x6ec4('0x26')](removeEntity(_0x13daac,null))[_0x6ec4('0x38')](handleError(_0x13daac,null));};
\ No newline at end of file
+var _0xaa19=['filters','intersection','fields','attributes','length','includeAll','merge','options','find','catch','create','body','ChatProactiveAction','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../mysqldb','sendStatus','status','limit','undefined','count','offset','json','apply','reject','save','update','destroy','then','name','send','show','params','model','rawAttributes','query','keys'];(function(_0x1df2f6,_0x2c4501){var _0x43e251=function(_0x1ae746){while(--_0x1ae746){_0x1df2f6['push'](_0x1df2f6['shift']());}};_0x43e251(++_0x2c4501);}(_0xaa19,0x79));var _0x9aa1=function(_0x10d400,_0x5b1317){_0x10d400=_0x10d400-0x0;var _0x417710=_0xaa19[_0x10d400];return _0x417710;};'use strict';var emlformat=require(_0x9aa1('0x0'));var rimraf=require(_0x9aa1('0x1'));var zipdir=require(_0x9aa1('0x2'));var jsonpatch=require(_0x9aa1('0x3'));var rp=require('request-promise');var moment=require(_0x9aa1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9aa1('0x5'));var util=require('util');var path=require(_0x9aa1('0x6'));var sox=require(_0x9aa1('0x7'));var csv=require(_0x9aa1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9aa1('0x9'));var _=require(_0x9aa1('0xa'));var squel=require(_0x9aa1('0xb'));var crypto=require('crypto');var jsforce=require(_0x9aa1('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9aa1('0xd'));var Papa=require(_0x9aa1('0xe'));var Redis=require(_0x9aa1('0xf'));var authService=require(_0x9aa1('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9aa1('0x11'));var logger=require('../../config/logger')(_0x9aa1('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9aa1('0x13'))['db'];function respondWithStatusCode(_0x309869,_0x4bba73){_0x4bba73=_0x4bba73||0xcc;return function(_0x38dd8e){if(_0x38dd8e){return _0x309869[_0x9aa1('0x14')](_0x4bba73);}return _0x309869[_0x9aa1('0x15')](_0x4bba73)['end']();};}function respondWithResult(_0x4b6733,_0x35d6f2){_0x35d6f2=_0x35d6f2||0xc8;return function(_0x483611){if(_0x483611){return _0x4b6733[_0x9aa1('0x15')](_0x35d6f2)['json'](_0x483611);}};}function respondWithFilteredResult(_0x1abab9,_0x137a79){return function(_0x1ade95){if(_0x1ade95){var _0x345e78=typeof _0x137a79['offset']==='undefined'&&typeof _0x137a79[_0x9aa1('0x16')]===_0x9aa1('0x17');var _0x30b187=_0x1ade95[_0x9aa1('0x18')];var _0x2ea7e9=_0x345e78?0x0:_0x137a79[_0x9aa1('0x19')];var _0xd19711=_0x345e78?_0x1ade95[_0x9aa1('0x18')]:_0x137a79[_0x9aa1('0x19')]+_0x137a79[_0x9aa1('0x16')];var _0x1eb400;if(_0xd19711>=_0x30b187){_0xd19711=_0x30b187;_0x1eb400=0xc8;}else{_0x1eb400=0xce;}_0x1abab9['status'](_0x1eb400);return _0x1abab9['set']('Content-Range',_0x2ea7e9+'-'+_0xd19711+'/'+_0x30b187)[_0x9aa1('0x1a')](_0x1ade95);}return null;};}function patchUpdates(_0xd659f2){return function(_0x4bd4d7){try{jsonpatch[_0x9aa1('0x1b')](_0x4bd4d7,_0xd659f2,!![]);}catch(_0x42c356){return BPromise[_0x9aa1('0x1c')](_0x42c356);}return _0x4bd4d7[_0x9aa1('0x1d')]();};}function saveUpdates(_0x5c25bf,_0x4a2e6f){return function(_0x5e897c){if(_0x5e897c){return _0x5e897c[_0x9aa1('0x1e')](_0x5c25bf)['then'](function(_0x3688a5){return _0x3688a5;});}return null;};}function removeEntity(_0x43f186,_0x1d85aa){return function(_0x4bbc97){if(_0x4bbc97){return _0x4bbc97[_0x9aa1('0x1f')]()[_0x9aa1('0x20')](function(){_0x43f186['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ccdc9,_0x3d810e){return function(_0x53b291){if(!_0x53b291){_0x1ccdc9[_0x9aa1('0x14')](0x194);}return _0x53b291;};}function handleError(_0xa194ee,_0x1926b5){_0x1926b5=_0x1926b5||0x1f4;return function(_0x51c105){logger['error'](_0x51c105['stack']);if(_0x51c105[_0x9aa1('0x21')]){delete _0x51c105['name'];}_0xa194ee[_0x9aa1('0x15')](_0x1926b5)[_0x9aa1('0x22')](_0x51c105);};}exports[_0x9aa1('0x23')]=function(_0x23d7cb,_0x5e65ea){var _0x482ce0={'raw':!![],'where':{'id':_0x23d7cb[_0x9aa1('0x24')]['id']}},_0x479644={};_0x479644[_0x9aa1('0x25')]=_['keys'](db['ChatProactiveAction'][_0x9aa1('0x26')]);_0x479644[_0x9aa1('0x27')]=_[_0x9aa1('0x28')](_0x23d7cb[_0x9aa1('0x27')]);_0x479644[_0x9aa1('0x29')]=_[_0x9aa1('0x2a')](_0x479644[_0x9aa1('0x25')],_0x479644[_0x9aa1('0x27')]);_0x482ce0['attributes']=_[_0x9aa1('0x2a')](_0x479644[_0x9aa1('0x25')],qs[_0x9aa1('0x2b')](_0x23d7cb['query'][_0x9aa1('0x2b')]));_0x482ce0['attributes']=_0x482ce0[_0x9aa1('0x2c')][_0x9aa1('0x2d')]?_0x482ce0[_0x9aa1('0x2c')]:_0x479644[_0x9aa1('0x25')];if(_0x23d7cb[_0x9aa1('0x27')][_0x9aa1('0x2e')]){_0x482ce0['include']=[{'all':!![]}];}_0x482ce0=_[_0x9aa1('0x2f')]({},_0x482ce0,_0x23d7cb[_0x9aa1('0x30')]);return db['ChatProactiveAction'][_0x9aa1('0x31')](_0x482ce0)[_0x9aa1('0x20')](handleEntityNotFound(_0x5e65ea,null))[_0x9aa1('0x20')](respondWithResult(_0x5e65ea,null))[_0x9aa1('0x32')](handleError(_0x5e65ea,null));};exports[_0x9aa1('0x33')]=function(_0x926ba4,_0xfc5f9d){return db['ChatProactiveAction'][_0x9aa1('0x33')](_0x926ba4[_0x9aa1('0x34')],{})['then'](respondWithResult(_0xfc5f9d,0xc9))[_0x9aa1('0x32')](handleError(_0xfc5f9d,null));};exports[_0x9aa1('0x1e')]=function(_0x249630,_0x5e3164){if(_0x249630[_0x9aa1('0x34')]['id']){delete _0x249630['body']['id'];}return db['ChatProactiveAction'][_0x9aa1('0x31')]({'where':{'id':_0x249630[_0x9aa1('0x24')]['id']}})[_0x9aa1('0x20')](handleEntityNotFound(_0x5e3164,null))[_0x9aa1('0x20')](saveUpdates(_0x249630[_0x9aa1('0x34')],null))[_0x9aa1('0x20')](respondWithResult(_0x5e3164,null))[_0x9aa1('0x32')](handleError(_0x5e3164,null));};exports[_0x9aa1('0x1f')]=function(_0x49e898,_0x1d4ced){return db[_0x9aa1('0x35')][_0x9aa1('0x31')]({'where':{'id':_0x49e898[_0x9aa1('0x24')]['id']}})['then'](handleEntityNotFound(_0x1d4ced,null))[_0x9aa1('0x20')](removeEntity(_0x1d4ced,null))[_0x9aa1('0x32')](handleError(_0x1d4ced,null));};
\ No newline at end of file
index 737adfb..4c7509d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fc8=['util','../../config/logger','api','bluebird','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','lodash'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x7fc8,0x137));var _0x87fc=function(_0x3a2910,_0x7936c6){_0x3a2910=_0x3a2910-0x0;var _0x2e8bce=_0x7fc8[_0x3a2910];return _0x2e8bce;};'use strict';var _=require(_0x87fc('0x0'));var util=require(_0x87fc('0x1'));var logger=require(_0x87fc('0x2'))(_0x87fc('0x3'));var moment=require('moment');var BPromise=require(_0x87fc('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x87fc('0x5'));var config=require(_0x87fc('0x6'));var attributes=require(_0x87fc('0x7'));module[_0x87fc('0x8')]=function(_0x195d25,_0x449be4){return _0x195d25[_0x87fc('0x9')](_0x87fc('0xa'),attributes,{'tableName':_0x87fc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe052=['exports','define','ChatProactiveAction','chat_proactive_actions','util','moment','bluebird','request-promise','rimraf','../../config/environment','./chatProactiveAction.attributes'];(function(_0x1eca2d,_0x47ea3b){var _0x45a565=function(_0x28e927){while(--_0x28e927){_0x1eca2d['push'](_0x1eca2d['shift']());}};_0x45a565(++_0x47ea3b);}(_0xe052,0x10c));var _0x2e05=function(_0x1e0541,_0x3f7024){_0x1e0541=_0x1e0541-0x0;var _0x4e5e9d=_0xe052[_0x1e0541];return _0x4e5e9d;};'use strict';var _=require('lodash');var util=require(_0x2e05('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x2e05('0x1'));var BPromise=require(_0x2e05('0x2'));var rp=require(_0x2e05('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2e05('0x4'));var config=require(_0x2e05('0x5'));var attributes=require(_0x2e05('0x6'));module[_0x2e05('0x7')]=function(_0x458218,_0x45d1a5){return _0x458218[_0x2e05('0x8')](_0x2e05('0x9'),attributes,{'tableName':_0x2e05('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa3cd79..924b5a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5300=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info'];(function(_0x4f8184,_0x5b6b51){var _0xbd0150=function(_0x311117){while(--_0x311117){_0x4f8184['push'](_0x4f8184['shift']());}};_0xbd0150(++_0x5b6b51);}(_0x5300,0x94));var _0x0530=function(_0x45a767,_0x11eb1e){_0x45a767=_0x45a767-0x0;var _0x457884=_0x5300[_0x45a767];return _0x457884;};'use strict';var _=require(_0x0530('0x0'));var util=require(_0x0530('0x1'));var moment=require(_0x0530('0x2'));var BPromise=require(_0x0530('0x3'));var rs=require(_0x0530('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0530('0x5'))['db'];var utils=require(_0x0530('0x6'));var logger=require(_0x0530('0x7'))(_0x0530('0x8'));var config=require(_0x0530('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0530('0xa')][_0x0530('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x140c2,_0x5b1420,_0x166f46){return new BPromise(function(_0x79263e,_0x35114c){return client[_0x0530('0xc')](_0x140c2,_0x166f46)['then'](function(_0x2200b7){logger['info'](_0x0530('0xd'),_0x5b1420,_0x0530('0xe'));logger[_0x0530('0xf')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x5b1420,_0x0530('0xe'),JSON[_0x0530('0x10')](_0x2200b7));if(_0x2200b7[_0x0530('0x11')]){if(_0x2200b7[_0x0530('0x11')]['code']===0x1f4){logger[_0x0530('0x11')](_0x0530('0xd'),_0x5b1420,_0x2200b7[_0x0530('0x11')][_0x0530('0x12')]);return _0x35114c(_0x2200b7[_0x0530('0x11')]['message']);}logger[_0x0530('0x11')](_0x0530('0xd'),_0x5b1420,_0x2200b7[_0x0530('0x11')]['message']);return _0x79263e(_0x2200b7[_0x0530('0x11')][_0x0530('0x12')]);}else{logger[_0x0530('0x13')](_0x0530('0xd'),_0x5b1420,_0x0530('0xe'));_0x79263e(_0x2200b7['result'][_0x0530('0x12')]);}})[_0x0530('0x14')](function(_0x57a87c){logger[_0x0530('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x5b1420,_0x57a87c);_0x35114c(_0x57a87c);});});}
\ No newline at end of file
+var _0xa4ec=['then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','code','message','error','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x41f0fa,_0x478682){var _0x2d8fbd=function(_0x43aef4){while(--_0x43aef4){_0x41f0fa['push'](_0x41f0fa['shift']());}};_0x2d8fbd(++_0x478682);}(_0xa4ec,0x193));var _0xca4e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa4ec[_0x934425];return _0x31d596;};'use strict';var _=require(_0xca4e('0x0'));var util=require('util');var moment=require(_0xca4e('0x1'));var BPromise=require(_0xca4e('0x2'));var rs=require(_0xca4e('0x3'));var fs=require('fs');var Redis=require(_0xca4e('0x4'));var db=require(_0xca4e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xca4e('0x6'));var config=require(_0xca4e('0x7'));var jayson=require(_0xca4e('0x8'));var client=jayson['client'][_0xca4e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51e53b,_0x5309a3,_0x3ed096){return new BPromise(function(_0x2cf874,_0x4e4a9e){return client[_0xca4e('0xa')](_0x51e53b,_0x3ed096)[_0xca4e('0xb')](function(_0x274255){logger[_0xca4e('0xc')](_0xca4e('0xd'),_0x5309a3,_0xca4e('0xe'));logger[_0xca4e('0xf')](_0xca4e('0x10'),_0x5309a3,_0xca4e('0xe'),JSON[_0xca4e('0x11')](_0x274255));if(_0x274255['error']){if(_0x274255['error'][_0xca4e('0x12')]===0x1f4){logger['error'](_0xca4e('0xd'),_0x5309a3,_0x274255['error']['message']);return _0x4e4a9e(_0x274255['error'][_0xca4e('0x13')]);}logger[_0xca4e('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x5309a3,_0x274255[_0xca4e('0x14')][_0xca4e('0x13')]);return _0x2cf874(_0x274255[_0xca4e('0x14')][_0xca4e('0x13')]);}else{logger[_0xca4e('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x5309a3,_0xca4e('0xe'));_0x2cf874(_0x274255[_0xca4e('0x15')][_0xca4e('0x13')]);}})[_0xca4e('0x16')](function(_0xb166a1){logger[_0xca4e('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x5309a3,_0xb166a1);_0x4e4a9e(_0xb166a1);});});}
\ No newline at end of file
index 2ee0bcc..1b9515e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfd=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','put','update','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x12ba0e,_0x3174b8){var _0xe5d460=function(_0x743b2c){while(--_0x743b2c){_0x12ba0e['push'](_0x12ba0e['shift']());}};_0xe5d460(++_0x3174b8);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd7df('0x0'));var util=require(_0xd7df('0x1'));var path=require(_0xd7df('0x2'));var timeout=require(_0xd7df('0x3'));var express=require(_0xd7df('0x4'));var router=express[_0xd7df('0x5')]();var fs_extra=require(_0xd7df('0x6'));var auth=require(_0xd7df('0x7'));var interaction=require(_0xd7df('0x8'));var config=require(_0xd7df('0x9'));var controller=require(_0xd7df('0xa'));router[_0xd7df('0xb')](_0xd7df('0xc'),auth[_0xd7df('0xd')](),controller[_0xd7df('0xe')]);router[_0xd7df('0xf')]('/',auth[_0xd7df('0xd')](),controller['create']);router[_0xd7df('0x10')](_0xd7df('0xc'),auth[_0xd7df('0xd')](),controller[_0xd7df('0x11')]);router['delete'](_0xd7df('0xc'),auth['isAuthenticated'](),controller[_0xd7df('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xee14=['/:id','show','post','isAuthenticated','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller'];(function(_0x3e202e,_0x375823){var _0x22faed=function(_0x72e29e){while(--_0x72e29e){_0x3e202e['push'](_0x3e202e['shift']());}};_0x22faed(++_0x375823);}(_0xee14,0x13a));var _0x4ee1=function(_0x48a109,_0xf6da7b){_0x48a109=_0x48a109-0x0;var _0x44745=_0xee14[_0x48a109];return _0x44745;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4ee1('0x0'));var timeout=require(_0x4ee1('0x1'));var express=require(_0x4ee1('0x2'));var router=express[_0x4ee1('0x3')]();var fs_extra=require(_0x4ee1('0x4'));var auth=require(_0x4ee1('0x5'));var interaction=require(_0x4ee1('0x6'));var config=require(_0x4ee1('0x7'));var controller=require(_0x4ee1('0x8'));router['get'](_0x4ee1('0x9'),auth['isAuthenticated'](),controller[_0x4ee1('0xa')]);router[_0x4ee1('0xb')]('/',auth[_0x4ee1('0xc')](),controller[_0x4ee1('0xd')]);router[_0x4ee1('0xe')](_0x4ee1('0x9'),auth['isAuthenticated'](),controller[_0x4ee1('0xf')]);router[_0x4ee1('0x10')]('/:id',auth[_0x4ee1('0xc')](),controller[_0x4ee1('0x11')]);module[_0x4ee1('0x12')]=router;
\ No newline at end of file
index 35d9bf2..a3ea11d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecae=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x3e79fb,_0x50655c){var _0x9e738c=function(_0x1da1cb){while(--_0x1da1cb){_0x3e79fb['push'](_0x3e79fb['shift']());}};_0x9e738c(++_0x50655c);}(_0xecae,0xd2));var _0xeeca=function(_0x32bafe,_0x18e4da){_0x32bafe=_0x32bafe-0x0;var _0x3e35c7=_0xecae[_0x32bafe];return _0x3e35c7;};'use strict';var Sequelize=require(_0xeeca('0x0'));module[_0xeeca('0x1')]={'name':{'type':Sequelize[_0xeeca('0x2')],'unique':_0xeeca('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xeeca('0x2')]},'timeout':{'type':Sequelize[_0xeeca('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xeeca('0x5')](_0xeeca('0x6'),_0xeeca('0x7'),_0xeeca('0x8'))}};
\ No newline at end of file
+var _0xc377=['exports','STRING','name','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x19ed90,_0x3759db){var _0x497c41=function(_0x38f43f){while(--_0x38f43f){_0x19ed90['push'](_0x19ed90['shift']());}};_0x497c41(++_0x3759db);}(_0xc377,0xf7));var _0x7c37=function(_0x374e61,_0x2a04c4){_0x374e61=_0x374e61-0x0;var _0x16316c=_0xc377[_0x374e61];return _0x16316c;};'use strict';var Sequelize=require(_0x7c37('0x0'));module[_0x7c37('0x1')]={'name':{'type':Sequelize[_0x7c37('0x2')],'unique':_0x7c37('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7c37('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7c37('0x4')](_0x7c37('0x5'),_0x7c37('0x6'),_0x7c37('0x7'))}};
\ No newline at end of file
index 2ee52ca..11f3693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xade3=['findOrCreate','forEach','emit','removeTeams','select','tq.TeamId','from','join','ChatQueueId\x20=\x20?','clone','toString','SELECT','every','includes','all','compact','isEmpty','addAgents','omit','userChatQueue:save','removeAgents','isArray','userChatQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','undefined','limit','offset','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','name','send','index','map','ChatQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','count','includeAll','findAll','rows','show','params','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','ChatQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','ChatQueueId','options','UserChatQueue','User','findAndCountAll','UserId','agent','updatedAt','format','%s/%s','SIP','createdAt','getTeams','Team','addTeams','ids','online','voicePause','Agents','sequelize','transaction','each'];(function(_0x40e074,_0x5ccda2){var _0x2b091d=function(_0x358067){while(--_0x358067){_0x40e074['push'](_0x40e074['shift']());}};_0x2b091d(++_0x5ccda2);}(_0xade3,0xab));var _0x3ade=function(_0x23ed26,_0x1d2ff4){_0x23ed26=_0x23ed26-0x0;var _0x545502=_0xade3[_0x23ed26];return _0x545502;};'use strict';var emlformat=require(_0x3ade('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3ade('0x1'));var jsonpatch=require(_0x3ade('0x2'));var rp=require(_0x3ade('0x3'));var moment=require('moment');var BPromise=require(_0x3ade('0x4'));var Mustache=require(_0x3ade('0x5'));var util=require(_0x3ade('0x6'));var path=require(_0x3ade('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3ade('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3ade('0x9'));var squel=require(_0x3ade('0xa'));var crypto=require('crypto');var jsforce=require(_0x3ade('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3ade('0xc'));var querystring=require(_0x3ade('0xd'));var Papa=require(_0x3ade('0xe'));var Redis=require(_0x3ade('0xf'));var authService=require(_0x3ade('0x10'));var qs=require(_0x3ade('0x11'));var as=require(_0x3ade('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3ade('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3ade('0x14'))['db'];config[_0x3ade('0x15')]=_[_0x3ade('0x16')](config[_0x3ade('0x15')],{'host':_0x3ade('0x17'),'port':0x18eb});var socket=require(_0x3ade('0x18'))(new Redis(config[_0x3ade('0x15')]));require(_0x3ade('0x19'))[_0x3ade('0x1a')](socket);var jayson=require(_0x3ade('0x1b'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x289acd,_0x404097,_0x452c8c,_0x38da86){return new BPromise(function(_0xdf8df0,_0x30b909){var _0x5e45c7=_0x38da86||client;return _0x5e45c7[_0x3ade('0x1c')](_0x289acd,_0x452c8c)[_0x3ade('0x1d')](function(_0x5e6490){logger[_0x3ade('0x1e')](_0x3ade('0x1f'),_0x404097,'request\x20sent');logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x404097,_0x3ade('0x20'),JSON[_0x3ade('0x21')](_0x5e6490));if(_0x5e6490[_0x3ade('0x22')]){if(_0x5e6490['error'][_0x3ade('0x23')]===0x1f4){logger['error'](_0x3ade('0x1f'),_0x404097,_0x5e6490[_0x3ade('0x22')][_0x3ade('0x24')]);return _0x30b909(_0x5e6490['error']['message']);}logger[_0x3ade('0x22')](_0x3ade('0x1f'),_0x404097,_0x5e6490[_0x3ade('0x22')][_0x3ade('0x24')]);return _0xdf8df0(_0x5e6490[_0x3ade('0x22')][_0x3ade('0x24')]);}else{logger[_0x3ade('0x1e')](_0x3ade('0x1f'),_0x404097,_0x3ade('0x20'));_0xdf8df0(_0x5e6490[_0x3ade('0x25')][_0x3ade('0x24')]);}})[_0x3ade('0x26')](function(_0x3ce1bc){logger[_0x3ade('0x22')]('ChatQueue,\x20%s,\x20%s',_0x404097,_0x3ce1bc);_0x30b909(_0x3ce1bc);});});}function respondWithStatusCode(_0x3e62e9,_0x88e1ba){_0x88e1ba=_0x88e1ba||0xcc;return function(_0xdf4fc8){if(_0xdf4fc8){return _0x3e62e9[_0x3ade('0x27')](_0x88e1ba);}return _0x3e62e9[_0x3ade('0x28')](_0x88e1ba)[_0x3ade('0x29')]();};}function respondWithResult(_0x47457d,_0x3cfd8a){_0x3cfd8a=_0x3cfd8a||0xc8;return function(_0x49943e){if(_0x49943e){return _0x47457d[_0x3ade('0x28')](_0x3cfd8a)['json'](_0x49943e);}};}function respondWithFilteredResult(_0x287ea9,_0x2fe71c){return function(_0x441bdd){if(_0x441bdd){var _0x39a802=typeof _0x2fe71c['offset']===_0x3ade('0x2a')&&typeof _0x2fe71c[_0x3ade('0x2b')]===_0x3ade('0x2a');var _0x98fd25=_0x441bdd['count'];var _0x1869eb=_0x39a802?0x0:_0x2fe71c[_0x3ade('0x2c')];var _0x447f2e=_0x39a802?_0x441bdd['count']:_0x2fe71c[_0x3ade('0x2c')]+_0x2fe71c[_0x3ade('0x2b')];var _0x3efb16;if(_0x447f2e>=_0x98fd25){_0x447f2e=_0x98fd25;_0x3efb16=0xc8;}else{_0x3efb16=0xce;}_0x287ea9[_0x3ade('0x28')](_0x3efb16);return _0x287ea9[_0x3ade('0x2d')](_0x3ade('0x2e'),_0x1869eb+'-'+_0x447f2e+'/'+_0x98fd25)['json'](_0x441bdd);}return null;};}function patchUpdates(_0x4e3707){return function(_0xa725be){try{jsonpatch[_0x3ade('0x2f')](_0xa725be,_0x4e3707,!![]);}catch(_0x22937c){return BPromise[_0x3ade('0x30')](_0x22937c);}return _0xa725be[_0x3ade('0x31')]();};}function saveUpdates(_0x39c965,_0x1a8566){return function(_0x9b0c22){if(_0x9b0c22){return _0x9b0c22[_0x3ade('0x32')](_0x39c965)[_0x3ade('0x1d')](function(_0x68c7d9){return _0x68c7d9;});}return null;};}function removeEntity(_0x1f2f21,_0x5e9304){return function(_0x217221){if(_0x217221){return _0x217221[_0x3ade('0x33')]()[_0x3ade('0x1d')](function(){var _0x3580a7=_0x217221[_0x3ade('0x34')]({'plain':!![]});var _0x4ed91e='ChatQueues';return db[_0x3ade('0x35')]['destroy']({'where':{'type':_0x4ed91e,'resourceId':_0x3580a7['id']}})[_0x3ade('0x1d')](function(){return _0x217221;});})[_0x3ade('0x1d')](function(){_0x1f2f21['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x13b965,_0x5b6879){return function(_0x172d4d){if(!_0x172d4d){_0x13b965[_0x3ade('0x27')](0x194);}return _0x172d4d;};}function handleError(_0x446f75,_0x45cab7){_0x45cab7=_0x45cab7||0x1f4;return function(_0x20b583){logger[_0x3ade('0x22')](_0x20b583['stack']);if(_0x20b583[_0x3ade('0x36')]){delete _0x20b583[_0x3ade('0x36')];}_0x446f75['status'](_0x45cab7)[_0x3ade('0x37')](_0x20b583);};}exports[_0x3ade('0x38')]=function(_0x471418,_0x523954){var _0x23725a={},_0x137740={},_0x27300a={'count':0x0,'rows':[]};var _0x8320ef=_[_0x3ade('0x39')](db[_0x3ade('0x3a')][_0x3ade('0x3b')],function(_0x13ee33){return{'name':_0x13ee33[_0x3ade('0x3c')],'type':_0x13ee33['type'][_0x3ade('0x3d')]};});_0x137740[_0x3ade('0x3e')]=_['map'](_0x8320ef,_0x3ade('0x36'));_0x137740[_0x3ade('0x3f')]=_[_0x3ade('0x40')](_0x471418[_0x3ade('0x3f')]);_0x137740[_0x3ade('0x41')]=_[_0x3ade('0x42')](_0x137740[_0x3ade('0x3e')],_0x137740[_0x3ade('0x3f')]);_0x23725a['attributes']=_[_0x3ade('0x42')](_0x137740[_0x3ade('0x3e')],qs[_0x3ade('0x43')](_0x471418[_0x3ade('0x3f')][_0x3ade('0x43')]));_0x23725a[_0x3ade('0x44')]=_0x23725a[_0x3ade('0x44')][_0x3ade('0x45')]?_0x23725a[_0x3ade('0x44')]:_0x137740[_0x3ade('0x3e')];if(!_0x471418[_0x3ade('0x3f')][_0x3ade('0x46')](_0x3ade('0x47'))){_0x23725a[_0x3ade('0x2b')]=qs[_0x3ade('0x2b')](_0x471418[_0x3ade('0x3f')][_0x3ade('0x2b')]);_0x23725a['offset']=qs['offset'](_0x471418[_0x3ade('0x3f')]['offset']);}_0x23725a[_0x3ade('0x48')]=qs['sort'](_0x471418[_0x3ade('0x3f')][_0x3ade('0x49')]);_0x23725a[_0x3ade('0x4a')]=qs[_0x3ade('0x41')](_[_0x3ade('0x4b')](_0x471418[_0x3ade('0x3f')],_0x137740['filters']),_0x8320ef);if(_0x471418[_0x3ade('0x3f')][_0x3ade('0x4c')]){_0x23725a['where']=_[_0x3ade('0x4d')](_0x23725a[_0x3ade('0x4a')],{'$or':_[_0x3ade('0x39')](_0x8320ef,function(_0x54cf86){if(_0x54cf86[_0x3ade('0x4e')]!==_0x3ade('0x4f')){var _0x1ce49b={};_0x1ce49b[_0x54cf86[_0x3ade('0x36')]]={'$like':'%'+_0x471418[_0x3ade('0x3f')][_0x3ade('0x4c')]+'%'};return _0x1ce49b;}})});}_0x23725a=_['merge']({},_0x23725a,_0x471418['options']);var _0x3fa068={'where':_0x23725a[_0x3ade('0x4a')]};return db[_0x3ade('0x3a')][_0x3ade('0x50')](_0x3fa068)['then'](function(_0xba7eb4){_0x27300a[_0x3ade('0x50')]=_0xba7eb4;if(_0x471418[_0x3ade('0x3f')][_0x3ade('0x51')]){_0x23725a['include']=[{'all':!![]}];}return db[_0x3ade('0x3a')][_0x3ade('0x52')](_0x23725a);})['then'](function(_0x1a938d){_0x27300a[_0x3ade('0x53')]=_0x1a938d;return _0x27300a;})[_0x3ade('0x1d')](respondWithFilteredResult(_0x523954,_0x23725a))[_0x3ade('0x26')](handleError(_0x523954,null));};exports[_0x3ade('0x54')]=function(_0x27f40e,_0x3922e5){var _0x308d12={'raw':!![],'where':{'id':_0x27f40e[_0x3ade('0x55')]['id']}},_0x1f754d={};_0x1f754d[_0x3ade('0x3e')]=_['keys'](db[_0x3ade('0x3a')][_0x3ade('0x3b')]);_0x1f754d[_0x3ade('0x3f')]=_[_0x3ade('0x40')](_0x27f40e[_0x3ade('0x3f')]);_0x1f754d[_0x3ade('0x41')]=_['intersection'](_0x1f754d[_0x3ade('0x3e')],_0x1f754d['query']);_0x308d12[_0x3ade('0x44')]=_['intersection'](_0x1f754d['model'],qs[_0x3ade('0x43')](_0x27f40e['query']['fields']));_0x308d12['attributes']=_0x308d12[_0x3ade('0x44')]['length']?_0x308d12['attributes']:_0x1f754d['model'];if(_0x27f40e[_0x3ade('0x3f')][_0x3ade('0x51')]){_0x308d12[_0x3ade('0x56')]=[{'all':!![]}];}_0x308d12=_[_0x3ade('0x4d')]({},_0x308d12,_0x27f40e['options']);return db['ChatQueue'][_0x3ade('0x57')](_0x308d12)[_0x3ade('0x1d')](handleEntityNotFound(_0x3922e5,null))[_0x3ade('0x1d')](respondWithResult(_0x3922e5,null))['catch'](handleError(_0x3922e5,null));};exports[_0x3ade('0x58')]=function(_0x3aaa50,_0x41bdb2){return db[_0x3ade('0x3a')][_0x3ade('0x58')](_0x3aaa50[_0x3ade('0x59')],{})['then'](function(_0x26155e){var _0x309d00=_0x3aaa50['user']['get']({'plain':!![]});if(!_0x309d00)throw new Error(_0x3ade('0x5a'));if(_0x309d00[_0x3ade('0x5b')]===_0x3ade('0x5c')){var _0x44c526=_0x26155e[_0x3ade('0x34')]({'plain':!![]});var _0x176f1a=_0x3ade('0x5d');return db[_0x3ade('0x5e')][_0x3ade('0x57')]({'where':{'name':_0x176f1a,'userProfileId':_0x309d00[_0x3ade('0x5f')]},'raw':!![]})['then'](function(_0x4d9be8){if(_0x4d9be8&&_0x4d9be8[_0x3ade('0x60')]===0x0){return db['UserProfileResource'][_0x3ade('0x58')]({'name':_0x44c526[_0x3ade('0x36')],'resourceId':_0x44c526['id'],'type':_0x4d9be8[_0x3ade('0x36')],'sectionId':_0x4d9be8['id']},{})['then'](function(){return _0x26155e;});}else{return _0x26155e;}})['catch'](function(_0x265d25){logger[_0x3ade('0x22')](_0x3ade('0x61'),_0x265d25);throw _0x265d25;});}return _0x26155e;})['then'](respondWithResult(_0x41bdb2,0xc9))[_0x3ade('0x26')](handleError(_0x41bdb2,null));};exports['update']=function(_0x32b069,_0x2dbed5){if(_0x32b069['body']['id']){delete _0x32b069['body']['id'];}return db[_0x3ade('0x3a')][_0x3ade('0x57')]({'where':{'id':_0x32b069[_0x3ade('0x55')]['id']}})[_0x3ade('0x1d')](handleEntityNotFound(_0x2dbed5,null))[_0x3ade('0x1d')](saveUpdates(_0x32b069[_0x3ade('0x59')],null))[_0x3ade('0x1d')](respondWithResult(_0x2dbed5,null))[_0x3ade('0x26')](handleError(_0x2dbed5,null));};exports[_0x3ade('0x33')]=function(_0xf7daa9,_0x23b7c9){return db[_0x3ade('0x3a')][_0x3ade('0x57')]({'where':{'id':_0xf7daa9[_0x3ade('0x55')]['id']}})['then'](handleEntityNotFound(_0x23b7c9,null))['then'](removeEntity(_0x23b7c9,null))[_0x3ade('0x26')](handleError(_0x23b7c9,null));};exports[_0x3ade('0x62')]=function(_0x488f9c,_0xe8cf15){return db[_0x3ade('0x3a')][_0x3ade('0x62')]()[_0x3ade('0x1d')](respondWithResult(_0xe8cf15,null))[_0x3ade('0x26')](handleError(_0xe8cf15,null));};exports[_0x3ade('0x63')]=function(_0x3a3406,_0x4c7680,_0x17008a){var _0x52378a={'raw':!![],'where':{}},_0x7949bb={},_0x1895d2;return db[_0x3ade('0x3a')][_0x3ade('0x64')]({'where':{'id':_0x3a3406[_0x3ade('0x55')]['id']}})['then'](handleEntityNotFound(_0x4c7680,null))[_0x3ade('0x1d')](function(_0x3fbe97){if(_0x3fbe97){_0x1895d2=_0x3fbe97[_0x3ade('0x34')]({'plain':!![]});_0x7949bb[_0x3ade('0x3e')]=_[_0x3ade('0x40')](db['UserChatQueue']['rawAttributes']);_0x7949bb[_0x3ade('0x3f')]=_[_0x3ade('0x40')](_0x3a3406[_0x3ade('0x3f')]);_0x7949bb[_0x3ade('0x41')]=_[_0x3ade('0x42')](_0x7949bb[_0x3ade('0x3e')],_0x7949bb['query']);_0x52378a['attributes']=_[_0x3ade('0x42')](_0x7949bb[_0x3ade('0x3e')],qs[_0x3ade('0x43')](_0x3a3406[_0x3ade('0x3f')][_0x3ade('0x43')]));_0x52378a[_0x3ade('0x44')]=_0x52378a[_0x3ade('0x44')][_0x3ade('0x45')]?_0x52378a[_0x3ade('0x44')]:_0x7949bb[_0x3ade('0x3e')];if(!_0x3a3406[_0x3ade('0x3f')][_0x3ade('0x46')](_0x3ade('0x47'))){_0x52378a['limit']=qs[_0x3ade('0x2b')](_0x3a3406[_0x3ade('0x3f')][_0x3ade('0x2b')]);_0x52378a[_0x3ade('0x2c')]=qs[_0x3ade('0x2c')](_0x3a3406['query'][_0x3ade('0x2c')]);}_0x52378a[_0x3ade('0x48')]=qs[_0x3ade('0x49')](_0x3a3406[_0x3ade('0x3f')][_0x3ade('0x49')]);_0x52378a['where']=qs[_0x3ade('0x41')](_[_0x3ade('0x4b')](_0x3a3406[_0x3ade('0x3f')],_0x7949bb[_0x3ade('0x41')]));_0x52378a[_0x3ade('0x4a')][_0x3ade('0x65')]=_0x3fbe97['id'];if(_0x3a3406[_0x3ade('0x3f')][_0x3ade('0x4c')]){_0x52378a['where']=_['merge'](_0x52378a['where'],{'$or':_['map'](_0x52378a[_0x3ade('0x44')],function(_0x56da78){var _0x4a3bda={};_0x4a3bda[_0x56da78]={'$like':'%'+_0x3a3406['query'][_0x3ade('0x4c')]+'%'};return _0x4a3bda;})});}_0x52378a=_[_0x3ade('0x4d')]({},_0x52378a,_0x3a3406[_0x3ade('0x66')]);return db[_0x3ade('0x67')]['findAll'](_0x52378a);}})[_0x3ade('0x1d')](function(_0x4ed2ce){if(_0x4ed2ce){return db[_0x3ade('0x68')][_0x3ade('0x69')]({'where':{'id':_[_0x3ade('0x39')](_0x4ed2ce,_0x3ade('0x6a')),'role':_0x3ade('0x6b')},'attributes':['id',_0x3ade('0x36'),'chatPause',_0x3ade('0x6c'),'createdAt']});}})[_0x3ade('0x1d')](function(_0x6a9e5c){if(_0x6a9e5c){return{'count':_0x6a9e5c[_0x3ade('0x50')],'rows':_[_0x3ade('0x39')](_0x6a9e5c[_0x3ade('0x53')],function(_0x366230){return{'membername':_0x366230[_0x3ade('0x36')],'UserId':_0x366230['id'],'queue_name':_0x1895d2[_0x3ade('0x36')],'ChatQueueId':_0x1895d2['id'],'interface':util[_0x3ade('0x6d')](_0x3ade('0x6e'),_0x3ade('0x6f'),_0x366230['name']),'penalty':0x0,'paused':_0x366230['chatPause'],'createdAt':_0x366230[_0x3ade('0x70')],'updatedAt':_0x366230[_0x3ade('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3ade('0x1d')](respondWithFilteredResult(_0x4c7680,_0x52378a))[_0x3ade('0x26')](handleError(_0x4c7680,null));};exports[_0x3ade('0x71')]=function(_0x43eb33,_0x6db3cc,_0x230543){var _0x117186={};var _0x2d917b={};var _0xe1e6fb;var _0x33146b;return db[_0x3ade('0x3a')][_0x3ade('0x64')]({'where':{'id':_0x43eb33[_0x3ade('0x55')]['id']}})[_0x3ade('0x1d')](handleEntityNotFound(_0x6db3cc,null))[_0x3ade('0x1d')](function(_0x347963){if(_0x347963){_0xe1e6fb=_0x347963;_0x2d917b['model']=_[_0x3ade('0x40')](db[_0x3ade('0x72')][_0x3ade('0x3b')]);_0x2d917b[_0x3ade('0x3f')]=_['keys'](_0x43eb33[_0x3ade('0x3f')]);_0x2d917b[_0x3ade('0x41')]=_['intersection'](_0x2d917b[_0x3ade('0x3e')],_0x2d917b[_0x3ade('0x3f')]);_0x117186[_0x3ade('0x44')]=_[_0x3ade('0x42')](_0x2d917b['model'],qs['fields'](_0x43eb33['query']['fields']));_0x117186[_0x3ade('0x44')]=_0x117186[_0x3ade('0x44')][_0x3ade('0x45')]?_0x117186[_0x3ade('0x44')]:_0x2d917b[_0x3ade('0x3e')];_0x117186[_0x3ade('0x48')]=qs[_0x3ade('0x49')](_0x43eb33[_0x3ade('0x3f')][_0x3ade('0x49')]);_0x117186['where']=qs[_0x3ade('0x41')](_[_0x3ade('0x4b')](_0x43eb33[_0x3ade('0x3f')],_0x2d917b[_0x3ade('0x41')]));if(_0x43eb33[_0x3ade('0x3f')][_0x3ade('0x4c')]){_0x117186[_0x3ade('0x4a')]=_[_0x3ade('0x4d')](_0x117186[_0x3ade('0x4a')],{'$or':_[_0x3ade('0x39')](_0x117186[_0x3ade('0x44')],function(_0x3fbdc4){var _0x532a92={};_0x532a92[_0x3fbdc4]={'$like':'%'+_0x43eb33[_0x3ade('0x3f')][_0x3ade('0x4c')]+'%'};return _0x532a92;})});}_0x117186=_[_0x3ade('0x4d')]({},_0x117186,_0x43eb33['options']);return _0xe1e6fb[_0x3ade('0x71')](_0x117186);}})['then'](function(_0x35adc5){if(_0x35adc5){_0x33146b=_0x35adc5['length'];if(!_0x43eb33[_0x3ade('0x3f')][_0x3ade('0x46')]('nolimit')){_0x117186[_0x3ade('0x2b')]=qs[_0x3ade('0x2b')](_0x43eb33['query'][_0x3ade('0x2b')]);_0x117186[_0x3ade('0x2c')]=qs['offset'](_0x43eb33[_0x3ade('0x3f')][_0x3ade('0x2c')]);}return _0xe1e6fb[_0x3ade('0x71')](_0x117186);}})[_0x3ade('0x1d')](function(_0x5c62f4){if(_0x5c62f4){return _0x5c62f4?{'count':_0x33146b,'rows':_0x5c62f4}:null;}})['then'](respondWithResult(_0x6db3cc,null))[_0x3ade('0x26')](handleError(_0x6db3cc,null));};exports[_0x3ade('0x73')]=function(_0x4dd731,_0x68d447,_0x5a1f9f){var _0x4c1613=_0x4dd731[_0x3ade('0x59')][_0x3ade('0x74')];return db[_0x3ade('0x72')][_0x3ade('0x52')]({'where':{'id':_0x4c1613},'attributes':['id'],'include':[{'model':db[_0x3ade('0x68')],'as':'Agents','attributes':['id',_0x3ade('0x36'),_0x3ade('0x75'),_0x3ade('0x76'),'interface'],'raw':!![]}]})[_0x3ade('0x1d')](function(_0x11756e){if(_0x11756e){var _0x121256=_['flatMap'](_0x11756e,function(_0x1dc020){var _0xd9a6fb=_0x1dc020[_0x3ade('0x34')]({'plain':!![]});return _0xd9a6fb[_0x3ade('0x77')];});return db[_0x3ade('0x3a')][_0x3ade('0x57')]({'where':{'id':_0x4dd731[_0x3ade('0x55')]['id']}})[_0x3ade('0x1d')](function(_0x49791a){return db[_0x3ade('0x78')][_0x3ade('0x79')](function(_0x52b551){return _0x49791a[_0x3ade('0x73')](_0x4c1613,{'transaction':_0x52b551})[_0x3ade('0x1d')](function(){return BPromise[_0x3ade('0x7a')](_0x121256,function(_0x2efc54){return db['UserChatQueue'][_0x3ade('0x7b')]({'where':{'UserId':_0x2efc54['id'],'ChatQueueId':_0x4dd731[_0x3ade('0x55')]['id']},'transaction':_0x52b551});});})[_0x3ade('0x1d')](function(){_0x121256[_0x3ade('0x7c')](function(_0x14cb36){socket[_0x3ade('0x7d')]('userChatQueue:save',{'UserId':_0x14cb36['id'],'ChatQueueId':_0x49791a['id']});});});});});}})[_0x3ade('0x1d')](respondWithStatusCode(_0x68d447,null))[_0x3ade('0x26')](handleError(_0x68d447,null));};exports[_0x3ade('0x7e')]=function(_0x4e52d0,_0x2e9b9e,_0x189f6c){return db['Team']['findAll']({'where':{'id':_0x4e52d0[_0x3ade('0x3f')][_0x3ade('0x74')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3ade('0x77'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2e9b9e,null))['then'](function(_0xc718ab){var _0x386299=_[_0x3ade('0x39')](_0xc718ab,'id');var _0x20640f=[];var _0x3b0530=[];var _0x476626=squel[_0x3ade('0x7f')]();_0x476626['field'](_0x3ade('0x80'))[_0x3ade('0x81')]('team_has_chat_queues','tq')[_0x3ade('0x82')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x3ade('0x4a')](_0x3ade('0x83'),_0x4e52d0[_0x3ade('0x55')]['id']);for(var _0x282ea8=0x0;_0x282ea8<_0xc718ab['length'];_0x282ea8+=0x1){let _0x3948ee=_0xc718ab[_0x282ea8];for(var _0x3a6322=0x0;_0x3a6322<_0x3948ee[_0x3ade('0x77')][_0x3ade('0x45')];_0x3a6322+=0x1){let _0x290c3a=_0x3948ee[_0x3ade('0x77')][_0x3a6322];var _0x5869c5=_0x476626[_0x3ade('0x84')]();_0x5869c5['where']('ut.UserId\x20=\x20?',_0x290c3a['id']);_0x3b0530['push'](db[_0x3ade('0x78')]['query'](_0x5869c5[_0x3ade('0x85')](),{'type':db[_0x3ade('0x78')]['QueryTypes'][_0x3ade('0x86')]})['then'](function(_0x57e80e){if(_0x57e80e[_0x3ade('0x45')]===0x1){return _0x290c3a['id'];}else{var _0x4c0109=_[_0x3ade('0x87')](_['map'](_0x57e80e,'TeamId'),function(_0x5d92ee){return _[_0x3ade('0x88')](_0x386299,_0x5d92ee);});if(_0x4c0109){return _0x290c3a['id'];}}}));}}return BPromise[_0x3ade('0x89')](_0x3b0530)[_0x3ade('0x1d')](function(_0x4be7a3){_0x20640f=_(_0x20640f)['union'](_0x4be7a3)[_0x3ade('0x8a')]()['value']();return db[_0x3ade('0x3a')][_0x3ade('0x57')]({'where':{'id':_0x4e52d0[_0x3ade('0x55')]['id']}})[_0x3ade('0x1d')](function(_0x43cd56){return db[_0x3ade('0x78')]['transaction'](function(_0x2ae543){return _0x43cd56[_0x3ade('0x7e')](_0x4e52d0[_0x3ade('0x3f')][_0x3ade('0x74')],{'transaction':_0x2ae543})[_0x3ade('0x1d')](function(){if(!_[_0x3ade('0x8b')](_0x20640f)){return _0x43cd56['removeAgents'](_0x20640f,{'transaction':_0x2ae543});}})['then'](function(){_0x20640f[_0x3ade('0x7c')](function(_0x3e739c){socket[_0x3ade('0x7d')]('userChatQueue:remove',{'UserId':_0x3e739c,'ChatQueueId':_0x43cd56['id']});});});});});});})[_0x3ade('0x1d')](respondWithStatusCode(_0x2e9b9e,null))['catch'](handleError(_0x2e9b9e,null));};exports[_0x3ade('0x8c')]=function(_0x3bb5ea,_0x57a461,_0x1409d6){return db[_0x3ade('0x3a')][_0x3ade('0x57')]({'where':{'id':_0x3bb5ea[_0x3ade('0x55')]['id']}})[_0x3ade('0x1d')](handleEntityNotFound(_0x57a461,null))['then'](function(_0x12a38e){if(_0x12a38e){return _0x12a38e['addAgents'](_0x3bb5ea[_0x3ade('0x59')][_0x3ade('0x74')],_[_0x3ade('0x8d')](_0x3bb5ea[_0x3ade('0x59')],['ids','id'])||{})['spread'](function(_0x34d611){for(var _0x34bec1=0x0;_0x34bec1<_0x3bb5ea[_0x3ade('0x59')][_0x3ade('0x74')][_0x3ade('0x45')];_0x34bec1+=0x1){socket[_0x3ade('0x7d')](_0x3ade('0x8e'),{'UserId':Number(_0x3bb5ea[_0x3ade('0x59')][_0x3ade('0x74')][_0x34bec1]),'ChatQueueId':Number(_0x3bb5ea[_0x3ade('0x55')]['id'])});}return _0x34d611;});}})['then'](respondWithResult(_0x57a461,null))[_0x3ade('0x26')](handleError(_0x57a461,null));};exports[_0x3ade('0x8f')]=function(_0x189c83,_0x4c3e2e,_0x175b25){return db[_0x3ade('0x3a')][_0x3ade('0x57')]({'where':{'id':_0x189c83['params']['id']}})[_0x3ade('0x1d')](handleEntityNotFound(_0x4c3e2e,null))[_0x3ade('0x1d')](function(_0x9534ee){if(_0x9534ee){return _0x9534ee[_0x3ade('0x8f')](_0x189c83['query']['ids'])[_0x3ade('0x1d')](function(){if(_[_0x3ade('0x90')](_0x189c83['query'][_0x3ade('0x74')])){for(var _0x2504da=0x0;_0x2504da<_0x189c83[_0x3ade('0x3f')][_0x3ade('0x74')]['length'];_0x2504da+=0x1){socket[_0x3ade('0x7d')](_0x3ade('0x91'),{'UserId':Number(_0x189c83[_0x3ade('0x3f')][_0x3ade('0x74')][_0x2504da]),'ChatQueueId':Number(_0x189c83[_0x3ade('0x55')]['id'])});}}else{socket[_0x3ade('0x7d')](_0x3ade('0x91'),{'UserId':Number(_0x189c83['query'][_0x3ade('0x74')]),'ChatQueueId':Number(_0x189c83[_0x3ade('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x4c3e2e,null))[_0x3ade('0x26')](handleError(_0x4c3e2e,null));};exports[_0x3ade('0x92')]=function(_0x1f78a4,_0x39fc59,_0x593fc2){var _0x336c3b={};var _0x30d0c7={};var _0x4e0ba9;var _0x446fd8;return db['ChatQueue'][_0x3ade('0x64')]({'where':{'id':_0x1f78a4['params']['id']}})['then'](handleEntityNotFound(_0x39fc59,null))[_0x3ade('0x1d')](function(_0xccecc9){if(_0xccecc9){_0x4e0ba9=_0xccecc9;_0x30d0c7[_0x3ade('0x3e')]=_[_0x3ade('0x40')](db['User'][_0x3ade('0x3b')]);_0x30d0c7[_0x3ade('0x3f')]=_[_0x3ade('0x40')](_0x1f78a4['query']);_0x30d0c7[_0x3ade('0x41')]=_[_0x3ade('0x42')](_0x30d0c7['model'],_0x30d0c7['query']);_0x336c3b['attributes']=_['intersection'](_0x30d0c7[_0x3ade('0x3e')],qs[_0x3ade('0x43')](_0x1f78a4[_0x3ade('0x3f')][_0x3ade('0x43')]));_0x336c3b[_0x3ade('0x44')]=_0x336c3b[_0x3ade('0x44')][_0x3ade('0x45')]?_0x336c3b[_0x3ade('0x44')]:_0x30d0c7[_0x3ade('0x3e')];_0x336c3b['order']=qs['sort'](_0x1f78a4[_0x3ade('0x3f')]['sort']);_0x336c3b[_0x3ade('0x4a')]=qs['filters'](_[_0x3ade('0x4b')](_0x1f78a4[_0x3ade('0x3f')],_0x30d0c7['filters']));if(_0x1f78a4['query'][_0x3ade('0x4c')]){_0x336c3b[_0x3ade('0x4a')]=_[_0x3ade('0x4d')](_0x336c3b['where'],{'$or':_[_0x3ade('0x39')](_0x336c3b[_0x3ade('0x44')],function(_0x56126a){var _0x2d6b89={};_0x2d6b89[_0x56126a]={'$like':'%'+_0x1f78a4[_0x3ade('0x3f')]['filter']+'%'};return _0x2d6b89;})});}_0x336c3b=_[_0x3ade('0x4d')]({},_0x336c3b,_0x1f78a4[_0x3ade('0x66')]);return _0x4e0ba9[_0x3ade('0x92')](_0x336c3b);}})[_0x3ade('0x1d')](function(_0x368c00){if(_0x368c00){_0x446fd8=_0x368c00[_0x3ade('0x45')];if(!_0x1f78a4[_0x3ade('0x3f')][_0x3ade('0x46')](_0x3ade('0x47'))){_0x336c3b[_0x3ade('0x2b')]=qs[_0x3ade('0x2b')](_0x1f78a4[_0x3ade('0x3f')]['limit']);_0x336c3b[_0x3ade('0x2c')]=qs[_0x3ade('0x2c')](_0x1f78a4['query']['offset']);}return _0x4e0ba9[_0x3ade('0x92')](_0x336c3b);}})[_0x3ade('0x1d')](function(_0x24824d){if(_0x24824d){return _0x24824d?{'count':_0x446fd8,'rows':_0x24824d}:null;}})[_0x3ade('0x1d')](respondWithResult(_0x39fc59,null))[_0x3ade('0x26')](handleError(_0x39fc59,null));};
\ No newline at end of file
+var _0x7382=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','http','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','get','ChatQueues','stack','name','send','index','map','ChatQueue','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','findAll','rows','show','includeAll','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserChatQueue','order','pick','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','SIP','getTeams','Team','addTeams','Agents','online','voicePause','interface','transaction','each','forEach','emit','userChatQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_chat_queues','user_has_teams','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','TeamId','includes','union','compact','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','getAgents','rawAttributes','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x7382,0x1c3));var _0x2738=function(_0x5de17e,_0x556efd){_0x5de17e=_0x5de17e-0x0;var _0x9db192=_0x7382[_0x5de17e];return _0x9db192;};'use strict';var emlformat=require(_0x2738('0x0'));var rimraf=require(_0x2738('0x1'));var zipdir=require(_0x2738('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2738('0x3'));var moment=require(_0x2738('0x4'));var BPromise=require(_0x2738('0x5'));var Mustache=require(_0x2738('0x6'));var util=require(_0x2738('0x7'));var path=require(_0x2738('0x8'));var sox=require(_0x2738('0x9'));var csv=require(_0x2738('0xa'));var ejs=require(_0x2738('0xb'));var fs=require('fs');var fs_extra=require(_0x2738('0xc'));var _=require(_0x2738('0xd'));var squel=require(_0x2738('0xe'));var crypto=require(_0x2738('0xf'));var jsforce=require(_0x2738('0x10'));var deskjs=require(_0x2738('0x11'));var toCsv=require(_0x2738('0xa'));var querystring=require(_0x2738('0x12'));var Papa=require(_0x2738('0x13'));var Redis=require(_0x2738('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x2738('0x15'));var as=require(_0x2738('0x16'));var hardwareService=require(_0x2738('0x17'));var logger=require(_0x2738('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x2738('0x19'));var licenseUtil=require(_0x2738('0x1a'));var db=require(_0x2738('0x1b'))['db'];config[_0x2738('0x1c')]=_[_0x2738('0x1d')](config[_0x2738('0x1c')],{'host':_0x2738('0x1e'),'port':0x18eb});var socket=require(_0x2738('0x1f'))(new Redis(config[_0x2738('0x1c')]));require('./chatQueue.socket')[_0x2738('0x20')](socket);var jayson=require(_0x2738('0x21'));var client=jayson['client'][_0x2738('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x139b69,_0x359056,_0xe6f43d,_0x2c71bf){return new BPromise(function(_0x2bbe4a,_0xb8fdea){var _0x2689c4=_0x2c71bf||client;return _0x2689c4['request'](_0x139b69,_0xe6f43d)['then'](function(_0x57dcc5){logger['info'](_0x2738('0x23'),_0x359056,_0x2738('0x24'));logger['debug'](_0x2738('0x25'),_0x359056,_0x2738('0x24'),JSON[_0x2738('0x26')](_0x57dcc5));if(_0x57dcc5[_0x2738('0x27')]){if(_0x57dcc5[_0x2738('0x27')]['code']===0x1f4){logger[_0x2738('0x27')]('ChatQueue,\x20%s,\x20%s',_0x359056,_0x57dcc5[_0x2738('0x27')][_0x2738('0x28')]);return _0xb8fdea(_0x57dcc5['error'][_0x2738('0x28')]);}logger[_0x2738('0x27')]('ChatQueue,\x20%s,\x20%s',_0x359056,_0x57dcc5[_0x2738('0x27')][_0x2738('0x28')]);return _0x2bbe4a(_0x57dcc5[_0x2738('0x27')][_0x2738('0x28')]);}else{logger[_0x2738('0x29')](_0x2738('0x23'),_0x359056,'request\x20sent');_0x2bbe4a(_0x57dcc5[_0x2738('0x2a')]['message']);}})[_0x2738('0x2b')](function(_0x45caab){logger[_0x2738('0x27')]('ChatQueue,\x20%s,\x20%s',_0x359056,_0x45caab);_0xb8fdea(_0x45caab);});});}function respondWithStatusCode(_0x2704f4,_0x4858fa){_0x4858fa=_0x4858fa||0xcc;return function(_0x3daed3){if(_0x3daed3){return _0x2704f4[_0x2738('0x2c')](_0x4858fa);}return _0x2704f4[_0x2738('0x2d')](_0x4858fa)[_0x2738('0x2e')]();};}function respondWithResult(_0xd0297c,_0x22dc66){_0x22dc66=_0x22dc66||0xc8;return function(_0x1f61c1){if(_0x1f61c1){return _0xd0297c['status'](_0x22dc66)[_0x2738('0x2f')](_0x1f61c1);}};}function respondWithFilteredResult(_0x45096a,_0x3a72ef){return function(_0x25e366){if(_0x25e366){var _0x140f14=typeof _0x3a72ef[_0x2738('0x30')]===_0x2738('0x31')&&typeof _0x3a72ef[_0x2738('0x32')]==='undefined';var _0x5a8c49=_0x25e366[_0x2738('0x33')];var _0x2a7b6c=_0x140f14?0x0:_0x3a72ef[_0x2738('0x30')];var _0xb1e774=_0x140f14?_0x25e366['count']:_0x3a72ef[_0x2738('0x30')]+_0x3a72ef[_0x2738('0x32')];var _0x2003bf;if(_0xb1e774>=_0x5a8c49){_0xb1e774=_0x5a8c49;_0x2003bf=0xc8;}else{_0x2003bf=0xce;}_0x45096a[_0x2738('0x2d')](_0x2003bf);return _0x45096a['set'](_0x2738('0x34'),_0x2a7b6c+'-'+_0xb1e774+'/'+_0x5a8c49)[_0x2738('0x2f')](_0x25e366);}return null;};}function patchUpdates(_0x5211b9){return function(_0x5b158b){try{jsonpatch[_0x2738('0x35')](_0x5b158b,_0x5211b9,!![]);}catch(_0x4231b4){return BPromise[_0x2738('0x36')](_0x4231b4);}return _0x5b158b['save']();};}function saveUpdates(_0x5c2f2f,_0x4ddd0d){return function(_0x487539){if(_0x487539){return _0x487539[_0x2738('0x37')](_0x5c2f2f)[_0x2738('0x38')](function(_0x2b9ab3){return _0x2b9ab3;});}return null;};}function removeEntity(_0xe050ac,_0x213829){return function(_0x58d351){if(_0x58d351){return _0x58d351[_0x2738('0x39')]()[_0x2738('0x38')](function(){var _0x4547cd=_0x58d351[_0x2738('0x3a')]({'plain':!![]});var _0x54ace4=_0x2738('0x3b');return db['UserProfileResource'][_0x2738('0x39')]({'where':{'type':_0x54ace4,'resourceId':_0x4547cd['id']}})[_0x2738('0x38')](function(){return _0x58d351;});})['then'](function(){_0xe050ac[_0x2738('0x2d')](0xcc)[_0x2738('0x2e')]();});}};}function handleEntityNotFound(_0x4ac970,_0x2ea442){return function(_0xaba257){if(!_0xaba257){_0x4ac970[_0x2738('0x2c')](0x194);}return _0xaba257;};}function handleError(_0x6e2187,_0x44e912){_0x44e912=_0x44e912||0x1f4;return function(_0x132a80){logger[_0x2738('0x27')](_0x132a80[_0x2738('0x3c')]);if(_0x132a80['name']){delete _0x132a80[_0x2738('0x3d')];}_0x6e2187['status'](_0x44e912)[_0x2738('0x3e')](_0x132a80);};}exports[_0x2738('0x3f')]=function(_0x1ad847,_0x58a7db){var _0x18a028={},_0x246cea={},_0x2427d9={'count':0x0,'rows':[]};var _0x606af5=_[_0x2738('0x40')](db[_0x2738('0x41')]['rawAttributes'],function(_0x4183c1){return{'name':_0x4183c1[_0x2738('0x42')],'type':_0x4183c1[_0x2738('0x43')][_0x2738('0x44')]};});_0x246cea[_0x2738('0x45')]=_['map'](_0x606af5,_0x2738('0x3d'));_0x246cea[_0x2738('0x46')]=_[_0x2738('0x47')](_0x1ad847[_0x2738('0x46')]);_0x246cea['filters']=_[_0x2738('0x48')](_0x246cea[_0x2738('0x45')],_0x246cea[_0x2738('0x46')]);_0x18a028[_0x2738('0x49')]=_[_0x2738('0x48')](_0x246cea[_0x2738('0x45')],qs[_0x2738('0x4a')](_0x1ad847[_0x2738('0x46')][_0x2738('0x4a')]));_0x18a028['attributes']=_0x18a028['attributes'][_0x2738('0x4b')]?_0x18a028[_0x2738('0x49')]:_0x246cea[_0x2738('0x45')];if(!_0x1ad847[_0x2738('0x46')][_0x2738('0x4c')](_0x2738('0x4d'))){_0x18a028['limit']=qs[_0x2738('0x32')](_0x1ad847[_0x2738('0x46')][_0x2738('0x32')]);_0x18a028[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x1ad847[_0x2738('0x46')]['offset']);}_0x18a028['order']=qs[_0x2738('0x4e')](_0x1ad847[_0x2738('0x46')]['sort']);_0x18a028[_0x2738('0x4f')]=qs[_0x2738('0x50')](_['pick'](_0x1ad847['query'],_0x246cea[_0x2738('0x50')]),_0x606af5);if(_0x1ad847[_0x2738('0x46')][_0x2738('0x51')]){_0x18a028['where']=_[_0x2738('0x52')](_0x18a028[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x606af5,function(_0x53511d){if(_0x53511d[_0x2738('0x43')]!==_0x2738('0x53')){var _0x3275cb={};_0x3275cb[_0x53511d[_0x2738('0x3d')]]={'$like':'%'+_0x1ad847[_0x2738('0x46')][_0x2738('0x51')]+'%'};return _0x3275cb;}})});}_0x18a028=_['merge']({},_0x18a028,_0x1ad847[_0x2738('0x54')]);var _0x33671e={'where':_0x18a028['where']};return db[_0x2738('0x41')][_0x2738('0x33')](_0x33671e)['then'](function(_0x51292a){_0x2427d9[_0x2738('0x33')]=_0x51292a;if(_0x1ad847[_0x2738('0x46')]['includeAll']){_0x18a028['include']=[{'all':!![]}];}return db[_0x2738('0x41')][_0x2738('0x55')](_0x18a028);})[_0x2738('0x38')](function(_0x2b2bc3){_0x2427d9[_0x2738('0x56')]=_0x2b2bc3;return _0x2427d9;})[_0x2738('0x38')](respondWithFilteredResult(_0x58a7db,_0x18a028))['catch'](handleError(_0x58a7db,null));};exports[_0x2738('0x57')]=function(_0x3e5b41,_0xa0a75){var _0xd5dcef={'raw':!![],'where':{'id':_0x3e5b41['params']['id']}},_0x302556={};_0x302556[_0x2738('0x45')]=_[_0x2738('0x47')](db[_0x2738('0x41')]['rawAttributes']);_0x302556[_0x2738('0x46')]=_['keys'](_0x3e5b41[_0x2738('0x46')]);_0x302556[_0x2738('0x50')]=_[_0x2738('0x48')](_0x302556[_0x2738('0x45')],_0x302556[_0x2738('0x46')]);_0xd5dcef['attributes']=_[_0x2738('0x48')](_0x302556[_0x2738('0x45')],qs[_0x2738('0x4a')](_0x3e5b41[_0x2738('0x46')][_0x2738('0x4a')]));_0xd5dcef[_0x2738('0x49')]=_0xd5dcef['attributes'][_0x2738('0x4b')]?_0xd5dcef['attributes']:_0x302556[_0x2738('0x45')];if(_0x3e5b41[_0x2738('0x46')][_0x2738('0x58')]){_0xd5dcef[_0x2738('0x59')]=[{'all':!![]}];}_0xd5dcef=_['merge']({},_0xd5dcef,_0x3e5b41['options']);return db[_0x2738('0x41')][_0x2738('0x5a')](_0xd5dcef)[_0x2738('0x38')](handleEntityNotFound(_0xa0a75,null))[_0x2738('0x38')](respondWithResult(_0xa0a75,null))[_0x2738('0x2b')](handleError(_0xa0a75,null));};exports[_0x2738('0x5b')]=function(_0x2ca654,_0x1f7b2f){return db['ChatQueue'][_0x2738('0x5b')](_0x2ca654[_0x2738('0x5c')],{})['then'](function(_0x3d73a5){var _0x37ad3a=_0x2ca654['user']['get']({'plain':!![]});if(!_0x37ad3a)throw new Error(_0x2738('0x5d'));if(_0x37ad3a[_0x2738('0x5e')]==='user'){var _0x11b3fe=_0x3d73a5[_0x2738('0x3a')]({'plain':!![]});var _0x343a0e='ChatQueues';return db[_0x2738('0x5f')][_0x2738('0x5a')]({'where':{'name':_0x343a0e,'userProfileId':_0x37ad3a[_0x2738('0x60')]},'raw':!![]})[_0x2738('0x38')](function(_0x3c3ff0){if(_0x3c3ff0&&_0x3c3ff0[_0x2738('0x61')]===0x0){return db['UserProfileResource'][_0x2738('0x5b')]({'name':_0x11b3fe[_0x2738('0x3d')],'resourceId':_0x11b3fe['id'],'type':_0x3c3ff0['name'],'sectionId':_0x3c3ff0['id']},{})[_0x2738('0x38')](function(){return _0x3d73a5;});}else{return _0x3d73a5;}})[_0x2738('0x2b')](function(_0x5c371a){logger[_0x2738('0x27')](_0x2738('0x62'),_0x5c371a);throw _0x5c371a;});}return _0x3d73a5;})['then'](respondWithResult(_0x1f7b2f,0xc9))['catch'](handleError(_0x1f7b2f,null));};exports[_0x2738('0x37')]=function(_0x3c8d91,_0x4e6b46){if(_0x3c8d91['body']['id']){delete _0x3c8d91['body']['id'];}return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x3c8d91['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x4e6b46,null))['then'](saveUpdates(_0x3c8d91[_0x2738('0x5c')],null))[_0x2738('0x38')](respondWithResult(_0x4e6b46,null))[_0x2738('0x2b')](handleError(_0x4e6b46,null));};exports['destroy']=function(_0x44b553,_0x142f1c){return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x44b553[_0x2738('0x63')]['id']}})['then'](handleEntityNotFound(_0x142f1c,null))['then'](removeEntity(_0x142f1c,null))['catch'](handleError(_0x142f1c,null));};exports[_0x2738('0x64')]=function(_0x2c25f8,_0xf7becc){return db[_0x2738('0x41')][_0x2738('0x64')]()['then'](respondWithResult(_0xf7becc,null))[_0x2738('0x2b')](handleError(_0xf7becc,null));};exports[_0x2738('0x65')]=function(_0x44960c,_0x4ec8b2,_0x35fbfa){var _0x3ac23a={'raw':!![],'where':{}},_0x26948d={},_0x29f8ea;return db[_0x2738('0x41')][_0x2738('0x66')]({'where':{'id':_0x44960c['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x4ec8b2,null))[_0x2738('0x38')](function(_0x18e5a7){if(_0x18e5a7){_0x29f8ea=_0x18e5a7[_0x2738('0x3a')]({'plain':!![]});_0x26948d['model']=_[_0x2738('0x47')](db[_0x2738('0x67')]['rawAttributes']);_0x26948d['query']=_['keys'](_0x44960c['query']);_0x26948d[_0x2738('0x50')]=_[_0x2738('0x48')](_0x26948d[_0x2738('0x45')],_0x26948d[_0x2738('0x46')]);_0x3ac23a['attributes']=_['intersection'](_0x26948d[_0x2738('0x45')],qs['fields'](_0x44960c[_0x2738('0x46')][_0x2738('0x4a')]));_0x3ac23a[_0x2738('0x49')]=_0x3ac23a[_0x2738('0x49')][_0x2738('0x4b')]?_0x3ac23a[_0x2738('0x49')]:_0x26948d[_0x2738('0x45')];if(!_0x44960c['query'][_0x2738('0x4c')]('nolimit')){_0x3ac23a[_0x2738('0x32')]=qs[_0x2738('0x32')](_0x44960c['query'][_0x2738('0x32')]);_0x3ac23a[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x44960c[_0x2738('0x46')]['offset']);}_0x3ac23a[_0x2738('0x68')]=qs[_0x2738('0x4e')](_0x44960c[_0x2738('0x46')][_0x2738('0x4e')]);_0x3ac23a[_0x2738('0x4f')]=qs['filters'](_[_0x2738('0x69')](_0x44960c[_0x2738('0x46')],_0x26948d[_0x2738('0x50')]));_0x3ac23a['where'][_0x2738('0x6a')]=_0x18e5a7['id'];if(_0x44960c[_0x2738('0x46')]['filter']){_0x3ac23a[_0x2738('0x4f')]=_[_0x2738('0x52')](_0x3ac23a[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x3ac23a[_0x2738('0x49')],function(_0x1936fb){var _0x10621b={};_0x10621b[_0x1936fb]={'$like':'%'+_0x44960c[_0x2738('0x46')]['filter']+'%'};return _0x10621b;})});}_0x3ac23a=_[_0x2738('0x52')]({},_0x3ac23a,_0x44960c[_0x2738('0x54')]);return db[_0x2738('0x67')][_0x2738('0x55')](_0x3ac23a);}})[_0x2738('0x38')](function(_0xeebf79){if(_0xeebf79){return db[_0x2738('0x6b')][_0x2738('0x6c')]({'where':{'id':_[_0x2738('0x40')](_0xeebf79,_0x2738('0x6d')),'role':_0x2738('0x6e')},'attributes':['id',_0x2738('0x3d'),_0x2738('0x6f'),_0x2738('0x70'),_0x2738('0x71')]});}})[_0x2738('0x38')](function(_0x22a6d5){if(_0x22a6d5){return{'count':_0x22a6d5[_0x2738('0x33')],'rows':_[_0x2738('0x40')](_0x22a6d5[_0x2738('0x56')],function(_0x5c3175){return{'membername':_0x5c3175[_0x2738('0x3d')],'UserId':_0x5c3175['id'],'queue_name':_0x29f8ea[_0x2738('0x3d')],'ChatQueueId':_0x29f8ea['id'],'interface':util[_0x2738('0x72')]('%s/%s',_0x2738('0x73'),_0x5c3175[_0x2738('0x3d')]),'penalty':0x0,'paused':_0x5c3175[_0x2738('0x6f')],'createdAt':_0x5c3175['createdAt'],'updatedAt':_0x5c3175[_0x2738('0x70')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4ec8b2,_0x3ac23a))['catch'](handleError(_0x4ec8b2,null));};exports[_0x2738('0x74')]=function(_0x41abfd,_0x1dda90,_0xd81740){var _0x801501={};var _0x59e33d={};var _0x50c697;var _0x143b56;return db[_0x2738('0x41')][_0x2738('0x66')]({'where':{'id':_0x41abfd['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x1dda90,null))[_0x2738('0x38')](function(_0x3a12c9){if(_0x3a12c9){_0x50c697=_0x3a12c9;_0x59e33d[_0x2738('0x45')]=_['keys'](db[_0x2738('0x75')]['rawAttributes']);_0x59e33d[_0x2738('0x46')]=_[_0x2738('0x47')](_0x41abfd[_0x2738('0x46')]);_0x59e33d[_0x2738('0x50')]=_['intersection'](_0x59e33d[_0x2738('0x45')],_0x59e33d[_0x2738('0x46')]);_0x801501[_0x2738('0x49')]=_['intersection'](_0x59e33d[_0x2738('0x45')],qs[_0x2738('0x4a')](_0x41abfd[_0x2738('0x46')][_0x2738('0x4a')]));_0x801501['attributes']=_0x801501[_0x2738('0x49')][_0x2738('0x4b')]?_0x801501[_0x2738('0x49')]:_0x59e33d[_0x2738('0x45')];_0x801501['order']=qs['sort'](_0x41abfd[_0x2738('0x46')][_0x2738('0x4e')]);_0x801501[_0x2738('0x4f')]=qs[_0x2738('0x50')](_[_0x2738('0x69')](_0x41abfd['query'],_0x59e33d[_0x2738('0x50')]));if(_0x41abfd['query']['filter']){_0x801501['where']=_['merge'](_0x801501[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x801501[_0x2738('0x49')],function(_0x29516b){var _0x183c05={};_0x183c05[_0x29516b]={'$like':'%'+_0x41abfd[_0x2738('0x46')][_0x2738('0x51')]+'%'};return _0x183c05;})});}_0x801501=_['merge']({},_0x801501,_0x41abfd[_0x2738('0x54')]);return _0x50c697['getTeams'](_0x801501);}})['then'](function(_0x51522e){if(_0x51522e){_0x143b56=_0x51522e[_0x2738('0x4b')];if(!_0x41abfd[_0x2738('0x46')][_0x2738('0x4c')]('nolimit')){_0x801501['limit']=qs['limit'](_0x41abfd[_0x2738('0x46')][_0x2738('0x32')]);_0x801501[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x41abfd[_0x2738('0x46')][_0x2738('0x30')]);}return _0x50c697[_0x2738('0x74')](_0x801501);}})['then'](function(_0x3e4081){if(_0x3e4081){return _0x3e4081?{'count':_0x143b56,'rows':_0x3e4081}:null;}})[_0x2738('0x38')](respondWithResult(_0x1dda90,null))[_0x2738('0x2b')](handleError(_0x1dda90,null));};exports[_0x2738('0x76')]=function(_0x3b915f,_0x27aeeb,_0x325e44){var _0x5aba30=_0x3b915f[_0x2738('0x5c')]['ids'];return db[_0x2738('0x75')][_0x2738('0x55')]({'where':{'id':_0x5aba30},'attributes':['id'],'include':[{'model':db[_0x2738('0x6b')],'as':_0x2738('0x77'),'attributes':['id',_0x2738('0x3d'),_0x2738('0x78'),_0x2738('0x79'),_0x2738('0x7a')],'raw':!![]}]})[_0x2738('0x38')](function(_0x355917){if(_0x355917){var _0x5a9ebc=_['flatMap'](_0x355917,function(_0x325fd7){var _0xfeeba=_0x325fd7[_0x2738('0x3a')]({'plain':!![]});return _0xfeeba['Agents'];});return db['ChatQueue'][_0x2738('0x5a')]({'where':{'id':_0x3b915f[_0x2738('0x63')]['id']}})[_0x2738('0x38')](function(_0xec39ca){return db['sequelize'][_0x2738('0x7b')](function(_0x4080a6){return _0xec39ca['addTeams'](_0x5aba30,{'transaction':_0x4080a6})['then'](function(){return BPromise[_0x2738('0x7c')](_0x5a9ebc,function(_0x1164fe){return db[_0x2738('0x67')]['findOrCreate']({'where':{'UserId':_0x1164fe['id'],'ChatQueueId':_0x3b915f[_0x2738('0x63')]['id']},'transaction':_0x4080a6});});})['then'](function(){_0x5a9ebc[_0x2738('0x7d')](function(_0x510b8e){socket[_0x2738('0x7e')](_0x2738('0x7f'),{'UserId':_0x510b8e['id'],'ChatQueueId':_0xec39ca['id']});});});});});}})[_0x2738('0x38')](respondWithStatusCode(_0x27aeeb,null))['catch'](handleError(_0x27aeeb,null));};exports[_0x2738('0x80')]=function(_0xacd2f0,_0x440487,_0x3fd25e){return db[_0x2738('0x75')]['findAll']({'where':{'id':_0xacd2f0[_0x2738('0x46')][_0x2738('0x81')]},'attributes':['id'],'include':[{'model':db[_0x2738('0x6b')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x2738('0x38')](handleEntityNotFound(_0x440487,null))['then'](function(_0x5bc37f){var _0x552e27=_['map'](_0x5bc37f,'id');var _0x389c28=[];var _0x2d17b1=[];var _0x58e974=squel[_0x2738('0x82')]();_0x58e974[_0x2738('0x83')](_0x2738('0x84'))[_0x2738('0x85')](_0x2738('0x86'),'tq')['join'](_0x2738('0x87'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x2738('0x4f')](_0x2738('0x88'),_0xacd2f0['params']['id']);for(var _0x770087=0x0;_0x770087<_0x5bc37f['length'];_0x770087+=0x1){let _0xc954a0=_0x5bc37f[_0x770087];for(var _0x4d2c54=0x0;_0x4d2c54<_0xc954a0[_0x2738('0x77')]['length'];_0x4d2c54+=0x1){let _0x481871=_0xc954a0[_0x2738('0x77')][_0x4d2c54];var _0x260879=_0x58e974['clone']();_0x260879[_0x2738('0x4f')](_0x2738('0x89'),_0x481871['id']);_0x2d17b1[_0x2738('0x8a')](db[_0x2738('0x8b')][_0x2738('0x46')](_0x260879['toString'](),{'type':db['sequelize'][_0x2738('0x8c')][_0x2738('0x8d')]})['then'](function(_0x3ef7ad){if(_0x3ef7ad[_0x2738('0x4b')]===0x1){return _0x481871['id'];}else{var _0x5354e9=_['every'](_[_0x2738('0x40')](_0x3ef7ad,_0x2738('0x8e')),function(_0x35f4b9){return _[_0x2738('0x8f')](_0x552e27,_0x35f4b9);});if(_0x5354e9){return _0x481871['id'];}}}));}}return BPromise['all'](_0x2d17b1)[_0x2738('0x38')](function(_0x16075d){_0x389c28=_(_0x389c28)[_0x2738('0x90')](_0x16075d)[_0x2738('0x91')]()[_0x2738('0x92')]();return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0xacd2f0[_0x2738('0x63')]['id']}})[_0x2738('0x38')](function(_0x4bee57){return db['sequelize'][_0x2738('0x7b')](function(_0x1292ff){return _0x4bee57['removeTeams'](_0xacd2f0['query'][_0x2738('0x81')],{'transaction':_0x1292ff})[_0x2738('0x38')](function(){if(!_[_0x2738('0x93')](_0x389c28)){return _0x4bee57[_0x2738('0x94')](_0x389c28,{'transaction':_0x1292ff});}})[_0x2738('0x38')](function(){_0x389c28[_0x2738('0x7d')](function(_0x38d1c9){socket['emit'](_0x2738('0x95'),{'UserId':_0x38d1c9,'ChatQueueId':_0x4bee57['id']});});});});});});})['then'](respondWithStatusCode(_0x440487,null))[_0x2738('0x2b')](handleError(_0x440487,null));};exports[_0x2738('0x96')]=function(_0x4792e9,_0x6f675a,_0xa90fd5){return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x4792e9[_0x2738('0x63')]['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x6f675a,null))[_0x2738('0x38')](function(_0x4a1710){if(_0x4a1710){return _0x4a1710[_0x2738('0x96')](_0x4792e9[_0x2738('0x5c')][_0x2738('0x81')],_[_0x2738('0x97')](_0x4792e9[_0x2738('0x5c')],[_0x2738('0x81'),'id'])||{})[_0x2738('0x98')](function(_0x28f47e){for(var _0x2f8ccf=0x0;_0x2f8ccf<_0x4792e9[_0x2738('0x5c')][_0x2738('0x81')][_0x2738('0x4b')];_0x2f8ccf+=0x1){socket['emit'](_0x2738('0x7f'),{'UserId':Number(_0x4792e9['body'][_0x2738('0x81')][_0x2f8ccf]),'ChatQueueId':Number(_0x4792e9[_0x2738('0x63')]['id'])});}return _0x28f47e;});}})[_0x2738('0x38')](respondWithResult(_0x6f675a,null))[_0x2738('0x2b')](handleError(_0x6f675a,null));};exports[_0x2738('0x94')]=function(_0x76c38a,_0x5cf9e7,_0x28e8c0){return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x76c38a['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x5cf9e7,null))[_0x2738('0x38')](function(_0x50fc12){if(_0x50fc12){return _0x50fc12['removeAgents'](_0x76c38a['query'][_0x2738('0x81')])['then'](function(){if(_['isArray'](_0x76c38a[_0x2738('0x46')][_0x2738('0x81')])){for(var _0x2e2b88=0x0;_0x2e2b88<_0x76c38a[_0x2738('0x46')]['ids'][_0x2738('0x4b')];_0x2e2b88+=0x1){socket[_0x2738('0x7e')](_0x2738('0x95'),{'UserId':Number(_0x76c38a[_0x2738('0x46')][_0x2738('0x81')][_0x2e2b88]),'ChatQueueId':Number(_0x76c38a[_0x2738('0x63')]['id'])});}}else{socket['emit']('userChatQueue:remove',{'UserId':Number(_0x76c38a[_0x2738('0x46')][_0x2738('0x81')]),'ChatQueueId':Number(_0x76c38a[_0x2738('0x63')]['id'])});}});}})[_0x2738('0x38')](respondWithStatusCode(_0x5cf9e7,null))['catch'](handleError(_0x5cf9e7,null));};exports[_0x2738('0x99')]=function(_0x197342,_0x42941d,_0x41058f){var _0x545dca={};var _0x4c0e62={};var _0x363dba;var _0xba9448;return db['ChatQueue'][_0x2738('0x66')]({'where':{'id':_0x197342['params']['id']}})['then'](handleEntityNotFound(_0x42941d,null))[_0x2738('0x38')](function(_0x36cd07){if(_0x36cd07){_0x363dba=_0x36cd07;_0x4c0e62['model']=_[_0x2738('0x47')](db['User'][_0x2738('0x9a')]);_0x4c0e62[_0x2738('0x46')]=_[_0x2738('0x47')](_0x197342['query']);_0x4c0e62[_0x2738('0x50')]=_[_0x2738('0x48')](_0x4c0e62[_0x2738('0x45')],_0x4c0e62[_0x2738('0x46')]);_0x545dca[_0x2738('0x49')]=_['intersection'](_0x4c0e62['model'],qs[_0x2738('0x4a')](_0x197342[_0x2738('0x46')]['fields']));_0x545dca[_0x2738('0x49')]=_0x545dca[_0x2738('0x49')]['length']?_0x545dca[_0x2738('0x49')]:_0x4c0e62[_0x2738('0x45')];_0x545dca[_0x2738('0x68')]=qs[_0x2738('0x4e')](_0x197342['query'][_0x2738('0x4e')]);_0x545dca['where']=qs[_0x2738('0x50')](_['pick'](_0x197342[_0x2738('0x46')],_0x4c0e62[_0x2738('0x50')]));if(_0x197342[_0x2738('0x46')][_0x2738('0x51')]){_0x545dca[_0x2738('0x4f')]=_[_0x2738('0x52')](_0x545dca[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x545dca[_0x2738('0x49')],function(_0x5eadaf){var _0x3dacb2={};_0x3dacb2[_0x5eadaf]={'$like':'%'+_0x197342[_0x2738('0x46')]['filter']+'%'};return _0x3dacb2;})});}_0x545dca=_[_0x2738('0x52')]({},_0x545dca,_0x197342['options']);return _0x363dba[_0x2738('0x99')](_0x545dca);}})['then'](function(_0x2a7080){if(_0x2a7080){_0xba9448=_0x2a7080[_0x2738('0x4b')];if(!_0x197342['query']['hasOwnProperty'](_0x2738('0x4d'))){_0x545dca[_0x2738('0x32')]=qs[_0x2738('0x32')](_0x197342[_0x2738('0x46')][_0x2738('0x32')]);_0x545dca[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x197342['query'][_0x2738('0x30')]);}return _0x363dba[_0x2738('0x99')](_0x545dca);}})['then'](function(_0x5bd5aa){if(_0x5bd5aa){return _0x5bd5aa?{'count':_0xba9448,'rows':_0x5bd5aa}:null;}})[_0x2738('0x38')](respondWithResult(_0x42941d,null))[_0x2738('0x2b')](handleError(_0x42941d,null));};
\ No newline at end of file
index b6f032c..9bcd2ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3273=['emit','hasOwnProperty','hook','../../mysqldb','setMaxListeners','update','remove'];(function(_0x14a69e,_0x262122){var _0x27520c=function(_0x5a3e8e){while(--_0x5a3e8e){_0x14a69e['push'](_0x14a69e['shift']());}};_0x27520c(++_0x262122);}(_0x3273,0x1d1));var _0x3327=function(_0x1ca59f,_0x1a5cd7){_0x1ca59f=_0x1ca59f-0x0;var _0x2f3153=_0x3273[_0x1ca59f];return _0x2f3153;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0x3327('0x0'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x3327('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3327('0x2'),'afterDestroy':_0x3327('0x3')};function emitEvent(_0xaf26e){return function(_0x128388,_0x22eacb,_0x18be05){ChatQueueEvents['emit'](_0xaf26e+':'+_0x128388['id'],_0x128388);ChatQueueEvents[_0x3327('0x4')](_0xaf26e,_0x128388);_0x18be05(null);};}for(var e in events){if(events[_0x3327('0x5')](e)){var event=events[e];ChatQueue[_0x3327('0x6')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0x167b=['hasOwnProperty','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save','remove','emit'];(function(_0x36f97a,_0x177ad2){var _0x2087fc=function(_0x2ebdc8){while(--_0x2ebdc8){_0x36f97a['push'](_0x36f97a['shift']());}};_0x2087fc(++_0x177ad2);}(_0x167b,0x1bb));var _0xb167=function(_0x352726,_0x5a6895){_0x352726=_0x352726-0x0;var _0x12607d=_0x167b[_0x352726];return _0x12607d;};'use strict';var EventEmitter=require(_0xb167('0x0'));var ChatQueue=require(_0xb167('0x1'))['db'][_0xb167('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xb167('0x3')](0x0);var events={'afterCreate':_0xb167('0x4'),'afterUpdate':'update','afterDestroy':_0xb167('0x5')};function emitEvent(_0x234492){return function(_0x58418a,_0x4e3381,_0x45d650){ChatQueueEvents[_0xb167('0x6')](_0x234492+':'+_0x58418a['id'],_0x58418a);ChatQueueEvents[_0xb167('0x6')](_0x234492,_0x58418a);_0x45d650(null);};}for(var e in events){if(events[_0xb167('0x7')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0xb167('0x8')]=ChatQueueEvents;
\ No newline at end of file
index bab9897..cdb312d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf40=['./chatQueue.attributes','exports','define','ChatQueue','chat_queues','util','../../config/logger','moment','request-promise','rimraf','../../config/environment'];(function(_0x50a28b,_0x2c57a2){var _0x5945eb=function(_0x4ef69a){while(--_0x4ef69a){_0x50a28b['push'](_0x50a28b['shift']());}};_0x5945eb(++_0x2c57a2);}(_0xbf40,0x1e9));var _0x0bf4=function(_0x557fd2,_0x2c0a7a){_0x557fd2=_0x557fd2-0x0;var _0x1b54a2=_0xbf40[_0x557fd2];return _0x1b54a2;};'use strict';var _=require('lodash');var util=require(_0x0bf4('0x0'));var logger=require(_0x0bf4('0x1'))('api');var moment=require(_0x0bf4('0x2'));var BPromise=require('bluebird');var rp=require(_0x0bf4('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0bf4('0x4'));var config=require(_0x0bf4('0x5'));var attributes=require(_0x0bf4('0x6'));module[_0x0bf4('0x7')]=function(_0x540d09,_0x3b4405){return _0x540d09[_0x0bf4('0x8')](_0x0bf4('0x9'),attributes,{'tableName':_0x0bf4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfed2=['moment','bluebird','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','chat_queues','util','../../config/logger','api'];(function(_0x4176a7,_0x2e88f2){var _0x8dd6b=function(_0xc68823){while(--_0xc68823){_0x4176a7['push'](_0x4176a7['shift']());}};_0x8dd6b(++_0x2e88f2);}(_0xfed2,0x135));var _0x2fed=function(_0x39b6f7,_0x23c559){_0x39b6f7=_0x39b6f7-0x0;var _0x254b9b=_0xfed2[_0x39b6f7];return _0x254b9b;};'use strict';var _=require('lodash');var util=require(_0x2fed('0x0'));var logger=require(_0x2fed('0x1'))(_0x2fed('0x2'));var moment=require(_0x2fed('0x3'));var BPromise=require(_0x2fed('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2fed('0x5'));var rimraf=require(_0x2fed('0x6'));var config=require(_0x2fed('0x7'));var attributes=require(_0x2fed('0x8'));module[_0x2fed('0x9')]=function(_0xe15483,_0x2488d1){return _0xe15483[_0x2fed('0xa')]('ChatQueue',attributes,{'tableName':_0x2fed('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1485e41..0ede894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowChatQueue'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x0a6b,0x120));var _0xb0a6=function(_0x170994,_0x5adc66){_0x170994=_0x170994-0x0;var _0x3c89a3=_0x0a6b[_0x170994];return _0x3c89a3;};'use strict';var _=require(_0xb0a6('0x0'));var util=require('util');var moment=require(_0xb0a6('0x1'));var BPromise=require(_0xb0a6('0x2'));var rs=require(_0xb0a6('0x3'));var fs=require('fs');var Redis=require(_0xb0a6('0x4'));var db=require(_0xb0a6('0x5'))['db'];var utils=require(_0xb0a6('0x6'));var logger=require(_0xb0a6('0x7'))(_0xb0a6('0x8'));var config=require(_0xb0a6('0x9'));var jayson=require(_0xb0a6('0xa'));var client=jayson['client'][_0xb0a6('0xb')]({'port':0x232a});config['redis']=_[_0xb0a6('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb0a6('0xd'))(new Redis(config['redis']));require(_0xb0a6('0xe'))[_0xb0a6('0xf')](socket);function respondWithRpcPromise(_0x549cc4,_0x41e68d,_0x30150c){return new BPromise(function(_0x5cd9b3,_0x1245ab){return client[_0xb0a6('0x10')](_0x549cc4,_0x30150c)[_0xb0a6('0x11')](function(_0x13cd18){logger[_0xb0a6('0x12')](_0xb0a6('0x13'),_0x41e68d,_0xb0a6('0x14'));logger[_0xb0a6('0x15')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x41e68d,_0xb0a6('0x14'),JSON[_0xb0a6('0x16')](_0x13cd18));if(_0x13cd18[_0xb0a6('0x17')]){if(_0x13cd18[_0xb0a6('0x17')][_0xb0a6('0x18')]===0x1f4){logger['error'](_0xb0a6('0x13'),_0x41e68d,_0x13cd18[_0xb0a6('0x17')]['message']);return _0x1245ab(_0x13cd18[_0xb0a6('0x17')]['message']);}logger['error'](_0xb0a6('0x13'),_0x41e68d,_0x13cd18[_0xb0a6('0x17')][_0xb0a6('0x19')]);return _0x5cd9b3(_0x13cd18[_0xb0a6('0x17')][_0xb0a6('0x19')]);}else{logger[_0xb0a6('0x12')](_0xb0a6('0x13'),_0x41e68d,_0xb0a6('0x14'));_0x5cd9b3(_0x13cd18[_0xb0a6('0x1a')][_0xb0a6('0x19')]);}})[_0xb0a6('0x1b')](function(_0x57bf27){logger['error'](_0xb0a6('0x13'),_0x41e68d,_0x57bf27);_0x1245ab(_0x57bf27);});});}exports[_0xb0a6('0x1c')]=function(_0x5a23d5){var _0xd99d59=this;return new Promise(function(_0x5571c7,_0x1a5472){return db[_0xb0a6('0x1d')][_0xb0a6('0x1e')]({'raw':_0x5a23d5[_0xb0a6('0x1f')]?_0x5a23d5['options'][_0xb0a6('0x20')]===undefined?!![]:![]:!![],'where':_0x5a23d5['options']?_0x5a23d5[_0xb0a6('0x1f')][_0xb0a6('0x21')]||null:null,'attributes':_0x5a23d5[_0xb0a6('0x1f')]?_0x5a23d5[_0xb0a6('0x1f')][_0xb0a6('0x22')]||null:null,'limit':_0x5a23d5[_0xb0a6('0x1f')]?_0x5a23d5['options'][_0xb0a6('0x23')]||null:null,'include':_0x5a23d5[_0xb0a6('0x1f')]?_0x5a23d5[_0xb0a6('0x1f')][_0xb0a6('0x24')]?_[_0xb0a6('0x25')](_0x5a23d5['options'][_0xb0a6('0x24')],function(_0xf0d5f1){return{'model':db[_0xf0d5f1[_0xb0a6('0x26')]],'as':_0xf0d5f1['as'],'attributes':_0xf0d5f1['attributes'],'include':_0xf0d5f1[_0xb0a6('0x24')]?_[_0xb0a6('0x25')](_0xf0d5f1['include'],function(_0x7236f1){return{'model':db[_0x7236f1[_0xb0a6('0x26')]],'as':_0x7236f1['as'],'attributes':_0x7236f1['attributes'],'include':_0x7236f1['include']?_['map'](_0x7236f1['include'],function(_0x384522){return{'model':db[_0x384522[_0xb0a6('0x26')]],'as':_0x384522['as'],'attributes':_0x384522[_0xb0a6('0x22')]};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x11')](function(_0x4cec07){logger['info'](_0xb0a6('0x1c'),_0x5a23d5);logger[_0xb0a6('0x15')]('GetChatQueue',_0x5a23d5,JSON[_0xb0a6('0x16')](_0x4cec07));_0x5571c7(_0x4cec07);})[_0xb0a6('0x1b')](function(_0x5d7b78){logger[_0xb0a6('0x17')](_0xb0a6('0x1c'),_0x5d7b78[_0xb0a6('0x19')],_0x5a23d5);_0x1a5472(_0xd99d59[_0xb0a6('0x17')](0x1f4,_0x5d7b78['message']));});});};exports[_0xb0a6('0x27')]=function(_0x51e2e9){var _0x4f56ec=this;return new Promise(function(_0x481cbc,_0x2ecab3){return db[_0xb0a6('0x1d')][_0xb0a6('0x28')]({'raw':_0x51e2e9['options']?_0x51e2e9[_0xb0a6('0x1f')][_0xb0a6('0x20')]===undefined?!![]:![]:!![],'where':_0x51e2e9[_0xb0a6('0x1f')]?_0x51e2e9[_0xb0a6('0x1f')][_0xb0a6('0x21')]||null:null,'attributes':_0x51e2e9['options']?_0x51e2e9[_0xb0a6('0x1f')]['attributes']||null:null,'include':_0x51e2e9[_0xb0a6('0x1f')]?_0x51e2e9['options'][_0xb0a6('0x24')]?_[_0xb0a6('0x25')](_0x51e2e9[_0xb0a6('0x1f')][_0xb0a6('0x24')],function(_0x13a9b4){return{'model':db[_0x13a9b4[_0xb0a6('0x26')]],'as':_0x13a9b4['as'],'attributes':_0x13a9b4[_0xb0a6('0x22')],'include':_0x13a9b4[_0xb0a6('0x24')]?_[_0xb0a6('0x25')](_0x13a9b4[_0xb0a6('0x24')],function(_0x47e675){return{'model':db[_0x47e675['model']],'as':_0x47e675['as'],'attributes':_0x47e675[_0xb0a6('0x22')],'include':_0x47e675['include']?_[_0xb0a6('0x25')](_0x47e675[_0xb0a6('0x24')],function(_0x356d02){return{'model':db[_0x356d02[_0xb0a6('0x26')]],'as':_0x356d02['as'],'attributes':_0x356d02['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x11')](function(_0x2cb473){logger['info'](_0xb0a6('0x27'),_0x51e2e9);logger[_0xb0a6('0x15')](_0xb0a6('0x27'),_0x51e2e9,JSON[_0xb0a6('0x16')](_0x2cb473));_0x481cbc(_0x2cb473);})['catch'](function(_0x26b3b2){logger['error'](_0xb0a6('0x27'),_0x26b3b2[_0xb0a6('0x19')],_0x51e2e9);_0x2ecab3(_0x4f56ec['error'](0x1f4,_0x26b3b2[_0xb0a6('0x19')]));});});};
\ No newline at end of file
+var _0xeb3e=['defaults','localhost','socket.io-emitter','info','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','ChatQueue','findAll','options','where','attributes','limit','include','map','model','GetChatQueue','ShowChatQueue','find','raw','then','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis'];(function(_0x37f064,_0x2eb222){var _0x212557=function(_0x5139c3){while(--_0x5139c3){_0x37f064['push'](_0x37f064['shift']());}};_0x212557(++_0x2eb222);}(_0xeb3e,0x106));var _0xeeb3=function(_0x40117c,_0x38efc5){_0x40117c=_0x40117c-0x0;var _0x4f805b=_0xeb3e[_0x40117c];return _0x4f805b;};'use strict';var _=require('lodash');var util=require(_0xeeb3('0x0'));var moment=require(_0xeeb3('0x1'));var BPromise=require(_0xeeb3('0x2'));var rs=require(_0xeeb3('0x3'));var fs=require('fs');var Redis=require(_0xeeb3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xeeb3('0x5'));var logger=require(_0xeeb3('0x6'))(_0xeeb3('0x7'));var config=require('../../config/environment');var jayson=require(_0xeeb3('0x8'));var client=jayson['client'][_0xeeb3('0x9')]({'port':0x232a});config[_0xeeb3('0xa')]=_[_0xeeb3('0xb')](config[_0xeeb3('0xa')],{'host':_0xeeb3('0xc'),'port':0x18eb});var socket=require(_0xeeb3('0xd'))(new Redis(config[_0xeeb3('0xa')]));require('./chatQueue.socket')['register'](socket);function respondWithRpcPromise(_0x289444,_0x3a9542,_0x2d0b19){return new BPromise(function(_0x5b885a,_0x3e8d18){return client['request'](_0x289444,_0x2d0b19)['then'](function(_0x79d78a){logger[_0xeeb3('0xe')](_0xeeb3('0xf'),_0x3a9542,'request\x20sent');logger[_0xeeb3('0x10')](_0xeeb3('0x11'),_0x3a9542,_0xeeb3('0x12'),JSON[_0xeeb3('0x13')](_0x79d78a));if(_0x79d78a['error']){if(_0x79d78a['error'][_0xeeb3('0x14')]===0x1f4){logger[_0xeeb3('0x15')](_0xeeb3('0xf'),_0x3a9542,_0x79d78a[_0xeeb3('0x15')][_0xeeb3('0x16')]);return _0x3e8d18(_0x79d78a[_0xeeb3('0x15')][_0xeeb3('0x16')]);}logger[_0xeeb3('0x15')](_0xeeb3('0xf'),_0x3a9542,_0x79d78a[_0xeeb3('0x15')][_0xeeb3('0x16')]);return _0x5b885a(_0x79d78a['error'][_0xeeb3('0x16')]);}else{logger[_0xeeb3('0xe')](_0xeeb3('0xf'),_0x3a9542,_0xeeb3('0x12'));_0x5b885a(_0x79d78a[_0xeeb3('0x17')][_0xeeb3('0x16')]);}})[_0xeeb3('0x18')](function(_0x5132da){logger['error']('ChatQueue,\x20%s,\x20%s',_0x3a9542,_0x5132da);_0x3e8d18(_0x5132da);});});}exports['GetChatQueue']=function(_0x14d678){var _0x461208=this;return new Promise(function(_0x46cd86,_0xc1727){return db[_0xeeb3('0x19')][_0xeeb3('0x1a')]({'raw':_0x14d678[_0xeeb3('0x1b')]?_0x14d678['options']['raw']===undefined?!![]:![]:!![],'where':_0x14d678[_0xeeb3('0x1b')]?_0x14d678['options'][_0xeeb3('0x1c')]||null:null,'attributes':_0x14d678[_0xeeb3('0x1b')]?_0x14d678[_0xeeb3('0x1b')][_0xeeb3('0x1d')]||null:null,'limit':_0x14d678['options']?_0x14d678[_0xeeb3('0x1b')][_0xeeb3('0x1e')]||null:null,'include':_0x14d678['options']?_0x14d678[_0xeeb3('0x1b')][_0xeeb3('0x1f')]?_['map'](_0x14d678['options'][_0xeeb3('0x1f')],function(_0x3ba9fc){return{'model':db[_0x3ba9fc['model']],'as':_0x3ba9fc['as'],'attributes':_0x3ba9fc[_0xeeb3('0x1d')],'include':_0x3ba9fc[_0xeeb3('0x1f')]?_['map'](_0x3ba9fc[_0xeeb3('0x1f')],function(_0x5b3a0d){return{'model':db[_0x5b3a0d['model']],'as':_0x5b3a0d['as'],'attributes':_0x5b3a0d[_0xeeb3('0x1d')],'include':_0x5b3a0d[_0xeeb3('0x1f')]?_[_0xeeb3('0x20')](_0x5b3a0d[_0xeeb3('0x1f')],function(_0x468076){return{'model':db[_0x468076[_0xeeb3('0x21')]],'as':_0x468076['as'],'attributes':_0x468076[_0xeeb3('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3eeb79){logger[_0xeeb3('0xe')](_0xeeb3('0x22'),_0x14d678);logger[_0xeeb3('0x10')](_0xeeb3('0x22'),_0x14d678,JSON['stringify'](_0x3eeb79));_0x46cd86(_0x3eeb79);})[_0xeeb3('0x18')](function(_0x3ddd2f){logger[_0xeeb3('0x15')]('GetChatQueue',_0x3ddd2f[_0xeeb3('0x16')],_0x14d678);_0xc1727(_0x461208[_0xeeb3('0x15')](0x1f4,_0x3ddd2f[_0xeeb3('0x16')]));});});};exports[_0xeeb3('0x23')]=function(_0x2b7e63){var _0x330c2d=this;return new Promise(function(_0x46c0ca,_0x2a0167){return db['ChatQueue'][_0xeeb3('0x24')]({'raw':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63[_0xeeb3('0x1b')][_0xeeb3('0x25')]===undefined?!![]:![]:!![],'where':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63['options'][_0xeeb3('0x1c')]||null:null,'attributes':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63[_0xeeb3('0x1b')]['attributes']||null:null,'include':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63[_0xeeb3('0x1b')]['include']?_[_0xeeb3('0x20')](_0x2b7e63[_0xeeb3('0x1b')][_0xeeb3('0x1f')],function(_0x240fe8){return{'model':db[_0x240fe8[_0xeeb3('0x21')]],'as':_0x240fe8['as'],'attributes':_0x240fe8[_0xeeb3('0x1d')],'include':_0x240fe8[_0xeeb3('0x1f')]?_[_0xeeb3('0x20')](_0x240fe8[_0xeeb3('0x1f')],function(_0x4e5f06){return{'model':db[_0x4e5f06['model']],'as':_0x4e5f06['as'],'attributes':_0x4e5f06[_0xeeb3('0x1d')],'include':_0x4e5f06['include']?_[_0xeeb3('0x20')](_0x4e5f06[_0xeeb3('0x1f')],function(_0x1add39){return{'model':db[_0x1add39[_0xeeb3('0x21')]],'as':_0x1add39['as'],'attributes':_0x1add39[_0xeeb3('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xeeb3('0x26')](function(_0x20b694){logger[_0xeeb3('0xe')]('ShowChatQueue',_0x2b7e63);logger['debug'](_0xeeb3('0x23'),_0x2b7e63,JSON[_0xeeb3('0x13')](_0x20b694));_0x46c0ca(_0x20b694);})[_0xeeb3('0x18')](function(_0x267382){logger[_0xeeb3('0x15')](_0xeeb3('0x23'),_0x267382[_0xeeb3('0x16')],_0x2b7e63);_0x2a0167(_0x330c2d['error'](0x1f4,_0x267382['message']));});});};
\ No newline at end of file
index efb09be..dce06b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['removeListener','chatQueue:','save','remove','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x5c12,0x188));var _0x25c1=function(_0x419550,_0x15cdf1){_0x419550=_0x419550-0x0;var _0x55f9ef=_0x5c12[_0x419550];return _0x55f9ef;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x25c1('0x0'),_0x25c1('0x1'),'update'];function createListener(_0x44bc2e,_0x1991e5){return function(_0x4042fe){_0x1991e5[_0x25c1('0x2')](_0x44bc2e,_0x4042fe);};}function removeListener(_0x2c5df0,_0x21ec20){return function(){ChatQueueEvents[_0x25c1('0x3')](_0x2c5df0,_0x21ec20);};}exports['register']=function(_0x204287){for(var _0x42ac16=0x0,_0x382922=events['length'];_0x42ac16<_0x382922;_0x42ac16++){var _0x5c69b1=events[_0x42ac16];var _0x24981c=createListener(_0x25c1('0x4')+_0x5c69b1,_0x204287);ChatQueueEvents['on'](_0x5c69b1,_0x24981c);}};
\ No newline at end of file
+var _0x702d=['remove','update','emit','register','length','./chatQueue.events','save'];(function(_0xadd166,_0x40fca4){var _0x377bcc=function(_0x42ad49){while(--_0x42ad49){_0xadd166['push'](_0xadd166['shift']());}};_0x377bcc(++_0x40fca4);}(_0x702d,0x147));var _0xd702=function(_0x532840,_0x30f458){_0x532840=_0x532840-0x0;var _0x42aa54=_0x702d[_0x532840];return _0x42aa54;};'use strict';var ChatQueueEvents=require(_0xd702('0x0'));var events=[_0xd702('0x1'),_0xd702('0x2'),_0xd702('0x3')];function createListener(_0x37ed5c,_0x5c2b9e){return function(_0x20c11a){_0x5c2b9e[_0xd702('0x4')](_0x37ed5c,_0x20c11a);};}function removeListener(_0x27b260,_0x1c5a32){return function(){ChatQueueEvents['removeListener'](_0x27b260,_0x1c5a32);};}exports[_0xd702('0x5')]=function(_0x544e94){for(var _0x1aecfc=0x0,_0x3a2c03=events[_0xd702('0x6')];_0x1aecfc<_0x3a2c03;_0x1aecfc++){var _0x5af246=events[_0x1aecfc];var _0x12bb75=createListener('chatQueue:'+_0x5af246,_0x544e94);ChatQueueEvents['on'](_0x5af246,_0x12bb75);}};
\ No newline at end of file
index 2bb27ee..aedf71c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1b1e76,_0x31695b){_0x1b1e76=_0x1b1e76-0x0;var _0x3d743a=_0x5fc3[_0x1b1e76];return _0x3d743a;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
+var _0x814b=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x3ae753,_0x2bbb6c){var _0x706dc=function(_0xc9f171){while(--_0xc9f171){_0x3ae753['push'](_0x3ae753['shift']());}};_0x706dc(++_0x2bbb6c);}(_0x814b,0x1a2));var _0xb814=function(_0x21de89,_0x367053){_0x21de89=_0x21de89-0x0;var _0x290b7e=_0x814b[_0x21de89];return _0x290b7e;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0x16')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0x16')](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x18')]);router[_0xb814('0x16')](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x19')]);router[_0xb814('0x1a')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller['destroy']);router[_0xb814('0x1c')]('/:id/teams',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb814('0x1e')]);module['exports']=router;
\ No newline at end of file
index 84bbf1f..ca0db89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d6=['DATE','sequelize','STRING'];(function(_0x464543,_0x471efe){var _0x3bbf98=function(_0x4c1dd4){while(--_0x4c1dd4){_0x464543['push'](_0x464543['shift']());}};_0x3bbf98(++_0x471efe);}(_0x95d6,0xdf));var _0x695d=function(_0xc4e2e3,_0x1db626){_0xc4e2e3=_0xc4e2e3-0x0;var _0x1fd956=_0x95d6[_0xc4e2e3];return _0x1fd956;};'use strict';var moment=require('moment');var Sequelize=require(_0x695d('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x695d('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x695d('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x695d('0x2')]},'acceptAt':{'type':Sequelize[_0x695d('0x2')]},'exitAt':{'type':Sequelize[_0x695d('0x2')]},'reason':{'type':Sequelize[_0x695d('0x1')]}};
\ No newline at end of file
+var _0xd51a=['sequelize','exports','STRING','DATE','moment'];(function(_0x453701,_0x2caf1d){var _0x544953=function(_0x3a8453){while(--_0x3a8453){_0x453701['push'](_0x453701['shift']());}};_0x544953(++_0x2caf1d);}(_0xd51a,0x1c1));var _0xad51=function(_0x14cb7c,_0x3a44df){_0x14cb7c=_0x14cb7c-0x0;var _0x5742b8=_0xd51a[_0x14cb7c];return _0x5742b8;};'use strict';var moment=require(_0xad51('0x0'));var Sequelize=require(_0xad51('0x1'));module[_0xad51('0x2')]={'uniqueid':{'type':Sequelize[_0xad51('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xad51('0x4')]},'acceptAt':{'type':Sequelize[_0xad51('0x4')]},'exitAt':{'type':Sequelize[_0xad51('0x4')]},'reason':{'type':Sequelize[_0xad51('0x3')]}};
\ No newline at end of file
index 2f3696d..5d80f43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0650=['query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','ChatQueueReport','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','name','rawAttributes','fieldName','key','model'];(function(_0x17cb83,_0x2eb2b5){var _0x4faaca=function(_0x19fa2e){while(--_0x19fa2e){_0x17cb83['push'](_0x17cb83['shift']());}};_0x4faaca(++_0x2eb2b5);}(_0x0650,0xed));var _0x0065=function(_0x12ac1f,_0x461a52){_0x12ac1f=_0x12ac1f-0x0;var _0x724467=_0x0650[_0x12ac1f];return _0x724467;};'use strict';var emlformat=require(_0x0065('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0065('0x1'));var jsonpatch=require(_0x0065('0x2'));var rp=require('request-promise');var moment=require(_0x0065('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0065('0x4'));var util=require(_0x0065('0x5'));var path=require(_0x0065('0x6'));var sox=require('sox');var csv=require(_0x0065('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0065('0x8'));var crypto=require(_0x0065('0x9'));var jsforce=require(_0x0065('0xa'));var deskjs=require(_0x0065('0xb'));var toCsv=require(_0x0065('0x7'));var querystring=require(_0x0065('0xc'));var Papa=require(_0x0065('0xd'));var Redis=require(_0x0065('0xe'));var authService=require(_0x0065('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0065('0x10'));var hardwareService=require(_0x0065('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x0065('0x12'));var licenseUtil=require(_0x0065('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45c7d1,_0x4255f6){_0x4255f6=_0x4255f6||0xcc;return function(_0x4c6296){if(_0x4c6296){return _0x45c7d1[_0x0065('0x14')](_0x4255f6);}return _0x45c7d1[_0x0065('0x15')](_0x4255f6)['end']();};}function respondWithResult(_0x5ae653,_0x1b9b1e){_0x1b9b1e=_0x1b9b1e||0xc8;return function(_0x5c0b74){if(_0x5c0b74){return _0x5ae653['status'](_0x1b9b1e)[_0x0065('0x16')](_0x5c0b74);}};}function respondWithFilteredResult(_0x5773d6,_0x38a870){return function(_0x48d817){if(_0x48d817){var _0x391fc1=typeof _0x38a870[_0x0065('0x17')]===_0x0065('0x18')&&typeof _0x38a870[_0x0065('0x19')]===_0x0065('0x18');var _0x34b0e2=_0x48d817[_0x0065('0x1a')];var _0x393d6e=_0x391fc1?0x0:_0x38a870['offset'];var _0x18bfa1=_0x391fc1?_0x48d817[_0x0065('0x1a')]:_0x38a870['offset']+_0x38a870[_0x0065('0x19')];var _0x3a0517;if(_0x18bfa1>=_0x34b0e2){_0x18bfa1=_0x34b0e2;_0x3a0517=0xc8;}else{_0x3a0517=0xce;}_0x5773d6[_0x0065('0x15')](_0x3a0517);return _0x5773d6[_0x0065('0x1b')](_0x0065('0x1c'),_0x393d6e+'-'+_0x18bfa1+'/'+_0x34b0e2)[_0x0065('0x16')](_0x48d817);}return null;};}function patchUpdates(_0x319e7a){return function(_0x529e30){try{jsonpatch['apply'](_0x529e30,_0x319e7a,!![]);}catch(_0x4b1213){return BPromise[_0x0065('0x1d')](_0x4b1213);}return _0x529e30[_0x0065('0x1e')]();};}function saveUpdates(_0x5b60c3,_0x2de3ae){return function(_0x5f1733){if(_0x5f1733){return _0x5f1733[_0x0065('0x1f')](_0x5b60c3)[_0x0065('0x20')](function(_0x3ec265){return _0x3ec265;});}return null;};}function removeEntity(_0x376452,_0x161b4c){return function(_0x1efa70){if(_0x1efa70){return _0x1efa70[_0x0065('0x21')]()['then'](function(){_0x376452[_0x0065('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b4a4e,_0x3c715a){return function(_0x5924b3){if(!_0x5924b3){_0x4b4a4e[_0x0065('0x14')](0x194);}return _0x5924b3;};}function handleError(_0x6bf13b,_0x5db92c){_0x5db92c=_0x5db92c||0x1f4;return function(_0x123604){logger['error'](_0x123604['stack']);if(_0x123604[_0x0065('0x22')]){delete _0x123604[_0x0065('0x22')];}_0x6bf13b['status'](_0x5db92c)['send'](_0x123604);};}exports['index']=function(_0x51e091,_0x2e554f){var _0x1a977a={},_0x1f8813={},_0x369d08={'count':0x0,'rows':[]};var _0x4f15f5=_['map'](db['ChatQueueReport'][_0x0065('0x23')],function(_0x3a5286){return{'name':_0x3a5286[_0x0065('0x24')],'type':_0x3a5286['type'][_0x0065('0x25')]};});_0x1f8813[_0x0065('0x26')]=_['map'](_0x4f15f5,_0x0065('0x22'));_0x1f8813[_0x0065('0x27')]=_[_0x0065('0x28')](_0x51e091[_0x0065('0x27')]);_0x1f8813[_0x0065('0x29')]=_[_0x0065('0x2a')](_0x1f8813[_0x0065('0x26')],_0x1f8813[_0x0065('0x27')]);_0x1a977a['attributes']=_['intersection'](_0x1f8813['model'],qs[_0x0065('0x2b')](_0x51e091[_0x0065('0x27')][_0x0065('0x2b')]));_0x1a977a[_0x0065('0x2c')]=_0x1a977a[_0x0065('0x2c')][_0x0065('0x2d')]?_0x1a977a[_0x0065('0x2c')]:_0x1f8813['model'];if(!_0x51e091[_0x0065('0x27')][_0x0065('0x2e')](_0x0065('0x2f'))){_0x1a977a[_0x0065('0x19')]=qs[_0x0065('0x19')](_0x51e091['query'][_0x0065('0x19')]);_0x1a977a[_0x0065('0x17')]=qs[_0x0065('0x17')](_0x51e091[_0x0065('0x27')][_0x0065('0x17')]);}_0x1a977a[_0x0065('0x30')]=qs[_0x0065('0x31')](_0x51e091[_0x0065('0x27')][_0x0065('0x31')]);_0x1a977a[_0x0065('0x32')]=qs['filters'](_[_0x0065('0x33')](_0x51e091[_0x0065('0x27')],_0x1f8813[_0x0065('0x29')]),_0x4f15f5);if(_0x51e091['query'][_0x0065('0x34')]){_0x1a977a[_0x0065('0x32')]=_[_0x0065('0x35')](_0x1a977a[_0x0065('0x32')],{'$or':_[_0x0065('0x36')](_0x4f15f5,function(_0x231986){if(_0x231986['type']!==_0x0065('0x37')){var _0x2d1ba9={};_0x2d1ba9[_0x231986[_0x0065('0x22')]]={'$like':'%'+_0x51e091['query'][_0x0065('0x34')]+'%'};return _0x2d1ba9;}})});}_0x1a977a=_['merge']({},_0x1a977a,_0x51e091[_0x0065('0x38')]);var _0x37a434={'where':_0x1a977a['where']};return db[_0x0065('0x39')][_0x0065('0x1a')](_0x37a434)[_0x0065('0x20')](function(_0x3c1d6b){_0x369d08[_0x0065('0x1a')]=_0x3c1d6b;if(_0x51e091[_0x0065('0x27')]['includeAll']){_0x1a977a[_0x0065('0x3a')]=[{'all':!![]}];}return db[_0x0065('0x39')][_0x0065('0x3b')](_0x1a977a);})[_0x0065('0x20')](function(_0x1d251d){_0x369d08[_0x0065('0x3c')]=_0x1d251d;return _0x369d08;})[_0x0065('0x20')](respondWithFilteredResult(_0x2e554f,_0x1a977a))[_0x0065('0x3d')](handleError(_0x2e554f,null));};exports[_0x0065('0x3e')]=function(_0x41d6f7,_0x26cef9){var _0x32ab66={'raw':!![],'where':{'id':_0x41d6f7[_0x0065('0x3f')]['id']}},_0x35722d={};_0x35722d[_0x0065('0x26')]=_[_0x0065('0x28')](db[_0x0065('0x39')][_0x0065('0x23')]);_0x35722d[_0x0065('0x27')]=_[_0x0065('0x28')](_0x41d6f7[_0x0065('0x27')]);_0x35722d[_0x0065('0x29')]=_[_0x0065('0x2a')](_0x35722d['model'],_0x35722d[_0x0065('0x27')]);_0x32ab66['attributes']=_[_0x0065('0x2a')](_0x35722d['model'],qs[_0x0065('0x2b')](_0x41d6f7['query'][_0x0065('0x2b')]));_0x32ab66[_0x0065('0x2c')]=_0x32ab66[_0x0065('0x2c')]['length']?_0x32ab66['attributes']:_0x35722d[_0x0065('0x26')];if(_0x41d6f7[_0x0065('0x27')][_0x0065('0x40')]){_0x32ab66[_0x0065('0x3a')]=[{'all':!![]}];}_0x32ab66=_['merge']({},_0x32ab66,_0x41d6f7[_0x0065('0x38')]);return db[_0x0065('0x39')][_0x0065('0x41')](_0x32ab66)[_0x0065('0x20')](handleEntityNotFound(_0x26cef9,null))[_0x0065('0x20')](respondWithResult(_0x26cef9,null))['catch'](handleError(_0x26cef9,null));};exports[_0x0065('0x42')]=function(_0x5ef382,_0x339730){return db[_0x0065('0x39')][_0x0065('0x42')](_0x5ef382[_0x0065('0x43')],{})['then'](respondWithResult(_0x339730,0xc9))[_0x0065('0x3d')](handleError(_0x339730,null));};exports['update']=function(_0x86fa3d,_0x20b727){if(_0x86fa3d[_0x0065('0x43')]['id']){delete _0x86fa3d[_0x0065('0x43')]['id'];}return db[_0x0065('0x39')][_0x0065('0x41')]({'where':{'id':_0x86fa3d[_0x0065('0x3f')]['id']}})[_0x0065('0x20')](handleEntityNotFound(_0x20b727,null))[_0x0065('0x20')](saveUpdates(_0x86fa3d[_0x0065('0x43')],null))[_0x0065('0x20')](respondWithResult(_0x20b727,null))['catch'](handleError(_0x20b727,null));};exports[_0x0065('0x21')]=function(_0xcd7d13,_0x277b74){return db[_0x0065('0x39')][_0x0065('0x41')]({'where':{'id':_0xcd7d13[_0x0065('0x3f')]['id']}})[_0x0065('0x20')](handleEntityNotFound(_0x277b74,null))['then'](removeEntity(_0x277b74,null))['catch'](handleError(_0x277b74,null));};exports[_0x0065('0x44')]=function(_0x2da487,_0xf7e228){return db[_0x0065('0x39')][_0x0065('0x44')]()[_0x0065('0x20')](respondWithResult(_0xf7e228,null))[_0x0065('0x3d')](handleError(_0xf7e228,null));};
\ No newline at end of file
+var _0x04f9=['fields','length','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','keys','options','create','body','find','params','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','ChatQueueReport','rawAttributes','type','model','map','query','filters','intersection','attributes'];(function(_0x2b859e,_0x1cd34c){var _0x271035=function(_0x1cf2ee){while(--_0x1cf2ee){_0x2b859e['push'](_0x2b859e['shift']());}};_0x271035(++_0x1cd34c);}(_0x04f9,0xb3));var _0x904f=function(_0x26f341,_0x1f83a3){_0x26f341=_0x26f341-0x0;var _0xdafecf=_0x04f9[_0x26f341];return _0xdafecf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x904f('0x0'));var zipdir=require(_0x904f('0x1'));var jsonpatch=require(_0x904f('0x2'));var rp=require('request-promise');var moment=require(_0x904f('0x3'));var BPromise=require(_0x904f('0x4'));var Mustache=require(_0x904f('0x5'));var util=require(_0x904f('0x6'));var path=require(_0x904f('0x7'));var sox=require(_0x904f('0x8'));var csv=require('to-csv');var ejs=require(_0x904f('0x9'));var fs=require('fs');var fs_extra=require(_0x904f('0xa'));var _=require(_0x904f('0xb'));var squel=require(_0x904f('0xc'));var crypto=require(_0x904f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x904f('0xe'));var toCsv=require(_0x904f('0xf'));var querystring=require(_0x904f('0x10'));var Papa=require('papaparse');var Redis=require(_0x904f('0x11'));var authService=require(_0x904f('0x12'));var qs=require(_0x904f('0x13'));var as=require(_0x904f('0x14'));var hardwareService=require(_0x904f('0x15'));var logger=require(_0x904f('0x16'))(_0x904f('0x17'));var utils=require(_0x904f('0x18'));var config=require(_0x904f('0x19'));var licenseUtil=require(_0x904f('0x1a'));var db=require(_0x904f('0x1b'))['db'];function respondWithStatusCode(_0x2ba370,_0x46640a){_0x46640a=_0x46640a||0xcc;return function(_0x26cfc9){if(_0x26cfc9){return _0x2ba370[_0x904f('0x1c')](_0x46640a);}return _0x2ba370[_0x904f('0x1d')](_0x46640a)[_0x904f('0x1e')]();};}function respondWithResult(_0x1d0b9d,_0x243abe){_0x243abe=_0x243abe||0xc8;return function(_0x37c745){if(_0x37c745){return _0x1d0b9d[_0x904f('0x1d')](_0x243abe)[_0x904f('0x1f')](_0x37c745);}};}function respondWithFilteredResult(_0x9b693c,_0x567fe0){return function(_0x4e13bc){if(_0x4e13bc){var _0xf5268d=typeof _0x567fe0[_0x904f('0x20')]==='undefined'&&typeof _0x567fe0['limit']==='undefined';var _0x3f5312=_0x4e13bc[_0x904f('0x21')];var _0x4eb784=_0xf5268d?0x0:_0x567fe0[_0x904f('0x20')];var _0x502f80=_0xf5268d?_0x4e13bc['count']:_0x567fe0['offset']+_0x567fe0['limit'];var _0x50457c;if(_0x502f80>=_0x3f5312){_0x502f80=_0x3f5312;_0x50457c=0xc8;}else{_0x50457c=0xce;}_0x9b693c['status'](_0x50457c);return _0x9b693c[_0x904f('0x22')](_0x904f('0x23'),_0x4eb784+'-'+_0x502f80+'/'+_0x3f5312)['json'](_0x4e13bc);}return null;};}function patchUpdates(_0x22b1ba){return function(_0x8d3fce){try{jsonpatch[_0x904f('0x24')](_0x8d3fce,_0x22b1ba,!![]);}catch(_0x551093){return BPromise[_0x904f('0x25')](_0x551093);}return _0x8d3fce[_0x904f('0x26')]();};}function saveUpdates(_0x144a34,_0x247536){return function(_0x1f394d){if(_0x1f394d){return _0x1f394d[_0x904f('0x27')](_0x144a34)[_0x904f('0x28')](function(_0x1b0937){return _0x1b0937;});}return null;};}function removeEntity(_0x197b3,_0x1f3c74){return function(_0x5826dd){if(_0x5826dd){return _0x5826dd[_0x904f('0x29')]()[_0x904f('0x28')](function(){_0x197b3[_0x904f('0x1d')](0xcc)[_0x904f('0x1e')]();});}};}function handleEntityNotFound(_0x57dbcc,_0x5930df){return function(_0x1512b5){if(!_0x1512b5){_0x57dbcc[_0x904f('0x1c')](0x194);}return _0x1512b5;};}function handleError(_0x515410,_0x3cf16c){_0x3cf16c=_0x3cf16c||0x1f4;return function(_0x1b8f20){logger['error'](_0x1b8f20[_0x904f('0x2a')]);if(_0x1b8f20[_0x904f('0x2b')]){delete _0x1b8f20[_0x904f('0x2b')];}_0x515410[_0x904f('0x1d')](_0x3cf16c)[_0x904f('0x2c')](_0x1b8f20);};}exports[_0x904f('0x2d')]=function(_0x2bc4f9,_0x20d005){var _0x218783={},_0x3aa868={},_0x4d0061={'count':0x0,'rows':[]};var _0x374f05=_['map'](db[_0x904f('0x2e')][_0x904f('0x2f')],function(_0x5a9eb0){return{'name':_0x5a9eb0['fieldName'],'type':_0x5a9eb0[_0x904f('0x30')]['key']};});_0x3aa868[_0x904f('0x31')]=_[_0x904f('0x32')](_0x374f05,'name');_0x3aa868[_0x904f('0x33')]=_['keys'](_0x2bc4f9[_0x904f('0x33')]);_0x3aa868[_0x904f('0x34')]=_[_0x904f('0x35')](_0x3aa868[_0x904f('0x31')],_0x3aa868[_0x904f('0x33')]);_0x218783[_0x904f('0x36')]=_['intersection'](_0x3aa868['model'],qs[_0x904f('0x37')](_0x2bc4f9[_0x904f('0x33')]['fields']));_0x218783[_0x904f('0x36')]=_0x218783[_0x904f('0x36')][_0x904f('0x38')]?_0x218783[_0x904f('0x36')]:_0x3aa868[_0x904f('0x31')];if(!_0x2bc4f9[_0x904f('0x33')]['hasOwnProperty'](_0x904f('0x39'))){_0x218783[_0x904f('0x3a')]=qs[_0x904f('0x3a')](_0x2bc4f9[_0x904f('0x33')]['limit']);_0x218783[_0x904f('0x20')]=qs[_0x904f('0x20')](_0x2bc4f9[_0x904f('0x33')]['offset']);}_0x218783[_0x904f('0x3b')]=qs[_0x904f('0x3c')](_0x2bc4f9[_0x904f('0x33')][_0x904f('0x3c')]);_0x218783[_0x904f('0x3d')]=qs[_0x904f('0x34')](_[_0x904f('0x3e')](_0x2bc4f9[_0x904f('0x33')],_0x3aa868[_0x904f('0x34')]),_0x374f05);if(_0x2bc4f9['query'][_0x904f('0x3f')]){_0x218783[_0x904f('0x3d')]=_[_0x904f('0x40')](_0x218783[_0x904f('0x3d')],{'$or':_['map'](_0x374f05,function(_0x4ca56c){if(_0x4ca56c['type']!==_0x904f('0x41')){var _0x3264d3={};_0x3264d3[_0x4ca56c[_0x904f('0x2b')]]={'$like':'%'+_0x2bc4f9[_0x904f('0x33')][_0x904f('0x3f')]+'%'};return _0x3264d3;}})});}_0x218783=_[_0x904f('0x40')]({},_0x218783,_0x2bc4f9['options']);var _0x1e2523={'where':_0x218783[_0x904f('0x3d')]};return db[_0x904f('0x2e')][_0x904f('0x21')](_0x1e2523)[_0x904f('0x28')](function(_0x4f2ee3){_0x4d0061['count']=_0x4f2ee3;if(_0x2bc4f9[_0x904f('0x33')]['includeAll']){_0x218783[_0x904f('0x42')]=[{'all':!![]}];}return db[_0x904f('0x2e')][_0x904f('0x43')](_0x218783);})[_0x904f('0x28')](function(_0x4445be){_0x4d0061[_0x904f('0x44')]=_0x4445be;return _0x4d0061;})[_0x904f('0x28')](respondWithFilteredResult(_0x20d005,_0x218783))[_0x904f('0x45')](handleError(_0x20d005,null));};exports[_0x904f('0x46')]=function(_0x416a10,_0x11958e){var _0x1d9f2d={'raw':!![],'where':{'id':_0x416a10['params']['id']}},_0x3c3bf1={};_0x3c3bf1[_0x904f('0x31')]=_[_0x904f('0x47')](db[_0x904f('0x2e')]['rawAttributes']);_0x3c3bf1[_0x904f('0x33')]=_[_0x904f('0x47')](_0x416a10[_0x904f('0x33')]);_0x3c3bf1[_0x904f('0x34')]=_['intersection'](_0x3c3bf1[_0x904f('0x31')],_0x3c3bf1[_0x904f('0x33')]);_0x1d9f2d['attributes']=_[_0x904f('0x35')](_0x3c3bf1[_0x904f('0x31')],qs['fields'](_0x416a10[_0x904f('0x33')][_0x904f('0x37')]));_0x1d9f2d[_0x904f('0x36')]=_0x1d9f2d[_0x904f('0x36')][_0x904f('0x38')]?_0x1d9f2d['attributes']:_0x3c3bf1['model'];if(_0x416a10[_0x904f('0x33')]['includeAll']){_0x1d9f2d[_0x904f('0x42')]=[{'all':!![]}];}_0x1d9f2d=_[_0x904f('0x40')]({},_0x1d9f2d,_0x416a10[_0x904f('0x48')]);return db[_0x904f('0x2e')]['find'](_0x1d9f2d)['then'](handleEntityNotFound(_0x11958e,null))[_0x904f('0x28')](respondWithResult(_0x11958e,null))[_0x904f('0x45')](handleError(_0x11958e,null));};exports[_0x904f('0x49')]=function(_0x2b9d29,_0x44d401){return db[_0x904f('0x2e')]['create'](_0x2b9d29[_0x904f('0x4a')],{})['then'](respondWithResult(_0x44d401,0xc9))[_0x904f('0x45')](handleError(_0x44d401,null));};exports[_0x904f('0x27')]=function(_0x39b46,_0x1ec277){if(_0x39b46[_0x904f('0x4a')]['id']){delete _0x39b46[_0x904f('0x4a')]['id'];}return db[_0x904f('0x2e')][_0x904f('0x4b')]({'where':{'id':_0x39b46[_0x904f('0x4c')]['id']}})[_0x904f('0x28')](handleEntityNotFound(_0x1ec277,null))[_0x904f('0x28')](saveUpdates(_0x39b46['body'],null))['then'](respondWithResult(_0x1ec277,null))[_0x904f('0x45')](handleError(_0x1ec277,null));};exports[_0x904f('0x29')]=function(_0x455204,_0x3e5245){return db['ChatQueueReport'][_0x904f('0x4b')]({'where':{'id':_0x455204[_0x904f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3e5245,null))[_0x904f('0x28')](removeEntity(_0x3e5245,null))[_0x904f('0x45')](handleError(_0x3e5245,null));};exports[_0x904f('0x4d')]=function(_0x32eaea,_0x2638ae){return db[_0x904f('0x2e')][_0x904f('0x4d')]()[_0x904f('0x28')](respondWithResult(_0x2638ae,null))[_0x904f('0x45')](handleError(_0x2638ae,null));};
\ No newline at end of file
index 918653a..64c4762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x295188,_0x55713e){var _0x534d04=function(_0x9d3a49){while(--_0x9d3a49){_0x295188['push'](_0x295188['shift']());}};_0x534d04(++_0x55713e);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbaf0[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','define','ChatQueueReport','uniqueid','lodash'];(function(_0x290cb0,_0x53e201){var _0x2f7ce1=function(_0x4e02b5){while(--_0x4e02b5){_0x290cb0['push'](_0x290cb0['shift']());}};_0x2f7ce1(++_0x53e201);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0xb7e7[_0x2faddb];return _0x273c05;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_chat_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 6ddcee4..293d55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff7=['UpdateChatQueueReport','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','then'];(function(_0x4c7145,_0x2df4f8){var _0x13fe00=function(_0x2a5111){while(--_0x2a5111){_0x4c7145['push'](_0x4c7145['shift']());}};_0x13fe00(++_0x2df4f8);}(_0x7ff7,0xc2));var _0x77ff=function(_0x2630c9,_0x26bbbd){_0x2630c9=_0x2630c9-0x0;var _0x6f084c=_0x7ff7[_0x2630c9];return _0x6f084c;};'use strict';var _=require(_0x77ff('0x0'));var util=require(_0x77ff('0x1'));var moment=require(_0x77ff('0x2'));var BPromise=require(_0x77ff('0x3'));var rs=require(_0x77ff('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77ff('0x5'))['db'];var utils=require(_0x77ff('0x6'));var logger=require(_0x77ff('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x77ff('0x8'));var client=jayson[_0x77ff('0x9')][_0x77ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x66c22e,_0xa33575,_0x3fbf4b){return new BPromise(function(_0x4a07ea,_0x1a7df4){return client[_0x77ff('0xb')](_0x66c22e,_0x3fbf4b)['then'](function(_0x13940f){logger[_0x77ff('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0xa33575,_0x77ff('0xd'));logger[_0x77ff('0xe')](_0x77ff('0xf'),_0xa33575,_0x77ff('0xd'),JSON[_0x77ff('0x10')](_0x13940f));if(_0x13940f[_0x77ff('0x11')]){if(_0x13940f[_0x77ff('0x11')][_0x77ff('0x12')]===0x1f4){logger['error'](_0x77ff('0x13'),_0xa33575,_0x13940f[_0x77ff('0x11')][_0x77ff('0x14')]);return _0x1a7df4(_0x13940f[_0x77ff('0x11')][_0x77ff('0x14')]);}logger['error']('ChatQueueReport,\x20%s,\x20%s',_0xa33575,_0x13940f[_0x77ff('0x11')][_0x77ff('0x14')]);return _0x4a07ea(_0x13940f[_0x77ff('0x11')][_0x77ff('0x14')]);}else{logger[_0x77ff('0xc')](_0x77ff('0x13'),_0xa33575,'request\x20sent');_0x4a07ea(_0x13940f[_0x77ff('0x15')][_0x77ff('0x14')]);}})[_0x77ff('0x16')](function(_0x177d84){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0xa33575,_0x177d84);_0x1a7df4(_0x177d84);});});}exports[_0x77ff('0x17')]=function(_0x135d0b){var _0x1d0ee6=this;return new Promise(function(_0x5d20ec,_0x5e42f3){return db[_0x77ff('0x18')][_0x77ff('0x19')](_0x135d0b[_0x77ff('0x1a')],{'raw':_0x135d0b[_0x77ff('0x1b')]?_0x135d0b['options'][_0x77ff('0x1c')]===undefined?!![]:![]:!![]})[_0x77ff('0x1d')](function(_0x37dbc2){logger[_0x77ff('0xc')]('CreateChatQueueReport',_0x135d0b);logger[_0x77ff('0xe')](_0x77ff('0x17'),_0x135d0b,JSON[_0x77ff('0x10')](_0x37dbc2));_0x5d20ec(_0x37dbc2);})[_0x77ff('0x16')](function(_0xd5a5ef){logger['error'](_0x77ff('0x17'),_0xd5a5ef[_0x77ff('0x14')],_0x135d0b);_0x5e42f3(_0x1d0ee6[_0x77ff('0x11')](0x1f4,_0xd5a5ef[_0x77ff('0x14')]));});});};exports[_0x77ff('0x1e')]=function(_0x343892){var _0x1bd962=this;return new Promise(function(_0x5a4e57,_0x557afb){return db[_0x77ff('0x18')]['update'](_0x343892['body'],{'raw':_0x343892[_0x77ff('0x1b')]?_0x343892[_0x77ff('0x1b')][_0x77ff('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x343892['options']?_0x343892[_0x77ff('0x1b')]['where']||null:null,'attributes':_0x343892[_0x77ff('0x1b')]?_0x343892[_0x77ff('0x1b')]['attributes']||null:null,'limit':_0x343892['options']?_0x343892['options'][_0x77ff('0x1f')]||null:null})[_0x77ff('0x1d')](function(_0x35b957){logger[_0x77ff('0xc')]('UpdateChatQueueReport',_0x343892);logger[_0x77ff('0xe')](_0x77ff('0x1e'),_0x343892,JSON[_0x77ff('0x10')](_0x35b957));_0x5a4e57(_0x35b957);})[_0x77ff('0x16')](function(_0x568fef){logger[_0x77ff('0x11')](_0x77ff('0x1e'),_0x568fef[_0x77ff('0x14')],_0x343892);_0x557afb(_0x1bd962[_0x77ff('0x11')](0x1f4,_0x568fef['message']));});});};
\ No newline at end of file
+var _0xb2b6=['update','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','stringify','UpdateChatQueueReport'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xb2b6,0x1bc));var _0x6b2b=function(_0x73844a,_0x546c87){_0x73844a=_0x73844a-0x0;var _0x2c9370=_0xb2b6[_0x73844a];return _0x2c9370;};'use strict';var _=require(_0x6b2b('0x0'));var util=require(_0x6b2b('0x1'));var moment=require(_0x6b2b('0x2'));var BPromise=require(_0x6b2b('0x3'));var rs=require(_0x6b2b('0x4'));var fs=require('fs');var Redis=require(_0x6b2b('0x5'));var db=require(_0x6b2b('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6b2b('0x7'));var config=require(_0x6b2b('0x8'));var jayson=require(_0x6b2b('0x9'));var client=jayson[_0x6b2b('0xa')][_0x6b2b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xaa79a5,_0x35e4bd,_0x73fd9b){return new BPromise(function(_0x447cdf,_0x5e3f53){return client[_0x6b2b('0xc')](_0xaa79a5,_0x73fd9b)[_0x6b2b('0xd')](function(_0x1325a9){logger[_0x6b2b('0xe')](_0x6b2b('0xf'),_0x35e4bd,_0x6b2b('0x10'));logger[_0x6b2b('0x11')](_0x6b2b('0x12'),_0x35e4bd,_0x6b2b('0x10'),JSON['stringify'](_0x1325a9));if(_0x1325a9[_0x6b2b('0x13')]){if(_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x14')]===0x1f4){logger[_0x6b2b('0x13')](_0x6b2b('0xf'),_0x35e4bd,_0x1325a9['error']['message']);return _0x5e3f53(_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x15')]);}logger[_0x6b2b('0x13')](_0x6b2b('0xf'),_0x35e4bd,_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x15')]);return _0x447cdf(_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x15')]);}else{logger['info'](_0x6b2b('0xf'),_0x35e4bd,_0x6b2b('0x10'));_0x447cdf(_0x1325a9[_0x6b2b('0x16')][_0x6b2b('0x15')]);}})[_0x6b2b('0x17')](function(_0xc2cc4c){logger[_0x6b2b('0x13')](_0x6b2b('0xf'),_0x35e4bd,_0xc2cc4c);_0x5e3f53(_0xc2cc4c);});});}exports[_0x6b2b('0x18')]=function(_0x36d29c){var _0x269f7f=this;return new Promise(function(_0x4c0d71,_0x31721a){return db[_0x6b2b('0x19')][_0x6b2b('0x1a')](_0x36d29c[_0x6b2b('0x1b')],{'raw':_0x36d29c['options']?_0x36d29c[_0x6b2b('0x1c')][_0x6b2b('0x1d')]===undefined?!![]:![]:!![]})[_0x6b2b('0xd')](function(_0x52ed9a){logger['info']('CreateChatQueueReport',_0x36d29c);logger[_0x6b2b('0x11')]('CreateChatQueueReport',_0x36d29c,JSON[_0x6b2b('0x1e')](_0x52ed9a));_0x4c0d71(_0x52ed9a);})[_0x6b2b('0x17')](function(_0x52da09){logger['error'](_0x6b2b('0x18'),_0x52da09['message'],_0x36d29c);_0x31721a(_0x269f7f['error'](0x1f4,_0x52da09[_0x6b2b('0x15')]));});});};exports[_0x6b2b('0x1f')]=function(_0x1c5304){var _0x21bf44=this;return new Promise(function(_0x5e44ef,_0x3451f4){return db[_0x6b2b('0x19')][_0x6b2b('0x20')](_0x1c5304['body'],{'raw':_0x1c5304['options']?_0x1c5304[_0x6b2b('0x1c')][_0x6b2b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c5304[_0x6b2b('0x1c')]?_0x1c5304['options']['where']||null:null,'attributes':_0x1c5304[_0x6b2b('0x1c')]?_0x1c5304[_0x6b2b('0x1c')][_0x6b2b('0x21')]||null:null,'limit':_0x1c5304[_0x6b2b('0x1c')]?_0x1c5304[_0x6b2b('0x1c')]['limit']||null:null})['then'](function(_0x236e00){logger[_0x6b2b('0xe')](_0x6b2b('0x1f'),_0x1c5304);logger['debug'](_0x6b2b('0x1f'),_0x1c5304,JSON[_0x6b2b('0x1e')](_0x236e00));_0x5e44ef(_0x236e00);})[_0x6b2b('0x17')](function(_0xe3bb34){logger[_0x6b2b('0x13')](_0x6b2b('0x1f'),_0xe3bb34[_0x6b2b('0x15')],_0x1c5304);_0x3451f4(_0x21bf44[_0x6b2b('0x13')](0x1f4,_0xe3bb34[_0x6b2b('0x15')]));});});};
\ No newline at end of file
index fb15c87..f9e4829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdae3=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','show','post','create','put','/:id','delete','destroy','multer','util','path','connect-timeout'];(function(_0x14e3db,_0x592f7c){var _0x28210f=function(_0x5d8951){while(--_0x5d8951){_0x14e3db['push'](_0x14e3db['shift']());}};_0x28210f(++_0x592f7c);}(_0xdae3,0x1dc));var _0x3dae=function(_0x7191bb,_0x4e6b7a){_0x7191bb=_0x7191bb-0x0;var _0x16e906=_0xdae3[_0x7191bb];return _0x16e906;};'use strict';var multer=require(_0x3dae('0x0'));var util=require(_0x3dae('0x1'));var path=require(_0x3dae('0x2'));var timeout=require(_0x3dae('0x3'));var express=require(_0x3dae('0x4'));var router=express['Router']();var fs_extra=require(_0x3dae('0x5'));var auth=require(_0x3dae('0x6'));var interaction=require(_0x3dae('0x7'));var config=require(_0x3dae('0x8'));var controller=require('./chatQueueReport.controller');router[_0x3dae('0x9')]('/',auth[_0x3dae('0xa')](),controller['index']);router[_0x3dae('0x9')](_0x3dae('0xb'),auth[_0x3dae('0xa')](),controller[_0x3dae('0xc')]);router[_0x3dae('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x3dae('0xd')]);router[_0x3dae('0xe')]('/',auth[_0x3dae('0xa')](),controller[_0x3dae('0xf')]);router[_0x3dae('0x10')](_0x3dae('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x3dae('0x12')](_0x3dae('0x11'),auth[_0x3dae('0xa')](),controller[_0x3dae('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x4d9d=['get','show','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','index','/describe','isAuthenticated','describe'];(function(_0xb6c185,_0x1fba89){var _0x18717b=function(_0x1ac33d){while(--_0x1ac33d){_0xb6c185['push'](_0xb6c185['shift']());}};_0x18717b(++_0x1fba89);}(_0x4d9d,0x14a));var _0xd4d9=function(_0x275621,_0x524302){_0x275621=_0x275621-0x0;var _0x2ad056=_0x4d9d[_0x275621];return _0x2ad056;};'use strict';var multer=require(_0xd4d9('0x0'));var util=require(_0xd4d9('0x1'));var path=require(_0xd4d9('0x2'));var timeout=require(_0xd4d9('0x3'));var express=require(_0xd4d9('0x4'));var router=express[_0xd4d9('0x5')]();var fs_extra=require(_0xd4d9('0x6'));var auth=require(_0xd4d9('0x7'));var interaction=require(_0xd4d9('0x8'));var config=require(_0xd4d9('0x9'));var controller=require(_0xd4d9('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0xd4d9('0xb')]);router['get'](_0xd4d9('0xc'),auth[_0xd4d9('0xd')](),controller[_0xd4d9('0xe')]);router[_0xd4d9('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xd4d9('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd4d9('0x11')]);router[_0xd4d9('0x12')](_0xd4d9('0x13'),auth[_0xd4d9('0xd')](),controller[_0xd4d9('0x14')]);router['delete'](_0xd4d9('0x13'),auth[_0xd4d9('0xd')](),controller[_0xd4d9('0x15')]);module[_0xd4d9('0x16')]=router;
\ No newline at end of file
index e873fc3..c284089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x1cf8f3,_0x181a56){var _0x509cdf=function(_0x3a348d){while(--_0x3a348d){_0x1cf8f3['push'](_0x1cf8f3['shift']());}};_0x509cdf(++_0x181a56);}(_0xaa88,0x137));var _0x8aa8=function(_0x485201,_0x3c533a){_0x485201=_0x485201-0x0;var _0x9ca98a=_0xaa88[_0x485201];return _0x9ca98a;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x5cf60a,_0x550828){var _0xdba1ee=function(_0x35c8ca){while(--_0x35c8ca){_0x5cf60a['push'](_0x5cf60a['shift']());}};_0xdba1ee(++_0x550828);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xcb91[_0x42cae2];return _0x5f256f;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 279e8a8..89988c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ee3=['order','sort','pick','filter','where','rows','show','params','fields','includeAll','include','merge','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','count','offset','limit','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3ee3,0xa4));var _0x33ee=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x3ee3[_0x484e36];return _0xafc85d;};'use strict';var emlformat=require(_0x33ee('0x0'));var rimraf=require(_0x33ee('0x1'));var zipdir=require(_0x33ee('0x2'));var jsonpatch=require(_0x33ee('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x33ee('0x4'));var util=require(_0x33ee('0x5'));var path=require(_0x33ee('0x6'));var sox=require(_0x33ee('0x7'));var csv=require(_0x33ee('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x33ee('0x9'));var squel=require(_0x33ee('0xa'));var crypto=require(_0x33ee('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x33ee('0x8'));var querystring=require('querystring');var Papa=require(_0x33ee('0xc'));var Redis=require(_0x33ee('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x33ee('0xe'));var as=require(_0x33ee('0xf'));var hardwareService=require(_0x33ee('0x10'));var logger=require(_0x33ee('0x11'))('api');var utils=require(_0x33ee('0x12'));var config=require(_0x33ee('0x13'));var licenseUtil=require(_0x33ee('0x14'));var db=require(_0x33ee('0x15'))['db'];function respondWithStatusCode(_0x3ca0b7,_0x889756){_0x889756=_0x889756||0xcc;return function(_0x41efc7){if(_0x41efc7){return _0x3ca0b7['sendStatus'](_0x889756);}return _0x3ca0b7[_0x33ee('0x16')](_0x889756)[_0x33ee('0x17')]();};}function respondWithResult(_0x259c66,_0x4f9821){_0x4f9821=_0x4f9821||0xc8;return function(_0x16917b){if(_0x16917b){return _0x259c66[_0x33ee('0x16')](_0x4f9821)[_0x33ee('0x18')](_0x16917b);}};}function respondWithFilteredResult(_0x1b0055,_0x210fcf){return function(_0x57e198){if(_0x57e198){var _0x10ef89=typeof _0x210fcf['offset']==='undefined'&&typeof _0x210fcf['limit']==='undefined';var _0x3d5a84=_0x57e198[_0x33ee('0x19')];var _0x335aea=_0x10ef89?0x0:_0x210fcf[_0x33ee('0x1a')];var _0x574077=_0x10ef89?_0x57e198[_0x33ee('0x19')]:_0x210fcf['offset']+_0x210fcf[_0x33ee('0x1b')];var _0x1d7df5;if(_0x574077>=_0x3d5a84){_0x574077=_0x3d5a84;_0x1d7df5=0xc8;}else{_0x1d7df5=0xce;}_0x1b0055[_0x33ee('0x16')](_0x1d7df5);return _0x1b0055[_0x33ee('0x1c')](_0x33ee('0x1d'),_0x335aea+'-'+_0x574077+'/'+_0x3d5a84)[_0x33ee('0x18')](_0x57e198);}return null;};}function patchUpdates(_0x24f3ad){return function(_0x155d89){try{jsonpatch['apply'](_0x155d89,_0x24f3ad,!![]);}catch(_0x446728){return BPromise[_0x33ee('0x1e')](_0x446728);}return _0x155d89[_0x33ee('0x1f')]();};}function saveUpdates(_0x263f77,_0x26dd83){return function(_0x3acdab){if(_0x3acdab){return _0x3acdab[_0x33ee('0x20')](_0x263f77)[_0x33ee('0x21')](function(_0x21f0c0){return _0x21f0c0;});}return null;};}function removeEntity(_0x3bdbc0,_0x559b31){return function(_0x3a1dce){if(_0x3a1dce){return _0x3a1dce[_0x33ee('0x22')]()[_0x33ee('0x21')](function(){_0x3bdbc0[_0x33ee('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x266f87,_0x52e938){return function(_0x5df709){if(!_0x5df709){_0x266f87[_0x33ee('0x23')](0x194);}return _0x5df709;};}function handleError(_0x462241,_0x9cf12e){_0x9cf12e=_0x9cf12e||0x1f4;return function(_0x4fffbe){logger[_0x33ee('0x24')](_0x4fffbe[_0x33ee('0x25')]);if(_0x4fffbe[_0x33ee('0x26')]){delete _0x4fffbe[_0x33ee('0x26')];}_0x462241['status'](_0x9cf12e)[_0x33ee('0x27')](_0x4fffbe);};}exports[_0x33ee('0x28')]=function(_0x3768b3,_0x343c74){var _0x5c48af={},_0x49f117={},_0x32349e={'count':0x0,'rows':[]};var _0x1c6ad9=_[_0x33ee('0x29')](db[_0x33ee('0x2a')][_0x33ee('0x2b')],function(_0x4c2243){return{'name':_0x4c2243[_0x33ee('0x2c')],'type':_0x4c2243[_0x33ee('0x2d')][_0x33ee('0x2e')]};});_0x49f117[_0x33ee('0x2f')]=_['map'](_0x1c6ad9,_0x33ee('0x26'));_0x49f117[_0x33ee('0x30')]=_[_0x33ee('0x31')](_0x3768b3[_0x33ee('0x30')]);_0x49f117[_0x33ee('0x32')]=_['intersection'](_0x49f117[_0x33ee('0x2f')],_0x49f117[_0x33ee('0x30')]);_0x5c48af['attributes']=_[_0x33ee('0x33')](_0x49f117[_0x33ee('0x2f')],qs['fields'](_0x3768b3[_0x33ee('0x30')]['fields']));_0x5c48af[_0x33ee('0x34')]=_0x5c48af[_0x33ee('0x34')][_0x33ee('0x35')]?_0x5c48af[_0x33ee('0x34')]:_0x49f117[_0x33ee('0x2f')];if(!_0x3768b3[_0x33ee('0x30')]['hasOwnProperty'](_0x33ee('0x36'))){_0x5c48af[_0x33ee('0x1b')]=qs['limit'](_0x3768b3[_0x33ee('0x30')][_0x33ee('0x1b')]);_0x5c48af[_0x33ee('0x1a')]=qs['offset'](_0x3768b3[_0x33ee('0x30')][_0x33ee('0x1a')]);}_0x5c48af[_0x33ee('0x37')]=qs[_0x33ee('0x38')](_0x3768b3[_0x33ee('0x30')][_0x33ee('0x38')]);_0x5c48af['where']=qs[_0x33ee('0x32')](_[_0x33ee('0x39')](_0x3768b3[_0x33ee('0x30')],_0x49f117[_0x33ee('0x32')]),_0x1c6ad9);if(_0x3768b3[_0x33ee('0x30')][_0x33ee('0x3a')]){_0x5c48af[_0x33ee('0x3b')]=_['merge'](_0x5c48af['where'],{'$or':_['map'](_0x1c6ad9,function(_0x3b7d48){if(_0x3b7d48[_0x33ee('0x2d')]!=='VIRTUAL'){var _0x38c13e={};_0x38c13e[_0x3b7d48[_0x33ee('0x26')]]={'$like':'%'+_0x3768b3[_0x33ee('0x30')]['filter']+'%'};return _0x38c13e;}})});}_0x5c48af=_['merge']({},_0x5c48af,_0x3768b3['options']);var _0x59e462={'where':_0x5c48af['where']};return db['ChatTransferReport'][_0x33ee('0x19')](_0x59e462)[_0x33ee('0x21')](function(_0x5ed86f){_0x32349e[_0x33ee('0x19')]=_0x5ed86f;if(_0x3768b3['query']['includeAll']){_0x5c48af['include']=[{'all':!![]}];}return db['ChatTransferReport']['findAll'](_0x5c48af);})['then'](function(_0x57236a){_0x32349e[_0x33ee('0x3c')]=_0x57236a;return _0x32349e;})[_0x33ee('0x21')](respondWithFilteredResult(_0x343c74,_0x5c48af))['catch'](handleError(_0x343c74,null));};exports[_0x33ee('0x3d')]=function(_0x4b0f61,_0x1cbcaa){var _0xd94375={'raw':!![],'where':{'id':_0x4b0f61[_0x33ee('0x3e')]['id']}},_0x332046={};_0x332046[_0x33ee('0x2f')]=_['keys'](db[_0x33ee('0x2a')][_0x33ee('0x2b')]);_0x332046[_0x33ee('0x30')]=_[_0x33ee('0x31')](_0x4b0f61[_0x33ee('0x30')]);_0x332046[_0x33ee('0x32')]=_[_0x33ee('0x33')](_0x332046[_0x33ee('0x2f')],_0x332046[_0x33ee('0x30')]);_0xd94375[_0x33ee('0x34')]=_[_0x33ee('0x33')](_0x332046['model'],qs[_0x33ee('0x3f')](_0x4b0f61[_0x33ee('0x30')][_0x33ee('0x3f')]));_0xd94375['attributes']=_0xd94375[_0x33ee('0x34')][_0x33ee('0x35')]?_0xd94375[_0x33ee('0x34')]:_0x332046[_0x33ee('0x2f')];if(_0x4b0f61[_0x33ee('0x30')][_0x33ee('0x40')]){_0xd94375[_0x33ee('0x41')]=[{'all':!![]}];}_0xd94375=_[_0x33ee('0x42')]({},_0xd94375,_0x4b0f61[_0x33ee('0x43')]);return db[_0x33ee('0x2a')][_0x33ee('0x44')](_0xd94375)['then'](handleEntityNotFound(_0x1cbcaa,null))[_0x33ee('0x21')](respondWithResult(_0x1cbcaa,null))[_0x33ee('0x45')](handleError(_0x1cbcaa,null));};exports[_0x33ee('0x46')]=function(_0x2a9dd2,_0xc35b7d){return db[_0x33ee('0x2a')]['create'](_0x2a9dd2[_0x33ee('0x47')],{})[_0x33ee('0x21')](respondWithResult(_0xc35b7d,0xc9))['catch'](handleError(_0xc35b7d,null));};exports[_0x33ee('0x20')]=function(_0x3798b8,_0x2cf061){if(_0x3798b8[_0x33ee('0x47')]['id']){delete _0x3798b8[_0x33ee('0x47')]['id'];}return db[_0x33ee('0x2a')][_0x33ee('0x44')]({'where':{'id':_0x3798b8[_0x33ee('0x3e')]['id']}})['then'](handleEntityNotFound(_0x2cf061,null))['then'](saveUpdates(_0x3798b8[_0x33ee('0x47')],null))[_0x33ee('0x21')](respondWithResult(_0x2cf061,null))[_0x33ee('0x45')](handleError(_0x2cf061,null));};exports['destroy']=function(_0x359e55,_0x515889){return db['ChatTransferReport']['find']({'where':{'id':_0x359e55[_0x33ee('0x3e')]['id']}})[_0x33ee('0x21')](handleEntityNotFound(_0x515889,null))[_0x33ee('0x21')](removeEntity(_0x515889,null))['catch'](handleError(_0x515889,null));};exports[_0x33ee('0x48')]=function(_0x5a847f,_0x386969){return db[_0x33ee('0x2a')]['describe']()[_0x33ee('0x21')](respondWithResult(_0x386969,null))['catch'](handleError(_0x386969,null));};
\ No newline at end of file
+var _0xd706=['set','Content-Range','json','apply','save','update','then','destroy','error','name','send','ChatTransferReport','rawAttributes','fieldName','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset'];(function(_0x1e5137,_0x2db138){var _0x4268ff=function(_0x557b6){while(--_0x557b6){_0x1e5137['push'](_0x1e5137['shift']());}};_0x4268ff(++_0x2db138);}(_0xd706,0xc8));var _0x6d70=function(_0x34ea3c,_0x40bb85){_0x34ea3c=_0x34ea3c-0x0;var _0x20ef3f=_0xd706[_0x34ea3c];return _0x20ef3f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d70('0x0'));var zipdir=require(_0x6d70('0x1'));var jsonpatch=require(_0x6d70('0x2'));var rp=require('request-promise');var moment=require(_0x6d70('0x3'));var BPromise=require(_0x6d70('0x4'));var Mustache=require(_0x6d70('0x5'));var util=require(_0x6d70('0x6'));var path=require(_0x6d70('0x7'));var sox=require(_0x6d70('0x8'));var csv=require(_0x6d70('0x9'));var ejs=require(_0x6d70('0xa'));var fs=require('fs');var fs_extra=require(_0x6d70('0xb'));var _=require(_0x6d70('0xc'));var squel=require(_0x6d70('0xd'));var crypto=require('crypto');var jsforce=require(_0x6d70('0xe'));var deskjs=require(_0x6d70('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6d70('0x10'));var Papa=require(_0x6d70('0x11'));var Redis=require(_0x6d70('0x12'));var authService=require(_0x6d70('0x13'));var qs=require(_0x6d70('0x14'));var as=require(_0x6d70('0x15'));var hardwareService=require(_0x6d70('0x16'));var logger=require(_0x6d70('0x17'))(_0x6d70('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6d70('0x19'));var db=require(_0x6d70('0x1a'))['db'];function respondWithStatusCode(_0x18c794,_0x12b485){_0x12b485=_0x12b485||0xcc;return function(_0x1f3ba7){if(_0x1f3ba7){return _0x18c794[_0x6d70('0x1b')](_0x12b485);}return _0x18c794[_0x6d70('0x1c')](_0x12b485)[_0x6d70('0x1d')]();};}function respondWithResult(_0x5248af,_0x32a987){_0x32a987=_0x32a987||0xc8;return function(_0x294150){if(_0x294150){return _0x5248af['status'](_0x32a987)['json'](_0x294150);}};}function respondWithFilteredResult(_0x577f90,_0x593d5b){return function(_0x55a37d){if(_0x55a37d){var _0x37e28c=typeof _0x593d5b['offset']===_0x6d70('0x1e')&&typeof _0x593d5b[_0x6d70('0x1f')]==='undefined';var _0x1352bc=_0x55a37d[_0x6d70('0x20')];var _0xde8898=_0x37e28c?0x0:_0x593d5b[_0x6d70('0x21')];var _0x4becf4=_0x37e28c?_0x55a37d[_0x6d70('0x20')]:_0x593d5b[_0x6d70('0x21')]+_0x593d5b[_0x6d70('0x1f')];var _0x3746e2;if(_0x4becf4>=_0x1352bc){_0x4becf4=_0x1352bc;_0x3746e2=0xc8;}else{_0x3746e2=0xce;}_0x577f90[_0x6d70('0x1c')](_0x3746e2);return _0x577f90[_0x6d70('0x22')](_0x6d70('0x23'),_0xde8898+'-'+_0x4becf4+'/'+_0x1352bc)[_0x6d70('0x24')](_0x55a37d);}return null;};}function patchUpdates(_0x15ec04){return function(_0x26e6f7){try{jsonpatch[_0x6d70('0x25')](_0x26e6f7,_0x15ec04,!![]);}catch(_0x6c004b){return BPromise['reject'](_0x6c004b);}return _0x26e6f7[_0x6d70('0x26')]();};}function saveUpdates(_0x125dc3,_0x164e7b){return function(_0x227a1d){if(_0x227a1d){return _0x227a1d[_0x6d70('0x27')](_0x125dc3)[_0x6d70('0x28')](function(_0x1301e9){return _0x1301e9;});}return null;};}function removeEntity(_0x3ba94,_0x45ee33){return function(_0x58ed0e){if(_0x58ed0e){return _0x58ed0e[_0x6d70('0x29')]()[_0x6d70('0x28')](function(){_0x3ba94[_0x6d70('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x503d99,_0x424507){return function(_0x21f884){if(!_0x21f884){_0x503d99[_0x6d70('0x1b')](0x194);}return _0x21f884;};}function handleError(_0x2089a4,_0x1a44a5){_0x1a44a5=_0x1a44a5||0x1f4;return function(_0x481c4a){logger[_0x6d70('0x2a')](_0x481c4a['stack']);if(_0x481c4a[_0x6d70('0x2b')]){delete _0x481c4a[_0x6d70('0x2b')];}_0x2089a4['status'](_0x1a44a5)[_0x6d70('0x2c')](_0x481c4a);};}exports['index']=function(_0x5cb2ad,_0x4792b6){var _0x50af5f={},_0x5ace92={},_0x299cd3={'count':0x0,'rows':[]};var _0x5a306a=_['map'](db[_0x6d70('0x2d')][_0x6d70('0x2e')],function(_0x51a185){return{'name':_0x51a185[_0x6d70('0x2f')],'type':_0x51a185['type']['key']};});_0x5ace92[_0x6d70('0x30')]=_[_0x6d70('0x31')](_0x5a306a,'name');_0x5ace92[_0x6d70('0x32')]=_[_0x6d70('0x33')](_0x5cb2ad[_0x6d70('0x32')]);_0x5ace92[_0x6d70('0x34')]=_[_0x6d70('0x35')](_0x5ace92[_0x6d70('0x30')],_0x5ace92[_0x6d70('0x32')]);_0x50af5f['attributes']=_['intersection'](_0x5ace92[_0x6d70('0x30')],qs['fields'](_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x36')]));_0x50af5f[_0x6d70('0x37')]=_0x50af5f[_0x6d70('0x37')][_0x6d70('0x38')]?_0x50af5f[_0x6d70('0x37')]:_0x5ace92[_0x6d70('0x30')];if(!_0x5cb2ad['query'][_0x6d70('0x39')](_0x6d70('0x3a'))){_0x50af5f['limit']=qs[_0x6d70('0x1f')](_0x5cb2ad['query'][_0x6d70('0x1f')]);_0x50af5f['offset']=qs[_0x6d70('0x21')](_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x21')]);}_0x50af5f[_0x6d70('0x3b')]=qs[_0x6d70('0x3c')](_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x3c')]);_0x50af5f[_0x6d70('0x3d')]=qs['filters'](_[_0x6d70('0x3e')](_0x5cb2ad[_0x6d70('0x32')],_0x5ace92['filters']),_0x5a306a);if(_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x3f')]){_0x50af5f[_0x6d70('0x3d')]=_[_0x6d70('0x40')](_0x50af5f['where'],{'$or':_['map'](_0x5a306a,function(_0xd8727a){if(_0xd8727a[_0x6d70('0x41')]!==_0x6d70('0x42')){var _0x4c4d73={};_0x4c4d73[_0xd8727a[_0x6d70('0x2b')]]={'$like':'%'+_0x5cb2ad['query'][_0x6d70('0x3f')]+'%'};return _0x4c4d73;}})});}_0x50af5f=_[_0x6d70('0x40')]({},_0x50af5f,_0x5cb2ad[_0x6d70('0x43')]);var _0x39b12b={'where':_0x50af5f['where']};return db['ChatTransferReport'][_0x6d70('0x20')](_0x39b12b)[_0x6d70('0x28')](function(_0x247e34){_0x299cd3[_0x6d70('0x20')]=_0x247e34;if(_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x44')]){_0x50af5f[_0x6d70('0x45')]=[{'all':!![]}];}return db[_0x6d70('0x2d')][_0x6d70('0x46')](_0x50af5f);})[_0x6d70('0x28')](function(_0x334c7b){_0x299cd3[_0x6d70('0x47')]=_0x334c7b;return _0x299cd3;})['then'](respondWithFilteredResult(_0x4792b6,_0x50af5f))[_0x6d70('0x48')](handleError(_0x4792b6,null));};exports['show']=function(_0x28cf82,_0x1ee629){var _0x594b1d={'raw':!![],'where':{'id':_0x28cf82[_0x6d70('0x49')]['id']}},_0x265489={};_0x265489[_0x6d70('0x30')]=_[_0x6d70('0x33')](db[_0x6d70('0x2d')][_0x6d70('0x2e')]);_0x265489[_0x6d70('0x32')]=_[_0x6d70('0x33')](_0x28cf82[_0x6d70('0x32')]);_0x265489[_0x6d70('0x34')]=_[_0x6d70('0x35')](_0x265489[_0x6d70('0x30')],_0x265489[_0x6d70('0x32')]);_0x594b1d['attributes']=_[_0x6d70('0x35')](_0x265489['model'],qs[_0x6d70('0x36')](_0x28cf82[_0x6d70('0x32')]['fields']));_0x594b1d[_0x6d70('0x37')]=_0x594b1d['attributes']['length']?_0x594b1d[_0x6d70('0x37')]:_0x265489[_0x6d70('0x30')];if(_0x28cf82[_0x6d70('0x32')][_0x6d70('0x44')]){_0x594b1d['include']=[{'all':!![]}];}_0x594b1d=_['merge']({},_0x594b1d,_0x28cf82[_0x6d70('0x43')]);return db[_0x6d70('0x2d')][_0x6d70('0x4a')](_0x594b1d)[_0x6d70('0x28')](handleEntityNotFound(_0x1ee629,null))[_0x6d70('0x28')](respondWithResult(_0x1ee629,null))['catch'](handleError(_0x1ee629,null));};exports[_0x6d70('0x4b')]=function(_0x2300ba,_0x56fedc){return db[_0x6d70('0x2d')][_0x6d70('0x4b')](_0x2300ba[_0x6d70('0x4c')],{})['then'](respondWithResult(_0x56fedc,0xc9))[_0x6d70('0x48')](handleError(_0x56fedc,null));};exports[_0x6d70('0x27')]=function(_0x19251,_0x3d06a2){if(_0x19251[_0x6d70('0x4c')]['id']){delete _0x19251[_0x6d70('0x4c')]['id'];}return db[_0x6d70('0x2d')][_0x6d70('0x4a')]({'where':{'id':_0x19251[_0x6d70('0x49')]['id']}})[_0x6d70('0x28')](handleEntityNotFound(_0x3d06a2,null))['then'](saveUpdates(_0x19251[_0x6d70('0x4c')],null))[_0x6d70('0x28')](respondWithResult(_0x3d06a2,null))[_0x6d70('0x48')](handleError(_0x3d06a2,null));};exports['destroy']=function(_0x24aa35,_0x523d0a){return db['ChatTransferReport'][_0x6d70('0x4a')]({'where':{'id':_0x24aa35[_0x6d70('0x49')]['id']}})[_0x6d70('0x28')](handleEntityNotFound(_0x523d0a,null))['then'](removeEntity(_0x523d0a,null))[_0x6d70('0x48')](handleError(_0x523d0a,null));};exports[_0x6d70('0x4d')]=function(_0x3c3de9,_0x20ed5e){return db[_0x6d70('0x2d')]['describe']()[_0x6d70('0x28')](respondWithResult(_0x20ed5e,null))[_0x6d70('0x48')](handleError(_0x20ed5e,null));};
\ No newline at end of file
index c7f127f..0eb62e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb775=['request-promise','path','rimraf','./chatTransferReport.attributes','define','uniqueid','lodash','util','../../config/logger','api','bluebird'];(function(_0x40d60f,_0xd46fad){var _0x51afce=function(_0x2ebb78){while(--_0x2ebb78){_0x40d60f['push'](_0x40d60f['shift']());}};_0x51afce(++_0xd46fad);}(_0xb775,0x166));var _0x5b77=function(_0x4b973a,_0x472e35){_0x4b973a=_0x4b973a-0x0;var _0x4eb73d=_0xb775[_0x4b973a];return _0x4eb73d;};'use strict';var _=require(_0x5b77('0x0'));var util=require(_0x5b77('0x1'));var logger=require(_0x5b77('0x2'))(_0x5b77('0x3'));var moment=require('moment');var BPromise=require(_0x5b77('0x4'));var rp=require(_0x5b77('0x5'));var fs=require('fs');var path=require(_0x5b77('0x6'));var rimraf=require(_0x5b77('0x7'));var config=require('../../config/environment');var attributes=require(_0x5b77('0x8'));module['exports']=function(_0x5bcd96,_0x99a824){return _0x5bcd96[_0x5b77('0x9')]('ChatTransferReport',attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x5b77('0xa'),'fields':[_0x5b77('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2682=['rimraf','../../config/environment','exports','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4721cb,_0x40a186){var _0x1c0640=function(_0x5dc9a1){while(--_0x5dc9a1){_0x4721cb['push'](_0x4721cb['shift']());}};_0x1c0640(++_0x40a186);}(_0x2682,0xa9));var _0x2268=function(_0x28cd6a,_0x174f14){_0x28cd6a=_0x28cd6a-0x0;var _0x2f8f78=_0x2682[_0x28cd6a];return _0x2f8f78;};'use strict';var _=require(_0x2268('0x0'));var util=require(_0x2268('0x1'));var logger=require(_0x2268('0x2'))(_0x2268('0x3'));var moment=require(_0x2268('0x4'));var BPromise=require('bluebird');var rp=require(_0x2268('0x5'));var fs=require('fs');var path=require(_0x2268('0x6'));var rimraf=require(_0x2268('0x7'));var config=require(_0x2268('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0x2268('0x9')]=function(_0x2d8d3c,_0x4fe5e1){return _0x2d8d3c['define']('ChatTransferReport',attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x2268('0xa'),'fields':[_0x2268('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index aea8877..4b2fdbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x365f=['request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','ChatTransferReport,\x20%s,\x20%s'];(function(_0x57ec1a,_0x2b7624){var _0x2159ad=function(_0x4738b4){while(--_0x4738b4){_0x57ec1a['push'](_0x57ec1a['shift']());}};_0x2159ad(++_0x2b7624);}(_0x365f,0x11f));var _0xf365=function(_0x1aaaba,_0x23a707){_0x1aaaba=_0x1aaaba-0x0;var _0xa6d4fa=_0x365f[_0x1aaaba];return _0xa6d4fa;};'use strict';var _=require(_0xf365('0x0'));var util=require(_0xf365('0x1'));var moment=require(_0xf365('0x2'));var BPromise=require(_0xf365('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf365('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf365('0x5'));var logger=require(_0xf365('0x6'))('rpc');var config=require(_0xf365('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf365('0x8')][_0xf365('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1eec52,_0x31b674,_0x1b4008){return new BPromise(function(_0x5d8839,_0x310567){return client[_0xf365('0xa')](_0x1eec52,_0x1b4008)['then'](function(_0x25ff1c){logger[_0xf365('0xb')](_0xf365('0xc'),_0x31b674,_0xf365('0xd'));logger[_0xf365('0xe')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x31b674,_0xf365('0xd'),JSON[_0xf365('0xf')](_0x25ff1c));if(_0x25ff1c[_0xf365('0x10')]){if(_0x25ff1c[_0xf365('0x10')][_0xf365('0x11')]===0x1f4){logger[_0xf365('0x10')](_0xf365('0xc'),_0x31b674,_0x25ff1c['error'][_0xf365('0x12')]);return _0x310567(_0x25ff1c['error'][_0xf365('0x12')]);}logger[_0xf365('0x10')](_0xf365('0xc'),_0x31b674,_0x25ff1c[_0xf365('0x10')][_0xf365('0x12')]);return _0x5d8839(_0x25ff1c['error'][_0xf365('0x12')]);}else{logger[_0xf365('0xb')]('ChatTransferReport,\x20%s,\x20%s',_0x31b674,_0xf365('0xd'));_0x5d8839(_0x25ff1c[_0xf365('0x13')][_0xf365('0x12')]);}})['catch'](function(_0x9dac31){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x31b674,_0x9dac31);_0x310567(_0x9dac31);});});}
\ No newline at end of file
+var _0x7325=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatTransferReport,\x20%s,\x20%s','result','catch','lodash'];(function(_0x27d8bc,_0x19e010){var _0x4b04cb=function(_0x524568){while(--_0x524568){_0x27d8bc['push'](_0x27d8bc['shift']());}};_0x4b04cb(++_0x19e010);}(_0x7325,0xae));var _0x5732=function(_0x2c3e9f,_0x42ea29){_0x2c3e9f=_0x2c3e9f-0x0;var _0x4a0dbb=_0x7325[_0x2c3e9f];return _0x4a0dbb;};'use strict';var _=require(_0x5732('0x0'));var util=require(_0x5732('0x1'));var moment=require(_0x5732('0x2'));var BPromise=require(_0x5732('0x3'));var rs=require(_0x5732('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5732('0x5'))['db'];var utils=require(_0x5732('0x6'));var logger=require('../../config/logger')(_0x5732('0x7'));var config=require(_0x5732('0x8'));var jayson=require(_0x5732('0x9'));var client=jayson[_0x5732('0xa')][_0x5732('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51f1a7,_0xee2b00,_0x110bf5){return new BPromise(function(_0x152219,_0x4d4cbc){return client[_0x5732('0xc')](_0x51f1a7,_0x110bf5)[_0x5732('0xd')](function(_0x4160a2){logger[_0x5732('0xe')]('ChatTransferReport,\x20%s,\x20%s',_0xee2b00,_0x5732('0xf'));logger[_0x5732('0x10')](_0x5732('0x11'),_0xee2b00,_0x5732('0xf'),JSON[_0x5732('0x12')](_0x4160a2));if(_0x4160a2[_0x5732('0x13')]){if(_0x4160a2[_0x5732('0x13')][_0x5732('0x14')]===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0xee2b00,_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);return _0x4d4cbc(_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);}logger[_0x5732('0x13')](_0x5732('0x16'),_0xee2b00,_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);return _0x152219(_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);}else{logger[_0x5732('0xe')]('ChatTransferReport,\x20%s,\x20%s',_0xee2b00,_0x5732('0xf'));_0x152219(_0x4160a2[_0x5732('0x17')][_0x5732('0x15')]);}})[_0x5732('0x18')](function(_0x375dcb){logger['error'](_0x5732('0x16'),_0xee2b00,_0x375dcb);_0x4d4cbc(_0x375dcb);});});}
\ No newline at end of file
index 7e99a4c..e37f480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d9=['multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','describe','/:id','create','put','exports'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x99d9,0x121));var _0x999d=function(_0x178ced,_0x52eeef){_0x178ced=_0x178ced-0x0;var _0x473885=_0x99d9[_0x178ced];return _0x473885;};'use strict';var multer=require(_0x999d('0x0'));var util=require(_0x999d('0x1'));var path=require(_0x999d('0x2'));var timeout=require(_0x999d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x999d('0x4'));var auth=require(_0x999d('0x5'));var interaction=require(_0x999d('0x6'));var config=require(_0x999d('0x7'));var controller=require(_0x999d('0x8'));router[_0x999d('0x9')]('/',auth[_0x999d('0xa')](),controller[_0x999d('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x999d('0xc')]);router[_0x999d('0x9')](_0x999d('0xd'),auth[_0x999d('0xa')](),controller['show']);router['post']('/',auth[_0x999d('0xa')](),controller[_0x999d('0xe')]);router[_0x999d('0xf')](_0x999d('0xd'),auth[_0x999d('0xa')](),controller['update']);router['delete']('/:id',auth[_0x999d('0xa')](),controller['destroy']);module[_0x999d('0x10')]=router;
\ No newline at end of file
+var _0xd746=['describe','show','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller','get','isAuthenticated','/describe'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd746,0xc6));var _0x6d74=function(_0x2cc711,_0x300328){_0x2cc711=_0x2cc711-0x0;var _0x31a52e=_0xd746[_0x2cc711];return _0x31a52e;};'use strict';var multer=require(_0x6d74('0x0'));var util=require(_0x6d74('0x1'));var path=require('path');var timeout=require(_0x6d74('0x2'));var express=require(_0x6d74('0x3'));var router=express[_0x6d74('0x4')]();var fs_extra=require(_0x6d74('0x5'));var auth=require(_0x6d74('0x6'));var interaction=require(_0x6d74('0x7'));var config=require('../../config/environment');var controller=require(_0x6d74('0x8'));router[_0x6d74('0x9')]('/',auth[_0x6d74('0xa')](),controller['index']);router[_0x6d74('0x9')](_0x6d74('0xb'),auth['isAuthenticated'](),controller[_0x6d74('0xc')]);router[_0x6d74('0x9')]('/:id',auth[_0x6d74('0xa')](),controller[_0x6d74('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6d74('0xe')]);router[_0x6d74('0xf')](_0x6d74('0x10'),auth[_0x6d74('0xa')](),controller[_0x6d74('0x11')]);router[_0x6d74('0x12')]('/:id',auth[_0x6d74('0xa')](),controller[_0x6d74('0x13')]);module[_0x6d74('0x14')]=router;
\ No newline at end of file
index 50ccb78..37b3554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd40b=['Comments','Leave\x20your\x20comments','offlineForm','getDataValue','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','address','email','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','squared','Chat','Powered\x20by\x20xCALLY','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','Skip','Feedback','star','thumb','stringify','input','text','onlineForm','setDataValue','textarea'];(function(_0x547bed,_0x2a47a8){var _0x1945e5=function(_0x249f7b){while(--_0x249f7b){_0x547bed['push'](_0x547bed['shift']());}};_0x1945e5(++_0x2a47a8);}(_0xd40b,0xb1));var _0xbd40=function(_0x1a7206,_0x160df3){_0x1a7206=_0x1a7206-0x0;var _0x2d34fc=_0xd40b[_0x1a7206];return _0x2d34fc;};'use strict';var Sequelize=require(_0xbd40('0x0'));var rs=require(_0xbd40('0x1'));module[_0xbd40('0x2')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0xbd40('0x3')],'allowNull':![],'unique':_0xbd40('0x4')},'description':{'type':Sequelize[_0xbd40('0x3')]},'mapKey':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x5')},'mapKeyOffline':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x5')},'key':{'type':Sequelize[_0xbd40('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xbd40('0x3')],'allowNull':![],'defaultValue':_0xbd40('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xbd40('0x3')],'allowNull':![],'defaultValue':_0xbd40('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xbd40('0x3')],'allowNull':![],'defaultValue':_0xbd40('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xbd40('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xbd40('0x3')]},'animation':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xbd40('0xa')]('rounded',_0xbd40('0xb')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0xc')},'offline_chat_button':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xbd40('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0xd')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xbd40('0xe')]},'closingQuestion':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0xf')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0xbd40('0x10')},'noteTitle':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x11')},'placeholderMessage':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x12')},'closingMessage':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x13')},'closingMessageButton':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x14')},'skipMessageButton':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x15')},'conditionAgreement':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x16')},'ratingType':{'type':Sequelize['ENUM'](_0xbd40('0x17'),_0xbd40('0x18')),'defaultValue':_0xbd40('0x17')},'ratingStarsNumber':{'type':Sequelize[_0xbd40('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xbd40('0xe')],'defaultValue':function(){return JSON[_0xbd40('0x19')]({'items':[{'type':_0xbd40('0x1a'),'variable':null,'config':{'placeholder':'name','type':_0xbd40('0x1b'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0xbd40('0x1a'),'props':{'title':_0xbd40('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0xbd40('0x5'),'type':_0xbd40('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON['parse'](this['getDataValue'](_0xbd40('0x1c'))):{};},'set':function(_0x1e810a){return this[_0xbd40('0x1d')](_0xbd40('0x1c'),JSON[_0xbd40('0x19')](_0x1e810a));}},'offlineForm':{'type':Sequelize[_0xbd40('0xe')],'defaultValue':function(){return JSON[_0xbd40('0x19')]({'items':[{'type':_0xbd40('0x1a'),'props':{'title':_0xbd40('0x5'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xbd40('0x5')},'variable':null},{'type':_0xbd40('0x1e'),'config':{'placeholder':'Comments'},'props':{'title':_0xbd40('0x1f'),'helpText':_0xbd40('0x20')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0xbd40('0x21'))?JSON['parse'](this[_0xbd40('0x22')]('offlineForm')):{};},'set':function(_0x278233){return this[_0xbd40('0x1d')](_0xbd40('0x21'),JSON[_0xbd40('0x19')](_0x278233));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xbd40('0x23')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xbd40('0x3')]},'forwardOffline':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xbd40('0x3')]},'waitingTitle':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x24')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0xbd40('0x25')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xbd40('0x26')},'offlineMessageBody':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x27')},'enableUnmanagedNote':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x28')},'skipUnmanaged':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x15')},'sendUnmanaged':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xbd40('0x3')]},'notificationTemplate':{'type':Sequelize[_0xbd40('0xe')],'defaultValue':function(){return _0xbd40('0x29');}},'notificationSound':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize[_0xbd40('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x2b')},'verticalAlignment':{'type':Sequelize[_0xbd40('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x2c')},'defaultTitle':{'type':Sequelize[_0xbd40('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xbd40('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xbd40('0x2d'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbd40('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xbd40('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':_0xbd40('0x2e')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbd40('0x8')],'comment':_0xbd40('0x2f')},'mandatoryDisposition':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![],'comment':_0xbd40('0x30'),'set':function(_0x42ab77){if(!_0x42ab77)this[_0xbd40('0x1d')](_0xbd40('0x31'),null);this[_0xbd40('0x1d')]('mandatoryDisposition',_0x42ab77);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0xbd40('0x3')],'allowNull':![],'defaultValue':_0xbd40('0x32')},'vidaooNote':{'type':Sequelize[_0xbd40('0x3')],'defaultValue':function(){return _0xbd40('0x33');}},'vidaooMetadata':{'type':Sequelize[_0xbd40('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xbd40('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x9692=['randomstring','exports','STRING','Agent','#011F6A','INTEGER','BOOLEAN','ENUM','rounded','squared','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','star','thumb','stringify','input','text','name','email','parse','getDataValue','setDataValue','Comments','Leave\x20your\x20comments','offlineForm','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize'];(function(_0xc587e1,_0x205289){var _0xa6e1a4=function(_0xed352e){while(--_0xed352e){_0xc587e1['push'](_0xc587e1['shift']());}};_0xa6e1a4(++_0x205289);}(_0x9692,0x164));var _0x2969=function(_0x511342,_0x575123){_0x511342=_0x511342-0x0;var _0x869e3d=_0x9692[_0x511342];return _0x869e3d;};'use strict';var Sequelize=require(_0x2969('0x0'));var rs=require(_0x2969('0x1'));module[_0x2969('0x2')]={'name':{'type':Sequelize[_0x2969('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x2969('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'email'},'key':{'type':Sequelize[_0x2969('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x4')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':_0x2969('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x2969('0x3')]},'animation':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x2969('0x8')](_0x2969('0x9'),_0x2969('0xa')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xb')},'offline_chat_button':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xc')},'header_offline':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xd')},'download_transcript':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xe')},'defaultWhiteLabel':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x2969('0xf')]},'closingQuestion':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x11')},'formSubmitFailureMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x12')},'noteTitle':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x13')},'placeholderMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0xc')},'skipMessageButton':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x15')},'conditionAgreement':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x16')},'ratingType':{'type':Sequelize[_0x2969('0x8')](_0x2969('0x17'),_0x2969('0x18')),'defaultValue':_0x2969('0x17')},'ratingStarsNumber':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x2969('0xf')],'defaultValue':function(){return JSON[_0x2969('0x19')]({'items':[{'type':_0x2969('0x1a'),'variable':null,'config':{'placeholder':'name','type':_0x2969('0x1b'),'required':!![]},'props':{'title':_0x2969('0x1c'),'helpText':''}},{'type':'input','props':{'title':_0x2969('0x1d'),'helpText':''},'config':{'required':!![],'placeholder':_0x2969('0x1d'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON[_0x2969('0x1e')](this[_0x2969('0x1f')]('onlineForm')):{};},'set':function(_0x5b3e13){return this[_0x2969('0x20')]('onlineForm',JSON[_0x2969('0x19')](_0x5b3e13));}},'offlineForm':{'type':Sequelize[_0x2969('0xf')],'defaultValue':function(){return JSON[_0x2969('0x19')]({'items':[{'type':_0x2969('0x1a'),'props':{'title':_0x2969('0x1d'),'helpText':''},'config':{'required':!![],'placeholder':_0x2969('0x1d'),'type':_0x2969('0x1d')},'variable':null},{'type':'textarea','config':{'placeholder':_0x2969('0x21')},'props':{'title':_0x2969('0x21'),'helpText':_0x2969('0x22')}}],'fromKey':0x0});},'get':function(){return this[_0x2969('0x1f')](_0x2969('0x23'))?JSON[_0x2969('0x1e')](this[_0x2969('0x1f')](_0x2969('0x23'))):{};},'set':function(_0x45eb30){return this[_0x2969('0x20')](_0x2969('0x23'),JSON[_0x2969('0x19')](_0x45eb30));}},'token':{'type':Sequelize[_0x2969('0x3')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x2969('0x3')]},'forwardOffline':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x2969('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x24')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x26')},'offlineMessageBody':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x27')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x28')},'skipUnmanaged':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x15')},'sendUnmanaged':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x2969('0xf')]},'showAgentAvatar':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x2969('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x2969('0x29');}},'notificationSound':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize[_0x2969('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x2b')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x2969('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':_0x2969('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2969('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x2d')},'systemAvatar':{'type':Sequelize[_0x2969('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2969('0x6')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x2969('0x2e'),'set':function(_0x1517ef){if(!_0x1517ef)this[_0x2969('0x20')](_0x2969('0x2f'),null);this[_0x2969('0x20')](_0x2969('0x30'),_0x1517ef);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x2969('0x3')]},'vidaooTopic':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':_0x2969('0x31')},'vidaooNote':{'type':Sequelize[_0x2969('0x3')],'defaultValue':function(){return _0x2969('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x2969('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index d204977..0013b39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa4=['No\x20timezone','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','replace','render','alignment','verticalAlignment','textColor','color_button','backgroundColor','addApplications','sequelize','findAndCountAll','priority','getApplications','chatProactiveAction','addProactiveActions','ChatProactiveAction','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','register','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','ChatWebsites','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','type','include','findAll','show','params','includeAll','options','find','create','body','user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','Disposition','hasOwnProperty','pick','rows','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','customerAvatar','systemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','../../config/license/util','custom','isNil','existsSync','server/files/images/logos/','download','join','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','user-agent','chat','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','DESC','ChatApplication','Applications','list','orderBy','asc','account','Contacts','from','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','referer','format','%s\x20%s','version','unknown','browser','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','lastName','messageId','created','autoclose','applications','push','*,*,*,*','ChatMessage','AttachmentId','User','UserId','unshift','agent','Start','startRouting','EventManager','offline','send','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','ChatOfflineMessage','originalname','mimetype','server','files','attachments','offline-chat','openNewInteraction','transaction','Attachment','bulkCreate','MailServerOut','Smtp','forwardOfflineAddress','service','host','port','secure','pass','sendMail','\x22%s\x22\x20<%s>','email','subjectOffline','toPairsIn','mapValues','firstName','offlineMessageSubject','MailAccountId','NotifyMailAccount','addInteraction','omit','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','true','OFFLINE'];(function(_0x29b3b9,_0x509d0a){var _0x21cdde=function(_0x2537b6){while(--_0x2537b6){_0x29b3b9['push'](_0x29b3b9['shift']());}};_0x21cdde(++_0x509d0a);}(_0xeaa4,0x15a));var _0x4eaa=function(_0x5901df,_0x127ebb){_0x5901df=_0x5901df-0x0;var _0x573cac=_0xeaa4[_0x5901df];return _0x573cac;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4eaa('0x0'));var jsonpatch=require(_0x4eaa('0x1'));var rp=require(_0x4eaa('0x2'));var moment=require(_0x4eaa('0x3'));var BPromise=require(_0x4eaa('0x4'));var Mustache=require(_0x4eaa('0x5'));var util=require(_0x4eaa('0x6'));var path=require(_0x4eaa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4eaa('0x8'));var fs=require('fs');var fs_extra=require(_0x4eaa('0x9'));var _=require(_0x4eaa('0xa'));var squel=require(_0x4eaa('0xb'));var crypto=require(_0x4eaa('0xc'));var jsforce=require(_0x4eaa('0xd'));var deskjs=require(_0x4eaa('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4eaa('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4eaa('0x10'));var logger=require(_0x4eaa('0x11'))(_0x4eaa('0x12'));var utils=require(_0x4eaa('0x13'));var config=require(_0x4eaa('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x4eaa('0x15')]=_[_0x4eaa('0x16')](config[_0x4eaa('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4eaa('0x15')]));require('./chatWebsite.socket')[_0x4eaa('0x17')](socket);var jayson=require(_0x4eaa('0x18'));var client=jayson[_0x4eaa('0x19')][_0x4eaa('0x1a')]({'port':0x232c});var client9002=jayson['client'][_0x4eaa('0x1a')]({'port':0x232a});var client9003=jayson['client'][_0x4eaa('0x1a')]({'port':0x232b});var client9001=jayson['client'][_0x4eaa('0x1a')]({'port':0x2329});function respondWithRpcPromise(_0x5a5eb0,_0x9ec560,_0x4dc734,_0x3954a8){return new BPromise(function(_0x355791,_0x5f5108){var _0x442d7c=_0x3954a8||client;return _0x442d7c[_0x4eaa('0x1b')](_0x5a5eb0,_0x4dc734)[_0x4eaa('0x1c')](function(_0x3b8d80){logger[_0x4eaa('0x1d')](_0x4eaa('0x1e'),_0x9ec560,'request\x20sent');logger['debug']('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x9ec560,_0x4eaa('0x1f'),JSON[_0x4eaa('0x20')](_0x3b8d80));if(_0x3b8d80[_0x4eaa('0x21')]){if(_0x3b8d80[_0x4eaa('0x21')][_0x4eaa('0x22')]===0x1f4){logger[_0x4eaa('0x21')](_0x4eaa('0x1e'),_0x9ec560,_0x3b8d80[_0x4eaa('0x21')][_0x4eaa('0x23')]);return _0x5f5108(_0x3b8d80['error']['message']);}logger['error'](_0x4eaa('0x1e'),_0x9ec560,_0x3b8d80[_0x4eaa('0x21')][_0x4eaa('0x23')]);return _0x355791(_0x3b8d80[_0x4eaa('0x21')][_0x4eaa('0x23')]);}else{logger['info'](_0x4eaa('0x1e'),_0x9ec560,_0x4eaa('0x1f'));_0x355791(_0x3b8d80[_0x4eaa('0x24')][_0x4eaa('0x23')]);}})[_0x4eaa('0x25')](function(_0x5e4539){logger[_0x4eaa('0x21')]('ChatWebsite,\x20%s,\x20%s',_0x9ec560,_0x5e4539);_0x5f5108(_0x5e4539);});});}function respondWithStatusCode(_0x218c79,_0x376e85){_0x376e85=_0x376e85||0xcc;return function(_0x30e835){if(_0x30e835){return _0x218c79['sendStatus'](_0x376e85);}return _0x218c79[_0x4eaa('0x26')](_0x376e85)[_0x4eaa('0x27')]();};}function respondWithResult(_0x4715ca,_0x55f134){_0x55f134=_0x55f134||0xc8;return function(_0x1761d2){if(_0x1761d2){return _0x4715ca[_0x4eaa('0x26')](_0x55f134)[_0x4eaa('0x28')](_0x1761d2);}};}function respondWithFilteredResult(_0x57e70f,_0x3288e1){return function(_0x5be637){if(_0x5be637){var _0x3845e5=typeof _0x3288e1[_0x4eaa('0x29')]===_0x4eaa('0x2a')&&typeof _0x3288e1[_0x4eaa('0x2b')]===_0x4eaa('0x2a');var _0x10c19=_0x5be637[_0x4eaa('0x2c')];var _0x33ba81=_0x3845e5?0x0:_0x3288e1[_0x4eaa('0x29')];var _0x176a23=_0x3845e5?_0x5be637[_0x4eaa('0x2c')]:_0x3288e1['offset']+_0x3288e1[_0x4eaa('0x2b')];var _0x4977ef;if(_0x176a23>=_0x10c19){_0x176a23=_0x10c19;_0x4977ef=0xc8;}else{_0x4977ef=0xce;}_0x57e70f['status'](_0x4977ef);return _0x57e70f[_0x4eaa('0x2d')](_0x4eaa('0x2e'),_0x33ba81+'-'+_0x176a23+'/'+_0x10c19)[_0x4eaa('0x28')](_0x5be637);}return null;};}function patchUpdates(_0x5efcf5){return function(_0x2e72c3){try{jsonpatch[_0x4eaa('0x2f')](_0x2e72c3,_0x5efcf5,!![]);}catch(_0x22405d){return BPromise[_0x4eaa('0x30')](_0x22405d);}return _0x2e72c3[_0x4eaa('0x31')]();};}function saveUpdates(_0x6c3479,_0x2502b9){return function(_0x22d664){if(_0x22d664){return _0x22d664[_0x4eaa('0x32')](_0x6c3479)['then'](function(_0x5af51d){return _0x5af51d;});}return null;};}function removeEntity(_0x5e6c6f,_0x288976){return function(_0x154151){if(_0x154151){return _0x154151[_0x4eaa('0x33')]()[_0x4eaa('0x1c')](function(){var _0x1bff84=_0x154151[_0x4eaa('0x34')]({'plain':!![]});var _0x574ecb=_0x4eaa('0x35');return db[_0x4eaa('0x36')][_0x4eaa('0x33')]({'where':{'type':_0x574ecb,'resourceId':_0x1bff84['id']}})[_0x4eaa('0x1c')](function(){return _0x154151;});})[_0x4eaa('0x1c')](function(){_0x5e6c6f[_0x4eaa('0x26')](0xcc)[_0x4eaa('0x27')]();});}};}function handleEntityNotFound(_0x1b2af6,_0x1e766c){return function(_0x5ef79a){if(!_0x5ef79a){_0x1b2af6['sendStatus'](0x194);}return _0x5ef79a;};}function handleError(_0x42505d,_0x2458d4){_0x2458d4=_0x2458d4||0x1f4;return function(_0x48a63a){logger[_0x4eaa('0x21')](_0x48a63a[_0x4eaa('0x37')]);if(_0x48a63a['name']){delete _0x48a63a[_0x4eaa('0x38')];}_0x42505d['status'](_0x2458d4)['send'](_0x48a63a);};}exports[_0x4eaa('0x39')]=function(_0xa2a8d,_0x21611c){var _0xf1e5bc={'include':[{'model':db[_0x4eaa('0x3a')],'as':_0x4eaa('0x3b')}]},_0x5cc740={},_0x31406a={'count':0x0,'rows':[]};var _0x938271=_[_0x4eaa('0x3c')](db[_0x4eaa('0x3d')][_0x4eaa('0x3e')],function(_0x568675){return{'name':_0x568675[_0x4eaa('0x3f')],'type':_0x568675['type']['key']};});_0x5cc740[_0x4eaa('0x40')]=_[_0x4eaa('0x3c')](_0x938271,_0x4eaa('0x38'));_0x5cc740[_0x4eaa('0x41')]=_[_0x4eaa('0x42')](_0xa2a8d[_0x4eaa('0x41')]);_0x5cc740[_0x4eaa('0x43')]=_[_0x4eaa('0x44')](_0x5cc740[_0x4eaa('0x40')],_0x5cc740[_0x4eaa('0x41')]);_0xf1e5bc[_0x4eaa('0x45')]=_[_0x4eaa('0x44')](_0x5cc740[_0x4eaa('0x40')],qs[_0x4eaa('0x46')](_0xa2a8d[_0x4eaa('0x41')][_0x4eaa('0x46')]));_0xf1e5bc[_0x4eaa('0x45')]=_0xf1e5bc[_0x4eaa('0x45')][_0x4eaa('0x47')]?_0xf1e5bc[_0x4eaa('0x45')]:_0x5cc740[_0x4eaa('0x40')];if(!_0xa2a8d['query']['hasOwnProperty'](_0x4eaa('0x48'))){_0xf1e5bc[_0x4eaa('0x2b')]=qs[_0x4eaa('0x2b')](_0xa2a8d[_0x4eaa('0x41')][_0x4eaa('0x2b')]);_0xf1e5bc[_0x4eaa('0x29')]=qs[_0x4eaa('0x29')](_0xa2a8d[_0x4eaa('0x41')][_0x4eaa('0x29')]);}_0xf1e5bc[_0x4eaa('0x49')]=qs['sort'](_0xa2a8d[_0x4eaa('0x41')][_0x4eaa('0x4a')]);_0xf1e5bc[_0x4eaa('0x4b')]=qs['filters'](_['pick'](_0xa2a8d['query'],_0x5cc740['filters']),_0x938271);if(_0xa2a8d[_0x4eaa('0x41')][_0x4eaa('0x4c')]){_0xf1e5bc[_0x4eaa('0x4b')]=_[_0x4eaa('0x4d')](_0xf1e5bc[_0x4eaa('0x4b')],{'$or':_[_0x4eaa('0x3c')](_0x938271,function(_0x32ab41){if(_0x32ab41[_0x4eaa('0x4e')]!=='VIRTUAL'){var _0x3fd1b6={};_0x3fd1b6[_0x32ab41[_0x4eaa('0x38')]]={'$like':'%'+_0xa2a8d[_0x4eaa('0x41')]['filter']+'%'};return _0x3fd1b6;}})});}_0xf1e5bc=_[_0x4eaa('0x4d')]({},_0xf1e5bc,_0xa2a8d['options']);var _0x34fe36={'where':_0xf1e5bc[_0x4eaa('0x4b')]};return db[_0x4eaa('0x3d')][_0x4eaa('0x2c')](_0x34fe36)[_0x4eaa('0x1c')](function(_0x209d25){_0x31406a[_0x4eaa('0x2c')]=_0x209d25;if(_0xa2a8d[_0x4eaa('0x41')]['includeAll']){_0xf1e5bc[_0x4eaa('0x4f')]=[{'all':!![]}];}return db[_0x4eaa('0x3d')][_0x4eaa('0x50')](_0xf1e5bc);})['then'](function(_0x11f511){_0x31406a['rows']=_0x11f511;return _0x31406a;})[_0x4eaa('0x1c')](respondWithFilteredResult(_0x21611c,_0xf1e5bc))[_0x4eaa('0x25')](handleError(_0x21611c,null));};exports[_0x4eaa('0x51')]=function(_0x3c28de,_0x462a7d){var _0x4deb44={'raw':![],'where':{'id':_0x3c28de[_0x4eaa('0x52')]['id']},'include':[{'model':db[_0x4eaa('0x3a')],'as':'mandatoryDispositionPause'}]},_0x1742f5={};_0x1742f5[_0x4eaa('0x40')]=_['keys'](db[_0x4eaa('0x3d')]['rawAttributes']);_0x1742f5[_0x4eaa('0x41')]=_[_0x4eaa('0x42')](_0x3c28de[_0x4eaa('0x41')]);_0x1742f5['filters']=_[_0x4eaa('0x44')](_0x1742f5[_0x4eaa('0x40')],_0x1742f5[_0x4eaa('0x41')]);_0x4deb44['attributes']=_[_0x4eaa('0x44')](_0x1742f5[_0x4eaa('0x40')],qs[_0x4eaa('0x46')](_0x3c28de[_0x4eaa('0x41')]['fields']));_0x4deb44['attributes']=_0x4deb44[_0x4eaa('0x45')][_0x4eaa('0x47')]?_0x4deb44[_0x4eaa('0x45')]:_0x1742f5[_0x4eaa('0x40')];if(_0x3c28de['query'][_0x4eaa('0x53')]){_0x4deb44[_0x4eaa('0x4f')]=[{'all':!![]}];}_0x4deb44=_[_0x4eaa('0x4d')]({},_0x4deb44,_0x3c28de[_0x4eaa('0x54')]);return db['ChatWebsite'][_0x4eaa('0x55')](_0x4deb44)['then'](handleEntityNotFound(_0x462a7d,null))[_0x4eaa('0x1c')](respondWithResult(_0x462a7d,null))[_0x4eaa('0x25')](handleError(_0x462a7d,null));};exports[_0x4eaa('0x56')]=function(_0x2c3922,_0x12b4bf){return db[_0x4eaa('0x3d')][_0x4eaa('0x56')](_0x2c3922[_0x4eaa('0x57')],{})[_0x4eaa('0x1c')](function(_0x3dc276){var _0x1132b6=_0x2c3922[_0x4eaa('0x58')][_0x4eaa('0x34')]({'plain':!![]});if(!_0x1132b6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1132b6[_0x4eaa('0x59')]===_0x4eaa('0x58')){var _0x5af2a7=_0x3dc276[_0x4eaa('0x34')]({'plain':!![]});var _0x5d6314='ChatWebsites';return db['UserProfileSection'][_0x4eaa('0x55')]({'where':{'name':_0x5d6314,'userProfileId':_0x1132b6['userProfileId']},'raw':!![]})[_0x4eaa('0x1c')](function(_0x4bdd43){if(_0x4bdd43&&_0x4bdd43[_0x4eaa('0x5a')]===0x0){return db['UserProfileResource'][_0x4eaa('0x56')]({'name':_0x5af2a7['name'],'resourceId':_0x5af2a7['id'],'type':_0x4bdd43[_0x4eaa('0x38')],'sectionId':_0x4bdd43['id']},{})[_0x4eaa('0x1c')](function(){return _0x3dc276;});}else{return _0x3dc276;}})[_0x4eaa('0x25')](function(_0x2bedcb){logger[_0x4eaa('0x21')](_0x4eaa('0x5b'),_0x2bedcb);throw _0x2bedcb;});}return _0x3dc276;})[_0x4eaa('0x1c')](respondWithResult(_0x12b4bf,0xc9))[_0x4eaa('0x25')](handleError(_0x12b4bf,null));};exports['update']=function(_0x343f72,_0x403ff4){if(_0x343f72[_0x4eaa('0x57')]['id']){delete _0x343f72[_0x4eaa('0x57')]['id'];}return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x343f72[_0x4eaa('0x52')]['id']},'include':[{'model':db[_0x4eaa('0x3a')],'as':_0x4eaa('0x3b')}]})[_0x4eaa('0x1c')](handleEntityNotFound(_0x403ff4,null))[_0x4eaa('0x1c')](saveUpdates(_0x343f72['body'],null))[_0x4eaa('0x1c')](respondWithResult(_0x403ff4,null))[_0x4eaa('0x25')](handleError(_0x403ff4,null));};exports['destroy']=function(_0x3e6c11,_0x29246e){return db['ChatWebsite'][_0x4eaa('0x55')]({'where':{'id':_0x3e6c11[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x29246e,null))['then'](removeEntity(_0x29246e,null))[_0x4eaa('0x25')](handleError(_0x29246e,null));};exports[_0x4eaa('0x5c')]=function(_0xef9801,_0x16873d){return db[_0x4eaa('0x3d')][_0x4eaa('0x5c')]()[_0x4eaa('0x1c')](respondWithResult(_0x16873d,null))['catch'](handleError(_0x16873d,null));};exports[_0x4eaa('0x5d')]=function(_0x4229c6,_0x417e43,_0x5c9e0e){if(_0x4229c6[_0x4eaa('0x57')]['id']){delete _0x4229c6[_0x4eaa('0x57')]['id'];}return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x4229c6['params']['id']}})['then'](handleEntityNotFound(_0x417e43,null))[_0x4eaa('0x1c')](function(_0x5c7ec3){if(_0x5c7ec3){_0x4229c6[_0x4eaa('0x57')][_0x4eaa('0x5e')]=_0x5c7ec3['id'];return db['Disposition'][_0x4eaa('0x56')](_0x4229c6[_0x4eaa('0x57')]);}})[_0x4eaa('0x1c')](respondWithResult(_0x417e43,null))[_0x4eaa('0x25')](handleError(_0x417e43,null));};exports[_0x4eaa('0x5f')]=function(_0x5df14e,_0x489c81,_0x9d057b){var _0x4a5733={'raw':![],'where':{}};var _0x1ef969={};var _0x3ba4d5={'count':0x0,'rows':[]};return db[_0x4eaa('0x3d')][_0x4eaa('0x60')]({'where':{'id':_0x5df14e[_0x4eaa('0x52')]['id']}})['then'](handleEntityNotFound(_0x489c81,null))[_0x4eaa('0x1c')](function(_0x37157d){if(_0x37157d){_0x1ef969[_0x4eaa('0x40')]=_[_0x4eaa('0x42')](db[_0x4eaa('0x61')][_0x4eaa('0x3e')]);_0x1ef969[_0x4eaa('0x41')]=_[_0x4eaa('0x42')](_0x5df14e[_0x4eaa('0x41')]);_0x1ef969['filters']=_['intersection'](_0x1ef969['model'],_0x1ef969[_0x4eaa('0x41')]);_0x4a5733[_0x4eaa('0x45')]=_[_0x4eaa('0x44')](_0x1ef969[_0x4eaa('0x40')],qs['fields'](_0x5df14e[_0x4eaa('0x41')][_0x4eaa('0x46')]));_0x4a5733['attributes']=_0x4a5733[_0x4eaa('0x45')][_0x4eaa('0x47')]?_0x4a5733['attributes']:_0x1ef969[_0x4eaa('0x40')];if(!_0x5df14e['query'][_0x4eaa('0x62')](_0x4eaa('0x48'))){_0x4a5733[_0x4eaa('0x2b')]=qs[_0x4eaa('0x2b')](_0x5df14e[_0x4eaa('0x41')]['limit']);_0x4a5733[_0x4eaa('0x29')]=qs[_0x4eaa('0x29')](_0x5df14e[_0x4eaa('0x41')][_0x4eaa('0x29')]);}_0x4a5733[_0x4eaa('0x49')]=qs['sort'](_0x5df14e['query'][_0x4eaa('0x4a')]);_0x4a5733[_0x4eaa('0x4b')]=qs[_0x4eaa('0x43')](_[_0x4eaa('0x63')](_0x5df14e[_0x4eaa('0x41')],_0x1ef969[_0x4eaa('0x43')]));_0x4a5733['where'][_0x4eaa('0x5e')]=_0x37157d['id'];if(_0x5df14e[_0x4eaa('0x41')][_0x4eaa('0x4c')]){_0x4a5733[_0x4eaa('0x4b')]=_['merge'](_0x4a5733['where'],{'$or':_[_0x4eaa('0x3c')](_0x4a5733['attributes'],function(_0x5c95a1){var _0x2f328b={};_0x2f328b[_0x5c95a1]={'$like':'%'+_0x5df14e[_0x4eaa('0x41')][_0x4eaa('0x4c')]+'%'};return _0x2f328b;})});}_0x4a5733=_[_0x4eaa('0x4d')]({},_0x4a5733,_0x5df14e[_0x4eaa('0x54')]);return db[_0x4eaa('0x61')][_0x4eaa('0x2c')]({'where':_0x4a5733['where']})[_0x4eaa('0x1c')](function(_0x56d17a){_0x3ba4d5['count']=_0x56d17a;if(_0x5df14e[_0x4eaa('0x41')]['includeAll']){_0x4a5733[_0x4eaa('0x4f')]=[{'all':!![]}];}return db[_0x4eaa('0x61')]['findAll'](_0x4a5733);})[_0x4eaa('0x1c')](function(_0x587a78){_0x3ba4d5[_0x4eaa('0x64')]=_0x587a78;return _0x3ba4d5;});}})[_0x4eaa('0x1c')](respondWithFilteredResult(_0x489c81,_0x4a5733))['catch'](handleError(_0x489c81,null));};exports[_0x4eaa('0x65')]=function(_0x119619,_0x4cb093,_0x67357f){return db['ChatWebsite'][_0x4eaa('0x55')]({'where':{'id':_0x119619[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x4cb093,null))['then'](function(_0x1e84f2){if(_0x1e84f2){return _0x1e84f2[_0x4eaa('0x65')](_0x119619[_0x4eaa('0x41')][_0x4eaa('0x66')]);}})[_0x4eaa('0x1c')](respondWithStatusCode(_0x4cb093,null))['catch'](handleError(_0x4cb093,null));};exports['addAnswer']=function(_0x4e3b37,_0x15ba07,_0x8340f2){if(_0x4e3b37[_0x4eaa('0x57')]['id']){delete _0x4e3b37[_0x4eaa('0x57')]['id'];}return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x4e3b37[_0x4eaa('0x52')]['id']}})['then'](handleEntityNotFound(_0x15ba07,null))[_0x4eaa('0x1c')](function(_0x5e5cb9){if(_0x5e5cb9){_0x4e3b37[_0x4eaa('0x57')][_0x4eaa('0x5e')]=_0x5e5cb9['id'];return db[_0x4eaa('0x67')][_0x4eaa('0x56')](_0x4e3b37['body']);}})[_0x4eaa('0x1c')](respondWithResult(_0x15ba07,null))[_0x4eaa('0x25')](handleError(_0x15ba07,null));};exports[_0x4eaa('0x68')]=function(_0x50b3ff,_0x3472f7,_0x35cb9a){var _0x4ebba5={'raw':![],'where':{}};var _0x76bbca={};var _0xd18db={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x4eaa('0x60')]({'where':{'id':_0x50b3ff['params']['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x3472f7,null))[_0x4eaa('0x1c')](function(_0x2e1bd7){if(_0x2e1bd7){_0x76bbca[_0x4eaa('0x40')]=_[_0x4eaa('0x42')](db['CannedAnswer']['rawAttributes']);_0x76bbca[_0x4eaa('0x41')]=_['keys'](_0x50b3ff[_0x4eaa('0x41')]);_0x76bbca[_0x4eaa('0x43')]=_['intersection'](_0x76bbca[_0x4eaa('0x40')],_0x76bbca[_0x4eaa('0x41')]);_0x4ebba5[_0x4eaa('0x45')]=_['intersection'](_0x76bbca['model'],qs[_0x4eaa('0x46')](_0x50b3ff['query'][_0x4eaa('0x46')]));_0x4ebba5[_0x4eaa('0x45')]=_0x4ebba5[_0x4eaa('0x45')]['length']?_0x4ebba5['attributes']:_0x76bbca['model'];if(!_0x50b3ff[_0x4eaa('0x41')][_0x4eaa('0x62')](_0x4eaa('0x48'))){_0x4ebba5['limit']=qs[_0x4eaa('0x2b')](_0x50b3ff[_0x4eaa('0x41')][_0x4eaa('0x2b')]);_0x4ebba5[_0x4eaa('0x29')]=qs[_0x4eaa('0x29')](_0x50b3ff[_0x4eaa('0x41')]['offset']);}_0x4ebba5['order']=qs[_0x4eaa('0x4a')](_0x50b3ff[_0x4eaa('0x41')][_0x4eaa('0x4a')]);_0x4ebba5[_0x4eaa('0x4b')]=qs['filters'](_[_0x4eaa('0x63')](_0x50b3ff['query'],_0x76bbca[_0x4eaa('0x43')]));_0x4ebba5['where'][_0x4eaa('0x5e')]=_0x2e1bd7['id'];if(_0x50b3ff[_0x4eaa('0x41')][_0x4eaa('0x4c')]){_0x4ebba5[_0x4eaa('0x4b')]=_[_0x4eaa('0x4d')](_0x4ebba5[_0x4eaa('0x4b')],{'$or':_[_0x4eaa('0x3c')](_0x4ebba5[_0x4eaa('0x45')],function(_0x383f9a){var _0x1779d5={};_0x1779d5[_0x383f9a]={'$like':'%'+_0x50b3ff[_0x4eaa('0x41')][_0x4eaa('0x4c')]+'%'};return _0x1779d5;})});}_0x4ebba5=_['merge']({},_0x4ebba5,_0x50b3ff[_0x4eaa('0x54')]);return db[_0x4eaa('0x67')][_0x4eaa('0x2c')]({'where':_0x4ebba5['where']})[_0x4eaa('0x1c')](function(_0x2209cc){_0xd18db['count']=_0x2209cc;if(_0x50b3ff[_0x4eaa('0x41')][_0x4eaa('0x53')]){_0x4ebba5[_0x4eaa('0x4f')]=[{'all':!![]}];}return db[_0x4eaa('0x67')]['findAll'](_0x4ebba5);})[_0x4eaa('0x1c')](function(_0x44a5ee){_0xd18db[_0x4eaa('0x64')]=_0x44a5ee;return _0xd18db;});}})[_0x4eaa('0x1c')](respondWithFilteredResult(_0x3472f7,_0x4ebba5))[_0x4eaa('0x25')](handleError(_0x3472f7,null));};exports[_0x4eaa('0x69')]=function(_0x55b50a,_0x58b6b0,_0x991ee2){return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x55b50a[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x58b6b0,null))[_0x4eaa('0x1c')](function(_0x71edd){if(_0x71edd){return _0x71edd[_0x4eaa('0x69')](_0x55b50a['query'][_0x4eaa('0x66')]);}})[_0x4eaa('0x1c')](respondWithStatusCode(_0x58b6b0,null))[_0x4eaa('0x25')](handleError(_0x58b6b0,null));};exports[_0x4eaa('0x6a')]=function(_0x1e32b3,_0x193523,_0x1cf2c4){_0x1e32b3['body'][_0x4eaa('0x6b')]=_0x1e32b3[_0x4eaa('0x6c')][_0x4eaa('0x6d')];return db[_0x4eaa('0x3d')]['find']({'where':{'id':_0x1e32b3[_0x4eaa('0x52')]['id']}})['then'](handleEntityNotFound(_0x193523,null))[_0x4eaa('0x1c')](saveUpdates(_0x1e32b3[_0x4eaa('0x57')],null))['then'](respondWithResult(_0x193523,null))[_0x4eaa('0x25')](handleError(_0x193523,null));};exports[_0x4eaa('0x6e')]=function(_0x378c49,_0x3df01e,_0x4cdee9){_0x378c49['body'][_0x4eaa('0x6f')]=_0x378c49[_0x4eaa('0x6c')][_0x4eaa('0x6d')];return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x378c49[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x3df01e,null))[_0x4eaa('0x1c')](saveUpdates(_0x378c49[_0x4eaa('0x57')],null))['then'](respondWithResult(_0x3df01e,null))[_0x4eaa('0x25')](handleError(_0x3df01e,null));};exports['addCustomerAvatar']=function(_0x39722b,_0x5aeea2,_0x21a7ef){_0x39722b['body'][_0x4eaa('0x70')]=_0x39722b[_0x4eaa('0x6c')]['filename'];return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x39722b[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x5aeea2,null))[_0x4eaa('0x1c')](saveUpdates(_0x39722b['body'],null))[_0x4eaa('0x1c')](respondWithResult(_0x5aeea2,null))['catch'](handleError(_0x5aeea2,null));};exports['addSystemAvatar']=function(_0x29dd97,_0x5d455b,_0x3bf18c){_0x29dd97['body'][_0x4eaa('0x71')]=_0x29dd97['file'][_0x4eaa('0x6d')];return db['ChatWebsite']['find']({'where':{'id':_0x29dd97['params']['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x5d455b,null))[_0x4eaa('0x1c')](saveUpdates(_0x29dd97['body'],null))[_0x4eaa('0x1c')](respondWithResult(_0x5d455b,null))['catch'](handleError(_0x5d455b,null));};exports[_0x4eaa('0x72')]=function(_0x266e3c,_0x3dcc84,_0x3b506f){var _0x39bddf=path['join'](config[_0x4eaa('0x73')],_0x4eaa('0x74'));var _0x1fe711={'where':{'id':_0x266e3c[_0x4eaa('0x52')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x2c66db=![];return require(_0x4eaa('0x75'))['getLicense']()[_0x4eaa('0x1c')](function(_0x2432b){if(_0x2432b){_0x2c66db=_0x2432b[_0x4eaa('0x76')];}})['then'](function(){return db[_0x4eaa('0x3d')][_0x4eaa('0x55')](_0x1fe711);})[_0x4eaa('0x1c')](handleEntityNotFound(_0x3dcc84,null))[_0x4eaa('0x1c')](function(_0x511dd2){if(_0x511dd2){if(!_[_0x4eaa('0x77')](_0x511dd2[_0x4eaa('0x6b')])){if(fs[_0x4eaa('0x78')](path['join'](config[_0x4eaa('0x73')],_0x4eaa('0x79'),_0x511dd2[_0x4eaa('0x6b')]))&&_0x2c66db){_0x39bddf=path['join'](config[_0x4eaa('0x73')],_0x4eaa('0x79'),_0x511dd2[_0x4eaa('0x6b')]);}}return _0x3dcc84[_0x4eaa('0x7a')](_0x39bddf);}})[_0x4eaa('0x25')](handleError(_0x3dcc84,null));};exports['getAvatar']=function(_0x5277a3,_0x45075b,_0x56b09d){var _0x4bac8e=path[_0x4eaa('0x7b')](config[_0x4eaa('0x73')],_0x4eaa('0x7c'));var _0x36a89c={'where':{'id':_0x5277a3[_0x4eaa('0x52')]['id']},'attributes':['id',_0x4eaa('0x6f')],'raw':!![]};return db[_0x4eaa('0x3d')][_0x4eaa('0x55')](_0x36a89c)[_0x4eaa('0x1c')](handleEntityNotFound(_0x45075b,null))[_0x4eaa('0x1c')](function(_0x36ec08){if(_0x36ec08){if(!_[_0x4eaa('0x77')](_0x36ec08[_0x4eaa('0x6f')])){if(fs['existsSync'](path[_0x4eaa('0x7b')](config[_0x4eaa('0x73')],_0x4eaa('0x7d'),_0x36ec08['agentAvatar']))){_0x4bac8e=path[_0x4eaa('0x7b')](config['root'],'server/files/images/avatars/',_0x36ec08[_0x4eaa('0x6f')]);}}return _0x45075b[_0x4eaa('0x7a')](_0x4bac8e);}})[_0x4eaa('0x25')](handleError(_0x45075b,null));};exports[_0x4eaa('0x7e')]=function(_0x44214f,_0x20ce10,_0x8d8695){var _0xe66973=path[_0x4eaa('0x7b')](config['root'],_0x4eaa('0x7f'));var _0x37e18f={'where':{'id':_0x44214f[_0x4eaa('0x52')]['id']},'attributes':['id',_0x4eaa('0x70'),_0x4eaa('0x80')],'raw':!![]};return db[_0x4eaa('0x3d')][_0x4eaa('0x55')](_0x37e18f)[_0x4eaa('0x1c')](handleEntityNotFound(_0x20ce10,null))[_0x4eaa('0x1c')](function(_0x32aa81){if(_0x32aa81){if(!_[_0x4eaa('0x77')](_0x32aa81[_0x4eaa('0x70')])){if(fs['existsSync'](path[_0x4eaa('0x7b')](config[_0x4eaa('0x73')],'server/files/images/avatars/',_0x32aa81['customerAvatar']))&&_0x32aa81[_0x4eaa('0x80')]){_0xe66973=path['join'](config[_0x4eaa('0x73')],_0x4eaa('0x7d'),_0x32aa81[_0x4eaa('0x70')]);}}return _0x20ce10[_0x4eaa('0x7a')](_0xe66973);}})[_0x4eaa('0x25')](handleError(_0x20ce10,null));};exports[_0x4eaa('0x81')]=function(_0x3fca18,_0x282d06,_0x5cfe7f){var _0x1c9b4e=path['join'](config[_0x4eaa('0x73')],_0x4eaa('0x82'));var _0x44be5d={'where':{'id':_0x3fca18[_0x4eaa('0x52')]['id']},'attributes':['id',_0x4eaa('0x71')],'raw':!![]};return db[_0x4eaa('0x3d')][_0x4eaa('0x55')](_0x44be5d)[_0x4eaa('0x1c')](handleEntityNotFound(_0x282d06,null))[_0x4eaa('0x1c')](function(_0x154357){if(_0x154357){if(!_['isNil'](_0x154357['systemAvatar'])){if(fs[_0x4eaa('0x78')](path[_0x4eaa('0x7b')](config[_0x4eaa('0x73')],_0x4eaa('0x7d'),_0x154357['systemAvatar']))){_0x1c9b4e=path['join'](config[_0x4eaa('0x73')],'server/files/images/avatars/',_0x154357[_0x4eaa('0x71')]);}}return _0x282d06[_0x4eaa('0x7a')](_0x1c9b4e);}})['catch'](handleError(_0x282d06,null));};exports[_0x4eaa('0x83')]=function(_0x445ad0,_0x336338,_0x327ce2){var _0x59d36b=require(_0x4eaa('0x84'));var _0x4d6132=new _0x59d36b();var _0x215749=_0x4d6132[_0x4eaa('0x85')](_0x445ad0[_0x4eaa('0x86')][_0x4eaa('0x87')])['getResult']();var _0x5cf2ca={'body':_0x445ad0[_0x4eaa('0x57')],'channel':_0x4eaa('0x88')};var _0x2a2f62=[];var _0x25974f=[];var _0x188863={};var _0x442233=![];return db[_0x4eaa('0x89')][_0x4eaa('0x5c')]()[_0x4eaa('0x1c')](function(_0x56c824){if(!_0x56c824){throw new db[(_0x4eaa('0x8a'))][(_0x4eaa('0x8b'))]('no\x20available\x20attributes');}_0x2a2f62=_[_0x4eaa('0x8c')](_[_0x4eaa('0x42')](_0x56c824),[_0x4eaa('0x8d'),_0x4eaa('0x8e')]);_0x25974f=_[_0x4eaa('0x8c')](_[_0x4eaa('0x42')](_0x56c824),[_0x4eaa('0x8d'),_0x4eaa('0x8e'),_0x4eaa('0x8f'),_0x4eaa('0x90')]);if(_0x445ad0[_0x4eaa('0x57')]['id']){delete _0x445ad0['body']['id'];}if(_[_0x4eaa('0x77')](_0x445ad0[_0x4eaa('0x57')]['from'])){throw new db[(_0x4eaa('0x8a'))][(_0x4eaa('0x8b'))](_0x4eaa('0x91'));}if(_[_0x4eaa('0x77')](_0x445ad0['body'][_0x4eaa('0x57')])||_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0x57')]===''){throw new db[(_0x4eaa('0x8a'))]['ValidationError'](_0x4eaa('0x92'));}if(_[_0x4eaa('0x77')](_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0x93')])){throw new db['Sequelize']['ValidationError'](_0x4eaa('0x94')+_0x25974f);}if(!_['includes'](_0x25974f,_0x445ad0['body'][_0x4eaa('0x93')])){throw new db[(_0x4eaa('0x8a'))]['ValidationError'](_0x4eaa('0x95')+_0x25974f);}_0x188863[_0x445ad0[_0x4eaa('0x57')]['mapKey']]=_0x445ad0[_0x4eaa('0x57')]['from'];})['then'](function(){return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x445ad0[_0x4eaa('0x52')]['id']},'include':[{'model':db['CmList'],'as':_0x4eaa('0x96'),'include':[{'model':db[_0x4eaa('0x89')],'as':'Contacts','where':_0x188863,'limit':0x1,'order':[[_0x4eaa('0x8e'),_0x4eaa('0x97')]]}]},{'model':db[_0x4eaa('0x98')],'as':_0x4eaa('0x99')}]});})[_0x4eaa('0x1c')](handleEntityNotFound(_0x336338,null))[_0x4eaa('0x1c')](function(_0x3e7625){if(_0x3e7625&&_0x3e7625['List']){_0x5cf2ca['account']=_0x3e7625;_0x5cf2ca['applications']=_0x3e7625[_0x4eaa('0x99')];_0x5cf2ca[_0x4eaa('0x9a')]=_0x3e7625[_0x4eaa('0x96')];_0x5cf2ca['applications']=_[_0x4eaa('0x9b')](_0x5cf2ca['applications'],['priority'],[_0x4eaa('0x9c')]);if(_0x5cf2ca[_0x4eaa('0x9d')][_0x4eaa('0x99')]){delete _0x5cf2ca[_0x4eaa('0x9d')]['Applications'];}if(_0x5cf2ca[_0x4eaa('0x9d')][_0x4eaa('0x96')]&&_0x5cf2ca[_0x4eaa('0x9d')][_0x4eaa('0x96')][_0x4eaa('0x9e')][_0x4eaa('0x47')]){return _0x5cf2ca['account']['List']['Contacts'][0x0];}var _0x25cee7=_['defaults'](_0x445ad0[_0x4eaa('0x57')],{'firstName':_0x445ad0[_0x4eaa('0x57')]['from'],'ListId':_0x3e7625[_0x4eaa('0x90')]});_0x25cee7[_0x445ad0[_0x4eaa('0x57')]['mapKey']]=_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0x9f')];return db[_0x4eaa('0x89')][_0x4eaa('0x56')](_0x25cee7,{'fields':_0x2a2f62,'raw':!![]});}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x336338,null))['then'](function(_0x38c21a){_0x5cf2ca[_0x4eaa('0xa0')]=_0x38c21a;var _0x10e9af=_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xa1')];if(_0x445ad0[_0x4eaa('0x86')]['cf-connecting-ip']){_0x10e9af=_0x445ad0[_0x4eaa('0x86')][_0x4eaa('0xa2')];}else if(_0x445ad0['headers'][_0x4eaa('0xa3')]){_0x10e9af=_[_0x4eaa('0xa4')](_0x445ad0['headers']['x-forwarded-for'][_0x4eaa('0xa5')](','));}if(_0x38c21a){var _0x133bca={'ContactId':_0x38c21a['id'],'ChatWebsiteId':_0x445ad0[_0x4eaa('0x52')]['id'],'from':(_0x38c21a['firstName']||'')+'\x20'+(_0x38c21a['lastName']||''),'customerIp':_0x10e9af,'customerPort':_0x445ad0[_0x4eaa('0x86')][_0x4eaa('0xa6')]?_0x445ad0[_0x4eaa('0x86')]['x-real-port']:null,'referer':_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xa7')],'browserName':_0x215749['browser']['name']&&_0x215749['browser']['version']?util[_0x4eaa('0xa8')](_0x4eaa('0xa9'),_0x215749['browser'][_0x4eaa('0x38')],_0x215749['browser'][_0x4eaa('0xaa')]):_0x4eaa('0xab'),'browserVersion':_0x215749[_0x4eaa('0xac')][_0x4eaa('0xaa')]||_0x4eaa('0xab'),'osName':util[_0x4eaa('0xa8')](_0x4eaa('0xa9'),_0x215749['os'][_0x4eaa('0x38')],_0x215749['os'][_0x4eaa('0xaa')]),'osVersion':_0x215749['os'][_0x4eaa('0xaa')],'deviceModel':_0x215749[_0x4eaa('0xad')][_0x4eaa('0x40')]&&_0x215749[_0x4eaa('0xad')][_0x4eaa('0xae')]?util[_0x4eaa('0xa8')](_0x4eaa('0xaf'),_0x215749[_0x4eaa('0xad')]['model'],_0x215749['device']['vendor'],_0x215749['device'][_0x4eaa('0x4e')]):null,'deviceVendor':_0x215749[_0x4eaa('0xad')][_0x4eaa('0xae')],'deviceType':_0x215749[_0x4eaa('0xad')][_0x4eaa('0x4e')],'formData':JSON['stringify'](_0x445ad0[_0x4eaa('0x57')])};var _0x1d7ed2={'ChatWebsiteId':_0x445ad0['params']['id'],'closed':![]};if(_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xb0')]){_0x1d7ed2[_0x4eaa('0xb0')]=_0x445ad0['body'][_0x4eaa('0xb0')];return db[_0x4eaa('0xb1')][_0x4eaa('0x55')]({'where':_0x1d7ed2})[_0x4eaa('0x1c')](function(_0xd91c31){if(_0xd91c31){return[_0xd91c31,![]];}_0x133bca['threadId']=_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xb0')];_0x133bca['externalUrl']=_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xb2')];return db[_0x4eaa('0xb1')][_0x4eaa('0x56')](_0x133bca)['then'](function(_0x24bfe8){return[_0x24bfe8,!![]];});});}_0x1d7ed2[_0x4eaa('0xb3')]=_0x38c21a['id'];if(_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xb4')]&&_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xb4')]['id']){_0x1d7ed2['id']=_0x445ad0[_0x4eaa('0x57')]['interaction']['id'];return db[_0x4eaa('0xb1')][_0x4eaa('0x55')]({'where':_0x1d7ed2})[_0x4eaa('0x1c')](function(_0x1dfe04){if(_0x1dfe04){return[_0x1dfe04,![]];}return db[_0x4eaa('0xb1')][_0x4eaa('0x56')](_0x133bca)[_0x4eaa('0x1c')](function(_0x26166f){return[_0x26166f,!![]];});});}return db[_0x4eaa('0xb1')][_0x4eaa('0x56')](_0x133bca)[_0x4eaa('0x1c')](function(_0x435632){return[_0x435632,!![]];});}})[_0x4eaa('0xb5')](function(_0x172b54,_0xb91ffa){if(_0x172b54){_0x442233=_0xb91ffa;if(!_0xb91ffa){var _0x2b7cfd={'from':(_0x5cf2ca['contact']['firstName']||'')+'\x20'+(_0x5cf2ca[_0x4eaa('0xa0')][_0x4eaa('0xb6')]||'')};if(_0x445ad0[_0x4eaa('0x57')]['threadId']&&_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xb7')]&&_0x445ad0[_0x4eaa('0x57')]['threadId']!=_0x445ad0[_0x4eaa('0x57')][_0x4eaa('0xb7')]){_0x2b7cfd[_0x4eaa('0xb0')]=_0x445ad0['body'][_0x4eaa('0xb7')];}return _0x172b54[_0x4eaa('0x32')](_0x2b7cfd);}else{return _0x172b54;}}})[_0x4eaa('0x1c')](function(_0x494330){_0x5cf2ca[_0x4eaa('0xb4')]=_0x494330[_0x4eaa('0x34')]({'plain':!![]});_0x5cf2ca[_0x4eaa('0xb4')][_0x4eaa('0xb8')]=_0x442233;if(_0x5cf2ca['interaction'][_0x4eaa('0xb8')]){if(_0x5cf2ca[_0x4eaa('0x9d')][_0x4eaa('0xb9')]){_0x5cf2ca[_0x4eaa('0xba')][_0x4eaa('0xbb')]({'id':0x0,'priority':_0x5cf2ca['applications'][_0x4eaa('0x47')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x4eaa('0xbc')});}}return db[_0x4eaa('0xbd')][_0x4eaa('0x56')]({'body':_0x445ad0[_0x4eaa('0x57')]['body'],'ChatWebsiteId':_0x445ad0[_0x4eaa('0x52')]['id'],'ChatInteractionId':_0x494330['id'],'direction':'in','ContactId':_0x5cf2ca[_0x4eaa('0xa0')]['id'],'AttachmentId':_0x445ad0['body'][_0x4eaa('0xbe')]});})[_0x4eaa('0x1c')](function(_0x3a110b){_0x5cf2ca[_0x4eaa('0x23')]=_0x3a110b;if(_0x5cf2ca[_0x4eaa('0xb4')]['UserId']){return db[_0x4eaa('0xbf')]['find']({'attributes':['id',_0x4eaa('0x38')],'where':{'id':_0x5cf2ca[_0x4eaa('0xb4')][_0x4eaa('0xc0')]}})['then'](function(_0x29d4b9){if(_0x29d4b9){_0x5cf2ca[_0x4eaa('0xba')][_0x4eaa('0xc1')]({'id':0x0,'priority':0x0,'app':_0x4eaa('0xc2'),'appdata':_0x29d4b9['name']+','+(_0x5cf2ca[_0x4eaa('0x9d')]['waitForTheAssignedAgent']||0xa),'interval':_0x4eaa('0xbc')});_0x5cf2ca['forcedOwnership']=!![];}return respondWithRpcPromise(_0x4eaa('0xc3'),_0x4eaa('0xc4'),_0x5cf2ca);});}return respondWithRpcPromise(_0x4eaa('0xc3'),_0x4eaa('0xc4'),_0x5cf2ca);})[_0x4eaa('0x1c')](function(_0x1f521b){respondWithRpcPromise(_0x4eaa('0xc5'),'EventManager',{'event':'notify','message':_0x1f521b},client9002);return _0x1f521b;})['then'](respondWithResult(_0x336338,null))[_0x4eaa('0x25')](handleError(_0x336338,null));};exports[_0x4eaa('0xc6')]=function(_0x295da3,_0x3c1f1d,_0x51e716){var _0x5205b3,_0x183931,_0x404755;var _0x1d396c=[];var _0xad78ca=[];var _0x2a2519={};var _0x45fe41=_0x295da3['files']||[];var _0x334457=[];var _0x435f8f;return db['CmContact']['describe']()['then'](function(_0x466c85){if(!_0x466c85){throw new db[(_0x4eaa('0x8a'))][(_0x4eaa('0x8b'))]('no\x20available\x20attributes');}_0xad78ca=_[_0x4eaa('0x8c')](_[_0x4eaa('0x42')](_0x466c85),[_0x4eaa('0x8d'),_0x4eaa('0x8e')]);_0x1d396c=_[_0x4eaa('0x8c')](_[_0x4eaa('0x42')](_0x466c85),[_0x4eaa('0x8d'),_0x4eaa('0x8e'),'CompanyId',_0x4eaa('0x90')]);if(_0x295da3[_0x4eaa('0x57')]['id']){delete _0x295da3[_0x4eaa('0x57')]['id'];}if(_['isNil'](_0x295da3[_0x4eaa('0x57')][_0x4eaa('0x9f')])){throw _0x3c1f1d['status'](0x1f4)[_0x4eaa('0xc7')](new db[(_0x4eaa('0x8a'))][(_0x4eaa('0x8b'))](_0x4eaa('0x91')));}if(_[_0x4eaa('0x77')](_0x295da3[_0x4eaa('0x57')][_0x4eaa('0x57')])||_0x295da3[_0x4eaa('0x57')][_0x4eaa('0x57')]===''){throw _0x3c1f1d['status'](0x1f4)[_0x4eaa('0xc7')](new db[(_0x4eaa('0x8a'))][(_0x4eaa('0x8b'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x4eaa('0x77')](_0x295da3[_0x4eaa('0x57')]['mapKeyOffline'])){throw _0x3c1f1d[_0x4eaa('0x26')](0x1f4)[_0x4eaa('0xc7')](new db[(_0x4eaa('0x8a'))]['ValidationError'](_0x4eaa('0xc8')+_0x1d396c));}if(!_[_0x4eaa('0xc9')](_0x1d396c,_0x295da3[_0x4eaa('0x57')][_0x4eaa('0xca')])){throw _0x3c1f1d[_0x4eaa('0x26')](0x1f4)[_0x4eaa('0xc7')](new db[(_0x4eaa('0x8a'))]['ValidationError'](_0x4eaa('0xcb')+_0x1d396c));}_0x2a2519[_0x295da3['body'][_0x4eaa('0xca')]]=_0x295da3[_0x4eaa('0x57')][_0x4eaa('0x9f')];})[_0x4eaa('0x1c')](function(){return db[_0x4eaa('0x3d')]['find']({'where':{'id':_0x295da3[_0x4eaa('0x52')]['id']},'include':[{'model':db[_0x4eaa('0xcc')],'as':_0x4eaa('0x96')},{'model':db[_0x4eaa('0xcd')],'as':_0x4eaa('0xcd')}]});})[_0x4eaa('0x1c')](handleEntityNotFound(_0x3c1f1d,null))[_0x4eaa('0x1c')](function(_0x289635){if(_0x289635&&_0x289635['List']){_0x183931=_0x289635;var _0x193ee6=_[_0x4eaa('0x16')](_0x295da3[_0x4eaa('0x57')],{'firstName':_0x295da3[_0x4eaa('0x57')]['from'],'phone':_0x295da3[_0x4eaa('0x57')]['from'],'ListId':_0x289635[_0x4eaa('0x90')]});_0x193ee6[_0x295da3['body'][_0x4eaa('0xca')]]=_0x295da3[_0x4eaa('0x57')][_0x4eaa('0x9f')];return db[_0x4eaa('0x89')][_0x4eaa('0xce')]({'where':_0x2a2519,'defaults':_0x193ee6});}})[_0x4eaa('0xb5')](function(_0x193304){if(_0x193304){_0x404755=_0x193304;var _0x4d485c=fs[_0x4eaa('0xcf')](path[_0x4eaa('0x7b')](config[_0x4eaa('0x73')],_0x4eaa('0xd0')),_0x4eaa('0xd1'));var _0x40bea7=ejs['render'](_0x4d485c,{'body':_[_0x4eaa('0xd2')](_0x295da3[_0x4eaa('0x57')][_0x4eaa('0x57')]),'bodyTitle':_0x183931['offlineMessageBody']});return db[_0x4eaa('0xd3')][_0x4eaa('0x56')]({'body':_0x40bea7,'ContactId':_0x193304['id'],'ChatWebsiteId':_0x183931['id']});}})[_0x4eaa('0x1c')](function(_0x264620){_0x435f8f=_0x264620;if(_0x45fe41[_0x4eaa('0x47')]){var _0x383910=_0x45fe41[_0x4eaa('0x3c')](function(_0x2d123e){return{'name':_0x2d123e[_0x4eaa('0xd4')],'basename':_0x2d123e['filename'],'type':_0x2d123e[_0x4eaa('0xd5')],'ChatOfflineMessageId':_0x264620['id']};});_0x334457=_0x383910[_0x4eaa('0x3c')](_0x27660f=>{var _0x4d9d64={'filename':_0x27660f[_0x4eaa('0x38')],'path':path['join'](config[_0x4eaa('0x73')],_0x4eaa('0xd6'),_0x4eaa('0xd7'),_0x4eaa('0xd8'),_0x4eaa('0xd9'),_0x27660f['basename'])};return _0x4d9d64;});if(!_0x183931[_0x4eaa('0xda')]){return db['sequelize'][_0x4eaa('0xdb')](function(_0x5ba555){return db[_0x4eaa('0xdc')][_0x4eaa('0xdd')](_0x383910,{'transaction':_0x5ba555});});}}})[_0x4eaa('0x1c')](function(){if(_0x435f8f){_0x5205b3=_0x435f8f;return db[_0x4eaa('0xcd')][_0x4eaa('0x60')]({'where':{'active':!![]},'include':[{'model':db[_0x4eaa('0xde')],'as':'Smtp','raw':!![]}]});}})[_0x4eaa('0x1c')](function(_0xe9d29){if(_0xe9d29&&_0xe9d29[_0x4eaa('0xdf')]&&_0x183931['forwardOffline']&&_0x183931[_0x4eaa('0xe0')]){var _0x3cc926={'tls':{'rejectUnauthorized':![]}};if(_0xe9d29[_0x4eaa('0xdf')][_0x4eaa('0xe1')]){_0x3cc926['service']=_0xe9d29[_0x4eaa('0xdf')][_0x4eaa('0xe1')];}else{_0x3cc926[_0x4eaa('0xe2')]=_0xe9d29[_0x4eaa('0xdf')][_0x4eaa('0xe2')];_0x3cc926[_0x4eaa('0xe3')]=_0xe9d29[_0x4eaa('0xdf')]['port'];_0x3cc926[_0x4eaa('0xe4')]=_0xe9d29['Smtp']['secure'];}if(_0xe9d29[_0x4eaa('0xdf')]['authentication']){_0x3cc926['auth']={'user':_0xe9d29[_0x4eaa('0xdf')]['user'],'pass':_0xe9d29[_0x4eaa('0xdf')][_0x4eaa('0xe5')]};}return respondWithRpcPromise('SendMail',_0x4eaa('0xe6'),{'account':_0x3cc926,'message':{'from':util[_0x4eaa('0xa8')](_0x4eaa('0xe7'),_0xe9d29[_0x4eaa('0x38')],_0xe9d29[_0x4eaa('0xe8')]||_0xe9d29['Smtp']['user']),'to':_0x183931[_0x4eaa('0xe0')],'subject':_0x183931['offlineMessageSubject'],'html':_0x5205b3[_0x4eaa('0x57')],'attachments':_0x334457}},client9003)['then'](function(){return _0x5205b3;})[_0x4eaa('0x25')](function(_0x438eab){console['error'](_0x438eab);});}})[_0x4eaa('0x1c')](function(){if(_0x183931&&_0x183931[_0x4eaa('0xda')]&&_0x183931['MailAccountId']){var _0x3294db=[];if(_0x45fe41[_0x4eaa('0x47')]){_0x3294db=_0x45fe41[_0x4eaa('0x3c')](function(_0x1344ae){return{'name':_0x1344ae[_0x4eaa('0xd4')],'basename':_0x1344ae[_0x4eaa('0x6d')],'type':_0x1344ae[_0x4eaa('0xd5')],'ChatOfflineMessageId':_0x435f8f['id']};});}var _0x5ebdd6;if(!_['isNil'](_0x183931[_0x4eaa('0xe9')])){var _0x342368=_[_0x4eaa('0x3c')](_0x295da3[_0x4eaa('0x57')],function(_0x16bcab){return _0x16bcab;});var _0x12b5ac=_[_0x4eaa('0xea')](_0x342368)[0x0];var _0xc7bc53=_[_0x4eaa('0xeb')](_0x12b5ac,function(_0x122996){return _0x122996;});_0x5ebdd6=_0xc7bc53[0x1][_0x183931[_0x4eaa('0xe9')]];}var _0x3462c9={'from':_0x404755[_0x4eaa('0xe8')],'firstName':_0x404755[_0x4eaa('0xec')],'lastName':_0x404755[_0x4eaa('0xb6')],'mapKey':'email','message':{'from':_0x404755['email'],'to':_0x183931[_0x4eaa('0xcd')][_0x4eaa('0xe8')],'cc':'','subject':_['isNil'](_0x5ebdd6)?_0x183931[_0x4eaa('0xed')]:_0x5ebdd6,'messageId':'','sentAt':new Date(),'attach':_0x3294db[_0x4eaa('0x47')],'attachments':_0x3294db,'originChannel':'Chat','ChatWebsiteId':_0x183931['id'],'ChatOfflineMessageId':_0x5205b3['id'],'originTo':_0x183931[_0x4eaa('0xcd')][_0x4eaa('0xe8')]},'body':_0x5205b3['body']};var _0x5a824c={'account':{'id':_0x183931[_0x4eaa('0xee')]},'body':_0x3462c9,'log':_0x4eaa('0xef')};return respondWithRpcPromise(_0x4eaa('0xef'),'notifyMail',_0x5a824c,client9001)['then'](function(){return _0x5205b3;})['catch'](function(_0x548fa8){console[_0x4eaa('0x21')](_0x548fa8);});}return;})[_0x4eaa('0x1c')](function(){if(_0x5205b3){return _0x5205b3;}})[_0x4eaa('0x1c')](respondWithResult(_0x3c1f1d,null))['catch'](function(_0x406521){console['error'](_0x4eaa('0x25'),_0x406521);for(var _0x5f43b9 of _0x45fe41){var _0x899012=path['join'](config['root'],_0x4eaa('0xd6'),_0x4eaa('0xd7'),'attachments',_0x4eaa('0xd9'),_0x5f43b9['filename']);fs_extra['remove'](_0x899012)[_0x4eaa('0x25')](function(_0x21f812){console[_0x4eaa('0x21')]('Could\x20not\x20remove\x20attachment\x20file',_0x899012,_0x21f812);});}});};exports[_0x4eaa('0xf0')]=function(_0x463607,_0x55e673,_0x54f0f1){return db[_0x4eaa('0xb1')]['find']({'where':{'id':_0x463607[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x55e673,null))[_0x4eaa('0x1c')](function(_0x3a3c98){if(_0x3a3c98){return _0x3a3c98['addInteraction'](_0x463607[_0x4eaa('0x57')]['ids'],_[_0x4eaa('0xf1')](_0x463607['body'],['ids','id'])||{});}})[_0x4eaa('0x1c')](respondWithResult(_0x55e673,null))['catch'](handleError(_0x55e673,null));};exports[_0x4eaa('0xf2')]=function(_0x356774,_0x5b9b1c,_0x357022){var _0x365479={'raw':![],'where':{}};var _0x4924fd={};var _0x77a108={'count':0x0,'rows':[]};return db[_0x4eaa('0x3d')]['findOne']({'where':{'id':_0x356774['params']['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x5b9b1c,null))['then'](function(_0x2a0349){if(_0x2a0349){_0x4924fd['model']=_['keys'](db[_0x4eaa('0xb1')][_0x4eaa('0x3e')]);_0x4924fd[_0x4eaa('0x41')]=_['keys'](_0x356774['query']);_0x4924fd[_0x4eaa('0x43')]=_[_0x4eaa('0x44')](_0x4924fd[_0x4eaa('0x40')],_0x4924fd[_0x4eaa('0x41')]);_0x365479[_0x4eaa('0x45')]=_['intersection'](_0x4924fd[_0x4eaa('0x40')],qs[_0x4eaa('0x46')](_0x356774[_0x4eaa('0x41')][_0x4eaa('0x46')]));_0x365479[_0x4eaa('0x45')]=_0x365479['attributes']['length']?_0x365479[_0x4eaa('0x45')]:_0x4924fd['model'];if(!_0x356774[_0x4eaa('0x41')][_0x4eaa('0x62')](_0x4eaa('0x48'))){_0x365479[_0x4eaa('0x2b')]=qs[_0x4eaa('0x2b')](_0x356774['query'][_0x4eaa('0x2b')]);_0x365479[_0x4eaa('0x29')]=qs['offset'](_0x356774[_0x4eaa('0x41')][_0x4eaa('0x29')]);}_0x365479[_0x4eaa('0x49')]=qs[_0x4eaa('0x4a')](_0x356774['query'][_0x4eaa('0x4a')]);_0x365479[_0x4eaa('0x4b')]=qs[_0x4eaa('0x43')](_[_0x4eaa('0x63')](_0x356774['query'],_0x4924fd['filters']));_0x365479[_0x4eaa('0x4b')][_0x4eaa('0x5e')]=_0x2a0349['id'];if(_0x356774['query'][_0x4eaa('0x4c')]){_0x365479[_0x4eaa('0x4b')]=_['merge'](_0x365479[_0x4eaa('0x4b')],{'$or':_[_0x4eaa('0x3c')](_0x365479[_0x4eaa('0x45')],function(_0x1236ae){var _0x58d36c={};_0x58d36c[_0x1236ae]={'$like':'%'+_0x356774[_0x4eaa('0x41')]['filter']+'%'};return _0x58d36c;})});}_0x365479=_['merge']({},_0x365479,_0x356774['options']);return db[_0x4eaa('0xb1')][_0x4eaa('0x2c')]({'where':_0x365479[_0x4eaa('0x4b')]})[_0x4eaa('0x1c')](function(_0x4a44e2){_0x77a108[_0x4eaa('0x2c')]=_0x4a44e2;if(_0x356774[_0x4eaa('0x41')][_0x4eaa('0x53')]){_0x365479['include']=[{'model':db[_0x4eaa('0x89')],'as':_0x4eaa('0xf3'),'required':![]},{'model':db[_0x4eaa('0xbf')],'as':_0x4eaa('0xf4'),'attributes':[_0x4eaa('0x38'),_0x4eaa('0xf5'),'internal'],'required':![]},{'model':db[_0x4eaa('0xf6')],'as':_0x4eaa('0xf7'),'attributes':['id','name',_0x4eaa('0xf8')],'where':_0x356774['query']['tag']?{'id':_0x356774[_0x4eaa('0x41')][_0x4eaa('0xf9')]}:undefined,'required':_0x356774[_0x4eaa('0x41')][_0x4eaa('0xf9')]?!![]:![]}];}return db[_0x4eaa('0xb1')][_0x4eaa('0x50')](_0x365479);})[_0x4eaa('0x1c')](function(_0x283855){_0x77a108[_0x4eaa('0x64')]=_0x283855;return _0x77a108;});}})[_0x4eaa('0x1c')](respondWithFilteredResult(_0x5b9b1c,_0x365479))[_0x4eaa('0x25')](handleError(_0x5b9b1c,null));};function iftimePromise(_0x105ddf,_0x3b6a5a){return respondWithRpcPromise(_0x4eaa('0xfa'),_0x4eaa('0xfb'),{'command':_0x3b6a5a[_0x4eaa('0xfc')]?util[_0x4eaa('0xa8')](_0x4eaa('0xfd'),_0x105ddf[_0x4eaa('0xfe')],_0x3b6a5a[_0x4eaa('0xfc')]):util[_0x4eaa('0xa8')](_0x4eaa('0xff'),_0x105ddf[_0x4eaa('0xfe')])},client9002)[_0x4eaa('0x1c')](function(_0x154b30){var _0x24d221=_0x154b30&&_0x154b30['indexOf'](_0x4eaa('0x100'))>=0x0?!![]:![];logger[_0x4eaa('0x1d')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x3b6a5a['id'],_0x105ddf['id'],_0x105ddf[_0x4eaa('0xfe')],_0x24d221?'ONLINE':_0x4eaa('0x101'),_0x3b6a5a['timezone']?_0x3b6a5a[_0x4eaa('0xfc')]:'No\x20timezone');return _0x24d221;})['catch'](function(_0x385992){logger[_0x4eaa('0x21')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x3b6a5a['id'],_0x105ddf['id'],_0x105ddf[_0x4eaa('0xfe')],util['inspect'](_0x385992,{'showHidden':![],'depth':null}),_0x3b6a5a[_0x4eaa('0xfc')]?_0x3b6a5a[_0x4eaa('0xfc')]:_0x4eaa('0x102'));return![];});}exports[_0x4eaa('0xfb')]=function(_0x571fe4,_0x5f5b42,_0x408f82){var _0x42d503=0x0;var _0x5eaa66=0x0;var _0x345fbd=![];var _0x13af7b;var _0x31234a;return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x571fe4[_0x4eaa('0x52')]['id']},'include':[{'model':db[_0x4eaa('0x103')],'as':_0x4eaa('0x103'),'include':[{'model':db['Interval'],'as':_0x4eaa('0x104'),'attributes':['id',_0x4eaa('0xfe')],'raw':!![]}]}]})[_0x4eaa('0x1c')](handleEntityNotFound(_0x5f5b42,null))['then'](function(_0x267211){if(_0x267211){_0x13af7b=_0x267211;return _0x267211[_0x4eaa('0x105')]({'raw':!![]});}})[_0x4eaa('0x1c')](function(_0x1b8e9c){if(_0x13af7b){if(_0x1b8e9c){_0x31234a=_0x1b8e9c;}}return require(_0x4eaa('0x75'))['getLicense']();})[_0x4eaa('0x1c')](function(_0xe0248d){if(_0xe0248d){_0x5eaa66=_0xe0248d[_0x4eaa('0x106')];_0x345fbd=_0xe0248d['custom'];}})['then'](function(){return db[_0x4eaa('0xb1')][_0x4eaa('0x2c')]({'where':{'closed':![]}});})[_0x4eaa('0x1c')](function(_0x47cf50){_0x42d503=_0x47cf50;if(_0x5eaa66&&_0x47cf50>_0x5eaa66){return db[_0x4eaa('0x107')][_0x4eaa('0x60')]({'where':{'id':0x1}})[_0x4eaa('0x1c')](function(_0x5344cb){if(_0x5344cb){_0x5344cb[_0x4eaa('0x108')](_0x4eaa('0x109'));}});}})['then'](function(){if(_0x13af7b[_0x4eaa('0x103')]&&_0x13af7b[_0x4eaa('0x103')][_0x4eaa('0x104')]){var _0x2ee170=[];for(var _0x45f88a=0x0;_0x45f88a<_0x13af7b['Interval'][_0x4eaa('0x104')][_0x4eaa('0x47')];_0x45f88a++){var _0x28db05=_0x13af7b[_0x4eaa('0x103')][_0x4eaa('0x104')][_0x45f88a][_0x4eaa('0x34')]({'plain':!![]});_0x2ee170[_0x4eaa('0xbb')](iftimePromise(_0x28db05,_0x13af7b));}return BPromise[_0x4eaa('0x10a')](_0x2ee170)[_0x4eaa('0x1c')](function(_0x121fac){return _[_0x4eaa('0x10b')](_0x121fac);});}else{return!![];}})[_0x4eaa('0x1c')](function(_0x44f660){var _0x17fc00=fs[_0x4eaa('0xcf')](path[_0x4eaa('0x7b')](config[_0x4eaa('0x73')],_0x4eaa('0x10c')),'utf8');var _0x5e67b9={'remote':_0x13af7b[_0x4eaa('0x10d')],'query':querystring[_0x4eaa('0x20')](_['merge'](_0x13af7b[_0x4eaa('0x34')]({'plain':!![]}),{'customerIp':_0x571fe4[_0x4eaa('0x86')][_0x4eaa('0xa3')]||_0x571fe4[_0x4eaa('0x86')][_0x4eaa('0x10e')]||_0x571fe4[_0x4eaa('0x10f')][_0x4eaa('0x110')]||_0x571fe4['ip'],'referer':_0x571fe4[_0x4eaa('0x86')][_0x4eaa('0xa7')],'openedInteractions':_0x42d503,'maxInteractions':_0x5eaa66,'virtual':_0x345fbd[_0x4eaa('0x106')],'online':_0x44f660,'custom':_0x345fbd}))[_0x4eaa('0x111')](/'/g,'\x5c\x27')};_0x5f5b42[_0x4eaa('0xc7')](ejs[_0x4eaa('0x112')](Mustache[_0x4eaa('0x112')](_0x17fc00,_0x5e67b9),{'proactiveActions':_0x31234a,'alignment':_0x13af7b[_0x4eaa('0x113')],'verticalAlignment':_0x13af7b[_0x4eaa('0x114')],'div_color':_0x13af7b[_0x4eaa('0xf8')],'text_color':_0x13af7b[_0x4eaa('0x115')],'button_color':_0x13af7b[_0x4eaa('0x116')],'background_color':_0x13af7b[_0x4eaa('0x117')]}));})[_0x4eaa('0x25')](handleError(_0x5f5b42,null));};exports[_0x4eaa('0x118')]=function(_0x2be419,_0x3e1063,_0x4ca8d7){return db[_0x4eaa('0x3d')][_0x4eaa('0x60')]({'where':{'id':_0x2be419[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x3e1063,null))['then'](function(_0x34aacb){if(_0x34aacb){return db[_0x4eaa('0x119')][_0x4eaa('0xdb')](function(_0x14a594){return db[_0x4eaa('0x98')][_0x4eaa('0x33')]({'where':{'ChatWebsiteId':_0x2be419['params']['id']},'transaction':_0x14a594})['then'](function(_0x251b91){var _0x5a6468=_[_0x4eaa('0x3c')](_0x2be419[_0x4eaa('0x57')],function(_0x777bf3){_0x777bf3[_0x4eaa('0x5e')]=_0x2be419['params']['id'];return _0x777bf3;});return db['ChatApplication'][_0x4eaa('0xdd')](_0x5a6468,{'transaction':_0x14a594});});})[_0x4eaa('0x1c')](function(){return db['ChatApplication'][_0x4eaa('0x11a')]({'where':{'ChatWebsiteId':_0x2be419['params']['id']},'order':_0x4eaa('0x11b')});});}})[_0x4eaa('0x1c')](respondWithResult(_0x3e1063,null))[_0x4eaa('0x25')](handleError(_0x3e1063,null));};exports[_0x4eaa('0x11c')]=function(_0xc233e6,_0x213459,_0x3eaa8d){var _0x14808e={};var _0x90276f={};var _0x51f885;var _0x16c76a;return db[_0x4eaa('0x3d')][_0x4eaa('0x60')]({'where':{'id':_0xc233e6[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x213459,null))[_0x4eaa('0x1c')](function(_0x709ab1){if(_0x709ab1){_0x51f885=_0x709ab1;_0x90276f[_0x4eaa('0x40')]=_[_0x4eaa('0x42')](db[_0x4eaa('0x98')][_0x4eaa('0x3e')]);_0x90276f['query']=_[_0x4eaa('0x42')](_0xc233e6[_0x4eaa('0x41')]);_0x90276f[_0x4eaa('0x43')]=_['intersection'](_0x90276f[_0x4eaa('0x40')],_0x90276f[_0x4eaa('0x41')]);_0x14808e['attributes']=_[_0x4eaa('0x44')](_0x90276f[_0x4eaa('0x40')],qs['fields'](_0xc233e6[_0x4eaa('0x41')][_0x4eaa('0x46')]));_0x14808e[_0x4eaa('0x45')]=_0x14808e[_0x4eaa('0x45')]['length']?_0x14808e[_0x4eaa('0x45')]:_0x90276f[_0x4eaa('0x40')];_0x14808e[_0x4eaa('0x49')]=qs['sort'](_0xc233e6['query'][_0x4eaa('0x4a')]);_0x14808e[_0x4eaa('0x4b')]=qs['filters'](_[_0x4eaa('0x63')](_0xc233e6[_0x4eaa('0x41')],_0x90276f[_0x4eaa('0x43')]));if(_0xc233e6[_0x4eaa('0x41')][_0x4eaa('0x4c')]){_0x14808e[_0x4eaa('0x4b')]=_['merge'](_0x14808e[_0x4eaa('0x4b')],{'$or':_[_0x4eaa('0x3c')](_0x14808e['attributes'],function(_0x3471f0){var _0x37adbe={};_0x37adbe[_0x3471f0]={'$like':'%'+_0xc233e6['query']['filter']+'%'};return _0x37adbe;})});}_0x14808e=_['merge']({},_0x14808e,_0xc233e6['options']);return _0x51f885[_0x4eaa('0x11c')](_0x14808e);}})['then'](function(_0x128b07){if(_0x128b07){_0x16c76a=_0x128b07[_0x4eaa('0x47')];if(!_0xc233e6['query'][_0x4eaa('0x62')](_0x4eaa('0x48'))){_0x14808e[_0x4eaa('0x2b')]=qs[_0x4eaa('0x2b')](_0xc233e6[_0x4eaa('0x41')][_0x4eaa('0x2b')]);_0x14808e[_0x4eaa('0x29')]=qs[_0x4eaa('0x29')](_0xc233e6[_0x4eaa('0x41')]['offset']);}return _0x51f885[_0x4eaa('0x11c')](_0x14808e);}})[_0x4eaa('0x1c')](function(_0x4e5bd0){if(_0x4e5bd0){return _0x4e5bd0?{'count':_0x16c76a,'rows':_0x4e5bd0}:null;}})['then'](respondWithResult(_0x213459,null))[_0x4eaa('0x25')](handleError(_0x213459,null));};exports['addProactiveActions']=function(_0x24e36b,_0x435344,_0x39e507){return db[_0x4eaa('0x11d')][_0x4eaa('0x55')]({'where':{'id':_0x24e36b['params']['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x435344,null))[_0x4eaa('0x1c')](function(_0x42a1ac){if(_0x42a1ac){return _0x42a1ac[_0x4eaa('0x11e')](_0x24e36b['body']['ids'],_[_0x4eaa('0xf1')](_0x24e36b[_0x4eaa('0x57')],[_0x4eaa('0x66'),'id'])||{});}})[_0x4eaa('0x1c')](respondWithResult(_0x435344,null))['catch'](handleError(_0x435344,null));};exports[_0x4eaa('0x105')]=function(_0xfa39ca,_0x1be716,_0x8389c9){var _0xe06895={};var _0x42e255={};var _0x35e7d1;var _0x324514;return db['ChatWebsite']['findOne']({'where':{'id':_0xfa39ca[_0x4eaa('0x52')]['id']}})['then'](handleEntityNotFound(_0x1be716,null))[_0x4eaa('0x1c')](function(_0xad7660){if(_0xad7660){_0x35e7d1=_0xad7660;_0x42e255[_0x4eaa('0x40')]=_[_0x4eaa('0x42')](db[_0x4eaa('0x11f')][_0x4eaa('0x3e')]);_0x42e255['query']=_[_0x4eaa('0x42')](_0xfa39ca[_0x4eaa('0x41')]);_0x42e255[_0x4eaa('0x43')]=_['intersection'](_0x42e255['model'],_0x42e255[_0x4eaa('0x41')]);_0xe06895[_0x4eaa('0x45')]=_[_0x4eaa('0x44')](_0x42e255[_0x4eaa('0x40')],qs[_0x4eaa('0x46')](_0xfa39ca['query'][_0x4eaa('0x46')]));_0xe06895[_0x4eaa('0x45')]=_0xe06895[_0x4eaa('0x45')]['length']?_0xe06895[_0x4eaa('0x45')]:_0x42e255[_0x4eaa('0x40')];_0xe06895[_0x4eaa('0x49')]=qs[_0x4eaa('0x4a')](_0xfa39ca[_0x4eaa('0x41')]['sort']);_0xe06895[_0x4eaa('0x4b')]=qs[_0x4eaa('0x43')](_[_0x4eaa('0x63')](_0xfa39ca[_0x4eaa('0x41')],_0x42e255[_0x4eaa('0x43')]));if(_0xfa39ca[_0x4eaa('0x41')][_0x4eaa('0x4c')]){_0xe06895['where']=_['merge'](_0xe06895['where'],{'$or':_[_0x4eaa('0x3c')](_0xe06895[_0x4eaa('0x45')],function(_0x1a7065){var _0x362920={};_0x362920[_0x1a7065]={'$like':'%'+_0xfa39ca[_0x4eaa('0x41')][_0x4eaa('0x4c')]+'%'};return _0x362920;})});}_0xe06895=_['merge']({},_0xe06895,_0xfa39ca['options']);return _0x35e7d1[_0x4eaa('0x105')](_0xe06895);}})[_0x4eaa('0x1c')](function(_0x5c4ed2){if(_0x5c4ed2){_0x324514=_0x5c4ed2[_0x4eaa('0x47')];if(!_0xfa39ca[_0x4eaa('0x41')]['hasOwnProperty'](_0x4eaa('0x48'))){_0xe06895[_0x4eaa('0x2b')]=qs['limit'](_0xfa39ca[_0x4eaa('0x41')][_0x4eaa('0x2b')]);_0xe06895['offset']=qs[_0x4eaa('0x29')](_0xfa39ca[_0x4eaa('0x41')][_0x4eaa('0x29')]);}return _0x35e7d1['getProactiveActions'](_0xe06895);}})[_0x4eaa('0x1c')](function(_0x541ced){if(_0x541ced){return _0x541ced?{'count':_0x324514,'rows':_0x541ced}:null;}})['then'](respondWithResult(_0x1be716,null))[_0x4eaa('0x25')](handleError(_0x1be716,null));};exports['getFields']=function(_0x5dc7cd,_0x3e4805,_0x446b8b){var _0xd2e423=_0x5dc7cd[_0x4eaa('0x41')][_0x4eaa('0x120')]===_0x4eaa('0x121')?_0x4eaa('0x122'):_0x4eaa('0x123');return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'attributes':['id',_0xd2e423],'where':{'id':_0x5dc7cd['params']['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x3e4805,null))[_0x4eaa('0x1c')](function(_0x2d5341){if(_0x2d5341){var _0x52ca5d=_0x2d5341[_0xd2e423];var _0x1d3781=_0x52ca5d&&_0x52ca5d[_0x4eaa('0x124')]?_0x52ca5d[_0x4eaa('0x124')]:[];_0x3e4805[_0x4eaa('0xc7')]({'fromKey':_['isNil'](_0x52ca5d[_0x4eaa('0x125')])?undefined:_0x52ca5d[_0x4eaa('0x125')],'count':_0x1d3781['length'],'rows':_0x1d3781});}})['catch'](handleError(_0x3e4805,null));};exports[_0x4eaa('0x126')]=function(_0xc24a26,_0x3ea19d,_0x4f4de4){var _0x38f030={'raw':![],'where':{}};var _0x410c07={};var _0x1ef82f={'count':0x0,'rows':[]};return db[_0x4eaa('0x3d')][_0x4eaa('0x60')]({'where':{'id':_0xc24a26[_0x4eaa('0x52')]['id']}})['then'](handleEntityNotFound(_0x3ea19d,null))[_0x4eaa('0x1c')](function(_0x1b62d2){if(_0x1b62d2){_0x410c07['model']=_[_0x4eaa('0x42')](db[_0x4eaa('0xd3')][_0x4eaa('0x3e')]);_0x410c07[_0x4eaa('0x41')]=_[_0x4eaa('0x42')](_0xc24a26[_0x4eaa('0x41')]);_0x410c07[_0x4eaa('0x43')]=_[_0x4eaa('0x44')](_0x410c07[_0x4eaa('0x40')],_0x410c07['query']);_0x38f030[_0x4eaa('0x45')]=_[_0x4eaa('0x44')](_0x410c07[_0x4eaa('0x40')],qs[_0x4eaa('0x46')](_0xc24a26[_0x4eaa('0x41')][_0x4eaa('0x46')]));_0x38f030[_0x4eaa('0x45')]=_0x38f030[_0x4eaa('0x45')]['length']?_0x38f030['attributes']:_0x410c07[_0x4eaa('0x40')];if(!_0xc24a26['query'][_0x4eaa('0x62')](_0x4eaa('0x48'))){_0x38f030[_0x4eaa('0x2b')]=qs[_0x4eaa('0x2b')](_0xc24a26[_0x4eaa('0x41')][_0x4eaa('0x2b')]);_0x38f030[_0x4eaa('0x29')]=qs[_0x4eaa('0x29')](_0xc24a26[_0x4eaa('0x41')][_0x4eaa('0x29')]);}_0x38f030['order']=qs['sort'](_0xc24a26[_0x4eaa('0x41')]['sort']);_0x38f030[_0x4eaa('0x4b')]=qs[_0x4eaa('0x43')](_[_0x4eaa('0x63')](_0xc24a26[_0x4eaa('0x41')],_0x410c07[_0x4eaa('0x43')]));_0x38f030[_0x4eaa('0x4b')][_0x4eaa('0x5e')]=_0x1b62d2['id'];if(_0xc24a26['query'][_0x4eaa('0x4c')]){_0x38f030[_0x4eaa('0x4b')]=_[_0x4eaa('0x4d')](_0x38f030['where'],{'$or':_[_0x4eaa('0x3c')](_0x38f030[_0x4eaa('0x45')],function(_0x4e4193){var _0x143f30={};_0x143f30[_0x4e4193]={'$like':'%'+_0xc24a26[_0x4eaa('0x41')][_0x4eaa('0x4c')]+'%'};return _0x143f30;})});}_0x38f030=_[_0x4eaa('0x4d')]({},_0x38f030,_0xc24a26['options']);return db[_0x4eaa('0xd3')]['count']({'where':_0x38f030['where']})[_0x4eaa('0x1c')](function(_0x5e3540){_0x1ef82f[_0x4eaa('0x2c')]=_0x5e3540;if(_0xc24a26[_0x4eaa('0x41')][_0x4eaa('0x53')]){_0x38f030[_0x4eaa('0x4f')]=[{'all':!![]}];}else{_0x38f030['include']=[{'model':db[_0x4eaa('0x89')],'as':_0x4eaa('0xf3'),'required':![]},{'model':db['Attachment'],'as':_0x4eaa('0x127'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x38f030);})['then'](function(_0x5d9e7e){_0x1ef82f[_0x4eaa('0x64')]=_0x5d9e7e;return _0x1ef82f;});}})[_0x4eaa('0x1c')](respondWithFilteredResult(_0x3ea19d,_0x38f030))[_0x4eaa('0x25')](handleError(_0x3ea19d,null));};exports['addAgents']=function(_0xbda118,_0x5ab320,_0x220f26){return db[_0x4eaa('0x3d')]['find']({'where':{'id':_0xbda118[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x5ab320,null))[_0x4eaa('0x1c')](function(_0x31a3b4){if(_0x31a3b4){return _0x31a3b4['addAgents'](_0xbda118['body'][_0x4eaa('0x66')],_['omit'](_0xbda118[_0x4eaa('0x57')],[_0x4eaa('0x66'),'id'])||{})['spread'](function(_0x2f4ef7){for(var _0x47aabc=0x0;_0x47aabc<_0xbda118[_0x4eaa('0x57')]['ids'][_0x4eaa('0x47')];_0x47aabc+=0x1){socket[_0x4eaa('0x128')](_0x4eaa('0x129'),{'UserId':Number(_0xbda118[_0x4eaa('0x57')][_0x4eaa('0x66')][_0x47aabc]),'ChatWebsiteId':Number(_0xbda118['params']['id'])});}return _0x2f4ef7;});}})[_0x4eaa('0x1c')](respondWithResult(_0x5ab320,null))[_0x4eaa('0x25')](handleError(_0x5ab320,null));};exports[_0x4eaa('0x12a')]=function(_0x2c9827,_0x48e6d1,_0x51461d){return db[_0x4eaa('0x3d')][_0x4eaa('0x55')]({'where':{'id':_0x2c9827[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x48e6d1,null))[_0x4eaa('0x1c')](function(_0x37fe17){if(_0x37fe17){return _0x37fe17[_0x4eaa('0x12a')](_0x2c9827[_0x4eaa('0x41')]['ids'])[_0x4eaa('0x1c')](function(){if(_[_0x4eaa('0x12b')](_0x2c9827[_0x4eaa('0x41')][_0x4eaa('0x66')])){for(var _0x461290=0x0;_0x461290<_0x2c9827['query']['ids'][_0x4eaa('0x47')];_0x461290+=0x1){socket[_0x4eaa('0x128')](_0x4eaa('0x12c'),{'UserId':Number(_0x2c9827[_0x4eaa('0x41')]['ids'][_0x461290]),'ChatWebsiteId':Number(_0x2c9827[_0x4eaa('0x52')]['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x2c9827[_0x4eaa('0x41')][_0x4eaa('0x66')]),'ChatWebsiteId':Number(_0x2c9827[_0x4eaa('0x52')]['id'])});}});}})[_0x4eaa('0x1c')](respondWithStatusCode(_0x48e6d1,null))[_0x4eaa('0x25')](handleError(_0x48e6d1,null));};exports[_0x4eaa('0x12d')]=function(_0x5ef9a2,_0x1c04b4,_0x1b4774){var _0x40a3ff={};var _0x5a3527={};var _0x26213a;var _0x58638e;return db[_0x4eaa('0x3d')]['findOne']({'where':{'id':_0x5ef9a2[_0x4eaa('0x52')]['id']}})[_0x4eaa('0x1c')](handleEntityNotFound(_0x1c04b4,null))[_0x4eaa('0x1c')](function(_0x532d70){if(_0x532d70){_0x26213a=_0x532d70;_0x5a3527['model']=_['keys'](db['User'][_0x4eaa('0x3e')]);_0x5a3527['query']=_[_0x4eaa('0x42')](_0x5ef9a2[_0x4eaa('0x41')]);_0x5a3527[_0x4eaa('0x43')]=_[_0x4eaa('0x44')](_0x5a3527[_0x4eaa('0x40')],_0x5a3527['query']);_0x40a3ff[_0x4eaa('0x45')]=_[_0x4eaa('0x44')](_0x5a3527['model'],qs[_0x4eaa('0x46')](_0x5ef9a2[_0x4eaa('0x41')]['fields']));_0x40a3ff[_0x4eaa('0x45')]=_0x40a3ff[_0x4eaa('0x45')][_0x4eaa('0x47')]?_0x40a3ff[_0x4eaa('0x45')]:_0x5a3527[_0x4eaa('0x40')];_0x40a3ff[_0x4eaa('0x49')]=qs[_0x4eaa('0x4a')](_0x5ef9a2[_0x4eaa('0x41')][_0x4eaa('0x4a')]);_0x40a3ff[_0x4eaa('0x4b')]=qs[_0x4eaa('0x43')](_[_0x4eaa('0x63')](_0x5ef9a2[_0x4eaa('0x41')],_0x5a3527[_0x4eaa('0x43')]));if(_0x5ef9a2[_0x4eaa('0x41')][_0x4eaa('0x4c')]){_0x40a3ff[_0x4eaa('0x4b')]=_[_0x4eaa('0x4d')](_0x40a3ff['where'],{'$or':_['map'](_0x40a3ff[_0x4eaa('0x45')],function(_0xddce4){var _0x413ad9={};_0x413ad9[_0xddce4]={'$like':'%'+_0x5ef9a2[_0x4eaa('0x41')][_0x4eaa('0x4c')]+'%'};return _0x413ad9;})});}_0x40a3ff=_[_0x4eaa('0x4d')]({},_0x40a3ff,_0x5ef9a2[_0x4eaa('0x54')]);return _0x26213a[_0x4eaa('0x12d')](_0x40a3ff);}})[_0x4eaa('0x1c')](function(_0x1c8198){if(_0x1c8198){_0x58638e=_0x1c8198[_0x4eaa('0x47')];if(!_0x5ef9a2[_0x4eaa('0x41')][_0x4eaa('0x62')]('nolimit')){_0x40a3ff[_0x4eaa('0x2b')]=qs[_0x4eaa('0x2b')](_0x5ef9a2[_0x4eaa('0x41')][_0x4eaa('0x2b')]);_0x40a3ff[_0x4eaa('0x29')]=qs['offset'](_0x5ef9a2['query'][_0x4eaa('0x29')]);}return _0x26213a[_0x4eaa('0x12d')](_0x40a3ff);}})[_0x4eaa('0x1c')](function(_0x160f9b){if(_0x160f9b){return _0x160f9b?{'count':_0x58638e,'rows':_0x160f9b}:null;}})[_0x4eaa('0x1c')](respondWithResult(_0x1c04b4,null))[_0x4eaa('0x25')](handleError(_0x1c04b4,null));};
\ No newline at end of file
+var _0xb1b0=['close','unmanaged','ChatMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','files','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','server','offline-chat','basename','transaction','Attachment','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction','MailAccountId','mimetype','subjectOffline','mapValues','firstName','Chat','NotifyMailAccount','notifyMail','attachments','remove','addInteraction','getInteractions','Contact','fullname','Tag','Tags','color','tag','Command','getSnippet','timezone','interval','iftime\x20%s','indexOf','ONLINE','OFFLINE','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','No\x20timezone','Interval','getProactiveActions','getLicense','virtual','License','increment','chatLicenseExceeded','Intervals','all','some','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','alignment','textColor','backgroundColor','addApplications','sequelize','findAndCountAll','getApplications','chatProactiveAction','ChatProactiveAction','online','false','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','omit','emit','userChatWebsite:save','isArray','userChatWebsite:remove','getAgents','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','client','http','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','limit','count','offset','apply','reject','save','update','then','destroy','get','UserProfileResource','end','name','send','index','Pause','mandatoryDispositionPause','ChatWebsite','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','options','include','findAll','rows','show','params','rawAttributes','includeAll','merge','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatWebsites','UserProfileSection','userProfileId','autoAssociation','body','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','addLogo','file','filename','addAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','root','sitepic','../../config/license/util','join','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','isNil','agentAvatar','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','user-agent','chat','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','ChatApplication','Applications','List','account','applications','list','orderBy','asc','contact','cf-connecting-ip','x-forwarded-for','first','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','lastName','messageId','created','autoclose','push'];(function(_0x4aaa74,_0x160997){var _0x149204=function(_0x49bbfe){while(--_0x49bbfe){_0x4aaa74['push'](_0x4aaa74['shift']());}};_0x149204(++_0x160997);}(_0xb1b0,0x71));var _0x0b1b=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb1b0[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0b1b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0b1b('0x1'));var rp=require(_0x0b1b('0x2'));var moment=require('moment');var BPromise=require(_0x0b1b('0x3'));var Mustache=require('mustache');var util=require(_0x0b1b('0x4'));var path=require(_0x0b1b('0x5'));var sox=require(_0x0b1b('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0b1b('0x7'));var squel=require(_0x0b1b('0x8'));var crypto=require(_0x0b1b('0x9'));var jsforce=require(_0x0b1b('0xa'));var deskjs=require(_0x0b1b('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0b1b('0xc'));var Papa=require(_0x0b1b('0xd'));var Redis=require(_0x0b1b('0xe'));var authService=require(_0x0b1b('0xf'));var qs=require(_0x0b1b('0x10'));var as=require(_0x0b1b('0x11'));var hardwareService=require(_0x0b1b('0x12'));var logger=require(_0x0b1b('0x13'))(_0x0b1b('0x14'));var utils=require(_0x0b1b('0x15'));var config=require(_0x0b1b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x0b1b('0x17'))['db'];config[_0x0b1b('0x18')]=_[_0x0b1b('0x19')](config[_0x0b1b('0x18')],{'host':_0x0b1b('0x1a'),'port':0x18eb});var socket=require(_0x0b1b('0x1b'))(new Redis(config[_0x0b1b('0x18')]));require(_0x0b1b('0x1c'))[_0x0b1b('0x1d')](socket);var jayson=require(_0x0b1b('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x0b1b('0x1f')][_0x0b1b('0x20')]({'port':0x232a});var client9003=jayson[_0x0b1b('0x1f')][_0x0b1b('0x20')]({'port':0x232b});var client9001=jayson[_0x0b1b('0x1f')][_0x0b1b('0x20')]({'port':0x2329});function respondWithRpcPromise(_0x3c3e3c,_0x3560d0,_0x4337ae,_0x5c7aeb){return new BPromise(function(_0x101b5b,_0x4b960f){var _0x2a31d3=_0x5c7aeb||client;return _0x2a31d3[_0x0b1b('0x21')](_0x3c3e3c,_0x4337ae)['then'](function(_0x16512b){logger[_0x0b1b('0x22')](_0x0b1b('0x23'),_0x3560d0,_0x0b1b('0x24'));logger[_0x0b1b('0x25')](_0x0b1b('0x26'),_0x3560d0,_0x0b1b('0x24'),JSON['stringify'](_0x16512b));if(_0x16512b[_0x0b1b('0x27')]){if(_0x16512b['error'][_0x0b1b('0x28')]===0x1f4){logger[_0x0b1b('0x27')](_0x0b1b('0x23'),_0x3560d0,_0x16512b['error'][_0x0b1b('0x29')]);return _0x4b960f(_0x16512b[_0x0b1b('0x27')][_0x0b1b('0x29')]);}logger['error'](_0x0b1b('0x23'),_0x3560d0,_0x16512b[_0x0b1b('0x27')][_0x0b1b('0x29')]);return _0x101b5b(_0x16512b[_0x0b1b('0x27')][_0x0b1b('0x29')]);}else{logger[_0x0b1b('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x3560d0,'request\x20sent');_0x101b5b(_0x16512b[_0x0b1b('0x2a')][_0x0b1b('0x29')]);}})[_0x0b1b('0x2b')](function(_0x5767e1){logger[_0x0b1b('0x27')]('ChatWebsite,\x20%s,\x20%s',_0x3560d0,_0x5767e1);_0x4b960f(_0x5767e1);});});}function respondWithStatusCode(_0x3fb910,_0x213bf2){_0x213bf2=_0x213bf2||0xcc;return function(_0x3ae0ec){if(_0x3ae0ec){return _0x3fb910[_0x0b1b('0x2c')](_0x213bf2);}return _0x3fb910[_0x0b1b('0x2d')](_0x213bf2)['end']();};}function respondWithResult(_0x34562a,_0x23a78a){_0x23a78a=_0x23a78a||0xc8;return function(_0x158c3e){if(_0x158c3e){return _0x34562a[_0x0b1b('0x2d')](_0x23a78a)[_0x0b1b('0x2e')](_0x158c3e);}};}function respondWithFilteredResult(_0x243cba,_0x1afcf8){return function(_0x2b0bfd){if(_0x2b0bfd){var _0x2bf0fc=typeof _0x1afcf8['offset']==='undefined'&&typeof _0x1afcf8[_0x0b1b('0x2f')]==='undefined';var _0x165752=_0x2b0bfd[_0x0b1b('0x30')];var _0x24fcb7=_0x2bf0fc?0x0:_0x1afcf8[_0x0b1b('0x31')];var _0x4366cb=_0x2bf0fc?_0x2b0bfd[_0x0b1b('0x30')]:_0x1afcf8[_0x0b1b('0x31')]+_0x1afcf8[_0x0b1b('0x2f')];var _0x52bbc2;if(_0x4366cb>=_0x165752){_0x4366cb=_0x165752;_0x52bbc2=0xc8;}else{_0x52bbc2=0xce;}_0x243cba[_0x0b1b('0x2d')](_0x52bbc2);return _0x243cba['set']('Content-Range',_0x24fcb7+'-'+_0x4366cb+'/'+_0x165752)[_0x0b1b('0x2e')](_0x2b0bfd);}return null;};}function patchUpdates(_0x132611){return function(_0x1151fe){try{jsonpatch[_0x0b1b('0x32')](_0x1151fe,_0x132611,!![]);}catch(_0x50b41d){return BPromise[_0x0b1b('0x33')](_0x50b41d);}return _0x1151fe[_0x0b1b('0x34')]();};}function saveUpdates(_0x1a9e76,_0x4222c0){return function(_0x2de948){if(_0x2de948){return _0x2de948[_0x0b1b('0x35')](_0x1a9e76)[_0x0b1b('0x36')](function(_0x58afc0){return _0x58afc0;});}return null;};}function removeEntity(_0x1ce4ac,_0x1f03f0){return function(_0x182fdb){if(_0x182fdb){return _0x182fdb[_0x0b1b('0x37')]()[_0x0b1b('0x36')](function(){var _0x54a307=_0x182fdb[_0x0b1b('0x38')]({'plain':!![]});var _0x2b3f9b='ChatWebsites';return db[_0x0b1b('0x39')][_0x0b1b('0x37')]({'where':{'type':_0x2b3f9b,'resourceId':_0x54a307['id']}})['then'](function(){return _0x182fdb;});})[_0x0b1b('0x36')](function(){_0x1ce4ac[_0x0b1b('0x2d')](0xcc)[_0x0b1b('0x3a')]();});}};}function handleEntityNotFound(_0x2a7050,_0x119432){return function(_0x1be23b){if(!_0x1be23b){_0x2a7050[_0x0b1b('0x2c')](0x194);}return _0x1be23b;};}function handleError(_0x1d8820,_0x13efbd){_0x13efbd=_0x13efbd||0x1f4;return function(_0x4c1a70){logger[_0x0b1b('0x27')](_0x4c1a70['stack']);if(_0x4c1a70[_0x0b1b('0x3b')]){delete _0x4c1a70[_0x0b1b('0x3b')];}_0x1d8820[_0x0b1b('0x2d')](_0x13efbd)[_0x0b1b('0x3c')](_0x4c1a70);};}exports[_0x0b1b('0x3d')]=function(_0x2e51f6,_0x43edd1){var _0x3d5213={'include':[{'model':db[_0x0b1b('0x3e')],'as':_0x0b1b('0x3f')}]},_0x5d1931={},_0x2d0349={'count':0x0,'rows':[]};var _0x2d7cde=_['map'](db[_0x0b1b('0x40')]['rawAttributes'],function(_0x59870e){return{'name':_0x59870e[_0x0b1b('0x41')],'type':_0x59870e[_0x0b1b('0x42')][_0x0b1b('0x43')]};});_0x5d1931[_0x0b1b('0x44')]=_[_0x0b1b('0x45')](_0x2d7cde,_0x0b1b('0x3b'));_0x5d1931[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x2e51f6[_0x0b1b('0x46')]);_0x5d1931['filters']=_[_0x0b1b('0x48')](_0x5d1931[_0x0b1b('0x44')],_0x5d1931[_0x0b1b('0x46')]);_0x3d5213[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x5d1931[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x2e51f6['query']['fields']));_0x3d5213[_0x0b1b('0x49')]=_0x3d5213[_0x0b1b('0x49')][_0x0b1b('0x4b')]?_0x3d5213['attributes']:_0x5d1931[_0x0b1b('0x44')];if(!_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x3d5213[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0x3d5213['offset']=qs[_0x0b1b('0x31')](_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x31')]);}_0x3d5213['order']=qs[_0x0b1b('0x4e')](_0x2e51f6['query'][_0x0b1b('0x4e')]);_0x3d5213[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x2e51f6['query'],_0x5d1931[_0x0b1b('0x50')]),_0x2d7cde);if(_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x52')]){_0x3d5213[_0x0b1b('0x4f')]=_['merge'](_0x3d5213[_0x0b1b('0x4f')],{'$or':_['map'](_0x2d7cde,function(_0x2224f2){if(_0x2224f2[_0x0b1b('0x42')]!=='VIRTUAL'){var _0x4c169={};_0x4c169[_0x2224f2[_0x0b1b('0x3b')]]={'$like':'%'+_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x4c169;}})});}_0x3d5213=_['merge']({},_0x3d5213,_0x2e51f6[_0x0b1b('0x53')]);var _0x108e37={'where':_0x3d5213['where']};return db[_0x0b1b('0x40')]['count'](_0x108e37)[_0x0b1b('0x36')](function(_0x1c9e4){_0x2d0349['count']=_0x1c9e4;if(_0x2e51f6[_0x0b1b('0x46')]['includeAll']){_0x3d5213[_0x0b1b('0x54')]=[{'all':!![]}];}return db[_0x0b1b('0x40')][_0x0b1b('0x55')](_0x3d5213);})['then'](function(_0x1467ef){_0x2d0349[_0x0b1b('0x56')]=_0x1467ef;return _0x2d0349;})['then'](respondWithFilteredResult(_0x43edd1,_0x3d5213))['catch'](handleError(_0x43edd1,null));};exports[_0x0b1b('0x57')]=function(_0x2da48d,_0x2f688a){var _0x37fe09={'raw':![],'where':{'id':_0x2da48d[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x3e')],'as':_0x0b1b('0x3f')}]},_0x8eafe4={};_0x8eafe4[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0x40')][_0x0b1b('0x59')]);_0x8eafe4[_0x0b1b('0x46')]=_['keys'](_0x2da48d[_0x0b1b('0x46')]);_0x8eafe4['filters']=_[_0x0b1b('0x48')](_0x8eafe4[_0x0b1b('0x44')],_0x8eafe4[_0x0b1b('0x46')]);_0x37fe09[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x8eafe4[_0x0b1b('0x44')],qs['fields'](_0x2da48d['query'][_0x0b1b('0x4a')]));_0x37fe09[_0x0b1b('0x49')]=_0x37fe09['attributes']['length']?_0x37fe09[_0x0b1b('0x49')]:_0x8eafe4[_0x0b1b('0x44')];if(_0x2da48d[_0x0b1b('0x46')][_0x0b1b('0x5a')]){_0x37fe09[_0x0b1b('0x54')]=[{'all':!![]}];}_0x37fe09=_[_0x0b1b('0x5b')]({},_0x37fe09,_0x2da48d['options']);return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x37fe09)[_0x0b1b('0x36')](handleEntityNotFound(_0x2f688a,null))[_0x0b1b('0x36')](respondWithResult(_0x2f688a,null))[_0x0b1b('0x2b')](handleError(_0x2f688a,null));};exports[_0x0b1b('0x5d')]=function(_0x2a1c59,_0x10a027){return db[_0x0b1b('0x40')][_0x0b1b('0x5d')](_0x2a1c59['body'],{})[_0x0b1b('0x36')](function(_0xd8f9c0){var _0x59f075=_0x2a1c59[_0x0b1b('0x5e')][_0x0b1b('0x38')]({'plain':!![]});if(!_0x59f075)throw new Error(_0x0b1b('0x5f'));if(_0x59f075[_0x0b1b('0x60')]===_0x0b1b('0x5e')){var _0x2d7f5e=_0xd8f9c0[_0x0b1b('0x38')]({'plain':!![]});var _0x3a241b=_0x0b1b('0x61');return db[_0x0b1b('0x62')][_0x0b1b('0x5c')]({'where':{'name':_0x3a241b,'userProfileId':_0x59f075[_0x0b1b('0x63')]},'raw':!![]})[_0x0b1b('0x36')](function(_0x4ef4da){if(_0x4ef4da&&_0x4ef4da[_0x0b1b('0x64')]===0x0){return db[_0x0b1b('0x39')][_0x0b1b('0x5d')]({'name':_0x2d7f5e['name'],'resourceId':_0x2d7f5e['id'],'type':_0x4ef4da[_0x0b1b('0x3b')],'sectionId':_0x4ef4da['id']},{})[_0x0b1b('0x36')](function(){return _0xd8f9c0;});}else{return _0xd8f9c0;}})[_0x0b1b('0x2b')](function(_0x192b7d){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x192b7d);throw _0x192b7d;});}return _0xd8f9c0;})[_0x0b1b('0x36')](respondWithResult(_0x10a027,0xc9))['catch'](handleError(_0x10a027,null));};exports['update']=function(_0x2383ab,_0x1f2b41){if(_0x2383ab[_0x0b1b('0x65')]['id']){delete _0x2383ab[_0x0b1b('0x65')]['id'];}return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x2383ab['params']['id']},'include':[{'model':db[_0x0b1b('0x3e')],'as':_0x0b1b('0x3f')}]})[_0x0b1b('0x36')](handleEntityNotFound(_0x1f2b41,null))[_0x0b1b('0x36')](saveUpdates(_0x2383ab[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x1f2b41,null))[_0x0b1b('0x2b')](handleError(_0x1f2b41,null));};exports['destroy']=function(_0x34d930,_0x227c7b){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x34d930[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x227c7b,null))[_0x0b1b('0x36')](removeEntity(_0x227c7b,null))[_0x0b1b('0x2b')](handleError(_0x227c7b,null));};exports[_0x0b1b('0x66')]=function(_0x15d4fb,_0x4733dd){return db['ChatWebsite'][_0x0b1b('0x66')]()['then'](respondWithResult(_0x4733dd,null))[_0x0b1b('0x2b')](handleError(_0x4733dd,null));};exports[_0x0b1b('0x67')]=function(_0x1e4392,_0x367969,_0x221406){if(_0x1e4392[_0x0b1b('0x65')]['id']){delete _0x1e4392[_0x0b1b('0x65')]['id'];}return db['ChatWebsite'][_0x0b1b('0x5c')]({'where':{'id':_0x1e4392[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x367969,null))[_0x0b1b('0x36')](function(_0x556ad6){if(_0x556ad6){_0x1e4392[_0x0b1b('0x65')][_0x0b1b('0x68')]=_0x556ad6['id'];return db[_0x0b1b('0x69')]['create'](_0x1e4392[_0x0b1b('0x65')]);}})[_0x0b1b('0x36')](respondWithResult(_0x367969,null))[_0x0b1b('0x2b')](handleError(_0x367969,null));};exports[_0x0b1b('0x6a')]=function(_0x47b694,_0x57b091,_0x359266){var _0x5b2738={'raw':![],'where':{}};var _0x28f428={};var _0x1fcc30={'count':0x0,'rows':[]};return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x47b694['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x57b091,null))[_0x0b1b('0x36')](function(_0x2c837a){if(_0x2c837a){_0x28f428[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db['Disposition']['rawAttributes']);_0x28f428['query']=_[_0x0b1b('0x47')](_0x47b694['query']);_0x28f428[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x28f428[_0x0b1b('0x44')],_0x28f428[_0x0b1b('0x46')]);_0x5b2738['attributes']=_[_0x0b1b('0x48')](_0x28f428[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x4a')]));_0x5b2738[_0x0b1b('0x49')]=_0x5b2738[_0x0b1b('0x49')]['length']?_0x5b2738[_0x0b1b('0x49')]:_0x28f428['model'];if(!_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x5b2738['limit']=qs['limit'](_0x47b694[_0x0b1b('0x46')]['limit']);_0x5b2738[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x47b694['query'][_0x0b1b('0x31')]);}_0x5b2738[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x4e')]);_0x5b2738[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x47b694[_0x0b1b('0x46')],_0x28f428[_0x0b1b('0x50')]));_0x5b2738['where']['ChatWebsiteId']=_0x2c837a['id'];if(_0x47b694['query'][_0x0b1b('0x52')]){_0x5b2738[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x5b2738[_0x0b1b('0x4f')],{'$or':_['map'](_0x5b2738[_0x0b1b('0x49')],function(_0x4dae5c){var _0x28c247={};_0x28c247[_0x4dae5c]={'$like':'%'+_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x28c247;})});}_0x5b2738=_[_0x0b1b('0x5b')]({},_0x5b2738,_0x47b694['options']);return db[_0x0b1b('0x69')][_0x0b1b('0x30')]({'where':_0x5b2738['where']})['then'](function(_0x3ed6d9){_0x1fcc30[_0x0b1b('0x30')]=_0x3ed6d9;if(_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x5a')]){_0x5b2738[_0x0b1b('0x54')]=[{'all':!![]}];}return db[_0x0b1b('0x69')][_0x0b1b('0x55')](_0x5b2738);})[_0x0b1b('0x36')](function(_0x3be9cd){_0x1fcc30[_0x0b1b('0x56')]=_0x3be9cd;return _0x1fcc30;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x57b091,_0x5b2738))[_0x0b1b('0x2b')](handleError(_0x57b091,null));};exports[_0x0b1b('0x6d')]=function(_0x5c89ef,_0x6df0f9,_0x500e1d){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x5c89ef[_0x0b1b('0x58')]['id']}})['then'](handleEntityNotFound(_0x6df0f9,null))[_0x0b1b('0x36')](function(_0x21aaf2){if(_0x21aaf2){return _0x21aaf2['removeDispositions'](_0x5c89ef[_0x0b1b('0x46')][_0x0b1b('0x6e')]);}})[_0x0b1b('0x36')](respondWithStatusCode(_0x6df0f9,null))[_0x0b1b('0x2b')](handleError(_0x6df0f9,null));};exports[_0x0b1b('0x6f')]=function(_0x499c6d,_0x48c4c8,_0x5a5311){if(_0x499c6d['body']['id']){delete _0x499c6d[_0x0b1b('0x65')]['id'];}return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x499c6d[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x48c4c8,null))[_0x0b1b('0x36')](function(_0x5525e4){if(_0x5525e4){_0x499c6d[_0x0b1b('0x65')][_0x0b1b('0x68')]=_0x5525e4['id'];return db[_0x0b1b('0x70')][_0x0b1b('0x5d')](_0x499c6d[_0x0b1b('0x65')]);}})[_0x0b1b('0x36')](respondWithResult(_0x48c4c8,null))[_0x0b1b('0x2b')](handleError(_0x48c4c8,null));};exports['getAnswers']=function(_0x344dcf,_0x1325ba,_0x298175){var _0x2a0308={'raw':![],'where':{}};var _0x4f19d2={};var _0x211e40={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x0b1b('0x6b')]({'where':{'id':_0x344dcf[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x1325ba,null))['then'](function(_0x2348a8){if(_0x2348a8){_0x4f19d2['model']=_[_0x0b1b('0x47')](db[_0x0b1b('0x70')][_0x0b1b('0x59')]);_0x4f19d2[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x344dcf[_0x0b1b('0x46')]);_0x4f19d2[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x4f19d2[_0x0b1b('0x44')],_0x4f19d2[_0x0b1b('0x46')]);_0x2a0308[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x4f19d2['model'],qs[_0x0b1b('0x4a')](_0x344dcf['query'][_0x0b1b('0x4a')]));_0x2a0308[_0x0b1b('0x49')]=_0x2a0308[_0x0b1b('0x49')][_0x0b1b('0x4b')]?_0x2a0308[_0x0b1b('0x49')]:_0x4f19d2[_0x0b1b('0x44')];if(!_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x2a0308['limit']=qs['limit'](_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0x2a0308[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x344dcf[_0x0b1b('0x46')]['offset']);}_0x2a0308[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x344dcf[_0x0b1b('0x46')]['sort']);_0x2a0308[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x344dcf[_0x0b1b('0x46')],_0x4f19d2[_0x0b1b('0x50')]));_0x2a0308[_0x0b1b('0x4f')][_0x0b1b('0x68')]=_0x2348a8['id'];if(_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x52')]){_0x2a0308['where']=_[_0x0b1b('0x5b')](_0x2a0308['where'],{'$or':_[_0x0b1b('0x45')](_0x2a0308['attributes'],function(_0x15af8c){var _0x4f5fb1={};_0x4f5fb1[_0x15af8c]={'$like':'%'+_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x4f5fb1;})});}_0x2a0308=_['merge']({},_0x2a0308,_0x344dcf['options']);return db[_0x0b1b('0x70')][_0x0b1b('0x30')]({'where':_0x2a0308['where']})['then'](function(_0x4d7c22){_0x211e40['count']=_0x4d7c22;if(_0x344dcf[_0x0b1b('0x46')]['includeAll']){_0x2a0308['include']=[{'all':!![]}];}return db['CannedAnswer'][_0x0b1b('0x55')](_0x2a0308);})['then'](function(_0x59191a){_0x211e40[_0x0b1b('0x56')]=_0x59191a;return _0x211e40;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x1325ba,_0x2a0308))['catch'](handleError(_0x1325ba,null));};exports[_0x0b1b('0x71')]=function(_0x3bf151,_0x26c72d,_0x1efdfc){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x3bf151['params']['id']}})['then'](handleEntityNotFound(_0x26c72d,null))[_0x0b1b('0x36')](function(_0x9fd126){if(_0x9fd126){return _0x9fd126[_0x0b1b('0x71')](_0x3bf151[_0x0b1b('0x46')][_0x0b1b('0x6e')]);}})['then'](respondWithStatusCode(_0x26c72d,null))[_0x0b1b('0x2b')](handleError(_0x26c72d,null));};exports[_0x0b1b('0x72')]=function(_0x21b432,_0x1b63e3,_0x4a019f){_0x21b432['body']['sitepic']=_0x21b432[_0x0b1b('0x73')][_0x0b1b('0x74')];return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x21b432[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x1b63e3,null))[_0x0b1b('0x36')](saveUpdates(_0x21b432[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x1b63e3,null))['catch'](handleError(_0x1b63e3,null));};exports[_0x0b1b('0x75')]=function(_0x47abac,_0x2c0890,_0x1cf033){_0x47abac[_0x0b1b('0x65')]['agentAvatar']=_0x47abac[_0x0b1b('0x73')][_0x0b1b('0x74')];return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x47abac[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x2c0890,null))['then'](saveUpdates(_0x47abac[_0x0b1b('0x65')],null))['then'](respondWithResult(_0x2c0890,null))[_0x0b1b('0x2b')](handleError(_0x2c0890,null));};exports[_0x0b1b('0x76')]=function(_0x4acc5f,_0x3b6400,_0x449616){_0x4acc5f[_0x0b1b('0x65')][_0x0b1b('0x77')]=_0x4acc5f[_0x0b1b('0x73')][_0x0b1b('0x74')];return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x4acc5f['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x3b6400,null))[_0x0b1b('0x36')](saveUpdates(_0x4acc5f[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x3b6400,null))[_0x0b1b('0x2b')](handleError(_0x3b6400,null));};exports['addSystemAvatar']=function(_0x125172,_0x162f38,_0x3ec7c5){_0x125172[_0x0b1b('0x65')][_0x0b1b('0x78')]=_0x125172[_0x0b1b('0x73')][_0x0b1b('0x74')];return db['ChatWebsite']['find']({'where':{'id':_0x125172[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x162f38,null))[_0x0b1b('0x36')](saveUpdates(_0x125172[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x162f38,null))['catch'](handleError(_0x162f38,null));};exports[_0x0b1b('0x79')]=function(_0x251d3c,_0x1b027e,_0x469b04){var _0x52eb06=path['join'](config[_0x0b1b('0x7a')],'server/files/images/logos/default_logo.svg');var _0x349be3={'where':{'id':_0x251d3c[_0x0b1b('0x58')]['id']},'attributes':['id',_0x0b1b('0x7b')],'raw':!![]};var _0x5e09f2=![];return require(_0x0b1b('0x7c'))['getLicense']()[_0x0b1b('0x36')](function(_0x4ed714){if(_0x4ed714){_0x5e09f2=_0x4ed714['custom'];}})[_0x0b1b('0x36')](function(){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x349be3);})['then'](handleEntityNotFound(_0x1b027e,null))['then'](function(_0x279084){if(_0x279084){if(!_['isNil'](_0x279084[_0x0b1b('0x7b')])){if(fs['existsSync'](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x7e'),_0x279084[_0x0b1b('0x7b')]))&&_0x5e09f2){_0x52eb06=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server/files/images/logos/',_0x279084[_0x0b1b('0x7b')]);}}return _0x1b027e[_0x0b1b('0x7f')](_0x52eb06);}})[_0x0b1b('0x2b')](handleError(_0x1b027e,null));};exports['getAvatar']=function(_0x2f0e97,_0x1642f5,_0x3dcd93){var _0x4b5dd6=path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0x80'));var _0x10694b={'where':{'id':_0x2f0e97[_0x0b1b('0x58')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x10694b)['then'](handleEntityNotFound(_0x1642f5,null))[_0x0b1b('0x36')](function(_0x12eafb){if(_0x12eafb){if(!_[_0x0b1b('0x81')](_0x12eafb[_0x0b1b('0x82')])){if(fs[_0x0b1b('0x83')](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server/files/images/avatars/',_0x12eafb[_0x0b1b('0x82')]))){_0x4b5dd6=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x84'),_0x12eafb['agentAvatar']);}}return _0x1642f5[_0x0b1b('0x7f')](_0x4b5dd6);}})[_0x0b1b('0x2b')](handleError(_0x1642f5,null));};exports[_0x0b1b('0x85')]=function(_0x15b602,_0x4ce14b,_0x5af630){var _0x4fd175=path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0x86'));var _0x41b657={'where':{'id':_0x15b602[_0x0b1b('0x58')]['id']},'attributes':['id',_0x0b1b('0x77'),_0x0b1b('0x87')],'raw':!![]};return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x41b657)[_0x0b1b('0x36')](handleEntityNotFound(_0x4ce14b,null))['then'](function(_0x42e9b6){if(_0x42e9b6){if(!_['isNil'](_0x42e9b6['customerAvatar'])){if(fs['existsSync'](path[_0x0b1b('0x7d')](config['root'],'server/files/images/avatars/',_0x42e9b6[_0x0b1b('0x77')]))&&_0x42e9b6['showCustomerAvatar']){_0x4fd175=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x84'),_0x42e9b6[_0x0b1b('0x77')]);}}return _0x4ce14b['download'](_0x4fd175);}})['catch'](handleError(_0x4ce14b,null));};exports[_0x0b1b('0x88')]=function(_0x59cf63,_0x356939,_0x37a242){var _0x4dde8c=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x89'));var _0x4fc9aa={'where':{'id':_0x59cf63[_0x0b1b('0x58')]['id']},'attributes':['id',_0x0b1b('0x78')],'raw':!![]};return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x4fc9aa)[_0x0b1b('0x36')](handleEntityNotFound(_0x356939,null))[_0x0b1b('0x36')](function(_0x210d32){if(_0x210d32){if(!_['isNil'](_0x210d32['systemAvatar'])){if(fs[_0x0b1b('0x83')](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server/files/images/avatars/',_0x210d32[_0x0b1b('0x78')]))){_0x4dde8c=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x84'),_0x210d32[_0x0b1b('0x78')]);}}return _0x356939[_0x0b1b('0x7f')](_0x4dde8c);}})[_0x0b1b('0x2b')](handleError(_0x356939,null));};exports[_0x0b1b('0x8a')]=function(_0x3b31aa,_0x57446d,_0x3d302c){var _0xd5b623=require(_0x0b1b('0x8b'));var _0x5b3e42=new _0xd5b623();var _0x409a19=_0x5b3e42['setUA'](_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0x8d')])['getResult']();var _0x253ce8={'body':_0x3b31aa[_0x0b1b('0x65')],'channel':_0x0b1b('0x8e')};var _0x50d112=[];var _0x1f19b3=[];var _0x2e0a8a={};var _0x514544=![];return db['CmContact'][_0x0b1b('0x66')]()['then'](function(_0x2b28b1){if(!_0x2b28b1){throw new db['Sequelize']['ValidationError'](_0x0b1b('0x8f'));}_0x50d112=_[_0x0b1b('0x90')](_['keys'](_0x2b28b1),[_0x0b1b('0x91'),_0x0b1b('0x92')]);_0x1f19b3=_[_0x0b1b('0x90')](_[_0x0b1b('0x47')](_0x2b28b1),[_0x0b1b('0x91'),_0x0b1b('0x92'),_0x0b1b('0x93'),_0x0b1b('0x94')]);if(_0x3b31aa[_0x0b1b('0x65')]['id']){delete _0x3b31aa[_0x0b1b('0x65')]['id'];}if(_[_0x0b1b('0x81')](_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x95')])){throw new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x98'));}if(_[_0x0b1b('0x81')](_0x3b31aa[_0x0b1b('0x65')]['body'])||_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x65')]===''){throw new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x99'));}if(_[_0x0b1b('0x81')](_0x3b31aa['body']['mapKey'])){throw new db[(_0x0b1b('0x96'))]['ValidationError'](_0x0b1b('0x9a')+_0x1f19b3);}if(!_[_0x0b1b('0x9b')](_0x1f19b3,_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x9c')])){throw new db[(_0x0b1b('0x96'))]['ValidationError'](_0x0b1b('0x9d')+_0x1f19b3);}_0x2e0a8a[_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x9c')]]=_0x3b31aa['body']['from'];})[_0x0b1b('0x36')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x3b31aa[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x9e')],'as':'List','include':[{'model':db[_0x0b1b('0x9f')],'as':_0x0b1b('0xa0'),'where':_0x2e0a8a,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x0b1b('0xa1')],'as':_0x0b1b('0xa2')}]});})['then'](handleEntityNotFound(_0x57446d,null))[_0x0b1b('0x36')](function(_0x1d6902){if(_0x1d6902&&_0x1d6902[_0x0b1b('0xa3')]){_0x253ce8[_0x0b1b('0xa4')]=_0x1d6902;_0x253ce8[_0x0b1b('0xa5')]=_0x1d6902[_0x0b1b('0xa2')];_0x253ce8[_0x0b1b('0xa6')]=_0x1d6902[_0x0b1b('0xa3')];_0x253ce8[_0x0b1b('0xa5')]=_[_0x0b1b('0xa7')](_0x253ce8['applications'],['priority'],[_0x0b1b('0xa8')]);if(_0x253ce8[_0x0b1b('0xa4')]['Applications']){delete _0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xa2')];}if(_0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xa3')]&&_0x253ce8[_0x0b1b('0xa4')]['List'][_0x0b1b('0xa0')][_0x0b1b('0x4b')]){return _0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xa3')][_0x0b1b('0xa0')][0x0];}var _0x3c92bd=_['defaults'](_0x3b31aa['body'],{'firstName':_0x3b31aa[_0x0b1b('0x65')]['from'],'ListId':_0x1d6902[_0x0b1b('0x94')]});_0x3c92bd[_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x9c')]]=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x95')];return db[_0x0b1b('0x9f')][_0x0b1b('0x5d')](_0x3c92bd,{'fields':_0x50d112,'raw':!![]});}})[_0x0b1b('0x36')](handleEntityNotFound(_0x57446d,null))[_0x0b1b('0x36')](function(_0x1a5869){_0x253ce8[_0x0b1b('0xa9')]=_0x1a5869;var _0x14b21f=_0x3b31aa['body']['customerIp'];if(_0x3b31aa[_0x0b1b('0x8c')]['cf-connecting-ip']){_0x14b21f=_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xaa')];}else if(_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xab')]){_0x14b21f=_[_0x0b1b('0xac')](_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xab')]['split'](','));}if(_0x1a5869){var _0x2826ed={'ContactId':_0x1a5869['id'],'ChatWebsiteId':_0x3b31aa[_0x0b1b('0x58')]['id'],'from':(_0x1a5869['firstName']||'')+'\x20'+(_0x1a5869['lastName']||''),'customerIp':_0x14b21f,'customerPort':_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xad')]?_0x3b31aa[_0x0b1b('0x8c')]['x-real-port']:null,'referer':_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xae')],'browserName':_0x409a19[_0x0b1b('0xaf')]['name']&&_0x409a19[_0x0b1b('0xaf')][_0x0b1b('0xb0')]?util[_0x0b1b('0xb1')](_0x0b1b('0xb2'),_0x409a19[_0x0b1b('0xaf')]['name'],_0x409a19['browser'][_0x0b1b('0xb0')]):_0x0b1b('0xb3'),'browserVersion':_0x409a19['browser']['version']||'unknown','osName':util[_0x0b1b('0xb1')](_0x0b1b('0xb2'),_0x409a19['os'][_0x0b1b('0x3b')],_0x409a19['os']['version']),'osVersion':_0x409a19['os'][_0x0b1b('0xb0')],'deviceModel':_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0x44')]&&_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0xb5')]?util['format'](_0x0b1b('0xb6'),_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0x44')],_0x409a19['device'][_0x0b1b('0xb5')],_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0x42')]):null,'deviceVendor':_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0xb5')],'deviceType':_0x409a19['device'][_0x0b1b('0x42')],'formData':JSON['stringify'](_0x3b31aa[_0x0b1b('0x65')])};var _0x4d843a={'ChatWebsiteId':_0x3b31aa[_0x0b1b('0x58')]['id'],'closed':![]};if(_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')]){_0x4d843a['threadId']=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')];return db['ChatInteraction']['find']({'where':_0x4d843a})['then'](function(_0xbe1c92){if(_0xbe1c92){return[_0xbe1c92,![]];}_0x2826ed[_0x0b1b('0xb7')]=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')];_0x2826ed['externalUrl']=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb8')];return db[_0x0b1b('0xb9')]['create'](_0x2826ed)[_0x0b1b('0x36')](function(_0x3901f7){return[_0x3901f7,!![]];});});}_0x4d843a[_0x0b1b('0xba')]=_0x1a5869['id'];if(_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbb')]&&_0x3b31aa['body']['interaction']['id']){_0x4d843a['id']=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbb')]['id'];return db[_0x0b1b('0xb9')]['find']({'where':_0x4d843a})[_0x0b1b('0x36')](function(_0x4441b5){if(_0x4441b5){return[_0x4441b5,![]];}return db[_0x0b1b('0xb9')]['create'](_0x2826ed)[_0x0b1b('0x36')](function(_0x28db65){return[_0x28db65,!![]];});});}return db[_0x0b1b('0xb9')][_0x0b1b('0x5d')](_0x2826ed)[_0x0b1b('0x36')](function(_0x1572b5){return[_0x1572b5,!![]];});}})[_0x0b1b('0xbc')](function(_0x1f7447,_0x274051){if(_0x1f7447){_0x514544=_0x274051;if(!_0x274051){var _0xeb1e46={'from':(_0x253ce8[_0x0b1b('0xa9')]['firstName']||'')+'\x20'+(_0x253ce8[_0x0b1b('0xa9')][_0x0b1b('0xbd')]||'')};if(_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')]&&_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbe')]&&_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')]!=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbe')]){_0xeb1e46[_0x0b1b('0xb7')]=_0x3b31aa['body'][_0x0b1b('0xbe')];}return _0x1f7447[_0x0b1b('0x35')](_0xeb1e46);}else{return _0x1f7447;}}})[_0x0b1b('0x36')](function(_0x17ac2f){_0x253ce8[_0x0b1b('0xbb')]=_0x17ac2f[_0x0b1b('0x38')]({'plain':!![]});_0x253ce8[_0x0b1b('0xbb')][_0x0b1b('0xbf')]=_0x514544;if(_0x253ce8[_0x0b1b('0xbb')]['created']){if(_0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xc0')]){_0x253ce8[_0x0b1b('0xa5')][_0x0b1b('0xc1')]({'id':0x0,'priority':_0x253ce8[_0x0b1b('0xa5')][_0x0b1b('0x4b')]+0x1,'app':_0x0b1b('0xc2'),'appdata':_0x0b1b('0xc3'),'interval':'*,*,*,*'});}}return db[_0x0b1b('0xc4')][_0x0b1b('0x5d')]({'body':_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x65')],'ChatWebsiteId':_0x3b31aa['params']['id'],'ChatInteractionId':_0x17ac2f['id'],'direction':'in','ContactId':_0x253ce8['contact']['id'],'AttachmentId':_0x3b31aa['body'][_0x0b1b('0xc5')]});})[_0x0b1b('0x36')](function(_0x261135){_0x253ce8[_0x0b1b('0x29')]=_0x261135;if(_0x253ce8[_0x0b1b('0xbb')][_0x0b1b('0xc6')]){return db[_0x0b1b('0xc7')][_0x0b1b('0x5c')]({'attributes':['id',_0x0b1b('0x3b')],'where':{'id':_0x253ce8[_0x0b1b('0xbb')][_0x0b1b('0xc6')]}})['then'](function(_0x386c60){if(_0x386c60){_0x253ce8['applications'][_0x0b1b('0xc8')]({'id':0x0,'priority':0x0,'app':_0x0b1b('0xc9'),'appdata':_0x386c60['name']+','+(_0x253ce8[_0x0b1b('0xa4')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0x253ce8[_0x0b1b('0xca')]=!![];}return respondWithRpcPromise(_0x0b1b('0xcb'),_0x0b1b('0xcc'),_0x253ce8);});}return respondWithRpcPromise('Start',_0x0b1b('0xcc'),_0x253ce8);})[_0x0b1b('0x36')](function(_0x2a653d){respondWithRpcPromise(_0x0b1b('0xcd'),_0x0b1b('0xcd'),{'event':'notify','message':_0x2a653d},client9002);return _0x2a653d;})[_0x0b1b('0x36')](respondWithResult(_0x57446d,null))['catch'](handleError(_0x57446d,null));};exports['offline']=function(_0x53fbe9,_0x5ba0ba,_0x22f269){var _0x4908ab,_0x380cf7,_0x5757ad;var _0xda690c=[];var _0x390cde=[];var _0x127fff={};var _0x357713=_0x53fbe9[_0x0b1b('0xce')]||[];var _0x39d754=[];var _0x5e024d;return db[_0x0b1b('0x9f')][_0x0b1b('0x66')]()['then'](function(_0x70edee){if(!_0x70edee){throw new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x8f'));}_0x390cde=_['difference'](_[_0x0b1b('0x47')](_0x70edee),['createdAt',_0x0b1b('0x92')]);_0xda690c=_[_0x0b1b('0x90')](_[_0x0b1b('0x47')](_0x70edee),[_0x0b1b('0x91'),_0x0b1b('0x92'),_0x0b1b('0x93'),_0x0b1b('0x94')]);if(_0x53fbe9[_0x0b1b('0x65')]['id']){delete _0x53fbe9[_0x0b1b('0x65')]['id'];}if(_['isNil'](_0x53fbe9[_0x0b1b('0x65')]['from'])){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)['send'](new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x98')));}if(_[_0x0b1b('0x81')](_0x53fbe9['body']['body'])||_0x53fbe9['body']['body']===''){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)[_0x0b1b('0x3c')](new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x0b1b('0x81')](_0x53fbe9['body']['mapKeyOffline'])){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)[_0x0b1b('0x3c')](new db['Sequelize'][(_0x0b1b('0x97'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xda690c));}if(!_[_0x0b1b('0x9b')](_0xda690c,_0x53fbe9[_0x0b1b('0x65')]['mapKeyOffline'])){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)[_0x0b1b('0x3c')](new db['Sequelize']['ValidationError'](_0x0b1b('0xcf')+_0xda690c));}_0x127fff[_0x53fbe9['body'][_0x0b1b('0xd0')]]=_0x53fbe9[_0x0b1b('0x65')]['from'];})[_0x0b1b('0x36')](function(){return db['ChatWebsite'][_0x0b1b('0x5c')]({'where':{'id':_0x53fbe9[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x9e')],'as':'List'},{'model':db['MailAccount'],'as':_0x0b1b('0xd1')}]});})[_0x0b1b('0x36')](handleEntityNotFound(_0x5ba0ba,null))[_0x0b1b('0x36')](function(_0x4df2d3){if(_0x4df2d3&&_0x4df2d3[_0x0b1b('0xa3')]){_0x380cf7=_0x4df2d3;var _0x1f3fc5=_['defaults'](_0x53fbe9[_0x0b1b('0x65')],{'firstName':_0x53fbe9[_0x0b1b('0x65')]['from'],'phone':_0x53fbe9[_0x0b1b('0x65')][_0x0b1b('0x95')],'ListId':_0x4df2d3[_0x0b1b('0x94')]});_0x1f3fc5[_0x53fbe9[_0x0b1b('0x65')][_0x0b1b('0xd0')]]=_0x53fbe9['body'][_0x0b1b('0x95')];return db[_0x0b1b('0x9f')][_0x0b1b('0xd2')]({'where':_0x127fff,'defaults':_0x1f3fc5});}})[_0x0b1b('0xbc')](function(_0x19a89e){if(_0x19a89e){_0x5757ad=_0x19a89e;var _0x6e40f5=fs[_0x0b1b('0xd3')](path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0xd4')),_0x0b1b('0xd5'));var _0x426ec7=ejs[_0x0b1b('0xd6')](_0x6e40f5,{'body':_[_0x0b1b('0xd7')](_0x53fbe9['body'][_0x0b1b('0x65')]),'bodyTitle':_0x380cf7[_0x0b1b('0xd8')]});return db[_0x0b1b('0xd9')][_0x0b1b('0x5d')]({'body':_0x426ec7,'ContactId':_0x19a89e['id'],'ChatWebsiteId':_0x380cf7['id']});}})[_0x0b1b('0x36')](function(_0x585f06){_0x5e024d=_0x585f06;if(_0x357713[_0x0b1b('0x4b')]){var _0x3311b3=_0x357713[_0x0b1b('0x45')](function(_0x4b74f9){return{'name':_0x4b74f9[_0x0b1b('0xda')],'basename':_0x4b74f9[_0x0b1b('0x74')],'type':_0x4b74f9['mimetype'],'ChatOfflineMessageId':_0x585f06['id']};});_0x39d754=_0x3311b3['map'](_0x1c0a4f=>{var _0x2bad54={'filename':_0x1c0a4f[_0x0b1b('0x3b')],'path':path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0xdb'),_0x0b1b('0xce'),'attachments',_0x0b1b('0xdc'),_0x1c0a4f[_0x0b1b('0xdd')])};return _0x2bad54;});if(!_0x380cf7['openNewInteraction']){return db['sequelize'][_0x0b1b('0xde')](function(_0x3f5a85){return db[_0x0b1b('0xdf')][_0x0b1b('0xe0')](_0x3311b3,{'transaction':_0x3f5a85});});}}})[_0x0b1b('0x36')](function(){if(_0x5e024d){_0x4908ab=_0x5e024d;return db[_0x0b1b('0xd1')][_0x0b1b('0x6b')]({'where':{'active':!![]},'include':[{'model':db[_0x0b1b('0xe1')],'as':'Smtp','raw':!![]}]});}})['then'](function(_0x3733e0){if(_0x3733e0&&_0x3733e0[_0x0b1b('0xe2')]&&_0x380cf7[_0x0b1b('0xe3')]&&_0x380cf7[_0x0b1b('0xe4')]){var _0xcb35d4={'tls':{'rejectUnauthorized':![]}};if(_0x3733e0[_0x0b1b('0xe2')]['service']){_0xcb35d4[_0x0b1b('0xe5')]=_0x3733e0['Smtp'][_0x0b1b('0xe5')];}else{_0xcb35d4[_0x0b1b('0xe6')]=_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0xe6')];_0xcb35d4['port']=_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0xe7')];_0xcb35d4[_0x0b1b('0xe8')]=_0x3733e0['Smtp'][_0x0b1b('0xe8')];}if(_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0xe9')]){_0xcb35d4[_0x0b1b('0xea')]={'user':_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0x5e')],'pass':_0x3733e0[_0x0b1b('0xe2')]['pass']};}return respondWithRpcPromise('SendMail',_0x0b1b('0xeb'),{'account':_0xcb35d4,'message':{'from':util[_0x0b1b('0xb1')](_0x0b1b('0xec'),_0x3733e0[_0x0b1b('0x3b')],_0x3733e0[_0x0b1b('0xed')]||_0x3733e0['Smtp'][_0x0b1b('0x5e')]),'to':_0x380cf7[_0x0b1b('0xe4')],'subject':_0x380cf7[_0x0b1b('0xee')],'html':_0x4908ab[_0x0b1b('0x65')],'attachments':_0x39d754}},client9003)['then'](function(){return _0x4908ab;})['catch'](function(_0x448bf3){console[_0x0b1b('0x27')](_0x448bf3);});}})['then'](function(){if(_0x380cf7&&_0x380cf7[_0x0b1b('0xef')]&&_0x380cf7[_0x0b1b('0xf0')]){var _0x40510f=[];if(_0x357713[_0x0b1b('0x4b')]){_0x40510f=_0x357713[_0x0b1b('0x45')](function(_0x4291b6){return{'name':_0x4291b6[_0x0b1b('0xda')],'basename':_0x4291b6[_0x0b1b('0x74')],'type':_0x4291b6[_0x0b1b('0xf1')],'ChatOfflineMessageId':_0x5e024d['id']};});}var _0x59f63a;if(!_[_0x0b1b('0x81')](_0x380cf7[_0x0b1b('0xf2')])){var _0xa15b14=_[_0x0b1b('0x45')](_0x53fbe9[_0x0b1b('0x65')],function(_0x1195f5){return _0x1195f5;});var _0x421574=_['toPairsIn'](_0xa15b14)[0x0];var _0x446893=_[_0x0b1b('0xf3')](_0x421574,function(_0x203048){return _0x203048;});_0x59f63a=_0x446893[0x1][_0x380cf7[_0x0b1b('0xf2')]];}var _0x1f8650={'from':_0x5757ad[_0x0b1b('0xed')],'firstName':_0x5757ad[_0x0b1b('0xf4')],'lastName':_0x5757ad['lastName'],'mapKey':_0x0b1b('0xed'),'message':{'from':_0x5757ad[_0x0b1b('0xed')],'to':_0x380cf7[_0x0b1b('0xd1')][_0x0b1b('0xed')],'cc':'','subject':_['isNil'](_0x59f63a)?_0x380cf7[_0x0b1b('0xee')]:_0x59f63a,'messageId':'','sentAt':new Date(),'attach':_0x40510f[_0x0b1b('0x4b')],'attachments':_0x40510f,'originChannel':_0x0b1b('0xf5'),'ChatWebsiteId':_0x380cf7['id'],'ChatOfflineMessageId':_0x4908ab['id'],'originTo':_0x380cf7[_0x0b1b('0xd1')][_0x0b1b('0xed')]},'body':_0x4908ab[_0x0b1b('0x65')]};var _0x5ff85c={'account':{'id':_0x380cf7[_0x0b1b('0xf0')]},'body':_0x1f8650,'log':_0x0b1b('0xf6')};return respondWithRpcPromise(_0x0b1b('0xf6'),_0x0b1b('0xf7'),_0x5ff85c,client9001)[_0x0b1b('0x36')](function(){return _0x4908ab;})[_0x0b1b('0x2b')](function(_0x47e50d){console[_0x0b1b('0x27')](_0x47e50d);});}return;})['then'](function(){if(_0x4908ab){return _0x4908ab;}})[_0x0b1b('0x36')](respondWithResult(_0x5ba0ba,null))['catch'](function(_0x280f55){console[_0x0b1b('0x27')](_0x0b1b('0x2b'),_0x280f55);for(var _0x2c0d76 of _0x357713){var _0x30cdb4=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server',_0x0b1b('0xce'),_0x0b1b('0xf8'),'offline-chat',_0x2c0d76[_0x0b1b('0x74')]);fs_extra[_0x0b1b('0xf9')](_0x30cdb4)[_0x0b1b('0x2b')](function(_0x2f228b){console['error']('Could\x20not\x20remove\x20attachment\x20file',_0x30cdb4,_0x2f228b);});}});};exports['addInteraction']=function(_0x5a0841,_0x22001a,_0x23fb02){return db[_0x0b1b('0xb9')][_0x0b1b('0x5c')]({'where':{'id':_0x5a0841[_0x0b1b('0x58')]['id']}})['then'](handleEntityNotFound(_0x22001a,null))['then'](function(_0x1bc726){if(_0x1bc726){return _0x1bc726[_0x0b1b('0xfa')](_0x5a0841[_0x0b1b('0x65')][_0x0b1b('0x6e')],_['omit'](_0x5a0841[_0x0b1b('0x65')],['ids','id'])||{});}})[_0x0b1b('0x36')](respondWithResult(_0x22001a,null))[_0x0b1b('0x2b')](handleError(_0x22001a,null));};exports[_0x0b1b('0xfb')]=function(_0x1c64ca,_0x5ef392,_0x407170){var _0x12459c={'raw':![],'where':{}};var _0x278c46={};var _0x419678={'count':0x0,'rows':[]};return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x1c64ca[_0x0b1b('0x58')]['id']}})['then'](handleEntityNotFound(_0x5ef392,null))['then'](function(_0xaf0e37){if(_0xaf0e37){_0x278c46[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0xb9')]['rawAttributes']);_0x278c46[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x1c64ca[_0x0b1b('0x46')]);_0x278c46['filters']=_[_0x0b1b('0x48')](_0x278c46[_0x0b1b('0x44')],_0x278c46[_0x0b1b('0x46')]);_0x12459c[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x278c46[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x1c64ca['query'][_0x0b1b('0x4a')]));_0x12459c[_0x0b1b('0x49')]=_0x12459c[_0x0b1b('0x49')][_0x0b1b('0x4b')]?_0x12459c[_0x0b1b('0x49')]:_0x278c46['model'];if(!_0x1c64ca['query'][_0x0b1b('0x4c')]('nolimit')){_0x12459c[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0x1c64ca['query'][_0x0b1b('0x2f')]);_0x12459c[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x1c64ca['query'][_0x0b1b('0x31')]);}_0x12459c[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x1c64ca['query'][_0x0b1b('0x4e')]);_0x12459c[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_['pick'](_0x1c64ca[_0x0b1b('0x46')],_0x278c46[_0x0b1b('0x50')]));_0x12459c['where']['ChatWebsiteId']=_0xaf0e37['id'];if(_0x1c64ca[_0x0b1b('0x46')]['filter']){_0x12459c[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x12459c[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x12459c[_0x0b1b('0x49')],function(_0x5fe767){var _0x5099a9={};_0x5099a9[_0x5fe767]={'$like':'%'+_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x5099a9;})});}_0x12459c=_[_0x0b1b('0x5b')]({},_0x12459c,_0x1c64ca['options']);return db[_0x0b1b('0xb9')][_0x0b1b('0x30')]({'where':_0x12459c['where']})['then'](function(_0x2e9c9d){_0x419678[_0x0b1b('0x30')]=_0x2e9c9d;if(_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x5a')]){_0x12459c['include']=[{'model':db[_0x0b1b('0x9f')],'as':_0x0b1b('0xfc'),'required':![]},{'model':db[_0x0b1b('0xc7')],'as':'Owner','attributes':[_0x0b1b('0x3b'),_0x0b1b('0xfd'),'internal'],'required':![]},{'model':db[_0x0b1b('0xfe')],'as':_0x0b1b('0xff'),'attributes':['id',_0x0b1b('0x3b'),_0x0b1b('0x100')],'where':_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x101')]?{'id':_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x101')]}:undefined,'required':_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x101')]?!![]:![]}];}return db[_0x0b1b('0xb9')][_0x0b1b('0x55')](_0x12459c);})[_0x0b1b('0x36')](function(_0x1cf994){_0x419678['rows']=_0x1cf994;return _0x419678;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x5ef392,_0x12459c))['catch'](handleError(_0x5ef392,null));};function iftimePromise(_0x2fc0bc,_0x3489f5){return respondWithRpcPromise(_0x0b1b('0x102'),_0x0b1b('0x103'),{'command':_0x3489f5[_0x0b1b('0x104')]?util[_0x0b1b('0xb1')]('iftime\x20%s,%s',_0x2fc0bc[_0x0b1b('0x105')],_0x3489f5[_0x0b1b('0x104')]):util[_0x0b1b('0xb1')](_0x0b1b('0x106'),_0x2fc0bc[_0x0b1b('0x105')])},client9002)[_0x0b1b('0x36')](function(_0x540d15){var _0x272b46=_0x540d15&&_0x540d15[_0x0b1b('0x107')]('true')>=0x0?!![]:![];logger[_0x0b1b('0x22')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x3489f5['id'],_0x2fc0bc['id'],_0x2fc0bc[_0x0b1b('0x105')],_0x272b46?_0x0b1b('0x108'):_0x0b1b('0x109'),_0x3489f5[_0x0b1b('0x104')]?_0x3489f5[_0x0b1b('0x104')]:'No\x20timezone');return _0x272b46;})[_0x0b1b('0x2b')](function(_0x473da0){logger['error'](_0x0b1b('0x10a'),_0x3489f5['id'],_0x2fc0bc['id'],_0x2fc0bc['interval'],util[_0x0b1b('0x10b')](_0x473da0,{'showHidden':![],'depth':null}),_0x3489f5[_0x0b1b('0x104')]?_0x3489f5['timezone']:_0x0b1b('0x10c'));return![];});}exports[_0x0b1b('0x103')]=function(_0x399600,_0xf7eb23,_0x13a8f3){var _0x15a197=0x0;var _0x356c00=0x0;var _0x50616f=![];var _0x2d2ecb;var _0x2408b1;return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x399600[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x10d')],'as':_0x0b1b('0x10d'),'include':[{'model':db[_0x0b1b('0x10d')],'as':'Intervals','attributes':['id',_0x0b1b('0x105')],'raw':!![]}]}]})[_0x0b1b('0x36')](handleEntityNotFound(_0xf7eb23,null))['then'](function(_0x403fc1){if(_0x403fc1){_0x2d2ecb=_0x403fc1;return _0x403fc1[_0x0b1b('0x10e')]({'raw':!![]});}})[_0x0b1b('0x36')](function(_0x4f9e57){if(_0x2d2ecb){if(_0x4f9e57){_0x2408b1=_0x4f9e57;}}return require(_0x0b1b('0x7c'))[_0x0b1b('0x10f')]();})[_0x0b1b('0x36')](function(_0x5c862e){if(_0x5c862e){_0x356c00=_0x5c862e[_0x0b1b('0x110')];_0x50616f=_0x5c862e['custom'];}})[_0x0b1b('0x36')](function(){return db[_0x0b1b('0xb9')][_0x0b1b('0x30')]({'where':{'closed':![]}});})['then'](function(_0x3069ca){_0x15a197=_0x3069ca;if(_0x356c00&&_0x3069ca>_0x356c00){return db[_0x0b1b('0x111')]['findOne']({'where':{'id':0x1}})[_0x0b1b('0x36')](function(_0x1d9275){if(_0x1d9275){_0x1d9275[_0x0b1b('0x112')](_0x0b1b('0x113'));}});}})['then'](function(){if(_0x2d2ecb[_0x0b1b('0x10d')]&&_0x2d2ecb[_0x0b1b('0x10d')][_0x0b1b('0x114')]){var _0x176309=[];for(var _0x58345c=0x0;_0x58345c<_0x2d2ecb['Interval'][_0x0b1b('0x114')][_0x0b1b('0x4b')];_0x58345c++){var _0x5900ba=_0x2d2ecb['Interval'][_0x0b1b('0x114')][_0x58345c][_0x0b1b('0x38')]({'plain':!![]});_0x176309[_0x0b1b('0xc1')](iftimePromise(_0x5900ba,_0x2d2ecb));}return BPromise[_0x0b1b('0x115')](_0x176309)[_0x0b1b('0x36')](function(_0x58f97e){return _[_0x0b1b('0x116')](_0x58f97e);});}else{return!![];}})[_0x0b1b('0x36')](function(_0x5d517f){var _0x2117e3=fs[_0x0b1b('0xd3')](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x117')),_0x0b1b('0xd5'));var _0x276ed1={'remote':_0x2d2ecb[_0x0b1b('0x118')],'query':querystring['stringify'](_[_0x0b1b('0x5b')](_0x2d2ecb[_0x0b1b('0x38')]({'plain':!![]}),{'customerIp':_0x399600['headers'][_0x0b1b('0xab')]||_0x399600['headers'][_0x0b1b('0x119')]||_0x399600[_0x0b1b('0x11a')][_0x0b1b('0x11b')]||_0x399600['ip'],'referer':_0x399600['headers'][_0x0b1b('0xae')],'openedInteractions':_0x15a197,'maxInteractions':_0x356c00,'virtual':_0x50616f['virtual'],'online':_0x5d517f,'custom':_0x50616f}))['replace'](/'/g,'\x5c\x27')};_0xf7eb23['send'](ejs[_0x0b1b('0xd6')](Mustache['render'](_0x2117e3,_0x276ed1),{'proactiveActions':_0x2408b1,'alignment':_0x2d2ecb[_0x0b1b('0x11c')],'verticalAlignment':_0x2d2ecb['verticalAlignment'],'div_color':_0x2d2ecb[_0x0b1b('0x100')],'text_color':_0x2d2ecb[_0x0b1b('0x11d')],'button_color':_0x2d2ecb['color_button'],'background_color':_0x2d2ecb[_0x0b1b('0x11e')]}));})['catch'](handleError(_0xf7eb23,null));};exports[_0x0b1b('0x11f')]=function(_0x577ec3,_0x205144,_0x10f60a){return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x577ec3['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x205144,null))['then'](function(_0xef446c){if(_0xef446c){return db[_0x0b1b('0x120')][_0x0b1b('0xde')](function(_0x392e44){return db[_0x0b1b('0xa1')][_0x0b1b('0x37')]({'where':{'ChatWebsiteId':_0x577ec3['params']['id']},'transaction':_0x392e44})[_0x0b1b('0x36')](function(_0x295968){var _0x5d265c=_[_0x0b1b('0x45')](_0x577ec3[_0x0b1b('0x65')],function(_0x51b5d1){_0x51b5d1[_0x0b1b('0x68')]=_0x577ec3[_0x0b1b('0x58')]['id'];return _0x51b5d1;});return db[_0x0b1b('0xa1')][_0x0b1b('0xe0')](_0x5d265c,{'transaction':_0x392e44});});})[_0x0b1b('0x36')](function(){return db[_0x0b1b('0xa1')][_0x0b1b('0x121')]({'where':{'ChatWebsiteId':_0x577ec3[_0x0b1b('0x58')]['id']},'order':'priority'});});}})[_0x0b1b('0x36')](respondWithResult(_0x205144,null))['catch'](handleError(_0x205144,null));};exports[_0x0b1b('0x122')]=function(_0x41a193,_0x53ee91,_0x3792c5){var _0x14b836={};var _0xa9a497={};var _0x4d1a1b;var _0x9eeaf9;return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x41a193[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x53ee91,null))[_0x0b1b('0x36')](function(_0x2e0c0b){if(_0x2e0c0b){_0x4d1a1b=_0x2e0c0b;_0xa9a497[_0x0b1b('0x44')]=_['keys'](db['ChatApplication']['rawAttributes']);_0xa9a497[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x41a193[_0x0b1b('0x46')]);_0xa9a497[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0xa9a497[_0x0b1b('0x44')],_0xa9a497[_0x0b1b('0x46')]);_0x14b836['attributes']=_[_0x0b1b('0x48')](_0xa9a497[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x41a193[_0x0b1b('0x46')][_0x0b1b('0x4a')]));_0x14b836[_0x0b1b('0x49')]=_0x14b836[_0x0b1b('0x49')]['length']?_0x14b836[_0x0b1b('0x49')]:_0xa9a497[_0x0b1b('0x44')];_0x14b836[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x41a193[_0x0b1b('0x46')]['sort']);_0x14b836['where']=qs['filters'](_[_0x0b1b('0x51')](_0x41a193['query'],_0xa9a497[_0x0b1b('0x50')]));if(_0x41a193['query'][_0x0b1b('0x52')]){_0x14b836[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x14b836[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x14b836[_0x0b1b('0x49')],function(_0x51adfa){var _0x59bd77={};_0x59bd77[_0x51adfa]={'$like':'%'+_0x41a193['query']['filter']+'%'};return _0x59bd77;})});}_0x14b836=_[_0x0b1b('0x5b')]({},_0x14b836,_0x41a193['options']);return _0x4d1a1b['getApplications'](_0x14b836);}})[_0x0b1b('0x36')](function(_0x2b40e6){if(_0x2b40e6){_0x9eeaf9=_0x2b40e6['length'];if(!_0x41a193[_0x0b1b('0x46')][_0x0b1b('0x4c')]('nolimit')){_0x14b836[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0x41a193['query'][_0x0b1b('0x2f')]);_0x14b836['offset']=qs[_0x0b1b('0x31')](_0x41a193[_0x0b1b('0x46')][_0x0b1b('0x31')]);}return _0x4d1a1b[_0x0b1b('0x122')](_0x14b836);}})[_0x0b1b('0x36')](function(_0x572b67){if(_0x572b67){return _0x572b67?{'count':_0x9eeaf9,'rows':_0x572b67}:null;}})[_0x0b1b('0x36')](respondWithResult(_0x53ee91,null))['catch'](handleError(_0x53ee91,null));};exports['addProactiveActions']=function(_0xac6721,_0x1fdf6f,_0x305f46){return db[_0x0b1b('0x123')][_0x0b1b('0x5c')]({'where':{'id':_0xac6721[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x1fdf6f,null))[_0x0b1b('0x36')](function(_0x39d1ff){if(_0x39d1ff){return _0x39d1ff['addProactiveActions'](_0xac6721[_0x0b1b('0x65')][_0x0b1b('0x6e')],_['omit'](_0xac6721['body'],[_0x0b1b('0x6e'),'id'])||{});}})[_0x0b1b('0x36')](respondWithResult(_0x1fdf6f,null))[_0x0b1b('0x2b')](handleError(_0x1fdf6f,null));};exports[_0x0b1b('0x10e')]=function(_0xe9d39,_0x590547,_0x2af04a){var _0x5801dd={};var _0x2bb47b={};var _0x6f39bd;var _0x141b28;return db[_0x0b1b('0x40')]['findOne']({'where':{'id':_0xe9d39[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x590547,null))['then'](function(_0x3bd3f1){if(_0x3bd3f1){_0x6f39bd=_0x3bd3f1;_0x2bb47b[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0x124')]['rawAttributes']);_0x2bb47b[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0xe9d39[_0x0b1b('0x46')]);_0x2bb47b[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x2bb47b[_0x0b1b('0x44')],_0x2bb47b[_0x0b1b('0x46')]);_0x5801dd['attributes']=_[_0x0b1b('0x48')](_0x2bb47b[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0xe9d39['query'][_0x0b1b('0x4a')]));_0x5801dd[_0x0b1b('0x49')]=_0x5801dd['attributes'][_0x0b1b('0x4b')]?_0x5801dd[_0x0b1b('0x49')]:_0x2bb47b['model'];_0x5801dd['order']=qs[_0x0b1b('0x4e')](_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x4e')]);_0x5801dd[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0xe9d39[_0x0b1b('0x46')],_0x2bb47b[_0x0b1b('0x50')]));if(_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x52')]){_0x5801dd[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x5801dd[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x5801dd[_0x0b1b('0x49')],function(_0x4ae15b){var _0xfc100b={};_0xfc100b[_0x4ae15b]={'$like':'%'+_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0xfc100b;})});}_0x5801dd=_['merge']({},_0x5801dd,_0xe9d39[_0x0b1b('0x53')]);return _0x6f39bd['getProactiveActions'](_0x5801dd);}})[_0x0b1b('0x36')](function(_0x47868a){if(_0x47868a){_0x141b28=_0x47868a[_0x0b1b('0x4b')];if(!_0xe9d39[_0x0b1b('0x46')]['hasOwnProperty']('nolimit')){_0x5801dd[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0x5801dd['offset']=qs[_0x0b1b('0x31')](_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x31')]);}return _0x6f39bd[_0x0b1b('0x10e')](_0x5801dd);}})[_0x0b1b('0x36')](function(_0x2a2b31){if(_0x2a2b31){return _0x2a2b31?{'count':_0x141b28,'rows':_0x2a2b31}:null;}})[_0x0b1b('0x36')](respondWithResult(_0x590547,null))['catch'](handleError(_0x590547,null));};exports['getFields']=function(_0x3ceaae,_0x4f40f9,_0x3ee9bb){var _0x2c79dd=_0x3ceaae['query'][_0x0b1b('0x125')]===_0x0b1b('0x126')?'offlineForm':_0x0b1b('0x127');return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'attributes':['id',_0x2c79dd],'where':{'id':_0x3ceaae[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x4f40f9,null))[_0x0b1b('0x36')](function(_0x1f0732){if(_0x1f0732){var _0x43ca3d=_0x1f0732[_0x2c79dd];var _0x1c91c3=_0x43ca3d&&_0x43ca3d[_0x0b1b('0x128')]?_0x43ca3d[_0x0b1b('0x128')]:[];_0x4f40f9[_0x0b1b('0x3c')]({'fromKey':_[_0x0b1b('0x81')](_0x43ca3d[_0x0b1b('0x129')])?undefined:_0x43ca3d[_0x0b1b('0x129')],'count':_0x1c91c3[_0x0b1b('0x4b')],'rows':_0x1c91c3});}})[_0x0b1b('0x2b')](handleError(_0x4f40f9,null));};exports[_0x0b1b('0x12a')]=function(_0x56cbf1,_0x5baa14,_0x19afda){var _0xb74e92={'raw':![],'where':{}};var _0x1ca6a4={};var _0x5a7f49={'count':0x0,'rows':[]};return db[_0x0b1b('0x40')]['findOne']({'where':{'id':_0x56cbf1['params']['id']}})['then'](handleEntityNotFound(_0x5baa14,null))['then'](function(_0x3060fd){if(_0x3060fd){_0x1ca6a4[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0xd9')][_0x0b1b('0x59')]);_0x1ca6a4[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x56cbf1['query']);_0x1ca6a4[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x1ca6a4[_0x0b1b('0x44')],_0x1ca6a4[_0x0b1b('0x46')]);_0xb74e92[_0x0b1b('0x49')]=_['intersection'](_0x1ca6a4[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x56cbf1['query']['fields']));_0xb74e92[_0x0b1b('0x49')]=_0xb74e92[_0x0b1b('0x49')]['length']?_0xb74e92[_0x0b1b('0x49')]:_0x1ca6a4[_0x0b1b('0x44')];if(!_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0xb74e92[_0x0b1b('0x2f')]=qs['limit'](_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0xb74e92[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x56cbf1[_0x0b1b('0x46')]['offset']);}_0xb74e92[_0x0b1b('0x6c')]=qs['sort'](_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x4e')]);_0xb74e92['where']=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x56cbf1[_0x0b1b('0x46')],_0x1ca6a4[_0x0b1b('0x50')]));_0xb74e92[_0x0b1b('0x4f')][_0x0b1b('0x68')]=_0x3060fd['id'];if(_0x56cbf1[_0x0b1b('0x46')]['filter']){_0xb74e92[_0x0b1b('0x4f')]=_['merge'](_0xb74e92[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0xb74e92[_0x0b1b('0x49')],function(_0x2e4812){var _0x58f77b={};_0x58f77b[_0x2e4812]={'$like':'%'+_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x58f77b;})});}_0xb74e92=_[_0x0b1b('0x5b')]({},_0xb74e92,_0x56cbf1[_0x0b1b('0x53')]);return db[_0x0b1b('0xd9')][_0x0b1b('0x30')]({'where':_0xb74e92[_0x0b1b('0x4f')]})[_0x0b1b('0x36')](function(_0x1a065b){_0x5a7f49['count']=_0x1a065b;if(_0x56cbf1[_0x0b1b('0x46')]['includeAll']){_0xb74e92[_0x0b1b('0x54')]=[{'all':!![]}];}else{_0xb74e92[_0x0b1b('0x54')]=[{'model':db['CmContact'],'as':_0x0b1b('0xfc'),'required':![]},{'model':db[_0x0b1b('0xdf')],'as':_0x0b1b('0x12b'),'required':![]}];}return db[_0x0b1b('0xd9')][_0x0b1b('0x55')](_0xb74e92);})[_0x0b1b('0x36')](function(_0x1aa9e2){_0x5a7f49['rows']=_0x1aa9e2;return _0x5a7f49;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x5baa14,_0xb74e92))[_0x0b1b('0x2b')](handleError(_0x5baa14,null));};exports[_0x0b1b('0x12c')]=function(_0x132e7f,_0x33d189,_0x396d0e){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x132e7f['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x33d189,null))['then'](function(_0x1529df){if(_0x1529df){return _0x1529df[_0x0b1b('0x12c')](_0x132e7f[_0x0b1b('0x65')]['ids'],_[_0x0b1b('0x12d')](_0x132e7f[_0x0b1b('0x65')],['ids','id'])||{})['spread'](function(_0x6f6f23){for(var _0x5406c0=0x0;_0x5406c0<_0x132e7f[_0x0b1b('0x65')][_0x0b1b('0x6e')]['length'];_0x5406c0+=0x1){socket[_0x0b1b('0x12e')](_0x0b1b('0x12f'),{'UserId':Number(_0x132e7f[_0x0b1b('0x65')][_0x0b1b('0x6e')][_0x5406c0]),'ChatWebsiteId':Number(_0x132e7f[_0x0b1b('0x58')]['id'])});}return _0x6f6f23;});}})[_0x0b1b('0x36')](respondWithResult(_0x33d189,null))['catch'](handleError(_0x33d189,null));};exports['removeAgents']=function(_0x1f84a9,_0x47b76d,_0x123814){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x1f84a9[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x47b76d,null))[_0x0b1b('0x36')](function(_0x2a40c5){if(_0x2a40c5){return _0x2a40c5['removeAgents'](_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')])['then'](function(){if(_[_0x0b1b('0x130')](_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')])){for(var _0x40b5f0=0x0;_0x40b5f0<_0x1f84a9[_0x0b1b('0x46')]['ids'][_0x0b1b('0x4b')];_0x40b5f0+=0x1){socket[_0x0b1b('0x12e')](_0x0b1b('0x131'),{'UserId':Number(_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')][_0x40b5f0]),'ChatWebsiteId':Number(_0x1f84a9['params']['id'])});}}else{socket['emit'](_0x0b1b('0x131'),{'UserId':Number(_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')]),'ChatWebsiteId':Number(_0x1f84a9[_0x0b1b('0x58')]['id'])});}});}})['then'](respondWithStatusCode(_0x47b76d,null))[_0x0b1b('0x2b')](handleError(_0x47b76d,null));};exports[_0x0b1b('0x132')]=function(_0x4add61,_0x2e647b,_0x4543f5){var _0x4bda6a={};var _0x1259e4={};var _0x339f57;var _0x4e7ec8;return db[_0x0b1b('0x40')]['findOne']({'where':{'id':_0x4add61[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x2e647b,null))['then'](function(_0x40fe7c){if(_0x40fe7c){_0x339f57=_0x40fe7c;_0x1259e4['model']=_[_0x0b1b('0x47')](db[_0x0b1b('0xc7')][_0x0b1b('0x59')]);_0x1259e4['query']=_[_0x0b1b('0x47')](_0x4add61[_0x0b1b('0x46')]);_0x1259e4['filters']=_[_0x0b1b('0x48')](_0x1259e4['model'],_0x1259e4[_0x0b1b('0x46')]);_0x4bda6a[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x1259e4['model'],qs[_0x0b1b('0x4a')](_0x4add61['query'][_0x0b1b('0x4a')]));_0x4bda6a['attributes']=_0x4bda6a[_0x0b1b('0x49')]['length']?_0x4bda6a['attributes']:_0x1259e4[_0x0b1b('0x44')];_0x4bda6a[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x4add61['query']['sort']);_0x4bda6a[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x4add61[_0x0b1b('0x46')],_0x1259e4['filters']));if(_0x4add61[_0x0b1b('0x46')]['filter']){_0x4bda6a['where']=_['merge'](_0x4bda6a[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x4bda6a[_0x0b1b('0x49')],function(_0x44f98c){var _0x2f8610={};_0x2f8610[_0x44f98c]={'$like':'%'+_0x4add61[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x2f8610;})});}_0x4bda6a=_[_0x0b1b('0x5b')]({},_0x4bda6a,_0x4add61[_0x0b1b('0x53')]);return _0x339f57['getAgents'](_0x4bda6a);}})[_0x0b1b('0x36')](function(_0x5864d6){if(_0x5864d6){_0x4e7ec8=_0x5864d6[_0x0b1b('0x4b')];if(!_0x4add61['query'][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x4bda6a['limit']=qs[_0x0b1b('0x2f')](_0x4add61['query']['limit']);_0x4bda6a[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x4add61[_0x0b1b('0x46')][_0x0b1b('0x31')]);}return _0x339f57[_0x0b1b('0x132')](_0x4bda6a);}})[_0x0b1b('0x36')](function(_0x32e989){if(_0x32e989){return _0x32e989?{'count':_0x4e7ec8,'rows':_0x32e989}:null;}})['then'](respondWithResult(_0x2e647b,null))[_0x0b1b('0x2b')](handleError(_0x2e647b,null));};
\ No newline at end of file
index d2e544c..70a878c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf483=['hasOwnProperty','exports','../../mysqldb','setMaxListeners','save','update','remove','emit'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xf483,0xf2));var _0x3f48=function(_0x3d2b6d,_0x1c710e){_0x3d2b6d=_0x3d2b6d-0x0;var _0x268764=_0xf483[_0x3d2b6d];return _0x268764;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x3f48('0x0'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x3f48('0x1')](0x0);var events={'afterCreate':_0x3f48('0x2'),'afterUpdate':_0x3f48('0x3'),'afterDestroy':_0x3f48('0x4')};function emitEvent(_0x169391){return function(_0x312d9c,_0x5deb61,_0x49f64a){ChatWebsiteEvents['emit'](_0x169391+':'+_0x312d9c['id'],_0x312d9c);ChatWebsiteEvents[_0x3f48('0x5')](_0x169391,_0x312d9c);_0x49f64a(null);};}for(var e in events){if(events[_0x3f48('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0x3f48('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xcb99=['ChatWebsite','update','remove','emit','hook','exports','events'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcb99,0x8b));var _0x9cb9=function(_0x54cd98,_0x3029e6){_0x54cd98=_0x54cd98-0x0;var _0x4abd09=_0xcb99[_0x54cd98];return _0x4abd09;};'use strict';var EventEmitter=require(_0x9cb9('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0x9cb9('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x9cb9('0x2'),'afterDestroy':_0x9cb9('0x3')};function emitEvent(_0x124c48){return function(_0x51f2ee,_0x167735,_0x41788c){ChatWebsiteEvents['emit'](_0x124c48+':'+_0x51f2ee['id'],_0x51f2ee);ChatWebsiteEvents[_0x9cb9('0x4')](_0x124c48,_0x51f2ee);_0x41788c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x9cb9('0x5')](e,emitEvent(event));}}module[_0x9cb9('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
index be97e39..262af63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff60=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','lodash'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0xff60,0x133));var _0x0ff6=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xff60[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0x0ff6('0x0'));var util=require('util');var logger=require(_0x0ff6('0x1'))(_0x0ff6('0x2'));var moment=require(_0x0ff6('0x3'));var BPromise=require(_0x0ff6('0x4'));var rp=require(_0x0ff6('0x5'));var fs=require('fs');var path=require(_0x0ff6('0x6'));var rimraf=require(_0x0ff6('0x7'));var config=require(_0x0ff6('0x8'));var attributes=require(_0x0ff6('0x9'));module[_0x0ff6('0xa')]=function(_0x350e86,_0x3789bd){return _0x350e86[_0x0ff6('0xb')](_0x0ff6('0xc'),attributes,{'tableName':_0x0ff6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x89b5=['path','rimraf','../../config/environment','exports','define','ChatWebsite','lodash','../../config/logger','moment'];(function(_0x3f4ee7,_0x5ae967){var _0x428b36=function(_0x47da55){while(--_0x47da55){_0x3f4ee7['push'](_0x3f4ee7['shift']());}};_0x428b36(++_0x5ae967);}(_0x89b5,0x14a));var _0x589b=function(_0x31d53a,_0x2488d5){_0x31d53a=_0x31d53a-0x0;var _0x2be018=_0x89b5[_0x31d53a];return _0x2be018;};'use strict';var _=require(_0x589b('0x0'));var util=require('util');var logger=require(_0x589b('0x1'))('api');var moment=require(_0x589b('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x589b('0x3'));var rimraf=require(_0x589b('0x4'));var config=require(_0x589b('0x5'));var attributes=require('./chatWebsite.attributes');module[_0x589b('0x6')]=function(_0x386399,_0x25c709){return _0x386399[_0x589b('0x7')](_0x589b('0x8'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e1662b..2228381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac4=['stringify','error','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x3cd071,_0x53b989){var _0x575ddb=function(_0x53f193){while(--_0x53f193){_0x3cd071['push'](_0x3cd071['shift']());}};_0x575ddb(++_0x53b989);}(_0x1ac4,0x155));var _0x41ac=function(_0x281a3b,_0x1df435){_0x281a3b=_0x281a3b-0x0;var _0x387721=_0x1ac4[_0x281a3b];return _0x387721;};'use strict';var _=require(_0x41ac('0x0'));var util=require('util');var moment=require(_0x41ac('0x1'));var BPromise=require('bluebird');var rs=require(_0x41ac('0x2'));var fs=require('fs');var Redis=require(_0x41ac('0x3'));var db=require(_0x41ac('0x4'))['db'];var utils=require(_0x41ac('0x5'));var logger=require(_0x41ac('0x6'))('rpc');var config=require(_0x41ac('0x7'));var jayson=require(_0x41ac('0x8'));var client=jayson[_0x41ac('0x9')][_0x41ac('0xa')]({'port':0x232a});config[_0x41ac('0xb')]=_[_0x41ac('0xc')](config[_0x41ac('0xb')],{'host':_0x41ac('0xd'),'port':0x18eb});var socket=require(_0x41ac('0xe'))(new Redis(config[_0x41ac('0xb')]));require('./chatWebsite.socket')[_0x41ac('0xf')](socket);function respondWithRpcPromise(_0x11a1a3,_0x4cce7d,_0x1dc32e){return new BPromise(function(_0x3f4576,_0x5a2b0b){return client[_0x41ac('0x10')](_0x11a1a3,_0x1dc32e)[_0x41ac('0x11')](function(_0xbde40e){logger[_0x41ac('0x12')](_0x41ac('0x13'),_0x4cce7d,'request\x20sent');logger[_0x41ac('0x14')](_0x41ac('0x15'),_0x4cce7d,_0x41ac('0x16'),JSON[_0x41ac('0x17')](_0xbde40e));if(_0xbde40e['error']){if(_0xbde40e[_0x41ac('0x18')]['code']===0x1f4){logger['error'](_0x41ac('0x13'),_0x4cce7d,_0xbde40e['error'][_0x41ac('0x19')]);return _0x5a2b0b(_0xbde40e[_0x41ac('0x18')]['message']);}logger[_0x41ac('0x18')](_0x41ac('0x13'),_0x4cce7d,_0xbde40e[_0x41ac('0x18')][_0x41ac('0x19')]);return _0x3f4576(_0xbde40e[_0x41ac('0x18')][_0x41ac('0x19')]);}else{logger[_0x41ac('0x12')](_0x41ac('0x13'),_0x4cce7d,_0x41ac('0x16'));_0x3f4576(_0xbde40e[_0x41ac('0x1a')][_0x41ac('0x19')]);}})[_0x41ac('0x1b')](function(_0x196f39){logger[_0x41ac('0x18')](_0x41ac('0x13'),_0x4cce7d,_0x196f39);_0x5a2b0b(_0x196f39);});});}
\ No newline at end of file
+var _0x3812=['error','code','message','info','result','catch','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','request','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x56d0b2,_0x2f7c9e){var _0x37e421=function(_0x23b3a9){while(--_0x23b3a9){_0x56d0b2['push'](_0x56d0b2['shift']());}};_0x37e421(++_0x2f7c9e);}(_0x3812,0x124));var _0x2381=function(_0x598824,_0x35c286){_0x598824=_0x598824-0x0;var _0x4f247f=_0x3812[_0x598824];return _0x4f247f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2381('0x0'));var BPromise=require(_0x2381('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2381('0x2'))['db'];var utils=require(_0x2381('0x3'));var logger=require(_0x2381('0x4'))(_0x2381('0x5'));var config=require('../../config/environment');var jayson=require(_0x2381('0x6'));var client=jayson[_0x2381('0x7')][_0x2381('0x8')]({'port':0x232a});config[_0x2381('0x9')]=_[_0x2381('0xa')](config[_0x2381('0x9')],{'host':_0x2381('0xb'),'port':0x18eb});var socket=require(_0x2381('0xc'))(new Redis(config[_0x2381('0x9')]));require(_0x2381('0xd'))['register'](socket);function respondWithRpcPromise(_0x3e0527,_0x34be8c,_0x41e8a5){return new BPromise(function(_0x5dc4b5,_0x526194){return client[_0x2381('0xe')](_0x3e0527,_0x41e8a5)['then'](function(_0x5bc396){logger['info'](_0x2381('0xf'),_0x34be8c,_0x2381('0x10'));logger[_0x2381('0x11')](_0x2381('0x12'),_0x34be8c,_0x2381('0x10'),JSON[_0x2381('0x13')](_0x5bc396));if(_0x5bc396[_0x2381('0x14')]){if(_0x5bc396[_0x2381('0x14')][_0x2381('0x15')]===0x1f4){logger['error'](_0x2381('0xf'),_0x34be8c,_0x5bc396[_0x2381('0x14')][_0x2381('0x16')]);return _0x526194(_0x5bc396[_0x2381('0x14')][_0x2381('0x16')]);}logger[_0x2381('0x14')](_0x2381('0xf'),_0x34be8c,_0x5bc396[_0x2381('0x14')][_0x2381('0x16')]);return _0x5dc4b5(_0x5bc396[_0x2381('0x14')]['message']);}else{logger[_0x2381('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x34be8c,'request\x20sent');_0x5dc4b5(_0x5bc396[_0x2381('0x18')][_0x2381('0x16')]);}})[_0x2381('0x19')](function(_0x5c613d){logger[_0x2381('0x14')](_0x2381('0xf'),_0x34be8c,_0x5c613d);_0x526194(_0x5c613d);});});}
\ No newline at end of file
index 2ec4ef2..02d1b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1d8=['removeListener','register','length','./chatWebsite.events','remove','update','emit'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0xb1d8,0xa4));var _0x8b1d=function(_0x24a302,_0x2f5690){_0x24a302=_0x24a302-0x0;var _0x523e4e=_0xb1d8[_0x24a302];return _0x523e4e;};'use strict';var ChatWebsiteEvents=require(_0x8b1d('0x0'));var events=['save',_0x8b1d('0x1'),_0x8b1d('0x2')];function createListener(_0x2b8eb7,_0x515505){return function(_0x3ccd16){_0x515505[_0x8b1d('0x3')](_0x2b8eb7,_0x3ccd16);};}function removeListener(_0x4088df,_0x370523){return function(){ChatWebsiteEvents[_0x8b1d('0x4')](_0x4088df,_0x370523);};}exports[_0x8b1d('0x5')]=function(_0x192793){for(var _0x1aabb3=0x0,_0x347f4a=events[_0x8b1d('0x6')];_0x1aabb3<_0x347f4a;_0x1aabb3++){var _0x565b59=events[_0x1aabb3];var _0x54fb62=createListener('chatWebsite:'+_0x565b59,_0x192793);ChatWebsiteEvents['on'](_0x565b59,_0x54fb62);}};
\ No newline at end of file
+var _0x2022=['update','emit','removeListener','register','length','chatWebsite:','./chatWebsite.events'];(function(_0x11bdc1,_0x3a3593){var _0x134c41=function(_0x22f31c){while(--_0x22f31c){_0x11bdc1['push'](_0x11bdc1['shift']());}};_0x134c41(++_0x3a3593);}(_0x2022,0xa0));var _0x2202=function(_0x494b1e,_0x187d8e){_0x494b1e=_0x494b1e-0x0;var _0x8ddeb=_0x2022[_0x494b1e];return _0x8ddeb;};'use strict';var ChatWebsiteEvents=require(_0x2202('0x0'));var events=['save','remove',_0x2202('0x1')];function createListener(_0x1f1204,_0x2ffc87){return function(_0x57a7c3){_0x2ffc87[_0x2202('0x2')](_0x1f1204,_0x57a7c3);};}function removeListener(_0xa5d60c,_0x441b9f){return function(){ChatWebsiteEvents[_0x2202('0x3')](_0xa5d60c,_0x441b9f);};}exports[_0x2202('0x4')]=function(_0x584ef4){for(var _0x10db85=0x0,_0x4eaba8=events[_0x2202('0x5')];_0x10db85<_0x4eaba8;_0x10db85++){var _0x18093b=events[_0x10db85];var _0xc8c31e=createListener(_0x2202('0x6')+_0x18093b,_0x584ef4);ChatWebsiteEvents['on'](_0x18093b,_0xc8c31e);}};
\ No newline at end of file
index ab02d2c..5436369 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x021b=['/:id/applications','getApplications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','diskStorage','join','server/files/images/logos/','format','%s-%s','now','single','file','root','server/files/images/avatars/','originalname','/:id/notify','notify','attachments','offline-chat','ensureDir','replace','extname','any','offline','/:id/interactions','addApplications','/:id/proactive_actions','addProactiveActions','put','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getSnippet'];(function(_0xfa680,_0x35ec42){var _0x14ad20=function(_0x26f971){while(--_0x26f971){_0xfa680['push'](_0xfa680['shift']());}};_0x14ad20(++_0x35ec42);}(_0x021b,0x157));var _0xb021=function(_0x44039a,_0x2ac8a8){_0x44039a=_0x44039a-0x0;var _0x525de5=_0x021b[_0x44039a];return _0x525de5;};'use strict';var multer=require(_0xb021('0x0'));var util=require(_0xb021('0x1'));var path=require(_0xb021('0x2'));var timeout=require(_0xb021('0x3'));var express=require(_0xb021('0x4'));var router=express[_0xb021('0x5')]();var fs_extra=require(_0xb021('0x6'));var auth=require(_0xb021('0x7'));var interaction=require(_0xb021('0x8'));var config=require(_0xb021('0x9'));var controller=require(_0xb021('0xa'));router[_0xb021('0xb')]('/',auth[_0xb021('0xc')](),controller[_0xb021('0xd')]);router[_0xb021('0xb')](_0xb021('0xe'),auth[_0xb021('0xc')](),controller[_0xb021('0xf')]);router[_0xb021('0xb')](_0xb021('0x10'),auth[_0xb021('0xc')](),controller[_0xb021('0x11')]);router[_0xb021('0xb')](_0xb021('0x12'),auth[_0xb021('0xc')](),controller[_0xb021('0x13')]);router[_0xb021('0xb')]('/:id/canned_answers',auth[_0xb021('0xc')](),controller[_0xb021('0x14')]);router[_0xb021('0xb')](_0xb021('0x15'),controller[_0xb021('0x16')]);router[_0xb021('0xb')](_0xb021('0x17'),controller[_0xb021('0x18')]);router[_0xb021('0xb')](_0xb021('0x19'),controller[_0xb021('0x1a')]);router[_0xb021('0xb')](_0xb021('0x1b'),controller[_0xb021('0x1c')]);router[_0xb021('0xb')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xb021('0x1d')]);router[_0xb021('0xb')](_0xb021('0x1e'),controller[_0xb021('0x1f')]);router['get'](_0xb021('0x20'),auth['isAuthenticated'](),controller[_0xb021('0x21')]);router[_0xb021('0xb')]('/:id/proactive_actions',auth['isAuthenticated'](),controller[_0xb021('0x22')]);router[_0xb021('0xb')](_0xb021('0x23'),controller[_0xb021('0x24')]);router[_0xb021('0xb')](_0xb021('0x25'),auth['isAuthenticated'](),controller['getOfflineMessages']);router[_0xb021('0xb')](_0xb021('0x26'),auth['isAuthenticated'](),controller[_0xb021('0x27')]);router[_0xb021('0x28')]('/',auth['isAuthenticated'](),controller[_0xb021('0x29')]);router['post']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xb021('0x2a')]);router[_0xb021('0x28')](_0xb021('0x2b'),auth[_0xb021('0xc')](),controller[_0xb021('0x2c')]);var upload=multer({'storage':multer[_0xb021('0x2d')]({'destination':function(_0x3ed0d7,_0x28fe68,_0x10a2f4){_0x10a2f4(null,path[_0xb021('0x2e')](config['root'],_0xb021('0x2f')));},'filename':function(_0x566d1f,_0x498b93,_0x5b40a5){_0x5b40a5(null,util[_0xb021('0x30')](_0xb021('0x31'),Date[_0xb021('0x32')](),_0x498b93['originalname']));}})});router['post'](_0xb021('0x15'),upload[_0xb021('0x33')](_0xb021('0x34')),controller['addLogo']);var upload=multer({'storage':multer[_0xb021('0x2d')]({'destination':function(_0x29aa46,_0x11003e,_0x515342){_0x515342(null,path[_0xb021('0x2e')](config[_0xb021('0x35')],_0xb021('0x36')));},'filename':function(_0x1f6d70,_0x224ff9,_0x203016){_0x203016(null,util['format']('%s-%s',Date[_0xb021('0x32')](),_0x224ff9[_0xb021('0x37')]));}})});router[_0xb021('0x28')](_0xb021('0x17'),upload['single'](_0xb021('0x34')),controller['addAvatar']);var upload=multer({'storage':multer[_0xb021('0x2d')]({'destination':function(_0x24d159,_0x167b2,_0x1f25d3){_0x1f25d3(null,path[_0xb021('0x2e')](config[_0xb021('0x35')],_0xb021('0x36')));},'filename':function(_0x1459f8,_0x26a0d8,_0x3da865){_0x3da865(null,util[_0xb021('0x30')](_0xb021('0x31'),Date['now'](),_0x26a0d8[_0xb021('0x37')]));}})});router[_0xb021('0x28')](_0xb021('0x19'),upload[_0xb021('0x33')](_0xb021('0x34')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xb021('0x2d')]({'destination':function(_0x261056,_0x116f29,_0x208446){_0x208446(null,path[_0xb021('0x2e')](config[_0xb021('0x35')],_0xb021('0x36')));},'filename':function(_0x3d0ce6,_0x1c491b,_0x8f1552){_0x8f1552(null,util[_0xb021('0x30')](_0xb021('0x31'),Date['now'](),_0x1c491b[_0xb021('0x37')]));}})});router[_0xb021('0x28')]('/:id/system_avatar',upload[_0xb021('0x33')]('file'),controller['addSystemAvatar']);router[_0xb021('0x28')](_0xb021('0x38'),controller[_0xb021('0x39')]);const offlineUploadMulter=multer({'storage':multer[_0xb021('0x2d')]({'destination':function(_0x45a178,_0x11dbc7,_0x3827f0){const _0x29dba0=path['join'](config[_0xb021('0x35')],'server/files',_0xb021('0x3a'),_0xb021('0x3b'));fs_extra[_0xb021('0x3c')](_0x29dba0,function(){_0x3827f0(null,_0x29dba0);});},'filename':function(_0x22810d,_0x80a02f,_0x14cd88){const _0x264b33=_0x80a02f[_0xb021('0x37')][_0xb021('0x3d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x4c919f=path[_0xb021('0x3e')](_0x264b33);const _0x3ad673=Date[_0xb021('0x32')]()+'-'+_0x264b33['replace'](_0x4c919f,'')+_0x4c919f;_0x14cd88(null,_0x3ad673);}})});router[_0xb021('0x28')]('/:id/offline',offlineUploadMulter[_0xb021('0x3f')](),controller[_0xb021('0x40')]);router[_0xb021('0x28')](_0xb021('0x41'),auth['isAuthenticated'](),controller['addInteraction']);router[_0xb021('0x28')](_0xb021('0x20'),auth['isAuthenticated'](),controller[_0xb021('0x42')]);router[_0xb021('0x28')](_0xb021('0x43'),auth[_0xb021('0xc')](),controller[_0xb021('0x44')]);router[_0xb021('0x28')]('/:id/users',auth[_0xb021('0xc')](),controller['addAgents']);router[_0xb021('0x45')](_0xb021('0x10'),auth['isAuthenticated'](),controller['update']);router[_0xb021('0x46')](_0xb021('0x10'),auth[_0xb021('0xc')](),controller[_0xb021('0x47')]);router['delete'](_0xb021('0x12'),auth[_0xb021('0xc')](),controller[_0xb021('0x48')]);router['delete'](_0xb021('0x2b'),auth['isAuthenticated'](),controller[_0xb021('0x49')]);router[_0xb021('0x46')](_0xb021('0x26'),auth[_0xb021('0xc')](),controller[_0xb021('0x4a')]);module['exports']=router;
\ No newline at end of file
+var _0x4e92=['getSystemAvatar','/:id/interactions','getInteractions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','/:id/users','getAgents','post','create','join','server/files/images/logos/','format','%s-%s','single','file','diskStorage','server/files/images/avatars/','now','originalname','addCustomerAvatar','root','addSystemAvatar','/:id/notify','notify','attachments','offline-chat','extname','any','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','update','destroy','delete','removeDispositions','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatWebsite.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar'];(function(_0x17eca6,_0x2fe44c){var _0x42db1e=function(_0x31614d){while(--_0x31614d){_0x17eca6['push'](_0x17eca6['shift']());}};_0x42db1e(++_0x2fe44c);}(_0x4e92,0x138));var _0x24e9=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x4e92[_0x1f9f37];return _0x21c080;};'use strict';var multer=require('multer');var util=require(_0x24e9('0x0'));var path=require('path');var timeout=require(_0x24e9('0x1'));var express=require(_0x24e9('0x2'));var router=express[_0x24e9('0x3')]();var fs_extra=require(_0x24e9('0x4'));var auth=require(_0x24e9('0x5'));var interaction=require(_0x24e9('0x6'));var config=require('../../config/environment');var controller=require(_0x24e9('0x7'));router[_0x24e9('0x8')]('/',auth[_0x24e9('0x9')](),controller['index']);router['get'](_0x24e9('0xa'),auth[_0x24e9('0x9')](),controller[_0x24e9('0xb')]);router[_0x24e9('0x8')](_0x24e9('0xc'),auth[_0x24e9('0x9')](),controller[_0x24e9('0xd')]);router[_0x24e9('0x8')](_0x24e9('0xe'),auth[_0x24e9('0x9')](),controller['getDispositions']);router['get'](_0x24e9('0xf'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x10')]);router[_0x24e9('0x8')](_0x24e9('0x11'),controller[_0x24e9('0x12')]);router[_0x24e9('0x8')](_0x24e9('0x13'),controller[_0x24e9('0x14')]);router[_0x24e9('0x8')](_0x24e9('0x15'),controller[_0x24e9('0x16')]);router['get']('/:id/system_avatar',controller[_0x24e9('0x17')]);router[_0x24e9('0x8')](_0x24e9('0x18'),auth['isAuthenticated'](),controller[_0x24e9('0x19')]);router[_0x24e9('0x8')]('/:id/snippet',controller[_0x24e9('0x1a')]);router['get'](_0x24e9('0x1b'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x1c')]);router['get'](_0x24e9('0x1d'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x1e')]);router[_0x24e9('0x8')](_0x24e9('0x1f'),controller['getFields']);router[_0x24e9('0x8')]('/:id/offline_messages',auth[_0x24e9('0x9')](),controller['getOfflineMessages']);router[_0x24e9('0x8')](_0x24e9('0x20'),auth['isAuthenticated'](),controller[_0x24e9('0x21')]);router[_0x24e9('0x22')]('/',auth[_0x24e9('0x9')](),controller[_0x24e9('0x23')]);router['post']('/:id/dispositions',auth['isAuthenticated'](),controller['addDisposition']);router[_0x24e9('0x22')](_0x24e9('0xf'),auth[_0x24e9('0x9')](),controller['addAnswer']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xd790b3,_0xa5fffe,_0x48349f){_0x48349f(null,path[_0x24e9('0x24')](config['root'],_0x24e9('0x25')));},'filename':function(_0x44a09e,_0x527a6d,_0x5ea65d){_0x5ea65d(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date['now'](),_0x527a6d['originalname']));}})});router['post']('/:id/logo',upload[_0x24e9('0x28')](_0x24e9('0x29')),controller['addLogo']);var upload=multer({'storage':multer[_0x24e9('0x2a')]({'destination':function(_0x26f18d,_0x34b599,_0x5464b3){_0x5464b3(null,path[_0x24e9('0x24')](config['root'],_0x24e9('0x2b')));},'filename':function(_0x303e83,_0x2b9809,_0x5dbb63){_0x5dbb63(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date[_0x24e9('0x2c')](),_0x2b9809[_0x24e9('0x2d')]));}})});router[_0x24e9('0x22')]('/:id/avatar',upload[_0x24e9('0x28')](_0x24e9('0x29')),controller['addAvatar']);var upload=multer({'storage':multer[_0x24e9('0x2a')]({'destination':function(_0x1c41a6,_0x5b6397,_0x4a2db9){_0x4a2db9(null,path[_0x24e9('0x24')](config['root'],_0x24e9('0x2b')));},'filename':function(_0x5392cc,_0x4ea3d6,_0x1d41e5){_0x1d41e5(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date['now'](),_0x4ea3d6['originalname']));}})});router[_0x24e9('0x22')](_0x24e9('0x15'),upload[_0x24e9('0x28')](_0x24e9('0x29')),controller[_0x24e9('0x2e')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x12c08a,_0x2f54b8,_0x5ee1ef){_0x5ee1ef(null,path[_0x24e9('0x24')](config[_0x24e9('0x2f')],_0x24e9('0x2b')));},'filename':function(_0x36cca4,_0x1211b6,_0x5ba0c7){_0x5ba0c7(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date[_0x24e9('0x2c')](),_0x1211b6[_0x24e9('0x2d')]));}})});router[_0x24e9('0x22')]('/:id/system_avatar',upload[_0x24e9('0x28')](_0x24e9('0x29')),controller[_0x24e9('0x30')]);router['post'](_0x24e9('0x31'),controller[_0x24e9('0x32')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0xeaeae6,_0x24259b,_0x554f9a){const _0x42d995=path[_0x24e9('0x24')](config[_0x24e9('0x2f')],'server/files',_0x24e9('0x33'),_0x24e9('0x34'));fs_extra['ensureDir'](_0x42d995,function(){_0x554f9a(null,_0x42d995);});},'filename':function(_0x53d720,_0x5aae23,_0x375fe7){const _0x4b5f30=_0x5aae23[_0x24e9('0x2d')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x1e5136=path[_0x24e9('0x35')](_0x4b5f30);const _0x3b5723=Date[_0x24e9('0x2c')]()+'-'+_0x4b5f30['replace'](_0x1e5136,'')+_0x1e5136;_0x375fe7(null,_0x3b5723);}})});router['post']('/:id/offline',offlineUploadMulter[_0x24e9('0x36')](),controller[_0x24e9('0x37')]);router['post'](_0x24e9('0x18'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x38')]);router[_0x24e9('0x22')](_0x24e9('0x1b'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x39')]);router[_0x24e9('0x22')](_0x24e9('0x1d'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x3a')]);router[_0x24e9('0x22')](_0x24e9('0x20'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x3b')]);router[_0x24e9('0x3c')]('/:id',auth[_0x24e9('0x9')](),controller[_0x24e9('0x3d')]);router['delete'](_0x24e9('0xc'),auth['isAuthenticated'](),controller[_0x24e9('0x3e')]);router[_0x24e9('0x3f')](_0x24e9('0xe'),auth['isAuthenticated'](),controller[_0x24e9('0x40')]);router['delete'](_0x24e9('0xf'),auth[_0x24e9('0x9')](),controller['removeAnswers']);router[_0x24e9('0x3f')]('/:id/users',auth['isAuthenticated'](),controller[_0x24e9('0x41')]);module[_0x24e9('0x42')]=router;
\ No newline at end of file
index 91e754e..3e64be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d0=['Google','STRING','AmazonAWS'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x85d0,0x164));var _0x085d=function(_0x1c7329,_0x580af9){_0x1c7329=_0x1c7329-0x0;var _0x178713=_0x85d0[_0x1c7329];return _0x178713;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0x085d('0x0'),_0x085d('0x1')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x085d('0x2')]},'data2':{'type':Sequelize[_0x085d('0x2')]}};
\ No newline at end of file
+var _0xe14a=['Google','STRING'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xe14a,0x94));var _0xae14=function(_0x4b3227,_0x395d45){_0x4b3227=_0x4b3227-0x0;var _0x497462=_0xe14a[_0x4b3227];return _0x497462;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS',_0xae14('0x0')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xae14('0x1')]},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 99af2b4..0086571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','CloudProvider','fieldName','type','key'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xadb5,0xad));var _0x5adb=function(_0x27e7bd,_0x49a065){_0x27e7bd=_0x27e7bd-0x0;var _0xf45550=_0xadb5[_0x27e7bd];return _0xf45550;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['CloudProvider']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};
\ No newline at end of file
+var _0xadb5=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','CloudProvider','fieldName','type','key'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xadb5,0xad));var _0x5adb=function(_0x34cbfa,_0x2b5c0e){_0x34cbfa=_0x34cbfa-0x0;var _0x314ee6=_0xadb5[_0x34cbfa];return _0x314ee6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['CloudProvider']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};
\ No newline at end of file
index 215565c..025d0ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cfc=['path','rimraf','../../config/environment','exports','CloudProvider','lodash','util','api','moment','bluebird','request-promise'];(function(_0x2e1585,_0x5f234d){var _0x5a9ca7=function(_0x480ba9){while(--_0x480ba9){_0x2e1585['push'](_0x2e1585['shift']());}};_0x5a9ca7(++_0x5f234d);}(_0x6cfc,0x144));var _0xc6cf=function(_0x2125f0,_0x2f23b9){_0x2125f0=_0x2125f0-0x0;var _0x12d6eb=_0x6cfc[_0x2125f0];return _0x12d6eb;};'use strict';var _=require(_0xc6cf('0x0'));var util=require(_0xc6cf('0x1'));var logger=require('../../config/logger')(_0xc6cf('0x2'));var moment=require(_0xc6cf('0x3'));var BPromise=require(_0xc6cf('0x4'));var rp=require(_0xc6cf('0x5'));var fs=require('fs');var path=require(_0xc6cf('0x6'));var rimraf=require(_0xc6cf('0x7'));var config=require(_0xc6cf('0x8'));var attributes=require('./cloudProvider.attributes');module[_0xc6cf('0x9')]=function(_0x483683,_0x1296d2){return _0x483683['define'](_0xc6cf('0xa'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb33d=['bluebird','request-promise','path','rimraf','../../config/environment','cloud_providers','lodash','util','../../config/logger','moment'];(function(_0x3de7a5,_0x1d8880){var _0x46f160=function(_0x4ff8c0){while(--_0x4ff8c0){_0x3de7a5['push'](_0x3de7a5['shift']());}};_0x46f160(++_0x1d8880);}(_0xb33d,0xd8));var _0xdb33=function(_0x4070e5,_0x3cba2c){_0x4070e5=_0x4070e5-0x0;var _0x421852=_0xb33d[_0x4070e5];return _0x421852;};'use strict';var _=require(_0xdb33('0x0'));var util=require(_0xdb33('0x1'));var logger=require(_0xdb33('0x2'))('api');var moment=require(_0xdb33('0x3'));var BPromise=require(_0xdb33('0x4'));var rp=require(_0xdb33('0x5'));var fs=require('fs');var path=require(_0xdb33('0x6'));var rimraf=require(_0xdb33('0x7'));var config=require(_0xdb33('0x8'));var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x383ba0,_0x32a7dc){return _0x383ba0['define']('CloudProvider',attributes,{'tableName':_0xdb33('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba278f3..47bbf85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x486e=['CloudProvider,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x4754b5,_0x3b0a85){var _0x216a2d=function(_0x6f1b12){while(--_0x6f1b12){_0x4754b5['push'](_0x4754b5['shift']());}};_0x216a2d(++_0x3b0a85);}(_0x486e,0xb2));var _0xe486=function(_0x4819c1,_0x11e719){_0x4819c1=_0x4819c1-0x0;var _0x45d265=_0x486e[_0x4819c1];return _0x45d265;};'use strict';var _=require(_0xe486('0x0'));var util=require(_0xe486('0x1'));var moment=require('moment');var BPromise=require(_0xe486('0x2'));var rs=require(_0xe486('0x3'));var fs=require('fs');var Redis=require(_0xe486('0x4'));var db=require(_0xe486('0x5'))['db'];var utils=require(_0xe486('0x6'));var logger=require(_0xe486('0x7'))(_0xe486('0x8'));var config=require(_0xe486('0x9'));var jayson=require(_0xe486('0xa'));var client=jayson[_0xe486('0xb')][_0xe486('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4fac5d,_0x2d0712,_0xea849d){return new BPromise(function(_0x8a85c7,_0x2114a5){return client[_0xe486('0xd')](_0x4fac5d,_0xea849d)[_0xe486('0xe')](function(_0x42c4b3){logger[_0xe486('0xf')]('CloudProvider,\x20%s,\x20%s',_0x2d0712,'request\x20sent');logger[_0xe486('0x10')](_0xe486('0x11'),_0x2d0712,_0xe486('0x12'),JSON[_0xe486('0x13')](_0x42c4b3));if(_0x42c4b3[_0xe486('0x14')]){if(_0x42c4b3[_0xe486('0x14')][_0xe486('0x15')]===0x1f4){logger[_0xe486('0x14')](_0xe486('0x16'),_0x2d0712,_0x42c4b3['error']['message']);return _0x2114a5(_0x42c4b3[_0xe486('0x14')][_0xe486('0x17')]);}logger[_0xe486('0x14')]('CloudProvider,\x20%s,\x20%s',_0x2d0712,_0x42c4b3['error'][_0xe486('0x17')]);return _0x8a85c7(_0x42c4b3['error'][_0xe486('0x17')]);}else{logger[_0xe486('0xf')](_0xe486('0x16'),_0x2d0712,_0xe486('0x12'));_0x8a85c7(_0x42c4b3['result']['message']);}})[_0xe486('0x18')](function(_0x21fca9){logger['error'](_0xe486('0x16'),_0x2d0712,_0x21fca9);_0x2114a5(_0x21fca9);});});}
\ No newline at end of file
+var _0x2cf5=['rpc','../../config/environment','jayson/promise','client','http','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb'];(function(_0x728a0d,_0x44ca89){var _0xc575ed=function(_0x418c03){while(--_0x418c03){_0x728a0d['push'](_0x728a0d['shift']());}};_0xc575ed(++_0x44ca89);}(_0x2cf5,0x19f));var _0x52cf=function(_0x4559a4,_0x3aec50){_0x4559a4=_0x4559a4-0x0;var _0x34dba1=_0x2cf5[_0x4559a4];return _0x34dba1;};'use strict';var _=require(_0x52cf('0x0'));var util=require(_0x52cf('0x1'));var moment=require('moment');var BPromise=require(_0x52cf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x52cf('0x3'));var db=require(_0x52cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x52cf('0x5'));var config=require(_0x52cf('0x6'));var jayson=require(_0x52cf('0x7'));var client=jayson[_0x52cf('0x8')][_0x52cf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13d2fe,_0x1ab7cd,_0x390162){return new BPromise(function(_0x41d874,_0x23b2ab){return client[_0x52cf('0xa')](_0x13d2fe,_0x390162)['then'](function(_0x46d7ac){logger[_0x52cf('0xb')](_0x52cf('0xc'),_0x1ab7cd,_0x52cf('0xd'));logger['debug'](_0x52cf('0xe'),_0x1ab7cd,_0x52cf('0xd'),JSON[_0x52cf('0xf')](_0x46d7ac));if(_0x46d7ac['error']){if(_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x11')]===0x1f4){logger[_0x52cf('0x10')](_0x52cf('0xc'),_0x1ab7cd,_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);return _0x23b2ab(_0x46d7ac['error']['message']);}logger[_0x52cf('0x10')](_0x52cf('0xc'),_0x1ab7cd,_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);return _0x41d874(_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);}else{logger[_0x52cf('0xb')](_0x52cf('0xc'),_0x1ab7cd,'request\x20sent');_0x41d874(_0x46d7ac[_0x52cf('0x13')][_0x52cf('0x12')]);}})[_0x52cf('0x14')](function(_0x580154){logger[_0x52cf('0x10')]('CloudProvider,\x20%s,\x20%s',_0x1ab7cd,_0x580154);_0x23b2ab(_0x580154);});});}
\ No newline at end of file
index a2aa916..95c9b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf244=['put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','isAuthenticated','index','get','show','create'];(function(_0x48d0c9,_0x5b26ac){var _0xcfaa34=function(_0x45edfc){while(--_0x45edfc){_0x48d0c9['push'](_0x48d0c9['shift']());}};_0xcfaa34(++_0x5b26ac);}(_0xf244,0xae));var _0x4f24=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xf244[_0x2070da];return _0x4f9fe1;};'use strict';var multer=require(_0x4f24('0x0'));var util=require(_0x4f24('0x1'));var path=require(_0x4f24('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f24('0x3'));var router=express[_0x4f24('0x4')]();var fs_extra=require(_0x4f24('0x5'));var auth=require(_0x4f24('0x6'));var interaction=require(_0x4f24('0x7'));var config=require(_0x4f24('0x8'));var controller=require(_0x4f24('0x9'));router['get']('/',auth[_0x4f24('0xa')](),controller[_0x4f24('0xb')]);router[_0x4f24('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x4f24('0xd')]);router['post']('/',auth[_0x4f24('0xa')](),controller[_0x4f24('0xe')]);router[_0x4f24('0xf')](_0x4f24('0x10'),auth[_0x4f24('0xa')](),controller[_0x4f24('0x11')]);router[_0x4f24('0x12')](_0x4f24('0x10'),auth[_0x4f24('0xa')](),controller[_0x4f24('0x13')]);module[_0x4f24('0x14')]=router;
\ No newline at end of file
+var _0xc712=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer'];(function(_0x45fe35,_0x20c4b2){var _0x35c244=function(_0x161ae9){while(--_0x161ae9){_0x45fe35['push'](_0x45fe35['shift']());}};_0x35c244(++_0x20c4b2);}(_0xc712,0xbd));var _0x2c71=function(_0x1611ee,_0x286469){_0x1611ee=_0x1611ee-0x0;var _0x59c7e9=_0xc712[_0x1611ee];return _0x59c7e9;};'use strict';var multer=require(_0x2c71('0x0'));var util=require(_0x2c71('0x1'));var path=require(_0x2c71('0x2'));var timeout=require(_0x2c71('0x3'));var express=require('express');var router=express[_0x2c71('0x4')]();var fs_extra=require(_0x2c71('0x5'));var auth=require(_0x2c71('0x6'));var interaction=require(_0x2c71('0x7'));var config=require(_0x2c71('0x8'));var controller=require('./cloudProvider.controller');router[_0x2c71('0x9')]('/',auth[_0x2c71('0xa')](),controller['index']);router[_0x2c71('0x9')](_0x2c71('0xb'),auth[_0x2c71('0xa')](),controller[_0x2c71('0xc')]);router[_0x2c71('0xd')]('/',auth[_0x2c71('0xa')](),controller[_0x2c71('0xe')]);router[_0x2c71('0xf')]('/:id',auth[_0x2c71('0xa')](),controller[_0x2c71('0x10')]);router[_0x2c71('0x11')](_0x2c71('0xb'),auth[_0x2c71('0xa')](),controller['destroy']);module[_0x2c71('0x12')]=router;
\ No newline at end of file
index 4c1f984..82fe82b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34c6=['STRING','name','sequelize'];(function(_0x2b51a9,_0x5b9092){var _0x2de139=function(_0x5076b3){while(--_0x5076b3){_0x2b51a9['push'](_0x2b51a9['shift']());}};_0x2de139(++_0x5b9092);}(_0x34c6,0x1cd));var _0x634c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x34c6[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x634c('0x0'));module['exports']={'name':{'type':Sequelize[_0x634c('0x1')],'unique':_0x634c('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x634c('0x1')]},'companyId':{'type':Sequelize[_0x634c('0x1')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x634c('0x1')]},'type':{'type':Sequelize[_0x634c('0x1')]},'street':{'type':Sequelize[_0x634c('0x1')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x634c('0x1')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x634c('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x634c('0x1')]},'sStreet':{'type':Sequelize[_0x634c('0x1')]},'sPostalCode':{'type':Sequelize[_0x634c('0x1')]},'sCity':{'type':Sequelize[_0x634c('0x1')]},'sCountry':{'type':Sequelize[_0x634c('0x1')]},'description':{'type':Sequelize[_0x634c('0x1')]}};
\ No newline at end of file
+var _0x58ea=['STRING','name','exports'];(function(_0x34b5ca,_0x594010){var _0x2d72c0=function(_0x4ae1d3){while(--_0x4ae1d3){_0x34b5ca['push'](_0x34b5ca['shift']());}};_0x2d72c0(++_0x594010);}(_0x58ea,0xa7));var _0xa58e=function(_0x3d145b,_0x2cfc6b){_0x3d145b=_0x3d145b-0x0;var _0x1300e2=_0x58ea[_0x3d145b];return _0x1300e2;};'use strict';var Sequelize=require('sequelize');module[_0xa58e('0x0')]={'name':{'type':Sequelize[_0xa58e('0x1')],'unique':_0xa58e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xa58e('0x1')]},'companyId':{'type':Sequelize[_0xa58e('0x1')]},'website':{'type':Sequelize[_0xa58e('0x1')]},'phone':{'type':Sequelize[_0xa58e('0x1')]},'fax':{'type':Sequelize[_0xa58e('0x1')]},'type':{'type':Sequelize[_0xa58e('0x1')]},'street':{'type':Sequelize[_0xa58e('0x1')]},'postalCode':{'type':Sequelize[_0xa58e('0x1')]},'city':{'type':Sequelize[_0xa58e('0x1')]},'country':{'type':Sequelize[_0xa58e('0x1')]},'email':{'type':Sequelize[_0xa58e('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xa58e('0x1')]},'sPostalCode':{'type':Sequelize[_0xa58e('0x1')]},'sCity':{'type':Sequelize[_0xa58e('0x1')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa58e('0x1')]}};
\ No newline at end of file
index 2b10f81..3242a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18b0=['filter','where','map','merge','includeAll','findAll','rows','catch','show','rawAttributes','include','options','find','create','body','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','CmContact','addContacts','ids','omit','getContacts','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','destroy','get','Companies','UserProfileResource','then','end','stack','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','fields','attributes','length','order','sort','pick'];(function(_0x52abc2,_0x2bb94f){var _0x209212=function(_0x176429){while(--_0x176429){_0x52abc2['push'](_0x52abc2['shift']());}};_0x209212(++_0x2bb94f);}(_0x18b0,0x72));var _0x018b=function(_0x5cc6c5,_0x2d8c9b){_0x5cc6c5=_0x5cc6c5-0x0;var _0x28f833=_0x18b0[_0x5cc6c5];return _0x28f833;};'use strict';var emlformat=require(_0x018b('0x0'));var rimraf=require(_0x018b('0x1'));var zipdir=require(_0x018b('0x2'));var jsonpatch=require(_0x018b('0x3'));var rp=require(_0x018b('0x4'));var moment=require('moment');var BPromise=require(_0x018b('0x5'));var Mustache=require('mustache');var util=require(_0x018b('0x6'));var path=require(_0x018b('0x7'));var sox=require('sox');var csv=require(_0x018b('0x8'));var ejs=require(_0x018b('0x9'));var fs=require('fs');var fs_extra=require(_0x018b('0xa'));var _=require(_0x018b('0xb'));var squel=require(_0x018b('0xc'));var crypto=require('crypto');var jsforce=require(_0x018b('0xd'));var deskjs=require(_0x018b('0xe'));var toCsv=require(_0x018b('0x8'));var querystring=require(_0x018b('0xf'));var Papa=require(_0x018b('0x10'));var Redis=require(_0x018b('0x11'));var authService=require(_0x018b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x018b('0x13'));var hardwareService=require(_0x018b('0x14'));var logger=require(_0x018b('0x15'))(_0x018b('0x16'));var utils=require('../../config/utils');var config=require(_0x018b('0x17'));var licenseUtil=require(_0x018b('0x18'));var db=require(_0x018b('0x19'))['db'];function respondWithStatusCode(_0x36de1a,_0x4ad865){_0x4ad865=_0x4ad865||0xcc;return function(_0x25ec6b){if(_0x25ec6b){return _0x36de1a[_0x018b('0x1a')](_0x4ad865);}return _0x36de1a['status'](_0x4ad865)['end']();};}function respondWithResult(_0x48c092,_0x2b6a68){_0x2b6a68=_0x2b6a68||0xc8;return function(_0x4b22d8){if(_0x4b22d8){return _0x48c092[_0x018b('0x1b')](_0x2b6a68)[_0x018b('0x1c')](_0x4b22d8);}};}function respondWithFilteredResult(_0x261763,_0x56202a){return function(_0x534844){if(_0x534844){var _0x3f939e=typeof _0x56202a[_0x018b('0x1d')]==='undefined'&&typeof _0x56202a[_0x018b('0x1e')]===_0x018b('0x1f');var _0x5906e4=_0x534844[_0x018b('0x20')];var _0x8af20d=_0x3f939e?0x0:_0x56202a['offset'];var _0x1514bd=_0x3f939e?_0x534844[_0x018b('0x20')]:_0x56202a[_0x018b('0x1d')]+_0x56202a[_0x018b('0x1e')];var _0x4921a1;if(_0x1514bd>=_0x5906e4){_0x1514bd=_0x5906e4;_0x4921a1=0xc8;}else{_0x4921a1=0xce;}_0x261763[_0x018b('0x1b')](_0x4921a1);return _0x261763[_0x018b('0x21')](_0x018b('0x22'),_0x8af20d+'-'+_0x1514bd+'/'+_0x5906e4)['json'](_0x534844);}return null;};}function patchUpdates(_0x1600e7){return function(_0x5821be){try{jsonpatch[_0x018b('0x23')](_0x5821be,_0x1600e7,!![]);}catch(_0x310cf9){return BPromise['reject'](_0x310cf9);}return _0x5821be['save']();};}function saveUpdates(_0x309bed,_0x39ed47){return function(_0x3d4842){if(_0x3d4842){return _0x3d4842[_0x018b('0x24')](_0x309bed)['then'](function(_0x1986e1){return _0x1986e1;});}return null;};}function removeEntity(_0x10283d,_0x3256d1){return function(_0x22c418){if(_0x22c418){return _0x22c418[_0x018b('0x25')]()['then'](function(){var _0x4a2f42=_0x22c418[_0x018b('0x26')]({'plain':!![]});var _0x5ccd8e=_0x018b('0x27');return db[_0x018b('0x28')][_0x018b('0x25')]({'where':{'type':_0x5ccd8e,'resourceId':_0x4a2f42['id']}})[_0x018b('0x29')](function(){return _0x22c418;});})[_0x018b('0x29')](function(){_0x10283d['status'](0xcc)[_0x018b('0x2a')]();});}};}function handleEntityNotFound(_0x2782e2,_0x2f9bc2){return function(_0x5079d5){if(!_0x5079d5){_0x2782e2[_0x018b('0x1a')](0x194);}return _0x5079d5;};}function handleError(_0x411109,_0x176354){_0x176354=_0x176354||0x1f4;return function(_0x4b916a){logger['error'](_0x4b916a[_0x018b('0x2b')]);if(_0x4b916a[_0x018b('0x2c')]){delete _0x4b916a['name'];}_0x411109[_0x018b('0x1b')](_0x176354)[_0x018b('0x2d')](_0x4b916a);};}exports[_0x018b('0x2e')]=function(_0x531365,_0xad6948){var _0x57410e={},_0x57a912={},_0x2d5343={'count':0x0,'rows':[]};return db[_0x018b('0x2f')][_0x018b('0x30')]()[_0x018b('0x29')](function(_0x9e79dc){_0x57a912[_0x018b('0x31')]=_[_0x018b('0x32')](_0x9e79dc);_0x57a912[_0x018b('0x33')]=_[_0x018b('0x32')](_0x531365['query']);_0x57a912[_0x018b('0x34')]=_[_0x018b('0x35')](_0x57a912[_0x018b('0x31')],_0x57a912['query']);_0x57410e['attributes']=_[_0x018b('0x35')](_0x57a912[_0x018b('0x31')],qs[_0x018b('0x36')](_0x531365[_0x018b('0x33')]['fields']));_0x57410e['attributes']=_0x57410e[_0x018b('0x37')][_0x018b('0x38')]?_0x57410e['attributes']:_0x57a912[_0x018b('0x31')];if(!_0x531365[_0x018b('0x33')]['hasOwnProperty']('nolimit')){_0x57410e[_0x018b('0x1e')]=qs[_0x018b('0x1e')](_0x531365[_0x018b('0x33')]['limit']);_0x57410e['offset']=qs['offset'](_0x531365['query']['offset']);}_0x57410e[_0x018b('0x39')]=qs[_0x018b('0x3a')](_0x531365[_0x018b('0x33')][_0x018b('0x3a')]);_0x57410e['where']=qs[_0x018b('0x34')](_[_0x018b('0x3b')](_0x531365[_0x018b('0x33')],_0x57a912[_0x018b('0x34')]),_0x9e79dc);if(_0x531365[_0x018b('0x33')][_0x018b('0x3c')]){_0x57410e[_0x018b('0x3d')]=_['merge'](_0x57410e['where'],{'$or':_[_0x018b('0x3e')](_0x57410e[_0x018b('0x37')],function(_0x472864){var _0x23101c={};_0x23101c[_0x472864]={'$like':'%'+_0x531365[_0x018b('0x33')][_0x018b('0x3c')]+'%'};return _0x23101c;})});}_0x57410e=_[_0x018b('0x3f')]({},_0x57410e,_0x531365['options']);var _0x32c6c8={'where':_0x57410e[_0x018b('0x3d')]};return db[_0x018b('0x2f')][_0x018b('0x20')](_0x32c6c8)['then'](function(_0x24ffea){_0x2d5343[_0x018b('0x20')]=_0x24ffea;if(_0x531365[_0x018b('0x33')][_0x018b('0x40')]){_0x57410e['include']=[{'all':!![]}];}return db[_0x018b('0x2f')][_0x018b('0x41')](_0x57410e);})[_0x018b('0x29')](function(_0x4f7ac3){_0x2d5343[_0x018b('0x42')]=_0x4f7ac3;return _0x2d5343;})[_0x018b('0x29')](respondWithFilteredResult(_0xad6948,_0x57410e))[_0x018b('0x43')](handleError(_0xad6948,null));})[_0x018b('0x43')](handleError(_0xad6948,null));};exports[_0x018b('0x44')]=function(_0x23c381,_0xf5b59a){var _0x149581={'raw':![],'where':{'id':_0x23c381['params']['id']}},_0x3587e7={};_0x3587e7['model']=_[_0x018b('0x32')](db[_0x018b('0x2f')][_0x018b('0x45')]);_0x3587e7[_0x018b('0x33')]=_[_0x018b('0x32')](_0x23c381[_0x018b('0x33')]);_0x3587e7[_0x018b('0x34')]=_[_0x018b('0x35')](_0x3587e7[_0x018b('0x31')],_0x3587e7[_0x018b('0x33')]);_0x149581[_0x018b('0x37')]=_[_0x018b('0x35')](_0x3587e7['model'],qs[_0x018b('0x36')](_0x23c381[_0x018b('0x33')][_0x018b('0x36')]));_0x149581[_0x018b('0x37')]=_0x149581['attributes']['length']?_0x149581[_0x018b('0x37')]:_0x3587e7['model'];if(_0x23c381['query'][_0x018b('0x40')]){_0x149581[_0x018b('0x46')]=[{'all':!![]}];}_0x149581=_['merge']({},_0x149581,_0x23c381[_0x018b('0x47')]);return db['CmCompany'][_0x018b('0x48')](_0x149581)[_0x018b('0x29')](handleEntityNotFound(_0xf5b59a,null))[_0x018b('0x29')](respondWithResult(_0xf5b59a,null))['catch'](handleError(_0xf5b59a,null));};exports['create']=function(_0x453e95,_0x17faba){return db[_0x018b('0x2f')][_0x018b('0x49')](_0x453e95[_0x018b('0x4a')],{})[_0x018b('0x29')](function(_0x290a4d){var _0x356d47=_0x453e95[_0x018b('0x4b')]['get']({'plain':!![]});if(!_0x356d47)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x356d47['role']===_0x018b('0x4b')){var _0x407902=_0x290a4d[_0x018b('0x26')]({'plain':!![]});var _0x22b7f5=_0x018b('0x27');return db[_0x018b('0x4c')][_0x018b('0x48')]({'where':{'name':_0x22b7f5,'userProfileId':_0x356d47[_0x018b('0x4d')]},'raw':!![]})[_0x018b('0x29')](function(_0x2cd65f){if(_0x2cd65f&&_0x2cd65f['autoAssociation']===0x0){return db[_0x018b('0x28')]['create']({'name':_0x407902['name'],'resourceId':_0x407902['id'],'type':_0x2cd65f[_0x018b('0x2c')],'sectionId':_0x2cd65f['id']},{})['then'](function(){return _0x290a4d;});}else{return _0x290a4d;}})['catch'](function(_0x359207){logger[_0x018b('0x4e')](_0x018b('0x4f'),_0x359207);throw _0x359207;});}return _0x290a4d;})['then'](respondWithResult(_0x17faba,0xc9))[_0x018b('0x43')](handleError(_0x17faba,null));};exports['update']=function(_0xa520dc,_0x5e9390){if(_0xa520dc['body']['id']){delete _0xa520dc[_0x018b('0x4a')]['id'];}return db[_0x018b('0x2f')][_0x018b('0x48')]({'where':{'id':_0xa520dc[_0x018b('0x50')]['id']}})[_0x018b('0x29')](handleEntityNotFound(_0x5e9390,null))[_0x018b('0x29')](saveUpdates(_0xa520dc[_0x018b('0x4a')],null))['then'](respondWithResult(_0x5e9390,null))[_0x018b('0x43')](handleError(_0x5e9390,null));};exports['destroy']=function(_0x393a28,_0x42d70f){return db[_0x018b('0x2f')][_0x018b('0x48')]({'where':{'id':_0x393a28[_0x018b('0x50')]['id']}})[_0x018b('0x29')](handleEntityNotFound(_0x42d70f,null))[_0x018b('0x29')](removeEntity(_0x42d70f,null))[_0x018b('0x43')](handleError(_0x42d70f,null));};exports['describe']=function(_0x202db2,_0x573e54){return db[_0x018b('0x2f')]['describe']()[_0x018b('0x29')](respondWithResult(_0x573e54,null))[_0x018b('0x43')](handleError(_0x573e54,null));};exports['addContacts']=function(_0x135b04,_0x6f43d6,_0x594e19){return db[_0x018b('0x51')][_0x018b('0x48')]({'where':{'id':_0x135b04[_0x018b('0x50')]['id']}})[_0x018b('0x29')](handleEntityNotFound(_0x6f43d6,null))[_0x018b('0x29')](function(_0x4789b2){if(_0x4789b2){return _0x4789b2[_0x018b('0x52')](_0x135b04[_0x018b('0x4a')][_0x018b('0x53')],_[_0x018b('0x54')](_0x135b04['body'],['ids','id'])||{});}})[_0x018b('0x29')](respondWithResult(_0x6f43d6,null))['catch'](handleError(_0x6f43d6,null));};exports['getContacts']=function(_0xd92c96,_0xce5778,_0x43c7ee){var _0xa17b28={};var _0x333081={};var _0x59edc3;var _0x4b8dd1;return db[_0x018b('0x2f')]['findOne']({'where':{'id':_0xd92c96[_0x018b('0x50')]['id']}})[_0x018b('0x29')](handleEntityNotFound(_0xce5778,null))['then'](function(_0x40b29f){if(_0x40b29f){_0x59edc3=_0x40b29f;_0x333081[_0x018b('0x31')]=_[_0x018b('0x32')](db['CmContact'][_0x018b('0x45')]);_0x333081[_0x018b('0x33')]=_[_0x018b('0x32')](_0xd92c96['query']);_0x333081['filters']=_['intersection'](_0x333081['model'],_0x333081[_0x018b('0x33')]);_0xa17b28[_0x018b('0x37')]=_[_0x018b('0x35')](_0x333081[_0x018b('0x31')],qs[_0x018b('0x36')](_0xd92c96[_0x018b('0x33')][_0x018b('0x36')]));_0xa17b28[_0x018b('0x37')]=_0xa17b28['attributes'][_0x018b('0x38')]?_0xa17b28[_0x018b('0x37')]:_0x333081[_0x018b('0x31')];_0xa17b28[_0x018b('0x39')]=qs[_0x018b('0x3a')](_0xd92c96[_0x018b('0x33')]['sort']);_0xa17b28['where']=qs['filters'](_[_0x018b('0x3b')](_0xd92c96[_0x018b('0x33')],_0x333081['filters']));if(_0xd92c96[_0x018b('0x33')][_0x018b('0x3c')]){_0xa17b28['where']=_[_0x018b('0x3f')](_0xa17b28[_0x018b('0x3d')],{'$or':_[_0x018b('0x3e')](_0xa17b28[_0x018b('0x37')],function(_0x31f627){var _0x16c7d5={};_0x16c7d5[_0x31f627]={'$like':'%'+_0xd92c96['query'][_0x018b('0x3c')]+'%'};return _0x16c7d5;})});}_0xa17b28=_[_0x018b('0x3f')]({},_0xa17b28,_0xd92c96[_0x018b('0x47')]);return _0x59edc3[_0x018b('0x55')](_0xa17b28);}})[_0x018b('0x29')](function(_0x2ed1aa){if(_0x2ed1aa){_0x4b8dd1=_0x2ed1aa[_0x018b('0x38')];if(!_0xd92c96[_0x018b('0x33')][_0x018b('0x56')]('nolimit')){_0xa17b28[_0x018b('0x1e')]=qs[_0x018b('0x1e')](_0xd92c96[_0x018b('0x33')][_0x018b('0x1e')]);_0xa17b28[_0x018b('0x1d')]=qs[_0x018b('0x1d')](_0xd92c96[_0x018b('0x33')][_0x018b('0x1d')]);}return _0x59edc3['getContacts'](_0xa17b28);}})[_0x018b('0x29')](function(_0x365b2e){if(_0x365b2e){return _0x365b2e?{'count':_0x4b8dd1,'rows':_0x365b2e}:null;}})[_0x018b('0x29')](respondWithResult(_0xce5778,null))[_0x018b('0x43')](handleError(_0xce5778,null));};
\ No newline at end of file
+var _0xf3d6=['where','pick','filter','merge','map','options','includeAll','include','findAll','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','UserProfileSection','userProfileId','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids','omit','findOne','rawAttributes','getContacts','nolimit','eml-format','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x3cae30,_0x5d8b99){var _0x263f77=function(_0x308222){while(--_0x308222){_0x3cae30['push'](_0x3cae30['shift']());}};_0x263f77(++_0x5d8b99);}(_0xf3d6,0x78));var _0x6f3d=function(_0xaf0996,_0x3ee642){_0xaf0996=_0xaf0996-0x0;var _0x8fde5a=_0xf3d6[_0xaf0996];return _0x8fde5a;};'use strict';var emlformat=require(_0x6f3d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6f3d('0x1'));var jsonpatch=require(_0x6f3d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6f3d('0x3'));var path=require(_0x6f3d('0x4'));var sox=require(_0x6f3d('0x5'));var csv=require(_0x6f3d('0x6'));var ejs=require(_0x6f3d('0x7'));var fs=require('fs');var fs_extra=require(_0x6f3d('0x8'));var _=require(_0x6f3d('0x9'));var squel=require(_0x6f3d('0xa'));var crypto=require('crypto');var jsforce=require(_0x6f3d('0xb'));var deskjs=require(_0x6f3d('0xc'));var toCsv=require(_0x6f3d('0x6'));var querystring=require(_0x6f3d('0xd'));var Papa=require(_0x6f3d('0xe'));var Redis=require(_0x6f3d('0xf'));var authService=require(_0x6f3d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6f3d('0x11'));var hardwareService=require(_0x6f3d('0x12'));var logger=require(_0x6f3d('0x13'))(_0x6f3d('0x14'));var utils=require(_0x6f3d('0x15'));var config=require(_0x6f3d('0x16'));var licenseUtil=require(_0x6f3d('0x17'));var db=require(_0x6f3d('0x18'))['db'];function respondWithStatusCode(_0x100630,_0x2a7bf8){_0x2a7bf8=_0x2a7bf8||0xcc;return function(_0x3bba8b){if(_0x3bba8b){return _0x100630[_0x6f3d('0x19')](_0x2a7bf8);}return _0x100630[_0x6f3d('0x1a')](_0x2a7bf8)[_0x6f3d('0x1b')]();};}function respondWithResult(_0x2ac6fe,_0x1fb3fd){_0x1fb3fd=_0x1fb3fd||0xc8;return function(_0x5eae49){if(_0x5eae49){return _0x2ac6fe[_0x6f3d('0x1a')](_0x1fb3fd)[_0x6f3d('0x1c')](_0x5eae49);}};}function respondWithFilteredResult(_0x1c28c6,_0x1792cc){return function(_0x68709f){if(_0x68709f){var _0x323201=typeof _0x1792cc[_0x6f3d('0x1d')]==='undefined'&&typeof _0x1792cc[_0x6f3d('0x1e')]===_0x6f3d('0x1f');var _0xda6b23=_0x68709f[_0x6f3d('0x20')];var _0x52ee6f=_0x323201?0x0:_0x1792cc[_0x6f3d('0x1d')];var _0x57aa13=_0x323201?_0x68709f['count']:_0x1792cc[_0x6f3d('0x1d')]+_0x1792cc[_0x6f3d('0x1e')];var _0x5133ab;if(_0x57aa13>=_0xda6b23){_0x57aa13=_0xda6b23;_0x5133ab=0xc8;}else{_0x5133ab=0xce;}_0x1c28c6[_0x6f3d('0x1a')](_0x5133ab);return _0x1c28c6[_0x6f3d('0x21')]('Content-Range',_0x52ee6f+'-'+_0x57aa13+'/'+_0xda6b23)[_0x6f3d('0x1c')](_0x68709f);}return null;};}function patchUpdates(_0x52518c){return function(_0x5d9a08){try{jsonpatch[_0x6f3d('0x22')](_0x5d9a08,_0x52518c,!![]);}catch(_0x4d2442){return BPromise[_0x6f3d('0x23')](_0x4d2442);}return _0x5d9a08[_0x6f3d('0x24')]();};}function saveUpdates(_0x372926,_0x6753ce){return function(_0x5eb8ea){if(_0x5eb8ea){return _0x5eb8ea[_0x6f3d('0x25')](_0x372926)[_0x6f3d('0x26')](function(_0x309765){return _0x309765;});}return null;};}function removeEntity(_0x3d8a51,_0x368f5b){return function(_0x3a1991){if(_0x3a1991){return _0x3a1991[_0x6f3d('0x27')]()['then'](function(){var _0x26e84d=_0x3a1991[_0x6f3d('0x28')]({'plain':!![]});var _0x5c4fd6='Companies';return db[_0x6f3d('0x29')][_0x6f3d('0x27')]({'where':{'type':_0x5c4fd6,'resourceId':_0x26e84d['id']}})[_0x6f3d('0x26')](function(){return _0x3a1991;});})['then'](function(){_0x3d8a51['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e3cde,_0x55a369){return function(_0x4f2b6d){if(!_0x4f2b6d){_0x5e3cde[_0x6f3d('0x19')](0x194);}return _0x4f2b6d;};}function handleError(_0x264bb1,_0x1aa9f5){_0x1aa9f5=_0x1aa9f5||0x1f4;return function(_0x51ad6d){logger[_0x6f3d('0x2a')](_0x51ad6d[_0x6f3d('0x2b')]);if(_0x51ad6d['name']){delete _0x51ad6d['name'];}_0x264bb1[_0x6f3d('0x1a')](_0x1aa9f5)['send'](_0x51ad6d);};}exports[_0x6f3d('0x2c')]=function(_0x2130df,_0x2958ad){var _0x262272={},_0x491ffd={},_0x45a13a={'count':0x0,'rows':[]};return db[_0x6f3d('0x2d')][_0x6f3d('0x2e')]()['then'](function(_0x15f83f){_0x491ffd[_0x6f3d('0x2f')]=_[_0x6f3d('0x30')](_0x15f83f);_0x491ffd[_0x6f3d('0x31')]=_[_0x6f3d('0x30')](_0x2130df[_0x6f3d('0x31')]);_0x491ffd[_0x6f3d('0x32')]=_[_0x6f3d('0x33')](_0x491ffd[_0x6f3d('0x2f')],_0x491ffd['query']);_0x262272[_0x6f3d('0x34')]=_[_0x6f3d('0x33')](_0x491ffd[_0x6f3d('0x2f')],qs[_0x6f3d('0x35')](_0x2130df[_0x6f3d('0x31')]['fields']));_0x262272[_0x6f3d('0x34')]=_0x262272[_0x6f3d('0x34')][_0x6f3d('0x36')]?_0x262272['attributes']:_0x491ffd['model'];if(!_0x2130df['query'][_0x6f3d('0x37')]('nolimit')){_0x262272[_0x6f3d('0x1e')]=qs['limit'](_0x2130df[_0x6f3d('0x31')]['limit']);_0x262272[_0x6f3d('0x1d')]=qs[_0x6f3d('0x1d')](_0x2130df['query']['offset']);}_0x262272[_0x6f3d('0x38')]=qs[_0x6f3d('0x39')](_0x2130df['query'][_0x6f3d('0x39')]);_0x262272[_0x6f3d('0x3a')]=qs['filters'](_[_0x6f3d('0x3b')](_0x2130df[_0x6f3d('0x31')],_0x491ffd[_0x6f3d('0x32')]),_0x15f83f);if(_0x2130df['query'][_0x6f3d('0x3c')]){_0x262272[_0x6f3d('0x3a')]=_[_0x6f3d('0x3d')](_0x262272['where'],{'$or':_[_0x6f3d('0x3e')](_0x262272['attributes'],function(_0x1afddb){var _0x4709b6={};_0x4709b6[_0x1afddb]={'$like':'%'+_0x2130df[_0x6f3d('0x31')]['filter']+'%'};return _0x4709b6;})});}_0x262272=_[_0x6f3d('0x3d')]({},_0x262272,_0x2130df[_0x6f3d('0x3f')]);var _0x4e8717={'where':_0x262272['where']};return db[_0x6f3d('0x2d')]['count'](_0x4e8717)[_0x6f3d('0x26')](function(_0x3f5f16){_0x45a13a['count']=_0x3f5f16;if(_0x2130df[_0x6f3d('0x31')][_0x6f3d('0x40')]){_0x262272[_0x6f3d('0x41')]=[{'all':!![]}];}return db[_0x6f3d('0x2d')][_0x6f3d('0x42')](_0x262272);})[_0x6f3d('0x26')](function(_0x35a801){_0x45a13a['rows']=_0x35a801;return _0x45a13a;})['then'](respondWithFilteredResult(_0x2958ad,_0x262272))['catch'](handleError(_0x2958ad,null));})[_0x6f3d('0x43')](handleError(_0x2958ad,null));};exports[_0x6f3d('0x44')]=function(_0x5b94bc,_0x403c9c){var _0x555b66={'raw':![],'where':{'id':_0x5b94bc[_0x6f3d('0x45')]['id']}},_0x607595={};_0x607595[_0x6f3d('0x2f')]=_['keys'](db[_0x6f3d('0x2d')]['rawAttributes']);_0x607595['query']=_[_0x6f3d('0x30')](_0x5b94bc[_0x6f3d('0x31')]);_0x607595[_0x6f3d('0x32')]=_[_0x6f3d('0x33')](_0x607595['model'],_0x607595['query']);_0x555b66[_0x6f3d('0x34')]=_['intersection'](_0x607595[_0x6f3d('0x2f')],qs[_0x6f3d('0x35')](_0x5b94bc[_0x6f3d('0x31')]['fields']));_0x555b66[_0x6f3d('0x34')]=_0x555b66[_0x6f3d('0x34')][_0x6f3d('0x36')]?_0x555b66['attributes']:_0x607595[_0x6f3d('0x2f')];if(_0x5b94bc[_0x6f3d('0x31')]['includeAll']){_0x555b66[_0x6f3d('0x41')]=[{'all':!![]}];}_0x555b66=_[_0x6f3d('0x3d')]({},_0x555b66,_0x5b94bc['options']);return db[_0x6f3d('0x2d')][_0x6f3d('0x46')](_0x555b66)[_0x6f3d('0x26')](handleEntityNotFound(_0x403c9c,null))[_0x6f3d('0x26')](respondWithResult(_0x403c9c,null))[_0x6f3d('0x43')](handleError(_0x403c9c,null));};exports['create']=function(_0x318273,_0x109b25){return db[_0x6f3d('0x2d')][_0x6f3d('0x47')](_0x318273[_0x6f3d('0x48')],{})['then'](function(_0x14a0a3){var _0x1b4a0e=_0x318273[_0x6f3d('0x49')][_0x6f3d('0x28')]({'plain':!![]});if(!_0x1b4a0e)throw new Error(_0x6f3d('0x4a'));if(_0x1b4a0e[_0x6f3d('0x4b')]===_0x6f3d('0x49')){var _0x2f2fa5=_0x14a0a3['get']({'plain':!![]});var _0x16fb96=_0x6f3d('0x4c');return db[_0x6f3d('0x4d')][_0x6f3d('0x46')]({'where':{'name':_0x16fb96,'userProfileId':_0x1b4a0e[_0x6f3d('0x4e')]},'raw':!![]})[_0x6f3d('0x26')](function(_0x535c94){if(_0x535c94&&_0x535c94['autoAssociation']===0x0){return db[_0x6f3d('0x29')]['create']({'name':_0x2f2fa5['name'],'resourceId':_0x2f2fa5['id'],'type':_0x535c94[_0x6f3d('0x4f')],'sectionId':_0x535c94['id']},{})[_0x6f3d('0x26')](function(){return _0x14a0a3;});}else{return _0x14a0a3;}})[_0x6f3d('0x43')](function(_0x5dc2cb){logger['error'](_0x6f3d('0x50'),_0x5dc2cb);throw _0x5dc2cb;});}return _0x14a0a3;})['then'](respondWithResult(_0x109b25,0xc9))[_0x6f3d('0x43')](handleError(_0x109b25,null));};exports['update']=function(_0xc9326d,_0x4cd9a9){if(_0xc9326d[_0x6f3d('0x48')]['id']){delete _0xc9326d[_0x6f3d('0x48')]['id'];}return db[_0x6f3d('0x2d')]['find']({'where':{'id':_0xc9326d['params']['id']}})['then'](handleEntityNotFound(_0x4cd9a9,null))[_0x6f3d('0x26')](saveUpdates(_0xc9326d[_0x6f3d('0x48')],null))[_0x6f3d('0x26')](respondWithResult(_0x4cd9a9,null))[_0x6f3d('0x43')](handleError(_0x4cd9a9,null));};exports[_0x6f3d('0x27')]=function(_0x399a37,_0x4052d7){return db[_0x6f3d('0x2d')][_0x6f3d('0x46')]({'where':{'id':_0x399a37[_0x6f3d('0x45')]['id']}})[_0x6f3d('0x26')](handleEntityNotFound(_0x4052d7,null))[_0x6f3d('0x26')](removeEntity(_0x4052d7,null))[_0x6f3d('0x43')](handleError(_0x4052d7,null));};exports[_0x6f3d('0x2e')]=function(_0x188d4c,_0x13d3f6){return db[_0x6f3d('0x2d')][_0x6f3d('0x2e')]()['then'](respondWithResult(_0x13d3f6,null))[_0x6f3d('0x43')](handleError(_0x13d3f6,null));};exports[_0x6f3d('0x51')]=function(_0x44486a,_0x477a61,_0x48eb49){return db[_0x6f3d('0x52')]['find']({'where':{'id':_0x44486a[_0x6f3d('0x45')]['id']}})[_0x6f3d('0x26')](handleEntityNotFound(_0x477a61,null))[_0x6f3d('0x26')](function(_0x49f399){if(_0x49f399){return _0x49f399['addContacts'](_0x44486a[_0x6f3d('0x48')][_0x6f3d('0x53')],_[_0x6f3d('0x54')](_0x44486a[_0x6f3d('0x48')],[_0x6f3d('0x53'),'id'])||{});}})['then'](respondWithResult(_0x477a61,null))[_0x6f3d('0x43')](handleError(_0x477a61,null));};exports['getContacts']=function(_0x502ccc,_0x12f290,_0x28a144){var _0x238871={};var _0x257cab={};var _0x56a361;var _0x59e534;return db['CmCompany'][_0x6f3d('0x55')]({'where':{'id':_0x502ccc[_0x6f3d('0x45')]['id']}})[_0x6f3d('0x26')](handleEntityNotFound(_0x12f290,null))[_0x6f3d('0x26')](function(_0x38aa82){if(_0x38aa82){_0x56a361=_0x38aa82;_0x257cab[_0x6f3d('0x2f')]=_[_0x6f3d('0x30')](db[_0x6f3d('0x52')][_0x6f3d('0x56')]);_0x257cab[_0x6f3d('0x31')]=_[_0x6f3d('0x30')](_0x502ccc[_0x6f3d('0x31')]);_0x257cab[_0x6f3d('0x32')]=_['intersection'](_0x257cab[_0x6f3d('0x2f')],_0x257cab[_0x6f3d('0x31')]);_0x238871[_0x6f3d('0x34')]=_[_0x6f3d('0x33')](_0x257cab[_0x6f3d('0x2f')],qs[_0x6f3d('0x35')](_0x502ccc[_0x6f3d('0x31')]['fields']));_0x238871[_0x6f3d('0x34')]=_0x238871[_0x6f3d('0x34')]['length']?_0x238871['attributes']:_0x257cab[_0x6f3d('0x2f')];_0x238871[_0x6f3d('0x38')]=qs[_0x6f3d('0x39')](_0x502ccc['query'][_0x6f3d('0x39')]);_0x238871[_0x6f3d('0x3a')]=qs[_0x6f3d('0x32')](_[_0x6f3d('0x3b')](_0x502ccc['query'],_0x257cab[_0x6f3d('0x32')]));if(_0x502ccc[_0x6f3d('0x31')][_0x6f3d('0x3c')]){_0x238871[_0x6f3d('0x3a')]=_[_0x6f3d('0x3d')](_0x238871[_0x6f3d('0x3a')],{'$or':_[_0x6f3d('0x3e')](_0x238871[_0x6f3d('0x34')],function(_0x1d2af4){var _0x2a6750={};_0x2a6750[_0x1d2af4]={'$like':'%'+_0x502ccc[_0x6f3d('0x31')][_0x6f3d('0x3c')]+'%'};return _0x2a6750;})});}_0x238871=_[_0x6f3d('0x3d')]({},_0x238871,_0x502ccc[_0x6f3d('0x3f')]);return _0x56a361[_0x6f3d('0x57')](_0x238871);}})[_0x6f3d('0x26')](function(_0x206aed){if(_0x206aed){_0x59e534=_0x206aed['length'];if(!_0x502ccc['query'][_0x6f3d('0x37')](_0x6f3d('0x58'))){_0x238871[_0x6f3d('0x1e')]=qs[_0x6f3d('0x1e')](_0x502ccc[_0x6f3d('0x31')]['limit']);_0x238871[_0x6f3d('0x1d')]=qs[_0x6f3d('0x1d')](_0x502ccc[_0x6f3d('0x31')][_0x6f3d('0x1d')]);}return _0x56a361['getContacts'](_0x238871);}})['then'](function(_0x227cda){if(_0x227cda){return _0x227cda?{'count':_0x59e534,'rows':_0x227cda}:null;}})[_0x6f3d('0x26')](respondWithResult(_0x12f290,null))[_0x6f3d('0x43')](handleError(_0x12f290,null));};
\ No newline at end of file
index b808293..cb7980c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a2b=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmCompany.attributes','exports','CmCompany','../../config/logger'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x4a2b,0x1d5));var _0xb4a2=function(_0x33e20e,_0x36a759){_0x33e20e=_0x33e20e-0x0;var _0x1578a6=_0x4a2b[_0x33e20e];return _0x1578a6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb4a2('0x0'))(_0xb4a2('0x1'));var moment=require(_0xb4a2('0x2'));var BPromise=require(_0xb4a2('0x3'));var rp=require(_0xb4a2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb4a2('0x5'));var config=require(_0xb4a2('0x6'));var attributes=require(_0xb4a2('0x7'));module[_0xb4a2('0x8')]=function(_0x1a4083,_0x2a2c0b){return _0x1a4083['define'](_0xb4a2('0x9'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3881=['rimraf','../../config/environment','./cmCompany.attributes','define','lodash','../../config/logger','api','request-promise'];(function(_0x1c605b,_0x32bde2){var _0x52c0b1=function(_0x3d9a2e){while(--_0x3d9a2e){_0x1c605b['push'](_0x1c605b['shift']());}};_0x52c0b1(++_0x32bde2);}(_0x3881,0xac));var _0x1388=function(_0x5235d5,_0x7f15ca){_0x5235d5=_0x5235d5-0x0;var _0x46a663=_0x3881[_0x5235d5];return _0x46a663;};'use strict';var _=require(_0x1388('0x0'));var util=require('util');var logger=require(_0x1388('0x1'))(_0x1388('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1388('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1388('0x4'));var config=require(_0x1388('0x5'));var attributes=require(_0x1388('0x6'));module['exports']=function(_0x50da6a,_0x78a941){return _0x50da6a[_0x1388('0x7')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4f7269..1c7c896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d6=['CmCompany,\x20%s,\x20%s','message','result','catch','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code'];(function(_0xf8ba57,_0x36376d){var _0x933806=function(_0x4b379f){while(--_0x4b379f){_0xf8ba57['push'](_0xf8ba57['shift']());}};_0x933806(++_0x36376d);}(_0x94d6,0x76));var _0x694d=function(_0x47688b,_0x564582){_0x47688b=_0x47688b-0x0;var _0x5cfcce=_0x94d6[_0x47688b];return _0x5cfcce;};'use strict';var _=require('lodash');var util=require(_0x694d('0x0'));var moment=require(_0x694d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x694d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x694d('0x3'));var logger=require(_0x694d('0x4'))('rpc');var config=require(_0x694d('0x5'));var jayson=require(_0x694d('0x6'));var client=jayson[_0x694d('0x7')][_0x694d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x43c6bb,_0x10c38c,_0x37e94e){return new BPromise(function(_0x5c7ed6,_0x4a3b0f){return client['request'](_0x43c6bb,_0x37e94e)[_0x694d('0x9')](function(_0x305d4d){logger[_0x694d('0xa')]('CmCompany,\x20%s,\x20%s',_0x10c38c,_0x694d('0xb'));logger['debug']('CmCompany,\x20%s,\x20%s,\x20%s',_0x10c38c,'request\x20sent',JSON[_0x694d('0xc')](_0x305d4d));if(_0x305d4d[_0x694d('0xd')]){if(_0x305d4d['error'][_0x694d('0xe')]===0x1f4){logger['error'](_0x694d('0xf'),_0x10c38c,_0x305d4d['error'][_0x694d('0x10')]);return _0x4a3b0f(_0x305d4d[_0x694d('0xd')][_0x694d('0x10')]);}logger[_0x694d('0xd')](_0x694d('0xf'),_0x10c38c,_0x305d4d['error'][_0x694d('0x10')]);return _0x5c7ed6(_0x305d4d[_0x694d('0xd')][_0x694d('0x10')]);}else{logger[_0x694d('0xa')](_0x694d('0xf'),_0x10c38c,_0x694d('0xb'));_0x5c7ed6(_0x305d4d[_0x694d('0x11')]['message']);}})[_0x694d('0x12')](function(_0x20d0ea){logger[_0x694d('0xd')]('CmCompany,\x20%s,\x20%s',_0x10c38c,_0x20d0ea);_0x4a3b0f(_0x20d0ea);});});}
\ No newline at end of file
+var _0xe07d=['code','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error'];(function(_0x5e7f62,_0x5ba327){var _0x4626ab=function(_0x5dcaa0){while(--_0x5dcaa0){_0x5e7f62['push'](_0x5e7f62['shift']());}};_0x4626ab(++_0x5ba327);}(_0xe07d,0x8e));var _0xde07=function(_0x59eefb,_0x2151ce){_0x59eefb=_0x59eefb-0x0;var _0x1a49e8=_0xe07d[_0x59eefb];return _0x1a49e8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xde07('0x0'));var BPromise=require(_0xde07('0x1'));var rs=require(_0xde07('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xde07('0x3'))['db'];var utils=require(_0xde07('0x4'));var logger=require(_0xde07('0x5'))(_0xde07('0x6'));var config=require(_0xde07('0x7'));var jayson=require(_0xde07('0x8'));var client=jayson[_0xde07('0x9')][_0xde07('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d1230,_0x586666,_0x3d242b){return new BPromise(function(_0x542000,_0x47e276){return client[_0xde07('0xb')](_0x5d1230,_0x3d242b)[_0xde07('0xc')](function(_0x2fbfc7){logger[_0xde07('0xd')](_0xde07('0xe'),_0x586666,_0xde07('0xf'));logger[_0xde07('0x10')](_0xde07('0x11'),_0x586666,_0xde07('0xf'),JSON['stringify'](_0x2fbfc7));if(_0x2fbfc7[_0xde07('0x12')]){if(_0x2fbfc7[_0xde07('0x12')][_0xde07('0x13')]===0x1f4){logger[_0xde07('0x12')](_0xde07('0xe'),_0x586666,_0x2fbfc7[_0xde07('0x12')][_0xde07('0x14')]);return _0x47e276(_0x2fbfc7[_0xde07('0x12')]['message']);}logger['error'](_0xde07('0xe'),_0x586666,_0x2fbfc7['error'][_0xde07('0x14')]);return _0x542000(_0x2fbfc7[_0xde07('0x12')][_0xde07('0x14')]);}else{logger[_0xde07('0xd')](_0xde07('0xe'),_0x586666,_0xde07('0xf'));_0x542000(_0x2fbfc7[_0xde07('0x15')]['message']);}})[_0xde07('0x16')](function(_0x2867fc){logger[_0xde07('0x12')](_0xde07('0xe'),_0x586666,_0x2867fc);_0x47e276(_0x2867fc);});});}
\ No newline at end of file
index 7099b42..946e36a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a08=['/:id','show','/:id/contacts','getContacts','post','create','put','update','delete','destroy','exports','multer','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe'];(function(_0x458078,_0x3313d0){var _0x3b7366=function(_0x491f63){while(--_0x491f63){_0x458078['push'](_0x458078['shift']());}};_0x3b7366(++_0x3313d0);}(_0x7a08,0x15f));var _0x87a0=function(_0x2252be,_0x1bceeb){_0x2252be=_0x2252be-0x0;var _0x3dd367=_0x7a08[_0x2252be];return _0x3dd367;};'use strict';var multer=require(_0x87a0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x87a0('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x87a0('0x2'));var interaction=require(_0x87a0('0x3'));var config=require(_0x87a0('0x4'));var controller=require('./cmCompany.controller');router[_0x87a0('0x5')]('/',auth[_0x87a0('0x6')](),controller['index']);router['get'](_0x87a0('0x7'),auth['isAuthenticated'](),controller[_0x87a0('0x8')]);router[_0x87a0('0x5')](_0x87a0('0x9'),auth[_0x87a0('0x6')](),controller[_0x87a0('0xa')]);router['get'](_0x87a0('0xb'),auth[_0x87a0('0x6')](),controller[_0x87a0('0xc')]);router[_0x87a0('0xd')]('/',auth['isAuthenticated'](),controller[_0x87a0('0xe')]);router[_0x87a0('0xd')](_0x87a0('0xb'),auth[_0x87a0('0x6')](),controller['addContacts']);router[_0x87a0('0xf')](_0x87a0('0x9'),auth[_0x87a0('0x6')](),controller[_0x87a0('0x10')]);router[_0x87a0('0x11')]('/:id',auth[_0x87a0('0x6')](),controller[_0x87a0('0x12')]);module[_0x87a0('0x13')]=router;
\ No newline at end of file
+var _0xd889=['util','path','connect-timeout','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','/:id','show','getContacts','post','/:id/contacts','addContacts','put','delete','destroy','exports','multer'];(function(_0x37d8c2,_0x134742){var _0x1dc9e4=function(_0x2739f7){while(--_0x2739f7){_0x37d8c2['push'](_0x37d8c2['shift']());}};_0x1dc9e4(++_0x134742);}(_0xd889,0x92));var _0x9d88=function(_0x4b8520,_0x2887a5){_0x4b8520=_0x4b8520-0x0;var _0x29b55b=_0xd889[_0x4b8520];return _0x29b55b;};'use strict';var multer=require(_0x9d88('0x0'));var util=require(_0x9d88('0x1'));var path=require(_0x9d88('0x2'));var timeout=require(_0x9d88('0x3'));var express=require(_0x9d88('0x4'));var router=express[_0x9d88('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9d88('0x6'));var config=require('../../config/environment');var controller=require('./cmCompany.controller');router[_0x9d88('0x7')]('/',auth[_0x9d88('0x8')](),controller[_0x9d88('0x9')]);router[_0x9d88('0x7')](_0x9d88('0xa'),auth[_0x9d88('0x8')](),controller['describe']);router['get'](_0x9d88('0xb'),auth[_0x9d88('0x8')](),controller[_0x9d88('0xc')]);router[_0x9d88('0x7')]('/:id/contacts',auth[_0x9d88('0x8')](),controller[_0x9d88('0xd')]);router[_0x9d88('0xe')]('/',auth[_0x9d88('0x8')](),controller['create']);router[_0x9d88('0xe')](_0x9d88('0xf'),auth[_0x9d88('0x8')](),controller[_0x9d88('0x10')]);router[_0x9d88('0x11')](_0x9d88('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x9d88('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x9d88('0x13')]);module[_0x9d88('0x14')]=router;
\ No newline at end of file
index bf17daf..9c7d1b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09a8=['UNSIGNED','DATE','NOW','lodash','sequelize','exports','STRING','TEXT','INTEGER'];(function(_0x2d90cc,_0x45bb4e){var _0x227a99=function(_0x3bab2c){while(--_0x3bab2c){_0x2d90cc['push'](_0x2d90cc['shift']());}};_0x227a99(++_0x45bb4e);}(_0x09a8,0x81));var _0x809a=function(_0x213f2c,_0x2e7438){_0x213f2c=_0x213f2c-0x0;var _0x1527de=_0x09a8[_0x213f2c];return _0x1527de;};'use strict';var _=require(_0x809a('0x0'));var Sequelize=require(_0x809a('0x1'));module[_0x809a('0x2')]={'firstName':{'type':Sequelize[_0x809a('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x809a('0x3')]},'street':{'type':Sequelize[_0x809a('0x3')]},'postalCode':{'type':Sequelize[_0x809a('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x809a('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x809a('0x4')]},'phone':{'type':Sequelize[_0x809a('0x3')]},'mobile':{'type':Sequelize[_0x809a('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x809a('0x3')]},'url':{'type':Sequelize[_0x809a('0x3')]},'facebook':{'type':Sequelize[_0x809a('0x3')]},'fb_data':{'type':Sequelize[_0x809a('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x809a('0x3')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0x809a('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x809a('0x3')]},'UserId':{'type':Sequelize[_0x809a('0x5')]},'priority':{'type':Sequelize[_0x809a('0x5')](0x2)[_0x809a('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x809a('0x7')],'defaultValue':Sequelize[_0x809a('0x8')]}};
\ No newline at end of file
+var _0xe4aa=['NOW','lodash','sequelize','exports','STRING','INTEGER'];(function(_0x418ebd,_0x48a6a2){var _0x2f13f8=function(_0x4c7fa9){while(--_0x4c7fa9){_0x418ebd['push'](_0x418ebd['shift']());}};_0x2f13f8(++_0x48a6a2);}(_0xe4aa,0x169));var _0xae4a=function(_0x4690c5,_0x99a638){_0x4690c5=_0x4690c5-0x0;var _0x256e6e=_0xe4aa[_0x4690c5];return _0x256e6e;};'use strict';var _=require(_0xae4a('0x0'));var Sequelize=require(_0xae4a('0x1'));module[_0xae4a('0x2')]={'firstName':{'type':Sequelize[_0xae4a('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xae4a('0x3')]},'street':{'type':Sequelize[_0xae4a('0x3')]},'postalCode':{'type':Sequelize[_0xae4a('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xae4a('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xae4a('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xae4a('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xae4a('0x3')]},'facebook':{'type':Sequelize[_0xae4a('0x3')]},'fb_data':{'type':Sequelize[_0xae4a('0x3')]},'twitter':{'type':Sequelize[_0xae4a('0x3')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0xae4a('0x3')]},'viber':{'type':Sequelize[_0xae4a('0x3')]},'line':{'type':Sequelize[_0xae4a('0x3')]},'wechat':{'type':Sequelize[_0xae4a('0x3')]},'telegram':{'type':Sequelize[_0xae4a('0x3')]},'UserId':{'type':Sequelize[_0xae4a('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xae4a('0x5')]}};
\ No newline at end of file
index e520d55..0ad6093 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fe8=['keyBy','c.firstName','c.phone','c.mobile','c.fax','c.email','c.ListId','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','destroy','CmContact','params','catch','tags','columnName','displayName','findAll','values','merge','body','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','CmHopperBlack','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','FaxInteraction','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','join','bulkCreate','duplicates','findOrCreate','show','$and','cf_%d','pickBy','startsWith','table','setFields','id\x20=\x20?','toParam','phone','getTags','rawAttributes','options','setTags','ids','getHoppers','ContactId','include','getHopperHistories','includeAll','CmHopperFinal','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','file','filename','0777','../../components/import/cm/csv','CompanyId','pid','upload','createReadStream','parse','meta','import','binding','No\x20firstName\x20column\x20specified','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','child_process','fork','../../components/import/cm/csv2','stringify','start\x20child\x20process\x20correctly!','error\x20child\x20process','getJourney','chat','openchannel','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','uniqueid','destination','starttime','endtime','duration','note','userDisposition','UserId','alias','createdAt','findAndCountAll','fullname','startCase','Website','Account','closed','closedAt','disposition','thirdDisposition','customerIp','customerPort','osName','ratingType','ratingValue','referer','mail','substatus','threadId','Interaction','Owner','flatten','sortBy','slice','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','describe','keys','length','cf_','push','CmCustomField','findOne','all','fieldType','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','tools_tags','from','cm_contacts','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','left_join','cm_contact_has_tags','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','find','Tag','value','split','map','forEach','union','uc.UserId\x20=\x20?','dateOfBirth','datetime','DATE','buildExpression','text','start','filter','isNil','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','isArray','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','having','t.id\x20IN\x20?','resolve','agent','some','conditions','User','user','getLists','c.ListId\x20IS\x20NULL','role','ListId','sequelize','toString'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x6fe8,0x1c1));var _0x86fe=function(_0x8854f2,_0x79542c){_0x8854f2=_0x8854f2-0x0;var _0x38505d=_0x6fe8[_0x8854f2];return _0x38505d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86fe('0x0'));var zipdir=require(_0x86fe('0x1'));var jsonpatch=require(_0x86fe('0x2'));var rp=require(_0x86fe('0x3'));var moment=require(_0x86fe('0x4'));var BPromise=require(_0x86fe('0x5'));var Mustache=require(_0x86fe('0x6'));var util=require(_0x86fe('0x7'));var path=require(_0x86fe('0x8'));var sox=require(_0x86fe('0x9'));var csv=require(_0x86fe('0xa'));var ejs=require(_0x86fe('0xb'));var fs=require('fs');var fs_extra=require(_0x86fe('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x86fe('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x86fe('0xa'));var querystring=require('querystring');var Papa=require(_0x86fe('0xe'));var Redis=require(_0x86fe('0xf'));var authService=require(_0x86fe('0x10'));var qs=require(_0x86fe('0x11'));var as=require(_0x86fe('0x12'));var hardwareService=require(_0x86fe('0x13'));var logger=require(_0x86fe('0x14'))('api');var utils=require(_0x86fe('0x15'));var config=require(_0x86fe('0x16'));var licenseUtil=require(_0x86fe('0x17'));var db=require(_0x86fe('0x18'))['db'];config[_0x86fe('0x19')]=_[_0x86fe('0x1a')](config[_0x86fe('0x19')],{'host':_0x86fe('0x1b'),'port':0x18eb});var socket=require(_0x86fe('0x1c'))(new Redis(config[_0x86fe('0x19')]));require(_0x86fe('0x1d'))[_0x86fe('0x1e')](socket);function respondWithStatusCode(_0x14a5ed,_0x30cb70){_0x30cb70=_0x30cb70||0xcc;return function(_0x2aea38){if(_0x2aea38){return _0x14a5ed[_0x86fe('0x1f')](_0x30cb70);}return _0x14a5ed[_0x86fe('0x20')](_0x30cb70)[_0x86fe('0x21')]();};}function respondWithResult(_0x1a3f0d,_0xd9662){_0xd9662=_0xd9662||0xc8;return function(_0x3ec940){if(_0x3ec940){return _0x1a3f0d['status'](_0xd9662)[_0x86fe('0x22')](_0x3ec940);}};}function respondWithFilteredResult(_0x39b5ec,_0x5b10a8){return function(_0x54bc64){if(_0x54bc64){var _0x59b014=typeof _0x5b10a8[_0x86fe('0x23')]===_0x86fe('0x24')&&typeof _0x5b10a8[_0x86fe('0x25')]===_0x86fe('0x24');var _0x8f4be4=_0x54bc64[_0x86fe('0x26')];var _0x216310=_0x59b014?0x0:_0x5b10a8[_0x86fe('0x23')];var _0x5ab9f9=_0x59b014?_0x54bc64['count']:_0x5b10a8[_0x86fe('0x23')]+_0x5b10a8['limit'];var _0xa937fd;if(_0x5ab9f9>=_0x8f4be4){_0x5ab9f9=_0x8f4be4;_0xa937fd=0xc8;}else{_0xa937fd=0xce;}_0x39b5ec[_0x86fe('0x20')](_0xa937fd);return _0x39b5ec[_0x86fe('0x27')](_0x86fe('0x28'),_0x216310+'-'+_0x5ab9f9+'/'+_0x8f4be4)[_0x86fe('0x22')](_0x54bc64);}return null;};}function patchUpdates(_0x580d29){return function(_0x3f0716){try{jsonpatch[_0x86fe('0x29')](_0x3f0716,_0x580d29,!![]);}catch(_0x3d2f71){return BPromise[_0x86fe('0x2a')](_0x3d2f71);}return _0x3f0716['save']();};}function saveUpdates(_0xcfd548,_0x208170){return function(_0x7a0dc9){if(_0x7a0dc9){return _0x7a0dc9[_0x86fe('0x2b')](_0xcfd548)[_0x86fe('0x2c')](function(_0x15593f){return _0x15593f;});}return null;};}function removeEntity(_0x2a6e1f,_0x6b91b){return function(_0x170231){if(_0x170231){return _0x170231['destroy']()[_0x86fe('0x2c')](function(){_0x2a6e1f[_0x86fe('0x20')](0xcc)[_0x86fe('0x21')]();});}};}function handleEntityNotFound(_0x1976d9,_0x3c9e2d){return function(_0x1f2eb0){if(!_0x1f2eb0){_0x1976d9['sendStatus'](0x194);}return _0x1f2eb0;};}function handleError(_0x58b6ff,_0x4d96fb){_0x4d96fb=_0x4d96fb||0x1f4;return function(_0x4b4b14){logger[_0x86fe('0x2d')](_0x4b4b14[_0x86fe('0x2e')]);if(_0x4b4b14['name']){delete _0x4b4b14[_0x86fe('0x2f')];}_0x58b6ff[_0x86fe('0x20')](_0x4d96fb)[_0x86fe('0x30')](_0x4b4b14);};}exports[_0x86fe('0x31')]=function(_0x5cbbea,_0x3bee77){var _0x397e3a={},_0x1f2a6e={},_0x20eaac={'count':0x0,'rows':[]};return db['CmContact'][_0x86fe('0x32')]()[_0x86fe('0x2c')](function(_0x1c4f68){var _0x1a8ed3=[];for(var _0x4f91f3=0x0;_0x4f91f3<Object[_0x86fe('0x33')](_0x1c4f68)[_0x86fe('0x34')];_0x4f91f3++){var _0x532a0e=Object[_0x86fe('0x33')](_0x1c4f68)[_0x4f91f3];if(_['startsWith'](_0x532a0e,_0x86fe('0x35'))){_0x1a8ed3[_0x86fe('0x36')](db[_0x86fe('0x37')][_0x86fe('0x38')]({'where':{'id':_['trimStart'](_0x532a0e,'cf_')},'raw':!![]}));}}return BPromise[_0x86fe('0x39')](_0x1a8ed3)['then'](function(_0x1ba769){for(var _0x472ccd=0x0;_0x472ccd<_0x1ba769[_0x86fe('0x34')];_0x472ccd++){if(_0x1ba769[_0x472ccd]){var _0x1e39bd=_0x86fe('0x35')+_0x1ba769[_0x472ccd]['id'];var _0x5b8bcf=_0x1c4f68[_0x1e39bd];_0x5b8bcf[_0x86fe('0x3a')]=_0x1ba769[_0x472ccd][_0x86fe('0x3b')];}}return _0x1c4f68;});})[_0x86fe('0x2c')](function(_0x43f810){_0x1f2a6e[_0x86fe('0x3c')]=_[_0x86fe('0x33')](_0x43f810);_0x1f2a6e['query']=_[_0x86fe('0x33')](_0x5cbbea[_0x86fe('0x3d')]);_0x1f2a6e[_0x86fe('0x3e')]=_[_0x86fe('0x3f')](_0x1f2a6e[_0x86fe('0x3c')],_0x1f2a6e[_0x86fe('0x3d')]);_0x397e3a[_0x86fe('0x40')]=_[_0x86fe('0x3f')](_0x1f2a6e[_0x86fe('0x3c')],qs[_0x86fe('0x41')](_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x41')]));_0x397e3a[_0x86fe('0x40')]=_0x397e3a['attributes'][_0x86fe('0x34')]?_0x397e3a[_0x86fe('0x40')]:_0x1f2a6e[_0x86fe('0x3c')];if(!_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x42')](_0x86fe('0x43'))){_0x397e3a['limit']=qs[_0x86fe('0x25')](_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x25')]);_0x397e3a[_0x86fe('0x23')]=qs['offset'](_0x5cbbea[_0x86fe('0x3d')]['offset']);}_0x397e3a[_0x86fe('0x44')]=qs[_0x86fe('0x45')](_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x45')]);_0x397e3a[_0x86fe('0x46')]=qs[_0x86fe('0x3e')](_[_0x86fe('0x47')](_0x5cbbea[_0x86fe('0x3d')],_0x1f2a6e[_0x86fe('0x3e')]),_0x43f810);var _0x45af13=[];var _0x45a692=squel[_0x86fe('0x48')]()[_0x86fe('0x49')]('id')[_0x86fe('0x49')](_0x86fe('0x2f'))[_0x86fe('0x49')](_0x86fe('0x4a'))['from'](_0x86fe('0x4b'));var _0x2f3550=squel['select']()[_0x86fe('0x4c')](_0x86fe('0x4d'),'c')['left_join'](_0x86fe('0x4e'),'uc',_0x86fe('0x4f'))[_0x86fe('0x50')](_0x86fe('0x51'),'ct','ct.CmContactId\x20=\x20c.id')[_0x86fe('0x50')](_0x86fe('0x4b'),'t',_0x86fe('0x52'))[_0x86fe('0x46')](_0x86fe('0x53'));var _0x459271=squel[_0x86fe('0x54')]();var _0x7b5f4f=[];var _0x8b1fc7=squel[_0x86fe('0x54')]();var _0x3f7d70;if(_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x55')]){_0x3f7d70=as['parseSearch'](_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x55')]);var _0x516183=_0x3f7d70['sqlOperator'];for(var _0x3d3670=0x0;_0x3d3670<_0x3f7d70['conditions'][_0x86fe('0x34')];_0x3d3670++){var _0x5e9cea=_0x3f7d70['conditions'][_0x3d3670];var _0x59bfe8='c';var _0x5c2f60=_(_0x43f810)['keys']()[_0x86fe('0x56')](function(_0x12a647){return _0x12a647===_0x5e9cea[_0x86fe('0x49')];});if(_0x5c2f60)_0x5c2f60=_0x43f810[_0x5e9cea['field']];if(!_0x5c2f60){if(_0x5e9cea[_0x86fe('0x49')]===_0x86fe('0x57')){var _0x520389=_0x5e9cea[_0x86fe('0x58')][_0x86fe('0x59')](',')[_0x86fe('0x5a')](function(_0x37dde0){return Number(_0x37dde0);});_0x520389[_0x86fe('0x5b')](function(_0x311d85){_0x8b1fc7['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x311d85+',%');});_0x7b5f4f=_[_0x86fe('0x5c')](_0x7b5f4f,_0x520389);}else if(_0x5e9cea['field']==='User'){_0x459271['and'](_0x86fe('0x5d'),_0x5e9cea[_0x86fe('0x58')]);}}else{if(_0x5e9cea[_0x86fe('0x49')]===_0x86fe('0x5e')||_0x5c2f60['fieldType']===_0x86fe('0x5f'))_0x5e9cea['castTo']=_0x86fe('0x60');var _0x311934=as[_0x86fe('0x61')](_0x59bfe8,_0x5c2f60[_0x86fe('0x3b')],_0x5e9cea);_0x459271[_0x516183](_0x311934[_0x86fe('0x62')],_0x311934[_0x86fe('0x58')][_0x86fe('0x63')],_0x311934[_0x86fe('0x58')]['end']);}}}else{var _0xaa1081=_(Object['keys'](_0x5cbbea['query']))['map'](function(_0x5500ce){return _0x43f810[_0x86fe('0x42')](_0x5500ce)?_0x5500ce:undefined;})[_0x86fe('0x64')](function(_0x5e3d51){return!_[_0x86fe('0x65')](_0x5e3d51);})[_0x86fe('0x58')]();if(_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x66')])_0xaa1081[_0x86fe('0x36')](_0x86fe('0x66'));if(!_[_0x86fe('0x67')](_0xaa1081)){_0xaa1081['forEach'](function(_0xe47763){if(_0xe47763==='ListId'){_0x2f3550['where'](_0x86fe('0x68'),[][_0x86fe('0x69')](_0x5cbbea[_0x86fe('0x3d')][_0xe47763]));}else if(_0xe47763==='Contact'){var _0x4369c4='%'+_0x5cbbea[_0x86fe('0x3d')][_0xe47763]+'%';_0x2f3550['where'](_0x86fe('0x6a'),_0x4369c4);}else{_0x2f3550['where']('c.'+_0xe47763+_0x86fe('0x6b'),_0x5cbbea['query'][_0xe47763]);}});}if(_0x5cbbea[_0x86fe('0x3d')]['tag']){_0x7b5f4f=_[_0x86fe('0x6c')](_0x5cbbea['query'][_0x86fe('0x6d')])?_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x6d')]:new Array(_0x5cbbea['query'][_0x86fe('0x6d')]);_0x7b5f4f['forEach'](function(_0x2f8fbe){_0x8b1fc7['or'](_0x86fe('0x6e'),'%,'+_0x2f8fbe+',%');});}if(_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x64')]){var _0x4aebff=_0x5cbbea['query']['filter']['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x4aebff[_0x86fe('0x59')]('\x20')['length']>0x1){_0x459271['or'](_0x86fe('0x6f'),qs[_0x86fe('0x70')](_0x4aebff),null);}else{if(qs[_0x86fe('0x71')](_0x4aebff)){_0x459271['or'](_0x86fe('0x72'),_0x4aebff+'%');_0x459271['or'](_0x86fe('0x73'),_0x4aebff+'%');_0x459271['or'](_0x86fe('0x74'),_0x4aebff+'%');_0x459271['or'](_0x86fe('0x75'),_0x4aebff+'%');}else if(qs[_0x86fe('0x76')](_0x4aebff)){_0x459271['or']('c.email\x20LIKE\x20?',_0x4aebff+'%');}else{_0x459271['or'](_0x86fe('0x77'),'%'+_0x4aebff+'%');_0x459271['or'](_0x86fe('0x78'),'%'+_0x4aebff+'%');_0x459271['or'](_0x86fe('0x79'),'%'+_0x4aebff+'%');}}}}_0x2f3550[_0x86fe('0x46')](_0x459271);_0x2f3550[_0x86fe('0x7a')](_0x86fe('0x7b'));var _0xaab5e9={'type':db[_0x86fe('0x7c')][_0x86fe('0x7d')][_0x86fe('0x7e')],'raw':!![]};var _0x3b04fb=_0x2f3550[_0x86fe('0x7f')]()[_0x86fe('0x49')](_0x86fe('0x7b'));if(_0x397e3a['order']){_0x397e3a['order'][_0x86fe('0x5b')](function(_0x478adf){_0x2f3550[_0x86fe('0x44')]('c.'+_0x478adf[0x0],_0x478adf[0x1]===_0x86fe('0x80')?![]:!![]);});}if(!_[_0x86fe('0x67')](_0x7b5f4f)){_0x2f3550[_0x86fe('0x81')](_0x8b1fc7);_0x3b04fb['where'](_0x86fe('0x82'),_0x7b5f4f);}BPromise[_0x86fe('0x83')]()[_0x86fe('0x2c')](function(){if(!_0x3f7d70)return;if(_0x5cbbea['user']['role']!==_0x86fe('0x84'))return;if(!_[_0x86fe('0x85')](_0x3f7d70[_0x86fe('0x86')],['field',_0x86fe('0x87')])){return _0x5cbbea[_0x86fe('0x88')][_0x86fe('0x89')]({'attributes':['id'],'raw':!![]})[_0x86fe('0x2c')](function(_0x11eae0){if(_['isEmpty'](_0x11eae0)){_0x3b04fb['where'](_0x86fe('0x8a'));_0x2f3550[_0x86fe('0x46')](_0x86fe('0x8a'));}else{_0x3b04fb[_0x86fe('0x46')](_0x86fe('0x68'),_[_0x86fe('0x5a')](_0x11eae0,'id'));_0x2f3550[_0x86fe('0x46')](_0x86fe('0x68'),_[_0x86fe('0x5a')](_0x11eae0,'id'));}});}})[_0x86fe('0x2c')](function(){if(_0x5cbbea[_0x86fe('0x88')][_0x86fe('0x8b')]===_0x86fe('0x84')&&!_0x3f7d70&&!_0x5cbbea[_0x86fe('0x3d')][_0x86fe('0x8c')])return[];return db[_0x86fe('0x8d')][_0x86fe('0x3d')](_0x3b04fb['toString'](),_0xaab5e9);})['then'](function(_0x2ab453){_0x20eaac[_0x86fe('0x26')]=_0x2ab453['length'];if(_0x20eaac['count']===0x0)return[];return db[_0x86fe('0x8d')][_0x86fe('0x3d')](_0x45a692[_0x86fe('0x8e')](),_0xaab5e9)[_0x86fe('0x2c')](function(_0x25c827){_0x45af13=_[_0x86fe('0x8f')](_0x25c827,'id');_0xaab5e9=_['merge'](_0xaab5e9,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5cbbea[_0x86fe('0x3d')]['fields']){_0x397e3a[_0x86fe('0x40')]['forEach'](function(_0xca943d){_0x2f3550[_0x86fe('0x49')]('c.'+_0xca943d);});}else{_0x2f3550['field'](_0x86fe('0x7b'));_0x2f3550[_0x86fe('0x49')](_0x86fe('0x90'));_0x2f3550['field']('c.lastName');_0x2f3550[_0x86fe('0x49')](_0x86fe('0x91'));_0x2f3550[_0x86fe('0x49')](_0x86fe('0x92'));_0x2f3550[_0x86fe('0x49')](_0x86fe('0x93'));_0x2f3550[_0x86fe('0x49')](_0x86fe('0x94'));_0x2f3550[_0x86fe('0x49')](_0x86fe('0x95'));_0x2f3550['field']('c.createdAt');_0x2f3550[_0x86fe('0x49')](_0x86fe('0x96'));_0x2f3550[_0x86fe('0x49')](_0x86fe('0x97'));_0x2f3550[_0x86fe('0x49')](_0x86fe('0x98'),_0x86fe('0x99'));}if(_0x397e3a[_0x86fe('0x25')])_0x2f3550[_0x86fe('0x25')](_0x397e3a['limit']);if(_0x397e3a[_0x86fe('0x23')])_0x2f3550[_0x86fe('0x23')](_0x397e3a[_0x86fe('0x23')]);return db[_0x86fe('0x8d')][_0x86fe('0x3d')](_0x2f3550['toString'](),_0xaab5e9);});})[_0x86fe('0x2c')](function(_0x5039fa){_0x5039fa['forEach'](function(_0x2d22f7){if(_0x2d22f7['TagIds']){_0x2d22f7[_0x86fe('0x9a')]=[];_0x2d22f7[_0x86fe('0x99')][_0x86fe('0x59')](',')[_0x86fe('0x5b')](function(_0x3cd31c){_0x2d22f7[_0x86fe('0x9a')][_0x86fe('0x36')](_0x45af13[_0x3cd31c]);});}delete _0x2d22f7[_0x86fe('0x99')];});_0x20eaac[_0x86fe('0x9b')]=_0x5039fa;return _0x20eaac;})[_0x86fe('0x2c')](respondWithFilteredResult(_0x3bee77,_0x397e3a));})['catch'](handleError(_0x3bee77,null));};exports[_0x86fe('0x9c')]=function(_0x430581,_0x5e7554){return db[_0x86fe('0x9d')][_0x86fe('0x56')]({'where':{'id':_0x430581[_0x86fe('0x9e')]['id']}})[_0x86fe('0x2c')](handleEntityNotFound(_0x5e7554,null))[_0x86fe('0x2c')](removeEntity(_0x5e7554,null))[_0x86fe('0x9f')](handleError(_0x5e7554,null));};exports[_0x86fe('0x32')]=function(_0x588949,_0x3f8649){return db['CmContact']['describe']()[_0x86fe('0x2c')](function(_0x489e30){delete _0x489e30[_0x86fe('0xa0')];for(var _0x2877a9=0x0;_0x2877a9<Object['keys'](_0x489e30)['length'];_0x2877a9++){var _0x3b4998=Object[_0x86fe('0x33')](_0x489e30)[_0x2877a9];if(!_['startsWith'](_0x3b4998,_0x86fe('0x35'))){_0x489e30[_0x3b4998][_0x86fe('0xa1')]=_0x3b4998;_0x489e30[_0x3b4998][_0x86fe('0xa2')]=_0x3b4998;}}return _0x489e30;})['then'](function(_0x27ebff){var _0x12ae79={'where':{'$or':[{'ListId':_0x588949[_0x86fe('0x3d')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x86fe('0x37')][_0x86fe('0xa3')](_0x12ae79)[_0x86fe('0x2c')](function(_0x167c56){for(var _0x16e0b2=0x0;_0x16e0b2<_0x167c56[_0x86fe('0x34')];_0x16e0b2++){var _0xb5f6ff='cf_'+_0x167c56[_0x16e0b2]['id'];_0x27ebff[_0xb5f6ff][_0x86fe('0xa1')]=_0xb5f6ff;_0x27ebff[_0xb5f6ff][_0x86fe('0xa2')]=_0x167c56[_0x16e0b2]['alias'];_0x27ebff[_0xb5f6ff]['custom']={'type':_0x167c56[_0x16e0b2][_0x86fe('0x3b')],'values':_0x167c56[_0x16e0b2][_0x86fe('0xa4')]};}Object[_0x86fe('0x33')](_0x27ebff)['forEach'](function(_0x36aa44){if(!_0x27ebff[_0x36aa44][_0x86fe('0x42')](_0x86fe('0xa1'))){delete _0x27ebff[_0x36aa44];}});return _0x27ebff;});})[_0x86fe('0x2c')](respondWithResult(_0x3f8649,null))['catch'](handleError(_0x3f8649,null));};exports[_0x86fe('0xa5')]=function(_0x57848f,_0x265fad){var _0x3f2135;var _0x2ef61f;var _0x3ec820;if(_0x57848f[_0x86fe('0xa6')]['id']){delete _0x57848f[_0x86fe('0xa6')]['id'];}return db[_0x86fe('0x9d')]['findAll']({'where':{'id':[_0x57848f['body']['to'],_0x57848f[_0x86fe('0xa6')][_0x86fe('0x4c')]]}})['then'](function(_0x594b85){if(_0x594b85){if(_0x594b85[_0x86fe('0x34')]!==0x2){return null;}_0x594b85[0x0]=_0x594b85[0x0][_0x86fe('0xa7')]({'plain':!![]});_0x594b85[0x1]=_0x594b85[0x1][_0x86fe('0xa7')]({'plain':!![]});delete _0x594b85[0x0]['id'];delete _0x594b85[0x1]['id'];return _[_0x86fe('0xa8')](_0x594b85[0x0],_0x594b85[0x1],function(_0x3f46f6,_0x59d49e){if(Array['isArray'](_0x59d49e)&&!_0x59d49e[_0x86fe('0x34')]){return _0x3f46f6;}else if(!_0x59d49e){return _0x3f46f6;}});}})[_0x86fe('0x2c')](handleEntityNotFound(_0x265fad,null))['then'](function(_0x330815){if(_0x330815){if(_0x330815[_0x86fe('0xa0')]&&_[_0x86fe('0x6c')](_0x330815[_0x86fe('0xa0')])){_0x330815[_0x86fe('0xa0')]=_0x330815[_0x86fe('0xa0')]['join']();}logger[_0x86fe('0xa9')](_0x86fe('0xaa'),_0x57848f['body']['to'],_0x57848f['body'][_0x86fe('0x4c')]);return db[_0x86fe('0xab')][_0x86fe('0x9c')]({'where':{'ContactId':[_0x57848f[_0x86fe('0xa6')]['to'],_0x57848f[_0x86fe('0xa6')]['from']]}})['then'](function(_0x32588d){logger[_0x86fe('0xa9')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x32588d);return db[_0x86fe('0xac')][_0x86fe('0x9c')]({'where':{'ContactId':[_0x57848f['body']['to'],_0x57848f[_0x86fe('0xa6')][_0x86fe('0x4c')]]}})['then'](function(_0xe07f5d){logger[_0x86fe('0xa9')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0xe07f5d);return db[_0x86fe('0x9d')][_0x86fe('0xad')](_0x330815);});});}})[_0x86fe('0x2c')](function(_0x142dd0){if(_0x142dd0){_0x3f2135=_0x142dd0;_0x2ef61f={'ContactId':_0x3f2135['id']};_0x3ec820={'where':{'ContactId':[_0x57848f[_0x86fe('0xa6')]['to'],_0x57848f[_0x86fe('0xa6')][_0x86fe('0x4c')]]}};return db[_0x86fe('0xae')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xaf')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb0')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb1')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb2')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb1')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb2')]['update'](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db['SmsInteraction']['update'](_0x2ef61f,_0x3ec820);}})['then'](function(){if(_0x3f2135){return db['SmsMessage'][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb3')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db['FaxMessage'][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})['then'](function(){if(_0x3f2135){return db[_0x86fe('0xb4')]['update'](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb5')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db['CmHopperFinal']['update'](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb6')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db['ReportAgentPreview'][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})['then'](function(){if(_0x3f2135){return db[_0x86fe('0xb7')]['update'](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb8')]['update'](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db['FaxQueueReport'][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xb9')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xba')]['update'](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xbb')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db['JscriptySessionReport'][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})['then'](function(){if(_0x3f2135){return db[_0x86fe('0xbc')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})['then'](function(){if(_0x3f2135){return db[_0x86fe('0xbd')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return db[_0x86fe('0xbe')][_0x86fe('0x2b')](_0x2ef61f,_0x3ec820);}})['then'](function(){if(_0x3f2135){return db['CmContact'][_0x86fe('0x9c')]({'where':{'id':[_0x57848f[_0x86fe('0xa6')]['to'],_0x57848f[_0x86fe('0xa6')][_0x86fe('0x4c')]]}});}})[_0x86fe('0x2c')](function(){if(_0x3f2135){return _0x3f2135;}})['then'](respondWithResult(_0x265fad,null))[_0x86fe('0x9f')](handleError(_0x265fad,null));};exports[_0x86fe('0xad')]=function(_0x1289e0,_0x493065){return db[_0x86fe('0x9d')][_0x86fe('0x32')]()['then'](function(_0x37ff62){if(_0x1289e0['body'][_0x86fe('0xa0')]&&_['isArray'](_0x1289e0[_0x86fe('0xa6')][_0x86fe('0xa0')])){if(_0x1289e0[_0x86fe('0xa6')]['tags']['length']){_0x1289e0[_0x86fe('0xa6')][_0x86fe('0xa0')]=_0x1289e0['body']['tags'][_0x86fe('0xbf')](';')+';';}else{_0x1289e0[_0x86fe('0xa6')]['tags']=null;}}else{_0x1289e0['body'][_0x86fe('0xa0')]=null;}return db[_0x86fe('0x9d')]['create'](_0x1289e0[_0x86fe('0xa6')],{'fields':_['keys'](_0x37ff62),'raw':!![]});})[_0x86fe('0x2c')](respondWithResult(_0x493065,0xc9))[_0x86fe('0x9f')](handleError(_0x493065,null));};exports[_0x86fe('0xc0')]=function(_0x17e366,_0x3ed4e0){var _0x4c6fb5=[];var _0x39b057=0x0;var _0x39b651=0x0;var _0x59d458=0x0;return db[_0x86fe('0x9d')][_0x86fe('0x32')]()[_0x86fe('0x2c')](function(_0xa79edb){return BPromise['each'](_0x17e366[_0x86fe('0xa6')],function(_0x4d97e4){var _0x1617ec={'where':{'$or':[]},'defaults':_0x4d97e4,'fields':_[_0x86fe('0x33')](_0xa79edb),'raw':!![]};if(_0x4d97e4[_0x86fe('0xc1')]){for(var _0x20b9d2=0x0;_0x20b9d2<_0x4d97e4[_0x86fe('0xc1')][_0x86fe('0x34')];_0x20b9d2++){var _0x37c30f={};_0x37c30f[_0x4d97e4['duplicates'][_0x20b9d2]]=_0x4d97e4[_0x4d97e4[_0x86fe('0xc1')][_0x20b9d2]];_0x1617ec[_0x86fe('0x46')]['$or'][_0x86fe('0x36')](_0x37c30f);}_0x1617ec['where']['ListId']=_0x4d97e4[_0x86fe('0x8c')];}return db['CmContact'][_0x86fe('0xc2')](_0x1617ec)['spread'](function(_0x3d4173,_0x47e34a){if(_0x47e34a){_0x39b057++;}else{_0x59d458++;}})['catch'](function(_0xc58320){console['error'](_0xc58320);_0x39b651++;});});})[_0x86fe('0x2c')](function(_0x344af4){if(_0x344af4){return{'success':_0x39b057,'failure':_0x39b651,'duplicates':_0x59d458};}})['then'](respondWithResult(_0x3ed4e0,0xc9))[_0x86fe('0x9f')](handleError(_0x3ed4e0,null));};exports[_0x86fe('0xc3')]=function(_0x1b6257,_0x5a9d92,_0x3a84e3){var _0x2ff01c;return db[_0x86fe('0x9d')][_0x86fe('0x32')]()[_0x86fe('0x2c')](function(_0x15a473){return db[_0x86fe('0x9d')][_0x86fe('0x56')]({'where':{'id':_0x1b6257[_0x86fe('0x9e')]['id']},'include':[{'model':db[_0x86fe('0x57')],'as':_0x86fe('0x9a'),'attributes':['id','name',_0x86fe('0x4a')],'required':_0x1b6257['query'][_0x86fe('0x6d')]?!![]:![]}],'attributes':_[_0x86fe('0x33')](_0x15a473)});})[_0x86fe('0x2c')](function(_0x357d4f){_0x2ff01c=_0x357d4f[_0x86fe('0xa7')]({'plain':!![]});var _0x3f9be7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x357d4f&&_0x357d4f[_0x86fe('0x8c')]){if(_0x357d4f[_0x86fe('0x8c')]){_0x3f9be7[_0x86fe('0x46')][_0x86fe('0xc4')][_0x86fe('0x36')]({'ListId':{'$ne':_0x357d4f[_0x86fe('0x8c')]}});}}return db[_0x86fe('0x37')][_0x86fe('0xa3')](_0x3f9be7);})['then'](function(_0xece3b3){return _['omit'](_0x2ff01c,_['map'](_0xece3b3,function(_0x572982){return util['format'](_0x86fe('0xc5'),_0x572982['id']);}));})[_0x86fe('0x2c')](handleEntityNotFound(_0x5a9d92,null))[_0x86fe('0x2c')](respondWithResult(_0x5a9d92,null))[_0x86fe('0x9f')](handleError(_0x5a9d92,null));};exports[_0x86fe('0x2b')]=function(_0x3fb714,_0x2535e7){var _0x3e2e4b;if(_0x3fb714['body']['id']){delete _0x3fb714['body']['id'];}return db['CmContact']['find']({'where':{'id':_0x3fb714[_0x86fe('0x9e')]['id']}})['then'](handleEntityNotFound(_0x2535e7,null))['then'](saveUpdates(_0x3fb714[_0x86fe('0xa6')],null))[_0x86fe('0x2c')](function(_0x3432e0){_0x3e2e4b=_0x3432e0;var _0x3f00a1={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3432e0&&_0x3432e0['ListId']){if(_0x3432e0[_0x86fe('0x8c')]){_0x3f00a1[_0x86fe('0x46')]['$and']['push']({'ListId':{'$ne':_0x3432e0['ListId']}});}}return db['CmCustomField'][_0x86fe('0xa3')](_0x3f00a1);})[_0x86fe('0x2c')](function(_0x479db4){if(_0x479db4){return _['omit'](_[_0x86fe('0xc6')](_0x3fb714[_0x86fe('0xa6')],function(_0x5b1be4,_0x4f2aaa){return _[_0x86fe('0xc7')](_0x4f2aaa,_0x86fe('0x35'));}),_[_0x86fe('0x5a')](_0x479db4,function(_0x38fddc){return util['format']('cf_%d',_0x38fddc['id']);}));}})[_0x86fe('0x2c')](function(_0x4f1e76){if(_0x4f1e76&&!_[_0x86fe('0x67')](_0x4f1e76)){var _0x3c0329=squel[_0x86fe('0x2b')]()[_0x86fe('0xc8')](_0x86fe('0x4d'))[_0x86fe('0xc9')](_0x4f1e76)[_0x86fe('0x46')](_0x86fe('0xca'),_0x3fb714['params']['id'])[_0x86fe('0xcb')]();return db['sequelize'][_0x86fe('0x3d')](_0x3c0329[_0x86fe('0x62')],{'replacements':_0x3c0329[_0x86fe('0xa4')]});}})[_0x86fe('0x2c')](function(){if(_0x3fb714[_0x86fe('0xa6')][_0x86fe('0xcc')]&&_0x3e2e4b){return db[_0x86fe('0xab')][_0x86fe('0x2b')]({'phone':_0x3fb714[_0x86fe('0xa6')][_0x86fe('0xcc')]},{'where':{'ContactId':_0x3e2e4b['id']}});}})['then'](function(){return _0x3e2e4b;})[_0x86fe('0x2c')](respondWithResult(_0x2535e7,null))[_0x86fe('0x9f')](handleError(_0x2535e7,null));};exports[_0x86fe('0xcd')]=function(_0xa8eb41,_0xc4025,_0x52da71){var _0x513c45={};var _0x1518ae={};var _0x2051d7;var _0x5857bf;return db['CmContact'][_0x86fe('0x38')]({'where':{'id':_0xa8eb41[_0x86fe('0x9e')]['id']}})['then'](handleEntityNotFound(_0xc4025,null))['then'](function(_0xbdfe78){if(_0xbdfe78){_0x2051d7=_0xbdfe78;_0x1518ae[_0x86fe('0x3c')]=_['keys'](db[_0x86fe('0x57')][_0x86fe('0xce')]);_0x1518ae[_0x86fe('0x3d')]=_[_0x86fe('0x33')](_0xa8eb41[_0x86fe('0x3d')]);_0x1518ae[_0x86fe('0x3e')]=_[_0x86fe('0x3f')](_0x1518ae[_0x86fe('0x3c')],_0x1518ae[_0x86fe('0x3d')]);_0x513c45[_0x86fe('0x40')]=_['intersection'](_0x1518ae['model'],qs[_0x86fe('0x41')](_0xa8eb41[_0x86fe('0x3d')][_0x86fe('0x41')]));_0x513c45['attributes']=_0x513c45[_0x86fe('0x40')][_0x86fe('0x34')]?_0x513c45[_0x86fe('0x40')]:_0x1518ae[_0x86fe('0x3c')];_0x513c45[_0x86fe('0x44')]=qs['sort'](_0xa8eb41[_0x86fe('0x3d')][_0x86fe('0x45')]);_0x513c45[_0x86fe('0x46')]=qs[_0x86fe('0x3e')](_[_0x86fe('0x47')](_0xa8eb41[_0x86fe('0x3d')],_0x1518ae['filters']));if(_0xa8eb41[_0x86fe('0x3d')][_0x86fe('0x64')]){_0x513c45[_0x86fe('0x46')]=_['merge'](_0x513c45[_0x86fe('0x46')],{'$or':_[_0x86fe('0x5a')](_0x513c45[_0x86fe('0x40')],function(_0x3ffc4f){var _0x136fa7={};_0x136fa7[_0x3ffc4f]={'$like':'%'+_0xa8eb41[_0x86fe('0x3d')][_0x86fe('0x64')]+'%'};return _0x136fa7;})});}_0x513c45=_[_0x86fe('0xa5')]({},_0x513c45,_0xa8eb41[_0x86fe('0xcf')]);return _0x2051d7['getTags'](_0x513c45);}})[_0x86fe('0x2c')](function(_0x183e7b){if(_0x183e7b){_0x5857bf=_0x183e7b[_0x86fe('0x34')];if(!_0xa8eb41['query'][_0x86fe('0x42')](_0x86fe('0x43'))){_0x513c45[_0x86fe('0x25')]=qs[_0x86fe('0x25')](_0xa8eb41[_0x86fe('0x3d')][_0x86fe('0x25')]);_0x513c45[_0x86fe('0x23')]=qs[_0x86fe('0x23')](_0xa8eb41[_0x86fe('0x3d')][_0x86fe('0x23')]);}return _0x2051d7[_0x86fe('0xcd')](_0x513c45);}})['then'](function(_0x1756b9){if(_0x1756b9){return _0x1756b9?{'count':_0x5857bf,'rows':_0x1756b9}:null;}})[_0x86fe('0x2c')](respondWithResult(_0xc4025,null))[_0x86fe('0x9f')](handleError(_0xc4025,null));};exports[_0x86fe('0xd0')]=function(_0x273cf2,_0x40a294,_0x331ec6){if(_0x273cf2[_0x86fe('0xa6')]['id']){delete _0x273cf2[_0x86fe('0xa6')]['id'];}return db[_0x86fe('0x9d')][_0x86fe('0x38')]({'where':{'id':_0x273cf2[_0x86fe('0x9e')]['id']}})[_0x86fe('0x2c')](handleEntityNotFound(_0x40a294,null))[_0x86fe('0x2c')](function(_0x3f6e1f){if(_0x3f6e1f){return _0x3f6e1f[_0x86fe('0xd0')](_0x273cf2[_0x86fe('0xa6')][_0x86fe('0xd1')]||[]);}return null;})[_0x86fe('0x2c')](respondWithResult(_0x40a294,null))['catch'](handleError(_0x40a294,null));};exports[_0x86fe('0xd2')]=function(_0x49df55,_0xadb749,_0x3dc8a0){var _0x45f0b8={'raw':![],'where':{}};var _0x1c78a7={};var _0x48ee88={'count':0x0,'rows':[]};return db[_0x86fe('0x9d')][_0x86fe('0x38')]({'where':{'id':_0x49df55[_0x86fe('0x9e')]['id']}})[_0x86fe('0x2c')](handleEntityNotFound(_0xadb749,null))[_0x86fe('0x2c')](function(_0x3961a6){if(_0x3961a6){_0x1c78a7[_0x86fe('0x3c')]=_['keys'](db[_0x86fe('0xab')][_0x86fe('0xce')]);_0x1c78a7['query']=_['keys'](_0x49df55[_0x86fe('0x3d')]);_0x1c78a7[_0x86fe('0x3e')]=_[_0x86fe('0x3f')](_0x1c78a7[_0x86fe('0x3c')],_0x1c78a7[_0x86fe('0x3d')]);_0x45f0b8[_0x86fe('0x40')]=_[_0x86fe('0x3f')](_0x1c78a7[_0x86fe('0x3c')],qs[_0x86fe('0x41')](_0x49df55['query'][_0x86fe('0x41')]));_0x45f0b8[_0x86fe('0x40')]=_0x45f0b8[_0x86fe('0x40')]['length']?_0x45f0b8[_0x86fe('0x40')]:_0x1c78a7[_0x86fe('0x3c')];if(!_0x49df55[_0x86fe('0x3d')][_0x86fe('0x42')](_0x86fe('0x43'))){_0x45f0b8['limit']=qs['limit'](_0x49df55[_0x86fe('0x3d')][_0x86fe('0x25')]);_0x45f0b8[_0x86fe('0x23')]=qs[_0x86fe('0x23')](_0x49df55[_0x86fe('0x3d')]['offset']);}_0x45f0b8[_0x86fe('0x44')]=qs[_0x86fe('0x45')](_0x49df55[_0x86fe('0x3d')][_0x86fe('0x45')]);_0x45f0b8[_0x86fe('0x46')]=qs[_0x86fe('0x3e')](_[_0x86fe('0x47')](_0x49df55['query'],_0x1c78a7[_0x86fe('0x3e')]));_0x45f0b8[_0x86fe('0x46')][_0x86fe('0xd3')]=_0x3961a6['id'];if(_0x49df55[_0x86fe('0x3d')][_0x86fe('0x64')]){_0x45f0b8[_0x86fe('0x46')]=_[_0x86fe('0xa5')](_0x45f0b8['where'],{'$or':_[_0x86fe('0x5a')](_0x45f0b8[_0x86fe('0x40')],function(_0x5dffe9){var _0x2bd6cf={};_0x2bd6cf[_0x5dffe9]={'$like':'%'+_0x49df55[_0x86fe('0x3d')][_0x86fe('0x64')]+'%'};return _0x2bd6cf;})});}_0x45f0b8=_['merge']({},_0x45f0b8,_0x49df55[_0x86fe('0xcf')]);return db['CmHopper'][_0x86fe('0x26')]({'where':_0x45f0b8['where']})['then'](function(_0x3a544d){_0x48ee88['count']=_0x3a544d;if(_0x49df55[_0x86fe('0x3d')]['includeAll']){_0x45f0b8[_0x86fe('0xd4')]=[{'all':!![]}];}return db[_0x86fe('0xab')]['findAll'](_0x45f0b8);})['then'](function(_0x4a97b8){_0x48ee88['rows']=_0x4a97b8;return _0x48ee88;});}})[_0x86fe('0x2c')](respondWithFilteredResult(_0xadb749,_0x45f0b8))['catch'](handleError(_0xadb749,null));};exports[_0x86fe('0xd5')]=function(_0x3458c7,_0x56031e,_0x30d998){var _0x7f6d29={'raw':!![],'where':{}};var _0x18999d={};var _0x250148={'count':0x0,'rows':[]};return db[_0x86fe('0x9d')]['findOne']({'where':{'id':_0x3458c7[_0x86fe('0x9e')]['id']}})['then'](handleEntityNotFound(_0x56031e,null))[_0x86fe('0x2c')](function(_0x1f4bdc){if(_0x1f4bdc){_0x18999d[_0x86fe('0x3c')]=_[_0x86fe('0x33')](db[_0x86fe('0xb6')][_0x86fe('0xce')]);_0x18999d['query']=_[_0x86fe('0x33')](_0x3458c7[_0x86fe('0x3d')]);_0x18999d[_0x86fe('0x3e')]=_[_0x86fe('0x3f')](_0x18999d[_0x86fe('0x3c')],_0x18999d[_0x86fe('0x3d')]);_0x7f6d29['attributes']=_['intersection'](_0x18999d[_0x86fe('0x3c')],qs[_0x86fe('0x41')](_0x3458c7[_0x86fe('0x3d')][_0x86fe('0x41')]));_0x7f6d29[_0x86fe('0x40')]=_0x7f6d29[_0x86fe('0x40')][_0x86fe('0x34')]?_0x7f6d29[_0x86fe('0x40')]:_0x18999d['model'];if(!_0x3458c7[_0x86fe('0x3d')]['hasOwnProperty'](_0x86fe('0x43'))){_0x7f6d29[_0x86fe('0x25')]=qs[_0x86fe('0x25')](_0x3458c7['query'][_0x86fe('0x25')]);_0x7f6d29[_0x86fe('0x23')]=qs[_0x86fe('0x23')](_0x3458c7['query'][_0x86fe('0x23')]);}_0x7f6d29[_0x86fe('0x44')]=qs[_0x86fe('0x45')](_0x3458c7['query'][_0x86fe('0x45')]);_0x7f6d29[_0x86fe('0x46')]=qs[_0x86fe('0x3e')](_[_0x86fe('0x47')](_0x3458c7['query'],_0x18999d[_0x86fe('0x3e')]));_0x7f6d29[_0x86fe('0x46')]['ContactId']=_0x1f4bdc['id'];if(_0x3458c7['query']['filter']){_0x7f6d29[_0x86fe('0x46')]=_[_0x86fe('0xa5')](_0x7f6d29[_0x86fe('0x46')],{'$or':_['map'](_0x7f6d29[_0x86fe('0x40')],function(_0x4daaef){var _0x501c42={};_0x501c42[_0x4daaef]={'$like':'%'+_0x3458c7[_0x86fe('0x3d')][_0x86fe('0x64')]+'%'};return _0x501c42;})});}_0x7f6d29=_[_0x86fe('0xa5')]({},_0x7f6d29,_0x3458c7[_0x86fe('0xcf')]);return db[_0x86fe('0xb6')][_0x86fe('0x26')]({'where':_0x7f6d29['where']})[_0x86fe('0x2c')](function(_0x1b81fc){_0x250148[_0x86fe('0x26')]=_0x1b81fc;if(_0x3458c7['query'][_0x86fe('0xd6')]){_0x7f6d29['include']=[{'all':!![]}];}return db[_0x86fe('0xb6')][_0x86fe('0xa3')](_0x7f6d29);})[_0x86fe('0x2c')](function(_0x51b32a){_0x250148[_0x86fe('0x9b')]=_0x51b32a;return _0x250148;});}})[_0x86fe('0x2c')](respondWithFilteredResult(_0x56031e,_0x7f6d29))[_0x86fe('0x9f')](handleError(_0x56031e,null));};exports['getHopperFinals']=function(_0x401751,_0xa03d55,_0x4003cb){var _0x3c9f43={'raw':!![],'where':{}};var _0x516342={};var _0x1ff68f={'count':0x0,'rows':[]};return db[_0x86fe('0x9d')][_0x86fe('0x38')]({'where':{'id':_0x401751[_0x86fe('0x9e')]['id']}})['then'](handleEntityNotFound(_0xa03d55,null))['then'](function(_0xad7ed0){if(_0xad7ed0){_0x516342[_0x86fe('0x3c')]=_[_0x86fe('0x33')](db['CmHopperFinal']['rawAttributes']);_0x516342[_0x86fe('0x3d')]=_[_0x86fe('0x33')](_0x401751['query']);_0x516342[_0x86fe('0x3e')]=_[_0x86fe('0x3f')](_0x516342['model'],_0x516342[_0x86fe('0x3d')]);_0x3c9f43[_0x86fe('0x40')]=_[_0x86fe('0x3f')](_0x516342[_0x86fe('0x3c')],qs[_0x86fe('0x41')](_0x401751[_0x86fe('0x3d')]['fields']));_0x3c9f43[_0x86fe('0x40')]=_0x3c9f43[_0x86fe('0x40')][_0x86fe('0x34')]?_0x3c9f43[_0x86fe('0x40')]:_0x516342[_0x86fe('0x3c')];if(!_0x401751[_0x86fe('0x3d')][_0x86fe('0x42')](_0x86fe('0x43'))){_0x3c9f43[_0x86fe('0x25')]=qs['limit'](_0x401751[_0x86fe('0x3d')]['limit']);_0x3c9f43[_0x86fe('0x23')]=qs['offset'](_0x401751['query'][_0x86fe('0x23')]);}_0x3c9f43['order']=qs['sort'](_0x401751[_0x86fe('0x3d')][_0x86fe('0x45')]);_0x3c9f43[_0x86fe('0x46')]=qs['filters'](_[_0x86fe('0x47')](_0x401751['query'],_0x516342[_0x86fe('0x3e')]));_0x3c9f43[_0x86fe('0x46')][_0x86fe('0xd3')]=_0xad7ed0['id'];if(_0x401751[_0x86fe('0x3d')][_0x86fe('0x64')]){_0x3c9f43[_0x86fe('0x46')]=_[_0x86fe('0xa5')](_0x3c9f43[_0x86fe('0x46')],{'$or':_['map'](_0x3c9f43['attributes'],function(_0x5dc179){var _0x3ef04f={};_0x3ef04f[_0x5dc179]={'$like':'%'+_0x401751[_0x86fe('0x3d')][_0x86fe('0x64')]+'%'};return _0x3ef04f;})});}_0x3c9f43=_[_0x86fe('0xa5')]({},_0x3c9f43,_0x401751[_0x86fe('0xcf')]);return db[_0x86fe('0xd7')][_0x86fe('0x26')]({'where':_0x3c9f43[_0x86fe('0x46')]})[_0x86fe('0x2c')](function(_0x4f8557){_0x1ff68f[_0x86fe('0x26')]=_0x4f8557;if(_0x401751['query']['includeAll']){_0x3c9f43[_0x86fe('0xd4')]=[{'all':!![]}];}return db[_0x86fe('0xd7')][_0x86fe('0xa3')](_0x3c9f43);})[_0x86fe('0x2c')](function(_0x21c172){_0x1ff68f['rows']=_0x21c172;return _0x1ff68f;});}})[_0x86fe('0x2c')](respondWithFilteredResult(_0xa03d55,_0x3c9f43))[_0x86fe('0x9f')](handleError(_0xa03d55,null));};exports[_0x86fe('0xd8')]=function(_0xdb0040,_0x114bdb,_0x262a63){var _0x20019b={'raw':!![],'where':{}};var _0x336380={};var _0x105e9d={'count':0x0,'rows':[]};return db[_0x86fe('0x9d')]['findOne']({'where':{'id':_0xdb0040[_0x86fe('0x9e')]['id']}})[_0x86fe('0x2c')](handleEntityNotFound(_0x114bdb,null))[_0x86fe('0x2c')](function(_0x1b0b5c){if(_0x1b0b5c){_0x336380[_0x86fe('0x3c')]=_[_0x86fe('0x33')](db[_0x86fe('0xd9')][_0x86fe('0xce')]);_0x336380['query']=_[_0x86fe('0x33')](_0xdb0040[_0x86fe('0x3d')]);_0x336380['filters']=_[_0x86fe('0x3f')](_0x336380[_0x86fe('0x3c')],_0x336380[_0x86fe('0x3d')]);_0x20019b[_0x86fe('0x40')]=_[_0x86fe('0x3f')](_0x336380[_0x86fe('0x3c')],qs[_0x86fe('0x41')](_0xdb0040['query'][_0x86fe('0x41')]));_0x20019b[_0x86fe('0x40')]=_0x20019b[_0x86fe('0x40')]['length']?_0x20019b[_0x86fe('0x40')]:_0x336380['model'];if(!_0xdb0040[_0x86fe('0x3d')]['hasOwnProperty'](_0x86fe('0x43'))){_0x20019b[_0x86fe('0x25')]=qs[_0x86fe('0x25')](_0xdb0040[_0x86fe('0x3d')][_0x86fe('0x25')]);_0x20019b[_0x86fe('0x23')]=qs[_0x86fe('0x23')](_0xdb0040[_0x86fe('0x3d')]['offset']);}_0x20019b['order']=qs['sort'](_0xdb0040[_0x86fe('0x3d')][_0x86fe('0x45')]);_0x20019b['where']=qs[_0x86fe('0x3e')](_['pick'](_0xdb0040['query'],_0x336380[_0x86fe('0x3e')]));_0x20019b[_0x86fe('0x46')]['ContactId']=_0x1b0b5c['id'];if(_0xdb0040[_0x86fe('0x3d')][_0x86fe('0x64')]){_0x20019b['where']=_[_0x86fe('0xa5')](_0x20019b['where'],{'$or':_['map'](_0x20019b[_0x86fe('0x40')],function(_0x4bade3){var _0x18b96e={};_0x18b96e[_0x4bade3]={'$like':'%'+_0xdb0040[_0x86fe('0x3d')]['filter']+'%'};return _0x18b96e;})});}_0x20019b=_[_0x86fe('0xa5')]({},_0x20019b,_0xdb0040[_0x86fe('0xcf')]);return db['JscriptySessionReport'][_0x86fe('0x26')]({'where':_0x20019b[_0x86fe('0x46')]})[_0x86fe('0x2c')](function(_0x4fafdf){_0x105e9d[_0x86fe('0x26')]=_0x4fafdf;if(_0xdb0040['query'][_0x86fe('0xd6')]){_0x20019b['include']=[{'all':!![]}];}return db[_0x86fe('0xd9')][_0x86fe('0xa3')](_0x20019b);})[_0x86fe('0x2c')](function(_0x325b70){_0x105e9d[_0x86fe('0x9b')]=_0x325b70;return _0x105e9d;});}})[_0x86fe('0x2c')](respondWithFilteredResult(_0x114bdb,_0x20019b))[_0x86fe('0x9f')](handleError(_0x114bdb,null));};exports[_0x86fe('0xda')]=function(_0x22d6b5,_0x16bbe9,_0x2ded19){try{if(!_0x22d6b5[_0x86fe('0xa6')]['ListId']){throw new Error(_0x86fe('0xdb'));}if(!_0x22d6b5[_0x86fe('0xa6')][_0x86fe('0xdc')]){throw new Error(_0x86fe('0xdd'));}if(!_0x22d6b5[_0x86fe('0xa6')][_0x86fe('0xde')]){throw new Error(_0x86fe('0xdf'));}if(!_0x22d6b5['body'][_0x86fe('0xe0')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x36e0f6=_0x22d6b5['body'][_0x86fe('0xdc')][_0x86fe('0x59')](',');var _0x29cea0=_0x22d6b5[_0x86fe('0xa6')][_0x86fe('0xde')][_0x86fe('0x59')](',');if(!_0x36e0f6[_0x86fe('0x34')]||!_0x29cea0[_0x86fe('0x34')]||_0x36e0f6[_0x86fe('0x34')]!==_0x29cea0[_0x86fe('0x34')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x22d6b5[_0x86fe('0xa6')][_0x86fe('0x41')]=_['zipObject'](_0x36e0f6,_0x29cea0);if(!_0x22d6b5[_0x86fe('0xa6')][_0x86fe('0x41')]['phone']){throw new Error(_0x86fe('0xe1'));}if(!_0x22d6b5[_0x86fe('0xa6')][_0x86fe('0x41')][_0x86fe('0xe2')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x468415=path[_0x86fe('0xbf')](config[_0x86fe('0xe3')],_0x86fe('0xe4'),_0x22d6b5[_0x86fe('0xe5')][_0x86fe('0xe6')]);fs['chmodSync'](_0x468415,parseInt(_0x86fe('0xe7'),0x8));var _0xc80c60=require('child_process')['fork'](path['join'](__dirname,_0x86fe('0xe8')),[_0x468415,_0x22d6b5[_0x86fe('0xa6')]['binding_keys'],_0x22d6b5[_0x86fe('0xa6')]['binding_values'],_0x22d6b5['body'][_0x86fe('0x8c')],_0x22d6b5['body'][_0x86fe('0xe9')],_0x22d6b5[_0x86fe('0xa6')][_0x86fe('0xc1')],_0x22d6b5['body'][_0x86fe('0xe0')]]);return _0x16bbe9['status'](0xc8)[_0x86fe('0x22')]({'message':'File\x20uploaded\x20correctly!','pid':_0xc80c60[_0x86fe('0xea')]});}catch(_0xebea86){return _0x16bbe9[_0x86fe('0x20')](0x1f4)[_0x86fe('0x30')](_0xebea86);}};exports[_0x86fe('0xeb')]=function(_0x444a18,_0x70bbe5,_0x52b74d){var _0xa57468=fs[_0x86fe('0xec')](_0x444a18[_0x86fe('0xe5')][_0x86fe('0x8')]);Papa[_0x86fe('0xed')](_0xa57468,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x329bbd){return _0x70bbe5['status'](0xc8)['json']({'file':_0x444a18[_0x86fe('0xe5')],'fields':_0x329bbd[_0x86fe('0xee')][_0x86fe('0x41')]});}});};exports[_0x86fe('0xef')]=function(_0xf7f40,_0x29cd94,_0x34a4c9){return db[_0x86fe('0x87')][_0x86fe('0xa3')]({'raw':!![],'attributes':['id'],'where':{'role':_0x86fe('0x84')}})[_0x86fe('0x2c')](function(_0x5e4dd){var _0x22e12c=![];if(!_0xf7f40['body'][_0x86fe('0x8c')]){throw new Error('No\x20ListId\x20specified');}if(!_0xf7f40['body']['binding'][_0x86fe('0xcc')]){throw new Error(_0x86fe('0xe1'));}if(!_0xf7f40[_0x86fe('0xa6')][_0x86fe('0xf0')][_0x86fe('0xe2')]){throw new Error(_0x86fe('0xf1'));}if(!_0xf7f40[_0x86fe('0xa6')][_0x86fe('0xe0')]){throw new Error(_0x86fe('0xf2'));}var _0x38f2a3=require(_0x86fe('0xf3'))[_0x86fe('0xf4')](path[_0x86fe('0xbf')](__dirname,_0x86fe('0xf5')),[_0xf7f40[_0x86fe('0x9e')]['id'],JSON['stringify'](_0xf7f40[_0x86fe('0xa6')]),JSON[_0x86fe('0xf6')](_0x5e4dd)]);_0x38f2a3['on']('message',function(_0x2028f2){_0x22e12c=!![];return _0x29cd94[_0x86fe('0x20')](0xc8)['json']({'message':_0x86fe('0xf7'),'pid':_0x38f2a3['pid']});});_0x38f2a3['on']('exit',function(_0x3175bc){if(_0x3175bc&&!_0x22e12c){return _0x29cd94[_0x86fe('0x20')](0x1f4)['json']({'message':_0x86fe('0xf8'),'pid':_0x38f2a3['pid']});}});})['catch'](handleError(_0x29cd94,null));};exports[_0x86fe('0xf9')]=function(_0x3d698d,_0x2fda49){var _0x157712=['mail',_0x86fe('0xfa'),'sms',_0x86fe('0xfb'),_0x86fe('0xfc'),_0x86fe('0xfd'),_0x86fe('0xfe')];var _0x11c4b4={'offset':0x0,'order':qs[_0x86fe('0x45')](_0x86fe('0xff'))},_0x396d6e={'count':0x0,'rows':[]};Promise[_0x86fe('0x83')]()[_0x86fe('0x2c')](function(){if(_0x3d698d[_0x86fe('0x3d')][_0x86fe('0x100')]){if(!_[_0x86fe('0x101')](_0x157712,_0x3d698d[_0x86fe('0x3d')][_0x86fe('0x100')][_0x86fe('0x102')]())){throw new Error(_0x86fe('0x103'));}_0x157712=[_0x3d698d['query'][_0x86fe('0x100')][_0x86fe('0x102')]()];}if(_0x3d698d['query'][_0x86fe('0x104')]){try{var _0x55ae72=JSON[_0x86fe('0xed')](_0x3d698d[_0x86fe('0x3d')][_0x86fe('0x104')]);if(!moment(_0x55ae72['from'])[_0x86fe('0x105')]()){throw new Error(_0x86fe('0x106'));}if(!moment(_0x55ae72['to'])[_0x86fe('0x105')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x4514e6){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x3d698d[_0x86fe('0x3d')][_0x86fe('0x42')]('nolimit')){_0x11c4b4[_0x86fe('0x25')]=qs[_0x86fe('0x25')](_0x3d698d[_0x86fe('0x3d')]['limit']||0xa);_0x11c4b4[_0x86fe('0x23')]=qs[_0x86fe('0x23')](_0x3d698d[_0x86fe('0x3d')]['offset']);}var _0x311c6f=_0x157712[_0x86fe('0x5a')](function(_0x12a095){if(_0x12a095===_0x86fe('0xfe')){var _0x35e2c4={'attributes':['id',_0x86fe('0x107'),'type','source',_0x86fe('0x108'),'callerid',_0x86fe('0x109'),_0x86fe('0x10a'),_0x86fe('0x10b'),_0x86fe('0x10c'),'createdAt',_0x86fe('0x10d'),'userSecondDisposition','userThirdDisposition',_0x86fe('0x10e')],'where':{'ContactId':_0x3d698d[_0x86fe('0x9e')]['id']},'include':[{'model':db[_0x86fe('0x87')],'as':_0x86fe('0x87'),'attributes':['id','name','fullname',_0x86fe('0x10f')]}],'order':[[_0x86fe('0x110'),'DESC']]};if(_0x3d698d[_0x86fe('0x3d')][_0x86fe('0x104')]){_0x35e2c4['where'][_0x86fe('0x110')]={'$gte':_0x55ae72['from'],'$lte':_0x55ae72['to']};}return db[_0x86fe('0xb7')][_0x86fe('0x111')](_0x35e2c4)[_0x86fe('0x2c')](function(_0xa616b2){_0x396d6e[_0x86fe('0x26')]+=_0xa616b2[_0x86fe('0x26')];return _[_0x86fe('0x5a')](_0xa616b2[_0x86fe('0x9b')],function(_0x1d8016){var _0x195fcb=_0x1d8016[_0x86fe('0xa7')]({'plain':!![]});_0x195fcb['channel']=_0x12a095;if(_0x195fcb[_0x86fe('0x87')]){_0x195fcb[_0x86fe('0x87')]={'id':_0x195fcb[_0x86fe('0x87')]['id'],'name':_0x195fcb[_0x86fe('0x87')][_0x86fe('0x2f')],'fullname':_0x195fcb[_0x86fe('0x87')][_0x86fe('0x112')],'alias':_0x195fcb[_0x86fe('0x87')][_0x86fe('0x10f')]};}return _0x195fcb;});});}else{var _0x569026=_[_0x86fe('0x113')](_0x12a095)+(_0x12a095==='chat'?_0x86fe('0x114'):_0x86fe('0x115'));var _0x454a32={'attributes':['id',_0x86fe('0x116'),_0x86fe('0x117'),_0x86fe('0x110'),_0x86fe('0x10c'),_0x86fe('0x118'),'secondDisposition',_0x86fe('0x119'),_0x86fe('0x10e'),_0x569026+'Id'],'where':{'ContactId':_0x3d698d[_0x86fe('0x9e')]['id']},'include':[{'model':db[_0x569026],'as':'Account','attributes':['id',_0x86fe('0x2f'),'key']},{'model':db[_0x86fe('0x87')],'as':'Owner','attributes':['id',_0x86fe('0x2f'),_0x86fe('0x112')]},{'model':db[_0x86fe('0x57')],'as':_0x86fe('0x9a'),'attributes':['id','name','color'],'through':{'attributes':[]}}],'order':[[_0x86fe('0x110'),_0x86fe('0x80')]]};if(_0x3d698d[_0x86fe('0x3d')][_0x86fe('0x104')]){_0x454a32[_0x86fe('0x46')][_0x86fe('0x110')]={'$gte':_0x55ae72[_0x86fe('0x4c')],'$lte':_0x55ae72['to']};}switch(_0x12a095){case _0x86fe('0xfa'):_0x454a32[_0x86fe('0x40')][_0x86fe('0x36')]('browserName',_0x86fe('0x11a'),_0x86fe('0x11b'),'deviceModel',_0x86fe('0x11c'),'ratingMessage',_0x86fe('0x11d'),_0x86fe('0x11e'),_0x86fe('0x11f'));break;case _0x86fe('0x120'):_0x454a32['attributes'][_0x86fe('0x36')]('subject',_0x86fe('0x121'));break;case _0x86fe('0xfb'):_0x454a32[_0x86fe('0x40')][_0x86fe('0x36')]('externalUrl',_0x86fe('0x122'));break;}return db[_[_0x86fe('0x113')](_0x12a095)+_0x86fe('0x123')][_0x86fe('0x111')](_0x454a32)[_0x86fe('0x2c')](function(_0x1ea42b){_0x396d6e['count']+=_0x1ea42b[_0x86fe('0x26')];return _[_0x86fe('0x5a')](_0x1ea42b['rows'],function(_0x41d818){var _0x59ab22=_0x41d818[_0x86fe('0xa7')]({'plain':!![]});_0x59ab22['channel']=_0x12a095;if(_0x59ab22[_0x86fe('0x124')]){_0x59ab22[_0x86fe('0x124')]={'id':_0x59ab22[_0x86fe('0x124')]['id'],'name':_0x59ab22[_0x86fe('0x124')]['name'],'fullname':_0x59ab22[_0x86fe('0x124')][_0x86fe('0x112')]};}return _0x59ab22;});});}});return Promise[_0x86fe('0x39')](_0x311c6f);})[_0x86fe('0x2c')](function(_0x54f66d){return _(_0x54f66d)[_0x86fe('0x125')]()[_0x86fe('0x126')](_0x86fe('0x110'))['reverse']()[_0x86fe('0x58')]();})[_0x86fe('0x2c')](function(_0x1a571a){_0x396d6e[_0x86fe('0x9b')]=_0x11c4b4[_0x86fe('0x25')]?_0x1a571a[_0x86fe('0x127')](_0x11c4b4[_0x86fe('0x23')],_0x11c4b4[_0x86fe('0x23')]+_0x11c4b4[_0x86fe('0x25')]):_0x1a571a;return _0x396d6e;})[_0x86fe('0x2c')](respondWithFilteredResult(_0x2fda49,_0x11c4b4))['catch'](handleError(_0x2fda49,null));};
\ No newline at end of file
+var _0x5e42=['ReportAgentPreview','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','each','duplicates','$or','spread','show','$and','format','cf_%d','omit','table','setFields','id\x20=\x20?','toParam','text','CmHopper','getTags','findOne','rawAttributes','options','setTags','ids','ContactId','include','getHopperHistories','CmHopperFinal','getJscriptySessions','JscriptySessionReport','includeAll','uploadCsv','binding_keys','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','server/files/tmp','file','filename','chmodSync','0777','child_process','fork','CompanyId','pid','upload','createReadStream','path','parse','meta','import','No\x20ListId\x20specified','binding','phone','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','getJourney','mail','sms','fax','whatsapp','-createdAt','includes','toLowerCase','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','source','destination','starttime','endtime','note','userDisposition','userSecondDisposition','userThirdDisposition','createdAt','VoiceCallReport','channel','fullname','startCase','chat','Website','Account','closed','disposition','secondDisposition','UserId','key','Owner','Tag','color','browserName','customerIp','deviceModel','osName','ratingType','ratingValue','referer','subject','openchannel','externalUrl','threadId','Interaction','findAndCountAll','all','flatten','sortBy','reverse','slice','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','defaults','redis','localhost','./cmContact.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','describe','keys','length','startsWith','cf_','push','CmCustomField','trimStart','model','query','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','cm_contacts','left_join','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','tools_tags','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','and','uc.UserId\x20=\x20?','value','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','start','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','filter','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','c.id','DESC','t.id\x20IN\x20?','resolve','role','agent','getLists','c.ListId\x20IS\x20NULL','user','sequelize','toString','keyBy','merge','CmContact','fields','c.firstName','c.lastName','c.mobile','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','TagIds','Tags','rows','catch','params','tags','displayName','findAll','columnName','alias','values','body','get','mergeWith','join','destroy','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory'];(function(_0x924e9d,_0x14156f){var _0x4af14a=function(_0x3da733){while(--_0x3da733){_0x924e9d['push'](_0x924e9d['shift']());}};_0x4af14a(++_0x14156f);}(_0x5e42,0x1aa));var _0x25e4=function(_0x55d8c5,_0x10287a){_0x55d8c5=_0x55d8c5-0x0;var _0x225ae5=_0x5e42[_0x55d8c5];return _0x225ae5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x25e4('0x0'));var jsonpatch=require(_0x25e4('0x1'));var rp=require('request-promise');var moment=require(_0x25e4('0x2'));var BPromise=require(_0x25e4('0x3'));var Mustache=require(_0x25e4('0x4'));var util=require(_0x25e4('0x5'));var path=require('path');var sox=require(_0x25e4('0x6'));var csv=require('to-csv');var ejs=require(_0x25e4('0x7'));var fs=require('fs');var fs_extra=require(_0x25e4('0x8'));var _=require(_0x25e4('0x9'));var squel=require(_0x25e4('0xa'));var crypto=require(_0x25e4('0xb'));var jsforce=require(_0x25e4('0xc'));var deskjs=require(_0x25e4('0xd'));var toCsv=require(_0x25e4('0xe'));var querystring=require(_0x25e4('0xf'));var Papa=require(_0x25e4('0x10'));var Redis=require('ioredis');var authService=require(_0x25e4('0x11'));var qs=require(_0x25e4('0x12'));var as=require(_0x25e4('0x13'));var hardwareService=require(_0x25e4('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x25e4('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x25e4('0x16')](config[_0x25e4('0x17')],{'host':_0x25e4('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x25e4('0x17')]));require(_0x25e4('0x19'))[_0x25e4('0x1a')](socket);function respondWithStatusCode(_0xd999da,_0x5ec229){_0x5ec229=_0x5ec229||0xcc;return function(_0x57f846){if(_0x57f846){return _0xd999da[_0x25e4('0x1b')](_0x5ec229);}return _0xd999da['status'](_0x5ec229)[_0x25e4('0x1c')]();};}function respondWithResult(_0x18b7c6,_0x5751ee){_0x5751ee=_0x5751ee||0xc8;return function(_0x4cd7e7){if(_0x4cd7e7){return _0x18b7c6[_0x25e4('0x1d')](_0x5751ee)[_0x25e4('0x1e')](_0x4cd7e7);}};}function respondWithFilteredResult(_0x26120a,_0x441336){return function(_0x4c5b3b){if(_0x4c5b3b){var _0x705dbb=typeof _0x441336['offset']===_0x25e4('0x1f')&&typeof _0x441336[_0x25e4('0x20')]===_0x25e4('0x1f');var _0x307a2c=_0x4c5b3b[_0x25e4('0x21')];var _0x2312ba=_0x705dbb?0x0:_0x441336['offset'];var _0x584c9d=_0x705dbb?_0x4c5b3b[_0x25e4('0x21')]:_0x441336[_0x25e4('0x22')]+_0x441336[_0x25e4('0x20')];var _0x552d9b;if(_0x584c9d>=_0x307a2c){_0x584c9d=_0x307a2c;_0x552d9b=0xc8;}else{_0x552d9b=0xce;}_0x26120a['status'](_0x552d9b);return _0x26120a['set'](_0x25e4('0x23'),_0x2312ba+'-'+_0x584c9d+'/'+_0x307a2c)[_0x25e4('0x1e')](_0x4c5b3b);}return null;};}function patchUpdates(_0xed37e1){return function(_0xe703f5){try{jsonpatch[_0x25e4('0x24')](_0xe703f5,_0xed37e1,!![]);}catch(_0x17ebc2){return BPromise[_0x25e4('0x25')](_0x17ebc2);}return _0xe703f5[_0x25e4('0x26')]();};}function saveUpdates(_0x4af85d,_0x155300){return function(_0x1359af){if(_0x1359af){return _0x1359af[_0x25e4('0x27')](_0x4af85d)[_0x25e4('0x28')](function(_0x3463bb){return _0x3463bb;});}return null;};}function removeEntity(_0x1e2c6c,_0x2e288d){return function(_0x159537){if(_0x159537){return _0x159537['destroy']()[_0x25e4('0x28')](function(){_0x1e2c6c['status'](0xcc)[_0x25e4('0x1c')]();});}};}function handleEntityNotFound(_0x500450,_0xe42cf1){return function(_0x5693e9){if(!_0x5693e9){_0x500450[_0x25e4('0x1b')](0x194);}return _0x5693e9;};}function handleError(_0x1bbf8e,_0x43d56a){_0x43d56a=_0x43d56a||0x1f4;return function(_0x207cfd){logger[_0x25e4('0x29')](_0x207cfd[_0x25e4('0x2a')]);if(_0x207cfd['name']){delete _0x207cfd[_0x25e4('0x2b')];}_0x1bbf8e[_0x25e4('0x1d')](_0x43d56a)[_0x25e4('0x2c')](_0x207cfd);};}exports[_0x25e4('0x2d')]=function(_0x55f52f,_0x3a6063){var _0x1a4e2a={},_0x1cdb36={},_0x1b9cf8={'count':0x0,'rows':[]};return db['CmContact'][_0x25e4('0x2e')]()['then'](function(_0x3da49d){var _0x1e6233=[];for(var _0x35be74=0x0;_0x35be74<Object[_0x25e4('0x2f')](_0x3da49d)[_0x25e4('0x30')];_0x35be74++){var _0x74cbec=Object[_0x25e4('0x2f')](_0x3da49d)[_0x35be74];if(_[_0x25e4('0x31')](_0x74cbec,_0x25e4('0x32'))){_0x1e6233[_0x25e4('0x33')](db[_0x25e4('0x34')]['findOne']({'where':{'id':_[_0x25e4('0x35')](_0x74cbec,_0x25e4('0x32'))},'raw':!![]}));}}return BPromise['all'](_0x1e6233)[_0x25e4('0x28')](function(_0x208b73){for(var _0x129369=0x0;_0x129369<_0x208b73['length'];_0x129369++){if(_0x208b73[_0x129369]){var _0x524508=_0x25e4('0x32')+_0x208b73[_0x129369]['id'];var _0x14584d=_0x3da49d[_0x524508];_0x14584d['fieldType']=_0x208b73[_0x129369]['type'];}}return _0x3da49d;});})['then'](function(_0x1d776e){_0x1cdb36[_0x25e4('0x36')]=_['keys'](_0x1d776e);_0x1cdb36[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x55f52f[_0x25e4('0x37')]);_0x1cdb36[_0x25e4('0x38')]=_['intersection'](_0x1cdb36['model'],_0x1cdb36[_0x25e4('0x37')]);_0x1a4e2a[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x1cdb36[_0x25e4('0x36')],qs['fields'](_0x55f52f[_0x25e4('0x37')]['fields']));_0x1a4e2a[_0x25e4('0x39')]=_0x1a4e2a['attributes'][_0x25e4('0x30')]?_0x1a4e2a['attributes']:_0x1cdb36[_0x25e4('0x36')];if(!_0x55f52f[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x1a4e2a[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x55f52f['query']['limit']);_0x1a4e2a[_0x25e4('0x22')]=qs[_0x25e4('0x22')](_0x55f52f[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x1a4e2a[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x55f52f['query'][_0x25e4('0x3e')]);_0x1a4e2a[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x55f52f['query'],_0x1cdb36[_0x25e4('0x38')]),_0x1d776e);var _0x358a21=[];var _0x260b5b=squel[_0x25e4('0x41')]()[_0x25e4('0x42')]('id')[_0x25e4('0x42')](_0x25e4('0x2b'))[_0x25e4('0x42')]('color')[_0x25e4('0x43')]('tools_tags');var _0x249ad9=squel[_0x25e4('0x41')]()[_0x25e4('0x43')](_0x25e4('0x44'),'c')[_0x25e4('0x45')]('cm_user_has_contacts','uc',_0x25e4('0x46'))['left_join'](_0x25e4('0x47'),'ct','ct.CmContactId\x20=\x20c.id')[_0x25e4('0x45')](_0x25e4('0x48'),'t',_0x25e4('0x49'))[_0x25e4('0x3f')](_0x25e4('0x4a'));var _0x3d4bad=squel[_0x25e4('0x4b')]();var _0x16a8fa=[];var _0x4afe2c=squel[_0x25e4('0x4b')]();var _0x5e3cc0;if(_0x55f52f['query'][_0x25e4('0x4c')]){_0x5e3cc0=as[_0x25e4('0x4d')](_0x55f52f[_0x25e4('0x37')]['search']);var _0x35f6ed=_0x5e3cc0[_0x25e4('0x4e')];for(var _0x152cce=0x0;_0x152cce<_0x5e3cc0[_0x25e4('0x4f')][_0x25e4('0x30')];_0x152cce++){var _0x28974c=_0x5e3cc0['conditions'][_0x152cce];var _0x59c220='c';var _0x149e62=_(_0x1d776e)['keys']()[_0x25e4('0x50')](function(_0x38aae2){return _0x38aae2===_0x28974c[_0x25e4('0x42')];});if(_0x149e62)_0x149e62=_0x1d776e[_0x28974c[_0x25e4('0x42')]];if(!_0x149e62){if(_0x28974c['field']==='Tag'){var _0x5a96a1=_0x28974c['value'][_0x25e4('0x51')](',')[_0x25e4('0x52')](function(_0x12edde){return Number(_0x12edde);});_0x5a96a1[_0x25e4('0x53')](function(_0x513bda){_0x4afe2c['or'](_0x25e4('0x54'),'%,'+_0x513bda+',%');});_0x16a8fa=_['union'](_0x16a8fa,_0x5a96a1);}else if(_0x28974c[_0x25e4('0x42')]===_0x25e4('0x55')){_0x3d4bad[_0x25e4('0x56')](_0x25e4('0x57'),_0x28974c[_0x25e4('0x58')]);}}else{if(_0x28974c[_0x25e4('0x42')]===_0x25e4('0x59')||_0x149e62[_0x25e4('0x5a')]===_0x25e4('0x5b'))_0x28974c['castTo']=_0x25e4('0x5c');var _0x31fdaf=as[_0x25e4('0x5d')](_0x59c220,_0x149e62[_0x25e4('0x5e')],_0x28974c);_0x3d4bad[_0x35f6ed](_0x31fdaf['text'],_0x31fdaf[_0x25e4('0x58')][_0x25e4('0x5f')],_0x31fdaf[_0x25e4('0x58')][_0x25e4('0x1c')]);}}}else{var _0x1ae8b9=_(Object[_0x25e4('0x2f')](_0x55f52f[_0x25e4('0x37')]))[_0x25e4('0x52')](function(_0x5020cf){return _0x1d776e[_0x25e4('0x3b')](_0x5020cf)?_0x5020cf:undefined;})['filter'](function(_0x1e0e2c){return!_['isNil'](_0x1e0e2c);})[_0x25e4('0x58')]();if(_0x55f52f['query'][_0x25e4('0x60')])_0x1ae8b9[_0x25e4('0x33')](_0x25e4('0x60'));if(!_[_0x25e4('0x61')](_0x1ae8b9)){_0x1ae8b9[_0x25e4('0x53')](function(_0x453584){if(_0x453584===_0x25e4('0x62')){_0x249ad9[_0x25e4('0x3f')](_0x25e4('0x63'),[][_0x25e4('0x64')](_0x55f52f['query'][_0x453584]));}else if(_0x453584===_0x25e4('0x60')){var _0x2256dd='%'+_0x55f52f[_0x25e4('0x37')][_0x453584]+'%';_0x249ad9[_0x25e4('0x3f')](_0x25e4('0x65'),_0x2256dd);}else{_0x249ad9[_0x25e4('0x3f')]('c.'+_0x453584+_0x25e4('0x66'),_0x55f52f['query'][_0x453584]);}});}if(_0x55f52f[_0x25e4('0x37')][_0x25e4('0x67')]){_0x16a8fa=_[_0x25e4('0x68')](_0x55f52f[_0x25e4('0x37')][_0x25e4('0x67')])?_0x55f52f[_0x25e4('0x37')]['tag']:new Array(_0x55f52f[_0x25e4('0x37')][_0x25e4('0x67')]);_0x16a8fa['forEach'](function(_0x295307){_0x4afe2c['or'](_0x25e4('0x54'),'%,'+_0x295307+',%');});}if(_0x55f52f[_0x25e4('0x37')]['filter']){var _0x46c9d2=_0x55f52f[_0x25e4('0x37')][_0x25e4('0x69')][_0x25e4('0x6a')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x46c9d2['split']('\x20')[_0x25e4('0x30')]>0x1){_0x3d4bad['or'](_0x25e4('0x6b'),qs['getFullTextValue'](_0x46c9d2),null);}else{if(qs[_0x25e4('0x6c')](_0x46c9d2)){_0x3d4bad['or'](_0x25e4('0x6d'),_0x46c9d2+'%');_0x3d4bad['or'](_0x25e4('0x6e'),_0x46c9d2+'%');_0x3d4bad['or']('c.mobile\x20LIKE\x20?',_0x46c9d2+'%');_0x3d4bad['or'](_0x25e4('0x6f'),_0x46c9d2+'%');}else if(qs[_0x25e4('0x70')](_0x46c9d2)){_0x3d4bad['or'](_0x25e4('0x71'),_0x46c9d2+'%');}else{_0x3d4bad['or'](_0x25e4('0x72'),'%'+_0x46c9d2+'%');_0x3d4bad['or'](_0x25e4('0x73'),'%'+_0x46c9d2+'%');_0x3d4bad['or']('c.email\x20LIKE\x20?','%'+_0x46c9d2+'%');}}}}_0x249ad9['where'](_0x3d4bad);_0x249ad9[_0x25e4('0x74')]('c.id');var _0x48825b={'type':db[_0x25e4('0x75')][_0x25e4('0x76')][_0x25e4('0x77')],'raw':!![]};var _0x554f8f=_0x249ad9['clone']()['field'](_0x25e4('0x78'));if(_0x1a4e2a[_0x25e4('0x3d')]){_0x1a4e2a[_0x25e4('0x3d')][_0x25e4('0x53')](function(_0xc6a911){_0x249ad9[_0x25e4('0x3d')]('c.'+_0xc6a911[0x0],_0xc6a911[0x1]===_0x25e4('0x79')?![]:!![]);});}if(!_[_0x25e4('0x61')](_0x16a8fa)){_0x249ad9['having'](_0x4afe2c);_0x554f8f['where'](_0x25e4('0x7a'),_0x16a8fa);}BPromise[_0x25e4('0x7b')]()[_0x25e4('0x28')](function(){if(!_0x5e3cc0)return;if(_0x55f52f['user'][_0x25e4('0x7c')]!==_0x25e4('0x7d'))return;if(!_['some'](_0x5e3cc0[_0x25e4('0x4f')],[_0x25e4('0x42'),_0x25e4('0x55')])){return _0x55f52f['user'][_0x25e4('0x7e')]({'attributes':['id'],'raw':!![]})[_0x25e4('0x28')](function(_0xb13d25){if(_[_0x25e4('0x61')](_0xb13d25)){_0x554f8f[_0x25e4('0x3f')](_0x25e4('0x7f'));_0x249ad9['where'](_0x25e4('0x7f'));}else{_0x554f8f[_0x25e4('0x3f')](_0x25e4('0x63'),_[_0x25e4('0x52')](_0xb13d25,'id'));_0x249ad9[_0x25e4('0x3f')](_0x25e4('0x63'),_['map'](_0xb13d25,'id'));}});}})[_0x25e4('0x28')](function(){if(_0x55f52f[_0x25e4('0x80')][_0x25e4('0x7c')]===_0x25e4('0x7d')&&!_0x5e3cc0&&!_0x55f52f[_0x25e4('0x37')]['ListId'])return[];return db[_0x25e4('0x81')]['query'](_0x554f8f[_0x25e4('0x82')](),_0x48825b);})[_0x25e4('0x28')](function(_0x51e9cb){_0x1b9cf8['count']=_0x51e9cb['length'];if(_0x1b9cf8[_0x25e4('0x21')]===0x0)return[];return db['sequelize']['query'](_0x260b5b[_0x25e4('0x82')](),_0x48825b)[_0x25e4('0x28')](function(_0x135d25){_0x358a21=_[_0x25e4('0x83')](_0x135d25,'id');_0x48825b=_[_0x25e4('0x84')](_0x48825b,{'model':db[_0x25e4('0x85')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x55f52f[_0x25e4('0x37')][_0x25e4('0x86')]){_0x1a4e2a[_0x25e4('0x39')][_0x25e4('0x53')](function(_0x13d588){_0x249ad9['field']('c.'+_0x13d588);});}else{_0x249ad9['field'](_0x25e4('0x78'));_0x249ad9['field'](_0x25e4('0x87'));_0x249ad9[_0x25e4('0x42')](_0x25e4('0x88'));_0x249ad9[_0x25e4('0x42')]('c.phone');_0x249ad9[_0x25e4('0x42')](_0x25e4('0x89'));_0x249ad9[_0x25e4('0x42')]('c.fax');_0x249ad9[_0x25e4('0x42')]('c.email');_0x249ad9[_0x25e4('0x42')](_0x25e4('0x8a'));_0x249ad9['field'](_0x25e4('0x8b'));_0x249ad9[_0x25e4('0x42')](_0x25e4('0x8c'));_0x249ad9[_0x25e4('0x42')](_0x25e4('0x8d'));_0x249ad9['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x25e4('0x8e'));}if(_0x1a4e2a[_0x25e4('0x20')])_0x249ad9[_0x25e4('0x20')](_0x1a4e2a[_0x25e4('0x20')]);if(_0x1a4e2a[_0x25e4('0x22')])_0x249ad9[_0x25e4('0x22')](_0x1a4e2a[_0x25e4('0x22')]);return db[_0x25e4('0x81')][_0x25e4('0x37')](_0x249ad9[_0x25e4('0x82')](),_0x48825b);});})[_0x25e4('0x28')](function(_0x134179){_0x134179[_0x25e4('0x53')](function(_0x23e070){if(_0x23e070['TagIds']){_0x23e070[_0x25e4('0x8f')]=[];_0x23e070[_0x25e4('0x8e')][_0x25e4('0x51')](',')['forEach'](function(_0x5e96d8){_0x23e070[_0x25e4('0x8f')][_0x25e4('0x33')](_0x358a21[_0x5e96d8]);});}delete _0x23e070[_0x25e4('0x8e')];});_0x1b9cf8[_0x25e4('0x90')]=_0x134179;return _0x1b9cf8;})['then'](respondWithFilteredResult(_0x3a6063,_0x1a4e2a));})[_0x25e4('0x91')](handleError(_0x3a6063,null));};exports['destroy']=function(_0x29c40f,_0x234279){return db[_0x25e4('0x85')][_0x25e4('0x50')]({'where':{'id':_0x29c40f[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x234279,null))[_0x25e4('0x28')](removeEntity(_0x234279,null))[_0x25e4('0x91')](handleError(_0x234279,null));};exports[_0x25e4('0x2e')]=function(_0x5d577b,_0x23020c){return db[_0x25e4('0x85')]['describe']()[_0x25e4('0x28')](function(_0x21c458){delete _0x21c458[_0x25e4('0x93')];for(var _0x5df22f=0x0;_0x5df22f<Object[_0x25e4('0x2f')](_0x21c458)[_0x25e4('0x30')];_0x5df22f++){var _0x58a603=Object[_0x25e4('0x2f')](_0x21c458)[_0x5df22f];if(!_[_0x25e4('0x31')](_0x58a603,_0x25e4('0x32'))){_0x21c458[_0x58a603]['columnName']=_0x58a603;_0x21c458[_0x58a603][_0x25e4('0x94')]=_0x58a603;}}return _0x21c458;})[_0x25e4('0x28')](function(_0x36ef2c){var _0x12190a={'where':{'$or':[{'ListId':_0x5d577b['query']['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField'][_0x25e4('0x95')](_0x12190a)[_0x25e4('0x28')](function(_0x3936ee){for(var _0x55dbb1=0x0;_0x55dbb1<_0x3936ee[_0x25e4('0x30')];_0x55dbb1++){var _0x14404e='cf_'+_0x3936ee[_0x55dbb1]['id'];_0x36ef2c[_0x14404e][_0x25e4('0x96')]=_0x14404e;_0x36ef2c[_0x14404e]['displayName']=_0x3936ee[_0x55dbb1][_0x25e4('0x97')];_0x36ef2c[_0x14404e]['custom']={'type':_0x3936ee[_0x55dbb1][_0x25e4('0x5e')],'values':_0x3936ee[_0x55dbb1][_0x25e4('0x98')]};}Object[_0x25e4('0x2f')](_0x36ef2c)[_0x25e4('0x53')](function(_0x1fa31e){if(!_0x36ef2c[_0x1fa31e][_0x25e4('0x3b')]('columnName')){delete _0x36ef2c[_0x1fa31e];}});return _0x36ef2c;});})[_0x25e4('0x28')](respondWithResult(_0x23020c,null))[_0x25e4('0x91')](handleError(_0x23020c,null));};exports['merge']=function(_0x11c049,_0x14e9a0){var _0x35b751;var _0x519078;var _0x4bda9e;if(_0x11c049[_0x25e4('0x99')]['id']){delete _0x11c049[_0x25e4('0x99')]['id'];}return db[_0x25e4('0x85')][_0x25e4('0x95')]({'where':{'id':[_0x11c049['body']['to'],_0x11c049[_0x25e4('0x99')][_0x25e4('0x43')]]}})[_0x25e4('0x28')](function(_0x221cb8){if(_0x221cb8){if(_0x221cb8[_0x25e4('0x30')]!==0x2){return null;}_0x221cb8[0x0]=_0x221cb8[0x0][_0x25e4('0x9a')]({'plain':!![]});_0x221cb8[0x1]=_0x221cb8[0x1][_0x25e4('0x9a')]({'plain':!![]});delete _0x221cb8[0x0]['id'];delete _0x221cb8[0x1]['id'];return _[_0x25e4('0x9b')](_0x221cb8[0x0],_0x221cb8[0x1],function(_0x577507,_0x10ba12){if(Array[_0x25e4('0x68')](_0x10ba12)&&!_0x10ba12[_0x25e4('0x30')]){return _0x577507;}else if(!_0x10ba12){return _0x577507;}});}})[_0x25e4('0x28')](handleEntityNotFound(_0x14e9a0,null))[_0x25e4('0x28')](function(_0xb41811){if(_0xb41811){if(_0xb41811[_0x25e4('0x93')]&&_['isArray'](_0xb41811['tags'])){_0xb41811[_0x25e4('0x93')]=_0xb41811['tags'][_0x25e4('0x9c')]();}logger['info']('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x11c049[_0x25e4('0x99')]['to'],_0x11c049['body'][_0x25e4('0x43')]);return db['CmHopper'][_0x25e4('0x9d')]({'where':{'ContactId':[_0x11c049[_0x25e4('0x99')]['to'],_0x11c049[_0x25e4('0x99')][_0x25e4('0x43')]]}})[_0x25e4('0x28')](function(_0x18f13a){logger['info'](_0x25e4('0x9e'),_0x18f13a);return db[_0x25e4('0x9f')][_0x25e4('0x9d')]({'where':{'ContactId':[_0x11c049[_0x25e4('0x99')]['to'],_0x11c049[_0x25e4('0x99')][_0x25e4('0x43')]]}})['then'](function(_0x443fa8){logger['info'](_0x25e4('0xa0'),_0x443fa8);return db[_0x25e4('0x85')][_0x25e4('0xa1')](_0xb41811);});});}})[_0x25e4('0x28')](function(_0x43467f){if(_0x43467f){_0x35b751=_0x43467f;_0x519078={'ContactId':_0x35b751['id']};_0x4bda9e={'where':{'ContactId':[_0x11c049['body']['to'],_0x11c049['body'][_0x25e4('0x43')]]}};return db[_0x25e4('0xa2')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa3')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa4')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa5')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xa6')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa5')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa6')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['SmsInteraction'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xa7')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['FaxInteraction'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa8')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xa9')]['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xaa')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['CmHopperFinal'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xab')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xac')]['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['VoiceCallReport'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xad')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xae')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xaf')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb0')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb1')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['JscriptySessionReport']['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb2')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xb3')]['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb4')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0x85')][_0x25e4('0x9d')]({'where':{'id':[_0x11c049[_0x25e4('0x99')]['to'],_0x11c049['body']['from']]}});}})['then'](function(){if(_0x35b751){return _0x35b751;}})['then'](respondWithResult(_0x14e9a0,null))[_0x25e4('0x91')](handleError(_0x14e9a0,null));};exports[_0x25e4('0xa1')]=function(_0x18d603,_0x41dc75){return db[_0x25e4('0x85')][_0x25e4('0x2e')]()[_0x25e4('0x28')](function(_0x52a366){if(_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]&&_['isArray'](_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')])){if(_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]['length']){_0x18d603[_0x25e4('0x99')]['tags']=_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')][_0x25e4('0x9c')](';')+';';}else{_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]=null;}}else{_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]=null;}return db[_0x25e4('0x85')][_0x25e4('0xa1')](_0x18d603[_0x25e4('0x99')],{'fields':_[_0x25e4('0x2f')](_0x52a366),'raw':!![]});})['then'](respondWithResult(_0x41dc75,0xc9))[_0x25e4('0x91')](handleError(_0x41dc75,null));};exports['bulkCreate']=function(_0x5873f5,_0x5b4cc8){var _0x5ba645=[];var _0x3b288a=0x0;var _0x2e1ff4=0x0;var _0x31ea5b=0x0;return db['CmContact'][_0x25e4('0x2e')]()[_0x25e4('0x28')](function(_0x2f97d1){return BPromise[_0x25e4('0xb5')](_0x5873f5['body'],function(_0xed56b9){var _0x495700={'where':{'$or':[]},'defaults':_0xed56b9,'fields':_[_0x25e4('0x2f')](_0x2f97d1),'raw':!![]};if(_0xed56b9[_0x25e4('0xb6')]){for(var _0x61198c=0x0;_0x61198c<_0xed56b9[_0x25e4('0xb6')][_0x25e4('0x30')];_0x61198c++){var _0x475d56={};_0x475d56[_0xed56b9[_0x25e4('0xb6')][_0x61198c]]=_0xed56b9[_0xed56b9[_0x25e4('0xb6')][_0x61198c]];_0x495700['where'][_0x25e4('0xb7')][_0x25e4('0x33')](_0x475d56);}_0x495700['where'][_0x25e4('0x62')]=_0xed56b9[_0x25e4('0x62')];}return db[_0x25e4('0x85')]['findOrCreate'](_0x495700)[_0x25e4('0xb8')](function(_0x1218e1,_0x10928d){if(_0x10928d){_0x3b288a++;}else{_0x31ea5b++;}})[_0x25e4('0x91')](function(_0x4b1115){console[_0x25e4('0x29')](_0x4b1115);_0x2e1ff4++;});});})[_0x25e4('0x28')](function(_0x1a994e){if(_0x1a994e){return{'success':_0x3b288a,'failure':_0x2e1ff4,'duplicates':_0x31ea5b};}})['then'](respondWithResult(_0x5b4cc8,0xc9))[_0x25e4('0x91')](handleError(_0x5b4cc8,null));};exports[_0x25e4('0xb9')]=function(_0x4a0414,_0x4aee1c,_0x479265){var _0x442c3e;return db['CmContact']['describe']()['then'](function(_0x528748){return db['CmContact'][_0x25e4('0x50')]({'where':{'id':_0x4a0414[_0x25e4('0x92')]['id']},'include':[{'model':db['Tag'],'as':_0x25e4('0x8f'),'attributes':['id',_0x25e4('0x2b'),'color'],'required':_0x4a0414[_0x25e4('0x37')][_0x25e4('0x67')]?!![]:![]}],'attributes':_[_0x25e4('0x2f')](_0x528748)});})[_0x25e4('0x28')](function(_0xaa1453){_0x442c3e=_0xaa1453[_0x25e4('0x9a')]({'plain':!![]});var _0x2dc007={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xaa1453&&_0xaa1453[_0x25e4('0x62')]){if(_0xaa1453['ListId']){_0x2dc007['where'][_0x25e4('0xba')]['push']({'ListId':{'$ne':_0xaa1453[_0x25e4('0x62')]}});}}return db[_0x25e4('0x34')]['findAll'](_0x2dc007);})[_0x25e4('0x28')](function(_0x1fc279){return _['omit'](_0x442c3e,_['map'](_0x1fc279,function(_0x5ac5b3){return util[_0x25e4('0xbb')](_0x25e4('0xbc'),_0x5ac5b3['id']);}));})[_0x25e4('0x28')](handleEntityNotFound(_0x4aee1c,null))[_0x25e4('0x28')](respondWithResult(_0x4aee1c,null))[_0x25e4('0x91')](handleError(_0x4aee1c,null));};exports[_0x25e4('0x27')]=function(_0x3cf25d,_0x160642){var _0x5c2862;if(_0x3cf25d[_0x25e4('0x99')]['id']){delete _0x3cf25d[_0x25e4('0x99')]['id'];}return db['CmContact']['find']({'where':{'id':_0x3cf25d[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x160642,null))['then'](saveUpdates(_0x3cf25d[_0x25e4('0x99')],null))['then'](function(_0x246bff){_0x5c2862=_0x246bff;var _0x383419={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x246bff&&_0x246bff['ListId']){if(_0x246bff['ListId']){_0x383419[_0x25e4('0x3f')][_0x25e4('0xba')]['push']({'ListId':{'$ne':_0x246bff['ListId']}});}}return db[_0x25e4('0x34')]['findAll'](_0x383419);})[_0x25e4('0x28')](function(_0x177256){if(_0x177256){return _[_0x25e4('0xbd')](_['pickBy'](_0x3cf25d[_0x25e4('0x99')],function(_0x5499f1,_0x329bd1){return _[_0x25e4('0x31')](_0x329bd1,'cf_');}),_['map'](_0x177256,function(_0x5de4ca){return util[_0x25e4('0xbb')](_0x25e4('0xbc'),_0x5de4ca['id']);}));}})['then'](function(_0x57c723){if(_0x57c723&&!_[_0x25e4('0x61')](_0x57c723)){var _0x5b9a61=squel[_0x25e4('0x27')]()[_0x25e4('0xbe')](_0x25e4('0x44'))[_0x25e4('0xbf')](_0x57c723)['where'](_0x25e4('0xc0'),_0x3cf25d[_0x25e4('0x92')]['id'])[_0x25e4('0xc1')]();return db['sequelize'][_0x25e4('0x37')](_0x5b9a61[_0x25e4('0xc2')],{'replacements':_0x5b9a61[_0x25e4('0x98')]});}})['then'](function(){if(_0x3cf25d[_0x25e4('0x99')]['phone']&&_0x5c2862){return db[_0x25e4('0xc3')]['update']({'phone':_0x3cf25d[_0x25e4('0x99')]['phone']},{'where':{'ContactId':_0x5c2862['id']}});}})[_0x25e4('0x28')](function(){return _0x5c2862;})[_0x25e4('0x28')](respondWithResult(_0x160642,null))[_0x25e4('0x91')](handleError(_0x160642,null));};exports[_0x25e4('0xc4')]=function(_0x494b0a,_0x3970d7,_0x186e09){var _0x49c34e={};var _0x40e101={};var _0x596b32;var _0x500a1e;return db[_0x25e4('0x85')][_0x25e4('0xc5')]({'where':{'id':_0x494b0a[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x3970d7,null))[_0x25e4('0x28')](function(_0x31df03){if(_0x31df03){_0x596b32=_0x31df03;_0x40e101[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db['Tag'][_0x25e4('0xc6')]);_0x40e101[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x494b0a['query']);_0x40e101[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x40e101[_0x25e4('0x36')],_0x40e101['query']);_0x49c34e[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x40e101['model'],qs[_0x25e4('0x86')](_0x494b0a['query']['fields']));_0x49c34e[_0x25e4('0x39')]=_0x49c34e[_0x25e4('0x39')][_0x25e4('0x30')]?_0x49c34e[_0x25e4('0x39')]:_0x40e101['model'];_0x49c34e[_0x25e4('0x3d')]=qs['sort'](_0x494b0a[_0x25e4('0x37')]['sort']);_0x49c34e[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_['pick'](_0x494b0a[_0x25e4('0x37')],_0x40e101[_0x25e4('0x38')]));if(_0x494b0a[_0x25e4('0x37')]['filter']){_0x49c34e[_0x25e4('0x3f')]=_[_0x25e4('0x84')](_0x49c34e[_0x25e4('0x3f')],{'$or':_[_0x25e4('0x52')](_0x49c34e[_0x25e4('0x39')],function(_0x145ac4){var _0x5ce186={};_0x5ce186[_0x145ac4]={'$like':'%'+_0x494b0a[_0x25e4('0x37')]['filter']+'%'};return _0x5ce186;})});}_0x49c34e=_[_0x25e4('0x84')]({},_0x49c34e,_0x494b0a[_0x25e4('0xc7')]);return _0x596b32[_0x25e4('0xc4')](_0x49c34e);}})[_0x25e4('0x28')](function(_0x1da245){if(_0x1da245){_0x500a1e=_0x1da245[_0x25e4('0x30')];if(!_0x494b0a['query'][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x49c34e[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x494b0a[_0x25e4('0x37')][_0x25e4('0x20')]);_0x49c34e[_0x25e4('0x22')]=qs['offset'](_0x494b0a['query'][_0x25e4('0x22')]);}return _0x596b32[_0x25e4('0xc4')](_0x49c34e);}})[_0x25e4('0x28')](function(_0x55ea7f){if(_0x55ea7f){return _0x55ea7f?{'count':_0x500a1e,'rows':_0x55ea7f}:null;}})[_0x25e4('0x28')](respondWithResult(_0x3970d7,null))[_0x25e4('0x91')](handleError(_0x3970d7,null));};exports[_0x25e4('0xc8')]=function(_0x3fe040,_0x1f559c,_0x56c613){if(_0x3fe040[_0x25e4('0x99')]['id']){delete _0x3fe040[_0x25e4('0x99')]['id'];}return db[_0x25e4('0x85')]['findOne']({'where':{'id':_0x3fe040[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x1f559c,null))[_0x25e4('0x28')](function(_0x464cb4){if(_0x464cb4){return _0x464cb4['setTags'](_0x3fe040[_0x25e4('0x99')][_0x25e4('0xc9')]||[]);}return null;})[_0x25e4('0x28')](respondWithResult(_0x1f559c,null))[_0x25e4('0x91')](handleError(_0x1f559c,null));};exports['getHoppers']=function(_0x1da251,_0x24922e,_0x4ecde3){var _0x1eeb10={'raw':![],'where':{}};var _0x276e0a={};var _0x41642e={'count':0x0,'rows':[]};return db['CmContact'][_0x25e4('0xc5')]({'where':{'id':_0x1da251[_0x25e4('0x92')]['id']}})[_0x25e4('0x28')](handleEntityNotFound(_0x24922e,null))['then'](function(_0x1ae3aa){if(_0x1ae3aa){_0x276e0a[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db[_0x25e4('0xc3')][_0x25e4('0xc6')]);_0x276e0a[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x1da251[_0x25e4('0x37')]);_0x276e0a[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x276e0a[_0x25e4('0x36')],_0x276e0a['query']);_0x1eeb10[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x276e0a['model'],qs[_0x25e4('0x86')](_0x1da251[_0x25e4('0x37')][_0x25e4('0x86')]));_0x1eeb10[_0x25e4('0x39')]=_0x1eeb10[_0x25e4('0x39')][_0x25e4('0x30')]?_0x1eeb10[_0x25e4('0x39')]:_0x276e0a[_0x25e4('0x36')];if(!_0x1da251[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x1eeb10[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x1da251[_0x25e4('0x37')][_0x25e4('0x20')]);_0x1eeb10['offset']=qs[_0x25e4('0x22')](_0x1da251[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x1eeb10[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x1da251['query']['sort']);_0x1eeb10[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x1da251['query'],_0x276e0a[_0x25e4('0x38')]));_0x1eeb10[_0x25e4('0x3f')][_0x25e4('0xca')]=_0x1ae3aa['id'];if(_0x1da251[_0x25e4('0x37')][_0x25e4('0x69')]){_0x1eeb10[_0x25e4('0x3f')]=_['merge'](_0x1eeb10[_0x25e4('0x3f')],{'$or':_['map'](_0x1eeb10[_0x25e4('0x39')],function(_0x495de1){var _0x502338={};_0x502338[_0x495de1]={'$like':'%'+_0x1da251['query'][_0x25e4('0x69')]+'%'};return _0x502338;})});}_0x1eeb10=_['merge']({},_0x1eeb10,_0x1da251[_0x25e4('0xc7')]);return db[_0x25e4('0xc3')][_0x25e4('0x21')]({'where':_0x1eeb10[_0x25e4('0x3f')]})[_0x25e4('0x28')](function(_0x2f72cc){_0x41642e[_0x25e4('0x21')]=_0x2f72cc;if(_0x1da251[_0x25e4('0x37')]['includeAll']){_0x1eeb10[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xc3')][_0x25e4('0x95')](_0x1eeb10);})[_0x25e4('0x28')](function(_0x1846b6){_0x41642e['rows']=_0x1846b6;return _0x41642e;});}})[_0x25e4('0x28')](respondWithFilteredResult(_0x24922e,_0x1eeb10))[_0x25e4('0x91')](handleError(_0x24922e,null));};exports[_0x25e4('0xcc')]=function(_0x46193f,_0x4c1cd6,_0x1e49a6){var _0x5df317={'raw':!![],'where':{}};var _0x5dcfaa={};var _0x3e7d27={'count':0x0,'rows':[]};return db[_0x25e4('0x85')][_0x25e4('0xc5')]({'where':{'id':_0x46193f[_0x25e4('0x92')]['id']}})[_0x25e4('0x28')](handleEntityNotFound(_0x4c1cd6,null))[_0x25e4('0x28')](function(_0x5d0067){if(_0x5d0067){_0x5dcfaa[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db[_0x25e4('0xab')]['rawAttributes']);_0x5dcfaa[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x46193f[_0x25e4('0x37')]);_0x5dcfaa[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x5dcfaa[_0x25e4('0x36')],_0x5dcfaa[_0x25e4('0x37')]);_0x5df317[_0x25e4('0x39')]=_['intersection'](_0x5dcfaa[_0x25e4('0x36')],qs[_0x25e4('0x86')](_0x46193f[_0x25e4('0x37')][_0x25e4('0x86')]));_0x5df317[_0x25e4('0x39')]=_0x5df317[_0x25e4('0x39')]['length']?_0x5df317[_0x25e4('0x39')]:_0x5dcfaa[_0x25e4('0x36')];if(!_0x46193f[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x5df317[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x46193f[_0x25e4('0x37')]['limit']);_0x5df317[_0x25e4('0x22')]=qs['offset'](_0x46193f['query'][_0x25e4('0x22')]);}_0x5df317[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x46193f[_0x25e4('0x37')][_0x25e4('0x3e')]);_0x5df317['where']=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x46193f[_0x25e4('0x37')],_0x5dcfaa[_0x25e4('0x38')]));_0x5df317[_0x25e4('0x3f')][_0x25e4('0xca')]=_0x5d0067['id'];if(_0x46193f['query'][_0x25e4('0x69')]){_0x5df317[_0x25e4('0x3f')]=_[_0x25e4('0x84')](_0x5df317['where'],{'$or':_[_0x25e4('0x52')](_0x5df317[_0x25e4('0x39')],function(_0x345ba3){var _0x409b00={};_0x409b00[_0x345ba3]={'$like':'%'+_0x46193f['query'][_0x25e4('0x69')]+'%'};return _0x409b00;})});}_0x5df317=_[_0x25e4('0x84')]({},_0x5df317,_0x46193f[_0x25e4('0xc7')]);return db[_0x25e4('0xab')][_0x25e4('0x21')]({'where':_0x5df317[_0x25e4('0x3f')]})[_0x25e4('0x28')](function(_0x4f48d8){_0x3e7d27[_0x25e4('0x21')]=_0x4f48d8;if(_0x46193f[_0x25e4('0x37')]['includeAll']){_0x5df317[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xab')][_0x25e4('0x95')](_0x5df317);})['then'](function(_0x44be72){_0x3e7d27[_0x25e4('0x90')]=_0x44be72;return _0x3e7d27;});}})[_0x25e4('0x28')](respondWithFilteredResult(_0x4c1cd6,_0x5df317))[_0x25e4('0x91')](handleError(_0x4c1cd6,null));};exports['getHopperFinals']=function(_0x52ecdc,_0x4769a0,_0x185ee3){var _0x31abfc={'raw':!![],'where':{}};var _0x35d53c={};var _0x4dc6f2={'count':0x0,'rows':[]};return db[_0x25e4('0x85')][_0x25e4('0xc5')]({'where':{'id':_0x52ecdc['params']['id']}})[_0x25e4('0x28')](handleEntityNotFound(_0x4769a0,null))[_0x25e4('0x28')](function(_0x7d8780){if(_0x7d8780){_0x35d53c[_0x25e4('0x36')]=_['keys'](db['CmHopperFinal']['rawAttributes']);_0x35d53c[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x52ecdc['query']);_0x35d53c[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x35d53c[_0x25e4('0x36')],_0x35d53c[_0x25e4('0x37')]);_0x31abfc[_0x25e4('0x39')]=_['intersection'](_0x35d53c[_0x25e4('0x36')],qs['fields'](_0x52ecdc['query']['fields']));_0x31abfc[_0x25e4('0x39')]=_0x31abfc[_0x25e4('0x39')][_0x25e4('0x30')]?_0x31abfc['attributes']:_0x35d53c[_0x25e4('0x36')];if(!_0x52ecdc['query'][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x31abfc['limit']=qs['limit'](_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x20')]);_0x31abfc[_0x25e4('0x22')]=qs[_0x25e4('0x22')](_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x31abfc[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x3e')]);_0x31abfc['where']=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x52ecdc[_0x25e4('0x37')],_0x35d53c[_0x25e4('0x38')]));_0x31abfc[_0x25e4('0x3f')][_0x25e4('0xca')]=_0x7d8780['id'];if(_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x69')]){_0x31abfc[_0x25e4('0x3f')]=_[_0x25e4('0x84')](_0x31abfc[_0x25e4('0x3f')],{'$or':_[_0x25e4('0x52')](_0x31abfc['attributes'],function(_0x35a8a2){var _0x11e9c3={};_0x11e9c3[_0x35a8a2]={'$like':'%'+_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x69')]+'%'};return _0x11e9c3;})});}_0x31abfc=_['merge']({},_0x31abfc,_0x52ecdc[_0x25e4('0xc7')]);return db[_0x25e4('0xcd')][_0x25e4('0x21')]({'where':_0x31abfc['where']})[_0x25e4('0x28')](function(_0x23c09c){_0x4dc6f2['count']=_0x23c09c;if(_0x52ecdc[_0x25e4('0x37')]['includeAll']){_0x31abfc[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xcd')][_0x25e4('0x95')](_0x31abfc);})[_0x25e4('0x28')](function(_0x166b85){_0x4dc6f2[_0x25e4('0x90')]=_0x166b85;return _0x4dc6f2;});}})['then'](respondWithFilteredResult(_0x4769a0,_0x31abfc))[_0x25e4('0x91')](handleError(_0x4769a0,null));};exports[_0x25e4('0xce')]=function(_0x5cb123,_0x222333,_0x347e5a){var _0x255319={'raw':!![],'where':{}};var _0x4eb45e={};var _0x34630c={'count':0x0,'rows':[]};return db[_0x25e4('0x85')]['findOne']({'where':{'id':_0x5cb123[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x222333,null))[_0x25e4('0x28')](function(_0x142454){if(_0x142454){_0x4eb45e[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db['JscriptySessionReport'][_0x25e4('0xc6')]);_0x4eb45e[_0x25e4('0x37')]=_['keys'](_0x5cb123[_0x25e4('0x37')]);_0x4eb45e[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x4eb45e[_0x25e4('0x36')],_0x4eb45e[_0x25e4('0x37')]);_0x255319[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x4eb45e[_0x25e4('0x36')],qs[_0x25e4('0x86')](_0x5cb123['query'][_0x25e4('0x86')]));_0x255319['attributes']=_0x255319[_0x25e4('0x39')][_0x25e4('0x30')]?_0x255319['attributes']:_0x4eb45e[_0x25e4('0x36')];if(!_0x5cb123[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x255319[_0x25e4('0x20')]=qs['limit'](_0x5cb123[_0x25e4('0x37')]['limit']);_0x255319['offset']=qs[_0x25e4('0x22')](_0x5cb123[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x255319[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x5cb123['query'][_0x25e4('0x3e')]);_0x255319[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x5cb123[_0x25e4('0x37')],_0x4eb45e[_0x25e4('0x38')]));_0x255319['where'][_0x25e4('0xca')]=_0x142454['id'];if(_0x5cb123['query'][_0x25e4('0x69')]){_0x255319[_0x25e4('0x3f')]=_['merge'](_0x255319[_0x25e4('0x3f')],{'$or':_[_0x25e4('0x52')](_0x255319[_0x25e4('0x39')],function(_0x1a2828){var _0xbb3381={};_0xbb3381[_0x1a2828]={'$like':'%'+_0x5cb123[_0x25e4('0x37')][_0x25e4('0x69')]+'%'};return _0xbb3381;})});}_0x255319=_[_0x25e4('0x84')]({},_0x255319,_0x5cb123['options']);return db[_0x25e4('0xcf')][_0x25e4('0x21')]({'where':_0x255319[_0x25e4('0x3f')]})['then'](function(_0x3a88e0){_0x34630c[_0x25e4('0x21')]=_0x3a88e0;if(_0x5cb123['query'][_0x25e4('0xd0')]){_0x255319[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xcf')]['findAll'](_0x255319);})[_0x25e4('0x28')](function(_0x582d9a){_0x34630c[_0x25e4('0x90')]=_0x582d9a;return _0x34630c;});}})['then'](respondWithFilteredResult(_0x222333,_0x255319))[_0x25e4('0x91')](handleError(_0x222333,null));};exports[_0x25e4('0xd1')]=function(_0x5f5129,_0x3d249e,_0x1537f7){try{if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0x62')]){throw new Error('No\x20ListId\x20specified');}if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd2')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd3')]){throw new Error(_0x25e4('0xd4'));}if(!_0x5f5129['body'][_0x25e4('0xd5')]){throw new Error(_0x25e4('0xd6'));}var _0x27306a=_0x5f5129['body'][_0x25e4('0xd2')][_0x25e4('0x51')](',');var _0x5023a8=_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd3')][_0x25e4('0x51')](',');if(!_0x27306a['length']||!_0x5023a8[_0x25e4('0x30')]||_0x27306a[_0x25e4('0x30')]!==_0x5023a8[_0x25e4('0x30')]){throw new Error(_0x25e4('0xd7'));}_0x5f5129[_0x25e4('0x99')]['fields']=_[_0x25e4('0xd8')](_0x27306a,_0x5023a8);if(!_0x5f5129['body'][_0x25e4('0x86')]['phone']){throw new Error(_0x25e4('0xd9'));}if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0x86')][_0x25e4('0xda')]){throw new Error(_0x25e4('0xdb'));}var _0xdb1c47=path[_0x25e4('0x9c')](config['root'],_0x25e4('0xdc'),_0x5f5129[_0x25e4('0xdd')][_0x25e4('0xde')]);fs[_0x25e4('0xdf')](_0xdb1c47,parseInt(_0x25e4('0xe0'),0x8));var _0x4de3b3=require(_0x25e4('0xe1'))[_0x25e4('0xe2')](path[_0x25e4('0x9c')](__dirname,'../../components/import/cm/csv'),[_0xdb1c47,_0x5f5129['body'][_0x25e4('0xd2')],_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd3')],_0x5f5129[_0x25e4('0x99')][_0x25e4('0x62')],_0x5f5129[_0x25e4('0x99')][_0x25e4('0xe3')],_0x5f5129['body'][_0x25e4('0xb6')],_0x5f5129[_0x25e4('0x99')]['socket_timestamp']]);return _0x3d249e[_0x25e4('0x1d')](0xc8)[_0x25e4('0x1e')]({'message':'File\x20uploaded\x20correctly!','pid':_0x4de3b3[_0x25e4('0xe4')]});}catch(_0x5ea1e3){return _0x3d249e['status'](0x1f4)[_0x25e4('0x2c')](_0x5ea1e3);}};exports[_0x25e4('0xe5')]=function(_0x59addf,_0x17df79,_0x71175){var _0x5118b0=fs[_0x25e4('0xe6')](_0x59addf[_0x25e4('0xdd')][_0x25e4('0xe7')]);Papa[_0x25e4('0xe8')](_0x5118b0,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5e984a){return _0x17df79[_0x25e4('0x1d')](0xc8)[_0x25e4('0x1e')]({'file':_0x59addf['file'],'fields':_0x5e984a[_0x25e4('0xe9')][_0x25e4('0x86')]});}});};exports[_0x25e4('0xea')]=function(_0x41f99e,_0x4eda88,_0x4cc21e){return db[_0x25e4('0x55')][_0x25e4('0x95')]({'raw':!![],'attributes':['id'],'where':{'role':_0x25e4('0x7d')}})['then'](function(_0x743662){var _0x4fa800=![];if(!_0x41f99e[_0x25e4('0x99')][_0x25e4('0x62')]){throw new Error(_0x25e4('0xeb'));}if(!_0x41f99e[_0x25e4('0x99')][_0x25e4('0xec')][_0x25e4('0xed')]){throw new Error(_0x25e4('0xd9'));}if(!_0x41f99e['body'][_0x25e4('0xec')]['firstName']){throw new Error(_0x25e4('0xdb'));}if(!_0x41f99e['body']['socket_timestamp']){throw new Error(_0x25e4('0xd6'));}var _0x2a7d37=require(_0x25e4('0xe1'))[_0x25e4('0xe2')](path[_0x25e4('0x9c')](__dirname,_0x25e4('0xee')),[_0x41f99e[_0x25e4('0x92')]['id'],JSON[_0x25e4('0xef')](_0x41f99e[_0x25e4('0x99')]),JSON[_0x25e4('0xef')](_0x743662)]);_0x2a7d37['on'](_0x25e4('0xf0'),function(_0x1862d0){_0x4fa800=!![];return _0x4eda88[_0x25e4('0x1d')](0xc8)[_0x25e4('0x1e')]({'message':_0x25e4('0xf1'),'pid':_0x2a7d37[_0x25e4('0xe4')]});});_0x2a7d37['on'](_0x25e4('0xf2'),function(_0x489292){if(_0x489292&&!_0x4fa800){return _0x4eda88[_0x25e4('0x1d')](0x1f4)[_0x25e4('0x1e')]({'message':'error\x20child\x20process','pid':_0x2a7d37['pid']});}});})['catch'](handleError(_0x4eda88,null));};exports[_0x25e4('0xf3')]=function(_0x27fa95,_0x2f2cca){var _0x3c5455=[_0x25e4('0xf4'),'chat',_0x25e4('0xf5'),'openchannel',_0x25e4('0xf6'),_0x25e4('0xf7'),'voice'];var _0xd6aa6c={'offset':0x0,'order':qs[_0x25e4('0x3e')](_0x25e4('0xf8'))},_0x280500={'count':0x0,'rows':[]};Promise['resolve']()[_0x25e4('0x28')](function(){if(_0x27fa95[_0x25e4('0x37')]['channel']){if(!_[_0x25e4('0xf9')](_0x3c5455,_0x27fa95[_0x25e4('0x37')]['channel'][_0x25e4('0xfa')]())){throw new Error('Invalid\x20channel');}_0x3c5455=[_0x27fa95[_0x25e4('0x37')]['channel'][_0x25e4('0xfa')]()];}if(_0x27fa95['query'][_0x25e4('0xfb')]){try{var _0x166442=JSON[_0x25e4('0xe8')](_0x27fa95[_0x25e4('0x37')][_0x25e4('0xfb')]);if(!moment(_0x166442[_0x25e4('0x43')])['isValid']()){throw new Error(_0x25e4('0xfc'));}if(!moment(_0x166442['to'])[_0x25e4('0xfd')]()){throw new Error(_0x25e4('0xfe'));}}catch(_0x137168){throw new Error(_0x25e4('0xff'));}}if(!_0x27fa95[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0xd6aa6c[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x27fa95['query']['limit']||0xa);_0xd6aa6c['offset']=qs[_0x25e4('0x22')](_0x27fa95[_0x25e4('0x37')][_0x25e4('0x22')]);}var _0x142d75=_0x3c5455[_0x25e4('0x52')](function(_0x142fe1){if(_0x142fe1===_0x25e4('0x100')){var _0x56c368={'attributes':['id','uniqueid',_0x25e4('0x5e'),_0x25e4('0x101'),_0x25e4('0x102'),'callerid',_0x25e4('0x103'),_0x25e4('0x104'),'duration',_0x25e4('0x105'),'createdAt',_0x25e4('0x106'),_0x25e4('0x107'),_0x25e4('0x108'),'UserId'],'where':{'ContactId':_0x27fa95[_0x25e4('0x92')]['id']},'include':[{'model':db['User'],'as':_0x25e4('0x55'),'attributes':['id','name','fullname',_0x25e4('0x97')]}],'order':[[_0x25e4('0x109'),_0x25e4('0x79')]]};if(_0x27fa95['query']['range']){_0x56c368[_0x25e4('0x3f')][_0x25e4('0x109')]={'$gte':_0x166442[_0x25e4('0x43')],'$lte':_0x166442['to']};}return db[_0x25e4('0x10a')]['findAndCountAll'](_0x56c368)[_0x25e4('0x28')](function(_0x280341){_0x280500[_0x25e4('0x21')]+=_0x280341['count'];return _[_0x25e4('0x52')](_0x280341['rows'],function(_0x3f5485){var _0x26e231=_0x3f5485[_0x25e4('0x9a')]({'plain':!![]});_0x26e231[_0x25e4('0x10b')]=_0x142fe1;if(_0x26e231[_0x25e4('0x55')]){_0x26e231[_0x25e4('0x55')]={'id':_0x26e231[_0x25e4('0x55')]['id'],'name':_0x26e231[_0x25e4('0x55')][_0x25e4('0x2b')],'fullname':_0x26e231['User'][_0x25e4('0x10c')],'alias':_0x26e231[_0x25e4('0x55')][_0x25e4('0x97')]};}return _0x26e231;});});}else{var _0x403e04=_[_0x25e4('0x10d')](_0x142fe1)+(_0x142fe1===_0x25e4('0x10e')?_0x25e4('0x10f'):_0x25e4('0x110'));var _0xf85b42={'attributes':['id',_0x25e4('0x111'),'closedAt',_0x25e4('0x109'),_0x25e4('0x105'),_0x25e4('0x112'),_0x25e4('0x113'),'thirdDisposition',_0x25e4('0x114'),_0x403e04+'Id'],'where':{'ContactId':_0x27fa95[_0x25e4('0x92')]['id']},'include':[{'model':db[_0x403e04],'as':_0x25e4('0x110'),'attributes':['id',_0x25e4('0x2b'),_0x25e4('0x115')]},{'model':db['User'],'as':_0x25e4('0x116'),'attributes':['id','name','fullname']},{'model':db[_0x25e4('0x117')],'as':_0x25e4('0x8f'),'attributes':['id',_0x25e4('0x2b'),_0x25e4('0x118')],'through':{'attributes':[]}}],'order':[['createdAt',_0x25e4('0x79')]]};if(_0x27fa95[_0x25e4('0x37')][_0x25e4('0xfb')]){_0xf85b42['where'][_0x25e4('0x109')]={'$gte':_0x166442['from'],'$lte':_0x166442['to']};}switch(_0x142fe1){case _0x25e4('0x10e'):_0xf85b42['attributes']['push'](_0x25e4('0x119'),_0x25e4('0x11a'),'customerPort',_0x25e4('0x11b'),_0x25e4('0x11c'),'ratingMessage',_0x25e4('0x11d'),_0x25e4('0x11e'),_0x25e4('0x11f'));break;case _0x25e4('0xf4'):_0xf85b42[_0x25e4('0x39')][_0x25e4('0x33')](_0x25e4('0x120'),'substatus');break;case _0x25e4('0x121'):_0xf85b42[_0x25e4('0x39')][_0x25e4('0x33')](_0x25e4('0x122'),_0x25e4('0x123'));break;}return db[_[_0x25e4('0x10d')](_0x142fe1)+_0x25e4('0x124')][_0x25e4('0x125')](_0xf85b42)[_0x25e4('0x28')](function(_0x5c45d3){_0x280500[_0x25e4('0x21')]+=_0x5c45d3[_0x25e4('0x21')];return _[_0x25e4('0x52')](_0x5c45d3[_0x25e4('0x90')],function(_0x2ab3e4){var _0x807bb=_0x2ab3e4[_0x25e4('0x9a')]({'plain':!![]});_0x807bb['channel']=_0x142fe1;if(_0x807bb['Owner']){_0x807bb[_0x25e4('0x116')]={'id':_0x807bb[_0x25e4('0x116')]['id'],'name':_0x807bb[_0x25e4('0x116')][_0x25e4('0x2b')],'fullname':_0x807bb[_0x25e4('0x116')][_0x25e4('0x10c')]};}return _0x807bb;});});}});return Promise[_0x25e4('0x126')](_0x142d75);})[_0x25e4('0x28')](function(_0x4a231f){return _(_0x4a231f)[_0x25e4('0x127')]()[_0x25e4('0x128')](_0x25e4('0x109'))[_0x25e4('0x129')]()[_0x25e4('0x58')]();})['then'](function(_0x396674){_0x280500[_0x25e4('0x90')]=_0xd6aa6c[_0x25e4('0x20')]?_0x396674[_0x25e4('0x12a')](_0xd6aa6c[_0x25e4('0x22')],_0xd6aa6c[_0x25e4('0x22')]+_0xd6aa6c[_0x25e4('0x20')]):_0x396674;return _0x280500;})[_0x25e4('0x28')](respondWithFilteredResult(_0x2f2cca,_0xd6aa6c))[_0x25e4('0x91')](handleError(_0x2f2cca,null));};
\ No newline at end of file
index 9fa76d1..422e6ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa98f=['exports','events','../../mysqldb','update','emit','hasOwnProperty','hook'];(function(_0x3c2ee4,_0x32558f){var _0x3f6362=function(_0x38dab8){while(--_0x38dab8){_0x3c2ee4['push'](_0x3c2ee4['shift']());}};_0x3f6362(++_0x32558f);}(_0xa98f,0x6a));var _0xfa98=function(_0x26bcff,_0x1bf100){_0x26bcff=_0x26bcff-0x0;var _0xb14b0d=_0xa98f[_0x26bcff];return _0xb14b0d;};'use strict';var EventEmitter=require(_0xfa98('0x0'));var CmContact=require(_0xfa98('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xfa98('0x2'),'afterDestroy':'remove'};function emitEvent(_0x50be03){return function(_0x370168,_0x1b0860,_0x259d68){CmContactEvents[_0xfa98('0x3')](_0x50be03+':'+_0x370168['id'],_0x370168);CmContactEvents['emit'](_0x50be03,_0x370168);_0x259d68(null);};}for(var e in events){if(events[_0xfa98('0x4')](e)){var event=events[e];CmContact[_0xfa98('0x5')](e,emitEvent(event));}}module[_0xfa98('0x6')]=CmContactEvents;
\ No newline at end of file
+var _0x87a3=['save','update','remove','emit','exports','events','CmContact'];(function(_0x24d33b,_0xf7d3e7){var _0x364e5f=function(_0x2bf3de){while(--_0x2bf3de){_0x24d33b['push'](_0x24d33b['shift']());}};_0x364e5f(++_0xf7d3e7);}(_0x87a3,0xa6));var _0x387a=function(_0x245afe,_0x319cde){_0x245afe=_0x245afe-0x0;var _0x4eefde=_0x87a3[_0x245afe];return _0x4eefde;};'use strict';var EventEmitter=require(_0x387a('0x0'));var CmContact=require('../../mysqldb')['db'][_0x387a('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x387a('0x2'),'afterUpdate':_0x387a('0x3'),'afterDestroy':_0x387a('0x4')};function emitEvent(_0x29b20e){return function(_0x20744e,_0x2ad321,_0x346553){CmContactEvents[_0x387a('0x5')](_0x29b20e+':'+_0x20744e['id'],_0x20744e);CmContactEvents['emit'](_0x29b20e,_0x20744e);_0x346553(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x387a('0x6')]=CmContactEvents;
\ No newline at end of file
index 4e65e6a..3f3dd99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11b2=['priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','error','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','catch','VoiceQueue','findAll','outbound','get','dialCheckDuplicateType','always','onlyIfOpen','CmList','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','Lists','List\x20not\x20found','models','isEmpty','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Succesfull]','inspect','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmContact.attributes','exports','define','CmContact','phone','fti_cm_contacts','firstName','lastName','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','cmContact','afterCreate','CmHopper','findOne','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId'];(function(_0x4f3cf6,_0x1d8c0b){var _0x26309f=function(_0x5031c5){while(--_0x5031c5){_0x4f3cf6['push'](_0x4f3cf6['shift']());}};_0x26309f(++_0x1d8c0b);}(_0x11b2,0xf1));var _0x211b=function(_0x243c16,_0x4947c6){_0x243c16=_0x243c16-0x0;var _0x1f8256=_0x11b2[_0x243c16];return _0x1f8256;};'use strict';var _=require(_0x211b('0x0'));var util=require(_0x211b('0x1'));var logger=require(_0x211b('0x2'))(_0x211b('0x3'));var moment=require(_0x211b('0x4'));var BPromise=require(_0x211b('0x5'));var rp=require(_0x211b('0x6'));var fs=require('fs');var path=require(_0x211b('0x7'));var rimraf=require(_0x211b('0x8'));var config=require('../../config/environment');var attributes=require(_0x211b('0x9'));module[_0x211b('0xa')]=function(_0x1983cc,_0x4a6d95){return _0x1983cc[_0x211b('0xb')](_0x211b('0xc'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x211b('0xd'),'fields':[_0x211b('0xd')]},{'name':_0x211b('0xe'),'fields':[_0x211b('0xf'),_0x211b('0x10'),_0x211b('0xd'),'mobile',_0x211b('0x11'),_0x211b('0x12')],'type':_0x211b('0x13')}],'timestamps':!![],'charset':_0x211b('0x14'),'collate':_0x211b('0x15'),'hooks':{'afterCreate':function(_0x4cd8bd,_0x3b6a82,_0x23ab65){var _0xe0af8f=_0x1983cc['models'];var _0x32a2a7=_0x4cd8bd['get']({'plain':!![]});function _0x1c3b32(){return function(_0x18bac7){logger['error'](_0x211b('0x16'),_0x211b('0x17'),util['inspect'](_0x18bac7,{'showHidden':![],'depth':null}));};}var _0x3cfc61=function(_0x254655){return new BPromise(function(_0x575a88,_0x4d7fa0){_0xe0af8f[_0x211b('0x18')][_0x211b('0x19')]({'where':{'phone':_0x32a2a7[_0x211b('0xd')],'VoiceQueueId':_0x254655['id']}})['then'](function(_0x45b4b3){if(!_[_0x211b('0x1a')](_0x45b4b3)){throw new Error(_0x211b('0x1b')+_0x32a2a7[_0x211b('0xd')]+_0x211b('0x1c')+_0x254655['id']);}return _0xe0af8f[_0x211b('0x18')][_0x211b('0x1d')]({'phone':_0x32a2a7[_0x211b('0xd')],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7[_0x211b('0x1e')],'priority':_0x32a2a7[_0x211b('0x1f')]?_0x32a2a7[_0x211b('0x1f')]:0x2,'scheduledat':_0x32a2a7[_0x211b('0x20')]?_0x32a2a7[_0x211b('0x20')]:moment()[_0x211b('0x21')](_0x211b('0x22')),'callback':_0x32a2a7[_0x211b('0x23')]?!![]:![],'callbackuniqueid':_0x32a2a7[_0x211b('0x23')]?_0x32a2a7['callbackUniqueid']:undefined,'callbackat':_0x32a2a7[_0x211b('0x23')]?moment()[_0x211b('0x21')](_0x211b('0x22')):undefined,'VoiceQueueId':_0x254655['id']});})['catch'](function(_0x4ff680){_0x4d7fa0(_0x4ff680);});});};var _0x585134=function(_0x2532df){return new BPromise(function(_0x2486e7,_0x366980){_0xe0af8f[_0x211b('0x18')]['findOne']({'where':{'phone':_0x32a2a7[_0x211b('0xd')],'VoiceQueueId':_0x2532df['id']}})[_0x211b('0x24')](function(_0x26944e){if(!_[_0x211b('0x1a')](_0x26944e)){throw new Error('cmContact,\x20afterCreate\x20'+_0x32a2a7[_0x211b('0xd')]+_0x211b('0x25')+_0x2532df['id']);}return _0xe0af8f['CmHopperFinal'][_0x211b('0x19')]({'where':{'calleridnum':_0x32a2a7[_0x211b('0xd')],'VoiceQueueId':_0x2532df['id']}});})[_0x211b('0x24')](function(_0x523ed8){if(!_[_0x211b('0x1a')](_0x523ed8)){throw new Error(_0x211b('0x26')+_0x32a2a7[_0x211b('0xd')]+_0x211b('0x27')+_0x2532df['id']);}return _0xe0af8f['CmHopper'][_0x211b('0x1d')]({'phone':_0x32a2a7[_0x211b('0xd')],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7[_0x211b('0x1e')],'priority':_0x32a2a7[_0x211b('0x1f')]?_0x32a2a7[_0x211b('0x1f')]:0x2,'scheduledat':_0x32a2a7['scheduledat']?_0x32a2a7['scheduledat']:moment()['format'](_0x211b('0x22')),'callback':_0x32a2a7[_0x211b('0x23')]?!![]:![],'callbackuniqueid':_0x32a2a7[_0x211b('0x23')]?_0x32a2a7[_0x211b('0x23')]:undefined,'callbackat':_0x32a2a7[_0x211b('0x23')]?moment()[_0x211b('0x21')](_0x211b('0x22')):undefined,'VoiceQueueId':_0x2532df['id']});})['catch'](function(_0x5a87c0){_0x366980(_0x5a87c0);});});};function _0x567d37(){return function(_0x41b2bb){logger[_0x211b('0x28')](_0x211b('0x16'),'afterCreate',util['inspect'](_0x41b2bb,{'showHidden':![],'depth':null}));};}var _0x47f671=function(_0x762c0e){return new BPromise(function(_0x563cc6,_0x351e33){_0xe0af8f[_0x211b('0x18')][_0x211b('0x19')]({'where':{'phone':_0x32a2a7[_0x211b('0xd')],'CampaignId':_0x762c0e['id']}})[_0x211b('0x24')](function(_0x12e018){if(!_[_0x211b('0x1a')](_0x12e018)){throw new Error('cmContact,\x20afterCreate\x20'+_0x32a2a7[_0x211b('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x762c0e['id']);}return _0xe0af8f[_0x211b('0x18')][_0x211b('0x1d')]({'phone':_0x32a2a7['phone'],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7[_0x211b('0x1e')],'priority':_0x32a2a7['priority']?_0x32a2a7['priority']:0x2,'scheduledat':_0x32a2a7[_0x211b('0x20')]?_0x32a2a7[_0x211b('0x20')]:moment()['format'](_0x211b('0x22')),'callback':_0x32a2a7[_0x211b('0x23')]?!![]:![],'callbackuniqueid':_0x32a2a7['callbackUniqueid']?_0x32a2a7['callbackUniqueid']:undefined,'callbackat':_0x32a2a7['callbackUniqueid']?moment()[_0x211b('0x21')](_0x211b('0x22')):undefined,'CampaignId':_0x762c0e['id']});})['catch'](function(_0x4d0f5c){_0x351e33(_0x4d0f5c);});});};var _0x5df549=function(_0x497903){return new BPromise(function(_0x1176d9,_0x315e6c){_0xe0af8f['CmHopper'][_0x211b('0x19')]({'where':{'phone':_0x32a2a7[_0x211b('0xd')],'CampaignId':_0x497903['id']}})[_0x211b('0x24')](function(_0x378288){if(!_['isNil'](_0x378288)){throw new Error('cmContact,\x20afterCreate\x20'+_0x32a2a7[_0x211b('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x497903['id']);}return _0xe0af8f[_0x211b('0x29')][_0x211b('0x19')]({'where':{'calleridnum':_0x32a2a7[_0x211b('0xd')],'CampaignId':_0x497903['id']}});})[_0x211b('0x24')](function(_0x638a63){if(!_[_0x211b('0x1a')](_0x638a63)){throw new Error(_0x211b('0x26')+_0x32a2a7[_0x211b('0xd')]+_0x211b('0x2a')+_0x497903['id']);}return _0xe0af8f[_0x211b('0x18')]['create']({'phone':_0x32a2a7[_0x211b('0xd')],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7[_0x211b('0x1e')],'priority':_0x32a2a7[_0x211b('0x1f')]?_0x32a2a7[_0x211b('0x1f')]:0x2,'scheduledat':_0x32a2a7[_0x211b('0x20')]?_0x32a2a7[_0x211b('0x20')]:moment()[_0x211b('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x32a2a7['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x32a2a7['callbackUniqueid']?_0x32a2a7['callbackUniqueid']:undefined,'callbackat':_0x32a2a7[_0x211b('0x23')]?moment()[_0x211b('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x497903['id']});})[_0x211b('0x2b')](function(_0x12337b){_0x315e6c(_0x12337b);});});};if(_0x32a2a7[_0x211b('0x1e')]){_0xe0af8f[_0x211b('0x2c')][_0x211b('0x2d')]({'where':{'type':_0x211b('0x2e')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0xe0af8f['CmList'],'as':'Lists','where':{'id':_0x32a2a7[_0x211b('0x1e')]}}]})['then'](function(_0x146b0a){if(_0x146b0a){var _0x3ed02=[];for(var _0x4675a1=0x0,_0x2edd3b;_0x4675a1<_0x146b0a['length'];_0x4675a1+=0x1){_0x2edd3b=_0x146b0a[_0x4675a1][_0x211b('0x2f')]({'plain':!![]});switch(_0x2edd3b[_0x211b('0x30')]){case _0x211b('0x31'):_0x585134(_0x2edd3b)[_0x211b('0x2b')](_0x1c3b32());break;case _0x211b('0x32'):_0x3cfc61(_0x2edd3b)[_0x211b('0x2b')](_0x1c3b32());break;default:_0xe0af8f[_0x211b('0x18')]['create']({'phone':_0x32a2a7['phone'],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7['ListId'],'scheduledat':_0x32a2a7[_0x211b('0x20')]?_0x32a2a7[_0x211b('0x20')]:moment()[_0x211b('0x21')](_0x211b('0x22')),'priority':_0x32a2a7[_0x211b('0x1f')]?_0x32a2a7[_0x211b('0x1f')]:0x2,'callback':_0x32a2a7['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x32a2a7[_0x211b('0x23')]?_0x32a2a7[_0x211b('0x23')]:undefined,'callbackat':_0x32a2a7[_0x211b('0x23')]?moment()['format'](_0x211b('0x22')):undefined,'VoiceQueueId':_0x2edd3b['id']})['catch'](_0x1c3b32());}}}})[_0x211b('0x24')](function(){return _0xe0af8f[_0x211b('0x2c')][_0x211b('0x2d')]({'where':{'type':_0x211b('0x2e')},'attributes':['id'],'include':[{'model':_0xe0af8f[_0x211b('0x33')],'as':_0x211b('0x34'),'where':{'id':_0x32a2a7['ListId']}}]})[_0x211b('0x24')](function(_0x31aaf9){if(_0x31aaf9){var _0x42ae57=[];for(var _0x550180=0x0,_0x2cc18f;_0x550180<_0x31aaf9[_0x211b('0x35')];_0x550180+=0x1){_0x2cc18f=_0x31aaf9[_0x550180][_0x211b('0x2f')]({'plain':!![]});_0xe0af8f[_0x211b('0x36')][_0x211b('0x1d')]({'phone':_0x32a2a7['phone'],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7['ListId'],'VoiceQueueId':_0x2cc18f['id']})['catch'](function(_0x279c78){logger[_0x211b('0x28')](_0x211b('0x37'),'afterCreate',_0x279c78[_0x211b('0x38')]);});}}});})[_0x211b('0x24')](function(){return _0xe0af8f[_0x211b('0x39')][_0x211b('0x2d')]({'attributes':['id',_0x211b('0x30')],'include':[{'model':_0xe0af8f[_0x211b('0x33')],'as':_0x211b('0x3a'),'where':{'id':_0x32a2a7[_0x211b('0x1e')]}}]})[_0x211b('0x24')](function(_0x309dca){if(_0x309dca){var _0x4e9381=[];for(var _0x5b31e3=0x0,_0x1e2f0e;_0x5b31e3<_0x309dca[_0x211b('0x35')];_0x5b31e3+=0x1){_0x1e2f0e=_0x309dca[_0x5b31e3]['get']({'plain':!![]});switch(_0x1e2f0e[_0x211b('0x30')]){case _0x211b('0x31'):_0x5df549(_0x1e2f0e)[_0x211b('0x2b')](_0x567d37());break;case'onlyIfOpen':_0x47f671(_0x1e2f0e)[_0x211b('0x2b')](_0x567d37());break;default:_0xe0af8f[_0x211b('0x18')]['create']({'phone':_0x32a2a7['phone'],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7[_0x211b('0x1e')],'scheduledat':_0x32a2a7[_0x211b('0x20')]?_0x32a2a7[_0x211b('0x20')]:moment()[_0x211b('0x21')](_0x211b('0x22')),'priority':_0x32a2a7[_0x211b('0x1f')]?_0x32a2a7[_0x211b('0x1f')]:0x2,'callback':_0x32a2a7[_0x211b('0x23')]?!![]:![],'callbackuniqueid':_0x32a2a7['callbackUniqueid']?_0x32a2a7[_0x211b('0x23')]:undefined,'callbackat':_0x32a2a7[_0x211b('0x23')]?moment()['format'](_0x211b('0x22')):undefined,'CampaignId':_0x1e2f0e['id']})[_0x211b('0x2b')](_0x567d37());}}}});})[_0x211b('0x24')](function(){return _0xe0af8f[_0x211b('0x39')][_0x211b('0x2d')]({'attributes':['id'],'include':[{'model':_0xe0af8f[_0x211b('0x33')],'as':_0x211b('0x34'),'where':{'id':_0x32a2a7['ListId']}}]})[_0x211b('0x24')](function(_0x26cf75){if(_0x26cf75){var _0x204a2b=[];for(var _0x353e32=0x0,_0x27c688;_0x353e32<_0x26cf75[_0x211b('0x35')];_0x353e32+=0x1){_0x27c688=_0x26cf75[_0x353e32][_0x211b('0x2f')]({'plain':!![]});_0xe0af8f[_0x211b('0x36')][_0x211b('0x1d')]({'phone':_0x32a2a7[_0x211b('0xd')],'ContactId':_0x32a2a7['id'],'ListId':_0x32a2a7[_0x211b('0x1e')],'CampaignId':_0x27c688['id']})[_0x211b('0x2b')](function(_0x3e90e2){logger['error'](_0x211b('0x37'),_0x211b('0x17'),_0x3e90e2[_0x211b('0x38')]);});}}});})[_0x211b('0x24')](function(){_0x23ab65();})['catch'](function(_0x1b2f9c){logger['error'](_0x211b('0x37'),_0x211b('0x17'),_0x1b2f9c['message']);_0x23ab65(_0x1b2f9c);});}else{_0x23ab65(new Error(_0x211b('0x3b')));}},'afterDestroy':function(_0x50a963,_0x19392c,_0x3950be){var _0x322748=_0x1983cc[_0x211b('0x3c')];var _0x459426=_0x50a963[_0x211b('0x2f')]({'plain':!![]});return _0x322748['CmHopper'][_0x211b('0x2d')]({'raw':!![],'where':{'ListId':_0x459426['ListId'],'ContactId':_0x459426['id']}})['then'](function(_0x5b9771){if(!_[_0x211b('0x3d')](_0x5b9771)){var _0x5dd291=[];for(var _0x58fab7=0x0;_0x58fab7<_0x5b9771[_0x211b('0x35')];_0x58fab7+=0x1){var _0x283dfa=_0x322748[_0x211b('0x18')]['destroy']({'where':{'ListId':_0x5b9771[_0x58fab7]['ListId'],'ContactId':_0x5b9771[_0x58fab7]['ContactId'],'VoiceQueueId':_0x5b9771[_0x58fab7][_0x211b('0x3e')],'CampaignId':_0x5b9771[_0x58fab7][_0x211b('0x3f')]}});_0x5dd291['push'](_0x283dfa);}return BPromise[_0x211b('0x40')](_0x5dd291);}})[_0x211b('0x24')](function(_0x1bcd08){logger[_0x211b('0x41')](_0x211b('0x42'),util[_0x211b('0x43')](_0x1bcd08,{'showHidden':![],'depth':null}));_0x3950be();})['catch'](function(_0x576d0f){logger[_0x211b('0x28')]('[CmContact][afterDestroy][Error]',util[_0x211b('0x43')](_0x576d0f,{'showHidden':![],'depth':null}));_0x3950be(_0x576d0f);});}}});};
\ No newline at end of file
+var _0xca66=['bluebird','request-promise','path','./cmContact.attributes','exports','define','phone','fti_cm_contacts','mobile','fax','email','FULLTEXT','utf8mb4','models','get','error','cmContact','afterCreate','inspect','CmHopper','then','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','findOne','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','VoiceQueue','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','onlyIfOpen','BlackLists','List\x20not\x20found','destroy','ContactId','VoiceQueueId','CampaignId','push','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment'];(function(_0x1ceaef,_0x140b16){var _0x50ead9=function(_0x24a41c){while(--_0x24a41c){_0x1ceaef['push'](_0x1ceaef['shift']());}};_0x50ead9(++_0x140b16);}(_0xca66,0xbe));var _0x6ca6=function(_0x35a61d,_0x5073ce){_0x35a61d=_0x35a61d-0x0;var _0x21c4e6=_0xca66[_0x35a61d];return _0x21c4e6;};'use strict';var _=require(_0x6ca6('0x0'));var util=require(_0x6ca6('0x1'));var logger=require(_0x6ca6('0x2'))(_0x6ca6('0x3'));var moment=require(_0x6ca6('0x4'));var BPromise=require(_0x6ca6('0x5'));var rp=require(_0x6ca6('0x6'));var fs=require('fs');var path=require(_0x6ca6('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6ca6('0x8'));module[_0x6ca6('0x9')]=function(_0x427bbe,_0xebe198){return _0x427bbe[_0x6ca6('0xa')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x6ca6('0xb'),'fields':[_0x6ca6('0xb')]},{'name':_0x6ca6('0xc'),'fields':['firstName','lastName',_0x6ca6('0xb'),_0x6ca6('0xd'),_0x6ca6('0xe'),_0x6ca6('0xf')],'type':_0x6ca6('0x10')}],'timestamps':!![],'charset':_0x6ca6('0x11'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4fc3e3,_0x20ea95,_0x467ae9){var _0x33dfe9=_0x427bbe[_0x6ca6('0x12')];var _0x537ebf=_0x4fc3e3[_0x6ca6('0x13')]({'plain':!![]});function _0x3cb819(){return function(_0x1f0a2c){logger[_0x6ca6('0x14')](_0x6ca6('0x15'),_0x6ca6('0x16'),util[_0x6ca6('0x17')](_0x1f0a2c,{'showHidden':![],'depth':null}));};}var _0x288495=function(_0x4eea5d){return new BPromise(function(_0x38074a,_0x114be5){_0x33dfe9[_0x6ca6('0x18')]['findOne']({'where':{'phone':_0x537ebf[_0x6ca6('0xb')],'VoiceQueueId':_0x4eea5d['id']}})[_0x6ca6('0x19')](function(_0x56fb92){if(!_[_0x6ca6('0x1a')](_0x56fb92)){throw new Error(_0x6ca6('0x1b')+_0x537ebf['phone']+_0x6ca6('0x1c')+_0x4eea5d['id']);}return _0x33dfe9[_0x6ca6('0x18')]['create']({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf['priority']?_0x537ebf[_0x6ca6('0x1e')]:0x2,'scheduledat':_0x537ebf[_0x6ca6('0x1f')]?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf['callbackUniqueid']?_0x537ebf['callbackUniqueid']:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()[_0x6ca6('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x4eea5d['id']});})[_0x6ca6('0x23')](function(_0x65b9b4){_0x114be5(_0x65b9b4);});});};var _0x240940=function(_0x381145){return new BPromise(function(_0x108150,_0x28044a){_0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x24')]({'where':{'phone':_0x537ebf[_0x6ca6('0xb')],'VoiceQueueId':_0x381145['id']}})[_0x6ca6('0x19')](function(_0x4ea654){if(!_['isNil'](_0x4ea654)){throw new Error(_0x6ca6('0x1b')+_0x537ebf['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x381145['id']);}return _0x33dfe9[_0x6ca6('0x25')][_0x6ca6('0x24')]({'where':{'calleridnum':_0x537ebf[_0x6ca6('0xb')],'VoiceQueueId':_0x381145['id']}});})[_0x6ca6('0x19')](function(_0x50ceac){if(!_[_0x6ca6('0x1a')](_0x50ceac)){throw new Error(_0x6ca6('0x26')+_0x537ebf['phone']+_0x6ca6('0x27')+_0x381145['id']);}return _0x33dfe9['CmHopper'][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf[_0x6ca6('0x1e')]:0x2,'scheduledat':_0x537ebf['scheduledat']?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf[_0x6ca6('0x22')]:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()['format'](_0x6ca6('0x21')):undefined,'VoiceQueueId':_0x381145['id']});})['catch'](function(_0x4c1e5b){_0x28044a(_0x4c1e5b);});});};function _0x7214a7(){return function(_0x5249ca){logger['error'](_0x6ca6('0x15'),_0x6ca6('0x16'),util['inspect'](_0x5249ca,{'showHidden':![],'depth':null}));};}var _0x35bea2=function(_0x5b4d67){return new BPromise(function(_0x5c237f,_0x446a0e){_0x33dfe9['CmHopper'][_0x6ca6('0x24')]({'where':{'phone':_0x537ebf['phone'],'CampaignId':_0x5b4d67['id']}})[_0x6ca6('0x19')](function(_0x16fe7d){if(!_[_0x6ca6('0x1a')](_0x16fe7d)){throw new Error(_0x6ca6('0x1b')+_0x537ebf['phone']+_0x6ca6('0x29')+_0x5b4d67['id']);}return _0x33dfe9[_0x6ca6('0x18')]['create']({'phone':_0x537ebf['phone'],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf[_0x6ca6('0x1e')]:0x2,'scheduledat':_0x537ebf['scheduledat']?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf[_0x6ca6('0x22')]:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x5b4d67['id']});})[_0x6ca6('0x23')](function(_0x3cb0a2){_0x446a0e(_0x3cb0a2);});});};var _0x9c69fd=function(_0x39684d){return new BPromise(function(_0x267d6b,_0x1ce81a){_0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x24')]({'where':{'phone':_0x537ebf[_0x6ca6('0xb')],'CampaignId':_0x39684d['id']}})['then'](function(_0xb77459){if(!_[_0x6ca6('0x1a')](_0xb77459)){throw new Error(_0x6ca6('0x1b')+_0x537ebf[_0x6ca6('0xb')]+_0x6ca6('0x2a')+_0x39684d['id']);}return _0x33dfe9[_0x6ca6('0x25')][_0x6ca6('0x24')]({'where':{'calleridnum':_0x537ebf[_0x6ca6('0xb')],'CampaignId':_0x39684d['id']}});})[_0x6ca6('0x19')](function(_0x168952){if(!_[_0x6ca6('0x1a')](_0x168952)){throw new Error(_0x6ca6('0x26')+_0x537ebf[_0x6ca6('0xb')]+_0x6ca6('0x2b')+_0x39684d['id']);}return _0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf['priority']:0x2,'scheduledat':_0x537ebf['scheduledat']?_0x537ebf['scheduledat']:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'callback':_0x537ebf['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf['callbackUniqueid']:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()['format'](_0x6ca6('0x21')):undefined,'CampaignId':_0x39684d['id']});})[_0x6ca6('0x23')](function(_0x4ce61e){_0x1ce81a(_0x4ce61e);});});};if(_0x537ebf['ListId']){_0x33dfe9['VoiceQueue'][_0x6ca6('0x2c')]({'where':{'type':_0x6ca6('0x2d')},'attributes':['id',_0x6ca6('0x2e')],'include':[{'model':_0x33dfe9[_0x6ca6('0x2f')],'as':_0x6ca6('0x30'),'where':{'id':_0x537ebf['ListId']}}]})[_0x6ca6('0x19')](function(_0x118e0e){if(_0x118e0e){var _0x214cde=[];for(var _0x1c0b18=0x0,_0x226f02;_0x1c0b18<_0x118e0e[_0x6ca6('0x31')];_0x1c0b18+=0x1){_0x226f02=_0x118e0e[_0x1c0b18][_0x6ca6('0x13')]({'plain':!![]});switch(_0x226f02[_0x6ca6('0x2e')]){case _0x6ca6('0x32'):_0x240940(_0x226f02)[_0x6ca6('0x23')](_0x3cb819());break;case'onlyIfOpen':_0x288495(_0x226f02)[_0x6ca6('0x23')](_0x3cb819());break;default:_0x33dfe9['CmHopper'][_0x6ca6('0x28')]({'phone':_0x537ebf['phone'],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'scheduledat':_0x537ebf[_0x6ca6('0x1f')]?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'priority':_0x537ebf['priority']?_0x537ebf['priority']:0x2,'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf[_0x6ca6('0x22')]:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()[_0x6ca6('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x226f02['id']})[_0x6ca6('0x23')](_0x3cb819());}}}})[_0x6ca6('0x19')](function(){return _0x33dfe9[_0x6ca6('0x33')]['findAll']({'where':{'type':_0x6ca6('0x2d')},'attributes':['id'],'include':[{'model':_0x33dfe9[_0x6ca6('0x2f')],'as':'BlackLists','where':{'id':_0x537ebf['ListId']}}]})['then'](function(_0x53b65e){if(_0x53b65e){var _0x3116e8=[];for(var _0x2b33e7=0x0,_0x5e2cbf;_0x2b33e7<_0x53b65e[_0x6ca6('0x31')];_0x2b33e7+=0x1){_0x5e2cbf=_0x53b65e[_0x2b33e7][_0x6ca6('0x13')]({'plain':!![]});_0x33dfe9[_0x6ca6('0x34')]['create']({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'VoiceQueueId':_0x5e2cbf['id']})[_0x6ca6('0x23')](function(_0x19b88f){logger[_0x6ca6('0x14')](_0x6ca6('0x35'),'afterCreate',_0x19b88f[_0x6ca6('0x36')]);});}}});})[_0x6ca6('0x19')](function(){return _0x33dfe9[_0x6ca6('0x37')][_0x6ca6('0x2c')]({'attributes':['id',_0x6ca6('0x2e')],'include':[{'model':_0x33dfe9['CmList'],'as':'Lists','where':{'id':_0x537ebf[_0x6ca6('0x1d')]}}]})['then'](function(_0x247fa1){if(_0x247fa1){var _0x53feee=[];for(var _0x812c5e=0x0,_0x3bd7ca;_0x812c5e<_0x247fa1[_0x6ca6('0x31')];_0x812c5e+=0x1){_0x3bd7ca=_0x247fa1[_0x812c5e][_0x6ca6('0x13')]({'plain':!![]});switch(_0x3bd7ca['dialCheckDuplicateType']){case _0x6ca6('0x32'):_0x9c69fd(_0x3bd7ca)['catch'](_0x7214a7());break;case _0x6ca6('0x38'):_0x35bea2(_0x3bd7ca)[_0x6ca6('0x23')](_0x7214a7());break;default:_0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'scheduledat':_0x537ebf[_0x6ca6('0x1f')]?_0x537ebf[_0x6ca6('0x1f')]:moment()['format'](_0x6ca6('0x21')),'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf[_0x6ca6('0x1e')]:0x2,'callback':_0x537ebf['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf['callbackUniqueid']:undefined,'callbackat':_0x537ebf['callbackUniqueid']?moment()[_0x6ca6('0x20')](_0x6ca6('0x21')):undefined,'CampaignId':_0x3bd7ca['id']})[_0x6ca6('0x23')](_0x7214a7());}}}});})[_0x6ca6('0x19')](function(){return _0x33dfe9[_0x6ca6('0x37')][_0x6ca6('0x2c')]({'attributes':['id'],'include':[{'model':_0x33dfe9['CmList'],'as':_0x6ca6('0x39'),'where':{'id':_0x537ebf[_0x6ca6('0x1d')]}}]})[_0x6ca6('0x19')](function(_0x3224df){if(_0x3224df){var _0x4a16d9=[];for(var _0x436dfd=0x0,_0xbd7d1a;_0x436dfd<_0x3224df['length'];_0x436dfd+=0x1){_0xbd7d1a=_0x3224df[_0x436dfd][_0x6ca6('0x13')]({'plain':!![]});_0x33dfe9[_0x6ca6('0x34')][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'CampaignId':_0xbd7d1a['id']})[_0x6ca6('0x23')](function(_0x513536){logger['error'](_0x6ca6('0x35'),'afterCreate',_0x513536[_0x6ca6('0x36')]);});}}});})[_0x6ca6('0x19')](function(){_0x467ae9();})[_0x6ca6('0x23')](function(_0x541c97){logger[_0x6ca6('0x14')](_0x6ca6('0x35'),_0x6ca6('0x16'),_0x541c97[_0x6ca6('0x36')]);_0x467ae9(_0x541c97);});}else{_0x467ae9(new Error(_0x6ca6('0x3a')));}},'afterDestroy':function(_0x224b3d,_0x54a7b8,_0x5289ab){var _0x1489e0=_0x427bbe[_0x6ca6('0x12')];var _0x1f5fa8=_0x224b3d['get']({'plain':!![]});return _0x1489e0[_0x6ca6('0x18')][_0x6ca6('0x2c')]({'raw':!![],'where':{'ListId':_0x1f5fa8[_0x6ca6('0x1d')],'ContactId':_0x1f5fa8['id']}})[_0x6ca6('0x19')](function(_0x3014cd){if(!_['isEmpty'](_0x3014cd)){var _0xfcb770=[];for(var _0x278bc4=0x0;_0x278bc4<_0x3014cd['length'];_0x278bc4+=0x1){var _0x222c31=_0x1489e0[_0x6ca6('0x18')][_0x6ca6('0x3b')]({'where':{'ListId':_0x3014cd[_0x278bc4]['ListId'],'ContactId':_0x3014cd[_0x278bc4][_0x6ca6('0x3c')],'VoiceQueueId':_0x3014cd[_0x278bc4][_0x6ca6('0x3d')],'CampaignId':_0x3014cd[_0x278bc4][_0x6ca6('0x3e')]}});_0xfcb770[_0x6ca6('0x3f')](_0x222c31);}return BPromise['all'](_0xfcb770);}})['then'](function(_0x52c541){logger['info']('[CmContact][afterDestroy][Succesfull]',util[_0x6ca6('0x17')](_0x52c541,{'showHidden':![],'depth':null}));_0x5289ab();})['catch'](function(_0x363bbc){logger[_0x6ca6('0x14')](_0x6ca6('0x40'),util['inspect'](_0x363bbc,{'showHidden':![],'depth':null}));_0x5289ab(_0x363bbc);});}}});};
\ No newline at end of file
index ee10aeb..832542b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8621=['sequelize','query','catch','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','request\x20sent','debug','error','code','message','CmContact,\x20%s,\x20%s','result','GetCmContact','CmContact','findAll','options','raw','attributes','limit','include','map','model','stringify','CreateCmContact','create','body','length','cf_','table','set','where','id\x20=\x20?','toString'];(function(_0x1343e4,_0xaba5a0){var _0x3977f2=function(_0x49c0e6){while(--_0x49c0e6){_0x1343e4['push'](_0x1343e4['shift']());}};_0x3977f2(++_0xaba5a0);}(_0x8621,0x1b3));var _0x1862=function(_0x474311,_0x3d3455){_0x474311=_0x474311-0x0;var _0x46a9ac=_0x8621[_0x474311];return _0x46a9ac;};'use strict';var _=require(_0x1862('0x0'));var util=require(_0x1862('0x1'));var moment=require(_0x1862('0x2'));var BPromise=require(_0x1862('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1862('0x4'));var squel=require(_0x1862('0x5'));var db=require(_0x1862('0x6'))['db'];var utils=require(_0x1862('0x7'));var logger=require(_0x1862('0x8'))(_0x1862('0x9'));var config=require(_0x1862('0xa'));var jayson=require(_0x1862('0xb'));var client=jayson[_0x1862('0xc')][_0x1862('0xd')]({'port':0x232a});config['redis']=_[_0x1862('0xe')](config[_0x1862('0xf')],{'host':_0x1862('0x10'),'port':0x18eb});var socket=require(_0x1862('0x11'))(new Redis(config[_0x1862('0xf')]));require(_0x1862('0x12'))[_0x1862('0x13')](socket);function respondWithRpcPromise(_0x3944ee,_0x358899,_0x311c22){return new BPromise(function(_0x189085,_0xda871){return client[_0x1862('0x14')](_0x3944ee,_0x311c22)[_0x1862('0x15')](function(_0xb8b9ff){logger[_0x1862('0x16')]('CmContact,\x20%s,\x20%s',_0x358899,_0x1862('0x17'));logger[_0x1862('0x18')]('CmContact,\x20%s,\x20%s,\x20%s',_0x358899,'request\x20sent',JSON['stringify'](_0xb8b9ff));if(_0xb8b9ff[_0x1862('0x19')]){if(_0xb8b9ff[_0x1862('0x19')][_0x1862('0x1a')]===0x1f4){logger[_0x1862('0x19')]('CmContact,\x20%s,\x20%s',_0x358899,_0xb8b9ff[_0x1862('0x19')][_0x1862('0x1b')]);return _0xda871(_0xb8b9ff[_0x1862('0x19')][_0x1862('0x1b')]);}logger[_0x1862('0x19')](_0x1862('0x1c'),_0x358899,_0xb8b9ff[_0x1862('0x19')][_0x1862('0x1b')]);return _0x189085(_0xb8b9ff['error'][_0x1862('0x1b')]);}else{logger[_0x1862('0x16')](_0x1862('0x1c'),_0x358899,_0x1862('0x17'));_0x189085(_0xb8b9ff[_0x1862('0x1d')][_0x1862('0x1b')]);}})['catch'](function(_0x336e05){logger[_0x1862('0x19')](_0x1862('0x1c'),_0x358899,_0x336e05);_0xda871(_0x336e05);});});}exports[_0x1862('0x1e')]=function(_0x2a10b9){var _0x381069=this;return new Promise(function(_0x33aa8e,_0x4ff2e3){return db[_0x1862('0x1f')][_0x1862('0x20')]({'raw':_0x2a10b9[_0x1862('0x21')]?_0x2a10b9[_0x1862('0x21')][_0x1862('0x22')]===undefined?!![]:![]:!![],'where':_0x2a10b9[_0x1862('0x21')]?_0x2a10b9[_0x1862('0x21')]['where']||null:null,'attributes':_0x2a10b9[_0x1862('0x21')]?_0x2a10b9[_0x1862('0x21')][_0x1862('0x23')]||null:null,'limit':_0x2a10b9['options']?_0x2a10b9[_0x1862('0x21')][_0x1862('0x24')]||null:null,'include':_0x2a10b9[_0x1862('0x21')]?_0x2a10b9['options'][_0x1862('0x25')]?_[_0x1862('0x26')](_0x2a10b9[_0x1862('0x21')]['include'],function(_0x457a3d){return{'model':db[_0x457a3d[_0x1862('0x27')]],'as':_0x457a3d['as'],'attributes':_0x457a3d[_0x1862('0x23')],'include':_0x457a3d[_0x1862('0x25')]?_[_0x1862('0x26')](_0x457a3d[_0x1862('0x25')],function(_0x5307d8){return{'model':db[_0x5307d8[_0x1862('0x27')]],'as':_0x5307d8['as'],'attributes':_0x5307d8[_0x1862('0x23')],'include':_0x5307d8[_0x1862('0x25')]?_[_0x1862('0x26')](_0x5307d8[_0x1862('0x25')],function(_0x2d8dfe){return{'model':db[_0x2d8dfe[_0x1862('0x27')]],'as':_0x2d8dfe['as'],'attributes':_0x2d8dfe[_0x1862('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2112da){logger[_0x1862('0x16')](_0x1862('0x1e'),_0x2a10b9);logger[_0x1862('0x18')]('GetCmContact',_0x2a10b9,JSON[_0x1862('0x28')](_0x2112da));_0x33aa8e(_0x2112da);})['catch'](function(_0x4f9372){logger[_0x1862('0x19')](_0x1862('0x1e'),_0x4f9372[_0x1862('0x1b')],_0x2a10b9);_0x4ff2e3(_0x381069[_0x1862('0x19')](0x1f4,_0x4f9372[_0x1862('0x1b')]));});});};exports[_0x1862('0x29')]=function(_0x1b76ff){var _0x11fbfb=this;return new Promise(function(_0x656e1f,_0xfe1f83){return db[_0x1862('0x1f')][_0x1862('0x2a')](_0x1b76ff[_0x1862('0x2b')],{'raw':_0x1b76ff[_0x1862('0x21')]?_0x1b76ff['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x335e6f){var _0xd361be;for(var _0x152bbd=0x0;_0x152bbd<Object['keys'](_0x1b76ff[_0x1862('0x2b')])[_0x1862('0x2c')];_0x152bbd++){var _0x232375=Object['keys'](_0x1b76ff[_0x1862('0x2b')])[_0x152bbd];if(_0x232375['startsWith'](_0x1862('0x2d'))){_0xd361be=squel['update']()[_0x1862('0x2e')]('cm_contacts')[_0x1862('0x2f')](_0x232375,_0x1b76ff[_0x1862('0x2b')][_0x232375])[_0x1862('0x30')](_0x1862('0x31'),_0x335e6f['id'])[_0x1862('0x32')]();break;}}if(!_0xd361be)return _0x335e6f;return db[_0x1862('0x33')][_0x1862('0x34')](_0xd361be)[_0x1862('0x15')](function(){return _0x335e6f;});})['then'](function(_0x34b177){logger[_0x1862('0x16')]('CreateCmContact',_0x1b76ff);logger[_0x1862('0x18')](_0x1862('0x29'),_0x1b76ff,JSON[_0x1862('0x28')](_0x34b177));_0x656e1f(_0x34b177);})[_0x1862('0x35')](function(_0x628ebf){logger[_0x1862('0x19')](_0x1862('0x29'),_0x628ebf[_0x1862('0x1b')],_0x1b76ff);_0xfe1f83(_0x11fbfb['error'](0x1f4,_0x628ebf[_0x1862('0x1b')]));});});};
\ No newline at end of file
+var _0xf71e=['cf_','update','table','cm_contacts','id\x20=\x20?','toString','query','lodash','util','bluebird','ioredis','squel','../../mysqldb','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetCmContact','options','raw','where','attributes','limit','include','model','map','CreateCmContact','create','body','keys','length'];(function(_0x3d124b,_0x2b8fb5){var _0x447e49=function(_0xb9f802){while(--_0xb9f802){_0x3d124b['push'](_0x3d124b['shift']());}};_0x447e49(++_0x2b8fb5);}(_0xf71e,0xf7));var _0xef71=function(_0xdd827a,_0x482ad2){_0xdd827a=_0xdd827a-0x0;var _0x2f46f1=_0xf71e[_0xdd827a];return _0x2f46f1;};'use strict';var _=require(_0xef71('0x0'));var util=require(_0xef71('0x1'));var moment=require('moment');var BPromise=require(_0xef71('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef71('0x3'));var squel=require(_0xef71('0x4'));var db=require(_0xef71('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xef71('0x6'))(_0xef71('0x7'));var config=require('../../config/environment');var jayson=require(_0xef71('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xef71('0x9')]=_[_0xef71('0xa')](config[_0xef71('0x9')],{'host':_0xef71('0xb'),'port':0x18eb});var socket=require(_0xef71('0xc'))(new Redis(config[_0xef71('0x9')]));require(_0xef71('0xd'))[_0xef71('0xe')](socket);function respondWithRpcPromise(_0x58d72e,_0x283546,_0x427938){return new BPromise(function(_0x5c7a1e,_0x2ef6aa){return client[_0xef71('0xf')](_0x58d72e,_0x427938)[_0xef71('0x10')](function(_0x35c114){logger[_0xef71('0x11')](_0xef71('0x12'),_0x283546,_0xef71('0x13'));logger[_0xef71('0x14')]('CmContact,\x20%s,\x20%s,\x20%s',_0x283546,'request\x20sent',JSON[_0xef71('0x15')](_0x35c114));if(_0x35c114['error']){if(_0x35c114[_0xef71('0x16')][_0xef71('0x17')]===0x1f4){logger['error'](_0xef71('0x12'),_0x283546,_0x35c114[_0xef71('0x16')][_0xef71('0x18')]);return _0x2ef6aa(_0x35c114['error'][_0xef71('0x18')]);}logger['error'](_0xef71('0x12'),_0x283546,_0x35c114[_0xef71('0x16')][_0xef71('0x18')]);return _0x5c7a1e(_0x35c114[_0xef71('0x16')][_0xef71('0x18')]);}else{logger['info'](_0xef71('0x12'),_0x283546,'request\x20sent');_0x5c7a1e(_0x35c114[_0xef71('0x19')][_0xef71('0x18')]);}})[_0xef71('0x1a')](function(_0x333365){logger['error'](_0xef71('0x12'),_0x283546,_0x333365);_0x2ef6aa(_0x333365);});});}exports[_0xef71('0x1b')]=function(_0x4c5bb5){var _0xbbc240=this;return new Promise(function(_0x5b4952,_0x1fb8a1){return db['CmContact']['findAll']({'raw':_0x4c5bb5['options']?_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x1d')]===undefined?!![]:![]:!![],'where':_0x4c5bb5['options']?_0x4c5bb5['options'][_0xef71('0x1e')]||null:null,'attributes':_0x4c5bb5['options']?_0x4c5bb5['options'][_0xef71('0x1f')]||null:null,'limit':_0x4c5bb5[_0xef71('0x1c')]?_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x20')]||null:null,'include':_0x4c5bb5[_0xef71('0x1c')]?_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x21')]?_['map'](_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x21')],function(_0x27ab1c){return{'model':db[_0x27ab1c['model']],'as':_0x27ab1c['as'],'attributes':_0x27ab1c['attributes'],'include':_0x27ab1c[_0xef71('0x21')]?_['map'](_0x27ab1c[_0xef71('0x21')],function(_0x3e9888){return{'model':db[_0x3e9888[_0xef71('0x22')]],'as':_0x3e9888['as'],'attributes':_0x3e9888['attributes'],'include':_0x3e9888[_0xef71('0x21')]?_[_0xef71('0x23')](_0x3e9888[_0xef71('0x21')],function(_0x4150a0){return{'model':db[_0x4150a0['model']],'as':_0x4150a0['as'],'attributes':_0x4150a0[_0xef71('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xef71('0x10')](function(_0x598563){logger[_0xef71('0x11')](_0xef71('0x1b'),_0x4c5bb5);logger[_0xef71('0x14')]('GetCmContact',_0x4c5bb5,JSON[_0xef71('0x15')](_0x598563));_0x5b4952(_0x598563);})[_0xef71('0x1a')](function(_0x2beb6f){logger['error'](_0xef71('0x1b'),_0x2beb6f[_0xef71('0x18')],_0x4c5bb5);_0x1fb8a1(_0xbbc240[_0xef71('0x16')](0x1f4,_0x2beb6f[_0xef71('0x18')]));});});};exports[_0xef71('0x24')]=function(_0x2ef556){var _0x10d442=this;return new Promise(function(_0x12bd1c,_0x48d32e){return db['CmContact'][_0xef71('0x25')](_0x2ef556[_0xef71('0x26')],{'raw':_0x2ef556[_0xef71('0x1c')]?_0x2ef556[_0xef71('0x1c')][_0xef71('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x540b69){var _0x3b3a26;for(var _0x3a9718=0x0;_0x3a9718<Object[_0xef71('0x27')](_0x2ef556[_0xef71('0x26')])[_0xef71('0x28')];_0x3a9718++){var _0x4f4f71=Object['keys'](_0x2ef556[_0xef71('0x26')])[_0x3a9718];if(_0x4f4f71['startsWith'](_0xef71('0x29'))){_0x3b3a26=squel[_0xef71('0x2a')]()[_0xef71('0x2b')](_0xef71('0x2c'))['set'](_0x4f4f71,_0x2ef556[_0xef71('0x26')][_0x4f4f71])[_0xef71('0x1e')](_0xef71('0x2d'),_0x540b69['id'])[_0xef71('0x2e')]();break;}}if(!_0x3b3a26)return _0x540b69;return db['sequelize'][_0xef71('0x2f')](_0x3b3a26)[_0xef71('0x10')](function(){return _0x540b69;});})[_0xef71('0x10')](function(_0x47a742){logger[_0xef71('0x11')]('CreateCmContact',_0x2ef556);logger[_0xef71('0x14')](_0xef71('0x24'),_0x2ef556,JSON['stringify'](_0x47a742));_0x12bd1c(_0x47a742);})[_0xef71('0x1a')](function(_0x3e4bf4){logger[_0xef71('0x16')](_0xef71('0x24'),_0x3e4bf4[_0xef71('0x18')],_0x2ef556);_0x48d32e(_0x10d442[_0xef71('0x16')](0x1f4,_0x3e4bf4['message']));});});};
\ No newline at end of file
index 03ab275..a13e49c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index a20bf5d..2f2eaad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe99b=['/upload/:id','import','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./cmContact.controller','get','index','/describe','/:id','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','/create_many','/:id/tags','setTags','join','root','server/files/tmp','originalname','replace','format','%s-%s%s','basename','extname','now','/csv','single','file','uploadCsv','diskStorage','/upload','upload'];(function(_0x3d3b8f,_0x34e273){var _0x1cbdff=function(_0x17f7f5){while(--_0x17f7f5){_0x3d3b8f['push'](_0x3d3b8f['shift']());}};_0x1cbdff(++_0x34e273);}(_0xe99b,0x196));var _0xbe99=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe99b[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xbe99('0x0'));var util=require(_0xbe99('0x1'));var path=require('path');var timeout=require(_0xbe99('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbe99('0x3'));var auth=require(_0xbe99('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xbe99('0x5'));var controller=require(_0xbe99('0x6'));router[_0xbe99('0x7')]('/',auth['isAuthenticated'](),controller[_0xbe99('0x8')]);router['get'](_0xbe99('0x9'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xbe99('0xa'),auth[_0xbe99('0xb')](),controller[_0xbe99('0xc')]);router[_0xbe99('0x7')]('/:id/tags',auth[_0xbe99('0xb')](),controller['getTags']);router[_0xbe99('0x7')](_0xbe99('0xd'),auth[_0xbe99('0xb')](),controller[_0xbe99('0xe')]);router[_0xbe99('0x7')](_0xbe99('0xf'),auth[_0xbe99('0xb')](),controller[_0xbe99('0x10')]);router[_0xbe99('0x7')]('/:id/hopper_finals',auth[_0xbe99('0xb')](),controller[_0xbe99('0x11')]);router[_0xbe99('0x7')]('/:id/jscripty_sessions',auth[_0xbe99('0xb')](),controller[_0xbe99('0x12')]);router[_0xbe99('0x7')](_0xbe99('0x13'),auth[_0xbe99('0xb')](),controller[_0xbe99('0x14')]);router[_0xbe99('0x15')](_0xbe99('0x16'),auth[_0xbe99('0xb')](),controller[_0xbe99('0x17')]);router['post']('/',auth[_0xbe99('0xb')](),controller['create']);router[_0xbe99('0x15')](_0xbe99('0x18'),auth[_0xbe99('0xb')](),controller['bulkCreate']);router[_0xbe99('0x15')](_0xbe99('0x19'),auth[_0xbe99('0xb')](),controller[_0xbe99('0x1a')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2043d2,_0x30a7fb,_0xed1454){_0xed1454(null,path[_0xbe99('0x1b')](config[_0xbe99('0x1c')],_0xbe99('0x1d')));},'filename':function(_0x560e14,_0x3ac68f,_0x101910){_0x3ac68f['originalname']=_0x3ac68f[_0xbe99('0x1e')][_0xbe99('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x101910(null,util[_0xbe99('0x20')](_0xbe99('0x21'),path[_0xbe99('0x22')](_0x3ac68f[_0xbe99('0x1e')],path[_0xbe99('0x23')](_0x3ac68f[_0xbe99('0x1e')])),Date[_0xbe99('0x24')](),path[_0xbe99('0x23')](_0x3ac68f[_0xbe99('0x1e')])));}})});router[_0xbe99('0x15')](_0xbe99('0x25'),upload[_0xbe99('0x26')](_0xbe99('0x27')),controller[_0xbe99('0x28')]);var upload=multer({'storage':multer[_0xbe99('0x29')]({'destination':function(_0x512c5d,_0x2ae376,_0x5991db){_0x5991db(null,path['join'](config['root'],'server/files/tmp'));},'filename':function(_0x34f8d9,_0x360f68,_0x38658d){_0x360f68['originalname']=_0x360f68[_0xbe99('0x1e')][_0xbe99('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x38658d(null,util[_0xbe99('0x20')]('%s-%s%s',path[_0xbe99('0x22')](_0x360f68[_0xbe99('0x1e')],path[_0xbe99('0x23')](_0x360f68[_0xbe99('0x1e')])),Date[_0xbe99('0x24')](),path[_0xbe99('0x23')](_0x360f68[_0xbe99('0x1e')])));}})});router[_0xbe99('0x15')](_0xbe99('0x2a'),upload['single'](_0xbe99('0x27')),controller[_0xbe99('0x2b')]);router['post'](_0xbe99('0x2c'),auth['isAuthenticated'](),controller[_0xbe99('0x2d')]);router['put'](_0xbe99('0xa'),auth['isAuthenticated'](),controller[_0xbe99('0x2e')]);router[_0xbe99('0x2f')](_0xbe99('0xa'),auth[_0xbe99('0xb')](),controller[_0xbe99('0x30')]);module[_0xbe99('0x31')]=router;
\ No newline at end of file
+var _0xc995=['extname','/csv','single','file','uploadCsv','now','/upload','/upload/:id','import','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmContact.controller','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/tags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','/merge','merge','post','create','/create_many','bulkCreate','setTags','diskStorage','join','server/files/tmp','originalname','replace','format','%s-%s%s','basename'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0xc995,0xdd));var _0x5c99=function(_0x5817b6,_0x132ad0){_0x5817b6=_0x5817b6-0x0;var _0x3a6ae0=_0xc995[_0x5817b6];return _0x3a6ae0;};'use strict';var multer=require('multer');var util=require(_0x5c99('0x0'));var path=require('path');var timeout=require(_0x5c99('0x1'));var express=require(_0x5c99('0x2'));var router=express[_0x5c99('0x3')]();var fs_extra=require(_0x5c99('0x4'));var auth=require(_0x5c99('0x5'));var interaction=require(_0x5c99('0x6'));var config=require('../../config/environment');var controller=require(_0x5c99('0x7'));router['get']('/',auth[_0x5c99('0x8')](),controller[_0x5c99('0x9')]);router['get'](_0x5c99('0xa'),auth['isAuthenticated'](),controller[_0x5c99('0xb')]);router[_0x5c99('0xc')](_0x5c99('0xd'),auth['isAuthenticated'](),controller[_0x5c99('0xe')]);router[_0x5c99('0xc')](_0x5c99('0xf'),auth[_0x5c99('0x8')](),controller['getTags']);router[_0x5c99('0xc')](_0x5c99('0x10'),auth[_0x5c99('0x8')](),controller['getHoppers']);router['get'](_0x5c99('0x11'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x12')]);router[_0x5c99('0xc')](_0x5c99('0x13'),auth[_0x5c99('0x8')](),controller['getHopperFinals']);router[_0x5c99('0xc')](_0x5c99('0x14'),auth['isAuthenticated'](),controller[_0x5c99('0x15')]);router['get'](_0x5c99('0x16'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x17')]);router['post'](_0x5c99('0x18'),auth['isAuthenticated'](),controller[_0x5c99('0x19')]);router[_0x5c99('0x1a')]('/',auth[_0x5c99('0x8')](),controller[_0x5c99('0x1b')]);router[_0x5c99('0x1a')](_0x5c99('0x1c'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x1d')]);router[_0x5c99('0x1a')](_0x5c99('0xf'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x1e')]);var upload=multer({'storage':multer[_0x5c99('0x1f')]({'destination':function(_0x151151,_0x2a619e,_0x5d2824){_0x5d2824(null,path[_0x5c99('0x20')](config['root'],_0x5c99('0x21')));},'filename':function(_0x4fa3ac,_0x2f1c26,_0x35aa25){_0x2f1c26[_0x5c99('0x22')]=_0x2f1c26[_0x5c99('0x22')][_0x5c99('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x35aa25(null,util[_0x5c99('0x24')](_0x5c99('0x25'),path[_0x5c99('0x26')](_0x2f1c26['originalname'],path[_0x5c99('0x27')](_0x2f1c26['originalname'])),Date['now'](),path['extname'](_0x2f1c26['originalname'])));}})});router['post'](_0x5c99('0x28'),upload[_0x5c99('0x29')](_0x5c99('0x2a')),controller[_0x5c99('0x2b')]);var upload=multer({'storage':multer[_0x5c99('0x1f')]({'destination':function(_0x2c2119,_0x179ad7,_0x4bc94c){_0x4bc94c(null,path[_0x5c99('0x20')](config['root'],'server/files/tmp'));},'filename':function(_0x17f231,_0x50fc86,_0x1447c6){_0x50fc86[_0x5c99('0x22')]=_0x50fc86[_0x5c99('0x22')][_0x5c99('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1447c6(null,util['format'](_0x5c99('0x25'),path['basename'](_0x50fc86[_0x5c99('0x22')],path[_0x5c99('0x27')](_0x50fc86[_0x5c99('0x22')])),Date[_0x5c99('0x2c')](),path[_0x5c99('0x27')](_0x50fc86[_0x5c99('0x22')])));}})});router['post'](_0x5c99('0x2d'),upload[_0x5c99('0x29')](_0x5c99('0x2a')),controller['upload']);router[_0x5c99('0x1a')](_0x5c99('0x2e'),auth['isAuthenticated'](),controller[_0x5c99('0x2f')]);router['put'](_0x5c99('0xd'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x30')]);router[_0x5c99('0x31')](_0x5c99('0xd'),auth['isAuthenticated'](),controller[_0x5c99('0x32')]);module[_0x5c99('0x33')]=router;
\ No newline at end of file
index 9c4305f..c1056c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x890c=['voice','sequelize','lodash','getDataValue','alias','STRING','setDataValue','name','TEXT','type','values','isArray','BOOLEAN'];(function(_0x3d1779,_0x25f3ab){var _0x37664b=function(_0x2a16af){while(--_0x2a16af){_0x3d1779['push'](_0x3d1779['shift']());}};_0x37664b(++_0x25f3ab);}(_0x890c,0x1e2));var _0xc890=function(_0x1e1e72,_0x2fda56){_0x1e1e72=_0x1e1e72-0x0;var _0x183ee0=_0x890c[_0x1e1e72];return _0x183ee0;};'use strict';var Sequelize=require(_0xc890('0x0'));var _=require(_0xc890('0x1'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x129cc3){return this[_0xc890('0x2')](_0xc890('0x3'));}},'alias':{'type':Sequelize[_0xc890('0x4')],'allowNull':![],'set':function(_0x59a3e8){this[_0xc890('0x5')](_0xc890('0x3'),_0x59a3e8?_0x59a3e8:this[_0xc890('0x2')](_0xc890('0x6')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xc890('0x7')]('long'),'get':function(){if(this[_0xc890('0x2')](_0xc890('0x8'))==='select'){return JSON['parse'](this[_0xc890('0x2')](_0xc890('0x9')));}else{return this[_0xc890('0x2')](_0xc890('0x9'));}},'set':function(_0x3a746e){if(Array[_0xc890('0xa')](_0x3a746e)){this[_0xc890('0x5')](_0xc890('0x9'),JSON['stringify'](_0x3a746e));}else{this[_0xc890('0x5')](_0xc890('0x9'),_0x3a746e);}}},'required':{'type':Sequelize[_0xc890('0xb')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xc890('0xb')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xc890('0xc'))}};
\ No newline at end of file
+var _0xa2a5=['STRING','setDataValue','TEXT','long','values','isArray','stringify','BOOLEAN','ENUM','sequelize','lodash','exports','getDataValue','alias'];(function(_0x1b5ffe,_0x196aae){var _0x1f7d9f=function(_0x107887){while(--_0x107887){_0x1b5ffe['push'](_0x1b5ffe['shift']());}};_0x1f7d9f(++_0x196aae);}(_0xa2a5,0x1c9));var _0x5a2a=function(_0x260ac8,_0x282a0b){_0x260ac8=_0x260ac8-0x0;var _0x33bf91=_0xa2a5[_0x260ac8];return _0x33bf91;};'use strict';var Sequelize=require(_0x5a2a('0x0'));var _=require(_0x5a2a('0x1'));module[_0x5a2a('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x54f466){return this[_0x5a2a('0x3')](_0x5a2a('0x4'));}},'alias':{'type':Sequelize[_0x5a2a('0x5')],'allowNull':![],'set':function(_0x36a905){this[_0x5a2a('0x6')](_0x5a2a('0x4'),_0x36a905?_0x36a905:this['getDataValue']('name'));}},'type':{'type':Sequelize[_0x5a2a('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x5a2a('0x7')](_0x5a2a('0x8')),'get':function(){if(this[_0x5a2a('0x3')]('type')==='select'){return JSON['parse'](this[_0x5a2a('0x3')](_0x5a2a('0x9')));}else{return this['getDataValue']('values');}},'set':function(_0xd6c674){if(Array[_0x5a2a('0xa')](_0xd6c674)){this[_0x5a2a('0x6')](_0x5a2a('0x9'),JSON[_0x5a2a('0xb')](_0xd6c674));}else{this[_0x5a2a('0x6')](_0x5a2a('0x9'),_0xd6c674);}}},'required':{'type':Sequelize[_0x5a2a('0xc')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x5a2a('0xc')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x5a2a('0xd')]('voice')}};
\ No newline at end of file
index d0d721a..b736c92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb635=['findAll','rows','catch','show','find','body','params','create','transaction','TEXT','type','text','Sequelize','number','INTEGER','switch','BOOLEAN','defaultValue','sequelize','cm_contacts','format','cf_%d','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','name','CmCustomField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','map','VIRTUAL','then','includeAll','include'];(function(_0x44e5f6,_0x1cdb43){var _0x350e0e=function(_0x329ed1){while(--_0x329ed1){_0x44e5f6['push'](_0x44e5f6['shift']());}};_0x350e0e(++_0x1cdb43);}(_0xb635,0x11b));var _0x5b63=function(_0x13877f,_0x2605d3){_0x13877f=_0x13877f-0x0;var _0x5827fa=_0xb635[_0x13877f];return _0x5827fa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5b63('0x0'));var zipdir=require(_0x5b63('0x1'));var jsonpatch=require(_0x5b63('0x2'));var rp=require(_0x5b63('0x3'));var moment=require(_0x5b63('0x4'));var BPromise=require(_0x5b63('0x5'));var Mustache=require(_0x5b63('0x6'));var util=require('util');var path=require(_0x5b63('0x7'));var sox=require(_0x5b63('0x8'));var csv=require('to-csv');var ejs=require(_0x5b63('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5b63('0xa'));var squel=require(_0x5b63('0xb'));var crypto=require(_0x5b63('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5b63('0xd'));var toCsv=require(_0x5b63('0xe'));var querystring=require('querystring');var Papa=require(_0x5b63('0xf'));var Redis=require(_0x5b63('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5b63('0x11'));var hardwareService=require(_0x5b63('0x12'));var logger=require(_0x5b63('0x13'))(_0x5b63('0x14'));var utils=require(_0x5b63('0x15'));var config=require(_0x5b63('0x16'));var licenseUtil=require(_0x5b63('0x17'));var db=require(_0x5b63('0x18'))['db'];function respondWithStatusCode(_0x2d2800,_0x3ed48a){_0x3ed48a=_0x3ed48a||0xcc;return function(_0x39419f){if(_0x39419f){return _0x2d2800['sendStatus'](_0x3ed48a);}return _0x2d2800[_0x5b63('0x19')](_0x3ed48a)[_0x5b63('0x1a')]();};}function respondWithResult(_0x499cd9,_0x636744){_0x636744=_0x636744||0xc8;return function(_0x13d153){if(_0x13d153){return _0x499cd9[_0x5b63('0x19')](_0x636744)[_0x5b63('0x1b')](_0x13d153);}};}function respondWithFilteredResult(_0x43bc21,_0x269969){return function(_0x4ce577){if(_0x4ce577){var _0x135b96=typeof _0x269969[_0x5b63('0x1c')]===_0x5b63('0x1d')&&typeof _0x269969['limit']==='undefined';var _0x3c28a2=_0x4ce577[_0x5b63('0x1e')];var _0x10e9bf=_0x135b96?0x0:_0x269969[_0x5b63('0x1c')];var _0x4bb73a=_0x135b96?_0x4ce577[_0x5b63('0x1e')]:_0x269969[_0x5b63('0x1c')]+_0x269969[_0x5b63('0x1f')];var _0x3d6e5a;if(_0x4bb73a>=_0x3c28a2){_0x4bb73a=_0x3c28a2;_0x3d6e5a=0xc8;}else{_0x3d6e5a=0xce;}_0x43bc21[_0x5b63('0x19')](_0x3d6e5a);return _0x43bc21[_0x5b63('0x20')](_0x5b63('0x21'),_0x10e9bf+'-'+_0x4bb73a+'/'+_0x3c28a2)[_0x5b63('0x1b')](_0x4ce577);}return null;};}function patchUpdates(_0x1e311e){return function(_0x1722ab){try{jsonpatch[_0x5b63('0x22')](_0x1722ab,_0x1e311e,!![]);}catch(_0x436142){return BPromise[_0x5b63('0x23')](_0x436142);}return _0x1722ab[_0x5b63('0x24')]();};}function saveUpdates(_0x3d586a,_0x1e242e){return function(_0x285eef){if(_0x285eef){return _0x285eef[_0x5b63('0x25')](_0x3d586a)['then'](function(_0x163a74){return _0x163a74;});}return null;};}function removeEntity(_0x4ee936,_0x3be8f8){return function(_0x5431bb){if(_0x5431bb){return _0x5431bb[_0x5b63('0x26')]()['then'](function(){_0x4ee936[_0x5b63('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x351c43,_0x37ff88){return function(_0x17dd05){if(!_0x17dd05){_0x351c43[_0x5b63('0x27')](0x194);}return _0x17dd05;};}function handleError(_0x554c16,_0x4894cf){_0x4894cf=_0x4894cf||0x1f4;return function(_0x929e74){logger[_0x5b63('0x28')](_0x929e74['stack']);if(_0x929e74[_0x5b63('0x29')]){delete _0x929e74[_0x5b63('0x29')];}_0x554c16['status'](_0x4894cf)['send'](_0x929e74);};}exports['index']=function(_0x7c5d74,_0x1f68ca){var _0x3bcbbb={},_0x150335={},_0x2fa652={'count':0x0,'rows':[]};var _0x268548=_['map'](db[_0x5b63('0x2a')][_0x5b63('0x2b')],function(_0x81cd5e){return{'name':_0x81cd5e[_0x5b63('0x2c')],'type':_0x81cd5e['type'][_0x5b63('0x2d')]};});_0x150335[_0x5b63('0x2e')]=_['differenceBy'](_['map'](_0x268548,_0x5b63('0x29')),[_0x5b63('0x29')]);_0x150335[_0x5b63('0x2f')]=_[_0x5b63('0x30')](_0x7c5d74[_0x5b63('0x2f')]);_0x150335[_0x5b63('0x31')]=_[_0x5b63('0x32')](_0x150335[_0x5b63('0x2e')],_0x150335[_0x5b63('0x2f')]);_0x3bcbbb['attributes']=_['intersection'](_0x150335['model'],qs[_0x5b63('0x33')](_0x7c5d74['query'][_0x5b63('0x33')]));_0x3bcbbb[_0x5b63('0x34')]=_0x3bcbbb[_0x5b63('0x34')][_0x5b63('0x35')]?_0x3bcbbb['attributes']:_0x150335[_0x5b63('0x2e')];if(!_0x7c5d74[_0x5b63('0x2f')][_0x5b63('0x36')]('nolimit')){_0x3bcbbb[_0x5b63('0x1f')]=qs[_0x5b63('0x1f')](_0x7c5d74[_0x5b63('0x2f')][_0x5b63('0x1f')]);_0x3bcbbb[_0x5b63('0x1c')]=qs[_0x5b63('0x1c')](_0x7c5d74[_0x5b63('0x2f')][_0x5b63('0x1c')]);}_0x3bcbbb[_0x5b63('0x37')]=qs[_0x5b63('0x38')](_0x7c5d74['query'][_0x5b63('0x38')]);_0x3bcbbb[_0x5b63('0x39')]=qs[_0x5b63('0x31')](_['pick'](_0x7c5d74[_0x5b63('0x2f')],_0x150335['filters']),_0x268548);if(_0x7c5d74[_0x5b63('0x2f')][_0x5b63('0x3a')]){_0x3bcbbb[_0x5b63('0x39')]=_[_0x5b63('0x3b')](_0x3bcbbb[_0x5b63('0x39')],{'$or':_[_0x5b63('0x3c')](_0x268548,function(_0x3907b4){if(_0x3907b4['type']!==_0x5b63('0x3d')){var _0x16c132={};_0x16c132[_0x3907b4[_0x5b63('0x29')]]={'$like':'%'+_0x7c5d74[_0x5b63('0x2f')]['filter']+'%'};return _0x16c132;}})});}_0x3bcbbb=_[_0x5b63('0x3b')]({},_0x3bcbbb,_0x7c5d74['options']);var _0x5a54c3={'where':_0x3bcbbb[_0x5b63('0x39')]};return db[_0x5b63('0x2a')][_0x5b63('0x1e')](_0x5a54c3)[_0x5b63('0x3e')](function(_0x13d9a6){_0x2fa652[_0x5b63('0x1e')]=_0x13d9a6;if(_0x7c5d74[_0x5b63('0x2f')][_0x5b63('0x3f')]){_0x3bcbbb[_0x5b63('0x40')]=[{'all':!![]}];}return db[_0x5b63('0x2a')][_0x5b63('0x41')](_0x3bcbbb);})[_0x5b63('0x3e')](function(_0x5075c6){_0x2fa652[_0x5b63('0x42')]=_0x5075c6;return _0x2fa652;})[_0x5b63('0x3e')](respondWithFilteredResult(_0x1f68ca,_0x3bcbbb))[_0x5b63('0x43')](handleError(_0x1f68ca,null));};exports[_0x5b63('0x44')]=function(_0x1cec4a,_0x51cd9d){var _0x564732={'raw':!![],'where':{'id':_0x1cec4a['params']['id']}},_0x2b890a={};_0x2b890a[_0x5b63('0x2e')]=_['keys'](db[_0x5b63('0x2a')][_0x5b63('0x2b')]);_0x2b890a['query']=_[_0x5b63('0x30')](_0x1cec4a[_0x5b63('0x2f')]);_0x2b890a[_0x5b63('0x31')]=_[_0x5b63('0x32')](_0x2b890a[_0x5b63('0x2e')],_0x2b890a[_0x5b63('0x2f')]);_0x564732[_0x5b63('0x34')]=_[_0x5b63('0x32')](_0x2b890a[_0x5b63('0x2e')],qs['fields'](_0x1cec4a['query'][_0x5b63('0x33')]));_0x564732['attributes']=_0x564732[_0x5b63('0x34')][_0x5b63('0x35')]?_0x564732['attributes']:_0x2b890a[_0x5b63('0x2e')];if(_0x1cec4a[_0x5b63('0x2f')][_0x5b63('0x3f')]){_0x564732[_0x5b63('0x40')]=[{'all':!![]}];}_0x564732=_[_0x5b63('0x3b')]({},_0x564732,_0x1cec4a['options']);return db['CmCustomField'][_0x5b63('0x45')](_0x564732)['then'](handleEntityNotFound(_0x51cd9d,null))[_0x5b63('0x3e')](respondWithResult(_0x51cd9d,null))[_0x5b63('0x43')](handleError(_0x51cd9d,null));};exports['update']=function(_0x5c4da5,_0x254b2c){if(_0x5c4da5[_0x5b63('0x46')]['id']){delete _0x5c4da5[_0x5b63('0x46')]['id'];}return db[_0x5b63('0x2a')][_0x5b63('0x45')]({'where':{'id':_0x5c4da5[_0x5b63('0x47')]['id']}})[_0x5b63('0x3e')](handleEntityNotFound(_0x254b2c,null))[_0x5b63('0x3e')](saveUpdates(_0x5c4da5[_0x5b63('0x46')],null))[_0x5b63('0x3e')](respondWithResult(_0x254b2c,null))[_0x5b63('0x43')](handleError(_0x254b2c,null));};exports[_0x5b63('0x26')]=function(_0x43c64a,_0x25c55b){return db[_0x5b63('0x2a')][_0x5b63('0x45')]({'where':{'id':_0x43c64a[_0x5b63('0x47')]['id']}})['then'](handleEntityNotFound(_0x25c55b,null))[_0x5b63('0x3e')](removeEntity(_0x25c55b,null))[_0x5b63('0x43')](handleError(_0x25c55b,null));};exports[_0x5b63('0x48')]=function(_0x490759,_0x598c57){var _0x143684;return db['sequelize'][_0x5b63('0x49')](function(_0xddb19e){return db[_0x5b63('0x2a')][_0x5b63('0x48')](_0x490759['body'],{'transaction':_0xddb19e})['then'](function(_0x5b6d45){_0x143684=_0x5b6d45;var _0x20254b={'type':db['Sequelize'][_0x5b63('0x4a')],'transaction':_0xddb19e};switch(_0x490759[_0x5b63('0x46')][_0x5b63('0x4b')]){case _0x5b63('0x4c'):_0x20254b[_0x5b63('0x4b')]=db[_0x5b63('0x4d')]['TEXT'];break;case _0x5b63('0x4e'):_0x20254b[_0x5b63('0x4b')]=db[_0x5b63('0x4d')][_0x5b63('0x4f')];break;case _0x5b63('0x50'):_0x20254b[_0x5b63('0x4b')]=db[_0x5b63('0x4d')][_0x5b63('0x51')];_0x20254b[_0x5b63('0x52')]=![];break;default:}return db[_0x5b63('0x53')]['queryInterface']['addColumn'](_0x5b63('0x54'),util[_0x5b63('0x55')](_0x5b63('0x56'),_0x143684['id']),_0x20254b);})[_0x5b63('0x3e')](function(){return _0x143684;});})[_0x5b63('0x3e')](respondWithResult(_0x598c57,0xc9))['catch'](handleError(_0x598c57,null));};
\ No newline at end of file
+var _0x7870=['send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','options','find','body','params','create','sequelize','Sequelize','TEXT','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name'];(function(_0x5dfadc,_0x584219){var _0x144023=function(_0x3b7a13){while(--_0x3b7a13){_0x5dfadc['push'](_0x5dfadc['shift']());}};_0x144023(++_0x584219);}(_0x7870,0xda));var _0x0787=function(_0x28e26f,_0x1b947f){_0x28e26f=_0x28e26f-0x0;var _0x5783bf=_0x7870[_0x28e26f];return _0x5783bf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0787('0x0'));var jsonpatch=require(_0x0787('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0787('0x2'));var Mustache=require(_0x0787('0x3'));var util=require(_0x0787('0x4'));var path=require(_0x0787('0x5'));var sox=require(_0x0787('0x6'));var csv=require(_0x0787('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0787('0x8'));var _=require('lodash');var squel=require(_0x0787('0x9'));var crypto=require(_0x0787('0xa'));var jsforce=require(_0x0787('0xb'));var deskjs=require(_0x0787('0xc'));var toCsv=require(_0x0787('0x7'));var querystring=require(_0x0787('0xd'));var Papa=require(_0x0787('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0787('0xf'));var as=require(_0x0787('0x10'));var hardwareService=require(_0x0787('0x11'));var logger=require(_0x0787('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x0787('0x13'));var licenseUtil=require(_0x0787('0x14'));var db=require(_0x0787('0x15'))['db'];function respondWithStatusCode(_0x537403,_0x2b0015){_0x2b0015=_0x2b0015||0xcc;return function(_0xdc3556){if(_0xdc3556){return _0x537403[_0x0787('0x16')](_0x2b0015);}return _0x537403['status'](_0x2b0015)[_0x0787('0x17')]();};}function respondWithResult(_0x246296,_0x47656b){_0x47656b=_0x47656b||0xc8;return function(_0x1674d1){if(_0x1674d1){return _0x246296[_0x0787('0x18')](_0x47656b)[_0x0787('0x19')](_0x1674d1);}};}function respondWithFilteredResult(_0xf1b03c,_0xe65e7d){return function(_0x26c3a4){if(_0x26c3a4){var _0x5dbca1=typeof _0xe65e7d['offset']===_0x0787('0x1a')&&typeof _0xe65e7d[_0x0787('0x1b')]==='undefined';var _0x3fbb6e=_0x26c3a4[_0x0787('0x1c')];var _0x18777c=_0x5dbca1?0x0:_0xe65e7d[_0x0787('0x1d')];var _0xb90bf2=_0x5dbca1?_0x26c3a4[_0x0787('0x1c')]:_0xe65e7d[_0x0787('0x1d')]+_0xe65e7d[_0x0787('0x1b')];var _0x2ff902;if(_0xb90bf2>=_0x3fbb6e){_0xb90bf2=_0x3fbb6e;_0x2ff902=0xc8;}else{_0x2ff902=0xce;}_0xf1b03c[_0x0787('0x18')](_0x2ff902);return _0xf1b03c['set'](_0x0787('0x1e'),_0x18777c+'-'+_0xb90bf2+'/'+_0x3fbb6e)[_0x0787('0x19')](_0x26c3a4);}return null;};}function patchUpdates(_0x1a7ae5){return function(_0x599028){try{jsonpatch[_0x0787('0x1f')](_0x599028,_0x1a7ae5,!![]);}catch(_0x1a3ee2){return BPromise[_0x0787('0x20')](_0x1a3ee2);}return _0x599028[_0x0787('0x21')]();};}function saveUpdates(_0x1cc835,_0x550104){return function(_0xf4276){if(_0xf4276){return _0xf4276[_0x0787('0x22')](_0x1cc835)[_0x0787('0x23')](function(_0x156a99){return _0x156a99;});}return null;};}function removeEntity(_0x3e2a19,_0x74fae1){return function(_0x4fa572){if(_0x4fa572){return _0x4fa572[_0x0787('0x24')]()[_0x0787('0x23')](function(){_0x3e2a19[_0x0787('0x18')](0xcc)[_0x0787('0x17')]();});}};}function handleEntityNotFound(_0x330deb,_0x17555f){return function(_0x497f18){if(!_0x497f18){_0x330deb[_0x0787('0x16')](0x194);}return _0x497f18;};}function handleError(_0x10b232,_0x392cbb){_0x392cbb=_0x392cbb||0x1f4;return function(_0x19f828){logger[_0x0787('0x25')](_0x19f828[_0x0787('0x26')]);if(_0x19f828[_0x0787('0x27')]){delete _0x19f828[_0x0787('0x27')];}_0x10b232['status'](_0x392cbb)[_0x0787('0x28')](_0x19f828);};}exports[_0x0787('0x29')]=function(_0x4d3013,_0x377c48){var _0x5ef6b7={},_0x171f82={},_0x3a070f={'count':0x0,'rows':[]};var _0x304fa1=_[_0x0787('0x2a')](db[_0x0787('0x2b')][_0x0787('0x2c')],function(_0x5cb048){return{'name':_0x5cb048[_0x0787('0x2d')],'type':_0x5cb048[_0x0787('0x2e')][_0x0787('0x2f')]};});_0x171f82[_0x0787('0x30')]=_[_0x0787('0x31')](_['map'](_0x304fa1,_0x0787('0x27')),[_0x0787('0x27')]);_0x171f82[_0x0787('0x32')]=_[_0x0787('0x33')](_0x4d3013[_0x0787('0x32')]);_0x171f82['filters']=_[_0x0787('0x34')](_0x171f82[_0x0787('0x30')],_0x171f82[_0x0787('0x32')]);_0x5ef6b7['attributes']=_[_0x0787('0x34')](_0x171f82[_0x0787('0x30')],qs[_0x0787('0x35')](_0x4d3013[_0x0787('0x32')][_0x0787('0x35')]));_0x5ef6b7[_0x0787('0x36')]=_0x5ef6b7[_0x0787('0x36')]['length']?_0x5ef6b7[_0x0787('0x36')]:_0x171f82[_0x0787('0x30')];if(!_0x4d3013[_0x0787('0x32')][_0x0787('0x37')](_0x0787('0x38'))){_0x5ef6b7[_0x0787('0x1b')]=qs[_0x0787('0x1b')](_0x4d3013[_0x0787('0x32')][_0x0787('0x1b')]);_0x5ef6b7[_0x0787('0x1d')]=qs[_0x0787('0x1d')](_0x4d3013['query'][_0x0787('0x1d')]);}_0x5ef6b7['order']=qs[_0x0787('0x39')](_0x4d3013[_0x0787('0x32')]['sort']);_0x5ef6b7[_0x0787('0x3a')]=qs[_0x0787('0x3b')](_[_0x0787('0x3c')](_0x4d3013[_0x0787('0x32')],_0x171f82[_0x0787('0x3b')]),_0x304fa1);if(_0x4d3013['query'][_0x0787('0x3d')]){_0x5ef6b7[_0x0787('0x3a')]=_[_0x0787('0x3e')](_0x5ef6b7['where'],{'$or':_[_0x0787('0x2a')](_0x304fa1,function(_0x546bd2){if(_0x546bd2[_0x0787('0x2e')]!==_0x0787('0x3f')){var _0x1fc0ec={};_0x1fc0ec[_0x546bd2[_0x0787('0x27')]]={'$like':'%'+_0x4d3013['query'][_0x0787('0x3d')]+'%'};return _0x1fc0ec;}})});}_0x5ef6b7=_['merge']({},_0x5ef6b7,_0x4d3013['options']);var _0x4a448b={'where':_0x5ef6b7[_0x0787('0x3a')]};return db['CmCustomField'][_0x0787('0x1c')](_0x4a448b)[_0x0787('0x23')](function(_0x3e3478){_0x3a070f[_0x0787('0x1c')]=_0x3e3478;if(_0x4d3013[_0x0787('0x32')][_0x0787('0x40')]){_0x5ef6b7[_0x0787('0x41')]=[{'all':!![]}];}return db[_0x0787('0x2b')][_0x0787('0x42')](_0x5ef6b7);})[_0x0787('0x23')](function(_0x22c709){_0x3a070f['rows']=_0x22c709;return _0x3a070f;})['then'](respondWithFilteredResult(_0x377c48,_0x5ef6b7))[_0x0787('0x43')](handleError(_0x377c48,null));};exports[_0x0787('0x44')]=function(_0x225908,_0x18ea76){var _0x39bf5e={'raw':!![],'where':{'id':_0x225908['params']['id']}},_0x2e3dfa={};_0x2e3dfa['model']=_[_0x0787('0x33')](db['CmCustomField'][_0x0787('0x2c')]);_0x2e3dfa[_0x0787('0x32')]=_[_0x0787('0x33')](_0x225908[_0x0787('0x32')]);_0x2e3dfa[_0x0787('0x3b')]=_[_0x0787('0x34')](_0x2e3dfa[_0x0787('0x30')],_0x2e3dfa[_0x0787('0x32')]);_0x39bf5e[_0x0787('0x36')]=_['intersection'](_0x2e3dfa[_0x0787('0x30')],qs[_0x0787('0x35')](_0x225908[_0x0787('0x32')][_0x0787('0x35')]));_0x39bf5e[_0x0787('0x36')]=_0x39bf5e[_0x0787('0x36')]['length']?_0x39bf5e[_0x0787('0x36')]:_0x2e3dfa['model'];if(_0x225908['query'][_0x0787('0x40')]){_0x39bf5e[_0x0787('0x41')]=[{'all':!![]}];}_0x39bf5e=_[_0x0787('0x3e')]({},_0x39bf5e,_0x225908[_0x0787('0x45')]);return db[_0x0787('0x2b')][_0x0787('0x46')](_0x39bf5e)[_0x0787('0x23')](handleEntityNotFound(_0x18ea76,null))[_0x0787('0x23')](respondWithResult(_0x18ea76,null))[_0x0787('0x43')](handleError(_0x18ea76,null));};exports[_0x0787('0x22')]=function(_0x8cb38,_0x4fbe5c){if(_0x8cb38[_0x0787('0x47')]['id']){delete _0x8cb38[_0x0787('0x47')]['id'];}return db['CmCustomField'][_0x0787('0x46')]({'where':{'id':_0x8cb38[_0x0787('0x48')]['id']}})[_0x0787('0x23')](handleEntityNotFound(_0x4fbe5c,null))['then'](saveUpdates(_0x8cb38[_0x0787('0x47')],null))['then'](respondWithResult(_0x4fbe5c,null))[_0x0787('0x43')](handleError(_0x4fbe5c,null));};exports[_0x0787('0x24')]=function(_0x1120dd,_0x4a0ba4){return db[_0x0787('0x2b')][_0x0787('0x46')]({'where':{'id':_0x1120dd[_0x0787('0x48')]['id']}})[_0x0787('0x23')](handleEntityNotFound(_0x4a0ba4,null))[_0x0787('0x23')](removeEntity(_0x4a0ba4,null))['catch'](handleError(_0x4a0ba4,null));};exports[_0x0787('0x49')]=function(_0x595c66,_0x7563da){var _0x114023;return db[_0x0787('0x4a')]['transaction'](function(_0x52a8f6){return db[_0x0787('0x2b')][_0x0787('0x49')](_0x595c66['body'],{'transaction':_0x52a8f6})[_0x0787('0x23')](function(_0x1261cd){_0x114023=_0x1261cd;var _0xa52f1e={'type':db[_0x0787('0x4b')][_0x0787('0x4c')],'transaction':_0x52a8f6};switch(_0x595c66['body'][_0x0787('0x2e')]){case'text':_0xa52f1e[_0x0787('0x2e')]=db['Sequelize'][_0x0787('0x4c')];break;case _0x0787('0x4d'):_0xa52f1e[_0x0787('0x2e')]=db[_0x0787('0x4b')][_0x0787('0x4e')];break;case _0x0787('0x4f'):_0xa52f1e[_0x0787('0x2e')]=db[_0x0787('0x4b')]['BOOLEAN'];_0xa52f1e[_0x0787('0x50')]=![];break;default:}return db[_0x0787('0x4a')][_0x0787('0x51')][_0x0787('0x52')](_0x0787('0x53'),util[_0x0787('0x54')](_0x0787('0x55'),_0x114023['id']),_0xa52f1e);})[_0x0787('0x23')](function(){return _0x114023;});})[_0x0787('0x23')](respondWithResult(_0x7563da,0xc9))[_0x0787('0x43')](handleError(_0x7563da,null));};
\ No newline at end of file
index d90c923..2237c2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmCustomField.attributes','cm_custom_fields','lodash','util'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xaac0,0x106));var _0x0aac=function(_0x2d8f05,_0x3cfe31){_0x2d8f05=_0x2d8f05-0x0;var _0x25254c=_0xaac0[_0x2d8f05];return _0x25254c;};'use strict';var _=require(_0x0aac('0x0'));var util=require(_0x0aac('0x1'));var logger=require(_0x0aac('0x2'))(_0x0aac('0x3'));var moment=require(_0x0aac('0x4'));var BPromise=require(_0x0aac('0x5'));var rp=require(_0x0aac('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0aac('0x7'));var config=require(_0x0aac('0x8'));var attributes=require(_0x0aac('0x9'));module['exports']=function(_0x5653e8,_0x52f6e7){return _0x5653e8['define']('CmCustomField',attributes,{'tableName':_0x0aac('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2027=['rimraf','../../config/environment','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x25e45c,_0x42b288){var _0x35f07b=function(_0x54a143){while(--_0x54a143){_0x25e45c['push'](_0x25e45c['shift']());}};_0x35f07b(++_0x42b288);}(_0x2027,0x19d));var _0x7202=function(_0x20617c,_0x4dccff){_0x20617c=_0x20617c-0x0;var _0x2fec21=_0x2027[_0x20617c];return _0x2fec21;};'use strict';var _=require('lodash');var util=require(_0x7202('0x0'));var logger=require(_0x7202('0x1'))(_0x7202('0x2'));var moment=require(_0x7202('0x3'));var BPromise=require(_0x7202('0x4'));var rp=require(_0x7202('0x5'));var fs=require('fs');var path=require(_0x7202('0x6'));var rimraf=require(_0x7202('0x7'));var config=require(_0x7202('0x8'));var attributes=require(_0x7202('0x9'));module[_0x7202('0xa')]=function(_0x56493c,_0x49cf2f){return _0x56493c[_0x7202('0xb')](_0x7202('0xc'),attributes,{'tableName':_0x7202('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eeb9b59..0648ca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bfd=['http','request','then','info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','CmCustomField,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x2f861c,_0x548dd1){var _0x12cff7=function(_0x205175){while(--_0x205175){_0x2f861c['push'](_0x2f861c['shift']());}};_0x12cff7(++_0x548dd1);}(_0x8bfd,0xdb));var _0xd8bf=function(_0x5dac46,_0x28e9dc){_0x5dac46=_0x5dac46-0x0;var _0x51095c=_0x8bfd[_0x5dac46];return _0x51095c;};'use strict';var _=require('lodash');var util=require(_0xd8bf('0x0'));var moment=require(_0xd8bf('0x1'));var BPromise=require(_0xd8bf('0x2'));var rs=require(_0xd8bf('0x3'));var fs=require('fs');var Redis=require(_0xd8bf('0x4'));var db=require(_0xd8bf('0x5'))['db'];var utils=require(_0xd8bf('0x6'));var logger=require('../../config/logger')(_0xd8bf('0x7'));var config=require(_0xd8bf('0x8'));var jayson=require(_0xd8bf('0x9'));var client=jayson[_0xd8bf('0xa')][_0xd8bf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x86ca3b,_0x4288e2,_0x9b05f7){return new BPromise(function(_0xda50b,_0x1799d2){return client[_0xd8bf('0xc')](_0x86ca3b,_0x9b05f7)[_0xd8bf('0xd')](function(_0x251f32){logger[_0xd8bf('0xe')]('CmCustomField,\x20%s,\x20%s',_0x4288e2,_0xd8bf('0xf'));logger[_0xd8bf('0x10')](_0xd8bf('0x11'),_0x4288e2,_0xd8bf('0xf'),JSON['stringify'](_0x251f32));if(_0x251f32[_0xd8bf('0x12')]){if(_0x251f32[_0xd8bf('0x12')]['code']===0x1f4){logger[_0xd8bf('0x12')](_0xd8bf('0x13'),_0x4288e2,_0x251f32[_0xd8bf('0x12')]['message']);return _0x1799d2(_0x251f32[_0xd8bf('0x12')][_0xd8bf('0x14')]);}logger[_0xd8bf('0x12')]('CmCustomField,\x20%s,\x20%s',_0x4288e2,_0x251f32['error']['message']);return _0xda50b(_0x251f32[_0xd8bf('0x12')][_0xd8bf('0x14')]);}else{logger[_0xd8bf('0xe')]('CmCustomField,\x20%s,\x20%s',_0x4288e2,'request\x20sent');_0xda50b(_0x251f32[_0xd8bf('0x15')][_0xd8bf('0x14')]);}})[_0xd8bf('0x16')](function(_0x5578a7){logger[_0xd8bf('0x12')](_0xd8bf('0x13'),_0x4288e2,_0x5578a7);_0x1799d2(_0x5578a7);});});}
\ No newline at end of file
+var _0x28ad=['util','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','CmCustomField,\x20%s,\x20%s','message','result','lodash'];(function(_0x27dca6,_0x942b36){var _0x4e0514=function(_0x5a95b8){while(--_0x5a95b8){_0x27dca6['push'](_0x27dca6['shift']());}};_0x4e0514(++_0x942b36);}(_0x28ad,0x99));var _0xd28a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x28ad[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xd28a('0x0'));var util=require(_0xd28a('0x1'));var moment=require('moment');var BPromise=require(_0xd28a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd28a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd28a('0x4'));var logger=require('../../config/logger')(_0xd28a('0x5'));var config=require(_0xd28a('0x6'));var jayson=require(_0xd28a('0x7'));var client=jayson[_0xd28a('0x8')][_0xd28a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x101a07,_0x22a2d8,_0x195ab9){return new BPromise(function(_0x307789,_0x5ea991){return client[_0xd28a('0xa')](_0x101a07,_0x195ab9)[_0xd28a('0xb')](function(_0x5196ce){logger[_0xd28a('0xc')]('CmCustomField,\x20%s,\x20%s',_0x22a2d8,_0xd28a('0xd'));logger[_0xd28a('0xe')](_0xd28a('0xf'),_0x22a2d8,'request\x20sent',JSON[_0xd28a('0x10')](_0x5196ce));if(_0x5196ce[_0xd28a('0x11')]){if(_0x5196ce[_0xd28a('0x11')][_0xd28a('0x12')]===0x1f4){logger[_0xd28a('0x11')](_0xd28a('0x13'),_0x22a2d8,_0x5196ce['error']['message']);return _0x5ea991(_0x5196ce[_0xd28a('0x11')]['message']);}logger['error'](_0xd28a('0x13'),_0x22a2d8,_0x5196ce[_0xd28a('0x11')][_0xd28a('0x14')]);return _0x307789(_0x5196ce[_0xd28a('0x11')][_0xd28a('0x14')]);}else{logger[_0xd28a('0xc')]('CmCustomField,\x20%s,\x20%s',_0x22a2d8,_0xd28a('0xd'));_0x307789(_0x5196ce[_0xd28a('0x15')][_0xd28a('0x14')]);}})['catch'](function(_0x360a10){logger[_0xd28a('0x11')](_0xd28a('0x13'),_0x22a2d8,_0x360a10);_0x5ea991(_0x360a10);});});}
\ No newline at end of file
index 3a0d974..5343b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd383=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x44cfab,_0x4b0618){var _0x2e5aa9=function(_0x2e5c91){while(--_0x2e5c91){_0x44cfab['push'](_0x44cfab['shift']());}};_0x2e5aa9(++_0x4b0618);}(_0xd383,0x1c4));var _0x3d38=function(_0x2aecb2,_0x343312){_0x2aecb2=_0x2aecb2-0x0;var _0x3ebb80=_0xd383[_0x2aecb2];return _0x3ebb80;};'use strict';var multer=require(_0x3d38('0x0'));var util=require(_0x3d38('0x1'));var path=require(_0x3d38('0x2'));var timeout=require(_0x3d38('0x3'));var express=require(_0x3d38('0x4'));var router=express[_0x3d38('0x5')]();var fs_extra=require(_0x3d38('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3d38('0x7'));var config=require(_0x3d38('0x8'));var controller=require('./cmCustomField.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x3d38('0x9')]);router[_0x3d38('0xa')](_0x3d38('0xb'),auth[_0x3d38('0xc')](),controller['show']);router[_0x3d38('0xd')]('/',auth[_0x3d38('0xc')](),controller[_0x3d38('0xe')]);router['put'](_0x3d38('0xb'),auth[_0x3d38('0xc')](),controller[_0x3d38('0xf')]);router[_0x3d38('0x10')]('/:id',auth[_0x3d38('0xc')](),controller[_0x3d38('0x11')]);module[_0x3d38('0x12')]=router;
\ No newline at end of file
+var _0xe4d6=['index','get','/:id','create','put','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./cmCustomField.controller','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe4d6,0xd7));var _0x6e4d=function(_0xe01bea,_0x3fa47b){_0xe01bea=_0xe01bea-0x0;var _0x961623=_0xe4d6[_0xe01bea];return _0x961623;};'use strict';var multer=require(_0x6e4d('0x0'));var util=require(_0x6e4d('0x1'));var path=require(_0x6e4d('0x2'));var timeout=require(_0x6e4d('0x3'));var express=require('express');var router=express[_0x6e4d('0x4')]();var fs_extra=require(_0x6e4d('0x5'));var auth=require(_0x6e4d('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6e4d('0x7'));router['get']('/',auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x9')]);router[_0x6e4d('0xa')](_0x6e4d('0xb'),auth[_0x6e4d('0x8')](),controller['show']);router['post']('/',auth[_0x6e4d('0x8')](),controller[_0x6e4d('0xc')]);router[_0x6e4d('0xd')]('/:id',auth[_0x6e4d('0x8')](),controller['update']);router[_0x6e4d('0xe')](_0x6e4d('0xb'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0xf')]);module['exports']=router;
\ No newline at end of file
index b07e830..3c9db16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa300=['BOOLEAN','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x9bfd98,_0x4ca203){var _0x30e1c1=function(_0x325d87){while(--_0x325d87){_0x9bfd98['push'](_0x9bfd98['shift']());}};_0x30e1c1(++_0x4ca203);}(_0xa300,0xc0));var _0x0a30=function(_0x103c9c,_0x40d175){_0x103c9c=_0x103c9c-0x0;var _0x5a5b5f=_0xa300[_0x103c9c];return _0x5a5b5f;};'use strict';var moment=require(_0x0a30('0x0'));var Sequelize=require(_0x0a30('0x1'));module[_0x0a30('0x2')]={'phone':{'type':Sequelize[_0x0a30('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x0a30('0x4')],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x0a30('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x0a30('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x0a30('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x0a30('0x6')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x0a30('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x0a30('0x4')]},'priority':{'type':Sequelize[_0x0a30('0x5')](0x2)[_0x0a30('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x0a30('0x6')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x0a30('0x5')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x0a30('0x5')],'unique':_0x0a30('0x8')},'UserId':{'type':Sequelize[_0x0a30('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x0a30('0x5')],'unique':_0x0a30('0x8')},'CampaignId':{'type':Sequelize[_0x0a30('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x0a30('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x0a30('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x0a30('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x29da=['format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','STRING','UNSIGNED','contactListQueue','sequelize','exports','DATE'];(function(_0x47b9e3,_0x26e069){var _0x4b1750=function(_0x199a94){while(--_0x199a94){_0x47b9e3['push'](_0x47b9e3['shift']());}};_0x4b1750(++_0x26e069);}(_0x29da,0x72));var _0xa29d=function(_0xc6745,_0x435b2e){_0xc6745=_0xc6745-0x0;var _0xed401d=_0x29da[_0xc6745];return _0xed401d;};'use strict';var moment=require('moment');var Sequelize=require(_0xa29d('0x0'));module[_0xa29d('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xa29d('0x2')],'defaultValue':moment()[_0xa29d('0x3')](_0xa29d('0x4'))},'countbusyretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa29d('0x6')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0xa29d('0x5')](0x2)[_0xa29d('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xa29d('0x5')],'unique':_0xa29d('0x8')},'ListId':{'type':Sequelize[_0xa29d('0x5')],'unique':_0xa29d('0x8')},'UserId':{'type':Sequelize[_0xa29d('0x5')]},'VoiceQueueId':{'type':Sequelize[_0xa29d('0x5')],'unique':_0xa29d('0x8')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 547e897..4c4ff15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bcf=['includeAll','include','CmHopper','findAll','rows','catch','show','fields','options','body','update','find','describe','destroy','params','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','statedesc','campaign','user','deleted','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','create','getPreview','getVoiceQueues','preview','dialOrderByScheduledAt','sequelize','format','direction','prev','hopperIds','priority','scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','Company','CmList','Queue','dialActive','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','status','set','apply','save','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','concat','$and','$or','$lt','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$notILike','$overlap','$contains','$contained','$any','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge'];(function(_0x3a30a9,_0x24c97e){var _0x28ef02=function(_0x17e614){while(--_0x17e614){_0x3a30a9['push'](_0x3a30a9['shift']());}};_0x28ef02(++_0x24c97e);}(_0x7bcf,0xd5));var _0xf7bc=function(_0x404e53,_0x289091){_0x404e53=_0x404e53-0x0;var _0x1abf58=_0x7bcf[_0x404e53];return _0x1abf58;};'use strict';var emlformat=require(_0xf7bc('0x0'));var rimraf=require(_0xf7bc('0x1'));var zipdir=require(_0xf7bc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf7bc('0x3'));var moment=require(_0xf7bc('0x4'));var BPromise=require(_0xf7bc('0x5'));var Mustache=require('mustache');var util=require(_0xf7bc('0x6'));var path=require(_0xf7bc('0x7'));var sox=require(_0xf7bc('0x8'));var csv=require(_0xf7bc('0x9'));var ejs=require(_0xf7bc('0xa'));var fs=require('fs');var fs_extra=require(_0xf7bc('0xb'));var _=require(_0xf7bc('0xc'));var squel=require('squel');var crypto=require(_0xf7bc('0xd'));var jsforce=require(_0xf7bc('0xe'));var deskjs=require(_0xf7bc('0xf'));var toCsv=require(_0xf7bc('0x9'));var querystring=require(_0xf7bc('0x10'));var Papa=require(_0xf7bc('0x11'));var Redis=require('ioredis');var authService=require(_0xf7bc('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf7bc('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf7bc('0x14'))(_0xf7bc('0x15'));var utils=require('../../config/utils');var config=require(_0xf7bc('0x16'));var licenseUtil=require(_0xf7bc('0x17'));var db=require(_0xf7bc('0x18'))['db'];function respondWithStatusCode(_0x5100ae,_0xc83f4){_0xc83f4=_0xc83f4||0xcc;return function(_0x2389f7){if(_0x2389f7){return _0x5100ae[_0xf7bc('0x19')](_0xc83f4);}return _0x5100ae['status'](_0xc83f4)[_0xf7bc('0x1a')]();};}function respondWithResult(_0x53b605,_0x12c7b9){_0x12c7b9=_0x12c7b9||0xc8;return function(_0x20963e){if(_0x20963e){return _0x53b605['status'](_0x12c7b9)[_0xf7bc('0x1b')](_0x20963e);}};}function respondWithFilteredResult(_0x4f5684,_0x25ac10){return function(_0x1ea6c3){if(_0x1ea6c3){var _0x31c3c0=typeof _0x25ac10[_0xf7bc('0x1c')]===_0xf7bc('0x1d')&&typeof _0x25ac10['limit']===_0xf7bc('0x1d');var _0x40ba29=_0x1ea6c3[_0xf7bc('0x1e')];var _0x278714=_0x31c3c0?0x0:_0x25ac10[_0xf7bc('0x1c')];var _0x282603=_0x31c3c0?_0x1ea6c3[_0xf7bc('0x1e')]:_0x25ac10['offset']+_0x25ac10['limit'];var _0x10659c;if(_0x282603>=_0x40ba29){_0x282603=_0x40ba29;_0x10659c=0xc8;}else{_0x10659c=0xce;}_0x4f5684[_0xf7bc('0x1f')](_0x10659c);return _0x4f5684[_0xf7bc('0x20')]('Content-Range',_0x278714+'-'+_0x282603+'/'+_0x40ba29)[_0xf7bc('0x1b')](_0x1ea6c3);}return null;};}function patchUpdates(_0x25568b){return function(_0x46f2c4){try{jsonpatch[_0xf7bc('0x21')](_0x46f2c4,_0x25568b,!![]);}catch(_0x1f4001){return BPromise['reject'](_0x1f4001);}return _0x46f2c4[_0xf7bc('0x22')]();};}function saveUpdates(_0x32042d,_0x4787ed){return function(_0x59dade){if(_0x59dade){return _0x59dade['update'](_0x32042d)[_0xf7bc('0x23')](function(_0x40fea0){return _0x40fea0;});}return null;};}function removeEntity(_0x2de1f2,_0x48d3f2){return function(_0x444112){if(_0x444112){return _0x444112['destroy']()[_0xf7bc('0x23')](function(){_0x2de1f2[_0xf7bc('0x1f')](0xcc)[_0xf7bc('0x1a')]();});}};}function handleEntityNotFound(_0x5562f7,_0x21e86e){return function(_0xda59d0){if(!_0xda59d0){_0x5562f7['sendStatus'](0x194);}return _0xda59d0;};}function handleError(_0x5e5fbb,_0x3c00c8){_0x3c00c8=_0x3c00c8||0x1f4;return function(_0x41d6b1){logger[_0xf7bc('0x24')](_0x41d6b1[_0xf7bc('0x25')]);if(_0x41d6b1[_0xf7bc('0x26')]){delete _0x41d6b1[_0xf7bc('0x26')];}_0x5e5fbb[_0xf7bc('0x1f')](_0x3c00c8)[_0xf7bc('0x27')](_0x41d6b1);};}exports[_0xf7bc('0x28')]=function(_0x52eaae,_0x345988){var _0xbb6864={},_0x2a4859={},_0x51e3fe={'count':0x0,'rows':[]};var _0xd0c548=_['map'](db['CmHopper'][_0xf7bc('0x29')],function(_0x3a259a){return{'name':_0x3a259a[_0xf7bc('0x2a')],'type':_0x3a259a[_0xf7bc('0x2b')][_0xf7bc('0x2c')]};});_0x2a4859[_0xf7bc('0x2d')]=_[_0xf7bc('0x2e')](_0xd0c548,'name');_0x2a4859[_0xf7bc('0x2f')]=_[_0xf7bc('0x30')](_0x52eaae[_0xf7bc('0x2f')]);_0x2a4859[_0xf7bc('0x31')]=_[_0xf7bc('0x32')](_0x2a4859[_0xf7bc('0x2d')],_0x2a4859['query']);_0x2a4859[_0xf7bc('0x31')]=_[_0xf7bc('0x33')](_0x2a4859[_0xf7bc('0x31')],[_0xf7bc('0x34'),_0xf7bc('0x35'),'$gt','$gte',_0xf7bc('0x36'),'$lte',_0xf7bc('0x37'),_0xf7bc('0x38'),'$not',_0xf7bc('0x39'),_0xf7bc('0x3a'),_0xf7bc('0x3b'),_0xf7bc('0x3c'),_0xf7bc('0x3d'),'$notLike','$iLike',_0xf7bc('0x3e'),_0xf7bc('0x3d'),_0xf7bc('0x3f'),_0xf7bc('0x40'),_0xf7bc('0x41'),_0xf7bc('0x42')]);_0xbb6864[_0xf7bc('0x43')]=_[_0xf7bc('0x32')](_0x2a4859[_0xf7bc('0x2d')],qs['fields'](_0x52eaae[_0xf7bc('0x2f')]['fields']));_0xbb6864['attributes']=_0xbb6864[_0xf7bc('0x43')][_0xf7bc('0x44')]?_0xbb6864[_0xf7bc('0x43')]:_0x2a4859['model'];if(!_0x52eaae[_0xf7bc('0x2f')][_0xf7bc('0x45')](_0xf7bc('0x46'))){_0xbb6864[_0xf7bc('0x47')]=qs['limit'](_0x52eaae['query']['limit']);_0xbb6864[_0xf7bc('0x1c')]=qs['offset'](_0x52eaae['query']['offset']);}_0xbb6864[_0xf7bc('0x48')]=qs[_0xf7bc('0x49')](_0x52eaae[_0xf7bc('0x2f')][_0xf7bc('0x49')]);_0xbb6864[_0xf7bc('0x4a')]=qs[_0xf7bc('0x31')](_['pick'](_0x52eaae['query'],_0x2a4859[_0xf7bc('0x31')]),_0xd0c548);if(_0x52eaae[_0xf7bc('0x2f')][_0xf7bc('0x4b')]){_0xbb6864[_0xf7bc('0x4a')]=_[_0xf7bc('0x4c')](_0xbb6864['where'],{'$or':_[_0xf7bc('0x2e')](_0xd0c548,function(_0x46711c){if(_0x46711c[_0xf7bc('0x2b')]!=='VIRTUAL'){var _0xe0140e={};_0xe0140e[_0x46711c[_0xf7bc('0x26')]]={'$like':'%'+_0x52eaae[_0xf7bc('0x2f')]['filter']+'%'};return _0xe0140e;}})});}_0xbb6864=_[_0xf7bc('0x4c')]({},_0xbb6864,_0x52eaae['options']);var _0x1ce66c={'where':_0xbb6864['where']};return db['CmHopper'][_0xf7bc('0x1e')](_0x1ce66c)[_0xf7bc('0x23')](function(_0x326959){_0x51e3fe[_0xf7bc('0x1e')]=_0x326959;if(_0x52eaae[_0xf7bc('0x2f')][_0xf7bc('0x4d')]){_0xbb6864[_0xf7bc('0x4e')]=[{'all':!![]}];}return db[_0xf7bc('0x4f')][_0xf7bc('0x50')](_0xbb6864);})[_0xf7bc('0x23')](function(_0xca02e2){_0x51e3fe[_0xf7bc('0x51')]=_0xca02e2;return _0x51e3fe;})[_0xf7bc('0x23')](respondWithFilteredResult(_0x345988,_0xbb6864))[_0xf7bc('0x52')](handleError(_0x345988,null));};exports[_0xf7bc('0x53')]=function(_0x58ddc8,_0x52d4f8){var _0x83231a={'raw':!![],'where':{'id':_0x58ddc8['params']['id']}},_0x323533={};_0x323533['model']=_[_0xf7bc('0x30')](db[_0xf7bc('0x4f')]['rawAttributes']);_0x323533['query']=_[_0xf7bc('0x30')](_0x58ddc8['query']);_0x323533[_0xf7bc('0x31')]=_[_0xf7bc('0x32')](_0x323533[_0xf7bc('0x2d')],_0x323533[_0xf7bc('0x2f')]);_0x83231a[_0xf7bc('0x43')]=_['intersection'](_0x323533['model'],qs[_0xf7bc('0x54')](_0x58ddc8[_0xf7bc('0x2f')][_0xf7bc('0x54')]));_0x83231a['attributes']=_0x83231a[_0xf7bc('0x43')][_0xf7bc('0x44')]?_0x83231a[_0xf7bc('0x43')]:_0x323533[_0xf7bc('0x2d')];if(_0x58ddc8[_0xf7bc('0x2f')][_0xf7bc('0x4d')]){_0x83231a[_0xf7bc('0x4e')]=[{'all':!![]}];}_0x83231a=_[_0xf7bc('0x4c')]({},_0x83231a,_0x58ddc8[_0xf7bc('0x55')]);return db[_0xf7bc('0x4f')]['find'](_0x83231a)['then'](handleEntityNotFound(_0x52d4f8,null))['then'](respondWithResult(_0x52d4f8,null))[_0xf7bc('0x52')](handleError(_0x52d4f8,null));};exports['create']=function(_0xf406a2,_0x4a6530){return db['CmHopper']['create'](_0xf406a2[_0xf7bc('0x56')],{})[_0xf7bc('0x23')](respondWithResult(_0x4a6530,0xc9))['catch'](handleError(_0x4a6530,null));};exports[_0xf7bc('0x57')]=function(_0x4b71ef,_0x402efd){if(_0x4b71ef[_0xf7bc('0x56')]['id']){delete _0x4b71ef[_0xf7bc('0x56')]['id'];}return db[_0xf7bc('0x4f')][_0xf7bc('0x58')]({'where':{'id':_0x4b71ef['params']['id']}})['then'](handleEntityNotFound(_0x402efd,null))[_0xf7bc('0x23')](saveUpdates(_0x4b71ef[_0xf7bc('0x56')],null))['then'](respondWithResult(_0x402efd,null))[_0xf7bc('0x52')](handleError(_0x402efd,null));};exports[_0xf7bc('0x59')]=function(_0x59be3f,_0x315574){return db[_0xf7bc('0x4f')]['describe']()[_0xf7bc('0x23')](respondWithResult(_0x315574,null))[_0xf7bc('0x52')](handleError(_0x315574,null));};exports[_0xf7bc('0x5a')]=function(_0x401f4d,_0x1d59ac){var _0xe9fec0;return db[_0xf7bc('0x4f')][_0xf7bc('0x58')]({'where':{'id':_0x401f4d[_0xf7bc('0x5b')]['id']}})[_0xf7bc('0x23')](handleEntityNotFound(_0x1d59ac,null))[_0xf7bc('0x23')](function(_0x45e4ab){if(_0x45e4ab){return _0x45e4ab['destroy']()[_0xf7bc('0x23')](function(_0x59bc8a){return _0x59bc8a;});}})[_0xf7bc('0x23')](function(_0x4eefd4){_0xe9fec0=_0x4eefd4;if(_0x4eefd4){if(_0x4eefd4[_0xf7bc('0x5c')]||_0x4eefd4[_0xf7bc('0x5d')]){return db[_0x4eefd4[_0xf7bc('0x5c')]?_0xf7bc('0x5e'):_0xf7bc('0x5f')][_0xf7bc('0x58')]({'where':{'id':_0x4eefd4[_0xf7bc('0x5c')]?_0x4eefd4[_0xf7bc('0x5c')]:_0x4eefd4[_0xf7bc('0x5d')]},'attributes':['id',_0xf7bc('0x26')],'raw':!![]});}}})[_0xf7bc('0x23')](function(_0x447f43){var _0xf00364={};if(_0x447f43){_[_0xf7bc('0x4c')](_0xf00364,_[_0xf7bc('0x60')](_0xe9fec0[_0xf7bc('0x61')],[_0xf7bc('0x62'),'updatedAt','id']));_0xf00364['state']=0x15;_0xf00364[_0xf7bc('0x63')]='deleted';_0xf00364[_0xf7bc('0x64')]=_0x447f43['name'];_0xf00364['membername']=_0x401f4d[_0xf7bc('0x65')][_0xf7bc('0x26')];_0xf00364['UserId']=_0x401f4d['user']['id'];_0xf00364[_0xf7bc('0x66')]=!![];_0xf00364['deletedat']=moment()['format'](_0xf7bc('0x67'));_0xf00364[_0xf7bc('0x68')]=_0xe9fec0[_0xf7bc('0x69')];_0xf00364['campaigntype']=_0xe9fec0[_0xf7bc('0x5c')]?'queue':_0xf7bc('0x6a');return db[_0xf7bc('0x6b')]['find']({'where':{'id':_0xf00364[_0xf7bc('0x6c')]},'attributes':[_0xf7bc('0x6d'),_0xf7bc('0x6e')]})['then'](function(_0x52eece){if(!_[_0xf7bc('0x6f')](_0x1d59ac)&&!_[_0xf7bc('0x6f')](_0x52eece[_0xf7bc('0x6d')])){_0xf00364[_0xf7bc('0x70')]=_0x52eece[_0xf7bc('0x6d')];if(!_[_0xf7bc('0x6f')](_0x52eece[_0xf7bc('0x6e')])){_0xf00364[_0xf7bc('0x70')]+='\x20'+_0x52eece[_0xf7bc('0x6e')];}}})[_0xf7bc('0x71')](function(){return db[_0xf7bc('0x72')][_0xf7bc('0x73')](_0xf00364);});}})['then'](function(){return _0x1d59ac[_0xf7bc('0x1f')](0xcc)[_0xf7bc('0x1a')]();})[_0xf7bc('0x52')](handleError(_0x1d59ac,null));};exports[_0xf7bc('0x74')]=function(_0x37276e,_0x3c0418,_0x545d9a){var _0x59f92f=[];return db[_0xf7bc('0x6b')][_0xf7bc('0x59')]()['then'](function(_0x3371f3){_0x59f92f=_[_0xf7bc('0x30')](_0x3371f3);return _0x37276e['user'][_0xf7bc('0x75')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xf7bc('0x76')},'attributes':['id',_0xf7bc('0x77')],'raw':!![]});})[_0xf7bc('0x23')](function(_0x4bcb28){if(_0x4bcb28&&_0x4bcb28[_0xf7bc('0x44')]){return db[_0xf7bc('0x78')]['transaction'](function(_0x4a4300){var _0x57b22a={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xf7bc('0x79')](_0xf7bc('0x67'))},'VoiceQueueId':{'$in':_[_0xf7bc('0x2e')](_0x4bcb28,'id')},'$or':[{'UserId':null},{'UserId':_0x37276e['user']['id']}]};var _0x3a037a=[];if(_0x37276e[_0xf7bc('0x56')]['direction']&&_0x37276e[_0xf7bc('0x56')][_0xf7bc('0x7a')]===_0xf7bc('0x7b')){if(!_['isEmpty'](_0x37276e['body'][_0xf7bc('0x7c')])){_0x57b22a['id']={'$in':_0x37276e['body'][_0xf7bc('0x7c')]};}_0x3a037a=[[_0xf7bc('0x7d'),'ASC'],[_0xf7bc('0x7e'),_0x4bcb28[0x0]['dialOrderByScheduledAt']===_0xf7bc('0x7f')?_0xf7bc('0x80'):_0xf7bc('0x7f')],db[_0xf7bc('0x78')][_0xf7bc('0x81')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xf7bc('0x80')]];}else{if(!_['isEmpty'](_0x37276e[_0xf7bc('0x56')][_0xf7bc('0x7c')])){_0x57b22a['id']={'$notIn':_0x37276e[_0xf7bc('0x56')][_0xf7bc('0x7c')]};}_0x3a037a=[[_0xf7bc('0x7d'),_0xf7bc('0x80')],[_0xf7bc('0x7e'),_0x4bcb28[0x0]['dialOrderByScheduledAt']],db[_0xf7bc('0x78')][_0xf7bc('0x81')](_0xf7bc('0x82')),['id','ASC']];}return db[_0xf7bc('0x4f')][_0xf7bc('0x83')]({'attributes':['id',_0xf7bc('0x84')],'where':_0x57b22a,'order':_0x3a037a,'transaction':_0x4a4300,'lock':_0x4a4300[_0xf7bc('0x85')][_0xf7bc('0x86')],'include':[{'model':db[_0xf7bc('0x6b')],'as':_0xf7bc('0x87'),'attributes':_0x59f92f,'include':[{'model':db['CmCompany'],'as':_0xf7bc('0x88'),'attributes':['id',_0xf7bc('0x26')]}]},{'model':db[_0xf7bc('0x89')],'as':'List','attributes':['id',_0xf7bc('0x26')]},{'model':db[_0xf7bc('0x5e')],'as':_0xf7bc('0x8a'),'attributes':['id',_0xf7bc('0x26'),_0xf7bc('0x8b')]}]})['then'](function(_0xef7649){if(_0xef7649){return _0xef7649['update']({'UserId':_0x37276e['user']['id']},{'transaction':_0x4a4300});}});});}})['then'](handleEntityNotFound(_0x3c0418,null))[_0xf7bc('0x23')](respondWithResult(_0x3c0418,null))['catch'](handleError(_0x3c0418,null));};exports[_0xf7bc('0x8c')]=function(_0x11b451,_0x520534,_0x17abe3){return _0x11b451[_0xf7bc('0x65')][_0xf7bc('0x75')]({'where':{'type':_0xf7bc('0x8d'),'dialActive':!![],'dialMethod':_0xf7bc('0x76')},'attributes':['id'],'raw':!![]})[_0xf7bc('0x23')](function(_0x4d1319){if(_0x4d1319&&_0x4d1319[_0xf7bc('0x44')]){return db[_0xf7bc('0x4f')][_0xf7bc('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x4d1319,'id')},'$or':[{'UserId':null},{'UserId':_0x11b451[_0xf7bc('0x65')]['id']}]}});}return 0x0;})[_0xf7bc('0x23')](function(_0x598f50){if(!_[_0xf7bc('0x6f')](_0x598f50)&&_[_0xf7bc('0x8e')](_0x598f50)){return _0x520534[_0xf7bc('0x1f')](0xc8)[_0xf7bc('0x1b')]({'contacts':_0x598f50});}else{logger[_0xf7bc('0x24')](_0xf7bc('0x8f'),_0xf7bc('0x8c'),0x194,_0xf7bc('0x90'));_0x520534[_0xf7bc('0x19')](0x194);}})[_0xf7bc('0x52')](handleError(_0x520534,null));};
\ No newline at end of file
+var _0x0be3=['$like','$overlap','$contains','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','then','rows','show','includeAll','find','catch','create','body','describe','params','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','isNil','firstName','calleridname','lastName','finally','getPreview','getVoiceQueues','outbound','preview','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','direction','isEmpty','hopperIds','priority','scheduledAt','dialOrderByScheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','CmCompany','Company','CmList','List','dialActive','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update','destroy','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','concat','$or','$gt','$lt','$lte','$ne','$eq','$not','$between','$in','$iLike'];(function(_0x1bd36a,_0x1ddeae){var _0x3a00aa=function(_0xdc996a){while(--_0xdc996a){_0x1bd36a['push'](_0x1bd36a['shift']());}};_0x3a00aa(++_0x1ddeae);}(_0x0be3,0x183));var _0x30be=function(_0x5b89c7,_0x22994c){_0x5b89c7=_0x5b89c7-0x0;var _0x332b50=_0x0be3[_0x5b89c7];return _0x332b50;};'use strict';var emlformat=require(_0x30be('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x30be('0x1'));var jsonpatch=require(_0x30be('0x2'));var rp=require(_0x30be('0x3'));var moment=require(_0x30be('0x4'));var BPromise=require(_0x30be('0x5'));var Mustache=require(_0x30be('0x6'));var util=require(_0x30be('0x7'));var path=require('path');var sox=require(_0x30be('0x8'));var csv=require(_0x30be('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x30be('0xa'));var _=require(_0x30be('0xb'));var squel=require(_0x30be('0xc'));var crypto=require(_0x30be('0xd'));var jsforce=require(_0x30be('0xe'));var deskjs=require(_0x30be('0xf'));var toCsv=require(_0x30be('0x9'));var querystring=require(_0x30be('0x10'));var Papa=require(_0x30be('0x11'));var Redis=require(_0x30be('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x30be('0x13'));var logger=require(_0x30be('0x14'))(_0x30be('0x15'));var utils=require(_0x30be('0x16'));var config=require(_0x30be('0x17'));var licenseUtil=require(_0x30be('0x18'));var db=require(_0x30be('0x19'))['db'];function respondWithStatusCode(_0xa7a709,_0x5242a6){_0x5242a6=_0x5242a6||0xcc;return function(_0x40295a){if(_0x40295a){return _0xa7a709[_0x30be('0x1a')](_0x5242a6);}return _0xa7a709[_0x30be('0x1b')](_0x5242a6)[_0x30be('0x1c')]();};}function respondWithResult(_0xb4d856,_0x11770a){_0x11770a=_0x11770a||0xc8;return function(_0x908757){if(_0x908757){return _0xb4d856[_0x30be('0x1b')](_0x11770a)[_0x30be('0x1d')](_0x908757);}};}function respondWithFilteredResult(_0x694229,_0x46c369){return function(_0x57a3af){if(_0x57a3af){var _0x3cc266=typeof _0x46c369[_0x30be('0x1e')]==='undefined'&&typeof _0x46c369[_0x30be('0x1f')]===_0x30be('0x20');var _0x37bb5e=_0x57a3af['count'];var _0x39cb24=_0x3cc266?0x0:_0x46c369[_0x30be('0x1e')];var _0x2a84bb=_0x3cc266?_0x57a3af[_0x30be('0x21')]:_0x46c369[_0x30be('0x1e')]+_0x46c369[_0x30be('0x1f')];var _0x2f3319;if(_0x2a84bb>=_0x37bb5e){_0x2a84bb=_0x37bb5e;_0x2f3319=0xc8;}else{_0x2f3319=0xce;}_0x694229[_0x30be('0x1b')](_0x2f3319);return _0x694229['set'](_0x30be('0x22'),_0x39cb24+'-'+_0x2a84bb+'/'+_0x37bb5e)[_0x30be('0x1d')](_0x57a3af);}return null;};}function patchUpdates(_0x1ae78b){return function(_0x3fd7c9){try{jsonpatch['apply'](_0x3fd7c9,_0x1ae78b,!![]);}catch(_0x434816){return BPromise[_0x30be('0x23')](_0x434816);}return _0x3fd7c9[_0x30be('0x24')]();};}function saveUpdates(_0x144d4,_0x4ce372){return function(_0x383265){if(_0x383265){return _0x383265[_0x30be('0x25')](_0x144d4)['then'](function(_0x3a8e8f){return _0x3a8e8f;});}return null;};}function removeEntity(_0x25b7b2,_0x541da9){return function(_0x7477b4){if(_0x7477b4){return _0x7477b4[_0x30be('0x26')]()['then'](function(){_0x25b7b2[_0x30be('0x1b')](0xcc)[_0x30be('0x1c')]();});}};}function handleEntityNotFound(_0x73f0a3,_0x213e5e){return function(_0x1a514e){if(!_0x1a514e){_0x73f0a3[_0x30be('0x1a')](0x194);}return _0x1a514e;};}function handleError(_0x24a135,_0x15e6d0){_0x15e6d0=_0x15e6d0||0x1f4;return function(_0x19013c){logger[_0x30be('0x27')](_0x19013c[_0x30be('0x28')]);if(_0x19013c[_0x30be('0x29')]){delete _0x19013c[_0x30be('0x29')];}_0x24a135['status'](_0x15e6d0)[_0x30be('0x2a')](_0x19013c);};}exports[_0x30be('0x2b')]=function(_0x39387c,_0x1e7622){var _0x4ae8a1={},_0x39ebbf={},_0x573381={'count':0x0,'rows':[]};var _0x7cb6e=_[_0x30be('0x2c')](db[_0x30be('0x2d')][_0x30be('0x2e')],function(_0x1ac8e4){return{'name':_0x1ac8e4[_0x30be('0x2f')],'type':_0x1ac8e4[_0x30be('0x30')][_0x30be('0x31')]};});_0x39ebbf[_0x30be('0x32')]=_[_0x30be('0x2c')](_0x7cb6e,'name');_0x39ebbf[_0x30be('0x33')]=_[_0x30be('0x34')](_0x39387c['query']);_0x39ebbf[_0x30be('0x35')]=_[_0x30be('0x36')](_0x39ebbf[_0x30be('0x32')],_0x39ebbf[_0x30be('0x33')]);_0x39ebbf[_0x30be('0x35')]=_[_0x30be('0x37')](_0x39ebbf['filters'],['$and',_0x30be('0x38'),_0x30be('0x39'),'$gte',_0x30be('0x3a'),_0x30be('0x3b'),_0x30be('0x3c'),_0x30be('0x3d'),_0x30be('0x3e'),_0x30be('0x3f'),'$notBetween',_0x30be('0x40'),'$notIn','$like','$notLike',_0x30be('0x41'),'$notILike',_0x30be('0x42'),_0x30be('0x43'),_0x30be('0x44'),'$contained',_0x30be('0x45')]);_0x4ae8a1[_0x30be('0x46')]=_[_0x30be('0x36')](_0x39ebbf['model'],qs['fields'](_0x39387c[_0x30be('0x33')][_0x30be('0x47')]));_0x4ae8a1['attributes']=_0x4ae8a1[_0x30be('0x46')][_0x30be('0x48')]?_0x4ae8a1[_0x30be('0x46')]:_0x39ebbf[_0x30be('0x32')];if(!_0x39387c[_0x30be('0x33')][_0x30be('0x49')](_0x30be('0x4a'))){_0x4ae8a1[_0x30be('0x1f')]=qs['limit'](_0x39387c[_0x30be('0x33')][_0x30be('0x1f')]);_0x4ae8a1[_0x30be('0x1e')]=qs[_0x30be('0x1e')](_0x39387c[_0x30be('0x33')][_0x30be('0x1e')]);}_0x4ae8a1[_0x30be('0x4b')]=qs[_0x30be('0x4c')](_0x39387c[_0x30be('0x33')][_0x30be('0x4c')]);_0x4ae8a1[_0x30be('0x4d')]=qs['filters'](_['pick'](_0x39387c['query'],_0x39ebbf[_0x30be('0x35')]),_0x7cb6e);if(_0x39387c[_0x30be('0x33')]['filter']){_0x4ae8a1[_0x30be('0x4d')]=_[_0x30be('0x4e')](_0x4ae8a1[_0x30be('0x4d')],{'$or':_[_0x30be('0x2c')](_0x7cb6e,function(_0x1ff8f9){if(_0x1ff8f9[_0x30be('0x30')]!==_0x30be('0x4f')){var _0x51106c={};_0x51106c[_0x1ff8f9[_0x30be('0x29')]]={'$like':'%'+_0x39387c[_0x30be('0x33')][_0x30be('0x50')]+'%'};return _0x51106c;}})});}_0x4ae8a1=_[_0x30be('0x4e')]({},_0x4ae8a1,_0x39387c[_0x30be('0x51')]);var _0x1c581e={'where':_0x4ae8a1[_0x30be('0x4d')]};return db[_0x30be('0x2d')][_0x30be('0x21')](_0x1c581e)['then'](function(_0x10cca4){_0x573381[_0x30be('0x21')]=_0x10cca4;if(_0x39387c[_0x30be('0x33')]['includeAll']){_0x4ae8a1[_0x30be('0x52')]=[{'all':!![]}];}return db['CmHopper'][_0x30be('0x53')](_0x4ae8a1);})[_0x30be('0x54')](function(_0x39167a){_0x573381[_0x30be('0x55')]=_0x39167a;return _0x573381;})[_0x30be('0x54')](respondWithFilteredResult(_0x1e7622,_0x4ae8a1))['catch'](handleError(_0x1e7622,null));};exports[_0x30be('0x56')]=function(_0x31bb06,_0x495a35){var _0x351904={'raw':!![],'where':{'id':_0x31bb06['params']['id']}},_0x22b768={};_0x22b768[_0x30be('0x32')]=_[_0x30be('0x34')](db[_0x30be('0x2d')][_0x30be('0x2e')]);_0x22b768[_0x30be('0x33')]=_[_0x30be('0x34')](_0x31bb06[_0x30be('0x33')]);_0x22b768[_0x30be('0x35')]=_[_0x30be('0x36')](_0x22b768[_0x30be('0x32')],_0x22b768[_0x30be('0x33')]);_0x351904[_0x30be('0x46')]=_[_0x30be('0x36')](_0x22b768['model'],qs[_0x30be('0x47')](_0x31bb06[_0x30be('0x33')][_0x30be('0x47')]));_0x351904[_0x30be('0x46')]=_0x351904[_0x30be('0x46')][_0x30be('0x48')]?_0x351904[_0x30be('0x46')]:_0x22b768['model'];if(_0x31bb06[_0x30be('0x33')][_0x30be('0x57')]){_0x351904[_0x30be('0x52')]=[{'all':!![]}];}_0x351904=_['merge']({},_0x351904,_0x31bb06[_0x30be('0x51')]);return db[_0x30be('0x2d')][_0x30be('0x58')](_0x351904)['then'](handleEntityNotFound(_0x495a35,null))[_0x30be('0x54')](respondWithResult(_0x495a35,null))[_0x30be('0x59')](handleError(_0x495a35,null));};exports[_0x30be('0x5a')]=function(_0x399230,_0x4443c4){return db['CmHopper']['create'](_0x399230[_0x30be('0x5b')],{})[_0x30be('0x54')](respondWithResult(_0x4443c4,0xc9))[_0x30be('0x59')](handleError(_0x4443c4,null));};exports['update']=function(_0x145821,_0x386ee5){if(_0x145821[_0x30be('0x5b')]['id']){delete _0x145821[_0x30be('0x5b')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x145821['params']['id']}})['then'](handleEntityNotFound(_0x386ee5,null))['then'](saveUpdates(_0x145821[_0x30be('0x5b')],null))['then'](respondWithResult(_0x386ee5,null))[_0x30be('0x59')](handleError(_0x386ee5,null));};exports[_0x30be('0x5c')]=function(_0x251036,_0x170ac1){return db[_0x30be('0x2d')][_0x30be('0x5c')]()[_0x30be('0x54')](respondWithResult(_0x170ac1,null))[_0x30be('0x59')](handleError(_0x170ac1,null));};exports[_0x30be('0x26')]=function(_0x507e7f,_0x49df5a){var _0xe250ee;return db[_0x30be('0x2d')][_0x30be('0x58')]({'where':{'id':_0x507e7f[_0x30be('0x5d')]['id']}})[_0x30be('0x54')](handleEntityNotFound(_0x49df5a,null))[_0x30be('0x54')](function(_0x3cb22e){if(_0x3cb22e){return _0x3cb22e['destroy']()[_0x30be('0x54')](function(_0x3b400f){return _0x3b400f;});}})[_0x30be('0x54')](function(_0x102b53){_0xe250ee=_0x102b53;if(_0x102b53){if(_0x102b53[_0x30be('0x5e')]||_0x102b53['CampaignId']){return db[_0x102b53[_0x30be('0x5e')]?_0x30be('0x5f'):_0x30be('0x60')][_0x30be('0x58')]({'where':{'id':_0x102b53[_0x30be('0x5e')]?_0x102b53[_0x30be('0x5e')]:_0x102b53[_0x30be('0x61')]},'attributes':['id',_0x30be('0x29')],'raw':!![]});}}})[_0x30be('0x54')](function(_0x1b2406){var _0x4a6381={};if(_0x1b2406){_[_0x30be('0x4e')](_0x4a6381,_[_0x30be('0x62')](_0xe250ee[_0x30be('0x63')],['createdAt',_0x30be('0x64'),'id']));_0x4a6381[_0x30be('0x65')]=0x15;_0x4a6381[_0x30be('0x66')]=_0x30be('0x67');_0x4a6381[_0x30be('0x68')]=_0x1b2406[_0x30be('0x29')];_0x4a6381[_0x30be('0x69')]=_0x507e7f[_0x30be('0x6a')]['name'];_0x4a6381[_0x30be('0x6b')]=_0x507e7f['user']['id'];_0x4a6381[_0x30be('0x67')]=!![];_0x4a6381[_0x30be('0x6c')]=moment()[_0x30be('0x6d')]('YYYY-MM-DD\x20HH:mm:ss');_0x4a6381[_0x30be('0x6e')]=_0xe250ee[_0x30be('0x6f')];_0x4a6381[_0x30be('0x70')]=_0xe250ee[_0x30be('0x5e')]?_0x30be('0x71'):_0x30be('0x72');return db[_0x30be('0x73')][_0x30be('0x58')]({'where':{'id':_0x4a6381[_0x30be('0x74')]},'attributes':['firstName','lastName']})[_0x30be('0x54')](function(_0x149d24){if(!_[_0x30be('0x75')](_0x49df5a)&&!_[_0x30be('0x75')](_0x149d24[_0x30be('0x76')])){_0x4a6381[_0x30be('0x77')]=_0x149d24[_0x30be('0x76')];if(!_[_0x30be('0x75')](_0x149d24[_0x30be('0x78')])){_0x4a6381[_0x30be('0x77')]+='\x20'+_0x149d24[_0x30be('0x78')];}}})[_0x30be('0x79')](function(){return db['CmHopperFinal'][_0x30be('0x5a')](_0x4a6381);});}})[_0x30be('0x54')](function(){return _0x49df5a['status'](0xcc)[_0x30be('0x1c')]();})['catch'](handleError(_0x49df5a,null));};exports[_0x30be('0x7a')]=function(_0x316001,_0x2a5ea9,_0x224add){var _0x5a7bb5=[];return db['CmContact'][_0x30be('0x5c')]()[_0x30be('0x54')](function(_0x1087f6){_0x5a7bb5=_[_0x30be('0x34')](_0x1087f6);return _0x316001[_0x30be('0x6a')][_0x30be('0x7b')]({'where':{'type':_0x30be('0x7c'),'dialActive':!![],'dialMethod':_0x30be('0x7d')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x30be('0x54')](function(_0x31fee2){if(_0x31fee2&&_0x31fee2[_0x30be('0x48')]){return db[_0x30be('0x7e')][_0x30be('0x7f')](function(_0x472ad5){var _0x174b5b={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x30be('0x6d')](_0x30be('0x80'))},'VoiceQueueId':{'$in':_[_0x30be('0x2c')](_0x31fee2,'id')},'$or':[{'UserId':null},{'UserId':_0x316001[_0x30be('0x6a')]['id']}]};var _0x53a66c=[];if(_0x316001[_0x30be('0x5b')][_0x30be('0x81')]&&_0x316001[_0x30be('0x5b')][_0x30be('0x81')]==='prev'){if(!_[_0x30be('0x82')](_0x316001[_0x30be('0x5b')][_0x30be('0x83')])){_0x174b5b['id']={'$in':_0x316001[_0x30be('0x5b')][_0x30be('0x83')]};}_0x53a66c=[[_0x30be('0x84'),'ASC'],[_0x30be('0x85'),_0x31fee2[0x0][_0x30be('0x86')]===_0x30be('0x87')?_0x30be('0x88'):_0x30be('0x87')],db[_0x30be('0x7e')][_0x30be('0x89')](_0x30be('0x8a')),['id',_0x30be('0x88')]];}else{if(!_['isEmpty'](_0x316001[_0x30be('0x5b')][_0x30be('0x83')])){_0x174b5b['id']={'$notIn':_0x316001['body'][_0x30be('0x83')]};}_0x53a66c=[['priority',_0x30be('0x88')],[_0x30be('0x85'),_0x31fee2[0x0][_0x30be('0x86')]],db[_0x30be('0x7e')][_0x30be('0x89')](_0x30be('0x8b')),['id','ASC']];}return db[_0x30be('0x2d')][_0x30be('0x8c')]({'attributes':['id',_0x30be('0x8d')],'where':_0x174b5b,'order':_0x53a66c,'transaction':_0x472ad5,'lock':_0x472ad5[_0x30be('0x8e')]['UPDATE'],'include':[{'model':db[_0x30be('0x73')],'as':_0x30be('0x8f'),'attributes':_0x5a7bb5,'include':[{'model':db[_0x30be('0x90')],'as':_0x30be('0x91'),'attributes':['id',_0x30be('0x29')]}]},{'model':db[_0x30be('0x92')],'as':_0x30be('0x93'),'attributes':['id',_0x30be('0x29')]},{'model':db[_0x30be('0x5f')],'as':'Queue','attributes':['id',_0x30be('0x29'),_0x30be('0x94')]}]})['then'](function(_0x148d67){if(_0x148d67){return _0x148d67[_0x30be('0x25')]({'UserId':_0x316001[_0x30be('0x6a')]['id']},{'transaction':_0x472ad5});}});});}})[_0x30be('0x54')](handleEntityNotFound(_0x2a5ea9,null))[_0x30be('0x54')](respondWithResult(_0x2a5ea9,null))['catch'](handleError(_0x2a5ea9,null));};exports['getOpenContacts']=function(_0x2a12d9,_0x3b5a5a,_0x5dbdd8){return _0x2a12d9[_0x30be('0x6a')][_0x30be('0x7b')]({'where':{'type':_0x30be('0x7c'),'dialActive':!![],'dialMethod':_0x30be('0x7d')},'attributes':['id'],'raw':!![]})[_0x30be('0x54')](function(_0x204005){if(_0x204005&&_0x204005['length']){return db[_0x30be('0x2d')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x30be('0x6d')](_0x30be('0x80'))},'VoiceQueueId':{'$in':_[_0x30be('0x2c')](_0x204005,'id')},'$or':[{'UserId':null},{'UserId':_0x2a12d9[_0x30be('0x6a')]['id']}]}});}return 0x0;})['then'](function(_0x1dc446){if(!_[_0x30be('0x75')](_0x1dc446)&&_['isNumber'](_0x1dc446)){return _0x3b5a5a[_0x30be('0x1b')](0xc8)['json']({'contacts':_0x1dc446});}else{logger[_0x30be('0x27')](_0x30be('0x95'),'getOpenContacts',0x194,_0x30be('0x96'));_0x3b5a5a[_0x30be('0x1a')](0x194);}})[_0x30be('0x59')](handleError(_0x3b5a5a,null));};
\ No newline at end of file
index 5c11118..e26c4b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['priority','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','define','CmHopper','cm_hopper','scheduledat','phone'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x90b1,0x1bb));var _0x190b=function(_0x42334c,_0x379771){_0x42334c=_0x42334c-0x0;var _0x4feed7=_0x90b1[_0x42334c];return _0x4feed7;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var logger=require(_0x190b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x190b('0x3'));var rp=require(_0x190b('0x4'));var fs=require('fs');var path=require(_0x190b('0x5'));var rimraf=require(_0x190b('0x6'));var config=require('../../config/environment');var attributes=require('./cmHopper.attributes');module['exports']=function(_0x5da9c1,_0x27ff8c){return _0x5da9c1[_0x190b('0x7')](_0x190b('0x8'),attributes,{'tableName':_0x190b('0x9'),'paranoid':![],'indexes':[{'name':_0x190b('0xa'),'fields':[_0x190b('0xa')]},{'name':_0x190b('0xb'),'fields':['phone']},{'name':_0x190b('0xc'),'fields':[_0x190b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d17=['define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x5e55b3,_0xe43c81){var _0x415346=function(_0x2ca98f){while(--_0x2ca98f){_0x5e55b3['push'](_0x5e55b3['shift']());}};_0x415346(++_0xe43c81);}(_0x5d17,0x114));var _0x75d1=function(_0x4bb581,_0x6f7037){_0x4bb581=_0x4bb581-0x0;var _0x316bf5=_0x5d17[_0x4bb581];return _0x316bf5;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x75d1('0x2'));var BPromise=require(_0x75d1('0x3'));var rp=require(_0x75d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var attributes=require(_0x75d1('0x7'));module[_0x75d1('0x8')]=function(_0x56ac0a,_0x458681){return _0x56ac0a[_0x75d1('0x9')](_0x75d1('0xa'),attributes,{'tableName':_0x75d1('0xb'),'paranoid':![],'indexes':[{'name':_0x75d1('0xc'),'fields':[_0x75d1('0xc')]},{'name':_0x75d1('0xd'),'fields':['phone']},{'name':'priority','fields':[_0x75d1('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 83eb5cd..92f0db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8106=['findAll','options','raw','where','attributes','include','map','model','info','ShowCmHopper','find','then','body','CreateCmHopper','UpdateCmHopper','update','destroy','DestroyCmHopper','GetContactDialer','describe','sequelize','limit','UPDATE','CmContact','Contact','keys','User','name','voicePause','length','UserId','includes','push','all','transaction','create','MoveContactManagedDialer','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCmHopper','CmHopper'];(function(_0x5eca85,_0x1c0fd4){var _0xf73ae3=function(_0x5608a4){while(--_0x5608a4){_0x5eca85['push'](_0x5eca85['shift']());}};_0xf73ae3(++_0x1c0fd4);}(_0x8106,0x14a));var _0x6810=function(_0x415b6a,_0x5f3ab2){_0x415b6a=_0x415b6a-0x0;var _0x548658=_0x8106[_0x415b6a];return _0x548658;};'use strict';var _=require(_0x6810('0x0'));var util=require(_0x6810('0x1'));var moment=require(_0x6810('0x2'));var BPromise=require(_0x6810('0x3'));var rs=require(_0x6810('0x4'));var fs=require('fs');var Redis=require(_0x6810('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6810('0x6'))(_0x6810('0x7'));var config=require(_0x6810('0x8'));var jayson=require(_0x6810('0x9'));var client=jayson[_0x6810('0xa')][_0x6810('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x49bc54,_0x274cb1,_0x5f1bfe){return new BPromise(function(_0x1cd2e4,_0x4ec685){return client[_0x6810('0xc')](_0x49bc54,_0x5f1bfe)['then'](function(_0x58f428){logger['info'](_0x6810('0xd'),_0x274cb1,_0x6810('0xe'));logger[_0x6810('0xf')](_0x6810('0x10'),_0x274cb1,_0x6810('0xe'),JSON[_0x6810('0x11')](_0x58f428));if(_0x58f428[_0x6810('0x12')]){if(_0x58f428['error'][_0x6810('0x13')]===0x1f4){logger[_0x6810('0x12')]('CmHopper,\x20%s,\x20%s',_0x274cb1,_0x58f428[_0x6810('0x12')][_0x6810('0x14')]);return _0x4ec685(_0x58f428[_0x6810('0x12')][_0x6810('0x14')]);}logger['error'](_0x6810('0xd'),_0x274cb1,_0x58f428['error'][_0x6810('0x14')]);return _0x1cd2e4(_0x58f428[_0x6810('0x12')][_0x6810('0x14')]);}else{logger['info'](_0x6810('0xd'),_0x274cb1,_0x6810('0xe'));_0x1cd2e4(_0x58f428[_0x6810('0x15')][_0x6810('0x14')]);}})[_0x6810('0x16')](function(_0x5c520d){logger['error'](_0x6810('0xd'),_0x274cb1,_0x5c520d);_0x4ec685(_0x5c520d);});});}exports[_0x6810('0x17')]=function(_0x240953){var _0x1e408c=this;return new Promise(function(_0x479727,_0x19c672){return db[_0x6810('0x18')][_0x6810('0x19')]({'raw':_0x240953[_0x6810('0x1a')]?_0x240953[_0x6810('0x1a')][_0x6810('0x1b')]===undefined?!![]:![]:!![],'where':_0x240953[_0x6810('0x1a')]?_0x240953[_0x6810('0x1a')][_0x6810('0x1c')]||null:null,'attributes':_0x240953[_0x6810('0x1a')]?_0x240953['options'][_0x6810('0x1d')]||null:null,'limit':_0x240953[_0x6810('0x1a')]?_0x240953[_0x6810('0x1a')]['limit']||null:null,'include':_0x240953['options']?_0x240953[_0x6810('0x1a')][_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x240953[_0x6810('0x1a')][_0x6810('0x1e')],function(_0x28d8c6){return{'model':db[_0x28d8c6['model']],'as':_0x28d8c6['as'],'attributes':_0x28d8c6[_0x6810('0x1d')],'include':_0x28d8c6[_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x28d8c6[_0x6810('0x1e')],function(_0x38cc09){return{'model':db[_0x38cc09[_0x6810('0x20')]],'as':_0x38cc09['as'],'attributes':_0x38cc09['attributes'],'include':_0x38cc09[_0x6810('0x1e')]?_['map'](_0x38cc09[_0x6810('0x1e')],function(_0x4ad798){return{'model':db[_0x4ad798[_0x6810('0x20')]],'as':_0x4ad798['as'],'attributes':_0x4ad798[_0x6810('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b45a0){logger[_0x6810('0x21')](_0x6810('0x17'),_0x240953);logger[_0x6810('0xf')]('GetCmHopper',_0x240953,JSON[_0x6810('0x11')](_0x4b45a0));_0x479727(_0x4b45a0);})['catch'](function(_0x549a5d){logger[_0x6810('0x12')](_0x6810('0x17'),_0x549a5d[_0x6810('0x14')],_0x240953);_0x19c672(_0x1e408c[_0x6810('0x12')](0x1f4,_0x549a5d[_0x6810('0x14')]));});});};exports[_0x6810('0x22')]=function(_0x3d8f1b){var _0x283267=this;return new Promise(function(_0x4991e1,_0x238671){return db[_0x6810('0x18')][_0x6810('0x23')]({'raw':_0x3d8f1b[_0x6810('0x1a')]?_0x3d8f1b[_0x6810('0x1a')][_0x6810('0x1b')]===undefined?!![]:![]:!![],'where':_0x3d8f1b[_0x6810('0x1a')]?_0x3d8f1b[_0x6810('0x1a')][_0x6810('0x1c')]||null:null,'attributes':_0x3d8f1b['options']?_0x3d8f1b[_0x6810('0x1a')]['attributes']||null:null,'include':_0x3d8f1b['options']?_0x3d8f1b[_0x6810('0x1a')][_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x3d8f1b[_0x6810('0x1a')][_0x6810('0x1e')],function(_0x35f56b){return{'model':db[_0x35f56b[_0x6810('0x20')]],'as':_0x35f56b['as'],'attributes':_0x35f56b['attributes'],'include':_0x35f56b[_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x35f56b[_0x6810('0x1e')],function(_0x4e140f){return{'model':db[_0x4e140f[_0x6810('0x20')]],'as':_0x4e140f['as'],'attributes':_0x4e140f[_0x6810('0x1d')],'include':_0x4e140f[_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x4e140f[_0x6810('0x1e')],function(_0x4353da){return{'model':db[_0x4353da[_0x6810('0x20')]],'as':_0x4353da['as'],'attributes':_0x4353da[_0x6810('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6810('0x24')](function(_0x242c23){logger[_0x6810('0x21')](_0x6810('0x22'),_0x3d8f1b);logger[_0x6810('0xf')](_0x6810('0x22'),_0x3d8f1b,JSON['stringify'](_0x242c23));_0x4991e1(_0x242c23);})[_0x6810('0x16')](function(_0x3ae833){logger['error'](_0x6810('0x22'),_0x3ae833[_0x6810('0x14')],_0x3d8f1b);_0x238671(_0x283267[_0x6810('0x12')](0x1f4,_0x3ae833[_0x6810('0x14')]));});});};exports['CreateCmHopper']=function(_0x560ee8){var _0x43a984=this;return new Promise(function(_0x3e60e3,_0x4d8a34){return db['CmHopper']['create'](_0x560ee8[_0x6810('0x25')],{'raw':_0x560ee8[_0x6810('0x1a')]?_0x560ee8[_0x6810('0x1a')][_0x6810('0x1b')]===undefined?!![]:![]:!![]})[_0x6810('0x24')](function(_0x55982f){logger[_0x6810('0x21')](_0x6810('0x26'),_0x560ee8);logger[_0x6810('0xf')]('CreateCmHopper',_0x560ee8,JSON[_0x6810('0x11')](_0x55982f));_0x3e60e3(_0x55982f);})['catch'](function(_0x55329e){logger[_0x6810('0x12')](_0x6810('0x26'),_0x55329e[_0x6810('0x14')],_0x560ee8);_0x4d8a34(_0x43a984[_0x6810('0x12')](0x1f4,_0x55329e[_0x6810('0x14')]));});});};exports[_0x6810('0x27')]=function(_0x434f9a){var _0x4c56ba=this;return new Promise(function(_0x2bf637,_0x55b5f5){return db[_0x6810('0x18')][_0x6810('0x28')](_0x434f9a['body'],{'raw':_0x434f9a[_0x6810('0x1a')]?_0x434f9a[_0x6810('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x434f9a[_0x6810('0x1a')]?_0x434f9a[_0x6810('0x1a')][_0x6810('0x1c')]||null:null,'attributes':_0x434f9a[_0x6810('0x1a')]?_0x434f9a[_0x6810('0x1a')][_0x6810('0x1d')]||null:null,'limit':_0x434f9a[_0x6810('0x1a')]?_0x434f9a['options']['limit']||null:null})[_0x6810('0x24')](function(_0x252c36){logger[_0x6810('0x21')](_0x6810('0x27'),_0x434f9a);logger[_0x6810('0xf')](_0x6810('0x27'),_0x434f9a,JSON[_0x6810('0x11')](_0x252c36));_0x2bf637(_0x252c36);})[_0x6810('0x16')](function(_0x1dcc2b){logger['error'](_0x6810('0x27'),_0x1dcc2b[_0x6810('0x14')],_0x434f9a);_0x55b5f5(_0x4c56ba[_0x6810('0x12')](0x1f4,_0x1dcc2b['message']));});});};exports['DestroyCmHopper']=function(_0x38ec17){var _0xec6ccf=this;return new Promise(function(_0x2d6f40,_0x2cde65){return db[_0x6810('0x18')][_0x6810('0x29')]({'where':_0x38ec17[_0x6810('0x1a')]?_0x38ec17[_0x6810('0x1a')][_0x6810('0x1c')]||null:null})[_0x6810('0x24')](function(_0x10c03f){logger[_0x6810('0x21')](_0x6810('0x2a'),_0x38ec17);logger[_0x6810('0xf')](_0x6810('0x2a'),_0x38ec17,JSON['stringify'](_0x10c03f));_0x2d6f40(_0x10c03f);})[_0x6810('0x16')](function(_0x6ef5c4){logger[_0x6810('0x12')](_0x6810('0x2a'),_0x6ef5c4[_0x6810('0x14')],_0x38ec17);_0x2cde65(_0xec6ccf[_0x6810('0x12')](0x1f4,_0x6ef5c4['message']));});});};exports[_0x6810('0x2b')]=function(_0x1e7bd6){var _0x50688b=this;return new Promise(function(_0x452740,_0x13c937){return db['CmContact'][_0x6810('0x2c')]()['then'](function(_0x37c1b2){return db[_0x6810('0x2d')]['transaction'](function(_0x234386){return db[_0x6810('0x18')]['findAll']({'where':_0x1e7bd6[_0x6810('0x1a')]?_0x1e7bd6[_0x6810('0x1a')][_0x6810('0x1c')]||null:null,'attributes':_0x1e7bd6[_0x6810('0x1a')]?_0x1e7bd6[_0x6810('0x1a')]['attributes']||null:null,'limit':_0x1e7bd6[_0x6810('0x1a')]?_0x1e7bd6['options'][_0x6810('0x2e')]||null:null,'order':_0x1e7bd6[_0x6810('0x1a')]?_0x1e7bd6[_0x6810('0x1a')]['order']||null:null,'transaction':_0x234386,'lock':_0x234386['LOCK'][_0x6810('0x2f')],'include':[{'model':db[_0x6810('0x30')],'as':_0x6810('0x31'),'attributes':_[_0x6810('0x32')](_0x37c1b2)},{'model':db[_0x6810('0x33')],'as':'Agent','attributes':['id',_0x6810('0x34'),_0x6810('0x35')]}]})['then'](function(_0xf8673c){var _0x3c1075=[];var _0xe69938=[];for(var _0x2cfd84=0x0;_0x2cfd84<_0xf8673c[_0x6810('0x36')];_0x2cfd84+=0x1){var _0x48cf6d=_0xf8673c[_0x2cfd84][_0x6810('0x37')];if(_0x48cf6d===null){_0x3c1075['push'](_0xf8673c[_0x2cfd84][_0x6810('0x28')](_0x1e7bd6['body'],{'transaction':_0x234386}));}else if(!_0xe69938[_0x6810('0x38')](_0x48cf6d)){_0xe69938[_0x6810('0x39')](_0x48cf6d);_0x3c1075[_0x6810('0x39')](_0xf8673c[_0x2cfd84][_0x6810('0x28')](_0x1e7bd6['body'],{'transaction':_0x234386}));}}return BPromise[_0x6810('0x3a')](_0x3c1075);});})[_0x6810('0x24')](function(_0x10f683){logger[_0x6810('0x21')](_0x6810('0x2b'),_0x1e7bd6);logger[_0x6810('0xf')]('GetContactDialer',_0x1e7bd6,JSON['stringify'](_0x10f683));_0x452740(_0x10f683);})[_0x6810('0x16')](function(_0x43ddb4){logger[_0x6810('0x12')](_0x6810('0x2b'),_0x43ddb4['message'],_0x1e7bd6);_0x13c937(_0x50688b[_0x6810('0x12')](0x1f4,_0x43ddb4[_0x6810('0x14')]));});});});};exports['MoveContactManagedDialer']=function(_0x26a002){var _0x4d3f54=this;return new Promise(function(_0x165d47,_0x4f2746){return db[_0x6810('0x2d')][_0x6810('0x3b')](function(_0x4d5a10){return db['CmHopperFinal'][_0x6810('0x3c')](_0x26a002['body'],{'raw':_0x26a002[_0x6810('0x1a')]?_0x26a002[_0x6810('0x1a')][_0x6810('0x1b')]===undefined?!![]:![]:!![],'transaction':_0x4d5a10})[_0x6810('0x24')](function(){return db[_0x6810('0x18')][_0x6810('0x29')]({'where':_0x26a002[_0x6810('0x1a')]?_0x26a002['options'][_0x6810('0x1c')]||null:null,'transaction':_0x4d5a10});});})[_0x6810('0x24')](function(_0x34c58d){logger['info'](_0x6810('0x3d'),_0x26a002);logger[_0x6810('0xf')]('MoveContactManagedDialer',_0x26a002,JSON[_0x6810('0x11')](_0x34c58d));_0x165d47(_0x34c58d);})[_0x6810('0x16')](function(_0x2e47b2){logger[_0x6810('0x12')](_0x6810('0x3d'),_0x2e47b2[_0x6810('0x14')],_0x26a002);_0x4f2746(_0x4d3f54[_0x6810('0x12')](0x1f4,_0x2e47b2[_0x6810('0x14')]));});});};exports[_0x6810('0x3e')]=function(_0x467aeb){var _0x35ce28=this;return new Promise(function(_0x1a88a9,_0x20360d){return db[_0x6810('0x18')][_0x6810('0x19')]({'raw':_0x467aeb[_0x6810('0x1a')]?_0x467aeb[_0x6810('0x1a')][_0x6810('0x1b')]===undefined?!![]:![]:!![],'where':_0x467aeb['options']?_0x467aeb[_0x6810('0x1a')][_0x6810('0x1c')]||null:null,'attributes':[[db[_0x6810('0x2d')]['fn'](_0x6810('0x3f'),db['sequelize']['fn']('IF',db[_0x6810('0x2d')][_0x6810('0x40')](_0x6810('0x41')+util['format']('\x22%s\x22',moment()['format'](_0x6810('0x42')))+_0x6810('0x43')))),_0x6810('0x44')]]})[_0x6810('0x24')](function(_0x3c882f){logger[_0x6810('0x21')](_0x6810('0x3e'),_0x467aeb);logger[_0x6810('0xf')]('CountReScheduled',_0x467aeb,JSON[_0x6810('0x11')](_0x3c882f));_0x1a88a9(_0x3c882f);})[_0x6810('0x16')](function(_0x4a6a9a){logger[_0x6810('0x12')](_0x6810('0x3e'),_0x4a6a9a[_0x6810('0x14')],_0x467aeb);_0x20360d(_0x35ce28['error'](0x1f4,_0x4a6a9a[_0x6810('0x14')]));});});};exports[_0x6810('0x45')]=function(_0x1625b6){var _0x468d10=this;return new Promise(function(_0x573cf8,_0x3e4686){return db[_0x6810('0x30')][_0x6810('0x2c')]()['then'](function(_0x2cce6c){return db[_0x6810('0x2d')]['transaction'](function(_0x40268f){return db[_0x6810('0x18')][_0x6810('0x19')]({'where':_0x1625b6[_0x6810('0x1a')]?_0x1625b6[_0x6810('0x1a')][_0x6810('0x1c')]||null:null,'attributes':_0x1625b6[_0x6810('0x1a')]?_0x1625b6[_0x6810('0x1a')][_0x6810('0x1d')]||null:null,'limit':0x1,'order':_0x1625b6['options']?_0x1625b6['options']['order']||null:null,'group':db[_0x6810('0x18')][_0x6810('0x37')],'transaction':_0x40268f,'lock':_0x40268f['LOCK'][_0x6810('0x2f')],'include':_0x1625b6['options']?_0x1625b6['options'][_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x1625b6[_0x6810('0x1a')]['include'],function(_0x3f700e){return{'model':db[_0x3f700e[_0x6810('0x20')]],'as':_0x3f700e['as'],'attributes':_0x3f700e[_0x6810('0x1d')],'include':_0x3f700e[_0x6810('0x1e')]?_['map'](_0x3f700e[_0x6810('0x1e')],function(_0x3fe4f2){return{'model':db[_0x3fe4f2[_0x6810('0x20')]],'as':_0x3fe4f2['as'],'attributes':_0x3fe4f2[_0x6810('0x1d')],'include':_0x3fe4f2[_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x3fe4f2[_0x6810('0x1e')],function(_0x3d4442){return{'model':db[_0x3d4442['model']],'as':_0x3d4442['as'],'attributes':_0x3d4442[_0x6810('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6810('0x24')](function(_0x4ce735){var _0x3d94ba=[];for(var _0x53e4fb=0x0;_0x53e4fb<_0x4ce735[_0x6810('0x36')];_0x53e4fb+=0x1){_0x3d94ba[_0x6810('0x39')](_0x4ce735[_0x53e4fb][_0x6810('0x28')](_0x1625b6[_0x6810('0x25')],{'transaction':_0x40268f}));}return BPromise[_0x6810('0x3a')](_0x3d94ba);});})[_0x6810('0x24')](function(_0x569396){logger[_0x6810('0x21')]('GetContactRecallMe',_0x1625b6);logger[_0x6810('0xf')](_0x6810('0x45'),_0x1625b6,JSON['stringify'](_0x569396));_0x573cf8(_0x569396);})['catch'](function(_0x40020b){logger[_0x6810('0x12')]('GetContactRecallMe',_0x40020b[_0x6810('0x14')],_0x1625b6);_0x3e4686(_0x468d10[_0x6810('0x12')](0x1f4,_0x40020b[_0x6810('0x14')]));});});});};exports[_0x6810('0x46')]=function(_0x5d9356){var _0x12a848=this;return new Promise(function(_0x554a02,_0x35a398){db[_0x6810('0x30')][_0x6810('0x2c')]()['then'](function(_0x1f3a04){return db['CmHopper'][_0x6810('0x19')]({'raw':_0x5d9356[_0x6810('0x1a')]?_0x5d9356[_0x6810('0x1a')][_0x6810('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d9356[_0x6810('0x1a')]?_0x5d9356[_0x6810('0x1a')][_0x6810('0x1c')]||null:null,'attributes':_0x5d9356[_0x6810('0x1a')]?_0x5d9356[_0x6810('0x1a')][_0x6810('0x1d')]||null:null,'limit':_0x5d9356[_0x6810('0x1a')]?_0x5d9356[_0x6810('0x1a')][_0x6810('0x2e')]||null:null,'include':_0x5d9356['options']?_0x5d9356['options'][_0x6810('0x1e')]?_[_0x6810('0x1f')](_0x5d9356[_0x6810('0x1a')][_0x6810('0x1e')],function(_0x1ef3a3){return{'model':db[_0x1ef3a3[_0x6810('0x20')]],'as':_0x1ef3a3['as'],'attributes':_0x1ef3a3['as']===_0x6810('0x31')?_[_0x6810('0x32')](_0x1f3a04):_0x1ef3a3['attributes'],'include':_0x1ef3a3['include']?_[_0x6810('0x1f')](_0x1ef3a3[_0x6810('0x1e')],function(_0x35f8c8){return{'model':db[_0x35f8c8[_0x6810('0x20')]],'as':_0x35f8c8['as'],'attributes':_0x35f8c8[_0x6810('0x1d')],'include':_0x35f8c8['include']?_[_0x6810('0x1f')](_0x35f8c8[_0x6810('0x1e')],function(_0x420fb9){return{'model':db[_0x420fb9['model']],'as':_0x420fb9['as'],'attributes':_0x420fb9[_0x6810('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6810('0x24')](function(_0x52106f){logger[_0x6810('0x21')](_0x6810('0x17'),_0x5d9356);logger[_0x6810('0xf')]('GetCmHopper',_0x5d9356,JSON[_0x6810('0x11')](_0x52106f));_0x554a02(_0x52106f);})[_0x6810('0x16')](function(_0x229e7b){logger[_0x6810('0x12')](_0x6810('0x17'),_0x229e7b[_0x6810('0x14')],_0x5d9356);_0x35a398(_0x12a848['error'](0x1f4,_0x229e7b['message']));});});});};
\ No newline at end of file
+var _0xb7bf=['stringify','error','code','message','result','catch','GetCmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowCmHopper','CmHopper','find','debug','create','body','CreateCmHopper','update','UpdateCmHopper','DestroyCmHopper','destroy','GetContactDialer','describe','sequelize','transaction','order','UPDATE','CmContact','Contact','keys','Agent','name','voicePause','push','includes','all','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','UserId','LOCK','length','GetCmHopperPreview','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','info','CmHopper,\x20%s,\x20%s','request\x20sent'];(function(_0x4070a0,_0x523f5d){var _0x55c11e=function(_0x19c6ba){while(--_0x19c6ba){_0x4070a0['push'](_0x4070a0['shift']());}};_0x55c11e(++_0x523f5d);}(_0xb7bf,0x1ad));var _0xfb7b=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb7bf[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xfb7b('0x0'));var util=require(_0xfb7b('0x1'));var moment=require(_0xfb7b('0x2'));var BPromise=require(_0xfb7b('0x3'));var rs=require(_0xfb7b('0x4'));var fs=require('fs');var Redis=require(_0xfb7b('0x5'));var db=require(_0xfb7b('0x6'))['db'];var utils=require(_0xfb7b('0x7'));var logger=require(_0xfb7b('0x8'))('rpc');var config=require(_0xfb7b('0x9'));var jayson=require(_0xfb7b('0xa'));var client=jayson[_0xfb7b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x308ca9,_0x98e0c3,_0x1b430e){return new BPromise(function(_0x591afc,_0x1a749c){return client['request'](_0x308ca9,_0x1b430e)['then'](function(_0x110641){logger[_0xfb7b('0xc')](_0xfb7b('0xd'),_0x98e0c3,_0xfb7b('0xe'));logger['debug']('CmHopper,\x20%s,\x20%s,\x20%s',_0x98e0c3,_0xfb7b('0xe'),JSON[_0xfb7b('0xf')](_0x110641));if(_0x110641[_0xfb7b('0x10')]){if(_0x110641[_0xfb7b('0x10')][_0xfb7b('0x11')]===0x1f4){logger[_0xfb7b('0x10')]('CmHopper,\x20%s,\x20%s',_0x98e0c3,_0x110641[_0xfb7b('0x10')][_0xfb7b('0x12')]);return _0x1a749c(_0x110641[_0xfb7b('0x10')][_0xfb7b('0x12')]);}logger[_0xfb7b('0x10')](_0xfb7b('0xd'),_0x98e0c3,_0x110641[_0xfb7b('0x10')]['message']);return _0x591afc(_0x110641[_0xfb7b('0x10')][_0xfb7b('0x12')]);}else{logger[_0xfb7b('0xc')]('CmHopper,\x20%s,\x20%s',_0x98e0c3,_0xfb7b('0xe'));_0x591afc(_0x110641[_0xfb7b('0x13')][_0xfb7b('0x12')]);}})[_0xfb7b('0x14')](function(_0xe04e7a){logger[_0xfb7b('0x10')](_0xfb7b('0xd'),_0x98e0c3,_0xe04e7a);_0x1a749c(_0xe04e7a);});});}exports[_0xfb7b('0x15')]=function(_0x3be9fa){var _0x2d801f=this;return new Promise(function(_0x3f87b7,_0x14489d){return db['CmHopper'][_0xfb7b('0x16')]({'raw':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'where':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0x3be9fa['options']?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'limit':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x1b')]||null:null,'include':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x3be9fa[_0xfb7b('0x17')]['include'],function(_0xc6a893){return{'model':db[_0xc6a893[_0xfb7b('0x1e')]],'as':_0xc6a893['as'],'attributes':_0xc6a893[_0xfb7b('0x1a')],'include':_0xc6a893['include']?_[_0xfb7b('0x1d')](_0xc6a893['include'],function(_0x3a6a8e){return{'model':db[_0x3a6a8e['model']],'as':_0x3a6a8e['as'],'attributes':_0x3a6a8e[_0xfb7b('0x1a')],'include':_0x3a6a8e[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x3a6a8e[_0xfb7b('0x1c')],function(_0x28b837){return{'model':db[_0x28b837[_0xfb7b('0x1e')]],'as':_0x28b837['as'],'attributes':_0x28b837[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfb7b('0x1f')](function(_0xf32a17){logger[_0xfb7b('0xc')]('GetCmHopper',_0x3be9fa);logger['debug'](_0xfb7b('0x15'),_0x3be9fa,JSON[_0xfb7b('0xf')](_0xf32a17));_0x3f87b7(_0xf32a17);})['catch'](function(_0x4be6b6){logger['error'](_0xfb7b('0x15'),_0x4be6b6[_0xfb7b('0x12')],_0x3be9fa);_0x14489d(_0x2d801f[_0xfb7b('0x10')](0x1f4,_0x4be6b6[_0xfb7b('0x12')]));});});};exports[_0xfb7b('0x20')]=function(_0xf7537e){var _0x3ab642=this;return new Promise(function(_0x15f117,_0x39f68c){return db[_0xfb7b('0x21')][_0xfb7b('0x22')]({'raw':_0xf7537e['options']?_0xf7537e[_0xfb7b('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0xf7537e[_0xfb7b('0x17')]?_0xf7537e[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0xf7537e[_0xfb7b('0x17')]?_0xf7537e[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'include':_0xf7537e[_0xfb7b('0x17')]?_0xf7537e['options'][_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0xf7537e[_0xfb7b('0x17')][_0xfb7b('0x1c')],function(_0x29951b){return{'model':db[_0x29951b[_0xfb7b('0x1e')]],'as':_0x29951b['as'],'attributes':_0x29951b[_0xfb7b('0x1a')],'include':_0x29951b[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x29951b[_0xfb7b('0x1c')],function(_0x17d40){return{'model':db[_0x17d40['model']],'as':_0x17d40['as'],'attributes':_0x17d40['attributes'],'include':_0x17d40[_0xfb7b('0x1c')]?_['map'](_0x17d40['include'],function(_0x2ac5eb){return{'model':db[_0x2ac5eb[_0xfb7b('0x1e')]],'as':_0x2ac5eb['as'],'attributes':_0x2ac5eb[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfb7b('0x1f')](function(_0x754a98){logger[_0xfb7b('0xc')](_0xfb7b('0x20'),_0xf7537e);logger[_0xfb7b('0x23')](_0xfb7b('0x20'),_0xf7537e,JSON[_0xfb7b('0xf')](_0x754a98));_0x15f117(_0x754a98);})[_0xfb7b('0x14')](function(_0x448090){logger[_0xfb7b('0x10')](_0xfb7b('0x20'),_0x448090['message'],_0xf7537e);_0x39f68c(_0x3ab642[_0xfb7b('0x10')](0x1f4,_0x448090[_0xfb7b('0x12')]));});});};exports['CreateCmHopper']=function(_0x54ee3d){var _0x62264=this;return new Promise(function(_0x31e627,_0x24db82){return db['CmHopper'][_0xfb7b('0x24')](_0x54ee3d[_0xfb7b('0x25')],{'raw':_0x54ee3d[_0xfb7b('0x17')]?_0x54ee3d[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![]})[_0xfb7b('0x1f')](function(_0x47bc12){logger[_0xfb7b('0xc')](_0xfb7b('0x26'),_0x54ee3d);logger['debug'](_0xfb7b('0x26'),_0x54ee3d,JSON[_0xfb7b('0xf')](_0x47bc12));_0x31e627(_0x47bc12);})[_0xfb7b('0x14')](function(_0x1007fa){logger['error'](_0xfb7b('0x26'),_0x1007fa[_0xfb7b('0x12')],_0x54ee3d);_0x24db82(_0x62264[_0xfb7b('0x10')](0x1f4,_0x1007fa['message']));});});};exports['UpdateCmHopper']=function(_0xd4822c){var _0x56a89a=this;return new Promise(function(_0x32ed5,_0x23225b){return db['CmHopper'][_0xfb7b('0x27')](_0xd4822c['body'],{'raw':_0xd4822c['options']?_0xd4822c[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd4822c[_0xfb7b('0x17')]?_0xd4822c[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0xd4822c[_0xfb7b('0x17')]?_0xd4822c[_0xfb7b('0x17')]['attributes']||null:null,'limit':_0xd4822c[_0xfb7b('0x17')]?_0xd4822c[_0xfb7b('0x17')][_0xfb7b('0x1b')]||null:null})['then'](function(_0x4fafd1){logger['info'](_0xfb7b('0x28'),_0xd4822c);logger[_0xfb7b('0x23')]('UpdateCmHopper',_0xd4822c,JSON[_0xfb7b('0xf')](_0x4fafd1));_0x32ed5(_0x4fafd1);})[_0xfb7b('0x14')](function(_0x455df1){logger[_0xfb7b('0x10')](_0xfb7b('0x28'),_0x455df1['message'],_0xd4822c);_0x23225b(_0x56a89a[_0xfb7b('0x10')](0x1f4,_0x455df1[_0xfb7b('0x12')]));});});};exports[_0xfb7b('0x29')]=function(_0x27dc58){var _0x2307fb=this;return new Promise(function(_0x44d3a9,_0x914e1e){return db[_0xfb7b('0x21')][_0xfb7b('0x2a')]({'where':_0x27dc58[_0xfb7b('0x17')]?_0x27dc58['options'][_0xfb7b('0x19')]||null:null})['then'](function(_0x4d26a2){logger['info'](_0xfb7b('0x29'),_0x27dc58);logger[_0xfb7b('0x23')](_0xfb7b('0x29'),_0x27dc58,JSON[_0xfb7b('0xf')](_0x4d26a2));_0x44d3a9(_0x4d26a2);})['catch'](function(_0x402f0e){logger[_0xfb7b('0x10')](_0xfb7b('0x29'),_0x402f0e[_0xfb7b('0x12')],_0x27dc58);_0x914e1e(_0x2307fb[_0xfb7b('0x10')](0x1f4,_0x402f0e['message']));});});};exports[_0xfb7b('0x2b')]=function(_0x187ec8){var _0x2f9153=this;return new Promise(function(_0x4d7726,_0x385222){return db['CmContact'][_0xfb7b('0x2c')]()[_0xfb7b('0x1f')](function(_0x16408b){return db[_0xfb7b('0x2d')][_0xfb7b('0x2e')](function(_0x413a95){return db['CmHopper'][_0xfb7b('0x16')]({'where':_0x187ec8[_0xfb7b('0x17')]?_0x187ec8[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0x187ec8['options']?_0x187ec8['options'][_0xfb7b('0x1a')]||null:null,'limit':_0x187ec8['options']?_0x187ec8[_0xfb7b('0x17')]['limit']||null:null,'order':_0x187ec8['options']?_0x187ec8[_0xfb7b('0x17')][_0xfb7b('0x2f')]||null:null,'transaction':_0x413a95,'lock':_0x413a95['LOCK'][_0xfb7b('0x30')],'include':[{'model':db[_0xfb7b('0x31')],'as':_0xfb7b('0x32'),'attributes':_[_0xfb7b('0x33')](_0x16408b)},{'model':db['User'],'as':_0xfb7b('0x34'),'attributes':['id',_0xfb7b('0x35'),_0xfb7b('0x36')]}]})['then'](function(_0x3308a2){var _0x127224=[];var _0x4935af=[];for(var _0x1d0bdb=0x0;_0x1d0bdb<_0x3308a2['length'];_0x1d0bdb+=0x1){var _0x399882=_0x3308a2[_0x1d0bdb]['UserId'];if(_0x399882===null){_0x127224[_0xfb7b('0x37')](_0x3308a2[_0x1d0bdb][_0xfb7b('0x27')](_0x187ec8['body'],{'transaction':_0x413a95}));}else if(!_0x4935af[_0xfb7b('0x38')](_0x399882)){_0x4935af[_0xfb7b('0x37')](_0x399882);_0x127224[_0xfb7b('0x37')](_0x3308a2[_0x1d0bdb][_0xfb7b('0x27')](_0x187ec8[_0xfb7b('0x25')],{'transaction':_0x413a95}));}}return BPromise[_0xfb7b('0x39')](_0x127224);});})['then'](function(_0x363f80){logger[_0xfb7b('0xc')](_0xfb7b('0x2b'),_0x187ec8);logger[_0xfb7b('0x23')](_0xfb7b('0x2b'),_0x187ec8,JSON['stringify'](_0x363f80));_0x4d7726(_0x363f80);})[_0xfb7b('0x14')](function(_0x19ea06){logger[_0xfb7b('0x10')](_0xfb7b('0x2b'),_0x19ea06['message'],_0x187ec8);_0x385222(_0x2f9153[_0xfb7b('0x10')](0x1f4,_0x19ea06[_0xfb7b('0x12')]));});});});};exports[_0xfb7b('0x3a')]=function(_0x59dd12){var _0x41c5e9=this;return new Promise(function(_0x204bea,_0x56b462){return db[_0xfb7b('0x2d')][_0xfb7b('0x2e')](function(_0x31ce3d){return db[_0xfb7b('0x3b')][_0xfb7b('0x24')](_0x59dd12[_0xfb7b('0x25')],{'raw':_0x59dd12[_0xfb7b('0x17')]?_0x59dd12[_0xfb7b('0x17')]['raw']===undefined?!![]:![]:!![],'transaction':_0x31ce3d})[_0xfb7b('0x1f')](function(){return db[_0xfb7b('0x21')][_0xfb7b('0x2a')]({'where':_0x59dd12['options']?_0x59dd12[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'transaction':_0x31ce3d});});})[_0xfb7b('0x1f')](function(_0x29393f){logger['info'](_0xfb7b('0x3a'),_0x59dd12);logger[_0xfb7b('0x23')](_0xfb7b('0x3a'),_0x59dd12,JSON[_0xfb7b('0xf')](_0x29393f));_0x204bea(_0x29393f);})['catch'](function(_0x36f36a){logger[_0xfb7b('0x10')]('MoveContactManagedDialer',_0x36f36a['message'],_0x59dd12);_0x56b462(_0x41c5e9[_0xfb7b('0x10')](0x1f4,_0x36f36a['message']));});});};exports[_0xfb7b('0x3c')]=function(_0x273cdb){var _0x145160=this;return new Promise(function(_0x55a3f2,_0x2a7770){return db[_0xfb7b('0x21')][_0xfb7b('0x16')]({'raw':_0x273cdb[_0xfb7b('0x17')]?_0x273cdb[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'where':_0x273cdb['options']?_0x273cdb[_0xfb7b('0x17')]['where']||null:null,'attributes':[[db[_0xfb7b('0x2d')]['fn'](_0xfb7b('0x3d'),db[_0xfb7b('0x2d')]['fn']('IF',db[_0xfb7b('0x2d')][_0xfb7b('0x3e')](_0xfb7b('0x3f')+util[_0xfb7b('0x40')](_0xfb7b('0x41'),moment()['format'](_0xfb7b('0x42')))+_0xfb7b('0x43')))),_0xfb7b('0x44')]]})[_0xfb7b('0x1f')](function(_0x4ec816){logger[_0xfb7b('0xc')](_0xfb7b('0x3c'),_0x273cdb);logger['debug']('CountReScheduled',_0x273cdb,JSON[_0xfb7b('0xf')](_0x4ec816));_0x55a3f2(_0x4ec816);})[_0xfb7b('0x14')](function(_0x66beca){logger['error'](_0xfb7b('0x3c'),_0x66beca[_0xfb7b('0x12')],_0x273cdb);_0x2a7770(_0x145160[_0xfb7b('0x10')](0x1f4,_0x66beca[_0xfb7b('0x12')]));});});};exports[_0xfb7b('0x45')]=function(_0x4428cf){var _0x409d6b=this;return new Promise(function(_0x5e5429,_0x240871){return db[_0xfb7b('0x31')]['describe']()[_0xfb7b('0x1f')](function(_0x43c0fd){return db[_0xfb7b('0x2d')][_0xfb7b('0x2e')](function(_0x3cf6e7){return db[_0xfb7b('0x21')][_0xfb7b('0x16')]({'where':_0x4428cf['options']?_0x4428cf[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0x4428cf[_0xfb7b('0x17')]?_0x4428cf[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'limit':0x1,'order':_0x4428cf[_0xfb7b('0x17')]?_0x4428cf[_0xfb7b('0x17')][_0xfb7b('0x2f')]||null:null,'group':db['CmHopper'][_0xfb7b('0x46')],'transaction':_0x3cf6e7,'lock':_0x3cf6e7[_0xfb7b('0x47')][_0xfb7b('0x30')],'include':_0x4428cf['options']?_0x4428cf['options'][_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x4428cf['options'][_0xfb7b('0x1c')],function(_0x169b9d){return{'model':db[_0x169b9d[_0xfb7b('0x1e')]],'as':_0x169b9d['as'],'attributes':_0x169b9d[_0xfb7b('0x1a')],'include':_0x169b9d[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x169b9d[_0xfb7b('0x1c')],function(_0x32f3fa){return{'model':db[_0x32f3fa['model']],'as':_0x32f3fa['as'],'attributes':_0x32f3fa[_0xfb7b('0x1a')],'include':_0x32f3fa[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x32f3fa[_0xfb7b('0x1c')],function(_0x586443){return{'model':db[_0x586443[_0xfb7b('0x1e')]],'as':_0x586443['as'],'attributes':_0x586443[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x252316){var _0x244af4=[];for(var _0x19a781=0x0;_0x19a781<_0x252316[_0xfb7b('0x48')];_0x19a781+=0x1){_0x244af4['push'](_0x252316[_0x19a781][_0xfb7b('0x27')](_0x4428cf['body'],{'transaction':_0x3cf6e7}));}return BPromise[_0xfb7b('0x39')](_0x244af4);});})[_0xfb7b('0x1f')](function(_0x242547){logger[_0xfb7b('0xc')](_0xfb7b('0x45'),_0x4428cf);logger[_0xfb7b('0x23')](_0xfb7b('0x45'),_0x4428cf,JSON[_0xfb7b('0xf')](_0x242547));_0x5e5429(_0x242547);})[_0xfb7b('0x14')](function(_0x3b1980){logger['error'](_0xfb7b('0x45'),_0x3b1980[_0xfb7b('0x12')],_0x4428cf);_0x240871(_0x409d6b['error'](0x1f4,_0x3b1980[_0xfb7b('0x12')]));});});});};exports[_0xfb7b('0x49')]=function(_0x2abf86){var _0x4c6ea5=this;return new Promise(function(_0x2b93c2,_0xb6a131){db[_0xfb7b('0x31')][_0xfb7b('0x2c')]()[_0xfb7b('0x1f')](function(_0x1bc69f){return db[_0xfb7b('0x21')][_0xfb7b('0x16')]({'raw':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86['options'][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'where':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86['options'][_0xfb7b('0x19')]||null:null,'attributes':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'limit':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86[_0xfb7b('0x17')][_0xfb7b('0x1b')]||null:null,'include':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86['options']['include']?_[_0xfb7b('0x1d')](_0x2abf86[_0xfb7b('0x17')][_0xfb7b('0x1c')],function(_0x4cb7b8){return{'model':db[_0x4cb7b8[_0xfb7b('0x1e')]],'as':_0x4cb7b8['as'],'attributes':_0x4cb7b8['as']===_0xfb7b('0x32')?_['keys'](_0x1bc69f):_0x4cb7b8['attributes'],'include':_0x4cb7b8[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x4cb7b8[_0xfb7b('0x1c')],function(_0x324fea){return{'model':db[_0x324fea[_0xfb7b('0x1e')]],'as':_0x324fea['as'],'attributes':_0x324fea[_0xfb7b('0x1a')],'include':_0x324fea[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x324fea[_0xfb7b('0x1c')],function(_0x2f7f8e){return{'model':db[_0x2f7f8e['model']],'as':_0x2f7f8e['as'],'attributes':_0x2f7f8e[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfb7b('0x1f')](function(_0x2c90bf){logger[_0xfb7b('0xc')]('GetCmHopper',_0x2abf86);logger[_0xfb7b('0x23')]('GetCmHopper',_0x2abf86,JSON['stringify'](_0x2c90bf));_0x2b93c2(_0x2c90bf);})[_0xfb7b('0x14')](function(_0x4cf5c8){logger[_0xfb7b('0x10')](_0xfb7b('0x15'),_0x4cf5c8[_0xfb7b('0x12')],_0x2abf86);_0xb6a131(_0x4c6ea5['error'](0x1f4,_0x4cf5c8['message']));});});});};
\ No newline at end of file
index 3a09f41..fdc6468 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4108=['getPreview','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopper.controller','isAuthenticated','get','/describe','describe','/opencontacts','getOpenContacts','/:id','show','create','post','/preview'];(function(_0xc7d364,_0x46b60a){var _0x57b946=function(_0x5f0b20){while(--_0x5f0b20){_0xc7d364['push'](_0xc7d364['shift']());}};_0x57b946(++_0x46b60a);}(_0x4108,0x69));var _0x8410=function(_0x1c3997,_0x19d42d){_0x1c3997=_0x1c3997-0x0;var _0x119bb6=_0x4108[_0x1c3997];return _0x119bb6;};'use strict';var multer=require('multer');var util=require(_0x8410('0x0'));var path=require(_0x8410('0x1'));var timeout=require(_0x8410('0x2'));var express=require(_0x8410('0x3'));var router=express[_0x8410('0x4')]();var fs_extra=require(_0x8410('0x5'));var auth=require(_0x8410('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8410('0x7'));var controller=require(_0x8410('0x8'));router['get']('/',auth[_0x8410('0x9')](),controller['index']);router[_0x8410('0xa')](_0x8410('0xb'),auth[_0x8410('0x9')](),controller[_0x8410('0xc')]);router[_0x8410('0xa')](_0x8410('0xd'),auth[_0x8410('0x9')](),controller[_0x8410('0xe')]);router[_0x8410('0xa')](_0x8410('0xf'),auth[_0x8410('0x9')](),controller[_0x8410('0x10')]);router['post']('/',auth[_0x8410('0x9')](),controller[_0x8410('0x11')]);router[_0x8410('0x12')](_0x8410('0x13'),auth[_0x8410('0x9')](),controller[_0x8410('0x14')]);router['put'](_0x8410('0xf'),auth['isAuthenticated'](),controller[_0x8410('0x15')]);router[_0x8410('0x16')](_0x8410('0xf'),auth[_0x8410('0x9')](),controller[_0x8410('0x17')]);module[_0x8410('0x18')]=router;
\ No newline at end of file
+var _0x59bf=['index','isAuthenticated','describe','/opencontacts','/:id','show','post','/preview','getPreview','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x5f3365,_0x438954){var _0x3280d8=function(_0xccfcde){while(--_0xccfcde){_0x5f3365['push'](_0x5f3365['shift']());}};_0x3280d8(++_0x438954);}(_0x59bf,0xdb));var _0xf59b=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x59bf[_0x363ef8];return _0x148822;};'use strict';var multer=require(_0xf59b('0x0'));var util=require(_0xf59b('0x1'));var path=require(_0xf59b('0x2'));var timeout=require(_0xf59b('0x3'));var express=require(_0xf59b('0x4'));var router=express[_0xf59b('0x5')]();var fs_extra=require(_0xf59b('0x6'));var auth=require(_0xf59b('0x7'));var interaction=require(_0xf59b('0x8'));var config=require(_0xf59b('0x9'));var controller=require('./cmHopper.controller');router[_0xf59b('0xa')]('/',auth['isAuthenticated'](),controller[_0xf59b('0xb')]);router[_0xf59b('0xa')]('/describe',auth[_0xf59b('0xc')](),controller[_0xf59b('0xd')]);router[_0xf59b('0xa')](_0xf59b('0xe'),auth[_0xf59b('0xc')](),controller['getOpenContacts']);router[_0xf59b('0xa')](_0xf59b('0xf'),auth['isAuthenticated'](),controller[_0xf59b('0x10')]);router['post']('/',auth[_0xf59b('0xc')](),controller['create']);router[_0xf59b('0x11')](_0xf59b('0x12'),auth[_0xf59b('0xc')](),controller[_0xf59b('0x13')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf59b('0x14')]);router[_0xf59b('0x15')](_0xf59b('0xf'),auth[_0xf59b('0xc')](),controller[_0xf59b('0x16')]);module['exports']=router;
\ No newline at end of file
index 08b218a..8c553fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8569=['contactListQueue','exports','STRING','INTEGER'];(function(_0x177e15,_0x27cdf7){var _0x4855e8=function(_0x2b9095){while(--_0x2b9095){_0x177e15['push'](_0x177e15['shift']());}};_0x4855e8(++_0x27cdf7);}(_0x8569,0x14d));var _0x9856=function(_0x3718b7,_0x2da677){_0x3718b7=_0x3718b7-0x0;var _0xf8c91e=_0x8569[_0x3718b7];return _0xf8c91e;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x9856('0x0')]={'phone':{'type':Sequelize[_0x9856('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x9856('0x2')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x9856('0x2')],'unique':_0x9856('0x3')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x9856('0x3')}};
\ No newline at end of file
+var _0x1354=['sequelize','exports','STRING','INTEGER','contactListQueue','moment'];(function(_0x505df9,_0x14138e){var _0x1cc025=function(_0x5d2a1f){while(--_0x5d2a1f){_0x505df9['push'](_0x505df9['shift']());}};_0x1cc025(++_0x14138e);}(_0x1354,0x95));var _0x4135=function(_0x11f0e3,_0x5170bc){_0x11f0e3=_0x11f0e3-0x0;var _0x2892e8=_0x1354[_0x11f0e3];return _0x2892e8;};'use strict';var moment=require(_0x4135('0x0'));var Sequelize=require(_0x4135('0x1'));module[_0x4135('0x2')]={'phone':{'type':Sequelize[_0x4135('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x4135('0x4')],'unique':_0x4135('0x5')},'ListId':{'type':Sequelize[_0x4135('0x4')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x4135('0x4')],'unique':_0x4135('0x5')}};
\ No newline at end of file
index ecd8eff..d25f4c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa02f=['lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperBlack','include','findAll','rows','catch','show','params','keys','body','find','describe','eml-format','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0xa02f,0xdb));var _0xfa02=function(_0x363286,_0x3c2e2a){_0x363286=_0x363286-0x0;var _0x182c3e=_0xa02f[_0x363286];return _0x182c3e;};'use strict';var emlformat=require(_0xfa02('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfa02('0x1'));var moment=require(_0xfa02('0x2'));var BPromise=require(_0xfa02('0x3'));var Mustache=require(_0xfa02('0x4'));var util=require('util');var path=require(_0xfa02('0x5'));var sox=require(_0xfa02('0x6'));var csv=require('to-csv');var ejs=require(_0xfa02('0x7'));var fs=require('fs');var fs_extra=require(_0xfa02('0x8'));var _=require(_0xfa02('0x9'));var squel=require(_0xfa02('0xa'));var crypto=require(_0xfa02('0xb'));var jsforce=require(_0xfa02('0xc'));var deskjs=require(_0xfa02('0xd'));var toCsv=require(_0xfa02('0xe'));var querystring=require('querystring');var Papa=require(_0xfa02('0xf'));var Redis=require('ioredis');var authService=require(_0xfa02('0x10'));var qs=require(_0xfa02('0x11'));var as=require(_0xfa02('0x12'));var hardwareService=require(_0xfa02('0x13'));var logger=require(_0xfa02('0x14'))(_0xfa02('0x15'));var utils=require('../../config/utils');var config=require(_0xfa02('0x16'));var licenseUtil=require(_0xfa02('0x17'));var db=require(_0xfa02('0x18'))['db'];function respondWithStatusCode(_0xb27f42,_0x3b254f){_0x3b254f=_0x3b254f||0xcc;return function(_0x4aee29){if(_0x4aee29){return _0xb27f42['sendStatus'](_0x3b254f);}return _0xb27f42[_0xfa02('0x19')](_0x3b254f)['end']();};}function respondWithResult(_0x20a1dd,_0x30a7c6){_0x30a7c6=_0x30a7c6||0xc8;return function(_0x3b92f0){if(_0x3b92f0){return _0x20a1dd[_0xfa02('0x19')](_0x30a7c6)[_0xfa02('0x1a')](_0x3b92f0);}};}function respondWithFilteredResult(_0x226afa,_0x22e05e){return function(_0x1acb92){if(_0x1acb92){var _0x5c70f2=typeof _0x22e05e[_0xfa02('0x1b')]==='undefined'&&typeof _0x22e05e[_0xfa02('0x1c')]===_0xfa02('0x1d');var _0x542ed6=_0x1acb92[_0xfa02('0x1e')];var _0x44a542=_0x5c70f2?0x0:_0x22e05e[_0xfa02('0x1b')];var _0x4d699c=_0x5c70f2?_0x1acb92[_0xfa02('0x1e')]:_0x22e05e['offset']+_0x22e05e[_0xfa02('0x1c')];var _0x5120fe;if(_0x4d699c>=_0x542ed6){_0x4d699c=_0x542ed6;_0x5120fe=0xc8;}else{_0x5120fe=0xce;}_0x226afa[_0xfa02('0x19')](_0x5120fe);return _0x226afa[_0xfa02('0x1f')]('Content-Range',_0x44a542+'-'+_0x4d699c+'/'+_0x542ed6)[_0xfa02('0x1a')](_0x1acb92);}return null;};}function patchUpdates(_0x46365f){return function(_0x230dae){try{jsonpatch[_0xfa02('0x20')](_0x230dae,_0x46365f,!![]);}catch(_0x24c2fd){return BPromise[_0xfa02('0x21')](_0x24c2fd);}return _0x230dae[_0xfa02('0x22')]();};}function saveUpdates(_0x138880,_0x5f2c62){return function(_0x613e53){if(_0x613e53){return _0x613e53[_0xfa02('0x23')](_0x138880)[_0xfa02('0x24')](function(_0x18bbdc){return _0x18bbdc;});}return null;};}function removeEntity(_0x56306d,_0x1d905b){return function(_0x3e9c5e){if(_0x3e9c5e){return _0x3e9c5e[_0xfa02('0x25')]()[_0xfa02('0x24')](function(){_0x56306d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x465022,_0x3e89f4){return function(_0x55d12e){if(!_0x55d12e){_0x465022[_0xfa02('0x26')](0x194);}return _0x55d12e;};}function handleError(_0x2172ed,_0x331565){_0x331565=_0x331565||0x1f4;return function(_0x304565){logger[_0xfa02('0x27')](_0x304565[_0xfa02('0x28')]);if(_0x304565[_0xfa02('0x29')]){delete _0x304565[_0xfa02('0x29')];}_0x2172ed[_0xfa02('0x19')](_0x331565)['send'](_0x304565);};}exports[_0xfa02('0x2a')]=function(_0x2b79c0,_0x362a63){var _0x28af63={},_0x3b8582={},_0x1f5702={'count':0x0,'rows':[]};var _0x1e9ead=_[_0xfa02('0x2b')](db['CmHopperBlack'][_0xfa02('0x2c')],function(_0x11d720){return{'name':_0x11d720[_0xfa02('0x2d')],'type':_0x11d720[_0xfa02('0x2e')][_0xfa02('0x2f')]};});_0x3b8582['model']=_[_0xfa02('0x2b')](_0x1e9ead,_0xfa02('0x29'));_0x3b8582[_0xfa02('0x30')]=_['keys'](_0x2b79c0[_0xfa02('0x30')]);_0x3b8582[_0xfa02('0x31')]=_[_0xfa02('0x32')](_0x3b8582[_0xfa02('0x33')],_0x3b8582[_0xfa02('0x30')]);_0x28af63[_0xfa02('0x34')]=_[_0xfa02('0x32')](_0x3b8582['model'],qs['fields'](_0x2b79c0['query'][_0xfa02('0x35')]));_0x28af63[_0xfa02('0x34')]=_0x28af63[_0xfa02('0x34')][_0xfa02('0x36')]?_0x28af63[_0xfa02('0x34')]:_0x3b8582[_0xfa02('0x33')];if(!_0x2b79c0[_0xfa02('0x30')][_0xfa02('0x37')](_0xfa02('0x38'))){_0x28af63['limit']=qs[_0xfa02('0x1c')](_0x2b79c0[_0xfa02('0x30')][_0xfa02('0x1c')]);_0x28af63[_0xfa02('0x1b')]=qs['offset'](_0x2b79c0[_0xfa02('0x30')][_0xfa02('0x1b')]);}_0x28af63[_0xfa02('0x39')]=qs[_0xfa02('0x3a')](_0x2b79c0[_0xfa02('0x30')][_0xfa02('0x3a')]);_0x28af63[_0xfa02('0x3b')]=qs[_0xfa02('0x31')](_[_0xfa02('0x3c')](_0x2b79c0[_0xfa02('0x30')],_0x3b8582[_0xfa02('0x31')]),_0x1e9ead);if(_0x2b79c0[_0xfa02('0x30')][_0xfa02('0x3d')]){_0x28af63[_0xfa02('0x3b')]=_[_0xfa02('0x3e')](_0x28af63[_0xfa02('0x3b')],{'$or':_[_0xfa02('0x2b')](_0x1e9ead,function(_0x464ec5){if(_0x464ec5[_0xfa02('0x2e')]!==_0xfa02('0x3f')){var _0xe103fa={};_0xe103fa[_0x464ec5['name']]={'$like':'%'+_0x2b79c0[_0xfa02('0x30')][_0xfa02('0x3d')]+'%'};return _0xe103fa;}})});}_0x28af63=_[_0xfa02('0x3e')]({},_0x28af63,_0x2b79c0[_0xfa02('0x40')]);var _0x3a3a8d={'where':_0x28af63[_0xfa02('0x3b')]};return db[_0xfa02('0x41')]['count'](_0x3a3a8d)['then'](function(_0x124941){_0x1f5702[_0xfa02('0x1e')]=_0x124941;if(_0x2b79c0['query']['includeAll']){_0x28af63[_0xfa02('0x42')]=[{'all':!![]}];}return db[_0xfa02('0x41')][_0xfa02('0x43')](_0x28af63);})[_0xfa02('0x24')](function(_0x448e7b){_0x1f5702[_0xfa02('0x44')]=_0x448e7b;return _0x1f5702;})[_0xfa02('0x24')](respondWithFilteredResult(_0x362a63,_0x28af63))[_0xfa02('0x45')](handleError(_0x362a63,null));};exports[_0xfa02('0x46')]=function(_0x4ee345,_0xf13aed){var _0x46ed9e={'raw':!![],'where':{'id':_0x4ee345[_0xfa02('0x47')]['id']}},_0x522c3f={};_0x522c3f[_0xfa02('0x33')]=_[_0xfa02('0x48')](db[_0xfa02('0x41')][_0xfa02('0x2c')]);_0x522c3f[_0xfa02('0x30')]=_[_0xfa02('0x48')](_0x4ee345['query']);_0x522c3f[_0xfa02('0x31')]=_[_0xfa02('0x32')](_0x522c3f['model'],_0x522c3f[_0xfa02('0x30')]);_0x46ed9e[_0xfa02('0x34')]=_[_0xfa02('0x32')](_0x522c3f['model'],qs['fields'](_0x4ee345[_0xfa02('0x30')]['fields']));_0x46ed9e[_0xfa02('0x34')]=_0x46ed9e[_0xfa02('0x34')][_0xfa02('0x36')]?_0x46ed9e[_0xfa02('0x34')]:_0x522c3f[_0xfa02('0x33')];if(_0x4ee345[_0xfa02('0x30')]['includeAll']){_0x46ed9e[_0xfa02('0x42')]=[{'all':!![]}];}_0x46ed9e=_[_0xfa02('0x3e')]({},_0x46ed9e,_0x4ee345[_0xfa02('0x40')]);return db[_0xfa02('0x41')]['find'](_0x46ed9e)[_0xfa02('0x24')](handleEntityNotFound(_0xf13aed,null))['then'](respondWithResult(_0xf13aed,null))[_0xfa02('0x45')](handleError(_0xf13aed,null));};exports['update']=function(_0x237a9f,_0x2f2e51){if(_0x237a9f[_0xfa02('0x49')]['id']){delete _0x237a9f[_0xfa02('0x49')]['id'];}return db[_0xfa02('0x41')][_0xfa02('0x4a')]({'where':{'id':_0x237a9f[_0xfa02('0x47')]['id']}})[_0xfa02('0x24')](handleEntityNotFound(_0x2f2e51,null))[_0xfa02('0x24')](saveUpdates(_0x237a9f[_0xfa02('0x49')],null))['then'](respondWithResult(_0x2f2e51,null))[_0xfa02('0x45')](handleError(_0x2f2e51,null));};exports[_0xfa02('0x25')]=function(_0xf9b98b,_0xe75c1f){return db['CmHopperBlack'][_0xfa02('0x4a')]({'where':{'id':_0xf9b98b[_0xfa02('0x47')]['id']}})['then'](handleEntityNotFound(_0xe75c1f,null))[_0xfa02('0x24')](removeEntity(_0xe75c1f,null))[_0xfa02('0x45')](handleError(_0xe75c1f,null));};exports[_0xfa02('0x4b')]=function(_0x34424c,_0x4ebf0d){return db[_0xfa02('0x41')]['describe']()[_0xfa02('0x24')](respondWithResult(_0x4ebf0d,null))[_0xfa02('0x45')](handleError(_0x4ebf0d,null));};
\ No newline at end of file
+var _0x1018=['intersection','fields','nolimit','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','attributes','length','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','CmHopperBlack','fieldName','key','model','map','query','keys','filters'];(function(_0x3ee1aa,_0xd1106e){var _0x4a478c=function(_0x4c6b9d){while(--_0x4c6b9d){_0x3ee1aa['push'](_0x3ee1aa['shift']());}};_0x4a478c(++_0xd1106e);}(_0x1018,0x6a));var _0x8101=function(_0x7ca715,_0x514774){_0x7ca715=_0x7ca715-0x0;var _0x5c2530=_0x1018[_0x7ca715];return _0x5c2530;};'use strict';var emlformat=require(_0x8101('0x0'));var rimraf=require(_0x8101('0x1'));var zipdir=require(_0x8101('0x2'));var jsonpatch=require(_0x8101('0x3'));var rp=require('request-promise');var moment=require(_0x8101('0x4'));var BPromise=require(_0x8101('0x5'));var Mustache=require(_0x8101('0x6'));var util=require(_0x8101('0x7'));var path=require(_0x8101('0x8'));var sox=require(_0x8101('0x9'));var csv=require(_0x8101('0xa'));var ejs=require(_0x8101('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8101('0xc'));var squel=require('squel');var crypto=require(_0x8101('0xd'));var jsforce=require(_0x8101('0xe'));var deskjs=require(_0x8101('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8101('0x10'));var Papa=require(_0x8101('0x11'));var Redis=require(_0x8101('0x12'));var authService=require(_0x8101('0x13'));var qs=require(_0x8101('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8101('0x15'));var logger=require(_0x8101('0x16'))(_0x8101('0x17'));var utils=require(_0x8101('0x18'));var config=require(_0x8101('0x19'));var licenseUtil=require(_0x8101('0x1a'));var db=require(_0x8101('0x1b'))['db'];function respondWithStatusCode(_0x532665,_0x285715){_0x285715=_0x285715||0xcc;return function(_0x3dafe7){if(_0x3dafe7){return _0x532665[_0x8101('0x1c')](_0x285715);}return _0x532665[_0x8101('0x1d')](_0x285715)[_0x8101('0x1e')]();};}function respondWithResult(_0x1853b4,_0x3c2549){_0x3c2549=_0x3c2549||0xc8;return function(_0x341499){if(_0x341499){return _0x1853b4[_0x8101('0x1d')](_0x3c2549)[_0x8101('0x1f')](_0x341499);}};}function respondWithFilteredResult(_0x303782,_0x163ab4){return function(_0x1a2a7a){if(_0x1a2a7a){var _0x1bde52=typeof _0x163ab4[_0x8101('0x20')]===_0x8101('0x21')&&typeof _0x163ab4[_0x8101('0x22')]===_0x8101('0x21');var _0x1f8890=_0x1a2a7a[_0x8101('0x23')];var _0x3673cf=_0x1bde52?0x0:_0x163ab4[_0x8101('0x20')];var _0x28b053=_0x1bde52?_0x1a2a7a['count']:_0x163ab4[_0x8101('0x20')]+_0x163ab4[_0x8101('0x22')];var _0x25d248;if(_0x28b053>=_0x1f8890){_0x28b053=_0x1f8890;_0x25d248=0xc8;}else{_0x25d248=0xce;}_0x303782['status'](_0x25d248);return _0x303782[_0x8101('0x24')](_0x8101('0x25'),_0x3673cf+'-'+_0x28b053+'/'+_0x1f8890)[_0x8101('0x1f')](_0x1a2a7a);}return null;};}function patchUpdates(_0x194f3e){return function(_0x3eac60){try{jsonpatch[_0x8101('0x26')](_0x3eac60,_0x194f3e,!![]);}catch(_0x407d89){return BPromise[_0x8101('0x27')](_0x407d89);}return _0x3eac60[_0x8101('0x28')]();};}function saveUpdates(_0x506f76,_0xc1953c){return function(_0x52cb1c){if(_0x52cb1c){return _0x52cb1c[_0x8101('0x29')](_0x506f76)[_0x8101('0x2a')](function(_0x4b61ac){return _0x4b61ac;});}return null;};}function removeEntity(_0x375fff,_0x2eef01){return function(_0x324502){if(_0x324502){return _0x324502['destroy']()[_0x8101('0x2a')](function(){_0x375fff[_0x8101('0x1d')](0xcc)[_0x8101('0x1e')]();});}};}function handleEntityNotFound(_0x598ab2,_0x1e2d17){return function(_0x4785ba){if(!_0x4785ba){_0x598ab2[_0x8101('0x1c')](0x194);}return _0x4785ba;};}function handleError(_0x21a85f,_0x52ba5f){_0x52ba5f=_0x52ba5f||0x1f4;return function(_0x44c875){logger[_0x8101('0x2b')](_0x44c875[_0x8101('0x2c')]);if(_0x44c875[_0x8101('0x2d')]){delete _0x44c875[_0x8101('0x2d')];}_0x21a85f['status'](_0x52ba5f)[_0x8101('0x2e')](_0x44c875);};}exports[_0x8101('0x2f')]=function(_0x3abe7b,_0xc9415d){var _0xb3a58b={},_0xb70534={},_0x291fc4={'count':0x0,'rows':[]};var _0x4ce7aa=_['map'](db[_0x8101('0x30')]['rawAttributes'],function(_0x326441){return{'name':_0x326441[_0x8101('0x31')],'type':_0x326441['type'][_0x8101('0x32')]};});_0xb70534[_0x8101('0x33')]=_[_0x8101('0x34')](_0x4ce7aa,_0x8101('0x2d'));_0xb70534[_0x8101('0x35')]=_[_0x8101('0x36')](_0x3abe7b[_0x8101('0x35')]);_0xb70534[_0x8101('0x37')]=_[_0x8101('0x38')](_0xb70534['model'],_0xb70534[_0x8101('0x35')]);_0xb3a58b['attributes']=_[_0x8101('0x38')](_0xb70534[_0x8101('0x33')],qs[_0x8101('0x39')](_0x3abe7b[_0x8101('0x35')]['fields']));_0xb3a58b['attributes']=_0xb3a58b['attributes']['length']?_0xb3a58b['attributes']:_0xb70534[_0x8101('0x33')];if(!_0x3abe7b[_0x8101('0x35')]['hasOwnProperty'](_0x8101('0x3a'))){_0xb3a58b[_0x8101('0x22')]=qs[_0x8101('0x22')](_0x3abe7b[_0x8101('0x35')][_0x8101('0x22')]);_0xb3a58b[_0x8101('0x20')]=qs['offset'](_0x3abe7b['query'][_0x8101('0x20')]);}_0xb3a58b['order']=qs[_0x8101('0x3b')](_0x3abe7b[_0x8101('0x35')][_0x8101('0x3b')]);_0xb3a58b[_0x8101('0x3c')]=qs[_0x8101('0x37')](_[_0x8101('0x3d')](_0x3abe7b[_0x8101('0x35')],_0xb70534[_0x8101('0x37')]),_0x4ce7aa);if(_0x3abe7b[_0x8101('0x35')]['filter']){_0xb3a58b[_0x8101('0x3c')]=_['merge'](_0xb3a58b[_0x8101('0x3c')],{'$or':_[_0x8101('0x34')](_0x4ce7aa,function(_0x43c99e){if(_0x43c99e[_0x8101('0x3e')]!==_0x8101('0x3f')){var _0x5de2b8={};_0x5de2b8[_0x43c99e[_0x8101('0x2d')]]={'$like':'%'+_0x3abe7b[_0x8101('0x35')][_0x8101('0x40')]+'%'};return _0x5de2b8;}})});}_0xb3a58b=_[_0x8101('0x41')]({},_0xb3a58b,_0x3abe7b[_0x8101('0x42')]);var _0x2be06e={'where':_0xb3a58b[_0x8101('0x3c')]};return db['CmHopperBlack']['count'](_0x2be06e)[_0x8101('0x2a')](function(_0x581529){_0x291fc4[_0x8101('0x23')]=_0x581529;if(_0x3abe7b['query'][_0x8101('0x43')]){_0xb3a58b[_0x8101('0x44')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x8101('0x45')](_0xb3a58b);})['then'](function(_0x5992e4){_0x291fc4[_0x8101('0x46')]=_0x5992e4;return _0x291fc4;})[_0x8101('0x2a')](respondWithFilteredResult(_0xc9415d,_0xb3a58b))[_0x8101('0x47')](handleError(_0xc9415d,null));};exports[_0x8101('0x48')]=function(_0x53acf2,_0x50e2d4){var _0x330d48={'raw':!![],'where':{'id':_0x53acf2[_0x8101('0x49')]['id']}},_0x19b461={};_0x19b461['model']=_[_0x8101('0x36')](db[_0x8101('0x30')][_0x8101('0x4a')]);_0x19b461[_0x8101('0x35')]=_[_0x8101('0x36')](_0x53acf2[_0x8101('0x35')]);_0x19b461[_0x8101('0x37')]=_['intersection'](_0x19b461['model'],_0x19b461[_0x8101('0x35')]);_0x330d48[_0x8101('0x4b')]=_[_0x8101('0x38')](_0x19b461[_0x8101('0x33')],qs[_0x8101('0x39')](_0x53acf2[_0x8101('0x35')][_0x8101('0x39')]));_0x330d48['attributes']=_0x330d48[_0x8101('0x4b')][_0x8101('0x4c')]?_0x330d48[_0x8101('0x4b')]:_0x19b461[_0x8101('0x33')];if(_0x53acf2[_0x8101('0x35')]['includeAll']){_0x330d48[_0x8101('0x44')]=[{'all':!![]}];}_0x330d48=_['merge']({},_0x330d48,_0x53acf2[_0x8101('0x42')]);return db[_0x8101('0x30')]['find'](_0x330d48)['then'](handleEntityNotFound(_0x50e2d4,null))['then'](respondWithResult(_0x50e2d4,null))['catch'](handleError(_0x50e2d4,null));};exports['update']=function(_0x40bea7,_0x55f974){if(_0x40bea7[_0x8101('0x4d')]['id']){delete _0x40bea7['body']['id'];}return db['CmHopperBlack'][_0x8101('0x4e')]({'where':{'id':_0x40bea7[_0x8101('0x49')]['id']}})[_0x8101('0x2a')](handleEntityNotFound(_0x55f974,null))['then'](saveUpdates(_0x40bea7[_0x8101('0x4d')],null))['then'](respondWithResult(_0x55f974,null))[_0x8101('0x47')](handleError(_0x55f974,null));};exports[_0x8101('0x4f')]=function(_0x1d34ee,_0x4b1d81){return db[_0x8101('0x30')][_0x8101('0x4e')]({'where':{'id':_0x1d34ee['params']['id']}})[_0x8101('0x2a')](handleEntityNotFound(_0x4b1d81,null))[_0x8101('0x2a')](removeEntity(_0x4b1d81,null))[_0x8101('0x47')](handleError(_0x4b1d81,null));};exports[_0x8101('0x50')]=function(_0x4d513d,_0x205f33){return db[_0x8101('0x30')][_0x8101('0x50')]()[_0x8101('0x2a')](respondWithResult(_0x205f33,null))[_0x8101('0x47')](handleError(_0x205f33,null));};
\ No newline at end of file
index 6e19cfc..517eda4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6e1=['../../config/logger','api','moment','request-promise','path','../../config/environment','./cmHopperBlack.attributes','define','CmHopperBlack','lodash','util'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0xa6e1,0x13d));var _0x1a6e=function(_0x30b1ea,_0x32a686){_0x30b1ea=_0x30b1ea-0x0;var _0x4661b1=_0xa6e1[_0x30b1ea];return _0x4661b1;};'use strict';var _=require(_0x1a6e('0x0'));var util=require(_0x1a6e('0x1'));var logger=require(_0x1a6e('0x2'))(_0x1a6e('0x3'));var moment=require(_0x1a6e('0x4'));var BPromise=require('bluebird');var rp=require(_0x1a6e('0x5'));var fs=require('fs');var path=require(_0x1a6e('0x6'));var rimraf=require('rimraf');var config=require(_0x1a6e('0x7'));var attributes=require(_0x1a6e('0x8'));module['exports']=function(_0x1c7875,_0x1ed115){return _0x1c7875[_0x1a6e('0x9')](_0x1a6e('0xa'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c36=['moment','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','CmHopperBlack','lodash','util','../../config/logger','api'];(function(_0x43d4e1,_0x5783b5){var _0x2cd6ef=function(_0x2d1cb2){while(--_0x2d1cb2){_0x43d4e1['push'](_0x43d4e1['shift']());}};_0x2cd6ef(++_0x5783b5);}(_0x9c36,0x104));var _0x69c3=function(_0x34b4c3,_0x610095){_0x34b4c3=_0x34b4c3-0x0;var _0x5e566b=_0x9c36[_0x34b4c3];return _0x5e566b;};'use strict';var _=require(_0x69c3('0x0'));var util=require(_0x69c3('0x1'));var logger=require(_0x69c3('0x2'))(_0x69c3('0x3'));var moment=require(_0x69c3('0x4'));var BPromise=require('bluebird');var rp=require(_0x69c3('0x5'));var fs=require('fs');var path=require(_0x69c3('0x6'));var rimraf=require(_0x69c3('0x7'));var config=require(_0x69c3('0x8'));var attributes=require(_0x69c3('0x9'));module[_0x69c3('0xa')]=function(_0x19e159,_0x3c961e){return _0x19e159['define'](_0x69c3('0xb'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a819285..6da42bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ef=['rpc','client','http','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','map','include','model','attributes','then','UpdateCmHopperBlack','update','body','limit','destroy','DestroyCmHopperBlack','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xa4ef,0x190));var _0xfa4e=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xa4ef[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xfa4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfa4e('0x1'));var rs=require(_0xfa4e('0x2'));var fs=require('fs');var Redis=require(_0xfa4e('0x3'));var db=require(_0xfa4e('0x4'))['db'];var utils=require(_0xfa4e('0x5'));var logger=require(_0xfa4e('0x6'))(_0xfa4e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xfa4e('0x8')][_0xfa4e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x151ff1,_0x3e53b5,_0x1184af){return new BPromise(function(_0x2440b0,_0x4b806f){return client['request'](_0x151ff1,_0x1184af)['then'](function(_0x2d1372){logger['info'](_0xfa4e('0xa'),_0x3e53b5,_0xfa4e('0xb'));logger[_0xfa4e('0xc')](_0xfa4e('0xd'),_0x3e53b5,_0xfa4e('0xb'),JSON[_0xfa4e('0xe')](_0x2d1372));if(_0x2d1372[_0xfa4e('0xf')]){if(_0x2d1372['error']['code']===0x1f4){logger[_0xfa4e('0xf')]('CmHopperBlack,\x20%s,\x20%s',_0x3e53b5,_0x2d1372[_0xfa4e('0xf')][_0xfa4e('0x10')]);return _0x4b806f(_0x2d1372['error'][_0xfa4e('0x10')]);}logger['error'](_0xfa4e('0xa'),_0x3e53b5,_0x2d1372['error'][_0xfa4e('0x10')]);return _0x2440b0(_0x2d1372[_0xfa4e('0xf')]['message']);}else{logger[_0xfa4e('0x11')](_0xfa4e('0xa'),_0x3e53b5,'request\x20sent');_0x2440b0(_0x2d1372[_0xfa4e('0x12')][_0xfa4e('0x10')]);}})[_0xfa4e('0x13')](function(_0x2397b8){logger['error']('CmHopperBlack,\x20%s,\x20%s',_0x3e53b5,_0x2397b8);_0x4b806f(_0x2397b8);});});}exports[_0xfa4e('0x14')]=function(_0x6384c0){var _0x471b09=this;return new Promise(function(_0x382d84,_0x5a7b7c){return db[_0xfa4e('0x15')][_0xfa4e('0x16')]({'raw':_0x6384c0[_0xfa4e('0x17')]?_0x6384c0[_0xfa4e('0x17')][_0xfa4e('0x18')]===undefined?!![]:![]:!![],'where':_0x6384c0['options']?_0x6384c0['options'][_0xfa4e('0x19')]||null:null,'attributes':_0x6384c0[_0xfa4e('0x17')]?_0x6384c0['options']['attributes']||null:null,'limit':_0x6384c0[_0xfa4e('0x17')]?_0x6384c0[_0xfa4e('0x17')]['limit']||null:null,'include':_0x6384c0['options']?_0x6384c0['options']['include']?_[_0xfa4e('0x1a')](_0x6384c0[_0xfa4e('0x17')][_0xfa4e('0x1b')],function(_0x501733){return{'model':db[_0x501733[_0xfa4e('0x1c')]],'as':_0x501733['as'],'attributes':_0x501733[_0xfa4e('0x1d')],'include':_0x501733[_0xfa4e('0x1b')]?_[_0xfa4e('0x1a')](_0x501733[_0xfa4e('0x1b')],function(_0x10438e){return{'model':db[_0x10438e[_0xfa4e('0x1c')]],'as':_0x10438e['as'],'attributes':_0x10438e[_0xfa4e('0x1d')],'include':_0x10438e[_0xfa4e('0x1b')]?_[_0xfa4e('0x1a')](_0x10438e[_0xfa4e('0x1b')],function(_0x57b00b){return{'model':db[_0x57b00b[_0xfa4e('0x1c')]],'as':_0x57b00b['as'],'attributes':_0x57b00b[_0xfa4e('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xfa4e('0x1e')](function(_0x170cf8){logger[_0xfa4e('0x11')](_0xfa4e('0x14'),_0x6384c0);logger['debug'](_0xfa4e('0x14'),_0x6384c0,JSON[_0xfa4e('0xe')](_0x170cf8));_0x382d84(_0x170cf8);})['catch'](function(_0x23486e){logger[_0xfa4e('0xf')]('GetCmHopperBlack',_0x23486e[_0xfa4e('0x10')],_0x6384c0);_0x5a7b7c(_0x471b09[_0xfa4e('0xf')](0x1f4,_0x23486e[_0xfa4e('0x10')]));});});};exports[_0xfa4e('0x1f')]=function(_0x573bcc){var _0x31ace3=this;return new Promise(function(_0x33ddb2,_0x3db136){return db[_0xfa4e('0x15')][_0xfa4e('0x20')](_0x573bcc[_0xfa4e('0x21')],{'raw':_0x573bcc[_0xfa4e('0x17')]?_0x573bcc[_0xfa4e('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x573bcc[_0xfa4e('0x17')]?_0x573bcc[_0xfa4e('0x17')][_0xfa4e('0x19')]||null:null,'attributes':_0x573bcc[_0xfa4e('0x17')]?_0x573bcc[_0xfa4e('0x17')][_0xfa4e('0x1d')]||null:null,'limit':_0x573bcc[_0xfa4e('0x17')]?_0x573bcc[_0xfa4e('0x17')][_0xfa4e('0x22')]||null:null})[_0xfa4e('0x1e')](function(_0xc0a29f){logger['info'](_0xfa4e('0x1f'),_0x573bcc);logger[_0xfa4e('0xc')](_0xfa4e('0x1f'),_0x573bcc,JSON['stringify'](_0xc0a29f));_0x33ddb2(_0xc0a29f);})[_0xfa4e('0x13')](function(_0x5c3fda){logger['error'](_0xfa4e('0x1f'),_0x5c3fda[_0xfa4e('0x10')],_0x573bcc);_0x3db136(_0x31ace3[_0xfa4e('0xf')](0x1f4,_0x5c3fda[_0xfa4e('0x10')]));});});};exports['DestroyCmHopperBlack']=function(_0x5ec494){var _0x1a1800=this;return new Promise(function(_0x2f18f3,_0x43c050){return db[_0xfa4e('0x15')][_0xfa4e('0x23')]({'where':_0x5ec494[_0xfa4e('0x17')]?_0x5ec494[_0xfa4e('0x17')][_0xfa4e('0x19')]||null:null})[_0xfa4e('0x1e')](function(_0x178d70){logger[_0xfa4e('0x11')]('DestroyCmHopperBlack',_0x5ec494);logger[_0xfa4e('0xc')](_0xfa4e('0x24'),_0x5ec494,JSON['stringify'](_0x178d70));_0x2f18f3(_0x178d70);})[_0xfa4e('0x13')](function(_0x5e9329){logger[_0xfa4e('0xf')](_0xfa4e('0x24'),_0x5e9329['message'],_0x5ec494);_0x43c050(_0x1a1800['error'](0x1f4,_0x5e9329[_0xfa4e('0x10')]));});});};
\ No newline at end of file
+var _0x1e8a=['client','request','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','error','message','info','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','stringify','UpdateCmHopperBlack','body','DestroyCmHopperBlack','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x557fd2,_0x2c0a7a){var _0x1b54a2=function(_0x2e439b){while(--_0x2e439b){_0x557fd2['push'](_0x557fd2['shift']());}};_0x1b54a2(++_0x2c0a7a);}(_0x1e8a,0x7c));var _0xa1e8=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x1e8a[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xa1e8('0x0'));var util=require('util');var moment=require(_0xa1e8('0x1'));var BPromise=require('bluebird');var rs=require(_0xa1e8('0x2'));var fs=require('fs');var Redis=require(_0xa1e8('0x3'));var db=require(_0xa1e8('0x4'))['db'];var utils=require(_0xa1e8('0x5'));var logger=require(_0xa1e8('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa1e8('0x7'));var client=jayson[_0xa1e8('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb74144,_0x5a1267,_0x37b216){return new BPromise(function(_0x157c33,_0x142e3e){return client[_0xa1e8('0x9')](_0xb74144,_0x37b216)[_0xa1e8('0xa')](function(_0x10d441){logger['info'](_0xa1e8('0xb'),_0x5a1267,_0xa1e8('0xc'));logger[_0xa1e8('0xd')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x5a1267,_0xa1e8('0xc'),JSON['stringify'](_0x10d441));if(_0x10d441[_0xa1e8('0xe')]){if(_0x10d441[_0xa1e8('0xe')]['code']===0x1f4){logger[_0xa1e8('0xe')](_0xa1e8('0xb'),_0x5a1267,_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);return _0x142e3e(_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);}logger[_0xa1e8('0xe')](_0xa1e8('0xb'),_0x5a1267,_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);return _0x157c33(_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);}else{logger[_0xa1e8('0x10')](_0xa1e8('0xb'),_0x5a1267,_0xa1e8('0xc'));_0x157c33(_0x10d441['result']['message']);}})[_0xa1e8('0x11')](function(_0x7073e9){logger[_0xa1e8('0xe')](_0xa1e8('0xb'),_0x5a1267,_0x7073e9);_0x142e3e(_0x7073e9);});});}exports[_0xa1e8('0x12')]=function(_0xa0bca7){var _0x13f86b=this;return new Promise(function(_0x56b517,_0x294fed){return db[_0xa1e8('0x13')][_0xa1e8('0x14')]({'raw':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7['options'][_0xa1e8('0x16')]===undefined?!![]:![]:!![],'where':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7['options'][_0xa1e8('0x17')]||null:null,'attributes':_0xa0bca7['options']?_0xa0bca7[_0xa1e8('0x15')][_0xa1e8('0x18')]||null:null,'limit':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7['options'][_0xa1e8('0x19')]||null:null,'include':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7[_0xa1e8('0x15')][_0xa1e8('0x1a')]?_[_0xa1e8('0x1b')](_0xa0bca7[_0xa1e8('0x15')][_0xa1e8('0x1a')],function(_0x9a0350){return{'model':db[_0x9a0350['model']],'as':_0x9a0350['as'],'attributes':_0x9a0350[_0xa1e8('0x18')],'include':_0x9a0350[_0xa1e8('0x1a')]?_[_0xa1e8('0x1b')](_0x9a0350[_0xa1e8('0x1a')],function(_0x2966c1){return{'model':db[_0x2966c1[_0xa1e8('0x1c')]],'as':_0x2966c1['as'],'attributes':_0x2966c1[_0xa1e8('0x18')],'include':_0x2966c1[_0xa1e8('0x1a')]?_[_0xa1e8('0x1b')](_0x2966c1[_0xa1e8('0x1a')],function(_0xb19a3b){return{'model':db[_0xb19a3b[_0xa1e8('0x1c')]],'as':_0xb19a3b['as'],'attributes':_0xb19a3b[_0xa1e8('0x18')]};}):[]};}):[]};}):[]:[]})[_0xa1e8('0xa')](function(_0xbc6405){logger['info'](_0xa1e8('0x12'),_0xa0bca7);logger[_0xa1e8('0xd')]('GetCmHopperBlack',_0xa0bca7,JSON[_0xa1e8('0x1d')](_0xbc6405));_0x56b517(_0xbc6405);})[_0xa1e8('0x11')](function(_0x1b782e){logger['error']('GetCmHopperBlack',_0x1b782e[_0xa1e8('0xf')],_0xa0bca7);_0x294fed(_0x13f86b[_0xa1e8('0xe')](0x1f4,_0x1b782e[_0xa1e8('0xf')]));});});};exports[_0xa1e8('0x1e')]=function(_0x709b){var _0xd29986=this;return new Promise(function(_0x1d306b,_0x20cb55){return db[_0xa1e8('0x13')]['update'](_0x709b[_0xa1e8('0x1f')],{'raw':_0x709b[_0xa1e8('0x15')]?_0x709b[_0xa1e8('0x15')][_0xa1e8('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x709b[_0xa1e8('0x15')]?_0x709b[_0xa1e8('0x15')][_0xa1e8('0x17')]||null:null,'attributes':_0x709b['options']?_0x709b['options']['attributes']||null:null,'limit':_0x709b[_0xa1e8('0x15')]?_0x709b[_0xa1e8('0x15')][_0xa1e8('0x19')]||null:null})[_0xa1e8('0xa')](function(_0x4a774a){logger[_0xa1e8('0x10')]('UpdateCmHopperBlack',_0x709b);logger['debug'](_0xa1e8('0x1e'),_0x709b,JSON[_0xa1e8('0x1d')](_0x4a774a));_0x1d306b(_0x4a774a);})['catch'](function(_0x24d5dc){logger['error'](_0xa1e8('0x1e'),_0x24d5dc['message'],_0x709b);_0x20cb55(_0xd29986[_0xa1e8('0xe')](0x1f4,_0x24d5dc[_0xa1e8('0xf')]));});});};exports[_0xa1e8('0x20')]=function(_0x1918d6){var _0x7438f2=this;return new Promise(function(_0x3c81c4,_0x2a3566){return db[_0xa1e8('0x13')]['destroy']({'where':_0x1918d6[_0xa1e8('0x15')]?_0x1918d6[_0xa1e8('0x15')][_0xa1e8('0x17')]||null:null})[_0xa1e8('0xa')](function(_0x3135dc){logger[_0xa1e8('0x10')](_0xa1e8('0x20'),_0x1918d6);logger[_0xa1e8('0xd')]('DestroyCmHopperBlack',_0x1918d6,JSON[_0xa1e8('0x1d')](_0x3135dc));_0x3c81c4(_0x3135dc);})[_0xa1e8('0x11')](function(_0x49265e){logger[_0xa1e8('0xe')]('DestroyCmHopperBlack',_0x49265e['message'],_0x1918d6);_0x2a3566(_0x7438f2['error'](0x1f4,_0x49265e[_0xa1e8('0xf')]));});});};
\ No newline at end of file
index 5490c7e..4f39577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c6=['delete','util','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','/:id','update'];(function(_0x28250b,_0x1adcfd){var _0x3c2e96=function(_0x4961f4){while(--_0x4961f4){_0x28250b['push'](_0x28250b['shift']());}};_0x3c2e96(++_0x1adcfd);}(_0x81c6,0x1d5));var _0x681c=function(_0x4e1ecc,_0x4497cf){_0x4e1ecc=_0x4e1ecc-0x0;var _0x5d9775=_0x81c6[_0x4e1ecc];return _0x5d9775;};'use strict';var multer=require('multer');var util=require(_0x681c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x681c('0x1')]();var fs_extra=require(_0x681c('0x2'));var auth=require(_0x681c('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x681c('0x4'));var controller=require(_0x681c('0x5'));router[_0x681c('0x6')]('/',auth[_0x681c('0x7')](),controller['index']);router[_0x681c('0x6')](_0x681c('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0x681c('0x6')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['show']);router['put'](_0x681c('0x9'),auth['isAuthenticated'](),controller[_0x681c('0xa')]);router[_0x681c('0xb')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0295=['exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','put','update','delete','destroy'];(function(_0xa0a978,_0x4b6956){var _0x4607f0=function(_0x20d09a){while(--_0x20d09a){_0xa0a978['push'](_0xa0a978['shift']());}};_0x4607f0(++_0x4b6956);}(_0x0295,0x1f0));var _0x5029=function(_0x4a83f4,_0x50f589){_0x4a83f4=_0x4a83f4-0x0;var _0x1fc810=_0x0295[_0x4a83f4];return _0x1fc810;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x5029('0x7')]('/:id',auth[_0x5029('0x8')](),controller['show']);router[_0x5029('0xa')]('/:id',auth[_0x5029('0x8')](),controller[_0x5029('0xb')]);router[_0x5029('0xc')]('/:id',auth[_0x5029('0x8')](),controller[_0x5029('0xd')]);module[_0x5029('0xe')]=router;
\ No newline at end of file
index 9249772..655a3e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5fd=['seconds','dispositionat','BOOLEAN','sequelize','moment','exports','STRING','DATE','INTEGER','setDataValue','followuptime'];(function(_0x48360c,_0x252e4b){var _0x1ecf4e=function(_0x4397b0){while(--_0x4397b0){_0x48360c['push'](_0x48360c['shift']());}};_0x1ecf4e(++_0x252e4b);}(_0xf5fd,0x9d));var _0xdf5f=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0xf5fd[_0x29d915];return _0x160f86;};'use strict';var Sequelize=require(_0xdf5f('0x0'));var moment=require(_0xdf5f('0x1'));module[_0xdf5f('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xdf5f('0x3')]},'scheduledat':{'type':Sequelize[_0xdf5f('0x4')]},'countbusyretry':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xdf5f('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xdf5f('0x3')]},'originatecalleridname':{'type':Sequelize[_0xdf5f('0x3')]},'calleridnum':{'type':Sequelize[_0xdf5f('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xdf5f('0x4')]},'responsetime':{'type':Sequelize[_0xdf5f('0x4')]},'answertime':{'type':Sequelize[_0xdf5f('0x4')]},'droptime':{'type':Sequelize[_0xdf5f('0x4')]},'endtime':{'type':Sequelize[_0xdf5f('0x4')]},'ringtime':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xdf5f('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xdf5f('0x3')]},'membername':{'type':Sequelize[_0xdf5f('0x3')]},'reason':{'type':Sequelize[_0xdf5f('0x3')]},'disposition':{'type':Sequelize[_0xdf5f('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xdf5f('0x3')]},'dispositionat':{'type':Sequelize[_0xdf5f('0x4')],'set':function(_0x4d7927){var _0x1251fa=this['getDataValue']('endtime');if(_0x1251fa&&_0x4d7927){this[_0xdf5f('0x6')](_0xdf5f('0x7'),moment(_0x4d7927)['diff'](moment(_0x1251fa),_0xdf5f('0x8')));}return this[_0xdf5f('0x6')](_0xdf5f('0x9'),_0x4d7927);}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xdf5f('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xdf5f('0x4')]},'callback':{'type':Sequelize[_0xdf5f('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xdf5f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xdf5f('0x4')]},'deleted':{'type':Sequelize[_0xdf5f('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xdf5f('0x4')]},'recallme':{'type':Sequelize[_0xdf5f('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xdf5f('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xdf5f('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd9ab=['endtime','diff','seconds','setDataValue','dispositionat','BOOLEAN','sequelize','exports','INTEGER','STRING','DATE'];(function(_0x40ebff,_0x1dd15e){var _0x40122a=function(_0xae6174){while(--_0xae6174){_0x40ebff['push'](_0x40ebff['shift']());}};_0x40122a(++_0x1dd15e);}(_0xd9ab,0x10e));var _0xbd9a=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xd9ab[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require(_0xbd9a('0x0'));var moment=require('moment');module[_0xbd9a('0x1')]={'state':{'type':Sequelize[_0xbd9a('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xbd9a('0x3')]},'scheduledat':{'type':Sequelize[_0xbd9a('0x4')]},'countbusyretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xbd9a('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xbd9a('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xbd9a('0x3')]},'starttime':{'type':Sequelize[_0xbd9a('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xbd9a('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xbd9a('0x4')]},'ringtime':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xbd9a('0x3')]},'campaign':{'type':Sequelize[_0xbd9a('0x3')]},'campaigntype':{'type':Sequelize[_0xbd9a('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xbd9a('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xbd9a('0x3')]},'dispositionat':{'type':Sequelize[_0xbd9a('0x4')],'set':function(_0x49317c){var _0x55f3d2=this['getDataValue'](_0xbd9a('0x5'));if(_0x55f3d2&&_0x49317c){this['setDataValue']('followuptime',moment(_0x49317c)[_0xbd9a('0x6')](moment(_0x55f3d2),_0xbd9a('0x7')));}return this[_0xbd9a('0x8')](_0xbd9a('0x9'),_0x49317c);}},'amd':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xbd9a('0x4')]},'callback':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xbd9a('0x4')]},'deleted':{'type':Sequelize[_0xbd9a('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xbd9a('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xbd9a('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index aaf62e7..139e680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['length','nolimit','order','where','filters','filter','merge','VIRTUAL','includeAll','catch','show','params','rawAttributes','options','body','uniqueid','find','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','noAnswerContacts','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','findAll','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','into','cm_hopper','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','phone','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','from','cm_hopper_final','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','VoiceQueueId\x20=\x20?','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','fromQuery','CampaignId','CampaignId\x20=\x20?','checkContactHopper','CmHopper','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','error','name','send','index','map','CmHopperFinal','fieldName','type','key','query','keys','intersection','model','attributes','fields'];(function(_0x4f1ee6,_0x3a0ac1){var _0x331ef3=function(_0x2ca0dd){while(--_0x2ca0dd){_0x4f1ee6['push'](_0x4f1ee6['shift']());}};_0x331ef3(++_0x3a0ac1);}(_0x781d,0x14a));var _0xd781=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x781d[_0x618414];return _0x21c19a;};'use strict';var emlformat=require(_0xd781('0x0'));var rimraf=require(_0xd781('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd781('0x2'));var moment=require(_0xd781('0x3'));var BPromise=require(_0xd781('0x4'));var Mustache=require(_0xd781('0x5'));var util=require(_0xd781('0x6'));var path=require(_0xd781('0x7'));var sox=require(_0xd781('0x8'));var csv=require(_0xd781('0x9'));var ejs=require(_0xd781('0xa'));var fs=require('fs');var fs_extra=require(_0xd781('0xb'));var _=require('lodash');var squel=require(_0xd781('0xc'));var crypto=require(_0xd781('0xd'));var jsforce=require(_0xd781('0xe'));var deskjs=require(_0xd781('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd781('0x10'));var Papa=require('papaparse');var Redis=require(_0xd781('0x11'));var authService=require(_0xd781('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd781('0x13'));var hardwareService=require(_0xd781('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd781('0x15'));var config=require(_0xd781('0x16'));var licenseUtil=require(_0xd781('0x17'));var db=require(_0xd781('0x18'))['db'];function respondWithStatusCode(_0xbea78b,_0x1f2f1e){_0x1f2f1e=_0x1f2f1e||0xcc;return function(_0xc7758f){if(_0xc7758f){return _0xbea78b[_0xd781('0x19')](_0x1f2f1e);}return _0xbea78b[_0xd781('0x1a')](_0x1f2f1e)[_0xd781('0x1b')]();};}function respondWithResult(_0xd454e7,_0x587953){_0x587953=_0x587953||0xc8;return function(_0x477bdc){if(_0x477bdc){return _0xd454e7[_0xd781('0x1a')](_0x587953)['json'](_0x477bdc);}};}function respondWithFilteredResult(_0x3a1f48,_0x48bffc){return function(_0x294e5a){if(_0x294e5a){var _0x22d787=typeof _0x48bffc[_0xd781('0x1c')]===_0xd781('0x1d')&&typeof _0x48bffc[_0xd781('0x1e')]===_0xd781('0x1d');var _0x501b0d=_0x294e5a['count'];var _0x1407fc=_0x22d787?0x0:_0x48bffc[_0xd781('0x1c')];var _0x395d9c=_0x22d787?_0x294e5a[_0xd781('0x1f')]:_0x48bffc[_0xd781('0x1c')]+_0x48bffc[_0xd781('0x1e')];var _0x260aa8;if(_0x395d9c>=_0x501b0d){_0x395d9c=_0x501b0d;_0x260aa8=0xc8;}else{_0x260aa8=0xce;}_0x3a1f48[_0xd781('0x1a')](_0x260aa8);return _0x3a1f48['set'](_0xd781('0x20'),_0x1407fc+'-'+_0x395d9c+'/'+_0x501b0d)[_0xd781('0x21')](_0x294e5a);}return null;};}function patchUpdates(_0x1036d3){return function(_0x103758){try{jsonpatch[_0xd781('0x22')](_0x103758,_0x1036d3,!![]);}catch(_0x274665){return BPromise[_0xd781('0x23')](_0x274665);}return _0x103758['save']();};}function saveUpdates(_0xe0c65f,_0x4e2c56){return function(_0x567fdf){if(_0x567fdf){return _0x567fdf[_0xd781('0x24')](_0xe0c65f)['then'](function(_0x175ba6){return _0x175ba6;});}return null;};}function removeEntity(_0x101480,_0x395087){return function(_0x31bf57){if(_0x31bf57){return _0x31bf57[_0xd781('0x25')]()[_0xd781('0x26')](function(){_0x101480[_0xd781('0x1a')](0xcc)[_0xd781('0x1b')]();});}};}function handleEntityNotFound(_0x10940b,_0x5662db){return function(_0x529ca1){if(!_0x529ca1){_0x10940b[_0xd781('0x19')](0x194);}return _0x529ca1;};}function handleError(_0x849587,_0xdad0b1){_0xdad0b1=_0xdad0b1||0x1f4;return function(_0x57b41e){logger[_0xd781('0x27')](_0x57b41e['stack']);if(_0x57b41e['name']){delete _0x57b41e[_0xd781('0x28')];}_0x849587['status'](_0xdad0b1)[_0xd781('0x29')](_0x57b41e);};}exports[_0xd781('0x2a')]=function(_0x5c3848,_0x5b6b9d){var _0x43cc74={},_0x5b0464={},_0x296a0b={'count':0x0,'rows':[]};var _0x4a3bd3=_[_0xd781('0x2b')](db[_0xd781('0x2c')]['rawAttributes'],function(_0x54521e){return{'name':_0x54521e[_0xd781('0x2d')],'type':_0x54521e[_0xd781('0x2e')][_0xd781('0x2f')]};});_0x5b0464['model']=_['map'](_0x4a3bd3,_0xd781('0x28'));_0x5b0464[_0xd781('0x30')]=_[_0xd781('0x31')](_0x5c3848['query']);_0x5b0464['filters']=_[_0xd781('0x32')](_0x5b0464[_0xd781('0x33')],_0x5b0464['query']);_0x43cc74[_0xd781('0x34')]=_[_0xd781('0x32')](_0x5b0464['model'],qs[_0xd781('0x35')](_0x5c3848[_0xd781('0x30')][_0xd781('0x35')]));_0x43cc74[_0xd781('0x34')]=_0x43cc74['attributes'][_0xd781('0x36')]?_0x43cc74[_0xd781('0x34')]:_0x5b0464[_0xd781('0x33')];if(!_0x5c3848[_0xd781('0x30')]['hasOwnProperty'](_0xd781('0x37'))){_0x43cc74[_0xd781('0x1e')]=qs['limit'](_0x5c3848[_0xd781('0x30')]['limit']);_0x43cc74[_0xd781('0x1c')]=qs[_0xd781('0x1c')](_0x5c3848['query'][_0xd781('0x1c')]);}_0x43cc74[_0xd781('0x38')]=qs['sort'](_0x5c3848[_0xd781('0x30')]['sort']);_0x43cc74[_0xd781('0x39')]=qs[_0xd781('0x3a')](_['pick'](_0x5c3848[_0xd781('0x30')],_0x5b0464[_0xd781('0x3a')]),_0x4a3bd3);if(_0x5c3848['query'][_0xd781('0x3b')]){_0x43cc74[_0xd781('0x39')]=_[_0xd781('0x3c')](_0x43cc74['where'],{'$or':_[_0xd781('0x2b')](_0x4a3bd3,function(_0x22b94e){if(_0x22b94e[_0xd781('0x2e')]!==_0xd781('0x3d')){var _0x2e8218={};_0x2e8218[_0x22b94e[_0xd781('0x28')]]={'$like':'%'+_0x5c3848[_0xd781('0x30')][_0xd781('0x3b')]+'%'};return _0x2e8218;}})});}_0x43cc74=_[_0xd781('0x3c')]({},_0x43cc74,_0x5c3848['options']);var _0x2a60d6={'where':_0x43cc74['where']};return db[_0xd781('0x2c')][_0xd781('0x1f')](_0x2a60d6)['then'](function(_0x1a5833){_0x296a0b[_0xd781('0x1f')]=_0x1a5833;if(_0x5c3848[_0xd781('0x30')][_0xd781('0x3e')]){_0x43cc74['include']=[{'all':!![]}];}return db[_0xd781('0x2c')]['findAll'](_0x43cc74);})[_0xd781('0x26')](function(_0xcdaacf){_0x296a0b['rows']=_0xcdaacf;return _0x296a0b;})['then'](respondWithFilteredResult(_0x5b6b9d,_0x43cc74))[_0xd781('0x3f')](handleError(_0x5b6b9d,null));};exports[_0xd781('0x40')]=function(_0x15b49d,_0x23bbab){var _0x53aba6={'raw':!![],'where':{'id':_0x15b49d[_0xd781('0x41')]['id']}},_0x46e7f6={};_0x46e7f6['model']=_['keys'](db[_0xd781('0x2c')][_0xd781('0x42')]);_0x46e7f6[_0xd781('0x30')]=_['keys'](_0x15b49d['query']);_0x46e7f6[_0xd781('0x3a')]=_[_0xd781('0x32')](_0x46e7f6[_0xd781('0x33')],_0x46e7f6[_0xd781('0x30')]);_0x53aba6[_0xd781('0x34')]=_[_0xd781('0x32')](_0x46e7f6['model'],qs['fields'](_0x15b49d[_0xd781('0x30')][_0xd781('0x35')]));_0x53aba6[_0xd781('0x34')]=_0x53aba6[_0xd781('0x34')][_0xd781('0x36')]?_0x53aba6['attributes']:_0x46e7f6[_0xd781('0x33')];if(_0x15b49d[_0xd781('0x30')][_0xd781('0x3e')]){_0x53aba6['include']=[{'all':!![]}];}_0x53aba6=_[_0xd781('0x3c')]({},_0x53aba6,_0x15b49d[_0xd781('0x43')]);return db[_0xd781('0x2c')]['find'](_0x53aba6)[_0xd781('0x26')](handleEntityNotFound(_0x23bbab,null))[_0xd781('0x26')](respondWithResult(_0x23bbab,null))['catch'](handleError(_0x23bbab,null));};exports['describe']=function(_0x13a907,_0x16d16e){return db[_0xd781('0x2c')]['describe']()[_0xd781('0x26')](respondWithResult(_0x16d16e,null))[_0xd781('0x3f')](handleError(_0x16d16e,null));};exports[_0xd781('0x24')]=function(_0x39ecdb,_0x336d30){if(_0x39ecdb[_0xd781('0x44')][_0xd781('0x45')]){delete _0x39ecdb['body'][_0xd781('0x45')];}return db[_0xd781('0x2c')][_0xd781('0x46')]({'where':{'uniqueid':_0x39ecdb['params']['id']}})[_0xd781('0x26')](handleEntityNotFound(_0x336d30,null))[_0xd781('0x26')](saveUpdates(_0x39ecdb['body'],null))[_0xd781('0x26')](respondWithResult(_0x336d30,null))[_0xd781('0x3f')](handleError(_0x336d30,null));};exports[_0xd781('0x47')]=function(_0x207546,_0x42a2f9,_0x599915){return db[_0xd781('0x2c')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x207546[_0xd781('0x41')]['id']},'attributes':[[db['sequelize']['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db['sequelize'][_0xd781('0x4a')]('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db['sequelize']['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db['sequelize'][_0xd781('0x4a')]('`state`\x20=\x203,\x201,\x20null'))),_0xd781('0x4b')],[db[_0xd781('0x49')]['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db['sequelize'][_0xd781('0x4a')]('`state`\x20=\x205,\x201,\x20null'))),_0xd781('0x4c')],[db['sequelize']['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db['sequelize'][_0xd781('0x4a')](_0xd781('0x4d')))),_0xd781('0x4e')],[db[_0xd781('0x49')]['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db['sequelize']['literal'](_0xd781('0x4f')))),_0xd781('0x50')],[db[_0xd781('0x49')]['fn'](_0xd781('0x48'),db['sequelize']['fn']('IF',db[_0xd781('0x49')]['literal'](_0xd781('0x51')))),_0xd781('0x52')],[db[_0xd781('0x49')]['fn'](_0xd781('0x48'),db['sequelize']['fn']('IF',db['sequelize'][_0xd781('0x4a')]('`state`\x20=\x2022,\x201,\x20null'))),_0xd781('0x53')],[db[_0xd781('0x49')]['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db[_0xd781('0x49')]['literal'](_0xd781('0x54')))),_0xd781('0x55')]]})['then'](handleEntityNotFound(_0x42a2f9,null))[_0xd781('0x26')](respondWithResult(_0x42a2f9,null))[_0xd781('0x3f')](handleError(_0x42a2f9,null));};exports[_0xd781('0x56')]=function(_0x2c4874,_0x2e8bab,_0x38bd3e){return db[_0xd781('0x2c')][_0xd781('0x57')]({'raw':![],'where':{'CampaignId':_0x2c4874[_0xd781('0x41')]['id']},'attributes':[[db[_0xd781('0x49')]['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db[_0xd781('0x49')][_0xd781('0x4a')](_0xd781('0x58')))),_0xd781('0x59')],[db[_0xd781('0x49')]['fn']('COUNT',db[_0xd781('0x49')]['fn']('IF',db[_0xd781('0x49')][_0xd781('0x4a')](_0xd781('0x5a')))),_0xd781('0x4b')],[db['sequelize']['fn']('COUNT',db[_0xd781('0x49')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x205,\x201,\x20null'))),'busyContacts'],[db[_0xd781('0x49')]['fn']('COUNT',db[_0xd781('0x49')]['fn']('IF',db[_0xd781('0x49')][_0xd781('0x4a')](_0xd781('0x4d')))),_0xd781('0x4e')],[db['sequelize']['fn'](_0xd781('0x48'),db[_0xd781('0x49')]['fn']('IF',db[_0xd781('0x49')][_0xd781('0x4a')](_0xd781('0x4f')))),_0xd781('0x50')],[db['sequelize']['fn']('COUNT',db[_0xd781('0x49')]['fn']('IF',db['sequelize'][_0xd781('0x4a')](_0xd781('0x51')))),_0xd781('0x52')],[db[_0xd781('0x49')]['fn']('COUNT',db[_0xd781('0x49')]['fn']('IF',db[_0xd781('0x49')][_0xd781('0x4a')](_0xd781('0x5b')))),_0xd781('0x53')],[db['sequelize']['fn'](_0xd781('0x48'),db['sequelize']['fn']('IF',db[_0xd781('0x49')][_0xd781('0x4a')]('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0xd781('0x26')](handleEntityNotFound(_0x2e8bab,null))[_0xd781('0x26')](respondWithResult(_0x2e8bab,null))[_0xd781('0x3f')](handleError(_0x2e8bab,null));};exports[_0xd781('0x5c')]=function(_0x26a0a9,_0x172a05,_0x2e0401){return db[_0xd781('0x5d')][_0xd781('0x46')]({'where':{'id':_0x26a0a9['params']['id']}})[_0xd781('0x26')](handleEntityNotFound(_0x172a05,null))[_0xd781('0x26')](function(_0x4c712f){var _0x24e3f5;if(_0x4c712f){_0x24e3f5=squel['insert']()[_0xd781('0x5e')](_0xd781('0x5f'))['fromQuery'](['phone',_0xd781('0x60'),_0xd781('0x61'),_0xd781('0x62'),_0xd781('0x63'),_0xd781('0x64'),_0xd781('0x65')],squel['select']()[_0xd781('0x66')](_0xd781('0x67'),_0xd781('0x68'))[_0xd781('0x66')](_0xd781('0x69'),_0xd781('0x60'))[_0xd781('0x66')](_0xd781('0x6a'),_0xd781('0x61'))[_0xd781('0x66')](_0xd781('0x6b'),'ListId')[_0xd781('0x66')]('ANY_VALUE(VoiceQueueId)',_0xd781('0x63'))[_0xd781('0x66')](_0xd781('0x69'),_0xd781('0x64'))[_0xd781('0x66')](_0xd781('0x69'),_0xd781('0x65'))[_0xd781('0x6c')](_0xd781('0x6d'))[_0xd781('0x39')]('VoiceQueueId\x20=\x20?',_0x26a0a9[_0xd781('0x41')]['id'][_0xd781('0x6e')]())['where'](_0xd781('0x6f'),_0x26a0a9[_0xd781('0x44')][_0xd781('0x70')]['toString']())['where'](_0xd781('0x71'))['where'](_0xd781('0x72'),squel[_0xd781('0x73')]()[_0xd781('0x66')](_0xd781('0x68'))[_0xd781('0x6c')]('cm_hopper')[_0xd781('0x39')](_0xd781('0x74'),_0x26a0a9[_0xd781('0x41')]['id'][_0xd781('0x6e')]()))[_0xd781('0x39')](_0xd781('0x72'),squel[_0xd781('0x73')]()[_0xd781('0x66')](_0xd781('0x75'))[_0xd781('0x6c')](_0xd781('0x6d'))['where'](_0xd781('0x74'),_0x26a0a9[_0xd781('0x41')]['id']['toString']())[_0xd781('0x39')](_0xd781('0x76')))[_0xd781('0x77')]('ContactId'))[_0xd781('0x6e')]();return db[_0xd781('0x49')]['query'](_0x24e3f5);}return[];})[_0xd781('0x26')](respondWithResult(_0x172a05,null))['catch'](handleError(_0x172a05,null));};exports[_0xd781('0x78')]=function(_0x23dba5,_0x3e0749,_0x192c95){return db[_0xd781('0x79')]['find']({'where':{'id':_0x23dba5[_0xd781('0x41')]['id']}})[_0xd781('0x26')](handleEntityNotFound(_0x3e0749,null))[_0xd781('0x26')](function(_0x3897bf){var _0xaa945b;if(_0x3897bf){_0xaa945b=squel[_0xd781('0x7a')]()['into'](_0xd781('0x5f'))[_0xd781('0x7b')](['phone',_0xd781('0x60'),_0xd781('0x61'),'ListId',_0xd781('0x7c'),_0xd781('0x64'),_0xd781('0x65')],squel[_0xd781('0x73')]()[_0xd781('0x66')]('ANY_VALUE(calleridnum)','phone')['field'](_0xd781('0x69'),_0xd781('0x60'))[_0xd781('0x66')](_0xd781('0x6a'),_0xd781('0x61'))[_0xd781('0x66')](_0xd781('0x6b'),_0xd781('0x62'))[_0xd781('0x66')]('ANY_VALUE(CampaignId)',_0xd781('0x7c'))[_0xd781('0x66')](_0xd781('0x69'),_0xd781('0x64'))[_0xd781('0x66')]('NOW()','updatedAt')['from'](_0xd781('0x6d'))['where'](_0xd781('0x7d'),_0x23dba5[_0xd781('0x41')]['id']['toString']())['where'](_0xd781('0x6f'),_0x23dba5[_0xd781('0x44')][_0xd781('0x70')][_0xd781('0x6e')]())['where'](_0xd781('0x71'))[_0xd781('0x39')](_0xd781('0x72'),squel[_0xd781('0x73')]()[_0xd781('0x66')]('phone')[_0xd781('0x6c')](_0xd781('0x5f'))['where'](_0xd781('0x7d'),_0x23dba5[_0xd781('0x41')]['id'][_0xd781('0x6e')]()))[_0xd781('0x39')](_0xd781('0x72'),squel[_0xd781('0x73')]()[_0xd781('0x66')](_0xd781('0x75'))['from']('cm_hopper_final')[_0xd781('0x39')](_0xd781('0x7d'),_0x23dba5['params']['id'][_0xd781('0x6e')]())[_0xd781('0x39')]('state\x20=\x204'))[_0xd781('0x77')](_0xd781('0x61')))['toString']();return db[_0xd781('0x49')]['query'](_0xaa945b);}return[];})[_0xd781('0x26')](respondWithResult(_0x3e0749,null))[_0xd781('0x3f')](handleError(_0x3e0749,null));};exports[_0xd781('0x7e')]=function(_0x52b9c6,_0x5a2252,_0x356c56){return db[_0xd781('0x7f')]['findOne']({'where':{'VoiceQueueId':_0x52b9c6[_0xd781('0x44')][_0xd781('0x63')],'CampaignId':_0x52b9c6[_0xd781('0x44')][_0xd781('0x7c')],'ContactId':_0x52b9c6[_0xd781('0x44')][_0xd781('0x61')]}})[_0xd781('0x26')](handleEntityNotFound(_0x5a2252,null))[_0xd781('0x26')](function(_0x532fd8){if(_0x532fd8){return _0x532fd8;}return null;})[_0xd781('0x26')](respondWithResult(_0x5a2252,null))[_0xd781('0x3f')](handleError(_0x5a2252,null));};
\ No newline at end of file
+var _0x33af=['end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','order','sort','where','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','length','include','describe','body','uniqueid','find','countContactsQueueCampaignHopperFinal','COUNT','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','noAnswerContacts','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','cm_hopper','phone','scheduledAt','ContactId','ListId','VoiceQueueId','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','createdAt','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','insert','fromQuery','CampaignId','ANY_VALUE(ListId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x45ef38,_0xaa7c71){var _0x2f9db5=function(_0x193151){while(--_0x193151){_0x45ef38['push'](_0x45ef38['shift']());}};_0x2f9db5(++_0xaa7c71);}(_0x33af,0xec));var _0xf33a=function(_0x197115,_0x14d69a){_0x197115=_0x197115-0x0;var _0x19d830=_0x33af[_0x197115];return _0x19d830;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf33a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf33a('0x1'));var rp=require(_0xf33a('0x2'));var moment=require(_0xf33a('0x3'));var BPromise=require(_0xf33a('0x4'));var Mustache=require(_0xf33a('0x5'));var util=require(_0xf33a('0x6'));var path=require('path');var sox=require(_0xf33a('0x7'));var csv=require(_0xf33a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf33a('0x9'));var _=require(_0xf33a('0xa'));var squel=require(_0xf33a('0xb'));var crypto=require(_0xf33a('0xc'));var jsforce=require(_0xf33a('0xd'));var deskjs=require(_0xf33a('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf33a('0xf'));var Papa=require(_0xf33a('0x10'));var Redis=require(_0xf33a('0x11'));var authService=require(_0xf33a('0x12'));var qs=require(_0xf33a('0x13'));var as=require(_0xf33a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf33a('0x15'));var utils=require(_0xf33a('0x16'));var config=require(_0xf33a('0x17'));var licenseUtil=require(_0xf33a('0x18'));var db=require(_0xf33a('0x19'))['db'];function respondWithStatusCode(_0x5959c9,_0x9f87bc){_0x9f87bc=_0x9f87bc||0xcc;return function(_0x21b80e){if(_0x21b80e){return _0x5959c9['sendStatus'](_0x9f87bc);}return _0x5959c9['status'](_0x9f87bc)[_0xf33a('0x1a')]();};}function respondWithResult(_0x1b3bf0,_0x17043){_0x17043=_0x17043||0xc8;return function(_0x153bda){if(_0x153bda){return _0x1b3bf0[_0xf33a('0x1b')](_0x17043)[_0xf33a('0x1c')](_0x153bda);}};}function respondWithFilteredResult(_0x45e311,_0x1f2b1b){return function(_0x507cb9){if(_0x507cb9){var _0x441f59=typeof _0x1f2b1b['offset']===_0xf33a('0x1d')&&typeof _0x1f2b1b[_0xf33a('0x1e')]==='undefined';var _0x37e76c=_0x507cb9[_0xf33a('0x1f')];var _0x524109=_0x441f59?0x0:_0x1f2b1b[_0xf33a('0x20')];var _0x23d9e2=_0x441f59?_0x507cb9[_0xf33a('0x1f')]:_0x1f2b1b[_0xf33a('0x20')]+_0x1f2b1b['limit'];var _0x11efa0;if(_0x23d9e2>=_0x37e76c){_0x23d9e2=_0x37e76c;_0x11efa0=0xc8;}else{_0x11efa0=0xce;}_0x45e311[_0xf33a('0x1b')](_0x11efa0);return _0x45e311[_0xf33a('0x21')](_0xf33a('0x22'),_0x524109+'-'+_0x23d9e2+'/'+_0x37e76c)[_0xf33a('0x1c')](_0x507cb9);}return null;};}function patchUpdates(_0x6cdf7b){return function(_0x19986f){try{jsonpatch[_0xf33a('0x23')](_0x19986f,_0x6cdf7b,!![]);}catch(_0x19055e){return BPromise[_0xf33a('0x24')](_0x19055e);}return _0x19986f['save']();};}function saveUpdates(_0x3854b4,_0x272e60){return function(_0x1bf9bc){if(_0x1bf9bc){return _0x1bf9bc[_0xf33a('0x25')](_0x3854b4)[_0xf33a('0x26')](function(_0x51d3fd){return _0x51d3fd;});}return null;};}function removeEntity(_0x44654c,_0x5882ba){return function(_0x492986){if(_0x492986){return _0x492986[_0xf33a('0x27')]()[_0xf33a('0x26')](function(){_0x44654c[_0xf33a('0x1b')](0xcc)[_0xf33a('0x1a')]();});}};}function handleEntityNotFound(_0x4b9801,_0x57cb1d){return function(_0x393005){if(!_0x393005){_0x4b9801['sendStatus'](0x194);}return _0x393005;};}function handleError(_0x4af24a,_0x16ef31){_0x16ef31=_0x16ef31||0x1f4;return function(_0x5f0a53){logger['error'](_0x5f0a53[_0xf33a('0x28')]);if(_0x5f0a53['name']){delete _0x5f0a53[_0xf33a('0x29')];}_0x4af24a['status'](_0x16ef31)[_0xf33a('0x2a')](_0x5f0a53);};}exports[_0xf33a('0x2b')]=function(_0x469741,_0x729fca){var _0x4552c9={},_0x3068a9={},_0x1d19ee={'count':0x0,'rows':[]};var _0x1246ff=_[_0xf33a('0x2c')](db[_0xf33a('0x2d')][_0xf33a('0x2e')],function(_0x8f8ddc){return{'name':_0x8f8ddc[_0xf33a('0x2f')],'type':_0x8f8ddc[_0xf33a('0x30')][_0xf33a('0x31')]};});_0x3068a9['model']=_[_0xf33a('0x2c')](_0x1246ff,_0xf33a('0x29'));_0x3068a9[_0xf33a('0x32')]=_[_0xf33a('0x33')](_0x469741['query']);_0x3068a9[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x3068a9[_0xf33a('0x36')],_0x3068a9[_0xf33a('0x32')]);_0x4552c9[_0xf33a('0x37')]=_[_0xf33a('0x35')](_0x3068a9['model'],qs[_0xf33a('0x38')](_0x469741[_0xf33a('0x32')][_0xf33a('0x38')]));_0x4552c9[_0xf33a('0x37')]=_0x4552c9[_0xf33a('0x37')]['length']?_0x4552c9['attributes']:_0x3068a9[_0xf33a('0x36')];if(!_0x469741['query']['hasOwnProperty']('nolimit')){_0x4552c9[_0xf33a('0x1e')]=qs[_0xf33a('0x1e')](_0x469741['query'][_0xf33a('0x1e')]);_0x4552c9['offset']=qs[_0xf33a('0x20')](_0x469741[_0xf33a('0x32')][_0xf33a('0x20')]);}_0x4552c9[_0xf33a('0x39')]=qs[_0xf33a('0x3a')](_0x469741[_0xf33a('0x32')]['sort']);_0x4552c9[_0xf33a('0x3b')]=qs[_0xf33a('0x34')](_['pick'](_0x469741[_0xf33a('0x32')],_0x3068a9[_0xf33a('0x34')]),_0x1246ff);if(_0x469741[_0xf33a('0x32')]['filter']){_0x4552c9[_0xf33a('0x3b')]=_[_0xf33a('0x3c')](_0x4552c9[_0xf33a('0x3b')],{'$or':_[_0xf33a('0x2c')](_0x1246ff,function(_0x3ec562){if(_0x3ec562[_0xf33a('0x30')]!==_0xf33a('0x3d')){var _0x128baf={};_0x128baf[_0x3ec562[_0xf33a('0x29')]]={'$like':'%'+_0x469741['query'][_0xf33a('0x3e')]+'%'};return _0x128baf;}})});}_0x4552c9=_[_0xf33a('0x3c')]({},_0x4552c9,_0x469741['options']);var _0x1e8800={'where':_0x4552c9['where']};return db['CmHopperFinal'][_0xf33a('0x1f')](_0x1e8800)[_0xf33a('0x26')](function(_0x4dada1){_0x1d19ee[_0xf33a('0x1f')]=_0x4dada1;if(_0x469741[_0xf33a('0x32')][_0xf33a('0x3f')]){_0x4552c9['include']=[{'all':!![]}];}return db[_0xf33a('0x2d')][_0xf33a('0x40')](_0x4552c9);})['then'](function(_0x1e9748){_0x1d19ee[_0xf33a('0x41')]=_0x1e9748;return _0x1d19ee;})[_0xf33a('0x26')](respondWithFilteredResult(_0x729fca,_0x4552c9))[_0xf33a('0x42')](handleError(_0x729fca,null));};exports[_0xf33a('0x43')]=function(_0x5044f9,_0x45ae15){var _0x1722e5={'raw':!![],'where':{'id':_0x5044f9[_0xf33a('0x44')]['id']}},_0x2325eb={};_0x2325eb[_0xf33a('0x36')]=_['keys'](db[_0xf33a('0x2d')][_0xf33a('0x2e')]);_0x2325eb[_0xf33a('0x32')]=_['keys'](_0x5044f9[_0xf33a('0x32')]);_0x2325eb[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x2325eb[_0xf33a('0x36')],_0x2325eb[_0xf33a('0x32')]);_0x1722e5[_0xf33a('0x37')]=_['intersection'](_0x2325eb[_0xf33a('0x36')],qs[_0xf33a('0x38')](_0x5044f9[_0xf33a('0x32')][_0xf33a('0x38')]));_0x1722e5[_0xf33a('0x37')]=_0x1722e5['attributes'][_0xf33a('0x45')]?_0x1722e5[_0xf33a('0x37')]:_0x2325eb[_0xf33a('0x36')];if(_0x5044f9['query'][_0xf33a('0x3f')]){_0x1722e5[_0xf33a('0x46')]=[{'all':!![]}];}_0x1722e5=_['merge']({},_0x1722e5,_0x5044f9['options']);return db[_0xf33a('0x2d')]['find'](_0x1722e5)[_0xf33a('0x26')](handleEntityNotFound(_0x45ae15,null))[_0xf33a('0x26')](respondWithResult(_0x45ae15,null))[_0xf33a('0x42')](handleError(_0x45ae15,null));};exports[_0xf33a('0x47')]=function(_0xecc82f,_0x1a98f9){return db[_0xf33a('0x2d')][_0xf33a('0x47')]()[_0xf33a('0x26')](respondWithResult(_0x1a98f9,null))[_0xf33a('0x42')](handleError(_0x1a98f9,null));};exports[_0xf33a('0x25')]=function(_0x4107b1,_0x190a2b){if(_0x4107b1[_0xf33a('0x48')][_0xf33a('0x49')]){delete _0x4107b1[_0xf33a('0x48')][_0xf33a('0x49')];}return db[_0xf33a('0x2d')][_0xf33a('0x4a')]({'where':{'uniqueid':_0x4107b1[_0xf33a('0x44')]['id']}})[_0xf33a('0x26')](handleEntityNotFound(_0x190a2b,null))[_0xf33a('0x26')](saveUpdates(_0x4107b1[_0xf33a('0x48')],null))[_0xf33a('0x26')](respondWithResult(_0x190a2b,null))[_0xf33a('0x42')](handleError(_0x190a2b,null));};exports[_0xf33a('0x4b')]=function(_0x3bab07,_0x1f7d8c,_0x57815c){return db['CmHopperFinal'][_0xf33a('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x3bab07[_0xf33a('0x44')]['id']},'attributes':[[db['sequelize']['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')]['literal'](_0xf33a('0x4e')))),_0xf33a('0x4f')],[db[_0xf33a('0x4d')]['fn']('COUNT',db[_0xf33a('0x4d')]['fn']('IF',db['sequelize'][_0xf33a('0x50')](_0xf33a('0x51')))),'noAnswerContacts'],[db['sequelize']['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')]['literal'](_0xf33a('0x52')))),_0xf33a('0x53')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')]('`state`\x20=\x208,\x201,\x20null'))),_0xf33a('0x54')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x55')))),'dropContacts'],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db['sequelize']['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x56')))),_0xf33a('0x57')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x58')))),'answeringMachine']]})[_0xf33a('0x26')](handleEntityNotFound(_0x1f7d8c,null))[_0xf33a('0x26')](respondWithResult(_0x1f7d8c,null))[_0xf33a('0x42')](handleError(_0x1f7d8c,null));};exports[_0xf33a('0x59')]=function(_0x2f1fef,_0x129229,_0x473484){return db[_0xf33a('0x2d')][_0xf33a('0x40')]({'raw':![],'where':{'CampaignId':_0x2f1fef[_0xf33a('0x44')]['id']},'attributes':[[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xf33a('0x4f')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x51')))),_0xf33a('0x5a')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db['sequelize'][_0xf33a('0x50')](_0xf33a('0x52')))),_0xf33a('0x53')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x5b')))),'congestionContacts'],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x55')))),_0xf33a('0x5c')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x5d')))),_0xf33a('0x5e')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db['sequelize'][_0xf33a('0x50')](_0xf33a('0x56')))),'reCallContacts'],[db['sequelize']['fn']('COUNT',db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x58')))),_0xf33a('0x5f')]]})[_0xf33a('0x26')](handleEntityNotFound(_0x129229,null))[_0xf33a('0x26')](respondWithResult(_0x129229,null))[_0xf33a('0x42')](handleError(_0x129229,null));};exports[_0xf33a('0x60')]=function(_0x3bebca,_0x40bb02,_0x10a271){return db['VoiceQueue'][_0xf33a('0x4a')]({'where':{'id':_0x3bebca['params']['id']}})['then'](handleEntityNotFound(_0x40bb02,null))[_0xf33a('0x26')](function(_0x25cc49){var _0x132764;if(_0x25cc49){_0x132764=squel['insert']()['into'](_0xf33a('0x61'))['fromQuery']([_0xf33a('0x62'),_0xf33a('0x63'),_0xf33a('0x64'),_0xf33a('0x65'),_0xf33a('0x66'),'createdAt','updatedAt'],squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x69'),_0xf33a('0x62'))['field'](_0xf33a('0x6a'),_0xf33a('0x63'))['field'](_0xf33a('0x6b'),_0xf33a('0x64'))[_0xf33a('0x68')]('ANY_VALUE(ListId)',_0xf33a('0x65'))[_0xf33a('0x68')](_0xf33a('0x6c'),_0xf33a('0x66'))['field'](_0xf33a('0x6a'),_0xf33a('0x6d'))[_0xf33a('0x68')]('NOW()',_0xf33a('0x6e'))[_0xf33a('0x6f')](_0xf33a('0x70'))[_0xf33a('0x3b')](_0xf33a('0x71'),_0x3bebca[_0xf33a('0x44')]['id'][_0xf33a('0x72')]())[_0xf33a('0x3b')](_0xf33a('0x73'),_0x3bebca[_0xf33a('0x48')][_0xf33a('0x74')][_0xf33a('0x72')]())[_0xf33a('0x3b')](_0xf33a('0x75'))[_0xf33a('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x62'))[_0xf33a('0x6f')](_0xf33a('0x61'))[_0xf33a('0x3b')](_0xf33a('0x71'),_0x3bebca[_0xf33a('0x44')]['id'][_0xf33a('0x72')]()))[_0xf33a('0x3b')](_0xf33a('0x76'),squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x77'))['from'](_0xf33a('0x70'))[_0xf33a('0x3b')](_0xf33a('0x71'),_0x3bebca[_0xf33a('0x44')]['id']['toString']())[_0xf33a('0x3b')](_0xf33a('0x78')))[_0xf33a('0x79')](_0xf33a('0x64')))[_0xf33a('0x72')]();return db[_0xf33a('0x4d')][_0xf33a('0x32')](_0x132764);}return[];})[_0xf33a('0x26')](respondWithResult(_0x40bb02,null))['catch'](handleError(_0x40bb02,null));};exports[_0xf33a('0x7a')]=function(_0x1dfb59,_0x9c0b99,_0x17b2fa){return db['Campaign']['find']({'where':{'id':_0x1dfb59[_0xf33a('0x44')]['id']}})['then'](handleEntityNotFound(_0x9c0b99,null))[_0xf33a('0x26')](function(_0x1595b7){var _0x3d8dbe;if(_0x1595b7){_0x3d8dbe=squel[_0xf33a('0x7b')]()['into']('cm_hopper')[_0xf33a('0x7c')](['phone',_0xf33a('0x63'),_0xf33a('0x64'),_0xf33a('0x65'),_0xf33a('0x7d'),_0xf33a('0x6d'),_0xf33a('0x6e')],squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x69'),_0xf33a('0x62'))[_0xf33a('0x68')](_0xf33a('0x6a'),_0xf33a('0x63'))[_0xf33a('0x68')](_0xf33a('0x6b'),_0xf33a('0x64'))['field'](_0xf33a('0x7e'),'ListId')[_0xf33a('0x68')]('ANY_VALUE(CampaignId)','CampaignId')['field'](_0xf33a('0x6a'),_0xf33a('0x6d'))['field'](_0xf33a('0x6a'),_0xf33a('0x6e'))[_0xf33a('0x6f')](_0xf33a('0x70'))[_0xf33a('0x3b')](_0xf33a('0x7f'),_0x1dfb59['params']['id'][_0xf33a('0x72')]())[_0xf33a('0x3b')]('state\x20=\x20?',_0x1dfb59[_0xf33a('0x48')][_0xf33a('0x74')][_0xf33a('0x72')]())['where'](_0xf33a('0x75'))[_0xf33a('0x3b')](_0xf33a('0x76'),squel[_0xf33a('0x67')]()[_0xf33a('0x68')]('phone')[_0xf33a('0x6f')](_0xf33a('0x61'))[_0xf33a('0x3b')](_0xf33a('0x7f'),_0x1dfb59[_0xf33a('0x44')]['id']['toString']()))[_0xf33a('0x3b')](_0xf33a('0x76'),squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x77'))['from'](_0xf33a('0x70'))['where']('CampaignId\x20=\x20?',_0x1dfb59[_0xf33a('0x44')]['id']['toString']())[_0xf33a('0x3b')](_0xf33a('0x78')))['group'](_0xf33a('0x64')))[_0xf33a('0x72')]();return db[_0xf33a('0x4d')][_0xf33a('0x32')](_0x3d8dbe);}return[];})[_0xf33a('0x26')](respondWithResult(_0x9c0b99,null))[_0xf33a('0x42')](handleError(_0x9c0b99,null));};exports[_0xf33a('0x80')]=function(_0x4abd84,_0x1205d1,_0x1d83a0){return db[_0xf33a('0x81')][_0xf33a('0x82')]({'where':{'VoiceQueueId':_0x4abd84['body'][_0xf33a('0x66')],'CampaignId':_0x4abd84['body'][_0xf33a('0x7d')],'ContactId':_0x4abd84[_0xf33a('0x48')][_0xf33a('0x64')]}})[_0xf33a('0x26')](handleEntityNotFound(_0x1205d1,null))[_0xf33a('0x26')](function(_0x49c40a){if(_0x49c40a){return _0x49c40a;}return null;})[_0xf33a('0x26')](respondWithResult(_0x1205d1,null))[_0xf33a('0x42')](handleError(_0x1205d1,null));};
\ No newline at end of file
index a3db09e..6a5541d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x590f=['cm_hopper_final','calleridnum','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','CmHopperFinal'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x590f,0x1ed));var _0xf590=function(_0x430c1d,_0x347b74){_0x430c1d=_0x430c1d-0x0;var _0xe7f819=_0x590f[_0x430c1d];return _0xe7f819;};'use strict';var _=require(_0xf590('0x0'));var util=require(_0xf590('0x1'));var logger=require('../../config/logger')(_0xf590('0x2'));var moment=require(_0xf590('0x3'));var BPromise=require(_0xf590('0x4'));var rp=require(_0xf590('0x5'));var fs=require('fs');var path=require(_0xf590('0x6'));var rimraf=require(_0xf590('0x7'));var config=require(_0xf590('0x8'));var attributes=require('./cmHopperFinal.attributes');module[_0xf590('0x9')]=function(_0x1902f6,_0x1bdef6){return _0x1902f6['define'](_0xf590('0xa'),attributes,{'tableName':_0xf590('0xb'),'paranoid':![],'indexes':[{'name':_0xf590('0xc'),'fields':[_0xf590('0xc')]},{'name':_0xf590('0xd'),'fields':[_0xf590('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4686=['define','CmHopperFinal','cm_hopper_final','calleridnum','lodash','util','../../config/logger','moment','bluebird','request-promise','path','./cmHopperFinal.attributes'];(function(_0x543495,_0x498b1c){var _0x3054d9=function(_0x35f3ea){while(--_0x35f3ea){_0x543495['push'](_0x543495['shift']());}};_0x3054d9(++_0x498b1c);}(_0x4686,0x1e4));var _0x6468=function(_0x4b1a1c,_0x393998){_0x4b1a1c=_0x4b1a1c-0x0;var _0x388b54=_0x4686[_0x4b1a1c];return _0x388b54;};'use strict';var _=require(_0x6468('0x0'));var util=require(_0x6468('0x1'));var logger=require(_0x6468('0x2'))('api');var moment=require(_0x6468('0x3'));var BPromise=require(_0x6468('0x4'));var rp=require(_0x6468('0x5'));var fs=require('fs');var path=require(_0x6468('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6468('0x7'));module['exports']=function(_0x955f92,_0x207219){return _0x955f92[_0x6468('0x8')](_0x6468('0x9'),attributes,{'tableName':_0x6468('0xa'),'paranoid':![],'indexes':[{'name':_0x6468('0xb'),'fields':[_0x6468('0xb')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index cc5ab57..17b6cb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x25f8e5,_0x46bf8a){var _0x5885f5=function(_0x53dcd8){while(--_0x53dcd8){_0x25f8e5['push'](_0x25f8e5['shift']());}};_0x5885f5(++_0x46bf8a);}(_0xb10b,0x12a));var _0xbb10=function(_0x5dcbf0,_0x101d9d){_0x5dcbf0=_0x5dcbf0-0x0;var _0xcf87aa=_0xb10b[_0x5dcbf0];return _0xcf87aa;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x51eeea,_0x6f7c5d){var _0xcae4c1=function(_0x1e26ee){while(--_0x1e26ee){_0x51eeea['push'](_0x51eeea['shift']());}};_0xcae4c1(++_0x6f7c5d);}(_0x7a54,0x106));var _0x47a5=function(_0x448508,_0x19a9f1){_0x448508=_0x448508-0x0;var _0x55067c=_0x7a54[_0x448508];return _0x55067c;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 8299550..9530cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1abc=['util','path','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer'];(function(_0x32dbd3,_0x2702c2){var _0x39fe0a=function(_0x24738c){while(--_0x24738c){_0x32dbd3['push'](_0x32dbd3['shift']());}};_0x39fe0a(++_0x2702c2);}(_0x1abc,0x107));var _0xc1ab=function(_0x3db791,_0xc96e9b){_0x3db791=_0x3db791-0x0;var _0x4d4eb0=_0x1abc[_0x3db791];return _0x4d4eb0;};'use strict';var multer=require(_0xc1ab('0x0'));var util=require(_0xc1ab('0x1'));var path=require(_0xc1ab('0x2'));var timeout=require('connect-timeout');var express=require(_0xc1ab('0x3'));var router=express[_0xc1ab('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc1ab('0x5'));var interaction=require(_0xc1ab('0x6'));var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router[_0xc1ab('0x7')]('/',auth[_0xc1ab('0x8')](),controller[_0xc1ab('0x9')]);router[_0xc1ab('0x7')](_0xc1ab('0xa'),auth[_0xc1ab('0x8')](),controller[_0xc1ab('0xb')]);router[_0xc1ab('0x7')](_0xc1ab('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xc1ab('0x7')]('/voice/queue/countAttributes/:id',auth[_0xc1ab('0x8')](),controller['countContactsQueueCampaignHopperFinal']);router['get'](_0xc1ab('0xd'),auth['isAuthenticated'](),controller[_0xc1ab('0xe')]);router[_0xc1ab('0xf')]('/voice/queue/moveContacts/:id',auth[_0xc1ab('0x8')](),controller[_0xc1ab('0x10')]);router[_0xc1ab('0xf')]('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller['moveContactsIvrCampaignHopperFinal']);router[_0xc1ab('0xf')](_0xc1ab('0x11'),auth['isAuthenticated'](),controller[_0xc1ab('0x12')]);router[_0xc1ab('0x13')](_0xc1ab('0xc'),auth[_0xc1ab('0x8')](),controller[_0xc1ab('0x14')]);module[_0xc1ab('0x15')]=router;
\ No newline at end of file
+var _0x9962=['isAuthenticated','/describe','describe','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','/:id','update','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9962,0xb8));var _0x2996=function(_0x1fde51,_0xeaed24){_0x1fde51=_0x1fde51-0x0;var _0x4ee6f9=_0x9962[_0x1fde51];return _0x4ee6f9;};'use strict';var multer=require(_0x2996('0x0'));var util=require('util');var path=require(_0x2996('0x1'));var timeout=require(_0x2996('0x2'));var express=require(_0x2996('0x3'));var router=express['Router']();var fs_extra=require(_0x2996('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2996('0x5'));var config=require(_0x2996('0x6'));var controller=require('./cmHopperFinal.controller');router[_0x2996('0x7')]('/',auth[_0x2996('0x8')](),controller['index']);router[_0x2996('0x7')](_0x2996('0x9'),auth[_0x2996('0x8')](),controller[_0x2996('0xa')]);router[_0x2996('0x7')]('/:id',auth[_0x2996('0x8')](),controller['show']);router[_0x2996('0x7')](_0x2996('0xb'),auth[_0x2996('0x8')](),controller[_0x2996('0xc')]);router['get'](_0x2996('0xd'),auth[_0x2996('0x8')](),controller[_0x2996('0xe')]);router[_0x2996('0xf')]('/voice/queue/moveContacts/:id',auth[_0x2996('0x8')](),controller[_0x2996('0x10')]);router[_0x2996('0xf')](_0x2996('0x11'),auth['isAuthenticated'](),controller[_0x2996('0x12')]);router['post'](_0x2996('0x13'),auth[_0x2996('0x8')](),controller['checkContactHopper']);router[_0x2996('0x14')](_0x2996('0x15'),auth[_0x2996('0x8')](),controller[_0x2996('0x16')]);module[_0x2996('0x17')]=router;
\ No newline at end of file
index fa7c4c6..33246e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafa2=['STRING','BOOLEAN','sequelize','exports','INTEGER','DATE'];(function(_0x20d874,_0x345eb4){var _0xd7fdd8=function(_0xe36ee1){while(--_0xe36ee1){_0x20d874['push'](_0x20d874['shift']());}};_0xd7fdd8(++_0x345eb4);}(_0xafa2,0xe6));var _0x2afa=function(_0x4dfe2b,_0x55cff9){_0x4dfe2b=_0x4dfe2b-0x0;var _0x45c04c=_0xafa2[_0x4dfe2b];return _0x45c04c;};'use strict';var Sequelize=require(_0x2afa('0x0'));module[_0x2afa('0x1')]={'state':{'type':Sequelize[_0x2afa('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x2afa('0x3')]},'countbusyretry':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x2afa('0x4')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x2afa('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x2afa('0x4')]},'starttime':{'type':Sequelize[_0x2afa('0x3')]},'responsetime':{'type':Sequelize[_0x2afa('0x3')]},'answertime':{'type':Sequelize[_0x2afa('0x3')]},'droptime':{'type':Sequelize[_0x2afa('0x3')]},'endtime':{'type':Sequelize[_0x2afa('0x3')]},'ringtime':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x2afa('0x4')]},'campaign':{'type':Sequelize[_0x2afa('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x2afa('0x4')]},'reason':{'type':Sequelize[_0x2afa('0x4')]},'amd':{'type':Sequelize[_0x2afa('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x2afa('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x2afa('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2afa('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2afa('0x3')]},'recallme':{'type':Sequelize[_0x2afa('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x2afa('0x3')]},'edited':{'type':Sequelize[_0x2afa('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2afa('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1f86=['DATE','BOOLEAN','sequelize','INTEGER','STRING'];(function(_0x3b7a0c,_0xf1a4c2){var _0x3bb70f=function(_0x248b52){while(--_0x248b52){_0x3b7a0c['push'](_0x3b7a0c['shift']());}};_0x3bb70f(++_0xf1a4c2);}(_0x1f86,0x1ec));var _0x61f8=function(_0x1d6472,_0x55284a){_0x1d6472=_0x1d6472-0x0;var _0x5d4516=_0x1f86[_0x1d6472];return _0x5d4516;};'use strict';var Sequelize=require(_0x61f8('0x0'));module['exports']={'state':{'type':Sequelize[_0x61f8('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x61f8('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x61f8('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x61f8('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x61f8('0x2')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x61f8('0x3')]},'responsetime':{'type':Sequelize[_0x61f8('0x3')]},'answertime':{'type':Sequelize[_0x61f8('0x3')]},'droptime':{'type':Sequelize[_0x61f8('0x3')]},'endtime':{'type':Sequelize[_0x61f8('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x61f8('0x2')]},'campaigntype':{'type':Sequelize[_0x61f8('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x61f8('0x4')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x61f8('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x61f8('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x61f8('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x61f8('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 68b639c..c005d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd284=['count','Content-Range','json','apply','reject','save','update','then','destroy','name','send','index','map','CmHopperHistory','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','rawAttributes','length','create','describe','uniqueid','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined'];(function(_0x11ee4e,_0x549084){var _0x433ed4=function(_0x415f3e){while(--_0x415f3e){_0x11ee4e['push'](_0x11ee4e['shift']());}};_0x433ed4(++_0x549084);}(_0xd284,0x156));var _0x4d28=function(_0x5ce33f,_0x28f690){_0x5ce33f=_0x5ce33f-0x0;var _0x581170=_0xd284[_0x5ce33f];return _0x581170;};'use strict';var emlformat=require(_0x4d28('0x0'));var rimraf=require(_0x4d28('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d28('0x2'));var rp=require(_0x4d28('0x3'));var moment=require(_0x4d28('0x4'));var BPromise=require(_0x4d28('0x5'));var Mustache=require(_0x4d28('0x6'));var util=require(_0x4d28('0x7'));var path=require('path');var sox=require(_0x4d28('0x8'));var csv=require('to-csv');var ejs=require(_0x4d28('0x9'));var fs=require('fs');var fs_extra=require(_0x4d28('0xa'));var _=require(_0x4d28('0xb'));var squel=require('squel');var crypto=require(_0x4d28('0xc'));var jsforce=require(_0x4d28('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4d28('0xe'));var querystring=require(_0x4d28('0xf'));var Papa=require(_0x4d28('0x10'));var Redis=require(_0x4d28('0x11'));var authService=require(_0x4d28('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x4d28('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4d28('0x14'));var config=require(_0x4d28('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d28('0x16'))['db'];function respondWithStatusCode(_0x438a71,_0x2f1860){_0x2f1860=_0x2f1860||0xcc;return function(_0x55485c){if(_0x55485c){return _0x438a71[_0x4d28('0x17')](_0x2f1860);}return _0x438a71[_0x4d28('0x18')](_0x2f1860)[_0x4d28('0x19')]();};}function respondWithResult(_0xcc9957,_0xfaf551){_0xfaf551=_0xfaf551||0xc8;return function(_0x434aa8){if(_0x434aa8){return _0xcc9957['status'](_0xfaf551)['json'](_0x434aa8);}};}function respondWithFilteredResult(_0x2f53e6,_0x46563e){return function(_0x26387a){if(_0x26387a){var _0x791fee=typeof _0x46563e[_0x4d28('0x1a')]===_0x4d28('0x1b')&&typeof _0x46563e['limit']===_0x4d28('0x1b');var _0xcb1b22=_0x26387a[_0x4d28('0x1c')];var _0x2a03c7=_0x791fee?0x0:_0x46563e[_0x4d28('0x1a')];var _0x540c27=_0x791fee?_0x26387a['count']:_0x46563e[_0x4d28('0x1a')]+_0x46563e['limit'];var _0x29914d;if(_0x540c27>=_0xcb1b22){_0x540c27=_0xcb1b22;_0x29914d=0xc8;}else{_0x29914d=0xce;}_0x2f53e6[_0x4d28('0x18')](_0x29914d);return _0x2f53e6['set'](_0x4d28('0x1d'),_0x2a03c7+'-'+_0x540c27+'/'+_0xcb1b22)[_0x4d28('0x1e')](_0x26387a);}return null;};}function patchUpdates(_0x109cb1){return function(_0x3e0bab){try{jsonpatch[_0x4d28('0x1f')](_0x3e0bab,_0x109cb1,!![]);}catch(_0x5e606e){return BPromise[_0x4d28('0x20')](_0x5e606e);}return _0x3e0bab[_0x4d28('0x21')]();};}function saveUpdates(_0x19b7f2,_0x2e6f29){return function(_0x47b469){if(_0x47b469){return _0x47b469[_0x4d28('0x22')](_0x19b7f2)[_0x4d28('0x23')](function(_0x489fbe){return _0x489fbe;});}return null;};}function removeEntity(_0x5c4d1e,_0x1f1f0a){return function(_0x256b86){if(_0x256b86){return _0x256b86[_0x4d28('0x24')]()['then'](function(){_0x5c4d1e[_0x4d28('0x18')](0xcc)[_0x4d28('0x19')]();});}};}function handleEntityNotFound(_0x5e1d11,_0x562c1d){return function(_0x2320f8){if(!_0x2320f8){_0x5e1d11[_0x4d28('0x17')](0x194);}return _0x2320f8;};}function handleError(_0x43ec37,_0x361281){_0x361281=_0x361281||0x1f4;return function(_0x43b19a){logger['error'](_0x43b19a['stack']);if(_0x43b19a[_0x4d28('0x25')]){delete _0x43b19a[_0x4d28('0x25')];}_0x43ec37[_0x4d28('0x18')](_0x361281)[_0x4d28('0x26')](_0x43b19a);};}exports[_0x4d28('0x27')]=function(_0x17fe24,_0x55f233){var _0x439792={},_0x243c97={},_0x3bb96f={'count':0x0,'rows':[]};var _0x32334c=_[_0x4d28('0x28')](db[_0x4d28('0x29')]['rawAttributes'],function(_0x2331d7){return{'name':_0x2331d7[_0x4d28('0x2a')],'type':_0x2331d7[_0x4d28('0x2b')]['key']};});_0x243c97[_0x4d28('0x2c')]=_['map'](_0x32334c,_0x4d28('0x25'));_0x243c97[_0x4d28('0x2d')]=_[_0x4d28('0x2e')](_0x17fe24[_0x4d28('0x2d')]);_0x243c97[_0x4d28('0x2f')]=_[_0x4d28('0x30')](_0x243c97[_0x4d28('0x2c')],_0x243c97['query']);_0x439792[_0x4d28('0x31')]=_['intersection'](_0x243c97['model'],qs[_0x4d28('0x32')](_0x17fe24[_0x4d28('0x2d')]['fields']));_0x439792[_0x4d28('0x31')]=_0x439792['attributes']['length']?_0x439792[_0x4d28('0x31')]:_0x243c97['model'];if(!_0x17fe24[_0x4d28('0x2d')][_0x4d28('0x33')](_0x4d28('0x34'))){_0x439792[_0x4d28('0x35')]=qs['limit'](_0x17fe24['query'][_0x4d28('0x35')]);_0x439792['offset']=qs[_0x4d28('0x1a')](_0x17fe24[_0x4d28('0x2d')][_0x4d28('0x1a')]);}_0x439792[_0x4d28('0x36')]=qs['sort'](_0x17fe24['query'][_0x4d28('0x37')]);_0x439792['where']=qs[_0x4d28('0x2f')](_[_0x4d28('0x38')](_0x17fe24[_0x4d28('0x2d')],_0x243c97['filters']),_0x32334c);if(_0x17fe24[_0x4d28('0x2d')][_0x4d28('0x39')]){_0x439792[_0x4d28('0x3a')]=_[_0x4d28('0x3b')](_0x439792[_0x4d28('0x3a')],{'$or':_[_0x4d28('0x28')](_0x32334c,function(_0x121868){if(_0x121868[_0x4d28('0x2b')]!==_0x4d28('0x3c')){var _0x59f13d={};_0x59f13d[_0x121868[_0x4d28('0x25')]]={'$like':'%'+_0x17fe24[_0x4d28('0x2d')][_0x4d28('0x39')]+'%'};return _0x59f13d;}})});}_0x439792=_[_0x4d28('0x3b')]({},_0x439792,_0x17fe24[_0x4d28('0x3d')]);var _0x32aa88={'where':_0x439792[_0x4d28('0x3a')]};return db[_0x4d28('0x29')][_0x4d28('0x1c')](_0x32aa88)[_0x4d28('0x23')](function(_0x3e2a62){_0x3bb96f['count']=_0x3e2a62;if(_0x17fe24['query'][_0x4d28('0x3e')]){_0x439792[_0x4d28('0x3f')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x4d28('0x40')](_0x439792);})[_0x4d28('0x23')](function(_0x325b3f){_0x3bb96f[_0x4d28('0x41')]=_0x325b3f;return _0x3bb96f;})['then'](respondWithFilteredResult(_0x55f233,_0x439792))[_0x4d28('0x42')](handleError(_0x55f233,null));};exports['show']=function(_0x5079bf,_0x52799f){var _0x2a1c96={'raw':!![],'where':{'id':_0x5079bf[_0x4d28('0x43')]['id']}},_0x27dc8a={};_0x27dc8a['model']=_[_0x4d28('0x2e')](db['CmHopperHistory'][_0x4d28('0x44')]);_0x27dc8a[_0x4d28('0x2d')]=_[_0x4d28('0x2e')](_0x5079bf[_0x4d28('0x2d')]);_0x27dc8a[_0x4d28('0x2f')]=_[_0x4d28('0x30')](_0x27dc8a[_0x4d28('0x2c')],_0x27dc8a['query']);_0x2a1c96['attributes']=_[_0x4d28('0x30')](_0x27dc8a[_0x4d28('0x2c')],qs[_0x4d28('0x32')](_0x5079bf[_0x4d28('0x2d')]['fields']));_0x2a1c96[_0x4d28('0x31')]=_0x2a1c96[_0x4d28('0x31')][_0x4d28('0x45')]?_0x2a1c96[_0x4d28('0x31')]:_0x27dc8a['model'];if(_0x5079bf[_0x4d28('0x2d')][_0x4d28('0x3e')]){_0x2a1c96[_0x4d28('0x3f')]=[{'all':!![]}];}_0x2a1c96=_[_0x4d28('0x3b')]({},_0x2a1c96,_0x5079bf[_0x4d28('0x3d')]);return db[_0x4d28('0x29')]['find'](_0x2a1c96)[_0x4d28('0x23')](handleEntityNotFound(_0x52799f,null))[_0x4d28('0x23')](respondWithResult(_0x52799f,null))[_0x4d28('0x42')](handleError(_0x52799f,null));};exports[_0x4d28('0x46')]=function(_0x13a7a1,_0x3126f4){return db[_0x4d28('0x29')]['create'](_0x13a7a1['body'],{})[_0x4d28('0x23')](respondWithResult(_0x3126f4,0xc9))[_0x4d28('0x42')](handleError(_0x3126f4,null));};exports[_0x4d28('0x47')]=function(_0x52e586,_0x400de0){return db[_0x4d28('0x29')][_0x4d28('0x47')]()['then'](respondWithResult(_0x400de0,null))[_0x4d28('0x42')](handleError(_0x400de0,null));};exports[_0x4d28('0x22')]=function(_0xb39479,_0x1c3eeb){if(_0xb39479['body']['uniqueid']){delete _0xb39479['body'][_0x4d28('0x48')];}return db[_0x4d28('0x29')]['find']({'where':{'uniqueid':_0xb39479[_0x4d28('0x43')]['id']}})[_0x4d28('0x23')](handleEntityNotFound(_0x1c3eeb,null))[_0x4d28('0x23')](saveUpdates(_0xb39479[_0x4d28('0x49')],null))[_0x4d28('0x23')](respondWithResult(_0x1c3eeb,null))[_0x4d28('0x42')](handleError(_0x1c3eeb,null));};
\ No newline at end of file
+var _0xce9e=['squel','jsforce','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','includeAll','include','then','rows','catch','show','params','keys','options','find','create','describe','uniqueid','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x439e2c,_0x90906a){var _0xecc02b=function(_0x2df2a2){while(--_0x2df2a2){_0x439e2c['push'](_0x439e2c['shift']());}};_0xecc02b(++_0x90906a);}(_0xce9e,0x87));var _0xece9=function(_0x4cd14a,_0x3c08b4){_0x4cd14a=_0x4cd14a-0x0;var _0x59ac6a=_0xce9e[_0x4cd14a];return _0x59ac6a;};'use strict';var emlformat=require(_0xece9('0x0'));var rimraf=require(_0xece9('0x1'));var zipdir=require(_0xece9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xece9('0x3'));var moment=require(_0xece9('0x4'));var BPromise=require(_0xece9('0x5'));var Mustache=require(_0xece9('0x6'));var util=require(_0xece9('0x7'));var path=require('path');var sox=require(_0xece9('0x8'));var csv=require(_0xece9('0x9'));var ejs=require(_0xece9('0xa'));var fs=require('fs');var fs_extra=require(_0xece9('0xb'));var _=require(_0xece9('0xc'));var squel=require(_0xece9('0xd'));var crypto=require('crypto');var jsforce=require(_0xece9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xece9('0x9'));var querystring=require(_0xece9('0xf'));var Papa=require('papaparse');var Redis=require(_0xece9('0x10'));var authService=require(_0xece9('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xece9('0x12'));var logger=require(_0xece9('0x13'))(_0xece9('0x14'));var utils=require('../../config/utils');var config=require(_0xece9('0x15'));var licenseUtil=require(_0xece9('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5728a7,_0x981912){_0x981912=_0x981912||0xcc;return function(_0x1ce87d){if(_0x1ce87d){return _0x5728a7[_0xece9('0x17')](_0x981912);}return _0x5728a7[_0xece9('0x18')](_0x981912)[_0xece9('0x19')]();};}function respondWithResult(_0x23e940,_0x3b98ae){_0x3b98ae=_0x3b98ae||0xc8;return function(_0x522526){if(_0x522526){return _0x23e940[_0xece9('0x18')](_0x3b98ae)['json'](_0x522526);}};}function respondWithFilteredResult(_0x2dc988,_0x140680){return function(_0x126faa){if(_0x126faa){var _0x272432=typeof _0x140680[_0xece9('0x1a')]===_0xece9('0x1b')&&typeof _0x140680[_0xece9('0x1c')]==='undefined';var _0xa5dc8b=_0x126faa[_0xece9('0x1d')];var _0x4a82f8=_0x272432?0x0:_0x140680[_0xece9('0x1a')];var _0x5244dd=_0x272432?_0x126faa[_0xece9('0x1d')]:_0x140680[_0xece9('0x1a')]+_0x140680[_0xece9('0x1c')];var _0x12dfb8;if(_0x5244dd>=_0xa5dc8b){_0x5244dd=_0xa5dc8b;_0x12dfb8=0xc8;}else{_0x12dfb8=0xce;}_0x2dc988[_0xece9('0x18')](_0x12dfb8);return _0x2dc988['set'](_0xece9('0x1e'),_0x4a82f8+'-'+_0x5244dd+'/'+_0xa5dc8b)[_0xece9('0x1f')](_0x126faa);}return null;};}function patchUpdates(_0xd01a44){return function(_0x39c670){try{jsonpatch[_0xece9('0x20')](_0x39c670,_0xd01a44,!![]);}catch(_0x1c6332){return BPromise[_0xece9('0x21')](_0x1c6332);}return _0x39c670[_0xece9('0x22')]();};}function saveUpdates(_0x260382,_0x55498c){return function(_0x506225){if(_0x506225){return _0x506225[_0xece9('0x23')](_0x260382)['then'](function(_0xb8938b){return _0xb8938b;});}return null;};}function removeEntity(_0x2e51ff,_0x48b411){return function(_0x47adf2){if(_0x47adf2){return _0x47adf2[_0xece9('0x24')]()['then'](function(){_0x2e51ff[_0xece9('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5de774,_0x5d76b8){return function(_0x1c4e12){if(!_0x1c4e12){_0x5de774['sendStatus'](0x194);}return _0x1c4e12;};}function handleError(_0x96fe96,_0x5b35dc){_0x5b35dc=_0x5b35dc||0x1f4;return function(_0x5420eb){logger[_0xece9('0x25')](_0x5420eb[_0xece9('0x26')]);if(_0x5420eb[_0xece9('0x27')]){delete _0x5420eb[_0xece9('0x27')];}_0x96fe96[_0xece9('0x18')](_0x5b35dc)[_0xece9('0x28')](_0x5420eb);};}exports[_0xece9('0x29')]=function(_0x5577eb,_0x36d7b5){var _0x352dfa={},_0x45573a={},_0x49abe7={'count':0x0,'rows':[]};var _0x5a82ec=_[_0xece9('0x2a')](db[_0xece9('0x2b')][_0xece9('0x2c')],function(_0x2a91ae){return{'name':_0x2a91ae[_0xece9('0x2d')],'type':_0x2a91ae['type'][_0xece9('0x2e')]};});_0x45573a[_0xece9('0x2f')]=_[_0xece9('0x2a')](_0x5a82ec,'name');_0x45573a[_0xece9('0x30')]=_['keys'](_0x5577eb[_0xece9('0x30')]);_0x45573a[_0xece9('0x31')]=_[_0xece9('0x32')](_0x45573a[_0xece9('0x2f')],_0x45573a[_0xece9('0x30')]);_0x352dfa[_0xece9('0x33')]=_[_0xece9('0x32')](_0x45573a[_0xece9('0x2f')],qs['fields'](_0x5577eb[_0xece9('0x30')][_0xece9('0x34')]));_0x352dfa['attributes']=_0x352dfa[_0xece9('0x33')][_0xece9('0x35')]?_0x352dfa[_0xece9('0x33')]:_0x45573a[_0xece9('0x2f')];if(!_0x5577eb[_0xece9('0x30')]['hasOwnProperty'](_0xece9('0x36'))){_0x352dfa[_0xece9('0x1c')]=qs[_0xece9('0x1c')](_0x5577eb[_0xece9('0x30')][_0xece9('0x1c')]);_0x352dfa['offset']=qs[_0xece9('0x1a')](_0x5577eb['query'][_0xece9('0x1a')]);}_0x352dfa[_0xece9('0x37')]=qs['sort'](_0x5577eb[_0xece9('0x30')][_0xece9('0x38')]);_0x352dfa['where']=qs[_0xece9('0x31')](_['pick'](_0x5577eb[_0xece9('0x30')],_0x45573a[_0xece9('0x31')]),_0x5a82ec);if(_0x5577eb[_0xece9('0x30')][_0xece9('0x39')]){_0x352dfa[_0xece9('0x3a')]=_['merge'](_0x352dfa[_0xece9('0x3a')],{'$or':_[_0xece9('0x2a')](_0x5a82ec,function(_0x494f09){if(_0x494f09['type']!=='VIRTUAL'){var _0x4a8cae={};_0x4a8cae[_0x494f09['name']]={'$like':'%'+_0x5577eb[_0xece9('0x30')][_0xece9('0x39')]+'%'};return _0x4a8cae;}})});}_0x352dfa=_[_0xece9('0x3b')]({},_0x352dfa,_0x5577eb['options']);var _0x449162={'where':_0x352dfa['where']};return db[_0xece9('0x2b')][_0xece9('0x1d')](_0x449162)['then'](function(_0x2ade7b){_0x49abe7[_0xece9('0x1d')]=_0x2ade7b;if(_0x5577eb[_0xece9('0x30')][_0xece9('0x3c')]){_0x352dfa[_0xece9('0x3d')]=[{'all':!![]}];}return db[_0xece9('0x2b')]['findAll'](_0x352dfa);})[_0xece9('0x3e')](function(_0x15620d){_0x49abe7[_0xece9('0x3f')]=_0x15620d;return _0x49abe7;})[_0xece9('0x3e')](respondWithFilteredResult(_0x36d7b5,_0x352dfa))[_0xece9('0x40')](handleError(_0x36d7b5,null));};exports[_0xece9('0x41')]=function(_0x1132e8,_0x10ca36){var _0x15d738={'raw':!![],'where':{'id':_0x1132e8[_0xece9('0x42')]['id']}},_0x3ea478={};_0x3ea478[_0xece9('0x2f')]=_[_0xece9('0x43')](db[_0xece9('0x2b')][_0xece9('0x2c')]);_0x3ea478[_0xece9('0x30')]=_[_0xece9('0x43')](_0x1132e8['query']);_0x3ea478[_0xece9('0x31')]=_[_0xece9('0x32')](_0x3ea478[_0xece9('0x2f')],_0x3ea478['query']);_0x15d738[_0xece9('0x33')]=_[_0xece9('0x32')](_0x3ea478['model'],qs[_0xece9('0x34')](_0x1132e8[_0xece9('0x30')]['fields']));_0x15d738['attributes']=_0x15d738[_0xece9('0x33')][_0xece9('0x35')]?_0x15d738[_0xece9('0x33')]:_0x3ea478[_0xece9('0x2f')];if(_0x1132e8['query'][_0xece9('0x3c')]){_0x15d738[_0xece9('0x3d')]=[{'all':!![]}];}_0x15d738=_[_0xece9('0x3b')]({},_0x15d738,_0x1132e8[_0xece9('0x44')]);return db['CmHopperHistory'][_0xece9('0x45')](_0x15d738)['then'](handleEntityNotFound(_0x10ca36,null))['then'](respondWithResult(_0x10ca36,null))['catch'](handleError(_0x10ca36,null));};exports['create']=function(_0x28ef28,_0x370ff9){return db[_0xece9('0x2b')][_0xece9('0x46')](_0x28ef28['body'],{})[_0xece9('0x3e')](respondWithResult(_0x370ff9,0xc9))['catch'](handleError(_0x370ff9,null));};exports[_0xece9('0x47')]=function(_0x5d23c7,_0x450c5e){return db[_0xece9('0x2b')]['describe']()[_0xece9('0x3e')](respondWithResult(_0x450c5e,null))[_0xece9('0x40')](handleError(_0x450c5e,null));};exports[_0xece9('0x23')]=function(_0xe226b2,_0x5da60e){if(_0xe226b2['body'][_0xece9('0x48')]){delete _0xe226b2[_0xece9('0x49')][_0xece9('0x48')];}return db['CmHopperHistory'][_0xece9('0x45')]({'where':{'uniqueid':_0xe226b2[_0xece9('0x42')]['id']}})[_0xece9('0x3e')](handleEntityNotFound(_0x5da60e,null))[_0xece9('0x3e')](saveUpdates(_0xe226b2[_0xece9('0x49')],null))[_0xece9('0x3e')](respondWithResult(_0x5da60e,null))[_0xece9('0x40')](handleError(_0x5da60e,null));};
\ No newline at end of file
index dcb8639..a90bfa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f9=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','cm_hopper_history','endtime','uniqueid','lodash','util','api'];(function(_0x4586c5,_0x15d104){var _0x2c9f52=function(_0xb667ed){while(--_0xb667ed){_0x4586c5['push'](_0x4586c5['shift']());}};_0x2c9f52(++_0x15d104);}(_0xf3f9,0x1de));var _0x9f3f=function(_0x329875,_0x60911f){_0x329875=_0x329875-0x0;var _0x117f85=_0xf3f9[_0x329875];return _0x117f85;};'use strict';var _=require(_0x9f3f('0x0'));var util=require(_0x9f3f('0x1'));var logger=require('../../config/logger')(_0x9f3f('0x2'));var moment=require(_0x9f3f('0x3'));var BPromise=require(_0x9f3f('0x4'));var rp=require(_0x9f3f('0x5'));var fs=require('fs');var path=require(_0x9f3f('0x6'));var rimraf=require(_0x9f3f('0x7'));var config=require(_0x9f3f('0x8'));var attributes=require('./cmHopperHistory.attributes');module['exports']=function(_0xc4516a,_0x566b08){return _0xc4516a[_0x9f3f('0x9')]('CmHopperHistory',attributes,{'tableName':_0x9f3f('0xa'),'paranoid':![],'indexes':[{'name':_0x9f3f('0xb'),'fields':[_0x9f3f('0xb')]},{'name':'uniqueid','fields':[_0x9f3f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe35d=['cm_hopper_history','endtime','uniqueid','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','CmHopperHistory'];(function(_0xd578cb,_0x2167a3){var _0x775533=function(_0x1c340d){while(--_0x1c340d){_0xd578cb['push'](_0xd578cb['shift']());}};_0x775533(++_0x2167a3);}(_0xe35d,0xd5));var _0xde35=function(_0xbda54b,_0xc6693e){_0xbda54b=_0xbda54b-0x0;var _0x36d287=_0xe35d[_0xbda54b];return _0x36d287;};'use strict';var _=require(_0xde35('0x0'));var util=require(_0xde35('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xde35('0x2'));var BPromise=require(_0xde35('0x3'));var rp=require(_0xde35('0x4'));var fs=require('fs');var path=require(_0xde35('0x5'));var rimraf=require(_0xde35('0x6'));var config=require(_0xde35('0x7'));var attributes=require(_0xde35('0x8'));module[_0xde35('0x9')]=function(_0x20320f,_0x427941){return _0x20320f['define'](_0xde35('0xa'),attributes,{'tableName':_0xde35('0xb'),'paranoid':![],'indexes':[{'name':_0xde35('0xc'),'fields':[_0xde35('0xc')]},{'name':_0xde35('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 775f221..45ae5ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c1=['literal','`state`\x20=\x2010,\x201,\x20null','`state`\x20=\x2011,\x201,\x20null','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','where','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','catch','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','CreateCmHopperHistory','create','body','options','raw','CmHopperHistory','findAll','sequelize','COUNT','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls'];(function(_0x146bff,_0x48fbc3){var _0x4fd8fb=function(_0x3da885){while(--_0x3da885){_0x146bff['push'](_0x146bff['shift']());}};_0x4fd8fb(++_0x48fbc3);}(_0x29c1,0x72));var _0x129c=function(_0x48486f,_0x38c610){_0x48486f=_0x48486f-0x0;var _0x488b16=_0x29c1[_0x48486f];return _0x488b16;};'use strict';var _=require('lodash');var util=require(_0x129c('0x0'));var moment=require(_0x129c('0x1'));var BPromise=require(_0x129c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x129c('0x3'));var db=require(_0x129c('0x4'))['db'];var utils=require(_0x129c('0x5'));var logger=require(_0x129c('0x6'))(_0x129c('0x7'));var config=require(_0x129c('0x8'));var jayson=require(_0x129c('0x9'));var client=jayson['client'][_0x129c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e146e,_0x327481,_0x203e50){return new BPromise(function(_0x4955f4,_0x303ad7){return client[_0x129c('0xb')](_0x1e146e,_0x203e50)[_0x129c('0xc')](function(_0x59d810){logger[_0x129c('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0x327481,_0x129c('0xe'));logger[_0x129c('0xf')](_0x129c('0x10'),_0x327481,_0x129c('0xe'),JSON[_0x129c('0x11')](_0x59d810));if(_0x59d810[_0x129c('0x12')]){if(_0x59d810[_0x129c('0x12')][_0x129c('0x13')]===0x1f4){logger[_0x129c('0x12')](_0x129c('0x14'),_0x327481,_0x59d810[_0x129c('0x12')][_0x129c('0x15')]);return _0x303ad7(_0x59d810[_0x129c('0x12')][_0x129c('0x15')]);}logger[_0x129c('0x12')](_0x129c('0x14'),_0x327481,_0x59d810[_0x129c('0x12')]['message']);return _0x4955f4(_0x59d810[_0x129c('0x12')][_0x129c('0x15')]);}else{logger[_0x129c('0xd')](_0x129c('0x14'),_0x327481,_0x129c('0xe'));_0x4955f4(_0x59d810[_0x129c('0x16')][_0x129c('0x15')]);}})['catch'](function(_0x37c4e9){logger[_0x129c('0x12')](_0x129c('0x14'),_0x327481,_0x37c4e9);_0x303ad7(_0x37c4e9);});});}exports[_0x129c('0x17')]=function(_0x5dfb8e){var _0x3423f2=this;return new Promise(function(_0x22610e,_0x4a0836){return db['CmHopperHistory'][_0x129c('0x18')](_0x5dfb8e[_0x129c('0x19')],{'raw':_0x5dfb8e['options']?_0x5dfb8e[_0x129c('0x1a')][_0x129c('0x1b')]===undefined?!![]:![]:!![]})[_0x129c('0xc')](function(_0xafe3ad){logger[_0x129c('0xd')](_0x129c('0x17'),_0x5dfb8e);logger[_0x129c('0xf')](_0x129c('0x17'),_0x5dfb8e,JSON[_0x129c('0x11')](_0xafe3ad));_0x22610e(_0xafe3ad);})['catch'](function(_0x10ae7d){logger[_0x129c('0x12')](_0x129c('0x17'),_0x10ae7d[_0x129c('0x15')],_0x5dfb8e);_0x4a0836(_0x3423f2[_0x129c('0x12')](0x1f4,_0x10ae7d[_0x129c('0x15')]));});});};exports['AvgHandleTime']=function(_0x492771){var _0x3ef9e7=this;return new Promise(function(_0x3b3020,_0xff129c){return db[_0x129c('0x1c')][_0x129c('0x1d')]({'raw':_0x492771[_0x129c('0x1a')]?_0x492771['options'][_0x129c('0x1b')]===undefined?!![]:![]:!![],'where':_0x492771[_0x129c('0x1a')]?_0x492771[_0x129c('0x1a')]['where']||null:null,'attributes':[[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')][_0x129c('0x20')]('id')),_0x129c('0x21')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')]['literal'](_0x129c('0x22')))),_0x129c('0x23')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x25')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x26')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x129c('0x1e')]['fn']('AVG',db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x27')))),_0x129c('0x28')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x29'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x2a')))),_0x129c('0x2b')]]})['then'](function(_0x3ff148){logger[_0x129c('0xd')](_0x129c('0x2c'),_0x492771);logger[_0x129c('0xf')](_0x129c('0x2c'),_0x492771,JSON[_0x129c('0x11')](_0x3ff148));_0x3b3020(_0x3ff148);})['catch'](function(_0x44b3b4){logger[_0x129c('0x12')](_0x129c('0x2c'),_0x44b3b4['message'],_0x492771);_0xff129c(_0x3ef9e7[_0x129c('0x12')](0x1f4,_0x44b3b4[_0x129c('0x15')]));});});};exports[_0x129c('0x2d')]=function(_0x3e20bf){var _0x364af3=this;return new Promise(function(_0x47780b,_0x30920a){return db[_0x129c('0x1c')][_0x129c('0x1d')]({'raw':_0x3e20bf[_0x129c('0x1a')]?_0x3e20bf[_0x129c('0x1a')][_0x129c('0x1b')]===undefined?!![]:![]:!![],'where':_0x3e20bf[_0x129c('0x1a')]?_0x3e20bf[_0x129c('0x1a')][_0x129c('0x2e')]||null:null,'attributes':[['campaign',_0x129c('0x2f')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db['sequelize']['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x30')))),'outboundNoSuchCallsDay'],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db['sequelize']['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x31')))),_0x129c('0x32')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')]('`state`\x20=\x204,\x201,\x20null'))),'outboundAnswerCallsDay'],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x33')))),_0x129c('0x34')],[db['sequelize']['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')]['literal'](_0x129c('0x35')))),_0x129c('0x36')],[db['sequelize']['fn']('COUNT',db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x37')))),_0x129c('0x38')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x129c('0x39')))),_0x129c('0x3a')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db['sequelize']['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')]('`state`\x20=\x2012,\x201,\x20null'))),_0x129c('0x3b')],[db['sequelize']['fn'](_0x129c('0x1f'),db['sequelize']['fn']('IF',db[_0x129c('0x1e')]['literal'](_0x129c('0x3c')))),_0x129c('0x3d')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db['sequelize']['fn']('IF',db[_0x129c('0x1e')]['literal'](_0x129c('0x3e')))),_0x129c('0x3f')],[db['sequelize']['fn']('COUNT',db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')]('`state`\x20=\x2018,\x201,\x20null'))),_0x129c('0x40')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x129c('0x24')](_0x129c('0x41')))),_0x129c('0x42')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x43')))),_0x129c('0x40')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db['sequelize'][_0x129c('0x24')](_0x129c('0x44')))),_0x129c('0x45')]],'group':[_0x129c('0x46')]})['then'](function(_0x2ea56d){logger[_0x129c('0xd')]('GetVoiceQueueHopperHistory',_0x3e20bf);logger['debug']('GetVoiceQueueHopperHistory',_0x3e20bf,JSON[_0x129c('0x11')](_0x2ea56d));_0x47780b(_0x2ea56d);})[_0x129c('0x47')](function(_0x4cc3f2){logger[_0x129c('0x12')]('GetVoiceQueueHopperHistory',_0x4cc3f2[_0x129c('0x15')],_0x3e20bf);_0x30920a(_0x364af3[_0x129c('0x12')](0x1f4,_0x4cc3f2[_0x129c('0x15')]));});});};exports[_0x129c('0x48')]=function(_0x78331b){var _0x413063=this;return new Promise(function(_0x75e6b8,_0x4c8cfd){return db[_0x129c('0x1c')][_0x129c('0x1d')]({'raw':_0x78331b[_0x129c('0x1a')]?_0x78331b[_0x129c('0x1a')][_0x129c('0x1b')]===undefined?!![]:![]:!![],'where':_0x78331b[_0x129c('0x1a')]?_0x78331b[_0x129c('0x1a')][_0x129c('0x2e')]||null:null,'attributes':[[_0x129c('0x46'),'name'],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')][_0x129c('0x20')]('id')),_0x129c('0x49')],[db[_0x129c('0x1e')]['fn'](_0x129c('0x1f'),db[_0x129c('0x1e')]['fn']('IF',db[_0x129c('0x1e')][_0x129c('0x24')](_0x129c('0x22')))),_0x129c('0x4a')]],'group':['campaign']})['then'](function(_0x3f60ae){logger[_0x129c('0xd')](_0x129c('0x48'),_0x78331b);logger[_0x129c('0xf')](_0x129c('0x48'),_0x78331b,JSON[_0x129c('0x11')](_0x3f60ae));_0x75e6b8(_0x3f60ae);})[_0x129c('0x47')](function(_0x3c51db){logger[_0x129c('0x12')](_0x129c('0x48'),_0x3c51db[_0x129c('0x15')],_0x78331b);_0x4c8cfd(_0x413063[_0x129c('0x12')](0x1f4,_0x3c51db[_0x129c('0x15')]));});});};
\ No newline at end of file
+var _0x1d1b=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','catch','CmHopperHistory','create','body','options','CreateCmHopperHistory','findAll','where','sequelize','COUNT','predictiveIntervalTotalCalls','literal','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','outboundReCallsDay','raw','col','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','bluebird'];(function(_0x15fc96,_0x35b859){var _0x118f6f=function(_0x4ee08c){while(--_0x4ee08c){_0x15fc96['push'](_0x15fc96['shift']());}};_0x118f6f(++_0x35b859);}(_0x1d1b,0x110));var _0xb1d1=function(_0x58c8be,_0x458021){_0x58c8be=_0x58c8be-0x0;var _0x308502=_0x1d1b[_0x58c8be];return _0x308502;};'use strict';var _=require(_0xb1d1('0x0'));var util=require(_0xb1d1('0x1'));var moment=require(_0xb1d1('0x2'));var BPromise=require(_0xb1d1('0x3'));var rs=require(_0xb1d1('0x4'));var fs=require('fs');var Redis=require(_0xb1d1('0x5'));var db=require(_0xb1d1('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb1d1('0x7'))(_0xb1d1('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb1d1('0x9')][_0xb1d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32716b,_0x1f7042,_0x30babe){return new BPromise(function(_0x28dbad,_0x2b5013){return client['request'](_0x32716b,_0x30babe)[_0xb1d1('0xb')](function(_0x3e800c){logger[_0xb1d1('0xc')]('CmHopperHistory,\x20%s,\x20%s',_0x1f7042,_0xb1d1('0xd'));logger[_0xb1d1('0xe')](_0xb1d1('0xf'),_0x1f7042,_0xb1d1('0xd'),JSON[_0xb1d1('0x10')](_0x3e800c));if(_0x3e800c[_0xb1d1('0x11')]){if(_0x3e800c[_0xb1d1('0x11')][_0xb1d1('0x12')]===0x1f4){logger['error'](_0xb1d1('0x13'),_0x1f7042,_0x3e800c[_0xb1d1('0x11')]['message']);return _0x2b5013(_0x3e800c['error'][_0xb1d1('0x14')]);}logger['error'](_0xb1d1('0x13'),_0x1f7042,_0x3e800c[_0xb1d1('0x11')][_0xb1d1('0x14')]);return _0x28dbad(_0x3e800c[_0xb1d1('0x11')]['message']);}else{logger[_0xb1d1('0xc')](_0xb1d1('0x13'),_0x1f7042,_0xb1d1('0xd'));_0x28dbad(_0x3e800c['result'][_0xb1d1('0x14')]);}})[_0xb1d1('0x15')](function(_0x2fc136){logger[_0xb1d1('0x11')](_0xb1d1('0x13'),_0x1f7042,_0x2fc136);_0x2b5013(_0x2fc136);});});}exports['CreateCmHopperHistory']=function(_0x1a2891){var _0x30b6b8=this;return new Promise(function(_0x29ea0c,_0x1cfc98){return db[_0xb1d1('0x16')][_0xb1d1('0x17')](_0x1a2891[_0xb1d1('0x18')],{'raw':_0x1a2891[_0xb1d1('0x19')]?_0x1a2891[_0xb1d1('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3c1dc2){logger[_0xb1d1('0xc')](_0xb1d1('0x1a'),_0x1a2891);logger[_0xb1d1('0xe')](_0xb1d1('0x1a'),_0x1a2891,JSON['stringify'](_0x3c1dc2));_0x29ea0c(_0x3c1dc2);})[_0xb1d1('0x15')](function(_0x1ed21a){logger['error'](_0xb1d1('0x1a'),_0x1ed21a['message'],_0x1a2891);_0x1cfc98(_0x30b6b8['error'](0x1f4,_0x1ed21a[_0xb1d1('0x14')]));});});};exports['AvgHandleTime']=function(_0x36f5f8){var _0x338529=this;return new Promise(function(_0x471ec0,_0x2f3da6){return db[_0xb1d1('0x16')][_0xb1d1('0x1b')]({'raw':_0x36f5f8[_0xb1d1('0x19')]?_0x36f5f8[_0xb1d1('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x36f5f8['options']?_0x36f5f8[_0xb1d1('0x19')][_0xb1d1('0x1c')]||null:null,'attributes':[[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['col']('id')),_0xb1d1('0x1f')],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x204,\x201,\x20null'))),_0xb1d1('0x21')],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal'](_0xb1d1('0x22')))),_0xb1d1('0x23')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x2011,\x201,\x20null'))),_0xb1d1('0x24')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x25'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0xb1d1('0x26')],[db[_0xb1d1('0x1d')]['fn']('AVG',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xb1d1('0x27')]]})[_0xb1d1('0xb')](function(_0x4788e2){logger[_0xb1d1('0xc')](_0xb1d1('0x28'),_0x36f5f8);logger['debug'](_0xb1d1('0x28'),_0x36f5f8,JSON[_0xb1d1('0x10')](_0x4788e2));_0x471ec0(_0x4788e2);})['catch'](function(_0x529b93){logger[_0xb1d1('0x11')](_0xb1d1('0x28'),_0x529b93['message'],_0x36f5f8);_0x2f3da6(_0x338529['error'](0x1f4,_0x529b93['message']));});});};exports[_0xb1d1('0x29')]=function(_0x12daf0){var _0x2d2e37=this;return new Promise(function(_0x21999e,_0x1109ab){return db[_0xb1d1('0x16')][_0xb1d1('0x1b')]({'raw':_0x12daf0[_0xb1d1('0x19')]?_0x12daf0['options']['raw']===undefined?!![]:![]:!![],'where':_0x12daf0[_0xb1d1('0x19')]?_0x12daf0[_0xb1d1('0x19')][_0xb1d1('0x1c')]||null:null,'attributes':[[_0xb1d1('0x2a'),_0xb1d1('0x2b')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db['sequelize']['literal'](_0xb1d1('0x2c')))),_0xb1d1('0x2d')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x2e')))),_0xb1d1('0x2f')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db['sequelize']['fn']('IF',db['sequelize'][_0xb1d1('0x20')](_0xb1d1('0x30')))),_0xb1d1('0x31')],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal'](_0xb1d1('0x32')))),_0xb1d1('0x33')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x34')))),_0xb1d1('0x35')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xb1d1('0x36')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x37')))),_0xb1d1('0x38')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db['sequelize']['literal'](_0xb1d1('0x39')))),'outboundBlacklistCallsDay'],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x3a')))),_0xb1d1('0x3b')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x3c')))),_0xb1d1('0x3d')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x2016,\x201,\x20null'))),_0xb1d1('0x3e')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db['sequelize'][_0xb1d1('0x20')]('`state`\x20=\x2020,\x201,\x20null'))),_0xb1d1('0x3d')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal']('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xb1d1('0x3f')]],'group':[_0xb1d1('0x2a')]})[_0xb1d1('0xb')](function(_0x40ebe9){logger[_0xb1d1('0xc')](_0xb1d1('0x29'),_0x12daf0);logger['debug'](_0xb1d1('0x29'),_0x12daf0,JSON[_0xb1d1('0x10')](_0x40ebe9));_0x21999e(_0x40ebe9);})[_0xb1d1('0x15')](function(_0xbb1338){logger[_0xb1d1('0x11')](_0xb1d1('0x29'),_0xbb1338['message'],_0x12daf0);_0x1109ab(_0x2d2e37[_0xb1d1('0x11')](0x1f4,_0xbb1338['message']));});});};exports['GetCampaignHopperHistory']=function(_0x34efd7){var _0x4ccd07=this;return new Promise(function(_0x45c872,_0x4dee95){return db['CmHopperHistory'][_0xb1d1('0x1b')]({'raw':_0x34efd7[_0xb1d1('0x19')]?_0x34efd7[_0xb1d1('0x19')][_0xb1d1('0x40')]===undefined?!![]:![]:!![],'where':_0x34efd7['options']?_0x34efd7[_0xb1d1('0x19')]['where']||null:null,'attributes':[[_0xb1d1('0x2a'),'name'],[db['sequelize']['fn'](_0xb1d1('0x1e'),db['sequelize'][_0xb1d1('0x41')]('id')),_0xb1d1('0x42')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal'](_0xb1d1('0x30')))),_0xb1d1('0x43')]],'group':['campaign']})[_0xb1d1('0xb')](function(_0x2c9c34){logger['info'](_0xb1d1('0x44'),_0x34efd7);logger['debug'](_0xb1d1('0x44'),_0x34efd7,JSON[_0xb1d1('0x10')](_0x2c9c34));_0x45c872(_0x2c9c34);})[_0xb1d1('0x15')](function(_0x40ef99){logger[_0xb1d1('0x11')]('GetCampaignHopperHistory',_0x40ef99[_0xb1d1('0x14')],_0x34efd7);_0x4dee95(_0x4ccd07[_0xb1d1('0x11')](0x1f4,_0x40ef99[_0xb1d1('0x14')]));});});};
\ No newline at end of file
index c17c917..dfe14b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x849f=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x4c2ea0,_0x40fe9e){var _0xcf8096=function(_0xebf35e){while(--_0xebf35e){_0x4c2ea0['push'](_0x4c2ea0['shift']());}};_0xcf8096(++_0x40fe9e);}(_0x849f,0x181));var _0xf849=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x849f[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0xf849('0x0'));var util=require(_0xf849('0x1'));var path=require(_0xf849('0x2'));var timeout=require(_0xf849('0x3'));var express=require(_0xf849('0x4'));var router=express[_0xf849('0x5')]();var fs_extra=require(_0xf849('0x6'));var auth=require(_0xf849('0x7'));var interaction=require(_0xf849('0x8'));var config=require(_0xf849('0x9'));var controller=require(_0xf849('0xa'));router['get']('/',auth[_0xf849('0xb')](),controller[_0xf849('0xc')]);router['get'](_0xf849('0xd'),auth[_0xf849('0xb')](),controller[_0xf849('0xe')]);router[_0xf849('0xf')](_0xf849('0x10'),auth[_0xf849('0xb')](),controller[_0xf849('0x11')]);router[_0xf849('0x12')]('/',auth[_0xf849('0xb')](),controller[_0xf849('0x13')]);router[_0xf849('0x14')](_0xf849('0x10'),auth[_0xf849('0xb')](),controller[_0xf849('0x15')]);module[_0xf849('0x16')]=router;
\ No newline at end of file
+var _0x2e80=['get','/describe','describe','post','create','put','/:id','update','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./cmHopperHistory.controller','isAuthenticated','index'];(function(_0x20bb4f,_0x40285e){var _0x586e2a=function(_0x5001f4){while(--_0x5001f4){_0x20bb4f['push'](_0x20bb4f['shift']());}};_0x586e2a(++_0x40285e);}(_0x2e80,0x14c));var _0x02e8=function(_0x3124f8,_0x1a8b23){_0x3124f8=_0x3124f8-0x0;var _0x5bab5f=_0x2e80[_0x3124f8];return _0x5bab5f;};'use strict';var multer=require(_0x02e8('0x0'));var util=require('util');var path=require(_0x02e8('0x1'));var timeout=require(_0x02e8('0x2'));var express=require(_0x02e8('0x3'));var router=express[_0x02e8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x02e8('0x5'));var interaction=require(_0x02e8('0x6'));var config=require('../../config/environment');var controller=require(_0x02e8('0x7'));router['get']('/',auth[_0x02e8('0x8')](),controller[_0x02e8('0x9')]);router[_0x02e8('0xa')](_0x02e8('0xb'),auth[_0x02e8('0x8')](),controller[_0x02e8('0xc')]);router[_0x02e8('0xa')]('/:id',auth[_0x02e8('0x8')](),controller['show']);router[_0x02e8('0xd')]('/',auth['isAuthenticated'](),controller[_0x02e8('0xe')]);router[_0x02e8('0xf')](_0x02e8('0x10'),auth['isAuthenticated'](),controller[_0x02e8('0x11')]);module[_0x02e8('0x12')]=router;
\ No newline at end of file
index 693b028..959f7c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['name','sequelize','STRING'];(function(_0x118767,_0x1930e2){var _0x2cf1a8=function(_0x28fd15){while(--_0x28fd15){_0x118767['push'](_0x118767['shift']());}};_0x2cf1a8(++_0x1930e2);}(_0x6aa7,0x178));var _0x76aa=function(_0x20ab6c,_0x3390f6){_0x20ab6c=_0x20ab6c-0x0;var _0x31ae1d=_0x6aa7[_0x20ab6c];return _0x31ae1d;};'use strict';var Sequelize=require(_0x76aa('0x0'));module['exports']={'name':{'type':Sequelize[_0x76aa('0x1')],'unique':_0x76aa('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x76aa('0x1')]},'dialPrefix':{'type':Sequelize[_0x76aa('0x1')]}};
\ No newline at end of file
+var _0x9879=['exports','STRING','sequelize'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9879,0x98));var _0x9987=function(_0x2d4b78,_0xa41467){_0x2d4b78=_0x2d4b78-0x0;var _0x14da49=_0x9879[_0x2d4b78];return _0x14da49;};'use strict';var Sequelize=require(_0x9987('0x0'));module[_0x9987('0x1')]={'name':{'type':Sequelize[_0x9987('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9987('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6d60906..0d0aaa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68be=['then','get','Lists','UserProfileResource','destroy','status','error','stack','name','send','CmList','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','findAll','catch','show','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','Disposition','getDispositions','findOne','pick','rows','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','ListId','push','each','omit','success','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','cf_%d','raw','getContactsCsv','format','now','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','addCustomField','sequelize','Sequelize','text','TEXT','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','getCustomFields','findAndCountAll','addAgents','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','sendStatus','end','json','offset','undefined','limit','count','set','apply','reject','save','update'];(function(_0x4ce72d,_0xfcce27){var _0x48ca1d=function(_0x197beb){while(--_0x197beb){_0x4ce72d['push'](_0x4ce72d['shift']());}};_0x48ca1d(++_0xfcce27);}(_0x68be,0xf6));var _0xe68b=function(_0x400d0f,_0x195810){_0x400d0f=_0x400d0f-0x0;var _0x2087ba=_0x68be[_0x400d0f];return _0x2087ba;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe68b('0x0'));var zipdir=require(_0xe68b('0x1'));var jsonpatch=require(_0xe68b('0x2'));var rp=require(_0xe68b('0x3'));var moment=require(_0xe68b('0x4'));var BPromise=require(_0xe68b('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe68b('0x6'));var sox=require(_0xe68b('0x7'));var csv=require(_0xe68b('0x8'));var ejs=require(_0xe68b('0x9'));var fs=require('fs');var fs_extra=require(_0xe68b('0xa'));var _=require('lodash');var squel=require(_0xe68b('0xb'));var crypto=require(_0xe68b('0xc'));var jsforce=require(_0xe68b('0xd'));var deskjs=require(_0xe68b('0xe'));var toCsv=require(_0xe68b('0x8'));var querystring=require(_0xe68b('0xf'));var Papa=require(_0xe68b('0x10'));var Redis=require('ioredis');var authService=require(_0xe68b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe68b('0x12'));var hardwareService=require(_0xe68b('0x13'));var logger=require(_0xe68b('0x14'))(_0xe68b('0x15'));var utils=require(_0xe68b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe68b('0x17'));var db=require(_0xe68b('0x18'))['db'];config[_0xe68b('0x19')]=_[_0xe68b('0x1a')](config[_0xe68b('0x19')],{'host':_0xe68b('0x1b'),'port':0x18eb});var socket=require(_0xe68b('0x1c'))(new Redis(config[_0xe68b('0x19')]));require(_0xe68b('0x1d'))['register'](socket);function respondWithStatusCode(_0x188a93,_0x544891){_0x544891=_0x544891||0xcc;return function(_0x14c00c){if(_0x14c00c){return _0x188a93[_0xe68b('0x1e')](_0x544891);}return _0x188a93['status'](_0x544891)[_0xe68b('0x1f')]();};}function respondWithResult(_0x1dca8a,_0x173e48){_0x173e48=_0x173e48||0xc8;return function(_0x1f62dc){if(_0x1f62dc){return _0x1dca8a['status'](_0x173e48)[_0xe68b('0x20')](_0x1f62dc);}};}function respondWithFilteredResult(_0x36c5c,_0x65179){return function(_0x5e5b7c){if(_0x5e5b7c){var _0x55f06e=typeof _0x65179[_0xe68b('0x21')]===_0xe68b('0x22')&&typeof _0x65179[_0xe68b('0x23')]===_0xe68b('0x22');var _0x217c79=_0x5e5b7c[_0xe68b('0x24')];var _0x437e82=_0x55f06e?0x0:_0x65179['offset'];var _0x59dd0d=_0x55f06e?_0x5e5b7c['count']:_0x65179[_0xe68b('0x21')]+_0x65179[_0xe68b('0x23')];var _0x28d5bd;if(_0x59dd0d>=_0x217c79){_0x59dd0d=_0x217c79;_0x28d5bd=0xc8;}else{_0x28d5bd=0xce;}_0x36c5c['status'](_0x28d5bd);return _0x36c5c[_0xe68b('0x25')]('Content-Range',_0x437e82+'-'+_0x59dd0d+'/'+_0x217c79)[_0xe68b('0x20')](_0x5e5b7c);}return null;};}function patchUpdates(_0x6e9c63){return function(_0xe76478){try{jsonpatch[_0xe68b('0x26')](_0xe76478,_0x6e9c63,!![]);}catch(_0x4f421c){return BPromise[_0xe68b('0x27')](_0x4f421c);}return _0xe76478[_0xe68b('0x28')]();};}function saveUpdates(_0x1e8822,_0x24c19e){return function(_0x8504d0){if(_0x8504d0){return _0x8504d0[_0xe68b('0x29')](_0x1e8822)[_0xe68b('0x2a')](function(_0x1af349){return _0x1af349;});}return null;};}function removeEntity(_0x5f10a4,_0x136d7e){return function(_0x57b049){if(_0x57b049){return _0x57b049['destroy']()[_0xe68b('0x2a')](function(){var _0xcc85f0=_0x57b049[_0xe68b('0x2b')]({'plain':!![]});var _0x51d1ed=_0xe68b('0x2c');return db[_0xe68b('0x2d')][_0xe68b('0x2e')]({'where':{'type':_0x51d1ed,'resourceId':_0xcc85f0['id']}})[_0xe68b('0x2a')](function(){return _0x57b049;});})[_0xe68b('0x2a')](function(){_0x5f10a4[_0xe68b('0x2f')](0xcc)[_0xe68b('0x1f')]();});}};}function handleEntityNotFound(_0x14e4c9,_0x13894c){return function(_0x49e944){if(!_0x49e944){_0x14e4c9['sendStatus'](0x194);}return _0x49e944;};}function handleError(_0x2d938d,_0x1f2c71){_0x1f2c71=_0x1f2c71||0x1f4;return function(_0x398cd6){logger[_0xe68b('0x30')](_0x398cd6[_0xe68b('0x31')]);if(_0x398cd6[_0xe68b('0x32')]){delete _0x398cd6[_0xe68b('0x32')];}_0x2d938d[_0xe68b('0x2f')](_0x1f2c71)[_0xe68b('0x33')](_0x398cd6);};}exports['index']=function(_0x4a6bcb,_0x2e835b){var _0x4855f2={},_0x2932b6={},_0x5a74e1={'count':0x0,'rows':[]};var _0x17761d=_['map'](db[_0xe68b('0x34')][_0xe68b('0x35')],function(_0x513a61){return{'name':_0x513a61[_0xe68b('0x36')],'type':_0x513a61[_0xe68b('0x37')][_0xe68b('0x38')]};});_0x2932b6[_0xe68b('0x39')]=_[_0xe68b('0x3a')](_0x17761d,_0xe68b('0x32'));_0x2932b6['query']=_[_0xe68b('0x3b')](_0x4a6bcb['query']);_0x2932b6[_0xe68b('0x3c')]=_[_0xe68b('0x3d')](_0x2932b6['model'],_0x2932b6[_0xe68b('0x3e')]);_0x4855f2[_0xe68b('0x3f')]=_['intersection'](_0x2932b6[_0xe68b('0x39')],qs['fields'](_0x4a6bcb[_0xe68b('0x3e')][_0xe68b('0x40')]));_0x4855f2[_0xe68b('0x3f')]=_0x4855f2['attributes'][_0xe68b('0x41')]?_0x4855f2[_0xe68b('0x3f')]:_0x2932b6[_0xe68b('0x39')];if(!_0x4a6bcb[_0xe68b('0x3e')][_0xe68b('0x42')](_0xe68b('0x43'))){_0x4855f2[_0xe68b('0x23')]=qs[_0xe68b('0x23')](_0x4a6bcb[_0xe68b('0x3e')][_0xe68b('0x23')]);_0x4855f2['offset']=qs[_0xe68b('0x21')](_0x4a6bcb[_0xe68b('0x3e')][_0xe68b('0x21')]);}_0x4855f2[_0xe68b('0x44')]=qs[_0xe68b('0x45')](_0x4a6bcb[_0xe68b('0x3e')][_0xe68b('0x45')]);_0x4855f2[_0xe68b('0x46')]=qs[_0xe68b('0x3c')](_['pick'](_0x4a6bcb[_0xe68b('0x3e')],_0x2932b6[_0xe68b('0x3c')]),_0x17761d);if(_0x4a6bcb[_0xe68b('0x3e')][_0xe68b('0x47')]){_0x4855f2[_0xe68b('0x46')]=_[_0xe68b('0x48')](_0x4855f2[_0xe68b('0x46')],{'$or':_['map'](_0x17761d,function(_0x308839){if(_0x308839['type']!=='VIRTUAL'){var _0x547ebb={};_0x547ebb[_0x308839[_0xe68b('0x32')]]={'$like':'%'+_0x4a6bcb['query'][_0xe68b('0x47')]+'%'};return _0x547ebb;}})});}_0x4855f2=_[_0xe68b('0x48')]({},_0x4855f2,_0x4a6bcb[_0xe68b('0x49')]);var _0x47dfde={'where':_0x4855f2[_0xe68b('0x46')]};return db[_0xe68b('0x34')][_0xe68b('0x24')](_0x47dfde)['then'](function(_0x2fcbb7){_0x5a74e1[_0xe68b('0x24')]=_0x2fcbb7;if(_0x4a6bcb[_0xe68b('0x3e')]['includeAll']){_0x4855f2[_0xe68b('0x4a')]=[{'all':!![]}];}return db[_0xe68b('0x34')][_0xe68b('0x4b')](_0x4855f2);})[_0xe68b('0x2a')](function(_0x393a1c){_0x5a74e1['rows']=_0x393a1c;return _0x5a74e1;})[_0xe68b('0x2a')](respondWithFilteredResult(_0x2e835b,_0x4855f2))[_0xe68b('0x4c')](handleError(_0x2e835b,null));};exports[_0xe68b('0x4d')]=function(_0x3f970a,_0x4e177c){var _0x3dc9a0={'raw':![],'where':{'id':_0x3f970a['params']['id']}},_0x3e7136={};_0x3e7136['model']=_['keys'](db[_0xe68b('0x34')][_0xe68b('0x35')]);_0x3e7136['query']=_[_0xe68b('0x3b')](_0x3f970a[_0xe68b('0x3e')]);_0x3e7136[_0xe68b('0x3c')]=_[_0xe68b('0x3d')](_0x3e7136[_0xe68b('0x39')],_0x3e7136[_0xe68b('0x3e')]);_0x3dc9a0[_0xe68b('0x3f')]=_[_0xe68b('0x3d')](_0x3e7136[_0xe68b('0x39')],qs[_0xe68b('0x40')](_0x3f970a[_0xe68b('0x3e')][_0xe68b('0x40')]));_0x3dc9a0[_0xe68b('0x3f')]=_0x3dc9a0[_0xe68b('0x3f')][_0xe68b('0x41')]?_0x3dc9a0[_0xe68b('0x3f')]:_0x3e7136[_0xe68b('0x39')];if(_0x3f970a[_0xe68b('0x3e')][_0xe68b('0x4e')]){_0x3dc9a0[_0xe68b('0x4a')]=[{'all':!![]}];}_0x3dc9a0=_[_0xe68b('0x48')]({},_0x3dc9a0,_0x3f970a[_0xe68b('0x49')]);return db[_0xe68b('0x34')][_0xe68b('0x4f')](_0x3dc9a0)['then'](handleEntityNotFound(_0x4e177c,null))['then'](respondWithResult(_0x4e177c,null))[_0xe68b('0x4c')](handleError(_0x4e177c,null));};exports[_0xe68b('0x50')]=function(_0x1e2b40,_0x47a5c6){return db[_0xe68b('0x34')][_0xe68b('0x50')](_0x1e2b40[_0xe68b('0x51')],{})['then'](function(_0x570b80){var _0x5d78f1=_0x1e2b40['user'][_0xe68b('0x2b')]({'plain':!![]});if(!_0x5d78f1)throw new Error(_0xe68b('0x52'));if(_0x5d78f1[_0xe68b('0x53')]===_0xe68b('0x54')){var _0x4072af=_0x570b80[_0xe68b('0x2b')]({'plain':!![]});var _0x52c2ff=_0xe68b('0x2c');return db[_0xe68b('0x55')][_0xe68b('0x4f')]({'where':{'name':_0x52c2ff,'userProfileId':_0x5d78f1['userProfileId']},'raw':!![]})[_0xe68b('0x2a')](function(_0x3cbfa8){if(_0x3cbfa8&&_0x3cbfa8['autoAssociation']===0x0){return db[_0xe68b('0x2d')][_0xe68b('0x50')]({'name':_0x4072af[_0xe68b('0x32')],'resourceId':_0x4072af['id'],'type':_0x3cbfa8['name'],'sectionId':_0x3cbfa8['id']},{})[_0xe68b('0x2a')](function(){return _0x570b80;});}else{return _0x570b80;}})['catch'](function(_0x22c676){logger[_0xe68b('0x30')](_0xe68b('0x56'),_0x22c676);throw _0x22c676;});}return _0x570b80;})['then'](respondWithResult(_0x47a5c6,0xc9))[_0xe68b('0x4c')](handleError(_0x47a5c6,null));};exports['update']=function(_0x8dcd3f,_0x30328d){if(_0x8dcd3f['body']['id']){delete _0x8dcd3f[_0xe68b('0x51')]['id'];}return db['CmList']['find']({'where':{'id':_0x8dcd3f[_0xe68b('0x57')]['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x30328d,null))[_0xe68b('0x2a')](saveUpdates(_0x8dcd3f['body'],null))['then'](respondWithResult(_0x30328d,null))[_0xe68b('0x4c')](handleError(_0x30328d,null));};exports[_0xe68b('0x2e')]=function(_0x4388c1,_0x5638e){return db['CmList'][_0xe68b('0x4f')]({'where':{'id':_0x4388c1[_0xe68b('0x57')]['id']}})['then'](handleEntityNotFound(_0x5638e,null))[_0xe68b('0x2a')](removeEntity(_0x5638e,null))[_0xe68b('0x4c')](handleError(_0x5638e,null));};exports[_0xe68b('0x58')]=function(_0x2d0f5f,_0xe8e003){return db[_0xe68b('0x34')]['describe']()[_0xe68b('0x2a')](respondWithResult(_0xe8e003,null))[_0xe68b('0x4c')](handleError(_0xe8e003,null));};exports[_0xe68b('0x59')]=function(_0x17a3e0,_0x52bbd2,_0x4cbfb0){if(_0x17a3e0[_0xe68b('0x51')]['id']){delete _0x17a3e0[_0xe68b('0x51')]['id'];}return db[_0xe68b('0x34')][_0xe68b('0x4f')]({'where':{'id':_0x17a3e0[_0xe68b('0x57')]['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x52bbd2,null))[_0xe68b('0x2a')](function(_0x2a7b62){if(_0x2a7b62){_0x17a3e0[_0xe68b('0x51')]['ListId']=_0x2a7b62['id'];return db[_0xe68b('0x5a')][_0xe68b('0x50')](_0x17a3e0[_0xe68b('0x51')]);}})[_0xe68b('0x2a')](respondWithResult(_0x52bbd2,null))[_0xe68b('0x4c')](handleError(_0x52bbd2,null));};exports[_0xe68b('0x5b')]=function(_0x29b1db,_0x3c3ead,_0x166dd6){var _0x46fc8d={'raw':![],'where':{}};var _0x5ef8c4={};var _0x5c5bdb={'count':0x0,'rows':[]};return db['CmList'][_0xe68b('0x5c')]({'where':{'id':_0x29b1db['params']['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x3c3ead,null))['then'](function(_0x5c7542){if(_0x5c7542){_0x5ef8c4[_0xe68b('0x39')]=_[_0xe68b('0x3b')](db[_0xe68b('0x5a')][_0xe68b('0x35')]);_0x5ef8c4[_0xe68b('0x3e')]=_[_0xe68b('0x3b')](_0x29b1db[_0xe68b('0x3e')]);_0x5ef8c4[_0xe68b('0x3c')]=_[_0xe68b('0x3d')](_0x5ef8c4['model'],_0x5ef8c4['query']);_0x46fc8d[_0xe68b('0x3f')]=_[_0xe68b('0x3d')](_0x5ef8c4[_0xe68b('0x39')],qs[_0xe68b('0x40')](_0x29b1db[_0xe68b('0x3e')]['fields']));_0x46fc8d['attributes']=_0x46fc8d[_0xe68b('0x3f')][_0xe68b('0x41')]?_0x46fc8d[_0xe68b('0x3f')]:_0x5ef8c4[_0xe68b('0x39')];if(!_0x29b1db[_0xe68b('0x3e')][_0xe68b('0x42')](_0xe68b('0x43'))){_0x46fc8d[_0xe68b('0x23')]=qs[_0xe68b('0x23')](_0x29b1db[_0xe68b('0x3e')][_0xe68b('0x23')]);_0x46fc8d['offset']=qs['offset'](_0x29b1db[_0xe68b('0x3e')]['offset']);}_0x46fc8d['order']=qs[_0xe68b('0x45')](_0x29b1db[_0xe68b('0x3e')][_0xe68b('0x45')]);_0x46fc8d[_0xe68b('0x46')]=qs[_0xe68b('0x3c')](_[_0xe68b('0x5d')](_0x29b1db[_0xe68b('0x3e')],_0x5ef8c4[_0xe68b('0x3c')]));_0x46fc8d[_0xe68b('0x46')]['ListId']=_0x5c7542['id'];if(_0x29b1db[_0xe68b('0x3e')][_0xe68b('0x47')]){_0x46fc8d['where']=_[_0xe68b('0x48')](_0x46fc8d['where'],{'$or':_[_0xe68b('0x3a')](_0x46fc8d[_0xe68b('0x3f')],function(_0x32147d){var _0x1a11b3={};_0x1a11b3[_0x32147d]={'$like':'%'+_0x29b1db[_0xe68b('0x3e')][_0xe68b('0x47')]+'%'};return _0x1a11b3;})});}_0x46fc8d=_[_0xe68b('0x48')]({},_0x46fc8d,_0x29b1db['options']);return db[_0xe68b('0x5a')]['count']({'where':_0x46fc8d[_0xe68b('0x46')]})[_0xe68b('0x2a')](function(_0x5e45ab){_0x5c5bdb[_0xe68b('0x24')]=_0x5e45ab;if(_0x29b1db[_0xe68b('0x3e')][_0xe68b('0x4e')]){_0x46fc8d[_0xe68b('0x4a')]=[{'all':!![]}];}return db[_0xe68b('0x5a')]['findAll'](_0x46fc8d);})[_0xe68b('0x2a')](function(_0x5ea9e3){_0x5c5bdb[_0xe68b('0x5e')]=_0x5ea9e3;return _0x5c5bdb;});}})[_0xe68b('0x2a')](respondWithFilteredResult(_0x3c3ead,_0x46fc8d))[_0xe68b('0x4c')](handleError(_0x3c3ead,null));};exports[_0xe68b('0x5f')]=function(_0x42f345,_0x1f853d,_0x2790df){return db['CmList'][_0xe68b('0x4f')]({'where':{'id':_0x42f345['params']['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x1f853d,null))[_0xe68b('0x2a')](function(_0x24216a){if(_0x24216a){return _0x24216a[_0xe68b('0x5f')](_0x42f345[_0xe68b('0x3e')][_0xe68b('0x60')]);}})[_0xe68b('0x2a')](respondWithStatusCode(_0x1f853d,null))[_0xe68b('0x4c')](handleError(_0x1f853d,null));};exports[_0xe68b('0x61')]=function(_0x3c3c4a,_0x292d84,_0x3e81ed){return db[_0xe68b('0x34')]['find']({'where':{'id':_0x3c3c4a[_0xe68b('0x57')]['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x292d84,null))[_0xe68b('0x2a')](function(_0x455e8d){if(_0x455e8d){var _0x24bd15=[];var _0x56a904={'success':[],'errors':[]};return db[_0xe68b('0x62')]['describe']()[_0xe68b('0x2a')](function(_0x2eb57f){if(_0x3c3c4a[_0xe68b('0x51')][_0xe68b('0x63')]&&_[_0xe68b('0x64')](_0x3c3c4a[_0xe68b('0x51')][_0xe68b('0x63')])){if(_0x3c3c4a[_0xe68b('0x51')][_0xe68b('0x63')][_0xe68b('0x41')]){_0x3c3c4a[_0xe68b('0x51')][_0xe68b('0x63')]=_0x3c3c4a['body'][_0xe68b('0x63')][_0xe68b('0x65')](';')+';';}else{_0x3c3c4a[_0xe68b('0x51')]['tags']=null;}}else{_0x3c3c4a[_0xe68b('0x51')][_0xe68b('0x63')]=null;}if(_0x3c3c4a[_0xe68b('0x51')]&&_[_0xe68b('0x64')](_0x3c3c4a['body'])){for(var _0x29e9a6=0x0;_0x29e9a6<_0x3c3c4a[_0xe68b('0x51')][_0xe68b('0x41')];_0x29e9a6+=0x1){_0x3c3c4a[_0xe68b('0x51')][_0x29e9a6][_0xe68b('0x66')]=_0x3c3c4a[_0xe68b('0x57')]['id'];_0x24bd15[_0xe68b('0x67')](_0x3c3c4a[_0xe68b('0x51')][_0x29e9a6]);}return BPromise[_0xe68b('0x68')](_0x24bd15,function(_0x589189){return db[_0xe68b('0x62')][_0xe68b('0x50')](_[_0xe68b('0x69')](_0x589189,[_0xe68b('0x60'),'id'])||{},{'fields':_[_0xe68b('0x3b')](_0x2eb57f),'raw':!![]})['then'](function(_0x150746){_0x56a904[_0xe68b('0x6a')][_0xe68b('0x67')](_0x150746['dataValues']);})['catch'](function(_0x2d885e){_0x56a904['errors'][_0xe68b('0x67')]({'data':_0x589189,'error':_0x2d885e['message']});});})[_0xe68b('0x2a')](function(_0x259f18){return _0x56a904;})['catch'](function(_0x4f4a92){return _0x4f4a92;});}else{_0x292d84['status'](0x190)[_0xe68b('0x20')]({'message':_0xe68b('0x6b')});}});}})[_0xe68b('0x2a')](respondWithResult(_0x292d84,null))[_0xe68b('0x4c')](handleError(_0x292d84,null));};exports[_0xe68b('0x6c')]=function(_0xee3bd,_0x9fb02f,_0x588e45){var _0x37e586;return db[_0xe68b('0x34')][_0xe68b('0x4f')]({'where':{'id':_0xee3bd[_0xe68b('0x57')]['id']},'include':[{'model':db[_0xe68b('0x6d')],'as':_0xe68b('0x6e')}]})[_0xe68b('0x2a')](handleEntityNotFound(_0x9fb02f,null))['then'](function(_0x3daeaf){if(_0x3daeaf){_0x37e586=_0x3daeaf;return db[_0xe68b('0x62')][_0xe68b('0x35')];}})['then'](function(_0x5f2bee){if(_0x5f2bee){var _0x4f730a={};var _0x508bde={};_0x508bde[_0xe68b('0x39')]=_[_0xe68b('0x6f')](_['keys'](_0x5f2bee),_[_0xe68b('0x3a')](_0x37e586[_0xe68b('0x6e')],function(_0x2c81f4){return util['format'](_0xe68b('0x70'),_0x2c81f4['id']);}));_0x508bde[_0xe68b('0x3e')]=_[_0xe68b('0x3b')](_0xee3bd['query']);_0x508bde[_0xe68b('0x3c')]=_[_0xe68b('0x3d')](_0x508bde[_0xe68b('0x39')],_0x508bde[_0xe68b('0x3e')]);_0x4f730a[_0xe68b('0x3f')]=_[_0xe68b('0x3d')](_0x508bde[_0xe68b('0x39')],qs[_0xe68b('0x40')](_0xee3bd['query'][_0xe68b('0x40')]));_0x4f730a[_0xe68b('0x3f')]=_0x4f730a[_0xe68b('0x3f')]['length']?_0x4f730a['attributes']:_0x508bde['model'];if(!_0xee3bd[_0xe68b('0x3e')]['hasOwnProperty'](_0xe68b('0x43'))){_0x4f730a[_0xe68b('0x23')]=qs['limit'](_0xee3bd[_0xe68b('0x3e')][_0xe68b('0x23')]);_0x4f730a['offset']=qs['offset'](_0xee3bd[_0xe68b('0x3e')][_0xe68b('0x21')]);}_0x4f730a[_0xe68b('0x44')]=qs['sort'](_0xee3bd[_0xe68b('0x3e')]['sort']);_0x4f730a['where']=qs[_0xe68b('0x3c')](_['pick'](_0xee3bd[_0xe68b('0x3e')],_0x508bde[_0xe68b('0x3c')]));_0x4f730a[_0xe68b('0x71')]=!![];if(_0xee3bd[_0xe68b('0x3e')][_0xe68b('0x47')]){_0x4f730a['where']=_[_0xe68b('0x48')](_0x4f730a['where'],{'$or':_[_0xe68b('0x3a')](_0x4f730a[_0xe68b('0x3f')],function(_0x18eb5b){var _0x38bba5={};_0x38bba5[_0x18eb5b]={'$like':'%'+_0xee3bd['query'][_0xe68b('0x47')]+'%'};return _0x38bba5;})});}_0x4f730a=_[_0xe68b('0x48')]({},_0x4f730a,_0xee3bd[_0xe68b('0x49')]);return _0x37e586[_0xe68b('0x6c')](_0x4f730a);}})[_0xe68b('0x2a')](respondWithResult(_0x9fb02f,null))[_0xe68b('0x4c')](handleError(_0x9fb02f,null));};exports[_0xe68b('0x72')]=function(_0x3c7dcb,_0x28ccdd,_0x576bab){var _0x59db5e;return db[_0xe68b('0x34')]['find']({'where':{'id':_0x3c7dcb[_0xe68b('0x57')]['id']},'include':[{'model':db[_0xe68b('0x6d')],'as':_0xe68b('0x6e')}]})[_0xe68b('0x2a')](handleEntityNotFound(_0x28ccdd,null))['then'](function(_0xf69c0e){if(_0xf69c0e){_0x59db5e=_0xf69c0e;return db[_0xe68b('0x62')][_0xe68b('0x35')];}})[_0xe68b('0x2a')](function(_0x4a697f){if(_0x4a697f){var _0x548e30={};var _0x41fc20={};_0x41fc20['model']=_[_0xe68b('0x6f')](_[_0xe68b('0x3b')](_0x4a697f),_[_0xe68b('0x3a')](_0x59db5e[_0xe68b('0x6e')],function(_0xff293a){return util[_0xe68b('0x73')](_0xe68b('0x70'),_0xff293a['id']);}));_0x41fc20[_0xe68b('0x3e')]=_[_0xe68b('0x3b')](_0x3c7dcb[_0xe68b('0x3e')]);_0x41fc20[_0xe68b('0x3c')]=_[_0xe68b('0x3d')](_0x41fc20[_0xe68b('0x39')],_0x41fc20[_0xe68b('0x3e')]);_0x548e30[_0xe68b('0x3f')]=_[_0xe68b('0x3d')](_0x41fc20[_0xe68b('0x39')],qs['fields'](_0x3c7dcb[_0xe68b('0x3e')]['fields']));_0x548e30['attributes']=_0x548e30[_0xe68b('0x3f')][_0xe68b('0x41')]?_0x548e30[_0xe68b('0x3f')]:_0x41fc20[_0xe68b('0x39')];if(!_0x3c7dcb[_0xe68b('0x3e')][_0xe68b('0x42')](_0xe68b('0x43'))){_0x548e30[_0xe68b('0x23')]=qs['limit'](_0x3c7dcb[_0xe68b('0x3e')]['limit']);_0x548e30['offset']=qs['offset'](_0x3c7dcb[_0xe68b('0x3e')][_0xe68b('0x21')]);}_0x548e30[_0xe68b('0x44')]=qs['sort'](_0x3c7dcb['query']['sort']);_0x548e30[_0xe68b('0x46')]=qs[_0xe68b('0x3c')](_[_0xe68b('0x5d')](_0x3c7dcb['query'],_0x41fc20[_0xe68b('0x3c')]));_0x548e30[_0xe68b('0x71')]=!![];if(_0x3c7dcb[_0xe68b('0x3e')][_0xe68b('0x47')]){_0x548e30[_0xe68b('0x46')]=_[_0xe68b('0x48')](_0x548e30[_0xe68b('0x46')],{'$or':_['map'](_0x548e30['attributes'],function(_0x4d1825){var _0x36904b={};_0x36904b[_0x4d1825]={'$like':'%'+_0x3c7dcb[_0xe68b('0x3e')]['filter']+'%'};return _0x36904b;})});}_0x548e30=_['merge']({},_0x548e30,_0x3c7dcb[_0xe68b('0x49')]);return _0x59db5e['getContacts'](_0x548e30);}})[_0xe68b('0x2a')](function(_0x3f2cec){if(!_['isEmpty'](_0x3f2cec)){var _0xe3748b=toCsv(_0x3f2cec);var _0x33a6fc=Date[_0xe68b('0x74')]();fs['writeFileSync'](util['format'](_0xe68b('0x75'),_0x59db5e['id'],_0x33a6fc),_0xe3748b);_0x28ccdd[_0xe68b('0x76')]('Content-disposition',_0xe68b('0x77')+util['format'](_0xe68b('0x78'),_0x59db5e['id'],_0x33a6fc));_0x28ccdd[_0xe68b('0x76')](_0xe68b('0x79'),_0xe68b('0x7a'));return _0x28ccdd['download'](util['format']('/tmp/list_%d_%s.csv',_0x59db5e['id'],_0x33a6fc));}else{return _0x28ccdd[_0xe68b('0x1e')](0xcc);}})['catch'](handleError(_0x28ccdd,null));};exports[_0xe68b('0x7b')]=function(_0x2e8e85,_0x60bd02,_0x561fd1){var _0x298df4;delete _0x2e8e85[_0xe68b('0x51')]['id'];return db[_0xe68b('0x34')][_0xe68b('0x5c')]({'where':{'id':_0x2e8e85['params']['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x60bd02,null))['then'](function(_0x4b439a){if(_0x4b439a){return db[_0xe68b('0x7c')]['transaction'](function(_0x588a5d){return db[_0xe68b('0x6d')][_0xe68b('0x50')](_0x2e8e85[_0xe68b('0x51')],{'transaction':_0x588a5d})[_0xe68b('0x2a')](function(_0x5cc8f6){_0x298df4=_0x5cc8f6;return _0x4b439a['addCustomFields'](_0x5cc8f6,{'transaction':_0x588a5d});})[_0xe68b('0x2a')](function(){var _0x4418e8={'type':db[_0xe68b('0x7d')]['TEXT'],'transaction':_0x588a5d};switch(_0x2e8e85[_0xe68b('0x51')][_0xe68b('0x37')]){case _0xe68b('0x7e'):_0x4418e8[_0xe68b('0x37')]=db[_0xe68b('0x7d')][_0xe68b('0x7f')];break;case'number':_0x4418e8[_0xe68b('0x37')]=db['Sequelize']['INTEGER'];break;case _0xe68b('0x80'):_0x4418e8[_0xe68b('0x37')]=db[_0xe68b('0x7d')][_0xe68b('0x81')];_0x4418e8[_0xe68b('0x82')]=![];break;default:}return db[_0xe68b('0x7c')][_0xe68b('0x83')][_0xe68b('0x84')](_0xe68b('0x85'),util['format']('cf_%s',_0x298df4['id']),_0x4418e8);})[_0xe68b('0x2a')](function(){return _0x298df4;});});}})['then'](respondWithResult(_0x60bd02,null))[_0xe68b('0x4c')](handleError(_0x60bd02,null));};exports[_0xe68b('0x86')]=function(_0x5546a0,_0x1cbace,_0x49cd58){var _0x4d61a1={};var _0x467fd6={};var _0x494d67;var _0x23c1ef;return db[_0xe68b('0x34')]['findOne']({'where':{'id':_0x5546a0[_0xe68b('0x57')]['id']}})['then'](handleEntityNotFound(_0x1cbace,null))[_0xe68b('0x2a')](function(_0x4908ae){if(_0x4908ae){_0x494d67=_0x4908ae;_0x467fd6[_0xe68b('0x39')]=_['keys'](db[_0xe68b('0x6d')]['rawAttributes']);_0x467fd6['query']=_[_0xe68b('0x3b')](_0x5546a0[_0xe68b('0x3e')]);_0x467fd6[_0xe68b('0x3c')]=_[_0xe68b('0x3d')](_0x467fd6['model'],_0x467fd6[_0xe68b('0x3e')]);_0x4d61a1[_0xe68b('0x3f')]=_['intersection'](_0x467fd6[_0xe68b('0x39')],qs[_0xe68b('0x40')](_0x5546a0[_0xe68b('0x3e')][_0xe68b('0x40')]));_0x4d61a1[_0xe68b('0x3f')]=_0x4d61a1[_0xe68b('0x3f')][_0xe68b('0x41')]?_0x4d61a1[_0xe68b('0x3f')]:_0x467fd6[_0xe68b('0x39')];_0x4d61a1[_0xe68b('0x44')]=qs[_0xe68b('0x45')](_0x5546a0['query'][_0xe68b('0x45')]);_0x4d61a1[_0xe68b('0x46')]=qs[_0xe68b('0x3c')](_[_0xe68b('0x5d')](_0x5546a0[_0xe68b('0x3e')],_0x467fd6[_0xe68b('0x3c')]));_0x4d61a1[_0xe68b('0x46')]=_[_0xe68b('0x48')](_0x4d61a1[_0xe68b('0x46')],{'$or':[{'ListId':_0x4908ae['id']},{'ListId':null}]});if(_0x5546a0[_0xe68b('0x3e')][_0xe68b('0x47')]){_0x4d61a1[_0xe68b('0x46')]=_[_0xe68b('0x48')](_0x4d61a1[_0xe68b('0x46')],{'$or':_[_0xe68b('0x3a')](_0x4d61a1[_0xe68b('0x3f')],function(_0x1dba9b){var _0x125b3f={};_0x125b3f[_0x1dba9b]={'$like':'%'+_0x5546a0[_0xe68b('0x3e')][_0xe68b('0x47')]+'%'};return _0x125b3f;})});}_0x4d61a1=_[_0xe68b('0x48')]({},_0x4d61a1,_0x5546a0[_0xe68b('0x49')]);return db[_0xe68b('0x6d')][_0xe68b('0x87')](_0x4d61a1);}})[_0xe68b('0x2a')](respondWithResult(_0x1cbace,null))[_0xe68b('0x4c')](handleError(_0x1cbace,null));};exports[_0xe68b('0x88')]=function(_0x3014e7,_0x4bb507,_0x3d7b7b){return db[_0xe68b('0x34')][_0xe68b('0x4f')]({'where':{'id':_0x3014e7['params']['id']}})['then'](handleEntityNotFound(_0x4bb507,null))['then'](function(_0x421bd2){if(_0x421bd2){return _0x421bd2[_0xe68b('0x88')](_0x3014e7[_0xe68b('0x51')][_0xe68b('0x60')],_['omit'](_0x3014e7[_0xe68b('0x51')],['ids','id'])||{})[_0xe68b('0x89')](function(_0x4491bb){for(var _0x15a98c=0x0;_0x15a98c<_0x3014e7[_0xe68b('0x51')][_0xe68b('0x60')][_0xe68b('0x41')];_0x15a98c+=0x1){socket['emit'](_0xe68b('0x8a'),{'UserId':Number(_0x3014e7[_0xe68b('0x51')][_0xe68b('0x60')][_0x15a98c]),'CmListId':Number(_0x3014e7[_0xe68b('0x57')]['id'])});}return _0x4491bb;});}})[_0xe68b('0x2a')](respondWithResult(_0x4bb507,null))['catch'](handleError(_0x4bb507,null));};exports['removeAgents']=function(_0x2cd16d,_0x4b3108,_0x59e01d){return db[_0xe68b('0x34')][_0xe68b('0x4f')]({'where':{'id':_0x2cd16d[_0xe68b('0x57')]['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x4b3108,null))['then'](function(_0x3fd4d3){if(_0x3fd4d3){return _0x3fd4d3[_0xe68b('0x8b')](_0x2cd16d[_0xe68b('0x3e')]['ids'])[_0xe68b('0x2a')](function(){if(_[_0xe68b('0x64')](_0x2cd16d['query'][_0xe68b('0x60')])){for(var _0x2ca5c6=0x0;_0x2ca5c6<_0x2cd16d['query'][_0xe68b('0x60')][_0xe68b('0x41')];_0x2ca5c6+=0x1){socket[_0xe68b('0x8c')]('userCmList:remove',{'UserId':Number(_0x2cd16d[_0xe68b('0x3e')][_0xe68b('0x60')][_0x2ca5c6]),'CmListId':Number(_0x2cd16d[_0xe68b('0x57')]['id'])});}}else{socket[_0xe68b('0x8c')](_0xe68b('0x8d'),{'UserId':Number(_0x2cd16d[_0xe68b('0x3e')][_0xe68b('0x60')]),'CmListId':Number(_0x2cd16d[_0xe68b('0x57')]['id'])});}});}})[_0xe68b('0x2a')](respondWithStatusCode(_0x4b3108,null))[_0xe68b('0x4c')](handleError(_0x4b3108,null));};exports[_0xe68b('0x8e')]=function(_0x2c8ee9,_0x24b18c,_0x5b1f93){var _0x5cee61={};var _0x567e7e={};var _0x425393;var _0x11c710;return db[_0xe68b('0x34')][_0xe68b('0x5c')]({'where':{'id':_0x2c8ee9[_0xe68b('0x57')]['id']}})[_0xe68b('0x2a')](handleEntityNotFound(_0x24b18c,null))[_0xe68b('0x2a')](function(_0x4fe49e){if(_0x4fe49e){_0x425393=_0x4fe49e;_0x567e7e[_0xe68b('0x39')]=_[_0xe68b('0x3b')](db[_0xe68b('0x8f')]['rawAttributes']);_0x567e7e[_0xe68b('0x3e')]=_['keys'](_0x2c8ee9[_0xe68b('0x3e')]);_0x567e7e['filters']=_[_0xe68b('0x3d')](_0x567e7e[_0xe68b('0x39')],_0x567e7e[_0xe68b('0x3e')]);_0x5cee61[_0xe68b('0x3f')]=_[_0xe68b('0x3d')](_0x567e7e[_0xe68b('0x39')],qs[_0xe68b('0x40')](_0x2c8ee9[_0xe68b('0x3e')][_0xe68b('0x40')]));_0x5cee61[_0xe68b('0x3f')]=_0x5cee61[_0xe68b('0x3f')][_0xe68b('0x41')]?_0x5cee61[_0xe68b('0x3f')]:_0x567e7e['model'];_0x5cee61[_0xe68b('0x44')]=qs[_0xe68b('0x45')](_0x2c8ee9[_0xe68b('0x3e')][_0xe68b('0x45')]);_0x5cee61['where']=qs[_0xe68b('0x3c')](_[_0xe68b('0x5d')](_0x2c8ee9[_0xe68b('0x3e')],_0x567e7e[_0xe68b('0x3c')]));if(_0x2c8ee9['query'][_0xe68b('0x47')]){_0x5cee61[_0xe68b('0x46')]=_[_0xe68b('0x48')](_0x5cee61['where'],{'$or':_['map'](_0x5cee61[_0xe68b('0x3f')],function(_0x724ebf){var _0x13060d={};_0x13060d[_0x724ebf]={'$like':'%'+_0x2c8ee9['query'][_0xe68b('0x47')]+'%'};return _0x13060d;})});}_0x5cee61=_[_0xe68b('0x48')]({},_0x5cee61,_0x2c8ee9[_0xe68b('0x49')]);return _0x425393[_0xe68b('0x8e')](_0x5cee61);}})[_0xe68b('0x2a')](function(_0x18eedd){if(_0x18eedd){_0x11c710=_0x18eedd[_0xe68b('0x41')];if(!_0x2c8ee9[_0xe68b('0x3e')][_0xe68b('0x42')](_0xe68b('0x43'))){_0x5cee61[_0xe68b('0x23')]=qs[_0xe68b('0x23')](_0x2c8ee9[_0xe68b('0x3e')][_0xe68b('0x23')]);_0x5cee61['offset']=qs[_0xe68b('0x21')](_0x2c8ee9[_0xe68b('0x3e')][_0xe68b('0x21')]);}return _0x425393[_0xe68b('0x8e')](_0x5cee61);}})[_0xe68b('0x2a')](function(_0x38f1d1){if(_0x38f1d1){return _0x38f1d1?{'count':_0x11c710,'rows':_0x38f1d1}:null;}})[_0xe68b('0x2a')](respondWithResult(_0x24b18c,null))['catch'](handleError(_0x24b18c,null));};
\ No newline at end of file
+var _0x1bdd=['attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','findOne','sequelize','Sequelize','TEXT','text','INTEGER','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','omit','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','reject','update','then','destroy','get','Lists','end','error','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','CmList','includeAll','include','findAll','catch','keys','intersection','create','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','params','describe','addDisposition','Disposition','getDispositions','ListId','options','rows','removeDispositions','ids','CmContact','tags','isArray','join','push','each','dataValues','message','getContacts','CmCustomField','concat','CustomFields','cf_%d','raw','getContactsCsv','isEmpty','now','writeFileSync','format','/tmp/list_%d_%s.csv','setHeader','Content-disposition'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x1bdd,0x143));var _0xd1bd=function(_0x40e57a,_0x2d3135){_0x40e57a=_0x40e57a-0x0;var _0x247f97=_0x1bdd[_0x40e57a];return _0x247f97;};'use strict';var emlformat=require(_0xd1bd('0x0'));var rimraf=require(_0xd1bd('0x1'));var zipdir=require(_0xd1bd('0x2'));var jsonpatch=require(_0xd1bd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd1bd('0x4'));var Mustache=require(_0xd1bd('0x5'));var util=require(_0xd1bd('0x6'));var path=require(_0xd1bd('0x7'));var sox=require(_0xd1bd('0x8'));var csv=require('to-csv');var ejs=require(_0xd1bd('0x9'));var fs=require('fs');var fs_extra=require(_0xd1bd('0xa'));var _=require(_0xd1bd('0xb'));var squel=require(_0xd1bd('0xc'));var crypto=require(_0xd1bd('0xd'));var jsforce=require(_0xd1bd('0xe'));var deskjs=require(_0xd1bd('0xf'));var toCsv=require(_0xd1bd('0x10'));var querystring=require(_0xd1bd('0x11'));var Papa=require('papaparse');var Redis=require(_0xd1bd('0x12'));var authService=require(_0xd1bd('0x13'));var qs=require(_0xd1bd('0x14'));var as=require(_0xd1bd('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd1bd('0x16'))(_0xd1bd('0x17'));var utils=require(_0xd1bd('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xd1bd('0x19'));var db=require(_0xd1bd('0x1a'))['db'];config[_0xd1bd('0x1b')]=_['defaults'](config[_0xd1bd('0x1b')],{'host':_0xd1bd('0x1c'),'port':0x18eb});var socket=require(_0xd1bd('0x1d'))(new Redis(config[_0xd1bd('0x1b')]));require(_0xd1bd('0x1e'))[_0xd1bd('0x1f')](socket);function respondWithStatusCode(_0x15c615,_0x44b23c){_0x44b23c=_0x44b23c||0xcc;return function(_0x14638b){if(_0x14638b){return _0x15c615[_0xd1bd('0x20')](_0x44b23c);}return _0x15c615[_0xd1bd('0x21')](_0x44b23c)['end']();};}function respondWithResult(_0x19fd17,_0x5af5fa){_0x5af5fa=_0x5af5fa||0xc8;return function(_0x2cf5d7){if(_0x2cf5d7){return _0x19fd17[_0xd1bd('0x21')](_0x5af5fa)[_0xd1bd('0x22')](_0x2cf5d7);}};}function respondWithFilteredResult(_0x4fbad0,_0x325c60){return function(_0x169554){if(_0x169554){var _0x3cb2d6=typeof _0x325c60[_0xd1bd('0x23')]===_0xd1bd('0x24')&&typeof _0x325c60['limit']===_0xd1bd('0x24');var _0x253932=_0x169554[_0xd1bd('0x25')];var _0x104bb0=_0x3cb2d6?0x0:_0x325c60[_0xd1bd('0x23')];var _0x1a48d2=_0x3cb2d6?_0x169554['count']:_0x325c60[_0xd1bd('0x23')]+_0x325c60[_0xd1bd('0x26')];var _0x3a5e51;if(_0x1a48d2>=_0x253932){_0x1a48d2=_0x253932;_0x3a5e51=0xc8;}else{_0x3a5e51=0xce;}_0x4fbad0[_0xd1bd('0x21')](_0x3a5e51);return _0x4fbad0[_0xd1bd('0x27')]('Content-Range',_0x104bb0+'-'+_0x1a48d2+'/'+_0x253932)[_0xd1bd('0x22')](_0x169554);}return null;};}function patchUpdates(_0x5b6eab){return function(_0x2f37bb){try{jsonpatch['apply'](_0x2f37bb,_0x5b6eab,!![]);}catch(_0x452d96){return BPromise[_0xd1bd('0x28')](_0x452d96);}return _0x2f37bb['save']();};}function saveUpdates(_0x3107ab,_0x4275b6){return function(_0x23d184){if(_0x23d184){return _0x23d184[_0xd1bd('0x29')](_0x3107ab)[_0xd1bd('0x2a')](function(_0x21cc93){return _0x21cc93;});}return null;};}function removeEntity(_0xc14ba6,_0x322089){return function(_0x3eb55c){if(_0x3eb55c){return _0x3eb55c[_0xd1bd('0x2b')]()['then'](function(){var _0x551ba4=_0x3eb55c[_0xd1bd('0x2c')]({'plain':!![]});var _0x383fea=_0xd1bd('0x2d');return db['UserProfileResource'][_0xd1bd('0x2b')]({'where':{'type':_0x383fea,'resourceId':_0x551ba4['id']}})[_0xd1bd('0x2a')](function(){return _0x3eb55c;});})[_0xd1bd('0x2a')](function(){_0xc14ba6[_0xd1bd('0x21')](0xcc)[_0xd1bd('0x2e')]();});}};}function handleEntityNotFound(_0x91272a,_0x230990){return function(_0x5e6219){if(!_0x5e6219){_0x91272a[_0xd1bd('0x20')](0x194);}return _0x5e6219;};}function handleError(_0x2d9aa7,_0x506c11){_0x506c11=_0x506c11||0x1f4;return function(_0x5ba4d2){logger[_0xd1bd('0x2f')](_0x5ba4d2['stack']);if(_0x5ba4d2['name']){delete _0x5ba4d2[_0xd1bd('0x30')];}_0x2d9aa7['status'](_0x506c11)[_0xd1bd('0x31')](_0x5ba4d2);};}exports[_0xd1bd('0x32')]=function(_0x5d591e,_0x4aaf6c){var _0x4ef933={},_0x587d65={},_0x5211e0={'count':0x0,'rows':[]};var _0x4edb60=_[_0xd1bd('0x33')](db['CmList'][_0xd1bd('0x34')],function(_0x3ebc3d){return{'name':_0x3ebc3d[_0xd1bd('0x35')],'type':_0x3ebc3d[_0xd1bd('0x36')][_0xd1bd('0x37')]};});_0x587d65['model']=_[_0xd1bd('0x33')](_0x4edb60,_0xd1bd('0x30'));_0x587d65[_0xd1bd('0x38')]=_['keys'](_0x5d591e[_0xd1bd('0x38')]);_0x587d65[_0xd1bd('0x39')]=_['intersection'](_0x587d65['model'],_0x587d65[_0xd1bd('0x38')]);_0x4ef933[_0xd1bd('0x3a')]=_['intersection'](_0x587d65[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x4ef933[_0xd1bd('0x3a')]=_0x4ef933[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x4ef933[_0xd1bd('0x3a')]:_0x587d65[_0xd1bd('0x3b')];if(!_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0x4ef933['limit']=qs[_0xd1bd('0x26')](_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0x4ef933[_0xd1bd('0x23')]=qs[_0xd1bd('0x23')](_0x5d591e[_0xd1bd('0x38')]['offset']);}_0x4ef933[_0xd1bd('0x40')]=qs[_0xd1bd('0x41')](_0x5d591e[_0xd1bd('0x38')]['sort']);_0x4ef933['where']=qs[_0xd1bd('0x39')](_[_0xd1bd('0x42')](_0x5d591e[_0xd1bd('0x38')],_0x587d65[_0xd1bd('0x39')]),_0x4edb60);if(_0x5d591e[_0xd1bd('0x38')]['filter']){_0x4ef933[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0x4ef933[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x4edb60,function(_0x3bd36d){if(_0x3bd36d[_0xd1bd('0x36')]!==_0xd1bd('0x45')){var _0x5ddc0f={};_0x5ddc0f[_0x3bd36d[_0xd1bd('0x30')]]={'$like':'%'+_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x5ddc0f;}})});}_0x4ef933=_['merge']({},_0x4ef933,_0x5d591e['options']);var _0x585a2e={'where':_0x4ef933[_0xd1bd('0x43')]};return db[_0xd1bd('0x47')][_0xd1bd('0x25')](_0x585a2e)[_0xd1bd('0x2a')](function(_0x58bd1f){_0x5211e0[_0xd1bd('0x25')]=_0x58bd1f;if(_0x5d591e['query'][_0xd1bd('0x48')]){_0x4ef933[_0xd1bd('0x49')]=[{'all':!![]}];}return db['CmList'][_0xd1bd('0x4a')](_0x4ef933);})['then'](function(_0x51a394){_0x5211e0['rows']=_0x51a394;return _0x5211e0;})[_0xd1bd('0x2a')](respondWithFilteredResult(_0x4aaf6c,_0x4ef933))[_0xd1bd('0x4b')](handleError(_0x4aaf6c,null));};exports['show']=function(_0x806854,_0x60e213){var _0x5567e3={'raw':![],'where':{'id':_0x806854['params']['id']}},_0x61bec0={};_0x61bec0[_0xd1bd('0x3b')]=_['keys'](db['CmList']['rawAttributes']);_0x61bec0[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x806854[_0xd1bd('0x38')]);_0x61bec0['filters']=_[_0xd1bd('0x4d')](_0x61bec0[_0xd1bd('0x3b')],_0x61bec0[_0xd1bd('0x38')]);_0x5567e3['attributes']=_[_0xd1bd('0x4d')](_0x61bec0[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x806854[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x5567e3['attributes']=_0x5567e3['attributes']['length']?_0x5567e3['attributes']:_0x61bec0[_0xd1bd('0x3b')];if(_0x806854[_0xd1bd('0x38')]['includeAll']){_0x5567e3[_0xd1bd('0x49')]=[{'all':!![]}];}_0x5567e3=_[_0xd1bd('0x44')]({},_0x5567e3,_0x806854['options']);return db['CmList']['find'](_0x5567e3)[_0xd1bd('0x2a')](handleEntityNotFound(_0x60e213,null))[_0xd1bd('0x2a')](respondWithResult(_0x60e213,null))[_0xd1bd('0x4b')](handleError(_0x60e213,null));};exports[_0xd1bd('0x4e')]=function(_0x5ad104,_0x2b7ccb){return db[_0xd1bd('0x47')]['create'](_0x5ad104['body'],{})['then'](function(_0x584179){var _0x39e813=_0x5ad104['user'][_0xd1bd('0x2c')]({'plain':!![]});if(!_0x39e813)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x39e813[_0xd1bd('0x4f')]===_0xd1bd('0x50')){var _0x15d32e=_0x584179[_0xd1bd('0x2c')]({'plain':!![]});var _0x3c093d='Lists';return db[_0xd1bd('0x51')]['find']({'where':{'name':_0x3c093d,'userProfileId':_0x39e813['userProfileId']},'raw':!![]})[_0xd1bd('0x2a')](function(_0x286423){if(_0x286423&&_0x286423[_0xd1bd('0x52')]===0x0){return db['UserProfileResource'][_0xd1bd('0x4e')]({'name':_0x15d32e[_0xd1bd('0x30')],'resourceId':_0x15d32e['id'],'type':_0x286423['name'],'sectionId':_0x286423['id']},{})[_0xd1bd('0x2a')](function(){return _0x584179;});}else{return _0x584179;}})[_0xd1bd('0x4b')](function(_0x9bd400){logger[_0xd1bd('0x2f')](_0xd1bd('0x53'),_0x9bd400);throw _0x9bd400;});}return _0x584179;})[_0xd1bd('0x2a')](respondWithResult(_0x2b7ccb,0xc9))[_0xd1bd('0x4b')](handleError(_0x2b7ccb,null));};exports[_0xd1bd('0x29')]=function(_0x451790,_0x1da014){if(_0x451790[_0xd1bd('0x54')]['id']){delete _0x451790[_0xd1bd('0x54')]['id'];}return db[_0xd1bd('0x47')][_0xd1bd('0x55')]({'where':{'id':_0x451790[_0xd1bd('0x56')]['id']}})['then'](handleEntityNotFound(_0x1da014,null))[_0xd1bd('0x2a')](saveUpdates(_0x451790[_0xd1bd('0x54')],null))[_0xd1bd('0x2a')](respondWithResult(_0x1da014,null))[_0xd1bd('0x4b')](handleError(_0x1da014,null));};exports[_0xd1bd('0x2b')]=function(_0x57e3dd,_0xaef78a){return db['CmList']['find']({'where':{'id':_0x57e3dd[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0xaef78a,null))['then'](removeEntity(_0xaef78a,null))['catch'](handleError(_0xaef78a,null));};exports[_0xd1bd('0x57')]=function(_0x2bf8f8,_0x2245eb){return db[_0xd1bd('0x47')]['describe']()[_0xd1bd('0x2a')](respondWithResult(_0x2245eb,null))[_0xd1bd('0x4b')](handleError(_0x2245eb,null));};exports[_0xd1bd('0x58')]=function(_0x13889e,_0x7476c5,_0x204ca0){if(_0x13889e[_0xd1bd('0x54')]['id']){delete _0x13889e[_0xd1bd('0x54')]['id'];}return db[_0xd1bd('0x47')][_0xd1bd('0x55')]({'where':{'id':_0x13889e[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x7476c5,null))[_0xd1bd('0x2a')](function(_0x2984ca){if(_0x2984ca){_0x13889e[_0xd1bd('0x54')]['ListId']=_0x2984ca['id'];return db[_0xd1bd('0x59')][_0xd1bd('0x4e')](_0x13889e[_0xd1bd('0x54')]);}})[_0xd1bd('0x2a')](respondWithResult(_0x7476c5,null))['catch'](handleError(_0x7476c5,null));};exports[_0xd1bd('0x5a')]=function(_0x5cde88,_0x54e31d,_0x240066){var _0x5ede9a={'raw':![],'where':{}};var _0x27124c={};var _0x247da8={'count':0x0,'rows':[]};return db['CmList']['findOne']({'where':{'id':_0x5cde88[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x54e31d,null))[_0xd1bd('0x2a')](function(_0x1460bf){if(_0x1460bf){_0x27124c[_0xd1bd('0x3b')]=_['keys'](db[_0xd1bd('0x59')]['rawAttributes']);_0x27124c['query']=_['keys'](_0x5cde88[_0xd1bd('0x38')]);_0x27124c[_0xd1bd('0x39')]=_[_0xd1bd('0x4d')](_0x27124c[_0xd1bd('0x3b')],_0x27124c[_0xd1bd('0x38')]);_0x5ede9a[_0xd1bd('0x3a')]=_['intersection'](_0x27124c['model'],qs['fields'](_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x5ede9a[_0xd1bd('0x3a')]=_0x5ede9a[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x5ede9a[_0xd1bd('0x3a')]:_0x27124c[_0xd1bd('0x3b')];if(!_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0x5ede9a[_0xd1bd('0x26')]=qs[_0xd1bd('0x26')](_0x5cde88['query']['limit']);_0x5ede9a[_0xd1bd('0x23')]=qs['offset'](_0x5cde88[_0xd1bd('0x38')]['offset']);}_0x5ede9a['order']=qs[_0xd1bd('0x41')](_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x41')]);_0x5ede9a[_0xd1bd('0x43')]=qs[_0xd1bd('0x39')](_[_0xd1bd('0x42')](_0x5cde88[_0xd1bd('0x38')],_0x27124c[_0xd1bd('0x39')]));_0x5ede9a[_0xd1bd('0x43')][_0xd1bd('0x5b')]=_0x1460bf['id'];if(_0x5cde88['query'][_0xd1bd('0x46')]){_0x5ede9a['where']=_[_0xd1bd('0x44')](_0x5ede9a[_0xd1bd('0x43')],{'$or':_['map'](_0x5ede9a[_0xd1bd('0x3a')],function(_0x4e0cf0){var _0x51a2d1={};_0x51a2d1[_0x4e0cf0]={'$like':'%'+_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x51a2d1;})});}_0x5ede9a=_['merge']({},_0x5ede9a,_0x5cde88[_0xd1bd('0x5c')]);return db[_0xd1bd('0x59')][_0xd1bd('0x25')]({'where':_0x5ede9a['where']})['then'](function(_0x576ed0){_0x247da8['count']=_0x576ed0;if(_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x48')]){_0x5ede9a['include']=[{'all':!![]}];}return db[_0xd1bd('0x59')]['findAll'](_0x5ede9a);})[_0xd1bd('0x2a')](function(_0x123970){_0x247da8[_0xd1bd('0x5d')]=_0x123970;return _0x247da8;});}})[_0xd1bd('0x2a')](respondWithFilteredResult(_0x54e31d,_0x5ede9a))[_0xd1bd('0x4b')](handleError(_0x54e31d,null));};exports[_0xd1bd('0x5e')]=function(_0x2defbc,_0x4a4fda,_0x3d21ee){return db[_0xd1bd('0x47')]['find']({'where':{'id':_0x2defbc[_0xd1bd('0x56')]['id']}})['then'](handleEntityNotFound(_0x4a4fda,null))[_0xd1bd('0x2a')](function(_0x1cb8fe){if(_0x1cb8fe){return _0x1cb8fe[_0xd1bd('0x5e')](_0x2defbc[_0xd1bd('0x38')][_0xd1bd('0x5f')]);}})['then'](respondWithStatusCode(_0x4a4fda,null))['catch'](handleError(_0x4a4fda,null));};exports['addContacts']=function(_0x47f276,_0x5365de,_0x3d37bf){return db[_0xd1bd('0x47')][_0xd1bd('0x55')]({'where':{'id':_0x47f276[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x5365de,null))[_0xd1bd('0x2a')](function(_0x141169){if(_0x141169){var _0x223728=[];var _0x5e7317={'success':[],'errors':[]};return db[_0xd1bd('0x60')][_0xd1bd('0x57')]()[_0xd1bd('0x2a')](function(_0x1359ea){if(_0x47f276[_0xd1bd('0x54')][_0xd1bd('0x61')]&&_[_0xd1bd('0x62')](_0x47f276['body'][_0xd1bd('0x61')])){if(_0x47f276[_0xd1bd('0x54')]['tags']['length']){_0x47f276[_0xd1bd('0x54')][_0xd1bd('0x61')]=_0x47f276[_0xd1bd('0x54')]['tags'][_0xd1bd('0x63')](';')+';';}else{_0x47f276['body'][_0xd1bd('0x61')]=null;}}else{_0x47f276['body'][_0xd1bd('0x61')]=null;}if(_0x47f276[_0xd1bd('0x54')]&&_[_0xd1bd('0x62')](_0x47f276[_0xd1bd('0x54')])){for(var _0xd40a00=0x0;_0xd40a00<_0x47f276[_0xd1bd('0x54')][_0xd1bd('0x3d')];_0xd40a00+=0x1){_0x47f276[_0xd1bd('0x54')][_0xd40a00][_0xd1bd('0x5b')]=_0x47f276[_0xd1bd('0x56')]['id'];_0x223728[_0xd1bd('0x64')](_0x47f276[_0xd1bd('0x54')][_0xd40a00]);}return BPromise[_0xd1bd('0x65')](_0x223728,function(_0x2099ee){return db[_0xd1bd('0x60')]['create'](_['omit'](_0x2099ee,[_0xd1bd('0x5f'),'id'])||{},{'fields':_[_0xd1bd('0x4c')](_0x1359ea),'raw':!![]})[_0xd1bd('0x2a')](function(_0x46b681){_0x5e7317['success'][_0xd1bd('0x64')](_0x46b681[_0xd1bd('0x66')]);})[_0xd1bd('0x4b')](function(_0x52e1d5){_0x5e7317['errors']['push']({'data':_0x2099ee,'error':_0x52e1d5[_0xd1bd('0x67')]});});})['then'](function(_0x4a8a0d){return _0x5e7317;})[_0xd1bd('0x4b')](function(_0x22a50d){return _0x22a50d;});}else{_0x5365de[_0xd1bd('0x21')](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})[_0xd1bd('0x2a')](respondWithResult(_0x5365de,null))[_0xd1bd('0x4b')](handleError(_0x5365de,null));};exports[_0xd1bd('0x68')]=function(_0x41416d,_0x352efc,_0x143d81){var _0x46d4ca;return db['CmList'][_0xd1bd('0x55')]({'where':{'id':_0x41416d[_0xd1bd('0x56')]['id']},'include':[{'model':db[_0xd1bd('0x69')],'as':'CustomFields'}]})[_0xd1bd('0x2a')](handleEntityNotFound(_0x352efc,null))['then'](function(_0xb2dcf8){if(_0xb2dcf8){_0x46d4ca=_0xb2dcf8;return db[_0xd1bd('0x60')][_0xd1bd('0x34')];}})['then'](function(_0x1716b8){if(_0x1716b8){var _0x1117fe={};var _0x14a1cd={};_0x14a1cd[_0xd1bd('0x3b')]=_[_0xd1bd('0x6a')](_[_0xd1bd('0x4c')](_0x1716b8),_[_0xd1bd('0x33')](_0x46d4ca[_0xd1bd('0x6b')],function(_0x2ca6c5){return util['format'](_0xd1bd('0x6c'),_0x2ca6c5['id']);}));_0x14a1cd[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x41416d[_0xd1bd('0x38')]);_0x14a1cd['filters']=_[_0xd1bd('0x4d')](_0x14a1cd[_0xd1bd('0x3b')],_0x14a1cd[_0xd1bd('0x38')]);_0x1117fe[_0xd1bd('0x3a')]=_[_0xd1bd('0x4d')](_0x14a1cd['model'],qs['fields'](_0x41416d['query'][_0xd1bd('0x3c')]));_0x1117fe['attributes']=_0x1117fe[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x1117fe[_0xd1bd('0x3a')]:_0x14a1cd['model'];if(!_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0x1117fe[_0xd1bd('0x26')]=qs[_0xd1bd('0x26')](_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0x1117fe[_0xd1bd('0x23')]=qs['offset'](_0x41416d['query'][_0xd1bd('0x23')]);}_0x1117fe[_0xd1bd('0x40')]=qs['sort'](_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x41')]);_0x1117fe['where']=qs[_0xd1bd('0x39')](_[_0xd1bd('0x42')](_0x41416d['query'],_0x14a1cd[_0xd1bd('0x39')]));_0x1117fe[_0xd1bd('0x6d')]=!![];if(_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x46')]){_0x1117fe[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0x1117fe[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x1117fe[_0xd1bd('0x3a')],function(_0x1274c8){var _0x1170ff={};_0x1170ff[_0x1274c8]={'$like':'%'+_0x41416d['query'][_0xd1bd('0x46')]+'%'};return _0x1170ff;})});}_0x1117fe=_[_0xd1bd('0x44')]({},_0x1117fe,_0x41416d['options']);return _0x46d4ca[_0xd1bd('0x68')](_0x1117fe);}})[_0xd1bd('0x2a')](respondWithResult(_0x352efc,null))['catch'](handleError(_0x352efc,null));};exports[_0xd1bd('0x6e')]=function(_0x332ad0,_0x174e9d,_0x3cbdcd){var _0x2e3a0c;return db[_0xd1bd('0x47')]['find']({'where':{'id':_0x332ad0[_0xd1bd('0x56')]['id']},'include':[{'model':db[_0xd1bd('0x69')],'as':_0xd1bd('0x6b')}]})['then'](handleEntityNotFound(_0x174e9d,null))['then'](function(_0x4a5bc6){if(_0x4a5bc6){_0x2e3a0c=_0x4a5bc6;return db[_0xd1bd('0x60')]['rawAttributes'];}})[_0xd1bd('0x2a')](function(_0x5cd0ea){if(_0x5cd0ea){var _0x2747ef={};var _0x41b7b7={};_0x41b7b7[_0xd1bd('0x3b')]=_[_0xd1bd('0x6a')](_[_0xd1bd('0x4c')](_0x5cd0ea),_['map'](_0x2e3a0c[_0xd1bd('0x6b')],function(_0x42b9fb){return util['format']('cf_%d',_0x42b9fb['id']);}));_0x41b7b7[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x332ad0[_0xd1bd('0x38')]);_0x41b7b7[_0xd1bd('0x39')]=_[_0xd1bd('0x4d')](_0x41b7b7[_0xd1bd('0x3b')],_0x41b7b7[_0xd1bd('0x38')]);_0x2747ef['attributes']=_[_0xd1bd('0x4d')](_0x41b7b7[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x2747ef['attributes']=_0x2747ef[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x2747ef[_0xd1bd('0x3a')]:_0x41b7b7[_0xd1bd('0x3b')];if(!_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x3e')]('nolimit')){_0x2747ef['limit']=qs[_0xd1bd('0x26')](_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0x2747ef[_0xd1bd('0x23')]=qs[_0xd1bd('0x23')](_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x23')]);}_0x2747ef[_0xd1bd('0x40')]=qs[_0xd1bd('0x41')](_0x332ad0[_0xd1bd('0x38')]['sort']);_0x2747ef[_0xd1bd('0x43')]=qs['filters'](_['pick'](_0x332ad0[_0xd1bd('0x38')],_0x41b7b7[_0xd1bd('0x39')]));_0x2747ef[_0xd1bd('0x6d')]=!![];if(_0x332ad0[_0xd1bd('0x38')]['filter']){_0x2747ef['where']=_[_0xd1bd('0x44')](_0x2747ef[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x2747ef[_0xd1bd('0x3a')],function(_0x2c838b){var _0x5dbb97={};_0x5dbb97[_0x2c838b]={'$like':'%'+_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x5dbb97;})});}_0x2747ef=_['merge']({},_0x2747ef,_0x332ad0[_0xd1bd('0x5c')]);return _0x2e3a0c[_0xd1bd('0x68')](_0x2747ef);}})[_0xd1bd('0x2a')](function(_0x26268e){if(!_[_0xd1bd('0x6f')](_0x26268e)){var _0x3dfd73=toCsv(_0x26268e);var _0x592085=Date[_0xd1bd('0x70')]();fs[_0xd1bd('0x71')](util[_0xd1bd('0x72')](_0xd1bd('0x73'),_0x2e3a0c['id'],_0x592085),_0x3dfd73);_0x174e9d[_0xd1bd('0x74')](_0xd1bd('0x75'),_0xd1bd('0x76')+util[_0xd1bd('0x72')](_0xd1bd('0x77'),_0x2e3a0c['id'],_0x592085));_0x174e9d[_0xd1bd('0x74')](_0xd1bd('0x78'),_0xd1bd('0x79'));return _0x174e9d[_0xd1bd('0x7a')](util['format']('/tmp/list_%d_%s.csv',_0x2e3a0c['id'],_0x592085));}else{return _0x174e9d[_0xd1bd('0x20')](0xcc);}})['catch'](handleError(_0x174e9d,null));};exports[_0xd1bd('0x7b')]=function(_0x2f1dc2,_0x5e5e03,_0x19060a){var _0xbb541f;delete _0x2f1dc2[_0xd1bd('0x54')]['id'];return db[_0xd1bd('0x47')][_0xd1bd('0x7c')]({'where':{'id':_0x2f1dc2[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x5e5e03,null))[_0xd1bd('0x2a')](function(_0x365be5){if(_0x365be5){return db[_0xd1bd('0x7d')]['transaction'](function(_0x2eae0a){return db['CmCustomField']['create'](_0x2f1dc2[_0xd1bd('0x54')],{'transaction':_0x2eae0a})[_0xd1bd('0x2a')](function(_0x5c0f41){_0xbb541f=_0x5c0f41;return _0x365be5['addCustomFields'](_0x5c0f41,{'transaction':_0x2eae0a});})[_0xd1bd('0x2a')](function(){var _0xc3812d={'type':db[_0xd1bd('0x7e')][_0xd1bd('0x7f')],'transaction':_0x2eae0a};switch(_0x2f1dc2[_0xd1bd('0x54')][_0xd1bd('0x36')]){case _0xd1bd('0x80'):_0xc3812d[_0xd1bd('0x36')]=db[_0xd1bd('0x7e')][_0xd1bd('0x7f')];break;case'number':_0xc3812d[_0xd1bd('0x36')]=db[_0xd1bd('0x7e')][_0xd1bd('0x81')];break;case'switch':_0xc3812d[_0xd1bd('0x36')]=db['Sequelize'][_0xd1bd('0x82')];_0xc3812d[_0xd1bd('0x83')]=![];break;default:}return db[_0xd1bd('0x7d')][_0xd1bd('0x84')][_0xd1bd('0x85')](_0xd1bd('0x86'),util[_0xd1bd('0x72')](_0xd1bd('0x87'),_0xbb541f['id']),_0xc3812d);})[_0xd1bd('0x2a')](function(){return _0xbb541f;});});}})[_0xd1bd('0x2a')](respondWithResult(_0x5e5e03,null))['catch'](handleError(_0x5e5e03,null));};exports[_0xd1bd('0x88')]=function(_0x4cd7ae,_0x561f30,_0x4fbb37){var _0x3736c1={};var _0x168f69={};var _0x47967f;var _0x4b4d8e;return db['CmList'][_0xd1bd('0x7c')]({'where':{'id':_0x4cd7ae[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x561f30,null))[_0xd1bd('0x2a')](function(_0x101828){if(_0x101828){_0x47967f=_0x101828;_0x168f69[_0xd1bd('0x3b')]=_[_0xd1bd('0x4c')](db['CmCustomField'][_0xd1bd('0x34')]);_0x168f69[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x4cd7ae['query']);_0x168f69[_0xd1bd('0x39')]=_[_0xd1bd('0x4d')](_0x168f69[_0xd1bd('0x3b')],_0x168f69[_0xd1bd('0x38')]);_0x3736c1['attributes']=_[_0xd1bd('0x4d')](_0x168f69[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x4cd7ae[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x3736c1['attributes']=_0x3736c1[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x3736c1[_0xd1bd('0x3a')]:_0x168f69['model'];_0x3736c1[_0xd1bd('0x40')]=qs['sort'](_0x4cd7ae[_0xd1bd('0x38')][_0xd1bd('0x41')]);_0x3736c1[_0xd1bd('0x43')]=qs['filters'](_[_0xd1bd('0x42')](_0x4cd7ae[_0xd1bd('0x38')],_0x168f69['filters']));_0x3736c1[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0x3736c1['where'],{'$or':[{'ListId':_0x101828['id']},{'ListId':null}]});if(_0x4cd7ae[_0xd1bd('0x38')]['filter']){_0x3736c1[_0xd1bd('0x43')]=_['merge'](_0x3736c1[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x3736c1[_0xd1bd('0x3a')],function(_0x5a21ed){var _0x36a7bd={};_0x36a7bd[_0x5a21ed]={'$like':'%'+_0x4cd7ae[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x36a7bd;})});}_0x3736c1=_[_0xd1bd('0x44')]({},_0x3736c1,_0x4cd7ae[_0xd1bd('0x5c')]);return db[_0xd1bd('0x69')][_0xd1bd('0x89')](_0x3736c1);}})['then'](respondWithResult(_0x561f30,null))[_0xd1bd('0x4b')](handleError(_0x561f30,null));};exports[_0xd1bd('0x8a')]=function(_0x5dc70c,_0xe8f1e6,_0x5d9c47){return db['CmList'][_0xd1bd('0x55')]({'where':{'id':_0x5dc70c[_0xd1bd('0x56')]['id']}})['then'](handleEntityNotFound(_0xe8f1e6,null))[_0xd1bd('0x2a')](function(_0x38bc23){if(_0x38bc23){return _0x38bc23[_0xd1bd('0x8a')](_0x5dc70c[_0xd1bd('0x54')]['ids'],_[_0xd1bd('0x8b')](_0x5dc70c[_0xd1bd('0x54')],['ids','id'])||{})[_0xd1bd('0x8c')](function(_0x363fec){for(var _0x1ade84=0x0;_0x1ade84<_0x5dc70c['body']['ids']['length'];_0x1ade84+=0x1){socket[_0xd1bd('0x8d')](_0xd1bd('0x8e'),{'UserId':Number(_0x5dc70c['body'][_0xd1bd('0x5f')][_0x1ade84]),'CmListId':Number(_0x5dc70c[_0xd1bd('0x56')]['id'])});}return _0x363fec;});}})[_0xd1bd('0x2a')](respondWithResult(_0xe8f1e6,null))[_0xd1bd('0x4b')](handleError(_0xe8f1e6,null));};exports[_0xd1bd('0x8f')]=function(_0x10bc6e,_0x48b683,_0x5a104f){return db[_0xd1bd('0x47')]['find']({'where':{'id':_0x10bc6e[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x48b683,null))['then'](function(_0x2bb479){if(_0x2bb479){return _0x2bb479[_0xd1bd('0x8f')](_0x10bc6e[_0xd1bd('0x38')]['ids'])[_0xd1bd('0x2a')](function(){if(_[_0xd1bd('0x62')](_0x10bc6e[_0xd1bd('0x38')][_0xd1bd('0x5f')])){for(var _0x1bde9d=0x0;_0x1bde9d<_0x10bc6e[_0xd1bd('0x38')]['ids'][_0xd1bd('0x3d')];_0x1bde9d+=0x1){socket[_0xd1bd('0x8d')](_0xd1bd('0x90'),{'UserId':Number(_0x10bc6e['query'][_0xd1bd('0x5f')][_0x1bde9d]),'CmListId':Number(_0x10bc6e[_0xd1bd('0x56')]['id'])});}}else{socket['emit'](_0xd1bd('0x90'),{'UserId':Number(_0x10bc6e[_0xd1bd('0x38')][_0xd1bd('0x5f')]),'CmListId':Number(_0x10bc6e[_0xd1bd('0x56')]['id'])});}});}})[_0xd1bd('0x2a')](respondWithStatusCode(_0x48b683,null))['catch'](handleError(_0x48b683,null));};exports[_0xd1bd('0x91')]=function(_0x2a1b6d,_0x464930,_0x45fbfb){var _0xd9b1b0={};var _0x56c7ed={};var _0x15b01f;var _0x5e348a;return db[_0xd1bd('0x47')][_0xd1bd('0x7c')]({'where':{'id':_0x2a1b6d[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x464930,null))[_0xd1bd('0x2a')](function(_0x4be6dd){if(_0x4be6dd){_0x15b01f=_0x4be6dd;_0x56c7ed['model']=_['keys'](db[_0xd1bd('0x92')][_0xd1bd('0x34')]);_0x56c7ed[_0xd1bd('0x38')]=_['keys'](_0x2a1b6d[_0xd1bd('0x38')]);_0x56c7ed['filters']=_['intersection'](_0x56c7ed[_0xd1bd('0x3b')],_0x56c7ed['query']);_0xd9b1b0[_0xd1bd('0x3a')]=_[_0xd1bd('0x4d')](_0x56c7ed['model'],qs[_0xd1bd('0x3c')](_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0xd9b1b0[_0xd1bd('0x3a')]=_0xd9b1b0[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0xd9b1b0[_0xd1bd('0x3a')]:_0x56c7ed[_0xd1bd('0x3b')];_0xd9b1b0[_0xd1bd('0x40')]=qs['sort'](_0x2a1b6d[_0xd1bd('0x38')]['sort']);_0xd9b1b0[_0xd1bd('0x43')]=qs[_0xd1bd('0x39')](_['pick'](_0x2a1b6d['query'],_0x56c7ed[_0xd1bd('0x39')]));if(_0x2a1b6d['query'][_0xd1bd('0x46')]){_0xd9b1b0[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0xd9b1b0[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0xd9b1b0[_0xd1bd('0x3a')],function(_0x568eb9){var _0x38e6eb={};_0x38e6eb[_0x568eb9]={'$like':'%'+_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x38e6eb;})});}_0xd9b1b0=_[_0xd1bd('0x44')]({},_0xd9b1b0,_0x2a1b6d['options']);return _0x15b01f[_0xd1bd('0x91')](_0xd9b1b0);}})[_0xd1bd('0x2a')](function(_0x6b2a68){if(_0x6b2a68){_0x5e348a=_0x6b2a68[_0xd1bd('0x3d')];if(!_0x2a1b6d['query'][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0xd9b1b0[_0xd1bd('0x26')]=qs['limit'](_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0xd9b1b0[_0xd1bd('0x23')]=qs[_0xd1bd('0x23')](_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x23')]);}return _0x15b01f[_0xd1bd('0x91')](_0xd9b1b0);}})[_0xd1bd('0x2a')](function(_0x2c462f){if(_0x2c462f){return _0x2c462f?{'count':_0x5e348a,'rows':_0x2c462f}:null;}})[_0xd1bd('0x2a')](respondWithResult(_0x464930,null))['catch'](handleError(_0x464930,null));};
\ No newline at end of file
index 8c2a65d..371eafe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['hasOwnProperty','hook','exports','events','../../mysqldb','save','update','emit'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe14b,0x93));var _0xbe14=function(_0x1c1244,_0x115639){_0x1c1244=_0x1c1244-0x0;var _0x3627ab=_0xe14b[_0x1c1244];return _0x3627ab;};'use strict';var EventEmitter=require(_0xbe14('0x0'));var CmList=require(_0xbe14('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbe14('0x2'),'afterUpdate':_0xbe14('0x3'),'afterDestroy':'remove'};function emitEvent(_0x7d3665){return function(_0x5ce8fb,_0x496c04,_0x1833e3){CmListEvents[_0xbe14('0x4')](_0x7d3665+':'+_0x5ce8fb['id'],_0x5ce8fb);CmListEvents[_0xbe14('0x4')](_0x7d3665,_0x5ce8fb);_0x1833e3(null);};}for(var e in events){if(events[_0xbe14('0x5')](e)){var event=events[e];CmList[_0xbe14('0x6')](e,emitEvent(event));}}module[_0xbe14('0x7')]=CmListEvents;
\ No newline at end of file
+var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x326f,0xd1));var _0xf326=function(_0x39d261,_0x540eba){_0x39d261=_0x39d261-0x0;var _0x1ae5ca=_0x326f[_0x39d261];return _0x1ae5ca;};'use strict';var EventEmitter=require(_0xf326('0x0'));var CmList=require('../../mysqldb')['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0xf326('0x1')](0x0);var events={'afterCreate':_0xf326('0x2'),'afterUpdate':_0xf326('0x3'),'afterDestroy':_0xf326('0x4')};function emitEvent(_0x27e8d7){return function(_0x120a26,_0x9445c6,_0xf1c243){CmListEvents[_0xf326('0x5')](_0x27e8d7+':'+_0x120a26['id'],_0x120a26);CmListEvents[_0xf326('0x5')](_0x27e8d7,_0x120a26);_0xf1c243(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xf326('0x6')](e,emitEvent(event));}}module[_0xf326('0x7')]=CmListEvents;
\ No newline at end of file
index e239a9d..ed69768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['util','moment','bluebird','request-promise','path','rimraf','./cmList.attributes','define','CmList','cm_lists','lodash'];(function(_0x23b741,_0x4263e7){var _0x4a5f08=function(_0x11cef2){while(--_0x11cef2){_0x23b741['push'](_0x23b741['shift']());}};_0x4a5f08(++_0x4263e7);}(_0xda55,0x6d));var _0x5da5=function(_0x291b7e,_0x1d92d6){_0x291b7e=_0x291b7e-0x0;var _0x502780=_0xda55[_0x291b7e];return _0x502780;};'use strict';var _=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x5da5('0x2'));var BPromise=require(_0x5da5('0x3'));var rp=require(_0x5da5('0x4'));var fs=require('fs');var path=require(_0x5da5('0x5'));var rimraf=require(_0x5da5('0x6'));var config=require('../../config/environment');var attributes=require(_0x5da5('0x7'));module['exports']=function(_0x356a37,_0x58e7b3){return _0x356a37[_0x5da5('0x8')](_0x5da5('0x9'),attributes,{'tableName':_0x5da5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ea3=['CmList','cm_lists','lodash','util','../../config/logger','api','bluebird','path','./cmList.attributes','exports','define'];(function(_0x57fa33,_0x2b8222){var _0x12e724=function(_0x481a33){while(--_0x481a33){_0x57fa33['push'](_0x57fa33['shift']());}};_0x12e724(++_0x2b8222);}(_0x4ea3,0x70));var _0x34ea=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x4ea3[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x34ea('0x0'));var util=require(_0x34ea('0x1'));var logger=require(_0x34ea('0x2'))(_0x34ea('0x3'));var moment=require('moment');var BPromise=require(_0x34ea('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x34ea('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x34ea('0x6'));module[_0x34ea('0x7')]=function(_0x962596,_0x123d48){return _0x962596[_0x34ea('0x8')](_0x34ea('0x9'),attributes,{'tableName':_0x34ea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6cfda67..f0142d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc89a=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./cmList.socket','register','request','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment','bluebird'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xc89a,0x1b7));var _0xac89=function(_0x5c96b7,_0x3ee933){_0x5c96b7=_0x5c96b7-0x0;var _0x5e7415=_0xc89a[_0x5c96b7];return _0x5e7415;};'use strict';var _=require('lodash');var util=require(_0xac89('0x0'));var moment=require(_0xac89('0x1'));var BPromise=require(_0xac89('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xac89('0x3'));var db=require(_0xac89('0x4'))['db'];var utils=require(_0xac89('0x5'));var logger=require('../../config/logger')(_0xac89('0x6'));var config=require(_0xac89('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xac89('0x8')][_0xac89('0x9')]({'port':0x232a});config[_0xac89('0xa')]=_[_0xac89('0xb')](config[_0xac89('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xac89('0xc'))(new Redis(config[_0xac89('0xa')]));require(_0xac89('0xd'))[_0xac89('0xe')](socket);function respondWithRpcPromise(_0x1d15cf,_0x512644,_0xae35ce){return new BPromise(function(_0x460680,_0x297286){return client[_0xac89('0xf')](_0x1d15cf,_0xae35ce)['then'](function(_0x52a88b){logger['info'](_0xac89('0x10'),_0x512644,_0xac89('0x11'));logger[_0xac89('0x12')](_0xac89('0x13'),_0x512644,_0xac89('0x11'),JSON[_0xac89('0x14')](_0x52a88b));if(_0x52a88b['error']){if(_0x52a88b[_0xac89('0x15')]['code']===0x1f4){logger['error']('CmList,\x20%s,\x20%s',_0x512644,_0x52a88b['error'][_0xac89('0x16')]);return _0x297286(_0x52a88b[_0xac89('0x15')][_0xac89('0x16')]);}logger[_0xac89('0x15')](_0xac89('0x10'),_0x512644,_0x52a88b[_0xac89('0x15')][_0xac89('0x16')]);return _0x460680(_0x52a88b[_0xac89('0x15')][_0xac89('0x16')]);}else{logger[_0xac89('0x17')](_0xac89('0x10'),_0x512644,'request\x20sent');_0x460680(_0x52a88b[_0xac89('0x18')]['message']);}})[_0xac89('0x19')](function(_0x273d49){logger[_0xac89('0x15')]('CmList,\x20%s,\x20%s',_0x512644,_0x273d49);_0x297286(_0x273d49);});});}
\ No newline at end of file
+var _0x5196=['jayson/promise','redis','defaults','localhost','socket.io-emitter','./cmList.socket','then','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x127e29,_0x396824){var _0x49cf88=function(_0xcf3c9e){while(--_0xcf3c9e){_0x127e29['push'](_0x127e29['shift']());}};_0x49cf88(++_0x396824);}(_0x5196,0x1c0));var _0x6519=function(_0x12719c,_0x46c3a6){_0x12719c=_0x12719c-0x0;var _0x3cc34c=_0x5196[_0x12719c];return _0x3cc34c;};'use strict';var _=require(_0x6519('0x0'));var util=require(_0x6519('0x1'));var moment=require(_0x6519('0x2'));var BPromise=require(_0x6519('0x3'));var rs=require(_0x6519('0x4'));var fs=require('fs');var Redis=require(_0x6519('0x5'));var db=require(_0x6519('0x6'))['db'];var utils=require(_0x6519('0x7'));var logger=require(_0x6519('0x8'))(_0x6519('0x9'));var config=require(_0x6519('0xa'));var jayson=require(_0x6519('0xb'));var client=jayson['client']['http']({'port':0x232a});config[_0x6519('0xc')]=_[_0x6519('0xd')](config['redis'],{'host':_0x6519('0xe'),'port':0x18eb});var socket=require(_0x6519('0xf'))(new Redis(config[_0x6519('0xc')]));require(_0x6519('0x10'))['register'](socket);function respondWithRpcPromise(_0x10bbb7,_0x472517,_0x21a793){return new BPromise(function(_0x93bcf9,_0x3bcd36){return client['request'](_0x10bbb7,_0x21a793)[_0x6519('0x11')](function(_0x3765da){logger['info'](_0x6519('0x12'),_0x472517,_0x6519('0x13'));logger[_0x6519('0x14')](_0x6519('0x15'),_0x472517,_0x6519('0x13'),JSON[_0x6519('0x16')](_0x3765da));if(_0x3765da[_0x6519('0x17')]){if(_0x3765da[_0x6519('0x17')][_0x6519('0x18')]===0x1f4){logger['error'](_0x6519('0x12'),_0x472517,_0x3765da[_0x6519('0x17')][_0x6519('0x19')]);return _0x3bcd36(_0x3765da[_0x6519('0x17')][_0x6519('0x19')]);}logger['error']('CmList,\x20%s,\x20%s',_0x472517,_0x3765da[_0x6519('0x17')]['message']);return _0x93bcf9(_0x3765da[_0x6519('0x17')][_0x6519('0x19')]);}else{logger['info'](_0x6519('0x12'),_0x472517,_0x6519('0x13'));_0x93bcf9(_0x3765da['result'][_0x6519('0x19')]);}})[_0x6519('0x1a')](function(_0x52ab11){logger['error'](_0x6519('0x12'),_0x472517,_0x52ab11);_0x3bcd36(_0x52ab11);});});}
\ No newline at end of file
index fc1cb4e..be9fbbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8e7=['cmList:','./cmList.events','save','remove','update','emit','removeListener','register'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe8e7,0x161));var _0x7e8e=function(_0x4b5bfa,_0x5b91b5){_0x4b5bfa=_0x4b5bfa-0x0;var _0x1fa4ff=_0xe8e7[_0x4b5bfa];return _0x1fa4ff;};'use strict';var CmListEvents=require(_0x7e8e('0x0'));var events=[_0x7e8e('0x1'),_0x7e8e('0x2'),_0x7e8e('0x3')];function createListener(_0x4c5835,_0x42446a){return function(_0xf31630){_0x42446a[_0x7e8e('0x4')](_0x4c5835,_0xf31630);};}function removeListener(_0x5843d7,_0x3d6b04){return function(){CmListEvents[_0x7e8e('0x5')](_0x5843d7,_0x3d6b04);};}exports[_0x7e8e('0x6')]=function(_0x89d2){for(var _0x53d88e=0x0,_0x32c48d=events['length'];_0x53d88e<_0x32c48d;_0x53d88e++){var _0x4a8708=events[_0x53d88e];var _0x3fe47=createListener(_0x7e8e('0x7')+_0x4a8708,_0x89d2);CmListEvents['on'](_0x4a8708,_0x3fe47);}};
\ No newline at end of file
+var _0x7a55=['./cmList.events','remove','update','emit','removeListener','cmList:'];(function(_0x180766,_0x311f6a){var _0x127706=function(_0x5a990d){while(--_0x5a990d){_0x180766['push'](_0x180766['shift']());}};_0x127706(++_0x311f6a);}(_0x7a55,0xea));var _0x57a5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7a55[_0x321bb2];return _0x9c12ed;};'use strict';var CmListEvents=require(_0x57a5('0x0'));var events=['save',_0x57a5('0x1'),_0x57a5('0x2')];function createListener(_0x4a0d21,_0x1b2d91){return function(_0x519c9d){_0x1b2d91[_0x57a5('0x3')](_0x4a0d21,_0x519c9d);};}function removeListener(_0x4aba27,_0x4aedfc){return function(){CmListEvents[_0x57a5('0x4')](_0x4aba27,_0x4aedfc);};}exports['register']=function(_0x4c85c1){for(var _0x2e962d=0x0,_0x38ffbf=events['length'];_0x2e962d<_0x38ffbf;_0x2e962d++){var _0x1bc58e=events[_0x2e962d];var _0x1d4db1=createListener(_0x57a5('0x5')+_0x1bc58e,_0x4c85c1);CmListEvents['on'](_0x1bc58e,_0x1d4db1);}};
\ No newline at end of file
index e84fd7e..dcb09dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e95=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','show','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','post','create','/:id/dispositions','addDisposition','addCustomField','put','/:id','update','destroy','delete','removeDispositions','/:id/users','removeAgents','exports','path'];(function(_0x489412,_0x29a8bd){var _0x3e0efc=function(_0x3446f9){while(--_0x3446f9){_0x489412['push'](_0x489412['shift']());}};_0x3e0efc(++_0x29a8bd);}(_0x0e95,0x180));var _0x50e9=function(_0x29203b,_0x213a4e){_0x29203b=_0x29203b-0x0;var _0x155ee6=_0x0e95[_0x29203b];return _0x155ee6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x50e9('0x0'));var timeout=require(_0x50e9('0x1'));var express=require('express');var router=express[_0x50e9('0x2')]();var fs_extra=require(_0x50e9('0x3'));var auth=require(_0x50e9('0x4'));var interaction=require(_0x50e9('0x5'));var config=require(_0x50e9('0x6'));var controller=require(_0x50e9('0x7'));router[_0x50e9('0x8')]('/',auth[_0x50e9('0x9')](),controller[_0x50e9('0xa')]);router['get'](_0x50e9('0xb'),auth[_0x50e9('0x9')](),controller[_0x50e9('0xc')]);router[_0x50e9('0x8')]('/:id',auth[_0x50e9('0x9')](),controller[_0x50e9('0xd')]);router[_0x50e9('0x8')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x50e9('0xe')]);router[_0x50e9('0x8')](_0x50e9('0xf'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x10')]);router[_0x50e9('0x8')](_0x50e9('0x11'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x12')]);router['get'](_0x50e9('0x13'),auth['isAuthenticated'](),controller[_0x50e9('0x14')]);router['get']('/:id/users',auth[_0x50e9('0x9')](),controller['getAgents']);router[_0x50e9('0x15')]('/',auth['isAuthenticated'](),controller[_0x50e9('0x16')]);router[_0x50e9('0x15')](_0x50e9('0x17'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x18')]);router[_0x50e9('0x15')](_0x50e9('0xf'),auth[_0x50e9('0x9')](),controller['addContacts']);router[_0x50e9('0x15')](_0x50e9('0x13'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x19')]);router[_0x50e9('0x15')]('/:id/users',auth[_0x50e9('0x9')](),controller['addAgents']);router[_0x50e9('0x1a')](_0x50e9('0x1b'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x1c')]);router['delete'](_0x50e9('0x1b'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x1d')]);router[_0x50e9('0x1e')](_0x50e9('0x17'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x1f')]);router[_0x50e9('0x1e')](_0x50e9('0x20'),auth[_0x50e9('0x9')](),controller[_0x50e9('0x21')]);module[_0x50e9('0x22')]=router;
\ No newline at end of file
+var _0x8146=['Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','getAgents','post','create','addContacts','addCustomField','/:id/users','update','delete','destroy','removeDispositions','multer','path','connect-timeout','express'];(function(_0xe3e609,_0x108e5e){var _0x246655=function(_0x56f81f){while(--_0x56f81f){_0xe3e609['push'](_0xe3e609['shift']());}};_0x246655(++_0x108e5e);}(_0x8146,0x194));var _0x6814=function(_0x46fd05,_0x2a121d){_0x46fd05=_0x46fd05-0x0;var _0xdcbee=_0x8146[_0x46fd05];return _0xdcbee;};'use strict';var multer=require(_0x6814('0x0'));var util=require('util');var path=require(_0x6814('0x1'));var timeout=require(_0x6814('0x2'));var express=require(_0x6814('0x3'));var router=express[_0x6814('0x4')]();var fs_extra=require(_0x6814('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6814('0x6'));var config=require(_0x6814('0x7'));var controller=require(_0x6814('0x8'));router[_0x6814('0x9')]('/',auth[_0x6814('0xa')](),controller[_0x6814('0xb')]);router[_0x6814('0x9')](_0x6814('0xc'),auth['isAuthenticated'](),controller[_0x6814('0xd')]);router[_0x6814('0x9')](_0x6814('0xe'),auth['isAuthenticated'](),controller[_0x6814('0xf')]);router['get'](_0x6814('0x10'),auth[_0x6814('0xa')](),controller[_0x6814('0x11')]);router['get'](_0x6814('0x12'),auth['isAuthenticated'](),controller[_0x6814('0x13')]);router[_0x6814('0x9')](_0x6814('0x14'),auth[_0x6814('0xa')](),controller[_0x6814('0x15')]);router[_0x6814('0x9')](_0x6814('0x16'),auth[_0x6814('0xa')](),controller[_0x6814('0x17')]);router['get']('/:id/users',auth[_0x6814('0xa')](),controller[_0x6814('0x18')]);router[_0x6814('0x19')]('/',auth[_0x6814('0xa')](),controller[_0x6814('0x1a')]);router['post'](_0x6814('0x10'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x6814('0x19')](_0x6814('0x12'),auth['isAuthenticated'](),controller[_0x6814('0x1b')]);router['post'](_0x6814('0x16'),auth['isAuthenticated'](),controller[_0x6814('0x1c')]);router[_0x6814('0x19')](_0x6814('0x1d'),auth[_0x6814('0xa')](),controller['addAgents']);router['put'](_0x6814('0xe'),auth[_0x6814('0xa')](),controller[_0x6814('0x1e')]);router[_0x6814('0x1f')](_0x6814('0xe'),auth[_0x6814('0xa')](),controller[_0x6814('0x20')]);router[_0x6814('0x1f')]('/:id/dispositions',auth[_0x6814('0xa')](),controller[_0x6814('0x21')]);router[_0x6814('0x1f')](_0x6814('0x1d'),auth[_0x6814('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index eb7590e..93bd9cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3446=['exports','field','STRING','sequelize'];(function(_0x38eef7,_0xbf9a1c){var _0xef6a54=function(_0x51b978){while(--_0x51b978){_0x38eef7['push'](_0x38eef7['shift']());}};_0xef6a54(++_0xbf9a1c);}(_0x3446,0x163));var _0x6344=function(_0x15db01,_0x9e5282){_0x15db01=_0x15db01-0x0;var _0x2ae8d9=_0x3446[_0x15db01];return _0x2ae8d9;};'use strict';var Sequelize=require(_0x6344('0x0'));module[_0x6344('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x493100){return this['getDataValue'](_0x6344('0x2'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x6344('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0x6344('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0x3d09=['field','STRING','sequelize','exports','VIRTUAL','getDataValue'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x3d09,0x134));var _0x93d0=function(_0x137ce1,_0x4251ba){_0x137ce1=_0x137ce1-0x0;var _0x221d05=_0x3d09[_0x137ce1];return _0x221d05;};'use strict';var Sequelize=require(_0x93d0('0x0'));module[_0x93d0('0x1')]={'name':{'type':Sequelize[_0x93d0('0x2')],'get':function(_0x2c0fe8){return this[_0x93d0('0x3')](_0x93d0('0x4'));}},'field':{'type':Sequelize[_0x93d0('0x5')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x93d0('0x5')],'allowNull':![]}};
\ No newline at end of file
index e04b770..1717dbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x4a9846,_0x309459){var _0x8c8c10=function(_0x38d4ab){while(--_0x38d4ab){_0x4a9846['push'](_0x4a9846['shift']());}};_0x8c8c10(++_0x309459);}(_0x7a54,0x106));var _0x47a5=function(_0xa8924,_0x3443c9){_0xa8924=_0xa8924-0x0;var _0x153d5a=_0x7a54[_0xa8924];return _0x153d5a;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x483d95,_0x58f0db){var _0x4499a5=function(_0x4f4f55){while(--_0x4f4f55){_0x483d95['push'](_0x483d95['shift']());}};_0x4499a5(++_0x58f0db);}(_0x7a54,0x106));var _0x47a5=function(_0x362b1f,_0x1653fb){_0x362b1f=_0x362b1f-0x0;var _0x1bdba5=_0x7a54[_0x362b1f];return _0x1bdba5;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index 86cb953..9bf5b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e05=['../../config/logger','api','bluebird','request-promise','path','../../config/environment','define','lodash'];(function(_0x2f9984,_0x571593){var _0x158a6e=function(_0x58dc20){while(--_0x58dc20){_0x2f9984['push'](_0x2f9984['shift']());}};_0x158a6e(++_0x571593);}(_0x4e05,0x10f));var _0x54e0=function(_0x38ea38,_0x58f0e0){_0x38ea38=_0x38ea38-0x0;var _0x2a5b36=_0x4e05[_0x38ea38];return _0x2a5b36;};'use strict';var _=require(_0x54e0('0x0'));var util=require('util');var logger=require(_0x54e0('0x1'))(_0x54e0('0x2'));var moment=require('moment');var BPromise=require(_0x54e0('0x3'));var rp=require(_0x54e0('0x4'));var fs=require('fs');var path=require(_0x54e0('0x5'));var rimraf=require('rimraf');var config=require(_0x54e0('0x6'));var attributes=require('./condition.attributes');module['exports']=function(_0x6cc7f,_0x1443cd){return _0x6cc7f[_0x54e0('0x7')]('Condition',attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x983d=['Condition','tools_conditions','lodash','util','../../config/logger','api','moment','rimraf','./condition.attributes','exports'];(function(_0x22017b,_0x515e0b){var _0x4fdfd0=function(_0x54fb62){while(--_0x54fb62){_0x22017b['push'](_0x22017b['shift']());}};_0x4fdfd0(++_0x515e0b);}(_0x983d,0x8e));var _0xd983=function(_0x171ea5,_0x5421d7){_0x171ea5=_0x171ea5-0x0;var _0x5b3ac5=_0x983d[_0x171ea5];return _0x5b3ac5;};'use strict';var _=require(_0xd983('0x0'));var util=require(_0xd983('0x1'));var logger=require(_0xd983('0x2'))(_0xd983('0x3'));var moment=require(_0xd983('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd983('0x5'));var config=require('../../config/environment');var attributes=require(_0xd983('0x6'));module[_0xd983('0x7')]=function(_0x4b36d7,_0x3a6745){return _0x4b36d7['define'](_0xd983('0x8'),attributes,{'tableName':_0xd983('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f6a97dc..3e86b5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc43e=['message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','Condition,\x20%s,\x20%s','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x32738a,_0x2f4dcd){var _0x404c12=function(_0x2958cb){while(--_0x2958cb){_0x32738a['push'](_0x32738a['shift']());}};_0x404c12(++_0x2f4dcd);}(_0xc43e,0xd2));var _0xec43=function(_0x4db706,_0x4f0b84){_0x4db706=_0x4db706-0x0;var _0x396387=_0xc43e[_0x4db706];return _0x396387;};'use strict';var _=require(_0xec43('0x0'));var util=require('util');var moment=require(_0xec43('0x1'));var BPromise=require('bluebird');var rs=require(_0xec43('0x2'));var fs=require('fs');var Redis=require(_0xec43('0x3'));var db=require(_0xec43('0x4'))['db'];var utils=require(_0xec43('0x5'));var logger=require(_0xec43('0x6'))(_0xec43('0x7'));var config=require(_0xec43('0x8'));var jayson=require(_0xec43('0x9'));var client=jayson[_0xec43('0xa')][_0xec43('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4973cf,_0x1bc027,_0x36faf4){return new BPromise(function(_0x2ba23c,_0xc508a){return client[_0xec43('0xc')](_0x4973cf,_0x36faf4)['then'](function(_0x29ca7a){logger['info'](_0xec43('0xd'),_0x1bc027,'request\x20sent');logger[_0xec43('0xe')](_0xec43('0xf'),_0x1bc027,_0xec43('0x10'),JSON[_0xec43('0x11')](_0x29ca7a));if(_0x29ca7a[_0xec43('0x12')]){if(_0x29ca7a[_0xec43('0x12')][_0xec43('0x13')]===0x1f4){logger[_0xec43('0x12')](_0xec43('0xd'),_0x1bc027,_0x29ca7a[_0xec43('0x12')][_0xec43('0x14')]);return _0xc508a(_0x29ca7a[_0xec43('0x12')]['message']);}logger[_0xec43('0x12')]('Condition,\x20%s,\x20%s',_0x1bc027,_0x29ca7a['error'][_0xec43('0x14')]);return _0x2ba23c(_0x29ca7a[_0xec43('0x12')][_0xec43('0x14')]);}else{logger['info'](_0xec43('0xd'),_0x1bc027,'request\x20sent');_0x2ba23c(_0x29ca7a[_0xec43('0x15')]['message']);}})[_0xec43('0x16')](function(_0x5e925c){logger[_0xec43('0x12')](_0xec43('0xd'),_0x1bc027,_0x5e925c);_0xc508a(_0x5e925c);});});}
\ No newline at end of file
+var _0x32db=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','bluebird','randomstring','ioredis'];(function(_0x3bcc47,_0x58becd){var _0x1ffa10=function(_0x2bad1e){while(--_0x2bad1e){_0x3bcc47['push'](_0x3bcc47['shift']());}};_0x1ffa10(++_0x58becd);}(_0x32db,0xf9));var _0xb32d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x32db[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xb32d('0x0'));var rs=require(_0xb32d('0x1'));var fs=require('fs');var Redis=require(_0xb32d('0x2'));var db=require(_0xb32d('0x3'))['db'];var utils=require(_0xb32d('0x4'));var logger=require(_0xb32d('0x5'))('rpc');var config=require(_0xb32d('0x6'));var jayson=require(_0xb32d('0x7'));var client=jayson['client'][_0xb32d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c2c2b,_0x54f241,_0x251838){return new BPromise(function(_0x2faddf,_0x37e0fc){return client[_0xb32d('0x9')](_0x3c2c2b,_0x251838)[_0xb32d('0xa')](function(_0x5dee93){logger[_0xb32d('0xb')](_0xb32d('0xc'),_0x54f241,_0xb32d('0xd'));logger[_0xb32d('0xe')](_0xb32d('0xf'),_0x54f241,'request\x20sent',JSON[_0xb32d('0x10')](_0x5dee93));if(_0x5dee93[_0xb32d('0x11')]){if(_0x5dee93[_0xb32d('0x11')][_0xb32d('0x12')]===0x1f4){logger[_0xb32d('0x11')](_0xb32d('0xc'),_0x54f241,_0x5dee93['error'][_0xb32d('0x13')]);return _0x37e0fc(_0x5dee93['error']['message']);}logger[_0xb32d('0x11')](_0xb32d('0xc'),_0x54f241,_0x5dee93[_0xb32d('0x11')][_0xb32d('0x13')]);return _0x2faddf(_0x5dee93[_0xb32d('0x11')][_0xb32d('0x13')]);}else{logger[_0xb32d('0xb')](_0xb32d('0xc'),_0x54f241,'request\x20sent');_0x2faddf(_0x5dee93['result']['message']);}})[_0xb32d('0x14')](function(_0x3df2e5){logger[_0xb32d('0x11')](_0xb32d('0xc'),_0x54f241,_0x3df2e5);_0x37e0fc(_0x3df2e5);});});}
\ No newline at end of file
index 44e394b..a2c11df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f33=['isAuthenticated','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','/:id'];(function(_0x1f36bb,_0x8af718){var _0xaf97fa=function(_0xeca489){while(--_0xeca489){_0x1f36bb['push'](_0x1f36bb['shift']());}};_0xaf97fa(++_0x8af718);}(_0x1f33,0xd2));var _0x31f3=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x1f33[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0x31f3('0x0'));var util=require(_0x31f3('0x1'));var path=require('path');var timeout=require(_0x31f3('0x2'));var express=require(_0x31f3('0x3'));var router=express[_0x31f3('0x4')]();var fs_extra=require(_0x31f3('0x5'));var auth=require(_0x31f3('0x6'));var interaction=require(_0x31f3('0x7'));var config=require(_0x31f3('0x8'));var controller=require('./condition.controller');router['put'](_0x31f3('0x9'),auth[_0x31f3('0xa')](),controller['update']);router['delete'](_0x31f3('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2929=['./condition.controller','/:id','delete','isAuthenticated','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4f302f,_0x3a670e){var _0x1c95e9=function(_0x4efce1){while(--_0x4efce1){_0x4f302f['push'](_0x4f302f['shift']());}};_0x1c95e9(++_0x3a670e);}(_0x2929,0xd8));var _0x9292=function(_0x3d79f5,_0x335d06){_0x3d79f5=_0x3d79f5-0x0;var _0x1adf7b=_0x2929[_0x3d79f5];return _0x1adf7b;};'use strict';var multer=require(_0x9292('0x0'));var util=require(_0x9292('0x1'));var path=require(_0x9292('0x2'));var timeout=require(_0x9292('0x3'));var express=require('express');var router=express[_0x9292('0x4')]();var fs_extra=require(_0x9292('0x5'));var auth=require(_0x9292('0x6'));var interaction=require(_0x9292('0x7'));var config=require(_0x9292('0x8'));var controller=require(_0x9292('0x9'));router['put'](_0x9292('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x9292('0xb')]('/:id',auth[_0x9292('0xc')](),controller[_0x9292('0xd')]);module[_0x9292('0xe')]=router;
\ No newline at end of file
index d311a6b..6e73964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x45ebb3,_0x216bbe){var _0x16f48c=function(_0x289c42){while(--_0x289c42){_0x45ebb3['push'](_0x45ebb3['shift']());}};_0x16f48c(++_0x216bbe);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x154be1,_0x5a6ed0){var _0x51b8b9=function(_0x2e7244){while(--_0x2e7244){_0x154be1['push'](_0x154be1['shift']());}};_0x51b8b9(++_0x5a6ed0);}(_0xb10b,0x12a));var _0xbb10=function(_0x2cf37f,_0x2217b7){_0x2cf37f=_0x2cf37f-0x0;var _0x1bd369=_0xb10b[_0x2cf37f];return _0x1bd369;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
index 142d794..34a8610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa065=['attrReport','widgetAttributes:\x20%s','stringify','addItem','DashboardItem','findOne','getItems','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./dashboard.socket','register','end','status','json','offset','undefined','limit','count','set','apply','save','then','destroy','get','CustomDashboards','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','Dashboard','findAll','rows','show','params','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','include','omit','createdAt','updatedAt','includeAll','role','update','iframe','attrUrl','attrs','value','custom','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie2','attrSerie3','web-report','reportType'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xa065,0x1d7));var _0x5a06=function(_0x4530d8,_0x4969ce){_0x4530d8=_0x4530d8-0x0;var _0x49cd95=_0xa065[_0x4530d8];return _0x49cd95;};'use strict';var emlformat=require(_0x5a06('0x0'));var rimraf=require(_0x5a06('0x1'));var zipdir=require(_0x5a06('0x2'));var jsonpatch=require(_0x5a06('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5a06('0x4'));var Mustache=require('mustache');var util=require(_0x5a06('0x5'));var path=require('path');var sox=require(_0x5a06('0x6'));var csv=require(_0x5a06('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5a06('0x8'));var _=require(_0x5a06('0x9'));var squel=require(_0x5a06('0xa'));var crypto=require(_0x5a06('0xb'));var jsforce=require(_0x5a06('0xc'));var deskjs=require(_0x5a06('0xd'));var toCsv=require(_0x5a06('0x7'));var querystring=require(_0x5a06('0xe'));var Papa=require(_0x5a06('0xf'));var Redis=require('ioredis');var authService=require(_0x5a06('0x10'));var qs=require(_0x5a06('0x11'));var as=require(_0x5a06('0x12'));var hardwareService=require(_0x5a06('0x13'));var logger=require(_0x5a06('0x14'))('api');var utils=require(_0x5a06('0x15'));var config=require(_0x5a06('0x16'));var licenseUtil=require(_0x5a06('0x17'));var db=require('../../mysqldb')['db'];config[_0x5a06('0x18')]=_['defaults'](config[_0x5a06('0x18')],{'host':_0x5a06('0x19'),'port':0x18eb});var socket=require(_0x5a06('0x1a'))(new Redis(config[_0x5a06('0x18')]));require(_0x5a06('0x1b'))[_0x5a06('0x1c')](socket);function respondWithStatusCode(_0x898d48,_0x439445){_0x439445=_0x439445||0xcc;return function(_0x5a37ae){if(_0x5a37ae){return _0x898d48['sendStatus'](_0x439445);}return _0x898d48['status'](_0x439445)[_0x5a06('0x1d')]();};}function respondWithResult(_0x4541be,_0x7ad12a){_0x7ad12a=_0x7ad12a||0xc8;return function(_0x1e3405){if(_0x1e3405){return _0x4541be[_0x5a06('0x1e')](_0x7ad12a)[_0x5a06('0x1f')](_0x1e3405);}};}function respondWithFilteredResult(_0x47d511,_0xc99ab5){return function(_0x62b54a){if(_0x62b54a){var _0x18ac5c=typeof _0xc99ab5[_0x5a06('0x20')]===_0x5a06('0x21')&&typeof _0xc99ab5[_0x5a06('0x22')]==='undefined';var _0x3fd4be=_0x62b54a[_0x5a06('0x23')];var _0x4a7d36=_0x18ac5c?0x0:_0xc99ab5[_0x5a06('0x20')];var _0x3dd060=_0x18ac5c?_0x62b54a['count']:_0xc99ab5[_0x5a06('0x20')]+_0xc99ab5['limit'];var _0x5487de;if(_0x3dd060>=_0x3fd4be){_0x3dd060=_0x3fd4be;_0x5487de=0xc8;}else{_0x5487de=0xce;}_0x47d511[_0x5a06('0x1e')](_0x5487de);return _0x47d511[_0x5a06('0x24')]('Content-Range',_0x4a7d36+'-'+_0x3dd060+'/'+_0x3fd4be)[_0x5a06('0x1f')](_0x62b54a);}return null;};}function patchUpdates(_0x365b08){return function(_0x14418c){try{jsonpatch[_0x5a06('0x25')](_0x14418c,_0x365b08,!![]);}catch(_0x54a971){return BPromise['reject'](_0x54a971);}return _0x14418c[_0x5a06('0x26')]();};}function saveUpdates(_0x14b2b7,_0x30b627){return function(_0x56c313){if(_0x56c313){return _0x56c313['update'](_0x14b2b7)[_0x5a06('0x27')](function(_0x4ebde9){return _0x4ebde9;});}return null;};}function removeEntity(_0x16c26d,_0x315c50){return function(_0x1fa0d6){if(_0x1fa0d6){return _0x1fa0d6[_0x5a06('0x28')]()[_0x5a06('0x27')](function(){var _0x1f0d22=_0x1fa0d6[_0x5a06('0x29')]({'plain':!![]});var _0x509a10=_0x5a06('0x2a');return db['UserProfileResource'][_0x5a06('0x28')]({'where':{'type':_0x509a10,'resourceId':_0x1f0d22['id']}})[_0x5a06('0x27')](function(){return _0x1fa0d6;});})[_0x5a06('0x27')](function(){_0x16c26d[_0x5a06('0x1e')](0xcc)[_0x5a06('0x1d')]();});}};}function handleEntityNotFound(_0x44008e,_0x4b119f){return function(_0x1ebb63){if(!_0x1ebb63){_0x44008e[_0x5a06('0x2b')](0x194);}return _0x1ebb63;};}function handleError(_0x534445,_0x57692f){_0x57692f=_0x57692f||0x1f4;return function(_0x1e443b){logger[_0x5a06('0x2c')](_0x1e443b[_0x5a06('0x2d')]);if(_0x1e443b['name']){delete _0x1e443b[_0x5a06('0x2e')];}_0x534445[_0x5a06('0x1e')](_0x57692f)[_0x5a06('0x2f')](_0x1e443b);};}exports['index']=function(_0x4d9a9c,_0x3ec7af){var _0x100649={},_0x405a1f={},_0x2592d4={'count':0x0,'rows':[]};var _0x1fde33=_[_0x5a06('0x30')](db['Dashboard'][_0x5a06('0x31')],function(_0x34899d){return{'name':_0x34899d[_0x5a06('0x32')],'type':_0x34899d[_0x5a06('0x33')][_0x5a06('0x34')]};});_0x405a1f[_0x5a06('0x35')]=_[_0x5a06('0x30')](_0x1fde33,_0x5a06('0x2e'));_0x405a1f[_0x5a06('0x36')]=_[_0x5a06('0x37')](_0x4d9a9c[_0x5a06('0x36')]);_0x405a1f[_0x5a06('0x38')]=_[_0x5a06('0x39')](_0x405a1f['model'],_0x405a1f[_0x5a06('0x36')]);_0x100649[_0x5a06('0x3a')]=_[_0x5a06('0x39')](_0x405a1f[_0x5a06('0x35')],qs['fields'](_0x4d9a9c['query'][_0x5a06('0x3b')]));_0x100649[_0x5a06('0x3a')]=_0x100649[_0x5a06('0x3a')][_0x5a06('0x3c')]?_0x100649[_0x5a06('0x3a')]:_0x405a1f['model'];if(!_0x4d9a9c[_0x5a06('0x36')][_0x5a06('0x3d')](_0x5a06('0x3e'))){_0x100649[_0x5a06('0x22')]=qs[_0x5a06('0x22')](_0x4d9a9c[_0x5a06('0x36')][_0x5a06('0x22')]);_0x100649[_0x5a06('0x20')]=qs[_0x5a06('0x20')](_0x4d9a9c[_0x5a06('0x36')][_0x5a06('0x20')]);}_0x100649['order']=qs[_0x5a06('0x3f')](_0x4d9a9c['query'][_0x5a06('0x3f')]);_0x100649[_0x5a06('0x40')]=qs['filters'](_[_0x5a06('0x41')](_0x4d9a9c[_0x5a06('0x36')],_0x405a1f[_0x5a06('0x38')]),_0x1fde33);if(_0x4d9a9c[_0x5a06('0x36')][_0x5a06('0x42')]){_0x100649['where']=_[_0x5a06('0x43')](_0x100649[_0x5a06('0x40')],{'$or':_['map'](_0x1fde33,function(_0x8abc9c){if(_0x8abc9c['type']!==_0x5a06('0x44')){var _0x552a49={};_0x552a49[_0x8abc9c[_0x5a06('0x2e')]]={'$like':'%'+_0x4d9a9c[_0x5a06('0x36')][_0x5a06('0x42')]+'%'};return _0x552a49;}})});}_0x100649=_[_0x5a06('0x43')]({},_0x100649,_0x4d9a9c[_0x5a06('0x45')]);var _0x1f44e4={'where':_0x100649['where']};return db[_0x5a06('0x46')][_0x5a06('0x23')](_0x1f44e4)[_0x5a06('0x27')](function(_0xac3f8f){_0x2592d4[_0x5a06('0x23')]=_0xac3f8f;if(_0x4d9a9c[_0x5a06('0x36')]['includeAll']){_0x100649['include']=[{'all':!![]}];}return db[_0x5a06('0x46')][_0x5a06('0x47')](_0x100649);})[_0x5a06('0x27')](function(_0x40182c){_0x2592d4[_0x5a06('0x48')]=_0x40182c;return _0x2592d4;})[_0x5a06('0x27')](respondWithFilteredResult(_0x3ec7af,_0x100649))['catch'](handleError(_0x3ec7af,null));};exports[_0x5a06('0x49')]=function(_0x13d69b,_0xd9f72d){var _0x3b11f9={'raw':![],'where':{'id':_0x13d69b[_0x5a06('0x4a')]['id']}},_0x521e71={};_0x521e71[_0x5a06('0x35')]=_[_0x5a06('0x37')](db[_0x5a06('0x46')][_0x5a06('0x31')]);_0x521e71['query']=_['keys'](_0x13d69b[_0x5a06('0x36')]);_0x521e71[_0x5a06('0x38')]=_[_0x5a06('0x39')](_0x521e71[_0x5a06('0x35')],_0x521e71[_0x5a06('0x36')]);_0x3b11f9[_0x5a06('0x3a')]=_['intersection'](_0x521e71[_0x5a06('0x35')],qs[_0x5a06('0x3b')](_0x13d69b['query'][_0x5a06('0x3b')]));_0x3b11f9[_0x5a06('0x3a')]=_0x3b11f9[_0x5a06('0x3a')][_0x5a06('0x3c')]?_0x3b11f9['attributes']:_0x521e71['model'];if(_0x13d69b[_0x5a06('0x36')]['includeAll']){_0x3b11f9['include']=[{'all':!![]}];}_0x3b11f9=_['merge']({},_0x3b11f9,_0x13d69b[_0x5a06('0x45')]);return db[_0x5a06('0x46')][_0x5a06('0x4b')](_0x3b11f9)['then'](handleEntityNotFound(_0xd9f72d,null))[_0x5a06('0x27')](respondWithResult(_0xd9f72d,null))[_0x5a06('0x4c')](handleError(_0xd9f72d,null));};exports[_0x5a06('0x4d')]=function(_0x2dabd1,_0x31d5ff){return db[_0x5a06('0x46')]['create'](_0x2dabd1[_0x5a06('0x4e')],{})[_0x5a06('0x27')](function(_0x266571){var _0x3c581e=_0x2dabd1['user']['get']({'plain':!![]});if(!_0x3c581e)throw new Error(_0x5a06('0x4f'));if(_0x3c581e['role']===_0x5a06('0x50')){var _0x20a475=_0x266571[_0x5a06('0x29')]({'plain':!![]});var _0x12a4bf='CustomDashboards';return db['UserProfileSection']['find']({'where':{'name':_0x12a4bf,'userProfileId':_0x3c581e[_0x5a06('0x51')]},'raw':!![]})[_0x5a06('0x27')](function(_0x56f466){if(_0x56f466&&_0x56f466['autoAssociation']===0x0){return db[_0x5a06('0x52')]['create']({'name':_0x20a475['name'],'resourceId':_0x20a475['id'],'type':_0x56f466[_0x5a06('0x2e')],'sectionId':_0x56f466['id']},{})[_0x5a06('0x27')](function(){return _0x266571;});}else{return _0x266571;}})[_0x5a06('0x4c')](function(_0x443c6e){logger[_0x5a06('0x2c')](_0x5a06('0x53'),_0x443c6e);throw _0x443c6e;});}return _0x266571;})['then'](respondWithResult(_0x31d5ff,0xc9))[_0x5a06('0x4c')](handleError(_0x31d5ff,null));};exports[_0x5a06('0x54')]=function(_0x49a7d7,_0x3d3378){var _0x7c2841={'where':{'id':_0x49a7d7[_0x5a06('0x4a')]['id']}},_0x29ed6a={};_0x29ed6a[_0x5a06('0x35')]=_['keys'](db[_0x5a06('0x46')][_0x5a06('0x31')]);_0x7c2841[_0x5a06('0x3a')]=_['intersection'](_0x29ed6a[_0x5a06('0x35')],qs[_0x5a06('0x3b')](_0x49a7d7[_0x5a06('0x36')][_0x5a06('0x3b')]));_0x7c2841['attributes']=_0x7c2841[_0x5a06('0x3a')][_0x5a06('0x3c')]?_0x7c2841[_0x5a06('0x3a')]:_0x29ed6a[_0x5a06('0x35')];if(_0x49a7d7[_0x5a06('0x36')]['includeAll']){_0x7c2841[_0x5a06('0x55')]=[{'all':!![]}];}_0x7c2841=_['merge']({},_0x7c2841,_0x49a7d7['options']);return db['Dashboard'][_0x5a06('0x4b')](_0x7c2841)['then'](handleEntityNotFound(_0x3d3378,null))['then'](function(_0x31b042){if(_0x31b042){var _0x1fcda3=_0x31b042['get']({'plain':!![]});_0x1fcda3=qs[_0x5a06('0x56')](_0x1fcda3,['id',_0x5a06('0x57'),_0x5a06('0x58')]);_0x49a7d7[_0x5a06('0x4e')]=_[_0x5a06('0x56')](_0x49a7d7[_0x5a06('0x4e')],['id','createdAt','updatedAt']);return db[_0x5a06('0x46')]['create'](_[_0x5a06('0x43')](_0x1fcda3,_0x49a7d7[_0x5a06('0x4e')]),{'include':_0x49a7d7[_0x5a06('0x36')][_0x5a06('0x59')]?[{'all':!![]}]:undefined})[_0x5a06('0x27')](function(_0x6c3fc5){var _0x5dd4a3=_0x49a7d7[_0x5a06('0x50')][_0x5a06('0x29')]({'plain':!![]});if(!_0x5dd4a3)throw new Error(_0x5a06('0x4f'));if(_0x5dd4a3[_0x5a06('0x5a')]==='user'){var _0x3d37b0=_0x6c3fc5[_0x5a06('0x29')]({'plain':!![]});var _0xabba5=_0x5a06('0x2a');return db['UserProfileSection'][_0x5a06('0x4b')]({'where':{'name':_0xabba5,'userProfileId':_0x5dd4a3[_0x5a06('0x51')]},'raw':!![]})[_0x5a06('0x27')](function(_0x251558){if(_0x251558&&_0x251558['autoAssociation']===0x0){return db[_0x5a06('0x52')][_0x5a06('0x4d')]({'name':_0x3d37b0[_0x5a06('0x2e')],'resourceId':_0x3d37b0['id'],'type':_0x251558[_0x5a06('0x2e')],'sectionId':_0x251558['id']},{})[_0x5a06('0x27')](function(){return _0x6c3fc5;});}else{return _0x6c3fc5;}})[_0x5a06('0x4c')](function(_0x5dcc26){logger[_0x5a06('0x2c')](_0x5a06('0x53'),_0x5dcc26);throw _0x5dcc26;});}return _0x6c3fc5;});}})[_0x5a06('0x27')](respondWithResult(_0x3d3378,0xc9))['catch'](handleError(_0x3d3378,null));};exports[_0x5a06('0x5b')]=function(_0x28719c,_0x427ecd){if(_0x28719c[_0x5a06('0x4e')]['id']){delete _0x28719c['body']['id'];}return db['Dashboard'][_0x5a06('0x4b')]({'where':{'id':_0x28719c[_0x5a06('0x4a')]['id']}})[_0x5a06('0x27')](handleEntityNotFound(_0x427ecd,null))[_0x5a06('0x27')](saveUpdates(_0x28719c[_0x5a06('0x4e')],null))[_0x5a06('0x27')](respondWithResult(_0x427ecd,null))[_0x5a06('0x4c')](handleError(_0x427ecd,null));};exports[_0x5a06('0x28')]=function(_0x5b20d1,_0x154902){return db[_0x5a06('0x46')]['find']({'where':{'id':_0x5b20d1[_0x5a06('0x4a')]['id']}})[_0x5a06('0x27')](handleEntityNotFound(_0x154902,null))[_0x5a06('0x27')](removeEntity(_0x154902,null))[_0x5a06('0x4c')](handleError(_0x154902,null));};function widgetAttributes(_0x5d85e0){try{switch(_0x5d85e0[_0x5a06('0x33')]){case _0x5a06('0x5c'):return[{'name':'attrUrl','value':_0x5d85e0[_0x5a06('0x5d')]||(_0x5d85e0['attrs']&&_0x5d85e0[_0x5a06('0x5e')][0x0]?_0x5d85e0[_0x5a06('0x5e')][0x0][_0x5a06('0x5f')]:undefined)||'https://'}];case _0x5a06('0x60'):return[{'name':'attrPath','value':_0x5d85e0['attrPath']||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0[_0x5a06('0x5e')][0x0]?_0x5d85e0[_0x5a06('0x5e')][0x0][_0x5a06('0x5f')]:undefined)||''}];case'clock':return[{'name':_0x5a06('0x61'),'value':_0x5d85e0[_0x5a06('0x61')]||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0['attrs'][0x0]?_0x5d85e0['attrs'][0x0]['value']:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x5d85e0[_0x5a06('0x62')]||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0[_0x5a06('0x5e')][0x1]?_0x5d85e0[_0x5a06('0x5e')][0x1][_0x5a06('0x5f')]:undefined)||'0.00'},{'name':_0x5a06('0x63'),'value':_0x5d85e0[_0x5a06('0x63')]||(_0x5d85e0['attrs']&&_0x5d85e0[_0x5a06('0x5e')][0x2]?_0x5d85e0['attrs'][0x2][_0x5a06('0x5f')]:undefined)||0xc}];case _0x5a06('0x64'):return[{'name':_0x5a06('0x65'),'value':_0x5d85e0['attrMetric']||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0[_0x5a06('0x5e')][0x0]?_0x5d85e0[_0x5a06('0x5e')][0x0][_0x5a06('0x5f')]:undefined)||_0x5a06('0x66')},{'name':_0x5a06('0x67'),'value':_0x5d85e0[_0x5a06('0x67')]||(_0x5d85e0['attrs']&&_0x5d85e0[_0x5a06('0x5e')][0x1]?_0x5d85e0[_0x5a06('0x5e')][0x1][_0x5a06('0x5f')]:undefined)||[]},{'name':_0x5a06('0x63'),'value':_0x5d85e0[_0x5a06('0x63')]||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0[_0x5a06('0x5e')][0x2]?_0x5d85e0['attrs'][0x2][_0x5a06('0x5f')]:undefined)||0x14}];case _0x5a06('0x68'):case'pie-chart':return[{'name':'attrSerie1','value':_0x5d85e0['attrSerie1']||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0[_0x5a06('0x5e')][0x0]?_0x5d85e0[_0x5a06('0x5e')][0x0][_0x5a06('0x5f')]:undefined)||'total'},{'name':'attrSerie2','value':_0x5d85e0[_0x5a06('0x69')]||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0[_0x5a06('0x5e')][0x1]?_0x5d85e0[_0x5a06('0x5e')][0x1][_0x5a06('0x5f')]:undefined)||null},{'name':_0x5a06('0x6a'),'value':_0x5d85e0[_0x5a06('0x6a')]||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0['attrs'][0x2]?_0x5d85e0[_0x5a06('0x5e')][0x2][_0x5a06('0x5f')]:undefined)||null},{'name':_0x5a06('0x67'),'value':_0x5d85e0[_0x5a06('0x67')]||(_0x5d85e0['attrs']&&_0x5d85e0['attrs'][0x3]?_0x5d85e0[_0x5a06('0x5e')][0x3][_0x5a06('0x5f')]:undefined)||[]}];case _0x5a06('0x6b'):return[{'name':'attrReport','type':_0x5d85e0[_0x5a06('0x6c')]||(_0x5d85e0['attrs']&&_0x5d85e0['attrs'][0x0]?_0x5d85e0['attrs'][0x0][_0x5a06('0x33')]:undefined)||null,'value':_0x5d85e0[_0x5a06('0x6d')]||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0['attrs'][0x0]?_0x5d85e0[_0x5a06('0x5e')][0x0][_0x5a06('0x5f')]:undefined)||null},{'name':'attrRefresh','value':_0x5d85e0['attrRefresh']||(_0x5d85e0[_0x5a06('0x5e')]&&_0x5d85e0[_0x5a06('0x5e')][0x1]?_0x5d85e0[_0x5a06('0x5e')][0x1][_0x5a06('0x5f')]:undefined)||0x0}];default:return[];}}catch(_0x27ec8f){logger['error'](_0x5a06('0x6e'),JSON[_0x5a06('0x6f')](_0x27ec8f));return[];}}exports[_0x5a06('0x70')]=function(_0x1cdada,_0x473ebe,_0x2e2cea){if(_0x1cdada[_0x5a06('0x4e')]['id']){delete _0x1cdada[_0x5a06('0x4e')]['id'];}return db[_0x5a06('0x46')]['find']({'where':{'id':_0x1cdada['params']['id']}})[_0x5a06('0x27')](handleEntityNotFound(_0x473ebe,null))[_0x5a06('0x27')](function(_0x23fab9){if(_0x23fab9){_0x1cdada[_0x5a06('0x4e')]['DashboardId']=_0x23fab9['id'];_0x1cdada[_0x5a06('0x4e')][_0x5a06('0x5e')]=widgetAttributes(_0x1cdada['body']);return db[_0x5a06('0x71')]['create'](_0x1cdada[_0x5a06('0x4e')]);}})[_0x5a06('0x27')](respondWithResult(_0x473ebe,null))[_0x5a06('0x4c')](handleError(_0x473ebe,null));};exports['getItems']=function(_0x3db2b6,_0x58d047,_0x49e3a7){var _0x489f26={};var _0x465320={};var _0x421654;var _0x303eca;return db['Dashboard'][_0x5a06('0x72')]({'where':{'id':_0x3db2b6[_0x5a06('0x4a')]['id']}})['then'](handleEntityNotFound(_0x58d047,null))[_0x5a06('0x27')](function(_0x440912){if(_0x440912){_0x421654=_0x440912;_0x465320[_0x5a06('0x35')]=_['keys'](db[_0x5a06('0x71')][_0x5a06('0x31')]);_0x465320[_0x5a06('0x36')]=_[_0x5a06('0x37')](_0x3db2b6[_0x5a06('0x36')]);_0x465320[_0x5a06('0x38')]=_[_0x5a06('0x39')](_0x465320[_0x5a06('0x35')],_0x465320[_0x5a06('0x36')]);_0x489f26['attributes']=_[_0x5a06('0x39')](_0x465320[_0x5a06('0x35')],qs[_0x5a06('0x3b')](_0x3db2b6[_0x5a06('0x36')][_0x5a06('0x3b')]));_0x489f26['attributes']=_0x489f26[_0x5a06('0x3a')][_0x5a06('0x3c')]?_0x489f26[_0x5a06('0x3a')]:_0x465320['model'];_0x489f26['order']=qs['sort'](_0x3db2b6['query']['sort']);_0x489f26[_0x5a06('0x40')]=qs[_0x5a06('0x38')](_['pick'](_0x3db2b6[_0x5a06('0x36')],_0x465320[_0x5a06('0x38')]));if(_0x3db2b6['query'][_0x5a06('0x42')]){_0x489f26['where']=_[_0x5a06('0x43')](_0x489f26[_0x5a06('0x40')],{'$or':_[_0x5a06('0x30')](_0x489f26[_0x5a06('0x3a')],function(_0x29a147){var _0x4bb462={};_0x4bb462[_0x29a147]={'$like':'%'+_0x3db2b6[_0x5a06('0x36')]['filter']+'%'};return _0x4bb462;})});}_0x489f26=_[_0x5a06('0x43')]({},_0x489f26,_0x3db2b6[_0x5a06('0x45')]);return _0x421654['getItems'](_0x489f26);}})[_0x5a06('0x27')](function(_0x1b45f8){if(_0x1b45f8){_0x303eca=_0x1b45f8[_0x5a06('0x3c')];if(!_0x3db2b6['query'][_0x5a06('0x3d')](_0x5a06('0x3e'))){_0x489f26[_0x5a06('0x22')]=qs[_0x5a06('0x22')](_0x3db2b6['query']['limit']);_0x489f26[_0x5a06('0x20')]=qs[_0x5a06('0x20')](_0x3db2b6[_0x5a06('0x36')][_0x5a06('0x20')]);}return _0x421654[_0x5a06('0x73')](_0x489f26);}})[_0x5a06('0x27')](function(_0x5e269a){if(_0x5e269a){return _0x5e269a?{'count':_0x303eca,'rows':_0x5e269a}:null;}})[_0x5a06('0x27')](respondWithResult(_0x58d047,null))[_0x5a06('0x4c')](handleError(_0x58d047,null));};
\ No newline at end of file
+var _0x8d9a=['then','get','CustomDashboards','UserProfileResource','error','stack','send','index','map','Dashboard','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','include','rows','catch','show','params','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','destroy','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardItem','getItems','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./dashboard.socket','sendStatus','status','end','json','undefined','limit','offset','Content-Range','reject','save','update'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0x8d9a,0x13c));var _0xa8d9=function(_0x934198,_0x299b3b){_0x934198=_0x934198-0x0;var _0x225540=_0x8d9a[_0x934198];return _0x225540;};'use strict';var emlformat=require(_0xa8d9('0x0'));var rimraf=require(_0xa8d9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8d9('0x2'));var rp=require(_0xa8d9('0x3'));var moment=require(_0xa8d9('0x4'));var BPromise=require(_0xa8d9('0x5'));var Mustache=require(_0xa8d9('0x6'));var util=require(_0xa8d9('0x7'));var path=require(_0xa8d9('0x8'));var sox=require('sox');var csv=require(_0xa8d9('0x9'));var ejs=require(_0xa8d9('0xa'));var fs=require('fs');var fs_extra=require(_0xa8d9('0xb'));var _=require(_0xa8d9('0xc'));var squel=require(_0xa8d9('0xd'));var crypto=require(_0xa8d9('0xe'));var jsforce=require(_0xa8d9('0xf'));var deskjs=require(_0xa8d9('0x10'));var toCsv=require(_0xa8d9('0x9'));var querystring=require(_0xa8d9('0x11'));var Papa=require(_0xa8d9('0x12'));var Redis=require('ioredis');var authService=require(_0xa8d9('0x13'));var qs=require(_0xa8d9('0x14'));var as=require(_0xa8d9('0x15'));var hardwareService=require(_0xa8d9('0x16'));var logger=require(_0xa8d9('0x17'))('api');var utils=require(_0xa8d9('0x18'));var config=require(_0xa8d9('0x19'));var licenseUtil=require(_0xa8d9('0x1a'));var db=require(_0xa8d9('0x1b'))['db'];config['redis']=_[_0xa8d9('0x1c')](config['redis'],{'host':_0xa8d9('0x1d'),'port':0x18eb});var socket=require(_0xa8d9('0x1e'))(new Redis(config[_0xa8d9('0x1f')]));require(_0xa8d9('0x20'))['register'](socket);function respondWithStatusCode(_0x4f0850,_0x140bd8){_0x140bd8=_0x140bd8||0xcc;return function(_0x423b7e){if(_0x423b7e){return _0x4f0850[_0xa8d9('0x21')](_0x140bd8);}return _0x4f0850[_0xa8d9('0x22')](_0x140bd8)[_0xa8d9('0x23')]();};}function respondWithResult(_0x275919,_0x185ad0){_0x185ad0=_0x185ad0||0xc8;return function(_0x59dd58){if(_0x59dd58){return _0x275919[_0xa8d9('0x22')](_0x185ad0)[_0xa8d9('0x24')](_0x59dd58);}};}function respondWithFilteredResult(_0x3e0a9c,_0x16054b){return function(_0x30620d){if(_0x30620d){var _0x1ea4d8=typeof _0x16054b['offset']===_0xa8d9('0x25')&&typeof _0x16054b[_0xa8d9('0x26')]==='undefined';var _0x252822=_0x30620d['count'];var _0x36f494=_0x1ea4d8?0x0:_0x16054b['offset'];var _0x2cb46d=_0x1ea4d8?_0x30620d['count']:_0x16054b[_0xa8d9('0x27')]+_0x16054b[_0xa8d9('0x26')];var _0x1863d6;if(_0x2cb46d>=_0x252822){_0x2cb46d=_0x252822;_0x1863d6=0xc8;}else{_0x1863d6=0xce;}_0x3e0a9c['status'](_0x1863d6);return _0x3e0a9c['set'](_0xa8d9('0x28'),_0x36f494+'-'+_0x2cb46d+'/'+_0x252822)[_0xa8d9('0x24')](_0x30620d);}return null;};}function patchUpdates(_0x346f1c){return function(_0x179585){try{jsonpatch['apply'](_0x179585,_0x346f1c,!![]);}catch(_0x1e1f5f){return BPromise[_0xa8d9('0x29')](_0x1e1f5f);}return _0x179585[_0xa8d9('0x2a')]();};}function saveUpdates(_0x3934eb,_0x810f5c){return function(_0x11449f){if(_0x11449f){return _0x11449f[_0xa8d9('0x2b')](_0x3934eb)[_0xa8d9('0x2c')](function(_0x794b42){return _0x794b42;});}return null;};}function removeEntity(_0x470d50,_0xda5e1){return function(_0x37f1e3){if(_0x37f1e3){return _0x37f1e3['destroy']()[_0xa8d9('0x2c')](function(){var _0x55b19d=_0x37f1e3[_0xa8d9('0x2d')]({'plain':!![]});var _0x4eb1e9=_0xa8d9('0x2e');return db[_0xa8d9('0x2f')]['destroy']({'where':{'type':_0x4eb1e9,'resourceId':_0x55b19d['id']}})[_0xa8d9('0x2c')](function(){return _0x37f1e3;});})[_0xa8d9('0x2c')](function(){_0x470d50[_0xa8d9('0x22')](0xcc)[_0xa8d9('0x23')]();});}};}function handleEntityNotFound(_0x45bce0,_0x3eeae0){return function(_0x2a459e){if(!_0x2a459e){_0x45bce0[_0xa8d9('0x21')](0x194);}return _0x2a459e;};}function handleError(_0xc40f72,_0xcd225a){_0xcd225a=_0xcd225a||0x1f4;return function(_0x223db3){logger[_0xa8d9('0x30')](_0x223db3[_0xa8d9('0x31')]);if(_0x223db3['name']){delete _0x223db3['name'];}_0xc40f72[_0xa8d9('0x22')](_0xcd225a)[_0xa8d9('0x32')](_0x223db3);};}exports[_0xa8d9('0x33')]=function(_0x396253,_0x48cc04){var _0x200524={},_0x49e32e={},_0x1af0b7={'count':0x0,'rows':[]};var _0x287f57=_[_0xa8d9('0x34')](db[_0xa8d9('0x35')][_0xa8d9('0x36')],function(_0xe8af0c){return{'name':_0xe8af0c['fieldName'],'type':_0xe8af0c[_0xa8d9('0x37')][_0xa8d9('0x38')]};});_0x49e32e[_0xa8d9('0x39')]=_['map'](_0x287f57,'name');_0x49e32e[_0xa8d9('0x3a')]=_[_0xa8d9('0x3b')](_0x396253['query']);_0x49e32e[_0xa8d9('0x3c')]=_[_0xa8d9('0x3d')](_0x49e32e[_0xa8d9('0x39')],_0x49e32e[_0xa8d9('0x3a')]);_0x200524[_0xa8d9('0x3e')]=_['intersection'](_0x49e32e[_0xa8d9('0x39')],qs['fields'](_0x396253['query'][_0xa8d9('0x3f')]));_0x200524[_0xa8d9('0x3e')]=_0x200524[_0xa8d9('0x3e')][_0xa8d9('0x40')]?_0x200524[_0xa8d9('0x3e')]:_0x49e32e[_0xa8d9('0x39')];if(!_0x396253[_0xa8d9('0x3a')][_0xa8d9('0x41')](_0xa8d9('0x42'))){_0x200524[_0xa8d9('0x26')]=qs['limit'](_0x396253[_0xa8d9('0x3a')]['limit']);_0x200524['offset']=qs[_0xa8d9('0x27')](_0x396253['query'][_0xa8d9('0x27')]);}_0x200524[_0xa8d9('0x43')]=qs[_0xa8d9('0x44')](_0x396253[_0xa8d9('0x3a')]['sort']);_0x200524[_0xa8d9('0x45')]=qs[_0xa8d9('0x3c')](_['pick'](_0x396253[_0xa8d9('0x3a')],_0x49e32e[_0xa8d9('0x3c')]),_0x287f57);if(_0x396253[_0xa8d9('0x3a')][_0xa8d9('0x46')]){_0x200524[_0xa8d9('0x45')]=_['merge'](_0x200524[_0xa8d9('0x45')],{'$or':_[_0xa8d9('0x34')](_0x287f57,function(_0x1b2b76){if(_0x1b2b76[_0xa8d9('0x37')]!==_0xa8d9('0x47')){var _0x3a09b8={};_0x3a09b8[_0x1b2b76['name']]={'$like':'%'+_0x396253['query']['filter']+'%'};return _0x3a09b8;}})});}_0x200524=_[_0xa8d9('0x48')]({},_0x200524,_0x396253[_0xa8d9('0x49')]);var _0x1ac7e3={'where':_0x200524[_0xa8d9('0x45')]};return db[_0xa8d9('0x35')]['count'](_0x1ac7e3)['then'](function(_0x234e12){_0x1af0b7['count']=_0x234e12;if(_0x396253[_0xa8d9('0x3a')]['includeAll']){_0x200524[_0xa8d9('0x4a')]=[{'all':!![]}];}return db[_0xa8d9('0x35')]['findAll'](_0x200524);})[_0xa8d9('0x2c')](function(_0x163f13){_0x1af0b7[_0xa8d9('0x4b')]=_0x163f13;return _0x1af0b7;})[_0xa8d9('0x2c')](respondWithFilteredResult(_0x48cc04,_0x200524))[_0xa8d9('0x4c')](handleError(_0x48cc04,null));};exports[_0xa8d9('0x4d')]=function(_0x1fa1a4,_0x5946c5){var _0xdcdf74={'raw':![],'where':{'id':_0x1fa1a4[_0xa8d9('0x4e')]['id']}},_0x44a9b0={};_0x44a9b0[_0xa8d9('0x39')]=_['keys'](db['Dashboard']['rawAttributes']);_0x44a9b0['query']=_[_0xa8d9('0x3b')](_0x1fa1a4[_0xa8d9('0x3a')]);_0x44a9b0[_0xa8d9('0x3c')]=_[_0xa8d9('0x3d')](_0x44a9b0[_0xa8d9('0x39')],_0x44a9b0[_0xa8d9('0x3a')]);_0xdcdf74[_0xa8d9('0x3e')]=_[_0xa8d9('0x3d')](_0x44a9b0['model'],qs[_0xa8d9('0x3f')](_0x1fa1a4[_0xa8d9('0x3a')][_0xa8d9('0x3f')]));_0xdcdf74[_0xa8d9('0x3e')]=_0xdcdf74[_0xa8d9('0x3e')][_0xa8d9('0x40')]?_0xdcdf74[_0xa8d9('0x3e')]:_0x44a9b0[_0xa8d9('0x39')];if(_0x1fa1a4[_0xa8d9('0x3a')][_0xa8d9('0x4f')]){_0xdcdf74[_0xa8d9('0x4a')]=[{'all':!![]}];}_0xdcdf74=_[_0xa8d9('0x48')]({},_0xdcdf74,_0x1fa1a4['options']);return db[_0xa8d9('0x35')][_0xa8d9('0x50')](_0xdcdf74)['then'](handleEntityNotFound(_0x5946c5,null))[_0xa8d9('0x2c')](respondWithResult(_0x5946c5,null))['catch'](handleError(_0x5946c5,null));};exports[_0xa8d9('0x51')]=function(_0x280a79,_0x45b8ec){return db[_0xa8d9('0x35')][_0xa8d9('0x51')](_0x280a79[_0xa8d9('0x52')],{})[_0xa8d9('0x2c')](function(_0x130d85){var _0xb025de=_0x280a79[_0xa8d9('0x53')][_0xa8d9('0x2d')]({'plain':!![]});if(!_0xb025de)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb025de[_0xa8d9('0x54')]===_0xa8d9('0x53')){var _0x1536bc=_0x130d85[_0xa8d9('0x2d')]({'plain':!![]});var _0x4a5510=_0xa8d9('0x2e');return db[_0xa8d9('0x55')][_0xa8d9('0x50')]({'where':{'name':_0x4a5510,'userProfileId':_0xb025de[_0xa8d9('0x56')]},'raw':!![]})[_0xa8d9('0x2c')](function(_0x1f12ae){if(_0x1f12ae&&_0x1f12ae[_0xa8d9('0x57')]===0x0){return db[_0xa8d9('0x2f')]['create']({'name':_0x1536bc[_0xa8d9('0x58')],'resourceId':_0x1536bc['id'],'type':_0x1f12ae[_0xa8d9('0x58')],'sectionId':_0x1f12ae['id']},{})['then'](function(){return _0x130d85;});}else{return _0x130d85;}})[_0xa8d9('0x4c')](function(_0x504919){logger[_0xa8d9('0x30')](_0xa8d9('0x59'),_0x504919);throw _0x504919;});}return _0x130d85;})[_0xa8d9('0x2c')](respondWithResult(_0x45b8ec,0xc9))[_0xa8d9('0x4c')](handleError(_0x45b8ec,null));};exports[_0xa8d9('0x5a')]=function(_0x2f6a6c,_0x5db550){var _0x4f39b9={'where':{'id':_0x2f6a6c[_0xa8d9('0x4e')]['id']}},_0x19017e={};_0x19017e[_0xa8d9('0x39')]=_[_0xa8d9('0x3b')](db[_0xa8d9('0x35')]['rawAttributes']);_0x4f39b9[_0xa8d9('0x3e')]=_[_0xa8d9('0x3d')](_0x19017e['model'],qs['fields'](_0x2f6a6c['query'][_0xa8d9('0x3f')]));_0x4f39b9[_0xa8d9('0x3e')]=_0x4f39b9['attributes']['length']?_0x4f39b9['attributes']:_0x19017e[_0xa8d9('0x39')];if(_0x2f6a6c['query'][_0xa8d9('0x4f')]){_0x4f39b9['include']=[{'all':!![]}];}_0x4f39b9=_[_0xa8d9('0x48')]({},_0x4f39b9,_0x2f6a6c[_0xa8d9('0x49')]);return db[_0xa8d9('0x35')][_0xa8d9('0x50')](_0x4f39b9)['then'](handleEntityNotFound(_0x5db550,null))['then'](function(_0x398c46){if(_0x398c46){var _0x317495=_0x398c46[_0xa8d9('0x2d')]({'plain':!![]});_0x317495=qs['omit'](_0x317495,['id','createdAt','updatedAt']);_0x2f6a6c['body']=_['omit'](_0x2f6a6c[_0xa8d9('0x52')],['id',_0xa8d9('0x5b'),'updatedAt']);return db[_0xa8d9('0x35')][_0xa8d9('0x51')](_[_0xa8d9('0x48')](_0x317495,_0x2f6a6c[_0xa8d9('0x52')]),{'include':_0x2f6a6c[_0xa8d9('0x3a')][_0xa8d9('0x4f')]?[{'all':!![]}]:undefined})[_0xa8d9('0x2c')](function(_0x477f42){var _0x345f51=_0x2f6a6c[_0xa8d9('0x53')][_0xa8d9('0x2d')]({'plain':!![]});if(!_0x345f51)throw new Error(_0xa8d9('0x5c'));if(_0x345f51[_0xa8d9('0x54')]===_0xa8d9('0x53')){var _0x26c6de=_0x477f42[_0xa8d9('0x2d')]({'plain':!![]});var _0x26cb39=_0xa8d9('0x2e');return db[_0xa8d9('0x55')]['find']({'where':{'name':_0x26cb39,'userProfileId':_0x345f51[_0xa8d9('0x56')]},'raw':!![]})[_0xa8d9('0x2c')](function(_0xaf12d){if(_0xaf12d&&_0xaf12d['autoAssociation']===0x0){return db[_0xa8d9('0x2f')][_0xa8d9('0x51')]({'name':_0x26c6de[_0xa8d9('0x58')],'resourceId':_0x26c6de['id'],'type':_0xaf12d[_0xa8d9('0x58')],'sectionId':_0xaf12d['id']},{})[_0xa8d9('0x2c')](function(){return _0x477f42;});}else{return _0x477f42;}})['catch'](function(_0x3b570f){logger['error'](_0xa8d9('0x59'),_0x3b570f);throw _0x3b570f;});}return _0x477f42;});}})[_0xa8d9('0x2c')](respondWithResult(_0x5db550,0xc9))[_0xa8d9('0x4c')](handleError(_0x5db550,null));};exports['update']=function(_0x46ef63,_0x40a0f0){if(_0x46ef63[_0xa8d9('0x52')]['id']){delete _0x46ef63[_0xa8d9('0x52')]['id'];}return db[_0xa8d9('0x35')][_0xa8d9('0x50')]({'where':{'id':_0x46ef63['params']['id']}})[_0xa8d9('0x2c')](handleEntityNotFound(_0x40a0f0,null))[_0xa8d9('0x2c')](saveUpdates(_0x46ef63['body'],null))[_0xa8d9('0x2c')](respondWithResult(_0x40a0f0,null))[_0xa8d9('0x4c')](handleError(_0x40a0f0,null));};exports[_0xa8d9('0x5d')]=function(_0x2a657a,_0x1c5437){return db['Dashboard'][_0xa8d9('0x50')]({'where':{'id':_0x2a657a['params']['id']}})[_0xa8d9('0x2c')](handleEntityNotFound(_0x1c5437,null))[_0xa8d9('0x2c')](removeEntity(_0x1c5437,null))[_0xa8d9('0x4c')](handleError(_0x1c5437,null));};function widgetAttributes(_0x16e798){try{switch(_0x16e798['type']){case _0xa8d9('0x5e'):return[{'name':_0xa8d9('0x5f'),'value':_0x16e798[_0xa8d9('0x5f')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||_0xa8d9('0x62')}];case _0xa8d9('0x63'):return[{'name':_0xa8d9('0x64'),'value':_0x16e798[_0xa8d9('0x64')]||(_0x16e798['attrs']&&_0x16e798['attrs'][0x0]?_0x16e798['attrs'][0x0][_0xa8d9('0x61')]:undefined)||''}];case'clock':return[{'name':_0xa8d9('0x65'),'value':_0x16e798['attrHourFormat']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||_0xa8d9('0x66')},{'name':_0xa8d9('0x67'),'value':_0x16e798['attrTimezone']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798[_0xa8d9('0x60')][0x1][_0xa8d9('0x61')]:undefined)||'0.00'},{'name':_0xa8d9('0x68'),'value':_0x16e798['attrFontSize']||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x2]?_0x16e798[_0xa8d9('0x60')][0x2][_0xa8d9('0x61')]:undefined)||0xc}];case _0xa8d9('0x69'):return[{'name':'attrMetric','value':_0x16e798[_0xa8d9('0x6a')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x0]?_0x16e798[_0xa8d9('0x60')][0x0]['value']:undefined)||_0xa8d9('0x6b')},{'name':'attrVoiceQueues','value':_0x16e798[_0xa8d9('0x6c')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798[_0xa8d9('0x60')][0x1][_0xa8d9('0x61')]:undefined)||[]},{'name':_0xa8d9('0x68'),'value':_0x16e798[_0xa8d9('0x68')]||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x2]?_0x16e798[_0xa8d9('0x60')][0x2][_0xa8d9('0x61')]:undefined)||0x14}];case'multibar-chart':case'pie-chart':return[{'name':_0xa8d9('0x6d'),'value':_0x16e798['attrSerie1']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||_0xa8d9('0x6b')},{'name':_0xa8d9('0x6e'),'value':_0x16e798['attrSerie2']||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798['attrs'][0x1][_0xa8d9('0x61')]:undefined)||null},{'name':'attrSerie3','value':_0x16e798[_0xa8d9('0x6f')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x2]?_0x16e798['attrs'][0x2][_0xa8d9('0x61')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x16e798[_0xa8d9('0x6c')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x3]?_0x16e798[_0xa8d9('0x60')][0x3]['value']:undefined)||[]}];case _0xa8d9('0x70'):return[{'name':_0xa8d9('0x71'),'type':_0x16e798[_0xa8d9('0x72')]||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x37')]:undefined)||null,'value':_0x16e798['attrReport']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||null},{'name':_0xa8d9('0x73'),'value':_0x16e798[_0xa8d9('0x73')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798[_0xa8d9('0x60')][0x1][_0xa8d9('0x61')]:undefined)||0x0}];default:return[];}}catch(_0xedbe6){logger[_0xa8d9('0x30')](_0xa8d9('0x74'),JSON[_0xa8d9('0x75')](_0xedbe6));return[];}}exports['addItem']=function(_0x456633,_0x4e07f7,_0x11b419){if(_0x456633[_0xa8d9('0x52')]['id']){delete _0x456633[_0xa8d9('0x52')]['id'];}return db[_0xa8d9('0x35')][_0xa8d9('0x50')]({'where':{'id':_0x456633['params']['id']}})['then'](handleEntityNotFound(_0x4e07f7,null))[_0xa8d9('0x2c')](function(_0x3a4849){if(_0x3a4849){_0x456633['body']['DashboardId']=_0x3a4849['id'];_0x456633[_0xa8d9('0x52')]['attrs']=widgetAttributes(_0x456633[_0xa8d9('0x52')]);return db[_0xa8d9('0x76')]['create'](_0x456633[_0xa8d9('0x52')]);}})['then'](respondWithResult(_0x4e07f7,null))[_0xa8d9('0x4c')](handleError(_0x4e07f7,null));};exports[_0xa8d9('0x77')]=function(_0x2e3344,_0x24a3af,_0xa4fed3){var _0x2d4c7f={};var _0x28062d={};var _0x100c91;var _0x44991b;return db['Dashboard']['findOne']({'where':{'id':_0x2e3344['params']['id']}})['then'](handleEntityNotFound(_0x24a3af,null))[_0xa8d9('0x2c')](function(_0x287498){if(_0x287498){_0x100c91=_0x287498;_0x28062d[_0xa8d9('0x39')]=_[_0xa8d9('0x3b')](db['DashboardItem'][_0xa8d9('0x36')]);_0x28062d[_0xa8d9('0x3a')]=_[_0xa8d9('0x3b')](_0x2e3344[_0xa8d9('0x3a')]);_0x28062d[_0xa8d9('0x3c')]=_[_0xa8d9('0x3d')](_0x28062d[_0xa8d9('0x39')],_0x28062d[_0xa8d9('0x3a')]);_0x2d4c7f[_0xa8d9('0x3e')]=_['intersection'](_0x28062d[_0xa8d9('0x39')],qs[_0xa8d9('0x3f')](_0x2e3344[_0xa8d9('0x3a')]['fields']));_0x2d4c7f[_0xa8d9('0x3e')]=_0x2d4c7f[_0xa8d9('0x3e')][_0xa8d9('0x40')]?_0x2d4c7f[_0xa8d9('0x3e')]:_0x28062d[_0xa8d9('0x39')];_0x2d4c7f[_0xa8d9('0x43')]=qs[_0xa8d9('0x44')](_0x2e3344[_0xa8d9('0x3a')][_0xa8d9('0x44')]);_0x2d4c7f[_0xa8d9('0x45')]=qs['filters'](_['pick'](_0x2e3344[_0xa8d9('0x3a')],_0x28062d['filters']));if(_0x2e3344['query'][_0xa8d9('0x46')]){_0x2d4c7f[_0xa8d9('0x45')]=_[_0xa8d9('0x48')](_0x2d4c7f[_0xa8d9('0x45')],{'$or':_[_0xa8d9('0x34')](_0x2d4c7f['attributes'],function(_0x329a99){var _0x30b5a6={};_0x30b5a6[_0x329a99]={'$like':'%'+_0x2e3344[_0xa8d9('0x3a')]['filter']+'%'};return _0x30b5a6;})});}_0x2d4c7f=_[_0xa8d9('0x48')]({},_0x2d4c7f,_0x2e3344[_0xa8d9('0x49')]);return _0x100c91['getItems'](_0x2d4c7f);}})[_0xa8d9('0x2c')](function(_0x20637){if(_0x20637){_0x44991b=_0x20637[_0xa8d9('0x40')];if(!_0x2e3344[_0xa8d9('0x3a')][_0xa8d9('0x41')]('nolimit')){_0x2d4c7f[_0xa8d9('0x26')]=qs[_0xa8d9('0x26')](_0x2e3344[_0xa8d9('0x3a')]['limit']);_0x2d4c7f[_0xa8d9('0x27')]=qs[_0xa8d9('0x27')](_0x2e3344['query'][_0xa8d9('0x27')]);}return _0x100c91['getItems'](_0x2d4c7f);}})['then'](function(_0x1e2b15){if(_0x1e2b15){return _0x1e2b15?{'count':_0x44991b,'rows':_0x1e2b15}:null;}})[_0xa8d9('0x2c')](respondWithResult(_0x24a3af,null))[_0xa8d9('0x4c')](handleError(_0x24a3af,null));};
\ No newline at end of file
index e2d89c5..7e41f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe635=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners','save'];(function(_0x61970c,_0x261833){var _0x1efc8a=function(_0x4c1493){while(--_0x4c1493){_0x61970c['push'](_0x61970c['shift']());}};_0x1efc8a(++_0x261833);}(_0xe635,0x1be));var _0x5e63=function(_0x45e828,_0x3ed13b){_0x45e828=_0x45e828-0x0;var _0x33dbff=_0xe635[_0x45e828];return _0x33dbff;};'use strict';var EventEmitter=require(_0x5e63('0x0'));var Dashboard=require(_0x5e63('0x1'))['db'][_0x5e63('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x5e63('0x3')](0x0);var events={'afterCreate':_0x5e63('0x4'),'afterUpdate':_0x5e63('0x5'),'afterDestroy':_0x5e63('0x6')};function emitEvent(_0x585c30){return function(_0x56a8b5,_0x352338,_0x30e8d1){DashboardEvents[_0x5e63('0x7')](_0x585c30+':'+_0x56a8b5['id'],_0x56a8b5);DashboardEvents[_0x5e63('0x7')](_0x585c30,_0x56a8b5);_0x30e8d1(null);};}for(var e in events){if(events[_0x5e63('0x8')](e)){var event=events[e];Dashboard[_0x5e63('0x9')](e,emitEvent(event));}}module[_0x5e63('0xa')]=DashboardEvents;
\ No newline at end of file
+var _0x5224=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners'];(function(_0x5e56ec,_0x17be43){var _0x260a0f=function(_0x39ddb5){while(--_0x39ddb5){_0x5e56ec['push'](_0x5e56ec['shift']());}};_0x260a0f(++_0x17be43);}(_0x5224,0xa6));var _0x4522=function(_0xfcfc35,_0x41125e){_0xfcfc35=_0xfcfc35-0x0;var _0x13a3c7=_0x5224[_0xfcfc35];return _0x13a3c7;};'use strict';var EventEmitter=require(_0x4522('0x0'));var Dashboard=require(_0x4522('0x1'))['db'][_0x4522('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x4522('0x3')](0x0);var events={'afterCreate':_0x4522('0x4'),'afterUpdate':'update','afterDestroy':_0x4522('0x5')};function emitEvent(_0x1ed51b){return function(_0x630e1c,_0x1f7ac7,_0x320b1b){DashboardEvents[_0x4522('0x6')](_0x1ed51b+':'+_0x630e1c['id'],_0x630e1c);DashboardEvents['emit'](_0x1ed51b,_0x630e1c);_0x320b1b(null);};}for(var e in events){if(events[_0x4522('0x7')](e)){var event=events[e];Dashboard[_0x4522('0x8')](e,emitEvent(event));}}module[_0x4522('0x9')]=DashboardEvents;
\ No newline at end of file
index 8462380..67b21d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf756=['api','moment','request-promise','path','../../config/environment','./dashboard.attributes','exports','define','Dashboard','dashboards','lodash','util'];(function(_0x8b0748,_0x43c70c){var _0xcce85e=function(_0x5214e5){while(--_0x5214e5){_0x8b0748['push'](_0x8b0748['shift']());}};_0xcce85e(++_0x43c70c);}(_0xf756,0x1ae));var _0x6f75=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xf756[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x6f75('0x0'));var util=require(_0x6f75('0x1'));var logger=require('../../config/logger')(_0x6f75('0x2'));var moment=require(_0x6f75('0x3'));var BPromise=require('bluebird');var rp=require(_0x6f75('0x4'));var fs=require('fs');var path=require(_0x6f75('0x5'));var rimraf=require('rimraf');var config=require(_0x6f75('0x6'));var attributes=require(_0x6f75('0x7'));module[_0x6f75('0x8')]=function(_0x29d6fc,_0x34bf25){return _0x29d6fc[_0x6f75('0x9')](_0x6f75('0xa'),attributes,{'tableName':_0x6f75('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b2d=['define','dashboards','util','../../config/logger','api','moment','bluebird','request-promise','path','./dashboard.attributes'];(function(_0x58f3b5,_0x4898d7){var _0x3993bd=function(_0x4411fb){while(--_0x4411fb){_0x58f3b5['push'](_0x58f3b5['shift']());}};_0x3993bd(++_0x4898d7);}(_0x2b2d,0x142));var _0xd2b2=function(_0x45e647,_0x2c482c){_0x45e647=_0x45e647-0x0;var _0x2deace=_0x2b2d[_0x45e647];return _0x2deace;};'use strict';var _=require('lodash');var util=require(_0xd2b2('0x0'));var logger=require(_0xd2b2('0x1'))(_0xd2b2('0x2'));var moment=require(_0xd2b2('0x3'));var BPromise=require(_0xd2b2('0x4'));var rp=require(_0xd2b2('0x5'));var fs=require('fs');var path=require(_0xd2b2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd2b2('0x7'));module['exports']=function(_0x3b8505,_0x16599c){return _0x3b8505[_0xd2b2('0x8')]('Dashboard',attributes,{'tableName':_0xd2b2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 921ed2f..5ef2b7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3eb=['then','request\x20sent','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','Dashboard,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request'];(function(_0x43316d,_0x5ebd8f){var _0x52d343=function(_0x231e52){while(--_0x231e52){_0x43316d['push'](_0x43316d['shift']());}};_0x52d343(++_0x5ebd8f);}(_0xd3eb,0x1f1));var _0xbd3e=function(_0x3fb166,_0x4eb985){_0x3fb166=_0x3fb166-0x0;var _0x5e91be=_0xd3eb[_0x3fb166];return _0x5e91be;};'use strict';var _=require('lodash');var util=require(_0xbd3e('0x0'));var moment=require(_0xbd3e('0x1'));var BPromise=require(_0xbd3e('0x2'));var rs=require(_0xbd3e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbd3e('0x4'));var logger=require(_0xbd3e('0x5'))(_0xbd3e('0x6'));var config=require('../../config/environment');var jayson=require(_0xbd3e('0x7'));var client=jayson[_0xbd3e('0x8')][_0xbd3e('0x9')]({'port':0x232a});config[_0xbd3e('0xa')]=_[_0xbd3e('0xb')](config[_0xbd3e('0xa')],{'host':_0xbd3e('0xc'),'port':0x18eb});var socket=require(_0xbd3e('0xd'))(new Redis(config['redis']));require('./dashboard.socket')[_0xbd3e('0xe')](socket);function respondWithRpcPromise(_0x1c320c,_0x480370,_0x204420){return new BPromise(function(_0x2d15d3,_0x5463c6){return client[_0xbd3e('0xf')](_0x1c320c,_0x204420)[_0xbd3e('0x10')](function(_0x176133){logger['info']('Dashboard,\x20%s,\x20%s',_0x480370,_0xbd3e('0x11'));logger['debug'](_0xbd3e('0x12'),_0x480370,_0xbd3e('0x11'),JSON[_0xbd3e('0x13')](_0x176133));if(_0x176133[_0xbd3e('0x14')]){if(_0x176133['error'][_0xbd3e('0x15')]===0x1f4){logger[_0xbd3e('0x14')](_0xbd3e('0x16'),_0x480370,_0x176133[_0xbd3e('0x14')][_0xbd3e('0x17')]);return _0x5463c6(_0x176133[_0xbd3e('0x14')][_0xbd3e('0x17')]);}logger['error'](_0xbd3e('0x16'),_0x480370,_0x176133[_0xbd3e('0x14')][_0xbd3e('0x17')]);return _0x2d15d3(_0x176133[_0xbd3e('0x14')][_0xbd3e('0x17')]);}else{logger[_0xbd3e('0x18')]('Dashboard,\x20%s,\x20%s',_0x480370,_0xbd3e('0x11'));_0x2d15d3(_0x176133[_0xbd3e('0x19')][_0xbd3e('0x17')]);}})[_0xbd3e('0x1a')](function(_0x5de6b8){logger[_0xbd3e('0x14')](_0xbd3e('0x16'),_0x480370,_0x5de6b8);_0x5463c6(_0x5de6b8);});});}
\ No newline at end of file
+var _0xbfd8=['../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','localhost','./dashboard.socket','register','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb'];(function(_0x52a12a,_0x19ffde){var _0xf034fb=function(_0x6edf4c){while(--_0x6edf4c){_0x52a12a['push'](_0x52a12a['shift']());}};_0xf034fb(++_0x19ffde);}(_0xbfd8,0x78));var _0x8bfd=function(_0x32ca32,_0x238b2b){_0x32ca32=_0x32ca32-0x0;var _0x5438ff=_0xbfd8[_0x32ca32];return _0x5438ff;};'use strict';var _=require(_0x8bfd('0x0'));var util=require('util');var moment=require(_0x8bfd('0x1'));var BPromise=require('bluebird');var rs=require(_0x8bfd('0x2'));var fs=require('fs');var Redis=require(_0x8bfd('0x3'));var db=require(_0x8bfd('0x4'))['db'];var utils=require(_0x8bfd('0x5'));var logger=require('../../config/logger')(_0x8bfd('0x6'));var config=require(_0x8bfd('0x7'));var jayson=require(_0x8bfd('0x8'));var client=jayson[_0x8bfd('0x9')]['http']({'port':0x232a});config[_0x8bfd('0xa')]=_['defaults'](config['redis'],{'host':_0x8bfd('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8bfd('0xa')]));require(_0x8bfd('0xc'))[_0x8bfd('0xd')](socket);function respondWithRpcPromise(_0x460dc8,_0x3aaac5,_0x344f1d){return new BPromise(function(_0x2b8b6c,_0x2b3979){return client['request'](_0x460dc8,_0x344f1d)[_0x8bfd('0xe')](function(_0x312609){logger[_0x8bfd('0xf')](_0x8bfd('0x10'),_0x3aaac5,_0x8bfd('0x11'));logger[_0x8bfd('0x12')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x3aaac5,_0x8bfd('0x11'),JSON[_0x8bfd('0x13')](_0x312609));if(_0x312609[_0x8bfd('0x14')]){if(_0x312609[_0x8bfd('0x14')][_0x8bfd('0x15')]===0x1f4){logger[_0x8bfd('0x14')]('Dashboard,\x20%s,\x20%s',_0x3aaac5,_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);return _0x2b3979(_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);}logger[_0x8bfd('0x14')](_0x8bfd('0x10'),_0x3aaac5,_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);return _0x2b8b6c(_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);}else{logger[_0x8bfd('0xf')](_0x8bfd('0x10'),_0x3aaac5,_0x8bfd('0x11'));_0x2b8b6c(_0x312609[_0x8bfd('0x17')][_0x8bfd('0x16')]);}})[_0x8bfd('0x18')](function(_0x49dc21){logger['error'](_0x8bfd('0x10'),_0x3aaac5,_0x49dc21);_0x2b3979(_0x49dc21);});});}
\ No newline at end of file
index 34aa0eb..4d1cfeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1304=['register','length','./dashboard.events','save','remove','update'];(function(_0x31cbf0,_0x1e6918){var _0x4cd473=function(_0x21e687){while(--_0x21e687){_0x31cbf0['push'](_0x31cbf0['shift']());}};_0x4cd473(++_0x1e6918);}(_0x1304,0x1a6));var _0x4130=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1304[_0x321bb2];return _0x9c12ed;};'use strict';var DashboardEvents=require(_0x4130('0x0'));var events=[_0x4130('0x1'),_0x4130('0x2'),_0x4130('0x3')];function createListener(_0x2c4030,_0x155178){return function(_0x30ae7e){_0x155178['emit'](_0x2c4030,_0x30ae7e);};}function removeListener(_0x234573,_0x5cca44){return function(){DashboardEvents['removeListener'](_0x234573,_0x5cca44);};}exports[_0x4130('0x4')]=function(_0x425ccd){for(var _0x17877b=0x0,_0x421291=events[_0x4130('0x5')];_0x17877b<_0x421291;_0x17877b++){var _0x3f4d12=events[_0x17877b];var _0x1f2a2c=createListener('dashboard:'+_0x3f4d12,_0x425ccd);DashboardEvents['on'](_0x3f4d12,_0x1f2a2c);}};
\ No newline at end of file
+var _0x4d87=['dashboard:','./dashboard.events','save','update','register','length'];(function(_0x4ed594,_0x140a96){var _0x7f6ba1=function(_0x562f14){while(--_0x562f14){_0x4ed594['push'](_0x4ed594['shift']());}};_0x7f6ba1(++_0x140a96);}(_0x4d87,0x19f));var _0x74d8=function(_0x3f3fa2,_0x54c464){_0x3f3fa2=_0x3f3fa2-0x0;var _0x49c36c=_0x4d87[_0x3f3fa2];return _0x49c36c;};'use strict';var DashboardEvents=require(_0x74d8('0x0'));var events=[_0x74d8('0x1'),'remove',_0x74d8('0x2')];function createListener(_0x14bb88,_0x511f75){return function(_0x5eb3e4){_0x511f75['emit'](_0x14bb88,_0x5eb3e4);};}function removeListener(_0x36c3b8,_0x4d99d3){return function(){DashboardEvents['removeListener'](_0x36c3b8,_0x4d99d3);};}exports[_0x74d8('0x3')]=function(_0x3cb5e8){for(var _0x391531=0x0,_0x47dcf7=events[_0x74d8('0x4')];_0x391531<_0x47dcf7;_0x391531++){var _0x485941=events[_0x391531];var _0xb265f3=createListener(_0x74d8('0x5')+_0x485941,_0x3cb5e8);DashboardEvents['on'](_0x485941,_0xb265f3);}};
\ No newline at end of file
index e642b2e..1623f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c74=['fs-extra','../../components/interaction/service','./dashboard.controller','get','isAuthenticated','index','show','/:id/items','getItems','post','create','clone','addItem','put','/:id','update','delete','destroy','exports','multer','util','path','Router'];(function(_0x50f37f,_0x613d39){var _0x1f496a=function(_0x2c88de){while(--_0x2c88de){_0x50f37f['push'](_0x50f37f['shift']());}};_0x1f496a(++_0x613d39);}(_0x3c74,0x1b1));var _0x43c7=function(_0xc1fc74,_0x14ccd5){_0xc1fc74=_0xc1fc74-0x0;var _0x382107=_0x3c74[_0xc1fc74];return _0x382107;};'use strict';var multer=require(_0x43c7('0x0'));var util=require(_0x43c7('0x1'));var path=require(_0x43c7('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x43c7('0x3')]();var fs_extra=require(_0x43c7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x43c7('0x5'));var config=require('../../config/environment');var controller=require(_0x43c7('0x6'));router[_0x43c7('0x7')]('/',auth[_0x43c7('0x8')](),controller[_0x43c7('0x9')]);router[_0x43c7('0x7')]('/:id',auth[_0x43c7('0x8')](),controller[_0x43c7('0xa')]);router[_0x43c7('0x7')](_0x43c7('0xb'),auth[_0x43c7('0x8')](),controller[_0x43c7('0xc')]);router[_0x43c7('0xd')]('/',auth[_0x43c7('0x8')](),controller[_0x43c7('0xe')]);router[_0x43c7('0xd')]('/:id/clone',auth[_0x43c7('0x8')](),controller[_0x43c7('0xf')]);router['post']('/:id/items',auth[_0x43c7('0x8')](),controller[_0x43c7('0x10')]);router[_0x43c7('0x11')](_0x43c7('0x12'),auth[_0x43c7('0x8')](),controller[_0x43c7('0x13')]);router[_0x43c7('0x14')]('/:id',auth[_0x43c7('0x8')](),controller[_0x43c7('0x15')]);module[_0x43c7('0x16')]=router;
\ No newline at end of file
+var _0x9ea7=['path','connect-timeout','express','Router','../../components/interaction/service','./dashboard.controller','get','isAuthenticated','/:id','show','/:id/items','getItems','post','create','clone','addItem','put','update','delete','multer','util'];(function(_0x370338,_0x4178ec){var _0x2e10df=function(_0x109471){while(--_0x109471){_0x370338['push'](_0x370338['shift']());}};_0x2e10df(++_0x4178ec);}(_0x9ea7,0xe5));var _0x79ea=function(_0x40f9a0,_0x3458cc){_0x40f9a0=_0x40f9a0-0x0;var _0x3e3144=_0x9ea7[_0x40f9a0];return _0x3e3144;};'use strict';var multer=require(_0x79ea('0x0'));var util=require(_0x79ea('0x1'));var path=require(_0x79ea('0x2'));var timeout=require(_0x79ea('0x3'));var express=require(_0x79ea('0x4'));var router=express[_0x79ea('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x79ea('0x6'));var config=require('../../config/environment');var controller=require(_0x79ea('0x7'));router[_0x79ea('0x8')]('/',auth[_0x79ea('0x9')](),controller['index']);router[_0x79ea('0x8')](_0x79ea('0xa'),auth['isAuthenticated'](),controller[_0x79ea('0xb')]);router[_0x79ea('0x8')](_0x79ea('0xc'),auth[_0x79ea('0x9')](),controller[_0x79ea('0xd')]);router[_0x79ea('0xe')]('/',auth[_0x79ea('0x9')](),controller[_0x79ea('0xf')]);router[_0x79ea('0xe')]('/:id/clone',auth[_0x79ea('0x9')](),controller[_0x79ea('0x10')]);router['post'](_0x79ea('0xc'),auth['isAuthenticated'](),controller[_0x79ea('0x11')]);router[_0x79ea('0x12')]('/:id',auth[_0x79ea('0x9')](),controller[_0x79ea('0x13')]);router[_0x79ea('0x14')](_0x79ea('0xa'),auth[_0x79ea('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 3bb8737..8a7c780 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['setDataValue','stringify','INTEGER','#2196f3','sequelize','squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs'];(function(_0x120376,_0x571898){var _0x28c529=function(_0x4f130c){while(--_0x4f130c){_0x120376['push'](_0x120376['shift']());}};_0x28c529(++_0x571898);}(_0x2a07,0x74));var _0x72a0=function(_0x324e86,_0x81b1cb){_0x324e86=_0x324e86-0x0;var _0x592846=_0x2a07[_0x324e86];return _0x592846;};'use strict';var Sequelize=require(_0x72a0('0x0'));var squel=require(_0x72a0('0x1'));var _=require(_0x72a0('0x2'));module[_0x72a0('0x3')]={'title':{'type':Sequelize[_0x72a0('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x72a0('0x5')](_0x72a0('0x6')),'get':function(){try{return JSON[_0x72a0('0x7')](this[_0x72a0('0x8')](_0x72a0('0x9')));}catch(_0xce74c){return[];}},'set':function(_0x3ccf6d){try{this[_0x72a0('0xa')](_0x72a0('0x9'),JSON[_0x72a0('0xb')](_0x3ccf6d));}catch(_0x21c819){this[_0x72a0('0xa')](_0x72a0('0x9'),JSON[_0x72a0('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0x72a0('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x72a0('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x72a0('0xc')]},'background':{'type':Sequelize[_0x72a0('0x4')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x72a0('0x4')],'allowNull':![],'defaultValue':_0x72a0('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x72a0('0x4')]},'titleFontSize':{'type':Sequelize[_0x72a0('0xc')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x187d=['stringify','INTEGER','#ffffff','sequelize','lodash','exports','STRING','TEXT','long','getDataValue','attrs','setDataValue'];(function(_0x13657e,_0x52cfdf){var _0x18bf36=function(_0x20e572){while(--_0x20e572){_0x13657e['push'](_0x13657e['shift']());}};_0x18bf36(++_0x52cfdf);}(_0x187d,0x93));var _0xd187=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x187d[_0x3c4737];return _0x2bb926;};'use strict';var Sequelize=require(_0xd187('0x0'));var squel=require('squel');var _=require(_0xd187('0x1'));module[_0xd187('0x2')]={'title':{'type':Sequelize[_0xd187('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xd187('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xd187('0x4')](_0xd187('0x5')),'get':function(){try{return JSON['parse'](this[_0xd187('0x6')](_0xd187('0x7')));}catch(_0x4ebc8d){return[];}},'set':function(_0x1d2533){try{this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')](_0x1d2533));}catch(_0x28ce2f){this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xd187('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xd187('0xa')]},'col':{'type':Sequelize[_0xd187('0xa')]},'background':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':_0xd187('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xd187('0x3')]},'titleFontSize':{'type':Sequelize[_0xd187('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index d3f3925..f888035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89c4=['attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','reportType','type','attrReport','widgetAttributes:\x20%s','stringify','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','then','destroy','error','name','send','show','params','model','DashboardItem','rawAttributes','query','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter'];(function(_0x57cca0,_0xc912a9){var _0x482735=function(_0x32bbcd){while(--_0x32bbcd){_0x57cca0['push'](_0x57cca0['shift']());}};_0x482735(++_0xc912a9);}(_0x89c4,0xc6));var _0x489c=function(_0x3f2636,_0x2a8ee3){_0x3f2636=_0x3f2636-0x0;var _0x52c246=_0x89c4[_0x3f2636];return _0x52c246;};'use strict';var emlformat=require(_0x489c('0x0'));var rimraf=require(_0x489c('0x1'));var zipdir=require(_0x489c('0x2'));var jsonpatch=require(_0x489c('0x3'));var rp=require(_0x489c('0x4'));var moment=require(_0x489c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x489c('0x6'));var util=require(_0x489c('0x7'));var path=require('path');var sox=require(_0x489c('0x8'));var csv=require(_0x489c('0x9'));var ejs=require(_0x489c('0xa'));var fs=require('fs');var fs_extra=require(_0x489c('0xb'));var _=require(_0x489c('0xc'));var squel=require(_0x489c('0xd'));var crypto=require(_0x489c('0xe'));var jsforce=require(_0x489c('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x489c('0x10'));var Papa=require(_0x489c('0x11'));var Redis=require(_0x489c('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x489c('0x13'));var hardwareService=require(_0x489c('0x14'));var logger=require(_0x489c('0x15'))('api');var utils=require(_0x489c('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x489c('0x17'))['db'];config[_0x489c('0x18')]=_[_0x489c('0x19')](config[_0x489c('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x489c('0x1a'))(new Redis(config[_0x489c('0x18')]));require(_0x489c('0x1b'))[_0x489c('0x1c')](socket);function respondWithStatusCode(_0x311d7e,_0x543662){_0x543662=_0x543662||0xcc;return function(_0x1670bb){if(_0x1670bb){return _0x311d7e[_0x489c('0x1d')](_0x543662);}return _0x311d7e[_0x489c('0x1e')](_0x543662)[_0x489c('0x1f')]();};}function respondWithResult(_0x428873,_0x52cf88){_0x52cf88=_0x52cf88||0xc8;return function(_0x5dc5b6){if(_0x5dc5b6){return _0x428873[_0x489c('0x1e')](_0x52cf88)[_0x489c('0x20')](_0x5dc5b6);}};}function respondWithFilteredResult(_0xc4b765,_0x13c760){return function(_0x5b74e7){if(_0x5b74e7){var _0x32a516=typeof _0x13c760[_0x489c('0x21')]==='undefined'&&typeof _0x13c760['limit']===_0x489c('0x22');var _0x5f0f23=_0x5b74e7[_0x489c('0x23')];var _0x48f0b7=_0x32a516?0x0:_0x13c760[_0x489c('0x21')];var _0x1af356=_0x32a516?_0x5b74e7[_0x489c('0x23')]:_0x13c760['offset']+_0x13c760['limit'];var _0x427c12;if(_0x1af356>=_0x5f0f23){_0x1af356=_0x5f0f23;_0x427c12=0xc8;}else{_0x427c12=0xce;}_0xc4b765[_0x489c('0x1e')](_0x427c12);return _0xc4b765[_0x489c('0x24')](_0x489c('0x25'),_0x48f0b7+'-'+_0x1af356+'/'+_0x5f0f23)[_0x489c('0x20')](_0x5b74e7);}return null;};}function patchUpdates(_0x3d0f30){return function(_0xb337b5){try{jsonpatch['apply'](_0xb337b5,_0x3d0f30,!![]);}catch(_0x1653a0){return BPromise['reject'](_0x1653a0);}return _0xb337b5['save']();};}function saveUpdates(_0x1e0dca,_0xfc1e){return function(_0x254b44){if(_0x254b44){return _0x254b44['update'](_0x1e0dca)[_0x489c('0x26')](function(_0x3dc8f1){return _0x3dc8f1;});}return null;};}function removeEntity(_0x5320fe,_0x2e90de){return function(_0x4c2209){if(_0x4c2209){return _0x4c2209[_0x489c('0x27')]()[_0x489c('0x26')](function(){_0x5320fe[_0x489c('0x1e')](0xcc)[_0x489c('0x1f')]();});}};}function handleEntityNotFound(_0x298906,_0x19c725){return function(_0x62cb31){if(!_0x62cb31){_0x298906[_0x489c('0x1d')](0x194);}return _0x62cb31;};}function handleError(_0x431df4,_0x25216b){_0x25216b=_0x25216b||0x1f4;return function(_0x38a026){logger[_0x489c('0x28')](_0x38a026['stack']);if(_0x38a026[_0x489c('0x29')]){delete _0x38a026[_0x489c('0x29')];}_0x431df4['status'](_0x25216b)[_0x489c('0x2a')](_0x38a026);};}exports[_0x489c('0x2b')]=function(_0x1e923c,_0x5f3aaf){var _0x2b3d92={'raw':![],'where':{'id':_0x1e923c[_0x489c('0x2c')]['id']}},_0x4ada3e={};_0x4ada3e[_0x489c('0x2d')]=_['keys'](db[_0x489c('0x2e')][_0x489c('0x2f')]);_0x4ada3e[_0x489c('0x30')]=_[_0x489c('0x31')](_0x1e923c[_0x489c('0x30')]);_0x4ada3e[_0x489c('0x32')]=_[_0x489c('0x33')](_0x4ada3e['model'],_0x4ada3e['query']);_0x2b3d92[_0x489c('0x34')]=_['intersection'](_0x4ada3e[_0x489c('0x2d')],qs[_0x489c('0x35')](_0x1e923c['query']['fields']));_0x2b3d92['attributes']=_0x2b3d92[_0x489c('0x34')][_0x489c('0x36')]?_0x2b3d92[_0x489c('0x34')]:_0x4ada3e[_0x489c('0x2d')];if(_0x1e923c[_0x489c('0x30')][_0x489c('0x37')]){_0x2b3d92[_0x489c('0x38')]=[{'all':!![]}];}_0x2b3d92=_[_0x489c('0x39')]({},_0x2b3d92,_0x1e923c[_0x489c('0x3a')]);return db[_0x489c('0x2e')]['find'](_0x2b3d92)[_0x489c('0x26')](handleEntityNotFound(_0x5f3aaf,null))[_0x489c('0x26')](respondWithResult(_0x5f3aaf,null))['catch'](handleError(_0x5f3aaf,null));};exports[_0x489c('0x27')]=function(_0x4feba5,_0x4b57b2){return db[_0x489c('0x2e')][_0x489c('0x3b')]({'where':{'id':_0x4feba5['params']['id']}})['then'](handleEntityNotFound(_0x4b57b2,null))['then'](removeEntity(_0x4b57b2,null))[_0x489c('0x3c')](handleError(_0x4b57b2,null));};function widgetAttributes(_0x2aa226){try{switch(_0x2aa226['type']){case _0x489c('0x3d'):return[{'name':_0x489c('0x3e'),'value':_0x2aa226[_0x489c('0x3e')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x0]?_0x2aa226[_0x489c('0x3f')][0x0][_0x489c('0x40')]:undefined)||_0x489c('0x41')}];case _0x489c('0x42'):return[{'name':_0x489c('0x43'),'value':_0x2aa226[_0x489c('0x43')]||(_0x2aa226['attrs']&&_0x2aa226[_0x489c('0x3f')][0x0]?_0x2aa226[_0x489c('0x3f')][0x0]['value']:undefined)||''}];case _0x489c('0x44'):return[{'name':_0x489c('0x45'),'value':_0x2aa226['attrHourFormat']||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x0]?_0x2aa226['attrs'][0x0]['value']:undefined)||_0x489c('0x46')},{'name':_0x489c('0x47'),'value':_0x2aa226[_0x489c('0x47')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226['attrs'][0x1]?_0x2aa226[_0x489c('0x3f')][0x1]['value']:undefined)||_0x489c('0x48')},{'name':_0x489c('0x49'),'value':_0x2aa226['attrFontSize']||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x2]?_0x2aa226['attrs'][0x2][_0x489c('0x40')]:undefined)||0xc}];case _0x489c('0x4a'):return[{'name':_0x489c('0x4b'),'value':_0x2aa226[_0x489c('0x4b')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x0]?_0x2aa226[_0x489c('0x3f')][0x0]['value']:undefined)||_0x489c('0x4c')},{'name':_0x489c('0x4d'),'value':_0x2aa226['attrVoiceQueues']||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x1]?_0x2aa226[_0x489c('0x3f')][0x1][_0x489c('0x40')]:undefined)||[]},{'name':_0x489c('0x49'),'value':_0x2aa226['attrFontSize']||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226['attrs'][0x2]?_0x2aa226[_0x489c('0x3f')][0x2]['value']:undefined)||0x14}];case _0x489c('0x4e'):case _0x489c('0x4f'):return[{'name':_0x489c('0x50'),'value':_0x2aa226[_0x489c('0x50')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x0]?_0x2aa226[_0x489c('0x3f')][0x0][_0x489c('0x40')]:undefined)||_0x489c('0x4c')},{'name':_0x489c('0x51'),'value':_0x2aa226[_0x489c('0x51')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x1]?_0x2aa226['attrs'][0x1]['value']:undefined)||null},{'name':_0x489c('0x52'),'value':_0x2aa226[_0x489c('0x52')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x2]?_0x2aa226['attrs'][0x2][_0x489c('0x40')]:undefined)||null},{'name':_0x489c('0x4d'),'value':_0x2aa226[_0x489c('0x4d')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x3]?_0x2aa226['attrs'][0x3]['value']:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x2aa226[_0x489c('0x53')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x0]?_0x2aa226[_0x489c('0x3f')][0x0][_0x489c('0x54')]:undefined)||null,'value':_0x2aa226[_0x489c('0x55')]||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x0]?_0x2aa226['attrs'][0x0][_0x489c('0x40')]:undefined)||null},{'name':'attrRefresh','value':_0x2aa226['attrRefresh']||(_0x2aa226[_0x489c('0x3f')]&&_0x2aa226[_0x489c('0x3f')][0x1]?_0x2aa226[_0x489c('0x3f')][0x1][_0x489c('0x40')]:undefined)||0x0}];default:return[];}}catch(_0x4a6435){logger[_0x489c('0x28')](_0x489c('0x56'),JSON[_0x489c('0x57')](_0x4a6435));return[];}}exports[_0x489c('0x58')]=function(_0x4476a5,_0x119522){if(_0x4476a5[_0x489c('0x59')]){_0x4476a5[_0x489c('0x59')]['attrs']=widgetAttributes(_0x4476a5[_0x489c('0x59')]);}return db['DashboardItem'][_0x489c('0x58')](_0x4476a5[_0x489c('0x59')],{})[_0x489c('0x26')](respondWithResult(_0x119522,0xc9))['catch'](handleError(_0x119522,null));};exports[_0x489c('0x5a')]=function(_0x33427f,_0x1266d1){if(_0x33427f['body']['id']){delete _0x33427f[_0x489c('0x59')]['id'];}_0x33427f['body'][_0x489c('0x3f')]=widgetAttributes(_0x33427f[_0x489c('0x59')]);return db['DashboardItem'][_0x489c('0x3b')]({'where':{'id':_0x33427f[_0x489c('0x2c')]['id']}})['then'](handleEntityNotFound(_0x1266d1,null))[_0x489c('0x26')](saveUpdates(_0x33427f['body'],null))[_0x489c('0x26')](respondWithResult(_0x1266d1,null))[_0x489c('0x3c')](handleError(_0x1266d1,null));};
\ No newline at end of file
+var _0x907b=['web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','update','then','destroy','stack','name','send','params','model','keys','rawAttributes','filters','intersection','query','fields','attributes','length','includeAll','include','merge','options','find','catch','DashboardItem','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','attrSerie1','total','attrSerie2','attrSerie3'];(function(_0x591b54,_0x2935ef){var _0x316e9a=function(_0x2fc73f){while(--_0x2fc73f){_0x591b54['push'](_0x591b54['shift']());}};_0x316e9a(++_0x2935ef);}(_0x907b,0xbf));var _0xb907=function(_0x48ebe8,_0x300832){_0x48ebe8=_0x48ebe8-0x0;var _0x5c65fb=_0x907b[_0x48ebe8];return _0x5c65fb;};'use strict';var emlformat=require(_0xb907('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb907('0x1'));var jsonpatch=require(_0xb907('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb907('0x3'));var Mustache=require(_0xb907('0x4'));var util=require(_0xb907('0x5'));var path=require(_0xb907('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb907('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb907('0x8'));var squel=require(_0xb907('0x9'));var crypto=require(_0xb907('0xa'));var jsforce=require(_0xb907('0xb'));var deskjs=require(_0xb907('0xc'));var toCsv=require(_0xb907('0xd'));var querystring=require(_0xb907('0xe'));var Papa=require(_0xb907('0xf'));var Redis=require(_0xb907('0x10'));var authService=require(_0xb907('0x11'));var qs=require(_0xb907('0x12'));var as=require(_0xb907('0x13'));var hardwareService=require(_0xb907('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xb907('0x15'));var config=require(_0xb907('0x16'));var licenseUtil=require(_0xb907('0x17'));var db=require(_0xb907('0x18'))['db'];config['redis']=_[_0xb907('0x19')](config[_0xb907('0x1a')],{'host':_0xb907('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb907('0x1a')]));require(_0xb907('0x1c'))[_0xb907('0x1d')](socket);function respondWithStatusCode(_0x2455f5,_0x1ad5f5){_0x1ad5f5=_0x1ad5f5||0xcc;return function(_0x34ee3c){if(_0x34ee3c){return _0x2455f5[_0xb907('0x1e')](_0x1ad5f5);}return _0x2455f5[_0xb907('0x1f')](_0x1ad5f5)[_0xb907('0x20')]();};}function respondWithResult(_0x274800,_0x513a1b){_0x513a1b=_0x513a1b||0xc8;return function(_0x315cbd){if(_0x315cbd){return _0x274800['status'](_0x513a1b)[_0xb907('0x21')](_0x315cbd);}};}function respondWithFilteredResult(_0x3b4db8,_0x5812d7){return function(_0x3b795e){if(_0x3b795e){var _0x561896=typeof _0x5812d7[_0xb907('0x22')]===_0xb907('0x23')&&typeof _0x5812d7['limit']===_0xb907('0x23');var _0x1b9753=_0x3b795e[_0xb907('0x24')];var _0x33cbdc=_0x561896?0x0:_0x5812d7[_0xb907('0x22')];var _0x24d5a1=_0x561896?_0x3b795e[_0xb907('0x24')]:_0x5812d7[_0xb907('0x22')]+_0x5812d7[_0xb907('0x25')];var _0x4400db;if(_0x24d5a1>=_0x1b9753){_0x24d5a1=_0x1b9753;_0x4400db=0xc8;}else{_0x4400db=0xce;}_0x3b4db8[_0xb907('0x1f')](_0x4400db);return _0x3b4db8[_0xb907('0x26')]('Content-Range',_0x33cbdc+'-'+_0x24d5a1+'/'+_0x1b9753)[_0xb907('0x21')](_0x3b795e);}return null;};}function patchUpdates(_0x56a0d1){return function(_0x5c2230){try{jsonpatch['apply'](_0x5c2230,_0x56a0d1,!![]);}catch(_0x2c0d23){return BPromise[_0xb907('0x27')](_0x2c0d23);}return _0x5c2230[_0xb907('0x28')]();};}function saveUpdates(_0x4f66f5,_0x22174e){return function(_0x39b498){if(_0x39b498){return _0x39b498[_0xb907('0x29')](_0x4f66f5)[_0xb907('0x2a')](function(_0x51813a){return _0x51813a;});}return null;};}function removeEntity(_0x222ac3,_0x225a28){return function(_0xb37c36){if(_0xb37c36){return _0xb37c36[_0xb907('0x2b')]()[_0xb907('0x2a')](function(){_0x222ac3[_0xb907('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb8c528,_0x243b25){return function(_0x26dfb7){if(!_0x26dfb7){_0xb8c528[_0xb907('0x1e')](0x194);}return _0x26dfb7;};}function handleError(_0x5b1634,_0x31c59a){_0x31c59a=_0x31c59a||0x1f4;return function(_0x203b8c){logger['error'](_0x203b8c[_0xb907('0x2c')]);if(_0x203b8c[_0xb907('0x2d')]){delete _0x203b8c['name'];}_0x5b1634[_0xb907('0x1f')](_0x31c59a)[_0xb907('0x2e')](_0x203b8c);};}exports['show']=function(_0x2d96ef,_0x33fdac){var _0xe93edf={'raw':![],'where':{'id':_0x2d96ef[_0xb907('0x2f')]['id']}},_0x4fbfe1={};_0x4fbfe1[_0xb907('0x30')]=_[_0xb907('0x31')](db['DashboardItem'][_0xb907('0x32')]);_0x4fbfe1['query']=_[_0xb907('0x31')](_0x2d96ef['query']);_0x4fbfe1[_0xb907('0x33')]=_[_0xb907('0x34')](_0x4fbfe1[_0xb907('0x30')],_0x4fbfe1[_0xb907('0x35')]);_0xe93edf['attributes']=_[_0xb907('0x34')](_0x4fbfe1[_0xb907('0x30')],qs[_0xb907('0x36')](_0x2d96ef[_0xb907('0x35')]['fields']));_0xe93edf['attributes']=_0xe93edf[_0xb907('0x37')][_0xb907('0x38')]?_0xe93edf['attributes']:_0x4fbfe1[_0xb907('0x30')];if(_0x2d96ef[_0xb907('0x35')][_0xb907('0x39')]){_0xe93edf[_0xb907('0x3a')]=[{'all':!![]}];}_0xe93edf=_[_0xb907('0x3b')]({},_0xe93edf,_0x2d96ef[_0xb907('0x3c')]);return db['DashboardItem'][_0xb907('0x3d')](_0xe93edf)[_0xb907('0x2a')](handleEntityNotFound(_0x33fdac,null))[_0xb907('0x2a')](respondWithResult(_0x33fdac,null))[_0xb907('0x3e')](handleError(_0x33fdac,null));};exports[_0xb907('0x2b')]=function(_0x57c79c,_0x202a5c){return db[_0xb907('0x3f')]['find']({'where':{'id':_0x57c79c['params']['id']}})[_0xb907('0x2a')](handleEntityNotFound(_0x202a5c,null))['then'](removeEntity(_0x202a5c,null))[_0xb907('0x3e')](handleError(_0x202a5c,null));};function widgetAttributes(_0x3f544b){try{switch(_0x3f544b[_0xb907('0x40')]){case _0xb907('0x41'):return[{'name':_0xb907('0x42'),'value':_0x3f544b['attrUrl']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||_0xb907('0x45')}];case _0xb907('0x46'):return[{'name':_0xb907('0x47'),'value':_0x3f544b['attrPath']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b['attrs'][0x0][_0xb907('0x44')]:undefined)||''}];case _0xb907('0x48'):return[{'name':_0xb907('0x49'),'value':_0x3f544b['attrHourFormat']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b['attrs'][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||'HH:mm:ss'},{'name':_0xb907('0x4a'),'value':_0x3f544b[_0xb907('0x4a')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1]['value']:undefined)||_0xb907('0x4b')},{'name':_0xb907('0x4c'),'value':_0x3f544b[_0xb907('0x4c')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x2]?_0x3f544b['attrs'][0x2]['value']:undefined)||0xc}];case _0xb907('0x4d'):return[{'name':_0xb907('0x4e'),'value':_0x3f544b[_0xb907('0x4e')]||(_0x3f544b['attrs']&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||'total'},{'name':_0xb907('0x4f'),'value':_0x3f544b[_0xb907('0x4f')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1]['value']:undefined)||[]},{'name':_0xb907('0x4c'),'value':_0x3f544b[_0xb907('0x4c')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x2]?_0x3f544b[_0xb907('0x43')][0x2][_0xb907('0x44')]:undefined)||0x14}];case _0xb907('0x50'):case'pie-chart':return[{'name':_0xb907('0x51'),'value':_0x3f544b['attrSerie1']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||_0xb907('0x52')},{'name':_0xb907('0x53'),'value':_0x3f544b[_0xb907('0x53')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1][_0xb907('0x44')]:undefined)||null},{'name':'attrSerie3','value':_0x3f544b[_0xb907('0x54')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x2]?_0x3f544b[_0xb907('0x43')][0x2][_0xb907('0x44')]:undefined)||null},{'name':_0xb907('0x4f'),'value':_0x3f544b[_0xb907('0x4f')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b['attrs'][0x3]?_0x3f544b[_0xb907('0x43')][0x3][_0xb907('0x44')]:undefined)||[]}];case _0xb907('0x55'):return[{'name':_0xb907('0x56'),'type':_0x3f544b[_0xb907('0x57')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x40')]:undefined)||null,'value':_0x3f544b[_0xb907('0x56')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b['attrs'][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||null},{'name':_0xb907('0x58'),'value':_0x3f544b['attrRefresh']||(_0x3f544b['attrs']&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1][_0xb907('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x31eb87){logger['error'](_0xb907('0x59'),JSON['stringify'](_0x31eb87));return[];}}exports[_0xb907('0x5a')]=function(_0x446151,_0x177774){if(_0x446151['body']){_0x446151[_0xb907('0x5b')][_0xb907('0x43')]=widgetAttributes(_0x446151[_0xb907('0x5b')]);}return db['DashboardItem'][_0xb907('0x5a')](_0x446151[_0xb907('0x5b')],{})['then'](respondWithResult(_0x177774,0xc9))['catch'](handleError(_0x177774,null));};exports[_0xb907('0x29')]=function(_0x944fd7,_0xe90869){if(_0x944fd7[_0xb907('0x5b')]['id']){delete _0x944fd7['body']['id'];}_0x944fd7['body'][_0xb907('0x43')]=widgetAttributes(_0x944fd7[_0xb907('0x5b')]);return db['DashboardItem'][_0xb907('0x3d')]({'where':{'id':_0x944fd7[_0xb907('0x2f')]['id']}})[_0xb907('0x2a')](handleEntityNotFound(_0xe90869,null))[_0xb907('0x2a')](saveUpdates(_0x944fd7[_0xb907('0x5b')],null))[_0xb907('0x2a')](respondWithResult(_0xe90869,null))[_0xb907('0x3e')](handleError(_0xe90869,null));};
\ No newline at end of file
index 021d181..7460acd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef96=['remove','emit','hasOwnProperty','events','DashboardItem','save','update'];(function(_0x539945,_0x9a1595){var _0x588840=function(_0x197491){while(--_0x197491){_0x539945['push'](_0x539945['shift']());}};_0x588840(++_0x9a1595);}(_0xef96,0xc0));var _0x6ef9=function(_0x31356e,_0x540f88){_0x31356e=_0x31356e-0x0;var _0x43f2a0=_0xef96[_0x31356e];return _0x43f2a0;};'use strict';var EventEmitter=require(_0x6ef9('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0x6ef9('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6ef9('0x2'),'afterUpdate':_0x6ef9('0x3'),'afterDestroy':_0x6ef9('0x4')};function emitEvent(_0x269521){return function(_0x3b5a99,_0x587e9b,_0x58a25f){DashboardItemEvents[_0x6ef9('0x5')](_0x269521+':'+_0x3b5a99['id'],_0x3b5a99);DashboardItemEvents[_0x6ef9('0x5')](_0x269521,_0x3b5a99);_0x58a25f(null);};}for(var e in events){if(events[_0x6ef9('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
+var _0x7522=['emit','hasOwnProperty','exports','events','../../mysqldb','DashboardItem','save','update'];(function(_0x54f98a,_0x71efc7){var _0x5ee1e6=function(_0x4f9c7f){while(--_0x4f9c7f){_0x54f98a['push'](_0x54f98a['shift']());}};_0x5ee1e6(++_0x71efc7);}(_0x7522,0xe3));var _0x2752=function(_0x2a211f,_0x31bd40){_0x2a211f=_0x2a211f-0x0;var _0x58c1da=_0x7522[_0x2a211f];return _0x58c1da;};'use strict';var EventEmitter=require(_0x2752('0x0'));var DashboardItem=require(_0x2752('0x1'))['db'][_0x2752('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2752('0x3'),'afterUpdate':_0x2752('0x4'),'afterDestroy':'remove'};function emitEvent(_0x23aeb0){return function(_0x39f21b,_0x2c3d9d,_0x1b3f32){DashboardItemEvents['emit'](_0x23aeb0+':'+_0x39f21b['id'],_0x39f21b);DashboardItemEvents[_0x2752('0x5')](_0x23aeb0,_0x39f21b);_0x1b3f32(null);};}for(var e in events){if(events[_0x2752('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0x2752('0x7')]=DashboardItemEvents;
\ No newline at end of file
index befb037..30165e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9585=['DashboardItem','dashboard_items','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','define'];(function(_0x46e736,_0x5d80b6){var _0x4a1ea=function(_0x52e957){while(--_0x52e957){_0x46e736['push'](_0x46e736['shift']());}};_0x4a1ea(++_0x5d80b6);}(_0x9585,0x15e));var _0x5958=function(_0x5908d4,_0x273291){_0x5908d4=_0x5908d4-0x0;var _0x46ec2a=_0x9585[_0x5908d4];return _0x46ec2a;};'use strict';var _=require('lodash');var util=require(_0x5958('0x0'));var logger=require('../../config/logger')(_0x5958('0x1'));var moment=require(_0x5958('0x2'));var BPromise=require(_0x5958('0x3'));var rp=require(_0x5958('0x4'));var fs=require('fs');var path=require(_0x5958('0x5'));var rimraf=require(_0x5958('0x6'));var config=require(_0x5958('0x7'));var attributes=require(_0x5958('0x8'));module['exports']=function(_0x202d6f,_0x48ddaf){return _0x202d6f[_0x5958('0x9')](_0x5958('0xa'),attributes,{'tableName':_0x5958('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x00a1=['rimraf','../../config/environment','./dashboardItem.attributes','exports','define','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2c69a1,_0x201903){var _0x24bb91=function(_0x3131ac){while(--_0x3131ac){_0x2c69a1['push'](_0x2c69a1['shift']());}};_0x24bb91(++_0x201903);}(_0x00a1,0x7b));var _0x100a=function(_0x2dc1df,_0x2ad30d){_0x2dc1df=_0x2dc1df-0x0;var _0x1ac4c7=_0x00a1[_0x2dc1df];return _0x1ac4c7;};'use strict';var _=require(_0x100a('0x0'));var util=require(_0x100a('0x1'));var logger=require(_0x100a('0x2'))(_0x100a('0x3'));var moment=require(_0x100a('0x4'));var BPromise=require(_0x100a('0x5'));var rp=require(_0x100a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x100a('0x7'));var config=require(_0x100a('0x8'));var attributes=require(_0x100a('0x9'));module[_0x100a('0xa')]=function(_0x2472f6,_0x11ea40){return _0x2472f6[_0x100a('0xb')]('DashboardItem',attributes,{'tableName':_0x100a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9e9af80..70e1e1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa43c=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./dashboardItem.socket','info','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','DashboardItem,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa43c,0x133));var _0xca43=function(_0x29ca80,_0x5530ca){_0x29ca80=_0x29ca80-0x0;var _0x5b54db=_0xa43c[_0x29ca80];return _0x5b54db;};'use strict';var _=require(_0xca43('0x0'));var util=require('util');var moment=require(_0xca43('0x1'));var BPromise=require('bluebird');var rs=require(_0xca43('0x2'));var fs=require('fs');var Redis=require(_0xca43('0x3'));var db=require(_0xca43('0x4'))['db'];var utils=require(_0xca43('0x5'));var logger=require(_0xca43('0x6'))('rpc');var config=require(_0xca43('0x7'));var jayson=require(_0xca43('0x8'));var client=jayson[_0xca43('0x9')][_0xca43('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xca43('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xca43('0xc'))(new Redis(config[_0xca43('0xb')]));require(_0xca43('0xd'))['register'](socket);function respondWithRpcPromise(_0x9a6ec8,_0x44f964,_0x2acf04){return new BPromise(function(_0x277cef,_0x45ada4){return client['request'](_0x9a6ec8,_0x2acf04)['then'](function(_0x75cb93){logger[_0xca43('0xe')]('DashboardItem,\x20%s,\x20%s',_0x44f964,'request\x20sent');logger[_0xca43('0xf')](_0xca43('0x10'),_0x44f964,_0xca43('0x11'),JSON['stringify'](_0x75cb93));if(_0x75cb93['error']){if(_0x75cb93['error'][_0xca43('0x12')]===0x1f4){logger[_0xca43('0x13')](_0xca43('0x14'),_0x44f964,_0x75cb93[_0xca43('0x13')]['message']);return _0x45ada4(_0x75cb93['error'][_0xca43('0x15')]);}logger[_0xca43('0x13')]('DashboardItem,\x20%s,\x20%s',_0x44f964,_0x75cb93[_0xca43('0x13')][_0xca43('0x15')]);return _0x277cef(_0x75cb93[_0xca43('0x13')][_0xca43('0x15')]);}else{logger[_0xca43('0xe')](_0xca43('0x14'),_0x44f964,_0xca43('0x11'));_0x277cef(_0x75cb93[_0xca43('0x16')][_0xca43('0x15')]);}})[_0xca43('0x17')](function(_0x588619){logger[_0xca43('0x13')](_0xca43('0x14'),_0x44f964,_0x588619);_0x45ada4(_0x588619);});});}
\ No newline at end of file
+var _0xa724=['socket.io-emitter','redis','register','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults','localhost'];(function(_0x2f9bc4,_0x4f05d1){var _0x29bfd4=function(_0x4d6d4d){while(--_0x4d6d4d){_0x2f9bc4['push'](_0x2f9bc4['shift']());}};_0x29bfd4(++_0x4f05d1);}(_0xa724,0x121));var _0x4a72=function(_0x1e8f6b,_0x5851cb){_0x1e8f6b=_0x1e8f6b-0x0;var _0x55d352=_0xa724[_0x1e8f6b];return _0x55d352;};'use strict';var _=require('lodash');var util=require(_0x4a72('0x0'));var moment=require(_0x4a72('0x1'));var BPromise=require(_0x4a72('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a72('0x3'))['db'];var utils=require(_0x4a72('0x4'));var logger=require('../../config/logger')(_0x4a72('0x5'));var config=require(_0x4a72('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4a72('0x7')][_0x4a72('0x8')]({'port':0x232a});config['redis']=_[_0x4a72('0x9')](config['redis'],{'host':_0x4a72('0xa'),'port':0x18eb});var socket=require(_0x4a72('0xb'))(new Redis(config[_0x4a72('0xc')]));require('./dashboardItem.socket')[_0x4a72('0xd')](socket);function respondWithRpcPromise(_0x56ff60,_0x1af203,_0x519973){return new BPromise(function(_0x482523,_0x3075de){return client['request'](_0x56ff60,_0x519973)['then'](function(_0x5880e5){logger[_0x4a72('0xe')](_0x4a72('0xf'),_0x1af203,_0x4a72('0x10'));logger[_0x4a72('0x11')](_0x4a72('0x12'),_0x1af203,_0x4a72('0x10'),JSON[_0x4a72('0x13')](_0x5880e5));if(_0x5880e5[_0x4a72('0x14')]){if(_0x5880e5[_0x4a72('0x14')][_0x4a72('0x15')]===0x1f4){logger['error'](_0x4a72('0xf'),_0x1af203,_0x5880e5['error'][_0x4a72('0x16')]);return _0x3075de(_0x5880e5[_0x4a72('0x14')][_0x4a72('0x16')]);}logger[_0x4a72('0x14')]('DashboardItem,\x20%s,\x20%s',_0x1af203,_0x5880e5[_0x4a72('0x14')][_0x4a72('0x16')]);return _0x482523(_0x5880e5[_0x4a72('0x14')][_0x4a72('0x16')]);}else{logger[_0x4a72('0xe')](_0x4a72('0xf'),_0x1af203,_0x4a72('0x10'));_0x482523(_0x5880e5[_0x4a72('0x17')][_0x4a72('0x16')]);}})[_0x4a72('0x18')](function(_0x45d300){logger[_0x4a72('0x14')](_0x4a72('0xf'),_0x1af203,_0x45d300);_0x3075de(_0x45d300);});});}
\ No newline at end of file
index b570f18..68ef72c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f81=['update','emit','register','length','./dashboardItem.events','save','remove'];(function(_0x13ae89,_0x832c38){var _0x1744a0=function(_0x4c406a){while(--_0x4c406a){_0x13ae89['push'](_0x13ae89['shift']());}};_0x1744a0(++_0x832c38);}(_0x1f81,0x162));var _0x11f8=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0x1f81[_0x57486e];return _0x5f110b;};'use strict';var DashboardItemEvents=require(_0x11f8('0x0'));var events=[_0x11f8('0x1'),_0x11f8('0x2'),_0x11f8('0x3')];function createListener(_0x152307,_0x39b7d0){return function(_0xd9010){_0x39b7d0[_0x11f8('0x4')](_0x152307,_0xd9010);};}function removeListener(_0xb6561b,_0x46a961){return function(){DashboardItemEvents['removeListener'](_0xb6561b,_0x46a961);};}exports[_0x11f8('0x5')]=function(_0x480ffb){for(var _0xc35472=0x0,_0x3ed242=events[_0x11f8('0x6')];_0xc35472<_0x3ed242;_0xc35472++){var _0x3ee8f2=events[_0xc35472];var _0x1b1614=createListener('dashboardItem:'+_0x3ee8f2,_0x480ffb);DashboardItemEvents['on'](_0x3ee8f2,_0x1b1614);}};
\ No newline at end of file
+var _0xe1aa=['register','length','dashboardItem:','save','emit','removeListener'];(function(_0x22ea66,_0x30123a){var _0x529757=function(_0x2340e){while(--_0x2340e){_0x22ea66['push'](_0x22ea66['shift']());}};_0x529757(++_0x30123a);}(_0xe1aa,0x141));var _0xae1a=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xe1aa[_0x6131cd];return _0x47e916;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0xae1a('0x0'),'remove','update'];function createListener(_0x41b555,_0x3ee8b8){return function(_0x25d1bf){_0x3ee8b8[_0xae1a('0x1')](_0x41b555,_0x25d1bf);};}function removeListener(_0x29b6c4,_0x24a77){return function(){DashboardItemEvents[_0xae1a('0x2')](_0x29b6c4,_0x24a77);};}exports[_0xae1a('0x3')]=function(_0x34d596){for(var _0x4dfddf=0x0,_0x3dac2c=events[_0xae1a('0x4')];_0x4dfddf<_0x3dac2c;_0x4dfddf++){var _0x14934b=events[_0x4dfddf];var _0x1cc410=createListener(_0xae1a('0x5')+_0x14934b,_0x34d596);DashboardItemEvents['on'](_0x14934b,_0x1cc410);}};
\ No newline at end of file
index a389c60..cfa44e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa4=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','delete','destroy','exports','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7aa4,0x1d3));var _0x47aa=function(_0x289f15,_0x1042d3){_0x289f15=_0x289f15-0x0;var _0x1c3164=_0x7aa4[_0x289f15];return _0x1c3164;};'use strict';var multer=require(_0x47aa('0x0'));var util=require(_0x47aa('0x1'));var path=require('path');var timeout=require(_0x47aa('0x2'));var express=require(_0x47aa('0x3'));var router=express[_0x47aa('0x4')]();var fs_extra=require(_0x47aa('0x5'));var auth=require(_0x47aa('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x47aa('0x7'));var controller=require(_0x47aa('0x8'));router[_0x47aa('0x9')](_0x47aa('0xa'),auth[_0x47aa('0xb')](),controller[_0x47aa('0xc')]);router[_0x47aa('0xd')]('/',auth[_0x47aa('0xb')](),controller[_0x47aa('0xe')]);router['put'](_0x47aa('0xa'),auth[_0x47aa('0xb')](),controller['update']);router[_0x47aa('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x47aa('0x10')]);module[_0x47aa('0x11')]=router;
\ No newline at end of file
+var _0x06b8=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','post','put','delete','/:id','exports','util'];(function(_0x4669f0,_0x31da07){var _0x11984c=function(_0x1c5616){while(--_0x1c5616){_0x4669f0['push'](_0x4669f0['shift']());}};_0x11984c(++_0x31da07);}(_0x06b8,0x12b));var _0x806b=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x06b8[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require('multer');var util=require(_0x806b('0x0'));var path=require(_0x806b('0x1'));var timeout=require(_0x806b('0x2'));var express=require(_0x806b('0x3'));var router=express['Router']();var fs_extra=require(_0x806b('0x4'));var auth=require(_0x806b('0x5'));var interaction=require(_0x806b('0x6'));var config=require(_0x806b('0x7'));var controller=require('./dashboardItem.controller');router[_0x806b('0x8')]('/:id',auth[_0x806b('0x9')](),controller['show']);router[_0x806b('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x806b('0xb')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x806b('0xc')](_0x806b('0xd'),auth[_0x806b('0x9')](),controller['destroy']);module[_0x806b('0xe')]=router;
\ No newline at end of file
index 6ebacfc..c8d22a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a86=['STRING','sequelize','ENUM','first','second'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0x5a86,0xc4));var _0x65a8=function(_0x3ab320,_0x551152){_0x3ab320=_0x3ab320-0x0;var _0x160ea3=_0x5a86[_0x3ab320];return _0x160ea3;};'use strict';var Sequelize=require(_0x65a8('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x65a8('0x1')](_0x65a8('0x2'),_0x65a8('0x3'),'third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x65a8('0x4')]}};
\ No newline at end of file
+var _0xd108=['STRING','ENUM','first','third','sequelize','exports'];(function(_0x3f6ee5,_0x3fff9e){var _0xc476ac=function(_0x2c7336){while(--_0x2c7336){_0x3f6ee5['push'](_0x3f6ee5['shift']());}};_0xc476ac(++_0x3fff9e);}(_0xd108,0x1f0));var _0x8d10=function(_0x290781,_0x53d542){_0x290781=_0x290781-0x0;var _0x1ef41f=_0xd108[_0x290781];return _0x1ef41f;};'use strict';var Sequelize=require(_0x8d10('0x0'));module[_0x8d10('0x1')]={'name':{'type':Sequelize[_0x8d10('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x8d10('0x3')](_0x8d10('0x4'),'second',_0x8d10('0x5')),'allowNull':![],'defaultValue':_0x8d10('0x4')},'description':{'type':Sequelize[_0x8d10('0x2')]}};
\ No newline at end of file
index 14cb538..1dfa2fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c6=['limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','send','index','map','Disposition','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x5c604c,_0x3c638f){var _0x565a0e=function(_0x363a79){while(--_0x363a79){_0x5c604c['push'](_0x5c604c['shift']());}};_0x565a0e(++_0x3c638f);}(_0xa6c6,0x12e));var _0x6a6c=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa6c6[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x6a6c('0x0'));var rimraf=require(_0x6a6c('0x1'));var zipdir=require(_0x6a6c('0x2'));var jsonpatch=require(_0x6a6c('0x3'));var rp=require(_0x6a6c('0x4'));var moment=require(_0x6a6c('0x5'));var BPromise=require(_0x6a6c('0x6'));var Mustache=require(_0x6a6c('0x7'));var util=require(_0x6a6c('0x8'));var path=require(_0x6a6c('0x9'));var sox=require(_0x6a6c('0xa'));var csv=require(_0x6a6c('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6a6c('0xc'));var _=require(_0x6a6c('0xd'));var squel=require(_0x6a6c('0xe'));var crypto=require('crypto');var jsforce=require(_0x6a6c('0xf'));var deskjs=require(_0x6a6c('0x10'));var toCsv=require(_0x6a6c('0xb'));var querystring=require('querystring');var Papa=require(_0x6a6c('0x11'));var Redis=require(_0x6a6c('0x12'));var authService=require(_0x6a6c('0x13'));var qs=require(_0x6a6c('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6a6c('0x15'))(_0x6a6c('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6a6c('0x17'));var db=require(_0x6a6c('0x18'))['db'];function respondWithStatusCode(_0xa7b681,_0x41b08e){_0x41b08e=_0x41b08e||0xcc;return function(_0x343acb){if(_0x343acb){return _0xa7b681[_0x6a6c('0x19')](_0x41b08e);}return _0xa7b681[_0x6a6c('0x1a')](_0x41b08e)[_0x6a6c('0x1b')]();};}function respondWithResult(_0x2a9d83,_0x1535cd){_0x1535cd=_0x1535cd||0xc8;return function(_0x286ef2){if(_0x286ef2){return _0x2a9d83[_0x6a6c('0x1a')](_0x1535cd)[_0x6a6c('0x1c')](_0x286ef2);}};}function respondWithFilteredResult(_0x110c4d,_0x4eddb5){return function(_0x36a719){if(_0x36a719){var _0x387521=typeof _0x4eddb5[_0x6a6c('0x1d')]==='undefined'&&typeof _0x4eddb5[_0x6a6c('0x1e')]===_0x6a6c('0x1f');var _0x271009=_0x36a719[_0x6a6c('0x20')];var _0x41b93c=_0x387521?0x0:_0x4eddb5[_0x6a6c('0x1d')];var _0x2d412e=_0x387521?_0x36a719[_0x6a6c('0x20')]:_0x4eddb5[_0x6a6c('0x1d')]+_0x4eddb5[_0x6a6c('0x1e')];var _0x5800c2;if(_0x2d412e>=_0x271009){_0x2d412e=_0x271009;_0x5800c2=0xc8;}else{_0x5800c2=0xce;}_0x110c4d[_0x6a6c('0x1a')](_0x5800c2);return _0x110c4d[_0x6a6c('0x21')](_0x6a6c('0x22'),_0x41b93c+'-'+_0x2d412e+'/'+_0x271009)[_0x6a6c('0x1c')](_0x36a719);}return null;};}function patchUpdates(_0x51f9c5){return function(_0x192f72){try{jsonpatch[_0x6a6c('0x23')](_0x192f72,_0x51f9c5,!![]);}catch(_0x16751d){return BPromise[_0x6a6c('0x24')](_0x16751d);}return _0x192f72[_0x6a6c('0x25')]();};}function saveUpdates(_0x25a991,_0x1b1b78){return function(_0x910d27){if(_0x910d27){return _0x910d27[_0x6a6c('0x26')](_0x25a991)[_0x6a6c('0x27')](function(_0x4be258){return _0x4be258;});}return null;};}function removeEntity(_0x239b0c,_0x3d0521){return function(_0x40da5d){if(_0x40da5d){return _0x40da5d[_0x6a6c('0x28')]()[_0x6a6c('0x27')](function(){var _0x2ed564=_0x40da5d[_0x6a6c('0x29')]({'plain':!![]});var _0x518587=_0x6a6c('0x2a');return db[_0x6a6c('0x2b')][_0x6a6c('0x28')]({'where':{'type':_0x518587,'resourceId':_0x2ed564['id']}})[_0x6a6c('0x27')](function(){return _0x40da5d;});})['then'](function(){_0x239b0c[_0x6a6c('0x1a')](0xcc)[_0x6a6c('0x1b')]();});}};}function handleEntityNotFound(_0x426b08,_0x5e800a){return function(_0x12b08c){if(!_0x12b08c){_0x426b08['sendStatus'](0x194);}return _0x12b08c;};}function handleError(_0x586302,_0x559219){_0x559219=_0x559219||0x1f4;return function(_0xc7ffa4){logger[_0x6a6c('0x2c')](_0xc7ffa4[_0x6a6c('0x2d')]);if(_0xc7ffa4[_0x6a6c('0x2e')]){delete _0xc7ffa4[_0x6a6c('0x2e')];}_0x586302[_0x6a6c('0x1a')](_0x559219)[_0x6a6c('0x2f')](_0xc7ffa4);};}exports[_0x6a6c('0x30')]=function(_0x55ca65,_0x164818){var _0xeb4a3f={},_0x58e345={},_0x167ff2={'count':0x0,'rows':[]};var _0x113b10=_[_0x6a6c('0x31')](db[_0x6a6c('0x32')][_0x6a6c('0x33')],function(_0x3a1f61){return{'name':_0x3a1f61['fieldName'],'type':_0x3a1f61[_0x6a6c('0x34')][_0x6a6c('0x35')]};});_0x58e345[_0x6a6c('0x36')]=_['map'](_0x113b10,_0x6a6c('0x2e'));_0x58e345[_0x6a6c('0x37')]=_[_0x6a6c('0x38')](_0x55ca65['query']);_0x58e345[_0x6a6c('0x39')]=_[_0x6a6c('0x3a')](_0x58e345[_0x6a6c('0x36')],_0x58e345[_0x6a6c('0x37')]);_0xeb4a3f[_0x6a6c('0x3b')]=_[_0x6a6c('0x3a')](_0x58e345[_0x6a6c('0x36')],qs[_0x6a6c('0x3c')](_0x55ca65[_0x6a6c('0x37')][_0x6a6c('0x3c')]));_0xeb4a3f[_0x6a6c('0x3b')]=_0xeb4a3f[_0x6a6c('0x3b')][_0x6a6c('0x3d')]?_0xeb4a3f['attributes']:_0x58e345[_0x6a6c('0x36')];if(!_0x55ca65[_0x6a6c('0x37')][_0x6a6c('0x3e')](_0x6a6c('0x3f'))){_0xeb4a3f[_0x6a6c('0x1e')]=qs[_0x6a6c('0x1e')](_0x55ca65['query']['limit']);_0xeb4a3f[_0x6a6c('0x1d')]=qs[_0x6a6c('0x1d')](_0x55ca65[_0x6a6c('0x37')][_0x6a6c('0x1d')]);}_0xeb4a3f[_0x6a6c('0x40')]=qs[_0x6a6c('0x41')](_0x55ca65['query'][_0x6a6c('0x41')]);_0xeb4a3f[_0x6a6c('0x42')]=qs[_0x6a6c('0x39')](_['pick'](_0x55ca65[_0x6a6c('0x37')],_0x58e345['filters']),_0x113b10);if(_0x55ca65[_0x6a6c('0x37')][_0x6a6c('0x43')]){_0xeb4a3f[_0x6a6c('0x42')]=_[_0x6a6c('0x44')](_0xeb4a3f[_0x6a6c('0x42')],{'$or':_[_0x6a6c('0x31')](_0x113b10,function(_0x278b5b){if(_0x278b5b['type']!=='VIRTUAL'){var _0x349cd7={};_0x349cd7[_0x278b5b[_0x6a6c('0x2e')]]={'$like':'%'+_0x55ca65[_0x6a6c('0x37')][_0x6a6c('0x43')]+'%'};return _0x349cd7;}})});}_0xeb4a3f=_[_0x6a6c('0x44')]({},_0xeb4a3f,_0x55ca65[_0x6a6c('0x45')]);var _0x430540={'where':_0xeb4a3f['where']};return db[_0x6a6c('0x32')][_0x6a6c('0x20')](_0x430540)['then'](function(_0xcadb83){_0x167ff2['count']=_0xcadb83;if(_0x55ca65[_0x6a6c('0x37')][_0x6a6c('0x46')]){_0xeb4a3f[_0x6a6c('0x47')]=[{'all':!![]}];}return db[_0x6a6c('0x32')][_0x6a6c('0x48')](_0xeb4a3f);})[_0x6a6c('0x27')](function(_0x3abc99){_0x167ff2['rows']=_0x3abc99;return _0x167ff2;})[_0x6a6c('0x27')](respondWithFilteredResult(_0x164818,_0xeb4a3f))[_0x6a6c('0x49')](handleError(_0x164818,null));};exports['show']=function(_0xb07936,_0x448c4f){var _0x2a3200={'raw':!![],'where':{'id':_0xb07936[_0x6a6c('0x4a')]['id']}},_0x251724={};_0x251724[_0x6a6c('0x36')]=_[_0x6a6c('0x38')](db['Disposition'][_0x6a6c('0x33')]);_0x251724['query']=_[_0x6a6c('0x38')](_0xb07936[_0x6a6c('0x37')]);_0x251724[_0x6a6c('0x39')]=_['intersection'](_0x251724[_0x6a6c('0x36')],_0x251724[_0x6a6c('0x37')]);_0x2a3200[_0x6a6c('0x3b')]=_[_0x6a6c('0x3a')](_0x251724[_0x6a6c('0x36')],qs['fields'](_0xb07936[_0x6a6c('0x37')][_0x6a6c('0x3c')]));_0x2a3200['attributes']=_0x2a3200['attributes']['length']?_0x2a3200['attributes']:_0x251724['model'];if(_0xb07936[_0x6a6c('0x37')][_0x6a6c('0x46')]){_0x2a3200[_0x6a6c('0x47')]=[{'all':!![]}];}_0x2a3200=_[_0x6a6c('0x44')]({},_0x2a3200,_0xb07936['options']);return db[_0x6a6c('0x32')][_0x6a6c('0x4b')](_0x2a3200)[_0x6a6c('0x27')](handleEntityNotFound(_0x448c4f,null))[_0x6a6c('0x27')](respondWithResult(_0x448c4f,null))[_0x6a6c('0x49')](handleError(_0x448c4f,null));};exports['create']=function(_0x2115e9,_0x31e0dc){return db[_0x6a6c('0x32')][_0x6a6c('0x4c')](_0x2115e9[_0x6a6c('0x4d')],{})[_0x6a6c('0x27')](function(_0x15764d){var _0x562fee=_0x2115e9[_0x6a6c('0x4e')][_0x6a6c('0x29')]({'plain':!![]});if(!_0x562fee)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x562fee['role']===_0x6a6c('0x4e')){var _0x5750f9=_0x15764d[_0x6a6c('0x29')]({'plain':!![]});var _0x4a1f50=_0x6a6c('0x2a');return db[_0x6a6c('0x4f')][_0x6a6c('0x4b')]({'where':{'name':_0x4a1f50,'userProfileId':_0x562fee[_0x6a6c('0x50')]},'raw':!![]})['then'](function(_0x132c5c){if(_0x132c5c&&_0x132c5c[_0x6a6c('0x51')]===0x0){return db[_0x6a6c('0x2b')][_0x6a6c('0x4c')]({'name':_0x5750f9[_0x6a6c('0x2e')],'resourceId':_0x5750f9['id'],'type':_0x132c5c[_0x6a6c('0x2e')],'sectionId':_0x132c5c['id']},{})[_0x6a6c('0x27')](function(){return _0x15764d;});}else{return _0x15764d;}})['catch'](function(_0x5142ff){logger[_0x6a6c('0x2c')](_0x6a6c('0x52'),_0x5142ff);throw _0x5142ff;});}return _0x15764d;})[_0x6a6c('0x27')](respondWithResult(_0x31e0dc,0xc9))[_0x6a6c('0x49')](handleError(_0x31e0dc,null));};exports[_0x6a6c('0x26')]=function(_0x2e4d5d,_0x540642){if(_0x2e4d5d['body']['id']){delete _0x2e4d5d['body']['id'];}return db[_0x6a6c('0x32')]['find']({'where':{'id':_0x2e4d5d[_0x6a6c('0x4a')]['id']}})[_0x6a6c('0x27')](handleEntityNotFound(_0x540642,null))[_0x6a6c('0x27')](saveUpdates(_0x2e4d5d['body'],null))[_0x6a6c('0x27')](respondWithResult(_0x540642,null))[_0x6a6c('0x49')](handleError(_0x540642,null));};exports[_0x6a6c('0x28')]=function(_0x20a29a,_0x5990a0){return db[_0x6a6c('0x32')][_0x6a6c('0x4b')]({'where':{'id':_0x20a29a[_0x6a6c('0x4a')]['id']}})[_0x6a6c('0x27')](handleEntityNotFound(_0x5990a0,null))[_0x6a6c('0x27')](removeEntity(_0x5990a0,null))['catch'](handleError(_0x5990a0,null));};
\ No newline at end of file
+var _0x91a7=['Disposition','findAll','rows','show','params','keys','rawAttributes','length','includeAll','include','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','find','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','Dispositions','UserProfileResource','destroy','error','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','VIRTUAL','merge','options'];(function(_0x5c879e,_0xe58074){var _0x30942b=function(_0x535b57){while(--_0x535b57){_0x5c879e['push'](_0x5c879e['shift']());}};_0x30942b(++_0xe58074);}(_0x91a7,0x6c));var _0x791a=function(_0x539067,_0x60ff05){_0x539067=_0x539067-0x0;var _0x26e990=_0x91a7[_0x539067];return _0x26e990;};'use strict';var emlformat=require(_0x791a('0x0'));var rimraf=require(_0x791a('0x1'));var zipdir=require(_0x791a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x791a('0x3'));var moment=require(_0x791a('0x4'));var BPromise=require(_0x791a('0x5'));var Mustache=require(_0x791a('0x6'));var util=require(_0x791a('0x7'));var path=require('path');var sox=require(_0x791a('0x8'));var csv=require(_0x791a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0xa'));var _=require('lodash');var squel=require(_0x791a('0xb'));var crypto=require(_0x791a('0xc'));var jsforce=require(_0x791a('0xd'));var deskjs=require(_0x791a('0xe'));var toCsv=require(_0x791a('0x9'));var querystring=require(_0x791a('0xf'));var Papa=require(_0x791a('0x10'));var Redis=require('ioredis');var authService=require(_0x791a('0x11'));var qs=require(_0x791a('0x12'));var as=require(_0x791a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x14'))(_0x791a('0x15'));var utils=require(_0x791a('0x16'));var config=require(_0x791a('0x17'));var licenseUtil=require(_0x791a('0x18'));var db=require(_0x791a('0x19'))['db'];function respondWithStatusCode(_0xde8560,_0x1f34f8){_0x1f34f8=_0x1f34f8||0xcc;return function(_0x1821b9){if(_0x1821b9){return _0xde8560[_0x791a('0x1a')](_0x1f34f8);}return _0xde8560['status'](_0x1f34f8)[_0x791a('0x1b')]();};}function respondWithResult(_0x1cc6be,_0x405061){_0x405061=_0x405061||0xc8;return function(_0x292992){if(_0x292992){return _0x1cc6be[_0x791a('0x1c')](_0x405061)[_0x791a('0x1d')](_0x292992);}};}function respondWithFilteredResult(_0x4866eb,_0xf588d2){return function(_0x11b496){if(_0x11b496){var _0x51cb70=typeof _0xf588d2['offset']===_0x791a('0x1e')&&typeof _0xf588d2[_0x791a('0x1f')]===_0x791a('0x1e');var _0x492a1a=_0x11b496[_0x791a('0x20')];var _0x545e81=_0x51cb70?0x0:_0xf588d2['offset'];var _0x121eb3=_0x51cb70?_0x11b496[_0x791a('0x20')]:_0xf588d2[_0x791a('0x21')]+_0xf588d2[_0x791a('0x1f')];var _0x5e784b;if(_0x121eb3>=_0x492a1a){_0x121eb3=_0x492a1a;_0x5e784b=0xc8;}else{_0x5e784b=0xce;}_0x4866eb[_0x791a('0x1c')](_0x5e784b);return _0x4866eb[_0x791a('0x22')](_0x791a('0x23'),_0x545e81+'-'+_0x121eb3+'/'+_0x492a1a)[_0x791a('0x1d')](_0x11b496);}return null;};}function patchUpdates(_0x4c6ea2){return function(_0x34d2f7){try{jsonpatch[_0x791a('0x24')](_0x34d2f7,_0x4c6ea2,!![]);}catch(_0xf6f8d0){return BPromise[_0x791a('0x25')](_0xf6f8d0);}return _0x34d2f7[_0x791a('0x26')]();};}function saveUpdates(_0x5da826,_0xdcd04d){return function(_0x55dbf6){if(_0x55dbf6){return _0x55dbf6[_0x791a('0x27')](_0x5da826)[_0x791a('0x28')](function(_0xa5f008){return _0xa5f008;});}return null;};}function removeEntity(_0x4a10df,_0x27c971){return function(_0x59ff44){if(_0x59ff44){return _0x59ff44['destroy']()[_0x791a('0x28')](function(){var _0x46ca44=_0x59ff44['get']({'plain':!![]});var _0xe0f48b=_0x791a('0x29');return db[_0x791a('0x2a')][_0x791a('0x2b')]({'where':{'type':_0xe0f48b,'resourceId':_0x46ca44['id']}})['then'](function(){return _0x59ff44;});})[_0x791a('0x28')](function(){_0x4a10df[_0x791a('0x1c')](0xcc)[_0x791a('0x1b')]();});}};}function handleEntityNotFound(_0x3cbdd1,_0x552357){return function(_0x4896f5){if(!_0x4896f5){_0x3cbdd1['sendStatus'](0x194);}return _0x4896f5;};}function handleError(_0x338649,_0x328352){_0x328352=_0x328352||0x1f4;return function(_0x12234c){logger[_0x791a('0x2c')](_0x12234c['stack']);if(_0x12234c['name']){delete _0x12234c[_0x791a('0x2d')];}_0x338649[_0x791a('0x1c')](_0x328352)[_0x791a('0x2e')](_0x12234c);};}exports[_0x791a('0x2f')]=function(_0x2ff53d,_0x110584){var _0x570228={},_0x37294e={},_0x6569a0={'count':0x0,'rows':[]};var _0x3030e9=_[_0x791a('0x30')](db['Disposition']['rawAttributes'],function(_0x23626a){return{'name':_0x23626a[_0x791a('0x31')],'type':_0x23626a[_0x791a('0x32')][_0x791a('0x33')]};});_0x37294e[_0x791a('0x34')]=_['map'](_0x3030e9,_0x791a('0x2d'));_0x37294e[_0x791a('0x35')]=_['keys'](_0x2ff53d[_0x791a('0x35')]);_0x37294e[_0x791a('0x36')]=_['intersection'](_0x37294e['model'],_0x37294e[_0x791a('0x35')]);_0x570228['attributes']=_[_0x791a('0x37')](_0x37294e['model'],qs[_0x791a('0x38')](_0x2ff53d[_0x791a('0x35')]['fields']));_0x570228[_0x791a('0x39')]=_0x570228['attributes']['length']?_0x570228[_0x791a('0x39')]:_0x37294e[_0x791a('0x34')];if(!_0x2ff53d[_0x791a('0x35')]['hasOwnProperty'](_0x791a('0x3a'))){_0x570228[_0x791a('0x1f')]=qs['limit'](_0x2ff53d[_0x791a('0x35')]['limit']);_0x570228[_0x791a('0x21')]=qs[_0x791a('0x21')](_0x2ff53d[_0x791a('0x35')][_0x791a('0x21')]);}_0x570228[_0x791a('0x3b')]=qs[_0x791a('0x3c')](_0x2ff53d[_0x791a('0x35')][_0x791a('0x3c')]);_0x570228[_0x791a('0x3d')]=qs['filters'](_['pick'](_0x2ff53d[_0x791a('0x35')],_0x37294e[_0x791a('0x36')]),_0x3030e9);if(_0x2ff53d['query'][_0x791a('0x3e')]){_0x570228[_0x791a('0x3d')]=_['merge'](_0x570228['where'],{'$or':_['map'](_0x3030e9,function(_0xbd5b5d){if(_0xbd5b5d[_0x791a('0x32')]!==_0x791a('0x3f')){var _0x139ae4={};_0x139ae4[_0xbd5b5d[_0x791a('0x2d')]]={'$like':'%'+_0x2ff53d[_0x791a('0x35')]['filter']+'%'};return _0x139ae4;}})});}_0x570228=_[_0x791a('0x40')]({},_0x570228,_0x2ff53d[_0x791a('0x41')]);var _0x562591={'where':_0x570228[_0x791a('0x3d')]};return db[_0x791a('0x42')][_0x791a('0x20')](_0x562591)['then'](function(_0x53136e){_0x6569a0[_0x791a('0x20')]=_0x53136e;if(_0x2ff53d['query']['includeAll']){_0x570228['include']=[{'all':!![]}];}return db['Disposition'][_0x791a('0x43')](_0x570228);})['then'](function(_0x1cdd10){_0x6569a0[_0x791a('0x44')]=_0x1cdd10;return _0x6569a0;})[_0x791a('0x28')](respondWithFilteredResult(_0x110584,_0x570228))['catch'](handleError(_0x110584,null));};exports[_0x791a('0x45')]=function(_0x5f0f9e,_0x237500){var _0x3e8e6d={'raw':!![],'where':{'id':_0x5f0f9e[_0x791a('0x46')]['id']}},_0x1b4ac1={};_0x1b4ac1[_0x791a('0x34')]=_[_0x791a('0x47')](db[_0x791a('0x42')][_0x791a('0x48')]);_0x1b4ac1[_0x791a('0x35')]=_[_0x791a('0x47')](_0x5f0f9e['query']);_0x1b4ac1[_0x791a('0x36')]=_['intersection'](_0x1b4ac1[_0x791a('0x34')],_0x1b4ac1[_0x791a('0x35')]);_0x3e8e6d[_0x791a('0x39')]=_[_0x791a('0x37')](_0x1b4ac1[_0x791a('0x34')],qs['fields'](_0x5f0f9e[_0x791a('0x35')][_0x791a('0x38')]));_0x3e8e6d[_0x791a('0x39')]=_0x3e8e6d['attributes'][_0x791a('0x49')]?_0x3e8e6d[_0x791a('0x39')]:_0x1b4ac1['model'];if(_0x5f0f9e['query'][_0x791a('0x4a')]){_0x3e8e6d[_0x791a('0x4b')]=[{'all':!![]}];}_0x3e8e6d=_[_0x791a('0x40')]({},_0x3e8e6d,_0x5f0f9e['options']);return db[_0x791a('0x42')]['find'](_0x3e8e6d)['then'](handleEntityNotFound(_0x237500,null))[_0x791a('0x28')](respondWithResult(_0x237500,null))[_0x791a('0x4c')](handleError(_0x237500,null));};exports[_0x791a('0x4d')]=function(_0x195c20,_0x1991cf){return db['Disposition'][_0x791a('0x4d')](_0x195c20[_0x791a('0x4e')],{})['then'](function(_0x44fb20){var _0x6bac9a=_0x195c20['user']['get']({'plain':!![]});if(!_0x6bac9a)throw new Error(_0x791a('0x4f'));if(_0x6bac9a[_0x791a('0x50')]===_0x791a('0x51')){var _0x2ea553=_0x44fb20[_0x791a('0x52')]({'plain':!![]});var _0x1fdbce=_0x791a('0x29');return db[_0x791a('0x53')][_0x791a('0x54')]({'where':{'name':_0x1fdbce,'userProfileId':_0x6bac9a[_0x791a('0x55')]},'raw':!![]})['then'](function(_0x38ba9b){if(_0x38ba9b&&_0x38ba9b[_0x791a('0x56')]===0x0){return db['UserProfileResource'][_0x791a('0x4d')]({'name':_0x2ea553['name'],'resourceId':_0x2ea553['id'],'type':_0x38ba9b[_0x791a('0x2d')],'sectionId':_0x38ba9b['id']},{})['then'](function(){return _0x44fb20;});}else{return _0x44fb20;}})[_0x791a('0x4c')](function(_0x1ee94d){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ee94d);throw _0x1ee94d;});}return _0x44fb20;})['then'](respondWithResult(_0x1991cf,0xc9))[_0x791a('0x4c')](handleError(_0x1991cf,null));};exports[_0x791a('0x27')]=function(_0x443d82,_0x37ace4){if(_0x443d82['body']['id']){delete _0x443d82['body']['id'];}return db[_0x791a('0x42')][_0x791a('0x54')]({'where':{'id':_0x443d82[_0x791a('0x46')]['id']}})['then'](handleEntityNotFound(_0x37ace4,null))['then'](saveUpdates(_0x443d82[_0x791a('0x4e')],null))[_0x791a('0x28')](respondWithResult(_0x37ace4,null))[_0x791a('0x4c')](handleError(_0x37ace4,null));};exports[_0x791a('0x2b')]=function(_0x3862dc,_0x2936b8){return db[_0x791a('0x42')][_0x791a('0x54')]({'where':{'id':_0x3862dc[_0x791a('0x46')]['id']}})[_0x791a('0x28')](handleEntityNotFound(_0x2936b8,null))[_0x791a('0x28')](removeEntity(_0x2936b8,null))['catch'](handleError(_0x2936b8,null));};
\ No newline at end of file
index 9a17bca..5ac0d2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4cf=['ListId','name_mail','MailAccountId','name_sms','SmsAccountId','FaxAccountId','name_openchannel','name_whatsapp','WhatsappAccountId','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./disposition.attributes','define','Disposition','tools_dispositions','name_voice','name'];(function(_0x340aa4,_0x4a1789){var _0x492b4d=function(_0x16d1d3){while(--_0x16d1d3){_0x340aa4['push'](_0x340aa4['shift']());}};_0x492b4d(++_0x4a1789);}(_0xb4cf,0x1a7));var _0xfb4c=function(_0x5a89d6,_0x2d49c0){_0x5a89d6=_0x5a89d6-0x0;var _0x18c237=_0xb4cf[_0x5a89d6];return _0x18c237;};'use strict';var _=require(_0xfb4c('0x0'));var util=require('util');var logger=require(_0xfb4c('0x1'))(_0xfb4c('0x2'));var moment=require('moment');var BPromise=require(_0xfb4c('0x3'));var rp=require(_0xfb4c('0x4'));var fs=require('fs');var path=require(_0xfb4c('0x5'));var rimraf=require(_0xfb4c('0x6'));var config=require(_0xfb4c('0x7'));var attributes=require(_0xfb4c('0x8'));module['exports']=function(_0x2d51bf,_0x3aae8b){return _0x2d51bf[_0xfb4c('0x9')](_0xfb4c('0xa'),attributes,{'tableName':_0xfb4c('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xfb4c('0xc'),'fields':[_0xfb4c('0xd'),_0xfb4c('0xe')]},{'unique':!![],'name':'name_chat','fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0xfb4c('0xf'),'fields':[_0xfb4c('0xd'),_0xfb4c('0x10')]},{'unique':!![],'name':_0xfb4c('0x11'),'fields':[_0xfb4c('0xd'),_0xfb4c('0x12')]},{'unique':!![],'name':'name_fax','fields':[_0xfb4c('0xd'),_0xfb4c('0x13')]},{'unique':!![],'name':_0xfb4c('0x14'),'fields':[_0xfb4c('0xd'),'OpenchannelAccountId']},{'unique':!![],'name':_0xfb4c('0x15'),'fields':[_0xfb4c('0xd'),_0xfb4c('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe043=['tools_dispositions','name_voice','ListId','name','ChatWebsiteId','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','Disposition'];(function(_0x22e47a,_0x4ea10c){var _0x15a12a=function(_0x4a097f){while(--_0x4a097f){_0x22e47a['push'](_0x22e47a['shift']());}};_0x15a12a(++_0x4ea10c);}(_0xe043,0x81));var _0x3e04=function(_0xacb24c,_0x372f99){_0xacb24c=_0xacb24c-0x0;var _0x4e26bf=_0xe043[_0xacb24c];return _0x4e26bf;};'use strict';var _=require('lodash');var util=require(_0x3e04('0x0'));var logger=require(_0x3e04('0x1'))(_0x3e04('0x2'));var moment=require('moment');var BPromise=require(_0x3e04('0x3'));var rp=require(_0x3e04('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3e04('0x5'));var config=require(_0x3e04('0x6'));var attributes=require('./disposition.attributes');module[_0x3e04('0x7')]=function(_0x2455be,_0x2cd425){return _0x2455be['define'](_0x3e04('0x8'),attributes,{'tableName':_0x3e04('0x9'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x3e04('0xa'),'fields':['name',_0x3e04('0xb')]},{'unique':!![],'name':'name_chat','fields':[_0x3e04('0xc'),_0x3e04('0xd')]},{'unique':!![],'name':'name_mail','fields':['name',_0x3e04('0xe')]},{'unique':!![],'name':_0x3e04('0xf'),'fields':[_0x3e04('0xc'),_0x3e04('0x10')]},{'unique':!![],'name':_0x3e04('0x11'),'fields':[_0x3e04('0xc'),_0x3e04('0x12')]},{'unique':!![],'name':_0x3e04('0x13'),'fields':[_0x3e04('0xc'),_0x3e04('0x14')]},{'unique':!![],'name':_0x3e04('0x15'),'fields':['name',_0x3e04('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
index 0d52daa..7f39dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x128819,_0x379234){var _0x56c72e=function(_0x12a0e9){while(--_0x12a0e9){_0x128819['push'](_0x128819['shift']());}};_0x56c72e(++_0x379234);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x332a4d,_0x7e07b){var _0x5d3d7f=function(_0x502d1a){while(--_0x502d1a){_0x332a4d['push'](_0x332a4d['shift']());}};_0x5d3d7f(++_0x7e07b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 73289b8..90f6412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f75=['post','create','put','delete','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x455633,_0x3e63ef){var _0x3daa1b=function(_0x14d6d8){while(--_0x14d6d8){_0x455633['push'](_0x455633['shift']());}};_0x3daa1b(++_0x3e63ef);}(_0x6f75,0xc4));var _0x56f7=function(_0x93151,_0x1f7757){_0x93151=_0x93151-0x0;var _0x5011e2=_0x6f75[_0x93151];return _0x5011e2;};'use strict';var multer=require(_0x56f7('0x0'));var util=require('util');var path=require(_0x56f7('0x1'));var timeout=require(_0x56f7('0x2'));var express=require(_0x56f7('0x3'));var router=express[_0x56f7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x56f7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x56f7('0x6'));var controller=require('./disposition.controller');router[_0x56f7('0x7')]('/',auth[_0x56f7('0x8')](),controller[_0x56f7('0x9')]);router['get'](_0x56f7('0xa'),auth[_0x56f7('0x8')](),controller[_0x56f7('0xb')]);router[_0x56f7('0xc')]('/',auth['isAuthenticated'](),controller[_0x56f7('0xd')]);router[_0x56f7('0xe')](_0x56f7('0xa'),auth[_0x56f7('0x8')](),controller['update']);router[_0x56f7('0xf')](_0x56f7('0xa'),auth[_0x56f7('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf17a=['/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./disposition.controller','get','isAuthenticated','index','post','create'];(function(_0x29e7af,_0x386f3b){var _0x467391=function(_0x34384c){while(--_0x34384c){_0x29e7af['push'](_0x29e7af['shift']());}};_0x467391(++_0x386f3b);}(_0xf17a,0x136));var _0xaf17=function(_0x3c2cc9,_0xf447f2){_0x3c2cc9=_0x3c2cc9-0x0;var _0x11f2a9=_0xf17a[_0x3c2cc9];return _0x11f2a9;};'use strict';var multer=require(_0xaf17('0x0'));var util=require(_0xaf17('0x1'));var path=require(_0xaf17('0x2'));var timeout=require(_0xaf17('0x3'));var express=require(_0xaf17('0x4'));var router=express[_0xaf17('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xaf17('0x6'));var controller=require(_0xaf17('0x7'));router[_0xaf17('0x8')]('/',auth[_0xaf17('0x9')](),controller[_0xaf17('0xa')]);router[_0xaf17('0x8')]('/:id',auth[_0xaf17('0x9')](),controller['show']);router[_0xaf17('0xb')]('/',auth[_0xaf17('0x9')](),controller[_0xaf17('0xc')]);router['put'](_0xaf17('0xd'),auth[_0xaf17('0x9')](),controller[_0xaf17('0xe')]);router[_0xaf17('0xf')](_0xaf17('0xd'),auth[_0xaf17('0x9')](),controller[_0xaf17('0x10')]);module['exports']=router;
\ No newline at end of file
index f5fb3c6..20ca94a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62b6=['7200','12000','14400','4800','2400','9600','INTEGER','SIP','DADHI','KHOMP','TEXT','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x62b6,0x19c));var _0x662b=function(_0x5e1b98,_0x45dd16){_0x5e1b98=_0x5e1b98-0x0;var _0x586364=_0x62b6[_0x5e1b98];return _0x586364;};'use strict';var Sequelize=require(_0x662b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x662b('0x1')]},'ecm':{'type':Sequelize[_0x662b('0x2')](_0x662b('0x3'),'no'),'defaultValue':_0x662b('0x3')},'headerinfo':{'type':Sequelize[_0x662b('0x1')],'defaultValue':_0x662b('0x4')},'localstationid':{'type':Sequelize[_0x662b('0x1')],'unique':_0x662b('0x5')},'minrate':{'type':Sequelize[_0x662b('0x2')]('2400','4800',_0x662b('0x6'),'9600',_0x662b('0x7'),_0x662b('0x8')),'defaultValue':_0x662b('0x9')},'maxrate':{'type':Sequelize[_0x662b('0x2')](_0x662b('0xa'),'4800',_0x662b('0x6'),_0x662b('0xb'),_0x662b('0x7'),_0x662b('0x8')),'defaultValue':_0x662b('0x8')},'modem':{'type':Sequelize[_0x662b('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x662b('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x662b('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x662b('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x662b('0xd'),'IAX',_0x662b('0xe'),_0x662b('0xf')),'defaultValue':_0x662b('0xd')},'key':{'type':Sequelize[_0x662b('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x662b('0x10')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x662b('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x662b('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x662b('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x662b('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x662b('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x662b('0x11')],'defaultValue':![],'comment':_0x662b('0x12'),'set':function(_0x201a15){if(!_0x201a15)this[_0x662b('0x13')](_0x662b('0x14'),null);this['setDataValue'](_0x662b('0x15'),_0x201a15);}}};
\ No newline at end of file
+var _0x8a3b=['mandatoryDispositionPauseId','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','12000','14400','v17,v27,v29','SIP','IAX','KHOMP','TEXT','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x5d0b83,_0x279b03){var _0x21747a=function(_0xc3085a){while(--_0xc3085a){_0x5d0b83['push'](_0x5d0b83['shift']());}};_0x21747a(++_0x279b03);}(_0x8a3b,0x109));var _0xb8a3=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0x8a3b[_0x1c546c];return _0x2cc384;};'use strict';var Sequelize=require(_0xb8a3('0x0'));module[_0xb8a3('0x1')]={'name':{'type':Sequelize[_0xb8a3('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xb8a3('0x2')]},'ecm':{'type':Sequelize[_0xb8a3('0x3')](_0xb8a3('0x4'),'no'),'defaultValue':_0xb8a3('0x4')},'headerinfo':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':_0xb8a3('0x5')},'localstationid':{'type':Sequelize[_0xb8a3('0x2')],'unique':_0xb8a3('0x6')},'minrate':{'type':Sequelize[_0xb8a3('0x3')](_0xb8a3('0x7'),_0xb8a3('0x8'),_0xb8a3('0x9'),_0xb8a3('0xa'),_0xb8a3('0xb'),'14400'),'defaultValue':_0xb8a3('0x8')},'maxrate':{'type':Sequelize['ENUM'](_0xb8a3('0x7'),_0xb8a3('0x8'),_0xb8a3('0x9'),_0xb8a3('0xa'),_0xb8a3('0xb'),_0xb8a3('0xc')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':_0xb8a3('0xd')},'gateway':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xb8a3('0x3')](_0xb8a3('0xe'),_0xb8a3('0xf'),'DADHI',_0xb8a3('0x10')),'defaultValue':_0xb8a3('0xe')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xb8a3('0x11')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb8a3('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xb8a3('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb8a3('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb8a3('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0xb8a3('0x14')},'mandatoryDisposition':{'type':Sequelize[_0xb8a3('0x13')],'defaultValue':![],'comment':_0xb8a3('0x15'),'set':function(_0x2f9ea7){if(!_0x2f9ea7)this[_0xb8a3('0x16')](_0xb8a3('0x17'),null);this[_0xb8a3('0x16')]('mandatoryDisposition',_0x2f9ea7);}}};
\ No newline at end of file
index f1a6463..bed716e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dbc=['DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./faxAccount.socket','register','jayson/promise','client','http','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','update','destroy','get','UserProfileResource','then','end','stack','name','index','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','includeAll','include','rows','show','params','Pause','keys','options','create','body','role','user','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','addDisposition','Disposition','getDispositions','FaxAccountId','findAll','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','Contact','Owner','fullname','internal','Tags','color','tag','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','exten','localstationid','app','type','system','Fax\x20Extension','appdata','Answer','ecm','gateway','maxrate','minrate','FAXOPT(','push','Wait','ReceiveFax','addAccountApplications','VoiceExtension','tech','createdAt','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','send','CmList','List','CmContact','Contacts'];(function(_0x13488c,_0x569d67){var _0x366716=function(_0x26804b){while(--_0x26804b){_0x13488c['push'](_0x13488c['shift']());}};_0x366716(++_0x569d67);}(_0x4dbc,0x1ab));var _0xc4db=function(_0x2df48f,_0x4129c1){_0x2df48f=_0x2df48f-0x0;var _0x1b7ad9=_0x4dbc[_0x2df48f];return _0x1b7ad9;};'use strict';var emlformat=require(_0xc4db('0x0'));var rimraf=require(_0xc4db('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc4db('0x2'));var rp=require('request-promise');var moment=require(_0xc4db('0x3'));var BPromise=require(_0xc4db('0x4'));var Mustache=require(_0xc4db('0x5'));var util=require(_0xc4db('0x6'));var path=require(_0xc4db('0x7'));var sox=require('sox');var csv=require(_0xc4db('0x8'));var ejs=require(_0xc4db('0x9'));var fs=require('fs');var fs_extra=require(_0xc4db('0xa'));var _=require(_0xc4db('0xb'));var squel=require(_0xc4db('0xc'));var crypto=require(_0xc4db('0xd'));var jsforce=require(_0xc4db('0xe'));var deskjs=require(_0xc4db('0xf'));var toCsv=require(_0xc4db('0x8'));var querystring=require('querystring');var Papa=require(_0xc4db('0x10'));var Redis=require(_0xc4db('0x11'));var authService=require(_0xc4db('0x12'));var qs=require(_0xc4db('0x13'));var as=require(_0xc4db('0x14'));var hardwareService=require(_0xc4db('0x15'));var logger=require(_0xc4db('0x16'))(_0xc4db('0x17'));var utils=require(_0xc4db('0x18'));var config=require(_0xc4db('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xc4db('0x1a'))['db'];config[_0xc4db('0x1b')]=_[_0xc4db('0x1c')](config[_0xc4db('0x1b')],{'host':_0xc4db('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc4db('0x1e'))[_0xc4db('0x1f')](socket);var jayson=require(_0xc4db('0x20'));var client=jayson[_0xc4db('0x21')][_0xc4db('0x22')]({'port':0x232c});var client9002=jayson[_0xc4db('0x21')][_0xc4db('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x49024c,_0x3e39f8,_0x4f3e14,_0x55c9df){return new BPromise(function(_0xfb7051,_0x5e80df){var _0x125512=_0x55c9df||client;return _0x125512[_0xc4db('0x23')](_0x49024c,_0x4f3e14)['then'](function(_0x4c7d7a){logger[_0xc4db('0x24')](_0xc4db('0x25'),_0x3e39f8,_0xc4db('0x26'));logger[_0xc4db('0x27')](_0xc4db('0x28'),_0x3e39f8,'request\x20sent',JSON[_0xc4db('0x29')](_0x4c7d7a));if(_0x4c7d7a[_0xc4db('0x2a')]){if(_0x4c7d7a['error']['code']===0x1f4){logger[_0xc4db('0x2a')]('FaxAccount,\x20%s,\x20%s',_0x3e39f8,_0x4c7d7a[_0xc4db('0x2a')]['message']);return _0x5e80df(_0x4c7d7a[_0xc4db('0x2a')][_0xc4db('0x2b')]);}logger['error'](_0xc4db('0x25'),_0x3e39f8,_0x4c7d7a[_0xc4db('0x2a')][_0xc4db('0x2b')]);return _0xfb7051(_0x4c7d7a['error'][_0xc4db('0x2b')]);}else{logger[_0xc4db('0x24')](_0xc4db('0x25'),_0x3e39f8,_0xc4db('0x26'));_0xfb7051(_0x4c7d7a[_0xc4db('0x2c')]['message']);}})[_0xc4db('0x2d')](function(_0xd65eba){logger[_0xc4db('0x2a')](_0xc4db('0x25'),_0x3e39f8,_0xd65eba);_0x5e80df(_0xd65eba);});});}function respondWithStatusCode(_0x262de1,_0x3552d4){_0x3552d4=_0x3552d4||0xcc;return function(_0x419f7a){if(_0x419f7a){return _0x262de1[_0xc4db('0x2e')](_0x3552d4);}return _0x262de1[_0xc4db('0x2f')](_0x3552d4)['end']();};}function respondWithResult(_0xf7fbf8,_0x2a196c){_0x2a196c=_0x2a196c||0xc8;return function(_0x477c0b){if(_0x477c0b){return _0xf7fbf8[_0xc4db('0x2f')](_0x2a196c)[_0xc4db('0x30')](_0x477c0b);}};}function respondWithFilteredResult(_0x5e345a,_0x29f5d3){return function(_0x25995e){if(_0x25995e){var _0x12b7b8=typeof _0x29f5d3['offset']===_0xc4db('0x31')&&typeof _0x29f5d3[_0xc4db('0x32')]===_0xc4db('0x31');var _0x416df4=_0x25995e[_0xc4db('0x33')];var _0x5a9f6c=_0x12b7b8?0x0:_0x29f5d3[_0xc4db('0x34')];var _0x4c5e41=_0x12b7b8?_0x25995e[_0xc4db('0x33')]:_0x29f5d3[_0xc4db('0x34')]+_0x29f5d3['limit'];var _0x3b6cce;if(_0x4c5e41>=_0x416df4){_0x4c5e41=_0x416df4;_0x3b6cce=0xc8;}else{_0x3b6cce=0xce;}_0x5e345a['status'](_0x3b6cce);return _0x5e345a[_0xc4db('0x35')]('Content-Range',_0x5a9f6c+'-'+_0x4c5e41+'/'+_0x416df4)['json'](_0x25995e);}return null;};}function patchUpdates(_0x578c64){return function(_0x1fac7f){try{jsonpatch[_0xc4db('0x36')](_0x1fac7f,_0x578c64,!![]);}catch(_0x4d52dc){return BPromise[_0xc4db('0x37')](_0x4d52dc);}return _0x1fac7f[_0xc4db('0x38')]();};}function saveUpdates(_0x37a0c1,_0x22253b){return function(_0x1e6fcc){if(_0x1e6fcc){return _0x1e6fcc[_0xc4db('0x39')](_0x37a0c1)['then'](function(_0x2229a0){return _0x2229a0;});}return null;};}function removeEntity(_0x43310b,_0xafb460){return function(_0x1c40ac){if(_0x1c40ac){return _0x1c40ac[_0xc4db('0x3a')]()['then'](function(){var _0xe5a6d=_0x1c40ac[_0xc4db('0x3b')]({'plain':!![]});var _0x4faea1='FaxAccounts';return db[_0xc4db('0x3c')][_0xc4db('0x3a')]({'where':{'type':_0x4faea1,'resourceId':_0xe5a6d['id']}})['then'](function(){return _0x1c40ac;});})[_0xc4db('0x3d')](function(){_0x43310b['status'](0xcc)[_0xc4db('0x3e')]();});}};}function handleEntityNotFound(_0x3059be,_0x2d1f5f){return function(_0x4adc0f){if(!_0x4adc0f){_0x3059be['sendStatus'](0x194);}return _0x4adc0f;};}function handleError(_0x23629e,_0x648c57){_0x648c57=_0x648c57||0x1f4;return function(_0x3cdcbf){logger[_0xc4db('0x2a')](_0x3cdcbf[_0xc4db('0x3f')]);if(_0x3cdcbf[_0xc4db('0x40')]){delete _0x3cdcbf[_0xc4db('0x40')];}_0x23629e['status'](_0x648c57)['send'](_0x3cdcbf);};}exports[_0xc4db('0x41')]=function(_0x134bb2,_0x2ec9ee){var _0x29b310={'include':[{'model':db['Pause'],'as':_0xc4db('0x42')}]},_0x59f025={},_0x3260b2={'count':0x0,'rows':[]};var _0x5700cf=_[_0xc4db('0x43')](db[_0xc4db('0x44')][_0xc4db('0x45')],function(_0x56b4c8){return{'name':_0x56b4c8[_0xc4db('0x46')],'type':_0x56b4c8['type'][_0xc4db('0x47')]};});_0x59f025['model']=_[_0xc4db('0x43')](_0x5700cf,_0xc4db('0x40'));_0x59f025['query']=_['keys'](_0x134bb2[_0xc4db('0x48')]);_0x59f025[_0xc4db('0x49')]=_[_0xc4db('0x4a')](_0x59f025[_0xc4db('0x4b')],_0x59f025['query']);_0x29b310[_0xc4db('0x4c')]=_[_0xc4db('0x4a')](_0x59f025[_0xc4db('0x4b')],qs[_0xc4db('0x4d')](_0x134bb2['query'][_0xc4db('0x4d')]));_0x29b310[_0xc4db('0x4c')]=_0x29b310[_0xc4db('0x4c')][_0xc4db('0x4e')]?_0x29b310['attributes']:_0x59f025[_0xc4db('0x4b')];if(!_0x134bb2[_0xc4db('0x48')][_0xc4db('0x4f')](_0xc4db('0x50'))){_0x29b310[_0xc4db('0x32')]=qs[_0xc4db('0x32')](_0x134bb2[_0xc4db('0x48')][_0xc4db('0x32')]);_0x29b310[_0xc4db('0x34')]=qs[_0xc4db('0x34')](_0x134bb2[_0xc4db('0x48')][_0xc4db('0x34')]);}_0x29b310[_0xc4db('0x51')]=qs[_0xc4db('0x52')](_0x134bb2[_0xc4db('0x48')][_0xc4db('0x52')]);_0x29b310['where']=qs[_0xc4db('0x49')](_[_0xc4db('0x53')](_0x134bb2['query'],_0x59f025[_0xc4db('0x49')]),_0x5700cf);if(_0x134bb2[_0xc4db('0x48')]['filter']){_0x29b310[_0xc4db('0x54')]=_['merge'](_0x29b310[_0xc4db('0x54')],{'$or':_[_0xc4db('0x43')](_0x5700cf,function(_0x245afc){if(_0x245afc['type']!==_0xc4db('0x55')){var _0x494516={};_0x494516[_0x245afc['name']]={'$like':'%'+_0x134bb2['query'][_0xc4db('0x56')]+'%'};return _0x494516;}})});}_0x29b310=_[_0xc4db('0x57')]({},_0x29b310,_0x134bb2['options']);var _0x1d2b2b={'where':_0x29b310[_0xc4db('0x54')]};return db[_0xc4db('0x44')][_0xc4db('0x33')](_0x1d2b2b)[_0xc4db('0x3d')](function(_0x51f57b){_0x3260b2[_0xc4db('0x33')]=_0x51f57b;if(_0x134bb2[_0xc4db('0x48')][_0xc4db('0x58')]){_0x29b310[_0xc4db('0x59')]=[{'all':!![]}];}return db[_0xc4db('0x44')]['findAll'](_0x29b310);})[_0xc4db('0x3d')](function(_0x558ebc){_0x3260b2[_0xc4db('0x5a')]=_0x558ebc;return _0x3260b2;})[_0xc4db('0x3d')](respondWithFilteredResult(_0x2ec9ee,_0x29b310))[_0xc4db('0x2d')](handleError(_0x2ec9ee,null));};exports[_0xc4db('0x5b')]=function(_0x29ab8d,_0x55d748){var _0x46cfaf={'raw':![],'where':{'id':_0x29ab8d[_0xc4db('0x5c')]['id']},'include':[{'model':db[_0xc4db('0x5d')],'as':_0xc4db('0x42')}]},_0x341e07={};_0x341e07['model']=_['keys'](db[_0xc4db('0x44')]['rawAttributes']);_0x341e07[_0xc4db('0x48')]=_[_0xc4db('0x5e')](_0x29ab8d['query']);_0x341e07[_0xc4db('0x49')]=_[_0xc4db('0x4a')](_0x341e07['model'],_0x341e07[_0xc4db('0x48')]);_0x46cfaf[_0xc4db('0x4c')]=_[_0xc4db('0x4a')](_0x341e07[_0xc4db('0x4b')],qs[_0xc4db('0x4d')](_0x29ab8d['query'][_0xc4db('0x4d')]));_0x46cfaf[_0xc4db('0x4c')]=_0x46cfaf[_0xc4db('0x4c')][_0xc4db('0x4e')]?_0x46cfaf[_0xc4db('0x4c')]:_0x341e07[_0xc4db('0x4b')];if(_0x29ab8d[_0xc4db('0x48')][_0xc4db('0x58')]){_0x46cfaf[_0xc4db('0x59')]=[{'all':!![]}];}_0x46cfaf=_[_0xc4db('0x57')]({},_0x46cfaf,_0x29ab8d[_0xc4db('0x5f')]);return db[_0xc4db('0x44')]['find'](_0x46cfaf)[_0xc4db('0x3d')](handleEntityNotFound(_0x55d748,null))['then'](respondWithResult(_0x55d748,null))[_0xc4db('0x2d')](handleError(_0x55d748,null));};exports[_0xc4db('0x60')]=function(_0x4882ec,_0x4f7c08){return db[_0xc4db('0x44')][_0xc4db('0x60')](_0x4882ec[_0xc4db('0x61')],{})[_0xc4db('0x3d')](function(_0x3ea1b6){var _0x923f8f=_0x4882ec['user'][_0xc4db('0x3b')]({'plain':!![]});if(!_0x923f8f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x923f8f[_0xc4db('0x62')]===_0xc4db('0x63')){var _0x17cad5=_0x3ea1b6[_0xc4db('0x3b')]({'plain':!![]});var _0x231277=_0xc4db('0x64');return db[_0xc4db('0x65')]['find']({'where':{'name':_0x231277,'userProfileId':_0x923f8f[_0xc4db('0x66')]},'raw':!![]})[_0xc4db('0x3d')](function(_0x3ebe34){if(_0x3ebe34&&_0x3ebe34[_0xc4db('0x67')]===0x0){return db[_0xc4db('0x3c')]['create']({'name':_0x17cad5[_0xc4db('0x40')],'resourceId':_0x17cad5['id'],'type':_0x3ebe34[_0xc4db('0x40')],'sectionId':_0x3ebe34['id']},{})[_0xc4db('0x3d')](function(){return _0x3ea1b6;});}else{return _0x3ea1b6;}})['catch'](function(_0x5d5299){logger['error'](_0xc4db('0x68'),_0x5d5299);throw _0x5d5299;});}return _0x3ea1b6;})['then'](respondWithResult(_0x4f7c08,0xc9))['catch'](handleError(_0x4f7c08,null));};exports[_0xc4db('0x39')]=function(_0x5bcae0,_0x2aee33){if(_0x5bcae0[_0xc4db('0x61')]['id']){delete _0x5bcae0[_0xc4db('0x61')]['id'];}return db[_0xc4db('0x44')][_0xc4db('0x69')]({'where':{'id':_0x5bcae0[_0xc4db('0x5c')]['id']},'include':[{'model':db[_0xc4db('0x5d')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x2aee33,null))['then'](saveUpdates(_0x5bcae0[_0xc4db('0x61')],null))['then'](respondWithResult(_0x2aee33,null))[_0xc4db('0x2d')](handleError(_0x2aee33,null));};exports[_0xc4db('0x3a')]=function(_0x3ac7be,_0x26c7f5){return db['FaxAccount'][_0xc4db('0x69')]({'where':{'id':_0x3ac7be[_0xc4db('0x5c')]['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x26c7f5,null))[_0xc4db('0x3d')](removeEntity(_0x26c7f5,null))[_0xc4db('0x2d')](handleError(_0x26c7f5,null));};exports[_0xc4db('0x6a')]=function(_0x2970b0,_0x2b91ce){return db[_0xc4db('0x44')][_0xc4db('0x6a')]()['then'](respondWithResult(_0x2b91ce,null))[_0xc4db('0x2d')](handleError(_0x2b91ce,null));};exports[_0xc4db('0x6b')]=function(_0x16f556,_0x73f3b8,_0x408f87){if(_0x16f556[_0xc4db('0x61')]['id']){delete _0x16f556['body']['id'];}return db[_0xc4db('0x44')][_0xc4db('0x69')]({'where':{'id':_0x16f556[_0xc4db('0x5c')]['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x73f3b8,null))['then'](function(_0x5e38cd){if(_0x5e38cd){_0x16f556[_0xc4db('0x61')]['FaxAccountId']=_0x5e38cd['id'];return db[_0xc4db('0x6c')][_0xc4db('0x60')](_0x16f556[_0xc4db('0x61')]);}})[_0xc4db('0x3d')](respondWithResult(_0x73f3b8,null))[_0xc4db('0x2d')](handleError(_0x73f3b8,null));};exports[_0xc4db('0x6d')]=function(_0x95fb4a,_0x2f1d8f,_0x483582){var _0x355762={'raw':![],'where':{}};var _0x126a1c={};var _0x29f4de={'count':0x0,'rows':[]};return db[_0xc4db('0x44')]['findOne']({'where':{'id':_0x95fb4a['params']['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x2f1d8f,null))[_0xc4db('0x3d')](function(_0x22ea1f){if(_0x22ea1f){_0x126a1c[_0xc4db('0x4b')]=_[_0xc4db('0x5e')](db['Disposition'][_0xc4db('0x45')]);_0x126a1c[_0xc4db('0x48')]=_['keys'](_0x95fb4a[_0xc4db('0x48')]);_0x126a1c['filters']=_['intersection'](_0x126a1c['model'],_0x126a1c[_0xc4db('0x48')]);_0x355762[_0xc4db('0x4c')]=_[_0xc4db('0x4a')](_0x126a1c[_0xc4db('0x4b')],qs['fields'](_0x95fb4a[_0xc4db('0x48')][_0xc4db('0x4d')]));_0x355762[_0xc4db('0x4c')]=_0x355762[_0xc4db('0x4c')][_0xc4db('0x4e')]?_0x355762[_0xc4db('0x4c')]:_0x126a1c['model'];if(!_0x95fb4a['query'][_0xc4db('0x4f')](_0xc4db('0x50'))){_0x355762[_0xc4db('0x32')]=qs[_0xc4db('0x32')](_0x95fb4a[_0xc4db('0x48')][_0xc4db('0x32')]);_0x355762[_0xc4db('0x34')]=qs['offset'](_0x95fb4a['query'][_0xc4db('0x34')]);}_0x355762['order']=qs['sort'](_0x95fb4a['query'][_0xc4db('0x52')]);_0x355762[_0xc4db('0x54')]=qs['filters'](_[_0xc4db('0x53')](_0x95fb4a[_0xc4db('0x48')],_0x126a1c['filters']));_0x355762[_0xc4db('0x54')][_0xc4db('0x6e')]=_0x22ea1f['id'];if(_0x95fb4a['query'][_0xc4db('0x56')]){_0x355762[_0xc4db('0x54')]=_['merge'](_0x355762[_0xc4db('0x54')],{'$or':_['map'](_0x355762[_0xc4db('0x4c')],function(_0x296b14){var _0x868e94={};_0x868e94[_0x296b14]={'$like':'%'+_0x95fb4a[_0xc4db('0x48')][_0xc4db('0x56')]+'%'};return _0x868e94;})});}_0x355762=_[_0xc4db('0x57')]({},_0x355762,_0x95fb4a[_0xc4db('0x5f')]);return db[_0xc4db('0x6c')][_0xc4db('0x33')]({'where':_0x355762[_0xc4db('0x54')]})[_0xc4db('0x3d')](function(_0x1086cb){_0x29f4de[_0xc4db('0x33')]=_0x1086cb;if(_0x95fb4a[_0xc4db('0x48')][_0xc4db('0x58')]){_0x355762['include']=[{'all':!![]}];}return db[_0xc4db('0x6c')][_0xc4db('0x6f')](_0x355762);})[_0xc4db('0x3d')](function(_0x142fa5){_0x29f4de['rows']=_0x142fa5;return _0x29f4de;});}})['then'](respondWithFilteredResult(_0x2f1d8f,_0x355762))[_0xc4db('0x2d')](handleError(_0x2f1d8f,null));};exports['removeDispositions']=function(_0x546dc8,_0x4955fd,_0x23dee9){return db[_0xc4db('0x44')][_0xc4db('0x69')]({'where':{'id':_0x546dc8['params']['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x4955fd,null))[_0xc4db('0x3d')](function(_0x477fd5){if(_0x477fd5){return _0x477fd5[_0xc4db('0x70')](_0x546dc8[_0xc4db('0x48')][_0xc4db('0x71')]);}})[_0xc4db('0x3d')](respondWithStatusCode(_0x4955fd,null))[_0xc4db('0x2d')](handleError(_0x4955fd,null));};exports[_0xc4db('0x72')]=function(_0x510987,_0x27c1c2,_0x249123){if(_0x510987['body']['id']){delete _0x510987[_0xc4db('0x61')]['id'];}return db['FaxAccount'][_0xc4db('0x69')]({'where':{'id':_0x510987[_0xc4db('0x5c')]['id']}})['then'](handleEntityNotFound(_0x27c1c2,null))[_0xc4db('0x3d')](function(_0xf1f4f3){if(_0xf1f4f3){_0x510987[_0xc4db('0x61')][_0xc4db('0x6e')]=_0xf1f4f3['id'];return db['CannedAnswer']['create'](_0x510987[_0xc4db('0x61')]);}})['then'](respondWithResult(_0x27c1c2,null))[_0xc4db('0x2d')](handleError(_0x27c1c2,null));};exports[_0xc4db('0x73')]=function(_0x32c44d,_0x28c8fc,_0x18419b){var _0x55cb7d={'raw':![],'where':{}};var _0x451a54={};var _0x187714={'count':0x0,'rows':[]};return db[_0xc4db('0x44')][_0xc4db('0x74')]({'where':{'id':_0x32c44d[_0xc4db('0x5c')]['id']}})['then'](handleEntityNotFound(_0x28c8fc,null))[_0xc4db('0x3d')](function(_0x2a67e1){if(_0x2a67e1){_0x451a54[_0xc4db('0x4b')]=_[_0xc4db('0x5e')](db['CannedAnswer'][_0xc4db('0x45')]);_0x451a54[_0xc4db('0x48')]=_[_0xc4db('0x5e')](_0x32c44d['query']);_0x451a54[_0xc4db('0x49')]=_[_0xc4db('0x4a')](_0x451a54['model'],_0x451a54[_0xc4db('0x48')]);_0x55cb7d[_0xc4db('0x4c')]=_[_0xc4db('0x4a')](_0x451a54['model'],qs[_0xc4db('0x4d')](_0x32c44d[_0xc4db('0x48')][_0xc4db('0x4d')]));_0x55cb7d[_0xc4db('0x4c')]=_0x55cb7d[_0xc4db('0x4c')]['length']?_0x55cb7d[_0xc4db('0x4c')]:_0x451a54[_0xc4db('0x4b')];if(!_0x32c44d[_0xc4db('0x48')]['hasOwnProperty'](_0xc4db('0x50'))){_0x55cb7d[_0xc4db('0x32')]=qs[_0xc4db('0x32')](_0x32c44d[_0xc4db('0x48')][_0xc4db('0x32')]);_0x55cb7d[_0xc4db('0x34')]=qs[_0xc4db('0x34')](_0x32c44d[_0xc4db('0x48')]['offset']);}_0x55cb7d[_0xc4db('0x51')]=qs[_0xc4db('0x52')](_0x32c44d[_0xc4db('0x48')]['sort']);_0x55cb7d[_0xc4db('0x54')]=qs[_0xc4db('0x49')](_['pick'](_0x32c44d[_0xc4db('0x48')],_0x451a54[_0xc4db('0x49')]));_0x55cb7d[_0xc4db('0x54')][_0xc4db('0x6e')]=_0x2a67e1['id'];if(_0x32c44d['query']['filter']){_0x55cb7d['where']=_['merge'](_0x55cb7d[_0xc4db('0x54')],{'$or':_[_0xc4db('0x43')](_0x55cb7d[_0xc4db('0x4c')],function(_0x146418){var _0x3af3eb={};_0x3af3eb[_0x146418]={'$like':'%'+_0x32c44d[_0xc4db('0x48')][_0xc4db('0x56')]+'%'};return _0x3af3eb;})});}_0x55cb7d=_['merge']({},_0x55cb7d,_0x32c44d['options']);return db[_0xc4db('0x75')][_0xc4db('0x33')]({'where':_0x55cb7d[_0xc4db('0x54')]})[_0xc4db('0x3d')](function(_0x2203ef){_0x187714[_0xc4db('0x33')]=_0x2203ef;if(_0x32c44d[_0xc4db('0x48')][_0xc4db('0x58')]){_0x55cb7d[_0xc4db('0x59')]=[{'all':!![]}];}return db['CannedAnswer'][_0xc4db('0x6f')](_0x55cb7d);})[_0xc4db('0x3d')](function(_0x3a6494){_0x187714['rows']=_0x3a6494;return _0x187714;});}})['then'](respondWithFilteredResult(_0x28c8fc,_0x55cb7d))[_0xc4db('0x2d')](handleError(_0x28c8fc,null));};exports['removeAnswers']=function(_0x27d2a2,_0x5eeb29,_0x2c1493){return db[_0xc4db('0x44')][_0xc4db('0x69')]({'where':{'id':_0x27d2a2['params']['id']}})['then'](handleEntityNotFound(_0x5eeb29,null))[_0xc4db('0x3d')](function(_0x192be6){if(_0x192be6){return _0x192be6[_0xc4db('0x76')](_0x27d2a2[_0xc4db('0x48')]['ids']);}})[_0xc4db('0x3d')](respondWithStatusCode(_0x5eeb29,null))[_0xc4db('0x2d')](handleError(_0x5eeb29,null));};exports[_0xc4db('0x77')]=function(_0x27c936,_0x5e3395,_0x33b1cd){return db[_0xc4db('0x78')][_0xc4db('0x69')]({'where':{'id':_0x27c936[_0xc4db('0x5c')]['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x5e3395,null))[_0xc4db('0x3d')](function(_0x4f0a7e){if(_0x4f0a7e){return _0x4f0a7e[_0xc4db('0x77')](_0x27c936[_0xc4db('0x61')]['ids'],_[_0xc4db('0x79')](_0x27c936['body'],[_0xc4db('0x71'),'id'])||{});}})[_0xc4db('0x3d')](respondWithResult(_0x5e3395,null))[_0xc4db('0x2d')](handleError(_0x5e3395,null));};exports[_0xc4db('0x7a')]=function(_0x3e5cd4,_0x32b4a0,_0x1f8651){var _0x215b74={'raw':![],'where':{}};var _0x3bd39c={};var _0x17f3ec={'count':0x0,'rows':[]};return db[_0xc4db('0x44')][_0xc4db('0x74')]({'where':{'id':_0x3e5cd4['params']['id']}})['then'](handleEntityNotFound(_0x32b4a0,null))[_0xc4db('0x3d')](function(_0x1a5a54){if(_0x1a5a54){_0x3bd39c[_0xc4db('0x4b')]=_[_0xc4db('0x5e')](db['FaxInteraction']['rawAttributes']);_0x3bd39c[_0xc4db('0x48')]=_['keys'](_0x3e5cd4['query']);_0x3bd39c[_0xc4db('0x49')]=_[_0xc4db('0x4a')](_0x3bd39c[_0xc4db('0x4b')],_0x3bd39c[_0xc4db('0x48')]);_0x215b74[_0xc4db('0x4c')]=_['intersection'](_0x3bd39c['model'],qs[_0xc4db('0x4d')](_0x3e5cd4[_0xc4db('0x48')]['fields']));_0x215b74[_0xc4db('0x4c')]=_0x215b74[_0xc4db('0x4c')][_0xc4db('0x4e')]?_0x215b74[_0xc4db('0x4c')]:_0x3bd39c[_0xc4db('0x4b')];if(!_0x3e5cd4[_0xc4db('0x48')]['hasOwnProperty'](_0xc4db('0x50'))){_0x215b74['limit']=qs['limit'](_0x3e5cd4[_0xc4db('0x48')][_0xc4db('0x32')]);_0x215b74[_0xc4db('0x34')]=qs[_0xc4db('0x34')](_0x3e5cd4[_0xc4db('0x48')]['offset']);}_0x215b74[_0xc4db('0x51')]=qs[_0xc4db('0x52')](_0x3e5cd4['query'][_0xc4db('0x52')]);_0x215b74[_0xc4db('0x54')]=qs['filters'](_[_0xc4db('0x53')](_0x3e5cd4[_0xc4db('0x48')],_0x3bd39c[_0xc4db('0x49')]));_0x215b74[_0xc4db('0x54')][_0xc4db('0x6e')]=_0x1a5a54['id'];if(_0x3e5cd4['query']['filter']){_0x215b74[_0xc4db('0x54')]=_[_0xc4db('0x57')](_0x215b74['where'],{'$or':_['map'](_0x215b74[_0xc4db('0x4c')],function(_0x21f033){var _0x8ff5d3={};_0x8ff5d3[_0x21f033]={'$like':'%'+_0x3e5cd4[_0xc4db('0x48')][_0xc4db('0x56')]+'%'};return _0x8ff5d3;})});}_0x215b74=_[_0xc4db('0x57')]({},_0x215b74,_0x3e5cd4[_0xc4db('0x5f')]);return db[_0xc4db('0x78')][_0xc4db('0x33')]({'where':_0x215b74[_0xc4db('0x54')]})['then'](function(_0x3580f2){_0x17f3ec[_0xc4db('0x33')]=_0x3580f2;if(_0x3e5cd4['query'][_0xc4db('0x58')]){_0x215b74['include']=[{'model':db['CmContact'],'as':_0xc4db('0x7b'),'required':![]},{'model':db['User'],'as':_0xc4db('0x7c'),'attributes':[_0xc4db('0x40'),_0xc4db('0x7d'),_0xc4db('0x7e')],'required':![]},{'model':db['Tag'],'as':_0xc4db('0x7f'),'attributes':['id','name',_0xc4db('0x80')],'where':_0x3e5cd4[_0xc4db('0x48')][_0xc4db('0x81')]?{'id':_0x3e5cd4[_0xc4db('0x48')][_0xc4db('0x81')]}:undefined,'required':_0x3e5cd4[_0xc4db('0x48')][_0xc4db('0x81')]?!![]:![]}];}return db[_0xc4db('0x78')][_0xc4db('0x6f')](_0x215b74);})[_0xc4db('0x3d')](function(_0x58075c){_0x17f3ec[_0xc4db('0x5a')]=_0x58075c;return _0x17f3ec;});}})['then'](respondWithFilteredResult(_0x32b4a0,_0x215b74))[_0xc4db('0x2d')](handleError(_0x32b4a0,null));};exports['addApplications']=function(_0x4a3d95,_0x130e9a,_0x2008a2){return db[_0xc4db('0x44')]['findOne']({'where':{'id':_0x4a3d95['params']['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x130e9a,null))['then'](function(_0x4cfe02){if(_0x4cfe02){return db[_0xc4db('0x82')][_0xc4db('0x83')](function(_0x4e91c3){return db[_0xc4db('0x84')]['destroy']({'where':{'FaxAccountId':_0x4a3d95[_0xc4db('0x5c')]['id']},'transaction':_0x4e91c3})[_0xc4db('0x3d')](function(_0x2a379){var _0x4ea846=_[_0xc4db('0x43')](_0x4a3d95['body'],function(_0x54641a){_0x54641a['FaxAccountId']=_0x4a3d95[_0xc4db('0x5c')]['id'];return _0x54641a;});return db[_0xc4db('0x84')][_0xc4db('0x85')](_0x4ea846,{'transaction':_0x4e91c3});});})[_0xc4db('0x3d')](function(){return db['FaxApplication'][_0xc4db('0x86')]({'where':{'FaxAccountId':_0x4a3d95[_0xc4db('0x5c')]['id']},'order':_0xc4db('0x87')});});}})[_0xc4db('0x3d')](respondWithResult(_0x130e9a,null))[_0xc4db('0x2d')](handleError(_0x130e9a,null));};exports[_0xc4db('0x88')]=function(_0x148fda,_0x477871,_0x26a0af){var _0x3d1104={};var _0x16594d={};var _0xf69802;var _0x6edb63;return db[_0xc4db('0x44')][_0xc4db('0x74')]({'where':{'id':_0x148fda[_0xc4db('0x5c')]['id']}})['then'](handleEntityNotFound(_0x477871,null))['then'](function(_0x506094){if(_0x506094){_0xf69802=_0x506094;_0x16594d[_0xc4db('0x4b')]=_['keys'](db['FaxApplication'][_0xc4db('0x45')]);_0x16594d['query']=_['keys'](_0x148fda[_0xc4db('0x48')]);_0x16594d[_0xc4db('0x49')]=_[_0xc4db('0x4a')](_0x16594d[_0xc4db('0x4b')],_0x16594d[_0xc4db('0x48')]);_0x3d1104[_0xc4db('0x4c')]=_[_0xc4db('0x4a')](_0x16594d[_0xc4db('0x4b')],qs[_0xc4db('0x4d')](_0x148fda['query'][_0xc4db('0x4d')]));_0x3d1104[_0xc4db('0x4c')]=_0x3d1104[_0xc4db('0x4c')][_0xc4db('0x4e')]?_0x3d1104['attributes']:_0x16594d[_0xc4db('0x4b')];_0x3d1104[_0xc4db('0x51')]=qs['sort'](_0x148fda[_0xc4db('0x48')][_0xc4db('0x52')]);_0x3d1104['where']=qs['filters'](_['pick'](_0x148fda[_0xc4db('0x48')],_0x16594d[_0xc4db('0x49')]));if(_0x148fda[_0xc4db('0x48')][_0xc4db('0x56')]){_0x3d1104[_0xc4db('0x54')]=_[_0xc4db('0x57')](_0x3d1104[_0xc4db('0x54')],{'$or':_['map'](_0x3d1104[_0xc4db('0x4c')],function(_0x482c8c){var _0x249d82={};_0x249d82[_0x482c8c]={'$like':'%'+_0x148fda['query'][_0xc4db('0x56')]+'%'};return _0x249d82;})});}_0x3d1104=_[_0xc4db('0x57')]({},_0x3d1104,_0x148fda[_0xc4db('0x5f')]);return _0xf69802['getApplications'](_0x3d1104);}})[_0xc4db('0x3d')](function(_0x54fe63){if(_0x54fe63){_0x6edb63=_0x54fe63['length'];if(!_0x148fda['query'][_0xc4db('0x4f')](_0xc4db('0x50'))){_0x3d1104[_0xc4db('0x32')]=qs['limit'](_0x148fda[_0xc4db('0x48')]['limit']);_0x3d1104[_0xc4db('0x34')]=qs['offset'](_0x148fda['query'][_0xc4db('0x34')]);}return _0xf69802[_0xc4db('0x88')](_0x3d1104);}})[_0xc4db('0x3d')](function(_0x231b96){if(_0x231b96){return _0x231b96?{'count':_0x6edb63,'rows':_0x231b96}:null;}})[_0xc4db('0x3d')](respondWithResult(_0x477871,null))[_0xc4db('0x2d')](handleError(_0x477871,null));};function Extension(_0x577f86,_0x32e99d,_0x4f9417,_0x129be2){this[_0xc4db('0x89')]=_0xc4db('0x8a');this[_0xc4db('0x8b')]=_0x577f86[_0xc4db('0x8c')];this[_0xc4db('0x8d')]=_0x129be2;this[_0xc4db('0x8e')]=_0xc4db('0x8f');this['description']=_0xc4db('0x90');this['FaxAccountId']=_0x577f86['id'];this['priority']=_0x32e99d;this[_0xc4db('0x91')]=_0x4f9417;}function createExtensionsReciveFax(_0x1da264){var _0x499f86=0x1;var _0x21633b=[];_0x21633b['push'](new Extension(_0x1da264,_0x499f86,'',_0xc4db('0x92')));_0x499f86+=0x1;_0x21633b['push'](new Extension(_0x1da264,_0x499f86,'CDR(type)=inbound-fax','Set'));_0x499f86+=0x1;for(var _0x32c3f0 in _0x1da264){if(_0x1da264[_0xc4db('0x4f')](_0x32c3f0)&&(_0x32c3f0===_0xc4db('0x93')||_0x32c3f0==='localstationid'||_0x32c3f0===_0xc4db('0x94')||_0x32c3f0==='faxdetect'||_0x32c3f0==='headerinfo'||_0x32c3f0===_0xc4db('0x95')||_0x32c3f0===_0xc4db('0x96')||_0x32c3f0==='modem'||_0x32c3f0==='t38timeout')){_0x21633b['push'](new Extension(_0x1da264,_0x499f86,_0xc4db('0x97')+_0x32c3f0+')='+_0x1da264[_0x32c3f0],'Set'));_0x499f86+=0x1;}}_0x21633b[_0xc4db('0x98')](new Extension(_0x1da264,_0x499f86,'6',_0xc4db('0x99')));_0x499f86+=0x1;_0x21633b[_0xc4db('0x98')](new Extension(_0x1da264,_0x499f86,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d',_0xc4db('0x9a')));_0x499f86=0x0;return _0x21633b;}exports[_0xc4db('0x9b')]=function(_0x23336f,_0x54745f,_0x3d9401){var _0xecc876;return db['sequelize']['transaction'](function(_0x5b6a2f){return db[_0xc4db('0x44')]['create'](_0x23336f[_0xc4db('0x61')],{'transaction':_0x5b6a2f})[_0xc4db('0x3d')](function(_0x187122){_0xecc876=_0x187122[_0xc4db('0x3b')]({'plain':!![]});return db['VoiceExtension'][_0xc4db('0x85')](createExtensionsReciveFax(_0xecc876),{'transaction':_0x5b6a2f});});})[_0xc4db('0x3d')](function(){return _0xecc876;})['then'](respondWithResult(_0x54745f,null))['catch'](handleError(_0x54745f,null));};exports['updateAccountApplications']=function(_0x79d71,_0xbe3f9b,_0xdeaf29){var _0x1f1e55;return db[_0xc4db('0x82')][_0xc4db('0x83')](function(_0x242541){return db[_0xc4db('0x44')][_0xc4db('0x39')](_0x79d71[_0xc4db('0x61')],{'where':{'id':_0x79d71[_0xc4db('0x61')]['id']},'transaction':_0x242541})['then'](function(_0x3282b2){return db[_0xc4db('0x9c')][_0xc4db('0x3a')]({'where':{'FaxAccountId':_0x79d71['body']['id']},'transaction':_0x242541})[_0xc4db('0x3d')](function(_0x5c4d2f){return db[_0xc4db('0x9c')][_0xc4db('0x85')](createExtensionsReciveFax(_[_0xc4db('0x79')](_0x79d71['body'],[_0xc4db('0x9d'),_0xc4db('0x47'),_0xc4db('0x9e'),_0xc4db('0x9f'),_0xc4db('0xa0'),_0xc4db('0xa1')])),{'transaction':_0x242541});});});})[_0xc4db('0x3d')](function(){return db[_0xc4db('0x44')][_0xc4db('0xa2')](_0x79d71[_0xc4db('0x61')]['id']);})[_0xc4db('0x3d')](respondWithResult(_0xbe3f9b,null))[_0xc4db('0x2d')](handleError(_0xbe3f9b,null));};exports['getMessages']=function(_0x1cb355,_0x470143,_0x3c8ee5){var _0x37f3c9={'raw':!![],'where':{}};var _0x469570={};var _0x106a46={'count':0x0,'rows':[]};return db[_0xc4db('0x44')][_0xc4db('0x74')]({'where':{'id':_0x1cb355[_0xc4db('0x5c')]['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x470143,null))[_0xc4db('0x3d')](function(_0x3a5915){if(_0x3a5915){_0x469570[_0xc4db('0x4b')]=_['keys'](db[_0xc4db('0xa3')][_0xc4db('0x45')]);_0x469570[_0xc4db('0x48')]=_['keys'](_0x1cb355['query']);_0x469570[_0xc4db('0x49')]=_['intersection'](_0x469570[_0xc4db('0x4b')],_0x469570[_0xc4db('0x48')]);_0x37f3c9[_0xc4db('0x4c')]=_['intersection'](_0x469570[_0xc4db('0x4b')],qs[_0xc4db('0x4d')](_0x1cb355[_0xc4db('0x48')][_0xc4db('0x4d')]));_0x37f3c9[_0xc4db('0x4c')]=_0x37f3c9[_0xc4db('0x4c')][_0xc4db('0x4e')]?_0x37f3c9[_0xc4db('0x4c')]:_0x469570[_0xc4db('0x4b')];if(!_0x1cb355[_0xc4db('0x48')][_0xc4db('0x4f')](_0xc4db('0x50'))){_0x37f3c9[_0xc4db('0x32')]=qs[_0xc4db('0x32')](_0x1cb355[_0xc4db('0x48')][_0xc4db('0x32')]);_0x37f3c9[_0xc4db('0x34')]=qs['offset'](_0x1cb355[_0xc4db('0x48')][_0xc4db('0x34')]);}_0x37f3c9[_0xc4db('0x51')]=qs[_0xc4db('0x52')](_0x1cb355['query'][_0xc4db('0x52')]);_0x37f3c9[_0xc4db('0x54')]=qs[_0xc4db('0x49')](_[_0xc4db('0x53')](_0x1cb355[_0xc4db('0x48')],_0x469570[_0xc4db('0x49')]));_0x37f3c9['where'][_0xc4db('0x6e')]=_0x3a5915['id'];if(_0x1cb355[_0xc4db('0x48')]['filter']){_0x37f3c9[_0xc4db('0x54')]=_['merge'](_0x37f3c9[_0xc4db('0x54')],{'$or':_[_0xc4db('0x43')](_0x37f3c9['attributes'],function(_0x1b2682){var _0x45d9bf={};_0x45d9bf[_0x1b2682]={'$like':'%'+_0x1cb355[_0xc4db('0x48')][_0xc4db('0x56')]+'%'};return _0x45d9bf;})});}if(_0x1cb355[_0xc4db('0x48')][_0xc4db('0xa4')]){var _0x46c08a=_0x1cb355[_0xc4db('0x48')]['$gte'][_0xc4db('0xa5')](',');var _0x10d3cb={};_0x10d3cb[_0x46c08a[0x0]]={'$gte':moment(_0x46c08a[0x1])[_0xc4db('0xa6')](_0xc4db('0xa7'))};_0x37f3c9[_0xc4db('0x54')]=_['merge'](_0x37f3c9['where'],_0x10d3cb);}_0x37f3c9=_['merge']({},_0x37f3c9,_0x1cb355[_0xc4db('0x5f')]);return db[_0xc4db('0xa3')][_0xc4db('0x33')]({'where':_0x37f3c9[_0xc4db('0x54')]})[_0xc4db('0x3d')](function(_0x552f42){_0x106a46['count']=_0x552f42;if(_0x1cb355[_0xc4db('0x48')][_0xc4db('0x58')]){_0x37f3c9[_0xc4db('0x59')]=[{'all':!![]}];}return db[_0xc4db('0xa3')][_0xc4db('0x6f')](_0x37f3c9);})['then'](function(_0x4acfa8){_0x106a46['rows']=_0x4acfa8;return _0x106a46;});}})[_0xc4db('0x3d')](respondWithFilteredResult(_0x470143,_0x37f3c9))[_0xc4db('0x2d')](handleError(_0x470143,null));};exports[_0xc4db('0xa8')]=function(_0x4f9d00,_0x13f9a6,_0x261446){var _0x23a1c0,_0x5d7586={},_0x75dfba;if(_0x4f9d00[_0xc4db('0x61')]['to']){_0x75dfba=_0x4f9d00['body']['to'][0x0];}return db[_0xc4db('0x44')][_0xc4db('0x69')]({'where':{'id':_0x4f9d00[_0xc4db('0x5c')]['id']},'include':[{'model':db[_0xc4db('0xa9')],'as':_0xc4db('0xaa'),'include':[{'model':db[_0xc4db('0xab')],'as':_0xc4db('0xac'),'where':{'fax':_0x75dfba},'limit':0x1,'order':[['updatedAt',_0xc4db('0xad')]]}]}]})[_0xc4db('0x3d')](handleEntityNotFound(_0x13f9a6,null))[_0xc4db('0x3d')](function(_0x1073ff){_0x23a1c0=_0x1073ff;if(_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')]&&_0x4f9d00[_0xc4db('0x61')]['attachments'][_0xc4db('0x4e')]){for(var _0x94506b=0x0;_0x94506b<_0x4f9d00[_0xc4db('0x61')]['attachments']['length'];_0x94506b+=0x1){_0x4f9d00[_0xc4db('0x61')]['attachments'][_0x94506b]={'filename':_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][_0x94506b][_0xc4db('0x40')],'id':_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][_0x94506b]['id'],'path':path[_0xc4db('0xaf')](config[_0xc4db('0xb0')],'server/files/attachments',_0x4f9d00[_0xc4db('0x61')]['attachments'][_0x94506b][_0xc4db('0xb1')])};}}return respondWithRpcPromise(_0xc4db('0xb2'),_0xc4db('0xb2'),{'FaxAccountId':_[_0xc4db('0xb3')](_0x4f9d00['params']['id'])?undefined:_0x4f9d00['params']['id'],'path':_[_0xc4db('0xb3')](_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][0x0][_0xc4db('0x7')])?undefined:_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][0x0]['path'],'fax':_[_0xc4db('0xb3')](_0x4f9d00[_0xc4db('0x61')]['to'][0x0])?undefined:_0x4f9d00[_0xc4db('0x61')]['to'][0x0]},client9002);})[_0xc4db('0x3d')](function(){if(_0x23a1c0){if(_[_0xc4db('0xb3')](_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xb4')])){_0x4f9d00[_0xc4db('0x61')]['from']=util[_0xc4db('0xa6')](_0xc4db('0xb5'),_0x23a1c0[_0xc4db('0x40')],_0x23a1c0[_0xc4db('0xb6')]);}if(_0x23a1c0['List']){if(_0x23a1c0[_0xc4db('0xaa')][_0xc4db('0xac')][_0xc4db('0x4e')]){return _0x23a1c0[_0xc4db('0xaa')][_0xc4db('0xac')][0x0];}else{return db['CmContact']['create'](_[_0xc4db('0x1c')](_0x4f9d00[_0xc4db('0x61')],{'firstName':_0x4f9d00[_0xc4db('0x61')]['to'][0x0],'phone':_0x4f9d00[_0xc4db('0x61')]['to'][0x0],'fax':_0x4f9d00[_0xc4db('0x61')]['to'][0x0],'ListId':_0x23a1c0['ListId']}));}}else{throw new Error(_0xc4db('0xb7'));}}else{throw new Error(_0xc4db('0xb8'));}})[_0xc4db('0x3d')](function(_0x169f79){if(_0x169f79){return db[_0xc4db('0x78')][_0xc4db('0x69')]({'where':{'ContactId':_0x169f79['id'],'closed':![],'FaxAccountId':_0x23a1c0['id']}})[_0xc4db('0x3d')](function(_0x346ae0){if(_0x346ae0){return[_0x346ae0,![]];}return db['FaxInteraction']['create']({'UserId':_0x4f9d00['user']['id'],'ContactId':_0x169f79['id'],'FaxAccountId':_0x23a1c0['id'],'fax':_0x4f9d00['body']['to'][0x0],'firstMsgDirection':_0xc4db('0xb9'),'Messages':[_[_0xc4db('0x57')](_0x4f9d00[_0xc4db('0x61')],{'read':![],'body':_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][0x0][_0xc4db('0xba')],'FaxAccountId':_0x23a1c0['id'],'UserId':_0x4f9d00['user']['id'],'ContactId':_0x169f79['id'],'AttachmentId':_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][0x0]['id']})]},{'include':[{'model':db[_0xc4db('0xa3')],'as':_0xc4db('0xbb')}]})[_0xc4db('0x3d')](function(_0x997709){return[_0x997709,!![]];});});}else{throw new Error(_0xc4db('0xbc'));}})['spread'](function(_0x43a3e7,_0xf6de9b){if(_0xf6de9b){return _0x43a3e7;}return db[_0xc4db('0xa3')][_0xc4db('0x60')]({'direction':_0xc4db('0xb9'),'read':![],'body':_0x4f9d00['body'][_0xc4db('0xae')][0x0][_0xc4db('0xba')],'FaxAccountId':_0x23a1c0['id'],'FaxInteractionId':_0x43a3e7['id'],'UserId':_0x4f9d00[_0xc4db('0x63')]['id'],'ContactId':_0x43a3e7[_0xc4db('0xbd')],'AttachmentId':_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][0x0]['id']})[_0xc4db('0x3d')](function(_0x248956){_0x43a3e7[_0xc4db('0xbe')][_0xc4db('0xbb')]=[];_0x43a3e7[_0xc4db('0xbe')][_0xc4db('0xbb')]['push'](_0x248956[_0xc4db('0xbe')]);return _0x43a3e7;});})[_0xc4db('0x3d')](function(_0x5e2e5d){respondWithRpcPromise(_0xc4db('0xbf'),_0xc4db('0xbf'),{'FaxAccountId':_[_0xc4db('0xb3')](_0x4f9d00['params']['id'])?undefined:_0x4f9d00['params']['id'],'path':_[_0xc4db('0xb3')](_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][0x0][_0xc4db('0x7')])?undefined:_0x4f9d00['body'][_0xc4db('0xae')][0x0][_0xc4db('0x7')],'fax':_['isNil'](_0x4f9d00['body']['to'][0x0])?undefined:_0x4f9d00['body']['to'][0x0],'AttachmentId':_0x4f9d00[_0xc4db('0x61')][_0xc4db('0xae')][0x0]['id']},client9002)[_0xc4db('0x3d')](function(_0x214767){logger[_0xc4db('0x24')](_0xc4db('0xc0'),_0x214767);})[_0xc4db('0x2d')](function(_0x52471c){logger[_0xc4db('0x24')]('SendFaxRpc,\x20%s',_0x52471c);});return _0x5e2e5d;})[_0xc4db('0x3d')](respondWithResult(_0x13f9a6,null))[_0xc4db('0x2d')](handleError(_0x13f9a6,null));};exports['addAgents']=function(_0x5f5a9e,_0x4ff59d,_0x4fa9f6){return db['FaxAccount']['find']({'where':{'id':_0x5f5a9e['params']['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x4ff59d,null))[_0xc4db('0x3d')](function(_0x81eb77){if(_0x81eb77){return _0x81eb77[_0xc4db('0xc1')](_0x5f5a9e[_0xc4db('0x61')]['ids'],_[_0xc4db('0x79')](_0x5f5a9e[_0xc4db('0x61')],[_0xc4db('0x71'),'id'])||{})['spread'](function(_0x193f0f){for(var _0x3e384b=0x0;_0x3e384b<_0x5f5a9e['body'][_0xc4db('0x71')][_0xc4db('0x4e')];_0x3e384b+=0x1){socket[_0xc4db('0xc2')](_0xc4db('0xc3'),{'UserId':Number(_0x5f5a9e[_0xc4db('0x61')][_0xc4db('0x71')][_0x3e384b]),'FaxAccountId':Number(_0x5f5a9e[_0xc4db('0x5c')]['id'])});}return _0x193f0f;});}})[_0xc4db('0x3d')](respondWithResult(_0x4ff59d,null))[_0xc4db('0x2d')](handleError(_0x4ff59d,null));};exports[_0xc4db('0xc4')]=function(_0x430f66,_0x598a2f,_0x2b805e){return db[_0xc4db('0x44')][_0xc4db('0x69')]({'where':{'id':_0x430f66[_0xc4db('0x5c')]['id']}})[_0xc4db('0x3d')](handleEntityNotFound(_0x598a2f,null))[_0xc4db('0x3d')](function(_0x251b86){if(_0x251b86){return _0x251b86['removeAgents'](_0x430f66['query']['ids'])[_0xc4db('0x3d')](function(){if(_[_0xc4db('0xc5')](_0x430f66['query'][_0xc4db('0x71')])){for(var _0x181496=0x0;_0x181496<_0x430f66[_0xc4db('0x48')][_0xc4db('0x71')][_0xc4db('0x4e')];_0x181496+=0x1){socket[_0xc4db('0xc2')](_0xc4db('0xc6'),{'UserId':Number(_0x430f66['query'][_0xc4db('0x71')][_0x181496]),'FaxAccountId':Number(_0x430f66[_0xc4db('0x5c')]['id'])});}}else{socket[_0xc4db('0xc2')](_0xc4db('0xc6'),{'UserId':Number(_0x430f66['query'][_0xc4db('0x71')]),'FaxAccountId':Number(_0x430f66[_0xc4db('0x5c')]['id'])});}});}})[_0xc4db('0x3d')](respondWithStatusCode(_0x598a2f,null))['catch'](handleError(_0x598a2f,null));};exports[_0xc4db('0xc7')]=function(_0x52c0e2,_0x29b469,_0x578822){var _0xf72764={};var _0xdee12a={};var _0x300930;var _0x57ff03;return db[_0xc4db('0x44')]['findOne']({'where':{'id':_0x52c0e2[_0xc4db('0x5c')]['id']}})['then'](handleEntityNotFound(_0x29b469,null))[_0xc4db('0x3d')](function(_0x349758){if(_0x349758){_0x300930=_0x349758;_0xdee12a[_0xc4db('0x4b')]=_[_0xc4db('0x5e')](db['User'][_0xc4db('0x45')]);_0xdee12a[_0xc4db('0x48')]=_[_0xc4db('0x5e')](_0x52c0e2['query']);_0xdee12a[_0xc4db('0x49')]=_[_0xc4db('0x4a')](_0xdee12a[_0xc4db('0x4b')],_0xdee12a['query']);_0xf72764[_0xc4db('0x4c')]=_[_0xc4db('0x4a')](_0xdee12a['model'],qs[_0xc4db('0x4d')](_0x52c0e2[_0xc4db('0x48')]['fields']));_0xf72764['attributes']=_0xf72764[_0xc4db('0x4c')][_0xc4db('0x4e')]?_0xf72764[_0xc4db('0x4c')]:_0xdee12a['model'];_0xf72764['order']=qs['sort'](_0x52c0e2[_0xc4db('0x48')]['sort']);_0xf72764[_0xc4db('0x54')]=qs[_0xc4db('0x49')](_[_0xc4db('0x53')](_0x52c0e2[_0xc4db('0x48')],_0xdee12a['filters']));if(_0x52c0e2['query']['filter']){_0xf72764[_0xc4db('0x54')]=_[_0xc4db('0x57')](_0xf72764[_0xc4db('0x54')],{'$or':_[_0xc4db('0x43')](_0xf72764[_0xc4db('0x4c')],function(_0x56dd69){var _0x275d3d={};_0x275d3d[_0x56dd69]={'$like':'%'+_0x52c0e2[_0xc4db('0x48')][_0xc4db('0x56')]+'%'};return _0x275d3d;})});}_0xf72764=_[_0xc4db('0x57')]({},_0xf72764,_0x52c0e2[_0xc4db('0x5f')]);return _0x300930[_0xc4db('0xc7')](_0xf72764);}})[_0xc4db('0x3d')](function(_0x53bb41){if(_0x53bb41){_0x57ff03=_0x53bb41[_0xc4db('0x4e')];if(!_0x52c0e2[_0xc4db('0x48')][_0xc4db('0x4f')](_0xc4db('0x50'))){_0xf72764['limit']=qs['limit'](_0x52c0e2[_0xc4db('0x48')]['limit']);_0xf72764[_0xc4db('0x34')]=qs['offset'](_0x52c0e2[_0xc4db('0x48')][_0xc4db('0x34')]);}return _0x300930[_0xc4db('0xc7')](_0xf72764);}})['then'](function(_0x2c7201){if(_0x2c7201){return _0x2c7201?{'count':_0x57ff03,'rows':_0x2c7201}:null;}})[_0xc4db('0x3d')](respondWithResult(_0x29b469,null))[_0xc4db('0x2d')](handleError(_0x29b469,null));};
\ No newline at end of file
+var _0x8975=['name','send','index','Pause','mandatoryDispositionPause','FaxAccount','rawAttributes','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','nolimit','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','FaxInteraction','addInteraction','CmContact','Contact','User','Owner','fullname','Tag','Tags','color','tag','addApplications','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','exten','type','description','appdata','Answer','push','Set','ecm','gateway','maxrate','minrate','modem','t38timeout','Wait','ReceiveFax','addAccountApplications','VoiceExtension','omit','tech','key','createdAt','updatedAt','TrunkId','getMessages','FaxMessage','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','Contacts','DESC','attachments','server/files/attachments','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','ContactId','dataValues','SendFax','addAgents','emit','removeAgents','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','get','FaxAccounts','UserProfileResource','end'];(function(_0x31d101,_0x5b13ee){var _0x8a09e2=function(_0x431cae){while(--_0x431cae){_0x31d101['push'](_0x31d101['shift']());}};_0x8a09e2(++_0x5b13ee);}(_0x8975,0x7e));var _0x5897=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x8975[_0x27af45];return _0x18df21;};'use strict';var emlformat=require(_0x5897('0x0'));var rimraf=require(_0x5897('0x1'));var zipdir=require(_0x5897('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5897('0x3'));var Mustache=require(_0x5897('0x4'));var util=require('util');var path=require(_0x5897('0x5'));var sox=require(_0x5897('0x6'));var csv=require(_0x5897('0x7'));var ejs=require(_0x5897('0x8'));var fs=require('fs');var fs_extra=require(_0x5897('0x9'));var _=require(_0x5897('0xa'));var squel=require(_0x5897('0xb'));var crypto=require(_0x5897('0xc'));var jsforce=require(_0x5897('0xd'));var deskjs=require(_0x5897('0xe'));var toCsv=require(_0x5897('0x7'));var querystring=require('querystring');var Papa=require(_0x5897('0xf'));var Redis=require('ioredis');var authService=require(_0x5897('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5897('0x11'));var hardwareService=require(_0x5897('0x12'));var logger=require(_0x5897('0x13'))(_0x5897('0x14'));var utils=require('../../config/utils');var config=require(_0x5897('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x5897('0x16'))['db'];config[_0x5897('0x17')]=_[_0x5897('0x18')](config[_0x5897('0x17')],{'host':_0x5897('0x19'),'port':0x18eb});var socket=require(_0x5897('0x1a'))(new Redis(config['redis']));require(_0x5897('0x1b'))[_0x5897('0x1c')](socket);var jayson=require(_0x5897('0x1d'));var client=jayson[_0x5897('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0x5897('0x1e')][_0x5897('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2472a5,_0x393215,_0x58ab7c,_0x2ea2b6){return new BPromise(function(_0x260523,_0x5cb7c1){var _0x2e203a=_0x2ea2b6||client;return _0x2e203a['request'](_0x2472a5,_0x58ab7c)[_0x5897('0x20')](function(_0x48398a){logger[_0x5897('0x21')]('FaxAccount,\x20%s,\x20%s',_0x393215,_0x5897('0x22'));logger[_0x5897('0x23')](_0x5897('0x24'),_0x393215,_0x5897('0x22'),JSON['stringify'](_0x48398a));if(_0x48398a['error']){if(_0x48398a[_0x5897('0x25')][_0x5897('0x26')]===0x1f4){logger[_0x5897('0x25')](_0x5897('0x27'),_0x393215,_0x48398a[_0x5897('0x25')]['message']);return _0x5cb7c1(_0x48398a[_0x5897('0x25')][_0x5897('0x28')]);}logger[_0x5897('0x25')]('FaxAccount,\x20%s,\x20%s',_0x393215,_0x48398a[_0x5897('0x25')][_0x5897('0x28')]);return _0x260523(_0x48398a[_0x5897('0x25')][_0x5897('0x28')]);}else{logger[_0x5897('0x21')](_0x5897('0x27'),_0x393215,_0x5897('0x22'));_0x260523(_0x48398a[_0x5897('0x29')][_0x5897('0x28')]);}})[_0x5897('0x2a')](function(_0x4ed845){logger[_0x5897('0x25')](_0x5897('0x27'),_0x393215,_0x4ed845);_0x5cb7c1(_0x4ed845);});});}function respondWithStatusCode(_0x4a68c2,_0x5955a0){_0x5955a0=_0x5955a0||0xcc;return function(_0x353604){if(_0x353604){return _0x4a68c2[_0x5897('0x2b')](_0x5955a0);}return _0x4a68c2[_0x5897('0x2c')](_0x5955a0)['end']();};}function respondWithResult(_0x19598d,_0x5f46be){_0x5f46be=_0x5f46be||0xc8;return function(_0x218073){if(_0x218073){return _0x19598d['status'](_0x5f46be)[_0x5897('0x2d')](_0x218073);}};}function respondWithFilteredResult(_0x3d1b15,_0x3c8aa4){return function(_0x468cb2){if(_0x468cb2){var _0x2d5f36=typeof _0x3c8aa4['offset']===_0x5897('0x2e')&&typeof _0x3c8aa4[_0x5897('0x2f')]===_0x5897('0x2e');var _0x55adc3=_0x468cb2[_0x5897('0x30')];var _0x58d7f0=_0x2d5f36?0x0:_0x3c8aa4[_0x5897('0x31')];var _0x2f3147=_0x2d5f36?_0x468cb2[_0x5897('0x30')]:_0x3c8aa4[_0x5897('0x31')]+_0x3c8aa4[_0x5897('0x2f')];var _0x20eb83;if(_0x2f3147>=_0x55adc3){_0x2f3147=_0x55adc3;_0x20eb83=0xc8;}else{_0x20eb83=0xce;}_0x3d1b15[_0x5897('0x2c')](_0x20eb83);return _0x3d1b15[_0x5897('0x32')](_0x5897('0x33'),_0x58d7f0+'-'+_0x2f3147+'/'+_0x55adc3)[_0x5897('0x2d')](_0x468cb2);}return null;};}function patchUpdates(_0x21aa45){return function(_0x36f445){try{jsonpatch[_0x5897('0x34')](_0x36f445,_0x21aa45,!![]);}catch(_0x5651e3){return BPromise['reject'](_0x5651e3);}return _0x36f445[_0x5897('0x35')]();};}function saveUpdates(_0x41ae16,_0x49d8fd){return function(_0x34d0a4){if(_0x34d0a4){return _0x34d0a4['update'](_0x41ae16)[_0x5897('0x20')](function(_0x14f501){return _0x14f501;});}return null;};}function removeEntity(_0xf7a9c2,_0x54bf21){return function(_0x1ea208){if(_0x1ea208){return _0x1ea208[_0x5897('0x36')]()['then'](function(){var _0x2a758e=_0x1ea208[_0x5897('0x37')]({'plain':!![]});var _0xf30387=_0x5897('0x38');return db[_0x5897('0x39')][_0x5897('0x36')]({'where':{'type':_0xf30387,'resourceId':_0x2a758e['id']}})['then'](function(){return _0x1ea208;});})[_0x5897('0x20')](function(){_0xf7a9c2[_0x5897('0x2c')](0xcc)[_0x5897('0x3a')]();});}};}function handleEntityNotFound(_0x4aaa03,_0x479c66){return function(_0x2c27cb){if(!_0x2c27cb){_0x4aaa03[_0x5897('0x2b')](0x194);}return _0x2c27cb;};}function handleError(_0x1ddf2c,_0x2ba4c5){_0x2ba4c5=_0x2ba4c5||0x1f4;return function(_0x54a414){logger['error'](_0x54a414['stack']);if(_0x54a414[_0x5897('0x3b')]){delete _0x54a414[_0x5897('0x3b')];}_0x1ddf2c['status'](_0x2ba4c5)[_0x5897('0x3c')](_0x54a414);};}exports[_0x5897('0x3d')]=function(_0x16a692,_0x2933d7){var _0xd9517a={'include':[{'model':db[_0x5897('0x3e')],'as':_0x5897('0x3f')}]},_0x32a304={},_0x4a4387={'count':0x0,'rows':[]};var _0x274b43=_['map'](db[_0x5897('0x40')][_0x5897('0x41')],function(_0x142233){return{'name':_0x142233['fieldName'],'type':_0x142233['type']['key']};});_0x32a304[_0x5897('0x42')]=_[_0x5897('0x43')](_0x274b43,_0x5897('0x3b'));_0x32a304['query']=_[_0x5897('0x44')](_0x16a692[_0x5897('0x45')]);_0x32a304['filters']=_[_0x5897('0x46')](_0x32a304[_0x5897('0x42')],_0x32a304[_0x5897('0x45')]);_0xd9517a[_0x5897('0x47')]=_['intersection'](_0x32a304[_0x5897('0x42')],qs['fields'](_0x16a692[_0x5897('0x45')][_0x5897('0x48')]));_0xd9517a[_0x5897('0x47')]=_0xd9517a['attributes'][_0x5897('0x49')]?_0xd9517a[_0x5897('0x47')]:_0x32a304[_0x5897('0x42')];if(!_0x16a692[_0x5897('0x45')][_0x5897('0x4a')]('nolimit')){_0xd9517a[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x16a692['query'][_0x5897('0x2f')]);_0xd9517a[_0x5897('0x31')]=qs[_0x5897('0x31')](_0x16a692['query'][_0x5897('0x31')]);}_0xd9517a[_0x5897('0x4b')]=qs[_0x5897('0x4c')](_0x16a692[_0x5897('0x45')]['sort']);_0xd9517a[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x16a692[_0x5897('0x45')],_0x32a304[_0x5897('0x4e')]),_0x274b43);if(_0x16a692[_0x5897('0x45')][_0x5897('0x50')]){_0xd9517a[_0x5897('0x4d')]=_[_0x5897('0x51')](_0xd9517a[_0x5897('0x4d')],{'$or':_['map'](_0x274b43,function(_0x3e845f){if(_0x3e845f['type']!=='VIRTUAL'){var _0x54d652={};_0x54d652[_0x3e845f[_0x5897('0x3b')]]={'$like':'%'+_0x16a692[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x54d652;}})});}_0xd9517a=_[_0x5897('0x51')]({},_0xd9517a,_0x16a692[_0x5897('0x52')]);var _0xf08808={'where':_0xd9517a['where']};return db['FaxAccount'][_0x5897('0x30')](_0xf08808)[_0x5897('0x20')](function(_0x40e0bc){_0x4a4387['count']=_0x40e0bc;if(_0x16a692['query'][_0x5897('0x53')]){_0xd9517a['include']=[{'all':!![]}];}return db[_0x5897('0x40')][_0x5897('0x54')](_0xd9517a);})['then'](function(_0x4fd828){_0x4a4387[_0x5897('0x55')]=_0x4fd828;return _0x4a4387;})[_0x5897('0x20')](respondWithFilteredResult(_0x2933d7,_0xd9517a))[_0x5897('0x2a')](handleError(_0x2933d7,null));};exports[_0x5897('0x56')]=function(_0x5877a2,_0x3676cc){var _0x37ddd8={'raw':![],'where':{'id':_0x5877a2[_0x5897('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0x5897('0x3f')}]},_0x3a6291={};_0x3a6291[_0x5897('0x42')]=_[_0x5897('0x44')](db['FaxAccount'][_0x5897('0x41')]);_0x3a6291[_0x5897('0x45')]=_['keys'](_0x5877a2['query']);_0x3a6291['filters']=_['intersection'](_0x3a6291[_0x5897('0x42')],_0x3a6291[_0x5897('0x45')]);_0x37ddd8[_0x5897('0x47')]=_[_0x5897('0x46')](_0x3a6291[_0x5897('0x42')],qs['fields'](_0x5877a2[_0x5897('0x45')][_0x5897('0x48')]));_0x37ddd8[_0x5897('0x47')]=_0x37ddd8[_0x5897('0x47')][_0x5897('0x49')]?_0x37ddd8['attributes']:_0x3a6291[_0x5897('0x42')];if(_0x5877a2[_0x5897('0x45')][_0x5897('0x53')]){_0x37ddd8[_0x5897('0x58')]=[{'all':!![]}];}_0x37ddd8=_[_0x5897('0x51')]({},_0x37ddd8,_0x5877a2['options']);return db[_0x5897('0x40')][_0x5897('0x59')](_0x37ddd8)['then'](handleEntityNotFound(_0x3676cc,null))[_0x5897('0x20')](respondWithResult(_0x3676cc,null))['catch'](handleError(_0x3676cc,null));};exports[_0x5897('0x5a')]=function(_0x235f85,_0x4cdead){return db[_0x5897('0x40')][_0x5897('0x5a')](_0x235f85[_0x5897('0x5b')],{})[_0x5897('0x20')](function(_0x55cdd3){var _0x409325=_0x235f85[_0x5897('0x5c')][_0x5897('0x37')]({'plain':!![]});if(!_0x409325)throw new Error(_0x5897('0x5d'));if(_0x409325[_0x5897('0x5e')]===_0x5897('0x5c')){var _0x12a565=_0x55cdd3['get']({'plain':!![]});var _0x2a159=_0x5897('0x38');return db['UserProfileSection'][_0x5897('0x59')]({'where':{'name':_0x2a159,'userProfileId':_0x409325[_0x5897('0x5f')]},'raw':!![]})[_0x5897('0x20')](function(_0xe72678){if(_0xe72678&&_0xe72678[_0x5897('0x60')]===0x0){return db[_0x5897('0x39')][_0x5897('0x5a')]({'name':_0x12a565['name'],'resourceId':_0x12a565['id'],'type':_0xe72678[_0x5897('0x3b')],'sectionId':_0xe72678['id']},{})[_0x5897('0x20')](function(){return _0x55cdd3;});}else{return _0x55cdd3;}})[_0x5897('0x2a')](function(_0x57d1bb){logger[_0x5897('0x25')](_0x5897('0x61'),_0x57d1bb);throw _0x57d1bb;});}return _0x55cdd3;})['then'](respondWithResult(_0x4cdead,0xc9))[_0x5897('0x2a')](handleError(_0x4cdead,null));};exports[_0x5897('0x62')]=function(_0x5eb34f,_0x12f3f5){if(_0x5eb34f[_0x5897('0x5b')]['id']){delete _0x5eb34f['body']['id'];}return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x5eb34f[_0x5897('0x57')]['id']},'include':[{'model':db[_0x5897('0x3e')],'as':'mandatoryDispositionPause'}]})[_0x5897('0x20')](handleEntityNotFound(_0x12f3f5,null))[_0x5897('0x20')](saveUpdates(_0x5eb34f[_0x5897('0x5b')],null))[_0x5897('0x20')](respondWithResult(_0x12f3f5,null))[_0x5897('0x2a')](handleError(_0x12f3f5,null));};exports[_0x5897('0x36')]=function(_0x2e99cf,_0x4da556){return db[_0x5897('0x40')]['find']({'where':{'id':_0x2e99cf['params']['id']}})['then'](handleEntityNotFound(_0x4da556,null))[_0x5897('0x20')](removeEntity(_0x4da556,null))[_0x5897('0x2a')](handleError(_0x4da556,null));};exports[_0x5897('0x63')]=function(_0xf5a0eb,_0x1c8096){return db[_0x5897('0x40')][_0x5897('0x63')]()[_0x5897('0x20')](respondWithResult(_0x1c8096,null))[_0x5897('0x2a')](handleError(_0x1c8096,null));};exports[_0x5897('0x64')]=function(_0x4bfae5,_0x5386c,_0x4b8069){if(_0x4bfae5[_0x5897('0x5b')]['id']){delete _0x4bfae5['body']['id'];}return db[_0x5897('0x40')]['find']({'where':{'id':_0x4bfae5[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x5386c,null))[_0x5897('0x20')](function(_0x5ea96f){if(_0x5ea96f){_0x4bfae5[_0x5897('0x5b')][_0x5897('0x65')]=_0x5ea96f['id'];return db[_0x5897('0x66')][_0x5897('0x5a')](_0x4bfae5[_0x5897('0x5b')]);}})[_0x5897('0x20')](respondWithResult(_0x5386c,null))[_0x5897('0x2a')](handleError(_0x5386c,null));};exports[_0x5897('0x67')]=function(_0x5c8d11,_0x581db1,_0x4e3d77){var _0x2ca5b3={'raw':![],'where':{}};var _0x4e7dcc={};var _0x23a932={'count':0x0,'rows':[]};return db[_0x5897('0x40')][_0x5897('0x68')]({'where':{'id':_0x5c8d11[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x581db1,null))[_0x5897('0x20')](function(_0x45ba0f){if(_0x45ba0f){_0x4e7dcc[_0x5897('0x42')]=_[_0x5897('0x44')](db['Disposition'][_0x5897('0x41')]);_0x4e7dcc['query']=_[_0x5897('0x44')](_0x5c8d11['query']);_0x4e7dcc[_0x5897('0x4e')]=_['intersection'](_0x4e7dcc['model'],_0x4e7dcc['query']);_0x2ca5b3['attributes']=_[_0x5897('0x46')](_0x4e7dcc[_0x5897('0x42')],qs[_0x5897('0x48')](_0x5c8d11[_0x5897('0x45')]['fields']));_0x2ca5b3['attributes']=_0x2ca5b3[_0x5897('0x47')][_0x5897('0x49')]?_0x2ca5b3[_0x5897('0x47')]:_0x4e7dcc[_0x5897('0x42')];if(!_0x5c8d11[_0x5897('0x45')][_0x5897('0x4a')](_0x5897('0x69'))){_0x2ca5b3[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x5c8d11['query']['limit']);_0x2ca5b3['offset']=qs[_0x5897('0x31')](_0x5c8d11[_0x5897('0x45')][_0x5897('0x31')]);}_0x2ca5b3[_0x5897('0x4b')]=qs['sort'](_0x5c8d11[_0x5897('0x45')][_0x5897('0x4c')]);_0x2ca5b3[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x5c8d11['query'],_0x4e7dcc[_0x5897('0x4e')]));_0x2ca5b3['where'][_0x5897('0x65')]=_0x45ba0f['id'];if(_0x5c8d11['query']['filter']){_0x2ca5b3['where']=_[_0x5897('0x51')](_0x2ca5b3['where'],{'$or':_[_0x5897('0x43')](_0x2ca5b3[_0x5897('0x47')],function(_0x467f44){var _0x4e0b5c={};_0x4e0b5c[_0x467f44]={'$like':'%'+_0x5c8d11['query'][_0x5897('0x50')]+'%'};return _0x4e0b5c;})});}_0x2ca5b3=_['merge']({},_0x2ca5b3,_0x5c8d11[_0x5897('0x52')]);return db[_0x5897('0x66')][_0x5897('0x30')]({'where':_0x2ca5b3[_0x5897('0x4d')]})[_0x5897('0x20')](function(_0x101396){_0x23a932['count']=_0x101396;if(_0x5c8d11[_0x5897('0x45')][_0x5897('0x53')]){_0x2ca5b3['include']=[{'all':!![]}];}return db[_0x5897('0x66')][_0x5897('0x54')](_0x2ca5b3);})[_0x5897('0x20')](function(_0x5a3c27){_0x23a932[_0x5897('0x55')]=_0x5a3c27;return _0x23a932;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x581db1,_0x2ca5b3))[_0x5897('0x2a')](handleError(_0x581db1,null));};exports['removeDispositions']=function(_0x2ecbae,_0x3d09c6,_0x4198b9){return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x2ecbae[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x3d09c6,null))[_0x5897('0x20')](function(_0x348771){if(_0x348771){return _0x348771['removeDispositions'](_0x2ecbae[_0x5897('0x45')][_0x5897('0x6a')]);}})[_0x5897('0x20')](respondWithStatusCode(_0x3d09c6,null))[_0x5897('0x2a')](handleError(_0x3d09c6,null));};exports[_0x5897('0x6b')]=function(_0x1b91b3,_0x32cd42,_0xa2dc9c){if(_0x1b91b3[_0x5897('0x5b')]['id']){delete _0x1b91b3[_0x5897('0x5b')]['id'];}return db['FaxAccount'][_0x5897('0x59')]({'where':{'id':_0x1b91b3['params']['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x32cd42,null))[_0x5897('0x20')](function(_0x30819f){if(_0x30819f){_0x1b91b3[_0x5897('0x5b')][_0x5897('0x65')]=_0x30819f['id'];return db[_0x5897('0x6c')][_0x5897('0x5a')](_0x1b91b3[_0x5897('0x5b')]);}})[_0x5897('0x20')](respondWithResult(_0x32cd42,null))[_0x5897('0x2a')](handleError(_0x32cd42,null));};exports[_0x5897('0x6d')]=function(_0x43d985,_0x37d248,_0x39fe43){var _0x3f94d3={'raw':![],'where':{}};var _0x1d51d8={};var _0x1bd5ca={'count':0x0,'rows':[]};return db[_0x5897('0x40')]['findOne']({'where':{'id':_0x43d985[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x37d248,null))[_0x5897('0x20')](function(_0x55a6f4){if(_0x55a6f4){_0x1d51d8[_0x5897('0x42')]=_['keys'](db[_0x5897('0x6c')][_0x5897('0x41')]);_0x1d51d8[_0x5897('0x45')]=_['keys'](_0x43d985[_0x5897('0x45')]);_0x1d51d8['filters']=_[_0x5897('0x46')](_0x1d51d8[_0x5897('0x42')],_0x1d51d8[_0x5897('0x45')]);_0x3f94d3[_0x5897('0x47')]=_[_0x5897('0x46')](_0x1d51d8['model'],qs[_0x5897('0x48')](_0x43d985[_0x5897('0x45')]['fields']));_0x3f94d3[_0x5897('0x47')]=_0x3f94d3[_0x5897('0x47')][_0x5897('0x49')]?_0x3f94d3[_0x5897('0x47')]:_0x1d51d8[_0x5897('0x42')];if(!_0x43d985['query']['hasOwnProperty']('nolimit')){_0x3f94d3[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x43d985['query'][_0x5897('0x2f')]);_0x3f94d3[_0x5897('0x31')]=qs[_0x5897('0x31')](_0x43d985[_0x5897('0x45')][_0x5897('0x31')]);}_0x3f94d3[_0x5897('0x4b')]=qs['sort'](_0x43d985[_0x5897('0x45')][_0x5897('0x4c')]);_0x3f94d3['where']=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x43d985['query'],_0x1d51d8[_0x5897('0x4e')]));_0x3f94d3[_0x5897('0x4d')]['FaxAccountId']=_0x55a6f4['id'];if(_0x43d985['query']['filter']){_0x3f94d3['where']=_[_0x5897('0x51')](_0x3f94d3['where'],{'$or':_['map'](_0x3f94d3['attributes'],function(_0x52eea9){var _0x37876f={};_0x37876f[_0x52eea9]={'$like':'%'+_0x43d985['query'][_0x5897('0x50')]+'%'};return _0x37876f;})});}_0x3f94d3=_[_0x5897('0x51')]({},_0x3f94d3,_0x43d985[_0x5897('0x52')]);return db['CannedAnswer'][_0x5897('0x30')]({'where':_0x3f94d3[_0x5897('0x4d')]})['then'](function(_0x5a79ae){_0x1bd5ca['count']=_0x5a79ae;if(_0x43d985[_0x5897('0x45')][_0x5897('0x53')]){_0x3f94d3[_0x5897('0x58')]=[{'all':!![]}];}return db['CannedAnswer'][_0x5897('0x54')](_0x3f94d3);})[_0x5897('0x20')](function(_0x42f635){_0x1bd5ca['rows']=_0x42f635;return _0x1bd5ca;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x37d248,_0x3f94d3))[_0x5897('0x2a')](handleError(_0x37d248,null));};exports[_0x5897('0x6e')]=function(_0x92da7a,_0x2d2f54,_0x26d2d8){return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x92da7a[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x2d2f54,null))['then'](function(_0x1e3172){if(_0x1e3172){return _0x1e3172[_0x5897('0x6e')](_0x92da7a[_0x5897('0x45')]['ids']);}})['then'](respondWithStatusCode(_0x2d2f54,null))[_0x5897('0x2a')](handleError(_0x2d2f54,null));};exports['addInteraction']=function(_0x315415,_0x2aba33,_0x25910f){return db[_0x5897('0x6f')][_0x5897('0x59')]({'where':{'id':_0x315415[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x2aba33,null))[_0x5897('0x20')](function(_0x8d58ee){if(_0x8d58ee){return _0x8d58ee[_0x5897('0x70')](_0x315415[_0x5897('0x5b')][_0x5897('0x6a')],_['omit'](_0x315415[_0x5897('0x5b')],[_0x5897('0x6a'),'id'])||{});}})[_0x5897('0x20')](respondWithResult(_0x2aba33,null))[_0x5897('0x2a')](handleError(_0x2aba33,null));};exports['getInteractions']=function(_0x14646c,_0x2978b7,_0x15952d){var _0x33b0e8={'raw':![],'where':{}};var _0x47bdd2={};var _0x48a55b={'count':0x0,'rows':[]};return db[_0x5897('0x40')][_0x5897('0x68')]({'where':{'id':_0x14646c[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x2978b7,null))[_0x5897('0x20')](function(_0x48cd4a){if(_0x48cd4a){_0x47bdd2['model']=_[_0x5897('0x44')](db[_0x5897('0x6f')][_0x5897('0x41')]);_0x47bdd2[_0x5897('0x45')]=_[_0x5897('0x44')](_0x14646c['query']);_0x47bdd2[_0x5897('0x4e')]=_[_0x5897('0x46')](_0x47bdd2['model'],_0x47bdd2[_0x5897('0x45')]);_0x33b0e8[_0x5897('0x47')]=_[_0x5897('0x46')](_0x47bdd2[_0x5897('0x42')],qs[_0x5897('0x48')](_0x14646c[_0x5897('0x45')][_0x5897('0x48')]));_0x33b0e8[_0x5897('0x47')]=_0x33b0e8[_0x5897('0x47')]['length']?_0x33b0e8['attributes']:_0x47bdd2[_0x5897('0x42')];if(!_0x14646c[_0x5897('0x45')][_0x5897('0x4a')]('nolimit')){_0x33b0e8[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x14646c[_0x5897('0x45')][_0x5897('0x2f')]);_0x33b0e8[_0x5897('0x31')]=qs['offset'](_0x14646c[_0x5897('0x45')]['offset']);}_0x33b0e8[_0x5897('0x4b')]=qs[_0x5897('0x4c')](_0x14646c[_0x5897('0x45')]['sort']);_0x33b0e8['where']=qs['filters'](_[_0x5897('0x4f')](_0x14646c[_0x5897('0x45')],_0x47bdd2[_0x5897('0x4e')]));_0x33b0e8[_0x5897('0x4d')][_0x5897('0x65')]=_0x48cd4a['id'];if(_0x14646c[_0x5897('0x45')][_0x5897('0x50')]){_0x33b0e8['where']=_[_0x5897('0x51')](_0x33b0e8[_0x5897('0x4d')],{'$or':_['map'](_0x33b0e8[_0x5897('0x47')],function(_0x4cb890){var _0x3c5ff5={};_0x3c5ff5[_0x4cb890]={'$like':'%'+_0x14646c[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x3c5ff5;})});}_0x33b0e8=_[_0x5897('0x51')]({},_0x33b0e8,_0x14646c[_0x5897('0x52')]);return db[_0x5897('0x6f')][_0x5897('0x30')]({'where':_0x33b0e8[_0x5897('0x4d')]})[_0x5897('0x20')](function(_0x2f0d26){_0x48a55b[_0x5897('0x30')]=_0x2f0d26;if(_0x14646c['query']['includeAll']){_0x33b0e8[_0x5897('0x58')]=[{'model':db[_0x5897('0x71')],'as':_0x5897('0x72'),'required':![]},{'model':db[_0x5897('0x73')],'as':_0x5897('0x74'),'attributes':[_0x5897('0x3b'),_0x5897('0x75'),'internal'],'required':![]},{'model':db[_0x5897('0x76')],'as':_0x5897('0x77'),'attributes':['id',_0x5897('0x3b'),_0x5897('0x78')],'where':_0x14646c[_0x5897('0x45')][_0x5897('0x79')]?{'id':_0x14646c[_0x5897('0x45')][_0x5897('0x79')]}:undefined,'required':_0x14646c['query'][_0x5897('0x79')]?!![]:![]}];}return db[_0x5897('0x6f')]['findAll'](_0x33b0e8);})[_0x5897('0x20')](function(_0x4022c4){_0x48a55b[_0x5897('0x55')]=_0x4022c4;return _0x48a55b;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x2978b7,_0x33b0e8))[_0x5897('0x2a')](handleError(_0x2978b7,null));};exports[_0x5897('0x7a')]=function(_0x4279d3,_0x178663,_0x27130b){return db['FaxAccount'][_0x5897('0x68')]({'where':{'id':_0x4279d3[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x178663,null))[_0x5897('0x20')](function(_0x186b83){if(_0x186b83){return db[_0x5897('0x7b')][_0x5897('0x7c')](function(_0x325816){return db[_0x5897('0x7d')]['destroy']({'where':{'FaxAccountId':_0x4279d3['params']['id']},'transaction':_0x325816})[_0x5897('0x20')](function(_0x3a7dfb){var _0x5c4775=_['map'](_0x4279d3['body'],function(_0x26b998){_0x26b998['FaxAccountId']=_0x4279d3[_0x5897('0x57')]['id'];return _0x26b998;});return db[_0x5897('0x7d')][_0x5897('0x7e')](_0x5c4775,{'transaction':_0x325816});});})[_0x5897('0x20')](function(){return db[_0x5897('0x7d')][_0x5897('0x7f')]({'where':{'FaxAccountId':_0x4279d3[_0x5897('0x57')]['id']},'order':_0x5897('0x80')});});}})[_0x5897('0x20')](respondWithResult(_0x178663,null))['catch'](handleError(_0x178663,null));};exports[_0x5897('0x81')]=function(_0x15ddef,_0x20e6d6,_0x1b8597){var _0x1f89c5={};var _0x371a9e={};var _0x9ca7a9;var _0x27a4f3;return db[_0x5897('0x40')][_0x5897('0x68')]({'where':{'id':_0x15ddef[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x20e6d6,null))[_0x5897('0x20')](function(_0x28dd92){if(_0x28dd92){_0x9ca7a9=_0x28dd92;_0x371a9e[_0x5897('0x42')]=_[_0x5897('0x44')](db[_0x5897('0x7d')][_0x5897('0x41')]);_0x371a9e[_0x5897('0x45')]=_[_0x5897('0x44')](_0x15ddef[_0x5897('0x45')]);_0x371a9e['filters']=_['intersection'](_0x371a9e[_0x5897('0x42')],_0x371a9e['query']);_0x1f89c5[_0x5897('0x47')]=_['intersection'](_0x371a9e[_0x5897('0x42')],qs[_0x5897('0x48')](_0x15ddef[_0x5897('0x45')][_0x5897('0x48')]));_0x1f89c5[_0x5897('0x47')]=_0x1f89c5[_0x5897('0x47')][_0x5897('0x49')]?_0x1f89c5[_0x5897('0x47')]:_0x371a9e[_0x5897('0x42')];_0x1f89c5[_0x5897('0x4b')]=qs[_0x5897('0x4c')](_0x15ddef[_0x5897('0x45')][_0x5897('0x4c')]);_0x1f89c5[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_['pick'](_0x15ddef[_0x5897('0x45')],_0x371a9e[_0x5897('0x4e')]));if(_0x15ddef['query']['filter']){_0x1f89c5[_0x5897('0x4d')]=_['merge'](_0x1f89c5[_0x5897('0x4d')],{'$or':_[_0x5897('0x43')](_0x1f89c5[_0x5897('0x47')],function(_0xf36efa){var _0x5a16e7={};_0x5a16e7[_0xf36efa]={'$like':'%'+_0x15ddef[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x5a16e7;})});}_0x1f89c5=_['merge']({},_0x1f89c5,_0x15ddef['options']);return _0x9ca7a9['getApplications'](_0x1f89c5);}})[_0x5897('0x20')](function(_0x38f974){if(_0x38f974){_0x27a4f3=_0x38f974[_0x5897('0x49')];if(!_0x15ddef[_0x5897('0x45')]['hasOwnProperty'](_0x5897('0x69'))){_0x1f89c5[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x15ddef[_0x5897('0x45')][_0x5897('0x2f')]);_0x1f89c5['offset']=qs[_0x5897('0x31')](_0x15ddef['query'][_0x5897('0x31')]);}return _0x9ca7a9['getApplications'](_0x1f89c5);}})[_0x5897('0x20')](function(_0x1efb40){if(_0x1efb40){return _0x1efb40?{'count':_0x27a4f3,'rows':_0x1efb40}:null;}})[_0x5897('0x20')](respondWithResult(_0x20e6d6,null))[_0x5897('0x2a')](handleError(_0x20e6d6,null));};function Extension(_0x27640b,_0x1e3ad0,_0x1feeda,_0x268aa3){this[_0x5897('0x82')]=_0x5897('0x83');this[_0x5897('0x84')]=_0x27640b['localstationid'];this['app']=_0x268aa3;this[_0x5897('0x85')]='system';this[_0x5897('0x86')]='Fax\x20Extension';this[_0x5897('0x65')]=_0x27640b['id'];this[_0x5897('0x80')]=_0x1e3ad0;this[_0x5897('0x87')]=_0x1feeda;}function createExtensionsReciveFax(_0x2bed85){var _0x17133d=0x1;var _0x154360=[];_0x154360['push'](new Extension(_0x2bed85,_0x17133d,'',_0x5897('0x88')));_0x17133d+=0x1;_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'CDR(type)=inbound-fax',_0x5897('0x8a')));_0x17133d+=0x1;for(var _0x2f37af in _0x2bed85){if(_0x2bed85[_0x5897('0x4a')](_0x2f37af)&&(_0x2f37af===_0x5897('0x8b')||_0x2f37af==='localstationid'||_0x2f37af===_0x5897('0x8c')||_0x2f37af==='faxdetect'||_0x2f37af==='headerinfo'||_0x2f37af===_0x5897('0x8d')||_0x2f37af===_0x5897('0x8e')||_0x2f37af===_0x5897('0x8f')||_0x2f37af===_0x5897('0x90'))){_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'FAXOPT('+_0x2f37af+')='+_0x2bed85[_0x2f37af],_0x5897('0x8a')));_0x17133d+=0x1;}}_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'6',_0x5897('0x91')));_0x17133d+=0x1;_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d',_0x5897('0x92')));_0x17133d=0x0;return _0x154360;}exports[_0x5897('0x93')]=function(_0x4ca178,_0x2c1d75,_0x295717){var _0x4bef46;return db[_0x5897('0x7b')][_0x5897('0x7c')](function(_0x172318){return db[_0x5897('0x40')]['create'](_0x4ca178[_0x5897('0x5b')],{'transaction':_0x172318})['then'](function(_0xfb3c08){_0x4bef46=_0xfb3c08[_0x5897('0x37')]({'plain':!![]});return db[_0x5897('0x94')][_0x5897('0x7e')](createExtensionsReciveFax(_0x4bef46),{'transaction':_0x172318});});})[_0x5897('0x20')](function(){return _0x4bef46;})[_0x5897('0x20')](respondWithResult(_0x2c1d75,null))['catch'](handleError(_0x2c1d75,null));};exports['updateAccountApplications']=function(_0x33921c,_0x51d1db,_0x3d5d75){var _0x4ebf39;return db[_0x5897('0x7b')]['transaction'](function(_0x3b94a1){return db[_0x5897('0x40')][_0x5897('0x62')](_0x33921c[_0x5897('0x5b')],{'where':{'id':_0x33921c[_0x5897('0x5b')]['id']},'transaction':_0x3b94a1})['then'](function(_0x1f2d51){return db[_0x5897('0x94')][_0x5897('0x36')]({'where':{'FaxAccountId':_0x33921c[_0x5897('0x5b')]['id']},'transaction':_0x3b94a1})['then'](function(_0x28dcbb){return db[_0x5897('0x94')][_0x5897('0x7e')](createExtensionsReciveFax(_[_0x5897('0x95')](_0x33921c[_0x5897('0x5b')],[_0x5897('0x96'),_0x5897('0x97'),_0x5897('0x98'),_0x5897('0x99'),_0x5897('0x9a'),'ListId'])),{'transaction':_0x3b94a1});});});})['then'](function(){return db[_0x5897('0x40')]['findById'](_0x33921c[_0x5897('0x5b')]['id']);})[_0x5897('0x20')](respondWithResult(_0x51d1db,null))[_0x5897('0x2a')](handleError(_0x51d1db,null));};exports[_0x5897('0x9b')]=function(_0x1b26b2,_0x269e3d,_0x557e47){var _0x181cb0={'raw':!![],'where':{}};var _0x2cfa7b={};var _0x149e41={'count':0x0,'rows':[]};return db[_0x5897('0x40')]['findOne']({'where':{'id':_0x1b26b2[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x269e3d,null))[_0x5897('0x20')](function(_0x28bd27){if(_0x28bd27){_0x2cfa7b[_0x5897('0x42')]=_['keys'](db[_0x5897('0x9c')][_0x5897('0x41')]);_0x2cfa7b['query']=_[_0x5897('0x44')](_0x1b26b2[_0x5897('0x45')]);_0x2cfa7b[_0x5897('0x4e')]=_[_0x5897('0x46')](_0x2cfa7b[_0x5897('0x42')],_0x2cfa7b[_0x5897('0x45')]);_0x181cb0['attributes']=_[_0x5897('0x46')](_0x2cfa7b[_0x5897('0x42')],qs['fields'](_0x1b26b2[_0x5897('0x45')]['fields']));_0x181cb0[_0x5897('0x47')]=_0x181cb0[_0x5897('0x47')][_0x5897('0x49')]?_0x181cb0[_0x5897('0x47')]:_0x2cfa7b[_0x5897('0x42')];if(!_0x1b26b2['query'][_0x5897('0x4a')]('nolimit')){_0x181cb0[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x1b26b2[_0x5897('0x45')][_0x5897('0x2f')]);_0x181cb0[_0x5897('0x31')]=qs[_0x5897('0x31')](_0x1b26b2['query']['offset']);}_0x181cb0[_0x5897('0x4b')]=qs['sort'](_0x1b26b2[_0x5897('0x45')][_0x5897('0x4c')]);_0x181cb0[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x1b26b2['query'],_0x2cfa7b[_0x5897('0x4e')]));_0x181cb0[_0x5897('0x4d')]['FaxAccountId']=_0x28bd27['id'];if(_0x1b26b2['query']['filter']){_0x181cb0[_0x5897('0x4d')]=_[_0x5897('0x51')](_0x181cb0[_0x5897('0x4d')],{'$or':_[_0x5897('0x43')](_0x181cb0[_0x5897('0x47')],function(_0x31cb6b){var _0x1e5a2e={};_0x1e5a2e[_0x31cb6b]={'$like':'%'+_0x1b26b2[_0x5897('0x45')]['filter']+'%'};return _0x1e5a2e;})});}if(_0x1b26b2[_0x5897('0x45')]['$gte']){var _0x6ad176=_0x1b26b2[_0x5897('0x45')]['$gte'][_0x5897('0x9d')](',');var _0x477507={};_0x477507[_0x6ad176[0x0]]={'$gte':moment(_0x6ad176[0x1])[_0x5897('0x9e')](_0x5897('0x9f'))};_0x181cb0[_0x5897('0x4d')]=_[_0x5897('0x51')](_0x181cb0['where'],_0x477507);}_0x181cb0=_[_0x5897('0x51')]({},_0x181cb0,_0x1b26b2[_0x5897('0x52')]);return db[_0x5897('0x9c')][_0x5897('0x30')]({'where':_0x181cb0[_0x5897('0x4d')]})[_0x5897('0x20')](function(_0x2d9774){_0x149e41[_0x5897('0x30')]=_0x2d9774;if(_0x1b26b2[_0x5897('0x45')][_0x5897('0x53')]){_0x181cb0[_0x5897('0x58')]=[{'all':!![]}];}return db['FaxMessage'][_0x5897('0x54')](_0x181cb0);})[_0x5897('0x20')](function(_0x45c34a){_0x149e41[_0x5897('0x55')]=_0x45c34a;return _0x149e41;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x269e3d,_0x181cb0))['catch'](handleError(_0x269e3d,null));};exports[_0x5897('0x3c')]=function(_0x3c9319,_0x1d60cf,_0x5c0e25){var _0x23777b,_0x653452={},_0x1b8353;if(_0x3c9319['body']['to']){_0x1b8353=_0x3c9319[_0x5897('0x5b')]['to'][0x0];}return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x3c9319['params']['id']},'include':[{'model':db[_0x5897('0xa0')],'as':'List','include':[{'model':db[_0x5897('0x71')],'as':_0x5897('0xa1'),'where':{'fax':_0x1b8353},'limit':0x1,'order':[[_0x5897('0x99'),_0x5897('0xa2')]]}]}]})[_0x5897('0x20')](handleEntityNotFound(_0x1d60cf,null))[_0x5897('0x20')](function(_0x402333){_0x23777b=_0x402333;if(_0x3c9319['body'][_0x5897('0xa3')]&&_0x3c9319['body'][_0x5897('0xa3')][_0x5897('0x49')]){for(var _0x160591=0x0;_0x160591<_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][_0x5897('0x49')];_0x160591+=0x1){_0x3c9319[_0x5897('0x5b')]['attachments'][_0x160591]={'filename':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][_0x160591][_0x5897('0x3b')],'id':_0x3c9319[_0x5897('0x5b')]['attachments'][_0x160591]['id'],'path':path['join'](config['root'],_0x5897('0xa4'),_0x3c9319['body'][_0x5897('0xa3')][_0x160591]['basename'])};}}return respondWithRpcPromise(_0x5897('0xa5'),_0x5897('0xa5'),{'FaxAccountId':_[_0x5897('0xa6')](_0x3c9319['params']['id'])?undefined:_0x3c9319[_0x5897('0x57')]['id'],'path':_['isNil'](_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0][_0x5897('0x5')])?undefined:_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['path'],'fax':_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x5b')]['to'][0x0])?undefined:_0x3c9319['body']['to'][0x0]},client9002);})['then'](function(){if(_0x23777b){if(_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x5b')][_0x5897('0xa7')])){_0x3c9319['body']['from']=util[_0x5897('0x9e')](_0x5897('0xa8'),_0x23777b[_0x5897('0x3b')],_0x23777b[_0x5897('0xa9')]);}if(_0x23777b[_0x5897('0xaa')]){if(_0x23777b['List'][_0x5897('0xa1')][_0x5897('0x49')]){return _0x23777b[_0x5897('0xaa')][_0x5897('0xa1')][0x0];}else{return db[_0x5897('0x71')][_0x5897('0x5a')](_['defaults'](_0x3c9319['body'],{'firstName':_0x3c9319[_0x5897('0x5b')]['to'][0x0],'phone':_0x3c9319['body']['to'][0x0],'fax':_0x3c9319['body']['to'][0x0],'ListId':_0x23777b[_0x5897('0xab')]}));}}else{throw new Error(_0x5897('0xac'));}}else{throw new Error(_0x5897('0xad'));}})[_0x5897('0x20')](function(_0x3a1c29){if(_0x3a1c29){return db[_0x5897('0x6f')][_0x5897('0x59')]({'where':{'ContactId':_0x3a1c29['id'],'closed':![],'FaxAccountId':_0x23777b['id']}})[_0x5897('0x20')](function(_0x415c65){if(_0x415c65){return[_0x415c65,![]];}return db[_0x5897('0x6f')]['create']({'UserId':_0x3c9319['user']['id'],'ContactId':_0x3a1c29['id'],'FaxAccountId':_0x23777b['id'],'fax':_0x3c9319[_0x5897('0x5b')]['to'][0x0],'firstMsgDirection':_0x5897('0xae'),'Messages':[_[_0x5897('0x51')](_0x3c9319[_0x5897('0x5b')],{'read':![],'body':_0x3c9319[_0x5897('0x5b')]['attachments'][0x0][_0x5897('0xaf')],'FaxAccountId':_0x23777b['id'],'UserId':_0x3c9319['user']['id'],'ContactId':_0x3a1c29['id'],'AttachmentId':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['id']})]},{'include':[{'model':db[_0x5897('0x9c')],'as':_0x5897('0xb0')}]})[_0x5897('0x20')](function(_0x589845){return[_0x589845,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x18340a,_0x3e0320){if(_0x3e0320){return _0x18340a;}return db[_0x5897('0x9c')]['create']({'direction':_0x5897('0xae'),'read':![],'body':_0x3c9319['body'][_0x5897('0xa3')][0x0]['filename'],'FaxAccountId':_0x23777b['id'],'FaxInteractionId':_0x18340a['id'],'UserId':_0x3c9319[_0x5897('0x5c')]['id'],'ContactId':_0x18340a[_0x5897('0xb1')],'AttachmentId':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['id']})[_0x5897('0x20')](function(_0x41aef4){_0x18340a[_0x5897('0xb2')]['Messages']=[];_0x18340a[_0x5897('0xb2')][_0x5897('0xb0')][_0x5897('0x89')](_0x41aef4[_0x5897('0xb2')]);return _0x18340a;});})['then'](function(_0x2e300d){respondWithRpcPromise(_0x5897('0xb3'),_0x5897('0xb3'),{'FaxAccountId':_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x57')]['id'])?undefined:_0x3c9319['params']['id'],'path':_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x5b')]['attachments'][0x0][_0x5897('0x5')])?undefined:_0x3c9319['body'][_0x5897('0xa3')][0x0][_0x5897('0x5')],'fax':_[_0x5897('0xa6')](_0x3c9319['body']['to'][0x0])?undefined:_0x3c9319[_0x5897('0x5b')]['to'][0x0],'AttachmentId':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['id']},client9002)['then'](function(_0x131682){logger[_0x5897('0x21')]('SendFaxRpc,\x20%s',_0x131682);})['catch'](function(_0x48ded5){logger[_0x5897('0x21')]('SendFaxRpc,\x20%s',_0x48ded5);});return _0x2e300d;})['then'](respondWithResult(_0x1d60cf,null))[_0x5897('0x2a')](handleError(_0x1d60cf,null));};exports[_0x5897('0xb4')]=function(_0x455885,_0x222dbe,_0x2bf14e){return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x455885['params']['id']}})['then'](handleEntityNotFound(_0x222dbe,null))[_0x5897('0x20')](function(_0x557233){if(_0x557233){return _0x557233[_0x5897('0xb4')](_0x455885['body']['ids'],_[_0x5897('0x95')](_0x455885[_0x5897('0x5b')],[_0x5897('0x6a'),'id'])||{})['spread'](function(_0x487bbe){for(var _0x531599=0x0;_0x531599<_0x455885['body'][_0x5897('0x6a')]['length'];_0x531599+=0x1){socket[_0x5897('0xb5')]('userFaxAccount:save',{'UserId':Number(_0x455885[_0x5897('0x5b')][_0x5897('0x6a')][_0x531599]),'FaxAccountId':Number(_0x455885[_0x5897('0x57')]['id'])});}return _0x487bbe;});}})['then'](respondWithResult(_0x222dbe,null))[_0x5897('0x2a')](handleError(_0x222dbe,null));};exports[_0x5897('0xb6')]=function(_0x275bd5,_0x3f8bb0,_0x45d953){return db[_0x5897('0x40')]['find']({'where':{'id':_0x275bd5[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x3f8bb0,null))['then'](function(_0x12b66c){if(_0x12b66c){return _0x12b66c[_0x5897('0xb6')](_0x275bd5[_0x5897('0x45')][_0x5897('0x6a')])[_0x5897('0x20')](function(){if(_['isArray'](_0x275bd5['query']['ids'])){for(var _0x3d7d7b=0x0;_0x3d7d7b<_0x275bd5['query']['ids'][_0x5897('0x49')];_0x3d7d7b+=0x1){socket[_0x5897('0xb5')](_0x5897('0xb7'),{'UserId':Number(_0x275bd5[_0x5897('0x45')][_0x5897('0x6a')][_0x3d7d7b]),'FaxAccountId':Number(_0x275bd5['params']['id'])});}}else{socket[_0x5897('0xb5')](_0x5897('0xb7'),{'UserId':Number(_0x275bd5['query']['ids']),'FaxAccountId':Number(_0x275bd5[_0x5897('0x57')]['id'])});}});}})[_0x5897('0x20')](respondWithStatusCode(_0x3f8bb0,null))[_0x5897('0x2a')](handleError(_0x3f8bb0,null));};exports[_0x5897('0xb8')]=function(_0x1ea59d,_0x4c1e92,_0x54d9da){var _0x30f03d={};var _0xe54a60={};var _0x45c66d;var _0x94e78d;return db['FaxAccount']['findOne']({'where':{'id':_0x1ea59d[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x4c1e92,null))[_0x5897('0x20')](function(_0x4ff349){if(_0x4ff349){_0x45c66d=_0x4ff349;_0xe54a60[_0x5897('0x42')]=_[_0x5897('0x44')](db[_0x5897('0x73')][_0x5897('0x41')]);_0xe54a60[_0x5897('0x45')]=_[_0x5897('0x44')](_0x1ea59d['query']);_0xe54a60[_0x5897('0x4e')]=_[_0x5897('0x46')](_0xe54a60['model'],_0xe54a60[_0x5897('0x45')]);_0x30f03d[_0x5897('0x47')]=_[_0x5897('0x46')](_0xe54a60[_0x5897('0x42')],qs[_0x5897('0x48')](_0x1ea59d['query'][_0x5897('0x48')]));_0x30f03d['attributes']=_0x30f03d[_0x5897('0x47')][_0x5897('0x49')]?_0x30f03d[_0x5897('0x47')]:_0xe54a60['model'];_0x30f03d[_0x5897('0x4b')]=qs['sort'](_0x1ea59d[_0x5897('0x45')][_0x5897('0x4c')]);_0x30f03d[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x1ea59d[_0x5897('0x45')],_0xe54a60[_0x5897('0x4e')]));if(_0x1ea59d[_0x5897('0x45')][_0x5897('0x50')]){_0x30f03d[_0x5897('0x4d')]=_['merge'](_0x30f03d[_0x5897('0x4d')],{'$or':_['map'](_0x30f03d[_0x5897('0x47')],function(_0xd39ff2){var _0x550df5={};_0x550df5[_0xd39ff2]={'$like':'%'+_0x1ea59d[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x550df5;})});}_0x30f03d=_[_0x5897('0x51')]({},_0x30f03d,_0x1ea59d[_0x5897('0x52')]);return _0x45c66d[_0x5897('0xb8')](_0x30f03d);}})[_0x5897('0x20')](function(_0x34b632){if(_0x34b632){_0x94e78d=_0x34b632[_0x5897('0x49')];if(!_0x1ea59d[_0x5897('0x45')][_0x5897('0x4a')](_0x5897('0x69'))){_0x30f03d[_0x5897('0x2f')]=qs['limit'](_0x1ea59d[_0x5897('0x45')][_0x5897('0x2f')]);_0x30f03d['offset']=qs[_0x5897('0x31')](_0x1ea59d['query']['offset']);}return _0x45c66d[_0x5897('0xb8')](_0x30f03d);}})[_0x5897('0x20')](function(_0x391038){if(_0x391038){return _0x391038?{'count':_0x94e78d,'rows':_0x391038}:null;}})[_0x5897('0x20')](respondWithResult(_0x4c1e92,null))['catch'](handleError(_0x4c1e92,null));};
\ No newline at end of file
index 2bc8fa3..67440a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22be=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x43f109,_0x2b5531){var _0x3e68ac=function(_0x3626fd){while(--_0x3626fd){_0x43f109['push'](_0x43f109['shift']());}};_0x3e68ac(++_0x2b5531);}(_0x22be,0x15c));var _0xe22b=function(_0x40b3f2,_0x2c4f5f){_0x40b3f2=_0x40b3f2-0x0;var _0x4ce90c=_0x22be[_0x40b3f2];return _0x4ce90c;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0xe22b('0x0'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xe22b('0x1')](0x0);var events={'afterCreate':_0xe22b('0x2'),'afterUpdate':_0xe22b('0x3'),'afterDestroy':_0xe22b('0x4')};function emitEvent(_0x2a7e74){return function(_0x53eedb,_0x3ad50e,_0xf07650){FaxAccountEvents[_0xe22b('0x5')](_0x2a7e74+':'+_0x53eedb['id'],_0x53eedb);FaxAccountEvents[_0xe22b('0x5')](_0x2a7e74,_0x53eedb);_0xf07650(null);};}for(var e in events){if(events[_0xe22b('0x6')](e)){var event=events[e];FaxAccount[_0xe22b('0x7')](e,emitEvent(event));}}module[_0xe22b('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0xc42f=['emit','hasOwnProperty','exports','events','FaxAccount','save','remove'];(function(_0x2ab6c3,_0x5c72ca){var _0x2bcfe1=function(_0x8c57b5){while(--_0x8c57b5){_0x2ab6c3['push'](_0x2ab6c3['shift']());}};_0x2bcfe1(++_0x5c72ca);}(_0xc42f,0x11b));var _0xfc42=function(_0x580b22,_0x13e1f4){_0x580b22=_0x580b22-0x0;var _0x474dfc=_0xc42f[_0x580b22];return _0x474dfc;};'use strict';var EventEmitter=require(_0xfc42('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0xfc42('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfc42('0x2'),'afterUpdate':'update','afterDestroy':_0xfc42('0x3')};function emitEvent(_0x38eb76){return function(_0x194314,_0x56031b,_0x38d853){FaxAccountEvents[_0xfc42('0x4')](_0x38eb76+':'+_0x194314['id'],_0x194314);FaxAccountEvents[_0xfc42('0x4')](_0x38eb76,_0x194314);_0x38d853(null);};}for(var e in events){if(events[_0xfc42('0x5')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0xfc42('0x6')]=FaxAccountEvents;
\ No newline at end of file
index 8abd7f3..626ee3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb7e=['./faxAccount.attributes','exports','define','FaxAccount','fax_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x45a12f,_0x28af8e){var _0xfee28a=function(_0x11df1e){while(--_0x11df1e){_0x45a12f['push'](_0x45a12f['shift']());}};_0xfee28a(++_0x28af8e);}(_0xfb7e,0xc8));var _0xefb7=function(_0x420f39,_0x3f0304){_0x420f39=_0x420f39-0x0;var _0x543fdb=_0xfb7e[_0x420f39];return _0x543fdb;};'use strict';var _=require('lodash');var util=require(_0xefb7('0x0'));var logger=require(_0xefb7('0x1'))(_0xefb7('0x2'));var moment=require(_0xefb7('0x3'));var BPromise=require(_0xefb7('0x4'));var rp=require(_0xefb7('0x5'));var fs=require('fs');var path=require(_0xefb7('0x6'));var rimraf=require('rimraf');var config=require(_0xefb7('0x7'));var attributes=require(_0xefb7('0x8'));module[_0xefb7('0x9')]=function(_0x2de802,_0xf3f690){return _0x2de802[_0xefb7('0xa')](_0xefb7('0xb'),attributes,{'tableName':_0xefb7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdeef=['path','rimraf','../../config/environment','FaxAccount','fax_accounts','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x2deed4,_0x2793e8){var _0xfb91f4=function(_0x31cb98){while(--_0x31cb98){_0x2deed4['push'](_0x2deed4['shift']());}};_0xfb91f4(++_0x2793e8);}(_0xdeef,0x94));var _0xfdee=function(_0x2976de,_0x4c546d){_0x2976de=_0x2976de-0x0;var _0xecbf51=_0xdeef[_0x2976de];return _0xecbf51;};'use strict';var _=require(_0xfdee('0x0'));var util=require(_0xfdee('0x1'));var logger=require(_0xfdee('0x2'))(_0xfdee('0x3'));var moment=require(_0xfdee('0x4'));var BPromise=require('bluebird');var rp=require(_0xfdee('0x5'));var fs=require('fs');var path=require(_0xfdee('0x6'));var rimraf=require(_0xfdee('0x7'));var config=require(_0xfdee('0x8'));var attributes=require('./faxAccount.attributes');module['exports']=function(_0x13f824,_0x57c727){return _0x13f824['define'](_0xfdee('0x9'),attributes,{'tableName':_0xfdee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 85b856f..1e4d5c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757f=['*,*,*,*','Start','startRouting','lodash','moment','bluebird','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','NotifyFaxAccount','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','ListId','body','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','List','CmContact','Contacts','DESC','FaxApplication','account','Applications','list','applications','orderBy','priority','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','get','autoclose','push','unmanaged','created','FaxMessage','ContactId','AttachmentId','interaction','UserId','unshift','agent','name','waitForTheAssignedAgent'];(function(_0x50a004,_0x193d84){var _0x5e9992=function(_0x3c8c37){while(--_0x3c8c37){_0x50a004['push'](_0x50a004['shift']());}};_0x5e9992(++_0x193d84);}(_0x757f,0xaf));var _0xf757=function(_0x263204,_0x19286b){_0x263204=_0x263204-0x0;var _0xed3987=_0x757f[_0x263204];return _0xed3987;};'use strict';var _=require(_0xf757('0x0'));var util=require('util');var moment=require(_0xf757('0x1'));var BPromise=require(_0xf757('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf757('0x3'))('rpc');var config=require(_0xf757('0x4'));var jayson=require(_0xf757('0x5'));var client=jayson['client'][_0xf757('0x6')]({'port':0x232c});config['redis']=_[_0xf757('0x7')](config[_0xf757('0x8')],{'host':_0xf757('0x9'),'port':0x18eb});var socket=require(_0xf757('0xa'))(new Redis(config['redis']));require(_0xf757('0xb'))['register'](socket);function respondWithRpcPromise(_0x34cbc7,_0x40e71f,_0x2823e1){return new BPromise(function(_0x4d1ef7,_0x4907f6){return client['request'](_0x34cbc7,_0x2823e1)[_0xf757('0xc')](function(_0x287852){logger[_0xf757('0xd')](_0xf757('0xe'),_0x40e71f,_0xf757('0xf'));logger['debug'](_0xf757('0x10'),_0x40e71f,_0xf757('0xf'),JSON[_0xf757('0x11')](_0x287852));if(_0x287852[_0xf757('0x12')]){if(_0x287852[_0xf757('0x12')]['code']===0x1f4){logger[_0xf757('0x12')](_0xf757('0xe'),_0x40e71f,_0x287852['error'][_0xf757('0x13')]);return _0x4907f6(_0x287852[_0xf757('0x12')][_0xf757('0x13')]);}logger['error'](_0xf757('0xe'),_0x40e71f,_0x287852[_0xf757('0x12')][_0xf757('0x13')]);return _0x4d1ef7(_0x287852['error'][_0xf757('0x13')]);}else{logger['info'](_0xf757('0xe'),_0x40e71f,_0xf757('0xf'));_0x4d1ef7(_0x287852[_0xf757('0x14')][_0xf757('0x13')]);}})[_0xf757('0x15')](function(_0x1cd7d7){logger[_0xf757('0x12')](_0xf757('0xe'),_0x40e71f,_0x1cd7d7);_0x4907f6(_0x1cd7d7);});});}exports[_0xf757('0x16')]=function(_0xa3a299){var _0x4abd98=this;return new Promise(function(_0x51eb7f,_0xf36bef){return db[_0xf757('0x17')][_0xf757('0x18')]({'raw':_0xa3a299[_0xf757('0x19')]?_0xa3a299[_0xf757('0x19')][_0xf757('0x1a')]===undefined?!![]:![]:!![],'where':_0xa3a299[_0xf757('0x19')]?_0xa3a299[_0xf757('0x19')][_0xf757('0x1b')]||null:null,'attributes':_0xa3a299[_0xf757('0x19')]?_0xa3a299['options'][_0xf757('0x1c')]||null:null,'limit':_0xa3a299[_0xf757('0x19')]?_0xa3a299[_0xf757('0x19')][_0xf757('0x1d')]||null:null,'include':_0xa3a299[_0xf757('0x19')]?_0xa3a299[_0xf757('0x19')][_0xf757('0x1e')]?_[_0xf757('0x1f')](_0xa3a299[_0xf757('0x19')][_0xf757('0x1e')],function(_0x3e1ee1){return{'model':db[_0x3e1ee1[_0xf757('0x20')]],'as':_0x3e1ee1['as'],'attributes':_0x3e1ee1[_0xf757('0x1c')],'include':_0x3e1ee1[_0xf757('0x1e')]?_[_0xf757('0x1f')](_0x3e1ee1[_0xf757('0x1e')],function(_0x5048b3){return{'model':db[_0x5048b3['model']],'as':_0x5048b3['as'],'attributes':_0x5048b3[_0xf757('0x1c')],'include':_0x5048b3[_0xf757('0x1e')]?_[_0xf757('0x1f')](_0x5048b3[_0xf757('0x1e')],function(_0x2268da){return{'model':db[_0x2268da[_0xf757('0x20')]],'as':_0x2268da['as'],'attributes':_0x2268da[_0xf757('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xf757('0xc')](function(_0x55df34){logger[_0xf757('0xd')]('GetFaxAccount',_0xa3a299);logger[_0xf757('0x21')]('GetFaxAccount',_0xa3a299,JSON[_0xf757('0x11')](_0x55df34));_0x51eb7f(_0x55df34);})['catch'](function(_0x36510c){logger[_0xf757('0x12')](_0xf757('0x16'),_0x36510c[_0xf757('0x13')],_0xa3a299);_0xf36bef(_0x4abd98[_0xf757('0x12')](0x1f4,_0x36510c[_0xf757('0x13')]));});});};exports[_0xf757('0x22')]=function(_0x54c028,_0x17d838,_0x18149f){var _0x206446=this;return new Promise(function(_0x4c5c90,_0x1609bb){var _0x34c865={'body':_0x54c028['body'],'channel':'fax'};var _0x4fa4e7=[];var _0x281abd=[];var _0x41a63c={};return db['CmContact'][_0xf757('0x23')]()['then'](function(_0x74d67c){if(!_0x74d67c){throw new db[(_0xf757('0x24'))][(_0xf757('0x25'))](_0xf757('0x26'));}_0x4fa4e7=_[_0xf757('0x27')](_[_0xf757('0x28')](_0x74d67c),[_0xf757('0x29'),_0xf757('0x2a')]);_0x281abd=_['difference'](_[_0xf757('0x28')](_0x74d67c),[_0xf757('0x29'),_0xf757('0x2a'),'CompanyId',_0xf757('0x2b')]);if(_0x54c028['body']['id']){delete _0x54c028[_0xf757('0x2c')]['id'];}if(_[_0xf757('0x2d')](_0x54c028[_0xf757('0x2c')][_0xf757('0x2e')])){throw new db[(_0xf757('0x24'))][(_0xf757('0x25'))]('from\x20is\x20mandatory');}if(_[_0xf757('0x2d')](_0x54c028[_0xf757('0x2c')]['body'])||_0x54c028[_0xf757('0x2c')]['body']===''){throw new db[(_0xf757('0x24'))][(_0xf757('0x25'))](_0xf757('0x2f'));}if(_[_0xf757('0x2d')](_0x54c028['body'][_0xf757('0x30')])){throw new db[(_0xf757('0x24'))][(_0xf757('0x25'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x281abd);}if(!_[_0xf757('0x31')](_0x281abd,_0x54c028[_0xf757('0x2c')][_0xf757('0x30')])){throw new db[(_0xf757('0x24'))][(_0xf757('0x25'))](_0xf757('0x32')+_0x281abd);}_0x41a63c[_0x54c028['body']['mapKey']]=_0x54c028[_0xf757('0x2c')][_0xf757('0x2e')];})[_0xf757('0xc')](function(){return db[_0xf757('0x17')][_0xf757('0x33')]({'where':{'id':_0x54c028['account']['id']},'include':[{'model':db['CmList'],'as':_0xf757('0x34'),'include':[{'model':db[_0xf757('0x35')],'as':_0xf757('0x36'),'where':_0x41a63c,'limit':0x1,'order':[[_0xf757('0x2a'),_0xf757('0x37')]]}]},{'model':db[_0xf757('0x38')],'as':'Applications'}]});})[_0xf757('0xc')](function(_0x3298dc){if(_0x3298dc&&_0x3298dc['List']){var _0xaf8043=_0x3298dc['get']({'plain':!![]});_0x34c865[_0xf757('0x39')]=_0xaf8043;_0x34c865['applications']=_0xaf8043[_0xf757('0x3a')];_0x34c865[_0xf757('0x3b')]=_0xaf8043[_0xf757('0x34')];_0x34c865[_0xf757('0x3c')]=_[_0xf757('0x3d')](_0x34c865[_0xf757('0x3c')],[_0xf757('0x3e')],['asc']);if(_0x34c865[_0xf757('0x39')][_0xf757('0x3a')]){delete _0x34c865[_0xf757('0x39')]['Applications'];}if(_0x34c865[_0xf757('0x39')][_0xf757('0x34')]&&_0x34c865[_0xf757('0x39')]['List'][_0xf757('0x36')][_0xf757('0x3f')]){return _0x34c865[_0xf757('0x39')][_0xf757('0x34')][_0xf757('0x36')][0x0];}var _0x20d93a=_[_0xf757('0x7')](_0x54c028[_0xf757('0x2c')],{'firstName':_0x54c028[_0xf757('0x2c')][_0xf757('0x2e')],'ListId':_0xaf8043[_0xf757('0x2b')]});_0x20d93a[_0x54c028['body'][_0xf757('0x30')]]=_0x54c028['body'][_0xf757('0x2e')];return db[_0xf757('0x35')][_0xf757('0x40')](_0x20d93a,{'fields':_0x4fa4e7,'raw':!![]});}})[_0xf757('0xc')](function(_0x303429){_0x34c865[_0xf757('0x41')]=_0x303429;if(_0x303429){var _0x29b241={'ContactId':_0x303429['id'],'FaxAccountId':_0x54c028[_0xf757('0x39')]['id'],'fax':_0x303429['fax']};return db[_0xf757('0x42')][_0xf757('0x33')]({'where':{'ContactId':_0x303429['id'],'closed':![],'FaxAccountId':_0x54c028[_0xf757('0x39')]['id']}})[_0xf757('0xc')](function(_0x348ab0){if(_0x348ab0){return[_0x348ab0,![]];}return db[_0xf757('0x42')][_0xf757('0x40')](_0x29b241)[_0xf757('0xc')](function(_0x543b6c){return[_0x543b6c,!![]];});});}else{throw new Error(_0xf757('0x43'));}})[_0xf757('0x44')](function(_0x403d05,_0x3bea02){var _0x4d3483=_0x403d05[_0xf757('0x45')]({'plain':!![]});if(_0x3bea02){if(_0x34c865['account'][_0xf757('0x46')]){_0x34c865['applications'][_0xf757('0x47')]({'id':0x0,'priority':_0x34c865[_0xf757('0x3c')][_0xf757('0x3f')]+0x1,'app':'close','appdata':_0xf757('0x48'),'interval':'*,*,*,*'});}_0x4d3483[_0xf757('0x49')]=!![];}else{_0x4d3483[_0xf757('0x49')]=![];}_0x34c865['interaction']=_0x4d3483;return db[_0xf757('0x4a')][_0xf757('0x40')]({'body':_0x54c028['body'][_0xf757('0x2c')],'FaxAccountId':_0x54c028[_0xf757('0x39')]['id'],'FaxInteractionId':_0x403d05['id'],'direction':'in','ContactId':_0x403d05[_0xf757('0x4b')],'AttachmentId':_0x54c028[_0xf757('0x2c')][_0xf757('0x4c')]});})[_0xf757('0xc')](function(_0x279fe7){_0x34c865['message']=_0x279fe7;if(_0x34c865[_0xf757('0x4d')][_0xf757('0x4e')]){return db['User'][_0xf757('0x33')]({'attributes':['id','name'],'where':{'id':_0x34c865[_0xf757('0x4d')]['UserId']}})[_0xf757('0xc')](function(_0x202b07){if(_0x202b07){_0x34c865[_0xf757('0x3c')][_0xf757('0x4f')]({'id':0x0,'priority':0x0,'app':_0xf757('0x50'),'appdata':_0x202b07[_0xf757('0x51')]+','+(_0x34c865[_0xf757('0x39')][_0xf757('0x52')]||0xa),'interval':_0xf757('0x53')});}return respondWithRpcPromise(_0xf757('0x54'),_0xf757('0x55'),_0x34c865);});}return respondWithRpcPromise('Start',_0xf757('0x55'),_0x34c865);})['then'](function(_0x45a36e){_0x4c5c90(_0x45a36e);})[_0xf757('0x15')](function(_0x12e77f){_0x1609bb(_0x206446[_0xf757('0x12')](0x1f4,_0x12e77f['message']));});});};
\ No newline at end of file
+var _0x9531=['waitForTheAssignedAgent','Start','startRouting','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','include','model','map','debug','NotifyFaxAccount','body','fax','then','Sequelize','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','find','account','CmList','List','CmContact','Contacts','DESC','FaxApplication','Applications','applications','length','contact','FaxInteraction','create','Contact\x20not\x20found','spread','get','push','close','unmanaged','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','unshift','agent'];(function(_0x4503df,_0xfec122){var _0x3f1b2b=function(_0x32b1de){while(--_0x32b1de){_0x4503df['push'](_0x4503df['shift']());}};_0x3f1b2b(++_0xfec122);}(_0x9531,0x170));var _0x1953=function(_0x5a5bbc,_0x16ea1e){_0x5a5bbc=_0x5a5bbc-0x0;var _0x415602=_0x9531[_0x5a5bbc];return _0x415602;};'use strict';var _=require(_0x1953('0x0'));var util=require(_0x1953('0x1'));var moment=require(_0x1953('0x2'));var BPromise=require(_0x1953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1953('0x4'));var db=require(_0x1953('0x5'))['db'];var utils=require(_0x1953('0x6'));var logger=require(_0x1953('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x1953('0x8'));var client=jayson[_0x1953('0x9')][_0x1953('0xa')]({'port':0x232c});config[_0x1953('0xb')]=_[_0x1953('0xc')](config[_0x1953('0xb')],{'host':_0x1953('0xd'),'port':0x18eb});var socket=require(_0x1953('0xe'))(new Redis(config[_0x1953('0xb')]));require(_0x1953('0xf'))[_0x1953('0x10')](socket);function respondWithRpcPromise(_0x381fbe,_0x541ac6,_0x37992b){return new BPromise(function(_0x422366,_0x57bd54){return client[_0x1953('0x11')](_0x381fbe,_0x37992b)['then'](function(_0x322525){logger[_0x1953('0x12')](_0x1953('0x13'),_0x541ac6,_0x1953('0x14'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x541ac6,_0x1953('0x14'),JSON[_0x1953('0x15')](_0x322525));if(_0x322525[_0x1953('0x16')]){if(_0x322525[_0x1953('0x16')][_0x1953('0x17')]===0x1f4){logger['error'](_0x1953('0x13'),_0x541ac6,_0x322525[_0x1953('0x16')][_0x1953('0x18')]);return _0x57bd54(_0x322525[_0x1953('0x16')]['message']);}logger[_0x1953('0x16')](_0x1953('0x13'),_0x541ac6,_0x322525[_0x1953('0x16')][_0x1953('0x18')]);return _0x422366(_0x322525[_0x1953('0x16')][_0x1953('0x18')]);}else{logger[_0x1953('0x12')](_0x1953('0x13'),_0x541ac6,_0x1953('0x14'));_0x422366(_0x322525[_0x1953('0x19')][_0x1953('0x18')]);}})['catch'](function(_0x3dc36d){logger['error'](_0x1953('0x13'),_0x541ac6,_0x3dc36d);_0x57bd54(_0x3dc36d);});});}exports[_0x1953('0x1a')]=function(_0x2c22ff){var _0x3725b7=this;return new Promise(function(_0x104c50,_0x5a2a57){return db[_0x1953('0x1b')][_0x1953('0x1c')]({'raw':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x1e')]===undefined?!![]:![]:!![],'where':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x1f')]||null:null,'attributes':_0x2c22ff['options']?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x20')]||null:null,'limit':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')]['limit']||null:null,'include':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x21')]?_['map'](_0x2c22ff['options'][_0x1953('0x21')],function(_0x3cc5e0){return{'model':db[_0x3cc5e0[_0x1953('0x22')]],'as':_0x3cc5e0['as'],'attributes':_0x3cc5e0[_0x1953('0x20')],'include':_0x3cc5e0['include']?_['map'](_0x3cc5e0[_0x1953('0x21')],function(_0x4f7cf6){return{'model':db[_0x4f7cf6[_0x1953('0x22')]],'as':_0x4f7cf6['as'],'attributes':_0x4f7cf6['attributes'],'include':_0x4f7cf6[_0x1953('0x21')]?_[_0x1953('0x23')](_0x4f7cf6[_0x1953('0x21')],function(_0x4024c6){return{'model':db[_0x4024c6['model']],'as':_0x4024c6['as'],'attributes':_0x4024c6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x118ac5){logger[_0x1953('0x12')]('GetFaxAccount',_0x2c22ff);logger[_0x1953('0x24')](_0x1953('0x1a'),_0x2c22ff,JSON['stringify'](_0x118ac5));_0x104c50(_0x118ac5);})['catch'](function(_0x506f45){logger[_0x1953('0x16')](_0x1953('0x1a'),_0x506f45['message'],_0x2c22ff);_0x5a2a57(_0x3725b7['error'](0x1f4,_0x506f45['message']));});});};exports[_0x1953('0x25')]=function(_0x47ed0c,_0x5e7bde,_0x5a7aec){var _0x5a8ac5=this;return new Promise(function(_0x221cb7,_0x224c5f){var _0x565162={'body':_0x47ed0c[_0x1953('0x26')],'channel':_0x1953('0x27')};var _0x2bae6a=[];var _0x4db1ff=[];var _0x549ae7={};return db['CmContact']['describe']()[_0x1953('0x28')](function(_0x2835d8){if(!_0x2835d8){throw new db[(_0x1953('0x29'))]['ValidationError'](_0x1953('0x2a'));}_0x2bae6a=_[_0x1953('0x2b')](_[_0x1953('0x2c')](_0x2835d8),[_0x1953('0x2d'),'updatedAt']);_0x4db1ff=_[_0x1953('0x2b')](_[_0x1953('0x2c')](_0x2835d8),[_0x1953('0x2d'),_0x1953('0x2e'),_0x1953('0x2f'),_0x1953('0x30')]);if(_0x47ed0c[_0x1953('0x26')]['id']){delete _0x47ed0c[_0x1953('0x26')]['id'];}if(_[_0x1953('0x31')](_0x47ed0c[_0x1953('0x26')][_0x1953('0x32')])){throw new db[(_0x1953('0x29'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x1953('0x31')](_0x47ed0c[_0x1953('0x26')][_0x1953('0x26')])||_0x47ed0c[_0x1953('0x26')]['body']===''){throw new db['Sequelize'][(_0x1953('0x33'))](_0x1953('0x34'));}if(_[_0x1953('0x31')](_0x47ed0c['body']['mapKey'])){throw new db[(_0x1953('0x29'))]['ValidationError'](_0x1953('0x35')+_0x4db1ff);}if(!_[_0x1953('0x36')](_0x4db1ff,_0x47ed0c[_0x1953('0x26')]['mapKey'])){throw new db[(_0x1953('0x29'))]['ValidationError'](_0x1953('0x37')+_0x4db1ff);}_0x549ae7[_0x47ed0c['body'][_0x1953('0x38')]]=_0x47ed0c[_0x1953('0x26')][_0x1953('0x32')];})[_0x1953('0x28')](function(){return db[_0x1953('0x1b')][_0x1953('0x39')]({'where':{'id':_0x47ed0c[_0x1953('0x3a')]['id']},'include':[{'model':db[_0x1953('0x3b')],'as':_0x1953('0x3c'),'include':[{'model':db[_0x1953('0x3d')],'as':_0x1953('0x3e'),'where':_0x549ae7,'limit':0x1,'order':[[_0x1953('0x2e'),_0x1953('0x3f')]]}]},{'model':db[_0x1953('0x40')],'as':_0x1953('0x41')}]});})['then'](function(_0x44d7fb){if(_0x44d7fb&&_0x44d7fb[_0x1953('0x3c')]){var _0x1e2ea6=_0x44d7fb['get']({'plain':!![]});_0x565162['account']=_0x1e2ea6;_0x565162[_0x1953('0x42')]=_0x1e2ea6['Applications'];_0x565162['list']=_0x1e2ea6[_0x1953('0x3c')];_0x565162[_0x1953('0x42')]=_['orderBy'](_0x565162[_0x1953('0x42')],['priority'],['asc']);if(_0x565162['account']['Applications']){delete _0x565162[_0x1953('0x3a')][_0x1953('0x41')];}if(_0x565162[_0x1953('0x3a')][_0x1953('0x3c')]&&_0x565162['account'][_0x1953('0x3c')][_0x1953('0x3e')][_0x1953('0x43')]){return _0x565162[_0x1953('0x3a')][_0x1953('0x3c')][_0x1953('0x3e')][0x0];}var _0x10c434=_[_0x1953('0xc')](_0x47ed0c[_0x1953('0x26')],{'firstName':_0x47ed0c[_0x1953('0x26')][_0x1953('0x32')],'ListId':_0x1e2ea6['ListId']});_0x10c434[_0x47ed0c[_0x1953('0x26')][_0x1953('0x38')]]=_0x47ed0c['body'][_0x1953('0x32')];return db[_0x1953('0x3d')]['create'](_0x10c434,{'fields':_0x2bae6a,'raw':!![]});}})[_0x1953('0x28')](function(_0x42f892){_0x565162[_0x1953('0x44')]=_0x42f892;if(_0x42f892){var _0x4a49f5={'ContactId':_0x42f892['id'],'FaxAccountId':_0x47ed0c[_0x1953('0x3a')]['id'],'fax':_0x42f892[_0x1953('0x27')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0x42f892['id'],'closed':![],'FaxAccountId':_0x47ed0c[_0x1953('0x3a')]['id']}})[_0x1953('0x28')](function(_0x57b7af){if(_0x57b7af){return[_0x57b7af,![]];}return db[_0x1953('0x45')][_0x1953('0x46')](_0x4a49f5)['then'](function(_0x4f34b0){return[_0x4f34b0,!![]];});});}else{throw new Error(_0x1953('0x47'));}})[_0x1953('0x48')](function(_0x478089,_0x87cfec){var _0x3e3ab3=_0x478089[_0x1953('0x49')]({'plain':!![]});if(_0x87cfec){if(_0x565162['account']['autoclose']){_0x565162[_0x1953('0x42')][_0x1953('0x4a')]({'id':0x0,'priority':_0x565162['applications'][_0x1953('0x43')]+0x1,'app':_0x1953('0x4b'),'appdata':_0x1953('0x4c'),'interval':'*,*,*,*'});}_0x3e3ab3[_0x1953('0x4d')]=!![];}else{_0x3e3ab3[_0x1953('0x4d')]=![];}_0x565162[_0x1953('0x4e')]=_0x3e3ab3;return db[_0x1953('0x4f')][_0x1953('0x46')]({'body':_0x47ed0c['body'][_0x1953('0x26')],'FaxAccountId':_0x47ed0c[_0x1953('0x3a')]['id'],'FaxInteractionId':_0x478089['id'],'direction':'in','ContactId':_0x478089[_0x1953('0x50')],'AttachmentId':_0x47ed0c[_0x1953('0x26')][_0x1953('0x51')]});})['then'](function(_0x158341){_0x565162[_0x1953('0x18')]=_0x158341;if(_0x565162[_0x1953('0x4e')][_0x1953('0x52')]){return db[_0x1953('0x53')][_0x1953('0x39')]({'attributes':['id',_0x1953('0x54')],'where':{'id':_0x565162['interaction']['UserId']}})[_0x1953('0x28')](function(_0xa89639){if(_0xa89639){_0x565162[_0x1953('0x42')][_0x1953('0x55')]({'id':0x0,'priority':0x0,'app':_0x1953('0x56'),'appdata':_0xa89639[_0x1953('0x54')]+','+(_0x565162[_0x1953('0x3a')][_0x1953('0x57')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x1953('0x58'),_0x1953('0x59'),_0x565162);});}return respondWithRpcPromise(_0x1953('0x58'),'startRouting',_0x565162);})[_0x1953('0x28')](function(_0xb6a9e0){_0x221cb7(_0xb6a9e0);})[_0x1953('0x5a')](function(_0x23a40a){_0x224c5f(_0x5a8ac5[_0x1953('0x16')](0x1f4,_0x23a40a[_0x1953('0x18')]));});});};
\ No newline at end of file
index 2ef9f39..73c2ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x054a=['update','removeListener','register','length','faxAccount:','save','remove'];(function(_0x17a73d,_0xf85b44){var _0x476ff2=function(_0x311773){while(--_0x311773){_0x17a73d['push'](_0x17a73d['shift']());}};_0x476ff2(++_0xf85b44);}(_0x054a,0x7c));var _0xa054=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x054a[_0x14add3];return _0x4a174f;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0xa054('0x0'),_0xa054('0x1'),_0xa054('0x2')];function createListener(_0x357b4c,_0x7e9a1e){return function(_0x2d90ea){_0x7e9a1e['emit'](_0x357b4c,_0x2d90ea);};}function removeListener(_0x699fa4,_0x1484d2){return function(){FaxAccountEvents[_0xa054('0x3')](_0x699fa4,_0x1484d2);};}exports[_0xa054('0x4')]=function(_0x42ae94){for(var _0xb4d677=0x0,_0x13b211=events[_0xa054('0x5')];_0xb4d677<_0x13b211;_0xb4d677++){var _0x33ba2d=events[_0xb4d677];var _0x48de56=createListener(_0xa054('0x6')+_0x33ba2d,_0x42ae94);FaxAccountEvents['on'](_0x33ba2d,_0x48de56);}};
\ No newline at end of file
+var _0xd520=['register','length','faxAccount:','save','remove','update','emit'];(function(_0x1c2846,_0x9a2564){var _0x3a6887=function(_0x2741cd){while(--_0x2741cd){_0x1c2846['push'](_0x1c2846['shift']());}};_0x3a6887(++_0x9a2564);}(_0xd520,0x8f));var _0x0d52=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xd520[_0x30ae5e];return _0x1f2e93;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0x0d52('0x0'),_0x0d52('0x1'),_0x0d52('0x2')];function createListener(_0x301410,_0xd0a1e6){return function(_0x4911e5){_0xd0a1e6[_0x0d52('0x3')](_0x301410,_0x4911e5);};}function removeListener(_0x2b1351,_0x193146){return function(){FaxAccountEvents['removeListener'](_0x2b1351,_0x193146);};}exports[_0x0d52('0x4')]=function(_0x5ab8fb){for(var _0x332988=0x0,_0x5d6deb=events[_0x0d52('0x5')];_0x332988<_0x5d6deb;_0x332988++){var _0x5bdb17=events[_0x332988];var _0x5e2d13=createListener(_0x0d52('0x6')+_0x5bdb17,_0x5ab8fb);FaxAccountEvents['on'](_0x5bdb17,_0x5e2d13);}};
\ No newline at end of file
index e2091d0..d2566e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x30cf9e,_0xf2c7fc){var _0x23539e=function(_0x45e7a2){while(--_0x45e7a2){_0x30cf9e['push'](_0x30cf9e['shift']());}};_0x23539e(++_0xf2c7fc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x26c106,_0x1b1567){var _0x4b4352=function(_0x4ae232){while(--_0x4ae232){_0x26c106['push'](_0x26c106['shift']());}};_0x4b4352(++_0x1b1567);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index c2aae4d..fe14459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f62=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0x2f62,0x182));var _0x22f6=function(_0x40c650,_0x5d4ed1){_0x40c650=_0x40c650-0x0;var _0x19d601=_0x2f62[_0x40c650];return _0x19d601;};'use strict';var Sequelize=require(_0x22f6('0x0'));module[_0x22f6('0x1')]={'priority':{'type':Sequelize[_0x22f6('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x22f6('0x3')],'allowNull':![],'defaultValue':_0x22f6('0x4')},'appdata':{'type':Sequelize[_0x22f6('0x5')]()},'description':{'type':Sequelize[_0x22f6('0x3')]},'interval':{'type':Sequelize[_0x22f6('0x3')],'defaultValue':_0x22f6('0x6')}};
\ No newline at end of file
+var _0x6569=['STRING','*,*,*,*','exports','INTEGER','noop'];(function(_0x339129,_0x86dcc6){var _0x1570df=function(_0x3b537e){while(--_0x3b537e){_0x339129['push'](_0x339129['shift']());}};_0x1570df(++_0x86dcc6);}(_0x6569,0x129));var _0x9656=function(_0x3f493e,_0x35d968){_0x3f493e=_0x3f493e-0x0;var _0x56dc64=_0x6569[_0x3f493e];return _0x56dc64;};'use strict';var Sequelize=require('sequelize');module[_0x9656('0x0')]={'priority':{'type':Sequelize[_0x9656('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9656('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9656('0x3')]},'interval':{'type':Sequelize[_0x9656('0x3')],'defaultValue':_0x9656('0x4')}};
\ No newline at end of file
index e63192c..ac560c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5f2=['intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','length','find','catch','create','body','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','FaxApplication','rawAttributes','type','key','keys','query','filters'];(function(_0xe23811,_0x43e709){var _0x23c5f1=function(_0x15a0c6){while(--_0x15a0c6){_0xe23811['push'](_0xe23811['shift']());}};_0x23c5f1(++_0x43e709);}(_0xd5f2,0x101));var _0x2d5f=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0xd5f2[_0x2e4e19];return _0x9ba20b;};'use strict';var emlformat=require(_0x2d5f('0x0'));var rimraf=require(_0x2d5f('0x1'));var zipdir=require(_0x2d5f('0x2'));var jsonpatch=require(_0x2d5f('0x3'));var rp=require(_0x2d5f('0x4'));var moment=require('moment');var BPromise=require(_0x2d5f('0x5'));var Mustache=require(_0x2d5f('0x6'));var util=require(_0x2d5f('0x7'));var path=require(_0x2d5f('0x8'));var sox=require(_0x2d5f('0x9'));var csv=require(_0x2d5f('0xa'));var ejs=require(_0x2d5f('0xb'));var fs=require('fs');var fs_extra=require(_0x2d5f('0xc'));var _=require('lodash');var squel=require(_0x2d5f('0xd'));var crypto=require(_0x2d5f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2d5f('0xf'));var toCsv=require(_0x2d5f('0xa'));var querystring=require(_0x2d5f('0x10'));var Papa=require(_0x2d5f('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2d5f('0x12'));var as=require(_0x2d5f('0x13'));var hardwareService=require(_0x2d5f('0x14'));var logger=require(_0x2d5f('0x15'))(_0x2d5f('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2d5f('0x17'));var db=require(_0x2d5f('0x18'))['db'];function respondWithStatusCode(_0x2db99c,_0x1828a6){_0x1828a6=_0x1828a6||0xcc;return function(_0x3a67bc){if(_0x3a67bc){return _0x2db99c[_0x2d5f('0x19')](_0x1828a6);}return _0x2db99c[_0x2d5f('0x1a')](_0x1828a6)[_0x2d5f('0x1b')]();};}function respondWithResult(_0x1c2ee2,_0x513145){_0x513145=_0x513145||0xc8;return function(_0x4dc298){if(_0x4dc298){return _0x1c2ee2[_0x2d5f('0x1a')](_0x513145)[_0x2d5f('0x1c')](_0x4dc298);}};}function respondWithFilteredResult(_0x481095,_0x3b34ef){return function(_0x2a5711){if(_0x2a5711){var _0x595b9e=typeof _0x3b34ef[_0x2d5f('0x1d')]==='undefined'&&typeof _0x3b34ef['limit']===_0x2d5f('0x1e');var _0x2d21d1=_0x2a5711[_0x2d5f('0x1f')];var _0x4bbe79=_0x595b9e?0x0:_0x3b34ef[_0x2d5f('0x1d')];var _0x44b64b=_0x595b9e?_0x2a5711[_0x2d5f('0x1f')]:_0x3b34ef[_0x2d5f('0x1d')]+_0x3b34ef['limit'];var _0x1a12d2;if(_0x44b64b>=_0x2d21d1){_0x44b64b=_0x2d21d1;_0x1a12d2=0xc8;}else{_0x1a12d2=0xce;}_0x481095[_0x2d5f('0x1a')](_0x1a12d2);return _0x481095[_0x2d5f('0x20')](_0x2d5f('0x21'),_0x4bbe79+'-'+_0x44b64b+'/'+_0x2d21d1)['json'](_0x2a5711);}return null;};}function patchUpdates(_0x3dda7c){return function(_0x21b073){try{jsonpatch[_0x2d5f('0x22')](_0x21b073,_0x3dda7c,!![]);}catch(_0x41171b){return BPromise['reject'](_0x41171b);}return _0x21b073[_0x2d5f('0x23')]();};}function saveUpdates(_0x4069f1,_0x1bca8d){return function(_0x4f2e84){if(_0x4f2e84){return _0x4f2e84['update'](_0x4069f1)[_0x2d5f('0x24')](function(_0x933c7e){return _0x933c7e;});}return null;};}function removeEntity(_0x515773,_0x5da672){return function(_0x398564){if(_0x398564){return _0x398564[_0x2d5f('0x25')]()[_0x2d5f('0x24')](function(){_0x515773[_0x2d5f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b6dc7,_0x5caec8){return function(_0x3c1cfd){if(!_0x3c1cfd){_0x5b6dc7['sendStatus'](0x194);}return _0x3c1cfd;};}function handleError(_0x27942d,_0x1591d7){_0x1591d7=_0x1591d7||0x1f4;return function(_0x2afe23){logger[_0x2d5f('0x26')](_0x2afe23[_0x2d5f('0x27')]);if(_0x2afe23[_0x2d5f('0x28')]){delete _0x2afe23[_0x2d5f('0x28')];}_0x27942d['status'](_0x1591d7)[_0x2d5f('0x29')](_0x2afe23);};}exports[_0x2d5f('0x2a')]=function(_0xdb22df,_0x516e71){var _0x1a1a18={},_0x5bfae6={},_0x5a9690={'count':0x0,'rows':[]};var _0x2efacc=_[_0x2d5f('0x2b')](db[_0x2d5f('0x2c')][_0x2d5f('0x2d')],function(_0x2b9ccc){return{'name':_0x2b9ccc['fieldName'],'type':_0x2b9ccc[_0x2d5f('0x2e')][_0x2d5f('0x2f')]};});_0x5bfae6['model']=_['map'](_0x2efacc,'name');_0x5bfae6['query']=_[_0x2d5f('0x30')](_0xdb22df[_0x2d5f('0x31')]);_0x5bfae6[_0x2d5f('0x32')]=_[_0x2d5f('0x33')](_0x5bfae6[_0x2d5f('0x34')],_0x5bfae6[_0x2d5f('0x31')]);_0x1a1a18[_0x2d5f('0x35')]=_[_0x2d5f('0x33')](_0x5bfae6[_0x2d5f('0x34')],qs[_0x2d5f('0x36')](_0xdb22df[_0x2d5f('0x31')][_0x2d5f('0x36')]));_0x1a1a18['attributes']=_0x1a1a18[_0x2d5f('0x35')]['length']?_0x1a1a18[_0x2d5f('0x35')]:_0x5bfae6[_0x2d5f('0x34')];if(!_0xdb22df['query'][_0x2d5f('0x37')](_0x2d5f('0x38'))){_0x1a1a18['limit']=qs['limit'](_0xdb22df[_0x2d5f('0x31')][_0x2d5f('0x39')]);_0x1a1a18[_0x2d5f('0x1d')]=qs[_0x2d5f('0x1d')](_0xdb22df['query']['offset']);}_0x1a1a18[_0x2d5f('0x3a')]=qs[_0x2d5f('0x3b')](_0xdb22df[_0x2d5f('0x31')][_0x2d5f('0x3b')]);_0x1a1a18[_0x2d5f('0x3c')]=qs['filters'](_[_0x2d5f('0x3d')](_0xdb22df[_0x2d5f('0x31')],_0x5bfae6[_0x2d5f('0x32')]),_0x2efacc);if(_0xdb22df['query'][_0x2d5f('0x3e')]){_0x1a1a18[_0x2d5f('0x3c')]=_[_0x2d5f('0x3f')](_0x1a1a18[_0x2d5f('0x3c')],{'$or':_[_0x2d5f('0x2b')](_0x2efacc,function(_0x30093b){if(_0x30093b[_0x2d5f('0x2e')]!==_0x2d5f('0x40')){var _0x387b57={};_0x387b57[_0x30093b[_0x2d5f('0x28')]]={'$like':'%'+_0xdb22df[_0x2d5f('0x31')]['filter']+'%'};return _0x387b57;}})});}_0x1a1a18=_['merge']({},_0x1a1a18,_0xdb22df[_0x2d5f('0x41')]);var _0x46dfcd={'where':_0x1a1a18[_0x2d5f('0x3c')]};return db[_0x2d5f('0x2c')]['count'](_0x46dfcd)[_0x2d5f('0x24')](function(_0x3c0901){_0x5a9690['count']=_0x3c0901;if(_0xdb22df['query'][_0x2d5f('0x42')]){_0x1a1a18[_0x2d5f('0x43')]=[{'all':!![]}];}return db[_0x2d5f('0x2c')][_0x2d5f('0x44')](_0x1a1a18);})['then'](function(_0x3bec5a){_0x5a9690[_0x2d5f('0x45')]=_0x3bec5a;return _0x5a9690;})[_0x2d5f('0x24')](respondWithFilteredResult(_0x516e71,_0x1a1a18))['catch'](handleError(_0x516e71,null));};exports['show']=function(_0x4ff0d6,_0x13208f){var _0x4bffdf={'raw':!![],'where':{'id':_0x4ff0d6['params']['id']}},_0x1c6cb7={};_0x1c6cb7['model']=_[_0x2d5f('0x30')](db[_0x2d5f('0x2c')][_0x2d5f('0x2d')]);_0x1c6cb7[_0x2d5f('0x31')]=_[_0x2d5f('0x30')](_0x4ff0d6[_0x2d5f('0x31')]);_0x1c6cb7[_0x2d5f('0x32')]=_[_0x2d5f('0x33')](_0x1c6cb7[_0x2d5f('0x34')],_0x1c6cb7[_0x2d5f('0x31')]);_0x4bffdf[_0x2d5f('0x35')]=_['intersection'](_0x1c6cb7['model'],qs[_0x2d5f('0x36')](_0x4ff0d6[_0x2d5f('0x31')][_0x2d5f('0x36')]));_0x4bffdf[_0x2d5f('0x35')]=_0x4bffdf['attributes'][_0x2d5f('0x46')]?_0x4bffdf[_0x2d5f('0x35')]:_0x1c6cb7['model'];if(_0x4ff0d6[_0x2d5f('0x31')][_0x2d5f('0x42')]){_0x4bffdf[_0x2d5f('0x43')]=[{'all':!![]}];}_0x4bffdf=_[_0x2d5f('0x3f')]({},_0x4bffdf,_0x4ff0d6['options']);return db[_0x2d5f('0x2c')][_0x2d5f('0x47')](_0x4bffdf)[_0x2d5f('0x24')](handleEntityNotFound(_0x13208f,null))['then'](respondWithResult(_0x13208f,null))[_0x2d5f('0x48')](handleError(_0x13208f,null));};exports[_0x2d5f('0x49')]=function(_0x168fa0,_0x2c95e0){return db[_0x2d5f('0x2c')]['create'](_0x168fa0[_0x2d5f('0x4a')],{})[_0x2d5f('0x24')](respondWithResult(_0x2c95e0,0xc9))[_0x2d5f('0x48')](handleError(_0x2c95e0,null));};exports[_0x2d5f('0x4b')]=function(_0x31c58c,_0x4be4be){if(_0x31c58c[_0x2d5f('0x4a')]['id']){delete _0x31c58c[_0x2d5f('0x4a')]['id'];}return db[_0x2d5f('0x2c')]['find']({'where':{'id':_0x31c58c[_0x2d5f('0x4c')]['id']}})[_0x2d5f('0x24')](handleEntityNotFound(_0x4be4be,null))['then'](saveUpdates(_0x31c58c[_0x2d5f('0x4a')],null))[_0x2d5f('0x24')](respondWithResult(_0x4be4be,null))[_0x2d5f('0x48')](handleError(_0x4be4be,null));};exports[_0x2d5f('0x25')]=function(_0x451fb6,_0x51263f){return db[_0x2d5f('0x2c')]['find']({'where':{'id':_0x451fb6[_0x2d5f('0x4c')]['id']}})[_0x2d5f('0x24')](handleEntityNotFound(_0x51263f,null))[_0x2d5f('0x24')](removeEntity(_0x51263f,null))[_0x2d5f('0x48')](handleError(_0x51263f,null));};
\ No newline at end of file
+var _0x6ac6=['rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','set','json','apply','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','catch','show','find','create','body','params','eml-format'];(function(_0x25e882,_0x2f3f20){var _0x16f88c=function(_0x429bbc){while(--_0x429bbc){_0x25e882['push'](_0x25e882['shift']());}};_0x16f88c(++_0x2f3f20);}(_0x6ac6,0x17b));var _0x66ac=function(_0x230816,_0x46f456){_0x230816=_0x230816-0x0;var _0x284330=_0x6ac6[_0x230816];return _0x284330;};'use strict';var emlformat=require(_0x66ac('0x0'));var rimraf=require(_0x66ac('0x1'));var zipdir=require(_0x66ac('0x2'));var jsonpatch=require(_0x66ac('0x3'));var rp=require('request-promise');var moment=require(_0x66ac('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x66ac('0x5'));var util=require(_0x66ac('0x6'));var path=require(_0x66ac('0x7'));var sox=require(_0x66ac('0x8'));var csv=require('to-csv');var ejs=require(_0x66ac('0x9'));var fs=require('fs');var fs_extra=require(_0x66ac('0xa'));var _=require(_0x66ac('0xb'));var squel=require(_0x66ac('0xc'));var crypto=require('crypto');var jsforce=require(_0x66ac('0xd'));var deskjs=require(_0x66ac('0xe'));var toCsv=require(_0x66ac('0xf'));var querystring=require('querystring');var Papa=require(_0x66ac('0x10'));var Redis=require(_0x66ac('0x11'));var authService=require(_0x66ac('0x12'));var qs=require(_0x66ac('0x13'));var as=require(_0x66ac('0x14'));var hardwareService=require(_0x66ac('0x15'));var logger=require('../../config/logger')(_0x66ac('0x16'));var utils=require(_0x66ac('0x17'));var config=require(_0x66ac('0x18'));var licenseUtil=require(_0x66ac('0x19'));var db=require(_0x66ac('0x1a'))['db'];function respondWithStatusCode(_0x50c666,_0x449df0){_0x449df0=_0x449df0||0xcc;return function(_0x352050){if(_0x352050){return _0x50c666['sendStatus'](_0x449df0);}return _0x50c666[_0x66ac('0x1b')](_0x449df0)['end']();};}function respondWithResult(_0xe4ae26,_0x341099){_0x341099=_0x341099||0xc8;return function(_0x525a1e){if(_0x525a1e){return _0xe4ae26[_0x66ac('0x1b')](_0x341099)['json'](_0x525a1e);}};}function respondWithFilteredResult(_0x1a2d6a,_0x1e41bb){return function(_0x577ef8){if(_0x577ef8){var _0x517ed7=typeof _0x1e41bb[_0x66ac('0x1c')]===_0x66ac('0x1d')&&typeof _0x1e41bb['limit']===_0x66ac('0x1d');var _0x42b376=_0x577ef8[_0x66ac('0x1e')];var _0xee2edf=_0x517ed7?0x0:_0x1e41bb[_0x66ac('0x1c')];var _0x49ba6a=_0x517ed7?_0x577ef8[_0x66ac('0x1e')]:_0x1e41bb[_0x66ac('0x1c')]+_0x1e41bb[_0x66ac('0x1f')];var _0x751105;if(_0x49ba6a>=_0x42b376){_0x49ba6a=_0x42b376;_0x751105=0xc8;}else{_0x751105=0xce;}_0x1a2d6a[_0x66ac('0x1b')](_0x751105);return _0x1a2d6a[_0x66ac('0x20')]('Content-Range',_0xee2edf+'-'+_0x49ba6a+'/'+_0x42b376)[_0x66ac('0x21')](_0x577ef8);}return null;};}function patchUpdates(_0x3445f2){return function(_0x39a229){try{jsonpatch[_0x66ac('0x22')](_0x39a229,_0x3445f2,!![]);}catch(_0x321049){return BPromise['reject'](_0x321049);}return _0x39a229['save']();};}function saveUpdates(_0x4dee04,_0x586b46){return function(_0xc35574){if(_0xc35574){return _0xc35574[_0x66ac('0x23')](_0x4dee04)[_0x66ac('0x24')](function(_0x5270ff){return _0x5270ff;});}return null;};}function removeEntity(_0x2230c1,_0x22fa9a){return function(_0x3c305d){if(_0x3c305d){return _0x3c305d[_0x66ac('0x25')]()['then'](function(){_0x2230c1[_0x66ac('0x1b')](0xcc)[_0x66ac('0x26')]();});}};}function handleEntityNotFound(_0x5c7e23,_0x14ad92){return function(_0x256412){if(!_0x256412){_0x5c7e23[_0x66ac('0x27')](0x194);}return _0x256412;};}function handleError(_0x2aa829,_0x4c0b37){_0x4c0b37=_0x4c0b37||0x1f4;return function(_0x30740a){logger[_0x66ac('0x28')](_0x30740a[_0x66ac('0x29')]);if(_0x30740a[_0x66ac('0x2a')]){delete _0x30740a[_0x66ac('0x2a')];}_0x2aa829[_0x66ac('0x1b')](_0x4c0b37)[_0x66ac('0x2b')](_0x30740a);};}exports[_0x66ac('0x2c')]=function(_0x451cc1,_0x25c14a){var _0xd98f05={},_0x5ef3a9={},_0x571a64={'count':0x0,'rows':[]};var _0x5396bc=_[_0x66ac('0x2d')](db[_0x66ac('0x2e')][_0x66ac('0x2f')],function(_0x515712){return{'name':_0x515712[_0x66ac('0x30')],'type':_0x515712[_0x66ac('0x31')][_0x66ac('0x32')]};});_0x5ef3a9[_0x66ac('0x33')]=_['map'](_0x5396bc,_0x66ac('0x2a'));_0x5ef3a9[_0x66ac('0x34')]=_[_0x66ac('0x35')](_0x451cc1[_0x66ac('0x34')]);_0x5ef3a9[_0x66ac('0x36')]=_[_0x66ac('0x37')](_0x5ef3a9[_0x66ac('0x33')],_0x5ef3a9[_0x66ac('0x34')]);_0xd98f05['attributes']=_[_0x66ac('0x37')](_0x5ef3a9[_0x66ac('0x33')],qs[_0x66ac('0x38')](_0x451cc1[_0x66ac('0x34')]['fields']));_0xd98f05[_0x66ac('0x39')]=_0xd98f05[_0x66ac('0x39')][_0x66ac('0x3a')]?_0xd98f05[_0x66ac('0x39')]:_0x5ef3a9[_0x66ac('0x33')];if(!_0x451cc1[_0x66ac('0x34')][_0x66ac('0x3b')](_0x66ac('0x3c'))){_0xd98f05[_0x66ac('0x1f')]=qs['limit'](_0x451cc1[_0x66ac('0x34')]['limit']);_0xd98f05[_0x66ac('0x1c')]=qs[_0x66ac('0x1c')](_0x451cc1[_0x66ac('0x34')][_0x66ac('0x1c')]);}_0xd98f05[_0x66ac('0x3d')]=qs[_0x66ac('0x3e')](_0x451cc1[_0x66ac('0x34')]['sort']);_0xd98f05[_0x66ac('0x3f')]=qs['filters'](_[_0x66ac('0x40')](_0x451cc1[_0x66ac('0x34')],_0x5ef3a9['filters']),_0x5396bc);if(_0x451cc1['query']['filter']){_0xd98f05['where']=_[_0x66ac('0x41')](_0xd98f05['where'],{'$or':_[_0x66ac('0x2d')](_0x5396bc,function(_0x530e32){if(_0x530e32[_0x66ac('0x31')]!=='VIRTUAL'){var _0x158e54={};_0x158e54[_0x530e32[_0x66ac('0x2a')]]={'$like':'%'+_0x451cc1[_0x66ac('0x34')][_0x66ac('0x42')]+'%'};return _0x158e54;}})});}_0xd98f05=_[_0x66ac('0x41')]({},_0xd98f05,_0x451cc1[_0x66ac('0x43')]);var _0x1fe50c={'where':_0xd98f05['where']};return db['FaxApplication']['count'](_0x1fe50c)['then'](function(_0x238d4f){_0x571a64['count']=_0x238d4f;if(_0x451cc1['query'][_0x66ac('0x44')]){_0xd98f05[_0x66ac('0x45')]=[{'all':!![]}];}return db[_0x66ac('0x2e')]['findAll'](_0xd98f05);})[_0x66ac('0x24')](function(_0x1873b1){_0x571a64['rows']=_0x1873b1;return _0x571a64;})[_0x66ac('0x24')](respondWithFilteredResult(_0x25c14a,_0xd98f05))[_0x66ac('0x46')](handleError(_0x25c14a,null));};exports[_0x66ac('0x47')]=function(_0x3100ce,_0x454b20){var _0x53a611={'raw':!![],'where':{'id':_0x3100ce['params']['id']}},_0x4d875a={};_0x4d875a[_0x66ac('0x33')]=_['keys'](db[_0x66ac('0x2e')][_0x66ac('0x2f')]);_0x4d875a[_0x66ac('0x34')]=_[_0x66ac('0x35')](_0x3100ce[_0x66ac('0x34')]);_0x4d875a[_0x66ac('0x36')]=_['intersection'](_0x4d875a[_0x66ac('0x33')],_0x4d875a[_0x66ac('0x34')]);_0x53a611['attributes']=_[_0x66ac('0x37')](_0x4d875a[_0x66ac('0x33')],qs[_0x66ac('0x38')](_0x3100ce[_0x66ac('0x34')][_0x66ac('0x38')]));_0x53a611['attributes']=_0x53a611[_0x66ac('0x39')][_0x66ac('0x3a')]?_0x53a611[_0x66ac('0x39')]:_0x4d875a[_0x66ac('0x33')];if(_0x3100ce[_0x66ac('0x34')]['includeAll']){_0x53a611[_0x66ac('0x45')]=[{'all':!![]}];}_0x53a611=_[_0x66ac('0x41')]({},_0x53a611,_0x3100ce[_0x66ac('0x43')]);return db[_0x66ac('0x2e')][_0x66ac('0x48')](_0x53a611)['then'](handleEntityNotFound(_0x454b20,null))[_0x66ac('0x24')](respondWithResult(_0x454b20,null))[_0x66ac('0x46')](handleError(_0x454b20,null));};exports[_0x66ac('0x49')]=function(_0x431c24,_0x9f7663){return db[_0x66ac('0x2e')][_0x66ac('0x49')](_0x431c24['body'],{})[_0x66ac('0x24')](respondWithResult(_0x9f7663,0xc9))[_0x66ac('0x46')](handleError(_0x9f7663,null));};exports['update']=function(_0x3aa480,_0x4bd8f5){if(_0x3aa480[_0x66ac('0x4a')]['id']){delete _0x3aa480['body']['id'];}return db[_0x66ac('0x2e')][_0x66ac('0x48')]({'where':{'id':_0x3aa480[_0x66ac('0x4b')]['id']}})[_0x66ac('0x24')](handleEntityNotFound(_0x4bd8f5,null))[_0x66ac('0x24')](saveUpdates(_0x3aa480[_0x66ac('0x4a')],null))[_0x66ac('0x24')](respondWithResult(_0x4bd8f5,null))[_0x66ac('0x46')](handleError(_0x4bd8f5,null));};exports[_0x66ac('0x25')]=function(_0xd2296e,_0x5bf0d4){return db['FaxApplication']['find']({'where':{'id':_0xd2296e[_0x66ac('0x4b')]['id']}})[_0x66ac('0x24')](handleEntityNotFound(_0x5bf0d4,null))[_0x66ac('0x24')](removeEntity(_0x5bf0d4,null))['catch'](handleError(_0x5bf0d4,null));};
\ No newline at end of file
index f017a7d..fe1c1e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e81=['api','moment','request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e81,0x1af));var _0x10e8=function(_0x4976eb,_0x4b09d1){_0x4976eb=_0x4976eb-0x0;var _0x5dd7b2=_0x0e81[_0x4976eb];return _0x5dd7b2;};'use strict';var _=require(_0x10e8('0x0'));var util=require(_0x10e8('0x1'));var logger=require(_0x10e8('0x2'))(_0x10e8('0x3'));var moment=require(_0x10e8('0x4'));var BPromise=require('bluebird');var rp=require(_0x10e8('0x5'));var fs=require('fs');var path=require(_0x10e8('0x6'));var rimraf=require(_0x10e8('0x7'));var config=require(_0x10e8('0x8'));var attributes=require(_0x10e8('0x9'));module[_0x10e8('0xa')]=function(_0xfa06a1,_0x44bb71){return _0xfa06a1['define'](_0x10e8('0xb'),attributes,{'tableName':_0x10e8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x10e8('0xd')});};
\ No newline at end of file
+var _0xba76=['path','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x546c2f,_0x26e1d0){var _0x74108e=function(_0x579c2d){while(--_0x579c2d){_0x546c2f['push'](_0x546c2f['shift']());}};_0x74108e(++_0x26e1d0);}(_0xba76,0x1d4));var _0x6ba7=function(_0x51eb57,_0x10d544){_0x51eb57=_0x51eb57-0x0;var _0x2fe3ea=_0xba76[_0x51eb57];return _0x2fe3ea;};'use strict';var _=require(_0x6ba7('0x0'));var util=require('util');var logger=require(_0x6ba7('0x1'))(_0x6ba7('0x2'));var moment=require('moment');var BPromise=require(_0x6ba7('0x3'));var rp=require(_0x6ba7('0x4'));var fs=require('fs');var path=require(_0x6ba7('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6ba7('0x6'));module[_0x6ba7('0x7')]=function(_0x41a436,_0x228d6f){return _0x41a436['define'](_0x6ba7('0x8'),attributes,{'tableName':_0x6ba7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6ba7('0xa')});};
\ No newline at end of file
index 47fe65d..551e301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f42=['error','code','message','FaxApplication,\x20%s,\x20%s','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','where','attributes','limit','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify'];(function(_0x5cedbc,_0x48fc4d){var _0x5d73a0=function(_0x2aa9b7){while(--_0x2aa9b7){_0x5cedbc['push'](_0x5cedbc['shift']());}};_0x5d73a0(++_0x48fc4d);}(_0x0f42,0x1de));var _0x20f4=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x0f42[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x20f4('0x0'));var util=require('util');var moment=require(_0x20f4('0x1'));var BPromise=require(_0x20f4('0x2'));var rs=require(_0x20f4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x20f4('0x4'));var logger=require('../../config/logger')(_0x20f4('0x5'));var config=require(_0x20f4('0x6'));var jayson=require(_0x20f4('0x7'));var client=jayson[_0x20f4('0x8')][_0x20f4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d2fc0,_0x397059,_0x58abfb){return new BPromise(function(_0x221d9e,_0x517c5b){return client[_0x20f4('0xa')](_0x4d2fc0,_0x58abfb)[_0x20f4('0xb')](function(_0x262d3d){logger[_0x20f4('0xc')]('FaxApplication,\x20%s,\x20%s',_0x397059,_0x20f4('0xd'));logger['debug']('FaxApplication,\x20%s,\x20%s,\x20%s',_0x397059,_0x20f4('0xd'),JSON[_0x20f4('0xe')](_0x262d3d));if(_0x262d3d[_0x20f4('0xf')]){if(_0x262d3d['error'][_0x20f4('0x10')]===0x1f4){logger['error']('FaxApplication,\x20%s,\x20%s',_0x397059,_0x262d3d['error'][_0x20f4('0x11')]);return _0x517c5b(_0x262d3d['error'][_0x20f4('0x11')]);}logger[_0x20f4('0xf')]('FaxApplication,\x20%s,\x20%s',_0x397059,_0x262d3d[_0x20f4('0xf')][_0x20f4('0x11')]);return _0x221d9e(_0x262d3d[_0x20f4('0xf')]['message']);}else{logger[_0x20f4('0xc')](_0x20f4('0x12'),_0x397059,_0x20f4('0xd'));_0x221d9e(_0x262d3d[_0x20f4('0x13')][_0x20f4('0x11')]);}})[_0x20f4('0x14')](function(_0x4060b2){logger[_0x20f4('0xf')]('FaxApplication,\x20%s,\x20%s',_0x397059,_0x4060b2);_0x517c5b(_0x4060b2);});});}exports[_0x20f4('0x15')]=function(_0x148cbe){var _0x4f2ae4=this;return new Promise(function(_0x2af8eb,_0x194563){return db[_0x20f4('0x16')][_0x20f4('0x17')](_0x148cbe[_0x20f4('0x18')],{'raw':_0x148cbe[_0x20f4('0x19')]?_0x148cbe[_0x20f4('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x148cbe[_0x20f4('0x19')]?_0x148cbe['options'][_0x20f4('0x1a')]||null:null,'attributes':_0x148cbe[_0x20f4('0x19')]?_0x148cbe['options'][_0x20f4('0x1b')]||null:null,'limit':_0x148cbe[_0x20f4('0x19')]?_0x148cbe[_0x20f4('0x19')][_0x20f4('0x1c')]||null:null})[_0x20f4('0xb')](function(_0x143594){logger[_0x20f4('0xc')](_0x20f4('0x15'),_0x148cbe);logger['debug'](_0x20f4('0x15'),_0x148cbe,JSON[_0x20f4('0xe')](_0x143594));_0x2af8eb(_0x143594);})[_0x20f4('0x14')](function(_0x2c3406){logger[_0x20f4('0xf')](_0x20f4('0x15'),_0x2c3406[_0x20f4('0x11')],_0x148cbe);_0x194563(_0x4f2ae4[_0x20f4('0xf')](0x1f4,_0x2c3406[_0x20f4('0x11')]));});});};
\ No newline at end of file
+var _0x8645=['stringify','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FaxApplication,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','UpdateFaxApplication','update','body','options','where','attributes','limit'];(function(_0x4396fb,_0x5a97bb){var _0x22fe9e=function(_0x5e03b6){while(--_0x5e03b6){_0x4396fb['push'](_0x4396fb['shift']());}};_0x22fe9e(++_0x5a97bb);}(_0x8645,0x145));var _0x5864=function(_0x3c3dbf,_0x212c58){_0x3c3dbf=_0x3c3dbf-0x0;var _0xe989d1=_0x8645[_0x3c3dbf];return _0xe989d1;};'use strict';var _=require(_0x5864('0x0'));var util=require('util');var moment=require(_0x5864('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5864('0x2'));var db=require(_0x5864('0x3'))['db'];var utils=require(_0x5864('0x4'));var logger=require(_0x5864('0x5'))(_0x5864('0x6'));var config=require('../../config/environment');var jayson=require(_0x5864('0x7'));var client=jayson[_0x5864('0x8')][_0x5864('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x498c75,_0xfe6382,_0x54fc05){return new BPromise(function(_0x5e7c25,_0x3f795d){return client[_0x5864('0xa')](_0x498c75,_0x54fc05)[_0x5864('0xb')](function(_0x4f8e3d){logger[_0x5864('0xc')](_0x5864('0xd'),_0xfe6382,'request\x20sent');logger[_0x5864('0xe')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0xfe6382,_0x5864('0xf'),JSON['stringify'](_0x4f8e3d));if(_0x4f8e3d[_0x5864('0x10')]){if(_0x4f8e3d[_0x5864('0x10')]['code']===0x1f4){logger[_0x5864('0x10')](_0x5864('0xd'),_0xfe6382,_0x4f8e3d[_0x5864('0x10')][_0x5864('0x11')]);return _0x3f795d(_0x4f8e3d[_0x5864('0x10')]['message']);}logger[_0x5864('0x10')](_0x5864('0xd'),_0xfe6382,_0x4f8e3d['error']['message']);return _0x5e7c25(_0x4f8e3d[_0x5864('0x10')]['message']);}else{logger[_0x5864('0xc')](_0x5864('0xd'),_0xfe6382,_0x5864('0xf'));_0x5e7c25(_0x4f8e3d['result'][_0x5864('0x11')]);}})[_0x5864('0x12')](function(_0x1afedb){logger[_0x5864('0x10')](_0x5864('0xd'),_0xfe6382,_0x1afedb);_0x3f795d(_0x1afedb);});});}exports[_0x5864('0x13')]=function(_0x30148d){var _0x222ff4=this;return new Promise(function(_0x14b607,_0x312066){return db['FaxApplication'][_0x5864('0x14')](_0x30148d[_0x5864('0x15')],{'raw':_0x30148d[_0x5864('0x16')]?_0x30148d[_0x5864('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x30148d['options']?_0x30148d['options'][_0x5864('0x17')]||null:null,'attributes':_0x30148d[_0x5864('0x16')]?_0x30148d[_0x5864('0x16')][_0x5864('0x18')]||null:null,'limit':_0x30148d[_0x5864('0x16')]?_0x30148d['options'][_0x5864('0x19')]||null:null})[_0x5864('0xb')](function(_0x9b85f8){logger[_0x5864('0xc')](_0x5864('0x13'),_0x30148d);logger[_0x5864('0xe')](_0x5864('0x13'),_0x30148d,JSON[_0x5864('0x1a')](_0x9b85f8));_0x14b607(_0x9b85f8);})[_0x5864('0x12')](function(_0x535404){logger['error'](_0x5864('0x13'),_0x535404[_0x5864('0x11')],_0x30148d);_0x312066(_0x222ff4[_0x5864('0x10')](0x1f4,_0x535404['message']));});});};
\ No newline at end of file
index ff1587a..1f8c030 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports','multer'];(function(_0x27c24e,_0x5db1c7){var _0x39004a=function(_0x44286d){while(--_0x44286d){_0x27c24e['push'](_0x27c24e['shift']());}};_0x39004a(++_0x5db1c7);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x443176,_0x35fef7){_0x443176=_0x443176-0x0;var _0x3f3e02=_0x9ffd[_0x443176];return _0x3f3e02;};'use strict';var multer=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var path=require(_0xd9ff('0x2'));var timeout=require('connect-timeout');var express=require(_0xd9ff('0x3'));var router=express[_0xd9ff('0x4')]();var fs_extra=require(_0xd9ff('0x5'));var auth=require(_0xd9ff('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd9ff('0x7'));var controller=require(_0xd9ff('0x8'));router['get']('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xa')]);router[_0xd9ff('0xb')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xd')]);router[_0xd9ff('0xe')]('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd9ff('0x10')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0x11')]);module[_0xd9ff('0x12')]=router;
\ No newline at end of file
+var _0x6e6c=['delete','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update'];(function(_0x237546,_0xa81b26){var _0x233e29=function(_0x728aa4){while(--_0x728aa4){_0x237546['push'](_0x237546['shift']());}};_0x233e29(++_0xa81b26);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var path=require('path');var timeout=require(_0xc6e6('0x2'));var express=require(_0xc6e6('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc6e6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc6e6('0x5'));var controller=require('./faxApplication.controller');router[_0xc6e6('0x6')]('/',auth[_0xc6e6('0x7')](),controller['index']);router[_0xc6e6('0x6')](_0xc6e6('0x8'),auth['isAuthenticated'](),controller[_0xc6e6('0x9')]);router[_0xc6e6('0xa')]('/',auth['isAuthenticated'](),controller[_0xc6e6('0xb')]);router['put'](_0xc6e6('0x8'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0xc')]);router[_0xc6e6('0xd')](_0xc6e6('0x8'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0xe')]);module[_0xc6e6('0xf')]=router;
\ No newline at end of file
index 441fb3f..17e66bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde0c=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xde0c,0x7b));var _0xcde0=function(_0x127705,_0x164d9a){_0x127705=_0x127705-0x0;var _0x5e6cb4=_0xde0c[_0x127705];return _0x5e6cb4;};'use strict';var Sequelize=require(_0xcde0('0x0'));module[_0xcde0('0x1')]={'closed':{'type':Sequelize[_0xcde0('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xcde0('0x3')]},'disposition':{'type':Sequelize[_0xcde0('0x4')]},'secondDisposition':{'type':Sequelize[_0xcde0('0x4')]},'thirdDisposition':{'type':Sequelize[_0xcde0('0x4')]},'note':{'type':Sequelize[_0xcde0('0x4')]},'read1stAt':{'type':Sequelize[_0xcde0('0x3')]},'fax':{'type':Sequelize[_0xcde0('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xcde0('0x5')]('in',_0xcde0('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xcde0('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xcde0('0x5')]('in',_0xcde0('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xcf0b=['STRING','DATE','ENUM','out','sequelize','exports'];(function(_0x51168e,_0x473e66){var _0x175130=function(_0x53dd53){while(--_0x53dd53){_0x51168e['push'](_0x51168e['shift']());}};_0x175130(++_0x473e66);}(_0xcf0b,0xe8));var _0xbcf0=function(_0x3612eb,_0x1f07a9){_0x3612eb=_0x3612eb-0x0;var _0x1a13ab=_0xcf0b[_0x3612eb];return _0x1a13ab;};'use strict';var Sequelize=require(_0xbcf0('0x0'));module[_0xbcf0('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xbcf0('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xbcf0('0x2')]},'note':{'type':Sequelize[_0xbcf0('0x2')]},'read1stAt':{'type':Sequelize[_0xbcf0('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0xbcf0('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xbcf0('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xbcf0('0x4')]('in',_0xbcf0('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 150e738..5d97b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b0b=['./faxInteraction.socket','register','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','destroy','stack','name','TagIds','split','forEach','push','then','index','map','FaxInteraction','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId','left_join','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','a.mandatoryDisposition','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','FaxInteractionId','all','rows','rawAttributes','include','options','catch','update','params','describe','FaxMessage','addMessage','ids','getMessages','findOne','hasOwnProperty','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','setTags','omit','spread','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','get','basename','existsSync','pipe','createWriteStream','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x4b0b,0x190));var _0xb4b0=function(_0x4ab29b,_0x360c6f){_0x4ab29b=_0x4ab29b-0x0;var _0x535e1b=_0x4b0b[_0x4ab29b];return _0x535e1b;};'use strict';var emlformat=require(_0xb4b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb4b0('0x1'));var jsonpatch=require(_0xb4b0('0x2'));var rp=require('request-promise');var moment=require(_0xb4b0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb4b0('0x4'));var util=require(_0xb4b0('0x5'));var path=require(_0xb4b0('0x6'));var sox=require(_0xb4b0('0x7'));var csv=require(_0xb4b0('0x8'));var ejs=require(_0xb4b0('0x9'));var fs=require('fs');var fs_extra=require(_0xb4b0('0xa'));var _=require(_0xb4b0('0xb'));var squel=require(_0xb4b0('0xc'));var crypto=require('crypto');var jsforce=require(_0xb4b0('0xd'));var deskjs=require(_0xb4b0('0xe'));var toCsv=require(_0xb4b0('0x8'));var querystring=require(_0xb4b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xb4b0('0x10'));var authService=require(_0xb4b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb4b0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb4b0('0x13'))(_0xb4b0('0x14'));var utils=require(_0xb4b0('0x15'));var config=require(_0xb4b0('0x16'));var licenseUtil=require(_0xb4b0('0x17'));var db=require(_0xb4b0('0x18'))['db'];config['redis']=_['defaults'](config[_0xb4b0('0x19')],{'host':_0xb4b0('0x1a'),'port':0x18eb});var socket=require(_0xb4b0('0x1b'))(new Redis(config[_0xb4b0('0x19')]));require(_0xb4b0('0x1c'))[_0xb4b0('0x1d')](socket);function respondWithStatusCode(_0x2e1f36,_0x240685){_0x240685=_0x240685||0xcc;return function(_0x5bd97a){if(_0x5bd97a){return _0x2e1f36[_0xb4b0('0x1e')](_0x240685);}return _0x2e1f36[_0xb4b0('0x1f')](_0x240685)[_0xb4b0('0x20')]();};}function respondWithResult(_0x47b859,_0xbd5fd4){_0xbd5fd4=_0xbd5fd4||0xc8;return function(_0x3b2cb8){if(_0x3b2cb8){return _0x47b859['status'](_0xbd5fd4)[_0xb4b0('0x21')](_0x3b2cb8);}};}function respondWithFilteredResult(_0x3c49e1,_0x45b2c0){return function(_0x5223e2){if(_0x5223e2){var _0x393a9e=typeof _0x45b2c0['offset']===_0xb4b0('0x22')&&typeof _0x45b2c0['limit']===_0xb4b0('0x22');var _0x3cb270=_0x5223e2[_0xb4b0('0x23')];var _0x15fe5a=_0x393a9e?0x0:_0x45b2c0[_0xb4b0('0x24')];var _0x2b2dc6=_0x393a9e?_0x5223e2[_0xb4b0('0x23')]:_0x45b2c0[_0xb4b0('0x24')]+_0x45b2c0['limit'];var _0x4b5bda;if(_0x2b2dc6>=_0x3cb270){_0x2b2dc6=_0x3cb270;_0x4b5bda=0xc8;}else{_0x4b5bda=0xce;}_0x3c49e1[_0xb4b0('0x1f')](_0x4b5bda);return _0x3c49e1[_0xb4b0('0x25')](_0xb4b0('0x26'),_0x15fe5a+'-'+_0x2b2dc6+'/'+_0x3cb270)[_0xb4b0('0x21')](_0x5223e2);}return null;};}function patchUpdates(_0x4d8340){return function(_0x571841){try{jsonpatch['apply'](_0x571841,_0x4d8340,!![]);}catch(_0x568c13){return BPromise[_0xb4b0('0x27')](_0x568c13);}return _0x571841[_0xb4b0('0x28')]();};}function saveUpdates(_0x2b6cc7,_0x3fcf6e){return function(_0x17b1d1){if(_0x17b1d1){return _0x17b1d1['update'](_0x2b6cc7)['then'](function(_0xba16ea){return _0xba16ea;});}return null;};}function removeEntity(_0x126830,_0x4d1c1b){return function(_0x3f37bb){if(_0x3f37bb){return _0x3f37bb[_0xb4b0('0x29')]()['then'](function(){_0x126830['status'](0xcc)[_0xb4b0('0x20')]();});}};}function handleEntityNotFound(_0x55155c,_0x33d774){return function(_0x5f207b){if(!_0x5f207b){_0x55155c[_0xb4b0('0x1e')](0x194);}return _0x5f207b;};}function handleError(_0x4c5c64,_0x1f15e9){_0x1f15e9=_0x1f15e9||0x1f4;return function(_0x53c189){logger['error'](_0x53c189[_0xb4b0('0x2a')]);if(_0x53c189[_0xb4b0('0x2b')]){delete _0x53c189[_0xb4b0('0x2b')];}_0x4c5c64[_0xb4b0('0x1f')](_0x1f15e9)['send'](_0x53c189);};}function getInteractionUsers(_0x2b19fd,_0x5bb93e){return new BPromise(function(_0x40de38,_0x4df83b){try{if(_0x5bb93e[_0x2b19fd['id']]){_0x2b19fd['Users']=_['map'](_0x5bb93e[_0x2b19fd['id']],function(_0x4d7b56){return{'id':_0x4d7b56['id'],'fullname':_0x4d7b56['fullname']};});}}catch(_0xd74337){_0x4df83b(_0xd74337);}_0x40de38(_0x2b19fd);});}function getInteractionTags(_0x389a21,_0x50c3f6){return new BPromise(function(_0x48cca6,_0x3bc259){try{if(_0x389a21[_0xb4b0('0x2c')]){_0x389a21['Tags']=[];_0x389a21[_0xb4b0('0x2c')][_0xb4b0('0x2d')](',')[_0xb4b0('0x2e')](function(_0x338d3f){_0x389a21['Tags'][_0xb4b0('0x2f')](_0x50c3f6[_0x338d3f]);});}delete _0x389a21[_0xb4b0('0x2c')];}catch(_0x4ac0e2){_0x3bc259(_0x4ac0e2);}_0x48cca6(_0x389a21);});}function updateFaxInteraction(_0x4691dc,_0x3d2546,_0x3acc8d){return new BPromise(function(_0x4a9c5c,_0x46db76){return getInteractionUsers(_0x4691dc,_0x3acc8d)[_0xb4b0('0x30')](function(_0xcdb0c2){return getInteractionTags(_0xcdb0c2,_0x3d2546);})[_0xb4b0('0x30')](function(_0x31885c){_0x4a9c5c(_0x31885c);})['catch'](function(_0x19e885){_0x46db76(_0x19e885);});});}exports[_0xb4b0('0x31')]=function(_0x49ad5e,_0x4c75b2){var _0x509f64={},_0x1725e5={},_0x903016={'count':0x0,'rows':[]};var _0xe46b33=_[_0xb4b0('0x32')](db[_0xb4b0('0x33')]['rawAttributes'],function(_0x109785){return{'name':_0x109785[_0xb4b0('0x34')],'type':_0x109785[_0xb4b0('0x35')]['key']};});_0x1725e5[_0xb4b0('0x36')]=_['map'](_0xe46b33,_0xb4b0('0x2b'));_0x1725e5[_0xb4b0('0x37')]=_[_0xb4b0('0x38')](_0x49ad5e[_0xb4b0('0x37')]);_0x1725e5[_0xb4b0('0x39')]=_[_0xb4b0('0x3a')](_0x1725e5[_0xb4b0('0x36')],_0x1725e5[_0xb4b0('0x37')]);_0x509f64['attributes']=_[_0xb4b0('0x3a')](_0x1725e5[_0xb4b0('0x36')],qs[_0xb4b0('0x3b')](_0x49ad5e['query'][_0xb4b0('0x3b')]));_0x509f64[_0xb4b0('0x3c')]=_0x509f64[_0xb4b0('0x3c')][_0xb4b0('0x3d')]?_0x509f64['attributes']:_0x1725e5[_0xb4b0('0x36')];if(!_0x49ad5e[_0xb4b0('0x37')]['hasOwnProperty'](_0xb4b0('0x3e'))){_0x509f64['limit']=qs[_0xb4b0('0x3f')](_0x49ad5e[_0xb4b0('0x37')]['limit']);_0x509f64['offset']=qs['offset'](_0x49ad5e[_0xb4b0('0x37')][_0xb4b0('0x24')]);}_0x509f64[_0xb4b0('0x40')]=qs[_0xb4b0('0x41')](_0x49ad5e['query'][_0xb4b0('0x41')]);_0x509f64[_0xb4b0('0x42')]=qs[_0xb4b0('0x39')](_[_0xb4b0('0x43')](_0x49ad5e[_0xb4b0('0x37')],_0x1725e5[_0xb4b0('0x39')]),_0xe46b33);var _0x57265c=[];var _0x37ce07=squel[_0xb4b0('0x44')]()[_0xb4b0('0x45')]('id')[_0xb4b0('0x45')](_0xb4b0('0x2b'))[_0xb4b0('0x45')](_0xb4b0('0x46'))[_0xb4b0('0x47')](_0xb4b0('0x48'));var _0x5ef419=squel[_0xb4b0('0x44')]()[_0xb4b0('0x45')](_0xb4b0('0x49'))['field'](_0xb4b0('0x4a'))[_0xb4b0('0x45')](_0xb4b0('0x4b'))['from']('user_has_fax_interactions','ui')[_0xb4b0('0x4c')]('users','u',_0xb4b0('0x4d'));var _0x40ccbe=squel[_0xb4b0('0x44')]()[_0xb4b0('0x47')](_0xb4b0('0x4e'),'i')['left_join'](_0xb4b0('0x4f'),'c',_0xb4b0('0x50'))[_0xb4b0('0x4c')](_0xb4b0('0x51'),'o',_0xb4b0('0x52'))['left_join'](_0xb4b0('0x53'),'a',_0xb4b0('0x54'))['left_join'](_0xb4b0('0x55'),'me',_0xb4b0('0x56'))['left_join'](_0xb4b0('0x57'),'it',_0xb4b0('0x58'))[_0xb4b0('0x4c')]('tools_tags','t',_0xb4b0('0x59'));var _0x2f85c7=squel[_0xb4b0('0x5a')]();var _0xa617d2=[];var _0xad3cb2=squel[_0xb4b0('0x5a')]();var _0x13d5e4;if(_0x49ad5e['query'][_0xb4b0('0x5b')]){_0x13d5e4=as[_0xb4b0('0x5c')](_0x49ad5e[_0xb4b0('0x37')][_0xb4b0('0x5b')]);var _0x406405=_0x13d5e4[_0xb4b0('0x5d')];for(var _0x1557c5=0x0;_0x1557c5<_0x13d5e4[_0xb4b0('0x5e')][_0xb4b0('0x3d')];_0x1557c5++){var _0x5de634=_0x13d5e4[_0xb4b0('0x5e')][_0x1557c5];var _0x5e04f2='i';var _0xc9315e=_[_0xb4b0('0x5f')](_0xe46b33,['name',_0x5de634[_0xb4b0('0x45')]]);if(!_0xc9315e){switch(_0x5de634['field']){case _0xb4b0('0x60'):if(_0x5de634[_0xb4b0('0x61')]==0x1){_0x40ccbe['having']('`'+_0x5de634['field']+_0xb4b0('0x62'));}else{_0x40ccbe[_0xb4b0('0x63')]('`'+_0x5de634[_0xb4b0('0x45')]+_0xb4b0('0x64'));}break;case _0xb4b0('0x65'):if(_0x5de634[_0xb4b0('0x66')]===_0xb4b0('0x67')){if(_0x5de634['value'][_0xb4b0('0x2d')]('\x20')[_0xb4b0('0x3d')]>0x1){_0x2f85c7[_0x406405]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb4b0('0x68')](_0x5de634[_0xb4b0('0x61')]),null);}else{var _0x5d6255='%'+_0x5de634[_0xb4b0('0x61')]+'%';_0x2f85c7[_0x406405](_0xb4b0('0x69'),_0x5d6255,_0x5d6255,_0x5d6255);}}else{_0xc9315e=_[_0xb4b0('0x5f')](_0xe46b33,[_0xb4b0('0x2b'),_0xb4b0('0x6a')]);_0x5de634[_0xb4b0('0x45')]=_0xb4b0('0x6a');_0x5025ba=as[_0xb4b0('0x6b')](_0x5e04f2,_0xc9315e['type'],_0x5de634);_0x2f85c7[_0x406405](_0x5025ba[_0xb4b0('0x6c')],_0x5025ba[_0xb4b0('0x61')][_0xb4b0('0x6d')],_0x5025ba[_0xb4b0('0x61')][_0xb4b0('0x20')]);}break;case'Tag':var _0x5ee9fc=_0x5de634[_0xb4b0('0x61')][_0xb4b0('0x2d')](',')[_0xb4b0('0x32')](function(_0x5ad4c9){return Number(_0x5ad4c9);});_0x5ee9fc[_0xb4b0('0x2e')](function(_0x2451db){_0xad3cb2['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2451db+',%');});_0xa617d2=_[_0xb4b0('0x6e')](_0xa617d2,_0x5ee9fc);break;case _0xb4b0('0x6f'):if(_0x5de634[_0xb4b0('0x66')]===_0xb4b0('0x67')){_0x2f85c7[_0x406405](_0xb4b0('0x70'),'%'+_0x5de634[_0xb4b0('0x61')]+'%',null);}else{_0xc9315e=_[_0xb4b0('0x5f')](_0xe46b33,[_0xb4b0('0x2b'),_0xb4b0('0x71')]);_0x5de634['field']=_0xb4b0('0x71');_0x5025ba=as['buildExpression'](_0x5e04f2,_0xc9315e[_0xb4b0('0x35')],_0x5de634);_0x2f85c7[_0x406405](_0x5025ba['text'],_0x5025ba[_0xb4b0('0x61')]['start'],_0x5025ba[_0xb4b0('0x61')]['end']);}break;case _0xb4b0('0x72'):_0x5025ba=as[_0xb4b0('0x6b')]('me',null,_0x5de634);_0x2f85c7[_0x406405](_0x5025ba[_0xb4b0('0x6c')],_0x5025ba[_0xb4b0('0x61')][_0xb4b0('0x6d')],_0x5025ba[_0xb4b0('0x61')][_0xb4b0('0x20')]);break;}}else{var _0x5025ba=as[_0xb4b0('0x6b')](_0x5e04f2,_0xc9315e[_0xb4b0('0x35')],_0x5de634);_0x2f85c7[_0x406405](_0x5025ba[_0xb4b0('0x6c')],_0x5025ba[_0xb4b0('0x61')][_0xb4b0('0x6d')],_0x5025ba[_0xb4b0('0x61')]['end']);}}}else{var _0x11c3e0=_(_0x49ad5e[_0xb4b0('0x37')])[_0xb4b0('0x38')]()[_0xb4b0('0x32')](function(_0x55a148){return _['some'](_0xe46b33,['name',_0x55a148])?_0x55a148:undefined;})[_0xb4b0('0x73')]()[_0xb4b0('0x61')]();if(!_[_0xb4b0('0x74')](_0x11c3e0)){_0x11c3e0[_0xb4b0('0x2e')](function(_0xd83e7a){if(_0xd83e7a===_0xb4b0('0x75')){_0x40ccbe[_0xb4b0('0x42')](_0xb4b0('0x76'),[][_0xb4b0('0x77')](_0x49ad5e[_0xb4b0('0x37')][_0xd83e7a]));}else if(_0xd83e7a===_0xb4b0('0x78')){var _0x5cf5ec=JSON[_0xb4b0('0x79')](_0x49ad5e[_0xb4b0('0x37')][_0xd83e7a])[_0xb4b0('0x7a')];var _0x40a100=JSON['parse'](_0x49ad5e[_0xb4b0('0x37')][_0xd83e7a])[_0xb4b0('0x7b')];_0x40ccbe[_0xb4b0('0x42')](_0xb4b0('0x7c'),_0x5cf5ec,_0x40a100);}else{if(_0x49ad5e['query'][_0xd83e7a]===_0xb4b0('0x7d')){_0x40ccbe['where']('i.'+_0xd83e7a+_0xb4b0('0x7e'));}else{_0x40ccbe['where']('i.'+_0xd83e7a+_0xb4b0('0x7f'),_0x49ad5e[_0xb4b0('0x37')][_0xd83e7a]);}}});}if(_0x49ad5e['query'][_0xb4b0('0x80')]){if(_0x49ad5e[_0xb4b0('0x37')]['read']==0x1){_0x40ccbe[_0xb4b0('0x63')]('`unreadMessages`\x20=\x200');}else{_0x40ccbe[_0xb4b0('0x63')](_0xb4b0('0x81'));}}if(_0x49ad5e[_0xb4b0('0x37')][_0xb4b0('0x82')]){_0xa617d2=_[_0xb4b0('0x83')](_0x49ad5e['query'][_0xb4b0('0x82')])?_0x49ad5e[_0xb4b0('0x37')][_0xb4b0('0x82')]:new Array(_0x49ad5e[_0xb4b0('0x37')]['tag']);_0xa617d2[_0xb4b0('0x2e')](function(_0x5196ca){_0xad3cb2['or'](_0xb4b0('0x84'),'%,'+_0x5196ca+',%');});}if(_0x49ad5e[_0xb4b0('0x37')][_0xb4b0('0x85')]){var _0x3edf0a=_0x49ad5e[_0xb4b0('0x37')]['filter'][_0xb4b0('0x86')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xb4b0('0x87')](_0x3edf0a)){_0x2f85c7['or'](_0xb4b0('0x88'),_0x3edf0a+'%')['or']('i.fax\x20LIKE\x20?',_0x3edf0a+'%');}_0x2f85c7['or'](_0xb4b0('0x89'),_0x3edf0a+'%');}}_0x40ccbe[_0xb4b0('0x42')](_0x2f85c7);_0x40ccbe[_0xb4b0('0x8a')](_0xb4b0('0x8b'));var _0x32044f={'type':db[_0xb4b0('0x8c')]['QueryTypes']['SELECT'],'raw':!![]};var _0x1a4438=_0x40ccbe[_0xb4b0('0x8d')]();_0x1a4438[_0xb4b0('0x45')](_0xb4b0('0x8b'));_0x1a4438[_0xb4b0('0x45')](_0xb4b0('0x8e'),_0xb4b0('0x60'));if(_0x509f64['order']){_0x509f64[_0xb4b0('0x40')][_0xb4b0('0x2e')](function(_0x5bd1ec){var _0x5dc8ee=_0x5bd1ec[0x0]===_0xb4b0('0x8f')?_0x5bd1ec[0x0]:'i.'+_0x5bd1ec[0x0];_0x40ccbe['order'](_0x5dc8ee,_0x5bd1ec[0x1]==='DESC'?![]:!![]);});}if(!_[_0xb4b0('0x74')](_0xa617d2)){_0x40ccbe['having'](_0xad3cb2);_0x1a4438['where'](_0xb4b0('0x90'),_0xa617d2);}BPromise[_0xb4b0('0x91')]()['then'](function(){if(!_0x13d5e4){if(_0x49ad5e[_0xb4b0('0x37')]['FaxAccountId'])return;_0x1a4438[_0xb4b0('0x42')](_0xb4b0('0x92'));_0x40ccbe[_0xb4b0('0x42')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x49ad5e[_0xb4b0('0x93')][_0xb4b0('0x94')]!==_0xb4b0('0x95'))return;return _0x49ad5e['user']['getFaxAccounts']({'attributes':['id'],'raw':!![]})[_0xb4b0('0x30')](function(_0x596947){if(_[_0xb4b0('0x74')](_0x596947)){_0x1a4438[_0xb4b0('0x42')](_0xb4b0('0x96'));_0x40ccbe[_0xb4b0('0x42')](_0xb4b0('0x96'));}else{_0x1a4438[_0xb4b0('0x42')](_0xb4b0('0x76'),_[_0xb4b0('0x32')](_0x596947,'id'));_0x40ccbe[_0xb4b0('0x42')]('i.FaxAccountId\x20IN\x20?',_[_0xb4b0('0x32')](_0x596947,'id'));}});})[_0xb4b0('0x30')](function(){if(_0x49ad5e[_0xb4b0('0x93')][_0xb4b0('0x94')]===_0xb4b0('0x95')&&!_0x13d5e4&&!_0x49ad5e[_0xb4b0('0x37')]['FaxAccountId'])return[];return db[_0xb4b0('0x97')][_0xb4b0('0x37')](_0x1a4438[_0xb4b0('0x98')](),_0x32044f);})[_0xb4b0('0x30')](function(_0x5cbc0f){_0x903016[_0xb4b0('0x23')]=_0x5cbc0f[_0xb4b0('0x3d')];if(_0x903016[_0xb4b0('0x23')]===0x0)return[];return db[_0xb4b0('0x97')]['query'](_0x37ce07[_0xb4b0('0x98')](),_0x32044f)['then'](function(_0x2a92b9){_0x57265c=_[_0xb4b0('0x99')](_0x2a92b9,'id');_0x32044f=_[_0xb4b0('0x9a')](_0x32044f,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x49ad5e[_0xb4b0('0x37')]['fields']){_0x509f64['attributes'][_0xb4b0('0x2e')](function(_0x4fe733){_0x40ccbe[_0xb4b0('0x45')]('i.'+_0x4fe733);});}else{_0x40ccbe['field'](_0xb4b0('0x8e'),'unreadMessages');_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0x9b'),'Account.key');_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0x9c'),'Account.mandatoryDisposition');_0x40ccbe[_0xb4b0('0x45')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0x9d'));_0x40ccbe['field']('c.firstName',_0xb4b0('0x9e'));_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0x9f'),_0xb4b0('0xa0'));_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0xa1'),_0xb4b0('0xa2'));_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0xa3'),'Contact.phone');_0x40ccbe[_0xb4b0('0x45')]('c.mobile',_0xb4b0('0xa4'));_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0xa5'),'Contact.fax');_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0xa6'),_0xb4b0('0xa7'));_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0xa8'),_0xb4b0('0xa9'));_0x40ccbe[_0xb4b0('0x45')](_0xb4b0('0xaa'),'TagIds');}if(_0x509f64[_0xb4b0('0x3f')])_0x40ccbe[_0xb4b0('0x3f')](_0x509f64['limit']);if(_0x509f64[_0xb4b0('0x24')])_0x40ccbe[_0xb4b0('0x24')](_0x509f64[_0xb4b0('0x24')]);return db[_0xb4b0('0x97')]['query'](_0x40ccbe[_0xb4b0('0x98')](),_0x32044f);})['then'](function(_0x5cda9e){if(_0x5cda9e[_0xb4b0('0x3d')]>0x0)_0x5ef419[_0xb4b0('0x42')]('ui.FaxInteractionId\x20IN\x20?',_[_0xb4b0('0x32')](_0x5cda9e,'id'));return db[_0xb4b0('0x97')][_0xb4b0('0x37')](_0x5ef419[_0xb4b0('0x98')](),_0x32044f)['then'](function(_0x1efead){var _0x2925dd=_[_0xb4b0('0xab')](_0x1efead,_0xb4b0('0xac'));var _0x115527=[];_0x5cda9e[_0xb4b0('0x2e')](function(_0x25407f){_0x115527[_0xb4b0('0x2f')](updateFaxInteraction(_0x25407f,_0x57265c,_0x2925dd));});return BPromise[_0xb4b0('0xad')](_0x115527);});});})[_0xb4b0('0x30')](function(_0x301605){_0x903016[_0xb4b0('0xae')]=_0x301605;return _0x903016;})[_0xb4b0('0x30')](respondWithFilteredResult(_0x4c75b2,_0x509f64))['catch'](handleError(_0x4c75b2,null));};exports['show']=function(_0xd2c306,_0x1046e8){var _0xa3b6af={'raw':![],'where':{'id':_0xd2c306['params']['id']}},_0x444bd5={};_0x444bd5['model']=_[_0xb4b0('0x38')](db[_0xb4b0('0x33')][_0xb4b0('0xaf')]);_0x444bd5[_0xb4b0('0x37')]=_['keys'](_0xd2c306[_0xb4b0('0x37')]);_0x444bd5['filters']=_[_0xb4b0('0x3a')](_0x444bd5['model'],_0x444bd5[_0xb4b0('0x37')]);_0xa3b6af[_0xb4b0('0x3c')]=_[_0xb4b0('0x3a')](_0x444bd5[_0xb4b0('0x36')],qs[_0xb4b0('0x3b')](_0xd2c306['query'][_0xb4b0('0x3b')]));_0xa3b6af['attributes']=_0xa3b6af[_0xb4b0('0x3c')]['length']?_0xa3b6af[_0xb4b0('0x3c')]:_0x444bd5['model'];if(_0xd2c306[_0xb4b0('0x37')]['includeAll']){_0xa3b6af[_0xb4b0('0xb0')]=[{'all':!![]}];}_0xa3b6af=_['merge']({},_0xa3b6af,_0xd2c306[_0xb4b0('0xb1')]);return db['FaxInteraction']['find'](_0xa3b6af)[_0xb4b0('0x30')](handleEntityNotFound(_0x1046e8,null))['then'](respondWithResult(_0x1046e8,null))['catch'](handleError(_0x1046e8,null));};exports['create']=function(_0x1ec026,_0x45a1ce){return db['FaxInteraction']['create'](_0x1ec026[_0xb4b0('0x72')],{})[_0xb4b0('0x30')](respondWithResult(_0x45a1ce,0xc9))[_0xb4b0('0xb2')](handleError(_0x45a1ce,null));};exports[_0xb4b0('0xb3')]=function(_0xc81982,_0x48ee11){if(_0xc81982[_0xb4b0('0x72')]['id']){delete _0xc81982[_0xb4b0('0x72')]['id'];}return db['FaxInteraction'][_0xb4b0('0x5f')]({'where':{'id':_0xc81982[_0xb4b0('0xb4')]['id']}})[_0xb4b0('0x30')](handleEntityNotFound(_0x48ee11,null))[_0xb4b0('0x30')](saveUpdates(_0xc81982[_0xb4b0('0x72')],null))[_0xb4b0('0x30')](respondWithResult(_0x48ee11,null))[_0xb4b0('0xb2')](handleError(_0x48ee11,null));};exports[_0xb4b0('0x29')]=function(_0x50f6c9,_0x23a9c2){return db[_0xb4b0('0x33')][_0xb4b0('0x5f')]({'where':{'id':_0x50f6c9['params']['id']}})[_0xb4b0('0x30')](handleEntityNotFound(_0x23a9c2,null))[_0xb4b0('0x30')](removeEntity(_0x23a9c2,null))['catch'](handleError(_0x23a9c2,null));};exports[_0xb4b0('0xb5')]=function(_0x35666d,_0x1f0f68){return db['FaxInteraction'][_0xb4b0('0xb5')]()[_0xb4b0('0x30')](respondWithResult(_0x1f0f68,null))[_0xb4b0('0xb2')](handleError(_0x1f0f68,null));};exports['addMessage']=function(_0x493cd4,_0x3bc9f6,_0xf8d2cd){return db[_0xb4b0('0xb6')][_0xb4b0('0x5f')]({'where':{'id':_0x493cd4['params']['id']}})[_0xb4b0('0x30')](handleEntityNotFound(_0x3bc9f6,null))[_0xb4b0('0x30')](function(_0x22d3e7){if(_0x22d3e7){return _0x22d3e7[_0xb4b0('0xb7')](_0x493cd4[_0xb4b0('0x72')][_0xb4b0('0xb8')],_['omit'](_0x493cd4[_0xb4b0('0x72')],[_0xb4b0('0xb8'),'id'])||{});}})[_0xb4b0('0x30')](respondWithResult(_0x3bc9f6,null))[_0xb4b0('0xb2')](handleError(_0x3bc9f6,null));};exports[_0xb4b0('0xb9')]=function(_0x33cb83,_0x47cdaf,_0x394930){var _0x5269d9={'raw':![],'where':{}};var _0x4db3a2={};var _0x3f00a1={'count':0x0,'rows':[]};return db[_0xb4b0('0x33')][_0xb4b0('0xba')]({'where':{'id':_0x33cb83['params']['id']}})[_0xb4b0('0x30')](handleEntityNotFound(_0x47cdaf,null))[_0xb4b0('0x30')](function(_0x19cd95){if(_0x19cd95){_0x4db3a2[_0xb4b0('0x36')]=_['keys'](db['FaxMessage'][_0xb4b0('0xaf')]);_0x4db3a2[_0xb4b0('0x37')]=_[_0xb4b0('0x38')](_0x33cb83['query']);_0x4db3a2[_0xb4b0('0x39')]=_['intersection'](_0x4db3a2[_0xb4b0('0x36')],_0x4db3a2[_0xb4b0('0x37')]);_0x5269d9[_0xb4b0('0x3c')]=_['intersection'](_0x4db3a2[_0xb4b0('0x36')],qs['fields'](_0x33cb83[_0xb4b0('0x37')][_0xb4b0('0x3b')]));_0x5269d9[_0xb4b0('0x3c')]=_0x5269d9[_0xb4b0('0x3c')]['length']?_0x5269d9['attributes']:_0x4db3a2[_0xb4b0('0x36')];if(!_0x33cb83['query'][_0xb4b0('0xbb')](_0xb4b0('0x3e'))){_0x5269d9[_0xb4b0('0x3f')]=qs['limit'](_0x33cb83['query'][_0xb4b0('0x3f')]);_0x5269d9[_0xb4b0('0x24')]=qs[_0xb4b0('0x24')](_0x33cb83[_0xb4b0('0x37')][_0xb4b0('0x24')]);}_0x5269d9['order']=qs[_0xb4b0('0x41')](_0x33cb83[_0xb4b0('0x37')]['sort']);_0x5269d9['where']=qs[_0xb4b0('0x39')](_[_0xb4b0('0x43')](_0x33cb83[_0xb4b0('0x37')],_0x4db3a2[_0xb4b0('0x39')]));_0x5269d9[_0xb4b0('0x42')][_0xb4b0('0xac')]=_0x19cd95['id'];if(_0x33cb83[_0xb4b0('0x37')]['filter']){_0x5269d9['where']=_['merge'](_0x5269d9[_0xb4b0('0x42')],{'$or':_[_0xb4b0('0x32')](_0x5269d9[_0xb4b0('0x3c')],function(_0x22acb6){var _0x5870a7={};_0x5870a7[_0x22acb6]={'$like':'%'+_0x33cb83[_0xb4b0('0x37')][_0xb4b0('0x85')]+'%'};return _0x5870a7;})});}if(_0x33cb83['query'][_0xb4b0('0x7a')]){var _0x4a7e66=_0x33cb83['query']['$gte'][_0xb4b0('0x2d')](',');var _0x270626={};_0x270626[_0x4a7e66[0x0]]={'$gte':moment(_0x4a7e66[0x1])[_0xb4b0('0xbc')](_0xb4b0('0xbd'))};_0x5269d9[_0xb4b0('0x42')]=_[_0xb4b0('0x9a')](_0x5269d9['where'],_0x270626);}_0x5269d9=_[_0xb4b0('0x9a')]({},_0x5269d9,_0x33cb83[_0xb4b0('0xb1')]);return db[_0xb4b0('0xb6')]['count']({'where':_0x5269d9[_0xb4b0('0x42')]})['then'](function(_0x300c5d){_0x3f00a1[_0xb4b0('0x23')]=_0x300c5d;if(_0x33cb83[_0xb4b0('0x37')][_0xb4b0('0xbe')]){_0x5269d9['include']=[{'all':!![]}];}return db[_0xb4b0('0xb6')][_0xb4b0('0xbf')](_0x5269d9);})['then'](function(_0x252a64){_0x3f00a1[_0xb4b0('0xae')]=_0x252a64;return _0x3f00a1;});}})[_0xb4b0('0x30')](respondWithFilteredResult(_0x47cdaf,_0x5269d9))[_0xb4b0('0xb2')](handleError(_0x47cdaf,null));};exports['addTags']=function(_0x3ffa97,_0xf58f93,_0x44905e){return db[_0xb4b0('0x33')][_0xb4b0('0x5f')]({'where':{'id':_0x3ffa97[_0xb4b0('0xb4')]['id']}})['then'](handleEntityNotFound(_0xf58f93,null))['then'](function(_0x5d33a9){if(_0x5d33a9){return _0x5d33a9[_0xb4b0('0xc0')](_0x3ffa97[_0xb4b0('0x72')][_0xb4b0('0xb8')],_[_0xb4b0('0xc1')](_0x3ffa97[_0xb4b0('0x72')],[_0xb4b0('0xb8'),'id'])||{})[_0xb4b0('0xc2')](function(){return db['Tag'][_0xb4b0('0xbf')]({'attributes':['id',_0xb4b0('0x2b'),_0xb4b0('0x46')],'where':{'id':_0x3ffa97['body']['ids']}});})[_0xb4b0('0x30')](function(_0x30138a){socket[_0xb4b0('0xc3')](_0xb4b0('0xc4'),{'id':Number(_0x3ffa97['params']['id']),'tags':_0x30138a||[]});return{'id':Number(_0x3ffa97[_0xb4b0('0xb4')]['id']),'tags':_0x30138a||[]};});}})[_0xb4b0('0x30')](respondWithResult(_0xf58f93,null))[_0xb4b0('0xb2')](handleError(_0xf58f93,null));};exports[_0xb4b0('0xc5')]=function(_0x989e63,_0x499927,_0x55ecaa){return db['FaxInteraction'][_0xb4b0('0x5f')]({'where':{'id':_0x989e63[_0xb4b0('0xb4')]['id']}})['then'](handleEntityNotFound(_0x499927,null))[_0xb4b0('0x30')](function(_0x379f5e){if(_0x379f5e){return _0x379f5e[_0xb4b0('0xc5')](_0x989e63[_0xb4b0('0x37')][_0xb4b0('0xb8')]);}})[_0xb4b0('0x30')](respondWithStatusCode(_0x499927,null))['catch'](handleError(_0x499927,null));};exports[_0xb4b0('0xc6')]=function(_0x3c96e1,_0x8464aa){var _0x4862c1=moment()[_0xb4b0('0xc7')]()[_0xb4b0('0x98')]();var _0x48990d=path[_0xb4b0('0xc8')](config[_0xb4b0('0xc9')],_0xb4b0('0xca'),_0xb4b0('0xcb'),_0xb4b0('0xcc'));var _0x492b1f=path[_0xb4b0('0xc8')](config[_0xb4b0('0xc9')],'server',_0xb4b0('0xcb'),_0xb4b0('0xcd'));var _0x3bea98=path[_0xb4b0('0xc8')](_0x48990d,_0x4862c1);var _0x2229f4=util[_0xb4b0('0xbc')](_0xb4b0('0xce'),_0x3c96e1[_0xb4b0('0xb4')]['id'],_0x4862c1);var _0x30fd39=path[_0xb4b0('0xc8')](_0x48990d,_0x2229f4);var _0x2627ae=[];_0x2627ae[_0xb4b0('0x2f')]({'model':db[_0xb4b0('0xcf')],'as':_0xb4b0('0xcf'),'raw':!![]});var _0x472de6=[{'model':db[_0xb4b0('0xb6')],'as':_0xb4b0('0xd0'),'attributes':['id','body',_0xb4b0('0x78')],'include':_0x2627ae}];return db['FaxInteraction'][_0xb4b0('0x5f')]({'where':{'id':_0x3c96e1[_0xb4b0('0xb4')]['id']},'include':_0x472de6})['then'](handleEntityNotFound(_0x8464aa,null))['then'](function(_0x1fb39b){if(_0x1fb39b&&_0x1fb39b[_0xb4b0('0xd0')]){var _0x196a10=_0x1fb39b[_0xb4b0('0xd1')]({'plain':!![]});fs['mkdirSync'](_0x3bea98);for(var _0x13a585=0x0;_0x13a585<_0x196a10[_0xb4b0('0xd0')][_0xb4b0('0x3d')];_0x13a585++){var _0x4d53d1=_0x196a10[_0xb4b0('0xd0')][_0x13a585][_0xb4b0('0xcf')];if(_0x4d53d1){var _0x3bf971=path[_0xb4b0('0xc8')](_0x492b1f,_0x4d53d1[_0xb4b0('0xd2')]);if(fs[_0xb4b0('0xd3')](_0x3bf971)){fs['createReadStream'](_0x3bf971)[_0xb4b0('0xd4')](fs[_0xb4b0('0xd5')](path[_0xb4b0('0xc8')](_0x3bea98,_0x4d53d1[_0xb4b0('0xd2')])));}}}return BPromise[_0xb4b0('0x91')]()[_0xb4b0('0x30')](function(){return new BPromise(function(_0x2aa6d2,_0x5d4829){zipdir(_0x3bea98,{'saveTo':_0x30fd39},function(_0x432477,_0x2f6d48){if(_0x432477)return _0x5d4829(_0x432477);return _0x2aa6d2(_0x2f6d48);});})[_0xb4b0('0x30')](function(){return new BPromise(function(_0x17b980,_0x27ba7d){rimraf(_0x3bea98,function(_0x4f3b87){if(_0x4f3b87)_0x27ba7d(_0x4f3b87);return _0x17b980();});});})['then'](function(){return _0x8464aa[_0xb4b0('0xc6')](_0x30fd39,_0x2229f4,function(_0x24af61){if(_0x24af61){console['log']('err',_0x24af61);}else{fs['unlinkSync'](_0x30fd39);}});});});}else{return _0x8464aa[_0xb4b0('0x1e')](0xc8);}})['catch'](handleError(_0x8464aa,null));};
\ No newline at end of file
+var _0xd84b=['Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','FaxInteractionId','all','show','params','includeAll','include','create','body','describe','addMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','findAll','setTags','spread','color','emit','removeTags','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','pipe','download','log','err','unlinkSync','eml-format','fast-json-patch','request-promise','moment','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','Users','map','TagIds','Tags','split','forEach','push','catch','index','FaxInteraction','rawAttributes','fieldName','type','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','tools_tags','expr','search','parseSearch','sqlOperator','value','having','`\x20=\x200','`\x20>\x200','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','keys','some','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition'];(function(_0x295a3d,_0x56d487){var _0x23a732=function(_0x15cfc2){while(--_0x15cfc2){_0x295a3d['push'](_0x295a3d['shift']());}};_0x23a732(++_0x56d487);}(_0xd84b,0x1e8));var _0xbd84=function(_0x3070d2,_0x10d4d8){_0x3070d2=_0x3070d2-0x0;var _0x1db782=_0xd84b[_0x3070d2];return _0x1db782;};'use strict';var emlformat=require(_0xbd84('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbd84('0x1'));var rp=require(_0xbd84('0x2'));var moment=require(_0xbd84('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xbd84('0x4'));var ejs=require(_0xbd84('0x5'));var fs=require('fs');var fs_extra=require(_0xbd84('0x6'));var _=require(_0xbd84('0x7'));var squel=require(_0xbd84('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbd84('0x4'));var querystring=require(_0xbd84('0x9'));var Papa=require(_0xbd84('0xa'));var Redis=require('ioredis');var authService=require(_0xbd84('0xb'));var qs=require(_0xbd84('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd84('0xd'));var logger=require('../../config/logger')('api');var utils=require(_0xbd84('0xe'));var config=require(_0xbd84('0xf'));var licenseUtil=require(_0xbd84('0x10'));var db=require(_0xbd84('0x11'))['db'];config[_0xbd84('0x12')]=_[_0xbd84('0x13')](config[_0xbd84('0x12')],{'host':_0xbd84('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbd84('0x12')]));require('./faxInteraction.socket')[_0xbd84('0x15')](socket);function respondWithStatusCode(_0x2c80dd,_0x5e2ddc){_0x5e2ddc=_0x5e2ddc||0xcc;return function(_0x154f00){if(_0x154f00){return _0x2c80dd['sendStatus'](_0x5e2ddc);}return _0x2c80dd[_0xbd84('0x16')](_0x5e2ddc)[_0xbd84('0x17')]();};}function respondWithResult(_0x429a39,_0x53335c){_0x53335c=_0x53335c||0xc8;return function(_0x2e62c5){if(_0x2e62c5){return _0x429a39[_0xbd84('0x16')](_0x53335c)[_0xbd84('0x18')](_0x2e62c5);}};}function respondWithFilteredResult(_0x16329a,_0x1989be){return function(_0x5a3a60){if(_0x5a3a60){var _0x1bba34=typeof _0x1989be[_0xbd84('0x19')]===_0xbd84('0x1a')&&typeof _0x1989be[_0xbd84('0x1b')]===_0xbd84('0x1a');var _0x3f2669=_0x5a3a60[_0xbd84('0x1c')];var _0x225f27=_0x1bba34?0x0:_0x1989be[_0xbd84('0x19')];var _0x3c5ca7=_0x1bba34?_0x5a3a60[_0xbd84('0x1c')]:_0x1989be[_0xbd84('0x19')]+_0x1989be['limit'];var _0x3320a7;if(_0x3c5ca7>=_0x3f2669){_0x3c5ca7=_0x3f2669;_0x3320a7=0xc8;}else{_0x3320a7=0xce;}_0x16329a[_0xbd84('0x16')](_0x3320a7);return _0x16329a[_0xbd84('0x1d')](_0xbd84('0x1e'),_0x225f27+'-'+_0x3c5ca7+'/'+_0x3f2669)[_0xbd84('0x18')](_0x5a3a60);}return null;};}function patchUpdates(_0x1b74fa){return function(_0x79f54d){try{jsonpatch['apply'](_0x79f54d,_0x1b74fa,!![]);}catch(_0x5d8563){return BPromise[_0xbd84('0x1f')](_0x5d8563);}return _0x79f54d[_0xbd84('0x20')]();};}function saveUpdates(_0x41e45e,_0x38953a){return function(_0x498d24){if(_0x498d24){return _0x498d24[_0xbd84('0x21')](_0x41e45e)[_0xbd84('0x22')](function(_0x1a5212){return _0x1a5212;});}return null;};}function removeEntity(_0x47a6a7,_0x31d08d){return function(_0x2c1f4c){if(_0x2c1f4c){return _0x2c1f4c[_0xbd84('0x23')]()['then'](function(){_0x47a6a7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5bba82,_0x6ac8f8){return function(_0x294c3b){if(!_0x294c3b){_0x5bba82[_0xbd84('0x24')](0x194);}return _0x294c3b;};}function handleError(_0x53fa4a,_0x389e0e){_0x389e0e=_0x389e0e||0x1f4;return function(_0x4144b9){logger[_0xbd84('0x25')](_0x4144b9[_0xbd84('0x26')]);if(_0x4144b9[_0xbd84('0x27')]){delete _0x4144b9['name'];}_0x53fa4a[_0xbd84('0x16')](_0x389e0e)[_0xbd84('0x28')](_0x4144b9);};}function getInteractionUsers(_0x18db93,_0x4b7d33){return new BPromise(function(_0x34501f,_0x52c628){try{if(_0x4b7d33[_0x18db93['id']]){_0x18db93[_0xbd84('0x29')]=_[_0xbd84('0x2a')](_0x4b7d33[_0x18db93['id']],function(_0x109777){return{'id':_0x109777['id'],'fullname':_0x109777['fullname']};});}}catch(_0x23fb7c){_0x52c628(_0x23fb7c);}_0x34501f(_0x18db93);});}function getInteractionTags(_0x1f1c45,_0x25fba4){return new BPromise(function(_0x150ed9,_0x3522b2){try{if(_0x1f1c45[_0xbd84('0x2b')]){_0x1f1c45[_0xbd84('0x2c')]=[];_0x1f1c45[_0xbd84('0x2b')][_0xbd84('0x2d')](',')[_0xbd84('0x2e')](function(_0x3c1517){_0x1f1c45[_0xbd84('0x2c')][_0xbd84('0x2f')](_0x25fba4[_0x3c1517]);});}delete _0x1f1c45['TagIds'];}catch(_0x12f0b6){_0x3522b2(_0x12f0b6);}_0x150ed9(_0x1f1c45);});}function updateFaxInteraction(_0x4a0c84,_0x326653,_0x54587e){return new BPromise(function(_0x5548df,_0x11d268){return getInteractionUsers(_0x4a0c84,_0x54587e)['then'](function(_0x49fac){return getInteractionTags(_0x49fac,_0x326653);})['then'](function(_0x3dc021){_0x5548df(_0x3dc021);})[_0xbd84('0x30')](function(_0x1c3f5f){_0x11d268(_0x1c3f5f);});});}exports[_0xbd84('0x31')]=function(_0x46a9ea,_0x3efdd0){var _0x56a37b={},_0x3683f4={},_0x5235d0={'count':0x0,'rows':[]};var _0x1695ab=_[_0xbd84('0x2a')](db[_0xbd84('0x32')][_0xbd84('0x33')],function(_0x49ef6a){return{'name':_0x49ef6a[_0xbd84('0x34')],'type':_0x49ef6a[_0xbd84('0x35')][_0xbd84('0x36')]};});_0x3683f4[_0xbd84('0x37')]=_['map'](_0x1695ab,_0xbd84('0x27'));_0x3683f4['query']=_['keys'](_0x46a9ea['query']);_0x3683f4[_0xbd84('0x38')]=_[_0xbd84('0x39')](_0x3683f4['model'],_0x3683f4[_0xbd84('0x3a')]);_0x56a37b['attributes']=_[_0xbd84('0x39')](_0x3683f4[_0xbd84('0x37')],qs[_0xbd84('0x3b')](_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x3b')]));_0x56a37b[_0xbd84('0x3c')]=_0x56a37b[_0xbd84('0x3c')][_0xbd84('0x3d')]?_0x56a37b[_0xbd84('0x3c')]:_0x3683f4[_0xbd84('0x37')];if(!_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x3e')](_0xbd84('0x3f'))){_0x56a37b[_0xbd84('0x1b')]=qs[_0xbd84('0x1b')](_0x46a9ea['query'][_0xbd84('0x1b')]);_0x56a37b[_0xbd84('0x19')]=qs[_0xbd84('0x19')](_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x19')]);}_0x56a37b[_0xbd84('0x40')]=qs['sort'](_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x41')]);_0x56a37b[_0xbd84('0x42')]=qs['filters'](_[_0xbd84('0x43')](_0x46a9ea[_0xbd84('0x3a')],_0x3683f4[_0xbd84('0x38')]),_0x1695ab);var _0x748db2=[];var _0x5581e5=squel[_0xbd84('0x44')]()[_0xbd84('0x45')]('id')['field'](_0xbd84('0x27'))[_0xbd84('0x45')]('color')[_0xbd84('0x46')]('tools_tags');var _0x2e87df=squel[_0xbd84('0x44')]()[_0xbd84('0x45')](_0xbd84('0x47'))[_0xbd84('0x45')]('u.fullname')[_0xbd84('0x45')](_0xbd84('0x48'))[_0xbd84('0x46')](_0xbd84('0x49'),'ui')[_0xbd84('0x4a')]('users','u',_0xbd84('0x4b'));var _0x217d90=squel[_0xbd84('0x44')]()['from'](_0xbd84('0x4c'),'i')['left_join'](_0xbd84('0x4d'),'c',_0xbd84('0x4e'))['left_join']('users','o',_0xbd84('0x4f'))['left_join'](_0xbd84('0x50'),'a',_0xbd84('0x51'))[_0xbd84('0x4a')](_0xbd84('0x52'),'me','me.FaxInteractionId\x20=\x20i.id')[_0xbd84('0x4a')](_0xbd84('0x53'),'it',_0xbd84('0x54'))[_0xbd84('0x4a')](_0xbd84('0x55'),'t','t.id\x20=\x20it.TagId');var _0x153220=squel[_0xbd84('0x56')]();var _0x38e003=[];var _0xbdcf0c=squel[_0xbd84('0x56')]();var _0x417e4e;if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x57')]){_0x417e4e=as[_0xbd84('0x58')](_0x46a9ea['query'][_0xbd84('0x57')]);var _0x2762f7=_0x417e4e[_0xbd84('0x59')];for(var _0x2bfa6a=0x0;_0x2bfa6a<_0x417e4e['conditions'][_0xbd84('0x3d')];_0x2bfa6a++){var _0x294fa7=_0x417e4e['conditions'][_0x2bfa6a];var _0x7895bf='i';var _0x53520b=_['find'](_0x1695ab,[_0xbd84('0x27'),_0x294fa7['field']]);if(!_0x53520b){switch(_0x294fa7['field']){case'unreadMessages':if(_0x294fa7[_0xbd84('0x5a')]==0x1){_0x217d90[_0xbd84('0x5b')]('`'+_0x294fa7[_0xbd84('0x45')]+_0xbd84('0x5c'));}else{_0x217d90[_0xbd84('0x5b')]('`'+_0x294fa7['field']+_0xbd84('0x5d'));}break;case'Contact':if(_0x294fa7['operator']===_0xbd84('0x5e')){if(_0x294fa7[_0xbd84('0x5a')]['split']('\x20')[_0xbd84('0x3d')]>0x1){_0x153220[_0x2762f7](_0xbd84('0x5f'),qs['getFullTextValue'](_0x294fa7['value']),null);}else{var _0x3f52b0='%'+_0x294fa7[_0xbd84('0x5a')]+'%';_0x153220[_0x2762f7](_0xbd84('0x60'),_0x3f52b0,_0x3f52b0,_0x3f52b0);}}else{_0x53520b=_[_0xbd84('0x61')](_0x1695ab,[_0xbd84('0x27'),'ContactId']);_0x294fa7[_0xbd84('0x45')]=_0xbd84('0x62');_0x386530=as[_0xbd84('0x63')](_0x7895bf,_0x53520b[_0xbd84('0x35')],_0x294fa7);_0x153220[_0x2762f7](_0x386530['text'],_0x386530[_0xbd84('0x5a')][_0xbd84('0x64')],_0x386530['value'][_0xbd84('0x17')]);}break;case _0xbd84('0x65'):var _0x586124=_0x294fa7[_0xbd84('0x5a')][_0xbd84('0x2d')](',')['map'](function(_0x3bd111){return Number(_0x3bd111);});_0x586124[_0xbd84('0x2e')](function(_0x4d4a01){_0xbdcf0c['or'](_0xbd84('0x66'),'%,'+_0x4d4a01+',%');});_0x38e003=_[_0xbd84('0x67')](_0x38e003,_0x586124);break;case _0xbd84('0x68'):if(_0x294fa7[_0xbd84('0x69')]===_0xbd84('0x5e')){_0x153220[_0x2762f7](_0xbd84('0x6a'),'%'+_0x294fa7['value']+'%',null);}else{_0x53520b=_[_0xbd84('0x61')](_0x1695ab,[_0xbd84('0x27'),_0xbd84('0x6b')]);_0x294fa7[_0xbd84('0x45')]='UserId';_0x386530=as['buildExpression'](_0x7895bf,_0x53520b[_0xbd84('0x35')],_0x294fa7);_0x153220[_0x2762f7](_0x386530[_0xbd84('0x6c')],_0x386530['value']['start'],_0x386530[_0xbd84('0x5a')][_0xbd84('0x17')]);}break;case'body':_0x386530=as[_0xbd84('0x63')]('me',null,_0x294fa7);_0x153220[_0x2762f7](_0x386530['text'],_0x386530[_0xbd84('0x5a')][_0xbd84('0x64')],_0x386530['value'][_0xbd84('0x17')]);break;}}else{var _0x386530=as[_0xbd84('0x63')](_0x7895bf,_0x53520b[_0xbd84('0x35')],_0x294fa7);_0x153220[_0x2762f7](_0x386530[_0xbd84('0x6c')],_0x386530[_0xbd84('0x5a')][_0xbd84('0x64')],_0x386530['value'][_0xbd84('0x17')]);}}}else{var _0x4f0e6c=_(_0x46a9ea[_0xbd84('0x3a')])[_0xbd84('0x6d')]()[_0xbd84('0x2a')](function(_0x32ac29){return _[_0xbd84('0x6e')](_0x1695ab,[_0xbd84('0x27'),_0x32ac29])?_0x32ac29:undefined;})['compact']()[_0xbd84('0x5a')]();if(!_[_0xbd84('0x6f')](_0x4f0e6c)){_0x4f0e6c[_0xbd84('0x2e')](function(_0x102401){if(_0x102401===_0xbd84('0x70')){_0x217d90[_0xbd84('0x42')](_0xbd84('0x71'),[][_0xbd84('0x72')](_0x46a9ea[_0xbd84('0x3a')][_0x102401]));}else if(_0x102401===_0xbd84('0x73')){var _0x1a7f3f=JSON[_0xbd84('0x74')](_0x46a9ea['query'][_0x102401])[_0xbd84('0x75')];var _0x42ba22=JSON[_0xbd84('0x74')](_0x46a9ea['query'][_0x102401])[_0xbd84('0x76')];_0x217d90['where'](_0xbd84('0x77'),_0x1a7f3f,_0x42ba22);}else{if(_0x46a9ea[_0xbd84('0x3a')][_0x102401]===_0xbd84('0x78')){_0x217d90[_0xbd84('0x42')]('i.'+_0x102401+_0xbd84('0x79'));}else{_0x217d90[_0xbd84('0x42')]('i.'+_0x102401+_0xbd84('0x7a'),_0x46a9ea[_0xbd84('0x3a')][_0x102401]);}}});}if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7b')]){if(_0x46a9ea[_0xbd84('0x3a')]['read']==0x1){_0x217d90[_0xbd84('0x5b')]('`unreadMessages`\x20=\x200');}else{_0x217d90[_0xbd84('0x5b')]('`unreadMessages`\x20>\x200');}}if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7c')]){_0x38e003=_[_0xbd84('0x7d')](_0x46a9ea['query'][_0xbd84('0x7c')])?_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7c')]:new Array(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7c')]);_0x38e003[_0xbd84('0x2e')](function(_0x27f452){_0xbdcf0c['or'](_0xbd84('0x66'),'%,'+_0x27f452+',%');});}if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7e')]){var _0x577136=_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7e')][_0xbd84('0x7f')]('\x5c','\x5c\x5c')[_0xbd84('0x7f')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x577136)){_0x153220['or'](_0xbd84('0x80'),_0x577136+'%')['or'](_0xbd84('0x81'),_0x577136+'%');}_0x153220['or'](_0xbd84('0x82'),_0x577136+'%');}}_0x217d90['where'](_0x153220);_0x217d90[_0xbd84('0x83')](_0xbd84('0x84'));var _0x3f506d={'type':db['Sequelize'][_0xbd84('0x85')]['SELECT'],'raw':!![]};var _0x4a4a30=_0x217d90[_0xbd84('0x86')]();_0x4a4a30[_0xbd84('0x45')]('i.id');_0x4a4a30[_0xbd84('0x45')](_0xbd84('0x87'),_0xbd84('0x88'));if(_0x56a37b[_0xbd84('0x40')]){_0x56a37b['order'][_0xbd84('0x2e')](function(_0x4e44a4){var _0x1e2942=_0x4e44a4[0x0]===_0xbd84('0x89')?_0x4e44a4[0x0]:'i.'+_0x4e44a4[0x0];_0x217d90[_0xbd84('0x40')](_0x1e2942,_0x4e44a4[0x1]===_0xbd84('0x8a')?![]:!![]);});}if(!_['isEmpty'](_0x38e003)){_0x217d90[_0xbd84('0x5b')](_0xbdcf0c);_0x4a4a30['where'](_0xbd84('0x8b'),_0x38e003);}BPromise[_0xbd84('0x8c')]()['then'](function(){if(!_0x417e4e){if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x70')])return;_0x4a4a30[_0xbd84('0x42')](_0xbd84('0x8d'));_0x217d90[_0xbd84('0x42')](_0xbd84('0x8d'));return;}if(_0x46a9ea[_0xbd84('0x8e')][_0xbd84('0x8f')]!=='agent')return;return _0x46a9ea['user'][_0xbd84('0x90')]({'attributes':['id'],'raw':!![]})[_0xbd84('0x22')](function(_0x4ba6dd){if(_[_0xbd84('0x6f')](_0x4ba6dd)){_0x4a4a30[_0xbd84('0x42')](_0xbd84('0x91'));_0x217d90[_0xbd84('0x42')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x4a4a30[_0xbd84('0x42')](_0xbd84('0x71'),_['map'](_0x4ba6dd,'id'));_0x217d90['where'](_0xbd84('0x71'),_[_0xbd84('0x2a')](_0x4ba6dd,'id'));}});})[_0xbd84('0x22')](function(){if(_0x46a9ea[_0xbd84('0x8e')][_0xbd84('0x8f')]===_0xbd84('0x92')&&!_0x417e4e&&!_0x46a9ea[_0xbd84('0x3a')]['FaxAccountId'])return[];return db[_0xbd84('0x93')][_0xbd84('0x3a')](_0x4a4a30[_0xbd84('0x94')](),_0x3f506d);})[_0xbd84('0x22')](function(_0x4a9878){_0x5235d0[_0xbd84('0x1c')]=_0x4a9878['length'];if(_0x5235d0[_0xbd84('0x1c')]===0x0)return[];return db[_0xbd84('0x93')]['query'](_0x5581e5[_0xbd84('0x94')](),_0x3f506d)[_0xbd84('0x22')](function(_0x1df510){_0x748db2=_[_0xbd84('0x95')](_0x1df510,'id');_0x3f506d=_[_0xbd84('0x96')](_0x3f506d,{'model':db[_0xbd84('0x32')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x3b')]){_0x56a37b[_0xbd84('0x3c')]['forEach'](function(_0x941253){_0x217d90[_0xbd84('0x45')]('i.'+_0x941253);});}else{_0x217d90[_0xbd84('0x45')](_0xbd84('0x87'),_0xbd84('0x88'));_0x217d90['field'](_0xbd84('0x97'),_0xbd84('0x98'));_0x217d90[_0xbd84('0x45')](_0xbd84('0x99'),_0xbd84('0x9a'));_0x217d90[_0xbd84('0x45')](_0xbd84('0x9b'),_0xbd84('0x89'));_0x217d90[_0xbd84('0x45')](_0xbd84('0x9c'));_0x217d90['field'](_0xbd84('0x9d'),_0xbd84('0x9e'));_0x217d90['field'](_0xbd84('0x9f'),'Contact.lastName');_0x217d90[_0xbd84('0x45')](_0xbd84('0xa0'),_0xbd84('0xa1'));_0x217d90['field'](_0xbd84('0xa2'),_0xbd84('0xa3'));_0x217d90[_0xbd84('0x45')](_0xbd84('0xa4'),'Contact.mobile');_0x217d90[_0xbd84('0x45')](_0xbd84('0xa5'),'Contact.fax');_0x217d90[_0xbd84('0x45')](_0xbd84('0xa6'),_0xbd84('0xa7'));_0x217d90[_0xbd84('0x45')](_0xbd84('0xa8'),_0xbd84('0xa9'));_0x217d90[_0xbd84('0x45')](_0xbd84('0xaa'),_0xbd84('0x2b'));}if(_0x56a37b['limit'])_0x217d90[_0xbd84('0x1b')](_0x56a37b[_0xbd84('0x1b')]);if(_0x56a37b[_0xbd84('0x19')])_0x217d90[_0xbd84('0x19')](_0x56a37b['offset']);return db['sequelize'][_0xbd84('0x3a')](_0x217d90[_0xbd84('0x94')](),_0x3f506d);})[_0xbd84('0x22')](function(_0x1b169e){if(_0x1b169e[_0xbd84('0x3d')]>0x0)_0x2e87df[_0xbd84('0x42')]('ui.FaxInteractionId\x20IN\x20?',_[_0xbd84('0x2a')](_0x1b169e,'id'));return db[_0xbd84('0x93')][_0xbd84('0x3a')](_0x2e87df['toString'](),_0x3f506d)[_0xbd84('0x22')](function(_0x1f8ff7){var _0x120740=_[_0xbd84('0xab')](_0x1f8ff7,_0xbd84('0xac'));var _0x1a52df=[];_0x1b169e[_0xbd84('0x2e')](function(_0x2ea505){_0x1a52df[_0xbd84('0x2f')](updateFaxInteraction(_0x2ea505,_0x748db2,_0x120740));});return BPromise[_0xbd84('0xad')](_0x1a52df);});});})[_0xbd84('0x22')](function(_0x20effc){_0x5235d0['rows']=_0x20effc;return _0x5235d0;})['then'](respondWithFilteredResult(_0x3efdd0,_0x56a37b))[_0xbd84('0x30')](handleError(_0x3efdd0,null));};exports[_0xbd84('0xae')]=function(_0x2c50ea,_0x3bad25){var _0x391e33={'raw':![],'where':{'id':_0x2c50ea[_0xbd84('0xaf')]['id']}},_0x3a6b21={};_0x3a6b21[_0xbd84('0x37')]=_[_0xbd84('0x6d')](db[_0xbd84('0x32')][_0xbd84('0x33')]);_0x3a6b21[_0xbd84('0x3a')]=_[_0xbd84('0x6d')](_0x2c50ea[_0xbd84('0x3a')]);_0x3a6b21[_0xbd84('0x38')]=_['intersection'](_0x3a6b21[_0xbd84('0x37')],_0x3a6b21[_0xbd84('0x3a')]);_0x391e33[_0xbd84('0x3c')]=_[_0xbd84('0x39')](_0x3a6b21[_0xbd84('0x37')],qs['fields'](_0x2c50ea['query'][_0xbd84('0x3b')]));_0x391e33[_0xbd84('0x3c')]=_0x391e33[_0xbd84('0x3c')][_0xbd84('0x3d')]?_0x391e33['attributes']:_0x3a6b21[_0xbd84('0x37')];if(_0x2c50ea[_0xbd84('0x3a')][_0xbd84('0xb0')]){_0x391e33[_0xbd84('0xb1')]=[{'all':!![]}];}_0x391e33=_['merge']({},_0x391e33,_0x2c50ea['options']);return db[_0xbd84('0x32')][_0xbd84('0x61')](_0x391e33)[_0xbd84('0x22')](handleEntityNotFound(_0x3bad25,null))['then'](respondWithResult(_0x3bad25,null))[_0xbd84('0x30')](handleError(_0x3bad25,null));};exports[_0xbd84('0xb2')]=function(_0x16d9d6,_0xee5d8){return db[_0xbd84('0x32')][_0xbd84('0xb2')](_0x16d9d6['body'],{})[_0xbd84('0x22')](respondWithResult(_0xee5d8,0xc9))[_0xbd84('0x30')](handleError(_0xee5d8,null));};exports[_0xbd84('0x21')]=function(_0x2461ad,_0x1df88a){if(_0x2461ad['body']['id']){delete _0x2461ad[_0xbd84('0xb3')]['id'];}return db[_0xbd84('0x32')][_0xbd84('0x61')]({'where':{'id':_0x2461ad['params']['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x1df88a,null))[_0xbd84('0x22')](saveUpdates(_0x2461ad[_0xbd84('0xb3')],null))[_0xbd84('0x22')](respondWithResult(_0x1df88a,null))[_0xbd84('0x30')](handleError(_0x1df88a,null));};exports[_0xbd84('0x23')]=function(_0x881cc2,_0x2b968e){return db[_0xbd84('0x32')][_0xbd84('0x61')]({'where':{'id':_0x881cc2[_0xbd84('0xaf')]['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x2b968e,null))[_0xbd84('0x22')](removeEntity(_0x2b968e,null))['catch'](handleError(_0x2b968e,null));};exports['describe']=function(_0x14e532,_0x101e50){return db[_0xbd84('0x32')][_0xbd84('0xb4')]()[_0xbd84('0x22')](respondWithResult(_0x101e50,null))[_0xbd84('0x30')](handleError(_0x101e50,null));};exports[_0xbd84('0xb5')]=function(_0xa4d53b,_0x387f41,_0x214813){return db['FaxMessage'][_0xbd84('0x61')]({'where':{'id':_0xa4d53b['params']['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x387f41,null))[_0xbd84('0x22')](function(_0x462762){if(_0x462762){return _0x462762[_0xbd84('0xb5')](_0xa4d53b[_0xbd84('0xb3')][_0xbd84('0xb6')],_[_0xbd84('0xb7')](_0xa4d53b['body'],[_0xbd84('0xb6'),'id'])||{});}})[_0xbd84('0x22')](respondWithResult(_0x387f41,null))['catch'](handleError(_0x387f41,null));};exports[_0xbd84('0xb8')]=function(_0x4f116f,_0x13096d,_0xb9604){var _0x306ff6={'raw':![],'where':{}};var _0x46ae09={};var _0x17ab73={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xbd84('0xb9')]({'where':{'id':_0x4f116f[_0xbd84('0xaf')]['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x13096d,null))[_0xbd84('0x22')](function(_0x3217f2){if(_0x3217f2){_0x46ae09['model']=_['keys'](db['FaxMessage'][_0xbd84('0x33')]);_0x46ae09['query']=_[_0xbd84('0x6d')](_0x4f116f[_0xbd84('0x3a')]);_0x46ae09[_0xbd84('0x38')]=_[_0xbd84('0x39')](_0x46ae09[_0xbd84('0x37')],_0x46ae09['query']);_0x306ff6[_0xbd84('0x3c')]=_[_0xbd84('0x39')](_0x46ae09['model'],qs[_0xbd84('0x3b')](_0x4f116f[_0xbd84('0x3a')]['fields']));_0x306ff6[_0xbd84('0x3c')]=_0x306ff6[_0xbd84('0x3c')][_0xbd84('0x3d')]?_0x306ff6[_0xbd84('0x3c')]:_0x46ae09[_0xbd84('0x37')];if(!_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x3e')](_0xbd84('0x3f'))){_0x306ff6[_0xbd84('0x1b')]=qs[_0xbd84('0x1b')](_0x4f116f['query'][_0xbd84('0x1b')]);_0x306ff6[_0xbd84('0x19')]=qs[_0xbd84('0x19')](_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x19')]);}_0x306ff6[_0xbd84('0x40')]=qs['sort'](_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x41')]);_0x306ff6[_0xbd84('0x42')]=qs[_0xbd84('0x38')](_[_0xbd84('0x43')](_0x4f116f[_0xbd84('0x3a')],_0x46ae09[_0xbd84('0x38')]));_0x306ff6['where'][_0xbd84('0xac')]=_0x3217f2['id'];if(_0x4f116f['query'][_0xbd84('0x7e')]){_0x306ff6[_0xbd84('0x42')]=_[_0xbd84('0x96')](_0x306ff6['where'],{'$or':_[_0xbd84('0x2a')](_0x306ff6[_0xbd84('0x3c')],function(_0x30cbba){var _0x41ca5a={};_0x41ca5a[_0x30cbba]={'$like':'%'+_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x7e')]+'%'};return _0x41ca5a;})});}if(_0x4f116f['query'][_0xbd84('0x75')]){var _0x2c5da=_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x75')][_0xbd84('0x2d')](',');var _0x76ff2b={};_0x76ff2b[_0x2c5da[0x0]]={'$gte':moment(_0x2c5da[0x1])[_0xbd84('0xba')](_0xbd84('0xbb'))};_0x306ff6['where']=_['merge'](_0x306ff6[_0xbd84('0x42')],_0x76ff2b);}_0x306ff6=_['merge']({},_0x306ff6,_0x4f116f['options']);return db['FaxMessage']['count']({'where':_0x306ff6[_0xbd84('0x42')]})[_0xbd84('0x22')](function(_0x37c5e5){_0x17ab73[_0xbd84('0x1c')]=_0x37c5e5;if(_0x4f116f[_0xbd84('0x3a')][_0xbd84('0xb0')]){_0x306ff6[_0xbd84('0xb1')]=[{'all':!![]}];}return db[_0xbd84('0xbc')][_0xbd84('0xbd')](_0x306ff6);})[_0xbd84('0x22')](function(_0x584bd5){_0x17ab73['rows']=_0x584bd5;return _0x17ab73;});}})['then'](respondWithFilteredResult(_0x13096d,_0x306ff6))[_0xbd84('0x30')](handleError(_0x13096d,null));};exports['addTags']=function(_0x5d0cc6,_0xacae71,_0x166678){return db[_0xbd84('0x32')][_0xbd84('0x61')]({'where':{'id':_0x5d0cc6['params']['id']}})['then'](handleEntityNotFound(_0xacae71,null))[_0xbd84('0x22')](function(_0x4dd3ac){if(_0x4dd3ac){return _0x4dd3ac[_0xbd84('0xbe')](_0x5d0cc6[_0xbd84('0xb3')][_0xbd84('0xb6')],_['omit'](_0x5d0cc6[_0xbd84('0xb3')],[_0xbd84('0xb6'),'id'])||{})[_0xbd84('0xbf')](function(){return db['Tag'][_0xbd84('0xbd')]({'attributes':['id',_0xbd84('0x27'),_0xbd84('0xc0')],'where':{'id':_0x5d0cc6[_0xbd84('0xb3')][_0xbd84('0xb6')]}});})[_0xbd84('0x22')](function(_0x4963ba){socket[_0xbd84('0xc1')]('faxInteractionTags:save',{'id':Number(_0x5d0cc6['params']['id']),'tags':_0x4963ba||[]});return{'id':Number(_0x5d0cc6[_0xbd84('0xaf')]['id']),'tags':_0x4963ba||[]};});}})[_0xbd84('0x22')](respondWithResult(_0xacae71,null))[_0xbd84('0x30')](handleError(_0xacae71,null));};exports[_0xbd84('0xc2')]=function(_0x1e210e,_0x3dd3c2,_0x2f122c){return db[_0xbd84('0x32')]['find']({'where':{'id':_0x1e210e['params']['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x3dd3c2,null))['then'](function(_0x40859e){if(_0x40859e){return _0x40859e[_0xbd84('0xc2')](_0x1e210e[_0xbd84('0x3a')][_0xbd84('0xb6')]);}})[_0xbd84('0x22')](respondWithStatusCode(_0x3dd3c2,null))['catch'](handleError(_0x3dd3c2,null));};exports['download']=function(_0x3285fe,_0x5ebb4a){var _0x329c5b=moment()['unix']()[_0xbd84('0x94')]();var _0x2dc096=path[_0xbd84('0xc3')](config[_0xbd84('0xc4')],_0xbd84('0xc5'),_0xbd84('0xc6'),_0xbd84('0xc7'));var _0x52ce8c=path[_0xbd84('0xc3')](config[_0xbd84('0xc4')],_0xbd84('0xc5'),'files',_0xbd84('0xc8'));var _0x1bc40d=path[_0xbd84('0xc3')](_0x2dc096,_0x329c5b);var _0x5c3cff=util[_0xbd84('0xba')](_0xbd84('0xc9'),_0x3285fe['params']['id'],_0x329c5b);var _0x52e9ef=path['join'](_0x2dc096,_0x5c3cff);var _0x3d948b=[];_0x3d948b[_0xbd84('0x2f')]({'model':db[_0xbd84('0xca')],'as':_0xbd84('0xca'),'raw':!![]});var _0x5cb3ed=[{'model':db['FaxMessage'],'as':_0xbd84('0xcb'),'attributes':['id','body',_0xbd84('0x73')],'include':_0x3d948b}];return db[_0xbd84('0x32')]['find']({'where':{'id':_0x3285fe['params']['id']},'include':_0x5cb3ed})[_0xbd84('0x22')](handleEntityNotFound(_0x5ebb4a,null))['then'](function(_0x4c9e13){if(_0x4c9e13&&_0x4c9e13[_0xbd84('0xcb')]){var _0x21eaaf=_0x4c9e13[_0xbd84('0xcc')]({'plain':!![]});fs[_0xbd84('0xcd')](_0x1bc40d);for(var _0x37d44d=0x0;_0x37d44d<_0x21eaaf['Messages'][_0xbd84('0x3d')];_0x37d44d++){var _0xeca945=_0x21eaaf['Messages'][_0x37d44d][_0xbd84('0xca')];if(_0xeca945){var _0x52c27e=path[_0xbd84('0xc3')](_0x52ce8c,_0xeca945[_0xbd84('0xce')]);if(fs[_0xbd84('0xcf')](_0x52c27e)){fs[_0xbd84('0xd0')](_0x52c27e)[_0xbd84('0xd1')](fs['createWriteStream'](path['join'](_0x1bc40d,_0xeca945[_0xbd84('0xce')])));}}}return BPromise[_0xbd84('0x8c')]()[_0xbd84('0x22')](function(){return new BPromise(function(_0x33debc,_0x540f5e){zipdir(_0x1bc40d,{'saveTo':_0x52e9ef},function(_0x395a7f,_0x763874){if(_0x395a7f)return _0x540f5e(_0x395a7f);return _0x33debc(_0x763874);});})[_0xbd84('0x22')](function(){return new BPromise(function(_0x547a18,_0x279611){rimraf(_0x1bc40d,function(_0x31d127){if(_0x31d127)_0x279611(_0x31d127);return _0x547a18();});});})[_0xbd84('0x22')](function(){return _0x5ebb4a[_0xbd84('0xd2')](_0x52e9ef,_0x5c3cff,function(_0x13f797){if(_0x13f797){console[_0xbd84('0xd3')](_0xbd84('0xd4'),_0x13f797);}else{fs[_0xbd84('0xd5')](_0x52e9ef);}});});});}else{return _0x5ebb4a[_0xbd84('0x24')](0xc8);}})[_0xbd84('0x30')](handleError(_0x5ebb4a,null));};
\ No newline at end of file
index 0711d78..1e8eaa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x117c=['FaxMessage','setMaxListeners','update','remove','setDataValue','Users','map','findAll','then','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','FaxInteraction'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x117c,0xae));var _0xc117=function(_0x51b362,_0x2a3af3){_0x51b362=_0x51b362-0x0;var _0x18bd6=_0x117c[_0x51b362];return _0x18bd6;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0xc117('0x0'))['db'][_0xc117('0x1')];var FaxMessage=require('../../mysqldb')['db'][_0xc117('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xc117('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc117('0x4'),'afterDestroy':_0xc117('0x5')};function emitEvent(_0x58cca3){return function(_0x343b4b,_0x528820,_0x1d8205){_0x343b4b['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x396535){_0x343b4b[_0xc117('0x6')](_0xc117('0x7'),_0x396535[_0xc117('0x8')](function(_0x25d89c){return{'id':_0x25d89c['id']};}));return FaxMessage[_0xc117('0x9')]({'where':{'FaxInteractionId':_0x343b4b['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc117('0xa')](function(_0x29cf2){_0x343b4b[_0xc117('0x6')]('unreadMessages',_0x29cf2['length']);FaxInteractionEvents[_0xc117('0xb')](_0x58cca3+':'+_0x343b4b['id'],_0x343b4b);FaxInteractionEvents[_0xc117('0xb')](_0x58cca3,_0x343b4b);_0x1d8205(null);})[_0xc117('0xc')](_0x1d8205(null));};}for(var e in events){if(events[_0xc117('0xd')](e)){var event=events[e];FaxInteraction[_0xc117('0xe')](e,emitEvent(event));}}module[_0xc117('0xf')]=FaxInteractionEvents;
\ No newline at end of file
+var _0xc16a=['update','remove','getUsers','Users','map','findAll','then','unreadMessages','emit','catch','hasOwnProperty','hook','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save'];(function(_0x209609,_0x273ffd){var _0x41848e=function(_0x5e5342){while(--_0x5e5342){_0x209609['push'](_0x209609['shift']());}};_0x41848e(++_0x273ffd);}(_0xc16a,0x1e0));var _0xac16=function(_0x339adf,_0x5489bf){_0x339adf=_0x339adf-0x0;var _0x1ed571=_0xc16a[_0x339adf];return _0x1ed571;};'use strict';var EventEmitter=require(_0xac16('0x0'));var FaxInteraction=require(_0xac16('0x1'))['db'][_0xac16('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xac16('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xac16('0x4')](0x0);var events={'afterCreate':_0xac16('0x5'),'afterUpdate':_0xac16('0x6'),'afterDestroy':_0xac16('0x7')};function emitEvent(_0x36aaf5){return function(_0x2cbe6b,_0x29129a,_0x4fe7de){_0x2cbe6b[_0xac16('0x8')]({'attributes':['id'],'raw':!![]})['then'](function(_0x6ea016){_0x2cbe6b['setDataValue'](_0xac16('0x9'),_0x6ea016[_0xac16('0xa')](function(_0x22e16f){return{'id':_0x22e16f['id']};}));return FaxMessage[_0xac16('0xb')]({'where':{'FaxInteractionId':_0x2cbe6b['id'],'direction':'in','read':![]},'raw':!![]});})[_0xac16('0xc')](function(_0x207501){_0x2cbe6b['setDataValue'](_0xac16('0xd'),_0x207501['length']);FaxInteractionEvents[_0xac16('0xe')](_0x36aaf5+':'+_0x2cbe6b['id'],_0x2cbe6b);FaxInteractionEvents['emit'](_0x36aaf5,_0x2cbe6b);_0x4fe7de(null);})[_0xac16('0xf')](_0x4fe7de(null));};}for(var e in events){if(events[_0xac16('0x10')](e)){var event=events[e];FaxInteraction[_0xac16('0x11')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
index 638d079..4f0c505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x264c=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','define','FaxInteraction','fax_interactions','changed','closed','closedAt'];(function(_0x49536b,_0x2abe5d){var _0x30de59=function(_0xb848e3){while(--_0xb848e3){_0x49536b['push'](_0x49536b['shift']());}};_0x30de59(++_0x2abe5d);}(_0x264c,0x1a6));var _0xc264=function(_0x382c73,_0x199cab){_0x382c73=_0x382c73-0x0;var _0x1dd0bf=_0x264c[_0x382c73];return _0x1dd0bf;};'use strict';var _=require(_0xc264('0x0'));var util=require('util');var logger=require(_0xc264('0x1'))('api');var moment=require('moment');var BPromise=require(_0xc264('0x2'));var rp=require(_0xc264('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc264('0x4'));var config=require(_0xc264('0x5'));var attributes=require('./faxInteraction.attributes');module['exports']=function(_0xff9a8a,_0x47a0c6){return _0xff9a8a[_0xc264('0x6')](_0xc264('0x7'),attributes,{'tableName':_0xc264('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5d9639,_0x401b06,_0x350662){if(_0x5d9639[_0xc264('0x9')](_0xc264('0xa'))){_0x5d9639[_0xc264('0xb')]=moment()[_0xc264('0xc')](_0xc264('0xd'));}_0x350662(null,_0x5d9639);}}});};
\ No newline at end of file
+var _0x9a44=['closedAt','format','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./faxInteraction.attributes','changed'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x9a44,0xc2));var _0x49a4=function(_0x28876d,_0x17989c){_0x28876d=_0x28876d-0x0;var _0x57d3c6=_0x9a44[_0x28876d];return _0x57d3c6;};'use strict';var _=require(_0x49a4('0x0'));var util=require(_0x49a4('0x1'));var logger=require(_0x49a4('0x2'))(_0x49a4('0x3'));var moment=require('moment');var BPromise=require(_0x49a4('0x4'));var rp=require(_0x49a4('0x5'));var fs=require('fs');var path=require(_0x49a4('0x6'));var rimraf=require('rimraf');var config=require(_0x49a4('0x7'));var attributes=require(_0x49a4('0x8'));module['exports']=function(_0x27e545,_0x168e47){return _0x27e545['define']('FaxInteraction',attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x857713,_0x316238,_0x181d4d){if(_0x857713[_0x49a4('0x9')]('closed')){_0x857713[_0x49a4('0xa')]=moment()[_0x49a4('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0x181d4d(null,_0x857713);}}});};
\ No newline at end of file
index 7e1f8ee..c0d0be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e65=['where','AddTagsToFaxInteraction','FaxInteraction','addTags','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','socket.io-emitter','./faxInteraction.socket','request','then','info','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxInteraction,\x20%s,\x20%s','message','result','catch','UpdateFaxInteraction','update','body','options','raw'];(function(_0x4b92b9,_0x1bd47d){var _0x157b9d=function(_0x41d8e4){while(--_0x41d8e4){_0x4b92b9['push'](_0x4b92b9['shift']());}};_0x157b9d(++_0x1bd47d);}(_0x5e65,0xf7));var _0x55e6=function(_0x2282cc,_0x2fb31f){_0x2282cc=_0x2282cc-0x0;var _0x5e34ee=_0x5e65[_0x2282cc];return _0x5e34ee;};'use strict';var _=require(_0x55e6('0x0'));var util=require(_0x55e6('0x1'));var moment=require(_0x55e6('0x2'));var BPromise=require(_0x55e6('0x3'));var rs=require(_0x55e6('0x4'));var fs=require('fs');var Redis=require(_0x55e6('0x5'));var db=require(_0x55e6('0x6'))['db'];var utils=require(_0x55e6('0x7'));var logger=require(_0x55e6('0x8'))('rpc');var config=require(_0x55e6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x55e6('0xa')]['http']({'port':0x232a});config[_0x55e6('0xb')]=_[_0x55e6('0xc')](config[_0x55e6('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x55e6('0xd'))(new Redis(config['redis']));require(_0x55e6('0xe'))['register'](socket);function respondWithRpcPromise(_0x3ec452,_0x52cb7b,_0x1d1c37){return new BPromise(function(_0x1c457b,_0x4d6315){return client[_0x55e6('0xf')](_0x3ec452,_0x1d1c37)[_0x55e6('0x10')](function(_0x240121){logger[_0x55e6('0x11')]('FaxInteraction,\x20%s,\x20%s',_0x52cb7b,_0x55e6('0x12'));logger[_0x55e6('0x13')](_0x55e6('0x14'),_0x52cb7b,_0x55e6('0x12'),JSON[_0x55e6('0x15')](_0x240121));if(_0x240121[_0x55e6('0x16')]){if(_0x240121[_0x55e6('0x16')][_0x55e6('0x17')]===0x1f4){logger[_0x55e6('0x16')](_0x55e6('0x18'),_0x52cb7b,_0x240121[_0x55e6('0x16')]['message']);return _0x4d6315(_0x240121['error'][_0x55e6('0x19')]);}logger[_0x55e6('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x52cb7b,_0x240121[_0x55e6('0x16')][_0x55e6('0x19')]);return _0x1c457b(_0x240121[_0x55e6('0x16')][_0x55e6('0x19')]);}else{logger['info'](_0x55e6('0x18'),_0x52cb7b,'request\x20sent');_0x1c457b(_0x240121[_0x55e6('0x1a')]['message']);}})[_0x55e6('0x1b')](function(_0xcfbdf7){logger[_0x55e6('0x16')](_0x55e6('0x18'),_0x52cb7b,_0xcfbdf7);_0x4d6315(_0xcfbdf7);});});}exports[_0x55e6('0x1c')]=function(_0x2c809f){var _0x149cbc=this;return new Promise(function(_0x3b0548,_0x4f1e12){return db['FaxInteraction'][_0x55e6('0x1d')](_0x2c809f[_0x55e6('0x1e')],{'raw':_0x2c809f[_0x55e6('0x1f')]?_0x2c809f['options'][_0x55e6('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c809f[_0x55e6('0x1f')]?_0x2c809f[_0x55e6('0x1f')][_0x55e6('0x21')]||null:null,'attributes':_0x2c809f[_0x55e6('0x1f')]?_0x2c809f[_0x55e6('0x1f')]['attributes']||null:null,'limit':_0x2c809f[_0x55e6('0x1f')]?_0x2c809f[_0x55e6('0x1f')]['limit']||null:null})[_0x55e6('0x10')](function(_0x429010){logger['info']('UpdateFaxInteraction',_0x2c809f);logger[_0x55e6('0x13')](_0x55e6('0x1c'),_0x2c809f,JSON[_0x55e6('0x15')](_0x429010));_0x3b0548(_0x429010);})[_0x55e6('0x1b')](function(_0x5096a9){logger[_0x55e6('0x16')]('UpdateFaxInteraction',_0x5096a9['message'],_0x2c809f);_0x4f1e12(_0x149cbc['error'](0x1f4,_0x5096a9['message']));});});};exports[_0x55e6('0x22')]=function(_0x334447){return new Promise(function(_0x5c72eb,_0xf5fd7d){return db[_0x55e6('0x23')]['find']({'where':_0x334447['options']?_0x334447[_0x55e6('0x1f')][_0x55e6('0x21')]||null:null})[_0x55e6('0x10')](function(_0x13508f){if(_0x13508f){return _0x13508f[_0x55e6('0x24')](_0x334447[_0x55e6('0x1e')]['ids'],_[_0x55e6('0x25')](_0x334447[_0x55e6('0x1e')],['ids','id'])||{});}})[_0x55e6('0x26')](function(_0x2a8617){logger[_0x55e6('0x11')](_0x55e6('0x27'),_0x334447);logger['debug']('AddTags',_0x334447,JSON[_0x55e6('0x15')](_0x2a8617));_0x5c72eb(_0x2a8617);})['catch'](function(_0x2e3f32){logger['error'](_0x55e6('0x27'),_0x2e3f32[_0x55e6('0x19')],_0x334447);_0xf5fd7d(_this[_0x55e6('0x16')](0x1f4,_0x2e3f32[_0x55e6('0x19')]));});});};
\ No newline at end of file
+var _0x21b2=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./faxInteraction.socket','request','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','UpdateFaxInteraction','FaxInteraction','update','options','raw','AddTagsToFaxInteraction','where','addTags','body','ids','spread','AddTags','stringify','lodash','moment'];(function(_0x42958e,_0x2a6ed1){var _0x578296=function(_0x52a6d4){while(--_0x52a6d4){_0x42958e['push'](_0x42958e['shift']());}};_0x578296(++_0x2a6ed1);}(_0x21b2,0x108));var _0x221b=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x21b2[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0x221b('0x0'));var util=require('util');var moment=require(_0x221b('0x1'));var BPromise=require('bluebird');var rs=require(_0x221b('0x2'));var fs=require('fs');var Redis=require(_0x221b('0x3'));var db=require(_0x221b('0x4'))['db'];var utils=require(_0x221b('0x5'));var logger=require(_0x221b('0x6'))('rpc');var config=require(_0x221b('0x7'));var jayson=require(_0x221b('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x221b('0x9')]=_[_0x221b('0xa')](config[_0x221b('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x221b('0xb'))(new Redis(config[_0x221b('0x9')]));require(_0x221b('0xc'))['register'](socket);function respondWithRpcPromise(_0x2c99ce,_0x5a7838,_0x935bfd){return new BPromise(function(_0x3e52d4,_0x4a8dbc){return client[_0x221b('0xd')](_0x2c99ce,_0x935bfd)[_0x221b('0xe')](function(_0x472319){logger['info'](_0x221b('0xf'),_0x5a7838,_0x221b('0x10'));logger[_0x221b('0x11')](_0x221b('0x12'),_0x5a7838,'request\x20sent',JSON['stringify'](_0x472319));if(_0x472319[_0x221b('0x13')]){if(_0x472319['error'][_0x221b('0x14')]===0x1f4){logger[_0x221b('0x13')](_0x221b('0xf'),_0x5a7838,_0x472319['error']['message']);return _0x4a8dbc(_0x472319['error'][_0x221b('0x15')]);}logger[_0x221b('0x13')]('FaxInteraction,\x20%s,\x20%s',_0x5a7838,_0x472319[_0x221b('0x13')][_0x221b('0x15')]);return _0x3e52d4(_0x472319[_0x221b('0x13')][_0x221b('0x15')]);}else{logger[_0x221b('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x5a7838,_0x221b('0x10'));_0x3e52d4(_0x472319[_0x221b('0x17')][_0x221b('0x15')]);}})[_0x221b('0x18')](function(_0x49403e){logger['error'](_0x221b('0xf'),_0x5a7838,_0x49403e);_0x4a8dbc(_0x49403e);});});}exports[_0x221b('0x19')]=function(_0x556737){var _0x40616f=this;return new Promise(function(_0x200f51,_0x4f20d4){return db[_0x221b('0x1a')][_0x221b('0x1b')](_0x556737['body'],{'raw':_0x556737[_0x221b('0x1c')]?_0x556737[_0x221b('0x1c')][_0x221b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x556737[_0x221b('0x1c')]?_0x556737['options']['where']||null:null,'attributes':_0x556737[_0x221b('0x1c')]?_0x556737[_0x221b('0x1c')]['attributes']||null:null,'limit':_0x556737[_0x221b('0x1c')]?_0x556737[_0x221b('0x1c')]['limit']||null:null})['then'](function(_0x2ca860){logger['info']('UpdateFaxInteraction',_0x556737);logger[_0x221b('0x11')](_0x221b('0x19'),_0x556737,JSON['stringify'](_0x2ca860));_0x200f51(_0x2ca860);})['catch'](function(_0x5f2f30){logger[_0x221b('0x13')]('UpdateFaxInteraction',_0x5f2f30[_0x221b('0x15')],_0x556737);_0x4f20d4(_0x40616f[_0x221b('0x13')](0x1f4,_0x5f2f30[_0x221b('0x15')]));});});};exports[_0x221b('0x1e')]=function(_0x2c7474){return new Promise(function(_0x26607d,_0x3004f1){return db['FaxInteraction']['find']({'where':_0x2c7474['options']?_0x2c7474['options'][_0x221b('0x1f')]||null:null})['then'](function(_0x428e5d){if(_0x428e5d){return _0x428e5d[_0x221b('0x20')](_0x2c7474[_0x221b('0x21')][_0x221b('0x22')],_['omit'](_0x2c7474[_0x221b('0x21')],[_0x221b('0x22'),'id'])||{});}})[_0x221b('0x23')](function(_0x4d49ce){logger[_0x221b('0x16')](_0x221b('0x24'),_0x2c7474);logger[_0x221b('0x11')](_0x221b('0x24'),_0x2c7474,JSON[_0x221b('0x25')](_0x4d49ce));_0x26607d(_0x4d49ce);})[_0x221b('0x18')](function(_0x29b324){logger[_0x221b('0x13')]('AddTags',_0x29b324[_0x221b('0x15')],_0x2c7474);_0x3004f1(_this[_0x221b('0x13')](0x1f4,_0x29b324[_0x221b('0x15')]));});});};
\ No newline at end of file
index 38e1640..bf11d9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c21=['emit','removeListener','faxInteraction:','./faxInteraction.events','update'];(function(_0x5de893,_0x2f7b90){var _0x5602af=function(_0x35e097){while(--_0x35e097){_0x5de893['push'](_0x5de893['shift']());}};_0x5602af(++_0x2f7b90);}(_0x7c21,0x80));var _0x17c2=function(_0x5eee33,_0x584025){_0x5eee33=_0x5eee33-0x0;var _0x19f6ff=_0x7c21[_0x5eee33];return _0x19f6ff;};'use strict';var FaxInteractionEvents=require(_0x17c2('0x0'));var events=['save','remove',_0x17c2('0x1')];function createListener(_0x581f82,_0x23fe08){return function(_0x157cd3){_0x23fe08[_0x17c2('0x2')](_0x581f82,_0x157cd3);};}function removeListener(_0x522954,_0x2a3b2d){return function(){FaxInteractionEvents[_0x17c2('0x3')](_0x522954,_0x2a3b2d);};}exports['register']=function(_0x41513d){for(var _0x22ef4a=0x0,_0xc52106=events['length'];_0x22ef4a<_0xc52106;_0x22ef4a++){var _0x2b1d43=events[_0x22ef4a];var _0x4c4b24=createListener(_0x17c2('0x4')+_0x2b1d43,_0x41513d);FaxInteractionEvents['on'](_0x2b1d43,_0x4c4b24);}};
\ No newline at end of file
+var _0xcc13=['remove','emit','removeListener','length','faxInteraction:','./faxInteraction.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcc13,0xfa));var _0x3cc1=function(_0x59665a,_0x12c33a){_0x59665a=_0x59665a-0x0;var _0x1c6f66=_0xcc13[_0x59665a];return _0x1c6f66;};'use strict';var FaxInteractionEvents=require(_0x3cc1('0x0'));var events=[_0x3cc1('0x1'),_0x3cc1('0x2'),'update'];function createListener(_0x4c5244,_0x3d70a2){return function(_0x39f67e){_0x3d70a2[_0x3cc1('0x3')](_0x4c5244,_0x39f67e);};}function removeListener(_0x1923d5,_0x113927){return function(){FaxInteractionEvents[_0x3cc1('0x4')](_0x1923d5,_0x113927);};}exports['register']=function(_0x2c870c){for(var _0x1f7eb4=0x0,_0x4d02c3=events[_0x3cc1('0x5')];_0x1f7eb4<_0x4d02c3;_0x1f7eb4++){var _0x24a982=events[_0x1f7eb4];var _0x2d1baa=createListener(_0x3cc1('0x6')+_0x24a982,_0x2c870c);FaxInteractionEvents['on'](_0x24a982,_0x2d1baa);}};
\ No newline at end of file
index c2b8727..c2bc39d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d9c=['put','tracked','fax','faxinteraction:update','update','delete','faxinteraction:destroy','removeTags','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages','download','post','create','addMessage','/:id/tags','faxinteraction:addtags','addTags'];(function(_0x2b0667,_0x49794b){var _0x46bee1=function(_0x3d6ae9){while(--_0x3d6ae9){_0x2b0667['push'](_0x2b0667['shift']());}};_0x46bee1(++_0x49794b);}(_0x0d9c,0x7c));var _0xc0d9=function(_0xc08f00,_0x28067f){_0xc08f00=_0xc08f00-0x0;var _0x8649f7=_0x0d9c[_0xc08f00];return _0x8649f7;};'use strict';var multer=require('multer');var util=require(_0xc0d9('0x0'));var path=require(_0xc0d9('0x1'));var timeout=require(_0xc0d9('0x2'));var express=require(_0xc0d9('0x3'));var router=express['Router']();var fs_extra=require(_0xc0d9('0x4'));var auth=require(_0xc0d9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc0d9('0x6'));var controller=require('./faxInteraction.controller');router[_0xc0d9('0x7')]('/',auth[_0xc0d9('0x8')](),controller[_0xc0d9('0x9')]);router[_0xc0d9('0x7')](_0xc0d9('0xa'),auth[_0xc0d9('0x8')](),controller[_0xc0d9('0xb')]);router[_0xc0d9('0x7')](_0xc0d9('0xc'),auth[_0xc0d9('0x8')](),controller['show']);router[_0xc0d9('0x7')](_0xc0d9('0xd'),auth['isAuthenticated'](),controller['getMessages']);router[_0xc0d9('0x7')]('/:id/download',auth[_0xc0d9('0x8')](),controller[_0xc0d9('0xe')]);router[_0xc0d9('0xf')]('/',auth[_0xc0d9('0x8')](),controller[_0xc0d9('0x10')]);router[_0xc0d9('0xf')]('/:id/messages',auth[_0xc0d9('0x8')](),controller[_0xc0d9('0x11')]);router[_0xc0d9('0xf')](_0xc0d9('0x12'),auth[_0xc0d9('0x8')](),interaction['tracked']('fax',_0xc0d9('0x13')),controller[_0xc0d9('0x14')]);router[_0xc0d9('0x15')]('/:id',auth[_0xc0d9('0x8')](),interaction[_0xc0d9('0x16')](_0xc0d9('0x17'),_0xc0d9('0x18')),controller[_0xc0d9('0x19')]);router[_0xc0d9('0x1a')](_0xc0d9('0xc'),auth[_0xc0d9('0x8')](),interaction[_0xc0d9('0x16')](_0xc0d9('0x17'),_0xc0d9('0x1b')),controller['destroy']);router['delete'](_0xc0d9('0x12'),auth[_0xc0d9('0x8')](),controller[_0xc0d9('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x536a=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','delete','faxinteraction:destroy'];(function(_0x57a154,_0x5b0077){var _0x4bbb7e=function(_0x10fa34){while(--_0x10fa34){_0x57a154['push'](_0x57a154['shift']());}};_0x4bbb7e(++_0x5b0077);}(_0x536a,0x14c));var _0xa536=function(_0x5a1a43,_0x2d8ebb){_0x5a1a43=_0x5a1a43-0x0;var _0x258550=_0x536a[_0x5a1a43];return _0x258550;};'use strict';var multer=require(_0xa536('0x0'));var util=require(_0xa536('0x1'));var path=require(_0xa536('0x2'));var timeout=require(_0xa536('0x3'));var express=require(_0xa536('0x4'));var router=express[_0xa536('0x5')]();var fs_extra=require(_0xa536('0x6'));var auth=require(_0xa536('0x7'));var interaction=require(_0xa536('0x8'));var config=require('../../config/environment');var controller=require(_0xa536('0x9'));router[_0xa536('0xa')]('/',auth[_0xa536('0xb')](),controller[_0xa536('0xc')]);router['get'](_0xa536('0xd'),auth[_0xa536('0xb')](),controller[_0xa536('0xe')]);router[_0xa536('0xa')](_0xa536('0xf'),auth[_0xa536('0xb')](),controller[_0xa536('0x10')]);router[_0xa536('0xa')](_0xa536('0x11'),auth[_0xa536('0xb')](),controller['getMessages']);router['get'](_0xa536('0x12'),auth['isAuthenticated'](),controller[_0xa536('0x13')]);router[_0xa536('0x14')]('/',auth['isAuthenticated'](),controller[_0xa536('0x15')]);router[_0xa536('0x14')](_0xa536('0x11'),auth['isAuthenticated'](),controller['addMessage']);router['post'](_0xa536('0x16'),auth[_0xa536('0xb')](),interaction[_0xa536('0x17')](_0xa536('0x18'),_0xa536('0x19')),controller[_0xa536('0x1a')]);router[_0xa536('0x1b')]('/:id',auth[_0xa536('0xb')](),interaction[_0xa536('0x17')](_0xa536('0x18'),_0xa536('0x1c')),controller['update']);router[_0xa536('0x1d')](_0xa536('0xf'),auth['isAuthenticated'](),interaction[_0xa536('0x17')](_0xa536('0x18'),_0xa536('0x1e')),controller[_0xa536('0x1f')]);router['delete'](_0xa536('0x16'),auth[_0xa536('0xb')](),controller['removeTags']);module[_0xa536('0x20')]=router;
\ No newline at end of file
index c5f8439..17e2d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5712=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x551f70,_0x21460e){var _0x1de80d=function(_0x140510){while(--_0x140510){_0x551f70['push'](_0x551f70['shift']());}};_0x1de80d(++_0x21460e);}(_0x5712,0x140));var _0x2571=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5712[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x2571('0x0'));module[_0x2571('0x1')]={'body':{'type':Sequelize[_0x2571('0x2')](_0x2571('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x2571('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2571('0x5')]('in',_0x2571('0x6')),'defaultValue':_0x2571('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x2571('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x2571('0x7')]}};
\ No newline at end of file
+var _0x47c7=['DATE','sequelize','TEXT','medium','ENUM','out'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x47c7,0x1ab));var _0x747c=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0x47c7[_0x616290];return _0x453879;};'use strict';var Sequelize=require(_0x747c('0x0'));module['exports']={'body':{'type':Sequelize[_0x747c('0x1')](_0x747c('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x747c('0x3')]('in',_0x747c('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x747c('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x747c('0x5')]}};
\ No newline at end of file
index 9cecd6f..749cad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd6=['FaxInteraction','FaxInteractionId','read1stAt','format','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','SIP/%s','channel','event','EventManager','fax','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','rejectmessage','create','CmContact','findOne','isNil','Attachment','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','basename','download','root','server','files','attachments','join','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','then','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','order','sort','pick','filter','where','merge','includeAll','include','findAll','show','params','options','update','body','find','describe','../../config/logger','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get'];(function(_0x59ddd3,_0x21440c){var _0x49fb32=function(_0x35d5dd){while(--_0x35d5dd){_0x59ddd3['push'](_0x59ddd3['shift']());}};_0x49fb32(++_0x21440c);}(_0x8cd6,0xbe));var _0x68cd=function(_0x341a08,_0x52c3f1){_0x341a08=_0x341a08-0x0;var _0x4b7c31=_0x8cd6[_0x341a08];return _0x4b7c31;};'use strict';var emlformat=require(_0x68cd('0x0'));var rimraf=require(_0x68cd('0x1'));var zipdir=require(_0x68cd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x68cd('0x3'));var moment=require(_0x68cd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x68cd('0x5'));var util=require(_0x68cd('0x6'));var path=require(_0x68cd('0x7'));var sox=require(_0x68cd('0x8'));var csv=require(_0x68cd('0x9'));var ejs=require(_0x68cd('0xa'));var fs=require('fs');var fs_extra=require(_0x68cd('0xb'));var _=require(_0x68cd('0xc'));var squel=require('squel');var crypto=require(_0x68cd('0xd'));var jsforce=require(_0x68cd('0xe'));var deskjs=require(_0x68cd('0xf'));var toCsv=require('to-csv');var querystring=require(_0x68cd('0x10'));var Papa=require(_0x68cd('0x11'));var Redis=require(_0x68cd('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x68cd('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68cd('0x14'));var logger=require('../../config/logger')(_0x68cd('0x15'));var utils=require(_0x68cd('0x16'));var config=require(_0x68cd('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x68cd('0x18'))['db'];config[_0x68cd('0x19')]=_[_0x68cd('0x1a')](config[_0x68cd('0x19')],{'host':_0x68cd('0x1b'),'port':0x18eb});var socket=require(_0x68cd('0x1c'))(new Redis(config[_0x68cd('0x19')]));require(_0x68cd('0x1d'))[_0x68cd('0x1e')](socket);var jayson=require(_0x68cd('0x1f'));var client=jayson[_0x68cd('0x20')]['http']({'port':0x232c});var client9002=jayson['client'][_0x68cd('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1fec43,_0x1bdb0d,_0x2a77e5,_0x4df732){return new BPromise(function(_0x52c87f,_0x40d627){var _0x117b57=_0x4df732||client;return _0x117b57[_0x68cd('0x22')](_0x1fec43,_0x2a77e5)['then'](function(_0x1f8258){logger[_0x68cd('0x23')](_0x68cd('0x24'),_0x1bdb0d,_0x68cd('0x25'));logger[_0x68cd('0x26')](_0x68cd('0x27'),_0x1bdb0d,'request\x20sent',JSON[_0x68cd('0x28')](_0x1f8258));if(_0x1f8258['error']){if(_0x1f8258[_0x68cd('0x29')][_0x68cd('0x2a')]===0x1f4){logger[_0x68cd('0x29')](_0x68cd('0x24'),_0x1bdb0d,_0x1f8258[_0x68cd('0x29')][_0x68cd('0x2b')]);return _0x40d627(_0x1f8258[_0x68cd('0x29')][_0x68cd('0x2b')]);}logger[_0x68cd('0x29')]('FaxMessage,\x20%s,\x20%s',_0x1bdb0d,_0x1f8258[_0x68cd('0x29')]['message']);return _0x52c87f(_0x1f8258[_0x68cd('0x29')][_0x68cd('0x2b')]);}else{logger[_0x68cd('0x23')](_0x68cd('0x24'),_0x1bdb0d,'request\x20sent');_0x52c87f(_0x1f8258[_0x68cd('0x2c')][_0x68cd('0x2b')]);}})[_0x68cd('0x2d')](function(_0x4babf8){logger['error']('FaxMessage,\x20%s,\x20%s',_0x1bdb0d,_0x4babf8);_0x40d627(_0x4babf8);});});}function respondWithStatusCode(_0x3ea489,_0x299937){_0x299937=_0x299937||0xcc;return function(_0x3173f0){if(_0x3173f0){return _0x3ea489[_0x68cd('0x2e')](_0x299937);}return _0x3ea489[_0x68cd('0x2f')](_0x299937)[_0x68cd('0x30')]();};}function respondWithResult(_0xe8e65e,_0x3ea357){_0x3ea357=_0x3ea357||0xc8;return function(_0x1cdbf0){if(_0x1cdbf0){return _0xe8e65e['status'](_0x3ea357)[_0x68cd('0x31')](_0x1cdbf0);}};}function respondWithFilteredResult(_0x41d5f2,_0x399214){return function(_0x4e5345){if(_0x4e5345){var _0x1e1cb7=typeof _0x399214[_0x68cd('0x32')]===_0x68cd('0x33')&&typeof _0x399214[_0x68cd('0x34')]===_0x68cd('0x33');var _0x24fb50=_0x4e5345[_0x68cd('0x35')];var _0x216c2c=_0x1e1cb7?0x0:_0x399214[_0x68cd('0x32')];var _0x257a6b=_0x1e1cb7?_0x4e5345[_0x68cd('0x35')]:_0x399214[_0x68cd('0x32')]+_0x399214['limit'];var _0x215436;if(_0x257a6b>=_0x24fb50){_0x257a6b=_0x24fb50;_0x215436=0xc8;}else{_0x215436=0xce;}_0x41d5f2[_0x68cd('0x2f')](_0x215436);return _0x41d5f2[_0x68cd('0x36')]('Content-Range',_0x216c2c+'-'+_0x257a6b+'/'+_0x24fb50)['json'](_0x4e5345);}return null;};}function patchUpdates(_0x5d3fa8){return function(_0x2cbf55){try{jsonpatch[_0x68cd('0x37')](_0x2cbf55,_0x5d3fa8,!![]);}catch(_0x699472){return BPromise[_0x68cd('0x38')](_0x699472);}return _0x2cbf55['save']();};}function saveUpdates(_0x1a18d8,_0x58c65e){return function(_0x4d614d){if(_0x4d614d){return _0x4d614d['update'](_0x1a18d8)[_0x68cd('0x39')](function(_0x545ac8){return _0x545ac8;});}return null;};}function removeEntity(_0x10ceb1,_0x2f0ab2){return function(_0x52dff8){if(_0x52dff8){return _0x52dff8[_0x68cd('0x3a')]()[_0x68cd('0x39')](function(){_0x10ceb1[_0x68cd('0x2f')](0xcc)[_0x68cd('0x30')]();});}};}function handleEntityNotFound(_0x40e5b9,_0x2728b0){return function(_0x304664){if(!_0x304664){_0x40e5b9['sendStatus'](0x194);}return _0x304664;};}function handleError(_0x3233cc,_0x570f7e){_0x570f7e=_0x570f7e||0x1f4;return function(_0x272068){logger[_0x68cd('0x29')](_0x272068[_0x68cd('0x3b')]);if(_0x272068[_0x68cd('0x3c')]){delete _0x272068['name'];}_0x3233cc[_0x68cd('0x2f')](_0x570f7e)[_0x68cd('0x3d')](_0x272068);};}exports[_0x68cd('0x3e')]=function(_0x4bf06e,_0x161b76){var _0xe2645a={},_0x10b45f={},_0x2642b5={'count':0x0,'rows':[]};var _0x430f10=_[_0x68cd('0x3f')](db[_0x68cd('0x40')][_0x68cd('0x41')],function(_0x16b541){return{'name':_0x16b541[_0x68cd('0x42')],'type':_0x16b541[_0x68cd('0x43')][_0x68cd('0x44')]};});_0x10b45f['model']=_[_0x68cd('0x3f')](_0x430f10,_0x68cd('0x3c'));_0x10b45f[_0x68cd('0x45')]=_[_0x68cd('0x46')](_0x4bf06e['query']);_0x10b45f[_0x68cd('0x47')]=_[_0x68cd('0x48')](_0x10b45f[_0x68cd('0x49')],_0x10b45f[_0x68cd('0x45')]);_0xe2645a[_0x68cd('0x4a')]=_[_0x68cd('0x48')](_0x10b45f[_0x68cd('0x49')],qs[_0x68cd('0x4b')](_0x4bf06e[_0x68cd('0x45')][_0x68cd('0x4b')]));_0xe2645a[_0x68cd('0x4a')]=_0xe2645a[_0x68cd('0x4a')][_0x68cd('0x4c')]?_0xe2645a[_0x68cd('0x4a')]:_0x10b45f['model'];if(!_0x4bf06e['query']['hasOwnProperty']('nolimit')){_0xe2645a[_0x68cd('0x34')]=qs[_0x68cd('0x34')](_0x4bf06e['query'][_0x68cd('0x34')]);_0xe2645a['offset']=qs[_0x68cd('0x32')](_0x4bf06e[_0x68cd('0x45')][_0x68cd('0x32')]);}_0xe2645a[_0x68cd('0x4d')]=qs['sort'](_0x4bf06e[_0x68cd('0x45')][_0x68cd('0x4e')]);_0xe2645a['where']=qs[_0x68cd('0x47')](_[_0x68cd('0x4f')](_0x4bf06e[_0x68cd('0x45')],_0x10b45f[_0x68cd('0x47')]),_0x430f10);if(_0x4bf06e[_0x68cd('0x45')][_0x68cd('0x50')]){_0xe2645a[_0x68cd('0x51')]=_[_0x68cd('0x52')](_0xe2645a[_0x68cd('0x51')],{'$or':_[_0x68cd('0x3f')](_0x430f10,function(_0x4328b2){if(_0x4328b2[_0x68cd('0x43')]!=='VIRTUAL'){var _0x40b108={};_0x40b108[_0x4328b2[_0x68cd('0x3c')]]={'$like':'%'+_0x4bf06e[_0x68cd('0x45')][_0x68cd('0x50')]+'%'};return _0x40b108;}})});}_0xe2645a=_[_0x68cd('0x52')]({},_0xe2645a,_0x4bf06e['options']);var _0x2b1818={'where':_0xe2645a[_0x68cd('0x51')]};return db['FaxMessage']['count'](_0x2b1818)['then'](function(_0x14086b){_0x2642b5[_0x68cd('0x35')]=_0x14086b;if(_0x4bf06e[_0x68cd('0x45')][_0x68cd('0x53')]){_0xe2645a[_0x68cd('0x54')]=[{'all':!![]}];}return db['FaxMessage'][_0x68cd('0x55')](_0xe2645a);})[_0x68cd('0x39')](function(_0x543de3){_0x2642b5['rows']=_0x543de3;return _0x2642b5;})[_0x68cd('0x39')](respondWithFilteredResult(_0x161b76,_0xe2645a))['catch'](handleError(_0x161b76,null));};exports[_0x68cd('0x56')]=function(_0x4cd3f7,_0x352854){var _0x137619={'raw':!![],'where':{'id':_0x4cd3f7[_0x68cd('0x57')]['id']}},_0x540342={};_0x540342[_0x68cd('0x49')]=_[_0x68cd('0x46')](db[_0x68cd('0x40')][_0x68cd('0x41')]);_0x540342[_0x68cd('0x45')]=_[_0x68cd('0x46')](_0x4cd3f7['query']);_0x540342['filters']=_['intersection'](_0x540342[_0x68cd('0x49')],_0x540342['query']);_0x137619[_0x68cd('0x4a')]=_[_0x68cd('0x48')](_0x540342[_0x68cd('0x49')],qs['fields'](_0x4cd3f7[_0x68cd('0x45')][_0x68cd('0x4b')]));_0x137619[_0x68cd('0x4a')]=_0x137619[_0x68cd('0x4a')]['length']?_0x137619[_0x68cd('0x4a')]:_0x540342[_0x68cd('0x49')];if(_0x4cd3f7['query'][_0x68cd('0x53')]){_0x137619[_0x68cd('0x54')]=[{'all':!![]}];}_0x137619=_[_0x68cd('0x52')]({},_0x137619,_0x4cd3f7[_0x68cd('0x58')]);return db[_0x68cd('0x40')]['find'](_0x137619)[_0x68cd('0x39')](handleEntityNotFound(_0x352854,null))[_0x68cd('0x39')](respondWithResult(_0x352854,null))[_0x68cd('0x2d')](handleError(_0x352854,null));};exports[_0x68cd('0x59')]=function(_0x246e07,_0x58a9ea){if(_0x246e07['body']['id']){delete _0x246e07[_0x68cd('0x5a')]['id'];}return db[_0x68cd('0x40')][_0x68cd('0x5b')]({'where':{'id':_0x246e07[_0x68cd('0x57')]['id']}})[_0x68cd('0x39')](handleEntityNotFound(_0x58a9ea,null))[_0x68cd('0x39')](saveUpdates(_0x246e07[_0x68cd('0x5a')],null))[_0x68cd('0x39')](respondWithResult(_0x58a9ea,null))[_0x68cd('0x2d')](handleError(_0x58a9ea,null));};exports['destroy']=function(_0x3ca96c,_0x398fc9){return db['FaxMessage'][_0x68cd('0x5b')]({'where':{'id':_0x3ca96c[_0x68cd('0x57')]['id']}})[_0x68cd('0x39')](handleEntityNotFound(_0x398fc9,null))[_0x68cd('0x39')](removeEntity(_0x398fc9,null))[_0x68cd('0x2d')](handleError(_0x398fc9,null));};exports[_0x68cd('0x5c')]=function(_0x19016b,_0x1f7f08){return db['FaxMessage'][_0x68cd('0x5c')]()[_0x68cd('0x39')](respondWithResult(_0x1f7f08,null))[_0x68cd('0x2d')](handleError(_0x1f7f08,null));};var interaction_log=require(_0x68cd('0x5d'))('fax-interactions');exports[_0x68cd('0x5e')]=function(_0x2b4656,_0x537f85,_0x3ae39d){var _0x42215c={'agent':{},'channel':'fax'};if(_0x2b4656['body']['id']){delete _0x2b4656[_0x68cd('0x5a')]['id'];}_0x2b4656[_0x68cd('0x5a')][_0x68cd('0x5f')]=!![];_0x2b4656[_0x68cd('0x5a')][_0x68cd('0x60')]=moment()['format'](_0x68cd('0x61'));_0x2b4656[_0x68cd('0x5a')][_0x68cd('0x62')]=_0x2b4656[_0x68cd('0x5a')][_0x68cd('0x62')]||_0x2b4656[_0x68cd('0x63')]['id'];_0x42215c[_0x68cd('0x64')]['id']=_0x2b4656[_0x68cd('0x5a')][_0x68cd('0x62')];return db['FaxMessage'][_0x68cd('0x5b')]({'where':{'id':_0x2b4656[_0x68cd('0x57')]['id'],'UserId':null}})[_0x68cd('0x39')](handleEntityNotFound(_0x537f85,null))['then'](saveUpdates(_0x2b4656[_0x68cd('0x5a')],null))[_0x68cd('0x39')](function(_0x43501c){if(_0x43501c){_0x42215c[_0x68cd('0x2b')]=_0x43501c[_0x68cd('0x65')]({'plain':!![]});return db[_0x68cd('0x66')][_0x68cd('0x5b')]({'where':{'id':_0x43501c[_0x68cd('0x67')]}});}return null;})[_0x68cd('0x39')](handleEntityNotFound(_0x537f85,null))[_0x68cd('0x39')](function(_0xed40a3){if(_0xed40a3){return _0xed40a3[_0x68cd('0x59')]({'UserId':_0x2b4656[_0x68cd('0x5a')][_0x68cd('0x62')],'read1stAt':_['isNil'](_0xed40a3[_0x68cd('0x68')])?moment()[_0x68cd('0x69')](_0x68cd('0x61')):undefined});}return null;})[_0x68cd('0x39')](function(_0x544712){if(_0x544712){_0x42215c[_0x68cd('0x6a')]=_0x544712[_0x68cd('0x65')]({'plain':!![]});interaction_log[_0x68cd('0x23')](_0x68cd('0x6b'),_0x2b4656[_0x68cd('0x63')]['id'],_0x2b4656[_0x68cd('0x63')][_0x68cd('0x3c')],_0x2b4656[_0x68cd('0x63')][_0x68cd('0x6c')],_0x42215c[_0x68cd('0x6a')]['id'],_0x2b4656['body']?JSON[_0x68cd('0x28')](_0x2b4656[_0x68cd('0x5a')]):_0x68cd('0x6d'));return respondWithRpcPromise('AcceptMessage',_0x68cd('0x6e'),_0x42215c);}return null;})[_0x68cd('0x39')](function(_0x50d510){var _0x20709b=_0x68cd('0x6f')+_0x50d510[_0x68cd('0x2b')][_0x68cd('0x70')];return db[_0x68cd('0x71')][_0x68cd('0x45')](_0x20709b,{'type':db[_0x68cd('0x72')][_0x68cd('0x73')]['SELECT'],'raw':!![]})[_0x68cd('0x39')](function(_0x5d47e7){return _0x5d47e7;});})['then'](function(_0x5be938){if(_0x5be938){_0x42215c[_0x68cd('0x2b')][_0x68cd('0x74')]=_0x5be938[0x0];if(!_0x2b4656[_0x68cd('0x5a')]['UserId'])return;return db[_0x68cd('0x75')][_0x68cd('0x5b')]({'where':{'id':_0x2b4656['body'][_0x68cd('0x62')],'role':'agent'},'attributes':['id','name',_0x68cd('0x76'),_0x68cd('0x77'),_0x68cd('0x78')],'raw':!![]});}return null;})[_0x68cd('0x39')](function(_0x14f17e){if(!_0x14f17e)return null;_0x42215c[_0x68cd('0x2b')][_0x68cd('0x64')]=_0x14f17e;return _0x42215c;})[_0x68cd('0x39')](function(_0x3a1fb1){if(_0x3a1fb1){if(_0x2b4656['body']['manual']){_0x42215c['message']['interface']=util[_0x68cd('0x69')](_0x68cd('0x79'),_0x2b4656[_0x68cd('0x63')][_0x68cd('0x3c')]);_0x42215c[_0x68cd('0x2b')][_0x68cd('0x7a')]=_0x42215c[_0x68cd('0x7a')];_0x42215c[_0x68cd('0x2b')][_0x68cd('0x7b')]='accept';return respondWithRpcPromise(_0x68cd('0x7c'),_0x68cd('0x7c'),{'event':'acceptmessage','message':_0x42215c[_0x68cd('0x2b')]},client9002)[_0x68cd('0x39')](function(){return _0x42215c;});}return _0x42215c;}return null;})[_0x68cd('0x39')](respondWithResult(_0x537f85,null))[_0x68cd('0x2d')](handleError(_0x537f85,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x68cd('0x38')]=function(_0x361863,_0x594744,_0x3c04be){var _0x51ea71={'agent':{},'channel':_0x68cd('0x7d')};if(_0x361863[_0x68cd('0x5a')]['id']){delete _0x361863[_0x68cd('0x5a')]['id'];}_0x361863[_0x68cd('0x5a')][_0x68cd('0x62')]=_0x361863[_0x68cd('0x5a')][_0x68cd('0x62')]||_0x361863['user']['id'];_0x51ea71['agent']['id']=_0x361863['body'][_0x68cd('0x62')];return db[_0x68cd('0x40')][_0x68cd('0x5b')]({'where':{'id':_0x361863[_0x68cd('0x57')]['id'],'UserId':null}})[_0x68cd('0x39')](handleEntityNotFound(_0x594744,null))['then'](function(_0x2e71bf){if(_0x2e71bf){_0x51ea71[_0x68cd('0x2b')]=_0x2e71bf[_0x68cd('0x65')]({'plain':!![]});return db[_0x68cd('0x66')][_0x68cd('0x5b')]({'where':{'id':_0x2e71bf['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x594744,null))['then'](function(_0xb2f80a){if(_0xb2f80a){_0x51ea71[_0x68cd('0x6a')]=_0xb2f80a['get']({'plain':!![]});interaction_log[_0x68cd('0x23')](_0x68cd('0x7e'),_0x361863[_0x68cd('0x63')]['id'],_0x361863['user']['name'],_0x361863[_0x68cd('0x63')][_0x68cd('0x6c')],_0x51ea71['interaction']['id'],_0x361863[_0x68cd('0x5a')]?JSON[_0x68cd('0x28')](_0x361863['body']):_0x68cd('0x6d'));return respondWithRpcPromise(_0x68cd('0x7f'),_0x68cd('0x80'),_0x51ea71);}return null;})[_0x68cd('0x39')](function(_0x3c2067){var _0x4f9712=_0x68cd('0x6f')+_0x3c2067['message'][_0x68cd('0x70')];return db['sequelize'][_0x68cd('0x45')](_0x4f9712,{'type':db[_0x68cd('0x72')][_0x68cd('0x73')][_0x68cd('0x81')],'raw':!![]})[_0x68cd('0x39')](function(_0x2d00dd){return _0x2d00dd;});})['then'](function(_0x3ce00c){if(_0x3ce00c){_0x51ea71['message'][_0x68cd('0x74')]=_0x3ce00c[0x0];if(!_0x361863['body'][_0x68cd('0x62')])return;return db[_0x68cd('0x75')][_0x68cd('0x5b')]({'where':{'id':_0x361863['body'][_0x68cd('0x62')],'role':'agent'},'attributes':['id',_0x68cd('0x3c'),_0x68cd('0x76'),_0x68cd('0x77'),_0x68cd('0x78')],'raw':!![]});}return null;})['then'](function(_0x2f8b89){if(!_0x2f8b89)return null;_0x51ea71[_0x68cd('0x2b')][_0x68cd('0x64')]=_0x2f8b89;return _0x51ea71;})[_0x68cd('0x39')](function(_0x15d748){if(_0x15d748){_0x15d748[_0x68cd('0x2b')]['interface']=util[_0x68cd('0x69')]('SIP/%s',_0x361863[_0x68cd('0x63')][_0x68cd('0x3c')]);_0x15d748[_0x68cd('0x2b')][_0x68cd('0x7a')]=_0x51ea71[_0x68cd('0x7a')];_0x15d748['message'][_0x68cd('0x7b')]='reject';respondWithRpcPromise(_0x68cd('0x7c'),_0x68cd('0x7c'),{'event':_0x68cd('0x82'),'message':_0x15d748[_0x68cd('0x2b')]},client9002);return _0x51ea71;}return null;})[_0x68cd('0x39')](respondWithResult(_0x594744,null))[_0x68cd('0x2d')](handleError(_0x594744,null));};exports[_0x68cd('0x83')]=function(_0x391c23,_0x145ff6){var _0x1f92b5;return db['FaxMessage']['create'](_0x391c23[_0x68cd('0x5a')],{})[_0x68cd('0x39')](function(_0x42949c){_0x1f92b5=_0x42949c;return db[_0x68cd('0x84')][_0x68cd('0x85')]({'where':{'id':_0x1f92b5['ContactId']}});})[_0x68cd('0x39')](function(_0x658989){if(_[_0x68cd('0x86')](_0x658989)){return;}else{_0x1f92b5[_0x68cd('0x7d')]=_0x658989[_0x68cd('0x7d')];return db[_0x68cd('0x87')][_0x68cd('0x85')]({'where':{'id':_0x1f92b5[_0x68cd('0x88')]}});}})['then'](function(_0x4837a8){return respondWithRpcPromise('SendFax',_0x68cd('0x89'),{'FaxAccountId':_[_0x68cd('0x86')](_0x391c23['body'])?undefined:_0x391c23[_0x68cd('0x5a')]['FaxAccountId'],'path':_[_0x68cd('0x86')](_0x4837a8)?undefined:util['format'](_0x68cd('0x8a'),_0x4837a8[_0x68cd('0x8b')]),'fax':_['isNil'](_0x1f92b5[_0x68cd('0x7d')])?undefined:_0x1f92b5['fax'],'AttachmentId':_0x1f92b5['AttachmentId']},client9002);})[_0x68cd('0x39')](respondWithResult(_0x145ff6,0xc9))['catch'](handleError(_0x145ff6,null));};exports[_0x68cd('0x8c')]=function(_0x3c3d69,_0x1d168f){var _0x5751b4=path['join'](config[_0x68cd('0x8d')],_0x68cd('0x8e'),_0x68cd('0x8f'),_0x68cd('0x90'));return db[_0x68cd('0x40')][_0x68cd('0x5b')]({'where':{'id':_0x3c3d69['params']['id']},'include':[{'model':db[_0x68cd('0x87')],'as':'Attachment'}]})[_0x68cd('0x39')](handleEntityNotFound(_0x1d168f,null))[_0x68cd('0x39')](function(_0x398986){if(_0x398986){return _0x1d168f[_0x68cd('0x8c')](path[_0x68cd('0x91')](_0x5751b4,_0x398986[_0x68cd('0x87')][_0x68cd('0x8b')]));}})[_0x68cd('0x2d')](handleError(_0x1d168f,null));};
\ No newline at end of file
+var _0xff6f=['crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick','where','merge','filter','options','includeAll','include','findAll','rows','params','find','body','describe','fax-interactions','accept','fax','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','format','interaction','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','User','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','rejectmessage','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','root','server','files','attachments','download','eml-format','zip-dir','request-promise','path','sox','ejs','squel'];(function(_0x3ad9db,_0x2213d4){var _0xaa1e94=function(_0x6090c7){while(--_0x6090c7){_0x3ad9db['push'](_0x3ad9db['shift']());}};_0xaa1e94(++_0x2213d4);}(_0xff6f,0x80));var _0xfff6=function(_0x3011bd,_0x3f3b85){_0x3011bd=_0x3011bd-0x0;var _0x4719b2=_0xff6f[_0x3011bd];return _0x4719b2;};'use strict';var emlformat=require(_0xfff6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfff6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfff6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xfff6('0x3'));var sox=require(_0xfff6('0x4'));var csv=require('to-csv');var ejs=require(_0xfff6('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfff6('0x6'));var crypto=require(_0xfff6('0x7'));var jsforce=require(_0xfff6('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfff6('0x9'));var Papa=require(_0xfff6('0xa'));var Redis=require(_0xfff6('0xb'));var authService=require('../../components/auth/service');var qs=require(_0xfff6('0xc'));var as=require(_0xfff6('0xd'));var hardwareService=require(_0xfff6('0xe'));var logger=require(_0xfff6('0xf'))(_0xfff6('0x10'));var utils=require(_0xfff6('0x11'));var config=require(_0xfff6('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xfff6('0x13')]=_[_0xfff6('0x14')](config[_0xfff6('0x13')],{'host':_0xfff6('0x15'),'port':0x18eb});var socket=require(_0xfff6('0x16'))(new Redis(config[_0xfff6('0x13')]));require('./faxMessage.socket')['register'](socket);var jayson=require(_0xfff6('0x17'));var client=jayson[_0xfff6('0x18')][_0xfff6('0x19')]({'port':0x232c});var client9002=jayson[_0xfff6('0x18')][_0xfff6('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x379834,_0x5567d0,_0xba6e78,_0x766d5a){return new BPromise(function(_0x80abd0,_0xe947f4){var _0x461b13=_0x766d5a||client;return _0x461b13['request'](_0x379834,_0xba6e78)[_0xfff6('0x1a')](function(_0x1e9440){logger['info'](_0xfff6('0x1b'),_0x5567d0,_0xfff6('0x1c'));logger['debug'](_0xfff6('0x1d'),_0x5567d0,_0xfff6('0x1c'),JSON[_0xfff6('0x1e')](_0x1e9440));if(_0x1e9440[_0xfff6('0x1f')]){if(_0x1e9440[_0xfff6('0x1f')]['code']===0x1f4){logger[_0xfff6('0x1f')](_0xfff6('0x1b'),_0x5567d0,_0x1e9440['error']['message']);return _0xe947f4(_0x1e9440[_0xfff6('0x1f')][_0xfff6('0x20')]);}logger[_0xfff6('0x1f')](_0xfff6('0x1b'),_0x5567d0,_0x1e9440[_0xfff6('0x1f')]['message']);return _0x80abd0(_0x1e9440[_0xfff6('0x1f')]['message']);}else{logger[_0xfff6('0x21')]('FaxMessage,\x20%s,\x20%s',_0x5567d0,_0xfff6('0x1c'));_0x80abd0(_0x1e9440['result']['message']);}})[_0xfff6('0x22')](function(_0x57348b){logger[_0xfff6('0x1f')](_0xfff6('0x1b'),_0x5567d0,_0x57348b);_0xe947f4(_0x57348b);});});}function respondWithStatusCode(_0x383239,_0x2bb7ef){_0x2bb7ef=_0x2bb7ef||0xcc;return function(_0x5275d4){if(_0x5275d4){return _0x383239[_0xfff6('0x23')](_0x2bb7ef);}return _0x383239[_0xfff6('0x24')](_0x2bb7ef)[_0xfff6('0x25')]();};}function respondWithResult(_0x534d55,_0x5bbf94){_0x5bbf94=_0x5bbf94||0xc8;return function(_0x149471){if(_0x149471){return _0x534d55[_0xfff6('0x24')](_0x5bbf94)[_0xfff6('0x26')](_0x149471);}};}function respondWithFilteredResult(_0x2ff8f4,_0x3a0de4){return function(_0x420952){if(_0x420952){var _0x2922f9=typeof _0x3a0de4[_0xfff6('0x27')]===_0xfff6('0x28')&&typeof _0x3a0de4['limit']===_0xfff6('0x28');var _0x31fb6d=_0x420952['count'];var _0x328b7f=_0x2922f9?0x0:_0x3a0de4[_0xfff6('0x27')];var _0x4ff00c=_0x2922f9?_0x420952[_0xfff6('0x29')]:_0x3a0de4[_0xfff6('0x27')]+_0x3a0de4[_0xfff6('0x2a')];var _0x41a30c;if(_0x4ff00c>=_0x31fb6d){_0x4ff00c=_0x31fb6d;_0x41a30c=0xc8;}else{_0x41a30c=0xce;}_0x2ff8f4[_0xfff6('0x24')](_0x41a30c);return _0x2ff8f4[_0xfff6('0x2b')](_0xfff6('0x2c'),_0x328b7f+'-'+_0x4ff00c+'/'+_0x31fb6d)['json'](_0x420952);}return null;};}function patchUpdates(_0x168f77){return function(_0x10ce47){try{jsonpatch[_0xfff6('0x2d')](_0x10ce47,_0x168f77,!![]);}catch(_0x2f2195){return BPromise[_0xfff6('0x2e')](_0x2f2195);}return _0x10ce47[_0xfff6('0x2f')]();};}function saveUpdates(_0x37fe09,_0x389421){return function(_0x46f9ae){if(_0x46f9ae){return _0x46f9ae[_0xfff6('0x30')](_0x37fe09)['then'](function(_0x57ade7){return _0x57ade7;});}return null;};}function removeEntity(_0x5af13a,_0x3c7864){return function(_0x1e52a5){if(_0x1e52a5){return _0x1e52a5[_0xfff6('0x31')]()[_0xfff6('0x1a')](function(){_0x5af13a['status'](0xcc)[_0xfff6('0x25')]();});}};}function handleEntityNotFound(_0x3bda25,_0x8cd122){return function(_0x3fe537){if(!_0x3fe537){_0x3bda25['sendStatus'](0x194);}return _0x3fe537;};}function handleError(_0x142493,_0x10525e){_0x10525e=_0x10525e||0x1f4;return function(_0x29037c){logger[_0xfff6('0x1f')](_0x29037c[_0xfff6('0x32')]);if(_0x29037c[_0xfff6('0x33')]){delete _0x29037c[_0xfff6('0x33')];}_0x142493['status'](_0x10525e)[_0xfff6('0x34')](_0x29037c);};}exports[_0xfff6('0x35')]=function(_0x5f29ca,_0xd2882){var _0x10f96a={},_0x235ee7={},_0x1cfe83={'count':0x0,'rows':[]};var _0x6d1bda=_[_0xfff6('0x36')](db[_0xfff6('0x37')][_0xfff6('0x38')],function(_0x45b444){return{'name':_0x45b444[_0xfff6('0x39')],'type':_0x45b444[_0xfff6('0x3a')][_0xfff6('0x3b')]};});_0x235ee7[_0xfff6('0x3c')]=_[_0xfff6('0x36')](_0x6d1bda,_0xfff6('0x33'));_0x235ee7[_0xfff6('0x3d')]=_[_0xfff6('0x3e')](_0x5f29ca[_0xfff6('0x3d')]);_0x235ee7[_0xfff6('0x3f')]=_['intersection'](_0x235ee7[_0xfff6('0x3c')],_0x235ee7['query']);_0x10f96a[_0xfff6('0x40')]=_[_0xfff6('0x41')](_0x235ee7[_0xfff6('0x3c')],qs['fields'](_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x42')]));_0x10f96a['attributes']=_0x10f96a[_0xfff6('0x40')][_0xfff6('0x43')]?_0x10f96a['attributes']:_0x235ee7['model'];if(!_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x44')]('nolimit')){_0x10f96a[_0xfff6('0x2a')]=qs['limit'](_0x5f29ca['query'][_0xfff6('0x2a')]);_0x10f96a[_0xfff6('0x27')]=qs[_0xfff6('0x27')](_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x27')]);}_0x10f96a['order']=qs[_0xfff6('0x45')](_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x45')]);_0x10f96a['where']=qs[_0xfff6('0x3f')](_[_0xfff6('0x46')](_0x5f29ca['query'],_0x235ee7[_0xfff6('0x3f')]),_0x6d1bda);if(_0x5f29ca['query']['filter']){_0x10f96a[_0xfff6('0x47')]=_[_0xfff6('0x48')](_0x10f96a[_0xfff6('0x47')],{'$or':_[_0xfff6('0x36')](_0x6d1bda,function(_0x334487){if(_0x334487[_0xfff6('0x3a')]!=='VIRTUAL'){var _0x6c40b5={};_0x6c40b5[_0x334487[_0xfff6('0x33')]]={'$like':'%'+_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x49')]+'%'};return _0x6c40b5;}})});}_0x10f96a=_[_0xfff6('0x48')]({},_0x10f96a,_0x5f29ca[_0xfff6('0x4a')]);var _0x3d7d44={'where':_0x10f96a[_0xfff6('0x47')]};return db[_0xfff6('0x37')][_0xfff6('0x29')](_0x3d7d44)[_0xfff6('0x1a')](function(_0x1caa51){_0x1cfe83[_0xfff6('0x29')]=_0x1caa51;if(_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x4b')]){_0x10f96a[_0xfff6('0x4c')]=[{'all':!![]}];}return db[_0xfff6('0x37')][_0xfff6('0x4d')](_0x10f96a);})[_0xfff6('0x1a')](function(_0x5439e2){_0x1cfe83[_0xfff6('0x4e')]=_0x5439e2;return _0x1cfe83;})[_0xfff6('0x1a')](respondWithFilteredResult(_0xd2882,_0x10f96a))[_0xfff6('0x22')](handleError(_0xd2882,null));};exports['show']=function(_0x4e83d7,_0x3b626b){var _0x282a8={'raw':!![],'where':{'id':_0x4e83d7[_0xfff6('0x4f')]['id']}},_0x41601a={};_0x41601a['model']=_[_0xfff6('0x3e')](db[_0xfff6('0x37')][_0xfff6('0x38')]);_0x41601a['query']=_[_0xfff6('0x3e')](_0x4e83d7[_0xfff6('0x3d')]);_0x41601a[_0xfff6('0x3f')]=_['intersection'](_0x41601a['model'],_0x41601a[_0xfff6('0x3d')]);_0x282a8[_0xfff6('0x40')]=_[_0xfff6('0x41')](_0x41601a[_0xfff6('0x3c')],qs[_0xfff6('0x42')](_0x4e83d7[_0xfff6('0x3d')][_0xfff6('0x42')]));_0x282a8[_0xfff6('0x40')]=_0x282a8[_0xfff6('0x40')]['length']?_0x282a8['attributes']:_0x41601a[_0xfff6('0x3c')];if(_0x4e83d7[_0xfff6('0x3d')]['includeAll']){_0x282a8[_0xfff6('0x4c')]=[{'all':!![]}];}_0x282a8=_['merge']({},_0x282a8,_0x4e83d7[_0xfff6('0x4a')]);return db[_0xfff6('0x37')][_0xfff6('0x50')](_0x282a8)['then'](handleEntityNotFound(_0x3b626b,null))['then'](respondWithResult(_0x3b626b,null))[_0xfff6('0x22')](handleError(_0x3b626b,null));};exports[_0xfff6('0x30')]=function(_0x599d8e,_0x30bb45){if(_0x599d8e['body']['id']){delete _0x599d8e[_0xfff6('0x51')]['id'];}return db[_0xfff6('0x37')][_0xfff6('0x50')]({'where':{'id':_0x599d8e[_0xfff6('0x4f')]['id']}})[_0xfff6('0x1a')](handleEntityNotFound(_0x30bb45,null))[_0xfff6('0x1a')](saveUpdates(_0x599d8e[_0xfff6('0x51')],null))[_0xfff6('0x1a')](respondWithResult(_0x30bb45,null))['catch'](handleError(_0x30bb45,null));};exports[_0xfff6('0x31')]=function(_0x1d755b,_0x1e9158){return db[_0xfff6('0x37')][_0xfff6('0x50')]({'where':{'id':_0x1d755b[_0xfff6('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1e9158,null))['then'](removeEntity(_0x1e9158,null))[_0xfff6('0x22')](handleError(_0x1e9158,null));};exports[_0xfff6('0x52')]=function(_0x26fdab,_0x5c5030){return db[_0xfff6('0x37')][_0xfff6('0x52')]()[_0xfff6('0x1a')](respondWithResult(_0x5c5030,null))[_0xfff6('0x22')](handleError(_0x5c5030,null));};var interaction_log=require('../../config/logger')(_0xfff6('0x53'));exports[_0xfff6('0x54')]=function(_0xdc10f3,_0x444f4b,_0x8727bd){var _0x9d833d={'agent':{},'channel':_0xfff6('0x55')};if(_0xdc10f3[_0xfff6('0x51')]['id']){delete _0xdc10f3[_0xfff6('0x51')]['id'];}_0xdc10f3['body']['read']=!![];_0xdc10f3['body'][_0xfff6('0x56')]=moment()['format'](_0xfff6('0x57'));_0xdc10f3[_0xfff6('0x51')]['UserId']=_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x58')]||_0xdc10f3['user']['id'];_0x9d833d[_0xfff6('0x59')]['id']=_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x58')];return db['FaxMessage'][_0xfff6('0x50')]({'where':{'id':_0xdc10f3[_0xfff6('0x4f')]['id'],'UserId':null}})[_0xfff6('0x1a')](handleEntityNotFound(_0x444f4b,null))[_0xfff6('0x1a')](saveUpdates(_0xdc10f3[_0xfff6('0x51')],null))[_0xfff6('0x1a')](function(_0x3dffea){if(_0x3dffea){_0x9d833d[_0xfff6('0x20')]=_0x3dffea[_0xfff6('0x5a')]({'plain':!![]});return db[_0xfff6('0x5b')][_0xfff6('0x50')]({'where':{'id':_0x3dffea[_0xfff6('0x5c')]}});}return null;})[_0xfff6('0x1a')](handleEntityNotFound(_0x444f4b,null))[_0xfff6('0x1a')](function(_0x3122b6){if(_0x3122b6){return _0x3122b6[_0xfff6('0x30')]({'UserId':_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x58')],'read1stAt':_[_0xfff6('0x5d')](_0x3122b6[_0xfff6('0x5e')])?moment()[_0xfff6('0x5f')](_0xfff6('0x57')):undefined});}return null;})[_0xfff6('0x1a')](function(_0x3b39aa){if(_0x3b39aa){_0x9d833d[_0xfff6('0x60')]=_0x3b39aa[_0xfff6('0x5a')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xdc10f3[_0xfff6('0x61')]['id'],_0xdc10f3['user']['name'],_0xdc10f3[_0xfff6('0x61')][_0xfff6('0x62')],_0x9d833d[_0xfff6('0x60')]['id'],_0xdc10f3[_0xfff6('0x51')]?JSON[_0xfff6('0x1e')](_0xdc10f3[_0xfff6('0x51')]):_0xfff6('0x63'));return respondWithRpcPromise(_0xfff6('0x64'),_0xfff6('0x65'),_0x9d833d);}return null;})['then'](function(_0x5ee858){var _0x1aa5ad=_0xfff6('0x66')+_0x5ee858[_0xfff6('0x20')][_0xfff6('0x67')];return db[_0xfff6('0x68')][_0xfff6('0x3d')](_0x1aa5ad,{'type':db['Sequelize']['QueryTypes'][_0xfff6('0x69')],'raw':!![]})['then'](function(_0x44589e){return _0x44589e;});})[_0xfff6('0x1a')](function(_0x248b12){if(_0x248b12){_0x9d833d[_0xfff6('0x20')]['contact']=_0x248b12[0x0];if(!_0xdc10f3['body'][_0xfff6('0x58')])return;return db[_0xfff6('0x6a')]['find']({'where':{'id':_0xdc10f3[_0xfff6('0x51')]['UserId'],'role':_0xfff6('0x59')},'attributes':['id',_0xfff6('0x33'),'fullname',_0xfff6('0x6b'),_0xfff6('0x6c')],'raw':!![]});}return null;})['then'](function(_0x42f1fc){if(!_0x42f1fc)return null;_0x9d833d[_0xfff6('0x20')][_0xfff6('0x59')]=_0x42f1fc;return _0x9d833d;})[_0xfff6('0x1a')](function(_0x4a2b7d){if(_0x4a2b7d){if(_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x6d')]){_0x9d833d[_0xfff6('0x20')][_0xfff6('0x6e')]=util[_0xfff6('0x5f')](_0xfff6('0x6f'),_0xdc10f3[_0xfff6('0x61')]['name']);_0x9d833d[_0xfff6('0x20')]['channel']=_0x9d833d[_0xfff6('0x70')];_0x9d833d[_0xfff6('0x20')]['motionChannel']=_0x9d833d['channel'];_0x9d833d[_0xfff6('0x20')][_0xfff6('0x71')]=_0xfff6('0x54');return respondWithRpcPromise(_0xfff6('0x72'),'EventManager',{'event':_0xfff6('0x73'),'message':_0x9d833d['message']},client9002)['then'](function(){return _0x9d833d;});}return _0x9d833d;}return null;})[_0xfff6('0x1a')](respondWithResult(_0x444f4b,null))['catch'](handleError(_0x444f4b,null));};var interaction_log=require(_0xfff6('0xf'))(_0xfff6('0x53'));exports['reject']=function(_0x513741,_0x5223cb,_0x1c86ad){var _0x393bfc={'agent':{},'channel':_0xfff6('0x55')};if(_0x513741[_0xfff6('0x51')]['id']){delete _0x513741[_0xfff6('0x51')]['id'];}_0x513741[_0xfff6('0x51')][_0xfff6('0x58')]=_0x513741[_0xfff6('0x51')][_0xfff6('0x58')]||_0x513741[_0xfff6('0x61')]['id'];_0x393bfc[_0xfff6('0x59')]['id']=_0x513741['body'][_0xfff6('0x58')];return db['FaxMessage'][_0xfff6('0x50')]({'where':{'id':_0x513741[_0xfff6('0x4f')]['id'],'UserId':null}})[_0xfff6('0x1a')](handleEntityNotFound(_0x5223cb,null))['then'](function(_0x5d4a78){if(_0x5d4a78){_0x393bfc[_0xfff6('0x20')]=_0x5d4a78['get']({'plain':!![]});return db[_0xfff6('0x5b')][_0xfff6('0x50')]({'where':{'id':_0x5d4a78[_0xfff6('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x5223cb,null))[_0xfff6('0x1a')](function(_0x48b6a8){if(_0x48b6a8){_0x393bfc[_0xfff6('0x60')]=_0x48b6a8[_0xfff6('0x5a')]({'plain':!![]});interaction_log[_0xfff6('0x21')](_0xfff6('0x74'),_0x513741[_0xfff6('0x61')]['id'],_0x513741[_0xfff6('0x61')][_0xfff6('0x33')],_0x513741[_0xfff6('0x61')][_0xfff6('0x62')],_0x393bfc[_0xfff6('0x60')]['id'],_0x513741['body']?JSON[_0xfff6('0x1e')](_0x513741[_0xfff6('0x51')]):_0xfff6('0x63'));return respondWithRpcPromise(_0xfff6('0x75'),_0xfff6('0x76'),_0x393bfc);}return null;})[_0xfff6('0x1a')](function(_0xef605b){var _0x1928ff='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xef605b[_0xfff6('0x20')][_0xfff6('0x67')];return db[_0xfff6('0x68')][_0xfff6('0x3d')](_0x1928ff,{'type':db[_0xfff6('0x77')]['QueryTypes'][_0xfff6('0x69')],'raw':!![]})['then'](function(_0x77dab6){return _0x77dab6;});})[_0xfff6('0x1a')](function(_0x21eb77){if(_0x21eb77){_0x393bfc[_0xfff6('0x20')]['contact']=_0x21eb77[0x0];if(!_0x513741[_0xfff6('0x51')][_0xfff6('0x58')])return;return db[_0xfff6('0x6a')]['find']({'where':{'id':_0x513741['body'][_0xfff6('0x58')],'role':_0xfff6('0x59')},'attributes':['id',_0xfff6('0x33'),'fullname',_0xfff6('0x6b'),_0xfff6('0x6c')],'raw':!![]});}return null;})[_0xfff6('0x1a')](function(_0x402b06){if(!_0x402b06)return null;_0x393bfc[_0xfff6('0x20')]['agent']=_0x402b06;return _0x393bfc;})['then'](function(_0x4f4b30){if(_0x4f4b30){_0x4f4b30[_0xfff6('0x20')][_0xfff6('0x6e')]=util['format'](_0xfff6('0x6f'),_0x513741[_0xfff6('0x61')][_0xfff6('0x33')]);_0x4f4b30[_0xfff6('0x20')]['channel']=_0x393bfc[_0xfff6('0x70')];_0x4f4b30[_0xfff6('0x20')]['motionChannel']=_0x393bfc[_0xfff6('0x70')];_0x4f4b30[_0xfff6('0x20')][_0xfff6('0x71')]=_0xfff6('0x2e');respondWithRpcPromise(_0xfff6('0x72'),'EventManager',{'event':_0xfff6('0x78'),'message':_0x4f4b30[_0xfff6('0x20')]},client9002);return _0x393bfc;}return null;})['then'](respondWithResult(_0x5223cb,null))[_0xfff6('0x22')](handleError(_0x5223cb,null));};exports['create']=function(_0x595ec9,_0x295a0f){var _0x1c0063;return db['FaxMessage']['create'](_0x595ec9['body'],{})[_0xfff6('0x1a')](function(_0x114a89){_0x1c0063=_0x114a89;return db[_0xfff6('0x79')][_0xfff6('0x7a')]({'where':{'id':_0x1c0063[_0xfff6('0x67')]}});})[_0xfff6('0x1a')](function(_0x564297){if(_[_0xfff6('0x5d')](_0x564297)){return;}else{_0x1c0063['fax']=_0x564297[_0xfff6('0x55')];return db[_0xfff6('0x7b')][_0xfff6('0x7a')]({'where':{'id':_0x1c0063[_0xfff6('0x7c')]}});}})[_0xfff6('0x1a')](function(_0x3a2315){return respondWithRpcPromise(_0xfff6('0x7d'),_0xfff6('0x7d'),{'FaxAccountId':_['isNil'](_0x595ec9['body'])?undefined:_0x595ec9['body'][_0xfff6('0x7e')],'path':_[_0xfff6('0x5d')](_0x3a2315)?undefined:util[_0xfff6('0x5f')](_0xfff6('0x7f'),_0x3a2315[_0xfff6('0x80')]),'fax':_[_0xfff6('0x5d')](_0x1c0063[_0xfff6('0x55')])?undefined:_0x1c0063[_0xfff6('0x55')],'AttachmentId':_0x1c0063[_0xfff6('0x7c')]},client9002);})[_0xfff6('0x1a')](respondWithResult(_0x295a0f,0xc9))[_0xfff6('0x22')](handleError(_0x295a0f,null));};exports['download']=function(_0x11943e,_0x197b1e){var _0x7365a2=path[_0xfff6('0x81')](config[_0xfff6('0x82')],_0xfff6('0x83'),_0xfff6('0x84'),_0xfff6('0x85'));return db[_0xfff6('0x37')]['find']({'where':{'id':_0x11943e[_0xfff6('0x4f')]['id']},'include':[{'model':db[_0xfff6('0x7b')],'as':'Attachment'}]})['then'](handleEntityNotFound(_0x197b1e,null))[_0xfff6('0x1a')](function(_0x20c9de){if(_0x20c9de){return _0x197b1e[_0xfff6('0x86')](path[_0xfff6('0x81')](_0x7365a2,_0x20c9de[_0xfff6('0x7b')][_0xfff6('0x80')]));}})[_0xfff6('0x22')](handleError(_0x197b1e,null));};
\ No newline at end of file
index feb1f3d..3f919fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4253=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','update'];(function(_0x7ff3a6,_0xa9ca89){var _0x418450=function(_0x4eabe2){while(--_0x4eabe2){_0x7ff3a6['push'](_0x7ff3a6['shift']());}};_0x418450(++_0xa9ca89);}(_0x4253,0x14c));var _0x3425=function(_0x42844e,_0x1142f3){_0x42844e=_0x42844e-0x0;var _0x2800cb=_0x4253[_0x42844e];return _0x2800cb;};'use strict';var EventEmitter=require(_0x3425('0x0'));var FaxMessage=require(_0x3425('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x3425('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3425('0x3'),'afterDestroy':_0x3425('0x4')};function emitEvent(_0x1f7ac0){return function(_0xaac4fd,_0x26365a,_0x4652f1){FaxMessageEvents[_0x3425('0x5')](_0x1f7ac0+':'+_0xaac4fd['id'],_0xaac4fd);FaxMessageEvents[_0x3425('0x5')](_0x1f7ac0,_0xaac4fd);_0x4652f1(null);};}for(var e in events){if(events[_0x3425('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0x3425('0x7')]=FaxMessageEvents;
\ No newline at end of file
+var _0xed1c=['events','../../mysqldb','remove','emit','hasOwnProperty','exports'];(function(_0x1b1e1c,_0x2efb80){var _0xa6a2b9=function(_0x22eb72){while(--_0x22eb72){_0x1b1e1c['push'](_0x1b1e1c['shift']());}};_0xa6a2b9(++_0x2efb80);}(_0xed1c,0xe4));var _0xced1=function(_0x382cd1,_0x33177f){_0x382cd1=_0x382cd1-0x0;var _0x2ae9ec=_0xed1c[_0x382cd1];return _0x2ae9ec;};'use strict';var EventEmitter=require(_0xced1('0x0'));var FaxMessage=require(_0xced1('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xced1('0x2')};function emitEvent(_0x329a0a){return function(_0x79202e,_0x47a45c,_0x1e23a9){FaxMessageEvents[_0xced1('0x3')](_0x329a0a+':'+_0x79202e['id'],_0x79202e);FaxMessageEvents[_0xced1('0x3')](_0x329a0a,_0x79202e);_0x1e23a9(null);};}for(var e in events){if(events[_0xced1('0x4')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xced1('0x5')]=FaxMessageEvents;
\ No newline at end of file
index 1075543..0974c6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc237=['update','catch','error','utf8mb4','utf8mb4_unicode_ci','api','moment','request-promise','path','../../config/environment','./faxMessage.attributes','exports','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','get','direction','toLowerCase','out','isNil','UserId','findOne','FaxInteractionId','then'];(function(_0x4a7843,_0x24f6d1){var _0x2c57fe=function(_0x37fbc9){while(--_0x37fbc9){_0x4a7843['push'](_0x4a7843['shift']());}};_0x2c57fe(++_0x24f6d1);}(_0xc237,0x157));var _0x7c23=function(_0x3037d2,_0x70eac9){_0x3037d2=_0x3037d2-0x0;var _0x2b770c=_0xc237[_0x3037d2];return _0x2b770c;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7c23('0x0'));var moment=require(_0x7c23('0x1'));var BPromise=require('bluebird');var rp=require(_0x7c23('0x2'));var fs=require('fs');var path=require(_0x7c23('0x3'));var rimraf=require('rimraf');var config=require(_0x7c23('0x4'));var attributes=require(_0x7c23('0x5'));module[_0x7c23('0x6')]=function(_0x4dd4b2,_0x27f147){return _0x4dd4b2['define'](_0x7c23('0x7'),attributes,{'tableName':_0x7c23('0x8'),'paranoid':![],'indexes':[{'name':_0x7c23('0x9'),'fields':[_0x7c23('0xa')],'type':_0x7c23('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1469a4,_0x39d77a,_0x1399e2){var _0x4077b1=_0x4dd4b2['models'];var _0x55c3ed=_0x1469a4[_0x7c23('0xc')]({'plain':!![]});if(_0x55c3ed[_0x7c23('0xd')][_0x7c23('0xe')]()==='in'||_0x55c3ed[_0x7c23('0xd')]['toLowerCase']()===_0x7c23('0xf')&&!_0x55c3ed['secret']&&!_[_0x7c23('0x10')](_0x55c3ed[_0x7c23('0x11')])){_0x4077b1['FaxInteraction'][_0x7c23('0x12')]({'where':{'id':_0x55c3ed[_0x7c23('0x13')]}})[_0x7c23('0x14')](function(_0x1c296d){if(_0x1c296d){_0x1c296d[_0x7c23('0x15')]({'lastMsgAt':_0x55c3ed['createdAt'],'lastMsgDirection':_0x55c3ed[_0x7c23('0xd')][_0x7c23('0xe')]()});}})[_0x7c23('0x16')](function(_0x1c3e49){console[_0x7c23('0x17')](_0x1c3e49);});}_0x1399e2();}},'charset':_0x7c23('0x18'),'collate':_0x7c23('0x19')});};
\ No newline at end of file
+var _0xb965=['path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','then','update','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise'];(function(_0x15d21f,_0x10997d){var _0x50b48d=function(_0x58183d){while(--_0x58183d){_0x15d21f['push'](_0x15d21f['shift']());}};_0x50b48d(++_0x10997d);}(_0xb965,0xa9));var _0x5b96=function(_0x5742c4,_0x5d94fc){_0x5742c4=_0x5742c4-0x0;var _0x3eecc9=_0xb965[_0x5742c4];return _0x3eecc9;};'use strict';var _=require(_0x5b96('0x0'));var util=require(_0x5b96('0x1'));var logger=require(_0x5b96('0x2'))('api');var moment=require(_0x5b96('0x3'));var BPromise=require('bluebird');var rp=require(_0x5b96('0x4'));var fs=require('fs');var path=require(_0x5b96('0x5'));var rimraf=require(_0x5b96('0x6'));var config=require(_0x5b96('0x7'));var attributes=require(_0x5b96('0x8'));module[_0x5b96('0x9')]=function(_0x252499,_0x476740){return _0x252499[_0x5b96('0xa')]('FaxMessage',attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x5b96('0xb')],'type':_0x5b96('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x197c0c,_0x474434,_0x461d48){var _0x2ffabd=_0x252499[_0x5b96('0xd')];var _0x18393d=_0x197c0c[_0x5b96('0xe')]({'plain':!![]});if(_0x18393d[_0x5b96('0xf')]['toLowerCase']()==='in'||_0x18393d['direction'][_0x5b96('0x10')]()===_0x5b96('0x11')&&!_0x18393d[_0x5b96('0x12')]&&!_[_0x5b96('0x13')](_0x18393d[_0x5b96('0x14')])){_0x2ffabd[_0x5b96('0x15')][_0x5b96('0x16')]({'where':{'id':_0x18393d['FaxInteractionId']}})[_0x5b96('0x17')](function(_0x24e1da){if(_0x24e1da){_0x24e1da[_0x5b96('0x18')]({'lastMsgAt':_0x18393d[_0x5b96('0x19')],'lastMsgDirection':_0x18393d[_0x5b96('0xf')][_0x5b96('0x10')]()});}})[_0x5b96('0x1a')](function(_0x52463a){console[_0x5b96('0x1b')](_0x52463a);});}_0x461d48();}},'charset':'utf8mb4','collate':_0x5b96('0x1c')});};
\ No newline at end of file
index 2a2e46c..28103ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CreateFaxMessage','FaxMessage','create','body','raw','catch','UpdateFaxMessage','options','where','attributes','limit','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5fd1,0x155));var _0x15fd=function(_0x4a3900,_0x3339ee){_0x4a3900=_0x4a3900-0x0;var _0x341723=_0x5fd1[_0x4a3900];return _0x341723;};'use strict';var _=require(_0x15fd('0x0'));var util=require('util');var moment=require(_0x15fd('0x1'));var BPromise=require(_0x15fd('0x2'));var rs=require(_0x15fd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x15fd('0x4'));var logger=require(_0x15fd('0x5'))(_0x15fd('0x6'));var config=require('../../config/environment');var jayson=require(_0x15fd('0x7'));var client=jayson[_0x15fd('0x8')][_0x15fd('0x9')]({'port':0x232a});config[_0x15fd('0xa')]=_[_0x15fd('0xb')](config['redis'],{'host':_0x15fd('0xc'),'port':0x18eb});var socket=require(_0x15fd('0xd'))(new Redis(config[_0x15fd('0xa')]));require('./faxMessage.socket')[_0x15fd('0xe')](socket);function respondWithRpcPromise(_0x5c9c63,_0x3dfdbb,_0x250457){return new BPromise(function(_0x4c226a,_0x4883fd){return client['request'](_0x5c9c63,_0x250457)[_0x15fd('0xf')](function(_0x2a4d55){logger[_0x15fd('0x10')](_0x15fd('0x11'),_0x3dfdbb,_0x15fd('0x12'));logger[_0x15fd('0x13')](_0x15fd('0x14'),_0x3dfdbb,_0x15fd('0x12'),JSON[_0x15fd('0x15')](_0x2a4d55));if(_0x2a4d55['error']){if(_0x2a4d55['error']['code']===0x1f4){logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x2a4d55[_0x15fd('0x16')][_0x15fd('0x17')]);return _0x4883fd(_0x2a4d55[_0x15fd('0x16')][_0x15fd('0x17')]);}logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x2a4d55['error']['message']);return _0x4c226a(_0x2a4d55[_0x15fd('0x16')]['message']);}else{logger[_0x15fd('0x10')]('FaxMessage,\x20%s,\x20%s',_0x3dfdbb,_0x15fd('0x12'));_0x4c226a(_0x2a4d55[_0x15fd('0x18')][_0x15fd('0x17')]);}})['catch'](function(_0x367c36){logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x367c36);_0x4883fd(_0x367c36);});});}exports[_0x15fd('0x19')]=function(_0x2fb919){var _0x36a90e=this;return new Promise(function(_0x3761db,_0x2f46f1){return db[_0x15fd('0x1a')][_0x15fd('0x1b')](_0x2fb919[_0x15fd('0x1c')],{'raw':_0x2fb919['options']?_0x2fb919['options'][_0x15fd('0x1d')]===undefined?!![]:![]:!![]})[_0x15fd('0xf')](function(_0x252a1c){logger[_0x15fd('0x10')](_0x15fd('0x19'),_0x2fb919);logger[_0x15fd('0x13')](_0x15fd('0x19'),_0x2fb919,JSON['stringify'](_0x252a1c));_0x3761db(_0x252a1c);})[_0x15fd('0x1e')](function(_0x2d19ac){logger[_0x15fd('0x16')]('CreateFaxMessage',_0x2d19ac[_0x15fd('0x17')],_0x2fb919);_0x2f46f1(_0x36a90e['error'](0x1f4,_0x2d19ac[_0x15fd('0x17')]));});});};exports[_0x15fd('0x1f')]=function(_0x21601d){var _0x4c9708=this;return new Promise(function(_0x16b87c,_0x1cbf2c){return db[_0x15fd('0x1a')]['update'](_0x21601d[_0x15fd('0x1c')],{'raw':_0x21601d['options']?_0x21601d[_0x15fd('0x20')][_0x15fd('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x21')]||null:null,'attributes':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x22')]||null:null,'limit':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x23')]||null:null})['then'](function(_0x47c22c){logger[_0x15fd('0x10')]('UpdateFaxMessage',_0x21601d);logger[_0x15fd('0x13')](_0x15fd('0x1f'),_0x21601d,JSON['stringify'](_0x47c22c));_0x16b87c(_0x47c22c);})[_0x15fd('0x1e')](function(_0x197d15){logger['error'](_0x15fd('0x1f'),_0x197d15[_0x15fd('0x17')],_0x21601d);_0x1cbf2c(_0x4c9708[_0x15fd('0x16')](0x1f4,_0x197d15[_0x15fd('0x17')]));});});};
\ No newline at end of file
+var _0x00bb=['redis','defaults','localhost','socket.io-emitter','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','FaxMessage,\x20%s,\x20%s','CreateFaxMessage','FaxMessage','create','body','options','raw','catch','update','attributes','UpdateFaxMessage','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x1f2931,_0x8fed1a){var _0x1f2050=function(_0x457bb3){while(--_0x457bb3){_0x1f2931['push'](_0x1f2931['shift']());}};_0x1f2050(++_0x8fed1a);}(_0x00bb,0x1d8));var _0xb00b=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x00bb[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xb00b('0x8')]=_[_0xb00b('0x9')](config[_0xb00b('0x8')],{'host':_0xb00b('0xa'),'port':0x18eb});var socket=require(_0xb00b('0xb'))(new Redis(config[_0xb00b('0x8')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x5154d9,_0x1e9b7b,_0x5851d4){return new BPromise(function(_0x46a25c,_0x28d3cc){return client['request'](_0x5154d9,_0x5851d4)[_0xb00b('0xc')](function(_0x5a63ed){logger['info']('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0xb00b('0xd'));logger[_0xb00b('0xe')](_0xb00b('0xf'),_0x1e9b7b,_0xb00b('0xd'),JSON[_0xb00b('0x10')](_0x5a63ed));if(_0x5a63ed[_0xb00b('0x11')]){if(_0x5a63ed['error'][_0xb00b('0x12')]===0x1f4){logger[_0xb00b('0x11')]('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0x5a63ed[_0xb00b('0x11')][_0xb00b('0x13')]);return _0x28d3cc(_0x5a63ed['error']['message']);}logger[_0xb00b('0x11')]('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0x5a63ed['error'][_0xb00b('0x13')]);return _0x46a25c(_0x5a63ed[_0xb00b('0x11')][_0xb00b('0x13')]);}else{logger[_0xb00b('0x14')]('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0xb00b('0xd'));_0x46a25c(_0x5a63ed['result'][_0xb00b('0x13')]);}})['catch'](function(_0x25d7a0){logger['error'](_0xb00b('0x15'),_0x1e9b7b,_0x25d7a0);_0x28d3cc(_0x25d7a0);});});}exports[_0xb00b('0x16')]=function(_0x53ee68){var _0x55770c=this;return new Promise(function(_0x2b0da1,_0x4a334b){return db[_0xb00b('0x17')][_0xb00b('0x18')](_0x53ee68[_0xb00b('0x19')],{'raw':_0x53ee68[_0xb00b('0x1a')]?_0x53ee68['options'][_0xb00b('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x25a973){logger[_0xb00b('0x14')]('CreateFaxMessage',_0x53ee68);logger[_0xb00b('0xe')](_0xb00b('0x16'),_0x53ee68,JSON['stringify'](_0x25a973));_0x2b0da1(_0x25a973);})[_0xb00b('0x1c')](function(_0x1f04d3){logger['error'](_0xb00b('0x16'),_0x1f04d3[_0xb00b('0x13')],_0x53ee68);_0x4a334b(_0x55770c[_0xb00b('0x11')](0x1f4,_0x1f04d3[_0xb00b('0x13')]));});});};exports['UpdateFaxMessage']=function(_0x50be6c){var _0x3785e9=this;return new Promise(function(_0x490380,_0x550587){return db['FaxMessage'][_0xb00b('0x1d')](_0x50be6c[_0xb00b('0x19')],{'raw':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c[_0xb00b('0x1a')][_0xb00b('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c[_0xb00b('0x1a')]['where']||null:null,'attributes':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c['options'][_0xb00b('0x1e')]||null:null,'limit':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c[_0xb00b('0x1a')]['limit']||null:null})[_0xb00b('0xc')](function(_0x280ed3){logger[_0xb00b('0x14')](_0xb00b('0x1f'),_0x50be6c);logger[_0xb00b('0xe')](_0xb00b('0x1f'),_0x50be6c,JSON[_0xb00b('0x10')](_0x280ed3));_0x490380(_0x280ed3);})[_0xb00b('0x1c')](function(_0x149c1a){logger['error'](_0xb00b('0x1f'),_0x149c1a[_0xb00b('0x13')],_0x50be6c);_0x550587(_0x3785e9['error'](0x1f4,_0x149c1a[_0xb00b('0x13')]));});});};
\ No newline at end of file
index a818ef3..6d1d601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4934=['register','faxMessage:','./faxMessage.events','emit','removeListener'];(function(_0xeaab14,_0x53836e){var _0x474c61=function(_0x13d0f0){while(--_0x13d0f0){_0xeaab14['push'](_0xeaab14['shift']());}};_0x474c61(++_0x53836e);}(_0x4934,0x147));var _0x4493=function(_0x3dd19d,_0x439323){_0x3dd19d=_0x3dd19d-0x0;var _0x2028b3=_0x4934[_0x3dd19d];return _0x2028b3;};'use strict';var FaxMessageEvents=require(_0x4493('0x0'));var events=['save','remove','update'];function createListener(_0x1ca16c,_0x2b645a){return function(_0x4a3d1e){_0x2b645a[_0x4493('0x1')](_0x1ca16c,_0x4a3d1e);};}function removeListener(_0x161bd4,_0x3baaae){return function(){FaxMessageEvents[_0x4493('0x2')](_0x161bd4,_0x3baaae);};}exports[_0x4493('0x3')]=function(_0x37e5a3){for(var _0x39c4e2=0x0,_0x5ad527=events['length'];_0x39c4e2<_0x5ad527;_0x39c4e2++){var _0x3681fd=events[_0x39c4e2];var _0x276662=createListener(_0x4493('0x4')+_0x3681fd,_0x37e5a3);FaxMessageEvents['on'](_0x3681fd,_0x276662);}};
\ No newline at end of file
+var _0xc9e3=['update','emit','register','length','faxMessage:','./faxMessage.events','save','remove'];(function(_0x2bbbcb,_0x374673){var _0x29a316=function(_0x582b46){while(--_0x582b46){_0x2bbbcb['push'](_0x2bbbcb['shift']());}};_0x29a316(++_0x374673);}(_0xc9e3,0x1dd));var _0x3c9e=function(_0x1e7be2,_0x198f20){_0x1e7be2=_0x1e7be2-0x0;var _0xe8cc5b=_0xc9e3[_0x1e7be2];return _0xe8cc5b;};'use strict';var FaxMessageEvents=require(_0x3c9e('0x0'));var events=[_0x3c9e('0x1'),_0x3c9e('0x2'),_0x3c9e('0x3')];function createListener(_0x675fa9,_0x516662){return function(_0x15baf1){_0x516662[_0x3c9e('0x4')](_0x675fa9,_0x15baf1);};}function removeListener(_0x5a961a,_0x3ec3f4){return function(){FaxMessageEvents['removeListener'](_0x5a961a,_0x3ec3f4);};}exports[_0x3c9e('0x5')]=function(_0xdcf41){for(var _0x317cd8=0x0,_0x5d7f65=events[_0x3c9e('0x6')];_0x317cd8<_0x5d7f65;_0x317cd8++){var _0x54a8d4=events[_0x317cd8];var _0x4293ff=createListener(_0x3c9e('0x7')+_0x54a8d4,_0xdcf41);FaxMessageEvents['on'](_0x54a8d4,_0x4293ff);}};
\ No newline at end of file
index 86bd453..42cf416 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['index','/describe','isAuthenticated','describe','/:id','show','download','post','fax','faxmessage:create','create','put','/:id/accept','/:id/reject','reject','delete','destroy','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get'];(function(_0x17d8ee,_0x146eee){var _0xa6adda=function(_0x56f75b){while(--_0x56f75b){_0x17d8ee['push'](_0x17d8ee['shift']());}};_0xa6adda(++_0x146eee);}(_0x9bde,0xe1));var _0xe9bd=function(_0x528498,_0x43803a){_0x528498=_0x528498-0x0;var _0x4f5b04=_0x9bde[_0x528498];return _0x4f5b04;};'use strict';var multer=require('multer');var util=require(_0xe9bd('0x0'));var path=require('path');var timeout=require(_0xe9bd('0x1'));var express=require('express');var router=express[_0xe9bd('0x2')]();var fs_extra=require(_0xe9bd('0x3'));var auth=require(_0xe9bd('0x4'));var interaction=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var controller=require(_0xe9bd('0x7'));router[_0xe9bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xe9bd('0x9')]);router[_0xe9bd('0x8')](_0xe9bd('0xa'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xc')]);router[_0xe9bd('0x8')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xe')]);router[_0xe9bd('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0xe9bd('0xf')]);router[_0xe9bd('0x10')]('/',auth[_0xe9bd('0xb')](),interaction['tracked'](_0xe9bd('0x11'),_0xe9bd('0x12')),controller[_0xe9bd('0x13')]);router[_0xe9bd('0x14')]('/:id',auth[_0xe9bd('0xb')](),controller['update']);router[_0xe9bd('0x14')](_0xe9bd('0x15'),auth[_0xe9bd('0xb')](),controller['accept']);router['put'](_0xe9bd('0x16'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0x17')]);router[_0xe9bd('0x18')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x55e0=['../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','describe','/:id','/:id/download','download','post','fax','create','put','update','/:id/accept','accept','/:id/reject','reject','destroy','multer','util','path','connect-timeout','fs-extra'];(function(_0x5f9f4c,_0x2fecf3){var _0x3839c6=function(_0x214de7){while(--_0x214de7){_0x5f9f4c['push'](_0x5f9f4c['shift']());}};_0x3839c6(++_0x2fecf3);}(_0x55e0,0xdc));var _0x055e=function(_0x7cf8eb,_0x5a470e){_0x7cf8eb=_0x7cf8eb-0x0;var _0x24e417=_0x55e0[_0x7cf8eb];return _0x24e417;};'use strict';var multer=require(_0x055e('0x0'));var util=require(_0x055e('0x1'));var path=require(_0x055e('0x2'));var timeout=require(_0x055e('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x055e('0x4'));var auth=require(_0x055e('0x5'));var interaction=require(_0x055e('0x6'));var config=require(_0x055e('0x7'));var controller=require(_0x055e('0x8'));router[_0x055e('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x055e('0x9')]('/describe',auth[_0x055e('0xa')](),controller[_0x055e('0xb')]);router[_0x055e('0x9')](_0x055e('0xc'),auth[_0x055e('0xa')](),controller['show']);router[_0x055e('0x9')](_0x055e('0xd'),auth[_0x055e('0xa')](),controller[_0x055e('0xe')]);router[_0x055e('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x055e('0x10'),'faxmessage:create'),controller[_0x055e('0x11')]);router[_0x055e('0x12')](_0x055e('0xc'),auth[_0x055e('0xa')](),controller[_0x055e('0x13')]);router[_0x055e('0x12')](_0x055e('0x14'),auth['isAuthenticated'](),controller[_0x055e('0x15')]);router[_0x055e('0x12')](_0x055e('0x16'),auth[_0x055e('0xa')](),controller[_0x055e('0x17')]);router['delete'](_0x055e('0xc'),auth[_0x055e('0xa')](),controller[_0x055e('0x18')]);module['exports']=router;
\ No newline at end of file
index d44dee8..64d2bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e2f=['exports','STRING','name','INTEGER','ENUM','roundrobin','sequelize'];(function(_0x26bb26,_0x11a89c){var _0x9b5702=function(_0x124078){while(--_0x124078){_0x26bb26['push'](_0x26bb26['shift']());}};_0x9b5702(++_0x11a89c);}(_0x5e2f,0x133));var _0xf5e2=function(_0x359664,_0x38c240){_0x359664=_0x359664-0x0;var _0x5d6f33=_0x5e2f[_0x359664];return _0x5d6f33;};'use strict';var Sequelize=require(_0xf5e2('0x0'));module[_0xf5e2('0x1')]={'name':{'type':Sequelize[_0xf5e2('0x2')],'unique':_0xf5e2('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xf5e2('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf5e2('0x5')]('rrmemory','beepall',_0xf5e2('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc5e5=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x1b49bf,_0xcd4012){var _0x5b5395=function(_0x2b7650){while(--_0x2b7650){_0x1b49bf['push'](_0x1b49bf['shift']());}};_0x5b5395(++_0xcd4012);}(_0xc5e5,0x1e1));var _0x5c5e=function(_0x334b93,_0x42a8f0){_0x334b93=_0x334b93-0x0;var _0x5c725a=_0xc5e5[_0x334b93];return _0x5c725a;};'use strict';var Sequelize=require(_0x5c5e('0x0'));module[_0x5c5e('0x1')]={'name':{'type':Sequelize[_0x5c5e('0x2')],'unique':_0x5c5e('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5c5e('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5c5e('0x5')](_0x5c5e('0x6'),_0x5c5e('0x7'),_0x5c5e('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5c5e('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index a8c8706..84aac97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23cc=['faxPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','findOne','Team','addTeams','ids','online','voicePause','interface','flatMap','transaction','findOrCreate','emit','userFaxQueue:save','removeTeams','Agents','field','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','forEach','userFaxQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','save','update','then','destroy','get','FaxQueues','error','stack','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','catch','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','describe','getMembers','UserFaxQueue','order','User','findAndCountAll'];(function(_0x27348d,_0x317ac7){var _0x11bb3b=function(_0x8944b2){while(--_0x8944b2){_0x27348d['push'](_0x27348d['shift']());}};_0x11bb3b(++_0x317ac7);}(_0x23cc,0x1d5));var _0xc23c=function(_0x4ffa46,_0x81e57b){_0x4ffa46=_0x4ffa46-0x0;var _0x413ff3=_0x23cc[_0x4ffa46];return _0x413ff3;};'use strict';var emlformat=require(_0xc23c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc23c('0x1'));var jsonpatch=require(_0xc23c('0x2'));var rp=require('request-promise');var moment=require(_0xc23c('0x3'));var BPromise=require(_0xc23c('0x4'));var Mustache=require('mustache');var util=require(_0xc23c('0x5'));var path=require(_0xc23c('0x6'));var sox=require(_0xc23c('0x7'));var csv=require(_0xc23c('0x8'));var ejs=require(_0xc23c('0x9'));var fs=require('fs');var fs_extra=require(_0xc23c('0xa'));var _=require(_0xc23c('0xb'));var squel=require(_0xc23c('0xc'));var crypto=require('crypto');var jsforce=require(_0xc23c('0xd'));var deskjs=require(_0xc23c('0xe'));var toCsv=require(_0xc23c('0x8'));var querystring=require(_0xc23c('0xf'));var Papa=require(_0xc23c('0x10'));var Redis=require(_0xc23c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc23c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc23c('0x13'));var logger=require(_0xc23c('0x14'))(_0xc23c('0x15'));var utils=require(_0xc23c('0x16'));var config=require(_0xc23c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc23c('0x18'))['db'];config['redis']=_[_0xc23c('0x19')](config['redis'],{'host':_0xc23c('0x1a'),'port':0x18eb});var socket=require(_0xc23c('0x1b'))(new Redis(config[_0xc23c('0x1c')]));require(_0xc23c('0x1d'))[_0xc23c('0x1e')](socket);function respondWithStatusCode(_0x396f1d,_0xa442a8){_0xa442a8=_0xa442a8||0xcc;return function(_0x105ec2){if(_0x105ec2){return _0x396f1d[_0xc23c('0x1f')](_0xa442a8);}return _0x396f1d[_0xc23c('0x20')](_0xa442a8)[_0xc23c('0x21')]();};}function respondWithResult(_0x5207f1,_0x4f0cd2){_0x4f0cd2=_0x4f0cd2||0xc8;return function(_0x477ce1){if(_0x477ce1){return _0x5207f1[_0xc23c('0x20')](_0x4f0cd2)[_0xc23c('0x22')](_0x477ce1);}};}function respondWithFilteredResult(_0x1ab2a6,_0x3fa42c){return function(_0x563079){if(_0x563079){var _0x1fd128=typeof _0x3fa42c[_0xc23c('0x23')]===_0xc23c('0x24')&&typeof _0x3fa42c['limit']==='undefined';var _0x11d484=_0x563079[_0xc23c('0x25')];var _0x5001df=_0x1fd128?0x0:_0x3fa42c['offset'];var _0x5a8a90=_0x1fd128?_0x563079[_0xc23c('0x25')]:_0x3fa42c[_0xc23c('0x23')]+_0x3fa42c[_0xc23c('0x26')];var _0x364c10;if(_0x5a8a90>=_0x11d484){_0x5a8a90=_0x11d484;_0x364c10=0xc8;}else{_0x364c10=0xce;}_0x1ab2a6['status'](_0x364c10);return _0x1ab2a6['set'](_0xc23c('0x27'),_0x5001df+'-'+_0x5a8a90+'/'+_0x11d484)[_0xc23c('0x22')](_0x563079);}return null;};}function patchUpdates(_0x33c602){return function(_0x26f973){try{jsonpatch['apply'](_0x26f973,_0x33c602,!![]);}catch(_0x5b3534){return BPromise['reject'](_0x5b3534);}return _0x26f973[_0xc23c('0x28')]();};}function saveUpdates(_0x4d47ca,_0x1e6ca7){return function(_0x443129){if(_0x443129){return _0x443129[_0xc23c('0x29')](_0x4d47ca)[_0xc23c('0x2a')](function(_0x1885da){return _0x1885da;});}return null;};}function removeEntity(_0x6d42a5,_0x51d049){return function(_0x572c03){if(_0x572c03){return _0x572c03[_0xc23c('0x2b')]()[_0xc23c('0x2a')](function(){var _0x16c8dc=_0x572c03[_0xc23c('0x2c')]({'plain':!![]});var _0x596d5e=_0xc23c('0x2d');return db['UserProfileResource'][_0xc23c('0x2b')]({'where':{'type':_0x596d5e,'resourceId':_0x16c8dc['id']}})[_0xc23c('0x2a')](function(){return _0x572c03;});})['then'](function(){_0x6d42a5[_0xc23c('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x43ebcc,_0x38c743){return function(_0x52a615){if(!_0x52a615){_0x43ebcc[_0xc23c('0x1f')](0x194);}return _0x52a615;};}function handleError(_0x26b442,_0x524206){_0x524206=_0x524206||0x1f4;return function(_0x48c8e3){logger[_0xc23c('0x2e')](_0x48c8e3[_0xc23c('0x2f')]);if(_0x48c8e3[_0xc23c('0x30')]){delete _0x48c8e3[_0xc23c('0x30')];}_0x26b442['status'](_0x524206)[_0xc23c('0x31')](_0x48c8e3);};}exports[_0xc23c('0x32')]=function(_0x6f7c86,_0x539290){var _0x59dd32={},_0x5bbbe5={},_0x3b88c3={'count':0x0,'rows':[]};var _0x596fe5=_[_0xc23c('0x33')](db[_0xc23c('0x34')][_0xc23c('0x35')],function(_0x3ecf13){return{'name':_0x3ecf13[_0xc23c('0x36')],'type':_0x3ecf13[_0xc23c('0x37')]['key']};});_0x5bbbe5[_0xc23c('0x38')]=_[_0xc23c('0x33')](_0x596fe5,_0xc23c('0x30'));_0x5bbbe5[_0xc23c('0x39')]=_[_0xc23c('0x3a')](_0x6f7c86[_0xc23c('0x39')]);_0x5bbbe5['filters']=_[_0xc23c('0x3b')](_0x5bbbe5[_0xc23c('0x38')],_0x5bbbe5[_0xc23c('0x39')]);_0x59dd32[_0xc23c('0x3c')]=_['intersection'](_0x5bbbe5[_0xc23c('0x38')],qs[_0xc23c('0x3d')](_0x6f7c86[_0xc23c('0x39')]['fields']));_0x59dd32[_0xc23c('0x3c')]=_0x59dd32['attributes']['length']?_0x59dd32[_0xc23c('0x3c')]:_0x5bbbe5[_0xc23c('0x38')];if(!_0x6f7c86[_0xc23c('0x39')][_0xc23c('0x3e')](_0xc23c('0x3f'))){_0x59dd32[_0xc23c('0x26')]=qs[_0xc23c('0x26')](_0x6f7c86['query'][_0xc23c('0x26')]);_0x59dd32['offset']=qs[_0xc23c('0x23')](_0x6f7c86['query'][_0xc23c('0x23')]);}_0x59dd32['order']=qs[_0xc23c('0x40')](_0x6f7c86[_0xc23c('0x39')]['sort']);_0x59dd32['where']=qs[_0xc23c('0x41')](_[_0xc23c('0x42')](_0x6f7c86['query'],_0x5bbbe5[_0xc23c('0x41')]),_0x596fe5);if(_0x6f7c86['query']['filter']){_0x59dd32[_0xc23c('0x43')]=_[_0xc23c('0x44')](_0x59dd32[_0xc23c('0x43')],{'$or':_[_0xc23c('0x33')](_0x596fe5,function(_0x42cddb){if(_0x42cddb[_0xc23c('0x37')]!==_0xc23c('0x45')){var _0xbf2111={};_0xbf2111[_0x42cddb[_0xc23c('0x30')]]={'$like':'%'+_0x6f7c86[_0xc23c('0x39')][_0xc23c('0x46')]+'%'};return _0xbf2111;}})});}_0x59dd32=_[_0xc23c('0x44')]({},_0x59dd32,_0x6f7c86[_0xc23c('0x47')]);var _0x4c4829={'where':_0x59dd32[_0xc23c('0x43')]};return db[_0xc23c('0x34')][_0xc23c('0x25')](_0x4c4829)['then'](function(_0x175a18){_0x3b88c3[_0xc23c('0x25')]=_0x175a18;if(_0x6f7c86['query'][_0xc23c('0x48')]){_0x59dd32['include']=[{'all':!![]}];}return db[_0xc23c('0x34')][_0xc23c('0x49')](_0x59dd32);})['then'](function(_0x444990){_0x3b88c3['rows']=_0x444990;return _0x3b88c3;})[_0xc23c('0x2a')](respondWithFilteredResult(_0x539290,_0x59dd32))[_0xc23c('0x4a')](handleError(_0x539290,null));};exports['show']=function(_0x1744f2,_0x3e64a7){var _0x15b5cb={'raw':!![],'where':{'id':_0x1744f2[_0xc23c('0x4b')]['id']}},_0x293bec={};_0x293bec['model']=_['keys'](db['FaxQueue'][_0xc23c('0x35')]);_0x293bec[_0xc23c('0x39')]=_[_0xc23c('0x3a')](_0x1744f2[_0xc23c('0x39')]);_0x293bec[_0xc23c('0x41')]=_[_0xc23c('0x3b')](_0x293bec[_0xc23c('0x38')],_0x293bec['query']);_0x15b5cb[_0xc23c('0x3c')]=_[_0xc23c('0x3b')](_0x293bec[_0xc23c('0x38')],qs['fields'](_0x1744f2[_0xc23c('0x39')][_0xc23c('0x3d')]));_0x15b5cb[_0xc23c('0x3c')]=_0x15b5cb[_0xc23c('0x3c')][_0xc23c('0x4c')]?_0x15b5cb[_0xc23c('0x3c')]:_0x293bec[_0xc23c('0x38')];if(_0x1744f2['query']['includeAll']){_0x15b5cb['include']=[{'all':!![]}];}_0x15b5cb=_[_0xc23c('0x44')]({},_0x15b5cb,_0x1744f2[_0xc23c('0x47')]);return db['FaxQueue'][_0xc23c('0x4d')](_0x15b5cb)['then'](handleEntityNotFound(_0x3e64a7,null))[_0xc23c('0x2a')](respondWithResult(_0x3e64a7,null))['catch'](handleError(_0x3e64a7,null));};exports[_0xc23c('0x4e')]=function(_0x27ad80,_0x4f66bf){return db['FaxQueue'][_0xc23c('0x4e')](_0x27ad80[_0xc23c('0x4f')],{})[_0xc23c('0x2a')](function(_0x51dfb7){var _0x2b1181=_0x27ad80[_0xc23c('0x50')][_0xc23c('0x2c')]({'plain':!![]});if(!_0x2b1181)throw new Error(_0xc23c('0x51'));if(_0x2b1181[_0xc23c('0x52')]==='user'){var _0x18002a=_0x51dfb7['get']({'plain':!![]});var _0x1f2369=_0xc23c('0x2d');return db[_0xc23c('0x53')][_0xc23c('0x4d')]({'where':{'name':_0x1f2369,'userProfileId':_0x2b1181[_0xc23c('0x54')]},'raw':!![]})[_0xc23c('0x2a')](function(_0x32cfb6){if(_0x32cfb6&&_0x32cfb6['autoAssociation']===0x0){return db['UserProfileResource'][_0xc23c('0x4e')]({'name':_0x18002a[_0xc23c('0x30')],'resourceId':_0x18002a['id'],'type':_0x32cfb6[_0xc23c('0x30')],'sectionId':_0x32cfb6['id']},{})['then'](function(){return _0x51dfb7;});}else{return _0x51dfb7;}})[_0xc23c('0x4a')](function(_0x427045){logger[_0xc23c('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x427045);throw _0x427045;});}return _0x51dfb7;})['then'](respondWithResult(_0x4f66bf,0xc9))[_0xc23c('0x4a')](handleError(_0x4f66bf,null));};exports[_0xc23c('0x29')]=function(_0x367900,_0x2e8406){if(_0x367900[_0xc23c('0x4f')]['id']){delete _0x367900[_0xc23c('0x4f')]['id'];}return db['FaxQueue'][_0xc23c('0x4d')]({'where':{'id':_0x367900[_0xc23c('0x4b')]['id']}})[_0xc23c('0x2a')](handleEntityNotFound(_0x2e8406,null))[_0xc23c('0x2a')](saveUpdates(_0x367900[_0xc23c('0x4f')],null))[_0xc23c('0x2a')](respondWithResult(_0x2e8406,null))[_0xc23c('0x4a')](handleError(_0x2e8406,null));};exports[_0xc23c('0x2b')]=function(_0x191432,_0x4c59a3){return db[_0xc23c('0x34')][_0xc23c('0x4d')]({'where':{'id':_0x191432['params']['id']}})['then'](handleEntityNotFound(_0x4c59a3,null))[_0xc23c('0x2a')](removeEntity(_0x4c59a3,null))[_0xc23c('0x4a')](handleError(_0x4c59a3,null));};exports[_0xc23c('0x55')]=function(_0x3d52fb,_0x4bb350){return db[_0xc23c('0x34')]['describe']()[_0xc23c('0x2a')](respondWithResult(_0x4bb350,null))[_0xc23c('0x4a')](handleError(_0x4bb350,null));};exports[_0xc23c('0x56')]=function(_0x5f0662,_0x32785a,_0x1e23fc){var _0x1e862c={'raw':!![],'where':{}},_0x2defa2={},_0x7120b8;return db[_0xc23c('0x34')]['findOne']({'where':{'id':_0x5f0662[_0xc23c('0x4b')]['id']}})[_0xc23c('0x2a')](handleEntityNotFound(_0x32785a,null))[_0xc23c('0x2a')](function(_0x5df364){if(_0x5df364){_0x7120b8=_0x5df364[_0xc23c('0x2c')]({'plain':!![]});_0x2defa2[_0xc23c('0x38')]=_[_0xc23c('0x3a')](db[_0xc23c('0x57')]['rawAttributes']);_0x2defa2[_0xc23c('0x39')]=_['keys'](_0x5f0662[_0xc23c('0x39')]);_0x2defa2[_0xc23c('0x41')]=_[_0xc23c('0x3b')](_0x2defa2[_0xc23c('0x38')],_0x2defa2[_0xc23c('0x39')]);_0x1e862c[_0xc23c('0x3c')]=_[_0xc23c('0x3b')](_0x2defa2[_0xc23c('0x38')],qs['fields'](_0x5f0662[_0xc23c('0x39')][_0xc23c('0x3d')]));_0x1e862c[_0xc23c('0x3c')]=_0x1e862c[_0xc23c('0x3c')][_0xc23c('0x4c')]?_0x1e862c[_0xc23c('0x3c')]:_0x2defa2[_0xc23c('0x38')];if(!_0x5f0662[_0xc23c('0x39')][_0xc23c('0x3e')](_0xc23c('0x3f'))){_0x1e862c['limit']=qs['limit'](_0x5f0662['query'][_0xc23c('0x26')]);_0x1e862c[_0xc23c('0x23')]=qs[_0xc23c('0x23')](_0x5f0662[_0xc23c('0x39')]['offset']);}_0x1e862c[_0xc23c('0x58')]=qs['sort'](_0x5f0662[_0xc23c('0x39')][_0xc23c('0x40')]);_0x1e862c[_0xc23c('0x43')]=qs[_0xc23c('0x41')](_['pick'](_0x5f0662[_0xc23c('0x39')],_0x2defa2['filters']));_0x1e862c[_0xc23c('0x43')]['FaxQueueId']=_0x5df364['id'];if(_0x5f0662[_0xc23c('0x39')]['filter']){_0x1e862c[_0xc23c('0x43')]=_[_0xc23c('0x44')](_0x1e862c[_0xc23c('0x43')],{'$or':_[_0xc23c('0x33')](_0x1e862c['attributes'],function(_0x5f5770){var _0x5801da={};_0x5801da[_0x5f5770]={'$like':'%'+_0x5f0662[_0xc23c('0x39')][_0xc23c('0x46')]+'%'};return _0x5801da;})});}_0x1e862c=_['merge']({},_0x1e862c,_0x5f0662[_0xc23c('0x47')]);return db[_0xc23c('0x57')][_0xc23c('0x49')](_0x1e862c);}})['then'](function(_0x49a0bd){if(_0x49a0bd){return db[_0xc23c('0x59')][_0xc23c('0x5a')]({'where':{'id':_['map'](_0x49a0bd,'UserId'),'role':'agent'},'attributes':['id',_0xc23c('0x30'),_0xc23c('0x5b'),_0xc23c('0x5c'),_0xc23c('0x5d')]});}})[_0xc23c('0x2a')](function(_0x334278){if(_0x334278){return{'count':_0x334278[_0xc23c('0x25')],'rows':_['map'](_0x334278[_0xc23c('0x5e')],function(_0x3dc52a){return{'membername':_0x3dc52a[_0xc23c('0x30')],'UserId':_0x3dc52a['id'],'queue_name':_0x7120b8[_0xc23c('0x30')],'FaxQueueId':_0x7120b8['id'],'interface':util[_0xc23c('0x5f')](_0xc23c('0x60'),'SIP',_0x3dc52a[_0xc23c('0x30')]),'penalty':0x0,'paused':_0x3dc52a[_0xc23c('0x5b')],'createdAt':_0x3dc52a[_0xc23c('0x5d')],'updatedAt':_0x3dc52a[_0xc23c('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xc23c('0x2a')](respondWithFilteredResult(_0x32785a,_0x1e862c))['catch'](handleError(_0x32785a,null));};exports[_0xc23c('0x61')]=function(_0x526f40,_0x44cb48,_0x501d65){var _0x3a7365={};var _0x30faa5={};var _0x26fbe8;var _0x4137eb;return db[_0xc23c('0x34')][_0xc23c('0x62')]({'where':{'id':_0x526f40[_0xc23c('0x4b')]['id']}})[_0xc23c('0x2a')](handleEntityNotFound(_0x44cb48,null))['then'](function(_0x25bfbe){if(_0x25bfbe){_0x26fbe8=_0x25bfbe;_0x30faa5[_0xc23c('0x38')]=_[_0xc23c('0x3a')](db[_0xc23c('0x63')]['rawAttributes']);_0x30faa5['query']=_[_0xc23c('0x3a')](_0x526f40[_0xc23c('0x39')]);_0x30faa5[_0xc23c('0x41')]=_[_0xc23c('0x3b')](_0x30faa5[_0xc23c('0x38')],_0x30faa5[_0xc23c('0x39')]);_0x3a7365['attributes']=_[_0xc23c('0x3b')](_0x30faa5['model'],qs[_0xc23c('0x3d')](_0x526f40[_0xc23c('0x39')]['fields']));_0x3a7365[_0xc23c('0x3c')]=_0x3a7365['attributes']['length']?_0x3a7365[_0xc23c('0x3c')]:_0x30faa5[_0xc23c('0x38')];_0x3a7365[_0xc23c('0x58')]=qs[_0xc23c('0x40')](_0x526f40[_0xc23c('0x39')][_0xc23c('0x40')]);_0x3a7365[_0xc23c('0x43')]=qs[_0xc23c('0x41')](_['pick'](_0x526f40[_0xc23c('0x39')],_0x30faa5[_0xc23c('0x41')]));if(_0x526f40['query'][_0xc23c('0x46')]){_0x3a7365['where']=_['merge'](_0x3a7365[_0xc23c('0x43')],{'$or':_['map'](_0x3a7365[_0xc23c('0x3c')],function(_0xeab1d6){var _0x26a9fa={};_0x26a9fa[_0xeab1d6]={'$like':'%'+_0x526f40['query'][_0xc23c('0x46')]+'%'};return _0x26a9fa;})});}_0x3a7365=_[_0xc23c('0x44')]({},_0x3a7365,_0x526f40[_0xc23c('0x47')]);return _0x26fbe8[_0xc23c('0x61')](_0x3a7365);}})[_0xc23c('0x2a')](function(_0x1b4109){if(_0x1b4109){_0x4137eb=_0x1b4109['length'];if(!_0x526f40[_0xc23c('0x39')]['hasOwnProperty'](_0xc23c('0x3f'))){_0x3a7365[_0xc23c('0x26')]=qs[_0xc23c('0x26')](_0x526f40[_0xc23c('0x39')][_0xc23c('0x26')]);_0x3a7365[_0xc23c('0x23')]=qs[_0xc23c('0x23')](_0x526f40[_0xc23c('0x39')][_0xc23c('0x23')]);}return _0x26fbe8['getTeams'](_0x3a7365);}})[_0xc23c('0x2a')](function(_0x1b3946){if(_0x1b3946){return _0x1b3946?{'count':_0x4137eb,'rows':_0x1b3946}:null;}})[_0xc23c('0x2a')](respondWithResult(_0x44cb48,null))[_0xc23c('0x4a')](handleError(_0x44cb48,null));};exports[_0xc23c('0x64')]=function(_0x270edb,_0x3c47ed,_0x5b84e0){var _0x397d97=_0x270edb[_0xc23c('0x4f')][_0xc23c('0x65')];return db[_0xc23c('0x63')][_0xc23c('0x49')]({'where':{'id':_0x397d97},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0xc23c('0x66'),_0xc23c('0x67'),_0xc23c('0x68')],'raw':!![]}]})[_0xc23c('0x2a')](function(_0x227b1d){if(_0x227b1d){var _0x1e143f=_[_0xc23c('0x69')](_0x227b1d,function(_0x6d5c3c){var _0x46d882=_0x6d5c3c[_0xc23c('0x2c')]({'plain':!![]});return _0x46d882['Agents'];});return db['FaxQueue'][_0xc23c('0x4d')]({'where':{'id':_0x270edb[_0xc23c('0x4b')]['id']}})[_0xc23c('0x2a')](function(_0x22f6cb){return db['sequelize'][_0xc23c('0x6a')](function(_0x36d914){return _0x22f6cb[_0xc23c('0x64')](_0x397d97,{'transaction':_0x36d914})[_0xc23c('0x2a')](function(){return BPromise['each'](_0x1e143f,function(_0x23f3cf){return db[_0xc23c('0x57')][_0xc23c('0x6b')]({'where':{'UserId':_0x23f3cf['id'],'FaxQueueId':_0x270edb['params']['id']},'transaction':_0x36d914});});})[_0xc23c('0x2a')](function(){_0x1e143f['forEach'](function(_0x41fd33){socket[_0xc23c('0x6c')](_0xc23c('0x6d'),{'UserId':_0x41fd33['id'],'FaxQueueId':_0x22f6cb['id']});});});});});}})[_0xc23c('0x2a')](respondWithStatusCode(_0x3c47ed,null))[_0xc23c('0x4a')](handleError(_0x3c47ed,null));};exports[_0xc23c('0x6e')]=function(_0x6c611,_0x4e243d,_0x43b315){return db[_0xc23c('0x63')]['findAll']({'where':{'id':_0x6c611[_0xc23c('0x39')][_0xc23c('0x65')]},'attributes':['id'],'include':[{'model':db[_0xc23c('0x59')],'as':_0xc23c('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xc23c('0x2a')](handleEntityNotFound(_0x4e243d,null))[_0xc23c('0x2a')](function(_0x3393c5){var _0x347048=_['map'](_0x3393c5,'id');var _0x541202=[];var _0x2c7b8a=[];var _0x45f401=squel['select']();_0x45f401[_0xc23c('0x70')]('tq.TeamId')[_0xc23c('0x71')](_0xc23c('0x72'),'tq')[_0xc23c('0x73')](_0xc23c('0x74'),'ut',_0xc23c('0x75'))['where'](_0xc23c('0x76'),_0x6c611[_0xc23c('0x4b')]['id']);for(var _0x114be9=0x0;_0x114be9<_0x3393c5[_0xc23c('0x4c')];_0x114be9+=0x1){let _0x1ef0fa=_0x3393c5[_0x114be9];for(var _0x392e62=0x0;_0x392e62<_0x1ef0fa[_0xc23c('0x6f')]['length'];_0x392e62+=0x1){let _0x4a4d7d=_0x1ef0fa['Agents'][_0x392e62];var _0x301732=_0x45f401[_0xc23c('0x77')]();_0x301732[_0xc23c('0x43')](_0xc23c('0x78'),_0x4a4d7d['id']);_0x2c7b8a['push'](db[_0xc23c('0x79')]['query'](_0x301732[_0xc23c('0x7a')](),{'type':db[_0xc23c('0x79')][_0xc23c('0x7b')][_0xc23c('0x7c')]})['then'](function(_0x7bc4a5){if(_0x7bc4a5['length']===0x1){return _0x4a4d7d['id'];}else{var _0xf70a79=_['every'](_[_0xc23c('0x33')](_0x7bc4a5,_0xc23c('0x7d')),function(_0x51c3d6){return _[_0xc23c('0x7e')](_0x347048,_0x51c3d6);});if(_0xf70a79){return _0x4a4d7d['id'];}}}));}}return BPromise[_0xc23c('0x7f')](_0x2c7b8a)[_0xc23c('0x2a')](function(_0x11cc2b){_0x541202=_(_0x541202)[_0xc23c('0x80')](_0x11cc2b)[_0xc23c('0x81')]()[_0xc23c('0x82')]();return db[_0xc23c('0x34')][_0xc23c('0x4d')]({'where':{'id':_0x6c611['params']['id']}})[_0xc23c('0x2a')](function(_0x56cd01){return db[_0xc23c('0x79')][_0xc23c('0x6a')](function(_0x361b7c){return _0x56cd01[_0xc23c('0x6e')](_0x6c611[_0xc23c('0x39')]['ids'],{'transaction':_0x361b7c})['then'](function(){if(!_[_0xc23c('0x83')](_0x541202)){return _0x56cd01['removeAgents'](_0x541202,{'transaction':_0x361b7c});}})[_0xc23c('0x2a')](function(){_0x541202[_0xc23c('0x84')](function(_0x2af29d){socket[_0xc23c('0x6c')](_0xc23c('0x85'),{'UserId':_0x2af29d,'FaxQueueId':_0x56cd01['id']});});});});});});})[_0xc23c('0x2a')](respondWithStatusCode(_0x4e243d,null))[_0xc23c('0x4a')](handleError(_0x4e243d,null));};exports[_0xc23c('0x86')]=function(_0x5a1573,_0x3d9965,_0x2b8f74){return db['FaxQueue'][_0xc23c('0x4d')]({'where':{'id':_0x5a1573[_0xc23c('0x4b')]['id']}})[_0xc23c('0x2a')](handleEntityNotFound(_0x3d9965,null))['then'](function(_0x5a6244){if(_0x5a6244){return _0x5a6244[_0xc23c('0x86')](_0x5a1573['body']['ids'],_[_0xc23c('0x87')](_0x5a1573['body'],['ids','id'])||{})[_0xc23c('0x88')](function(_0x5c432b){for(var _0x41fb0b=0x0;_0x41fb0b<_0x5a1573[_0xc23c('0x4f')][_0xc23c('0x65')][_0xc23c('0x4c')];_0x41fb0b+=0x1){socket[_0xc23c('0x6c')]('userFaxQueue:save',{'UserId':Number(_0x5a1573[_0xc23c('0x4f')][_0xc23c('0x65')][_0x41fb0b]),'FaxQueueId':Number(_0x5a1573['params']['id'])});}return _0x5c432b;});}})[_0xc23c('0x2a')](respondWithResult(_0x3d9965,null))[_0xc23c('0x4a')](handleError(_0x3d9965,null));};exports[_0xc23c('0x89')]=function(_0x356b6e,_0x22322a,_0x4b9014){return db[_0xc23c('0x34')][_0xc23c('0x4d')]({'where':{'id':_0x356b6e[_0xc23c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x22322a,null))[_0xc23c('0x2a')](function(_0x9a6dfd){if(_0x9a6dfd){return _0x9a6dfd[_0xc23c('0x89')](_0x356b6e[_0xc23c('0x39')]['ids'])[_0xc23c('0x2a')](function(){if(_[_0xc23c('0x8a')](_0x356b6e[_0xc23c('0x39')]['ids'])){for(var _0x35fce7=0x0;_0x35fce7<_0x356b6e[_0xc23c('0x39')][_0xc23c('0x65')]['length'];_0x35fce7+=0x1){socket[_0xc23c('0x6c')](_0xc23c('0x85'),{'UserId':Number(_0x356b6e[_0xc23c('0x39')][_0xc23c('0x65')][_0x35fce7]),'FaxQueueId':Number(_0x356b6e[_0xc23c('0x4b')]['id'])});}}else{socket[_0xc23c('0x6c')](_0xc23c('0x85'),{'UserId':Number(_0x356b6e[_0xc23c('0x39')][_0xc23c('0x65')]),'FaxQueueId':Number(_0x356b6e['params']['id'])});}});}})[_0xc23c('0x2a')](respondWithStatusCode(_0x22322a,null))[_0xc23c('0x4a')](handleError(_0x22322a,null));};exports['getAgents']=function(_0x5e7b09,_0x3d36bc,_0x154daa){var _0x372553={};var _0x519195={};var _0x5e9409;var _0x5aa58d;return db[_0xc23c('0x34')]['findOne']({'where':{'id':_0x5e7b09[_0xc23c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3d36bc,null))[_0xc23c('0x2a')](function(_0x276814){if(_0x276814){_0x5e9409=_0x276814;_0x519195[_0xc23c('0x38')]=_['keys'](db['User']['rawAttributes']);_0x519195['query']=_[_0xc23c('0x3a')](_0x5e7b09[_0xc23c('0x39')]);_0x519195[_0xc23c('0x41')]=_['intersection'](_0x519195[_0xc23c('0x38')],_0x519195[_0xc23c('0x39')]);_0x372553[_0xc23c('0x3c')]=_[_0xc23c('0x3b')](_0x519195[_0xc23c('0x38')],qs['fields'](_0x5e7b09[_0xc23c('0x39')][_0xc23c('0x3d')]));_0x372553['attributes']=_0x372553[_0xc23c('0x3c')]['length']?_0x372553['attributes']:_0x519195[_0xc23c('0x38')];_0x372553[_0xc23c('0x58')]=qs[_0xc23c('0x40')](_0x5e7b09[_0xc23c('0x39')]['sort']);_0x372553[_0xc23c('0x43')]=qs[_0xc23c('0x41')](_[_0xc23c('0x42')](_0x5e7b09['query'],_0x519195[_0xc23c('0x41')]));if(_0x5e7b09['query'][_0xc23c('0x46')]){_0x372553[_0xc23c('0x43')]=_[_0xc23c('0x44')](_0x372553[_0xc23c('0x43')],{'$or':_['map'](_0x372553['attributes'],function(_0x2d515a){var _0x3d669c={};_0x3d669c[_0x2d515a]={'$like':'%'+_0x5e7b09[_0xc23c('0x39')][_0xc23c('0x46')]+'%'};return _0x3d669c;})});}_0x372553=_[_0xc23c('0x44')]({},_0x372553,_0x5e7b09[_0xc23c('0x47')]);return _0x5e9409[_0xc23c('0x8b')](_0x372553);}})[_0xc23c('0x2a')](function(_0x2b75c8){if(_0x2b75c8){_0x5aa58d=_0x2b75c8[_0xc23c('0x4c')];if(!_0x5e7b09[_0xc23c('0x39')][_0xc23c('0x3e')]('nolimit')){_0x372553[_0xc23c('0x26')]=qs[_0xc23c('0x26')](_0x5e7b09[_0xc23c('0x39')][_0xc23c('0x26')]);_0x372553[_0xc23c('0x23')]=qs[_0xc23c('0x23')](_0x5e7b09[_0xc23c('0x39')]['offset']);}return _0x5e9409[_0xc23c('0x8b')](_0x372553);}})[_0xc23c('0x2a')](function(_0x39f343){if(_0x39f343){return _0x39f343?{'count':_0x5aa58d,'rows':_0x39f343}:null;}})[_0xc23c('0x2a')](respondWithResult(_0x3d36bc,null))['catch'](handleError(_0x3d36bc,null));};
\ No newline at end of file
+var _0xd6c6=['zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./faxQueue.socket','register','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','FaxQueues','UserProfileResource','sendStatus','error','stack','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','findOne','UserFaxQueue','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','SIP','pick','getTeams','addTeams','ids','Agents','online','sequelize','transaction','each','findOrCreate','Team','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','all','union','value','isEmpty','removeAgents','forEach','emit','userFaxQueue:remove','addAgents','spread','userFaxQueue:save','isArray','getAgents','rimraf'];(function(_0x1699e6,_0x38cb2d){var _0x4d8b9f=function(_0x40ddc8){while(--_0x40ddc8){_0x1699e6['push'](_0x1699e6['shift']());}};_0x4d8b9f(++_0x38cb2d);}(_0xd6c6,0x1a3));var _0x6d6c=function(_0x225acc,_0x21b6fa){_0x225acc=_0x225acc-0x0;var _0x25565d=_0xd6c6[_0x225acc];return _0x25565d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d6c('0x0'));var zipdir=require(_0x6d6c('0x1'));var jsonpatch=require(_0x6d6c('0x2'));var rp=require(_0x6d6c('0x3'));var moment=require('moment');var BPromise=require(_0x6d6c('0x4'));var Mustache=require(_0x6d6c('0x5'));var util=require(_0x6d6c('0x6'));var path=require(_0x6d6c('0x7'));var sox=require(_0x6d6c('0x8'));var csv=require(_0x6d6c('0x9'));var ejs=require(_0x6d6c('0xa'));var fs=require('fs');var fs_extra=require(_0x6d6c('0xb'));var _=require('lodash');var squel=require(_0x6d6c('0xc'));var crypto=require(_0x6d6c('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6d6c('0x9'));var querystring=require(_0x6d6c('0xe'));var Papa=require(_0x6d6c('0xf'));var Redis=require(_0x6d6c('0x10'));var authService=require(_0x6d6c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x6d6c('0x12'));var hardwareService=require(_0x6d6c('0x13'));var logger=require(_0x6d6c('0x14'))(_0x6d6c('0x15'));var utils=require(_0x6d6c('0x16'));var config=require(_0x6d6c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6d6c('0x18'))['db'];config['redis']=_[_0x6d6c('0x19')](config[_0x6d6c('0x1a')],{'host':_0x6d6c('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6d6c('0x1a')]));require(_0x6d6c('0x1c'))[_0x6d6c('0x1d')](socket);function respondWithStatusCode(_0x253c82,_0x2feebe){_0x2feebe=_0x2feebe||0xcc;return function(_0x3e2704){if(_0x3e2704){return _0x253c82['sendStatus'](_0x2feebe);}return _0x253c82[_0x6d6c('0x1e')](_0x2feebe)[_0x6d6c('0x1f')]();};}function respondWithResult(_0x273945,_0x1216f5){_0x1216f5=_0x1216f5||0xc8;return function(_0x33ef32){if(_0x33ef32){return _0x273945['status'](_0x1216f5)['json'](_0x33ef32);}};}function respondWithFilteredResult(_0xc42cc7,_0x696b83){return function(_0x44e854){if(_0x44e854){var _0x4b1a3a=typeof _0x696b83[_0x6d6c('0x20')]===_0x6d6c('0x21')&&typeof _0x696b83[_0x6d6c('0x22')]===_0x6d6c('0x21');var _0x3cb13c=_0x44e854['count'];var _0x337788=_0x4b1a3a?0x0:_0x696b83[_0x6d6c('0x20')];var _0x21a0ed=_0x4b1a3a?_0x44e854[_0x6d6c('0x23')]:_0x696b83['offset']+_0x696b83['limit'];var _0x1dc5d5;if(_0x21a0ed>=_0x3cb13c){_0x21a0ed=_0x3cb13c;_0x1dc5d5=0xc8;}else{_0x1dc5d5=0xce;}_0xc42cc7[_0x6d6c('0x1e')](_0x1dc5d5);return _0xc42cc7[_0x6d6c('0x24')](_0x6d6c('0x25'),_0x337788+'-'+_0x21a0ed+'/'+_0x3cb13c)[_0x6d6c('0x26')](_0x44e854);}return null;};}function patchUpdates(_0x14b07d){return function(_0x1b7e48){try{jsonpatch[_0x6d6c('0x27')](_0x1b7e48,_0x14b07d,!![]);}catch(_0x29b148){return BPromise[_0x6d6c('0x28')](_0x29b148);}return _0x1b7e48['save']();};}function saveUpdates(_0x5a78ff,_0x3c4956){return function(_0x250170){if(_0x250170){return _0x250170[_0x6d6c('0x29')](_0x5a78ff)[_0x6d6c('0x2a')](function(_0x5cb4a8){return _0x5cb4a8;});}return null;};}function removeEntity(_0x5cbe0f,_0xef459e){return function(_0x2d3792){if(_0x2d3792){return _0x2d3792[_0x6d6c('0x2b')]()[_0x6d6c('0x2a')](function(){var _0x296804=_0x2d3792[_0x6d6c('0x2c')]({'plain':!![]});var _0x28e5f6=_0x6d6c('0x2d');return db[_0x6d6c('0x2e')][_0x6d6c('0x2b')]({'where':{'type':_0x28e5f6,'resourceId':_0x296804['id']}})['then'](function(){return _0x2d3792;});})[_0x6d6c('0x2a')](function(){_0x5cbe0f['status'](0xcc)[_0x6d6c('0x1f')]();});}};}function handleEntityNotFound(_0x330698,_0x44a163){return function(_0x3c758b){if(!_0x3c758b){_0x330698[_0x6d6c('0x2f')](0x194);}return _0x3c758b;};}function handleError(_0x507d49,_0x3a9e02){_0x3a9e02=_0x3a9e02||0x1f4;return function(_0x33f1f1){logger[_0x6d6c('0x30')](_0x33f1f1[_0x6d6c('0x31')]);if(_0x33f1f1[_0x6d6c('0x32')]){delete _0x33f1f1[_0x6d6c('0x32')];}_0x507d49[_0x6d6c('0x1e')](_0x3a9e02)[_0x6d6c('0x33')](_0x33f1f1);};}exports[_0x6d6c('0x34')]=function(_0x15886d,_0x5ba85a){var _0x243a37={},_0x4f6023={},_0x2ab601={'count':0x0,'rows':[]};var _0x16b4c5=_[_0x6d6c('0x35')](db[_0x6d6c('0x36')][_0x6d6c('0x37')],function(_0x31716b){return{'name':_0x31716b[_0x6d6c('0x38')],'type':_0x31716b[_0x6d6c('0x39')][_0x6d6c('0x3a')]};});_0x4f6023[_0x6d6c('0x3b')]=_[_0x6d6c('0x35')](_0x16b4c5,_0x6d6c('0x32'));_0x4f6023[_0x6d6c('0x3c')]=_[_0x6d6c('0x3d')](_0x15886d[_0x6d6c('0x3c')]);_0x4f6023[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x4f6023[_0x6d6c('0x3b')],_0x4f6023[_0x6d6c('0x3c')]);_0x243a37[_0x6d6c('0x40')]=_['intersection'](_0x4f6023[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x15886d[_0x6d6c('0x3c')]['fields']));_0x243a37[_0x6d6c('0x40')]=_0x243a37[_0x6d6c('0x40')][_0x6d6c('0x42')]?_0x243a37['attributes']:_0x4f6023[_0x6d6c('0x3b')];if(!_0x15886d['query']['hasOwnProperty'](_0x6d6c('0x43'))){_0x243a37['limit']=qs[_0x6d6c('0x22')](_0x15886d[_0x6d6c('0x3c')]['limit']);_0x243a37['offset']=qs[_0x6d6c('0x20')](_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x20')]);}_0x243a37[_0x6d6c('0x44')]=qs['sort'](_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x45')]);_0x243a37[_0x6d6c('0x46')]=qs[_0x6d6c('0x3e')](_['pick'](_0x15886d[_0x6d6c('0x3c')],_0x4f6023['filters']),_0x16b4c5);if(_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x47')]){_0x243a37[_0x6d6c('0x46')]=_[_0x6d6c('0x48')](_0x243a37[_0x6d6c('0x46')],{'$or':_[_0x6d6c('0x35')](_0x16b4c5,function(_0x1cc0cc){if(_0x1cc0cc[_0x6d6c('0x39')]!==_0x6d6c('0x49')){var _0x1a5297={};_0x1a5297[_0x1cc0cc[_0x6d6c('0x32')]]={'$like':'%'+_0x15886d[_0x6d6c('0x3c')]['filter']+'%'};return _0x1a5297;}})});}_0x243a37=_[_0x6d6c('0x48')]({},_0x243a37,_0x15886d[_0x6d6c('0x4a')]);var _0x55fb54={'where':_0x243a37[_0x6d6c('0x46')]};return db[_0x6d6c('0x36')][_0x6d6c('0x23')](_0x55fb54)[_0x6d6c('0x2a')](function(_0x2e23cb){_0x2ab601[_0x6d6c('0x23')]=_0x2e23cb;if(_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x4b')]){_0x243a37['include']=[{'all':!![]}];}return db[_0x6d6c('0x36')][_0x6d6c('0x4c')](_0x243a37);})[_0x6d6c('0x2a')](function(_0x1f5ae1){_0x2ab601[_0x6d6c('0x4d')]=_0x1f5ae1;return _0x2ab601;})[_0x6d6c('0x2a')](respondWithFilteredResult(_0x5ba85a,_0x243a37))[_0x6d6c('0x4e')](handleError(_0x5ba85a,null));};exports[_0x6d6c('0x4f')]=function(_0x564d18,_0x4a7718){var _0x1989d2={'raw':!![],'where':{'id':_0x564d18[_0x6d6c('0x50')]['id']}},_0xb63fcb={};_0xb63fcb[_0x6d6c('0x3b')]=_[_0x6d6c('0x3d')](db['FaxQueue']['rawAttributes']);_0xb63fcb[_0x6d6c('0x3c')]=_[_0x6d6c('0x3d')](_0x564d18[_0x6d6c('0x3c')]);_0xb63fcb[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0xb63fcb[_0x6d6c('0x3b')],_0xb63fcb[_0x6d6c('0x3c')]);_0x1989d2[_0x6d6c('0x40')]=_[_0x6d6c('0x3f')](_0xb63fcb[_0x6d6c('0x3b')],qs['fields'](_0x564d18[_0x6d6c('0x3c')][_0x6d6c('0x41')]));_0x1989d2['attributes']=_0x1989d2['attributes'][_0x6d6c('0x42')]?_0x1989d2[_0x6d6c('0x40')]:_0xb63fcb['model'];if(_0x564d18['query'][_0x6d6c('0x4b')]){_0x1989d2[_0x6d6c('0x51')]=[{'all':!![]}];}_0x1989d2=_[_0x6d6c('0x48')]({},_0x1989d2,_0x564d18[_0x6d6c('0x4a')]);return db[_0x6d6c('0x36')]['find'](_0x1989d2)['then'](handleEntityNotFound(_0x4a7718,null))[_0x6d6c('0x2a')](respondWithResult(_0x4a7718,null))['catch'](handleError(_0x4a7718,null));};exports[_0x6d6c('0x52')]=function(_0x557ac4,_0x295196){return db[_0x6d6c('0x36')]['create'](_0x557ac4[_0x6d6c('0x53')],{})[_0x6d6c('0x2a')](function(_0x45d7f8){var _0x285a5f=_0x557ac4[_0x6d6c('0x54')][_0x6d6c('0x2c')]({'plain':!![]});if(!_0x285a5f)throw new Error(_0x6d6c('0x55'));if(_0x285a5f['role']==='user'){var _0x2964f6=_0x45d7f8[_0x6d6c('0x2c')]({'plain':!![]});var _0x552e67='FaxQueues';return db['UserProfileSection']['find']({'where':{'name':_0x552e67,'userProfileId':_0x285a5f[_0x6d6c('0x56')]},'raw':!![]})[_0x6d6c('0x2a')](function(_0x2046b2){if(_0x2046b2&&_0x2046b2['autoAssociation']===0x0){return db['UserProfileResource'][_0x6d6c('0x52')]({'name':_0x2964f6[_0x6d6c('0x32')],'resourceId':_0x2964f6['id'],'type':_0x2046b2['name'],'sectionId':_0x2046b2['id']},{})[_0x6d6c('0x2a')](function(){return _0x45d7f8;});}else{return _0x45d7f8;}})[_0x6d6c('0x4e')](function(_0x251720){logger['error'](_0x6d6c('0x57'),_0x251720);throw _0x251720;});}return _0x45d7f8;})['then'](respondWithResult(_0x295196,0xc9))[_0x6d6c('0x4e')](handleError(_0x295196,null));};exports[_0x6d6c('0x29')]=function(_0x18dd02,_0x2f8f11){if(_0x18dd02[_0x6d6c('0x53')]['id']){delete _0x18dd02[_0x6d6c('0x53')]['id'];}return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x18dd02[_0x6d6c('0x50')]['id']}})['then'](handleEntityNotFound(_0x2f8f11,null))[_0x6d6c('0x2a')](saveUpdates(_0x18dd02['body'],null))['then'](respondWithResult(_0x2f8f11,null))[_0x6d6c('0x4e')](handleError(_0x2f8f11,null));};exports['destroy']=function(_0x188db8,_0x1486da){return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x188db8[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x1486da,null))[_0x6d6c('0x2a')](removeEntity(_0x1486da,null))['catch'](handleError(_0x1486da,null));};exports[_0x6d6c('0x59')]=function(_0x4582b5,_0x1831a0){return db[_0x6d6c('0x36')][_0x6d6c('0x59')]()[_0x6d6c('0x2a')](respondWithResult(_0x1831a0,null))[_0x6d6c('0x4e')](handleError(_0x1831a0,null));};exports['getMembers']=function(_0x19efa3,_0x1f6939,_0x1032a4){var _0x1cb9b2={'raw':!![],'where':{}},_0x468a2b={},_0x490dc9;return db['FaxQueue'][_0x6d6c('0x5a')]({'where':{'id':_0x19efa3[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x1f6939,null))[_0x6d6c('0x2a')](function(_0x496d19){if(_0x496d19){_0x490dc9=_0x496d19[_0x6d6c('0x2c')]({'plain':!![]});_0x468a2b[_0x6d6c('0x3b')]=_[_0x6d6c('0x3d')](db[_0x6d6c('0x5b')][_0x6d6c('0x37')]);_0x468a2b['query']=_[_0x6d6c('0x3d')](_0x19efa3[_0x6d6c('0x3c')]);_0x468a2b[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x468a2b[_0x6d6c('0x3b')],_0x468a2b[_0x6d6c('0x3c')]);_0x1cb9b2[_0x6d6c('0x40')]=_[_0x6d6c('0x3f')](_0x468a2b[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x19efa3['query']['fields']));_0x1cb9b2['attributes']=_0x1cb9b2[_0x6d6c('0x40')]['length']?_0x1cb9b2[_0x6d6c('0x40')]:_0x468a2b[_0x6d6c('0x3b')];if(!_0x19efa3[_0x6d6c('0x3c')]['hasOwnProperty'](_0x6d6c('0x43'))){_0x1cb9b2[_0x6d6c('0x22')]=qs[_0x6d6c('0x22')](_0x19efa3['query'][_0x6d6c('0x22')]);_0x1cb9b2[_0x6d6c('0x20')]=qs[_0x6d6c('0x20')](_0x19efa3['query'][_0x6d6c('0x20')]);}_0x1cb9b2[_0x6d6c('0x44')]=qs[_0x6d6c('0x45')](_0x19efa3[_0x6d6c('0x3c')]['sort']);_0x1cb9b2[_0x6d6c('0x46')]=qs[_0x6d6c('0x3e')](_['pick'](_0x19efa3[_0x6d6c('0x3c')],_0x468a2b['filters']));_0x1cb9b2[_0x6d6c('0x46')][_0x6d6c('0x5c')]=_0x496d19['id'];if(_0x19efa3[_0x6d6c('0x3c')]['filter']){_0x1cb9b2[_0x6d6c('0x46')]=_[_0x6d6c('0x48')](_0x1cb9b2[_0x6d6c('0x46')],{'$or':_[_0x6d6c('0x35')](_0x1cb9b2[_0x6d6c('0x40')],function(_0x36711e){var _0x1405dc={};_0x1405dc[_0x36711e]={'$like':'%'+_0x19efa3[_0x6d6c('0x3c')]['filter']+'%'};return _0x1405dc;})});}_0x1cb9b2=_[_0x6d6c('0x48')]({},_0x1cb9b2,_0x19efa3[_0x6d6c('0x4a')]);return db[_0x6d6c('0x5b')]['findAll'](_0x1cb9b2);}})[_0x6d6c('0x2a')](function(_0x4f6518){if(_0x4f6518){return db[_0x6d6c('0x5d')][_0x6d6c('0x5e')]({'where':{'id':_['map'](_0x4f6518,_0x6d6c('0x5f')),'role':_0x6d6c('0x60')},'attributes':['id','name',_0x6d6c('0x61'),_0x6d6c('0x62'),_0x6d6c('0x63')]});}})[_0x6d6c('0x2a')](function(_0x14fc39){if(_0x14fc39){return{'count':_0x14fc39[_0x6d6c('0x23')],'rows':_[_0x6d6c('0x35')](_0x14fc39[_0x6d6c('0x4d')],function(_0x54c397){return{'membername':_0x54c397[_0x6d6c('0x32')],'UserId':_0x54c397['id'],'queue_name':_0x490dc9['name'],'FaxQueueId':_0x490dc9['id'],'interface':util[_0x6d6c('0x64')]('%s/%s',_0x6d6c('0x65'),_0x54c397[_0x6d6c('0x32')]),'penalty':0x0,'paused':_0x54c397[_0x6d6c('0x61')],'createdAt':_0x54c397[_0x6d6c('0x63')],'updatedAt':_0x54c397[_0x6d6c('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x6d6c('0x2a')](respondWithFilteredResult(_0x1f6939,_0x1cb9b2))[_0x6d6c('0x4e')](handleError(_0x1f6939,null));};exports['getTeams']=function(_0x3f6ff0,_0x280b13,_0x386417){var _0x388e90={};var _0x63f147={};var _0x547b57;var _0x3752c3;return db['FaxQueue'][_0x6d6c('0x5a')]({'where':{'id':_0x3f6ff0[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x280b13,null))[_0x6d6c('0x2a')](function(_0x38c582){if(_0x38c582){_0x547b57=_0x38c582;_0x63f147['model']=_[_0x6d6c('0x3d')](db['Team']['rawAttributes']);_0x63f147[_0x6d6c('0x3c')]=_['keys'](_0x3f6ff0[_0x6d6c('0x3c')]);_0x63f147[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x63f147[_0x6d6c('0x3b')],_0x63f147[_0x6d6c('0x3c')]);_0x388e90['attributes']=_[_0x6d6c('0x3f')](_0x63f147[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x3f6ff0[_0x6d6c('0x3c')]['fields']));_0x388e90['attributes']=_0x388e90[_0x6d6c('0x40')][_0x6d6c('0x42')]?_0x388e90[_0x6d6c('0x40')]:_0x63f147['model'];_0x388e90['order']=qs['sort'](_0x3f6ff0[_0x6d6c('0x3c')][_0x6d6c('0x45')]);_0x388e90[_0x6d6c('0x46')]=qs[_0x6d6c('0x3e')](_[_0x6d6c('0x66')](_0x3f6ff0[_0x6d6c('0x3c')],_0x63f147[_0x6d6c('0x3e')]));if(_0x3f6ff0['query']['filter']){_0x388e90[_0x6d6c('0x46')]=_['merge'](_0x388e90['where'],{'$or':_[_0x6d6c('0x35')](_0x388e90[_0x6d6c('0x40')],function(_0x2f47e0){var _0xadd439={};_0xadd439[_0x2f47e0]={'$like':'%'+_0x3f6ff0[_0x6d6c('0x3c')][_0x6d6c('0x47')]+'%'};return _0xadd439;})});}_0x388e90=_[_0x6d6c('0x48')]({},_0x388e90,_0x3f6ff0['options']);return _0x547b57['getTeams'](_0x388e90);}})[_0x6d6c('0x2a')](function(_0x44bfb5){if(_0x44bfb5){_0x3752c3=_0x44bfb5[_0x6d6c('0x42')];if(!_0x3f6ff0[_0x6d6c('0x3c')]['hasOwnProperty'](_0x6d6c('0x43'))){_0x388e90[_0x6d6c('0x22')]=qs['limit'](_0x3f6ff0['query']['limit']);_0x388e90['offset']=qs['offset'](_0x3f6ff0['query'][_0x6d6c('0x20')]);}return _0x547b57[_0x6d6c('0x67')](_0x388e90);}})['then'](function(_0x39482c){if(_0x39482c){return _0x39482c?{'count':_0x3752c3,'rows':_0x39482c}:null;}})[_0x6d6c('0x2a')](respondWithResult(_0x280b13,null))[_0x6d6c('0x4e')](handleError(_0x280b13,null));};exports[_0x6d6c('0x68')]=function(_0x2c263c,_0x246e56,_0xbb0e53){var _0x368ca1=_0x2c263c[_0x6d6c('0x53')][_0x6d6c('0x69')];return db['Team']['findAll']({'where':{'id':_0x368ca1},'attributes':['id'],'include':[{'model':db[_0x6d6c('0x5d')],'as':_0x6d6c('0x6a'),'attributes':['id',_0x6d6c('0x32'),_0x6d6c('0x6b'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x434c9f){if(_0x434c9f){var _0x3d85ca=_['flatMap'](_0x434c9f,function(_0x13f905){var _0x2d0001=_0x13f905['get']({'plain':!![]});return _0x2d0001[_0x6d6c('0x6a')];});return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x2c263c['params']['id']}})[_0x6d6c('0x2a')](function(_0x3eea40){return db[_0x6d6c('0x6c')][_0x6d6c('0x6d')](function(_0x3e8971){return _0x3eea40['addTeams'](_0x368ca1,{'transaction':_0x3e8971})[_0x6d6c('0x2a')](function(){return BPromise[_0x6d6c('0x6e')](_0x3d85ca,function(_0x356807){return db[_0x6d6c('0x5b')][_0x6d6c('0x6f')]({'where':{'UserId':_0x356807['id'],'FaxQueueId':_0x2c263c['params']['id']},'transaction':_0x3e8971});});})[_0x6d6c('0x2a')](function(){_0x3d85ca['forEach'](function(_0x1b8949){socket['emit']('userFaxQueue:save',{'UserId':_0x1b8949['id'],'FaxQueueId':_0x3eea40['id']});});});});});}})[_0x6d6c('0x2a')](respondWithStatusCode(_0x246e56,null))[_0x6d6c('0x4e')](handleError(_0x246e56,null));};exports['removeTeams']=function(_0x1bd22c,_0x2d19f1,_0x1aa45b){return db[_0x6d6c('0x70')][_0x6d6c('0x4c')]({'where':{'id':_0x1bd22c[_0x6d6c('0x3c')][_0x6d6c('0x69')]},'attributes':['id'],'include':[{'model':db[_0x6d6c('0x5d')],'as':_0x6d6c('0x6a'),'attributes':['id'],'raw':!![]}]})[_0x6d6c('0x2a')](handleEntityNotFound(_0x2d19f1,null))[_0x6d6c('0x2a')](function(_0x52bf23){var _0xeed8da=_[_0x6d6c('0x35')](_0x52bf23,'id');var _0x4b8c16=[];var _0x581b8b=[];var _0x343dc0=squel['select']();_0x343dc0[_0x6d6c('0x71')](_0x6d6c('0x72'))[_0x6d6c('0x73')](_0x6d6c('0x74'),'tq')['join'](_0x6d6c('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x6d6c('0x46')](_0x6d6c('0x76'),_0x1bd22c['params']['id']);for(var _0x4112e3=0x0;_0x4112e3<_0x52bf23['length'];_0x4112e3+=0x1){let _0x3e30c2=_0x52bf23[_0x4112e3];for(var _0x2e199d=0x0;_0x2e199d<_0x3e30c2[_0x6d6c('0x6a')][_0x6d6c('0x42')];_0x2e199d+=0x1){let _0xc567de=_0x3e30c2[_0x6d6c('0x6a')][_0x2e199d];var _0x5f3f17=_0x343dc0[_0x6d6c('0x77')]();_0x5f3f17[_0x6d6c('0x46')](_0x6d6c('0x78'),_0xc567de['id']);_0x581b8b[_0x6d6c('0x79')](db[_0x6d6c('0x6c')][_0x6d6c('0x3c')](_0x5f3f17[_0x6d6c('0x7a')](),{'type':db['sequelize'][_0x6d6c('0x7b')]['SELECT']})[_0x6d6c('0x2a')](function(_0x4719be){if(_0x4719be[_0x6d6c('0x42')]===0x1){return _0xc567de['id'];}else{var _0x1d148c=_[_0x6d6c('0x7c')](_['map'](_0x4719be,_0x6d6c('0x7d')),function(_0x252c01){return _[_0x6d6c('0x7e')](_0xeed8da,_0x252c01);});if(_0x1d148c){return _0xc567de['id'];}}}));}}return BPromise[_0x6d6c('0x7f')](_0x581b8b)[_0x6d6c('0x2a')](function(_0x4f082c){_0x4b8c16=_(_0x4b8c16)[_0x6d6c('0x80')](_0x4f082c)['compact']()[_0x6d6c('0x81')]();return db[_0x6d6c('0x36')][_0x6d6c('0x58')]({'where':{'id':_0x1bd22c[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](function(_0x1f67a4){return db[_0x6d6c('0x6c')]['transaction'](function(_0x411e31){return _0x1f67a4['removeTeams'](_0x1bd22c[_0x6d6c('0x3c')][_0x6d6c('0x69')],{'transaction':_0x411e31})['then'](function(){if(!_[_0x6d6c('0x82')](_0x4b8c16)){return _0x1f67a4[_0x6d6c('0x83')](_0x4b8c16,{'transaction':_0x411e31});}})['then'](function(){_0x4b8c16[_0x6d6c('0x84')](function(_0x566fb2){socket[_0x6d6c('0x85')](_0x6d6c('0x86'),{'UserId':_0x566fb2,'FaxQueueId':_0x1f67a4['id']});});});});});});})['then'](respondWithStatusCode(_0x2d19f1,null))[_0x6d6c('0x4e')](handleError(_0x2d19f1,null));};exports[_0x6d6c('0x87')]=function(_0x4a45e8,_0x5d8dca,_0x15a1d4){return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x4a45e8[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x5d8dca,null))[_0x6d6c('0x2a')](function(_0x136305){if(_0x136305){return _0x136305[_0x6d6c('0x87')](_0x4a45e8['body'][_0x6d6c('0x69')],_['omit'](_0x4a45e8[_0x6d6c('0x53')],[_0x6d6c('0x69'),'id'])||{})[_0x6d6c('0x88')](function(_0x4067ae){for(var _0x49ea18=0x0;_0x49ea18<_0x4a45e8[_0x6d6c('0x53')]['ids'][_0x6d6c('0x42')];_0x49ea18+=0x1){socket['emit'](_0x6d6c('0x89'),{'UserId':Number(_0x4a45e8[_0x6d6c('0x53')][_0x6d6c('0x69')][_0x49ea18]),'FaxQueueId':Number(_0x4a45e8[_0x6d6c('0x50')]['id'])});}return _0x4067ae;});}})[_0x6d6c('0x2a')](respondWithResult(_0x5d8dca,null))[_0x6d6c('0x4e')](handleError(_0x5d8dca,null));};exports['removeAgents']=function(_0x3c00c0,_0x2539fc,_0x365912){return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x3c00c0[_0x6d6c('0x50')]['id']}})['then'](handleEntityNotFound(_0x2539fc,null))['then'](function(_0x5d68da){if(_0x5d68da){return _0x5d68da['removeAgents'](_0x3c00c0[_0x6d6c('0x3c')]['ids'])['then'](function(){if(_[_0x6d6c('0x8a')](_0x3c00c0[_0x6d6c('0x3c')][_0x6d6c('0x69')])){for(var _0x120b3d=0x0;_0x120b3d<_0x3c00c0['query']['ids'][_0x6d6c('0x42')];_0x120b3d+=0x1){socket[_0x6d6c('0x85')]('userFaxQueue:remove',{'UserId':Number(_0x3c00c0[_0x6d6c('0x3c')][_0x6d6c('0x69')][_0x120b3d]),'FaxQueueId':Number(_0x3c00c0['params']['id'])});}}else{socket['emit'](_0x6d6c('0x86'),{'UserId':Number(_0x3c00c0[_0x6d6c('0x3c')][_0x6d6c('0x69')]),'FaxQueueId':Number(_0x3c00c0[_0x6d6c('0x50')]['id'])});}});}})['then'](respondWithStatusCode(_0x2539fc,null))['catch'](handleError(_0x2539fc,null));};exports[_0x6d6c('0x8b')]=function(_0x6e1655,_0x5d70cd,_0x4425e6){var _0x54a9a7={};var _0x55d0ae={};var _0x1c3a37;var _0x35954b;return db[_0x6d6c('0x36')][_0x6d6c('0x5a')]({'where':{'id':_0x6e1655['params']['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x5d70cd,null))['then'](function(_0x16cbb7){if(_0x16cbb7){_0x1c3a37=_0x16cbb7;_0x55d0ae[_0x6d6c('0x3b')]=_[_0x6d6c('0x3d')](db[_0x6d6c('0x5d')][_0x6d6c('0x37')]);_0x55d0ae[_0x6d6c('0x3c')]=_[_0x6d6c('0x3d')](_0x6e1655[_0x6d6c('0x3c')]);_0x55d0ae[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x55d0ae['model'],_0x55d0ae[_0x6d6c('0x3c')]);_0x54a9a7['attributes']=_[_0x6d6c('0x3f')](_0x55d0ae[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x6e1655[_0x6d6c('0x3c')]['fields']));_0x54a9a7[_0x6d6c('0x40')]=_0x54a9a7['attributes']['length']?_0x54a9a7['attributes']:_0x55d0ae[_0x6d6c('0x3b')];_0x54a9a7[_0x6d6c('0x44')]=qs[_0x6d6c('0x45')](_0x6e1655['query'][_0x6d6c('0x45')]);_0x54a9a7[_0x6d6c('0x46')]=qs['filters'](_[_0x6d6c('0x66')](_0x6e1655[_0x6d6c('0x3c')],_0x55d0ae[_0x6d6c('0x3e')]));if(_0x6e1655[_0x6d6c('0x3c')][_0x6d6c('0x47')]){_0x54a9a7[_0x6d6c('0x46')]=_[_0x6d6c('0x48')](_0x54a9a7[_0x6d6c('0x46')],{'$or':_[_0x6d6c('0x35')](_0x54a9a7[_0x6d6c('0x40')],function(_0x42222c){var _0x144bb3={};_0x144bb3[_0x42222c]={'$like':'%'+_0x6e1655[_0x6d6c('0x3c')]['filter']+'%'};return _0x144bb3;})});}_0x54a9a7=_[_0x6d6c('0x48')]({},_0x54a9a7,_0x6e1655[_0x6d6c('0x4a')]);return _0x1c3a37[_0x6d6c('0x8b')](_0x54a9a7);}})['then'](function(_0x583532){if(_0x583532){_0x35954b=_0x583532['length'];if(!_0x6e1655['query']['hasOwnProperty'](_0x6d6c('0x43'))){_0x54a9a7[_0x6d6c('0x22')]=qs[_0x6d6c('0x22')](_0x6e1655[_0x6d6c('0x3c')]['limit']);_0x54a9a7[_0x6d6c('0x20')]=qs[_0x6d6c('0x20')](_0x6e1655[_0x6d6c('0x3c')]['offset']);}return _0x1c3a37[_0x6d6c('0x8b')](_0x54a9a7);}})['then'](function(_0x12c9ec){if(_0x12c9ec){return _0x12c9ec?{'count':_0x35954b,'rows':_0x12c9ec}:null;}})[_0x6d6c('0x2a')](respondWithResult(_0x5d70cd,null))[_0x6d6c('0x4e')](handleError(_0x5d70cd,null));};
\ No newline at end of file
index 15a6a29..3c1fbe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa667=['FaxQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x379c56,_0x46af3a){var _0x3450f5=function(_0x1b0b20){while(--_0x1b0b20){_0x379c56['push'](_0x379c56['shift']());}};_0x3450f5(++_0x46af3a);}(_0xa667,0x6b));var _0x7a66=function(_0x20042e,_0x152f1c){_0x20042e=_0x20042e-0x0;var _0x4f52c5=_0xa667[_0x20042e];return _0x4f52c5;};'use strict';var EventEmitter=require(_0x7a66('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0x7a66('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x7a66('0x2')](0x0);var events={'afterCreate':_0x7a66('0x3'),'afterUpdate':'update','afterDestroy':_0x7a66('0x4')};function emitEvent(_0x4a8deb){return function(_0x9b60a7,_0x57d6bd,_0x41f9be){FaxQueueEvents[_0x7a66('0x5')](_0x4a8deb+':'+_0x9b60a7['id'],_0x9b60a7);FaxQueueEvents[_0x7a66('0x5')](_0x4a8deb,_0x9b60a7);_0x41f9be(null);};}for(var e in events){if(events[_0x7a66('0x6')](e)){var event=events[e];FaxQueue[_0x7a66('0x7')](e,emitEvent(event));}}module[_0x7a66('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0x5d73=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','FaxQueue','setMaxListeners','save','update'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5d73,0x7c));var _0x35d7=function(_0x1559d1,_0x25381){_0x1559d1=_0x1559d1-0x0;var _0x3cae18=_0x5d73[_0x1559d1];return _0x3cae18;};'use strict';var EventEmitter=require(_0x35d7('0x0'));var FaxQueue=require(_0x35d7('0x1'))['db'][_0x35d7('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x35d7('0x3')](0x0);var events={'afterCreate':_0x35d7('0x4'),'afterUpdate':_0x35d7('0x5'),'afterDestroy':_0x35d7('0x6')};function emitEvent(_0x5ce922){return function(_0x2279b1,_0x599723,_0x49f6f1){FaxQueueEvents['emit'](_0x5ce922+':'+_0x2279b1['id'],_0x2279b1);FaxQueueEvents[_0x35d7('0x7')](_0x5ce922,_0x2279b1);_0x49f6f1(null);};}for(var e in events){if(events[_0x35d7('0x8')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x35d7('0x9')]=FaxQueueEvents;
\ No newline at end of file
index fba27db..01ebd52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8c7=['moment','request-promise','path','../../config/environment','./faxQueue.attributes','exports','define','FaxQueue','fax_queues','util','../../config/logger'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xf8c7,0x1cc));var _0x7f8c=function(_0x30814d,_0x1fc5c1){_0x30814d=_0x30814d-0x0;var _0x21aca4=_0xf8c7[_0x30814d];return _0x21aca4;};'use strict';var _=require('lodash');var util=require(_0x7f8c('0x0'));var logger=require(_0x7f8c('0x1'))('api');var moment=require(_0x7f8c('0x2'));var BPromise=require('bluebird');var rp=require(_0x7f8c('0x3'));var fs=require('fs');var path=require(_0x7f8c('0x4'));var rimraf=require('rimraf');var config=require(_0x7f8c('0x5'));var attributes=require(_0x7f8c('0x6'));module[_0x7f8c('0x7')]=function(_0x5bed32,_0x2d587b){return _0x5bed32[_0x7f8c('0x8')](_0x7f8c('0x9'),attributes,{'tableName':_0x7f8c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x67e1=['path','rimraf','../../config/environment','./faxQueue.attributes','define','fax_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x151418,_0x2cbffa){var _0x40e29a=function(_0xec4d7){while(--_0xec4d7){_0x151418['push'](_0x151418['shift']());}};_0x40e29a(++_0x2cbffa);}(_0x67e1,0x1c2));var _0x167e=function(_0xaedc6c,_0x3f9129){_0xaedc6c=_0xaedc6c-0x0;var _0x51f2cf=_0x67e1[_0xaedc6c];return _0x51f2cf;};'use strict';var _=require(_0x167e('0x0'));var util=require(_0x167e('0x1'));var logger=require(_0x167e('0x2'))(_0x167e('0x3'));var moment=require(_0x167e('0x4'));var BPromise=require(_0x167e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x167e('0x6'));var rimraf=require(_0x167e('0x7'));var config=require(_0x167e('0x8'));var attributes=require(_0x167e('0x9'));module['exports']=function(_0x16cfec,_0x557726){return _0x16cfec[_0x167e('0xa')]('FaxQueue',attributes,{'tableName':_0x167e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 87800cb..06bb018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05a6=['moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','attributes','map','include','model','stringify','ShowFaxQueue','find','where','lodash','util'];(function(_0x4eb269,_0x3cd1b6){var _0x1597b8=function(_0x527f9d){while(--_0x527f9d){_0x4eb269['push'](_0x4eb269['shift']());}};_0x1597b8(++_0x3cd1b6);}(_0x05a6,0x1d2));var _0x605a=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0x05a6[_0x504df1];return _0x1063b5;};'use strict';var _=require(_0x605a('0x0'));var util=require(_0x605a('0x1'));var moment=require(_0x605a('0x2'));var BPromise=require('bluebird');var rs=require(_0x605a('0x3'));var fs=require('fs');var Redis=require(_0x605a('0x4'));var db=require(_0x605a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x605a('0x6'));var config=require(_0x605a('0x7'));var jayson=require(_0x605a('0x8'));var client=jayson[_0x605a('0x9')]['http']({'port':0x232a});config[_0x605a('0xa')]=_[_0x605a('0xb')](config[_0x605a('0xa')],{'host':_0x605a('0xc'),'port':0x18eb});var socket=require(_0x605a('0xd'))(new Redis(config[_0x605a('0xa')]));require(_0x605a('0xe'))[_0x605a('0xf')](socket);function respondWithRpcPromise(_0x29f35b,_0x1d2a7d,_0x57480e){return new BPromise(function(_0x11f334,_0x346254){return client[_0x605a('0x10')](_0x29f35b,_0x57480e)[_0x605a('0x11')](function(_0x220d90){logger[_0x605a('0x12')](_0x605a('0x13'),_0x1d2a7d,'request\x20sent');logger[_0x605a('0x14')](_0x605a('0x15'),_0x1d2a7d,'request\x20sent',JSON['stringify'](_0x220d90));if(_0x220d90['error']){if(_0x220d90[_0x605a('0x16')][_0x605a('0x17')]===0x1f4){logger[_0x605a('0x16')](_0x605a('0x13'),_0x1d2a7d,_0x220d90[_0x605a('0x16')]['message']);return _0x346254(_0x220d90[_0x605a('0x16')][_0x605a('0x18')]);}logger[_0x605a('0x16')](_0x605a('0x13'),_0x1d2a7d,_0x220d90['error'][_0x605a('0x18')]);return _0x11f334(_0x220d90['error'][_0x605a('0x18')]);}else{logger[_0x605a('0x12')]('FaxQueue,\x20%s,\x20%s',_0x1d2a7d,'request\x20sent');_0x11f334(_0x220d90[_0x605a('0x19')]['message']);}})[_0x605a('0x1a')](function(_0x51d9e0){logger['error']('FaxQueue,\x20%s,\x20%s',_0x1d2a7d,_0x51d9e0);_0x346254(_0x51d9e0);});});}exports[_0x605a('0x1b')]=function(_0x16ddc1){var _0x5ca224=this;return new Promise(function(_0xee58c3,_0x1239a3){return db[_0x605a('0x1c')][_0x605a('0x1d')]({'raw':_0x16ddc1[_0x605a('0x1e')]?_0x16ddc1[_0x605a('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x16ddc1[_0x605a('0x1e')]?_0x16ddc1[_0x605a('0x1e')]['where']||null:null,'attributes':_0x16ddc1['options']?_0x16ddc1['options'][_0x605a('0x1f')]||null:null,'limit':_0x16ddc1[_0x605a('0x1e')]?_0x16ddc1['options']['limit']||null:null,'include':_0x16ddc1[_0x605a('0x1e')]?_0x16ddc1[_0x605a('0x1e')]['include']?_[_0x605a('0x20')](_0x16ddc1[_0x605a('0x1e')][_0x605a('0x21')],function(_0x369ae2){return{'model':db[_0x369ae2['model']],'as':_0x369ae2['as'],'attributes':_0x369ae2[_0x605a('0x1f')],'include':_0x369ae2['include']?_[_0x605a('0x20')](_0x369ae2['include'],function(_0x5c3439){return{'model':db[_0x5c3439[_0x605a('0x22')]],'as':_0x5c3439['as'],'attributes':_0x5c3439[_0x605a('0x1f')],'include':_0x5c3439['include']?_[_0x605a('0x20')](_0x5c3439[_0x605a('0x21')],function(_0xbf91ae){return{'model':db[_0xbf91ae[_0x605a('0x22')]],'as':_0xbf91ae['as'],'attributes':_0xbf91ae[_0x605a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x605a('0x11')](function(_0x5bb3a7){logger[_0x605a('0x12')](_0x605a('0x1b'),_0x16ddc1);logger[_0x605a('0x14')](_0x605a('0x1b'),_0x16ddc1,JSON[_0x605a('0x23')](_0x5bb3a7));_0xee58c3(_0x5bb3a7);})['catch'](function(_0x4e5fe3){logger[_0x605a('0x16')](_0x605a('0x1b'),_0x4e5fe3['message'],_0x16ddc1);_0x1239a3(_0x5ca224[_0x605a('0x16')](0x1f4,_0x4e5fe3[_0x605a('0x18')]));});});};exports[_0x605a('0x24')]=function(_0x49d04f){var _0x408e0d=this;return new Promise(function(_0x20922f,_0x428a8f){return db[_0x605a('0x1c')][_0x605a('0x25')]({'raw':_0x49d04f[_0x605a('0x1e')]?_0x49d04f['options']['raw']===undefined?!![]:![]:!![],'where':_0x49d04f['options']?_0x49d04f[_0x605a('0x1e')][_0x605a('0x26')]||null:null,'attributes':_0x49d04f['options']?_0x49d04f[_0x605a('0x1e')][_0x605a('0x1f')]||null:null,'include':_0x49d04f[_0x605a('0x1e')]?_0x49d04f[_0x605a('0x1e')][_0x605a('0x21')]?_[_0x605a('0x20')](_0x49d04f[_0x605a('0x1e')][_0x605a('0x21')],function(_0x2984ca){return{'model':db[_0x2984ca[_0x605a('0x22')]],'as':_0x2984ca['as'],'attributes':_0x2984ca[_0x605a('0x1f')],'include':_0x2984ca['include']?_[_0x605a('0x20')](_0x2984ca[_0x605a('0x21')],function(_0x592926){return{'model':db[_0x592926[_0x605a('0x22')]],'as':_0x592926['as'],'attributes':_0x592926['attributes'],'include':_0x592926[_0x605a('0x21')]?_[_0x605a('0x20')](_0x592926[_0x605a('0x21')],function(_0x3b7df0){return{'model':db[_0x3b7df0[_0x605a('0x22')]],'as':_0x3b7df0['as'],'attributes':_0x3b7df0[_0x605a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x605a('0x11')](function(_0x26ed3f){logger[_0x605a('0x12')](_0x605a('0x24'),_0x49d04f);logger['debug']('ShowFaxQueue',_0x49d04f,JSON['stringify'](_0x26ed3f));_0x20922f(_0x26ed3f);})[_0x605a('0x1a')](function(_0x4f7fd2){logger[_0x605a('0x16')](_0x605a('0x24'),_0x4f7fd2[_0x605a('0x18')],_0x49d04f);_0x428a8f(_0x408e0d[_0x605a('0x16')](0x1f4,_0x4f7fd2['message']));});});};
\ No newline at end of file
+var _0x172c=['then','info','request\x20sent','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','catch','GetFaxQueue','options','raw','where','limit','include','model','attributes','map','debug','FaxQueue','find','ShowFaxQueue','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./faxQueue.socket','register'];(function(_0x14be2e,_0x40383a){var _0x36bac0=function(_0x324b41){while(--_0x324b41){_0x14be2e['push'](_0x14be2e['shift']());}};_0x36bac0(++_0x40383a);}(_0x172c,0xb3));var _0xc172=function(_0x37c8ef,_0x334449){_0x37c8ef=_0x37c8ef-0x0;var _0x5eaee9=_0x172c[_0x37c8ef];return _0x5eaee9;};'use strict';var _=require(_0xc172('0x0'));var util=require('util');var moment=require(_0xc172('0x1'));var BPromise=require('bluebird');var rs=require(_0xc172('0x2'));var fs=require('fs');var Redis=require(_0xc172('0x3'));var db=require(_0xc172('0x4'))['db'];var utils=require(_0xc172('0x5'));var logger=require(_0xc172('0x6'))(_0xc172('0x7'));var config=require(_0xc172('0x8'));var jayson=require(_0xc172('0x9'));var client=jayson[_0xc172('0xa')]['http']({'port':0x232a});config[_0xc172('0xb')]=_[_0xc172('0xc')](config[_0xc172('0xb')],{'host':_0xc172('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc172('0xb')]));require(_0xc172('0xe'))[_0xc172('0xf')](socket);function respondWithRpcPromise(_0x4611ce,_0x4cbbc7,_0x52f087){return new BPromise(function(_0x847060,_0x450b65){return client['request'](_0x4611ce,_0x52f087)[_0xc172('0x10')](function(_0x1a3cfe){logger[_0xc172('0x11')]('FaxQueue,\x20%s,\x20%s',_0x4cbbc7,_0xc172('0x12'));logger['debug'](_0xc172('0x13'),_0x4cbbc7,'request\x20sent',JSON[_0xc172('0x14')](_0x1a3cfe));if(_0x1a3cfe[_0xc172('0x15')]){if(_0x1a3cfe[_0xc172('0x15')][_0xc172('0x16')]===0x1f4){logger[_0xc172('0x15')](_0xc172('0x17'),_0x4cbbc7,_0x1a3cfe[_0xc172('0x15')][_0xc172('0x18')]);return _0x450b65(_0x1a3cfe[_0xc172('0x15')][_0xc172('0x18')]);}logger[_0xc172('0x15')](_0xc172('0x17'),_0x4cbbc7,_0x1a3cfe['error'][_0xc172('0x18')]);return _0x847060(_0x1a3cfe[_0xc172('0x15')][_0xc172('0x18')]);}else{logger[_0xc172('0x11')](_0xc172('0x17'),_0x4cbbc7,_0xc172('0x12'));_0x847060(_0x1a3cfe['result'][_0xc172('0x18')]);}})[_0xc172('0x19')](function(_0x365146){logger['error'](_0xc172('0x17'),_0x4cbbc7,_0x365146);_0x450b65(_0x365146);});});}exports[_0xc172('0x1a')]=function(_0x4a5e8e){var _0x4ba5b5=this;return new Promise(function(_0x489760,_0x487062){return db['FaxQueue']['findAll']({'raw':_0x4a5e8e['options']?_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1c')]===undefined?!![]:![]:!![],'where':_0x4a5e8e[_0xc172('0x1b')]?_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1d')]||null:null,'attributes':_0x4a5e8e['options']?_0x4a5e8e[_0xc172('0x1b')]['attributes']||null:null,'limit':_0x4a5e8e[_0xc172('0x1b')]?_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1e')]||null:null,'include':_0x4a5e8e['options']?_0x4a5e8e['options'][_0xc172('0x1f')]?_['map'](_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1f')],function(_0x435845){return{'model':db[_0x435845[_0xc172('0x20')]],'as':_0x435845['as'],'attributes':_0x435845[_0xc172('0x21')],'include':_0x435845['include']?_[_0xc172('0x22')](_0x435845[_0xc172('0x1f')],function(_0x4d142c){return{'model':db[_0x4d142c[_0xc172('0x20')]],'as':_0x4d142c['as'],'attributes':_0x4d142c['attributes'],'include':_0x4d142c[_0xc172('0x1f')]?_[_0xc172('0x22')](_0x4d142c['include'],function(_0x2e4da3){return{'model':db[_0x2e4da3[_0xc172('0x20')]],'as':_0x2e4da3['as'],'attributes':_0x2e4da3[_0xc172('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc172('0x10')](function(_0x4a30e4){logger['info'](_0xc172('0x1a'),_0x4a5e8e);logger[_0xc172('0x23')](_0xc172('0x1a'),_0x4a5e8e,JSON[_0xc172('0x14')](_0x4a30e4));_0x489760(_0x4a30e4);})[_0xc172('0x19')](function(_0x1b7c78){logger[_0xc172('0x15')]('GetFaxQueue',_0x1b7c78['message'],_0x4a5e8e);_0x487062(_0x4ba5b5[_0xc172('0x15')](0x1f4,_0x1b7c78[_0xc172('0x18')]));});});};exports['ShowFaxQueue']=function(_0x5a4e09){var _0x17a9b6=this;return new Promise(function(_0xa1cbc3,_0x595255){return db[_0xc172('0x24')][_0xc172('0x25')]({'raw':_0x5a4e09[_0xc172('0x1b')]?_0x5a4e09[_0xc172('0x1b')][_0xc172('0x1c')]===undefined?!![]:![]:!![],'where':_0x5a4e09[_0xc172('0x1b')]?_0x5a4e09[_0xc172('0x1b')][_0xc172('0x1d')]||null:null,'attributes':_0x5a4e09[_0xc172('0x1b')]?_0x5a4e09[_0xc172('0x1b')][_0xc172('0x21')]||null:null,'include':_0x5a4e09['options']?_0x5a4e09[_0xc172('0x1b')]['include']?_[_0xc172('0x22')](_0x5a4e09[_0xc172('0x1b')][_0xc172('0x1f')],function(_0x1fdb82){return{'model':db[_0x1fdb82[_0xc172('0x20')]],'as':_0x1fdb82['as'],'attributes':_0x1fdb82[_0xc172('0x21')],'include':_0x1fdb82[_0xc172('0x1f')]?_['map'](_0x1fdb82[_0xc172('0x1f')],function(_0x25f3a0){return{'model':db[_0x25f3a0[_0xc172('0x20')]],'as':_0x25f3a0['as'],'attributes':_0x25f3a0['attributes'],'include':_0x25f3a0['include']?_[_0xc172('0x22')](_0x25f3a0['include'],function(_0x54a77a){return{'model':db[_0x54a77a[_0xc172('0x20')]],'as':_0x54a77a['as'],'attributes':_0x54a77a[_0xc172('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc172('0x10')](function(_0x306337){logger[_0xc172('0x11')](_0xc172('0x26'),_0x5a4e09);logger[_0xc172('0x23')](_0xc172('0x26'),_0x5a4e09,JSON[_0xc172('0x14')](_0x306337));_0xa1cbc3(_0x306337);})[_0xc172('0x19')](function(_0x38f4bf){logger[_0xc172('0x15')](_0xc172('0x26'),_0x38f4bf[_0xc172('0x18')],_0x5a4e09);_0x595255(_0x17a9b6[_0xc172('0x15')](0x1f4,_0x38f4bf[_0xc172('0x18')]));});});};
\ No newline at end of file
index 6e98db0..bec22c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975f=['faxQueue:','./faxQueue.events','save','emit','removeListener','length'];(function(_0x79bc3f,_0x5ad385){var _0x245b13=function(_0x3a8894){while(--_0x3a8894){_0x79bc3f['push'](_0x79bc3f['shift']());}};_0x245b13(++_0x5ad385);}(_0x975f,0x109));var _0xf975=function(_0x4e0026,_0x2b52b6){_0x4e0026=_0x4e0026-0x0;var _0x3f8ee7=_0x975f[_0x4e0026];return _0x3f8ee7;};'use strict';var FaxQueueEvents=require(_0xf975('0x0'));var events=[_0xf975('0x1'),'remove','update'];function createListener(_0x3d087b,_0x274f21){return function(_0x556f63){_0x274f21[_0xf975('0x2')](_0x3d087b,_0x556f63);};}function removeListener(_0x2d047c,_0x26c58b){return function(){FaxQueueEvents[_0xf975('0x3')](_0x2d047c,_0x26c58b);};}exports['register']=function(_0x356f71){for(var _0x5a9aca=0x0,_0x36f6cf=events[_0xf975('0x4')];_0x5a9aca<_0x36f6cf;_0x5a9aca++){var _0x51a37c=events[_0x5a9aca];var _0x194d30=createListener(_0xf975('0x5')+_0x51a37c,_0x356f71);FaxQueueEvents['on'](_0x51a37c,_0x194d30);}};
\ No newline at end of file
+var _0x7de4=['update','emit','removeListener','length','faxQueue:','./faxQueue.events','remove'];(function(_0x413b4d,_0xa3459c){var _0x8b810a=function(_0x22d441){while(--_0x22d441){_0x413b4d['push'](_0x413b4d['shift']());}};_0x8b810a(++_0xa3459c);}(_0x7de4,0xb4));var _0x47de=function(_0x3519b7,_0x2aee79){_0x3519b7=_0x3519b7-0x0;var _0x4356bd=_0x7de4[_0x3519b7];return _0x4356bd;};'use strict';var FaxQueueEvents=require(_0x47de('0x0'));var events=['save',_0x47de('0x1'),_0x47de('0x2')];function createListener(_0x50ced9,_0x2cbcf7){return function(_0x17aa08){_0x2cbcf7[_0x47de('0x3')](_0x50ced9,_0x17aa08);};}function removeListener(_0x23d1ea,_0x12ecf9){return function(){FaxQueueEvents[_0x47de('0x4')](_0x23d1ea,_0x12ecf9);};}exports['register']=function(_0x51864e){for(var _0x36a9bc=0x0,_0x5500ca=events[_0x47de('0x5')];_0x36a9bc<_0x5500ca;_0x36a9bc++){var _0x2c3c19=events[_0x36a9bc];var _0x540c65=createListener(_0x47de('0x6')+_0x2c3c19,_0x51864e);FaxQueueEvents['on'](_0x2c3c19,_0x540c65);}};
\ No newline at end of file
index 9d1b39e..ac1e48c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['util','path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id/members','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents'];(function(_0x4e8b6b,_0x19978f){var _0x20c664=function(_0x628deb){while(--_0x628deb){_0x4e8b6b['push'](_0x4e8b6b['shift']());}};_0x20c664(++_0x19978f);}(_0xe5af,0x9c));var _0xfe5a=function(_0x22dbb2,_0x5394d3){_0x22dbb2=_0x22dbb2-0x0;var _0x84deb1=_0xe5af[_0x22dbb2];return _0x84deb1;};'use strict';var multer=require('multer');var util=require(_0xfe5a('0x0'));var path=require(_0xfe5a('0x1'));var timeout=require('connect-timeout');var express=require(_0xfe5a('0x2'));var router=express[_0xfe5a('0x3')]();var fs_extra=require(_0xfe5a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfe5a('0x5'));var config=require('../../config/environment');var controller=require('./faxQueue.controller');router[_0xfe5a('0x6')]('/',auth[_0xfe5a('0x7')](),controller['index']);router['get'](_0xfe5a('0x8'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x9')]);router[_0xfe5a('0x6')]('/:id',auth[_0xfe5a('0x7')](),controller['show']);router['get'](_0xfe5a('0xa'),auth[_0xfe5a('0x7')](),controller['getMembers']);router[_0xfe5a('0x6')](_0xfe5a('0xb'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0xc')]);router[_0xfe5a('0x6')]('/:id/users',auth[_0xfe5a('0x7')](),controller[_0xfe5a('0xd')]);router[_0xfe5a('0xe')]('/',auth[_0xfe5a('0x7')](),controller[_0xfe5a('0xf')]);router['post'](_0xfe5a('0xb'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x10')]);router[_0xfe5a('0xe')](_0xfe5a('0x11'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x12')]);router[_0xfe5a('0x13')](_0xfe5a('0x14'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x15')]);router[_0xfe5a('0x16')](_0xfe5a('0x14'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x17')]);router[_0xfe5a('0x16')]('/:id/teams',auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x18')]);router['delete'](_0xfe5a('0x11'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x5f6f=['get','isAuthenticated','index','describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller'];(function(_0x5a4d4e,_0x550a83){var _0x276ce5=function(_0x5d8358){while(--_0x5d8358){_0x5a4d4e['push'](_0x5a4d4e['shift']());}};_0x276ce5(++_0x550a83);}(_0x5f6f,0x1ef));var _0xf5f6=function(_0x515451,_0x3173d1){_0x515451=_0x515451-0x0;var _0x461422=_0x5f6f[_0x515451];return _0x461422;};'use strict';var multer=require(_0xf5f6('0x0'));var util=require(_0xf5f6('0x1'));var path=require(_0xf5f6('0x2'));var timeout=require(_0xf5f6('0x3'));var express=require(_0xf5f6('0x4'));var router=express['Router']();var fs_extra=require(_0xf5f6('0x5'));var auth=require(_0xf5f6('0x6'));var interaction=require(_0xf5f6('0x7'));var config=require('../../config/environment');var controller=require(_0xf5f6('0x8'));router[_0xf5f6('0x9')]('/',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xb')]);router['get']('/describe',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xc')]);router[_0xf5f6('0x9')](_0xf5f6('0xd'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xe')]);router['get']('/:id/members',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xf')]);router['get'](_0xf5f6('0x10'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x11')]);router[_0xf5f6('0x9')](_0xf5f6('0x12'),auth['isAuthenticated'](),controller[_0xf5f6('0x13')]);router['post']('/',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x14')]);router[_0xf5f6('0x15')](_0xf5f6('0x10'),auth['isAuthenticated'](),controller[_0xf5f6('0x16')]);router[_0xf5f6('0x15')](_0xf5f6('0x12'),auth[_0xf5f6('0xa')](),controller['addAgents']);router[_0xf5f6('0x17')](_0xf5f6('0xd'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x18')]);router['delete']('/:id',auth[_0xf5f6('0xa')](),controller['destroy']);router[_0xf5f6('0x19')]('/:id/teams',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x1a')]);router[_0xf5f6('0x19')](_0xf5f6('0x12'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x1b')]);module['exports']=router;
\ No newline at end of file
index 833e949..50cceb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x691a=['sequelize','exports','STRING','DATE','moment'];(function(_0x35035e,_0x26bc1d){var _0x3a042f=function(_0x38d4e3){while(--_0x38d4e3){_0x35035e['push'](_0x35035e['shift']());}};_0x3a042f(++_0x26bc1d);}(_0x691a,0x1df));var _0xa691=function(_0x1b748c,_0x730c57){_0x1b748c=_0x1b748c-0x0;var _0x56cf69=_0x691a[_0x1b748c];return _0x56cf69;};'use strict';var moment=require(_0xa691('0x0'));var Sequelize=require(_0xa691('0x1'));module[_0xa691('0x2')]={'uniqueid':{'type':Sequelize[_0xa691('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xa691('0x3')]},'joinAt':{'type':Sequelize[_0xa691('0x4')]},'leaveAt':{'type':Sequelize[_0xa691('0x4')]},'acceptAt':{'type':Sequelize[_0xa691('0x4')]},'exitAt':{'type':Sequelize[_0xa691('0x4')]},'reason':{'type':Sequelize[_0xa691('0x3')]}};
\ No newline at end of file
+var _0xcc76=['moment','exports','STRING','DATE'];(function(_0x57a1e7,_0x1b55e4){var _0x98e9ef=function(_0x405835){while(--_0x405835){_0x57a1e7['push'](_0x57a1e7['shift']());}};_0x98e9ef(++_0x1b55e4);}(_0xcc76,0x78));var _0x6cc7=function(_0x2f2a83,_0x9f9f6f){_0x2f2a83=_0x2f2a83-0x0;var _0x5bf5f9=_0xcc76[_0x2f2a83];return _0x5bf5f9;};'use strict';var moment=require(_0x6cc7('0x0'));var Sequelize=require('sequelize');module[_0x6cc7('0x1')]={'uniqueid':{'type':Sequelize[_0x6cc7('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6cc7('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x6cc7('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6cc7('0x2')]}};
\ No newline at end of file
index a5e7ef0..0503e8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','FaxQueueReport','findAll','rows','show','params','includeAll','find','catch','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0xf157bf,_0x1c3d7b){var _0x5f0aca=function(_0x2f36b1){while(--_0x2f36b1){_0xf157bf['push'](_0xf157bf['shift']());}};_0x5f0aca(++_0x1c3d7b);}(_0x41bb,0xc5));var _0xb41b=function(_0xb2e7dd,_0x299a0d){_0xb2e7dd=_0xb2e7dd-0x0;var _0x2d7f6f=_0x41bb[_0xb2e7dd];return _0x2d7f6f;};'use strict';var emlformat=require(_0xb41b('0x0'));var rimraf=require(_0xb41b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb41b('0x2'));var rp=require('request-promise');var moment=require(_0xb41b('0x3'));var BPromise=require(_0xb41b('0x4'));var Mustache=require(_0xb41b('0x5'));var util=require(_0xb41b('0x6'));var path=require('path');var sox=require(_0xb41b('0x7'));var csv=require(_0xb41b('0x8'));var ejs=require(_0xb41b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xb41b('0xa'));var jsforce=require(_0xb41b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb41b('0x8'));var querystring=require(_0xb41b('0xc'));var Papa=require(_0xb41b('0xd'));var Redis=require(_0xb41b('0xe'));var authService=require(_0xb41b('0xf'));var qs=require(_0xb41b('0x10'));var as=require(_0xb41b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb41b('0x12'))('api');var utils=require(_0xb41b('0x13'));var config=require(_0xb41b('0x14'));var licenseUtil=require(_0xb41b('0x15'));var db=require(_0xb41b('0x16'))['db'];function respondWithStatusCode(_0x2066d5,_0x5f1ea4){_0x5f1ea4=_0x5f1ea4||0xcc;return function(_0x353ba3){if(_0x353ba3){return _0x2066d5[_0xb41b('0x17')](_0x5f1ea4);}return _0x2066d5[_0xb41b('0x18')](_0x5f1ea4)[_0xb41b('0x19')]();};}function respondWithResult(_0x3be1ec,_0x4e8603){_0x4e8603=_0x4e8603||0xc8;return function(_0x4e7f11){if(_0x4e7f11){return _0x3be1ec['status'](_0x4e8603)[_0xb41b('0x1a')](_0x4e7f11);}};}function respondWithFilteredResult(_0xdc5fb0,_0x143a81){return function(_0x338920){if(_0x338920){var _0x29ea51=typeof _0x143a81['offset']===_0xb41b('0x1b')&&typeof _0x143a81[_0xb41b('0x1c')]===_0xb41b('0x1b');var _0xcf0728=_0x338920[_0xb41b('0x1d')];var _0x47154d=_0x29ea51?0x0:_0x143a81[_0xb41b('0x1e')];var _0x5df8c2=_0x29ea51?_0x338920['count']:_0x143a81['offset']+_0x143a81[_0xb41b('0x1c')];var _0x503e86;if(_0x5df8c2>=_0xcf0728){_0x5df8c2=_0xcf0728;_0x503e86=0xc8;}else{_0x503e86=0xce;}_0xdc5fb0[_0xb41b('0x18')](_0x503e86);return _0xdc5fb0[_0xb41b('0x1f')](_0xb41b('0x20'),_0x47154d+'-'+_0x5df8c2+'/'+_0xcf0728)['json'](_0x338920);}return null;};}function patchUpdates(_0x53bc44){return function(_0x1a1386){try{jsonpatch[_0xb41b('0x21')](_0x1a1386,_0x53bc44,!![]);}catch(_0xd1bc61){return BPromise[_0xb41b('0x22')](_0xd1bc61);}return _0x1a1386[_0xb41b('0x23')]();};}function saveUpdates(_0x42dccb,_0x4c73da){return function(_0x58f149){if(_0x58f149){return _0x58f149[_0xb41b('0x24')](_0x42dccb)[_0xb41b('0x25')](function(_0x871b35){return _0x871b35;});}return null;};}function removeEntity(_0x583741,_0x14e9c8){return function(_0x2441d6){if(_0x2441d6){return _0x2441d6['destroy']()[_0xb41b('0x25')](function(){_0x583741[_0xb41b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xed3c7e,_0x4a7992){return function(_0x2d0f27){if(!_0x2d0f27){_0xed3c7e[_0xb41b('0x17')](0x194);}return _0x2d0f27;};}function handleError(_0x53e3a2,_0x3af2c){_0x3af2c=_0x3af2c||0x1f4;return function(_0x4265b8){logger['error'](_0x4265b8['stack']);if(_0x4265b8[_0xb41b('0x26')]){delete _0x4265b8[_0xb41b('0x26')];}_0x53e3a2[_0xb41b('0x18')](_0x3af2c)[_0xb41b('0x27')](_0x4265b8);};}exports[_0xb41b('0x28')]=function(_0x181cbd,_0x253efb){var _0x545395={},_0x26ef96={},_0xb68029={'count':0x0,'rows':[]};var _0x5069aa=_[_0xb41b('0x29')](db['FaxQueueReport'][_0xb41b('0x2a')],function(_0x31d4cd){return{'name':_0x31d4cd['fieldName'],'type':_0x31d4cd[_0xb41b('0x2b')]['key']};});_0x26ef96[_0xb41b('0x2c')]=_[_0xb41b('0x29')](_0x5069aa,'name');_0x26ef96[_0xb41b('0x2d')]=_[_0xb41b('0x2e')](_0x181cbd[_0xb41b('0x2d')]);_0x26ef96[_0xb41b('0x2f')]=_[_0xb41b('0x30')](_0x26ef96[_0xb41b('0x2c')],_0x26ef96[_0xb41b('0x2d')]);_0x545395[_0xb41b('0x31')]=_[_0xb41b('0x30')](_0x26ef96[_0xb41b('0x2c')],qs['fields'](_0x181cbd[_0xb41b('0x2d')]['fields']));_0x545395['attributes']=_0x545395[_0xb41b('0x31')][_0xb41b('0x32')]?_0x545395[_0xb41b('0x31')]:_0x26ef96[_0xb41b('0x2c')];if(!_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x33')](_0xb41b('0x34'))){_0x545395[_0xb41b('0x1c')]=qs[_0xb41b('0x1c')](_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x1c')]);_0x545395['offset']=qs[_0xb41b('0x1e')](_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x1e')]);}_0x545395[_0xb41b('0x35')]=qs[_0xb41b('0x36')](_0x181cbd[_0xb41b('0x2d')]['sort']);_0x545395['where']=qs[_0xb41b('0x2f')](_[_0xb41b('0x37')](_0x181cbd['query'],_0x26ef96[_0xb41b('0x2f')]),_0x5069aa);if(_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x38')]){_0x545395[_0xb41b('0x39')]=_[_0xb41b('0x3a')](_0x545395['where'],{'$or':_[_0xb41b('0x29')](_0x5069aa,function(_0x5775d3){if(_0x5775d3[_0xb41b('0x2b')]!==_0xb41b('0x3b')){var _0x799d6={};_0x799d6[_0x5775d3[_0xb41b('0x26')]]={'$like':'%'+_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x38')]+'%'};return _0x799d6;}})});}_0x545395=_[_0xb41b('0x3a')]({},_0x545395,_0x181cbd[_0xb41b('0x3c')]);var _0x2b0721={'where':_0x545395['where']};return db['FaxQueueReport']['count'](_0x2b0721)[_0xb41b('0x25')](function(_0x5147ce){_0xb68029['count']=_0x5147ce;if(_0x181cbd[_0xb41b('0x2d')]['includeAll']){_0x545395[_0xb41b('0x3d')]=[{'all':!![]}];}return db[_0xb41b('0x3e')][_0xb41b('0x3f')](_0x545395);})[_0xb41b('0x25')](function(_0x4fa390){_0xb68029[_0xb41b('0x40')]=_0x4fa390;return _0xb68029;})[_0xb41b('0x25')](respondWithFilteredResult(_0x253efb,_0x545395))['catch'](handleError(_0x253efb,null));};exports[_0xb41b('0x41')]=function(_0xa70324,_0x3f181c){var _0x174d6c={'raw':!![],'where':{'id':_0xa70324[_0xb41b('0x42')]['id']}},_0x47bab5={};_0x47bab5['model']=_[_0xb41b('0x2e')](db[_0xb41b('0x3e')][_0xb41b('0x2a')]);_0x47bab5['query']=_['keys'](_0xa70324[_0xb41b('0x2d')]);_0x47bab5[_0xb41b('0x2f')]=_[_0xb41b('0x30')](_0x47bab5[_0xb41b('0x2c')],_0x47bab5[_0xb41b('0x2d')]);_0x174d6c[_0xb41b('0x31')]=_[_0xb41b('0x30')](_0x47bab5['model'],qs['fields'](_0xa70324[_0xb41b('0x2d')]['fields']));_0x174d6c[_0xb41b('0x31')]=_0x174d6c['attributes'][_0xb41b('0x32')]?_0x174d6c['attributes']:_0x47bab5[_0xb41b('0x2c')];if(_0xa70324['query'][_0xb41b('0x43')]){_0x174d6c[_0xb41b('0x3d')]=[{'all':!![]}];}_0x174d6c=_[_0xb41b('0x3a')]({},_0x174d6c,_0xa70324[_0xb41b('0x3c')]);return db['FaxQueueReport'][_0xb41b('0x44')](_0x174d6c)[_0xb41b('0x25')](handleEntityNotFound(_0x3f181c,null))['then'](respondWithResult(_0x3f181c,null))[_0xb41b('0x45')](handleError(_0x3f181c,null));};exports['create']=function(_0x5cc658,_0x5733d0){return db['FaxQueueReport'][_0xb41b('0x46')](_0x5cc658[_0xb41b('0x47')],{})[_0xb41b('0x25')](respondWithResult(_0x5733d0,0xc9))[_0xb41b('0x45')](handleError(_0x5733d0,null));};exports[_0xb41b('0x24')]=function(_0x349a6c,_0x34d076){if(_0x349a6c[_0xb41b('0x47')]['id']){delete _0x349a6c[_0xb41b('0x47')]['id'];}return db[_0xb41b('0x3e')][_0xb41b('0x44')]({'where':{'id':_0x349a6c[_0xb41b('0x42')]['id']}})[_0xb41b('0x25')](handleEntityNotFound(_0x34d076,null))[_0xb41b('0x25')](saveUpdates(_0x349a6c[_0xb41b('0x47')],null))[_0xb41b('0x25')](respondWithResult(_0x34d076,null))['catch'](handleError(_0x34d076,null));};exports[_0xb41b('0x48')]=function(_0x5e041d,_0x4a7aa3){return db[_0xb41b('0x3e')][_0xb41b('0x44')]({'where':{'id':_0x5e041d[_0xb41b('0x42')]['id']}})[_0xb41b('0x25')](handleEntityNotFound(_0x4a7aa3,null))[_0xb41b('0x25')](removeEntity(_0x4a7aa3,null))[_0xb41b('0x45')](handleError(_0x4a7aa3,null));};exports[_0xb41b('0x49')]=function(_0x23d6c6,_0x2befc7){return db[_0xb41b('0x3e')][_0xb41b('0x49')]()[_0xb41b('0x25')](respondWithResult(_0x2befc7,null))[_0xb41b('0x45')](handleError(_0x2befc7,null));};
\ No newline at end of file
+var _0x9990=['where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','error','name','send','index','map','FaxQueueReport','fieldName','type','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9990,0xf6));var _0x0999=function(_0x3d96c7,_0x25955e){_0x3d96c7=_0x3d96c7-0x0;var _0x44adce=_0x9990[_0x3d96c7];return _0x44adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0999('0x0'));var zipdir=require(_0x0999('0x1'));var jsonpatch=require(_0x0999('0x2'));var rp=require(_0x0999('0x3'));var moment=require(_0x0999('0x4'));var BPromise=require(_0x0999('0x5'));var Mustache=require(_0x0999('0x6'));var util=require(_0x0999('0x7'));var path=require('path');var sox=require(_0x0999('0x8'));var csv=require(_0x0999('0x9'));var ejs=require(_0x0999('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0999('0xb'));var squel=require(_0x0999('0xc'));var crypto=require(_0x0999('0xd'));var jsforce=require(_0x0999('0xe'));var deskjs=require(_0x0999('0xf'));var toCsv=require(_0x0999('0x9'));var querystring=require(_0x0999('0x10'));var Papa=require('papaparse');var Redis=require(_0x0999('0x11'));var authService=require(_0x0999('0x12'));var qs=require(_0x0999('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0999('0x14'));var logger=require(_0x0999('0x15'))(_0x0999('0x16'));var utils=require('../../config/utils');var config=require(_0x0999('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0999('0x18'))['db'];function respondWithStatusCode(_0x36133e,_0x2ea251){_0x2ea251=_0x2ea251||0xcc;return function(_0x428b59){if(_0x428b59){return _0x36133e[_0x0999('0x19')](_0x2ea251);}return _0x36133e['status'](_0x2ea251)[_0x0999('0x1a')]();};}function respondWithResult(_0x2fa8e0,_0x39cba9){_0x39cba9=_0x39cba9||0xc8;return function(_0x4011bf){if(_0x4011bf){return _0x2fa8e0[_0x0999('0x1b')](_0x39cba9)['json'](_0x4011bf);}};}function respondWithFilteredResult(_0x137083,_0x3757ae){return function(_0x6bf882){if(_0x6bf882){var _0x4e4e53=typeof _0x3757ae[_0x0999('0x1c')]===_0x0999('0x1d')&&typeof _0x3757ae[_0x0999('0x1e')]==='undefined';var _0xa82828=_0x6bf882[_0x0999('0x1f')];var _0x4f6440=_0x4e4e53?0x0:_0x3757ae[_0x0999('0x1c')];var _0x5b14a3=_0x4e4e53?_0x6bf882['count']:_0x3757ae[_0x0999('0x1c')]+_0x3757ae[_0x0999('0x1e')];var _0x220cc3;if(_0x5b14a3>=_0xa82828){_0x5b14a3=_0xa82828;_0x220cc3=0xc8;}else{_0x220cc3=0xce;}_0x137083[_0x0999('0x1b')](_0x220cc3);return _0x137083[_0x0999('0x20')](_0x0999('0x21'),_0x4f6440+'-'+_0x5b14a3+'/'+_0xa82828)[_0x0999('0x22')](_0x6bf882);}return null;};}function patchUpdates(_0x113017){return function(_0x8a5ef6){try{jsonpatch['apply'](_0x8a5ef6,_0x113017,!![]);}catch(_0xe118ec){return BPromise[_0x0999('0x23')](_0xe118ec);}return _0x8a5ef6['save']();};}function saveUpdates(_0x505372,_0x19ddc0){return function(_0xf2820c){if(_0xf2820c){return _0xf2820c[_0x0999('0x24')](_0x505372)[_0x0999('0x25')](function(_0x6c9bd9){return _0x6c9bd9;});}return null;};}function removeEntity(_0x15a7e8,_0x4d4f38){return function(_0x20ba88){if(_0x20ba88){return _0x20ba88['destroy']()[_0x0999('0x25')](function(){_0x15a7e8['status'](0xcc)[_0x0999('0x1a')]();});}};}function handleEntityNotFound(_0x106669,_0x273163){return function(_0x317127){if(!_0x317127){_0x106669['sendStatus'](0x194);}return _0x317127;};}function handleError(_0x55c8b3,_0x1cc734){_0x1cc734=_0x1cc734||0x1f4;return function(_0x5e5681){logger[_0x0999('0x26')](_0x5e5681['stack']);if(_0x5e5681[_0x0999('0x27')]){delete _0x5e5681[_0x0999('0x27')];}_0x55c8b3[_0x0999('0x1b')](_0x1cc734)[_0x0999('0x28')](_0x5e5681);};}exports[_0x0999('0x29')]=function(_0x155d79,_0x3cf0d3){var _0x5c9fb4={},_0x1df4cf={},_0x199df7={'count':0x0,'rows':[]};var _0x36cd03=_[_0x0999('0x2a')](db[_0x0999('0x2b')]['rawAttributes'],function(_0x106bf9){return{'name':_0x106bf9[_0x0999('0x2c')],'type':_0x106bf9[_0x0999('0x2d')]['key']};});_0x1df4cf['model']=_[_0x0999('0x2a')](_0x36cd03,_0x0999('0x27'));_0x1df4cf['query']=_[_0x0999('0x2e')](_0x155d79[_0x0999('0x2f')]);_0x1df4cf[_0x0999('0x30')]=_['intersection'](_0x1df4cf[_0x0999('0x31')],_0x1df4cf['query']);_0x5c9fb4[_0x0999('0x32')]=_[_0x0999('0x33')](_0x1df4cf[_0x0999('0x31')],qs[_0x0999('0x34')](_0x155d79[_0x0999('0x2f')]['fields']));_0x5c9fb4['attributes']=_0x5c9fb4[_0x0999('0x32')][_0x0999('0x35')]?_0x5c9fb4[_0x0999('0x32')]:_0x1df4cf[_0x0999('0x31')];if(!_0x155d79['query'][_0x0999('0x36')](_0x0999('0x37'))){_0x5c9fb4['limit']=qs[_0x0999('0x1e')](_0x155d79[_0x0999('0x2f')][_0x0999('0x1e')]);_0x5c9fb4[_0x0999('0x1c')]=qs[_0x0999('0x1c')](_0x155d79[_0x0999('0x2f')]['offset']);}_0x5c9fb4[_0x0999('0x38')]=qs['sort'](_0x155d79[_0x0999('0x2f')][_0x0999('0x39')]);_0x5c9fb4[_0x0999('0x3a')]=qs['filters'](_[_0x0999('0x3b')](_0x155d79[_0x0999('0x2f')],_0x1df4cf[_0x0999('0x30')]),_0x36cd03);if(_0x155d79[_0x0999('0x2f')][_0x0999('0x3c')]){_0x5c9fb4[_0x0999('0x3a')]=_[_0x0999('0x3d')](_0x5c9fb4[_0x0999('0x3a')],{'$or':_[_0x0999('0x2a')](_0x36cd03,function(_0x2aa04c){if(_0x2aa04c['type']!==_0x0999('0x3e')){var _0x22da38={};_0x22da38[_0x2aa04c['name']]={'$like':'%'+_0x155d79[_0x0999('0x2f')][_0x0999('0x3c')]+'%'};return _0x22da38;}})});}_0x5c9fb4=_[_0x0999('0x3d')]({},_0x5c9fb4,_0x155d79[_0x0999('0x3f')]);var _0x41da42={'where':_0x5c9fb4['where']};return db[_0x0999('0x2b')][_0x0999('0x1f')](_0x41da42)[_0x0999('0x25')](function(_0x57cdf7){_0x199df7[_0x0999('0x1f')]=_0x57cdf7;if(_0x155d79[_0x0999('0x2f')][_0x0999('0x40')]){_0x5c9fb4[_0x0999('0x41')]=[{'all':!![]}];}return db[_0x0999('0x2b')][_0x0999('0x42')](_0x5c9fb4);})[_0x0999('0x25')](function(_0x315ca3){_0x199df7[_0x0999('0x43')]=_0x315ca3;return _0x199df7;})[_0x0999('0x25')](respondWithFilteredResult(_0x3cf0d3,_0x5c9fb4))[_0x0999('0x44')](handleError(_0x3cf0d3,null));};exports[_0x0999('0x45')]=function(_0x5aa926,_0xc632f4){var _0x266982={'raw':!![],'where':{'id':_0x5aa926['params']['id']}},_0x47edb3={};_0x47edb3[_0x0999('0x31')]=_['keys'](db['FaxQueueReport'][_0x0999('0x46')]);_0x47edb3[_0x0999('0x2f')]=_[_0x0999('0x2e')](_0x5aa926[_0x0999('0x2f')]);_0x47edb3[_0x0999('0x30')]=_[_0x0999('0x33')](_0x47edb3[_0x0999('0x31')],_0x47edb3[_0x0999('0x2f')]);_0x266982[_0x0999('0x32')]=_[_0x0999('0x33')](_0x47edb3[_0x0999('0x31')],qs['fields'](_0x5aa926['query'][_0x0999('0x34')]));_0x266982[_0x0999('0x32')]=_0x266982[_0x0999('0x32')][_0x0999('0x35')]?_0x266982[_0x0999('0x32')]:_0x47edb3[_0x0999('0x31')];if(_0x5aa926[_0x0999('0x2f')][_0x0999('0x40')]){_0x266982['include']=[{'all':!![]}];}_0x266982=_['merge']({},_0x266982,_0x5aa926[_0x0999('0x3f')]);return db[_0x0999('0x2b')]['find'](_0x266982)[_0x0999('0x25')](handleEntityNotFound(_0xc632f4,null))['then'](respondWithResult(_0xc632f4,null))['catch'](handleError(_0xc632f4,null));};exports[_0x0999('0x47')]=function(_0x1ddd6e,_0x433a6d){return db[_0x0999('0x2b')][_0x0999('0x47')](_0x1ddd6e[_0x0999('0x48')],{})[_0x0999('0x25')](respondWithResult(_0x433a6d,0xc9))[_0x0999('0x44')](handleError(_0x433a6d,null));};exports[_0x0999('0x24')]=function(_0x508e42,_0x2ee544){if(_0x508e42[_0x0999('0x48')]['id']){delete _0x508e42[_0x0999('0x48')]['id'];}return db[_0x0999('0x2b')][_0x0999('0x49')]({'where':{'id':_0x508e42[_0x0999('0x4a')]['id']}})[_0x0999('0x25')](handleEntityNotFound(_0x2ee544,null))[_0x0999('0x25')](saveUpdates(_0x508e42[_0x0999('0x48')],null))['then'](respondWithResult(_0x2ee544,null))[_0x0999('0x44')](handleError(_0x2ee544,null));};exports['destroy']=function(_0x28924a,_0x218092){return db[_0x0999('0x2b')][_0x0999('0x49')]({'where':{'id':_0x28924a[_0x0999('0x4a')]['id']}})['then'](handleEntityNotFound(_0x218092,null))[_0x0999('0x25')](removeEntity(_0x218092,null))[_0x0999('0x44')](handleError(_0x218092,null));};exports[_0x0999('0x4b')]=function(_0x17942e,_0x3f42f8){return db[_0x0999('0x2b')]['describe']()[_0x0999('0x25')](respondWithResult(_0x3f42f8,null))[_0x0999('0x44')](handleError(_0x3f42f8,null));};
\ No newline at end of file
index 2ed9af9..ea15d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash'];(function(_0x5872bf,_0x2731cf){var _0x236c1d=function(_0x575885){while(--_0x575885){_0x5872bf['push'](_0x5872bf['shift']());}};_0x236c1d(++_0x2731cf);}(_0xf494,0x1c6));var _0x4f49=function(_0x9031ba,_0x5a3773){_0x9031ba=_0x9031ba-0x0;var _0xc624ed=_0xf494[_0x9031ba];return _0xc624ed;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['report_fax_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport'];(function(_0x3bf799,_0x24187e){var _0x1b1b52=function(_0x25a86e){while(--_0x25a86e){_0x3bf799['push'](_0x3bf799['shift']());}};_0x1b1b52(++_0x24187e);}(_0x7a54,0x106));var _0x47a5=function(_0x59ea6e,_0x7a3486){_0x59ea6e=_0x59ea6e-0x0;var _0x4a2bc9=_0x7a54[_0x59ea6e];return _0x4a2bc9;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 60de161..1456573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d27=['then','debug','UpdateFaxQueueReport','update','attributes','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','request','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x8d27,0xdf));var _0x78d2=function(_0x521d30,_0x3e6377){_0x521d30=_0x521d30-0x0;var _0x5b79de=_0x8d27[_0x521d30];return _0x5b79de;};'use strict';var _=require('lodash');var util=require(_0x78d2('0x0'));var moment=require(_0x78d2('0x1'));var BPromise=require(_0x78d2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x78d2('0x3'));var db=require(_0x78d2('0x4'))['db'];var utils=require(_0x78d2('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x78d2('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x78d2('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18222b,_0x5ea90e,_0x340e55){return new BPromise(function(_0x132c4c,_0x4ac4c7){return client[_0x78d2('0x8')](_0x18222b,_0x340e55)['then'](function(_0x4e8db9){logger[_0x78d2('0x9')](_0x78d2('0xa'),_0x5ea90e,_0x78d2('0xb'));logger['debug'](_0x78d2('0xc'),_0x5ea90e,_0x78d2('0xb'),JSON[_0x78d2('0xd')](_0x4e8db9));if(_0x4e8db9[_0x78d2('0xe')]){if(_0x4e8db9[_0x78d2('0xe')][_0x78d2('0xf')]===0x1f4){logger[_0x78d2('0xe')](_0x78d2('0xa'),_0x5ea90e,_0x4e8db9[_0x78d2('0xe')][_0x78d2('0x10')]);return _0x4ac4c7(_0x4e8db9[_0x78d2('0xe')][_0x78d2('0x10')]);}logger['error'](_0x78d2('0xa'),_0x5ea90e,_0x4e8db9[_0x78d2('0xe')][_0x78d2('0x10')]);return _0x132c4c(_0x4e8db9[_0x78d2('0xe')][_0x78d2('0x10')]);}else{logger[_0x78d2('0x9')]('FaxQueueReport,\x20%s,\x20%s',_0x5ea90e,_0x78d2('0xb'));_0x132c4c(_0x4e8db9[_0x78d2('0x11')][_0x78d2('0x10')]);}})[_0x78d2('0x12')](function(_0x5d3cb4){logger[_0x78d2('0xe')](_0x78d2('0xa'),_0x5ea90e,_0x5d3cb4);_0x4ac4c7(_0x5d3cb4);});});}exports[_0x78d2('0x13')]=function(_0x1ba552){var _0x3d500b=this;return new Promise(function(_0x2f12d5,_0x5a523b){return db[_0x78d2('0x14')][_0x78d2('0x15')](_0x1ba552[_0x78d2('0x16')],{'raw':_0x1ba552[_0x78d2('0x17')]?_0x1ba552['options'][_0x78d2('0x18')]===undefined?!![]:![]:!![]})[_0x78d2('0x19')](function(_0x3a6259){logger[_0x78d2('0x9')](_0x78d2('0x13'),_0x1ba552);logger[_0x78d2('0x1a')](_0x78d2('0x13'),_0x1ba552,JSON['stringify'](_0x3a6259));_0x2f12d5(_0x3a6259);})[_0x78d2('0x12')](function(_0x35786f){logger[_0x78d2('0xe')](_0x78d2('0x13'),_0x35786f[_0x78d2('0x10')],_0x1ba552);_0x5a523b(_0x3d500b[_0x78d2('0xe')](0x1f4,_0x35786f[_0x78d2('0x10')]));});});};exports[_0x78d2('0x1b')]=function(_0x14b1f4){var _0x50131f=this;return new Promise(function(_0x1dbc53,_0x52cd31){return db[_0x78d2('0x14')][_0x78d2('0x1c')](_0x14b1f4[_0x78d2('0x16')],{'raw':_0x14b1f4['options']?_0x14b1f4[_0x78d2('0x17')][_0x78d2('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14b1f4[_0x78d2('0x17')]?_0x14b1f4[_0x78d2('0x17')]['where']||null:null,'attributes':_0x14b1f4['options']?_0x14b1f4[_0x78d2('0x17')][_0x78d2('0x1d')]||null:null,'limit':_0x14b1f4[_0x78d2('0x17')]?_0x14b1f4['options'][_0x78d2('0x1e')]||null:null})[_0x78d2('0x19')](function(_0x571729){logger[_0x78d2('0x9')](_0x78d2('0x1b'),_0x14b1f4);logger['debug'](_0x78d2('0x1b'),_0x14b1f4,JSON['stringify'](_0x571729));_0x1dbc53(_0x571729);})[_0x78d2('0x12')](function(_0xb071c5){logger[_0x78d2('0xe')](_0x78d2('0x1b'),_0xb071c5[_0x78d2('0x10')],_0x14b1f4);_0x52cd31(_0x50131f[_0x78d2('0xe')](0x1f4,_0xb071c5['message']));});});};
\ No newline at end of file
+var _0x74bc=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','CreateFaxQueueReport','create','body','raw','debug','UpdateFaxQueueReport','update','options','lodash','util','moment','bluebird','randomstring'];(function(_0x1c654b,_0x51167d){var _0x5df324=function(_0x27ff21){while(--_0x27ff21){_0x1c654b['push'](_0x1c654b['shift']());}};_0x5df324(++_0x51167d);}(_0x74bc,0x18e));var _0xc74b=function(_0x33c030,_0x3376de){_0x33c030=_0x33c030-0x0;var _0x3793f1=_0x74bc[_0x33c030];return _0x3793f1;};'use strict';var _=require(_0xc74b('0x0'));var util=require(_0xc74b('0x1'));var moment=require(_0xc74b('0x2'));var BPromise=require(_0xc74b('0x3'));var rs=require(_0xc74b('0x4'));var fs=require('fs');var Redis=require(_0xc74b('0x5'));var db=require(_0xc74b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc74b('0x7'))(_0xc74b('0x8'));var config=require(_0xc74b('0x9'));var jayson=require(_0xc74b('0xa'));var client=jayson[_0xc74b('0xb')][_0xc74b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x590abc,_0x48f3dd,_0x45d399){return new BPromise(function(_0x3cf819,_0x4b36d2){return client[_0xc74b('0xd')](_0x590abc,_0x45d399)[_0xc74b('0xe')](function(_0x304db1){logger[_0xc74b('0xf')](_0xc74b('0x10'),_0x48f3dd,_0xc74b('0x11'));logger['debug']('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x48f3dd,_0xc74b('0x11'),JSON[_0xc74b('0x12')](_0x304db1));if(_0x304db1['error']){if(_0x304db1[_0xc74b('0x13')]['code']===0x1f4){logger['error'](_0xc74b('0x10'),_0x48f3dd,_0x304db1['error'][_0xc74b('0x14')]);return _0x4b36d2(_0x304db1['error']['message']);}logger[_0xc74b('0x13')](_0xc74b('0x10'),_0x48f3dd,_0x304db1[_0xc74b('0x13')][_0xc74b('0x14')]);return _0x3cf819(_0x304db1[_0xc74b('0x13')]['message']);}else{logger['info'](_0xc74b('0x10'),_0x48f3dd,_0xc74b('0x11'));_0x3cf819(_0x304db1[_0xc74b('0x15')][_0xc74b('0x14')]);}})[_0xc74b('0x16')](function(_0x6bc8be){logger[_0xc74b('0x13')](_0xc74b('0x10'),_0x48f3dd,_0x6bc8be);_0x4b36d2(_0x6bc8be);});});}exports[_0xc74b('0x17')]=function(_0x122abb){var _0x2d2167=this;return new Promise(function(_0x139f57,_0x433b8c){return db['FaxQueueReport'][_0xc74b('0x18')](_0x122abb[_0xc74b('0x19')],{'raw':_0x122abb['options']?_0x122abb['options'][_0xc74b('0x1a')]===undefined?!![]:![]:!![]})[_0xc74b('0xe')](function(_0x20d33f){logger['info'](_0xc74b('0x17'),_0x122abb);logger[_0xc74b('0x1b')](_0xc74b('0x17'),_0x122abb,JSON[_0xc74b('0x12')](_0x20d33f));_0x139f57(_0x20d33f);})[_0xc74b('0x16')](function(_0x226ee3){logger['error'](_0xc74b('0x17'),_0x226ee3[_0xc74b('0x14')],_0x122abb);_0x433b8c(_0x2d2167['error'](0x1f4,_0x226ee3[_0xc74b('0x14')]));});});};exports[_0xc74b('0x1c')]=function(_0x542403){var _0x432a06=this;return new Promise(function(_0x3cb9b8,_0x2778c){return db['FaxQueueReport'][_0xc74b('0x1d')](_0x542403[_0xc74b('0x19')],{'raw':_0x542403[_0xc74b('0x1e')]?_0x542403['options'][_0xc74b('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x542403[_0xc74b('0x1e')]?_0x542403[_0xc74b('0x1e')]['where']||null:null,'attributes':_0x542403['options']?_0x542403[_0xc74b('0x1e')]['attributes']||null:null,'limit':_0x542403[_0xc74b('0x1e')]?_0x542403['options']['limit']||null:null})[_0xc74b('0xe')](function(_0x15770f){logger[_0xc74b('0xf')](_0xc74b('0x1c'),_0x542403);logger[_0xc74b('0x1b')](_0xc74b('0x1c'),_0x542403,JSON[_0xc74b('0x12')](_0x15770f));_0x3cb9b8(_0x15770f);})[_0xc74b('0x16')](function(_0x120888){logger[_0xc74b('0x13')](_0xc74b('0x1c'),_0x120888[_0xc74b('0x14')],_0x542403);_0x2778c(_0x432a06[_0xc74b('0x13')](0x1f4,_0x120888[_0xc74b('0x14')]));});});};
\ No newline at end of file
index bafdc75..fddd485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf85b=['index','/describe','describe','get','/:id','show','post','create','put','update','destroy','exports','util','path','express','../../components/auth/service','../../config/environment','./faxQueueReport.controller','isAuthenticated'];(function(_0x343a12,_0x2bbfcd){var _0x5f1e0b=function(_0x85c39d){while(--_0x85c39d){_0x343a12['push'](_0x343a12['shift']());}};_0x5f1e0b(++_0x2bbfcd);}(_0xf85b,0xa4));var _0xbf85=function(_0x2d5914,_0xafc57a){_0x2d5914=_0x2d5914-0x0;var _0x2abec0=_0xf85b[_0x2d5914];return _0x2abec0;};'use strict';var multer=require('multer');var util=require(_0xbf85('0x0'));var path=require(_0xbf85('0x1'));var timeout=require('connect-timeout');var express=require(_0xbf85('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbf85('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xbf85('0x4'));var controller=require(_0xbf85('0x5'));router['get']('/',auth[_0xbf85('0x6')](),controller[_0xbf85('0x7')]);router['get'](_0xbf85('0x8'),auth[_0xbf85('0x6')](),controller[_0xbf85('0x9')]);router[_0xbf85('0xa')](_0xbf85('0xb'),auth[_0xbf85('0x6')](),controller[_0xbf85('0xc')]);router[_0xbf85('0xd')]('/',auth[_0xbf85('0x6')](),controller[_0xbf85('0xe')]);router[_0xbf85('0xf')](_0xbf85('0xb'),auth['isAuthenticated'](),controller[_0xbf85('0x10')]);router['delete'](_0xbf85('0xb'),auth[_0xbf85('0x6')](),controller[_0xbf85('0x11')]);module[_0xbf85('0x12')]=router;
\ No newline at end of file
+var _0x5358=['index','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated'];(function(_0x43fa80,_0x502ab9){var _0x2b176c=function(_0x34e04c){while(--_0x34e04c){_0x43fa80['push'](_0x43fa80['shift']());}};_0x2b176c(++_0x502ab9);}(_0x5358,0xfd));var _0x8535=function(_0x5e7d52,_0x4ca4a2){_0x5e7d52=_0x5e7d52-0x0;var _0x397ce8=_0x5358[_0x5e7d52];return _0x397ce8;};'use strict';var multer=require(_0x8535('0x0'));var util=require('util');var path=require(_0x8535('0x1'));var timeout=require(_0x8535('0x2'));var express=require(_0x8535('0x3'));var router=express[_0x8535('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8535('0x5'));var interaction=require(_0x8535('0x6'));var config=require(_0x8535('0x7'));var controller=require(_0x8535('0x8'));router[_0x8535('0x9')]('/',auth[_0x8535('0xa')](),controller[_0x8535('0xb')]);router['get']('/describe',auth[_0x8535('0xa')](),controller[_0x8535('0xc')]);router[_0x8535('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x8535('0xd')]);router[_0x8535('0xe')]('/',auth['isAuthenticated'](),controller[_0x8535('0xf')]);router[_0x8535('0x10')](_0x8535('0x11'),auth[_0x8535('0xa')](),controller[_0x8535('0x12')]);router[_0x8535('0x13')]('/:id',auth[_0x8535('0xa')](),controller[_0x8535('0x14')]);module[_0x8535('0x15')]=router;
\ No newline at end of file
index ae9e565..e4b316c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x23e142,_0x2009bc){var _0x3bd538=function(_0x2becbb){while(--_0x2becbb){_0x23e142['push'](_0x23e142['shift']());}};_0x3bd538(++_0x2009bc);}(_0xedd9,0xfc));var _0x9edd=function(_0x7b286c,_0x1d2ee0){_0x7b286c=_0x7b286c-0x0;var _0x17b878=_0xedd9[_0x7b286c];return _0x17b878;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x54fff6,_0x410540){var _0x2fd2c0=function(_0x53bf04){while(--_0x53bf04){_0x54fff6['push'](_0x54fff6['shift']());}};_0x2fd2c0(++_0x410540);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5cdacf,_0x7c82b1){_0x5cdacf=_0x5cdacf-0x0;var _0xa68a8b=_0xf3cd[_0x5cdacf];return _0xa68a8b;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 20d220d..73217d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b2=['rows','catch','params','keys','FaxTransferReport','create','body','find','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','set','apply','save','update','destroy','then','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','fields','length','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x1f207e,_0x496c96){var _0x413bef=function(_0x132f78){while(--_0x132f78){_0x1f207e['push'](_0x1f207e['shift']());}};_0x413bef(++_0x496c96);}(_0xf7b2,0x129));var _0x2f7b=function(_0x4159f3,_0x1a7679){_0x4159f3=_0x4159f3-0x0;var _0x1c53be=_0xf7b2[_0x4159f3];return _0x1c53be;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2f7b('0x0'));var zipdir=require(_0x2f7b('0x1'));var jsonpatch=require(_0x2f7b('0x2'));var rp=require('request-promise');var moment=require(_0x2f7b('0x3'));var BPromise=require(_0x2f7b('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2f7b('0x5'));var sox=require(_0x2f7b('0x6'));var csv=require(_0x2f7b('0x7'));var ejs=require(_0x2f7b('0x8'));var fs=require('fs');var fs_extra=require(_0x2f7b('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2f7b('0xa'));var jsforce=require(_0x2f7b('0xb'));var deskjs=require(_0x2f7b('0xc'));var toCsv=require(_0x2f7b('0x7'));var querystring=require(_0x2f7b('0xd'));var Papa=require(_0x2f7b('0xe'));var Redis=require(_0x2f7b('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2f7b('0x10'));var hardwareService=require(_0x2f7b('0x11'));var logger=require(_0x2f7b('0x12'))('api');var utils=require(_0x2f7b('0x13'));var config=require(_0x2f7b('0x14'));var licenseUtil=require(_0x2f7b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bfb03,_0x1b560f){_0x1b560f=_0x1b560f||0xcc;return function(_0x50d7d3){if(_0x50d7d3){return _0x4bfb03[_0x2f7b('0x16')](_0x1b560f);}return _0x4bfb03[_0x2f7b('0x17')](_0x1b560f)[_0x2f7b('0x18')]();};}function respondWithResult(_0x334007,_0x51892e){_0x51892e=_0x51892e||0xc8;return function(_0x2a2ddc){if(_0x2a2ddc){return _0x334007[_0x2f7b('0x17')](_0x51892e)[_0x2f7b('0x19')](_0x2a2ddc);}};}function respondWithFilteredResult(_0x1e9d63,_0x1992e9){return function(_0x15c865){if(_0x15c865){var _0x17ca43=typeof _0x1992e9['offset']===_0x2f7b('0x1a')&&typeof _0x1992e9['limit']===_0x2f7b('0x1a');var _0x2629e3=_0x15c865[_0x2f7b('0x1b')];var _0x59c75f=_0x17ca43?0x0:_0x1992e9[_0x2f7b('0x1c')];var _0x13acd4=_0x17ca43?_0x15c865[_0x2f7b('0x1b')]:_0x1992e9[_0x2f7b('0x1c')]+_0x1992e9['limit'];var _0x35c402;if(_0x13acd4>=_0x2629e3){_0x13acd4=_0x2629e3;_0x35c402=0xc8;}else{_0x35c402=0xce;}_0x1e9d63['status'](_0x35c402);return _0x1e9d63[_0x2f7b('0x1d')]('Content-Range',_0x59c75f+'-'+_0x13acd4+'/'+_0x2629e3)[_0x2f7b('0x19')](_0x15c865);}return null;};}function patchUpdates(_0x15ac88){return function(_0x5c946a){try{jsonpatch[_0x2f7b('0x1e')](_0x5c946a,_0x15ac88,!![]);}catch(_0x18a3ec){return BPromise['reject'](_0x18a3ec);}return _0x5c946a[_0x2f7b('0x1f')]();};}function saveUpdates(_0x10aa4a,_0x33c20d){return function(_0x536ce0){if(_0x536ce0){return _0x536ce0[_0x2f7b('0x20')](_0x10aa4a)['then'](function(_0x5d45dc){return _0x5d45dc;});}return null;};}function removeEntity(_0x227d15,_0x37e225){return function(_0x52c7a9){if(_0x52c7a9){return _0x52c7a9[_0x2f7b('0x21')]()[_0x2f7b('0x22')](function(){_0x227d15[_0x2f7b('0x17')](0xcc)[_0x2f7b('0x18')]();});}};}function handleEntityNotFound(_0x23e011,_0x127ab0){return function(_0x45c590){if(!_0x45c590){_0x23e011[_0x2f7b('0x16')](0x194);}return _0x45c590;};}function handleError(_0x5071ab,_0x47ac83){_0x47ac83=_0x47ac83||0x1f4;return function(_0x5b716d){logger['error'](_0x5b716d[_0x2f7b('0x23')]);if(_0x5b716d[_0x2f7b('0x24')]){delete _0x5b716d[_0x2f7b('0x24')];}_0x5071ab[_0x2f7b('0x17')](_0x47ac83)[_0x2f7b('0x25')](_0x5b716d);};}exports[_0x2f7b('0x26')]=function(_0x291d52,_0x2519c9){var _0x5f3fe8={},_0x12912d={},_0x41f221={'count':0x0,'rows':[]};var _0x16a767=_['map'](db['FaxTransferReport'][_0x2f7b('0x27')],function(_0x5cb3d3){return{'name':_0x5cb3d3[_0x2f7b('0x28')],'type':_0x5cb3d3[_0x2f7b('0x29')][_0x2f7b('0x2a')]};});_0x12912d[_0x2f7b('0x2b')]=_[_0x2f7b('0x2c')](_0x16a767,'name');_0x12912d[_0x2f7b('0x2d')]=_['keys'](_0x291d52['query']);_0x12912d['filters']=_['intersection'](_0x12912d[_0x2f7b('0x2b')],_0x12912d[_0x2f7b('0x2d')]);_0x5f3fe8[_0x2f7b('0x2e')]=_[_0x2f7b('0x2f')](_0x12912d[_0x2f7b('0x2b')],qs[_0x2f7b('0x30')](_0x291d52[_0x2f7b('0x2d')][_0x2f7b('0x30')]));_0x5f3fe8[_0x2f7b('0x2e')]=_0x5f3fe8[_0x2f7b('0x2e')][_0x2f7b('0x31')]?_0x5f3fe8[_0x2f7b('0x2e')]:_0x12912d[_0x2f7b('0x2b')];if(!_0x291d52[_0x2f7b('0x2d')]['hasOwnProperty']('nolimit')){_0x5f3fe8[_0x2f7b('0x32')]=qs[_0x2f7b('0x32')](_0x291d52[_0x2f7b('0x2d')][_0x2f7b('0x32')]);_0x5f3fe8[_0x2f7b('0x1c')]=qs['offset'](_0x291d52[_0x2f7b('0x2d')][_0x2f7b('0x1c')]);}_0x5f3fe8[_0x2f7b('0x33')]=qs[_0x2f7b('0x34')](_0x291d52[_0x2f7b('0x2d')][_0x2f7b('0x34')]);_0x5f3fe8[_0x2f7b('0x35')]=qs[_0x2f7b('0x36')](_[_0x2f7b('0x37')](_0x291d52[_0x2f7b('0x2d')],_0x12912d[_0x2f7b('0x36')]),_0x16a767);if(_0x291d52['query'][_0x2f7b('0x38')]){_0x5f3fe8[_0x2f7b('0x35')]=_[_0x2f7b('0x39')](_0x5f3fe8[_0x2f7b('0x35')],{'$or':_['map'](_0x16a767,function(_0x2f8948){if(_0x2f8948['type']!==_0x2f7b('0x3a')){var _0x15e35f={};_0x15e35f[_0x2f8948[_0x2f7b('0x24')]]={'$like':'%'+_0x291d52[_0x2f7b('0x2d')][_0x2f7b('0x38')]+'%'};return _0x15e35f;}})});}_0x5f3fe8=_[_0x2f7b('0x39')]({},_0x5f3fe8,_0x291d52[_0x2f7b('0x3b')]);var _0x19f5a1={'where':_0x5f3fe8[_0x2f7b('0x35')]};return db['FaxTransferReport']['count'](_0x19f5a1)['then'](function(_0x53de0f){_0x41f221[_0x2f7b('0x1b')]=_0x53de0f;if(_0x291d52[_0x2f7b('0x2d')][_0x2f7b('0x3c')]){_0x5f3fe8[_0x2f7b('0x3d')]=[{'all':!![]}];}return db['FaxTransferReport'][_0x2f7b('0x3e')](_0x5f3fe8);})['then'](function(_0x522ce7){_0x41f221[_0x2f7b('0x3f')]=_0x522ce7;return _0x41f221;})[_0x2f7b('0x22')](respondWithFilteredResult(_0x2519c9,_0x5f3fe8))[_0x2f7b('0x40')](handleError(_0x2519c9,null));};exports['show']=function(_0x52be99,_0x4ee003){var _0x454f04={'raw':!![],'where':{'id':_0x52be99[_0x2f7b('0x41')]['id']}},_0x597c03={};_0x597c03['model']=_[_0x2f7b('0x42')](db[_0x2f7b('0x43')][_0x2f7b('0x27')]);_0x597c03[_0x2f7b('0x2d')]=_[_0x2f7b('0x42')](_0x52be99['query']);_0x597c03[_0x2f7b('0x36')]=_[_0x2f7b('0x2f')](_0x597c03[_0x2f7b('0x2b')],_0x597c03['query']);_0x454f04[_0x2f7b('0x2e')]=_[_0x2f7b('0x2f')](_0x597c03[_0x2f7b('0x2b')],qs['fields'](_0x52be99[_0x2f7b('0x2d')][_0x2f7b('0x30')]));_0x454f04[_0x2f7b('0x2e')]=_0x454f04['attributes'][_0x2f7b('0x31')]?_0x454f04[_0x2f7b('0x2e')]:_0x597c03[_0x2f7b('0x2b')];if(_0x52be99['query']['includeAll']){_0x454f04['include']=[{'all':!![]}];}_0x454f04=_[_0x2f7b('0x39')]({},_0x454f04,_0x52be99[_0x2f7b('0x3b')]);return db[_0x2f7b('0x43')]['find'](_0x454f04)[_0x2f7b('0x22')](handleEntityNotFound(_0x4ee003,null))['then'](respondWithResult(_0x4ee003,null))[_0x2f7b('0x40')](handleError(_0x4ee003,null));};exports[_0x2f7b('0x44')]=function(_0x22076e,_0xa09cb1){return db[_0x2f7b('0x43')][_0x2f7b('0x44')](_0x22076e[_0x2f7b('0x45')],{})['then'](respondWithResult(_0xa09cb1,0xc9))['catch'](handleError(_0xa09cb1,null));};exports[_0x2f7b('0x20')]=function(_0x34b13f,_0x3e2f0e){if(_0x34b13f[_0x2f7b('0x45')]['id']){delete _0x34b13f[_0x2f7b('0x45')]['id'];}return db[_0x2f7b('0x43')][_0x2f7b('0x46')]({'where':{'id':_0x34b13f[_0x2f7b('0x41')]['id']}})['then'](handleEntityNotFound(_0x3e2f0e,null))[_0x2f7b('0x22')](saveUpdates(_0x34b13f['body'],null))[_0x2f7b('0x22')](respondWithResult(_0x3e2f0e,null))[_0x2f7b('0x40')](handleError(_0x3e2f0e,null));};exports['destroy']=function(_0xdacea4,_0xc13b67){return db[_0x2f7b('0x43')][_0x2f7b('0x46')]({'where':{'id':_0xdacea4['params']['id']}})[_0x2f7b('0x22')](handleEntityNotFound(_0xc13b67,null))['then'](removeEntity(_0xc13b67,null))['catch'](handleError(_0xc13b67,null));};exports[_0x2f7b('0x47')]=function(_0x337858,_0x2d8484){return db[_0x2f7b('0x43')][_0x2f7b('0x47')]()['then'](respondWithResult(_0x2d8484,null))['catch'](handleError(_0x2d8484,null));};
\ No newline at end of file
+var _0x3126=['undefined','count','limit','set','Content-Range','reject','save','then','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','FaxTransferReport','includeAll','include','catch','show','params','options','create','body','update','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset'];(function(_0x2f5b44,_0x516b06){var _0x25fbcd=function(_0x3bffc8){while(--_0x3bffc8){_0x2f5b44['push'](_0x2f5b44['shift']());}};_0x25fbcd(++_0x516b06);}(_0x3126,0x1e4));var _0x6312=function(_0x383129,_0x1d458e){_0x383129=_0x383129-0x0;var _0x18d4b9=_0x3126[_0x383129];return _0x18d4b9;};'use strict';var emlformat=require(_0x6312('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6312('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6312('0x2'));var moment=require(_0x6312('0x3'));var BPromise=require(_0x6312('0x4'));var Mustache=require(_0x6312('0x5'));var util=require(_0x6312('0x6'));var path=require('path');var sox=require(_0x6312('0x7'));var csv=require(_0x6312('0x8'));var ejs=require(_0x6312('0x9'));var fs=require('fs');var fs_extra=require(_0x6312('0xa'));var _=require('lodash');var squel=require(_0x6312('0xb'));var crypto=require(_0x6312('0xc'));var jsforce=require(_0x6312('0xd'));var deskjs=require(_0x6312('0xe'));var toCsv=require(_0x6312('0x8'));var querystring=require(_0x6312('0xf'));var Papa=require(_0x6312('0x10'));var Redis=require(_0x6312('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6312('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6312('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x6312('0x14'));var licenseUtil=require(_0x6312('0x15'));var db=require(_0x6312('0x16'))['db'];function respondWithStatusCode(_0x35acc1,_0x1209d6){_0x1209d6=_0x1209d6||0xcc;return function(_0x4ec813){if(_0x4ec813){return _0x35acc1[_0x6312('0x17')](_0x1209d6);}return _0x35acc1[_0x6312('0x18')](_0x1209d6)['end']();};}function respondWithResult(_0x5334e5,_0x30c754){_0x30c754=_0x30c754||0xc8;return function(_0xcc929d){if(_0xcc929d){return _0x5334e5['status'](_0x30c754)[_0x6312('0x19')](_0xcc929d);}};}function respondWithFilteredResult(_0x5b0c92,_0x174f03){return function(_0x3eb235){if(_0x3eb235){var _0x44564b=typeof _0x174f03[_0x6312('0x1a')]===_0x6312('0x1b')&&typeof _0x174f03['limit']===_0x6312('0x1b');var _0x1d95c9=_0x3eb235[_0x6312('0x1c')];var _0x524cf7=_0x44564b?0x0:_0x174f03[_0x6312('0x1a')];var _0x355d8f=_0x44564b?_0x3eb235[_0x6312('0x1c')]:_0x174f03[_0x6312('0x1a')]+_0x174f03[_0x6312('0x1d')];var _0x1295e3;if(_0x355d8f>=_0x1d95c9){_0x355d8f=_0x1d95c9;_0x1295e3=0xc8;}else{_0x1295e3=0xce;}_0x5b0c92['status'](_0x1295e3);return _0x5b0c92[_0x6312('0x1e')](_0x6312('0x1f'),_0x524cf7+'-'+_0x355d8f+'/'+_0x1d95c9)[_0x6312('0x19')](_0x3eb235);}return null;};}function patchUpdates(_0xa5ce9e){return function(_0x5a515b){try{jsonpatch['apply'](_0x5a515b,_0xa5ce9e,!![]);}catch(_0x440a91){return BPromise[_0x6312('0x20')](_0x440a91);}return _0x5a515b[_0x6312('0x21')]();};}function saveUpdates(_0x3531b6,_0x5d051f){return function(_0xdf54bf){if(_0xdf54bf){return _0xdf54bf['update'](_0x3531b6)[_0x6312('0x22')](function(_0x46264f){return _0x46264f;});}return null;};}function removeEntity(_0x2763b6,_0xd46b77){return function(_0x24e753){if(_0x24e753){return _0x24e753[_0x6312('0x23')]()[_0x6312('0x22')](function(){_0x2763b6[_0x6312('0x18')](0xcc)[_0x6312('0x24')]();});}};}function handleEntityNotFound(_0x4e60c2,_0x3ae191){return function(_0x339135){if(!_0x339135){_0x4e60c2['sendStatus'](0x194);}return _0x339135;};}function handleError(_0xc1c29,_0x12b8d9){_0x12b8d9=_0x12b8d9||0x1f4;return function(_0x5130bb){logger['error'](_0x5130bb[_0x6312('0x25')]);if(_0x5130bb[_0x6312('0x26')]){delete _0x5130bb[_0x6312('0x26')];}_0xc1c29[_0x6312('0x18')](_0x12b8d9)[_0x6312('0x27')](_0x5130bb);};}exports[_0x6312('0x28')]=function(_0x50893b,_0x1b5142){var _0x1a1bfb={},_0x7d12ba={},_0x49a0a2={'count':0x0,'rows':[]};var _0x1b47be=_[_0x6312('0x29')](db['FaxTransferReport'][_0x6312('0x2a')],function(_0x5297b7){return{'name':_0x5297b7[_0x6312('0x2b')],'type':_0x5297b7[_0x6312('0x2c')][_0x6312('0x2d')]};});_0x7d12ba['model']=_['map'](_0x1b47be,_0x6312('0x26'));_0x7d12ba[_0x6312('0x2e')]=_[_0x6312('0x2f')](_0x50893b[_0x6312('0x2e')]);_0x7d12ba[_0x6312('0x30')]=_[_0x6312('0x31')](_0x7d12ba[_0x6312('0x32')],_0x7d12ba[_0x6312('0x2e')]);_0x1a1bfb[_0x6312('0x33')]=_[_0x6312('0x31')](_0x7d12ba[_0x6312('0x32')],qs[_0x6312('0x34')](_0x50893b[_0x6312('0x2e')]['fields']));_0x1a1bfb[_0x6312('0x33')]=_0x1a1bfb['attributes']['length']?_0x1a1bfb[_0x6312('0x33')]:_0x7d12ba[_0x6312('0x32')];if(!_0x50893b['query'][_0x6312('0x35')](_0x6312('0x36'))){_0x1a1bfb['limit']=qs['limit'](_0x50893b[_0x6312('0x2e')][_0x6312('0x1d')]);_0x1a1bfb['offset']=qs[_0x6312('0x1a')](_0x50893b[_0x6312('0x2e')][_0x6312('0x1a')]);}_0x1a1bfb[_0x6312('0x37')]=qs[_0x6312('0x38')](_0x50893b[_0x6312('0x2e')][_0x6312('0x38')]);_0x1a1bfb['where']=qs['filters'](_[_0x6312('0x39')](_0x50893b[_0x6312('0x2e')],_0x7d12ba[_0x6312('0x30')]),_0x1b47be);if(_0x50893b['query'][_0x6312('0x3a')]){_0x1a1bfb['where']=_['merge'](_0x1a1bfb[_0x6312('0x3b')],{'$or':_[_0x6312('0x29')](_0x1b47be,function(_0x31eede){if(_0x31eede[_0x6312('0x2c')]!=='VIRTUAL'){var _0x285715={};_0x285715[_0x31eede[_0x6312('0x26')]]={'$like':'%'+_0x50893b['query']['filter']+'%'};return _0x285715;}})});}_0x1a1bfb=_[_0x6312('0x3c')]({},_0x1a1bfb,_0x50893b['options']);var _0x5ce5ca={'where':_0x1a1bfb[_0x6312('0x3b')]};return db[_0x6312('0x3d')]['count'](_0x5ce5ca)[_0x6312('0x22')](function(_0x260da3){_0x49a0a2[_0x6312('0x1c')]=_0x260da3;if(_0x50893b[_0x6312('0x2e')][_0x6312('0x3e')]){_0x1a1bfb[_0x6312('0x3f')]=[{'all':!![]}];}return db[_0x6312('0x3d')]['findAll'](_0x1a1bfb);})['then'](function(_0x162d6e){_0x49a0a2['rows']=_0x162d6e;return _0x49a0a2;})[_0x6312('0x22')](respondWithFilteredResult(_0x1b5142,_0x1a1bfb))[_0x6312('0x40')](handleError(_0x1b5142,null));};exports[_0x6312('0x41')]=function(_0x2f1a23,_0x3d6314){var _0x5f2ab3={'raw':!![],'where':{'id':_0x2f1a23[_0x6312('0x42')]['id']}},_0x52ab44={};_0x52ab44[_0x6312('0x32')]=_[_0x6312('0x2f')](db[_0x6312('0x3d')][_0x6312('0x2a')]);_0x52ab44[_0x6312('0x2e')]=_[_0x6312('0x2f')](_0x2f1a23['query']);_0x52ab44['filters']=_[_0x6312('0x31')](_0x52ab44[_0x6312('0x32')],_0x52ab44[_0x6312('0x2e')]);_0x5f2ab3[_0x6312('0x33')]=_[_0x6312('0x31')](_0x52ab44[_0x6312('0x32')],qs['fields'](_0x2f1a23[_0x6312('0x2e')][_0x6312('0x34')]));_0x5f2ab3['attributes']=_0x5f2ab3[_0x6312('0x33')]['length']?_0x5f2ab3[_0x6312('0x33')]:_0x52ab44['model'];if(_0x2f1a23['query'][_0x6312('0x3e')]){_0x5f2ab3[_0x6312('0x3f')]=[{'all':!![]}];}_0x5f2ab3=_[_0x6312('0x3c')]({},_0x5f2ab3,_0x2f1a23[_0x6312('0x43')]);return db[_0x6312('0x3d')]['find'](_0x5f2ab3)['then'](handleEntityNotFound(_0x3d6314,null))[_0x6312('0x22')](respondWithResult(_0x3d6314,null))[_0x6312('0x40')](handleError(_0x3d6314,null));};exports[_0x6312('0x44')]=function(_0x43d0f8,_0x4d1167){return db['FaxTransferReport'][_0x6312('0x44')](_0x43d0f8[_0x6312('0x45')],{})[_0x6312('0x22')](respondWithResult(_0x4d1167,0xc9))['catch'](handleError(_0x4d1167,null));};exports[_0x6312('0x46')]=function(_0x118942,_0x1b6f87){if(_0x118942[_0x6312('0x45')]['id']){delete _0x118942[_0x6312('0x45')]['id'];}return db['FaxTransferReport'][_0x6312('0x47')]({'where':{'id':_0x118942['params']['id']}})['then'](handleEntityNotFound(_0x1b6f87,null))[_0x6312('0x22')](saveUpdates(_0x118942[_0x6312('0x45')],null))[_0x6312('0x22')](respondWithResult(_0x1b6f87,null))[_0x6312('0x40')](handleError(_0x1b6f87,null));};exports[_0x6312('0x23')]=function(_0x460d69,_0x3564c1){return db['FaxTransferReport'][_0x6312('0x47')]({'where':{'id':_0x460d69[_0x6312('0x42')]['id']}})[_0x6312('0x22')](handleEntityNotFound(_0x3564c1,null))['then'](removeEntity(_0x3564c1,null))[_0x6312('0x40')](handleError(_0x3564c1,null));};exports[_0x6312('0x48')]=function(_0x584431,_0x2523d3){return db[_0x6312('0x3d')][_0x6312('0x48')]()[_0x6312('0x22')](respondWithResult(_0x2523d3,null))[_0x6312('0x40')](handleError(_0x2523d3,null));};
\ No newline at end of file
index 13a5f10..46024bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1c4=['../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x55527b,_0x293c9a){var _0xd2577b=function(_0x23c7f3){while(--_0x23c7f3){_0x55527b['push'](_0x55527b['shift']());}};_0xd2577b(++_0x293c9a);}(_0xf1c4,0x15b));var _0x4f1c=function(_0x5515c5,_0xf0b6dc){_0x5515c5=_0x5515c5-0x0;var _0x55d5ff=_0xf1c4[_0x5515c5];return _0x55d5ff;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4f1c('0x0'))(_0x4f1c('0x1'));var moment=require(_0x4f1c('0x2'));var BPromise=require('bluebird');var rp=require(_0x4f1c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4f1c('0x4'));var config=require(_0x4f1c('0x5'));var attributes=require(_0x4f1c('0x6'));module[_0x4f1c('0x7')]=function(_0x5582a1,_0x51582e){return _0x5582a1[_0x4f1c('0x8')](_0x4f1c('0x9'),attributes,{'tableName':_0x4f1c('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x09d1=['../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','api','moment','path','rimraf'];(function(_0x369a9d,_0x4d6a02){var _0x3d85dd=function(_0x2a36e6){while(--_0x2a36e6){_0x369a9d['push'](_0x369a9d['shift']());}};_0x3d85dd(++_0x4d6a02);}(_0x09d1,0xba));var _0x109d=function(_0x2f3795,_0x9c95be){_0x2f3795=_0x2f3795-0x0;var _0x592eeb=_0x09d1[_0x2f3795];return _0x592eeb;};'use strict';var _=require(_0x109d('0x0'));var util=require(_0x109d('0x1'));var logger=require('../../config/logger')(_0x109d('0x2'));var moment=require(_0x109d('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x109d('0x4'));var rimraf=require(_0x109d('0x5'));var config=require(_0x109d('0x6'));var attributes=require(_0x109d('0x7'));module['exports']=function(_0x590e4d,_0x2d5064){return _0x590e4d[_0x109d('0x8')](_0x109d('0x9'),attributes,{'tableName':_0x109d('0xa'),'paranoid':![],'indexes':[{'name':_0x109d('0xb'),'fields':[_0x109d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index f7da529..01c02ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d89=['../../config/environment','jayson/promise','http','request','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4dd245,_0x24e516){var _0x1d86e2=function(_0x5f56f1){while(--_0x5f56f1){_0x4dd245['push'](_0x4dd245['shift']());}};_0x1d86e2(++_0x24e516);}(_0x5d89,0x9e));var _0x95d8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d89[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x95d8('0x0'));var util=require(_0x95d8('0x1'));var moment=require(_0x95d8('0x2'));var BPromise=require(_0x95d8('0x3'));var rs=require(_0x95d8('0x4'));var fs=require('fs');var Redis=require(_0x95d8('0x5'));var db=require(_0x95d8('0x6'))['db'];var utils=require(_0x95d8('0x7'));var logger=require(_0x95d8('0x8'))(_0x95d8('0x9'));var config=require(_0x95d8('0xa'));var jayson=require(_0x95d8('0xb'));var client=jayson['client'][_0x95d8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3eb32c,_0x51df70,_0xfe7c8f){return new BPromise(function(_0x22c3a1,_0x3503e0){return client[_0x95d8('0xd')](_0x3eb32c,_0xfe7c8f)['then'](function(_0x2c133d){logger[_0x95d8('0xe')](_0x95d8('0xf'),_0x51df70,_0x95d8('0x10'));logger['debug'](_0x95d8('0x11'),_0x51df70,_0x95d8('0x10'),JSON[_0x95d8('0x12')](_0x2c133d));if(_0x2c133d[_0x95d8('0x13')]){if(_0x2c133d['error'][_0x95d8('0x14')]===0x1f4){logger[_0x95d8('0x13')](_0x95d8('0xf'),_0x51df70,_0x2c133d[_0x95d8('0x13')][_0x95d8('0x15')]);return _0x3503e0(_0x2c133d[_0x95d8('0x13')][_0x95d8('0x15')]);}logger[_0x95d8('0x13')](_0x95d8('0xf'),_0x51df70,_0x2c133d[_0x95d8('0x13')]['message']);return _0x22c3a1(_0x2c133d[_0x95d8('0x13')][_0x95d8('0x15')]);}else{logger[_0x95d8('0xe')](_0x95d8('0xf'),_0x51df70,'request\x20sent');_0x22c3a1(_0x2c133d[_0x95d8('0x16')][_0x95d8('0x15')]);}})[_0x95d8('0x17')](function(_0x545fcf){logger[_0x95d8('0x13')]('FaxTransferReport,\x20%s,\x20%s',_0x51df70,_0x545fcf);_0x3503e0(_0x545fcf);});});}
\ No newline at end of file
+var _0xfe23=['result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x5a504a,_0x1c9027){var _0xbe8543=function(_0x40c217){while(--_0x40c217){_0x5a504a['push'](_0x5a504a['shift']());}};_0xbe8543(++_0x1c9027);}(_0xfe23,0xe8));var _0x3fe2=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xfe23[_0x3511d3];return _0x5d6321;};'use strict';var _=require('lodash');var util=require(_0x3fe2('0x0'));var moment=require(_0x3fe2('0x1'));var BPromise=require(_0x3fe2('0x2'));var rs=require(_0x3fe2('0x3'));var fs=require('fs');var Redis=require(_0x3fe2('0x4'));var db=require(_0x3fe2('0x5'))['db'];var utils=require(_0x3fe2('0x6'));var logger=require(_0x3fe2('0x7'))('rpc');var config=require(_0x3fe2('0x8'));var jayson=require(_0x3fe2('0x9'));var client=jayson[_0x3fe2('0xa')][_0x3fe2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x438b07,_0xbdfc0c,_0x3137d6){return new BPromise(function(_0x5d3a87,_0xdc9800){return client[_0x3fe2('0xc')](_0x438b07,_0x3137d6)[_0x3fe2('0xd')](function(_0x3f908b){logger[_0x3fe2('0xe')](_0x3fe2('0xf'),_0xbdfc0c,_0x3fe2('0x10'));logger[_0x3fe2('0x11')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0xbdfc0c,_0x3fe2('0x10'),JSON['stringify'](_0x3f908b));if(_0x3f908b[_0x3fe2('0x12')]){if(_0x3f908b[_0x3fe2('0x12')][_0x3fe2('0x13')]===0x1f4){logger[_0x3fe2('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0xbdfc0c,_0x3f908b[_0x3fe2('0x12')]['message']);return _0xdc9800(_0x3f908b[_0x3fe2('0x12')][_0x3fe2('0x14')]);}logger['error']('FaxTransferReport,\x20%s,\x20%s',_0xbdfc0c,_0x3f908b[_0x3fe2('0x12')]['message']);return _0x5d3a87(_0x3f908b[_0x3fe2('0x12')]['message']);}else{logger[_0x3fe2('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0xbdfc0c,'request\x20sent');_0x5d3a87(_0x3f908b[_0x3fe2('0x15')][_0x3fe2('0x14')]);}})[_0x3fe2('0x16')](function(_0x3b034e){logger[_0x3fe2('0x12')](_0x3fe2('0xf'),_0xbdfc0c,_0x3b034e);_0xdc9800(_0x3b034e);});});}
\ No newline at end of file
index feaf522..7fd0b11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x736d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','show','post','put','/:id','update','delete','destroy','multer','connect-timeout','express','Router'];(function(_0x4aee8c,_0x388558){var _0x504f51=function(_0x25681b){while(--_0x25681b){_0x4aee8c['push'](_0x4aee8c['shift']());}};_0x504f51(++_0x388558);}(_0x736d,0x95));var _0xd736=function(_0x12dffa,_0x1b054c){_0x12dffa=_0x12dffa-0x0;var _0x493dd2=_0x736d[_0x12dffa];return _0x493dd2;};'use strict';var multer=require(_0xd736('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd736('0x1'));var express=require(_0xd736('0x2'));var router=express[_0xd736('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd736('0x4'));var interaction=require(_0xd736('0x5'));var config=require(_0xd736('0x6'));var controller=require(_0xd736('0x7'));router[_0xd736('0x8')]('/',auth[_0xd736('0x9')](),controller['index']);router[_0xd736('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd736('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xd736('0xa')]);router[_0xd736('0xb')]('/',auth[_0xd736('0x9')](),controller['create']);router[_0xd736('0xc')](_0xd736('0xd'),auth[_0xd736('0x9')](),controller[_0xd736('0xe')]);router[_0xd736('0xf')](_0xd736('0xd'),auth[_0xd736('0x9')](),controller[_0xd736('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xf28c=['create','put','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','/describe','describe','/:id','post'];(function(_0x14b3a3,_0x43cef1){var _0x327aac=function(_0x313505){while(--_0x313505){_0x14b3a3['push'](_0x14b3a3['shift']());}};_0x327aac(++_0x43cef1);}(_0xf28c,0xdf));var _0xcf28=function(_0x4c8bb6,_0x517b16){_0x4c8bb6=_0x4c8bb6-0x0;var _0xa43e16=_0xf28c[_0x4c8bb6];return _0xa43e16;};'use strict';var multer=require(_0xcf28('0x0'));var util=require(_0xcf28('0x1'));var path=require(_0xcf28('0x2'));var timeout=require(_0xcf28('0x3'));var express=require(_0xcf28('0x4'));var router=express[_0xcf28('0x5')]();var fs_extra=require(_0xcf28('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcf28('0x7'));var controller=require(_0xcf28('0x8'));router['get']('/',auth[_0xcf28('0x9')](),controller[_0xcf28('0xa')]);router['get'](_0xcf28('0xb'),auth[_0xcf28('0x9')](),controller[_0xcf28('0xc')]);router['get'](_0xcf28('0xd'),auth[_0xcf28('0x9')](),controller['show']);router[_0xcf28('0xe')]('/',auth[_0xcf28('0x9')](),controller[_0xcf28('0xf')]);router[_0xcf28('0x10')](_0xcf28('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xcf28('0xd'),auth[_0xcf28('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index fcde070..9c4994d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac4=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','/:id','update','delete'];(function(_0x58c519,_0x5a5e28){var _0x18342f=function(_0x4c5c9e){while(--_0x4c5c9e){_0x58c519['push'](_0x58c519['shift']());}};_0x18342f(++_0x5a5e28);}(_0x1ac4,0x17c));var _0x41ac=function(_0x11d56f,_0x5451fa){_0x11d56f=_0x11d56f-0x0;var _0x38c4ff=_0x1ac4[_0x11d56f];return _0x38c4ff;};'use strict';var multer=require(_0x41ac('0x0'));var util=require(_0x41ac('0x1'));var path=require(_0x41ac('0x2'));var timeout=require(_0x41ac('0x3'));var express=require(_0x41ac('0x4'));var router=express[_0x41ac('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x41ac('0x6'));var interaction=require(_0x41ac('0x7'));var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router[_0x41ac('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x41ac('0x9')](),controller[_0x41ac('0xa')]);router[_0x41ac('0x8')](_0x41ac('0xb'),auth[_0x41ac('0x9')](),controller[_0x41ac('0xc')]);router[_0x41ac('0x8')]('/:id/fields',auth[_0x41ac('0x9')](),controller[_0x41ac('0xd')]);router[_0x41ac('0xe')]('/',auth[_0x41ac('0x9')](),controller[_0x41ac('0xf')]);router['post'](_0x41ac('0xb'),auth[_0x41ac('0x9')](),controller[_0x41ac('0x10')]);router['put'](_0x41ac('0x11'),auth[_0x41ac('0x9')](),controller[_0x41ac('0x12')]);router[_0x41ac('0x13')](_0x41ac('0x11'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x29b2=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','util','path'];(function(_0xa2f2c0,_0x1bd315){var _0x3f2623=function(_0x38ff37){while(--_0x38ff37){_0xa2f2c0['push'](_0xa2f2c0['shift']());}};_0x3f2623(++_0x1bd315);}(_0x29b2,0x140));var _0x229b=function(_0x122994,_0x464bcc){_0x122994=_0x122994-0x0;var _0x343c43=_0x29b2[_0x122994];return _0x343c43;};'use strict';var multer=require('multer');var util=require(_0x229b('0x0'));var path=require(_0x229b('0x1'));var timeout=require(_0x229b('0x2'));var express=require(_0x229b('0x3'));var router=express[_0x229b('0x4')]();var fs_extra=require(_0x229b('0x5'));var auth=require(_0x229b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x229b('0x7'));var controller=require('./intDeskAccount.controller');router['get']('/',auth[_0x229b('0x8')](),controller[_0x229b('0x9')]);router[_0x229b('0xa')](_0x229b('0xb'),auth[_0x229b('0x8')](),controller[_0x229b('0xc')]);router['get']('/:id/configurations',auth[_0x229b('0x8')](),controller['getConfigurations']);router[_0x229b('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0x229b('0xd')]);router[_0x229b('0xe')]('/',auth['isAuthenticated'](),controller[_0x229b('0xf')]);router[_0x229b('0xe')](_0x229b('0x10'),auth[_0x229b('0x8')](),controller[_0x229b('0x11')]);router[_0x229b('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x229b('0x13')]);router[_0x229b('0x14')]('/:id',auth[_0x229b('0x8')](),controller[_0x229b('0x15')]);module[_0x229b('0x16')]=router;
\ No newline at end of file
index 2ec6f53..a839d5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x967e=['STRING','ENUM','basic','integrationTab','newTab','exports'];(function(_0x263b0e,_0xc6479f){var _0x113fee=function(_0x803881){while(--_0x803881){_0x263b0e['push'](_0x263b0e['shift']());}};_0x113fee(++_0xc6479f);}(_0x967e,0xd7));var _0xe967=function(_0x9cd515,_0x480f86){_0x9cd515=_0x9cd515-0x0;var _0x499606=_0x967e[_0x9cd515];return _0x499606;};'use strict';var Sequelize=require('sequelize');module[_0xe967('0x0')]={'name':{'type':Sequelize[_0xe967('0x1')]},'description':{'type':Sequelize[_0xe967('0x1')]},'username':{'type':Sequelize[_0xe967('0x1')]},'remoteUri':{'type':Sequelize[_0xe967('0x1')]},'authType':{'type':Sequelize[_0xe967('0x2')](_0xe967('0x3')),'defaultValue':_0xe967('0x3')},'password':{'type':Sequelize[_0xe967('0x1')]},'consumerKey':{'type':Sequelize[_0xe967('0x1')]},'consumerSecret':{'type':Sequelize[_0xe967('0x1')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xe967('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xe967('0x2')](_0xe967('0x4'),_0xe967('0x5')),'defaultValue':_0xe967('0x4')}};
\ No newline at end of file
+var _0x5a56=['newTab','sequelize','exports','STRING','integrationTab'];(function(_0x139374,_0x513e4c){var _0x2d2d40=function(_0x93a16d){while(--_0x93a16d){_0x139374['push'](_0x139374['shift']());}};_0x2d2d40(++_0x513e4c);}(_0x5a56,0x164));var _0x65a5=function(_0x3652f7,_0x39448c){_0x3652f7=_0x3652f7-0x0;var _0x365c5c=_0x5a56[_0x3652f7];return _0x365c5c;};'use strict';var Sequelize=require(_0x65a5('0x0'));module[_0x65a5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x65a5('0x2')]},'username':{'type':Sequelize[_0x65a5('0x2')]},'remoteUri':{'type':Sequelize[_0x65a5('0x2')]},'authType':{'type':Sequelize['ENUM']('basic'),'defaultValue':'basic'},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x65a5('0x2')]},'token':{'type':Sequelize[_0x65a5('0x2')]},'tokenSecret':{'type':Sequelize[_0x65a5('0x2')]},'serverUrl':{'type':Sequelize[_0x65a5('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x65a5('0x3'),_0x65a5('0x4')),'defaultValue':_0x65a5('0x3')}};
\ No newline at end of file
index 054df6c..b0624d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x686d=['path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','merge','options','includeAll','DeskAccount','findAll','rows','catch','show','params','include','create','body','find','getConfigurations','DeskConfiguration','sort','pick','nolimit','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','DeskField','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','slice','lastIndexOf','GET','format','application/json','basic','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x237171,_0xe9722a){var _0x3407a1=function(_0x4e8f3d){while(--_0x4e8f3d){_0x237171['push'](_0x237171['shift']());}};_0x3407a1(++_0xe9722a);}(_0x686d,0x1bc));var _0xd686=function(_0x2bc3f4,_0x470b26){_0x2bc3f4=_0x2bc3f4-0x0;var _0x14ac53=_0x686d[_0x2bc3f4];return _0x14ac53;};'use strict';var emlformat=require(_0xd686('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd686('0x1'));var jsonpatch=require(_0xd686('0x2'));var rp=require(_0xd686('0x3'));var moment=require(_0xd686('0x4'));var BPromise=require(_0xd686('0x5'));var Mustache=require(_0xd686('0x6'));var util=require(_0xd686('0x7'));var path=require(_0xd686('0x8'));var sox=require(_0xd686('0x9'));var csv=require('to-csv');var ejs=require(_0xd686('0xa'));var fs=require('fs');var fs_extra=require(_0xd686('0xb'));var _=require(_0xd686('0xc'));var squel=require(_0xd686('0xd'));var crypto=require('crypto');var jsforce=require(_0xd686('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xd686('0xf'));var querystring=require('querystring');var Papa=require(_0xd686('0x10'));var Redis=require(_0xd686('0x11'));var authService=require(_0xd686('0x12'));var qs=require(_0xd686('0x13'));var as=require(_0xd686('0x14'));var hardwareService=require(_0xd686('0x15'));var logger=require('../../config/logger')(_0xd686('0x16'));var utils=require(_0xd686('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xd686('0x18'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2a64e6,_0x1c7549){_0x1c7549=_0x1c7549||0xcc;return function(_0x2cc24f){if(_0x2cc24f){return _0x2a64e6[_0xd686('0x19')](_0x1c7549);}return _0x2a64e6[_0xd686('0x1a')](_0x1c7549)[_0xd686('0x1b')]();};}function respondWithResult(_0x555da1,_0x822476){_0x822476=_0x822476||0xc8;return function(_0x5dd026){if(_0x5dd026){return _0x555da1['status'](_0x822476)[_0xd686('0x1c')](_0x5dd026);}};}function respondWithFilteredResult(_0x3d1446,_0x5a2c26){return function(_0x4b976e){if(_0x4b976e){var _0x11b0ba=typeof _0x5a2c26[_0xd686('0x1d')]===_0xd686('0x1e')&&typeof _0x5a2c26[_0xd686('0x1f')]==='undefined';var _0x3c4a74=_0x4b976e[_0xd686('0x20')];var _0x27540e=_0x11b0ba?0x0:_0x5a2c26[_0xd686('0x1d')];var _0x3edf78=_0x11b0ba?_0x4b976e[_0xd686('0x20')]:_0x5a2c26[_0xd686('0x1d')]+_0x5a2c26[_0xd686('0x1f')];var _0x3d914d;if(_0x3edf78>=_0x3c4a74){_0x3edf78=_0x3c4a74;_0x3d914d=0xc8;}else{_0x3d914d=0xce;}_0x3d1446['status'](_0x3d914d);return _0x3d1446[_0xd686('0x21')](_0xd686('0x22'),_0x27540e+'-'+_0x3edf78+'/'+_0x3c4a74)[_0xd686('0x1c')](_0x4b976e);}return null;};}function patchUpdates(_0x5cdf65){return function(_0x2f75ad){try{jsonpatch[_0xd686('0x23')](_0x2f75ad,_0x5cdf65,!![]);}catch(_0x8d27da){return BPromise['reject'](_0x8d27da);}return _0x2f75ad[_0xd686('0x24')]();};}function saveUpdates(_0x5f4b88,_0x1c47a2){return function(_0xa8bcd2){if(_0xa8bcd2){return _0xa8bcd2['update'](_0x5f4b88)['then'](function(_0xf3c389){return _0xf3c389;});}return null;};}function removeEntity(_0x2ef6e1,_0x3f8491){return function(_0x53526c){if(_0x53526c){return _0x53526c[_0xd686('0x25')]()[_0xd686('0x26')](function(){_0x2ef6e1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4200ec,_0x1a6bf7){return function(_0x443789){if(!_0x443789){_0x4200ec[_0xd686('0x19')](0x194);}return _0x443789;};}function handleError(_0x141516,_0x1dab66){_0x1dab66=_0x1dab66||0x1f4;return function(_0x2ccdc8){logger[_0xd686('0x27')](_0x2ccdc8['stack']);if(_0x2ccdc8[_0xd686('0x28')]){delete _0x2ccdc8[_0xd686('0x28')];}_0x141516[_0xd686('0x1a')](_0x1dab66)[_0xd686('0x29')](_0x2ccdc8);};}exports[_0xd686('0x2a')]=function(_0x2f8040,_0x2b47f0){var _0x5f5a7e={},_0xd4ffe8={},_0x233b1f={'count':0x0,'rows':[]};var _0x358e9c=_[_0xd686('0x2b')](db['DeskAccount'][_0xd686('0x2c')],function(_0x379127){return{'name':_0x379127[_0xd686('0x2d')],'type':_0x379127[_0xd686('0x2e')]['key']};});_0xd4ffe8[_0xd686('0x2f')]=_[_0xd686('0x2b')](_0x358e9c,_0xd686('0x28'));_0xd4ffe8[_0xd686('0x30')]=_[_0xd686('0x31')](_0x2f8040[_0xd686('0x30')]);_0xd4ffe8[_0xd686('0x32')]=_['intersection'](_0xd4ffe8[_0xd686('0x2f')],_0xd4ffe8['query']);_0x5f5a7e['attributes']=_[_0xd686('0x33')](_0xd4ffe8['model'],qs[_0xd686('0x34')](_0x2f8040[_0xd686('0x30')][_0xd686('0x34')]));_0x5f5a7e[_0xd686('0x35')]=_0x5f5a7e['attributes'][_0xd686('0x36')]?_0x5f5a7e[_0xd686('0x35')]:_0xd4ffe8[_0xd686('0x2f')];if(!_0x2f8040[_0xd686('0x30')][_0xd686('0x37')]('nolimit')){_0x5f5a7e['limit']=qs['limit'](_0x2f8040[_0xd686('0x30')][_0xd686('0x1f')]);_0x5f5a7e[_0xd686('0x1d')]=qs[_0xd686('0x1d')](_0x2f8040[_0xd686('0x30')]['offset']);}_0x5f5a7e[_0xd686('0x38')]=qs['sort'](_0x2f8040[_0xd686('0x30')]['sort']);_0x5f5a7e[_0xd686('0x39')]=qs[_0xd686('0x32')](_['pick'](_0x2f8040[_0xd686('0x30')],_0xd4ffe8['filters']),_0x358e9c);if(_0x2f8040[_0xd686('0x30')][_0xd686('0x3a')]){_0x5f5a7e['where']=_[_0xd686('0x3b')](_0x5f5a7e[_0xd686('0x39')],{'$or':_['map'](_0x358e9c,function(_0x5699f8){if(_0x5699f8['type']!=='VIRTUAL'){var _0x2213fe={};_0x2213fe[_0x5699f8[_0xd686('0x28')]]={'$like':'%'+_0x2f8040[_0xd686('0x30')][_0xd686('0x3a')]+'%'};return _0x2213fe;}})});}_0x5f5a7e=_['merge']({},_0x5f5a7e,_0x2f8040[_0xd686('0x3c')]);var _0xc5e0da={'where':_0x5f5a7e['where']};return db['DeskAccount'][_0xd686('0x20')](_0xc5e0da)['then'](function(_0xb86a89){_0x233b1f[_0xd686('0x20')]=_0xb86a89;if(_0x2f8040[_0xd686('0x30')][_0xd686('0x3d')]){_0x5f5a7e['include']=[{'all':!![]}];}return db[_0xd686('0x3e')][_0xd686('0x3f')](_0x5f5a7e);})['then'](function(_0x8794b6){_0x233b1f[_0xd686('0x40')]=_0x8794b6;return _0x233b1f;})[_0xd686('0x26')](respondWithFilteredResult(_0x2b47f0,_0x5f5a7e))[_0xd686('0x41')](handleError(_0x2b47f0,null));};exports[_0xd686('0x42')]=function(_0x822ca0,_0x4ef99c){var _0x50becf={'raw':![],'where':{'id':_0x822ca0[_0xd686('0x43')]['id']}},_0x194612={};_0x194612[_0xd686('0x2f')]=_[_0xd686('0x31')](db[_0xd686('0x3e')]['rawAttributes']);_0x194612[_0xd686('0x30')]=_[_0xd686('0x31')](_0x822ca0[_0xd686('0x30')]);_0x194612[_0xd686('0x32')]=_[_0xd686('0x33')](_0x194612[_0xd686('0x2f')],_0x194612[_0xd686('0x30')]);_0x50becf[_0xd686('0x35')]=_[_0xd686('0x33')](_0x194612[_0xd686('0x2f')],qs[_0xd686('0x34')](_0x822ca0[_0xd686('0x30')][_0xd686('0x34')]));_0x50becf[_0xd686('0x35')]=_0x50becf[_0xd686('0x35')][_0xd686('0x36')]?_0x50becf[_0xd686('0x35')]:_0x194612[_0xd686('0x2f')];if(_0x822ca0[_0xd686('0x30')][_0xd686('0x3d')]){_0x50becf[_0xd686('0x44')]=[{'all':!![]}];}_0x50becf=_[_0xd686('0x3b')]({},_0x50becf,_0x822ca0['options']);return db[_0xd686('0x3e')]['find'](_0x50becf)[_0xd686('0x26')](handleEntityNotFound(_0x4ef99c,null))[_0xd686('0x26')](respondWithResult(_0x4ef99c,null))['catch'](handleError(_0x4ef99c,null));};exports[_0xd686('0x45')]=function(_0x45f931,_0x153166){return db['DeskAccount'][_0xd686('0x45')](_0x45f931[_0xd686('0x46')],{})[_0xd686('0x26')](respondWithResult(_0x153166,0xc9))[_0xd686('0x41')](handleError(_0x153166,null));};exports['update']=function(_0x51ab80,_0x4a0a4f){if(_0x51ab80[_0xd686('0x46')]['id']){delete _0x51ab80[_0xd686('0x46')]['id'];}return db['DeskAccount'][_0xd686('0x47')]({'where':{'id':_0x51ab80[_0xd686('0x43')]['id']}})[_0xd686('0x26')](handleEntityNotFound(_0x4a0a4f,null))['then'](saveUpdates(_0x51ab80[_0xd686('0x46')],null))[_0xd686('0x26')](respondWithResult(_0x4a0a4f,null))[_0xd686('0x41')](handleError(_0x4a0a4f,null));};exports[_0xd686('0x25')]=function(_0x146bfd,_0x5b36cd){return db[_0xd686('0x3e')]['find']({'where':{'id':_0x146bfd[_0xd686('0x43')]['id']}})['then'](handleEntityNotFound(_0x5b36cd,null))['then'](removeEntity(_0x5b36cd,null))[_0xd686('0x41')](handleError(_0x5b36cd,null));};exports[_0xd686('0x48')]=function(_0x599c4f,_0xc3b045,_0x396dd4){var _0x45a721={};var _0x1a6600={};var _0x5011d3;var _0x5029d8;return db['DeskAccount']['findOne']({'where':{'id':_0x599c4f[_0xd686('0x43')]['id']}})['then'](handleEntityNotFound(_0xc3b045,null))['then'](function(_0x113238){if(_0x113238){_0x5011d3=_0x113238;_0x1a6600[_0xd686('0x2f')]=_[_0xd686('0x31')](db[_0xd686('0x49')][_0xd686('0x2c')]);_0x1a6600[_0xd686('0x30')]=_[_0xd686('0x31')](_0x599c4f['query']);_0x1a6600[_0xd686('0x32')]=_['intersection'](_0x1a6600['model'],_0x1a6600[_0xd686('0x30')]);_0x45a721[_0xd686('0x35')]=_[_0xd686('0x33')](_0x1a6600['model'],qs[_0xd686('0x34')](_0x599c4f['query']['fields']));_0x45a721[_0xd686('0x35')]=_0x45a721[_0xd686('0x35')]['length']?_0x45a721['attributes']:_0x1a6600['model'];_0x45a721[_0xd686('0x38')]=qs[_0xd686('0x4a')](_0x599c4f[_0xd686('0x30')]['sort']);_0x45a721[_0xd686('0x39')]=qs[_0xd686('0x32')](_[_0xd686('0x4b')](_0x599c4f['query'],_0x1a6600['filters']));if(_0x599c4f[_0xd686('0x30')][_0xd686('0x3a')]){_0x45a721[_0xd686('0x39')]=_['merge'](_0x45a721[_0xd686('0x39')],{'$or':_[_0xd686('0x2b')](_0x45a721['attributes'],function(_0x47171a){var _0xa5893b={};_0xa5893b[_0x47171a]={'$like':'%'+_0x599c4f[_0xd686('0x30')][_0xd686('0x3a')]+'%'};return _0xa5893b;})});}_0x45a721=_['merge']({},_0x45a721,_0x599c4f[_0xd686('0x3c')]);return _0x5011d3[_0xd686('0x48')](_0x45a721);}})[_0xd686('0x26')](function(_0x13587b){if(_0x13587b){_0x5029d8=_0x13587b[_0xd686('0x36')];if(!_0x599c4f[_0xd686('0x30')][_0xd686('0x37')](_0xd686('0x4c'))){_0x45a721[_0xd686('0x1f')]=qs[_0xd686('0x1f')](_0x599c4f[_0xd686('0x30')]['limit']);_0x45a721[_0xd686('0x1d')]=qs[_0xd686('0x1d')](_0x599c4f['query']['offset']);}return _0x5011d3[_0xd686('0x48')](_0x45a721);}})[_0xd686('0x26')](function(_0x2e9ebe){if(_0x2e9ebe){return _0x2e9ebe?{'count':_0x5029d8,'rows':_0x2e9ebe}:null;}})[_0xd686('0x26')](respondWithResult(_0xc3b045,null))[_0xd686('0x41')](handleError(_0xc3b045,null));};exports['addConfiguration']=function(_0x1a2ca1,_0x3c8d39,_0x243a06){if(_0x1a2ca1[_0xd686('0x46')]['id']){delete _0x1a2ca1['body']['id'];}return db[_0xd686('0x3e')][_0xd686('0x4d')]({'where':{'id':_0x1a2ca1[_0xd686('0x43')]['id']}})['then'](handleEntityNotFound(_0x3c8d39,null))[_0xd686('0x26')](function(_0x38538f){if(_0x38538f){_0x1a2ca1[_0xd686('0x46')][_0xd686('0x4e')]=_0x38538f['id'];_0x1a2ca1['body'][_0xd686('0x4f')]=integrations[_0xd686('0x50')](_0x1a2ca1[_0xd686('0x46')][_0xd686('0x51')],_0x1a2ca1['body'][_0xd686('0x2e')]);_0x1a2ca1[_0xd686('0x46')][_0xd686('0x52')]=integrations['getDescriptions'](_0x1a2ca1['body'][_0xd686('0x51')],_0x1a2ca1[_0xd686('0x46')][_0xd686('0x2e')]);return db[_0xd686('0x49')][_0xd686('0x45')](_0x1a2ca1['body'],{'include':[{'model':db[_0xd686('0x53')],'as':_0xd686('0x4f')},{'model':db[_0xd686('0x53')],'as':_0xd686('0x52')}]});}return null;})['then'](respondWithResult(_0x3c8d39,null))[_0xd686('0x41')](handleError(_0x3c8d39,null));};exports['getFields']=function(_0x4a357f,_0xd37b1c,_0x173fb2){var _0x57d149=[{'name':'priority','label':_0xd686('0x54'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x41e94f='';return db[_0xd686('0x3e')][_0xd686('0x4d')]({'where':{'id':_0x4a357f[_0xd686('0x43')]['id']},'attributes':['id',_0xd686('0x55'),_0xd686('0x56'),_0xd686('0x57'),_0xd686('0x58'),_0xd686('0x59'),_0xd686('0x5a'),_0xd686('0x5b'),_0xd686('0x5c')]})['then'](handleEntityNotFound(_0xd37b1c,null))[_0xd686('0x26')](function(_0x12e3f0){if(_0x12e3f0){_0x41e94f=_0x12e3f0['remoteUri'];var _0x5103a2=_0x41e94f[_0xd686('0x5d')](-0x1);if(_0x5103a2==='/'){_0x41e94f=_0x41e94f['substring'](0x0,_0x41e94f[_0xd686('0x5e')](_0x5103a2));}var _0x16782e={'method':_0xd686('0x5f'),'uri':util[_0xd686('0x60')]('%s/custom_fields',_0x41e94f),'headers':{'Content-Type':_0xd686('0x61'),'Accept':_0xd686('0x61')},'json':!![]};if(_0x12e3f0[_0xd686('0x56')]===_0xd686('0x62')){_0x16782e['headers'][_0xd686('0x63')]=util['format'](_0xd686('0x64'),new Buffer(util[_0xd686('0x60')](_0xd686('0x65'),_0x12e3f0['username'],_0x12e3f0[_0xd686('0x58')]))[_0xd686('0x66')](_0xd686('0x67')));}return rp(_0x16782e)[_0xd686('0x26')](function(_0x2e72ae){return _0x57d149[_0xd686('0x68')](_[_0xd686('0x2b')](_0x2e72ae[_0xd686('0x69')][_0xd686('0x6a')],function(_0x3b9ee1){return{'id':_0x3b9ee1[_0xd686('0x28')],'name':_0x3b9ee1['name'],'type':_0x3b9ee1[_0xd686('0x2e')],'active':_0x3b9ee1[_0xd686('0x6b')],'label':_0x3b9ee1[_0xd686('0x6c')],'custom':!![]};}));});}})[_0xd686('0x26')](function(_0x4d9340){return{'count':_0x4d9340[_0xd686('0x36')],'rows':_0x4d9340};})['then'](respondWithResult(_0xd37b1c,null))['catch'](function(_0x34df24){var _0x553e7d=_0x4a357f['query'][_0xd686('0x6d')]?0x1f4:_0x34df24[_0xd686('0x6e')]||0x1f4;logger[_0xd686('0x27')](_0xd686('0x6f'),'getFields',_0x553e7d,JSON[_0xd686('0x70')](_0x34df24));delete _0x34df24[_0xd686('0x28')];if(_0x553e7d===0x191){_0x553e7d=0x190;}_0xd37b1c['status'](_0x553e7d)['send'](_0x4a357f[_0xd686('0x30')][_0xd686('0x6d')]?{'message':'Wrong\x20credentials','statusCode':_0x34df24[_0xd686('0x6e')]}:_0x34df24);});};
\ No newline at end of file
+var _0xd460=['../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','find','create','body','getConfigurations','findOne','DeskConfiguration','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','DeskField','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','base64','concat','_embedded','entries','active','label','statusCode','stringify','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0xd6500b,_0x2a9cf5){var _0xae0548=function(_0x32a1cb){while(--_0x32a1cb){_0xd6500b['push'](_0xd6500b['shift']());}};_0xae0548(++_0x2a9cf5);}(_0xd460,0xd0));var _0x0d46=function(_0x4d30c0,_0x3a0ae7){_0x4d30c0=_0x4d30c0-0x0;var _0x5b0c2e=_0xd460[_0x4d30c0];return _0x5b0c2e;};'use strict';var emlformat=require(_0x0d46('0x0'));var rimraf=require(_0x0d46('0x1'));var zipdir=require(_0x0d46('0x2'));var jsonpatch=require(_0x0d46('0x3'));var rp=require(_0x0d46('0x4'));var moment=require(_0x0d46('0x5'));var BPromise=require(_0x0d46('0x6'));var Mustache=require(_0x0d46('0x7'));var util=require(_0x0d46('0x8'));var path=require(_0x0d46('0x9'));var sox=require(_0x0d46('0xa'));var csv=require('to-csv');var ejs=require(_0x0d46('0xb'));var fs=require('fs');var fs_extra=require(_0x0d46('0xc'));var _=require(_0x0d46('0xd'));var squel=require(_0x0d46('0xe'));var crypto=require('crypto');var jsforce=require(_0x0d46('0xf'));var deskjs=require(_0x0d46('0x10'));var toCsv=require(_0x0d46('0x11'));var querystring=require('querystring');var Papa=require(_0x0d46('0x12'));var Redis=require(_0x0d46('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x0d46('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0d46('0x15'));var logger=require('../../config/logger')(_0x0d46('0x16'));var utils=require(_0x0d46('0x17'));var config=require(_0x0d46('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x0d46('0x19'))['db'];var integrations=require(_0x0d46('0x1a'));function respondWithStatusCode(_0x294a08,_0x3d111a){_0x3d111a=_0x3d111a||0xcc;return function(_0xcb3027){if(_0xcb3027){return _0x294a08['sendStatus'](_0x3d111a);}return _0x294a08[_0x0d46('0x1b')](_0x3d111a)['end']();};}function respondWithResult(_0x125570,_0x5b7f7b){_0x5b7f7b=_0x5b7f7b||0xc8;return function(_0x3adde3){if(_0x3adde3){return _0x125570[_0x0d46('0x1b')](_0x5b7f7b)[_0x0d46('0x1c')](_0x3adde3);}};}function respondWithFilteredResult(_0x5af874,_0xe672db){return function(_0x522e13){if(_0x522e13){var _0x97fba3=typeof _0xe672db[_0x0d46('0x1d')]===_0x0d46('0x1e')&&typeof _0xe672db[_0x0d46('0x1f')]==='undefined';var _0x38e04a=_0x522e13[_0x0d46('0x20')];var _0x377371=_0x97fba3?0x0:_0xe672db[_0x0d46('0x1d')];var _0x179b7f=_0x97fba3?_0x522e13['count']:_0xe672db['offset']+_0xe672db[_0x0d46('0x1f')];var _0x1edd68;if(_0x179b7f>=_0x38e04a){_0x179b7f=_0x38e04a;_0x1edd68=0xc8;}else{_0x1edd68=0xce;}_0x5af874['status'](_0x1edd68);return _0x5af874[_0x0d46('0x21')]('Content-Range',_0x377371+'-'+_0x179b7f+'/'+_0x38e04a)[_0x0d46('0x1c')](_0x522e13);}return null;};}function patchUpdates(_0x100d21){return function(_0x37fa1a){try{jsonpatch[_0x0d46('0x22')](_0x37fa1a,_0x100d21,!![]);}catch(_0x2c0672){return BPromise[_0x0d46('0x23')](_0x2c0672);}return _0x37fa1a['save']();};}function saveUpdates(_0x38fd92,_0x1fb1e7){return function(_0x36122c){if(_0x36122c){return _0x36122c[_0x0d46('0x24')](_0x38fd92)[_0x0d46('0x25')](function(_0x381def){return _0x381def;});}return null;};}function removeEntity(_0x15b7d1,_0x35629e){return function(_0x5cc561){if(_0x5cc561){return _0x5cc561[_0x0d46('0x26')]()[_0x0d46('0x25')](function(){_0x15b7d1[_0x0d46('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59e9ee,_0x5329e8){return function(_0x5a92f5){if(!_0x5a92f5){_0x59e9ee[_0x0d46('0x27')](0x194);}return _0x5a92f5;};}function handleError(_0xbba9bb,_0x525ca6){_0x525ca6=_0x525ca6||0x1f4;return function(_0x3c9aa7){logger[_0x0d46('0x28')](_0x3c9aa7[_0x0d46('0x29')]);if(_0x3c9aa7[_0x0d46('0x2a')]){delete _0x3c9aa7['name'];}_0xbba9bb[_0x0d46('0x1b')](_0x525ca6)[_0x0d46('0x2b')](_0x3c9aa7);};}exports[_0x0d46('0x2c')]=function(_0x370b6f,_0x1b5b01){var _0x5eb535={},_0x1d47b9={},_0x4b6c0b={'count':0x0,'rows':[]};var _0xe0c4df=_[_0x0d46('0x2d')](db[_0x0d46('0x2e')][_0x0d46('0x2f')],function(_0x1f2c85){return{'name':_0x1f2c85[_0x0d46('0x30')],'type':_0x1f2c85[_0x0d46('0x31')][_0x0d46('0x32')]};});_0x1d47b9[_0x0d46('0x33')]=_['map'](_0xe0c4df,_0x0d46('0x2a'));_0x1d47b9[_0x0d46('0x34')]=_[_0x0d46('0x35')](_0x370b6f[_0x0d46('0x34')]);_0x1d47b9[_0x0d46('0x36')]=_[_0x0d46('0x37')](_0x1d47b9[_0x0d46('0x33')],_0x1d47b9[_0x0d46('0x34')]);_0x5eb535[_0x0d46('0x38')]=_[_0x0d46('0x37')](_0x1d47b9[_0x0d46('0x33')],qs[_0x0d46('0x39')](_0x370b6f[_0x0d46('0x34')][_0x0d46('0x39')]));_0x5eb535[_0x0d46('0x38')]=_0x5eb535['attributes']['length']?_0x5eb535['attributes']:_0x1d47b9[_0x0d46('0x33')];if(!_0x370b6f[_0x0d46('0x34')][_0x0d46('0x3a')]('nolimit')){_0x5eb535[_0x0d46('0x1f')]=qs[_0x0d46('0x1f')](_0x370b6f[_0x0d46('0x34')][_0x0d46('0x1f')]);_0x5eb535[_0x0d46('0x1d')]=qs[_0x0d46('0x1d')](_0x370b6f[_0x0d46('0x34')][_0x0d46('0x1d')]);}_0x5eb535[_0x0d46('0x3b')]=qs[_0x0d46('0x3c')](_0x370b6f['query'][_0x0d46('0x3c')]);_0x5eb535[_0x0d46('0x3d')]=qs[_0x0d46('0x36')](_['pick'](_0x370b6f['query'],_0x1d47b9[_0x0d46('0x36')]),_0xe0c4df);if(_0x370b6f[_0x0d46('0x34')][_0x0d46('0x3e')]){_0x5eb535['where']=_[_0x0d46('0x3f')](_0x5eb535['where'],{'$or':_[_0x0d46('0x2d')](_0xe0c4df,function(_0x364743){if(_0x364743[_0x0d46('0x31')]!==_0x0d46('0x40')){var _0x19d52e={};_0x19d52e[_0x364743[_0x0d46('0x2a')]]={'$like':'%'+_0x370b6f[_0x0d46('0x34')][_0x0d46('0x3e')]+'%'};return _0x19d52e;}})});}_0x5eb535=_[_0x0d46('0x3f')]({},_0x5eb535,_0x370b6f['options']);var _0x459223={'where':_0x5eb535['where']};return db[_0x0d46('0x2e')]['count'](_0x459223)[_0x0d46('0x25')](function(_0x2f2651){_0x4b6c0b[_0x0d46('0x20')]=_0x2f2651;if(_0x370b6f[_0x0d46('0x34')][_0x0d46('0x41')]){_0x5eb535['include']=[{'all':!![]}];}return db[_0x0d46('0x2e')][_0x0d46('0x42')](_0x5eb535);})[_0x0d46('0x25')](function(_0x8c5b8d){_0x4b6c0b[_0x0d46('0x43')]=_0x8c5b8d;return _0x4b6c0b;})[_0x0d46('0x25')](respondWithFilteredResult(_0x1b5b01,_0x5eb535))[_0x0d46('0x44')](handleError(_0x1b5b01,null));};exports[_0x0d46('0x45')]=function(_0x600477,_0x56c191){var _0x266ce3={'raw':![],'where':{'id':_0x600477[_0x0d46('0x46')]['id']}},_0x4fcf88={};_0x4fcf88['model']=_[_0x0d46('0x35')](db[_0x0d46('0x2e')][_0x0d46('0x2f')]);_0x4fcf88['query']=_[_0x0d46('0x35')](_0x600477[_0x0d46('0x34')]);_0x4fcf88[_0x0d46('0x36')]=_[_0x0d46('0x37')](_0x4fcf88[_0x0d46('0x33')],_0x4fcf88['query']);_0x266ce3[_0x0d46('0x38')]=_[_0x0d46('0x37')](_0x4fcf88[_0x0d46('0x33')],qs[_0x0d46('0x39')](_0x600477['query'][_0x0d46('0x39')]));_0x266ce3['attributes']=_0x266ce3['attributes'][_0x0d46('0x47')]?_0x266ce3[_0x0d46('0x38')]:_0x4fcf88[_0x0d46('0x33')];if(_0x600477[_0x0d46('0x34')][_0x0d46('0x41')]){_0x266ce3[_0x0d46('0x48')]=[{'all':!![]}];}_0x266ce3=_['merge']({},_0x266ce3,_0x600477[_0x0d46('0x49')]);return db[_0x0d46('0x2e')][_0x0d46('0x4a')](_0x266ce3)[_0x0d46('0x25')](handleEntityNotFound(_0x56c191,null))[_0x0d46('0x25')](respondWithResult(_0x56c191,null))[_0x0d46('0x44')](handleError(_0x56c191,null));};exports[_0x0d46('0x4b')]=function(_0x55c772,_0x267853){return db['DeskAccount']['create'](_0x55c772[_0x0d46('0x4c')],{})[_0x0d46('0x25')](respondWithResult(_0x267853,0xc9))['catch'](handleError(_0x267853,null));};exports[_0x0d46('0x24')]=function(_0x5d4c56,_0x3a86fc){if(_0x5d4c56[_0x0d46('0x4c')]['id']){delete _0x5d4c56[_0x0d46('0x4c')]['id'];}return db['DeskAccount'][_0x0d46('0x4a')]({'where':{'id':_0x5d4c56[_0x0d46('0x46')]['id']}})['then'](handleEntityNotFound(_0x3a86fc,null))[_0x0d46('0x25')](saveUpdates(_0x5d4c56[_0x0d46('0x4c')],null))['then'](respondWithResult(_0x3a86fc,null))[_0x0d46('0x44')](handleError(_0x3a86fc,null));};exports[_0x0d46('0x26')]=function(_0x400cb4,_0x3c1d41){return db['DeskAccount'][_0x0d46('0x4a')]({'where':{'id':_0x400cb4[_0x0d46('0x46')]['id']}})[_0x0d46('0x25')](handleEntityNotFound(_0x3c1d41,null))['then'](removeEntity(_0x3c1d41,null))[_0x0d46('0x44')](handleError(_0x3c1d41,null));};exports[_0x0d46('0x4d')]=function(_0x112e43,_0x412527,_0x44cb22){var _0x44661d={};var _0x3f8e18={};var _0x471b54;var _0x1b9ac3;return db[_0x0d46('0x2e')][_0x0d46('0x4e')]({'where':{'id':_0x112e43[_0x0d46('0x46')]['id']}})['then'](handleEntityNotFound(_0x412527,null))[_0x0d46('0x25')](function(_0x5946a0){if(_0x5946a0){_0x471b54=_0x5946a0;_0x3f8e18['model']=_[_0x0d46('0x35')](db[_0x0d46('0x4f')]['rawAttributes']);_0x3f8e18[_0x0d46('0x34')]=_[_0x0d46('0x35')](_0x112e43['query']);_0x3f8e18['filters']=_[_0x0d46('0x37')](_0x3f8e18[_0x0d46('0x33')],_0x3f8e18[_0x0d46('0x34')]);_0x44661d[_0x0d46('0x38')]=_['intersection'](_0x3f8e18['model'],qs[_0x0d46('0x39')](_0x112e43[_0x0d46('0x34')]['fields']));_0x44661d[_0x0d46('0x38')]=_0x44661d['attributes'][_0x0d46('0x47')]?_0x44661d['attributes']:_0x3f8e18[_0x0d46('0x33')];_0x44661d[_0x0d46('0x3b')]=qs[_0x0d46('0x3c')](_0x112e43[_0x0d46('0x34')][_0x0d46('0x3c')]);_0x44661d[_0x0d46('0x3d')]=qs[_0x0d46('0x36')](_['pick'](_0x112e43[_0x0d46('0x34')],_0x3f8e18[_0x0d46('0x36')]));if(_0x112e43[_0x0d46('0x34')][_0x0d46('0x3e')]){_0x44661d[_0x0d46('0x3d')]=_[_0x0d46('0x3f')](_0x44661d[_0x0d46('0x3d')],{'$or':_[_0x0d46('0x2d')](_0x44661d['attributes'],function(_0x21fc12){var _0x4c28d9={};_0x4c28d9[_0x21fc12]={'$like':'%'+_0x112e43[_0x0d46('0x34')][_0x0d46('0x3e')]+'%'};return _0x4c28d9;})});}_0x44661d=_[_0x0d46('0x3f')]({},_0x44661d,_0x112e43[_0x0d46('0x49')]);return _0x471b54[_0x0d46('0x4d')](_0x44661d);}})['then'](function(_0x2db44d){if(_0x2db44d){_0x1b9ac3=_0x2db44d[_0x0d46('0x47')];if(!_0x112e43[_0x0d46('0x34')][_0x0d46('0x3a')](_0x0d46('0x50'))){_0x44661d['limit']=qs[_0x0d46('0x1f')](_0x112e43[_0x0d46('0x34')]['limit']);_0x44661d[_0x0d46('0x1d')]=qs[_0x0d46('0x1d')](_0x112e43[_0x0d46('0x34')][_0x0d46('0x1d')]);}return _0x471b54[_0x0d46('0x4d')](_0x44661d);}})[_0x0d46('0x25')](function(_0x2ac23f){if(_0x2ac23f){return _0x2ac23f?{'count':_0x1b9ac3,'rows':_0x2ac23f}:null;}})[_0x0d46('0x25')](respondWithResult(_0x412527,null))[_0x0d46('0x44')](handleError(_0x412527,null));};exports[_0x0d46('0x51')]=function(_0x378b5e,_0x3a74ff,_0x4dcb9c){if(_0x378b5e[_0x0d46('0x4c')]['id']){delete _0x378b5e['body']['id'];}return db[_0x0d46('0x2e')][_0x0d46('0x4e')]({'where':{'id':_0x378b5e[_0x0d46('0x46')]['id']}})[_0x0d46('0x25')](handleEntityNotFound(_0x3a74ff,null))[_0x0d46('0x25')](function(_0xbab903){if(_0xbab903){_0x378b5e[_0x0d46('0x4c')][_0x0d46('0x52')]=_0xbab903['id'];_0x378b5e[_0x0d46('0x4c')]['Subjects']=integrations[_0x0d46('0x53')](_0x378b5e[_0x0d46('0x4c')][_0x0d46('0x54')],_0x378b5e[_0x0d46('0x4c')]['type']);_0x378b5e['body'][_0x0d46('0x55')]=integrations[_0x0d46('0x56')](_0x378b5e[_0x0d46('0x4c')]['channel'],_0x378b5e[_0x0d46('0x4c')][_0x0d46('0x31')]);return db[_0x0d46('0x4f')]['create'](_0x378b5e[_0x0d46('0x4c')],{'include':[{'model':db['DeskField'],'as':_0x0d46('0x57')},{'model':db[_0x0d46('0x58')],'as':_0x0d46('0x55')}]});}return null;})[_0x0d46('0x25')](respondWithResult(_0x3a74ff,null))[_0x0d46('0x44')](handleError(_0x3a74ff,null));};exports[_0x0d46('0x59')]=function(_0x5ce192,_0x2cc337,_0x1ed026){var _0x505051=[{'name':'priority','label':_0x0d46('0x5a'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x455ed3='';return db[_0x0d46('0x2e')]['findOne']({'where':{'id':_0x5ce192[_0x0d46('0x46')]['id']},'attributes':['id',_0x0d46('0x5b'),_0x0d46('0x5c'),_0x0d46('0x5d'),_0x0d46('0x5e'),_0x0d46('0x5f'),_0x0d46('0x60'),_0x0d46('0x61'),'tokenSecret']})['then'](handleEntityNotFound(_0x2cc337,null))[_0x0d46('0x25')](function(_0xbce9af){if(_0xbce9af){_0x455ed3=_0xbce9af[_0x0d46('0x5b')];var _0x3aa2cc=_0x455ed3[_0x0d46('0x62')](-0x1);if(_0x3aa2cc==='/'){_0x455ed3=_0x455ed3[_0x0d46('0x63')](0x0,_0x455ed3[_0x0d46('0x64')](_0x3aa2cc));}var _0xbb4a97={'method':_0x0d46('0x65'),'uri':util[_0x0d46('0x66')](_0x0d46('0x67'),_0x455ed3),'headers':{'Content-Type':_0x0d46('0x68'),'Accept':'application/json'},'json':!![]};if(_0xbce9af[_0x0d46('0x5c')]===_0x0d46('0x69')){_0xbb4a97[_0x0d46('0x6a')][_0x0d46('0x6b')]=util[_0x0d46('0x66')]('Basic\x20%s',new Buffer(util[_0x0d46('0x66')]('%s:%s',_0xbce9af[_0x0d46('0x5d')],_0xbce9af[_0x0d46('0x5e')]))['toString'](_0x0d46('0x6c')));}return rp(_0xbb4a97)['then'](function(_0x284ff0){return _0x505051[_0x0d46('0x6d')](_[_0x0d46('0x2d')](_0x284ff0[_0x0d46('0x6e')][_0x0d46('0x6f')],function(_0xc24300){return{'id':_0xc24300[_0x0d46('0x2a')],'name':_0xc24300[_0x0d46('0x2a')],'type':_0xc24300[_0x0d46('0x31')],'active':_0xc24300[_0x0d46('0x70')],'label':_0xc24300[_0x0d46('0x71')],'custom':!![]};}));});}})[_0x0d46('0x25')](function(_0x46447d){return{'count':_0x46447d[_0x0d46('0x47')],'rows':_0x46447d};})[_0x0d46('0x25')](respondWithResult(_0x2cc337,null))[_0x0d46('0x44')](function(_0x38c9af){var _0x4b06e3=_0x5ce192[_0x0d46('0x34')]['test']?0x1f4:_0x38c9af[_0x0d46('0x72')]||0x1f4;logger[_0x0d46('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0x0d46('0x59'),_0x4b06e3,JSON[_0x0d46('0x73')](_0x38c9af));delete _0x38c9af[_0x0d46('0x2a')];if(_0x4b06e3===0x191){_0x4b06e3=0x190;}_0x2cc337[_0x0d46('0x1b')](_0x4b06e3)[_0x0d46('0x2b')](_0x5ce192[_0x0d46('0x34')][_0x0d46('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x38c9af['statusCode']}:_0x38c9af);});};
\ No newline at end of file
index cff2bac..09dbe33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0a7=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','define','int_desk_accounts','lodash'];(function(_0x605439,_0x2bf4ca){var _0x4375ca=function(_0x5bbffd){while(--_0x5bbffd){_0x605439['push'](_0x605439['shift']());}};_0x4375ca(++_0x2bf4ca);}(_0xe0a7,0x12a));var _0x7e0a=function(_0x4173ef,_0x4e40f0){_0x4173ef=_0x4173ef-0x0;var _0x34d752=_0xe0a7[_0x4173ef];return _0x34d752;};'use strict';var _=require(_0x7e0a('0x0'));var util=require(_0x7e0a('0x1'));var logger=require(_0x7e0a('0x2'))(_0x7e0a('0x3'));var moment=require(_0x7e0a('0x4'));var BPromise=require(_0x7e0a('0x5'));var rp=require(_0x7e0a('0x6'));var fs=require('fs');var path=require(_0x7e0a('0x7'));var rimraf=require(_0x7e0a('0x8'));var config=require(_0x7e0a('0x9'));var attributes=require(_0x7e0a('0xa'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x321afd,_0x5e4947){return _0x321afd[_0x7e0a('0xb')]('DeskAccount',attributes,{'tableName':_0x7e0a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe7a3=['exports','define','int_desk_accounts','../../config/logger','api','moment','bluebird','path','rimraf','./intDeskAccount.attributes'];(function(_0x29c3f3,_0x17cc26){var _0x420c9e=function(_0x5c660c){while(--_0x5c660c){_0x29c3f3['push'](_0x29c3f3['shift']());}};_0x420c9e(++_0x17cc26);}(_0xe7a3,0x85));var _0x3e7a=function(_0x1e7431,_0x5ab70d){_0x1e7431=_0x1e7431-0x0;var _0x48823b=_0xe7a3[_0x1e7431];return _0x48823b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3e7a('0x0'))(_0x3e7a('0x1'));var moment=require(_0x3e7a('0x2'));var BPromise=require(_0x3e7a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3e7a('0x4'));var rimraf=require(_0x3e7a('0x5'));var config=require('../../config/environment');var attributes=require(_0x3e7a('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x3e7a('0x7')]=function(_0x1a6a0c,_0x3011fa){return _0x1a6a0c[_0x3e7a('0x8')]('DeskAccount',attributes,{'tableName':_0x3e7a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d260f0..d434056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5715=['http','request','then','info','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','DeskAccount,\x20%s,\x20%s','message','result','findAll','options','raw','where','limit','include','attributes','map','model','GetDeskAccount','ShowDeskAccount','DeskAccount','find','catch','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client'];(function(_0x59b777,_0x5e104b){var _0x58d54f=function(_0x44b797){while(--_0x44b797){_0x59b777['push'](_0x59b777['shift']());}};_0x58d54f(++_0x5e104b);}(_0x5715,0x14d));var _0x5571=function(_0x4843f9,_0x4af459){_0x4843f9=_0x4843f9-0x0;var _0x193c6a=_0x5715[_0x4843f9];return _0x193c6a;};'use strict';var _=require('lodash');var util=require(_0x5571('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5571('0x1'));var db=require(_0x5571('0x2'))['db'];var utils=require(_0x5571('0x3'));var logger=require(_0x5571('0x4'))('rpc');var config=require(_0x5571('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x5571('0x6')][_0x5571('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x406e86,_0x2f82bb,_0x229d78){return new BPromise(function(_0x5ed271,_0x4813b0){return client[_0x5571('0x8')](_0x406e86,_0x229d78)[_0x5571('0x9')](function(_0x407264){logger[_0x5571('0xa')]('DeskAccount,\x20%s,\x20%s',_0x2f82bb,_0x5571('0xb'));logger[_0x5571('0xc')](_0x5571('0xd'),_0x2f82bb,'request\x20sent',JSON[_0x5571('0xe')](_0x407264));if(_0x407264['error']){if(_0x407264['error'][_0x5571('0xf')]===0x1f4){logger[_0x5571('0x10')](_0x5571('0x11'),_0x2f82bb,_0x407264[_0x5571('0x10')]['message']);return _0x4813b0(_0x407264[_0x5571('0x10')][_0x5571('0x12')]);}logger[_0x5571('0x10')](_0x5571('0x11'),_0x2f82bb,_0x407264[_0x5571('0x10')]['message']);return _0x5ed271(_0x407264[_0x5571('0x10')][_0x5571('0x12')]);}else{logger[_0x5571('0xa')](_0x5571('0x11'),_0x2f82bb,_0x5571('0xb'));_0x5ed271(_0x407264[_0x5571('0x13')]['message']);}})['catch'](function(_0x29261a){logger[_0x5571('0x10')]('DeskAccount,\x20%s,\x20%s',_0x2f82bb,_0x29261a);_0x4813b0(_0x29261a);});});}exports['GetDeskAccount']=function(_0x30054b){var _0x27dcd8=this;return new Promise(function(_0x55f7e7,_0x5cfef7){return db['DeskAccount'][_0x5571('0x14')]({'raw':_0x30054b[_0x5571('0x15')]?_0x30054b[_0x5571('0x15')][_0x5571('0x16')]===undefined?!![]:![]:!![],'where':_0x30054b[_0x5571('0x15')]?_0x30054b[_0x5571('0x15')][_0x5571('0x17')]||null:null,'attributes':_0x30054b['options']?_0x30054b['options']['attributes']||null:null,'limit':_0x30054b['options']?_0x30054b[_0x5571('0x15')][_0x5571('0x18')]||null:null,'include':_0x30054b['options']?_0x30054b[_0x5571('0x15')][_0x5571('0x19')]?_['map'](_0x30054b[_0x5571('0x15')][_0x5571('0x19')],function(_0x3401ac){return{'model':db[_0x3401ac['model']],'as':_0x3401ac['as'],'attributes':_0x3401ac[_0x5571('0x1a')],'include':_0x3401ac['include']?_[_0x5571('0x1b')](_0x3401ac[_0x5571('0x19')],function(_0xf2ae56){return{'model':db[_0xf2ae56[_0x5571('0x1c')]],'as':_0xf2ae56['as'],'attributes':_0xf2ae56[_0x5571('0x1a')],'include':_0xf2ae56[_0x5571('0x19')]?_[_0x5571('0x1b')](_0xf2ae56[_0x5571('0x19')],function(_0x116f25){return{'model':db[_0x116f25[_0x5571('0x1c')]],'as':_0x116f25['as'],'attributes':_0x116f25['attributes']};}):[]};}):[]};}):[]:[]})[_0x5571('0x9')](function(_0x4927d9){logger['info']('GetDeskAccount',_0x30054b);logger[_0x5571('0xc')](_0x5571('0x1d'),_0x30054b,JSON[_0x5571('0xe')](_0x4927d9));_0x55f7e7(_0x4927d9);})['catch'](function(_0x1059ca){logger['error'](_0x5571('0x1d'),_0x1059ca[_0x5571('0x12')],_0x30054b);_0x5cfef7(_0x27dcd8[_0x5571('0x10')](0x1f4,_0x1059ca[_0x5571('0x12')]));});});};exports[_0x5571('0x1e')]=function(_0x5807f1){var _0x459584=this;return new Promise(function(_0x2fa612,_0x4c2de4){return db[_0x5571('0x1f')][_0x5571('0x20')]({'raw':_0x5807f1['options']?_0x5807f1[_0x5571('0x15')][_0x5571('0x16')]===undefined?!![]:![]:!![],'where':_0x5807f1[_0x5571('0x15')]?_0x5807f1[_0x5571('0x15')][_0x5571('0x17')]||null:null,'attributes':_0x5807f1['options']?_0x5807f1['options']['attributes']||null:null,'include':_0x5807f1[_0x5571('0x15')]?_0x5807f1[_0x5571('0x15')][_0x5571('0x19')]?_['map'](_0x5807f1['options']['include'],function(_0x3900e){return{'model':db[_0x3900e[_0x5571('0x1c')]],'as':_0x3900e['as'],'attributes':_0x3900e[_0x5571('0x1a')],'include':_0x3900e[_0x5571('0x19')]?_[_0x5571('0x1b')](_0x3900e[_0x5571('0x19')],function(_0x2f4608){return{'model':db[_0x2f4608[_0x5571('0x1c')]],'as':_0x2f4608['as'],'attributes':_0x2f4608['attributes'],'include':_0x2f4608[_0x5571('0x19')]?_[_0x5571('0x1b')](_0x2f4608['include'],function(_0x47a69c){return{'model':db[_0x47a69c['model']],'as':_0x47a69c['as'],'attributes':_0x47a69c[_0x5571('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5571('0x9')](function(_0x148a9d){logger[_0x5571('0xa')](_0x5571('0x1e'),_0x5807f1);logger['debug'](_0x5571('0x1e'),_0x5807f1,JSON['stringify'](_0x148a9d));_0x2fa612(_0x148a9d);})[_0x5571('0x21')](function(_0x22cb4f){logger['error']('ShowDeskAccount',_0x22cb4f[_0x5571('0x12')],_0x5807f1);_0x4c2de4(_0x459584[_0x5571('0x10')](0x1f4,_0x22cb4f[_0x5571('0x12')]));});});};
\ No newline at end of file
+var _0x3ee6=['GetDeskAccount','ShowDeskAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','DeskAccount','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x55b7a4,_0x10998f){var _0x2db534=function(_0x2fbd62){while(--_0x2fbd62){_0x55b7a4['push'](_0x55b7a4['shift']());}};_0x2db534(++_0x10998f);}(_0x3ee6,0xfe));var _0x63ee=function(_0x1e5953,_0x44a0e1){_0x1e5953=_0x1e5953-0x0;var _0x46f9eb=_0x3ee6[_0x1e5953];return _0x46f9eb;};'use strict';var _=require(_0x63ee('0x0'));var util=require(_0x63ee('0x1'));var moment=require(_0x63ee('0x2'));var BPromise=require(_0x63ee('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x63ee('0x4'));var db=require(_0x63ee('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x63ee('0x6'));var config=require(_0x63ee('0x7'));var jayson=require(_0x63ee('0x8'));var client=jayson[_0x63ee('0x9')][_0x63ee('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x579af9,_0x34b8aa,_0x62e7ee){return new BPromise(function(_0x1708fe,_0x25660f){return client[_0x63ee('0xb')](_0x579af9,_0x62e7ee)[_0x63ee('0xc')](function(_0xefefa3){logger[_0x63ee('0xd')](_0x63ee('0xe'),_0x34b8aa,_0x63ee('0xf'));logger[_0x63ee('0x10')](_0x63ee('0x11'),_0x34b8aa,'request\x20sent',JSON[_0x63ee('0x12')](_0xefefa3));if(_0xefefa3['error']){if(_0xefefa3['error'][_0x63ee('0x13')]===0x1f4){logger[_0x63ee('0x14')]('DeskAccount,\x20%s,\x20%s',_0x34b8aa,_0xefefa3[_0x63ee('0x14')][_0x63ee('0x15')]);return _0x25660f(_0xefefa3['error'][_0x63ee('0x15')]);}logger['error']('DeskAccount,\x20%s,\x20%s',_0x34b8aa,_0xefefa3[_0x63ee('0x14')][_0x63ee('0x15')]);return _0x1708fe(_0xefefa3['error']['message']);}else{logger[_0x63ee('0xd')](_0x63ee('0xe'),_0x34b8aa,_0x63ee('0xf'));_0x1708fe(_0xefefa3[_0x63ee('0x16')][_0x63ee('0x15')]);}})[_0x63ee('0x17')](function(_0x215412){logger[_0x63ee('0x14')](_0x63ee('0xe'),_0x34b8aa,_0x215412);_0x25660f(_0x215412);});});}exports['GetDeskAccount']=function(_0xa1d282){var _0x11e1b4=this;return new Promise(function(_0x57796c,_0x26a8c3){return db[_0x63ee('0x18')][_0x63ee('0x19')]({'raw':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1b')]===undefined?!![]:![]:!![],'where':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1c')]||null:null,'attributes':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1d')]||null:null,'limit':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1e')]||null:null,'include':_0xa1d282['options']?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1f')]?_[_0x63ee('0x20')](_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1f')],function(_0x41529b){return{'model':db[_0x41529b[_0x63ee('0x21')]],'as':_0x41529b['as'],'attributes':_0x41529b['attributes'],'include':_0x41529b[_0x63ee('0x1f')]?_[_0x63ee('0x20')](_0x41529b[_0x63ee('0x1f')],function(_0xdea5d9){return{'model':db[_0xdea5d9['model']],'as':_0xdea5d9['as'],'attributes':_0xdea5d9['attributes'],'include':_0xdea5d9[_0x63ee('0x1f')]?_['map'](_0xdea5d9['include'],function(_0x679c90){return{'model':db[_0x679c90[_0x63ee('0x21')]],'as':_0x679c90['as'],'attributes':_0x679c90[_0x63ee('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x63ee('0xc')](function(_0x2b40ec){logger[_0x63ee('0xd')]('GetDeskAccount',_0xa1d282);logger['debug'](_0x63ee('0x22'),_0xa1d282,JSON[_0x63ee('0x12')](_0x2b40ec));_0x57796c(_0x2b40ec);})[_0x63ee('0x17')](function(_0x43c94f){logger[_0x63ee('0x14')]('GetDeskAccount',_0x43c94f[_0x63ee('0x15')],_0xa1d282);_0x26a8c3(_0x11e1b4[_0x63ee('0x14')](0x1f4,_0x43c94f[_0x63ee('0x15')]));});});};exports['ShowDeskAccount']=function(_0x2cd55b){var _0x333d5c=this;return new Promise(function(_0x7d1058,_0x4bfc7c){return db[_0x63ee('0x18')]['find']({'raw':_0x2cd55b[_0x63ee('0x1a')]?_0x2cd55b[_0x63ee('0x1a')][_0x63ee('0x1b')]===undefined?!![]:![]:!![],'where':_0x2cd55b['options']?_0x2cd55b[_0x63ee('0x1a')][_0x63ee('0x1c')]||null:null,'attributes':_0x2cd55b[_0x63ee('0x1a')]?_0x2cd55b[_0x63ee('0x1a')][_0x63ee('0x1d')]||null:null,'include':_0x2cd55b[_0x63ee('0x1a')]?_0x2cd55b['options']['include']?_[_0x63ee('0x20')](_0x2cd55b['options'][_0x63ee('0x1f')],function(_0x3c63a8){return{'model':db[_0x3c63a8[_0x63ee('0x21')]],'as':_0x3c63a8['as'],'attributes':_0x3c63a8[_0x63ee('0x1d')],'include':_0x3c63a8[_0x63ee('0x1f')]?_['map'](_0x3c63a8[_0x63ee('0x1f')],function(_0x24aee6){return{'model':db[_0x24aee6[_0x63ee('0x21')]],'as':_0x24aee6['as'],'attributes':_0x24aee6['attributes'],'include':_0x24aee6[_0x63ee('0x1f')]?_['map'](_0x24aee6[_0x63ee('0x1f')],function(_0x5ebb4d){return{'model':db[_0x5ebb4d['model']],'as':_0x5ebb4d['as'],'attributes':_0x5ebb4d[_0x63ee('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d668a){logger[_0x63ee('0xd')]('ShowDeskAccount',_0x2cd55b);logger[_0x63ee('0x10')](_0x63ee('0x23'),_0x2cd55b,JSON[_0x63ee('0x12')](_0x2d668a));_0x7d1058(_0x2d668a);})[_0x63ee('0x17')](function(_0x4d9fb1){logger[_0x63ee('0x14')](_0x63ee('0x23'),_0x4d9fb1['message'],_0x2cd55b);_0x4bfc7c(_0x333d5c[_0x63ee('0x14')](0x1f4,_0x4d9fb1[_0x63ee('0x15')]));});});};
\ No newline at end of file
index 3ed04c6..d9b0a73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x55e83f,_0x3a8b52){var _0x4df82c=function(_0x185f64){while(--_0x185f64){_0x55e83f['push'](_0x55e83f['shift']());}};_0x4df82c(++_0x3a8b52);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
+var _0xedd9=['getTags','post','create','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x3b0657,_0x860d88){var _0x510ea3=function(_0x451ac3){while(--_0x451ac3){_0x3b0657['push'](_0x3b0657['shift']());}};_0x510ea3(++_0x860d88);}(_0xedd9,0xfc));var _0x9edd=function(_0xbed58e,_0x314ec7){_0xbed58e=_0xbed58e-0x0;var _0x39e140=_0xedd9[_0xbed58e];return _0x39e140;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['getFields']);router[_0x9edd('0x9')]('/:id/subjects',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['get'](_0x9edd('0x10'),auth[_0x9edd('0xa')](),controller['getDescriptions']);router[_0x9edd('0x9')](_0x9edd('0x11'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')]('/:id/tags',auth[_0x9edd('0xa')](),controller[_0x9edd('0x15')]);router[_0x9edd('0x16')](_0x9edd('0xc'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x17')]);router[_0x9edd('0x18')](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x19')]);module[_0x9edd('0x1a')]=router;
\ No newline at end of file
index 4dbf620..e01db97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x070b=['exports','STRING','sequelize'];(function(_0x14c0e0,_0x3ad847){var _0x4cbd72=function(_0x401e2e){while(--_0x401e2e){_0x14c0e0['push'](_0x14c0e0['shift']());}};_0x4cbd72(++_0x3ad847);}(_0x070b,0x80));var _0xb070=function(_0x2e9df9,_0x2b7f59){_0x2e9df9=_0x2e9df9-0x0;var _0x17dd96=_0x070b[_0x2e9df9];return _0x17dd96;};'use strict';var Sequelize=require(_0xb070('0x0'));module[_0xb070('0x1')]={'name':{'type':Sequelize[_0xb070('0x2')]},'description':{'type':Sequelize[_0xb070('0x2')]}};
\ No newline at end of file
+var _0xafd6=['sequelize','STRING'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0xafd6,0x88));var _0x6afd=function(_0x132979,_0x3856ef){_0x132979=_0x132979-0x0;var _0x5c89f2=_0xafd6[_0x132979];return _0x5c89f2;};'use strict';var Sequelize=require(_0x6afd('0x0'));module['exports']={'name':{'type':Sequelize[_0x6afd('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3ee9735..db111dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c23=['send','index','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','getFields','findOne','hasOwnProperty','getSubjects','DeskField','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name'];(function(_0x5a6280,_0x3d15ae){var _0x187e44=function(_0x51a781){while(--_0x51a781){_0x5a6280['push'](_0x5a6280['shift']());}};_0x187e44(++_0x3d15ae);}(_0x7c23,0x1d2));var _0x37c2=function(_0x418734,_0x445660){_0x418734=_0x418734-0x0;var _0x2d9b4e=_0x7c23[_0x418734];return _0x2d9b4e;};'use strict';var emlformat=require(_0x37c2('0x0'));var rimraf=require(_0x37c2('0x1'));var zipdir=require(_0x37c2('0x2'));var jsonpatch=require(_0x37c2('0x3'));var rp=require(_0x37c2('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x37c2('0x5'));var util=require(_0x37c2('0x6'));var path=require(_0x37c2('0x7'));var sox=require(_0x37c2('0x8'));var csv=require(_0x37c2('0x9'));var ejs=require(_0x37c2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x37c2('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x37c2('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x37c2('0x9'));var querystring=require(_0x37c2('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x37c2('0xe'));var qs=require(_0x37c2('0xf'));var as=require(_0x37c2('0x10'));var hardwareService=require(_0x37c2('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x37c2('0x12'));var config=require(_0x37c2('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x37c2('0x14'))['db'];function respondWithStatusCode(_0x29f6fd,_0x125337){_0x125337=_0x125337||0xcc;return function(_0x37e580){if(_0x37e580){return _0x29f6fd['sendStatus'](_0x125337);}return _0x29f6fd[_0x37c2('0x15')](_0x125337)[_0x37c2('0x16')]();};}function respondWithResult(_0x1ff373,_0x458988){_0x458988=_0x458988||0xc8;return function(_0x422ba3){if(_0x422ba3){return _0x1ff373[_0x37c2('0x15')](_0x458988)[_0x37c2('0x17')](_0x422ba3);}};}function respondWithFilteredResult(_0x499f9b,_0x53235e){return function(_0x48e739){if(_0x48e739){var _0xd379b2=typeof _0x53235e[_0x37c2('0x18')]===_0x37c2('0x19')&&typeof _0x53235e['limit']===_0x37c2('0x19');var _0x2d5f4d=_0x48e739[_0x37c2('0x1a')];var _0x7a6108=_0xd379b2?0x0:_0x53235e[_0x37c2('0x18')];var _0x511413=_0xd379b2?_0x48e739[_0x37c2('0x1a')]:_0x53235e[_0x37c2('0x18')]+_0x53235e['limit'];var _0x1d9955;if(_0x511413>=_0x2d5f4d){_0x511413=_0x2d5f4d;_0x1d9955=0xc8;}else{_0x1d9955=0xce;}_0x499f9b[_0x37c2('0x15')](_0x1d9955);return _0x499f9b['set'](_0x37c2('0x1b'),_0x7a6108+'-'+_0x511413+'/'+_0x2d5f4d)['json'](_0x48e739);}return null;};}function patchUpdates(_0x430f46){return function(_0x4d5388){try{jsonpatch[_0x37c2('0x1c')](_0x4d5388,_0x430f46,!![]);}catch(_0xf36c3d){return BPromise[_0x37c2('0x1d')](_0xf36c3d);}return _0x4d5388[_0x37c2('0x1e')]();};}function saveUpdates(_0x31d204,_0x1dcc4b){return function(_0x59455e){if(_0x59455e){return _0x59455e[_0x37c2('0x1f')](_0x31d204)[_0x37c2('0x20')](function(_0x1a51a5){return _0x1a51a5;});}return null;};}function removeEntity(_0x4a70f2,_0x4c87cc){return function(_0x105d2f){if(_0x105d2f){return _0x105d2f[_0x37c2('0x21')]()[_0x37c2('0x20')](function(){_0x4a70f2[_0x37c2('0x15')](0xcc)[_0x37c2('0x16')]();});}};}function handleEntityNotFound(_0x4bd824,_0x32a812){return function(_0x1d1eb3){if(!_0x1d1eb3){_0x4bd824[_0x37c2('0x22')](0x194);}return _0x1d1eb3;};}function handleError(_0x546797,_0x1faa01){_0x1faa01=_0x1faa01||0x1f4;return function(_0x14a520){logger[_0x37c2('0x23')](_0x14a520[_0x37c2('0x24')]);if(_0x14a520[_0x37c2('0x25')]){delete _0x14a520[_0x37c2('0x25')];}_0x546797[_0x37c2('0x15')](_0x1faa01)[_0x37c2('0x26')](_0x14a520);};}exports[_0x37c2('0x27')]=function(_0x1cefa3,_0x5786ea){var _0x17eaa3={},_0xbfb7a6={},_0x404b39={'count':0x0,'rows':[]};var _0x1335f8=_[_0x37c2('0x28')](db[_0x37c2('0x29')][_0x37c2('0x2a')],function(_0x317ced){return{'name':_0x317ced[_0x37c2('0x2b')],'type':_0x317ced[_0x37c2('0x2c')][_0x37c2('0x2d')]};});_0xbfb7a6[_0x37c2('0x2e')]=_[_0x37c2('0x28')](_0x1335f8,_0x37c2('0x25'));_0xbfb7a6[_0x37c2('0x2f')]=_[_0x37c2('0x30')](_0x1cefa3['query']);_0xbfb7a6[_0x37c2('0x31')]=_[_0x37c2('0x32')](_0xbfb7a6[_0x37c2('0x2e')],_0xbfb7a6['query']);_0x17eaa3[_0x37c2('0x33')]=_[_0x37c2('0x32')](_0xbfb7a6[_0x37c2('0x2e')],qs['fields'](_0x1cefa3[_0x37c2('0x2f')][_0x37c2('0x34')]));_0x17eaa3[_0x37c2('0x33')]=_0x17eaa3[_0x37c2('0x33')][_0x37c2('0x35')]?_0x17eaa3[_0x37c2('0x33')]:_0xbfb7a6[_0x37c2('0x2e')];if(!_0x1cefa3[_0x37c2('0x2f')]['hasOwnProperty'](_0x37c2('0x36'))){_0x17eaa3['limit']=qs[_0x37c2('0x37')](_0x1cefa3['query'][_0x37c2('0x37')]);_0x17eaa3[_0x37c2('0x18')]=qs[_0x37c2('0x18')](_0x1cefa3[_0x37c2('0x2f')][_0x37c2('0x18')]);}_0x17eaa3[_0x37c2('0x38')]=qs['sort'](_0x1cefa3[_0x37c2('0x2f')][_0x37c2('0x39')]);_0x17eaa3[_0x37c2('0x3a')]=qs[_0x37c2('0x31')](_[_0x37c2('0x3b')](_0x1cefa3['query'],_0xbfb7a6[_0x37c2('0x31')]),_0x1335f8);if(_0x1cefa3['query'][_0x37c2('0x3c')]){_0x17eaa3['where']=_['merge'](_0x17eaa3['where'],{'$or':_['map'](_0x1335f8,function(_0x2071d4){if(_0x2071d4[_0x37c2('0x2c')]!==_0x37c2('0x3d')){var _0xa66a4={};_0xa66a4[_0x2071d4['name']]={'$like':'%'+_0x1cefa3[_0x37c2('0x2f')][_0x37c2('0x3c')]+'%'};return _0xa66a4;}})});}_0x17eaa3=_[_0x37c2('0x3e')]({},_0x17eaa3,_0x1cefa3[_0x37c2('0x3f')]);var _0x54c0e5={'where':_0x17eaa3[_0x37c2('0x3a')]};return db[_0x37c2('0x29')][_0x37c2('0x1a')](_0x54c0e5)[_0x37c2('0x20')](function(_0xbe942c){_0x404b39[_0x37c2('0x1a')]=_0xbe942c;if(_0x1cefa3[_0x37c2('0x2f')][_0x37c2('0x40')]){_0x17eaa3[_0x37c2('0x41')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x37c2('0x42')](_0x17eaa3);})[_0x37c2('0x20')](function(_0x562906){_0x404b39[_0x37c2('0x43')]=_0x562906;return _0x404b39;})['then'](respondWithFilteredResult(_0x5786ea,_0x17eaa3))[_0x37c2('0x44')](handleError(_0x5786ea,null));};exports[_0x37c2('0x45')]=function(_0x158c9b,_0x3a2655){var _0x4ccfc9={'raw':![],'where':{'id':_0x158c9b['params']['id']}},_0x28099c={};_0x28099c[_0x37c2('0x2e')]=_[_0x37c2('0x30')](db[_0x37c2('0x29')]['rawAttributes']);_0x28099c['query']=_['keys'](_0x158c9b[_0x37c2('0x2f')]);_0x28099c[_0x37c2('0x31')]=_[_0x37c2('0x32')](_0x28099c[_0x37c2('0x2e')],_0x28099c['query']);_0x4ccfc9[_0x37c2('0x33')]=_[_0x37c2('0x32')](_0x28099c[_0x37c2('0x2e')],qs[_0x37c2('0x34')](_0x158c9b[_0x37c2('0x2f')]['fields']));_0x4ccfc9['attributes']=_0x4ccfc9[_0x37c2('0x33')]['length']?_0x4ccfc9[_0x37c2('0x33')]:_0x28099c[_0x37c2('0x2e')];if(_0x158c9b[_0x37c2('0x2f')][_0x37c2('0x40')]){_0x4ccfc9[_0x37c2('0x41')]=[{'all':!![]}];}_0x4ccfc9=_['merge']({},_0x4ccfc9,_0x158c9b[_0x37c2('0x3f')]);return db[_0x37c2('0x29')][_0x37c2('0x46')](_0x4ccfc9)['then'](handleEntityNotFound(_0x3a2655,null))['then'](respondWithResult(_0x3a2655,null))[_0x37c2('0x44')](handleError(_0x3a2655,null));};exports[_0x37c2('0x47')]=function(_0x63c0fe,_0x31eb1e){return db[_0x37c2('0x29')][_0x37c2('0x47')](_0x63c0fe['body'],{})['then'](respondWithResult(_0x31eb1e,0xc9))[_0x37c2('0x44')](handleError(_0x31eb1e,null));};exports[_0x37c2('0x1f')]=function(_0xf45662,_0x2c7c51){if(_0xf45662['body']['id']){delete _0xf45662[_0x37c2('0x48')]['id'];}return db[_0x37c2('0x29')][_0x37c2('0x46')]({'where':{'id':_0xf45662['params']['id']}})[_0x37c2('0x20')](handleEntityNotFound(_0x2c7c51,null))['then'](saveUpdates(_0xf45662[_0x37c2('0x48')],null))[_0x37c2('0x20')](respondWithResult(_0x2c7c51,null))['catch'](handleError(_0x2c7c51,null));};exports[_0x37c2('0x21')]=function(_0x1fd9d8,_0x26afb7){return db['DeskConfiguration']['find']({'where':{'id':_0x1fd9d8[_0x37c2('0x49')]['id']}})[_0x37c2('0x20')](handleEntityNotFound(_0x26afb7,null))[_0x37c2('0x20')](removeEntity(_0x26afb7,null))[_0x37c2('0x44')](handleError(_0x26afb7,null));};exports[_0x37c2('0x4a')]=function(_0x3af707,_0x36166a,_0x179e21){var _0x357830={};var _0x4e7531={};var _0x233137;var _0x450085;return db[_0x37c2('0x29')][_0x37c2('0x4b')]({'where':{'id':_0x3af707[_0x37c2('0x49')]['id']}})[_0x37c2('0x20')](handleEntityNotFound(_0x36166a,null))[_0x37c2('0x20')](function(_0x2d1ac3){if(_0x2d1ac3){_0x233137=_0x2d1ac3;_0x4e7531[_0x37c2('0x2e')]=_[_0x37c2('0x30')](db['DeskField']['rawAttributes']);_0x4e7531[_0x37c2('0x2f')]=_[_0x37c2('0x30')](_0x3af707['query']);_0x4e7531[_0x37c2('0x31')]=_['intersection'](_0x4e7531[_0x37c2('0x2e')],_0x4e7531[_0x37c2('0x2f')]);_0x357830[_0x37c2('0x33')]=_[_0x37c2('0x32')](_0x4e7531[_0x37c2('0x2e')],qs[_0x37c2('0x34')](_0x3af707[_0x37c2('0x2f')][_0x37c2('0x34')]));_0x357830[_0x37c2('0x33')]=_0x357830[_0x37c2('0x33')][_0x37c2('0x35')]?_0x357830[_0x37c2('0x33')]:_0x4e7531[_0x37c2('0x2e')];_0x357830[_0x37c2('0x38')]=qs[_0x37c2('0x39')](_0x3af707['query'][_0x37c2('0x39')]);_0x357830['where']=qs[_0x37c2('0x31')](_[_0x37c2('0x3b')](_0x3af707[_0x37c2('0x2f')],_0x4e7531[_0x37c2('0x31')]));if(_0x3af707[_0x37c2('0x2f')][_0x37c2('0x3c')]){_0x357830[_0x37c2('0x3a')]=_[_0x37c2('0x3e')](_0x357830[_0x37c2('0x3a')],{'$or':_[_0x37c2('0x28')](_0x357830[_0x37c2('0x33')],function(_0x217849){var _0x430382={};_0x430382[_0x217849]={'$like':'%'+_0x3af707[_0x37c2('0x2f')][_0x37c2('0x3c')]+'%'};return _0x430382;})});}_0x357830=_[_0x37c2('0x3e')]({},_0x357830,_0x3af707['options']);return _0x233137['getFields'](_0x357830);}})[_0x37c2('0x20')](function(_0x2db278){if(_0x2db278){_0x450085=_0x2db278[_0x37c2('0x35')];if(!_0x3af707[_0x37c2('0x2f')][_0x37c2('0x4c')](_0x37c2('0x36'))){_0x357830[_0x37c2('0x37')]=qs[_0x37c2('0x37')](_0x3af707[_0x37c2('0x2f')][_0x37c2('0x37')]);_0x357830[_0x37c2('0x18')]=qs[_0x37c2('0x18')](_0x3af707[_0x37c2('0x2f')][_0x37c2('0x18')]);}return _0x233137[_0x37c2('0x4a')](_0x357830);}})[_0x37c2('0x20')](function(_0x9f3435){if(_0x9f3435){return _0x9f3435?{'count':_0x450085,'rows':_0x9f3435}:null;}})['then'](respondWithResult(_0x36166a,null))['catch'](handleError(_0x36166a,null));};exports[_0x37c2('0x4d')]=function(_0x1f99f6,_0x43454c,_0x5cdd77){var _0x2ea467={};var _0x1c9942={};var _0xbfedc6;var _0x455daa;return db[_0x37c2('0x29')]['findOne']({'where':{'id':_0x1f99f6[_0x37c2('0x49')]['id']}})[_0x37c2('0x20')](handleEntityNotFound(_0x43454c,null))[_0x37c2('0x20')](function(_0x29a704){if(_0x29a704){_0xbfedc6=_0x29a704;_0x1c9942[_0x37c2('0x2e')]=_['keys'](db[_0x37c2('0x4e')][_0x37c2('0x2a')]);_0x1c9942[_0x37c2('0x2f')]=_[_0x37c2('0x30')](_0x1f99f6[_0x37c2('0x2f')]);_0x1c9942[_0x37c2('0x31')]=_[_0x37c2('0x32')](_0x1c9942['model'],_0x1c9942['query']);_0x2ea467['attributes']=_[_0x37c2('0x32')](_0x1c9942['model'],qs[_0x37c2('0x34')](_0x1f99f6[_0x37c2('0x2f')][_0x37c2('0x34')]));_0x2ea467[_0x37c2('0x33')]=_0x2ea467[_0x37c2('0x33')][_0x37c2('0x35')]?_0x2ea467[_0x37c2('0x33')]:_0x1c9942[_0x37c2('0x2e')];_0x2ea467[_0x37c2('0x38')]=qs[_0x37c2('0x39')](_0x1f99f6[_0x37c2('0x2f')]['sort']);_0x2ea467[_0x37c2('0x3a')]=qs[_0x37c2('0x31')](_[_0x37c2('0x3b')](_0x1f99f6[_0x37c2('0x2f')],_0x1c9942['filters']));if(_0x1f99f6[_0x37c2('0x2f')]['filter']){_0x2ea467[_0x37c2('0x3a')]=_[_0x37c2('0x3e')](_0x2ea467[_0x37c2('0x3a')],{'$or':_[_0x37c2('0x28')](_0x2ea467[_0x37c2('0x33')],function(_0x3200ff){var _0x512853={};_0x512853[_0x3200ff]={'$like':'%'+_0x1f99f6[_0x37c2('0x2f')][_0x37c2('0x3c')]+'%'};return _0x512853;})});}_0x2ea467=_[_0x37c2('0x3e')]({},_0x2ea467,_0x1f99f6[_0x37c2('0x3f')]);return _0xbfedc6[_0x37c2('0x4d')](_0x2ea467);}})[_0x37c2('0x20')](function(_0x139c25){if(_0x139c25){_0x455daa=_0x139c25[_0x37c2('0x35')];if(!_0x1f99f6[_0x37c2('0x2f')][_0x37c2('0x4c')](_0x37c2('0x36'))){_0x2ea467['limit']=qs[_0x37c2('0x37')](_0x1f99f6[_0x37c2('0x2f')][_0x37c2('0x37')]);_0x2ea467[_0x37c2('0x18')]=qs['offset'](_0x1f99f6[_0x37c2('0x2f')][_0x37c2('0x18')]);}return _0xbfedc6[_0x37c2('0x4d')](_0x2ea467);}})[_0x37c2('0x20')](function(_0x3b1b9e){if(_0x3b1b9e){return _0x3b1b9e?{'count':_0x455daa,'rows':_0x3b1b9e}:null;}})[_0x37c2('0x20')](respondWithResult(_0x43454c,null))['catch'](handleError(_0x43454c,null));};exports[_0x37c2('0x4f')]=function(_0x6f3c2d,_0x25dc07,_0x275bb7){var _0xf313bf={};var _0x10eb82={};var _0x4e28df;var _0x702a76;return db['DeskConfiguration']['findOne']({'where':{'id':_0x6f3c2d[_0x37c2('0x49')]['id']}})[_0x37c2('0x20')](handleEntityNotFound(_0x25dc07,null))[_0x37c2('0x20')](function(_0x28f4ed){if(_0x28f4ed){_0x4e28df=_0x28f4ed;_0x10eb82[_0x37c2('0x2e')]=_['keys'](db[_0x37c2('0x4e')]['rawAttributes']);_0x10eb82[_0x37c2('0x2f')]=_[_0x37c2('0x30')](_0x6f3c2d['query']);_0x10eb82[_0x37c2('0x31')]=_['intersection'](_0x10eb82[_0x37c2('0x2e')],_0x10eb82[_0x37c2('0x2f')]);_0xf313bf[_0x37c2('0x33')]=_[_0x37c2('0x32')](_0x10eb82[_0x37c2('0x2e')],qs[_0x37c2('0x34')](_0x6f3c2d[_0x37c2('0x2f')][_0x37c2('0x34')]));_0xf313bf['attributes']=_0xf313bf['attributes'][_0x37c2('0x35')]?_0xf313bf[_0x37c2('0x33')]:_0x10eb82[_0x37c2('0x2e')];_0xf313bf[_0x37c2('0x38')]=qs[_0x37c2('0x39')](_0x6f3c2d[_0x37c2('0x2f')]['sort']);_0xf313bf[_0x37c2('0x3a')]=qs['filters'](_[_0x37c2('0x3b')](_0x6f3c2d[_0x37c2('0x2f')],_0x10eb82[_0x37c2('0x31')]));if(_0x6f3c2d[_0x37c2('0x2f')][_0x37c2('0x3c')]){_0xf313bf[_0x37c2('0x3a')]=_[_0x37c2('0x3e')](_0xf313bf[_0x37c2('0x3a')],{'$or':_['map'](_0xf313bf[_0x37c2('0x33')],function(_0x583023){var _0x1eea50={};_0x1eea50[_0x583023]={'$like':'%'+_0x6f3c2d['query']['filter']+'%'};return _0x1eea50;})});}_0xf313bf=_[_0x37c2('0x3e')]({},_0xf313bf,_0x6f3c2d[_0x37c2('0x3f')]);return _0x4e28df['getDescriptions'](_0xf313bf);}})[_0x37c2('0x20')](function(_0x2dc038){if(_0x2dc038){_0x702a76=_0x2dc038[_0x37c2('0x35')];if(!_0x6f3c2d['query'][_0x37c2('0x4c')](_0x37c2('0x36'))){_0xf313bf['limit']=qs[_0x37c2('0x37')](_0x6f3c2d[_0x37c2('0x2f')][_0x37c2('0x37')]);_0xf313bf['offset']=qs[_0x37c2('0x18')](_0x6f3c2d[_0x37c2('0x2f')][_0x37c2('0x18')]);}return _0x4e28df[_0x37c2('0x4f')](_0xf313bf);}})[_0x37c2('0x20')](function(_0x508b74){if(_0x508b74){return _0x508b74?{'count':_0x702a76,'rows':_0x508b74}:null;}})[_0x37c2('0x20')](respondWithResult(_0x25dc07,null))[_0x37c2('0x44')](handleError(_0x25dc07,null));};exports['getTags']=function(_0x5ad2cc,_0x4b7d6f,_0x46f7b1){var _0x29abf4={};var _0x57e7b2={};var _0x2564f6;var _0x2cafe1;return db[_0x37c2('0x29')][_0x37c2('0x4b')]({'where':{'id':_0x5ad2cc[_0x37c2('0x49')]['id']}})[_0x37c2('0x20')](handleEntityNotFound(_0x4b7d6f,null))[_0x37c2('0x20')](function(_0x3dba96){if(_0x3dba96){_0x2564f6=_0x3dba96;_0x57e7b2[_0x37c2('0x2e')]=_[_0x37c2('0x30')](db[_0x37c2('0x50')][_0x37c2('0x2a')]);_0x57e7b2[_0x37c2('0x2f')]=_[_0x37c2('0x30')](_0x5ad2cc[_0x37c2('0x2f')]);_0x57e7b2[_0x37c2('0x31')]=_[_0x37c2('0x32')](_0x57e7b2['model'],_0x57e7b2[_0x37c2('0x2f')]);_0x29abf4[_0x37c2('0x33')]=_[_0x37c2('0x32')](_0x57e7b2[_0x37c2('0x2e')],qs[_0x37c2('0x34')](_0x5ad2cc[_0x37c2('0x2f')][_0x37c2('0x34')]));_0x29abf4[_0x37c2('0x33')]=_0x29abf4[_0x37c2('0x33')]['length']?_0x29abf4[_0x37c2('0x33')]:_0x57e7b2[_0x37c2('0x2e')];_0x29abf4[_0x37c2('0x38')]=qs[_0x37c2('0x39')](_0x5ad2cc[_0x37c2('0x2f')][_0x37c2('0x39')]);_0x29abf4['where']=qs[_0x37c2('0x31')](_[_0x37c2('0x3b')](_0x5ad2cc[_0x37c2('0x2f')],_0x57e7b2[_0x37c2('0x31')]));if(_0x5ad2cc[_0x37c2('0x2f')]['filter']){_0x29abf4[_0x37c2('0x3a')]=_[_0x37c2('0x3e')](_0x29abf4[_0x37c2('0x3a')],{'$or':_[_0x37c2('0x28')](_0x29abf4['attributes'],function(_0x2e2c84){var _0x492557={};_0x492557[_0x2e2c84]={'$like':'%'+_0x5ad2cc[_0x37c2('0x2f')][_0x37c2('0x3c')]+'%'};return _0x492557;})});}_0x29abf4=_[_0x37c2('0x3e')]({},_0x29abf4,_0x5ad2cc[_0x37c2('0x3f')]);return _0x2564f6[_0x37c2('0x51')](_0x29abf4);}})[_0x37c2('0x20')](function(_0x34bc8f){if(_0x34bc8f){_0x2cafe1=_0x34bc8f[_0x37c2('0x35')];if(!_0x5ad2cc[_0x37c2('0x2f')][_0x37c2('0x4c')]('nolimit')){_0x29abf4[_0x37c2('0x37')]=qs['limit'](_0x5ad2cc[_0x37c2('0x2f')][_0x37c2('0x37')]);_0x29abf4[_0x37c2('0x18')]=qs['offset'](_0x5ad2cc[_0x37c2('0x2f')][_0x37c2('0x18')]);}return _0x2564f6['getTags'](_0x29abf4);}})[_0x37c2('0x20')](function(_0x2c1970){if(_0x2c1970){return _0x2c1970?{'count':_0x2cafe1,'rows':_0x2c1970}:null;}})[_0x37c2('0x20')](respondWithResult(_0x4b7d6f,null))['catch'](handleError(_0x4b7d6f,null));};exports['setTags']=function(_0x411665,_0x5e65cb,_0x114415){if(_0x411665['body']['id']){delete _0x411665[_0x37c2('0x48')]['id'];}return db[_0x37c2('0x29')][_0x37c2('0x4b')]({'where':{'id':_0x411665[_0x37c2('0x49')]['id']}})['then'](handleEntityNotFound(_0x5e65cb,null))[_0x37c2('0x20')](function(_0x1b6727){if(_0x1b6727){return _0x1b6727[_0x37c2('0x52')](_0x411665[_0x37c2('0x48')][_0x37c2('0x53')]||[]);}return null;})[_0x37c2('0x20')](respondWithResult(_0x5e65cb,null))[_0x37c2('0x44')](handleError(_0x5e65cb,null));};
\ No newline at end of file
+var _0x59f0=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','DeskConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','find','create','body','getFields','findOne','order','getSubjects','getDescriptions','params','DeskField','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x59f0,0x18c));var _0x059f=function(_0x229e8e,_0x2bf415){_0x229e8e=_0x229e8e-0x0;var _0x457d2a=_0x59f0[_0x229e8e];return _0x457d2a;};'use strict';var emlformat=require(_0x059f('0x0'));var rimraf=require(_0x059f('0x1'));var zipdir=require(_0x059f('0x2'));var jsonpatch=require(_0x059f('0x3'));var rp=require('request-promise');var moment=require(_0x059f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x059f('0x5'));var util=require(_0x059f('0x6'));var path=require(_0x059f('0x7'));var sox=require(_0x059f('0x8'));var csv=require(_0x059f('0x9'));var ejs=require(_0x059f('0xa'));var fs=require('fs');var fs_extra=require(_0x059f('0xb'));var _=require(_0x059f('0xc'));var squel=require('squel');var crypto=require(_0x059f('0xd'));var jsforce=require(_0x059f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x059f('0x9'));var querystring=require(_0x059f('0xf'));var Papa=require(_0x059f('0x10'));var Redis=require(_0x059f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x059f('0x12'));var hardwareService=require(_0x059f('0x13'));var logger=require(_0x059f('0x14'))('api');var utils=require(_0x059f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x059f('0x16'));var db=require(_0x059f('0x17'))['db'];function respondWithStatusCode(_0x44a682,_0x113b21){_0x113b21=_0x113b21||0xcc;return function(_0x1a799e){if(_0x1a799e){return _0x44a682['sendStatus'](_0x113b21);}return _0x44a682[_0x059f('0x18')](_0x113b21)[_0x059f('0x19')]();};}function respondWithResult(_0x384189,_0x4a0734){_0x4a0734=_0x4a0734||0xc8;return function(_0x46515a){if(_0x46515a){return _0x384189[_0x059f('0x18')](_0x4a0734)[_0x059f('0x1a')](_0x46515a);}};}function respondWithFilteredResult(_0x287296,_0x1f6073){return function(_0x25a5db){if(_0x25a5db){var _0x575344=typeof _0x1f6073[_0x059f('0x1b')]==='undefined'&&typeof _0x1f6073['limit']===_0x059f('0x1c');var _0x2866bc=_0x25a5db['count'];var _0x143462=_0x575344?0x0:_0x1f6073[_0x059f('0x1b')];var _0x3659a3=_0x575344?_0x25a5db[_0x059f('0x1d')]:_0x1f6073[_0x059f('0x1b')]+_0x1f6073[_0x059f('0x1e')];var _0x2e35a9;if(_0x3659a3>=_0x2866bc){_0x3659a3=_0x2866bc;_0x2e35a9=0xc8;}else{_0x2e35a9=0xce;}_0x287296[_0x059f('0x18')](_0x2e35a9);return _0x287296[_0x059f('0x1f')]('Content-Range',_0x143462+'-'+_0x3659a3+'/'+_0x2866bc)[_0x059f('0x1a')](_0x25a5db);}return null;};}function patchUpdates(_0x3d9726){return function(_0x1b6987){try{jsonpatch[_0x059f('0x20')](_0x1b6987,_0x3d9726,!![]);}catch(_0x44f549){return BPromise[_0x059f('0x21')](_0x44f549);}return _0x1b6987[_0x059f('0x22')]();};}function saveUpdates(_0x51009e,_0x48355d){return function(_0xa3635f){if(_0xa3635f){return _0xa3635f[_0x059f('0x23')](_0x51009e)[_0x059f('0x24')](function(_0x2344ae){return _0x2344ae;});}return null;};}function removeEntity(_0x5903c1,_0x446eda){return function(_0x1706fc){if(_0x1706fc){return _0x1706fc[_0x059f('0x25')]()[_0x059f('0x24')](function(){_0x5903c1[_0x059f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cfe72,_0xf3eab7){return function(_0x142964){if(!_0x142964){_0x2cfe72[_0x059f('0x26')](0x194);}return _0x142964;};}function handleError(_0xbc0db9,_0x418e4d){_0x418e4d=_0x418e4d||0x1f4;return function(_0x320999){logger[_0x059f('0x27')](_0x320999[_0x059f('0x28')]);if(_0x320999['name']){delete _0x320999[_0x059f('0x29')];}_0xbc0db9['status'](_0x418e4d)[_0x059f('0x2a')](_0x320999);};}exports['index']=function(_0x196a09,_0x1d92cb){var _0x25ef62={},_0x420c7b={},_0x52e29d={'count':0x0,'rows':[]};var _0x3c7711=_[_0x059f('0x2b')](db[_0x059f('0x2c')][_0x059f('0x2d')],function(_0x3e5c0d){return{'name':_0x3e5c0d['fieldName'],'type':_0x3e5c0d[_0x059f('0x2e')][_0x059f('0x2f')]};});_0x420c7b[_0x059f('0x30')]=_[_0x059f('0x2b')](_0x3c7711,_0x059f('0x29'));_0x420c7b[_0x059f('0x31')]=_[_0x059f('0x32')](_0x196a09[_0x059f('0x31')]);_0x420c7b[_0x059f('0x33')]=_['intersection'](_0x420c7b[_0x059f('0x30')],_0x420c7b['query']);_0x25ef62['attributes']=_[_0x059f('0x34')](_0x420c7b['model'],qs[_0x059f('0x35')](_0x196a09['query'][_0x059f('0x35')]));_0x25ef62['attributes']=_0x25ef62[_0x059f('0x36')][_0x059f('0x37')]?_0x25ef62[_0x059f('0x36')]:_0x420c7b[_0x059f('0x30')];if(!_0x196a09[_0x059f('0x31')][_0x059f('0x38')](_0x059f('0x39'))){_0x25ef62['limit']=qs[_0x059f('0x1e')](_0x196a09['query'][_0x059f('0x1e')]);_0x25ef62['offset']=qs[_0x059f('0x1b')](_0x196a09[_0x059f('0x31')][_0x059f('0x1b')]);}_0x25ef62['order']=qs[_0x059f('0x3a')](_0x196a09[_0x059f('0x31')][_0x059f('0x3a')]);_0x25ef62[_0x059f('0x3b')]=qs['filters'](_[_0x059f('0x3c')](_0x196a09['query'],_0x420c7b[_0x059f('0x33')]),_0x3c7711);if(_0x196a09[_0x059f('0x31')][_0x059f('0x3d')]){_0x25ef62[_0x059f('0x3b')]=_[_0x059f('0x3e')](_0x25ef62[_0x059f('0x3b')],{'$or':_['map'](_0x3c7711,function(_0x1a75d6){if(_0x1a75d6[_0x059f('0x2e')]!==_0x059f('0x3f')){var _0x10a6b2={};_0x10a6b2[_0x1a75d6[_0x059f('0x29')]]={'$like':'%'+_0x196a09['query'][_0x059f('0x3d')]+'%'};return _0x10a6b2;}})});}_0x25ef62=_[_0x059f('0x3e')]({},_0x25ef62,_0x196a09[_0x059f('0x40')]);var _0x4b3279={'where':_0x25ef62[_0x059f('0x3b')]};return db[_0x059f('0x2c')]['count'](_0x4b3279)[_0x059f('0x24')](function(_0x339508){_0x52e29d[_0x059f('0x1d')]=_0x339508;if(_0x196a09[_0x059f('0x31')][_0x059f('0x41')]){_0x25ef62['include']=[{'all':!![]}];}return db[_0x059f('0x2c')][_0x059f('0x42')](_0x25ef62);})[_0x059f('0x24')](function(_0x2d1f1e){_0x52e29d[_0x059f('0x43')]=_0x2d1f1e;return _0x52e29d;})[_0x059f('0x24')](respondWithFilteredResult(_0x1d92cb,_0x25ef62))[_0x059f('0x44')](handleError(_0x1d92cb,null));};exports[_0x059f('0x45')]=function(_0x130704,_0x35cfdc){var _0x30216d={'raw':![],'where':{'id':_0x130704['params']['id']}},_0x565684={};_0x565684[_0x059f('0x30')]=_[_0x059f('0x32')](db[_0x059f('0x2c')][_0x059f('0x2d')]);_0x565684[_0x059f('0x31')]=_[_0x059f('0x32')](_0x130704[_0x059f('0x31')]);_0x565684[_0x059f('0x33')]=_[_0x059f('0x34')](_0x565684[_0x059f('0x30')],_0x565684['query']);_0x30216d[_0x059f('0x36')]=_[_0x059f('0x34')](_0x565684[_0x059f('0x30')],qs[_0x059f('0x35')](_0x130704[_0x059f('0x31')][_0x059f('0x35')]));_0x30216d['attributes']=_0x30216d[_0x059f('0x36')][_0x059f('0x37')]?_0x30216d[_0x059f('0x36')]:_0x565684['model'];if(_0x130704[_0x059f('0x31')]['includeAll']){_0x30216d['include']=[{'all':!![]}];}_0x30216d=_[_0x059f('0x3e')]({},_0x30216d,_0x130704[_0x059f('0x40')]);return db[_0x059f('0x2c')][_0x059f('0x46')](_0x30216d)[_0x059f('0x24')](handleEntityNotFound(_0x35cfdc,null))[_0x059f('0x24')](respondWithResult(_0x35cfdc,null))[_0x059f('0x44')](handleError(_0x35cfdc,null));};exports[_0x059f('0x47')]=function(_0x57a8eb,_0x23aa29){return db[_0x059f('0x2c')]['create'](_0x57a8eb[_0x059f('0x48')],{})[_0x059f('0x24')](respondWithResult(_0x23aa29,0xc9))['catch'](handleError(_0x23aa29,null));};exports[_0x059f('0x23')]=function(_0x33690e,_0x5c4790){if(_0x33690e[_0x059f('0x48')]['id']){delete _0x33690e[_0x059f('0x48')]['id'];}return db[_0x059f('0x2c')][_0x059f('0x46')]({'where':{'id':_0x33690e['params']['id']}})['then'](handleEntityNotFound(_0x5c4790,null))[_0x059f('0x24')](saveUpdates(_0x33690e['body'],null))[_0x059f('0x24')](respondWithResult(_0x5c4790,null))[_0x059f('0x44')](handleError(_0x5c4790,null));};exports[_0x059f('0x25')]=function(_0x57616e,_0x39b6b6){return db[_0x059f('0x2c')][_0x059f('0x46')]({'where':{'id':_0x57616e['params']['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x39b6b6,null))['then'](removeEntity(_0x39b6b6,null))[_0x059f('0x44')](handleError(_0x39b6b6,null));};exports[_0x059f('0x49')]=function(_0x34571a,_0x504107,_0x114f36){var _0x48b4c6={};var _0x4085ad={};var _0x14fa07;var _0x56969e;return db['DeskConfiguration'][_0x059f('0x4a')]({'where':{'id':_0x34571a['params']['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x504107,null))[_0x059f('0x24')](function(_0xa84496){if(_0xa84496){_0x14fa07=_0xa84496;_0x4085ad[_0x059f('0x30')]=_[_0x059f('0x32')](db['DeskField'][_0x059f('0x2d')]);_0x4085ad[_0x059f('0x31')]=_[_0x059f('0x32')](_0x34571a[_0x059f('0x31')]);_0x4085ad[_0x059f('0x33')]=_[_0x059f('0x34')](_0x4085ad['model'],_0x4085ad['query']);_0x48b4c6[_0x059f('0x36')]=_[_0x059f('0x34')](_0x4085ad[_0x059f('0x30')],qs['fields'](_0x34571a[_0x059f('0x31')]['fields']));_0x48b4c6[_0x059f('0x36')]=_0x48b4c6[_0x059f('0x36')][_0x059f('0x37')]?_0x48b4c6[_0x059f('0x36')]:_0x4085ad[_0x059f('0x30')];_0x48b4c6[_0x059f('0x4b')]=qs[_0x059f('0x3a')](_0x34571a[_0x059f('0x31')]['sort']);_0x48b4c6[_0x059f('0x3b')]=qs[_0x059f('0x33')](_['pick'](_0x34571a['query'],_0x4085ad['filters']));if(_0x34571a[_0x059f('0x31')][_0x059f('0x3d')]){_0x48b4c6[_0x059f('0x3b')]=_['merge'](_0x48b4c6[_0x059f('0x3b')],{'$or':_[_0x059f('0x2b')](_0x48b4c6[_0x059f('0x36')],function(_0x3f9e7e){var _0x36791b={};_0x36791b[_0x3f9e7e]={'$like':'%'+_0x34571a['query'][_0x059f('0x3d')]+'%'};return _0x36791b;})});}_0x48b4c6=_[_0x059f('0x3e')]({},_0x48b4c6,_0x34571a[_0x059f('0x40')]);return _0x14fa07[_0x059f('0x49')](_0x48b4c6);}})['then'](function(_0x30673f){if(_0x30673f){_0x56969e=_0x30673f[_0x059f('0x37')];if(!_0x34571a[_0x059f('0x31')][_0x059f('0x38')](_0x059f('0x39'))){_0x48b4c6[_0x059f('0x1e')]=qs['limit'](_0x34571a['query'][_0x059f('0x1e')]);_0x48b4c6[_0x059f('0x1b')]=qs[_0x059f('0x1b')](_0x34571a['query'][_0x059f('0x1b')]);}return _0x14fa07['getFields'](_0x48b4c6);}})[_0x059f('0x24')](function(_0x2e5016){if(_0x2e5016){return _0x2e5016?{'count':_0x56969e,'rows':_0x2e5016}:null;}})[_0x059f('0x24')](respondWithResult(_0x504107,null))[_0x059f('0x44')](handleError(_0x504107,null));};exports['getSubjects']=function(_0x4ae470,_0x1c6be2,_0x3fb005){var _0x15c3e8={};var _0x47981f={};var _0x1e929d;var _0x3e98da;return db[_0x059f('0x2c')][_0x059f('0x4a')]({'where':{'id':_0x4ae470['params']['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x1c6be2,null))[_0x059f('0x24')](function(_0x359e76){if(_0x359e76){_0x1e929d=_0x359e76;_0x47981f['model']=_[_0x059f('0x32')](db['DeskField'][_0x059f('0x2d')]);_0x47981f[_0x059f('0x31')]=_[_0x059f('0x32')](_0x4ae470[_0x059f('0x31')]);_0x47981f['filters']=_[_0x059f('0x34')](_0x47981f['model'],_0x47981f[_0x059f('0x31')]);_0x15c3e8[_0x059f('0x36')]=_[_0x059f('0x34')](_0x47981f[_0x059f('0x30')],qs[_0x059f('0x35')](_0x4ae470[_0x059f('0x31')][_0x059f('0x35')]));_0x15c3e8[_0x059f('0x36')]=_0x15c3e8[_0x059f('0x36')]['length']?_0x15c3e8[_0x059f('0x36')]:_0x47981f[_0x059f('0x30')];_0x15c3e8[_0x059f('0x4b')]=qs['sort'](_0x4ae470['query'][_0x059f('0x3a')]);_0x15c3e8[_0x059f('0x3b')]=qs['filters'](_[_0x059f('0x3c')](_0x4ae470[_0x059f('0x31')],_0x47981f['filters']));if(_0x4ae470['query'][_0x059f('0x3d')]){_0x15c3e8[_0x059f('0x3b')]=_[_0x059f('0x3e')](_0x15c3e8[_0x059f('0x3b')],{'$or':_[_0x059f('0x2b')](_0x15c3e8[_0x059f('0x36')],function(_0x2a16f5){var _0x33bb6d={};_0x33bb6d[_0x2a16f5]={'$like':'%'+_0x4ae470[_0x059f('0x31')][_0x059f('0x3d')]+'%'};return _0x33bb6d;})});}_0x15c3e8=_['merge']({},_0x15c3e8,_0x4ae470['options']);return _0x1e929d['getSubjects'](_0x15c3e8);}})['then'](function(_0xdf92bd){if(_0xdf92bd){_0x3e98da=_0xdf92bd[_0x059f('0x37')];if(!_0x4ae470[_0x059f('0x31')][_0x059f('0x38')]('nolimit')){_0x15c3e8[_0x059f('0x1e')]=qs[_0x059f('0x1e')](_0x4ae470[_0x059f('0x31')][_0x059f('0x1e')]);_0x15c3e8[_0x059f('0x1b')]=qs['offset'](_0x4ae470[_0x059f('0x31')][_0x059f('0x1b')]);}return _0x1e929d[_0x059f('0x4c')](_0x15c3e8);}})[_0x059f('0x24')](function(_0x2568f8){if(_0x2568f8){return _0x2568f8?{'count':_0x3e98da,'rows':_0x2568f8}:null;}})[_0x059f('0x24')](respondWithResult(_0x1c6be2,null))[_0x059f('0x44')](handleError(_0x1c6be2,null));};exports[_0x059f('0x4d')]=function(_0x45d1b4,_0x4c0890,_0xfe9427){var _0xd1ae34={};var _0xac250c={};var _0x15fc9d;var _0x44e701;return db[_0x059f('0x2c')][_0x059f('0x4a')]({'where':{'id':_0x45d1b4[_0x059f('0x4e')]['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x4c0890,null))[_0x059f('0x24')](function(_0xc85dd8){if(_0xc85dd8){_0x15fc9d=_0xc85dd8;_0xac250c[_0x059f('0x30')]=_[_0x059f('0x32')](db[_0x059f('0x4f')][_0x059f('0x2d')]);_0xac250c[_0x059f('0x31')]=_['keys'](_0x45d1b4[_0x059f('0x31')]);_0xac250c[_0x059f('0x33')]=_[_0x059f('0x34')](_0xac250c[_0x059f('0x30')],_0xac250c[_0x059f('0x31')]);_0xd1ae34[_0x059f('0x36')]=_['intersection'](_0xac250c[_0x059f('0x30')],qs[_0x059f('0x35')](_0x45d1b4['query'][_0x059f('0x35')]));_0xd1ae34[_0x059f('0x36')]=_0xd1ae34[_0x059f('0x36')][_0x059f('0x37')]?_0xd1ae34[_0x059f('0x36')]:_0xac250c[_0x059f('0x30')];_0xd1ae34[_0x059f('0x4b')]=qs[_0x059f('0x3a')](_0x45d1b4['query']['sort']);_0xd1ae34[_0x059f('0x3b')]=qs[_0x059f('0x33')](_[_0x059f('0x3c')](_0x45d1b4[_0x059f('0x31')],_0xac250c[_0x059f('0x33')]));if(_0x45d1b4[_0x059f('0x31')][_0x059f('0x3d')]){_0xd1ae34[_0x059f('0x3b')]=_['merge'](_0xd1ae34[_0x059f('0x3b')],{'$or':_['map'](_0xd1ae34[_0x059f('0x36')],function(_0x554c26){var _0x2f4e10={};_0x2f4e10[_0x554c26]={'$like':'%'+_0x45d1b4[_0x059f('0x31')][_0x059f('0x3d')]+'%'};return _0x2f4e10;})});}_0xd1ae34=_[_0x059f('0x3e')]({},_0xd1ae34,_0x45d1b4[_0x059f('0x40')]);return _0x15fc9d[_0x059f('0x4d')](_0xd1ae34);}})['then'](function(_0x541859){if(_0x541859){_0x44e701=_0x541859['length'];if(!_0x45d1b4['query'][_0x059f('0x38')](_0x059f('0x39'))){_0xd1ae34['limit']=qs['limit'](_0x45d1b4[_0x059f('0x31')][_0x059f('0x1e')]);_0xd1ae34[_0x059f('0x1b')]=qs[_0x059f('0x1b')](_0x45d1b4['query']['offset']);}return _0x15fc9d[_0x059f('0x4d')](_0xd1ae34);}})['then'](function(_0x1ca6a5){if(_0x1ca6a5){return _0x1ca6a5?{'count':_0x44e701,'rows':_0x1ca6a5}:null;}})[_0x059f('0x24')](respondWithResult(_0x4c0890,null))['catch'](handleError(_0x4c0890,null));};exports[_0x059f('0x50')]=function(_0x16e5bc,_0x4af02a,_0x2e6ae5){var _0x23214c={};var _0x4ebcac={};var _0x102903;var _0xd7d782;return db[_0x059f('0x2c')]['findOne']({'where':{'id':_0x16e5bc[_0x059f('0x4e')]['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x4af02a,null))[_0x059f('0x24')](function(_0x1c866c){if(_0x1c866c){_0x102903=_0x1c866c;_0x4ebcac[_0x059f('0x30')]=_[_0x059f('0x32')](db['Tag'][_0x059f('0x2d')]);_0x4ebcac[_0x059f('0x31')]=_['keys'](_0x16e5bc[_0x059f('0x31')]);_0x4ebcac[_0x059f('0x33')]=_[_0x059f('0x34')](_0x4ebcac[_0x059f('0x30')],_0x4ebcac['query']);_0x23214c[_0x059f('0x36')]=_[_0x059f('0x34')](_0x4ebcac[_0x059f('0x30')],qs['fields'](_0x16e5bc['query']['fields']));_0x23214c[_0x059f('0x36')]=_0x23214c['attributes'][_0x059f('0x37')]?_0x23214c['attributes']:_0x4ebcac[_0x059f('0x30')];_0x23214c['order']=qs[_0x059f('0x3a')](_0x16e5bc['query'][_0x059f('0x3a')]);_0x23214c[_0x059f('0x3b')]=qs[_0x059f('0x33')](_['pick'](_0x16e5bc['query'],_0x4ebcac[_0x059f('0x33')]));if(_0x16e5bc['query'][_0x059f('0x3d')]){_0x23214c['where']=_['merge'](_0x23214c[_0x059f('0x3b')],{'$or':_[_0x059f('0x2b')](_0x23214c[_0x059f('0x36')],function(_0x4ba44d){var _0x1add7c={};_0x1add7c[_0x4ba44d]={'$like':'%'+_0x16e5bc[_0x059f('0x31')]['filter']+'%'};return _0x1add7c;})});}_0x23214c=_['merge']({},_0x23214c,_0x16e5bc['options']);return _0x102903['getTags'](_0x23214c);}})[_0x059f('0x24')](function(_0xfedf09){if(_0xfedf09){_0xd7d782=_0xfedf09[_0x059f('0x37')];if(!_0x16e5bc[_0x059f('0x31')]['hasOwnProperty'](_0x059f('0x39'))){_0x23214c[_0x059f('0x1e')]=qs[_0x059f('0x1e')](_0x16e5bc[_0x059f('0x31')][_0x059f('0x1e')]);_0x23214c['offset']=qs[_0x059f('0x1b')](_0x16e5bc[_0x059f('0x31')]['offset']);}return _0x102903[_0x059f('0x50')](_0x23214c);}})[_0x059f('0x24')](function(_0xb79644){if(_0xb79644){return _0xb79644?{'count':_0xd7d782,'rows':_0xb79644}:null;}})['then'](respondWithResult(_0x4af02a,null))[_0x059f('0x44')](handleError(_0x4af02a,null));};exports[_0x059f('0x51')]=function(_0xbf8fe5,_0x4b9b4c,_0x340cde){if(_0xbf8fe5[_0x059f('0x48')]['id']){delete _0xbf8fe5['body']['id'];}return db[_0x059f('0x2c')][_0x059f('0x4a')]({'where':{'id':_0xbf8fe5[_0x059f('0x4e')]['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x4b9b4c,null))[_0x059f('0x24')](function(_0x1223bc){if(_0x1223bc){return _0x1223bc[_0x059f('0x51')](_0xbf8fe5['body'][_0x059f('0x52')]||[]);}return null;})[_0x059f('0x24')](respondWithResult(_0x4b9b4c,null))[_0x059f('0x44')](handleError(_0x4b9b4c,null));};
\ No newline at end of file
index af6378d..7ac8603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc97f=['../../config/environment','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5728e4,_0x52dfcc){var _0x7ca0ac=function(_0x50539a){while(--_0x50539a){_0x5728e4['push'](_0x5728e4['shift']());}};_0x7ca0ac(++_0x52dfcc);}(_0xc97f,0x102));var _0xfc97=function(_0x50b625,_0x1aaf3b){_0x50b625=_0x50b625-0x0;var _0x56e014=_0xc97f[_0x50b625];return _0x56e014;};'use strict';var _=require(_0xfc97('0x0'));var util=require('util');var logger=require(_0xfc97('0x1'))(_0xfc97('0x2'));var moment=require(_0xfc97('0x3'));var BPromise=require(_0xfc97('0x4'));var rp=require(_0xfc97('0x5'));var fs=require('fs');var path=require(_0xfc97('0x6'));var rimraf=require(_0xfc97('0x7'));var config=require(_0xfc97('0x8'));var attributes=require(_0xfc97('0x9'));module[_0xfc97('0xa')]=function(_0x10c0db,_0x44704f){return _0x10c0db[_0xfc97('0xb')](_0xfc97('0xc'),attributes,{'tableName':_0xfc97('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f48=['int_desk_configurations','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x2915ec,_0x3fd7e0){var _0x259a79=function(_0x278587){while(--_0x278587){_0x2915ec['push'](_0x2915ec['shift']());}};_0x259a79(++_0x3fd7e0);}(_0x3f48,0x1e1));var _0x83f4=function(_0x3b9542,_0x3e6bf6){_0x3b9542=_0x3b9542-0x0;var _0x5dc004=_0x3f48[_0x3b9542];return _0x5dc004;};'use strict';var _=require(_0x83f4('0x0'));var util=require('util');var logger=require(_0x83f4('0x1'))('api');var moment=require(_0x83f4('0x2'));var BPromise=require(_0x83f4('0x3'));var rp=require(_0x83f4('0x4'));var fs=require('fs');var path=require(_0x83f4('0x5'));var rimraf=require(_0x83f4('0x6'));var config=require(_0x83f4('0x7'));var attributes=require('./intDeskConfiguration.attributes');module[_0x83f4('0x8')]=function(_0x4067c0,_0xb54494){return _0x4067c0['define']('DeskConfiguration',attributes,{'tableName':_0x83f4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7dab196..9a26e3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd959=['info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x24bf49,_0x265dc9){var _0x11160a=function(_0x1ade4b){while(--_0x1ade4b){_0x24bf49['push'](_0x24bf49['shift']());}};_0x11160a(++_0x265dc9);}(_0xd959,0x94));var _0x9d95=function(_0x56147a,_0x4713c7){_0x56147a=_0x56147a-0x0;var _0x5537d0=_0xd959[_0x56147a];return _0x5537d0;};'use strict';var _=require(_0x9d95('0x0'));var util=require(_0x9d95('0x1'));var moment=require(_0x9d95('0x2'));var BPromise=require('bluebird');var rs=require(_0x9d95('0x3'));var fs=require('fs');var Redis=require(_0x9d95('0x4'));var db=require(_0x9d95('0x5'))['db'];var utils=require(_0x9d95('0x6'));var logger=require(_0x9d95('0x7'))('rpc');var config=require(_0x9d95('0x8'));var jayson=require(_0x9d95('0x9'));var client=jayson[_0x9d95('0xa')][_0x9d95('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5cd4ff,_0x3b9ddc,_0x300ffe){return new BPromise(function(_0x22af66,_0x561877){return client[_0x9d95('0xc')](_0x5cd4ff,_0x300ffe)['then'](function(_0x156d8a){logger[_0x9d95('0xd')](_0x9d95('0xe'),_0x3b9ddc,_0x9d95('0xf'));logger[_0x9d95('0x10')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x3b9ddc,_0x9d95('0xf'),JSON[_0x9d95('0x11')](_0x156d8a));if(_0x156d8a['error']){if(_0x156d8a[_0x9d95('0x12')][_0x9d95('0x13')]===0x1f4){logger['error'](_0x9d95('0xe'),_0x3b9ddc,_0x156d8a[_0x9d95('0x12')][_0x9d95('0x14')]);return _0x561877(_0x156d8a[_0x9d95('0x12')]['message']);}logger[_0x9d95('0x12')](_0x9d95('0xe'),_0x3b9ddc,_0x156d8a['error'][_0x9d95('0x14')]);return _0x22af66(_0x156d8a[_0x9d95('0x12')][_0x9d95('0x14')]);}else{logger['info'](_0x9d95('0xe'),_0x3b9ddc,'request\x20sent');_0x22af66(_0x156d8a[_0x9d95('0x15')][_0x9d95('0x14')]);}})[_0x9d95('0x16')](function(_0x581647){logger[_0x9d95('0x12')]('DeskConfiguration,\x20%s,\x20%s',_0x3b9ddc,_0x581647);_0x561877(_0x581647);});});}
\ No newline at end of file
+var _0x11f3=['util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x11f3,0x149));var _0x311f=function(_0x1549ae,_0x4ea436){_0x1549ae=_0x1549ae-0x0;var _0x141302=_0x11f3[_0x1549ae];return _0x141302;};'use strict';var _=require(_0x311f('0x0'));var util=require(_0x311f('0x1'));var moment=require(_0x311f('0x2'));var BPromise=require('bluebird');var rs=require(_0x311f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x311f('0x4'))['db'];var utils=require(_0x311f('0x5'));var logger=require(_0x311f('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x311f('0x7'));var client=jayson['client'][_0x311f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xcbec7b,_0x11c88d,_0x3381a7){return new BPromise(function(_0x565d4d,_0x24a3fc){return client[_0x311f('0x9')](_0xcbec7b,_0x3381a7)[_0x311f('0xa')](function(_0x21b762){logger[_0x311f('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0x11c88d,_0x311f('0xc'));logger[_0x311f('0xd')](_0x311f('0xe'),_0x11c88d,_0x311f('0xc'),JSON[_0x311f('0xf')](_0x21b762));if(_0x21b762[_0x311f('0x10')]){if(_0x21b762[_0x311f('0x10')][_0x311f('0x11')]===0x1f4){logger[_0x311f('0x10')](_0x311f('0x12'),_0x11c88d,_0x21b762[_0x311f('0x10')][_0x311f('0x13')]);return _0x24a3fc(_0x21b762[_0x311f('0x10')][_0x311f('0x13')]);}logger[_0x311f('0x10')](_0x311f('0x12'),_0x11c88d,_0x21b762[_0x311f('0x10')][_0x311f('0x13')]);return _0x565d4d(_0x21b762[_0x311f('0x10')]['message']);}else{logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x11c88d,_0x311f('0xc'));_0x565d4d(_0x21b762[_0x311f('0x14')][_0x311f('0x13')]);}})[_0x311f('0x15')](function(_0xb8227e){logger[_0x311f('0x10')](_0x311f('0x12'),_0x11c88d,_0xb8227e);_0x24a3fc(_0xb8227e);});});}
\ No newline at end of file
index 2a7206e..9291591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa547=['/:id','post','create','put','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','index','get'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0xa547,0xb0));var _0x7a54=function(_0x3feca4,_0xda09bc){_0x3feca4=_0x3feca4-0x0;var _0x4a8f83=_0xa547[_0x3feca4];return _0x4a8f83;};'use strict';var multer=require('multer');var util=require(_0x7a54('0x0'));var path=require('path');var timeout=require(_0x7a54('0x1'));var express=require('express');var router=express[_0x7a54('0x2')]();var fs_extra=require(_0x7a54('0x3'));var auth=require(_0x7a54('0x4'));var interaction=require(_0x7a54('0x5'));var config=require(_0x7a54('0x6'));var controller=require(_0x7a54('0x7'));router['get']('/',auth[_0x7a54('0x8')](),controller[_0x7a54('0x9')]);router[_0x7a54('0xa')](_0x7a54('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x7a54('0xc')]('/',auth[_0x7a54('0x8')](),controller[_0x7a54('0xd')]);router[_0x7a54('0xe')](_0x7a54('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x7a54('0xb'),auth[_0x7a54('0x8')](),controller[_0x7a54('0xf')]);module[_0x7a54('0x10')]=router;
\ No newline at end of file
+var _0x50fa=['get','isAuthenticated','index','/:id','post','create','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller'];(function(_0x15ba3c,_0x6da31a){var _0x485e72=function(_0x24a449){while(--_0x24a449){_0x15ba3c['push'](_0x15ba3c['shift']());}};_0x485e72(++_0x6da31a);}(_0x50fa,0x70));var _0xa50f=function(_0x42caa6,_0x5a8b05){_0x42caa6=_0x42caa6-0x0;var _0xa88adb=_0x50fa[_0x42caa6];return _0xa88adb;};'use strict';var multer=require(_0xa50f('0x0'));var util=require(_0xa50f('0x1'));var path=require(_0xa50f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa50f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa50f('0x4'));var interaction=require(_0xa50f('0x5'));var config=require(_0xa50f('0x6'));var controller=require(_0xa50f('0x7'));router[_0xa50f('0x8')]('/',auth[_0xa50f('0x9')](),controller[_0xa50f('0xa')]);router['get'](_0xa50f('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xa50f('0xc')]('/',auth[_0xa50f('0x9')](),controller[_0xa50f('0xd')]);router['put'](_0xa50f('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xa50f('0x9')](),controller['destroy']);module[_0xa50f('0xe')]=router;
\ No newline at end of file
index cc4c37d..3031763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48df=['ENUM','string','STRING','sequelize','exports','variable','picklist'];(function(_0x217c2e,_0x358f06){var _0x22b7d8=function(_0x111c48){while(--_0x111c48){_0x217c2e['push'](_0x217c2e['shift']());}};_0x22b7d8(++_0x358f06);}(_0x48df,0x81));var _0xf48d=function(_0x5951e8,_0x42b9a7){_0x5951e8=_0x5951e8-0x0;var _0x20a1f5=_0x48df[_0x5951e8];return _0x20a1f5;};'use strict';var Sequelize=require(_0xf48d('0x0'));module[_0xf48d('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0xf48d('0x2'),'customVariable','keyValue',_0xf48d('0x3')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xf48d('0x4')](_0xf48d('0x5'),_0xf48d('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xf48d('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xf48d('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9fc6=['STRING','sequelize','exports','ENUM','variable','customVariable','string'];(function(_0x19085d,_0x5d8bc0){var _0xdb3f69=function(_0x3009c8){while(--_0x3009c8){_0x19085d['push'](_0x19085d['shift']());}};_0xdb3f69(++_0x5d8bc0);}(_0x9fc6,0xf6));var _0x69fc=function(_0x999b85,_0x1edc2b){_0x999b85=_0x999b85-0x0;var _0x1d7124=_0x9fc6[_0x999b85];return _0x1d7124;};'use strict';var Sequelize=require(_0x69fc('0x0'));module[_0x69fc('0x1')]={'type':{'type':Sequelize[_0x69fc('0x2')]('string',_0x69fc('0x3'),_0x69fc('0x4'),'keyValue','picklist'),'defaultValue':_0x69fc('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x69fc('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x69fc('0x5'),_0x69fc('0x3'),_0x69fc('0x4'))},'keyContent':{'type':Sequelize[_0x69fc('0x6')]},'idField':{'type':Sequelize[_0x69fc('0x6')]},'nameField':{'type':Sequelize[_0x69fc('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x69fc('0x6')]}};
\ No newline at end of file
index 1b54b5c..d73367f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf426=['where','pick','VIRTUAL','merge','includeAll','DeskField','findAll','rows','catch','show','params','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','update','then','destroy','end','sendStatus','error','stack','name','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','sort'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xf426,0x168));var _0x6f42=function(_0xaf52f9,_0x3608bc){_0xaf52f9=_0xaf52f9-0x0;var _0xd9e03e=_0xf426[_0xaf52f9];return _0xd9e03e;};'use strict';var emlformat=require(_0x6f42('0x0'));var rimraf=require(_0x6f42('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6f42('0x2'));var rp=require(_0x6f42('0x3'));var moment=require('moment');var BPromise=require(_0x6f42('0x4'));var Mustache=require(_0x6f42('0x5'));var util=require(_0x6f42('0x6'));var path=require(_0x6f42('0x7'));var sox=require(_0x6f42('0x8'));var csv=require(_0x6f42('0x9'));var ejs=require(_0x6f42('0xa'));var fs=require('fs');var fs_extra=require(_0x6f42('0xb'));var _=require(_0x6f42('0xc'));var squel=require('squel');var crypto=require(_0x6f42('0xd'));var jsforce=require(_0x6f42('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6f42('0x9'));var querystring=require(_0x6f42('0xf'));var Papa=require(_0x6f42('0x10'));var Redis=require(_0x6f42('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6f42('0x12'));var as=require(_0x6f42('0x13'));var hardwareService=require(_0x6f42('0x14'));var logger=require(_0x6f42('0x15'))(_0x6f42('0x16'));var utils=require(_0x6f42('0x17'));var config=require(_0x6f42('0x18'));var licenseUtil=require(_0x6f42('0x19'));var db=require(_0x6f42('0x1a'))['db'];function respondWithStatusCode(_0x577ee8,_0x3415b0){_0x3415b0=_0x3415b0||0xcc;return function(_0x2c7897){if(_0x2c7897){return _0x577ee8['sendStatus'](_0x3415b0);}return _0x577ee8[_0x6f42('0x1b')](_0x3415b0)['end']();};}function respondWithResult(_0x5d3d48,_0x3ce5ed){_0x3ce5ed=_0x3ce5ed||0xc8;return function(_0x278f61){if(_0x278f61){return _0x5d3d48[_0x6f42('0x1b')](_0x3ce5ed)[_0x6f42('0x1c')](_0x278f61);}};}function respondWithFilteredResult(_0x38d7ea,_0x273fca){return function(_0x2856ce){if(_0x2856ce){var _0x2f4722=typeof _0x273fca[_0x6f42('0x1d')]===_0x6f42('0x1e')&&typeof _0x273fca[_0x6f42('0x1f')]===_0x6f42('0x1e');var _0xe8a0bf=_0x2856ce[_0x6f42('0x20')];var _0x4fc4e7=_0x2f4722?0x0:_0x273fca[_0x6f42('0x1d')];var _0x1db6d0=_0x2f4722?_0x2856ce[_0x6f42('0x20')]:_0x273fca[_0x6f42('0x1d')]+_0x273fca[_0x6f42('0x1f')];var _0x2765dc;if(_0x1db6d0>=_0xe8a0bf){_0x1db6d0=_0xe8a0bf;_0x2765dc=0xc8;}else{_0x2765dc=0xce;}_0x38d7ea['status'](_0x2765dc);return _0x38d7ea['set']('Content-Range',_0x4fc4e7+'-'+_0x1db6d0+'/'+_0xe8a0bf)[_0x6f42('0x1c')](_0x2856ce);}return null;};}function patchUpdates(_0x346884){return function(_0x42d158){try{jsonpatch['apply'](_0x42d158,_0x346884,!![]);}catch(_0x5cb3e7){return BPromise['reject'](_0x5cb3e7);}return _0x42d158['save']();};}function saveUpdates(_0x379f60,_0x2e9f37){return function(_0x18be2f){if(_0x18be2f){return _0x18be2f[_0x6f42('0x21')](_0x379f60)[_0x6f42('0x22')](function(_0x12135c){return _0x12135c;});}return null;};}function removeEntity(_0x48837b,_0x3c8bc3){return function(_0x317818){if(_0x317818){return _0x317818[_0x6f42('0x23')]()[_0x6f42('0x22')](function(){_0x48837b[_0x6f42('0x1b')](0xcc)[_0x6f42('0x24')]();});}};}function handleEntityNotFound(_0x52f3f8,_0x486519){return function(_0x4dfdbf){if(!_0x4dfdbf){_0x52f3f8[_0x6f42('0x25')](0x194);}return _0x4dfdbf;};}function handleError(_0x3a2d42,_0x2a88cd){_0x2a88cd=_0x2a88cd||0x1f4;return function(_0x397742){logger[_0x6f42('0x26')](_0x397742[_0x6f42('0x27')]);if(_0x397742['name']){delete _0x397742[_0x6f42('0x28')];}_0x3a2d42[_0x6f42('0x1b')](_0x2a88cd)['send'](_0x397742);};}exports['index']=function(_0x32e6a6,_0x1a77a7){var _0x22fe3d={},_0x56dc33={},_0x548381={'count':0x0,'rows':[]};var _0x26069e=_['map'](db['DeskField'][_0x6f42('0x29')],function(_0x2e0d7e){return{'name':_0x2e0d7e['fieldName'],'type':_0x2e0d7e[_0x6f42('0x2a')][_0x6f42('0x2b')]};});_0x56dc33[_0x6f42('0x2c')]=_['map'](_0x26069e,'name');_0x56dc33['query']=_[_0x6f42('0x2d')](_0x32e6a6[_0x6f42('0x2e')]);_0x56dc33[_0x6f42('0x2f')]=_[_0x6f42('0x30')](_0x56dc33[_0x6f42('0x2c')],_0x56dc33['query']);_0x22fe3d['attributes']=_[_0x6f42('0x30')](_0x56dc33['model'],qs['fields'](_0x32e6a6[_0x6f42('0x2e')][_0x6f42('0x31')]));_0x22fe3d[_0x6f42('0x32')]=_0x22fe3d[_0x6f42('0x32')][_0x6f42('0x33')]?_0x22fe3d['attributes']:_0x56dc33[_0x6f42('0x2c')];if(!_0x32e6a6[_0x6f42('0x2e')]['hasOwnProperty'](_0x6f42('0x34'))){_0x22fe3d[_0x6f42('0x1f')]=qs['limit'](_0x32e6a6[_0x6f42('0x2e')]['limit']);_0x22fe3d[_0x6f42('0x1d')]=qs[_0x6f42('0x1d')](_0x32e6a6[_0x6f42('0x2e')]['offset']);}_0x22fe3d['order']=qs[_0x6f42('0x35')](_0x32e6a6[_0x6f42('0x2e')][_0x6f42('0x35')]);_0x22fe3d[_0x6f42('0x36')]=qs[_0x6f42('0x2f')](_[_0x6f42('0x37')](_0x32e6a6[_0x6f42('0x2e')],_0x56dc33[_0x6f42('0x2f')]),_0x26069e);if(_0x32e6a6['query']['filter']){_0x22fe3d[_0x6f42('0x36')]=_['merge'](_0x22fe3d[_0x6f42('0x36')],{'$or':_['map'](_0x26069e,function(_0x5b1c31){if(_0x5b1c31[_0x6f42('0x2a')]!==_0x6f42('0x38')){var _0x5b9ab8={};_0x5b9ab8[_0x5b1c31[_0x6f42('0x28')]]={'$like':'%'+_0x32e6a6[_0x6f42('0x2e')]['filter']+'%'};return _0x5b9ab8;}})});}_0x22fe3d=_[_0x6f42('0x39')]({},_0x22fe3d,_0x32e6a6['options']);var _0x124f90={'where':_0x22fe3d[_0x6f42('0x36')]};return db['DeskField'][_0x6f42('0x20')](_0x124f90)['then'](function(_0x311849){_0x548381[_0x6f42('0x20')]=_0x311849;if(_0x32e6a6['query'][_0x6f42('0x3a')]){_0x22fe3d['include']=[{'all':!![]}];}return db[_0x6f42('0x3b')][_0x6f42('0x3c')](_0x22fe3d);})[_0x6f42('0x22')](function(_0xd610c8){_0x548381[_0x6f42('0x3d')]=_0xd610c8;return _0x548381;})[_0x6f42('0x22')](respondWithFilteredResult(_0x1a77a7,_0x22fe3d))[_0x6f42('0x3e')](handleError(_0x1a77a7,null));};exports[_0x6f42('0x3f')]=function(_0x55956f,_0x11a392){var _0x437eb7={'raw':!![],'where':{'id':_0x55956f[_0x6f42('0x40')]['id']}},_0x7ec6c1={};_0x7ec6c1[_0x6f42('0x2c')]=_['keys'](db[_0x6f42('0x3b')][_0x6f42('0x29')]);_0x7ec6c1['query']=_['keys'](_0x55956f[_0x6f42('0x2e')]);_0x7ec6c1['filters']=_[_0x6f42('0x30')](_0x7ec6c1[_0x6f42('0x2c')],_0x7ec6c1['query']);_0x437eb7[_0x6f42('0x32')]=_[_0x6f42('0x30')](_0x7ec6c1['model'],qs[_0x6f42('0x31')](_0x55956f[_0x6f42('0x2e')][_0x6f42('0x31')]));_0x437eb7['attributes']=_0x437eb7['attributes'][_0x6f42('0x33')]?_0x437eb7[_0x6f42('0x32')]:_0x7ec6c1[_0x6f42('0x2c')];if(_0x55956f[_0x6f42('0x2e')][_0x6f42('0x3a')]){_0x437eb7['include']=[{'all':!![]}];}_0x437eb7=_[_0x6f42('0x39')]({},_0x437eb7,_0x55956f[_0x6f42('0x41')]);return db[_0x6f42('0x3b')][_0x6f42('0x42')](_0x437eb7)[_0x6f42('0x22')](handleEntityNotFound(_0x11a392,null))[_0x6f42('0x22')](respondWithResult(_0x11a392,null))[_0x6f42('0x3e')](handleError(_0x11a392,null));};exports[_0x6f42('0x43')]=function(_0x467ab2,_0x2b09a1){return db[_0x6f42('0x3b')]['create'](_0x467ab2['body'],{})[_0x6f42('0x22')](respondWithResult(_0x2b09a1,0xc9))[_0x6f42('0x3e')](handleError(_0x2b09a1,null));};exports[_0x6f42('0x21')]=function(_0x5ac976,_0x52bed3){if(_0x5ac976[_0x6f42('0x44')]['id']){delete _0x5ac976[_0x6f42('0x44')]['id'];}return db[_0x6f42('0x3b')]['find']({'where':{'id':_0x5ac976[_0x6f42('0x40')]['id']}})[_0x6f42('0x22')](handleEntityNotFound(_0x52bed3,null))[_0x6f42('0x22')](saveUpdates(_0x5ac976['body'],null))[_0x6f42('0x22')](respondWithResult(_0x52bed3,null))['catch'](handleError(_0x52bed3,null));};exports['destroy']=function(_0x22da22,_0x3e7664){return db['DeskField'][_0x6f42('0x42')]({'where':{'id':_0x22da22[_0x6f42('0x40')]['id']}})[_0x6f42('0x22')](handleEntityNotFound(_0x3e7664,null))[_0x6f42('0x22')](removeEntity(_0x3e7664,null))[_0x6f42('0x3e')](handleError(_0x3e7664,null));};
\ No newline at end of file
+var _0x6075=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','offset','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse'];(function(_0x19ec40,_0x448f0b){var _0x43ef8d=function(_0x154a8f){while(--_0x154a8f){_0x19ec40['push'](_0x19ec40['shift']());}};_0x43ef8d(++_0x448f0b);}(_0x6075,0x126));var _0x5607=function(_0x36a407,_0x5826d0){_0x36a407=_0x36a407-0x0;var _0x3ce877=_0x6075[_0x36a407];return _0x3ce877;};'use strict';var emlformat=require(_0x5607('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5607('0x1'));var jsonpatch=require(_0x5607('0x2'));var rp=require('request-promise');var moment=require(_0x5607('0x3'));var BPromise=require(_0x5607('0x4'));var Mustache=require(_0x5607('0x5'));var util=require(_0x5607('0x6'));var path=require(_0x5607('0x7'));var sox=require(_0x5607('0x8'));var csv=require('to-csv');var ejs=require(_0x5607('0x9'));var fs=require('fs');var fs_extra=require(_0x5607('0xa'));var _=require(_0x5607('0xb'));var squel=require(_0x5607('0xc'));var crypto=require(_0x5607('0xd'));var jsforce=require(_0x5607('0xe'));var deskjs=require(_0x5607('0xf'));var toCsv=require(_0x5607('0x10'));var querystring=require('querystring');var Papa=require(_0x5607('0x11'));var Redis=require(_0x5607('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5607('0x13'));var as=require(_0x5607('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5607('0x15'))(_0x5607('0x16'));var utils=require(_0x5607('0x17'));var config=require(_0x5607('0x18'));var licenseUtil=require(_0x5607('0x19'));var db=require(_0x5607('0x1a'))['db'];function respondWithStatusCode(_0x79cb4e,_0x147fc6){_0x147fc6=_0x147fc6||0xcc;return function(_0x40c2a2){if(_0x40c2a2){return _0x79cb4e[_0x5607('0x1b')](_0x147fc6);}return _0x79cb4e[_0x5607('0x1c')](_0x147fc6)[_0x5607('0x1d')]();};}function respondWithResult(_0x3dd987,_0x564b08){_0x564b08=_0x564b08||0xc8;return function(_0x2c8352){if(_0x2c8352){return _0x3dd987['status'](_0x564b08)[_0x5607('0x1e')](_0x2c8352);}};}function respondWithFilteredResult(_0x41b92f,_0x274829){return function(_0x423507){if(_0x423507){var _0x8573c=typeof _0x274829['offset']===_0x5607('0x1f')&&typeof _0x274829[_0x5607('0x20')]===_0x5607('0x1f');var _0x3c73f2=_0x423507['count'];var _0x2bf04b=_0x8573c?0x0:_0x274829['offset'];var _0x4d9218=_0x8573c?_0x423507[_0x5607('0x21')]:_0x274829['offset']+_0x274829[_0x5607('0x20')];var _0x14862a;if(_0x4d9218>=_0x3c73f2){_0x4d9218=_0x3c73f2;_0x14862a=0xc8;}else{_0x14862a=0xce;}_0x41b92f['status'](_0x14862a);return _0x41b92f[_0x5607('0x22')]('Content-Range',_0x2bf04b+'-'+_0x4d9218+'/'+_0x3c73f2)[_0x5607('0x1e')](_0x423507);}return null;};}function patchUpdates(_0x259e32){return function(_0x35bd58){try{jsonpatch['apply'](_0x35bd58,_0x259e32,!![]);}catch(_0xd136ca){return BPromise[_0x5607('0x23')](_0xd136ca);}return _0x35bd58[_0x5607('0x24')]();};}function saveUpdates(_0x59367e,_0x1b87a3){return function(_0x62819b){if(_0x62819b){return _0x62819b[_0x5607('0x25')](_0x59367e)[_0x5607('0x26')](function(_0x2570fd){return _0x2570fd;});}return null;};}function removeEntity(_0x63e5a3,_0x5a913a){return function(_0x3e5d10){if(_0x3e5d10){return _0x3e5d10[_0x5607('0x27')]()[_0x5607('0x26')](function(){_0x63e5a3['status'](0xcc)[_0x5607('0x1d')]();});}};}function handleEntityNotFound(_0x24ca34,_0x29a71e){return function(_0x19715d){if(!_0x19715d){_0x24ca34[_0x5607('0x1b')](0x194);}return _0x19715d;};}function handleError(_0x46b787,_0x2468dc){_0x2468dc=_0x2468dc||0x1f4;return function(_0x4ff19d){logger[_0x5607('0x28')](_0x4ff19d[_0x5607('0x29')]);if(_0x4ff19d[_0x5607('0x2a')]){delete _0x4ff19d[_0x5607('0x2a')];}_0x46b787[_0x5607('0x1c')](_0x2468dc)[_0x5607('0x2b')](_0x4ff19d);};}exports[_0x5607('0x2c')]=function(_0xc5bf85,_0x4bb306){var _0x5622bb={},_0x395c18={},_0x5557ac={'count':0x0,'rows':[]};var _0x6dcbc4=_[_0x5607('0x2d')](db[_0x5607('0x2e')][_0x5607('0x2f')],function(_0x44fb99){return{'name':_0x44fb99[_0x5607('0x30')],'type':_0x44fb99['type'][_0x5607('0x31')]};});_0x395c18[_0x5607('0x32')]=_[_0x5607('0x2d')](_0x6dcbc4,_0x5607('0x2a'));_0x395c18[_0x5607('0x33')]=_[_0x5607('0x34')](_0xc5bf85[_0x5607('0x33')]);_0x395c18[_0x5607('0x35')]=_['intersection'](_0x395c18[_0x5607('0x32')],_0x395c18['query']);_0x5622bb['attributes']=_[_0x5607('0x36')](_0x395c18[_0x5607('0x32')],qs[_0x5607('0x37')](_0xc5bf85[_0x5607('0x33')][_0x5607('0x37')]));_0x5622bb['attributes']=_0x5622bb[_0x5607('0x38')][_0x5607('0x39')]?_0x5622bb[_0x5607('0x38')]:_0x395c18[_0x5607('0x32')];if(!_0xc5bf85[_0x5607('0x33')]['hasOwnProperty'](_0x5607('0x3a'))){_0x5622bb[_0x5607('0x20')]=qs[_0x5607('0x20')](_0xc5bf85[_0x5607('0x33')][_0x5607('0x20')]);_0x5622bb[_0x5607('0x3b')]=qs['offset'](_0xc5bf85[_0x5607('0x33')][_0x5607('0x3b')]);}_0x5622bb[_0x5607('0x3c')]=qs[_0x5607('0x3d')](_0xc5bf85['query'][_0x5607('0x3d')]);_0x5622bb[_0x5607('0x3e')]=qs['filters'](_[_0x5607('0x3f')](_0xc5bf85[_0x5607('0x33')],_0x395c18[_0x5607('0x35')]),_0x6dcbc4);if(_0xc5bf85[_0x5607('0x33')][_0x5607('0x40')]){_0x5622bb[_0x5607('0x3e')]=_[_0x5607('0x41')](_0x5622bb[_0x5607('0x3e')],{'$or':_[_0x5607('0x2d')](_0x6dcbc4,function(_0x30782e){if(_0x30782e[_0x5607('0x42')]!=='VIRTUAL'){var _0x1098ff={};_0x1098ff[_0x30782e[_0x5607('0x2a')]]={'$like':'%'+_0xc5bf85[_0x5607('0x33')][_0x5607('0x40')]+'%'};return _0x1098ff;}})});}_0x5622bb=_['merge']({},_0x5622bb,_0xc5bf85['options']);var _0x28e4f6={'where':_0x5622bb['where']};return db['DeskField'][_0x5607('0x21')](_0x28e4f6)[_0x5607('0x26')](function(_0x1f71ad){_0x5557ac[_0x5607('0x21')]=_0x1f71ad;if(_0xc5bf85[_0x5607('0x33')][_0x5607('0x43')]){_0x5622bb[_0x5607('0x44')]=[{'all':!![]}];}return db[_0x5607('0x2e')][_0x5607('0x45')](_0x5622bb);})[_0x5607('0x26')](function(_0x2054cc){_0x5557ac[_0x5607('0x46')]=_0x2054cc;return _0x5557ac;})['then'](respondWithFilteredResult(_0x4bb306,_0x5622bb))[_0x5607('0x47')](handleError(_0x4bb306,null));};exports[_0x5607('0x48')]=function(_0xec2767,_0x510da5){var _0x53515e={'raw':!![],'where':{'id':_0xec2767[_0x5607('0x49')]['id']}},_0x4b47b5={};_0x4b47b5[_0x5607('0x32')]=_[_0x5607('0x34')](db[_0x5607('0x2e')]['rawAttributes']);_0x4b47b5[_0x5607('0x33')]=_['keys'](_0xec2767['query']);_0x4b47b5[_0x5607('0x35')]=_[_0x5607('0x36')](_0x4b47b5['model'],_0x4b47b5['query']);_0x53515e['attributes']=_[_0x5607('0x36')](_0x4b47b5[_0x5607('0x32')],qs['fields'](_0xec2767[_0x5607('0x33')][_0x5607('0x37')]));_0x53515e[_0x5607('0x38')]=_0x53515e[_0x5607('0x38')][_0x5607('0x39')]?_0x53515e[_0x5607('0x38')]:_0x4b47b5['model'];if(_0xec2767[_0x5607('0x33')][_0x5607('0x43')]){_0x53515e[_0x5607('0x44')]=[{'all':!![]}];}_0x53515e=_[_0x5607('0x41')]({},_0x53515e,_0xec2767[_0x5607('0x4a')]);return db[_0x5607('0x2e')]['find'](_0x53515e)[_0x5607('0x26')](handleEntityNotFound(_0x510da5,null))['then'](respondWithResult(_0x510da5,null))[_0x5607('0x47')](handleError(_0x510da5,null));};exports[_0x5607('0x4b')]=function(_0x474550,_0xf44f43){return db[_0x5607('0x2e')][_0x5607('0x4b')](_0x474550[_0x5607('0x4c')],{})['then'](respondWithResult(_0xf44f43,0xc9))[_0x5607('0x47')](handleError(_0xf44f43,null));};exports['update']=function(_0x745d7b,_0x115c59){if(_0x745d7b[_0x5607('0x4c')]['id']){delete _0x745d7b[_0x5607('0x4c')]['id'];}return db[_0x5607('0x2e')][_0x5607('0x4d')]({'where':{'id':_0x745d7b['params']['id']}})[_0x5607('0x26')](handleEntityNotFound(_0x115c59,null))['then'](saveUpdates(_0x745d7b[_0x5607('0x4c')],null))[_0x5607('0x26')](respondWithResult(_0x115c59,null))[_0x5607('0x47')](handleError(_0x115c59,null));};exports[_0x5607('0x27')]=function(_0x2e0bc5,_0x8fbf03){return db[_0x5607('0x2e')][_0x5607('0x4d')]({'where':{'id':_0x2e0bc5[_0x5607('0x49')]['id']}})[_0x5607('0x26')](handleEntityNotFound(_0x8fbf03,null))[_0x5607('0x26')](removeEntity(_0x8fbf03,null))['catch'](handleError(_0x8fbf03,null));};
\ No newline at end of file
index e98f18f..570d6cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb94=['request-promise','../../config/environment','./intDeskField.attributes','exports','DeskField','int_desk_fields','idField','lodash','util','../../config/logger','bluebird'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xcb94,0x146));var _0x4cb9=function(_0x3da61c,_0x224cc5){_0x3da61c=_0x3da61c-0x0;var _0x44aa5e=_0xcb94[_0x3da61c];return _0x44aa5e;};'use strict';var _=require(_0x4cb9('0x0'));var util=require(_0x4cb9('0x1'));var logger=require(_0x4cb9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x4cb9('0x3'));var rp=require(_0x4cb9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4cb9('0x5'));var attributes=require(_0x4cb9('0x6'));module[_0x4cb9('0x7')]=function(_0x2e32ea,_0x27817a){return _0x2e32ea['define'](_0x4cb9('0x8'),attributes,{'tableName':_0x4cb9('0x9'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x4cb9('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x13c7=['FieldId','lodash','util','../../config/logger','api','moment','path','../../config/environment','./intDeskField.attributes','define','DeskField','int_desk_fields','desk_unique_index'];(function(_0x5ec0b6,_0xaaf298){var _0x1e4c5f=function(_0x7e77d6){while(--_0x7e77d6){_0x5ec0b6['push'](_0x5ec0b6['shift']());}};_0x1e4c5f(++_0xaaf298);}(_0x13c7,0xde));var _0x713c=function(_0x353190,_0x5b0ca8){_0x353190=_0x353190-0x0;var _0x2fa150=_0x13c7[_0x353190];return _0x2fa150;};'use strict';var _=require(_0x713c('0x0'));var util=require(_0x713c('0x1'));var logger=require(_0x713c('0x2'))(_0x713c('0x3'));var moment=require(_0x713c('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x713c('0x5'));var rimraf=require('rimraf');var config=require(_0x713c('0x6'));var attributes=require(_0x713c('0x7'));module['exports']=function(_0x41544c,_0x37d30e){return _0x41544c[_0x713c('0x8')](_0x713c('0x9'),attributes,{'tableName':_0x713c('0xa'),'paranoid':![],'indexes':[{'name':_0x713c('0xb'),'fields':['idField',_0x713c('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3e21513..3ec7759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9563=['DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x18dfea,_0x43d571){var _0x5222e3=function(_0x3484ae){while(--_0x3484ae){_0x18dfea['push'](_0x18dfea['shift']());}};_0x5222e3(++_0x43d571);}(_0x9563,0xb5));var _0x3956=function(_0x4c8ba3,_0x597132){_0x4c8ba3=_0x4c8ba3-0x0;var _0x3aca65=_0x9563[_0x4c8ba3];return _0x3aca65;};'use strict';var _=require(_0x3956('0x0'));var util=require('util');var moment=require(_0x3956('0x1'));var BPromise=require(_0x3956('0x2'));var rs=require(_0x3956('0x3'));var fs=require('fs');var Redis=require(_0x3956('0x4'));var db=require(_0x3956('0x5'))['db'];var utils=require(_0x3956('0x6'));var logger=require('../../config/logger')(_0x3956('0x7'));var config=require(_0x3956('0x8'));var jayson=require(_0x3956('0x9'));var client=jayson['client'][_0x3956('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5cb03f,_0x4e7241,_0xbc7bcf){return new BPromise(function(_0x3a9dd7,_0x3d71eb){return client[_0x3956('0xb')](_0x5cb03f,_0xbc7bcf)[_0x3956('0xc')](function(_0x243b3a){logger[_0x3956('0xd')](_0x3956('0xe'),_0x4e7241,_0x3956('0xf'));logger[_0x3956('0x10')](_0x3956('0x11'),_0x4e7241,'request\x20sent',JSON[_0x3956('0x12')](_0x243b3a));if(_0x243b3a['error']){if(_0x243b3a[_0x3956('0x13')][_0x3956('0x14')]===0x1f4){logger[_0x3956('0x13')](_0x3956('0xe'),_0x4e7241,_0x243b3a[_0x3956('0x13')][_0x3956('0x15')]);return _0x3d71eb(_0x243b3a[_0x3956('0x13')][_0x3956('0x15')]);}logger[_0x3956('0x13')]('DeskField,\x20%s,\x20%s',_0x4e7241,_0x243b3a['error'][_0x3956('0x15')]);return _0x3a9dd7(_0x243b3a['error'][_0x3956('0x15')]);}else{logger[_0x3956('0xd')]('DeskField,\x20%s,\x20%s',_0x4e7241,_0x3956('0xf'));_0x3a9dd7(_0x243b3a['result'][_0x3956('0x15')]);}})['catch'](function(_0x3523e8){logger[_0x3956('0x13')](_0x3956('0xe'),_0x4e7241,_0x3523e8);_0x3d71eb(_0x3523e8);});});}
\ No newline at end of file
+var _0x164a=['DeskField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent'];(function(_0x55f1b5,_0x3dba02){var _0x339978=function(_0x2b91d7){while(--_0x2b91d7){_0x55f1b5['push'](_0x55f1b5['shift']());}};_0x339978(++_0x3dba02);}(_0x164a,0xa0));var _0xa164=function(_0xa64da9,_0x549be6){_0xa64da9=_0xa64da9-0x0;var _0x2e5f3a=_0x164a[_0xa64da9];return _0x2e5f3a;};'use strict';var _=require(_0xa164('0x0'));var util=require(_0xa164('0x1'));var moment=require('moment');var BPromise=require(_0xa164('0x2'));var rs=require(_0xa164('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa164('0x4'))['db'];var utils=require(_0xa164('0x5'));var logger=require(_0xa164('0x6'))(_0xa164('0x7'));var config=require(_0xa164('0x8'));var jayson=require(_0xa164('0x9'));var client=jayson[_0xa164('0xa')][_0xa164('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a3861,_0xe2d92a,_0x43a648){return new BPromise(function(_0x4ee03b,_0x56701c){return client[_0xa164('0xc')](_0x4a3861,_0x43a648)[_0xa164('0xd')](function(_0x44cb3b){logger['info'](_0xa164('0xe'),_0xe2d92a,_0xa164('0xf'));logger['debug'](_0xa164('0x10'),_0xe2d92a,_0xa164('0xf'),JSON[_0xa164('0x11')](_0x44cb3b));if(_0x44cb3b['error']){if(_0x44cb3b['error'][_0xa164('0x12')]===0x1f4){logger[_0xa164('0x13')]('DeskField,\x20%s,\x20%s',_0xe2d92a,_0x44cb3b[_0xa164('0x13')]['message']);return _0x56701c(_0x44cb3b[_0xa164('0x13')][_0xa164('0x14')]);}logger[_0xa164('0x13')](_0xa164('0xe'),_0xe2d92a,_0x44cb3b[_0xa164('0x13')][_0xa164('0x14')]);return _0x4ee03b(_0x44cb3b['error']['message']);}else{logger[_0xa164('0x15')](_0xa164('0xe'),_0xe2d92a,_0xa164('0xf'));_0x4ee03b(_0x44cb3b['result'][_0xa164('0x14')]);}})['catch'](function(_0x4b1772){logger['error'](_0xa164('0xe'),_0xe2d92a,_0x4b1772);_0x56701c(_0x4b1772);});});}
\ No newline at end of file
index a1a72e7..7bf0438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1c1=['get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','post','addConfiguration','/:id','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0xf1c1,0xb4));var _0x1f1c=function(_0x29622b,_0x44d6b8){_0x29622b=_0x29622b-0x0;var _0x252568=_0xf1c1[_0x29622b];return _0x252568;};'use strict';var multer=require(_0x1f1c('0x0'));var util=require(_0x1f1c('0x1'));var path=require('path');var timeout=require(_0x1f1c('0x2'));var express=require(_0x1f1c('0x3'));var router=express[_0x1f1c('0x4')]();var fs_extra=require(_0x1f1c('0x5'));var auth=require(_0x1f1c('0x6'));var interaction=require(_0x1f1c('0x7'));var config=require('../../config/environment');var controller=require(_0x1f1c('0x8'));router[_0x1f1c('0x9')]('/',auth[_0x1f1c('0xa')](),controller[_0x1f1c('0xb')]);router[_0x1f1c('0x9')]('/:id',auth[_0x1f1c('0xa')](),controller[_0x1f1c('0xc')]);router['get'](_0x1f1c('0xd'),auth[_0x1f1c('0xa')](),controller[_0x1f1c('0xe')]);router[_0x1f1c('0x9')](_0x1f1c('0xf'),auth[_0x1f1c('0xa')](),controller['getFields']);router['post']('/',auth[_0x1f1c('0xa')](),controller['create']);router[_0x1f1c('0x10')]('/:id/configurations',auth[_0x1f1c('0xa')](),controller[_0x1f1c('0x11')]);router['put'](_0x1f1c('0x12'),auth[_0x1f1c('0xa')](),controller['update']);router[_0x1f1c('0x13')]('/:id',auth[_0x1f1c('0xa')](),controller[_0x1f1c('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x9c5f=['isAuthenticated','index','/:id','show','create','post','/:id/configurations','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get'];(function(_0x51baf0,_0x3eec65){var _0x37b4ef=function(_0x28359b){while(--_0x28359b){_0x51baf0['push'](_0x51baf0['shift']());}};_0x37b4ef(++_0x3eec65);}(_0x9c5f,0x17c));var _0xf9c5=function(_0x4530da,_0x20b71e){_0x4530da=_0x4530da-0x0;var _0xf8401e=_0x9c5f[_0x4530da];return _0xf8401e;};'use strict';var multer=require(_0xf9c5('0x0'));var util=require(_0xf9c5('0x1'));var path=require(_0xf9c5('0x2'));var timeout=require(_0xf9c5('0x3'));var express=require(_0xf9c5('0x4'));var router=express[_0xf9c5('0x5')]();var fs_extra=require(_0xf9c5('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xf9c5('0x7'));var config=require(_0xf9c5('0x8'));var controller=require(_0xf9c5('0x9'));router[_0xf9c5('0xa')]('/',auth[_0xf9c5('0xb')](),controller[_0xf9c5('0xc')]);router['get'](_0xf9c5('0xd'),auth[_0xf9c5('0xb')](),controller[_0xf9c5('0xe')]);router[_0xf9c5('0xa')]('/:id/configurations',auth[_0xf9c5('0xb')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xf9c5('0xb')](),controller['getFields']);router['post']('/',auth[_0xf9c5('0xb')](),controller[_0xf9c5('0xf')]);router[_0xf9c5('0x10')](_0xf9c5('0x11'),auth[_0xf9c5('0xb')](),controller[_0xf9c5('0x12')]);router[_0xf9c5('0x13')]('/:id',auth[_0xf9c5('0xb')](),controller[_0xf9c5('0x14')]);router['delete'](_0xf9c5('0xd'),auth[_0xf9c5('0xb')](),controller[_0xf9c5('0x15')]);module[_0xf9c5('0x16')]=router;
\ No newline at end of file
index 356d1bf..056938f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb910=['sequelize','STRING'];(function(_0x10d34b,_0x4fef76){var _0x92b0bf=function(_0x16e291){while(--_0x16e291){_0x10d34b['push'](_0x10d34b['shift']());}};_0x92b0bf(++_0x4fef76);}(_0xb910,0x1b2));var _0x0b91=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0xb910[_0x487b0c];return _0x1adbdc;};'use strict';var Sequelize=require(_0x0b91('0x0'));module['exports']={'name':{'type':Sequelize[_0x0b91('0x1')]},'username':{'type':Sequelize[_0x0b91('0x1')]},'password':{'type':Sequelize[_0x0b91('0x1')]},'remoteUri':{'type':Sequelize[_0x0b91('0x1')]},'tenantId':{'type':Sequelize[_0x0b91('0x1')]},'clientId':{'type':Sequelize[_0x0b91('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x0b91('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x0b91('0x1')]}};
\ No newline at end of file
+var _0xf759=['STRING','sequelize','exports'];(function(_0x270474,_0x313635){var _0xf6414a=function(_0x588a6e){while(--_0x588a6e){_0x270474['push'](_0x270474['shift']());}};_0xf6414a(++_0x313635);}(_0xf759,0x154));var _0x9f75=function(_0x401a8a,_0x24f0d7){_0x401a8a=_0x401a8a-0x0;var _0x32fb1f=_0xf759[_0x401a8a];return _0x32fb1f;};'use strict';var Sequelize=require(_0x9f75('0x0'));module[_0x9f75('0x1')]={'name':{'type':Sequelize[_0x9f75('0x2')]},'username':{'type':Sequelize[_0x9f75('0x2')]},'password':{'type':Sequelize[_0x9f75('0x2')]},'remoteUri':{'type':Sequelize[_0x9f75('0x2')]},'tenantId':{'type':Sequelize[_0x9f75('0x2')]},'clientId':{'type':Sequelize[_0x9f75('0x2')]},'clientSecret':{'type':Sequelize[_0x9f75('0x2')]},'serverUrl':{'type':Sequelize[_0x9f75('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x9f75('0x2')]}};
\ No newline at end of file
index 0d6287c..73b4313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['body','getConfigurations','Dynamics365Configuration','pick','hasOwnProperty','addConfiguration','findOne','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','getFields','incident','Incident','PhoneCall','description','customerid','ownerid','caseorigincode','subject','regardingobjectid','phonecall_activity_parties','accountidname','accountidyominame','billedserviceunits','contactidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridname','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','username','password','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','%s/api/data/v9.0/','https://login.microsoftonline.com/','/oauth2/token','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','push','all','isNil','BooleanAttributeMetadata','StringAttributeMetadata','BigIntAttributeMetadata','MemoAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value','DisplayName',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false','?$select=DisplayName,LogicalName','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','type','key','keys','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','merge','VIRTUAL','filter','where','Dynamics365Account','includeAll','findAll','rows','catch','show','params','options','find','create'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x5fd1,0x155));var _0x15fd=function(_0x242a61,_0x2f1583){_0x242a61=_0x242a61-0x0;var _0x329084=_0x5fd1[_0x242a61];return _0x329084;};'use strict';var emlformat=require(_0x15fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x15fd('0x1'));var jsonpatch=require(_0x15fd('0x2'));var rp=require(_0x15fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x15fd('0x4'));var util=require(_0x15fd('0x5'));var path=require(_0x15fd('0x6'));var sox=require('sox');var csv=require(_0x15fd('0x7'));var ejs=require(_0x15fd('0x8'));var fs=require('fs');var fs_extra=require(_0x15fd('0x9'));var _=require(_0x15fd('0xa'));var squel=require(_0x15fd('0xb'));var crypto=require('crypto');var jsforce=require(_0x15fd('0xc'));var deskjs=require(_0x15fd('0xd'));var toCsv=require(_0x15fd('0x7'));var querystring=require('querystring');var Papa=require(_0x15fd('0xe'));var Redis=require('ioredis');var authService=require(_0x15fd('0xf'));var qs=require(_0x15fd('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x15fd('0x11'));var utils=require(_0x15fd('0x12'));var config=require(_0x15fd('0x13'));var licenseUtil=require(_0x15fd('0x14'));var db=require(_0x15fd('0x15'))['db'];var integrations=require(_0x15fd('0x16'));function respondWithStatusCode(_0x346ab1,_0x2660db){_0x2660db=_0x2660db||0xcc;return function(_0x459fa4){if(_0x459fa4){return _0x346ab1['sendStatus'](_0x2660db);}return _0x346ab1['status'](_0x2660db)['end']();};}function respondWithResult(_0x3fda60,_0x135a15){_0x135a15=_0x135a15||0xc8;return function(_0x624e9b){if(_0x624e9b){return _0x3fda60[_0x15fd('0x17')](_0x135a15)[_0x15fd('0x18')](_0x624e9b);}};}function respondWithFilteredResult(_0x2ffa03,_0x2c5375){return function(_0x44a63a){if(_0x44a63a){var _0x5aae13=typeof _0x2c5375['offset']===_0x15fd('0x19')&&typeof _0x2c5375['limit']===_0x15fd('0x19');var _0x579ee2=_0x44a63a[_0x15fd('0x1a')];var _0x318f47=_0x5aae13?0x0:_0x2c5375[_0x15fd('0x1b')];var _0x49ceac=_0x5aae13?_0x44a63a[_0x15fd('0x1a')]:_0x2c5375[_0x15fd('0x1b')]+_0x2c5375[_0x15fd('0x1c')];var _0x229f8a;if(_0x49ceac>=_0x579ee2){_0x49ceac=_0x579ee2;_0x229f8a=0xc8;}else{_0x229f8a=0xce;}_0x2ffa03[_0x15fd('0x17')](_0x229f8a);return _0x2ffa03[_0x15fd('0x1d')](_0x15fd('0x1e'),_0x318f47+'-'+_0x49ceac+'/'+_0x579ee2)[_0x15fd('0x18')](_0x44a63a);}return null;};}function patchUpdates(_0x1b8b9f){return function(_0x1eab55){try{jsonpatch[_0x15fd('0x1f')](_0x1eab55,_0x1b8b9f,!![]);}catch(_0x484db6){return BPromise['reject'](_0x484db6);}return _0x1eab55[_0x15fd('0x20')]();};}function saveUpdates(_0x36b21e,_0x252a1c){return function(_0x118a2b){if(_0x118a2b){return _0x118a2b[_0x15fd('0x21')](_0x36b21e)[_0x15fd('0x22')](function(_0x2073da){return _0x2073da;});}return null;};}function removeEntity(_0x50d493,_0x40d43){return function(_0x2d19ac){if(_0x2d19ac){return _0x2d19ac[_0x15fd('0x23')]()['then'](function(){_0x50d493[_0x15fd('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d1835,_0x1fc24f){return function(_0x21601d){if(!_0x21601d){_0x3d1835['sendStatus'](0x194);}return _0x21601d;};}function handleError(_0x16b87c,_0x1cbf2c){_0x1cbf2c=_0x1cbf2c||0x1f4;return function(_0x24c541){logger['error'](_0x24c541[_0x15fd('0x24')]);if(_0x24c541['name']){delete _0x24c541[_0x15fd('0x25')];}_0x16b87c[_0x15fd('0x17')](_0x1cbf2c)[_0x15fd('0x26')](_0x24c541);};}exports[_0x15fd('0x27')]=function(_0x233ed3,_0x6c213b){var _0x218034={},_0xe650a3={},_0x4590a1={'count':0x0,'rows':[]};var _0x160226=_[_0x15fd('0x28')](db['Dynamics365Account'][_0x15fd('0x29')],function(_0x2fe61e){return{'name':_0x2fe61e['fieldName'],'type':_0x2fe61e[_0x15fd('0x2a')][_0x15fd('0x2b')]};});_0xe650a3['model']=_[_0x15fd('0x28')](_0x160226,_0x15fd('0x25'));_0xe650a3['query']=_[_0x15fd('0x2c')](_0x233ed3[_0x15fd('0x2d')]);_0xe650a3[_0x15fd('0x2e')]=_[_0x15fd('0x2f')](_0xe650a3[_0x15fd('0x30')],_0xe650a3[_0x15fd('0x2d')]);_0x218034['attributes']=_[_0x15fd('0x2f')](_0xe650a3[_0x15fd('0x30')],qs[_0x15fd('0x31')](_0x233ed3[_0x15fd('0x2d')]['fields']));_0x218034[_0x15fd('0x32')]=_0x218034[_0x15fd('0x32')][_0x15fd('0x33')]?_0x218034[_0x15fd('0x32')]:_0xe650a3[_0x15fd('0x30')];if(!_0x233ed3[_0x15fd('0x2d')]['hasOwnProperty'](_0x15fd('0x34'))){_0x218034[_0x15fd('0x1c')]=qs['limit'](_0x233ed3[_0x15fd('0x2d')][_0x15fd('0x1c')]);_0x218034[_0x15fd('0x1b')]=qs['offset'](_0x233ed3[_0x15fd('0x2d')][_0x15fd('0x1b')]);}_0x218034[_0x15fd('0x35')]=qs[_0x15fd('0x36')](_0x233ed3[_0x15fd('0x2d')][_0x15fd('0x36')]);_0x218034['where']=qs['filters'](_['pick'](_0x233ed3[_0x15fd('0x2d')],_0xe650a3[_0x15fd('0x2e')]),_0x160226);if(_0x233ed3[_0x15fd('0x2d')]['filter']){_0x218034['where']=_[_0x15fd('0x37')](_0x218034['where'],{'$or':_['map'](_0x160226,function(_0x4c1aa8){if(_0x4c1aa8[_0x15fd('0x2a')]!==_0x15fd('0x38')){var _0x217300={};_0x217300[_0x4c1aa8['name']]={'$like':'%'+_0x233ed3[_0x15fd('0x2d')][_0x15fd('0x39')]+'%'};return _0x217300;}})});}_0x218034=_[_0x15fd('0x37')]({},_0x218034,_0x233ed3['options']);var _0x1d693e={'where':_0x218034[_0x15fd('0x3a')]};return db[_0x15fd('0x3b')][_0x15fd('0x1a')](_0x1d693e)[_0x15fd('0x22')](function(_0x46b8f4){_0x4590a1[_0x15fd('0x1a')]=_0x46b8f4;if(_0x233ed3[_0x15fd('0x2d')][_0x15fd('0x3c')]){_0x218034['include']=[{'all':!![]}];}return db[_0x15fd('0x3b')][_0x15fd('0x3d')](_0x218034);})[_0x15fd('0x22')](function(_0x304736){_0x4590a1[_0x15fd('0x3e')]=_0x304736;return _0x4590a1;})[_0x15fd('0x22')](respondWithFilteredResult(_0x6c213b,_0x218034))[_0x15fd('0x3f')](handleError(_0x6c213b,null));};exports[_0x15fd('0x40')]=function(_0x343ce6,_0x104eef){var _0x2eb6b6={'raw':![],'where':{'id':_0x343ce6[_0x15fd('0x41')]['id']}},_0x145eab={};_0x145eab[_0x15fd('0x30')]=_[_0x15fd('0x2c')](db['Dynamics365Account'][_0x15fd('0x29')]);_0x145eab[_0x15fd('0x2d')]=_[_0x15fd('0x2c')](_0x343ce6[_0x15fd('0x2d')]);_0x145eab[_0x15fd('0x2e')]=_[_0x15fd('0x2f')](_0x145eab[_0x15fd('0x30')],_0x145eab[_0x15fd('0x2d')]);_0x2eb6b6['attributes']=_['intersection'](_0x145eab[_0x15fd('0x30')],qs['fields'](_0x343ce6[_0x15fd('0x2d')][_0x15fd('0x31')]));_0x2eb6b6['attributes']=_0x2eb6b6[_0x15fd('0x32')][_0x15fd('0x33')]?_0x2eb6b6[_0x15fd('0x32')]:_0x145eab[_0x15fd('0x30')];if(_0x343ce6[_0x15fd('0x2d')][_0x15fd('0x3c')]){_0x2eb6b6['include']=[{'all':!![]}];}_0x2eb6b6=_[_0x15fd('0x37')]({},_0x2eb6b6,_0x343ce6[_0x15fd('0x42')]);return db[_0x15fd('0x3b')][_0x15fd('0x43')](_0x2eb6b6)[_0x15fd('0x22')](handleEntityNotFound(_0x104eef,null))[_0x15fd('0x22')](respondWithResult(_0x104eef,null))[_0x15fd('0x3f')](handleError(_0x104eef,null));};exports[_0x15fd('0x44')]=function(_0x24cb44,_0x1d3beb){return db[_0x15fd('0x3b')][_0x15fd('0x44')](_0x24cb44['body'],{})[_0x15fd('0x22')](respondWithResult(_0x1d3beb,0xc9))['catch'](handleError(_0x1d3beb,null));};exports[_0x15fd('0x21')]=function(_0x34c250,_0xeb1e06){if(_0x34c250['body']['id']){delete _0x34c250[_0x15fd('0x45')]['id'];}return db[_0x15fd('0x3b')][_0x15fd('0x43')]({'where':{'id':_0x34c250[_0x15fd('0x41')]['id']}})['then'](handleEntityNotFound(_0xeb1e06,null))[_0x15fd('0x22')](saveUpdates(_0x34c250[_0x15fd('0x45')],null))[_0x15fd('0x22')](respondWithResult(_0xeb1e06,null))[_0x15fd('0x3f')](handleError(_0xeb1e06,null));};exports['destroy']=function(_0x56c6be,_0x322623){return db['Dynamics365Account']['find']({'where':{'id':_0x56c6be['params']['id']}})[_0x15fd('0x22')](handleEntityNotFound(_0x322623,null))[_0x15fd('0x22')](removeEntity(_0x322623,null))[_0x15fd('0x3f')](handleError(_0x322623,null));};exports[_0x15fd('0x46')]=function(_0x292174,_0x33a128,_0x595501){var _0xbe7dc3={};var _0x22cc14={};var _0xbb16ef;var _0x516b25;return db[_0x15fd('0x3b')]['findOne']({'where':{'id':_0x292174[_0x15fd('0x41')]['id']}})[_0x15fd('0x22')](handleEntityNotFound(_0x33a128,null))[_0x15fd('0x22')](function(_0x42d4de){if(_0x42d4de){_0xbb16ef=_0x42d4de;_0x22cc14[_0x15fd('0x30')]=_[_0x15fd('0x2c')](db[_0x15fd('0x47')][_0x15fd('0x29')]);_0x22cc14[_0x15fd('0x2d')]=_[_0x15fd('0x2c')](_0x292174[_0x15fd('0x2d')]);_0x22cc14[_0x15fd('0x2e')]=_[_0x15fd('0x2f')](_0x22cc14['model'],_0x22cc14[_0x15fd('0x2d')]);_0xbe7dc3['attributes']=_[_0x15fd('0x2f')](_0x22cc14['model'],qs[_0x15fd('0x31')](_0x292174[_0x15fd('0x2d')][_0x15fd('0x31')]));_0xbe7dc3['attributes']=_0xbe7dc3['attributes'][_0x15fd('0x33')]?_0xbe7dc3[_0x15fd('0x32')]:_0x22cc14[_0x15fd('0x30')];_0xbe7dc3[_0x15fd('0x35')]=qs['sort'](_0x292174[_0x15fd('0x2d')][_0x15fd('0x36')]);_0xbe7dc3[_0x15fd('0x3a')]=qs[_0x15fd('0x2e')](_[_0x15fd('0x48')](_0x292174[_0x15fd('0x2d')],_0x22cc14['filters']));if(_0x292174[_0x15fd('0x2d')][_0x15fd('0x39')]){_0xbe7dc3[_0x15fd('0x3a')]=_[_0x15fd('0x37')](_0xbe7dc3[_0x15fd('0x3a')],{'$or':_[_0x15fd('0x28')](_0xbe7dc3['attributes'],function(_0x4f2a17){var _0x149b20={};_0x149b20[_0x4f2a17]={'$like':'%'+_0x292174[_0x15fd('0x2d')]['filter']+'%'};return _0x149b20;})});}_0xbe7dc3=_[_0x15fd('0x37')]({},_0xbe7dc3,_0x292174[_0x15fd('0x42')]);return _0xbb16ef['getConfigurations'](_0xbe7dc3);}})[_0x15fd('0x22')](function(_0x4626ac){if(_0x4626ac){_0x516b25=_0x4626ac[_0x15fd('0x33')];if(!_0x292174['query'][_0x15fd('0x49')](_0x15fd('0x34'))){_0xbe7dc3[_0x15fd('0x1c')]=qs[_0x15fd('0x1c')](_0x292174[_0x15fd('0x2d')][_0x15fd('0x1c')]);_0xbe7dc3[_0x15fd('0x1b')]=qs[_0x15fd('0x1b')](_0x292174[_0x15fd('0x2d')][_0x15fd('0x1b')]);}return _0xbb16ef['getConfigurations'](_0xbe7dc3);}})[_0x15fd('0x22')](function(_0x3a26c8){if(_0x3a26c8){return _0x3a26c8?{'count':_0x516b25,'rows':_0x3a26c8}:null;}})['then'](respondWithResult(_0x33a128,null))['catch'](handleError(_0x33a128,null));};exports[_0x15fd('0x4a')]=function(_0x39e6ee,_0x2bd6ef,_0x105f03){if(_0x39e6ee[_0x15fd('0x45')]['id']){delete _0x39e6ee[_0x15fd('0x45')]['id'];}return db['Dynamics365Account'][_0x15fd('0x4b')]({'where':{'id':_0x39e6ee[_0x15fd('0x41')]['id']}})[_0x15fd('0x22')](handleEntityNotFound(_0x2bd6ef,null))[_0x15fd('0x22')](function(_0x7b4413){if(_0x7b4413){_0x39e6ee[_0x15fd('0x45')][_0x15fd('0x4c')]=_0x7b4413['id'];_0x39e6ee[_0x15fd('0x45')][_0x15fd('0x4d')]=integrations[_0x15fd('0x4e')](_0x39e6ee[_0x15fd('0x45')]['channel'],_0x39e6ee['body'][_0x15fd('0x2a')]);_0x39e6ee[_0x15fd('0x45')][_0x15fd('0x4f')]=integrations[_0x15fd('0x50')](_0x39e6ee[_0x15fd('0x45')][_0x15fd('0x51')],_0x39e6ee[_0x15fd('0x45')]['type']);return db[_0x15fd('0x47')]['create'](_0x39e6ee[_0x15fd('0x45')],{'include':[{'model':db['Dynamics365Field'],'as':_0x15fd('0x4d')},{'model':db['Dynamics365Field'],'as':_0x15fd('0x4f')}]});}return null;})[_0x15fd('0x22')](respondWithResult(_0x2bd6ef,null))[_0x15fd('0x3f')](handleError(_0x2bd6ef,null));};exports[_0x15fd('0x52')]=function(_0x2e3c9a,_0x1e3bf7,_0xb910a4){var _0x29c0bf=_0x2e3c9a[_0x15fd('0x2d')]['ticketType'];var _0x4efb15=_0x29c0bf===_0x15fd('0x53')?_0x15fd('0x54'):_0x15fd('0x55');var _0x4a8659='';var _0x2614b6='';var _0x36bc03='';var _0x333528='';var _0x56cf8c='';var _0x3bf85b='';var _0x317db9='';var _0x58b433='';var _0xb8b2e0=['title',_0x15fd('0x56'),_0x15fd('0x57'),_0x15fd('0x58'),_0x15fd('0x59'),_0x15fd('0x5a'),'phonenumber',_0x15fd('0x5b'),'directioncode',_0x15fd('0x5c')];var _0x4a165f=[_0x15fd('0x5d'),_0x15fd('0x5e'),'actualserviceunits',_0x15fd('0x5f'),_0x15fd('0x60'),'contactidyominame','contractdetailidname',_0x15fd('0x61'),'createdbyexternalpartyname',_0x15fd('0x62'),_0x15fd('0x63'),_0x15fd('0x64'),_0x15fd('0x65'),_0x15fd('0x66'),'createdonbehalfbyyominame',_0x15fd('0x67'),_0x15fd('0x68'),'customeridyominame',_0x15fd('0x69'),_0x15fd('0x6a'),_0x15fd('0x6b'),_0x15fd('0x6c'),_0x15fd('0x6d'),_0x15fd('0x6e'),_0x15fd('0x6f'),_0x15fd('0x70'),_0x15fd('0x71'),_0x15fd('0x72'),_0x15fd('0x73'),_0x15fd('0x74'),_0x15fd('0x75'),_0x15fd('0x76'),'modifiedbyexternalpartyyominame',_0x15fd('0x77'),'modifiedbyyominame',_0x15fd('0x78'),_0x15fd('0x79'),_0x15fd('0x7a'),_0x15fd('0x7b'),'msdyn_iotalertname',_0x15fd('0x7c'),_0x15fd('0x7d'),_0x15fd('0x7e'),_0x15fd('0x7f'),'owneridtype',_0x15fd('0x80'),_0x15fd('0x81'),'primarycontactidname',_0x15fd('0x82'),_0x15fd('0x83'),_0x15fd('0x84'),'productserialnumber',_0x15fd('0x85'),_0x15fd('0x86'),_0x15fd('0x87'),_0x15fd('0x88'),_0x15fd('0x89'),_0x15fd('0x8a'),_0x15fd('0x8b'),_0x15fd('0x8c'),_0x15fd('0x8d'),_0x15fd('0x8e'),_0x15fd('0x8f'),_0x15fd('0x90'),'ticketnumber',_0x15fd('0x91'),_0x15fd('0x92'),_0x15fd('0x93'),_0x15fd('0x94'),_0x15fd('0x95')];var _0x5f2682=_0xb8b2e0['concat'](_0x4a165f);return db[_0x15fd('0x3b')][_0x15fd('0x4b')]({'where':{'id':_0x2e3c9a[_0x15fd('0x41')]['id']},'attributes':['id',_0x15fd('0x96'),_0x15fd('0x97'),_0x15fd('0x98'),_0x15fd('0x99'),_0x15fd('0x9a'),_0x15fd('0x9b')]})['then'](handleEntityNotFound(_0x1e3bf7,null))[_0x15fd('0x22')](function(_0x23d547){if(_0x23d547){_0x58b433=_0x23d547['remoteUri'];var _0x27c68e=_0x58b433[_0x15fd('0x9c')](-0x1);if(_0x27c68e==='/'){_0x58b433=_0x58b433[_0x15fd('0x9d')](0x0,_0x58b433[_0x15fd('0x9e')](_0x27c68e));}_0x317db9=util['format'](_0x15fd('0x9f'),_0x58b433);var _0x2928b0={'method':'POST','uri':_0x15fd('0xa0')+_0x23d547[_0x15fd('0x99')]+_0x15fd('0xa1'),'form':{'client_id':_0x23d547['clientId'],'resource':_0x58b433,'username':_0x23d547[_0x15fd('0x96')],'password':_0x23d547[_0x15fd('0x97')],'grant_type':_0x15fd('0x97'),'client_secret':_0x23d547[_0x15fd('0x9b')]},'json':!![]};return rp(_0x2928b0);}})[_0x15fd('0x22')](function(_0x906e41){_0x3bf85b=_0x906e41[_0x15fd('0xa2')];var _0x3d548f={'method':'GET','uri':encodeURI(_0x317db9+_0x15fd('0xa3')+_0x4efb15+'\x27'),'headers':{'Authorization':_0x15fd('0xa4')+_0x3bf85b,'If-None-Match':null,'OData-Version':_0x15fd('0xa5')},'json':!![]};return rp(_0x3d548f);})[_0x15fd('0x22')](function(_0x1b1fee){var _0xb3339a=_0x1b1fee[_0x15fd('0xa6')][0x0];var _0x939bfd=_0xb3339a[_0x15fd('0xa7')];var _0x264a98={'method':_0x15fd('0xa8'),'uri':_0x317db9+_0x15fd('0xa9')+_0x939bfd+_0x15fd('0xaa'),'headers':{'Authorization':_0x15fd('0xa4')+_0x3bf85b,'If-None-Match':null,'OData-Version':_0x15fd('0xa5')},'json':!![]};return rp(_0x264a98);})[_0x15fd('0x22')](function(_0xa2d3e9){_0x4a8659=_0xa2d3e9;_0x2614b6=_0x4a8659[_0x15fd('0xab')];_0x2614b6=_[_0x15fd('0xac')](_0x2614b6,function(_0x178dac){return!_0x5f2682[_0x15fd('0xad')](_0x178dac[_0x15fd('0xae')]);});var _0x3c5f21=[];var _0x1014e1=[];_0x2614b6[_0x15fd('0xaf')](function(_0x104b18){if(_0x104b18['@odata.type']){var _0x2217eb=_0x104b18[_0x15fd('0xb0')]['substring'](_0x104b18[_0x15fd('0xb0')][_0x15fd('0x9e')]('.')+0x1);if(_0x2217eb===_0x15fd('0xb1')){_0x3c5f21[_0x15fd('0xb2')](getSelectList(_0x317db9,_0x29c0bf,_0x1014e1,_0x4a8659['MetadataId'],_0x104b18['MetadataId'],_0x3bf85b));}}});return Promise[_0x15fd('0xb3')](_0x3c5f21);})['then'](function(_0x3f4d0d){_0x36bc03=_0x3f4d0d[0x0];var _0x3e47fe=[];var _0x33b3c8=[];_0x2614b6[_0x15fd('0xaf')](function(_0xad8c8c){if(!_[_0x15fd('0xb4')](_0xad8c8c[_0x15fd('0xb0')])){var _0x500bff=_0xad8c8c['@odata.type'][_0x15fd('0x9d')](_0xad8c8c[_0x15fd('0xb0')][_0x15fd('0x9e')]('.')+0x1);if(_0x500bff===_0x15fd('0xb5')){_0x3e47fe[_0x15fd('0xb2')](getBooleanList(_0x317db9,_0x29c0bf,_0x33b3c8,_0x4a8659[_0x15fd('0xa7')],_0xad8c8c['MetadataId'],_0x3bf85b));}}});return Promise['all'](_0x3e47fe);})[_0x15fd('0x22')](function(_0x190a30){_0x333528=_0x190a30[0x0];var _0x196619=[];var _0xfc8f62=[];_0x2614b6[_0x15fd('0xaf')](function(_0x17e8c5){if(_0x17e8c5['@odata.type']){var _0x188e6b=_0x17e8c5['@odata.type'][_0x15fd('0x9d')](_0x17e8c5[_0x15fd('0xb0')][_0x15fd('0x9e')]('.')+0x1);if(_0x188e6b===_0x15fd('0xb6')||_0x188e6b==='DoubleAttributeMetadata'||_0x188e6b===_0x15fd('0xb7')||_0x188e6b==='IntegerAttributeMetadata'||_0x188e6b===_0x15fd('0xb8')||_0x188e6b==='DateTimeAttributeMetadata'||_0x188e6b==='StatusAttributeMetadata'||_0x188e6b===_0x15fd('0xb9')||_0x188e6b===_0x15fd('0xba')||_0x188e6b===_0x15fd('0xbb')){_0x196619[_0x15fd('0xb2')](getInputList(_0x317db9,_0x29c0bf,_0x188e6b,_0xfc8f62,_0x4a8659[_0x15fd('0xa7')],_0x17e8c5[_0x15fd('0xa7')],_0x3bf85b));}}});return Promise['all'](_0x196619);})[_0x15fd('0x22')](function(_0x5efa86){_0x56cf8c=_0x5efa86[0x0];var _0xb1845f=_0x36bc03[_0x15fd('0xbc')](_0x333528)[_0x15fd('0xbc')](_0x56cf8c);var _0x4079d3={'count':_0xb1845f[_0x15fd('0x33')],'rows':_0xb1845f};return _0x4079d3;})[_0x15fd('0x22')](respondWithResult(_0x1e3bf7,null))[_0x15fd('0x3f')](function(_0x2d17ae){var _0x102c3d=_0x2e3c9a[_0x15fd('0x2d')][_0x15fd('0xbd')]?0x1f4:_0x2d17ae[_0x15fd('0xbe')]||0x1f4;logger['error'](_0x2d17ae[_0x15fd('0x24')]);delete _0x2d17ae[_0x15fd('0x25')];if(_0x102c3d===0x191){_0x102c3d=0x190;}_0x1e3bf7[_0x15fd('0x17')](_0x102c3d)[_0x15fd('0x26')](_0x2e3c9a[_0x15fd('0x2d')][_0x15fd('0xbd')]?{'message':'Wrong\x20credentials','statusCode':_0x2d17ae['statusCode']}:_0x2d17ae);});};function getSelectList(_0x30304a,_0x470960,_0x31216d,_0xc9a733,_0x5d87c0,_0x5ed070){var _0x1abaa7={'method':_0x15fd('0xa8'),'uri':_0x30304a+_0x15fd('0xa9')+_0xc9a733+')/Attributes('+_0x5d87c0+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x15fd('0xbf'),'headers':{'Authorization':_0x15fd('0xa4')+_0x5ed070,'If-None-Match':null,'OData-Version':_0x15fd('0xa5')},'json':!![]};return rp(_0x1abaa7)[_0x15fd('0x22')](function(_0x47a7bc){var _0x458750=[];var _0x399a59=_0x47a7bc[_0x15fd('0xc0')][_0x15fd('0xc1')];_0x399a59[_0x15fd('0xaf')](function(_0x5d397f){_0x458750['push']({'name':_0x5d397f[_0x15fd('0xc2')][_0x15fd('0xc3')][_0x15fd('0xc2')],'value':String(_0x5d397f[_0x15fd('0xc4')])});});var _0x17daaf={'id':_0x470960+'_'+_0x47a7bc[_0x15fd('0xae')],'name':_0x47a7bc[_0x15fd('0xc5')]['UserLocalizedLabel'][_0x15fd('0xc2')],'custom':![],'options':_0x458750};_0x31216d['push'](_0x17daaf);return _0x31216d;});}function getBooleanList(_0x5a872f,_0x11aa1f,_0x15f531,_0x5cd3ef,_0x30227e,_0x2f223c){var _0x3d9efb={'method':'GET','uri':_0x5a872f+_0x15fd('0xa9')+_0x5cd3ef+_0x15fd('0xc6')+_0x30227e+_0x15fd('0xc7'),'headers':{'Authorization':_0x15fd('0xa4')+_0x2f223c,'If-None-Match':null,'OData-Version':_0x15fd('0xa5')},'json':!![]};return rp(_0x3d9efb)[_0x15fd('0x22')](function(_0x1380f3){var _0x2c3376=[];_0x2c3376[_0x15fd('0xb2')]({'name':_0x1380f3[_0x15fd('0xc0')][_0x15fd('0xc8')]['Label'][_0x15fd('0xc3')]['Label'],'value':_0x15fd('0xc9')},{'name':_0x1380f3[_0x15fd('0xc0')][_0x15fd('0xca')][_0x15fd('0xc2')][_0x15fd('0xc3')][_0x15fd('0xc2')],'value':_0x15fd('0xcb')});var _0x42584f={'id':_0x11aa1f+'_'+_0x1380f3[_0x15fd('0xae')],'name':_0x1380f3[_0x15fd('0xc5')][_0x15fd('0xc3')]['Label'],'custom':![],'options':_0x2c3376};_0x15f531['push'](_0x42584f);return _0x15f531;});}function getInputList(_0x38ff20,_0x40914d,_0xca68f0,_0x31e56c,_0x2cec23,_0x56dae9,_0x4c4919){var _0x2d354d={'method':_0x15fd('0xa8'),'uri':_0x38ff20+_0x15fd('0xa9')+_0x2cec23+_0x15fd('0xc6')+_0x56dae9+')/Microsoft.Dynamics.CRM.'+_0xca68f0+_0x15fd('0xcc'),'headers':{'Authorization':'Bearer\x20'+_0x4c4919,'If-None-Match':null,'OData-Version':_0x15fd('0xa5')},'json':!![]};return rp(_0x2d354d)['then'](function(_0x29d5d7){var _0x348b7b={'id':_0x40914d+'_'+_0x29d5d7[_0x15fd('0xae')],'name':_0x29d5d7[_0x15fd('0xc5')][_0x15fd('0xc3')]?_0x29d5d7[_0x15fd('0xc5')]['UserLocalizedLabel']['Label']:_0x29d5d7[_0x15fd('0xae')],'custom':![],'options':[]};_0x31e56c[_0x15fd('0xb2')](_0x348b7b);return _0x31e56c;});}
\ No newline at end of file
+var _0x2137=['channel','create','Dynamics365Field','Subjects','getFields','ticketType','incident','Incident','title','customerid','ownerid','caseorigincode','subject','directioncode','phonecall_activity_parties','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractidname','createdbyexternalpartyname','createdbyname','createdbyyominame','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','importsequencenumber','influencescore','kbarticleidname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','prioritycodename','productserialnumber','responseby','responsiblecontactidname','sentimentvalue','slaname','statecode','ticketnumber','timezoneruleversionnumber','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','tenantId','clientSecret','slice','lastIndexOf','POST','https://login.microsoftonline.com/','/oauth2/token','clientId','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','4.0','Attributes','remove','@odata.type','substring','push','all','isNil','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','forEach','UserLocalizedLabel','Label','Value','LogicalName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','FalseOption','false','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','moment','mustache','util','path','fs-extra','lodash','crypto','jsforce','to-csv','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','Dynamics365Account','fieldName','type','key','model','name','query','keys','intersection','attributes','fields','length','nolimit','sort','filters','filter','where','VIRTUAL','merge','options','rows','catch','show','params','includeAll','include','find','body','getConfigurations','Dynamics365Configuration','rawAttributes','order','pick','addConfiguration','findOne','getSubjects','Descriptions','getDescriptions'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x2137,0x134));var _0x7213=function(_0x4789c9,_0x4a6ae6){_0x4789c9=_0x4789c9-0x0;var _0x577fe0=_0x2137[_0x4789c9];return _0x577fe0;};'use strict';var emlformat=require(_0x7213('0x0'));var rimraf=require(_0x7213('0x1'));var zipdir=require(_0x7213('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7213('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7213('0x4'));var util=require(_0x7213('0x5'));var path=require(_0x7213('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7213('0x7'));var _=require(_0x7213('0x8'));var squel=require('squel');var crypto=require(_0x7213('0x9'));var jsforce=require(_0x7213('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x7213('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7213('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x7213('0xd'));var as=require(_0x7213('0xe'));var hardwareService=require(_0x7213('0xf'));var logger=require(_0x7213('0x10'))(_0x7213('0x11'));var utils=require(_0x7213('0x12'));var config=require(_0x7213('0x13'));var licenseUtil=require(_0x7213('0x14'));var db=require(_0x7213('0x15'))['db'];var integrations=require(_0x7213('0x16'));function respondWithStatusCode(_0x58e74a,_0x3d0115){_0x3d0115=_0x3d0115||0xcc;return function(_0x413132){if(_0x413132){return _0x58e74a[_0x7213('0x17')](_0x3d0115);}return _0x58e74a[_0x7213('0x18')](_0x3d0115)[_0x7213('0x19')]();};}function respondWithResult(_0x9764e1,_0x121036){_0x121036=_0x121036||0xc8;return function(_0x215750){if(_0x215750){return _0x9764e1[_0x7213('0x18')](_0x121036)[_0x7213('0x1a')](_0x215750);}};}function respondWithFilteredResult(_0xe91a2f,_0x277455){return function(_0x4809fb){if(_0x4809fb){var _0xc6b44e=typeof _0x277455[_0x7213('0x1b')]===_0x7213('0x1c')&&typeof _0x277455[_0x7213('0x1d')]===_0x7213('0x1c');var _0x90bc4d=_0x4809fb[_0x7213('0x1e')];var _0x24e2a5=_0xc6b44e?0x0:_0x277455[_0x7213('0x1b')];var _0xbd1ded=_0xc6b44e?_0x4809fb[_0x7213('0x1e')]:_0x277455[_0x7213('0x1b')]+_0x277455[_0x7213('0x1d')];var _0x4c947b;if(_0xbd1ded>=_0x90bc4d){_0xbd1ded=_0x90bc4d;_0x4c947b=0xc8;}else{_0x4c947b=0xce;}_0xe91a2f[_0x7213('0x18')](_0x4c947b);return _0xe91a2f[_0x7213('0x1f')](_0x7213('0x20'),_0x24e2a5+'-'+_0xbd1ded+'/'+_0x90bc4d)[_0x7213('0x1a')](_0x4809fb);}return null;};}function patchUpdates(_0x1b17d0){return function(_0x5bddc2){try{jsonpatch[_0x7213('0x21')](_0x5bddc2,_0x1b17d0,!![]);}catch(_0x452b5c){return BPromise[_0x7213('0x22')](_0x452b5c);}return _0x5bddc2[_0x7213('0x23')]();};}function saveUpdates(_0x43c17c,_0x2e49d8){return function(_0x13e489){if(_0x13e489){return _0x13e489[_0x7213('0x24')](_0x43c17c)[_0x7213('0x25')](function(_0x4f3756){return _0x4f3756;});}return null;};}function removeEntity(_0x5ddb6b,_0x40d1a6){return function(_0x5627fd){if(_0x5627fd){return _0x5627fd[_0x7213('0x26')]()['then'](function(){_0x5ddb6b[_0x7213('0x18')](0xcc)[_0x7213('0x19')]();});}};}function handleEntityNotFound(_0x4eedf1,_0x5ecadd){return function(_0x4a46ac){if(!_0x4a46ac){_0x4eedf1[_0x7213('0x17')](0x194);}return _0x4a46ac;};}function handleError(_0x139f2f,_0x1e443d){_0x1e443d=_0x1e443d||0x1f4;return function(_0x1740a2){logger[_0x7213('0x27')](_0x1740a2[_0x7213('0x28')]);if(_0x1740a2['name']){delete _0x1740a2['name'];}_0x139f2f[_0x7213('0x18')](_0x1e443d)[_0x7213('0x29')](_0x1740a2);};}exports[_0x7213('0x2a')]=function(_0x59139e,_0x562783){var _0x59a540={},_0x11ed63={},_0x100766={'count':0x0,'rows':[]};var _0x2f8b8c=_[_0x7213('0x2b')](db[_0x7213('0x2c')]['rawAttributes'],function(_0x1c9fb9){return{'name':_0x1c9fb9[_0x7213('0x2d')],'type':_0x1c9fb9[_0x7213('0x2e')][_0x7213('0x2f')]};});_0x11ed63[_0x7213('0x30')]=_[_0x7213('0x2b')](_0x2f8b8c,_0x7213('0x31'));_0x11ed63[_0x7213('0x32')]=_[_0x7213('0x33')](_0x59139e['query']);_0x11ed63['filters']=_[_0x7213('0x34')](_0x11ed63[_0x7213('0x30')],_0x11ed63[_0x7213('0x32')]);_0x59a540[_0x7213('0x35')]=_['intersection'](_0x11ed63[_0x7213('0x30')],qs[_0x7213('0x36')](_0x59139e[_0x7213('0x32')]['fields']));_0x59a540['attributes']=_0x59a540[_0x7213('0x35')][_0x7213('0x37')]?_0x59a540[_0x7213('0x35')]:_0x11ed63[_0x7213('0x30')];if(!_0x59139e[_0x7213('0x32')]['hasOwnProperty'](_0x7213('0x38'))){_0x59a540[_0x7213('0x1d')]=qs['limit'](_0x59139e[_0x7213('0x32')][_0x7213('0x1d')]);_0x59a540['offset']=qs['offset'](_0x59139e['query'][_0x7213('0x1b')]);}_0x59a540['order']=qs[_0x7213('0x39')](_0x59139e[_0x7213('0x32')][_0x7213('0x39')]);_0x59a540['where']=qs[_0x7213('0x3a')](_['pick'](_0x59139e[_0x7213('0x32')],_0x11ed63['filters']),_0x2f8b8c);if(_0x59139e['query'][_0x7213('0x3b')]){_0x59a540[_0x7213('0x3c')]=_['merge'](_0x59a540[_0x7213('0x3c')],{'$or':_[_0x7213('0x2b')](_0x2f8b8c,function(_0x3af817){if(_0x3af817[_0x7213('0x2e')]!==_0x7213('0x3d')){var _0x210728={};_0x210728[_0x3af817[_0x7213('0x31')]]={'$like':'%'+_0x59139e[_0x7213('0x32')][_0x7213('0x3b')]+'%'};return _0x210728;}})});}_0x59a540=_[_0x7213('0x3e')]({},_0x59a540,_0x59139e[_0x7213('0x3f')]);var _0x368ec8={'where':_0x59a540[_0x7213('0x3c')]};return db[_0x7213('0x2c')][_0x7213('0x1e')](_0x368ec8)[_0x7213('0x25')](function(_0x30544c){_0x100766[_0x7213('0x1e')]=_0x30544c;if(_0x59139e[_0x7213('0x32')]['includeAll']){_0x59a540['include']=[{'all':!![]}];}return db['Dynamics365Account']['findAll'](_0x59a540);})['then'](function(_0x567125){_0x100766[_0x7213('0x40')]=_0x567125;return _0x100766;})[_0x7213('0x25')](respondWithFilteredResult(_0x562783,_0x59a540))[_0x7213('0x41')](handleError(_0x562783,null));};exports[_0x7213('0x42')]=function(_0x11faa8,_0x154ce9){var _0x2174d3={'raw':![],'where':{'id':_0x11faa8[_0x7213('0x43')]['id']}},_0x233c6b={};_0x233c6b[_0x7213('0x30')]=_[_0x7213('0x33')](db[_0x7213('0x2c')]['rawAttributes']);_0x233c6b['query']=_['keys'](_0x11faa8['query']);_0x233c6b['filters']=_[_0x7213('0x34')](_0x233c6b['model'],_0x233c6b[_0x7213('0x32')]);_0x2174d3[_0x7213('0x35')]=_[_0x7213('0x34')](_0x233c6b['model'],qs[_0x7213('0x36')](_0x11faa8[_0x7213('0x32')][_0x7213('0x36')]));_0x2174d3['attributes']=_0x2174d3[_0x7213('0x35')][_0x7213('0x37')]?_0x2174d3[_0x7213('0x35')]:_0x233c6b['model'];if(_0x11faa8[_0x7213('0x32')][_0x7213('0x44')]){_0x2174d3[_0x7213('0x45')]=[{'all':!![]}];}_0x2174d3=_[_0x7213('0x3e')]({},_0x2174d3,_0x11faa8[_0x7213('0x3f')]);return db[_0x7213('0x2c')][_0x7213('0x46')](_0x2174d3)[_0x7213('0x25')](handleEntityNotFound(_0x154ce9,null))[_0x7213('0x25')](respondWithResult(_0x154ce9,null))['catch'](handleError(_0x154ce9,null));};exports['create']=function(_0x2d276b,_0x2657c9){return db[_0x7213('0x2c')]['create'](_0x2d276b[_0x7213('0x47')],{})[_0x7213('0x25')](respondWithResult(_0x2657c9,0xc9))['catch'](handleError(_0x2657c9,null));};exports['update']=function(_0x517162,_0x24f637){if(_0x517162[_0x7213('0x47')]['id']){delete _0x517162['body']['id'];}return db[_0x7213('0x2c')][_0x7213('0x46')]({'where':{'id':_0x517162[_0x7213('0x43')]['id']}})[_0x7213('0x25')](handleEntityNotFound(_0x24f637,null))['then'](saveUpdates(_0x517162['body'],null))['then'](respondWithResult(_0x24f637,null))[_0x7213('0x41')](handleError(_0x24f637,null));};exports['destroy']=function(_0x245795,_0x127b24){return db[_0x7213('0x2c')][_0x7213('0x46')]({'where':{'id':_0x245795[_0x7213('0x43')]['id']}})[_0x7213('0x25')](handleEntityNotFound(_0x127b24,null))[_0x7213('0x25')](removeEntity(_0x127b24,null))[_0x7213('0x41')](handleError(_0x127b24,null));};exports[_0x7213('0x48')]=function(_0xc50ec1,_0xe0a818,_0x3c89f9){var _0x4dc545={};var _0x10c778={};var _0x50531c;var _0x4d8313;return db[_0x7213('0x2c')]['findOne']({'where':{'id':_0xc50ec1[_0x7213('0x43')]['id']}})[_0x7213('0x25')](handleEntityNotFound(_0xe0a818,null))[_0x7213('0x25')](function(_0xdeaaef){if(_0xdeaaef){_0x50531c=_0xdeaaef;_0x10c778[_0x7213('0x30')]=_['keys'](db[_0x7213('0x49')][_0x7213('0x4a')]);_0x10c778[_0x7213('0x32')]=_['keys'](_0xc50ec1[_0x7213('0x32')]);_0x10c778[_0x7213('0x3a')]=_['intersection'](_0x10c778[_0x7213('0x30')],_0x10c778[_0x7213('0x32')]);_0x4dc545[_0x7213('0x35')]=_['intersection'](_0x10c778[_0x7213('0x30')],qs[_0x7213('0x36')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x36')]));_0x4dc545['attributes']=_0x4dc545[_0x7213('0x35')][_0x7213('0x37')]?_0x4dc545['attributes']:_0x10c778[_0x7213('0x30')];_0x4dc545[_0x7213('0x4b')]=qs[_0x7213('0x39')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x39')]);_0x4dc545[_0x7213('0x3c')]=qs[_0x7213('0x3a')](_[_0x7213('0x4c')](_0xc50ec1[_0x7213('0x32')],_0x10c778[_0x7213('0x3a')]));if(_0xc50ec1['query'][_0x7213('0x3b')]){_0x4dc545['where']=_[_0x7213('0x3e')](_0x4dc545[_0x7213('0x3c')],{'$or':_[_0x7213('0x2b')](_0x4dc545[_0x7213('0x35')],function(_0x8dd958){var _0x452aeb={};_0x452aeb[_0x8dd958]={'$like':'%'+_0xc50ec1[_0x7213('0x32')][_0x7213('0x3b')]+'%'};return _0x452aeb;})});}_0x4dc545=_[_0x7213('0x3e')]({},_0x4dc545,_0xc50ec1['options']);return _0x50531c[_0x7213('0x48')](_0x4dc545);}})['then'](function(_0x2efa27){if(_0x2efa27){_0x4d8313=_0x2efa27[_0x7213('0x37')];if(!_0xc50ec1['query']['hasOwnProperty']('nolimit')){_0x4dc545[_0x7213('0x1d')]=qs[_0x7213('0x1d')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x1d')]);_0x4dc545[_0x7213('0x1b')]=qs[_0x7213('0x1b')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x1b')]);}return _0x50531c[_0x7213('0x48')](_0x4dc545);}})[_0x7213('0x25')](function(_0x91fdd6){if(_0x91fdd6){return _0x91fdd6?{'count':_0x4d8313,'rows':_0x91fdd6}:null;}})[_0x7213('0x25')](respondWithResult(_0xe0a818,null))[_0x7213('0x41')](handleError(_0xe0a818,null));};exports[_0x7213('0x4d')]=function(_0x3c9856,_0x4310b3,_0x49636f){if(_0x3c9856['body']['id']){delete _0x3c9856['body']['id'];}return db[_0x7213('0x2c')][_0x7213('0x4e')]({'where':{'id':_0x3c9856[_0x7213('0x43')]['id']}})['then'](handleEntityNotFound(_0x4310b3,null))[_0x7213('0x25')](function(_0x1cb6c0){if(_0x1cb6c0){_0x3c9856['body']['AccountId']=_0x1cb6c0['id'];_0x3c9856['body']['Subjects']=integrations[_0x7213('0x4f')](_0x3c9856[_0x7213('0x47')]['channel'],_0x3c9856[_0x7213('0x47')][_0x7213('0x2e')]);_0x3c9856[_0x7213('0x47')][_0x7213('0x50')]=integrations[_0x7213('0x51')](_0x3c9856['body'][_0x7213('0x52')],_0x3c9856[_0x7213('0x47')][_0x7213('0x2e')]);return db[_0x7213('0x49')][_0x7213('0x53')](_0x3c9856['body'],{'include':[{'model':db[_0x7213('0x54')],'as':_0x7213('0x55')},{'model':db[_0x7213('0x54')],'as':_0x7213('0x50')}]});}return null;})['then'](respondWithResult(_0x4310b3,null))['catch'](handleError(_0x4310b3,null));};exports[_0x7213('0x56')]=function(_0x5eba59,_0x4a5aa2,_0x435a35){var _0x3f7ca2=_0x5eba59[_0x7213('0x32')][_0x7213('0x57')];var _0xda82e4=_0x3f7ca2===_0x7213('0x58')?_0x7213('0x59'):'PhoneCall';var _0x371015='';var _0x255ff5='';var _0x36e8a0='';var _0x450200='';var _0x9a223c='';var _0x55afbf='';var _0x23aabb='';var _0x300924='';var _0x455aa1=[_0x7213('0x5a'),'description',_0x7213('0x5b'),_0x7213('0x5c'),_0x7213('0x5d'),_0x7213('0x5e'),'phonenumber','regardingobjectid',_0x7213('0x5f'),_0x7213('0x60')];var _0x2bdec7=['accountidname',_0x7213('0x61'),_0x7213('0x62'),_0x7213('0x63'),_0x7213('0x64'),_0x7213('0x65'),'contractdetailidname',_0x7213('0x66'),_0x7213('0x67'),'createdbyexternalpartyyominame',_0x7213('0x68'),_0x7213('0x69'),'createdon','createdonbehalfbyname',_0x7213('0x6a'),_0x7213('0x6b'),_0x7213('0x6c'),_0x7213('0x6d'),_0x7213('0x6e'),_0x7213('0x6f'),_0x7213('0x70'),_0x7213('0x71'),_0x7213('0x72'),_0x7213('0x73'),_0x7213('0x74'),'followupby',_0x7213('0x75'),_0x7213('0x76'),_0x7213('0x77'),'lastonholdtime','masteridname',_0x7213('0x78'),_0x7213('0x79'),_0x7213('0x7a'),_0x7213('0x7b'),_0x7213('0x7c'),_0x7213('0x7d'),_0x7213('0x7e'),'msdyn_incidenttypename',_0x7213('0x7f'),_0x7213('0x80'),_0x7213('0x81'),_0x7213('0x82'),_0x7213('0x83'),_0x7213('0x84'),_0x7213('0x85'),_0x7213('0x86'),_0x7213('0x87'),'primarycontactidyominame',_0x7213('0x88'),'productidname',_0x7213('0x89'),'resolveby','resolvebykpiidname',_0x7213('0x8a'),_0x7213('0x8b'),'responsiblecontactidyominame',_0x7213('0x8c'),'slainvokedidname',_0x7213('0x8d'),'socialprofileidname',_0x7213('0x8e'),'statuscode','subjectidname',_0x7213('0x8f'),_0x7213('0x90'),'transactioncurrencyidname','traversedpath',_0x7213('0x91'),_0x7213('0x92')];var _0x28db9f=_0x455aa1[_0x7213('0x93')](_0x2bdec7);return db['Dynamics365Account'][_0x7213('0x4e')]({'where':{'id':_0x5eba59['params']['id']},'attributes':['id',_0x7213('0x94'),'password',_0x7213('0x95'),_0x7213('0x96'),'clientId',_0x7213('0x97')]})[_0x7213('0x25')](handleEntityNotFound(_0x4a5aa2,null))['then'](function(_0x26b1a3){if(_0x26b1a3){_0x300924=_0x26b1a3['remoteUri'];var _0x4c581e=_0x300924[_0x7213('0x98')](-0x1);if(_0x4c581e==='/'){_0x300924=_0x300924['substring'](0x0,_0x300924[_0x7213('0x99')](_0x4c581e));}_0x23aabb=util['format']('%s/api/data/v9.0/',_0x300924);var _0x99cee1={'method':_0x7213('0x9a'),'uri':_0x7213('0x9b')+_0x26b1a3[_0x7213('0x96')]+_0x7213('0x9c'),'form':{'client_id':_0x26b1a3[_0x7213('0x9d')],'resource':_0x300924,'username':_0x26b1a3[_0x7213('0x94')],'password':_0x26b1a3['password'],'grant_type':'password','client_secret':_0x26b1a3[_0x7213('0x97')]},'json':!![]};return rp(_0x99cee1);}})[_0x7213('0x25')](function(_0x315b5d){_0x55afbf=_0x315b5d['access_token'];var _0x464e27={'method':_0x7213('0x9e'),'uri':encodeURI(_0x23aabb+_0x7213('0x9f')+_0xda82e4+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x55afbf,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x464e27);})[_0x7213('0x25')](function(_0x32bb3a){var _0x33a5b9=_0x32bb3a['value'][0x0];var _0x402c1f=_0x33a5b9[_0x7213('0xa0')];var _0x2b74ef={'method':_0x7213('0x9e'),'uri':_0x23aabb+_0x7213('0xa1')+_0x402c1f+_0x7213('0xa2'),'headers':{'Authorization':_0x7213('0xa3')+_0x55afbf,'If-None-Match':null,'OData-Version':_0x7213('0xa4')},'json':!![]};return rp(_0x2b74ef);})[_0x7213('0x25')](function(_0x2573c3){_0x371015=_0x2573c3;_0x255ff5=_0x371015[_0x7213('0xa5')];_0x255ff5=_[_0x7213('0xa6')](_0x255ff5,function(_0x3315da){return!_0x28db9f['includes'](_0x3315da['LogicalName']);});var _0x151e72=[];var _0x58f81e=[];_0x255ff5['forEach'](function(_0x38f49b){if(_0x38f49b[_0x7213('0xa7')]){var _0x4cbdd1=_0x38f49b[_0x7213('0xa7')][_0x7213('0xa8')](_0x38f49b[_0x7213('0xa7')][_0x7213('0x99')]('.')+0x1);if(_0x4cbdd1==='PicklistAttributeMetadata'){_0x151e72[_0x7213('0xa9')](getSelectList(_0x23aabb,_0x3f7ca2,_0x58f81e,_0x371015[_0x7213('0xa0')],_0x38f49b['MetadataId'],_0x55afbf));}}});return Promise[_0x7213('0xaa')](_0x151e72);})[_0x7213('0x25')](function(_0xc1f02f){_0x36e8a0=_0xc1f02f[0x0];var _0x36ad7f=[];var _0x1ead9f=[];_0x255ff5['forEach'](function(_0x6d3b38){if(!_[_0x7213('0xab')](_0x6d3b38[_0x7213('0xa7')])){var _0x27f1c8=_0x6d3b38[_0x7213('0xa7')]['substring'](_0x6d3b38[_0x7213('0xa7')][_0x7213('0x99')]('.')+0x1);if(_0x27f1c8==='BooleanAttributeMetadata'){_0x36ad7f[_0x7213('0xa9')](getBooleanList(_0x23aabb,_0x3f7ca2,_0x1ead9f,_0x371015['MetadataId'],_0x6d3b38['MetadataId'],_0x55afbf));}}});return Promise[_0x7213('0xaa')](_0x36ad7f);})[_0x7213('0x25')](function(_0xca097e){_0x450200=_0xca097e[0x0];var _0x5ca6fa=[];var _0x1a23c6=[];_0x255ff5['forEach'](function(_0x12b1b1){if(_0x12b1b1[_0x7213('0xa7')]){var _0x20cb13=_0x12b1b1[_0x7213('0xa7')][_0x7213('0xa8')](_0x12b1b1['@odata.type'][_0x7213('0x99')]('.')+0x1);if(_0x20cb13==='StringAttributeMetadata'||_0x20cb13==='DoubleAttributeMetadata'||_0x20cb13==='BigIntAttributeMetadata'||_0x20cb13===_0x7213('0xac')||_0x20cb13===_0x7213('0xad')||_0x20cb13===_0x7213('0xae')||_0x20cb13===_0x7213('0xaf')||_0x20cb13==='EntityNameAttributeMetadata'||_0x20cb13==='StateAttributeMetadata'||_0x20cb13===_0x7213('0xb0')){_0x5ca6fa[_0x7213('0xa9')](getInputList(_0x23aabb,_0x3f7ca2,_0x20cb13,_0x1a23c6,_0x371015[_0x7213('0xa0')],_0x12b1b1[_0x7213('0xa0')],_0x55afbf));}}});return Promise['all'](_0x5ca6fa);})[_0x7213('0x25')](function(_0x50b9d5){_0x9a223c=_0x50b9d5[0x0];var _0x302c73=_0x36e8a0[_0x7213('0x93')](_0x450200)[_0x7213('0x93')](_0x9a223c);var _0x285c83={'count':_0x302c73[_0x7213('0x37')],'rows':_0x302c73};return _0x285c83;})['then'](respondWithResult(_0x4a5aa2,null))[_0x7213('0x41')](function(_0x49c40c){var _0x48e6c3=_0x5eba59[_0x7213('0x32')][_0x7213('0xb1')]?0x1f4:_0x49c40c[_0x7213('0xb2')]||0x1f4;logger[_0x7213('0x27')](_0x49c40c[_0x7213('0x28')]);delete _0x49c40c[_0x7213('0x31')];if(_0x48e6c3===0x191){_0x48e6c3=0x190;}_0x4a5aa2[_0x7213('0x18')](_0x48e6c3)[_0x7213('0x29')](_0x5eba59[_0x7213('0x32')][_0x7213('0xb1')]?{'message':_0x7213('0xb3'),'statusCode':_0x49c40c[_0x7213('0xb2')]}:_0x49c40c);});};function getSelectList(_0x1b6b12,_0x4c5766,_0x32479a,_0x453261,_0x4f0043,_0x224dd0){var _0x37f290={'method':_0x7213('0x9e'),'uri':_0x1b6b12+_0x7213('0xa1')+_0x453261+_0x7213('0xb4')+_0x4f0043+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x7213('0xb5'),'headers':{'Authorization':_0x7213('0xa3')+_0x224dd0,'If-None-Match':null,'OData-Version':_0x7213('0xa4')},'json':!![]};return rp(_0x37f290)['then'](function(_0x17318f){var _0x14ffaa=[];var _0xcf5dba=_0x17318f[_0x7213('0xb6')]['Options'];_0xcf5dba[_0x7213('0xb7')](function(_0x380f2c){_0x14ffaa[_0x7213('0xa9')]({'name':_0x380f2c['Label'][_0x7213('0xb8')][_0x7213('0xb9')],'value':String(_0x380f2c[_0x7213('0xba')])});});var _0x419bec={'id':_0x4c5766+'_'+_0x17318f[_0x7213('0xbb')],'name':_0x17318f['DisplayName']['UserLocalizedLabel'][_0x7213('0xb9')],'custom':![],'options':_0x14ffaa};_0x32479a[_0x7213('0xa9')](_0x419bec);return _0x32479a;});}function getBooleanList(_0x576402,_0x43be2a,_0xe2653c,_0x5d4c25,_0xd5c476,_0x13a2e3){var _0x4a205b={'method':'GET','uri':_0x576402+_0x7213('0xa1')+_0x5d4c25+_0x7213('0xb4')+_0xd5c476+_0x7213('0xbc'),'headers':{'Authorization':_0x7213('0xa3')+_0x13a2e3,'If-None-Match':null,'OData-Version':_0x7213('0xa4')},'json':!![]};return rp(_0x4a205b)['then'](function(_0x35cf62){var _0x1385c0=[];_0x1385c0[_0x7213('0xa9')]({'name':_0x35cf62['OptionSet'][_0x7213('0xbd')][_0x7213('0xb9')][_0x7213('0xb8')]['Label'],'value':'true'},{'name':_0x35cf62[_0x7213('0xb6')][_0x7213('0xbe')]['Label'][_0x7213('0xb8')]['Label'],'value':_0x7213('0xbf')});var _0x163ee6={'id':_0x43be2a+'_'+_0x35cf62['LogicalName'],'name':_0x35cf62[_0x7213('0xc0')]['UserLocalizedLabel'][_0x7213('0xb9')],'custom':![],'options':_0x1385c0};_0xe2653c[_0x7213('0xa9')](_0x163ee6);return _0xe2653c;});}function getInputList(_0x4f1b8b,_0x3d008b,_0x31c43f,_0x23be4e,_0x2e6410,_0x235c75,_0xcf78e8){var _0x135037={'method':_0x7213('0x9e'),'uri':_0x4f1b8b+'EntityDefinitions('+_0x2e6410+_0x7213('0xb4')+_0x235c75+_0x7213('0xc1')+_0x31c43f+_0x7213('0xc2'),'headers':{'Authorization':'Bearer\x20'+_0xcf78e8,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x135037)[_0x7213('0x25')](function(_0x49488d){var _0x5d2d1c={'id':_0x3d008b+'_'+_0x49488d[_0x7213('0xbb')],'name':_0x49488d[_0x7213('0xc0')]['UserLocalizedLabel']?_0x49488d['DisplayName'][_0x7213('0xb8')][_0x7213('0xb9')]:_0x49488d[_0x7213('0xbb')],'custom':![],'options':[]};_0x23be4e['push'](_0x5d2d1c);return _0x23be4e;});}
\ No newline at end of file
index 43cde0e..f47c82b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x224f6f,_0x57a3b7){var _0x1a02bf=function(_0xbda821){while(--_0xbda821){_0x224f6f['push'](_0x224f6f['shift']());}};_0x1a02bf(++_0x57a3b7);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1abeb2,_0x79f462){_0x1abeb2=_0x1abeb2-0x0;var _0x48da20=_0xcb91[_0x1abeb2];return _0x48da20;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0xe2496f,_0x2673a0){var _0x16cdaf=function(_0x5794f8){while(--_0x5794f8){_0xe2496f['push'](_0xe2496f['shift']());}};_0x16cdaf(++_0x2673a0);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b954005..ab12bad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc4b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetDynamics365Account','findAll','options','raw','where','attributes','limit','map','include','model','then','Dynamics365Account','find','ShowDynamics365Account','lodash','util','moment','bluebird','ioredis'];(function(_0x3ed054,_0x4d4f16){var _0x16dd95=function(_0xc0c19c){while(--_0xc0c19c){_0x3ed054['push'](_0x3ed054['shift']());}};_0x16dd95(++_0x4d4f16);}(_0xbc4b,0xd3));var _0xbbc4=function(_0x2241aa,_0x1e04d6){_0x2241aa=_0x2241aa-0x0;var _0x55f6a7=_0xbc4b[_0x2241aa];return _0x55f6a7;};'use strict';var _=require(_0xbbc4('0x0'));var util=require(_0xbbc4('0x1'));var moment=require(_0xbbc4('0x2'));var BPromise=require(_0xbbc4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbbc4('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbbc4('0x5'))(_0xbbc4('0x6'));var config=require(_0xbbc4('0x7'));var jayson=require(_0xbbc4('0x8'));var client=jayson[_0xbbc4('0x9')][_0xbbc4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x764be1,_0x32be07,_0x4120b2){return new BPromise(function(_0x3ca196,_0x2d2be0){return client['request'](_0x764be1,_0x4120b2)['then'](function(_0x739936){logger[_0xbbc4('0xb')](_0xbbc4('0xc'),_0x32be07,'request\x20sent');logger[_0xbbc4('0xd')](_0xbbc4('0xe'),_0x32be07,_0xbbc4('0xf'),JSON[_0xbbc4('0x10')](_0x739936));if(_0x739936['error']){if(_0x739936[_0xbbc4('0x11')][_0xbbc4('0x12')]===0x1f4){logger[_0xbbc4('0x11')]('Dynamics365Account,\x20%s,\x20%s',_0x32be07,_0x739936['error']['message']);return _0x2d2be0(_0x739936[_0xbbc4('0x11')]['message']);}logger['error'](_0xbbc4('0xc'),_0x32be07,_0x739936[_0xbbc4('0x11')][_0xbbc4('0x13')]);return _0x3ca196(_0x739936[_0xbbc4('0x11')][_0xbbc4('0x13')]);}else{logger[_0xbbc4('0xb')](_0xbbc4('0xc'),_0x32be07,'request\x20sent');_0x3ca196(_0x739936[_0xbbc4('0x14')]['message']);}})[_0xbbc4('0x15')](function(_0x3c14fe){logger[_0xbbc4('0x11')](_0xbbc4('0xc'),_0x32be07,_0x3c14fe);_0x2d2be0(_0x3c14fe);});});}exports[_0xbbc4('0x16')]=function(_0x43d3d0){var _0x58cb76=this;return new Promise(function(_0xc78289,_0x2abed7){return db['Dynamics365Account'][_0xbbc4('0x17')]({'raw':_0x43d3d0[_0xbbc4('0x18')]?_0x43d3d0[_0xbbc4('0x18')][_0xbbc4('0x19')]===undefined?!![]:![]:!![],'where':_0x43d3d0[_0xbbc4('0x18')]?_0x43d3d0[_0xbbc4('0x18')][_0xbbc4('0x1a')]||null:null,'attributes':_0x43d3d0[_0xbbc4('0x18')]?_0x43d3d0[_0xbbc4('0x18')][_0xbbc4('0x1b')]||null:null,'limit':_0x43d3d0[_0xbbc4('0x18')]?_0x43d3d0['options'][_0xbbc4('0x1c')]||null:null,'include':_0x43d3d0[_0xbbc4('0x18')]?_0x43d3d0[_0xbbc4('0x18')]['include']?_[_0xbbc4('0x1d')](_0x43d3d0[_0xbbc4('0x18')][_0xbbc4('0x1e')],function(_0x54d64e){return{'model':db[_0x54d64e[_0xbbc4('0x1f')]],'as':_0x54d64e['as'],'attributes':_0x54d64e[_0xbbc4('0x1b')],'include':_0x54d64e[_0xbbc4('0x1e')]?_[_0xbbc4('0x1d')](_0x54d64e[_0xbbc4('0x1e')],function(_0x35c5a4){return{'model':db[_0x35c5a4[_0xbbc4('0x1f')]],'as':_0x35c5a4['as'],'attributes':_0x35c5a4[_0xbbc4('0x1b')],'include':_0x35c5a4['include']?_['map'](_0x35c5a4[_0xbbc4('0x1e')],function(_0x183410){return{'model':db[_0x183410['model']],'as':_0x183410['as'],'attributes':_0x183410[_0xbbc4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbbc4('0x20')](function(_0x3210da){logger[_0xbbc4('0xb')](_0xbbc4('0x16'),_0x43d3d0);logger[_0xbbc4('0xd')](_0xbbc4('0x16'),_0x43d3d0,JSON[_0xbbc4('0x10')](_0x3210da));_0xc78289(_0x3210da);})[_0xbbc4('0x15')](function(_0x331e0d){logger[_0xbbc4('0x11')](_0xbbc4('0x16'),_0x331e0d[_0xbbc4('0x13')],_0x43d3d0);_0x2abed7(_0x58cb76['error'](0x1f4,_0x331e0d[_0xbbc4('0x13')]));});});};exports['ShowDynamics365Account']=function(_0x1f4acd){var _0x4a09fe=this;return new Promise(function(_0x45ea8c,_0x10e49f){return db[_0xbbc4('0x21')][_0xbbc4('0x22')]({'raw':_0x1f4acd[_0xbbc4('0x18')]?_0x1f4acd['options']['raw']===undefined?!![]:![]:!![],'where':_0x1f4acd[_0xbbc4('0x18')]?_0x1f4acd[_0xbbc4('0x18')][_0xbbc4('0x1a')]||null:null,'attributes':_0x1f4acd[_0xbbc4('0x18')]?_0x1f4acd[_0xbbc4('0x18')][_0xbbc4('0x1b')]||null:null,'include':_0x1f4acd[_0xbbc4('0x18')]?_0x1f4acd[_0xbbc4('0x18')][_0xbbc4('0x1e')]?_['map'](_0x1f4acd[_0xbbc4('0x18')][_0xbbc4('0x1e')],function(_0x360d61){return{'model':db[_0x360d61[_0xbbc4('0x1f')]],'as':_0x360d61['as'],'attributes':_0x360d61[_0xbbc4('0x1b')],'include':_0x360d61['include']?_[_0xbbc4('0x1d')](_0x360d61[_0xbbc4('0x1e')],function(_0x1a920d){return{'model':db[_0x1a920d[_0xbbc4('0x1f')]],'as':_0x1a920d['as'],'attributes':_0x1a920d['attributes'],'include':_0x1a920d[_0xbbc4('0x1e')]?_[_0xbbc4('0x1d')](_0x1a920d[_0xbbc4('0x1e')],function(_0x8bcb80){return{'model':db[_0x8bcb80[_0xbbc4('0x1f')]],'as':_0x8bcb80['as'],'attributes':_0x8bcb80['attributes']};}):[]};}):[]};}):[]:[]})[_0xbbc4('0x20')](function(_0x4720e7){logger[_0xbbc4('0xb')](_0xbbc4('0x23'),_0x1f4acd);logger[_0xbbc4('0xd')](_0xbbc4('0x23'),_0x1f4acd,JSON[_0xbbc4('0x10')](_0x4720e7));_0x45ea8c(_0x4720e7);})['catch'](function(_0x522d8b){logger[_0xbbc4('0x11')](_0xbbc4('0x23'),_0x522d8b['message'],_0x1f4acd);_0x10e49f(_0x4a09fe[_0xbbc4('0x11')](0x1f4,_0x522d8b['message']));});});};
\ No newline at end of file
+var _0xd975=['lodash','util','moment','../../mysqldb','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Account,\x20%s,\x20%s','message','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','model','map','ShowDynamics365Account','find'];(function(_0x26a33a,_0x5246b1){var _0x41b6be=function(_0x5204a6){while(--_0x5204a6){_0x26a33a['push'](_0x26a33a['shift']());}};_0x41b6be(++_0x5246b1);}(_0xd975,0x120));var _0x5d97=function(_0x1e5bae,_0x580def){_0x1e5bae=_0x1e5bae-0x0;var _0xf482a5=_0xd975[_0x1e5bae];return _0xf482a5;};'use strict';var _=require(_0x5d97('0x0'));var util=require(_0x5d97('0x1'));var moment=require(_0x5d97('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5d97('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5d97('0x4'));var jayson=require(_0x5d97('0x5'));var client=jayson['client'][_0x5d97('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x57630b,_0x221911,_0x5a8dc6){return new BPromise(function(_0x5b701b,_0x19f0d2){return client[_0x5d97('0x7')](_0x57630b,_0x5a8dc6)[_0x5d97('0x8')](function(_0x219838){logger[_0x5d97('0x9')]('Dynamics365Account,\x20%s,\x20%s',_0x221911,_0x5d97('0xa'));logger[_0x5d97('0xb')](_0x5d97('0xc'),_0x221911,_0x5d97('0xa'),JSON[_0x5d97('0xd')](_0x219838));if(_0x219838['error']){if(_0x219838[_0x5d97('0xe')][_0x5d97('0xf')]===0x1f4){logger[_0x5d97('0xe')](_0x5d97('0x10'),_0x221911,_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);return _0x19f0d2(_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);}logger[_0x5d97('0xe')](_0x5d97('0x10'),_0x221911,_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);return _0x5b701b(_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);}else{logger[_0x5d97('0x9')](_0x5d97('0x10'),_0x221911,_0x5d97('0xa'));_0x5b701b(_0x219838['result'][_0x5d97('0x11')]);}})[_0x5d97('0x12')](function(_0x4a8107){logger[_0x5d97('0xe')](_0x5d97('0x10'),_0x221911,_0x4a8107);_0x19f0d2(_0x4a8107);});});}exports[_0x5d97('0x13')]=function(_0x28c4dc){var _0x1b6df0=this;return new Promise(function(_0x1e02d4,_0x45fc5c){return db[_0x5d97('0x14')][_0x5d97('0x15')]({'raw':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x17')]===undefined?!![]:![]:!![],'where':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x18')]||null:null,'attributes':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc['options'][_0x5d97('0x19')]||null:null,'limit':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x1a')]||null:null,'include':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x1b')]?_['map'](_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x1b')],function(_0x4e6a39){return{'model':db[_0x4e6a39[_0x5d97('0x1c')]],'as':_0x4e6a39['as'],'attributes':_0x4e6a39[_0x5d97('0x19')],'include':_0x4e6a39[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x4e6a39[_0x5d97('0x1b')],function(_0x31436b){return{'model':db[_0x31436b[_0x5d97('0x1c')]],'as':_0x31436b['as'],'attributes':_0x31436b[_0x5d97('0x19')],'include':_0x31436b[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x31436b[_0x5d97('0x1b')],function(_0x58cb1d){return{'model':db[_0x58cb1d[_0x5d97('0x1c')]],'as':_0x58cb1d['as'],'attributes':_0x58cb1d[_0x5d97('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5d97('0x8')](function(_0x538edf){logger[_0x5d97('0x9')](_0x5d97('0x13'),_0x28c4dc);logger['debug'](_0x5d97('0x13'),_0x28c4dc,JSON[_0x5d97('0xd')](_0x538edf));_0x1e02d4(_0x538edf);})[_0x5d97('0x12')](function(_0x57a087){logger[_0x5d97('0xe')](_0x5d97('0x13'),_0x57a087[_0x5d97('0x11')],_0x28c4dc);_0x45fc5c(_0x1b6df0['error'](0x1f4,_0x57a087[_0x5d97('0x11')]));});});};exports[_0x5d97('0x1e')]=function(_0x571805){var _0x11ad1c=this;return new Promise(function(_0x4fc7c1,_0x5ada2d){return db['Dynamics365Account'][_0x5d97('0x1f')]({'raw':_0x571805[_0x5d97('0x16')]?_0x571805[_0x5d97('0x16')][_0x5d97('0x17')]===undefined?!![]:![]:!![],'where':_0x571805[_0x5d97('0x16')]?_0x571805[_0x5d97('0x16')][_0x5d97('0x18')]||null:null,'attributes':_0x571805[_0x5d97('0x16')]?_0x571805[_0x5d97('0x16')][_0x5d97('0x19')]||null:null,'include':_0x571805[_0x5d97('0x16')]?_0x571805['options'][_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x571805[_0x5d97('0x16')][_0x5d97('0x1b')],function(_0x4b40f1){return{'model':db[_0x4b40f1[_0x5d97('0x1c')]],'as':_0x4b40f1['as'],'attributes':_0x4b40f1[_0x5d97('0x19')],'include':_0x4b40f1[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x4b40f1[_0x5d97('0x1b')],function(_0xe926a){return{'model':db[_0xe926a[_0x5d97('0x1c')]],'as':_0xe926a['as'],'attributes':_0xe926a[_0x5d97('0x19')],'include':_0xe926a[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0xe926a['include'],function(_0x24ae4f){return{'model':db[_0x24ae4f[_0x5d97('0x1c')]],'as':_0x24ae4f['as'],'attributes':_0x24ae4f[_0x5d97('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5d97('0x8')](function(_0x43f4c7){logger[_0x5d97('0x9')](_0x5d97('0x1e'),_0x571805);logger[_0x5d97('0xb')](_0x5d97('0x1e'),_0x571805,JSON[_0x5d97('0xd')](_0x43f4c7));_0x4fc7c1(_0x43f4c7);})[_0x5d97('0x12')](function(_0x390e02){logger[_0x5d97('0xe')]('ShowDynamics365Account',_0x390e02['message'],_0x571805);_0x5ada2d(_0x11ad1c[_0x5d97('0xe')](0x1f4,_0x390e02[_0x5d97('0x11')]));});});};
\ No newline at end of file
index 5f0cff2..26808fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c19=['update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','post','create','put'];(function(_0x15e950,_0x1db756){var _0x3425e5=function(_0x1fa0f4){while(--_0x1fa0f4){_0x15e950['push'](_0x15e950['shift']());}};_0x3425e5(++_0x1db756);}(_0x0c19,0xf5));var _0x90c1=function(_0x4ee754,_0x2256dc){_0x4ee754=_0x4ee754-0x0;var _0x283289=_0x0c19[_0x4ee754];return _0x283289;};'use strict';var multer=require(_0x90c1('0x0'));var util=require(_0x90c1('0x1'));var path=require(_0x90c1('0x2'));var timeout=require(_0x90c1('0x3'));var express=require(_0x90c1('0x4'));var router=express[_0x90c1('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x90c1('0x6'));var interaction=require(_0x90c1('0x7'));var config=require(_0x90c1('0x8'));var controller=require('./intDynamics365Configuration.controller');router[_0x90c1('0x9')]('/',auth[_0x90c1('0xa')](),controller['index']);router[_0x90c1('0x9')](_0x90c1('0xb'),auth[_0x90c1('0xa')](),controller[_0x90c1('0xc')]);router[_0x90c1('0x9')](_0x90c1('0xd'),auth[_0x90c1('0xa')](),controller['getFields']);router[_0x90c1('0x9')](_0x90c1('0xe'),auth['isAuthenticated'](),controller[_0x90c1('0xf')]);router['get']('/:id/descriptions',auth[_0x90c1('0xa')](),controller['getDescriptions']);router[_0x90c1('0x10')]('/',auth[_0x90c1('0xa')](),controller[_0x90c1('0x11')]);router[_0x90c1('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x90c1('0x13')]);router[_0x90c1('0x14')](_0x90c1('0xb'),auth[_0x90c1('0xa')](),controller['destroy']);module[_0x90c1('0x15')]=router;
\ No newline at end of file
+var _0x784a=['get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','index'];(function(_0x48e7a6,_0x3e015e){var _0x24d3a6=function(_0x524deb){while(--_0x524deb){_0x48e7a6['push'](_0x48e7a6['shift']());}};_0x24d3a6(++_0x3e015e);}(_0x784a,0x130));var _0xa784=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x784a[_0x3ff085];return _0x2b68c3;};'use strict';var multer=require(_0xa784('0x0'));var util=require(_0xa784('0x1'));var path=require(_0xa784('0x2'));var timeout=require('connect-timeout');var express=require(_0xa784('0x3'));var router=express['Router']();var fs_extra=require(_0xa784('0x4'));var auth=require(_0xa784('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa784('0x6'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xa784('0x7')]);router[_0xa784('0x8')](_0xa784('0x9'),auth[_0xa784('0xa')](),controller[_0xa784('0xb')]);router[_0xa784('0x8')](_0xa784('0xc'),auth[_0xa784('0xa')](),controller[_0xa784('0xd')]);router[_0xa784('0x8')](_0xa784('0xe'),auth[_0xa784('0xa')](),controller[_0xa784('0xf')]);router[_0xa784('0x8')](_0xa784('0x10'),auth[_0xa784('0xa')](),controller[_0xa784('0x11')]);router[_0xa784('0x12')]('/',auth[_0xa784('0xa')](),controller[_0xa784('0x13')]);router[_0xa784('0x14')]('/:id',auth[_0xa784('0xa')](),controller[_0xa784('0x15')]);router[_0xa784('0x16')](_0xa784('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0xa784('0x17')]=router;
\ No newline at end of file
index 771136b..72c3263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bf=['incident','phonecall','sequelize','STRING'];(function(_0x3bdf86,_0x395e10){var _0xad3f66=function(_0x29377e){while(--_0x29377e){_0x3bdf86['push'](_0x3bdf86['shift']());}};_0xad3f66(++_0x395e10);}(_0x81bf,0xb6));var _0xf81b=function(_0x26012,_0x5cf856){_0x26012=_0x26012-0x0;var _0x35bb2d=_0x81bf[_0x26012];return _0x35bb2d;};'use strict';var Sequelize=require(_0xf81b('0x0'));module['exports']={'name':{'type':Sequelize[_0xf81b('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM'](_0xf81b('0x2'),_0xf81b('0x3')),'defaultValue':_0xf81b('0x2')}};
\ No newline at end of file
+var _0x7aeb=['phonecall','exports','STRING','ENUM','incident'];(function(_0x53372b,_0x856df1){var _0x4705e0=function(_0x454a92){while(--_0x454a92){_0x53372b['push'](_0x53372b['shift']());}};_0x4705e0(++_0x856df1);}(_0x7aeb,0x88));var _0xb7ae=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x7aeb[_0x243b59];return _0x3e1676;};'use strict';var Sequelize=require('sequelize');module[_0xb7ae('0x0')]={'name':{'type':Sequelize[_0xb7ae('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xb7ae('0x2')](_0xb7ae('0x3'),_0xb7ae('0x4')),'defaultValue':_0xb7ae('0x3')}};
\ No newline at end of file
index 1215077..eec943e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb46=['where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','show','params','rawAttributes','find','create','body','catch','getFields','getSubjects','findOne','Dynamics365Field','hasOwnProperty','getDescriptions','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','Dynamics365Configuration','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0xeb46,0x15b));var _0x6eb4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xeb46[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6eb4('0x0'));var rimraf=require(_0x6eb4('0x1'));var zipdir=require(_0x6eb4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6eb4('0x3'));var moment=require('moment');var BPromise=require(_0x6eb4('0x4'));var Mustache=require(_0x6eb4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x6eb4('0x6'));var csv=require(_0x6eb4('0x7'));var ejs=require(_0x6eb4('0x8'));var fs=require('fs');var fs_extra=require(_0x6eb4('0x9'));var _=require(_0x6eb4('0xa'));var squel=require(_0x6eb4('0xb'));var crypto=require('crypto');var jsforce=require(_0x6eb4('0xc'));var deskjs=require(_0x6eb4('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6eb4('0xe'));var Papa=require(_0x6eb4('0xf'));var Redis=require(_0x6eb4('0x10'));var authService=require(_0x6eb4('0x11'));var qs=require(_0x6eb4('0x12'));var as=require(_0x6eb4('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6eb4('0x14'));var utils=require('../../config/utils');var config=require(_0x6eb4('0x15'));var licenseUtil=require(_0x6eb4('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a5755,_0x298dd4){_0x298dd4=_0x298dd4||0xcc;return function(_0x2d21ca){if(_0x2d21ca){return _0x3a5755['sendStatus'](_0x298dd4);}return _0x3a5755[_0x6eb4('0x17')](_0x298dd4)[_0x6eb4('0x18')]();};}function respondWithResult(_0x173e74,_0x1e4c0f){_0x1e4c0f=_0x1e4c0f||0xc8;return function(_0x5769b5){if(_0x5769b5){return _0x173e74['status'](_0x1e4c0f)[_0x6eb4('0x19')](_0x5769b5);}};}function respondWithFilteredResult(_0x5845a3,_0x680c9a){return function(_0xfa69f1){if(_0xfa69f1){var _0xe71787=typeof _0x680c9a[_0x6eb4('0x1a')]===_0x6eb4('0x1b')&&typeof _0x680c9a[_0x6eb4('0x1c')]===_0x6eb4('0x1b');var _0x32c8ea=_0xfa69f1[_0x6eb4('0x1d')];var _0x40a397=_0xe71787?0x0:_0x680c9a[_0x6eb4('0x1a')];var _0x37bffd=_0xe71787?_0xfa69f1['count']:_0x680c9a[_0x6eb4('0x1a')]+_0x680c9a['limit'];var _0x337cf5;if(_0x37bffd>=_0x32c8ea){_0x37bffd=_0x32c8ea;_0x337cf5=0xc8;}else{_0x337cf5=0xce;}_0x5845a3['status'](_0x337cf5);return _0x5845a3[_0x6eb4('0x1e')](_0x6eb4('0x1f'),_0x40a397+'-'+_0x37bffd+'/'+_0x32c8ea)[_0x6eb4('0x19')](_0xfa69f1);}return null;};}function patchUpdates(_0x464e0e){return function(_0x244bdc){try{jsonpatch[_0x6eb4('0x20')](_0x244bdc,_0x464e0e,!![]);}catch(_0x696159){return BPromise[_0x6eb4('0x21')](_0x696159);}return _0x244bdc[_0x6eb4('0x22')]();};}function saveUpdates(_0x1ee470,_0x213bdb){return function(_0x4d5ace){if(_0x4d5ace){return _0x4d5ace[_0x6eb4('0x23')](_0x1ee470)[_0x6eb4('0x24')](function(_0x41a148){return _0x41a148;});}return null;};}function removeEntity(_0x36e297,_0x2e02c4){return function(_0x594af1){if(_0x594af1){return _0x594af1[_0x6eb4('0x25')]()['then'](function(){_0x36e297[_0x6eb4('0x17')](0xcc)[_0x6eb4('0x18')]();});}};}function handleEntityNotFound(_0x38c6df,_0x141a56){return function(_0x3646ea){if(!_0x3646ea){_0x38c6df[_0x6eb4('0x26')](0x194);}return _0x3646ea;};}function handleError(_0x38c413,_0x333451){_0x333451=_0x333451||0x1f4;return function(_0x1a0ee4){logger[_0x6eb4('0x27')](_0x1a0ee4[_0x6eb4('0x28')]);if(_0x1a0ee4[_0x6eb4('0x29')]){delete _0x1a0ee4[_0x6eb4('0x29')];}_0x38c413['status'](_0x333451)[_0x6eb4('0x2a')](_0x1a0ee4);};}exports['index']=function(_0x18dc9a,_0x33baf5){var _0x1d2d65={},_0x3518a2={},_0x1725a0={'count':0x0,'rows':[]};var _0x4f04ec=_[_0x6eb4('0x2b')](db[_0x6eb4('0x2c')]['rawAttributes'],function(_0x53a452){return{'name':_0x53a452[_0x6eb4('0x2d')],'type':_0x53a452['type'][_0x6eb4('0x2e')]};});_0x3518a2[_0x6eb4('0x2f')]=_[_0x6eb4('0x2b')](_0x4f04ec,_0x6eb4('0x29'));_0x3518a2[_0x6eb4('0x30')]=_[_0x6eb4('0x31')](_0x18dc9a['query']);_0x3518a2[_0x6eb4('0x32')]=_['intersection'](_0x3518a2[_0x6eb4('0x2f')],_0x3518a2['query']);_0x1d2d65[_0x6eb4('0x33')]=_[_0x6eb4('0x34')](_0x3518a2[_0x6eb4('0x2f')],qs[_0x6eb4('0x35')](_0x18dc9a['query']['fields']));_0x1d2d65[_0x6eb4('0x33')]=_0x1d2d65[_0x6eb4('0x33')][_0x6eb4('0x36')]?_0x1d2d65[_0x6eb4('0x33')]:_0x3518a2[_0x6eb4('0x2f')];if(!_0x18dc9a[_0x6eb4('0x30')]['hasOwnProperty'](_0x6eb4('0x37'))){_0x1d2d65[_0x6eb4('0x1c')]=qs[_0x6eb4('0x1c')](_0x18dc9a[_0x6eb4('0x30')][_0x6eb4('0x1c')]);_0x1d2d65[_0x6eb4('0x1a')]=qs['offset'](_0x18dc9a[_0x6eb4('0x30')][_0x6eb4('0x1a')]);}_0x1d2d65[_0x6eb4('0x38')]=qs[_0x6eb4('0x39')](_0x18dc9a[_0x6eb4('0x30')][_0x6eb4('0x39')]);_0x1d2d65[_0x6eb4('0x3a')]=qs[_0x6eb4('0x32')](_[_0x6eb4('0x3b')](_0x18dc9a['query'],_0x3518a2['filters']),_0x4f04ec);if(_0x18dc9a['query'][_0x6eb4('0x3c')]){_0x1d2d65[_0x6eb4('0x3a')]=_[_0x6eb4('0x3d')](_0x1d2d65[_0x6eb4('0x3a')],{'$or':_[_0x6eb4('0x2b')](_0x4f04ec,function(_0xba364c){if(_0xba364c[_0x6eb4('0x3e')]!==_0x6eb4('0x3f')){var _0x561ab2={};_0x561ab2[_0xba364c[_0x6eb4('0x29')]]={'$like':'%'+_0x18dc9a[_0x6eb4('0x30')][_0x6eb4('0x3c')]+'%'};return _0x561ab2;}})});}_0x1d2d65=_[_0x6eb4('0x3d')]({},_0x1d2d65,_0x18dc9a[_0x6eb4('0x40')]);var _0x4d6725={'where':_0x1d2d65[_0x6eb4('0x3a')]};return db['Dynamics365Configuration'][_0x6eb4('0x1d')](_0x4d6725)['then'](function(_0xf0ad95){_0x1725a0['count']=_0xf0ad95;if(_0x18dc9a[_0x6eb4('0x30')][_0x6eb4('0x41')]){_0x1d2d65[_0x6eb4('0x42')]=[{'all':!![]}];}return db[_0x6eb4('0x2c')]['findAll'](_0x1d2d65);})['then'](function(_0x2e507e){_0x1725a0[_0x6eb4('0x43')]=_0x2e507e;return _0x1725a0;})['then'](respondWithFilteredResult(_0x33baf5,_0x1d2d65))['catch'](handleError(_0x33baf5,null));};exports[_0x6eb4('0x44')]=function(_0x4d91a8,_0x5c4849){var _0x1b8295={'raw':![],'where':{'id':_0x4d91a8[_0x6eb4('0x45')]['id']}},_0x17d29e={};_0x17d29e[_0x6eb4('0x2f')]=_[_0x6eb4('0x31')](db[_0x6eb4('0x2c')][_0x6eb4('0x46')]);_0x17d29e[_0x6eb4('0x30')]=_[_0x6eb4('0x31')](_0x4d91a8[_0x6eb4('0x30')]);_0x17d29e[_0x6eb4('0x32')]=_[_0x6eb4('0x34')](_0x17d29e[_0x6eb4('0x2f')],_0x17d29e[_0x6eb4('0x30')]);_0x1b8295[_0x6eb4('0x33')]=_[_0x6eb4('0x34')](_0x17d29e[_0x6eb4('0x2f')],qs[_0x6eb4('0x35')](_0x4d91a8['query']['fields']));_0x1b8295[_0x6eb4('0x33')]=_0x1b8295[_0x6eb4('0x33')][_0x6eb4('0x36')]?_0x1b8295[_0x6eb4('0x33')]:_0x17d29e[_0x6eb4('0x2f')];if(_0x4d91a8['query'][_0x6eb4('0x41')]){_0x1b8295[_0x6eb4('0x42')]=[{'all':!![]}];}_0x1b8295=_[_0x6eb4('0x3d')]({},_0x1b8295,_0x4d91a8[_0x6eb4('0x40')]);return db['Dynamics365Configuration'][_0x6eb4('0x47')](_0x1b8295)[_0x6eb4('0x24')](handleEntityNotFound(_0x5c4849,null))[_0x6eb4('0x24')](respondWithResult(_0x5c4849,null))['catch'](handleError(_0x5c4849,null));};exports[_0x6eb4('0x48')]=function(_0x203aa5,_0x59abb3){return db['Dynamics365Configuration'][_0x6eb4('0x48')](_0x203aa5[_0x6eb4('0x49')],{})[_0x6eb4('0x24')](respondWithResult(_0x59abb3,0xc9))[_0x6eb4('0x4a')](handleError(_0x59abb3,null));};exports[_0x6eb4('0x23')]=function(_0x33c663,_0x35e550){if(_0x33c663['body']['id']){delete _0x33c663[_0x6eb4('0x49')]['id'];}return db[_0x6eb4('0x2c')]['find']({'where':{'id':_0x33c663[_0x6eb4('0x45')]['id']}})[_0x6eb4('0x24')](handleEntityNotFound(_0x35e550,null))[_0x6eb4('0x24')](saveUpdates(_0x33c663[_0x6eb4('0x49')],null))[_0x6eb4('0x24')](respondWithResult(_0x35e550,null))[_0x6eb4('0x4a')](handleError(_0x35e550,null));};exports[_0x6eb4('0x25')]=function(_0x9d0d4a,_0x4d9dfe){return db[_0x6eb4('0x2c')][_0x6eb4('0x47')]({'where':{'id':_0x9d0d4a[_0x6eb4('0x45')]['id']}})[_0x6eb4('0x24')](handleEntityNotFound(_0x4d9dfe,null))[_0x6eb4('0x24')](removeEntity(_0x4d9dfe,null))['catch'](handleError(_0x4d9dfe,null));};exports[_0x6eb4('0x4b')]=function(_0x536fe5,_0x2c3e7d,_0x3287b1){var _0xa5c3e0={};var _0x23d396={};var _0x4a4758;var _0x1b3e37;return db[_0x6eb4('0x2c')]['findOne']({'where':{'id':_0x536fe5['params']['id']}})[_0x6eb4('0x24')](handleEntityNotFound(_0x2c3e7d,null))['then'](function(_0x5ab614){if(_0x5ab614){_0x4a4758=_0x5ab614;_0x23d396[_0x6eb4('0x2f')]=_[_0x6eb4('0x31')](db['Dynamics365Field'][_0x6eb4('0x46')]);_0x23d396[_0x6eb4('0x30')]=_['keys'](_0x536fe5[_0x6eb4('0x30')]);_0x23d396[_0x6eb4('0x32')]=_[_0x6eb4('0x34')](_0x23d396['model'],_0x23d396[_0x6eb4('0x30')]);_0xa5c3e0[_0x6eb4('0x33')]=_['intersection'](_0x23d396[_0x6eb4('0x2f')],qs[_0x6eb4('0x35')](_0x536fe5[_0x6eb4('0x30')][_0x6eb4('0x35')]));_0xa5c3e0['attributes']=_0xa5c3e0[_0x6eb4('0x33')][_0x6eb4('0x36')]?_0xa5c3e0[_0x6eb4('0x33')]:_0x23d396[_0x6eb4('0x2f')];_0xa5c3e0[_0x6eb4('0x38')]=qs[_0x6eb4('0x39')](_0x536fe5[_0x6eb4('0x30')][_0x6eb4('0x39')]);_0xa5c3e0[_0x6eb4('0x3a')]=qs['filters'](_[_0x6eb4('0x3b')](_0x536fe5['query'],_0x23d396['filters']));if(_0x536fe5['query'][_0x6eb4('0x3c')]){_0xa5c3e0[_0x6eb4('0x3a')]=_[_0x6eb4('0x3d')](_0xa5c3e0[_0x6eb4('0x3a')],{'$or':_[_0x6eb4('0x2b')](_0xa5c3e0[_0x6eb4('0x33')],function(_0x5df163){var _0x468630={};_0x468630[_0x5df163]={'$like':'%'+_0x536fe5['query'][_0x6eb4('0x3c')]+'%'};return _0x468630;})});}_0xa5c3e0=_['merge']({},_0xa5c3e0,_0x536fe5[_0x6eb4('0x40')]);return _0x4a4758[_0x6eb4('0x4b')](_0xa5c3e0);}})[_0x6eb4('0x24')](function(_0x18cb17){if(_0x18cb17){_0x1b3e37=_0x18cb17[_0x6eb4('0x36')];if(!_0x536fe5[_0x6eb4('0x30')]['hasOwnProperty'](_0x6eb4('0x37'))){_0xa5c3e0[_0x6eb4('0x1c')]=qs[_0x6eb4('0x1c')](_0x536fe5[_0x6eb4('0x30')][_0x6eb4('0x1c')]);_0xa5c3e0[_0x6eb4('0x1a')]=qs[_0x6eb4('0x1a')](_0x536fe5['query'][_0x6eb4('0x1a')]);}return _0x4a4758[_0x6eb4('0x4b')](_0xa5c3e0);}})[_0x6eb4('0x24')](function(_0x58a05b){if(_0x58a05b){return _0x58a05b?{'count':_0x1b3e37,'rows':_0x58a05b}:null;}})[_0x6eb4('0x24')](respondWithResult(_0x2c3e7d,null))[_0x6eb4('0x4a')](handleError(_0x2c3e7d,null));};exports[_0x6eb4('0x4c')]=function(_0x22a21c,_0x29ab05,_0x3d670a){var _0x377de6={};var _0x18c0af={};var _0x44a2ff;var _0x26da2b;return db[_0x6eb4('0x2c')][_0x6eb4('0x4d')]({'where':{'id':_0x22a21c[_0x6eb4('0x45')]['id']}})['then'](handleEntityNotFound(_0x29ab05,null))[_0x6eb4('0x24')](function(_0x166d33){if(_0x166d33){_0x44a2ff=_0x166d33;_0x18c0af['model']=_[_0x6eb4('0x31')](db[_0x6eb4('0x4e')][_0x6eb4('0x46')]);_0x18c0af['query']=_['keys'](_0x22a21c[_0x6eb4('0x30')]);_0x18c0af['filters']=_['intersection'](_0x18c0af[_0x6eb4('0x2f')],_0x18c0af['query']);_0x377de6[_0x6eb4('0x33')]=_['intersection'](_0x18c0af[_0x6eb4('0x2f')],qs[_0x6eb4('0x35')](_0x22a21c[_0x6eb4('0x30')][_0x6eb4('0x35')]));_0x377de6[_0x6eb4('0x33')]=_0x377de6['attributes'][_0x6eb4('0x36')]?_0x377de6['attributes']:_0x18c0af[_0x6eb4('0x2f')];_0x377de6[_0x6eb4('0x38')]=qs[_0x6eb4('0x39')](_0x22a21c['query']['sort']);_0x377de6['where']=qs[_0x6eb4('0x32')](_[_0x6eb4('0x3b')](_0x22a21c[_0x6eb4('0x30')],_0x18c0af[_0x6eb4('0x32')]));if(_0x22a21c['query'][_0x6eb4('0x3c')]){_0x377de6[_0x6eb4('0x3a')]=_[_0x6eb4('0x3d')](_0x377de6[_0x6eb4('0x3a')],{'$or':_[_0x6eb4('0x2b')](_0x377de6[_0x6eb4('0x33')],function(_0xe80d5c){var _0x32f522={};_0x32f522[_0xe80d5c]={'$like':'%'+_0x22a21c[_0x6eb4('0x30')][_0x6eb4('0x3c')]+'%'};return _0x32f522;})});}_0x377de6=_[_0x6eb4('0x3d')]({},_0x377de6,_0x22a21c[_0x6eb4('0x40')]);return _0x44a2ff[_0x6eb4('0x4c')](_0x377de6);}})['then'](function(_0x312b03){if(_0x312b03){_0x26da2b=_0x312b03[_0x6eb4('0x36')];if(!_0x22a21c[_0x6eb4('0x30')][_0x6eb4('0x4f')]('nolimit')){_0x377de6['limit']=qs['limit'](_0x22a21c[_0x6eb4('0x30')][_0x6eb4('0x1c')]);_0x377de6[_0x6eb4('0x1a')]=qs[_0x6eb4('0x1a')](_0x22a21c[_0x6eb4('0x30')][_0x6eb4('0x1a')]);}return _0x44a2ff['getSubjects'](_0x377de6);}})[_0x6eb4('0x24')](function(_0x3331f2){if(_0x3331f2){return _0x3331f2?{'count':_0x26da2b,'rows':_0x3331f2}:null;}})[_0x6eb4('0x24')](respondWithResult(_0x29ab05,null))[_0x6eb4('0x4a')](handleError(_0x29ab05,null));};exports[_0x6eb4('0x50')]=function(_0x474fff,_0x5bf6c3,_0x358481){var _0x29709c={};var _0xc29fab={};var _0x282af8;var _0x3690bd;return db['Dynamics365Configuration'][_0x6eb4('0x4d')]({'where':{'id':_0x474fff[_0x6eb4('0x45')]['id']}})[_0x6eb4('0x24')](handleEntityNotFound(_0x5bf6c3,null))['then'](function(_0x305d2b){if(_0x305d2b){_0x282af8=_0x305d2b;_0xc29fab[_0x6eb4('0x2f')]=_[_0x6eb4('0x31')](db[_0x6eb4('0x4e')][_0x6eb4('0x46')]);_0xc29fab[_0x6eb4('0x30')]=_[_0x6eb4('0x31')](_0x474fff['query']);_0xc29fab[_0x6eb4('0x32')]=_[_0x6eb4('0x34')](_0xc29fab['model'],_0xc29fab[_0x6eb4('0x30')]);_0x29709c[_0x6eb4('0x33')]=_[_0x6eb4('0x34')](_0xc29fab[_0x6eb4('0x2f')],qs[_0x6eb4('0x35')](_0x474fff[_0x6eb4('0x30')][_0x6eb4('0x35')]));_0x29709c[_0x6eb4('0x33')]=_0x29709c[_0x6eb4('0x33')][_0x6eb4('0x36')]?_0x29709c[_0x6eb4('0x33')]:_0xc29fab['model'];_0x29709c[_0x6eb4('0x38')]=qs[_0x6eb4('0x39')](_0x474fff['query'][_0x6eb4('0x39')]);_0x29709c['where']=qs['filters'](_[_0x6eb4('0x3b')](_0x474fff['query'],_0xc29fab[_0x6eb4('0x32')]));if(_0x474fff[_0x6eb4('0x30')][_0x6eb4('0x3c')]){_0x29709c['where']=_[_0x6eb4('0x3d')](_0x29709c[_0x6eb4('0x3a')],{'$or':_[_0x6eb4('0x2b')](_0x29709c['attributes'],function(_0x314655){var _0x182262={};_0x182262[_0x314655]={'$like':'%'+_0x474fff[_0x6eb4('0x30')][_0x6eb4('0x3c')]+'%'};return _0x182262;})});}_0x29709c=_['merge']({},_0x29709c,_0x474fff[_0x6eb4('0x40')]);return _0x282af8[_0x6eb4('0x50')](_0x29709c);}})['then'](function(_0x35ecf9){if(_0x35ecf9){_0x3690bd=_0x35ecf9['length'];if(!_0x474fff[_0x6eb4('0x30')][_0x6eb4('0x4f')](_0x6eb4('0x37'))){_0x29709c[_0x6eb4('0x1c')]=qs[_0x6eb4('0x1c')](_0x474fff[_0x6eb4('0x30')][_0x6eb4('0x1c')]);_0x29709c[_0x6eb4('0x1a')]=qs['offset'](_0x474fff[_0x6eb4('0x30')][_0x6eb4('0x1a')]);}return _0x282af8[_0x6eb4('0x50')](_0x29709c);}})[_0x6eb4('0x24')](function(_0x5ccb8a){if(_0x5ccb8a){return _0x5ccb8a?{'count':_0x3690bd,'rows':_0x5ccb8a}:null;}})[_0x6eb4('0x24')](respondWithResult(_0x5bf6c3,null))['catch'](handleError(_0x5bf6c3,null));};
\ No newline at end of file
+var _0xefd3=['VIRTUAL','merge','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body','update','findOne','getFields','nolimit','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','json','apply','save','then','destroy','end','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter'];(function(_0x153c02,_0x4b89f9){var _0x2f38b0=function(_0x1b572d){while(--_0x1b572d){_0x153c02['push'](_0x153c02['shift']());}};_0x2f38b0(++_0x4b89f9);}(_0xefd3,0xbc));var _0x3efd=function(_0x378d9c,_0xabec53){_0x378d9c=_0x378d9c-0x0;var _0x2f238e=_0xefd3[_0x378d9c];return _0x2f238e;};'use strict';var emlformat=require(_0x3efd('0x0'));var rimraf=require(_0x3efd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3efd('0x2'));var rp=require(_0x3efd('0x3'));var moment=require(_0x3efd('0x4'));var BPromise=require(_0x3efd('0x5'));var Mustache=require(_0x3efd('0x6'));var util=require(_0x3efd('0x7'));var path=require(_0x3efd('0x8'));var sox=require(_0x3efd('0x9'));var csv=require(_0x3efd('0xa'));var ejs=require(_0x3efd('0xb'));var fs=require('fs');var fs_extra=require(_0x3efd('0xc'));var _=require('lodash');var squel=require(_0x3efd('0xd'));var crypto=require(_0x3efd('0xe'));var jsforce=require(_0x3efd('0xf'));var deskjs=require(_0x3efd('0x10'));var toCsv=require(_0x3efd('0xa'));var querystring=require('querystring');var Papa=require(_0x3efd('0x11'));var Redis=require('ioredis');var authService=require(_0x3efd('0x12'));var qs=require(_0x3efd('0x13'));var as=require(_0x3efd('0x14'));var hardwareService=require(_0x3efd('0x15'));var logger=require(_0x3efd('0x16'))(_0x3efd('0x17'));var utils=require(_0x3efd('0x18'));var config=require(_0x3efd('0x19'));var licenseUtil=require(_0x3efd('0x1a'));var db=require(_0x3efd('0x1b'))['db'];function respondWithStatusCode(_0x5f2e29,_0x5a0dad){_0x5a0dad=_0x5a0dad||0xcc;return function(_0x166908){if(_0x166908){return _0x5f2e29[_0x3efd('0x1c')](_0x5a0dad);}return _0x5f2e29[_0x3efd('0x1d')](_0x5a0dad)['end']();};}function respondWithResult(_0x1d9ccb,_0x44f2cc){_0x44f2cc=_0x44f2cc||0xc8;return function(_0x39213d){if(_0x39213d){return _0x1d9ccb[_0x3efd('0x1d')](_0x44f2cc)['json'](_0x39213d);}};}function respondWithFilteredResult(_0x23f30d,_0x3d8ee2){return function(_0x10dec3){if(_0x10dec3){var _0x2c8b5e=typeof _0x3d8ee2[_0x3efd('0x1e')]==='undefined'&&typeof _0x3d8ee2['limit']===_0x3efd('0x1f');var _0xf6f7bb=_0x10dec3[_0x3efd('0x20')];var _0x53830f=_0x2c8b5e?0x0:_0x3d8ee2[_0x3efd('0x1e')];var _0x55b69f=_0x2c8b5e?_0x10dec3[_0x3efd('0x20')]:_0x3d8ee2['offset']+_0x3d8ee2[_0x3efd('0x21')];var _0x435ca3;if(_0x55b69f>=_0xf6f7bb){_0x55b69f=_0xf6f7bb;_0x435ca3=0xc8;}else{_0x435ca3=0xce;}_0x23f30d[_0x3efd('0x1d')](_0x435ca3);return _0x23f30d['set']('Content-Range',_0x53830f+'-'+_0x55b69f+'/'+_0xf6f7bb)[_0x3efd('0x22')](_0x10dec3);}return null;};}function patchUpdates(_0xa43c58){return function(_0x4fcb36){try{jsonpatch[_0x3efd('0x23')](_0x4fcb36,_0xa43c58,!![]);}catch(_0x99e149){return BPromise['reject'](_0x99e149);}return _0x4fcb36[_0x3efd('0x24')]();};}function saveUpdates(_0x18a08f,_0x1fedff){return function(_0x33e066){if(_0x33e066){return _0x33e066['update'](_0x18a08f)[_0x3efd('0x25')](function(_0x21f0bc){return _0x21f0bc;});}return null;};}function removeEntity(_0x424c71,_0x445e82){return function(_0x57289d){if(_0x57289d){return _0x57289d[_0x3efd('0x26')]()[_0x3efd('0x25')](function(){_0x424c71['status'](0xcc)[_0x3efd('0x27')]();});}};}function handleEntityNotFound(_0x1435a6,_0x3872b9){return function(_0x3a16ac){if(!_0x3a16ac){_0x1435a6['sendStatus'](0x194);}return _0x3a16ac;};}function handleError(_0x4c1d78,_0x1fbf08){_0x1fbf08=_0x1fbf08||0x1f4;return function(_0x4f5726){logger[_0x3efd('0x28')](_0x4f5726[_0x3efd('0x29')]);if(_0x4f5726[_0x3efd('0x2a')]){delete _0x4f5726[_0x3efd('0x2a')];}_0x4c1d78[_0x3efd('0x1d')](_0x1fbf08)[_0x3efd('0x2b')](_0x4f5726);};}exports[_0x3efd('0x2c')]=function(_0x337774,_0x2cc010){var _0x10ce21={},_0x5c3a35={},_0x368b99={'count':0x0,'rows':[]};var _0x3dd854=_[_0x3efd('0x2d')](db[_0x3efd('0x2e')][_0x3efd('0x2f')],function(_0x1cfe84){return{'name':_0x1cfe84[_0x3efd('0x30')],'type':_0x1cfe84[_0x3efd('0x31')][_0x3efd('0x32')]};});_0x5c3a35[_0x3efd('0x33')]=_[_0x3efd('0x2d')](_0x3dd854,_0x3efd('0x2a'));_0x5c3a35[_0x3efd('0x34')]=_['keys'](_0x337774[_0x3efd('0x34')]);_0x5c3a35[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x5c3a35['model'],_0x5c3a35[_0x3efd('0x34')]);_0x10ce21[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x5c3a35[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x337774['query'][_0x3efd('0x38')]));_0x10ce21[_0x3efd('0x37')]=_0x10ce21[_0x3efd('0x37')][_0x3efd('0x39')]?_0x10ce21[_0x3efd('0x37')]:_0x5c3a35[_0x3efd('0x33')];if(!_0x337774[_0x3efd('0x34')][_0x3efd('0x3a')]('nolimit')){_0x10ce21[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x337774[_0x3efd('0x34')][_0x3efd('0x21')]);_0x10ce21[_0x3efd('0x1e')]=qs[_0x3efd('0x1e')](_0x337774[_0x3efd('0x34')][_0x3efd('0x1e')]);}_0x10ce21[_0x3efd('0x3b')]=qs[_0x3efd('0x3c')](_0x337774[_0x3efd('0x34')][_0x3efd('0x3c')]);_0x10ce21[_0x3efd('0x3d')]=qs[_0x3efd('0x35')](_[_0x3efd('0x3e')](_0x337774[_0x3efd('0x34')],_0x5c3a35['filters']),_0x3dd854);if(_0x337774[_0x3efd('0x34')][_0x3efd('0x3f')]){_0x10ce21[_0x3efd('0x3d')]=_['merge'](_0x10ce21[_0x3efd('0x3d')],{'$or':_[_0x3efd('0x2d')](_0x3dd854,function(_0x553aee){if(_0x553aee[_0x3efd('0x31')]!==_0x3efd('0x40')){var _0x39e2b7={};_0x39e2b7[_0x553aee[_0x3efd('0x2a')]]={'$like':'%'+_0x337774[_0x3efd('0x34')][_0x3efd('0x3f')]+'%'};return _0x39e2b7;}})});}_0x10ce21=_[_0x3efd('0x41')]({},_0x10ce21,_0x337774[_0x3efd('0x42')]);var _0x430882={'where':_0x10ce21['where']};return db[_0x3efd('0x2e')][_0x3efd('0x20')](_0x430882)[_0x3efd('0x25')](function(_0x10177b){_0x368b99['count']=_0x10177b;if(_0x337774[_0x3efd('0x34')][_0x3efd('0x43')]){_0x10ce21['include']=[{'all':!![]}];}return db[_0x3efd('0x2e')][_0x3efd('0x44')](_0x10ce21);})[_0x3efd('0x25')](function(_0x16fda2){_0x368b99[_0x3efd('0x45')]=_0x16fda2;return _0x368b99;})[_0x3efd('0x25')](respondWithFilteredResult(_0x2cc010,_0x10ce21))[_0x3efd('0x46')](handleError(_0x2cc010,null));};exports['show']=function(_0x587c40,_0x46d07f){var _0x52ea6a={'raw':![],'where':{'id':_0x587c40[_0x3efd('0x47')]['id']}},_0x2ed09e={};_0x2ed09e[_0x3efd('0x33')]=_[_0x3efd('0x48')](db[_0x3efd('0x2e')]['rawAttributes']);_0x2ed09e[_0x3efd('0x34')]=_[_0x3efd('0x48')](_0x587c40[_0x3efd('0x34')]);_0x2ed09e[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x2ed09e[_0x3efd('0x33')],_0x2ed09e[_0x3efd('0x34')]);_0x52ea6a[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x2ed09e[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x587c40[_0x3efd('0x34')][_0x3efd('0x38')]));_0x52ea6a[_0x3efd('0x37')]=_0x52ea6a[_0x3efd('0x37')][_0x3efd('0x39')]?_0x52ea6a[_0x3efd('0x37')]:_0x2ed09e[_0x3efd('0x33')];if(_0x587c40['query'][_0x3efd('0x43')]){_0x52ea6a[_0x3efd('0x49')]=[{'all':!![]}];}_0x52ea6a=_[_0x3efd('0x41')]({},_0x52ea6a,_0x587c40[_0x3efd('0x42')]);return db[_0x3efd('0x2e')][_0x3efd('0x4a')](_0x52ea6a)[_0x3efd('0x25')](handleEntityNotFound(_0x46d07f,null))[_0x3efd('0x25')](respondWithResult(_0x46d07f,null))['catch'](handleError(_0x46d07f,null));};exports[_0x3efd('0x4b')]=function(_0x592711,_0x59d6b7){return db[_0x3efd('0x2e')]['create'](_0x592711[_0x3efd('0x4c')],{})[_0x3efd('0x25')](respondWithResult(_0x59d6b7,0xc9))[_0x3efd('0x46')](handleError(_0x59d6b7,null));};exports[_0x3efd('0x4d')]=function(_0xb78a7b,_0xdbf8bd){if(_0xb78a7b[_0x3efd('0x4c')]['id']){delete _0xb78a7b[_0x3efd('0x4c')]['id'];}return db['Dynamics365Configuration'][_0x3efd('0x4a')]({'where':{'id':_0xb78a7b[_0x3efd('0x47')]['id']}})['then'](handleEntityNotFound(_0xdbf8bd,null))[_0x3efd('0x25')](saveUpdates(_0xb78a7b[_0x3efd('0x4c')],null))[_0x3efd('0x25')](respondWithResult(_0xdbf8bd,null))['catch'](handleError(_0xdbf8bd,null));};exports[_0x3efd('0x26')]=function(_0x51ad08,_0x19166b){return db[_0x3efd('0x2e')][_0x3efd('0x4a')]({'where':{'id':_0x51ad08[_0x3efd('0x47')]['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0x19166b,null))['then'](removeEntity(_0x19166b,null))[_0x3efd('0x46')](handleError(_0x19166b,null));};exports['getFields']=function(_0x4dff23,_0xdba2bb,_0x5761fc){var _0x2ed9a2={};var _0x548a47={};var _0x3685d1;var _0x1261b7;return db['Dynamics365Configuration'][_0x3efd('0x4e')]({'where':{'id':_0x4dff23['params']['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0xdba2bb,null))[_0x3efd('0x25')](function(_0x50584c){if(_0x50584c){_0x3685d1=_0x50584c;_0x548a47[_0x3efd('0x33')]=_[_0x3efd('0x48')](db['Dynamics365Field'][_0x3efd('0x2f')]);_0x548a47[_0x3efd('0x34')]=_['keys'](_0x4dff23[_0x3efd('0x34')]);_0x548a47['filters']=_[_0x3efd('0x36')](_0x548a47[_0x3efd('0x33')],_0x548a47[_0x3efd('0x34')]);_0x2ed9a2['attributes']=_['intersection'](_0x548a47['model'],qs[_0x3efd('0x38')](_0x4dff23[_0x3efd('0x34')][_0x3efd('0x38')]));_0x2ed9a2[_0x3efd('0x37')]=_0x2ed9a2['attributes'][_0x3efd('0x39')]?_0x2ed9a2['attributes']:_0x548a47[_0x3efd('0x33')];_0x2ed9a2[_0x3efd('0x3b')]=qs[_0x3efd('0x3c')](_0x4dff23['query'][_0x3efd('0x3c')]);_0x2ed9a2[_0x3efd('0x3d')]=qs[_0x3efd('0x35')](_[_0x3efd('0x3e')](_0x4dff23[_0x3efd('0x34')],_0x548a47[_0x3efd('0x35')]));if(_0x4dff23[_0x3efd('0x34')][_0x3efd('0x3f')]){_0x2ed9a2[_0x3efd('0x3d')]=_[_0x3efd('0x41')](_0x2ed9a2[_0x3efd('0x3d')],{'$or':_[_0x3efd('0x2d')](_0x2ed9a2['attributes'],function(_0x278eee){var _0x418aef={};_0x418aef[_0x278eee]={'$like':'%'+_0x4dff23['query']['filter']+'%'};return _0x418aef;})});}_0x2ed9a2=_[_0x3efd('0x41')]({},_0x2ed9a2,_0x4dff23['options']);return _0x3685d1[_0x3efd('0x4f')](_0x2ed9a2);}})['then'](function(_0x271a80){if(_0x271a80){_0x1261b7=_0x271a80[_0x3efd('0x39')];if(!_0x4dff23['query']['hasOwnProperty'](_0x3efd('0x50'))){_0x2ed9a2[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x4dff23[_0x3efd('0x34')][_0x3efd('0x21')]);_0x2ed9a2[_0x3efd('0x1e')]=qs[_0x3efd('0x1e')](_0x4dff23[_0x3efd('0x34')][_0x3efd('0x1e')]);}return _0x3685d1['getFields'](_0x2ed9a2);}})['then'](function(_0x1bd84f){if(_0x1bd84f){return _0x1bd84f?{'count':_0x1261b7,'rows':_0x1bd84f}:null;}})[_0x3efd('0x25')](respondWithResult(_0xdba2bb,null))[_0x3efd('0x46')](handleError(_0xdba2bb,null));};exports[_0x3efd('0x51')]=function(_0x23a5e4,_0x2f64ab,_0x20fa93){var _0x59e33d={};var _0x5a0ecb={};var _0x4335f5;var _0x5b5e84;return db[_0x3efd('0x2e')][_0x3efd('0x4e')]({'where':{'id':_0x23a5e4['params']['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0x2f64ab,null))[_0x3efd('0x25')](function(_0x2f6f76){if(_0x2f6f76){_0x4335f5=_0x2f6f76;_0x5a0ecb['model']=_['keys'](db[_0x3efd('0x52')][_0x3efd('0x2f')]);_0x5a0ecb[_0x3efd('0x34')]=_['keys'](_0x23a5e4[_0x3efd('0x34')]);_0x5a0ecb[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x5a0ecb[_0x3efd('0x33')],_0x5a0ecb[_0x3efd('0x34')]);_0x59e33d[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x5a0ecb[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x23a5e4[_0x3efd('0x34')][_0x3efd('0x38')]));_0x59e33d['attributes']=_0x59e33d[_0x3efd('0x37')]['length']?_0x59e33d['attributes']:_0x5a0ecb[_0x3efd('0x33')];_0x59e33d[_0x3efd('0x3b')]=qs['sort'](_0x23a5e4['query']['sort']);_0x59e33d[_0x3efd('0x3d')]=qs['filters'](_[_0x3efd('0x3e')](_0x23a5e4['query'],_0x5a0ecb[_0x3efd('0x35')]));if(_0x23a5e4['query'][_0x3efd('0x3f')]){_0x59e33d['where']=_['merge'](_0x59e33d[_0x3efd('0x3d')],{'$or':_['map'](_0x59e33d[_0x3efd('0x37')],function(_0x1f4fd3){var _0x238d5c={};_0x238d5c[_0x1f4fd3]={'$like':'%'+_0x23a5e4[_0x3efd('0x34')][_0x3efd('0x3f')]+'%'};return _0x238d5c;})});}_0x59e33d=_[_0x3efd('0x41')]({},_0x59e33d,_0x23a5e4[_0x3efd('0x42')]);return _0x4335f5[_0x3efd('0x51')](_0x59e33d);}})[_0x3efd('0x25')](function(_0x2f8091){if(_0x2f8091){_0x5b5e84=_0x2f8091[_0x3efd('0x39')];if(!_0x23a5e4['query'][_0x3efd('0x3a')](_0x3efd('0x50'))){_0x59e33d[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x23a5e4[_0x3efd('0x34')]['limit']);_0x59e33d[_0x3efd('0x1e')]=qs['offset'](_0x23a5e4['query'][_0x3efd('0x1e')]);}return _0x4335f5[_0x3efd('0x51')](_0x59e33d);}})[_0x3efd('0x25')](function(_0x541458){if(_0x541458){return _0x541458?{'count':_0x5b5e84,'rows':_0x541458}:null;}})['then'](respondWithResult(_0x2f64ab,null))[_0x3efd('0x46')](handleError(_0x2f64ab,null));};exports[_0x3efd('0x53')]=function(_0x522e9e,_0x57b288,_0x33973d){var _0x5ac25e={};var _0x2100cf={};var _0x70b4b2;var _0x5918a0;return db[_0x3efd('0x2e')][_0x3efd('0x4e')]({'where':{'id':_0x522e9e['params']['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0x57b288,null))[_0x3efd('0x25')](function(_0x2e8723){if(_0x2e8723){_0x70b4b2=_0x2e8723;_0x2100cf[_0x3efd('0x33')]=_[_0x3efd('0x48')](db['Dynamics365Field'][_0x3efd('0x2f')]);_0x2100cf[_0x3efd('0x34')]=_[_0x3efd('0x48')](_0x522e9e[_0x3efd('0x34')]);_0x2100cf[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x2100cf[_0x3efd('0x33')],_0x2100cf['query']);_0x5ac25e[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x2100cf[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x38')]));_0x5ac25e[_0x3efd('0x37')]=_0x5ac25e[_0x3efd('0x37')]['length']?_0x5ac25e[_0x3efd('0x37')]:_0x2100cf['model'];_0x5ac25e['order']=qs[_0x3efd('0x3c')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3c')]);_0x5ac25e[_0x3efd('0x3d')]=qs[_0x3efd('0x35')](_[_0x3efd('0x3e')](_0x522e9e[_0x3efd('0x34')],_0x2100cf[_0x3efd('0x35')]));if(_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3f')]){_0x5ac25e['where']=_[_0x3efd('0x41')](_0x5ac25e[_0x3efd('0x3d')],{'$or':_[_0x3efd('0x2d')](_0x5ac25e['attributes'],function(_0x4893f5){var _0x305b3f={};_0x305b3f[_0x4893f5]={'$like':'%'+_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3f')]+'%'};return _0x305b3f;})});}_0x5ac25e=_[_0x3efd('0x41')]({},_0x5ac25e,_0x522e9e[_0x3efd('0x42')]);return _0x70b4b2[_0x3efd('0x53')](_0x5ac25e);}})[_0x3efd('0x25')](function(_0x2a42c1){if(_0x2a42c1){_0x5918a0=_0x2a42c1['length'];if(!_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3a')]('nolimit')){_0x5ac25e[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x21')]);_0x5ac25e[_0x3efd('0x1e')]=qs[_0x3efd('0x1e')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x1e')]);}return _0x70b4b2[_0x3efd('0x53')](_0x5ac25e);}})[_0x3efd('0x25')](function(_0x14741b){if(_0x14741b){return _0x14741b?{'count':_0x5918a0,'rows':_0x14741b}:null;}})[_0x3efd('0x25')](respondWithResult(_0x57b288,null))[_0x3efd('0x46')](handleError(_0x57b288,null));};
\ No newline at end of file
index 6ba8849..282a422 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','Dynamics365Configuration','int_dynamics365_configurations','lodash','../../config/logger','api','moment','path','../../config/environment','./intDynamics365Configuration.attributes'];(function(_0x3be2a0,_0x30d5af){var _0x130828=function(_0x5c8b85){while(--_0x5c8b85){_0x3be2a0['push'](_0x3be2a0['shift']());}};_0x130828(++_0x30d5af);}(_0x3e74,0x175));var _0x43e7=function(_0x51a7f8,_0x299835){_0x51a7f8=_0x51a7f8-0x0;var _0x8cb5bd=_0x3e74[_0x51a7f8];return _0x8cb5bd;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb43b=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird','path'];(function(_0x3b05d5,_0x48be5d){var _0x141e17=function(_0x4e631e){while(--_0x4e631e){_0x3b05d5['push'](_0x3b05d5['shift']());}};_0x141e17(++_0x48be5d);}(_0xb43b,0x1b2));var _0xbb43=function(_0x49c0de,_0x21ee12){_0x49c0de=_0x49c0de-0x0;var _0x196b9e=_0xb43b[_0x49c0de];return _0x196b9e;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 33cdcf3..455f51c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddbc=['client','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','randomstring','../../config/utils','rpc','../../config/environment'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xddbc,0xb8));var _0xcddb=function(_0xcd7832,_0x1b7264){_0xcd7832=_0xcd7832-0x0;var _0x1680ad=_0xddbc[_0xcd7832];return _0x1680ad;};'use strict';var _=require('lodash');var util=require(_0xcddb('0x0'));var moment=require(_0xcddb('0x1'));var BPromise=require('bluebird');var rs=require(_0xcddb('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcddb('0x3'));var logger=require('../../config/logger')(_0xcddb('0x4'));var config=require(_0xcddb('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xcddb('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x96c92a,_0x54c585,_0x50c5bc){return new BPromise(function(_0x21c085,_0xba4bcc){return client[_0xcddb('0x7')](_0x96c92a,_0x50c5bc)[_0xcddb('0x8')](function(_0x5a8059){logger[_0xcddb('0x9')](_0xcddb('0xa'),_0x54c585,_0xcddb('0xb'));logger[_0xcddb('0xc')](_0xcddb('0xd'),_0x54c585,'request\x20sent',JSON[_0xcddb('0xe')](_0x5a8059));if(_0x5a8059[_0xcddb('0xf')]){if(_0x5a8059[_0xcddb('0xf')][_0xcddb('0x10')]===0x1f4){logger['error'](_0xcddb('0xa'),_0x54c585,_0x5a8059[_0xcddb('0xf')][_0xcddb('0x11')]);return _0xba4bcc(_0x5a8059[_0xcddb('0xf')][_0xcddb('0x11')]);}logger['error'](_0xcddb('0xa'),_0x54c585,_0x5a8059[_0xcddb('0xf')]['message']);return _0x21c085(_0x5a8059[_0xcddb('0xf')]['message']);}else{logger[_0xcddb('0x9')]('Dynamics365Configuration,\x20%s,\x20%s',_0x54c585,_0xcddb('0xb'));_0x21c085(_0x5a8059['result'][_0xcddb('0x11')]);}})[_0xcddb('0x12')](function(_0x17011e){logger[_0xcddb('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x54c585,_0x17011e);_0xba4bcc(_0x17011e);});});}
\ No newline at end of file
+var _0x2bd3=['result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','code','Dynamics365Configuration,\x20%s,\x20%s','message'];(function(_0x3394de,_0x169a18){var _0x51ea55=function(_0x1474ab){while(--_0x1474ab){_0x3394de['push'](_0x3394de['shift']());}};_0x51ea55(++_0x169a18);}(_0x2bd3,0xa2));var _0x32bd=function(_0x41216a,_0x53e83d){_0x41216a=_0x41216a-0x0;var _0x122cf1=_0x2bd3[_0x41216a];return _0x122cf1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x32bd('0x0'));var BPromise=require('bluebird');var rs=require(_0x32bd('0x1'));var fs=require('fs');var Redis=require(_0x32bd('0x2'));var db=require(_0x32bd('0x3'))['db'];var utils=require(_0x32bd('0x4'));var logger=require('../../config/logger')(_0x32bd('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x32bd('0x6')][_0x32bd('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1bf468,_0x31bd51,_0x2b7d2d){return new BPromise(function(_0x52bca0,_0x529334){return client[_0x32bd('0x8')](_0x1bf468,_0x2b7d2d)[_0x32bd('0x9')](function(_0x315f33){logger[_0x32bd('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,_0x32bd('0xb'));logger[_0x32bd('0xc')](_0x32bd('0xd'),_0x31bd51,_0x32bd('0xb'),JSON['stringify'](_0x315f33));if(_0x315f33[_0x32bd('0xe')]){if(_0x315f33[_0x32bd('0xe')][_0x32bd('0xf')]===0x1f4){logger['error'](_0x32bd('0x10'),_0x31bd51,_0x315f33[_0x32bd('0xe')][_0x32bd('0x11')]);return _0x529334(_0x315f33[_0x32bd('0xe')][_0x32bd('0x11')]);}logger[_0x32bd('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,_0x315f33[_0x32bd('0xe')]['message']);return _0x52bca0(_0x315f33[_0x32bd('0xe')][_0x32bd('0x11')]);}else{logger[_0x32bd('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,'request\x20sent');_0x52bca0(_0x315f33[_0x32bd('0x12')]['message']);}})[_0x32bd('0x13')](function(_0x498f3d){logger[_0x32bd('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,_0x498f3d);_0x529334(_0x498f3d);});});}
\ No newline at end of file
index 3523543..242dba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x167f=['path','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','post','create','put','delete','destroy','exports'];(function(_0x54cba8,_0x3e5114){var _0x324d1f=function(_0x473dc5){while(--_0x473dc5){_0x54cba8['push'](_0x54cba8['shift']());}};_0x324d1f(++_0x3e5114);}(_0x167f,0x1a0));var _0xf167=function(_0x479b99,_0x1e5bec){_0x479b99=_0x479b99-0x0;var _0x1e7eb7=_0x167f[_0x479b99];return _0x1e7eb7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf167('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf167('0x1')]();var fs_extra=require(_0xf167('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xf167('0x3'));var config=require(_0xf167('0x4'));var controller=require(_0xf167('0x5'));router[_0xf167('0x6')]('/',auth[_0xf167('0x7')](),controller[_0xf167('0x8')]);router['get'](_0xf167('0x9'),auth[_0xf167('0x7')](),controller['show']);router[_0xf167('0xa')]('/',auth[_0xf167('0x7')](),controller[_0xf167('0xb')]);router[_0xf167('0xc')](_0xf167('0x9'),auth[_0xf167('0x7')](),controller['update']);router[_0xf167('0xd')](_0xf167('0x9'),auth['isAuthenticated'](),controller[_0xf167('0xe')]);module[_0xf167('0xf')]=router;
\ No newline at end of file
+var _0x13c1=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDynamics365Field.controller','get','isAuthenticated','index','post','/:id'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x13c1,0x82));var _0x113c=function(_0xaaeca0,_0x25a235){_0xaaeca0=_0xaaeca0-0x0;var _0x54ab5c=_0x13c1[_0xaaeca0];return _0x54ab5c;};'use strict';var multer=require(_0x113c('0x0'));var util=require(_0x113c('0x1'));var path=require(_0x113c('0x2'));var timeout=require(_0x113c('0x3'));var express=require(_0x113c('0x4'));var router=express[_0x113c('0x5')]();var fs_extra=require(_0x113c('0x6'));var auth=require(_0x113c('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x113c('0x8'));router[_0x113c('0x9')]('/',auth[_0x113c('0xa')](),controller[_0x113c('0xb')]);router[_0x113c('0x9')]('/:id',auth[_0x113c('0xa')](),controller['show']);router[_0x113c('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x113c('0xd'),auth[_0x113c('0xa')](),controller[_0x113c('0xe')]);router[_0x113c('0xf')](_0x113c('0xd'),auth[_0x113c('0xa')](),controller[_0x113c('0x10')]);module[_0x113c('0x11')]=router;
\ No newline at end of file
index d20694b..5f0dfc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcab0=['ENUM','string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports'];(function(_0x2c96c0,_0x490d48){var _0x30c3a9=function(_0x45c563){while(--_0x45c563){_0x2c96c0['push'](_0x2c96c0['shift']());}};_0x30c3a9(++_0x490d48);}(_0xcab0,0x198));var _0x0cab=function(_0x29f1ac,_0xddd834){_0x29f1ac=_0x29f1ac-0x0;var _0x43f68c=_0xcab0[_0x29f1ac];return _0x43f68c;};'use strict';var Sequelize=require(_0x0cab('0x0'));module[_0x0cab('0x1')]={'type':{'type':Sequelize[_0x0cab('0x2')](_0x0cab('0x3'),'variable',_0x0cab('0x4'),_0x0cab('0x5'),_0x0cab('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x0cab('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x0cab('0x2')](_0x0cab('0x3'),_0x0cab('0x8'),'customVariable')},'keyContent':{'type':Sequelize[_0x0cab('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x0cab('0x7')]},'customField':{'type':Sequelize[_0x0cab('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0cab('0x7')]}};
\ No newline at end of file
+var _0xe753=['variable','customVariable','keyValue','picklist','STRING','ENUM','string'];(function(_0xdbce8,_0x550d11){var _0x4e8866=function(_0x570546){while(--_0x570546){_0xdbce8['push'](_0xdbce8['shift']());}};_0x4e8866(++_0x550d11);}(_0xe753,0x8a));var _0x3e75=function(_0x588bd0,_0x3a760b){_0x588bd0=_0x588bd0-0x0;var _0x824a8d=_0xe753[_0x588bd0];return _0x824a8d;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x3e75('0x0')](_0x3e75('0x1'),_0x3e75('0x2'),_0x3e75('0x3'),_0x3e75('0x4'),_0x3e75('0x5')),'defaultValue':_0x3e75('0x1')},'content':{'type':Sequelize[_0x3e75('0x6')]},'key':{'type':Sequelize[_0x3e75('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x3e75('0x1'),_0x3e75('0x2'),_0x3e75('0x3'))},'keyContent':{'type':Sequelize[_0x3e75('0x6')]},'idField':{'type':Sequelize[_0x3e75('0x6')]},'nameField':{'type':Sequelize[_0x3e75('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1afa709..2f263f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a99=['Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','Dynamics365Field','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','then','findAll','rows','catch','show','params','length','include','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a99,0x1cb));var _0x97a9=function(_0x918112,_0x37ef10){_0x918112=_0x918112-0x0;var _0x5b5641=_0x7a99[_0x918112];return _0x5b5641;};'use strict';var emlformat=require(_0x97a9('0x0'));var rimraf=require(_0x97a9('0x1'));var zipdir=require(_0x97a9('0x2'));var jsonpatch=require(_0x97a9('0x3'));var rp=require(_0x97a9('0x4'));var moment=require(_0x97a9('0x5'));var BPromise=require(_0x97a9('0x6'));var Mustache=require(_0x97a9('0x7'));var util=require(_0x97a9('0x8'));var path=require(_0x97a9('0x9'));var sox=require(_0x97a9('0xa'));var csv=require(_0x97a9('0xb'));var ejs=require(_0x97a9('0xc'));var fs=require('fs');var fs_extra=require(_0x97a9('0xd'));var _=require(_0x97a9('0xe'));var squel=require(_0x97a9('0xf'));var crypto=require(_0x97a9('0x10'));var jsforce=require(_0x97a9('0x11'));var deskjs=require(_0x97a9('0x12'));var toCsv=require('to-csv');var querystring=require(_0x97a9('0x13'));var Papa=require(_0x97a9('0x14'));var Redis=require(_0x97a9('0x15'));var authService=require(_0x97a9('0x16'));var qs=require(_0x97a9('0x17'));var as=require(_0x97a9('0x18'));var hardwareService=require(_0x97a9('0x19'));var logger=require(_0x97a9('0x1a'))(_0x97a9('0x1b'));var utils=require(_0x97a9('0x1c'));var config=require('../../config/environment');var licenseUtil=require(_0x97a9('0x1d'));var db=require(_0x97a9('0x1e'))['db'];function respondWithStatusCode(_0x4e7abf,_0x91efea){_0x91efea=_0x91efea||0xcc;return function(_0x23979a){if(_0x23979a){return _0x4e7abf[_0x97a9('0x1f')](_0x91efea);}return _0x4e7abf[_0x97a9('0x20')](_0x91efea)[_0x97a9('0x21')]();};}function respondWithResult(_0x9d5ceb,_0x38af71){_0x38af71=_0x38af71||0xc8;return function(_0x2be0b4){if(_0x2be0b4){return _0x9d5ceb[_0x97a9('0x20')](_0x38af71)[_0x97a9('0x22')](_0x2be0b4);}};}function respondWithFilteredResult(_0x7e40ea,_0x4e3cd){return function(_0xadf009){if(_0xadf009){var _0x107284=typeof _0x4e3cd[_0x97a9('0x23')]===_0x97a9('0x24')&&typeof _0x4e3cd['limit']===_0x97a9('0x24');var _0x1975d6=_0xadf009[_0x97a9('0x25')];var _0x249544=_0x107284?0x0:_0x4e3cd[_0x97a9('0x23')];var _0x4b8cec=_0x107284?_0xadf009[_0x97a9('0x25')]:_0x4e3cd[_0x97a9('0x23')]+_0x4e3cd['limit'];var _0xf1b060;if(_0x4b8cec>=_0x1975d6){_0x4b8cec=_0x1975d6;_0xf1b060=0xc8;}else{_0xf1b060=0xce;}_0x7e40ea['status'](_0xf1b060);return _0x7e40ea[_0x97a9('0x26')](_0x97a9('0x27'),_0x249544+'-'+_0x4b8cec+'/'+_0x1975d6)[_0x97a9('0x22')](_0xadf009);}return null;};}function patchUpdates(_0x43b9c1){return function(_0x32121a){try{jsonpatch[_0x97a9('0x28')](_0x32121a,_0x43b9c1,!![]);}catch(_0x2c920b){return BPromise[_0x97a9('0x29')](_0x2c920b);}return _0x32121a[_0x97a9('0x2a')]();};}function saveUpdates(_0x3318e5,_0x272712){return function(_0x4fc796){if(_0x4fc796){return _0x4fc796[_0x97a9('0x2b')](_0x3318e5)['then'](function(_0x550486){return _0x550486;});}return null;};}function removeEntity(_0x7db33a,_0xa580f3){return function(_0x44e0f5){if(_0x44e0f5){return _0x44e0f5[_0x97a9('0x2c')]()['then'](function(){_0x7db33a[_0x97a9('0x20')](0xcc)[_0x97a9('0x21')]();});}};}function handleEntityNotFound(_0x5ec06f,_0x2fa2f6){return function(_0x33aac2){if(!_0x33aac2){_0x5ec06f['sendStatus'](0x194);}return _0x33aac2;};}function handleError(_0x25aae1,_0x23df5f){_0x23df5f=_0x23df5f||0x1f4;return function(_0x17d783){logger['error'](_0x17d783[_0x97a9('0x2d')]);if(_0x17d783[_0x97a9('0x2e')]){delete _0x17d783[_0x97a9('0x2e')];}_0x25aae1[_0x97a9('0x20')](_0x23df5f)[_0x97a9('0x2f')](_0x17d783);};}exports[_0x97a9('0x30')]=function(_0x11569c,_0x48c0ce){var _0x4c1ff7={},_0x5985fa={},_0x44f987={'count':0x0,'rows':[]};var _0x49a475=_[_0x97a9('0x31')](db[_0x97a9('0x32')][_0x97a9('0x33')],function(_0x336f38){return{'name':_0x336f38['fieldName'],'type':_0x336f38[_0x97a9('0x34')][_0x97a9('0x35')]};});_0x5985fa[_0x97a9('0x36')]=_[_0x97a9('0x31')](_0x49a475,_0x97a9('0x2e'));_0x5985fa[_0x97a9('0x37')]=_[_0x97a9('0x38')](_0x11569c['query']);_0x5985fa['filters']=_[_0x97a9('0x39')](_0x5985fa['model'],_0x5985fa[_0x97a9('0x37')]);_0x4c1ff7[_0x97a9('0x3a')]=_[_0x97a9('0x39')](_0x5985fa[_0x97a9('0x36')],qs[_0x97a9('0x3b')](_0x11569c[_0x97a9('0x37')][_0x97a9('0x3b')]));_0x4c1ff7[_0x97a9('0x3a')]=_0x4c1ff7[_0x97a9('0x3a')]['length']?_0x4c1ff7[_0x97a9('0x3a')]:_0x5985fa['model'];if(!_0x11569c[_0x97a9('0x37')][_0x97a9('0x3c')](_0x97a9('0x3d'))){_0x4c1ff7[_0x97a9('0x3e')]=qs[_0x97a9('0x3e')](_0x11569c[_0x97a9('0x37')]['limit']);_0x4c1ff7[_0x97a9('0x23')]=qs[_0x97a9('0x23')](_0x11569c[_0x97a9('0x37')]['offset']);}_0x4c1ff7[_0x97a9('0x3f')]=qs[_0x97a9('0x40')](_0x11569c[_0x97a9('0x37')][_0x97a9('0x40')]);_0x4c1ff7[_0x97a9('0x41')]=qs[_0x97a9('0x42')](_[_0x97a9('0x43')](_0x11569c[_0x97a9('0x37')],_0x5985fa[_0x97a9('0x42')]),_0x49a475);if(_0x11569c['query'][_0x97a9('0x44')]){_0x4c1ff7[_0x97a9('0x41')]=_[_0x97a9('0x45')](_0x4c1ff7['where'],{'$or':_['map'](_0x49a475,function(_0x2731ca){if(_0x2731ca[_0x97a9('0x34')]!==_0x97a9('0x46')){var _0x2cb9cb={};_0x2cb9cb[_0x2731ca[_0x97a9('0x2e')]]={'$like':'%'+_0x11569c['query']['filter']+'%'};return _0x2cb9cb;}})});}_0x4c1ff7=_[_0x97a9('0x45')]({},_0x4c1ff7,_0x11569c[_0x97a9('0x47')]);var _0x3a079c={'where':_0x4c1ff7[_0x97a9('0x41')]};return db['Dynamics365Field'][_0x97a9('0x25')](_0x3a079c)[_0x97a9('0x48')](function(_0x341af9){_0x44f987['count']=_0x341af9;if(_0x11569c[_0x97a9('0x37')]['includeAll']){_0x4c1ff7['include']=[{'all':!![]}];}return db[_0x97a9('0x32')][_0x97a9('0x49')](_0x4c1ff7);})['then'](function(_0x2dab7e){_0x44f987[_0x97a9('0x4a')]=_0x2dab7e;return _0x44f987;})['then'](respondWithFilteredResult(_0x48c0ce,_0x4c1ff7))[_0x97a9('0x4b')](handleError(_0x48c0ce,null));};exports[_0x97a9('0x4c')]=function(_0x2893aa,_0x3e95dc){var _0x1cbeac={'raw':!![],'where':{'id':_0x2893aa[_0x97a9('0x4d')]['id']}},_0x5dd772={};_0x5dd772['model']=_[_0x97a9('0x38')](db[_0x97a9('0x32')]['rawAttributes']);_0x5dd772['query']=_['keys'](_0x2893aa[_0x97a9('0x37')]);_0x5dd772[_0x97a9('0x42')]=_['intersection'](_0x5dd772[_0x97a9('0x36')],_0x5dd772[_0x97a9('0x37')]);_0x1cbeac[_0x97a9('0x3a')]=_['intersection'](_0x5dd772['model'],qs[_0x97a9('0x3b')](_0x2893aa[_0x97a9('0x37')]['fields']));_0x1cbeac[_0x97a9('0x3a')]=_0x1cbeac[_0x97a9('0x3a')][_0x97a9('0x4e')]?_0x1cbeac[_0x97a9('0x3a')]:_0x5dd772[_0x97a9('0x36')];if(_0x2893aa[_0x97a9('0x37')]['includeAll']){_0x1cbeac[_0x97a9('0x4f')]=[{'all':!![]}];}_0x1cbeac=_['merge']({},_0x1cbeac,_0x2893aa[_0x97a9('0x47')]);return db[_0x97a9('0x32')]['find'](_0x1cbeac)['then'](handleEntityNotFound(_0x3e95dc,null))[_0x97a9('0x48')](respondWithResult(_0x3e95dc,null))['catch'](handleError(_0x3e95dc,null));};exports[_0x97a9('0x50')]=function(_0x3505cc,_0x40134b){return db['Dynamics365Field']['create'](_0x3505cc['body'],{})[_0x97a9('0x48')](respondWithResult(_0x40134b,0xc9))[_0x97a9('0x4b')](handleError(_0x40134b,null));};exports['update']=function(_0x31ff86,_0x42649e){if(_0x31ff86[_0x97a9('0x51')]['id']){delete _0x31ff86[_0x97a9('0x51')]['id'];}return db['Dynamics365Field'][_0x97a9('0x52')]({'where':{'id':_0x31ff86[_0x97a9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x42649e,null))[_0x97a9('0x48')](saveUpdates(_0x31ff86['body'],null))['then'](respondWithResult(_0x42649e,null))['catch'](handleError(_0x42649e,null));};exports[_0x97a9('0x2c')]=function(_0x177080,_0x4af778){return db[_0x97a9('0x32')][_0x97a9('0x52')]({'where':{'id':_0x177080[_0x97a9('0x4d')]['id']}})[_0x97a9('0x48')](handleEntityNotFound(_0x4af778,null))['then'](removeEntity(_0x4af778,null))['catch'](handleError(_0x4af778,null));};
\ No newline at end of file
+var _0x8028=['desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Dynamics365Field','includeAll','findAll','rows','catch','show','params','include','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x19e1e8,_0x150698){var _0x21fc2c=function(_0x55facc){while(--_0x55facc){_0x19e1e8['push'](_0x19e1e8['shift']());}};_0x21fc2c(++_0x150698);}(_0x8028,0x12a));var _0x8802=function(_0x310458,_0x495bfd){_0x310458=_0x310458-0x0;var _0x4bc2ee=_0x8028[_0x310458];return _0x4bc2ee;};'use strict';var emlformat=require(_0x8802('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8802('0x1'));var jsonpatch=require(_0x8802('0x2'));var rp=require(_0x8802('0x3'));var moment=require('moment');var BPromise=require(_0x8802('0x4'));var Mustache=require(_0x8802('0x5'));var util=require(_0x8802('0x6'));var path=require(_0x8802('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8802('0x8'));var fs=require('fs');var fs_extra=require(_0x8802('0x9'));var _=require(_0x8802('0xa'));var squel=require(_0x8802('0xb'));var crypto=require(_0x8802('0xc'));var jsforce=require(_0x8802('0xd'));var deskjs=require(_0x8802('0xe'));var toCsv=require(_0x8802('0xf'));var querystring=require(_0x8802('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8802('0x11'));var qs=require(_0x8802('0x12'));var as=require(_0x8802('0x13'));var hardwareService=require(_0x8802('0x14'));var logger=require(_0x8802('0x15'))(_0x8802('0x16'));var utils=require('../../config/utils');var config=require(_0x8802('0x17'));var licenseUtil=require(_0x8802('0x18'));var db=require(_0x8802('0x19'))['db'];function respondWithStatusCode(_0x1e3caf,_0x187761){_0x187761=_0x187761||0xcc;return function(_0x4cc3bb){if(_0x4cc3bb){return _0x1e3caf[_0x8802('0x1a')](_0x187761);}return _0x1e3caf['status'](_0x187761)[_0x8802('0x1b')]();};}function respondWithResult(_0x1e0db7,_0x5ea44b){_0x5ea44b=_0x5ea44b||0xc8;return function(_0x1c7e40){if(_0x1c7e40){return _0x1e0db7[_0x8802('0x1c')](_0x5ea44b)[_0x8802('0x1d')](_0x1c7e40);}};}function respondWithFilteredResult(_0x15ea3d,_0x30efd5){return function(_0xaeb548){if(_0xaeb548){var _0x35b0ab=typeof _0x30efd5[_0x8802('0x1e')]===_0x8802('0x1f')&&typeof _0x30efd5[_0x8802('0x20')]===_0x8802('0x1f');var _0x293c12=_0xaeb548[_0x8802('0x21')];var _0x59a230=_0x35b0ab?0x0:_0x30efd5[_0x8802('0x1e')];var _0x5796a7=_0x35b0ab?_0xaeb548[_0x8802('0x21')]:_0x30efd5['offset']+_0x30efd5[_0x8802('0x20')];var _0x508611;if(_0x5796a7>=_0x293c12){_0x5796a7=_0x293c12;_0x508611=0xc8;}else{_0x508611=0xce;}_0x15ea3d[_0x8802('0x1c')](_0x508611);return _0x15ea3d['set'](_0x8802('0x22'),_0x59a230+'-'+_0x5796a7+'/'+_0x293c12)[_0x8802('0x1d')](_0xaeb548);}return null;};}function patchUpdates(_0xbf4d6e){return function(_0x40f1dd){try{jsonpatch['apply'](_0x40f1dd,_0xbf4d6e,!![]);}catch(_0x20b8e1){return BPromise[_0x8802('0x23')](_0x20b8e1);}return _0x40f1dd['save']();};}function saveUpdates(_0x47b305,_0x52af3c){return function(_0x330338){if(_0x330338){return _0x330338[_0x8802('0x24')](_0x47b305)[_0x8802('0x25')](function(_0xc0a233){return _0xc0a233;});}return null;};}function removeEntity(_0x1c5ffc,_0x290f30){return function(_0x11c60a){if(_0x11c60a){return _0x11c60a[_0x8802('0x26')]()['then'](function(){_0x1c5ffc['status'](0xcc)[_0x8802('0x1b')]();});}};}function handleEntityNotFound(_0x3608e4,_0x481ce6){return function(_0x4ffcbb){if(!_0x4ffcbb){_0x3608e4['sendStatus'](0x194);}return _0x4ffcbb;};}function handleError(_0x215f61,_0xbe5b08){_0xbe5b08=_0xbe5b08||0x1f4;return function(_0x377783){logger[_0x8802('0x27')](_0x377783[_0x8802('0x28')]);if(_0x377783[_0x8802('0x29')]){delete _0x377783[_0x8802('0x29')];}_0x215f61[_0x8802('0x1c')](_0xbe5b08)[_0x8802('0x2a')](_0x377783);};}exports[_0x8802('0x2b')]=function(_0x4ac8b1,_0xf705){var _0x153a26={},_0x428e44={},_0x54ec5b={'count':0x0,'rows':[]};var _0x19060e=_['map'](db['Dynamics365Field'][_0x8802('0x2c')],function(_0x6a4568){return{'name':_0x6a4568[_0x8802('0x2d')],'type':_0x6a4568[_0x8802('0x2e')][_0x8802('0x2f')]};});_0x428e44[_0x8802('0x30')]=_[_0x8802('0x31')](_0x19060e,_0x8802('0x29'));_0x428e44['query']=_[_0x8802('0x32')](_0x4ac8b1[_0x8802('0x33')]);_0x428e44[_0x8802('0x34')]=_['intersection'](_0x428e44[_0x8802('0x30')],_0x428e44[_0x8802('0x33')]);_0x153a26[_0x8802('0x35')]=_[_0x8802('0x36')](_0x428e44[_0x8802('0x30')],qs['fields'](_0x4ac8b1[_0x8802('0x33')][_0x8802('0x37')]));_0x153a26[_0x8802('0x35')]=_0x153a26[_0x8802('0x35')][_0x8802('0x38')]?_0x153a26[_0x8802('0x35')]:_0x428e44['model'];if(!_0x4ac8b1[_0x8802('0x33')][_0x8802('0x39')](_0x8802('0x3a'))){_0x153a26[_0x8802('0x20')]=qs['limit'](_0x4ac8b1[_0x8802('0x33')]['limit']);_0x153a26['offset']=qs[_0x8802('0x1e')](_0x4ac8b1[_0x8802('0x33')][_0x8802('0x1e')]);}_0x153a26[_0x8802('0x3b')]=qs[_0x8802('0x3c')](_0x4ac8b1['query'][_0x8802('0x3c')]);_0x153a26[_0x8802('0x3d')]=qs[_0x8802('0x34')](_[_0x8802('0x3e')](_0x4ac8b1[_0x8802('0x33')],_0x428e44[_0x8802('0x34')]),_0x19060e);if(_0x4ac8b1['query'][_0x8802('0x3f')]){_0x153a26[_0x8802('0x3d')]=_[_0x8802('0x40')](_0x153a26[_0x8802('0x3d')],{'$or':_[_0x8802('0x31')](_0x19060e,function(_0x4077bf){if(_0x4077bf[_0x8802('0x2e')]!==_0x8802('0x41')){var _0x1f3254={};_0x1f3254[_0x4077bf[_0x8802('0x29')]]={'$like':'%'+_0x4ac8b1[_0x8802('0x33')]['filter']+'%'};return _0x1f3254;}})});}_0x153a26=_[_0x8802('0x40')]({},_0x153a26,_0x4ac8b1[_0x8802('0x42')]);var _0xe4e5a={'where':_0x153a26['where']};return db[_0x8802('0x43')][_0x8802('0x21')](_0xe4e5a)[_0x8802('0x25')](function(_0x5d03dd){_0x54ec5b[_0x8802('0x21')]=_0x5d03dd;if(_0x4ac8b1[_0x8802('0x33')][_0x8802('0x44')]){_0x153a26['include']=[{'all':!![]}];}return db[_0x8802('0x43')][_0x8802('0x45')](_0x153a26);})[_0x8802('0x25')](function(_0x1c5158){_0x54ec5b[_0x8802('0x46')]=_0x1c5158;return _0x54ec5b;})[_0x8802('0x25')](respondWithFilteredResult(_0xf705,_0x153a26))[_0x8802('0x47')](handleError(_0xf705,null));};exports[_0x8802('0x48')]=function(_0x3a2608,_0x26e9d5){var _0x51fb98={'raw':!![],'where':{'id':_0x3a2608[_0x8802('0x49')]['id']}},_0x56296c={};_0x56296c['model']=_[_0x8802('0x32')](db[_0x8802('0x43')][_0x8802('0x2c')]);_0x56296c[_0x8802('0x33')]=_['keys'](_0x3a2608[_0x8802('0x33')]);_0x56296c[_0x8802('0x34')]=_[_0x8802('0x36')](_0x56296c[_0x8802('0x30')],_0x56296c[_0x8802('0x33')]);_0x51fb98[_0x8802('0x35')]=_['intersection'](_0x56296c[_0x8802('0x30')],qs[_0x8802('0x37')](_0x3a2608[_0x8802('0x33')][_0x8802('0x37')]));_0x51fb98['attributes']=_0x51fb98[_0x8802('0x35')][_0x8802('0x38')]?_0x51fb98[_0x8802('0x35')]:_0x56296c[_0x8802('0x30')];if(_0x3a2608[_0x8802('0x33')][_0x8802('0x44')]){_0x51fb98[_0x8802('0x4a')]=[{'all':!![]}];}_0x51fb98=_[_0x8802('0x40')]({},_0x51fb98,_0x3a2608[_0x8802('0x42')]);return db[_0x8802('0x43')][_0x8802('0x4b')](_0x51fb98)[_0x8802('0x25')](handleEntityNotFound(_0x26e9d5,null))['then'](respondWithResult(_0x26e9d5,null))['catch'](handleError(_0x26e9d5,null));};exports['create']=function(_0x201fab,_0x5a80b6){return db[_0x8802('0x43')][_0x8802('0x4c')](_0x201fab[_0x8802('0x4d')],{})[_0x8802('0x25')](respondWithResult(_0x5a80b6,0xc9))['catch'](handleError(_0x5a80b6,null));};exports['update']=function(_0x1e3a64,_0x540c68){if(_0x1e3a64[_0x8802('0x4d')]['id']){delete _0x1e3a64['body']['id'];}return db[_0x8802('0x43')][_0x8802('0x4b')]({'where':{'id':_0x1e3a64[_0x8802('0x49')]['id']}})['then'](handleEntityNotFound(_0x540c68,null))['then'](saveUpdates(_0x1e3a64['body'],null))[_0x8802('0x25')](respondWithResult(_0x540c68,null))[_0x8802('0x47')](handleError(_0x540c68,null));};exports['destroy']=function(_0xf111b9,_0x2080cd){return db['Dynamics365Field'][_0x8802('0x4b')]({'where':{'id':_0xf111b9['params']['id']}})['then'](handleEntityNotFound(_0x2080cd,null))[_0x8802('0x25')](removeEntity(_0x2080cd,null))[_0x8802('0x47')](handleError(_0x2080cd,null));};
\ No newline at end of file
index 3fc89f0..90570fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f71=['idField','FieldId','util','api','moment','bluebird','path','rimraf','../../config/environment','exports','Dynamics365Field','dynamics365_unique_index'];(function(_0x511d90,_0x324ea3){var _0x4bed88=function(_0x45d756){while(--_0x45d756){_0x511d90['push'](_0x511d90['shift']());}};_0x4bed88(++_0x324ea3);}(_0x9f71,0xaa));var _0x19f7=function(_0xafa225,_0xd29c03){_0xafa225=_0xafa225-0x0;var _0x4f546a=_0x9f71[_0xafa225];return _0x4f546a;};'use strict';var _=require('lodash');var util=require(_0x19f7('0x0'));var logger=require('../../config/logger')(_0x19f7('0x1'));var moment=require(_0x19f7('0x2'));var BPromise=require(_0x19f7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x19f7('0x4'));var rimraf=require(_0x19f7('0x5'));var config=require(_0x19f7('0x6'));var attributes=require('./intDynamics365Field.attributes');module[_0x19f7('0x7')]=function(_0x2b81ae,_0x3db085){return _0x2b81ae['define'](_0x19f7('0x8'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0x19f7('0x9'),'fields':[_0x19f7('0xa'),_0x19f7('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x665c=['path','rimraf','exports','define','Dynamics365Field','idField','FieldId','lodash','util','../../config/logger','moment','request-promise'];(function(_0x4ed520,_0x21be63){var _0x4415a6=function(_0x14b151){while(--_0x14b151){_0x4ed520['push'](_0x4ed520['shift']());}};_0x4415a6(++_0x21be63);}(_0x665c,0xa3));var _0xc665=function(_0x43d5b5,_0xbce44){_0x43d5b5=_0x43d5b5-0x0;var _0xc22500=_0x665c[_0x43d5b5];return _0xc22500;};'use strict';var _=require(_0xc665('0x0'));var util=require(_0xc665('0x1'));var logger=require(_0xc665('0x2'))('api');var moment=require(_0xc665('0x3'));var BPromise=require('bluebird');var rp=require(_0xc665('0x4'));var fs=require('fs');var path=require(_0xc665('0x5'));var rimraf=require(_0xc665('0x6'));var config=require('../../config/environment');var attributes=require('./intDynamics365Field.attributes');module[_0xc665('0x7')]=function(_0x24342e,_0xd3bbf5){return _0x24342e[_0xc665('0x8')](_0xc665('0x9'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0xc665('0xa'),_0xc665('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e758539..ec2769c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2691=['../../config/logger','../../config/environment','jayson/promise','client','http','request','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x456fb1,_0x859a1d){var _0x4083d6=function(_0xe1d0f2){while(--_0xe1d0f2){_0x456fb1['push'](_0x456fb1['shift']());}};_0x4083d6(++_0x859a1d);}(_0x2691,0x1f3));var _0x1269=function(_0x4899e1,_0x470826){_0x4899e1=_0x4899e1-0x0;var _0x27d71e=_0x2691[_0x4899e1];return _0x27d71e;};'use strict';var _=require(_0x1269('0x0'));var util=require(_0x1269('0x1'));var moment=require(_0x1269('0x2'));var BPromise=require(_0x1269('0x3'));var rs=require(_0x1269('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1269('0x5'))['db'];var utils=require(_0x1269('0x6'));var logger=require(_0x1269('0x7'))('rpc');var config=require(_0x1269('0x8'));var jayson=require(_0x1269('0x9'));var client=jayson[_0x1269('0xa')][_0x1269('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ba3d5,_0x353fea,_0x1e4ed5){return new BPromise(function(_0x19702c,_0x4632c1){return client[_0x1269('0xc')](_0x4ba3d5,_0x1e4ed5)['then'](function(_0x23afb2){logger['info'](_0x1269('0xd'),_0x353fea,_0x1269('0xe'));logger[_0x1269('0xf')](_0x1269('0x10'),_0x353fea,_0x1269('0xe'),JSON[_0x1269('0x11')](_0x23afb2));if(_0x23afb2[_0x1269('0x12')]){if(_0x23afb2['error'][_0x1269('0x13')]===0x1f4){logger[_0x1269('0x12')](_0x1269('0xd'),_0x353fea,_0x23afb2[_0x1269('0x12')]['message']);return _0x4632c1(_0x23afb2[_0x1269('0x12')][_0x1269('0x14')]);}logger[_0x1269('0x12')](_0x1269('0xd'),_0x353fea,_0x23afb2[_0x1269('0x12')][_0x1269('0x14')]);return _0x19702c(_0x23afb2[_0x1269('0x12')][_0x1269('0x14')]);}else{logger['info'](_0x1269('0xd'),_0x353fea,_0x1269('0xe'));_0x19702c(_0x23afb2[_0x1269('0x15')][_0x1269('0x14')]);}})['catch'](function(_0x105b79){logger['error'](_0x1269('0xd'),_0x353fea,_0x105b79);_0x4632c1(_0x105b79);});});}
\ No newline at end of file
+var _0xa50d=['Dynamics365Field,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xa50d,0xcb));var _0xda50=function(_0x120dea,_0x62daa3){_0x120dea=_0x120dea-0x0;var _0x2ba797=_0xa50d[_0x120dea];return _0x2ba797;};'use strict';var _=require(_0xda50('0x0'));var util=require(_0xda50('0x1'));var moment=require(_0xda50('0x2'));var BPromise=require(_0xda50('0x3'));var rs=require(_0xda50('0x4'));var fs=require('fs');var Redis=require(_0xda50('0x5'));var db=require(_0xda50('0x6'))['db'];var utils=require(_0xda50('0x7'));var logger=require(_0xda50('0x8'))(_0xda50('0x9'));var config=require(_0xda50('0xa'));var jayson=require(_0xda50('0xb'));var client=jayson[_0xda50('0xc')][_0xda50('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2d5758,_0x23759b,_0x573482){return new BPromise(function(_0x42c6f5,_0x1d997d){return client[_0xda50('0xe')](_0x2d5758,_0x573482)[_0xda50('0xf')](function(_0x105bdf){logger[_0xda50('0x10')]('Dynamics365Field,\x20%s,\x20%s',_0x23759b,'request\x20sent');logger[_0xda50('0x11')](_0xda50('0x12'),_0x23759b,_0xda50('0x13'),JSON['stringify'](_0x105bdf));if(_0x105bdf[_0xda50('0x14')]){if(_0x105bdf['error'][_0xda50('0x15')]===0x1f4){logger[_0xda50('0x14')](_0xda50('0x16'),_0x23759b,_0x105bdf[_0xda50('0x14')][_0xda50('0x17')]);return _0x1d997d(_0x105bdf['error'][_0xda50('0x17')]);}logger[_0xda50('0x14')](_0xda50('0x16'),_0x23759b,_0x105bdf['error']['message']);return _0x42c6f5(_0x105bdf[_0xda50('0x14')][_0xda50('0x17')]);}else{logger[_0xda50('0x10')](_0xda50('0x16'),_0x23759b,_0xda50('0x13'));_0x42c6f5(_0x105bdf['result']['message']);}})[_0xda50('0x18')](function(_0x397812){logger[_0xda50('0x14')]('Dynamics365Field,\x20%s,\x20%s',_0x23759b,_0x397812);_0x1d997d(_0x397812);});});}
\ No newline at end of file
index bbbcbaf..ebbc6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6044=['destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','getFields','create','post','/:id/configurations','addConfiguration','put','update','delete'];(function(_0x1b72f2,_0x22a6cd){var _0x565936=function(_0x1926e2){while(--_0x1926e2){_0x1b72f2['push'](_0x1b72f2['shift']());}};_0x565936(++_0x22a6cd);}(_0x6044,0xff));var _0x4604=function(_0x4294f9,_0x3f35cd){_0x4294f9=_0x4294f9-0x0;var _0x5826f4=_0x6044[_0x4294f9];return _0x5826f4;};'use strict';var multer=require(_0x4604('0x0'));var util=require(_0x4604('0x1'));var path=require('path');var timeout=require(_0x4604('0x2'));var express=require('express');var router=express[_0x4604('0x3')]();var fs_extra=require(_0x4604('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4604('0x5'));var controller=require(_0x4604('0x6'));router[_0x4604('0x7')]('/',auth[_0x4604('0x8')](),controller[_0x4604('0x9')]);router[_0x4604('0x7')](_0x4604('0xa'),auth[_0x4604('0x8')](),controller[_0x4604('0xb')]);router[_0x4604('0x7')]('/:id/configurations',auth[_0x4604('0x8')](),controller[_0x4604('0xc')]);router['get']('/:id/fields',auth[_0x4604('0x8')](),controller[_0x4604('0xd')]);router['post']('/',auth[_0x4604('0x8')](),controller[_0x4604('0xe')]);router[_0x4604('0xf')](_0x4604('0x10'),auth[_0x4604('0x8')](),controller[_0x4604('0x11')]);router[_0x4604('0x12')](_0x4604('0xa'),auth[_0x4604('0x8')](),controller[_0x4604('0x13')]);router[_0x4604('0x14')](_0x4604('0xa'),auth[_0x4604('0x8')](),controller[_0x4604('0x15')]);module[_0x4604('0x16')]=router;
\ No newline at end of file
+var _0x2833=['addConfiguration','put','/:id','update','delete','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','index','/:id/configurations','getConfigurations','/:id/fields','getFields','post','isAuthenticated'];(function(_0x24be50,_0x3535df){var _0x5c9fa9=function(_0x29b32b){while(--_0x29b32b){_0x24be50['push'](_0x24be50['shift']());}};_0x5c9fa9(++_0x3535df);}(_0x2833,0xec));var _0x3283=function(_0x39b77d,_0x1af2f7){_0x39b77d=_0x39b77d-0x0;var _0x745673=_0x2833[_0x39b77d];return _0x745673;};'use strict';var multer=require('multer');var util=require(_0x3283('0x0'));var path=require(_0x3283('0x1'));var timeout=require(_0x3283('0x2'));var express=require(_0x3283('0x3'));var router=express['Router']();var fs_extra=require(_0x3283('0x4'));var auth=require(_0x3283('0x5'));var interaction=require(_0x3283('0x6'));var config=require(_0x3283('0x7'));var controller=require(_0x3283('0x8'));router[_0x3283('0x9')]('/',auth['isAuthenticated'](),controller[_0x3283('0xa')]);router[_0x3283('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x3283('0x9')](_0x3283('0xb'),auth['isAuthenticated'](),controller[_0x3283('0xc')]);router[_0x3283('0x9')](_0x3283('0xd'),auth['isAuthenticated'](),controller[_0x3283('0xe')]);router[_0x3283('0xf')]('/',auth[_0x3283('0x10')](),controller['create']);router[_0x3283('0xf')](_0x3283('0xb'),auth[_0x3283('0x10')](),controller[_0x3283('0x11')]);router[_0x3283('0x12')](_0x3283('0x13'),auth['isAuthenticated'](),controller[_0x3283('0x14')]);router[_0x3283('0x15')](_0x3283('0x13'),auth['isAuthenticated'](),controller[_0x3283('0x16')]);module['exports']=router;
\ No newline at end of file
index 4e82314..c2b2433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['STRING','username','remoteUri','exports'];(function(_0x1c9093,_0x31eb87){var _0x32dd36=function(_0x36da2d){while(--_0x36da2d){_0x1c9093['push'](_0x1c9093['shift']());}};_0x32dd36(++_0x31eb87);}(_0x1967,0x173));var _0x7196=function(_0x3c6963,_0x233c3c){_0x3c6963=_0x3c6963-0x0;var _0x82c1f6=_0x1967[_0x3c6963];return _0x82c1f6;};'use strict';var Sequelize=require('sequelize');module[_0x7196('0x0')]={'name':{'type':Sequelize[_0x7196('0x1')]},'description':{'type':Sequelize[_0x7196('0x1')]},'username':{'type':Sequelize[_0x7196('0x1')],'unique':_0x7196('0x2')},'apiKey':{'type':Sequelize[_0x7196('0x1')]},'remoteUri':{'type':Sequelize[_0x7196('0x1')],'unique':_0x7196('0x3')},'serverUrl':{'type':Sequelize[_0x7196('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x2a07=['sequelize','exports','STRING','remoteUri'];(function(_0x47604d,_0x15a014){var _0x388e4c=function(_0x42a446){while(--_0x42a446){_0x47604d['push'](_0x47604d['shift']());}};_0x388e4c(++_0x15a014);}(_0x2a07,0x74));var _0x72a0=function(_0x4e0b8c,_0x443f31){_0x4e0b8c=_0x4e0b8c-0x0;var _0x633ecc=_0x2a07[_0x4e0b8c];return _0x633ecc;};'use strict';var Sequelize=require(_0x72a0('0x0'));module[_0x72a0('0x1')]={'name':{'type':Sequelize[_0x72a0('0x2')]},'description':{'type':Sequelize[_0x72a0('0x2')]},'username':{'type':Sequelize[_0x72a0('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x72a0('0x2')]},'remoteUri':{'type':Sequelize[_0x72a0('0x2')],'unique':_0x72a0('0x3')},'serverUrl':{'type':Sequelize[_0x72a0('0x2')],'allowNull':![]}};
\ No newline at end of file
index 7a94ba2..ad9f826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ce9=['moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','options','create','body','params','find','getConfigurations','FreshdeskConfiguration','hasOwnProperty','addConfiguration','findOne','Subjects','channel','Descriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','subject','description','priority','group','source','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir'];(function(_0x4a7529,_0xba0830){var _0x254252=function(_0x53cbea){while(--_0x53cbea){_0x4a7529['push'](_0x4a7529['shift']());}};_0x254252(++_0xba0830);}(_0x6ce9,0x76));var _0x96ce=function(_0x3be140,_0x2b6f73){_0x3be140=_0x3be140-0x0;var _0x3989da=_0x6ce9[_0x3be140];return _0x3989da;};'use strict';var emlformat=require(_0x96ce('0x0'));var rimraf=require(_0x96ce('0x1'));var zipdir=require(_0x96ce('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x96ce('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x96ce('0x4'));var util=require(_0x96ce('0x5'));var path=require(_0x96ce('0x6'));var sox=require(_0x96ce('0x7'));var csv=require('to-csv');var ejs=require(_0x96ce('0x8'));var fs=require('fs');var fs_extra=require(_0x96ce('0x9'));var _=require(_0x96ce('0xa'));var squel=require('squel');var crypto=require(_0x96ce('0xb'));var jsforce=require(_0x96ce('0xc'));var deskjs=require(_0x96ce('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x96ce('0xe'));var Redis=require(_0x96ce('0xf'));var authService=require(_0x96ce('0x10'));var qs=require(_0x96ce('0x11'));var as=require(_0x96ce('0x12'));var hardwareService=require(_0x96ce('0x13'));var logger=require(_0x96ce('0x14'))(_0x96ce('0x15'));var utils=require(_0x96ce('0x16'));var config=require(_0x96ce('0x17'));var licenseUtil=require(_0x96ce('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x96ce('0x19'));function respondWithStatusCode(_0xb2a714,_0xa3c20e){_0xa3c20e=_0xa3c20e||0xcc;return function(_0x4e24e2){if(_0x4e24e2){return _0xb2a714[_0x96ce('0x1a')](_0xa3c20e);}return _0xb2a714[_0x96ce('0x1b')](_0xa3c20e)[_0x96ce('0x1c')]();};}function respondWithResult(_0x715161,_0x402431){_0x402431=_0x402431||0xc8;return function(_0x79e56d){if(_0x79e56d){return _0x715161[_0x96ce('0x1b')](_0x402431)[_0x96ce('0x1d')](_0x79e56d);}};}function respondWithFilteredResult(_0x329d7a,_0xc3f97f){return function(_0x1515ea){if(_0x1515ea){var _0x35b727=typeof _0xc3f97f[_0x96ce('0x1e')]===_0x96ce('0x1f')&&typeof _0xc3f97f[_0x96ce('0x20')]==='undefined';var _0x4d238c=_0x1515ea[_0x96ce('0x21')];var _0x2e6234=_0x35b727?0x0:_0xc3f97f[_0x96ce('0x1e')];var _0x219a4b=_0x35b727?_0x1515ea[_0x96ce('0x21')]:_0xc3f97f[_0x96ce('0x1e')]+_0xc3f97f[_0x96ce('0x20')];var _0x3d8991;if(_0x219a4b>=_0x4d238c){_0x219a4b=_0x4d238c;_0x3d8991=0xc8;}else{_0x3d8991=0xce;}_0x329d7a[_0x96ce('0x1b')](_0x3d8991);return _0x329d7a[_0x96ce('0x22')]('Content-Range',_0x2e6234+'-'+_0x219a4b+'/'+_0x4d238c)[_0x96ce('0x1d')](_0x1515ea);}return null;};}function patchUpdates(_0x162d2d){return function(_0xdd16e6){try{jsonpatch[_0x96ce('0x23')](_0xdd16e6,_0x162d2d,!![]);}catch(_0x2c52f3){return BPromise[_0x96ce('0x24')](_0x2c52f3);}return _0xdd16e6[_0x96ce('0x25')]();};}function saveUpdates(_0x5014bb,_0x5c39a2){return function(_0x3a097f){if(_0x3a097f){return _0x3a097f[_0x96ce('0x26')](_0x5014bb)['then'](function(_0x4f320d){return _0x4f320d;});}return null;};}function removeEntity(_0x58196f,_0x495b9f){return function(_0x2acfe3){if(_0x2acfe3){return _0x2acfe3[_0x96ce('0x27')]()[_0x96ce('0x28')](function(){_0x58196f[_0x96ce('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c74e8,_0x439e43){return function(_0x2426fa){if(!_0x2426fa){_0x2c74e8['sendStatus'](0x194);}return _0x2426fa;};}function handleError(_0x45d90e,_0x4670f1){_0x4670f1=_0x4670f1||0x1f4;return function(_0x400b7b){logger[_0x96ce('0x29')](_0x400b7b[_0x96ce('0x2a')]);if(_0x400b7b['name']){delete _0x400b7b[_0x96ce('0x2b')];}_0x45d90e[_0x96ce('0x1b')](_0x4670f1)[_0x96ce('0x2c')](_0x400b7b);};}exports[_0x96ce('0x2d')]=function(_0x58e166,_0x4164b1){var _0xc2ec89={},_0x32cd87={},_0x5b89fb={'count':0x0,'rows':[]};var _0x408bf5=_[_0x96ce('0x2e')](db[_0x96ce('0x2f')][_0x96ce('0x30')],function(_0xb4eba9){return{'name':_0xb4eba9[_0x96ce('0x31')],'type':_0xb4eba9[_0x96ce('0x32')][_0x96ce('0x33')]};});_0x32cd87[_0x96ce('0x34')]=_['map'](_0x408bf5,_0x96ce('0x2b'));_0x32cd87[_0x96ce('0x35')]=_[_0x96ce('0x36')](_0x58e166[_0x96ce('0x35')]);_0x32cd87[_0x96ce('0x37')]=_[_0x96ce('0x38')](_0x32cd87[_0x96ce('0x34')],_0x32cd87['query']);_0xc2ec89[_0x96ce('0x39')]=_[_0x96ce('0x38')](_0x32cd87[_0x96ce('0x34')],qs[_0x96ce('0x3a')](_0x58e166[_0x96ce('0x35')][_0x96ce('0x3a')]));_0xc2ec89[_0x96ce('0x39')]=_0xc2ec89[_0x96ce('0x39')][_0x96ce('0x3b')]?_0xc2ec89[_0x96ce('0x39')]:_0x32cd87[_0x96ce('0x34')];if(!_0x58e166[_0x96ce('0x35')]['hasOwnProperty'](_0x96ce('0x3c'))){_0xc2ec89[_0x96ce('0x20')]=qs[_0x96ce('0x20')](_0x58e166['query']['limit']);_0xc2ec89[_0x96ce('0x1e')]=qs[_0x96ce('0x1e')](_0x58e166[_0x96ce('0x35')]['offset']);}_0xc2ec89[_0x96ce('0x3d')]=qs[_0x96ce('0x3e')](_0x58e166[_0x96ce('0x35')][_0x96ce('0x3e')]);_0xc2ec89[_0x96ce('0x3f')]=qs['filters'](_[_0x96ce('0x40')](_0x58e166[_0x96ce('0x35')],_0x32cd87[_0x96ce('0x37')]),_0x408bf5);if(_0x58e166[_0x96ce('0x35')]['filter']){_0xc2ec89[_0x96ce('0x3f')]=_[_0x96ce('0x41')](_0xc2ec89[_0x96ce('0x3f')],{'$or':_['map'](_0x408bf5,function(_0x171de1){if(_0x171de1[_0x96ce('0x32')]!=='VIRTUAL'){var _0x23572f={};_0x23572f[_0x171de1[_0x96ce('0x2b')]]={'$like':'%'+_0x58e166[_0x96ce('0x35')][_0x96ce('0x42')]+'%'};return _0x23572f;}})});}_0xc2ec89=_['merge']({},_0xc2ec89,_0x58e166['options']);var _0xc8b99e={'where':_0xc2ec89['where']};return db[_0x96ce('0x2f')][_0x96ce('0x21')](_0xc8b99e)['then'](function(_0x32af48){_0x5b89fb[_0x96ce('0x21')]=_0x32af48;if(_0x58e166['query'][_0x96ce('0x43')]){_0xc2ec89[_0x96ce('0x44')]=[{'all':!![]}];}return db[_0x96ce('0x2f')][_0x96ce('0x45')](_0xc2ec89);})['then'](function(_0xed3c3e){_0x5b89fb[_0x96ce('0x46')]=_0xed3c3e;return _0x5b89fb;})[_0x96ce('0x28')](respondWithFilteredResult(_0x4164b1,_0xc2ec89))[_0x96ce('0x47')](handleError(_0x4164b1,null));};exports[_0x96ce('0x48')]=function(_0x38ed74,_0x22c30c){var _0x3d57a9={'raw':![],'where':{'id':_0x38ed74['params']['id']}},_0x247d18={};_0x247d18[_0x96ce('0x34')]=_['keys'](db[_0x96ce('0x2f')][_0x96ce('0x30')]);_0x247d18[_0x96ce('0x35')]=_[_0x96ce('0x36')](_0x38ed74['query']);_0x247d18['filters']=_[_0x96ce('0x38')](_0x247d18[_0x96ce('0x34')],_0x247d18[_0x96ce('0x35')]);_0x3d57a9[_0x96ce('0x39')]=_['intersection'](_0x247d18['model'],qs[_0x96ce('0x3a')](_0x38ed74[_0x96ce('0x35')][_0x96ce('0x3a')]));_0x3d57a9[_0x96ce('0x39')]=_0x3d57a9[_0x96ce('0x39')][_0x96ce('0x3b')]?_0x3d57a9[_0x96ce('0x39')]:_0x247d18['model'];if(_0x38ed74[_0x96ce('0x35')]['includeAll']){_0x3d57a9[_0x96ce('0x44')]=[{'all':!![]}];}_0x3d57a9=_['merge']({},_0x3d57a9,_0x38ed74[_0x96ce('0x49')]);return db[_0x96ce('0x2f')]['find'](_0x3d57a9)[_0x96ce('0x28')](handleEntityNotFound(_0x22c30c,null))['then'](respondWithResult(_0x22c30c,null))['catch'](handleError(_0x22c30c,null));};exports[_0x96ce('0x4a')]=function(_0x33fd96,_0x164138){return db[_0x96ce('0x2f')][_0x96ce('0x4a')](_0x33fd96[_0x96ce('0x4b')],{})['then'](respondWithResult(_0x164138,0xc9))[_0x96ce('0x47')](handleError(_0x164138,null));};exports[_0x96ce('0x26')]=function(_0x2021aa,_0x49c300){if(_0x2021aa['body']['id']){delete _0x2021aa[_0x96ce('0x4b')]['id'];}return db[_0x96ce('0x2f')]['find']({'where':{'id':_0x2021aa[_0x96ce('0x4c')]['id']}})[_0x96ce('0x28')](handleEntityNotFound(_0x49c300,null))['then'](saveUpdates(_0x2021aa[_0x96ce('0x4b')],null))[_0x96ce('0x28')](respondWithResult(_0x49c300,null))[_0x96ce('0x47')](handleError(_0x49c300,null));};exports['destroy']=function(_0x2b8dc4,_0x59807a){return db[_0x96ce('0x2f')][_0x96ce('0x4d')]({'where':{'id':_0x2b8dc4['params']['id']}})[_0x96ce('0x28')](handleEntityNotFound(_0x59807a,null))['then'](removeEntity(_0x59807a,null))[_0x96ce('0x47')](handleError(_0x59807a,null));};exports[_0x96ce('0x4e')]=function(_0x151dd8,_0x9a206c,_0x1c9fd1){var _0x114f22={};var _0xea666d={};var _0x4f9243;var _0x194d06;return db['FreshdeskAccount']['findOne']({'where':{'id':_0x151dd8[_0x96ce('0x4c')]['id']}})['then'](handleEntityNotFound(_0x9a206c,null))[_0x96ce('0x28')](function(_0x27a7a8){if(_0x27a7a8){_0x4f9243=_0x27a7a8;_0xea666d[_0x96ce('0x34')]=_['keys'](db[_0x96ce('0x4f')]['rawAttributes']);_0xea666d[_0x96ce('0x35')]=_[_0x96ce('0x36')](_0x151dd8[_0x96ce('0x35')]);_0xea666d[_0x96ce('0x37')]=_[_0x96ce('0x38')](_0xea666d[_0x96ce('0x34')],_0xea666d[_0x96ce('0x35')]);_0x114f22[_0x96ce('0x39')]=_[_0x96ce('0x38')](_0xea666d['model'],qs[_0x96ce('0x3a')](_0x151dd8[_0x96ce('0x35')][_0x96ce('0x3a')]));_0x114f22[_0x96ce('0x39')]=_0x114f22['attributes']['length']?_0x114f22[_0x96ce('0x39')]:_0xea666d[_0x96ce('0x34')];_0x114f22[_0x96ce('0x3d')]=qs[_0x96ce('0x3e')](_0x151dd8[_0x96ce('0x35')]['sort']);_0x114f22[_0x96ce('0x3f')]=qs[_0x96ce('0x37')](_[_0x96ce('0x40')](_0x151dd8[_0x96ce('0x35')],_0xea666d[_0x96ce('0x37')]));if(_0x151dd8[_0x96ce('0x35')][_0x96ce('0x42')]){_0x114f22[_0x96ce('0x3f')]=_[_0x96ce('0x41')](_0x114f22[_0x96ce('0x3f')],{'$or':_[_0x96ce('0x2e')](_0x114f22[_0x96ce('0x39')],function(_0x5195ab){var _0x3458b8={};_0x3458b8[_0x5195ab]={'$like':'%'+_0x151dd8[_0x96ce('0x35')][_0x96ce('0x42')]+'%'};return _0x3458b8;})});}_0x114f22=_[_0x96ce('0x41')]({},_0x114f22,_0x151dd8[_0x96ce('0x49')]);return _0x4f9243[_0x96ce('0x4e')](_0x114f22);}})[_0x96ce('0x28')](function(_0x4cb0eb){if(_0x4cb0eb){_0x194d06=_0x4cb0eb[_0x96ce('0x3b')];if(!_0x151dd8[_0x96ce('0x35')][_0x96ce('0x50')](_0x96ce('0x3c'))){_0x114f22[_0x96ce('0x20')]=qs[_0x96ce('0x20')](_0x151dd8[_0x96ce('0x35')][_0x96ce('0x20')]);_0x114f22[_0x96ce('0x1e')]=qs['offset'](_0x151dd8[_0x96ce('0x35')][_0x96ce('0x1e')]);}return _0x4f9243[_0x96ce('0x4e')](_0x114f22);}})[_0x96ce('0x28')](function(_0x2271cd){if(_0x2271cd){return _0x2271cd?{'count':_0x194d06,'rows':_0x2271cd}:null;}})['then'](respondWithResult(_0x9a206c,null))[_0x96ce('0x47')](handleError(_0x9a206c,null));};exports[_0x96ce('0x51')]=function(_0x30cbc0,_0x1e2ead,_0xa042ca){if(_0x30cbc0[_0x96ce('0x4b')]['id']){delete _0x30cbc0['body']['id'];}return db[_0x96ce('0x2f')][_0x96ce('0x52')]({'where':{'id':_0x30cbc0[_0x96ce('0x4c')]['id']}})[_0x96ce('0x28')](handleEntityNotFound(_0x1e2ead,null))[_0x96ce('0x28')](function(_0x4187d1){if(_0x4187d1){_0x30cbc0[_0x96ce('0x4b')]['AccountId']=_0x4187d1['id'];_0x30cbc0[_0x96ce('0x4b')][_0x96ce('0x53')]=integrations['getSubjects'](_0x30cbc0[_0x96ce('0x4b')][_0x96ce('0x54')],_0x30cbc0['body'][_0x96ce('0x32')]);_0x30cbc0[_0x96ce('0x4b')][_0x96ce('0x55')]=integrations['getDescriptions'](_0x30cbc0['body'][_0x96ce('0x54')],_0x30cbc0['body'][_0x96ce('0x32')]);return db[_0x96ce('0x4f')][_0x96ce('0x4a')](_0x30cbc0[_0x96ce('0x4b')],{'include':[{'model':db[_0x96ce('0x56')],'as':_0x96ce('0x53')},{'model':db[_0x96ce('0x56')],'as':_0x96ce('0x55')}]});}return null;})[_0x96ce('0x28')](respondWithResult(_0x1e2ead,null))['catch'](handleError(_0x1e2ead,null));};exports[_0x96ce('0x57')]=function(_0x2d4222,_0x3f78ec,_0x475c13){var _0x512594='';return db[_0x96ce('0x2f')][_0x96ce('0x52')]({'where':{'id':_0x2d4222[_0x96ce('0x4c')]['id']},'attributes':['id',_0x96ce('0x58'),_0x96ce('0x59')]})[_0x96ce('0x28')](handleEntityNotFound(_0x3f78ec,null))['then'](function(_0x150701){if(_0x150701){_0x512594=_0x150701['remoteUri'];var _0x368d49=_0x512594[_0x96ce('0x5a')](-0x1);if(_0x368d49==='/'){_0x512594=_0x512594['substring'](0x0,_0x512594[_0x96ce('0x5b')](_0x368d49));}return rp({'method':_0x96ce('0x5c'),'uri':util[_0x96ce('0x5d')](_0x96ce('0x5e'),_0x512594,_0x96ce('0x5f')),'headers':{'Authorization':util[_0x96ce('0x5d')](_0x96ce('0x60'),new Buffer(util[_0x96ce('0x5d')](_0x96ce('0x61'),_0x150701[_0x96ce('0x59')]))[_0x96ce('0x62')](_0x96ce('0x63')))},'json':!![]});}})['then'](function(_0x4422ff){if(_0x4422ff){var _0xa46830=[_0x96ce('0x64'),_0x96ce('0x65'),'agent',_0x96ce('0x66'),_0x96ce('0x1b'),_0x96ce('0x67'),_0x96ce('0x68'),_0x96ce('0x69'),_0x96ce('0x6a'),'group',_0x96ce('0x6b')];_[_0x96ce('0x6c')](_0x4422ff,function(_0xa1c507){return _0xa46830[_0x96ce('0x6d')](_0xa1c507[_0x96ce('0x2b')])||!_0xa1c507[_0x96ce('0x6e')]&&_0xa1c507[_0x96ce('0x32')]!==_0x96ce('0x6f')&&_0xa1c507[_0x96ce('0x32')]!==_0x96ce('0x70');});return{'count':_0x4422ff[_0x96ce('0x3b')],'rows':_[_0x96ce('0x2e')](_0x4422ff,function(_0x488362){return{'id':_0x488362[_0x96ce('0x2b')],'name':_0x488362[_0x96ce('0x71')],'custom':!_0x488362[_0x96ce('0x6e')],'options':_0x488362['choices']?_[_0x96ce('0x2e')](_0x488362[_0x96ce('0x72')],function(_0x5ecb14){return{'name':_[_0x96ce('0x73')](_0x5ecb14),'value':_0x5ecb14};}):[]};})};}})[_0x96ce('0x28')](respondWithResult(_0x3f78ec,null))[_0x96ce('0x47')](function(_0x3e9b4e){var _0x552468=_0x2d4222['query'][_0x96ce('0x74')]?0x1f4:_0x3e9b4e['statusCode']||0x1f4;logger[_0x96ce('0x29')](_0x96ce('0x75'),'getFields',_0x552468,JSON[_0x96ce('0x76')](_0x3e9b4e));delete _0x3e9b4e[_0x96ce('0x2b')];if(_0x552468===0x191){_0x552468=0x190;}_0x3f78ec['status'](_0x552468)[_0x96ce('0x2c')](_0x2d4222['query'][_0x96ce('0x74')]?{'message':_0x96ce('0x77'),'statusCode':_0x3e9b4e[_0x96ce('0x78')]}:_0x3e9b4e);});};
\ No newline at end of file
+var _0xfd6f=['keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','then','rows','catch','show','params','length','find','create','body','getConfigurations','FreshdeskConfiguration','order','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','toString','requester','subject','description','priority','group','source','ticket_type','company','includes','custom_text','custom_dropdown','label','default','choices','capitalize','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','undefined','limit','count','offset','json','apply','reject','update','end','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','model','query'];(function(_0x2c261e,_0x46c697){var _0x1525d4=function(_0x67ba21){while(--_0x67ba21){_0x2c261e['push'](_0x2c261e['shift']());}};_0x1525d4(++_0x46c697);}(_0xfd6f,0x19d));var _0xffd6=function(_0x509a23,_0x406dfe){_0x509a23=_0x509a23-0x0;var _0x5de1cf=_0xfd6f[_0x509a23];return _0x5de1cf;};'use strict';var emlformat=require(_0xffd6('0x0'));var rimraf=require(_0xffd6('0x1'));var zipdir=require(_0xffd6('0x2'));var jsonpatch=require(_0xffd6('0x3'));var rp=require(_0xffd6('0x4'));var moment=require('moment');var BPromise=require(_0xffd6('0x5'));var Mustache=require(_0xffd6('0x6'));var util=require(_0xffd6('0x7'));var path=require(_0xffd6('0x8'));var sox=require('sox');var csv=require(_0xffd6('0x9'));var ejs=require(_0xffd6('0xa'));var fs=require('fs');var fs_extra=require(_0xffd6('0xb'));var _=require(_0xffd6('0xc'));var squel=require('squel');var crypto=require(_0xffd6('0xd'));var jsforce=require(_0xffd6('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xffd6('0xf'));var Papa=require(_0xffd6('0x10'));var Redis=require(_0xffd6('0x11'));var authService=require(_0xffd6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xffd6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xffd6('0x14'));var utils=require(_0xffd6('0x15'));var config=require(_0xffd6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xffd6('0x17'))['db'];var integrations=require(_0xffd6('0x18'));function respondWithStatusCode(_0x59d2d8,_0x12cbe9){_0x12cbe9=_0x12cbe9||0xcc;return function(_0x1bef90){if(_0x1bef90){return _0x59d2d8[_0xffd6('0x19')](_0x12cbe9);}return _0x59d2d8[_0xffd6('0x1a')](_0x12cbe9)['end']();};}function respondWithResult(_0x5f4765,_0x26ef4){_0x26ef4=_0x26ef4||0xc8;return function(_0x345c44){if(_0x345c44){return _0x5f4765[_0xffd6('0x1a')](_0x26ef4)['json'](_0x345c44);}};}function respondWithFilteredResult(_0x17114f,_0x131661){return function(_0x57e34e){if(_0x57e34e){var _0x39c0a6=typeof _0x131661['offset']===_0xffd6('0x1b')&&typeof _0x131661[_0xffd6('0x1c')]===_0xffd6('0x1b');var _0xb4cfe2=_0x57e34e[_0xffd6('0x1d')];var _0x57af76=_0x39c0a6?0x0:_0x131661[_0xffd6('0x1e')];var _0x39938d=_0x39c0a6?_0x57e34e[_0xffd6('0x1d')]:_0x131661[_0xffd6('0x1e')]+_0x131661['limit'];var _0x4e0446;if(_0x39938d>=_0xb4cfe2){_0x39938d=_0xb4cfe2;_0x4e0446=0xc8;}else{_0x4e0446=0xce;}_0x17114f[_0xffd6('0x1a')](_0x4e0446);return _0x17114f['set']('Content-Range',_0x57af76+'-'+_0x39938d+'/'+_0xb4cfe2)[_0xffd6('0x1f')](_0x57e34e);}return null;};}function patchUpdates(_0x1a7102){return function(_0x3240b1){try{jsonpatch[_0xffd6('0x20')](_0x3240b1,_0x1a7102,!![]);}catch(_0x191642){return BPromise[_0xffd6('0x21')](_0x191642);}return _0x3240b1['save']();};}function saveUpdates(_0x44e5f5,_0x26daf2){return function(_0x531b45){if(_0x531b45){return _0x531b45[_0xffd6('0x22')](_0x44e5f5)['then'](function(_0x270704){return _0x270704;});}return null;};}function removeEntity(_0x207f18,_0x18fd0f){return function(_0x5e0e4c){if(_0x5e0e4c){return _0x5e0e4c['destroy']()['then'](function(){_0x207f18[_0xffd6('0x1a')](0xcc)[_0xffd6('0x23')]();});}};}function handleEntityNotFound(_0x17218b,_0x55c752){return function(_0x423bb8){if(!_0x423bb8){_0x17218b[_0xffd6('0x19')](0x194);}return _0x423bb8;};}function handleError(_0x12352c,_0xdec862){_0xdec862=_0xdec862||0x1f4;return function(_0x3789f8){logger['error'](_0x3789f8[_0xffd6('0x24')]);if(_0x3789f8[_0xffd6('0x25')]){delete _0x3789f8[_0xffd6('0x25')];}_0x12352c[_0xffd6('0x1a')](_0xdec862)[_0xffd6('0x26')](_0x3789f8);};}exports[_0xffd6('0x27')]=function(_0x2f3645,_0x902b39){var _0x23bd05={},_0x4440f8={},_0x44276a={'count':0x0,'rows':[]};var _0x4d0901=_[_0xffd6('0x28')](db[_0xffd6('0x29')][_0xffd6('0x2a')],function(_0x35328a){return{'name':_0x35328a[_0xffd6('0x2b')],'type':_0x35328a[_0xffd6('0x2c')]['key']};});_0x4440f8[_0xffd6('0x2d')]=_[_0xffd6('0x28')](_0x4d0901,_0xffd6('0x25'));_0x4440f8[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x2f3645[_0xffd6('0x2e')]);_0x4440f8[_0xffd6('0x30')]=_[_0xffd6('0x31')](_0x4440f8[_0xffd6('0x2d')],_0x4440f8[_0xffd6('0x2e')]);_0x23bd05[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x4440f8['model'],qs[_0xffd6('0x33')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x23bd05['attributes']=_0x23bd05['attributes']['length']?_0x23bd05[_0xffd6('0x32')]:_0x4440f8[_0xffd6('0x2d')];if(!_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x34')](_0xffd6('0x35'))){_0x23bd05[_0xffd6('0x1c')]=qs[_0xffd6('0x1c')](_0x2f3645['query'][_0xffd6('0x1c')]);_0x23bd05['offset']=qs[_0xffd6('0x1e')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x1e')]);}_0x23bd05['order']=qs[_0xffd6('0x36')](_0x2f3645[_0xffd6('0x2e')]['sort']);_0x23bd05[_0xffd6('0x37')]=qs['filters'](_[_0xffd6('0x38')](_0x2f3645[_0xffd6('0x2e')],_0x4440f8[_0xffd6('0x30')]),_0x4d0901);if(_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x23bd05[_0xffd6('0x37')]=_[_0xffd6('0x3a')](_0x23bd05[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x4d0901,function(_0x4b91fa){if(_0x4b91fa[_0xffd6('0x2c')]!==_0xffd6('0x3b')){var _0x27d0c5={};_0x27d0c5[_0x4b91fa[_0xffd6('0x25')]]={'$like':'%'+_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x27d0c5;}})});}_0x23bd05=_[_0xffd6('0x3a')]({},_0x23bd05,_0x2f3645[_0xffd6('0x3c')]);var _0x2abf19={'where':_0x23bd05[_0xffd6('0x37')]};return db[_0xffd6('0x29')]['count'](_0x2abf19)['then'](function(_0x1bdbc0){_0x44276a[_0xffd6('0x1d')]=_0x1bdbc0;if(_0x2f3645['query'][_0xffd6('0x3d')]){_0x23bd05[_0xffd6('0x3e')]=[{'all':!![]}];}return db[_0xffd6('0x29')][_0xffd6('0x3f')](_0x23bd05);})[_0xffd6('0x40')](function(_0x359998){_0x44276a[_0xffd6('0x41')]=_0x359998;return _0x44276a;})[_0xffd6('0x40')](respondWithFilteredResult(_0x902b39,_0x23bd05))[_0xffd6('0x42')](handleError(_0x902b39,null));};exports[_0xffd6('0x43')]=function(_0x297d05,_0x3791be){var _0x1b680a={'raw':![],'where':{'id':_0x297d05[_0xffd6('0x44')]['id']}},_0x3b5d60={};_0x3b5d60[_0xffd6('0x2d')]=_['keys'](db['FreshdeskAccount']['rawAttributes']);_0x3b5d60[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x297d05[_0xffd6('0x2e')]);_0x3b5d60['filters']=_['intersection'](_0x3b5d60['model'],_0x3b5d60['query']);_0x1b680a[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3b5d60[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x297d05[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x1b680a[_0xffd6('0x32')]=_0x1b680a[_0xffd6('0x32')][_0xffd6('0x45')]?_0x1b680a[_0xffd6('0x32')]:_0x3b5d60[_0xffd6('0x2d')];if(_0x297d05[_0xffd6('0x2e')][_0xffd6('0x3d')]){_0x1b680a[_0xffd6('0x3e')]=[{'all':!![]}];}_0x1b680a=_['merge']({},_0x1b680a,_0x297d05[_0xffd6('0x3c')]);return db[_0xffd6('0x29')][_0xffd6('0x46')](_0x1b680a)[_0xffd6('0x40')](handleEntityNotFound(_0x3791be,null))[_0xffd6('0x40')](respondWithResult(_0x3791be,null))['catch'](handleError(_0x3791be,null));};exports[_0xffd6('0x47')]=function(_0x2d0a51,_0x5d81b5){return db[_0xffd6('0x29')][_0xffd6('0x47')](_0x2d0a51[_0xffd6('0x48')],{})[_0xffd6('0x40')](respondWithResult(_0x5d81b5,0xc9))[_0xffd6('0x42')](handleError(_0x5d81b5,null));};exports[_0xffd6('0x22')]=function(_0x17e609,_0x1930f9){if(_0x17e609[_0xffd6('0x48')]['id']){delete _0x17e609['body']['id'];}return db[_0xffd6('0x29')][_0xffd6('0x46')]({'where':{'id':_0x17e609['params']['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x1930f9,null))[_0xffd6('0x40')](saveUpdates(_0x17e609[_0xffd6('0x48')],null))['then'](respondWithResult(_0x1930f9,null))[_0xffd6('0x42')](handleError(_0x1930f9,null));};exports['destroy']=function(_0x48366a,_0x5ebed3){return db[_0xffd6('0x29')]['find']({'where':{'id':_0x48366a[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x5ebed3,null))[_0xffd6('0x40')](removeEntity(_0x5ebed3,null))['catch'](handleError(_0x5ebed3,null));};exports[_0xffd6('0x49')]=function(_0x50aa80,_0x124912,_0x2b377e){var _0x295646={};var _0x3c1b27={};var _0x7dc3ae;var _0x2a27d9;return db[_0xffd6('0x29')]['findOne']({'where':{'id':_0x50aa80[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x124912,null))[_0xffd6('0x40')](function(_0xa788ab){if(_0xa788ab){_0x7dc3ae=_0xa788ab;_0x3c1b27[_0xffd6('0x2d')]=_[_0xffd6('0x2f')](db[_0xffd6('0x4a')]['rawAttributes']);_0x3c1b27[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x50aa80[_0xffd6('0x2e')]);_0x3c1b27[_0xffd6('0x30')]=_['intersection'](_0x3c1b27[_0xffd6('0x2d')],_0x3c1b27[_0xffd6('0x2e')]);_0x295646[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3c1b27[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x295646[_0xffd6('0x32')]=_0x295646['attributes'][_0xffd6('0x45')]?_0x295646[_0xffd6('0x32')]:_0x3c1b27[_0xffd6('0x2d')];_0x295646[_0xffd6('0x4b')]=qs[_0xffd6('0x36')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x36')]);_0x295646['where']=qs[_0xffd6('0x30')](_[_0xffd6('0x38')](_0x50aa80[_0xffd6('0x2e')],_0x3c1b27[_0xffd6('0x30')]));if(_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x295646['where']=_[_0xffd6('0x3a')](_0x295646[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x295646[_0xffd6('0x32')],function(_0x28f1df){var _0x12aff9={};_0x12aff9[_0x28f1df]={'$like':'%'+_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x12aff9;})});}_0x295646=_[_0xffd6('0x3a')]({},_0x295646,_0x50aa80[_0xffd6('0x3c')]);return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})['then'](function(_0x461771){if(_0x461771){_0x2a27d9=_0x461771['length'];if(!_0x50aa80['query'][_0xffd6('0x34')]('nolimit')){_0x295646[_0xffd6('0x1c')]=qs['limit'](_0x50aa80[_0xffd6('0x2e')]['limit']);_0x295646[_0xffd6('0x1e')]=qs['offset'](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x1e')]);}return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})[_0xffd6('0x40')](function(_0x4f0db0){if(_0x4f0db0){return _0x4f0db0?{'count':_0x2a27d9,'rows':_0x4f0db0}:null;}})[_0xffd6('0x40')](respondWithResult(_0x124912,null))[_0xffd6('0x42')](handleError(_0x124912,null));};exports['addConfiguration']=function(_0x438264,_0x1c324c,_0x25b1a2){if(_0x438264['body']['id']){delete _0x438264['body']['id'];}return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x438264['params']['id']}})['then'](handleEntityNotFound(_0x1c324c,null))[_0xffd6('0x40')](function(_0x8d5a9){if(_0x8d5a9){_0x438264[_0xffd6('0x48')][_0xffd6('0x4d')]=_0x8d5a9['id'];_0x438264['body'][_0xffd6('0x4e')]=integrations[_0xffd6('0x4f')](_0x438264['body'][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);_0x438264[_0xffd6('0x48')][_0xffd6('0x51')]=integrations[_0xffd6('0x52')](_0x438264[_0xffd6('0x48')][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);return db[_0xffd6('0x4a')]['create'](_0x438264[_0xffd6('0x48')],{'include':[{'model':db[_0xffd6('0x53')],'as':'Subjects'},{'model':db[_0xffd6('0x53')],'as':_0xffd6('0x51')}]});}return null;})[_0xffd6('0x40')](respondWithResult(_0x1c324c,null))[_0xffd6('0x42')](handleError(_0x1c324c,null));};exports[_0xffd6('0x54')]=function(_0x3e9b21,_0x8b8b47,_0x4c115e){var _0x4bf7a1='';return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x3e9b21[_0xffd6('0x44')]['id']},'attributes':['id',_0xffd6('0x55'),_0xffd6('0x56')]})[_0xffd6('0x40')](handleEntityNotFound(_0x8b8b47,null))[_0xffd6('0x40')](function(_0x431a6e){if(_0x431a6e){_0x4bf7a1=_0x431a6e[_0xffd6('0x55')];var _0x9bd712=_0x4bf7a1[_0xffd6('0x57')](-0x1);if(_0x9bd712==='/'){_0x4bf7a1=_0x4bf7a1[_0xffd6('0x58')](0x0,_0x4bf7a1[_0xffd6('0x59')](_0x9bd712));}return rp({'method':_0xffd6('0x5a'),'uri':util[_0xffd6('0x5b')](_0xffd6('0x5c'),_0x4bf7a1,_0xffd6('0x5d')),'headers':{'Authorization':util[_0xffd6('0x5b')](_0xffd6('0x5e'),new Buffer(util[_0xffd6('0x5b')]('%s:X',_0x431a6e[_0xffd6('0x56')]))[_0xffd6('0x5f')]('base64'))},'json':!![]});}})[_0xffd6('0x40')](function(_0x2c0592){if(_0x2c0592){var _0x5c9382=[_0xffd6('0x60'),_0xffd6('0x61'),'agent',_0xffd6('0x62'),'status',_0xffd6('0x63'),_0xffd6('0x64'),_0xffd6('0x65'),_0xffd6('0x66'),_0xffd6('0x64'),_0xffd6('0x67')];_['remove'](_0x2c0592,function(_0x23e630){return _0x5c9382[_0xffd6('0x68')](_0x23e630[_0xffd6('0x25')])||!_0x23e630['default']&&_0x23e630['type']!==_0xffd6('0x69')&&_0x23e630[_0xffd6('0x2c')]!==_0xffd6('0x6a');});return{'count':_0x2c0592[_0xffd6('0x45')],'rows':_['map'](_0x2c0592,function(_0x278cbf){return{'id':_0x278cbf[_0xffd6('0x25')],'name':_0x278cbf[_0xffd6('0x6b')],'custom':!_0x278cbf[_0xffd6('0x6c')],'options':_0x278cbf[_0xffd6('0x6d')]?_[_0xffd6('0x28')](_0x278cbf[_0xffd6('0x6d')],function(_0xbc3d41){return{'name':_[_0xffd6('0x6e')](_0xbc3d41),'value':_0xbc3d41};}):[]};})};}})[_0xffd6('0x40')](respondWithResult(_0x8b8b47,null))[_0xffd6('0x42')](function(_0x5b1ade){var _0x114f90=_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?0x1f4:_0x5b1ade[_0xffd6('0x70')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xffd6('0x54'),_0x114f90,JSON[_0xffd6('0x71')](_0x5b1ade));delete _0x5b1ade['name'];if(_0x114f90===0x191){_0x114f90=0x190;}_0x8b8b47[_0xffd6('0x1a')](_0x114f90)[_0xffd6('0x26')](_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?{'message':_0xffd6('0x72'),'statusCode':_0x5b1ade[_0xffd6('0x70')]}:_0x5b1ade);});};
\ No newline at end of file
index 1dd8626..819e096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df8=['../../components/integrations/configuration','exports','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0x2a5f58,_0x718b86){var _0x1ef4aa=function(_0x4aad4f){while(--_0x4aad4f){_0x2a5f58['push'](_0x2a5f58['shift']());}};_0x1ef4aa(++_0x718b86);}(_0x5df8,0x1f2));var _0x85df=function(_0x3a135e,_0x3432c2){_0x3a135e=_0x3a135e-0x0;var _0x2f599b=_0x5df8[_0x3a135e];return _0x2f599b;};'use strict';var _=require(_0x85df('0x0'));var util=require(_0x85df('0x1'));var logger=require(_0x85df('0x2'))(_0x85df('0x3'));var moment=require('moment');var BPromise=require(_0x85df('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85df('0x5'));var rimraf=require(_0x85df('0x6'));var config=require(_0x85df('0x7'));var attributes=require(_0x85df('0x8'));var integrations=require(_0x85df('0x9'));module[_0x85df('0xa')]=function(_0xf6d80b,_0x414abb){return _0xf6d80b['define'](_0x85df('0xb'),attributes,{'tableName':_0x85df('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x838b=['rimraf','../../config/environment','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x27dfb5,_0x5d4bfd){var _0x3ec841=function(_0x1f8682){while(--_0x1f8682){_0x27dfb5['push'](_0x27dfb5['shift']());}};_0x3ec841(++_0x5d4bfd);}(_0x838b,0x1e7));var _0xb838=function(_0x2b6550,_0x3b4eaf){_0x2b6550=_0x2b6550-0x0;var _0x313f95=_0x838b[_0x2b6550];return _0x313f95;};'use strict';var _=require(_0xb838('0x0'));var util=require(_0xb838('0x1'));var logger=require(_0xb838('0x2'))(_0xb838('0x3'));var moment=require(_0xb838('0x4'));var BPromise=require(_0xb838('0x5'));var rp=require(_0xb838('0x6'));var fs=require('fs');var path=require(_0xb838('0x7'));var rimraf=require(_0xb838('0x8'));var config=require(_0xb838('0x9'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xb838('0xa'));module[_0xb838('0xb')]=function(_0x3264cb,_0x1ddb5c){return _0x3264cb[_0xb838('0xc')](_0xb838('0xd'),attributes,{'tableName':_0xb838('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc2f3e7..18119c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c97=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FreshdeskAccount','options','attributes','limit','include','model','map','GetFreshdeskAccount','ShowFreshdeskAccount','find','raw','where','util','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0c97,0x64));var _0x70c9=function(_0x4eb6ec,_0x7f2520){_0x4eb6ec=_0x4eb6ec-0x0;var _0x58881b=_0x0c97[_0x4eb6ec];return _0x58881b;};'use strict';var _=require('lodash');var util=require(_0x70c9('0x0'));var moment=require('moment');var BPromise=require(_0x70c9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x70c9('0x2'));var db=require(_0x70c9('0x3'))['db'];var utils=require(_0x70c9('0x4'));var logger=require(_0x70c9('0x5'))(_0x70c9('0x6'));var config=require(_0x70c9('0x7'));var jayson=require(_0x70c9('0x8'));var client=jayson[_0x70c9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x344715,_0x309e95,_0x40ebb4){return new BPromise(function(_0x37c3ee,_0x328a3a){return client[_0x70c9('0xa')](_0x344715,_0x40ebb4)[_0x70c9('0xb')](function(_0x1a484a){logger[_0x70c9('0xc')](_0x70c9('0xd'),_0x309e95,'request\x20sent');logger[_0x70c9('0xe')](_0x70c9('0xf'),_0x309e95,_0x70c9('0x10'),JSON[_0x70c9('0x11')](_0x1a484a));if(_0x1a484a[_0x70c9('0x12')]){if(_0x1a484a[_0x70c9('0x12')][_0x70c9('0x13')]===0x1f4){logger[_0x70c9('0x12')](_0x70c9('0xd'),_0x309e95,_0x1a484a[_0x70c9('0x12')][_0x70c9('0x14')]);return _0x328a3a(_0x1a484a[_0x70c9('0x12')][_0x70c9('0x14')]);}logger[_0x70c9('0x12')]('FreshdeskAccount,\x20%s,\x20%s',_0x309e95,_0x1a484a[_0x70c9('0x12')][_0x70c9('0x14')]);return _0x37c3ee(_0x1a484a[_0x70c9('0x12')][_0x70c9('0x14')]);}else{logger[_0x70c9('0xc')](_0x70c9('0xd'),_0x309e95,'request\x20sent');_0x37c3ee(_0x1a484a[_0x70c9('0x15')][_0x70c9('0x14')]);}})[_0x70c9('0x16')](function(_0x8020bf){logger[_0x70c9('0x12')](_0x70c9('0xd'),_0x309e95,_0x8020bf);_0x328a3a(_0x8020bf);});});}exports['GetFreshdeskAccount']=function(_0x4637cc){var _0x52fd3b=this;return new Promise(function(_0x4c491e,_0x3bccdc){return db[_0x70c9('0x17')]['findAll']({'raw':_0x4637cc['options']?_0x4637cc['options']['raw']===undefined?!![]:![]:!![],'where':_0x4637cc[_0x70c9('0x18')]?_0x4637cc[_0x70c9('0x18')]['where']||null:null,'attributes':_0x4637cc['options']?_0x4637cc[_0x70c9('0x18')][_0x70c9('0x19')]||null:null,'limit':_0x4637cc['options']?_0x4637cc[_0x70c9('0x18')][_0x70c9('0x1a')]||null:null,'include':_0x4637cc['options']?_0x4637cc[_0x70c9('0x18')][_0x70c9('0x1b')]?_['map'](_0x4637cc[_0x70c9('0x18')][_0x70c9('0x1b')],function(_0x1ee443){return{'model':db[_0x1ee443[_0x70c9('0x1c')]],'as':_0x1ee443['as'],'attributes':_0x1ee443[_0x70c9('0x19')],'include':_0x1ee443[_0x70c9('0x1b')]?_[_0x70c9('0x1d')](_0x1ee443[_0x70c9('0x1b')],function(_0x16d97c){return{'model':db[_0x16d97c[_0x70c9('0x1c')]],'as':_0x16d97c['as'],'attributes':_0x16d97c[_0x70c9('0x19')],'include':_0x16d97c['include']?_[_0x70c9('0x1d')](_0x16d97c[_0x70c9('0x1b')],function(_0x174219){return{'model':db[_0x174219[_0x70c9('0x1c')]],'as':_0x174219['as'],'attributes':_0x174219['attributes']};}):[]};}):[]};}):[]:[]})[_0x70c9('0xb')](function(_0x5e3a28){logger[_0x70c9('0xc')]('GetFreshdeskAccount',_0x4637cc);logger['debug'](_0x70c9('0x1e'),_0x4637cc,JSON[_0x70c9('0x11')](_0x5e3a28));_0x4c491e(_0x5e3a28);})[_0x70c9('0x16')](function(_0x5bb2cf){logger[_0x70c9('0x12')](_0x70c9('0x1e'),_0x5bb2cf[_0x70c9('0x14')],_0x4637cc);_0x3bccdc(_0x52fd3b[_0x70c9('0x12')](0x1f4,_0x5bb2cf[_0x70c9('0x14')]));});});};exports[_0x70c9('0x1f')]=function(_0x120fcc){var _0x102625=this;return new Promise(function(_0x119489,_0x4cfe5e){return db[_0x70c9('0x17')][_0x70c9('0x20')]({'raw':_0x120fcc[_0x70c9('0x18')]?_0x120fcc['options'][_0x70c9('0x21')]===undefined?!![]:![]:!![],'where':_0x120fcc[_0x70c9('0x18')]?_0x120fcc['options'][_0x70c9('0x22')]||null:null,'attributes':_0x120fcc['options']?_0x120fcc[_0x70c9('0x18')][_0x70c9('0x19')]||null:null,'include':_0x120fcc['options']?_0x120fcc['options'][_0x70c9('0x1b')]?_['map'](_0x120fcc['options']['include'],function(_0x3e1185){return{'model':db[_0x3e1185[_0x70c9('0x1c')]],'as':_0x3e1185['as'],'attributes':_0x3e1185['attributes'],'include':_0x3e1185[_0x70c9('0x1b')]?_[_0x70c9('0x1d')](_0x3e1185['include'],function(_0x286e83){return{'model':db[_0x286e83[_0x70c9('0x1c')]],'as':_0x286e83['as'],'attributes':_0x286e83[_0x70c9('0x19')],'include':_0x286e83[_0x70c9('0x1b')]?_[_0x70c9('0x1d')](_0x286e83[_0x70c9('0x1b')],function(_0x1c07bd){return{'model':db[_0x1c07bd[_0x70c9('0x1c')]],'as':_0x1c07bd['as'],'attributes':_0x1c07bd[_0x70c9('0x19')]};}):[]};}):[]};}):[]:[]})[_0x70c9('0xb')](function(_0x3b5f50){logger[_0x70c9('0xc')](_0x70c9('0x1f'),_0x120fcc);logger[_0x70c9('0xe')](_0x70c9('0x1f'),_0x120fcc,JSON[_0x70c9('0x11')](_0x3b5f50));_0x119489(_0x3b5f50);})[_0x70c9('0x16')](function(_0x540611){logger['error']('ShowFreshdeskAccount',_0x540611[_0x70c9('0x14')],_0x120fcc);_0x4cfe5e(_0x102625[_0x70c9('0x12')](0x1f4,_0x540611[_0x70c9('0x14')]));});});};
\ No newline at end of file
+var _0x33dc=['raw','options','attributes','limit','include','map','model','ShowFreshdeskAccount','where','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll'];(function(_0x144c37,_0x587fbe){var _0xe104bd=function(_0x1410b6){while(--_0x1410b6){_0x144c37['push'](_0x144c37['shift']());}};_0xe104bd(++_0x587fbe);}(_0x33dc,0x91));var _0xc33d=function(_0x334599,_0x4b1cfa){_0x334599=_0x334599-0x0;var _0x4cdff2=_0x33dc[_0x334599];return _0x4cdff2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc33d('0x0'));var BPromise=require('bluebird');var rs=require(_0xc33d('0x1'));var fs=require('fs');var Redis=require(_0xc33d('0x2'));var db=require(_0xc33d('0x3'))['db'];var utils=require(_0xc33d('0x4'));var logger=require(_0xc33d('0x5'))(_0xc33d('0x6'));var config=require(_0xc33d('0x7'));var jayson=require(_0xc33d('0x8'));var client=jayson[_0xc33d('0x9')][_0xc33d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c2634,_0x2158d1,_0xe9008f){return new BPromise(function(_0x53f659,_0xb0910f){return client['request'](_0x4c2634,_0xe9008f)[_0xc33d('0xb')](function(_0x806541){logger[_0xc33d('0xc')](_0xc33d('0xd'),_0x2158d1,_0xc33d('0xe'));logger[_0xc33d('0xf')](_0xc33d('0x10'),_0x2158d1,'request\x20sent',JSON[_0xc33d('0x11')](_0x806541));if(_0x806541['error']){if(_0x806541[_0xc33d('0x12')]['code']===0x1f4){logger['error'](_0xc33d('0xd'),_0x2158d1,_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);return _0xb0910f(_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);}logger[_0xc33d('0x12')](_0xc33d('0xd'),_0x2158d1,_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);return _0x53f659(_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);}else{logger[_0xc33d('0xc')](_0xc33d('0xd'),_0x2158d1,_0xc33d('0xe'));_0x53f659(_0x806541[_0xc33d('0x14')][_0xc33d('0x13')]);}})[_0xc33d('0x15')](function(_0x2e5c12){logger[_0xc33d('0x12')](_0xc33d('0xd'),_0x2158d1,_0x2e5c12);_0xb0910f(_0x2e5c12);});});}exports[_0xc33d('0x16')]=function(_0x5b9dfd){var _0x4bb6dd=this;return new Promise(function(_0x337b09,_0x5bf45b){return db[_0xc33d('0x17')][_0xc33d('0x18')]({'raw':_0x5b9dfd['options']?_0x5b9dfd['options'][_0xc33d('0x19')]===undefined?!![]:![]:!![],'where':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd['options']['where']||null:null,'attributes':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1b')]||null:null,'limit':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1c')]||null:null,'include':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1d')]?_[_0xc33d('0x1e')](_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1d')],function(_0x4c94da){return{'model':db[_0x4c94da[_0xc33d('0x1f')]],'as':_0x4c94da['as'],'attributes':_0x4c94da[_0xc33d('0x1b')],'include':_0x4c94da['include']?_['map'](_0x4c94da[_0xc33d('0x1d')],function(_0xffa64e){return{'model':db[_0xffa64e[_0xc33d('0x1f')]],'as':_0xffa64e['as'],'attributes':_0xffa64e[_0xc33d('0x1b')],'include':_0xffa64e[_0xc33d('0x1d')]?_[_0xc33d('0x1e')](_0xffa64e[_0xc33d('0x1d')],function(_0x5995b5){return{'model':db[_0x5995b5[_0xc33d('0x1f')]],'as':_0x5995b5['as'],'attributes':_0x5995b5[_0xc33d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc33d('0xb')](function(_0x292190){logger['info']('GetFreshdeskAccount',_0x5b9dfd);logger[_0xc33d('0xf')]('GetFreshdeskAccount',_0x5b9dfd,JSON[_0xc33d('0x11')](_0x292190));_0x337b09(_0x292190);})['catch'](function(_0x39ac27){logger[_0xc33d('0x12')](_0xc33d('0x16'),_0x39ac27[_0xc33d('0x13')],_0x5b9dfd);_0x5bf45b(_0x4bb6dd[_0xc33d('0x12')](0x1f4,_0x39ac27[_0xc33d('0x13')]));});});};exports[_0xc33d('0x20')]=function(_0x3df32b){var _0x453e80=this;return new Promise(function(_0x12f784,_0x560d33){return db[_0xc33d('0x17')]['find']({'raw':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b['options'][_0xc33d('0x19')]===undefined?!![]:![]:!![],'where':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b[_0xc33d('0x1a')][_0xc33d('0x21')]||null:null,'attributes':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b[_0xc33d('0x1a')][_0xc33d('0x1b')]||null:null,'include':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b[_0xc33d('0x1a')]['include']?_[_0xc33d('0x1e')](_0x3df32b['options']['include'],function(_0x2662a5){return{'model':db[_0x2662a5[_0xc33d('0x1f')]],'as':_0x2662a5['as'],'attributes':_0x2662a5['attributes'],'include':_0x2662a5['include']?_[_0xc33d('0x1e')](_0x2662a5['include'],function(_0x9f1f5d){return{'model':db[_0x9f1f5d[_0xc33d('0x1f')]],'as':_0x9f1f5d['as'],'attributes':_0x9f1f5d[_0xc33d('0x1b')],'include':_0x9f1f5d[_0xc33d('0x1d')]?_[_0xc33d('0x1e')](_0x9f1f5d[_0xc33d('0x1d')],function(_0x367884){return{'model':db[_0x367884[_0xc33d('0x1f')]],'as':_0x367884['as'],'attributes':_0x367884[_0xc33d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x165db2){logger[_0xc33d('0xc')](_0xc33d('0x20'),_0x3df32b);logger['debug'](_0xc33d('0x20'),_0x3df32b,JSON[_0xc33d('0x11')](_0x165db2));_0x12f784(_0x165db2);})[_0xc33d('0x15')](function(_0x162092){logger[_0xc33d('0x12')](_0xc33d('0x20'),_0x162092[_0xc33d('0x13')],_0x3df32b);_0x560d33(_0x453e80[_0xc33d('0x12')](0x1f4,_0x162092['message']));});});};
\ No newline at end of file
index ddb9879..fcd210a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4945=['create','post','/:id/tags','setTags','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x17981e,_0x314461){var _0x1a8b78=function(_0x5f4d13){while(--_0x5f4d13){_0x17981e['push'](_0x17981e['shift']());}};_0x1a8b78(++_0x314461);}(_0x4945,0x131));var _0x5494=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x4945[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x5494('0x0'));var util=require(_0x5494('0x1'));var path=require(_0x5494('0x2'));var timeout=require(_0x5494('0x3'));var express=require(_0x5494('0x4'));var router=express[_0x5494('0x5')]();var fs_extra=require(_0x5494('0x6'));var auth=require(_0x5494('0x7'));var interaction=require(_0x5494('0x8'));var config=require(_0x5494('0x9'));var controller=require('./intFreshdeskConfiguration.controller');router[_0x5494('0xa')]('/',auth[_0x5494('0xb')](),controller[_0x5494('0xc')]);router[_0x5494('0xa')](_0x5494('0xd'),auth['isAuthenticated'](),controller[_0x5494('0xe')]);router[_0x5494('0xa')](_0x5494('0xf'),auth[_0x5494('0xb')](),controller['getFields']);router[_0x5494('0xa')](_0x5494('0x10'),auth[_0x5494('0xb')](),controller[_0x5494('0x11')]);router[_0x5494('0xa')]('/:id/descriptions',auth[_0x5494('0xb')](),controller[_0x5494('0x12')]);router[_0x5494('0xa')]('/:id/tags',auth[_0x5494('0xb')](),controller['getTags']);router['post']('/',auth[_0x5494('0xb')](),controller[_0x5494('0x13')]);router[_0x5494('0x14')](_0x5494('0x15'),auth['isAuthenticated'](),controller[_0x5494('0x16')]);router[_0x5494('0x17')](_0x5494('0xd'),auth[_0x5494('0xb')](),controller[_0x5494('0x18')]);router[_0x5494('0x19')](_0x5494('0xd'),auth[_0x5494('0xb')](),controller['destroy']);module[_0x5494('0x1a')]=router;
\ No newline at end of file
+var _0xd0d5=['fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','put','destroy','multer','util','path','connect-timeout','Router'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xd0d5,0x1cf));var _0x5d0d=function(_0xbcbeaa,_0x5612b1){_0xbcbeaa=_0xbcbeaa-0x0;var _0x56aa43=_0xd0d5[_0xbcbeaa];return _0x56aa43;};'use strict';var multer=require(_0x5d0d('0x0'));var util=require(_0x5d0d('0x1'));var path=require(_0x5d0d('0x2'));var timeout=require(_0x5d0d('0x3'));var express=require('express');var router=express[_0x5d0d('0x4')]();var fs_extra=require(_0x5d0d('0x5'));var auth=require(_0x5d0d('0x6'));var interaction=require(_0x5d0d('0x7'));var config=require('../../config/environment');var controller=require(_0x5d0d('0x8'));router[_0x5d0d('0x9')]('/',auth[_0x5d0d('0xa')](),controller[_0x5d0d('0xb')]);router['get'](_0x5d0d('0xc'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0xd')]);router[_0x5d0d('0x9')](_0x5d0d('0xe'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0xf')]);router[_0x5d0d('0x9')](_0x5d0d('0x10'),auth['isAuthenticated'](),controller[_0x5d0d('0x11')]);router['get'](_0x5d0d('0x12'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x13')]);router[_0x5d0d('0x9')](_0x5d0d('0x14'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x15')]);router['post']('/',auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x16')]);router[_0x5d0d('0x17')](_0x5d0d('0x14'),auth[_0x5d0d('0xa')](),controller['setTags']);router[_0x5d0d('0x18')](_0x5d0d('0xc'),auth[_0x5d0d('0xa')](),controller['update']);router['delete']('/:id',auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x19')]);module['exports']=router;
\ No newline at end of file
index fd848b8..349c672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f67=['sequelize','exports','STRING'];(function(_0x11a55c,_0x4eced9){var _0x26c390=function(_0x5b0662){while(--_0x5b0662){_0x11a55c['push'](_0x11a55c['shift']());}};_0x26c390(++_0x4eced9);}(_0x1f67,0x11a));var _0x71f6=function(_0x536c47,_0x2ed3a4){_0x536c47=_0x536c47-0x0;var _0xb89735=_0x1f67[_0x536c47];return _0xb89735;};'use strict';var Sequelize=require(_0x71f6('0x0'));module[_0x71f6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x71f6('0x2')]}};
\ No newline at end of file
+var _0x791f=['STRING','exports'];(function(_0x56af3a,_0xdb5ac9){var _0x392ed6=function(_0x3694e0){while(--_0x3694e0){_0x56af3a['push'](_0x56af3a['shift']());}};_0x392ed6(++_0xdb5ac9);}(_0x791f,0x1a9));var _0xf791=function(_0x59e821,_0x86c723){_0x59e821=_0x59e821-0x0;var _0x5333f6=_0x791f[_0x59e821];return _0x5333f6;};'use strict';var Sequelize=require('sequelize');module[_0xf791('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf791('0x1')]}};
\ No newline at end of file
index 6b74f47..60a8982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6984=['stack','name','send','index','map','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','then','include','FreshdeskConfiguration','findAll','rows','catch','show','params','fields','includeAll','create','body','getFields','findOne','order','getSubjects','getDescriptions','FreshdeskField','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','status','json','offset','limit','undefined','count','set','reject','save','update','end'];(function(_0x22bcdc,_0x5e01fa){var _0x439547=function(_0x3ca99d){while(--_0x3ca99d){_0x22bcdc['push'](_0x22bcdc['shift']());}};_0x439547(++_0x5e01fa);}(_0x6984,0x1d3));var _0x4698=function(_0x35a545,_0x52d777){_0x35a545=_0x35a545-0x0;var _0x4783c3=_0x6984[_0x35a545];return _0x4783c3;};'use strict';var emlformat=require(_0x4698('0x0'));var rimraf=require(_0x4698('0x1'));var zipdir=require(_0x4698('0x2'));var jsonpatch=require(_0x4698('0x3'));var rp=require(_0x4698('0x4'));var moment=require(_0x4698('0x5'));var BPromise=require(_0x4698('0x6'));var Mustache=require(_0x4698('0x7'));var util=require('util');var path=require(_0x4698('0x8'));var sox=require(_0x4698('0x9'));var csv=require(_0x4698('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4698('0xb'));var _=require('lodash');var squel=require(_0x4698('0xc'));var crypto=require(_0x4698('0xd'));var jsforce=require(_0x4698('0xe'));var deskjs=require(_0x4698('0xf'));var toCsv=require(_0x4698('0xa'));var querystring=require(_0x4698('0x10'));var Papa=require(_0x4698('0x11'));var Redis=require(_0x4698('0x12'));var authService=require(_0x4698('0x13'));var qs=require(_0x4698('0x14'));var as=require(_0x4698('0x15'));var hardwareService=require(_0x4698('0x16'));var logger=require('../../config/logger')(_0x4698('0x17'));var utils=require(_0x4698('0x18'));var config=require(_0x4698('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5689ae,_0x463508){_0x463508=_0x463508||0xcc;return function(_0x1bf2ec){if(_0x1bf2ec){return _0x5689ae['sendStatus'](_0x463508);}return _0x5689ae[_0x4698('0x1a')](_0x463508)['end']();};}function respondWithResult(_0x6c3e8b,_0x512e18){_0x512e18=_0x512e18||0xc8;return function(_0x4be570){if(_0x4be570){return _0x6c3e8b[_0x4698('0x1a')](_0x512e18)[_0x4698('0x1b')](_0x4be570);}};}function respondWithFilteredResult(_0x5941fb,_0xbb7aec){return function(_0x1f330f){if(_0x1f330f){var _0x4955ce=typeof _0xbb7aec[_0x4698('0x1c')]==='undefined'&&typeof _0xbb7aec[_0x4698('0x1d')]===_0x4698('0x1e');var _0x177a50=_0x1f330f[_0x4698('0x1f')];var _0x514770=_0x4955ce?0x0:_0xbb7aec[_0x4698('0x1c')];var _0x4d3913=_0x4955ce?_0x1f330f[_0x4698('0x1f')]:_0xbb7aec[_0x4698('0x1c')]+_0xbb7aec[_0x4698('0x1d')];var _0x5392c7;if(_0x4d3913>=_0x177a50){_0x4d3913=_0x177a50;_0x5392c7=0xc8;}else{_0x5392c7=0xce;}_0x5941fb[_0x4698('0x1a')](_0x5392c7);return _0x5941fb[_0x4698('0x20')]('Content-Range',_0x514770+'-'+_0x4d3913+'/'+_0x177a50)[_0x4698('0x1b')](_0x1f330f);}return null;};}function patchUpdates(_0x325fd8){return function(_0x2c5e91){try{jsonpatch['apply'](_0x2c5e91,_0x325fd8,!![]);}catch(_0x5f101a){return BPromise[_0x4698('0x21')](_0x5f101a);}return _0x2c5e91[_0x4698('0x22')]();};}function saveUpdates(_0x459f81,_0x2a18f1){return function(_0x10b3a8){if(_0x10b3a8){return _0x10b3a8[_0x4698('0x23')](_0x459f81)['then'](function(_0x4525b7){return _0x4525b7;});}return null;};}function removeEntity(_0x55ef77,_0x237462){return function(_0x1112da){if(_0x1112da){return _0x1112da['destroy']()['then'](function(){_0x55ef77['status'](0xcc)[_0x4698('0x24')]();});}};}function handleEntityNotFound(_0x5ced0b,_0x487ffe){return function(_0x188099){if(!_0x188099){_0x5ced0b['sendStatus'](0x194);}return _0x188099;};}function handleError(_0x5d4460,_0x25a98a){_0x25a98a=_0x25a98a||0x1f4;return function(_0x4e59ee){logger['error'](_0x4e59ee[_0x4698('0x25')]);if(_0x4e59ee[_0x4698('0x26')]){delete _0x4e59ee[_0x4698('0x26')];}_0x5d4460[_0x4698('0x1a')](_0x25a98a)[_0x4698('0x27')](_0x4e59ee);};}exports[_0x4698('0x28')]=function(_0x4316eb,_0x7e6ce3){var _0x1968a3={},_0x3c27fb={},_0x28e502={'count':0x0,'rows':[]};var _0x37a9fc=_[_0x4698('0x29')](db['FreshdeskConfiguration'][_0x4698('0x2a')],function(_0x57f0fe){return{'name':_0x57f0fe[_0x4698('0x2b')],'type':_0x57f0fe[_0x4698('0x2c')][_0x4698('0x2d')]};});_0x3c27fb['model']=_[_0x4698('0x29')](_0x37a9fc,_0x4698('0x26'));_0x3c27fb['query']=_[_0x4698('0x2e')](_0x4316eb[_0x4698('0x2f')]);_0x3c27fb[_0x4698('0x30')]=_[_0x4698('0x31')](_0x3c27fb[_0x4698('0x32')],_0x3c27fb['query']);_0x1968a3['attributes']=_[_0x4698('0x31')](_0x3c27fb['model'],qs['fields'](_0x4316eb['query']['fields']));_0x1968a3[_0x4698('0x33')]=_0x1968a3['attributes'][_0x4698('0x34')]?_0x1968a3[_0x4698('0x33')]:_0x3c27fb[_0x4698('0x32')];if(!_0x4316eb['query'][_0x4698('0x35')](_0x4698('0x36'))){_0x1968a3[_0x4698('0x1d')]=qs[_0x4698('0x1d')](_0x4316eb[_0x4698('0x2f')][_0x4698('0x1d')]);_0x1968a3[_0x4698('0x1c')]=qs[_0x4698('0x1c')](_0x4316eb[_0x4698('0x2f')][_0x4698('0x1c')]);}_0x1968a3['order']=qs[_0x4698('0x37')](_0x4316eb[_0x4698('0x2f')][_0x4698('0x37')]);_0x1968a3[_0x4698('0x38')]=qs[_0x4698('0x30')](_[_0x4698('0x39')](_0x4316eb[_0x4698('0x2f')],_0x3c27fb[_0x4698('0x30')]),_0x37a9fc);if(_0x4316eb['query'][_0x4698('0x3a')]){_0x1968a3[_0x4698('0x38')]=_[_0x4698('0x3b')](_0x1968a3[_0x4698('0x38')],{'$or':_[_0x4698('0x29')](_0x37a9fc,function(_0x204f37){if(_0x204f37[_0x4698('0x2c')]!==_0x4698('0x3c')){var _0x224b91={};_0x224b91[_0x204f37[_0x4698('0x26')]]={'$like':'%'+_0x4316eb[_0x4698('0x2f')][_0x4698('0x3a')]+'%'};return _0x224b91;}})});}_0x1968a3=_[_0x4698('0x3b')]({},_0x1968a3,_0x4316eb[_0x4698('0x3d')]);var _0x3f471c={'where':_0x1968a3['where']};return db['FreshdeskConfiguration'][_0x4698('0x1f')](_0x3f471c)[_0x4698('0x3e')](function(_0x563193){_0x28e502[_0x4698('0x1f')]=_0x563193;if(_0x4316eb[_0x4698('0x2f')]['includeAll']){_0x1968a3[_0x4698('0x3f')]=[{'all':!![]}];}return db[_0x4698('0x40')][_0x4698('0x41')](_0x1968a3);})[_0x4698('0x3e')](function(_0x2d7737){_0x28e502[_0x4698('0x42')]=_0x2d7737;return _0x28e502;})[_0x4698('0x3e')](respondWithFilteredResult(_0x7e6ce3,_0x1968a3))[_0x4698('0x43')](handleError(_0x7e6ce3,null));};exports[_0x4698('0x44')]=function(_0x27fa52,_0x5de830){var _0x3105ac={'raw':![],'where':{'id':_0x27fa52[_0x4698('0x45')]['id']}},_0x1ced12={};_0x1ced12['model']=_[_0x4698('0x2e')](db[_0x4698('0x40')]['rawAttributes']);_0x1ced12[_0x4698('0x2f')]=_[_0x4698('0x2e')](_0x27fa52[_0x4698('0x2f')]);_0x1ced12[_0x4698('0x30')]=_['intersection'](_0x1ced12[_0x4698('0x32')],_0x1ced12[_0x4698('0x2f')]);_0x3105ac[_0x4698('0x33')]=_['intersection'](_0x1ced12[_0x4698('0x32')],qs[_0x4698('0x46')](_0x27fa52[_0x4698('0x2f')][_0x4698('0x46')]));_0x3105ac[_0x4698('0x33')]=_0x3105ac[_0x4698('0x33')][_0x4698('0x34')]?_0x3105ac[_0x4698('0x33')]:_0x1ced12[_0x4698('0x32')];if(_0x27fa52[_0x4698('0x2f')][_0x4698('0x47')]){_0x3105ac[_0x4698('0x3f')]=[{'all':!![]}];}_0x3105ac=_[_0x4698('0x3b')]({},_0x3105ac,_0x27fa52[_0x4698('0x3d')]);return db[_0x4698('0x40')]['find'](_0x3105ac)[_0x4698('0x3e')](handleEntityNotFound(_0x5de830,null))[_0x4698('0x3e')](respondWithResult(_0x5de830,null))[_0x4698('0x43')](handleError(_0x5de830,null));};exports[_0x4698('0x48')]=function(_0x20abe4,_0x458ff0){return db[_0x4698('0x40')]['create'](_0x20abe4[_0x4698('0x49')],{})[_0x4698('0x3e')](respondWithResult(_0x458ff0,0xc9))[_0x4698('0x43')](handleError(_0x458ff0,null));};exports[_0x4698('0x23')]=function(_0x6b27f5,_0x499260){if(_0x6b27f5[_0x4698('0x49')]['id']){delete _0x6b27f5['body']['id'];}return db[_0x4698('0x40')]['find']({'where':{'id':_0x6b27f5['params']['id']}})[_0x4698('0x3e')](handleEntityNotFound(_0x499260,null))[_0x4698('0x3e')](saveUpdates(_0x6b27f5['body'],null))[_0x4698('0x3e')](respondWithResult(_0x499260,null))[_0x4698('0x43')](handleError(_0x499260,null));};exports['destroy']=function(_0xf11e8d,_0x5392b2){return db[_0x4698('0x40')]['find']({'where':{'id':_0xf11e8d[_0x4698('0x45')]['id']}})[_0x4698('0x3e')](handleEntityNotFound(_0x5392b2,null))[_0x4698('0x3e')](removeEntity(_0x5392b2,null))[_0x4698('0x43')](handleError(_0x5392b2,null));};exports[_0x4698('0x4a')]=function(_0x43e017,_0x3ccc46,_0x20d8cd){var _0x3804b8={};var _0x3af6be={};var _0x5e2482;var _0x2365ad;return db['FreshdeskConfiguration'][_0x4698('0x4b')]({'where':{'id':_0x43e017[_0x4698('0x45')]['id']}})[_0x4698('0x3e')](handleEntityNotFound(_0x3ccc46,null))[_0x4698('0x3e')](function(_0x276fa5){if(_0x276fa5){_0x5e2482=_0x276fa5;_0x3af6be['model']=_[_0x4698('0x2e')](db['FreshdeskField'][_0x4698('0x2a')]);_0x3af6be[_0x4698('0x2f')]=_[_0x4698('0x2e')](_0x43e017[_0x4698('0x2f')]);_0x3af6be[_0x4698('0x30')]=_[_0x4698('0x31')](_0x3af6be['model'],_0x3af6be['query']);_0x3804b8[_0x4698('0x33')]=_[_0x4698('0x31')](_0x3af6be[_0x4698('0x32')],qs[_0x4698('0x46')](_0x43e017[_0x4698('0x2f')][_0x4698('0x46')]));_0x3804b8[_0x4698('0x33')]=_0x3804b8[_0x4698('0x33')]['length']?_0x3804b8[_0x4698('0x33')]:_0x3af6be['model'];_0x3804b8[_0x4698('0x4c')]=qs[_0x4698('0x37')](_0x43e017[_0x4698('0x2f')][_0x4698('0x37')]);_0x3804b8[_0x4698('0x38')]=qs[_0x4698('0x30')](_[_0x4698('0x39')](_0x43e017[_0x4698('0x2f')],_0x3af6be['filters']));if(_0x43e017[_0x4698('0x2f')][_0x4698('0x3a')]){_0x3804b8['where']=_[_0x4698('0x3b')](_0x3804b8[_0x4698('0x38')],{'$or':_[_0x4698('0x29')](_0x3804b8[_0x4698('0x33')],function(_0x3584b2){var _0xf5f348={};_0xf5f348[_0x3584b2]={'$like':'%'+_0x43e017[_0x4698('0x2f')][_0x4698('0x3a')]+'%'};return _0xf5f348;})});}_0x3804b8=_['merge']({},_0x3804b8,_0x43e017[_0x4698('0x3d')]);return _0x5e2482[_0x4698('0x4a')](_0x3804b8);}})[_0x4698('0x3e')](function(_0x159afb){if(_0x159afb){_0x2365ad=_0x159afb[_0x4698('0x34')];if(!_0x43e017[_0x4698('0x2f')]['hasOwnProperty'](_0x4698('0x36'))){_0x3804b8['limit']=qs[_0x4698('0x1d')](_0x43e017['query']['limit']);_0x3804b8[_0x4698('0x1c')]=qs[_0x4698('0x1c')](_0x43e017[_0x4698('0x2f')][_0x4698('0x1c')]);}return _0x5e2482['getFields'](_0x3804b8);}})[_0x4698('0x3e')](function(_0x5d8e54){if(_0x5d8e54){return _0x5d8e54?{'count':_0x2365ad,'rows':_0x5d8e54}:null;}})[_0x4698('0x3e')](respondWithResult(_0x3ccc46,null))[_0x4698('0x43')](handleError(_0x3ccc46,null));};exports[_0x4698('0x4d')]=function(_0x5e9f07,_0x260f63,_0x3f04bc){var _0x33d341={};var _0x1f7940={};var _0x468d9e;var _0x33dda8;return db[_0x4698('0x40')]['findOne']({'where':{'id':_0x5e9f07['params']['id']}})[_0x4698('0x3e')](handleEntityNotFound(_0x260f63,null))[_0x4698('0x3e')](function(_0x18a9bd){if(_0x18a9bd){_0x468d9e=_0x18a9bd;_0x1f7940[_0x4698('0x32')]=_['keys'](db['FreshdeskField'][_0x4698('0x2a')]);_0x1f7940[_0x4698('0x2f')]=_[_0x4698('0x2e')](_0x5e9f07[_0x4698('0x2f')]);_0x1f7940[_0x4698('0x30')]=_[_0x4698('0x31')](_0x1f7940['model'],_0x1f7940[_0x4698('0x2f')]);_0x33d341['attributes']=_[_0x4698('0x31')](_0x1f7940[_0x4698('0x32')],qs[_0x4698('0x46')](_0x5e9f07[_0x4698('0x2f')]['fields']));_0x33d341[_0x4698('0x33')]=_0x33d341[_0x4698('0x33')][_0x4698('0x34')]?_0x33d341['attributes']:_0x1f7940[_0x4698('0x32')];_0x33d341[_0x4698('0x4c')]=qs[_0x4698('0x37')](_0x5e9f07[_0x4698('0x2f')][_0x4698('0x37')]);_0x33d341[_0x4698('0x38')]=qs[_0x4698('0x30')](_[_0x4698('0x39')](_0x5e9f07['query'],_0x1f7940[_0x4698('0x30')]));if(_0x5e9f07[_0x4698('0x2f')][_0x4698('0x3a')]){_0x33d341[_0x4698('0x38')]=_[_0x4698('0x3b')](_0x33d341[_0x4698('0x38')],{'$or':_[_0x4698('0x29')](_0x33d341[_0x4698('0x33')],function(_0x31d734){var _0x4e6fa8={};_0x4e6fa8[_0x31d734]={'$like':'%'+_0x5e9f07[_0x4698('0x2f')][_0x4698('0x3a')]+'%'};return _0x4e6fa8;})});}_0x33d341=_[_0x4698('0x3b')]({},_0x33d341,_0x5e9f07['options']);return _0x468d9e['getSubjects'](_0x33d341);}})[_0x4698('0x3e')](function(_0x1e0842){if(_0x1e0842){_0x33dda8=_0x1e0842[_0x4698('0x34')];if(!_0x5e9f07[_0x4698('0x2f')][_0x4698('0x35')](_0x4698('0x36'))){_0x33d341[_0x4698('0x1d')]=qs['limit'](_0x5e9f07[_0x4698('0x2f')]['limit']);_0x33d341[_0x4698('0x1c')]=qs['offset'](_0x5e9f07['query'][_0x4698('0x1c')]);}return _0x468d9e['getSubjects'](_0x33d341);}})[_0x4698('0x3e')](function(_0x1229ff){if(_0x1229ff){return _0x1229ff?{'count':_0x33dda8,'rows':_0x1229ff}:null;}})['then'](respondWithResult(_0x260f63,null))['catch'](handleError(_0x260f63,null));};exports[_0x4698('0x4e')]=function(_0xc90645,_0x5b2061,_0x5365ea){var _0x336e4b={};var _0x5b8473={};var _0x1c690f;var _0x5284fd;return db[_0x4698('0x40')][_0x4698('0x4b')]({'where':{'id':_0xc90645[_0x4698('0x45')]['id']}})[_0x4698('0x3e')](handleEntityNotFound(_0x5b2061,null))[_0x4698('0x3e')](function(_0x188c69){if(_0x188c69){_0x1c690f=_0x188c69;_0x5b8473['model']=_[_0x4698('0x2e')](db[_0x4698('0x4f')][_0x4698('0x2a')]);_0x5b8473[_0x4698('0x2f')]=_[_0x4698('0x2e')](_0xc90645[_0x4698('0x2f')]);_0x5b8473[_0x4698('0x30')]=_[_0x4698('0x31')](_0x5b8473[_0x4698('0x32')],_0x5b8473['query']);_0x336e4b[_0x4698('0x33')]=_['intersection'](_0x5b8473['model'],qs[_0x4698('0x46')](_0xc90645['query'][_0x4698('0x46')]));_0x336e4b[_0x4698('0x33')]=_0x336e4b[_0x4698('0x33')][_0x4698('0x34')]?_0x336e4b[_0x4698('0x33')]:_0x5b8473['model'];_0x336e4b['order']=qs[_0x4698('0x37')](_0xc90645[_0x4698('0x2f')][_0x4698('0x37')]);_0x336e4b[_0x4698('0x38')]=qs[_0x4698('0x30')](_[_0x4698('0x39')](_0xc90645[_0x4698('0x2f')],_0x5b8473['filters']));if(_0xc90645[_0x4698('0x2f')]['filter']){_0x336e4b['where']=_[_0x4698('0x3b')](_0x336e4b[_0x4698('0x38')],{'$or':_[_0x4698('0x29')](_0x336e4b[_0x4698('0x33')],function(_0x434b05){var _0x2071b8={};_0x2071b8[_0x434b05]={'$like':'%'+_0xc90645[_0x4698('0x2f')][_0x4698('0x3a')]+'%'};return _0x2071b8;})});}_0x336e4b=_['merge']({},_0x336e4b,_0xc90645[_0x4698('0x3d')]);return _0x1c690f[_0x4698('0x4e')](_0x336e4b);}})[_0x4698('0x3e')](function(_0x52ad05){if(_0x52ad05){_0x5284fd=_0x52ad05[_0x4698('0x34')];if(!_0xc90645[_0x4698('0x2f')][_0x4698('0x35')](_0x4698('0x36'))){_0x336e4b[_0x4698('0x1d')]=qs[_0x4698('0x1d')](_0xc90645[_0x4698('0x2f')][_0x4698('0x1d')]);_0x336e4b[_0x4698('0x1c')]=qs[_0x4698('0x1c')](_0xc90645[_0x4698('0x2f')][_0x4698('0x1c')]);}return _0x1c690f[_0x4698('0x4e')](_0x336e4b);}})[_0x4698('0x3e')](function(_0x208d3f){if(_0x208d3f){return _0x208d3f?{'count':_0x5284fd,'rows':_0x208d3f}:null;}})[_0x4698('0x3e')](respondWithResult(_0x5b2061,null))[_0x4698('0x43')](handleError(_0x5b2061,null));};exports[_0x4698('0x50')]=function(_0x3d0f94,_0xae7c29,_0x170ff2){var _0x5bfebb={};var _0x385530={};var _0x43f354;var _0x2912c4;return db[_0x4698('0x40')]['findOne']({'where':{'id':_0x3d0f94[_0x4698('0x45')]['id']}})[_0x4698('0x3e')](handleEntityNotFound(_0xae7c29,null))['then'](function(_0x5b83cb){if(_0x5b83cb){_0x43f354=_0x5b83cb;_0x385530[_0x4698('0x32')]=_[_0x4698('0x2e')](db[_0x4698('0x51')][_0x4698('0x2a')]);_0x385530['query']=_[_0x4698('0x2e')](_0x3d0f94[_0x4698('0x2f')]);_0x385530[_0x4698('0x30')]=_[_0x4698('0x31')](_0x385530[_0x4698('0x32')],_0x385530['query']);_0x5bfebb[_0x4698('0x33')]=_[_0x4698('0x31')](_0x385530[_0x4698('0x32')],qs[_0x4698('0x46')](_0x3d0f94[_0x4698('0x2f')][_0x4698('0x46')]));_0x5bfebb[_0x4698('0x33')]=_0x5bfebb['attributes'][_0x4698('0x34')]?_0x5bfebb['attributes']:_0x385530[_0x4698('0x32')];_0x5bfebb[_0x4698('0x4c')]=qs[_0x4698('0x37')](_0x3d0f94[_0x4698('0x2f')][_0x4698('0x37')]);_0x5bfebb['where']=qs[_0x4698('0x30')](_[_0x4698('0x39')](_0x3d0f94[_0x4698('0x2f')],_0x385530[_0x4698('0x30')]));if(_0x3d0f94['query'][_0x4698('0x3a')]){_0x5bfebb['where']=_[_0x4698('0x3b')](_0x5bfebb['where'],{'$or':_['map'](_0x5bfebb[_0x4698('0x33')],function(_0x981eb2){var _0x5ec8df={};_0x5ec8df[_0x981eb2]={'$like':'%'+_0x3d0f94[_0x4698('0x2f')][_0x4698('0x3a')]+'%'};return _0x5ec8df;})});}_0x5bfebb=_[_0x4698('0x3b')]({},_0x5bfebb,_0x3d0f94[_0x4698('0x3d')]);return _0x43f354[_0x4698('0x50')](_0x5bfebb);}})[_0x4698('0x3e')](function(_0x339e4a){if(_0x339e4a){_0x2912c4=_0x339e4a[_0x4698('0x34')];if(!_0x3d0f94[_0x4698('0x2f')][_0x4698('0x35')](_0x4698('0x36'))){_0x5bfebb['limit']=qs['limit'](_0x3d0f94[_0x4698('0x2f')][_0x4698('0x1d')]);_0x5bfebb[_0x4698('0x1c')]=qs['offset'](_0x3d0f94[_0x4698('0x2f')]['offset']);}return _0x43f354[_0x4698('0x50')](_0x5bfebb);}})[_0x4698('0x3e')](function(_0x232ad8){if(_0x232ad8){return _0x232ad8?{'count':_0x2912c4,'rows':_0x232ad8}:null;}})[_0x4698('0x3e')](respondWithResult(_0xae7c29,null))[_0x4698('0x43')](handleError(_0xae7c29,null));};exports['setTags']=function(_0x18c963,_0x5409ae,_0x47e7c6){if(_0x18c963[_0x4698('0x49')]['id']){delete _0x18c963['body']['id'];}return db[_0x4698('0x40')][_0x4698('0x4b')]({'where':{'id':_0x18c963[_0x4698('0x45')]['id']}})[_0x4698('0x3e')](handleEntityNotFound(_0x5409ae,null))[_0x4698('0x3e')](function(_0x17455a){if(_0x17455a){return _0x17455a[_0x4698('0x52')](_0x18c963[_0x4698('0x49')][_0x4698('0x53')]||[]);}return null;})[_0x4698('0x3e')](respondWithResult(_0x5409ae,null))[_0x4698('0x43')](handleError(_0x5409ae,null));};
\ No newline at end of file
+var _0xa0db=['path','sox','to-csv','lodash','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','pick','filter','merge','VIRTUAL','options','where','count','includeAll','include','findAll','rows','catch','show','fields','create','body','find','params','getFields','FreshdeskField','getSubjects','findOne','order','getDescriptions','getTags','setTags','ids','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util'];(function(_0x44f554,_0x4345d7){var _0x3148a9=function(_0x48fa43){while(--_0x48fa43){_0x44f554['push'](_0x44f554['shift']());}};_0x3148a9(++_0x4345d7);}(_0xa0db,0xf8));var _0xba0d=function(_0x2e7ee2,_0x9933f5){_0x2e7ee2=_0x2e7ee2-0x0;var _0x38b63c=_0xa0db[_0x2e7ee2];return _0x38b63c;};'use strict';var emlformat=require(_0xba0d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xba0d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xba0d('0x2'));var moment=require(_0xba0d('0x3'));var BPromise=require(_0xba0d('0x4'));var Mustache=require(_0xba0d('0x5'));var util=require(_0xba0d('0x6'));var path=require(_0xba0d('0x7'));var sox=require(_0xba0d('0x8'));var csv=require(_0xba0d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba0d('0xa'));var squel=require('squel');var crypto=require(_0xba0d('0xb'));var jsforce=require(_0xba0d('0xc'));var deskjs=require(_0xba0d('0xd'));var toCsv=require(_0xba0d('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xba0d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xba0d('0xf'));var as=require(_0xba0d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xba0d('0x11'))(_0xba0d('0x12'));var utils=require('../../config/utils');var config=require(_0xba0d('0x13'));var licenseUtil=require(_0xba0d('0x14'));var db=require(_0xba0d('0x15'))['db'];function respondWithStatusCode(_0x31e3ec,_0x11acd2){_0x11acd2=_0x11acd2||0xcc;return function(_0x562591){if(_0x562591){return _0x31e3ec[_0xba0d('0x16')](_0x11acd2);}return _0x31e3ec[_0xba0d('0x17')](_0x11acd2)[_0xba0d('0x18')]();};}function respondWithResult(_0x5a9a1e,_0x648e2d){_0x648e2d=_0x648e2d||0xc8;return function(_0x50840d){if(_0x50840d){return _0x5a9a1e['status'](_0x648e2d)['json'](_0x50840d);}};}function respondWithFilteredResult(_0x5a9c4d,_0x476bff){return function(_0x4b6c7a){if(_0x4b6c7a){var _0x1f9d44=typeof _0x476bff['offset']===_0xba0d('0x19')&&typeof _0x476bff[_0xba0d('0x1a')]==='undefined';var _0x3ac5a0=_0x4b6c7a['count'];var _0x435cf8=_0x1f9d44?0x0:_0x476bff[_0xba0d('0x1b')];var _0x2a841c=_0x1f9d44?_0x4b6c7a['count']:_0x476bff[_0xba0d('0x1b')]+_0x476bff[_0xba0d('0x1a')];var _0x2b496d;if(_0x2a841c>=_0x3ac5a0){_0x2a841c=_0x3ac5a0;_0x2b496d=0xc8;}else{_0x2b496d=0xce;}_0x5a9c4d[_0xba0d('0x17')](_0x2b496d);return _0x5a9c4d[_0xba0d('0x1c')](_0xba0d('0x1d'),_0x435cf8+'-'+_0x2a841c+'/'+_0x3ac5a0)[_0xba0d('0x1e')](_0x4b6c7a);}return null;};}function patchUpdates(_0x75a25c){return function(_0xc80171){try{jsonpatch[_0xba0d('0x1f')](_0xc80171,_0x75a25c,!![]);}catch(_0x7fed54){return BPromise[_0xba0d('0x20')](_0x7fed54);}return _0xc80171[_0xba0d('0x21')]();};}function saveUpdates(_0x3d41d3,_0x5a4a86){return function(_0x5c8e82){if(_0x5c8e82){return _0x5c8e82[_0xba0d('0x22')](_0x3d41d3)[_0xba0d('0x23')](function(_0x43e704){return _0x43e704;});}return null;};}function removeEntity(_0x4e21d0,_0x3b69dd){return function(_0x17e0da){if(_0x17e0da){return _0x17e0da[_0xba0d('0x24')]()[_0xba0d('0x23')](function(){_0x4e21d0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x273b3c,_0x3ce80e){return function(_0x1335f1){if(!_0x1335f1){_0x273b3c[_0xba0d('0x16')](0x194);}return _0x1335f1;};}function handleError(_0x23f4de,_0x5251f2){_0x5251f2=_0x5251f2||0x1f4;return function(_0x31aeb3){logger[_0xba0d('0x25')](_0x31aeb3[_0xba0d('0x26')]);if(_0x31aeb3[_0xba0d('0x27')]){delete _0x31aeb3['name'];}_0x23f4de['status'](_0x5251f2)[_0xba0d('0x28')](_0x31aeb3);};}exports[_0xba0d('0x29')]=function(_0x15aaec,_0x4520d0){var _0x40e15d={},_0x5df00d={},_0x1d3039={'count':0x0,'rows':[]};var _0x7e2f26=_[_0xba0d('0x2a')](db[_0xba0d('0x2b')][_0xba0d('0x2c')],function(_0x22c92c){return{'name':_0x22c92c[_0xba0d('0x2d')],'type':_0x22c92c[_0xba0d('0x2e')][_0xba0d('0x2f')]};});_0x5df00d[_0xba0d('0x30')]=_[_0xba0d('0x2a')](_0x7e2f26,_0xba0d('0x27'));_0x5df00d[_0xba0d('0x31')]=_[_0xba0d('0x32')](_0x15aaec[_0xba0d('0x31')]);_0x5df00d[_0xba0d('0x33')]=_['intersection'](_0x5df00d[_0xba0d('0x30')],_0x5df00d['query']);_0x40e15d[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x5df00d[_0xba0d('0x30')],qs['fields'](_0x15aaec[_0xba0d('0x31')]['fields']));_0x40e15d[_0xba0d('0x34')]=_0x40e15d[_0xba0d('0x34')][_0xba0d('0x36')]?_0x40e15d[_0xba0d('0x34')]:_0x5df00d[_0xba0d('0x30')];if(!_0x15aaec[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x40e15d[_0xba0d('0x1a')]=qs[_0xba0d('0x1a')](_0x15aaec[_0xba0d('0x31')][_0xba0d('0x1a')]);_0x40e15d[_0xba0d('0x1b')]=qs[_0xba0d('0x1b')](_0x15aaec[_0xba0d('0x31')][_0xba0d('0x1b')]);}_0x40e15d['order']=qs[_0xba0d('0x39')](_0x15aaec['query'][_0xba0d('0x39')]);_0x40e15d['where']=qs[_0xba0d('0x33')](_[_0xba0d('0x3a')](_0x15aaec['query'],_0x5df00d[_0xba0d('0x33')]),_0x7e2f26);if(_0x15aaec[_0xba0d('0x31')][_0xba0d('0x3b')]){_0x40e15d['where']=_[_0xba0d('0x3c')](_0x40e15d['where'],{'$or':_['map'](_0x7e2f26,function(_0x202d9e){if(_0x202d9e[_0xba0d('0x2e')]!==_0xba0d('0x3d')){var _0x55c82d={};_0x55c82d[_0x202d9e[_0xba0d('0x27')]]={'$like':'%'+_0x15aaec[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x55c82d;}})});}_0x40e15d=_[_0xba0d('0x3c')]({},_0x40e15d,_0x15aaec[_0xba0d('0x3e')]);var _0x57bdf8={'where':_0x40e15d[_0xba0d('0x3f')]};return db[_0xba0d('0x2b')]['count'](_0x57bdf8)['then'](function(_0x8d18fb){_0x1d3039[_0xba0d('0x40')]=_0x8d18fb;if(_0x15aaec[_0xba0d('0x31')][_0xba0d('0x41')]){_0x40e15d[_0xba0d('0x42')]=[{'all':!![]}];}return db[_0xba0d('0x2b')][_0xba0d('0x43')](_0x40e15d);})[_0xba0d('0x23')](function(_0x148d40){_0x1d3039[_0xba0d('0x44')]=_0x148d40;return _0x1d3039;})[_0xba0d('0x23')](respondWithFilteredResult(_0x4520d0,_0x40e15d))[_0xba0d('0x45')](handleError(_0x4520d0,null));};exports[_0xba0d('0x46')]=function(_0xc088cc,_0x3a772a){var _0x990542={'raw':![],'where':{'id':_0xc088cc['params']['id']}},_0x15ccf6={};_0x15ccf6[_0xba0d('0x30')]=_[_0xba0d('0x32')](db[_0xba0d('0x2b')][_0xba0d('0x2c')]);_0x15ccf6[_0xba0d('0x31')]=_[_0xba0d('0x32')](_0xc088cc[_0xba0d('0x31')]);_0x15ccf6['filters']=_['intersection'](_0x15ccf6['model'],_0x15ccf6[_0xba0d('0x31')]);_0x990542[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x15ccf6[_0xba0d('0x30')],qs[_0xba0d('0x47')](_0xc088cc[_0xba0d('0x31')]['fields']));_0x990542[_0xba0d('0x34')]=_0x990542[_0xba0d('0x34')][_0xba0d('0x36')]?_0x990542[_0xba0d('0x34')]:_0x15ccf6[_0xba0d('0x30')];if(_0xc088cc[_0xba0d('0x31')][_0xba0d('0x41')]){_0x990542[_0xba0d('0x42')]=[{'all':!![]}];}_0x990542=_[_0xba0d('0x3c')]({},_0x990542,_0xc088cc['options']);return db['FreshdeskConfiguration']['find'](_0x990542)[_0xba0d('0x23')](handleEntityNotFound(_0x3a772a,null))[_0xba0d('0x23')](respondWithResult(_0x3a772a,null))[_0xba0d('0x45')](handleError(_0x3a772a,null));};exports[_0xba0d('0x48')]=function(_0x223d35,_0x2b31ba){return db[_0xba0d('0x2b')][_0xba0d('0x48')](_0x223d35[_0xba0d('0x49')],{})[_0xba0d('0x23')](respondWithResult(_0x2b31ba,0xc9))[_0xba0d('0x45')](handleError(_0x2b31ba,null));};exports[_0xba0d('0x22')]=function(_0x1a3b3a,_0x4edcef){if(_0x1a3b3a[_0xba0d('0x49')]['id']){delete _0x1a3b3a[_0xba0d('0x49')]['id'];}return db[_0xba0d('0x2b')][_0xba0d('0x4a')]({'where':{'id':_0x1a3b3a[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x4edcef,null))[_0xba0d('0x23')](saveUpdates(_0x1a3b3a['body'],null))[_0xba0d('0x23')](respondWithResult(_0x4edcef,null))[_0xba0d('0x45')](handleError(_0x4edcef,null));};exports[_0xba0d('0x24')]=function(_0xd83532,_0x1490a6){return db[_0xba0d('0x2b')][_0xba0d('0x4a')]({'where':{'id':_0xd83532['params']['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x1490a6,null))[_0xba0d('0x23')](removeEntity(_0x1490a6,null))[_0xba0d('0x45')](handleError(_0x1490a6,null));};exports[_0xba0d('0x4c')]=function(_0x1e66b6,_0x8a64e3,_0x36e5d8){var _0x506dd7={};var _0x1832ef={};var _0x33ccab;var _0x39acc1;return db[_0xba0d('0x2b')]['findOne']({'where':{'id':_0x1e66b6[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x8a64e3,null))[_0xba0d('0x23')](function(_0x247dee){if(_0x247dee){_0x33ccab=_0x247dee;_0x1832ef['model']=_[_0xba0d('0x32')](db[_0xba0d('0x4d')][_0xba0d('0x2c')]);_0x1832ef['query']=_['keys'](_0x1e66b6[_0xba0d('0x31')]);_0x1832ef[_0xba0d('0x33')]=_[_0xba0d('0x35')](_0x1832ef['model'],_0x1832ef[_0xba0d('0x31')]);_0x506dd7[_0xba0d('0x34')]=_['intersection'](_0x1832ef[_0xba0d('0x30')],qs[_0xba0d('0x47')](_0x1e66b6[_0xba0d('0x31')]['fields']));_0x506dd7[_0xba0d('0x34')]=_0x506dd7[_0xba0d('0x34')][_0xba0d('0x36')]?_0x506dd7[_0xba0d('0x34')]:_0x1832ef[_0xba0d('0x30')];_0x506dd7['order']=qs['sort'](_0x1e66b6[_0xba0d('0x31')][_0xba0d('0x39')]);_0x506dd7[_0xba0d('0x3f')]=qs['filters'](_[_0xba0d('0x3a')](_0x1e66b6[_0xba0d('0x31')],_0x1832ef[_0xba0d('0x33')]));if(_0x1e66b6[_0xba0d('0x31')][_0xba0d('0x3b')]){_0x506dd7[_0xba0d('0x3f')]=_[_0xba0d('0x3c')](_0x506dd7[_0xba0d('0x3f')],{'$or':_[_0xba0d('0x2a')](_0x506dd7[_0xba0d('0x34')],function(_0x1b7ab6){var _0x953f17={};_0x953f17[_0x1b7ab6]={'$like':'%'+_0x1e66b6['query'][_0xba0d('0x3b')]+'%'};return _0x953f17;})});}_0x506dd7=_[_0xba0d('0x3c')]({},_0x506dd7,_0x1e66b6[_0xba0d('0x3e')]);return _0x33ccab[_0xba0d('0x4c')](_0x506dd7);}})[_0xba0d('0x23')](function(_0x1e72df){if(_0x1e72df){_0x39acc1=_0x1e72df[_0xba0d('0x36')];if(!_0x1e66b6['query'][_0xba0d('0x37')](_0xba0d('0x38'))){_0x506dd7['limit']=qs[_0xba0d('0x1a')](_0x1e66b6['query'][_0xba0d('0x1a')]);_0x506dd7[_0xba0d('0x1b')]=qs['offset'](_0x1e66b6[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x33ccab[_0xba0d('0x4c')](_0x506dd7);}})['then'](function(_0x565676){if(_0x565676){return _0x565676?{'count':_0x39acc1,'rows':_0x565676}:null;}})[_0xba0d('0x23')](respondWithResult(_0x8a64e3,null))['catch'](handleError(_0x8a64e3,null));};exports[_0xba0d('0x4e')]=function(_0x27a2d6,_0x2d6b2c,_0x387300){var _0x366468={};var _0x3cb7d3={};var _0x210326;var _0x411c3f;return db[_0xba0d('0x2b')][_0xba0d('0x4f')]({'where':{'id':_0x27a2d6['params']['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x2d6b2c,null))[_0xba0d('0x23')](function(_0x211d9c){if(_0x211d9c){_0x210326=_0x211d9c;_0x3cb7d3['model']=_['keys'](db[_0xba0d('0x4d')]['rawAttributes']);_0x3cb7d3['query']=_[_0xba0d('0x32')](_0x27a2d6['query']);_0x3cb7d3['filters']=_[_0xba0d('0x35')](_0x3cb7d3[_0xba0d('0x30')],_0x3cb7d3['query']);_0x366468[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x3cb7d3[_0xba0d('0x30')],qs['fields'](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x47')]));_0x366468[_0xba0d('0x34')]=_0x366468[_0xba0d('0x34')]['length']?_0x366468['attributes']:_0x3cb7d3[_0xba0d('0x30')];_0x366468[_0xba0d('0x50')]=qs[_0xba0d('0x39')](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x39')]);_0x366468[_0xba0d('0x3f')]=qs[_0xba0d('0x33')](_[_0xba0d('0x3a')](_0x27a2d6[_0xba0d('0x31')],_0x3cb7d3[_0xba0d('0x33')]));if(_0x27a2d6['query']['filter']){_0x366468[_0xba0d('0x3f')]=_[_0xba0d('0x3c')](_0x366468[_0xba0d('0x3f')],{'$or':_[_0xba0d('0x2a')](_0x366468[_0xba0d('0x34')],function(_0x151081){var _0x346bf7={};_0x346bf7[_0x151081]={'$like':'%'+_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x346bf7;})});}_0x366468=_[_0xba0d('0x3c')]({},_0x366468,_0x27a2d6[_0xba0d('0x3e')]);return _0x210326[_0xba0d('0x4e')](_0x366468);}})[_0xba0d('0x23')](function(_0x37ea73){if(_0x37ea73){_0x411c3f=_0x37ea73['length'];if(!_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x366468['limit']=qs[_0xba0d('0x1a')](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x1a')]);_0x366468[_0xba0d('0x1b')]=qs[_0xba0d('0x1b')](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x210326[_0xba0d('0x4e')](_0x366468);}})[_0xba0d('0x23')](function(_0x164b7e){if(_0x164b7e){return _0x164b7e?{'count':_0x411c3f,'rows':_0x164b7e}:null;}})[_0xba0d('0x23')](respondWithResult(_0x2d6b2c,null))[_0xba0d('0x45')](handleError(_0x2d6b2c,null));};exports['getDescriptions']=function(_0x372bad,_0x3bf2df,_0x525cbe){var _0x34ce25={};var _0x2d9556={};var _0x2068a3;var _0xf01912;return db[_0xba0d('0x2b')][_0xba0d('0x4f')]({'where':{'id':_0x372bad[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x3bf2df,null))['then'](function(_0x442d51){if(_0x442d51){_0x2068a3=_0x442d51;_0x2d9556[_0xba0d('0x30')]=_[_0xba0d('0x32')](db[_0xba0d('0x4d')][_0xba0d('0x2c')]);_0x2d9556[_0xba0d('0x31')]=_['keys'](_0x372bad[_0xba0d('0x31')]);_0x2d9556[_0xba0d('0x33')]=_[_0xba0d('0x35')](_0x2d9556[_0xba0d('0x30')],_0x2d9556[_0xba0d('0x31')]);_0x34ce25['attributes']=_[_0xba0d('0x35')](_0x2d9556[_0xba0d('0x30')],qs['fields'](_0x372bad['query'][_0xba0d('0x47')]));_0x34ce25[_0xba0d('0x34')]=_0x34ce25[_0xba0d('0x34')]['length']?_0x34ce25[_0xba0d('0x34')]:_0x2d9556[_0xba0d('0x30')];_0x34ce25[_0xba0d('0x50')]=qs[_0xba0d('0x39')](_0x372bad[_0xba0d('0x31')][_0xba0d('0x39')]);_0x34ce25[_0xba0d('0x3f')]=qs['filters'](_['pick'](_0x372bad[_0xba0d('0x31')],_0x2d9556[_0xba0d('0x33')]));if(_0x372bad[_0xba0d('0x31')][_0xba0d('0x3b')]){_0x34ce25[_0xba0d('0x3f')]=_[_0xba0d('0x3c')](_0x34ce25[_0xba0d('0x3f')],{'$or':_[_0xba0d('0x2a')](_0x34ce25[_0xba0d('0x34')],function(_0x5457ba){var _0x2300b1={};_0x2300b1[_0x5457ba]={'$like':'%'+_0x372bad[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x2300b1;})});}_0x34ce25=_['merge']({},_0x34ce25,_0x372bad[_0xba0d('0x3e')]);return _0x2068a3[_0xba0d('0x51')](_0x34ce25);}})[_0xba0d('0x23')](function(_0x56b51e){if(_0x56b51e){_0xf01912=_0x56b51e[_0xba0d('0x36')];if(!_0x372bad[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x34ce25[_0xba0d('0x1a')]=qs[_0xba0d('0x1a')](_0x372bad[_0xba0d('0x31')][_0xba0d('0x1a')]);_0x34ce25[_0xba0d('0x1b')]=qs[_0xba0d('0x1b')](_0x372bad[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x2068a3['getDescriptions'](_0x34ce25);}})[_0xba0d('0x23')](function(_0x31c49a){if(_0x31c49a){return _0x31c49a?{'count':_0xf01912,'rows':_0x31c49a}:null;}})[_0xba0d('0x23')](respondWithResult(_0x3bf2df,null))[_0xba0d('0x45')](handleError(_0x3bf2df,null));};exports[_0xba0d('0x52')]=function(_0x39b7ea,_0x185446,_0x42c4c7){var _0x7c35ef={};var _0x398d15={};var _0x31d4cd;var _0x11aaf0;return db[_0xba0d('0x2b')][_0xba0d('0x4f')]({'where':{'id':_0x39b7ea[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x185446,null))[_0xba0d('0x23')](function(_0x232ef4){if(_0x232ef4){_0x31d4cd=_0x232ef4;_0x398d15[_0xba0d('0x30')]=_[_0xba0d('0x32')](db['Tag']['rawAttributes']);_0x398d15[_0xba0d('0x31')]=_[_0xba0d('0x32')](_0x39b7ea[_0xba0d('0x31')]);_0x398d15[_0xba0d('0x33')]=_[_0xba0d('0x35')](_0x398d15[_0xba0d('0x30')],_0x398d15['query']);_0x7c35ef[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x398d15['model'],qs['fields'](_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x47')]));_0x7c35ef['attributes']=_0x7c35ef[_0xba0d('0x34')]['length']?_0x7c35ef[_0xba0d('0x34')]:_0x398d15[_0xba0d('0x30')];_0x7c35ef[_0xba0d('0x50')]=qs[_0xba0d('0x39')](_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x39')]);_0x7c35ef[_0xba0d('0x3f')]=qs[_0xba0d('0x33')](_[_0xba0d('0x3a')](_0x39b7ea['query'],_0x398d15[_0xba0d('0x33')]));if(_0x39b7ea[_0xba0d('0x31')]['filter']){_0x7c35ef['where']=_[_0xba0d('0x3c')](_0x7c35ef['where'],{'$or':_[_0xba0d('0x2a')](_0x7c35ef['attributes'],function(_0x286fdc){var _0x59dc23={};_0x59dc23[_0x286fdc]={'$like':'%'+_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x59dc23;})});}_0x7c35ef=_[_0xba0d('0x3c')]({},_0x7c35ef,_0x39b7ea[_0xba0d('0x3e')]);return _0x31d4cd[_0xba0d('0x52')](_0x7c35ef);}})[_0xba0d('0x23')](function(_0x189628){if(_0x189628){_0x11aaf0=_0x189628[_0xba0d('0x36')];if(!_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x7c35ef['limit']=qs[_0xba0d('0x1a')](_0x39b7ea[_0xba0d('0x31')]['limit']);_0x7c35ef['offset']=qs[_0xba0d('0x1b')](_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x31d4cd[_0xba0d('0x52')](_0x7c35ef);}})[_0xba0d('0x23')](function(_0x3603e9){if(_0x3603e9){return _0x3603e9?{'count':_0x11aaf0,'rows':_0x3603e9}:null;}})[_0xba0d('0x23')](respondWithResult(_0x185446,null))[_0xba0d('0x45')](handleError(_0x185446,null));};exports[_0xba0d('0x53')]=function(_0x5bf844,_0xca2383,_0x3961a2){if(_0x5bf844[_0xba0d('0x49')]['id']){delete _0x5bf844[_0xba0d('0x49')]['id'];}return db['FreshdeskConfiguration'][_0xba0d('0x4f')]({'where':{'id':_0x5bf844[_0xba0d('0x4b')]['id']}})['then'](handleEntityNotFound(_0xca2383,null))[_0xba0d('0x23')](function(_0x5e84cb){if(_0x5e84cb){return _0x5e84cb['setTags'](_0x5bf844['body'][_0xba0d('0x54')]||[]);}return null;})[_0xba0d('0x23')](respondWithResult(_0xca2383,null))[_0xba0d('0x45')](handleError(_0xca2383,null));};
\ No newline at end of file
index 5a268aa..67dea2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe566=['rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x5abb9c,_0x32f2eb){var _0x33916e=function(_0x1f45ef){while(--_0x1f45ef){_0x5abb9c['push'](_0x5abb9c['shift']());}};_0x33916e(++_0x32f2eb);}(_0xe566,0x10b));var _0x6e56=function(_0xf70d3e,_0xee693e){_0xf70d3e=_0xf70d3e-0x0;var _0x3fd69e=_0xe566[_0xf70d3e];return _0x3fd69e;};'use strict';var _=require(_0x6e56('0x0'));var util=require(_0x6e56('0x1'));var logger=require(_0x6e56('0x2'))(_0x6e56('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6e56('0x4'));var fs=require('fs');var path=require(_0x6e56('0x5'));var rimraf=require(_0x6e56('0x6'));var config=require(_0x6e56('0x7'));var attributes=require(_0x6e56('0x8'));module[_0x6e56('0x9')]=function(_0x24eef7,_0x5a719c){return _0x24eef7[_0x6e56('0xa')](_0x6e56('0xb'),attributes,{'tableName':_0x6e56('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a61=['FreshdeskConfiguration','lodash','../../config/logger','api','moment','bluebird','request-promise','./intFreshdeskConfiguration.attributes','exports','define'];(function(_0x4b3e44,_0x58d7e6){var _0xc44d2=function(_0x155e42){while(--_0x155e42){_0x4b3e44['push'](_0x4b3e44['shift']());}};_0xc44d2(++_0x58d7e6);}(_0x1a61,0xb5));var _0x11a6=function(_0x1d7b59,_0x3c49e1){_0x1d7b59=_0x1d7b59-0x0;var _0x537e0c=_0x1a61[_0x1d7b59];return _0x537e0c;};'use strict';var _=require(_0x11a6('0x0'));var util=require('util');var logger=require(_0x11a6('0x1'))(_0x11a6('0x2'));var moment=require(_0x11a6('0x3'));var BPromise=require(_0x11a6('0x4'));var rp=require(_0x11a6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x11a6('0x6'));module[_0x11a6('0x7')]=function(_0x52aeae,_0x15a9e3){return _0x52aeae[_0x11a6('0x8')](_0x11a6('0x9'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4f5801..f128895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc648=['stringify','error','FreshdeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x32ca50,_0x1de287){var _0xfb9649=function(_0x41ef9e){while(--_0x41ef9e){_0x32ca50['push'](_0x32ca50['shift']());}};_0xfb9649(++_0x1de287);}(_0xc648,0x131));var _0x8c64=function(_0x11a0d8,_0x3f2d73){_0x11a0d8=_0x11a0d8-0x0;var _0x50c719=_0xc648[_0x11a0d8];return _0x50c719;};'use strict';var _=require(_0x8c64('0x0'));var util=require(_0x8c64('0x1'));var moment=require('moment');var BPromise=require(_0x8c64('0x2'));var rs=require(_0x8c64('0x3'));var fs=require('fs');var Redis=require(_0x8c64('0x4'));var db=require(_0x8c64('0x5'))['db'];var utils=require(_0x8c64('0x6'));var logger=require(_0x8c64('0x7'))(_0x8c64('0x8'));var config=require(_0x8c64('0x9'));var jayson=require(_0x8c64('0xa'));var client=jayson['client'][_0x8c64('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5bd408,_0x3ecac3,_0x5d5d34){return new BPromise(function(_0x403c99,_0x5df10f){return client[_0x8c64('0xc')](_0x5bd408,_0x5d5d34)[_0x8c64('0xd')](function(_0x4bab8a){logger[_0x8c64('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x3ecac3,_0x8c64('0xf'));logger['debug'](_0x8c64('0x10'),_0x3ecac3,_0x8c64('0xf'),JSON[_0x8c64('0x11')](_0x4bab8a));if(_0x4bab8a[_0x8c64('0x12')]){if(_0x4bab8a[_0x8c64('0x12')]['code']===0x1f4){logger[_0x8c64('0x12')](_0x8c64('0x13'),_0x3ecac3,_0x4bab8a[_0x8c64('0x12')][_0x8c64('0x14')]);return _0x5df10f(_0x4bab8a[_0x8c64('0x12')][_0x8c64('0x14')]);}logger[_0x8c64('0x12')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x3ecac3,_0x4bab8a[_0x8c64('0x12')][_0x8c64('0x14')]);return _0x403c99(_0x4bab8a[_0x8c64('0x12')]['message']);}else{logger[_0x8c64('0xe')](_0x8c64('0x13'),_0x3ecac3,'request\x20sent');_0x403c99(_0x4bab8a[_0x8c64('0x15')][_0x8c64('0x14')]);}})[_0x8c64('0x16')](function(_0x54753c){logger[_0x8c64('0x12')](_0x8c64('0x13'),_0x3ecac3,_0x54753c);_0x5df10f(_0x54753c);});});}
\ No newline at end of file
+var _0xb0df=['request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x3d0289,_0x4bd2ec){var _0x339f04=function(_0x495d2d){while(--_0x495d2d){_0x3d0289['push'](_0x3d0289['shift']());}};_0x339f04(++_0x4bd2ec);}(_0xb0df,0xa9));var _0xfb0d=function(_0x45346d,_0xffd56b){_0x45346d=_0x45346d-0x0;var _0x5ce7ca=_0xb0df[_0x45346d];return _0x5ce7ca;};'use strict';var _=require(_0xfb0d('0x0'));var util=require(_0xfb0d('0x1'));var moment=require(_0xfb0d('0x2'));var BPromise=require('bluebird');var rs=require(_0xfb0d('0x3'));var fs=require('fs');var Redis=require(_0xfb0d('0x4'));var db=require(_0xfb0d('0x5'))['db'];var utils=require(_0xfb0d('0x6'));var logger=require(_0xfb0d('0x7'))('rpc');var config=require(_0xfb0d('0x8'));var jayson=require(_0xfb0d('0x9'));var client=jayson[_0xfb0d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x596522,_0x3323e4,_0x32008b){return new BPromise(function(_0xae53b0,_0x459638){return client[_0xfb0d('0xb')](_0x596522,_0x32008b)[_0xfb0d('0xc')](function(_0x165a82){logger[_0xfb0d('0xd')](_0xfb0d('0xe'),_0x3323e4,_0xfb0d('0xf'));logger[_0xfb0d('0x10')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x3323e4,'request\x20sent',JSON[_0xfb0d('0x11')](_0x165a82));if(_0x165a82[_0xfb0d('0x12')]){if(_0x165a82['error'][_0xfb0d('0x13')]===0x1f4){logger[_0xfb0d('0x12')](_0xfb0d('0xe'),_0x3323e4,_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);return _0x459638(_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);}logger[_0xfb0d('0x12')](_0xfb0d('0xe'),_0x3323e4,_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);return _0xae53b0(_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);}else{logger['info'](_0xfb0d('0xe'),_0x3323e4,_0xfb0d('0xf'));_0xae53b0(_0x165a82[_0xfb0d('0x15')]['message']);}})[_0xfb0d('0x16')](function(_0x2ff6b2){logger['error'](_0xfb0d('0xe'),_0x3323e4,_0x2ff6b2);_0x459638(_0x2ff6b2);});});}
\ No newline at end of file
index 7e2c447..cecdac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d9=['../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports','multer','path','Router','fs-extra','../../components/auth/service'];(function(_0x7ff50b,_0x399dc0){var _0x43e570=function(_0x16b092){while(--_0x16b092){_0x7ff50b['push'](_0x7ff50b['shift']());}};_0x43e570(++_0x399dc0);}(_0x29d9,0x163));var _0x929d=function(_0x4fc14e,_0x3e8fe8){_0x4fc14e=_0x4fc14e-0x0;var _0x1eb64d=_0x29d9[_0x4fc14e];return _0x1eb64d;};'use strict';var multer=require(_0x929d('0x0'));var util=require('util');var path=require(_0x929d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x929d('0x2')]();var fs_extra=require(_0x929d('0x3'));var auth=require(_0x929d('0x4'));var interaction=require(_0x929d('0x5'));var config=require(_0x929d('0x6'));var controller=require(_0x929d('0x7'));router[_0x929d('0x8')]('/',auth[_0x929d('0x9')](),controller['index']);router['get'](_0x929d('0xa'),auth[_0x929d('0x9')](),controller[_0x929d('0xb')]);router[_0x929d('0xc')]('/',auth[_0x929d('0x9')](),controller[_0x929d('0xd')]);router[_0x929d('0xe')](_0x929d('0xa'),auth[_0x929d('0x9')](),controller[_0x929d('0xf')]);router['delete']('/:id',auth[_0x929d('0x9')](),controller[_0x929d('0x10')]);module[_0x929d('0x11')]=router;
\ No newline at end of file
+var _0x5feb=['destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','index','get','/:id','show','post','create','put','isAuthenticated','update','delete'];(function(_0x197a02,_0x3b357a){var _0x3d9c8b=function(_0x57188d){while(--_0x57188d){_0x197a02['push'](_0x197a02['shift']());}};_0x3d9c8b(++_0x3b357a);}(_0x5feb,0x192));var _0xb5fe=function(_0x37e7a4,_0xb7a496){_0x37e7a4=_0x37e7a4-0x0;var _0x269b2a=_0x5feb[_0x37e7a4];return _0x269b2a;};'use strict';var multer=require(_0xb5fe('0x0'));var util=require('util');var path=require(_0xb5fe('0x1'));var timeout=require(_0xb5fe('0x2'));var express=require(_0xb5fe('0x3'));var router=express['Router']();var fs_extra=require(_0xb5fe('0x4'));var auth=require(_0xb5fe('0x5'));var interaction=require(_0xb5fe('0x6'));var config=require('../../config/environment');var controller=require(_0xb5fe('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xb5fe('0x8')]);router[_0xb5fe('0x9')](_0xb5fe('0xa'),auth['isAuthenticated'](),controller[_0xb5fe('0xb')]);router[_0xb5fe('0xc')]('/',auth['isAuthenticated'](),controller[_0xb5fe('0xd')]);router[_0xb5fe('0xe')](_0xb5fe('0xa'),auth[_0xb5fe('0xf')](),controller[_0xb5fe('0x10')]);router[_0xb5fe('0x11')](_0xb5fe('0xa'),auth[_0xb5fe('0xf')](),controller[_0xb5fe('0x12')]);module[_0xb5fe('0x13')]=router;
\ No newline at end of file
index 06e1317..ed25c12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fde=['picklist','STRING','variable','BOOLEAN','sequelize','exports','ENUM','string','keyValue'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x2fde,0xc1));var _0xe2fd=function(_0x431388,_0x236094){_0x431388=_0x431388-0x0;var _0x2beee2=_0x2fde[_0x431388];return _0x2beee2;};'use strict';var Sequelize=require(_0xe2fd('0x0'));module[_0xe2fd('0x1')]={'type':{'type':Sequelize[_0xe2fd('0x2')](_0xe2fd('0x3'),'variable','customVariable',_0xe2fd('0x4'),_0xe2fd('0x5')),'defaultValue':_0xe2fd('0x3')},'content':{'type':Sequelize[_0xe2fd('0x6')]},'key':{'type':Sequelize[_0xe2fd('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xe2fd('0x3'),_0xe2fd('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0xe2fd('0x6')]},'idField':{'type':Sequelize[_0xe2fd('0x6')]},'nameField':{'type':Sequelize[_0xe2fd('0x6')]},'customField':{'type':Sequelize[_0xe2fd('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd997=['variable','customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x1c7605,_0x143bd3){var _0xa8dd18=function(_0x23b76f){while(--_0x23b76f){_0x1c7605['push'](_0x1c7605['shift']());}};_0xa8dd18(++_0x143bd3);}(_0xd997,0x1ac));var _0x7d99=function(_0xb59b70,_0x1336d4){_0xb59b70=_0xb59b70-0x0;var _0x21296c=_0xd997[_0xb59b70];return _0x21296c;};'use strict';var Sequelize=require(_0x7d99('0x0'));module[_0x7d99('0x1')]={'type':{'type':Sequelize[_0x7d99('0x2')](_0x7d99('0x3'),_0x7d99('0x4'),_0x7d99('0x5'),_0x7d99('0x6'),_0x7d99('0x7')),'defaultValue':_0x7d99('0x3')},'content':{'type':Sequelize[_0x7d99('0x8')]},'key':{'type':Sequelize[_0x7d99('0x8')]},'keyType':{'type':Sequelize[_0x7d99('0x2')](_0x7d99('0x3'),_0x7d99('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x7d99('0x8')]},'idField':{'type':Sequelize[_0x7d99('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7d99('0x8')]}};
\ No newline at end of file
index c9e9283..6c8c651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765e=['sort','pick','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','rawAttributes','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','json','apply','update','then','destroy','error','stack','index','map','FreshdeskField','fieldName','key','model','name','query','filters','intersection','attributes','fields','length','order'];(function(_0x455adc,_0x512901){var _0x2b05d1=function(_0x41d18b){while(--_0x41d18b){_0x455adc['push'](_0x455adc['shift']());}};_0x2b05d1(++_0x512901);}(_0x765e,0x131));var _0xe765=function(_0x27d56d,_0x5b629a){_0x27d56d=_0x27d56d-0x0;var _0x5d23ed=_0x765e[_0x27d56d];return _0x5d23ed;};'use strict';var emlformat=require(_0xe765('0x0'));var rimraf=require(_0xe765('0x1'));var zipdir=require(_0xe765('0x2'));var jsonpatch=require(_0xe765('0x3'));var rp=require(_0xe765('0x4'));var moment=require(_0xe765('0x5'));var BPromise=require(_0xe765('0x6'));var Mustache=require(_0xe765('0x7'));var util=require(_0xe765('0x8'));var path=require(_0xe765('0x9'));var sox=require(_0xe765('0xa'));var csv=require(_0xe765('0xb'));var ejs=require(_0xe765('0xc'));var fs=require('fs');var fs_extra=require(_0xe765('0xd'));var _=require(_0xe765('0xe'));var squel=require('squel');var crypto=require(_0xe765('0xf'));var jsforce=require(_0xe765('0x10'));var deskjs=require(_0xe765('0x11'));var toCsv=require(_0xe765('0xb'));var querystring=require(_0xe765('0x12'));var Papa=require(_0xe765('0x13'));var Redis=require(_0xe765('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xe765('0x15'));var as=require(_0xe765('0x16'));var hardwareService=require(_0xe765('0x17'));var logger=require('../../config/logger')(_0xe765('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe765('0x19'))['db'];function respondWithStatusCode(_0x18177f,_0x9411a0){_0x9411a0=_0x9411a0||0xcc;return function(_0x27456b){if(_0x27456b){return _0x18177f[_0xe765('0x1a')](_0x9411a0);}return _0x18177f['status'](_0x9411a0)[_0xe765('0x1b')]();};}function respondWithResult(_0x3a26d8,_0x395312){_0x395312=_0x395312||0xc8;return function(_0x58dc37){if(_0x58dc37){return _0x3a26d8[_0xe765('0x1c')](_0x395312)['json'](_0x58dc37);}};}function respondWithFilteredResult(_0x50e2ab,_0x2f673b){return function(_0x1b1cfe){if(_0x1b1cfe){var _0x3c887b=typeof _0x2f673b['offset']===_0xe765('0x1d')&&typeof _0x2f673b[_0xe765('0x1e')]===_0xe765('0x1d');var _0x1db3ca=_0x1b1cfe[_0xe765('0x1f')];var _0xf93371=_0x3c887b?0x0:_0x2f673b[_0xe765('0x20')];var _0x2a95a9=_0x3c887b?_0x1b1cfe[_0xe765('0x1f')]:_0x2f673b['offset']+_0x2f673b[_0xe765('0x1e')];var _0x56905c;if(_0x2a95a9>=_0x1db3ca){_0x2a95a9=_0x1db3ca;_0x56905c=0xc8;}else{_0x56905c=0xce;}_0x50e2ab[_0xe765('0x1c')](_0x56905c);return _0x50e2ab[_0xe765('0x21')]('Content-Range',_0xf93371+'-'+_0x2a95a9+'/'+_0x1db3ca)[_0xe765('0x22')](_0x1b1cfe);}return null;};}function patchUpdates(_0x59118f){return function(_0x1c73c8){try{jsonpatch[_0xe765('0x23')](_0x1c73c8,_0x59118f,!![]);}catch(_0x1efb96){return BPromise['reject'](_0x1efb96);}return _0x1c73c8['save']();};}function saveUpdates(_0x4b789b,_0x1c6de4){return function(_0x2a4427){if(_0x2a4427){return _0x2a4427[_0xe765('0x24')](_0x4b789b)[_0xe765('0x25')](function(_0x54b59c){return _0x54b59c;});}return null;};}function removeEntity(_0x50cfcb,_0x18ba77){return function(_0x2e2a34){if(_0x2e2a34){return _0x2e2a34[_0xe765('0x26')]()[_0xe765('0x25')](function(){_0x50cfcb[_0xe765('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1aacbc,_0x5464b4){return function(_0x2b1f66){if(!_0x2b1f66){_0x1aacbc[_0xe765('0x1a')](0x194);}return _0x2b1f66;};}function handleError(_0xd877f3,_0x357f4e){_0x357f4e=_0x357f4e||0x1f4;return function(_0x40492d){logger[_0xe765('0x27')](_0x40492d[_0xe765('0x28')]);if(_0x40492d['name']){delete _0x40492d['name'];}_0xd877f3[_0xe765('0x1c')](_0x357f4e)['send'](_0x40492d);};}exports[_0xe765('0x29')]=function(_0x3f7493,_0x2fcbc9){var _0x64ffd4={},_0x1a8c01={},_0x4fce2c={'count':0x0,'rows':[]};var _0x43349b=_[_0xe765('0x2a')](db[_0xe765('0x2b')]['rawAttributes'],function(_0x5947c1){return{'name':_0x5947c1[_0xe765('0x2c')],'type':_0x5947c1['type'][_0xe765('0x2d')]};});_0x1a8c01[_0xe765('0x2e')]=_[_0xe765('0x2a')](_0x43349b,_0xe765('0x2f'));_0x1a8c01[_0xe765('0x30')]=_['keys'](_0x3f7493['query']);_0x1a8c01[_0xe765('0x31')]=_[_0xe765('0x32')](_0x1a8c01[_0xe765('0x2e')],_0x1a8c01[_0xe765('0x30')]);_0x64ffd4[_0xe765('0x33')]=_['intersection'](_0x1a8c01['model'],qs[_0xe765('0x34')](_0x3f7493['query'][_0xe765('0x34')]));_0x64ffd4[_0xe765('0x33')]=_0x64ffd4[_0xe765('0x33')][_0xe765('0x35')]?_0x64ffd4[_0xe765('0x33')]:_0x1a8c01[_0xe765('0x2e')];if(!_0x3f7493[_0xe765('0x30')]['hasOwnProperty']('nolimit')){_0x64ffd4['limit']=qs[_0xe765('0x1e')](_0x3f7493[_0xe765('0x30')][_0xe765('0x1e')]);_0x64ffd4[_0xe765('0x20')]=qs['offset'](_0x3f7493[_0xe765('0x30')][_0xe765('0x20')]);}_0x64ffd4[_0xe765('0x36')]=qs[_0xe765('0x37')](_0x3f7493['query'][_0xe765('0x37')]);_0x64ffd4['where']=qs[_0xe765('0x31')](_[_0xe765('0x38')](_0x3f7493[_0xe765('0x30')],_0x1a8c01[_0xe765('0x31')]),_0x43349b);if(_0x3f7493[_0xe765('0x30')][_0xe765('0x39')]){_0x64ffd4[_0xe765('0x3a')]=_[_0xe765('0x3b')](_0x64ffd4[_0xe765('0x3a')],{'$or':_[_0xe765('0x2a')](_0x43349b,function(_0x5e21ae){if(_0x5e21ae[_0xe765('0x3c')]!==_0xe765('0x3d')){var _0x11b459={};_0x11b459[_0x5e21ae['name']]={'$like':'%'+_0x3f7493['query']['filter']+'%'};return _0x11b459;}})});}_0x64ffd4=_[_0xe765('0x3b')]({},_0x64ffd4,_0x3f7493['options']);var _0x1f0db1={'where':_0x64ffd4[_0xe765('0x3a')]};return db[_0xe765('0x2b')][_0xe765('0x1f')](_0x1f0db1)['then'](function(_0x363f59){_0x4fce2c[_0xe765('0x1f')]=_0x363f59;if(_0x3f7493[_0xe765('0x30')][_0xe765('0x3e')]){_0x64ffd4[_0xe765('0x3f')]=[{'all':!![]}];}return db[_0xe765('0x2b')][_0xe765('0x40')](_0x64ffd4);})[_0xe765('0x25')](function(_0xb92246){_0x4fce2c[_0xe765('0x41')]=_0xb92246;return _0x4fce2c;})['then'](respondWithFilteredResult(_0x2fcbc9,_0x64ffd4))[_0xe765('0x42')](handleError(_0x2fcbc9,null));};exports['show']=function(_0x1248ea,_0x1d2b24){var _0x4d2814={'raw':!![],'where':{'id':_0x1248ea['params']['id']}},_0x3977e5={};_0x3977e5['model']=_['keys'](db[_0xe765('0x2b')][_0xe765('0x43')]);_0x3977e5[_0xe765('0x30')]=_['keys'](_0x1248ea[_0xe765('0x30')]);_0x3977e5[_0xe765('0x31')]=_[_0xe765('0x32')](_0x3977e5[_0xe765('0x2e')],_0x3977e5[_0xe765('0x30')]);_0x4d2814[_0xe765('0x33')]=_[_0xe765('0x32')](_0x3977e5[_0xe765('0x2e')],qs[_0xe765('0x34')](_0x1248ea['query'][_0xe765('0x34')]));_0x4d2814['attributes']=_0x4d2814['attributes'][_0xe765('0x35')]?_0x4d2814['attributes']:_0x3977e5[_0xe765('0x2e')];if(_0x1248ea[_0xe765('0x30')][_0xe765('0x3e')]){_0x4d2814['include']=[{'all':!![]}];}_0x4d2814=_[_0xe765('0x3b')]({},_0x4d2814,_0x1248ea['options']);return db[_0xe765('0x2b')][_0xe765('0x44')](_0x4d2814)[_0xe765('0x25')](handleEntityNotFound(_0x1d2b24,null))['then'](respondWithResult(_0x1d2b24,null))[_0xe765('0x42')](handleError(_0x1d2b24,null));};exports[_0xe765('0x45')]=function(_0x115f16,_0x2d360e){return db['FreshdeskField']['create'](_0x115f16['body'],{})[_0xe765('0x25')](respondWithResult(_0x2d360e,0xc9))[_0xe765('0x42')](handleError(_0x2d360e,null));};exports[_0xe765('0x24')]=function(_0x58310d,_0x14834c){if(_0x58310d['body']['id']){delete _0x58310d[_0xe765('0x46')]['id'];}return db[_0xe765('0x2b')][_0xe765('0x44')]({'where':{'id':_0x58310d[_0xe765('0x47')]['id']}})[_0xe765('0x25')](handleEntityNotFound(_0x14834c,null))[_0xe765('0x25')](saveUpdates(_0x58310d['body'],null))[_0xe765('0x25')](respondWithResult(_0x14834c,null))[_0xe765('0x42')](handleError(_0x14834c,null));};exports[_0xe765('0x26')]=function(_0x1214a8,_0x14c3b5){return db[_0xe765('0x2b')]['find']({'where':{'id':_0x1214a8['params']['id']}})[_0xe765('0x25')](handleEntityNotFound(_0x14c3b5,null))[_0xe765('0x25')](removeEntity(_0x14c3b5,null))[_0xe765('0x42')](handleError(_0x14c3b5,null));};
\ No newline at end of file
+var _0x6b20=['../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','FreshdeskField','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','includeAll','findAll','rows','catch','show','params','include','options','find','create','update','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse'];(function(_0x877609,_0x5e9082){var _0x3d2f0c=function(_0xf743b0){while(--_0xf743b0){_0x877609['push'](_0x877609['shift']());}};_0x3d2f0c(++_0x5e9082);}(_0x6b20,0xd1));var _0x06b2=function(_0xd80479,_0x42764e){_0xd80479=_0xd80479-0x0;var _0xa4fd1f=_0x6b20[_0xd80479];return _0xa4fd1f;};'use strict';var emlformat=require(_0x06b2('0x0'));var rimraf=require(_0x06b2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x06b2('0x2'));var rp=require('request-promise');var moment=require(_0x06b2('0x3'));var BPromise=require(_0x06b2('0x4'));var Mustache=require(_0x06b2('0x5'));var util=require('util');var path=require(_0x06b2('0x6'));var sox=require(_0x06b2('0x7'));var csv=require(_0x06b2('0x8'));var ejs=require(_0x06b2('0x9'));var fs=require('fs');var fs_extra=require(_0x06b2('0xa'));var _=require(_0x06b2('0xb'));var squel=require(_0x06b2('0xc'));var crypto=require('crypto');var jsforce=require(_0x06b2('0xd'));var deskjs=require(_0x06b2('0xe'));var toCsv=require(_0x06b2('0x8'));var querystring=require('querystring');var Papa=require(_0x06b2('0xf'));var Redis=require('ioredis');var authService=require(_0x06b2('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x06b2('0x11'));var logger=require(_0x06b2('0x12'))('api');var utils=require(_0x06b2('0x13'));var config=require(_0x06b2('0x14'));var licenseUtil=require(_0x06b2('0x15'));var db=require(_0x06b2('0x16'))['db'];function respondWithStatusCode(_0x44a9b4,_0x810a12){_0x810a12=_0x810a12||0xcc;return function(_0x3039c9){if(_0x3039c9){return _0x44a9b4[_0x06b2('0x17')](_0x810a12);}return _0x44a9b4[_0x06b2('0x18')](_0x810a12)[_0x06b2('0x19')]();};}function respondWithResult(_0xa81f11,_0x2822e9){_0x2822e9=_0x2822e9||0xc8;return function(_0x26faee){if(_0x26faee){return _0xa81f11['status'](_0x2822e9)[_0x06b2('0x1a')](_0x26faee);}};}function respondWithFilteredResult(_0xaee98c,_0x47496c){return function(_0x3830e9){if(_0x3830e9){var _0xef0466=typeof _0x47496c[_0x06b2('0x1b')]==='undefined'&&typeof _0x47496c[_0x06b2('0x1c')]===_0x06b2('0x1d');var _0x525945=_0x3830e9[_0x06b2('0x1e')];var _0x594b48=_0xef0466?0x0:_0x47496c['offset'];var _0x192270=_0xef0466?_0x3830e9[_0x06b2('0x1e')]:_0x47496c[_0x06b2('0x1b')]+_0x47496c[_0x06b2('0x1c')];var _0x4c4e21;if(_0x192270>=_0x525945){_0x192270=_0x525945;_0x4c4e21=0xc8;}else{_0x4c4e21=0xce;}_0xaee98c[_0x06b2('0x18')](_0x4c4e21);return _0xaee98c[_0x06b2('0x1f')](_0x06b2('0x20'),_0x594b48+'-'+_0x192270+'/'+_0x525945)[_0x06b2('0x1a')](_0x3830e9);}return null;};}function patchUpdates(_0xe28985){return function(_0x368ad8){try{jsonpatch[_0x06b2('0x21')](_0x368ad8,_0xe28985,!![]);}catch(_0x5ca622){return BPromise[_0x06b2('0x22')](_0x5ca622);}return _0x368ad8[_0x06b2('0x23')]();};}function saveUpdates(_0xb05f65,_0x208384){return function(_0x4e2a4c){if(_0x4e2a4c){return _0x4e2a4c['update'](_0xb05f65)[_0x06b2('0x24')](function(_0xb5231e){return _0xb5231e;});}return null;};}function removeEntity(_0x4fc95f,_0x39659f){return function(_0x5e40f2){if(_0x5e40f2){return _0x5e40f2[_0x06b2('0x25')]()[_0x06b2('0x24')](function(){_0x4fc95f[_0x06b2('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4382ce,_0x306ce){return function(_0xc65820){if(!_0xc65820){_0x4382ce[_0x06b2('0x17')](0x194);}return _0xc65820;};}function handleError(_0x1173fc,_0x4f5e90){_0x4f5e90=_0x4f5e90||0x1f4;return function(_0xbb00ea){logger[_0x06b2('0x26')](_0xbb00ea[_0x06b2('0x27')]);if(_0xbb00ea[_0x06b2('0x28')]){delete _0xbb00ea[_0x06b2('0x28')];}_0x1173fc[_0x06b2('0x18')](_0x4f5e90)['send'](_0xbb00ea);};}exports[_0x06b2('0x29')]=function(_0x2a3228,_0x2720fa){var _0x13c0eb={},_0x1f02d8={},_0x1bfaa9={'count':0x0,'rows':[]};var _0x3668bb=_['map'](db[_0x06b2('0x2a')][_0x06b2('0x2b')],function(_0x1637c2){return{'name':_0x1637c2[_0x06b2('0x2c')],'type':_0x1637c2[_0x06b2('0x2d')][_0x06b2('0x2e')]};});_0x1f02d8[_0x06b2('0x2f')]=_[_0x06b2('0x30')](_0x3668bb,'name');_0x1f02d8[_0x06b2('0x31')]=_[_0x06b2('0x32')](_0x2a3228[_0x06b2('0x31')]);_0x1f02d8[_0x06b2('0x33')]=_[_0x06b2('0x34')](_0x1f02d8[_0x06b2('0x2f')],_0x1f02d8[_0x06b2('0x31')]);_0x13c0eb['attributes']=_['intersection'](_0x1f02d8[_0x06b2('0x2f')],qs[_0x06b2('0x35')](_0x2a3228[_0x06b2('0x31')]['fields']));_0x13c0eb[_0x06b2('0x36')]=_0x13c0eb[_0x06b2('0x36')][_0x06b2('0x37')]?_0x13c0eb[_0x06b2('0x36')]:_0x1f02d8[_0x06b2('0x2f')];if(!_0x2a3228[_0x06b2('0x31')]['hasOwnProperty'](_0x06b2('0x38'))){_0x13c0eb[_0x06b2('0x1c')]=qs[_0x06b2('0x1c')](_0x2a3228['query'][_0x06b2('0x1c')]);_0x13c0eb[_0x06b2('0x1b')]=qs['offset'](_0x2a3228[_0x06b2('0x31')][_0x06b2('0x1b')]);}_0x13c0eb[_0x06b2('0x39')]=qs[_0x06b2('0x3a')](_0x2a3228[_0x06b2('0x31')][_0x06b2('0x3a')]);_0x13c0eb[_0x06b2('0x3b')]=qs[_0x06b2('0x33')](_[_0x06b2('0x3c')](_0x2a3228[_0x06b2('0x31')],_0x1f02d8[_0x06b2('0x33')]),_0x3668bb);if(_0x2a3228[_0x06b2('0x31')]['filter']){_0x13c0eb[_0x06b2('0x3b')]=_['merge'](_0x13c0eb['where'],{'$or':_[_0x06b2('0x30')](_0x3668bb,function(_0x4e92e0){if(_0x4e92e0[_0x06b2('0x2d')]!=='VIRTUAL'){var _0x35e29c={};_0x35e29c[_0x4e92e0[_0x06b2('0x28')]]={'$like':'%'+_0x2a3228[_0x06b2('0x31')][_0x06b2('0x3d')]+'%'};return _0x35e29c;}})});}_0x13c0eb=_[_0x06b2('0x3e')]({},_0x13c0eb,_0x2a3228['options']);var _0x404eab={'where':_0x13c0eb[_0x06b2('0x3b')]};return db[_0x06b2('0x2a')][_0x06b2('0x1e')](_0x404eab)[_0x06b2('0x24')](function(_0x39fd60){_0x1bfaa9['count']=_0x39fd60;if(_0x2a3228[_0x06b2('0x31')][_0x06b2('0x3f')]){_0x13c0eb['include']=[{'all':!![]}];}return db['FreshdeskField'][_0x06b2('0x40')](_0x13c0eb);})[_0x06b2('0x24')](function(_0x286c9b){_0x1bfaa9[_0x06b2('0x41')]=_0x286c9b;return _0x1bfaa9;})[_0x06b2('0x24')](respondWithFilteredResult(_0x2720fa,_0x13c0eb))[_0x06b2('0x42')](handleError(_0x2720fa,null));};exports[_0x06b2('0x43')]=function(_0x2ff968,_0x2e2a80){var _0x117bf4={'raw':!![],'where':{'id':_0x2ff968[_0x06b2('0x44')]['id']}},_0x1d7750={};_0x1d7750[_0x06b2('0x2f')]=_[_0x06b2('0x32')](db[_0x06b2('0x2a')][_0x06b2('0x2b')]);_0x1d7750[_0x06b2('0x31')]=_[_0x06b2('0x32')](_0x2ff968[_0x06b2('0x31')]);_0x1d7750['filters']=_[_0x06b2('0x34')](_0x1d7750[_0x06b2('0x2f')],_0x1d7750[_0x06b2('0x31')]);_0x117bf4[_0x06b2('0x36')]=_['intersection'](_0x1d7750[_0x06b2('0x2f')],qs[_0x06b2('0x35')](_0x2ff968['query'][_0x06b2('0x35')]));_0x117bf4[_0x06b2('0x36')]=_0x117bf4['attributes'][_0x06b2('0x37')]?_0x117bf4[_0x06b2('0x36')]:_0x1d7750['model'];if(_0x2ff968['query']['includeAll']){_0x117bf4[_0x06b2('0x45')]=[{'all':!![]}];}_0x117bf4=_[_0x06b2('0x3e')]({},_0x117bf4,_0x2ff968[_0x06b2('0x46')]);return db[_0x06b2('0x2a')][_0x06b2('0x47')](_0x117bf4)['then'](handleEntityNotFound(_0x2e2a80,null))['then'](respondWithResult(_0x2e2a80,null))[_0x06b2('0x42')](handleError(_0x2e2a80,null));};exports[_0x06b2('0x48')]=function(_0x979759,_0x1f4d89){return db[_0x06b2('0x2a')][_0x06b2('0x48')](_0x979759['body'],{})[_0x06b2('0x24')](respondWithResult(_0x1f4d89,0xc9))[_0x06b2('0x42')](handleError(_0x1f4d89,null));};exports[_0x06b2('0x49')]=function(_0x33f72e,_0x146c5c){if(_0x33f72e[_0x06b2('0x4a')]['id']){delete _0x33f72e['body']['id'];}return db[_0x06b2('0x2a')][_0x06b2('0x47')]({'where':{'id':_0x33f72e[_0x06b2('0x44')]['id']}})[_0x06b2('0x24')](handleEntityNotFound(_0x146c5c,null))['then'](saveUpdates(_0x33f72e[_0x06b2('0x4a')],null))[_0x06b2('0x24')](respondWithResult(_0x146c5c,null))[_0x06b2('0x42')](handleError(_0x146c5c,null));};exports[_0x06b2('0x25')]=function(_0x546c9e,_0x346f04){return db[_0x06b2('0x2a')][_0x06b2('0x47')]({'where':{'id':_0x546c9e[_0x06b2('0x44')]['id']}})[_0x06b2('0x24')](handleEntityNotFound(_0x346f04,null))[_0x06b2('0x24')](removeEntity(_0x346f04,null))[_0x06b2('0x42')](handleError(_0x346f04,null));};
\ No newline at end of file
index 7d3ac88..ea52acf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da1=['moment','bluebird','path','../../config/environment','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','api'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x5da1,0xbf));var _0x15da=function(_0x15dc0e,_0x20d1df){_0x15dc0e=_0x15dc0e-0x0;var _0x11eb57=_0x5da1[_0x15dc0e];return _0x11eb57;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x15da('0x0'));var moment=require(_0x15da('0x1'));var BPromise=require(_0x15da('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x15da('0x3'));var rimraf=require('rimraf');var config=require(_0x15da('0x4'));var attributes=require(_0x15da('0x5'));module['exports']=function(_0x261900,_0x4054bd){return _0x261900[_0x15da('0x6')](_0x15da('0x7'),attributes,{'tableName':_0x15da('0x8'),'paranoid':![],'indexes':[{'name':_0x15da('0x9'),'fields':[_0x15da('0xa'),_0x15da('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd65=['exports','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes'];(function(_0x298d16,_0x525964){var _0x471ff7=function(_0x5d313a){while(--_0x5d313a){_0x298d16['push'](_0x298d16['shift']());}};_0x471ff7(++_0x525964);}(_0xfd65,0x13d));var _0x5fd6=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0xfd65[_0x9c2427];return _0x51984f;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5fd6('0x0'));var moment=require(_0x5fd6('0x1'));var BPromise=require('bluebird');var rp=require(_0x5fd6('0x2'));var fs=require('fs');var path=require(_0x5fd6('0x3'));var rimraf=require(_0x5fd6('0x4'));var config=require(_0x5fd6('0x5'));var attributes=require(_0x5fd6('0x6'));module[_0x5fd6('0x7')]=function(_0x2daf43,_0x4865ee){return _0x2daf43['define'](_0x5fd6('0x8'),attributes,{'tableName':_0x5fd6('0x9'),'paranoid':![],'indexes':[{'name':_0x5fd6('0xa'),'fields':[_0x5fd6('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index bd58201..8fb47fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bb3=['../../config/environment','jayson/promise','client','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc'];(function(_0x7868fc,_0x3730cf){var _0x364665=function(_0x1a04eb){while(--_0x1a04eb){_0x7868fc['push'](_0x7868fc['shift']());}};_0x364665(++_0x3730cf);}(_0x2bb3,0x12d));var _0x32bb=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0x2bb3[_0x468b0f];return _0x3e74d9;};'use strict';var _=require(_0x32bb('0x0'));var util=require(_0x32bb('0x1'));var moment=require(_0x32bb('0x2'));var BPromise=require(_0x32bb('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x32bb('0x4'))['db'];var utils=require(_0x32bb('0x5'));var logger=require('../../config/logger')(_0x32bb('0x6'));var config=require(_0x32bb('0x7'));var jayson=require(_0x32bb('0x8'));var client=jayson[_0x32bb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b821a,_0x1e8cee,_0x16a402){return new BPromise(function(_0x6808e7,_0x53815f){return client[_0x32bb('0xa')](_0x4b821a,_0x16a402)[_0x32bb('0xb')](function(_0x3ea674){logger[_0x32bb('0xc')](_0x32bb('0xd'),_0x1e8cee,_0x32bb('0xe'));logger[_0x32bb('0xf')](_0x32bb('0x10'),_0x1e8cee,_0x32bb('0xe'),JSON[_0x32bb('0x11')](_0x3ea674));if(_0x3ea674[_0x32bb('0x12')]){if(_0x3ea674[_0x32bb('0x12')][_0x32bb('0x13')]===0x1f4){logger[_0x32bb('0x12')](_0x32bb('0xd'),_0x1e8cee,_0x3ea674[_0x32bb('0x12')][_0x32bb('0x14')]);return _0x53815f(_0x3ea674[_0x32bb('0x12')][_0x32bb('0x14')]);}logger[_0x32bb('0x12')](_0x32bb('0xd'),_0x1e8cee,_0x3ea674['error'][_0x32bb('0x14')]);return _0x6808e7(_0x3ea674[_0x32bb('0x12')][_0x32bb('0x14')]);}else{logger[_0x32bb('0xc')]('FreshdeskField,\x20%s,\x20%s',_0x1e8cee,_0x32bb('0xe'));_0x6808e7(_0x3ea674[_0x32bb('0x15')]['message']);}})['catch'](function(_0xdcf3e1){logger[_0x32bb('0x12')](_0x32bb('0xd'),_0x1e8cee,_0xdcf3e1);_0x53815f(_0xdcf3e1);});});}
\ No newline at end of file
+var _0x4d5d=['message','info','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x4d5d,0x191));var _0xd4d5=function(_0x1f0213,_0x3c3c9e){_0x1f0213=_0x1f0213-0x0;var _0x2048c4=_0x4d5d[_0x1f0213];return _0x2048c4;};'use strict';var _=require('lodash');var util=require(_0xd4d5('0x0'));var moment=require(_0xd4d5('0x1'));var BPromise=require('bluebird');var rs=require(_0xd4d5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd4d5('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd4d5('0x4'))('rpc');var config=require(_0xd4d5('0x5'));var jayson=require(_0xd4d5('0x6'));var client=jayson[_0xd4d5('0x7')][_0xd4d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x215f6c,_0x5dae58,_0x416080){return new BPromise(function(_0x28ecd2,_0x1696eb){return client[_0xd4d5('0x9')](_0x215f6c,_0x416080)[_0xd4d5('0xa')](function(_0x5c5cb1){logger['info'](_0xd4d5('0xb'),_0x5dae58,_0xd4d5('0xc'));logger['debug'](_0xd4d5('0xd'),_0x5dae58,_0xd4d5('0xc'),JSON[_0xd4d5('0xe')](_0x5c5cb1));if(_0x5c5cb1[_0xd4d5('0xf')]){if(_0x5c5cb1[_0xd4d5('0xf')][_0xd4d5('0x10')]===0x1f4){logger[_0xd4d5('0xf')](_0xd4d5('0xb'),_0x5dae58,_0x5c5cb1[_0xd4d5('0xf')]['message']);return _0x1696eb(_0x5c5cb1['error']['message']);}logger[_0xd4d5('0xf')](_0xd4d5('0xb'),_0x5dae58,_0x5c5cb1[_0xd4d5('0xf')][_0xd4d5('0x11')]);return _0x28ecd2(_0x5c5cb1[_0xd4d5('0xf')][_0xd4d5('0x11')]);}else{logger[_0xd4d5('0x12')](_0xd4d5('0xb'),_0x5dae58,_0xd4d5('0xc'));_0x28ecd2(_0x5c5cb1['result'][_0xd4d5('0x11')]);}})['catch'](function(_0x345750){logger[_0xd4d5('0xf')](_0xd4d5('0xb'),_0x5dae58,_0x345750);_0x1696eb(_0x345750);});});}
\ No newline at end of file
index 29d64ac..de854ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['getConfigurations','post','addConfiguration','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations'];(function(_0x27ca5c,_0x2b7c67){var _0x3f8ce4=function(_0x45b040){while(--_0x45b040){_0x27ca5c['push'](_0x27ca5c['shift']());}};_0x3f8ce4(++_0x2b7c67);}(_0xc788,0xc4));var _0x8c78=function(_0x4a2ba2,_0x5901b9){_0x4a2ba2=_0x4a2ba2-0x0;var _0x1d09fd=_0xc788[_0x4a2ba2];return _0x1d09fd;};'use strict';var multer=require(_0x8c78('0x0'));var util=require(_0x8c78('0x1'));var path=require(_0x8c78('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8c78('0x3')]();var fs_extra=require(_0x8c78('0x4'));var auth=require(_0x8c78('0x5'));var interaction=require(_0x8c78('0x6'));var config=require(_0x8c78('0x7'));var controller=require('./intFreshsalesAccount.controller');router[_0x8c78('0x8')]('/',auth[_0x8c78('0x9')](),controller[_0x8c78('0xa')]);router[_0x8c78('0x8')](_0x8c78('0xb'),auth['isAuthenticated'](),controller[_0x8c78('0xc')]);router[_0x8c78('0x8')](_0x8c78('0xd'),auth[_0x8c78('0x9')](),controller[_0x8c78('0xe')]);router[_0x8c78('0x8')]('/:id/fields',auth[_0x8c78('0x9')](),controller['getFields']);router[_0x8c78('0xf')]('/',auth[_0x8c78('0x9')](),controller['create']);router[_0x8c78('0xf')](_0x8c78('0xd'),auth['isAuthenticated'](),controller[_0x8c78('0x10')]);router['put']('/:id',auth[_0x8c78('0x9')](),controller[_0x8c78('0x11')]);router[_0x8c78('0x12')](_0x8c78('0xb'),auth[_0x8c78('0x9')](),controller[_0x8c78('0x13')]);module[_0x8c78('0x14')]=router;
\ No newline at end of file
+var _0x9aea=['index','/:id','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x9aea,0xdd));var _0xa9ae=function(_0x147c73,_0x36d060){_0x147c73=_0x147c73-0x0;var _0x4e974e=_0x9aea[_0x147c73];return _0x4e974e;};'use strict';var multer=require(_0xa9ae('0x0'));var util=require('util');var path=require(_0xa9ae('0x1'));var timeout=require('connect-timeout');var express=require(_0xa9ae('0x2'));var router=express[_0xa9ae('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa9ae('0x4'));var interaction=require(_0xa9ae('0x5'));var config=require(_0xa9ae('0x6'));var controller=require(_0xa9ae('0x7'));router[_0xa9ae('0x8')]('/',auth['isAuthenticated'](),controller[_0xa9ae('0x9')]);router[_0xa9ae('0x8')](_0xa9ae('0xa'),auth['isAuthenticated'](),controller[_0xa9ae('0xb')]);router[_0xa9ae('0x8')](_0xa9ae('0xc'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0xe')]);router[_0xa9ae('0x8')](_0xa9ae('0xf'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x10')]);router['post']('/',auth[_0xa9ae('0xd')](),controller['create']);router[_0xa9ae('0x11')](_0xa9ae('0xc'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x12')]);router[_0xa9ae('0x13')](_0xa9ae('0xa'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x14')]);router['delete'](_0xa9ae('0xa'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x15')]);module[_0xa9ae('0x16')]=router;
\ No newline at end of file
index 0fc0d0c..3068bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a37=['sequelize','exports','STRING','username','remoteUri'];(function(_0x57ae71,_0x4f793f){var _0xdab35d=function(_0x5d88db){while(--_0x5d88db){_0x57ae71['push'](_0x57ae71['shift']());}};_0xdab35d(++_0x4f793f);}(_0x1a37,0xb4));var _0x71a3=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0x1a37[_0x1992f1];return _0x413dfe;};'use strict';var Sequelize=require(_0x71a3('0x0'));module[_0x71a3('0x1')]={'name':{'type':Sequelize[_0x71a3('0x2')]},'description':{'type':Sequelize[_0x71a3('0x2')]},'username':{'type':Sequelize[_0x71a3('0x2')],'unique':_0x71a3('0x3')},'apiKey':{'type':Sequelize[_0x71a3('0x2')]},'remoteUri':{'type':Sequelize[_0x71a3('0x2')],'unique':_0x71a3('0x4')},'serverUrl':{'type':Sequelize[_0x71a3('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x2ef3=['remoteUri','sequelize','exports','STRING','username'];(function(_0x115d6b,_0xe722a9){var _0x295fec=function(_0x489677){while(--_0x489677){_0x115d6b['push'](_0x115d6b['shift']());}};_0x295fec(++_0xe722a9);}(_0x2ef3,0xba));var _0x32ef=function(_0xf85c36,_0x333331){_0xf85c36=_0xf85c36-0x0;var _0x201b85=_0x2ef3[_0xf85c36];return _0x201b85;};'use strict';var Sequelize=require(_0x32ef('0x0'));module[_0x32ef('0x1')]={'name':{'type':Sequelize[_0x32ef('0x2')]},'description':{'type':Sequelize[_0x32ef('0x2')]},'username':{'type':Sequelize[_0x32ef('0x2')],'unique':_0x32ef('0x3')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x32ef('0x2')],'unique':_0x32ef('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 8398df4..76912f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf464=['mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','map','filter','merge','options','FreshsalesAccount','includeAll','include','catch','show','params','keys','rawAttributes','create','body','find','getConfigurations','FreshsalesConfiguration','order','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','remoteUri','apiKey','username','slice','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','bluebird'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xf464,0x66));var _0x4f46=function(_0xfaac89,_0x3540ae){_0xfaac89=_0xfaac89-0x0;var _0x35b8e6=_0xf464[_0xfaac89];return _0x35b8e6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4f46('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4f46('0x1'));var rp=require(_0x4f46('0x2'));var moment=require('moment');var BPromise=require(_0x4f46('0x3'));var Mustache=require(_0x4f46('0x4'));var util=require(_0x4f46('0x5'));var path=require(_0x4f46('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4f46('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f46('0x8'));var squel=require(_0x4f46('0x9'));var crypto=require(_0x4f46('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4f46('0xb'));var toCsv=require(_0x4f46('0xc'));var querystring=require(_0x4f46('0xd'));var Papa=require(_0x4f46('0xe'));var Redis=require(_0x4f46('0xf'));var authService=require(_0x4f46('0x10'));var qs=require(_0x4f46('0x11'));var as=require(_0x4f46('0x12'));var hardwareService=require(_0x4f46('0x13'));var logger=require(_0x4f46('0x14'))(_0x4f46('0x15'));var utils=require(_0x4f46('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x4f46('0x17'));var db=require(_0x4f46('0x18'))['db'];var integrations=require(_0x4f46('0x19'));function respondWithStatusCode(_0x28777f,_0x256ae3){_0x256ae3=_0x256ae3||0xcc;return function(_0x5d82b9){if(_0x5d82b9){return _0x28777f[_0x4f46('0x1a')](_0x256ae3);}return _0x28777f[_0x4f46('0x1b')](_0x256ae3)[_0x4f46('0x1c')]();};}function respondWithResult(_0x1cd251,_0x2dceff){_0x2dceff=_0x2dceff||0xc8;return function(_0x13c4b7){if(_0x13c4b7){return _0x1cd251['status'](_0x2dceff)[_0x4f46('0x1d')](_0x13c4b7);}};}function respondWithFilteredResult(_0x2194a5,_0x4d363e){return function(_0x2ca8f4){if(_0x2ca8f4){var _0x1b247b=typeof _0x4d363e[_0x4f46('0x1e')]===_0x4f46('0x1f')&&typeof _0x4d363e[_0x4f46('0x20')]===_0x4f46('0x1f');var _0x49942f=_0x2ca8f4[_0x4f46('0x21')];var _0x482532=_0x1b247b?0x0:_0x4d363e['offset'];var _0x2fe6d3=_0x1b247b?_0x2ca8f4[_0x4f46('0x21')]:_0x4d363e[_0x4f46('0x1e')]+_0x4d363e[_0x4f46('0x20')];var _0xa066a7;if(_0x2fe6d3>=_0x49942f){_0x2fe6d3=_0x49942f;_0xa066a7=0xc8;}else{_0xa066a7=0xce;}_0x2194a5[_0x4f46('0x1b')](_0xa066a7);return _0x2194a5[_0x4f46('0x22')](_0x4f46('0x23'),_0x482532+'-'+_0x2fe6d3+'/'+_0x49942f)['json'](_0x2ca8f4);}return null;};}function patchUpdates(_0x287123){return function(_0x4616b6){try{jsonpatch[_0x4f46('0x24')](_0x4616b6,_0x287123,!![]);}catch(_0x1db1f1){return BPromise[_0x4f46('0x25')](_0x1db1f1);}return _0x4616b6[_0x4f46('0x26')]();};}function saveUpdates(_0x301823,_0x2f0d9f){return function(_0x56e767){if(_0x56e767){return _0x56e767[_0x4f46('0x27')](_0x301823)[_0x4f46('0x28')](function(_0x3e1d34){return _0x3e1d34;});}return null;};}function removeEntity(_0x2a9321,_0x57fc68){return function(_0x1d15c5){if(_0x1d15c5){return _0x1d15c5[_0x4f46('0x29')]()['then'](function(){_0x2a9321[_0x4f46('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x257231,_0x32cff8){return function(_0x586014){if(!_0x586014){_0x257231[_0x4f46('0x1a')](0x194);}return _0x586014;};}function handleError(_0x30318b,_0xd242cc){_0xd242cc=_0xd242cc||0x1f4;return function(_0x18ebdc){logger[_0x4f46('0x2a')](_0x18ebdc[_0x4f46('0x2b')]);if(_0x18ebdc[_0x4f46('0x2c')]){delete _0x18ebdc[_0x4f46('0x2c')];}_0x30318b[_0x4f46('0x1b')](_0xd242cc)['send'](_0x18ebdc);};}exports[_0x4f46('0x2d')]=function(_0x1ddc56,_0x2b3786){var _0x5683a8={},_0xc3d854={},_0x6388e8={'count':0x0,'rows':[]};var _0x1c5c41=_['map'](db['FreshsalesAccount']['rawAttributes'],function(_0x25faf1){return{'name':_0x25faf1[_0x4f46('0x2e')],'type':_0x25faf1[_0x4f46('0x2f')][_0x4f46('0x30')]};});_0xc3d854[_0x4f46('0x31')]=_['map'](_0x1c5c41,_0x4f46('0x2c'));_0xc3d854[_0x4f46('0x32')]=_['keys'](_0x1ddc56[_0x4f46('0x32')]);_0xc3d854[_0x4f46('0x33')]=_['intersection'](_0xc3d854[_0x4f46('0x31')],_0xc3d854['query']);_0x5683a8['attributes']=_[_0x4f46('0x34')](_0xc3d854[_0x4f46('0x31')],qs[_0x4f46('0x35')](_0x1ddc56[_0x4f46('0x32')]['fields']));_0x5683a8[_0x4f46('0x36')]=_0x5683a8[_0x4f46('0x36')][_0x4f46('0x37')]?_0x5683a8[_0x4f46('0x36')]:_0xc3d854['model'];if(!_0x1ddc56[_0x4f46('0x32')][_0x4f46('0x38')](_0x4f46('0x39'))){_0x5683a8[_0x4f46('0x20')]=qs[_0x4f46('0x20')](_0x1ddc56[_0x4f46('0x32')][_0x4f46('0x20')]);_0x5683a8['offset']=qs[_0x4f46('0x1e')](_0x1ddc56[_0x4f46('0x32')]['offset']);}_0x5683a8['order']=qs[_0x4f46('0x3a')](_0x1ddc56['query'][_0x4f46('0x3a')]);_0x5683a8[_0x4f46('0x3b')]=qs[_0x4f46('0x33')](_[_0x4f46('0x3c')](_0x1ddc56[_0x4f46('0x32')],_0xc3d854['filters']),_0x1c5c41);if(_0x1ddc56['query']['filter']){_0x5683a8['where']=_['merge'](_0x5683a8['where'],{'$or':_[_0x4f46('0x3d')](_0x1c5c41,function(_0x51aa2c){if(_0x51aa2c[_0x4f46('0x2f')]!=='VIRTUAL'){var _0x4a5d69={};_0x4a5d69[_0x51aa2c[_0x4f46('0x2c')]]={'$like':'%'+_0x1ddc56['query'][_0x4f46('0x3e')]+'%'};return _0x4a5d69;}})});}_0x5683a8=_[_0x4f46('0x3f')]({},_0x5683a8,_0x1ddc56[_0x4f46('0x40')]);var _0x42a19c={'where':_0x5683a8[_0x4f46('0x3b')]};return db[_0x4f46('0x41')][_0x4f46('0x21')](_0x42a19c)['then'](function(_0x4e3d15){_0x6388e8[_0x4f46('0x21')]=_0x4e3d15;if(_0x1ddc56[_0x4f46('0x32')][_0x4f46('0x42')]){_0x5683a8[_0x4f46('0x43')]=[{'all':!![]}];}return db['FreshsalesAccount']['findAll'](_0x5683a8);})[_0x4f46('0x28')](function(_0xee0ea5){_0x6388e8['rows']=_0xee0ea5;return _0x6388e8;})['then'](respondWithFilteredResult(_0x2b3786,_0x5683a8))[_0x4f46('0x44')](handleError(_0x2b3786,null));};exports[_0x4f46('0x45')]=function(_0x577066,_0x51b747){var _0x86aa7a={'raw':![],'where':{'id':_0x577066[_0x4f46('0x46')]['id']}},_0x480ffc={};_0x480ffc[_0x4f46('0x31')]=_[_0x4f46('0x47')](db['FreshsalesAccount'][_0x4f46('0x48')]);_0x480ffc[_0x4f46('0x32')]=_[_0x4f46('0x47')](_0x577066[_0x4f46('0x32')]);_0x480ffc[_0x4f46('0x33')]=_[_0x4f46('0x34')](_0x480ffc['model'],_0x480ffc[_0x4f46('0x32')]);_0x86aa7a[_0x4f46('0x36')]=_[_0x4f46('0x34')](_0x480ffc['model'],qs[_0x4f46('0x35')](_0x577066[_0x4f46('0x32')][_0x4f46('0x35')]));_0x86aa7a[_0x4f46('0x36')]=_0x86aa7a[_0x4f46('0x36')][_0x4f46('0x37')]?_0x86aa7a[_0x4f46('0x36')]:_0x480ffc[_0x4f46('0x31')];if(_0x577066['query'][_0x4f46('0x42')]){_0x86aa7a['include']=[{'all':!![]}];}_0x86aa7a=_[_0x4f46('0x3f')]({},_0x86aa7a,_0x577066[_0x4f46('0x40')]);return db[_0x4f46('0x41')]['find'](_0x86aa7a)['then'](handleEntityNotFound(_0x51b747,null))[_0x4f46('0x28')](respondWithResult(_0x51b747,null))[_0x4f46('0x44')](handleError(_0x51b747,null));};exports[_0x4f46('0x49')]=function(_0xb58204,_0x4f7ea8){return db['FreshsalesAccount'][_0x4f46('0x49')](_0xb58204[_0x4f46('0x4a')],{})[_0x4f46('0x28')](respondWithResult(_0x4f7ea8,0xc9))[_0x4f46('0x44')](handleError(_0x4f7ea8,null));};exports[_0x4f46('0x27')]=function(_0x4634eb,_0x3a1496){if(_0x4634eb[_0x4f46('0x4a')]['id']){delete _0x4634eb[_0x4f46('0x4a')]['id'];}return db['FreshsalesAccount'][_0x4f46('0x4b')]({'where':{'id':_0x4634eb[_0x4f46('0x46')]['id']}})[_0x4f46('0x28')](handleEntityNotFound(_0x3a1496,null))[_0x4f46('0x28')](saveUpdates(_0x4634eb[_0x4f46('0x4a')],null))[_0x4f46('0x28')](respondWithResult(_0x3a1496,null))['catch'](handleError(_0x3a1496,null));};exports[_0x4f46('0x29')]=function(_0x1fd143,_0xa7f8fa){return db['FreshsalesAccount']['find']({'where':{'id':_0x1fd143[_0x4f46('0x46')]['id']}})[_0x4f46('0x28')](handleEntityNotFound(_0xa7f8fa,null))[_0x4f46('0x28')](removeEntity(_0xa7f8fa,null))[_0x4f46('0x44')](handleError(_0xa7f8fa,null));};exports[_0x4f46('0x4c')]=function(_0x5060bd,_0x46e68d,_0x4be7b9){var _0x35033e={};var _0x46d5ab={};var _0x36e7e9;var _0x2684f1;return db[_0x4f46('0x41')]['findOne']({'where':{'id':_0x5060bd['params']['id']}})[_0x4f46('0x28')](handleEntityNotFound(_0x46e68d,null))['then'](function(_0x3dffcb){if(_0x3dffcb){_0x36e7e9=_0x3dffcb;_0x46d5ab[_0x4f46('0x31')]=_['keys'](db[_0x4f46('0x4d')][_0x4f46('0x48')]);_0x46d5ab['query']=_[_0x4f46('0x47')](_0x5060bd[_0x4f46('0x32')]);_0x46d5ab[_0x4f46('0x33')]=_[_0x4f46('0x34')](_0x46d5ab['model'],_0x46d5ab[_0x4f46('0x32')]);_0x35033e[_0x4f46('0x36')]=_[_0x4f46('0x34')](_0x46d5ab[_0x4f46('0x31')],qs[_0x4f46('0x35')](_0x5060bd[_0x4f46('0x32')][_0x4f46('0x35')]));_0x35033e[_0x4f46('0x36')]=_0x35033e['attributes']['length']?_0x35033e[_0x4f46('0x36')]:_0x46d5ab['model'];_0x35033e[_0x4f46('0x4e')]=qs['sort'](_0x5060bd['query'][_0x4f46('0x3a')]);_0x35033e[_0x4f46('0x3b')]=qs[_0x4f46('0x33')](_[_0x4f46('0x3c')](_0x5060bd[_0x4f46('0x32')],_0x46d5ab[_0x4f46('0x33')]));if(_0x5060bd[_0x4f46('0x32')]['filter']){_0x35033e[_0x4f46('0x3b')]=_[_0x4f46('0x3f')](_0x35033e[_0x4f46('0x3b')],{'$or':_[_0x4f46('0x3d')](_0x35033e[_0x4f46('0x36')],function(_0x1ed8be){var _0x96893a={};_0x96893a[_0x1ed8be]={'$like':'%'+_0x5060bd[_0x4f46('0x32')][_0x4f46('0x3e')]+'%'};return _0x96893a;})});}_0x35033e=_['merge']({},_0x35033e,_0x5060bd['options']);return _0x36e7e9[_0x4f46('0x4c')](_0x35033e);}})[_0x4f46('0x28')](function(_0x29edc7){if(_0x29edc7){_0x2684f1=_0x29edc7['length'];if(!_0x5060bd[_0x4f46('0x32')][_0x4f46('0x38')]('nolimit')){_0x35033e[_0x4f46('0x20')]=qs[_0x4f46('0x20')](_0x5060bd[_0x4f46('0x32')][_0x4f46('0x20')]);_0x35033e['offset']=qs[_0x4f46('0x1e')](_0x5060bd[_0x4f46('0x32')][_0x4f46('0x1e')]);}return _0x36e7e9[_0x4f46('0x4c')](_0x35033e);}})[_0x4f46('0x28')](function(_0x222268){if(_0x222268){return _0x222268?{'count':_0x2684f1,'rows':_0x222268}:null;}})[_0x4f46('0x28')](respondWithResult(_0x46e68d,null))[_0x4f46('0x44')](handleError(_0x46e68d,null));};exports[_0x4f46('0x4f')]=function(_0x253d98,_0x5b2b6e,_0x39bbe8){if(_0x253d98[_0x4f46('0x4a')]['id']){delete _0x253d98[_0x4f46('0x4a')]['id'];}return db[_0x4f46('0x41')][_0x4f46('0x50')]({'where':{'id':_0x253d98[_0x4f46('0x46')]['id']}})[_0x4f46('0x28')](handleEntityNotFound(_0x5b2b6e,null))[_0x4f46('0x28')](function(_0x1773e1){if(_0x1773e1){_0x253d98[_0x4f46('0x4a')][_0x4f46('0x51')]=_0x1773e1['id'];_0x253d98[_0x4f46('0x4a')][_0x4f46('0x52')]=integrations[_0x4f46('0x53')](_0x253d98['body'][_0x4f46('0x54')],_0x253d98[_0x4f46('0x4a')][_0x4f46('0x2f')]);_0x253d98[_0x4f46('0x4a')][_0x4f46('0x55')]=integrations[_0x4f46('0x56')](_0x253d98[_0x4f46('0x4a')][_0x4f46('0x54')],_0x253d98['body'][_0x4f46('0x2f')]);return db[_0x4f46('0x4d')]['create'](_0x253d98[_0x4f46('0x4a')],{'include':[{'model':db[_0x4f46('0x57')],'as':_0x4f46('0x52')},{'model':db[_0x4f46('0x57')],'as':_0x4f46('0x55')}]});}return null;})[_0x4f46('0x28')](respondWithResult(_0x5b2b6e,null))['catch'](handleError(_0x5b2b6e,null));};exports['getFields']=function(_0xb4e2a1,_0x38fb96,_0x455a89){var _0x587cc4='';var _0x5cc0f5='';return db[_0x4f46('0x41')][_0x4f46('0x50')]({'where':{'id':_0xb4e2a1[_0x4f46('0x46')]['id']},'attributes':['id','username',_0x4f46('0x58'),_0x4f46('0x59')]})[_0x4f46('0x28')](handleEntityNotFound(_0x38fb96,null))[_0x4f46('0x28')](function(_0x2505f7){if(_0x2505f7){_0x5cc0f5=_0x2505f7[_0x4f46('0x5a')];_0x587cc4=_0x2505f7[_0x4f46('0x58')];var _0x5315bd=_0x2505f7[_0x4f46('0x58')][_0x4f46('0x5b')](-0x1);if(_0x5315bd==='/'){_0x587cc4=_0x587cc4[_0x4f46('0x5c')](0x0,_0x587cc4['lastIndexOf'](_0x5315bd));}return rp({'method':_0x4f46('0x5d'),'uri':util[_0x4f46('0x5e')](_0x4f46('0x5f'),_0x587cc4,_0x4f46('0x60')),'headers':{'Authorization':_0x4f46('0x61')+_0x2505f7[_0x4f46('0x59')]},'json':!![]});}})[_0x4f46('0x28')](function(_0x5e7c2d){if(_0x5e7c2d){var _0x3063d2=_0x5e7c2d[_0x4f46('0x62')];var _0x238ce4=![];var _0x241e5b=null;for(_0x241e5b=0x0;_0x241e5b<_0x3063d2[_0x4f46('0x37')];_0x241e5b++){if(_0x3063d2[_0x241e5b]['email']===_0x5cc0f5){_0x238ce4=!![];}}if(_0x238ce4){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x4f46('0x63')});}}})[_0x4f46('0x28')](respondWithResult(_0x38fb96,null))['catch'](function(_0xdb4acc){var _0x54dbb8=_0xb4e2a1[_0x4f46('0x32')][_0x4f46('0x64')]?0x1f4:_0xdb4acc[_0x4f46('0x65')]||0x1f4;logger['error'](_0x4f46('0x66'),_0x4f46('0x67'),_0x54dbb8,JSON[_0x4f46('0x68')](_0xdb4acc));delete _0xdb4acc[_0x4f46('0x2c')];if(_0x54dbb8===0x191){_0x54dbb8=0x190;}_0x38fb96[_0x4f46('0x1b')](_0x54dbb8)['send'](_0xb4e2a1['query'][_0x4f46('0x64')]?{'message':_0x4f46('0x69'),'statusCode':_0xdb4acc['statusCode']}:_0xdb4acc);});};
\ No newline at end of file
+var _0xaa0a=['squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','FreshsalesAccount','type','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','rawAttributes','length','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','sort','pick','AccountId','Subjects','getDescriptions','FreshsalesField','getFields','username','apiKey','remoteUri','slice','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','mustache','util','to-csv','lodash'];(function(_0xb1e42f,_0x321a3f){var _0x513359=function(_0x2cf4a2){while(--_0x2cf4a2){_0xb1e42f['push'](_0xb1e42f['shift']());}};_0x513359(++_0x321a3f);}(_0xaa0a,0x118));var _0xaaa0=function(_0x4c009b,_0x3ad90e){_0x4c009b=_0x4c009b-0x0;var _0x359e26=_0xaa0a[_0x4c009b];return _0x359e26;};'use strict';var emlformat=require(_0xaaa0('0x0'));var rimraf=require(_0xaaa0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaaa0('0x2'));var rp=require('request-promise');var moment=require(_0xaaa0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xaaa0('0x4'));var util=require(_0xaaa0('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xaaa0('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaaa0('0x7'));var squel=require(_0xaaa0('0x8'));var crypto=require('crypto');var jsforce=require(_0xaaa0('0x9'));var deskjs=require(_0xaaa0('0xa'));var toCsv=require(_0xaaa0('0x6'));var querystring=require(_0xaaa0('0xb'));var Papa=require(_0xaaa0('0xc'));var Redis=require('ioredis');var authService=require(_0xaaa0('0xd'));var qs=require(_0xaaa0('0xe'));var as=require(_0xaaa0('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaaa0('0x10'))(_0xaaa0('0x11'));var utils=require(_0xaaa0('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xaaa0('0x13'));function respondWithStatusCode(_0x49c2e3,_0x15d499){_0x15d499=_0x15d499||0xcc;return function(_0x491e49){if(_0x491e49){return _0x49c2e3[_0xaaa0('0x14')](_0x15d499);}return _0x49c2e3[_0xaaa0('0x15')](_0x15d499)[_0xaaa0('0x16')]();};}function respondWithResult(_0x2577bc,_0x1c4523){_0x1c4523=_0x1c4523||0xc8;return function(_0x1a11b5){if(_0x1a11b5){return _0x2577bc[_0xaaa0('0x15')](_0x1c4523)[_0xaaa0('0x17')](_0x1a11b5);}};}function respondWithFilteredResult(_0x27a071,_0x3cc5c0){return function(_0x1eea2f){if(_0x1eea2f){var _0x340931=typeof _0x3cc5c0[_0xaaa0('0x18')]===_0xaaa0('0x19')&&typeof _0x3cc5c0[_0xaaa0('0x1a')]===_0xaaa0('0x19');var _0x3790f3=_0x1eea2f[_0xaaa0('0x1b')];var _0x5c08fa=_0x340931?0x0:_0x3cc5c0[_0xaaa0('0x18')];var _0x590a74=_0x340931?_0x1eea2f['count']:_0x3cc5c0[_0xaaa0('0x18')]+_0x3cc5c0[_0xaaa0('0x1a')];var _0x979312;if(_0x590a74>=_0x3790f3){_0x590a74=_0x3790f3;_0x979312=0xc8;}else{_0x979312=0xce;}_0x27a071[_0xaaa0('0x15')](_0x979312);return _0x27a071[_0xaaa0('0x1c')](_0xaaa0('0x1d'),_0x5c08fa+'-'+_0x590a74+'/'+_0x3790f3)[_0xaaa0('0x17')](_0x1eea2f);}return null;};}function patchUpdates(_0xb5425f){return function(_0x1ce486){try{jsonpatch[_0xaaa0('0x1e')](_0x1ce486,_0xb5425f,!![]);}catch(_0x14bdd5){return BPromise[_0xaaa0('0x1f')](_0x14bdd5);}return _0x1ce486[_0xaaa0('0x20')]();};}function saveUpdates(_0xb8b185,_0x9d3092){return function(_0x255d8f){if(_0x255d8f){return _0x255d8f[_0xaaa0('0x21')](_0xb8b185)[_0xaaa0('0x22')](function(_0x4227d7){return _0x4227d7;});}return null;};}function removeEntity(_0x3ae298,_0x528baf){return function(_0x42534a){if(_0x42534a){return _0x42534a[_0xaaa0('0x23')]()[_0xaaa0('0x22')](function(){_0x3ae298[_0xaaa0('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x299a5d,_0x452bce){return function(_0x21a02f){if(!_0x21a02f){_0x299a5d[_0xaaa0('0x14')](0x194);}return _0x21a02f;};}function handleError(_0x450464,_0xeb29fa){_0xeb29fa=_0xeb29fa||0x1f4;return function(_0x126ebc){logger[_0xaaa0('0x24')](_0x126ebc[_0xaaa0('0x25')]);if(_0x126ebc['name']){delete _0x126ebc[_0xaaa0('0x26')];}_0x450464[_0xaaa0('0x15')](_0xeb29fa)[_0xaaa0('0x27')](_0x126ebc);};}exports[_0xaaa0('0x28')]=function(_0x51c6e5,_0x28da0d){var _0xc99088={},_0x726dd1={},_0x4be7c2={'count':0x0,'rows':[]};var _0x143807=_['map'](db[_0xaaa0('0x29')]['rawAttributes'],function(_0x4b08df){return{'name':_0x4b08df['fieldName'],'type':_0x4b08df[_0xaaa0('0x2a')]['key']};});_0x726dd1['model']=_['map'](_0x143807,_0xaaa0('0x26'));_0x726dd1['query']=_['keys'](_0x51c6e5[_0xaaa0('0x2b')]);_0x726dd1[_0xaaa0('0x2c')]=_['intersection'](_0x726dd1[_0xaaa0('0x2d')],_0x726dd1[_0xaaa0('0x2b')]);_0xc99088[_0xaaa0('0x2e')]=_[_0xaaa0('0x2f')](_0x726dd1['model'],qs[_0xaaa0('0x30')](_0x51c6e5['query'][_0xaaa0('0x30')]));_0xc99088[_0xaaa0('0x2e')]=_0xc99088[_0xaaa0('0x2e')]['length']?_0xc99088[_0xaaa0('0x2e')]:_0x726dd1[_0xaaa0('0x2d')];if(!_0x51c6e5['query'][_0xaaa0('0x31')](_0xaaa0('0x32'))){_0xc99088[_0xaaa0('0x1a')]=qs['limit'](_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x1a')]);_0xc99088[_0xaaa0('0x18')]=qs[_0xaaa0('0x18')](_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x18')]);}_0xc99088[_0xaaa0('0x33')]=qs['sort'](_0x51c6e5[_0xaaa0('0x2b')]['sort']);_0xc99088[_0xaaa0('0x34')]=qs[_0xaaa0('0x2c')](_['pick'](_0x51c6e5['query'],_0x726dd1['filters']),_0x143807);if(_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x35')]){_0xc99088[_0xaaa0('0x34')]=_[_0xaaa0('0x36')](_0xc99088['where'],{'$or':_[_0xaaa0('0x37')](_0x143807,function(_0x44cd66){if(_0x44cd66[_0xaaa0('0x2a')]!==_0xaaa0('0x38')){var _0x54d05b={};_0x54d05b[_0x44cd66[_0xaaa0('0x26')]]={'$like':'%'+_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x35')]+'%'};return _0x54d05b;}})});}_0xc99088=_['merge']({},_0xc99088,_0x51c6e5[_0xaaa0('0x39')]);var _0x419985={'where':_0xc99088[_0xaaa0('0x34')]};return db[_0xaaa0('0x29')][_0xaaa0('0x1b')](_0x419985)[_0xaaa0('0x22')](function(_0x2f9c87){_0x4be7c2['count']=_0x2f9c87;if(_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x3a')]){_0xc99088[_0xaaa0('0x3b')]=[{'all':!![]}];}return db[_0xaaa0('0x29')][_0xaaa0('0x3c')](_0xc99088);})[_0xaaa0('0x22')](function(_0x45d213){_0x4be7c2['rows']=_0x45d213;return _0x4be7c2;})[_0xaaa0('0x22')](respondWithFilteredResult(_0x28da0d,_0xc99088))[_0xaaa0('0x3d')](handleError(_0x28da0d,null));};exports[_0xaaa0('0x3e')]=function(_0x4c7b0d,_0x2f35ee){var _0xec9ae8={'raw':![],'where':{'id':_0x4c7b0d[_0xaaa0('0x3f')]['id']}},_0x5b53d2={};_0x5b53d2['model']=_[_0xaaa0('0x40')](db[_0xaaa0('0x29')][_0xaaa0('0x41')]);_0x5b53d2[_0xaaa0('0x2b')]=_[_0xaaa0('0x40')](_0x4c7b0d['query']);_0x5b53d2['filters']=_[_0xaaa0('0x2f')](_0x5b53d2[_0xaaa0('0x2d')],_0x5b53d2[_0xaaa0('0x2b')]);_0xec9ae8[_0xaaa0('0x2e')]=_[_0xaaa0('0x2f')](_0x5b53d2['model'],qs['fields'](_0x4c7b0d['query'][_0xaaa0('0x30')]));_0xec9ae8[_0xaaa0('0x2e')]=_0xec9ae8['attributes'][_0xaaa0('0x42')]?_0xec9ae8['attributes']:_0x5b53d2[_0xaaa0('0x2d')];if(_0x4c7b0d[_0xaaa0('0x2b')][_0xaaa0('0x3a')]){_0xec9ae8[_0xaaa0('0x3b')]=[{'all':!![]}];}_0xec9ae8=_[_0xaaa0('0x36')]({},_0xec9ae8,_0x4c7b0d[_0xaaa0('0x39')]);return db[_0xaaa0('0x29')][_0xaaa0('0x43')](_0xec9ae8)[_0xaaa0('0x22')](handleEntityNotFound(_0x2f35ee,null))[_0xaaa0('0x22')](respondWithResult(_0x2f35ee,null))[_0xaaa0('0x3d')](handleError(_0x2f35ee,null));};exports[_0xaaa0('0x44')]=function(_0x2d7d6d,_0x174111){return db[_0xaaa0('0x29')][_0xaaa0('0x44')](_0x2d7d6d[_0xaaa0('0x45')],{})[_0xaaa0('0x22')](respondWithResult(_0x174111,0xc9))[_0xaaa0('0x3d')](handleError(_0x174111,null));};exports['update']=function(_0x39ecb7,_0x29d08b){if(_0x39ecb7[_0xaaa0('0x45')]['id']){delete _0x39ecb7[_0xaaa0('0x45')]['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x39ecb7[_0xaaa0('0x3f')]['id']}})[_0xaaa0('0x22')](handleEntityNotFound(_0x29d08b,null))['then'](saveUpdates(_0x39ecb7[_0xaaa0('0x45')],null))['then'](respondWithResult(_0x29d08b,null))[_0xaaa0('0x3d')](handleError(_0x29d08b,null));};exports[_0xaaa0('0x23')]=function(_0x1350da,_0x30abe7){return db[_0xaaa0('0x29')]['find']({'where':{'id':_0x1350da[_0xaaa0('0x3f')]['id']}})['then'](handleEntityNotFound(_0x30abe7,null))[_0xaaa0('0x22')](removeEntity(_0x30abe7,null))[_0xaaa0('0x3d')](handleError(_0x30abe7,null));};exports[_0xaaa0('0x46')]=function(_0x28dfe1,_0x2850a6,_0x2c7483){var _0x453b38={};var _0x2c00ee={};var _0x1c4eb;var _0x1d7adf;return db[_0xaaa0('0x29')][_0xaaa0('0x47')]({'where':{'id':_0x28dfe1[_0xaaa0('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2850a6,null))['then'](function(_0x4dafc6){if(_0x4dafc6){_0x1c4eb=_0x4dafc6;_0x2c00ee[_0xaaa0('0x2d')]=_['keys'](db[_0xaaa0('0x48')][_0xaaa0('0x41')]);_0x2c00ee['query']=_[_0xaaa0('0x40')](_0x28dfe1['query']);_0x2c00ee[_0xaaa0('0x2c')]=_[_0xaaa0('0x2f')](_0x2c00ee[_0xaaa0('0x2d')],_0x2c00ee[_0xaaa0('0x2b')]);_0x453b38[_0xaaa0('0x2e')]=_[_0xaaa0('0x2f')](_0x2c00ee['model'],qs[_0xaaa0('0x30')](_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x30')]));_0x453b38['attributes']=_0x453b38[_0xaaa0('0x2e')][_0xaaa0('0x42')]?_0x453b38[_0xaaa0('0x2e')]:_0x2c00ee[_0xaaa0('0x2d')];_0x453b38['order']=qs[_0xaaa0('0x49')](_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x49')]);_0x453b38[_0xaaa0('0x34')]=qs['filters'](_[_0xaaa0('0x4a')](_0x28dfe1[_0xaaa0('0x2b')],_0x2c00ee[_0xaaa0('0x2c')]));if(_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x35')]){_0x453b38[_0xaaa0('0x34')]=_['merge'](_0x453b38[_0xaaa0('0x34')],{'$or':_[_0xaaa0('0x37')](_0x453b38[_0xaaa0('0x2e')],function(_0x3c95ff){var _0x245767={};_0x245767[_0x3c95ff]={'$like':'%'+_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x35')]+'%'};return _0x245767;})});}_0x453b38=_[_0xaaa0('0x36')]({},_0x453b38,_0x28dfe1[_0xaaa0('0x39')]);return _0x1c4eb[_0xaaa0('0x46')](_0x453b38);}})[_0xaaa0('0x22')](function(_0x1331eb){if(_0x1331eb){_0x1d7adf=_0x1331eb['length'];if(!_0x28dfe1['query'][_0xaaa0('0x31')](_0xaaa0('0x32'))){_0x453b38['limit']=qs[_0xaaa0('0x1a')](_0x28dfe1['query'][_0xaaa0('0x1a')]);_0x453b38[_0xaaa0('0x18')]=qs[_0xaaa0('0x18')](_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x18')]);}return _0x1c4eb[_0xaaa0('0x46')](_0x453b38);}})['then'](function(_0x9c3d49){if(_0x9c3d49){return _0x9c3d49?{'count':_0x1d7adf,'rows':_0x9c3d49}:null;}})[_0xaaa0('0x22')](respondWithResult(_0x2850a6,null))['catch'](handleError(_0x2850a6,null));};exports['addConfiguration']=function(_0x51a039,_0x38a4ff,_0x513fbb){if(_0x51a039[_0xaaa0('0x45')]['id']){delete _0x51a039['body']['id'];}return db[_0xaaa0('0x29')][_0xaaa0('0x47')]({'where':{'id':_0x51a039[_0xaaa0('0x3f')]['id']}})[_0xaaa0('0x22')](handleEntityNotFound(_0x38a4ff,null))[_0xaaa0('0x22')](function(_0x5d1af4){if(_0x5d1af4){_0x51a039[_0xaaa0('0x45')][_0xaaa0('0x4b')]=_0x5d1af4['id'];_0x51a039[_0xaaa0('0x45')][_0xaaa0('0x4c')]=integrations['getSubjects'](_0x51a039[_0xaaa0('0x45')]['channel'],_0x51a039[_0xaaa0('0x45')]['type']);_0x51a039[_0xaaa0('0x45')]['Descriptions']=integrations[_0xaaa0('0x4d')](_0x51a039[_0xaaa0('0x45')]['channel'],_0x51a039[_0xaaa0('0x45')]['type']);return db[_0xaaa0('0x48')][_0xaaa0('0x44')](_0x51a039[_0xaaa0('0x45')],{'include':[{'model':db[_0xaaa0('0x4e')],'as':'Subjects'},{'model':db['FreshsalesField'],'as':'Descriptions'}]});}return null;})[_0xaaa0('0x22')](respondWithResult(_0x38a4ff,null))[_0xaaa0('0x3d')](handleError(_0x38a4ff,null));};exports[_0xaaa0('0x4f')]=function(_0xe28122,_0x4a3855,_0x4e468c){var _0x2240ce='';var _0x4009f3='';return db[_0xaaa0('0x29')][_0xaaa0('0x47')]({'where':{'id':_0xe28122[_0xaaa0('0x3f')]['id']},'attributes':['id',_0xaaa0('0x50'),'remoteUri',_0xaaa0('0x51')]})[_0xaaa0('0x22')](handleEntityNotFound(_0x4a3855,null))[_0xaaa0('0x22')](function(_0x24b823){if(_0x24b823){_0x4009f3=_0x24b823[_0xaaa0('0x50')];_0x2240ce=_0x24b823[_0xaaa0('0x52')];var _0x3976cc=_0x24b823['remoteUri'][_0xaaa0('0x53')](-0x1);if(_0x3976cc==='/'){_0x2240ce=_0x2240ce[_0xaaa0('0x54')](0x0,_0x2240ce['lastIndexOf'](_0x3976cc));}return rp({'method':_0xaaa0('0x55'),'uri':util[_0xaaa0('0x56')](_0xaaa0('0x57'),_0x2240ce,_0xaaa0('0x58')),'headers':{'Authorization':_0xaaa0('0x59')+_0x24b823[_0xaaa0('0x51')]},'json':!![]});}})[_0xaaa0('0x22')](function(_0x4f731c){if(_0x4f731c){var _0x11e15b=_0x4f731c[_0xaaa0('0x5a')];var _0x5bcdce=![];var _0x352240=null;for(_0x352240=0x0;_0x352240<_0x11e15b[_0xaaa0('0x42')];_0x352240++){if(_0x11e15b[_0x352240][_0xaaa0('0x5b')]===_0x4009f3){_0x5bcdce=!![];}}if(_0x5bcdce){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})['then'](respondWithResult(_0x4a3855,null))[_0xaaa0('0x3d')](function(_0x42de80){var _0x498f99=_0xe28122[_0xaaa0('0x2b')][_0xaaa0('0x5c')]?0x1f4:_0x42de80[_0xaaa0('0x5d')]||0x1f4;logger['error'](_0xaaa0('0x5e'),_0xaaa0('0x4f'),_0x498f99,JSON['stringify'](_0x42de80));delete _0x42de80[_0xaaa0('0x26')];if(_0x498f99===0x191){_0x498f99=0x190;}_0x4a3855['status'](_0x498f99)['send'](_0xe28122[_0xaaa0('0x2b')][_0xaaa0('0x5c')]?{'message':_0xaaa0('0x5f'),'statusCode':_0x42de80['statusCode']}:_0x42de80);});};
\ No newline at end of file
index a5ca4d7..01f24e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','define','FreshsalesAccount','int_freshsales_accounts'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4991,0xf7));var _0x1499=function(_0x370eb8,_0x4843e9){_0x370eb8=_0x370eb8-0x0;var _0x2dc19f=_0x4991[_0x370eb8];return _0x2dc19f;};'use strict';var _=require(_0x1499('0x0'));var util=require('util');var logger=require(_0x1499('0x1'))('api');var moment=require(_0x1499('0x2'));var BPromise=require(_0x1499('0x3'));var rp=require(_0x1499('0x4'));var fs=require('fs');var path=require(_0x1499('0x5'));var rimraf=require(_0x1499('0x6'));var config=require(_0x1499('0x7'));var attributes=require(_0x1499('0x8'));var integrations=require(_0x1499('0x9'));module['exports']=function(_0x2a8e96,_0x1c3bd7){return _0x2a8e96[_0x1499('0xa')](_0x1499('0xb'),attributes,{'tableName':_0x1499('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe3da=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts','lodash','util','../../config/logger','api'];(function(_0x3ec0bd,_0x162d62){var _0x5b2a28=function(_0x16f417){while(--_0x16f417){_0x3ec0bd['push'](_0x3ec0bd['shift']());}};_0x5b2a28(++_0x162d62);}(_0xe3da,0x1cd));var _0xae3d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe3da[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));var integrations=require(_0xae3d('0xb'));module[_0xae3d('0xc')]=function(_0xa54808,_0x476579){return _0xa54808[_0xae3d('0xd')]('FreshsalesAccount',attributes,{'tableName':_0xae3d('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 25a73ab..b23f7c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['find','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','FreshsalesAccount,\x20%s,\x20%s','message','result','catch','FreshsalesAccount','findAll','options','raw','where','include','map','model','attributes','GetFreshsalesAccount','ShowFreshsalesAccount'];(function(_0xdb0135,_0x3fc134){var _0x15be3e=function(_0x38a7a0){while(--_0x38a7a0){_0xdb0135['push'](_0xdb0135['shift']());}};_0x15be3e(++_0x3fc134);}(_0x0295,0x1f0));var _0x5029=function(_0x79ef34,_0x42d1a1){_0x79ef34=_0x79ef34-0x0;var _0x43d708=_0x0295[_0x79ef34];return _0x43d708;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('FreshsalesAccount,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}exports['GetFreshsalesAccount']=function(_0x1ed567){var _0x31a155=this;return new Promise(function(_0x35de81,_0x4902f3){return db[_0x5029('0x15')][_0x5029('0x16')]({'raw':_0x1ed567[_0x5029('0x17')]?_0x1ed567['options'][_0x5029('0x18')]===undefined?!![]:![]:!![],'where':_0x1ed567['options']?_0x1ed567[_0x5029('0x17')][_0x5029('0x19')]||null:null,'attributes':_0x1ed567[_0x5029('0x17')]?_0x1ed567[_0x5029('0x17')]['attributes']||null:null,'limit':_0x1ed567['options']?_0x1ed567[_0x5029('0x17')]['limit']||null:null,'include':_0x1ed567[_0x5029('0x17')]?_0x1ed567[_0x5029('0x17')][_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x1ed567[_0x5029('0x17')][_0x5029('0x1a')],function(_0x125c26){return{'model':db[_0x125c26[_0x5029('0x1c')]],'as':_0x125c26['as'],'attributes':_0x125c26[_0x5029('0x1d')],'include':_0x125c26['include']?_['map'](_0x125c26['include'],function(_0x588d90){return{'model':db[_0x588d90[_0x5029('0x1c')]],'as':_0x588d90['as'],'attributes':_0x588d90['attributes'],'include':_0x588d90['include']?_[_0x5029('0x1b')](_0x588d90[_0x5029('0x1a')],function(_0x36d810){return{'model':db[_0x36d810['model']],'as':_0x36d810['as'],'attributes':_0x36d810[_0x5029('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5029('0xa')](function(_0x5e45c4){logger[_0x5029('0xb')](_0x5029('0x1e'),_0x1ed567);logger[_0x5029('0xd')]('GetFreshsalesAccount',_0x1ed567,JSON[_0x5029('0xf')](_0x5e45c4));_0x35de81(_0x5e45c4);})[_0x5029('0x14')](function(_0xe5313e){logger['error'](_0x5029('0x1e'),_0xe5313e[_0x5029('0x12')],_0x1ed567);_0x4902f3(_0x31a155['error'](0x1f4,_0xe5313e[_0x5029('0x12')]));});});};exports[_0x5029('0x1f')]=function(_0x4434ff){var _0x1c3dd9=this;return new Promise(function(_0x196830,_0x2a1ed6){return db[_0x5029('0x15')][_0x5029('0x20')]({'raw':_0x4434ff[_0x5029('0x17')]?_0x4434ff[_0x5029('0x17')][_0x5029('0x18')]===undefined?!![]:![]:!![],'where':_0x4434ff[_0x5029('0x17')]?_0x4434ff['options'][_0x5029('0x19')]||null:null,'attributes':_0x4434ff['options']?_0x4434ff[_0x5029('0x17')]['attributes']||null:null,'include':_0x4434ff['options']?_0x4434ff[_0x5029('0x17')][_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x4434ff['options'][_0x5029('0x1a')],function(_0x15d882){return{'model':db[_0x15d882[_0x5029('0x1c')]],'as':_0x15d882['as'],'attributes':_0x15d882[_0x5029('0x1d')],'include':_0x15d882[_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x15d882[_0x5029('0x1a')],function(_0x22205e){return{'model':db[_0x22205e[_0x5029('0x1c')]],'as':_0x22205e['as'],'attributes':_0x22205e['attributes'],'include':_0x22205e[_0x5029('0x1a')]?_[_0x5029('0x1b')](_0x22205e[_0x5029('0x1a')],function(_0x1b3817){return{'model':db[_0x1b3817['model']],'as':_0x1b3817['as'],'attributes':_0x1b3817[_0x5029('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5029('0xa')](function(_0x3e2d88){logger['info']('ShowFreshsalesAccount',_0x4434ff);logger[_0x5029('0xd')](_0x5029('0x1f'),_0x4434ff,JSON['stringify'](_0x3e2d88));_0x196830(_0x3e2d88);})['catch'](function(_0x9656f2){logger[_0x5029('0x10')](_0x5029('0x1f'),_0x9656f2[_0x5029('0x12')],_0x4434ff);_0x2a1ed6(_0x1c3dd9[_0x5029('0x10')](0x1f4,_0x9656f2[_0x5029('0x12')]));});});};
\ No newline at end of file
+var _0x4975=['jayson/promise','http','request','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','FreshsalesAccount','findAll','options','raw','where','attributes','include','map','model','GetFreshsalesAccount','ShowFreshsalesAccount','find','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4975,0x86));var _0x5497=function(_0x340e82,_0x436242){_0x340e82=_0x340e82-0x0;var _0x5629bc=_0x4975[_0x340e82];return _0x5629bc;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}exports['GetFreshsalesAccount']=function(_0x3f4d20){var _0x1bf442=this;return new Promise(function(_0x3a47fd,_0x5d9e24){return db[_0x5497('0x17')][_0x5497('0x18')]({'raw':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1a')]===undefined?!![]:![]:!![],'where':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1b')]||null:null,'attributes':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1c')]||null:null,'limit':_0x3f4d20['options']?_0x3f4d20[_0x5497('0x19')]['limit']||null:null,'include':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x3f4d20[_0x5497('0x19')][_0x5497('0x1d')],function(_0x5018fa){return{'model':db[_0x5018fa['model']],'as':_0x5018fa['as'],'attributes':_0x5018fa[_0x5497('0x1c')],'include':_0x5018fa[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x5018fa[_0x5497('0x1d')],function(_0x5223b5){return{'model':db[_0x5223b5[_0x5497('0x1f')]],'as':_0x5223b5['as'],'attributes':_0x5223b5['attributes'],'include':_0x5223b5[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x5223b5[_0x5497('0x1d')],function(_0x34a1a5){return{'model':db[_0x34a1a5[_0x5497('0x1f')]],'as':_0x34a1a5['as'],'attributes':_0x34a1a5[_0x5497('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4af5f4){logger['info']('GetFreshsalesAccount',_0x3f4d20);logger['debug'](_0x5497('0x20'),_0x3f4d20,JSON['stringify'](_0x4af5f4));_0x3a47fd(_0x4af5f4);})['catch'](function(_0xc3465){logger[_0x5497('0x13')](_0x5497('0x20'),_0xc3465['message'],_0x3f4d20);_0x5d9e24(_0x1bf442['error'](0x1f4,_0xc3465['message']));});});};exports[_0x5497('0x21')]=function(_0x471e0b){var _0xf4c117=this;return new Promise(function(_0x5b8f79,_0x489f71){return db['FreshsalesAccount'][_0x5497('0x22')]({'raw':_0x471e0b['options']?_0x471e0b[_0x5497('0x19')][_0x5497('0x1a')]===undefined?!![]:![]:!![],'where':_0x471e0b[_0x5497('0x19')]?_0x471e0b['options'][_0x5497('0x1b')]||null:null,'attributes':_0x471e0b[_0x5497('0x19')]?_0x471e0b['options'][_0x5497('0x1c')]||null:null,'include':_0x471e0b[_0x5497('0x19')]?_0x471e0b[_0x5497('0x19')]['include']?_[_0x5497('0x1e')](_0x471e0b[_0x5497('0x19')][_0x5497('0x1d')],function(_0x362b96){return{'model':db[_0x362b96[_0x5497('0x1f')]],'as':_0x362b96['as'],'attributes':_0x362b96['attributes'],'include':_0x362b96[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x362b96['include'],function(_0x1ffc9b){return{'model':db[_0x1ffc9b[_0x5497('0x1f')]],'as':_0x1ffc9b['as'],'attributes':_0x1ffc9b[_0x5497('0x1c')],'include':_0x1ffc9b[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x1ffc9b[_0x5497('0x1d')],function(_0x580e86){return{'model':db[_0x580e86[_0x5497('0x1f')]],'as':_0x580e86['as'],'attributes':_0x580e86['attributes']};}):[]};}):[]};}):[]:[]})[_0x5497('0x23')](function(_0x212199){logger[_0x5497('0xd')]('ShowFreshsalesAccount',_0x471e0b);logger['debug'](_0x5497('0x21'),_0x471e0b,JSON[_0x5497('0x12')](_0x212199));_0x5b8f79(_0x212199);})[_0x5497('0x16')](function(_0x429cbf){logger[_0x5497('0x13')](_0x5497('0x21'),_0x429cbf['message'],_0x471e0b);_0x489f71(_0xf4c117[_0x5497('0x13')](0x1f4,_0x429cbf[_0x5497('0x14')]));});});};
\ No newline at end of file
index 1d2d213..9192469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfabd=['multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/subjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create','put','delete','destroy','exports'];(function(_0x537a99,_0x55882b){var _0x20af71=function(_0x3ad522){while(--_0x3ad522){_0x537a99['push'](_0x537a99['shift']());}};_0x20af71(++_0x55882b);}(_0xfabd,0x90));var _0xdfab=function(_0x10877d,_0x1e228a){_0x10877d=_0x10877d-0x0;var _0x9b9adf=_0xfabd[_0x10877d];return _0x9b9adf;};'use strict';var multer=require(_0xdfab('0x0'));var util=require(_0xdfab('0x1'));var path=require('path');var timeout=require(_0xdfab('0x2'));var express=require(_0xdfab('0x3'));var router=express[_0xdfab('0x4')]();var fs_extra=require(_0xdfab('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdfab('0x6'));var config=require('../../config/environment');var controller=require(_0xdfab('0x7'));router[_0xdfab('0x8')]('/',auth[_0xdfab('0x9')](),controller[_0xdfab('0xa')]);router['get'](_0xdfab('0xb'),auth['isAuthenticated'](),controller[_0xdfab('0xc')]);router[_0xdfab('0x8')](_0xdfab('0xd'),auth[_0xdfab('0x9')](),controller['getSubjects']);router[_0xdfab('0x8')](_0xdfab('0xe'),auth[_0xdfab('0x9')](),controller[_0xdfab('0xf')]);router[_0xdfab('0x8')](_0xdfab('0x10'),auth[_0xdfab('0x9')](),controller[_0xdfab('0x11')]);router[_0xdfab('0x12')]('/',auth[_0xdfab('0x9')](),controller[_0xdfab('0x13')]);router[_0xdfab('0x14')](_0xdfab('0xb'),auth[_0xdfab('0x9')](),controller['update']);router[_0xdfab('0x15')](_0xdfab('0xb'),auth[_0xdfab('0x9')](),controller[_0xdfab('0x16')]);module[_0xdfab('0x17')]=router;
\ No newline at end of file
+var _0xe608=['/:id/subjects','getSubjects','getDescriptions','post','put','update','delete','destroy','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesConfiguration.controller','get','index','/:id','isAuthenticated'];(function(_0x20ad0d,_0x54e2fd){var _0x500d75=function(_0x5abcda){while(--_0x5abcda){_0x20ad0d['push'](_0x20ad0d['shift']());}};_0x500d75(++_0x54e2fd);}(_0xe608,0xa1));var _0x8e60=function(_0x38eb23,_0x196e8b){_0x38eb23=_0x38eb23-0x0;var _0x48506a=_0xe608[_0x38eb23];return _0x48506a;};'use strict';var multer=require(_0x8e60('0x0'));var util=require('util');var path=require(_0x8e60('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x8e60('0x2'));var auth=require(_0x8e60('0x3'));var interaction=require(_0x8e60('0x4'));var config=require('../../config/environment');var controller=require(_0x8e60('0x5'));router[_0x8e60('0x6')]('/',auth['isAuthenticated'](),controller[_0x8e60('0x7')]);router[_0x8e60('0x6')](_0x8e60('0x8'),auth[_0x8e60('0x9')](),controller['show']);router[_0x8e60('0x6')](_0x8e60('0xa'),auth[_0x8e60('0x9')](),controller[_0x8e60('0xb')]);router[_0x8e60('0x6')]('/:id/descriptions',auth[_0x8e60('0x9')](),controller[_0x8e60('0xc')]);router[_0x8e60('0x6')]('/:id/fields',auth[_0x8e60('0x9')](),controller['getFields']);router[_0x8e60('0xd')]('/',auth[_0x8e60('0x9')](),controller['create']);router[_0x8e60('0xe')]('/:id',auth[_0x8e60('0x9')](),controller[_0x8e60('0xf')]);router[_0x8e60('0x10')]('/:id',auth[_0x8e60('0x9')](),controller[_0x8e60('0x11')]);module[_0x8e60('0x12')]=router;
\ No newline at end of file
index d95e5fb..08f6ffa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed96=['STRING'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0xed96,0x1bc));var _0x6ed9=function(_0xab39a,_0x9d1016){_0xab39a=_0xab39a-0x0;var _0x17bbe2=_0xed96[_0xab39a];return _0x17bbe2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6ed9('0x0')]},'description':{'type':Sequelize[_0x6ed9('0x0')]}};
\ No newline at end of file
+var _0x1454=['sequelize','exports','STRING'];(function(_0xd506f7,_0x54c409){var _0x4f74fa=function(_0xbc8171){while(--_0xbc8171){_0xd506f7['push'](_0xd506f7['shift']());}};_0x4f74fa(++_0x54c409);}(_0x1454,0x132));var _0x4145=function(_0x4e6e44,_0xcfef35){_0x4e6e44=_0x4e6e44-0x0;var _0x1bfc2a=_0x1454[_0x4e6e44];return _0x1bfc2a;};'use strict';var Sequelize=require(_0x4145('0x0'));module[_0x4145('0x1')]={'name':{'type':Sequelize[_0x4145('0x2')]},'description':{'type':Sequelize[_0x4145('0x2')]}};
\ No newline at end of file
index 1e4cbe4..62b7e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f25=['where','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','findOne','getDescriptions','getFields','FreshsalesField','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','then','stack','name','send','index','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter'];(function(_0x5bd11b,_0x48800d){var _0x1ad6ba=function(_0x5b4f07){while(--_0x5b4f07){_0x5bd11b['push'](_0x5bd11b['shift']());}};_0x1ad6ba(++_0x48800d);}(_0x5f25,0xfa));var _0x55f2=function(_0x39cdb8,_0x15ee98){_0x39cdb8=_0x39cdb8-0x0;var _0x44bbc9=_0x5f25[_0x39cdb8];return _0x44bbc9;};'use strict';var emlformat=require(_0x55f2('0x0'));var rimraf=require(_0x55f2('0x1'));var zipdir=require(_0x55f2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x55f2('0x3'));var BPromise=require(_0x55f2('0x4'));var Mustache=require('mustache');var util=require(_0x55f2('0x5'));var path=require(_0x55f2('0x6'));var sox=require(_0x55f2('0x7'));var csv=require(_0x55f2('0x8'));var ejs=require(_0x55f2('0x9'));var fs=require('fs');var fs_extra=require(_0x55f2('0xa'));var _=require(_0x55f2('0xb'));var squel=require('squel');var crypto=require(_0x55f2('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x55f2('0xd'));var Papa=require(_0x55f2('0xe'));var Redis=require(_0x55f2('0xf'));var authService=require(_0x55f2('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x55f2('0x11'));var logger=require(_0x55f2('0x12'))(_0x55f2('0x13'));var utils=require('../../config/utils');var config=require(_0x55f2('0x14'));var licenseUtil=require(_0x55f2('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2509ed,_0x36276f){_0x36276f=_0x36276f||0xcc;return function(_0x5c0f70){if(_0x5c0f70){return _0x2509ed[_0x55f2('0x16')](_0x36276f);}return _0x2509ed[_0x55f2('0x17')](_0x36276f)[_0x55f2('0x18')]();};}function respondWithResult(_0xc24ba0,_0x23d4f9){_0x23d4f9=_0x23d4f9||0xc8;return function(_0x1cf9c3){if(_0x1cf9c3){return _0xc24ba0['status'](_0x23d4f9)['json'](_0x1cf9c3);}};}function respondWithFilteredResult(_0x421dc9,_0x7281c5){return function(_0x5e95a4){if(_0x5e95a4){var _0x1a5c2a=typeof _0x7281c5[_0x55f2('0x19')]===_0x55f2('0x1a')&&typeof _0x7281c5[_0x55f2('0x1b')]===_0x55f2('0x1a');var _0x37b070=_0x5e95a4[_0x55f2('0x1c')];var _0x419a18=_0x1a5c2a?0x0:_0x7281c5[_0x55f2('0x19')];var _0x202b6b=_0x1a5c2a?_0x5e95a4[_0x55f2('0x1c')]:_0x7281c5[_0x55f2('0x19')]+_0x7281c5[_0x55f2('0x1b')];var _0x13c133;if(_0x202b6b>=_0x37b070){_0x202b6b=_0x37b070;_0x13c133=0xc8;}else{_0x13c133=0xce;}_0x421dc9[_0x55f2('0x17')](_0x13c133);return _0x421dc9[_0x55f2('0x1d')]('Content-Range',_0x419a18+'-'+_0x202b6b+'/'+_0x37b070)[_0x55f2('0x1e')](_0x5e95a4);}return null;};}function patchUpdates(_0x5ce6d5){return function(_0x557327){try{jsonpatch[_0x55f2('0x1f')](_0x557327,_0x5ce6d5,!![]);}catch(_0x48f374){return BPromise[_0x55f2('0x20')](_0x48f374);}return _0x557327[_0x55f2('0x21')]();};}function saveUpdates(_0x1474dc,_0x3e6a63){return function(_0x4f2a95){if(_0x4f2a95){return _0x4f2a95[_0x55f2('0x22')](_0x1474dc)['then'](function(_0x3eb145){return _0x3eb145;});}return null;};}function removeEntity(_0x118eba,_0x2ce775){return function(_0xa8169a){if(_0xa8169a){return _0xa8169a[_0x55f2('0x23')]()[_0x55f2('0x24')](function(){_0x118eba[_0x55f2('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x195bfe,_0x152d63){return function(_0x1d5927){if(!_0x1d5927){_0x195bfe[_0x55f2('0x16')](0x194);}return _0x1d5927;};}function handleError(_0x648b23,_0x2d3ef6){_0x2d3ef6=_0x2d3ef6||0x1f4;return function(_0x28cd5c){logger['error'](_0x28cd5c[_0x55f2('0x25')]);if(_0x28cd5c[_0x55f2('0x26')]){delete _0x28cd5c[_0x55f2('0x26')];}_0x648b23[_0x55f2('0x17')](_0x2d3ef6)[_0x55f2('0x27')](_0x28cd5c);};}exports[_0x55f2('0x28')]=function(_0x278fa0,_0x4f9e9b){var _0x3d29e7={},_0x39fb89={},_0x1dd931={'count':0x0,'rows':[]};var _0x3ba0ab=_['map'](db[_0x55f2('0x29')][_0x55f2('0x2a')],function(_0x359759){return{'name':_0x359759[_0x55f2('0x2b')],'type':_0x359759[_0x55f2('0x2c')][_0x55f2('0x2d')]};});_0x39fb89[_0x55f2('0x2e')]=_['map'](_0x3ba0ab,_0x55f2('0x26'));_0x39fb89['query']=_['keys'](_0x278fa0[_0x55f2('0x2f')]);_0x39fb89[_0x55f2('0x30')]=_['intersection'](_0x39fb89[_0x55f2('0x2e')],_0x39fb89[_0x55f2('0x2f')]);_0x3d29e7[_0x55f2('0x31')]=_[_0x55f2('0x32')](_0x39fb89[_0x55f2('0x2e')],qs[_0x55f2('0x33')](_0x278fa0[_0x55f2('0x2f')][_0x55f2('0x33')]));_0x3d29e7['attributes']=_0x3d29e7[_0x55f2('0x31')][_0x55f2('0x34')]?_0x3d29e7[_0x55f2('0x31')]:_0x39fb89[_0x55f2('0x2e')];if(!_0x278fa0[_0x55f2('0x2f')][_0x55f2('0x35')]('nolimit')){_0x3d29e7[_0x55f2('0x1b')]=qs[_0x55f2('0x1b')](_0x278fa0[_0x55f2('0x2f')][_0x55f2('0x1b')]);_0x3d29e7[_0x55f2('0x19')]=qs[_0x55f2('0x19')](_0x278fa0[_0x55f2('0x2f')][_0x55f2('0x19')]);}_0x3d29e7[_0x55f2('0x36')]=qs[_0x55f2('0x37')](_0x278fa0['query']['sort']);_0x3d29e7['where']=qs['filters'](_[_0x55f2('0x38')](_0x278fa0[_0x55f2('0x2f')],_0x39fb89[_0x55f2('0x30')]),_0x3ba0ab);if(_0x278fa0[_0x55f2('0x2f')][_0x55f2('0x39')]){_0x3d29e7[_0x55f2('0x3a')]=_[_0x55f2('0x3b')](_0x3d29e7[_0x55f2('0x3a')],{'$or':_[_0x55f2('0x3c')](_0x3ba0ab,function(_0x2fd3bc){if(_0x2fd3bc[_0x55f2('0x2c')]!==_0x55f2('0x3d')){var _0x270b1f={};_0x270b1f[_0x2fd3bc[_0x55f2('0x26')]]={'$like':'%'+_0x278fa0['query'][_0x55f2('0x39')]+'%'};return _0x270b1f;}})});}_0x3d29e7=_[_0x55f2('0x3b')]({},_0x3d29e7,_0x278fa0[_0x55f2('0x3e')]);var _0x5d17e9={'where':_0x3d29e7[_0x55f2('0x3a')]};return db['FreshsalesConfiguration'][_0x55f2('0x1c')](_0x5d17e9)[_0x55f2('0x24')](function(_0x3376d5){_0x1dd931[_0x55f2('0x1c')]=_0x3376d5;if(_0x278fa0['query'][_0x55f2('0x3f')]){_0x3d29e7[_0x55f2('0x40')]=[{'all':!![]}];}return db[_0x55f2('0x29')][_0x55f2('0x41')](_0x3d29e7);})['then'](function(_0x125b45){_0x1dd931[_0x55f2('0x42')]=_0x125b45;return _0x1dd931;})[_0x55f2('0x24')](respondWithFilteredResult(_0x4f9e9b,_0x3d29e7))['catch'](handleError(_0x4f9e9b,null));};exports['show']=function(_0x35ed56,_0x26c607){var _0x4e2124={'raw':![],'where':{'id':_0x35ed56[_0x55f2('0x43')]['id']}},_0x4eb5cf={};_0x4eb5cf['model']=_['keys'](db[_0x55f2('0x29')][_0x55f2('0x2a')]);_0x4eb5cf[_0x55f2('0x2f')]=_[_0x55f2('0x44')](_0x35ed56[_0x55f2('0x2f')]);_0x4eb5cf[_0x55f2('0x30')]=_[_0x55f2('0x32')](_0x4eb5cf['model'],_0x4eb5cf['query']);_0x4e2124[_0x55f2('0x31')]=_[_0x55f2('0x32')](_0x4eb5cf[_0x55f2('0x2e')],qs[_0x55f2('0x33')](_0x35ed56[_0x55f2('0x2f')][_0x55f2('0x33')]));_0x4e2124['attributes']=_0x4e2124[_0x55f2('0x31')][_0x55f2('0x34')]?_0x4e2124[_0x55f2('0x31')]:_0x4eb5cf['model'];if(_0x35ed56[_0x55f2('0x2f')][_0x55f2('0x3f')]){_0x4e2124[_0x55f2('0x40')]=[{'all':!![]}];}_0x4e2124=_[_0x55f2('0x3b')]({},_0x4e2124,_0x35ed56[_0x55f2('0x3e')]);return db['FreshsalesConfiguration'][_0x55f2('0x45')](_0x4e2124)[_0x55f2('0x24')](handleEntityNotFound(_0x26c607,null))[_0x55f2('0x24')](respondWithResult(_0x26c607,null))[_0x55f2('0x46')](handleError(_0x26c607,null));};exports[_0x55f2('0x47')]=function(_0x36e5e9,_0x31fcf7){return db[_0x55f2('0x29')][_0x55f2('0x47')](_0x36e5e9['body'],{})[_0x55f2('0x24')](respondWithResult(_0x31fcf7,0xc9))[_0x55f2('0x46')](handleError(_0x31fcf7,null));};exports[_0x55f2('0x22')]=function(_0x421b94,_0x21a5a4){if(_0x421b94[_0x55f2('0x48')]['id']){delete _0x421b94[_0x55f2('0x48')]['id'];}return db['FreshsalesConfiguration'][_0x55f2('0x45')]({'where':{'id':_0x421b94[_0x55f2('0x43')]['id']}})['then'](handleEntityNotFound(_0x21a5a4,null))['then'](saveUpdates(_0x421b94[_0x55f2('0x48')],null))[_0x55f2('0x24')](respondWithResult(_0x21a5a4,null))[_0x55f2('0x46')](handleError(_0x21a5a4,null));};exports['destroy']=function(_0xbec0c3,_0x25a6a5){return db[_0x55f2('0x29')][_0x55f2('0x45')]({'where':{'id':_0xbec0c3[_0x55f2('0x43')]['id']}})['then'](handleEntityNotFound(_0x25a6a5,null))[_0x55f2('0x24')](removeEntity(_0x25a6a5,null))[_0x55f2('0x46')](handleError(_0x25a6a5,null));};exports['getSubjects']=function(_0x440aca,_0x319c1b,_0x5938f3){var _0x1cd27a={};var _0x388273={};var _0x3cd038;var _0x243d80;return db['FreshsalesConfiguration'][_0x55f2('0x49')]({'where':{'id':_0x440aca[_0x55f2('0x43')]['id']}})[_0x55f2('0x24')](handleEntityNotFound(_0x319c1b,null))[_0x55f2('0x24')](function(_0x78a5a5){if(_0x78a5a5){_0x3cd038=_0x78a5a5;_0x388273[_0x55f2('0x2e')]=_[_0x55f2('0x44')](db['FreshsalesField'][_0x55f2('0x2a')]);_0x388273[_0x55f2('0x2f')]=_[_0x55f2('0x44')](_0x440aca[_0x55f2('0x2f')]);_0x388273['filters']=_['intersection'](_0x388273[_0x55f2('0x2e')],_0x388273[_0x55f2('0x2f')]);_0x1cd27a[_0x55f2('0x31')]=_[_0x55f2('0x32')](_0x388273[_0x55f2('0x2e')],qs[_0x55f2('0x33')](_0x440aca['query'][_0x55f2('0x33')]));_0x1cd27a['attributes']=_0x1cd27a[_0x55f2('0x31')][_0x55f2('0x34')]?_0x1cd27a[_0x55f2('0x31')]:_0x388273[_0x55f2('0x2e')];_0x1cd27a['order']=qs[_0x55f2('0x37')](_0x440aca[_0x55f2('0x2f')][_0x55f2('0x37')]);_0x1cd27a[_0x55f2('0x3a')]=qs[_0x55f2('0x30')](_[_0x55f2('0x38')](_0x440aca[_0x55f2('0x2f')],_0x388273[_0x55f2('0x30')]));if(_0x440aca[_0x55f2('0x2f')][_0x55f2('0x39')]){_0x1cd27a[_0x55f2('0x3a')]=_['merge'](_0x1cd27a['where'],{'$or':_[_0x55f2('0x3c')](_0x1cd27a[_0x55f2('0x31')],function(_0x43e22f){var _0x2fb337={};_0x2fb337[_0x43e22f]={'$like':'%'+_0x440aca[_0x55f2('0x2f')][_0x55f2('0x39')]+'%'};return _0x2fb337;})});}_0x1cd27a=_[_0x55f2('0x3b')]({},_0x1cd27a,_0x440aca['options']);return _0x3cd038['getSubjects'](_0x1cd27a);}})[_0x55f2('0x24')](function(_0x9c803d){if(_0x9c803d){_0x243d80=_0x9c803d['length'];if(!_0x440aca['query'][_0x55f2('0x35')]('nolimit')){_0x1cd27a[_0x55f2('0x1b')]=qs['limit'](_0x440aca[_0x55f2('0x2f')]['limit']);_0x1cd27a[_0x55f2('0x19')]=qs[_0x55f2('0x19')](_0x440aca[_0x55f2('0x2f')][_0x55f2('0x19')]);}return _0x3cd038['getSubjects'](_0x1cd27a);}})['then'](function(_0x41da40){if(_0x41da40){return _0x41da40?{'count':_0x243d80,'rows':_0x41da40}:null;}})[_0x55f2('0x24')](respondWithResult(_0x319c1b,null))['catch'](handleError(_0x319c1b,null));};exports[_0x55f2('0x4a')]=function(_0x2cf910,_0x463b29,_0x5b8eb3){var _0x227c19={};var _0x45453f={};var _0x16cc77;var _0x5ca2d3;return db[_0x55f2('0x29')][_0x55f2('0x49')]({'where':{'id':_0x2cf910[_0x55f2('0x43')]['id']}})[_0x55f2('0x24')](handleEntityNotFound(_0x463b29,null))[_0x55f2('0x24')](function(_0x3cf859){if(_0x3cf859){_0x16cc77=_0x3cf859;_0x45453f['model']=_[_0x55f2('0x44')](db['FreshsalesField'][_0x55f2('0x2a')]);_0x45453f[_0x55f2('0x2f')]=_[_0x55f2('0x44')](_0x2cf910[_0x55f2('0x2f')]);_0x45453f[_0x55f2('0x30')]=_['intersection'](_0x45453f[_0x55f2('0x2e')],_0x45453f[_0x55f2('0x2f')]);_0x227c19[_0x55f2('0x31')]=_[_0x55f2('0x32')](_0x45453f[_0x55f2('0x2e')],qs[_0x55f2('0x33')](_0x2cf910['query']['fields']));_0x227c19[_0x55f2('0x31')]=_0x227c19[_0x55f2('0x31')][_0x55f2('0x34')]?_0x227c19[_0x55f2('0x31')]:_0x45453f['model'];_0x227c19['order']=qs[_0x55f2('0x37')](_0x2cf910[_0x55f2('0x2f')][_0x55f2('0x37')]);_0x227c19['where']=qs['filters'](_['pick'](_0x2cf910[_0x55f2('0x2f')],_0x45453f[_0x55f2('0x30')]));if(_0x2cf910[_0x55f2('0x2f')][_0x55f2('0x39')]){_0x227c19['where']=_['merge'](_0x227c19[_0x55f2('0x3a')],{'$or':_[_0x55f2('0x3c')](_0x227c19[_0x55f2('0x31')],function(_0x14dcdf){var _0x369812={};_0x369812[_0x14dcdf]={'$like':'%'+_0x2cf910[_0x55f2('0x2f')][_0x55f2('0x39')]+'%'};return _0x369812;})});}_0x227c19=_['merge']({},_0x227c19,_0x2cf910[_0x55f2('0x3e')]);return _0x16cc77[_0x55f2('0x4a')](_0x227c19);}})[_0x55f2('0x24')](function(_0x3e94d7){if(_0x3e94d7){_0x5ca2d3=_0x3e94d7[_0x55f2('0x34')];if(!_0x2cf910[_0x55f2('0x2f')][_0x55f2('0x35')]('nolimit')){_0x227c19[_0x55f2('0x1b')]=qs[_0x55f2('0x1b')](_0x2cf910['query'][_0x55f2('0x1b')]);_0x227c19[_0x55f2('0x19')]=qs[_0x55f2('0x19')](_0x2cf910[_0x55f2('0x2f')]['offset']);}return _0x16cc77['getDescriptions'](_0x227c19);}})['then'](function(_0x7cd6bd){if(_0x7cd6bd){return _0x7cd6bd?{'count':_0x5ca2d3,'rows':_0x7cd6bd}:null;}})[_0x55f2('0x24')](respondWithResult(_0x463b29,null))[_0x55f2('0x46')](handleError(_0x463b29,null));};exports[_0x55f2('0x4b')]=function(_0x119ac5,_0x170d62,_0x4ddb70){var _0x120a30={};var _0x14fa3a={};var _0x584e38;var _0x3f8378;return db[_0x55f2('0x29')][_0x55f2('0x49')]({'where':{'id':_0x119ac5[_0x55f2('0x43')]['id']}})['then'](handleEntityNotFound(_0x170d62,null))[_0x55f2('0x24')](function(_0x531876){if(_0x531876){_0x584e38=_0x531876;_0x14fa3a[_0x55f2('0x2e')]=_[_0x55f2('0x44')](db[_0x55f2('0x4c')][_0x55f2('0x2a')]);_0x14fa3a[_0x55f2('0x2f')]=_[_0x55f2('0x44')](_0x119ac5['query']);_0x14fa3a['filters']=_[_0x55f2('0x32')](_0x14fa3a['model'],_0x14fa3a[_0x55f2('0x2f')]);_0x120a30[_0x55f2('0x31')]=_['intersection'](_0x14fa3a['model'],qs['fields'](_0x119ac5[_0x55f2('0x2f')][_0x55f2('0x33')]));_0x120a30['attributes']=_0x120a30[_0x55f2('0x31')][_0x55f2('0x34')]?_0x120a30[_0x55f2('0x31')]:_0x14fa3a['model'];_0x120a30['order']=qs['sort'](_0x119ac5[_0x55f2('0x2f')][_0x55f2('0x37')]);_0x120a30['where']=qs[_0x55f2('0x30')](_['pick'](_0x119ac5['query'],_0x14fa3a[_0x55f2('0x30')]));if(_0x119ac5[_0x55f2('0x2f')][_0x55f2('0x39')]){_0x120a30['where']=_[_0x55f2('0x3b')](_0x120a30[_0x55f2('0x3a')],{'$or':_[_0x55f2('0x3c')](_0x120a30[_0x55f2('0x31')],function(_0x1d68c6){var _0xd91571={};_0xd91571[_0x1d68c6]={'$like':'%'+_0x119ac5[_0x55f2('0x2f')][_0x55f2('0x39')]+'%'};return _0xd91571;})});}_0x120a30=_[_0x55f2('0x3b')]({},_0x120a30,_0x119ac5[_0x55f2('0x3e')]);return _0x584e38[_0x55f2('0x4b')](_0x120a30);}})[_0x55f2('0x24')](function(_0x3f36f9){if(_0x3f36f9){_0x3f8378=_0x3f36f9[_0x55f2('0x34')];if(!_0x119ac5['query'][_0x55f2('0x35')]('nolimit')){_0x120a30['limit']=qs[_0x55f2('0x1b')](_0x119ac5[_0x55f2('0x2f')]['limit']);_0x120a30[_0x55f2('0x19')]=qs[_0x55f2('0x19')](_0x119ac5['query'][_0x55f2('0x19')]);}return _0x584e38[_0x55f2('0x4b')](_0x120a30);}})['then'](function(_0x11ed26){if(_0x11ed26){return _0x11ed26?{'count':_0x3f8378,'rows':_0x11ed26}:null;}})['then'](respondWithResult(_0x170d62,null))[_0x55f2('0x46')](handleError(_0x170d62,null));};
\ No newline at end of file
+var _0x8231=['index','map','FreshsalesConfiguration','fieldName','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','rows','catch','show','rawAttributes','find','create','body','params','destroy','findOne','FreshsalesField','length','pick','getSubjects','getDescriptions','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','save','update','then','error','stack','name','send'];(function(_0x30b406,_0x5d551d){var _0x30b9a0=function(_0x87295c){while(--_0x87295c){_0x30b406['push'](_0x30b406['shift']());}};_0x30b9a0(++_0x5d551d);}(_0x8231,0x162));var _0x1823=function(_0x3b9e26,_0x7a52ac){_0x3b9e26=_0x3b9e26-0x0;var _0x4fb2be=_0x8231[_0x3b9e26];return _0x4fb2be;};'use strict';var emlformat=require(_0x1823('0x0'));var rimraf=require(_0x1823('0x1'));var zipdir=require(_0x1823('0x2'));var jsonpatch=require(_0x1823('0x3'));var rp=require(_0x1823('0x4'));var moment=require(_0x1823('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1823('0x6'));var util=require('util');var path=require(_0x1823('0x7'));var sox=require(_0x1823('0x8'));var csv=require(_0x1823('0x9'));var ejs=require(_0x1823('0xa'));var fs=require('fs');var fs_extra=require(_0x1823('0xb'));var _=require(_0x1823('0xc'));var squel=require('squel');var crypto=require(_0x1823('0xd'));var jsforce=require(_0x1823('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1823('0x9'));var querystring=require(_0x1823('0xf'));var Papa=require(_0x1823('0x10'));var Redis=require(_0x1823('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1823('0x12'));var logger=require(_0x1823('0x13'))(_0x1823('0x14'));var utils=require(_0x1823('0x15'));var config=require(_0x1823('0x16'));var licenseUtil=require(_0x1823('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d6de2,_0x278027){_0x278027=_0x278027||0xcc;return function(_0x369db3){if(_0x369db3){return _0x1d6de2[_0x1823('0x18')](_0x278027);}return _0x1d6de2[_0x1823('0x19')](_0x278027)[_0x1823('0x1a')]();};}function respondWithResult(_0xd75a9b,_0xb524e4){_0xb524e4=_0xb524e4||0xc8;return function(_0x150266){if(_0x150266){return _0xd75a9b[_0x1823('0x19')](_0xb524e4)[_0x1823('0x1b')](_0x150266);}};}function respondWithFilteredResult(_0x4038cc,_0x198963){return function(_0x39d4f5){if(_0x39d4f5){var _0x5a962a=typeof _0x198963['offset']===_0x1823('0x1c')&&typeof _0x198963[_0x1823('0x1d')]===_0x1823('0x1c');var _0x5347ae=_0x39d4f5['count'];var _0x22ee48=_0x5a962a?0x0:_0x198963[_0x1823('0x1e')];var _0x41efd5=_0x5a962a?_0x39d4f5[_0x1823('0x1f')]:_0x198963[_0x1823('0x1e')]+_0x198963[_0x1823('0x1d')];var _0x45f573;if(_0x41efd5>=_0x5347ae){_0x41efd5=_0x5347ae;_0x45f573=0xc8;}else{_0x45f573=0xce;}_0x4038cc[_0x1823('0x19')](_0x45f573);return _0x4038cc[_0x1823('0x20')](_0x1823('0x21'),_0x22ee48+'-'+_0x41efd5+'/'+_0x5347ae)[_0x1823('0x1b')](_0x39d4f5);}return null;};}function patchUpdates(_0x59eccf){return function(_0x69cfaa){try{jsonpatch['apply'](_0x69cfaa,_0x59eccf,!![]);}catch(_0x3d2884){return BPromise['reject'](_0x3d2884);}return _0x69cfaa[_0x1823('0x22')]();};}function saveUpdates(_0x52632d,_0x54f1be){return function(_0x1a76bf){if(_0x1a76bf){return _0x1a76bf[_0x1823('0x23')](_0x52632d)['then'](function(_0x3472f0){return _0x3472f0;});}return null;};}function removeEntity(_0x226a45,_0xc4a672){return function(_0x46046a){if(_0x46046a){return _0x46046a['destroy']()[_0x1823('0x24')](function(){_0x226a45[_0x1823('0x19')](0xcc)[_0x1823('0x1a')]();});}};}function handleEntityNotFound(_0x8db7fc,_0x58f609){return function(_0x29560c){if(!_0x29560c){_0x8db7fc[_0x1823('0x18')](0x194);}return _0x29560c;};}function handleError(_0x115c47,_0x4cc9ed){_0x4cc9ed=_0x4cc9ed||0x1f4;return function(_0x519a2b){logger[_0x1823('0x25')](_0x519a2b[_0x1823('0x26')]);if(_0x519a2b[_0x1823('0x27')]){delete _0x519a2b[_0x1823('0x27')];}_0x115c47[_0x1823('0x19')](_0x4cc9ed)[_0x1823('0x28')](_0x519a2b);};}exports[_0x1823('0x29')]=function(_0x5673b1,_0x3e57d8){var _0x4115ac={},_0x3add1f={},_0xc88836={'count':0x0,'rows':[]};var _0xf20a62=_[_0x1823('0x2a')](db[_0x1823('0x2b')]['rawAttributes'],function(_0x4df1e7){return{'name':_0x4df1e7[_0x1823('0x2c')],'type':_0x4df1e7['type'][_0x1823('0x2d')]};});_0x3add1f[_0x1823('0x2e')]=_['map'](_0xf20a62,_0x1823('0x27'));_0x3add1f['query']=_[_0x1823('0x2f')](_0x5673b1[_0x1823('0x30')]);_0x3add1f['filters']=_[_0x1823('0x31')](_0x3add1f[_0x1823('0x2e')],_0x3add1f[_0x1823('0x30')]);_0x4115ac['attributes']=_['intersection'](_0x3add1f[_0x1823('0x2e')],qs[_0x1823('0x32')](_0x5673b1['query'][_0x1823('0x32')]));_0x4115ac[_0x1823('0x33')]=_0x4115ac['attributes']['length']?_0x4115ac[_0x1823('0x33')]:_0x3add1f[_0x1823('0x2e')];if(!_0x5673b1['query'][_0x1823('0x34')](_0x1823('0x35'))){_0x4115ac[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x5673b1[_0x1823('0x30')][_0x1823('0x1d')]);_0x4115ac[_0x1823('0x1e')]=qs['offset'](_0x5673b1[_0x1823('0x30')]['offset']);}_0x4115ac[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x5673b1['query'][_0x1823('0x37')]);_0x4115ac[_0x1823('0x38')]=qs[_0x1823('0x39')](_['pick'](_0x5673b1[_0x1823('0x30')],_0x3add1f[_0x1823('0x39')]),_0xf20a62);if(_0x5673b1[_0x1823('0x30')][_0x1823('0x3a')]){_0x4115ac[_0x1823('0x38')]=_[_0x1823('0x3b')](_0x4115ac['where'],{'$or':_[_0x1823('0x2a')](_0xf20a62,function(_0x4dc3f7){if(_0x4dc3f7['type']!=='VIRTUAL'){var _0x5260b2={};_0x5260b2[_0x4dc3f7[_0x1823('0x27')]]={'$like':'%'+_0x5673b1['query'][_0x1823('0x3a')]+'%'};return _0x5260b2;}})});}_0x4115ac=_[_0x1823('0x3b')]({},_0x4115ac,_0x5673b1[_0x1823('0x3c')]);var _0x3a5f0d={'where':_0x4115ac[_0x1823('0x38')]};return db[_0x1823('0x2b')][_0x1823('0x1f')](_0x3a5f0d)['then'](function(_0x4a0340){_0xc88836[_0x1823('0x1f')]=_0x4a0340;if(_0x5673b1[_0x1823('0x30')][_0x1823('0x3d')]){_0x4115ac[_0x1823('0x3e')]=[{'all':!![]}];}return db['FreshsalesConfiguration']['findAll'](_0x4115ac);})[_0x1823('0x24')](function(_0x3f5cc8){_0xc88836[_0x1823('0x3f')]=_0x3f5cc8;return _0xc88836;})['then'](respondWithFilteredResult(_0x3e57d8,_0x4115ac))[_0x1823('0x40')](handleError(_0x3e57d8,null));};exports[_0x1823('0x41')]=function(_0x5a90d9,_0x100c20){var _0x178ad1={'raw':![],'where':{'id':_0x5a90d9['params']['id']}},_0x36cc99={};_0x36cc99['model']=_[_0x1823('0x2f')](db['FreshsalesConfiguration'][_0x1823('0x42')]);_0x36cc99[_0x1823('0x30')]=_[_0x1823('0x2f')](_0x5a90d9['query']);_0x36cc99['filters']=_['intersection'](_0x36cc99[_0x1823('0x2e')],_0x36cc99[_0x1823('0x30')]);_0x178ad1[_0x1823('0x33')]=_[_0x1823('0x31')](_0x36cc99[_0x1823('0x2e')],qs[_0x1823('0x32')](_0x5a90d9[_0x1823('0x30')][_0x1823('0x32')]));_0x178ad1['attributes']=_0x178ad1[_0x1823('0x33')]['length']?_0x178ad1[_0x1823('0x33')]:_0x36cc99['model'];if(_0x5a90d9[_0x1823('0x30')][_0x1823('0x3d')]){_0x178ad1['include']=[{'all':!![]}];}_0x178ad1=_[_0x1823('0x3b')]({},_0x178ad1,_0x5a90d9[_0x1823('0x3c')]);return db[_0x1823('0x2b')][_0x1823('0x43')](_0x178ad1)[_0x1823('0x24')](handleEntityNotFound(_0x100c20,null))[_0x1823('0x24')](respondWithResult(_0x100c20,null))[_0x1823('0x40')](handleError(_0x100c20,null));};exports[_0x1823('0x44')]=function(_0x1a19bb,_0x1166d6){return db[_0x1823('0x2b')][_0x1823('0x44')](_0x1a19bb['body'],{})[_0x1823('0x24')](respondWithResult(_0x1166d6,0xc9))[_0x1823('0x40')](handleError(_0x1166d6,null));};exports[_0x1823('0x23')]=function(_0x286173,_0x411450){if(_0x286173[_0x1823('0x45')]['id']){delete _0x286173[_0x1823('0x45')]['id'];}return db[_0x1823('0x2b')][_0x1823('0x43')]({'where':{'id':_0x286173[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x411450,null))['then'](saveUpdates(_0x286173['body'],null))['then'](respondWithResult(_0x411450,null))[_0x1823('0x40')](handleError(_0x411450,null));};exports[_0x1823('0x47')]=function(_0x33b601,_0x4c7bac){return db[_0x1823('0x2b')]['find']({'where':{'id':_0x33b601[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x4c7bac,null))[_0x1823('0x24')](removeEntity(_0x4c7bac,null))[_0x1823('0x40')](handleError(_0x4c7bac,null));};exports['getSubjects']=function(_0x20d22a,_0x737bee,_0x2e4186){var _0x3219fb={};var _0xefbc3b={};var _0x291aae;var _0x2fbf0f;return db[_0x1823('0x2b')][_0x1823('0x48')]({'where':{'id':_0x20d22a[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x737bee,null))[_0x1823('0x24')](function(_0xe73e61){if(_0xe73e61){_0x291aae=_0xe73e61;_0xefbc3b[_0x1823('0x2e')]=_[_0x1823('0x2f')](db[_0x1823('0x49')]['rawAttributes']);_0xefbc3b[_0x1823('0x30')]=_['keys'](_0x20d22a[_0x1823('0x30')]);_0xefbc3b[_0x1823('0x39')]=_[_0x1823('0x31')](_0xefbc3b['model'],_0xefbc3b[_0x1823('0x30')]);_0x3219fb[_0x1823('0x33')]=_[_0x1823('0x31')](_0xefbc3b['model'],qs[_0x1823('0x32')](_0x20d22a[_0x1823('0x30')][_0x1823('0x32')]));_0x3219fb['attributes']=_0x3219fb[_0x1823('0x33')][_0x1823('0x4a')]?_0x3219fb[_0x1823('0x33')]:_0xefbc3b[_0x1823('0x2e')];_0x3219fb[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x20d22a['query'][_0x1823('0x37')]);_0x3219fb['where']=qs[_0x1823('0x39')](_[_0x1823('0x4b')](_0x20d22a[_0x1823('0x30')],_0xefbc3b[_0x1823('0x39')]));if(_0x20d22a[_0x1823('0x30')][_0x1823('0x3a')]){_0x3219fb['where']=_[_0x1823('0x3b')](_0x3219fb[_0x1823('0x38')],{'$or':_['map'](_0x3219fb[_0x1823('0x33')],function(_0x152690){var _0x180f47={};_0x180f47[_0x152690]={'$like':'%'+_0x20d22a['query'][_0x1823('0x3a')]+'%'};return _0x180f47;})});}_0x3219fb=_[_0x1823('0x3b')]({},_0x3219fb,_0x20d22a['options']);return _0x291aae[_0x1823('0x4c')](_0x3219fb);}})[_0x1823('0x24')](function(_0x5c61cf){if(_0x5c61cf){_0x2fbf0f=_0x5c61cf['length'];if(!_0x20d22a[_0x1823('0x30')][_0x1823('0x34')]('nolimit')){_0x3219fb[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x20d22a[_0x1823('0x30')][_0x1823('0x1d')]);_0x3219fb['offset']=qs[_0x1823('0x1e')](_0x20d22a[_0x1823('0x30')][_0x1823('0x1e')]);}return _0x291aae[_0x1823('0x4c')](_0x3219fb);}})[_0x1823('0x24')](function(_0x440740){if(_0x440740){return _0x440740?{'count':_0x2fbf0f,'rows':_0x440740}:null;}})['then'](respondWithResult(_0x737bee,null))[_0x1823('0x40')](handleError(_0x737bee,null));};exports[_0x1823('0x4d')]=function(_0x15f55f,_0x492045,_0x1ce8e8){var _0x26b881={};var _0x3abf69={};var _0x32b6d9;var _0x15c739;return db['FreshsalesConfiguration'][_0x1823('0x48')]({'where':{'id':_0x15f55f[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x492045,null))[_0x1823('0x24')](function(_0x176e93){if(_0x176e93){_0x32b6d9=_0x176e93;_0x3abf69[_0x1823('0x2e')]=_[_0x1823('0x2f')](db[_0x1823('0x49')][_0x1823('0x42')]);_0x3abf69[_0x1823('0x30')]=_[_0x1823('0x2f')](_0x15f55f[_0x1823('0x30')]);_0x3abf69['filters']=_['intersection'](_0x3abf69[_0x1823('0x2e')],_0x3abf69[_0x1823('0x30')]);_0x26b881[_0x1823('0x33')]=_[_0x1823('0x31')](_0x3abf69['model'],qs[_0x1823('0x32')](_0x15f55f[_0x1823('0x30')][_0x1823('0x32')]));_0x26b881[_0x1823('0x33')]=_0x26b881[_0x1823('0x33')][_0x1823('0x4a')]?_0x26b881[_0x1823('0x33')]:_0x3abf69[_0x1823('0x2e')];_0x26b881[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x15f55f[_0x1823('0x30')][_0x1823('0x37')]);_0x26b881[_0x1823('0x38')]=qs[_0x1823('0x39')](_['pick'](_0x15f55f[_0x1823('0x30')],_0x3abf69[_0x1823('0x39')]));if(_0x15f55f['query'][_0x1823('0x3a')]){_0x26b881[_0x1823('0x38')]=_[_0x1823('0x3b')](_0x26b881[_0x1823('0x38')],{'$or':_['map'](_0x26b881[_0x1823('0x33')],function(_0x3bd858){var _0x3fe7f={};_0x3fe7f[_0x3bd858]={'$like':'%'+_0x15f55f['query'][_0x1823('0x3a')]+'%'};return _0x3fe7f;})});}_0x26b881=_[_0x1823('0x3b')]({},_0x26b881,_0x15f55f['options']);return _0x32b6d9[_0x1823('0x4d')](_0x26b881);}})[_0x1823('0x24')](function(_0x7723d2){if(_0x7723d2){_0x15c739=_0x7723d2[_0x1823('0x4a')];if(!_0x15f55f[_0x1823('0x30')][_0x1823('0x34')](_0x1823('0x35'))){_0x26b881[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x15f55f[_0x1823('0x30')][_0x1823('0x1d')]);_0x26b881[_0x1823('0x1e')]=qs[_0x1823('0x1e')](_0x15f55f[_0x1823('0x30')]['offset']);}return _0x32b6d9['getDescriptions'](_0x26b881);}})[_0x1823('0x24')](function(_0x31d778){if(_0x31d778){return _0x31d778?{'count':_0x15c739,'rows':_0x31d778}:null;}})[_0x1823('0x24')](respondWithResult(_0x492045,null))['catch'](handleError(_0x492045,null));};exports[_0x1823('0x4e')]=function(_0x339cc7,_0x3f5fc0,_0x3256e8){var _0x3979f8={};var _0x97083c={};var _0x1a8822;var _0x24d2c6;return db[_0x1823('0x2b')][_0x1823('0x48')]({'where':{'id':_0x339cc7['params']['id']}})['then'](handleEntityNotFound(_0x3f5fc0,null))[_0x1823('0x24')](function(_0x3f2481){if(_0x3f2481){_0x1a8822=_0x3f2481;_0x97083c[_0x1823('0x2e')]=_['keys'](db[_0x1823('0x49')][_0x1823('0x42')]);_0x97083c[_0x1823('0x30')]=_[_0x1823('0x2f')](_0x339cc7[_0x1823('0x30')]);_0x97083c[_0x1823('0x39')]=_['intersection'](_0x97083c['model'],_0x97083c[_0x1823('0x30')]);_0x3979f8[_0x1823('0x33')]=_['intersection'](_0x97083c[_0x1823('0x2e')],qs[_0x1823('0x32')](_0x339cc7['query'][_0x1823('0x32')]));_0x3979f8['attributes']=_0x3979f8[_0x1823('0x33')][_0x1823('0x4a')]?_0x3979f8[_0x1823('0x33')]:_0x97083c[_0x1823('0x2e')];_0x3979f8[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x339cc7[_0x1823('0x30')][_0x1823('0x37')]);_0x3979f8[_0x1823('0x38')]=qs[_0x1823('0x39')](_[_0x1823('0x4b')](_0x339cc7[_0x1823('0x30')],_0x97083c['filters']));if(_0x339cc7['query'][_0x1823('0x3a')]){_0x3979f8[_0x1823('0x38')]=_[_0x1823('0x3b')](_0x3979f8['where'],{'$or':_[_0x1823('0x2a')](_0x3979f8[_0x1823('0x33')],function(_0x271917){var _0x109bab={};_0x109bab[_0x271917]={'$like':'%'+_0x339cc7[_0x1823('0x30')][_0x1823('0x3a')]+'%'};return _0x109bab;})});}_0x3979f8=_[_0x1823('0x3b')]({},_0x3979f8,_0x339cc7[_0x1823('0x3c')]);return _0x1a8822[_0x1823('0x4e')](_0x3979f8);}})[_0x1823('0x24')](function(_0x4e3591){if(_0x4e3591){_0x24d2c6=_0x4e3591['length'];if(!_0x339cc7[_0x1823('0x30')]['hasOwnProperty']('nolimit')){_0x3979f8[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x339cc7['query']['limit']);_0x3979f8[_0x1823('0x1e')]=qs[_0x1823('0x1e')](_0x339cc7[_0x1823('0x30')][_0x1823('0x1e')]);}return _0x1a8822[_0x1823('0x4e')](_0x3979f8);}})[_0x1823('0x24')](function(_0x530a40){if(_0x530a40){return _0x530a40?{'count':_0x24d2c6,'rows':_0x530a40}:null;}})[_0x1823('0x24')](respondWithResult(_0x3f5fc0,null))[_0x1823('0x40')](handleError(_0x3f5fc0,null));};
\ No newline at end of file
index 7c470d1..df15bd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0201=['./intFreshsalesConfiguration.attributes','exports','int_freshsales_configurations','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment'];(function(_0x5b077b,_0x50b707){var _0x16faf7=function(_0x41ba83){while(--_0x41ba83){_0x5b077b['push'](_0x5b077b['shift']());}};_0x16faf7(++_0x50b707);}(_0x0201,0xdf));var _0x1020=function(_0x17301a,_0x530ead){_0x17301a=_0x17301a-0x0;var _0x216082=_0x0201[_0x17301a];return _0x216082;};'use strict';var _=require(_0x1020('0x0'));var util=require(_0x1020('0x1'));var logger=require(_0x1020('0x2'))('api');var moment=require(_0x1020('0x3'));var BPromise=require('bluebird');var rp=require(_0x1020('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1020('0x5'));var config=require(_0x1020('0x6'));var attributes=require(_0x1020('0x7'));module[_0x1020('0x8')]=function(_0x28b46e,_0xc9e6c0){return _0x28b46e['define']('FreshsalesConfiguration',attributes,{'tableName':_0x1020('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf14=['rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','int_freshsales_configurations','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x2dd324,_0x2d0881){var _0x33bc5c=function(_0x4bcbc7){while(--_0x4bcbc7){_0x2dd324['push'](_0x2dd324['shift']());}};_0x33bc5c(++_0x2d0881);}(_0xcf14,0x185));var _0x4cf1=function(_0x3592c2,_0x5f1634){_0x3592c2=_0x3592c2-0x0;var _0x189724=_0xcf14[_0x3592c2];return _0x189724;};'use strict';var _=require(_0x4cf1('0x0'));var util=require(_0x4cf1('0x1'));var logger=require('../../config/logger')(_0x4cf1('0x2'));var moment=require(_0x4cf1('0x3'));var BPromise=require(_0x4cf1('0x4'));var rp=require(_0x4cf1('0x5'));var fs=require('fs');var path=require(_0x4cf1('0x6'));var rimraf=require(_0x4cf1('0x7'));var config=require(_0x4cf1('0x8'));var attributes=require(_0x4cf1('0x9'));module['exports']=function(_0x214f99,_0x393a03){return _0x214f99[_0x4cf1('0xa')]('FreshsalesConfiguration',attributes,{'tableName':_0x4cf1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8353e38..c5d5a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf39=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring'];(function(_0x1da398,_0x170497){var _0x3ad972=function(_0x1350de){while(--_0x1350de){_0x1da398['push'](_0x1da398['shift']());}};_0x3ad972(++_0x170497);}(_0xdf39,0x159));var _0x9df3=function(_0x4f4f3d,_0x2cc448){_0x4f4f3d=_0x4f4f3d-0x0;var _0x4ac4a3=_0xdf39[_0x4f4f3d];return _0x4ac4a3;};'use strict';var _=require(_0x9df3('0x0'));var util=require(_0x9df3('0x1'));var moment=require(_0x9df3('0x2'));var BPromise=require(_0x9df3('0x3'));var rs=require(_0x9df3('0x4'));var fs=require('fs');var Redis=require(_0x9df3('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9df3('0x6'));var logger=require(_0x9df3('0x7'))(_0x9df3('0x8'));var config=require(_0x9df3('0x9'));var jayson=require(_0x9df3('0xa'));var client=jayson[_0x9df3('0xb')][_0x9df3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x305f2b,_0x228eda,_0x4076b0){return new BPromise(function(_0x149005,_0x38e51b){return client[_0x9df3('0xd')](_0x305f2b,_0x4076b0)[_0x9df3('0xe')](function(_0x513c14){logger[_0x9df3('0xf')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x228eda,_0x9df3('0x10'));logger[_0x9df3('0x11')](_0x9df3('0x12'),_0x228eda,_0x9df3('0x10'),JSON[_0x9df3('0x13')](_0x513c14));if(_0x513c14[_0x9df3('0x14')]){if(_0x513c14[_0x9df3('0x14')][_0x9df3('0x15')]===0x1f4){logger[_0x9df3('0x14')](_0x9df3('0x16'),_0x228eda,_0x513c14[_0x9df3('0x14')]['message']);return _0x38e51b(_0x513c14[_0x9df3('0x14')][_0x9df3('0x17')]);}logger[_0x9df3('0x14')](_0x9df3('0x16'),_0x228eda,_0x513c14[_0x9df3('0x14')][_0x9df3('0x17')]);return _0x149005(_0x513c14[_0x9df3('0x14')][_0x9df3('0x17')]);}else{logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x228eda,_0x9df3('0x10'));_0x149005(_0x513c14[_0x9df3('0x18')][_0x9df3('0x17')]);}})['catch'](function(_0xcf82b0){logger[_0x9df3('0x14')](_0x9df3('0x16'),_0x228eda,_0xcf82b0);_0x38e51b(_0xcf82b0);});});}
\ No newline at end of file
+var _0xf8b9=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x53eaa1,_0x5c3fc3){var _0x5a1022=function(_0x17fa3f){while(--_0x17fa3f){_0x53eaa1['push'](_0x53eaa1['shift']());}};_0x5a1022(++_0x5c3fc3);}(_0xf8b9,0xd5));var _0x9f8b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf8b9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9f8b('0x0'));var util=require('util');var moment=require(_0x9f8b('0x1'));var BPromise=require(_0x9f8b('0x2'));var rs=require(_0x9f8b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9f8b('0x4'))['db'];var utils=require(_0x9f8b('0x5'));var logger=require(_0x9f8b('0x6'))(_0x9f8b('0x7'));var config=require('../../config/environment');var jayson=require(_0x9f8b('0x8'));var client=jayson[_0x9f8b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x515fe0,_0x40ba33,_0x17f091){return new BPromise(function(_0x4904b1,_0x4a05f7){return client[_0x9f8b('0xa')](_0x515fe0,_0x17f091)[_0x9f8b('0xb')](function(_0x5298d7){logger[_0x9f8b('0xc')](_0x9f8b('0xd'),_0x40ba33,_0x9f8b('0xe'));logger[_0x9f8b('0xf')](_0x9f8b('0x10'),_0x40ba33,'request\x20sent',JSON[_0x9f8b('0x11')](_0x5298d7));if(_0x5298d7[_0x9f8b('0x12')]){if(_0x5298d7[_0x9f8b('0x12')][_0x9f8b('0x13')]===0x1f4){logger[_0x9f8b('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x40ba33,_0x5298d7['error'][_0x9f8b('0x14')]);return _0x4a05f7(_0x5298d7[_0x9f8b('0x12')]['message']);}logger[_0x9f8b('0x12')](_0x9f8b('0xd'),_0x40ba33,_0x5298d7[_0x9f8b('0x12')]['message']);return _0x4904b1(_0x5298d7[_0x9f8b('0x12')][_0x9f8b('0x14')]);}else{logger[_0x9f8b('0xc')](_0x9f8b('0xd'),_0x40ba33,_0x9f8b('0xe'));_0x4904b1(_0x5298d7[_0x9f8b('0x15')]['message']);}})[_0x9f8b('0x16')](function(_0x520469){logger[_0x9f8b('0x12')](_0x9f8b('0xd'),_0x40ba33,_0x520469);_0x4a05f7(_0x520469);});});}
\ No newline at end of file
index 35f0f29..25d1a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc576=['connect-timeout','express','../../components/auth/service','../../config/environment','./intFreshsalesField.controller','isAuthenticated','get','/:id','show','create','update','delete','destroy','exports','multer','util','path'];(function(_0x446b17,_0xc400cf){var _0x2621cd=function(_0x4307b2){while(--_0x4307b2){_0x446b17['push'](_0x446b17['shift']());}};_0x2621cd(++_0xc400cf);}(_0xc576,0x1ea));var _0x6c57=function(_0x424bd3,_0x8760d8){_0x424bd3=_0x424bd3-0x0;var _0x1fdade=_0xc576[_0x424bd3];return _0x1fdade;};'use strict';var multer=require(_0x6c57('0x0'));var util=require(_0x6c57('0x1'));var path=require(_0x6c57('0x2'));var timeout=require(_0x6c57('0x3'));var express=require(_0x6c57('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6c57('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6c57('0x6'));var controller=require(_0x6c57('0x7'));router['get']('/',auth[_0x6c57('0x8')](),controller['index']);router[_0x6c57('0x9')](_0x6c57('0xa'),auth['isAuthenticated'](),controller[_0x6c57('0xb')]);router['post']('/',auth[_0x6c57('0x8')](),controller[_0x6c57('0xc')]);router['put'](_0x6c57('0xa'),auth[_0x6c57('0x8')](),controller[_0x6c57('0xd')]);router[_0x6c57('0xe')]('/:id',auth[_0x6c57('0x8')](),controller[_0x6c57('0xf')]);module[_0x6c57('0x10')]=router;
\ No newline at end of file
+var _0x0fec=['../../components/auth/service','../../components/interaction/service','./intFreshsalesField.controller','isAuthenticated','index','show','post','delete','destroy','exports','multer','util','path','Router'];(function(_0x493de9,_0x387d41){var _0x5e7c8a=function(_0xa87772){while(--_0xa87772){_0x493de9['push'](_0x493de9['shift']());}};_0x5e7c8a(++_0x387d41);}(_0x0fec,0x1ca));var _0xc0fe=function(_0x67960c,_0x1da730){_0x67960c=_0x67960c-0x0;var _0x4c6cb6=_0x0fec[_0x67960c];return _0x4c6cb6;};'use strict';var multer=require(_0xc0fe('0x0'));var util=require(_0xc0fe('0x1'));var path=require(_0xc0fe('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc0fe('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc0fe('0x4'));var interaction=require(_0xc0fe('0x5'));var config=require('../../config/environment');var controller=require(_0xc0fe('0x6'));router['get']('/',auth[_0xc0fe('0x7')](),controller[_0xc0fe('0x8')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xc0fe('0x9')]);router[_0xc0fe('0xa')]('/',auth[_0xc0fe('0x7')](),controller['create']);router['put']('/:id',auth[_0xc0fe('0x7')](),controller['update']);router[_0xc0fe('0xb')]('/:id',auth[_0xc0fe('0x7')](),controller[_0xc0fe('0xc')]);module[_0xc0fe('0xd')]=router;
\ No newline at end of file
index 6685353..2610e35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb891=['customVariable','keyValue','picklist','string','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb891,0x166));var _0x1b89=function(_0x571833,_0x5383e8){_0x571833=_0x571833-0x0;var _0x38bc03=_0xb891[_0x571833];return _0x38bc03;};'use strict';var Sequelize=require(_0x1b89('0x0'));module['exports']={'type':{'type':Sequelize[_0x1b89('0x1')]('string','variable',_0x1b89('0x2'),_0x1b89('0x3'),_0x1b89('0x4')),'defaultValue':_0x1b89('0x5')},'content':{'type':Sequelize[_0x1b89('0x6')]},'key':{'type':Sequelize[_0x1b89('0x6')]},'keyType':{'type':Sequelize[_0x1b89('0x1')](_0x1b89('0x5'),'variable',_0x1b89('0x2'))},'keyContent':{'type':Sequelize[_0x1b89('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1b89('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1b89('0x6')]}};
\ No newline at end of file
+var _0x4550=['BOOLEAN','sequelize','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x4550,0x111));var _0x0455=function(_0xf67acd,_0x1256f7){_0xf67acd=_0xf67acd-0x0;var _0x34766d=_0x4550[_0xf67acd];return _0x34766d;};'use strict';var Sequelize=require(_0x0455('0x0'));module['exports']={'type':{'type':Sequelize[_0x0455('0x1')](_0x0455('0x2'),_0x0455('0x3'),'customVariable',_0x0455('0x4'),_0x0455('0x5')),'defaultValue':_0x0455('0x2')},'content':{'type':Sequelize[_0x0455('0x6')]},'key':{'type':Sequelize[_0x0455('0x6')]},'keyType':{'type':Sequelize[_0x0455('0x1')](_0x0455('0x2'),_0x0455('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x0455('0x6')]},'idField':{'type':Sequelize[_0x0455('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0455('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0455('0x6')]}};
\ No newline at end of file
index eb25b04..416c98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc841=['sendStatus','status','end','limit','undefined','offset','set','Content-Range','apply','save','then','error','stack','name','send','map','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','FreshsalesField','count','includeAll','include','findAll','catch','params','find','create','update','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0xc56bbc,_0x13f0d5){var _0x388d21=function(_0x42d135){while(--_0x42d135){_0xc56bbc['push'](_0xc56bbc['shift']());}};_0x388d21(++_0x13f0d5);}(_0xc841,0xc5));var _0x1c84=function(_0x424bb3,_0x39fb28){_0x424bb3=_0x424bb3-0x0;var _0x2f70f2=_0xc841[_0x424bb3];return _0x2f70f2;};'use strict';var emlformat=require(_0x1c84('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1c84('0x1'));var jsonpatch=require(_0x1c84('0x2'));var rp=require(_0x1c84('0x3'));var moment=require(_0x1c84('0x4'));var BPromise=require(_0x1c84('0x5'));var Mustache=require(_0x1c84('0x6'));var util=require(_0x1c84('0x7'));var path=require(_0x1c84('0x8'));var sox=require(_0x1c84('0x9'));var csv=require(_0x1c84('0xa'));var ejs=require(_0x1c84('0xb'));var fs=require('fs');var fs_extra=require(_0x1c84('0xc'));var _=require(_0x1c84('0xd'));var squel=require(_0x1c84('0xe'));var crypto=require('crypto');var jsforce=require(_0x1c84('0xf'));var deskjs=require(_0x1c84('0x10'));var toCsv=require('to-csv');var querystring=require(_0x1c84('0x11'));var Papa=require(_0x1c84('0x12'));var Redis=require(_0x1c84('0x13'));var authService=require(_0x1c84('0x14'));var qs=require(_0x1c84('0x15'));var as=require(_0x1c84('0x16'));var hardwareService=require(_0x1c84('0x17'));var logger=require(_0x1c84('0x18'))(_0x1c84('0x19'));var utils=require('../../config/utils');var config=require(_0x1c84('0x1a'));var licenseUtil=require(_0x1c84('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a2e90,_0x359d0a){_0x359d0a=_0x359d0a||0xcc;return function(_0x4ec6b0){if(_0x4ec6b0){return _0x4a2e90[_0x1c84('0x1c')](_0x359d0a);}return _0x4a2e90[_0x1c84('0x1d')](_0x359d0a)[_0x1c84('0x1e')]();};}function respondWithResult(_0x3b0802,_0x20b100){_0x20b100=_0x20b100||0xc8;return function(_0x77fe7f){if(_0x77fe7f){return _0x3b0802[_0x1c84('0x1d')](_0x20b100)['json'](_0x77fe7f);}};}function respondWithFilteredResult(_0x2c8965,_0x5971eb){return function(_0x49ef79){if(_0x49ef79){var _0x1affb8=typeof _0x5971eb['offset']==='undefined'&&typeof _0x5971eb[_0x1c84('0x1f')]===_0x1c84('0x20');var _0x4217bb=_0x49ef79['count'];var _0x5779f4=_0x1affb8?0x0:_0x5971eb[_0x1c84('0x21')];var _0x1979c5=_0x1affb8?_0x49ef79['count']:_0x5971eb[_0x1c84('0x21')]+_0x5971eb[_0x1c84('0x1f')];var _0x5bedfa;if(_0x1979c5>=_0x4217bb){_0x1979c5=_0x4217bb;_0x5bedfa=0xc8;}else{_0x5bedfa=0xce;}_0x2c8965[_0x1c84('0x1d')](_0x5bedfa);return _0x2c8965[_0x1c84('0x22')](_0x1c84('0x23'),_0x5779f4+'-'+_0x1979c5+'/'+_0x4217bb)['json'](_0x49ef79);}return null;};}function patchUpdates(_0x47bfa8){return function(_0x53052){try{jsonpatch[_0x1c84('0x24')](_0x53052,_0x47bfa8,!![]);}catch(_0x33331d){return BPromise['reject'](_0x33331d);}return _0x53052[_0x1c84('0x25')]();};}function saveUpdates(_0x54c1a8,_0x5f8097){return function(_0x3e6d6c){if(_0x3e6d6c){return _0x3e6d6c['update'](_0x54c1a8)['then'](function(_0x26c3f3){return _0x26c3f3;});}return null;};}function removeEntity(_0xc5578a,_0x118b5a){return function(_0xe3bf81){if(_0xe3bf81){return _0xe3bf81['destroy']()[_0x1c84('0x26')](function(){_0xc5578a['status'](0xcc)[_0x1c84('0x1e')]();});}};}function handleEntityNotFound(_0xe0e184,_0x3e0988){return function(_0x1f2b58){if(!_0x1f2b58){_0xe0e184[_0x1c84('0x1c')](0x194);}return _0x1f2b58;};}function handleError(_0x4a96d0,_0x5c0f5e){_0x5c0f5e=_0x5c0f5e||0x1f4;return function(_0x5f0ef9){logger[_0x1c84('0x27')](_0x5f0ef9[_0x1c84('0x28')]);if(_0x5f0ef9[_0x1c84('0x29')]){delete _0x5f0ef9[_0x1c84('0x29')];}_0x4a96d0['status'](_0x5c0f5e)[_0x1c84('0x2a')](_0x5f0ef9);};}exports['index']=function(_0x28e110,_0x304a7b){var _0xabbba7={},_0x2e1a9c={},_0xc9ee7e={'count':0x0,'rows':[]};var _0x56e5f2=_[_0x1c84('0x2b')](db['FreshsalesField'][_0x1c84('0x2c')],function(_0x45b068){return{'name':_0x45b068[_0x1c84('0x2d')],'type':_0x45b068['type'][_0x1c84('0x2e')]};});_0x2e1a9c[_0x1c84('0x2f')]=_[_0x1c84('0x2b')](_0x56e5f2,_0x1c84('0x29'));_0x2e1a9c['query']=_[_0x1c84('0x30')](_0x28e110[_0x1c84('0x31')]);_0x2e1a9c[_0x1c84('0x32')]=_[_0x1c84('0x33')](_0x2e1a9c[_0x1c84('0x2f')],_0x2e1a9c['query']);_0xabbba7[_0x1c84('0x34')]=_[_0x1c84('0x33')](_0x2e1a9c[_0x1c84('0x2f')],qs[_0x1c84('0x35')](_0x28e110['query'][_0x1c84('0x35')]));_0xabbba7[_0x1c84('0x34')]=_0xabbba7[_0x1c84('0x34')][_0x1c84('0x36')]?_0xabbba7[_0x1c84('0x34')]:_0x2e1a9c['model'];if(!_0x28e110[_0x1c84('0x31')][_0x1c84('0x37')]('nolimit')){_0xabbba7[_0x1c84('0x1f')]=qs[_0x1c84('0x1f')](_0x28e110[_0x1c84('0x31')][_0x1c84('0x1f')]);_0xabbba7['offset']=qs[_0x1c84('0x21')](_0x28e110[_0x1c84('0x31')]['offset']);}_0xabbba7[_0x1c84('0x38')]=qs['sort'](_0x28e110[_0x1c84('0x31')][_0x1c84('0x39')]);_0xabbba7[_0x1c84('0x3a')]=qs[_0x1c84('0x32')](_[_0x1c84('0x3b')](_0x28e110['query'],_0x2e1a9c[_0x1c84('0x32')]),_0x56e5f2);if(_0x28e110[_0x1c84('0x31')][_0x1c84('0x3c')]){_0xabbba7[_0x1c84('0x3a')]=_[_0x1c84('0x3d')](_0xabbba7[_0x1c84('0x3a')],{'$or':_[_0x1c84('0x2b')](_0x56e5f2,function(_0x14df8f){if(_0x14df8f['type']!=='VIRTUAL'){var _0x4606b8={};_0x4606b8[_0x14df8f[_0x1c84('0x29')]]={'$like':'%'+_0x28e110[_0x1c84('0x31')][_0x1c84('0x3c')]+'%'};return _0x4606b8;}})});}_0xabbba7=_[_0x1c84('0x3d')]({},_0xabbba7,_0x28e110[_0x1c84('0x3e')]);var _0x806d11={'where':_0xabbba7[_0x1c84('0x3a')]};return db[_0x1c84('0x3f')][_0x1c84('0x40')](_0x806d11)[_0x1c84('0x26')](function(_0x545e44){_0xc9ee7e[_0x1c84('0x40')]=_0x545e44;if(_0x28e110[_0x1c84('0x31')][_0x1c84('0x41')]){_0xabbba7[_0x1c84('0x42')]=[{'all':!![]}];}return db['FreshsalesField'][_0x1c84('0x43')](_0xabbba7);})['then'](function(_0x37125f){_0xc9ee7e['rows']=_0x37125f;return _0xc9ee7e;})[_0x1c84('0x26')](respondWithFilteredResult(_0x304a7b,_0xabbba7))[_0x1c84('0x44')](handleError(_0x304a7b,null));};exports['show']=function(_0x37f307,_0x4aa6fe){var _0x3eed23={'raw':!![],'where':{'id':_0x37f307[_0x1c84('0x45')]['id']}},_0x1c3528={};_0x1c3528[_0x1c84('0x2f')]=_[_0x1c84('0x30')](db['FreshsalesField'][_0x1c84('0x2c')]);_0x1c3528['query']=_[_0x1c84('0x30')](_0x37f307[_0x1c84('0x31')]);_0x1c3528[_0x1c84('0x32')]=_[_0x1c84('0x33')](_0x1c3528[_0x1c84('0x2f')],_0x1c3528['query']);_0x3eed23[_0x1c84('0x34')]=_['intersection'](_0x1c3528['model'],qs[_0x1c84('0x35')](_0x37f307['query'][_0x1c84('0x35')]));_0x3eed23[_0x1c84('0x34')]=_0x3eed23[_0x1c84('0x34')][_0x1c84('0x36')]?_0x3eed23[_0x1c84('0x34')]:_0x1c3528['model'];if(_0x37f307['query'][_0x1c84('0x41')]){_0x3eed23[_0x1c84('0x42')]=[{'all':!![]}];}_0x3eed23=_[_0x1c84('0x3d')]({},_0x3eed23,_0x37f307[_0x1c84('0x3e')]);return db[_0x1c84('0x3f')][_0x1c84('0x46')](_0x3eed23)[_0x1c84('0x26')](handleEntityNotFound(_0x4aa6fe,null))[_0x1c84('0x26')](respondWithResult(_0x4aa6fe,null))[_0x1c84('0x44')](handleError(_0x4aa6fe,null));};exports[_0x1c84('0x47')]=function(_0x2d77c0,_0x49bfc5){return db['FreshsalesField'][_0x1c84('0x47')](_0x2d77c0['body'],{})[_0x1c84('0x26')](respondWithResult(_0x49bfc5,0xc9))['catch'](handleError(_0x49bfc5,null));};exports[_0x1c84('0x48')]=function(_0x40b658,_0x2552aa){if(_0x40b658[_0x1c84('0x49')]['id']){delete _0x40b658[_0x1c84('0x49')]['id'];}return db[_0x1c84('0x3f')][_0x1c84('0x46')]({'where':{'id':_0x40b658[_0x1c84('0x45')]['id']}})[_0x1c84('0x26')](handleEntityNotFound(_0x2552aa,null))[_0x1c84('0x26')](saveUpdates(_0x40b658[_0x1c84('0x49')],null))[_0x1c84('0x26')](respondWithResult(_0x2552aa,null))[_0x1c84('0x44')](handleError(_0x2552aa,null));};exports[_0x1c84('0x4a')]=function(_0x38a6f0,_0x15a8e6){return db['FreshsalesField'][_0x1c84('0x46')]({'where':{'id':_0x38a6f0[_0x1c84('0x45')]['id']}})[_0x1c84('0x26')](handleEntityNotFound(_0x15a8e6,null))[_0x1c84('0x26')](removeEntity(_0x15a8e6,null))['catch'](handleError(_0x15a8e6,null));};
\ No newline at end of file
+var _0x841c=['reject','save','update','then','error','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','fields','find','create','body','destroy','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','apply'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x841c,0xb9));var _0xc841=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x841c[_0x49b207];return _0x2dc8fa;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc841('0x0'));var jsonpatch=require(_0xc841('0x1'));var rp=require(_0xc841('0x2'));var moment=require(_0xc841('0x3'));var BPromise=require(_0xc841('0x4'));var Mustache=require(_0xc841('0x5'));var util=require(_0xc841('0x6'));var path=require(_0xc841('0x7'));var sox=require('sox');var csv=require(_0xc841('0x8'));var ejs=require(_0xc841('0x9'));var fs=require('fs');var fs_extra=require(_0xc841('0xa'));var _=require(_0xc841('0xb'));var squel=require('squel');var crypto=require(_0xc841('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc841('0x8'));var querystring=require(_0xc841('0xd'));var Papa=require('papaparse');var Redis=require(_0xc841('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc841('0xf'));var as=require(_0xc841('0x10'));var hardwareService=require(_0xc841('0x11'));var logger=require(_0xc841('0x12'))('api');var utils=require(_0xc841('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc841('0x14'))['db'];function respondWithStatusCode(_0x5d572e,_0x9e2d89){_0x9e2d89=_0x9e2d89||0xcc;return function(_0x53b12a){if(_0x53b12a){return _0x5d572e[_0xc841('0x15')](_0x9e2d89);}return _0x5d572e['status'](_0x9e2d89)[_0xc841('0x16')]();};}function respondWithResult(_0x5bba49,_0x496ed9){_0x496ed9=_0x496ed9||0xc8;return function(_0x77bad5){if(_0x77bad5){return _0x5bba49[_0xc841('0x17')](_0x496ed9)[_0xc841('0x18')](_0x77bad5);}};}function respondWithFilteredResult(_0x4f0c46,_0x9deb86){return function(_0x39567a){if(_0x39567a){var _0x5172aa=typeof _0x9deb86[_0xc841('0x19')]==='undefined'&&typeof _0x9deb86[_0xc841('0x1a')]===_0xc841('0x1b');var _0x32dbb6=_0x39567a[_0xc841('0x1c')];var _0x718797=_0x5172aa?0x0:_0x9deb86[_0xc841('0x19')];var _0x26594b=_0x5172aa?_0x39567a['count']:_0x9deb86[_0xc841('0x19')]+_0x9deb86['limit'];var _0x2f9fff;if(_0x26594b>=_0x32dbb6){_0x26594b=_0x32dbb6;_0x2f9fff=0xc8;}else{_0x2f9fff=0xce;}_0x4f0c46[_0xc841('0x17')](_0x2f9fff);return _0x4f0c46[_0xc841('0x1d')]('Content-Range',_0x718797+'-'+_0x26594b+'/'+_0x32dbb6)[_0xc841('0x18')](_0x39567a);}return null;};}function patchUpdates(_0x270760){return function(_0x359599){try{jsonpatch[_0xc841('0x1e')](_0x359599,_0x270760,!![]);}catch(_0x936446){return BPromise[_0xc841('0x1f')](_0x936446);}return _0x359599[_0xc841('0x20')]();};}function saveUpdates(_0x10a1b3,_0x810625){return function(_0x10cc38){if(_0x10cc38){return _0x10cc38[_0xc841('0x21')](_0x10a1b3)[_0xc841('0x22')](function(_0x5d8e0a){return _0x5d8e0a;});}return null;};}function removeEntity(_0x437b8e,_0x1e2879){return function(_0x1f4e5d){if(_0x1f4e5d){return _0x1f4e5d['destroy']()[_0xc841('0x22')](function(){_0x437b8e[_0xc841('0x17')](0xcc)[_0xc841('0x16')]();});}};}function handleEntityNotFound(_0x251b68,_0x578c04){return function(_0x3281ea){if(!_0x3281ea){_0x251b68[_0xc841('0x15')](0x194);}return _0x3281ea;};}function handleError(_0x533725,_0xfb8778){_0xfb8778=_0xfb8778||0x1f4;return function(_0x4ce892){logger[_0xc841('0x23')](_0x4ce892[_0xc841('0x24')]);if(_0x4ce892[_0xc841('0x25')]){delete _0x4ce892['name'];}_0x533725[_0xc841('0x17')](_0xfb8778)[_0xc841('0x26')](_0x4ce892);};}exports[_0xc841('0x27')]=function(_0x4145b8,_0x4105da){var _0x2952ed={},_0x13606b={},_0x368027={'count':0x0,'rows':[]};var _0x13b745=_[_0xc841('0x28')](db[_0xc841('0x29')][_0xc841('0x2a')],function(_0x595063){return{'name':_0x595063[_0xc841('0x2b')],'type':_0x595063[_0xc841('0x2c')][_0xc841('0x2d')]};});_0x13606b[_0xc841('0x2e')]=_[_0xc841('0x28')](_0x13b745,_0xc841('0x25'));_0x13606b[_0xc841('0x2f')]=_[_0xc841('0x30')](_0x4145b8[_0xc841('0x2f')]);_0x13606b[_0xc841('0x31')]=_[_0xc841('0x32')](_0x13606b[_0xc841('0x2e')],_0x13606b[_0xc841('0x2f')]);_0x2952ed[_0xc841('0x33')]=_[_0xc841('0x32')](_0x13606b[_0xc841('0x2e')],qs['fields'](_0x4145b8[_0xc841('0x2f')]['fields']));_0x2952ed[_0xc841('0x33')]=_0x2952ed[_0xc841('0x33')][_0xc841('0x34')]?_0x2952ed[_0xc841('0x33')]:_0x13606b[_0xc841('0x2e')];if(!_0x4145b8['query']['hasOwnProperty'](_0xc841('0x35'))){_0x2952ed[_0xc841('0x1a')]=qs[_0xc841('0x1a')](_0x4145b8[_0xc841('0x2f')][_0xc841('0x1a')]);_0x2952ed['offset']=qs[_0xc841('0x19')](_0x4145b8[_0xc841('0x2f')]['offset']);}_0x2952ed['order']=qs[_0xc841('0x36')](_0x4145b8[_0xc841('0x2f')][_0xc841('0x36')]);_0x2952ed[_0xc841('0x37')]=qs[_0xc841('0x31')](_[_0xc841('0x38')](_0x4145b8[_0xc841('0x2f')],_0x13606b[_0xc841('0x31')]),_0x13b745);if(_0x4145b8[_0xc841('0x2f')]['filter']){_0x2952ed[_0xc841('0x37')]=_[_0xc841('0x39')](_0x2952ed[_0xc841('0x37')],{'$or':_[_0xc841('0x28')](_0x13b745,function(_0x2c5b6e){if(_0x2c5b6e[_0xc841('0x2c')]!==_0xc841('0x3a')){var _0x593bc0={};_0x593bc0[_0x2c5b6e[_0xc841('0x25')]]={'$like':'%'+_0x4145b8[_0xc841('0x2f')][_0xc841('0x3b')]+'%'};return _0x593bc0;}})});}_0x2952ed=_[_0xc841('0x39')]({},_0x2952ed,_0x4145b8[_0xc841('0x3c')]);var _0x4c9efe={'where':_0x2952ed[_0xc841('0x37')]};return db['FreshsalesField'][_0xc841('0x1c')](_0x4c9efe)[_0xc841('0x22')](function(_0x392008){_0x368027[_0xc841('0x1c')]=_0x392008;if(_0x4145b8[_0xc841('0x2f')][_0xc841('0x3d')]){_0x2952ed[_0xc841('0x3e')]=[{'all':!![]}];}return db[_0xc841('0x29')][_0xc841('0x3f')](_0x2952ed);})[_0xc841('0x22')](function(_0x59a69f){_0x368027['rows']=_0x59a69f;return _0x368027;})[_0xc841('0x22')](respondWithFilteredResult(_0x4105da,_0x2952ed))[_0xc841('0x40')](handleError(_0x4105da,null));};exports[_0xc841('0x41')]=function(_0x3def49,_0x13f10b){var _0x4b21f5={'raw':!![],'where':{'id':_0x3def49[_0xc841('0x42')]['id']}},_0x111257={};_0x111257[_0xc841('0x2e')]=_[_0xc841('0x30')](db[_0xc841('0x29')][_0xc841('0x2a')]);_0x111257['query']=_['keys'](_0x3def49[_0xc841('0x2f')]);_0x111257[_0xc841('0x31')]=_['intersection'](_0x111257[_0xc841('0x2e')],_0x111257[_0xc841('0x2f')]);_0x4b21f5[_0xc841('0x33')]=_['intersection'](_0x111257['model'],qs[_0xc841('0x43')](_0x3def49[_0xc841('0x2f')][_0xc841('0x43')]));_0x4b21f5[_0xc841('0x33')]=_0x4b21f5[_0xc841('0x33')][_0xc841('0x34')]?_0x4b21f5[_0xc841('0x33')]:_0x111257['model'];if(_0x3def49[_0xc841('0x2f')][_0xc841('0x3d')]){_0x4b21f5['include']=[{'all':!![]}];}_0x4b21f5=_['merge']({},_0x4b21f5,_0x3def49[_0xc841('0x3c')]);return db['FreshsalesField'][_0xc841('0x44')](_0x4b21f5)['then'](handleEntityNotFound(_0x13f10b,null))['then'](respondWithResult(_0x13f10b,null))[_0xc841('0x40')](handleError(_0x13f10b,null));};exports[_0xc841('0x45')]=function(_0x246c28,_0x837b80){return db[_0xc841('0x29')][_0xc841('0x45')](_0x246c28[_0xc841('0x46')],{})[_0xc841('0x22')](respondWithResult(_0x837b80,0xc9))[_0xc841('0x40')](handleError(_0x837b80,null));};exports[_0xc841('0x21')]=function(_0x1df002,_0xbc1fdf){if(_0x1df002['body']['id']){delete _0x1df002[_0xc841('0x46')]['id'];}return db[_0xc841('0x29')]['find']({'where':{'id':_0x1df002[_0xc841('0x42')]['id']}})[_0xc841('0x22')](handleEntityNotFound(_0xbc1fdf,null))[_0xc841('0x22')](saveUpdates(_0x1df002[_0xc841('0x46')],null))[_0xc841('0x22')](respondWithResult(_0xbc1fdf,null))['catch'](handleError(_0xbc1fdf,null));};exports[_0xc841('0x47')]=function(_0x523f60,_0x574a4a){return db[_0xc841('0x29')]['find']({'where':{'id':_0x523f60[_0xc841('0x42')]['id']}})[_0xc841('0x22')](handleEntityNotFound(_0x574a4a,null))[_0xc841('0x22')](removeEntity(_0x574a4a,null))[_0xc841('0x40')](handleError(_0x574a4a,null));};
\ No newline at end of file
index afc165b..7df3bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6302=['freshsales_unique_index','util','../../config/logger','api','moment','path','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields'];(function(_0x10bcc4,_0x4400e2){var _0x2da988=function(_0x2ee849){while(--_0x2ee849){_0x10bcc4['push'](_0x10bcc4['shift']());}};_0x2da988(++_0x4400e2);}(_0x6302,0x109));var _0x2630=function(_0x3ae069,_0x510266){_0x3ae069=_0x3ae069-0x0;var _0x3d1eed=_0x6302[_0x3ae069];return _0x3d1eed;};'use strict';var _=require('lodash');var util=require(_0x2630('0x0'));var logger=require(_0x2630('0x1'))(_0x2630('0x2'));var moment=require(_0x2630('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2630('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2630('0x5'));module[_0x2630('0x6')]=function(_0x434d82,_0x1a9f2b){return _0x434d82[_0x2630('0x7')](_0x2630('0x8'),attributes,{'tableName':_0x2630('0x9'),'paranoid':![],'indexes':[{'name':_0x2630('0xa'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6d7=['FieldId','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xc6d7,0x71));var _0x7c6d=function(_0x21e1a0,_0x3df1f3){_0x21e1a0=_0x21e1a0-0x0;var _0x3f6bcd=_0xc6d7[_0x21e1a0];return _0x3f6bcd;};'use strict';var _=require(_0x7c6d('0x0'));var util=require(_0x7c6d('0x1'));var logger=require(_0x7c6d('0x2'))(_0x7c6d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7c6d('0x4'));var fs=require('fs');var path=require(_0x7c6d('0x5'));var rimraf=require(_0x7c6d('0x6'));var config=require(_0x7c6d('0x7'));var attributes=require(_0x7c6d('0x8'));module[_0x7c6d('0x9')]=function(_0x679fc1,_0x4120c1){return _0x679fc1[_0x7c6d('0xa')](_0x7c6d('0xb'),attributes,{'tableName':_0x7c6d('0xc'),'paranoid':![],'indexes':[{'name':_0x7c6d('0xd'),'fields':[_0x7c6d('0xe'),_0x7c6d('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 202730e..db9ebc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['error','code','message','request\x20sent','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x401433,_0x1f9f2e){var _0x3bbc84=function(_0x5b6957){while(--_0x5b6957){_0x401433['push'](_0x401433['shift']());}};_0x3bbc84(++_0x1f9f2e);}(_0xafc4,0x69));var _0x4afc=function(_0x27d9f3,_0x1833f1){_0x27d9f3=_0x27d9f3-0x0;var _0x596e72=_0xafc4[_0x27d9f3];return _0x596e72;};'use strict';var _=require(_0x4afc('0x0'));var util=require('util');var moment=require(_0x4afc('0x1'));var BPromise=require('bluebird');var rs=require(_0x4afc('0x2'));var fs=require('fs');var Redis=require(_0x4afc('0x3'));var db=require(_0x4afc('0x4'))['db'];var utils=require(_0x4afc('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x4afc('0x6'));var client=jayson[_0x4afc('0x7')][_0x4afc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1bb281,_0xc828d9,_0xaf053d){return new BPromise(function(_0x5e1e29,_0x31e165){return client[_0x4afc('0x9')](_0x1bb281,_0xaf053d)[_0x4afc('0xa')](function(_0x1e6bf5){logger[_0x4afc('0xb')](_0x4afc('0xc'),_0xc828d9,'request\x20sent');logger['debug'](_0x4afc('0xd'),_0xc828d9,'request\x20sent',JSON[_0x4afc('0xe')](_0x1e6bf5));if(_0x1e6bf5[_0x4afc('0xf')]){if(_0x1e6bf5['error'][_0x4afc('0x10')]===0x1f4){logger[_0x4afc('0xf')](_0x4afc('0xc'),_0xc828d9,_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);return _0x31e165(_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);}logger[_0x4afc('0xf')]('FreshsalesField,\x20%s,\x20%s',_0xc828d9,_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);return _0x5e1e29(_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);}else{logger['info']('FreshsalesField,\x20%s,\x20%s',_0xc828d9,_0x4afc('0x12'));_0x5e1e29(_0x1e6bf5['result'][_0x4afc('0x11')]);}})[_0x4afc('0x13')](function(_0x2b928b){logger[_0x4afc('0xf')](_0x4afc('0xc'),_0xc828d9,_0x2b928b);_0x31e165(_0x2b928b);});});}
\ No newline at end of file
+var _0x4819=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','FreshsalesField,\x20%s,\x20%s','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','util','moment'];(function(_0x309931,_0x47085e){var _0x4c6ecb=function(_0x3ce378){while(--_0x3ce378){_0x309931['push'](_0x309931['shift']());}};_0x4c6ecb(++_0x47085e);}(_0x4819,0xcd));var _0x9481=function(_0x499001,_0x3f27ae){_0x499001=_0x499001-0x0;var _0x320c65=_0x4819[_0x499001];return _0x320c65;};'use strict';var _=require('lodash');var util=require(_0x9481('0x0'));var moment=require(_0x9481('0x1'));var BPromise=require(_0x9481('0x2'));var rs=require(_0x9481('0x3'));var fs=require('fs');var Redis=require(_0x9481('0x4'));var db=require(_0x9481('0x5'))['db'];var utils=require(_0x9481('0x6'));var logger=require(_0x9481('0x7'))(_0x9481('0x8'));var config=require(_0x9481('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9481('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54cc78,_0x14e05a,_0x6c6a08){return new BPromise(function(_0x27c033,_0x3278ff){return client[_0x9481('0xb')](_0x54cc78,_0x6c6a08)['then'](function(_0x1818cf){logger['info'](_0x9481('0xc'),_0x14e05a,'request\x20sent');logger[_0x9481('0xd')](_0x9481('0xe'),_0x14e05a,_0x9481('0xf'),JSON[_0x9481('0x10')](_0x1818cf));if(_0x1818cf[_0x9481('0x11')]){if(_0x1818cf[_0x9481('0x11')][_0x9481('0x12')]===0x1f4){logger[_0x9481('0x11')](_0x9481('0xc'),_0x14e05a,_0x1818cf['error']['message']);return _0x3278ff(_0x1818cf[_0x9481('0x11')][_0x9481('0x13')]);}logger[_0x9481('0x11')](_0x9481('0xc'),_0x14e05a,_0x1818cf[_0x9481('0x11')][_0x9481('0x13')]);return _0x27c033(_0x1818cf[_0x9481('0x11')]['message']);}else{logger[_0x9481('0x14')](_0x9481('0xc'),_0x14e05a,'request\x20sent');_0x27c033(_0x1818cf[_0x9481('0x15')]['message']);}})[_0x9481('0x16')](function(_0x7a2ac8){logger[_0x9481('0x11')](_0x9481('0xc'),_0x14e05a,_0x7a2ac8);_0x3278ff(_0x7a2ac8);});});}
\ No newline at end of file
index 3692eab..cd404be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x167400,_0xd7b075){var _0x4fb7c9=function(_0x39aff2){while(--_0x39aff2){_0x167400['push'](_0x167400['shift']());}};_0x4fb7c9(++_0xd7b075);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x4acc74,_0x3fb33e){var _0xe6161d=function(_0x2657e7){while(--_0x2657e7){_0x4acc74['push'](_0x4acc74['shift']());}};_0xe6161d(++_0x3fb33e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index b1e862d..58845e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a62=['ENUM','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x500c0,_0xdb6a03){var _0xdd146f=function(_0x2e8090){while(--_0x2e8090){_0x500c0['push'](_0x500c0['shift']());}};_0xdd146f(++_0xdb6a03);}(_0x1a62,0x176));var _0x21a6=function(_0x2d3b9c,_0x523dc1){_0x2d3b9c=_0x2d3b9c-0x0;var _0x1b7bf0=_0x1a62[_0x2d3b9c];return _0x1b7bf0;};'use strict';var Sequelize=require(_0x21a6('0x0'));module[_0x21a6('0x1')]={'name':{'type':Sequelize[_0x21a6('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x21a6('0x2')],'unique':_0x21a6('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x21a6('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0x21a6('0x2')]},'serverUrl':{'type':Sequelize[_0x21a6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x21a6('0x4')](_0x21a6('0x5'),_0x21a6('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xb296=['newTab','sequelize','exports','STRING','username','integrationTab'];(function(_0xed89f9,_0x548963){var _0x503894=function(_0x36f495){while(--_0x36f495){_0xed89f9['push'](_0xed89f9['shift']());}};_0x503894(++_0x548963);}(_0xb296,0xa3));var _0x6b29=function(_0x27e8eb,_0x34312b){_0x27e8eb=_0x27e8eb-0x0;var _0x4510e7=_0xb296[_0x27e8eb];return _0x4510e7;};'use strict';var Sequelize=require(_0x6b29('0x0'));module[_0x6b29('0x1')]={'name':{'type':Sequelize[_0x6b29('0x2')]},'description':{'type':Sequelize[_0x6b29('0x2')]},'username':{'type':Sequelize[_0x6b29('0x2')],'unique':_0x6b29('0x3')},'remoteUri':{'type':Sequelize[_0x6b29('0x2')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x6b29('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0x6b29('0x2')]},'serverUrl':{'type':Sequelize[_0x6b29('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x6b29('0x4'),_0x6b29('0x5')),'defaultValue':_0x6b29('0x4')}};
\ No newline at end of file
index ab733bd..f93a641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98af=['mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','apply','reject','save','update','then','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','fieldName','type','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','intersection','find','create','body','destroy','findOne','SalesforceConfiguration','order','getConfigurations','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientId','username','password','securityToken','lastIndexOf','Connection','clientSecret','login','concat','isNil','ticketType','sobject','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','email','textarea','remove','includes','custom','picklistValues','label','value','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x560d98,_0x1a422d){var _0x31e2b7=function(_0x28bbe5){while(--_0x28bbe5){_0x560d98['push'](_0x560d98['shift']());}};_0x31e2b7(++_0x1a422d);}(_0x98af,0x7b));var _0xf98a=function(_0x1f2935,_0xa47d27){_0x1f2935=_0x1f2935-0x0;var _0x4a9d5b=_0x98af[_0x1f2935];return _0x4a9d5b;};'use strict';var emlformat=require(_0xf98a('0x0'));var rimraf=require(_0xf98a('0x1'));var zipdir=require(_0xf98a('0x2'));var jsonpatch=require(_0xf98a('0x3'));var rp=require(_0xf98a('0x4'));var moment=require(_0xf98a('0x5'));var BPromise=require(_0xf98a('0x6'));var Mustache=require(_0xf98a('0x7'));var util=require('util');var path=require(_0xf98a('0x8'));var sox=require(_0xf98a('0x9'));var csv=require(_0xf98a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf98a('0xb'));var squel=require(_0xf98a('0xc'));var crypto=require(_0xf98a('0xd'));var jsforce=require(_0xf98a('0xe'));var deskjs=require(_0xf98a('0xf'));var toCsv=require(_0xf98a('0xa'));var querystring=require(_0xf98a('0x10'));var Papa=require(_0xf98a('0x11'));var Redis=require(_0xf98a('0x12'));var authService=require(_0xf98a('0x13'));var qs=require(_0xf98a('0x14'));var as=require(_0xf98a('0x15'));var hardwareService=require(_0xf98a('0x16'));var logger=require(_0xf98a('0x17'))(_0xf98a('0x18'));var utils=require(_0xf98a('0x19'));var config=require(_0xf98a('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xf98a('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x19e5c3,_0x115443){_0x115443=_0x115443||0xcc;return function(_0x2d2acd){if(_0x2d2acd){return _0x19e5c3[_0xf98a('0x1c')](_0x115443);}return _0x19e5c3[_0xf98a('0x1d')](_0x115443)[_0xf98a('0x1e')]();};}function respondWithResult(_0x29489b,_0x3c314d){_0x3c314d=_0x3c314d||0xc8;return function(_0xf6967b){if(_0xf6967b){return _0x29489b[_0xf98a('0x1d')](_0x3c314d)['json'](_0xf6967b);}};}function respondWithFilteredResult(_0x294e0d,_0x9c008a){return function(_0x5a57d2){if(_0x5a57d2){var _0x4a22d7=typeof _0x9c008a[_0xf98a('0x1f')]===_0xf98a('0x20')&&typeof _0x9c008a['limit']==='undefined';var _0x3aad83=_0x5a57d2['count'];var _0x1834f5=_0x4a22d7?0x0:_0x9c008a[_0xf98a('0x1f')];var _0x13d49e=_0x4a22d7?_0x5a57d2['count']:_0x9c008a['offset']+_0x9c008a[_0xf98a('0x21')];var _0x43a015;if(_0x13d49e>=_0x3aad83){_0x13d49e=_0x3aad83;_0x43a015=0xc8;}else{_0x43a015=0xce;}_0x294e0d[_0xf98a('0x1d')](_0x43a015);return _0x294e0d[_0xf98a('0x22')]('Content-Range',_0x1834f5+'-'+_0x13d49e+'/'+_0x3aad83)['json'](_0x5a57d2);}return null;};}function patchUpdates(_0x1c5c9c){return function(_0xafd50){try{jsonpatch[_0xf98a('0x23')](_0xafd50,_0x1c5c9c,!![]);}catch(_0x61fca9){return BPromise[_0xf98a('0x24')](_0x61fca9);}return _0xafd50[_0xf98a('0x25')]();};}function saveUpdates(_0x1f10dc,_0x4efd3d){return function(_0x4262b1){if(_0x4262b1){return _0x4262b1[_0xf98a('0x26')](_0x1f10dc)[_0xf98a('0x27')](function(_0x409582){return _0x409582;});}return null;};}function removeEntity(_0x4bef0a,_0x2fa38d){return function(_0xe17fea){if(_0xe17fea){return _0xe17fea['destroy']()['then'](function(){_0x4bef0a['status'](0xcc)[_0xf98a('0x1e')]();});}};}function handleEntityNotFound(_0x2c6f13,_0x3be9fb){return function(_0x4ff1d4){if(!_0x4ff1d4){_0x2c6f13[_0xf98a('0x1c')](0x194);}return _0x4ff1d4;};}function handleError(_0x44b4f0,_0x2b47ac){_0x2b47ac=_0x2b47ac||0x1f4;return function(_0x44ec78){logger[_0xf98a('0x28')](_0x44ec78[_0xf98a('0x29')]);if(_0x44ec78[_0xf98a('0x2a')]){delete _0x44ec78[_0xf98a('0x2a')];}_0x44b4f0[_0xf98a('0x1d')](_0x2b47ac)[_0xf98a('0x2b')](_0x44ec78);};}exports[_0xf98a('0x2c')]=function(_0x36842c,_0x481390){var _0x46d0d5={},_0x5e9cd8={},_0x1224cb={'count':0x0,'rows':[]};var _0x540ce5=_[_0xf98a('0x2d')](db[_0xf98a('0x2e')][_0xf98a('0x2f')],function(_0x459729){return{'name':_0x459729[_0xf98a('0x30')],'type':_0x459729[_0xf98a('0x31')]['key']};});_0x5e9cd8[_0xf98a('0x32')]=_[_0xf98a('0x2d')](_0x540ce5,_0xf98a('0x2a'));_0x5e9cd8[_0xf98a('0x33')]=_['keys'](_0x36842c[_0xf98a('0x33')]);_0x5e9cd8[_0xf98a('0x34')]=_['intersection'](_0x5e9cd8['model'],_0x5e9cd8['query']);_0x46d0d5[_0xf98a('0x35')]=_['intersection'](_0x5e9cd8['model'],qs[_0xf98a('0x36')](_0x36842c['query'][_0xf98a('0x36')]));_0x46d0d5[_0xf98a('0x35')]=_0x46d0d5[_0xf98a('0x35')][_0xf98a('0x37')]?_0x46d0d5[_0xf98a('0x35')]:_0x5e9cd8[_0xf98a('0x32')];if(!_0x36842c['query'][_0xf98a('0x38')](_0xf98a('0x39'))){_0x46d0d5[_0xf98a('0x21')]=qs[_0xf98a('0x21')](_0x36842c[_0xf98a('0x33')][_0xf98a('0x21')]);_0x46d0d5['offset']=qs[_0xf98a('0x1f')](_0x36842c[_0xf98a('0x33')]['offset']);}_0x46d0d5['order']=qs[_0xf98a('0x3a')](_0x36842c[_0xf98a('0x33')][_0xf98a('0x3a')]);_0x46d0d5[_0xf98a('0x3b')]=qs['filters'](_[_0xf98a('0x3c')](_0x36842c[_0xf98a('0x33')],_0x5e9cd8['filters']),_0x540ce5);if(_0x36842c[_0xf98a('0x33')][_0xf98a('0x3d')]){_0x46d0d5['where']=_['merge'](_0x46d0d5[_0xf98a('0x3b')],{'$or':_[_0xf98a('0x2d')](_0x540ce5,function(_0x1f252b){if(_0x1f252b[_0xf98a('0x31')]!==_0xf98a('0x3e')){var _0x21787b={};_0x21787b[_0x1f252b[_0xf98a('0x2a')]]={'$like':'%'+_0x36842c[_0xf98a('0x33')][_0xf98a('0x3d')]+'%'};return _0x21787b;}})});}_0x46d0d5=_[_0xf98a('0x3f')]({},_0x46d0d5,_0x36842c[_0xf98a('0x40')]);var _0x4fbebe={'where':_0x46d0d5[_0xf98a('0x3b')]};return db[_0xf98a('0x2e')]['count'](_0x4fbebe)[_0xf98a('0x27')](function(_0x1aca47){_0x1224cb['count']=_0x1aca47;if(_0x36842c[_0xf98a('0x33')][_0xf98a('0x41')]){_0x46d0d5[_0xf98a('0x42')]=[{'all':!![]}];}return db[_0xf98a('0x2e')]['findAll'](_0x46d0d5);})['then'](function(_0xe696a3){_0x1224cb[_0xf98a('0x43')]=_0xe696a3;return _0x1224cb;})[_0xf98a('0x27')](respondWithFilteredResult(_0x481390,_0x46d0d5))[_0xf98a('0x44')](handleError(_0x481390,null));};exports[_0xf98a('0x45')]=function(_0x3c3f08,_0x2b2374){var _0x276111={'raw':![],'where':{'id':_0x3c3f08[_0xf98a('0x46')]['id']}},_0x5b100d={};_0x5b100d[_0xf98a('0x32')]=_['keys'](db['SalesforceAccount'][_0xf98a('0x2f')]);_0x5b100d[_0xf98a('0x33')]=_[_0xf98a('0x47')](_0x3c3f08['query']);_0x5b100d['filters']=_['intersection'](_0x5b100d[_0xf98a('0x32')],_0x5b100d[_0xf98a('0x33')]);_0x276111[_0xf98a('0x35')]=_[_0xf98a('0x48')](_0x5b100d[_0xf98a('0x32')],qs[_0xf98a('0x36')](_0x3c3f08[_0xf98a('0x33')][_0xf98a('0x36')]));_0x276111[_0xf98a('0x35')]=_0x276111['attributes']['length']?_0x276111['attributes']:_0x5b100d[_0xf98a('0x32')];if(_0x3c3f08[_0xf98a('0x33')][_0xf98a('0x41')]){_0x276111[_0xf98a('0x42')]=[{'all':!![]}];}_0x276111=_[_0xf98a('0x3f')]({},_0x276111,_0x3c3f08[_0xf98a('0x40')]);return db['SalesforceAccount'][_0xf98a('0x49')](_0x276111)[_0xf98a('0x27')](handleEntityNotFound(_0x2b2374,null))['then'](respondWithResult(_0x2b2374,null))['catch'](handleError(_0x2b2374,null));};exports[_0xf98a('0x4a')]=function(_0x4de716,_0x51d0ed){return db[_0xf98a('0x2e')][_0xf98a('0x4a')](_0x4de716['body'],{})[_0xf98a('0x27')](respondWithResult(_0x51d0ed,0xc9))[_0xf98a('0x44')](handleError(_0x51d0ed,null));};exports['update']=function(_0x197336,_0x17be4b){if(_0x197336[_0xf98a('0x4b')]['id']){delete _0x197336[_0xf98a('0x4b')]['id'];}return db[_0xf98a('0x2e')][_0xf98a('0x49')]({'where':{'id':_0x197336['params']['id']}})[_0xf98a('0x27')](handleEntityNotFound(_0x17be4b,null))['then'](saveUpdates(_0x197336['body'],null))[_0xf98a('0x27')](respondWithResult(_0x17be4b,null))[_0xf98a('0x44')](handleError(_0x17be4b,null));};exports[_0xf98a('0x4c')]=function(_0x3fdc4f,_0x546cd8){return db[_0xf98a('0x2e')][_0xf98a('0x49')]({'where':{'id':_0x3fdc4f[_0xf98a('0x46')]['id']}})[_0xf98a('0x27')](handleEntityNotFound(_0x546cd8,null))[_0xf98a('0x27')](removeEntity(_0x546cd8,null))['catch'](handleError(_0x546cd8,null));};exports['getConfigurations']=function(_0x45badf,_0x3ac8ba,_0xaa84d0){var _0x431611={};var _0x1211e8={};var _0x3fdc15;var _0x12a115;return db[_0xf98a('0x2e')][_0xf98a('0x4d')]({'where':{'id':_0x45badf[_0xf98a('0x46')]['id']}})[_0xf98a('0x27')](handleEntityNotFound(_0x3ac8ba,null))[_0xf98a('0x27')](function(_0x8df907){if(_0x8df907){_0x3fdc15=_0x8df907;_0x1211e8[_0xf98a('0x32')]=_[_0xf98a('0x47')](db[_0xf98a('0x4e')][_0xf98a('0x2f')]);_0x1211e8['query']=_[_0xf98a('0x47')](_0x45badf[_0xf98a('0x33')]);_0x1211e8[_0xf98a('0x34')]=_[_0xf98a('0x48')](_0x1211e8[_0xf98a('0x32')],_0x1211e8[_0xf98a('0x33')]);_0x431611[_0xf98a('0x35')]=_[_0xf98a('0x48')](_0x1211e8[_0xf98a('0x32')],qs[_0xf98a('0x36')](_0x45badf['query'][_0xf98a('0x36')]));_0x431611['attributes']=_0x431611[_0xf98a('0x35')][_0xf98a('0x37')]?_0x431611[_0xf98a('0x35')]:_0x1211e8[_0xf98a('0x32')];_0x431611[_0xf98a('0x4f')]=qs['sort'](_0x45badf[_0xf98a('0x33')][_0xf98a('0x3a')]);_0x431611[_0xf98a('0x3b')]=qs[_0xf98a('0x34')](_[_0xf98a('0x3c')](_0x45badf['query'],_0x1211e8['filters']));if(_0x45badf[_0xf98a('0x33')][_0xf98a('0x3d')]){_0x431611[_0xf98a('0x3b')]=_[_0xf98a('0x3f')](_0x431611[_0xf98a('0x3b')],{'$or':_[_0xf98a('0x2d')](_0x431611[_0xf98a('0x35')],function(_0x348e42){var _0x582f10={};_0x582f10[_0x348e42]={'$like':'%'+_0x45badf[_0xf98a('0x33')][_0xf98a('0x3d')]+'%'};return _0x582f10;})});}_0x431611=_['merge']({},_0x431611,_0x45badf[_0xf98a('0x40')]);return _0x3fdc15[_0xf98a('0x50')](_0x431611);}})['then'](function(_0x2bf759){if(_0x2bf759){_0x12a115=_0x2bf759[_0xf98a('0x37')];if(!_0x45badf['query'][_0xf98a('0x38')](_0xf98a('0x39'))){_0x431611['limit']=qs[_0xf98a('0x21')](_0x45badf[_0xf98a('0x33')][_0xf98a('0x21')]);_0x431611['offset']=qs[_0xf98a('0x1f')](_0x45badf[_0xf98a('0x33')][_0xf98a('0x1f')]);}return _0x3fdc15[_0xf98a('0x50')](_0x431611);}})[_0xf98a('0x27')](function(_0x2fb562){if(_0x2fb562){return _0x2fb562?{'count':_0x12a115,'rows':_0x2fb562}:null;}})[_0xf98a('0x27')](respondWithResult(_0x3ac8ba,null))['catch'](handleError(_0x3ac8ba,null));};exports[_0xf98a('0x51')]=function(_0x5f4b95,_0x2bbc88,_0x237173){if(_0x5f4b95[_0xf98a('0x4b')]['id']){delete _0x5f4b95[_0xf98a('0x4b')]['id'];}return db[_0xf98a('0x2e')][_0xf98a('0x4d')]({'where':{'id':_0x5f4b95[_0xf98a('0x46')]['id']}})[_0xf98a('0x27')](handleEntityNotFound(_0x2bbc88,null))['then'](function(_0x22d863){if(_0x22d863){_0x5f4b95[_0xf98a('0x4b')]['AccountId']=_0x22d863['id'];_0x5f4b95[_0xf98a('0x4b')][_0xf98a('0x52')]=integrations[_0xf98a('0x53')](_0x5f4b95[_0xf98a('0x4b')][_0xf98a('0x54')],_0x5f4b95[_0xf98a('0x4b')][_0xf98a('0x31')]);_0x5f4b95['body'][_0xf98a('0x55')]=integrations[_0xf98a('0x56')](_0x5f4b95[_0xf98a('0x4b')]['channel'],_0x5f4b95[_0xf98a('0x4b')][_0xf98a('0x31')]);return db['SalesforceConfiguration'][_0xf98a('0x4a')](_0x5f4b95[_0xf98a('0x4b')],{'include':[{'model':db[_0xf98a('0x57')],'as':_0xf98a('0x52')},{'model':db[_0xf98a('0x57')],'as':'Descriptions'}]});}return null;})[_0xf98a('0x27')](respondWithResult(_0x2bbc88,null))[_0xf98a('0x44')](handleError(_0x2bbc88,null));};exports['getFields']=function(_0x1c5b45,_0x1ce748,_0x3a6587){var _0x2c7165;var _0x121902='';var _0x32d2d4=_0xf98a('0x58');return db[_0xf98a('0x2e')][_0xf98a('0x4d')]({'where':{'id':_0x1c5b45['params']['id']},'attributes':['id',_0xf98a('0x59'),_0xf98a('0x5a'),'clientSecret',_0xf98a('0x5b'),_0xf98a('0x5c'),_0xf98a('0x5d')]})['then'](handleEntityNotFound(_0x1ce748,null))[_0xf98a('0x27')](function(_0x3501fc){if(_0x3501fc){_0x121902=_0x3501fc[_0xf98a('0x59')];var _0x300e42=_0x121902['slice'](-0x1);if(_0x300e42==='/'){_0x121902=_0x121902['substring'](0x0,_0x121902[_0xf98a('0x5e')](_0x300e42));}_0x2c7165=new jsforce[(_0xf98a('0x5f'))]({'oauth2':{'loginUrl':_0x121902,'clientId':_0x3501fc[_0xf98a('0x5a')],'clientSecret':_0x3501fc[_0xf98a('0x60')]}});return _0x2c7165[_0xf98a('0x61')](_0x3501fc['username'],_0x3501fc[_0xf98a('0x5c')][_0xf98a('0x62')](_0x3501fc['securityToken']));}})['then'](function(_0x2ba98b){if(_0x2ba98b){if(!_[_0xf98a('0x63')](_0x1c5b45['query'][_0xf98a('0x64')])){_0x32d2d4=_0x1c5b45['query'][_0xf98a('0x64')];}return _0x2c7165[_0xf98a('0x65')](_0x32d2d4)['describe']();}})['then'](function(_0x3fad4b){var _0x5d50bc=[_0xf98a('0x66'),_0xf98a('0x67'),_0xf98a('0x68'),_0xf98a('0x69'),_0xf98a('0x6a'),_0xf98a('0x6b')];var _0x362ff6=[_0xf98a('0x6c'),_0xf98a('0x6d'),_0xf98a('0x6e'),_0xf98a('0x6f'),_0xf98a('0x70'),_0xf98a('0x71'),'phone'];if(_0x3fad4b){_[_0xf98a('0x72')](_0x3fad4b[_0xf98a('0x36')],function(_0x31d543){return _0x5d50bc[_0xf98a('0x73')](_0x31d543[_0xf98a('0x2a')])||!_0x362ff6[_0xf98a('0x73')](_0x31d543['type']);});return{'count':_0x3fad4b[_0xf98a('0x36')][_0xf98a('0x37')],'rows':_[_0xf98a('0x2d')](_0x3fad4b[_0xf98a('0x36')],function(_0x2e4b60){return{'id':_0x2e4b60[_0xf98a('0x2a')],'name':_0x2e4b60['label'],'custom':_0x2e4b60[_0xf98a('0x74')],'options':_0x2e4b60[_0xf98a('0x75')][_0xf98a('0x37')]>0x0?_[_0xf98a('0x2d')](_0x2e4b60[_0xf98a('0x75')],function(_0x4d90eb){return{'name':_0x4d90eb[_0xf98a('0x76')],'value':_0x4d90eb[_0xf98a('0x77')]};}):_0x2e4b60['type']==_0xf98a('0x6f')?[{'name':_0xf98a('0x78'),'value':_0xf98a('0x79')},{'name':_0xf98a('0x7a'),'value':_0xf98a('0x7b')}]:[]};})};}})[_0xf98a('0x27')](respondWithResult(_0x1ce748,null))['catch'](function(_0x49d26a){var _0x4d7c61=_0x1c5b45['query'][_0xf98a('0x7c')]?0x1f4:_0x49d26a[_0xf98a('0x7d')]||0x1f4;logger['error'](_0xf98a('0x7e'),_0xf98a('0x7f'),_0x4d7c61,JSON[_0xf98a('0x80')](_0x49d26a));delete _0x49d26a[_0xf98a('0x2a')];if(_0x4d7c61===0x191){_0x4d7c61=0x190;}_0x1ce748['status'](_0x4d7c61)[_0xf98a('0x2b')](_0x1c5b45[_0xf98a('0x33')][_0xf98a('0x7c')]?{'message':_0xf98a('0x81'),'statusCode':_0x49d26a['statusCode']}:_0x49d26a);});};
\ No newline at end of file
+var _0x61ba=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','show','params','include','options','find','catch','create','body','getConfigurations','SalesforceConfiguration','hasOwnProperty','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','SalesforceField','Descriptions','getFields','Task','remoteUri','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','email','includes','label','custom','picklistValues','value','boolean','True','true','False','false','test','statusCode','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce'];(function(_0x23b550,_0x21515e){var _0x11cb24=function(_0xafeadb){while(--_0xafeadb){_0x23b550['push'](_0x23b550['shift']());}};_0x11cb24(++_0x21515e);}(_0x61ba,0x164));var _0xa61b=function(_0x3e8d3c,_0x2e4078){_0x3e8d3c=_0x3e8d3c-0x0;var _0x5e64c6=_0x61ba[_0x3e8d3c];return _0x5e64c6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa61b('0x0'));var rp=require(_0xa61b('0x1'));var moment=require(_0xa61b('0x2'));var BPromise=require(_0xa61b('0x3'));var Mustache=require(_0xa61b('0x4'));var util=require(_0xa61b('0x5'));var path=require(_0xa61b('0x6'));var sox=require(_0xa61b('0x7'));var csv=require(_0xa61b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa61b('0x9'));var _=require(_0xa61b('0xa'));var squel=require(_0xa61b('0xb'));var crypto=require('crypto');var jsforce=require(_0xa61b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa61b('0x8'));var querystring=require('querystring');var Papa=require(_0xa61b('0xd'));var Redis=require(_0xa61b('0xe'));var authService=require(_0xa61b('0xf'));var qs=require(_0xa61b('0x10'));var as=require(_0xa61b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa61b('0x12'))(_0xa61b('0x13'));var utils=require('../../config/utils');var config=require(_0xa61b('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5e154c,_0x5b0438){_0x5b0438=_0x5b0438||0xcc;return function(_0x591119){if(_0x591119){return _0x5e154c['sendStatus'](_0x5b0438);}return _0x5e154c[_0xa61b('0x15')](_0x5b0438)[_0xa61b('0x16')]();};}function respondWithResult(_0x3556c1,_0x75096d){_0x75096d=_0x75096d||0xc8;return function(_0x48714a){if(_0x48714a){return _0x3556c1[_0xa61b('0x15')](_0x75096d)[_0xa61b('0x17')](_0x48714a);}};}function respondWithFilteredResult(_0x15af64,_0x1309d5){return function(_0x365e1b){if(_0x365e1b){var _0x1906a6=typeof _0x1309d5[_0xa61b('0x18')]===_0xa61b('0x19')&&typeof _0x1309d5['limit']===_0xa61b('0x19');var _0x641a5e=_0x365e1b[_0xa61b('0x1a')];var _0x51e4a3=_0x1906a6?0x0:_0x1309d5[_0xa61b('0x18')];var _0x20d1bd=_0x1906a6?_0x365e1b['count']:_0x1309d5[_0xa61b('0x18')]+_0x1309d5['limit'];var _0x2107a7;if(_0x20d1bd>=_0x641a5e){_0x20d1bd=_0x641a5e;_0x2107a7=0xc8;}else{_0x2107a7=0xce;}_0x15af64['status'](_0x2107a7);return _0x15af64[_0xa61b('0x1b')](_0xa61b('0x1c'),_0x51e4a3+'-'+_0x20d1bd+'/'+_0x641a5e)[_0xa61b('0x17')](_0x365e1b);}return null;};}function patchUpdates(_0x3ecbc5){return function(_0x12151a){try{jsonpatch['apply'](_0x12151a,_0x3ecbc5,!![]);}catch(_0x1231b4){return BPromise[_0xa61b('0x1d')](_0x1231b4);}return _0x12151a[_0xa61b('0x1e')]();};}function saveUpdates(_0x25ecb4,_0x18bd9a){return function(_0x26f3c4){if(_0x26f3c4){return _0x26f3c4[_0xa61b('0x1f')](_0x25ecb4)[_0xa61b('0x20')](function(_0x38583d){return _0x38583d;});}return null;};}function removeEntity(_0x2d7320,_0x3e874a){return function(_0x2ec660){if(_0x2ec660){return _0x2ec660[_0xa61b('0x21')]()['then'](function(){_0x2d7320['status'](0xcc)[_0xa61b('0x16')]();});}};}function handleEntityNotFound(_0x118eaa,_0x11dfbc){return function(_0x223b69){if(!_0x223b69){_0x118eaa[_0xa61b('0x22')](0x194);}return _0x223b69;};}function handleError(_0xf15d5d,_0x12417f){_0x12417f=_0x12417f||0x1f4;return function(_0x2cd9c8){logger[_0xa61b('0x23')](_0x2cd9c8[_0xa61b('0x24')]);if(_0x2cd9c8[_0xa61b('0x25')]){delete _0x2cd9c8[_0xa61b('0x25')];}_0xf15d5d[_0xa61b('0x15')](_0x12417f)[_0xa61b('0x26')](_0x2cd9c8);};}exports[_0xa61b('0x27')]=function(_0x3b5d05,_0x51798c){var _0xf3c5b0={},_0x403125={},_0x551bb0={'count':0x0,'rows':[]};var _0xdf224c=_[_0xa61b('0x28')](db[_0xa61b('0x29')][_0xa61b('0x2a')],function(_0x258251){return{'name':_0x258251['fieldName'],'type':_0x258251[_0xa61b('0x2b')][_0xa61b('0x2c')]};});_0x403125['model']=_[_0xa61b('0x28')](_0xdf224c,'name');_0x403125[_0xa61b('0x2d')]=_[_0xa61b('0x2e')](_0x3b5d05[_0xa61b('0x2d')]);_0x403125[_0xa61b('0x2f')]=_[_0xa61b('0x30')](_0x403125[_0xa61b('0x31')],_0x403125[_0xa61b('0x2d')]);_0xf3c5b0[_0xa61b('0x32')]=_[_0xa61b('0x30')](_0x403125['model'],qs['fields'](_0x3b5d05[_0xa61b('0x2d')][_0xa61b('0x33')]));_0xf3c5b0['attributes']=_0xf3c5b0[_0xa61b('0x32')][_0xa61b('0x34')]?_0xf3c5b0[_0xa61b('0x32')]:_0x403125[_0xa61b('0x31')];if(!_0x3b5d05[_0xa61b('0x2d')]['hasOwnProperty'](_0xa61b('0x35'))){_0xf3c5b0[_0xa61b('0x36')]=qs[_0xa61b('0x36')](_0x3b5d05['query'][_0xa61b('0x36')]);_0xf3c5b0['offset']=qs[_0xa61b('0x18')](_0x3b5d05['query'][_0xa61b('0x18')]);}_0xf3c5b0[_0xa61b('0x37')]=qs[_0xa61b('0x38')](_0x3b5d05['query'][_0xa61b('0x38')]);_0xf3c5b0[_0xa61b('0x39')]=qs['filters'](_[_0xa61b('0x3a')](_0x3b5d05[_0xa61b('0x2d')],_0x403125['filters']),_0xdf224c);if(_0x3b5d05[_0xa61b('0x2d')]['filter']){_0xf3c5b0[_0xa61b('0x39')]=_[_0xa61b('0x3b')](_0xf3c5b0[_0xa61b('0x39')],{'$or':_['map'](_0xdf224c,function(_0x445858){if(_0x445858[_0xa61b('0x2b')]!==_0xa61b('0x3c')){var _0x5372d6={};_0x5372d6[_0x445858[_0xa61b('0x25')]]={'$like':'%'+_0x3b5d05['query'][_0xa61b('0x3d')]+'%'};return _0x5372d6;}})});}_0xf3c5b0=_[_0xa61b('0x3b')]({},_0xf3c5b0,_0x3b5d05['options']);var _0x2110a9={'where':_0xf3c5b0[_0xa61b('0x39')]};return db[_0xa61b('0x29')]['count'](_0x2110a9)['then'](function(_0x85b770){_0x551bb0[_0xa61b('0x1a')]=_0x85b770;if(_0x3b5d05[_0xa61b('0x2d')][_0xa61b('0x3e')]){_0xf3c5b0['include']=[{'all':!![]}];}return db[_0xa61b('0x29')][_0xa61b('0x3f')](_0xf3c5b0);})[_0xa61b('0x20')](function(_0x229a7c){_0x551bb0['rows']=_0x229a7c;return _0x551bb0;})['then'](respondWithFilteredResult(_0x51798c,_0xf3c5b0))['catch'](handleError(_0x51798c,null));};exports[_0xa61b('0x40')]=function(_0x18a17a,_0x6c435f){var _0x38a898={'raw':![],'where':{'id':_0x18a17a[_0xa61b('0x41')]['id']}},_0x252b9e={};_0x252b9e['model']=_[_0xa61b('0x2e')](db[_0xa61b('0x29')]['rawAttributes']);_0x252b9e[_0xa61b('0x2d')]=_[_0xa61b('0x2e')](_0x18a17a[_0xa61b('0x2d')]);_0x252b9e[_0xa61b('0x2f')]=_[_0xa61b('0x30')](_0x252b9e[_0xa61b('0x31')],_0x252b9e[_0xa61b('0x2d')]);_0x38a898[_0xa61b('0x32')]=_['intersection'](_0x252b9e[_0xa61b('0x31')],qs[_0xa61b('0x33')](_0x18a17a[_0xa61b('0x2d')][_0xa61b('0x33')]));_0x38a898['attributes']=_0x38a898[_0xa61b('0x32')][_0xa61b('0x34')]?_0x38a898[_0xa61b('0x32')]:_0x252b9e[_0xa61b('0x31')];if(_0x18a17a['query']['includeAll']){_0x38a898[_0xa61b('0x42')]=[{'all':!![]}];}_0x38a898=_[_0xa61b('0x3b')]({},_0x38a898,_0x18a17a[_0xa61b('0x43')]);return db['SalesforceAccount'][_0xa61b('0x44')](_0x38a898)[_0xa61b('0x20')](handleEntityNotFound(_0x6c435f,null))[_0xa61b('0x20')](respondWithResult(_0x6c435f,null))[_0xa61b('0x45')](handleError(_0x6c435f,null));};exports[_0xa61b('0x46')]=function(_0x456fea,_0x578905){return db[_0xa61b('0x29')][_0xa61b('0x46')](_0x456fea[_0xa61b('0x47')],{})['then'](respondWithResult(_0x578905,0xc9))[_0xa61b('0x45')](handleError(_0x578905,null));};exports['update']=function(_0x2e5514,_0x17cc78){if(_0x2e5514[_0xa61b('0x47')]['id']){delete _0x2e5514['body']['id'];}return db[_0xa61b('0x29')][_0xa61b('0x44')]({'where':{'id':_0x2e5514['params']['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x17cc78,null))['then'](saveUpdates(_0x2e5514[_0xa61b('0x47')],null))['then'](respondWithResult(_0x17cc78,null))[_0xa61b('0x45')](handleError(_0x17cc78,null));};exports[_0xa61b('0x21')]=function(_0x2fe912,_0x96a7ca){return db[_0xa61b('0x29')][_0xa61b('0x44')]({'where':{'id':_0x2fe912[_0xa61b('0x41')]['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x96a7ca,null))[_0xa61b('0x20')](removeEntity(_0x96a7ca,null))['catch'](handleError(_0x96a7ca,null));};exports[_0xa61b('0x48')]=function(_0x2dcc62,_0x2d5806,_0x471c87){var _0x3a7d96={};var _0x2f912c={};var _0x20625d;var _0x524b7c;return db[_0xa61b('0x29')]['findOne']({'where':{'id':_0x2dcc62[_0xa61b('0x41')]['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x2d5806,null))['then'](function(_0x5caf15){if(_0x5caf15){_0x20625d=_0x5caf15;_0x2f912c[_0xa61b('0x31')]=_[_0xa61b('0x2e')](db[_0xa61b('0x49')]['rawAttributes']);_0x2f912c[_0xa61b('0x2d')]=_['keys'](_0x2dcc62[_0xa61b('0x2d')]);_0x2f912c[_0xa61b('0x2f')]=_[_0xa61b('0x30')](_0x2f912c[_0xa61b('0x31')],_0x2f912c[_0xa61b('0x2d')]);_0x3a7d96[_0xa61b('0x32')]=_[_0xa61b('0x30')](_0x2f912c[_0xa61b('0x31')],qs[_0xa61b('0x33')](_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x33')]));_0x3a7d96['attributes']=_0x3a7d96[_0xa61b('0x32')][_0xa61b('0x34')]?_0x3a7d96['attributes']:_0x2f912c[_0xa61b('0x31')];_0x3a7d96[_0xa61b('0x37')]=qs['sort'](_0x2dcc62[_0xa61b('0x2d')]['sort']);_0x3a7d96[_0xa61b('0x39')]=qs['filters'](_[_0xa61b('0x3a')](_0x2dcc62['query'],_0x2f912c[_0xa61b('0x2f')]));if(_0x2dcc62['query'][_0xa61b('0x3d')]){_0x3a7d96['where']=_[_0xa61b('0x3b')](_0x3a7d96[_0xa61b('0x39')],{'$or':_['map'](_0x3a7d96[_0xa61b('0x32')],function(_0x5926b3){var _0x395c90={};_0x395c90[_0x5926b3]={'$like':'%'+_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x3d')]+'%'};return _0x395c90;})});}_0x3a7d96=_[_0xa61b('0x3b')]({},_0x3a7d96,_0x2dcc62['options']);return _0x20625d[_0xa61b('0x48')](_0x3a7d96);}})[_0xa61b('0x20')](function(_0x474304){if(_0x474304){_0x524b7c=_0x474304[_0xa61b('0x34')];if(!_0x2dcc62['query'][_0xa61b('0x4a')](_0xa61b('0x35'))){_0x3a7d96[_0xa61b('0x36')]=qs[_0xa61b('0x36')](_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x36')]);_0x3a7d96[_0xa61b('0x18')]=qs[_0xa61b('0x18')](_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x18')]);}return _0x20625d['getConfigurations'](_0x3a7d96);}})['then'](function(_0x38e2d7){if(_0x38e2d7){return _0x38e2d7?{'count':_0x524b7c,'rows':_0x38e2d7}:null;}})[_0xa61b('0x20')](respondWithResult(_0x2d5806,null))[_0xa61b('0x45')](handleError(_0x2d5806,null));};exports['addConfiguration']=function(_0x224f58,_0x501cde,_0x1cb9f9){if(_0x224f58[_0xa61b('0x47')]['id']){delete _0x224f58[_0xa61b('0x47')]['id'];}return db[_0xa61b('0x29')][_0xa61b('0x4b')]({'where':{'id':_0x224f58[_0xa61b('0x41')]['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x501cde,null))[_0xa61b('0x20')](function(_0xdbad22){if(_0xdbad22){_0x224f58[_0xa61b('0x47')][_0xa61b('0x4c')]=_0xdbad22['id'];_0x224f58[_0xa61b('0x47')][_0xa61b('0x4d')]=integrations[_0xa61b('0x4e')](_0x224f58[_0xa61b('0x47')][_0xa61b('0x4f')],_0x224f58['body'][_0xa61b('0x2b')]);_0x224f58[_0xa61b('0x47')]['Descriptions']=integrations[_0xa61b('0x50')](_0x224f58['body'][_0xa61b('0x4f')],_0x224f58[_0xa61b('0x47')][_0xa61b('0x2b')]);return db['SalesforceConfiguration']['create'](_0x224f58['body'],{'include':[{'model':db[_0xa61b('0x51')],'as':_0xa61b('0x4d')},{'model':db[_0xa61b('0x51')],'as':_0xa61b('0x52')}]});}return null;})[_0xa61b('0x20')](respondWithResult(_0x501cde,null))[_0xa61b('0x45')](handleError(_0x501cde,null));};exports[_0xa61b('0x53')]=function(_0xac3c9b,_0x3aa8ff,_0x34e5de){var _0x3817e4;var _0x2cc63c='';var _0x4615ca=_0xa61b('0x54');return db[_0xa61b('0x29')][_0xa61b('0x4b')]({'where':{'id':_0xac3c9b[_0xa61b('0x41')]['id']},'attributes':['id',_0xa61b('0x55'),'clientId',_0xa61b('0x56'),_0xa61b('0x57'),_0xa61b('0x58'),_0xa61b('0x59')]})[_0xa61b('0x20')](handleEntityNotFound(_0x3aa8ff,null))[_0xa61b('0x20')](function(_0x4d76c9){if(_0x4d76c9){_0x2cc63c=_0x4d76c9[_0xa61b('0x55')];var _0x420280=_0x2cc63c[_0xa61b('0x5a')](-0x1);if(_0x420280==='/'){_0x2cc63c=_0x2cc63c[_0xa61b('0x5b')](0x0,_0x2cc63c[_0xa61b('0x5c')](_0x420280));}_0x3817e4=new jsforce[(_0xa61b('0x5d'))]({'oauth2':{'loginUrl':_0x2cc63c,'clientId':_0x4d76c9[_0xa61b('0x5e')],'clientSecret':_0x4d76c9['clientSecret']}});return _0x3817e4[_0xa61b('0x5f')](_0x4d76c9[_0xa61b('0x57')],_0x4d76c9[_0xa61b('0x58')][_0xa61b('0x60')](_0x4d76c9['securityToken']));}})['then'](function(_0x4d2ed1){if(_0x4d2ed1){if(!_[_0xa61b('0x61')](_0xac3c9b[_0xa61b('0x2d')][_0xa61b('0x62')])){_0x4615ca=_0xac3c9b['query'][_0xa61b('0x62')];}return _0x3817e4[_0xa61b('0x63')](_0x4615ca)[_0xa61b('0x64')]();}})[_0xa61b('0x20')](function(_0x40e2db){var _0x507a81=[_0xa61b('0x65'),_0xa61b('0x66'),_0xa61b('0x67'),_0xa61b('0x68'),_0xa61b('0x69'),_0xa61b('0x6a')];var _0x4b1e51=[_0xa61b('0x6b'),_0xa61b('0x6c'),_0xa61b('0x6d'),'boolean',_0xa61b('0x6e'),'textarea','phone'];if(_0x40e2db){_['remove'](_0x40e2db['fields'],function(_0x180049){return _0x507a81['includes'](_0x180049[_0xa61b('0x25')])||!_0x4b1e51[_0xa61b('0x6f')](_0x180049[_0xa61b('0x2b')]);});return{'count':_0x40e2db[_0xa61b('0x33')][_0xa61b('0x34')],'rows':_[_0xa61b('0x28')](_0x40e2db['fields'],function(_0x53229c){return{'id':_0x53229c[_0xa61b('0x25')],'name':_0x53229c[_0xa61b('0x70')],'custom':_0x53229c[_0xa61b('0x71')],'options':_0x53229c[_0xa61b('0x72')][_0xa61b('0x34')]>0x0?_[_0xa61b('0x28')](_0x53229c[_0xa61b('0x72')],function(_0x51a131){return{'name':_0x51a131[_0xa61b('0x70')],'value':_0x51a131[_0xa61b('0x73')]};}):_0x53229c[_0xa61b('0x2b')]==_0xa61b('0x74')?[{'name':_0xa61b('0x75'),'value':_0xa61b('0x76')},{'name':_0xa61b('0x77'),'value':_0xa61b('0x78')}]:[]};})};}})['then'](respondWithResult(_0x3aa8ff,null))['catch'](function(_0x5a312e){var _0x1cd0b6=_0xac3c9b['query'][_0xa61b('0x79')]?0x1f4:_0x5a312e[_0xa61b('0x7a')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xa61b('0x53'),_0x1cd0b6,JSON['stringify'](_0x5a312e));delete _0x5a312e['name'];if(_0x1cd0b6===0x191){_0x1cd0b6=0x190;}_0x3aa8ff['status'](_0x1cd0b6)[_0xa61b('0x26')](_0xac3c9b[_0xa61b('0x2d')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x5a312e[_0xa61b('0x7a')]}:_0x5a312e);});};
\ No newline at end of file
index 86595e4..719c822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fa=['define','int_salesforce_accounts','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x274dd7,_0x2e6051){var _0x148829=function(_0x4cec98){while(--_0x4cec98){_0x274dd7['push'](_0x274dd7['shift']());}};_0x148829(++_0x2e6051);}(_0xc7fa,0x7a));var _0xac7f=function(_0x3746b0,_0x6dfbce){_0x3746b0=_0x3746b0-0x0;var _0x434afa=_0xc7fa[_0x3746b0];return _0x434afa;};'use strict';var _=require(_0xac7f('0x0'));var util=require(_0xac7f('0x1'));var logger=require(_0xac7f('0x2'))('api');var moment=require('moment');var BPromise=require(_0xac7f('0x3'));var rp=require(_0xac7f('0x4'));var fs=require('fs');var path=require(_0xac7f('0x5'));var rimraf=require(_0xac7f('0x6'));var config=require(_0xac7f('0x7'));var attributes=require(_0xac7f('0x8'));var integrations=require(_0xac7f('0x9'));module['exports']=function(_0xf84692,_0x30708f){return _0xf84692[_0xac7f('0xa')]('SalesforceAccount',attributes,{'tableName':_0xac7f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcd6=['exports','define','SalesforceAccount','int_salesforce_accounts','lodash','../../config/logger','api','request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x47a854,_0x5871dd){var _0x51a0af=function(_0x3c0d6d){while(--_0x3c0d6d){_0x47a854['push'](_0x47a854['shift']());}};_0x51a0af(++_0x5871dd);}(_0xfcd6,0x1d8));var _0x6fcd=function(_0xf13ca6,_0x5735ea){_0xf13ca6=_0xf13ca6-0x0;var _0x4a4387=_0xfcd6[_0xf13ca6];return _0x4a4387;};'use strict';var _=require(_0x6fcd('0x0'));var util=require('util');var logger=require(_0x6fcd('0x1'))(_0x6fcd('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6fcd('0x3'));var fs=require('fs');var path=require(_0x6fcd('0x4'));var rimraf=require(_0x6fcd('0x5'));var config=require('../../config/environment');var attributes=require(_0x6fcd('0x6'));var integrations=require(_0x6fcd('0x7'));module[_0x6fcd('0x8')]=function(_0x3be5f3,_0x53dd81){return _0x3be5f3[_0x6fcd('0x9')](_0x6fcd('0xa'),attributes,{'tableName':_0x6fcd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a450c7..36e7dc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6350=['SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','limit','include','map','model','attributes','ShowSalesforceAccount','where','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x6350,0xa2));var _0x0635=function(_0x408c68,_0x1b1513){_0x408c68=_0x408c68-0x0;var _0x410d6d=_0x6350[_0x408c68];return _0x410d6d;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x0635('0x0'));var rs=require(_0x0635('0x1'));var fs=require('fs');var Redis=require(_0x0635('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0635('0x3'));var logger=require(_0x0635('0x4'))(_0x0635('0x5'));var config=require(_0x0635('0x6'));var jayson=require(_0x0635('0x7'));var client=jayson[_0x0635('0x8')][_0x0635('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x43146b,_0x159afb,_0x463a62){return new BPromise(function(_0x3a360e,_0x2e309d){return client[_0x0635('0xa')](_0x43146b,_0x463a62)[_0x0635('0xb')](function(_0x426eac){logger[_0x0635('0xc')](_0x0635('0xd'),_0x159afb,_0x0635('0xe'));logger[_0x0635('0xf')](_0x0635('0x10'),_0x159afb,_0x0635('0xe'),JSON[_0x0635('0x11')](_0x426eac));if(_0x426eac['error']){if(_0x426eac[_0x0635('0x12')][_0x0635('0x13')]===0x1f4){logger['error'](_0x0635('0xd'),_0x159afb,_0x426eac['error'][_0x0635('0x14')]);return _0x2e309d(_0x426eac['error'][_0x0635('0x14')]);}logger[_0x0635('0x12')](_0x0635('0xd'),_0x159afb,_0x426eac[_0x0635('0x12')][_0x0635('0x14')]);return _0x3a360e(_0x426eac[_0x0635('0x12')][_0x0635('0x14')]);}else{logger['info'](_0x0635('0xd'),_0x159afb,'request\x20sent');_0x3a360e(_0x426eac[_0x0635('0x15')]['message']);}})[_0x0635('0x16')](function(_0xb84255){logger[_0x0635('0x12')](_0x0635('0xd'),_0x159afb,_0xb84255);_0x2e309d(_0xb84255);});});}exports[_0x0635('0x17')]=function(_0x5e3083){var _0x19d678=this;return new Promise(function(_0x151f8f,_0x2b32b8){return db[_0x0635('0x18')][_0x0635('0x19')]({'raw':_0x5e3083['options']?_0x5e3083[_0x0635('0x1a')][_0x0635('0x1b')]===undefined?!![]:![]:!![],'where':_0x5e3083[_0x0635('0x1a')]?_0x5e3083[_0x0635('0x1a')]['where']||null:null,'attributes':_0x5e3083[_0x0635('0x1a')]?_0x5e3083[_0x0635('0x1a')]['attributes']||null:null,'limit':_0x5e3083[_0x0635('0x1a')]?_0x5e3083[_0x0635('0x1a')][_0x0635('0x1c')]||null:null,'include':_0x5e3083[_0x0635('0x1a')]?_0x5e3083[_0x0635('0x1a')][_0x0635('0x1d')]?_[_0x0635('0x1e')](_0x5e3083[_0x0635('0x1a')][_0x0635('0x1d')],function(_0x2e0eb0){return{'model':db[_0x2e0eb0['model']],'as':_0x2e0eb0['as'],'attributes':_0x2e0eb0['attributes'],'include':_0x2e0eb0[_0x0635('0x1d')]?_[_0x0635('0x1e')](_0x2e0eb0['include'],function(_0xfa8b52){return{'model':db[_0xfa8b52[_0x0635('0x1f')]],'as':_0xfa8b52['as'],'attributes':_0xfa8b52[_0x0635('0x20')],'include':_0xfa8b52['include']?_[_0x0635('0x1e')](_0xfa8b52['include'],function(_0x38336d){return{'model':db[_0x38336d[_0x0635('0x1f')]],'as':_0x38336d['as'],'attributes':_0x38336d[_0x0635('0x20')]};}):[]};}):[]};}):[]:[]})[_0x0635('0xb')](function(_0x6222af){logger[_0x0635('0xc')](_0x0635('0x17'),_0x5e3083);logger[_0x0635('0xf')](_0x0635('0x17'),_0x5e3083,JSON[_0x0635('0x11')](_0x6222af));_0x151f8f(_0x6222af);})[_0x0635('0x16')](function(_0xbcb176){logger[_0x0635('0x12')]('GetSalesforceAccount',_0xbcb176[_0x0635('0x14')],_0x5e3083);_0x2b32b8(_0x19d678[_0x0635('0x12')](0x1f4,_0xbcb176[_0x0635('0x14')]));});});};exports[_0x0635('0x21')]=function(_0x36df7e){var _0x42d95b=this;return new Promise(function(_0x1c22fe,_0x39c96c){return db[_0x0635('0x18')]['find']({'raw':_0x36df7e[_0x0635('0x1a')]?_0x36df7e['options']['raw']===undefined?!![]:![]:!![],'where':_0x36df7e[_0x0635('0x1a')]?_0x36df7e[_0x0635('0x1a')][_0x0635('0x22')]||null:null,'attributes':_0x36df7e[_0x0635('0x1a')]?_0x36df7e[_0x0635('0x1a')]['attributes']||null:null,'include':_0x36df7e[_0x0635('0x1a')]?_0x36df7e[_0x0635('0x1a')][_0x0635('0x1d')]?_['map'](_0x36df7e[_0x0635('0x1a')][_0x0635('0x1d')],function(_0xb8ed09){return{'model':db[_0xb8ed09[_0x0635('0x1f')]],'as':_0xb8ed09['as'],'attributes':_0xb8ed09[_0x0635('0x20')],'include':_0xb8ed09['include']?_[_0x0635('0x1e')](_0xb8ed09['include'],function(_0x313e5a){return{'model':db[_0x313e5a[_0x0635('0x1f')]],'as':_0x313e5a['as'],'attributes':_0x313e5a[_0x0635('0x20')],'include':_0x313e5a[_0x0635('0x1d')]?_[_0x0635('0x1e')](_0x313e5a[_0x0635('0x1d')],function(_0x4ea6ef){return{'model':db[_0x4ea6ef[_0x0635('0x1f')]],'as':_0x4ea6ef['as'],'attributes':_0x4ea6ef[_0x0635('0x20')]};}):[]};}):[]};}):[]:[]})[_0x0635('0xb')](function(_0x5dc01f){logger[_0x0635('0xc')](_0x0635('0x21'),_0x36df7e);logger[_0x0635('0xf')](_0x0635('0x21'),_0x36df7e,JSON[_0x0635('0x11')](_0x5dc01f));_0x1c22fe(_0x5dc01f);})[_0x0635('0x16')](function(_0x3c94c3){logger[_0x0635('0x12')](_0x0635('0x21'),_0x3c94c3['message'],_0x36df7e);_0x39c96c(_0x42d95b['error'](0x1f4,_0x3c94c3[_0x0635('0x14')]));});});};
\ No newline at end of file
+var _0xe7ae=['bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','SalesforceAccount','findAll','options','where','attributes','limit','map','include','model','GetSalesforceAccount','ShowSalesforceAccount','raw','moment'];(function(_0x412e27,_0x20a978){var _0x53da42=function(_0x43cae5){while(--_0x43cae5){_0x412e27['push'](_0x412e27['shift']());}};_0x53da42(++_0x20a978);}(_0xe7ae,0x192));var _0xee7a=function(_0x56dbe5,_0x57fa97){_0x56dbe5=_0x56dbe5-0x0;var _0x47009d=_0xe7ae[_0x56dbe5];return _0x47009d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xee7a('0x0'));var BPromise=require(_0xee7a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee7a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xee7a('0x3'));var logger=require(_0xee7a('0x4'))(_0xee7a('0x5'));var config=require(_0xee7a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xee7a('0x7')][_0xee7a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1c8bf7,_0x201690,_0x31673b){return new BPromise(function(_0x306564,_0x41a2eb){return client[_0xee7a('0x9')](_0x1c8bf7,_0x31673b)[_0xee7a('0xa')](function(_0x57ba62){logger[_0xee7a('0xb')](_0xee7a('0xc'),_0x201690,_0xee7a('0xd'));logger['debug']('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x201690,_0xee7a('0xd'),JSON[_0xee7a('0xe')](_0x57ba62));if(_0x57ba62['error']){if(_0x57ba62[_0xee7a('0xf')][_0xee7a('0x10')]===0x1f4){logger[_0xee7a('0xf')](_0xee7a('0xc'),_0x201690,_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);return _0x41a2eb(_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);}logger[_0xee7a('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x201690,_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);return _0x306564(_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);}else{logger[_0xee7a('0xb')](_0xee7a('0xc'),_0x201690,_0xee7a('0xd'));_0x306564(_0x57ba62[_0xee7a('0x12')][_0xee7a('0x11')]);}})['catch'](function(_0x50b1ed){logger[_0xee7a('0xf')](_0xee7a('0xc'),_0x201690,_0x50b1ed);_0x41a2eb(_0x50b1ed);});});}exports['GetSalesforceAccount']=function(_0x3736b5){var _0x56d2f=this;return new Promise(function(_0x49b32e,_0x2f6f12){return db[_0xee7a('0x13')][_0xee7a('0x14')]({'raw':_0x3736b5[_0xee7a('0x15')]?_0x3736b5[_0xee7a('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3736b5[_0xee7a('0x15')]?_0x3736b5[_0xee7a('0x15')][_0xee7a('0x16')]||null:null,'attributes':_0x3736b5[_0xee7a('0x15')]?_0x3736b5[_0xee7a('0x15')][_0xee7a('0x17')]||null:null,'limit':_0x3736b5['options']?_0x3736b5[_0xee7a('0x15')][_0xee7a('0x18')]||null:null,'include':_0x3736b5[_0xee7a('0x15')]?_0x3736b5['options']['include']?_[_0xee7a('0x19')](_0x3736b5[_0xee7a('0x15')][_0xee7a('0x1a')],function(_0xa06401){return{'model':db[_0xa06401[_0xee7a('0x1b')]],'as':_0xa06401['as'],'attributes':_0xa06401[_0xee7a('0x17')],'include':_0xa06401[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0xa06401[_0xee7a('0x1a')],function(_0x3b53e0){return{'model':db[_0x3b53e0[_0xee7a('0x1b')]],'as':_0x3b53e0['as'],'attributes':_0x3b53e0['attributes'],'include':_0x3b53e0[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0x3b53e0[_0xee7a('0x1a')],function(_0x5765d6){return{'model':db[_0x5765d6[_0xee7a('0x1b')]],'as':_0x5765d6['as'],'attributes':_0x5765d6[_0xee7a('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8103ff){logger['info'](_0xee7a('0x1c'),_0x3736b5);logger['debug']('GetSalesforceAccount',_0x3736b5,JSON[_0xee7a('0xe')](_0x8103ff));_0x49b32e(_0x8103ff);})['catch'](function(_0x4dfc26){logger['error']('GetSalesforceAccount',_0x4dfc26[_0xee7a('0x11')],_0x3736b5);_0x2f6f12(_0x56d2f[_0xee7a('0xf')](0x1f4,_0x4dfc26[_0xee7a('0x11')]));});});};exports[_0xee7a('0x1d')]=function(_0xe6c79f){var _0x3474fa=this;return new Promise(function(_0x4e93ca,_0x476f2a){return db[_0xee7a('0x13')]['find']({'raw':_0xe6c79f[_0xee7a('0x15')]?_0xe6c79f['options'][_0xee7a('0x1e')]===undefined?!![]:![]:!![],'where':_0xe6c79f[_0xee7a('0x15')]?_0xe6c79f[_0xee7a('0x15')][_0xee7a('0x16')]||null:null,'attributes':_0xe6c79f[_0xee7a('0x15')]?_0xe6c79f[_0xee7a('0x15')][_0xee7a('0x17')]||null:null,'include':_0xe6c79f['options']?_0xe6c79f[_0xee7a('0x15')]['include']?_[_0xee7a('0x19')](_0xe6c79f[_0xee7a('0x15')][_0xee7a('0x1a')],function(_0x57e291){return{'model':db[_0x57e291[_0xee7a('0x1b')]],'as':_0x57e291['as'],'attributes':_0x57e291['attributes'],'include':_0x57e291[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0x57e291[_0xee7a('0x1a')],function(_0x52cb5e){return{'model':db[_0x52cb5e[_0xee7a('0x1b')]],'as':_0x52cb5e['as'],'attributes':_0x52cb5e['attributes'],'include':_0x52cb5e[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0x52cb5e['include'],function(_0x22c00e){return{'model':db[_0x22c00e[_0xee7a('0x1b')]],'as':_0x22c00e['as'],'attributes':_0x22c00e[_0xee7a('0x17')]};}):[]};}):[]};}):[]:[]})[_0xee7a('0xa')](function(_0x305d26){logger[_0xee7a('0xb')]('ShowSalesforceAccount',_0xe6c79f);logger['debug'](_0xee7a('0x1d'),_0xe6c79f,JSON[_0xee7a('0xe')](_0x305d26));_0x4e93ca(_0x305d26);})['catch'](function(_0x326fd9){logger[_0xee7a('0xf')](_0xee7a('0x1d'),_0x326fd9[_0xee7a('0x11')],_0xe6c79f);_0x476f2a(_0x3474fa[_0xee7a('0xf')](0x1f4,_0x326fd9[_0xee7a('0x11')]));});});};
\ No newline at end of file
index 2344a3b..a6af3d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x53b6ae,_0x3cb9f4){_0x53b6ae=_0x53b6ae-0x0;var _0x34f4b2=_0x0b0e[_0x53b6ae];return _0x34f4b2;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
+var _0x5f66=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x28855b,_0x596385){var _0x29988e=function(_0x4a597c){while(--_0x4a597c){_0x28855b['push'](_0x28855b['shift']());}};_0x29988e(++_0x596385);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x5f66[_0x3e5086];return _0xfeb102;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['getFields']);router['get'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0x7')]('/:id/descriptions',auth[_0x65f6('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0x65f6('0x8')](),controller['create']);router[_0x65f6('0xe')]('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xf')]);router[_0x65f6('0x10')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x11')]);module[_0x65f6('0x12')]=router;
\ No newline at end of file
index 763d65e..d3d7e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fd9=['contact','lead','account_contact_lead','account','nothing','sequelize','exports','STRING','ENUM','Task','contact_lead'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1fd9,0xcb));var _0x91fd=function(_0x25ba6e,_0x50593a){_0x25ba6e=_0x25ba6e-0x0;var _0x3fc840=_0x1fd9[_0x25ba6e];return _0x3fc840;};'use strict';var Sequelize=require(_0x91fd('0x0'));module[_0x91fd('0x1')]={'name':{'type':Sequelize[_0x91fd('0x2')]},'description':{'type':Sequelize[_0x91fd('0x2')]},'ticketType':{'type':Sequelize[_0x91fd('0x3')](_0x91fd('0x4'),'Case'),'defaultValue':_0x91fd('0x4')},'moduleSearch':{'type':Sequelize[_0x91fd('0x3')](_0x91fd('0x5'),_0x91fd('0x6'),_0x91fd('0x7'),_0x91fd('0x8'),_0x91fd('0x9')),'defaultValue':_0x91fd('0x5')},'moduleCreate':{'type':Sequelize[_0x91fd('0x3')](_0x91fd('0xa'),_0x91fd('0x6'),_0x91fd('0x7'),_0x91fd('0x9')),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0x91fd('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x91fd('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x91fd('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x91fd('0x2')]}};
\ No newline at end of file
+var _0xe67d=['nothing','contact','sequelize','exports','STRING','ENUM','Case','Task','contact_lead','lead','account'];(function(_0xd3a8c8,_0x177703){var _0x4d9295=function(_0x39bfda){while(--_0x39bfda){_0xd3a8c8['push'](_0xd3a8c8['shift']());}};_0x4d9295(++_0x177703);}(_0xe67d,0x1af));var _0xde67=function(_0xe8fa1f,_0x12bba1){_0xe8fa1f=_0xe8fa1f-0x0;var _0x4b3a65=_0xe67d[_0xe8fa1f];return _0x4b3a65;};'use strict';var Sequelize=require(_0xde67('0x0'));module[_0xde67('0x1')]={'name':{'type':Sequelize[_0xde67('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xde67('0x3')]('Task',_0xde67('0x4')),'defaultValue':_0xde67('0x5')},'moduleSearch':{'type':Sequelize[_0xde67('0x3')](_0xde67('0x6'),'contact',_0xde67('0x7'),'account_contact_lead',_0xde67('0x8')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xde67('0x3')](_0xde67('0x9'),_0xde67('0xa'),'lead',_0xde67('0x8')),'defaultValue':_0xde67('0x7')},'leadId':{'type':Sequelize[_0xde67('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0xde67('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xde67('0x2')]}};
\ No newline at end of file
index 5d81490..9c771b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9b4=['zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','apply','update','then','destroy','error','stack','name','index','map','SalesforceConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','count','include','rows','catch','show','params','find','create','body','findOne','order','getFields','length','getSubjects','getDescriptions','SalesforceField','eml-format','rimraf'];(function(_0x715b2f,_0x15887e){var _0x13c691=function(_0x4aa359){while(--_0x4aa359){_0x715b2f['push'](_0x715b2f['shift']());}};_0x13c691(++_0x15887e);}(_0xc9b4,0xa2));var _0x4c9b=function(_0x26bf51,_0x5e261a){_0x26bf51=_0x26bf51-0x0;var _0x503415=_0xc9b4[_0x26bf51];return _0x503415;};'use strict';var emlformat=require(_0x4c9b('0x0'));var rimraf=require(_0x4c9b('0x1'));var zipdir=require(_0x4c9b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4c9b('0x3'));var moment=require(_0x4c9b('0x4'));var BPromise=require(_0x4c9b('0x5'));var Mustache=require('mustache');var util=require(_0x4c9b('0x6'));var path=require(_0x4c9b('0x7'));var sox=require(_0x4c9b('0x8'));var csv=require(_0x4c9b('0x9'));var ejs=require(_0x4c9b('0xa'));var fs=require('fs');var fs_extra=require(_0x4c9b('0xb'));var _=require(_0x4c9b('0xc'));var squel=require(_0x4c9b('0xd'));var crypto=require(_0x4c9b('0xe'));var jsforce=require(_0x4c9b('0xf'));var deskjs=require(_0x4c9b('0x10'));var toCsv=require(_0x4c9b('0x9'));var querystring=require(_0x4c9b('0x11'));var Papa=require(_0x4c9b('0x12'));var Redis=require(_0x4c9b('0x13'));var authService=require(_0x4c9b('0x14'));var qs=require(_0x4c9b('0x15'));var as=require(_0x4c9b('0x16'));var hardwareService=require(_0x4c9b('0x17'));var logger=require(_0x4c9b('0x18'))(_0x4c9b('0x19'));var utils=require('../../config/utils');var config=require(_0x4c9b('0x1a'));var licenseUtil=require(_0x4c9b('0x1b'));var db=require(_0x4c9b('0x1c'))['db'];function respondWithStatusCode(_0x40cee2,_0x192fd3){_0x192fd3=_0x192fd3||0xcc;return function(_0x3047ef){if(_0x3047ef){return _0x40cee2[_0x4c9b('0x1d')](_0x192fd3);}return _0x40cee2[_0x4c9b('0x1e')](_0x192fd3)[_0x4c9b('0x1f')]();};}function respondWithResult(_0x4f19b5,_0x10392a){_0x10392a=_0x10392a||0xc8;return function(_0xa2d236){if(_0xa2d236){return _0x4f19b5[_0x4c9b('0x1e')](_0x10392a)[_0x4c9b('0x20')](_0xa2d236);}};}function respondWithFilteredResult(_0x5ad81d,_0x4439c4){return function(_0x2c215b){if(_0x2c215b){var _0x1bd38b=typeof _0x4439c4['offset']===_0x4c9b('0x21')&&typeof _0x4439c4[_0x4c9b('0x22')]===_0x4c9b('0x21');var _0x1a3774=_0x2c215b['count'];var _0x2a50fe=_0x1bd38b?0x0:_0x4439c4[_0x4c9b('0x23')];var _0xa438ed=_0x1bd38b?_0x2c215b['count']:_0x4439c4[_0x4c9b('0x23')]+_0x4439c4[_0x4c9b('0x22')];var _0x2aea6b;if(_0xa438ed>=_0x1a3774){_0xa438ed=_0x1a3774;_0x2aea6b=0xc8;}else{_0x2aea6b=0xce;}_0x5ad81d[_0x4c9b('0x1e')](_0x2aea6b);return _0x5ad81d[_0x4c9b('0x24')]('Content-Range',_0x2a50fe+'-'+_0xa438ed+'/'+_0x1a3774)[_0x4c9b('0x20')](_0x2c215b);}return null;};}function patchUpdates(_0x357210){return function(_0x237db6){try{jsonpatch[_0x4c9b('0x25')](_0x237db6,_0x357210,!![]);}catch(_0x4a00b0){return BPromise['reject'](_0x4a00b0);}return _0x237db6['save']();};}function saveUpdates(_0x348ab6,_0x352c9b){return function(_0x4edaf2){if(_0x4edaf2){return _0x4edaf2[_0x4c9b('0x26')](_0x348ab6)[_0x4c9b('0x27')](function(_0x1e2fc9){return _0x1e2fc9;});}return null;};}function removeEntity(_0x54fd33,_0x428167){return function(_0x46eee8){if(_0x46eee8){return _0x46eee8[_0x4c9b('0x28')]()['then'](function(){_0x54fd33[_0x4c9b('0x1e')](0xcc)[_0x4c9b('0x1f')]();});}};}function handleEntityNotFound(_0x525e81,_0x51e7b1){return function(_0x100f75){if(!_0x100f75){_0x525e81['sendStatus'](0x194);}return _0x100f75;};}function handleError(_0x555385,_0x26ff4c){_0x26ff4c=_0x26ff4c||0x1f4;return function(_0x47930d){logger[_0x4c9b('0x29')](_0x47930d[_0x4c9b('0x2a')]);if(_0x47930d[_0x4c9b('0x2b')]){delete _0x47930d[_0x4c9b('0x2b')];}_0x555385['status'](_0x26ff4c)['send'](_0x47930d);};}exports[_0x4c9b('0x2c')]=function(_0x4ebac3,_0x29189d){var _0x2089d3={},_0x1fc9df={},_0x469da3={'count':0x0,'rows':[]};var _0x3dc6bb=_[_0x4c9b('0x2d')](db[_0x4c9b('0x2e')][_0x4c9b('0x2f')],function(_0x4e1f5a){return{'name':_0x4e1f5a['fieldName'],'type':_0x4e1f5a[_0x4c9b('0x30')][_0x4c9b('0x31')]};});_0x1fc9df[_0x4c9b('0x32')]=_[_0x4c9b('0x2d')](_0x3dc6bb,_0x4c9b('0x2b'));_0x1fc9df[_0x4c9b('0x33')]=_[_0x4c9b('0x34')](_0x4ebac3[_0x4c9b('0x33')]);_0x1fc9df[_0x4c9b('0x35')]=_[_0x4c9b('0x36')](_0x1fc9df[_0x4c9b('0x32')],_0x1fc9df[_0x4c9b('0x33')]);_0x2089d3[_0x4c9b('0x37')]=_[_0x4c9b('0x36')](_0x1fc9df['model'],qs[_0x4c9b('0x38')](_0x4ebac3[_0x4c9b('0x33')][_0x4c9b('0x38')]));_0x2089d3[_0x4c9b('0x37')]=_0x2089d3[_0x4c9b('0x37')]['length']?_0x2089d3[_0x4c9b('0x37')]:_0x1fc9df['model'];if(!_0x4ebac3[_0x4c9b('0x33')][_0x4c9b('0x39')](_0x4c9b('0x3a'))){_0x2089d3['limit']=qs[_0x4c9b('0x22')](_0x4ebac3[_0x4c9b('0x33')]['limit']);_0x2089d3[_0x4c9b('0x23')]=qs['offset'](_0x4ebac3[_0x4c9b('0x33')][_0x4c9b('0x23')]);}_0x2089d3['order']=qs[_0x4c9b('0x3b')](_0x4ebac3['query']['sort']);_0x2089d3[_0x4c9b('0x3c')]=qs[_0x4c9b('0x35')](_[_0x4c9b('0x3d')](_0x4ebac3['query'],_0x1fc9df[_0x4c9b('0x35')]),_0x3dc6bb);if(_0x4ebac3[_0x4c9b('0x33')][_0x4c9b('0x3e')]){_0x2089d3[_0x4c9b('0x3c')]=_[_0x4c9b('0x3f')](_0x2089d3[_0x4c9b('0x3c')],{'$or':_['map'](_0x3dc6bb,function(_0x41fced){if(_0x41fced[_0x4c9b('0x30')]!==_0x4c9b('0x40')){var _0x2da683={};_0x2da683[_0x41fced['name']]={'$like':'%'+_0x4ebac3['query'][_0x4c9b('0x3e')]+'%'};return _0x2da683;}})});}_0x2089d3=_[_0x4c9b('0x3f')]({},_0x2089d3,_0x4ebac3[_0x4c9b('0x41')]);var _0x2231e4={'where':_0x2089d3['where']};return db['SalesforceConfiguration'][_0x4c9b('0x42')](_0x2231e4)[_0x4c9b('0x27')](function(_0x26e0d5){_0x469da3['count']=_0x26e0d5;if(_0x4ebac3['query']['includeAll']){_0x2089d3[_0x4c9b('0x43')]=[{'all':!![]}];}return db[_0x4c9b('0x2e')]['findAll'](_0x2089d3);})[_0x4c9b('0x27')](function(_0x487378){_0x469da3[_0x4c9b('0x44')]=_0x487378;return _0x469da3;})[_0x4c9b('0x27')](respondWithFilteredResult(_0x29189d,_0x2089d3))[_0x4c9b('0x45')](handleError(_0x29189d,null));};exports[_0x4c9b('0x46')]=function(_0x20214d,_0xde5ed6){var _0x603c0={'raw':![],'where':{'id':_0x20214d[_0x4c9b('0x47')]['id']}},_0x4eaa5d={};_0x4eaa5d['model']=_[_0x4c9b('0x34')](db[_0x4c9b('0x2e')][_0x4c9b('0x2f')]);_0x4eaa5d[_0x4c9b('0x33')]=_[_0x4c9b('0x34')](_0x20214d['query']);_0x4eaa5d['filters']=_[_0x4c9b('0x36')](_0x4eaa5d['model'],_0x4eaa5d[_0x4c9b('0x33')]);_0x603c0[_0x4c9b('0x37')]=_[_0x4c9b('0x36')](_0x4eaa5d[_0x4c9b('0x32')],qs['fields'](_0x20214d[_0x4c9b('0x33')]['fields']));_0x603c0[_0x4c9b('0x37')]=_0x603c0[_0x4c9b('0x37')]['length']?_0x603c0[_0x4c9b('0x37')]:_0x4eaa5d[_0x4c9b('0x32')];if(_0x20214d[_0x4c9b('0x33')]['includeAll']){_0x603c0['include']=[{'all':!![]}];}_0x603c0=_[_0x4c9b('0x3f')]({},_0x603c0,_0x20214d[_0x4c9b('0x41')]);return db[_0x4c9b('0x2e')][_0x4c9b('0x48')](_0x603c0)[_0x4c9b('0x27')](handleEntityNotFound(_0xde5ed6,null))['then'](respondWithResult(_0xde5ed6,null))[_0x4c9b('0x45')](handleError(_0xde5ed6,null));};exports[_0x4c9b('0x49')]=function(_0x4b34c6,_0x120db3){return db[_0x4c9b('0x2e')][_0x4c9b('0x49')](_0x4b34c6[_0x4c9b('0x4a')],{})[_0x4c9b('0x27')](respondWithResult(_0x120db3,0xc9))['catch'](handleError(_0x120db3,null));};exports[_0x4c9b('0x26')]=function(_0x5d900c,_0x4b876c){if(_0x5d900c[_0x4c9b('0x4a')]['id']){delete _0x5d900c[_0x4c9b('0x4a')]['id'];}return db[_0x4c9b('0x2e')][_0x4c9b('0x48')]({'where':{'id':_0x5d900c[_0x4c9b('0x47')]['id']}})[_0x4c9b('0x27')](handleEntityNotFound(_0x4b876c,null))[_0x4c9b('0x27')](saveUpdates(_0x5d900c[_0x4c9b('0x4a')],null))[_0x4c9b('0x27')](respondWithResult(_0x4b876c,null))[_0x4c9b('0x45')](handleError(_0x4b876c,null));};exports[_0x4c9b('0x28')]=function(_0x37dcea,_0x5e1d15){return db['SalesforceConfiguration'][_0x4c9b('0x48')]({'where':{'id':_0x37dcea[_0x4c9b('0x47')]['id']}})['then'](handleEntityNotFound(_0x5e1d15,null))[_0x4c9b('0x27')](removeEntity(_0x5e1d15,null))[_0x4c9b('0x45')](handleError(_0x5e1d15,null));};exports['getFields']=function(_0x77b5a1,_0x19e453,_0x58bbac){var _0x441d3a={};var _0x106ad0={};var _0x3d4de5;var _0x55b8ae;return db[_0x4c9b('0x2e')][_0x4c9b('0x4b')]({'where':{'id':_0x77b5a1[_0x4c9b('0x47')]['id']}})[_0x4c9b('0x27')](handleEntityNotFound(_0x19e453,null))[_0x4c9b('0x27')](function(_0x1c7bb5){if(_0x1c7bb5){_0x3d4de5=_0x1c7bb5;_0x106ad0[_0x4c9b('0x32')]=_[_0x4c9b('0x34')](db['SalesforceField']['rawAttributes']);_0x106ad0[_0x4c9b('0x33')]=_[_0x4c9b('0x34')](_0x77b5a1[_0x4c9b('0x33')]);_0x106ad0[_0x4c9b('0x35')]=_[_0x4c9b('0x36')](_0x106ad0[_0x4c9b('0x32')],_0x106ad0[_0x4c9b('0x33')]);_0x441d3a[_0x4c9b('0x37')]=_[_0x4c9b('0x36')](_0x106ad0['model'],qs[_0x4c9b('0x38')](_0x77b5a1[_0x4c9b('0x33')][_0x4c9b('0x38')]));_0x441d3a[_0x4c9b('0x37')]=_0x441d3a[_0x4c9b('0x37')]['length']?_0x441d3a[_0x4c9b('0x37')]:_0x106ad0[_0x4c9b('0x32')];_0x441d3a[_0x4c9b('0x4c')]=qs[_0x4c9b('0x3b')](_0x77b5a1[_0x4c9b('0x33')][_0x4c9b('0x3b')]);_0x441d3a[_0x4c9b('0x3c')]=qs[_0x4c9b('0x35')](_[_0x4c9b('0x3d')](_0x77b5a1[_0x4c9b('0x33')],_0x106ad0[_0x4c9b('0x35')]));if(_0x77b5a1[_0x4c9b('0x33')][_0x4c9b('0x3e')]){_0x441d3a[_0x4c9b('0x3c')]=_[_0x4c9b('0x3f')](_0x441d3a[_0x4c9b('0x3c')],{'$or':_[_0x4c9b('0x2d')](_0x441d3a[_0x4c9b('0x37')],function(_0x219ff1){var _0x56091c={};_0x56091c[_0x219ff1]={'$like':'%'+_0x77b5a1[_0x4c9b('0x33')][_0x4c9b('0x3e')]+'%'};return _0x56091c;})});}_0x441d3a=_[_0x4c9b('0x3f')]({},_0x441d3a,_0x77b5a1[_0x4c9b('0x41')]);return _0x3d4de5[_0x4c9b('0x4d')](_0x441d3a);}})[_0x4c9b('0x27')](function(_0x7079ad){if(_0x7079ad){_0x55b8ae=_0x7079ad[_0x4c9b('0x4e')];if(!_0x77b5a1[_0x4c9b('0x33')][_0x4c9b('0x39')]('nolimit')){_0x441d3a[_0x4c9b('0x22')]=qs[_0x4c9b('0x22')](_0x77b5a1['query'][_0x4c9b('0x22')]);_0x441d3a[_0x4c9b('0x23')]=qs[_0x4c9b('0x23')](_0x77b5a1[_0x4c9b('0x33')]['offset']);}return _0x3d4de5[_0x4c9b('0x4d')](_0x441d3a);}})['then'](function(_0x323f4b){if(_0x323f4b){return _0x323f4b?{'count':_0x55b8ae,'rows':_0x323f4b}:null;}})[_0x4c9b('0x27')](respondWithResult(_0x19e453,null))[_0x4c9b('0x45')](handleError(_0x19e453,null));};exports['getSubjects']=function(_0x2a0b24,_0x4b6140,_0x47c717){var _0xbe47d3={};var _0x1ae0a6={};var _0x3f3b9f;var _0x34c53d;return db[_0x4c9b('0x2e')][_0x4c9b('0x4b')]({'where':{'id':_0x2a0b24['params']['id']}})['then'](handleEntityNotFound(_0x4b6140,null))[_0x4c9b('0x27')](function(_0x56a179){if(_0x56a179){_0x3f3b9f=_0x56a179;_0x1ae0a6[_0x4c9b('0x32')]=_['keys'](db['SalesforceField'][_0x4c9b('0x2f')]);_0x1ae0a6[_0x4c9b('0x33')]=_[_0x4c9b('0x34')](_0x2a0b24[_0x4c9b('0x33')]);_0x1ae0a6[_0x4c9b('0x35')]=_[_0x4c9b('0x36')](_0x1ae0a6[_0x4c9b('0x32')],_0x1ae0a6['query']);_0xbe47d3[_0x4c9b('0x37')]=_[_0x4c9b('0x36')](_0x1ae0a6[_0x4c9b('0x32')],qs[_0x4c9b('0x38')](_0x2a0b24['query'][_0x4c9b('0x38')]));_0xbe47d3['attributes']=_0xbe47d3['attributes'][_0x4c9b('0x4e')]?_0xbe47d3[_0x4c9b('0x37')]:_0x1ae0a6[_0x4c9b('0x32')];_0xbe47d3['order']=qs[_0x4c9b('0x3b')](_0x2a0b24[_0x4c9b('0x33')]['sort']);_0xbe47d3[_0x4c9b('0x3c')]=qs[_0x4c9b('0x35')](_[_0x4c9b('0x3d')](_0x2a0b24[_0x4c9b('0x33')],_0x1ae0a6[_0x4c9b('0x35')]));if(_0x2a0b24['query'][_0x4c9b('0x3e')]){_0xbe47d3['where']=_[_0x4c9b('0x3f')](_0xbe47d3[_0x4c9b('0x3c')],{'$or':_[_0x4c9b('0x2d')](_0xbe47d3['attributes'],function(_0x558757){var _0x19dd64={};_0x19dd64[_0x558757]={'$like':'%'+_0x2a0b24[_0x4c9b('0x33')][_0x4c9b('0x3e')]+'%'};return _0x19dd64;})});}_0xbe47d3=_[_0x4c9b('0x3f')]({},_0xbe47d3,_0x2a0b24[_0x4c9b('0x41')]);return _0x3f3b9f[_0x4c9b('0x4f')](_0xbe47d3);}})['then'](function(_0x31f75d){if(_0x31f75d){_0x34c53d=_0x31f75d[_0x4c9b('0x4e')];if(!_0x2a0b24[_0x4c9b('0x33')][_0x4c9b('0x39')](_0x4c9b('0x3a'))){_0xbe47d3['limit']=qs['limit'](_0x2a0b24['query']['limit']);_0xbe47d3[_0x4c9b('0x23')]=qs[_0x4c9b('0x23')](_0x2a0b24[_0x4c9b('0x33')]['offset']);}return _0x3f3b9f['getSubjects'](_0xbe47d3);}})[_0x4c9b('0x27')](function(_0x23e245){if(_0x23e245){return _0x23e245?{'count':_0x34c53d,'rows':_0x23e245}:null;}})[_0x4c9b('0x27')](respondWithResult(_0x4b6140,null))[_0x4c9b('0x45')](handleError(_0x4b6140,null));};exports[_0x4c9b('0x50')]=function(_0x13dbd1,_0xecdf04,_0x4b0ce5){var _0x12b3d1={};var _0x5498c8={};var _0x4c689f;var _0x51fba7;return db['SalesforceConfiguration'][_0x4c9b('0x4b')]({'where':{'id':_0x13dbd1[_0x4c9b('0x47')]['id']}})['then'](handleEntityNotFound(_0xecdf04,null))[_0x4c9b('0x27')](function(_0x1bc3f8){if(_0x1bc3f8){_0x4c689f=_0x1bc3f8;_0x5498c8[_0x4c9b('0x32')]=_[_0x4c9b('0x34')](db[_0x4c9b('0x51')]['rawAttributes']);_0x5498c8[_0x4c9b('0x33')]=_[_0x4c9b('0x34')](_0x13dbd1[_0x4c9b('0x33')]);_0x5498c8[_0x4c9b('0x35')]=_[_0x4c9b('0x36')](_0x5498c8[_0x4c9b('0x32')],_0x5498c8[_0x4c9b('0x33')]);_0x12b3d1[_0x4c9b('0x37')]=_[_0x4c9b('0x36')](_0x5498c8[_0x4c9b('0x32')],qs[_0x4c9b('0x38')](_0x13dbd1[_0x4c9b('0x33')][_0x4c9b('0x38')]));_0x12b3d1['attributes']=_0x12b3d1[_0x4c9b('0x37')]['length']?_0x12b3d1['attributes']:_0x5498c8['model'];_0x12b3d1['order']=qs[_0x4c9b('0x3b')](_0x13dbd1[_0x4c9b('0x33')][_0x4c9b('0x3b')]);_0x12b3d1[_0x4c9b('0x3c')]=qs[_0x4c9b('0x35')](_[_0x4c9b('0x3d')](_0x13dbd1['query'],_0x5498c8['filters']));if(_0x13dbd1['query'][_0x4c9b('0x3e')]){_0x12b3d1['where']=_['merge'](_0x12b3d1[_0x4c9b('0x3c')],{'$or':_['map'](_0x12b3d1[_0x4c9b('0x37')],function(_0x5f5850){var _0x3fe97e={};_0x3fe97e[_0x5f5850]={'$like':'%'+_0x13dbd1['query'][_0x4c9b('0x3e')]+'%'};return _0x3fe97e;})});}_0x12b3d1=_[_0x4c9b('0x3f')]({},_0x12b3d1,_0x13dbd1[_0x4c9b('0x41')]);return _0x4c689f[_0x4c9b('0x50')](_0x12b3d1);}})[_0x4c9b('0x27')](function(_0x4d3d54){if(_0x4d3d54){_0x51fba7=_0x4d3d54[_0x4c9b('0x4e')];if(!_0x13dbd1[_0x4c9b('0x33')]['hasOwnProperty'](_0x4c9b('0x3a'))){_0x12b3d1[_0x4c9b('0x22')]=qs[_0x4c9b('0x22')](_0x13dbd1['query']['limit']);_0x12b3d1[_0x4c9b('0x23')]=qs[_0x4c9b('0x23')](_0x13dbd1[_0x4c9b('0x33')][_0x4c9b('0x23')]);}return _0x4c689f[_0x4c9b('0x50')](_0x12b3d1);}})[_0x4c9b('0x27')](function(_0x1b2fc0){if(_0x1b2fc0){return _0x1b2fc0?{'count':_0x51fba7,'rows':_0x1b2fc0}:null;}})['then'](respondWithResult(_0xecdf04,null))['catch'](handleError(_0xecdf04,null));};
\ No newline at end of file
+var _0x873a=['../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','status','end','json','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filters','filter','merge','options','includeAll','include','findAll','catch','show','params','length','find','create','body','getFields','findOne','SalesforceField','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x2fbe2c,_0x295c2c){var _0xa60617=function(_0x21e2ff){while(--_0x21e2ff){_0x2fbe2c['push'](_0x2fbe2c['shift']());}};_0xa60617(++_0x295c2c);}(_0x873a,0x1c2));var _0xa873=function(_0x11ba84,_0x36e3de){_0x11ba84=_0x11ba84-0x0;var _0x438c95=_0x873a[_0x11ba84];return _0x438c95;};'use strict';var emlformat=require(_0xa873('0x0'));var rimraf=require(_0xa873('0x1'));var zipdir=require(_0xa873('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa873('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa873('0x4'));var util=require(_0xa873('0x5'));var path=require('path');var sox=require(_0xa873('0x6'));var csv=require(_0xa873('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa873('0x8'));var _=require('lodash');var squel=require(_0xa873('0x9'));var crypto=require(_0xa873('0xa'));var jsforce=require(_0xa873('0xb'));var deskjs=require(_0xa873('0xc'));var toCsv=require(_0xa873('0x7'));var querystring=require(_0xa873('0xd'));var Papa=require(_0xa873('0xe'));var Redis=require(_0xa873('0xf'));var authService=require(_0xa873('0x10'));var qs=require(_0xa873('0x11'));var as=require(_0xa873('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa873('0x13'))('api');var utils=require(_0xa873('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa873('0x15'))['db'];function respondWithStatusCode(_0x5f0355,_0x3db305){_0x3db305=_0x3db305||0xcc;return function(_0x37479e){if(_0x37479e){return _0x5f0355['sendStatus'](_0x3db305);}return _0x5f0355[_0xa873('0x16')](_0x3db305)[_0xa873('0x17')]();};}function respondWithResult(_0xe0e26a,_0x4994cd){_0x4994cd=_0x4994cd||0xc8;return function(_0x3ed9e3){if(_0x3ed9e3){return _0xe0e26a[_0xa873('0x16')](_0x4994cd)[_0xa873('0x18')](_0x3ed9e3);}};}function respondWithFilteredResult(_0x4f9c74,_0x34a4bf){return function(_0xb38512){if(_0xb38512){var _0x321dab=typeof _0x34a4bf['offset']===_0xa873('0x19')&&typeof _0x34a4bf['limit']===_0xa873('0x19');var _0x5189a6=_0xb38512[_0xa873('0x1a')];var _0x1b6937=_0x321dab?0x0:_0x34a4bf['offset'];var _0x301f13=_0x321dab?_0xb38512[_0xa873('0x1a')]:_0x34a4bf[_0xa873('0x1b')]+_0x34a4bf['limit'];var _0x89ea59;if(_0x301f13>=_0x5189a6){_0x301f13=_0x5189a6;_0x89ea59=0xc8;}else{_0x89ea59=0xce;}_0x4f9c74[_0xa873('0x16')](_0x89ea59);return _0x4f9c74[_0xa873('0x1c')](_0xa873('0x1d'),_0x1b6937+'-'+_0x301f13+'/'+_0x5189a6)[_0xa873('0x18')](_0xb38512);}return null;};}function patchUpdates(_0x2e2d5a){return function(_0x39724b){try{jsonpatch['apply'](_0x39724b,_0x2e2d5a,!![]);}catch(_0x38a3c3){return BPromise[_0xa873('0x1e')](_0x38a3c3);}return _0x39724b[_0xa873('0x1f')]();};}function saveUpdates(_0x305f2e,_0x3c4a86){return function(_0x48f7f5){if(_0x48f7f5){return _0x48f7f5[_0xa873('0x20')](_0x305f2e)[_0xa873('0x21')](function(_0x47f1c9){return _0x47f1c9;});}return null;};}function removeEntity(_0x44983e,_0x587167){return function(_0x9d5a15){if(_0x9d5a15){return _0x9d5a15[_0xa873('0x22')]()[_0xa873('0x21')](function(){_0x44983e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xd2be51,_0x4cbcbb){return function(_0x4326f6){if(!_0x4326f6){_0xd2be51['sendStatus'](0x194);}return _0x4326f6;};}function handleError(_0x10bc15,_0x3bccb6){_0x3bccb6=_0x3bccb6||0x1f4;return function(_0x57915d){logger[_0xa873('0x23')](_0x57915d[_0xa873('0x24')]);if(_0x57915d[_0xa873('0x25')]){delete _0x57915d[_0xa873('0x25')];}_0x10bc15[_0xa873('0x16')](_0x3bccb6)[_0xa873('0x26')](_0x57915d);};}exports[_0xa873('0x27')]=function(_0xae680,_0x3f1695){var _0x33dc2e={},_0x24a593={},_0xcdae11={'count':0x0,'rows':[]};var _0x465eaa=_[_0xa873('0x28')](db[_0xa873('0x29')][_0xa873('0x2a')],function(_0x165d16){return{'name':_0x165d16[_0xa873('0x2b')],'type':_0x165d16[_0xa873('0x2c')][_0xa873('0x2d')]};});_0x24a593[_0xa873('0x2e')]=_[_0xa873('0x28')](_0x465eaa,_0xa873('0x25'));_0x24a593[_0xa873('0x2f')]=_[_0xa873('0x30')](_0xae680[_0xa873('0x2f')]);_0x24a593['filters']=_[_0xa873('0x31')](_0x24a593[_0xa873('0x2e')],_0x24a593[_0xa873('0x2f')]);_0x33dc2e[_0xa873('0x32')]=_[_0xa873('0x31')](_0x24a593[_0xa873('0x2e')],qs[_0xa873('0x33')](_0xae680['query'][_0xa873('0x33')]));_0x33dc2e[_0xa873('0x32')]=_0x33dc2e[_0xa873('0x32')]['length']?_0x33dc2e[_0xa873('0x32')]:_0x24a593[_0xa873('0x2e')];if(!_0xae680[_0xa873('0x2f')][_0xa873('0x34')](_0xa873('0x35'))){_0x33dc2e[_0xa873('0x36')]=qs['limit'](_0xae680['query']['limit']);_0x33dc2e[_0xa873('0x1b')]=qs[_0xa873('0x1b')](_0xae680['query'][_0xa873('0x1b')]);}_0x33dc2e[_0xa873('0x37')]=qs[_0xa873('0x38')](_0xae680[_0xa873('0x2f')][_0xa873('0x38')]);_0x33dc2e[_0xa873('0x39')]=qs[_0xa873('0x3a')](_['pick'](_0xae680[_0xa873('0x2f')],_0x24a593['filters']),_0x465eaa);if(_0xae680[_0xa873('0x2f')][_0xa873('0x3b')]){_0x33dc2e[_0xa873('0x39')]=_[_0xa873('0x3c')](_0x33dc2e['where'],{'$or':_[_0xa873('0x28')](_0x465eaa,function(_0x2915cc){if(_0x2915cc[_0xa873('0x2c')]!=='VIRTUAL'){var _0x569591={};_0x569591[_0x2915cc[_0xa873('0x25')]]={'$like':'%'+_0xae680[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0x569591;}})});}_0x33dc2e=_['merge']({},_0x33dc2e,_0xae680[_0xa873('0x3d')]);var _0x280f11={'where':_0x33dc2e[_0xa873('0x39')]};return db[_0xa873('0x29')]['count'](_0x280f11)[_0xa873('0x21')](function(_0x2493e3){_0xcdae11[_0xa873('0x1a')]=_0x2493e3;if(_0xae680[_0xa873('0x2f')][_0xa873('0x3e')]){_0x33dc2e[_0xa873('0x3f')]=[{'all':!![]}];}return db[_0xa873('0x29')][_0xa873('0x40')](_0x33dc2e);})[_0xa873('0x21')](function(_0x577575){_0xcdae11['rows']=_0x577575;return _0xcdae11;})[_0xa873('0x21')](respondWithFilteredResult(_0x3f1695,_0x33dc2e))[_0xa873('0x41')](handleError(_0x3f1695,null));};exports[_0xa873('0x42')]=function(_0x242b01,_0x29a9b8){var _0x50d70c={'raw':![],'where':{'id':_0x242b01[_0xa873('0x43')]['id']}},_0x3d93ce={};_0x3d93ce[_0xa873('0x2e')]=_[_0xa873('0x30')](db['SalesforceConfiguration'][_0xa873('0x2a')]);_0x3d93ce[_0xa873('0x2f')]=_[_0xa873('0x30')](_0x242b01['query']);_0x3d93ce[_0xa873('0x3a')]=_['intersection'](_0x3d93ce['model'],_0x3d93ce[_0xa873('0x2f')]);_0x50d70c[_0xa873('0x32')]=_[_0xa873('0x31')](_0x3d93ce[_0xa873('0x2e')],qs[_0xa873('0x33')](_0x242b01[_0xa873('0x2f')]['fields']));_0x50d70c[_0xa873('0x32')]=_0x50d70c['attributes'][_0xa873('0x44')]?_0x50d70c[_0xa873('0x32')]:_0x3d93ce[_0xa873('0x2e')];if(_0x242b01[_0xa873('0x2f')][_0xa873('0x3e')]){_0x50d70c[_0xa873('0x3f')]=[{'all':!![]}];}_0x50d70c=_[_0xa873('0x3c')]({},_0x50d70c,_0x242b01[_0xa873('0x3d')]);return db[_0xa873('0x29')][_0xa873('0x45')](_0x50d70c)['then'](handleEntityNotFound(_0x29a9b8,null))[_0xa873('0x21')](respondWithResult(_0x29a9b8,null))[_0xa873('0x41')](handleError(_0x29a9b8,null));};exports[_0xa873('0x46')]=function(_0x839d62,_0x572381){return db[_0xa873('0x29')]['create'](_0x839d62['body'],{})[_0xa873('0x21')](respondWithResult(_0x572381,0xc9))[_0xa873('0x41')](handleError(_0x572381,null));};exports[_0xa873('0x20')]=function(_0x78e53b,_0x57e4d2){if(_0x78e53b[_0xa873('0x47')]['id']){delete _0x78e53b[_0xa873('0x47')]['id'];}return db[_0xa873('0x29')][_0xa873('0x45')]({'where':{'id':_0x78e53b['params']['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x57e4d2,null))[_0xa873('0x21')](saveUpdates(_0x78e53b[_0xa873('0x47')],null))[_0xa873('0x21')](respondWithResult(_0x57e4d2,null))[_0xa873('0x41')](handleError(_0x57e4d2,null));};exports['destroy']=function(_0xf12de5,_0x4fc8ef){return db['SalesforceConfiguration'][_0xa873('0x45')]({'where':{'id':_0xf12de5[_0xa873('0x43')]['id']}})['then'](handleEntityNotFound(_0x4fc8ef,null))[_0xa873('0x21')](removeEntity(_0x4fc8ef,null))['catch'](handleError(_0x4fc8ef,null));};exports[_0xa873('0x48')]=function(_0x1aa002,_0x2539e2,_0x164958){var _0x18884c={};var _0x223ff3={};var _0x2a35ed;var _0x3b9fbe;return db[_0xa873('0x29')][_0xa873('0x49')]({'where':{'id':_0x1aa002[_0xa873('0x43')]['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x2539e2,null))[_0xa873('0x21')](function(_0x5938c2){if(_0x5938c2){_0x2a35ed=_0x5938c2;_0x223ff3[_0xa873('0x2e')]=_[_0xa873('0x30')](db[_0xa873('0x4a')][_0xa873('0x2a')]);_0x223ff3[_0xa873('0x2f')]=_[_0xa873('0x30')](_0x1aa002['query']);_0x223ff3[_0xa873('0x3a')]=_[_0xa873('0x31')](_0x223ff3['model'],_0x223ff3['query']);_0x18884c['attributes']=_[_0xa873('0x31')](_0x223ff3[_0xa873('0x2e')],qs['fields'](_0x1aa002[_0xa873('0x2f')][_0xa873('0x33')]));_0x18884c[_0xa873('0x32')]=_0x18884c[_0xa873('0x32')][_0xa873('0x44')]?_0x18884c[_0xa873('0x32')]:_0x223ff3[_0xa873('0x2e')];_0x18884c[_0xa873('0x37')]=qs['sort'](_0x1aa002[_0xa873('0x2f')][_0xa873('0x38')]);_0x18884c[_0xa873('0x39')]=qs['filters'](_[_0xa873('0x4b')](_0x1aa002['query'],_0x223ff3['filters']));if(_0x1aa002[_0xa873('0x2f')][_0xa873('0x3b')]){_0x18884c[_0xa873('0x39')]=_[_0xa873('0x3c')](_0x18884c[_0xa873('0x39')],{'$or':_[_0xa873('0x28')](_0x18884c[_0xa873('0x32')],function(_0x1638ae){var _0xcbc790={};_0xcbc790[_0x1638ae]={'$like':'%'+_0x1aa002[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0xcbc790;})});}_0x18884c=_[_0xa873('0x3c')]({},_0x18884c,_0x1aa002['options']);return _0x2a35ed[_0xa873('0x48')](_0x18884c);}})[_0xa873('0x21')](function(_0xdb7030){if(_0xdb7030){_0x3b9fbe=_0xdb7030[_0xa873('0x44')];if(!_0x1aa002[_0xa873('0x2f')]['hasOwnProperty']('nolimit')){_0x18884c[_0xa873('0x36')]=qs[_0xa873('0x36')](_0x1aa002[_0xa873('0x2f')]['limit']);_0x18884c[_0xa873('0x1b')]=qs[_0xa873('0x1b')](_0x1aa002[_0xa873('0x2f')][_0xa873('0x1b')]);}return _0x2a35ed['getFields'](_0x18884c);}})['then'](function(_0x2c5bd7){if(_0x2c5bd7){return _0x2c5bd7?{'count':_0x3b9fbe,'rows':_0x2c5bd7}:null;}})[_0xa873('0x21')](respondWithResult(_0x2539e2,null))[_0xa873('0x41')](handleError(_0x2539e2,null));};exports[_0xa873('0x4c')]=function(_0x255f6c,_0x1da074,_0x12ff09){var _0x57de73={};var _0x5c9302={};var _0x546d1b;var _0x11d0e9;return db[_0xa873('0x29')][_0xa873('0x49')]({'where':{'id':_0x255f6c[_0xa873('0x43')]['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x1da074,null))[_0xa873('0x21')](function(_0x4c5b59){if(_0x4c5b59){_0x546d1b=_0x4c5b59;_0x5c9302[_0xa873('0x2e')]=_['keys'](db[_0xa873('0x4a')][_0xa873('0x2a')]);_0x5c9302[_0xa873('0x2f')]=_[_0xa873('0x30')](_0x255f6c[_0xa873('0x2f')]);_0x5c9302[_0xa873('0x3a')]=_[_0xa873('0x31')](_0x5c9302[_0xa873('0x2e')],_0x5c9302[_0xa873('0x2f')]);_0x57de73[_0xa873('0x32')]=_[_0xa873('0x31')](_0x5c9302[_0xa873('0x2e')],qs[_0xa873('0x33')](_0x255f6c[_0xa873('0x2f')][_0xa873('0x33')]));_0x57de73['attributes']=_0x57de73[_0xa873('0x32')][_0xa873('0x44')]?_0x57de73['attributes']:_0x5c9302[_0xa873('0x2e')];_0x57de73[_0xa873('0x37')]=qs[_0xa873('0x38')](_0x255f6c['query'][_0xa873('0x38')]);_0x57de73[_0xa873('0x39')]=qs[_0xa873('0x3a')](_[_0xa873('0x4b')](_0x255f6c[_0xa873('0x2f')],_0x5c9302[_0xa873('0x3a')]));if(_0x255f6c[_0xa873('0x2f')][_0xa873('0x3b')]){_0x57de73['where']=_[_0xa873('0x3c')](_0x57de73[_0xa873('0x39')],{'$or':_['map'](_0x57de73['attributes'],function(_0x277d0c){var _0x4a3a86={};_0x4a3a86[_0x277d0c]={'$like':'%'+_0x255f6c[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0x4a3a86;})});}_0x57de73=_[_0xa873('0x3c')]({},_0x57de73,_0x255f6c['options']);return _0x546d1b['getSubjects'](_0x57de73);}})[_0xa873('0x21')](function(_0x3bf780){if(_0x3bf780){_0x11d0e9=_0x3bf780[_0xa873('0x44')];if(!_0x255f6c[_0xa873('0x2f')][_0xa873('0x34')](_0xa873('0x35'))){_0x57de73[_0xa873('0x36')]=qs[_0xa873('0x36')](_0x255f6c[_0xa873('0x2f')][_0xa873('0x36')]);_0x57de73['offset']=qs[_0xa873('0x1b')](_0x255f6c[_0xa873('0x2f')][_0xa873('0x1b')]);}return _0x546d1b['getSubjects'](_0x57de73);}})[_0xa873('0x21')](function(_0x5aeebc){if(_0x5aeebc){return _0x5aeebc?{'count':_0x11d0e9,'rows':_0x5aeebc}:null;}})[_0xa873('0x21')](respondWithResult(_0x1da074,null))[_0xa873('0x41')](handleError(_0x1da074,null));};exports[_0xa873('0x4d')]=function(_0x1dac41,_0x13f2c3,_0x49b650){var _0x1889b5={};var _0xcdd503={};var _0x4d1591;var _0x59d433;return db[_0xa873('0x29')][_0xa873('0x49')]({'where':{'id':_0x1dac41[_0xa873('0x43')]['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x13f2c3,null))[_0xa873('0x21')](function(_0x358393){if(_0x358393){_0x4d1591=_0x358393;_0xcdd503['model']=_[_0xa873('0x30')](db[_0xa873('0x4a')][_0xa873('0x2a')]);_0xcdd503['query']=_[_0xa873('0x30')](_0x1dac41[_0xa873('0x2f')]);_0xcdd503[_0xa873('0x3a')]=_['intersection'](_0xcdd503[_0xa873('0x2e')],_0xcdd503['query']);_0x1889b5[_0xa873('0x32')]=_[_0xa873('0x31')](_0xcdd503[_0xa873('0x2e')],qs[_0xa873('0x33')](_0x1dac41['query']['fields']));_0x1889b5[_0xa873('0x32')]=_0x1889b5[_0xa873('0x32')][_0xa873('0x44')]?_0x1889b5['attributes']:_0xcdd503[_0xa873('0x2e')];_0x1889b5['order']=qs[_0xa873('0x38')](_0x1dac41[_0xa873('0x2f')][_0xa873('0x38')]);_0x1889b5[_0xa873('0x39')]=qs[_0xa873('0x3a')](_[_0xa873('0x4b')](_0x1dac41[_0xa873('0x2f')],_0xcdd503[_0xa873('0x3a')]));if(_0x1dac41[_0xa873('0x2f')][_0xa873('0x3b')]){_0x1889b5[_0xa873('0x39')]=_[_0xa873('0x3c')](_0x1889b5[_0xa873('0x39')],{'$or':_[_0xa873('0x28')](_0x1889b5[_0xa873('0x32')],function(_0x4b0cf9){var _0x28e705={};_0x28e705[_0x4b0cf9]={'$like':'%'+_0x1dac41[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0x28e705;})});}_0x1889b5=_[_0xa873('0x3c')]({},_0x1889b5,_0x1dac41['options']);return _0x4d1591['getDescriptions'](_0x1889b5);}})[_0xa873('0x21')](function(_0x546e7a){if(_0x546e7a){_0x59d433=_0x546e7a[_0xa873('0x44')];if(!_0x1dac41['query']['hasOwnProperty']('nolimit')){_0x1889b5[_0xa873('0x36')]=qs['limit'](_0x1dac41['query'][_0xa873('0x36')]);_0x1889b5[_0xa873('0x1b')]=qs[_0xa873('0x1b')](_0x1dac41['query'][_0xa873('0x1b')]);}return _0x4d1591['getDescriptions'](_0x1889b5);}})[_0xa873('0x21')](function(_0x330bcf){if(_0x330bcf){return _0x330bcf?{'count':_0x59d433,'rows':_0x330bcf}:null;}})['then'](respondWithResult(_0x13f2c3,null))['catch'](handleError(_0x13f2c3,null));};
\ No newline at end of file
index d256a20..648f6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb699=['SalesforceConfiguration','int_salesforce_configurations','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0xa42c74,_0x2170ed){var _0x1076d1=function(_0x534bf9){while(--_0x534bf9){_0xa42c74['push'](_0xa42c74['shift']());}};_0x1076d1(++_0x2170ed);}(_0xb699,0x152));var _0x9b69=function(_0x1e472c,_0x42556d){_0x1e472c=_0x1e472c-0x0;var _0x529266=_0xb699[_0x1e472c];return _0x529266;};'use strict';var _=require(_0x9b69('0x0'));var util=require(_0x9b69('0x1'));var logger=require('../../config/logger')(_0x9b69('0x2'));var moment=require(_0x9b69('0x3'));var BPromise=require(_0x9b69('0x4'));var rp=require(_0x9b69('0x5'));var fs=require('fs');var path=require(_0x9b69('0x6'));var rimraf=require(_0x9b69('0x7'));var config=require(_0x9b69('0x8'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0x9b69('0x9')]=function(_0x215ea5,_0x3517bc){return _0x215ea5['define'](_0x9b69('0xa'),attributes,{'tableName':_0x9b69('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x79f5=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','int_salesforce_configurations','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x79f5,0x1df));var _0x579f=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0x79f5[_0x25bea7];return _0x175952;};'use strict';var _=require(_0x579f('0x0'));var util=require('util');var logger=require(_0x579f('0x1'))(_0x579f('0x2'));var moment=require(_0x579f('0x3'));var BPromise=require(_0x579f('0x4'));var rp=require(_0x579f('0x5'));var fs=require('fs');var path=require(_0x579f('0x6'));var rimraf=require(_0x579f('0x7'));var config=require(_0x579f('0x8'));var attributes=require(_0x579f('0x9'));module['exports']=function(_0x261264,_0x2ea2aa){return _0x261264[_0x579f('0xa')](_0x579f('0xb'),attributes,{'tableName':_0x579f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aa2da62..5da0c83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8443=['error','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4206f5,_0x21f338){var _0xa29cf3=function(_0x2d35d7){while(--_0x2d35d7){_0x4206f5['push'](_0x4206f5['shift']());}};_0xa29cf3(++_0x21f338);}(_0x8443,0xd5));var _0x3844=function(_0x3fde79,_0x11e979){_0x3fde79=_0x3fde79-0x0;var _0x4f4edb=_0x8443[_0x3fde79];return _0x4f4edb;};'use strict';var _=require(_0x3844('0x0'));var util=require(_0x3844('0x1'));var moment=require(_0x3844('0x2'));var BPromise=require('bluebird');var rs=require(_0x3844('0x3'));var fs=require('fs');var Redis=require(_0x3844('0x4'));var db=require(_0x3844('0x5'))['db'];var utils=require(_0x3844('0x6'));var logger=require(_0x3844('0x7'))(_0x3844('0x8'));var config=require(_0x3844('0x9'));var jayson=require(_0x3844('0xa'));var client=jayson[_0x3844('0xb')][_0x3844('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4cd4f3,_0x2979c3,_0x5db0f8){return new BPromise(function(_0x4e0078,_0x83e9e2){return client[_0x3844('0xd')](_0x4cd4f3,_0x5db0f8)['then'](function(_0x56f393){logger[_0x3844('0xe')](_0x3844('0xf'),_0x2979c3,_0x3844('0x10'));logger[_0x3844('0x11')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x2979c3,_0x3844('0x10'),JSON['stringify'](_0x56f393));if(_0x56f393[_0x3844('0x12')]){if(_0x56f393['error']['code']===0x1f4){logger[_0x3844('0x12')](_0x3844('0xf'),_0x2979c3,_0x56f393['error'][_0x3844('0x13')]);return _0x83e9e2(_0x56f393[_0x3844('0x12')][_0x3844('0x13')]);}logger['error'](_0x3844('0xf'),_0x2979c3,_0x56f393[_0x3844('0x12')]['message']);return _0x4e0078(_0x56f393[_0x3844('0x12')][_0x3844('0x13')]);}else{logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x2979c3,_0x3844('0x10'));_0x4e0078(_0x56f393[_0x3844('0x14')][_0x3844('0x13')]);}})['catch'](function(_0x1a8d2e){logger['error'](_0x3844('0xf'),_0x2979c3,_0x1a8d2e);_0x83e9e2(_0x1a8d2e);});});}
\ No newline at end of file
+var _0x1955=['bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment'];(function(_0x1e6970,_0x3aff90){var _0x5e43f6=function(_0x8925d1){while(--_0x8925d1){_0x1e6970['push'](_0x1e6970['shift']());}};_0x5e43f6(++_0x3aff90);}(_0x1955,0x82));var _0x5195=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1955[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x5195('0x0'));var util=require(_0x5195('0x1'));var moment=require(_0x5195('0x2'));var BPromise=require(_0x5195('0x3'));var rs=require(_0x5195('0x4'));var fs=require('fs');var Redis=require(_0x5195('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5195('0x6'))('rpc');var config=require(_0x5195('0x7'));var jayson=require(_0x5195('0x8'));var client=jayson[_0x5195('0x9')][_0x5195('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x763904,_0xaf23b,_0x1379d1){return new BPromise(function(_0x447e60,_0x33fd35){return client[_0x5195('0xb')](_0x763904,_0x1379d1)[_0x5195('0xc')](function(_0x3e47dd){logger['info'](_0x5195('0xd'),_0xaf23b,'request\x20sent');logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0xaf23b,_0x5195('0xe'),JSON[_0x5195('0xf')](_0x3e47dd));if(_0x3e47dd[_0x5195('0x10')]){if(_0x3e47dd[_0x5195('0x10')]['code']===0x1f4){logger[_0x5195('0x10')](_0x5195('0xd'),_0xaf23b,_0x3e47dd[_0x5195('0x10')][_0x5195('0x11')]);return _0x33fd35(_0x3e47dd[_0x5195('0x10')][_0x5195('0x11')]);}logger[_0x5195('0x10')](_0x5195('0xd'),_0xaf23b,_0x3e47dd[_0x5195('0x10')]['message']);return _0x447e60(_0x3e47dd[_0x5195('0x10')][_0x5195('0x11')]);}else{logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0xaf23b,_0x5195('0xe'));_0x447e60(_0x3e47dd[_0x5195('0x12')]['message']);}})['catch'](function(_0x4e73b7){logger[_0x5195('0x10')](_0x5195('0xd'),_0xaf23b,_0x4e73b7);_0x33fd35(_0x4e73b7);});});}
\ No newline at end of file
index 018f796..972f0c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38cd=['express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceField.controller','get','isAuthenticated','index','show','post','put','/:id','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x38cd,0x12c));var _0xd38c=function(_0x277107,_0x3420dc){_0x277107=_0x277107-0x0;var _0x1da046=_0x38cd[_0x277107];return _0x1da046;};'use strict';var multer=require(_0xd38c('0x0'));var util=require(_0xd38c('0x1'));var path=require(_0xd38c('0x2'));var timeout=require(_0xd38c('0x3'));var express=require(_0xd38c('0x4'));var router=express[_0xd38c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd38c('0x6'));var interaction=require(_0xd38c('0x7'));var config=require('../../config/environment');var controller=require(_0xd38c('0x8'));router[_0xd38c('0x9')]('/',auth[_0xd38c('0xa')](),controller[_0xd38c('0xb')]);router['get']('/:id',auth[_0xd38c('0xa')](),controller[_0xd38c('0xc')]);router[_0xd38c('0xd')]('/',auth[_0xd38c('0xa')](),controller['create']);router[_0xd38c('0xe')](_0xd38c('0xf'),auth[_0xd38c('0xa')](),controller[_0xd38c('0x10')]);router[_0xd38c('0x11')](_0xd38c('0xf'),auth[_0xd38c('0xa')](),controller['destroy']);module[_0xd38c('0x12')]=router;
\ No newline at end of file
+var _0xe030=['destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','show','post','create','put','/:id','update','delete'];(function(_0x43edfc,_0x5ba7b9){var _0x34428c=function(_0x1f138e){while(--_0x1f138e){_0x43edfc['push'](_0x43edfc['shift']());}};_0x34428c(++_0x5ba7b9);}(_0xe030,0x8e));var _0x0e03=function(_0x3062cb,_0x44ca12){_0x3062cb=_0x3062cb-0x0;var _0xf29731=_0xe030[_0x3062cb];return _0xf29731;};'use strict';var multer=require(_0x0e03('0x0'));var util=require(_0x0e03('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0e03('0x2'));var router=express[_0x0e03('0x3')]();var fs_extra=require(_0x0e03('0x4'));var auth=require(_0x0e03('0x5'));var interaction=require(_0x0e03('0x6'));var config=require(_0x0e03('0x7'));var controller=require(_0x0e03('0x8'));router['get']('/',auth[_0x0e03('0x9')](),controller[_0x0e03('0xa')]);router['get']('/:id',auth[_0x0e03('0x9')](),controller[_0x0e03('0xb')]);router[_0x0e03('0xc')]('/',auth['isAuthenticated'](),controller[_0x0e03('0xd')]);router[_0x0e03('0xe')](_0x0e03('0xf'),auth[_0x0e03('0x9')](),controller[_0x0e03('0x10')]);router[_0x0e03('0x11')](_0x0e03('0xf'),auth[_0x0e03('0x9')](),controller[_0x0e03('0x12')]);module[_0x0e03('0x13')]=router;
\ No newline at end of file
index c3e2b73..44c152c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46df=['string','variable','customVariable','STRING','sequelize','ENUM'];(function(_0x3938f8,_0xb38f19){var _0x411c1f=function(_0x5bcdf3){while(--_0x5bcdf3){_0x3938f8['push'](_0x3938f8['shift']());}};_0x411c1f(++_0xb38f19);}(_0x46df,0x1ba));var _0xf46d=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x46df[_0x5c351c];return _0x26f3b3;};'use strict';var Sequelize=require(_0xf46d('0x0'));module['exports']={'type':{'type':Sequelize[_0xf46d('0x1')](_0xf46d('0x2'),_0xf46d('0x3'),_0xf46d('0x4'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xf46d('0x5')]},'keyType':{'type':Sequelize[_0xf46d('0x1')]('string','variable',_0xf46d('0x4'))},'keyContent':{'type':Sequelize[_0xf46d('0x5')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x08d1=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x35f6b4,_0x505966){var _0x10f072=function(_0x20e563){while(--_0x20e563){_0x35f6b4['push'](_0x35f6b4['shift']());}};_0x10f072(++_0x505966);}(_0x08d1,0x85));var _0x108d=function(_0x43a739,_0x3d0dde){_0x43a739=_0x43a739-0x0;var _0x3dba0f=_0x08d1[_0x43a739];return _0x3dba0f;};'use strict';var Sequelize=require(_0x108d('0x0'));module[_0x108d('0x1')]={'type':{'type':Sequelize[_0x108d('0x2')](_0x108d('0x3'),_0x108d('0x4'),_0x108d('0x5'),_0x108d('0x6'),_0x108d('0x7')),'defaultValue':_0x108d('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x108d('0x8')]},'keyType':{'type':Sequelize[_0x108d('0x2')]('string',_0x108d('0x4'),_0x108d('0x5'))},'keyContent':{'type':Sequelize[_0x108d('0x8')]},'idField':{'type':Sequelize[_0x108d('0x8')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e3443fe..c72b04a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742d=['options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','status','end','offset','limit','count','json','reject','save','update','then','sendStatus','error','stack','name','send','map','SalesforceField','rawAttributes','fieldName','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x742d,0x1cf));var _0xd742=function(_0x50a808,_0x344972){_0x50a808=_0x50a808-0x0;var _0x5834bc=_0x742d[_0x50a808];return _0x5834bc;};'use strict';var emlformat=require(_0xd742('0x0'));var rimraf=require(_0xd742('0x1'));var zipdir=require(_0xd742('0x2'));var jsonpatch=require(_0xd742('0x3'));var rp=require(_0xd742('0x4'));var moment=require(_0xd742('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xd742('0x6'));var util=require('util');var path=require(_0xd742('0x7'));var sox=require(_0xd742('0x8'));var csv=require('to-csv');var ejs=require(_0xd742('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd742('0xa'));var squel=require(_0xd742('0xb'));var crypto=require(_0xd742('0xc'));var jsforce=require(_0xd742('0xd'));var deskjs=require(_0xd742('0xe'));var toCsv=require(_0xd742('0xf'));var querystring=require(_0xd742('0x10'));var Papa=require(_0xd742('0x11'));var Redis=require(_0xd742('0x12'));var authService=require(_0xd742('0x13'));var qs=require(_0xd742('0x14'));var as=require(_0xd742('0x15'));var hardwareService=require(_0xd742('0x16'));var logger=require(_0xd742('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd742('0x18'));var db=require(_0xd742('0x19'))['db'];function respondWithStatusCode(_0x3456c0,_0x37828c){_0x37828c=_0x37828c||0xcc;return function(_0x4f73b2){if(_0x4f73b2){return _0x3456c0['sendStatus'](_0x37828c);}return _0x3456c0[_0xd742('0x1a')](_0x37828c)[_0xd742('0x1b')]();};}function respondWithResult(_0x24d782,_0x56fc7d){_0x56fc7d=_0x56fc7d||0xc8;return function(_0x42f3ce){if(_0x42f3ce){return _0x24d782[_0xd742('0x1a')](_0x56fc7d)['json'](_0x42f3ce);}};}function respondWithFilteredResult(_0x213455,_0x4b6d46){return function(_0x4c94dc){if(_0x4c94dc){var _0x23fb44=typeof _0x4b6d46[_0xd742('0x1c')]==='undefined'&&typeof _0x4b6d46[_0xd742('0x1d')]==='undefined';var _0x117b71=_0x4c94dc[_0xd742('0x1e')];var _0x66f4dd=_0x23fb44?0x0:_0x4b6d46[_0xd742('0x1c')];var _0x406846=_0x23fb44?_0x4c94dc[_0xd742('0x1e')]:_0x4b6d46['offset']+_0x4b6d46['limit'];var _0x4c69d1;if(_0x406846>=_0x117b71){_0x406846=_0x117b71;_0x4c69d1=0xc8;}else{_0x4c69d1=0xce;}_0x213455['status'](_0x4c69d1);return _0x213455['set']('Content-Range',_0x66f4dd+'-'+_0x406846+'/'+_0x117b71)[_0xd742('0x1f')](_0x4c94dc);}return null;};}function patchUpdates(_0x1e40c8){return function(_0x2d02aa){try{jsonpatch['apply'](_0x2d02aa,_0x1e40c8,!![]);}catch(_0x25fa2b){return BPromise[_0xd742('0x20')](_0x25fa2b);}return _0x2d02aa[_0xd742('0x21')]();};}function saveUpdates(_0x4255c5,_0x851e89){return function(_0x3ba34c){if(_0x3ba34c){return _0x3ba34c[_0xd742('0x22')](_0x4255c5)['then'](function(_0x9004c2){return _0x9004c2;});}return null;};}function removeEntity(_0x2fec09,_0x291e4d){return function(_0x59dc79){if(_0x59dc79){return _0x59dc79['destroy']()[_0xd742('0x23')](function(){_0x2fec09[_0xd742('0x1a')](0xcc)[_0xd742('0x1b')]();});}};}function handleEntityNotFound(_0x278fb1,_0x5f544c){return function(_0x866518){if(!_0x866518){_0x278fb1[_0xd742('0x24')](0x194);}return _0x866518;};}function handleError(_0xab1615,_0x1f2cf3){_0x1f2cf3=_0x1f2cf3||0x1f4;return function(_0x2c389c){logger[_0xd742('0x25')](_0x2c389c[_0xd742('0x26')]);if(_0x2c389c[_0xd742('0x27')]){delete _0x2c389c[_0xd742('0x27')];}_0xab1615[_0xd742('0x1a')](_0x1f2cf3)[_0xd742('0x28')](_0x2c389c);};}exports['index']=function(_0x164c7e,_0x5144ea){var _0x764180={},_0x5bfc73={},_0x538fba={'count':0x0,'rows':[]};var _0x176bda=_[_0xd742('0x29')](db[_0xd742('0x2a')][_0xd742('0x2b')],function(_0x133a5e){return{'name':_0x133a5e[_0xd742('0x2c')],'type':_0x133a5e['type'][_0xd742('0x2d')]};});_0x5bfc73[_0xd742('0x2e')]=_[_0xd742('0x29')](_0x176bda,_0xd742('0x27'));_0x5bfc73[_0xd742('0x2f')]=_['keys'](_0x164c7e['query']);_0x5bfc73['filters']=_['intersection'](_0x5bfc73[_0xd742('0x2e')],_0x5bfc73[_0xd742('0x2f')]);_0x764180['attributes']=_[_0xd742('0x30')](_0x5bfc73[_0xd742('0x2e')],qs[_0xd742('0x31')](_0x164c7e[_0xd742('0x2f')][_0xd742('0x31')]));_0x764180['attributes']=_0x764180[_0xd742('0x32')][_0xd742('0x33')]?_0x764180[_0xd742('0x32')]:_0x5bfc73['model'];if(!_0x164c7e[_0xd742('0x2f')][_0xd742('0x34')](_0xd742('0x35'))){_0x764180[_0xd742('0x1d')]=qs[_0xd742('0x1d')](_0x164c7e['query'][_0xd742('0x1d')]);_0x764180[_0xd742('0x1c')]=qs['offset'](_0x164c7e[_0xd742('0x2f')][_0xd742('0x1c')]);}_0x764180[_0xd742('0x36')]=qs[_0xd742('0x37')](_0x164c7e[_0xd742('0x2f')]['sort']);_0x764180[_0xd742('0x38')]=qs[_0xd742('0x39')](_[_0xd742('0x3a')](_0x164c7e[_0xd742('0x2f')],_0x5bfc73[_0xd742('0x39')]),_0x176bda);if(_0x164c7e[_0xd742('0x2f')][_0xd742('0x3b')]){_0x764180[_0xd742('0x38')]=_[_0xd742('0x3c')](_0x764180[_0xd742('0x38')],{'$or':_['map'](_0x176bda,function(_0x34e04e){if(_0x34e04e['type']!==_0xd742('0x3d')){var _0x52fac2={};_0x52fac2[_0x34e04e[_0xd742('0x27')]]={'$like':'%'+_0x164c7e['query'][_0xd742('0x3b')]+'%'};return _0x52fac2;}})});}_0x764180=_['merge']({},_0x764180,_0x164c7e[_0xd742('0x3e')]);var _0xc99223={'where':_0x764180['where']};return db[_0xd742('0x2a')][_0xd742('0x1e')](_0xc99223)[_0xd742('0x23')](function(_0x465e71){_0x538fba[_0xd742('0x1e')]=_0x465e71;if(_0x164c7e[_0xd742('0x2f')]['includeAll']){_0x764180[_0xd742('0x3f')]=[{'all':!![]}];}return db[_0xd742('0x2a')][_0xd742('0x40')](_0x764180);})[_0xd742('0x23')](function(_0x3cfbb4){_0x538fba[_0xd742('0x41')]=_0x3cfbb4;return _0x538fba;})[_0xd742('0x23')](respondWithFilteredResult(_0x5144ea,_0x764180))[_0xd742('0x42')](handleError(_0x5144ea,null));};exports[_0xd742('0x43')]=function(_0x354a6a,_0x4c4b6f){var _0x280191={'raw':!![],'where':{'id':_0x354a6a[_0xd742('0x44')]['id']}},_0x397920={};_0x397920['model']=_[_0xd742('0x45')](db[_0xd742('0x2a')]['rawAttributes']);_0x397920['query']=_['keys'](_0x354a6a['query']);_0x397920[_0xd742('0x39')]=_[_0xd742('0x30')](_0x397920[_0xd742('0x2e')],_0x397920['query']);_0x280191['attributes']=_['intersection'](_0x397920[_0xd742('0x2e')],qs[_0xd742('0x31')](_0x354a6a[_0xd742('0x2f')][_0xd742('0x31')]));_0x280191['attributes']=_0x280191[_0xd742('0x32')]['length']?_0x280191['attributes']:_0x397920[_0xd742('0x2e')];if(_0x354a6a[_0xd742('0x2f')][_0xd742('0x46')]){_0x280191[_0xd742('0x3f')]=[{'all':!![]}];}_0x280191=_['merge']({},_0x280191,_0x354a6a[_0xd742('0x3e')]);return db[_0xd742('0x2a')][_0xd742('0x47')](_0x280191)['then'](handleEntityNotFound(_0x4c4b6f,null))['then'](respondWithResult(_0x4c4b6f,null))['catch'](handleError(_0x4c4b6f,null));};exports[_0xd742('0x48')]=function(_0x939a18,_0xbbfbe1){return db['SalesforceField'][_0xd742('0x48')](_0x939a18[_0xd742('0x49')],{})[_0xd742('0x23')](respondWithResult(_0xbbfbe1,0xc9))['catch'](handleError(_0xbbfbe1,null));};exports[_0xd742('0x22')]=function(_0x4c34d8,_0x262da8){if(_0x4c34d8['body']['id']){delete _0x4c34d8[_0xd742('0x49')]['id'];}return db[_0xd742('0x2a')][_0xd742('0x47')]({'where':{'id':_0x4c34d8[_0xd742('0x44')]['id']}})['then'](handleEntityNotFound(_0x262da8,null))[_0xd742('0x23')](saveUpdates(_0x4c34d8[_0xd742('0x49')],null))[_0xd742('0x23')](respondWithResult(_0x262da8,null))[_0xd742('0x42')](handleError(_0x262da8,null));};exports[_0xd742('0x4a')]=function(_0x163e9b,_0x533cdc){return db['SalesforceField'][_0xd742('0x47')]({'where':{'id':_0x163e9b['params']['id']}})['then'](handleEntityNotFound(_0x533cdc,null))[_0xd742('0x23')](removeEntity(_0x533cdc,null))[_0xd742('0x42')](handleError(_0x533cdc,null));};
\ No newline at end of file
+var _0xbfed=['attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','catch','show','params','create','update','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','then','destroy','name','send','index','SalesforceField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection'];(function(_0xc88a7b,_0x381dba){var _0x294d36=function(_0x2db4cf){while(--_0x2db4cf){_0xc88a7b['push'](_0xc88a7b['shift']());}};_0x294d36(++_0x381dba);}(_0xbfed,0xa5));var _0xdbfe=function(_0x1fc84d,_0x3f469d){_0x1fc84d=_0x1fc84d-0x0;var _0x2658fa=_0xbfed[_0x1fc84d];return _0x2658fa;};'use strict';var emlformat=require(_0xdbfe('0x0'));var rimraf=require(_0xdbfe('0x1'));var zipdir=require(_0xdbfe('0x2'));var jsonpatch=require(_0xdbfe('0x3'));var rp=require(_0xdbfe('0x4'));var moment=require(_0xdbfe('0x5'));var BPromise=require(_0xdbfe('0x6'));var Mustache=require(_0xdbfe('0x7'));var util=require(_0xdbfe('0x8'));var path=require(_0xdbfe('0x9'));var sox=require(_0xdbfe('0xa'));var csv=require('to-csv');var ejs=require(_0xdbfe('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdbfe('0xc'));var squel=require('squel');var crypto=require(_0xdbfe('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdbfe('0xe'));var querystring=require(_0xdbfe('0xf'));var Papa=require(_0xdbfe('0x10'));var Redis=require(_0xdbfe('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdbfe('0x12'));var logger=require(_0xdbfe('0x13'))('api');var utils=require(_0xdbfe('0x14'));var config=require(_0xdbfe('0x15'));var licenseUtil=require(_0xdbfe('0x16'));var db=require(_0xdbfe('0x17'))['db'];function respondWithStatusCode(_0x1aea7f,_0x49dfb2){_0x49dfb2=_0x49dfb2||0xcc;return function(_0x2a465e){if(_0x2a465e){return _0x1aea7f[_0xdbfe('0x18')](_0x49dfb2);}return _0x1aea7f[_0xdbfe('0x19')](_0x49dfb2)[_0xdbfe('0x1a')]();};}function respondWithResult(_0x11802f,_0x40f9f8){_0x40f9f8=_0x40f9f8||0xc8;return function(_0x2d8183){if(_0x2d8183){return _0x11802f['status'](_0x40f9f8)['json'](_0x2d8183);}};}function respondWithFilteredResult(_0x33194,_0x30dd87){return function(_0x44d7f4){if(_0x44d7f4){var _0x198da2=typeof _0x30dd87[_0xdbfe('0x1b')]===_0xdbfe('0x1c')&&typeof _0x30dd87['limit']===_0xdbfe('0x1c');var _0x320fdc=_0x44d7f4['count'];var _0x4399ff=_0x198da2?0x0:_0x30dd87[_0xdbfe('0x1b')];var _0x3de68e=_0x198da2?_0x44d7f4[_0xdbfe('0x1d')]:_0x30dd87[_0xdbfe('0x1b')]+_0x30dd87['limit'];var _0xde41f0;if(_0x3de68e>=_0x320fdc){_0x3de68e=_0x320fdc;_0xde41f0=0xc8;}else{_0xde41f0=0xce;}_0x33194['status'](_0xde41f0);return _0x33194['set'](_0xdbfe('0x1e'),_0x4399ff+'-'+_0x3de68e+'/'+_0x320fdc)[_0xdbfe('0x1f')](_0x44d7f4);}return null;};}function patchUpdates(_0x2fe447){return function(_0x180bdc){try{jsonpatch[_0xdbfe('0x20')](_0x180bdc,_0x2fe447,!![]);}catch(_0x3402f5){return BPromise['reject'](_0x3402f5);}return _0x180bdc['save']();};}function saveUpdates(_0x19f8f4,_0x25422f){return function(_0x36d889){if(_0x36d889){return _0x36d889['update'](_0x19f8f4)[_0xdbfe('0x21')](function(_0x2d3c91){return _0x2d3c91;});}return null;};}function removeEntity(_0x32c063,_0x36d1ee){return function(_0x373b12){if(_0x373b12){return _0x373b12[_0xdbfe('0x22')]()[_0xdbfe('0x21')](function(){_0x32c063[_0xdbfe('0x19')](0xcc)[_0xdbfe('0x1a')]();});}};}function handleEntityNotFound(_0x433f95,_0x2f8ada){return function(_0x15e40a){if(!_0x15e40a){_0x433f95[_0xdbfe('0x18')](0x194);}return _0x15e40a;};}function handleError(_0xed96d2,_0x4b68a0){_0x4b68a0=_0x4b68a0||0x1f4;return function(_0x237a62){logger['error'](_0x237a62['stack']);if(_0x237a62[_0xdbfe('0x23')]){delete _0x237a62[_0xdbfe('0x23')];}_0xed96d2[_0xdbfe('0x19')](_0x4b68a0)[_0xdbfe('0x24')](_0x237a62);};}exports[_0xdbfe('0x25')]=function(_0x84a99f,_0x1a967a){var _0x178cb6={},_0x4407b6={},_0x4347d2={'count':0x0,'rows':[]};var _0x1a566d=_['map'](db[_0xdbfe('0x26')][_0xdbfe('0x27')],function(_0x4c5766){return{'name':_0x4c5766[_0xdbfe('0x28')],'type':_0x4c5766[_0xdbfe('0x29')][_0xdbfe('0x2a')]};});_0x4407b6[_0xdbfe('0x2b')]=_[_0xdbfe('0x2c')](_0x1a566d,'name');_0x4407b6[_0xdbfe('0x2d')]=_[_0xdbfe('0x2e')](_0x84a99f['query']);_0x4407b6['filters']=_[_0xdbfe('0x2f')](_0x4407b6[_0xdbfe('0x2b')],_0x4407b6['query']);_0x178cb6[_0xdbfe('0x30')]=_['intersection'](_0x4407b6['model'],qs['fields'](_0x84a99f['query'][_0xdbfe('0x31')]));_0x178cb6[_0xdbfe('0x30')]=_0x178cb6['attributes'][_0xdbfe('0x32')]?_0x178cb6['attributes']:_0x4407b6['model'];if(!_0x84a99f[_0xdbfe('0x2d')][_0xdbfe('0x33')](_0xdbfe('0x34'))){_0x178cb6[_0xdbfe('0x35')]=qs[_0xdbfe('0x35')](_0x84a99f[_0xdbfe('0x2d')][_0xdbfe('0x35')]);_0x178cb6['offset']=qs[_0xdbfe('0x1b')](_0x84a99f['query']['offset']);}_0x178cb6[_0xdbfe('0x36')]=qs[_0xdbfe('0x37')](_0x84a99f[_0xdbfe('0x2d')][_0xdbfe('0x37')]);_0x178cb6[_0xdbfe('0x38')]=qs[_0xdbfe('0x39')](_['pick'](_0x84a99f[_0xdbfe('0x2d')],_0x4407b6[_0xdbfe('0x39')]),_0x1a566d);if(_0x84a99f[_0xdbfe('0x2d')]['filter']){_0x178cb6[_0xdbfe('0x38')]=_[_0xdbfe('0x3a')](_0x178cb6[_0xdbfe('0x38')],{'$or':_[_0xdbfe('0x2c')](_0x1a566d,function(_0x5c35ff){if(_0x5c35ff[_0xdbfe('0x29')]!==_0xdbfe('0x3b')){var _0x3cd622={};_0x3cd622[_0x5c35ff[_0xdbfe('0x23')]]={'$like':'%'+_0x84a99f['query'][_0xdbfe('0x3c')]+'%'};return _0x3cd622;}})});}_0x178cb6=_[_0xdbfe('0x3a')]({},_0x178cb6,_0x84a99f[_0xdbfe('0x3d')]);var _0x2af770={'where':_0x178cb6[_0xdbfe('0x38')]};return db[_0xdbfe('0x26')][_0xdbfe('0x1d')](_0x2af770)[_0xdbfe('0x21')](function(_0x582641){_0x4347d2[_0xdbfe('0x1d')]=_0x582641;if(_0x84a99f['query'][_0xdbfe('0x3e')]){_0x178cb6[_0xdbfe('0x3f')]=[{'all':!![]}];}return db[_0xdbfe('0x26')]['findAll'](_0x178cb6);})['then'](function(_0x1f42c0){_0x4347d2['rows']=_0x1f42c0;return _0x4347d2;})[_0xdbfe('0x21')](respondWithFilteredResult(_0x1a967a,_0x178cb6))[_0xdbfe('0x40')](handleError(_0x1a967a,null));};exports[_0xdbfe('0x41')]=function(_0x5c39d1,_0x1dc854){var _0x1478ee={'raw':!![],'where':{'id':_0x5c39d1[_0xdbfe('0x42')]['id']}},_0x412ea8={};_0x412ea8[_0xdbfe('0x2b')]=_[_0xdbfe('0x2e')](db[_0xdbfe('0x26')][_0xdbfe('0x27')]);_0x412ea8['query']=_[_0xdbfe('0x2e')](_0x5c39d1['query']);_0x412ea8[_0xdbfe('0x39')]=_['intersection'](_0x412ea8[_0xdbfe('0x2b')],_0x412ea8[_0xdbfe('0x2d')]);_0x1478ee['attributes']=_['intersection'](_0x412ea8[_0xdbfe('0x2b')],qs[_0xdbfe('0x31')](_0x5c39d1[_0xdbfe('0x2d')][_0xdbfe('0x31')]));_0x1478ee[_0xdbfe('0x30')]=_0x1478ee[_0xdbfe('0x30')][_0xdbfe('0x32')]?_0x1478ee[_0xdbfe('0x30')]:_0x412ea8[_0xdbfe('0x2b')];if(_0x5c39d1[_0xdbfe('0x2d')][_0xdbfe('0x3e')]){_0x1478ee['include']=[{'all':!![]}];}_0x1478ee=_[_0xdbfe('0x3a')]({},_0x1478ee,_0x5c39d1[_0xdbfe('0x3d')]);return db[_0xdbfe('0x26')]['find'](_0x1478ee)[_0xdbfe('0x21')](handleEntityNotFound(_0x1dc854,null))[_0xdbfe('0x21')](respondWithResult(_0x1dc854,null))[_0xdbfe('0x40')](handleError(_0x1dc854,null));};exports[_0xdbfe('0x43')]=function(_0x3bd85f,_0x3659d5){return db['SalesforceField']['create'](_0x3bd85f['body'],{})[_0xdbfe('0x21')](respondWithResult(_0x3659d5,0xc9))[_0xdbfe('0x40')](handleError(_0x3659d5,null));};exports[_0xdbfe('0x44')]=function(_0x35fdcc,_0x510c15){if(_0x35fdcc[_0xdbfe('0x45')]['id']){delete _0x35fdcc[_0xdbfe('0x45')]['id'];}return db['SalesforceField'][_0xdbfe('0x46')]({'where':{'id':_0x35fdcc['params']['id']}})[_0xdbfe('0x21')](handleEntityNotFound(_0x510c15,null))[_0xdbfe('0x21')](saveUpdates(_0x35fdcc[_0xdbfe('0x45')],null))[_0xdbfe('0x21')](respondWithResult(_0x510c15,null))[_0xdbfe('0x40')](handleError(_0x510c15,null));};exports['destroy']=function(_0x463a10,_0x35be95){return db[_0xdbfe('0x26')][_0xdbfe('0x46')]({'where':{'id':_0x463a10['params']['id']}})[_0xdbfe('0x21')](handleEntityNotFound(_0x35be95,null))[_0xdbfe('0x21')](removeEntity(_0x35be95,null))[_0xdbfe('0x40')](handleError(_0x35be95,null));};
\ No newline at end of file
index 9217618..c29bae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa32b=['../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','api','request-promise','path'];(function(_0x4858bc,_0x176641){var _0x5f2e11=function(_0x45866b){while(--_0x45866b){_0x4858bc['push'](_0x4858bc['shift']());}};_0x5f2e11(++_0x176641);}(_0xa32b,0x168));var _0xba32=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xa32b[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0xba32('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xba32('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xba32('0x2'));var fs=require('fs');var path=require(_0xba32('0x3'));var rimraf=require('rimraf');var config=require(_0xba32('0x4'));var attributes=require(_0xba32('0x5'));module[_0xba32('0x6')]=function(_0x1d8d5c,_0x389295){return _0x1d8d5c[_0xba32('0x7')](_0xba32('0x8'),attributes,{'tableName':_0xba32('0x9'),'paranoid':![],'indexes':[{'name':_0xba32('0xa'),'fields':[_0xba32('0xb'),_0xba32('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1b8=['request-promise','path','rimraf','../../config/environment','define','int_salesforce_fields','salesforce_unique_index','idField','FieldId','../../config/logger','api','moment'];(function(_0x5ecb6b,_0x395e2c){var _0x5b921f=function(_0xc71f12){while(--_0xc71f12){_0x5ecb6b['push'](_0x5ecb6b['shift']());}};_0x5b921f(++_0x395e2c);}(_0xe1b8,0x189));var _0x8e1b=function(_0x1c5be8,_0x4b6be6){_0x1c5be8=_0x1c5be8-0x0;var _0x23d245=_0xe1b8[_0x1c5be8];return _0x23d245;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8e1b('0x0'))(_0x8e1b('0x1'));var moment=require(_0x8e1b('0x2'));var BPromise=require('bluebird');var rp=require(_0x8e1b('0x3'));var fs=require('fs');var path=require(_0x8e1b('0x4'));var rimraf=require(_0x8e1b('0x5'));var config=require(_0x8e1b('0x6'));var attributes=require('./intSalesforceField.attributes');module['exports']=function(_0x500853,_0x5d4486){return _0x500853[_0x8e1b('0x7')]('SalesforceField',attributes,{'tableName':_0x8e1b('0x8'),'paranoid':![],'indexes':[{'name':_0x8e1b('0x9'),'fields':[_0x8e1b('0xa'),_0x8e1b('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2a6c7d9..247b56e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe34b=['../../config/environment','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x4fb318,_0x400df2){var _0x17da2d=function(_0x21f4be){while(--_0x21f4be){_0x4fb318['push'](_0x4fb318['shift']());}};_0x17da2d(++_0x400df2);}(_0xe34b,0xbf));var _0xbe34=function(_0x1283d4,_0x36b6f1){_0x1283d4=_0x1283d4-0x0;var _0x433643=_0xe34b[_0x1283d4];return _0x433643;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbe34('0x0'));var BPromise=require(_0xbe34('0x1'));var rs=require(_0xbe34('0x2'));var fs=require('fs');var Redis=require(_0xbe34('0x3'));var db=require(_0xbe34('0x4'))['db'];var utils=require(_0xbe34('0x5'));var logger=require('../../config/logger')(_0xbe34('0x6'));var config=require(_0xbe34('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xbe34('0x8')][_0xbe34('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x7d2684,_0x20c14b,_0x50a689){return new BPromise(function(_0x27e221,_0x502685){return client[_0xbe34('0xa')](_0x7d2684,_0x50a689)[_0xbe34('0xb')](function(_0x284ed3){logger[_0xbe34('0xc')](_0xbe34('0xd'),_0x20c14b,'request\x20sent');logger[_0xbe34('0xe')](_0xbe34('0xf'),_0x20c14b,'request\x20sent',JSON['stringify'](_0x284ed3));if(_0x284ed3[_0xbe34('0x10')]){if(_0x284ed3[_0xbe34('0x10')][_0xbe34('0x11')]===0x1f4){logger[_0xbe34('0x10')]('SalesforceField,\x20%s,\x20%s',_0x20c14b,_0x284ed3['error'][_0xbe34('0x12')]);return _0x502685(_0x284ed3[_0xbe34('0x10')]['message']);}logger[_0xbe34('0x10')](_0xbe34('0xd'),_0x20c14b,_0x284ed3[_0xbe34('0x10')][_0xbe34('0x12')]);return _0x27e221(_0x284ed3[_0xbe34('0x10')]['message']);}else{logger[_0xbe34('0xc')]('SalesforceField,\x20%s,\x20%s',_0x20c14b,_0xbe34('0x13'));_0x27e221(_0x284ed3[_0xbe34('0x14')][_0xbe34('0x12')]);}})[_0xbe34('0x15')](function(_0x55d228){logger[_0xbe34('0x10')]('SalesforceField,\x20%s,\x20%s',_0x20c14b,_0x55d228);_0x502685(_0x55d228);});});}
\ No newline at end of file
+var _0xa50e=['request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x22ad7d,_0x5bba12){var _0x4ee4a1=function(_0x24e36){while(--_0x24e36){_0x22ad7d['push'](_0x22ad7d['shift']());}};_0x4ee4a1(++_0x5bba12);}(_0xa50e,0x17c));var _0xea50=function(_0x2803e5,_0x270079){_0x2803e5=_0x2803e5-0x0;var _0x27e403=_0xa50e[_0x2803e5];return _0x27e403;};'use strict';var _=require(_0xea50('0x0'));var util=require(_0xea50('0x1'));var moment=require(_0xea50('0x2'));var BPromise=require(_0xea50('0x3'));var rs=require(_0xea50('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xea50('0x5'));var logger=require(_0xea50('0x6'))(_0xea50('0x7'));var config=require('../../config/environment');var jayson=require(_0xea50('0x8'));var client=jayson[_0xea50('0x9')][_0xea50('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c138c,_0x5a8fb4,_0x1aaffa){return new BPromise(function(_0x6b69,_0x58ec5a){return client[_0xea50('0xb')](_0x3c138c,_0x1aaffa)[_0xea50('0xc')](function(_0x57feb0){logger[_0xea50('0xd')](_0xea50('0xe'),_0x5a8fb4,_0xea50('0xf'));logger[_0xea50('0x10')](_0xea50('0x11'),_0x5a8fb4,_0xea50('0xf'),JSON[_0xea50('0x12')](_0x57feb0));if(_0x57feb0[_0xea50('0x13')]){if(_0x57feb0['error']['code']===0x1f4){logger[_0xea50('0x13')](_0xea50('0xe'),_0x5a8fb4,_0x57feb0['error']['message']);return _0x58ec5a(_0x57feb0[_0xea50('0x13')]['message']);}logger[_0xea50('0x13')]('SalesforceField,\x20%s,\x20%s',_0x5a8fb4,_0x57feb0[_0xea50('0x13')][_0xea50('0x14')]);return _0x6b69(_0x57feb0[_0xea50('0x13')][_0xea50('0x14')]);}else{logger[_0xea50('0xd')](_0xea50('0xe'),_0x5a8fb4,_0xea50('0xf'));_0x6b69(_0x57feb0[_0xea50('0x15')][_0xea50('0x14')]);}})[_0xea50('0x16')](function(_0x395bd3){logger['error']('SalesforceField,\x20%s,\x20%s',_0x5a8fb4,_0x395bd3);_0x58ec5a(_0x395bd3);});});}
\ No newline at end of file
index a059c13..b6407e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ec=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','put','/:id','update','destroy','exports'];(function(_0x36e684,_0x30dbdf){var _0x41ad1f=function(_0x5e2b1b){while(--_0x5e2b1b){_0x36e684['push'](_0x36e684['shift']());}};_0x41ad1f(++_0x30dbdf);}(_0xf6ec,0x198));var _0xcf6e=function(_0x17355f,_0x574831){_0x17355f=_0x17355f-0x0;var _0x3888ab=_0xf6ec[_0x17355f];return _0x3888ab;};'use strict';var multer=require('multer');var util=require(_0xcf6e('0x0'));var path=require(_0xcf6e('0x1'));var timeout=require(_0xcf6e('0x2'));var express=require('express');var router=express[_0xcf6e('0x3')]();var fs_extra=require(_0xcf6e('0x4'));var auth=require(_0xcf6e('0x5'));var interaction=require(_0xcf6e('0x6'));var config=require(_0xcf6e('0x7'));var controller=require(_0xcf6e('0x8'));router[_0xcf6e('0x9')]('/',auth[_0xcf6e('0xa')](),controller[_0xcf6e('0xb')]);router[_0xcf6e('0x9')]('/:id',auth[_0xcf6e('0xa')](),controller[_0xcf6e('0xc')]);router[_0xcf6e('0x9')]('/:id/configurations',auth[_0xcf6e('0xa')](),controller[_0xcf6e('0xd')]);router['get'](_0xcf6e('0xe'),auth[_0xcf6e('0xa')](),controller[_0xcf6e('0xf')]);router[_0xcf6e('0x10')]('/',auth['isAuthenticated'](),controller[_0xcf6e('0x11')]);router[_0xcf6e('0x10')](_0xcf6e('0x12'),auth[_0xcf6e('0xa')](),controller['addConfiguration']);router[_0xcf6e('0x13')](_0xcf6e('0x14'),auth[_0xcf6e('0xa')](),controller[_0xcf6e('0x15')]);router['delete'](_0xcf6e('0x14'),auth[_0xcf6e('0xa')](),controller[_0xcf6e('0x16')]);module[_0xcf6e('0x17')]=router;
\ No newline at end of file
+var _0xae13=['delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update'];(function(_0x22ea01,_0x29bcaf){var _0x57fa1b=function(_0x1c576e){while(--_0x1c576e){_0x22ea01['push'](_0x22ea01['shift']());}};_0x57fa1b(++_0x29bcaf);}(_0xae13,0x154));var _0x3ae1=function(_0x3a376d,_0x8cda43){_0x3a376d=_0x3a376d-0x0;var _0x1ffca0=_0xae13[_0x3a376d];return _0x1ffca0;};'use strict';var multer=require(_0x3ae1('0x0'));var util=require(_0x3ae1('0x1'));var path=require(_0x3ae1('0x2'));var timeout=require(_0x3ae1('0x3'));var express=require(_0x3ae1('0x4'));var router=express[_0x3ae1('0x5')]();var fs_extra=require(_0x3ae1('0x6'));var auth=require(_0x3ae1('0x7'));var interaction=require(_0x3ae1('0x8'));var config=require(_0x3ae1('0x9'));var controller=require(_0x3ae1('0xa'));router[_0x3ae1('0xb')]('/',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0xd')]);router['get']('/:id',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0xe')]);router[_0x3ae1('0xb')](_0x3ae1('0xf'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x10')]);router[_0x3ae1('0xb')](_0x3ae1('0x11'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x12')]);router[_0x3ae1('0x13')]('/',auth['isAuthenticated'](),controller[_0x3ae1('0x14')]);router[_0x3ae1('0x13')](_0x3ae1('0xf'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x15')]);router[_0x3ae1('0x16')]('/:id',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x17')]);router[_0x3ae1('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x3ae1('0x19')]);module['exports']=router;
\ No newline at end of file
index 6153a98..901f191 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ab=['STRING','sequelize','exports'];(function(_0x3272ea,_0x1e5457){var _0x355315=function(_0x4674ec){while(--_0x4674ec){_0x3272ea['push'](_0x3272ea['shift']());}};_0x355315(++_0x1e5457);}(_0xf5ab,0x1f3));var _0xbf5a=function(_0x5aa66f,_0x22cb46){_0x5aa66f=_0x5aa66f-0x0;var _0x43d204=_0xf5ab[_0x5aa66f];return _0x43d204;};'use strict';var Sequelize=require(_0xbf5a('0x0'));module[_0xbf5a('0x1')]={'name':{'type':Sequelize[_0xbf5a('0x2')]},'description':{'type':Sequelize[_0xbf5a('0x2')]},'username':{'type':Sequelize[_0xbf5a('0x2')],'unique':'username'},'password':{'type':Sequelize[_0xbf5a('0x2')]},'email':{'type':Sequelize[_0xbf5a('0x2')]},'remoteUri':{'type':Sequelize[_0xbf5a('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xbf5a('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x9c96=['STRING','username','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c96,0x6a));var _0x69c9=function(_0x4995ad,_0x4e31b4){_0x4995ad=_0x4995ad-0x0;var _0x27de47=_0x9c96[_0x4995ad];return _0x27de47;};'use strict';var Sequelize=require(_0x69c9('0x0'));module[_0x69c9('0x1')]={'name':{'type':Sequelize[_0x69c9('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x69c9('0x2')],'unique':_0x69c9('0x3')},'password':{'type':Sequelize[_0x69c9('0x2')]},'email':{'type':Sequelize[_0x69c9('0x2')]},'remoteUri':{'type':Sequelize[_0x69c9('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x69c9('0x2')],'allowNull':![]}};
\ No newline at end of file
index efb1dd6..d02ae0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f3=['close_code','notify','severity','category','parent','caused_by','watch_list','upon_reject','child_incidents','number','resolved_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','cmdb_ci','impact','active','business_service','priority','sys_domain_path','time_worked','expected_start','opened_at','business_duration','group_list','reopened_time','caller_id','approval_set','subcategory','short_description','delivery_task','work_start','business_stc','additional_assignee_list','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','incident_state','urgency','problem_id','company','reassignment_count','activity_due','sla_due','due_date','reopen_count','escalation','location','password','email','serverUrl','slice','lastIndexOf','%s/api/now/doc/table/schema/','%s/api/now/table/','username','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','test','statusCode','stack','Wrong\x20credentials','True','true','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','error','name','send','index','map','ServicenowAccount','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','filters','options','find','create','body','destroy','getConfigurations','findOne','ServicenowConfiguration','filter','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','ServicenowField','made_sla','hold_reason','knowledge'];(function(_0x1e43be,_0x3f0eea){var _0xcc6ced=function(_0x1c86ff){while(--_0x1c86ff){_0x1e43be['push'](_0x1e43be['shift']());}};_0xcc6ced(++_0x3f0eea);}(_0x74f3,0x1b5));var _0x374f=function(_0x3ca368,_0xbca363){_0x3ca368=_0x3ca368-0x0;var _0x557fb9=_0x74f3[_0x3ca368];return _0x557fb9;};'use strict';var emlformat=require(_0x374f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x374f('0x1'));var jsonpatch=require(_0x374f('0x2'));var rp=require('request-promise');var moment=require(_0x374f('0x3'));var BPromise=require(_0x374f('0x4'));var Mustache=require(_0x374f('0x5'));var util=require(_0x374f('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x374f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x374f('0x8'));var crypto=require(_0x374f('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x374f('0xa'));var toCsv=require(_0x374f('0x7'));var querystring=require(_0x374f('0xb'));var Papa=require(_0x374f('0xc'));var Redis=require('ioredis');var authService=require(_0x374f('0xd'));var qs=require(_0x374f('0xe'));var as=require(_0x374f('0xf'));var hardwareService=require(_0x374f('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x374f('0x11'));var config=require(_0x374f('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x374f('0x13'))['db'];var integrations=require(_0x374f('0x14'));function respondWithStatusCode(_0xd58104,_0x4a33fd){_0x4a33fd=_0x4a33fd||0xcc;return function(_0x4378de){if(_0x4378de){return _0xd58104[_0x374f('0x15')](_0x4a33fd);}return _0xd58104['status'](_0x4a33fd)[_0x374f('0x16')]();};}function respondWithResult(_0x48855e,_0x321d2f){_0x321d2f=_0x321d2f||0xc8;return function(_0x47d4ab){if(_0x47d4ab){return _0x48855e[_0x374f('0x17')](_0x321d2f)[_0x374f('0x18')](_0x47d4ab);}};}function respondWithFilteredResult(_0x3f4404,_0x381457){return function(_0xc30fe5){if(_0xc30fe5){var _0x58ac9c=typeof _0x381457[_0x374f('0x19')]===_0x374f('0x1a')&&typeof _0x381457[_0x374f('0x1b')]===_0x374f('0x1a');var _0x379a69=_0xc30fe5[_0x374f('0x1c')];var _0x4b14b4=_0x58ac9c?0x0:_0x381457[_0x374f('0x19')];var _0x343157=_0x58ac9c?_0xc30fe5[_0x374f('0x1c')]:_0x381457['offset']+_0x381457[_0x374f('0x1b')];var _0x352a0f;if(_0x343157>=_0x379a69){_0x343157=_0x379a69;_0x352a0f=0xc8;}else{_0x352a0f=0xce;}_0x3f4404[_0x374f('0x17')](_0x352a0f);return _0x3f4404[_0x374f('0x1d')](_0x374f('0x1e'),_0x4b14b4+'-'+_0x343157+'/'+_0x379a69)['json'](_0xc30fe5);}return null;};}function patchUpdates(_0x292604){return function(_0x55eed4){try{jsonpatch[_0x374f('0x1f')](_0x55eed4,_0x292604,!![]);}catch(_0x53818c){return BPromise[_0x374f('0x20')](_0x53818c);}return _0x55eed4['save']();};}function saveUpdates(_0x517b81,_0x11bb7b){return function(_0x360e44){if(_0x360e44){return _0x360e44['update'](_0x517b81)[_0x374f('0x21')](function(_0x33578b){return _0x33578b;});}return null;};}function removeEntity(_0x4d9895,_0x1198c5){return function(_0x186678){if(_0x186678){return _0x186678['destroy']()[_0x374f('0x21')](function(){_0x4d9895[_0x374f('0x17')](0xcc)[_0x374f('0x16')]();});}};}function handleEntityNotFound(_0x120be3,_0x2d0b58){return function(_0x231988){if(!_0x231988){_0x120be3['sendStatus'](0x194);}return _0x231988;};}function handleError(_0x3a0374,_0x341eb3){_0x341eb3=_0x341eb3||0x1f4;return function(_0x170cca){logger[_0x374f('0x22')](_0x170cca['stack']);if(_0x170cca[_0x374f('0x23')]){delete _0x170cca[_0x374f('0x23')];}_0x3a0374[_0x374f('0x17')](_0x341eb3)[_0x374f('0x24')](_0x170cca);};}exports[_0x374f('0x25')]=function(_0x5f3b05,_0x1f8759){var _0x4fa808={},_0x25ee65={},_0x3f82e2={'count':0x0,'rows':[]};var _0x1be98f=_[_0x374f('0x26')](db[_0x374f('0x27')]['rawAttributes'],function(_0xfc2621){return{'name':_0xfc2621[_0x374f('0x28')],'type':_0xfc2621[_0x374f('0x29')]['key']};});_0x25ee65[_0x374f('0x2a')]=_[_0x374f('0x26')](_0x1be98f,_0x374f('0x23'));_0x25ee65[_0x374f('0x2b')]=_[_0x374f('0x2c')](_0x5f3b05[_0x374f('0x2b')]);_0x25ee65['filters']=_['intersection'](_0x25ee65[_0x374f('0x2a')],_0x25ee65[_0x374f('0x2b')]);_0x4fa808[_0x374f('0x2d')]=_[_0x374f('0x2e')](_0x25ee65[_0x374f('0x2a')],qs['fields'](_0x5f3b05['query'][_0x374f('0x2f')]));_0x4fa808[_0x374f('0x2d')]=_0x4fa808['attributes'][_0x374f('0x30')]?_0x4fa808[_0x374f('0x2d')]:_0x25ee65['model'];if(!_0x5f3b05[_0x374f('0x2b')][_0x374f('0x31')](_0x374f('0x32'))){_0x4fa808[_0x374f('0x1b')]=qs[_0x374f('0x1b')](_0x5f3b05[_0x374f('0x2b')][_0x374f('0x1b')]);_0x4fa808[_0x374f('0x19')]=qs[_0x374f('0x19')](_0x5f3b05[_0x374f('0x2b')][_0x374f('0x19')]);}_0x4fa808[_0x374f('0x33')]=qs[_0x374f('0x34')](_0x5f3b05[_0x374f('0x2b')][_0x374f('0x34')]);_0x4fa808[_0x374f('0x35')]=qs['filters'](_[_0x374f('0x36')](_0x5f3b05[_0x374f('0x2b')],_0x25ee65['filters']),_0x1be98f);if(_0x5f3b05[_0x374f('0x2b')]['filter']){_0x4fa808[_0x374f('0x35')]=_[_0x374f('0x37')](_0x4fa808[_0x374f('0x35')],{'$or':_[_0x374f('0x26')](_0x1be98f,function(_0x541be8){if(_0x541be8['type']!==_0x374f('0x38')){var _0x35e8c6={};_0x35e8c6[_0x541be8['name']]={'$like':'%'+_0x5f3b05[_0x374f('0x2b')]['filter']+'%'};return _0x35e8c6;}})});}_0x4fa808=_[_0x374f('0x37')]({},_0x4fa808,_0x5f3b05['options']);var _0x3fd277={'where':_0x4fa808['where']};return db[_0x374f('0x27')][_0x374f('0x1c')](_0x3fd277)['then'](function(_0x1ff6c4){_0x3f82e2['count']=_0x1ff6c4;if(_0x5f3b05[_0x374f('0x2b')][_0x374f('0x39')]){_0x4fa808[_0x374f('0x3a')]=[{'all':!![]}];}return db[_0x374f('0x27')][_0x374f('0x3b')](_0x4fa808);})[_0x374f('0x21')](function(_0xf2d836){_0x3f82e2[_0x374f('0x3c')]=_0xf2d836;return _0x3f82e2;})[_0x374f('0x21')](respondWithFilteredResult(_0x1f8759,_0x4fa808))[_0x374f('0x3d')](handleError(_0x1f8759,null));};exports[_0x374f('0x3e')]=function(_0x339c4c,_0x3432b1){var _0x4912d2={'raw':![],'where':{'id':_0x339c4c[_0x374f('0x3f')]['id']}},_0x1672f5={};_0x1672f5[_0x374f('0x2a')]=_[_0x374f('0x2c')](db[_0x374f('0x27')][_0x374f('0x40')]);_0x1672f5['query']=_[_0x374f('0x2c')](_0x339c4c[_0x374f('0x2b')]);_0x1672f5[_0x374f('0x41')]=_[_0x374f('0x2e')](_0x1672f5[_0x374f('0x2a')],_0x1672f5[_0x374f('0x2b')]);_0x4912d2[_0x374f('0x2d')]=_[_0x374f('0x2e')](_0x1672f5[_0x374f('0x2a')],qs[_0x374f('0x2f')](_0x339c4c['query']['fields']));_0x4912d2[_0x374f('0x2d')]=_0x4912d2[_0x374f('0x2d')]['length']?_0x4912d2[_0x374f('0x2d')]:_0x1672f5[_0x374f('0x2a')];if(_0x339c4c[_0x374f('0x2b')][_0x374f('0x39')]){_0x4912d2[_0x374f('0x3a')]=[{'all':!![]}];}_0x4912d2=_[_0x374f('0x37')]({},_0x4912d2,_0x339c4c[_0x374f('0x42')]);return db[_0x374f('0x27')][_0x374f('0x43')](_0x4912d2)['then'](handleEntityNotFound(_0x3432b1,null))[_0x374f('0x21')](respondWithResult(_0x3432b1,null))[_0x374f('0x3d')](handleError(_0x3432b1,null));};exports[_0x374f('0x44')]=function(_0x3c52e9,_0x3efd20){return db[_0x374f('0x27')][_0x374f('0x44')](_0x3c52e9[_0x374f('0x45')],{})[_0x374f('0x21')](respondWithResult(_0x3efd20,0xc9))['catch'](handleError(_0x3efd20,null));};exports['update']=function(_0x1ec2b9,_0x5a2898){if(_0x1ec2b9['body']['id']){delete _0x1ec2b9[_0x374f('0x45')]['id'];}return db[_0x374f('0x27')][_0x374f('0x43')]({'where':{'id':_0x1ec2b9[_0x374f('0x3f')]['id']}})[_0x374f('0x21')](handleEntityNotFound(_0x5a2898,null))[_0x374f('0x21')](saveUpdates(_0x1ec2b9[_0x374f('0x45')],null))['then'](respondWithResult(_0x5a2898,null))[_0x374f('0x3d')](handleError(_0x5a2898,null));};exports[_0x374f('0x46')]=function(_0xc61cfd,_0xd96d35){return db['ServicenowAccount'][_0x374f('0x43')]({'where':{'id':_0xc61cfd[_0x374f('0x3f')]['id']}})['then'](handleEntityNotFound(_0xd96d35,null))[_0x374f('0x21')](removeEntity(_0xd96d35,null))[_0x374f('0x3d')](handleError(_0xd96d35,null));};exports[_0x374f('0x47')]=function(_0x5baa85,_0x448fea,_0x37aafc){var _0x331ea1={};var _0x5a2f63={};var _0x17e97a;var _0xa8753a;return db[_0x374f('0x27')][_0x374f('0x48')]({'where':{'id':_0x5baa85[_0x374f('0x3f')]['id']}})[_0x374f('0x21')](handleEntityNotFound(_0x448fea,null))[_0x374f('0x21')](function(_0x3f97bf){if(_0x3f97bf){_0x17e97a=_0x3f97bf;_0x5a2f63[_0x374f('0x2a')]=_[_0x374f('0x2c')](db[_0x374f('0x49')][_0x374f('0x40')]);_0x5a2f63[_0x374f('0x2b')]=_[_0x374f('0x2c')](_0x5baa85[_0x374f('0x2b')]);_0x5a2f63['filters']=_[_0x374f('0x2e')](_0x5a2f63['model'],_0x5a2f63[_0x374f('0x2b')]);_0x331ea1[_0x374f('0x2d')]=_['intersection'](_0x5a2f63[_0x374f('0x2a')],qs[_0x374f('0x2f')](_0x5baa85['query'][_0x374f('0x2f')]));_0x331ea1[_0x374f('0x2d')]=_0x331ea1[_0x374f('0x2d')][_0x374f('0x30')]?_0x331ea1[_0x374f('0x2d')]:_0x5a2f63[_0x374f('0x2a')];_0x331ea1[_0x374f('0x33')]=qs[_0x374f('0x34')](_0x5baa85['query'][_0x374f('0x34')]);_0x331ea1[_0x374f('0x35')]=qs[_0x374f('0x41')](_[_0x374f('0x36')](_0x5baa85[_0x374f('0x2b')],_0x5a2f63['filters']));if(_0x5baa85['query'][_0x374f('0x4a')]){_0x331ea1['where']=_[_0x374f('0x37')](_0x331ea1['where'],{'$or':_[_0x374f('0x26')](_0x331ea1['attributes'],function(_0x115c2b){var _0x4064ae={};_0x4064ae[_0x115c2b]={'$like':'%'+_0x5baa85[_0x374f('0x2b')][_0x374f('0x4a')]+'%'};return _0x4064ae;})});}_0x331ea1=_[_0x374f('0x37')]({},_0x331ea1,_0x5baa85['options']);return _0x17e97a[_0x374f('0x47')](_0x331ea1);}})[_0x374f('0x21')](function(_0x5a5165){if(_0x5a5165){_0xa8753a=_0x5a5165[_0x374f('0x30')];if(!_0x5baa85['query']['hasOwnProperty'](_0x374f('0x32'))){_0x331ea1[_0x374f('0x1b')]=qs[_0x374f('0x1b')](_0x5baa85[_0x374f('0x2b')][_0x374f('0x1b')]);_0x331ea1[_0x374f('0x19')]=qs[_0x374f('0x19')](_0x5baa85[_0x374f('0x2b')][_0x374f('0x19')]);}return _0x17e97a[_0x374f('0x47')](_0x331ea1);}})[_0x374f('0x21')](function(_0x30bf71){if(_0x30bf71){return _0x30bf71?{'count':_0xa8753a,'rows':_0x30bf71}:null;}})[_0x374f('0x21')](respondWithResult(_0x448fea,null))[_0x374f('0x3d')](handleError(_0x448fea,null));};exports[_0x374f('0x4b')]=function(_0x5bc289,_0x4cfa45,_0x856afb){if(_0x5bc289[_0x374f('0x45')]['id']){delete _0x5bc289['body']['id'];}return db[_0x374f('0x27')][_0x374f('0x48')]({'where':{'id':_0x5bc289[_0x374f('0x3f')]['id']}})[_0x374f('0x21')](handleEntityNotFound(_0x4cfa45,null))['then'](function(_0x2abba9){if(_0x2abba9){_0x5bc289[_0x374f('0x45')][_0x374f('0x4c')]=_0x2abba9['id'];_0x5bc289[_0x374f('0x45')][_0x374f('0x4d')]=integrations['getSubjects'](_0x5bc289['body'][_0x374f('0x4e')],_0x5bc289[_0x374f('0x45')][_0x374f('0x29')]);_0x5bc289[_0x374f('0x45')][_0x374f('0x4f')]=integrations[_0x374f('0x50')](_0x5bc289[_0x374f('0x45')][_0x374f('0x4e')],_0x5bc289[_0x374f('0x45')][_0x374f('0x29')]);return db[_0x374f('0x49')]['create'](_0x5bc289[_0x374f('0x45')],{'include':[{'model':db[_0x374f('0x51')],'as':_0x374f('0x4d')},{'model':db[_0x374f('0x51')],'as':_0x374f('0x4f')}]});}return null;})[_0x374f('0x21')](respondWithResult(_0x4cfa45,null))[_0x374f('0x3d')](handleError(_0x4cfa45,null));};exports['getFields']=function(_0x5d109c,_0x3bf3ec,_0x36655a){var _0x5c3bbc=[_0x374f('0x52'),_0x374f('0x53'),_0x374f('0x54'),'subcategory',_0x374f('0x55'),_0x374f('0x56'),'incident_state',_0x374f('0x57'),_0x374f('0x58')];var _0x13854d=[_0x374f('0x59'),'made_sla',_0x374f('0x5a'),_0x374f('0x5b'),_0x374f('0x5c'),'sys_updated_on',_0x374f('0x5d'),_0x374f('0x53'),'approval_history',_0x374f('0x5e'),_0x374f('0x5f'),'sys_updated_by',_0x374f('0x60'),_0x374f('0x61'),_0x374f('0x62'),_0x374f('0x63'),_0x374f('0x64'),_0x374f('0x65'),_0x374f('0x54'),_0x374f('0x33'),_0x374f('0x66'),'closed_at',_0x374f('0x67'),'delivery_plan',_0x374f('0x68'),_0x374f('0x69'),'work_notes_list',_0x374f('0x6a'),_0x374f('0x6b'),_0x374f('0x6c'),'rfc',_0x374f('0x6d'),_0x374f('0x6e'),_0x374f('0x6f'),_0x374f('0x70'),_0x374f('0x71'),'work_end',_0x374f('0x72'),'resolved_at',_0x374f('0x73'),_0x374f('0x74'),_0x374f('0x75'),'work_notes',_0x374f('0x76'),_0x374f('0x55'),'correlation_display',_0x374f('0x77'),_0x374f('0x78'),'assignment_group',_0x374f('0x79'),_0x374f('0x7a'),'description','calendar_duration',_0x374f('0x56'),'sys_class_name',_0x374f('0x7b'),_0x374f('0x7c'),_0x374f('0x7d'),_0x374f('0x7e'),_0x374f('0x7f'),_0x374f('0x80'),_0x374f('0x81'),_0x374f('0x82'),_0x374f('0x83'),_0x374f('0x84'),_0x374f('0x85'),_0x374f('0x86'),_0x374f('0x87'),'assigned_to',_0x374f('0x57'),'comments',_0x374f('0x88'),'approval','comments_and_work_notes',_0x374f('0x89'),'sys_mod_count',_0x374f('0x8a'),'sys_tags',_0x374f('0x8b'),'upon_approval','correlation_id',_0x374f('0x8c'),_0x374f('0x58')];var _0xeae61e='';var _0x204709='';var _0x58ce9f=[];var _0xf2263f='';var _0x4aadd6='';var _0x4719a1=[];var _0x2421d8='';var _0x316894='';var _0x9343be={};var _0x24575f='';return db[_0x374f('0x27')][_0x374f('0x48')]({'where':{'id':_0x5d109c[_0x374f('0x3f')]['id']},'attributes':['id','username',_0x374f('0x8d'),_0x374f('0x8e'),'remoteUri',_0x374f('0x8f')]})[_0x374f('0x21')](handleEntityNotFound(_0x3bf3ec,null))[_0x374f('0x21')](function(_0x5bd302){if(_0x5bd302){_0x24575f=_0x5bd302['remoteUri'];var _0x1edd16=_0x24575f[_0x374f('0x90')](-0x1);if(_0x1edd16==='/'){_0x24575f=_0x24575f['substring'](0x0,_0x24575f[_0x374f('0x91')](_0x1edd16));}_0x316894=util['format'](_0x374f('0x92'),_0x24575f);_0x2421d8=util['format'](_0x374f('0x93'),_0x24575f);_0x9343be={'user':_0x5bd302[_0x374f('0x94')],'pass':_0x5bd302[_0x374f('0x8d')]};var _0xad8592={'method':_0x374f('0x95'),'uri':_0x316894+_0x374f('0x96'),'auth':_0x9343be,'json':!![]};return rp(_0xad8592);}})[_0x374f('0x21')](function(_0x24b441){if(_0x24b441[_0x374f('0x97')][_0x374f('0x30')]>0x0){_0xeae61e=_0x24b441[_0x374f('0x97')];}console[_0x374f('0x98')](_0x374f('0x99'),_0xeae61e);_0x4719a1=[];_0x204709=Object[_0x374f('0x9a')]([],_0xeae61e);_[_0x374f('0x9b')](_0x204709,function(_0x2a4fe4){return!_0x5c3bbc['includes'](_0x2a4fe4[_0x374f('0x23')]);});_0x204709[_0x374f('0x9c')](function(_0x175f65){var _0x14d5e1=createFieldObject(_0x2421d8,_0x9343be,_0x175f65['internalType'],_0x175f65[_0x374f('0x23')],_0x175f65[_0x374f('0x9d')],![]);_0x4719a1[_0x374f('0x9e')](_0x14d5e1);});return Promise[_0x374f('0x9f')](_0x4719a1);})['then'](function(_0x1b4d6a){_0x58ce9f=_0x1b4d6a;_0xf2263f=Object[_0x374f('0x9a')]([],_0xeae61e);console[_0x374f('0x98')](_0x374f('0xa0'),_0xeae61e);_[_0x374f('0x9b')](_0xf2263f,function(_0x43c3d4){return _0x13854d['includes'](_0x43c3d4[_0x374f('0x23')]);});console['log'](_0x374f('0xa1'),_0xf2263f);_0x4719a1=[];_0xf2263f[_0x374f('0x9c')](function(_0x19aebf){var _0x6361dd=createFieldObject(_0x2421d8,_0x9343be,_0x19aebf['internalType'],_0x19aebf[_0x374f('0x23')],_0x19aebf[_0x374f('0x9d')],!![]);_0x4719a1[_0x374f('0x9e')](_0x6361dd);});return Promise[_0x374f('0x9f')](_0x4719a1);})[_0x374f('0x21')](function(_0x343f69){_0x4aadd6=_0x343f69;var _0x103e49=_0x58ce9f[_0x374f('0xa2')](_0x4aadd6);return{'count':_0x103e49[_0x374f('0x30')],'rows':_0x103e49};})[_0x374f('0x21')](respondWithResult(_0x3bf3ec,null))['catch'](function(_0x459aee){console['log'](_0x374f('0xa3')+_0x459aee);var _0x7cb3c=_0x5d109c[_0x374f('0x2b')][_0x374f('0xa4')]?0x1f4:_0x459aee[_0x374f('0xa5')]||0x1f4;logger[_0x374f('0x22')](_0x459aee[_0x374f('0xa6')]);delete _0x459aee[_0x374f('0x23')];if(_0x7cb3c===0x191){_0x7cb3c=0x190;}_0x3bf3ec[_0x374f('0x17')](_0x7cb3c)['send'](_0x5d109c[_0x374f('0x2b')]['test']?{'message':_0x374f('0xa7'),'statusCode':_0x459aee[_0x374f('0xa5')]}:_0x459aee);});};function createFieldObject(_0x115952,_0x26a4aa,_0x4e95b9,_0x204aa8,_0x2e04ca,_0xebca45){return new Promise(function(_0x583338,_0x16f746){var _0x3dee78={'id':_0x204aa8,'name':_0x2e04ca,'custom':_0xebca45};if(_0x4e95b9==='boolean'){_0x3dee78['options']=[{'name':_0x374f('0xa8'),'value':_0x374f('0xa9')},{'name':'False','value':_0x374f('0xaa')}];_0x583338(_0x3dee78);}else{var _0x5d66e4={'method':_0x374f('0x95'),'uri':_0x115952+_0x374f('0xab')+_0x204aa8,'auth':_0x26a4aa,'json':!![]};return rp(_0x5d66e4)[_0x374f('0x21')](function(_0x554a6a){var _0x5bace3=[];if(_0x554a6a[_0x374f('0x97')][_0x374f('0x30')]>0x0){_0x554a6a[_0x374f('0x97')][_0x374f('0x9c')](function(_0x5ee244){if(_0x5ee244[_0x374f('0xac')]==='false'){var _0x3b58d4={'name':_0x5ee244[_0x374f('0x9d')],'value':_0x5ee244[_0x374f('0xad')]};_0x5bace3['push'](_0x3b58d4);}});}_0x3dee78[_0x374f('0x42')]=_0x5bace3;if(_0x3dee78[_0x374f('0x42')]['length']>0x0){_0x583338(_0x3dee78);}else{if(_0xebca45==![]){_0x583338();}else{_0x583338(_0x3dee78);}}});}});}
\ No newline at end of file
+var _0x44d9=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','show','params','includeAll','find','catch','create','body','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','close_code','notify','incident_state','category','caused_by','watch_list','upon_reject','approval_history','number','resolved_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','work_end','resolved_at','caller_id','approval_set','subcategory','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','assigned_to','severity','comments','sla_due','approval','comments_and_work_notes','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','label','push','concat','ServiceNow\x20error:\x20','test','statusCode','send','Wrong\x20credentials','boolean','True','true','false','value','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','ServicenowAccount','rawAttributes','fieldName'];(function(_0x52e954,_0x52ec44){var _0x16e4a3=function(_0x438eb0){while(--_0x438eb0){_0x52e954['push'](_0x52e954['shift']());}};_0x16e4a3(++_0x52ec44);}(_0x44d9,0x14f));var _0x944d=function(_0x31c0a5,_0x1703ec){_0x31c0a5=_0x31c0a5-0x0;var _0x65b250=_0x44d9[_0x31c0a5];return _0x65b250;};'use strict';var emlformat=require(_0x944d('0x0'));var rimraf=require(_0x944d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x944d('0x2'));var moment=require(_0x944d('0x3'));var BPromise=require(_0x944d('0x4'));var Mustache=require(_0x944d('0x5'));var util=require(_0x944d('0x6'));var path=require(_0x944d('0x7'));var sox=require('sox');var csv=require(_0x944d('0x8'));var ejs=require(_0x944d('0x9'));var fs=require('fs');var fs_extra=require(_0x944d('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x944d('0xb'));var jsforce=require(_0x944d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x944d('0x8'));var querystring=require(_0x944d('0xd'));var Papa=require('papaparse');var Redis=require(_0x944d('0xe'));var authService=require(_0x944d('0xf'));var qs=require(_0x944d('0x10'));var as=require(_0x944d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x944d('0x12'))(_0x944d('0x13'));var utils=require(_0x944d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x944d('0x15'));var db=require(_0x944d('0x16'))['db'];var integrations=require(_0x944d('0x17'));function respondWithStatusCode(_0x2b9595,_0x3773bc){_0x3773bc=_0x3773bc||0xcc;return function(_0x3bf5f7){if(_0x3bf5f7){return _0x2b9595[_0x944d('0x18')](_0x3773bc);}return _0x2b9595[_0x944d('0x19')](_0x3773bc)['end']();};}function respondWithResult(_0x5b4fbf,_0x4b8352){_0x4b8352=_0x4b8352||0xc8;return function(_0x282394){if(_0x282394){return _0x5b4fbf[_0x944d('0x19')](_0x4b8352)[_0x944d('0x1a')](_0x282394);}};}function respondWithFilteredResult(_0x17aa11,_0x1a41c0){return function(_0x4a3577){if(_0x4a3577){var _0x1bb82e=typeof _0x1a41c0[_0x944d('0x1b')]===_0x944d('0x1c')&&typeof _0x1a41c0[_0x944d('0x1d')]==='undefined';var _0x49dc99=_0x4a3577[_0x944d('0x1e')];var _0x3158a4=_0x1bb82e?0x0:_0x1a41c0[_0x944d('0x1b')];var _0x4a0eba=_0x1bb82e?_0x4a3577[_0x944d('0x1e')]:_0x1a41c0['offset']+_0x1a41c0[_0x944d('0x1d')];var _0x4fbdf4;if(_0x4a0eba>=_0x49dc99){_0x4a0eba=_0x49dc99;_0x4fbdf4=0xc8;}else{_0x4fbdf4=0xce;}_0x17aa11[_0x944d('0x19')](_0x4fbdf4);return _0x17aa11[_0x944d('0x1f')](_0x944d('0x20'),_0x3158a4+'-'+_0x4a0eba+'/'+_0x49dc99)[_0x944d('0x1a')](_0x4a3577);}return null;};}function patchUpdates(_0x7056b){return function(_0x418fab){try{jsonpatch[_0x944d('0x21')](_0x418fab,_0x7056b,!![]);}catch(_0x4a784b){return BPromise[_0x944d('0x22')](_0x4a784b);}return _0x418fab[_0x944d('0x23')]();};}function saveUpdates(_0x5a9a7a,_0x1afd20){return function(_0x50995d){if(_0x50995d){return _0x50995d[_0x944d('0x24')](_0x5a9a7a)[_0x944d('0x25')](function(_0x3dd117){return _0x3dd117;});}return null;};}function removeEntity(_0x1ce35b,_0xceb0f4){return function(_0x8a8531){if(_0x8a8531){return _0x8a8531[_0x944d('0x26')]()[_0x944d('0x25')](function(){_0x1ce35b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x392827,_0x5a35d3){return function(_0x5ca6f2){if(!_0x5ca6f2){_0x392827['sendStatus'](0x194);}return _0x5ca6f2;};}function handleError(_0x229f55,_0x168f73){_0x168f73=_0x168f73||0x1f4;return function(_0x24a671){logger[_0x944d('0x27')](_0x24a671[_0x944d('0x28')]);if(_0x24a671[_0x944d('0x29')]){delete _0x24a671['name'];}_0x229f55[_0x944d('0x19')](_0x168f73)['send'](_0x24a671);};}exports[_0x944d('0x2a')]=function(_0xf2bd39,_0x25b1dc){var _0x54b936={},_0x290332={},_0x37c3d5={'count':0x0,'rows':[]};var _0x435c20=_[_0x944d('0x2b')](db[_0x944d('0x2c')][_0x944d('0x2d')],function(_0x23e9f4){return{'name':_0x23e9f4[_0x944d('0x2e')],'type':_0x23e9f4[_0x944d('0x2f')][_0x944d('0x30')]};});_0x290332[_0x944d('0x31')]=_['map'](_0x435c20,_0x944d('0x29'));_0x290332[_0x944d('0x32')]=_[_0x944d('0x33')](_0xf2bd39[_0x944d('0x32')]);_0x290332[_0x944d('0x34')]=_[_0x944d('0x35')](_0x290332[_0x944d('0x31')],_0x290332[_0x944d('0x32')]);_0x54b936[_0x944d('0x36')]=_[_0x944d('0x35')](_0x290332['model'],qs[_0x944d('0x37')](_0xf2bd39[_0x944d('0x32')][_0x944d('0x37')]));_0x54b936[_0x944d('0x36')]=_0x54b936[_0x944d('0x36')][_0x944d('0x38')]?_0x54b936[_0x944d('0x36')]:_0x290332[_0x944d('0x31')];if(!_0xf2bd39[_0x944d('0x32')][_0x944d('0x39')](_0x944d('0x3a'))){_0x54b936[_0x944d('0x1d')]=qs[_0x944d('0x1d')](_0xf2bd39[_0x944d('0x32')]['limit']);_0x54b936[_0x944d('0x1b')]=qs[_0x944d('0x1b')](_0xf2bd39[_0x944d('0x32')][_0x944d('0x1b')]);}_0x54b936[_0x944d('0x3b')]=qs[_0x944d('0x3c')](_0xf2bd39[_0x944d('0x32')]['sort']);_0x54b936[_0x944d('0x3d')]=qs['filters'](_[_0x944d('0x3e')](_0xf2bd39[_0x944d('0x32')],_0x290332[_0x944d('0x34')]),_0x435c20);if(_0xf2bd39[_0x944d('0x32')][_0x944d('0x3f')]){_0x54b936['where']=_[_0x944d('0x40')](_0x54b936[_0x944d('0x3d')],{'$or':_[_0x944d('0x2b')](_0x435c20,function(_0x22af9f){if(_0x22af9f[_0x944d('0x2f')]!=='VIRTUAL'){var _0x5c6121={};_0x5c6121[_0x22af9f[_0x944d('0x29')]]={'$like':'%'+_0xf2bd39[_0x944d('0x32')][_0x944d('0x3f')]+'%'};return _0x5c6121;}})});}_0x54b936=_[_0x944d('0x40')]({},_0x54b936,_0xf2bd39[_0x944d('0x41')]);var _0x30cbc7={'where':_0x54b936[_0x944d('0x3d')]};return db[_0x944d('0x2c')][_0x944d('0x1e')](_0x30cbc7)[_0x944d('0x25')](function(_0x1e32d7){_0x37c3d5[_0x944d('0x1e')]=_0x1e32d7;if(_0xf2bd39[_0x944d('0x32')]['includeAll']){_0x54b936[_0x944d('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x944d('0x43')](_0x54b936);})[_0x944d('0x25')](function(_0x77ff3d){_0x37c3d5['rows']=_0x77ff3d;return _0x37c3d5;})[_0x944d('0x25')](respondWithFilteredResult(_0x25b1dc,_0x54b936))['catch'](handleError(_0x25b1dc,null));};exports[_0x944d('0x44')]=function(_0x288979,_0x31ff74){var _0x483362={'raw':![],'where':{'id':_0x288979[_0x944d('0x45')]['id']}},_0x5e6752={};_0x5e6752[_0x944d('0x31')]=_[_0x944d('0x33')](db['ServicenowAccount'][_0x944d('0x2d')]);_0x5e6752[_0x944d('0x32')]=_[_0x944d('0x33')](_0x288979[_0x944d('0x32')]);_0x5e6752[_0x944d('0x34')]=_[_0x944d('0x35')](_0x5e6752[_0x944d('0x31')],_0x5e6752[_0x944d('0x32')]);_0x483362[_0x944d('0x36')]=_[_0x944d('0x35')](_0x5e6752[_0x944d('0x31')],qs[_0x944d('0x37')](_0x288979[_0x944d('0x32')][_0x944d('0x37')]));_0x483362[_0x944d('0x36')]=_0x483362[_0x944d('0x36')][_0x944d('0x38')]?_0x483362[_0x944d('0x36')]:_0x5e6752[_0x944d('0x31')];if(_0x288979[_0x944d('0x32')][_0x944d('0x46')]){_0x483362[_0x944d('0x42')]=[{'all':!![]}];}_0x483362=_[_0x944d('0x40')]({},_0x483362,_0x288979[_0x944d('0x41')]);return db[_0x944d('0x2c')][_0x944d('0x47')](_0x483362)['then'](handleEntityNotFound(_0x31ff74,null))['then'](respondWithResult(_0x31ff74,null))[_0x944d('0x48')](handleError(_0x31ff74,null));};exports[_0x944d('0x49')]=function(_0x5ae6a4,_0x27386e){return db[_0x944d('0x2c')]['create'](_0x5ae6a4[_0x944d('0x4a')],{})[_0x944d('0x25')](respondWithResult(_0x27386e,0xc9))[_0x944d('0x48')](handleError(_0x27386e,null));};exports[_0x944d('0x24')]=function(_0x5c3130,_0x3054ab){if(_0x5c3130[_0x944d('0x4a')]['id']){delete _0x5c3130[_0x944d('0x4a')]['id'];}return db[_0x944d('0x2c')]['find']({'where':{'id':_0x5c3130[_0x944d('0x45')]['id']}})[_0x944d('0x25')](handleEntityNotFound(_0x3054ab,null))[_0x944d('0x25')](saveUpdates(_0x5c3130[_0x944d('0x4a')],null))[_0x944d('0x25')](respondWithResult(_0x3054ab,null))[_0x944d('0x48')](handleError(_0x3054ab,null));};exports[_0x944d('0x26')]=function(_0x172ce9,_0xe4c85){return db[_0x944d('0x2c')][_0x944d('0x47')]({'where':{'id':_0x172ce9['params']['id']}})[_0x944d('0x25')](handleEntityNotFound(_0xe4c85,null))[_0x944d('0x25')](removeEntity(_0xe4c85,null))['catch'](handleError(_0xe4c85,null));};exports[_0x944d('0x4b')]=function(_0x345248,_0x364206,_0x53b732){var _0x1649cb={};var _0x70a5ad={};var _0x307ef2;var _0x5409e7;return db[_0x944d('0x2c')][_0x944d('0x4c')]({'where':{'id':_0x345248[_0x944d('0x45')]['id']}})[_0x944d('0x25')](handleEntityNotFound(_0x364206,null))[_0x944d('0x25')](function(_0x217a11){if(_0x217a11){_0x307ef2=_0x217a11;_0x70a5ad[_0x944d('0x31')]=_['keys'](db[_0x944d('0x4d')][_0x944d('0x2d')]);_0x70a5ad['query']=_['keys'](_0x345248[_0x944d('0x32')]);_0x70a5ad[_0x944d('0x34')]=_[_0x944d('0x35')](_0x70a5ad['model'],_0x70a5ad['query']);_0x1649cb[_0x944d('0x36')]=_[_0x944d('0x35')](_0x70a5ad['model'],qs[_0x944d('0x37')](_0x345248[_0x944d('0x32')][_0x944d('0x37')]));_0x1649cb[_0x944d('0x36')]=_0x1649cb[_0x944d('0x36')][_0x944d('0x38')]?_0x1649cb[_0x944d('0x36')]:_0x70a5ad[_0x944d('0x31')];_0x1649cb[_0x944d('0x3b')]=qs[_0x944d('0x3c')](_0x345248[_0x944d('0x32')][_0x944d('0x3c')]);_0x1649cb[_0x944d('0x3d')]=qs[_0x944d('0x34')](_[_0x944d('0x3e')](_0x345248[_0x944d('0x32')],_0x70a5ad[_0x944d('0x34')]));if(_0x345248[_0x944d('0x32')][_0x944d('0x3f')]){_0x1649cb[_0x944d('0x3d')]=_[_0x944d('0x40')](_0x1649cb[_0x944d('0x3d')],{'$or':_[_0x944d('0x2b')](_0x1649cb[_0x944d('0x36')],function(_0x16f89a){var _0x207485={};_0x207485[_0x16f89a]={'$like':'%'+_0x345248['query'][_0x944d('0x3f')]+'%'};return _0x207485;})});}_0x1649cb=_['merge']({},_0x1649cb,_0x345248[_0x944d('0x41')]);return _0x307ef2[_0x944d('0x4b')](_0x1649cb);}})['then'](function(_0x234640){if(_0x234640){_0x5409e7=_0x234640[_0x944d('0x38')];if(!_0x345248[_0x944d('0x32')]['hasOwnProperty'](_0x944d('0x3a'))){_0x1649cb['limit']=qs[_0x944d('0x1d')](_0x345248[_0x944d('0x32')][_0x944d('0x1d')]);_0x1649cb[_0x944d('0x1b')]=qs[_0x944d('0x1b')](_0x345248[_0x944d('0x32')][_0x944d('0x1b')]);}return _0x307ef2[_0x944d('0x4b')](_0x1649cb);}})['then'](function(_0x50826a){if(_0x50826a){return _0x50826a?{'count':_0x5409e7,'rows':_0x50826a}:null;}})['then'](respondWithResult(_0x364206,null))[_0x944d('0x48')](handleError(_0x364206,null));};exports[_0x944d('0x4e')]=function(_0x2fdc52,_0xebdd9b,_0x245040){if(_0x2fdc52[_0x944d('0x4a')]['id']){delete _0x2fdc52[_0x944d('0x4a')]['id'];}return db[_0x944d('0x2c')]['findOne']({'where':{'id':_0x2fdc52[_0x944d('0x45')]['id']}})[_0x944d('0x25')](handleEntityNotFound(_0xebdd9b,null))[_0x944d('0x25')](function(_0x5acc11){if(_0x5acc11){_0x2fdc52['body'][_0x944d('0x4f')]=_0x5acc11['id'];_0x2fdc52['body'][_0x944d('0x50')]=integrations[_0x944d('0x51')](_0x2fdc52[_0x944d('0x4a')]['channel'],_0x2fdc52['body'][_0x944d('0x2f')]);_0x2fdc52[_0x944d('0x4a')]['Descriptions']=integrations['getDescriptions'](_0x2fdc52[_0x944d('0x4a')][_0x944d('0x52')],_0x2fdc52[_0x944d('0x4a')][_0x944d('0x2f')]);return db[_0x944d('0x4d')][_0x944d('0x49')](_0x2fdc52[_0x944d('0x4a')],{'include':[{'model':db[_0x944d('0x53')],'as':_0x944d('0x50')},{'model':db[_0x944d('0x53')],'as':_0x944d('0x54')}]});}return null;})[_0x944d('0x25')](respondWithResult(_0xebdd9b,null))[_0x944d('0x48')](handleError(_0xebdd9b,null));};exports[_0x944d('0x55')]=function(_0x45d577,_0x127d86,_0x4f2b34){var _0x11189b=[_0x944d('0x56'),_0x944d('0x57'),_0x944d('0x58'),'subcategory',_0x944d('0x59'),_0x944d('0x5a'),_0x944d('0x5b'),'severity',_0x944d('0x5c')];var _0x5dd061=['parent',_0x944d('0x56'),_0x944d('0x5d'),_0x944d('0x5e'),_0x944d('0x5f'),'sys_updated_on','child_incidents',_0x944d('0x57'),_0x944d('0x60'),_0x944d('0x61'),_0x944d('0x62'),'sys_updated_by',_0x944d('0x63'),_0x944d('0x64'),_0x944d('0x65'),_0x944d('0x66'),_0x944d('0x67'),_0x944d('0x68'),_0x944d('0x58'),_0x944d('0x3b'),_0x944d('0x69'),_0x944d('0x6a'),_0x944d('0x6b'),_0x944d('0x6c'),_0x944d('0x6d'),'active',_0x944d('0x6e'),_0x944d('0x6f'),_0x944d('0x70'),_0x944d('0x71'),_0x944d('0x72'),_0x944d('0x73'),_0x944d('0x74'),_0x944d('0x75'),_0x944d('0x76'),'group_list',_0x944d('0x77'),'reopened_time',_0x944d('0x78'),_0x944d('0x79'),_0x944d('0x7a'),_0x944d('0x7b'),_0x944d('0x7c'),_0x944d('0x7d'),_0x944d('0x59'),_0x944d('0x7e'),_0x944d('0x7f'),_0x944d('0x80'),_0x944d('0x81'),_0x944d('0x82'),_0x944d('0x83'),_0x944d('0x84'),_0x944d('0x85'),'notify',_0x944d('0x86'),_0x944d('0x87'),_0x944d('0x88'),_0x944d('0x89'),_0x944d('0x8a'),_0x944d('0x8b'),_0x944d('0x8c'),_0x944d('0x8d'),_0x944d('0x5b'),_0x944d('0x8e'),_0x944d('0x8f'),_0x944d('0x90'),_0x944d('0x91'),'activity_due',_0x944d('0x92'),_0x944d('0x93'),_0x944d('0x94'),_0x944d('0x95'),_0x944d('0x96'),_0x944d('0x97'),'due_date','sys_mod_count',_0x944d('0x98'),_0x944d('0x99'),_0x944d('0x9a'),_0x944d('0x9b'),_0x944d('0x9c'),'location',_0x944d('0x5c')];var _0x40e46f='';var _0x5d06a2='';var _0x364b9f=[];var _0x2e2c14='';var _0x1ee1ff='';var _0x299ab2=[];var _0x5cea6e='';var _0x48b6a8='';var _0x7806b8={};var _0x3a2372='';return db[_0x944d('0x2c')][_0x944d('0x4c')]({'where':{'id':_0x45d577[_0x944d('0x45')]['id']},'attributes':['id',_0x944d('0x9d'),_0x944d('0x9e'),_0x944d('0x9f'),_0x944d('0xa0'),_0x944d('0xa1')]})[_0x944d('0x25')](handleEntityNotFound(_0x127d86,null))[_0x944d('0x25')](function(_0x4073f6){if(_0x4073f6){_0x3a2372=_0x4073f6[_0x944d('0xa0')];var _0x2f0be5=_0x3a2372[_0x944d('0xa2')](-0x1);if(_0x2f0be5==='/'){_0x3a2372=_0x3a2372[_0x944d('0xa3')](0x0,_0x3a2372[_0x944d('0xa4')](_0x2f0be5));}_0x48b6a8=util[_0x944d('0xa5')]('%s/api/now/doc/table/schema/',_0x3a2372);_0x5cea6e=util[_0x944d('0xa5')]('%s/api/now/table/',_0x3a2372);_0x7806b8={'user':_0x4073f6[_0x944d('0x9d')],'pass':_0x4073f6[_0x944d('0x9e')]};var _0x25dfdf={'method':_0x944d('0xa6'),'uri':_0x48b6a8+_0x944d('0xa7'),'auth':_0x7806b8,'json':!![]};return rp(_0x25dfdf);}})[_0x944d('0x25')](function(_0x3b9fe7){if(_0x3b9fe7[_0x944d('0xa8')][_0x944d('0x38')]>0x0){_0x40e46f=_0x3b9fe7[_0x944d('0xa8')];}console[_0x944d('0xa9')](_0x944d('0xaa'),_0x40e46f);_0x299ab2=[];_0x5d06a2=Object[_0x944d('0xab')]([],_0x40e46f);_[_0x944d('0xac')](_0x5d06a2,function(_0x4b7ffb){return!_0x11189b[_0x944d('0xad')](_0x4b7ffb['name']);});_0x5d06a2[_0x944d('0xae')](function(_0x1baa9b){var _0x49a6ef=createFieldObject(_0x5cea6e,_0x7806b8,_0x1baa9b[_0x944d('0xaf')],_0x1baa9b['name'],_0x1baa9b['label'],![]);_0x299ab2['push'](_0x49a6ef);});return Promise[_0x944d('0xb0')](_0x299ab2);})[_0x944d('0x25')](function(_0x32493f){_0x364b9f=_0x32493f;_0x2e2c14=Object[_0x944d('0xab')]([],_0x40e46f);console['log']('TCL:\x20_object',_0x40e46f);_[_0x944d('0xac')](_0x2e2c14,function(_0x30bec3){return _0x5dd061[_0x944d('0xad')](_0x30bec3[_0x944d('0x29')]);});console[_0x944d('0xa9')](_0x944d('0xb1'),_0x2e2c14);_0x299ab2=[];_0x2e2c14['forEach'](function(_0x2c58d0){var _0x4aba7f=createFieldObject(_0x5cea6e,_0x7806b8,_0x2c58d0[_0x944d('0xaf')],_0x2c58d0[_0x944d('0x29')],_0x2c58d0[_0x944d('0xb2')],!![]);_0x299ab2[_0x944d('0xb3')](_0x4aba7f);});return Promise['all'](_0x299ab2);})[_0x944d('0x25')](function(_0x27f18b){_0x1ee1ff=_0x27f18b;var _0x3e4a39=_0x364b9f[_0x944d('0xb4')](_0x1ee1ff);return{'count':_0x3e4a39[_0x944d('0x38')],'rows':_0x3e4a39};})[_0x944d('0x25')](respondWithResult(_0x127d86,null))[_0x944d('0x48')](function(_0x42b3a4){console[_0x944d('0xa9')](_0x944d('0xb5')+_0x42b3a4);var _0x257c68=_0x45d577['query'][_0x944d('0xb6')]?0x1f4:_0x42b3a4[_0x944d('0xb7')]||0x1f4;logger[_0x944d('0x27')](_0x42b3a4['stack']);delete _0x42b3a4['name'];if(_0x257c68===0x191){_0x257c68=0x190;}_0x127d86[_0x944d('0x19')](_0x257c68)[_0x944d('0xb8')](_0x45d577['query'][_0x944d('0xb6')]?{'message':_0x944d('0xb9'),'statusCode':_0x42b3a4[_0x944d('0xb7')]}:_0x42b3a4);});};function createFieldObject(_0x406fa4,_0x36950a,_0x287a7a,_0x17362d,_0xd6cbc7,_0x1a4a1f){return new Promise(function(_0x12343c,_0x598ff0){var _0x3658fa={'id':_0x17362d,'name':_0xd6cbc7,'custom':_0x1a4a1f};if(_0x287a7a===_0x944d('0xba')){_0x3658fa['options']=[{'name':_0x944d('0xbb'),'value':_0x944d('0xbc')},{'name':'False','value':'false'}];_0x12343c(_0x3658fa);}else{var _0x366435={'method':_0x944d('0xa6'),'uri':_0x406fa4+'sys_choice?sysparm_query=name=incident^element='+_0x17362d,'auth':_0x36950a,'json':!![]};return rp(_0x366435)[_0x944d('0x25')](function(_0xe92568){var _0x58acf0=[];if(_0xe92568[_0x944d('0xa8')][_0x944d('0x38')]>0x0){_0xe92568[_0x944d('0xa8')][_0x944d('0xae')](function(_0x3fff16){if(_0x3fff16['inactive']===_0x944d('0xbd')){var _0xd7ca8c={'name':_0x3fff16[_0x944d('0xb2')],'value':_0x3fff16[_0x944d('0xbe')]};_0x58acf0[_0x944d('0xb3')](_0xd7ca8c);}});}_0x3658fa['options']=_0x58acf0;if(_0x3658fa[_0x944d('0x41')]['length']>0x0){_0x12343c(_0x3658fa);}else{if(_0x1a4a1f==![]){_0x12343c();}else{_0x12343c(_0x3658fa);}}});}});}
\ No newline at end of file
index bf07d9c..4bcb403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['bluebird','request-promise','path','rimraf','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','api','moment'];(function(_0x544c8e,_0x45b8cf){var _0xbf8baa=function(_0x44e20a){while(--_0x44e20a){_0x544c8e['push'](_0x544c8e['shift']());}};_0xbf8baa(++_0x45b8cf);}(_0x2bd8,0x130));var _0x82bd=function(_0x16c622,_0x5d7b6d){_0x16c622=_0x16c622-0x0;var _0x83bd85=_0x2bd8[_0x16c622];return _0x83bd85;};'use strict';var _=require(_0x82bd('0x0'));var util=require('util');var logger=require(_0x82bd('0x1'))(_0x82bd('0x2'));var moment=require(_0x82bd('0x3'));var BPromise=require(_0x82bd('0x4'));var rp=require(_0x82bd('0x5'));var fs=require('fs');var path=require(_0x82bd('0x6'));var rimraf=require(_0x82bd('0x7'));var config=require('../../config/environment');var attributes=require(_0x82bd('0x8'));var integrations=require(_0x82bd('0x9'));module[_0x82bd('0xa')]=function(_0x5ceb60,_0x19dbb1){return _0x5ceb60[_0x82bd('0xb')](_0x82bd('0xc'),attributes,{'tableName':_0x82bd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x687b=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x1a5433,_0x5e6eef){var _0x4d003b=function(_0x24b797){while(--_0x24b797){_0x1a5433['push'](_0x1a5433['shift']());}};_0x4d003b(++_0x5e6eef);}(_0x687b,0x14a));var _0xb687=function(_0x55b087,_0x2e94fa){_0x55b087=_0x55b087-0x0;var _0x583d66=_0x687b[_0x55b087];return _0x583d66;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var logger=require(_0xb687('0x2'))(_0xb687('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb687('0x4'));var fs=require('fs');var path=require(_0xb687('0x5'));var rimraf=require(_0xb687('0x6'));var config=require(_0xb687('0x7'));var attributes=require(_0xb687('0x8'));var integrations=require(_0xb687('0x9'));module[_0xb687('0xa')]=function(_0xf43a1f,_0x47ffea){return _0xf43a1f[_0xb687('0xb')]('ServicenowAccount',attributes,{'tableName':_0xb687('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c30cd5..f80cd08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c81=['GetServicenowAccount','ServicenowAccount','findAll','options','attributes','limit','include','map','model','debug','ShowServicenowAccount','where','util','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','then','info','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ServicenowAccount,\x20%s,\x20%s','message','result','catch'];(function(_0x2cfb22,_0x3d6102){var _0x387b93=function(_0x10dc28){while(--_0x10dc28){_0x2cfb22['push'](_0x2cfb22['shift']());}};_0x387b93(++_0x3d6102);}(_0x5c81,0x104));var _0x15c8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5c81[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x15c8('0x0'));var moment=require('moment');var BPromise=require(_0x15c8('0x1'));var rs=require(_0x15c8('0x2'));var fs=require('fs');var Redis=require(_0x15c8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x15c8('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x15c8('0x5'));var client=jayson[_0x15c8('0x6')][_0x15c8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16acb1,_0x5393f4,_0x30e464){return new BPromise(function(_0x325349,_0x4f147a){return client['request'](_0x16acb1,_0x30e464)[_0x15c8('0x8')](function(_0x3cc43f){logger[_0x15c8('0x9')]('ServicenowAccount,\x20%s,\x20%s',_0x5393f4,_0x15c8('0xa'));logger['debug'](_0x15c8('0xb'),_0x5393f4,_0x15c8('0xa'),JSON[_0x15c8('0xc')](_0x3cc43f));if(_0x3cc43f[_0x15c8('0xd')]){if(_0x3cc43f[_0x15c8('0xd')][_0x15c8('0xe')]===0x1f4){logger[_0x15c8('0xd')](_0x15c8('0xf'),_0x5393f4,_0x3cc43f[_0x15c8('0xd')][_0x15c8('0x10')]);return _0x4f147a(_0x3cc43f[_0x15c8('0xd')][_0x15c8('0x10')]);}logger[_0x15c8('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0x5393f4,_0x3cc43f[_0x15c8('0xd')][_0x15c8('0x10')]);return _0x325349(_0x3cc43f[_0x15c8('0xd')]['message']);}else{logger[_0x15c8('0x9')](_0x15c8('0xf'),_0x5393f4,'request\x20sent');_0x325349(_0x3cc43f[_0x15c8('0x11')][_0x15c8('0x10')]);}})[_0x15c8('0x12')](function(_0x1e386e){logger['error'](_0x15c8('0xf'),_0x5393f4,_0x1e386e);_0x4f147a(_0x1e386e);});});}exports[_0x15c8('0x13')]=function(_0x4f8585){var _0x5be4ba=this;return new Promise(function(_0x345578,_0x42f189){return db[_0x15c8('0x14')][_0x15c8('0x15')]({'raw':_0x4f8585[_0x15c8('0x16')]?_0x4f8585['options']['raw']===undefined?!![]:![]:!![],'where':_0x4f8585['options']?_0x4f8585[_0x15c8('0x16')]['where']||null:null,'attributes':_0x4f8585[_0x15c8('0x16')]?_0x4f8585[_0x15c8('0x16')][_0x15c8('0x17')]||null:null,'limit':_0x4f8585['options']?_0x4f8585[_0x15c8('0x16')][_0x15c8('0x18')]||null:null,'include':_0x4f8585[_0x15c8('0x16')]?_0x4f8585[_0x15c8('0x16')][_0x15c8('0x19')]?_[_0x15c8('0x1a')](_0x4f8585[_0x15c8('0x16')]['include'],function(_0x565353){return{'model':db[_0x565353[_0x15c8('0x1b')]],'as':_0x565353['as'],'attributes':_0x565353[_0x15c8('0x17')],'include':_0x565353['include']?_[_0x15c8('0x1a')](_0x565353[_0x15c8('0x19')],function(_0xad3d51){return{'model':db[_0xad3d51[_0x15c8('0x1b')]],'as':_0xad3d51['as'],'attributes':_0xad3d51[_0x15c8('0x17')],'include':_0xad3d51[_0x15c8('0x19')]?_['map'](_0xad3d51[_0x15c8('0x19')],function(_0x25c44c){return{'model':db[_0x25c44c[_0x15c8('0x1b')]],'as':_0x25c44c['as'],'attributes':_0x25c44c[_0x15c8('0x17')]};}):[]};}):[]};}):[]:[]})[_0x15c8('0x8')](function(_0x53cc16){logger[_0x15c8('0x9')](_0x15c8('0x13'),_0x4f8585);logger[_0x15c8('0x1c')](_0x15c8('0x13'),_0x4f8585,JSON[_0x15c8('0xc')](_0x53cc16));_0x345578(_0x53cc16);})[_0x15c8('0x12')](function(_0x569103){logger['error'](_0x15c8('0x13'),_0x569103[_0x15c8('0x10')],_0x4f8585);_0x42f189(_0x5be4ba[_0x15c8('0xd')](0x1f4,_0x569103['message']));});});};exports[_0x15c8('0x1d')]=function(_0x1d6fdb){var _0x1407f7=this;return new Promise(function(_0x45964c,_0x1ea575){return db['ServicenowAccount']['find']({'raw':_0x1d6fdb[_0x15c8('0x16')]?_0x1d6fdb[_0x15c8('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1d6fdb[_0x15c8('0x16')]?_0x1d6fdb[_0x15c8('0x16')][_0x15c8('0x1e')]||null:null,'attributes':_0x1d6fdb[_0x15c8('0x16')]?_0x1d6fdb[_0x15c8('0x16')]['attributes']||null:null,'include':_0x1d6fdb[_0x15c8('0x16')]?_0x1d6fdb[_0x15c8('0x16')][_0x15c8('0x19')]?_[_0x15c8('0x1a')](_0x1d6fdb[_0x15c8('0x16')][_0x15c8('0x19')],function(_0x231ce0){return{'model':db[_0x231ce0[_0x15c8('0x1b')]],'as':_0x231ce0['as'],'attributes':_0x231ce0[_0x15c8('0x17')],'include':_0x231ce0[_0x15c8('0x19')]?_[_0x15c8('0x1a')](_0x231ce0[_0x15c8('0x19')],function(_0x4a942b){return{'model':db[_0x4a942b[_0x15c8('0x1b')]],'as':_0x4a942b['as'],'attributes':_0x4a942b[_0x15c8('0x17')],'include':_0x4a942b[_0x15c8('0x19')]?_['map'](_0x4a942b[_0x15c8('0x19')],function(_0x51dde7){return{'model':db[_0x51dde7[_0x15c8('0x1b')]],'as':_0x51dde7['as'],'attributes':_0x51dde7[_0x15c8('0x17')]};}):[]};}):[]};}):[]:[]})[_0x15c8('0x8')](function(_0x425a87){logger[_0x15c8('0x9')](_0x15c8('0x1d'),_0x1d6fdb);logger[_0x15c8('0x1c')](_0x15c8('0x1d'),_0x1d6fdb,JSON[_0x15c8('0xc')](_0x425a87));_0x45964c(_0x425a87);})[_0x15c8('0x12')](function(_0x307d42){logger['error'](_0x15c8('0x1d'),_0x307d42['message'],_0x1d6fdb);_0x1ea575(_0x1407f7[_0x15c8('0xd')](0x1f4,_0x307d42[_0x15c8('0x10')]));});});};
\ No newline at end of file
+var _0x29e1=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','attributes','limit','map','include','model','stringify','ShowServicenowAccount','find','where','lodash','util'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x29e1,0x195));var _0x129e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x129e('0x0'));var util=require(_0x129e('0x1'));var moment=require(_0x129e('0x2'));var BPromise=require(_0x129e('0x3'));var rs=require(_0x129e('0x4'));var fs=require('fs');var Redis=require(_0x129e('0x5'));var db=require(_0x129e('0x6'))['db'];var utils=require(_0x129e('0x7'));var logger=require(_0x129e('0x8'))(_0x129e('0x9'));var config=require('../../config/environment');var jayson=require(_0x129e('0xa'));var client=jayson['client'][_0x129e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1623b5,_0x37784e,_0x5d2600){return new BPromise(function(_0x27b9aa,_0x1be098){return client[_0x129e('0xc')](_0x1623b5,_0x5d2600)[_0x129e('0xd')](function(_0xbee167){logger[_0x129e('0xe')](_0x129e('0xf'),_0x37784e,_0x129e('0x10'));logger[_0x129e('0x11')](_0x129e('0x12'),_0x37784e,_0x129e('0x10'),JSON['stringify'](_0xbee167));if(_0xbee167['error']){if(_0xbee167[_0x129e('0x13')][_0x129e('0x14')]===0x1f4){logger[_0x129e('0x13')](_0x129e('0xf'),_0x37784e,_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);return _0x1be098(_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);}logger[_0x129e('0x13')](_0x129e('0xf'),_0x37784e,_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);return _0x27b9aa(_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);}else{logger[_0x129e('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x37784e,'request\x20sent');_0x27b9aa(_0xbee167['result'][_0x129e('0x15')]);}})[_0x129e('0x16')](function(_0x2e31f4){logger[_0x129e('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x37784e,_0x2e31f4);_0x1be098(_0x2e31f4);});});}exports[_0x129e('0x17')]=function(_0x4715c7){var _0x59960d=this;return new Promise(function(_0x3544a,_0x2113fe){return db[_0x129e('0x18')][_0x129e('0x19')]({'raw':_0x4715c7[_0x129e('0x1a')]?_0x4715c7['options'][_0x129e('0x1b')]===undefined?!![]:![]:!![],'where':_0x4715c7['options']?_0x4715c7['options']['where']||null:null,'attributes':_0x4715c7[_0x129e('0x1a')]?_0x4715c7['options'][_0x129e('0x1c')]||null:null,'limit':_0x4715c7['options']?_0x4715c7[_0x129e('0x1a')][_0x129e('0x1d')]||null:null,'include':_0x4715c7['options']?_0x4715c7['options']['include']?_[_0x129e('0x1e')](_0x4715c7[_0x129e('0x1a')][_0x129e('0x1f')],function(_0x4a9765){return{'model':db[_0x4a9765[_0x129e('0x20')]],'as':_0x4a9765['as'],'attributes':_0x4a9765[_0x129e('0x1c')],'include':_0x4a9765[_0x129e('0x1f')]?_[_0x129e('0x1e')](_0x4a9765[_0x129e('0x1f')],function(_0x5b1a60){return{'model':db[_0x5b1a60[_0x129e('0x20')]],'as':_0x5b1a60['as'],'attributes':_0x5b1a60['attributes'],'include':_0x5b1a60[_0x129e('0x1f')]?_[_0x129e('0x1e')](_0x5b1a60[_0x129e('0x1f')],function(_0x37dcc5){return{'model':db[_0x37dcc5[_0x129e('0x20')]],'as':_0x37dcc5['as'],'attributes':_0x37dcc5[_0x129e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x129e('0xd')](function(_0x5cc574){logger['info'](_0x129e('0x17'),_0x4715c7);logger['debug'](_0x129e('0x17'),_0x4715c7,JSON[_0x129e('0x21')](_0x5cc574));_0x3544a(_0x5cc574);})[_0x129e('0x16')](function(_0x48cd15){logger[_0x129e('0x13')]('GetServicenowAccount',_0x48cd15[_0x129e('0x15')],_0x4715c7);_0x2113fe(_0x59960d['error'](0x1f4,_0x48cd15[_0x129e('0x15')]));});});};exports[_0x129e('0x22')]=function(_0x14f1be){var _0x1cde7a=this;return new Promise(function(_0x3f6704,_0x1c56fc){return db[_0x129e('0x18')][_0x129e('0x23')]({'raw':_0x14f1be[_0x129e('0x1a')]?_0x14f1be[_0x129e('0x1a')][_0x129e('0x1b')]===undefined?!![]:![]:!![],'where':_0x14f1be[_0x129e('0x1a')]?_0x14f1be['options'][_0x129e('0x24')]||null:null,'attributes':_0x14f1be[_0x129e('0x1a')]?_0x14f1be['options'][_0x129e('0x1c')]||null:null,'include':_0x14f1be[_0x129e('0x1a')]?_0x14f1be[_0x129e('0x1a')][_0x129e('0x1f')]?_['map'](_0x14f1be[_0x129e('0x1a')][_0x129e('0x1f')],function(_0xdf5b7){return{'model':db[_0xdf5b7[_0x129e('0x20')]],'as':_0xdf5b7['as'],'attributes':_0xdf5b7[_0x129e('0x1c')],'include':_0xdf5b7['include']?_[_0x129e('0x1e')](_0xdf5b7[_0x129e('0x1f')],function(_0x262b83){return{'model':db[_0x262b83[_0x129e('0x20')]],'as':_0x262b83['as'],'attributes':_0x262b83[_0x129e('0x1c')],'include':_0x262b83['include']?_[_0x129e('0x1e')](_0x262b83['include'],function(_0x1bb2f7){return{'model':db[_0x1bb2f7['model']],'as':_0x1bb2f7['as'],'attributes':_0x1bb2f7['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x12aca3){logger['info'](_0x129e('0x22'),_0x14f1be);logger[_0x129e('0x11')](_0x129e('0x22'),_0x14f1be,JSON[_0x129e('0x21')](_0x12aca3));_0x3f6704(_0x12aca3);})[_0x129e('0x16')](function(_0xd75d32){logger[_0x129e('0x13')](_0x129e('0x22'),_0xd75d32[_0x129e('0x15')],_0x14f1be);_0x1c56fc(_0x1cde7a[_0x129e('0x13')](0x1f4,_0xd75d32['message']));});});};
\ No newline at end of file
index b3a4f91..cc68f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ddd=['getFields','/:id/subjects','/:id/descriptions','getDescriptions','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5ddd,0x101));var _0xd5dd=function(_0x4db46b,_0xadcb1a){_0x4db46b=_0x4db46b-0x0;var _0x565be8=_0x5ddd[_0x4db46b];return _0x565be8;};'use strict';var multer=require(_0xd5dd('0x0'));var util=require('util');var path=require(_0xd5dd('0x1'));var timeout=require(_0xd5dd('0x2'));var express=require(_0xd5dd('0x3'));var router=express[_0xd5dd('0x4')]();var fs_extra=require(_0xd5dd('0x5'));var auth=require(_0xd5dd('0x6'));var interaction=require(_0xd5dd('0x7'));var config=require(_0xd5dd('0x8'));var controller=require(_0xd5dd('0x9'));router[_0xd5dd('0xa')]('/',auth[_0xd5dd('0xb')](),controller[_0xd5dd('0xc')]);router[_0xd5dd('0xa')](_0xd5dd('0xd'),auth[_0xd5dd('0xb')](),controller[_0xd5dd('0xe')]);router[_0xd5dd('0xa')](_0xd5dd('0xf'),auth[_0xd5dd('0xb')](),controller[_0xd5dd('0x10')]);router['get'](_0xd5dd('0x11'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xd5dd('0xa')](_0xd5dd('0x12'),auth[_0xd5dd('0xb')](),controller[_0xd5dd('0x13')]);router['post']('/',auth[_0xd5dd('0xb')](),controller['create']);router['put'](_0xd5dd('0xd'),auth[_0xd5dd('0xb')](),controller['update']);router['delete'](_0xd5dd('0xd'),auth['isAuthenticated'](),controller[_0xd5dd('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xf700=['destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','index','get','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','/:id/descriptions','post','create','put','update','delete'];(function(_0x265122,_0x1ae805){var _0x4a9eaa=function(_0x303a88){while(--_0x303a88){_0x265122['push'](_0x265122['shift']());}};_0x4a9eaa(++_0x1ae805);}(_0xf700,0x139));var _0x0f70=function(_0x37b74f,_0x260fce){_0x37b74f=_0x37b74f-0x0;var _0x35f223=_0xf700[_0x37b74f];return _0x35f223;};'use strict';var multer=require(_0x0f70('0x0'));var util=require(_0x0f70('0x1'));var path=require(_0x0f70('0x2'));var timeout=require(_0x0f70('0x3'));var express=require(_0x0f70('0x4'));var router=express['Router']();var fs_extra=require(_0x0f70('0x5'));var auth=require(_0x0f70('0x6'));var interaction=require(_0x0f70('0x7'));var config=require(_0x0f70('0x8'));var controller=require(_0x0f70('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x0f70('0xa')]);router[_0x0f70('0xb')](_0x0f70('0xc'),auth[_0x0f70('0xd')](),controller[_0x0f70('0xe')]);router[_0x0f70('0xb')](_0x0f70('0xf'),auth[_0x0f70('0xd')](),controller['getFields']);router[_0x0f70('0xb')](_0x0f70('0x10'),auth[_0x0f70('0xd')](),controller['getSubjects']);router[_0x0f70('0xb')](_0x0f70('0x11'),auth[_0x0f70('0xd')](),controller['getDescriptions']);router[_0x0f70('0x12')]('/',auth[_0x0f70('0xd')](),controller[_0x0f70('0x13')]);router[_0x0f70('0x14')](_0x0f70('0xc'),auth[_0x0f70('0xd')](),controller[_0x0f70('0x15')]);router[_0x0f70('0x16')](_0x0f70('0xc'),auth[_0x0f70('0xd')](),controller[_0x0f70('0x17')]);module['exports']=router;
\ No newline at end of file
index 068baf9..b02db83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07d8=['exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x07d8,0x122));var _0x807d=function(_0xecb5e3,_0x37fbc8){_0xecb5e3=_0xecb5e3-0x0;var _0x2f41d9=_0x07d8[_0xecb5e3];return _0x2f41d9;};'use strict';var Sequelize=require('sequelize');module[_0x807d('0x0')]={'name':{'type':Sequelize[_0x807d('0x1')]},'description':{'type':Sequelize[_0x807d('0x1')]}};
\ No newline at end of file
+var _0xabe1=['STRING','sequelize','exports'];(function(_0x259b70,_0x173c8a){var _0x70989e=function(_0x4c1119){while(--_0x4c1119){_0x259b70['push'](_0x259b70['shift']());}};_0x70989e(++_0x173c8a);}(_0xabe1,0x187));var _0x1abe=function(_0x2356e6,_0x130b1f){_0x2356e6=_0x2356e6-0x0;var _0x31094e=_0xabe1[_0x2356e6];return _0x31094e;};'use strict';var Sequelize=require(_0x1abe('0x0'));module[_0x1abe('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1abe('0x2')]}};
\ No newline at end of file
index 4010be7..ecebd6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ab=['order','sort','where','pick','merge','filter','options','ServicenowConfiguration','includeAll','include','catch','show','params','fields','length','find','create','body','findOne','ServicenowField','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','hasOwnProperty','nolimit'];(function(_0x1455e5,_0x732446){var _0x53b75f=function(_0x324236){while(--_0x324236){_0x1455e5['push'](_0x1455e5['shift']());}};_0x53b75f(++_0x732446);}(_0x73ab,0x113));var _0xb73a=function(_0x3c22e0,_0x1dc6ea){_0x3c22e0=_0x3c22e0-0x0;var _0x215811=_0x73ab[_0x3c22e0];return _0x215811;};'use strict';var emlformat=require(_0xb73a('0x0'));var rimraf=require(_0xb73a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb73a('0x2'));var rp=require('request-promise');var moment=require(_0xb73a('0x3'));var BPromise=require(_0xb73a('0x4'));var Mustache=require(_0xb73a('0x5'));var util=require(_0xb73a('0x6'));var path=require(_0xb73a('0x7'));var sox=require(_0xb73a('0x8'));var csv=require(_0xb73a('0x9'));var ejs=require(_0xb73a('0xa'));var fs=require('fs');var fs_extra=require(_0xb73a('0xb'));var _=require(_0xb73a('0xc'));var squel=require(_0xb73a('0xd'));var crypto=require(_0xb73a('0xe'));var jsforce=require(_0xb73a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xb73a('0x9'));var querystring=require(_0xb73a('0x10'));var Papa=require(_0xb73a('0x11'));var Redis=require(_0xb73a('0x12'));var authService=require(_0xb73a('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xb73a('0x14'));var hardwareService=require(_0xb73a('0x15'));var logger=require(_0xb73a('0x16'))(_0xb73a('0x17'));var utils=require(_0xb73a('0x18'));var config=require(_0xb73a('0x19'));var licenseUtil=require(_0xb73a('0x1a'));var db=require(_0xb73a('0x1b'))['db'];function respondWithStatusCode(_0x11f02d,_0x510b57){_0x510b57=_0x510b57||0xcc;return function(_0x5da2dd){if(_0x5da2dd){return _0x11f02d[_0xb73a('0x1c')](_0x510b57);}return _0x11f02d[_0xb73a('0x1d')](_0x510b57)[_0xb73a('0x1e')]();};}function respondWithResult(_0x20fb1f,_0x411ea9){_0x411ea9=_0x411ea9||0xc8;return function(_0xce9c6c){if(_0xce9c6c){return _0x20fb1f[_0xb73a('0x1d')](_0x411ea9)[_0xb73a('0x1f')](_0xce9c6c);}};}function respondWithFilteredResult(_0x4b9dfb,_0x3e62c0){return function(_0x2ff02c){if(_0x2ff02c){var _0x21f9e8=typeof _0x3e62c0[_0xb73a('0x20')]==='undefined'&&typeof _0x3e62c0[_0xb73a('0x21')]===_0xb73a('0x22');var _0x171be7=_0x2ff02c[_0xb73a('0x23')];var _0xe7e06a=_0x21f9e8?0x0:_0x3e62c0[_0xb73a('0x20')];var _0x200e65=_0x21f9e8?_0x2ff02c[_0xb73a('0x23')]:_0x3e62c0['offset']+_0x3e62c0[_0xb73a('0x21')];var _0x22aa85;if(_0x200e65>=_0x171be7){_0x200e65=_0x171be7;_0x22aa85=0xc8;}else{_0x22aa85=0xce;}_0x4b9dfb[_0xb73a('0x1d')](_0x22aa85);return _0x4b9dfb[_0xb73a('0x24')]('Content-Range',_0xe7e06a+'-'+_0x200e65+'/'+_0x171be7)[_0xb73a('0x1f')](_0x2ff02c);}return null;};}function patchUpdates(_0x3a2dab){return function(_0x184bf7){try{jsonpatch[_0xb73a('0x25')](_0x184bf7,_0x3a2dab,!![]);}catch(_0x1df380){return BPromise[_0xb73a('0x26')](_0x1df380);}return _0x184bf7[_0xb73a('0x27')]();};}function saveUpdates(_0x107c4d,_0x220708){return function(_0x4d53a6){if(_0x4d53a6){return _0x4d53a6[_0xb73a('0x28')](_0x107c4d)['then'](function(_0x510bf1){return _0x510bf1;});}return null;};}function removeEntity(_0x53b327,_0x25b8ef){return function(_0x1d025d){if(_0x1d025d){return _0x1d025d[_0xb73a('0x29')]()[_0xb73a('0x2a')](function(){_0x53b327[_0xb73a('0x1d')](0xcc)[_0xb73a('0x1e')]();});}};}function handleEntityNotFound(_0x11b9f6,_0x144976){return function(_0x470898){if(!_0x470898){_0x11b9f6['sendStatus'](0x194);}return _0x470898;};}function handleError(_0x540b56,_0xd506cf){_0xd506cf=_0xd506cf||0x1f4;return function(_0x1e6f7b){logger[_0xb73a('0x2b')](_0x1e6f7b[_0xb73a('0x2c')]);if(_0x1e6f7b[_0xb73a('0x2d')]){delete _0x1e6f7b['name'];}_0x540b56[_0xb73a('0x1d')](_0xd506cf)[_0xb73a('0x2e')](_0x1e6f7b);};}exports[_0xb73a('0x2f')]=function(_0x2f548f,_0x47dc38){var _0x1f9ea4={},_0x42efee={},_0x866709={'count':0x0,'rows':[]};var _0x285beb=_[_0xb73a('0x30')](db['ServicenowConfiguration'][_0xb73a('0x31')],function(_0x212f77){return{'name':_0x212f77[_0xb73a('0x32')],'type':_0x212f77[_0xb73a('0x33')][_0xb73a('0x34')]};});_0x42efee['model']=_[_0xb73a('0x30')](_0x285beb,_0xb73a('0x2d'));_0x42efee[_0xb73a('0x35')]=_[_0xb73a('0x36')](_0x2f548f['query']);_0x42efee[_0xb73a('0x37')]=_[_0xb73a('0x38')](_0x42efee[_0xb73a('0x39')],_0x42efee['query']);_0x1f9ea4[_0xb73a('0x3a')]=_[_0xb73a('0x38')](_0x42efee[_0xb73a('0x39')],qs['fields'](_0x2f548f[_0xb73a('0x35')]['fields']));_0x1f9ea4[_0xb73a('0x3a')]=_0x1f9ea4[_0xb73a('0x3a')]['length']?_0x1f9ea4[_0xb73a('0x3a')]:_0x42efee['model'];if(!_0x2f548f[_0xb73a('0x35')][_0xb73a('0x3b')](_0xb73a('0x3c'))){_0x1f9ea4['limit']=qs[_0xb73a('0x21')](_0x2f548f[_0xb73a('0x35')][_0xb73a('0x21')]);_0x1f9ea4[_0xb73a('0x20')]=qs[_0xb73a('0x20')](_0x2f548f[_0xb73a('0x35')][_0xb73a('0x20')]);}_0x1f9ea4[_0xb73a('0x3d')]=qs[_0xb73a('0x3e')](_0x2f548f[_0xb73a('0x35')]['sort']);_0x1f9ea4[_0xb73a('0x3f')]=qs['filters'](_[_0xb73a('0x40')](_0x2f548f[_0xb73a('0x35')],_0x42efee[_0xb73a('0x37')]),_0x285beb);if(_0x2f548f[_0xb73a('0x35')]['filter']){_0x1f9ea4[_0xb73a('0x3f')]=_[_0xb73a('0x41')](_0x1f9ea4[_0xb73a('0x3f')],{'$or':_[_0xb73a('0x30')](_0x285beb,function(_0x3d1a01){if(_0x3d1a01[_0xb73a('0x33')]!=='VIRTUAL'){var _0x51047c={};_0x51047c[_0x3d1a01[_0xb73a('0x2d')]]={'$like':'%'+_0x2f548f[_0xb73a('0x35')][_0xb73a('0x42')]+'%'};return _0x51047c;}})});}_0x1f9ea4=_[_0xb73a('0x41')]({},_0x1f9ea4,_0x2f548f[_0xb73a('0x43')]);var _0x585785={'where':_0x1f9ea4[_0xb73a('0x3f')]};return db[_0xb73a('0x44')][_0xb73a('0x23')](_0x585785)[_0xb73a('0x2a')](function(_0x43f2fb){_0x866709['count']=_0x43f2fb;if(_0x2f548f[_0xb73a('0x35')][_0xb73a('0x45')]){_0x1f9ea4[_0xb73a('0x46')]=[{'all':!![]}];}return db[_0xb73a('0x44')]['findAll'](_0x1f9ea4);})[_0xb73a('0x2a')](function(_0x3e29f6){_0x866709['rows']=_0x3e29f6;return _0x866709;})[_0xb73a('0x2a')](respondWithFilteredResult(_0x47dc38,_0x1f9ea4))[_0xb73a('0x47')](handleError(_0x47dc38,null));};exports[_0xb73a('0x48')]=function(_0x513f86,_0xd8357b){var _0x3c37b7={'raw':![],'where':{'id':_0x513f86[_0xb73a('0x49')]['id']}},_0x23b2d9={};_0x23b2d9[_0xb73a('0x39')]=_[_0xb73a('0x36')](db[_0xb73a('0x44')][_0xb73a('0x31')]);_0x23b2d9[_0xb73a('0x35')]=_[_0xb73a('0x36')](_0x513f86[_0xb73a('0x35')]);_0x23b2d9[_0xb73a('0x37')]=_[_0xb73a('0x38')](_0x23b2d9[_0xb73a('0x39')],_0x23b2d9['query']);_0x3c37b7[_0xb73a('0x3a')]=_['intersection'](_0x23b2d9[_0xb73a('0x39')],qs[_0xb73a('0x4a')](_0x513f86[_0xb73a('0x35')][_0xb73a('0x4a')]));_0x3c37b7[_0xb73a('0x3a')]=_0x3c37b7[_0xb73a('0x3a')][_0xb73a('0x4b')]?_0x3c37b7[_0xb73a('0x3a')]:_0x23b2d9[_0xb73a('0x39')];if(_0x513f86['query']['includeAll']){_0x3c37b7[_0xb73a('0x46')]=[{'all':!![]}];}_0x3c37b7=_[_0xb73a('0x41')]({},_0x3c37b7,_0x513f86[_0xb73a('0x43')]);return db[_0xb73a('0x44')][_0xb73a('0x4c')](_0x3c37b7)['then'](handleEntityNotFound(_0xd8357b,null))[_0xb73a('0x2a')](respondWithResult(_0xd8357b,null))['catch'](handleError(_0xd8357b,null));};exports['create']=function(_0x153dac,_0x578f85){return db[_0xb73a('0x44')][_0xb73a('0x4d')](_0x153dac[_0xb73a('0x4e')],{})[_0xb73a('0x2a')](respondWithResult(_0x578f85,0xc9))[_0xb73a('0x47')](handleError(_0x578f85,null));};exports[_0xb73a('0x28')]=function(_0x4b1861,_0x1b1769){if(_0x4b1861[_0xb73a('0x4e')]['id']){delete _0x4b1861[_0xb73a('0x4e')]['id'];}return db['ServicenowConfiguration']['find']({'where':{'id':_0x4b1861['params']['id']}})[_0xb73a('0x2a')](handleEntityNotFound(_0x1b1769,null))[_0xb73a('0x2a')](saveUpdates(_0x4b1861['body'],null))[_0xb73a('0x2a')](respondWithResult(_0x1b1769,null))[_0xb73a('0x47')](handleError(_0x1b1769,null));};exports[_0xb73a('0x29')]=function(_0xed4ede,_0x58cbf5){return db[_0xb73a('0x44')][_0xb73a('0x4c')]({'where':{'id':_0xed4ede[_0xb73a('0x49')]['id']}})[_0xb73a('0x2a')](handleEntityNotFound(_0x58cbf5,null))[_0xb73a('0x2a')](removeEntity(_0x58cbf5,null))[_0xb73a('0x47')](handleError(_0x58cbf5,null));};exports['getFields']=function(_0xf6f79c,_0x3adc6d,_0x5609fc){var _0x54922e={};var _0x24b05e={};var _0x5567cc;var _0x57ac2e;return db[_0xb73a('0x44')][_0xb73a('0x4f')]({'where':{'id':_0xf6f79c[_0xb73a('0x49')]['id']}})['then'](handleEntityNotFound(_0x3adc6d,null))[_0xb73a('0x2a')](function(_0x24e3dc){if(_0x24e3dc){_0x5567cc=_0x24e3dc;_0x24b05e['model']=_[_0xb73a('0x36')](db[_0xb73a('0x50')][_0xb73a('0x31')]);_0x24b05e['query']=_[_0xb73a('0x36')](_0xf6f79c[_0xb73a('0x35')]);_0x24b05e[_0xb73a('0x37')]=_[_0xb73a('0x38')](_0x24b05e[_0xb73a('0x39')],_0x24b05e[_0xb73a('0x35')]);_0x54922e['attributes']=_[_0xb73a('0x38')](_0x24b05e[_0xb73a('0x39')],qs[_0xb73a('0x4a')](_0xf6f79c[_0xb73a('0x35')][_0xb73a('0x4a')]));_0x54922e[_0xb73a('0x3a')]=_0x54922e[_0xb73a('0x3a')]['length']?_0x54922e[_0xb73a('0x3a')]:_0x24b05e[_0xb73a('0x39')];_0x54922e['order']=qs['sort'](_0xf6f79c[_0xb73a('0x35')][_0xb73a('0x3e')]);_0x54922e[_0xb73a('0x3f')]=qs['filters'](_[_0xb73a('0x40')](_0xf6f79c['query'],_0x24b05e[_0xb73a('0x37')]));if(_0xf6f79c[_0xb73a('0x35')][_0xb73a('0x42')]){_0x54922e['where']=_[_0xb73a('0x41')](_0x54922e[_0xb73a('0x3f')],{'$or':_[_0xb73a('0x30')](_0x54922e[_0xb73a('0x3a')],function(_0xd7e3f6){var _0x5b93df={};_0x5b93df[_0xd7e3f6]={'$like':'%'+_0xf6f79c[_0xb73a('0x35')][_0xb73a('0x42')]+'%'};return _0x5b93df;})});}_0x54922e=_['merge']({},_0x54922e,_0xf6f79c['options']);return _0x5567cc[_0xb73a('0x51')](_0x54922e);}})['then'](function(_0x69a8fb){if(_0x69a8fb){_0x57ac2e=_0x69a8fb[_0xb73a('0x4b')];if(!_0xf6f79c[_0xb73a('0x35')][_0xb73a('0x3b')](_0xb73a('0x3c'))){_0x54922e[_0xb73a('0x21')]=qs['limit'](_0xf6f79c[_0xb73a('0x35')][_0xb73a('0x21')]);_0x54922e[_0xb73a('0x20')]=qs[_0xb73a('0x20')](_0xf6f79c[_0xb73a('0x35')][_0xb73a('0x20')]);}return _0x5567cc[_0xb73a('0x51')](_0x54922e);}})[_0xb73a('0x2a')](function(_0x16d04f){if(_0x16d04f){return _0x16d04f?{'count':_0x57ac2e,'rows':_0x16d04f}:null;}})[_0xb73a('0x2a')](respondWithResult(_0x3adc6d,null))['catch'](handleError(_0x3adc6d,null));};exports[_0xb73a('0x52')]=function(_0x1fdd9f,_0x46aa91,_0x8a9a6b){var _0x27ea63={};var _0x525b52={};var _0x301a19;var _0xc294e2;return db[_0xb73a('0x44')][_0xb73a('0x4f')]({'where':{'id':_0x1fdd9f[_0xb73a('0x49')]['id']}})[_0xb73a('0x2a')](handleEntityNotFound(_0x46aa91,null))['then'](function(_0x30e0f0){if(_0x30e0f0){_0x301a19=_0x30e0f0;_0x525b52[_0xb73a('0x39')]=_[_0xb73a('0x36')](db[_0xb73a('0x50')]['rawAttributes']);_0x525b52[_0xb73a('0x35')]=_[_0xb73a('0x36')](_0x1fdd9f[_0xb73a('0x35')]);_0x525b52[_0xb73a('0x37')]=_[_0xb73a('0x38')](_0x525b52[_0xb73a('0x39')],_0x525b52['query']);_0x27ea63[_0xb73a('0x3a')]=_[_0xb73a('0x38')](_0x525b52[_0xb73a('0x39')],qs[_0xb73a('0x4a')](_0x1fdd9f[_0xb73a('0x35')]['fields']));_0x27ea63[_0xb73a('0x3a')]=_0x27ea63[_0xb73a('0x3a')][_0xb73a('0x4b')]?_0x27ea63['attributes']:_0x525b52[_0xb73a('0x39')];_0x27ea63[_0xb73a('0x3d')]=qs['sort'](_0x1fdd9f['query'][_0xb73a('0x3e')]);_0x27ea63[_0xb73a('0x3f')]=qs[_0xb73a('0x37')](_[_0xb73a('0x40')](_0x1fdd9f['query'],_0x525b52[_0xb73a('0x37')]));if(_0x1fdd9f[_0xb73a('0x35')][_0xb73a('0x42')]){_0x27ea63[_0xb73a('0x3f')]=_[_0xb73a('0x41')](_0x27ea63[_0xb73a('0x3f')],{'$or':_[_0xb73a('0x30')](_0x27ea63[_0xb73a('0x3a')],function(_0x3bdf3a){var _0x1e1590={};_0x1e1590[_0x3bdf3a]={'$like':'%'+_0x1fdd9f['query'][_0xb73a('0x42')]+'%'};return _0x1e1590;})});}_0x27ea63=_['merge']({},_0x27ea63,_0x1fdd9f[_0xb73a('0x43')]);return _0x301a19['getSubjects'](_0x27ea63);}})[_0xb73a('0x2a')](function(_0x64fac5){if(_0x64fac5){_0xc294e2=_0x64fac5[_0xb73a('0x4b')];if(!_0x1fdd9f[_0xb73a('0x35')]['hasOwnProperty']('nolimit')){_0x27ea63[_0xb73a('0x21')]=qs[_0xb73a('0x21')](_0x1fdd9f['query'][_0xb73a('0x21')]);_0x27ea63[_0xb73a('0x20')]=qs[_0xb73a('0x20')](_0x1fdd9f[_0xb73a('0x35')][_0xb73a('0x20')]);}return _0x301a19['getSubjects'](_0x27ea63);}})[_0xb73a('0x2a')](function(_0xa37fda){if(_0xa37fda){return _0xa37fda?{'count':_0xc294e2,'rows':_0xa37fda}:null;}})['then'](respondWithResult(_0x46aa91,null))[_0xb73a('0x47')](handleError(_0x46aa91,null));};exports[_0xb73a('0x53')]=function(_0x3a8f8d,_0x2fa983,_0x12aca4){var _0xf60c30={};var _0x3761b4={};var _0x46c839;var _0x4c0794;return db['ServicenowConfiguration'][_0xb73a('0x4f')]({'where':{'id':_0x3a8f8d[_0xb73a('0x49')]['id']}})[_0xb73a('0x2a')](handleEntityNotFound(_0x2fa983,null))['then'](function(_0x50f254){if(_0x50f254){_0x46c839=_0x50f254;_0x3761b4[_0xb73a('0x39')]=_[_0xb73a('0x36')](db['ServicenowField'][_0xb73a('0x31')]);_0x3761b4[_0xb73a('0x35')]=_['keys'](_0x3a8f8d[_0xb73a('0x35')]);_0x3761b4[_0xb73a('0x37')]=_[_0xb73a('0x38')](_0x3761b4[_0xb73a('0x39')],_0x3761b4[_0xb73a('0x35')]);_0xf60c30[_0xb73a('0x3a')]=_[_0xb73a('0x38')](_0x3761b4[_0xb73a('0x39')],qs[_0xb73a('0x4a')](_0x3a8f8d['query'][_0xb73a('0x4a')]));_0xf60c30['attributes']=_0xf60c30[_0xb73a('0x3a')]['length']?_0xf60c30['attributes']:_0x3761b4[_0xb73a('0x39')];_0xf60c30['order']=qs[_0xb73a('0x3e')](_0x3a8f8d[_0xb73a('0x35')][_0xb73a('0x3e')]);_0xf60c30[_0xb73a('0x3f')]=qs[_0xb73a('0x37')](_[_0xb73a('0x40')](_0x3a8f8d['query'],_0x3761b4[_0xb73a('0x37')]));if(_0x3a8f8d[_0xb73a('0x35')][_0xb73a('0x42')]){_0xf60c30[_0xb73a('0x3f')]=_['merge'](_0xf60c30[_0xb73a('0x3f')],{'$or':_[_0xb73a('0x30')](_0xf60c30[_0xb73a('0x3a')],function(_0x50e3f4){var _0xdae1af={};_0xdae1af[_0x50e3f4]={'$like':'%'+_0x3a8f8d[_0xb73a('0x35')][_0xb73a('0x42')]+'%'};return _0xdae1af;})});}_0xf60c30=_[_0xb73a('0x41')]({},_0xf60c30,_0x3a8f8d[_0xb73a('0x43')]);return _0x46c839[_0xb73a('0x53')](_0xf60c30);}})[_0xb73a('0x2a')](function(_0x3acf23){if(_0x3acf23){_0x4c0794=_0x3acf23[_0xb73a('0x4b')];if(!_0x3a8f8d[_0xb73a('0x35')][_0xb73a('0x3b')]('nolimit')){_0xf60c30[_0xb73a('0x21')]=qs['limit'](_0x3a8f8d[_0xb73a('0x35')][_0xb73a('0x21')]);_0xf60c30['offset']=qs['offset'](_0x3a8f8d[_0xb73a('0x35')][_0xb73a('0x20')]);}return _0x46c839[_0xb73a('0x53')](_0xf60c30);}})[_0xb73a('0x2a')](function(_0xf80a8){if(_0xf80a8){return _0xf80a8?{'count':_0x4c0794,'rows':_0xf80a8}:null;}})[_0xb73a('0x2a')](respondWithResult(_0x2fa983,null))[_0xb73a('0x47')](handleError(_0x2fa983,null));};
\ No newline at end of file
+var _0xcff2=['ejs','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','offset','undefined','limit','count','status','set','Content-Range','json','reject','then','destroy','error','name','send','index','map','ServicenowConfiguration','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','includeAll','rows','show','merge','catch','create','body','update','find','params','getFields','findOne','nolimit','getSubjects','ServicenowField','getDescriptions','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','to-csv'];(function(_0x1bc954,_0x260393){var _0x740462=function(_0x45cca6){while(--_0x45cca6){_0x1bc954['push'](_0x1bc954['shift']());}};_0x740462(++_0x260393);}(_0xcff2,0x1ba));var _0x2cff=function(_0x202c61,_0x3673e0){_0x202c61=_0x202c61-0x0;var _0x540691=_0xcff2[_0x202c61];return _0x540691;};'use strict';var emlformat=require(_0x2cff('0x0'));var rimraf=require(_0x2cff('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2cff('0x2'));var rp=require('request-promise');var moment=require(_0x2cff('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2cff('0x4'));var util=require(_0x2cff('0x5'));var path=require(_0x2cff('0x6'));var sox=require('sox');var csv=require(_0x2cff('0x7'));var ejs=require(_0x2cff('0x8'));var fs=require('fs');var fs_extra=require(_0x2cff('0x9'));var _=require(_0x2cff('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2cff('0xb'));var deskjs=require(_0x2cff('0xc'));var toCsv=require(_0x2cff('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2cff('0xd'));var authService=require(_0x2cff('0xe'));var qs=require(_0x2cff('0xf'));var as=require(_0x2cff('0x10'));var hardwareService=require(_0x2cff('0x11'));var logger=require(_0x2cff('0x12'))(_0x2cff('0x13'));var utils=require('../../config/utils');var config=require(_0x2cff('0x14'));var licenseUtil=require(_0x2cff('0x15'));var db=require(_0x2cff('0x16'))['db'];function respondWithStatusCode(_0x2f57f7,_0xa105b4){_0xa105b4=_0xa105b4||0xcc;return function(_0x32d057){if(_0x32d057){return _0x2f57f7['sendStatus'](_0xa105b4);}return _0x2f57f7['status'](_0xa105b4)['end']();};}function respondWithResult(_0x57cc64,_0xc49e5e){_0xc49e5e=_0xc49e5e||0xc8;return function(_0x18eb03){if(_0x18eb03){return _0x57cc64['status'](_0xc49e5e)['json'](_0x18eb03);}};}function respondWithFilteredResult(_0x202c44,_0x1c4d80){return function(_0x219d94){if(_0x219d94){var _0x1c1361=typeof _0x1c4d80[_0x2cff('0x17')]===_0x2cff('0x18')&&typeof _0x1c4d80[_0x2cff('0x19')]===_0x2cff('0x18');var _0x111680=_0x219d94[_0x2cff('0x1a')];var _0x285117=_0x1c1361?0x0:_0x1c4d80['offset'];var _0x157562=_0x1c1361?_0x219d94[_0x2cff('0x1a')]:_0x1c4d80['offset']+_0x1c4d80[_0x2cff('0x19')];var _0x47d099;if(_0x157562>=_0x111680){_0x157562=_0x111680;_0x47d099=0xc8;}else{_0x47d099=0xce;}_0x202c44[_0x2cff('0x1b')](_0x47d099);return _0x202c44[_0x2cff('0x1c')](_0x2cff('0x1d'),_0x285117+'-'+_0x157562+'/'+_0x111680)[_0x2cff('0x1e')](_0x219d94);}return null;};}function patchUpdates(_0x4ea447){return function(_0x10363b){try{jsonpatch['apply'](_0x10363b,_0x4ea447,!![]);}catch(_0x4ef3a1){return BPromise[_0x2cff('0x1f')](_0x4ef3a1);}return _0x10363b['save']();};}function saveUpdates(_0x1d7c90,_0x3ddf0a){return function(_0x5878be){if(_0x5878be){return _0x5878be['update'](_0x1d7c90)[_0x2cff('0x20')](function(_0x4a2f9b){return _0x4a2f9b;});}return null;};}function removeEntity(_0x36104a,_0x277592){return function(_0x25ca19){if(_0x25ca19){return _0x25ca19[_0x2cff('0x21')]()[_0x2cff('0x20')](function(){_0x36104a[_0x2cff('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x164ae2,_0x4cb826){return function(_0x2ea793){if(!_0x2ea793){_0x164ae2['sendStatus'](0x194);}return _0x2ea793;};}function handleError(_0x4f3c21,_0x44e97d){_0x44e97d=_0x44e97d||0x1f4;return function(_0x23580b){logger[_0x2cff('0x22')](_0x23580b['stack']);if(_0x23580b[_0x2cff('0x23')]){delete _0x23580b['name'];}_0x4f3c21[_0x2cff('0x1b')](_0x44e97d)[_0x2cff('0x24')](_0x23580b);};}exports[_0x2cff('0x25')]=function(_0x3c51d2,_0x138745){var _0x4a7e0c={},_0x10e29e={},_0x5c1d38={'count':0x0,'rows':[]};var _0x14e250=_[_0x2cff('0x26')](db[_0x2cff('0x27')][_0x2cff('0x28')],function(_0x4c9d35){return{'name':_0x4c9d35['fieldName'],'type':_0x4c9d35[_0x2cff('0x29')][_0x2cff('0x2a')]};});_0x10e29e[_0x2cff('0x2b')]=_[_0x2cff('0x26')](_0x14e250,'name');_0x10e29e['query']=_[_0x2cff('0x2c')](_0x3c51d2[_0x2cff('0x2d')]);_0x10e29e[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x10e29e[_0x2cff('0x2b')],_0x10e29e[_0x2cff('0x2d')]);_0x4a7e0c[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x10e29e[_0x2cff('0x2b')],qs['fields'](_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x31')]));_0x4a7e0c[_0x2cff('0x30')]=_0x4a7e0c[_0x2cff('0x30')][_0x2cff('0x32')]?_0x4a7e0c[_0x2cff('0x30')]:_0x10e29e[_0x2cff('0x2b')];if(!_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x33')]('nolimit')){_0x4a7e0c[_0x2cff('0x19')]=qs['limit'](_0x3c51d2['query'][_0x2cff('0x19')]);_0x4a7e0c[_0x2cff('0x17')]=qs[_0x2cff('0x17')](_0x3c51d2[_0x2cff('0x2d')]['offset']);}_0x4a7e0c[_0x2cff('0x34')]=qs[_0x2cff('0x35')](_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x35')]);_0x4a7e0c[_0x2cff('0x36')]=qs[_0x2cff('0x2e')](_[_0x2cff('0x37')](_0x3c51d2[_0x2cff('0x2d')],_0x10e29e[_0x2cff('0x2e')]),_0x14e250);if(_0x3c51d2[_0x2cff('0x2d')]['filter']){_0x4a7e0c[_0x2cff('0x36')]=_['merge'](_0x4a7e0c[_0x2cff('0x36')],{'$or':_[_0x2cff('0x26')](_0x14e250,function(_0x445376){if(_0x445376[_0x2cff('0x29')]!==_0x2cff('0x38')){var _0x4976f7={};_0x4976f7[_0x445376[_0x2cff('0x23')]]={'$like':'%'+_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x39')]+'%'};return _0x4976f7;}})});}_0x4a7e0c=_['merge']({},_0x4a7e0c,_0x3c51d2[_0x2cff('0x3a')]);var _0x1d5c04={'where':_0x4a7e0c[_0x2cff('0x36')]};return db['ServicenowConfiguration'][_0x2cff('0x1a')](_0x1d5c04)[_0x2cff('0x20')](function(_0x3c1a80){_0x5c1d38[_0x2cff('0x1a')]=_0x3c1a80;if(_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x3b')]){_0x4a7e0c['include']=[{'all':!![]}];}return db[_0x2cff('0x27')]['findAll'](_0x4a7e0c);})[_0x2cff('0x20')](function(_0x13db03){_0x5c1d38[_0x2cff('0x3c')]=_0x13db03;return _0x5c1d38;})[_0x2cff('0x20')](respondWithFilteredResult(_0x138745,_0x4a7e0c))['catch'](handleError(_0x138745,null));};exports[_0x2cff('0x3d')]=function(_0x1d9366,_0x28fc08){var _0x41a766={'raw':![],'where':{'id':_0x1d9366['params']['id']}},_0x1af0d={};_0x1af0d[_0x2cff('0x2b')]=_['keys'](db[_0x2cff('0x27')]['rawAttributes']);_0x1af0d[_0x2cff('0x2d')]=_[_0x2cff('0x2c')](_0x1d9366[_0x2cff('0x2d')]);_0x1af0d[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x1af0d[_0x2cff('0x2b')],_0x1af0d['query']);_0x41a766[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x1af0d[_0x2cff('0x2b')],qs[_0x2cff('0x31')](_0x1d9366['query'][_0x2cff('0x31')]));_0x41a766[_0x2cff('0x30')]=_0x41a766[_0x2cff('0x30')][_0x2cff('0x32')]?_0x41a766[_0x2cff('0x30')]:_0x1af0d['model'];if(_0x1d9366['query'][_0x2cff('0x3b')]){_0x41a766['include']=[{'all':!![]}];}_0x41a766=_[_0x2cff('0x3e')]({},_0x41a766,_0x1d9366[_0x2cff('0x3a')]);return db[_0x2cff('0x27')]['find'](_0x41a766)[_0x2cff('0x20')](handleEntityNotFound(_0x28fc08,null))[_0x2cff('0x20')](respondWithResult(_0x28fc08,null))[_0x2cff('0x3f')](handleError(_0x28fc08,null));};exports[_0x2cff('0x40')]=function(_0x2fe062,_0x134d88){return db[_0x2cff('0x27')][_0x2cff('0x40')](_0x2fe062[_0x2cff('0x41')],{})[_0x2cff('0x20')](respondWithResult(_0x134d88,0xc9))['catch'](handleError(_0x134d88,null));};exports[_0x2cff('0x42')]=function(_0xef8e83,_0x3a08db){if(_0xef8e83['body']['id']){delete _0xef8e83[_0x2cff('0x41')]['id'];}return db[_0x2cff('0x27')][_0x2cff('0x43')]({'where':{'id':_0xef8e83[_0x2cff('0x44')]['id']}})[_0x2cff('0x20')](handleEntityNotFound(_0x3a08db,null))[_0x2cff('0x20')](saveUpdates(_0xef8e83[_0x2cff('0x41')],null))[_0x2cff('0x20')](respondWithResult(_0x3a08db,null))['catch'](handleError(_0x3a08db,null));};exports['destroy']=function(_0x5746d4,_0x29dc9b){return db[_0x2cff('0x27')][_0x2cff('0x43')]({'where':{'id':_0x5746d4[_0x2cff('0x44')]['id']}})['then'](handleEntityNotFound(_0x29dc9b,null))['then'](removeEntity(_0x29dc9b,null))[_0x2cff('0x3f')](handleError(_0x29dc9b,null));};exports[_0x2cff('0x45')]=function(_0x411106,_0x2a99d5,_0x538363){var _0x16469b={};var _0x144dfd={};var _0x3d1ab9;var _0x1618f6;return db[_0x2cff('0x27')][_0x2cff('0x46')]({'where':{'id':_0x411106[_0x2cff('0x44')]['id']}})['then'](handleEntityNotFound(_0x2a99d5,null))[_0x2cff('0x20')](function(_0x388ac0){if(_0x388ac0){_0x3d1ab9=_0x388ac0;_0x144dfd[_0x2cff('0x2b')]=_[_0x2cff('0x2c')](db['ServicenowField']['rawAttributes']);_0x144dfd['query']=_[_0x2cff('0x2c')](_0x411106['query']);_0x144dfd['filters']=_[_0x2cff('0x2f')](_0x144dfd[_0x2cff('0x2b')],_0x144dfd[_0x2cff('0x2d')]);_0x16469b[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x144dfd['model'],qs[_0x2cff('0x31')](_0x411106[_0x2cff('0x2d')][_0x2cff('0x31')]));_0x16469b[_0x2cff('0x30')]=_0x16469b[_0x2cff('0x30')][_0x2cff('0x32')]?_0x16469b[_0x2cff('0x30')]:_0x144dfd[_0x2cff('0x2b')];_0x16469b[_0x2cff('0x34')]=qs['sort'](_0x411106[_0x2cff('0x2d')][_0x2cff('0x35')]);_0x16469b[_0x2cff('0x36')]=qs[_0x2cff('0x2e')](_['pick'](_0x411106[_0x2cff('0x2d')],_0x144dfd['filters']));if(_0x411106[_0x2cff('0x2d')][_0x2cff('0x39')]){_0x16469b['where']=_[_0x2cff('0x3e')](_0x16469b['where'],{'$or':_[_0x2cff('0x26')](_0x16469b[_0x2cff('0x30')],function(_0x14a5f4){var _0x1ca73e={};_0x1ca73e[_0x14a5f4]={'$like':'%'+_0x411106['query']['filter']+'%'};return _0x1ca73e;})});}_0x16469b=_[_0x2cff('0x3e')]({},_0x16469b,_0x411106[_0x2cff('0x3a')]);return _0x3d1ab9['getFields'](_0x16469b);}})[_0x2cff('0x20')](function(_0x1d4727){if(_0x1d4727){_0x1618f6=_0x1d4727[_0x2cff('0x32')];if(!_0x411106[_0x2cff('0x2d')][_0x2cff('0x33')](_0x2cff('0x47'))){_0x16469b['limit']=qs[_0x2cff('0x19')](_0x411106[_0x2cff('0x2d')]['limit']);_0x16469b[_0x2cff('0x17')]=qs[_0x2cff('0x17')](_0x411106[_0x2cff('0x2d')][_0x2cff('0x17')]);}return _0x3d1ab9[_0x2cff('0x45')](_0x16469b);}})['then'](function(_0x2c36b9){if(_0x2c36b9){return _0x2c36b9?{'count':_0x1618f6,'rows':_0x2c36b9}:null;}})[_0x2cff('0x20')](respondWithResult(_0x2a99d5,null))[_0x2cff('0x3f')](handleError(_0x2a99d5,null));};exports[_0x2cff('0x48')]=function(_0x4780b5,_0x18094a,_0x109a94){var _0x6ba7c9={};var _0x591e45={};var _0x2fa841;var _0x9b4b8b;return db[_0x2cff('0x27')]['findOne']({'where':{'id':_0x4780b5[_0x2cff('0x44')]['id']}})['then'](handleEntityNotFound(_0x18094a,null))[_0x2cff('0x20')](function(_0x59336f){if(_0x59336f){_0x2fa841=_0x59336f;_0x591e45['model']=_[_0x2cff('0x2c')](db[_0x2cff('0x49')][_0x2cff('0x28')]);_0x591e45[_0x2cff('0x2d')]=_[_0x2cff('0x2c')](_0x4780b5[_0x2cff('0x2d')]);_0x591e45[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x591e45[_0x2cff('0x2b')],_0x591e45[_0x2cff('0x2d')]);_0x6ba7c9[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x591e45['model'],qs['fields'](_0x4780b5['query']['fields']));_0x6ba7c9['attributes']=_0x6ba7c9[_0x2cff('0x30')]['length']?_0x6ba7c9[_0x2cff('0x30')]:_0x591e45['model'];_0x6ba7c9[_0x2cff('0x34')]=qs[_0x2cff('0x35')](_0x4780b5['query'][_0x2cff('0x35')]);_0x6ba7c9[_0x2cff('0x36')]=qs['filters'](_[_0x2cff('0x37')](_0x4780b5['query'],_0x591e45[_0x2cff('0x2e')]));if(_0x4780b5['query'][_0x2cff('0x39')]){_0x6ba7c9[_0x2cff('0x36')]=_[_0x2cff('0x3e')](_0x6ba7c9[_0x2cff('0x36')],{'$or':_['map'](_0x6ba7c9[_0x2cff('0x30')],function(_0x1c68e2){var _0xd750af={};_0xd750af[_0x1c68e2]={'$like':'%'+_0x4780b5['query'][_0x2cff('0x39')]+'%'};return _0xd750af;})});}_0x6ba7c9=_['merge']({},_0x6ba7c9,_0x4780b5[_0x2cff('0x3a')]);return _0x2fa841[_0x2cff('0x48')](_0x6ba7c9);}})[_0x2cff('0x20')](function(_0x19b596){if(_0x19b596){_0x9b4b8b=_0x19b596[_0x2cff('0x32')];if(!_0x4780b5['query'][_0x2cff('0x33')](_0x2cff('0x47'))){_0x6ba7c9['limit']=qs['limit'](_0x4780b5[_0x2cff('0x2d')][_0x2cff('0x19')]);_0x6ba7c9['offset']=qs[_0x2cff('0x17')](_0x4780b5[_0x2cff('0x2d')][_0x2cff('0x17')]);}return _0x2fa841[_0x2cff('0x48')](_0x6ba7c9);}})['then'](function(_0x120e33){if(_0x120e33){return _0x120e33?{'count':_0x9b4b8b,'rows':_0x120e33}:null;}})[_0x2cff('0x20')](respondWithResult(_0x18094a,null))['catch'](handleError(_0x18094a,null));};exports[_0x2cff('0x4a')]=function(_0x5caa08,_0x5bfd2b,_0x6cc4a6){var _0x35a4c0={};var _0x4edf13={};var _0x593593;var _0x5c5b3d;return db[_0x2cff('0x27')]['findOne']({'where':{'id':_0x5caa08[_0x2cff('0x44')]['id']}})[_0x2cff('0x20')](handleEntityNotFound(_0x5bfd2b,null))['then'](function(_0x5d7bd8){if(_0x5d7bd8){_0x593593=_0x5d7bd8;_0x4edf13[_0x2cff('0x2b')]=_['keys'](db['ServicenowField'][_0x2cff('0x28')]);_0x4edf13[_0x2cff('0x2d')]=_[_0x2cff('0x2c')](_0x5caa08[_0x2cff('0x2d')]);_0x4edf13[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x4edf13[_0x2cff('0x2b')],_0x4edf13[_0x2cff('0x2d')]);_0x35a4c0[_0x2cff('0x30')]=_['intersection'](_0x4edf13['model'],qs[_0x2cff('0x31')](_0x5caa08['query']['fields']));_0x35a4c0[_0x2cff('0x30')]=_0x35a4c0[_0x2cff('0x30')][_0x2cff('0x32')]?_0x35a4c0[_0x2cff('0x30')]:_0x4edf13[_0x2cff('0x2b')];_0x35a4c0[_0x2cff('0x34')]=qs[_0x2cff('0x35')](_0x5caa08[_0x2cff('0x2d')]['sort']);_0x35a4c0[_0x2cff('0x36')]=qs[_0x2cff('0x2e')](_[_0x2cff('0x37')](_0x5caa08[_0x2cff('0x2d')],_0x4edf13[_0x2cff('0x2e')]));if(_0x5caa08['query']['filter']){_0x35a4c0['where']=_['merge'](_0x35a4c0[_0x2cff('0x36')],{'$or':_['map'](_0x35a4c0['attributes'],function(_0x4578c0){var _0xa2e5f5={};_0xa2e5f5[_0x4578c0]={'$like':'%'+_0x5caa08[_0x2cff('0x2d')]['filter']+'%'};return _0xa2e5f5;})});}_0x35a4c0=_[_0x2cff('0x3e')]({},_0x35a4c0,_0x5caa08['options']);return _0x593593['getDescriptions'](_0x35a4c0);}})['then'](function(_0x4f5ca3){if(_0x4f5ca3){_0x5c5b3d=_0x4f5ca3[_0x2cff('0x32')];if(!_0x5caa08[_0x2cff('0x2d')]['hasOwnProperty']('nolimit')){_0x35a4c0[_0x2cff('0x19')]=qs[_0x2cff('0x19')](_0x5caa08[_0x2cff('0x2d')]['limit']);_0x35a4c0['offset']=qs[_0x2cff('0x17')](_0x5caa08[_0x2cff('0x2d')][_0x2cff('0x17')]);}return _0x593593[_0x2cff('0x4a')](_0x35a4c0);}})[_0x2cff('0x20')](function(_0x290ce5){if(_0x290ce5){return _0x290ce5?{'count':_0x5c5b3d,'rows':_0x290ce5}:null;}})[_0x2cff('0x20')](respondWithResult(_0x5bfd2b,null))['catch'](handleError(_0x5bfd2b,null));};
\ No newline at end of file
index fedcbda..27ab734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40ac=['api','moment','bluebird','request-promise','path','rimraf','./intServicenowConfiguration.attributes','exports','ServicenowConfiguration','int_servicenow_configurations','lodash','../../config/logger'];(function(_0xf84a59,_0x1092b0){var _0x54cb4c=function(_0xa7d3c){while(--_0xa7d3c){_0xf84a59['push'](_0xf84a59['shift']());}};_0x54cb4c(++_0x1092b0);}(_0x40ac,0x1de));var _0xc40a=function(_0x53a1be,_0x42dff2){_0x53a1be=_0x53a1be-0x0;var _0x38ae84=_0x40ac[_0x53a1be];return _0x38ae84;};'use strict';var _=require(_0xc40a('0x0'));var util=require('util');var logger=require(_0xc40a('0x1'))(_0xc40a('0x2'));var moment=require(_0xc40a('0x3'));var BPromise=require(_0xc40a('0x4'));var rp=require(_0xc40a('0x5'));var fs=require('fs');var path=require(_0xc40a('0x6'));var rimraf=require(_0xc40a('0x7'));var config=require('../../config/environment');var attributes=require(_0xc40a('0x8'));module[_0xc40a('0x9')]=function(_0xd6d891,_0x5e179f){return _0xd6d891['define'](_0xc40a('0xa'),attributes,{'tableName':_0xc40a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d41=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','lodash'];(function(_0x405f7c,_0x59aaab){var _0x184afb=function(_0x3a188c){while(--_0x3a188c){_0x405f7c['push'](_0x405f7c['shift']());}};_0x184afb(++_0x59aaab);}(_0x4d41,0x153));var _0x14d4=function(_0x31ba95,_0x3dcb4c){_0x31ba95=_0x31ba95-0x0;var _0x1be31f=_0x4d41[_0x31ba95];return _0x1be31f;};'use strict';var _=require(_0x14d4('0x0'));var util=require(_0x14d4('0x1'));var logger=require(_0x14d4('0x2'))('api');var moment=require(_0x14d4('0x3'));var BPromise=require(_0x14d4('0x4'));var rp=require(_0x14d4('0x5'));var fs=require('fs');var path=require(_0x14d4('0x6'));var rimraf=require(_0x14d4('0x7'));var config=require(_0x14d4('0x8'));var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0x21f1f2,_0x35eabb){return _0x21f1f2[_0x14d4('0x9')]('ServicenowConfiguration',attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 869af23..c5397bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa82b=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa82b,0x18d));var _0xba82=function(_0x2af009,_0x5432ee){_0x2af009=_0x2af009-0x0;var _0x46d15f=_0xa82b[_0x2af009];return _0x46d15f;};'use strict';var _=require(_0xba82('0x0'));var util=require(_0xba82('0x1'));var moment=require(_0xba82('0x2'));var BPromise=require(_0xba82('0x3'));var rs=require(_0xba82('0x4'));var fs=require('fs');var Redis=require(_0xba82('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xba82('0x6'));var logger=require(_0xba82('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xba82('0x8'));var client=jayson[_0xba82('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23942b,_0x10bcc8,_0x7f99a7){return new BPromise(function(_0x3ec723,_0x2c68cc){return client[_0xba82('0xa')](_0x23942b,_0x7f99a7)[_0xba82('0xb')](function(_0x4d76a2){logger[_0xba82('0xc')](_0xba82('0xd'),_0x10bcc8,_0xba82('0xe'));logger[_0xba82('0xf')](_0xba82('0x10'),_0x10bcc8,_0xba82('0xe'),JSON['stringify'](_0x4d76a2));if(_0x4d76a2[_0xba82('0x11')]){if(_0x4d76a2[_0xba82('0x11')][_0xba82('0x12')]===0x1f4){logger[_0xba82('0x11')](_0xba82('0xd'),_0x10bcc8,_0x4d76a2[_0xba82('0x11')]['message']);return _0x2c68cc(_0x4d76a2[_0xba82('0x11')][_0xba82('0x13')]);}logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x10bcc8,_0x4d76a2[_0xba82('0x11')][_0xba82('0x13')]);return _0x3ec723(_0x4d76a2[_0xba82('0x11')][_0xba82('0x13')]);}else{logger[_0xba82('0xc')](_0xba82('0xd'),_0x10bcc8,_0xba82('0xe'));_0x3ec723(_0x4d76a2[_0xba82('0x14')]['message']);}})[_0xba82('0x15')](function(_0x4ed1b6){logger[_0xba82('0x11')](_0xba82('0xd'),_0x10bcc8,_0x4ed1b6);_0x2c68cc(_0x4ed1b6);});});}
\ No newline at end of file
+var _0x74af=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x20e575,_0x14bc97){var _0x1224a0=function(_0xf0179){while(--_0xf0179){_0x20e575['push'](_0x20e575['shift']());}};_0x1224a0(++_0x14bc97);}(_0x74af,0x178));var _0xf74a=function(_0x39f5bd,_0x32e0b0){_0x39f5bd=_0x39f5bd-0x0;var _0x570d22=_0x74af[_0x39f5bd];return _0x570d22;};'use strict';var _=require(_0xf74a('0x0'));var util=require(_0xf74a('0x1'));var moment=require(_0xf74a('0x2'));var BPromise=require(_0xf74a('0x3'));var rs=require(_0xf74a('0x4'));var fs=require('fs');var Redis=require(_0xf74a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf74a('0x6'));var logger=require(_0xf74a('0x7'))(_0xf74a('0x8'));var config=require(_0xf74a('0x9'));var jayson=require(_0xf74a('0xa'));var client=jayson[_0xf74a('0xb')][_0xf74a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x543438,_0x32601f,_0x444108){return new BPromise(function(_0x25fdb7,_0x9015f9){return client[_0xf74a('0xd')](_0x543438,_0x444108)[_0xf74a('0xe')](function(_0x404aa2){logger[_0xf74a('0xf')](_0xf74a('0x10'),_0x32601f,_0xf74a('0x11'));logger[_0xf74a('0x12')](_0xf74a('0x13'),_0x32601f,_0xf74a('0x11'),JSON[_0xf74a('0x14')](_0x404aa2));if(_0x404aa2[_0xf74a('0x15')]){if(_0x404aa2['error'][_0xf74a('0x16')]===0x1f4){logger['error'](_0xf74a('0x10'),_0x32601f,_0x404aa2[_0xf74a('0x15')][_0xf74a('0x17')]);return _0x9015f9(_0x404aa2[_0xf74a('0x15')][_0xf74a('0x17')]);}logger[_0xf74a('0x15')]('ServicenowConfiguration,\x20%s,\x20%s',_0x32601f,_0x404aa2[_0xf74a('0x15')]['message']);return _0x25fdb7(_0x404aa2[_0xf74a('0x15')][_0xf74a('0x17')]);}else{logger['info'](_0xf74a('0x10'),_0x32601f,_0xf74a('0x11'));_0x25fdb7(_0x404aa2[_0xf74a('0x18')][_0xf74a('0x17')]);}})['catch'](function(_0x398d39){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x32601f,_0x398d39);_0x9015f9(_0x398d39);});});}
\ No newline at end of file
index d7eb33d..75e80fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x194e=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','create','put','delete','destroy','exports','multer','util'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x194e,0x1ca));var _0xe194=function(_0x4e7be0,_0x1914b2){_0x4e7be0=_0x4e7be0-0x0;var _0x41978e=_0x194e[_0x4e7be0];return _0x41978e;};'use strict';var multer=require(_0xe194('0x0'));var util=require(_0xe194('0x1'));var path=require(_0xe194('0x2'));var timeout=require(_0xe194('0x3'));var express=require(_0xe194('0x4'));var router=express[_0xe194('0x5')]();var fs_extra=require(_0xe194('0x6'));var auth=require(_0xe194('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xe194('0x8'));var controller=require(_0xe194('0x9'));router[_0xe194('0xa')]('/',auth[_0xe194('0xb')](),controller[_0xe194('0xc')]);router[_0xe194('0xa')](_0xe194('0xd'),auth['isAuthenticated'](),controller[_0xe194('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe194('0xf')]);router[_0xe194('0x10')]('/:id',auth[_0xe194('0xb')](),controller['update']);router[_0xe194('0x11')](_0xe194('0xd'),auth[_0xe194('0xb')](),controller[_0xe194('0x12')]);module[_0xe194('0x13')]=router;
\ No newline at end of file
+var _0x0ec1=['exports','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','index','isAuthenticated','show','create','put','/:id','update','delete'];(function(_0x4084aa,_0x456d3d){var _0x6953d6=function(_0x417533){while(--_0x417533){_0x4084aa['push'](_0x4084aa['shift']());}};_0x6953d6(++_0x456d3d);}(_0x0ec1,0xd3));var _0x10ec=function(_0x378277,_0x182e8e){_0x378277=_0x378277-0x0;var _0x1a72f6=_0x0ec1[_0x378277];return _0x1a72f6;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x10ec('0x0'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x10ec('0x1'));var interaction=require(_0x10ec('0x2'));var config=require(_0x10ec('0x3'));var controller=require(_0x10ec('0x4'));router[_0x10ec('0x5')]('/',auth['isAuthenticated'](),controller[_0x10ec('0x6')]);router[_0x10ec('0x5')]('/:id',auth[_0x10ec('0x7')](),controller[_0x10ec('0x8')]);router['post']('/',auth['isAuthenticated'](),controller[_0x10ec('0x9')]);router[_0x10ec('0xa')](_0x10ec('0xb'),auth[_0x10ec('0x7')](),controller[_0x10ec('0xc')]);router[_0x10ec('0xd')](_0x10ec('0xb'),auth[_0x10ec('0x7')](),controller['destroy']);module[_0x10ec('0xe')]=router;
\ No newline at end of file
index d2e47e8..7cc5c2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ada=['STRING','sequelize','ENUM','variable','customVariable','keyValue','string'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x5ada,0x1d6));var _0xa5ad=function(_0x511d5c,_0x4d44a0){_0x511d5c=_0x511d5c-0x0;var _0x128d3b=_0x5ada[_0x511d5c];return _0x128d3b;};'use strict';var Sequelize=require(_0xa5ad('0x0'));module['exports']={'type':{'type':Sequelize[_0xa5ad('0x1')]('string',_0xa5ad('0x2'),_0xa5ad('0x3'),_0xa5ad('0x4'),'picklist'),'defaultValue':_0xa5ad('0x5')},'content':{'type':Sequelize[_0xa5ad('0x6')]},'key':{'type':Sequelize[_0xa5ad('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0xa5ad('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xa5ad('0x6')]},'idField':{'type':Sequelize[_0xa5ad('0x6')]},'nameField':{'type':Sequelize[_0xa5ad('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa5ad('0x6')]}};
\ No newline at end of file
+var _0xae76=['string','variable','customVariable','keyValue','picklist','STRING','sequelize','ENUM'];(function(_0x45d886,_0x694715){var _0x3c1904=function(_0x120ec1){while(--_0x120ec1){_0x45d886['push'](_0x45d886['shift']());}};_0x3c1904(++_0x694715);}(_0xae76,0xde));var _0x6ae7=function(_0x3962b6,_0x40f112){_0x3962b6=_0x3962b6-0x0;var _0xbe12e4=_0xae76[_0x3962b6];return _0xbe12e4;};'use strict';var Sequelize=require(_0x6ae7('0x0'));module['exports']={'type':{'type':Sequelize[_0x6ae7('0x1')](_0x6ae7('0x2'),_0x6ae7('0x3'),_0x6ae7('0x4'),_0x6ae7('0x5'),_0x6ae7('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x6ae7('0x7')]},'key':{'type':Sequelize[_0x6ae7('0x7')]},'keyType':{'type':Sequelize[_0x6ae7('0x1')]('string','variable',_0x6ae7('0x4'))},'keyContent':{'type':Sequelize[_0x6ae7('0x7')]},'idField':{'type':Sequelize[_0x6ae7('0x7')]},'nameField':{'type':Sequelize[_0x6ae7('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index de77999..2936c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4219=['length','includeAll','include','merge','options','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','save','update','then','destroy','name','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','VIRTUAL','findAll','catch','show','params'];(function(_0x204794,_0x343447){var _0x45d8da=function(_0x153105){while(--_0x153105){_0x204794['push'](_0x204794['shift']());}};_0x45d8da(++_0x343447);}(_0x4219,0x1ab));var _0x9421=function(_0x1a0bc3,_0x2fd122){_0x1a0bc3=_0x1a0bc3-0x0;var _0x501471=_0x4219[_0x1a0bc3];return _0x501471;};'use strict';var emlformat=require(_0x9421('0x0'));var rimraf=require(_0x9421('0x1'));var zipdir=require(_0x9421('0x2'));var jsonpatch=require(_0x9421('0x3'));var rp=require(_0x9421('0x4'));var moment=require('moment');var BPromise=require(_0x9421('0x5'));var Mustache=require(_0x9421('0x6'));var util=require('util');var path=require('path');var sox=require(_0x9421('0x7'));var csv=require(_0x9421('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9421('0x9'));var _=require(_0x9421('0xa'));var squel=require(_0x9421('0xb'));var crypto=require(_0x9421('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9421('0xd'));var toCsv=require(_0x9421('0x8'));var querystring=require(_0x9421('0xe'));var Papa=require(_0x9421('0xf'));var Redis=require(_0x9421('0x10'));var authService=require(_0x9421('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9421('0x12'));var hardwareService=require(_0x9421('0x13'));var logger=require(_0x9421('0x14'))(_0x9421('0x15'));var utils=require(_0x9421('0x16'));var config=require(_0x9421('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3725eb,_0x4d691c){_0x4d691c=_0x4d691c||0xcc;return function(_0x1ac7de){if(_0x1ac7de){return _0x3725eb[_0x9421('0x18')](_0x4d691c);}return _0x3725eb[_0x9421('0x19')](_0x4d691c)[_0x9421('0x1a')]();};}function respondWithResult(_0x508533,_0x2cdcd4){_0x2cdcd4=_0x2cdcd4||0xc8;return function(_0x5a1afd){if(_0x5a1afd){return _0x508533[_0x9421('0x19')](_0x2cdcd4)[_0x9421('0x1b')](_0x5a1afd);}};}function respondWithFilteredResult(_0x57464d,_0x4adb04){return function(_0x4f25af){if(_0x4f25af){var _0x2d573c=typeof _0x4adb04['offset']===_0x9421('0x1c')&&typeof _0x4adb04['limit']==='undefined';var _0x51f920=_0x4f25af[_0x9421('0x1d')];var _0x35ca20=_0x2d573c?0x0:_0x4adb04[_0x9421('0x1e')];var _0x50f1a3=_0x2d573c?_0x4f25af['count']:_0x4adb04[_0x9421('0x1e')]+_0x4adb04['limit'];var _0x4c8f6f;if(_0x50f1a3>=_0x51f920){_0x50f1a3=_0x51f920;_0x4c8f6f=0xc8;}else{_0x4c8f6f=0xce;}_0x57464d['status'](_0x4c8f6f);return _0x57464d[_0x9421('0x1f')](_0x9421('0x20'),_0x35ca20+'-'+_0x50f1a3+'/'+_0x51f920)['json'](_0x4f25af);}return null;};}function patchUpdates(_0x425b12){return function(_0x12bc48){try{jsonpatch['apply'](_0x12bc48,_0x425b12,!![]);}catch(_0x1b3a9f){return BPromise['reject'](_0x1b3a9f);}return _0x12bc48[_0x9421('0x21')]();};}function saveUpdates(_0x3d3f43,_0x206bdd){return function(_0x538fb5){if(_0x538fb5){return _0x538fb5[_0x9421('0x22')](_0x3d3f43)[_0x9421('0x23')](function(_0x1fed0a){return _0x1fed0a;});}return null;};}function removeEntity(_0x14d935,_0x544a29){return function(_0x7c76ca){if(_0x7c76ca){return _0x7c76ca[_0x9421('0x24')]()[_0x9421('0x23')](function(){_0x14d935[_0x9421('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3eb7ee,_0x54b8c0){return function(_0x191781){if(!_0x191781){_0x3eb7ee[_0x9421('0x18')](0x194);}return _0x191781;};}function handleError(_0x49ab30,_0x4b6e57){_0x4b6e57=_0x4b6e57||0x1f4;return function(_0x5f3abe){logger['error'](_0x5f3abe['stack']);if(_0x5f3abe[_0x9421('0x25')]){delete _0x5f3abe[_0x9421('0x25')];}_0x49ab30[_0x9421('0x19')](_0x4b6e57)['send'](_0x5f3abe);};}exports['index']=function(_0x43c082,_0x7170d4){var _0x3877ee={},_0x1e3523={},_0x3a2d8b={'count':0x0,'rows':[]};var _0x1a86eb=_[_0x9421('0x26')](db[_0x9421('0x27')][_0x9421('0x28')],function(_0x5580a7){return{'name':_0x5580a7[_0x9421('0x29')],'type':_0x5580a7[_0x9421('0x2a')][_0x9421('0x2b')]};});_0x1e3523[_0x9421('0x2c')]=_[_0x9421('0x26')](_0x1a86eb,_0x9421('0x25'));_0x1e3523[_0x9421('0x2d')]=_[_0x9421('0x2e')](_0x43c082[_0x9421('0x2d')]);_0x1e3523[_0x9421('0x2f')]=_[_0x9421('0x30')](_0x1e3523['model'],_0x1e3523[_0x9421('0x2d')]);_0x3877ee[_0x9421('0x31')]=_[_0x9421('0x30')](_0x1e3523['model'],qs['fields'](_0x43c082[_0x9421('0x2d')][_0x9421('0x32')]));_0x3877ee[_0x9421('0x31')]=_0x3877ee[_0x9421('0x31')]['length']?_0x3877ee['attributes']:_0x1e3523[_0x9421('0x2c')];if(!_0x43c082[_0x9421('0x2d')][_0x9421('0x33')](_0x9421('0x34'))){_0x3877ee['limit']=qs[_0x9421('0x35')](_0x43c082[_0x9421('0x2d')]['limit']);_0x3877ee[_0x9421('0x1e')]=qs['offset'](_0x43c082['query']['offset']);}_0x3877ee['order']=qs[_0x9421('0x36')](_0x43c082['query'][_0x9421('0x36')]);_0x3877ee[_0x9421('0x37')]=qs[_0x9421('0x2f')](_[_0x9421('0x38')](_0x43c082[_0x9421('0x2d')],_0x1e3523['filters']),_0x1a86eb);if(_0x43c082[_0x9421('0x2d')][_0x9421('0x39')]){_0x3877ee[_0x9421('0x37')]=_['merge'](_0x3877ee['where'],{'$or':_[_0x9421('0x26')](_0x1a86eb,function(_0x539530){if(_0x539530[_0x9421('0x2a')]!==_0x9421('0x3a')){var _0x2c444c={};_0x2c444c[_0x539530[_0x9421('0x25')]]={'$like':'%'+_0x43c082[_0x9421('0x2d')][_0x9421('0x39')]+'%'};return _0x2c444c;}})});}_0x3877ee=_['merge']({},_0x3877ee,_0x43c082['options']);var _0x37a05e={'where':_0x3877ee[_0x9421('0x37')]};return db[_0x9421('0x27')][_0x9421('0x1d')](_0x37a05e)[_0x9421('0x23')](function(_0x62d83c){_0x3a2d8b[_0x9421('0x1d')]=_0x62d83c;if(_0x43c082['query']['includeAll']){_0x3877ee['include']=[{'all':!![]}];}return db[_0x9421('0x27')][_0x9421('0x3b')](_0x3877ee);})[_0x9421('0x23')](function(_0x55c09d){_0x3a2d8b['rows']=_0x55c09d;return _0x3a2d8b;})[_0x9421('0x23')](respondWithFilteredResult(_0x7170d4,_0x3877ee))[_0x9421('0x3c')](handleError(_0x7170d4,null));};exports[_0x9421('0x3d')]=function(_0x3923d1,_0x23508f){var _0xb14c88={'raw':!![],'where':{'id':_0x3923d1[_0x9421('0x3e')]['id']}},_0x25d54e={};_0x25d54e[_0x9421('0x2c')]=_[_0x9421('0x2e')](db[_0x9421('0x27')][_0x9421('0x28')]);_0x25d54e[_0x9421('0x2d')]=_[_0x9421('0x2e')](_0x3923d1[_0x9421('0x2d')]);_0x25d54e['filters']=_[_0x9421('0x30')](_0x25d54e['model'],_0x25d54e[_0x9421('0x2d')]);_0xb14c88['attributes']=_[_0x9421('0x30')](_0x25d54e[_0x9421('0x2c')],qs[_0x9421('0x32')](_0x3923d1[_0x9421('0x2d')][_0x9421('0x32')]));_0xb14c88['attributes']=_0xb14c88['attributes'][_0x9421('0x3f')]?_0xb14c88[_0x9421('0x31')]:_0x25d54e[_0x9421('0x2c')];if(_0x3923d1['query'][_0x9421('0x40')]){_0xb14c88[_0x9421('0x41')]=[{'all':!![]}];}_0xb14c88=_[_0x9421('0x42')]({},_0xb14c88,_0x3923d1[_0x9421('0x43')]);return db['ServicenowField']['find'](_0xb14c88)[_0x9421('0x23')](handleEntityNotFound(_0x23508f,null))[_0x9421('0x23')](respondWithResult(_0x23508f,null))[_0x9421('0x3c')](handleError(_0x23508f,null));};exports[_0x9421('0x44')]=function(_0x19c41c,_0x2e3109){return db[_0x9421('0x27')][_0x9421('0x44')](_0x19c41c[_0x9421('0x45')],{})[_0x9421('0x23')](respondWithResult(_0x2e3109,0xc9))['catch'](handleError(_0x2e3109,null));};exports[_0x9421('0x22')]=function(_0x4422c3,_0x144643){if(_0x4422c3[_0x9421('0x45')]['id']){delete _0x4422c3['body']['id'];}return db[_0x9421('0x27')]['find']({'where':{'id':_0x4422c3['params']['id']}})[_0x9421('0x23')](handleEntityNotFound(_0x144643,null))['then'](saveUpdates(_0x4422c3[_0x9421('0x45')],null))[_0x9421('0x23')](respondWithResult(_0x144643,null))[_0x9421('0x3c')](handleError(_0x144643,null));};exports['destroy']=function(_0x608bdc,_0xa69749){return db[_0x9421('0x27')]['find']({'where':{'id':_0x608bdc['params']['id']}})['then'](handleEntityNotFound(_0xa69749,null))[_0x9421('0x23')](removeEntity(_0xa69749,null))[_0x9421('0x3c')](handleError(_0xa69749,null));};
\ No newline at end of file
+var _0xafe3=['offset','undefined','limit','count','set','reject','update','then','destroy','end','stack','name','ServicenowField','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','findAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','status','json'];(function(_0x5190d1,_0x6b8d68){var _0x4ce3f3=function(_0xe7170a){while(--_0xe7170a){_0x5190d1['push'](_0x5190d1['shift']());}};_0x4ce3f3(++_0x6b8d68);}(_0xafe3,0x1ad));var _0x3afe=function(_0x2dedcc,_0x1f4ace){_0x2dedcc=_0x2dedcc-0x0;var _0x3c16ab=_0xafe3[_0x2dedcc];return _0x3c16ab;};'use strict';var emlformat=require(_0x3afe('0x0'));var rimraf=require(_0x3afe('0x1'));var zipdir=require(_0x3afe('0x2'));var jsonpatch=require(_0x3afe('0x3'));var rp=require(_0x3afe('0x4'));var moment=require('moment');var BPromise=require(_0x3afe('0x5'));var Mustache=require(_0x3afe('0x6'));var util=require(_0x3afe('0x7'));var path=require(_0x3afe('0x8'));var sox=require(_0x3afe('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3afe('0xa'));var squel=require(_0x3afe('0xb'));var crypto=require('crypto');var jsforce=require(_0x3afe('0xc'));var deskjs=require(_0x3afe('0xd'));var toCsv=require(_0x3afe('0xe'));var querystring=require(_0x3afe('0xf'));var Papa=require(_0x3afe('0x10'));var Redis=require(_0x3afe('0x11'));var authService=require(_0x3afe('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3afe('0x13'));var hardwareService=require(_0x3afe('0x14'));var logger=require('../../config/logger')(_0x3afe('0x15'));var utils=require(_0x3afe('0x16'));var config=require(_0x3afe('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31bd1a,_0x22a312){_0x22a312=_0x22a312||0xcc;return function(_0x142508){if(_0x142508){return _0x31bd1a['sendStatus'](_0x22a312);}return _0x31bd1a[_0x3afe('0x18')](_0x22a312)['end']();};}function respondWithResult(_0x439f59,_0x1a8990){_0x1a8990=_0x1a8990||0xc8;return function(_0x28f61b){if(_0x28f61b){return _0x439f59[_0x3afe('0x18')](_0x1a8990)[_0x3afe('0x19')](_0x28f61b);}};}function respondWithFilteredResult(_0x1859db,_0x11407f){return function(_0x55bf5d){if(_0x55bf5d){var _0x4a70a0=typeof _0x11407f[_0x3afe('0x1a')]===_0x3afe('0x1b')&&typeof _0x11407f[_0x3afe('0x1c')]===_0x3afe('0x1b');var _0x372c8b=_0x55bf5d['count'];var _0x4af4b9=_0x4a70a0?0x0:_0x11407f[_0x3afe('0x1a')];var _0xdb252d=_0x4a70a0?_0x55bf5d[_0x3afe('0x1d')]:_0x11407f[_0x3afe('0x1a')]+_0x11407f[_0x3afe('0x1c')];var _0x4721de;if(_0xdb252d>=_0x372c8b){_0xdb252d=_0x372c8b;_0x4721de=0xc8;}else{_0x4721de=0xce;}_0x1859db[_0x3afe('0x18')](_0x4721de);return _0x1859db[_0x3afe('0x1e')]('Content-Range',_0x4af4b9+'-'+_0xdb252d+'/'+_0x372c8b)[_0x3afe('0x19')](_0x55bf5d);}return null;};}function patchUpdates(_0x1da63c){return function(_0x5766cb){try{jsonpatch['apply'](_0x5766cb,_0x1da63c,!![]);}catch(_0x512032){return BPromise[_0x3afe('0x1f')](_0x512032);}return _0x5766cb['save']();};}function saveUpdates(_0x544829,_0x2f2951){return function(_0x354810){if(_0x354810){return _0x354810[_0x3afe('0x20')](_0x544829)[_0x3afe('0x21')](function(_0x7e326f){return _0x7e326f;});}return null;};}function removeEntity(_0x45d039,_0x4add36){return function(_0x20e889){if(_0x20e889){return _0x20e889[_0x3afe('0x22')]()['then'](function(){_0x45d039['status'](0xcc)[_0x3afe('0x23')]();});}};}function handleEntityNotFound(_0x572ec5,_0x4844c4){return function(_0x3015b3){if(!_0x3015b3){_0x572ec5['sendStatus'](0x194);}return _0x3015b3;};}function handleError(_0x4c7cc3,_0x520674){_0x520674=_0x520674||0x1f4;return function(_0x5abd4c){logger['error'](_0x5abd4c[_0x3afe('0x24')]);if(_0x5abd4c['name']){delete _0x5abd4c[_0x3afe('0x25')];}_0x4c7cc3['status'](_0x520674)['send'](_0x5abd4c);};}exports['index']=function(_0x50837f,_0x4647b4){var _0xfe1a4f={},_0x186dab={},_0x5d7965={'count':0x0,'rows':[]};var _0x339ffd=_['map'](db[_0x3afe('0x26')]['rawAttributes'],function(_0x9a871e){return{'name':_0x9a871e[_0x3afe('0x27')],'type':_0x9a871e[_0x3afe('0x28')]['key']};});_0x186dab['model']=_['map'](_0x339ffd,_0x3afe('0x25'));_0x186dab['query']=_[_0x3afe('0x29')](_0x50837f[_0x3afe('0x2a')]);_0x186dab[_0x3afe('0x2b')]=_[_0x3afe('0x2c')](_0x186dab['model'],_0x186dab[_0x3afe('0x2a')]);_0xfe1a4f[_0x3afe('0x2d')]=_[_0x3afe('0x2c')](_0x186dab['model'],qs[_0x3afe('0x2e')](_0x50837f['query'][_0x3afe('0x2e')]));_0xfe1a4f['attributes']=_0xfe1a4f[_0x3afe('0x2d')][_0x3afe('0x2f')]?_0xfe1a4f[_0x3afe('0x2d')]:_0x186dab[_0x3afe('0x30')];if(!_0x50837f['query'][_0x3afe('0x31')](_0x3afe('0x32'))){_0xfe1a4f['limit']=qs['limit'](_0x50837f['query'][_0x3afe('0x1c')]);_0xfe1a4f[_0x3afe('0x1a')]=qs[_0x3afe('0x1a')](_0x50837f['query']['offset']);}_0xfe1a4f['order']=qs[_0x3afe('0x33')](_0x50837f['query'][_0x3afe('0x33')]);_0xfe1a4f[_0x3afe('0x34')]=qs[_0x3afe('0x2b')](_['pick'](_0x50837f['query'],_0x186dab[_0x3afe('0x2b')]),_0x339ffd);if(_0x50837f[_0x3afe('0x2a')][_0x3afe('0x35')]){_0xfe1a4f[_0x3afe('0x34')]=_[_0x3afe('0x36')](_0xfe1a4f[_0x3afe('0x34')],{'$or':_['map'](_0x339ffd,function(_0x24e00f){if(_0x24e00f[_0x3afe('0x28')]!=='VIRTUAL'){var _0x953e44={};_0x953e44[_0x24e00f[_0x3afe('0x25')]]={'$like':'%'+_0x50837f[_0x3afe('0x2a')]['filter']+'%'};return _0x953e44;}})});}_0xfe1a4f=_[_0x3afe('0x36')]({},_0xfe1a4f,_0x50837f[_0x3afe('0x37')]);var _0x2068a3={'where':_0xfe1a4f[_0x3afe('0x34')]};return db[_0x3afe('0x26')]['count'](_0x2068a3)[_0x3afe('0x21')](function(_0x23a265){_0x5d7965[_0x3afe('0x1d')]=_0x23a265;if(_0x50837f[_0x3afe('0x2a')][_0x3afe('0x38')]){_0xfe1a4f['include']=[{'all':!![]}];}return db[_0x3afe('0x26')][_0x3afe('0x39')](_0xfe1a4f);})[_0x3afe('0x21')](function(_0x2cdba5){_0x5d7965['rows']=_0x2cdba5;return _0x5d7965;})[_0x3afe('0x21')](respondWithFilteredResult(_0x4647b4,_0xfe1a4f))[_0x3afe('0x3a')](handleError(_0x4647b4,null));};exports[_0x3afe('0x3b')]=function(_0x412fcb,_0x4dedfe){var _0xd69c44={'raw':!![],'where':{'id':_0x412fcb[_0x3afe('0x3c')]['id']}},_0xf8dc84={};_0xf8dc84[_0x3afe('0x30')]=_[_0x3afe('0x29')](db['ServicenowField']['rawAttributes']);_0xf8dc84['query']=_[_0x3afe('0x29')](_0x412fcb[_0x3afe('0x2a')]);_0xf8dc84[_0x3afe('0x2b')]=_[_0x3afe('0x2c')](_0xf8dc84[_0x3afe('0x30')],_0xf8dc84[_0x3afe('0x2a')]);_0xd69c44[_0x3afe('0x2d')]=_['intersection'](_0xf8dc84[_0x3afe('0x30')],qs[_0x3afe('0x2e')](_0x412fcb[_0x3afe('0x2a')][_0x3afe('0x2e')]));_0xd69c44[_0x3afe('0x2d')]=_0xd69c44[_0x3afe('0x2d')]['length']?_0xd69c44[_0x3afe('0x2d')]:_0xf8dc84[_0x3afe('0x30')];if(_0x412fcb['query'][_0x3afe('0x38')]){_0xd69c44[_0x3afe('0x3d')]=[{'all':!![]}];}_0xd69c44=_['merge']({},_0xd69c44,_0x412fcb[_0x3afe('0x37')]);return db[_0x3afe('0x26')][_0x3afe('0x3e')](_0xd69c44)[_0x3afe('0x21')](handleEntityNotFound(_0x4dedfe,null))['then'](respondWithResult(_0x4dedfe,null))[_0x3afe('0x3a')](handleError(_0x4dedfe,null));};exports[_0x3afe('0x3f')]=function(_0x19b25a,_0x3d6f22){return db[_0x3afe('0x26')][_0x3afe('0x3f')](_0x19b25a[_0x3afe('0x40')],{})[_0x3afe('0x21')](respondWithResult(_0x3d6f22,0xc9))[_0x3afe('0x3a')](handleError(_0x3d6f22,null));};exports[_0x3afe('0x20')]=function(_0x5f344e,_0x54a8d5){if(_0x5f344e['body']['id']){delete _0x5f344e[_0x3afe('0x40')]['id'];}return db['ServicenowField'][_0x3afe('0x3e')]({'where':{'id':_0x5f344e['params']['id']}})[_0x3afe('0x21')](handleEntityNotFound(_0x54a8d5,null))[_0x3afe('0x21')](saveUpdates(_0x5f344e[_0x3afe('0x40')],null))[_0x3afe('0x21')](respondWithResult(_0x54a8d5,null))['catch'](handleError(_0x54a8d5,null));};exports[_0x3afe('0x22')]=function(_0x3bafb0,_0x431489){return db[_0x3afe('0x26')]['find']({'where':{'id':_0x3bafb0[_0x3afe('0x3c')]['id']}})['then'](handleEntityNotFound(_0x431489,null))[_0x3afe('0x21')](removeEntity(_0x431489,null))[_0x3afe('0x3a')](handleError(_0x431489,null));};
\ No newline at end of file
index 535638c..cc19c23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe744=['ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x2b6453,_0xbaeaf){var _0x3fa2dc=function(_0x5225a1){while(--_0x5225a1){_0x2b6453['push'](_0x2b6453['shift']());}};_0x3fa2dc(++_0xbaeaf);}(_0xe744,0x140));var _0x4e74=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe744[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x4e74('0x0'));var util=require(_0x4e74('0x1'));var logger=require(_0x4e74('0x2'))(_0x4e74('0x3'));var moment=require(_0x4e74('0x4'));var BPromise=require(_0x4e74('0x5'));var rp=require(_0x4e74('0x6'));var fs=require('fs');var path=require(_0x4e74('0x7'));var rimraf=require('rimraf');var config=require(_0x4e74('0x8'));var attributes=require('./intServicenowField.attributes');module[_0x4e74('0x9')]=function(_0x49e77e,_0x24b30a){return _0x49e77e['define'](_0x4e74('0xa'),attributes,{'tableName':_0x4e74('0xb'),'paranoid':![],'indexes':[{'name':_0x4e74('0xc'),'fields':[_0x4e74('0xd'),_0x4e74('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b24=['ServicenowField','int_servicenow_fields','servicenow_unique_index','FieldId','../../config/logger','api','moment','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define'];(function(_0x3d5d41,_0x1a962b){var _0x27e366=function(_0x417d54){while(--_0x417d54){_0x3d5d41['push'](_0x3d5d41['shift']());}};_0x27e366(++_0x1a962b);}(_0x5b24,0x122));var _0x45b2=function(_0x40e5e7,_0x5de9fb){_0x40e5e7=_0x40e5e7-0x0;var _0x305d7b=_0x5b24[_0x40e5e7];return _0x305d7b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x45b2('0x0'))(_0x45b2('0x1'));var moment=require(_0x45b2('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x45b2('0x3'));var rimraf=require(_0x45b2('0x4'));var config=require(_0x45b2('0x5'));var attributes=require(_0x45b2('0x6'));module[_0x45b2('0x7')]=function(_0x137390,_0x283261){return _0x137390[_0x45b2('0x8')](_0x45b2('0x9'),attributes,{'tableName':_0x45b2('0xa'),'paranoid':![],'indexes':[{'name':_0x45b2('0xb'),'fields':['idField',_0x45b2('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7b496cb..812137c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['code','message','ServicenowField,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x391b24,_0x4eca67){var _0x1da5ea=function(_0x32220b){while(--_0x32220b){_0x391b24['push'](_0x391b24['shift']());}};_0x1da5ea(++_0x4eca67);}(_0x9bde,0xe1));var _0xe9bd=function(_0x1679f3,_0x2bb93e){_0x1679f3=_0x1679f3-0x0;var _0xef27f0=_0x9bde[_0x1679f3];return _0xef27f0;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('ServicenowField,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
+var _0xda3f=['rpc','jayson/promise','client','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x10d0f0,_0x1eba3d){var _0x93e308=function(_0x388548){while(--_0x388548){_0x10d0f0['push'](_0x10d0f0['shift']());}};_0x93e308(++_0x1eba3d);}(_0xda3f,0xec));var _0xfda3=function(_0x5af302,_0xf4c44e){_0x5af302=_0x5af302-0x0;var _0x412b6e=_0xda3f[_0x5af302];return _0x412b6e;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
index 0f83d70..4598c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5cdd19,_0x2226c9){var _0x101108=function(_0x3c0084){while(--_0x3c0084){_0x5cdd19['push'](_0x5cdd19['shift']());}};_0x101108(++_0x2226c9);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x36ae92,_0x152cdb){var _0x1a95a9=function(_0x5cd4a7){while(--_0x5cd4a7){_0x36ae92['push'](_0x36ae92['shift']());}};_0x1a95a9(++_0x152cdb);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 80bb085..405a155 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x20af64,_0x188e9d){var _0xe96fc2=function(_0x5e73a7){while(--_0x5e73a7){_0x20af64['push'](_0x20af64['shift']());}};_0xe96fc2(++_0x188e9d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0xa2cf3c,_0x153e14){var _0x127d55=function(_0x3b494a){while(--_0x3b494a){_0xa2cf3c['push'](_0xa2cf3c['shift']());}};_0x127d55(++_0x153e14);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 5d54250..0458f6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51a9=['date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','findOne','username','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','login','JSON','stringify','PLAIN','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','values','module_fields','includes','label','endsWith','value','test','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','then','error','stack','name','send','index','map','SugarcrmAccount','rawAttributes','type','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body','update','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','Descriptions','getDescriptions','SugarcrmConfiguration','SugarcrmField','assigned_user_id','created_by','description'];(function(_0x10bd38,_0x5aea21){var _0x6ac95e=function(_0x50cbaa){while(--_0x50cbaa){_0x10bd38['push'](_0x10bd38['shift']());}};_0x6ac95e(++_0x5aea21);}(_0x51a9,0x10b));var _0x951a=function(_0x4199d0,_0x24c705){_0x4199d0=_0x4199d0-0x0;var _0xb0f6d=_0x51a9[_0x4199d0];return _0xb0f6d;};'use strict';var emlformat=require(_0x951a('0x0'));var rimraf=require(_0x951a('0x1'));var zipdir=require(_0x951a('0x2'));var jsonpatch=require(_0x951a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x951a('0x4'));var util=require('util');var path=require(_0x951a('0x5'));var sox=require(_0x951a('0x6'));var csv=require(_0x951a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x951a('0x8'));var _=require(_0x951a('0x9'));var squel=require(_0x951a('0xa'));var crypto=require('crypto');var jsforce=require(_0x951a('0xb'));var deskjs=require(_0x951a('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x951a('0xd'));var authService=require(_0x951a('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x951a('0xf'));var logger=require(_0x951a('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x951a('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0x951a('0x12'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5ed5ec,_0x436147){_0x436147=_0x436147||0xcc;return function(_0x576103){if(_0x576103){return _0x5ed5ec[_0x951a('0x13')](_0x436147);}return _0x5ed5ec[_0x951a('0x14')](_0x436147)[_0x951a('0x15')]();};}function respondWithResult(_0x47fcae,_0x5ed040){_0x5ed040=_0x5ed040||0xc8;return function(_0x3b9fe4){if(_0x3b9fe4){return _0x47fcae['status'](_0x5ed040)[_0x951a('0x16')](_0x3b9fe4);}};}function respondWithFilteredResult(_0x4e3b78,_0x469df4){return function(_0x1f04bd){if(_0x1f04bd){var _0x2a1d39=typeof _0x469df4[_0x951a('0x17')]==='undefined'&&typeof _0x469df4[_0x951a('0x18')]===_0x951a('0x19');var _0x49b439=_0x1f04bd[_0x951a('0x1a')];var _0x38e817=_0x2a1d39?0x0:_0x469df4[_0x951a('0x17')];var _0x57f6e1=_0x2a1d39?_0x1f04bd[_0x951a('0x1a')]:_0x469df4['offset']+_0x469df4[_0x951a('0x18')];var _0x1b63ef;if(_0x57f6e1>=_0x49b439){_0x57f6e1=_0x49b439;_0x1b63ef=0xc8;}else{_0x1b63ef=0xce;}_0x4e3b78[_0x951a('0x14')](_0x1b63ef);return _0x4e3b78[_0x951a('0x1b')]('Content-Range',_0x38e817+'-'+_0x57f6e1+'/'+_0x49b439)['json'](_0x1f04bd);}return null;};}function patchUpdates(_0x1385fd){return function(_0xb30940){try{jsonpatch[_0x951a('0x1c')](_0xb30940,_0x1385fd,!![]);}catch(_0x53f99a){return BPromise[_0x951a('0x1d')](_0x53f99a);}return _0xb30940[_0x951a('0x1e')]();};}function saveUpdates(_0x1085fe,_0x55f044){return function(_0x4cf4df){if(_0x4cf4df){return _0x4cf4df['update'](_0x1085fe)[_0x951a('0x1f')](function(_0x181180){return _0x181180;});}return null;};}function removeEntity(_0x3b9bce,_0x4ca933){return function(_0x3435ad){if(_0x3435ad){return _0x3435ad['destroy']()['then'](function(){_0x3b9bce[_0x951a('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16f227,_0x42128d){return function(_0x290d2d){if(!_0x290d2d){_0x16f227['sendStatus'](0x194);}return _0x290d2d;};}function handleError(_0x45a53c,_0x267c2f){_0x267c2f=_0x267c2f||0x1f4;return function(_0x32216e){logger[_0x951a('0x20')](_0x32216e[_0x951a('0x21')]);if(_0x32216e[_0x951a('0x22')]){delete _0x32216e[_0x951a('0x22')];}_0x45a53c[_0x951a('0x14')](_0x267c2f)[_0x951a('0x23')](_0x32216e);};}exports[_0x951a('0x24')]=function(_0x33ff7a,_0x3f1fe8){var _0x22bef6={},_0x12410f={},_0x1ed677={'count':0x0,'rows':[]};var _0x38ee70=_[_0x951a('0x25')](db[_0x951a('0x26')][_0x951a('0x27')],function(_0x124f28){return{'name':_0x124f28['fieldName'],'type':_0x124f28[_0x951a('0x28')][_0x951a('0x29')]};});_0x12410f['model']=_[_0x951a('0x25')](_0x38ee70,_0x951a('0x22'));_0x12410f[_0x951a('0x2a')]=_['keys'](_0x33ff7a[_0x951a('0x2a')]);_0x12410f[_0x951a('0x2b')]=_[_0x951a('0x2c')](_0x12410f['model'],_0x12410f[_0x951a('0x2a')]);_0x22bef6['attributes']=_[_0x951a('0x2c')](_0x12410f[_0x951a('0x2d')],qs[_0x951a('0x2e')](_0x33ff7a['query']['fields']));_0x22bef6[_0x951a('0x2f')]=_0x22bef6['attributes'][_0x951a('0x30')]?_0x22bef6[_0x951a('0x2f')]:_0x12410f['model'];if(!_0x33ff7a[_0x951a('0x2a')]['hasOwnProperty'](_0x951a('0x31'))){_0x22bef6[_0x951a('0x18')]=qs[_0x951a('0x18')](_0x33ff7a[_0x951a('0x2a')][_0x951a('0x18')]);_0x22bef6[_0x951a('0x17')]=qs[_0x951a('0x17')](_0x33ff7a[_0x951a('0x2a')][_0x951a('0x17')]);}_0x22bef6[_0x951a('0x32')]=qs[_0x951a('0x33')](_0x33ff7a[_0x951a('0x2a')][_0x951a('0x33')]);_0x22bef6[_0x951a('0x34')]=qs['filters'](_[_0x951a('0x35')](_0x33ff7a[_0x951a('0x2a')],_0x12410f[_0x951a('0x2b')]),_0x38ee70);if(_0x33ff7a[_0x951a('0x2a')][_0x951a('0x36')]){_0x22bef6[_0x951a('0x34')]=_[_0x951a('0x37')](_0x22bef6['where'],{'$or':_[_0x951a('0x25')](_0x38ee70,function(_0x5ed2e0){if(_0x5ed2e0[_0x951a('0x28')]!==_0x951a('0x38')){var _0x4b1690={};_0x4b1690[_0x5ed2e0['name']]={'$like':'%'+_0x33ff7a['query'][_0x951a('0x36')]+'%'};return _0x4b1690;}})});}_0x22bef6=_[_0x951a('0x37')]({},_0x22bef6,_0x33ff7a[_0x951a('0x39')]);var _0x4865e5={'where':_0x22bef6[_0x951a('0x34')]};return db[_0x951a('0x26')][_0x951a('0x1a')](_0x4865e5)[_0x951a('0x1f')](function(_0x397489){_0x1ed677[_0x951a('0x1a')]=_0x397489;if(_0x33ff7a[_0x951a('0x2a')][_0x951a('0x3a')]){_0x22bef6['include']=[{'all':!![]}];}return db['SugarcrmAccount'][_0x951a('0x3b')](_0x22bef6);})[_0x951a('0x1f')](function(_0x337afa){_0x1ed677[_0x951a('0x3c')]=_0x337afa;return _0x1ed677;})['then'](respondWithFilteredResult(_0x3f1fe8,_0x22bef6))[_0x951a('0x3d')](handleError(_0x3f1fe8,null));};exports['show']=function(_0x34979f,_0x4f6208){var _0x50f06e={'raw':![],'where':{'id':_0x34979f[_0x951a('0x3e')]['id']}},_0x2e9554={};_0x2e9554[_0x951a('0x2d')]=_[_0x951a('0x3f')](db[_0x951a('0x26')][_0x951a('0x27')]);_0x2e9554[_0x951a('0x2a')]=_[_0x951a('0x3f')](_0x34979f[_0x951a('0x2a')]);_0x2e9554['filters']=_[_0x951a('0x2c')](_0x2e9554['model'],_0x2e9554[_0x951a('0x2a')]);_0x50f06e[_0x951a('0x2f')]=_[_0x951a('0x2c')](_0x2e9554[_0x951a('0x2d')],qs[_0x951a('0x2e')](_0x34979f[_0x951a('0x2a')][_0x951a('0x2e')]));_0x50f06e[_0x951a('0x2f')]=_0x50f06e[_0x951a('0x2f')][_0x951a('0x30')]?_0x50f06e[_0x951a('0x2f')]:_0x2e9554[_0x951a('0x2d')];if(_0x34979f['query'][_0x951a('0x3a')]){_0x50f06e[_0x951a('0x40')]=[{'all':!![]}];}_0x50f06e=_[_0x951a('0x37')]({},_0x50f06e,_0x34979f[_0x951a('0x39')]);return db['SugarcrmAccount'][_0x951a('0x41')](_0x50f06e)['then'](handleEntityNotFound(_0x4f6208,null))[_0x951a('0x1f')](respondWithResult(_0x4f6208,null))[_0x951a('0x3d')](handleError(_0x4f6208,null));};exports[_0x951a('0x42')]=function(_0x29bf32,_0x3470a2){return db['SugarcrmAccount'][_0x951a('0x42')](_0x29bf32[_0x951a('0x43')],{})[_0x951a('0x1f')](respondWithResult(_0x3470a2,0xc9))[_0x951a('0x3d')](handleError(_0x3470a2,null));};exports[_0x951a('0x44')]=function(_0x403177,_0x25b308){if(_0x403177[_0x951a('0x43')]['id']){delete _0x403177[_0x951a('0x43')]['id'];}return db[_0x951a('0x26')][_0x951a('0x41')]({'where':{'id':_0x403177[_0x951a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x25b308,null))[_0x951a('0x1f')](saveUpdates(_0x403177[_0x951a('0x43')],null))[_0x951a('0x1f')](respondWithResult(_0x25b308,null))['catch'](handleError(_0x25b308,null));};exports['destroy']=function(_0x5896b9,_0x1a9851){return db[_0x951a('0x26')][_0x951a('0x41')]({'where':{'id':_0x5896b9[_0x951a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1a9851,null))[_0x951a('0x1f')](removeEntity(_0x1a9851,null))[_0x951a('0x3d')](handleError(_0x1a9851,null));};exports[_0x951a('0x45')]=function(_0x8ac9a4,_0x229443,_0x58b77a){var _0xf75d85={};var _0xb9ead8={};var _0x186c13;var _0x81be1d;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x8ac9a4[_0x951a('0x3e')]['id']}})[_0x951a('0x1f')](handleEntityNotFound(_0x229443,null))[_0x951a('0x1f')](function(_0x839c95){if(_0x839c95){_0x186c13=_0x839c95;_0xb9ead8[_0x951a('0x2d')]=_[_0x951a('0x3f')](db['SugarcrmConfiguration']['rawAttributes']);_0xb9ead8[_0x951a('0x2a')]=_[_0x951a('0x3f')](_0x8ac9a4[_0x951a('0x2a')]);_0xb9ead8[_0x951a('0x2b')]=_[_0x951a('0x2c')](_0xb9ead8[_0x951a('0x2d')],_0xb9ead8[_0x951a('0x2a')]);_0xf75d85[_0x951a('0x2f')]=_[_0x951a('0x2c')](_0xb9ead8['model'],qs['fields'](_0x8ac9a4[_0x951a('0x2a')]['fields']));_0xf75d85['attributes']=_0xf75d85[_0x951a('0x2f')][_0x951a('0x30')]?_0xf75d85[_0x951a('0x2f')]:_0xb9ead8['model'];_0xf75d85['order']=qs[_0x951a('0x33')](_0x8ac9a4[_0x951a('0x2a')][_0x951a('0x33')]);_0xf75d85[_0x951a('0x34')]=qs[_0x951a('0x2b')](_[_0x951a('0x35')](_0x8ac9a4['query'],_0xb9ead8[_0x951a('0x2b')]));if(_0x8ac9a4['query'][_0x951a('0x36')]){_0xf75d85[_0x951a('0x34')]=_[_0x951a('0x37')](_0xf75d85[_0x951a('0x34')],{'$or':_[_0x951a('0x25')](_0xf75d85[_0x951a('0x2f')],function(_0x56bb06){var _0x561ddd={};_0x561ddd[_0x56bb06]={'$like':'%'+_0x8ac9a4[_0x951a('0x2a')]['filter']+'%'};return _0x561ddd;})});}_0xf75d85=_['merge']({},_0xf75d85,_0x8ac9a4['options']);return _0x186c13[_0x951a('0x45')](_0xf75d85);}})[_0x951a('0x1f')](function(_0x244e80){if(_0x244e80){_0x81be1d=_0x244e80[_0x951a('0x30')];if(!_0x8ac9a4[_0x951a('0x2a')][_0x951a('0x46')](_0x951a('0x31'))){_0xf75d85[_0x951a('0x18')]=qs[_0x951a('0x18')](_0x8ac9a4[_0x951a('0x2a')][_0x951a('0x18')]);_0xf75d85[_0x951a('0x17')]=qs['offset'](_0x8ac9a4['query'][_0x951a('0x17')]);}return _0x186c13[_0x951a('0x45')](_0xf75d85);}})[_0x951a('0x1f')](function(_0x2f571c){if(_0x2f571c){return _0x2f571c?{'count':_0x81be1d,'rows':_0x2f571c}:null;}})['then'](respondWithResult(_0x229443,null))['catch'](handleError(_0x229443,null));};exports[_0x951a('0x47')]=function(_0x3360ec,_0x1b2ef8,_0x421391){if(_0x3360ec[_0x951a('0x43')]['id']){delete _0x3360ec[_0x951a('0x43')]['id'];}return db[_0x951a('0x26')]['findOne']({'where':{'id':_0x3360ec[_0x951a('0x3e')]['id']}})[_0x951a('0x1f')](handleEntityNotFound(_0x1b2ef8,null))[_0x951a('0x1f')](function(_0xa286a){if(_0xa286a){_0x3360ec[_0x951a('0x43')][_0x951a('0x48')]=_0xa286a['id'];_0x3360ec[_0x951a('0x43')][_0x951a('0x49')]=integrations['getSubjects'](_0x3360ec[_0x951a('0x43')]['channel'],_0x3360ec['body'][_0x951a('0x28')]);_0x3360ec[_0x951a('0x43')][_0x951a('0x4a')]=integrations[_0x951a('0x4b')](_0x3360ec[_0x951a('0x43')]['channel'],_0x3360ec[_0x951a('0x43')][_0x951a('0x28')]);return db[_0x951a('0x4c')]['create'](_0x3360ec[_0x951a('0x43')],{'include':[{'model':db[_0x951a('0x4d')],'as':_0x951a('0x49')},{'model':db[_0x951a('0x4d')],'as':_0x951a('0x4a')}]});}return null;})[_0x951a('0x1f')](respondWithResult(_0x1b2ef8,null))[_0x951a('0x3d')](handleError(_0x1b2ef8,null));};exports['getFields']=function(_0x2a5877,_0xb1e1f1,_0x582135){var _0x5eb7d0='';var _0x4aa253=['id',_0x951a('0x22'),_0x951a('0x4e'),_0x951a('0x4f'),_0x951a('0x50'),_0x951a('0x51'),_0x951a('0x52'),_0x951a('0x53'),_0x951a('0x54'),_0x951a('0x55'),_0x951a('0x56'),_0x951a('0x57')];return db[_0x951a('0x26')][_0x951a('0x58')]({'where':{'id':_0x2a5877[_0x951a('0x3e')]['id']},'attributes':['id',_0x951a('0x59'),_0x951a('0x5a'),_0x951a('0x5b')]})['then'](handleEntityNotFound(_0xb1e1f1,null))[_0x951a('0x1f')](function(_0x495aa2){if(_0x495aa2){_0x5eb7d0=_0x495aa2[_0x951a('0x5b')];var _0x1b33d6=_0x5eb7d0[_0x951a('0x5c')](-0x1);if(_0x1b33d6==='/'){_0x5eb7d0=_0x5eb7d0[_0x951a('0x5d')](0x0,_0x5eb7d0[_0x951a('0x5e')](_0x1b33d6));}return rp({'method':_0x951a('0x5f'),'uri':util['format'](_0x951a('0x60'),_0x5eb7d0,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x951a('0x61'),'input_type':_0x951a('0x62'),'response_type':_0x951a('0x62'),'rest_data':JSON[_0x951a('0x63')]({'user_auth':{'user_name':_0x495aa2[_0x951a('0x59')],'password':_0x495aa2[_0x951a('0x5a')],'encryption':_0x951a('0x64')},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x27a18b){if(_0x27a18b&&_0x27a18b[_0x951a('0x22')]!==_0x951a('0x65')&&_0x27a18b[_0x951a('0x22')]!==_0x951a('0x66')){return rp({'method':'POST','uri':util['format'](_0x951a('0x60'),_0x5eb7d0,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x951a('0x67'),'input_type':'JSON','response_type':_0x951a('0x62'),'rest_data':JSON['stringify']({'session':_0x27a18b['id'],'module_name':_0x951a('0x68')})}})['then'](function(_0x170921){if(_0x170921){var _0x3563a9=_[_0x951a('0x69')](_0x170921[_0x951a('0x6a')]);_['remove'](_0x3563a9,function(_0x25792a){return _0x4aa253[_0x951a('0x6b')](_0x25792a[_0x951a('0x22')]);});return{'count':_0x3563a9[_0x951a('0x30')],'rows':_[_0x951a('0x25')](_0x3563a9,function(_0x20e992){return{'id':_0x20e992[_0x951a('0x22')],'name':_0x20e992[_0x951a('0x6c')],'custom':_[_0x951a('0x6d')](_0x20e992['name'],'_c')?!![]:![],'options':_0x20e992[_0x951a('0x39')]?_[_0x951a('0x25')](_[_0x951a('0x69')](_0x20e992[_0x951a('0x39')]),function(_0x130353){return{'name':_0x130353[_0x951a('0x6e')],'value':_0x130353[_0x951a('0x22')]};}):[]};})};}})['then'](respondWithResult(_0xb1e1f1,null))[_0x951a('0x3d')](function(_0x368274){var _0x1b9c9c=_0x2a5877[_0x951a('0x2a')][_0x951a('0x6f')]?0x1f4:_0x368274['statusCode']||0x1f4;logger['error'](_0x951a('0x70'),_0x951a('0x71'),_0x1b9c9c,JSON[_0x951a('0x63')](_0x368274));delete _0x368274['name'];if(_0x1b9c9c===0x191){_0x1b9c9c=0x190;}_0xb1e1f1['status'](_0x1b9c9c)[_0x951a('0x23')](_0x2a5877[_0x951a('0x2a')][_0x951a('0x6f')]?{'message':_0x951a('0x72'),'statusCode':_0x368274[_0x951a('0x73')]}:_0x368274);});}else{var _0x3e1a3d=0x1f4;_0xb1e1f1['status'](_0x3e1a3d)[_0x951a('0x23')]({'message':_0x951a('0x72'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xda5b=['login','JSON','stringify','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','values','module_fields','remove','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','keys','include','options','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','intersection','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','duration_hours','duration_minutes','parent_id','parent_type','parent_name','username','password','remoteUri','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda5b,0x177));var _0xbda5=function(_0x17ba7d,_0x3d1ace){_0x17ba7d=_0x17ba7d-0x0;var _0x8fd171=_0xda5b[_0x17ba7d];return _0x8fd171;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbda5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbda5('0x1'));var path=require(_0xbda5('0x2'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbda5('0x3'));var fs=require('fs');var fs_extra=require(_0xbda5('0x4'));var _=require(_0xbda5('0x5'));var squel=require(_0xbda5('0x6'));var crypto=require(_0xbda5('0x7'));var jsforce=require('jsforce');var deskjs=require(_0xbda5('0x8'));var toCsv=require('to-csv');var querystring=require(_0xbda5('0x9'));var Papa=require(_0xbda5('0xa'));var Redis=require(_0xbda5('0xb'));var authService=require(_0xbda5('0xc'));var qs=require(_0xbda5('0xd'));var as=require(_0xbda5('0xe'));var hardwareService=require(_0xbda5('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0xbda5('0x10'));var config=require(_0xbda5('0x11'));var licenseUtil=require(_0xbda5('0x12'));var db=require(_0xbda5('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x491e26,_0x1eae89){_0x1eae89=_0x1eae89||0xcc;return function(_0x531118){if(_0x531118){return _0x491e26[_0xbda5('0x14')](_0x1eae89);}return _0x491e26[_0xbda5('0x15')](_0x1eae89)[_0xbda5('0x16')]();};}function respondWithResult(_0x4ba5bf,_0x49c82f){_0x49c82f=_0x49c82f||0xc8;return function(_0x59ffa5){if(_0x59ffa5){return _0x4ba5bf[_0xbda5('0x15')](_0x49c82f)['json'](_0x59ffa5);}};}function respondWithFilteredResult(_0x2d3bcc,_0x3895a2){return function(_0x3f7c35){if(_0x3f7c35){var _0x56434e=typeof _0x3895a2[_0xbda5('0x17')]===_0xbda5('0x18')&&typeof _0x3895a2['limit']==='undefined';var _0xa0aab9=_0x3f7c35['count'];var _0x1c69af=_0x56434e?0x0:_0x3895a2[_0xbda5('0x17')];var _0xb4e271=_0x56434e?_0x3f7c35[_0xbda5('0x19')]:_0x3895a2['offset']+_0x3895a2[_0xbda5('0x1a')];var _0x5992af;if(_0xb4e271>=_0xa0aab9){_0xb4e271=_0xa0aab9;_0x5992af=0xc8;}else{_0x5992af=0xce;}_0x2d3bcc[_0xbda5('0x15')](_0x5992af);return _0x2d3bcc['set'](_0xbda5('0x1b'),_0x1c69af+'-'+_0xb4e271+'/'+_0xa0aab9)[_0xbda5('0x1c')](_0x3f7c35);}return null;};}function patchUpdates(_0x5fb634){return function(_0xd24a59){try{jsonpatch[_0xbda5('0x1d')](_0xd24a59,_0x5fb634,!![]);}catch(_0x38ba16){return BPromise[_0xbda5('0x1e')](_0x38ba16);}return _0xd24a59[_0xbda5('0x1f')]();};}function saveUpdates(_0x5f0e32,_0x20ccaa){return function(_0x367271){if(_0x367271){return _0x367271[_0xbda5('0x20')](_0x5f0e32)[_0xbda5('0x21')](function(_0x3e7d4e){return _0x3e7d4e;});}return null;};}function removeEntity(_0x137e64,_0x103362){return function(_0x1a75bb){if(_0x1a75bb){return _0x1a75bb[_0xbda5('0x22')]()[_0xbda5('0x21')](function(){_0x137e64[_0xbda5('0x15')](0xcc)[_0xbda5('0x16')]();});}};}function handleEntityNotFound(_0x11561c,_0x37d5be){return function(_0x5e886c){if(!_0x5e886c){_0x11561c[_0xbda5('0x14')](0x194);}return _0x5e886c;};}function handleError(_0x578b65,_0x2244e9){_0x2244e9=_0x2244e9||0x1f4;return function(_0x2b4f56){logger[_0xbda5('0x23')](_0x2b4f56[_0xbda5('0x24')]);if(_0x2b4f56[_0xbda5('0x25')]){delete _0x2b4f56[_0xbda5('0x25')];}_0x578b65[_0xbda5('0x15')](_0x2244e9)[_0xbda5('0x26')](_0x2b4f56);};}exports[_0xbda5('0x27')]=function(_0x5d5f91,_0x2dbe56){var _0x3861e2={},_0x168022={},_0x1382c2={'count':0x0,'rows':[]};var _0x4c29bb=_[_0xbda5('0x28')](db[_0xbda5('0x29')][_0xbda5('0x2a')],function(_0x32894f){return{'name':_0x32894f[_0xbda5('0x2b')],'type':_0x32894f['type']['key']};});_0x168022[_0xbda5('0x2c')]=_['map'](_0x4c29bb,_0xbda5('0x25'));_0x168022['query']=_['keys'](_0x5d5f91[_0xbda5('0x2d')]);_0x168022[_0xbda5('0x2e')]=_['intersection'](_0x168022[_0xbda5('0x2c')],_0x168022['query']);_0x3861e2[_0xbda5('0x2f')]=_['intersection'](_0x168022[_0xbda5('0x2c')],qs[_0xbda5('0x30')](_0x5d5f91[_0xbda5('0x2d')]['fields']));_0x3861e2[_0xbda5('0x2f')]=_0x3861e2['attributes'][_0xbda5('0x31')]?_0x3861e2[_0xbda5('0x2f')]:_0x168022[_0xbda5('0x2c')];if(!_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x32')](_0xbda5('0x33'))){_0x3861e2['limit']=qs[_0xbda5('0x1a')](_0x5d5f91['query']['limit']);_0x3861e2['offset']=qs[_0xbda5('0x17')](_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x17')]);}_0x3861e2[_0xbda5('0x34')]=qs[_0xbda5('0x35')](_0x5d5f91['query']['sort']);_0x3861e2[_0xbda5('0x36')]=qs[_0xbda5('0x2e')](_['pick'](_0x5d5f91[_0xbda5('0x2d')],_0x168022[_0xbda5('0x2e')]),_0x4c29bb);if(_0x5d5f91['query'][_0xbda5('0x37')]){_0x3861e2['where']=_[_0xbda5('0x38')](_0x3861e2[_0xbda5('0x36')],{'$or':_['map'](_0x4c29bb,function(_0x30d00b){if(_0x30d00b[_0xbda5('0x39')]!==_0xbda5('0x3a')){var _0x3bfd83={};_0x3bfd83[_0x30d00b[_0xbda5('0x25')]]={'$like':'%'+_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x37')]+'%'};return _0x3bfd83;}})});}_0x3861e2=_[_0xbda5('0x38')]({},_0x3861e2,_0x5d5f91['options']);var _0x24f05d={'where':_0x3861e2[_0xbda5('0x36')]};return db[_0xbda5('0x29')]['count'](_0x24f05d)[_0xbda5('0x21')](function(_0x41c9a7){_0x1382c2[_0xbda5('0x19')]=_0x41c9a7;if(_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x3b')]){_0x3861e2['include']=[{'all':!![]}];}return db[_0xbda5('0x29')][_0xbda5('0x3c')](_0x3861e2);})[_0xbda5('0x21')](function(_0xfb46f){_0x1382c2[_0xbda5('0x3d')]=_0xfb46f;return _0x1382c2;})[_0xbda5('0x21')](respondWithFilteredResult(_0x2dbe56,_0x3861e2))[_0xbda5('0x3e')](handleError(_0x2dbe56,null));};exports[_0xbda5('0x3f')]=function(_0x49e4ab,_0x4de8f5){var _0x3f23fb={'raw':![],'where':{'id':_0x49e4ab[_0xbda5('0x40')]['id']}},_0xb30145={};_0xb30145[_0xbda5('0x2c')]=_[_0xbda5('0x41')](db[_0xbda5('0x29')]['rawAttributes']);_0xb30145['query']=_[_0xbda5('0x41')](_0x49e4ab[_0xbda5('0x2d')]);_0xb30145[_0xbda5('0x2e')]=_['intersection'](_0xb30145[_0xbda5('0x2c')],_0xb30145[_0xbda5('0x2d')]);_0x3f23fb[_0xbda5('0x2f')]=_['intersection'](_0xb30145['model'],qs[_0xbda5('0x30')](_0x49e4ab[_0xbda5('0x2d')][_0xbda5('0x30')]));_0x3f23fb[_0xbda5('0x2f')]=_0x3f23fb[_0xbda5('0x2f')][_0xbda5('0x31')]?_0x3f23fb[_0xbda5('0x2f')]:_0xb30145[_0xbda5('0x2c')];if(_0x49e4ab[_0xbda5('0x2d')]['includeAll']){_0x3f23fb[_0xbda5('0x42')]=[{'all':!![]}];}_0x3f23fb=_['merge']({},_0x3f23fb,_0x49e4ab[_0xbda5('0x43')]);return db[_0xbda5('0x29')][_0xbda5('0x44')](_0x3f23fb)['then'](handleEntityNotFound(_0x4de8f5,null))[_0xbda5('0x21')](respondWithResult(_0x4de8f5,null))[_0xbda5('0x3e')](handleError(_0x4de8f5,null));};exports[_0xbda5('0x45')]=function(_0x184360,_0x57171c){return db[_0xbda5('0x29')]['create'](_0x184360[_0xbda5('0x46')],{})[_0xbda5('0x21')](respondWithResult(_0x57171c,0xc9))[_0xbda5('0x3e')](handleError(_0x57171c,null));};exports['update']=function(_0x3cf296,_0x573021){if(_0x3cf296['body']['id']){delete _0x3cf296[_0xbda5('0x46')]['id'];}return db[_0xbda5('0x29')][_0xbda5('0x44')]({'where':{'id':_0x3cf296['params']['id']}})['then'](handleEntityNotFound(_0x573021,null))['then'](saveUpdates(_0x3cf296['body'],null))[_0xbda5('0x21')](respondWithResult(_0x573021,null))[_0xbda5('0x3e')](handleError(_0x573021,null));};exports[_0xbda5('0x22')]=function(_0x107a34,_0x149296){return db[_0xbda5('0x29')][_0xbda5('0x44')]({'where':{'id':_0x107a34[_0xbda5('0x40')]['id']}})[_0xbda5('0x21')](handleEntityNotFound(_0x149296,null))[_0xbda5('0x21')](removeEntity(_0x149296,null))['catch'](handleError(_0x149296,null));};exports[_0xbda5('0x47')]=function(_0x16c93d,_0x23fa10,_0xb8c65b){var _0x3388f7={};var _0x431995={};var _0x202324;var _0xf01291;return db['SugarcrmAccount'][_0xbda5('0x48')]({'where':{'id':_0x16c93d['params']['id']}})[_0xbda5('0x21')](handleEntityNotFound(_0x23fa10,null))[_0xbda5('0x21')](function(_0x436d42){if(_0x436d42){_0x202324=_0x436d42;_0x431995[_0xbda5('0x2c')]=_['keys'](db[_0xbda5('0x49')][_0xbda5('0x2a')]);_0x431995['query']=_[_0xbda5('0x41')](_0x16c93d[_0xbda5('0x2d')]);_0x431995[_0xbda5('0x2e')]=_[_0xbda5('0x4a')](_0x431995[_0xbda5('0x2c')],_0x431995[_0xbda5('0x2d')]);_0x3388f7[_0xbda5('0x2f')]=_[_0xbda5('0x4a')](_0x431995['model'],qs['fields'](_0x16c93d[_0xbda5('0x2d')][_0xbda5('0x30')]));_0x3388f7[_0xbda5('0x2f')]=_0x3388f7[_0xbda5('0x2f')][_0xbda5('0x31')]?_0x3388f7['attributes']:_0x431995[_0xbda5('0x2c')];_0x3388f7[_0xbda5('0x34')]=qs[_0xbda5('0x35')](_0x16c93d[_0xbda5('0x2d')][_0xbda5('0x35')]);_0x3388f7[_0xbda5('0x36')]=qs[_0xbda5('0x2e')](_[_0xbda5('0x4b')](_0x16c93d[_0xbda5('0x2d')],_0x431995[_0xbda5('0x2e')]));if(_0x16c93d['query'][_0xbda5('0x37')]){_0x3388f7[_0xbda5('0x36')]=_['merge'](_0x3388f7[_0xbda5('0x36')],{'$or':_[_0xbda5('0x28')](_0x3388f7[_0xbda5('0x2f')],function(_0x14319e){var _0x1a0892={};_0x1a0892[_0x14319e]={'$like':'%'+_0x16c93d[_0xbda5('0x2d')][_0xbda5('0x37')]+'%'};return _0x1a0892;})});}_0x3388f7=_[_0xbda5('0x38')]({},_0x3388f7,_0x16c93d['options']);return _0x202324['getConfigurations'](_0x3388f7);}})[_0xbda5('0x21')](function(_0x112b89){if(_0x112b89){_0xf01291=_0x112b89[_0xbda5('0x31')];if(!_0x16c93d['query'][_0xbda5('0x32')](_0xbda5('0x33'))){_0x3388f7[_0xbda5('0x1a')]=qs[_0xbda5('0x1a')](_0x16c93d['query'][_0xbda5('0x1a')]);_0x3388f7[_0xbda5('0x17')]=qs[_0xbda5('0x17')](_0x16c93d['query'][_0xbda5('0x17')]);}return _0x202324[_0xbda5('0x47')](_0x3388f7);}})[_0xbda5('0x21')](function(_0x43f78d){if(_0x43f78d){return _0x43f78d?{'count':_0xf01291,'rows':_0x43f78d}:null;}})[_0xbda5('0x21')](respondWithResult(_0x23fa10,null))['catch'](handleError(_0x23fa10,null));};exports[_0xbda5('0x4c')]=function(_0x41c820,_0x11fcba,_0x4e6f6b){if(_0x41c820[_0xbda5('0x46')]['id']){delete _0x41c820['body']['id'];}return db[_0xbda5('0x29')][_0xbda5('0x48')]({'where':{'id':_0x41c820[_0xbda5('0x40')]['id']}})['then'](handleEntityNotFound(_0x11fcba,null))[_0xbda5('0x21')](function(_0x1e646b){if(_0x1e646b){_0x41c820['body'][_0xbda5('0x4d')]=_0x1e646b['id'];_0x41c820[_0xbda5('0x46')][_0xbda5('0x4e')]=integrations[_0xbda5('0x4f')](_0x41c820[_0xbda5('0x46')][_0xbda5('0x50')],_0x41c820[_0xbda5('0x46')]['type']);_0x41c820[_0xbda5('0x46')][_0xbda5('0x51')]=integrations[_0xbda5('0x52')](_0x41c820['body'][_0xbda5('0x50')],_0x41c820[_0xbda5('0x46')]['type']);return db[_0xbda5('0x49')][_0xbda5('0x45')](_0x41c820['body'],{'include':[{'model':db['SugarcrmField'],'as':_0xbda5('0x4e')},{'model':db[_0xbda5('0x53')],'as':_0xbda5('0x51')}]});}return null;})[_0xbda5('0x21')](respondWithResult(_0x11fcba,null))['catch'](handleError(_0x11fcba,null));};exports[_0xbda5('0x54')]=function(_0x2f076b,_0x590446,_0x38d2e0){var _0x4bc7cc='';var _0x4be1f5=['id',_0xbda5('0x25'),_0xbda5('0x55'),_0xbda5('0x56'),_0xbda5('0x57'),'date_start',_0xbda5('0x58'),_0xbda5('0x59'),_0xbda5('0x5a'),_0xbda5('0x5b'),_0xbda5('0x5c'),'direction'];return db['SugarcrmAccount'][_0xbda5('0x48')]({'where':{'id':_0x2f076b[_0xbda5('0x40')]['id']},'attributes':['id',_0xbda5('0x5d'),_0xbda5('0x5e'),_0xbda5('0x5f')]})[_0xbda5('0x21')](handleEntityNotFound(_0x590446,null))[_0xbda5('0x21')](function(_0x365ccd){if(_0x365ccd){_0x4bc7cc=_0x365ccd[_0xbda5('0x5f')];var _0x139515=_0x4bc7cc['slice'](-0x1);if(_0x139515==='/'){_0x4bc7cc=_0x4bc7cc['substring'](0x0,_0x4bc7cc[_0xbda5('0x60')](_0x139515));}return rp({'method':_0xbda5('0x61'),'uri':util[_0xbda5('0x62')](_0xbda5('0x63'),_0x4bc7cc,_0xbda5('0x64')),'json':!![],'form':{'method':_0xbda5('0x65'),'input_type':_0xbda5('0x66'),'response_type':_0xbda5('0x66'),'rest_data':JSON[_0xbda5('0x67')]({'user_auth':{'user_name':_0x365ccd[_0xbda5('0x5d')],'password':_0x365ccd['password'],'encryption':'PLAIN'},'application':_0xbda5('0x68')})}});}})[_0xbda5('0x21')](function(_0x59754f){if(_0x59754f&&_0x59754f[_0xbda5('0x25')]!==_0xbda5('0x69')&&_0x59754f[_0xbda5('0x25')]!==_0xbda5('0x6a')){return rp({'method':_0xbda5('0x61'),'uri':util[_0xbda5('0x62')](_0xbda5('0x63'),_0x4bc7cc,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xbda5('0x6b'),'input_type':_0xbda5('0x66'),'response_type':_0xbda5('0x66'),'rest_data':JSON[_0xbda5('0x67')]({'session':_0x59754f['id'],'module_name':_0xbda5('0x6c')})}})[_0xbda5('0x21')](function(_0x578543){if(_0x578543){var _0x1faf55=_[_0xbda5('0x6d')](_0x578543[_0xbda5('0x6e')]);_[_0xbda5('0x6f')](_0x1faf55,function(_0x400a86){return _0x4be1f5['includes'](_0x400a86[_0xbda5('0x25')]);});return{'count':_0x1faf55[_0xbda5('0x31')],'rows':_[_0xbda5('0x28')](_0x1faf55,function(_0x1a6096){return{'id':_0x1a6096[_0xbda5('0x25')],'name':_0x1a6096[_0xbda5('0x70')],'custom':_[_0xbda5('0x71')](_0x1a6096[_0xbda5('0x25')],'_c')?!![]:![],'options':_0x1a6096[_0xbda5('0x43')]?_[_0xbda5('0x28')](_[_0xbda5('0x6d')](_0x1a6096['options']),function(_0x3ab890){return{'name':_0x3ab890[_0xbda5('0x72')],'value':_0x3ab890[_0xbda5('0x25')]};}):[]};})};}})['then'](respondWithResult(_0x590446,null))[_0xbda5('0x3e')](function(_0x100085){var _0x12f51f=_0x2f076b[_0xbda5('0x2d')][_0xbda5('0x73')]?0x1f4:_0x100085[_0xbda5('0x74')]||0x1f4;logger[_0xbda5('0x23')](_0xbda5('0x75'),_0xbda5('0x54'),_0x12f51f,JSON['stringify'](_0x100085));delete _0x100085[_0xbda5('0x25')];if(_0x12f51f===0x191){_0x12f51f=0x190;}_0x590446[_0xbda5('0x15')](_0x12f51f)[_0xbda5('0x26')](_0x2f076b[_0xbda5('0x2d')][_0xbda5('0x73')]?{'message':_0xbda5('0x76'),'statusCode':_0x100085[_0xbda5('0x74')]}:_0x100085);});}else{var _0x3d5ddd=0x1f4;_0x590446[_0xbda5('0x15')](_0x3d5ddd)['send']({'message':_0xbda5('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
index dfbf462..ca285e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f48=['rimraf','./intSugarcrmAccount.attributes','exports','define','SugarcrmAccount','int_sugarcrm_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x4af23c,_0x50e294){var _0x194b63=function(_0x44f871){while(--_0x44f871){_0x4af23c['push'](_0x4af23c['shift']());}};_0x194b63(++_0x50e294);}(_0x3f48,0x17c));var _0x83f4=function(_0xeb1d70,_0x554bcc){_0xeb1d70=_0xeb1d70-0x0;var _0x391f38=_0x3f48[_0xeb1d70];return _0x391f38;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x83f4('0x0'))(_0x83f4('0x1'));var moment=require(_0x83f4('0x2'));var BPromise=require(_0x83f4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x83f4('0x4'));var rimraf=require(_0x83f4('0x5'));var config=require('../../config/environment');var attributes=require(_0x83f4('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x83f4('0x7')]=function(_0x6cca1b,_0x3898cf){return _0x6cca1b[_0x83f4('0x8')](_0x83f4('0x9'),attributes,{'tableName':_0x83f4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd719=['path','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','lodash','util','api','bluebird','request-promise'];(function(_0x97af71,_0x3088dc){var _0xbcd91b=function(_0x46078c){while(--_0x46078c){_0x97af71['push'](_0x97af71['shift']());}};_0xbcd91b(++_0x3088dc);}(_0xd719,0xb8));var _0x9d71=function(_0x35b06c,_0x5b71ea){_0x35b06c=_0x35b06c-0x0;var _0x25eeb6=_0xd719[_0x35b06c];return _0x25eeb6;};'use strict';var _=require(_0x9d71('0x0'));var util=require(_0x9d71('0x1'));var logger=require('../../config/logger')(_0x9d71('0x2'));var moment=require('moment');var BPromise=require(_0x9d71('0x3'));var rp=require(_0x9d71('0x4'));var fs=require('fs');var path=require(_0x9d71('0x5'));var rimraf=require('rimraf');var config=require(_0x9d71('0x6'));var attributes=require(_0x9d71('0x7'));var integrations=require(_0x9d71('0x8'));module['exports']=function(_0x25e98a,_0xc3d8c8){return _0x25e98a['define']('SugarcrmAccount',attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89a2dde..810ebc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5f7=['attributes','limit','include','map','model','GetSugarcrmAccount','find','info','ShowSugarcrmAccount','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','SugarcrmAccount','raw','options','where'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0xe5f7,0x180));var _0x7e5f=function(_0x52c0b2,_0x4ab850){_0x52c0b2=_0x52c0b2-0x0;var _0x4d5993=_0xe5f7[_0x52c0b2];return _0x4d5993;};'use strict';var _=require(_0x7e5f('0x0'));var util=require(_0x7e5f('0x1'));var moment=require(_0x7e5f('0x2'));var BPromise=require(_0x7e5f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7e5f('0x4'))['db'];var utils=require(_0x7e5f('0x5'));var logger=require('../../config/logger')(_0x7e5f('0x6'));var config=require(_0x7e5f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7e5f('0x8')][_0x7e5f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d506b,_0x5b7f38,_0x3f53ed){return new BPromise(function(_0x533746,_0x3d1006){return client['request'](_0x4d506b,_0x3f53ed)[_0x7e5f('0xa')](function(_0x3660e1){logger['info'](_0x7e5f('0xb'),_0x5b7f38,_0x7e5f('0xc'));logger[_0x7e5f('0xd')](_0x7e5f('0xe'),_0x5b7f38,_0x7e5f('0xc'),JSON['stringify'](_0x3660e1));if(_0x3660e1[_0x7e5f('0xf')]){if(_0x3660e1[_0x7e5f('0xf')][_0x7e5f('0x10')]===0x1f4){logger[_0x7e5f('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x5b7f38,_0x3660e1[_0x7e5f('0xf')][_0x7e5f('0x11')]);return _0x3d1006(_0x3660e1[_0x7e5f('0xf')]['message']);}logger[_0x7e5f('0xf')](_0x7e5f('0xb'),_0x5b7f38,_0x3660e1[_0x7e5f('0xf')][_0x7e5f('0x11')]);return _0x533746(_0x3660e1[_0x7e5f('0xf')][_0x7e5f('0x11')]);}else{logger['info']('SugarcrmAccount,\x20%s,\x20%s',_0x5b7f38,_0x7e5f('0xc'));_0x533746(_0x3660e1[_0x7e5f('0x12')]['message']);}})[_0x7e5f('0x13')](function(_0x480327){logger['error'](_0x7e5f('0xb'),_0x5b7f38,_0x480327);_0x3d1006(_0x480327);});});}exports['GetSugarcrmAccount']=function(_0x4de5da){var _0xcd12db=this;return new Promise(function(_0x4bc95e,_0x194db1){return db[_0x7e5f('0x14')]['findAll']({'raw':_0x4de5da['options']?_0x4de5da['options'][_0x7e5f('0x15')]===undefined?!![]:![]:!![],'where':_0x4de5da[_0x7e5f('0x16')]?_0x4de5da[_0x7e5f('0x16')][_0x7e5f('0x17')]||null:null,'attributes':_0x4de5da[_0x7e5f('0x16')]?_0x4de5da[_0x7e5f('0x16')][_0x7e5f('0x18')]||null:null,'limit':_0x4de5da['options']?_0x4de5da[_0x7e5f('0x16')][_0x7e5f('0x19')]||null:null,'include':_0x4de5da[_0x7e5f('0x16')]?_0x4de5da['options'][_0x7e5f('0x1a')]?_[_0x7e5f('0x1b')](_0x4de5da[_0x7e5f('0x16')][_0x7e5f('0x1a')],function(_0x38359d){return{'model':db[_0x38359d[_0x7e5f('0x1c')]],'as':_0x38359d['as'],'attributes':_0x38359d[_0x7e5f('0x18')],'include':_0x38359d[_0x7e5f('0x1a')]?_[_0x7e5f('0x1b')](_0x38359d['include'],function(_0x245b70){return{'model':db[_0x245b70[_0x7e5f('0x1c')]],'as':_0x245b70['as'],'attributes':_0x245b70[_0x7e5f('0x18')],'include':_0x245b70[_0x7e5f('0x1a')]?_['map'](_0x245b70[_0x7e5f('0x1a')],function(_0x1079d9){return{'model':db[_0x1079d9['model']],'as':_0x1079d9['as'],'attributes':_0x1079d9[_0x7e5f('0x18')]};}):[]};}):[]};}):[]:[]})[_0x7e5f('0xa')](function(_0x2f1612){logger['info'](_0x7e5f('0x1d'),_0x4de5da);logger[_0x7e5f('0xd')](_0x7e5f('0x1d'),_0x4de5da,JSON['stringify'](_0x2f1612));_0x4bc95e(_0x2f1612);})[_0x7e5f('0x13')](function(_0x5c04af){logger['error'](_0x7e5f('0x1d'),_0x5c04af[_0x7e5f('0x11')],_0x4de5da);_0x194db1(_0xcd12db['error'](0x1f4,_0x5c04af[_0x7e5f('0x11')]));});});};exports['ShowSugarcrmAccount']=function(_0xfa0ee0){var _0x52bc9e=this;return new Promise(function(_0x220197,_0x4c56f8){return db['SugarcrmAccount'][_0x7e5f('0x1e')]({'raw':_0xfa0ee0[_0x7e5f('0x16')]?_0xfa0ee0[_0x7e5f('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0xfa0ee0[_0x7e5f('0x16')]?_0xfa0ee0[_0x7e5f('0x16')][_0x7e5f('0x17')]||null:null,'attributes':_0xfa0ee0[_0x7e5f('0x16')]?_0xfa0ee0['options'][_0x7e5f('0x18')]||null:null,'include':_0xfa0ee0['options']?_0xfa0ee0[_0x7e5f('0x16')][_0x7e5f('0x1a')]?_[_0x7e5f('0x1b')](_0xfa0ee0[_0x7e5f('0x16')][_0x7e5f('0x1a')],function(_0x1c84d5){return{'model':db[_0x1c84d5['model']],'as':_0x1c84d5['as'],'attributes':_0x1c84d5[_0x7e5f('0x18')],'include':_0x1c84d5[_0x7e5f('0x1a')]?_['map'](_0x1c84d5[_0x7e5f('0x1a')],function(_0x23eaf7){return{'model':db[_0x23eaf7[_0x7e5f('0x1c')]],'as':_0x23eaf7['as'],'attributes':_0x23eaf7[_0x7e5f('0x18')],'include':_0x23eaf7['include']?_[_0x7e5f('0x1b')](_0x23eaf7[_0x7e5f('0x1a')],function(_0x4a64ca){return{'model':db[_0x4a64ca['model']],'as':_0x4a64ca['as'],'attributes':_0x4a64ca[_0x7e5f('0x18')]};}):[]};}):[]};}):[]:[]})[_0x7e5f('0xa')](function(_0x2be5db){logger[_0x7e5f('0x1f')](_0x7e5f('0x20'),_0xfa0ee0);logger[_0x7e5f('0xd')](_0x7e5f('0x20'),_0xfa0ee0,JSON[_0x7e5f('0x21')](_0x2be5db));_0x220197(_0x2be5db);})[_0x7e5f('0x13')](function(_0x3c198e){logger[_0x7e5f('0xf')](_0x7e5f('0x20'),_0x3c198e[_0x7e5f('0x11')],_0xfa0ee0);_0x4c56f8(_0x52bc9e[_0x7e5f('0xf')](0x1f4,_0x3c198e[_0x7e5f('0x11')]));});});};
\ No newline at end of file
+var _0x8536=['../../config/logger','rpc','jayson/promise','client','http','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','limit','include','map','model','attributes','debug','ShowSugarcrmAccount','find','then','moment','randomstring','ioredis','../../config/utils'];(function(_0x5e4100,_0xc2be9c){var _0x22f675=function(_0x15eaec){while(--_0x15eaec){_0x5e4100['push'](_0x5e4100['shift']());}};_0x22f675(++_0xc2be9c);}(_0x8536,0x19c));var _0x6853=function(_0x4c4245,_0x3d772a){_0x4c4245=_0x4c4245-0x0;var _0x52a45e=_0x8536[_0x4c4245];return _0x52a45e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6853('0x0'));var BPromise=require('bluebird');var rs=require(_0x6853('0x1'));var fs=require('fs');var Redis=require(_0x6853('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x6853('0x3'));var logger=require(_0x6853('0x4'))(_0x6853('0x5'));var config=require('../../config/environment');var jayson=require(_0x6853('0x6'));var client=jayson[_0x6853('0x7')][_0x6853('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x40fad6,_0x4739f9,_0x469495){return new BPromise(function(_0x2d9267,_0x289f7c){return client['request'](_0x40fad6,_0x469495)['then'](function(_0x29725c){logger[_0x6853('0x9')](_0x6853('0xa'),_0x4739f9,_0x6853('0xb'));logger['debug']('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x4739f9,'request\x20sent',JSON[_0x6853('0xc')](_0x29725c));if(_0x29725c[_0x6853('0xd')]){if(_0x29725c['error'][_0x6853('0xe')]===0x1f4){logger[_0x6853('0xd')](_0x6853('0xa'),_0x4739f9,_0x29725c[_0x6853('0xd')]['message']);return _0x289f7c(_0x29725c[_0x6853('0xd')][_0x6853('0xf')]);}logger[_0x6853('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x4739f9,_0x29725c['error'][_0x6853('0xf')]);return _0x2d9267(_0x29725c['error']['message']);}else{logger[_0x6853('0x9')](_0x6853('0xa'),_0x4739f9,_0x6853('0xb'));_0x2d9267(_0x29725c['result'][_0x6853('0xf')]);}})[_0x6853('0x10')](function(_0x1c27cd){logger[_0x6853('0xd')](_0x6853('0xa'),_0x4739f9,_0x1c27cd);_0x289f7c(_0x1c27cd);});});}exports[_0x6853('0x11')]=function(_0x5ad3e9){var _0x2a4700=this;return new Promise(function(_0x12d340,_0x6956d9){return db[_0x6853('0x12')][_0x6853('0x13')]({'raw':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9[_0x6853('0x14')][_0x6853('0x15')]===undefined?!![]:![]:!![],'where':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9[_0x6853('0x14')][_0x6853('0x16')]||null:null,'attributes':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9['options']['attributes']||null:null,'limit':_0x5ad3e9['options']?_0x5ad3e9['options'][_0x6853('0x17')]||null:null,'include':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9[_0x6853('0x14')][_0x6853('0x18')]?_[_0x6853('0x19')](_0x5ad3e9[_0x6853('0x14')][_0x6853('0x18')],function(_0x5e6c8f){return{'model':db[_0x5e6c8f[_0x6853('0x1a')]],'as':_0x5e6c8f['as'],'attributes':_0x5e6c8f['attributes'],'include':_0x5e6c8f['include']?_['map'](_0x5e6c8f[_0x6853('0x18')],function(_0x436409){return{'model':db[_0x436409[_0x6853('0x1a')]],'as':_0x436409['as'],'attributes':_0x436409['attributes'],'include':_0x436409[_0x6853('0x18')]?_['map'](_0x436409[_0x6853('0x18')],function(_0xfbdf6e){return{'model':db[_0xfbdf6e[_0x6853('0x1a')]],'as':_0xfbdf6e['as'],'attributes':_0xfbdf6e[_0x6853('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x245590){logger[_0x6853('0x9')](_0x6853('0x11'),_0x5ad3e9);logger[_0x6853('0x1c')](_0x6853('0x11'),_0x5ad3e9,JSON[_0x6853('0xc')](_0x245590));_0x12d340(_0x245590);})[_0x6853('0x10')](function(_0x5f147b){logger[_0x6853('0xd')]('GetSugarcrmAccount',_0x5f147b[_0x6853('0xf')],_0x5ad3e9);_0x6956d9(_0x2a4700[_0x6853('0xd')](0x1f4,_0x5f147b[_0x6853('0xf')]));});});};exports[_0x6853('0x1d')]=function(_0x3fc393){var _0x4bd8b3=this;return new Promise(function(_0x64c664,_0x5e72e1){return db[_0x6853('0x12')][_0x6853('0x1e')]({'raw':_0x3fc393[_0x6853('0x14')]?_0x3fc393['options'][_0x6853('0x15')]===undefined?!![]:![]:!![],'where':_0x3fc393[_0x6853('0x14')]?_0x3fc393[_0x6853('0x14')][_0x6853('0x16')]||null:null,'attributes':_0x3fc393[_0x6853('0x14')]?_0x3fc393[_0x6853('0x14')][_0x6853('0x1b')]||null:null,'include':_0x3fc393[_0x6853('0x14')]?_0x3fc393['options'][_0x6853('0x18')]?_[_0x6853('0x19')](_0x3fc393['options'][_0x6853('0x18')],function(_0x55fb37){return{'model':db[_0x55fb37[_0x6853('0x1a')]],'as':_0x55fb37['as'],'attributes':_0x55fb37[_0x6853('0x1b')],'include':_0x55fb37[_0x6853('0x18')]?_[_0x6853('0x19')](_0x55fb37[_0x6853('0x18')],function(_0x9164ac){return{'model':db[_0x9164ac[_0x6853('0x1a')]],'as':_0x9164ac['as'],'attributes':_0x9164ac[_0x6853('0x1b')],'include':_0x9164ac[_0x6853('0x18')]?_[_0x6853('0x19')](_0x9164ac[_0x6853('0x18')],function(_0x46fcf5){return{'model':db[_0x46fcf5[_0x6853('0x1a')]],'as':_0x46fcf5['as'],'attributes':_0x46fcf5[_0x6853('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6853('0x1f')](function(_0x318e32){logger[_0x6853('0x9')](_0x6853('0x1d'),_0x3fc393);logger[_0x6853('0x1c')](_0x6853('0x1d'),_0x3fc393,JSON[_0x6853('0xc')](_0x318e32));_0x64c664(_0x318e32);})['catch'](function(_0x4456a0){logger[_0x6853('0xd')](_0x6853('0x1d'),_0x4456a0['message'],_0x3fc393);_0x5e72e1(_0x4bd8b3[_0x6853('0xd')](0x1f4,_0x4456a0[_0x6853('0xf')]));});});};
\ No newline at end of file
index f9d3000..1caabeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d2f=['util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','/:id','update','delete','destroy','exports'];(function(_0x52aa8e,_0x47039c){var _0x9ddec=function(_0x1100a7){while(--_0x1100a7){_0x52aa8e['push'](_0x52aa8e['shift']());}};_0x9ddec(++_0x47039c);}(_0x3d2f,0x187));var _0xf3d2=function(_0x218b1e,_0x1bc20e){_0x218b1e=_0x218b1e-0x0;var _0xc5f70f=_0x3d2f[_0x218b1e];return _0xc5f70f;};'use strict';var multer=require('multer');var util=require(_0xf3d2('0x0'));var path=require(_0xf3d2('0x1'));var timeout=require('connect-timeout');var express=require(_0xf3d2('0x2'));var router=express['Router']();var fs_extra=require(_0xf3d2('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf3d2('0x4'));var config=require(_0xf3d2('0x5'));var controller=require(_0xf3d2('0x6'));router[_0xf3d2('0x7')]('/',auth[_0xf3d2('0x8')](),controller[_0xf3d2('0x9')]);router[_0xf3d2('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xf3d2('0xa')]);router[_0xf3d2('0x7')]('/:id/fields',auth[_0xf3d2('0x8')](),controller[_0xf3d2('0xb')]);router[_0xf3d2('0x7')](_0xf3d2('0xc'),auth[_0xf3d2('0x8')](),controller[_0xf3d2('0xd')]);router[_0xf3d2('0x7')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0xf3d2('0xe')]);router[_0xf3d2('0xf')]('/',auth[_0xf3d2('0x8')](),controller[_0xf3d2('0x10')]);router[_0xf3d2('0x11')](_0xf3d2('0x12'),auth['isAuthenticated'](),controller[_0xf3d2('0x13')]);router[_0xf3d2('0x14')](_0xf3d2('0x12'),auth[_0xf3d2('0x8')](),controller[_0xf3d2('0x15')]);module[_0xf3d2('0x16')]=router;
\ No newline at end of file
+var _0x6da0=['post','create','put','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getDescriptions'];(function(_0x3f29c6,_0x16bbf0){var _0x34f03b=function(_0x390693){while(--_0x390693){_0x3f29c6['push'](_0x3f29c6['shift']());}};_0x34f03b(++_0x16bbf0);}(_0x6da0,0x176));var _0x06da=function(_0x89ef4f,_0x10225e){_0x89ef4f=_0x89ef4f-0x0;var _0x3bef0f=_0x6da0[_0x89ef4f];return _0x3bef0f;};'use strict';var multer=require('multer');var util=require(_0x06da('0x0'));var path=require(_0x06da('0x1'));var timeout=require(_0x06da('0x2'));var express=require(_0x06da('0x3'));var router=express['Router']();var fs_extra=require(_0x06da('0x4'));var auth=require(_0x06da('0x5'));var interaction=require(_0x06da('0x6'));var config=require(_0x06da('0x7'));var controller=require(_0x06da('0x8'));router[_0x06da('0x9')]('/',auth[_0x06da('0xa')](),controller['index']);router[_0x06da('0x9')](_0x06da('0xb'),auth[_0x06da('0xa')](),controller[_0x06da('0xc')]);router[_0x06da('0x9')](_0x06da('0xd'),auth[_0x06da('0xa')](),controller[_0x06da('0xe')]);router[_0x06da('0x9')](_0x06da('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x06da('0x9')]('/:id/descriptions',auth[_0x06da('0xa')](),controller[_0x06da('0x10')]);router[_0x06da('0x11')]('/',auth[_0x06da('0xa')](),controller[_0x06da('0x12')]);router[_0x06da('0x13')](_0x06da('0xb'),auth['isAuthenticated'](),controller[_0x06da('0x14')]);router[_0x06da('0x15')](_0x06da('0xb'),auth[_0x06da('0xa')](),controller['destroy']);module[_0x06da('0x16')]=router;
\ No newline at end of file
index 652feb5..b2ec8fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35fe=['exports','STRING','sequelize'];(function(_0x489b87,_0xd51c93){var _0x1823b6=function(_0x451c70){while(--_0x451c70){_0x489b87['push'](_0x489b87['shift']());}};_0x1823b6(++_0xd51c93);}(_0x35fe,0x6b));var _0xe35f=function(_0x30faec,_0x18940b){_0x30faec=_0x30faec-0x0;var _0x29484f=_0x35fe[_0x30faec];return _0x29484f;};'use strict';var Sequelize=require(_0xe35f('0x0'));module[_0xe35f('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe35f('0x2')]}};
\ No newline at end of file
+var _0xd36c=['exports','STRING','sequelize'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0xd36c,0x1d0));var _0xcd36=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xd36c[_0x279d37];return _0x530173;};'use strict';var Sequelize=require(_0xcd36('0x0'));module[_0xcd36('0x1')]={'name':{'type':Sequelize[_0xcd36('0x2')]},'description':{'type':Sequelize[_0xcd36('0x2')]}};
\ No newline at end of file
index da3df7b..d82fb73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaef8=['map','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','SugarcrmConfiguration','includeAll','findAll','rows','catch','params','keys','intersection','include','find','body','getFields','findOne','SugarcrmField','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','stack','name','send','rawAttributes','fieldName','type','key','model'];(function(_0x1ded25,_0x26be3d){var _0x8ec99f=function(_0x3017ac){while(--_0x3017ac){_0x1ded25['push'](_0x1ded25['shift']());}};_0x8ec99f(++_0x26be3d);}(_0xaef8,0x158));var _0x8aef=function(_0x352fc9,_0x59fadc){_0x352fc9=_0x352fc9-0x0;var _0x36b574=_0xaef8[_0x352fc9];return _0x36b574;};'use strict';var emlformat=require(_0x8aef('0x0'));var rimraf=require(_0x8aef('0x1'));var zipdir=require(_0x8aef('0x2'));var jsonpatch=require(_0x8aef('0x3'));var rp=require('request-promise');var moment=require(_0x8aef('0x4'));var BPromise=require(_0x8aef('0x5'));var Mustache=require('mustache');var util=require(_0x8aef('0x6'));var path=require(_0x8aef('0x7'));var sox=require(_0x8aef('0x8'));var csv=require('to-csv');var ejs=require(_0x8aef('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8aef('0xa'));var crypto=require(_0x8aef('0xb'));var jsforce=require(_0x8aef('0xc'));var deskjs=require(_0x8aef('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8aef('0xe'));var Papa=require(_0x8aef('0xf'));var Redis=require('ioredis');var authService=require(_0x8aef('0x10'));var qs=require(_0x8aef('0x11'));var as=require(_0x8aef('0x12'));var hardwareService=require(_0x8aef('0x13'));var logger=require(_0x8aef('0x14'))('api');var utils=require(_0x8aef('0x15'));var config=require(_0x8aef('0x16'));var licenseUtil=require(_0x8aef('0x17'));var db=require(_0x8aef('0x18'))['db'];function respondWithStatusCode(_0x535de5,_0x35861f){_0x35861f=_0x35861f||0xcc;return function(_0x4a489d){if(_0x4a489d){return _0x535de5[_0x8aef('0x19')](_0x35861f);}return _0x535de5[_0x8aef('0x1a')](_0x35861f)[_0x8aef('0x1b')]();};}function respondWithResult(_0x16677a,_0x4c10c0){_0x4c10c0=_0x4c10c0||0xc8;return function(_0x1cea48){if(_0x1cea48){return _0x16677a[_0x8aef('0x1a')](_0x4c10c0)[_0x8aef('0x1c')](_0x1cea48);}};}function respondWithFilteredResult(_0x1a7f88,_0x125bc4){return function(_0x3bfd6b){if(_0x3bfd6b){var _0x120699=typeof _0x125bc4[_0x8aef('0x1d')]==='undefined'&&typeof _0x125bc4['limit']===_0x8aef('0x1e');var _0xfe53f=_0x3bfd6b[_0x8aef('0x1f')];var _0x4b1459=_0x120699?0x0:_0x125bc4[_0x8aef('0x1d')];var _0x2d4462=_0x120699?_0x3bfd6b[_0x8aef('0x1f')]:_0x125bc4[_0x8aef('0x1d')]+_0x125bc4[_0x8aef('0x20')];var _0x1ddf67;if(_0x2d4462>=_0xfe53f){_0x2d4462=_0xfe53f;_0x1ddf67=0xc8;}else{_0x1ddf67=0xce;}_0x1a7f88['status'](_0x1ddf67);return _0x1a7f88['set']('Content-Range',_0x4b1459+'-'+_0x2d4462+'/'+_0xfe53f)[_0x8aef('0x1c')](_0x3bfd6b);}return null;};}function patchUpdates(_0x3ba342){return function(_0x4815d3){try{jsonpatch[_0x8aef('0x21')](_0x4815d3,_0x3ba342,!![]);}catch(_0x5729c5){return BPromise[_0x8aef('0x22')](_0x5729c5);}return _0x4815d3[_0x8aef('0x23')]();};}function saveUpdates(_0x1a469e,_0x2c6ccb){return function(_0x35507c){if(_0x35507c){return _0x35507c[_0x8aef('0x24')](_0x1a469e)[_0x8aef('0x25')](function(_0x35adc8){return _0x35adc8;});}return null;};}function removeEntity(_0x1673dc,_0x4c7344){return function(_0x30063d){if(_0x30063d){return _0x30063d['destroy']()[_0x8aef('0x25')](function(){_0x1673dc[_0x8aef('0x1a')](0xcc)[_0x8aef('0x1b')]();});}};}function handleEntityNotFound(_0x25d696,_0x57123b){return function(_0x549e3b){if(!_0x549e3b){_0x25d696[_0x8aef('0x19')](0x194);}return _0x549e3b;};}function handleError(_0x2d5a6a,_0x37f40a){_0x37f40a=_0x37f40a||0x1f4;return function(_0x2da8d9){logger['error'](_0x2da8d9[_0x8aef('0x26')]);if(_0x2da8d9['name']){delete _0x2da8d9[_0x8aef('0x27')];}_0x2d5a6a[_0x8aef('0x1a')](_0x37f40a)[_0x8aef('0x28')](_0x2da8d9);};}exports['index']=function(_0x2ffdf0,_0x4dfc9d){var _0x58d9d8={},_0x5ccc32={},_0x18095b={'count':0x0,'rows':[]};var _0x31f9bc=_['map'](db['SugarcrmConfiguration'][_0x8aef('0x29')],function(_0x3306da){return{'name':_0x3306da[_0x8aef('0x2a')],'type':_0x3306da[_0x8aef('0x2b')][_0x8aef('0x2c')]};});_0x5ccc32[_0x8aef('0x2d')]=_[_0x8aef('0x2e')](_0x31f9bc,_0x8aef('0x27'));_0x5ccc32[_0x8aef('0x2f')]=_['keys'](_0x2ffdf0[_0x8aef('0x2f')]);_0x5ccc32[_0x8aef('0x30')]=_['intersection'](_0x5ccc32[_0x8aef('0x2d')],_0x5ccc32['query']);_0x58d9d8[_0x8aef('0x31')]=_['intersection'](_0x5ccc32[_0x8aef('0x2d')],qs[_0x8aef('0x32')](_0x2ffdf0[_0x8aef('0x2f')][_0x8aef('0x32')]));_0x58d9d8[_0x8aef('0x31')]=_0x58d9d8[_0x8aef('0x31')][_0x8aef('0x33')]?_0x58d9d8['attributes']:_0x5ccc32[_0x8aef('0x2d')];if(!_0x2ffdf0[_0x8aef('0x2f')][_0x8aef('0x34')](_0x8aef('0x35'))){_0x58d9d8['limit']=qs[_0x8aef('0x20')](_0x2ffdf0[_0x8aef('0x2f')]['limit']);_0x58d9d8['offset']=qs[_0x8aef('0x1d')](_0x2ffdf0[_0x8aef('0x2f')]['offset']);}_0x58d9d8[_0x8aef('0x36')]=qs['sort'](_0x2ffdf0[_0x8aef('0x2f')][_0x8aef('0x37')]);_0x58d9d8[_0x8aef('0x38')]=qs[_0x8aef('0x30')](_['pick'](_0x2ffdf0['query'],_0x5ccc32[_0x8aef('0x30')]),_0x31f9bc);if(_0x2ffdf0[_0x8aef('0x2f')][_0x8aef('0x39')]){_0x58d9d8[_0x8aef('0x38')]=_[_0x8aef('0x3a')](_0x58d9d8[_0x8aef('0x38')],{'$or':_[_0x8aef('0x2e')](_0x31f9bc,function(_0x539df6){if(_0x539df6[_0x8aef('0x2b')]!==_0x8aef('0x3b')){var _0xd22b80={};_0xd22b80[_0x539df6[_0x8aef('0x27')]]={'$like':'%'+_0x2ffdf0[_0x8aef('0x2f')]['filter']+'%'};return _0xd22b80;}})});}_0x58d9d8=_[_0x8aef('0x3a')]({},_0x58d9d8,_0x2ffdf0[_0x8aef('0x3c')]);var _0x46e35d={'where':_0x58d9d8['where']};return db[_0x8aef('0x3d')][_0x8aef('0x1f')](_0x46e35d)[_0x8aef('0x25')](function(_0x3c7272){_0x18095b[_0x8aef('0x1f')]=_0x3c7272;if(_0x2ffdf0['query'][_0x8aef('0x3e')]){_0x58d9d8['include']=[{'all':!![]}];}return db[_0x8aef('0x3d')][_0x8aef('0x3f')](_0x58d9d8);})['then'](function(_0x23e572){_0x18095b[_0x8aef('0x40')]=_0x23e572;return _0x18095b;})[_0x8aef('0x25')](respondWithFilteredResult(_0x4dfc9d,_0x58d9d8))[_0x8aef('0x41')](handleError(_0x4dfc9d,null));};exports['show']=function(_0x48ca9b,_0x3d0e91){var _0x2a769e={'raw':![],'where':{'id':_0x48ca9b[_0x8aef('0x42')]['id']}},_0x3a6a96={};_0x3a6a96[_0x8aef('0x2d')]=_[_0x8aef('0x43')](db[_0x8aef('0x3d')]['rawAttributes']);_0x3a6a96[_0x8aef('0x2f')]=_['keys'](_0x48ca9b[_0x8aef('0x2f')]);_0x3a6a96[_0x8aef('0x30')]=_[_0x8aef('0x44')](_0x3a6a96[_0x8aef('0x2d')],_0x3a6a96[_0x8aef('0x2f')]);_0x2a769e[_0x8aef('0x31')]=_[_0x8aef('0x44')](_0x3a6a96[_0x8aef('0x2d')],qs[_0x8aef('0x32')](_0x48ca9b[_0x8aef('0x2f')][_0x8aef('0x32')]));_0x2a769e['attributes']=_0x2a769e['attributes'][_0x8aef('0x33')]?_0x2a769e[_0x8aef('0x31')]:_0x3a6a96[_0x8aef('0x2d')];if(_0x48ca9b[_0x8aef('0x2f')][_0x8aef('0x3e')]){_0x2a769e[_0x8aef('0x45')]=[{'all':!![]}];}_0x2a769e=_['merge']({},_0x2a769e,_0x48ca9b[_0x8aef('0x3c')]);return db[_0x8aef('0x3d')][_0x8aef('0x46')](_0x2a769e)[_0x8aef('0x25')](handleEntityNotFound(_0x3d0e91,null))[_0x8aef('0x25')](respondWithResult(_0x3d0e91,null))[_0x8aef('0x41')](handleError(_0x3d0e91,null));};exports['create']=function(_0x12ecea,_0x1aa026){return db[_0x8aef('0x3d')]['create'](_0x12ecea[_0x8aef('0x47')],{})[_0x8aef('0x25')](respondWithResult(_0x1aa026,0xc9))[_0x8aef('0x41')](handleError(_0x1aa026,null));};exports['update']=function(_0x1ecd50,_0x497ed1){if(_0x1ecd50[_0x8aef('0x47')]['id']){delete _0x1ecd50[_0x8aef('0x47')]['id'];}return db[_0x8aef('0x3d')][_0x8aef('0x46')]({'where':{'id':_0x1ecd50[_0x8aef('0x42')]['id']}})['then'](handleEntityNotFound(_0x497ed1,null))[_0x8aef('0x25')](saveUpdates(_0x1ecd50[_0x8aef('0x47')],null))['then'](respondWithResult(_0x497ed1,null))[_0x8aef('0x41')](handleError(_0x497ed1,null));};exports['destroy']=function(_0x4edbbe,_0x531362){return db[_0x8aef('0x3d')]['find']({'where':{'id':_0x4edbbe[_0x8aef('0x42')]['id']}})[_0x8aef('0x25')](handleEntityNotFound(_0x531362,null))[_0x8aef('0x25')](removeEntity(_0x531362,null))[_0x8aef('0x41')](handleError(_0x531362,null));};exports[_0x8aef('0x48')]=function(_0x43d833,_0x4c516b,_0x34d4d8){var _0x388390={};var _0x6f1a2f={};var _0x1b5587;var _0x51fb88;return db[_0x8aef('0x3d')][_0x8aef('0x49')]({'where':{'id':_0x43d833[_0x8aef('0x42')]['id']}})[_0x8aef('0x25')](handleEntityNotFound(_0x4c516b,null))['then'](function(_0x428c6b){if(_0x428c6b){_0x1b5587=_0x428c6b;_0x6f1a2f[_0x8aef('0x2d')]=_[_0x8aef('0x43')](db[_0x8aef('0x4a')]['rawAttributes']);_0x6f1a2f['query']=_['keys'](_0x43d833['query']);_0x6f1a2f[_0x8aef('0x30')]=_[_0x8aef('0x44')](_0x6f1a2f[_0x8aef('0x2d')],_0x6f1a2f[_0x8aef('0x2f')]);_0x388390[_0x8aef('0x31')]=_[_0x8aef('0x44')](_0x6f1a2f['model'],qs['fields'](_0x43d833[_0x8aef('0x2f')][_0x8aef('0x32')]));_0x388390[_0x8aef('0x31')]=_0x388390[_0x8aef('0x31')][_0x8aef('0x33')]?_0x388390['attributes']:_0x6f1a2f[_0x8aef('0x2d')];_0x388390[_0x8aef('0x36')]=qs[_0x8aef('0x37')](_0x43d833['query'][_0x8aef('0x37')]);_0x388390[_0x8aef('0x38')]=qs[_0x8aef('0x30')](_['pick'](_0x43d833[_0x8aef('0x2f')],_0x6f1a2f[_0x8aef('0x30')]));if(_0x43d833[_0x8aef('0x2f')][_0x8aef('0x39')]){_0x388390['where']=_['merge'](_0x388390[_0x8aef('0x38')],{'$or':_[_0x8aef('0x2e')](_0x388390[_0x8aef('0x31')],function(_0x4fdd81){var _0x212087={};_0x212087[_0x4fdd81]={'$like':'%'+_0x43d833[_0x8aef('0x2f')][_0x8aef('0x39')]+'%'};return _0x212087;})});}_0x388390=_['merge']({},_0x388390,_0x43d833['options']);return _0x1b5587[_0x8aef('0x48')](_0x388390);}})['then'](function(_0x390137){if(_0x390137){_0x51fb88=_0x390137['length'];if(!_0x43d833[_0x8aef('0x2f')][_0x8aef('0x34')](_0x8aef('0x35'))){_0x388390[_0x8aef('0x20')]=qs[_0x8aef('0x20')](_0x43d833[_0x8aef('0x2f')][_0x8aef('0x20')]);_0x388390[_0x8aef('0x1d')]=qs[_0x8aef('0x1d')](_0x43d833[_0x8aef('0x2f')][_0x8aef('0x1d')]);}return _0x1b5587['getFields'](_0x388390);}})[_0x8aef('0x25')](function(_0x4baf5f){if(_0x4baf5f){return _0x4baf5f?{'count':_0x51fb88,'rows':_0x4baf5f}:null;}})[_0x8aef('0x25')](respondWithResult(_0x4c516b,null))[_0x8aef('0x41')](handleError(_0x4c516b,null));};exports['getSubjects']=function(_0x5520b6,_0x15f119,_0x1b1adc){var _0x4d5000={};var _0x1744dd={};var _0x5a0020;var _0x2e4289;return db[_0x8aef('0x3d')][_0x8aef('0x49')]({'where':{'id':_0x5520b6[_0x8aef('0x42')]['id']}})[_0x8aef('0x25')](handleEntityNotFound(_0x15f119,null))[_0x8aef('0x25')](function(_0x22396e){if(_0x22396e){_0x5a0020=_0x22396e;_0x1744dd[_0x8aef('0x2d')]=_['keys'](db[_0x8aef('0x4a')][_0x8aef('0x29')]);_0x1744dd['query']=_['keys'](_0x5520b6[_0x8aef('0x2f')]);_0x1744dd[_0x8aef('0x30')]=_[_0x8aef('0x44')](_0x1744dd[_0x8aef('0x2d')],_0x1744dd[_0x8aef('0x2f')]);_0x4d5000['attributes']=_[_0x8aef('0x44')](_0x1744dd['model'],qs[_0x8aef('0x32')](_0x5520b6['query']['fields']));_0x4d5000[_0x8aef('0x31')]=_0x4d5000['attributes']['length']?_0x4d5000[_0x8aef('0x31')]:_0x1744dd[_0x8aef('0x2d')];_0x4d5000[_0x8aef('0x36')]=qs['sort'](_0x5520b6['query'][_0x8aef('0x37')]);_0x4d5000['where']=qs[_0x8aef('0x30')](_[_0x8aef('0x4b')](_0x5520b6['query'],_0x1744dd[_0x8aef('0x30')]));if(_0x5520b6['query']['filter']){_0x4d5000[_0x8aef('0x38')]=_[_0x8aef('0x3a')](_0x4d5000[_0x8aef('0x38')],{'$or':_[_0x8aef('0x2e')](_0x4d5000[_0x8aef('0x31')],function(_0x1ca286){var _0xd6f634={};_0xd6f634[_0x1ca286]={'$like':'%'+_0x5520b6[_0x8aef('0x2f')][_0x8aef('0x39')]+'%'};return _0xd6f634;})});}_0x4d5000=_[_0x8aef('0x3a')]({},_0x4d5000,_0x5520b6[_0x8aef('0x3c')]);return _0x5a0020[_0x8aef('0x4c')](_0x4d5000);}})[_0x8aef('0x25')](function(_0x3d8d25){if(_0x3d8d25){_0x2e4289=_0x3d8d25[_0x8aef('0x33')];if(!_0x5520b6[_0x8aef('0x2f')]['hasOwnProperty']('nolimit')){_0x4d5000[_0x8aef('0x20')]=qs[_0x8aef('0x20')](_0x5520b6[_0x8aef('0x2f')][_0x8aef('0x20')]);_0x4d5000[_0x8aef('0x1d')]=qs['offset'](_0x5520b6[_0x8aef('0x2f')][_0x8aef('0x1d')]);}return _0x5a0020['getSubjects'](_0x4d5000);}})[_0x8aef('0x25')](function(_0x45570d){if(_0x45570d){return _0x45570d?{'count':_0x2e4289,'rows':_0x45570d}:null;}})[_0x8aef('0x25')](respondWithResult(_0x15f119,null))['catch'](handleError(_0x15f119,null));};exports[_0x8aef('0x4d')]=function(_0x43e9eb,_0x364488,_0x37a4ce){var _0x4330ac={};var _0x1a9d19={};var _0xd1830f;var _0x3e3e99;return db[_0x8aef('0x3d')][_0x8aef('0x49')]({'where':{'id':_0x43e9eb['params']['id']}})[_0x8aef('0x25')](handleEntityNotFound(_0x364488,null))['then'](function(_0xc44db5){if(_0xc44db5){_0xd1830f=_0xc44db5;_0x1a9d19['model']=_['keys'](db['SugarcrmField'][_0x8aef('0x29')]);_0x1a9d19[_0x8aef('0x2f')]=_[_0x8aef('0x43')](_0x43e9eb['query']);_0x1a9d19[_0x8aef('0x30')]=_[_0x8aef('0x44')](_0x1a9d19['model'],_0x1a9d19[_0x8aef('0x2f')]);_0x4330ac[_0x8aef('0x31')]=_[_0x8aef('0x44')](_0x1a9d19[_0x8aef('0x2d')],qs[_0x8aef('0x32')](_0x43e9eb[_0x8aef('0x2f')][_0x8aef('0x32')]));_0x4330ac[_0x8aef('0x31')]=_0x4330ac[_0x8aef('0x31')][_0x8aef('0x33')]?_0x4330ac[_0x8aef('0x31')]:_0x1a9d19['model'];_0x4330ac['order']=qs['sort'](_0x43e9eb[_0x8aef('0x2f')][_0x8aef('0x37')]);_0x4330ac[_0x8aef('0x38')]=qs[_0x8aef('0x30')](_['pick'](_0x43e9eb[_0x8aef('0x2f')],_0x1a9d19['filters']));if(_0x43e9eb[_0x8aef('0x2f')][_0x8aef('0x39')]){_0x4330ac[_0x8aef('0x38')]=_[_0x8aef('0x3a')](_0x4330ac[_0x8aef('0x38')],{'$or':_['map'](_0x4330ac[_0x8aef('0x31')],function(_0x144ed1){var _0xf9cace={};_0xf9cace[_0x144ed1]={'$like':'%'+_0x43e9eb['query'][_0x8aef('0x39')]+'%'};return _0xf9cace;})});}_0x4330ac=_['merge']({},_0x4330ac,_0x43e9eb[_0x8aef('0x3c')]);return _0xd1830f[_0x8aef('0x4d')](_0x4330ac);}})[_0x8aef('0x25')](function(_0x33e494){if(_0x33e494){_0x3e3e99=_0x33e494['length'];if(!_0x43e9eb[_0x8aef('0x2f')][_0x8aef('0x34')](_0x8aef('0x35'))){_0x4330ac['limit']=qs[_0x8aef('0x20')](_0x43e9eb['query'][_0x8aef('0x20')]);_0x4330ac[_0x8aef('0x1d')]=qs[_0x8aef('0x1d')](_0x43e9eb[_0x8aef('0x2f')][_0x8aef('0x1d')]);}return _0xd1830f[_0x8aef('0x4d')](_0x4330ac);}})[_0x8aef('0x25')](function(_0x212589){if(_0x212589){return _0x212589?{'count':_0x3e3e99,'rows':_0x212589}:null;}})[_0x8aef('0x25')](respondWithResult(_0x364488,null))[_0x8aef('0x41')](handleError(_0x364488,null));};
\ No newline at end of file
+var _0x53d9=['params','keys','options','find','catch','create','body','getFields','SugarcrmField','findOne','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','send','index','SugarcrmConfiguration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x53d9,0x108));var _0x953d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53d9[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x953d('0x0'));var rimraf=require(_0x953d('0x1'));var zipdir=require(_0x953d('0x2'));var jsonpatch=require(_0x953d('0x3'));var rp=require(_0x953d('0x4'));var moment=require('moment');var BPromise=require(_0x953d('0x5'));var Mustache=require(_0x953d('0x6'));var util=require(_0x953d('0x7'));var path=require(_0x953d('0x8'));var sox=require(_0x953d('0x9'));var csv=require(_0x953d('0xa'));var ejs=require(_0x953d('0xb'));var fs=require('fs');var fs_extra=require(_0x953d('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x953d('0xd'));var jsforce=require(_0x953d('0xe'));var deskjs=require(_0x953d('0xf'));var toCsv=require(_0x953d('0xa'));var querystring=require(_0x953d('0x10'));var Papa=require(_0x953d('0x11'));var Redis=require('ioredis');var authService=require(_0x953d('0x12'));var qs=require(_0x953d('0x13'));var as=require(_0x953d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x953d('0x15'))(_0x953d('0x16'));var utils=require(_0x953d('0x17'));var config=require(_0x953d('0x18'));var licenseUtil=require(_0x953d('0x19'));var db=require(_0x953d('0x1a'))['db'];function respondWithStatusCode(_0x36ff2e,_0x41927e){_0x41927e=_0x41927e||0xcc;return function(_0x47538f){if(_0x47538f){return _0x36ff2e['sendStatus'](_0x41927e);}return _0x36ff2e[_0x953d('0x1b')](_0x41927e)[_0x953d('0x1c')]();};}function respondWithResult(_0x5ce87d,_0x90e52a){_0x90e52a=_0x90e52a||0xc8;return function(_0xa25346){if(_0xa25346){return _0x5ce87d[_0x953d('0x1b')](_0x90e52a)[_0x953d('0x1d')](_0xa25346);}};}function respondWithFilteredResult(_0x581e89,_0x41e57c){return function(_0x11fcd3){if(_0x11fcd3){var _0x3f4854=typeof _0x41e57c[_0x953d('0x1e')]===_0x953d('0x1f')&&typeof _0x41e57c['limit']===_0x953d('0x1f');var _0x173731=_0x11fcd3[_0x953d('0x20')];var _0x311c42=_0x3f4854?0x0:_0x41e57c['offset'];var _0x7015fa=_0x3f4854?_0x11fcd3[_0x953d('0x20')]:_0x41e57c['offset']+_0x41e57c['limit'];var _0x157a43;if(_0x7015fa>=_0x173731){_0x7015fa=_0x173731;_0x157a43=0xc8;}else{_0x157a43=0xce;}_0x581e89[_0x953d('0x1b')](_0x157a43);return _0x581e89['set'](_0x953d('0x21'),_0x311c42+'-'+_0x7015fa+'/'+_0x173731)[_0x953d('0x1d')](_0x11fcd3);}return null;};}function patchUpdates(_0x40d7e1){return function(_0x69530){try{jsonpatch[_0x953d('0x22')](_0x69530,_0x40d7e1,!![]);}catch(_0x57fcfb){return BPromise['reject'](_0x57fcfb);}return _0x69530[_0x953d('0x23')]();};}function saveUpdates(_0x348fd9,_0x4c8f08){return function(_0x5b398b){if(_0x5b398b){return _0x5b398b[_0x953d('0x24')](_0x348fd9)[_0x953d('0x25')](function(_0x1cb87c){return _0x1cb87c;});}return null;};}function removeEntity(_0x2e4893,_0x3bf3c3){return function(_0x150c24){if(_0x150c24){return _0x150c24[_0x953d('0x26')]()[_0x953d('0x25')](function(){_0x2e4893[_0x953d('0x1b')](0xcc)[_0x953d('0x1c')]();});}};}function handleEntityNotFound(_0x386cd2,_0x3ea276){return function(_0x2ebffc){if(!_0x2ebffc){_0x386cd2[_0x953d('0x27')](0x194);}return _0x2ebffc;};}function handleError(_0x40db55,_0x5c036e){_0x5c036e=_0x5c036e||0x1f4;return function(_0x59a91e){logger['error'](_0x59a91e[_0x953d('0x28')]);if(_0x59a91e[_0x953d('0x29')]){delete _0x59a91e[_0x953d('0x29')];}_0x40db55[_0x953d('0x1b')](_0x5c036e)[_0x953d('0x2a')](_0x59a91e);};}exports[_0x953d('0x2b')]=function(_0x25ded2,_0x211d40){var _0x3784e9={},_0x4c9a36={},_0x664e51={'count':0x0,'rows':[]};var _0x279f2f=_['map'](db[_0x953d('0x2c')][_0x953d('0x2d')],function(_0x9db308){return{'name':_0x9db308[_0x953d('0x2e')],'type':_0x9db308[_0x953d('0x2f')][_0x953d('0x30')]};});_0x4c9a36[_0x953d('0x31')]=_[_0x953d('0x32')](_0x279f2f,'name');_0x4c9a36[_0x953d('0x33')]=_['keys'](_0x25ded2['query']);_0x4c9a36[_0x953d('0x34')]=_[_0x953d('0x35')](_0x4c9a36[_0x953d('0x31')],_0x4c9a36[_0x953d('0x33')]);_0x3784e9[_0x953d('0x36')]=_[_0x953d('0x35')](_0x4c9a36[_0x953d('0x31')],qs[_0x953d('0x37')](_0x25ded2['query'][_0x953d('0x37')]));_0x3784e9['attributes']=_0x3784e9[_0x953d('0x36')][_0x953d('0x38')]?_0x3784e9[_0x953d('0x36')]:_0x4c9a36[_0x953d('0x31')];if(!_0x25ded2['query'][_0x953d('0x39')](_0x953d('0x3a'))){_0x3784e9[_0x953d('0x3b')]=qs['limit'](_0x25ded2['query']['limit']);_0x3784e9['offset']=qs[_0x953d('0x1e')](_0x25ded2[_0x953d('0x33')][_0x953d('0x1e')]);}_0x3784e9[_0x953d('0x3c')]=qs[_0x953d('0x3d')](_0x25ded2[_0x953d('0x33')][_0x953d('0x3d')]);_0x3784e9['where']=qs['filters'](_[_0x953d('0x3e')](_0x25ded2[_0x953d('0x33')],_0x4c9a36[_0x953d('0x34')]),_0x279f2f);if(_0x25ded2[_0x953d('0x33')][_0x953d('0x3f')]){_0x3784e9[_0x953d('0x40')]=_[_0x953d('0x41')](_0x3784e9[_0x953d('0x40')],{'$or':_[_0x953d('0x32')](_0x279f2f,function(_0x472386){if(_0x472386[_0x953d('0x2f')]!==_0x953d('0x42')){var _0xfb45d4={};_0xfb45d4[_0x472386[_0x953d('0x29')]]={'$like':'%'+_0x25ded2[_0x953d('0x33')][_0x953d('0x3f')]+'%'};return _0xfb45d4;}})});}_0x3784e9=_['merge']({},_0x3784e9,_0x25ded2['options']);var _0x3e1663={'where':_0x3784e9[_0x953d('0x40')]};return db['SugarcrmConfiguration'][_0x953d('0x20')](_0x3e1663)[_0x953d('0x25')](function(_0x3dca78){_0x664e51[_0x953d('0x20')]=_0x3dca78;if(_0x25ded2[_0x953d('0x33')][_0x953d('0x43')]){_0x3784e9[_0x953d('0x44')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x953d('0x45')](_0x3784e9);})['then'](function(_0x26977b){_0x664e51[_0x953d('0x46')]=_0x26977b;return _0x664e51;})['then'](respondWithFilteredResult(_0x211d40,_0x3784e9))['catch'](handleError(_0x211d40,null));};exports[_0x953d('0x47')]=function(_0x1b5103,_0x575091){var _0x125b2b={'raw':![],'where':{'id':_0x1b5103[_0x953d('0x48')]['id']}},_0xa34fa4={};_0xa34fa4[_0x953d('0x31')]=_[_0x953d('0x49')](db[_0x953d('0x2c')][_0x953d('0x2d')]);_0xa34fa4['query']=_[_0x953d('0x49')](_0x1b5103[_0x953d('0x33')]);_0xa34fa4['filters']=_['intersection'](_0xa34fa4[_0x953d('0x31')],_0xa34fa4[_0x953d('0x33')]);_0x125b2b['attributes']=_['intersection'](_0xa34fa4[_0x953d('0x31')],qs[_0x953d('0x37')](_0x1b5103[_0x953d('0x33')][_0x953d('0x37')]));_0x125b2b['attributes']=_0x125b2b[_0x953d('0x36')][_0x953d('0x38')]?_0x125b2b['attributes']:_0xa34fa4[_0x953d('0x31')];if(_0x1b5103[_0x953d('0x33')][_0x953d('0x43')]){_0x125b2b[_0x953d('0x44')]=[{'all':!![]}];}_0x125b2b=_[_0x953d('0x41')]({},_0x125b2b,_0x1b5103[_0x953d('0x4a')]);return db[_0x953d('0x2c')][_0x953d('0x4b')](_0x125b2b)[_0x953d('0x25')](handleEntityNotFound(_0x575091,null))[_0x953d('0x25')](respondWithResult(_0x575091,null))[_0x953d('0x4c')](handleError(_0x575091,null));};exports[_0x953d('0x4d')]=function(_0x278849,_0x37aee9){return db[_0x953d('0x2c')][_0x953d('0x4d')](_0x278849['body'],{})[_0x953d('0x25')](respondWithResult(_0x37aee9,0xc9))[_0x953d('0x4c')](handleError(_0x37aee9,null));};exports[_0x953d('0x24')]=function(_0xb2da9c,_0x5f3b68){if(_0xb2da9c[_0x953d('0x4e')]['id']){delete _0xb2da9c[_0x953d('0x4e')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0xb2da9c[_0x953d('0x48')]['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x5f3b68,null))[_0x953d('0x25')](saveUpdates(_0xb2da9c[_0x953d('0x4e')],null))[_0x953d('0x25')](respondWithResult(_0x5f3b68,null))['catch'](handleError(_0x5f3b68,null));};exports[_0x953d('0x26')]=function(_0x54556a,_0x149cb4){return db[_0x953d('0x2c')]['find']({'where':{'id':_0x54556a[_0x953d('0x48')]['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x149cb4,null))['then'](removeEntity(_0x149cb4,null))[_0x953d('0x4c')](handleError(_0x149cb4,null));};exports[_0x953d('0x4f')]=function(_0x7d0307,_0x22ef1b,_0x1ad421){var _0x4272db={};var _0x130f23={};var _0x237575;var _0x93cb37;return db[_0x953d('0x2c')]['findOne']({'where':{'id':_0x7d0307[_0x953d('0x48')]['id']}})['then'](handleEntityNotFound(_0x22ef1b,null))[_0x953d('0x25')](function(_0x4b0797){if(_0x4b0797){_0x237575=_0x4b0797;_0x130f23[_0x953d('0x31')]=_['keys'](db[_0x953d('0x50')][_0x953d('0x2d')]);_0x130f23[_0x953d('0x33')]=_[_0x953d('0x49')](_0x7d0307['query']);_0x130f23[_0x953d('0x34')]=_[_0x953d('0x35')](_0x130f23[_0x953d('0x31')],_0x130f23[_0x953d('0x33')]);_0x4272db[_0x953d('0x36')]=_[_0x953d('0x35')](_0x130f23[_0x953d('0x31')],qs[_0x953d('0x37')](_0x7d0307['query']['fields']));_0x4272db[_0x953d('0x36')]=_0x4272db[_0x953d('0x36')][_0x953d('0x38')]?_0x4272db['attributes']:_0x130f23[_0x953d('0x31')];_0x4272db[_0x953d('0x3c')]=qs[_0x953d('0x3d')](_0x7d0307[_0x953d('0x33')][_0x953d('0x3d')]);_0x4272db[_0x953d('0x40')]=qs[_0x953d('0x34')](_['pick'](_0x7d0307['query'],_0x130f23[_0x953d('0x34')]));if(_0x7d0307[_0x953d('0x33')][_0x953d('0x3f')]){_0x4272db['where']=_['merge'](_0x4272db['where'],{'$or':_[_0x953d('0x32')](_0x4272db[_0x953d('0x36')],function(_0x3652b5){var _0x5d7c63={};_0x5d7c63[_0x3652b5]={'$like':'%'+_0x7d0307[_0x953d('0x33')][_0x953d('0x3f')]+'%'};return _0x5d7c63;})});}_0x4272db=_['merge']({},_0x4272db,_0x7d0307[_0x953d('0x4a')]);return _0x237575['getFields'](_0x4272db);}})[_0x953d('0x25')](function(_0xa62c04){if(_0xa62c04){_0x93cb37=_0xa62c04[_0x953d('0x38')];if(!_0x7d0307[_0x953d('0x33')][_0x953d('0x39')](_0x953d('0x3a'))){_0x4272db[_0x953d('0x3b')]=qs[_0x953d('0x3b')](_0x7d0307[_0x953d('0x33')]['limit']);_0x4272db[_0x953d('0x1e')]=qs[_0x953d('0x1e')](_0x7d0307[_0x953d('0x33')]['offset']);}return _0x237575[_0x953d('0x4f')](_0x4272db);}})[_0x953d('0x25')](function(_0x41f83e){if(_0x41f83e){return _0x41f83e?{'count':_0x93cb37,'rows':_0x41f83e}:null;}})['then'](respondWithResult(_0x22ef1b,null))['catch'](handleError(_0x22ef1b,null));};exports['getSubjects']=function(_0x4e07da,_0x543096,_0x40249a){var _0x1a8c21={};var _0x15f462={};var _0x3966f1;var _0xdafddb;return db[_0x953d('0x2c')][_0x953d('0x51')]({'where':{'id':_0x4e07da[_0x953d('0x48')]['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x543096,null))['then'](function(_0x2fbada){if(_0x2fbada){_0x3966f1=_0x2fbada;_0x15f462[_0x953d('0x31')]=_[_0x953d('0x49')](db['SugarcrmField'][_0x953d('0x2d')]);_0x15f462['query']=_['keys'](_0x4e07da[_0x953d('0x33')]);_0x15f462[_0x953d('0x34')]=_[_0x953d('0x35')](_0x15f462[_0x953d('0x31')],_0x15f462[_0x953d('0x33')]);_0x1a8c21[_0x953d('0x36')]=_[_0x953d('0x35')](_0x15f462[_0x953d('0x31')],qs[_0x953d('0x37')](_0x4e07da[_0x953d('0x33')][_0x953d('0x37')]));_0x1a8c21['attributes']=_0x1a8c21['attributes']['length']?_0x1a8c21[_0x953d('0x36')]:_0x15f462[_0x953d('0x31')];_0x1a8c21['order']=qs[_0x953d('0x3d')](_0x4e07da[_0x953d('0x33')]['sort']);_0x1a8c21['where']=qs[_0x953d('0x34')](_[_0x953d('0x3e')](_0x4e07da[_0x953d('0x33')],_0x15f462[_0x953d('0x34')]));if(_0x4e07da['query'][_0x953d('0x3f')]){_0x1a8c21[_0x953d('0x40')]=_[_0x953d('0x41')](_0x1a8c21[_0x953d('0x40')],{'$or':_[_0x953d('0x32')](_0x1a8c21[_0x953d('0x36')],function(_0x3da1f9){var _0x42e8e3={};_0x42e8e3[_0x3da1f9]={'$like':'%'+_0x4e07da['query'][_0x953d('0x3f')]+'%'};return _0x42e8e3;})});}_0x1a8c21=_[_0x953d('0x41')]({},_0x1a8c21,_0x4e07da['options']);return _0x3966f1['getSubjects'](_0x1a8c21);}})[_0x953d('0x25')](function(_0x15f45d){if(_0x15f45d){_0xdafddb=_0x15f45d[_0x953d('0x38')];if(!_0x4e07da[_0x953d('0x33')][_0x953d('0x39')](_0x953d('0x3a'))){_0x1a8c21[_0x953d('0x3b')]=qs['limit'](_0x4e07da[_0x953d('0x33')][_0x953d('0x3b')]);_0x1a8c21['offset']=qs['offset'](_0x4e07da[_0x953d('0x33')][_0x953d('0x1e')]);}return _0x3966f1[_0x953d('0x52')](_0x1a8c21);}})[_0x953d('0x25')](function(_0x458e76){if(_0x458e76){return _0x458e76?{'count':_0xdafddb,'rows':_0x458e76}:null;}})[_0x953d('0x25')](respondWithResult(_0x543096,null))[_0x953d('0x4c')](handleError(_0x543096,null));};exports[_0x953d('0x53')]=function(_0x372804,_0x2f3e8e,_0x128d5e){var _0xecf9b5={};var _0x1fe9dc={};var _0x57bcd5;var _0x5352bb;return db[_0x953d('0x2c')]['findOne']({'where':{'id':_0x372804['params']['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x2f3e8e,null))[_0x953d('0x25')](function(_0x49bf9d){if(_0x49bf9d){_0x57bcd5=_0x49bf9d;_0x1fe9dc[_0x953d('0x31')]=_[_0x953d('0x49')](db[_0x953d('0x50')][_0x953d('0x2d')]);_0x1fe9dc[_0x953d('0x33')]=_['keys'](_0x372804[_0x953d('0x33')]);_0x1fe9dc[_0x953d('0x34')]=_[_0x953d('0x35')](_0x1fe9dc[_0x953d('0x31')],_0x1fe9dc['query']);_0xecf9b5[_0x953d('0x36')]=_[_0x953d('0x35')](_0x1fe9dc[_0x953d('0x31')],qs[_0x953d('0x37')](_0x372804[_0x953d('0x33')]['fields']));_0xecf9b5[_0x953d('0x36')]=_0xecf9b5[_0x953d('0x36')][_0x953d('0x38')]?_0xecf9b5[_0x953d('0x36')]:_0x1fe9dc[_0x953d('0x31')];_0xecf9b5[_0x953d('0x3c')]=qs[_0x953d('0x3d')](_0x372804[_0x953d('0x33')][_0x953d('0x3d')]);_0xecf9b5[_0x953d('0x40')]=qs['filters'](_[_0x953d('0x3e')](_0x372804[_0x953d('0x33')],_0x1fe9dc[_0x953d('0x34')]));if(_0x372804[_0x953d('0x33')]['filter']){_0xecf9b5[_0x953d('0x40')]=_['merge'](_0xecf9b5[_0x953d('0x40')],{'$or':_[_0x953d('0x32')](_0xecf9b5[_0x953d('0x36')],function(_0x3a8824){var _0x298b20={};_0x298b20[_0x3a8824]={'$like':'%'+_0x372804[_0x953d('0x33')][_0x953d('0x3f')]+'%'};return _0x298b20;})});}_0xecf9b5=_[_0x953d('0x41')]({},_0xecf9b5,_0x372804[_0x953d('0x4a')]);return _0x57bcd5[_0x953d('0x53')](_0xecf9b5);}})['then'](function(_0x80781c){if(_0x80781c){_0x5352bb=_0x80781c[_0x953d('0x38')];if(!_0x372804[_0x953d('0x33')]['hasOwnProperty'](_0x953d('0x3a'))){_0xecf9b5[_0x953d('0x3b')]=qs[_0x953d('0x3b')](_0x372804['query']['limit']);_0xecf9b5[_0x953d('0x1e')]=qs[_0x953d('0x1e')](_0x372804[_0x953d('0x33')][_0x953d('0x1e')]);}return _0x57bcd5['getDescriptions'](_0xecf9b5);}})[_0x953d('0x25')](function(_0x2d202f){if(_0x2d202f){return _0x2d202f?{'count':_0x5352bb,'rows':_0x2d202f}:null;}})[_0x953d('0x25')](respondWithResult(_0x2f3e8e,null))[_0x953d('0x4c')](handleError(_0x2f3e8e,null));};
\ No newline at end of file
index 89710de..4d29b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8f0=['define','SugarcrmConfiguration','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports'];(function(_0x3c68c8,_0x29ec74){var _0x44569c=function(_0x439ca2){while(--_0x439ca2){_0x3c68c8['push'](_0x3c68c8['shift']());}};_0x44569c(++_0x29ec74);}(_0xf8f0,0xb8));var _0x0f8f=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xf8f0[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require(_0x0f8f('0x0'));var logger=require(_0x0f8f('0x1'))(_0x0f8f('0x2'));var moment=require(_0x0f8f('0x3'));var BPromise=require(_0x0f8f('0x4'));var rp=require(_0x0f8f('0x5'));var fs=require('fs');var path=require(_0x0f8f('0x6'));var rimraf=require(_0x0f8f('0x7'));var config=require(_0x0f8f('0x8'));var attributes=require(_0x0f8f('0x9'));module[_0x0f8f('0xa')]=function(_0x47b24b,_0x5f4f6e){return _0x47b24b[_0x0f8f('0xb')](_0x0f8f('0xc'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb1d2=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SugarcrmConfiguration','../../config/logger','api'];(function(_0x2e3d63,_0xb43a9b){var _0x105946=function(_0x466785){while(--_0x466785){_0x2e3d63['push'](_0x2e3d63['shift']());}};_0x105946(++_0xb43a9b);}(_0xb1d2,0x116));var _0x2b1d=function(_0x22824f,_0x5780a0){_0x22824f=_0x22824f-0x0;var _0x432af9=_0xb1d2[_0x22824f];return _0x432af9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2b1d('0x0'))(_0x2b1d('0x1'));var moment=require(_0x2b1d('0x2'));var BPromise=require(_0x2b1d('0x3'));var rp=require(_0x2b1d('0x4'));var fs=require('fs');var path=require(_0x2b1d('0x5'));var rimraf=require(_0x2b1d('0x6'));var config=require(_0x2b1d('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x2b1d('0x8')]=function(_0x40f0ac,_0x35cc51){return _0x40f0ac['define'](_0x2b1d('0x9'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67591a7..2ee8904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e61=['message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4e6243,_0x37ec06){var _0x211fbc=function(_0x171e0a){while(--_0x171e0a){_0x4e6243['push'](_0x4e6243['shift']());}};_0x211fbc(++_0x37ec06);}(_0x5e61,0xd2));var _0x15e6=function(_0x12e182,_0x516306){_0x12e182=_0x12e182-0x0;var _0x42984b=_0x5e61[_0x12e182];return _0x42984b;};'use strict';var _=require(_0x15e6('0x0'));var util=require(_0x15e6('0x1'));var moment=require(_0x15e6('0x2'));var BPromise=require('bluebird');var rs=require(_0x15e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x15e6('0x4'))['db'];var utils=require(_0x15e6('0x5'));var logger=require(_0x15e6('0x6'))(_0x15e6('0x7'));var config=require(_0x15e6('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x15e6('0x9')][_0x15e6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4958da,_0xe6d05d,_0x2e077a){return new BPromise(function(_0x5512d2,_0x21f8f6){return client[_0x15e6('0xb')](_0x4958da,_0x2e077a)[_0x15e6('0xc')](function(_0x14b6b4){logger[_0x15e6('0xd')](_0x15e6('0xe'),_0xe6d05d,_0x15e6('0xf'));logger['debug'](_0x15e6('0x10'),_0xe6d05d,'request\x20sent',JSON[_0x15e6('0x11')](_0x14b6b4));if(_0x14b6b4[_0x15e6('0x12')]){if(_0x14b6b4['error'][_0x15e6('0x13')]===0x1f4){logger[_0x15e6('0x12')](_0x15e6('0xe'),_0xe6d05d,_0x14b6b4[_0x15e6('0x12')]['message']);return _0x21f8f6(_0x14b6b4[_0x15e6('0x12')][_0x15e6('0x14')]);}logger[_0x15e6('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0xe6d05d,_0x14b6b4['error'][_0x15e6('0x14')]);return _0x5512d2(_0x14b6b4['error'][_0x15e6('0x14')]);}else{logger[_0x15e6('0xd')](_0x15e6('0xe'),_0xe6d05d,_0x15e6('0xf'));_0x5512d2(_0x14b6b4[_0x15e6('0x15')][_0x15e6('0x14')]);}})[_0x15e6('0x16')](function(_0x5f36ac){logger[_0x15e6('0x12')](_0x15e6('0xe'),_0xe6d05d,_0x5f36ac);_0x21f8f6(_0x5f36ac);});});}
\ No newline at end of file
+var _0x49c6=['code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x566155,_0x275b7a){var _0x326b28=function(_0x5b41e0){while(--_0x5b41e0){_0x566155['push'](_0x566155['shift']());}};_0x326b28(++_0x275b7a);}(_0x49c6,0x72));var _0x649c=function(_0x4b366e,_0x479e1f){_0x4b366e=_0x4b366e-0x0;var _0x464dff=_0x49c6[_0x4b366e];return _0x464dff;};'use strict';var _=require('lodash');var util=require(_0x649c('0x0'));var moment=require('moment');var BPromise=require(_0x649c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x649c('0x2'));var db=require(_0x649c('0x3'))['db'];var utils=require(_0x649c('0x4'));var logger=require(_0x649c('0x5'))(_0x649c('0x6'));var config=require(_0x649c('0x7'));var jayson=require(_0x649c('0x8'));var client=jayson[_0x649c('0x9')][_0x649c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ca145,_0x5ec3dd,_0x41ffc4){return new BPromise(function(_0x57f196,_0x31113e){return client['request'](_0x1ca145,_0x41ffc4)['then'](function(_0x290c1f){logger[_0x649c('0xb')](_0x649c('0xc'),_0x5ec3dd,_0x649c('0xd'));logger[_0x649c('0xe')](_0x649c('0xf'),_0x5ec3dd,'request\x20sent',JSON[_0x649c('0x10')](_0x290c1f));if(_0x290c1f[_0x649c('0x11')]){if(_0x290c1f['error'][_0x649c('0x12')]===0x1f4){logger[_0x649c('0x11')](_0x649c('0xc'),_0x5ec3dd,_0x290c1f[_0x649c('0x11')][_0x649c('0x13')]);return _0x31113e(_0x290c1f['error']['message']);}logger[_0x649c('0x11')](_0x649c('0xc'),_0x5ec3dd,_0x290c1f[_0x649c('0x11')][_0x649c('0x13')]);return _0x57f196(_0x290c1f[_0x649c('0x11')][_0x649c('0x13')]);}else{logger[_0x649c('0xb')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5ec3dd,_0x649c('0xd'));_0x57f196(_0x290c1f[_0x649c('0x14')][_0x649c('0x13')]);}})[_0x649c('0x15')](function(_0x4c56d9){logger[_0x649c('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5ec3dd,_0x4c56d9);_0x31113e(_0x4c56d9);});});}
\ No newline at end of file
index 0c5bc6a..09b3255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8f2=['index','/:id','show','post','create','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated'];(function(_0x3a5b9f,_0x599f46){var _0x4e9b72=function(_0x20ac03){while(--_0x20ac03){_0x3a5b9f['push'](_0x3a5b9f['shift']());}};_0x4e9b72(++_0x599f46);}(_0xc8f2,0xf0));var _0x2c8f=function(_0x530e6a,_0x53782f){_0x530e6a=_0x530e6a-0x0;var _0x176c75=_0xc8f2[_0x530e6a];return _0x176c75;};'use strict';var multer=require('multer');var util=require(_0x2c8f('0x0'));var path=require(_0x2c8f('0x1'));var timeout=require(_0x2c8f('0x2'));var express=require(_0x2c8f('0x3'));var router=express[_0x2c8f('0x4')]();var fs_extra=require(_0x2c8f('0x5'));var auth=require(_0x2c8f('0x6'));var interaction=require(_0x2c8f('0x7'));var config=require(_0x2c8f('0x8'));var controller=require(_0x2c8f('0x9'));router[_0x2c8f('0xa')]('/',auth[_0x2c8f('0xb')](),controller[_0x2c8f('0xc')]);router['get'](_0x2c8f('0xd'),auth[_0x2c8f('0xb')](),controller[_0x2c8f('0xe')]);router[_0x2c8f('0xf')]('/',auth[_0x2c8f('0xb')](),controller[_0x2c8f('0x10')]);router[_0x2c8f('0x11')]('/:id',auth[_0x2c8f('0xb')](),controller['update']);router[_0x2c8f('0x12')]('/:id',auth[_0x2c8f('0xb')](),controller[_0x2c8f('0x13')]);module[_0x2c8f('0x14')]=router;
\ No newline at end of file
+var _0xa6a2=['/:id','show','post','put','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated'];(function(_0x22875e,_0xb601fb){var _0x934224=function(_0x37ab05){while(--_0x37ab05){_0x22875e['push'](_0x22875e['shift']());}};_0x934224(++_0xb601fb);}(_0xa6a2,0x1a5));var _0x2a6a=function(_0x2355a8,_0x16c9d4){_0x2355a8=_0x2355a8-0x0;var _0x3ebb0d=_0xa6a2[_0x2355a8];return _0x3ebb0d;};'use strict';var multer=require(_0x2a6a('0x0'));var util=require('util');var path=require(_0x2a6a('0x1'));var timeout=require('connect-timeout');var express=require(_0x2a6a('0x2'));var router=express[_0x2a6a('0x3')]();var fs_extra=require(_0x2a6a('0x4'));var auth=require(_0x2a6a('0x5'));var interaction=require(_0x2a6a('0x6'));var config=require(_0x2a6a('0x7'));var controller=require(_0x2a6a('0x8'));router[_0x2a6a('0x9')]('/',auth[_0x2a6a('0xa')](),controller['index']);router[_0x2a6a('0x9')](_0x2a6a('0xb'),auth[_0x2a6a('0xa')](),controller[_0x2a6a('0xc')]);router[_0x2a6a('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2a6a('0xe')](_0x2a6a('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x2a6a('0xf')](_0x2a6a('0xb'),auth[_0x2a6a('0xa')](),controller[_0x2a6a('0x10')]);module[_0x2a6a('0x11')]=router;
\ No newline at end of file
index 299f851..242e3eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37b7=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x37b7,0x1ae));var _0x737b=function(_0x2f9467,_0x40576f){_0x2f9467=_0x2f9467-0x0;var _0x39894c=_0x37b7[_0x2f9467];return _0x39894c;};'use strict';var Sequelize=require(_0x737b('0x0'));module[_0x737b('0x1')]={'type':{'type':Sequelize[_0x737b('0x2')](_0x737b('0x3'),_0x737b('0x4'),_0x737b('0x5'),_0x737b('0x6'),_0x737b('0x7')),'defaultValue':_0x737b('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x737b('0x8')]},'keyType':{'type':Sequelize[_0x737b('0x2')](_0x737b('0x3'),'variable',_0x737b('0x5'))},'keyContent':{'type':Sequelize[_0x737b('0x8')]},'idField':{'type':Sequelize[_0x737b('0x8')]},'nameField':{'type':Sequelize[_0x737b('0x8')]},'customField':{'type':Sequelize[_0x737b('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x737b('0x8')]}};
\ No newline at end of file
+var _0xe2e0=['customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe2e0,0x100));var _0x0e2e=function(_0xefef6f,_0x5f9f66){_0xefef6f=_0xefef6f-0x0;var _0x454173=_0xe2e0[_0xefef6f];return _0x454173;};'use strict';var Sequelize=require(_0x0e2e('0x0'));module[_0x0e2e('0x1')]={'type':{'type':Sequelize[_0x0e2e('0x2')](_0x0e2e('0x3'),'variable',_0x0e2e('0x4'),_0x0e2e('0x5'),_0x0e2e('0x6')),'defaultValue':_0x0e2e('0x3')},'content':{'type':Sequelize[_0x0e2e('0x7')]},'key':{'type':Sequelize[_0x0e2e('0x7')]},'keyType':{'type':Sequelize[_0x0e2e('0x2')]('string',_0x0e2e('0x8'),_0x0e2e('0x4'))},'keyContent':{'type':Sequelize[_0x0e2e('0x7')]},'idField':{'type':Sequelize[_0x0e2e('0x7')]},'nameField':{'type':Sequelize[_0x0e2e('0x7')]},'customField':{'type':Sequelize[_0x0e2e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0e2e('0x7')]}};
\ No newline at end of file
index e11bf5d..752886d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f8=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','error','stack','name','send','index','SugarcrmField','rawAttributes','type','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring'];(function(_0x46b849,_0x16bb99){var _0x12fd75=function(_0x31cd23){while(--_0x31cd23){_0x46b849['push'](_0x46b849['shift']());}};_0x12fd75(++_0x16bb99);}(_0x82f8,0x85));var _0x882f=function(_0x36378c,_0x58b328){_0x36378c=_0x36378c-0x0;var _0x1bcb7f=_0x82f8[_0x36378c];return _0x1bcb7f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x882f('0x0'));var zipdir=require(_0x882f('0x1'));var jsonpatch=require(_0x882f('0x2'));var rp=require(_0x882f('0x3'));var moment=require(_0x882f('0x4'));var BPromise=require(_0x882f('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x882f('0x6'));var sox=require('sox');var csv=require(_0x882f('0x7'));var ejs=require(_0x882f('0x8'));var fs=require('fs');var fs_extra=require(_0x882f('0x9'));var _=require(_0x882f('0xa'));var squel=require(_0x882f('0xb'));var crypto=require('crypto');var jsforce=require(_0x882f('0xc'));var deskjs=require(_0x882f('0xd'));var toCsv=require(_0x882f('0x7'));var querystring=require(_0x882f('0xe'));var Papa=require(_0x882f('0xf'));var Redis=require(_0x882f('0x10'));var authService=require(_0x882f('0x11'));var qs=require(_0x882f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x882f('0x13'))(_0x882f('0x14'));var utils=require(_0x882f('0x15'));var config=require(_0x882f('0x16'));var licenseUtil=require(_0x882f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12e0b5,_0x3c5e20){_0x3c5e20=_0x3c5e20||0xcc;return function(_0x517074){if(_0x517074){return _0x12e0b5['sendStatus'](_0x3c5e20);}return _0x12e0b5[_0x882f('0x18')](_0x3c5e20)[_0x882f('0x19')]();};}function respondWithResult(_0x1a8bb6,_0x1a346e){_0x1a346e=_0x1a346e||0xc8;return function(_0x1e7e95){if(_0x1e7e95){return _0x1a8bb6[_0x882f('0x18')](_0x1a346e)[_0x882f('0x1a')](_0x1e7e95);}};}function respondWithFilteredResult(_0x418039,_0x105b7c){return function(_0x47e0d0){if(_0x47e0d0){var _0x18774a=typeof _0x105b7c['offset']===_0x882f('0x1b')&&typeof _0x105b7c[_0x882f('0x1c')]===_0x882f('0x1b');var _0x372979=_0x47e0d0[_0x882f('0x1d')];var _0x278ee7=_0x18774a?0x0:_0x105b7c['offset'];var _0x21d297=_0x18774a?_0x47e0d0[_0x882f('0x1d')]:_0x105b7c[_0x882f('0x1e')]+_0x105b7c[_0x882f('0x1c')];var _0x13879a;if(_0x21d297>=_0x372979){_0x21d297=_0x372979;_0x13879a=0xc8;}else{_0x13879a=0xce;}_0x418039[_0x882f('0x18')](_0x13879a);return _0x418039['set'](_0x882f('0x1f'),_0x278ee7+'-'+_0x21d297+'/'+_0x372979)[_0x882f('0x1a')](_0x47e0d0);}return null;};}function patchUpdates(_0x38b014){return function(_0x2f7ea7){try{jsonpatch[_0x882f('0x20')](_0x2f7ea7,_0x38b014,!![]);}catch(_0x456d6f){return BPromise[_0x882f('0x21')](_0x456d6f);}return _0x2f7ea7['save']();};}function saveUpdates(_0x5e82ce,_0x23b830){return function(_0x23c15c){if(_0x23c15c){return _0x23c15c[_0x882f('0x22')](_0x5e82ce)[_0x882f('0x23')](function(_0x1a91e3){return _0x1a91e3;});}return null;};}function removeEntity(_0x3601af,_0x223160){return function(_0xe2be45){if(_0xe2be45){return _0xe2be45['destroy']()['then'](function(){_0x3601af[_0x882f('0x18')](0xcc)[_0x882f('0x19')]();});}};}function handleEntityNotFound(_0x5ba340,_0x28e3e0){return function(_0x3e6ea1){if(!_0x3e6ea1){_0x5ba340['sendStatus'](0x194);}return _0x3e6ea1;};}function handleError(_0x297caf,_0x1c8736){_0x1c8736=_0x1c8736||0x1f4;return function(_0x5676d8){logger[_0x882f('0x24')](_0x5676d8[_0x882f('0x25')]);if(_0x5676d8['name']){delete _0x5676d8[_0x882f('0x26')];}_0x297caf[_0x882f('0x18')](_0x1c8736)[_0x882f('0x27')](_0x5676d8);};}exports[_0x882f('0x28')]=function(_0x2050c9,_0x31b115){var _0x15c2f5={},_0x538f48={},_0x43ad9d={'count':0x0,'rows':[]};var _0x5148b5=_['map'](db[_0x882f('0x29')][_0x882f('0x2a')],function(_0x14bf92){return{'name':_0x14bf92['fieldName'],'type':_0x14bf92[_0x882f('0x2b')]['key']};});_0x538f48[_0x882f('0x2c')]=_[_0x882f('0x2d')](_0x5148b5,_0x882f('0x26'));_0x538f48[_0x882f('0x2e')]=_['keys'](_0x2050c9[_0x882f('0x2e')]);_0x538f48[_0x882f('0x2f')]=_[_0x882f('0x30')](_0x538f48[_0x882f('0x2c')],_0x538f48[_0x882f('0x2e')]);_0x15c2f5['attributes']=_[_0x882f('0x30')](_0x538f48[_0x882f('0x2c')],qs[_0x882f('0x31')](_0x2050c9[_0x882f('0x2e')][_0x882f('0x31')]));_0x15c2f5[_0x882f('0x32')]=_0x15c2f5[_0x882f('0x32')][_0x882f('0x33')]?_0x15c2f5[_0x882f('0x32')]:_0x538f48[_0x882f('0x2c')];if(!_0x2050c9[_0x882f('0x2e')][_0x882f('0x34')](_0x882f('0x35'))){_0x15c2f5['limit']=qs['limit'](_0x2050c9[_0x882f('0x2e')][_0x882f('0x1c')]);_0x15c2f5[_0x882f('0x1e')]=qs['offset'](_0x2050c9[_0x882f('0x2e')]['offset']);}_0x15c2f5[_0x882f('0x36')]=qs[_0x882f('0x37')](_0x2050c9['query'][_0x882f('0x37')]);_0x15c2f5['where']=qs[_0x882f('0x2f')](_[_0x882f('0x38')](_0x2050c9[_0x882f('0x2e')],_0x538f48[_0x882f('0x2f')]),_0x5148b5);if(_0x2050c9[_0x882f('0x2e')][_0x882f('0x39')]){_0x15c2f5[_0x882f('0x3a')]=_[_0x882f('0x3b')](_0x15c2f5['where'],{'$or':_[_0x882f('0x2d')](_0x5148b5,function(_0x161910){if(_0x161910[_0x882f('0x2b')]!==_0x882f('0x3c')){var _0x5114ae={};_0x5114ae[_0x161910[_0x882f('0x26')]]={'$like':'%'+_0x2050c9[_0x882f('0x2e')][_0x882f('0x39')]+'%'};return _0x5114ae;}})});}_0x15c2f5=_['merge']({},_0x15c2f5,_0x2050c9[_0x882f('0x3d')]);var _0x18f150={'where':_0x15c2f5[_0x882f('0x3a')]};return db[_0x882f('0x29')][_0x882f('0x1d')](_0x18f150)['then'](function(_0x19a7eb){_0x43ad9d[_0x882f('0x1d')]=_0x19a7eb;if(_0x2050c9[_0x882f('0x2e')][_0x882f('0x3e')]){_0x15c2f5[_0x882f('0x3f')]=[{'all':!![]}];}return db[_0x882f('0x29')][_0x882f('0x40')](_0x15c2f5);})[_0x882f('0x23')](function(_0x2cf457){_0x43ad9d[_0x882f('0x41')]=_0x2cf457;return _0x43ad9d;})[_0x882f('0x23')](respondWithFilteredResult(_0x31b115,_0x15c2f5))[_0x882f('0x42')](handleError(_0x31b115,null));};exports[_0x882f('0x43')]=function(_0x49932c,_0x14e767){var _0x3ea54c={'raw':!![],'where':{'id':_0x49932c[_0x882f('0x44')]['id']}},_0x3a5888={};_0x3a5888['model']=_[_0x882f('0x45')](db[_0x882f('0x29')][_0x882f('0x2a')]);_0x3a5888['query']=_[_0x882f('0x45')](_0x49932c[_0x882f('0x2e')]);_0x3a5888['filters']=_[_0x882f('0x30')](_0x3a5888[_0x882f('0x2c')],_0x3a5888[_0x882f('0x2e')]);_0x3ea54c['attributes']=_[_0x882f('0x30')](_0x3a5888['model'],qs[_0x882f('0x31')](_0x49932c[_0x882f('0x2e')][_0x882f('0x31')]));_0x3ea54c[_0x882f('0x32')]=_0x3ea54c[_0x882f('0x32')][_0x882f('0x33')]?_0x3ea54c[_0x882f('0x32')]:_0x3a5888['model'];if(_0x49932c[_0x882f('0x2e')][_0x882f('0x3e')]){_0x3ea54c[_0x882f('0x3f')]=[{'all':!![]}];}_0x3ea54c=_[_0x882f('0x3b')]({},_0x3ea54c,_0x49932c[_0x882f('0x3d')]);return db['SugarcrmField'][_0x882f('0x46')](_0x3ea54c)['then'](handleEntityNotFound(_0x14e767,null))[_0x882f('0x23')](respondWithResult(_0x14e767,null))[_0x882f('0x42')](handleError(_0x14e767,null));};exports[_0x882f('0x47')]=function(_0x3c4cc8,_0x40fbc9){return db['SugarcrmField']['create'](_0x3c4cc8['body'],{})[_0x882f('0x23')](respondWithResult(_0x40fbc9,0xc9))['catch'](handleError(_0x40fbc9,null));};exports[_0x882f('0x22')]=function(_0x1342f2,_0x18ea2a){if(_0x1342f2['body']['id']){delete _0x1342f2[_0x882f('0x48')]['id'];}return db['SugarcrmField'][_0x882f('0x46')]({'where':{'id':_0x1342f2[_0x882f('0x44')]['id']}})[_0x882f('0x23')](handleEntityNotFound(_0x18ea2a,null))[_0x882f('0x23')](saveUpdates(_0x1342f2[_0x882f('0x48')],null))['then'](respondWithResult(_0x18ea2a,null))[_0x882f('0x42')](handleError(_0x18ea2a,null));};exports[_0x882f('0x49')]=function(_0x37567c,_0x4dc063){return db['SugarcrmField'][_0x882f('0x46')]({'where':{'id':_0x37567c[_0x882f('0x44')]['id']}})[_0x882f('0x23')](handleEntityNotFound(_0x4dc063,null))[_0x882f('0x23')](removeEntity(_0x4dc063,null))[_0x882f('0x42')](handleError(_0x4dc063,null));};
\ No newline at end of file
+var _0x5890=['catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','index','rawAttributes','fieldName','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','VIRTUAL','options','SugarcrmField','includeAll','include','findAll','show','params','length','find'];(function(_0x5ef32e,_0x307684){var _0x59b3dd=function(_0x278172){while(--_0x278172){_0x5ef32e['push'](_0x5ef32e['shift']());}};_0x59b3dd(++_0x307684);}(_0x5890,0x1a8));var _0x0589=function(_0xf23a61,_0x93b1f7){_0xf23a61=_0xf23a61-0x0;var _0xbfdfa0=_0x5890[_0xf23a61];return _0xbfdfa0;};'use strict';var emlformat=require(_0x0589('0x0'));var rimraf=require(_0x0589('0x1'));var zipdir=require(_0x0589('0x2'));var jsonpatch=require(_0x0589('0x3'));var rp=require(_0x0589('0x4'));var moment=require('moment');var BPromise=require(_0x0589('0x5'));var Mustache=require(_0x0589('0x6'));var util=require(_0x0589('0x7'));var path=require('path');var sox=require(_0x0589('0x8'));var csv=require('to-csv');var ejs=require(_0x0589('0x9'));var fs=require('fs');var fs_extra=require(_0x0589('0xa'));var _=require(_0x0589('0xb'));var squel=require(_0x0589('0xc'));var crypto=require(_0x0589('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0589('0xe'));var toCsv=require(_0x0589('0xf'));var querystring=require(_0x0589('0x10'));var Papa=require('papaparse');var Redis=require(_0x0589('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0589('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x0589('0x13'));var config=require(_0x0589('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x0589('0x15'))['db'];function respondWithStatusCode(_0xd3ff52,_0x37b00a){_0x37b00a=_0x37b00a||0xcc;return function(_0x4b9c63){if(_0x4b9c63){return _0xd3ff52[_0x0589('0x16')](_0x37b00a);}return _0xd3ff52[_0x0589('0x17')](_0x37b00a)[_0x0589('0x18')]();};}function respondWithResult(_0x2ea701,_0x27300f){_0x27300f=_0x27300f||0xc8;return function(_0x3ed016){if(_0x3ed016){return _0x2ea701['status'](_0x27300f)[_0x0589('0x19')](_0x3ed016);}};}function respondWithFilteredResult(_0x4bedb5,_0xf048f2){return function(_0x5f42d5){if(_0x5f42d5){var _0x3abc9c=typeof _0xf048f2[_0x0589('0x1a')]===_0x0589('0x1b')&&typeof _0xf048f2['limit']===_0x0589('0x1b');var _0x2da04a=_0x5f42d5[_0x0589('0x1c')];var _0x484c32=_0x3abc9c?0x0:_0xf048f2[_0x0589('0x1a')];var _0x2ef548=_0x3abc9c?_0x5f42d5[_0x0589('0x1c')]:_0xf048f2[_0x0589('0x1a')]+_0xf048f2[_0x0589('0x1d')];var _0x28debe;if(_0x2ef548>=_0x2da04a){_0x2ef548=_0x2da04a;_0x28debe=0xc8;}else{_0x28debe=0xce;}_0x4bedb5[_0x0589('0x17')](_0x28debe);return _0x4bedb5['set'](_0x0589('0x1e'),_0x484c32+'-'+_0x2ef548+'/'+_0x2da04a)[_0x0589('0x19')](_0x5f42d5);}return null;};}function patchUpdates(_0x15d1be){return function(_0x3d38f4){try{jsonpatch[_0x0589('0x1f')](_0x3d38f4,_0x15d1be,!![]);}catch(_0x13a2d8){return BPromise[_0x0589('0x20')](_0x13a2d8);}return _0x3d38f4[_0x0589('0x21')]();};}function saveUpdates(_0x13b89c,_0x54155d){return function(_0x397876){if(_0x397876){return _0x397876[_0x0589('0x22')](_0x13b89c)['then'](function(_0x4dc64f){return _0x4dc64f;});}return null;};}function removeEntity(_0x4befda,_0x55d3ac){return function(_0x23f5bb){if(_0x23f5bb){return _0x23f5bb['destroy']()[_0x0589('0x23')](function(){_0x4befda[_0x0589('0x17')](0xcc)[_0x0589('0x18')]();});}};}function handleEntityNotFound(_0x30efa9,_0x480293){return function(_0x4d4d3c){if(!_0x4d4d3c){_0x30efa9[_0x0589('0x16')](0x194);}return _0x4d4d3c;};}function handleError(_0x4b3c89,_0x2d95a0){_0x2d95a0=_0x2d95a0||0x1f4;return function(_0x5a46d5){logger[_0x0589('0x24')](_0x5a46d5[_0x0589('0x25')]);if(_0x5a46d5['name']){delete _0x5a46d5[_0x0589('0x26')];}_0x4b3c89[_0x0589('0x17')](_0x2d95a0)['send'](_0x5a46d5);};}exports[_0x0589('0x27')]=function(_0x4fb303,_0x53a1be){var _0x29d1ff={},_0x3a6df6={},_0x535a81={'count':0x0,'rows':[]};var _0x5e0ab2=_['map'](db['SugarcrmField'][_0x0589('0x28')],function(_0x3f9174){return{'name':_0x3f9174[_0x0589('0x29')],'type':_0x3f9174['type'][_0x0589('0x2a')]};});_0x3a6df6[_0x0589('0x2b')]=_[_0x0589('0x2c')](_0x5e0ab2,_0x0589('0x26'));_0x3a6df6['query']=_[_0x0589('0x2d')](_0x4fb303[_0x0589('0x2e')]);_0x3a6df6['filters']=_[_0x0589('0x2f')](_0x3a6df6[_0x0589('0x2b')],_0x3a6df6[_0x0589('0x2e')]);_0x29d1ff[_0x0589('0x30')]=_[_0x0589('0x2f')](_0x3a6df6[_0x0589('0x2b')],qs[_0x0589('0x31')](_0x4fb303['query']['fields']));_0x29d1ff['attributes']=_0x29d1ff[_0x0589('0x30')]['length']?_0x29d1ff[_0x0589('0x30')]:_0x3a6df6[_0x0589('0x2b')];if(!_0x4fb303[_0x0589('0x2e')][_0x0589('0x32')]('nolimit')){_0x29d1ff[_0x0589('0x1d')]=qs[_0x0589('0x1d')](_0x4fb303[_0x0589('0x2e')][_0x0589('0x1d')]);_0x29d1ff[_0x0589('0x1a')]=qs[_0x0589('0x1a')](_0x4fb303[_0x0589('0x2e')][_0x0589('0x1a')]);}_0x29d1ff['order']=qs[_0x0589('0x33')](_0x4fb303['query'][_0x0589('0x33')]);_0x29d1ff[_0x0589('0x34')]=qs[_0x0589('0x35')](_['pick'](_0x4fb303[_0x0589('0x2e')],_0x3a6df6['filters']),_0x5e0ab2);if(_0x4fb303[_0x0589('0x2e')][_0x0589('0x36')]){_0x29d1ff[_0x0589('0x34')]=_[_0x0589('0x37')](_0x29d1ff[_0x0589('0x34')],{'$or':_[_0x0589('0x2c')](_0x5e0ab2,function(_0x3059e3){if(_0x3059e3['type']!==_0x0589('0x38')){var _0x32da09={};_0x32da09[_0x3059e3[_0x0589('0x26')]]={'$like':'%'+_0x4fb303[_0x0589('0x2e')][_0x0589('0x36')]+'%'};return _0x32da09;}})});}_0x29d1ff=_['merge']({},_0x29d1ff,_0x4fb303[_0x0589('0x39')]);var _0x27af2e={'where':_0x29d1ff[_0x0589('0x34')]};return db[_0x0589('0x3a')]['count'](_0x27af2e)[_0x0589('0x23')](function(_0x3bdee7){_0x535a81[_0x0589('0x1c')]=_0x3bdee7;if(_0x4fb303[_0x0589('0x2e')][_0x0589('0x3b')]){_0x29d1ff[_0x0589('0x3c')]=[{'all':!![]}];}return db[_0x0589('0x3a')][_0x0589('0x3d')](_0x29d1ff);})[_0x0589('0x23')](function(_0x31ce4a){_0x535a81['rows']=_0x31ce4a;return _0x535a81;})[_0x0589('0x23')](respondWithFilteredResult(_0x53a1be,_0x29d1ff))['catch'](handleError(_0x53a1be,null));};exports[_0x0589('0x3e')]=function(_0x2fc80b,_0x28d158){var _0x33a6d7={'raw':!![],'where':{'id':_0x2fc80b[_0x0589('0x3f')]['id']}},_0x3f5a4e={};_0x3f5a4e['model']=_[_0x0589('0x2d')](db['SugarcrmField'][_0x0589('0x28')]);_0x3f5a4e[_0x0589('0x2e')]=_[_0x0589('0x2d')](_0x2fc80b[_0x0589('0x2e')]);_0x3f5a4e[_0x0589('0x35')]=_[_0x0589('0x2f')](_0x3f5a4e[_0x0589('0x2b')],_0x3f5a4e[_0x0589('0x2e')]);_0x33a6d7['attributes']=_[_0x0589('0x2f')](_0x3f5a4e[_0x0589('0x2b')],qs['fields'](_0x2fc80b[_0x0589('0x2e')][_0x0589('0x31')]));_0x33a6d7[_0x0589('0x30')]=_0x33a6d7['attributes'][_0x0589('0x40')]?_0x33a6d7[_0x0589('0x30')]:_0x3f5a4e[_0x0589('0x2b')];if(_0x2fc80b[_0x0589('0x2e')][_0x0589('0x3b')]){_0x33a6d7['include']=[{'all':!![]}];}_0x33a6d7=_[_0x0589('0x37')]({},_0x33a6d7,_0x2fc80b[_0x0589('0x39')]);return db[_0x0589('0x3a')][_0x0589('0x41')](_0x33a6d7)['then'](handleEntityNotFound(_0x28d158,null))['then'](respondWithResult(_0x28d158,null))[_0x0589('0x42')](handleError(_0x28d158,null));};exports[_0x0589('0x43')]=function(_0x5ee162,_0x494c15){return db[_0x0589('0x3a')][_0x0589('0x43')](_0x5ee162[_0x0589('0x44')],{})[_0x0589('0x23')](respondWithResult(_0x494c15,0xc9))[_0x0589('0x42')](handleError(_0x494c15,null));};exports[_0x0589('0x22')]=function(_0x4ae2ec,_0x2feb98){if(_0x4ae2ec['body']['id']){delete _0x4ae2ec[_0x0589('0x44')]['id'];}return db['SugarcrmField'][_0x0589('0x41')]({'where':{'id':_0x4ae2ec['params']['id']}})[_0x0589('0x23')](handleEntityNotFound(_0x2feb98,null))['then'](saveUpdates(_0x4ae2ec[_0x0589('0x44')],null))[_0x0589('0x23')](respondWithResult(_0x2feb98,null))[_0x0589('0x42')](handleError(_0x2feb98,null));};exports[_0x0589('0x45')]=function(_0x453636,_0x23ef76){return db[_0x0589('0x3a')][_0x0589('0x41')]({'where':{'id':_0x453636[_0x0589('0x3f')]['id']}})[_0x0589('0x23')](handleEntityNotFound(_0x23ef76,null))[_0x0589('0x23')](removeEntity(_0x23ef76,null))[_0x0589('0x42')](handleError(_0x23ef76,null));};
\ No newline at end of file
index 29df74d..4439b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7744=['api','moment','request-promise','path','rimraf','../../config/environment','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','../../config/logger'];(function(_0x337fe4,_0x55b31f){var _0x5cffc6=function(_0x3a8a04){while(--_0x3a8a04){_0x337fe4['push'](_0x337fe4['shift']());}};_0x5cffc6(++_0x55b31f);}(_0x7744,0x1c6));var _0x4774=function(_0x426711,_0x12264c){_0x426711=_0x426711-0x0;var _0x592991=_0x7744[_0x426711];return _0x592991;};'use strict';var _=require(_0x4774('0x0'));var util=require('util');var logger=require(_0x4774('0x1'))(_0x4774('0x2'));var moment=require(_0x4774('0x3'));var BPromise=require('bluebird');var rp=require(_0x4774('0x4'));var fs=require('fs');var path=require(_0x4774('0x5'));var rimraf=require(_0x4774('0x6'));var config=require(_0x4774('0x7'));var attributes=require('./intSugarcrmField.attributes');module['exports']=function(_0xc67ff6,_0x239055){return _0xc67ff6['define']('SugarcrmField',attributes,{'tableName':_0x4774('0x8'),'paranoid':![],'indexes':[{'name':_0x4774('0x9'),'fields':[_0x4774('0xa'),_0x4774('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf1e7=['rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','sugarcrm_unique_index','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x15f96c,_0x5b7c90){var _0x2b7ef6=function(_0x38b632){while(--_0x38b632){_0x15f96c['push'](_0x15f96c['shift']());}};_0x2b7ef6(++_0x5b7c90);}(_0xf1e7,0xd9));var _0x7f1e=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf1e7[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x7f1e('0x0'));var util=require(_0x7f1e('0x1'));var logger=require(_0x7f1e('0x2'))(_0x7f1e('0x3'));var moment=require(_0x7f1e('0x4'));var BPromise=require('bluebird');var rp=require(_0x7f1e('0x5'));var fs=require('fs');var path=require(_0x7f1e('0x6'));var rimraf=require(_0x7f1e('0x7'));var config=require(_0x7f1e('0x8'));var attributes=require(_0x7f1e('0x9'));module[_0x7f1e('0xa')]=function(_0x1314a1,_0x317196){return _0x1314a1[_0x7f1e('0xb')]('SugarcrmField',attributes,{'tableName':_0x7f1e('0xc'),'paranoid':![],'indexes':[{'name':_0x7f1e('0xd'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 028844d..7f40af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d91=['moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x5d91,0x1b7));var _0x15d9=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5d91[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x15d9('0x0'));var moment=require(_0x15d9('0x1'));var BPromise=require('bluebird');var rs=require(_0x15d9('0x2'));var fs=require('fs');var Redis=require(_0x15d9('0x3'));var db=require(_0x15d9('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x15d9('0x5'));var config=require(_0x15d9('0x6'));var jayson=require(_0x15d9('0x7'));var client=jayson[_0x15d9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x141c6d,_0x486c81,_0x1273fc){return new BPromise(function(_0x481f11,_0x3f9846){return client[_0x15d9('0x9')](_0x141c6d,_0x1273fc)[_0x15d9('0xa')](function(_0x21f30c){logger[_0x15d9('0xb')](_0x15d9('0xc'),_0x486c81,_0x15d9('0xd'));logger[_0x15d9('0xe')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x486c81,'request\x20sent',JSON['stringify'](_0x21f30c));if(_0x21f30c[_0x15d9('0xf')]){if(_0x21f30c[_0x15d9('0xf')][_0x15d9('0x10')]===0x1f4){logger[_0x15d9('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x486c81,_0x21f30c['error'][_0x15d9('0x11')]);return _0x3f9846(_0x21f30c[_0x15d9('0xf')]['message']);}logger[_0x15d9('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x486c81,_0x21f30c[_0x15d9('0xf')][_0x15d9('0x11')]);return _0x481f11(_0x21f30c[_0x15d9('0xf')][_0x15d9('0x11')]);}else{logger[_0x15d9('0xb')]('SugarcrmField,\x20%s,\x20%s',_0x486c81,_0x15d9('0xd'));_0x481f11(_0x21f30c[_0x15d9('0x12')][_0x15d9('0x11')]);}})[_0x15d9('0x13')](function(_0x943004){logger[_0x15d9('0xf')](_0x15d9('0xc'),_0x486c81,_0x943004);_0x3f9846(_0x943004);});});}
\ No newline at end of file
+var _0x4584=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x1c45f7,_0xd6232c){var _0x16a026=function(_0x5cd5f2){while(--_0x5cd5f2){_0x1c45f7['push'](_0x1c45f7['shift']());}};_0x16a026(++_0xd6232c);}(_0x4584,0x1b5));var _0x4458=function(_0x53dc24,_0x332760){_0x53dc24=_0x53dc24-0x0;var _0x57dae9=_0x4584[_0x53dc24];return _0x57dae9;};'use strict';var _=require(_0x4458('0x0'));var util=require(_0x4458('0x1'));var moment=require(_0x4458('0x2'));var BPromise=require(_0x4458('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4458('0x4'));var db=require(_0x4458('0x5'))['db'];var utils=require(_0x4458('0x6'));var logger=require(_0x4458('0x7'))(_0x4458('0x8'));var config=require(_0x4458('0x9'));var jayson=require(_0x4458('0xa'));var client=jayson[_0x4458('0xb')][_0x4458('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x50b386,_0x3dfb20,_0x1f693a){return new BPromise(function(_0x53e9f7,_0x4ef7f7){return client[_0x4458('0xd')](_0x50b386,_0x1f693a)[_0x4458('0xe')](function(_0x5b9722){logger[_0x4458('0xf')](_0x4458('0x10'),_0x3dfb20,_0x4458('0x11'));logger[_0x4458('0x12')](_0x4458('0x13'),_0x3dfb20,'request\x20sent',JSON[_0x4458('0x14')](_0x5b9722));if(_0x5b9722[_0x4458('0x15')]){if(_0x5b9722[_0x4458('0x15')][_0x4458('0x16')]===0x1f4){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x3dfb20,_0x5b9722[_0x4458('0x15')]['message']);return _0x4ef7f7(_0x5b9722[_0x4458('0x15')][_0x4458('0x17')]);}logger[_0x4458('0x15')](_0x4458('0x10'),_0x3dfb20,_0x5b9722[_0x4458('0x15')][_0x4458('0x17')]);return _0x53e9f7(_0x5b9722[_0x4458('0x15')]['message']);}else{logger['info'](_0x4458('0x10'),_0x3dfb20,_0x4458('0x11'));_0x53e9f7(_0x5b9722[_0x4458('0x18')][_0x4458('0x17')]);}})[_0x4458('0x19')](function(_0x3eb1f7){logger[_0x4458('0x15')](_0x4458('0x10'),_0x3dfb20,_0x3eb1f7);_0x4ef7f7(_0x3eb1f7);});});}
\ No newline at end of file
index 190b129..adca7a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb07f=['./intVtigerAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','create','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x44171e,_0x260c65){var _0x25535c=function(_0x68fcde){while(--_0x68fcde){_0x44171e['push'](_0x44171e['shift']());}};_0x25535c(++_0x260c65);}(_0xb07f,0x109));var _0xfb07=function(_0x552787,_0x222c5c){_0x552787=_0x552787-0x0;var _0x25954f=_0xb07f[_0x552787];return _0x25954f;};'use strict';var multer=require(_0xfb07('0x0'));var util=require(_0xfb07('0x1'));var path=require(_0xfb07('0x2'));var timeout=require(_0xfb07('0x3'));var express=require(_0xfb07('0x4'));var router=express[_0xfb07('0x5')]();var fs_extra=require(_0xfb07('0x6'));var auth=require(_0xfb07('0x7'));var interaction=require(_0xfb07('0x8'));var config=require(_0xfb07('0x9'));var controller=require(_0xfb07('0xa'));router['get']('/',auth[_0xfb07('0xb')](),controller[_0xfb07('0xc')]);router[_0xfb07('0xd')](_0xfb07('0xe'),auth[_0xfb07('0xb')](),controller[_0xfb07('0xf')]);router[_0xfb07('0xd')](_0xfb07('0x10'),auth[_0xfb07('0xb')](),controller[_0xfb07('0x11')]);router[_0xfb07('0xd')](_0xfb07('0x12'),auth['isAuthenticated'](),controller['getFields']);router['post']('/',auth[_0xfb07('0xb')](),controller[_0xfb07('0x13')]);router['post'](_0xfb07('0x10'),auth[_0xfb07('0xb')](),controller[_0xfb07('0x14')]);router[_0xfb07('0x15')](_0xfb07('0xe'),auth[_0xfb07('0xb')](),controller[_0xfb07('0x16')]);router['delete'](_0xfb07('0xe'),auth[_0xfb07('0xb')](),controller[_0xfb07('0x17')]);module[_0xfb07('0x18')]=router;
\ No newline at end of file
+var _0x4f88=['exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete'];(function(_0x5c98ea,_0xa782aa){var _0x51e853=function(_0x57d5b0){while(--_0x57d5b0){_0x5c98ea['push'](_0x5c98ea['shift']());}};_0x51e853(++_0xa782aa);}(_0x4f88,0xf3));var _0x84f8=function(_0x12d812,_0x496bb7){_0x12d812=_0x12d812-0x0;var _0x3711ab=_0x4f88[_0x12d812];return _0x3711ab;};'use strict';var multer=require(_0x84f8('0x0'));var util=require(_0x84f8('0x1'));var path=require('path');var timeout=require(_0x84f8('0x2'));var express=require(_0x84f8('0x3'));var router=express[_0x84f8('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x84f8('0x5'));var config=require(_0x84f8('0x6'));var controller=require(_0x84f8('0x7'));router[_0x84f8('0x8')]('/',auth[_0x84f8('0x9')](),controller[_0x84f8('0xa')]);router['get'](_0x84f8('0xb'),auth[_0x84f8('0x9')](),controller['show']);router['get'](_0x84f8('0xc'),auth[_0x84f8('0x9')](),controller[_0x84f8('0xd')]);router[_0x84f8('0x8')](_0x84f8('0xe'),auth[_0x84f8('0x9')](),controller[_0x84f8('0xf')]);router[_0x84f8('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x84f8('0x10')](_0x84f8('0xc'),auth[_0x84f8('0x9')](),controller[_0x84f8('0x11')]);router[_0x84f8('0x12')]('/:id',auth[_0x84f8('0x9')](),controller[_0x84f8('0x13')]);router[_0x84f8('0x14')](_0x84f8('0xb'),auth[_0x84f8('0x9')](),controller['destroy']);module[_0x84f8('0x15')]=router;
\ No newline at end of file
index 7343157..8ad7735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbd1=['STRING','HelpDesk','exports'];(function(_0x3c2b2e,_0x3e6e53){var _0x27a338=function(_0x40d29d){while(--_0x40d29d){_0x3c2b2e['push'](_0x3c2b2e['shift']());}};_0x27a338(++_0x3e6e53);}(_0xfbd1,0x1df));var _0x1fbd=function(_0x431ff8,_0x4085dd){_0x431ff8=_0x431ff8-0x0;var _0x84ccd4=_0xfbd1[_0x431ff8];return _0x84ccd4;};'use strict';var Sequelize=require('sequelize');module[_0x1fbd('0x0')]={'name':{'type':Sequelize[_0x1fbd('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x1fbd('0x1')]},'username':{'type':Sequelize[_0x1fbd('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x1fbd('0x1')],'allowNull':![],'defaultValue':_0x1fbd('0x2')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x1fbd('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x1fbd('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xe3d9=['STRING','HelpDesk','sequelize'];(function(_0x1e618a,_0x334183){var _0x419ef6=function(_0x446db4){while(--_0x446db4){_0x1e618a['push'](_0x1e618a['shift']());}};_0x419ef6(++_0x334183);}(_0xe3d9,0x18e));var _0x9e3d=function(_0x307eb3,_0x534e5d){_0x307eb3=_0x307eb3-0x0;var _0x5b02c0=_0xe3d9[_0x307eb3];return _0x5b02c0;};'use strict';var Sequelize=require(_0x9e3d('0x0'));module['exports']={'name':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x9e3d('0x1')]},'username':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9e3d('0x2')},'remoteUri':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]}};
\ No newline at end of file
index 4860757..8eb6673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44c1=['getFields','username','description','moduleName','serverUrl','accessKey','remoteUri','slice','substring','format','GET','getchallenge','success','POST','result','describe','sessionName','remove','editable','false','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','status','json','offset','limit','undefined','count','set','save','then','sendStatus','error','stack','name','send','index','map','VtigerAccount','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','params','keys','rawAttributes','find','create','body','update','destroy','getConfigurations','findOne','options','hasOwnProperty','AccountId','getSubjects','channel','Descriptions','getDescriptions','VtigerConfiguration','VtigerField','Subjects','md5'];(function(_0x3cde2e,_0x1d3514){var _0x39cae4=function(_0x405ff2){while(--_0x405ff2){_0x3cde2e['push'](_0x3cde2e['shift']());}};_0x39cae4(++_0x1d3514);}(_0x44c1,0x17a));var _0x144c=function(_0x31ad86,_0x2fce0e){_0x31ad86=_0x31ad86-0x0;var _0x5e3989=_0x44c1[_0x31ad86];return _0x5e3989;};'use strict';var emlformat=require(_0x144c('0x0'));var rimraf=require(_0x144c('0x1'));var zipdir=require(_0x144c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x144c('0x3'));var moment=require(_0x144c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x144c('0x5'));var util=require('util');var path=require(_0x144c('0x6'));var sox=require(_0x144c('0x7'));var csv=require(_0x144c('0x8'));var ejs=require(_0x144c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x144c('0xa'));var squel=require(_0x144c('0xb'));var crypto=require('crypto');var jsforce=require(_0x144c('0xc'));var deskjs=require(_0x144c('0xd'));var toCsv=require(_0x144c('0x8'));var querystring=require(_0x144c('0xe'));var Papa=require(_0x144c('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x144c('0x10'));var as=require(_0x144c('0x11'));var hardwareService=require(_0x144c('0x12'));var logger=require(_0x144c('0x13'))(_0x144c('0x14'));var utils=require(_0x144c('0x15'));var config=require(_0x144c('0x16'));var licenseUtil=require(_0x144c('0x17'));var db=require(_0x144c('0x18'))['db'];var integrations=require(_0x144c('0x19'));function respondWithStatusCode(_0x302001,_0x4f29a0){_0x4f29a0=_0x4f29a0||0xcc;return function(_0x52c6d3){if(_0x52c6d3){return _0x302001['sendStatus'](_0x4f29a0);}return _0x302001['status'](_0x4f29a0)[_0x144c('0x1a')]();};}function respondWithResult(_0x5b241d,_0x36c2cd){_0x36c2cd=_0x36c2cd||0xc8;return function(_0x443619){if(_0x443619){return _0x5b241d[_0x144c('0x1b')](_0x36c2cd)[_0x144c('0x1c')](_0x443619);}};}function respondWithFilteredResult(_0x57fb39,_0x272413){return function(_0x571bda){if(_0x571bda){var _0x22b22f=typeof _0x272413[_0x144c('0x1d')]==='undefined'&&typeof _0x272413[_0x144c('0x1e')]===_0x144c('0x1f');var _0x41347d=_0x571bda[_0x144c('0x20')];var _0x12d1f8=_0x22b22f?0x0:_0x272413['offset'];var _0x4f7075=_0x22b22f?_0x571bda['count']:_0x272413[_0x144c('0x1d')]+_0x272413[_0x144c('0x1e')];var _0x515365;if(_0x4f7075>=_0x41347d){_0x4f7075=_0x41347d;_0x515365=0xc8;}else{_0x515365=0xce;}_0x57fb39[_0x144c('0x1b')](_0x515365);return _0x57fb39[_0x144c('0x21')]('Content-Range',_0x12d1f8+'-'+_0x4f7075+'/'+_0x41347d)[_0x144c('0x1c')](_0x571bda);}return null;};}function patchUpdates(_0x17f833){return function(_0x279a5e){try{jsonpatch['apply'](_0x279a5e,_0x17f833,!![]);}catch(_0xbe4410){return BPromise['reject'](_0xbe4410);}return _0x279a5e[_0x144c('0x22')]();};}function saveUpdates(_0x815dfa,_0x47d077){return function(_0x1cafe7){if(_0x1cafe7){return _0x1cafe7['update'](_0x815dfa)['then'](function(_0x3c593d){return _0x3c593d;});}return null;};}function removeEntity(_0x57e7af,_0xeef782){return function(_0x5c8915){if(_0x5c8915){return _0x5c8915['destroy']()[_0x144c('0x23')](function(){_0x57e7af['status'](0xcc)[_0x144c('0x1a')]();});}};}function handleEntityNotFound(_0xf1d525,_0x321b39){return function(_0x587008){if(!_0x587008){_0xf1d525[_0x144c('0x24')](0x194);}return _0x587008;};}function handleError(_0x136d26,_0x14b366){_0x14b366=_0x14b366||0x1f4;return function(_0x4e60ed){logger[_0x144c('0x25')](_0x4e60ed[_0x144c('0x26')]);if(_0x4e60ed[_0x144c('0x27')]){delete _0x4e60ed[_0x144c('0x27')];}_0x136d26[_0x144c('0x1b')](_0x14b366)[_0x144c('0x28')](_0x4e60ed);};}exports[_0x144c('0x29')]=function(_0x2829d1,_0x260078){var _0xd0aca8={},_0x1840e4={},_0x1be174={'count':0x0,'rows':[]};var _0x473b43=_[_0x144c('0x2a')](db[_0x144c('0x2b')]['rawAttributes'],function(_0x686604){return{'name':_0x686604['fieldName'],'type':_0x686604[_0x144c('0x2c')][_0x144c('0x2d')]};});_0x1840e4[_0x144c('0x2e')]=_[_0x144c('0x2a')](_0x473b43,_0x144c('0x27'));_0x1840e4[_0x144c('0x2f')]=_['keys'](_0x2829d1[_0x144c('0x2f')]);_0x1840e4[_0x144c('0x30')]=_[_0x144c('0x31')](_0x1840e4[_0x144c('0x2e')],_0x1840e4['query']);_0xd0aca8[_0x144c('0x32')]=_[_0x144c('0x31')](_0x1840e4['model'],qs[_0x144c('0x33')](_0x2829d1['query'][_0x144c('0x33')]));_0xd0aca8[_0x144c('0x32')]=_0xd0aca8[_0x144c('0x32')][_0x144c('0x34')]?_0xd0aca8[_0x144c('0x32')]:_0x1840e4[_0x144c('0x2e')];if(!_0x2829d1[_0x144c('0x2f')]['hasOwnProperty'](_0x144c('0x35'))){_0xd0aca8[_0x144c('0x1e')]=qs[_0x144c('0x1e')](_0x2829d1[_0x144c('0x2f')][_0x144c('0x1e')]);_0xd0aca8['offset']=qs[_0x144c('0x1d')](_0x2829d1[_0x144c('0x2f')][_0x144c('0x1d')]);}_0xd0aca8[_0x144c('0x36')]=qs[_0x144c('0x37')](_0x2829d1['query'][_0x144c('0x37')]);_0xd0aca8[_0x144c('0x38')]=qs[_0x144c('0x30')](_[_0x144c('0x39')](_0x2829d1[_0x144c('0x2f')],_0x1840e4[_0x144c('0x30')]),_0x473b43);if(_0x2829d1[_0x144c('0x2f')][_0x144c('0x3a')]){_0xd0aca8[_0x144c('0x38')]=_[_0x144c('0x3b')](_0xd0aca8[_0x144c('0x38')],{'$or':_[_0x144c('0x2a')](_0x473b43,function(_0xb45275){if(_0xb45275[_0x144c('0x2c')]!==_0x144c('0x3c')){var _0x584cda={};_0x584cda[_0xb45275[_0x144c('0x27')]]={'$like':'%'+_0x2829d1[_0x144c('0x2f')][_0x144c('0x3a')]+'%'};return _0x584cda;}})});}_0xd0aca8=_[_0x144c('0x3b')]({},_0xd0aca8,_0x2829d1['options']);var _0x4da270={'where':_0xd0aca8[_0x144c('0x38')]};return db[_0x144c('0x2b')][_0x144c('0x20')](_0x4da270)['then'](function(_0x2d0ea3){_0x1be174[_0x144c('0x20')]=_0x2d0ea3;if(_0x2829d1['query'][_0x144c('0x3d')]){_0xd0aca8[_0x144c('0x3e')]=[{'all':!![]}];}return db[_0x144c('0x2b')][_0x144c('0x3f')](_0xd0aca8);})[_0x144c('0x23')](function(_0x782c1c){_0x1be174['rows']=_0x782c1c;return _0x1be174;})[_0x144c('0x23')](respondWithFilteredResult(_0x260078,_0xd0aca8))[_0x144c('0x40')](handleError(_0x260078,null));};exports['show']=function(_0x2ab32b,_0x893953){var _0x555c00={'raw':![],'where':{'id':_0x2ab32b[_0x144c('0x41')]['id']}},_0x2b946e={};_0x2b946e['model']=_[_0x144c('0x42')](db[_0x144c('0x2b')][_0x144c('0x43')]);_0x2b946e[_0x144c('0x2f')]=_['keys'](_0x2ab32b[_0x144c('0x2f')]);_0x2b946e[_0x144c('0x30')]=_[_0x144c('0x31')](_0x2b946e['model'],_0x2b946e[_0x144c('0x2f')]);_0x555c00['attributes']=_['intersection'](_0x2b946e[_0x144c('0x2e')],qs['fields'](_0x2ab32b['query']['fields']));_0x555c00['attributes']=_0x555c00[_0x144c('0x32')][_0x144c('0x34')]?_0x555c00[_0x144c('0x32')]:_0x2b946e[_0x144c('0x2e')];if(_0x2ab32b[_0x144c('0x2f')][_0x144c('0x3d')]){_0x555c00['include']=[{'all':!![]}];}_0x555c00=_[_0x144c('0x3b')]({},_0x555c00,_0x2ab32b['options']);return db[_0x144c('0x2b')][_0x144c('0x44')](_0x555c00)[_0x144c('0x23')](handleEntityNotFound(_0x893953,null))[_0x144c('0x23')](respondWithResult(_0x893953,null))[_0x144c('0x40')](handleError(_0x893953,null));};exports[_0x144c('0x45')]=function(_0x9ba570,_0x2148ca){return db['VtigerAccount'][_0x144c('0x45')](_0x9ba570[_0x144c('0x46')],{})[_0x144c('0x23')](respondWithResult(_0x2148ca,0xc9))[_0x144c('0x40')](handleError(_0x2148ca,null));};exports[_0x144c('0x47')]=function(_0x38c938,_0x40a065){if(_0x38c938[_0x144c('0x46')]['id']){delete _0x38c938[_0x144c('0x46')]['id'];}return db['VtigerAccount'][_0x144c('0x44')]({'where':{'id':_0x38c938[_0x144c('0x41')]['id']}})[_0x144c('0x23')](handleEntityNotFound(_0x40a065,null))[_0x144c('0x23')](saveUpdates(_0x38c938['body'],null))[_0x144c('0x23')](respondWithResult(_0x40a065,null))[_0x144c('0x40')](handleError(_0x40a065,null));};exports[_0x144c('0x48')]=function(_0x580ce5,_0x14ce67){return db['VtigerAccount'][_0x144c('0x44')]({'where':{'id':_0x580ce5[_0x144c('0x41')]['id']}})[_0x144c('0x23')](handleEntityNotFound(_0x14ce67,null))[_0x144c('0x23')](removeEntity(_0x14ce67,null))[_0x144c('0x40')](handleError(_0x14ce67,null));};exports[_0x144c('0x49')]=function(_0x3fc66a,_0x1f913c,_0x1bbeb6){var _0x363ba2={};var _0x3e30d4={};var _0xeea423;var _0xcd3586;return db[_0x144c('0x2b')][_0x144c('0x4a')]({'where':{'id':_0x3fc66a[_0x144c('0x41')]['id']}})['then'](handleEntityNotFound(_0x1f913c,null))[_0x144c('0x23')](function(_0x2d618a){if(_0x2d618a){_0xeea423=_0x2d618a;_0x3e30d4['model']=_[_0x144c('0x42')](db['VtigerConfiguration']['rawAttributes']);_0x3e30d4[_0x144c('0x2f')]=_[_0x144c('0x42')](_0x3fc66a[_0x144c('0x2f')]);_0x3e30d4[_0x144c('0x30')]=_['intersection'](_0x3e30d4['model'],_0x3e30d4[_0x144c('0x2f')]);_0x363ba2[_0x144c('0x32')]=_['intersection'](_0x3e30d4[_0x144c('0x2e')],qs[_0x144c('0x33')](_0x3fc66a[_0x144c('0x2f')][_0x144c('0x33')]));_0x363ba2[_0x144c('0x32')]=_0x363ba2[_0x144c('0x32')][_0x144c('0x34')]?_0x363ba2[_0x144c('0x32')]:_0x3e30d4[_0x144c('0x2e')];_0x363ba2[_0x144c('0x36')]=qs[_0x144c('0x37')](_0x3fc66a[_0x144c('0x2f')][_0x144c('0x37')]);_0x363ba2[_0x144c('0x38')]=qs['filters'](_[_0x144c('0x39')](_0x3fc66a[_0x144c('0x2f')],_0x3e30d4[_0x144c('0x30')]));if(_0x3fc66a[_0x144c('0x2f')][_0x144c('0x3a')]){_0x363ba2[_0x144c('0x38')]=_[_0x144c('0x3b')](_0x363ba2[_0x144c('0x38')],{'$or':_[_0x144c('0x2a')](_0x363ba2['attributes'],function(_0x341f0f){var _0xa7d37b={};_0xa7d37b[_0x341f0f]={'$like':'%'+_0x3fc66a[_0x144c('0x2f')][_0x144c('0x3a')]+'%'};return _0xa7d37b;})});}_0x363ba2=_[_0x144c('0x3b')]({},_0x363ba2,_0x3fc66a[_0x144c('0x4b')]);return _0xeea423['getConfigurations'](_0x363ba2);}})[_0x144c('0x23')](function(_0x3a0141){if(_0x3a0141){_0xcd3586=_0x3a0141[_0x144c('0x34')];if(!_0x3fc66a[_0x144c('0x2f')][_0x144c('0x4c')](_0x144c('0x35'))){_0x363ba2[_0x144c('0x1e')]=qs[_0x144c('0x1e')](_0x3fc66a['query'][_0x144c('0x1e')]);_0x363ba2[_0x144c('0x1d')]=qs[_0x144c('0x1d')](_0x3fc66a[_0x144c('0x2f')][_0x144c('0x1d')]);}return _0xeea423[_0x144c('0x49')](_0x363ba2);}})[_0x144c('0x23')](function(_0x145fdb){if(_0x145fdb){return _0x145fdb?{'count':_0xcd3586,'rows':_0x145fdb}:null;}})[_0x144c('0x23')](respondWithResult(_0x1f913c,null))[_0x144c('0x40')](handleError(_0x1f913c,null));};exports['addConfiguration']=function(_0xd73bda,_0x1ae555,_0x19e3b3){if(_0xd73bda[_0x144c('0x46')]['id']){delete _0xd73bda[_0x144c('0x46')]['id'];}return db[_0x144c('0x2b')][_0x144c('0x4a')]({'where':{'id':_0xd73bda[_0x144c('0x41')]['id']}})[_0x144c('0x23')](handleEntityNotFound(_0x1ae555,null))[_0x144c('0x23')](function(_0x34fc13){if(_0x34fc13){_0xd73bda['body'][_0x144c('0x4d')]=_0x34fc13['id'];_0xd73bda[_0x144c('0x46')]['Subjects']=integrations[_0x144c('0x4e')](_0xd73bda['body'][_0x144c('0x4f')],_0xd73bda[_0x144c('0x46')][_0x144c('0x2c')]);_0xd73bda['body'][_0x144c('0x50')]=integrations[_0x144c('0x51')](_0xd73bda[_0x144c('0x46')]['channel'],_0xd73bda[_0x144c('0x46')][_0x144c('0x2c')]);return db[_0x144c('0x52')][_0x144c('0x45')](_0xd73bda[_0x144c('0x46')],{'include':[{'model':db[_0x144c('0x53')],'as':_0x144c('0x54')},{'model':db[_0x144c('0x53')],'as':_0x144c('0x50')}]});}return null;})[_0x144c('0x23')](respondWithResult(_0x1ae555,null))[_0x144c('0x40')](handleError(_0x1ae555,null));};var md5=require(_0x144c('0x55'));exports[_0x144c('0x56')]=function(_0x7b5db1,_0x50493b,_0x4f5cb1){var _0x5b2599=null;var _0x2bbf28=null;var _0x411932=null;var _0x1e115f=null;var _0x2f8d8d='';return db['VtigerAccount'][_0x144c('0x4a')]({'where':{'id':_0x7b5db1[_0x144c('0x41')]['id']},'attributes':['id',_0x144c('0x27'),_0x144c('0x57'),_0x144c('0x58'),_0x144c('0x59'),'remoteUri',_0x144c('0x5a'),_0x144c('0x5b')]})[_0x144c('0x23')](handleEntityNotFound(_0x50493b,null))['then'](function(_0x2e9162){if(_0x2e9162){_0x5b2599=_0x2e9162[_0x144c('0x57')];_0x2bbf28=_0x2e9162[_0x144c('0x5b')];_0x411932=_0x2e9162['moduleName'];_0x2f8d8d=_0x2e9162[_0x144c('0x5c')];var _0xa005c1=_0x2f8d8d[_0x144c('0x5d')](-0x1);if(_0xa005c1==='/'){_0x2f8d8d=_0x2f8d8d[_0x144c('0x5e')](0x0,_0x2f8d8d['lastIndexOf'](_0xa005c1));}_0x1e115f=util[_0x144c('0x5f')]('%s/webservice.php',_0x2f8d8d);var _0x228873={'method':_0x144c('0x60'),'uri':_0x1e115f,'qs':{'operation':_0x144c('0x61'),'username':_0x2e9162[_0x144c('0x57')]},'json':!![]};return rp(_0x228873);}})[_0x144c('0x23')](function(_0x57835e){if(_0x57835e[_0x144c('0x62')]){var _0x77e8b4={'method':_0x144c('0x63'),'uri':_0x1e115f,'form':{'operation':'login','username':_0x5b2599,'accessKey':md5(_0x57835e[_0x144c('0x64')]['token']+_0x2bbf28)},'json':!![]};return rp(_0x77e8b4);}})['then'](function(_0x2c1755){if(_0x2c1755[_0x144c('0x62')]){var _0x5b386a={'method':_0x144c('0x60'),'uri':_0x1e115f,'qs':{'operation':_0x144c('0x65'),'username':_0x5b2599,'sessionName':_0x2c1755[_0x144c('0x64')][_0x144c('0x66')],'elementType':_0x411932},'json':!![]};return rp(_0x5b386a);}})[_0x144c('0x23')](function(_0x1846ac){if(_0x1846ac[_0x144c('0x62')]){var _0x589f15=['autogenerated','reference','owner'];_[_0x144c('0x67')](_0x1846ac[_0x144c('0x64')][_0x144c('0x33')],function(_0x12ae9b){return _0x589f15['includes'](_0x12ae9b[_0x144c('0x2c')][_0x144c('0x27')]);});_[_0x144c('0x67')](_0x1846ac['result'][_0x144c('0x33')],function(_0x46fdfe){return _0x46fdfe[_0x144c('0x68')]===_0x144c('0x69');});return{'count':_0x1846ac['result'][_0x144c('0x33')][_0x144c('0x34')],'rows':_['map'](_0x1846ac['result']['fields'],function(_0xc7c75){return{'id':_0xc7c75[_0x144c('0x27')],'name':_0xc7c75[_0x144c('0x6a')],'custom':_[_0x144c('0x6b')](_0xc7c75['name'],_0x144c('0x6c'))?!![]:![],'options':_0xc7c75[_0x144c('0x2c')][_0x144c('0x27')]===_0x144c('0x6d')&&_0xc7c75[_0x144c('0x2c')][_0x144c('0x6e')][_0x144c('0x34')]>0x0?_[_0x144c('0x2a')](_0xc7c75[_0x144c('0x2c')][_0x144c('0x6e')],function(_0x347f1c){return{'name':_0x347f1c[_0x144c('0x6a')],'value':_0x347f1c[_0x144c('0x6f')]};}):[]};})};}})[_0x144c('0x23')](respondWithResult(_0x50493b,null))['catch'](function(_0x52624a){console[_0x144c('0x70')](_0x144c('0x71')+_0x52624a);var _0x42ef3e=_0x7b5db1[_0x144c('0x2f')]['test']?0x1f4:_0x52624a['statusCode']||0x1f4;logger[_0x144c('0x25')]('getFields,\x20%s,\x20%s,\x20%s',_0x144c('0x56'),_0x42ef3e,JSON['stringify'](_0x52624a));delete _0x52624a[_0x144c('0x27')];if(_0x42ef3e===0x191){_0x42ef3e=0x190;}_0x50493b['status'](_0x42ef3e)[_0x144c('0x28')](_0x7b5db1[_0x144c('0x2f')]['test']?{'message':_0x144c('0x72'),'statusCode':_0x52624a[_0x144c('0x73')]}:_0x52624a);});};
\ No newline at end of file
+var _0x4187=['where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','getConfigurations','findOne','sort','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','getFields','username','moduleName','remoteUri','accessKey','lastIndexOf','%s/webservice.php','GET','getchallenge','success','POST','token','result','sessionName','reference','owner','includes','remove','editable','startsWith','cf_','picklistValues','label','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','VtigerAccount','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields','hasOwnProperty','nolimit','order'];(function(_0x3455c0,_0x363b27){var _0x206ab4=function(_0x2cc95f){while(--_0x2cc95f){_0x3455c0['push'](_0x3455c0['shift']());}};_0x206ab4(++_0x363b27);}(_0x4187,0x121));var _0x7418=function(_0x55070a,_0x4ee426){_0x55070a=_0x55070a-0x0;var _0x3c9b7d=_0x4187[_0x55070a];return _0x3c9b7d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7418('0x0'));var jsonpatch=require(_0x7418('0x1'));var rp=require(_0x7418('0x2'));var moment=require(_0x7418('0x3'));var BPromise=require(_0x7418('0x4'));var Mustache=require(_0x7418('0x5'));var util=require(_0x7418('0x6'));var path=require('path');var sox=require(_0x7418('0x7'));var csv=require('to-csv');var ejs=require(_0x7418('0x8'));var fs=require('fs');var fs_extra=require(_0x7418('0x9'));var _=require(_0x7418('0xa'));var squel=require(_0x7418('0xb'));var crypto=require('crypto');var jsforce=require(_0x7418('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7418('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7418('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x7418('0xf'));var hardwareService=require(_0x7418('0x10'));var logger=require(_0x7418('0x11'))(_0x7418('0x12'));var utils=require(_0x7418('0x13'));var config=require(_0x7418('0x14'));var licenseUtil=require(_0x7418('0x15'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x7cb2e5,_0x4174ff){_0x4174ff=_0x4174ff||0xcc;return function(_0x23173b){if(_0x23173b){return _0x7cb2e5[_0x7418('0x16')](_0x4174ff);}return _0x7cb2e5[_0x7418('0x17')](_0x4174ff)[_0x7418('0x18')]();};}function respondWithResult(_0x51229b,_0x44e81d){_0x44e81d=_0x44e81d||0xc8;return function(_0x54342d){if(_0x54342d){return _0x51229b[_0x7418('0x17')](_0x44e81d)['json'](_0x54342d);}};}function respondWithFilteredResult(_0x3a7504,_0x6b56d7){return function(_0x80e248){if(_0x80e248){var _0x23c769=typeof _0x6b56d7[_0x7418('0x19')]===_0x7418('0x1a')&&typeof _0x6b56d7[_0x7418('0x1b')]===_0x7418('0x1a');var _0x354aba=_0x80e248[_0x7418('0x1c')];var _0x42e940=_0x23c769?0x0:_0x6b56d7[_0x7418('0x19')];var _0x460f1e=_0x23c769?_0x80e248[_0x7418('0x1c')]:_0x6b56d7[_0x7418('0x19')]+_0x6b56d7[_0x7418('0x1b')];var _0x23c01a;if(_0x460f1e>=_0x354aba){_0x460f1e=_0x354aba;_0x23c01a=0xc8;}else{_0x23c01a=0xce;}_0x3a7504['status'](_0x23c01a);return _0x3a7504[_0x7418('0x1d')](_0x7418('0x1e'),_0x42e940+'-'+_0x460f1e+'/'+_0x354aba)[_0x7418('0x1f')](_0x80e248);}return null;};}function patchUpdates(_0x2da215){return function(_0x19b406){try{jsonpatch[_0x7418('0x20')](_0x19b406,_0x2da215,!![]);}catch(_0x56271b){return BPromise[_0x7418('0x21')](_0x56271b);}return _0x19b406[_0x7418('0x22')]();};}function saveUpdates(_0x19aa5,_0x45cdd1){return function(_0x2b5fc3){if(_0x2b5fc3){return _0x2b5fc3[_0x7418('0x23')](_0x19aa5)[_0x7418('0x24')](function(_0x4fed65){return _0x4fed65;});}return null;};}function removeEntity(_0x463e55,_0x578eb4){return function(_0x3fed76){if(_0x3fed76){return _0x3fed76[_0x7418('0x25')]()[_0x7418('0x24')](function(){_0x463e55[_0x7418('0x17')](0xcc)[_0x7418('0x18')]();});}};}function handleEntityNotFound(_0x2282f1,_0x496094){return function(_0x3ee220){if(!_0x3ee220){_0x2282f1[_0x7418('0x16')](0x194);}return _0x3ee220;};}function handleError(_0x456ca4,_0xc8c00d){_0xc8c00d=_0xc8c00d||0x1f4;return function(_0xca2bc1){logger[_0x7418('0x26')](_0xca2bc1[_0x7418('0x27')]);if(_0xca2bc1[_0x7418('0x28')]){delete _0xca2bc1[_0x7418('0x28')];}_0x456ca4[_0x7418('0x17')](_0xc8c00d)['send'](_0xca2bc1);};}exports['index']=function(_0x216c75,_0x55d6d8){var _0x287d88={},_0x3a0dc7={},_0xe0dbed={'count':0x0,'rows':[]};var _0x44b760=_[_0x7418('0x29')](db[_0x7418('0x2a')]['rawAttributes'],function(_0x423efb){return{'name':_0x423efb[_0x7418('0x2b')],'type':_0x423efb[_0x7418('0x2c')][_0x7418('0x2d')]};});_0x3a0dc7['model']=_[_0x7418('0x29')](_0x44b760,_0x7418('0x28'));_0x3a0dc7['query']=_[_0x7418('0x2e')](_0x216c75[_0x7418('0x2f')]);_0x3a0dc7[_0x7418('0x30')]=_['intersection'](_0x3a0dc7['model'],_0x3a0dc7[_0x7418('0x2f')]);_0x287d88[_0x7418('0x31')]=_[_0x7418('0x32')](_0x3a0dc7[_0x7418('0x33')],qs[_0x7418('0x34')](_0x216c75[_0x7418('0x2f')][_0x7418('0x34')]));_0x287d88[_0x7418('0x31')]=_0x287d88['attributes']['length']?_0x287d88[_0x7418('0x31')]:_0x3a0dc7['model'];if(!_0x216c75[_0x7418('0x2f')][_0x7418('0x35')](_0x7418('0x36'))){_0x287d88[_0x7418('0x1b')]=qs[_0x7418('0x1b')](_0x216c75['query'][_0x7418('0x1b')]);_0x287d88[_0x7418('0x19')]=qs[_0x7418('0x19')](_0x216c75['query'][_0x7418('0x19')]);}_0x287d88[_0x7418('0x37')]=qs['sort'](_0x216c75[_0x7418('0x2f')]['sort']);_0x287d88[_0x7418('0x38')]=qs[_0x7418('0x30')](_['pick'](_0x216c75['query'],_0x3a0dc7[_0x7418('0x30')]),_0x44b760);if(_0x216c75[_0x7418('0x2f')][_0x7418('0x39')]){_0x287d88[_0x7418('0x38')]=_[_0x7418('0x3a')](_0x287d88[_0x7418('0x38')],{'$or':_[_0x7418('0x29')](_0x44b760,function(_0xe6542e){if(_0xe6542e[_0x7418('0x2c')]!=='VIRTUAL'){var _0x37f3f9={};_0x37f3f9[_0xe6542e[_0x7418('0x28')]]={'$like':'%'+_0x216c75[_0x7418('0x2f')][_0x7418('0x39')]+'%'};return _0x37f3f9;}})});}_0x287d88=_[_0x7418('0x3a')]({},_0x287d88,_0x216c75[_0x7418('0x3b')]);var _0x3c9b14={'where':_0x287d88[_0x7418('0x38')]};return db[_0x7418('0x2a')][_0x7418('0x1c')](_0x3c9b14)[_0x7418('0x24')](function(_0x2b191b){_0xe0dbed[_0x7418('0x1c')]=_0x2b191b;if(_0x216c75['query'][_0x7418('0x3c')]){_0x287d88[_0x7418('0x3d')]=[{'all':!![]}];}return db[_0x7418('0x2a')][_0x7418('0x3e')](_0x287d88);})[_0x7418('0x24')](function(_0x447701){_0xe0dbed[_0x7418('0x3f')]=_0x447701;return _0xe0dbed;})[_0x7418('0x24')](respondWithFilteredResult(_0x55d6d8,_0x287d88))[_0x7418('0x40')](handleError(_0x55d6d8,null));};exports[_0x7418('0x41')]=function(_0x452fc7,_0x5ada98){var _0x26cf29={'raw':![],'where':{'id':_0x452fc7[_0x7418('0x42')]['id']}},_0x387562={};_0x387562[_0x7418('0x33')]=_['keys'](db[_0x7418('0x2a')][_0x7418('0x43')]);_0x387562[_0x7418('0x2f')]=_[_0x7418('0x2e')](_0x452fc7[_0x7418('0x2f')]);_0x387562[_0x7418('0x30')]=_[_0x7418('0x32')](_0x387562[_0x7418('0x33')],_0x387562['query']);_0x26cf29[_0x7418('0x31')]=_[_0x7418('0x32')](_0x387562[_0x7418('0x33')],qs[_0x7418('0x34')](_0x452fc7['query']['fields']));_0x26cf29[_0x7418('0x31')]=_0x26cf29[_0x7418('0x31')][_0x7418('0x44')]?_0x26cf29[_0x7418('0x31')]:_0x387562['model'];if(_0x452fc7['query']['includeAll']){_0x26cf29['include']=[{'all':!![]}];}_0x26cf29=_[_0x7418('0x3a')]({},_0x26cf29,_0x452fc7[_0x7418('0x3b')]);return db['VtigerAccount'][_0x7418('0x45')](_0x26cf29)[_0x7418('0x24')](handleEntityNotFound(_0x5ada98,null))[_0x7418('0x24')](respondWithResult(_0x5ada98,null))['catch'](handleError(_0x5ada98,null));};exports[_0x7418('0x46')]=function(_0x2b20a9,_0x4a09e6){return db[_0x7418('0x2a')]['create'](_0x2b20a9[_0x7418('0x47')],{})['then'](respondWithResult(_0x4a09e6,0xc9))[_0x7418('0x40')](handleError(_0x4a09e6,null));};exports[_0x7418('0x23')]=function(_0x23a92a,_0x2152f0){if(_0x23a92a[_0x7418('0x47')]['id']){delete _0x23a92a['body']['id'];}return db[_0x7418('0x2a')][_0x7418('0x45')]({'where':{'id':_0x23a92a[_0x7418('0x42')]['id']}})[_0x7418('0x24')](handleEntityNotFound(_0x2152f0,null))[_0x7418('0x24')](saveUpdates(_0x23a92a['body'],null))[_0x7418('0x24')](respondWithResult(_0x2152f0,null))['catch'](handleError(_0x2152f0,null));};exports['destroy']=function(_0x21f3c1,_0x57c505){return db[_0x7418('0x2a')][_0x7418('0x45')]({'where':{'id':_0x21f3c1[_0x7418('0x42')]['id']}})[_0x7418('0x24')](handleEntityNotFound(_0x57c505,null))['then'](removeEntity(_0x57c505,null))['catch'](handleError(_0x57c505,null));};exports[_0x7418('0x48')]=function(_0x12b531,_0x4be34a,_0xe18a98){var _0x3772b2={};var _0x2b9bf9={};var _0xfbdf1c;var _0x46a4e1;return db['VtigerAccount'][_0x7418('0x49')]({'where':{'id':_0x12b531[_0x7418('0x42')]['id']}})['then'](handleEntityNotFound(_0x4be34a,null))[_0x7418('0x24')](function(_0x3d714f){if(_0x3d714f){_0xfbdf1c=_0x3d714f;_0x2b9bf9[_0x7418('0x33')]=_['keys'](db['VtigerConfiguration']['rawAttributes']);_0x2b9bf9['query']=_[_0x7418('0x2e')](_0x12b531[_0x7418('0x2f')]);_0x2b9bf9[_0x7418('0x30')]=_[_0x7418('0x32')](_0x2b9bf9[_0x7418('0x33')],_0x2b9bf9[_0x7418('0x2f')]);_0x3772b2['attributes']=_[_0x7418('0x32')](_0x2b9bf9['model'],qs[_0x7418('0x34')](_0x12b531[_0x7418('0x2f')]['fields']));_0x3772b2['attributes']=_0x3772b2[_0x7418('0x31')][_0x7418('0x44')]?_0x3772b2[_0x7418('0x31')]:_0x2b9bf9[_0x7418('0x33')];_0x3772b2[_0x7418('0x37')]=qs[_0x7418('0x4a')](_0x12b531[_0x7418('0x2f')][_0x7418('0x4a')]);_0x3772b2['where']=qs[_0x7418('0x30')](_[_0x7418('0x4b')](_0x12b531[_0x7418('0x2f')],_0x2b9bf9[_0x7418('0x30')]));if(_0x12b531['query'][_0x7418('0x39')]){_0x3772b2[_0x7418('0x38')]=_['merge'](_0x3772b2[_0x7418('0x38')],{'$or':_[_0x7418('0x29')](_0x3772b2[_0x7418('0x31')],function(_0x216cf9){var _0x5e02d5={};_0x5e02d5[_0x216cf9]={'$like':'%'+_0x12b531[_0x7418('0x2f')]['filter']+'%'};return _0x5e02d5;})});}_0x3772b2=_[_0x7418('0x3a')]({},_0x3772b2,_0x12b531[_0x7418('0x3b')]);return _0xfbdf1c[_0x7418('0x48')](_0x3772b2);}})[_0x7418('0x24')](function(_0x1b7030){if(_0x1b7030){_0x46a4e1=_0x1b7030[_0x7418('0x44')];if(!_0x12b531['query'][_0x7418('0x35')](_0x7418('0x36'))){_0x3772b2[_0x7418('0x1b')]=qs[_0x7418('0x1b')](_0x12b531[_0x7418('0x2f')][_0x7418('0x1b')]);_0x3772b2[_0x7418('0x19')]=qs[_0x7418('0x19')](_0x12b531[_0x7418('0x2f')][_0x7418('0x19')]);}return _0xfbdf1c[_0x7418('0x48')](_0x3772b2);}})[_0x7418('0x24')](function(_0x1b2bc4){if(_0x1b2bc4){return _0x1b2bc4?{'count':_0x46a4e1,'rows':_0x1b2bc4}:null;}})[_0x7418('0x24')](respondWithResult(_0x4be34a,null))['catch'](handleError(_0x4be34a,null));};exports[_0x7418('0x4c')]=function(_0x20a3d1,_0x272a5e,_0x1b3d20){if(_0x20a3d1['body']['id']){delete _0x20a3d1[_0x7418('0x47')]['id'];}return db['VtigerAccount'][_0x7418('0x49')]({'where':{'id':_0x20a3d1[_0x7418('0x42')]['id']}})[_0x7418('0x24')](handleEntityNotFound(_0x272a5e,null))['then'](function(_0x5c3951){if(_0x5c3951){_0x20a3d1[_0x7418('0x47')][_0x7418('0x4d')]=_0x5c3951['id'];_0x20a3d1[_0x7418('0x47')][_0x7418('0x4e')]=integrations[_0x7418('0x4f')](_0x20a3d1[_0x7418('0x47')][_0x7418('0x50')],_0x20a3d1[_0x7418('0x47')]['type']);_0x20a3d1[_0x7418('0x47')][_0x7418('0x51')]=integrations[_0x7418('0x52')](_0x20a3d1['body'][_0x7418('0x50')],_0x20a3d1[_0x7418('0x47')]['type']);return db['VtigerConfiguration'][_0x7418('0x46')](_0x20a3d1[_0x7418('0x47')],{'include':[{'model':db[_0x7418('0x53')],'as':_0x7418('0x4e')},{'model':db[_0x7418('0x53')],'as':_0x7418('0x51')}]});}return null;})[_0x7418('0x24')](respondWithResult(_0x272a5e,null))[_0x7418('0x40')](handleError(_0x272a5e,null));};var md5=require('md5');exports[_0x7418('0x54')]=function(_0x229cd4,_0x3a5d96,_0x4a412a){var _0x383dac=null;var _0x338a93=null;var _0x5c5b98=null;var _0x3ab95e=null;var _0xc2e0d3='';return db['VtigerAccount'][_0x7418('0x49')]({'where':{'id':_0x229cd4['params']['id']},'attributes':['id','name',_0x7418('0x55'),'description',_0x7418('0x56'),_0x7418('0x57'),'serverUrl',_0x7418('0x58')]})[_0x7418('0x24')](handleEntityNotFound(_0x3a5d96,null))[_0x7418('0x24')](function(_0x1cf2e4){if(_0x1cf2e4){_0x383dac=_0x1cf2e4[_0x7418('0x55')];_0x338a93=_0x1cf2e4['accessKey'];_0x5c5b98=_0x1cf2e4[_0x7418('0x56')];_0xc2e0d3=_0x1cf2e4[_0x7418('0x57')];var _0x5555b3=_0xc2e0d3['slice'](-0x1);if(_0x5555b3==='/'){_0xc2e0d3=_0xc2e0d3['substring'](0x0,_0xc2e0d3[_0x7418('0x59')](_0x5555b3));}_0x3ab95e=util['format'](_0x7418('0x5a'),_0xc2e0d3);var _0x59b17a={'method':_0x7418('0x5b'),'uri':_0x3ab95e,'qs':{'operation':_0x7418('0x5c'),'username':_0x1cf2e4[_0x7418('0x55')]},'json':!![]};return rp(_0x59b17a);}})[_0x7418('0x24')](function(_0x2bda98){if(_0x2bda98[_0x7418('0x5d')]){var _0xb5c7b0={'method':_0x7418('0x5e'),'uri':_0x3ab95e,'form':{'operation':'login','username':_0x383dac,'accessKey':md5(_0x2bda98['result'][_0x7418('0x5f')]+_0x338a93)},'json':!![]};return rp(_0xb5c7b0);}})[_0x7418('0x24')](function(_0x519493){if(_0x519493[_0x7418('0x5d')]){var _0x59b737={'method':_0x7418('0x5b'),'uri':_0x3ab95e,'qs':{'operation':'describe','username':_0x383dac,'sessionName':_0x519493[_0x7418('0x60')][_0x7418('0x61')],'elementType':_0x5c5b98},'json':!![]};return rp(_0x59b737);}})[_0x7418('0x24')](function(_0x1af906){if(_0x1af906['success']){var _0x5e4ccc=['autogenerated',_0x7418('0x62'),_0x7418('0x63')];_['remove'](_0x1af906[_0x7418('0x60')]['fields'],function(_0x1420b0){return _0x5e4ccc[_0x7418('0x64')](_0x1420b0['type'][_0x7418('0x28')]);});_[_0x7418('0x65')](_0x1af906[_0x7418('0x60')][_0x7418('0x34')],function(_0x1f4ed6){return _0x1f4ed6[_0x7418('0x66')]==='false';});return{'count':_0x1af906[_0x7418('0x60')][_0x7418('0x34')][_0x7418('0x44')],'rows':_[_0x7418('0x29')](_0x1af906[_0x7418('0x60')]['fields'],function(_0x131de1){return{'id':_0x131de1[_0x7418('0x28')],'name':_0x131de1['label'],'custom':_[_0x7418('0x67')](_0x131de1[_0x7418('0x28')],_0x7418('0x68'))?!![]:![],'options':_0x131de1[_0x7418('0x2c')][_0x7418('0x28')]==='picklist'&&_0x131de1[_0x7418('0x2c')]['picklistValues'][_0x7418('0x44')]>0x0?_[_0x7418('0x29')](_0x131de1['type'][_0x7418('0x69')],function(_0x203b38){return{'name':_0x203b38[_0x7418('0x6a')],'value':_0x203b38[_0x7418('0x6b')]};}):[]};})};}})[_0x7418('0x24')](respondWithResult(_0x3a5d96,null))['catch'](function(_0x36eade){console[_0x7418('0x6c')](_0x7418('0x6d')+_0x36eade);var _0x399dae=_0x229cd4[_0x7418('0x2f')][_0x7418('0x6e')]?0x1f4:_0x36eade[_0x7418('0x6f')]||0x1f4;logger[_0x7418('0x26')](_0x7418('0x70'),_0x7418('0x54'),_0x399dae,JSON[_0x7418('0x71')](_0x36eade));delete _0x36eade[_0x7418('0x28')];if(_0x399dae===0x191){_0x399dae=0x190;}_0x3a5d96[_0x7418('0x17')](_0x399dae)[_0x7418('0x72')](_0x229cd4[_0x7418('0x2f')][_0x7418('0x6e')]?{'message':'Wrong\x20credentials','statusCode':_0x36eade['statusCode']}:_0x36eade);});};
\ No newline at end of file
index 387977b..23306ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6634=['lodash','util','../../config/logger','api','bluebird','path','rimraf','exports','define','int_vtiger_accounts'];(function(_0x1c47d7,_0x58b64c){var _0x15f013=function(_0x13ccb3){while(--_0x13ccb3){_0x1c47d7['push'](_0x1c47d7['shift']());}};_0x15f013(++_0x58b64c);}(_0x6634,0x1ea));var _0x4663=function(_0x4f1a18,_0x5e26cd){_0x4f1a18=_0x4f1a18-0x0;var _0x158bd7=_0x6634[_0x4f1a18];return _0x158bd7;};'use strict';var _=require(_0x4663('0x0'));var util=require(_0x4663('0x1'));var logger=require(_0x4663('0x2'))(_0x4663('0x3'));var moment=require('moment');var BPromise=require(_0x4663('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4663('0x5'));var rimraf=require(_0x4663('0x6'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x4663('0x7')]=function(_0x5bdab3,_0x4ddbdc){return _0x5bdab3[_0x4663('0x8')]('VtigerAccount',attributes,{'tableName':_0x4663('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x787f=['rimraf','../../config/environment','exports','define','int_vtiger_accounts','lodash','../../config/logger','bluebird','request-promise','path'];(function(_0x8113e5,_0x4bdca8){var _0x22b2ee=function(_0x27df14){while(--_0x27df14){_0x8113e5['push'](_0x8113e5['shift']());}};_0x22b2ee(++_0x4bdca8);}(_0x787f,0x113));var _0xf787=function(_0x3b58c9,_0x1f46c3){_0x3b58c9=_0x3b58c9-0x0;var _0x5b653a=_0x787f[_0x3b58c9];return _0x5b653a;};'use strict';var _=require(_0xf787('0x0'));var util=require('util');var logger=require(_0xf787('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf787('0x2'));var rp=require(_0xf787('0x3'));var fs=require('fs');var path=require(_0xf787('0x4'));var rimraf=require(_0xf787('0x5'));var config=require(_0xf787('0x6'));var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xf787('0x7')]=function(_0x150765,_0x524596){return _0x150765[_0xf787('0x8')]('VtigerAccount',attributes,{'tableName':_0xf787('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a51ddb..bfd1eff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['options','raw','attributes','include','map','model','ShowVtigerAccount','VtigerAccount','find','where','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','VtigerAccount,\x20%s,\x20%s','message','info','result','catch','GetVtigerAccount','findAll'];(function(_0x2b6842,_0x2c2e3d){var _0x5af24d=function(_0x3f5086){while(--_0x3f5086){_0x2b6842['push'](_0x2b6842['shift']());}};_0x5af24d(++_0x2c2e3d);}(_0xefda,0x96));var _0xaefd=function(_0x25e782,_0x55d2dd){_0x25e782=_0x25e782-0x0;var _0x10871f=_0xefda[_0x25e782];return _0x10871f;};'use strict';var _=require(_0xaefd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xaefd('0x1'));var rs=require(_0xaefd('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaefd('0x3'))['db'];var utils=require(_0xaefd('0x4'));var logger=require(_0xaefd('0x5'))(_0xaefd('0x6'));var config=require(_0xaefd('0x7'));var jayson=require(_0xaefd('0x8'));var client=jayson['client'][_0xaefd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b9736,_0x24d10c,_0x1d76f3){return new BPromise(function(_0x4ce248,_0x15193c){return client[_0xaefd('0xa')](_0x3b9736,_0x1d76f3)[_0xaefd('0xb')](function(_0x4d44ed){logger['info']('VtigerAccount,\x20%s,\x20%s',_0x24d10c,_0xaefd('0xc'));logger[_0xaefd('0xd')](_0xaefd('0xe'),_0x24d10c,_0xaefd('0xc'),JSON[_0xaefd('0xf')](_0x4d44ed));if(_0x4d44ed[_0xaefd('0x10')]){if(_0x4d44ed[_0xaefd('0x10')][_0xaefd('0x11')]===0x1f4){logger[_0xaefd('0x10')](_0xaefd('0x12'),_0x24d10c,_0x4d44ed[_0xaefd('0x10')]['message']);return _0x15193c(_0x4d44ed[_0xaefd('0x10')]['message']);}logger[_0xaefd('0x10')](_0xaefd('0x12'),_0x24d10c,_0x4d44ed[_0xaefd('0x10')][_0xaefd('0x13')]);return _0x4ce248(_0x4d44ed['error'][_0xaefd('0x13')]);}else{logger[_0xaefd('0x14')](_0xaefd('0x12'),_0x24d10c,_0xaefd('0xc'));_0x4ce248(_0x4d44ed[_0xaefd('0x15')][_0xaefd('0x13')]);}})[_0xaefd('0x16')](function(_0x23d736){logger['error'](_0xaefd('0x12'),_0x24d10c,_0x23d736);_0x15193c(_0x23d736);});});}exports[_0xaefd('0x17')]=function(_0x9748f4){var _0x1737a1=this;return new Promise(function(_0x2db61b,_0x244956){return db['VtigerAccount'][_0xaefd('0x18')]({'raw':_0x9748f4[_0xaefd('0x19')]?_0x9748f4[_0xaefd('0x19')][_0xaefd('0x1a')]===undefined?!![]:![]:!![],'where':_0x9748f4[_0xaefd('0x19')]?_0x9748f4[_0xaefd('0x19')]['where']||null:null,'attributes':_0x9748f4[_0xaefd('0x19')]?_0x9748f4[_0xaefd('0x19')][_0xaefd('0x1b')]||null:null,'limit':_0x9748f4[_0xaefd('0x19')]?_0x9748f4[_0xaefd('0x19')]['limit']||null:null,'include':_0x9748f4['options']?_0x9748f4['options'][_0xaefd('0x1c')]?_[_0xaefd('0x1d')](_0x9748f4[_0xaefd('0x19')]['include'],function(_0x23060f){return{'model':db[_0x23060f['model']],'as':_0x23060f['as'],'attributes':_0x23060f[_0xaefd('0x1b')],'include':_0x23060f[_0xaefd('0x1c')]?_[_0xaefd('0x1d')](_0x23060f['include'],function(_0x435413){return{'model':db[_0x435413[_0xaefd('0x1e')]],'as':_0x435413['as'],'attributes':_0x435413[_0xaefd('0x1b')],'include':_0x435413[_0xaefd('0x1c')]?_[_0xaefd('0x1d')](_0x435413['include'],function(_0x2fe27e){return{'model':db[_0x2fe27e['model']],'as':_0x2fe27e['as'],'attributes':_0x2fe27e[_0xaefd('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xaefd('0xb')](function(_0x5470bd){logger[_0xaefd('0x14')](_0xaefd('0x17'),_0x9748f4);logger['debug'](_0xaefd('0x17'),_0x9748f4,JSON[_0xaefd('0xf')](_0x5470bd));_0x2db61b(_0x5470bd);})[_0xaefd('0x16')](function(_0x4c0898){logger[_0xaefd('0x10')]('GetVtigerAccount',_0x4c0898[_0xaefd('0x13')],_0x9748f4);_0x244956(_0x1737a1['error'](0x1f4,_0x4c0898['message']));});});};exports[_0xaefd('0x1f')]=function(_0x1b470c){var _0x4a032d=this;return new Promise(function(_0x578378,_0x4ee0c1){return db[_0xaefd('0x20')][_0xaefd('0x21')]({'raw':_0x1b470c['options']?_0x1b470c['options'][_0xaefd('0x1a')]===undefined?!![]:![]:!![],'where':_0x1b470c[_0xaefd('0x19')]?_0x1b470c[_0xaefd('0x19')][_0xaefd('0x22')]||null:null,'attributes':_0x1b470c['options']?_0x1b470c[_0xaefd('0x19')][_0xaefd('0x1b')]||null:null,'include':_0x1b470c[_0xaefd('0x19')]?_0x1b470c[_0xaefd('0x19')][_0xaefd('0x1c')]?_[_0xaefd('0x1d')](_0x1b470c[_0xaefd('0x19')][_0xaefd('0x1c')],function(_0x3e3fe2){return{'model':db[_0x3e3fe2[_0xaefd('0x1e')]],'as':_0x3e3fe2['as'],'attributes':_0x3e3fe2[_0xaefd('0x1b')],'include':_0x3e3fe2[_0xaefd('0x1c')]?_[_0xaefd('0x1d')](_0x3e3fe2[_0xaefd('0x1c')],function(_0x1ffec4){return{'model':db[_0x1ffec4[_0xaefd('0x1e')]],'as':_0x1ffec4['as'],'attributes':_0x1ffec4['attributes'],'include':_0x1ffec4[_0xaefd('0x1c')]?_[_0xaefd('0x1d')](_0x1ffec4[_0xaefd('0x1c')],function(_0x59aec9){return{'model':db[_0x59aec9[_0xaefd('0x1e')]],'as':_0x59aec9['as'],'attributes':_0x59aec9['attributes']};}):[]};}):[]};}):[]:[]})[_0xaefd('0xb')](function(_0x3498d9){logger[_0xaefd('0x14')](_0xaefd('0x1f'),_0x1b470c);logger[_0xaefd('0xd')](_0xaefd('0x1f'),_0x1b470c,JSON[_0xaefd('0xf')](_0x3498d9));_0x578378(_0x3498d9);})[_0xaefd('0x16')](function(_0x407bea){logger[_0xaefd('0x10')](_0xaefd('0x1f'),_0x407bea[_0xaefd('0x13')],_0x1b470c);_0x4ee0c1(_0x4a032d[_0xaefd('0x10')](0x1f4,_0x407bea[_0xaefd('0x13')]));});});};
\ No newline at end of file
+var _0x0102=['util','moment','bluebird','randomstring','../../config/environment','jayson/promise','client','http','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVtigerAccount','findAll','options','raw','where','attributes','include','model','map','find','ShowVtigerAccount'];(function(_0x4c8a5c,_0x69ee86){var _0x48c8c3=function(_0x5b6c9e){while(--_0x5b6c9e){_0x4c8a5c['push'](_0x4c8a5c['shift']());}};_0x48c8c3(++_0x69ee86);}(_0x0102,0x186));var _0x2010=function(_0x167c3d,_0x26e2d2){_0x167c3d=_0x167c3d-0x0;var _0x5a1d0e=_0x0102[_0x167c3d];return _0x5a1d0e;};'use strict';var _=require('lodash');var util=require(_0x2010('0x0'));var moment=require(_0x2010('0x1'));var BPromise=require(_0x2010('0x2'));var rs=require(_0x2010('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2010('0x4'));var jayson=require(_0x2010('0x5'));var client=jayson[_0x2010('0x6')][_0x2010('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4eeb67,_0x453fc0,_0x495d98){return new BPromise(function(_0x4728c0,_0x160e41){return client['request'](_0x4eeb67,_0x495d98)[_0x2010('0x8')](function(_0x3c2d98){logger[_0x2010('0x9')](_0x2010('0xa'),_0x453fc0,_0x2010('0xb'));logger[_0x2010('0xc')](_0x2010('0xd'),_0x453fc0,_0x2010('0xb'),JSON[_0x2010('0xe')](_0x3c2d98));if(_0x3c2d98[_0x2010('0xf')]){if(_0x3c2d98[_0x2010('0xf')][_0x2010('0x10')]===0x1f4){logger[_0x2010('0xf')](_0x2010('0xa'),_0x453fc0,_0x3c2d98[_0x2010('0xf')][_0x2010('0x11')]);return _0x160e41(_0x3c2d98['error']['message']);}logger[_0x2010('0xf')](_0x2010('0xa'),_0x453fc0,_0x3c2d98[_0x2010('0xf')][_0x2010('0x11')]);return _0x4728c0(_0x3c2d98[_0x2010('0xf')][_0x2010('0x11')]);}else{logger['info'](_0x2010('0xa'),_0x453fc0,_0x2010('0xb'));_0x4728c0(_0x3c2d98['result'][_0x2010('0x11')]);}})[_0x2010('0x12')](function(_0x410889){logger[_0x2010('0xf')](_0x2010('0xa'),_0x453fc0,_0x410889);_0x160e41(_0x410889);});});}exports[_0x2010('0x13')]=function(_0x83cd35){var _0x1476c0=this;return new Promise(function(_0x309477,_0x569de2){return db['VtigerAccount'][_0x2010('0x14')]({'raw':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')][_0x2010('0x16')]===undefined?!![]:![]:!![],'where':_0x83cd35['options']?_0x83cd35['options'][_0x2010('0x17')]||null:null,'attributes':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')][_0x2010('0x18')]||null:null,'limit':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')]['limit']||null:null,'include':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')]['include']?_['map'](_0x83cd35['options'][_0x2010('0x19')],function(_0x574719){return{'model':db[_0x574719[_0x2010('0x1a')]],'as':_0x574719['as'],'attributes':_0x574719['attributes'],'include':_0x574719['include']?_[_0x2010('0x1b')](_0x574719[_0x2010('0x19')],function(_0x52b4fe){return{'model':db[_0x52b4fe[_0x2010('0x1a')]],'as':_0x52b4fe['as'],'attributes':_0x52b4fe['attributes'],'include':_0x52b4fe[_0x2010('0x19')]?_[_0x2010('0x1b')](_0x52b4fe[_0x2010('0x19')],function(_0x3dcea4){return{'model':db[_0x3dcea4[_0x2010('0x1a')]],'as':_0x3dcea4['as'],'attributes':_0x3dcea4[_0x2010('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2010('0x8')](function(_0x3eb4dc){logger[_0x2010('0x9')](_0x2010('0x13'),_0x83cd35);logger[_0x2010('0xc')](_0x2010('0x13'),_0x83cd35,JSON['stringify'](_0x3eb4dc));_0x309477(_0x3eb4dc);})[_0x2010('0x12')](function(_0x52fe5e){logger[_0x2010('0xf')](_0x2010('0x13'),_0x52fe5e[_0x2010('0x11')],_0x83cd35);_0x569de2(_0x1476c0[_0x2010('0xf')](0x1f4,_0x52fe5e['message']));});});};exports['ShowVtigerAccount']=function(_0x136d5f){var _0x48d9f2=this;return new Promise(function(_0x2839f2,_0x1d5d7a){return db['VtigerAccount'][_0x2010('0x1c')]({'raw':_0x136d5f[_0x2010('0x15')]?_0x136d5f[_0x2010('0x15')][_0x2010('0x16')]===undefined?!![]:![]:!![],'where':_0x136d5f[_0x2010('0x15')]?_0x136d5f['options'][_0x2010('0x17')]||null:null,'attributes':_0x136d5f[_0x2010('0x15')]?_0x136d5f[_0x2010('0x15')]['attributes']||null:null,'include':_0x136d5f['options']?_0x136d5f[_0x2010('0x15')][_0x2010('0x19')]?_[_0x2010('0x1b')](_0x136d5f['options']['include'],function(_0xac64e1){return{'model':db[_0xac64e1[_0x2010('0x1a')]],'as':_0xac64e1['as'],'attributes':_0xac64e1[_0x2010('0x18')],'include':_0xac64e1[_0x2010('0x19')]?_[_0x2010('0x1b')](_0xac64e1['include'],function(_0x569e13){return{'model':db[_0x569e13['model']],'as':_0x569e13['as'],'attributes':_0x569e13[_0x2010('0x18')],'include':_0x569e13[_0x2010('0x19')]?_[_0x2010('0x1b')](_0x569e13['include'],function(_0x1f7f49){return{'model':db[_0x1f7f49[_0x2010('0x1a')]],'as':_0x1f7f49['as'],'attributes':_0x1f7f49[_0x2010('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2010('0x8')](function(_0x4f5106){logger[_0x2010('0x9')](_0x2010('0x1d'),_0x136d5f);logger[_0x2010('0xc')]('ShowVtigerAccount',_0x136d5f,JSON[_0x2010('0xe')](_0x4f5106));_0x2839f2(_0x4f5106);})['catch'](function(_0x13f88a){logger[_0x2010('0xf')](_0x2010('0x1d'),_0x13f88a[_0x2010('0x11')],_0x136d5f);_0x1d5d7a(_0x48d9f2[_0x2010('0xf')](0x1f4,_0x13f88a[_0x2010('0x11')]));});});};
\ No newline at end of file
index b6aa063..dedb6d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07b4=['delete','exports','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerConfiguration.controller','index','get','/:id','show','/:id/fields','isAuthenticated','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','update'];(function(_0x22ea66,_0x30123a){var _0x529757=function(_0x2340e){while(--_0x2340e){_0x22ea66['push'](_0x22ea66['shift']());}};_0x529757(++_0x30123a);}(_0x07b4,0x16a));var _0x407b=function(_0x4e5591,_0x47630b){_0x4e5591=_0x4e5591-0x0;var _0x31fa15=_0x07b4[_0x4e5591];return _0x31fa15;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x407b('0x0'));var timeout=require(_0x407b('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x407b('0x2'));var auth=require(_0x407b('0x3'));var interaction=require(_0x407b('0x4'));var config=require('../../config/environment');var controller=require(_0x407b('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x407b('0x6')]);router[_0x407b('0x7')](_0x407b('0x8'),auth['isAuthenticated'](),controller[_0x407b('0x9')]);router['get'](_0x407b('0xa'),auth[_0x407b('0xb')](),controller['getFields']);router[_0x407b('0x7')](_0x407b('0xc'),auth[_0x407b('0xb')](),controller[_0x407b('0xd')]);router['get'](_0x407b('0xe'),auth[_0x407b('0xb')](),controller[_0x407b('0xf')]);router[_0x407b('0x10')]('/',auth[_0x407b('0xb')](),controller['create']);router['put']('/:id',auth[_0x407b('0xb')](),controller[_0x407b('0x11')]);router[_0x407b('0x12')](_0x407b('0x8'),auth[_0x407b('0xb')](),controller['destroy']);module[_0x407b('0x13')]=router;
\ No newline at end of file
+var _0xdf82=['update','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','/:id'];(function(_0x5bc458,_0x288f6b){var _0xb96bf9=function(_0x7e0820){while(--_0x7e0820){_0x5bc458['push'](_0x5bc458['shift']());}};_0xb96bf9(++_0x288f6b);}(_0xdf82,0x1b3));var _0x2df8=function(_0x507ca1,_0x489375){_0x507ca1=_0x507ca1-0x0;var _0x2bbb60=_0xdf82[_0x507ca1];return _0x2bbb60;};'use strict';var multer=require(_0x2df8('0x0'));var util=require(_0x2df8('0x1'));var path=require('path');var timeout=require(_0x2df8('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2df8('0x3'));var auth=require(_0x2df8('0x4'));var interaction=require(_0x2df8('0x5'));var config=require(_0x2df8('0x6'));var controller=require(_0x2df8('0x7'));router[_0x2df8('0x8')]('/',auth[_0x2df8('0x9')](),controller[_0x2df8('0xa')]);router['get']('/:id',auth[_0x2df8('0x9')](),controller[_0x2df8('0xb')]);router[_0x2df8('0x8')](_0x2df8('0xc'),auth[_0x2df8('0x9')](),controller[_0x2df8('0xd')]);router['get'](_0x2df8('0xe'),auth[_0x2df8('0x9')](),controller[_0x2df8('0xf')]);router['get']('/:id/descriptions',auth[_0x2df8('0x9')](),controller[_0x2df8('0x10')]);router[_0x2df8('0x11')]('/',auth[_0x2df8('0x9')](),controller[_0x2df8('0x12')]);router[_0x2df8('0x13')](_0x2df8('0x14'),auth[_0x2df8('0x9')](),controller[_0x2df8('0x15')]);router[_0x2df8('0x16')]('/:id',auth[_0x2df8('0x9')](),controller['destroy']);module[_0x2df8('0x17')]=router;
\ No newline at end of file
index 0b8d9dd..86e1d44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f8d=['exports','STRING','sequelize'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1f8d,0x16d));var _0xd1f8=function(_0x42b088,_0x27c453){_0x42b088=_0x42b088-0x0;var _0x1aa2dd=_0x1f8d[_0x42b088];return _0x1aa2dd;};'use strict';var Sequelize=require(_0xd1f8('0x0'));module[_0xd1f8('0x1')]={'name':{'type':Sequelize[_0xd1f8('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xec06=['sequelize','exports','STRING'];(function(_0x6937af,_0x1e6e2c){var _0x1a3e5f=function(_0x14c1a5){while(--_0x14c1a5){_0x6937af['push'](_0x6937af['shift']());}};_0x1a3e5f(++_0x1e6e2c);}(_0xec06,0xd8));var _0x6ec0=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xec06[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x6ec0('0x0'));module[_0x6ec0('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6ec0('0x2')]}};
\ No newline at end of file
index 5be9ecb..2f59ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa9=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','update','then','destroy','error','stack','name','send','index','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','include','find','create','body','params','findOne','VtigerField','getFields','hasOwnProperty','getSubjects','getDescriptions','pick','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xbaa9,0x188));var _0x9baa=function(_0x389a4b,_0x5970ee){_0x389a4b=_0x389a4b-0x0;var _0x327112=_0xbaa9[_0x389a4b];return _0x327112;};'use strict';var emlformat=require(_0x9baa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9baa('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9baa('0x2'));var BPromise=require(_0x9baa('0x3'));var Mustache=require(_0x9baa('0x4'));var util=require(_0x9baa('0x5'));var path=require(_0x9baa('0x6'));var sox=require(_0x9baa('0x7'));var csv=require('to-csv');var ejs=require(_0x9baa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9baa('0x9'));var squel=require(_0x9baa('0xa'));var crypto=require(_0x9baa('0xb'));var jsforce=require(_0x9baa('0xc'));var deskjs=require(_0x9baa('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9baa('0xe'));var Papa=require(_0x9baa('0xf'));var Redis=require(_0x9baa('0x10'));var authService=require(_0x9baa('0x11'));var qs=require(_0x9baa('0x12'));var as=require(_0x9baa('0x13'));var hardwareService=require(_0x9baa('0x14'));var logger=require(_0x9baa('0x15'))('api');var utils=require(_0x9baa('0x16'));var config=require(_0x9baa('0x17'));var licenseUtil=require(_0x9baa('0x18'));var db=require(_0x9baa('0x19'))['db'];function respondWithStatusCode(_0x26625b,_0x23fafb){_0x23fafb=_0x23fafb||0xcc;return function(_0x476541){if(_0x476541){return _0x26625b[_0x9baa('0x1a')](_0x23fafb);}return _0x26625b[_0x9baa('0x1b')](_0x23fafb)[_0x9baa('0x1c')]();};}function respondWithResult(_0x328aed,_0x3ce189){_0x3ce189=_0x3ce189||0xc8;return function(_0x4800fe){if(_0x4800fe){return _0x328aed[_0x9baa('0x1b')](_0x3ce189)[_0x9baa('0x1d')](_0x4800fe);}};}function respondWithFilteredResult(_0x2bc692,_0x42e0c6){return function(_0x37b43d){if(_0x37b43d){var _0x30e514=typeof _0x42e0c6['offset']==='undefined'&&typeof _0x42e0c6[_0x9baa('0x1e')]===_0x9baa('0x1f');var _0x1e3a68=_0x37b43d[_0x9baa('0x20')];var _0xd18640=_0x30e514?0x0:_0x42e0c6['offset'];var _0x4e806e=_0x30e514?_0x37b43d[_0x9baa('0x20')]:_0x42e0c6[_0x9baa('0x21')]+_0x42e0c6[_0x9baa('0x1e')];var _0x119d80;if(_0x4e806e>=_0x1e3a68){_0x4e806e=_0x1e3a68;_0x119d80=0xc8;}else{_0x119d80=0xce;}_0x2bc692[_0x9baa('0x1b')](_0x119d80);return _0x2bc692[_0x9baa('0x22')](_0x9baa('0x23'),_0xd18640+'-'+_0x4e806e+'/'+_0x1e3a68)[_0x9baa('0x1d')](_0x37b43d);}return null;};}function patchUpdates(_0x15762e){return function(_0x346662){try{jsonpatch[_0x9baa('0x24')](_0x346662,_0x15762e,!![]);}catch(_0x570ca8){return BPromise['reject'](_0x570ca8);}return _0x346662['save']();};}function saveUpdates(_0x492e26,_0x278e34){return function(_0x5c8a80){if(_0x5c8a80){return _0x5c8a80[_0x9baa('0x25')](_0x492e26)[_0x9baa('0x26')](function(_0x193108){return _0x193108;});}return null;};}function removeEntity(_0x12772f,_0x1478ac){return function(_0x42a0b8){if(_0x42a0b8){return _0x42a0b8[_0x9baa('0x27')]()[_0x9baa('0x26')](function(){_0x12772f['status'](0xcc)[_0x9baa('0x1c')]();});}};}function handleEntityNotFound(_0x4efa7d,_0x245b0e){return function(_0x497217){if(!_0x497217){_0x4efa7d[_0x9baa('0x1a')](0x194);}return _0x497217;};}function handleError(_0x14adde,_0x561253){_0x561253=_0x561253||0x1f4;return function(_0x59ceb9){logger[_0x9baa('0x28')](_0x59ceb9[_0x9baa('0x29')]);if(_0x59ceb9[_0x9baa('0x2a')]){delete _0x59ceb9[_0x9baa('0x2a')];}_0x14adde[_0x9baa('0x1b')](_0x561253)[_0x9baa('0x2b')](_0x59ceb9);};}exports[_0x9baa('0x2c')]=function(_0x296151,_0x18ce3){var _0x41154a={},_0x5923d7={},_0x46a536={'count':0x0,'rows':[]};var _0x579e16=_['map'](db[_0x9baa('0x2d')][_0x9baa('0x2e')],function(_0xbb7a91){return{'name':_0xbb7a91[_0x9baa('0x2f')],'type':_0xbb7a91[_0x9baa('0x30')][_0x9baa('0x31')]};});_0x5923d7[_0x9baa('0x32')]=_[_0x9baa('0x33')](_0x579e16,_0x9baa('0x2a'));_0x5923d7[_0x9baa('0x34')]=_[_0x9baa('0x35')](_0x296151['query']);_0x5923d7[_0x9baa('0x36')]=_[_0x9baa('0x37')](_0x5923d7[_0x9baa('0x32')],_0x5923d7[_0x9baa('0x34')]);_0x41154a[_0x9baa('0x38')]=_['intersection'](_0x5923d7[_0x9baa('0x32')],qs[_0x9baa('0x39')](_0x296151[_0x9baa('0x34')]['fields']));_0x41154a[_0x9baa('0x38')]=_0x41154a[_0x9baa('0x38')][_0x9baa('0x3a')]?_0x41154a[_0x9baa('0x38')]:_0x5923d7['model'];if(!_0x296151[_0x9baa('0x34')]['hasOwnProperty'](_0x9baa('0x3b'))){_0x41154a[_0x9baa('0x1e')]=qs['limit'](_0x296151[_0x9baa('0x34')][_0x9baa('0x1e')]);_0x41154a[_0x9baa('0x21')]=qs[_0x9baa('0x21')](_0x296151['query'][_0x9baa('0x21')]);}_0x41154a[_0x9baa('0x3c')]=qs['sort'](_0x296151[_0x9baa('0x34')][_0x9baa('0x3d')]);_0x41154a[_0x9baa('0x3e')]=qs['filters'](_['pick'](_0x296151[_0x9baa('0x34')],_0x5923d7[_0x9baa('0x36')]),_0x579e16);if(_0x296151[_0x9baa('0x34')][_0x9baa('0x3f')]){_0x41154a[_0x9baa('0x3e')]=_[_0x9baa('0x40')](_0x41154a[_0x9baa('0x3e')],{'$or':_[_0x9baa('0x33')](_0x579e16,function(_0x52ac4e){if(_0x52ac4e[_0x9baa('0x30')]!==_0x9baa('0x41')){var _0xb6c456={};_0xb6c456[_0x52ac4e[_0x9baa('0x2a')]]={'$like':'%'+_0x296151[_0x9baa('0x34')][_0x9baa('0x3f')]+'%'};return _0xb6c456;}})});}_0x41154a=_[_0x9baa('0x40')]({},_0x41154a,_0x296151[_0x9baa('0x42')]);var _0xd967e5={'where':_0x41154a['where']};return db[_0x9baa('0x2d')][_0x9baa('0x20')](_0xd967e5)[_0x9baa('0x26')](function(_0x363680){_0x46a536[_0x9baa('0x20')]=_0x363680;if(_0x296151['query'][_0x9baa('0x43')]){_0x41154a['include']=[{'all':!![]}];}return db['VtigerConfiguration']['findAll'](_0x41154a);})[_0x9baa('0x26')](function(_0x3ac8dc){_0x46a536[_0x9baa('0x44')]=_0x3ac8dc;return _0x46a536;})[_0x9baa('0x26')](respondWithFilteredResult(_0x18ce3,_0x41154a))[_0x9baa('0x45')](handleError(_0x18ce3,null));};exports['show']=function(_0x7e537,_0x31412c){var _0x55e8c6={'raw':![],'where':{'id':_0x7e537['params']['id']}},_0x585dff={};_0x585dff[_0x9baa('0x32')]=_[_0x9baa('0x35')](db['VtigerConfiguration'][_0x9baa('0x2e')]);_0x585dff['query']=_['keys'](_0x7e537[_0x9baa('0x34')]);_0x585dff[_0x9baa('0x36')]=_['intersection'](_0x585dff[_0x9baa('0x32')],_0x585dff[_0x9baa('0x34')]);_0x55e8c6['attributes']=_[_0x9baa('0x37')](_0x585dff[_0x9baa('0x32')],qs[_0x9baa('0x39')](_0x7e537[_0x9baa('0x34')][_0x9baa('0x39')]));_0x55e8c6[_0x9baa('0x38')]=_0x55e8c6[_0x9baa('0x38')][_0x9baa('0x3a')]?_0x55e8c6[_0x9baa('0x38')]:_0x585dff[_0x9baa('0x32')];if(_0x7e537[_0x9baa('0x34')][_0x9baa('0x43')]){_0x55e8c6[_0x9baa('0x46')]=[{'all':!![]}];}_0x55e8c6=_[_0x9baa('0x40')]({},_0x55e8c6,_0x7e537['options']);return db[_0x9baa('0x2d')][_0x9baa('0x47')](_0x55e8c6)[_0x9baa('0x26')](handleEntityNotFound(_0x31412c,null))[_0x9baa('0x26')](respondWithResult(_0x31412c,null))[_0x9baa('0x45')](handleError(_0x31412c,null));};exports[_0x9baa('0x48')]=function(_0x3af066,_0x8b08ea){return db[_0x9baa('0x2d')][_0x9baa('0x48')](_0x3af066[_0x9baa('0x49')],{})[_0x9baa('0x26')](respondWithResult(_0x8b08ea,0xc9))[_0x9baa('0x45')](handleError(_0x8b08ea,null));};exports[_0x9baa('0x25')]=function(_0x19bb77,_0x56528d){if(_0x19bb77[_0x9baa('0x49')]['id']){delete _0x19bb77[_0x9baa('0x49')]['id'];}return db['VtigerConfiguration'][_0x9baa('0x47')]({'where':{'id':_0x19bb77['params']['id']}})['then'](handleEntityNotFound(_0x56528d,null))[_0x9baa('0x26')](saveUpdates(_0x19bb77[_0x9baa('0x49')],null))[_0x9baa('0x26')](respondWithResult(_0x56528d,null))[_0x9baa('0x45')](handleError(_0x56528d,null));};exports[_0x9baa('0x27')]=function(_0x399705,_0xca4af8){return db['VtigerConfiguration'][_0x9baa('0x47')]({'where':{'id':_0x399705[_0x9baa('0x4a')]['id']}})[_0x9baa('0x26')](handleEntityNotFound(_0xca4af8,null))[_0x9baa('0x26')](removeEntity(_0xca4af8,null))[_0x9baa('0x45')](handleError(_0xca4af8,null));};exports['getFields']=function(_0x2f8ee7,_0x5f1ed3,_0xa66eb9){var _0x3b6213={};var _0xc3e5e8={};var _0x54d5a7;var _0x286504;return db['VtigerConfiguration'][_0x9baa('0x4b')]({'where':{'id':_0x2f8ee7['params']['id']}})[_0x9baa('0x26')](handleEntityNotFound(_0x5f1ed3,null))['then'](function(_0x4619b4){if(_0x4619b4){_0x54d5a7=_0x4619b4;_0xc3e5e8['model']=_[_0x9baa('0x35')](db[_0x9baa('0x4c')][_0x9baa('0x2e')]);_0xc3e5e8[_0x9baa('0x34')]=_[_0x9baa('0x35')](_0x2f8ee7[_0x9baa('0x34')]);_0xc3e5e8[_0x9baa('0x36')]=_[_0x9baa('0x37')](_0xc3e5e8['model'],_0xc3e5e8[_0x9baa('0x34')]);_0x3b6213[_0x9baa('0x38')]=_[_0x9baa('0x37')](_0xc3e5e8[_0x9baa('0x32')],qs[_0x9baa('0x39')](_0x2f8ee7['query'][_0x9baa('0x39')]));_0x3b6213['attributes']=_0x3b6213['attributes'][_0x9baa('0x3a')]?_0x3b6213[_0x9baa('0x38')]:_0xc3e5e8[_0x9baa('0x32')];_0x3b6213['order']=qs[_0x9baa('0x3d')](_0x2f8ee7[_0x9baa('0x34')]['sort']);_0x3b6213[_0x9baa('0x3e')]=qs[_0x9baa('0x36')](_['pick'](_0x2f8ee7[_0x9baa('0x34')],_0xc3e5e8[_0x9baa('0x36')]));if(_0x2f8ee7[_0x9baa('0x34')][_0x9baa('0x3f')]){_0x3b6213[_0x9baa('0x3e')]=_[_0x9baa('0x40')](_0x3b6213[_0x9baa('0x3e')],{'$or':_[_0x9baa('0x33')](_0x3b6213[_0x9baa('0x38')],function(_0xa774ba){var _0xfb6baf={};_0xfb6baf[_0xa774ba]={'$like':'%'+_0x2f8ee7[_0x9baa('0x34')][_0x9baa('0x3f')]+'%'};return _0xfb6baf;})});}_0x3b6213=_['merge']({},_0x3b6213,_0x2f8ee7[_0x9baa('0x42')]);return _0x54d5a7[_0x9baa('0x4d')](_0x3b6213);}})[_0x9baa('0x26')](function(_0x4dfab0){if(_0x4dfab0){_0x286504=_0x4dfab0[_0x9baa('0x3a')];if(!_0x2f8ee7[_0x9baa('0x34')][_0x9baa('0x4e')](_0x9baa('0x3b'))){_0x3b6213[_0x9baa('0x1e')]=qs[_0x9baa('0x1e')](_0x2f8ee7[_0x9baa('0x34')][_0x9baa('0x1e')]);_0x3b6213[_0x9baa('0x21')]=qs[_0x9baa('0x21')](_0x2f8ee7[_0x9baa('0x34')][_0x9baa('0x21')]);}return _0x54d5a7[_0x9baa('0x4d')](_0x3b6213);}})[_0x9baa('0x26')](function(_0x259721){if(_0x259721){return _0x259721?{'count':_0x286504,'rows':_0x259721}:null;}})['then'](respondWithResult(_0x5f1ed3,null))[_0x9baa('0x45')](handleError(_0x5f1ed3,null));};exports[_0x9baa('0x4f')]=function(_0x2595ec,_0x375b87,_0x30cd35){var _0x564b16={};var _0x5a564e={};var _0x1ccccb;var _0x2f5764;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x2595ec[_0x9baa('0x4a')]['id']}})[_0x9baa('0x26')](handleEntityNotFound(_0x375b87,null))[_0x9baa('0x26')](function(_0x2a94f5){if(_0x2a94f5){_0x1ccccb=_0x2a94f5;_0x5a564e[_0x9baa('0x32')]=_['keys'](db[_0x9baa('0x4c')][_0x9baa('0x2e')]);_0x5a564e['query']=_['keys'](_0x2595ec[_0x9baa('0x34')]);_0x5a564e[_0x9baa('0x36')]=_[_0x9baa('0x37')](_0x5a564e[_0x9baa('0x32')],_0x5a564e[_0x9baa('0x34')]);_0x564b16[_0x9baa('0x38')]=_['intersection'](_0x5a564e['model'],qs['fields'](_0x2595ec[_0x9baa('0x34')][_0x9baa('0x39')]));_0x564b16[_0x9baa('0x38')]=_0x564b16['attributes']['length']?_0x564b16[_0x9baa('0x38')]:_0x5a564e[_0x9baa('0x32')];_0x564b16[_0x9baa('0x3c')]=qs[_0x9baa('0x3d')](_0x2595ec['query']['sort']);_0x564b16[_0x9baa('0x3e')]=qs[_0x9baa('0x36')](_['pick'](_0x2595ec[_0x9baa('0x34')],_0x5a564e['filters']));if(_0x2595ec[_0x9baa('0x34')][_0x9baa('0x3f')]){_0x564b16[_0x9baa('0x3e')]=_[_0x9baa('0x40')](_0x564b16[_0x9baa('0x3e')],{'$or':_[_0x9baa('0x33')](_0x564b16['attributes'],function(_0x575b18){var _0x475522={};_0x475522[_0x575b18]={'$like':'%'+_0x2595ec[_0x9baa('0x34')][_0x9baa('0x3f')]+'%'};return _0x475522;})});}_0x564b16=_[_0x9baa('0x40')]({},_0x564b16,_0x2595ec['options']);return _0x1ccccb[_0x9baa('0x4f')](_0x564b16);}})[_0x9baa('0x26')](function(_0x3fed8d){if(_0x3fed8d){_0x2f5764=_0x3fed8d[_0x9baa('0x3a')];if(!_0x2595ec[_0x9baa('0x34')]['hasOwnProperty'](_0x9baa('0x3b'))){_0x564b16['limit']=qs[_0x9baa('0x1e')](_0x2595ec[_0x9baa('0x34')][_0x9baa('0x1e')]);_0x564b16[_0x9baa('0x21')]=qs['offset'](_0x2595ec[_0x9baa('0x34')][_0x9baa('0x21')]);}return _0x1ccccb[_0x9baa('0x4f')](_0x564b16);}})['then'](function(_0x3aac5b){if(_0x3aac5b){return _0x3aac5b?{'count':_0x2f5764,'rows':_0x3aac5b}:null;}})[_0x9baa('0x26')](respondWithResult(_0x375b87,null))['catch'](handleError(_0x375b87,null));};exports[_0x9baa('0x50')]=function(_0x140221,_0x12f6bf,_0x5cd0e8){var _0x1728a9={};var _0x141fc6={};var _0x28fc5e;var _0x11d4aa;return db[_0x9baa('0x2d')][_0x9baa('0x4b')]({'where':{'id':_0x140221[_0x9baa('0x4a')]['id']}})[_0x9baa('0x26')](handleEntityNotFound(_0x12f6bf,null))[_0x9baa('0x26')](function(_0xfb24ef){if(_0xfb24ef){_0x28fc5e=_0xfb24ef;_0x141fc6[_0x9baa('0x32')]=_['keys'](db[_0x9baa('0x4c')]['rawAttributes']);_0x141fc6[_0x9baa('0x34')]=_['keys'](_0x140221[_0x9baa('0x34')]);_0x141fc6[_0x9baa('0x36')]=_[_0x9baa('0x37')](_0x141fc6[_0x9baa('0x32')],_0x141fc6[_0x9baa('0x34')]);_0x1728a9[_0x9baa('0x38')]=_[_0x9baa('0x37')](_0x141fc6[_0x9baa('0x32')],qs['fields'](_0x140221[_0x9baa('0x34')][_0x9baa('0x39')]));_0x1728a9[_0x9baa('0x38')]=_0x1728a9['attributes'][_0x9baa('0x3a')]?_0x1728a9['attributes']:_0x141fc6['model'];_0x1728a9[_0x9baa('0x3c')]=qs[_0x9baa('0x3d')](_0x140221[_0x9baa('0x34')][_0x9baa('0x3d')]);_0x1728a9[_0x9baa('0x3e')]=qs[_0x9baa('0x36')](_[_0x9baa('0x51')](_0x140221[_0x9baa('0x34')],_0x141fc6['filters']));if(_0x140221[_0x9baa('0x34')][_0x9baa('0x3f')]){_0x1728a9[_0x9baa('0x3e')]=_[_0x9baa('0x40')](_0x1728a9['where'],{'$or':_['map'](_0x1728a9[_0x9baa('0x38')],function(_0x290363){var _0x47ea4c={};_0x47ea4c[_0x290363]={'$like':'%'+_0x140221[_0x9baa('0x34')][_0x9baa('0x3f')]+'%'};return _0x47ea4c;})});}_0x1728a9=_[_0x9baa('0x40')]({},_0x1728a9,_0x140221[_0x9baa('0x42')]);return _0x28fc5e[_0x9baa('0x50')](_0x1728a9);}})[_0x9baa('0x26')](function(_0x14def2){if(_0x14def2){_0x11d4aa=_0x14def2['length'];if(!_0x140221[_0x9baa('0x34')][_0x9baa('0x4e')](_0x9baa('0x3b'))){_0x1728a9[_0x9baa('0x1e')]=qs[_0x9baa('0x1e')](_0x140221[_0x9baa('0x34')][_0x9baa('0x1e')]);_0x1728a9[_0x9baa('0x21')]=qs[_0x9baa('0x21')](_0x140221[_0x9baa('0x34')][_0x9baa('0x21')]);}return _0x28fc5e[_0x9baa('0x50')](_0x1728a9);}})['then'](function(_0x560ec1){if(_0x560ec1){return _0x560ec1?{'count':_0x11d4aa,'rows':_0x560ec1}:null;}})[_0x9baa('0x26')](respondWithResult(_0x12f6bf,null))['catch'](handleError(_0x12f6bf,null));};
\ No newline at end of file
+var _0x6985=['order','where','filters','pick','filter','VIRTUAL','merge','include','catch','params','keys','length','includeAll','find','create','body','destroy','getFields','findOne','VtigerField','sort','options','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','reject','save','update','then','error','stack','name','send','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','query','intersection','fields','attributes','hasOwnProperty'];(function(_0x2828df,_0x740896){var _0x490604=function(_0x10ffb2){while(--_0x10ffb2){_0x2828df['push'](_0x2828df['shift']());}};_0x490604(++_0x740896);}(_0x6985,0x67));var _0x5698=function(_0x5a35ab,_0x43baa7){_0x5a35ab=_0x5a35ab-0x0;var _0x21d102=_0x6985[_0x5a35ab];return _0x21d102;};'use strict';var emlformat=require(_0x5698('0x0'));var rimraf=require(_0x5698('0x1'));var zipdir=require(_0x5698('0x2'));var jsonpatch=require(_0x5698('0x3'));var rp=require(_0x5698('0x4'));var moment=require(_0x5698('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5698('0x6'));var util=require(_0x5698('0x7'));var path=require(_0x5698('0x8'));var sox=require(_0x5698('0x9'));var csv=require('to-csv');var ejs=require(_0x5698('0xa'));var fs=require('fs');var fs_extra=require(_0x5698('0xb'));var _=require(_0x5698('0xc'));var squel=require(_0x5698('0xd'));var crypto=require(_0x5698('0xe'));var jsforce=require(_0x5698('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5698('0x10'));var querystring=require(_0x5698('0x11'));var Papa=require(_0x5698('0x12'));var Redis=require(_0x5698('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x5698('0x14'));var as=require(_0x5698('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x5698('0x16'));var licenseUtil=require(_0x5698('0x17'));var db=require(_0x5698('0x18'))['db'];function respondWithStatusCode(_0xc34166,_0x4c3044){_0x4c3044=_0x4c3044||0xcc;return function(_0xf06f06){if(_0xf06f06){return _0xc34166[_0x5698('0x19')](_0x4c3044);}return _0xc34166['status'](_0x4c3044)[_0x5698('0x1a')]();};}function respondWithResult(_0x181be8,_0x2563b7){_0x2563b7=_0x2563b7||0xc8;return function(_0x2ff1f4){if(_0x2ff1f4){return _0x181be8['status'](_0x2563b7)['json'](_0x2ff1f4);}};}function respondWithFilteredResult(_0x34e336,_0x5ea018){return function(_0x3aa8e0){if(_0x3aa8e0){var _0x271a7f=typeof _0x5ea018[_0x5698('0x1b')]===_0x5698('0x1c')&&typeof _0x5ea018[_0x5698('0x1d')]===_0x5698('0x1c');var _0x1555c0=_0x3aa8e0[_0x5698('0x1e')];var _0x920be0=_0x271a7f?0x0:_0x5ea018[_0x5698('0x1b')];var _0x3f7a98=_0x271a7f?_0x3aa8e0[_0x5698('0x1e')]:_0x5ea018[_0x5698('0x1b')]+_0x5ea018['limit'];var _0x6d9b42;if(_0x3f7a98>=_0x1555c0){_0x3f7a98=_0x1555c0;_0x6d9b42=0xc8;}else{_0x6d9b42=0xce;}_0x34e336[_0x5698('0x1f')](_0x6d9b42);return _0x34e336[_0x5698('0x20')]('Content-Range',_0x920be0+'-'+_0x3f7a98+'/'+_0x1555c0)['json'](_0x3aa8e0);}return null;};}function patchUpdates(_0xb54f35){return function(_0x40d20e){try{jsonpatch['apply'](_0x40d20e,_0xb54f35,!![]);}catch(_0x4857b3){return BPromise[_0x5698('0x21')](_0x4857b3);}return _0x40d20e[_0x5698('0x22')]();};}function saveUpdates(_0x45d44a,_0x18bc24){return function(_0x6079d6){if(_0x6079d6){return _0x6079d6[_0x5698('0x23')](_0x45d44a)[_0x5698('0x24')](function(_0x102b34){return _0x102b34;});}return null;};}function removeEntity(_0x14fa0a,_0x22a862){return function(_0x3baa40){if(_0x3baa40){return _0x3baa40['destroy']()['then'](function(){_0x14fa0a[_0x5698('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4bb0c7,_0x2e496e){return function(_0x53e77a){if(!_0x53e77a){_0x4bb0c7['sendStatus'](0x194);}return _0x53e77a;};}function handleError(_0x54cf0b,_0x31b4ad){_0x31b4ad=_0x31b4ad||0x1f4;return function(_0x28d630){logger[_0x5698('0x25')](_0x28d630[_0x5698('0x26')]);if(_0x28d630['name']){delete _0x28d630[_0x5698('0x27')];}_0x54cf0b[_0x5698('0x1f')](_0x31b4ad)[_0x5698('0x28')](_0x28d630);};}exports['index']=function(_0x58e9bb,_0x36177e){var _0x503262={},_0xfea92c={},_0x5aaa3a={'count':0x0,'rows':[]};var _0x28c8c4=_['map'](db[_0x5698('0x29')][_0x5698('0x2a')],function(_0x35692b){return{'name':_0x35692b[_0x5698('0x2b')],'type':_0x35692b[_0x5698('0x2c')][_0x5698('0x2d')]};});_0xfea92c[_0x5698('0x2e')]=_[_0x5698('0x2f')](_0x28c8c4,_0x5698('0x27'));_0xfea92c[_0x5698('0x30')]=_['keys'](_0x58e9bb[_0x5698('0x30')]);_0xfea92c['filters']=_[_0x5698('0x31')](_0xfea92c[_0x5698('0x2e')],_0xfea92c['query']);_0x503262['attributes']=_['intersection'](_0xfea92c[_0x5698('0x2e')],qs[_0x5698('0x32')](_0x58e9bb['query'][_0x5698('0x32')]));_0x503262[_0x5698('0x33')]=_0x503262[_0x5698('0x33')]['length']?_0x503262[_0x5698('0x33')]:_0xfea92c[_0x5698('0x2e')];if(!_0x58e9bb[_0x5698('0x30')][_0x5698('0x34')]('nolimit')){_0x503262[_0x5698('0x1d')]=qs[_0x5698('0x1d')](_0x58e9bb[_0x5698('0x30')][_0x5698('0x1d')]);_0x503262[_0x5698('0x1b')]=qs[_0x5698('0x1b')](_0x58e9bb['query'][_0x5698('0x1b')]);}_0x503262[_0x5698('0x35')]=qs['sort'](_0x58e9bb['query']['sort']);_0x503262[_0x5698('0x36')]=qs[_0x5698('0x37')](_[_0x5698('0x38')](_0x58e9bb['query'],_0xfea92c[_0x5698('0x37')]),_0x28c8c4);if(_0x58e9bb[_0x5698('0x30')][_0x5698('0x39')]){_0x503262[_0x5698('0x36')]=_['merge'](_0x503262['where'],{'$or':_[_0x5698('0x2f')](_0x28c8c4,function(_0x739766){if(_0x739766['type']!==_0x5698('0x3a')){var _0x1f9142={};_0x1f9142[_0x739766[_0x5698('0x27')]]={'$like':'%'+_0x58e9bb['query'][_0x5698('0x39')]+'%'};return _0x1f9142;}})});}_0x503262=_[_0x5698('0x3b')]({},_0x503262,_0x58e9bb['options']);var _0x2acb4a={'where':_0x503262[_0x5698('0x36')]};return db[_0x5698('0x29')]['count'](_0x2acb4a)[_0x5698('0x24')](function(_0xea48d1){_0x5aaa3a['count']=_0xea48d1;if(_0x58e9bb['query']['includeAll']){_0x503262[_0x5698('0x3c')]=[{'all':!![]}];}return db[_0x5698('0x29')]['findAll'](_0x503262);})[_0x5698('0x24')](function(_0x50a5ef){_0x5aaa3a['rows']=_0x50a5ef;return _0x5aaa3a;})[_0x5698('0x24')](respondWithFilteredResult(_0x36177e,_0x503262))[_0x5698('0x3d')](handleError(_0x36177e,null));};exports['show']=function(_0x48343b,_0x5151ea){var _0xc107a9={'raw':![],'where':{'id':_0x48343b[_0x5698('0x3e')]['id']}},_0x40ff8e={};_0x40ff8e[_0x5698('0x2e')]=_[_0x5698('0x3f')](db[_0x5698('0x29')][_0x5698('0x2a')]);_0x40ff8e[_0x5698('0x30')]=_['keys'](_0x48343b[_0x5698('0x30')]);_0x40ff8e[_0x5698('0x37')]=_[_0x5698('0x31')](_0x40ff8e[_0x5698('0x2e')],_0x40ff8e['query']);_0xc107a9[_0x5698('0x33')]=_[_0x5698('0x31')](_0x40ff8e[_0x5698('0x2e')],qs[_0x5698('0x32')](_0x48343b[_0x5698('0x30')][_0x5698('0x32')]));_0xc107a9[_0x5698('0x33')]=_0xc107a9[_0x5698('0x33')][_0x5698('0x40')]?_0xc107a9[_0x5698('0x33')]:_0x40ff8e[_0x5698('0x2e')];if(_0x48343b[_0x5698('0x30')][_0x5698('0x41')]){_0xc107a9['include']=[{'all':!![]}];}_0xc107a9=_[_0x5698('0x3b')]({},_0xc107a9,_0x48343b['options']);return db[_0x5698('0x29')][_0x5698('0x42')](_0xc107a9)[_0x5698('0x24')](handleEntityNotFound(_0x5151ea,null))[_0x5698('0x24')](respondWithResult(_0x5151ea,null))['catch'](handleError(_0x5151ea,null));};exports['create']=function(_0x4e1dd5,_0x135039){return db[_0x5698('0x29')][_0x5698('0x43')](_0x4e1dd5['body'],{})[_0x5698('0x24')](respondWithResult(_0x135039,0xc9))[_0x5698('0x3d')](handleError(_0x135039,null));};exports['update']=function(_0x57ca1c,_0x1dcccd){if(_0x57ca1c[_0x5698('0x44')]['id']){delete _0x57ca1c['body']['id'];}return db[_0x5698('0x29')]['find']({'where':{'id':_0x57ca1c[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x1dcccd,null))['then'](saveUpdates(_0x57ca1c[_0x5698('0x44')],null))[_0x5698('0x24')](respondWithResult(_0x1dcccd,null))[_0x5698('0x3d')](handleError(_0x1dcccd,null));};exports[_0x5698('0x45')]=function(_0x1ed756,_0x26f02c){return db[_0x5698('0x29')][_0x5698('0x42')]({'where':{'id':_0x1ed756[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x26f02c,null))[_0x5698('0x24')](removeEntity(_0x26f02c,null))['catch'](handleError(_0x26f02c,null));};exports[_0x5698('0x46')]=function(_0x1947f7,_0x314164,_0x40dc13){var _0x471adf={};var _0x462853={};var _0x507967;var _0x1fdb86;return db[_0x5698('0x29')][_0x5698('0x47')]({'where':{'id':_0x1947f7['params']['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x314164,null))[_0x5698('0x24')](function(_0x3033ab){if(_0x3033ab){_0x507967=_0x3033ab;_0x462853[_0x5698('0x2e')]=_[_0x5698('0x3f')](db[_0x5698('0x48')][_0x5698('0x2a')]);_0x462853[_0x5698('0x30')]=_[_0x5698('0x3f')](_0x1947f7[_0x5698('0x30')]);_0x462853[_0x5698('0x37')]=_['intersection'](_0x462853[_0x5698('0x2e')],_0x462853['query']);_0x471adf[_0x5698('0x33')]=_[_0x5698('0x31')](_0x462853['model'],qs[_0x5698('0x32')](_0x1947f7[_0x5698('0x30')][_0x5698('0x32')]));_0x471adf[_0x5698('0x33')]=_0x471adf[_0x5698('0x33')][_0x5698('0x40')]?_0x471adf[_0x5698('0x33')]:_0x462853['model'];_0x471adf['order']=qs[_0x5698('0x49')](_0x1947f7[_0x5698('0x30')][_0x5698('0x49')]);_0x471adf[_0x5698('0x36')]=qs[_0x5698('0x37')](_[_0x5698('0x38')](_0x1947f7[_0x5698('0x30')],_0x462853[_0x5698('0x37')]));if(_0x1947f7[_0x5698('0x30')]['filter']){_0x471adf['where']=_[_0x5698('0x3b')](_0x471adf['where'],{'$or':_['map'](_0x471adf[_0x5698('0x33')],function(_0x59ca32){var _0x2353fa={};_0x2353fa[_0x59ca32]={'$like':'%'+_0x1947f7[_0x5698('0x30')][_0x5698('0x39')]+'%'};return _0x2353fa;})});}_0x471adf=_[_0x5698('0x3b')]({},_0x471adf,_0x1947f7[_0x5698('0x4a')]);return _0x507967[_0x5698('0x46')](_0x471adf);}})[_0x5698('0x24')](function(_0x774d9){if(_0x774d9){_0x1fdb86=_0x774d9[_0x5698('0x40')];if(!_0x1947f7['query']['hasOwnProperty'](_0x5698('0x4b'))){_0x471adf[_0x5698('0x1d')]=qs[_0x5698('0x1d')](_0x1947f7[_0x5698('0x30')]['limit']);_0x471adf[_0x5698('0x1b')]=qs[_0x5698('0x1b')](_0x1947f7[_0x5698('0x30')]['offset']);}return _0x507967['getFields'](_0x471adf);}})[_0x5698('0x24')](function(_0x3e53e4){if(_0x3e53e4){return _0x3e53e4?{'count':_0x1fdb86,'rows':_0x3e53e4}:null;}})[_0x5698('0x24')](respondWithResult(_0x314164,null))[_0x5698('0x3d')](handleError(_0x314164,null));};exports[_0x5698('0x4c')]=function(_0x1c3b5b,_0x3dbc27,_0x1fc222){var _0x1e4fe1={};var _0x229ce1={};var _0x34cb1d;var _0x18cd47;return db[_0x5698('0x29')][_0x5698('0x47')]({'where':{'id':_0x1c3b5b[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x3dbc27,null))[_0x5698('0x24')](function(_0x1bfac4){if(_0x1bfac4){_0x34cb1d=_0x1bfac4;_0x229ce1[_0x5698('0x2e')]=_[_0x5698('0x3f')](db[_0x5698('0x48')][_0x5698('0x2a')]);_0x229ce1[_0x5698('0x30')]=_[_0x5698('0x3f')](_0x1c3b5b['query']);_0x229ce1['filters']=_[_0x5698('0x31')](_0x229ce1[_0x5698('0x2e')],_0x229ce1[_0x5698('0x30')]);_0x1e4fe1[_0x5698('0x33')]=_[_0x5698('0x31')](_0x229ce1[_0x5698('0x2e')],qs['fields'](_0x1c3b5b[_0x5698('0x30')][_0x5698('0x32')]));_0x1e4fe1[_0x5698('0x33')]=_0x1e4fe1[_0x5698('0x33')][_0x5698('0x40')]?_0x1e4fe1[_0x5698('0x33')]:_0x229ce1[_0x5698('0x2e')];_0x1e4fe1[_0x5698('0x35')]=qs[_0x5698('0x49')](_0x1c3b5b[_0x5698('0x30')]['sort']);_0x1e4fe1[_0x5698('0x36')]=qs['filters'](_[_0x5698('0x38')](_0x1c3b5b[_0x5698('0x30')],_0x229ce1[_0x5698('0x37')]));if(_0x1c3b5b[_0x5698('0x30')][_0x5698('0x39')]){_0x1e4fe1[_0x5698('0x36')]=_[_0x5698('0x3b')](_0x1e4fe1['where'],{'$or':_[_0x5698('0x2f')](_0x1e4fe1['attributes'],function(_0x2f64ec){var _0x3ce3e0={};_0x3ce3e0[_0x2f64ec]={'$like':'%'+_0x1c3b5b[_0x5698('0x30')][_0x5698('0x39')]+'%'};return _0x3ce3e0;})});}_0x1e4fe1=_['merge']({},_0x1e4fe1,_0x1c3b5b['options']);return _0x34cb1d['getSubjects'](_0x1e4fe1);}})[_0x5698('0x24')](function(_0x75b427){if(_0x75b427){_0x18cd47=_0x75b427[_0x5698('0x40')];if(!_0x1c3b5b[_0x5698('0x30')]['hasOwnProperty']('nolimit')){_0x1e4fe1[_0x5698('0x1d')]=qs[_0x5698('0x1d')](_0x1c3b5b['query']['limit']);_0x1e4fe1[_0x5698('0x1b')]=qs[_0x5698('0x1b')](_0x1c3b5b[_0x5698('0x30')][_0x5698('0x1b')]);}return _0x34cb1d[_0x5698('0x4c')](_0x1e4fe1);}})[_0x5698('0x24')](function(_0x4214bc){if(_0x4214bc){return _0x4214bc?{'count':_0x18cd47,'rows':_0x4214bc}:null;}})[_0x5698('0x24')](respondWithResult(_0x3dbc27,null))['catch'](handleError(_0x3dbc27,null));};exports['getDescriptions']=function(_0x390e60,_0x1ce4d9,_0x2b63da){var _0x475d08={};var _0x27c9cd={};var _0x3a573e;var _0x5cfdd3;return db[_0x5698('0x29')][_0x5698('0x47')]({'where':{'id':_0x390e60[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x1ce4d9,null))['then'](function(_0x5e63e2){if(_0x5e63e2){_0x3a573e=_0x5e63e2;_0x27c9cd[_0x5698('0x2e')]=_['keys'](db[_0x5698('0x48')][_0x5698('0x2a')]);_0x27c9cd[_0x5698('0x30')]=_[_0x5698('0x3f')](_0x390e60[_0x5698('0x30')]);_0x27c9cd['filters']=_[_0x5698('0x31')](_0x27c9cd['model'],_0x27c9cd['query']);_0x475d08['attributes']=_[_0x5698('0x31')](_0x27c9cd['model'],qs[_0x5698('0x32')](_0x390e60[_0x5698('0x30')][_0x5698('0x32')]));_0x475d08['attributes']=_0x475d08['attributes'][_0x5698('0x40')]?_0x475d08[_0x5698('0x33')]:_0x27c9cd[_0x5698('0x2e')];_0x475d08[_0x5698('0x35')]=qs[_0x5698('0x49')](_0x390e60['query'][_0x5698('0x49')]);_0x475d08[_0x5698('0x36')]=qs[_0x5698('0x37')](_['pick'](_0x390e60[_0x5698('0x30')],_0x27c9cd[_0x5698('0x37')]));if(_0x390e60['query']['filter']){_0x475d08[_0x5698('0x36')]=_['merge'](_0x475d08[_0x5698('0x36')],{'$or':_[_0x5698('0x2f')](_0x475d08[_0x5698('0x33')],function(_0x313098){var _0x49de71={};_0x49de71[_0x313098]={'$like':'%'+_0x390e60[_0x5698('0x30')][_0x5698('0x39')]+'%'};return _0x49de71;})});}_0x475d08=_[_0x5698('0x3b')]({},_0x475d08,_0x390e60[_0x5698('0x4a')]);return _0x3a573e[_0x5698('0x4d')](_0x475d08);}})[_0x5698('0x24')](function(_0x198ec1){if(_0x198ec1){_0x5cfdd3=_0x198ec1[_0x5698('0x40')];if(!_0x390e60[_0x5698('0x30')][_0x5698('0x34')](_0x5698('0x4b'))){_0x475d08['limit']=qs[_0x5698('0x1d')](_0x390e60['query'][_0x5698('0x1d')]);_0x475d08[_0x5698('0x1b')]=qs['offset'](_0x390e60[_0x5698('0x30')]['offset']);}return _0x3a573e[_0x5698('0x4d')](_0x475d08);}})[_0x5698('0x24')](function(_0x1e7722){if(_0x1e7722){return _0x1e7722?{'count':_0x5cfdd3,'rows':_0x1e7722}:null;}})[_0x5698('0x24')](respondWithResult(_0x1ce4d9,null))[_0x5698('0x3d')](handleError(_0x1ce4d9,null));};
\ No newline at end of file
index c22aee1..abe6d25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ec=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','int_vtiger_configurations','lodash'];(function(_0x163ebb,_0x12848e){var _0x24675d=function(_0x2ad7d0){while(--_0x2ad7d0){_0x163ebb['push'](_0x163ebb['shift']());}};_0x24675d(++_0x12848e);}(_0xa2ec,0xed));var _0xca2e=function(_0x4864ea,_0x7764ed){_0x4864ea=_0x4864ea-0x0;var _0x12e74f=_0xa2ec[_0x4864ea];return _0x12e74f;};'use strict';var _=require(_0xca2e('0x0'));var util=require(_0xca2e('0x1'));var logger=require(_0xca2e('0x2'))(_0xca2e('0x3'));var moment=require(_0xca2e('0x4'));var BPromise=require(_0xca2e('0x5'));var rp=require(_0xca2e('0x6'));var fs=require('fs');var path=require(_0xca2e('0x7'));var rimraf=require('rimraf');var config=require(_0xca2e('0x8'));var attributes=require(_0xca2e('0x9'));module[_0xca2e('0xa')]=function(_0x3c6812,_0x54ccb8){return _0x3c6812[_0xca2e('0xb')](_0xca2e('0xc'),attributes,{'tableName':_0xca2e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x395d=['rimraf','../../config/environment','./intVtigerConfiguration.attributes','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','moment','request-promise'];(function(_0xb1b986,_0x2ca8d8){var _0x4b7144=function(_0x43632c){while(--_0x43632c){_0xb1b986['push'](_0xb1b986['shift']());}};_0x4b7144(++_0x2ca8d8);}(_0x395d,0x1c7));var _0xd395=function(_0x4a4906,_0x33ada5){_0x4a4906=_0x4a4906-0x0;var _0x23607c=_0x395d[_0x4a4906];return _0x23607c;};'use strict';var _=require(_0xd395('0x0'));var util=require(_0xd395('0x1'));var logger=require(_0xd395('0x2'))('api');var moment=require(_0xd395('0x3'));var BPromise=require('bluebird');var rp=require(_0xd395('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd395('0x5'));var config=require(_0xd395('0x6'));var attributes=require(_0xd395('0x7'));module['exports']=function(_0x14029a,_0x28c930){return _0x14029a['define'](_0xd395('0x8'),attributes,{'tableName':_0xd395('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ccaf30..82fb342 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3980=['request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s'];(function(_0xb1cf84,_0x813740){var _0x4bad2e=function(_0x53e6f2){while(--_0x53e6f2){_0xb1cf84['push'](_0xb1cf84['shift']());}};_0x4bad2e(++_0x813740);}(_0x3980,0x189));var _0x0398=function(_0x4b48b5,_0x2d78ec){_0x4b48b5=_0x4b48b5-0x0;var _0x21e2cb=_0x3980[_0x4b48b5];return _0x21e2cb;};'use strict';var _=require(_0x0398('0x0'));var util=require(_0x0398('0x1'));var moment=require(_0x0398('0x2'));var BPromise=require(_0x0398('0x3'));var rs=require(_0x0398('0x4'));var fs=require('fs');var Redis=require(_0x0398('0x5'));var db=require(_0x0398('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0398('0x7'));var config=require(_0x0398('0x8'));var jayson=require(_0x0398('0x9'));var client=jayson['client'][_0x0398('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2613a9,_0x3d9f94,_0x3b6552){return new BPromise(function(_0x170674,_0x2adcdc){return client[_0x0398('0xb')](_0x2613a9,_0x3b6552)[_0x0398('0xc')](function(_0x5684c1){logger[_0x0398('0xd')](_0x0398('0xe'),_0x3d9f94,_0x0398('0xf'));logger[_0x0398('0x10')](_0x0398('0x11'),_0x3d9f94,_0x0398('0xf'),JSON[_0x0398('0x12')](_0x5684c1));if(_0x5684c1[_0x0398('0x13')]){if(_0x5684c1[_0x0398('0x13')][_0x0398('0x14')]===0x1f4){logger[_0x0398('0x13')](_0x0398('0xe'),_0x3d9f94,_0x5684c1[_0x0398('0x13')][_0x0398('0x15')]);return _0x2adcdc(_0x5684c1[_0x0398('0x13')][_0x0398('0x15')]);}logger[_0x0398('0x13')](_0x0398('0xe'),_0x3d9f94,_0x5684c1[_0x0398('0x13')][_0x0398('0x15')]);return _0x170674(_0x5684c1[_0x0398('0x13')]['message']);}else{logger[_0x0398('0xd')](_0x0398('0xe'),_0x3d9f94,'request\x20sent');_0x170674(_0x5684c1[_0x0398('0x16')][_0x0398('0x15')]);}})[_0x0398('0x17')](function(_0x3a7841){logger[_0x0398('0x13')](_0x0398('0xe'),_0x3d9f94,_0x3a7841);_0x2adcdc(_0x3a7841);});});}
\ No newline at end of file
+var _0xfe02=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x3b2f12,_0x1e7128){var _0x36a818=function(_0x5cca31){while(--_0x5cca31){_0x3b2f12['push'](_0x3b2f12['shift']());}};_0x36a818(++_0x1e7128);}(_0xfe02,0x1a4));var _0x2fe0=function(_0x4ce15c,_0x1bbcbd){_0x4ce15c=_0x4ce15c-0x0;var _0x5ee259=_0xfe02[_0x4ce15c];return _0x5ee259;};'use strict';var _=require(_0x2fe0('0x0'));var util=require(_0x2fe0('0x1'));var moment=require(_0x2fe0('0x2'));var BPromise=require(_0x2fe0('0x3'));var rs=require(_0x2fe0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2fe0('0x5'))['db'];var utils=require(_0x2fe0('0x6'));var logger=require(_0x2fe0('0x7'))(_0x2fe0('0x8'));var config=require(_0x2fe0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2fe0('0xa')][_0x2fe0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24ce50,_0x40d067,_0x257e66){return new BPromise(function(_0xa4be8f,_0x19552e){return client['request'](_0x24ce50,_0x257e66)['then'](function(_0xd7bffd){logger[_0x2fe0('0xc')](_0x2fe0('0xd'),_0x40d067,_0x2fe0('0xe'));logger[_0x2fe0('0xf')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x40d067,_0x2fe0('0xe'),JSON[_0x2fe0('0x10')](_0xd7bffd));if(_0xd7bffd[_0x2fe0('0x11')]){if(_0xd7bffd[_0x2fe0('0x11')][_0x2fe0('0x12')]===0x1f4){logger[_0x2fe0('0x11')](_0x2fe0('0xd'),_0x40d067,_0xd7bffd['error']['message']);return _0x19552e(_0xd7bffd[_0x2fe0('0x11')][_0x2fe0('0x13')]);}logger[_0x2fe0('0x11')](_0x2fe0('0xd'),_0x40d067,_0xd7bffd['error'][_0x2fe0('0x13')]);return _0xa4be8f(_0xd7bffd[_0x2fe0('0x11')][_0x2fe0('0x13')]);}else{logger['info'](_0x2fe0('0xd'),_0x40d067,'request\x20sent');_0xa4be8f(_0xd7bffd[_0x2fe0('0x14')][_0x2fe0('0x13')]);}})[_0x2fe0('0x15')](function(_0x4ae575){logger[_0x2fe0('0x11')](_0x2fe0('0xd'),_0x40d067,_0x4ae575);_0x19552e(_0x4ae575);});});}
\ No newline at end of file
index fecacf8..ad631f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72ef=['destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerField.controller','index','/:id','isAuthenticated','show','post','create','put','update','delete'];(function(_0x2a7323,_0xef43e0){var _0x570915=function(_0x3fb93d){while(--_0x3fb93d){_0x2a7323['push'](_0x2a7323['shift']());}};_0x570915(++_0xef43e0);}(_0x72ef,0x9a));var _0xf72e=function(_0xec084e,_0x4028c0){_0xec084e=_0xec084e-0x0;var _0x383eef=_0x72ef[_0xec084e];return _0x383eef;};'use strict';var multer=require('multer');var util=require(_0xf72e('0x0'));var path=require(_0xf72e('0x1'));var timeout=require(_0xf72e('0x2'));var express=require('express');var router=express[_0xf72e('0x3')]();var fs_extra=require(_0xf72e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf72e('0x5'));var config=require(_0xf72e('0x6'));var controller=require(_0xf72e('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf72e('0x8')]);router['get'](_0xf72e('0x9'),auth[_0xf72e('0xa')](),controller[_0xf72e('0xb')]);router[_0xf72e('0xc')]('/',auth[_0xf72e('0xa')](),controller[_0xf72e('0xd')]);router[_0xf72e('0xe')](_0xf72e('0x9'),auth['isAuthenticated'](),controller[_0xf72e('0xf')]);router[_0xf72e('0x10')](_0xf72e('0x9'),auth[_0xf72e('0xa')](),controller[_0xf72e('0x11')]);module[_0xf72e('0x12')]=router;
\ No newline at end of file
+var _0x079f=['destroy','exports','util','express','fs-extra','../../components/auth/service','../../config/environment','./intVtigerField.controller','index','get','isAuthenticated','show','post','create','put','/:id','update','delete'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x079f,0x1b2));var _0xf079=function(_0x2825e4,_0x2dea1f){_0x2825e4=_0x2825e4-0x0;var _0x1e9d55=_0x079f[_0x2825e4];return _0x1e9d55;};'use strict';var multer=require('multer');var util=require(_0xf079('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf079('0x1'));var router=express['Router']();var fs_extra=require(_0xf079('0x2'));var auth=require(_0xf079('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xf079('0x4'));var controller=require(_0xf079('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xf079('0x6')]);router[_0xf079('0x7')]('/:id',auth[_0xf079('0x8')](),controller[_0xf079('0x9')]);router[_0xf079('0xa')]('/',auth[_0xf079('0x8')](),controller[_0xf079('0xb')]);router[_0xf079('0xc')](_0xf079('0xd'),auth['isAuthenticated'](),controller[_0xf079('0xe')]);router[_0xf079('0xf')]('/:id',auth[_0xf079('0x8')](),controller[_0xf079('0x10')]);module[_0xf079('0x11')]=router;
\ No newline at end of file
index fb432a3..cdf1ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe121=['keyValue','picklist','string','STRING','BOOLEAN','sequelize','ENUM','variable','customVariable'];(function(_0x29db36,_0x410ae9){var _0x234e87=function(_0x48697b){while(--_0x48697b){_0x29db36['push'](_0x29db36['shift']());}};_0x234e87(++_0x410ae9);}(_0xe121,0x1e2));var _0x1e12=function(_0x2dcbc0,_0x11625c){_0x2dcbc0=_0x2dcbc0-0x0;var _0xc28841=_0xe121[_0x2dcbc0];return _0xc28841;};'use strict';var Sequelize=require(_0x1e12('0x0'));module['exports']={'type':{'type':Sequelize[_0x1e12('0x1')]('string',_0x1e12('0x2'),_0x1e12('0x3'),_0x1e12('0x4'),_0x1e12('0x5')),'defaultValue':_0x1e12('0x6')},'content':{'type':Sequelize[_0x1e12('0x7')]},'key':{'type':Sequelize[_0x1e12('0x7')]},'keyType':{'type':Sequelize['ENUM']('string','variable','customVariable')},'keyContent':{'type':Sequelize[_0x1e12('0x7')]},'idField':{'type':Sequelize[_0x1e12('0x7')]},'nameField':{'type':Sequelize[_0x1e12('0x7')]},'customField':{'type':Sequelize[_0x1e12('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3432=['STRING','BOOLEAN','ENUM','string','variable','customVariable','picklist'];(function(_0x2a855b,_0x1c4cdc){var _0x1b5bbb=function(_0x2aebb9){while(--_0x2aebb9){_0x2a855b['push'](_0x2a855b['shift']());}};_0x1b5bbb(++_0x1c4cdc);}(_0x3432,0xa3));var _0x2343=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3432[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x2343('0x0')](_0x2343('0x1'),_0x2343('0x2'),_0x2343('0x3'),'keyValue',_0x2343('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x2343('0x5')]},'key':{'type':Sequelize[_0x2343('0x5')]},'keyType':{'type':Sequelize[_0x2343('0x0')](_0x2343('0x1'),_0x2343('0x2'),_0x2343('0x3'))},'keyContent':{'type':Sequelize[_0x2343('0x5')]},'idField':{'type':Sequelize[_0x2343('0x5')]},'nameField':{'type':Sequelize[_0x2343('0x5')]},'customField':{'type':Sequelize[_0x2343('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 14a3469..ea301c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x839d=['VtigerField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','length','find','create','body','params','destroy','eml-format','zip-dir','fast-json-patch','moment','path','sox','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','end','error','stack','name','index'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x839d,0x141));var _0xd839=function(_0x204012,_0xeac996){_0x204012=_0x204012-0x0;var _0x5f14e1=_0x839d[_0x204012];return _0x5f14e1;};'use strict';var emlformat=require(_0xd839('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd839('0x1'));var jsonpatch=require(_0xd839('0x2'));var rp=require('request-promise');var moment=require(_0xd839('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xd839('0x4'));var sox=require(_0xd839('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xd839('0x6'));var jsforce=require(_0xd839('0x7'));var deskjs=require(_0xd839('0x8'));var toCsv=require(_0xd839('0x9'));var querystring=require(_0xd839('0xa'));var Papa=require(_0xd839('0xb'));var Redis=require(_0xd839('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xd839('0xd'));var as=require(_0xd839('0xe'));var hardwareService=require(_0xd839('0xf'));var logger=require(_0xd839('0x10'))(_0xd839('0x11'));var utils=require(_0xd839('0x12'));var config=require(_0xd839('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xd839('0x14'))['db'];function respondWithStatusCode(_0x47e821,_0x3dd73e){_0x3dd73e=_0x3dd73e||0xcc;return function(_0x505018){if(_0x505018){return _0x47e821[_0xd839('0x15')](_0x3dd73e);}return _0x47e821[_0xd839('0x16')](_0x3dd73e)['end']();};}function respondWithResult(_0x416047,_0x4ead08){_0x4ead08=_0x4ead08||0xc8;return function(_0x426161){if(_0x426161){return _0x416047['status'](_0x4ead08)['json'](_0x426161);}};}function respondWithFilteredResult(_0x3f8a6e,_0x47ab69){return function(_0x3f7363){if(_0x3f7363){var _0x14a85c=typeof _0x47ab69[_0xd839('0x17')]==='undefined'&&typeof _0x47ab69[_0xd839('0x18')]==='undefined';var _0x32856d=_0x3f7363[_0xd839('0x19')];var _0x77d2b8=_0x14a85c?0x0:_0x47ab69[_0xd839('0x17')];var _0x3a4801=_0x14a85c?_0x3f7363[_0xd839('0x19')]:_0x47ab69[_0xd839('0x17')]+_0x47ab69[_0xd839('0x18')];var _0x236540;if(_0x3a4801>=_0x32856d){_0x3a4801=_0x32856d;_0x236540=0xc8;}else{_0x236540=0xce;}_0x3f8a6e[_0xd839('0x16')](_0x236540);return _0x3f8a6e[_0xd839('0x1a')](_0xd839('0x1b'),_0x77d2b8+'-'+_0x3a4801+'/'+_0x32856d)[_0xd839('0x1c')](_0x3f7363);}return null;};}function patchUpdates(_0x48adde){return function(_0x59313f){try{jsonpatch[_0xd839('0x1d')](_0x59313f,_0x48adde,!![]);}catch(_0x5cca21){return BPromise[_0xd839('0x1e')](_0x5cca21);}return _0x59313f[_0xd839('0x1f')]();};}function saveUpdates(_0xfb9455,_0x5b56a2){return function(_0x14e981){if(_0x14e981){return _0x14e981[_0xd839('0x20')](_0xfb9455)[_0xd839('0x21')](function(_0x32949d){return _0x32949d;});}return null;};}function removeEntity(_0x52993b,_0x1190b8){return function(_0x16a89d){if(_0x16a89d){return _0x16a89d['destroy']()['then'](function(){_0x52993b[_0xd839('0x16')](0xcc)[_0xd839('0x22')]();});}};}function handleEntityNotFound(_0x2bc404,_0x414c9f){return function(_0x5b3164){if(!_0x5b3164){_0x2bc404[_0xd839('0x15')](0x194);}return _0x5b3164;};}function handleError(_0x2f916b,_0x138e32){_0x138e32=_0x138e32||0x1f4;return function(_0x5a41c4){logger[_0xd839('0x23')](_0x5a41c4[_0xd839('0x24')]);if(_0x5a41c4[_0xd839('0x25')]){delete _0x5a41c4['name'];}_0x2f916b[_0xd839('0x16')](_0x138e32)['send'](_0x5a41c4);};}exports[_0xd839('0x26')]=function(_0x2990e3,_0x44fc85){var _0x4fddf5={},_0x3b9df7={},_0x1d96c3={'count':0x0,'rows':[]};var _0x17abfa=_['map'](db[_0xd839('0x27')][_0xd839('0x28')],function(_0x1efce6){return{'name':_0x1efce6[_0xd839('0x29')],'type':_0x1efce6[_0xd839('0x2a')][_0xd839('0x2b')]};});_0x3b9df7['model']=_['map'](_0x17abfa,_0xd839('0x25'));_0x3b9df7[_0xd839('0x2c')]=_['keys'](_0x2990e3[_0xd839('0x2c')]);_0x3b9df7[_0xd839('0x2d')]=_[_0xd839('0x2e')](_0x3b9df7[_0xd839('0x2f')],_0x3b9df7['query']);_0x4fddf5[_0xd839('0x30')]=_[_0xd839('0x2e')](_0x3b9df7['model'],qs[_0xd839('0x31')](_0x2990e3[_0xd839('0x2c')]['fields']));_0x4fddf5[_0xd839('0x30')]=_0x4fddf5[_0xd839('0x30')]['length']?_0x4fddf5[_0xd839('0x30')]:_0x3b9df7['model'];if(!_0x2990e3[_0xd839('0x2c')][_0xd839('0x32')](_0xd839('0x33'))){_0x4fddf5[_0xd839('0x18')]=qs[_0xd839('0x18')](_0x2990e3[_0xd839('0x2c')][_0xd839('0x18')]);_0x4fddf5['offset']=qs[_0xd839('0x17')](_0x2990e3[_0xd839('0x2c')]['offset']);}_0x4fddf5[_0xd839('0x34')]=qs[_0xd839('0x35')](_0x2990e3[_0xd839('0x2c')][_0xd839('0x35')]);_0x4fddf5['where']=qs[_0xd839('0x2d')](_['pick'](_0x2990e3[_0xd839('0x2c')],_0x3b9df7[_0xd839('0x2d')]),_0x17abfa);if(_0x2990e3['query'][_0xd839('0x36')]){_0x4fddf5[_0xd839('0x37')]=_[_0xd839('0x38')](_0x4fddf5[_0xd839('0x37')],{'$or':_[_0xd839('0x39')](_0x17abfa,function(_0x569cbe){if(_0x569cbe[_0xd839('0x2a')]!==_0xd839('0x3a')){var _0x45c6ab={};_0x45c6ab[_0x569cbe[_0xd839('0x25')]]={'$like':'%'+_0x2990e3[_0xd839('0x2c')][_0xd839('0x36')]+'%'};return _0x45c6ab;}})});}_0x4fddf5=_['merge']({},_0x4fddf5,_0x2990e3[_0xd839('0x3b')]);var _0x55db96={'where':_0x4fddf5[_0xd839('0x37')]};return db['VtigerField'][_0xd839('0x19')](_0x55db96)[_0xd839('0x21')](function(_0x381abb){_0x1d96c3[_0xd839('0x19')]=_0x381abb;if(_0x2990e3['query'][_0xd839('0x3c')]){_0x4fddf5[_0xd839('0x3d')]=[{'all':!![]}];}return db[_0xd839('0x27')][_0xd839('0x3e')](_0x4fddf5);})[_0xd839('0x21')](function(_0x9ee5c2){_0x1d96c3[_0xd839('0x3f')]=_0x9ee5c2;return _0x1d96c3;})['then'](respondWithFilteredResult(_0x44fc85,_0x4fddf5))['catch'](handleError(_0x44fc85,null));};exports[_0xd839('0x40')]=function(_0x22a935,_0x4c05d7){var _0x316ec6={'raw':!![],'where':{'id':_0x22a935['params']['id']}},_0x14c0b1={};_0x14c0b1[_0xd839('0x2f')]=_[_0xd839('0x41')](db[_0xd839('0x27')][_0xd839('0x28')]);_0x14c0b1[_0xd839('0x2c')]=_[_0xd839('0x41')](_0x22a935['query']);_0x14c0b1['filters']=_[_0xd839('0x2e')](_0x14c0b1[_0xd839('0x2f')],_0x14c0b1[_0xd839('0x2c')]);_0x316ec6[_0xd839('0x30')]=_[_0xd839('0x2e')](_0x14c0b1[_0xd839('0x2f')],qs[_0xd839('0x31')](_0x22a935[_0xd839('0x2c')]['fields']));_0x316ec6[_0xd839('0x30')]=_0x316ec6[_0xd839('0x30')][_0xd839('0x42')]?_0x316ec6[_0xd839('0x30')]:_0x14c0b1[_0xd839('0x2f')];if(_0x22a935[_0xd839('0x2c')][_0xd839('0x3c')]){_0x316ec6[_0xd839('0x3d')]=[{'all':!![]}];}_0x316ec6=_['merge']({},_0x316ec6,_0x22a935[_0xd839('0x3b')]);return db[_0xd839('0x27')][_0xd839('0x43')](_0x316ec6)[_0xd839('0x21')](handleEntityNotFound(_0x4c05d7,null))[_0xd839('0x21')](respondWithResult(_0x4c05d7,null))['catch'](handleError(_0x4c05d7,null));};exports[_0xd839('0x44')]=function(_0x3336fa,_0x240f2e){return db[_0xd839('0x27')][_0xd839('0x44')](_0x3336fa[_0xd839('0x45')],{})[_0xd839('0x21')](respondWithResult(_0x240f2e,0xc9))['catch'](handleError(_0x240f2e,null));};exports[_0xd839('0x20')]=function(_0x648905,_0x3b9bb5){if(_0x648905[_0xd839('0x45')]['id']){delete _0x648905[_0xd839('0x45')]['id'];}return db[_0xd839('0x27')]['find']({'where':{'id':_0x648905[_0xd839('0x46')]['id']}})['then'](handleEntityNotFound(_0x3b9bb5,null))[_0xd839('0x21')](saveUpdates(_0x648905[_0xd839('0x45')],null))[_0xd839('0x21')](respondWithResult(_0x3b9bb5,null))['catch'](handleError(_0x3b9bb5,null));};exports[_0xd839('0x47')]=function(_0x40b222,_0x1eaf45){return db['VtigerField']['find']({'where':{'id':_0x40b222['params']['id']}})['then'](handleEntityNotFound(_0x1eaf45,null))[_0xd839('0x21')](removeEntity(_0x1eaf45,null))['catch'](handleError(_0x1eaf45,null));};
\ No newline at end of file
+var _0xbaac=['destroy','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','includeAll','find','catch','create','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then'];(function(_0x16f8f7,_0x2cf94f){var _0x36d841=function(_0x2ecabf){while(--_0x2ecabf){_0x16f8f7['push'](_0x16f8f7['shift']());}};_0x36d841(++_0x2cf94f);}(_0xbaac,0x149));var _0xcbaa=function(_0x590b64,_0x231b9c){_0x590b64=_0x590b64-0x0;var _0x18d602=_0xbaac[_0x590b64];return _0x18d602;};'use strict';var emlformat=require(_0xcbaa('0x0'));var rimraf=require(_0xcbaa('0x1'));var zipdir=require(_0xcbaa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcbaa('0x3'));var moment=require(_0xcbaa('0x4'));var BPromise=require(_0xcbaa('0x5'));var Mustache=require(_0xcbaa('0x6'));var util=require(_0xcbaa('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xcbaa('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcbaa('0x9'));var _=require('lodash');var squel=require(_0xcbaa('0xa'));var crypto=require(_0xcbaa('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcbaa('0x8'));var querystring=require(_0xcbaa('0xc'));var Papa=require('papaparse');var Redis=require(_0xcbaa('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xcbaa('0xe'));var as=require(_0xcbaa('0xf'));var hardwareService=require(_0xcbaa('0x10'));var logger=require('../../config/logger')(_0xcbaa('0x11'));var utils=require(_0xcbaa('0x12'));var config=require(_0xcbaa('0x13'));var licenseUtil=require(_0xcbaa('0x14'));var db=require(_0xcbaa('0x15'))['db'];function respondWithStatusCode(_0x4f6031,_0x4f05e0){_0x4f05e0=_0x4f05e0||0xcc;return function(_0x47c8c1){if(_0x47c8c1){return _0x4f6031[_0xcbaa('0x16')](_0x4f05e0);}return _0x4f6031[_0xcbaa('0x17')](_0x4f05e0)[_0xcbaa('0x18')]();};}function respondWithResult(_0x4fdd48,_0x1c8139){_0x1c8139=_0x1c8139||0xc8;return function(_0x1f25a3){if(_0x1f25a3){return _0x4fdd48[_0xcbaa('0x17')](_0x1c8139)[_0xcbaa('0x19')](_0x1f25a3);}};}function respondWithFilteredResult(_0x35a408,_0x156031){return function(_0x57c01a){if(_0x57c01a){var _0x31df11=typeof _0x156031[_0xcbaa('0x1a')]===_0xcbaa('0x1b')&&typeof _0x156031[_0xcbaa('0x1c')]===_0xcbaa('0x1b');var _0x4297c6=_0x57c01a['count'];var _0x4610a2=_0x31df11?0x0:_0x156031[_0xcbaa('0x1a')];var _0x59174b=_0x31df11?_0x57c01a[_0xcbaa('0x1d')]:_0x156031[_0xcbaa('0x1a')]+_0x156031[_0xcbaa('0x1c')];var _0xa2b14e;if(_0x59174b>=_0x4297c6){_0x59174b=_0x4297c6;_0xa2b14e=0xc8;}else{_0xa2b14e=0xce;}_0x35a408[_0xcbaa('0x17')](_0xa2b14e);return _0x35a408['set'](_0xcbaa('0x1e'),_0x4610a2+'-'+_0x59174b+'/'+_0x4297c6)[_0xcbaa('0x19')](_0x57c01a);}return null;};}function patchUpdates(_0x1b2b78){return function(_0x1eaac8){try{jsonpatch[_0xcbaa('0x1f')](_0x1eaac8,_0x1b2b78,!![]);}catch(_0x417ed0){return BPromise[_0xcbaa('0x20')](_0x417ed0);}return _0x1eaac8[_0xcbaa('0x21')]();};}function saveUpdates(_0x4ae603,_0x42bff7){return function(_0x5f3208){if(_0x5f3208){return _0x5f3208[_0xcbaa('0x22')](_0x4ae603)[_0xcbaa('0x23')](function(_0x3052c5){return _0x3052c5;});}return null;};}function removeEntity(_0x3b1b39,_0x2bbe06){return function(_0x5d85b9){if(_0x5d85b9){return _0x5d85b9[_0xcbaa('0x24')]()['then'](function(){_0x3b1b39[_0xcbaa('0x17')](0xcc)[_0xcbaa('0x18')]();});}};}function handleEntityNotFound(_0x396403,_0x2f4eab){return function(_0x30327c){if(!_0x30327c){_0x396403[_0xcbaa('0x16')](0x194);}return _0x30327c;};}function handleError(_0x5b6950,_0x335db2){_0x335db2=_0x335db2||0x1f4;return function(_0x1fdeb6){logger['error'](_0x1fdeb6[_0xcbaa('0x25')]);if(_0x1fdeb6[_0xcbaa('0x26')]){delete _0x1fdeb6[_0xcbaa('0x26')];}_0x5b6950[_0xcbaa('0x17')](_0x335db2)[_0xcbaa('0x27')](_0x1fdeb6);};}exports[_0xcbaa('0x28')]=function(_0x14bb77,_0x3b631a){var _0x5e738c={},_0x5569a4={},_0x45df06={'count':0x0,'rows':[]};var _0x257e9d=_[_0xcbaa('0x29')](db[_0xcbaa('0x2a')][_0xcbaa('0x2b')],function(_0x31332a){return{'name':_0x31332a[_0xcbaa('0x2c')],'type':_0x31332a[_0xcbaa('0x2d')][_0xcbaa('0x2e')]};});_0x5569a4[_0xcbaa('0x2f')]=_[_0xcbaa('0x29')](_0x257e9d,_0xcbaa('0x26'));_0x5569a4[_0xcbaa('0x30')]=_[_0xcbaa('0x31')](_0x14bb77['query']);_0x5569a4[_0xcbaa('0x32')]=_[_0xcbaa('0x33')](_0x5569a4['model'],_0x5569a4['query']);_0x5e738c[_0xcbaa('0x34')]=_[_0xcbaa('0x33')](_0x5569a4['model'],qs[_0xcbaa('0x35')](_0x14bb77['query']['fields']));_0x5e738c[_0xcbaa('0x34')]=_0x5e738c[_0xcbaa('0x34')][_0xcbaa('0x36')]?_0x5e738c[_0xcbaa('0x34')]:_0x5569a4[_0xcbaa('0x2f')];if(!_0x14bb77['query']['hasOwnProperty']('nolimit')){_0x5e738c[_0xcbaa('0x1c')]=qs[_0xcbaa('0x1c')](_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x1c')]);_0x5e738c[_0xcbaa('0x1a')]=qs[_0xcbaa('0x1a')](_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x1a')]);}_0x5e738c[_0xcbaa('0x37')]=qs['sort'](_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x38')]);_0x5e738c[_0xcbaa('0x39')]=qs[_0xcbaa('0x32')](_[_0xcbaa('0x3a')](_0x14bb77[_0xcbaa('0x30')],_0x5569a4['filters']),_0x257e9d);if(_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x3b')]){_0x5e738c[_0xcbaa('0x39')]=_['merge'](_0x5e738c[_0xcbaa('0x39')],{'$or':_[_0xcbaa('0x29')](_0x257e9d,function(_0x23a821){if(_0x23a821[_0xcbaa('0x2d')]!==_0xcbaa('0x3c')){var _0x1d9d4b={};_0x1d9d4b[_0x23a821['name']]={'$like':'%'+_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x3b')]+'%'};return _0x1d9d4b;}})});}_0x5e738c=_[_0xcbaa('0x3d')]({},_0x5e738c,_0x14bb77[_0xcbaa('0x3e')]);var _0x269b40={'where':_0x5e738c[_0xcbaa('0x39')]};return db[_0xcbaa('0x2a')]['count'](_0x269b40)[_0xcbaa('0x23')](function(_0x37548a){_0x45df06[_0xcbaa('0x1d')]=_0x37548a;if(_0x14bb77[_0xcbaa('0x30')]['includeAll']){_0x5e738c[_0xcbaa('0x3f')]=[{'all':!![]}];}return db[_0xcbaa('0x2a')][_0xcbaa('0x40')](_0x5e738c);})[_0xcbaa('0x23')](function(_0x6bc322){_0x45df06[_0xcbaa('0x41')]=_0x6bc322;return _0x45df06;})[_0xcbaa('0x23')](respondWithFilteredResult(_0x3b631a,_0x5e738c))['catch'](handleError(_0x3b631a,null));};exports[_0xcbaa('0x42')]=function(_0x40f74b,_0x42a8f8){var _0x583656={'raw':!![],'where':{'id':_0x40f74b['params']['id']}},_0x5d4ea5={};_0x5d4ea5['model']=_[_0xcbaa('0x31')](db[_0xcbaa('0x2a')][_0xcbaa('0x2b')]);_0x5d4ea5[_0xcbaa('0x30')]=_[_0xcbaa('0x31')](_0x40f74b[_0xcbaa('0x30')]);_0x5d4ea5[_0xcbaa('0x32')]=_['intersection'](_0x5d4ea5[_0xcbaa('0x2f')],_0x5d4ea5[_0xcbaa('0x30')]);_0x583656['attributes']=_[_0xcbaa('0x33')](_0x5d4ea5[_0xcbaa('0x2f')],qs[_0xcbaa('0x35')](_0x40f74b['query']['fields']));_0x583656[_0xcbaa('0x34')]=_0x583656['attributes'][_0xcbaa('0x36')]?_0x583656[_0xcbaa('0x34')]:_0x5d4ea5[_0xcbaa('0x2f')];if(_0x40f74b[_0xcbaa('0x30')][_0xcbaa('0x43')]){_0x583656['include']=[{'all':!![]}];}_0x583656=_[_0xcbaa('0x3d')]({},_0x583656,_0x40f74b['options']);return db[_0xcbaa('0x2a')][_0xcbaa('0x44')](_0x583656)[_0xcbaa('0x23')](handleEntityNotFound(_0x42a8f8,null))['then'](respondWithResult(_0x42a8f8,null))[_0xcbaa('0x45')](handleError(_0x42a8f8,null));};exports['create']=function(_0x10a223,_0x15bd8f){return db[_0xcbaa('0x2a')][_0xcbaa('0x46')](_0x10a223[_0xcbaa('0x47')],{})[_0xcbaa('0x23')](respondWithResult(_0x15bd8f,0xc9))[_0xcbaa('0x45')](handleError(_0x15bd8f,null));};exports[_0xcbaa('0x22')]=function(_0x2627ed,_0x36a14e){if(_0x2627ed[_0xcbaa('0x47')]['id']){delete _0x2627ed[_0xcbaa('0x47')]['id'];}return db[_0xcbaa('0x2a')][_0xcbaa('0x44')]({'where':{'id':_0x2627ed[_0xcbaa('0x48')]['id']}})[_0xcbaa('0x23')](handleEntityNotFound(_0x36a14e,null))[_0xcbaa('0x23')](saveUpdates(_0x2627ed[_0xcbaa('0x47')],null))[_0xcbaa('0x23')](respondWithResult(_0x36a14e,null))[_0xcbaa('0x45')](handleError(_0x36a14e,null));};exports[_0xcbaa('0x24')]=function(_0x4d3b7b,_0x330986){return db[_0xcbaa('0x2a')][_0xcbaa('0x44')]({'where':{'id':_0x4d3b7b['params']['id']}})[_0xcbaa('0x23')](handleEntityNotFound(_0x330986,null))[_0xcbaa('0x23')](removeEntity(_0x330986,null))[_0xcbaa('0x45')](handleError(_0x330986,null));};
\ No newline at end of file
index 78e7ab7..f8759aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa01d=['moment','bluebird','request-promise','path','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','util','../../config/logger','api'];(function(_0x29d16c,_0x4b8dc4){var _0x1960d5=function(_0x1b1e51){while(--_0x1b1e51){_0x29d16c['push'](_0x29d16c['shift']());}};_0x1960d5(++_0x4b8dc4);}(_0xa01d,0x8c));var _0xda01=function(_0x578fb7,_0x1008df){_0x578fb7=_0x578fb7-0x0;var _0x21171e=_0xa01d[_0x578fb7];return _0x21171e;};'use strict';var _=require('lodash');var util=require(_0xda01('0x0'));var logger=require(_0xda01('0x1'))(_0xda01('0x2'));var moment=require(_0xda01('0x3'));var BPromise=require(_0xda01('0x4'));var rp=require(_0xda01('0x5'));var fs=require('fs');var path=require(_0xda01('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intVtigerField.attributes');module['exports']=function(_0xe22528,_0x2ddc19){return _0xe22528[_0xda01('0x7')](_0xda01('0x8'),attributes,{'tableName':_0xda01('0x9'),'paranoid':![],'indexes':[{'name':_0xda01('0xa'),'fields':[_0xda01('0xb'),_0xda01('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x86db=['request-promise','rimraf','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','idField','lodash','../../config/logger'];(function(_0xe4a487,_0x5419aa){var _0x203de6=function(_0x529484){while(--_0x529484){_0xe4a487['push'](_0xe4a487['shift']());}};_0x203de6(++_0x5419aa);}(_0x86db,0x166));var _0xb86d=function(_0x1602fd,_0x847115){_0x1602fd=_0x1602fd-0x0;var _0x1eaf42=_0x86db[_0x1602fd];return _0x1eaf42;};'use strict';var _=require(_0xb86d('0x0'));var util=require('util');var logger=require(_0xb86d('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb86d('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb86d('0x3'));var config=require('../../config/environment');var attributes=require(_0xb86d('0x4'));module[_0xb86d('0x5')]=function(_0x36a312,_0x243191){return _0x36a312[_0xb86d('0x6')](_0xb86d('0x7'),attributes,{'tableName':_0xb86d('0x8'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0xb86d('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b85b45e..1ea117d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d23=['../../config/logger','rpc','../../config/environment','jayson/promise','client','then','VtigerField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring','../../config/utils'];(function(_0x459a0a,_0x25c46f){var _0x4ab46c=function(_0x451a6a){while(--_0x451a6a){_0x459a0a['push'](_0x459a0a['shift']());}};_0x4ab46c(++_0x25c46f);}(_0x6d23,0x14f));var _0x36d2=function(_0x5a98a4,_0x5ac7a0){_0x5a98a4=_0x5a98a4-0x0;var _0x1d0c9d=_0x6d23[_0x5a98a4];return _0x1d0c9d;};'use strict';var _=require(_0x36d2('0x0'));var util=require(_0x36d2('0x1'));var moment=require(_0x36d2('0x2'));var BPromise=require('bluebird');var rs=require(_0x36d2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x36d2('0x4'));var logger=require(_0x36d2('0x5'))(_0x36d2('0x6'));var config=require(_0x36d2('0x7'));var jayson=require(_0x36d2('0x8'));var client=jayson[_0x36d2('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x395acb,_0x440c50,_0x111f19){return new BPromise(function(_0x4e474c,_0x40dd8b){return client['request'](_0x395acb,_0x111f19)[_0x36d2('0xa')](function(_0x2c56b6){logger['info'](_0x36d2('0xb'),_0x440c50,_0x36d2('0xc'));logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x440c50,_0x36d2('0xc'),JSON[_0x36d2('0xd')](_0x2c56b6));if(_0x2c56b6['error']){if(_0x2c56b6[_0x36d2('0xe')][_0x36d2('0xf')]===0x1f4){logger['error'](_0x36d2('0xb'),_0x440c50,_0x2c56b6[_0x36d2('0xe')][_0x36d2('0x10')]);return _0x40dd8b(_0x2c56b6[_0x36d2('0xe')]['message']);}logger[_0x36d2('0xe')](_0x36d2('0xb'),_0x440c50,_0x2c56b6[_0x36d2('0xe')]['message']);return _0x4e474c(_0x2c56b6[_0x36d2('0xe')]['message']);}else{logger[_0x36d2('0x11')](_0x36d2('0xb'),_0x440c50,_0x36d2('0xc'));_0x4e474c(_0x2c56b6[_0x36d2('0x12')]['message']);}})[_0x36d2('0x13')](function(_0x30d0b9){logger[_0x36d2('0xe')]('VtigerField,\x20%s,\x20%s',_0x440c50,_0x30d0b9);_0x40dd8b(_0x30d0b9);});});}
\ No newline at end of file
+var _0x64f6=['then','info','VtigerField,\x20%s,\x20%s','request\x20sent','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x64f6,0xb3));var _0x664f=function(_0x3d967,_0x1d3d71){_0x3d967=_0x3d967-0x0;var _0x22caf4=_0x64f6[_0x3d967];return _0x22caf4;};'use strict';var _=require(_0x664f('0x0'));var util=require(_0x664f('0x1'));var moment=require(_0x664f('0x2'));var BPromise=require(_0x664f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x664f('0x4'))['db'];var utils=require(_0x664f('0x5'));var logger=require(_0x664f('0x6'))(_0x664f('0x7'));var config=require(_0x664f('0x8'));var jayson=require(_0x664f('0x9'));var client=jayson[_0x664f('0xa')][_0x664f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x511a77,_0x5e5d92,_0x3085db){return new BPromise(function(_0x59b6c0,_0x44a9d4){return client[_0x664f('0xc')](_0x511a77,_0x3085db)[_0x664f('0xd')](function(_0x1dba79){logger[_0x664f('0xe')](_0x664f('0xf'),_0x5e5d92,_0x664f('0x10'));logger['debug'](_0x664f('0x11'),_0x5e5d92,'request\x20sent',JSON[_0x664f('0x12')](_0x1dba79));if(_0x1dba79[_0x664f('0x13')]){if(_0x1dba79[_0x664f('0x13')][_0x664f('0x14')]===0x1f4){logger[_0x664f('0x13')]('VtigerField,\x20%s,\x20%s',_0x5e5d92,_0x1dba79[_0x664f('0x13')][_0x664f('0x15')]);return _0x44a9d4(_0x1dba79[_0x664f('0x13')][_0x664f('0x15')]);}logger[_0x664f('0x13')](_0x664f('0xf'),_0x5e5d92,_0x1dba79[_0x664f('0x13')]['message']);return _0x59b6c0(_0x1dba79[_0x664f('0x13')][_0x664f('0x15')]);}else{logger['info']('VtigerField,\x20%s,\x20%s',_0x5e5d92,_0x664f('0x10'));_0x59b6c0(_0x1dba79[_0x664f('0x16')]['message']);}})[_0x664f('0x17')](function(_0x160b8c){logger['error']('VtigerField,\x20%s,\x20%s',_0x5e5d92,_0x160b8c);_0x44a9d4(_0x160b8c);});});}
\ No newline at end of file
index 3c6db15..1539542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbce=['index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','./intZendeskAccount.controller','get','isAuthenticated'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xdbce,0x1f1));var _0xedbc=function(_0x38ed27,_0xeb9a8a){_0x38ed27=_0x38ed27-0x0;var _0x2646fb=_0xdbce[_0x38ed27];return _0x2646fb;};'use strict';var multer=require(_0xedbc('0x0'));var util=require('util');var path=require(_0xedbc('0x1'));var timeout=require('connect-timeout');var express=require(_0xedbc('0x2'));var router=express[_0xedbc('0x3')]();var fs_extra=require(_0xedbc('0x4'));var auth=require(_0xedbc('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xedbc('0x6'));router[_0xedbc('0x7')]('/',auth[_0xedbc('0x8')](),controller[_0xedbc('0x9')]);router[_0xedbc('0x7')](_0xedbc('0xa'),auth[_0xedbc('0x8')](),controller[_0xedbc('0xb')]);router['get'](_0xedbc('0xc'),auth[_0xedbc('0x8')](),controller[_0xedbc('0xd')]);router[_0xedbc('0x7')](_0xedbc('0xe'),auth[_0xedbc('0x8')](),controller[_0xedbc('0xf')]);router[_0xedbc('0x10')]('/',auth[_0xedbc('0x8')](),controller[_0xedbc('0x11')]);router[_0xedbc('0x10')](_0xedbc('0xc'),auth[_0xedbc('0x8')](),controller[_0xedbc('0x12')]);router[_0xedbc('0x13')](_0xedbc('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xedbc('0xa'),auth[_0xedbc('0x8')](),controller[_0xedbc('0x14')]);module[_0xedbc('0x15')]=router;
\ No newline at end of file
+var _0xf606=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','/:id','show'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf606,0x169));var _0x6f60=function(_0x201c53,_0x22c40c){_0x201c53=_0x201c53-0x0;var _0x18e830=_0xf606[_0x201c53];return _0x18e830;};'use strict';var multer=require(_0x6f60('0x0'));var util=require(_0x6f60('0x1'));var path=require(_0x6f60('0x2'));var timeout=require(_0x6f60('0x3'));var express=require(_0x6f60('0x4'));var router=express[_0x6f60('0x5')]();var fs_extra=require(_0x6f60('0x6'));var auth=require(_0x6f60('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6f60('0x8'));var controller=require(_0x6f60('0x9'));router[_0x6f60('0xa')]('/',auth[_0x6f60('0xb')](),controller['index']);router[_0x6f60('0xa')](_0x6f60('0xc'),auth['isAuthenticated'](),controller[_0x6f60('0xd')]);router['get'](_0x6f60('0xe'),auth[_0x6f60('0xb')](),controller[_0x6f60('0xf')]);router[_0x6f60('0xa')](_0x6f60('0x10'),auth['isAuthenticated'](),controller[_0x6f60('0x11')]);router[_0x6f60('0x12')]('/',auth[_0x6f60('0xb')](),controller[_0x6f60('0x13')]);router[_0x6f60('0x12')](_0x6f60('0xe'),auth[_0x6f60('0xb')](),controller[_0x6f60('0x14')]);router[_0x6f60('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x6f60('0x16')]);router[_0x6f60('0x17')](_0x6f60('0xc'),auth[_0x6f60('0xb')](),controller[_0x6f60('0x18')]);module['exports']=router;
\ No newline at end of file
index 87bde10..67d766f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x565e=['STRING','remoteUri','ENUM','password','token','integrationTab','newTab','sequelize'];(function(_0x8ec6b4,_0x31ef52){var _0x52c0d0=function(_0x17cadc){while(--_0x17cadc){_0x8ec6b4['push'](_0x8ec6b4['shift']());}};_0x52c0d0(++_0x31ef52);}(_0x565e,0x7f));var _0xe565=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x565e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe565('0x0'));module['exports']={'name':{'type':Sequelize[_0xe565('0x1')]},'description':{'type':Sequelize[_0xe565('0x1')]},'username':{'type':Sequelize[_0xe565('0x1')],'unique':'username'},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xe565('0x1')]},'remoteUri':{'type':Sequelize[_0xe565('0x1')],'unique':_0xe565('0x2')},'authType':{'type':Sequelize[_0xe565('0x3')](_0xe565('0x4'),_0xe565('0x5')),'defaultValue':_0xe565('0x4')},'serverUrl':{'type':Sequelize[_0xe565('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xe565('0x3')](_0xe565('0x6'),_0xe565('0x7')),'defaultValue':_0xe565('0x6')}};
\ No newline at end of file
+var _0x9f0e=['STRING','remoteUri','ENUM','password','integrationTab','sequelize','exports'];(function(_0x18e792,_0x494266){var _0x1b1a78=function(_0x1df338){while(--_0x1df338){_0x18e792['push'](_0x18e792['shift']());}};_0x1b1a78(++_0x494266);}(_0x9f0e,0x116));var _0xe9f0=function(_0x9d61c2,_0x468f27){_0x9d61c2=_0x9d61c2-0x0;var _0x4c6400=_0x9f0e[_0x9d61c2];return _0x4c6400;};'use strict';var Sequelize=require(_0xe9f0('0x0'));module[_0xe9f0('0x1')]={'name':{'type':Sequelize[_0xe9f0('0x2')]},'description':{'type':Sequelize[_0xe9f0('0x2')]},'username':{'type':Sequelize[_0xe9f0('0x2')],'unique':'username'},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xe9f0('0x2')]},'remoteUri':{'type':Sequelize[_0xe9f0('0x2')],'unique':_0xe9f0('0x3')},'authType':{'type':Sequelize[_0xe9f0('0x4')](_0xe9f0('0x5'),'token'),'defaultValue':'password'},'serverUrl':{'type':Sequelize[_0xe9f0('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe9f0('0x4')](_0xe9f0('0x6'),'newTab'),'defaultValue':_0xe9f0('0x6')}};
\ No newline at end of file
index f4f5874..af4c77e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['password','token','authType','remoteUri','slice','GET','format','headers','Basic\x20%s','toString','base64','Sequelize','Unknown\x20authentication\x20type','subject','description','assignee','remove','ticket_fields','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','update','then','destroy','end','error','name','send','index','map','ZendeskAccount','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','find','create','body','getConfigurations','findOne','ZendeskConfiguration','rawAttributes','addConfiguration','Subjects','channel','Descriptions','getDescriptions','ZendeskField','getFields','username'];(function(_0x741427,_0x21fe4c){var _0x5e0a59=function(_0x2c4eb5){while(--_0x2c4eb5){_0x741427['push'](_0x741427['shift']());}};_0x5e0a59(++_0x21fe4c);}(_0xe605,0x92));var _0x5e60=function(_0x58dd5a,_0x4fa33e){_0x58dd5a=_0x58dd5a-0x0;var _0x3c989e=_0xe605[_0x58dd5a];return _0x3c989e;};'use strict';var emlformat=require(_0x5e60('0x0'));var rimraf=require(_0x5e60('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5e60('0x2'));var rp=require(_0x5e60('0x3'));var moment=require(_0x5e60('0x4'));var BPromise=require(_0x5e60('0x5'));var Mustache=require(_0x5e60('0x6'));var util=require(_0x5e60('0x7'));var path=require(_0x5e60('0x8'));var sox=require(_0x5e60('0x9'));var csv=require(_0x5e60('0xa'));var ejs=require(_0x5e60('0xb'));var fs=require('fs');var fs_extra=require(_0x5e60('0xc'));var _=require(_0x5e60('0xd'));var squel=require('squel');var crypto=require(_0x5e60('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5e60('0xf'));var Papa=require(_0x5e60('0x10'));var Redis=require(_0x5e60('0x11'));var authService=require(_0x5e60('0x12'));var qs=require(_0x5e60('0x13'));var as=require(_0x5e60('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e60('0x15'))('api');var utils=require(_0x5e60('0x16'));var config=require(_0x5e60('0x17'));var licenseUtil=require(_0x5e60('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5e60('0x19'));function respondWithStatusCode(_0x178782,_0x1f4e14){_0x1f4e14=_0x1f4e14||0xcc;return function(_0xe039de){if(_0xe039de){return _0x178782[_0x5e60('0x1a')](_0x1f4e14);}return _0x178782[_0x5e60('0x1b')](_0x1f4e14)['end']();};}function respondWithResult(_0x209adb,_0x45304f){_0x45304f=_0x45304f||0xc8;return function(_0x21e3c8){if(_0x21e3c8){return _0x209adb[_0x5e60('0x1b')](_0x45304f)['json'](_0x21e3c8);}};}function respondWithFilteredResult(_0x20af5f,_0x529ffe){return function(_0x1ffd77){if(_0x1ffd77){var _0x3bc7d8=typeof _0x529ffe['offset']===_0x5e60('0x1c')&&typeof _0x529ffe[_0x5e60('0x1d')]===_0x5e60('0x1c');var _0x43045a=_0x1ffd77['count'];var _0xdd0a71=_0x3bc7d8?0x0:_0x529ffe[_0x5e60('0x1e')];var _0x52cc15=_0x3bc7d8?_0x1ffd77[_0x5e60('0x1f')]:_0x529ffe[_0x5e60('0x1e')]+_0x529ffe[_0x5e60('0x1d')];var _0x311fef;if(_0x52cc15>=_0x43045a){_0x52cc15=_0x43045a;_0x311fef=0xc8;}else{_0x311fef=0xce;}_0x20af5f[_0x5e60('0x1b')](_0x311fef);return _0x20af5f[_0x5e60('0x20')](_0x5e60('0x21'),_0xdd0a71+'-'+_0x52cc15+'/'+_0x43045a)[_0x5e60('0x22')](_0x1ffd77);}return null;};}function patchUpdates(_0x3282e4){return function(_0x45f1a6){try{jsonpatch[_0x5e60('0x23')](_0x45f1a6,_0x3282e4,!![]);}catch(_0x578437){return BPromise[_0x5e60('0x24')](_0x578437);}return _0x45f1a6['save']();};}function saveUpdates(_0x376069,_0x1a44e5){return function(_0x2b0bae){if(_0x2b0bae){return _0x2b0bae[_0x5e60('0x25')](_0x376069)[_0x5e60('0x26')](function(_0x2a499e){return _0x2a499e;});}return null;};}function removeEntity(_0x2636f1,_0x5d2c03){return function(_0x18d527){if(_0x18d527){return _0x18d527[_0x5e60('0x27')]()[_0x5e60('0x26')](function(){_0x2636f1['status'](0xcc)[_0x5e60('0x28')]();});}};}function handleEntityNotFound(_0x56e3a5,_0x2d8aac){return function(_0x153459){if(!_0x153459){_0x56e3a5['sendStatus'](0x194);}return _0x153459;};}function handleError(_0x3bedea,_0x5712f7){_0x5712f7=_0x5712f7||0x1f4;return function(_0x23d187){logger[_0x5e60('0x29')](_0x23d187['stack']);if(_0x23d187[_0x5e60('0x2a')]){delete _0x23d187[_0x5e60('0x2a')];}_0x3bedea['status'](_0x5712f7)[_0x5e60('0x2b')](_0x23d187);};}exports[_0x5e60('0x2c')]=function(_0x52c97c,_0x5431a8){var _0x52f668={},_0xf25956={},_0x235cc7={'count':0x0,'rows':[]};var _0x2e8e9e=_[_0x5e60('0x2d')](db[_0x5e60('0x2e')]['rawAttributes'],function(_0x168ce6){return{'name':_0x168ce6[_0x5e60('0x2f')],'type':_0x168ce6['type'][_0x5e60('0x30')]};});_0xf25956['model']=_['map'](_0x2e8e9e,_0x5e60('0x2a'));_0xf25956[_0x5e60('0x31')]=_[_0x5e60('0x32')](_0x52c97c[_0x5e60('0x31')]);_0xf25956[_0x5e60('0x33')]=_[_0x5e60('0x34')](_0xf25956[_0x5e60('0x35')],_0xf25956[_0x5e60('0x31')]);_0x52f668[_0x5e60('0x36')]=_[_0x5e60('0x34')](_0xf25956['model'],qs[_0x5e60('0x37')](_0x52c97c['query']['fields']));_0x52f668[_0x5e60('0x36')]=_0x52f668[_0x5e60('0x36')]['length']?_0x52f668[_0x5e60('0x36')]:_0xf25956['model'];if(!_0x52c97c[_0x5e60('0x31')][_0x5e60('0x38')](_0x5e60('0x39'))){_0x52f668[_0x5e60('0x1d')]=qs[_0x5e60('0x1d')](_0x52c97c[_0x5e60('0x31')][_0x5e60('0x1d')]);_0x52f668[_0x5e60('0x1e')]=qs['offset'](_0x52c97c[_0x5e60('0x31')][_0x5e60('0x1e')]);}_0x52f668[_0x5e60('0x3a')]=qs[_0x5e60('0x3b')](_0x52c97c[_0x5e60('0x31')][_0x5e60('0x3b')]);_0x52f668[_0x5e60('0x3c')]=qs['filters'](_[_0x5e60('0x3d')](_0x52c97c[_0x5e60('0x31')],_0xf25956['filters']),_0x2e8e9e);if(_0x52c97c['query'][_0x5e60('0x3e')]){_0x52f668[_0x5e60('0x3c')]=_[_0x5e60('0x3f')](_0x52f668[_0x5e60('0x3c')],{'$or':_[_0x5e60('0x2d')](_0x2e8e9e,function(_0x4d2cd0){if(_0x4d2cd0[_0x5e60('0x40')]!==_0x5e60('0x41')){var _0x415208={};_0x415208[_0x4d2cd0[_0x5e60('0x2a')]]={'$like':'%'+_0x52c97c[_0x5e60('0x31')][_0x5e60('0x3e')]+'%'};return _0x415208;}})});}_0x52f668=_[_0x5e60('0x3f')]({},_0x52f668,_0x52c97c['options']);var _0x401bf1={'where':_0x52f668[_0x5e60('0x3c')]};return db['ZendeskAccount']['count'](_0x401bf1)['then'](function(_0x15a97b){_0x235cc7[_0x5e60('0x1f')]=_0x15a97b;if(_0x52c97c[_0x5e60('0x31')][_0x5e60('0x42')]){_0x52f668['include']=[{'all':!![]}];}return db[_0x5e60('0x2e')][_0x5e60('0x43')](_0x52f668);})['then'](function(_0x5bda22){_0x235cc7[_0x5e60('0x44')]=_0x5bda22;return _0x235cc7;})[_0x5e60('0x26')](respondWithFilteredResult(_0x5431a8,_0x52f668))[_0x5e60('0x45')](handleError(_0x5431a8,null));};exports[_0x5e60('0x46')]=function(_0x39ab09,_0x3899ae){var _0x2522d2={'raw':![],'where':{'id':_0x39ab09[_0x5e60('0x47')]['id']}},_0x2812e1={};_0x2812e1['model']=_[_0x5e60('0x32')](db[_0x5e60('0x2e')]['rawAttributes']);_0x2812e1[_0x5e60('0x31')]=_[_0x5e60('0x32')](_0x39ab09[_0x5e60('0x31')]);_0x2812e1[_0x5e60('0x33')]=_[_0x5e60('0x34')](_0x2812e1['model'],_0x2812e1[_0x5e60('0x31')]);_0x2522d2[_0x5e60('0x36')]=_[_0x5e60('0x34')](_0x2812e1[_0x5e60('0x35')],qs['fields'](_0x39ab09['query']['fields']));_0x2522d2[_0x5e60('0x36')]=_0x2522d2[_0x5e60('0x36')][_0x5e60('0x48')]?_0x2522d2[_0x5e60('0x36')]:_0x2812e1[_0x5e60('0x35')];if(_0x39ab09[_0x5e60('0x31')]['includeAll']){_0x2522d2[_0x5e60('0x49')]=[{'all':!![]}];}_0x2522d2=_[_0x5e60('0x3f')]({},_0x2522d2,_0x39ab09[_0x5e60('0x4a')]);return db[_0x5e60('0x2e')][_0x5e60('0x4b')](_0x2522d2)[_0x5e60('0x26')](handleEntityNotFound(_0x3899ae,null))[_0x5e60('0x26')](respondWithResult(_0x3899ae,null))['catch'](handleError(_0x3899ae,null));};exports[_0x5e60('0x4c')]=function(_0x3ed45d,_0x21a116){return db[_0x5e60('0x2e')][_0x5e60('0x4c')](_0x3ed45d[_0x5e60('0x4d')],{})[_0x5e60('0x26')](respondWithResult(_0x21a116,0xc9))[_0x5e60('0x45')](handleError(_0x21a116,null));};exports[_0x5e60('0x25')]=function(_0x350d6d,_0xe5e675){if(_0x350d6d[_0x5e60('0x4d')]['id']){delete _0x350d6d[_0x5e60('0x4d')]['id'];}return db[_0x5e60('0x2e')][_0x5e60('0x4b')]({'where':{'id':_0x350d6d[_0x5e60('0x47')]['id']}})[_0x5e60('0x26')](handleEntityNotFound(_0xe5e675,null))[_0x5e60('0x26')](saveUpdates(_0x350d6d['body'],null))['then'](respondWithResult(_0xe5e675,null))[_0x5e60('0x45')](handleError(_0xe5e675,null));};exports['destroy']=function(_0x3525d,_0x1d247e){return db[_0x5e60('0x2e')][_0x5e60('0x4b')]({'where':{'id':_0x3525d[_0x5e60('0x47')]['id']}})[_0x5e60('0x26')](handleEntityNotFound(_0x1d247e,null))['then'](removeEntity(_0x1d247e,null))['catch'](handleError(_0x1d247e,null));};exports[_0x5e60('0x4e')]=function(_0x1e4e41,_0x457c37,_0x4a2d67){var _0x594068={};var _0x31ced8={};var _0x46f3ba;var _0x179cc6;return db['ZendeskAccount'][_0x5e60('0x4f')]({'where':{'id':_0x1e4e41[_0x5e60('0x47')]['id']}})[_0x5e60('0x26')](handleEntityNotFound(_0x457c37,null))[_0x5e60('0x26')](function(_0x17d002){if(_0x17d002){_0x46f3ba=_0x17d002;_0x31ced8[_0x5e60('0x35')]=_['keys'](db[_0x5e60('0x50')][_0x5e60('0x51')]);_0x31ced8['query']=_[_0x5e60('0x32')](_0x1e4e41[_0x5e60('0x31')]);_0x31ced8[_0x5e60('0x33')]=_['intersection'](_0x31ced8[_0x5e60('0x35')],_0x31ced8[_0x5e60('0x31')]);_0x594068['attributes']=_[_0x5e60('0x34')](_0x31ced8[_0x5e60('0x35')],qs[_0x5e60('0x37')](_0x1e4e41[_0x5e60('0x31')]['fields']));_0x594068[_0x5e60('0x36')]=_0x594068[_0x5e60('0x36')]['length']?_0x594068[_0x5e60('0x36')]:_0x31ced8['model'];_0x594068[_0x5e60('0x3a')]=qs['sort'](_0x1e4e41[_0x5e60('0x31')][_0x5e60('0x3b')]);_0x594068['where']=qs[_0x5e60('0x33')](_['pick'](_0x1e4e41[_0x5e60('0x31')],_0x31ced8['filters']));if(_0x1e4e41[_0x5e60('0x31')]['filter']){_0x594068[_0x5e60('0x3c')]=_[_0x5e60('0x3f')](_0x594068[_0x5e60('0x3c')],{'$or':_[_0x5e60('0x2d')](_0x594068[_0x5e60('0x36')],function(_0x2b8343){var _0x3d1e35={};_0x3d1e35[_0x2b8343]={'$like':'%'+_0x1e4e41['query'][_0x5e60('0x3e')]+'%'};return _0x3d1e35;})});}_0x594068=_[_0x5e60('0x3f')]({},_0x594068,_0x1e4e41[_0x5e60('0x4a')]);return _0x46f3ba[_0x5e60('0x4e')](_0x594068);}})[_0x5e60('0x26')](function(_0x35aad7){if(_0x35aad7){_0x179cc6=_0x35aad7['length'];if(!_0x1e4e41['query']['hasOwnProperty'](_0x5e60('0x39'))){_0x594068[_0x5e60('0x1d')]=qs['limit'](_0x1e4e41[_0x5e60('0x31')][_0x5e60('0x1d')]);_0x594068['offset']=qs[_0x5e60('0x1e')](_0x1e4e41[_0x5e60('0x31')][_0x5e60('0x1e')]);}return _0x46f3ba[_0x5e60('0x4e')](_0x594068);}})[_0x5e60('0x26')](function(_0xcd2232){if(_0xcd2232){return _0xcd2232?{'count':_0x179cc6,'rows':_0xcd2232}:null;}})[_0x5e60('0x26')](respondWithResult(_0x457c37,null))[_0x5e60('0x45')](handleError(_0x457c37,null));};exports[_0x5e60('0x52')]=function(_0x406c3a,_0x157aad,_0x15921d){if(_0x406c3a[_0x5e60('0x4d')]['id']){delete _0x406c3a[_0x5e60('0x4d')]['id'];}return db[_0x5e60('0x2e')][_0x5e60('0x4f')]({'where':{'id':_0x406c3a[_0x5e60('0x47')]['id']}})['then'](handleEntityNotFound(_0x157aad,null))[_0x5e60('0x26')](function(_0x1706d6){if(_0x1706d6){_0x406c3a[_0x5e60('0x4d')]['AccountId']=_0x1706d6['id'];_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x53')]=integrations['getSubjects'](_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x54')],_0x406c3a['body'][_0x5e60('0x40')]);_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x55')]=integrations[_0x5e60('0x56')](_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x54')],_0x406c3a[_0x5e60('0x4d')][_0x5e60('0x40')]);return db[_0x5e60('0x50')]['create'](_0x406c3a[_0x5e60('0x4d')],{'include':[{'model':db[_0x5e60('0x57')],'as':_0x5e60('0x53')},{'model':db['ZendeskField'],'as':_0x5e60('0x55')}]});}return null;})[_0x5e60('0x26')](respondWithResult(_0x157aad,null))[_0x5e60('0x45')](handleError(_0x157aad,null));};exports[_0x5e60('0x58')]=function(_0x3e85fe,_0x559f8c,_0x4560e1){var _0x213c7e='';return db[_0x5e60('0x2e')]['findOne']({'where':{'id':_0x3e85fe['params']['id']},'attributes':['id',_0x5e60('0x59'),_0x5e60('0x5a'),_0x5e60('0x5b'),_0x5e60('0x5c'),_0x5e60('0x5d')]})[_0x5e60('0x26')](handleEntityNotFound(_0x559f8c,null))[_0x5e60('0x26')](function(_0x563e69){if(_0x563e69){_0x213c7e=_0x563e69[_0x5e60('0x5d')];var _0x199edd=_0x213c7e[_0x5e60('0x5e')](-0x1);if(_0x199edd==='/'){_0x213c7e=_0x213c7e['substring'](0x0,_0x213c7e['lastIndexOf'](_0x199edd));}var _0x447bd3={'method':_0x5e60('0x5f'),'uri':util[_0x5e60('0x60')]('%s/%s',_0x213c7e,'ticket_fields'),'json':!![]};switch(_0x563e69[_0x5e60('0x5c')]){case _0x5e60('0x5a'):_0x447bd3[_0x5e60('0x61')]={'Authorization':util[_0x5e60('0x60')](_0x5e60('0x62'),new Buffer(util[_0x5e60('0x60')]('%s:%s',_0x563e69[_0x5e60('0x59')],_0x563e69[_0x5e60('0x5a')]))[_0x5e60('0x63')](_0x5e60('0x64')))};break;case _0x5e60('0x5b'):_0x447bd3[_0x5e60('0x61')]={'Authorization':util[_0x5e60('0x60')](_0x5e60('0x62'),new Buffer(util[_0x5e60('0x60')]('%s/token:%s',_0x563e69[_0x5e60('0x59')],_0x563e69[_0x5e60('0x5b')]))['toString'](_0x5e60('0x64')))};break;default:throw new db[(_0x5e60('0x65'))]['ValidationError'](_0x5e60('0x66'));}return rp(_0x447bd3);}})[_0x5e60('0x26')](function(_0x391505){if(_0x391505){var _0x1b4aee=[_0x5e60('0x67'),_0x5e60('0x68'),'group',_0x5e60('0x69')];_[_0x5e60('0x6a')](_0x391505[_0x5e60('0x6b')],function(_0x222d94){return _0x1b4aee[_0x5e60('0x6c')](_0x222d94[_0x5e60('0x40')]);});return{'count':_0x391505[_0x5e60('0x6b')][_0x5e60('0x48')],'rows':_[_0x5e60('0x2d')](_0x391505['ticket_fields'],function(_0x10b77b){return{'id':_0x10b77b['id'],'name':_0x10b77b[_0x5e60('0x6d')]>0x7?_0x10b77b[_0x5e60('0x6e')]:_0x10b77b[_0x5e60('0x40')],'custom':_0x10b77b[_0x5e60('0x6d')]>0x7?!![]:![],'options':_0x10b77b[_0x5e60('0x6f')]?_0x10b77b[_0x5e60('0x6f')]:_0x10b77b[_0x5e60('0x70')]?_0x10b77b[_0x5e60('0x70')]:[]};})};}})[_0x5e60('0x26')](respondWithResult(_0x559f8c,null))['catch'](function(_0x5ab78f){var _0x5d2839=_0x3e85fe[_0x5e60('0x31')][_0x5e60('0x71')]?0x1f4:_0x5ab78f[_0x5e60('0x72')]||0x1f4;logger[_0x5e60('0x29')](_0x5e60('0x73'),_0x5e60('0x58'),_0x5d2839,JSON[_0x5e60('0x74')](_0x5ab78f));delete _0x5ab78f[_0x5e60('0x2a')];if(_0x5d2839===0x191){_0x5d2839=0x190;}_0x559f8c[_0x5e60('0x1b')](_0x5d2839)['send'](_0x3e85fe[_0x5e60('0x31')][_0x5e60('0x71')]?{'message':_0x5e60('0x75'),'statusCode':_0x5ab78f['statusCode']}:_0x5ab78f);});};
\ No newline at end of file
+var _0x373d=['ZendeskField','username','password','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','base64','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','remove','includes','position','title','system_field_options','custom_field_options','test','stringify','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','ZendeskAccount','rows','catch','show','keys','rawAttributes','find','create','body','params','findOne','options','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions'];(function(_0x1de2bd,_0x953fb){var _0x595960=function(_0xea260b){while(--_0xea260b){_0x1de2bd['push'](_0x1de2bd['shift']());}};_0x595960(++_0x953fb);}(_0x373d,0x1e2));var _0xd373=function(_0x385d5f,_0x43c178){_0x385d5f=_0x385d5f-0x0;var _0x17dcd8=_0x373d[_0x385d5f];return _0x17dcd8;};'use strict';var emlformat=require(_0xd373('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd373('0x1'));var jsonpatch=require(_0xd373('0x2'));var rp=require(_0xd373('0x3'));var moment=require(_0xd373('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd373('0x5'));var util=require(_0xd373('0x6'));var path=require(_0xd373('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd373('0x8'));var fs=require('fs');var fs_extra=require(_0xd373('0x9'));var _=require(_0xd373('0xa'));var squel=require(_0xd373('0xb'));var crypto=require('crypto');var jsforce=require(_0xd373('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd373('0xd'));var Redis=require(_0xd373('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd373('0xf'));var as=require(_0xd373('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd373('0x11'));var utils=require(_0xd373('0x12'));var config=require(_0xd373('0x13'));var licenseUtil=require(_0xd373('0x14'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5ab89c,_0xcd9b8c){_0xcd9b8c=_0xcd9b8c||0xcc;return function(_0x14a0ee){if(_0x14a0ee){return _0x5ab89c['sendStatus'](_0xcd9b8c);}return _0x5ab89c[_0xd373('0x15')](_0xcd9b8c)[_0xd373('0x16')]();};}function respondWithResult(_0x27c161,_0x23ed86){_0x23ed86=_0x23ed86||0xc8;return function(_0x28b2bf){if(_0x28b2bf){return _0x27c161[_0xd373('0x15')](_0x23ed86)[_0xd373('0x17')](_0x28b2bf);}};}function respondWithFilteredResult(_0x2eacb1,_0x5a286a){return function(_0x2c5854){if(_0x2c5854){var _0x3a5316=typeof _0x5a286a[_0xd373('0x18')]===_0xd373('0x19')&&typeof _0x5a286a['limit']===_0xd373('0x19');var _0x5eab00=_0x2c5854[_0xd373('0x1a')];var _0x36d47a=_0x3a5316?0x0:_0x5a286a['offset'];var _0x1bbdbd=_0x3a5316?_0x2c5854['count']:_0x5a286a['offset']+_0x5a286a[_0xd373('0x1b')];var _0x186fdd;if(_0x1bbdbd>=_0x5eab00){_0x1bbdbd=_0x5eab00;_0x186fdd=0xc8;}else{_0x186fdd=0xce;}_0x2eacb1[_0xd373('0x15')](_0x186fdd);return _0x2eacb1[_0xd373('0x1c')](_0xd373('0x1d'),_0x36d47a+'-'+_0x1bbdbd+'/'+_0x5eab00)[_0xd373('0x17')](_0x2c5854);}return null;};}function patchUpdates(_0x4ba510){return function(_0x18b681){try{jsonpatch[_0xd373('0x1e')](_0x18b681,_0x4ba510,!![]);}catch(_0x1378a0){return BPromise[_0xd373('0x1f')](_0x1378a0);}return _0x18b681[_0xd373('0x20')]();};}function saveUpdates(_0x3aa1c5,_0x4f64bd){return function(_0x355fca){if(_0x355fca){return _0x355fca[_0xd373('0x21')](_0x3aa1c5)[_0xd373('0x22')](function(_0x209ca7){return _0x209ca7;});}return null;};}function removeEntity(_0x217ee7,_0x238ffd){return function(_0x466a03){if(_0x466a03){return _0x466a03[_0xd373('0x23')]()[_0xd373('0x22')](function(){_0x217ee7[_0xd373('0x15')](0xcc)[_0xd373('0x16')]();});}};}function handleEntityNotFound(_0x34f05a,_0x388182){return function(_0x420a30){if(!_0x420a30){_0x34f05a[_0xd373('0x24')](0x194);}return _0x420a30;};}function handleError(_0x38ba50,_0x50b987){_0x50b987=_0x50b987||0x1f4;return function(_0x13a012){logger[_0xd373('0x25')](_0x13a012[_0xd373('0x26')]);if(_0x13a012[_0xd373('0x27')]){delete _0x13a012[_0xd373('0x27')];}_0x38ba50[_0xd373('0x15')](_0x50b987)[_0xd373('0x28')](_0x13a012);};}exports[_0xd373('0x29')]=function(_0x2869e5,_0x158825){var _0xbc420b={},_0x2ee37c={},_0x7dad3e={'count':0x0,'rows':[]};var _0x5287e7=_[_0xd373('0x2a')](db['ZendeskAccount']['rawAttributes'],function(_0xedc8f3){return{'name':_0xedc8f3[_0xd373('0x2b')],'type':_0xedc8f3[_0xd373('0x2c')][_0xd373('0x2d')]};});_0x2ee37c[_0xd373('0x2e')]=_['map'](_0x5287e7,_0xd373('0x27'));_0x2ee37c[_0xd373('0x2f')]=_['keys'](_0x2869e5[_0xd373('0x2f')]);_0x2ee37c[_0xd373('0x30')]=_[_0xd373('0x31')](_0x2ee37c[_0xd373('0x2e')],_0x2ee37c[_0xd373('0x2f')]);_0xbc420b[_0xd373('0x32')]=_[_0xd373('0x31')](_0x2ee37c[_0xd373('0x2e')],qs[_0xd373('0x33')](_0x2869e5['query'][_0xd373('0x33')]));_0xbc420b[_0xd373('0x32')]=_0xbc420b[_0xd373('0x32')][_0xd373('0x34')]?_0xbc420b[_0xd373('0x32')]:_0x2ee37c[_0xd373('0x2e')];if(!_0x2869e5[_0xd373('0x2f')][_0xd373('0x35')](_0xd373('0x36'))){_0xbc420b[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0x2869e5[_0xd373('0x2f')][_0xd373('0x1b')]);_0xbc420b[_0xd373('0x18')]=qs[_0xd373('0x18')](_0x2869e5['query'][_0xd373('0x18')]);}_0xbc420b[_0xd373('0x37')]=qs[_0xd373('0x38')](_0x2869e5[_0xd373('0x2f')]['sort']);_0xbc420b[_0xd373('0x39')]=qs[_0xd373('0x30')](_[_0xd373('0x3a')](_0x2869e5[_0xd373('0x2f')],_0x2ee37c[_0xd373('0x30')]),_0x5287e7);if(_0x2869e5[_0xd373('0x2f')]['filter']){_0xbc420b['where']=_[_0xd373('0x3b')](_0xbc420b['where'],{'$or':_[_0xd373('0x2a')](_0x5287e7,function(_0xe19d5b){if(_0xe19d5b[_0xd373('0x2c')]!=='VIRTUAL'){var _0x287136={};_0x287136[_0xe19d5b[_0xd373('0x27')]]={'$like':'%'+_0x2869e5[_0xd373('0x2f')][_0xd373('0x3c')]+'%'};return _0x287136;}})});}_0xbc420b=_['merge']({},_0xbc420b,_0x2869e5['options']);var _0x5de74e={'where':_0xbc420b[_0xd373('0x39')]};return db['ZendeskAccount'][_0xd373('0x1a')](_0x5de74e)[_0xd373('0x22')](function(_0x4e5e80){_0x7dad3e['count']=_0x4e5e80;if(_0x2869e5['query'][_0xd373('0x3d')]){_0xbc420b[_0xd373('0x3e')]=[{'all':!![]}];}return db[_0xd373('0x3f')]['findAll'](_0xbc420b);})['then'](function(_0xb87e16){_0x7dad3e[_0xd373('0x40')]=_0xb87e16;return _0x7dad3e;})['then'](respondWithFilteredResult(_0x158825,_0xbc420b))[_0xd373('0x41')](handleError(_0x158825,null));};exports[_0xd373('0x42')]=function(_0x1e3de1,_0x9989e4){var _0x2d8c7d={'raw':![],'where':{'id':_0x1e3de1['params']['id']}},_0x4e8bc6={};_0x4e8bc6[_0xd373('0x2e')]=_[_0xd373('0x43')](db[_0xd373('0x3f')][_0xd373('0x44')]);_0x4e8bc6['query']=_[_0xd373('0x43')](_0x1e3de1['query']);_0x4e8bc6[_0xd373('0x30')]=_[_0xd373('0x31')](_0x4e8bc6[_0xd373('0x2e')],_0x4e8bc6[_0xd373('0x2f')]);_0x2d8c7d[_0xd373('0x32')]=_['intersection'](_0x4e8bc6[_0xd373('0x2e')],qs[_0xd373('0x33')](_0x1e3de1['query'][_0xd373('0x33')]));_0x2d8c7d[_0xd373('0x32')]=_0x2d8c7d[_0xd373('0x32')][_0xd373('0x34')]?_0x2d8c7d[_0xd373('0x32')]:_0x4e8bc6[_0xd373('0x2e')];if(_0x1e3de1[_0xd373('0x2f')][_0xd373('0x3d')]){_0x2d8c7d[_0xd373('0x3e')]=[{'all':!![]}];}_0x2d8c7d=_[_0xd373('0x3b')]({},_0x2d8c7d,_0x1e3de1['options']);return db['ZendeskAccount'][_0xd373('0x45')](_0x2d8c7d)['then'](handleEntityNotFound(_0x9989e4,null))[_0xd373('0x22')](respondWithResult(_0x9989e4,null))['catch'](handleError(_0x9989e4,null));};exports['create']=function(_0x5cbc16,_0x280598){return db[_0xd373('0x3f')][_0xd373('0x46')](_0x5cbc16[_0xd373('0x47')],{})[_0xd373('0x22')](respondWithResult(_0x280598,0xc9))[_0xd373('0x41')](handleError(_0x280598,null));};exports[_0xd373('0x21')]=function(_0x4d1088,_0x28ec3e){if(_0x4d1088['body']['id']){delete _0x4d1088[_0xd373('0x47')]['id'];}return db[_0xd373('0x3f')]['find']({'where':{'id':_0x4d1088[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x28ec3e,null))[_0xd373('0x22')](saveUpdates(_0x4d1088[_0xd373('0x47')],null))[_0xd373('0x22')](respondWithResult(_0x28ec3e,null))[_0xd373('0x41')](handleError(_0x28ec3e,null));};exports[_0xd373('0x23')]=function(_0x4bc631,_0x4971a0){return db['ZendeskAccount'][_0xd373('0x45')]({'where':{'id':_0x4bc631[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x4971a0,null))[_0xd373('0x22')](removeEntity(_0x4971a0,null))[_0xd373('0x41')](handleError(_0x4971a0,null));};exports['getConfigurations']=function(_0xae7067,_0xb6b583,_0x102101){var _0x473af2={};var _0x3b5e70={};var _0xa2758;var _0xc255ec;return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0xae7067[_0xd373('0x48')]['id']}})[_0xd373('0x22')](handleEntityNotFound(_0xb6b583,null))['then'](function(_0x4b2645){if(_0x4b2645){_0xa2758=_0x4b2645;_0x3b5e70['model']=_['keys'](db['ZendeskConfiguration']['rawAttributes']);_0x3b5e70[_0xd373('0x2f')]=_[_0xd373('0x43')](_0xae7067['query']);_0x3b5e70['filters']=_['intersection'](_0x3b5e70[_0xd373('0x2e')],_0x3b5e70[_0xd373('0x2f')]);_0x473af2['attributes']=_['intersection'](_0x3b5e70[_0xd373('0x2e')],qs[_0xd373('0x33')](_0xae7067[_0xd373('0x2f')][_0xd373('0x33')]));_0x473af2[_0xd373('0x32')]=_0x473af2['attributes'][_0xd373('0x34')]?_0x473af2[_0xd373('0x32')]:_0x3b5e70[_0xd373('0x2e')];_0x473af2[_0xd373('0x37')]=qs[_0xd373('0x38')](_0xae7067[_0xd373('0x2f')][_0xd373('0x38')]);_0x473af2[_0xd373('0x39')]=qs[_0xd373('0x30')](_[_0xd373('0x3a')](_0xae7067[_0xd373('0x2f')],_0x3b5e70[_0xd373('0x30')]));if(_0xae7067[_0xd373('0x2f')][_0xd373('0x3c')]){_0x473af2[_0xd373('0x39')]=_['merge'](_0x473af2[_0xd373('0x39')],{'$or':_[_0xd373('0x2a')](_0x473af2[_0xd373('0x32')],function(_0x4dba1d){var _0x2bdadf={};_0x2bdadf[_0x4dba1d]={'$like':'%'+_0xae7067['query'][_0xd373('0x3c')]+'%'};return _0x2bdadf;})});}_0x473af2=_['merge']({},_0x473af2,_0xae7067[_0xd373('0x4a')]);return _0xa2758[_0xd373('0x4b')](_0x473af2);}})[_0xd373('0x22')](function(_0x19924a){if(_0x19924a){_0xc255ec=_0x19924a[_0xd373('0x34')];if(!_0xae7067[_0xd373('0x2f')][_0xd373('0x35')](_0xd373('0x36'))){_0x473af2[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0xae7067[_0xd373('0x2f')][_0xd373('0x1b')]);_0x473af2[_0xd373('0x18')]=qs[_0xd373('0x18')](_0xae7067[_0xd373('0x2f')][_0xd373('0x18')]);}return _0xa2758[_0xd373('0x4b')](_0x473af2);}})[_0xd373('0x22')](function(_0x209e76){if(_0x209e76){return _0x209e76?{'count':_0xc255ec,'rows':_0x209e76}:null;}})[_0xd373('0x22')](respondWithResult(_0xb6b583,null))[_0xd373('0x41')](handleError(_0xb6b583,null));};exports[_0xd373('0x4c')]=function(_0x296242,_0x5133,_0x2ada2f){if(_0x296242[_0xd373('0x47')]['id']){delete _0x296242['body']['id'];}return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0x296242[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x5133,null))[_0xd373('0x22')](function(_0x2d9019){if(_0x2d9019){_0x296242[_0xd373('0x47')][_0xd373('0x4d')]=_0x2d9019['id'];_0x296242[_0xd373('0x47')][_0xd373('0x4e')]=integrations[_0xd373('0x4f')](_0x296242['body'][_0xd373('0x50')],_0x296242[_0xd373('0x47')][_0xd373('0x2c')]);_0x296242[_0xd373('0x47')][_0xd373('0x51')]=integrations[_0xd373('0x52')](_0x296242[_0xd373('0x47')][_0xd373('0x50')],_0x296242['body'][_0xd373('0x2c')]);return db['ZendeskConfiguration'][_0xd373('0x46')](_0x296242[_0xd373('0x47')],{'include':[{'model':db[_0xd373('0x53')],'as':_0xd373('0x4e')},{'model':db[_0xd373('0x53')],'as':_0xd373('0x51')}]});}return null;})[_0xd373('0x22')](respondWithResult(_0x5133,null))[_0xd373('0x41')](handleError(_0x5133,null));};exports['getFields']=function(_0x237f15,_0x5c5855,_0x40f5ad){var _0x27fcbe='';return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0x237f15[_0xd373('0x48')]['id']},'attributes':['id',_0xd373('0x54'),_0xd373('0x55'),'token',_0xd373('0x56'),_0xd373('0x57')]})[_0xd373('0x22')](handleEntityNotFound(_0x5c5855,null))['then'](function(_0x4035d4){if(_0x4035d4){_0x27fcbe=_0x4035d4[_0xd373('0x57')];var _0xaf9102=_0x27fcbe[_0xd373('0x58')](-0x1);if(_0xaf9102==='/'){_0x27fcbe=_0x27fcbe[_0xd373('0x59')](0x0,_0x27fcbe[_0xd373('0x5a')](_0xaf9102));}var _0x6c7c8d={'method':_0xd373('0x5b'),'uri':util[_0xd373('0x5c')](_0xd373('0x5d'),_0x27fcbe,_0xd373('0x5e')),'json':!![]};switch(_0x4035d4[_0xd373('0x56')]){case'password':_0x6c7c8d[_0xd373('0x5f')]={'Authorization':util[_0xd373('0x5c')](_0xd373('0x60'),new Buffer(util['format'](_0xd373('0x61'),_0x4035d4[_0xd373('0x54')],_0x4035d4[_0xd373('0x55')]))['toString'](_0xd373('0x62')))};break;case'token':_0x6c7c8d[_0xd373('0x5f')]={'Authorization':util[_0xd373('0x5c')](_0xd373('0x60'),new Buffer(util[_0xd373('0x5c')]('%s/token:%s',_0x4035d4[_0xd373('0x54')],_0x4035d4['token']))[_0xd373('0x63')](_0xd373('0x62')))};break;default:throw new db[(_0xd373('0x64'))][(_0xd373('0x65'))](_0xd373('0x66'));}return rp(_0x6c7c8d);}})[_0xd373('0x22')](function(_0x53c0a7){if(_0x53c0a7){var _0xb01a00=['subject',_0xd373('0x67'),'group','assignee'];_[_0xd373('0x68')](_0x53c0a7[_0xd373('0x5e')],function(_0x1cff58){return _0xb01a00[_0xd373('0x69')](_0x1cff58['type']);});return{'count':_0x53c0a7['ticket_fields'][_0xd373('0x34')],'rows':_[_0xd373('0x2a')](_0x53c0a7[_0xd373('0x5e')],function(_0x25bf55){return{'id':_0x25bf55['id'],'name':_0x25bf55[_0xd373('0x6a')]>0x7?_0x25bf55[_0xd373('0x6b')]:_0x25bf55[_0xd373('0x2c')],'custom':_0x25bf55[_0xd373('0x6a')]>0x7?!![]:![],'options':_0x25bf55[_0xd373('0x6c')]?_0x25bf55[_0xd373('0x6c')]:_0x25bf55['custom_field_options']?_0x25bf55[_0xd373('0x6d')]:[]};})};}})[_0xd373('0x22')](respondWithResult(_0x5c5855,null))[_0xd373('0x41')](function(_0xa77a42){var _0x9bdd39=_0x237f15[_0xd373('0x2f')][_0xd373('0x6e')]?0x1f4:_0xa77a42['statusCode']||0x1f4;logger[_0xd373('0x25')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x9bdd39,JSON[_0xd373('0x6f')](_0xa77a42));delete _0xa77a42[_0xd373('0x27')];if(_0x9bdd39===0x191){_0x9bdd39=0x190;}_0x5c5855[_0xd373('0x15')](_0x9bdd39)[_0xd373('0x28')](_0x237f15[_0xd373('0x2f')][_0xd373('0x6e')]?{'message':'Wrong\x20credentials','statusCode':_0xa77a42[_0xd373('0x70')]}:_0xa77a42);});};
\ No newline at end of file
index 3b2e792..1f87d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f48=['./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x511631,_0x5064b0){var _0x4f86b4=function(_0x163522){while(--_0x163522){_0x511631['push'](_0x511631['shift']());}};_0x4f86b4(++_0x5064b0);}(_0x0f48,0x165));var _0x80f4=function(_0x1fbf96,_0x1d1fb7){_0x1fbf96=_0x1fbf96-0x0;var _0x3017d7=_0x0f48[_0x1fbf96];return _0x3017d7;};'use strict';var _=require(_0x80f4('0x0'));var util=require(_0x80f4('0x1'));var logger=require('../../config/logger')(_0x80f4('0x2'));var moment=require(_0x80f4('0x3'));var BPromise=require(_0x80f4('0x4'));var rp=require(_0x80f4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x80f4('0x6'));var attributes=require(_0x80f4('0x7'));var integrations=require(_0x80f4('0x8'));module[_0x80f4('0x9')]=function(_0x1c5e5b,_0x34800f){return _0x1c5e5b[_0x80f4('0xa')](_0x80f4('0xb'),attributes,{'tableName':_0x80f4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x22b0=['../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes'];(function(_0xa4f636,_0xaca1b6){var _0x37e02a=function(_0x49bd47){while(--_0x49bd47){_0xa4f636['push'](_0xa4f636['shift']());}};_0x37e02a(++_0xaca1b6);}(_0x22b0,0x17c));var _0x022b=function(_0x50278b,_0xfb0e2c){_0x50278b=_0x50278b-0x0;var _0x2c952f=_0x22b0[_0x50278b];return _0x2c952f;};'use strict';var _=require('lodash');var util=require(_0x022b('0x0'));var logger=require(_0x022b('0x1'))(_0x022b('0x2'));var moment=require(_0x022b('0x3'));var BPromise=require(_0x022b('0x4'));var rp=require(_0x022b('0x5'));var fs=require('fs');var path=require(_0x022b('0x6'));var rimraf=require(_0x022b('0x7'));var config=require(_0x022b('0x8'));var attributes=require(_0x022b('0x9'));var integrations=require(_0x022b('0xa'));module[_0x022b('0xb')]=function(_0x328696,_0x18e752){return _0x328696[_0x022b('0xc')](_0x022b('0xd'),attributes,{'tableName':_0x022b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7cff0a1..d617096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2d0=['request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','GetZendeskAccount','ZendeskAccount','findAll','raw','options','where','attributes','limit','include','map','model','stringify','ShowZendeskAccount','find','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3e5545,_0x32dcb5){var _0x3b2859=function(_0x3b36f9){while(--_0x3b36f9){_0x3e5545['push'](_0x3e5545['shift']());}};_0x3b2859(++_0x32dcb5);}(_0xd2d0,0x80));var _0x0d2d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2d0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x0d2d('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d2d('0x1'));var db=require(_0x0d2d('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x0d2d('0x3'))(_0x0d2d('0x4'));var config=require(_0x0d2d('0x5'));var jayson=require(_0x0d2d('0x6'));var client=jayson[_0x0d2d('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a46f0,_0xe2ecec,_0x4cca7d){return new BPromise(function(_0x40b538,_0x47ce30){return client[_0x0d2d('0x8')](_0x2a46f0,_0x4cca7d)[_0x0d2d('0x9')](function(_0x130dd0){logger[_0x0d2d('0xa')](_0x0d2d('0xb'),_0xe2ecec,_0x0d2d('0xc'));logger[_0x0d2d('0xd')](_0x0d2d('0xe'),_0xe2ecec,_0x0d2d('0xc'),JSON['stringify'](_0x130dd0));if(_0x130dd0['error']){if(_0x130dd0['error'][_0x0d2d('0xf')]===0x1f4){logger[_0x0d2d('0x10')](_0x0d2d('0xb'),_0xe2ecec,_0x130dd0[_0x0d2d('0x10')][_0x0d2d('0x11')]);return _0x47ce30(_0x130dd0[_0x0d2d('0x10')][_0x0d2d('0x11')]);}logger['error']('ZendeskAccount,\x20%s,\x20%s',_0xe2ecec,_0x130dd0[_0x0d2d('0x10')][_0x0d2d('0x11')]);return _0x40b538(_0x130dd0[_0x0d2d('0x10')][_0x0d2d('0x11')]);}else{logger['info'](_0x0d2d('0xb'),_0xe2ecec,'request\x20sent');_0x40b538(_0x130dd0[_0x0d2d('0x12')][_0x0d2d('0x11')]);}})[_0x0d2d('0x13')](function(_0x384751){logger[_0x0d2d('0x10')](_0x0d2d('0xb'),_0xe2ecec,_0x384751);_0x47ce30(_0x384751);});});}exports[_0x0d2d('0x14')]=function(_0x164374){var _0x590eda=this;return new Promise(function(_0x53685f,_0x5d95b2){return db[_0x0d2d('0x15')][_0x0d2d('0x16')]({'raw':_0x164374['options']?_0x164374['options'][_0x0d2d('0x17')]===undefined?!![]:![]:!![],'where':_0x164374[_0x0d2d('0x18')]?_0x164374['options'][_0x0d2d('0x19')]||null:null,'attributes':_0x164374[_0x0d2d('0x18')]?_0x164374[_0x0d2d('0x18')][_0x0d2d('0x1a')]||null:null,'limit':_0x164374[_0x0d2d('0x18')]?_0x164374[_0x0d2d('0x18')][_0x0d2d('0x1b')]||null:null,'include':_0x164374[_0x0d2d('0x18')]?_0x164374[_0x0d2d('0x18')][_0x0d2d('0x1c')]?_[_0x0d2d('0x1d')](_0x164374[_0x0d2d('0x18')]['include'],function(_0x10e481){return{'model':db[_0x10e481[_0x0d2d('0x1e')]],'as':_0x10e481['as'],'attributes':_0x10e481[_0x0d2d('0x1a')],'include':_0x10e481[_0x0d2d('0x1c')]?_[_0x0d2d('0x1d')](_0x10e481['include'],function(_0x89f135){return{'model':db[_0x89f135[_0x0d2d('0x1e')]],'as':_0x89f135['as'],'attributes':_0x89f135[_0x0d2d('0x1a')],'include':_0x89f135[_0x0d2d('0x1c')]?_[_0x0d2d('0x1d')](_0x89f135[_0x0d2d('0x1c')],function(_0x189d34){return{'model':db[_0x189d34[_0x0d2d('0x1e')]],'as':_0x189d34['as'],'attributes':_0x189d34[_0x0d2d('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3096c5){logger[_0x0d2d('0xa')](_0x0d2d('0x14'),_0x164374);logger[_0x0d2d('0xd')](_0x0d2d('0x14'),_0x164374,JSON[_0x0d2d('0x1f')](_0x3096c5));_0x53685f(_0x3096c5);})[_0x0d2d('0x13')](function(_0x44c4be){logger[_0x0d2d('0x10')]('GetZendeskAccount',_0x44c4be['message'],_0x164374);_0x5d95b2(_0x590eda[_0x0d2d('0x10')](0x1f4,_0x44c4be['message']));});});};exports[_0x0d2d('0x20')]=function(_0xfd310d){var _0x2e65e8=this;return new Promise(function(_0x2d9b29,_0x45c6ae){return db['ZendeskAccount'][_0x0d2d('0x21')]({'raw':_0xfd310d[_0x0d2d('0x18')]?_0xfd310d[_0x0d2d('0x18')][_0x0d2d('0x17')]===undefined?!![]:![]:!![],'where':_0xfd310d[_0x0d2d('0x18')]?_0xfd310d[_0x0d2d('0x18')]['where']||null:null,'attributes':_0xfd310d[_0x0d2d('0x18')]?_0xfd310d[_0x0d2d('0x18')][_0x0d2d('0x1a')]||null:null,'include':_0xfd310d[_0x0d2d('0x18')]?_0xfd310d[_0x0d2d('0x18')][_0x0d2d('0x1c')]?_['map'](_0xfd310d['options']['include'],function(_0x41bc9b){return{'model':db[_0x41bc9b[_0x0d2d('0x1e')]],'as':_0x41bc9b['as'],'attributes':_0x41bc9b[_0x0d2d('0x1a')],'include':_0x41bc9b['include']?_[_0x0d2d('0x1d')](_0x41bc9b[_0x0d2d('0x1c')],function(_0x4245f4){return{'model':db[_0x4245f4[_0x0d2d('0x1e')]],'as':_0x4245f4['as'],'attributes':_0x4245f4[_0x0d2d('0x1a')],'include':_0x4245f4[_0x0d2d('0x1c')]?_[_0x0d2d('0x1d')](_0x4245f4['include'],function(_0x2f787d){return{'model':db[_0x2f787d[_0x0d2d('0x1e')]],'as':_0x2f787d['as'],'attributes':_0x2f787d[_0x0d2d('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0d2d('0x9')](function(_0x32d980){logger[_0x0d2d('0xa')](_0x0d2d('0x20'),_0xfd310d);logger[_0x0d2d('0xd')](_0x0d2d('0x20'),_0xfd310d,JSON[_0x0d2d('0x1f')](_0x32d980));_0x2d9b29(_0x32d980);})[_0x0d2d('0x13')](function(_0x41ab14){logger[_0x0d2d('0x10')](_0x0d2d('0x20'),_0x41ab14['message'],_0xfd310d);_0x45c6ae(_0x2e65e8[_0x0d2d('0x10')](0x1f4,_0x41ab14[_0x0d2d('0x11')]));});});};
\ No newline at end of file
+var _0xa1b4=['where','attributes','limit','include','model','map','GetZendeskAccount','catch','ShowZendeskAccount','find','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ZendeskAccount','findAll','options','raw'];(function(_0x45d450,_0x2016c0){var _0x41775a=function(_0x402eca){while(--_0x402eca){_0x45d450['push'](_0x45d450['shift']());}};_0x41775a(++_0x2016c0);}(_0xa1b4,0xff));var _0x4a1b=function(_0x5bd4f6,_0xf4e45c){_0x5bd4f6=_0x5bd4f6-0x0;var _0x33a165=_0xa1b4[_0x5bd4f6];return _0x33a165;};'use strict';var _=require(_0x4a1b('0x0'));var util=require(_0x4a1b('0x1'));var moment=require(_0x4a1b('0x2'));var BPromise=require(_0x4a1b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a1b('0x4'))['db'];var utils=require(_0x4a1b('0x5'));var logger=require('../../config/logger')(_0x4a1b('0x6'));var config=require('../../config/environment');var jayson=require(_0x4a1b('0x7'));var client=jayson[_0x4a1b('0x8')][_0x4a1b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5532c6,_0xea63cc,_0x30c54c){return new BPromise(function(_0x2ac768,_0x5ef7d0){return client[_0x4a1b('0xa')](_0x5532c6,_0x30c54c)[_0x4a1b('0xb')](function(_0x3c574d){logger[_0x4a1b('0xc')](_0x4a1b('0xd'),_0xea63cc,'request\x20sent');logger[_0x4a1b('0xe')](_0x4a1b('0xf'),_0xea63cc,_0x4a1b('0x10'),JSON[_0x4a1b('0x11')](_0x3c574d));if(_0x3c574d['error']){if(_0x3c574d[_0x4a1b('0x12')]['code']===0x1f4){logger['error'](_0x4a1b('0xd'),_0xea63cc,_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);return _0x5ef7d0(_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);}logger['error'](_0x4a1b('0xd'),_0xea63cc,_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);return _0x2ac768(_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);}else{logger['info'](_0x4a1b('0xd'),_0xea63cc,_0x4a1b('0x10'));_0x2ac768(_0x3c574d[_0x4a1b('0x14')][_0x4a1b('0x13')]);}})['catch'](function(_0x536a48){logger[_0x4a1b('0x12')](_0x4a1b('0xd'),_0xea63cc,_0x536a48);_0x5ef7d0(_0x536a48);});});}exports['GetZendeskAccount']=function(_0x5e5cdb){var _0x3ac718=this;return new Promise(function(_0x322830,_0x310747){return db[_0x4a1b('0x15')][_0x4a1b('0x16')]({'raw':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x18')]===undefined?!![]:![]:!![],'where':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x19')]||null:null,'attributes':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x1a')]||null:null,'limit':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x1b')]||null:null,'include':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb['options']['include']?_['map'](_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x1c')],function(_0x5edfa2){return{'model':db[_0x5edfa2[_0x4a1b('0x1d')]],'as':_0x5edfa2['as'],'attributes':_0x5edfa2[_0x4a1b('0x1a')],'include':_0x5edfa2[_0x4a1b('0x1c')]?_[_0x4a1b('0x1e')](_0x5edfa2[_0x4a1b('0x1c')],function(_0x8ab852){return{'model':db[_0x8ab852[_0x4a1b('0x1d')]],'as':_0x8ab852['as'],'attributes':_0x8ab852['attributes'],'include':_0x8ab852['include']?_[_0x4a1b('0x1e')](_0x8ab852[_0x4a1b('0x1c')],function(_0x4ceb97){return{'model':db[_0x4ceb97[_0x4a1b('0x1d')]],'as':_0x4ceb97['as'],'attributes':_0x4ceb97[_0x4a1b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4a1b('0xb')](function(_0x547ae0){logger['info'](_0x4a1b('0x1f'),_0x5e5cdb);logger['debug'](_0x4a1b('0x1f'),_0x5e5cdb,JSON[_0x4a1b('0x11')](_0x547ae0));_0x322830(_0x547ae0);})[_0x4a1b('0x20')](function(_0x535602){logger[_0x4a1b('0x12')]('GetZendeskAccount',_0x535602[_0x4a1b('0x13')],_0x5e5cdb);_0x310747(_0x3ac718[_0x4a1b('0x12')](0x1f4,_0x535602[_0x4a1b('0x13')]));});});};exports[_0x4a1b('0x21')]=function(_0x2f5772){var _0x2c7b9a=this;return new Promise(function(_0x705eea,_0x4bc97d){return db[_0x4a1b('0x15')][_0x4a1b('0x22')]({'raw':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772[_0x4a1b('0x17')][_0x4a1b('0x18')]===undefined?!![]:![]:!![],'where':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772[_0x4a1b('0x17')][_0x4a1b('0x19')]||null:null,'attributes':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772[_0x4a1b('0x17')][_0x4a1b('0x1a')]||null:null,'include':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772['options'][_0x4a1b('0x1c')]?_[_0x4a1b('0x1e')](_0x2f5772['options'][_0x4a1b('0x1c')],function(_0x1511fc){return{'model':db[_0x1511fc['model']],'as':_0x1511fc['as'],'attributes':_0x1511fc['attributes'],'include':_0x1511fc['include']?_['map'](_0x1511fc[_0x4a1b('0x1c')],function(_0x28b50b){return{'model':db[_0x28b50b[_0x4a1b('0x1d')]],'as':_0x28b50b['as'],'attributes':_0x28b50b[_0x4a1b('0x1a')],'include':_0x28b50b['include']?_['map'](_0x28b50b[_0x4a1b('0x1c')],function(_0x3e9cfd){return{'model':db[_0x3e9cfd['model']],'as':_0x3e9cfd['as'],'attributes':_0x3e9cfd[_0x4a1b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4a1b('0xb')](function(_0x54e96d){logger[_0x4a1b('0xc')](_0x4a1b('0x21'),_0x2f5772);logger[_0x4a1b('0xe')](_0x4a1b('0x21'),_0x2f5772,JSON[_0x4a1b('0x11')](_0x54e96d));_0x705eea(_0x54e96d);})['catch'](function(_0x28a16f){logger['error'](_0x4a1b('0x21'),_0x28a16f[_0x4a1b('0x13')],_0x2f5772);_0x4bc97d(_0x2c7b9a[_0x4a1b('0x12')](0x1f4,_0x28a16f[_0x4a1b('0x13')]));});});};
\ No newline at end of file
index a87455b..0df9aff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['util','path','connect-timeout','Router','../../components/auth/service','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','create','put','update','destroy','exports'];(function(_0x4c0ba4,_0x1c9a10){var _0x5e1513=function(_0x4655f7){while(--_0x4655f7){_0x4c0ba4['push'](_0x4c0ba4['shift']());}};_0x5e1513(++_0x1c9a10);}(_0x91a7,0xe7));var _0x791a=function(_0xa1d6b8,_0x520df3){_0xa1d6b8=_0xa1d6b8-0x0;var _0x4ee62b=_0x91a7[_0xa1d6b8];return _0x4ee62b;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['show']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0x6')]('/:id/subjects',auth[_0x791a('0x9')](),controller[_0x791a('0xc')]);router['get'](_0x791a('0xd'),auth[_0x791a('0x9')](),controller[_0x791a('0xe')]);router[_0x791a('0x6')](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['getTags']);router['post']('/',auth[_0x791a('0x9')](),controller[_0x791a('0x10')]);router['post'](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['setTags']);router[_0x791a('0x11')](_0x791a('0x8'),auth[_0x791a('0x9')](),controller[_0x791a('0x12')]);router['delete'](_0x791a('0x8'),auth['isAuthenticated'](),controller[_0x791a('0x13')]);module[_0x791a('0x14')]=router;
\ No newline at end of file
+var _0xf4eb=['put','update','delete','/:id','destroy','exports','multer','Router','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/tags','getTags','create','post','setTags'];(function(_0x24b91f,_0x176650){var _0x51336e=function(_0x19af03){while(--_0x19af03){_0x24b91f['push'](_0x24b91f['shift']());}};_0x51336e(++_0x176650);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4ccadb,_0x513ba8){_0x4ccadb=_0x4ccadb-0x0;var _0x493498=_0xf4eb[_0x4ccadb];return _0x493498;};'use strict';var multer=require(_0xbf4e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbf4e('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var controller=require(_0xbf4e('0x4'));router[_0xbf4e('0x5')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x5')]('/:id',auth[_0xbf4e('0x6')](),controller['show']);router['get'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0x5')](_0xbf4e('0xa'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xb')]);router['get']('/:id/descriptions',auth[_0xbf4e('0x6')](),controller['getDescriptions']);router[_0xbf4e('0x5')](_0xbf4e('0xc'),auth['isAuthenticated'](),controller[_0xbf4e('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xbf4e('0xe')]);router[_0xbf4e('0xf')](_0xbf4e('0xc'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x10')]);router[_0xbf4e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xbf4e('0x12')]);router[_0xbf4e('0x13')](_0xbf4e('0x14'),auth['isAuthenticated'](),controller[_0xbf4e('0x15')]);module[_0xbf4e('0x16')]=router;
\ No newline at end of file
index 1fbb4c8..0e121da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a4a=['sequelize','exports','STRING'];(function(_0xb7bb89,_0x1badeb){var _0x11f30e=function(_0x22c1ca){while(--_0x22c1ca){_0xb7bb89['push'](_0xb7bb89['shift']());}};_0x11f30e(++_0x1badeb);}(_0x3a4a,0x135));var _0xa3a4=function(_0x15d18f,_0x126b0e){_0x15d18f=_0x15d18f-0x0;var _0xd12bf7=_0x3a4a[_0x15d18f];return _0xd12bf7;};'use strict';var Sequelize=require(_0xa3a4('0x0'));module[_0xa3a4('0x1')]={'name':{'type':Sequelize[_0xa3a4('0x2')]},'description':{'type':Sequelize[_0xa3a4('0x2')]}};
\ No newline at end of file
+var _0x4b76=['sequelize','exports','STRING'];(function(_0x5aa360,_0x83e723){var _0x16e7f1=function(_0x5efa33){while(--_0x5efa33){_0x5aa360['push'](_0x5aa360['shift']());}};_0x16e7f1(++_0x83e723);}(_0x4b76,0x162));var _0x64b7=function(_0x47c392,_0x1fbc8f){_0x47c392=_0x47c392-0x0;var _0x3a1fa5=_0x4b76[_0x47c392];return _0x3a1fa5;};'use strict';var Sequelize=require(_0x64b7('0x0'));module[_0x64b7('0x1')]={'name':{'type':Sequelize[_0x64b7('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3b3780e..a3126de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6be=['length','getSubjects','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','then','destroy','error','send','index','map','ZendeskConfiguration','fieldName','key','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','rawAttributes','include','merge','options','find','create','update','body','getFields','findOne','keys','ZendeskField'];(function(_0x43e955,_0x3c48aa){var _0x471cc9=function(_0x36cc9f){while(--_0x36cc9f){_0x43e955['push'](_0x43e955['shift']());}};_0x471cc9(++_0x3c48aa);}(_0xb6be,0xbb));var _0xeb6b=function(_0x3005d5,_0xf588c7){_0x3005d5=_0x3005d5-0x0;var _0x547c7e=_0xb6be[_0x3005d5];return _0x547c7e;};'use strict';var emlformat=require(_0xeb6b('0x0'));var rimraf=require(_0xeb6b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xeb6b('0x2'));var rp=require(_0xeb6b('0x3'));var moment=require('moment');var BPromise=require(_0xeb6b('0x4'));var Mustache=require(_0xeb6b('0x5'));var util=require(_0xeb6b('0x6'));var path=require(_0xeb6b('0x7'));var sox=require(_0xeb6b('0x8'));var csv=require(_0xeb6b('0x9'));var ejs=require(_0xeb6b('0xa'));var fs=require('fs');var fs_extra=require(_0xeb6b('0xb'));var _=require(_0xeb6b('0xc'));var squel=require(_0xeb6b('0xd'));var crypto=require(_0xeb6b('0xe'));var jsforce=require(_0xeb6b('0xf'));var deskjs=require(_0xeb6b('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xeb6b('0x11'));var Redis=require(_0xeb6b('0x12'));var authService=require(_0xeb6b('0x13'));var qs=require(_0xeb6b('0x14'));var as=require(_0xeb6b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xeb6b('0x16'))(_0xeb6b('0x17'));var utils=require(_0xeb6b('0x18'));var config=require(_0xeb6b('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xeb6b('0x1a'))['db'];function respondWithStatusCode(_0xbf88cf,_0x113a35){_0x113a35=_0x113a35||0xcc;return function(_0x3c9c4f){if(_0x3c9c4f){return _0xbf88cf[_0xeb6b('0x1b')](_0x113a35);}return _0xbf88cf['status'](_0x113a35)[_0xeb6b('0x1c')]();};}function respondWithResult(_0x5d8ab3,_0x181e78){_0x181e78=_0x181e78||0xc8;return function(_0x1994f5){if(_0x1994f5){return _0x5d8ab3[_0xeb6b('0x1d')](_0x181e78)['json'](_0x1994f5);}};}function respondWithFilteredResult(_0x1707b6,_0x42f395){return function(_0x46879f){if(_0x46879f){var _0x125c7c=typeof _0x42f395['offset']===_0xeb6b('0x1e')&&typeof _0x42f395[_0xeb6b('0x1f')]==='undefined';var _0x4dc015=_0x46879f[_0xeb6b('0x20')];var _0x29dcbc=_0x125c7c?0x0:_0x42f395[_0xeb6b('0x21')];var _0x466009=_0x125c7c?_0x46879f['count']:_0x42f395['offset']+_0x42f395[_0xeb6b('0x1f')];var _0x5559cc;if(_0x466009>=_0x4dc015){_0x466009=_0x4dc015;_0x5559cc=0xc8;}else{_0x5559cc=0xce;}_0x1707b6[_0xeb6b('0x1d')](_0x5559cc);return _0x1707b6[_0xeb6b('0x22')](_0xeb6b('0x23'),_0x29dcbc+'-'+_0x466009+'/'+_0x4dc015)[_0xeb6b('0x24')](_0x46879f);}return null;};}function patchUpdates(_0xa55732){return function(_0x1b5a80){try{jsonpatch[_0xeb6b('0x25')](_0x1b5a80,_0xa55732,!![]);}catch(_0x5788bd){return BPromise[_0xeb6b('0x26')](_0x5788bd);}return _0x1b5a80[_0xeb6b('0x27')]();};}function saveUpdates(_0x5c053d,_0x1f2355){return function(_0x22fc17){if(_0x22fc17){return _0x22fc17['update'](_0x5c053d)[_0xeb6b('0x28')](function(_0x1f3c75){return _0x1f3c75;});}return null;};}function removeEntity(_0x3467d9,_0x3b8a19){return function(_0x32a7fe){if(_0x32a7fe){return _0x32a7fe[_0xeb6b('0x29')]()[_0xeb6b('0x28')](function(){_0x3467d9[_0xeb6b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x435826,_0x149bea){return function(_0x572ebc){if(!_0x572ebc){_0x435826[_0xeb6b('0x1b')](0x194);}return _0x572ebc;};}function handleError(_0x4a9a80,_0x2c9f5f){_0x2c9f5f=_0x2c9f5f||0x1f4;return function(_0x42d164){logger[_0xeb6b('0x2a')](_0x42d164['stack']);if(_0x42d164['name']){delete _0x42d164['name'];}_0x4a9a80[_0xeb6b('0x1d')](_0x2c9f5f)[_0xeb6b('0x2b')](_0x42d164);};}exports[_0xeb6b('0x2c')]=function(_0x2d52f7,_0x232aa0){var _0x30895a={},_0x4fe22e={},_0x2d86dd={'count':0x0,'rows':[]};var _0x5bdbc9=_[_0xeb6b('0x2d')](db[_0xeb6b('0x2e')]['rawAttributes'],function(_0x474f90){return{'name':_0x474f90[_0xeb6b('0x2f')],'type':_0x474f90['type'][_0xeb6b('0x30')]};});_0x4fe22e[_0xeb6b('0x31')]=_[_0xeb6b('0x2d')](_0x5bdbc9,_0xeb6b('0x32'));_0x4fe22e[_0xeb6b('0x33')]=_['keys'](_0x2d52f7[_0xeb6b('0x33')]);_0x4fe22e[_0xeb6b('0x34')]=_[_0xeb6b('0x35')](_0x4fe22e[_0xeb6b('0x31')],_0x4fe22e['query']);_0x30895a[_0xeb6b('0x36')]=_[_0xeb6b('0x35')](_0x4fe22e[_0xeb6b('0x31')],qs[_0xeb6b('0x37')](_0x2d52f7[_0xeb6b('0x33')]['fields']));_0x30895a[_0xeb6b('0x36')]=_0x30895a[_0xeb6b('0x36')]['length']?_0x30895a[_0xeb6b('0x36')]:_0x4fe22e[_0xeb6b('0x31')];if(!_0x2d52f7[_0xeb6b('0x33')][_0xeb6b('0x38')](_0xeb6b('0x39'))){_0x30895a[_0xeb6b('0x1f')]=qs[_0xeb6b('0x1f')](_0x2d52f7[_0xeb6b('0x33')][_0xeb6b('0x1f')]);_0x30895a[_0xeb6b('0x21')]=qs[_0xeb6b('0x21')](_0x2d52f7[_0xeb6b('0x33')][_0xeb6b('0x21')]);}_0x30895a[_0xeb6b('0x3a')]=qs[_0xeb6b('0x3b')](_0x2d52f7[_0xeb6b('0x33')][_0xeb6b('0x3b')]);_0x30895a[_0xeb6b('0x3c')]=qs[_0xeb6b('0x34')](_[_0xeb6b('0x3d')](_0x2d52f7['query'],_0x4fe22e[_0xeb6b('0x34')]),_0x5bdbc9);if(_0x2d52f7[_0xeb6b('0x33')][_0xeb6b('0x3e')]){_0x30895a['where']=_['merge'](_0x30895a[_0xeb6b('0x3c')],{'$or':_[_0xeb6b('0x2d')](_0x5bdbc9,function(_0x33f6b5){if(_0x33f6b5[_0xeb6b('0x3f')]!==_0xeb6b('0x40')){var _0x4303ed={};_0x4303ed[_0x33f6b5['name']]={'$like':'%'+_0x2d52f7['query'][_0xeb6b('0x3e')]+'%'};return _0x4303ed;}})});}_0x30895a=_['merge']({},_0x30895a,_0x2d52f7['options']);var _0x398ae1={'where':_0x30895a[_0xeb6b('0x3c')]};return db[_0xeb6b('0x2e')][_0xeb6b('0x20')](_0x398ae1)[_0xeb6b('0x28')](function(_0x1a7705){_0x2d86dd[_0xeb6b('0x20')]=_0x1a7705;if(_0x2d52f7[_0xeb6b('0x33')][_0xeb6b('0x41')]){_0x30895a['include']=[{'all':!![]}];}return db['ZendeskConfiguration'][_0xeb6b('0x42')](_0x30895a);})['then'](function(_0x2a39e1){_0x2d86dd[_0xeb6b('0x43')]=_0x2a39e1;return _0x2d86dd;})[_0xeb6b('0x28')](respondWithFilteredResult(_0x232aa0,_0x30895a))[_0xeb6b('0x44')](handleError(_0x232aa0,null));};exports[_0xeb6b('0x45')]=function(_0x5a32b5,_0x23cbcf){var _0x54caea={'raw':![],'where':{'id':_0x5a32b5[_0xeb6b('0x46')]['id']}},_0x51b92a={};_0x51b92a[_0xeb6b('0x31')]=_['keys'](db[_0xeb6b('0x2e')][_0xeb6b('0x47')]);_0x51b92a[_0xeb6b('0x33')]=_['keys'](_0x5a32b5['query']);_0x51b92a['filters']=_[_0xeb6b('0x35')](_0x51b92a[_0xeb6b('0x31')],_0x51b92a[_0xeb6b('0x33')]);_0x54caea[_0xeb6b('0x36')]=_[_0xeb6b('0x35')](_0x51b92a[_0xeb6b('0x31')],qs[_0xeb6b('0x37')](_0x5a32b5[_0xeb6b('0x33')][_0xeb6b('0x37')]));_0x54caea[_0xeb6b('0x36')]=_0x54caea[_0xeb6b('0x36')]['length']?_0x54caea[_0xeb6b('0x36')]:_0x51b92a[_0xeb6b('0x31')];if(_0x5a32b5[_0xeb6b('0x33')][_0xeb6b('0x41')]){_0x54caea[_0xeb6b('0x48')]=[{'all':!![]}];}_0x54caea=_[_0xeb6b('0x49')]({},_0x54caea,_0x5a32b5[_0xeb6b('0x4a')]);return db[_0xeb6b('0x2e')][_0xeb6b('0x4b')](_0x54caea)[_0xeb6b('0x28')](handleEntityNotFound(_0x23cbcf,null))[_0xeb6b('0x28')](respondWithResult(_0x23cbcf,null))[_0xeb6b('0x44')](handleError(_0x23cbcf,null));};exports[_0xeb6b('0x4c')]=function(_0x447f5a,_0x13e678){return db[_0xeb6b('0x2e')]['create'](_0x447f5a['body'],{})[_0xeb6b('0x28')](respondWithResult(_0x13e678,0xc9))['catch'](handleError(_0x13e678,null));};exports[_0xeb6b('0x4d')]=function(_0x2fe9df,_0x2a7ef1){if(_0x2fe9df['body']['id']){delete _0x2fe9df['body']['id'];}return db[_0xeb6b('0x2e')][_0xeb6b('0x4b')]({'where':{'id':_0x2fe9df['params']['id']}})[_0xeb6b('0x28')](handleEntityNotFound(_0x2a7ef1,null))[_0xeb6b('0x28')](saveUpdates(_0x2fe9df[_0xeb6b('0x4e')],null))[_0xeb6b('0x28')](respondWithResult(_0x2a7ef1,null))['catch'](handleError(_0x2a7ef1,null));};exports[_0xeb6b('0x29')]=function(_0x279323,_0x57afdb){return db[_0xeb6b('0x2e')]['find']({'where':{'id':_0x279323[_0xeb6b('0x46')]['id']}})[_0xeb6b('0x28')](handleEntityNotFound(_0x57afdb,null))['then'](removeEntity(_0x57afdb,null))[_0xeb6b('0x44')](handleError(_0x57afdb,null));};exports[_0xeb6b('0x4f')]=function(_0x1cb89b,_0x55a5b0,_0x46f043){var _0x49f211={};var _0x11248f={};var _0x15b1ae;var _0x439d8e;return db[_0xeb6b('0x2e')][_0xeb6b('0x50')]({'where':{'id':_0x1cb89b['params']['id']}})[_0xeb6b('0x28')](handleEntityNotFound(_0x55a5b0,null))[_0xeb6b('0x28')](function(_0x188ea6){if(_0x188ea6){_0x15b1ae=_0x188ea6;_0x11248f['model']=_[_0xeb6b('0x51')](db[_0xeb6b('0x52')][_0xeb6b('0x47')]);_0x11248f[_0xeb6b('0x33')]=_['keys'](_0x1cb89b['query']);_0x11248f[_0xeb6b('0x34')]=_['intersection'](_0x11248f[_0xeb6b('0x31')],_0x11248f[_0xeb6b('0x33')]);_0x49f211[_0xeb6b('0x36')]=_['intersection'](_0x11248f[_0xeb6b('0x31')],qs['fields'](_0x1cb89b['query']['fields']));_0x49f211['attributes']=_0x49f211['attributes'][_0xeb6b('0x53')]?_0x49f211[_0xeb6b('0x36')]:_0x11248f['model'];_0x49f211[_0xeb6b('0x3a')]=qs[_0xeb6b('0x3b')](_0x1cb89b[_0xeb6b('0x33')][_0xeb6b('0x3b')]);_0x49f211[_0xeb6b('0x3c')]=qs['filters'](_[_0xeb6b('0x3d')](_0x1cb89b[_0xeb6b('0x33')],_0x11248f['filters']));if(_0x1cb89b[_0xeb6b('0x33')][_0xeb6b('0x3e')]){_0x49f211['where']=_[_0xeb6b('0x49')](_0x49f211[_0xeb6b('0x3c')],{'$or':_[_0xeb6b('0x2d')](_0x49f211[_0xeb6b('0x36')],function(_0x27bd23){var _0x143080={};_0x143080[_0x27bd23]={'$like':'%'+_0x1cb89b['query'][_0xeb6b('0x3e')]+'%'};return _0x143080;})});}_0x49f211=_[_0xeb6b('0x49')]({},_0x49f211,_0x1cb89b[_0xeb6b('0x4a')]);return _0x15b1ae[_0xeb6b('0x4f')](_0x49f211);}})[_0xeb6b('0x28')](function(_0xa52e2d){if(_0xa52e2d){_0x439d8e=_0xa52e2d['length'];if(!_0x1cb89b[_0xeb6b('0x33')][_0xeb6b('0x38')](_0xeb6b('0x39'))){_0x49f211[_0xeb6b('0x1f')]=qs[_0xeb6b('0x1f')](_0x1cb89b[_0xeb6b('0x33')][_0xeb6b('0x1f')]);_0x49f211[_0xeb6b('0x21')]=qs[_0xeb6b('0x21')](_0x1cb89b['query']['offset']);}return _0x15b1ae['getFields'](_0x49f211);}})[_0xeb6b('0x28')](function(_0x73aa5c){if(_0x73aa5c){return _0x73aa5c?{'count':_0x439d8e,'rows':_0x73aa5c}:null;}})[_0xeb6b('0x28')](respondWithResult(_0x55a5b0,null))[_0xeb6b('0x44')](handleError(_0x55a5b0,null));};exports[_0xeb6b('0x54')]=function(_0xab50e5,_0x511347,_0x62e1c2){var _0x4e0222={};var _0x3276f9={};var _0x124046;var _0x962490;return db['ZendeskConfiguration'][_0xeb6b('0x50')]({'where':{'id':_0xab50e5[_0xeb6b('0x46')]['id']}})[_0xeb6b('0x28')](handleEntityNotFound(_0x511347,null))[_0xeb6b('0x28')](function(_0x2dc8db){if(_0x2dc8db){_0x124046=_0x2dc8db;_0x3276f9[_0xeb6b('0x31')]=_['keys'](db[_0xeb6b('0x52')]['rawAttributes']);_0x3276f9[_0xeb6b('0x33')]=_[_0xeb6b('0x51')](_0xab50e5['query']);_0x3276f9[_0xeb6b('0x34')]=_[_0xeb6b('0x35')](_0x3276f9[_0xeb6b('0x31')],_0x3276f9[_0xeb6b('0x33')]);_0x4e0222[_0xeb6b('0x36')]=_[_0xeb6b('0x35')](_0x3276f9['model'],qs[_0xeb6b('0x37')](_0xab50e5[_0xeb6b('0x33')][_0xeb6b('0x37')]));_0x4e0222[_0xeb6b('0x36')]=_0x4e0222[_0xeb6b('0x36')][_0xeb6b('0x53')]?_0x4e0222[_0xeb6b('0x36')]:_0x3276f9[_0xeb6b('0x31')];_0x4e0222[_0xeb6b('0x3a')]=qs[_0xeb6b('0x3b')](_0xab50e5[_0xeb6b('0x33')][_0xeb6b('0x3b')]);_0x4e0222['where']=qs[_0xeb6b('0x34')](_[_0xeb6b('0x3d')](_0xab50e5['query'],_0x3276f9[_0xeb6b('0x34')]));if(_0xab50e5['query']['filter']){_0x4e0222[_0xeb6b('0x3c')]=_[_0xeb6b('0x49')](_0x4e0222[_0xeb6b('0x3c')],{'$or':_[_0xeb6b('0x2d')](_0x4e0222['attributes'],function(_0x5ed852){var _0x46dcba={};_0x46dcba[_0x5ed852]={'$like':'%'+_0xab50e5['query'][_0xeb6b('0x3e')]+'%'};return _0x46dcba;})});}_0x4e0222=_[_0xeb6b('0x49')]({},_0x4e0222,_0xab50e5[_0xeb6b('0x4a')]);return _0x124046[_0xeb6b('0x54')](_0x4e0222);}})[_0xeb6b('0x28')](function(_0x4b0e26){if(_0x4b0e26){_0x962490=_0x4b0e26[_0xeb6b('0x53')];if(!_0xab50e5[_0xeb6b('0x33')][_0xeb6b('0x38')](_0xeb6b('0x39'))){_0x4e0222[_0xeb6b('0x1f')]=qs['limit'](_0xab50e5[_0xeb6b('0x33')]['limit']);_0x4e0222[_0xeb6b('0x21')]=qs[_0xeb6b('0x21')](_0xab50e5[_0xeb6b('0x33')][_0xeb6b('0x21')]);}return _0x124046[_0xeb6b('0x54')](_0x4e0222);}})[_0xeb6b('0x28')](function(_0x24446b){if(_0x24446b){return _0x24446b?{'count':_0x962490,'rows':_0x24446b}:null;}})[_0xeb6b('0x28')](respondWithResult(_0x511347,null))[_0xeb6b('0x44')](handleError(_0x511347,null));};exports['getDescriptions']=function(_0x44fd94,_0x5776db,_0x1435a1){var _0x4648fe={};var _0x59aff2={};var _0xa2a46b;var _0x18d597;return db[_0xeb6b('0x2e')][_0xeb6b('0x50')]({'where':{'id':_0x44fd94['params']['id']}})['then'](handleEntityNotFound(_0x5776db,null))[_0xeb6b('0x28')](function(_0x587f29){if(_0x587f29){_0xa2a46b=_0x587f29;_0x59aff2['model']=_['keys'](db[_0xeb6b('0x52')]['rawAttributes']);_0x59aff2[_0xeb6b('0x33')]=_['keys'](_0x44fd94['query']);_0x59aff2[_0xeb6b('0x34')]=_['intersection'](_0x59aff2[_0xeb6b('0x31')],_0x59aff2[_0xeb6b('0x33')]);_0x4648fe[_0xeb6b('0x36')]=_[_0xeb6b('0x35')](_0x59aff2[_0xeb6b('0x31')],qs[_0xeb6b('0x37')](_0x44fd94[_0xeb6b('0x33')][_0xeb6b('0x37')]));_0x4648fe[_0xeb6b('0x36')]=_0x4648fe[_0xeb6b('0x36')][_0xeb6b('0x53')]?_0x4648fe['attributes']:_0x59aff2[_0xeb6b('0x31')];_0x4648fe[_0xeb6b('0x3a')]=qs[_0xeb6b('0x3b')](_0x44fd94['query'][_0xeb6b('0x3b')]);_0x4648fe[_0xeb6b('0x3c')]=qs[_0xeb6b('0x34')](_[_0xeb6b('0x3d')](_0x44fd94[_0xeb6b('0x33')],_0x59aff2[_0xeb6b('0x34')]));if(_0x44fd94[_0xeb6b('0x33')]['filter']){_0x4648fe[_0xeb6b('0x3c')]=_[_0xeb6b('0x49')](_0x4648fe[_0xeb6b('0x3c')],{'$or':_[_0xeb6b('0x2d')](_0x4648fe['attributes'],function(_0x119677){var _0x10cd8f={};_0x10cd8f[_0x119677]={'$like':'%'+_0x44fd94[_0xeb6b('0x33')][_0xeb6b('0x3e')]+'%'};return _0x10cd8f;})});}_0x4648fe=_[_0xeb6b('0x49')]({},_0x4648fe,_0x44fd94['options']);return _0xa2a46b[_0xeb6b('0x55')](_0x4648fe);}})[_0xeb6b('0x28')](function(_0x127d3c){if(_0x127d3c){_0x18d597=_0x127d3c[_0xeb6b('0x53')];if(!_0x44fd94[_0xeb6b('0x33')][_0xeb6b('0x38')](_0xeb6b('0x39'))){_0x4648fe['limit']=qs[_0xeb6b('0x1f')](_0x44fd94[_0xeb6b('0x33')][_0xeb6b('0x1f')]);_0x4648fe[_0xeb6b('0x21')]=qs['offset'](_0x44fd94['query'][_0xeb6b('0x21')]);}return _0xa2a46b['getDescriptions'](_0x4648fe);}})['then'](function(_0x37c55b){if(_0x37c55b){return _0x37c55b?{'count':_0x18d597,'rows':_0x37c55b}:null;}})[_0xeb6b('0x28')](respondWithResult(_0x5776db,null))[_0xeb6b('0x44')](handleError(_0x5776db,null));};exports['getTags']=function(_0x5ad9b4,_0x5f30a4,_0x3d2e7d){var _0x4fabbc={};var _0x1ae357={};var _0x11742b;var _0x1cb065;return db['ZendeskConfiguration'][_0xeb6b('0x50')]({'where':{'id':_0x5ad9b4[_0xeb6b('0x46')]['id']}})[_0xeb6b('0x28')](handleEntityNotFound(_0x5f30a4,null))[_0xeb6b('0x28')](function(_0x35ec25){if(_0x35ec25){_0x11742b=_0x35ec25;_0x1ae357[_0xeb6b('0x31')]=_[_0xeb6b('0x51')](db[_0xeb6b('0x56')][_0xeb6b('0x47')]);_0x1ae357[_0xeb6b('0x33')]=_[_0xeb6b('0x51')](_0x5ad9b4[_0xeb6b('0x33')]);_0x1ae357[_0xeb6b('0x34')]=_[_0xeb6b('0x35')](_0x1ae357[_0xeb6b('0x31')],_0x1ae357['query']);_0x4fabbc[_0xeb6b('0x36')]=_[_0xeb6b('0x35')](_0x1ae357[_0xeb6b('0x31')],qs[_0xeb6b('0x37')](_0x5ad9b4[_0xeb6b('0x33')][_0xeb6b('0x37')]));_0x4fabbc[_0xeb6b('0x36')]=_0x4fabbc[_0xeb6b('0x36')][_0xeb6b('0x53')]?_0x4fabbc['attributes']:_0x1ae357['model'];_0x4fabbc[_0xeb6b('0x3a')]=qs[_0xeb6b('0x3b')](_0x5ad9b4[_0xeb6b('0x33')][_0xeb6b('0x3b')]);_0x4fabbc['where']=qs[_0xeb6b('0x34')](_[_0xeb6b('0x3d')](_0x5ad9b4['query'],_0x1ae357[_0xeb6b('0x34')]));if(_0x5ad9b4[_0xeb6b('0x33')][_0xeb6b('0x3e')]){_0x4fabbc[_0xeb6b('0x3c')]=_[_0xeb6b('0x49')](_0x4fabbc[_0xeb6b('0x3c')],{'$or':_[_0xeb6b('0x2d')](_0x4fabbc['attributes'],function(_0x2ee2d2){var _0x15b451={};_0x15b451[_0x2ee2d2]={'$like':'%'+_0x5ad9b4[_0xeb6b('0x33')][_0xeb6b('0x3e')]+'%'};return _0x15b451;})});}_0x4fabbc=_[_0xeb6b('0x49')]({},_0x4fabbc,_0x5ad9b4[_0xeb6b('0x4a')]);return _0x11742b[_0xeb6b('0x57')](_0x4fabbc);}})['then'](function(_0x20e8fe){if(_0x20e8fe){_0x1cb065=_0x20e8fe['length'];if(!_0x5ad9b4[_0xeb6b('0x33')]['hasOwnProperty'](_0xeb6b('0x39'))){_0x4fabbc[_0xeb6b('0x1f')]=qs['limit'](_0x5ad9b4[_0xeb6b('0x33')][_0xeb6b('0x1f')]);_0x4fabbc[_0xeb6b('0x21')]=qs[_0xeb6b('0x21')](_0x5ad9b4[_0xeb6b('0x33')][_0xeb6b('0x21')]);}return _0x11742b[_0xeb6b('0x57')](_0x4fabbc);}})[_0xeb6b('0x28')](function(_0x14600e){if(_0x14600e){return _0x14600e?{'count':_0x1cb065,'rows':_0x14600e}:null;}})[_0xeb6b('0x28')](respondWithResult(_0x5f30a4,null))[_0xeb6b('0x44')](handleError(_0x5f30a4,null));};exports[_0xeb6b('0x58')]=function(_0xab86f9,_0x56c6ac,_0x4b705a){if(_0xab86f9['body']['id']){delete _0xab86f9[_0xeb6b('0x4e')]['id'];}return db[_0xeb6b('0x2e')][_0xeb6b('0x50')]({'where':{'id':_0xab86f9[_0xeb6b('0x46')]['id']}})[_0xeb6b('0x28')](handleEntityNotFound(_0x56c6ac,null))[_0xeb6b('0x28')](function(_0x5ac26c){if(_0x5ac26c){return _0x5ac26c[_0xeb6b('0x58')](_0xab86f9[_0xeb6b('0x4e')][_0xeb6b('0x59')]||[]);}return null;})[_0xeb6b('0x28')](respondWithResult(_0x56c6ac,null))[_0xeb6b('0x44')](handleError(_0x56c6ac,null));};
\ No newline at end of file
+var _0x940c=['Tag','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','limit','count','offset','set','Content-Range','json','save','then','error','name','send','index','map','ZendeskConfiguration','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','params','keys','includeAll','find','create','body','update','destroy','getFields','findOne','ZendeskField','rawAttributes','getSubjects','getDescriptions'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x940c,0x19e));var _0xc940=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x940c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc940('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc940('0x1'));var jsonpatch=require(_0xc940('0x2'));var rp=require(_0xc940('0x3'));var moment=require(_0xc940('0x4'));var BPromise=require(_0xc940('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc940('0x6'));var sox=require(_0xc940('0x7'));var csv=require('to-csv');var ejs=require(_0xc940('0x8'));var fs=require('fs');var fs_extra=require(_0xc940('0x9'));var _=require(_0xc940('0xa'));var squel=require(_0xc940('0xb'));var crypto=require(_0xc940('0xc'));var jsforce=require(_0xc940('0xd'));var deskjs=require(_0xc940('0xe'));var toCsv=require(_0xc940('0xf'));var querystring=require(_0xc940('0x10'));var Papa=require(_0xc940('0x11'));var Redis=require(_0xc940('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xc940('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc940('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xc940('0x15'));var config=require(_0xc940('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc940('0x17'))['db'];function respondWithStatusCode(_0x2ffd9b,_0x12df1e){_0x12df1e=_0x12df1e||0xcc;return function(_0x250107){if(_0x250107){return _0x2ffd9b[_0xc940('0x18')](_0x12df1e);}return _0x2ffd9b[_0xc940('0x19')](_0x12df1e)[_0xc940('0x1a')]();};}function respondWithResult(_0x3e6776,_0x4cd5f4){_0x4cd5f4=_0x4cd5f4||0xc8;return function(_0x31f52f){if(_0x31f52f){return _0x3e6776[_0xc940('0x19')](_0x4cd5f4)['json'](_0x31f52f);}};}function respondWithFilteredResult(_0x15c537,_0x2c774b){return function(_0x14f439){if(_0x14f439){var _0x34740f=typeof _0x2c774b['offset']==='undefined'&&typeof _0x2c774b[_0xc940('0x1b')]==='undefined';var _0x2cfbc3=_0x14f439[_0xc940('0x1c')];var _0x45b9f2=_0x34740f?0x0:_0x2c774b[_0xc940('0x1d')];var _0x1ddec9=_0x34740f?_0x14f439[_0xc940('0x1c')]:_0x2c774b['offset']+_0x2c774b[_0xc940('0x1b')];var _0x336a53;if(_0x1ddec9>=_0x2cfbc3){_0x1ddec9=_0x2cfbc3;_0x336a53=0xc8;}else{_0x336a53=0xce;}_0x15c537[_0xc940('0x19')](_0x336a53);return _0x15c537[_0xc940('0x1e')](_0xc940('0x1f'),_0x45b9f2+'-'+_0x1ddec9+'/'+_0x2cfbc3)[_0xc940('0x20')](_0x14f439);}return null;};}function patchUpdates(_0x337a82){return function(_0x4518fc){try{jsonpatch['apply'](_0x4518fc,_0x337a82,!![]);}catch(_0x388608){return BPromise['reject'](_0x388608);}return _0x4518fc[_0xc940('0x21')]();};}function saveUpdates(_0x479245,_0x59645d){return function(_0x35d4b4){if(_0x35d4b4){return _0x35d4b4['update'](_0x479245)[_0xc940('0x22')](function(_0x8d324d){return _0x8d324d;});}return null;};}function removeEntity(_0xce39be,_0x5df103){return function(_0x4e73f9){if(_0x4e73f9){return _0x4e73f9['destroy']()[_0xc940('0x22')](function(){_0xce39be[_0xc940('0x19')](0xcc)[_0xc940('0x1a')]();});}};}function handleEntityNotFound(_0x476dc2,_0x536208){return function(_0x439799){if(!_0x439799){_0x476dc2[_0xc940('0x18')](0x194);}return _0x439799;};}function handleError(_0x48a069,_0x559833){_0x559833=_0x559833||0x1f4;return function(_0x472371){logger[_0xc940('0x23')](_0x472371['stack']);if(_0x472371[_0xc940('0x24')]){delete _0x472371[_0xc940('0x24')];}_0x48a069[_0xc940('0x19')](_0x559833)[_0xc940('0x25')](_0x472371);};}exports[_0xc940('0x26')]=function(_0x4fda59,_0x4ebbd1){var _0xc9e010={},_0x5efa88={},_0x55897e={'count':0x0,'rows':[]};var _0x4957b7=_[_0xc940('0x27')](db[_0xc940('0x28')]['rawAttributes'],function(_0x155150){return{'name':_0x155150[_0xc940('0x29')],'type':_0x155150[_0xc940('0x2a')][_0xc940('0x2b')]};});_0x5efa88[_0xc940('0x2c')]=_[_0xc940('0x27')](_0x4957b7,'name');_0x5efa88['query']=_['keys'](_0x4fda59[_0xc940('0x2d')]);_0x5efa88[_0xc940('0x2e')]=_['intersection'](_0x5efa88['model'],_0x5efa88['query']);_0xc9e010['attributes']=_[_0xc940('0x2f')](_0x5efa88[_0xc940('0x2c')],qs[_0xc940('0x30')](_0x4fda59['query']['fields']));_0xc9e010[_0xc940('0x31')]=_0xc9e010[_0xc940('0x31')][_0xc940('0x32')]?_0xc9e010[_0xc940('0x31')]:_0x5efa88[_0xc940('0x2c')];if(!_0x4fda59[_0xc940('0x2d')][_0xc940('0x33')](_0xc940('0x34'))){_0xc9e010[_0xc940('0x1b')]=qs[_0xc940('0x1b')](_0x4fda59[_0xc940('0x2d')]['limit']);_0xc9e010['offset']=qs[_0xc940('0x1d')](_0x4fda59[_0xc940('0x2d')][_0xc940('0x1d')]);}_0xc9e010[_0xc940('0x35')]=qs[_0xc940('0x36')](_0x4fda59[_0xc940('0x2d')]['sort']);_0xc9e010[_0xc940('0x37')]=qs['filters'](_[_0xc940('0x38')](_0x4fda59[_0xc940('0x2d')],_0x5efa88[_0xc940('0x2e')]),_0x4957b7);if(_0x4fda59[_0xc940('0x2d')][_0xc940('0x39')]){_0xc9e010['where']=_[_0xc940('0x3a')](_0xc9e010[_0xc940('0x37')],{'$or':_[_0xc940('0x27')](_0x4957b7,function(_0x5e1d24){if(_0x5e1d24[_0xc940('0x2a')]!==_0xc940('0x3b')){var _0x116bbe={};_0x116bbe[_0x5e1d24[_0xc940('0x24')]]={'$like':'%'+_0x4fda59[_0xc940('0x2d')][_0xc940('0x39')]+'%'};return _0x116bbe;}})});}_0xc9e010=_[_0xc940('0x3a')]({},_0xc9e010,_0x4fda59[_0xc940('0x3c')]);var _0x2ab074={'where':_0xc9e010[_0xc940('0x37')]};return db['ZendeskConfiguration']['count'](_0x2ab074)[_0xc940('0x22')](function(_0x151de6){_0x55897e['count']=_0x151de6;if(_0x4fda59[_0xc940('0x2d')]['includeAll']){_0xc9e010['include']=[{'all':!![]}];}return db[_0xc940('0x28')][_0xc940('0x3d')](_0xc9e010);})['then'](function(_0x587f4d){_0x55897e[_0xc940('0x3e')]=_0x587f4d;return _0x55897e;})[_0xc940('0x22')](respondWithFilteredResult(_0x4ebbd1,_0xc9e010))[_0xc940('0x3f')](handleError(_0x4ebbd1,null));};exports['show']=function(_0xa99982,_0x1b3be0){var _0x153c87={'raw':![],'where':{'id':_0xa99982[_0xc940('0x40')]['id']}},_0x218f0b={};_0x218f0b['model']=_[_0xc940('0x41')](db[_0xc940('0x28')]['rawAttributes']);_0x218f0b[_0xc940('0x2d')]=_[_0xc940('0x41')](_0xa99982[_0xc940('0x2d')]);_0x218f0b[_0xc940('0x2e')]=_['intersection'](_0x218f0b[_0xc940('0x2c')],_0x218f0b[_0xc940('0x2d')]);_0x153c87[_0xc940('0x31')]=_['intersection'](_0x218f0b[_0xc940('0x2c')],qs[_0xc940('0x30')](_0xa99982[_0xc940('0x2d')]['fields']));_0x153c87[_0xc940('0x31')]=_0x153c87[_0xc940('0x31')]['length']?_0x153c87[_0xc940('0x31')]:_0x218f0b['model'];if(_0xa99982[_0xc940('0x2d')][_0xc940('0x42')]){_0x153c87['include']=[{'all':!![]}];}_0x153c87=_[_0xc940('0x3a')]({},_0x153c87,_0xa99982[_0xc940('0x3c')]);return db[_0xc940('0x28')][_0xc940('0x43')](_0x153c87)[_0xc940('0x22')](handleEntityNotFound(_0x1b3be0,null))[_0xc940('0x22')](respondWithResult(_0x1b3be0,null))['catch'](handleError(_0x1b3be0,null));};exports[_0xc940('0x44')]=function(_0x5e79dd,_0x48a003){return db[_0xc940('0x28')][_0xc940('0x44')](_0x5e79dd[_0xc940('0x45')],{})[_0xc940('0x22')](respondWithResult(_0x48a003,0xc9))[_0xc940('0x3f')](handleError(_0x48a003,null));};exports[_0xc940('0x46')]=function(_0x244a20,_0x15c680){if(_0x244a20[_0xc940('0x45')]['id']){delete _0x244a20[_0xc940('0x45')]['id'];}return db[_0xc940('0x28')][_0xc940('0x43')]({'where':{'id':_0x244a20[_0xc940('0x40')]['id']}})['then'](handleEntityNotFound(_0x15c680,null))[_0xc940('0x22')](saveUpdates(_0x244a20[_0xc940('0x45')],null))['then'](respondWithResult(_0x15c680,null))['catch'](handleError(_0x15c680,null));};exports[_0xc940('0x47')]=function(_0x38ff27,_0x9b56d6){return db[_0xc940('0x28')][_0xc940('0x43')]({'where':{'id':_0x38ff27[_0xc940('0x40')]['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x9b56d6,null))[_0xc940('0x22')](removeEntity(_0x9b56d6,null))['catch'](handleError(_0x9b56d6,null));};exports[_0xc940('0x48')]=function(_0x5a279f,_0x598b82,_0x135b37){var _0x1b64cc={};var _0x18b974={};var _0x3f008a;var _0x31b99c;return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x5a279f[_0xc940('0x40')]['id']}})['then'](handleEntityNotFound(_0x598b82,null))[_0xc940('0x22')](function(_0x32bc63){if(_0x32bc63){_0x3f008a=_0x32bc63;_0x18b974[_0xc940('0x2c')]=_[_0xc940('0x41')](db[_0xc940('0x4a')][_0xc940('0x4b')]);_0x18b974[_0xc940('0x2d')]=_['keys'](_0x5a279f['query']);_0x18b974['filters']=_[_0xc940('0x2f')](_0x18b974[_0xc940('0x2c')],_0x18b974[_0xc940('0x2d')]);_0x1b64cc[_0xc940('0x31')]=_[_0xc940('0x2f')](_0x18b974[_0xc940('0x2c')],qs[_0xc940('0x30')](_0x5a279f[_0xc940('0x2d')][_0xc940('0x30')]));_0x1b64cc['attributes']=_0x1b64cc[_0xc940('0x31')][_0xc940('0x32')]?_0x1b64cc[_0xc940('0x31')]:_0x18b974['model'];_0x1b64cc['order']=qs[_0xc940('0x36')](_0x5a279f[_0xc940('0x2d')][_0xc940('0x36')]);_0x1b64cc[_0xc940('0x37')]=qs['filters'](_[_0xc940('0x38')](_0x5a279f['query'],_0x18b974[_0xc940('0x2e')]));if(_0x5a279f[_0xc940('0x2d')][_0xc940('0x39')]){_0x1b64cc[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x1b64cc[_0xc940('0x37')],{'$or':_['map'](_0x1b64cc[_0xc940('0x31')],function(_0x182f93){var _0x4348bc={};_0x4348bc[_0x182f93]={'$like':'%'+_0x5a279f['query'][_0xc940('0x39')]+'%'};return _0x4348bc;})});}_0x1b64cc=_['merge']({},_0x1b64cc,_0x5a279f['options']);return _0x3f008a['getFields'](_0x1b64cc);}})[_0xc940('0x22')](function(_0x2bd5a0){if(_0x2bd5a0){_0x31b99c=_0x2bd5a0[_0xc940('0x32')];if(!_0x5a279f[_0xc940('0x2d')][_0xc940('0x33')](_0xc940('0x34'))){_0x1b64cc[_0xc940('0x1b')]=qs[_0xc940('0x1b')](_0x5a279f[_0xc940('0x2d')][_0xc940('0x1b')]);_0x1b64cc[_0xc940('0x1d')]=qs['offset'](_0x5a279f['query'][_0xc940('0x1d')]);}return _0x3f008a['getFields'](_0x1b64cc);}})['then'](function(_0x15f0cc){if(_0x15f0cc){return _0x15f0cc?{'count':_0x31b99c,'rows':_0x15f0cc}:null;}})['then'](respondWithResult(_0x598b82,null))[_0xc940('0x3f')](handleError(_0x598b82,null));};exports[_0xc940('0x4c')]=function(_0x4fde02,_0x2b1ff1,_0x2869e2){var _0x1c4e7d={};var _0xf44721={};var _0x4309e2;var _0x67346;return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x4fde02[_0xc940('0x40')]['id']}})['then'](handleEntityNotFound(_0x2b1ff1,null))['then'](function(_0x596084){if(_0x596084){_0x4309e2=_0x596084;_0xf44721[_0xc940('0x2c')]=_['keys'](db['ZendeskField']['rawAttributes']);_0xf44721[_0xc940('0x2d')]=_['keys'](_0x4fde02[_0xc940('0x2d')]);_0xf44721[_0xc940('0x2e')]=_[_0xc940('0x2f')](_0xf44721[_0xc940('0x2c')],_0xf44721['query']);_0x1c4e7d[_0xc940('0x31')]=_[_0xc940('0x2f')](_0xf44721[_0xc940('0x2c')],qs['fields'](_0x4fde02[_0xc940('0x2d')][_0xc940('0x30')]));_0x1c4e7d[_0xc940('0x31')]=_0x1c4e7d[_0xc940('0x31')][_0xc940('0x32')]?_0x1c4e7d[_0xc940('0x31')]:_0xf44721['model'];_0x1c4e7d['order']=qs[_0xc940('0x36')](_0x4fde02[_0xc940('0x2d')]['sort']);_0x1c4e7d['where']=qs[_0xc940('0x2e')](_[_0xc940('0x38')](_0x4fde02['query'],_0xf44721[_0xc940('0x2e')]));if(_0x4fde02[_0xc940('0x2d')][_0xc940('0x39')]){_0x1c4e7d[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x1c4e7d[_0xc940('0x37')],{'$or':_[_0xc940('0x27')](_0x1c4e7d[_0xc940('0x31')],function(_0xd2d4fd){var _0xa9564={};_0xa9564[_0xd2d4fd]={'$like':'%'+_0x4fde02[_0xc940('0x2d')][_0xc940('0x39')]+'%'};return _0xa9564;})});}_0x1c4e7d=_['merge']({},_0x1c4e7d,_0x4fde02[_0xc940('0x3c')]);return _0x4309e2[_0xc940('0x4c')](_0x1c4e7d);}})[_0xc940('0x22')](function(_0x5c4cfd){if(_0x5c4cfd){_0x67346=_0x5c4cfd['length'];if(!_0x4fde02[_0xc940('0x2d')][_0xc940('0x33')]('nolimit')){_0x1c4e7d[_0xc940('0x1b')]=qs['limit'](_0x4fde02[_0xc940('0x2d')][_0xc940('0x1b')]);_0x1c4e7d[_0xc940('0x1d')]=qs[_0xc940('0x1d')](_0x4fde02[_0xc940('0x2d')]['offset']);}return _0x4309e2['getSubjects'](_0x1c4e7d);}})['then'](function(_0x58f10a){if(_0x58f10a){return _0x58f10a?{'count':_0x67346,'rows':_0x58f10a}:null;}})[_0xc940('0x22')](respondWithResult(_0x2b1ff1,null))[_0xc940('0x3f')](handleError(_0x2b1ff1,null));};exports[_0xc940('0x4d')]=function(_0x2723f3,_0x2342b3,_0x4c974d){var _0x9a2046={};var _0xb9f458={};var _0x550028;var _0x281ad3;return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x2723f3[_0xc940('0x40')]['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x2342b3,null))[_0xc940('0x22')](function(_0x115b2e){if(_0x115b2e){_0x550028=_0x115b2e;_0xb9f458[_0xc940('0x2c')]=_[_0xc940('0x41')](db[_0xc940('0x4a')][_0xc940('0x4b')]);_0xb9f458[_0xc940('0x2d')]=_['keys'](_0x2723f3[_0xc940('0x2d')]);_0xb9f458[_0xc940('0x2e')]=_[_0xc940('0x2f')](_0xb9f458['model'],_0xb9f458['query']);_0x9a2046[_0xc940('0x31')]=_[_0xc940('0x2f')](_0xb9f458[_0xc940('0x2c')],qs[_0xc940('0x30')](_0x2723f3[_0xc940('0x2d')]['fields']));_0x9a2046['attributes']=_0x9a2046[_0xc940('0x31')][_0xc940('0x32')]?_0x9a2046[_0xc940('0x31')]:_0xb9f458['model'];_0x9a2046[_0xc940('0x35')]=qs[_0xc940('0x36')](_0x2723f3['query'][_0xc940('0x36')]);_0x9a2046[_0xc940('0x37')]=qs[_0xc940('0x2e')](_['pick'](_0x2723f3[_0xc940('0x2d')],_0xb9f458[_0xc940('0x2e')]));if(_0x2723f3[_0xc940('0x2d')][_0xc940('0x39')]){_0x9a2046[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x9a2046[_0xc940('0x37')],{'$or':_['map'](_0x9a2046['attributes'],function(_0x317065){var _0x3accb0={};_0x3accb0[_0x317065]={'$like':'%'+_0x2723f3['query']['filter']+'%'};return _0x3accb0;})});}_0x9a2046=_[_0xc940('0x3a')]({},_0x9a2046,_0x2723f3[_0xc940('0x3c')]);return _0x550028[_0xc940('0x4d')](_0x9a2046);}})['then'](function(_0x5532dd){if(_0x5532dd){_0x281ad3=_0x5532dd[_0xc940('0x32')];if(!_0x2723f3['query'][_0xc940('0x33')]('nolimit')){_0x9a2046[_0xc940('0x1b')]=qs[_0xc940('0x1b')](_0x2723f3[_0xc940('0x2d')][_0xc940('0x1b')]);_0x9a2046[_0xc940('0x1d')]=qs[_0xc940('0x1d')](_0x2723f3[_0xc940('0x2d')]['offset']);}return _0x550028[_0xc940('0x4d')](_0x9a2046);}})[_0xc940('0x22')](function(_0x356425){if(_0x356425){return _0x356425?{'count':_0x281ad3,'rows':_0x356425}:null;}})[_0xc940('0x22')](respondWithResult(_0x2342b3,null))[_0xc940('0x3f')](handleError(_0x2342b3,null));};exports['getTags']=function(_0x1d33bb,_0x1dcadf,_0x222295){var _0x5cf708={};var _0x3353c1={};var _0x31badc;var _0x457a9c;return db[_0xc940('0x28')]['findOne']({'where':{'id':_0x1d33bb[_0xc940('0x40')]['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x1dcadf,null))[_0xc940('0x22')](function(_0x5c0817){if(_0x5c0817){_0x31badc=_0x5c0817;_0x3353c1['model']=_[_0xc940('0x41')](db[_0xc940('0x4e')][_0xc940('0x4b')]);_0x3353c1['query']=_[_0xc940('0x41')](_0x1d33bb['query']);_0x3353c1[_0xc940('0x2e')]=_[_0xc940('0x2f')](_0x3353c1[_0xc940('0x2c')],_0x3353c1['query']);_0x5cf708[_0xc940('0x31')]=_[_0xc940('0x2f')](_0x3353c1[_0xc940('0x2c')],qs['fields'](_0x1d33bb[_0xc940('0x2d')][_0xc940('0x30')]));_0x5cf708[_0xc940('0x31')]=_0x5cf708[_0xc940('0x31')]['length']?_0x5cf708['attributes']:_0x3353c1[_0xc940('0x2c')];_0x5cf708[_0xc940('0x35')]=qs[_0xc940('0x36')](_0x1d33bb['query'][_0xc940('0x36')]);_0x5cf708[_0xc940('0x37')]=qs[_0xc940('0x2e')](_[_0xc940('0x38')](_0x1d33bb['query'],_0x3353c1[_0xc940('0x2e')]));if(_0x1d33bb[_0xc940('0x2d')][_0xc940('0x39')]){_0x5cf708[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x5cf708[_0xc940('0x37')],{'$or':_[_0xc940('0x27')](_0x5cf708[_0xc940('0x31')],function(_0xdb200b){var _0x59324b={};_0x59324b[_0xdb200b]={'$like':'%'+_0x1d33bb[_0xc940('0x2d')][_0xc940('0x39')]+'%'};return _0x59324b;})});}_0x5cf708=_[_0xc940('0x3a')]({},_0x5cf708,_0x1d33bb[_0xc940('0x3c')]);return _0x31badc[_0xc940('0x4f')](_0x5cf708);}})[_0xc940('0x22')](function(_0x49a824){if(_0x49a824){_0x457a9c=_0x49a824[_0xc940('0x32')];if(!_0x1d33bb[_0xc940('0x2d')][_0xc940('0x33')](_0xc940('0x34'))){_0x5cf708[_0xc940('0x1b')]=qs['limit'](_0x1d33bb[_0xc940('0x2d')][_0xc940('0x1b')]);_0x5cf708[_0xc940('0x1d')]=qs[_0xc940('0x1d')](_0x1d33bb['query'][_0xc940('0x1d')]);}return _0x31badc[_0xc940('0x4f')](_0x5cf708);}})[_0xc940('0x22')](function(_0x3ae9b0){if(_0x3ae9b0){return _0x3ae9b0?{'count':_0x457a9c,'rows':_0x3ae9b0}:null;}})[_0xc940('0x22')](respondWithResult(_0x1dcadf,null))['catch'](handleError(_0x1dcadf,null));};exports[_0xc940('0x50')]=function(_0x58ede7,_0x2edbd7,_0xd0444d){if(_0x58ede7[_0xc940('0x45')]['id']){delete _0x58ede7['body']['id'];}return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x58ede7['params']['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x2edbd7,null))[_0xc940('0x22')](function(_0x588a66){if(_0x588a66){return _0x588a66[_0xc940('0x50')](_0x58ede7[_0xc940('0x45')][_0xc940('0x51')]||[]);}return null;})[_0xc940('0x22')](respondWithResult(_0x2edbd7,null))[_0xc940('0x3f')](handleError(_0x2edbd7,null));};
\ No newline at end of file
index 3ba400e..7f33410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0598=['ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','request-promise','path','exports'];(function(_0x53e3fa,_0x50c5f2){var _0xe8584a=function(_0x1771a5){while(--_0x1771a5){_0x53e3fa['push'](_0x53e3fa['shift']());}};_0xe8584a(++_0x50c5f2);}(_0x0598,0x92));var _0x8059=function(_0x1c2bcd,_0x11b83e){_0x1c2bcd=_0x1c2bcd-0x0;var _0x1a1ceb=_0x0598[_0x1c2bcd];return _0x1a1ceb;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var logger=require('../../config/logger')(_0x8059('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8059('0x3'));var fs=require('fs');var path=require(_0x8059('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZendeskConfiguration.attributes');module[_0x8059('0x5')]=function(_0xa7d7c1,_0x512c0f){return _0xa7d7c1['define'](_0x8059('0x6'),attributes,{'tableName':_0x8059('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xda3f=['../../config/environment','exports','ZendeskConfiguration','int_zendesk_configurations','util','../../config/logger','request-promise','rimraf'];(function(_0x46dcde,_0x2e85ee){var _0x3323de=function(_0x21ce05){while(--_0x21ce05){_0x46dcde['push'](_0x46dcde['shift']());}};_0x3323de(++_0x2e85ee);}(_0xda3f,0xec));var _0xfda3=function(_0x20780a,_0x3cc394){_0x20780a=_0x20780a-0x0;var _0x51d3d0=_0xda3f[_0x20780a];return _0x51d3d0;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var logger=require(_0xfda3('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfda3('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfda3('0x3'));var config=require(_0xfda3('0x4'));var attributes=require('./intZendeskConfiguration.attributes');module[_0xfda3('0x5')]=function(_0x43a010,_0x47e7e2){return _0x43a010['define'](_0xfda3('0x6'),attributes,{'tableName':_0xfda3('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a8c71c..c22b256 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b9b=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x413ad8,_0x302b59){var _0x16d8bb=function(_0x259d37){while(--_0x259d37){_0x413ad8['push'](_0x413ad8['shift']());}};_0x16d8bb(++_0x302b59);}(_0x7b9b,0xfa));var _0xb7b9=function(_0x310482,_0x52c7b0){_0x310482=_0x310482-0x0;var _0x38a29f=_0x7b9b[_0x310482];return _0x38a29f;};'use strict';var _=require(_0xb7b9('0x0'));var util=require('util');var moment=require(_0xb7b9('0x1'));var BPromise=require(_0xb7b9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb7b9('0x3'));var db=require(_0xb7b9('0x4'))['db'];var utils=require(_0xb7b9('0x5'));var logger=require(_0xb7b9('0x6'))(_0xb7b9('0x7'));var config=require('../../config/environment');var jayson=require(_0xb7b9('0x8'));var client=jayson[_0xb7b9('0x9')][_0xb7b9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5693a6,_0x18b628,_0x3828cb){return new BPromise(function(_0x5edf2c,_0x149a7b){return client[_0xb7b9('0xb')](_0x5693a6,_0x3828cb)['then'](function(_0x311ac1){logger[_0xb7b9('0xc')](_0xb7b9('0xd'),_0x18b628,_0xb7b9('0xe'));logger[_0xb7b9('0xf')](_0xb7b9('0x10'),_0x18b628,_0xb7b9('0xe'),JSON[_0xb7b9('0x11')](_0x311ac1));if(_0x311ac1[_0xb7b9('0x12')]){if(_0x311ac1[_0xb7b9('0x12')][_0xb7b9('0x13')]===0x1f4){logger[_0xb7b9('0x12')](_0xb7b9('0xd'),_0x18b628,_0x311ac1[_0xb7b9('0x12')][_0xb7b9('0x14')]);return _0x149a7b(_0x311ac1[_0xb7b9('0x12')][_0xb7b9('0x14')]);}logger[_0xb7b9('0x12')](_0xb7b9('0xd'),_0x18b628,_0x311ac1['error'][_0xb7b9('0x14')]);return _0x5edf2c(_0x311ac1[_0xb7b9('0x12')]['message']);}else{logger[_0xb7b9('0xc')]('ZendeskConfiguration,\x20%s,\x20%s',_0x18b628,'request\x20sent');_0x5edf2c(_0x311ac1[_0xb7b9('0x15')][_0xb7b9('0x14')]);}})[_0xb7b9('0x16')](function(_0x3d504f){logger[_0xb7b9('0x12')](_0xb7b9('0xd'),_0x18b628,_0x3d504f);_0x149a7b(_0x3d504f);});});}
\ No newline at end of file
+var _0x18d9=['debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x1ab1e0,_0x3c2277){var _0xfa44fb=function(_0xc8e769){while(--_0xc8e769){_0x1ab1e0['push'](_0x1ab1e0['shift']());}};_0xfa44fb(++_0x3c2277);}(_0x18d9,0x1b7));var _0x918d=function(_0x84314a,_0x564bfc){_0x84314a=_0x84314a-0x0;var _0x186ebe=_0x18d9[_0x84314a];return _0x186ebe;};'use strict';var _=require(_0x918d('0x0'));var util=require(_0x918d('0x1'));var moment=require(_0x918d('0x2'));var BPromise=require(_0x918d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x918d('0x4'));var db=require(_0x918d('0x5'))['db'];var utils=require(_0x918d('0x6'));var logger=require(_0x918d('0x7'))(_0x918d('0x8'));var config=require(_0x918d('0x9'));var jayson=require(_0x918d('0xa'));var client=jayson[_0x918d('0xb')][_0x918d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3e8124,_0x4b78ee,_0x5c6c10){return new BPromise(function(_0x2ae6cb,_0x3f6d7f){return client[_0x918d('0xd')](_0x3e8124,_0x5c6c10)[_0x918d('0xe')](function(_0x422f81){logger['info'](_0x918d('0xf'),_0x4b78ee,_0x918d('0x10'));logger[_0x918d('0x11')](_0x918d('0x12'),_0x4b78ee,_0x918d('0x10'),JSON[_0x918d('0x13')](_0x422f81));if(_0x422f81[_0x918d('0x14')]){if(_0x422f81[_0x918d('0x14')][_0x918d('0x15')]===0x1f4){logger[_0x918d('0x14')](_0x918d('0xf'),_0x4b78ee,_0x422f81[_0x918d('0x14')][_0x918d('0x16')]);return _0x3f6d7f(_0x422f81['error'][_0x918d('0x16')]);}logger[_0x918d('0x14')](_0x918d('0xf'),_0x4b78ee,_0x422f81[_0x918d('0x14')][_0x918d('0x16')]);return _0x2ae6cb(_0x422f81[_0x918d('0x14')][_0x918d('0x16')]);}else{logger['info'](_0x918d('0xf'),_0x4b78ee,_0x918d('0x10'));_0x2ae6cb(_0x422f81['result'][_0x918d('0x16')]);}})[_0x918d('0x17')](function(_0x114d0e){logger[_0x918d('0x14')](_0x918d('0xf'),_0x4b78ee,_0x114d0e);_0x3f6d7f(_0x114d0e);});});}
\ No newline at end of file
index acdb5d5..9ddbc01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa283=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','post','create','delete','destroy','exports','multer','util','path'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xa283,0x1d8));var _0x3a28=function(_0x2adf6a,_0x132193){_0x2adf6a=_0x2adf6a-0x0;var _0x31f6b6=_0xa283[_0x2adf6a];return _0x31f6b6;};'use strict';var multer=require(_0x3a28('0x0'));var util=require(_0x3a28('0x1'));var path=require(_0x3a28('0x2'));var timeout=require(_0x3a28('0x3'));var express=require('express');var router=express[_0x3a28('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3a28('0x5'));var interaction=require(_0x3a28('0x6'));var config=require(_0x3a28('0x7'));var controller=require(_0x3a28('0x8'));router[_0x3a28('0x9')]('/',auth[_0x3a28('0xa')](),controller[_0x3a28('0xb')]);router['get'](_0x3a28('0xc'),auth['isAuthenticated'](),controller[_0x3a28('0xd')]);router[_0x3a28('0xe')]('/',auth['isAuthenticated'](),controller[_0x3a28('0xf')]);router['put'](_0x3a28('0xc'),auth[_0x3a28('0xa')](),controller['update']);router[_0x3a28('0x10')](_0x3a28('0xc'),auth[_0x3a28('0xa')](),controller[_0x3a28('0x11')]);module[_0x3a28('0x12')]=router;
\ No newline at end of file
+var _0x3392=['create','put','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','post'];(function(_0x39ea42,_0x3c1f50){var _0x33f5b7=function(_0x5d8e73){while(--_0x5d8e73){_0x39ea42['push'](_0x39ea42['shift']());}};_0x33f5b7(++_0x3c1f50);}(_0x3392,0x7b));var _0x2339=function(_0x195577,_0x421360){_0x195577=_0x195577-0x0;var _0x11d962=_0x3392[_0x195577];return _0x11d962;};'use strict';var multer=require(_0x2339('0x0'));var util=require(_0x2339('0x1'));var path=require(_0x2339('0x2'));var timeout=require(_0x2339('0x3'));var express=require(_0x2339('0x4'));var router=express['Router']();var fs_extra=require(_0x2339('0x5'));var auth=require(_0x2339('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2339('0x7'));var controller=require('./intZendeskField.controller');router[_0x2339('0x8')]('/',auth[_0x2339('0x9')](),controller[_0x2339('0xa')]);router[_0x2339('0x8')](_0x2339('0xb'),auth[_0x2339('0x9')](),controller['show']);router[_0x2339('0xc')]('/',auth[_0x2339('0x9')](),controller[_0x2339('0xd')]);router[_0x2339('0xe')]('/:id',auth[_0x2339('0x9')](),controller[_0x2339('0xf')]);router['delete'](_0x2339('0xb'),auth[_0x2339('0x9')](),controller['destroy']);module[_0x2339('0x10')]=router;
\ No newline at end of file
index ce1812a..6cb1b87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9756=['picklist','string','variable','STRING','exports','customVariable','keyValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9756,0x162));var _0x6975=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0x9756[_0x5627e1];return _0x2f013f;};'use strict';var Sequelize=require('sequelize');module[_0x6975('0x0')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x6975('0x1'),_0x6975('0x2'),_0x6975('0x3')),'defaultValue':_0x6975('0x4')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string',_0x6975('0x5'),_0x6975('0x1'))},'keyContent':{'type':Sequelize[_0x6975('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x6975('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6975('0x6')]}};
\ No newline at end of file
+var _0x8cf0=['sequelize','string','keyValue','picklist','STRING','ENUM','customVariable','BOOLEAN'];(function(_0x12ee7b,_0x55f5d3){var _0x98c22a=function(_0x326600){while(--_0x326600){_0x12ee7b['push'](_0x12ee7b['shift']());}};_0x98c22a(++_0x55f5d3);}(_0x8cf0,0x1c8));var _0x08cf=function(_0x5db9a3,_0x2b6d31){_0x5db9a3=_0x5db9a3-0x0;var _0x4ebf6f=_0x8cf0[_0x5db9a3];return _0x4ebf6f;};'use strict';var Sequelize=require(_0x08cf('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x08cf('0x1'),'variable','customVariable',_0x08cf('0x2'),_0x08cf('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x08cf('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x08cf('0x5')]('string','variable',_0x08cf('0x6'))},'keyContent':{'type':Sequelize[_0x08cf('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x08cf('0x4')]},'customField':{'type':Sequelize[_0x08cf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x08cf('0x4')]}};
\ No newline at end of file
index 56fa61a..3d5041a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c29=['where','filter','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','merge','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','json','apply','reject','then','destroy','stack','name','send','index','map','ZendeskField','type','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','pick'];(function(_0xdd0313,_0x251c2b){var _0x2bd7e8=function(_0x340f1f){while(--_0x340f1f){_0xdd0313['push'](_0xdd0313['shift']());}};_0x2bd7e8(++_0x251c2b);}(_0x6c29,0x1c1));var _0x96c2=function(_0x1c5142,_0x30ea72){_0x1c5142=_0x1c5142-0x0;var _0x1268cb=_0x6c29[_0x1c5142];return _0x1268cb;};'use strict';var emlformat=require(_0x96c2('0x0'));var rimraf=require(_0x96c2('0x1'));var zipdir=require(_0x96c2('0x2'));var jsonpatch=require(_0x96c2('0x3'));var rp=require(_0x96c2('0x4'));var moment=require(_0x96c2('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x96c2('0x6'));var path=require(_0x96c2('0x7'));var sox=require('sox');var csv=require(_0x96c2('0x8'));var ejs=require(_0x96c2('0x9'));var fs=require('fs');var fs_extra=require(_0x96c2('0xa'));var _=require(_0x96c2('0xb'));var squel=require(_0x96c2('0xc'));var crypto=require(_0x96c2('0xd'));var jsforce=require(_0x96c2('0xe'));var deskjs=require(_0x96c2('0xf'));var toCsv=require(_0x96c2('0x8'));var querystring=require(_0x96c2('0x10'));var Papa=require('papaparse');var Redis=require(_0x96c2('0x11'));var authService=require(_0x96c2('0x12'));var qs=require(_0x96c2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x96c2('0x14'))(_0x96c2('0x15'));var utils=require(_0x96c2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x96c2('0x17'));var db=require(_0x96c2('0x18'))['db'];function respondWithStatusCode(_0x110a0d,_0x605573){_0x605573=_0x605573||0xcc;return function(_0xa933c3){if(_0xa933c3){return _0x110a0d[_0x96c2('0x19')](_0x605573);}return _0x110a0d[_0x96c2('0x1a')](_0x605573)[_0x96c2('0x1b')]();};}function respondWithResult(_0x160433,_0x38f87e){_0x38f87e=_0x38f87e||0xc8;return function(_0x560947){if(_0x560947){return _0x160433[_0x96c2('0x1a')](_0x38f87e)['json'](_0x560947);}};}function respondWithFilteredResult(_0x4c7447,_0x420400){return function(_0x4bd8f9){if(_0x4bd8f9){var _0x3abc3c=typeof _0x420400[_0x96c2('0x1c')]==='undefined'&&typeof _0x420400[_0x96c2('0x1d')]===_0x96c2('0x1e');var _0x22e7ae=_0x4bd8f9[_0x96c2('0x1f')];var _0x3d38e3=_0x3abc3c?0x0:_0x420400['offset'];var _0x11da3c=_0x3abc3c?_0x4bd8f9[_0x96c2('0x1f')]:_0x420400[_0x96c2('0x1c')]+_0x420400[_0x96c2('0x1d')];var _0x4e1f88;if(_0x11da3c>=_0x22e7ae){_0x11da3c=_0x22e7ae;_0x4e1f88=0xc8;}else{_0x4e1f88=0xce;}_0x4c7447[_0x96c2('0x1a')](_0x4e1f88);return _0x4c7447['set']('Content-Range',_0x3d38e3+'-'+_0x11da3c+'/'+_0x22e7ae)[_0x96c2('0x20')](_0x4bd8f9);}return null;};}function patchUpdates(_0x5118a2){return function(_0x316b48){try{jsonpatch[_0x96c2('0x21')](_0x316b48,_0x5118a2,!![]);}catch(_0x3bd942){return BPromise[_0x96c2('0x22')](_0x3bd942);}return _0x316b48['save']();};}function saveUpdates(_0x2b490,_0x4e635c){return function(_0x266d80){if(_0x266d80){return _0x266d80['update'](_0x2b490)[_0x96c2('0x23')](function(_0x2fd538){return _0x2fd538;});}return null;};}function removeEntity(_0xd382d8,_0x100e7a){return function(_0x24c902){if(_0x24c902){return _0x24c902[_0x96c2('0x24')]()['then'](function(){_0xd382d8[_0x96c2('0x1a')](0xcc)[_0x96c2('0x1b')]();});}};}function handleEntityNotFound(_0x409359,_0x1d869d){return function(_0x39ab1a){if(!_0x39ab1a){_0x409359[_0x96c2('0x19')](0x194);}return _0x39ab1a;};}function handleError(_0x3de2a2,_0x1fd133){_0x1fd133=_0x1fd133||0x1f4;return function(_0x454b05){logger['error'](_0x454b05[_0x96c2('0x25')]);if(_0x454b05[_0x96c2('0x26')]){delete _0x454b05[_0x96c2('0x26')];}_0x3de2a2['status'](_0x1fd133)[_0x96c2('0x27')](_0x454b05);};}exports[_0x96c2('0x28')]=function(_0x2f2632,_0x5750b6){var _0x3a81de={},_0x27af38={},_0x53e30e={'count':0x0,'rows':[]};var _0x2865c7=_[_0x96c2('0x29')](db[_0x96c2('0x2a')]['rawAttributes'],function(_0x1f7627){return{'name':_0x1f7627['fieldName'],'type':_0x1f7627[_0x96c2('0x2b')]['key']};});_0x27af38['model']=_[_0x96c2('0x29')](_0x2865c7,_0x96c2('0x26'));_0x27af38[_0x96c2('0x2c')]=_['keys'](_0x2f2632[_0x96c2('0x2c')]);_0x27af38[_0x96c2('0x2d')]=_[_0x96c2('0x2e')](_0x27af38[_0x96c2('0x2f')],_0x27af38[_0x96c2('0x2c')]);_0x3a81de['attributes']=_[_0x96c2('0x2e')](_0x27af38[_0x96c2('0x2f')],qs[_0x96c2('0x30')](_0x2f2632[_0x96c2('0x2c')]['fields']));_0x3a81de[_0x96c2('0x31')]=_0x3a81de[_0x96c2('0x31')][_0x96c2('0x32')]?_0x3a81de[_0x96c2('0x31')]:_0x27af38['model'];if(!_0x2f2632[_0x96c2('0x2c')]['hasOwnProperty'](_0x96c2('0x33'))){_0x3a81de[_0x96c2('0x1d')]=qs[_0x96c2('0x1d')](_0x2f2632[_0x96c2('0x2c')]['limit']);_0x3a81de[_0x96c2('0x1c')]=qs[_0x96c2('0x1c')](_0x2f2632['query'][_0x96c2('0x1c')]);}_0x3a81de[_0x96c2('0x34')]=qs[_0x96c2('0x35')](_0x2f2632[_0x96c2('0x2c')][_0x96c2('0x35')]);_0x3a81de['where']=qs[_0x96c2('0x2d')](_[_0x96c2('0x36')](_0x2f2632[_0x96c2('0x2c')],_0x27af38[_0x96c2('0x2d')]),_0x2865c7);if(_0x2f2632[_0x96c2('0x2c')]['filter']){_0x3a81de[_0x96c2('0x37')]=_['merge'](_0x3a81de[_0x96c2('0x37')],{'$or':_[_0x96c2('0x29')](_0x2865c7,function(_0x20e5ef){if(_0x20e5ef['type']!=='VIRTUAL'){var _0xc80893={};_0xc80893[_0x20e5ef[_0x96c2('0x26')]]={'$like':'%'+_0x2f2632['query'][_0x96c2('0x38')]+'%'};return _0xc80893;}})});}_0x3a81de=_['merge']({},_0x3a81de,_0x2f2632[_0x96c2('0x39')]);var _0x32279b={'where':_0x3a81de[_0x96c2('0x37')]};return db[_0x96c2('0x2a')][_0x96c2('0x1f')](_0x32279b)['then'](function(_0x4d198c){_0x53e30e[_0x96c2('0x1f')]=_0x4d198c;if(_0x2f2632[_0x96c2('0x2c')][_0x96c2('0x3a')]){_0x3a81de['include']=[{'all':!![]}];}return db[_0x96c2('0x2a')][_0x96c2('0x3b')](_0x3a81de);})['then'](function(_0x27fb44){_0x53e30e[_0x96c2('0x3c')]=_0x27fb44;return _0x53e30e;})['then'](respondWithFilteredResult(_0x5750b6,_0x3a81de))[_0x96c2('0x3d')](handleError(_0x5750b6,null));};exports[_0x96c2('0x3e')]=function(_0x1850d2,_0x54f7d0){var _0x13765c={'raw':!![],'where':{'id':_0x1850d2[_0x96c2('0x3f')]['id']}},_0x5da876={};_0x5da876[_0x96c2('0x2f')]=_[_0x96c2('0x40')](db['ZendeskField'][_0x96c2('0x41')]);_0x5da876[_0x96c2('0x2c')]=_['keys'](_0x1850d2[_0x96c2('0x2c')]);_0x5da876[_0x96c2('0x2d')]=_[_0x96c2('0x2e')](_0x5da876[_0x96c2('0x2f')],_0x5da876['query']);_0x13765c[_0x96c2('0x31')]=_[_0x96c2('0x2e')](_0x5da876[_0x96c2('0x2f')],qs['fields'](_0x1850d2[_0x96c2('0x2c')][_0x96c2('0x30')]));_0x13765c[_0x96c2('0x31')]=_0x13765c[_0x96c2('0x31')]['length']?_0x13765c[_0x96c2('0x31')]:_0x5da876[_0x96c2('0x2f')];if(_0x1850d2[_0x96c2('0x2c')][_0x96c2('0x3a')]){_0x13765c[_0x96c2('0x42')]=[{'all':!![]}];}_0x13765c=_[_0x96c2('0x43')]({},_0x13765c,_0x1850d2[_0x96c2('0x39')]);return db[_0x96c2('0x2a')][_0x96c2('0x44')](_0x13765c)[_0x96c2('0x23')](handleEntityNotFound(_0x54f7d0,null))[_0x96c2('0x23')](respondWithResult(_0x54f7d0,null))[_0x96c2('0x3d')](handleError(_0x54f7d0,null));};exports[_0x96c2('0x45')]=function(_0x3f6198,_0x1f994e){return db[_0x96c2('0x2a')][_0x96c2('0x45')](_0x3f6198[_0x96c2('0x46')],{})[_0x96c2('0x23')](respondWithResult(_0x1f994e,0xc9))[_0x96c2('0x3d')](handleError(_0x1f994e,null));};exports[_0x96c2('0x47')]=function(_0x4b5e77,_0x319a79){if(_0x4b5e77[_0x96c2('0x46')]['id']){delete _0x4b5e77[_0x96c2('0x46')]['id'];}return db[_0x96c2('0x2a')][_0x96c2('0x44')]({'where':{'id':_0x4b5e77[_0x96c2('0x3f')]['id']}})[_0x96c2('0x23')](handleEntityNotFound(_0x319a79,null))[_0x96c2('0x23')](saveUpdates(_0x4b5e77[_0x96c2('0x46')],null))[_0x96c2('0x23')](respondWithResult(_0x319a79,null))[_0x96c2('0x3d')](handleError(_0x319a79,null));};exports[_0x96c2('0x24')]=function(_0x124bf1,_0x27ff5c){return db[_0x96c2('0x2a')]['find']({'where':{'id':_0x124bf1[_0x96c2('0x3f')]['id']}})[_0x96c2('0x23')](handleEntityNotFound(_0x27ff5c,null))[_0x96c2('0x23')](removeEntity(_0x27ff5c,null))[_0x96c2('0x3d')](handleError(_0x27ff5c,null));};
\ No newline at end of file
+var _0x132b=['sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','offset','order','sort','filter','where','merge','VIRTUAL','options','ZendeskField','includeAll','include','findAll','rows','catch','params','length','find','create','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x3eaddc,_0x1c94d3){var _0x1e9aa0=function(_0x30818d){while(--_0x30818d){_0x3eaddc['push'](_0x3eaddc['shift']());}};_0x1e9aa0(++_0x1c94d3);}(_0x132b,0x8d));var _0xb132=function(_0x1e564b,_0x48e3b0){_0x1e564b=_0x1e564b-0x0;var _0x3aa7aa=_0x132b[_0x1e564b];return _0x3aa7aa;};'use strict';var emlformat=require(_0xb132('0x0'));var rimraf=require(_0xb132('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb132('0x2'));var rp=require(_0xb132('0x3'));var moment=require(_0xb132('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb132('0x5'));var util=require(_0xb132('0x6'));var path=require('path');var sox=require(_0xb132('0x7'));var csv=require(_0xb132('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb132('0x9'));var _=require(_0xb132('0xa'));var squel=require(_0xb132('0xb'));var crypto=require('crypto');var jsforce=require(_0xb132('0xc'));var deskjs=require(_0xb132('0xd'));var toCsv=require(_0xb132('0x8'));var querystring=require('querystring');var Papa=require(_0xb132('0xe'));var Redis=require(_0xb132('0xf'));var authService=require(_0xb132('0x10'));var qs=require(_0xb132('0x11'));var as=require(_0xb132('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb132('0x13'))(_0xb132('0x14'));var utils=require(_0xb132('0x15'));var config=require(_0xb132('0x16'));var licenseUtil=require(_0xb132('0x17'));var db=require(_0xb132('0x18'))['db'];function respondWithStatusCode(_0x376655,_0x2f8be8){_0x2f8be8=_0x2f8be8||0xcc;return function(_0x43f104){if(_0x43f104){return _0x376655[_0xb132('0x19')](_0x2f8be8);}return _0x376655[_0xb132('0x1a')](_0x2f8be8)['end']();};}function respondWithResult(_0x3a7c9d,_0x1779ef){_0x1779ef=_0x1779ef||0xc8;return function(_0x520cd6){if(_0x520cd6){return _0x3a7c9d[_0xb132('0x1a')](_0x1779ef)[_0xb132('0x1b')](_0x520cd6);}};}function respondWithFilteredResult(_0x547844,_0x27713e){return function(_0x3c4e03){if(_0x3c4e03){var _0x12d3d2=typeof _0x27713e['offset']===_0xb132('0x1c')&&typeof _0x27713e[_0xb132('0x1d')]===_0xb132('0x1c');var _0x3eb103=_0x3c4e03[_0xb132('0x1e')];var _0x2b8010=_0x12d3d2?0x0:_0x27713e['offset'];var _0x2d7a70=_0x12d3d2?_0x3c4e03[_0xb132('0x1e')]:_0x27713e['offset']+_0x27713e[_0xb132('0x1d')];var _0x101066;if(_0x2d7a70>=_0x3eb103){_0x2d7a70=_0x3eb103;_0x101066=0xc8;}else{_0x101066=0xce;}_0x547844['status'](_0x101066);return _0x547844['set'](_0xb132('0x1f'),_0x2b8010+'-'+_0x2d7a70+'/'+_0x3eb103)[_0xb132('0x1b')](_0x3c4e03);}return null;};}function patchUpdates(_0x2cf9e7){return function(_0x40277e){try{jsonpatch[_0xb132('0x20')](_0x40277e,_0x2cf9e7,!![]);}catch(_0x5980b7){return BPromise[_0xb132('0x21')](_0x5980b7);}return _0x40277e[_0xb132('0x22')]();};}function saveUpdates(_0x24d1e1,_0x327a0e){return function(_0x1eae20){if(_0x1eae20){return _0x1eae20[_0xb132('0x23')](_0x24d1e1)['then'](function(_0x8cd301){return _0x8cd301;});}return null;};}function removeEntity(_0x294a29,_0x1fcb82){return function(_0x36090c){if(_0x36090c){return _0x36090c['destroy']()[_0xb132('0x24')](function(){_0x294a29['status'](0xcc)[_0xb132('0x25')]();});}};}function handleEntityNotFound(_0x218154,_0x1643fa){return function(_0x4d8d96){if(!_0x4d8d96){_0x218154[_0xb132('0x19')](0x194);}return _0x4d8d96;};}function handleError(_0x4084ca,_0x13a51a){_0x13a51a=_0x13a51a||0x1f4;return function(_0x24bfda){logger[_0xb132('0x26')](_0x24bfda[_0xb132('0x27')]);if(_0x24bfda[_0xb132('0x28')]){delete _0x24bfda[_0xb132('0x28')];}_0x4084ca['status'](_0x13a51a)[_0xb132('0x29')](_0x24bfda);};}exports[_0xb132('0x2a')]=function(_0xf4e443,_0x3e6122){var _0x4d1d40={},_0x4bb9b0={},_0x2ec8d4={'count':0x0,'rows':[]};var _0x9c31f8=_[_0xb132('0x2b')](db['ZendeskField']['rawAttributes'],function(_0x278fe2){return{'name':_0x278fe2[_0xb132('0x2c')],'type':_0x278fe2[_0xb132('0x2d')][_0xb132('0x2e')]};});_0x4bb9b0[_0xb132('0x2f')]=_[_0xb132('0x2b')](_0x9c31f8,_0xb132('0x28'));_0x4bb9b0['query']=_[_0xb132('0x30')](_0xf4e443[_0xb132('0x31')]);_0x4bb9b0[_0xb132('0x32')]=_[_0xb132('0x33')](_0x4bb9b0[_0xb132('0x2f')],_0x4bb9b0[_0xb132('0x31')]);_0x4d1d40[_0xb132('0x34')]=_[_0xb132('0x33')](_0x4bb9b0[_0xb132('0x2f')],qs[_0xb132('0x35')](_0xf4e443[_0xb132('0x31')][_0xb132('0x35')]));_0x4d1d40[_0xb132('0x34')]=_0x4d1d40[_0xb132('0x34')]['length']?_0x4d1d40[_0xb132('0x34')]:_0x4bb9b0[_0xb132('0x2f')];if(!_0xf4e443[_0xb132('0x31')]['hasOwnProperty']('nolimit')){_0x4d1d40[_0xb132('0x1d')]=qs[_0xb132('0x1d')](_0xf4e443[_0xb132('0x31')][_0xb132('0x1d')]);_0x4d1d40[_0xb132('0x36')]=qs[_0xb132('0x36')](_0xf4e443[_0xb132('0x31')][_0xb132('0x36')]);}_0x4d1d40[_0xb132('0x37')]=qs['sort'](_0xf4e443[_0xb132('0x31')][_0xb132('0x38')]);_0x4d1d40['where']=qs[_0xb132('0x32')](_['pick'](_0xf4e443[_0xb132('0x31')],_0x4bb9b0[_0xb132('0x32')]),_0x9c31f8);if(_0xf4e443[_0xb132('0x31')][_0xb132('0x39')]){_0x4d1d40[_0xb132('0x3a')]=_[_0xb132('0x3b')](_0x4d1d40[_0xb132('0x3a')],{'$or':_[_0xb132('0x2b')](_0x9c31f8,function(_0x41e9fa){if(_0x41e9fa['type']!==_0xb132('0x3c')){var _0x56ce4d={};_0x56ce4d[_0x41e9fa[_0xb132('0x28')]]={'$like':'%'+_0xf4e443[_0xb132('0x31')][_0xb132('0x39')]+'%'};return _0x56ce4d;}})});}_0x4d1d40=_[_0xb132('0x3b')]({},_0x4d1d40,_0xf4e443[_0xb132('0x3d')]);var _0xfc9b03={'where':_0x4d1d40[_0xb132('0x3a')]};return db[_0xb132('0x3e')][_0xb132('0x1e')](_0xfc9b03)[_0xb132('0x24')](function(_0x4279f0){_0x2ec8d4[_0xb132('0x1e')]=_0x4279f0;if(_0xf4e443[_0xb132('0x31')][_0xb132('0x3f')]){_0x4d1d40[_0xb132('0x40')]=[{'all':!![]}];}return db[_0xb132('0x3e')][_0xb132('0x41')](_0x4d1d40);})['then'](function(_0x48685c){_0x2ec8d4[_0xb132('0x42')]=_0x48685c;return _0x2ec8d4;})[_0xb132('0x24')](respondWithFilteredResult(_0x3e6122,_0x4d1d40))[_0xb132('0x43')](handleError(_0x3e6122,null));};exports['show']=function(_0x462451,_0xe725cc){var _0xd82e35={'raw':!![],'where':{'id':_0x462451[_0xb132('0x44')]['id']}},_0x46a376={};_0x46a376[_0xb132('0x2f')]=_[_0xb132('0x30')](db[_0xb132('0x3e')]['rawAttributes']);_0x46a376[_0xb132('0x31')]=_[_0xb132('0x30')](_0x462451[_0xb132('0x31')]);_0x46a376[_0xb132('0x32')]=_['intersection'](_0x46a376[_0xb132('0x2f')],_0x46a376[_0xb132('0x31')]);_0xd82e35[_0xb132('0x34')]=_[_0xb132('0x33')](_0x46a376['model'],qs[_0xb132('0x35')](_0x462451[_0xb132('0x31')][_0xb132('0x35')]));_0xd82e35['attributes']=_0xd82e35[_0xb132('0x34')][_0xb132('0x45')]?_0xd82e35[_0xb132('0x34')]:_0x46a376['model'];if(_0x462451[_0xb132('0x31')]['includeAll']){_0xd82e35['include']=[{'all':!![]}];}_0xd82e35=_[_0xb132('0x3b')]({},_0xd82e35,_0x462451['options']);return db['ZendeskField'][_0xb132('0x46')](_0xd82e35)[_0xb132('0x24')](handleEntityNotFound(_0xe725cc,null))[_0xb132('0x24')](respondWithResult(_0xe725cc,null))[_0xb132('0x43')](handleError(_0xe725cc,null));};exports[_0xb132('0x47')]=function(_0x1eab24,_0x2d634c){return db[_0xb132('0x3e')]['create'](_0x1eab24['body'],{})[_0xb132('0x24')](respondWithResult(_0x2d634c,0xc9))[_0xb132('0x43')](handleError(_0x2d634c,null));};exports[_0xb132('0x23')]=function(_0x1f3bd2,_0x426fa9){if(_0x1f3bd2[_0xb132('0x48')]['id']){delete _0x1f3bd2[_0xb132('0x48')]['id'];}return db[_0xb132('0x3e')]['find']({'where':{'id':_0x1f3bd2[_0xb132('0x44')]['id']}})[_0xb132('0x24')](handleEntityNotFound(_0x426fa9,null))['then'](saveUpdates(_0x1f3bd2[_0xb132('0x48')],null))[_0xb132('0x24')](respondWithResult(_0x426fa9,null))[_0xb132('0x43')](handleError(_0x426fa9,null));};exports[_0xb132('0x49')]=function(_0x1cead9,_0x4e2598){return db[_0xb132('0x3e')]['find']({'where':{'id':_0x1cead9[_0xb132('0x44')]['id']}})[_0xb132('0x24')](handleEntityNotFound(_0x4e2598,null))[_0xb132('0x24')](removeEntity(_0x4e2598,null))[_0xb132('0x43')](handleError(_0x4e2598,null));};
\ No newline at end of file
index d4c6a43..eb0d1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76f3=['../../config/environment','./intZendeskField.attributes','exports','int_zendesk_fields','zendesk_unique_index','idField','lodash','../../config/logger','moment','request-promise','rimraf'];(function(_0x500717,_0x3f23fa){var _0x52ffa1=function(_0x15943b){while(--_0x15943b){_0x500717['push'](_0x500717['shift']());}};_0x52ffa1(++_0x3f23fa);}(_0x76f3,0x8a));var _0x376f=function(_0x580072,_0x5012ae){_0x580072=_0x580072-0x0;var _0x1e6cec=_0x76f3[_0x580072];return _0x1e6cec;};'use strict';var _=require(_0x376f('0x0'));var util=require('util');var logger=require(_0x376f('0x1'))('api');var moment=require(_0x376f('0x2'));var BPromise=require('bluebird');var rp=require(_0x376f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x376f('0x4'));var config=require(_0x376f('0x5'));var attributes=require(_0x376f('0x6'));module[_0x376f('0x7')]=function(_0x2a05c2,_0x9989e8){return _0x2a05c2['define']('ZendeskField',attributes,{'tableName':_0x376f('0x8'),'paranoid':![],'indexes':[{'name':_0x376f('0x9'),'fields':[_0x376f('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ce6=['int_zendesk_fields','zendesk_unique_index','FieldId','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','ZendeskField'];(function(_0x426121,_0x433941){var _0x179569=function(_0x5e75fb){while(--_0x5e75fb){_0x426121['push'](_0x426121['shift']());}};_0x179569(++_0x433941);}(_0x8ce6,0xf1));var _0x68ce=function(_0x484c64,_0x1cbbd){_0x484c64=_0x484c64-0x0;var _0x3fc964=_0x8ce6[_0x484c64];return _0x3fc964;};'use strict';var _=require(_0x68ce('0x0'));var util=require(_0x68ce('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x68ce('0x2'));var BPromise=require(_0x68ce('0x3'));var rp=require(_0x68ce('0x4'));var fs=require('fs');var path=require(_0x68ce('0x5'));var rimraf=require(_0x68ce('0x6'));var config=require(_0x68ce('0x7'));var attributes=require(_0x68ce('0x8'));module[_0x68ce('0x9')]=function(_0x13c0c9,_0x45837d){return _0x13c0c9['define'](_0x68ce('0xa'),attributes,{'tableName':_0x68ce('0xb'),'paranoid':![],'indexes':[{'name':_0x68ce('0xc'),'fields':['idField',_0x68ce('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 576e80b..e35d058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x028e=['message','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ZendeskField,\x20%s,\x20%s'];(function(_0x211119,_0x36b3a8){var _0x3f8326=function(_0x33ef41){while(--_0x33ef41){_0x211119['push'](_0x211119['shift']());}};_0x3f8326(++_0x36b3a8);}(_0x028e,0x1b9));var _0xe028=function(_0x17e6ab,_0x27519b){_0x17e6ab=_0x17e6ab-0x0;var _0x3b1aa7=_0x028e[_0x17e6ab];return _0x3b1aa7;};'use strict';var _=require('lodash');var util=require(_0xe028('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe028('0x1'));var fs=require('fs');var Redis=require(_0xe028('0x2'));var db=require(_0xe028('0x3'))['db'];var utils=require(_0xe028('0x4'));var logger=require(_0xe028('0x5'))(_0xe028('0x6'));var config=require('../../config/environment');var jayson=require(_0xe028('0x7'));var client=jayson[_0xe028('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b0e94,_0x1e9dad,_0x25e7c3){return new BPromise(function(_0x53fb6b,_0x169c27){return client[_0xe028('0x9')](_0x2b0e94,_0x25e7c3)[_0xe028('0xa')](function(_0x580889){logger[_0xe028('0xb')]('ZendeskField,\x20%s,\x20%s',_0x1e9dad,'request\x20sent');logger[_0xe028('0xc')](_0xe028('0xd'),_0x1e9dad,_0xe028('0xe'),JSON[_0xe028('0xf')](_0x580889));if(_0x580889[_0xe028('0x10')]){if(_0x580889[_0xe028('0x10')][_0xe028('0x11')]===0x1f4){logger[_0xe028('0x10')](_0xe028('0x12'),_0x1e9dad,_0x580889[_0xe028('0x10')][_0xe028('0x13')]);return _0x169c27(_0x580889['error'][_0xe028('0x13')]);}logger['error']('ZendeskField,\x20%s,\x20%s',_0x1e9dad,_0x580889[_0xe028('0x10')][_0xe028('0x13')]);return _0x53fb6b(_0x580889[_0xe028('0x10')][_0xe028('0x13')]);}else{logger['info'](_0xe028('0x12'),_0x1e9dad,_0xe028('0xe'));_0x53fb6b(_0x580889['result'][_0xe028('0x13')]);}})['catch'](function(_0x55f084){logger[_0xe028('0x10')](_0xe028('0x12'),_0x1e9dad,_0x55f084);_0x169c27(_0x55f084);});});}
\ No newline at end of file
+var _0x6a7d=['client','http','request','request\x20sent','debug','stringify','error','code','message','ZendeskField,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x37aad6,_0xa67ee1){var _0x5bb576=function(_0x3e298f){while(--_0x3e298f){_0x37aad6['push'](_0x37aad6['shift']());}};_0x5bb576(++_0xa67ee1);}(_0x6a7d,0x79));var _0xd6a7=function(_0x5713b5,_0x423f83){_0x5713b5=_0x5713b5-0x0;var _0x2f795d=_0x6a7d[_0x5713b5];return _0x2f795d;};'use strict';var _=require(_0xd6a7('0x0'));var util=require(_0xd6a7('0x1'));var moment=require(_0xd6a7('0x2'));var BPromise=require('bluebird');var rs=require(_0xd6a7('0x3'));var fs=require('fs');var Redis=require(_0xd6a7('0x4'));var db=require(_0xd6a7('0x5'))['db'];var utils=require(_0xd6a7('0x6'));var logger=require(_0xd6a7('0x7'))(_0xd6a7('0x8'));var config=require(_0xd6a7('0x9'));var jayson=require(_0xd6a7('0xa'));var client=jayson[_0xd6a7('0xb')][_0xd6a7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x55fcdd,_0x358a4e,_0x16d821){return new BPromise(function(_0x151cb4,_0x255cf4){return client[_0xd6a7('0xd')](_0x55fcdd,_0x16d821)['then'](function(_0xd1e91b){logger['info']('ZendeskField,\x20%s,\x20%s',_0x358a4e,_0xd6a7('0xe'));logger[_0xd6a7('0xf')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x358a4e,_0xd6a7('0xe'),JSON[_0xd6a7('0x10')](_0xd1e91b));if(_0xd1e91b['error']){if(_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x12')]===0x1f4){logger['error']('ZendeskField,\x20%s,\x20%s',_0x358a4e,_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x13')]);return _0x255cf4(_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x13')]);}logger[_0xd6a7('0x11')](_0xd6a7('0x14'),_0x358a4e,_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x13')]);return _0x151cb4(_0xd1e91b[_0xd6a7('0x11')]['message']);}else{logger['info'](_0xd6a7('0x14'),_0x358a4e,_0xd6a7('0xe'));_0x151cb4(_0xd1e91b['result'][_0xd6a7('0x13')]);}})[_0xd6a7('0x15')](function(_0x294d12){logger[_0xd6a7('0x11')](_0xd6a7('0x14'),_0x358a4e,_0x294d12);_0x255cf4(_0x294d12);});});}
\ No newline at end of file
index 9a81a99..f66d70f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f13=['destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/:id','show','/:id/fields','getFields','post','create','put','delete'];(function(_0x5d00cd,_0x40658e){var _0x114706=function(_0x503a4b){while(--_0x503a4b){_0x5d00cd['push'](_0x5d00cd['shift']());}};_0x114706(++_0x40658e);}(_0x1f13,0x1e7));var _0x31f1=function(_0x430f8d,_0x53ea42){_0x430f8d=_0x430f8d-0x0;var _0xe33af1=_0x1f13[_0x430f8d];return _0xe33af1;};'use strict';var multer=require(_0x31f1('0x0'));var util=require(_0x31f1('0x1'));var path=require(_0x31f1('0x2'));var timeout=require('connect-timeout');var express=require(_0x31f1('0x3'));var router=express[_0x31f1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x31f1('0x5'));var interaction=require(_0x31f1('0x6'));var config=require('../../config/environment');var controller=require('./intZohoAccount.controller');router['get']('/',auth[_0x31f1('0x7')](),controller['index']);router[_0x31f1('0x8')](_0x31f1('0x9'),auth[_0x31f1('0x7')](),controller[_0x31f1('0xa')]);router[_0x31f1('0x8')]('/:id/configurations',auth[_0x31f1('0x7')](),controller['getConfigurations']);router[_0x31f1('0x8')](_0x31f1('0xb'),auth['isAuthenticated'](),controller[_0x31f1('0xc')]);router[_0x31f1('0xd')]('/',auth['isAuthenticated'](),controller[_0x31f1('0xe')]);router[_0x31f1('0xd')]('/:id/configurations',auth[_0x31f1('0x7')](),controller['addConfiguration']);router[_0x31f1('0xf')](_0x31f1('0x9'),auth[_0x31f1('0x7')](),controller['update']);router[_0x31f1('0x10')](_0x31f1('0x9'),auth['isAuthenticated'](),controller[_0x31f1('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x418f=['getFields','post','create','addConfiguration','put','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations'];(function(_0x2202e2,_0x384799){var _0x211f25=function(_0x3b0426){while(--_0x3b0426){_0x2202e2['push'](_0x2202e2['shift']());}};_0x211f25(++_0x384799);}(_0x418f,0xb7));var _0xf418=function(_0x2abf68,_0x4ec499){_0x2abf68=_0x2abf68-0x0;var _0x2adec3=_0x418f[_0x2abf68];return _0x2adec3;};'use strict';var multer=require(_0xf418('0x0'));var util=require(_0xf418('0x1'));var path=require(_0xf418('0x2'));var timeout=require(_0xf418('0x3'));var express=require(_0xf418('0x4'));var router=express[_0xf418('0x5')]();var fs_extra=require(_0xf418('0x6'));var auth=require(_0xf418('0x7'));var interaction=require(_0xf418('0x8'));var config=require(_0xf418('0x9'));var controller=require(_0xf418('0xa'));router[_0xf418('0xb')]('/',auth[_0xf418('0xc')](),controller[_0xf418('0xd')]);router[_0xf418('0xb')]('/:id',auth[_0xf418('0xc')](),controller[_0xf418('0xe')]);router['get'](_0xf418('0xf'),auth[_0xf418('0xc')](),controller[_0xf418('0x10')]);router[_0xf418('0xb')]('/:id/fields',auth[_0xf418('0xc')](),controller[_0xf418('0x11')]);router[_0xf418('0x12')]('/',auth[_0xf418('0xc')](),controller[_0xf418('0x13')]);router['post']('/:id/configurations',auth[_0xf418('0xc')](),controller[_0xf418('0x14')]);router[_0xf418('0x15')](_0xf418('0x16'),auth['isAuthenticated'](),controller[_0xf418('0x17')]);router['delete'](_0xf418('0x16'),auth[_0xf418('0xc')](),controller['destroy']);module[_0xf418('0x18')]=router;
\ No newline at end of file
index dab9b04..303d6e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['exports','STRING','sequelize'];(function(_0x1b4e91,_0x59f7cb){var _0x1f150b=function(_0x326b19){while(--_0x326b19){_0x1b4e91['push'](_0x1b4e91['shift']());}};_0x1f150b(++_0x59f7cb);}(_0xe14d,0x1ee));var _0xde14=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xe14d[_0x5c351c];return _0x26f3b3;};'use strict';var Sequelize=require(_0xde14('0x0'));module[_0xde14('0x1')]={'name':{'type':Sequelize[_0xde14('0x2')]},'description':{'type':Sequelize[_0xde14('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xde14('0x2')]},'clientId':{'type':Sequelize[_0xde14('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xde14('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xde14('0x2')]},'refreshToken':{'type':Sequelize[_0xde14('0x2')]}};
\ No newline at end of file
+var _0xd0bb=['exports','STRING','sequelize'];(function(_0xfe76cd,_0x8c73cd){var _0x118106=function(_0x4f05a0){while(--_0x4f05a0){_0xfe76cd['push'](_0xfe76cd['shift']());}};_0x118106(++_0x8c73cd);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x4ae5b9,_0x4a42d2){_0x4ae5b9=_0x4ae5b9-0x0;var _0x3f94f4=_0xd0bb[_0x4ae5b9];return _0x3f94f4;};'use strict';var Sequelize=require(_0xbd0b('0x0'));module[_0xbd0b('0x1')]={'name':{'type':Sequelize[_0xbd0b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xbd0b('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xbd0b('0x2')]},'clientSecret':{'type':Sequelize[_0xbd0b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0xbd0b('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0a56cf8..af3127c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c3=['status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','ZohoAccount','includeAll','include','findAll','rows','catch','params','options','create','body','find','getConfigurations','ZohoConfiguration','pick','map','addConfiguration','findOne','AccountId','getSubjects','Descriptions','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','refreshToken','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Subject','Description','Call_Duration','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','data_type','picklist','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus'];(function(_0x44d869,_0x106ecf){var _0x2a3ae1=function(_0x48b720){while(--_0x48b720){_0x44d869['push'](_0x44d869['shift']());}};_0x2a3ae1(++_0x106ecf);}(_0xc8c3,0x168));var _0x3c8c=function(_0x90f34f,_0x404021){_0x90f34f=_0x90f34f-0x0;var _0x4b18cf=_0xc8c3[_0x90f34f];return _0x4b18cf;};'use strict';var emlformat=require(_0x3c8c('0x0'));var rimraf=require(_0x3c8c('0x1'));var zipdir=require(_0x3c8c('0x2'));var jsonpatch=require(_0x3c8c('0x3'));var rp=require(_0x3c8c('0x4'));var moment=require('moment');var BPromise=require(_0x3c8c('0x5'));var Mustache=require(_0x3c8c('0x6'));var util=require(_0x3c8c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x3c8c('0x8'));var ejs=require(_0x3c8c('0x9'));var fs=require('fs');var fs_extra=require(_0x3c8c('0xa'));var _=require(_0x3c8c('0xb'));var squel=require(_0x3c8c('0xc'));var crypto=require(_0x3c8c('0xd'));var jsforce=require(_0x3c8c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3c8c('0x8'));var querystring=require(_0x3c8c('0xf'));var Papa=require(_0x3c8c('0x10'));var Redis=require(_0x3c8c('0x11'));var authService=require(_0x3c8c('0x12'));var qs=require(_0x3c8c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3c8c('0x14'));var logger=require(_0x3c8c('0x15'))(_0x3c8c('0x16'));var utils=require(_0x3c8c('0x17'));var config=require(_0x3c8c('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x3c8c('0x19'));function respondWithStatusCode(_0x533c84,_0x1db456){_0x1db456=_0x1db456||0xcc;return function(_0x61a742){if(_0x61a742){return _0x533c84[_0x3c8c('0x1a')](_0x1db456);}return _0x533c84[_0x3c8c('0x1b')](_0x1db456)['end']();};}function respondWithResult(_0x5a9517,_0x4f7ad7){_0x4f7ad7=_0x4f7ad7||0xc8;return function(_0x4068b5){if(_0x4068b5){return _0x5a9517['status'](_0x4f7ad7)[_0x3c8c('0x1c')](_0x4068b5);}};}function respondWithFilteredResult(_0x1a6f72,_0x49eaa3){return function(_0x441910){if(_0x441910){var _0x59898d=typeof _0x49eaa3[_0x3c8c('0x1d')]===_0x3c8c('0x1e')&&typeof _0x49eaa3[_0x3c8c('0x1f')]===_0x3c8c('0x1e');var _0x524396=_0x441910[_0x3c8c('0x20')];var _0x479c86=_0x59898d?0x0:_0x49eaa3[_0x3c8c('0x1d')];var _0x3078ec=_0x59898d?_0x441910[_0x3c8c('0x20')]:_0x49eaa3[_0x3c8c('0x1d')]+_0x49eaa3['limit'];var _0x2d84ba;if(_0x3078ec>=_0x524396){_0x3078ec=_0x524396;_0x2d84ba=0xc8;}else{_0x2d84ba=0xce;}_0x1a6f72[_0x3c8c('0x1b')](_0x2d84ba);return _0x1a6f72[_0x3c8c('0x21')](_0x3c8c('0x22'),_0x479c86+'-'+_0x3078ec+'/'+_0x524396)[_0x3c8c('0x1c')](_0x441910);}return null;};}function patchUpdates(_0x22cf07){return function(_0x1cd918){try{jsonpatch[_0x3c8c('0x23')](_0x1cd918,_0x22cf07,!![]);}catch(_0x3c11a6){return BPromise[_0x3c8c('0x24')](_0x3c11a6);}return _0x1cd918['save']();};}function saveUpdates(_0x5706d1,_0x542426){return function(_0x2caec8){if(_0x2caec8){return _0x2caec8[_0x3c8c('0x25')](_0x5706d1)[_0x3c8c('0x26')](function(_0x76049b){return _0x76049b;});}return null;};}function removeEntity(_0x28bd69,_0x1822e6){return function(_0x3d4ee0){if(_0x3d4ee0){return _0x3d4ee0[_0x3c8c('0x27')]()['then'](function(){_0x28bd69['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a1648,_0x1c4d14){return function(_0x417051){if(!_0x417051){_0x3a1648[_0x3c8c('0x1a')](0x194);}return _0x417051;};}function handleError(_0x412e91,_0x56c4c3){_0x56c4c3=_0x56c4c3||0x1f4;return function(_0x555dfe){logger[_0x3c8c('0x28')](_0x555dfe[_0x3c8c('0x29')]);if(_0x555dfe['name']){delete _0x555dfe[_0x3c8c('0x2a')];}_0x412e91['status'](_0x56c4c3)['send'](_0x555dfe);};}exports['index']=function(_0x46faa3,_0x281ed3){var _0x23f2d1={},_0x5f0dd8={},_0x5c18c6={'count':0x0,'rows':[]};var _0x33f6a6=_['map'](db['ZohoAccount'][_0x3c8c('0x2b')],function(_0x36a48c){return{'name':_0x36a48c[_0x3c8c('0x2c')],'type':_0x36a48c[_0x3c8c('0x2d')]['key']};});_0x5f0dd8[_0x3c8c('0x2e')]=_['map'](_0x33f6a6,_0x3c8c('0x2a'));_0x5f0dd8[_0x3c8c('0x2f')]=_[_0x3c8c('0x30')](_0x46faa3[_0x3c8c('0x2f')]);_0x5f0dd8[_0x3c8c('0x31')]=_[_0x3c8c('0x32')](_0x5f0dd8[_0x3c8c('0x2e')],_0x5f0dd8['query']);_0x23f2d1[_0x3c8c('0x33')]=_[_0x3c8c('0x32')](_0x5f0dd8[_0x3c8c('0x2e')],qs['fields'](_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x34')]));_0x23f2d1[_0x3c8c('0x33')]=_0x23f2d1['attributes'][_0x3c8c('0x35')]?_0x23f2d1['attributes']:_0x5f0dd8[_0x3c8c('0x2e')];if(!_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x36')](_0x3c8c('0x37'))){_0x23f2d1['limit']=qs[_0x3c8c('0x1f')](_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x1f')]);_0x23f2d1['offset']=qs[_0x3c8c('0x1d')](_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x1d')]);}_0x23f2d1[_0x3c8c('0x38')]=qs[_0x3c8c('0x39')](_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x39')]);_0x23f2d1[_0x3c8c('0x3a')]=qs[_0x3c8c('0x31')](_['pick'](_0x46faa3[_0x3c8c('0x2f')],_0x5f0dd8[_0x3c8c('0x31')]),_0x33f6a6);if(_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x3b')]){_0x23f2d1['where']=_[_0x3c8c('0x3c')](_0x23f2d1['where'],{'$or':_['map'](_0x33f6a6,function(_0x3d03e3){if(_0x3d03e3[_0x3c8c('0x2d')]!==_0x3c8c('0x3d')){var _0x5494b0={};_0x5494b0[_0x3d03e3[_0x3c8c('0x2a')]]={'$like':'%'+_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x3b')]+'%'};return _0x5494b0;}})});}_0x23f2d1=_[_0x3c8c('0x3c')]({},_0x23f2d1,_0x46faa3['options']);var _0x41e777={'where':_0x23f2d1[_0x3c8c('0x3a')]};return db[_0x3c8c('0x3e')][_0x3c8c('0x20')](_0x41e777)[_0x3c8c('0x26')](function(_0x3c152f){_0x5c18c6[_0x3c8c('0x20')]=_0x3c152f;if(_0x46faa3[_0x3c8c('0x2f')][_0x3c8c('0x3f')]){_0x23f2d1[_0x3c8c('0x40')]=[{'all':!![]}];}return db[_0x3c8c('0x3e')][_0x3c8c('0x41')](_0x23f2d1);})[_0x3c8c('0x26')](function(_0x531fe7){_0x5c18c6[_0x3c8c('0x42')]=_0x531fe7;return _0x5c18c6;})[_0x3c8c('0x26')](respondWithFilteredResult(_0x281ed3,_0x23f2d1))[_0x3c8c('0x43')](handleError(_0x281ed3,null));};exports['show']=function(_0x3cf108,_0x258ffd){var _0x261967={'raw':![],'where':{'id':_0x3cf108[_0x3c8c('0x44')]['id']}},_0x5a68d9={};_0x5a68d9[_0x3c8c('0x2e')]=_[_0x3c8c('0x30')](db[_0x3c8c('0x3e')]['rawAttributes']);_0x5a68d9['query']=_[_0x3c8c('0x30')](_0x3cf108[_0x3c8c('0x2f')]);_0x5a68d9['filters']=_['intersection'](_0x5a68d9['model'],_0x5a68d9['query']);_0x261967[_0x3c8c('0x33')]=_['intersection'](_0x5a68d9['model'],qs[_0x3c8c('0x34')](_0x3cf108[_0x3c8c('0x2f')][_0x3c8c('0x34')]));_0x261967['attributes']=_0x261967[_0x3c8c('0x33')][_0x3c8c('0x35')]?_0x261967['attributes']:_0x5a68d9['model'];if(_0x3cf108[_0x3c8c('0x2f')][_0x3c8c('0x3f')]){_0x261967[_0x3c8c('0x40')]=[{'all':!![]}];}_0x261967=_[_0x3c8c('0x3c')]({},_0x261967,_0x3cf108[_0x3c8c('0x45')]);return db[_0x3c8c('0x3e')]['find'](_0x261967)[_0x3c8c('0x26')](handleEntityNotFound(_0x258ffd,null))[_0x3c8c('0x26')](respondWithResult(_0x258ffd,null))[_0x3c8c('0x43')](handleError(_0x258ffd,null));};exports[_0x3c8c('0x46')]=function(_0x127640,_0x91834e){return db[_0x3c8c('0x3e')][_0x3c8c('0x46')](_0x127640['body'],{})[_0x3c8c('0x26')](respondWithResult(_0x91834e,0xc9))[_0x3c8c('0x43')](handleError(_0x91834e,null));};exports[_0x3c8c('0x25')]=function(_0x3492ac,_0x3735f6){if(_0x3492ac[_0x3c8c('0x47')]['id']){delete _0x3492ac[_0x3c8c('0x47')]['id'];}return db[_0x3c8c('0x3e')][_0x3c8c('0x48')]({'where':{'id':_0x3492ac['params']['id']}})[_0x3c8c('0x26')](handleEntityNotFound(_0x3735f6,null))[_0x3c8c('0x26')](saveUpdates(_0x3492ac[_0x3c8c('0x47')],null))[_0x3c8c('0x26')](respondWithResult(_0x3735f6,null))['catch'](handleError(_0x3735f6,null));};exports[_0x3c8c('0x27')]=function(_0x681725,_0x5689c6){return db[_0x3c8c('0x3e')][_0x3c8c('0x48')]({'where':{'id':_0x681725[_0x3c8c('0x44')]['id']}})[_0x3c8c('0x26')](handleEntityNotFound(_0x5689c6,null))['then'](removeEntity(_0x5689c6,null))[_0x3c8c('0x43')](handleError(_0x5689c6,null));};exports[_0x3c8c('0x49')]=function(_0x4462ff,_0x4acfbe,_0x64f69){var _0x535e54={};var _0x4a7b9b={};var _0x57f322;var _0x171e60;return db[_0x3c8c('0x3e')]['findOne']({'where':{'id':_0x4462ff[_0x3c8c('0x44')]['id']}})[_0x3c8c('0x26')](handleEntityNotFound(_0x4acfbe,null))[_0x3c8c('0x26')](function(_0x56c594){if(_0x56c594){_0x57f322=_0x56c594;_0x4a7b9b[_0x3c8c('0x2e')]=_[_0x3c8c('0x30')](db[_0x3c8c('0x4a')][_0x3c8c('0x2b')]);_0x4a7b9b['query']=_[_0x3c8c('0x30')](_0x4462ff['query']);_0x4a7b9b[_0x3c8c('0x31')]=_[_0x3c8c('0x32')](_0x4a7b9b[_0x3c8c('0x2e')],_0x4a7b9b[_0x3c8c('0x2f')]);_0x535e54[_0x3c8c('0x33')]=_['intersection'](_0x4a7b9b[_0x3c8c('0x2e')],qs['fields'](_0x4462ff[_0x3c8c('0x2f')][_0x3c8c('0x34')]));_0x535e54[_0x3c8c('0x33')]=_0x535e54[_0x3c8c('0x33')][_0x3c8c('0x35')]?_0x535e54[_0x3c8c('0x33')]:_0x4a7b9b[_0x3c8c('0x2e')];_0x535e54['order']=qs['sort'](_0x4462ff[_0x3c8c('0x2f')][_0x3c8c('0x39')]);_0x535e54[_0x3c8c('0x3a')]=qs[_0x3c8c('0x31')](_[_0x3c8c('0x4b')](_0x4462ff[_0x3c8c('0x2f')],_0x4a7b9b['filters']));if(_0x4462ff[_0x3c8c('0x2f')][_0x3c8c('0x3b')]){_0x535e54[_0x3c8c('0x3a')]=_[_0x3c8c('0x3c')](_0x535e54['where'],{'$or':_[_0x3c8c('0x4c')](_0x535e54[_0x3c8c('0x33')],function(_0x207f11){var _0x48f885={};_0x48f885[_0x207f11]={'$like':'%'+_0x4462ff['query']['filter']+'%'};return _0x48f885;})});}_0x535e54=_[_0x3c8c('0x3c')]({},_0x535e54,_0x4462ff[_0x3c8c('0x45')]);return _0x57f322[_0x3c8c('0x49')](_0x535e54);}})['then'](function(_0x51ca08){if(_0x51ca08){_0x171e60=_0x51ca08[_0x3c8c('0x35')];if(!_0x4462ff[_0x3c8c('0x2f')][_0x3c8c('0x36')](_0x3c8c('0x37'))){_0x535e54['limit']=qs[_0x3c8c('0x1f')](_0x4462ff[_0x3c8c('0x2f')][_0x3c8c('0x1f')]);_0x535e54['offset']=qs['offset'](_0x4462ff[_0x3c8c('0x2f')]['offset']);}return _0x57f322[_0x3c8c('0x49')](_0x535e54);}})['then'](function(_0x2dc9f9){if(_0x2dc9f9){return _0x2dc9f9?{'count':_0x171e60,'rows':_0x2dc9f9}:null;}})['then'](respondWithResult(_0x4acfbe,null))[_0x3c8c('0x43')](handleError(_0x4acfbe,null));};exports[_0x3c8c('0x4d')]=function(_0xf3f939,_0x34d9ff,_0x30af83){if(_0xf3f939[_0x3c8c('0x47')]['id']){delete _0xf3f939['body']['id'];}return db[_0x3c8c('0x3e')][_0x3c8c('0x4e')]({'where':{'id':_0xf3f939[_0x3c8c('0x44')]['id']}})['then'](handleEntityNotFound(_0x34d9ff,null))['then'](function(_0x4f6c0f){if(_0x4f6c0f){_0xf3f939[_0x3c8c('0x47')][_0x3c8c('0x4f')]=_0x4f6c0f['id'];_0xf3f939[_0x3c8c('0x47')]['Subjects']=integrations[_0x3c8c('0x50')](_0xf3f939[_0x3c8c('0x47')]['channel'],_0xf3f939[_0x3c8c('0x47')][_0x3c8c('0x2d')]);_0xf3f939[_0x3c8c('0x47')][_0x3c8c('0x51')]=integrations['getDescriptions'](_0xf3f939[_0x3c8c('0x47')][_0x3c8c('0x52')],_0xf3f939[_0x3c8c('0x47')][_0x3c8c('0x2d')]);return db[_0x3c8c('0x4a')][_0x3c8c('0x46')](_0xf3f939[_0x3c8c('0x47')],{'include':[{'model':db[_0x3c8c('0x53')],'as':'Subjects'},{'model':db[_0x3c8c('0x53')],'as':_0x3c8c('0x51')}]});}return null;})[_0x3c8c('0x26')](respondWithResult(_0x34d9ff,null))['catch'](handleError(_0x34d9ff,null));};function getAccessToken(_0x15b6a6){return new Promise(function(_0x13ddc3,_0x2a9436){var _0x42b76e;switch(_0x15b6a6[_0x3c8c('0x54')]){case'US':_0x42b76e=_0x3c8c('0x55');break;case'AU':_0x42b76e=_0x3c8c('0x56');break;case'EU':_0x42b76e=_0x3c8c('0x57');break;case'IN':_0x42b76e=_0x3c8c('0x58');break;case'CN':_0x42b76e=_0x3c8c('0x59');break;default:_0x42b76e=_0x3c8c('0x57');break;}var _0x41ef72={'method':_0x3c8c('0x5a'),'uri':_0x42b76e+_0x3c8c('0x5b'),'qs':{'refresh_token':_0x15b6a6['refreshToken'],'client_id':_0x15b6a6[_0x3c8c('0x5c')],'client_secret':_0x15b6a6[_0x3c8c('0x5d')],'grant_type':_0x3c8c('0x5e')},'json':!![]};return rp(_0x41ef72)['then'](function(_0x2dec05){if(_0x2dec05['access_token']){_0x13ddc3(_0x2dec05[_0x3c8c('0x5f')]);}else{_0x2a9436(_0x3c8c('0x60'));}})[_0x3c8c('0x43')](function(_0x14fc9b){_0x2a9436(_0x14fc9b);});});}exports[_0x3c8c('0x61')]=function(_0x53b974,_0x13ad80,_0x2a4c4f){var _0xf996b1,_0x2b8920,_0x531c40,_0x55002e,_0x172707;return db[_0x3c8c('0x3e')][_0x3c8c('0x4e')]({'where':{'id':_0x53b974['params']['id']},'attributes':['id',_0x3c8c('0x62'),'zone',_0x3c8c('0x5c'),_0x3c8c('0x5d'),_0x3c8c('0x63'),_0x3c8c('0x64'),_0x3c8c('0x65')]})['then'](handleEntityNotFound(_0x13ad80,null))[_0x3c8c('0x26')](function(_0x13998d){_0x172707=_0x13998d;_0xf996b1=_0x172707[_0x3c8c('0x62')];_0x2b8920=_0xf996b1==='zoho.eu'?'eu':'com';_0x531c40=_0x172707[_0x3c8c('0x63')];var _0x492e50=_0x531c40['slice'](-0x1);if(_0x492e50==='/'||_0x492e50==='\x5c'||_0x492e50===':'){_0x531c40=_0x531c40[_0x3c8c('0x66')](0x0,_0x531c40[_0x3c8c('0x67')](_0x492e50));}if(!_0x172707[_0x3c8c('0x65')]){throw new Error(_0x3c8c('0x68'));}return getAccessToken(_0x172707);})[_0x3c8c('0x26')](function(_0x70a2b0){if(_0x70a2b0){return rp({'method':_0x3c8c('0x69'),'uri':util[_0x3c8c('0x6a')](_0x3c8c('0x6b'),_0x2b8920),'qs':{'module':_0x3c8c('0x6c')},'headers':{'Authorization':_0x3c8c('0x6d')+_0x70a2b0},'json':!![]});}})['then'](function(_0x768bd3){if(_0x768bd3){if(_0x768bd3[_0x3c8c('0x6e')]&&_0x768bd3['response']['error']){throw new Error(_0x768bd3[_0x3c8c('0x6e')][_0x3c8c('0x28')]['message']);}var _0x109472=[];var _0x488aca=[];var _0x33b269=['Owner',_0x3c8c('0x6f'),_0x3c8c('0x70'),'WhoId',_0x3c8c('0x71'),'Call_Result','Call_Start_Time',_0x3c8c('0x72')];_0x488aca=_[_0x3c8c('0x73')](_0x768bd3[_0x3c8c('0x34')],function(_0x3ac091){return _0x33b269[_0x3c8c('0x74')](_0x3ac091[_0x3c8c('0x75')]);});for(var _0x2243a8=0x0;_0x2243a8<_0x488aca['length'];_0x2243a8++){if(_0x488aca[_0x2243a8][_0x3c8c('0x76')]===![]){_0x109472[_0x3c8c('0x77')]({'id':_0x488aca[_0x2243a8]['id'],'name':_0x488aca[_0x2243a8][_0x3c8c('0x78')],'custom':_0x488aca[_0x2243a8]['custom_field'],'options':_0x488aca[_0x2243a8][_0x3c8c('0x79')]===_0x3c8c('0x7a')&&_0x488aca[_0x2243a8][_0x3c8c('0x7b')][_0x3c8c('0x35')]>-0x1?_[_0x3c8c('0x4c')](_0x488aca[_0x2243a8][_0x3c8c('0x7b')],function(_0x59ba0b){return{'name':_0x59ba0b,'value':_0x59ba0b};}):[]});}}return{'count':_0x109472[_0x3c8c('0x35')],'rows':_0x109472};}else{return{'count':0x0,'rows':[]};}})[_0x3c8c('0x26')](respondWithResult(_0x13ad80,null))[_0x3c8c('0x43')](function(_0x4c2a54){var _0x51e2ac=_0x53b974[_0x3c8c('0x2f')][_0x3c8c('0x7c')]?0x1f4:_0x4c2a54['statusCode']||0x1f4;logger[_0x3c8c('0x28')](_0x3c8c('0x7d'),_0x3c8c('0x61'),_0x51e2ac,JSON[_0x3c8c('0x7e')](_0x4c2a54));delete _0x4c2a54['name'];if(_0x51e2ac===0x191){_0x51e2ac=0x190;}_0x13ad80[_0x3c8c('0x1b')](_0x51e2ac)[_0x3c8c('0x7f')](_0x53b974[_0x3c8c('0x2f')][_0x3c8c('0x7c')]?{'message':_0x3c8c('0x80'),'statusCode':_0x4c2a54['statusCode']}:_0x4c2a54);});};
\ No newline at end of file
+var _0x7eae=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','stack','name','send','map','ZohoAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','find','create','body','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','host','serverUrl','code','zoho.eu','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','error','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','remove','system_mandatory','push','display_label','data_type','picklist','test','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x5045e2,_0x4f8a89){var _0x33bd4c=function(_0x1e4ba1){while(--_0x1e4ba1){_0x5045e2['push'](_0x5045e2['shift']());}};_0x33bd4c(++_0x4f8a89);}(_0x7eae,0x165));var _0xe7ea=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x7eae[_0x2763f2];return _0x3ef471;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe7ea('0x0'));var zipdir=require(_0xe7ea('0x1'));var jsonpatch=require(_0xe7ea('0x2'));var rp=require('request-promise');var moment=require(_0xe7ea('0x3'));var BPromise=require(_0xe7ea('0x4'));var Mustache=require(_0xe7ea('0x5'));var util=require(_0xe7ea('0x6'));var path=require(_0xe7ea('0x7'));var sox=require(_0xe7ea('0x8'));var csv=require(_0xe7ea('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe7ea('0xa'));var _=require('lodash');var squel=require(_0xe7ea('0xb'));var crypto=require(_0xe7ea('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe7ea('0x9'));var querystring=require(_0xe7ea('0xd'));var Papa=require(_0xe7ea('0xe'));var Redis=require(_0xe7ea('0xf'));var authService=require(_0xe7ea('0x10'));var qs=require(_0xe7ea('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe7ea('0x12'));var logger=require(_0xe7ea('0x13'))(_0xe7ea('0x14'));var utils=require(_0xe7ea('0x15'));var config=require(_0xe7ea('0x16'));var licenseUtil=require(_0xe7ea('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0xe7ea('0x18'));function respondWithStatusCode(_0x481b60,_0x30189e){_0x30189e=_0x30189e||0xcc;return function(_0x33a55d){if(_0x33a55d){return _0x481b60[_0xe7ea('0x19')](_0x30189e);}return _0x481b60['status'](_0x30189e)[_0xe7ea('0x1a')]();};}function respondWithResult(_0x15a42d,_0x59dc40){_0x59dc40=_0x59dc40||0xc8;return function(_0x21b9b4){if(_0x21b9b4){return _0x15a42d[_0xe7ea('0x1b')](_0x59dc40)[_0xe7ea('0x1c')](_0x21b9b4);}};}function respondWithFilteredResult(_0x4e3b7c,_0x18977c){return function(_0x3ffb09){if(_0x3ffb09){var _0x4736fd=typeof _0x18977c['offset']==='undefined'&&typeof _0x18977c[_0xe7ea('0x1d')]===_0xe7ea('0x1e');var _0x17ee43=_0x3ffb09[_0xe7ea('0x1f')];var _0xdbb5bd=_0x4736fd?0x0:_0x18977c[_0xe7ea('0x20')];var _0x39f2e3=_0x4736fd?_0x3ffb09['count']:_0x18977c['offset']+_0x18977c[_0xe7ea('0x1d')];var _0x2a4111;if(_0x39f2e3>=_0x17ee43){_0x39f2e3=_0x17ee43;_0x2a4111=0xc8;}else{_0x2a4111=0xce;}_0x4e3b7c[_0xe7ea('0x1b')](_0x2a4111);return _0x4e3b7c[_0xe7ea('0x21')](_0xe7ea('0x22'),_0xdbb5bd+'-'+_0x39f2e3+'/'+_0x17ee43)[_0xe7ea('0x1c')](_0x3ffb09);}return null;};}function patchUpdates(_0x40124c){return function(_0x921a8){try{jsonpatch[_0xe7ea('0x23')](_0x921a8,_0x40124c,!![]);}catch(_0x14190b){return BPromise[_0xe7ea('0x24')](_0x14190b);}return _0x921a8[_0xe7ea('0x25')]();};}function saveUpdates(_0x253dc5,_0x4aea99){return function(_0x34ebb0){if(_0x34ebb0){return _0x34ebb0[_0xe7ea('0x26')](_0x253dc5)[_0xe7ea('0x27')](function(_0x3eb5ab){return _0x3eb5ab;});}return null;};}function removeEntity(_0x206e78,_0x57f830){return function(_0x321c61){if(_0x321c61){return _0x321c61['destroy']()[_0xe7ea('0x27')](function(){_0x206e78[_0xe7ea('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d628e,_0x5cd5e9){return function(_0x35940e){if(!_0x35940e){_0x1d628e['sendStatus'](0x194);}return _0x35940e;};}function handleError(_0x37aeb0,_0x59bb3b){_0x59bb3b=_0x59bb3b||0x1f4;return function(_0x30bb38){logger['error'](_0x30bb38[_0xe7ea('0x28')]);if(_0x30bb38[_0xe7ea('0x29')]){delete _0x30bb38[_0xe7ea('0x29')];}_0x37aeb0[_0xe7ea('0x1b')](_0x59bb3b)[_0xe7ea('0x2a')](_0x30bb38);};}exports['index']=function(_0x1c9020,_0x4fe19f){var _0x3f53aa={},_0x1c823c={},_0x2c0d3b={'count':0x0,'rows':[]};var _0x54f1cb=_[_0xe7ea('0x2b')](db[_0xe7ea('0x2c')][_0xe7ea('0x2d')],function(_0x2a7740){return{'name':_0x2a7740['fieldName'],'type':_0x2a7740[_0xe7ea('0x2e')]['key']};});_0x1c823c[_0xe7ea('0x2f')]=_[_0xe7ea('0x2b')](_0x54f1cb,_0xe7ea('0x29'));_0x1c823c[_0xe7ea('0x30')]=_[_0xe7ea('0x31')](_0x1c9020[_0xe7ea('0x30')]);_0x1c823c[_0xe7ea('0x32')]=_[_0xe7ea('0x33')](_0x1c823c[_0xe7ea('0x2f')],_0x1c823c[_0xe7ea('0x30')]);_0x3f53aa[_0xe7ea('0x34')]=_[_0xe7ea('0x33')](_0x1c823c[_0xe7ea('0x2f')],qs[_0xe7ea('0x35')](_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x35')]));_0x3f53aa[_0xe7ea('0x34')]=_0x3f53aa['attributes'][_0xe7ea('0x36')]?_0x3f53aa['attributes']:_0x1c823c[_0xe7ea('0x2f')];if(!_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x37')](_0xe7ea('0x38'))){_0x3f53aa[_0xe7ea('0x1d')]=qs[_0xe7ea('0x1d')](_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x1d')]);_0x3f53aa[_0xe7ea('0x20')]=qs[_0xe7ea('0x20')](_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x20')]);}_0x3f53aa[_0xe7ea('0x39')]=qs[_0xe7ea('0x3a')](_0x1c9020['query'][_0xe7ea('0x3a')]);_0x3f53aa[_0xe7ea('0x3b')]=qs[_0xe7ea('0x32')](_[_0xe7ea('0x3c')](_0x1c9020[_0xe7ea('0x30')],_0x1c823c[_0xe7ea('0x32')]),_0x54f1cb);if(_0x1c9020[_0xe7ea('0x30')]['filter']){_0x3f53aa[_0xe7ea('0x3b')]=_[_0xe7ea('0x3d')](_0x3f53aa[_0xe7ea('0x3b')],{'$or':_[_0xe7ea('0x2b')](_0x54f1cb,function(_0x371b07){if(_0x371b07['type']!==_0xe7ea('0x3e')){var _0xf8ebf6={};_0xf8ebf6[_0x371b07[_0xe7ea('0x29')]]={'$like':'%'+_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x3f')]+'%'};return _0xf8ebf6;}})});}_0x3f53aa=_[_0xe7ea('0x3d')]({},_0x3f53aa,_0x1c9020[_0xe7ea('0x40')]);var _0x4767ff={'where':_0x3f53aa['where']};return db[_0xe7ea('0x2c')][_0xe7ea('0x1f')](_0x4767ff)[_0xe7ea('0x27')](function(_0xcef032){_0x2c0d3b[_0xe7ea('0x1f')]=_0xcef032;if(_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x41')]){_0x3f53aa[_0xe7ea('0x42')]=[{'all':!![]}];}return db[_0xe7ea('0x2c')]['findAll'](_0x3f53aa);})['then'](function(_0x462ad2){_0x2c0d3b[_0xe7ea('0x43')]=_0x462ad2;return _0x2c0d3b;})[_0xe7ea('0x27')](respondWithFilteredResult(_0x4fe19f,_0x3f53aa))[_0xe7ea('0x44')](handleError(_0x4fe19f,null));};exports[_0xe7ea('0x45')]=function(_0x3fabf8,_0x54ddce){var _0x425f62={'raw':![],'where':{'id':_0x3fabf8[_0xe7ea('0x46')]['id']}},_0x287db2={};_0x287db2[_0xe7ea('0x2f')]=_[_0xe7ea('0x31')](db[_0xe7ea('0x2c')]['rawAttributes']);_0x287db2[_0xe7ea('0x30')]=_[_0xe7ea('0x31')](_0x3fabf8[_0xe7ea('0x30')]);_0x287db2['filters']=_[_0xe7ea('0x33')](_0x287db2[_0xe7ea('0x2f')],_0x287db2[_0xe7ea('0x30')]);_0x425f62['attributes']=_[_0xe7ea('0x33')](_0x287db2[_0xe7ea('0x2f')],qs[_0xe7ea('0x35')](_0x3fabf8[_0xe7ea('0x30')][_0xe7ea('0x35')]));_0x425f62[_0xe7ea('0x34')]=_0x425f62['attributes'][_0xe7ea('0x36')]?_0x425f62['attributes']:_0x287db2['model'];if(_0x3fabf8[_0xe7ea('0x30')]['includeAll']){_0x425f62[_0xe7ea('0x42')]=[{'all':!![]}];}_0x425f62=_[_0xe7ea('0x3d')]({},_0x425f62,_0x3fabf8['options']);return db[_0xe7ea('0x2c')][_0xe7ea('0x47')](_0x425f62)[_0xe7ea('0x27')](handleEntityNotFound(_0x54ddce,null))[_0xe7ea('0x27')](respondWithResult(_0x54ddce,null))['catch'](handleError(_0x54ddce,null));};exports[_0xe7ea('0x48')]=function(_0x3d2796,_0x406b47){return db[_0xe7ea('0x2c')][_0xe7ea('0x48')](_0x3d2796[_0xe7ea('0x49')],{})[_0xe7ea('0x27')](respondWithResult(_0x406b47,0xc9))[_0xe7ea('0x44')](handleError(_0x406b47,null));};exports[_0xe7ea('0x26')]=function(_0x346d3d,_0x3ac1c4){if(_0x346d3d['body']['id']){delete _0x346d3d[_0xe7ea('0x49')]['id'];}return db['ZohoAccount'][_0xe7ea('0x47')]({'where':{'id':_0x346d3d[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x3ac1c4,null))[_0xe7ea('0x27')](saveUpdates(_0x346d3d[_0xe7ea('0x49')],null))[_0xe7ea('0x27')](respondWithResult(_0x3ac1c4,null))['catch'](handleError(_0x3ac1c4,null));};exports['destroy']=function(_0x3ea021,_0x25c1a8){return db[_0xe7ea('0x2c')][_0xe7ea('0x47')]({'where':{'id':_0x3ea021[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x25c1a8,null))[_0xe7ea('0x27')](removeEntity(_0x25c1a8,null))[_0xe7ea('0x44')](handleError(_0x25c1a8,null));};exports[_0xe7ea('0x4a')]=function(_0x136cb5,_0x3b3f26,_0x9dc34b){var _0x477be4={};var _0x58f81a={};var _0x1adb3f;var _0x565095;return db[_0xe7ea('0x2c')][_0xe7ea('0x4b')]({'where':{'id':_0x136cb5[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x3b3f26,null))[_0xe7ea('0x27')](function(_0xfbb137){if(_0xfbb137){_0x1adb3f=_0xfbb137;_0x58f81a['model']=_[_0xe7ea('0x31')](db[_0xe7ea('0x4c')][_0xe7ea('0x2d')]);_0x58f81a[_0xe7ea('0x30')]=_[_0xe7ea('0x31')](_0x136cb5[_0xe7ea('0x30')]);_0x58f81a[_0xe7ea('0x32')]=_[_0xe7ea('0x33')](_0x58f81a['model'],_0x58f81a['query']);_0x477be4['attributes']=_[_0xe7ea('0x33')](_0x58f81a['model'],qs[_0xe7ea('0x35')](_0x136cb5[_0xe7ea('0x30')]['fields']));_0x477be4[_0xe7ea('0x34')]=_0x477be4[_0xe7ea('0x34')][_0xe7ea('0x36')]?_0x477be4[_0xe7ea('0x34')]:_0x58f81a[_0xe7ea('0x2f')];_0x477be4[_0xe7ea('0x39')]=qs['sort'](_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x3a')]);_0x477be4[_0xe7ea('0x3b')]=qs[_0xe7ea('0x32')](_[_0xe7ea('0x3c')](_0x136cb5[_0xe7ea('0x30')],_0x58f81a[_0xe7ea('0x32')]));if(_0x136cb5[_0xe7ea('0x30')]['filter']){_0x477be4[_0xe7ea('0x3b')]=_['merge'](_0x477be4[_0xe7ea('0x3b')],{'$or':_['map'](_0x477be4[_0xe7ea('0x34')],function(_0x553f12){var _0x8d6879={};_0x8d6879[_0x553f12]={'$like':'%'+_0x136cb5[_0xe7ea('0x30')]['filter']+'%'};return _0x8d6879;})});}_0x477be4=_[_0xe7ea('0x3d')]({},_0x477be4,_0x136cb5[_0xe7ea('0x40')]);return _0x1adb3f[_0xe7ea('0x4a')](_0x477be4);}})[_0xe7ea('0x27')](function(_0x4ce06c){if(_0x4ce06c){_0x565095=_0x4ce06c[_0xe7ea('0x36')];if(!_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x37')](_0xe7ea('0x38'))){_0x477be4[_0xe7ea('0x1d')]=qs[_0xe7ea('0x1d')](_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x1d')]);_0x477be4[_0xe7ea('0x20')]=qs['offset'](_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x20')]);}return _0x1adb3f[_0xe7ea('0x4a')](_0x477be4);}})[_0xe7ea('0x27')](function(_0x26c2b5){if(_0x26c2b5){return _0x26c2b5?{'count':_0x565095,'rows':_0x26c2b5}:null;}})[_0xe7ea('0x27')](respondWithResult(_0x3b3f26,null))[_0xe7ea('0x44')](handleError(_0x3b3f26,null));};exports[_0xe7ea('0x4d')]=function(_0x425a29,_0x416028,_0x1a6beb){if(_0x425a29[_0xe7ea('0x49')]['id']){delete _0x425a29['body']['id'];}return db[_0xe7ea('0x2c')]['findOne']({'where':{'id':_0x425a29[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x416028,null))[_0xe7ea('0x27')](function(_0x395351){if(_0x395351){_0x425a29['body'][_0xe7ea('0x4e')]=_0x395351['id'];_0x425a29['body'][_0xe7ea('0x4f')]=integrations[_0xe7ea('0x50')](_0x425a29['body'][_0xe7ea('0x51')],_0x425a29[_0xe7ea('0x49')][_0xe7ea('0x2e')]);_0x425a29[_0xe7ea('0x49')]['Descriptions']=integrations['getDescriptions'](_0x425a29[_0xe7ea('0x49')][_0xe7ea('0x51')],_0x425a29[_0xe7ea('0x49')][_0xe7ea('0x2e')]);return db[_0xe7ea('0x4c')][_0xe7ea('0x48')](_0x425a29[_0xe7ea('0x49')],{'include':[{'model':db[_0xe7ea('0x52')],'as':_0xe7ea('0x4f')},{'model':db[_0xe7ea('0x52')],'as':'Descriptions'}]});}return null;})[_0xe7ea('0x27')](respondWithResult(_0x416028,null))[_0xe7ea('0x44')](handleError(_0x416028,null));};function getAccessToken(_0x4b651a){return new Promise(function(_0x1ebf2f,_0x35cc66){var _0x57391a;switch(_0x4b651a[_0xe7ea('0x53')]){case'US':_0x57391a=_0xe7ea('0x54');break;case'AU':_0x57391a=_0xe7ea('0x55');break;case'EU':_0x57391a=_0xe7ea('0x56');break;case'IN':_0x57391a=_0xe7ea('0x57');break;case'CN':_0x57391a=_0xe7ea('0x58');break;default:_0x57391a=_0xe7ea('0x56');break;}var _0x330b2e={'method':_0xe7ea('0x59'),'uri':_0x57391a+_0xe7ea('0x5a'),'qs':{'refresh_token':_0x4b651a[_0xe7ea('0x5b')],'client_id':_0x4b651a[_0xe7ea('0x5c')],'client_secret':_0x4b651a[_0xe7ea('0x5d')],'grant_type':_0xe7ea('0x5e')},'json':!![]};return rp(_0x330b2e)[_0xe7ea('0x27')](function(_0xbc8f23){if(_0xbc8f23['access_token']){_0x1ebf2f(_0xbc8f23['access_token']);}else{_0x35cc66('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})['catch'](function(_0x26326b){_0x35cc66(_0x26326b);});});}exports['getFields']=function(_0x48f878,_0x39f352,_0x59c96b){var _0x503312,_0x44511e,_0x5682b8,_0x213606,_0x28079c;return db['ZohoAccount'][_0xe7ea('0x4b')]({'where':{'id':_0x48f878[_0xe7ea('0x46')]['id']},'attributes':['id',_0xe7ea('0x5f'),'zone',_0xe7ea('0x5c'),_0xe7ea('0x5d'),_0xe7ea('0x60'),_0xe7ea('0x61'),_0xe7ea('0x5b')]})[_0xe7ea('0x27')](handleEntityNotFound(_0x39f352,null))[_0xe7ea('0x27')](function(_0x7e973a){_0x28079c=_0x7e973a;_0x503312=_0x28079c['host'];_0x44511e=_0x503312===_0xe7ea('0x62')?'eu':'com';_0x5682b8=_0x28079c[_0xe7ea('0x60')];var _0xe9ec58=_0x5682b8[_0xe7ea('0x63')](-0x1);if(_0xe9ec58==='/'||_0xe9ec58==='\x5c'||_0xe9ec58===':'){_0x5682b8=_0x5682b8[_0xe7ea('0x64')](0x0,_0x5682b8[_0xe7ea('0x65')](_0xe9ec58));}if(!_0x28079c['refreshToken']){throw new Error(_0xe7ea('0x66'));}return getAccessToken(_0x28079c);})[_0xe7ea('0x27')](function(_0x57b364){if(_0x57b364){return rp({'method':'GET','uri':util[_0xe7ea('0x67')](_0xe7ea('0x68'),_0x44511e),'qs':{'module':_0xe7ea('0x69')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x57b364},'json':!![]});}})[_0xe7ea('0x27')](function(_0xcc6a8e){if(_0xcc6a8e){if(_0xcc6a8e['response']&&_0xcc6a8e[_0xe7ea('0x6a')][_0xe7ea('0x6b')]){throw new Error(_0xcc6a8e[_0xe7ea('0x6a')][_0xe7ea('0x6b')][_0xe7ea('0x6c')]);}var _0x1b020e=[];var _0x4b5ac9=[];var _0x18ac17=[_0xe7ea('0x6d'),_0xe7ea('0x6e'),_0xe7ea('0x6f'),_0xe7ea('0x70'),_0xe7ea('0x71'),_0xe7ea('0x72'),'Call_Start_Time','Call_Type'];_0x4b5ac9=_[_0xe7ea('0x73')](_0xcc6a8e['fields'],function(_0x1464b2){return _0x18ac17['includes'](_0x1464b2['api_name']);});for(var _0x2c7166=0x0;_0x2c7166<_0x4b5ac9[_0xe7ea('0x36')];_0x2c7166++){if(_0x4b5ac9[_0x2c7166][_0xe7ea('0x74')]===![]){_0x1b020e[_0xe7ea('0x75')]({'id':_0x4b5ac9[_0x2c7166]['id'],'name':_0x4b5ac9[_0x2c7166][_0xe7ea('0x76')],'custom':_0x4b5ac9[_0x2c7166]['custom_field'],'options':_0x4b5ac9[_0x2c7166][_0xe7ea('0x77')]===_0xe7ea('0x78')&&_0x4b5ac9[_0x2c7166]['pick_list_values'][_0xe7ea('0x36')]>-0x1?_[_0xe7ea('0x2b')](_0x4b5ac9[_0x2c7166]['pick_list_values'],function(_0xf6b85f){return{'name':_0xf6b85f,'value':_0xf6b85f};}):[]});}}return{'count':_0x1b020e[_0xe7ea('0x36')],'rows':_0x1b020e};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x39f352,null))['catch'](function(_0x214f1f){var _0x26a81c=_0x48f878[_0xe7ea('0x30')][_0xe7ea('0x79')]?0x1f4:_0x214f1f['statusCode']||0x1f4;logger['error'](_0xe7ea('0x7a'),_0xe7ea('0x7b'),_0x26a81c,JSON['stringify'](_0x214f1f));delete _0x214f1f['name'];if(_0x26a81c===0x191){_0x26a81c=0x190;}_0x39f352['status'](_0x26a81c)[_0xe7ea('0x2a')](_0x48f878[_0xe7ea('0x30')][_0xe7ea('0x79')]?{'message':_0xe7ea('0x7c'),'statusCode':_0x214f1f['statusCode']}:_0x214f1f);});};
\ No newline at end of file
index de89746..c708fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb098=['substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','POST','clientSecret','serverUrl','application/x-www-form-urlencoded','refresh_token','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','host','https://accounts.zoho.com.cn','then','parse','name','lodash','util','moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','zone','changed','clientId','code'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xb098,0x1c4));var _0x8b09=function(_0x4adf05,_0xbec980){_0x4adf05=_0x4adf05-0x0;var _0x651a0f=_0xb098[_0x4adf05];return _0x651a0f;};'use strict';var _=require(_0x8b09('0x0'));var util=require(_0x8b09('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8b09('0x2'));var BPromise=require(_0x8b09('0x3'));var rp=require(_0x8b09('0x4'));var fs=require('fs');var path=require(_0x8b09('0x5'));var rimraf=require('rimraf');var config=require(_0x8b09('0x6'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x8b09('0x7'));module[_0x8b09('0x8')]=function(_0x33f5e3,_0x3a92a7){return _0x33f5e3[_0x8b09('0x9')](_0x8b09('0xa'),attributes,{'tableName':_0x8b09('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x97f897,_0x3da1ec,_0x41b5e9){if(_0x97f897['changed'](_0x8b09('0xc'))||_0x97f897[_0x8b09('0xd')]('serverUrl')||_0x97f897[_0x8b09('0xd')](_0x8b09('0xe'))||_0x97f897[_0x8b09('0xd')]('clientSecret')||_0x97f897[_0x8b09('0xd')](_0x8b09('0xf'))||_0x97f897['changed']('host')){var _0x42ec86,_0x2a7915;_0x42ec86=_0x97f897['serverUrl'];var _0x471844=_0x42ec86['slice'](-0x1);if(_0x471844==='/'||_0x471844==='\x5c'||_0x471844===':'){_0x42ec86=_0x42ec86[_0x8b09('0x10')](0x0,_0x42ec86[_0x8b09('0x11')](_0x471844));}switch(_0x97f897[_0x8b09('0xc')]){case'US':_0x2a7915=_0x8b09('0x12');break;case'AU':_0x2a7915=_0x8b09('0x13');break;case'IN':_0x2a7915=_0x8b09('0x14');break;case'CN':_0x2a7915='https://accounts.zoho.com.cn';break;default:_0x2a7915=_0x8b09('0x15');break;}var _0x28178f={'method':_0x8b09('0x16'),'uri':_0x2a7915+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x97f897[_0x8b09('0xe')],'client_secret':_0x97f897[_0x8b09('0x17')],'redirect_uri':_0x97f897[_0x8b09('0x18')],'code':_0x97f897['code']},'headers':{'Content-Type':_0x8b09('0x19')}};return rp(_0x28178f)['then'](function(_0x3de7fa){var _0xf50a37=JSON['parse'](_0x3de7fa);if(_0xf50a37[_0x8b09('0x1a')]){_0x97f897['refreshToken']=_0xf50a37[_0x8b09('0x1a')];logger[_0x8b09('0x1b')](util[_0x8b09('0x1c')](_0x8b09('0x1d'),_0x97f897['name'],_0x97f897['id']));}else{logger[_0x8b09('0x1e')](util[_0x8b09('0x1c')](_0x8b09('0x1f'),_0x97f897['name'],_0x97f897['id']),util[_0x8b09('0x20')](_0xf50a37,{'showHidden':![],'depth':null}));}return _0x41b5e9(null,_0x3da1ec);})[_0x8b09('0x21')](function(_0xcad35d){logger[_0x8b09('0x1e')](util[_0x8b09('0x1c')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x97f897['name'],_0x97f897['id']),util[_0x8b09('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x41b5e9(_0xcad35d);});}else{return _0x41b5e9(null,_0x3da1ec);}},'beforeUpdate':function(_0x3caaa5,_0x3a115b,_0x1dc5ed){if(_0x3caaa5['changed']('zone')||_0x3caaa5['changed']('serverUrl')||_0x3caaa5[_0x8b09('0xd')](_0x8b09('0xe'))||_0x3caaa5[_0x8b09('0xd')]('clientSecret')||_0x3caaa5[_0x8b09('0xd')]('code')||_0x3caaa5[_0x8b09('0xd')](_0x8b09('0x22'))){var _0x57afd9,_0x5f5cce;_0x57afd9=_0x3caaa5[_0x8b09('0x18')];var _0x46fbe1=_0x57afd9['slice'](-0x1);if(_0x46fbe1==='/'||_0x46fbe1==='\x5c'||_0x46fbe1===':'){_0x57afd9=_0x57afd9['substring'](0x0,_0x57afd9['lastIndexOf'](_0x46fbe1));}switch(_0x3caaa5[_0x8b09('0xc')]){case'US':_0x5f5cce=_0x8b09('0x12');break;case'AU':_0x5f5cce='https://accounts.zoho.com.au';break;case'IN':_0x5f5cce=_0x8b09('0x14');break;case'CN':_0x5f5cce=_0x8b09('0x23');break;default:_0x5f5cce=_0x8b09('0x15');break;}var _0x501605={'method':_0x8b09('0x16'),'uri':_0x5f5cce+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x3caaa5[_0x8b09('0xe')],'client_secret':_0x3caaa5[_0x8b09('0x17')],'redirect_uri':_0x3caaa5['serverUrl'],'code':_0x3caaa5[_0x8b09('0xf')]},'headers':{'Content-Type':_0x8b09('0x19')}};return rp(_0x501605)[_0x8b09('0x24')](function(_0x2b0d1b){var _0x3567ff=JSON[_0x8b09('0x25')](_0x2b0d1b);if(_0x3567ff[_0x8b09('0x1a')]){_0x3caaa5['refreshToken']=_0x3567ff[_0x8b09('0x1a')];logger[_0x8b09('0x1b')](util[_0x8b09('0x1c')](_0x8b09('0x1d'),_0x3caaa5[_0x8b09('0x26')],_0x3caaa5['id']));}else{logger[_0x8b09('0x1e')](util['format'](_0x8b09('0x1f'),_0x3caaa5[_0x8b09('0x26')],_0x3caaa5['id']),util[_0x8b09('0x20')](_0x3567ff,{'showHidden':![],'depth':null}));}return _0x1dc5ed(null,_0x3a115b);})[_0x8b09('0x21')](function(_0x717511){logger[_0x8b09('0x1e')](util[_0x8b09('0x1c')](_0x8b09('0x1f'),_0x3caaa5[_0x8b09('0x26')],_0x3caaa5['id']),util[_0x8b09('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x1dc5ed(_0x717511);});}else{return _0x1dc5ed(null,_0x3a115b);}}}});};
\ No newline at end of file
+var _0xca83=['define','changed','serverUrl','clientId','clientSecret','code','slice','substring','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','authorization_code','then','parse','refreshToken','info','format','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','host','https://accounts.zoho.eu','application/x-www-form-urlencoded','refresh_token','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x23777f,_0x422a0c){var _0x5174f=function(_0x1d0984){while(--_0x1d0984){_0x23777f['push'](_0x23777f['shift']());}};_0x5174f(++_0x422a0c);}(_0xca83,0x17f));var _0x3ca8=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xca83[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0x3ca8('0x0'));var util=require(_0x3ca8('0x1'));var logger=require(_0x3ca8('0x2'))(_0x3ca8('0x3'));var moment=require(_0x3ca8('0x4'));var BPromise=require(_0x3ca8('0x5'));var rp=require(_0x3ca8('0x6'));var fs=require('fs');var path=require(_0x3ca8('0x7'));var rimraf=require(_0x3ca8('0x8'));var config=require(_0x3ca8('0x9'));var attributes=require(_0x3ca8('0xa'));var integrations=require(_0x3ca8('0xb'));module[_0x3ca8('0xc')]=function(_0x351a13,_0x4c6e5a){return _0x351a13[_0x3ca8('0xd')]('ZohoAccount',attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1e6255,_0x22219a,_0x156af3){if(_0x1e6255['changed']('zone')||_0x1e6255[_0x3ca8('0xe')](_0x3ca8('0xf'))||_0x1e6255['changed'](_0x3ca8('0x10'))||_0x1e6255['changed'](_0x3ca8('0x11'))||_0x1e6255['changed'](_0x3ca8('0x12'))||_0x1e6255['changed']('host')){var _0x4e57da,_0x4ba651;_0x4e57da=_0x1e6255[_0x3ca8('0xf')];var _0x30a619=_0x4e57da[_0x3ca8('0x13')](-0x1);if(_0x30a619==='/'||_0x30a619==='\x5c'||_0x30a619===':'){_0x4e57da=_0x4e57da[_0x3ca8('0x14')](0x0,_0x4e57da[_0x3ca8('0x15')](_0x30a619));}switch(_0x1e6255[_0x3ca8('0x16')]){case'US':_0x4ba651=_0x3ca8('0x17');break;case'AU':_0x4ba651=_0x3ca8('0x18');break;case'IN':_0x4ba651=_0x3ca8('0x19');break;case'CN':_0x4ba651=_0x3ca8('0x1a');break;default:_0x4ba651='https://accounts.zoho.eu';break;}var _0x754851={'method':_0x3ca8('0x1b'),'uri':_0x4ba651+'/oauth/v2/token','form':{'grant_type':_0x3ca8('0x1c'),'client_id':_0x1e6255[_0x3ca8('0x10')],'client_secret':_0x1e6255[_0x3ca8('0x11')],'redirect_uri':_0x1e6255[_0x3ca8('0xf')],'code':_0x1e6255[_0x3ca8('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x754851)[_0x3ca8('0x1d')](function(_0x1824da){var _0xe2ff93=JSON[_0x3ca8('0x1e')](_0x1824da);if(_0xe2ff93['refresh_token']){_0x1e6255[_0x3ca8('0x1f')]=_0xe2ff93['refresh_token'];logger[_0x3ca8('0x20')](util[_0x3ca8('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1e6255[_0x3ca8('0x22')],_0x1e6255['id']));}else{logger[_0x3ca8('0x23')](util['format'](_0x3ca8('0x24'),_0x1e6255[_0x3ca8('0x22')],_0x1e6255['id']),util[_0x3ca8('0x25')](_0xe2ff93,{'showHidden':![],'depth':null}));}return _0x156af3(null,_0x22219a);})[_0x3ca8('0x26')](function(_0x3ddf5a){logger['error'](util[_0x3ca8('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1e6255[_0x3ca8('0x22')],_0x1e6255['id']),util[_0x3ca8('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x156af3(_0x3ddf5a);});}else{return _0x156af3(null,_0x22219a);}},'beforeUpdate':function(_0x37dd4c,_0x16de2d,_0x208268){if(_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0x16'))||_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0xf'))||_0x37dd4c['changed'](_0x3ca8('0x10'))||_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0x11'))||_0x37dd4c['changed'](_0x3ca8('0x12'))||_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0x27'))){var _0x47dab8,_0x726823;_0x47dab8=_0x37dd4c[_0x3ca8('0xf')];var _0xac6c6e=_0x47dab8['slice'](-0x1);if(_0xac6c6e==='/'||_0xac6c6e==='\x5c'||_0xac6c6e===':'){_0x47dab8=_0x47dab8[_0x3ca8('0x14')](0x0,_0x47dab8['lastIndexOf'](_0xac6c6e));}switch(_0x37dd4c['zone']){case'US':_0x726823=_0x3ca8('0x17');break;case'AU':_0x726823=_0x3ca8('0x18');break;case'IN':_0x726823='https://accounts.zoho.in';break;case'CN':_0x726823=_0x3ca8('0x1a');break;default:_0x726823=_0x3ca8('0x28');break;}var _0x4c9c57={'method':'POST','uri':_0x726823+'/oauth/v2/token','form':{'grant_type':_0x3ca8('0x1c'),'client_id':_0x37dd4c[_0x3ca8('0x10')],'client_secret':_0x37dd4c[_0x3ca8('0x11')],'redirect_uri':_0x37dd4c['serverUrl'],'code':_0x37dd4c['code']},'headers':{'Content-Type':_0x3ca8('0x29')}};return rp(_0x4c9c57)[_0x3ca8('0x1d')](function(_0x58eb5d){var _0x153d27=JSON[_0x3ca8('0x1e')](_0x58eb5d);if(_0x153d27[_0x3ca8('0x2a')]){_0x37dd4c['refreshToken']=_0x153d27['refresh_token'];logger[_0x3ca8('0x20')](util[_0x3ca8('0x21')](_0x3ca8('0x2b'),_0x37dd4c[_0x3ca8('0x22')],_0x37dd4c['id']));}else{logger[_0x3ca8('0x23')](util['format'](_0x3ca8('0x24'),_0x37dd4c[_0x3ca8('0x22')],_0x37dd4c['id']),util['inspect'](_0x153d27,{'showHidden':![],'depth':null}));}return _0x208268(null,_0x16de2d);})['catch'](function(_0x516f52){logger['error'](util['format'](_0x3ca8('0x24'),_0x37dd4c[_0x3ca8('0x22')],_0x37dd4c['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x208268(_0x516f52);});}else{return _0x208268(null,_0x16de2d);}}}});};
\ No newline at end of file
index fb6107f..5a0dcdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa94=['rpc','../../config/environment','jayson/promise','client','http','request','info','ZohoAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetZohoAccount','ZohoAccount','options','raw','attributes','limit','include','map','model','then','ShowZohoAccount','find','where','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x427b8a,_0xe5e024){var _0x544857=function(_0x258390){while(--_0x258390){_0x427b8a['push'](_0x427b8a['shift']());}};_0x544857(++_0xe5e024);}(_0xfa94,0xef));var _0x4fa9=function(_0x381a28,_0x4eb359){_0x381a28=_0x381a28-0x0;var _0x5e572d=_0xfa94[_0x381a28];return _0x5e572d;};'use strict';var _=require(_0x4fa9('0x0'));var util=require('util');var moment=require(_0x4fa9('0x1'));var BPromise=require('bluebird');var rs=require(_0x4fa9('0x2'));var fs=require('fs');var Redis=require(_0x4fa9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4fa9('0x4'));var logger=require(_0x4fa9('0x5'))(_0x4fa9('0x6'));var config=require(_0x4fa9('0x7'));var jayson=require(_0x4fa9('0x8'));var client=jayson[_0x4fa9('0x9')][_0x4fa9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56faa9,_0xd4dcad,_0x2fb0b3){return new BPromise(function(_0x48fe52,_0x500b64){return client[_0x4fa9('0xb')](_0x56faa9,_0x2fb0b3)['then'](function(_0x2049ea){logger[_0x4fa9('0xc')](_0x4fa9('0xd'),_0xd4dcad,'request\x20sent');logger[_0x4fa9('0xe')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0xd4dcad,_0x4fa9('0xf'),JSON[_0x4fa9('0x10')](_0x2049ea));if(_0x2049ea['error']){if(_0x2049ea[_0x4fa9('0x11')][_0x4fa9('0x12')]===0x1f4){logger[_0x4fa9('0x11')]('ZohoAccount,\x20%s,\x20%s',_0xd4dcad,_0x2049ea[_0x4fa9('0x11')]['message']);return _0x500b64(_0x2049ea[_0x4fa9('0x11')][_0x4fa9('0x13')]);}logger['error'](_0x4fa9('0xd'),_0xd4dcad,_0x2049ea[_0x4fa9('0x11')][_0x4fa9('0x13')]);return _0x48fe52(_0x2049ea[_0x4fa9('0x11')][_0x4fa9('0x13')]);}else{logger[_0x4fa9('0xc')](_0x4fa9('0xd'),_0xd4dcad,_0x4fa9('0xf'));_0x48fe52(_0x2049ea[_0x4fa9('0x14')]['message']);}})[_0x4fa9('0x15')](function(_0x1a1117){logger['error']('ZohoAccount,\x20%s,\x20%s',_0xd4dcad,_0x1a1117);_0x500b64(_0x1a1117);});});}exports[_0x4fa9('0x16')]=function(_0x4f58bd){var _0x2fe920=this;return new Promise(function(_0x416e08,_0x50a0d9){return db[_0x4fa9('0x17')]['findAll']({'raw':_0x4f58bd[_0x4fa9('0x18')]?_0x4f58bd[_0x4fa9('0x18')][_0x4fa9('0x19')]===undefined?!![]:![]:!![],'where':_0x4f58bd[_0x4fa9('0x18')]?_0x4f58bd[_0x4fa9('0x18')]['where']||null:null,'attributes':_0x4f58bd[_0x4fa9('0x18')]?_0x4f58bd[_0x4fa9('0x18')][_0x4fa9('0x1a')]||null:null,'limit':_0x4f58bd['options']?_0x4f58bd[_0x4fa9('0x18')][_0x4fa9('0x1b')]||null:null,'include':_0x4f58bd[_0x4fa9('0x18')]?_0x4f58bd[_0x4fa9('0x18')][_0x4fa9('0x1c')]?_[_0x4fa9('0x1d')](_0x4f58bd[_0x4fa9('0x18')][_0x4fa9('0x1c')],function(_0x185806){return{'model':db[_0x185806[_0x4fa9('0x1e')]],'as':_0x185806['as'],'attributes':_0x185806[_0x4fa9('0x1a')],'include':_0x185806[_0x4fa9('0x1c')]?_[_0x4fa9('0x1d')](_0x185806[_0x4fa9('0x1c')],function(_0x1d00c9){return{'model':db[_0x1d00c9[_0x4fa9('0x1e')]],'as':_0x1d00c9['as'],'attributes':_0x1d00c9[_0x4fa9('0x1a')],'include':_0x1d00c9[_0x4fa9('0x1c')]?_[_0x4fa9('0x1d')](_0x1d00c9[_0x4fa9('0x1c')],function(_0x498a6f){return{'model':db[_0x498a6f[_0x4fa9('0x1e')]],'as':_0x498a6f['as'],'attributes':_0x498a6f[_0x4fa9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4fa9('0x1f')](function(_0xdeffbf){logger[_0x4fa9('0xc')](_0x4fa9('0x16'),_0x4f58bd);logger[_0x4fa9('0xe')]('GetZohoAccount',_0x4f58bd,JSON[_0x4fa9('0x10')](_0xdeffbf));_0x416e08(_0xdeffbf);})[_0x4fa9('0x15')](function(_0x13cf76){logger[_0x4fa9('0x11')](_0x4fa9('0x16'),_0x13cf76[_0x4fa9('0x13')],_0x4f58bd);_0x50a0d9(_0x2fe920[_0x4fa9('0x11')](0x1f4,_0x13cf76[_0x4fa9('0x13')]));});});};exports[_0x4fa9('0x20')]=function(_0x472173){var _0x1efb9d=this;return new Promise(function(_0x8aae26,_0x3b4b88){return db[_0x4fa9('0x17')][_0x4fa9('0x21')]({'raw':_0x472173[_0x4fa9('0x18')]?_0x472173[_0x4fa9('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x472173[_0x4fa9('0x18')]?_0x472173[_0x4fa9('0x18')][_0x4fa9('0x22')]||null:null,'attributes':_0x472173[_0x4fa9('0x18')]?_0x472173[_0x4fa9('0x18')][_0x4fa9('0x1a')]||null:null,'include':_0x472173['options']?_0x472173[_0x4fa9('0x18')][_0x4fa9('0x1c')]?_[_0x4fa9('0x1d')](_0x472173['options'][_0x4fa9('0x1c')],function(_0x4c14fd){return{'model':db[_0x4c14fd['model']],'as':_0x4c14fd['as'],'attributes':_0x4c14fd[_0x4fa9('0x1a')],'include':_0x4c14fd['include']?_[_0x4fa9('0x1d')](_0x4c14fd[_0x4fa9('0x1c')],function(_0x2e9e10){return{'model':db[_0x2e9e10[_0x4fa9('0x1e')]],'as':_0x2e9e10['as'],'attributes':_0x2e9e10['attributes'],'include':_0x2e9e10[_0x4fa9('0x1c')]?_[_0x4fa9('0x1d')](_0x2e9e10[_0x4fa9('0x1c')],function(_0x4c070e){return{'model':db[_0x4c070e[_0x4fa9('0x1e')]],'as':_0x4c070e['as'],'attributes':_0x4c070e[_0x4fa9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4fa9('0x1f')](function(_0x35393e){logger[_0x4fa9('0xc')](_0x4fa9('0x20'),_0x472173);logger[_0x4fa9('0xe')](_0x4fa9('0x20'),_0x472173,JSON[_0x4fa9('0x10')](_0x35393e));_0x8aae26(_0x35393e);})[_0x4fa9('0x15')](function(_0x2781d5){logger[_0x4fa9('0x11')]('ShowZohoAccount',_0x2781d5[_0x4fa9('0x13')],_0x472173);_0x3b4b88(_0x1efb9d['error'](0x1f4,_0x2781d5['message']));});});};
\ No newline at end of file
+var _0xa817=['stringify','error','code','message','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','include','map','model','info','find','ShowZohoAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4d216c,_0x363a80){var _0x36fe74=function(_0x460e09){while(--_0x460e09){_0x4d216c['push'](_0x4d216c['shift']());}};_0x36fe74(++_0x363a80);}(_0xa817,0x7b));var _0x7a81=function(_0x3bf153,_0x18c359){_0x3bf153=_0x3bf153-0x0;var _0x97976a=_0xa817[_0x3bf153];return _0x97976a;};'use strict';var _=require(_0x7a81('0x0'));var util=require(_0x7a81('0x1'));var moment=require(_0x7a81('0x2'));var BPromise=require(_0x7a81('0x3'));var rs=require(_0x7a81('0x4'));var fs=require('fs');var Redis=require(_0x7a81('0x5'));var db=require(_0x7a81('0x6'))['db'];var utils=require(_0x7a81('0x7'));var logger=require(_0x7a81('0x8'))('rpc');var config=require(_0x7a81('0x9'));var jayson=require(_0x7a81('0xa'));var client=jayson['client'][_0x7a81('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35c35a,_0x3ab25c,_0x705d4e){return new BPromise(function(_0x1869fb,_0x18f6f6){return client['request'](_0x35c35a,_0x705d4e)[_0x7a81('0xc')](function(_0x5b3b66){logger['info'](_0x7a81('0xd'),_0x3ab25c,'request\x20sent');logger[_0x7a81('0xe')](_0x7a81('0xf'),_0x3ab25c,_0x7a81('0x10'),JSON[_0x7a81('0x11')](_0x5b3b66));if(_0x5b3b66[_0x7a81('0x12')]){if(_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x13')]===0x1f4){logger['error'](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x18f6f6(_0x5b3b66['error'][_0x7a81('0x14')]);}logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x1869fb(_0x5b3b66[_0x7a81('0x12')]['message']);}else{logger['info'](_0x7a81('0xd'),_0x3ab25c,_0x7a81('0x10'));_0x1869fb(_0x5b3b66['result'][_0x7a81('0x14')]);}})[_0x7a81('0x15')](function(_0x179afd){logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x179afd);_0x18f6f6(_0x179afd);});});}exports[_0x7a81('0x16')]=function(_0x114cfa){var _0x3d9a4f=this;return new Promise(function(_0x2b5720,_0x220da9){return db[_0x7a81('0x17')][_0x7a81('0x18')]({'raw':_0x114cfa[_0x7a81('0x19')]?_0x114cfa['options'][_0x7a81('0x1a')]===undefined?!![]:![]:!![],'where':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1b')]||null:null,'attributes':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1c')]||null:null,'limit':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')]['limit']||null:null,'include':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1d')]?_[_0x7a81('0x1e')](_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1d')],function(_0x249ae1){return{'model':db[_0x249ae1[_0x7a81('0x1f')]],'as':_0x249ae1['as'],'attributes':_0x249ae1['attributes'],'include':_0x249ae1[_0x7a81('0x1d')]?_['map'](_0x249ae1['include'],function(_0x1e2476){return{'model':db[_0x1e2476[_0x7a81('0x1f')]],'as':_0x1e2476['as'],'attributes':_0x1e2476[_0x7a81('0x1c')],'include':_0x1e2476['include']?_[_0x7a81('0x1e')](_0x1e2476[_0x7a81('0x1d')],function(_0x87e708){return{'model':db[_0x87e708[_0x7a81('0x1f')]],'as':_0x87e708['as'],'attributes':_0x87e708[_0x7a81('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38de7c){logger[_0x7a81('0x20')](_0x7a81('0x16'),_0x114cfa);logger[_0x7a81('0xe')](_0x7a81('0x16'),_0x114cfa,JSON[_0x7a81('0x11')](_0x38de7c));_0x2b5720(_0x38de7c);})[_0x7a81('0x15')](function(_0x551c14){logger[_0x7a81('0x12')]('GetZohoAccount',_0x551c14[_0x7a81('0x14')],_0x114cfa);_0x220da9(_0x3d9a4f[_0x7a81('0x12')](0x1f4,_0x551c14[_0x7a81('0x14')]));});});};exports['ShowZohoAccount']=function(_0x3f7e20){var _0x4fc73a=this;return new Promise(function(_0x5e9589,_0x1441bf){return db[_0x7a81('0x17')][_0x7a81('0x21')]({'raw':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20[_0x7a81('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20[_0x7a81('0x19')][_0x7a81('0x1b')]||null:null,'attributes':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20[_0x7a81('0x19')][_0x7a81('0x1c')]||null:null,'include':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20['options'][_0x7a81('0x1d')]?_[_0x7a81('0x1e')](_0x3f7e20[_0x7a81('0x19')]['include'],function(_0x3161fe){return{'model':db[_0x3161fe[_0x7a81('0x1f')]],'as':_0x3161fe['as'],'attributes':_0x3161fe[_0x7a81('0x1c')],'include':_0x3161fe[_0x7a81('0x1d')]?_['map'](_0x3161fe[_0x7a81('0x1d')],function(_0x262a0f){return{'model':db[_0x262a0f[_0x7a81('0x1f')]],'as':_0x262a0f['as'],'attributes':_0x262a0f[_0x7a81('0x1c')],'include':_0x262a0f[_0x7a81('0x1d')]?_['map'](_0x262a0f[_0x7a81('0x1d')],function(_0x200b03){return{'model':db[_0x200b03[_0x7a81('0x1f')]],'as':_0x200b03['as'],'attributes':_0x200b03[_0x7a81('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7a81('0xc')](function(_0x41a124){logger[_0x7a81('0x20')]('ShowZohoAccount',_0x3f7e20);logger['debug'](_0x7a81('0x22'),_0x3f7e20,JSON[_0x7a81('0x11')](_0x41a124));_0x5e9589(_0x41a124);})['catch'](function(_0x11c809){logger[_0x7a81('0x12')](_0x7a81('0x22'),_0x11c809['message'],_0x3f7e20);_0x1441bf(_0x4fc73a[_0x7a81('0x12')](0x1f4,_0x11c809[_0x7a81('0x14')]));});});};
\ No newline at end of file
index 490c3e2..a95938f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c0b=['fs-extra','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x5c0b,0x84));var _0xb5c0=function(_0x25b1e2,_0x14f5e2){_0x25b1e2=_0x25b1e2-0x0;var _0x4a5ff5=_0x5c0b[_0x25b1e2];return _0x4a5ff5;};'use strict';var multer=require(_0xb5c0('0x0'));var util=require(_0xb5c0('0x1'));var path=require(_0xb5c0('0x2'));var timeout=require(_0xb5c0('0x3'));var express=require(_0xb5c0('0x4'));var router=express[_0xb5c0('0x5')]();var fs_extra=require(_0xb5c0('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb5c0('0x7'));var controller=require(_0xb5c0('0x8'));router[_0xb5c0('0x9')]('/',auth[_0xb5c0('0xa')](),controller[_0xb5c0('0xb')]);router[_0xb5c0('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xb5c0('0x9')](_0xb5c0('0xc'),auth[_0xb5c0('0xa')](),controller[_0xb5c0('0xd')]);router[_0xb5c0('0x9')](_0xb5c0('0xe'),auth['isAuthenticated'](),controller[_0xb5c0('0xf')]);router[_0xb5c0('0x9')](_0xb5c0('0x10'),auth['isAuthenticated'](),controller['getDescriptions']);router['post']('/',auth[_0xb5c0('0xa')](),controller[_0xb5c0('0x11')]);router[_0xb5c0('0x12')](_0xb5c0('0x13'),auth[_0xb5c0('0xa')](),controller['update']);router[_0xb5c0('0x14')](_0xb5c0('0x13'),auth[_0xb5c0('0xa')](),controller[_0xb5c0('0x15')]);module[_0xb5c0('0x16')]=router;
\ No newline at end of file
+var _0x3892=['/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated'];(function(_0x5633f0,_0x27197b){var _0x4b842e=function(_0x5ddc2a){while(--_0x5ddc2a){_0x5633f0['push'](_0x5633f0['shift']());}};_0x4b842e(++_0x27197b);}(_0x3892,0x87));var _0x2389=function(_0x328185,_0x53afd3){_0x328185=_0x328185-0x0;var _0x14e624=_0x3892[_0x328185];return _0x14e624;};'use strict';var multer=require(_0x2389('0x0'));var util=require(_0x2389('0x1'));var path=require(_0x2389('0x2'));var timeout=require('connect-timeout');var express=require(_0x2389('0x3'));var router=express[_0x2389('0x4')]();var fs_extra=require(_0x2389('0x5'));var auth=require(_0x2389('0x6'));var interaction=require(_0x2389('0x7'));var config=require(_0x2389('0x8'));var controller=require(_0x2389('0x9'));router[_0x2389('0xa')]('/',auth[_0x2389('0xb')](),controller['index']);router['get'](_0x2389('0xc'),auth[_0x2389('0xb')](),controller[_0x2389('0xd')]);router['get']('/:id/fields',auth[_0x2389('0xb')](),controller['getFields']);router[_0x2389('0xa')](_0x2389('0xe'),auth[_0x2389('0xb')](),controller[_0x2389('0xf')]);router['get'](_0x2389('0x10'),auth[_0x2389('0xb')](),controller[_0x2389('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2389('0x12')]);router[_0x2389('0x13')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x2389('0x14')](_0x2389('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6703a13..d700989 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5859=['lead','contact','contact_lead','STRING','sequelize','exports','ENUM','nothing'];(function(_0x40b330,_0x42458b){var _0x27ae9a=function(_0xfeece7){while(--_0xfeece7){_0x40b330['push'](_0x40b330['shift']());}};_0x27ae9a(++_0x42458b);}(_0x5859,0x13c));var _0x9585=function(_0x2db12b,_0x30ab1d){_0x2db12b=_0x2db12b-0x0;var _0x20990b=_0x5859[_0x2db12b];return _0x20990b;};'use strict';var Sequelize=require(_0x9585('0x0'));module[_0x9585('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x9585('0x2')]('lead','contact',_0x9585('0x3')),'defaultValue':_0x9585('0x4')},'moduleSearch':{'type':Sequelize[_0x9585('0x2')]('contact_lead',_0x9585('0x5'),'lead'),'defaultValue':_0x9585('0x6')},'description':{'type':Sequelize[_0x9585('0x7')]}};
\ No newline at end of file
+var _0x3565=['contact','contact_lead','exports','STRING','ENUM','lead'];(function(_0x3e5bc8,_0x457d89){var _0xfd84bc=function(_0x1a766c){while(--_0x1a766c){_0x3e5bc8['push'](_0x3e5bc8['shift']());}};_0xfd84bc(++_0x457d89);}(_0x3565,0x158));var _0x5356=function(_0x247b95,_0x4313c8){_0x247b95=_0x247b95-0x0;var _0x442387=_0x3565[_0x247b95];return _0x442387;};'use strict';var Sequelize=require('sequelize');module[_0x5356('0x0')]={'name':{'type':Sequelize[_0x5356('0x1')]},'moduleCreate':{'type':Sequelize[_0x5356('0x2')](_0x5356('0x3'),_0x5356('0x4'),'nothing'),'defaultValue':_0x5356('0x3')},'moduleSearch':{'type':Sequelize[_0x5356('0x2')]('contact_lead',_0x5356('0x4'),_0x5356('0x3')),'defaultValue':_0x5356('0x5')},'description':{'type':Sequelize[_0x5356('0x1')]}};
\ No newline at end of file
index cb0e344..e24afef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x379f=['hasOwnProperty','nolimit','where','filter','merge','VIRTUAL','options','rows','catch','params','includeAll','include','find','create','ZohoField','order','sort','pick','findOne','rawAttributes','fields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','ZohoConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','length'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x379f,0x1f1));var _0xf379=function(_0x1fe7e3,_0x50e44f){_0x1fe7e3=_0x1fe7e3-0x0;var _0x4cf505=_0x379f[_0x1fe7e3];return _0x4cf505;};'use strict';var emlformat=require(_0xf379('0x0'));var rimraf=require(_0xf379('0x1'));var zipdir=require(_0xf379('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf379('0x3'));var moment=require(_0xf379('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf379('0x5'));var util=require(_0xf379('0x6'));var path=require('path');var sox=require(_0xf379('0x7'));var csv=require('to-csv');var ejs=require(_0xf379('0x8'));var fs=require('fs');var fs_extra=require(_0xf379('0x9'));var _=require(_0xf379('0xa'));var squel=require(_0xf379('0xb'));var crypto=require('crypto');var jsforce=require(_0xf379('0xc'));var deskjs=require(_0xf379('0xd'));var toCsv=require(_0xf379('0xe'));var querystring=require(_0xf379('0xf'));var Papa=require(_0xf379('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf379('0x11'));var as=require(_0xf379('0x12'));var hardwareService=require(_0xf379('0x13'));var logger=require(_0xf379('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xf379('0x15'));var licenseUtil=require(_0xf379('0x16'));var db=require(_0xf379('0x17'))['db'];function respondWithStatusCode(_0x4a733e,_0x141f7f){_0x141f7f=_0x141f7f||0xcc;return function(_0x3bf5ee){if(_0x3bf5ee){return _0x4a733e[_0xf379('0x18')](_0x141f7f);}return _0x4a733e[_0xf379('0x19')](_0x141f7f)[_0xf379('0x1a')]();};}function respondWithResult(_0x11b95d,_0x109ba4){_0x109ba4=_0x109ba4||0xc8;return function(_0x5c7925){if(_0x5c7925){return _0x11b95d[_0xf379('0x19')](_0x109ba4)['json'](_0x5c7925);}};}function respondWithFilteredResult(_0x3e1762,_0x2f9531){return function(_0x42492c){if(_0x42492c){var _0x13fd46=typeof _0x2f9531[_0xf379('0x1b')]===_0xf379('0x1c')&&typeof _0x2f9531[_0xf379('0x1d')]===_0xf379('0x1c');var _0x1b0d1c=_0x42492c[_0xf379('0x1e')];var _0xab7f33=_0x13fd46?0x0:_0x2f9531['offset'];var _0x16bf2a=_0x13fd46?_0x42492c[_0xf379('0x1e')]:_0x2f9531['offset']+_0x2f9531['limit'];var _0x7fdf4d;if(_0x16bf2a>=_0x1b0d1c){_0x16bf2a=_0x1b0d1c;_0x7fdf4d=0xc8;}else{_0x7fdf4d=0xce;}_0x3e1762[_0xf379('0x19')](_0x7fdf4d);return _0x3e1762[_0xf379('0x1f')](_0xf379('0x20'),_0xab7f33+'-'+_0x16bf2a+'/'+_0x1b0d1c)[_0xf379('0x21')](_0x42492c);}return null;};}function patchUpdates(_0x17cb4c){return function(_0x2d87ac){try{jsonpatch[_0xf379('0x22')](_0x2d87ac,_0x17cb4c,!![]);}catch(_0x5ee311){return BPromise[_0xf379('0x23')](_0x5ee311);}return _0x2d87ac[_0xf379('0x24')]();};}function saveUpdates(_0x2ae43f,_0x55b7a4){return function(_0x2de4e6){if(_0x2de4e6){return _0x2de4e6[_0xf379('0x25')](_0x2ae43f)[_0xf379('0x26')](function(_0x40b708){return _0x40b708;});}return null;};}function removeEntity(_0x25759c,_0x5338ca){return function(_0x355106){if(_0x355106){return _0x355106[_0xf379('0x27')]()[_0xf379('0x26')](function(){_0x25759c[_0xf379('0x19')](0xcc)[_0xf379('0x1a')]();});}};}function handleEntityNotFound(_0x2e6237,_0x2796fb){return function(_0x5d1704){if(!_0x5d1704){_0x2e6237['sendStatus'](0x194);}return _0x5d1704;};}function handleError(_0x3cbde0,_0xdcabb3){_0xdcabb3=_0xdcabb3||0x1f4;return function(_0x320e5c){logger[_0xf379('0x28')](_0x320e5c['stack']);if(_0x320e5c[_0xf379('0x29')]){delete _0x320e5c[_0xf379('0x29')];}_0x3cbde0[_0xf379('0x19')](_0xdcabb3)[_0xf379('0x2a')](_0x320e5c);};}exports[_0xf379('0x2b')]=function(_0x3e7d5e,_0x29871f){var _0x59798f={},_0x5a9c84={},_0x5017cc={'count':0x0,'rows':[]};var _0x177d11=_[_0xf379('0x2c')](db[_0xf379('0x2d')]['rawAttributes'],function(_0x2d9157){return{'name':_0x2d9157[_0xf379('0x2e')],'type':_0x2d9157[_0xf379('0x2f')][_0xf379('0x30')]};});_0x5a9c84[_0xf379('0x31')]=_[_0xf379('0x2c')](_0x177d11,_0xf379('0x29'));_0x5a9c84[_0xf379('0x32')]=_[_0xf379('0x33')](_0x3e7d5e[_0xf379('0x32')]);_0x5a9c84[_0xf379('0x34')]=_[_0xf379('0x35')](_0x5a9c84[_0xf379('0x31')],_0x5a9c84[_0xf379('0x32')]);_0x59798f[_0xf379('0x36')]=_[_0xf379('0x35')](_0x5a9c84[_0xf379('0x31')],qs['fields'](_0x3e7d5e[_0xf379('0x32')]['fields']));_0x59798f[_0xf379('0x36')]=_0x59798f[_0xf379('0x36')][_0xf379('0x37')]?_0x59798f['attributes']:_0x5a9c84[_0xf379('0x31')];if(!_0x3e7d5e[_0xf379('0x32')][_0xf379('0x38')](_0xf379('0x39'))){_0x59798f[_0xf379('0x1d')]=qs[_0xf379('0x1d')](_0x3e7d5e[_0xf379('0x32')]['limit']);_0x59798f[_0xf379('0x1b')]=qs[_0xf379('0x1b')](_0x3e7d5e[_0xf379('0x32')]['offset']);}_0x59798f['order']=qs['sort'](_0x3e7d5e['query']['sort']);_0x59798f[_0xf379('0x3a')]=qs[_0xf379('0x34')](_['pick'](_0x3e7d5e[_0xf379('0x32')],_0x5a9c84[_0xf379('0x34')]),_0x177d11);if(_0x3e7d5e[_0xf379('0x32')][_0xf379('0x3b')]){_0x59798f[_0xf379('0x3a')]=_[_0xf379('0x3c')](_0x59798f['where'],{'$or':_[_0xf379('0x2c')](_0x177d11,function(_0x421a25){if(_0x421a25['type']!==_0xf379('0x3d')){var _0x4e4777={};_0x4e4777[_0x421a25['name']]={'$like':'%'+_0x3e7d5e[_0xf379('0x32')][_0xf379('0x3b')]+'%'};return _0x4e4777;}})});}_0x59798f=_[_0xf379('0x3c')]({},_0x59798f,_0x3e7d5e[_0xf379('0x3e')]);var _0xf8bf6e={'where':_0x59798f[_0xf379('0x3a')]};return db['ZohoConfiguration']['count'](_0xf8bf6e)[_0xf379('0x26')](function(_0x20acd0){_0x5017cc['count']=_0x20acd0;if(_0x3e7d5e[_0xf379('0x32')]['includeAll']){_0x59798f['include']=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x59798f);})[_0xf379('0x26')](function(_0x571338){_0x5017cc[_0xf379('0x3f')]=_0x571338;return _0x5017cc;})[_0xf379('0x26')](respondWithFilteredResult(_0x29871f,_0x59798f))[_0xf379('0x40')](handleError(_0x29871f,null));};exports['show']=function(_0x562667,_0x2920ce){var _0x4434ef={'raw':![],'where':{'id':_0x562667[_0xf379('0x41')]['id']}},_0x12b6f8={};_0x12b6f8[_0xf379('0x31')]=_['keys'](db[_0xf379('0x2d')]['rawAttributes']);_0x12b6f8['query']=_[_0xf379('0x33')](_0x562667[_0xf379('0x32')]);_0x12b6f8[_0xf379('0x34')]=_[_0xf379('0x35')](_0x12b6f8[_0xf379('0x31')],_0x12b6f8[_0xf379('0x32')]);_0x4434ef[_0xf379('0x36')]=_[_0xf379('0x35')](_0x12b6f8[_0xf379('0x31')],qs['fields'](_0x562667[_0xf379('0x32')]['fields']));_0x4434ef[_0xf379('0x36')]=_0x4434ef['attributes']['length']?_0x4434ef[_0xf379('0x36')]:_0x12b6f8['model'];if(_0x562667['query'][_0xf379('0x42')]){_0x4434ef[_0xf379('0x43')]=[{'all':!![]}];}_0x4434ef=_[_0xf379('0x3c')]({},_0x4434ef,_0x562667[_0xf379('0x3e')]);return db[_0xf379('0x2d')][_0xf379('0x44')](_0x4434ef)[_0xf379('0x26')](handleEntityNotFound(_0x2920ce,null))[_0xf379('0x26')](respondWithResult(_0x2920ce,null))['catch'](handleError(_0x2920ce,null));};exports[_0xf379('0x45')]=function(_0x18dce7,_0x4af29e){return db['ZohoConfiguration'][_0xf379('0x45')](_0x18dce7['body'],{})[_0xf379('0x26')](respondWithResult(_0x4af29e,0xc9))[_0xf379('0x40')](handleError(_0x4af29e,null));};exports[_0xf379('0x25')]=function(_0x1a2c73,_0xd2776f){if(_0x1a2c73['body']['id']){delete _0x1a2c73['body']['id'];}return db['ZohoConfiguration'][_0xf379('0x44')]({'where':{'id':_0x1a2c73[_0xf379('0x41')]['id']}})[_0xf379('0x26')](handleEntityNotFound(_0xd2776f,null))['then'](saveUpdates(_0x1a2c73['body'],null))[_0xf379('0x26')](respondWithResult(_0xd2776f,null))[_0xf379('0x40')](handleError(_0xd2776f,null));};exports[_0xf379('0x27')]=function(_0x4c10bd,_0x224234){return db[_0xf379('0x2d')][_0xf379('0x44')]({'where':{'id':_0x4c10bd[_0xf379('0x41')]['id']}})['then'](handleEntityNotFound(_0x224234,null))[_0xf379('0x26')](removeEntity(_0x224234,null))['catch'](handleError(_0x224234,null));};exports['getFields']=function(_0x1e5c1f,_0x4ae6e1,_0x2a38b0){var _0xb4bf23={};var _0x16734d={};var _0x309b2e;var _0x272101;return db[_0xf379('0x2d')]['findOne']({'where':{'id':_0x1e5c1f[_0xf379('0x41')]['id']}})[_0xf379('0x26')](handleEntityNotFound(_0x4ae6e1,null))[_0xf379('0x26')](function(_0x295511){if(_0x295511){_0x309b2e=_0x295511;_0x16734d['model']=_[_0xf379('0x33')](db[_0xf379('0x46')]['rawAttributes']);_0x16734d['query']=_[_0xf379('0x33')](_0x1e5c1f[_0xf379('0x32')]);_0x16734d[_0xf379('0x34')]=_[_0xf379('0x35')](_0x16734d['model'],_0x16734d[_0xf379('0x32')]);_0xb4bf23['attributes']=_[_0xf379('0x35')](_0x16734d[_0xf379('0x31')],qs['fields'](_0x1e5c1f[_0xf379('0x32')]['fields']));_0xb4bf23[_0xf379('0x36')]=_0xb4bf23[_0xf379('0x36')][_0xf379('0x37')]?_0xb4bf23[_0xf379('0x36')]:_0x16734d[_0xf379('0x31')];_0xb4bf23[_0xf379('0x47')]=qs['sort'](_0x1e5c1f['query'][_0xf379('0x48')]);_0xb4bf23[_0xf379('0x3a')]=qs[_0xf379('0x34')](_[_0xf379('0x49')](_0x1e5c1f[_0xf379('0x32')],_0x16734d[_0xf379('0x34')]));if(_0x1e5c1f[_0xf379('0x32')][_0xf379('0x3b')]){_0xb4bf23[_0xf379('0x3a')]=_[_0xf379('0x3c')](_0xb4bf23[_0xf379('0x3a')],{'$or':_['map'](_0xb4bf23[_0xf379('0x36')],function(_0x27fa82){var _0x513992={};_0x513992[_0x27fa82]={'$like':'%'+_0x1e5c1f[_0xf379('0x32')][_0xf379('0x3b')]+'%'};return _0x513992;})});}_0xb4bf23=_['merge']({},_0xb4bf23,_0x1e5c1f['options']);return _0x309b2e['getFields'](_0xb4bf23);}})['then'](function(_0xe04d0c){if(_0xe04d0c){_0x272101=_0xe04d0c[_0xf379('0x37')];if(!_0x1e5c1f[_0xf379('0x32')]['hasOwnProperty']('nolimit')){_0xb4bf23[_0xf379('0x1d')]=qs[_0xf379('0x1d')](_0x1e5c1f['query'][_0xf379('0x1d')]);_0xb4bf23[_0xf379('0x1b')]=qs[_0xf379('0x1b')](_0x1e5c1f['query']['offset']);}return _0x309b2e['getFields'](_0xb4bf23);}})[_0xf379('0x26')](function(_0x452942){if(_0x452942){return _0x452942?{'count':_0x272101,'rows':_0x452942}:null;}})[_0xf379('0x26')](respondWithResult(_0x4ae6e1,null))[_0xf379('0x40')](handleError(_0x4ae6e1,null));};exports['getSubjects']=function(_0x462168,_0x521bee,_0x2d9966){var _0x5019fb={};var _0xb28546={};var _0x199cd8;var _0x263914;return db['ZohoConfiguration'][_0xf379('0x4a')]({'where':{'id':_0x462168[_0xf379('0x41')]['id']}})[_0xf379('0x26')](handleEntityNotFound(_0x521bee,null))['then'](function(_0x1f77ab){if(_0x1f77ab){_0x199cd8=_0x1f77ab;_0xb28546['model']=_[_0xf379('0x33')](db[_0xf379('0x46')][_0xf379('0x4b')]);_0xb28546['query']=_[_0xf379('0x33')](_0x462168[_0xf379('0x32')]);_0xb28546[_0xf379('0x34')]=_[_0xf379('0x35')](_0xb28546[_0xf379('0x31')],_0xb28546[_0xf379('0x32')]);_0x5019fb[_0xf379('0x36')]=_[_0xf379('0x35')](_0xb28546[_0xf379('0x31')],qs['fields'](_0x462168[_0xf379('0x32')][_0xf379('0x4c')]));_0x5019fb[_0xf379('0x36')]=_0x5019fb[_0xf379('0x36')]['length']?_0x5019fb[_0xf379('0x36')]:_0xb28546[_0xf379('0x31')];_0x5019fb['order']=qs[_0xf379('0x48')](_0x462168['query']['sort']);_0x5019fb[_0xf379('0x3a')]=qs[_0xf379('0x34')](_[_0xf379('0x49')](_0x462168[_0xf379('0x32')],_0xb28546[_0xf379('0x34')]));if(_0x462168[_0xf379('0x32')][_0xf379('0x3b')]){_0x5019fb['where']=_['merge'](_0x5019fb['where'],{'$or':_['map'](_0x5019fb['attributes'],function(_0x414cd8){var _0xfd74e6={};_0xfd74e6[_0x414cd8]={'$like':'%'+_0x462168[_0xf379('0x32')][_0xf379('0x3b')]+'%'};return _0xfd74e6;})});}_0x5019fb=_[_0xf379('0x3c')]({},_0x5019fb,_0x462168[_0xf379('0x3e')]);return _0x199cd8[_0xf379('0x4d')](_0x5019fb);}})[_0xf379('0x26')](function(_0x4eaa71){if(_0x4eaa71){_0x263914=_0x4eaa71[_0xf379('0x37')];if(!_0x462168[_0xf379('0x32')]['hasOwnProperty'](_0xf379('0x39'))){_0x5019fb[_0xf379('0x1d')]=qs[_0xf379('0x1d')](_0x462168[_0xf379('0x32')][_0xf379('0x1d')]);_0x5019fb[_0xf379('0x1b')]=qs[_0xf379('0x1b')](_0x462168['query'][_0xf379('0x1b')]);}return _0x199cd8['getSubjects'](_0x5019fb);}})[_0xf379('0x26')](function(_0x1eda8e){if(_0x1eda8e){return _0x1eda8e?{'count':_0x263914,'rows':_0x1eda8e}:null;}})[_0xf379('0x26')](respondWithResult(_0x521bee,null))[_0xf379('0x40')](handleError(_0x521bee,null));};exports[_0xf379('0x4e')]=function(_0x5c42f5,_0x23b77c,_0x31f948){var _0x5d6141={};var _0x35f6b3={};var _0x54bc54;var _0x2b3dda;return db[_0xf379('0x2d')]['findOne']({'where':{'id':_0x5c42f5['params']['id']}})[_0xf379('0x26')](handleEntityNotFound(_0x23b77c,null))['then'](function(_0x5f2ff4){if(_0x5f2ff4){_0x54bc54=_0x5f2ff4;_0x35f6b3[_0xf379('0x31')]=_[_0xf379('0x33')](db['ZohoField']['rawAttributes']);_0x35f6b3['query']=_[_0xf379('0x33')](_0x5c42f5[_0xf379('0x32')]);_0x35f6b3[_0xf379('0x34')]=_[_0xf379('0x35')](_0x35f6b3['model'],_0x35f6b3[_0xf379('0x32')]);_0x5d6141[_0xf379('0x36')]=_[_0xf379('0x35')](_0x35f6b3['model'],qs[_0xf379('0x4c')](_0x5c42f5[_0xf379('0x32')][_0xf379('0x4c')]));_0x5d6141[_0xf379('0x36')]=_0x5d6141[_0xf379('0x36')]['length']?_0x5d6141[_0xf379('0x36')]:_0x35f6b3['model'];_0x5d6141[_0xf379('0x47')]=qs[_0xf379('0x48')](_0x5c42f5['query'][_0xf379('0x48')]);_0x5d6141['where']=qs['filters'](_['pick'](_0x5c42f5[_0xf379('0x32')],_0x35f6b3[_0xf379('0x34')]));if(_0x5c42f5[_0xf379('0x32')]['filter']){_0x5d6141['where']=_[_0xf379('0x3c')](_0x5d6141[_0xf379('0x3a')],{'$or':_[_0xf379('0x2c')](_0x5d6141[_0xf379('0x36')],function(_0x14d0c6){var _0x174aba={};_0x174aba[_0x14d0c6]={'$like':'%'+_0x5c42f5[_0xf379('0x32')]['filter']+'%'};return _0x174aba;})});}_0x5d6141=_[_0xf379('0x3c')]({},_0x5d6141,_0x5c42f5[_0xf379('0x3e')]);return _0x54bc54[_0xf379('0x4e')](_0x5d6141);}})[_0xf379('0x26')](function(_0x279089){if(_0x279089){_0x2b3dda=_0x279089[_0xf379('0x37')];if(!_0x5c42f5[_0xf379('0x32')]['hasOwnProperty'](_0xf379('0x39'))){_0x5d6141[_0xf379('0x1d')]=qs[_0xf379('0x1d')](_0x5c42f5[_0xf379('0x32')]['limit']);_0x5d6141[_0xf379('0x1b')]=qs[_0xf379('0x1b')](_0x5c42f5[_0xf379('0x32')][_0xf379('0x1b')]);}return _0x54bc54[_0xf379('0x4e')](_0x5d6141);}})['then'](function(_0x1aeb5b){if(_0x1aeb5b){return _0x1aeb5b?{'count':_0x2b3dda,'rows':_0x1aeb5b}:null;}})['then'](respondWithResult(_0x23b77c,null))[_0xf379('0x40')](handleError(_0x23b77c,null));};
\ No newline at end of file
+var _0x25a8=['fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','includeAll','find','catch','create','body','params','getFields','findOne','ZohoField','getSubjects','pick','getDescriptions','eml-format','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','undefined','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','ZohoConfiguration','rawAttributes'];(function(_0x1ee0a1,_0x51058e){var _0x1d2d5b=function(_0x35cfb5){while(--_0x35cfb5){_0x1ee0a1['push'](_0x1ee0a1['shift']());}};_0x1d2d5b(++_0x51058e);}(_0x25a8,0x76));var _0x825a=function(_0x2bb5d4,_0x6a781d){_0x2bb5d4=_0x2bb5d4-0x0;var _0x37da87=_0x25a8[_0x2bb5d4];return _0x37da87;};'use strict';var emlformat=require(_0x825a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x825a('0x1'));var jsonpatch=require(_0x825a('0x2'));var rp=require('request-promise');var moment=require(_0x825a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x825a('0x4'));var util=require('util');var path=require(_0x825a('0x5'));var sox=require(_0x825a('0x6'));var csv=require(_0x825a('0x7'));var ejs=require(_0x825a('0x8'));var fs=require('fs');var fs_extra=require(_0x825a('0x9'));var _=require(_0x825a('0xa'));var squel=require(_0x825a('0xb'));var crypto=require(_0x825a('0xc'));var jsforce=require(_0x825a('0xd'));var deskjs=require(_0x825a('0xe'));var toCsv=require(_0x825a('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x825a('0xf'));var authService=require(_0x825a('0x10'));var qs=require(_0x825a('0x11'));var as=require(_0x825a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x825a('0x13'))(_0x825a('0x14'));var utils=require(_0x825a('0x15'));var config=require(_0x825a('0x16'));var licenseUtil=require(_0x825a('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51d141,_0x3611ca){_0x3611ca=_0x3611ca||0xcc;return function(_0x230693){if(_0x230693){return _0x51d141['sendStatus'](_0x3611ca);}return _0x51d141[_0x825a('0x18')](_0x3611ca)['end']();};}function respondWithResult(_0x4625c6,_0x2cda2b){_0x2cda2b=_0x2cda2b||0xc8;return function(_0x1d8fbc){if(_0x1d8fbc){return _0x4625c6[_0x825a('0x18')](_0x2cda2b)['json'](_0x1d8fbc);}};}function respondWithFilteredResult(_0x41a018,_0x1f7342){return function(_0x17e81e){if(_0x17e81e){var _0x5d2606=typeof _0x1f7342['offset']==='undefined'&&typeof _0x1f7342['limit']===_0x825a('0x19');var _0x54967d=_0x17e81e[_0x825a('0x1a')];var _0x50d923=_0x5d2606?0x0:_0x1f7342['offset'];var _0x482aa4=_0x5d2606?_0x17e81e[_0x825a('0x1a')]:_0x1f7342[_0x825a('0x1b')]+_0x1f7342['limit'];var _0x3f5ac1;if(_0x482aa4>=_0x54967d){_0x482aa4=_0x54967d;_0x3f5ac1=0xc8;}else{_0x3f5ac1=0xce;}_0x41a018[_0x825a('0x18')](_0x3f5ac1);return _0x41a018[_0x825a('0x1c')](_0x825a('0x1d'),_0x50d923+'-'+_0x482aa4+'/'+_0x54967d)[_0x825a('0x1e')](_0x17e81e);}return null;};}function patchUpdates(_0x3d94a3){return function(_0x51c58b){try{jsonpatch[_0x825a('0x1f')](_0x51c58b,_0x3d94a3,!![]);}catch(_0x32b50f){return BPromise[_0x825a('0x20')](_0x32b50f);}return _0x51c58b[_0x825a('0x21')]();};}function saveUpdates(_0x118096,_0x3a1ad1){return function(_0x92736e){if(_0x92736e){return _0x92736e[_0x825a('0x22')](_0x118096)[_0x825a('0x23')](function(_0x2d0c16){return _0x2d0c16;});}return null;};}function removeEntity(_0x49a661,_0x39f4e4){return function(_0x1a274e){if(_0x1a274e){return _0x1a274e[_0x825a('0x24')]()[_0x825a('0x23')](function(){_0x49a661[_0x825a('0x18')](0xcc)[_0x825a('0x25')]();});}};}function handleEntityNotFound(_0x1dc4f2,_0x23cd64){return function(_0x10ee0f){if(!_0x10ee0f){_0x1dc4f2['sendStatus'](0x194);}return _0x10ee0f;};}function handleError(_0x2fdf45,_0x2fb6ef){_0x2fb6ef=_0x2fb6ef||0x1f4;return function(_0x48f7ef){logger[_0x825a('0x26')](_0x48f7ef[_0x825a('0x27')]);if(_0x48f7ef[_0x825a('0x28')]){delete _0x48f7ef[_0x825a('0x28')];}_0x2fdf45['status'](_0x2fb6ef)[_0x825a('0x29')](_0x48f7ef);};}exports[_0x825a('0x2a')]=function(_0xe2bd85,_0x5ab4c1){var _0x319e0d={},_0x1509a9={},_0x4fb639={'count':0x0,'rows':[]};var _0x40c70b=_[_0x825a('0x2b')](db[_0x825a('0x2c')][_0x825a('0x2d')],function(_0x4ce4c1){return{'name':_0x4ce4c1[_0x825a('0x2e')],'type':_0x4ce4c1[_0x825a('0x2f')][_0x825a('0x30')]};});_0x1509a9['model']=_[_0x825a('0x2b')](_0x40c70b,_0x825a('0x28'));_0x1509a9[_0x825a('0x31')]=_[_0x825a('0x32')](_0xe2bd85[_0x825a('0x31')]);_0x1509a9[_0x825a('0x33')]=_['intersection'](_0x1509a9[_0x825a('0x34')],_0x1509a9[_0x825a('0x31')]);_0x319e0d[_0x825a('0x35')]=_[_0x825a('0x36')](_0x1509a9[_0x825a('0x34')],qs[_0x825a('0x37')](_0xe2bd85['query'][_0x825a('0x37')]));_0x319e0d[_0x825a('0x35')]=_0x319e0d[_0x825a('0x35')][_0x825a('0x38')]?_0x319e0d[_0x825a('0x35')]:_0x1509a9[_0x825a('0x34')];if(!_0xe2bd85['query'][_0x825a('0x39')](_0x825a('0x3a'))){_0x319e0d[_0x825a('0x3b')]=qs[_0x825a('0x3b')](_0xe2bd85[_0x825a('0x31')][_0x825a('0x3b')]);_0x319e0d['offset']=qs[_0x825a('0x1b')](_0xe2bd85[_0x825a('0x31')][_0x825a('0x1b')]);}_0x319e0d[_0x825a('0x3c')]=qs['sort'](_0xe2bd85[_0x825a('0x31')][_0x825a('0x3d')]);_0x319e0d[_0x825a('0x3e')]=qs[_0x825a('0x33')](_['pick'](_0xe2bd85['query'],_0x1509a9['filters']),_0x40c70b);if(_0xe2bd85['query'][_0x825a('0x3f')]){_0x319e0d[_0x825a('0x3e')]=_[_0x825a('0x40')](_0x319e0d['where'],{'$or':_[_0x825a('0x2b')](_0x40c70b,function(_0x239cf8){if(_0x239cf8['type']!==_0x825a('0x41')){var _0x38a3ce={};_0x38a3ce[_0x239cf8[_0x825a('0x28')]]={'$like':'%'+_0xe2bd85[_0x825a('0x31')][_0x825a('0x3f')]+'%'};return _0x38a3ce;}})});}_0x319e0d=_[_0x825a('0x40')]({},_0x319e0d,_0xe2bd85[_0x825a('0x42')]);var _0x32347c={'where':_0x319e0d[_0x825a('0x3e')]};return db['ZohoConfiguration'][_0x825a('0x1a')](_0x32347c)[_0x825a('0x23')](function(_0x4d5618){_0x4fb639[_0x825a('0x1a')]=_0x4d5618;if(_0xe2bd85[_0x825a('0x31')]['includeAll']){_0x319e0d[_0x825a('0x43')]=[{'all':!![]}];}return db[_0x825a('0x2c')][_0x825a('0x44')](_0x319e0d);})[_0x825a('0x23')](function(_0x5da7e9){_0x4fb639[_0x825a('0x45')]=_0x5da7e9;return _0x4fb639;})['then'](respondWithFilteredResult(_0x5ab4c1,_0x319e0d))['catch'](handleError(_0x5ab4c1,null));};exports['show']=function(_0x3d0c41,_0x80cff0){var _0x9add81={'raw':![],'where':{'id':_0x3d0c41['params']['id']}},_0x4212a5={};_0x4212a5[_0x825a('0x34')]=_[_0x825a('0x32')](db[_0x825a('0x2c')][_0x825a('0x2d')]);_0x4212a5['query']=_[_0x825a('0x32')](_0x3d0c41[_0x825a('0x31')]);_0x4212a5[_0x825a('0x33')]=_[_0x825a('0x36')](_0x4212a5['model'],_0x4212a5['query']);_0x9add81[_0x825a('0x35')]=_[_0x825a('0x36')](_0x4212a5['model'],qs[_0x825a('0x37')](_0x3d0c41[_0x825a('0x31')][_0x825a('0x37')]));_0x9add81[_0x825a('0x35')]=_0x9add81['attributes'][_0x825a('0x38')]?_0x9add81[_0x825a('0x35')]:_0x4212a5['model'];if(_0x3d0c41['query'][_0x825a('0x46')]){_0x9add81[_0x825a('0x43')]=[{'all':!![]}];}_0x9add81=_[_0x825a('0x40')]({},_0x9add81,_0x3d0c41['options']);return db['ZohoConfiguration'][_0x825a('0x47')](_0x9add81)[_0x825a('0x23')](handleEntityNotFound(_0x80cff0,null))[_0x825a('0x23')](respondWithResult(_0x80cff0,null))[_0x825a('0x48')](handleError(_0x80cff0,null));};exports[_0x825a('0x49')]=function(_0x2c06f7,_0x450903){return db[_0x825a('0x2c')][_0x825a('0x49')](_0x2c06f7[_0x825a('0x4a')],{})['then'](respondWithResult(_0x450903,0xc9))[_0x825a('0x48')](handleError(_0x450903,null));};exports[_0x825a('0x22')]=function(_0x5348a4,_0x15b054){if(_0x5348a4[_0x825a('0x4a')]['id']){delete _0x5348a4[_0x825a('0x4a')]['id'];}return db[_0x825a('0x2c')][_0x825a('0x47')]({'where':{'id':_0x5348a4[_0x825a('0x4b')]['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x15b054,null))[_0x825a('0x23')](saveUpdates(_0x5348a4[_0x825a('0x4a')],null))[_0x825a('0x23')](respondWithResult(_0x15b054,null))[_0x825a('0x48')](handleError(_0x15b054,null));};exports[_0x825a('0x24')]=function(_0xe4bbe9,_0x2b5a53){return db[_0x825a('0x2c')]['find']({'where':{'id':_0xe4bbe9[_0x825a('0x4b')]['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x2b5a53,null))['then'](removeEntity(_0x2b5a53,null))[_0x825a('0x48')](handleError(_0x2b5a53,null));};exports[_0x825a('0x4c')]=function(_0x547bbd,_0x2b2115,_0x12cb7e){var _0x2f54e3={};var _0x453cb5={};var _0x596cda;var _0x1704a5;return db[_0x825a('0x2c')][_0x825a('0x4d')]({'where':{'id':_0x547bbd['params']['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x2b2115,null))[_0x825a('0x23')](function(_0x1054af){if(_0x1054af){_0x596cda=_0x1054af;_0x453cb5[_0x825a('0x34')]=_[_0x825a('0x32')](db[_0x825a('0x4e')][_0x825a('0x2d')]);_0x453cb5[_0x825a('0x31')]=_['keys'](_0x547bbd[_0x825a('0x31')]);_0x453cb5[_0x825a('0x33')]=_[_0x825a('0x36')](_0x453cb5[_0x825a('0x34')],_0x453cb5[_0x825a('0x31')]);_0x2f54e3[_0x825a('0x35')]=_[_0x825a('0x36')](_0x453cb5[_0x825a('0x34')],qs[_0x825a('0x37')](_0x547bbd[_0x825a('0x31')][_0x825a('0x37')]));_0x2f54e3[_0x825a('0x35')]=_0x2f54e3[_0x825a('0x35')][_0x825a('0x38')]?_0x2f54e3[_0x825a('0x35')]:_0x453cb5[_0x825a('0x34')];_0x2f54e3[_0x825a('0x3c')]=qs[_0x825a('0x3d')](_0x547bbd[_0x825a('0x31')][_0x825a('0x3d')]);_0x2f54e3['where']=qs[_0x825a('0x33')](_['pick'](_0x547bbd[_0x825a('0x31')],_0x453cb5[_0x825a('0x33')]));if(_0x547bbd[_0x825a('0x31')][_0x825a('0x3f')]){_0x2f54e3[_0x825a('0x3e')]=_['merge'](_0x2f54e3[_0x825a('0x3e')],{'$or':_[_0x825a('0x2b')](_0x2f54e3[_0x825a('0x35')],function(_0x21da0e){var _0xdfeff7={};_0xdfeff7[_0x21da0e]={'$like':'%'+_0x547bbd['query'][_0x825a('0x3f')]+'%'};return _0xdfeff7;})});}_0x2f54e3=_[_0x825a('0x40')]({},_0x2f54e3,_0x547bbd[_0x825a('0x42')]);return _0x596cda['getFields'](_0x2f54e3);}})[_0x825a('0x23')](function(_0x174183){if(_0x174183){_0x1704a5=_0x174183[_0x825a('0x38')];if(!_0x547bbd[_0x825a('0x31')][_0x825a('0x39')](_0x825a('0x3a'))){_0x2f54e3['limit']=qs[_0x825a('0x3b')](_0x547bbd[_0x825a('0x31')][_0x825a('0x3b')]);_0x2f54e3[_0x825a('0x1b')]=qs[_0x825a('0x1b')](_0x547bbd[_0x825a('0x31')][_0x825a('0x1b')]);}return _0x596cda[_0x825a('0x4c')](_0x2f54e3);}})[_0x825a('0x23')](function(_0x26bc9c){if(_0x26bc9c){return _0x26bc9c?{'count':_0x1704a5,'rows':_0x26bc9c}:null;}})[_0x825a('0x23')](respondWithResult(_0x2b2115,null))[_0x825a('0x48')](handleError(_0x2b2115,null));};exports[_0x825a('0x4f')]=function(_0xfbdbb5,_0x2affc9,_0xf3ea7e){var _0x1f67b1={};var _0x1635b7={};var _0x4e0674;var _0xbfed6e;return db[_0x825a('0x2c')][_0x825a('0x4d')]({'where':{'id':_0xfbdbb5[_0x825a('0x4b')]['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x2affc9,null))[_0x825a('0x23')](function(_0x14531c){if(_0x14531c){_0x4e0674=_0x14531c;_0x1635b7[_0x825a('0x34')]=_[_0x825a('0x32')](db[_0x825a('0x4e')][_0x825a('0x2d')]);_0x1635b7[_0x825a('0x31')]=_[_0x825a('0x32')](_0xfbdbb5[_0x825a('0x31')]);_0x1635b7[_0x825a('0x33')]=_[_0x825a('0x36')](_0x1635b7[_0x825a('0x34')],_0x1635b7[_0x825a('0x31')]);_0x1f67b1[_0x825a('0x35')]=_[_0x825a('0x36')](_0x1635b7[_0x825a('0x34')],qs[_0x825a('0x37')](_0xfbdbb5[_0x825a('0x31')][_0x825a('0x37')]));_0x1f67b1[_0x825a('0x35')]=_0x1f67b1['attributes']['length']?_0x1f67b1[_0x825a('0x35')]:_0x1635b7[_0x825a('0x34')];_0x1f67b1[_0x825a('0x3c')]=qs['sort'](_0xfbdbb5[_0x825a('0x31')][_0x825a('0x3d')]);_0x1f67b1[_0x825a('0x3e')]=qs[_0x825a('0x33')](_[_0x825a('0x50')](_0xfbdbb5[_0x825a('0x31')],_0x1635b7[_0x825a('0x33')]));if(_0xfbdbb5[_0x825a('0x31')][_0x825a('0x3f')]){_0x1f67b1[_0x825a('0x3e')]=_['merge'](_0x1f67b1[_0x825a('0x3e')],{'$or':_[_0x825a('0x2b')](_0x1f67b1[_0x825a('0x35')],function(_0x8106a8){var _0xf360fa={};_0xf360fa[_0x8106a8]={'$like':'%'+_0xfbdbb5[_0x825a('0x31')]['filter']+'%'};return _0xf360fa;})});}_0x1f67b1=_[_0x825a('0x40')]({},_0x1f67b1,_0xfbdbb5[_0x825a('0x42')]);return _0x4e0674['getSubjects'](_0x1f67b1);}})[_0x825a('0x23')](function(_0x5bf69d){if(_0x5bf69d){_0xbfed6e=_0x5bf69d[_0x825a('0x38')];if(!_0xfbdbb5[_0x825a('0x31')]['hasOwnProperty'](_0x825a('0x3a'))){_0x1f67b1['limit']=qs[_0x825a('0x3b')](_0xfbdbb5[_0x825a('0x31')][_0x825a('0x3b')]);_0x1f67b1[_0x825a('0x1b')]=qs[_0x825a('0x1b')](_0xfbdbb5['query']['offset']);}return _0x4e0674[_0x825a('0x4f')](_0x1f67b1);}})['then'](function(_0x460e3d){if(_0x460e3d){return _0x460e3d?{'count':_0xbfed6e,'rows':_0x460e3d}:null;}})[_0x825a('0x23')](respondWithResult(_0x2affc9,null))['catch'](handleError(_0x2affc9,null));};exports[_0x825a('0x51')]=function(_0x39193e,_0x3d9d97,_0x5d74b3){var _0x355e1f={};var _0x1f9d65={};var _0x2163a4;var _0x5028ef;return db[_0x825a('0x2c')][_0x825a('0x4d')]({'where':{'id':_0x39193e['params']['id']}})['then'](handleEntityNotFound(_0x3d9d97,null))[_0x825a('0x23')](function(_0x333d02){if(_0x333d02){_0x2163a4=_0x333d02;_0x1f9d65['model']=_['keys'](db[_0x825a('0x4e')][_0x825a('0x2d')]);_0x1f9d65[_0x825a('0x31')]=_[_0x825a('0x32')](_0x39193e[_0x825a('0x31')]);_0x1f9d65[_0x825a('0x33')]=_[_0x825a('0x36')](_0x1f9d65['model'],_0x1f9d65[_0x825a('0x31')]);_0x355e1f[_0x825a('0x35')]=_[_0x825a('0x36')](_0x1f9d65[_0x825a('0x34')],qs[_0x825a('0x37')](_0x39193e[_0x825a('0x31')][_0x825a('0x37')]));_0x355e1f[_0x825a('0x35')]=_0x355e1f[_0x825a('0x35')][_0x825a('0x38')]?_0x355e1f[_0x825a('0x35')]:_0x1f9d65[_0x825a('0x34')];_0x355e1f['order']=qs[_0x825a('0x3d')](_0x39193e[_0x825a('0x31')]['sort']);_0x355e1f['where']=qs[_0x825a('0x33')](_[_0x825a('0x50')](_0x39193e[_0x825a('0x31')],_0x1f9d65['filters']));if(_0x39193e['query'][_0x825a('0x3f')]){_0x355e1f[_0x825a('0x3e')]=_['merge'](_0x355e1f[_0x825a('0x3e')],{'$or':_[_0x825a('0x2b')](_0x355e1f[_0x825a('0x35')],function(_0x24e6c6){var _0x567934={};_0x567934[_0x24e6c6]={'$like':'%'+_0x39193e[_0x825a('0x31')][_0x825a('0x3f')]+'%'};return _0x567934;})});}_0x355e1f=_[_0x825a('0x40')]({},_0x355e1f,_0x39193e[_0x825a('0x42')]);return _0x2163a4[_0x825a('0x51')](_0x355e1f);}})[_0x825a('0x23')](function(_0x228109){if(_0x228109){_0x5028ef=_0x228109[_0x825a('0x38')];if(!_0x39193e['query']['hasOwnProperty'](_0x825a('0x3a'))){_0x355e1f[_0x825a('0x3b')]=qs[_0x825a('0x3b')](_0x39193e[_0x825a('0x31')]['limit']);_0x355e1f[_0x825a('0x1b')]=qs[_0x825a('0x1b')](_0x39193e[_0x825a('0x31')][_0x825a('0x1b')]);}return _0x2163a4[_0x825a('0x51')](_0x355e1f);}})[_0x825a('0x23')](function(_0x9e9f03){if(_0x9e9f03){return _0x9e9f03?{'count':_0x5028ef,'rows':_0x9e9f03}:null;}})[_0x825a('0x23')](respondWithResult(_0x3d9d97,null))[_0x825a('0x48')](handleError(_0x3d9d97,null));};
\ No newline at end of file
index 1f06a5a..e81121b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x664b=['bluebird','request-promise','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','lodash','moment'];(function(_0x544169,_0x315b6c){var _0x118510=function(_0x332349){while(--_0x332349){_0x544169['push'](_0x544169['shift']());}};_0x118510(++_0x315b6c);}(_0x664b,0x148));var _0xb664=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x664b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb664('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb664('0x1'));var BPromise=require(_0xb664('0x2'));var rp=require(_0xb664('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb664('0x4'));var config=require(_0xb664('0x5'));var attributes=require(_0xb664('0x6'));module[_0xb664('0x7')]=function(_0x1d9c11,_0x2ff858){return _0x1d9c11[_0xb664('0x8')](_0xb664('0x9'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1950=['bluebird','request-promise','rimraf','../../config/environment','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','api','moment'];(function(_0xea35d1,_0x302471){var _0x1d7a7c=function(_0x1bc101){while(--_0x1bc101){_0xea35d1['push'](_0xea35d1['shift']());}};_0x1d7a7c(++_0x302471);}(_0x1950,0xce));var _0x0195=function(_0x2504c4,_0x5e9287){_0x2504c4=_0x2504c4-0x0;var _0x4cf358=_0x1950[_0x2504c4];return _0x4cf358;};'use strict';var _=require(_0x0195('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0195('0x1'));var moment=require(_0x0195('0x2'));var BPromise=require(_0x0195('0x3'));var rp=require(_0x0195('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0195('0x5'));var config=require(_0x0195('0x6'));var attributes=require('./intZohoConfiguration.attributes');module[_0x0195('0x7')]=function(_0x3c686d,_0x21347b){return _0x3c686d[_0x0195('0x8')](_0x0195('0x9'),attributes,{'tableName':_0x0195('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 214b5d0..314f80c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38f5=['then','info','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x38f5,0x1bf));var _0x538f=function(_0x5011cd,_0x3d32f8){_0x5011cd=_0x5011cd-0x0;var _0x1553c0=_0x38f5[_0x5011cd];return _0x1553c0;};'use strict';var _=require(_0x538f('0x0'));var util=require(_0x538f('0x1'));var moment=require('moment');var BPromise=require(_0x538f('0x2'));var rs=require(_0x538f('0x3'));var fs=require('fs');var Redis=require(_0x538f('0x4'));var db=require(_0x538f('0x5'))['db'];var utils=require(_0x538f('0x6'));var logger=require(_0x538f('0x7'))(_0x538f('0x8'));var config=require(_0x538f('0x9'));var jayson=require(_0x538f('0xa'));var client=jayson[_0x538f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x465dcf,_0x356f75,_0x5048a5){return new BPromise(function(_0x12989b,_0x335479){return client[_0x538f('0xc')](_0x465dcf,_0x5048a5)[_0x538f('0xd')](function(_0x40c988){logger[_0x538f('0xe')](_0x538f('0xf'),_0x356f75,'request\x20sent');logger[_0x538f('0x10')](_0x538f('0x11'),_0x356f75,'request\x20sent',JSON[_0x538f('0x12')](_0x40c988));if(_0x40c988[_0x538f('0x13')]){if(_0x40c988[_0x538f('0x13')][_0x538f('0x14')]===0x1f4){logger[_0x538f('0x13')](_0x538f('0xf'),_0x356f75,_0x40c988[_0x538f('0x13')][_0x538f('0x15')]);return _0x335479(_0x40c988[_0x538f('0x13')]['message']);}logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x356f75,_0x40c988[_0x538f('0x13')][_0x538f('0x15')]);return _0x12989b(_0x40c988['error']['message']);}else{logger[_0x538f('0xe')](_0x538f('0xf'),_0x356f75,'request\x20sent');_0x12989b(_0x40c988[_0x538f('0x16')][_0x538f('0x15')]);}})['catch'](function(_0x232552){logger[_0x538f('0x13')](_0x538f('0xf'),_0x356f75,_0x232552);_0x335479(_0x232552);});});}
\ No newline at end of file
+var _0x0db1=['ioredis','../../config/utils','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0xa5db05,_0x431d23){var _0x269a83=function(_0xdbced1){while(--_0xdbced1){_0xa5db05['push'](_0xa5db05['shift']());}};_0x269a83(++_0x431d23);}(_0x0db1,0x79));var _0x10db=function(_0x509b61,_0x48adbb){_0x509b61=_0x509b61-0x0;var _0x41182c=_0x0db1[_0x509b61];return _0x41182c;};'use strict';var _=require(_0x10db('0x0'));var util=require(_0x10db('0x1'));var moment=require(_0x10db('0x2'));var BPromise=require(_0x10db('0x3'));var rs=require(_0x10db('0x4'));var fs=require('fs');var Redis=require(_0x10db('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x10db('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x10db('0x7')][_0x10db('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3b8825,_0x5d2c33,_0x5a9582){return new BPromise(function(_0x485a7f,_0x492a0e){return client[_0x10db('0x9')](_0x3b8825,_0x5a9582)[_0x10db('0xa')](function(_0x472a6b){logger[_0x10db('0xb')](_0x10db('0xc'),_0x5d2c33,_0x10db('0xd'));logger['debug'](_0x10db('0xe'),_0x5d2c33,'request\x20sent',JSON[_0x10db('0xf')](_0x472a6b));if(_0x472a6b[_0x10db('0x10')]){if(_0x472a6b['error'][_0x10db('0x11')]===0x1f4){logger[_0x10db('0x10')](_0x10db('0xc'),_0x5d2c33,_0x472a6b[_0x10db('0x10')][_0x10db('0x12')]);return _0x492a0e(_0x472a6b[_0x10db('0x10')][_0x10db('0x12')]);}logger[_0x10db('0x10')](_0x10db('0xc'),_0x5d2c33,_0x472a6b[_0x10db('0x10')]['message']);return _0x485a7f(_0x472a6b['error'][_0x10db('0x12')]);}else{logger[_0x10db('0xb')](_0x10db('0xc'),_0x5d2c33,'request\x20sent');_0x485a7f(_0x472a6b[_0x10db('0x13')][_0x10db('0x12')]);}})[_0x10db('0x14')](function(_0x1728e0){logger[_0x10db('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x5d2c33,_0x1728e0);_0x492a0e(_0x1728e0);});});}
\ No newline at end of file
index cff742f..325c643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x770e=['put','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','./intZohoField.controller','get','/:id','isAuthenticated','post','create'];(function(_0x546056,_0x47e2b8){var _0x12a2c3=function(_0x137571){while(--_0x137571){_0x546056['push'](_0x546056['shift']());}};_0x12a2c3(++_0x47e2b8);}(_0x770e,0x194));var _0xe770=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x770e[_0x33032e];return _0x13316b;};'use strict';var multer=require(_0xe770('0x0'));var util=require('util');var path=require(_0xe770('0x1'));var timeout=require(_0xe770('0x2'));var express=require(_0xe770('0x3'));var router=express['Router']();var fs_extra=require(_0xe770('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe770('0x5'));var config=require('../../config/environment');var controller=require(_0xe770('0x6'));router[_0xe770('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe770('0x7')](_0xe770('0x8'),auth[_0xe770('0x9')](),controller['show']);router[_0xe770('0xa')]('/',auth[_0xe770('0x9')](),controller[_0xe770('0xb')]);router[_0xe770('0xc')](_0xe770('0x8'),auth[_0xe770('0x9')](),controller['update']);router[_0xe770('0xd')](_0xe770('0x8'),auth['isAuthenticated'](),controller[_0xe770('0xe')]);module[_0xe770('0xf')]=router;
\ No newline at end of file
+var _0x13e3=['show','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../config/environment','get','/:id','isAuthenticated'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x13e3,0x117));var _0x313e=function(_0x4709c8,_0x3384ca){_0x4709c8=_0x4709c8-0x0;var _0x478cdd=_0x13e3[_0x4709c8];return _0x478cdd;};'use strict';var multer=require(_0x313e('0x0'));var util=require(_0x313e('0x1'));var path=require(_0x313e('0x2'));var timeout=require('connect-timeout');var express=require(_0x313e('0x3'));var router=express[_0x313e('0x4')]();var fs_extra=require(_0x313e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x313e('0x6'));var controller=require('./intZohoField.controller');router[_0x313e('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x313e('0x7')](_0x313e('0x8'),auth[_0x313e('0x9')](),controller[_0x313e('0xa')]);router[_0x313e('0xb')]('/',auth[_0x313e('0x9')](),controller[_0x313e('0xc')]);router[_0x313e('0xd')](_0x313e('0x8'),auth[_0x313e('0x9')](),controller[_0x313e('0xe')]);router[_0x313e('0xf')](_0x313e('0x8'),auth[_0x313e('0x9')](),controller['destroy']);module[_0x313e('0x10')]=router;
\ No newline at end of file
index 8ba098a..7812fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2113=['string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM'];(function(_0x2b0a08,_0x351fca){var _0x51aac5=function(_0x2ccd0b){while(--_0x2ccd0b){_0x2b0a08['push'](_0x2b0a08['shift']());}};_0x51aac5(++_0x351fca);}(_0x2113,0x192));var _0x3211=function(_0x527b06,_0x419a8f){_0x527b06=_0x527b06-0x0;var _0x399e3b=_0x2113[_0x527b06];return _0x399e3b;};'use strict';var Sequelize=require(_0x3211('0x0'));module[_0x3211('0x1')]={'type':{'type':Sequelize[_0x3211('0x2')](_0x3211('0x3'),_0x3211('0x4'),_0x3211('0x5'),_0x3211('0x6'),_0x3211('0x7')),'defaultValue':_0x3211('0x3')},'content':{'type':Sequelize[_0x3211('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3211('0x2')](_0x3211('0x3'),_0x3211('0x4'),_0x3211('0x5'))},'keyContent':{'type':Sequelize[_0x3211('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3211('0x8')]}};
\ No newline at end of file
+var _0x20d7=['keyValue','picklist','STRING','ENUM','BOOLEAN','exports','string','variable','customVariable'];(function(_0x441e9a,_0x549e51){var _0x225027=function(_0x24fd97){while(--_0x24fd97){_0x441e9a['push'](_0x441e9a['shift']());}};_0x225027(++_0x549e51);}(_0x20d7,0x164));var _0x720d=function(_0x158bb0,_0x3fb564){_0x158bb0=_0x158bb0-0x0;var _0x2ba1b4=_0x20d7[_0x158bb0];return _0x2ba1b4;};'use strict';var Sequelize=require('sequelize');module[_0x720d('0x0')]={'type':{'type':Sequelize['ENUM'](_0x720d('0x1'),_0x720d('0x2'),_0x720d('0x3'),_0x720d('0x4'),_0x720d('0x5')),'defaultValue':_0x720d('0x1')},'content':{'type':Sequelize[_0x720d('0x6')]},'key':{'type':Sequelize[_0x720d('0x6')]},'keyType':{'type':Sequelize[_0x720d('0x7')](_0x720d('0x1'),_0x720d('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x720d('0x6')]},'idField':{'type':Sequelize[_0x720d('0x6')]},'nameField':{'type':Sequelize[_0x720d('0x6')]},'customField':{'type':Sequelize[_0x720d('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x720d('0x6')]}};
\ No newline at end of file
index 52872ae..3c5e730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x312b=['type','options','ZohoField','include','findAll','show','params','rawAttributes','includeAll','catch','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','sendStatus','offset','undefined','limit','count','status','json','apply','reject','save','update','destroy','then','end','error','name','send','index','map','fieldName','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','filter','where','merge'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0x312b,0x1ab));var _0xb312=function(_0x421edb,_0x3d9e96){_0x421edb=_0x421edb-0x0;var _0x5ac1a4=_0x312b[_0x421edb];return _0x5ac1a4;};'use strict';var emlformat=require(_0xb312('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb312('0x1'));var jsonpatch=require(_0xb312('0x2'));var rp=require(_0xb312('0x3'));var moment=require(_0xb312('0x4'));var BPromise=require(_0xb312('0x5'));var Mustache=require(_0xb312('0x6'));var util=require(_0xb312('0x7'));var path=require(_0xb312('0x8'));var sox=require(_0xb312('0x9'));var csv=require(_0xb312('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb312('0xb'));var _=require(_0xb312('0xc'));var squel=require('squel');var crypto=require(_0xb312('0xd'));var jsforce=require(_0xb312('0xe'));var deskjs=require(_0xb312('0xf'));var toCsv=require(_0xb312('0xa'));var querystring=require('querystring');var Papa=require(_0xb312('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb312('0x11'));var as=require(_0xb312('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb312('0x13'))(_0xb312('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb312('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a064e,_0x2de5ad){_0x2de5ad=_0x2de5ad||0xcc;return function(_0x233e34){if(_0x233e34){return _0x2a064e[_0xb312('0x16')](_0x2de5ad);}return _0x2a064e['status'](_0x2de5ad)['end']();};}function respondWithResult(_0x2dc85a,_0x33b808){_0x33b808=_0x33b808||0xc8;return function(_0x475628){if(_0x475628){return _0x2dc85a['status'](_0x33b808)['json'](_0x475628);}};}function respondWithFilteredResult(_0x3781a3,_0x3918d1){return function(_0x212986){if(_0x212986){var _0x4f1cbd=typeof _0x3918d1[_0xb312('0x17')]===_0xb312('0x18')&&typeof _0x3918d1[_0xb312('0x19')]===_0xb312('0x18');var _0x3d5fe3=_0x212986[_0xb312('0x1a')];var _0xa3de0c=_0x4f1cbd?0x0:_0x3918d1['offset'];var _0x3ee589=_0x4f1cbd?_0x212986[_0xb312('0x1a')]:_0x3918d1[_0xb312('0x17')]+_0x3918d1[_0xb312('0x19')];var _0x151ed2;if(_0x3ee589>=_0x3d5fe3){_0x3ee589=_0x3d5fe3;_0x151ed2=0xc8;}else{_0x151ed2=0xce;}_0x3781a3[_0xb312('0x1b')](_0x151ed2);return _0x3781a3['set']('Content-Range',_0xa3de0c+'-'+_0x3ee589+'/'+_0x3d5fe3)[_0xb312('0x1c')](_0x212986);}return null;};}function patchUpdates(_0x2b678d){return function(_0x5e2c68){try{jsonpatch[_0xb312('0x1d')](_0x5e2c68,_0x2b678d,!![]);}catch(_0x415138){return BPromise[_0xb312('0x1e')](_0x415138);}return _0x5e2c68[_0xb312('0x1f')]();};}function saveUpdates(_0x483101,_0x489756){return function(_0x4af286){if(_0x4af286){return _0x4af286[_0xb312('0x20')](_0x483101)['then'](function(_0x1fa57e){return _0x1fa57e;});}return null;};}function removeEntity(_0x4c8bf5,_0x28421b){return function(_0x324497){if(_0x324497){return _0x324497[_0xb312('0x21')]()[_0xb312('0x22')](function(){_0x4c8bf5[_0xb312('0x1b')](0xcc)[_0xb312('0x23')]();});}};}function handleEntityNotFound(_0x204cf2,_0x4eb98d){return function(_0x4ec451){if(!_0x4ec451){_0x204cf2['sendStatus'](0x194);}return _0x4ec451;};}function handleError(_0x6329bd,_0x4310f4){_0x4310f4=_0x4310f4||0x1f4;return function(_0x3a0ec7){logger[_0xb312('0x24')](_0x3a0ec7['stack']);if(_0x3a0ec7[_0xb312('0x25')]){delete _0x3a0ec7[_0xb312('0x25')];}_0x6329bd[_0xb312('0x1b')](_0x4310f4)[_0xb312('0x26')](_0x3a0ec7);};}exports[_0xb312('0x27')]=function(_0x35f4d3,_0x1e73be){var _0x1c69ca={},_0x271822={},_0x10ff0d={'count':0x0,'rows':[]};var _0x365544=_[_0xb312('0x28')](db['ZohoField']['rawAttributes'],function(_0x5eddaa){return{'name':_0x5eddaa[_0xb312('0x29')],'type':_0x5eddaa['type']['key']};});_0x271822[_0xb312('0x2a')]=_[_0xb312('0x28')](_0x365544,_0xb312('0x25'));_0x271822[_0xb312('0x2b')]=_[_0xb312('0x2c')](_0x35f4d3[_0xb312('0x2b')]);_0x271822[_0xb312('0x2d')]=_['intersection'](_0x271822[_0xb312('0x2a')],_0x271822[_0xb312('0x2b')]);_0x1c69ca[_0xb312('0x2e')]=_[_0xb312('0x2f')](_0x271822['model'],qs[_0xb312('0x30')](_0x35f4d3[_0xb312('0x2b')][_0xb312('0x30')]));_0x1c69ca[_0xb312('0x2e')]=_0x1c69ca[_0xb312('0x2e')][_0xb312('0x31')]?_0x1c69ca[_0xb312('0x2e')]:_0x271822[_0xb312('0x2a')];if(!_0x35f4d3[_0xb312('0x2b')][_0xb312('0x32')](_0xb312('0x33'))){_0x1c69ca[_0xb312('0x19')]=qs[_0xb312('0x19')](_0x35f4d3['query']['limit']);_0x1c69ca['offset']=qs[_0xb312('0x17')](_0x35f4d3[_0xb312('0x2b')][_0xb312('0x17')]);}_0x1c69ca['order']=qs['sort'](_0x35f4d3['query'][_0xb312('0x34')]);_0x1c69ca['where']=qs[_0xb312('0x2d')](_['pick'](_0x35f4d3[_0xb312('0x2b')],_0x271822[_0xb312('0x2d')]),_0x365544);if(_0x35f4d3[_0xb312('0x2b')][_0xb312('0x35')]){_0x1c69ca[_0xb312('0x36')]=_[_0xb312('0x37')](_0x1c69ca[_0xb312('0x36')],{'$or':_['map'](_0x365544,function(_0x25fe07){if(_0x25fe07[_0xb312('0x38')]!=='VIRTUAL'){var _0x25f60a={};_0x25f60a[_0x25fe07[_0xb312('0x25')]]={'$like':'%'+_0x35f4d3['query']['filter']+'%'};return _0x25f60a;}})});}_0x1c69ca=_['merge']({},_0x1c69ca,_0x35f4d3[_0xb312('0x39')]);var _0xc5e722={'where':_0x1c69ca[_0xb312('0x36')]};return db[_0xb312('0x3a')][_0xb312('0x1a')](_0xc5e722)[_0xb312('0x22')](function(_0x1091c2){_0x10ff0d['count']=_0x1091c2;if(_0x35f4d3[_0xb312('0x2b')]['includeAll']){_0x1c69ca[_0xb312('0x3b')]=[{'all':!![]}];}return db[_0xb312('0x3a')][_0xb312('0x3c')](_0x1c69ca);})[_0xb312('0x22')](function(_0x4c464f){_0x10ff0d['rows']=_0x4c464f;return _0x10ff0d;})[_0xb312('0x22')](respondWithFilteredResult(_0x1e73be,_0x1c69ca))['catch'](handleError(_0x1e73be,null));};exports[_0xb312('0x3d')]=function(_0xb80efc,_0x1998d8){var _0x286bc4={'raw':!![],'where':{'id':_0xb80efc[_0xb312('0x3e')]['id']}},_0x57c5a1={};_0x57c5a1['model']=_[_0xb312('0x2c')](db[_0xb312('0x3a')][_0xb312('0x3f')]);_0x57c5a1[_0xb312('0x2b')]=_[_0xb312('0x2c')](_0xb80efc[_0xb312('0x2b')]);_0x57c5a1[_0xb312('0x2d')]=_['intersection'](_0x57c5a1['model'],_0x57c5a1['query']);_0x286bc4['attributes']=_[_0xb312('0x2f')](_0x57c5a1[_0xb312('0x2a')],qs[_0xb312('0x30')](_0xb80efc[_0xb312('0x2b')][_0xb312('0x30')]));_0x286bc4[_0xb312('0x2e')]=_0x286bc4['attributes']['length']?_0x286bc4[_0xb312('0x2e')]:_0x57c5a1['model'];if(_0xb80efc[_0xb312('0x2b')][_0xb312('0x40')]){_0x286bc4['include']=[{'all':!![]}];}_0x286bc4=_[_0xb312('0x37')]({},_0x286bc4,_0xb80efc['options']);return db[_0xb312('0x3a')]['find'](_0x286bc4)[_0xb312('0x22')](handleEntityNotFound(_0x1998d8,null))['then'](respondWithResult(_0x1998d8,null))[_0xb312('0x41')](handleError(_0x1998d8,null));};exports[_0xb312('0x42')]=function(_0x1b25ce,_0x5861db){return db['ZohoField'][_0xb312('0x42')](_0x1b25ce[_0xb312('0x43')],{})[_0xb312('0x22')](respondWithResult(_0x5861db,0xc9))['catch'](handleError(_0x5861db,null));};exports['update']=function(_0x19973d,_0x3faef3){if(_0x19973d['body']['id']){delete _0x19973d[_0xb312('0x43')]['id'];}return db['ZohoField'][_0xb312('0x44')]({'where':{'id':_0x19973d[_0xb312('0x3e')]['id']}})[_0xb312('0x22')](handleEntityNotFound(_0x3faef3,null))[_0xb312('0x22')](saveUpdates(_0x19973d[_0xb312('0x43')],null))[_0xb312('0x22')](respondWithResult(_0x3faef3,null))[_0xb312('0x41')](handleError(_0x3faef3,null));};exports[_0xb312('0x21')]=function(_0x486d2e,_0x13d08a){return db[_0xb312('0x3a')][_0xb312('0x44')]({'where':{'id':_0x486d2e[_0xb312('0x3e')]['id']}})['then'](handleEntityNotFound(_0x13d08a,null))[_0xb312('0x22')](removeEntity(_0x13d08a,null))[_0xb312('0x41')](handleError(_0x13d08a,null));};
\ No newline at end of file
+var _0x358d=['save','update','then','end','sendStatus','error','stack','name','index','map','ZohoField','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','intersection','find','create','body','params','destroy','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','undefined','limit','count','offset','set','Content-Range','apply','reject'];(function(_0x5a187b,_0x1f64fe){var _0x14d601=function(_0x45fd29){while(--_0x45fd29){_0x5a187b['push'](_0x5a187b['shift']());}};_0x14d601(++_0x1f64fe);}(_0x358d,0xbd));var _0xd358=function(_0x369289,_0xb779d8){_0x369289=_0x369289-0x0;var _0x1c8ba4=_0x358d[_0x369289];return _0x1c8ba4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd358('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd358('0x1'));var Mustache=require(_0xd358('0x2'));var util=require(_0xd358('0x3'));var path=require(_0xd358('0x4'));var sox=require(_0xd358('0x5'));var csv=require(_0xd358('0x6'));var ejs=require(_0xd358('0x7'));var fs=require('fs');var fs_extra=require(_0xd358('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd358('0x9'));var jsforce=require(_0xd358('0xa'));var deskjs=require(_0xd358('0xb'));var toCsv=require(_0xd358('0x6'));var querystring=require(_0xd358('0xc'));var Papa=require(_0xd358('0xd'));var Redis=require(_0xd358('0xe'));var authService=require(_0xd358('0xf'));var qs=require(_0xd358('0x10'));var as=require(_0xd358('0x11'));var hardwareService=require(_0xd358('0x12'));var logger=require('../../config/logger')(_0xd358('0x13'));var utils=require(_0xd358('0x14'));var config=require(_0xd358('0x15'));var licenseUtil=require(_0xd358('0x16'));var db=require(_0xd358('0x17'))['db'];function respondWithStatusCode(_0x25be80,_0x558c49){_0x558c49=_0x558c49||0xcc;return function(_0x4ddfeb){if(_0x4ddfeb){return _0x25be80['sendStatus'](_0x558c49);}return _0x25be80[_0xd358('0x18')](_0x558c49)['end']();};}function respondWithResult(_0x32fc69,_0x2dc263){_0x2dc263=_0x2dc263||0xc8;return function(_0xd1d0af){if(_0xd1d0af){return _0x32fc69[_0xd358('0x18')](_0x2dc263)['json'](_0xd1d0af);}};}function respondWithFilteredResult(_0x2c7113,_0x88f7ab){return function(_0x23cc0e){if(_0x23cc0e){var _0x352608=typeof _0x88f7ab['offset']===_0xd358('0x19')&&typeof _0x88f7ab[_0xd358('0x1a')]===_0xd358('0x19');var _0x602787=_0x23cc0e[_0xd358('0x1b')];var _0x30f2c3=_0x352608?0x0:_0x88f7ab[_0xd358('0x1c')];var _0x479b8b=_0x352608?_0x23cc0e[_0xd358('0x1b')]:_0x88f7ab[_0xd358('0x1c')]+_0x88f7ab[_0xd358('0x1a')];var _0x45a4ea;if(_0x479b8b>=_0x602787){_0x479b8b=_0x602787;_0x45a4ea=0xc8;}else{_0x45a4ea=0xce;}_0x2c7113[_0xd358('0x18')](_0x45a4ea);return _0x2c7113[_0xd358('0x1d')](_0xd358('0x1e'),_0x30f2c3+'-'+_0x479b8b+'/'+_0x602787)['json'](_0x23cc0e);}return null;};}function patchUpdates(_0x3473d1){return function(_0x20e4b0){try{jsonpatch[_0xd358('0x1f')](_0x20e4b0,_0x3473d1,!![]);}catch(_0x2050e6){return BPromise[_0xd358('0x20')](_0x2050e6);}return _0x20e4b0[_0xd358('0x21')]();};}function saveUpdates(_0x407173,_0x1abd61){return function(_0x2103a1){if(_0x2103a1){return _0x2103a1[_0xd358('0x22')](_0x407173)[_0xd358('0x23')](function(_0xe4a1d3){return _0xe4a1d3;});}return null;};}function removeEntity(_0xd375ce,_0x5dfe45){return function(_0x379afa){if(_0x379afa){return _0x379afa['destroy']()[_0xd358('0x23')](function(){_0xd375ce[_0xd358('0x18')](0xcc)[_0xd358('0x24')]();});}};}function handleEntityNotFound(_0x2109f0,_0x29983f){return function(_0x290b45){if(!_0x290b45){_0x2109f0[_0xd358('0x25')](0x194);}return _0x290b45;};}function handleError(_0x4c95f5,_0x383082){_0x383082=_0x383082||0x1f4;return function(_0x42717d){logger[_0xd358('0x26')](_0x42717d[_0xd358('0x27')]);if(_0x42717d['name']){delete _0x42717d[_0xd358('0x28')];}_0x4c95f5[_0xd358('0x18')](_0x383082)['send'](_0x42717d);};}exports[_0xd358('0x29')]=function(_0x468f79,_0x125996){var _0x3046a0={},_0x42aeac={},_0x2eca86={'count':0x0,'rows':[]};var _0x5480ef=_[_0xd358('0x2a')](db[_0xd358('0x2b')][_0xd358('0x2c')],function(_0x560b98){return{'name':_0x560b98[_0xd358('0x2d')],'type':_0x560b98[_0xd358('0x2e')][_0xd358('0x2f')]};});_0x42aeac[_0xd358('0x30')]=_[_0xd358('0x2a')](_0x5480ef,_0xd358('0x28'));_0x42aeac[_0xd358('0x31')]=_[_0xd358('0x32')](_0x468f79[_0xd358('0x31')]);_0x42aeac[_0xd358('0x33')]=_['intersection'](_0x42aeac[_0xd358('0x30')],_0x42aeac['query']);_0x3046a0[_0xd358('0x34')]=_['intersection'](_0x42aeac[_0xd358('0x30')],qs[_0xd358('0x35')](_0x468f79[_0xd358('0x31')][_0xd358('0x35')]));_0x3046a0['attributes']=_0x3046a0[_0xd358('0x34')][_0xd358('0x36')]?_0x3046a0[_0xd358('0x34')]:_0x42aeac[_0xd358('0x30')];if(!_0x468f79['query']['hasOwnProperty'](_0xd358('0x37'))){_0x3046a0[_0xd358('0x1a')]=qs[_0xd358('0x1a')](_0x468f79['query']['limit']);_0x3046a0[_0xd358('0x1c')]=qs[_0xd358('0x1c')](_0x468f79[_0xd358('0x31')]['offset']);}_0x3046a0[_0xd358('0x38')]=qs['sort'](_0x468f79[_0xd358('0x31')][_0xd358('0x39')]);_0x3046a0[_0xd358('0x3a')]=qs['filters'](_[_0xd358('0x3b')](_0x468f79['query'],_0x42aeac[_0xd358('0x33')]),_0x5480ef);if(_0x468f79[_0xd358('0x31')][_0xd358('0x3c')]){_0x3046a0[_0xd358('0x3a')]=_[_0xd358('0x3d')](_0x3046a0[_0xd358('0x3a')],{'$or':_[_0xd358('0x2a')](_0x5480ef,function(_0x511920){if(_0x511920[_0xd358('0x2e')]!==_0xd358('0x3e')){var _0x1d5b7b={};_0x1d5b7b[_0x511920[_0xd358('0x28')]]={'$like':'%'+_0x468f79[_0xd358('0x31')][_0xd358('0x3c')]+'%'};return _0x1d5b7b;}})});}_0x3046a0=_[_0xd358('0x3d')]({},_0x3046a0,_0x468f79[_0xd358('0x3f')]);var _0x5c615b={'where':_0x3046a0[_0xd358('0x3a')]};return db['ZohoField'][_0xd358('0x1b')](_0x5c615b)[_0xd358('0x23')](function(_0x18c0d1){_0x2eca86[_0xd358('0x1b')]=_0x18c0d1;if(_0x468f79[_0xd358('0x31')][_0xd358('0x40')]){_0x3046a0[_0xd358('0x41')]=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x3046a0);})[_0xd358('0x23')](function(_0x3e89be){_0x2eca86[_0xd358('0x42')]=_0x3e89be;return _0x2eca86;})['then'](respondWithFilteredResult(_0x125996,_0x3046a0))[_0xd358('0x43')](handleError(_0x125996,null));};exports['show']=function(_0x497a34,_0x3a7756){var _0x38eebf={'raw':!![],'where':{'id':_0x497a34['params']['id']}},_0x425ca4={};_0x425ca4[_0xd358('0x30')]=_[_0xd358('0x32')](db[_0xd358('0x2b')]['rawAttributes']);_0x425ca4[_0xd358('0x31')]=_['keys'](_0x497a34[_0xd358('0x31')]);_0x425ca4[_0xd358('0x33')]=_['intersection'](_0x425ca4[_0xd358('0x30')],_0x425ca4['query']);_0x38eebf['attributes']=_[_0xd358('0x44')](_0x425ca4[_0xd358('0x30')],qs[_0xd358('0x35')](_0x497a34['query'][_0xd358('0x35')]));_0x38eebf[_0xd358('0x34')]=_0x38eebf[_0xd358('0x34')][_0xd358('0x36')]?_0x38eebf[_0xd358('0x34')]:_0x425ca4[_0xd358('0x30')];if(_0x497a34[_0xd358('0x31')]['includeAll']){_0x38eebf[_0xd358('0x41')]=[{'all':!![]}];}_0x38eebf=_[_0xd358('0x3d')]({},_0x38eebf,_0x497a34[_0xd358('0x3f')]);return db[_0xd358('0x2b')][_0xd358('0x45')](_0x38eebf)[_0xd358('0x23')](handleEntityNotFound(_0x3a7756,null))['then'](respondWithResult(_0x3a7756,null))[_0xd358('0x43')](handleError(_0x3a7756,null));};exports[_0xd358('0x46')]=function(_0x1bb160,_0x1705ac){return db['ZohoField']['create'](_0x1bb160[_0xd358('0x47')],{})[_0xd358('0x23')](respondWithResult(_0x1705ac,0xc9))['catch'](handleError(_0x1705ac,null));};exports[_0xd358('0x22')]=function(_0x783aa4,_0x261ccf){if(_0x783aa4['body']['id']){delete _0x783aa4['body']['id'];}return db[_0xd358('0x2b')]['find']({'where':{'id':_0x783aa4[_0xd358('0x48')]['id']}})['then'](handleEntityNotFound(_0x261ccf,null))[_0xd358('0x23')](saveUpdates(_0x783aa4['body'],null))[_0xd358('0x23')](respondWithResult(_0x261ccf,null))[_0xd358('0x43')](handleError(_0x261ccf,null));};exports[_0xd358('0x49')]=function(_0x5a24ec,_0x232f4a){return db[_0xd358('0x2b')][_0xd358('0x45')]({'where':{'id':_0x5a24ec['params']['id']}})['then'](handleEntityNotFound(_0x232f4a,null))[_0xd358('0x23')](removeEntity(_0x232f4a,null))[_0xd358('0x43')](handleError(_0x232f4a,null));};
\ No newline at end of file
index 4cec21b..9f57113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['bluebird','request-promise','path','./intZohoField.attributes','exports','define','ZohoField','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x428fc1,_0x426c55){var _0x5ce9a3=function(_0x17c807){while(--_0x17c807){_0x428fc1['push'](_0x428fc1['shift']());}};_0x5ce9a3(++_0x426c55);}(_0x5f2f,0x73));var _0xf5f2=function(_0x23d426,_0x52b818){_0x23d426=_0x23d426-0x0;var _0x35f6f0=_0x5f2f[_0x23d426];return _0x35f6f0;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var logger=require(_0xf5f2('0x2'))(_0xf5f2('0x3'));var moment=require(_0xf5f2('0x4'));var BPromise=require(_0xf5f2('0x5'));var rp=require(_0xf5f2('0x6'));var fs=require('fs');var path=require(_0xf5f2('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf5f2('0x8'));module[_0xf5f2('0x9')]=function(_0xad7f65,_0x3eebf6){return _0xad7f65[_0xf5f2('0xa')](_0xf5f2('0xb'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0xf5f2('0xc'),'fields':[_0xf5f2('0xd'),_0xf5f2('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa6b0=['rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','moment','bluebird','request-promise'];(function(_0x435887,_0x108c0c){var _0x1bc041=function(_0x41b180){while(--_0x41b180){_0x435887['push'](_0x435887['shift']());}};_0x1bc041(++_0x108c0c);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x3eb59f,_0xd25c0d){_0x3eb59f=_0x3eb59f-0x0;var _0x3d2819=_0xa6b0[_0x3eb59f];return _0x3d2819;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0a6b('0x2'));var BPromise=require(_0x0a6b('0x3'));var rp=require(_0x0a6b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0a6b('0x5'));var config=require(_0x0a6b('0x6'));var attributes=require(_0x0a6b('0x7'));module[_0x0a6b('0x8')]=function(_0x3dc2b0,_0x3b6967){return _0x3dc2b0[_0x0a6b('0x9')](_0x0a6b('0xa'),attributes,{'tableName':_0x0a6b('0xb'),'paranoid':![],'indexes':[{'name':_0x0a6b('0xc'),'fields':[_0x0a6b('0xd'),_0x0a6b('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index cca5bac..0646b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693b=['../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x1a0e6d,_0x5834d8){var _0x37c3ac=function(_0x262c18){while(--_0x262c18){_0x1a0e6d['push'](_0x1a0e6d['shift']());}};_0x37c3ac(++_0x5834d8);}(_0x693b,0x16a));var _0xb693=function(_0x2ff17c,_0x15f12b){_0x2ff17c=_0x2ff17c-0x0;var _0x506ef2=_0x693b[_0x2ff17c];return _0x506ef2;};'use strict';var _=require(_0xb693('0x0'));var util=require(_0xb693('0x1'));var moment=require(_0xb693('0x2'));var BPromise=require('bluebird');var rs=require(_0xb693('0x3'));var fs=require('fs');var Redis=require(_0xb693('0x4'));var db=require(_0xb693('0x5'))['db'];var utils=require(_0xb693('0x6'));var logger=require('../../config/logger')(_0xb693('0x7'));var config=require(_0xb693('0x8'));var jayson=require(_0xb693('0x9'));var client=jayson['client'][_0xb693('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x36d98d,_0x474073,_0x238f17){return new BPromise(function(_0x153aa7,_0x3cafc3){return client[_0xb693('0xb')](_0x36d98d,_0x238f17)[_0xb693('0xc')](function(_0x3547b2){logger[_0xb693('0xd')](_0xb693('0xe'),_0x474073,_0xb693('0xf'));logger[_0xb693('0x10')](_0xb693('0x11'),_0x474073,'request\x20sent',JSON[_0xb693('0x12')](_0x3547b2));if(_0x3547b2['error']){if(_0x3547b2[_0xb693('0x13')][_0xb693('0x14')]===0x1f4){logger[_0xb693('0x13')](_0xb693('0xe'),_0x474073,_0x3547b2[_0xb693('0x13')][_0xb693('0x15')]);return _0x3cafc3(_0x3547b2[_0xb693('0x13')][_0xb693('0x15')]);}logger[_0xb693('0x13')](_0xb693('0xe'),_0x474073,_0x3547b2['error']['message']);return _0x153aa7(_0x3547b2[_0xb693('0x13')][_0xb693('0x15')]);}else{logger[_0xb693('0xd')](_0xb693('0xe'),_0x474073,_0xb693('0xf'));_0x153aa7(_0x3547b2['result'][_0xb693('0x15')]);}})[_0xb693('0x16')](function(_0x2ff72d){logger[_0xb693('0x13')](_0xb693('0xe'),_0x474073,_0x2ff72d);_0x3cafc3(_0x2ff72d);});});}
\ No newline at end of file
+var _0xfd1b=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfd1b,0x1b6));var _0xbfd1=function(_0x3ddd93,_0x47f328){_0x3ddd93=_0x3ddd93-0x0;var _0x236269=_0xfd1b[_0x3ddd93];return _0x236269;};'use strict';var _=require(_0xbfd1('0x0'));var util=require(_0xbfd1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbfd1('0x2'));var fs=require('fs');var Redis=require(_0xbfd1('0x3'));var db=require(_0xbfd1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbfd1('0x5'))(_0xbfd1('0x6'));var config=require(_0xbfd1('0x7'));var jayson=require(_0xbfd1('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x485e3a,_0x240aea,_0x57362d){return new BPromise(function(_0x3bd645,_0x22f6d6){return client[_0xbfd1('0x9')](_0x485e3a,_0x57362d)[_0xbfd1('0xa')](function(_0x148cfa){logger[_0xbfd1('0xb')](_0xbfd1('0xc'),_0x240aea,_0xbfd1('0xd'));logger[_0xbfd1('0xe')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x240aea,'request\x20sent',JSON[_0xbfd1('0xf')](_0x148cfa));if(_0x148cfa[_0xbfd1('0x10')]){if(_0x148cfa['error'][_0xbfd1('0x11')]===0x1f4){logger[_0xbfd1('0x10')](_0xbfd1('0xc'),_0x240aea,_0x148cfa[_0xbfd1('0x10')][_0xbfd1('0x12')]);return _0x22f6d6(_0x148cfa[_0xbfd1('0x10')][_0xbfd1('0x12')]);}logger['error'](_0xbfd1('0xc'),_0x240aea,_0x148cfa[_0xbfd1('0x10')][_0xbfd1('0x12')]);return _0x3bd645(_0x148cfa['error'][_0xbfd1('0x12')]);}else{logger[_0xbfd1('0xb')](_0xbfd1('0xc'),_0x240aea,_0xbfd1('0xd'));_0x3bd645(_0x148cfa[_0xbfd1('0x13')][_0xbfd1('0x12')]);}})['catch'](function(_0x285231){logger[_0xbfd1('0x10')](_0xbfd1('0xc'),_0x240aea,_0x285231);_0x22f6d6(_0x285231);});});}
\ No newline at end of file
index 1cbb550..27b0ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2a9ac9,_0x2ba5e0){var _0x40fa2d=function(_0x1223fa){while(--_0x1223fa){_0x2a9ac9['push'](_0x2a9ac9['shift']());}};_0x40fa2d(++_0x2ba5e0);}(_0x70e0,0x17b));var _0x070e=function(_0x56de83,_0x172557){_0x56de83=_0x56de83-0x0;var _0x54a3ea=_0x70e0[_0x56de83];return _0x54a3ea;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x2ec727,_0x42bbe0){var _0x598bc9=function(_0xc4542c){while(--_0xc4542c){_0x2ec727['push'](_0x2ec727['shift']());}};_0x598bc9(++_0x42bbe0);}(_0xe706,0xa3));var _0x6e70=function(_0xfcbf57,_0x4b05fd){_0xfcbf57=_0xfcbf57-0x0;var _0x1078fa=_0xe706[_0xfcbf57];return _0x1078fa;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 3758c9d..8f43e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f7c=['state','sequelize','exports','STRING','app.js','INTEGER'];(function(_0x440591,_0x37d8bf){var _0x28507a=function(_0x16296f){while(--_0x16296f){_0x440591['push'](_0x440591['shift']());}};_0x28507a(++_0x37d8bf);}(_0x8f7c,0x133));var _0xc8f7=function(_0x3de80e,_0x5cabca){_0x3de80e=_0x3de80e-0x0;var _0x5629fd=_0x8f7c[_0x3de80e];return _0x5629fd;};'use strict';var Sequelize=require(_0xc8f7('0x0'));module[_0xc8f7('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0xc8f7('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0xc8f7('0x2')],'defaultValue':_0xc8f7('0x3')},'filename':{'type':Sequelize[_0xc8f7('0x2')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0xc8f7('0x4')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0xc8f7('0x2')]},'logo':{'type':Sequelize[_0xc8f7('0x2')]},'state':{'type':Sequelize[_0xc8f7('0x2')],'unique':_0xc8f7('0x5')},'description':{'type':Sequelize[_0xc8f7('0x2')]},'title':{'type':Sequelize[_0xc8f7('0x2')]},'remoteUri':{'type':Sequelize[_0xc8f7('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0xecb7=['STRING','unique_name_and_version','BOOLEAN','state','sequelize'];(function(_0x5800a5,_0x2823f6){var _0x420c85=function(_0x42e2e7){while(--_0x42e2e7){_0x5800a5['push'](_0x5800a5['shift']());}};_0x420c85(++_0x2823f6);}(_0xecb7,0xdb));var _0x7ecb=function(_0x24eacb,_0x4a1bce){_0x24eacb=_0x24eacb-0x0;var _0xb5df1=_0xecb7[_0x24eacb];return _0xb5df1;};'use strict';var Sequelize=require(_0x7ecb('0x0'));module['exports']={'name':{'type':Sequelize[_0x7ecb('0x1')],'allowNull':![],'unique':_0x7ecb('0x2')},'version':{'type':Sequelize[_0x7ecb('0x1')],'allowNull':![],'unique':_0x7ecb('0x2')},'main':{'type':Sequelize['STRING'],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x7ecb('0x1')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x7ecb('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x7ecb('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0x7ecb('0x1')]},'logo':{'type':Sequelize[_0x7ecb('0x1')]},'state':{'type':Sequelize[_0x7ecb('0x1')],'unique':_0x7ecb('0x4')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x7ecb('0x1')]},'remoteUri':{'type':Sequelize[_0x7ecb('0x1')]},'link':{'type':Sequelize[_0x7ecb('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index a7c4188..4b2b0a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a37=['stack','name','send','index','map','Integration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x1a37,0xb4));var _0x71a3=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x1a37[_0x23e7c1];return _0x1add43;};'use strict';var emlformat=require(_0x71a3('0x0'));var rimraf=require(_0x71a3('0x1'));var zipdir=require(_0x71a3('0x2'));var jsonpatch=require(_0x71a3('0x3'));var rp=require(_0x71a3('0x4'));var moment=require(_0x71a3('0x5'));var BPromise=require(_0x71a3('0x6'));var Mustache=require(_0x71a3('0x7'));var util=require(_0x71a3('0x8'));var path=require(_0x71a3('0x9'));var sox=require('sox');var csv=require(_0x71a3('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x71a3('0xb'));var _=require(_0x71a3('0xc'));var squel=require(_0x71a3('0xd'));var crypto=require(_0x71a3('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x71a3('0xf'));var Redis=require(_0x71a3('0x10'));var authService=require(_0x71a3('0x11'));var qs=require(_0x71a3('0x12'));var as=require(_0x71a3('0x13'));var hardwareService=require(_0x71a3('0x14'));var logger=require(_0x71a3('0x15'))(_0x71a3('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x71a3('0x17'))['db'];function respondWithStatusCode(_0x3830cb,_0x27e46d){_0x27e46d=_0x27e46d||0xcc;return function(_0x229134){if(_0x229134){return _0x3830cb[_0x71a3('0x18')](_0x27e46d);}return _0x3830cb[_0x71a3('0x19')](_0x27e46d)[_0x71a3('0x1a')]();};}function respondWithResult(_0x3b256c,_0x4dc4ed){_0x4dc4ed=_0x4dc4ed||0xc8;return function(_0x203ee1){if(_0x203ee1){return _0x3b256c[_0x71a3('0x19')](_0x4dc4ed)['json'](_0x203ee1);}};}function respondWithFilteredResult(_0x1743d7,_0x32591a){return function(_0x59021f){if(_0x59021f){var _0x4aa918=typeof _0x32591a[_0x71a3('0x1b')]===_0x71a3('0x1c')&&typeof _0x32591a[_0x71a3('0x1d')]===_0x71a3('0x1c');var _0x1af1bc=_0x59021f[_0x71a3('0x1e')];var _0x5d4dee=_0x4aa918?0x0:_0x32591a[_0x71a3('0x1b')];var _0x27bfb4=_0x4aa918?_0x59021f['count']:_0x32591a['offset']+_0x32591a[_0x71a3('0x1d')];var _0x250db3;if(_0x27bfb4>=_0x1af1bc){_0x27bfb4=_0x1af1bc;_0x250db3=0xc8;}else{_0x250db3=0xce;}_0x1743d7[_0x71a3('0x19')](_0x250db3);return _0x1743d7[_0x71a3('0x1f')](_0x71a3('0x20'),_0x5d4dee+'-'+_0x27bfb4+'/'+_0x1af1bc)['json'](_0x59021f);}return null;};}function patchUpdates(_0x1ab947){return function(_0x4156e1){try{jsonpatch[_0x71a3('0x21')](_0x4156e1,_0x1ab947,!![]);}catch(_0x3ea036){return BPromise[_0x71a3('0x22')](_0x3ea036);}return _0x4156e1['save']();};}function saveUpdates(_0x1af24b,_0x5bbaee){return function(_0x3bf78e){if(_0x3bf78e){return _0x3bf78e[_0x71a3('0x23')](_0x1af24b)[_0x71a3('0x24')](function(_0x21899d){return _0x21899d;});}return null;};}function removeEntity(_0x452bc4,_0x2847b4){return function(_0x5f33c5){if(_0x5f33c5){return _0x5f33c5[_0x71a3('0x25')]()[_0x71a3('0x24')](function(){_0x452bc4[_0x71a3('0x19')](0xcc)[_0x71a3('0x1a')]();});}};}function handleEntityNotFound(_0xb0f3aa,_0x4fd214){return function(_0x107fbd){if(!_0x107fbd){_0xb0f3aa[_0x71a3('0x18')](0x194);}return _0x107fbd;};}function handleError(_0x4c1a3d,_0x412746){_0x412746=_0x412746||0x1f4;return function(_0x515519){logger[_0x71a3('0x26')](_0x515519[_0x71a3('0x27')]);if(_0x515519[_0x71a3('0x28')]){delete _0x515519[_0x71a3('0x28')];}_0x4c1a3d[_0x71a3('0x19')](_0x412746)[_0x71a3('0x29')](_0x515519);};}exports[_0x71a3('0x2a')]=function(_0x242b85,_0x305eb1){var _0x3fc578={},_0x3ea7aa={},_0x228afa={'count':0x0,'rows':[]};var _0x51cde3=_[_0x71a3('0x2b')](db[_0x71a3('0x2c')][_0x71a3('0x2d')],function(_0x23ae85){return{'name':_0x23ae85['fieldName'],'type':_0x23ae85[_0x71a3('0x2e')][_0x71a3('0x2f')]};});_0x3ea7aa[_0x71a3('0x30')]=_[_0x71a3('0x2b')](_0x51cde3,_0x71a3('0x28'));_0x3ea7aa[_0x71a3('0x31')]=_[_0x71a3('0x32')](_0x242b85['query']);_0x3ea7aa[_0x71a3('0x33')]=_[_0x71a3('0x34')](_0x3ea7aa[_0x71a3('0x30')],_0x3ea7aa[_0x71a3('0x31')]);_0x3fc578[_0x71a3('0x35')]=_[_0x71a3('0x34')](_0x3ea7aa[_0x71a3('0x30')],qs[_0x71a3('0x36')](_0x242b85[_0x71a3('0x31')][_0x71a3('0x36')]));_0x3fc578[_0x71a3('0x35')]=_0x3fc578[_0x71a3('0x35')][_0x71a3('0x37')]?_0x3fc578['attributes']:_0x3ea7aa['model'];if(!_0x242b85[_0x71a3('0x31')][_0x71a3('0x38')]('nolimit')){_0x3fc578[_0x71a3('0x1d')]=qs[_0x71a3('0x1d')](_0x242b85['query'][_0x71a3('0x1d')]);_0x3fc578[_0x71a3('0x1b')]=qs[_0x71a3('0x1b')](_0x242b85[_0x71a3('0x31')][_0x71a3('0x1b')]);}_0x3fc578[_0x71a3('0x39')]=qs[_0x71a3('0x3a')](_0x242b85['query'][_0x71a3('0x3a')]);_0x3fc578[_0x71a3('0x3b')]=qs[_0x71a3('0x33')](_['pick'](_0x242b85[_0x71a3('0x31')],_0x3ea7aa[_0x71a3('0x33')]),_0x51cde3);if(_0x242b85[_0x71a3('0x31')][_0x71a3('0x3c')]){_0x3fc578[_0x71a3('0x3b')]=_['merge'](_0x3fc578['where'],{'$or':_[_0x71a3('0x2b')](_0x51cde3,function(_0x2b3197){if(_0x2b3197[_0x71a3('0x2e')]!==_0x71a3('0x3d')){var _0x36ed2e={};_0x36ed2e[_0x2b3197['name']]={'$like':'%'+_0x242b85[_0x71a3('0x31')][_0x71a3('0x3c')]+'%'};return _0x36ed2e;}})});}_0x3fc578=_[_0x71a3('0x3e')]({},_0x3fc578,_0x242b85['options']);var _0x17c467={'where':_0x3fc578['where']};return db[_0x71a3('0x2c')][_0x71a3('0x1e')](_0x17c467)[_0x71a3('0x24')](function(_0x43c6d1){_0x228afa[_0x71a3('0x1e')]=_0x43c6d1;if(_0x242b85[_0x71a3('0x31')][_0x71a3('0x3f')]){_0x3fc578[_0x71a3('0x40')]=[{'all':!![]}];}return db[_0x71a3('0x2c')][_0x71a3('0x41')](_0x3fc578);})['then'](function(_0xa49846){_0x228afa['rows']=_0xa49846;return _0x228afa;})[_0x71a3('0x24')](respondWithFilteredResult(_0x305eb1,_0x3fc578))[_0x71a3('0x42')](handleError(_0x305eb1,null));};exports[_0x71a3('0x43')]=function(_0x18974c,_0x59c7c9){var _0x412bce={'raw':![],'where':{'id':_0x18974c['params']['id']}},_0x4b4fde={};_0x4b4fde[_0x71a3('0x30')]=_[_0x71a3('0x32')](db[_0x71a3('0x2c')][_0x71a3('0x2d')]);_0x4b4fde['query']=_[_0x71a3('0x32')](_0x18974c[_0x71a3('0x31')]);_0x4b4fde[_0x71a3('0x33')]=_[_0x71a3('0x34')](_0x4b4fde[_0x71a3('0x30')],_0x4b4fde[_0x71a3('0x31')]);_0x412bce[_0x71a3('0x35')]=_[_0x71a3('0x34')](_0x4b4fde[_0x71a3('0x30')],qs[_0x71a3('0x36')](_0x18974c[_0x71a3('0x31')][_0x71a3('0x36')]));_0x412bce[_0x71a3('0x35')]=_0x412bce[_0x71a3('0x35')][_0x71a3('0x37')]?_0x412bce[_0x71a3('0x35')]:_0x4b4fde['model'];if(_0x18974c[_0x71a3('0x31')][_0x71a3('0x3f')]){_0x412bce['include']=[{'all':!![]}];}_0x412bce=_[_0x71a3('0x3e')]({},_0x412bce,_0x18974c[_0x71a3('0x44')]);return db[_0x71a3('0x2c')][_0x71a3('0x45')](_0x412bce)[_0x71a3('0x24')](handleEntityNotFound(_0x59c7c9,null))['then'](respondWithResult(_0x59c7c9,null))['catch'](handleError(_0x59c7c9,null));};exports[_0x71a3('0x46')]=function(_0x4305ee,_0x51d20d){return db[_0x71a3('0x2c')][_0x71a3('0x46')](_0x4305ee[_0x71a3('0x47')],{})[_0x71a3('0x24')](respondWithResult(_0x51d20d,0xc9))[_0x71a3('0x42')](handleError(_0x51d20d,null));};exports[_0x71a3('0x23')]=function(_0x501a62,_0x1c9ba6){if(_0x501a62['body']['id']){delete _0x501a62[_0x71a3('0x47')]['id'];}return db[_0x71a3('0x2c')][_0x71a3('0x45')]({'where':{'id':_0x501a62[_0x71a3('0x48')]['id']}})[_0x71a3('0x24')](handleEntityNotFound(_0x1c9ba6,null))['then'](saveUpdates(_0x501a62[_0x71a3('0x47')],null))[_0x71a3('0x24')](respondWithResult(_0x1c9ba6,null))[_0x71a3('0x42')](handleError(_0x1c9ba6,null));};exports['destroy']=function(_0x6c34,_0x4e6423){return db[_0x71a3('0x2c')][_0x71a3('0x45')]({'where':{'id':_0x6c34['params']['id']}})[_0x71a3('0x24')](handleEntityNotFound(_0x4e6423,null))[_0x71a3('0x24')](removeEntity(_0x4e6423,null))[_0x71a3('0x42')](handleError(_0x4e6423,null));};
\ No newline at end of file
+var _0x4991=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','Integration','includeAll','include','findAll','rows','show','params','keys','find','create','body','catch','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','key','model','query','filters'];(function(_0x4dc7f5,_0x312c14){var _0x3e37db=function(_0x820d0e){while(--_0x820d0e){_0x4dc7f5['push'](_0x4dc7f5['shift']());}};_0x3e37db(++_0x312c14);}(_0x4991,0xf7));var _0x1499=function(_0x17019f,_0x1e2237){_0x17019f=_0x17019f-0x0;var _0x4889c9=_0x4991[_0x17019f];return _0x4889c9;};'use strict';var emlformat=require(_0x1499('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1499('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1499('0x2'));var moment=require(_0x1499('0x3'));var BPromise=require(_0x1499('0x4'));var Mustache=require(_0x1499('0x5'));var util=require(_0x1499('0x6'));var path=require(_0x1499('0x7'));var sox=require(_0x1499('0x8'));var csv=require(_0x1499('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1499('0xa'));var _=require(_0x1499('0xb'));var squel=require(_0x1499('0xc'));var crypto=require(_0x1499('0xd'));var jsforce=require(_0x1499('0xe'));var deskjs=require(_0x1499('0xf'));var toCsv=require(_0x1499('0x9'));var querystring=require(_0x1499('0x10'));var Papa=require('papaparse');var Redis=require(_0x1499('0x11'));var authService=require(_0x1499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1499('0x13'));var hardwareService=require(_0x1499('0x14'));var logger=require('../../config/logger')(_0x1499('0x15'));var utils=require(_0x1499('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3039ce,_0x274bc1){_0x274bc1=_0x274bc1||0xcc;return function(_0x34a928){if(_0x34a928){return _0x3039ce[_0x1499('0x17')](_0x274bc1);}return _0x3039ce[_0x1499('0x18')](_0x274bc1)['end']();};}function respondWithResult(_0x5f34f2,_0x308177){_0x308177=_0x308177||0xc8;return function(_0x4e5195){if(_0x4e5195){return _0x5f34f2[_0x1499('0x18')](_0x308177)[_0x1499('0x19')](_0x4e5195);}};}function respondWithFilteredResult(_0x308318,_0x3ab605){return function(_0x48f654){if(_0x48f654){var _0x1ed43b=typeof _0x3ab605[_0x1499('0x1a')]==='undefined'&&typeof _0x3ab605[_0x1499('0x1b')]===_0x1499('0x1c');var _0x46b364=_0x48f654[_0x1499('0x1d')];var _0x1e45a9=_0x1ed43b?0x0:_0x3ab605[_0x1499('0x1a')];var _0x5b9859=_0x1ed43b?_0x48f654['count']:_0x3ab605['offset']+_0x3ab605[_0x1499('0x1b')];var _0xad534b;if(_0x5b9859>=_0x46b364){_0x5b9859=_0x46b364;_0xad534b=0xc8;}else{_0xad534b=0xce;}_0x308318['status'](_0xad534b);return _0x308318[_0x1499('0x1e')](_0x1499('0x1f'),_0x1e45a9+'-'+_0x5b9859+'/'+_0x46b364)[_0x1499('0x19')](_0x48f654);}return null;};}function patchUpdates(_0x18e4a6){return function(_0x21e887){try{jsonpatch[_0x1499('0x20')](_0x21e887,_0x18e4a6,!![]);}catch(_0x2b0458){return BPromise[_0x1499('0x21')](_0x2b0458);}return _0x21e887[_0x1499('0x22')]();};}function saveUpdates(_0x15bcd4,_0x2bb71f){return function(_0x836081){if(_0x836081){return _0x836081[_0x1499('0x23')](_0x15bcd4)[_0x1499('0x24')](function(_0x4ec57a){return _0x4ec57a;});}return null;};}function removeEntity(_0x1e2c51,_0x2c7f57){return function(_0x5615b4){if(_0x5615b4){return _0x5615b4[_0x1499('0x25')]()[_0x1499('0x24')](function(){_0x1e2c51[_0x1499('0x18')](0xcc)[_0x1499('0x26')]();});}};}function handleEntityNotFound(_0x3968e0,_0x16d036){return function(_0x54f3c2){if(!_0x54f3c2){_0x3968e0['sendStatus'](0x194);}return _0x54f3c2;};}function handleError(_0x12739b,_0x3c9aca){_0x3c9aca=_0x3c9aca||0x1f4;return function(_0x3b9259){logger[_0x1499('0x27')](_0x3b9259[_0x1499('0x28')]);if(_0x3b9259['name']){delete _0x3b9259[_0x1499('0x29')];}_0x12739b['status'](_0x3c9aca)['send'](_0x3b9259);};}exports['index']=function(_0x21d204,_0x103efa){var _0x40932a={},_0x1b460b={},_0x3dad86={'count':0x0,'rows':[]};var _0x388513=_[_0x1499('0x2a')](db['Integration'][_0x1499('0x2b')],function(_0x1a2c99){return{'name':_0x1a2c99[_0x1499('0x2c')],'type':_0x1a2c99['type'][_0x1499('0x2d')]};});_0x1b460b[_0x1499('0x2e')]=_['map'](_0x388513,_0x1499('0x29'));_0x1b460b[_0x1499('0x2f')]=_['keys'](_0x21d204[_0x1499('0x2f')]);_0x1b460b[_0x1499('0x30')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],_0x1b460b[_0x1499('0x2f')]);_0x40932a[_0x1499('0x32')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x21d204[_0x1499('0x2f')][_0x1499('0x33')]));_0x40932a[_0x1499('0x32')]=_0x40932a[_0x1499('0x32')][_0x1499('0x34')]?_0x40932a[_0x1499('0x32')]:_0x1b460b[_0x1499('0x2e')];if(!_0x21d204[_0x1499('0x2f')][_0x1499('0x35')](_0x1499('0x36'))){_0x40932a[_0x1499('0x1b')]=qs['limit'](_0x21d204[_0x1499('0x2f')][_0x1499('0x1b')]);_0x40932a[_0x1499('0x1a')]=qs[_0x1499('0x1a')](_0x21d204[_0x1499('0x2f')][_0x1499('0x1a')]);}_0x40932a[_0x1499('0x37')]=qs[_0x1499('0x38')](_0x21d204[_0x1499('0x2f')][_0x1499('0x38')]);_0x40932a[_0x1499('0x39')]=qs['filters'](_['pick'](_0x21d204[_0x1499('0x2f')],_0x1b460b['filters']),_0x388513);if(_0x21d204[_0x1499('0x2f')]['filter']){_0x40932a[_0x1499('0x39')]=_[_0x1499('0x3a')](_0x40932a[_0x1499('0x39')],{'$or':_[_0x1499('0x2a')](_0x388513,function(_0x531933){if(_0x531933[_0x1499('0x3b')]!=='VIRTUAL'){var _0x2f9c59={};_0x2f9c59[_0x531933[_0x1499('0x29')]]={'$like':'%'+_0x21d204[_0x1499('0x2f')][_0x1499('0x3c')]+'%'};return _0x2f9c59;}})});}_0x40932a=_['merge']({},_0x40932a,_0x21d204[_0x1499('0x3d')]);var _0x815a99={'where':_0x40932a[_0x1499('0x39')]};return db[_0x1499('0x3e')]['count'](_0x815a99)[_0x1499('0x24')](function(_0x4cc411){_0x3dad86[_0x1499('0x1d')]=_0x4cc411;if(_0x21d204[_0x1499('0x2f')][_0x1499('0x3f')]){_0x40932a[_0x1499('0x40')]=[{'all':!![]}];}return db[_0x1499('0x3e')][_0x1499('0x41')](_0x40932a);})[_0x1499('0x24')](function(_0xcb85eb){_0x3dad86[_0x1499('0x42')]=_0xcb85eb;return _0x3dad86;})[_0x1499('0x24')](respondWithFilteredResult(_0x103efa,_0x40932a))['catch'](handleError(_0x103efa,null));};exports[_0x1499('0x43')]=function(_0x5dd36c,_0x2cfdaf){var _0x1af1a1={'raw':![],'where':{'id':_0x5dd36c[_0x1499('0x44')]['id']}},_0x5646cf={};_0x5646cf[_0x1499('0x2e')]=_[_0x1499('0x45')](db[_0x1499('0x3e')][_0x1499('0x2b')]);_0x5646cf['query']=_['keys'](_0x5dd36c[_0x1499('0x2f')]);_0x5646cf[_0x1499('0x30')]=_['intersection'](_0x5646cf[_0x1499('0x2e')],_0x5646cf[_0x1499('0x2f')]);_0x1af1a1['attributes']=_['intersection'](_0x5646cf[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x5dd36c[_0x1499('0x2f')]['fields']));_0x1af1a1[_0x1499('0x32')]=_0x1af1a1[_0x1499('0x32')][_0x1499('0x34')]?_0x1af1a1[_0x1499('0x32')]:_0x5646cf['model'];if(_0x5dd36c[_0x1499('0x2f')][_0x1499('0x3f')]){_0x1af1a1[_0x1499('0x40')]=[{'all':!![]}];}_0x1af1a1=_[_0x1499('0x3a')]({},_0x1af1a1,_0x5dd36c['options']);return db[_0x1499('0x3e')][_0x1499('0x46')](_0x1af1a1)[_0x1499('0x24')](handleEntityNotFound(_0x2cfdaf,null))['then'](respondWithResult(_0x2cfdaf,null))['catch'](handleError(_0x2cfdaf,null));};exports[_0x1499('0x47')]=function(_0x491777,_0x7fa101){return db[_0x1499('0x3e')][_0x1499('0x47')](_0x491777[_0x1499('0x48')],{})[_0x1499('0x24')](respondWithResult(_0x7fa101,0xc9))[_0x1499('0x49')](handleError(_0x7fa101,null));};exports[_0x1499('0x23')]=function(_0x591aa8,_0x420d16){if(_0x591aa8['body']['id']){delete _0x591aa8[_0x1499('0x48')]['id'];}return db[_0x1499('0x3e')]['find']({'where':{'id':_0x591aa8[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x420d16,null))[_0x1499('0x24')](saveUpdates(_0x591aa8['body'],null))[_0x1499('0x24')](respondWithResult(_0x420d16,null))[_0x1499('0x49')](handleError(_0x420d16,null));};exports[_0x1499('0x25')]=function(_0x29ac0f,_0x305599){return db[_0x1499('0x3e')][_0x1499('0x46')]({'where':{'id':_0x29ac0f[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x305599,null))[_0x1499('0x24')](removeEntity(_0x305599,null))['catch'](handleError(_0x305599,null));};
\ No newline at end of file
index 2242d94..b98f884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a34=['lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./integration.attributes','define','Integration'];(function(_0x18b7e3,_0x129720){var _0x113be5=function(_0x468f85){while(--_0x468f85){_0x18b7e3['push'](_0x18b7e3['shift']());}};_0x113be5(++_0x129720);}(_0x0a34,0x17c));var _0x40a3=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x0a34[_0x3d42d8];return _0x27fc41;};'use strict';var _=require(_0x40a3('0x0'));var util=require(_0x40a3('0x1'));var logger=require(_0x40a3('0x2'))(_0x40a3('0x3'));var moment=require(_0x40a3('0x4'));var BPromise=require('bluebird');var rp=require(_0x40a3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x40a3('0x6'));var attributes=require(_0x40a3('0x7'));module['exports']=function(_0x184007,_0xa71e31){return _0x184007[_0x40a3('0x8')](_0x40a3('0x9'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc02f=['bluebird','request-promise','path','rimraf','./integration.attributes','exports','integrations','lodash','util','../../config/logger','api','moment'];(function(_0x4a68bd,_0x702597){var _0x32a81a=function(_0x3b0bd2){while(--_0x3b0bd2){_0x4a68bd['push'](_0x4a68bd['shift']());}};_0x32a81a(++_0x702597);}(_0xc02f,0x1db));var _0xfc02=function(_0x184a0a,_0x4802cb){_0x184a0a=_0x184a0a-0x0;var _0x2af1b4=_0xc02f[_0x184a0a];return _0x2af1b4;};'use strict';var _=require(_0xfc02('0x0'));var util=require(_0xfc02('0x1'));var logger=require(_0xfc02('0x2'))(_0xfc02('0x3'));var moment=require(_0xfc02('0x4'));var BPromise=require(_0xfc02('0x5'));var rp=require(_0xfc02('0x6'));var fs=require('fs');var path=require(_0xfc02('0x7'));var rimraf=require(_0xfc02('0x8'));var config=require('../../config/environment');var attributes=require(_0xfc02('0x9'));module[_0xfc02('0xa')]=function(_0x2dccbe,_0x5dcb0e){return _0x2dccbe['define']('Integration',attributes,{'tableName':_0xfc02('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f87194f..638384d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['then','info','Integration,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x750372,_0x50484d){var _0xdd9d49=function(_0x4ed136){while(--_0x4ed136){_0x750372['push'](_0x750372['shift']());}};_0xdd9d49(++_0x50484d);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xee2f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee2f('0x2'));var db=require(_0xee2f('0x3'))['db'];var utils=require(_0xee2f('0x4'));var logger=require(_0xee2f('0x5'))(_0xee2f('0x6'));var config=require('../../config/environment');var jayson=require(_0xee2f('0x7'));var client=jayson[_0xee2f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1533a0,_0x2e1c8c,_0x5a7975){return new BPromise(function(_0x3c4095,_0x5ea796){return client[_0xee2f('0x9')](_0x1533a0,_0x5a7975)[_0xee2f('0xa')](function(_0x53f7dd){logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,'request\x20sent');logger['debug']('Integration,\x20%s,\x20%s,\x20%s',_0x2e1c8c,'request\x20sent',JSON[_0xee2f('0xd')](_0x53f7dd));if(_0x53f7dd['error']){if(_0x53f7dd['error']['code']===0x1f4){logger[_0xee2f('0xe')](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);return _0x5ea796(_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);}logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd['error'][_0xee2f('0xf')]);return _0x3c4095(_0x53f7dd[_0xee2f('0xe')]['message']);}else{logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,_0xee2f('0x10'));_0x3c4095(_0x53f7dd[_0xee2f('0x11')][_0xee2f('0xf')]);}})['catch'](function(_0x3f6372){logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x3f6372);_0x5ea796(_0x3f6372);});});}
\ No newline at end of file
+var _0xc6ac=['http','request','then','info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5cfbe7,_0x3b797d){var _0x5dda41=function(_0x344040){while(--_0x344040){_0x5cfbe7['push'](_0x5cfbe7['shift']());}};_0x5dda41(++_0x3b797d);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x4c7e7f,_0x5b9533){_0x4c7e7f=_0x4c7e7f-0x0;var _0x3aefb9=_0xc6ac[_0x4c7e7f];return _0x3aefb9;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5f3887,_0x3dd497,_0x11b919){return new BPromise(function(_0xf02261,_0x560cc4){return client[_0xcc6a('0xe')](_0x5f3887,_0x11b919)[_0xcc6a('0xf')](function(_0x7806a0){logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,'request\x20sent');logger[_0xcc6a('0x12')](_0xcc6a('0x13'),_0x3dd497,_0xcc6a('0x14'),JSON['stringify'](_0x7806a0));if(_0x7806a0[_0xcc6a('0x15')]){if(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x16')]===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0x560cc4(_0x7806a0[_0xcc6a('0x15')]['message']);}logger['error'](_0xcc6a('0x11'),_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0xf02261(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);}else{logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,_0xcc6a('0x14'));_0xf02261(_0x7806a0['result']['message']);}})['catch'](function(_0x395a55){logger[_0xcc6a('0x15')](_0xcc6a('0x11'),_0x3dd497,_0x395a55);_0x560cc4(_0x395a55);});});}
\ No newline at end of file
index f4f96fc..0405ca2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['post','create','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x2ffcc9,_0x1cf495){var _0x16c7a3=function(_0x51b6ca){while(--_0x51b6ca){_0x2ffcc9['push'](_0x2ffcc9['shift']());}};_0x16c7a3(++_0x1cf495);}(_0x955f,0x1eb));var _0xf955=function(_0x572afb,_0x470888){_0x572afb=_0x572afb-0x0;var _0x1fb1c2=_0x955f[_0x572afb];return _0x1fb1c2;};'use strict';var multer=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var path=require(_0xf955('0x2'));var timeout=require(_0xf955('0x3'));var express=require(_0xf955('0x4'));var router=express['Router']();var fs_extra=require(_0xf955('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf955('0x6'));var controller=require('./integrationReport.controller');router[_0xf955('0x7')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x9')]);router['get'](_0xf955('0xa'),auth[_0xf955('0x8')](),controller['describe']);router[_0xf955('0x7')](_0xf955('0xb'),auth[_0xf955('0x8')](),controller[_0xf955('0xc')]);router[_0xf955('0xd')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0xe')]);router['put'](_0xf955('0xb'),auth['isAuthenticated'](),controller[_0xf955('0xf')]);router[_0xf955('0x10')](_0xf955('0xb'),auth['isAuthenticated'](),controller[_0xf955('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x6d38=['path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','/:id','create','update','destroy','exports','util'];(function(_0x1323f5,_0x10c6c3){var _0x17597e=function(_0x484458){while(--_0x484458){_0x1323f5['push'](_0x1323f5['shift']());}};_0x17597e(++_0x10c6c3);}(_0x6d38,0x1ef));var _0x86d3=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6d38[_0x31e29a];return _0x32d892;};'use strict';var multer=require('multer');var util=require(_0x86d3('0x0'));var path=require(_0x86d3('0x1'));var timeout=require(_0x86d3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x86d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var controller=require(_0x86d3('0x6'));router['get']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0x8')]);router[_0x86d3('0x9')](_0x86d3('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x86d3('0x9')](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['show']);router['post']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0xc')]);router['put']('/:id',auth[_0x86d3('0x7')](),controller[_0x86d3('0xd')]);router['delete'](_0x86d3('0xb'),auth['isAuthenticated'](),controller[_0x86d3('0xe')]);module[_0x86d3('0xf')]=router;
\ No newline at end of file
index 407ca63..aa5193e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90ba=['FAILED','sequelize','exports','STRING','INTEGER','BOOLEAN','DATE','TEXT','ENUM','SENT','RECEIVED'];(function(_0x1eda0d,_0x3a7ba8){var _0x37848d=function(_0x93fe44){while(--_0x93fe44){_0x1eda0d['push'](_0x1eda0d['shift']());}};_0x37848d(++_0x3a7ba8);}(_0x90ba,0xe8));var _0xa90b=function(_0x34fb3d,_0x553d58){_0x34fb3d=_0x34fb3d-0x0;var _0x89649b=_0x90ba[_0x34fb3d];return _0x89649b;};'use strict';var Sequelize=require(_0xa90b('0x0'));module[_0xa90b('0x1')]={'integration':{'type':Sequelize[_0xa90b('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0xa90b('0x2')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0xa90b('0x3')]},'contacts':{'type':Sequelize[_0xa90b('0x2')]},'uniqueid':{'type':Sequelize[_0xa90b('0x2')]},'calleridnum':{'type':Sequelize[_0xa90b('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xa90b('0x2')]},'interface':{'type':Sequelize[_0xa90b('0x2')]},'membername':{'type':Sequelize[_0xa90b('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xa90b('0x3')]},'agentcomplete':{'type':Sequelize[_0xa90b('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xa90b('0x5')]},'talktime':{'type':Sequelize[_0xa90b('0x3')]},'agentacw':{'type':Sequelize[_0xa90b('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xa90b('0x3')]},'reason':{'type':Sequelize[_0xa90b('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xa90b('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0xa90b('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xa90b('0x2')]},'channel':{'type':Sequelize[_0xa90b('0x2')]},'channelstate':{'type':Sequelize[_0xa90b('0x3')]},'channelstatedesc':{'type':Sequelize[_0xa90b('0x2')]},'connectedlinenum':{'type':Sequelize[_0xa90b('0x2')]},'connectedlinename':{'type':Sequelize[_0xa90b('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xa90b('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xa90b('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xa90b('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xa90b('0x2')]},'destcalleridnum':{'type':Sequelize[_0xa90b('0x2')]},'destcalleridname':{'type':Sequelize[_0xa90b('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xa90b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xa90b('0x2')]},'destlanguage':{'type':Sequelize[_0xa90b('0x2')]},'destaccountcode':{'type':Sequelize[_0xa90b('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xa90b('0x2')]},'destuniqueid':{'type':Sequelize[_0xa90b('0x2')]},'messageId':{'type':Sequelize[_0xa90b('0x2')]},'inReplyTo':{'type':Sequelize[_0xa90b('0x2')]},'subject':{'type':Sequelize[_0xa90b('0x2')]},'from':{'type':Sequelize[_0xa90b('0x2')]},'to':{'type':Sequelize[_0xa90b('0x2')]},'cc':{'type':Sequelize[_0xa90b('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0xa90b('0x6')]},'text':{'type':Sequelize[_0xa90b('0x6')]},'status':{'type':Sequelize[_0xa90b('0x7')](_0xa90b('0x8'),'SENDING',_0xa90b('0x9'),_0xa90b('0xa'))},'url':{'type':Sequelize[_0xa90b('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xa90b('0x2')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x9a9f=['sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED','FAILED'];(function(_0xf0bcac,_0x531755){var _0x4e4c65=function(_0x35a77a){while(--_0x35a77a){_0xf0bcac['push'](_0xf0bcac['shift']());}};_0x4e4c65(++_0x531755);}(_0x9a9f,0x113));var _0xf9a9=function(_0x11b9c9,_0x37fced){_0x11b9c9=_0x11b9c9-0x0;var _0x4509cb=_0x9a9f[_0x11b9c9];return _0x4509cb;};'use strict';var Sequelize=require(_0xf9a9('0x0'));module[_0xf9a9('0x1')]={'integration':{'type':Sequelize[_0xf9a9('0x2')]},'eventChannel':{'type':Sequelize[_0xf9a9('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0xf9a9('0x2')]},'integrationId':{'type':Sequelize[_0xf9a9('0x3')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xf9a9('0x2')]},'calleridnum':{'type':Sequelize[_0xf9a9('0x2')]},'calleridname':{'type':Sequelize[_0xf9a9('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xf9a9('0x2')]},'membername':{'type':Sequelize[_0xf9a9('0x2')]},'agentcalledAt':{'type':Sequelize[_0xf9a9('0x4')]},'agentconnectAt':{'type':Sequelize[_0xf9a9('0x4')]},'holdtime':{'type':Sequelize[_0xf9a9('0x3')]},'agentcomplete':{'type':Sequelize[_0xf9a9('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xf9a9('0x4')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xf9a9('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf9a9('0x3')]},'reason':{'type':Sequelize[_0xf9a9('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xf9a9('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xf9a9('0x4')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xf9a9('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xf9a9('0x2')]},'connectedlinenum':{'type':Sequelize[_0xf9a9('0x2')]},'connectedlinename':{'type':Sequelize[_0xf9a9('0x2')]},'language':{'type':Sequelize[_0xf9a9('0x2')]},'accountcode':{'type':Sequelize[_0xf9a9('0x2')]},'context':{'type':Sequelize[_0xf9a9('0x2')]},'exten':{'type':Sequelize[_0xf9a9('0x2')]},'priority':{'type':Sequelize[_0xf9a9('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xf9a9('0x2')]},'destcalleridname':{'type':Sequelize[_0xf9a9('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xf9a9('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf9a9('0x2')]},'destlanguage':{'type':Sequelize[_0xf9a9('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xf9a9('0x2')]},'destexten':{'type':Sequelize[_0xf9a9('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xf9a9('0x2')]},'messageId':{'type':Sequelize[_0xf9a9('0x2')]},'inReplyTo':{'type':Sequelize[_0xf9a9('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0xf9a9('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xf9a9('0x2')]},'attachment':{'type':Sequelize[_0xf9a9('0x6')]},'html':{'type':Sequelize[_0xf9a9('0x6')]},'text':{'type':Sequelize[_0xf9a9('0x6')]},'status':{'type':Sequelize[_0xf9a9('0x7')]('SENT',_0xf9a9('0x8'),_0xf9a9('0x9'),_0xf9a9('0xa'))},'url':{'type':Sequelize[_0xf9a9('0x2')]},'app':{'type':Sequelize[_0xf9a9('0x2')]},'appdata':{'type':Sequelize[_0xf9a9('0x2')]},'projectId':{'type':Sequelize[_0xf9a9('0x3')]}};
\ No newline at end of file
index 49c9299..7a08b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb03=['then','error','stack','name','map','IntegrationReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','sort','where','filters','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','length','find','catch','create','body','destroy','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','save','update'];(function(_0x1675dd,_0x4163d7){var _0x5bbfc1=function(_0x395294){while(--_0x395294){_0x1675dd['push'](_0x1675dd['shift']());}};_0x5bbfc1(++_0x4163d7);}(_0xcb03,0x6a));var _0x3cb0=function(_0x286444,_0x2343de){_0x286444=_0x286444-0x0;var _0x1b2f08=_0xcb03[_0x286444];return _0x1b2f08;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3cb0('0x0'));var jsonpatch=require(_0x3cb0('0x1'));var rp=require(_0x3cb0('0x2'));var moment=require(_0x3cb0('0x3'));var BPromise=require(_0x3cb0('0x4'));var Mustache=require(_0x3cb0('0x5'));var util=require(_0x3cb0('0x6'));var path=require(_0x3cb0('0x7'));var sox=require(_0x3cb0('0x8'));var csv=require(_0x3cb0('0x9'));var ejs=require(_0x3cb0('0xa'));var fs=require('fs');var fs_extra=require(_0x3cb0('0xb'));var _=require(_0x3cb0('0xc'));var squel=require('squel');var crypto=require(_0x3cb0('0xd'));var jsforce=require(_0x3cb0('0xe'));var deskjs=require(_0x3cb0('0xf'));var toCsv=require(_0x3cb0('0x9'));var querystring=require(_0x3cb0('0x10'));var Papa=require(_0x3cb0('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3cb0('0x12'));var as=require(_0x3cb0('0x13'));var hardwareService=require(_0x3cb0('0x14'));var logger=require(_0x3cb0('0x15'))(_0x3cb0('0x16'));var utils=require(_0x3cb0('0x17'));var config=require(_0x3cb0('0x18'));var licenseUtil=require(_0x3cb0('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23b10c,_0x1fa73e){_0x1fa73e=_0x1fa73e||0xcc;return function(_0x3638ae){if(_0x3638ae){return _0x23b10c[_0x3cb0('0x1a')](_0x1fa73e);}return _0x23b10c[_0x3cb0('0x1b')](_0x1fa73e)[_0x3cb0('0x1c')]();};}function respondWithResult(_0xabb009,_0x59d89f){_0x59d89f=_0x59d89f||0xc8;return function(_0xa495e0){if(_0xa495e0){return _0xabb009['status'](_0x59d89f)[_0x3cb0('0x1d')](_0xa495e0);}};}function respondWithFilteredResult(_0x397725,_0x23a1cd){return function(_0x1b5538){if(_0x1b5538){var _0x4e91bf=typeof _0x23a1cd[_0x3cb0('0x1e')]===_0x3cb0('0x1f')&&typeof _0x23a1cd['limit']===_0x3cb0('0x1f');var _0x31eb0a=_0x1b5538[_0x3cb0('0x20')];var _0x41bf3d=_0x4e91bf?0x0:_0x23a1cd['offset'];var _0x1e8e38=_0x4e91bf?_0x1b5538[_0x3cb0('0x20')]:_0x23a1cd['offset']+_0x23a1cd[_0x3cb0('0x21')];var _0x50ba25;if(_0x1e8e38>=_0x31eb0a){_0x1e8e38=_0x31eb0a;_0x50ba25=0xc8;}else{_0x50ba25=0xce;}_0x397725[_0x3cb0('0x1b')](_0x50ba25);return _0x397725[_0x3cb0('0x22')](_0x3cb0('0x23'),_0x41bf3d+'-'+_0x1e8e38+'/'+_0x31eb0a)[_0x3cb0('0x1d')](_0x1b5538);}return null;};}function patchUpdates(_0x3474ed){return function(_0x324bec){try{jsonpatch['apply'](_0x324bec,_0x3474ed,!![]);}catch(_0x25414c){return BPromise['reject'](_0x25414c);}return _0x324bec[_0x3cb0('0x24')]();};}function saveUpdates(_0x2a833a,_0x1ebc1b){return function(_0x3225a9){if(_0x3225a9){return _0x3225a9[_0x3cb0('0x25')](_0x2a833a)[_0x3cb0('0x26')](function(_0x259937){return _0x259937;});}return null;};}function removeEntity(_0x1b35dc,_0x460878){return function(_0x38a681){if(_0x38a681){return _0x38a681['destroy']()[_0x3cb0('0x26')](function(){_0x1b35dc[_0x3cb0('0x1b')](0xcc)[_0x3cb0('0x1c')]();});}};}function handleEntityNotFound(_0xd8c9d9,_0x389263){return function(_0x446516){if(!_0x446516){_0xd8c9d9['sendStatus'](0x194);}return _0x446516;};}function handleError(_0x4d94cb,_0x2d92e5){_0x2d92e5=_0x2d92e5||0x1f4;return function(_0x4a4402){logger[_0x3cb0('0x27')](_0x4a4402[_0x3cb0('0x28')]);if(_0x4a4402[_0x3cb0('0x29')]){delete _0x4a4402['name'];}_0x4d94cb[_0x3cb0('0x1b')](_0x2d92e5)['send'](_0x4a4402);};}exports['index']=function(_0x5265ce,_0x2ea11b){var _0x4304c4={},_0x38a4a3={},_0x39b37d={'count':0x0,'rows':[]};var _0xdd660c=_[_0x3cb0('0x2a')](db[_0x3cb0('0x2b')][_0x3cb0('0x2c')],function(_0x2a22c0){return{'name':_0x2a22c0[_0x3cb0('0x2d')],'type':_0x2a22c0[_0x3cb0('0x2e')]['key']};});_0x38a4a3[_0x3cb0('0x2f')]=_[_0x3cb0('0x2a')](_0xdd660c,_0x3cb0('0x29'));_0x38a4a3[_0x3cb0('0x30')]=_[_0x3cb0('0x31')](_0x5265ce[_0x3cb0('0x30')]);_0x38a4a3['filters']=_[_0x3cb0('0x32')](_0x38a4a3[_0x3cb0('0x2f')],_0x38a4a3[_0x3cb0('0x30')]);_0x4304c4[_0x3cb0('0x33')]=_[_0x3cb0('0x32')](_0x38a4a3[_0x3cb0('0x2f')],qs[_0x3cb0('0x34')](_0x5265ce[_0x3cb0('0x30')][_0x3cb0('0x34')]));_0x4304c4[_0x3cb0('0x33')]=_0x4304c4[_0x3cb0('0x33')]['length']?_0x4304c4[_0x3cb0('0x33')]:_0x38a4a3[_0x3cb0('0x2f')];if(!_0x5265ce[_0x3cb0('0x30')][_0x3cb0('0x35')]('nolimit')){_0x4304c4[_0x3cb0('0x21')]=qs[_0x3cb0('0x21')](_0x5265ce[_0x3cb0('0x30')][_0x3cb0('0x21')]);_0x4304c4[_0x3cb0('0x1e')]=qs[_0x3cb0('0x1e')](_0x5265ce[_0x3cb0('0x30')][_0x3cb0('0x1e')]);}_0x4304c4['order']=qs[_0x3cb0('0x36')](_0x5265ce['query'][_0x3cb0('0x36')]);_0x4304c4[_0x3cb0('0x37')]=qs[_0x3cb0('0x38')](_['pick'](_0x5265ce[_0x3cb0('0x30')],_0x38a4a3[_0x3cb0('0x38')]),_0xdd660c);if(_0x5265ce['query']['filter']){_0x4304c4[_0x3cb0('0x37')]=_[_0x3cb0('0x39')](_0x4304c4['where'],{'$or':_[_0x3cb0('0x2a')](_0xdd660c,function(_0x5a7af5){if(_0x5a7af5[_0x3cb0('0x2e')]!==_0x3cb0('0x3a')){var _0x244cfd={};_0x244cfd[_0x5a7af5[_0x3cb0('0x29')]]={'$like':'%'+_0x5265ce[_0x3cb0('0x30')]['filter']+'%'};return _0x244cfd;}})});}_0x4304c4=_['merge']({},_0x4304c4,_0x5265ce[_0x3cb0('0x3b')]);var _0x4b4528={'where':_0x4304c4['where']};return db['IntegrationReport'][_0x3cb0('0x20')](_0x4b4528)[_0x3cb0('0x26')](function(_0x234397){_0x39b37d[_0x3cb0('0x20')]=_0x234397;if(_0x5265ce[_0x3cb0('0x30')][_0x3cb0('0x3c')]){_0x4304c4[_0x3cb0('0x3d')]=[{'all':!![]}];}return db[_0x3cb0('0x2b')][_0x3cb0('0x3e')](_0x4304c4);})[_0x3cb0('0x26')](function(_0x151268){_0x39b37d[_0x3cb0('0x3f')]=_0x151268;return _0x39b37d;})['then'](respondWithFilteredResult(_0x2ea11b,_0x4304c4))['catch'](handleError(_0x2ea11b,null));};exports['show']=function(_0x40fb53,_0x228557){var _0x508e88={'raw':![],'where':{'id':_0x40fb53[_0x3cb0('0x40')]['id']}},_0x3e2a65={};_0x3e2a65[_0x3cb0('0x2f')]=_['keys'](db[_0x3cb0('0x2b')]['rawAttributes']);_0x3e2a65[_0x3cb0('0x30')]=_[_0x3cb0('0x31')](_0x40fb53[_0x3cb0('0x30')]);_0x3e2a65[_0x3cb0('0x38')]=_[_0x3cb0('0x32')](_0x3e2a65[_0x3cb0('0x2f')],_0x3e2a65[_0x3cb0('0x30')]);_0x508e88[_0x3cb0('0x33')]=_[_0x3cb0('0x32')](_0x3e2a65[_0x3cb0('0x2f')],qs['fields'](_0x40fb53['query']['fields']));_0x508e88['attributes']=_0x508e88[_0x3cb0('0x33')][_0x3cb0('0x41')]?_0x508e88[_0x3cb0('0x33')]:_0x3e2a65[_0x3cb0('0x2f')];if(_0x40fb53['query'][_0x3cb0('0x3c')]){_0x508e88[_0x3cb0('0x3d')]=[{'all':!![]}];}_0x508e88=_[_0x3cb0('0x39')]({},_0x508e88,_0x40fb53[_0x3cb0('0x3b')]);return db[_0x3cb0('0x2b')][_0x3cb0('0x42')](_0x508e88)['then'](handleEntityNotFound(_0x228557,null))[_0x3cb0('0x26')](respondWithResult(_0x228557,null))[_0x3cb0('0x43')](handleError(_0x228557,null));};exports['create']=function(_0x1a4561,_0x4a106b){return db['IntegrationReport'][_0x3cb0('0x44')](_0x1a4561['body'],{})[_0x3cb0('0x26')](respondWithResult(_0x4a106b,0xc9))[_0x3cb0('0x43')](handleError(_0x4a106b,null));};exports['update']=function(_0x35e142,_0xb38dc3){if(_0x35e142[_0x3cb0('0x45')]['id']){delete _0x35e142['body']['id'];}return db[_0x3cb0('0x2b')][_0x3cb0('0x42')]({'where':{'id':_0x35e142[_0x3cb0('0x40')]['id']}})[_0x3cb0('0x26')](handleEntityNotFound(_0xb38dc3,null))[_0x3cb0('0x26')](saveUpdates(_0x35e142[_0x3cb0('0x45')],null))[_0x3cb0('0x26')](respondWithResult(_0xb38dc3,null))[_0x3cb0('0x43')](handleError(_0xb38dc3,null));};exports[_0x3cb0('0x46')]=function(_0x474ceb,_0x59482b){return db[_0x3cb0('0x2b')][_0x3cb0('0x42')]({'where':{'id':_0x474ceb[_0x3cb0('0x40')]['id']}})[_0x3cb0('0x26')](handleEntityNotFound(_0x59482b,null))[_0x3cb0('0x26')](removeEntity(_0x59482b,null))[_0x3cb0('0x43')](handleError(_0x59482b,null));};exports['describe']=function(_0x672bb5,_0x3af3d0){return db['IntegrationReport'][_0x3cb0('0x47')]()[_0x3cb0('0x26')](respondWithResult(_0x3af3d0,null))[_0x3cb0('0x43')](handleError(_0x3af3d0,null));};
\ No newline at end of file
+var _0x24f7=['../../mysqldb','status','end','limit','undefined','count','offset','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','IntegrationReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','update','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment'];(function(_0x3ed054,_0x4d4f16){var _0x16dd95=function(_0xc0c19c){while(--_0xc0c19c){_0x3ed054['push'](_0x3ed054['shift']());}};_0x16dd95(++_0x4d4f16);}(_0x24f7,0xd2));var _0x724f=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x24f7[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x724f('0x0'));var zipdir=require(_0x724f('0x1'));var jsonpatch=require(_0x724f('0x2'));var rp=require(_0x724f('0x3'));var moment=require(_0x724f('0x4'));var BPromise=require(_0x724f('0x5'));var Mustache=require(_0x724f('0x6'));var util=require(_0x724f('0x7'));var path=require(_0x724f('0x8'));var sox=require(_0x724f('0x9'));var csv=require(_0x724f('0xa'));var ejs=require(_0x724f('0xb'));var fs=require('fs');var fs_extra=require(_0x724f('0xc'));var _=require(_0x724f('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x724f('0xe'));var deskjs=require(_0x724f('0xf'));var toCsv=require(_0x724f('0xa'));var querystring=require(_0x724f('0x10'));var Papa=require('papaparse');var Redis=require(_0x724f('0x11'));var authService=require(_0x724f('0x12'));var qs=require(_0x724f('0x13'));var as=require(_0x724f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x724f('0x15'));var utils=require(_0x724f('0x16'));var config=require(_0x724f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x724f('0x18'))['db'];function respondWithStatusCode(_0x4073d7,_0x22b72f){_0x22b72f=_0x22b72f||0xcc;return function(_0x23d051){if(_0x23d051){return _0x4073d7['sendStatus'](_0x22b72f);}return _0x4073d7[_0x724f('0x19')](_0x22b72f)[_0x724f('0x1a')]();};}function respondWithResult(_0xef2caa,_0x55c3db){_0x55c3db=_0x55c3db||0xc8;return function(_0x1bd2fd){if(_0x1bd2fd){return _0xef2caa[_0x724f('0x19')](_0x55c3db)['json'](_0x1bd2fd);}};}function respondWithFilteredResult(_0x119888,_0x5be65e){return function(_0x4ac03a){if(_0x4ac03a){var _0x5aa7ab=typeof _0x5be65e['offset']==='undefined'&&typeof _0x5be65e[_0x724f('0x1b')]===_0x724f('0x1c');var _0x331b43=_0x4ac03a[_0x724f('0x1d')];var _0x37c9be=_0x5aa7ab?0x0:_0x5be65e[_0x724f('0x1e')];var _0x56f4ee=_0x5aa7ab?_0x4ac03a[_0x724f('0x1d')]:_0x5be65e[_0x724f('0x1e')]+_0x5be65e[_0x724f('0x1b')];var _0x17120c;if(_0x56f4ee>=_0x331b43){_0x56f4ee=_0x331b43;_0x17120c=0xc8;}else{_0x17120c=0xce;}_0x119888[_0x724f('0x19')](_0x17120c);return _0x119888['set']('Content-Range',_0x37c9be+'-'+_0x56f4ee+'/'+_0x331b43)[_0x724f('0x1f')](_0x4ac03a);}return null;};}function patchUpdates(_0x4fbf68){return function(_0x4caff8){try{jsonpatch[_0x724f('0x20')](_0x4caff8,_0x4fbf68,!![]);}catch(_0x3e488b){return BPromise[_0x724f('0x21')](_0x3e488b);}return _0x4caff8[_0x724f('0x22')]();};}function saveUpdates(_0x985222,_0x3198f8){return function(_0x4e9ebf){if(_0x4e9ebf){return _0x4e9ebf['update'](_0x985222)[_0x724f('0x23')](function(_0x2df07e){return _0x2df07e;});}return null;};}function removeEntity(_0x1a9068,_0x2ce946){return function(_0x45cd19){if(_0x45cd19){return _0x45cd19[_0x724f('0x24')]()['then'](function(){_0x1a9068[_0x724f('0x19')](0xcc)[_0x724f('0x1a')]();});}};}function handleEntityNotFound(_0x3e0151,_0xf6b735){return function(_0x363884){if(!_0x363884){_0x3e0151[_0x724f('0x25')](0x194);}return _0x363884;};}function handleError(_0x1fff9b,_0x29259b){_0x29259b=_0x29259b||0x1f4;return function(_0x735ecf){logger[_0x724f('0x26')](_0x735ecf[_0x724f('0x27')]);if(_0x735ecf[_0x724f('0x28')]){delete _0x735ecf['name'];}_0x1fff9b[_0x724f('0x19')](_0x29259b)[_0x724f('0x29')](_0x735ecf);};}exports[_0x724f('0x2a')]=function(_0x51017b,_0x103663){var _0x182674={},_0x3b165f={},_0xc8b168={'count':0x0,'rows':[]};var _0x200631=_[_0x724f('0x2b')](db['IntegrationReport']['rawAttributes'],function(_0x9740a0){return{'name':_0x9740a0[_0x724f('0x2c')],'type':_0x9740a0[_0x724f('0x2d')]['key']};});_0x3b165f['model']=_[_0x724f('0x2b')](_0x200631,_0x724f('0x28'));_0x3b165f[_0x724f('0x2e')]=_[_0x724f('0x2f')](_0x51017b[_0x724f('0x2e')]);_0x3b165f['filters']=_[_0x724f('0x30')](_0x3b165f[_0x724f('0x31')],_0x3b165f['query']);_0x182674[_0x724f('0x32')]=_['intersection'](_0x3b165f[_0x724f('0x31')],qs[_0x724f('0x33')](_0x51017b['query'][_0x724f('0x33')]));_0x182674['attributes']=_0x182674[_0x724f('0x32')][_0x724f('0x34')]?_0x182674[_0x724f('0x32')]:_0x3b165f['model'];if(!_0x51017b['query'][_0x724f('0x35')](_0x724f('0x36'))){_0x182674[_0x724f('0x1b')]=qs[_0x724f('0x1b')](_0x51017b[_0x724f('0x2e')]['limit']);_0x182674[_0x724f('0x1e')]=qs['offset'](_0x51017b[_0x724f('0x2e')][_0x724f('0x1e')]);}_0x182674[_0x724f('0x37')]=qs['sort'](_0x51017b['query'][_0x724f('0x38')]);_0x182674['where']=qs[_0x724f('0x39')](_[_0x724f('0x3a')](_0x51017b[_0x724f('0x2e')],_0x3b165f[_0x724f('0x39')]),_0x200631);if(_0x51017b[_0x724f('0x2e')]['filter']){_0x182674[_0x724f('0x3b')]=_[_0x724f('0x3c')](_0x182674[_0x724f('0x3b')],{'$or':_[_0x724f('0x2b')](_0x200631,function(_0x3d3cba){if(_0x3d3cba[_0x724f('0x2d')]!==_0x724f('0x3d')){var _0x166877={};_0x166877[_0x3d3cba[_0x724f('0x28')]]={'$like':'%'+_0x51017b[_0x724f('0x2e')][_0x724f('0x3e')]+'%'};return _0x166877;}})});}_0x182674=_[_0x724f('0x3c')]({},_0x182674,_0x51017b[_0x724f('0x3f')]);var _0x1ddf7f={'where':_0x182674['where']};return db[_0x724f('0x40')][_0x724f('0x1d')](_0x1ddf7f)[_0x724f('0x23')](function(_0xdade03){_0xc8b168[_0x724f('0x1d')]=_0xdade03;if(_0x51017b['query'][_0x724f('0x41')]){_0x182674[_0x724f('0x42')]=[{'all':!![]}];}return db[_0x724f('0x40')][_0x724f('0x43')](_0x182674);})[_0x724f('0x23')](function(_0xa9897c){_0xc8b168[_0x724f('0x44')]=_0xa9897c;return _0xc8b168;})[_0x724f('0x23')](respondWithFilteredResult(_0x103663,_0x182674))[_0x724f('0x45')](handleError(_0x103663,null));};exports[_0x724f('0x46')]=function(_0x1885f3,_0x38f4d2){var _0x489268={'raw':![],'where':{'id':_0x1885f3[_0x724f('0x47')]['id']}},_0x385150={};_0x385150['model']=_[_0x724f('0x2f')](db[_0x724f('0x40')][_0x724f('0x48')]);_0x385150[_0x724f('0x2e')]=_[_0x724f('0x2f')](_0x1885f3[_0x724f('0x2e')]);_0x385150['filters']=_[_0x724f('0x30')](_0x385150['model'],_0x385150[_0x724f('0x2e')]);_0x489268['attributes']=_['intersection'](_0x385150[_0x724f('0x31')],qs['fields'](_0x1885f3[_0x724f('0x2e')][_0x724f('0x33')]));_0x489268[_0x724f('0x32')]=_0x489268['attributes'][_0x724f('0x34')]?_0x489268[_0x724f('0x32')]:_0x385150[_0x724f('0x31')];if(_0x1885f3[_0x724f('0x2e')]['includeAll']){_0x489268['include']=[{'all':!![]}];}_0x489268=_[_0x724f('0x3c')]({},_0x489268,_0x1885f3[_0x724f('0x3f')]);return db[_0x724f('0x40')]['find'](_0x489268)[_0x724f('0x23')](handleEntityNotFound(_0x38f4d2,null))[_0x724f('0x23')](respondWithResult(_0x38f4d2,null))[_0x724f('0x45')](handleError(_0x38f4d2,null));};exports[_0x724f('0x49')]=function(_0x3448fb,_0x54b99f){return db['IntegrationReport'][_0x724f('0x49')](_0x3448fb[_0x724f('0x4a')],{})[_0x724f('0x23')](respondWithResult(_0x54b99f,0xc9))[_0x724f('0x45')](handleError(_0x54b99f,null));};exports[_0x724f('0x4b')]=function(_0x12df5f,_0x4f6713){if(_0x12df5f[_0x724f('0x4a')]['id']){delete _0x12df5f[_0x724f('0x4a')]['id'];}return db[_0x724f('0x40')][_0x724f('0x4c')]({'where':{'id':_0x12df5f['params']['id']}})[_0x724f('0x23')](handleEntityNotFound(_0x4f6713,null))[_0x724f('0x23')](saveUpdates(_0x12df5f[_0x724f('0x4a')],null))['then'](respondWithResult(_0x4f6713,null))[_0x724f('0x45')](handleError(_0x4f6713,null));};exports[_0x724f('0x24')]=function(_0x5df951,_0x2056e1){return db['IntegrationReport'][_0x724f('0x4c')]({'where':{'id':_0x5df951[_0x724f('0x47')]['id']}})[_0x724f('0x23')](handleEntityNotFound(_0x2056e1,null))['then'](removeEntity(_0x2056e1,null))[_0x724f('0x45')](handleError(_0x2056e1,null));};exports[_0x724f('0x4d')]=function(_0x1e7689,_0x397fba){return db[_0x724f('0x40')][_0x724f('0x4d')]()[_0x724f('0x23')](respondWithResult(_0x397fba,null))[_0x724f('0x45')](handleError(_0x397fba,null));};
\ No newline at end of file
index 4e32157..1a08857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4ff=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','lodash','util','../../config/logger','api'];(function(_0x10d0f0,_0x1eba3d){var _0x93e308=function(_0x388548){while(--_0x388548){_0x10d0f0['push'](_0x10d0f0['shift']());}};_0x93e308(++_0x1eba3d);}(_0xf4ff,0x1a0));var _0xff4f=function(_0x3d3736,_0x3529f8){_0x3d3736=_0x3d3736-0x0;var _0x81add8=_0xf4ff[_0x3d3736];return _0x81add8;};'use strict';var _=require(_0xff4f('0x0'));var util=require(_0xff4f('0x1'));var logger=require(_0xff4f('0x2'))(_0xff4f('0x3'));var moment=require(_0xff4f('0x4'));var BPromise=require(_0xff4f('0x5'));var rp=require(_0xff4f('0x6'));var fs=require('fs');var path=require(_0xff4f('0x7'));var rimraf=require(_0xff4f('0x8'));var config=require(_0xff4f('0x9'));var attributes=require('./integrationReport.attributes');module[_0xff4f('0xa')]=function(_0x2685a4,_0x118c7b){return _0x2685a4[_0xff4f('0xb')]('IntegrationReport',attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b88=['report_integration','lodash','util','api','moment','request-promise','rimraf','./integrationReport.attributes','exports','define','IntegrationReport'];(function(_0x17a91f,_0x34ba10){var _0x151e31=function(_0x33192a){while(--_0x33192a){_0x17a91f['push'](_0x17a91f['shift']());}};_0x151e31(++_0x34ba10);}(_0x0b88,0x1c4));var _0x80b8=function(_0x27e559,_0x2107ce){_0x27e559=_0x27e559-0x0;var _0x35a8a1=_0x0b88[_0x27e559];return _0x35a8a1;};'use strict';var _=require(_0x80b8('0x0'));var util=require(_0x80b8('0x1'));var logger=require('../../config/logger')(_0x80b8('0x2'));var moment=require(_0x80b8('0x3'));var BPromise=require('bluebird');var rp=require(_0x80b8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x80b8('0x5'));var config=require('../../config/environment');var attributes=require(_0x80b8('0x6'));module[_0x80b8('0x7')]=function(_0x5d58a2,_0x8f92a7){return _0x5d58a2[_0x80b8('0x8')](_0x80b8('0x9'),attributes,{'tableName':_0x80b8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7feab84..f6094af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x1b4c04,_0x8d961d){var _0x374f5d=function(_0x11dc31){while(--_0x11dc31){_0x1b4c04['push'](_0x1b4c04['shift']());}};_0x374f5d(++_0x8d961d);}(_0x687b,0x14a));var _0xb687=function(_0xb7202,_0x4aa500){_0xb7202=_0xb7202-0x0;var _0x6488bb=_0x687b[_0xb7202];return _0x6488bb;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var moment=require(_0xb687('0x2'));var BPromise=require(_0xb687('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb687('0x4'))['db'];var utils=require(_0xb687('0x5'));var logger=require(_0xb687('0x6'))(_0xb687('0x7'));var config=require(_0xb687('0x8'));var jayson=require(_0xb687('0x9'));var client=jayson[_0xb687('0xa')][_0xb687('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47ffea,_0x27b750,_0x48942b){return new BPromise(function(_0x2aea59,_0xd40346){return client['request'](_0x47ffea,_0x48942b)[_0xb687('0xc')](function(_0x21e3ab){logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));logger[_0xb687('0x10')](_0xb687('0x11'),_0x27b750,_0xb687('0xf'),JSON[_0xb687('0x12')](_0x21e3ab));if(_0x21e3ab['error']){if(_0x21e3ab[_0xb687('0x13')][_0xb687('0x14')]===0x1f4){logger[_0xb687('0x13')](_0xb687('0xe'),_0x27b750,_0x21e3ab['error']['message']);return _0xd40346(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}logger['error'](_0xb687('0xe'),_0x27b750,_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);return _0x2aea59(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}else{logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));_0x2aea59(_0x21e3ab[_0xb687('0x16')][_0xb687('0x15')]);}})[_0xb687('0x17')](function(_0x19bb29){logger['error'](_0xb687('0xe'),_0x27b750,_0x19bb29);_0xd40346(_0x19bb29);});});}
\ No newline at end of file
+var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x33ceeb,_0x58b863){var _0x5b6556=function(_0x23a6b1){while(--_0x23a6b1){_0x33ceeb['push'](_0x33ceeb['shift']());}};_0x5b6556(++_0x58b863);}(_0x524e,0x15e));var _0xe524=function(_0x3f7ed2,_0x20a080){_0x3f7ed2=_0x3f7ed2-0x0;var _0xc72f2d=_0x524e[_0x3f7ed2];return _0xc72f2d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
index 65f23ff..c7addfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28ff=['fs-extra','../../components/auth/service','../../config/environment','./interval.controller','index','get','/:id','show','/:id/sub_intervals','isAuthenticated','getIntervals','create','post','put','update','destroy','exports','util','path','connect-timeout','Router'];(function(_0x3772be,_0x1b2319){var _0x2ff6b9=function(_0x5401cf){while(--_0x5401cf){_0x3772be['push'](_0x3772be['shift']());}};_0x2ff6b9(++_0x1b2319);}(_0x28ff,0x7a));var _0xf28f=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x28ff[_0x3b380d];return _0x54502b;};'use strict';var multer=require('multer');var util=require(_0xf28f('0x0'));var path=require(_0xf28f('0x1'));var timeout=require(_0xf28f('0x2'));var express=require('express');var router=express[_0xf28f('0x3')]();var fs_extra=require(_0xf28f('0x4'));var auth=require(_0xf28f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf28f('0x6'));var controller=require(_0xf28f('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf28f('0x8')]);router[_0xf28f('0x9')](_0xf28f('0xa'),auth['isAuthenticated'](),controller[_0xf28f('0xb')]);router['get'](_0xf28f('0xc'),auth[_0xf28f('0xd')](),controller[_0xf28f('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf28f('0xf')]);router['post'](_0xf28f('0xc'),auth[_0xf28f('0xd')](),controller['addInterval']);router[_0xf28f('0x10')]('/:id/sub_intervals/create_many',auth[_0xf28f('0xd')](),controller['addIntervals']);router[_0xf28f('0x11')](_0xf28f('0xa'),auth[_0xf28f('0xd')](),controller[_0xf28f('0x12')]);router['delete'](_0xf28f('0xa'),auth[_0xf28f('0xd')](),controller[_0xf28f('0x13')]);module[_0xf28f('0x14')]=router;
\ No newline at end of file
+var _0xd9c8=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','show','/:id/sub_intervals','isAuthenticated','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','put','update','delete','destroy','exports','multer','util'];(function(_0xaca422,_0x307ad3){var _0x3cb69e=function(_0x10d04d){while(--_0x10d04d){_0xaca422['push'](_0xaca422['shift']());}};_0x3cb69e(++_0x307ad3);}(_0xd9c8,0x15c));var _0x8d9c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xd9c8[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0x8d9c('0x0'));var util=require(_0x8d9c('0x1'));var path=require('path');var timeout=require(_0x8d9c('0x2'));var express=require(_0x8d9c('0x3'));var router=express[_0x8d9c('0x4')]();var fs_extra=require(_0x8d9c('0x5'));var auth=require(_0x8d9c('0x6'));var interaction=require(_0x8d9c('0x7'));var config=require(_0x8d9c('0x8'));var controller=require('./interval.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x8d9c('0x9')]);router[_0x8d9c('0xa')](_0x8d9c('0xb'),auth['isAuthenticated'](),controller[_0x8d9c('0xc')]);router[_0x8d9c('0xa')](_0x8d9c('0xd'),auth[_0x8d9c('0xe')](),controller[_0x8d9c('0xf')]);router[_0x8d9c('0x10')]('/',auth[_0x8d9c('0xe')](),controller[_0x8d9c('0x11')]);router['post'](_0x8d9c('0xd'),auth['isAuthenticated'](),controller[_0x8d9c('0x12')]);router['post'](_0x8d9c('0x13'),auth['isAuthenticated'](),controller['addIntervals']);router[_0x8d9c('0x14')]('/:id',auth[_0x8d9c('0xe')](),controller[_0x8d9c('0x15')]);router[_0x8d9c('0x16')](_0x8d9c('0xb'),auth[_0x8d9c('0xe')](),controller[_0x8d9c('0x17')]);module[_0x8d9c('0x18')]=router;
\ No newline at end of file
index 8db12ec..3da26c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0620=['STRING'];(function(_0x273b16,_0x2fbdfa){var _0x1e5a10=function(_0x173fe3){while(--_0x173fe3){_0x273b16['push'](_0x273b16['shift']());}};_0x1e5a10(++_0x2fbdfa);}(_0x0620,0x163));var _0x0062=function(_0x3659f9,_0x51d987){_0x3659f9=_0x3659f9-0x0;var _0x475db5=_0x0620[_0x3659f9];return _0x475db5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x0062('0x0')]},'description':{'type':Sequelize[_0x0062('0x0')]},'interval':{'type':Sequelize[_0x0062('0x0')],'allowNull':!![]}};
\ No newline at end of file
+var _0xc5f3=['sequelize','STRING'];(function(_0x48af38,_0x4b59c0){var _0x3d2de7=function(_0x377c21){while(--_0x377c21){_0x48af38['push'](_0x48af38['shift']());}};_0x3d2de7(++_0x4b59c0);}(_0xc5f3,0x1b0));var _0x3c5f=function(_0x14941c,_0x25cb16){_0x14941c=_0x14941c-0x0;var _0x76d911=_0xc5f3[_0x14941c];return _0x76d911;};'use strict';var Sequelize=require(_0x3c5f('0x0'));module['exports']={'name':{'type':Sequelize[_0x3c5f('0x1')]},'description':{'type':Sequelize[_0x3c5f('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 2b1c6c4..769eb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a7=['params','rawAttributes','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','IntervalId','getIntervals','findOne','pick','merge','nolimit','addIntervals','sequelize','transaction','bulkCreate','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Intervals','UserProfileResource','name','send','index','map','Interval','fieldName','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','filters','where','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show'];(function(_0x30e768,_0x4e6d9d){var _0x5cc281=function(_0x12c6a3){while(--_0x12c6a3){_0x30e768['push'](_0x30e768['shift']());}};_0x5cc281(++_0x4e6d9d);}(_0x93a7,0x124));var _0x793a=function(_0x438117,_0x532a7d){_0x438117=_0x438117-0x0;var _0x285f68=_0x93a7[_0x438117];return _0x285f68;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x793a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x793a('0x1'));var rp=require(_0x793a('0x2'));var moment=require(_0x793a('0x3'));var BPromise=require(_0x793a('0x4'));var Mustache=require(_0x793a('0x5'));var util=require('util');var path=require(_0x793a('0x6'));var sox=require(_0x793a('0x7'));var csv=require(_0x793a('0x8'));var ejs=require(_0x793a('0x9'));var fs=require('fs');var fs_extra=require(_0x793a('0xa'));var _=require(_0x793a('0xb'));var squel=require(_0x793a('0xc'));var crypto=require(_0x793a('0xd'));var jsforce=require(_0x793a('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x793a('0x8'));var querystring=require(_0x793a('0xf'));var Papa=require('papaparse');var Redis=require(_0x793a('0x10'));var authService=require(_0x793a('0x11'));var qs=require(_0x793a('0x12'));var as=require(_0x793a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x793a('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x793a('0x15'));var licenseUtil=require(_0x793a('0x16'));var db=require('../../mysqldb')['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x240595,_0x583f9e){_0x583f9e=_0x583f9e||0xcc;return function(_0x37708d){if(_0x37708d){return _0x240595[_0x793a('0x17')](_0x583f9e);}return _0x240595[_0x793a('0x18')](_0x583f9e)[_0x793a('0x19')]();};}function respondWithResult(_0x7a8da4,_0x4ef49b){_0x4ef49b=_0x4ef49b||0xc8;return function(_0x1a16d2){if(_0x1a16d2){return _0x7a8da4[_0x793a('0x18')](_0x4ef49b)[_0x793a('0x1a')](_0x1a16d2);}};}function respondWithFilteredResult(_0x2d9537,_0x35c23d){return function(_0xa3f80f){if(_0xa3f80f){var _0x508304=typeof _0x35c23d[_0x793a('0x1b')]===_0x793a('0x1c')&&typeof _0x35c23d[_0x793a('0x1d')]===_0x793a('0x1c');var _0x5a276f=_0xa3f80f[_0x793a('0x1e')];var _0x5c4161=_0x508304?0x0:_0x35c23d[_0x793a('0x1b')];var _0x5e9e8b=_0x508304?_0xa3f80f[_0x793a('0x1e')]:_0x35c23d['offset']+_0x35c23d[_0x793a('0x1d')];var _0x318943;if(_0x5e9e8b>=_0x5a276f){_0x5e9e8b=_0x5a276f;_0x318943=0xc8;}else{_0x318943=0xce;}_0x2d9537['status'](_0x318943);return _0x2d9537[_0x793a('0x1f')](_0x793a('0x20'),_0x5c4161+'-'+_0x5e9e8b+'/'+_0x5a276f)[_0x793a('0x1a')](_0xa3f80f);}return null;};}function patchUpdates(_0x417bf7){return function(_0xe057c4){try{jsonpatch[_0x793a('0x21')](_0xe057c4,_0x417bf7,!![]);}catch(_0x505006){return BPromise['reject'](_0x505006);}return _0xe057c4[_0x793a('0x22')]();};}function saveUpdates(_0x35eec8,_0x214293){return function(_0x46f1d2){if(_0x46f1d2){return _0x46f1d2[_0x793a('0x23')](_0x35eec8)[_0x793a('0x24')](function(_0x4e055c){return _0x4e055c;});}return null;};}function removeEntity(_0x3024a4,_0x56705f){return function(_0x40dea4){if(_0x40dea4){return _0x40dea4[_0x793a('0x25')]()[_0x793a('0x24')](function(){var _0x5e4a3b=_0x40dea4[_0x793a('0x26')]({'plain':!![]});var _0xf3c95c=_0x793a('0x27');return db[_0x793a('0x28')][_0x793a('0x25')]({'where':{'type':_0xf3c95c,'resourceId':_0x5e4a3b['id']}})[_0x793a('0x24')](function(){return _0x40dea4;});})['then'](function(){_0x3024a4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cf3ce,_0x3862d6){return function(_0x5c2085){if(!_0x5c2085){_0x2cf3ce[_0x793a('0x17')](0x194);}return _0x5c2085;};}function handleError(_0x358b94,_0x33c905){_0x33c905=_0x33c905||0x1f4;return function(_0x2e2677){logger['error'](_0x2e2677['stack']);if(_0x2e2677['name']){delete _0x2e2677[_0x793a('0x29')];}_0x358b94[_0x793a('0x18')](_0x33c905)[_0x793a('0x2a')](_0x2e2677);};}exports[_0x793a('0x2b')]=function(_0x17a3b7,_0x4b4ac5){var _0x1f8f6c={},_0x2a570a={},_0x51b716={'count':0x0,'rows':[]};var _0x1f14b0=_[_0x793a('0x2c')](db[_0x793a('0x2d')]['rawAttributes'],function(_0x596b80){return{'name':_0x596b80[_0x793a('0x2e')],'type':_0x596b80['type']['key']};});_0x2a570a[_0x793a('0x2f')]=_[_0x793a('0x2c')](_0x1f14b0,_0x793a('0x29'));_0x2a570a[_0x793a('0x30')]=_[_0x793a('0x31')](_0x17a3b7['query']);_0x2a570a['filters']=_[_0x793a('0x32')](_0x2a570a[_0x793a('0x2f')],_0x2a570a[_0x793a('0x30')]);_0x1f8f6c['attributes']=_[_0x793a('0x32')](_0x2a570a['model'],qs[_0x793a('0x33')](_0x17a3b7['query'][_0x793a('0x33')]));_0x1f8f6c['attributes']=_0x1f8f6c[_0x793a('0x34')][_0x793a('0x35')]?_0x1f8f6c[_0x793a('0x34')]:_0x2a570a[_0x793a('0x2f')];if(!_0x17a3b7['query'][_0x793a('0x36')]('nolimit')){_0x1f8f6c[_0x793a('0x1d')]=qs[_0x793a('0x1d')](_0x17a3b7[_0x793a('0x30')][_0x793a('0x1d')]);_0x1f8f6c['offset']=qs[_0x793a('0x1b')](_0x17a3b7[_0x793a('0x30')][_0x793a('0x1b')]);}_0x1f8f6c[_0x793a('0x37')]=qs['sort'](_0x17a3b7[_0x793a('0x30')][_0x793a('0x38')]);_0x1f8f6c['where']=qs[_0x793a('0x39')](_['pick'](_0x17a3b7[_0x793a('0x30')],_0x2a570a[_0x793a('0x39')]),_0x1f14b0);if(_0x17a3b7[_0x793a('0x30')]['filter']){_0x1f8f6c[_0x793a('0x3a')]=_['merge'](_0x1f8f6c[_0x793a('0x3a')],{'$or':_[_0x793a('0x2c')](_0x1f14b0,function(_0x458103){if(_0x458103[_0x793a('0x3b')]!==_0x793a('0x3c')){var _0x34640f={};_0x34640f[_0x458103[_0x793a('0x29')]]={'$like':'%'+_0x17a3b7[_0x793a('0x30')][_0x793a('0x3d')]+'%'};return _0x34640f;}})});}_0x1f8f6c=_['merge']({},_0x1f8f6c,_0x17a3b7[_0x793a('0x3e')]);var _0x2d5581={'where':_0x1f8f6c[_0x793a('0x3a')]};return db['Interval'][_0x793a('0x1e')](_0x2d5581)['then'](function(_0x4085b3){_0x51b716['count']=_0x4085b3;if(_0x17a3b7[_0x793a('0x30')][_0x793a('0x3f')]){_0x1f8f6c[_0x793a('0x40')]=[{'all':!![]}];}return db[_0x793a('0x2d')][_0x793a('0x41')](_0x1f8f6c);})[_0x793a('0x24')](function(_0x2c8502){_0x51b716[_0x793a('0x42')]=_0x2c8502;return _0x51b716;})[_0x793a('0x24')](respondWithFilteredResult(_0x4b4ac5,_0x1f8f6c))['catch'](handleError(_0x4b4ac5,null));};exports[_0x793a('0x43')]=function(_0xe01470,_0x63d1f7){var _0x106298={'raw':!![],'where':{'id':_0xe01470[_0x793a('0x44')]['id']}},_0x269b88={};_0x269b88[_0x793a('0x2f')]=_[_0x793a('0x31')](db[_0x793a('0x2d')][_0x793a('0x45')]);_0x269b88[_0x793a('0x30')]=_[_0x793a('0x31')](_0xe01470['query']);_0x269b88[_0x793a('0x39')]=_[_0x793a('0x32')](_0x269b88['model'],_0x269b88[_0x793a('0x30')]);_0x106298[_0x793a('0x34')]=_[_0x793a('0x32')](_0x269b88[_0x793a('0x2f')],qs[_0x793a('0x33')](_0xe01470[_0x793a('0x30')][_0x793a('0x33')]));_0x106298[_0x793a('0x34')]=_0x106298[_0x793a('0x34')][_0x793a('0x35')]?_0x106298['attributes']:_0x269b88[_0x793a('0x2f')];if(_0xe01470[_0x793a('0x30')][_0x793a('0x3f')]){_0x106298[_0x793a('0x40')]=[{'all':!![]}];}_0x106298=_['merge']({},_0x106298,_0xe01470[_0x793a('0x3e')]);return db[_0x793a('0x2d')]['find'](_0x106298)[_0x793a('0x24')](handleEntityNotFound(_0x63d1f7,null))[_0x793a('0x24')](respondWithResult(_0x63d1f7,null))[_0x793a('0x46')](handleError(_0x63d1f7,null));};exports['create']=function(_0x2f5cbd,_0x24da59){return db[_0x793a('0x2d')][_0x793a('0x47')](_0x2f5cbd[_0x793a('0x48')],{})[_0x793a('0x24')](function(_0x5a6bbf){var _0x127810=_0x2f5cbd[_0x793a('0x49')][_0x793a('0x26')]({'plain':!![]});if(!_0x127810)throw new Error(_0x793a('0x4a'));if(_0x127810[_0x793a('0x4b')]===_0x793a('0x49')){var _0x5591f3=_0x5a6bbf[_0x793a('0x26')]({'plain':!![]});var _0xd8165a=_0x793a('0x27');return db[_0x793a('0x4c')][_0x793a('0x4d')]({'where':{'name':_0xd8165a,'userProfileId':_0x127810['userProfileId']},'raw':!![]})[_0x793a('0x24')](function(_0x38443f){if(_0x38443f&&_0x38443f['autoAssociation']===0x0){return db[_0x793a('0x28')][_0x793a('0x47')]({'name':_0x5591f3[_0x793a('0x29')],'resourceId':_0x5591f3['id'],'type':_0x38443f['name'],'sectionId':_0x38443f['id']},{})[_0x793a('0x24')](function(){return _0x5a6bbf;});}else{return _0x5a6bbf;}})[_0x793a('0x46')](function(_0x2a5f86){logger[_0x793a('0x4e')](_0x793a('0x4f'),_0x2a5f86);throw _0x2a5f86;});}return _0x5a6bbf;})['then'](respondWithResult(_0x24da59,0xc9))[_0x793a('0x46')](handleError(_0x24da59,null));};exports[_0x793a('0x23')]=function(_0x4d32c3,_0x2a5e46){if(_0x4d32c3[_0x793a('0x48')]['id']){delete _0x4d32c3[_0x793a('0x48')]['id'];}return db['Interval'][_0x793a('0x4d')]({'where':{'id':_0x4d32c3[_0x793a('0x44')]['id']}})[_0x793a('0x24')](handleEntityNotFound(_0x2a5e46,null))[_0x793a('0x24')](saveUpdates(_0x4d32c3[_0x793a('0x48')],null))[_0x793a('0x24')](respondWithResult(_0x2a5e46,null))[_0x793a('0x46')](handleError(_0x2a5e46,null));};exports[_0x793a('0x25')]=function(_0x52eb23,_0x168988){return db[_0x793a('0x2d')]['find']({'where':{'id':_0x52eb23[_0x793a('0x44')]['id']}})['then'](handleEntityNotFound(_0x168988,null))[_0x793a('0x24')](removeEntity(_0x168988,null))['catch'](handleError(_0x168988,null));};exports['addInterval']=function(_0x5d1482,_0x15c685,_0x5e4f56){if(_0x5d1482[_0x793a('0x48')]['id']){delete _0x5d1482[_0x793a('0x48')]['id'];}return db['Interval']['find']({'where':{'id':_0x5d1482[_0x793a('0x44')]['id']}})[_0x793a('0x24')](handleEntityNotFound(_0x15c685,null))[_0x793a('0x24')](function(_0x3bb939){if(_0x3bb939){_0x5d1482[_0x793a('0x48')][_0x793a('0x50')]=_0x3bb939['id'];return db[_0x793a('0x2d')][_0x793a('0x47')](_0x5d1482['body']);}})[_0x793a('0x24')](respondWithResult(_0x15c685,null))[_0x793a('0x46')](handleError(_0x15c685,null));};exports[_0x793a('0x51')]=function(_0x31151e,_0x5dd4ec,_0x59286c){var _0x54f626={};var _0x56df86={};var _0x3c7e3f;var _0x44c2ec;return db[_0x793a('0x2d')][_0x793a('0x52')]({'where':{'id':_0x31151e[_0x793a('0x44')]['id']}})[_0x793a('0x24')](handleEntityNotFound(_0x5dd4ec,null))[_0x793a('0x24')](function(_0x36a1e5){if(_0x36a1e5){_0x3c7e3f=_0x36a1e5;_0x56df86[_0x793a('0x2f')]=_[_0x793a('0x31')](db[_0x793a('0x2d')]['rawAttributes']);_0x56df86[_0x793a('0x30')]=_[_0x793a('0x31')](_0x31151e['query']);_0x56df86[_0x793a('0x39')]=_[_0x793a('0x32')](_0x56df86[_0x793a('0x2f')],_0x56df86[_0x793a('0x30')]);_0x54f626[_0x793a('0x34')]=_['intersection'](_0x56df86[_0x793a('0x2f')],qs[_0x793a('0x33')](_0x31151e[_0x793a('0x30')][_0x793a('0x33')]));_0x54f626[_0x793a('0x34')]=_0x54f626[_0x793a('0x34')][_0x793a('0x35')]?_0x54f626[_0x793a('0x34')]:_0x56df86[_0x793a('0x2f')];_0x54f626[_0x793a('0x37')]=qs[_0x793a('0x38')](_0x31151e[_0x793a('0x30')][_0x793a('0x38')]);_0x54f626[_0x793a('0x3a')]=qs['filters'](_[_0x793a('0x53')](_0x31151e['query'],_0x56df86['filters']));if(_0x31151e[_0x793a('0x30')]['filter']){_0x54f626[_0x793a('0x3a')]=_[_0x793a('0x54')](_0x54f626['where'],{'$or':_['map'](_0x54f626[_0x793a('0x34')],function(_0x3e48c8){var _0x53d961={};_0x53d961[_0x3e48c8]={'$like':'%'+_0x31151e[_0x793a('0x30')][_0x793a('0x3d')]+'%'};return _0x53d961;})});}_0x54f626=_[_0x793a('0x54')]({},_0x54f626,_0x31151e[_0x793a('0x3e')]);return _0x3c7e3f['getIntervals'](_0x54f626);}})['then'](function(_0x2b8dc3){if(_0x2b8dc3){_0x44c2ec=_0x2b8dc3[_0x793a('0x35')];if(!_0x31151e[_0x793a('0x30')][_0x793a('0x36')](_0x793a('0x55'))){_0x54f626['limit']=qs[_0x793a('0x1d')](_0x31151e['query'][_0x793a('0x1d')]);_0x54f626[_0x793a('0x1b')]=qs[_0x793a('0x1b')](_0x31151e[_0x793a('0x30')]['offset']);}return _0x3c7e3f[_0x793a('0x51')](_0x54f626);}})[_0x793a('0x24')](function(_0x1d4aab){if(_0x1d4aab){return _0x1d4aab?{'count':_0x44c2ec,'rows':_0x1d4aab}:null;}})['then'](respondWithResult(_0x5dd4ec,null))['catch'](handleError(_0x5dd4ec,null));};exports[_0x793a('0x56')]=function(_0x3a985b,_0x499b3e,_0x1a6650){return db['Interval'][_0x793a('0x52')]({'where':{'id':_0x3a985b[_0x793a('0x44')]['id']}})[_0x793a('0x24')](handleEntityNotFound(_0x499b3e,null))['then'](function(_0x6d172f){if(_0x6d172f){return db[_0x793a('0x57')][_0x793a('0x58')](function(_0x5a992b){return db[_0x793a('0x2d')][_0x793a('0x25')]({'where':{'IntervalId':_0x3a985b[_0x793a('0x44')]['id']},'transaction':_0x5a992b})[_0x793a('0x24')](function(_0x50b51c){var _0x104129=_[_0x793a('0x2c')](_0x3a985b[_0x793a('0x48')],function(_0x24dd5e){delete _0x24dd5e['id'];_0x24dd5e[_0x793a('0x50')]=_0x3a985b[_0x793a('0x44')]['id'];return _0x24dd5e;});return db['Interval'][_0x793a('0x59')](_0x104129,{'transaction':_0x5a992b});});})[_0x793a('0x24')](function(){return db[_0x793a('0x2d')][_0x793a('0x41')]({'where':{'IntervalId':_0x3a985b[_0x793a('0x44')]['id']}});});}})[_0x793a('0x24')](respondWithResult(_0x499b3e,null))[_0x793a('0x46')](handleError(_0x499b3e,null));};
\ No newline at end of file
+var _0x5a79=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','json','offset','limit','count','Content-Range','apply','reject','save','then','destroy','get','Intervals','UserProfileResource','error','stack','name','index','map','Interval','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','options','includeAll','findAll','show','length','include','catch','create','body','role','user','UserProfileSection','find','userProfileId','update','addInterval','params','IntervalId','getIntervals','hasOwnProperty','nolimit','addIntervals','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0xa90169,_0x39f1ad){var _0x1a8eda=function(_0x11c37d){while(--_0x11c37d){_0xa90169['push'](_0xa90169['shift']());}};_0x1a8eda(++_0x39f1ad);}(_0x5a79,0x1a7));var _0x95a7=function(_0x4d7707,_0x9784ca){_0x4d7707=_0x4d7707-0x0;var _0x5d3421=_0x5a79[_0x4d7707];return _0x5d3421;};'use strict';var emlformat=require(_0x95a7('0x0'));var rimraf=require(_0x95a7('0x1'));var zipdir=require(_0x95a7('0x2'));var jsonpatch=require(_0x95a7('0x3'));var rp=require(_0x95a7('0x4'));var moment=require('moment');var BPromise=require(_0x95a7('0x5'));var Mustache=require(_0x95a7('0x6'));var util=require(_0x95a7('0x7'));var path=require(_0x95a7('0x8'));var sox=require('sox');var csv=require(_0x95a7('0x9'));var ejs=require(_0x95a7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x95a7('0xb'));var crypto=require(_0x95a7('0xc'));var jsforce=require(_0x95a7('0xd'));var deskjs=require(_0x95a7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x95a7('0xf'));var Papa=require(_0x95a7('0x10'));var Redis=require(_0x95a7('0x11'));var authService=require(_0x95a7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x95a7('0x13'));var hardwareService=require(_0x95a7('0x14'));var logger=require(_0x95a7('0x15'))(_0x95a7('0x16'));var utils=require(_0x95a7('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x95a7('0x18'));var db=require(_0x95a7('0x19'))['db'];var extensions=require(_0x95a7('0x1a'));function respondWithStatusCode(_0x412995,_0x3d0607){_0x3d0607=_0x3d0607||0xcc;return function(_0xf64120){if(_0xf64120){return _0x412995[_0x95a7('0x1b')](_0x3d0607);}return _0x412995[_0x95a7('0x1c')](_0x3d0607)['end']();};}function respondWithResult(_0x7dfca4,_0x49b253){_0x49b253=_0x49b253||0xc8;return function(_0x4b6870){if(_0x4b6870){return _0x7dfca4[_0x95a7('0x1c')](_0x49b253)[_0x95a7('0x1d')](_0x4b6870);}};}function respondWithFilteredResult(_0x86103a,_0x3a1759){return function(_0x563548){if(_0x563548){var _0x3e2e67=typeof _0x3a1759[_0x95a7('0x1e')]==='undefined'&&typeof _0x3a1759[_0x95a7('0x1f')]==='undefined';var _0x22069f=_0x563548[_0x95a7('0x20')];var _0x470ecb=_0x3e2e67?0x0:_0x3a1759[_0x95a7('0x1e')];var _0x5ee13b=_0x3e2e67?_0x563548[_0x95a7('0x20')]:_0x3a1759[_0x95a7('0x1e')]+_0x3a1759[_0x95a7('0x1f')];var _0x11f9c1;if(_0x5ee13b>=_0x22069f){_0x5ee13b=_0x22069f;_0x11f9c1=0xc8;}else{_0x11f9c1=0xce;}_0x86103a[_0x95a7('0x1c')](_0x11f9c1);return _0x86103a['set'](_0x95a7('0x21'),_0x470ecb+'-'+_0x5ee13b+'/'+_0x22069f)['json'](_0x563548);}return null;};}function patchUpdates(_0x37ebc3){return function(_0xd9c560){try{jsonpatch[_0x95a7('0x22')](_0xd9c560,_0x37ebc3,!![]);}catch(_0x22e2be){return BPromise[_0x95a7('0x23')](_0x22e2be);}return _0xd9c560[_0x95a7('0x24')]();};}function saveUpdates(_0x318480,_0x4da06c){return function(_0xab85bf){if(_0xab85bf){return _0xab85bf['update'](_0x318480)[_0x95a7('0x25')](function(_0x5e40c0){return _0x5e40c0;});}return null;};}function removeEntity(_0x3b6afb,_0x4723a8){return function(_0x3e1abe){if(_0x3e1abe){return _0x3e1abe[_0x95a7('0x26')]()[_0x95a7('0x25')](function(){var _0x518263=_0x3e1abe[_0x95a7('0x27')]({'plain':!![]});var _0x2f536a=_0x95a7('0x28');return db[_0x95a7('0x29')][_0x95a7('0x26')]({'where':{'type':_0x2f536a,'resourceId':_0x518263['id']}})[_0x95a7('0x25')](function(){return _0x3e1abe;});})['then'](function(){_0x3b6afb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x430fcc,_0x3ffea3){return function(_0x438771){if(!_0x438771){_0x430fcc[_0x95a7('0x1b')](0x194);}return _0x438771;};}function handleError(_0x78dc37,_0x29ce04){_0x29ce04=_0x29ce04||0x1f4;return function(_0x1f22d5){logger[_0x95a7('0x2a')](_0x1f22d5[_0x95a7('0x2b')]);if(_0x1f22d5[_0x95a7('0x2c')]){delete _0x1f22d5['name'];}_0x78dc37[_0x95a7('0x1c')](_0x29ce04)['send'](_0x1f22d5);};}exports[_0x95a7('0x2d')]=function(_0x3151dc,_0x4693e8){var _0x48e9a9={},_0x4c5a84={},_0x65d324={'count':0x0,'rows':[]};var _0x3f3cce=_[_0x95a7('0x2e')](db[_0x95a7('0x2f')][_0x95a7('0x30')],function(_0x5bfb4f){return{'name':_0x5bfb4f[_0x95a7('0x31')],'type':_0x5bfb4f[_0x95a7('0x32')]['key']};});_0x4c5a84[_0x95a7('0x33')]=_[_0x95a7('0x2e')](_0x3f3cce,'name');_0x4c5a84[_0x95a7('0x34')]=_[_0x95a7('0x35')](_0x3151dc[_0x95a7('0x34')]);_0x4c5a84[_0x95a7('0x36')]=_[_0x95a7('0x37')](_0x4c5a84['model'],_0x4c5a84[_0x95a7('0x34')]);_0x48e9a9[_0x95a7('0x38')]=_[_0x95a7('0x37')](_0x4c5a84[_0x95a7('0x33')],qs[_0x95a7('0x39')](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x39')]));_0x48e9a9[_0x95a7('0x38')]=_0x48e9a9['attributes']['length']?_0x48e9a9[_0x95a7('0x38')]:_0x4c5a84['model'];if(!_0x3151dc[_0x95a7('0x34')]['hasOwnProperty']('nolimit')){_0x48e9a9['limit']=qs[_0x95a7('0x1f')](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x1f')]);_0x48e9a9[_0x95a7('0x1e')]=qs['offset'](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x1e')]);}_0x48e9a9[_0x95a7('0x3a')]=qs[_0x95a7('0x3b')](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x3b')]);_0x48e9a9[_0x95a7('0x3c')]=qs[_0x95a7('0x36')](_[_0x95a7('0x3d')](_0x3151dc[_0x95a7('0x34')],_0x4c5a84[_0x95a7('0x36')]),_0x3f3cce);if(_0x3151dc[_0x95a7('0x34')][_0x95a7('0x3e')]){_0x48e9a9[_0x95a7('0x3c')]=_[_0x95a7('0x3f')](_0x48e9a9[_0x95a7('0x3c')],{'$or':_['map'](_0x3f3cce,function(_0x1dec7b){if(_0x1dec7b[_0x95a7('0x32')]!=='VIRTUAL'){var _0x19f248={};_0x19f248[_0x1dec7b[_0x95a7('0x2c')]]={'$like':'%'+_0x3151dc[_0x95a7('0x34')][_0x95a7('0x3e')]+'%'};return _0x19f248;}})});}_0x48e9a9=_[_0x95a7('0x3f')]({},_0x48e9a9,_0x3151dc[_0x95a7('0x40')]);var _0x31d349={'where':_0x48e9a9[_0x95a7('0x3c')]};return db['Interval'][_0x95a7('0x20')](_0x31d349)[_0x95a7('0x25')](function(_0x2c21b2){_0x65d324[_0x95a7('0x20')]=_0x2c21b2;if(_0x3151dc[_0x95a7('0x34')][_0x95a7('0x41')]){_0x48e9a9['include']=[{'all':!![]}];}return db[_0x95a7('0x2f')][_0x95a7('0x42')](_0x48e9a9);})[_0x95a7('0x25')](function(_0x10bf16){_0x65d324['rows']=_0x10bf16;return _0x65d324;})[_0x95a7('0x25')](respondWithFilteredResult(_0x4693e8,_0x48e9a9))['catch'](handleError(_0x4693e8,null));};exports[_0x95a7('0x43')]=function(_0x201994,_0x36ff09){var _0x2a4e07={'raw':!![],'where':{'id':_0x201994['params']['id']}},_0x35674b={};_0x35674b['model']=_[_0x95a7('0x35')](db[_0x95a7('0x2f')][_0x95a7('0x30')]);_0x35674b[_0x95a7('0x34')]=_[_0x95a7('0x35')](_0x201994[_0x95a7('0x34')]);_0x35674b['filters']=_[_0x95a7('0x37')](_0x35674b['model'],_0x35674b[_0x95a7('0x34')]);_0x2a4e07['attributes']=_['intersection'](_0x35674b['model'],qs[_0x95a7('0x39')](_0x201994['query']['fields']));_0x2a4e07[_0x95a7('0x38')]=_0x2a4e07[_0x95a7('0x38')][_0x95a7('0x44')]?_0x2a4e07[_0x95a7('0x38')]:_0x35674b['model'];if(_0x201994['query'][_0x95a7('0x41')]){_0x2a4e07[_0x95a7('0x45')]=[{'all':!![]}];}_0x2a4e07=_[_0x95a7('0x3f')]({},_0x2a4e07,_0x201994[_0x95a7('0x40')]);return db['Interval']['find'](_0x2a4e07)['then'](handleEntityNotFound(_0x36ff09,null))[_0x95a7('0x25')](respondWithResult(_0x36ff09,null))[_0x95a7('0x46')](handleError(_0x36ff09,null));};exports[_0x95a7('0x47')]=function(_0x217631,_0x23aa3f){return db[_0x95a7('0x2f')][_0x95a7('0x47')](_0x217631[_0x95a7('0x48')],{})[_0x95a7('0x25')](function(_0x17b6ff){var _0x5857a0=_0x217631['user']['get']({'plain':!![]});if(!_0x5857a0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5857a0[_0x95a7('0x49')]===_0x95a7('0x4a')){var _0x39d74d=_0x17b6ff[_0x95a7('0x27')]({'plain':!![]});var _0x2537d6='Intervals';return db[_0x95a7('0x4b')][_0x95a7('0x4c')]({'where':{'name':_0x2537d6,'userProfileId':_0x5857a0[_0x95a7('0x4d')]},'raw':!![]})[_0x95a7('0x25')](function(_0x11b2e0){if(_0x11b2e0&&_0x11b2e0['autoAssociation']===0x0){return db[_0x95a7('0x29')][_0x95a7('0x47')]({'name':_0x39d74d[_0x95a7('0x2c')],'resourceId':_0x39d74d['id'],'type':_0x11b2e0[_0x95a7('0x2c')],'sectionId':_0x11b2e0['id']},{})[_0x95a7('0x25')](function(){return _0x17b6ff;});}else{return _0x17b6ff;}})[_0x95a7('0x46')](function(_0x25e3f7){logger[_0x95a7('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x25e3f7);throw _0x25e3f7;});}return _0x17b6ff;})[_0x95a7('0x25')](respondWithResult(_0x23aa3f,0xc9))['catch'](handleError(_0x23aa3f,null));};exports[_0x95a7('0x4e')]=function(_0x28d06e,_0x1142d9){if(_0x28d06e[_0x95a7('0x48')]['id']){delete _0x28d06e[_0x95a7('0x48')]['id'];}return db[_0x95a7('0x2f')][_0x95a7('0x4c')]({'where':{'id':_0x28d06e['params']['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x1142d9,null))[_0x95a7('0x25')](saveUpdates(_0x28d06e[_0x95a7('0x48')],null))[_0x95a7('0x25')](respondWithResult(_0x1142d9,null))[_0x95a7('0x46')](handleError(_0x1142d9,null));};exports[_0x95a7('0x26')]=function(_0x1297b3,_0x3e9b34){return db[_0x95a7('0x2f')][_0x95a7('0x4c')]({'where':{'id':_0x1297b3['params']['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x3e9b34,null))[_0x95a7('0x25')](removeEntity(_0x3e9b34,null))['catch'](handleError(_0x3e9b34,null));};exports[_0x95a7('0x4f')]=function(_0xdaaa92,_0x1adcc1,_0xf897d3){if(_0xdaaa92[_0x95a7('0x48')]['id']){delete _0xdaaa92[_0x95a7('0x48')]['id'];}return db[_0x95a7('0x2f')][_0x95a7('0x4c')]({'where':{'id':_0xdaaa92[_0x95a7('0x50')]['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x1adcc1,null))[_0x95a7('0x25')](function(_0x4be9e9){if(_0x4be9e9){_0xdaaa92[_0x95a7('0x48')][_0x95a7('0x51')]=_0x4be9e9['id'];return db['Interval']['create'](_0xdaaa92[_0x95a7('0x48')]);}})[_0x95a7('0x25')](respondWithResult(_0x1adcc1,null))[_0x95a7('0x46')](handleError(_0x1adcc1,null));};exports[_0x95a7('0x52')]=function(_0x134676,_0x293779,_0x347882){var _0x2d6478={};var _0x1a29e7={};var _0x1010ba;var _0x4bd79d;return db[_0x95a7('0x2f')]['findOne']({'where':{'id':_0x134676[_0x95a7('0x50')]['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x293779,null))[_0x95a7('0x25')](function(_0x2f5677){if(_0x2f5677){_0x1010ba=_0x2f5677;_0x1a29e7[_0x95a7('0x33')]=_[_0x95a7('0x35')](db[_0x95a7('0x2f')][_0x95a7('0x30')]);_0x1a29e7['query']=_['keys'](_0x134676['query']);_0x1a29e7[_0x95a7('0x36')]=_[_0x95a7('0x37')](_0x1a29e7[_0x95a7('0x33')],_0x1a29e7[_0x95a7('0x34')]);_0x2d6478[_0x95a7('0x38')]=_[_0x95a7('0x37')](_0x1a29e7['model'],qs['fields'](_0x134676['query'][_0x95a7('0x39')]));_0x2d6478['attributes']=_0x2d6478['attributes'][_0x95a7('0x44')]?_0x2d6478[_0x95a7('0x38')]:_0x1a29e7['model'];_0x2d6478['order']=qs[_0x95a7('0x3b')](_0x134676[_0x95a7('0x34')][_0x95a7('0x3b')]);_0x2d6478[_0x95a7('0x3c')]=qs['filters'](_[_0x95a7('0x3d')](_0x134676['query'],_0x1a29e7[_0x95a7('0x36')]));if(_0x134676[_0x95a7('0x34')][_0x95a7('0x3e')]){_0x2d6478[_0x95a7('0x3c')]=_[_0x95a7('0x3f')](_0x2d6478[_0x95a7('0x3c')],{'$or':_[_0x95a7('0x2e')](_0x2d6478[_0x95a7('0x38')],function(_0x21890a){var _0xba2631={};_0xba2631[_0x21890a]={'$like':'%'+_0x134676[_0x95a7('0x34')][_0x95a7('0x3e')]+'%'};return _0xba2631;})});}_0x2d6478=_[_0x95a7('0x3f')]({},_0x2d6478,_0x134676[_0x95a7('0x40')]);return _0x1010ba[_0x95a7('0x52')](_0x2d6478);}})[_0x95a7('0x25')](function(_0xdda264){if(_0xdda264){_0x4bd79d=_0xdda264[_0x95a7('0x44')];if(!_0x134676[_0x95a7('0x34')][_0x95a7('0x53')](_0x95a7('0x54'))){_0x2d6478['limit']=qs[_0x95a7('0x1f')](_0x134676['query'][_0x95a7('0x1f')]);_0x2d6478[_0x95a7('0x1e')]=qs['offset'](_0x134676[_0x95a7('0x34')][_0x95a7('0x1e')]);}return _0x1010ba[_0x95a7('0x52')](_0x2d6478);}})['then'](function(_0x447b31){if(_0x447b31){return _0x447b31?{'count':_0x4bd79d,'rows':_0x447b31}:null;}})['then'](respondWithResult(_0x293779,null))[_0x95a7('0x46')](handleError(_0x293779,null));};exports[_0x95a7('0x55')]=function(_0x5f8f2d,_0x4b1ba3,_0x2e3e07){return db[_0x95a7('0x2f')]['findOne']({'where':{'id':_0x5f8f2d[_0x95a7('0x50')]['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x4b1ba3,null))['then'](function(_0x57444e){if(_0x57444e){return db[_0x95a7('0x56')][_0x95a7('0x57')](function(_0x1014e1){return db[_0x95a7('0x2f')][_0x95a7('0x26')]({'where':{'IntervalId':_0x5f8f2d['params']['id']},'transaction':_0x1014e1})[_0x95a7('0x25')](function(_0x575a73){var _0x1ee015=_[_0x95a7('0x2e')](_0x5f8f2d[_0x95a7('0x48')],function(_0x450e27){delete _0x450e27['id'];_0x450e27['IntervalId']=_0x5f8f2d[_0x95a7('0x50')]['id'];return _0x450e27;});return db[_0x95a7('0x2f')]['bulkCreate'](_0x1ee015,{'transaction':_0x1014e1});});})[_0x95a7('0x25')](function(){return db[_0x95a7('0x2f')][_0x95a7('0x42')]({'where':{'IntervalId':_0x5f8f2d['params']['id']}});});}})[_0x95a7('0x25')](respondWithResult(_0x4b1ba3,null))['catch'](handleError(_0x4b1ba3,null));};
\ No newline at end of file
index 20291fc..3bfa3bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf981=['../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports','Interval','rewrite','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2e5ca3,_0x5cd487){var _0x1944a1=function(_0x1c4401){while(--_0x1c4401){_0x2e5ca3['push'](_0x2e5ca3['shift']());}};_0x1944a1(++_0x5cd487);}(_0xf981,0xe6));var _0x1f98=function(_0x22816f,_0x58f7ac){_0x22816f=_0x22816f-0x0;var _0x4b24a7=_0xf981[_0x22816f];return _0x4b24a7;};'use strict';var _=require(_0x1f98('0x0'));var util=require(_0x1f98('0x1'));var logger=require(_0x1f98('0x2'))(_0x1f98('0x3'));var moment=require(_0x1f98('0x4'));var BPromise=require(_0x1f98('0x5'));var rp=require(_0x1f98('0x6'));var fs=require('fs');var path=require(_0x1f98('0x7'));var rimraf=require('rimraf');var config=require(_0x1f98('0x8'));var attributes=require(_0x1f98('0x9'));var extensions=require(_0x1f98('0xa'));module[_0x1f98('0xb')]=function(_0x285cdc,_0x4a4526){return _0x285cdc['define'](_0x1f98('0xc'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x23e6a6,_0x88053c){extensions[_0x1f98('0xd')](_0x285cdc,_0x23e6a6);},'afterBulkCreate':function(_0x31b037,_0x241afb,_0x48228a){_0x48228a();extensions[_0x1f98('0xd')](_0x285cdc,_0x31b037[0x0]);},'afterUpdate':function(_0x119656,_0x358d08){extensions[_0x1f98('0xd')](_0x285cdc,_0x119656);},'afterDestroy':function(_0x505bed,_0x38a632){extensions['rewrite'](_0x285cdc,_0x505bed);}}});};
\ No newline at end of file
+var _0x3a83=['Interval','tools_intervals','rewrite','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../components/extensions/rewrite','exports'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x3a83,0x16b));var _0x33a8=function(_0x340ede,_0x4b16af){_0x340ede=_0x340ede-0x0;var _0xc19cc4=_0x3a83[_0x340ede];return _0xc19cc4;};'use strict';var _=require(_0x33a8('0x0'));var util=require('util');var logger=require(_0x33a8('0x1'))(_0x33a8('0x2'));var moment=require(_0x33a8('0x3'));var BPromise=require(_0x33a8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x33a8('0x5'));var rimraf=require(_0x33a8('0x6'));var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0x33a8('0x7'));module[_0x33a8('0x8')]=function(_0x55cdeb,_0x19741e){return _0x55cdeb['define'](_0x33a8('0x9'),attributes,{'tableName':_0x33a8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x369684,_0x18e601){extensions[_0x33a8('0xb')](_0x55cdeb,_0x369684);},'afterBulkCreate':function(_0x40f1d2,_0x453ecf,_0x5942f6){_0x5942f6();extensions[_0x33a8('0xb')](_0x55cdeb,_0x40f1d2[0x0]);},'afterUpdate':function(_0x381825,_0x4aa7d2){extensions[_0x33a8('0xb')](_0x55cdeb,_0x381825);},'afterDestroy':function(_0xd8f8c6,_0x140375){extensions[_0x33a8('0xb')](_0x55cdeb,_0xd8f8c6);}}});};
\ No newline at end of file
index b8f2762..f98dc82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x72a33d,_0x5691da){var _0x2621d5=function(_0x95b7c6){while(--_0x95b7c6){_0x72a33d['push'](_0x72a33d['shift']());}};_0x2621d5(++_0x5691da);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x5f3de3,_0x40f0f5){var _0x287e0d=function(_0x3189dc){while(--_0x3189dc){_0x5f3de3['push'](_0x5f3de3['shift']());}};_0x287e0d(++_0x40f0f5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index a083d38..ef1a853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x23ec06,_0x561142){var _0x2831d4=function(_0x3802bc){while(--_0x3802bc){_0x23ec06['push'](_0x23ec06['shift']());}};_0x2831d4(++_0x561142);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x5f66[_0x3947c9];return _0x2e7871;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
+var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x4b3ce3,_0x250b2a){var _0x503faf=function(_0x56468e){while(--_0x56468e){_0x4b3ce3['push'](_0x4b3ce3['shift']());}};_0x503faf(++_0x250b2a);}(_0xdb28,0x106));var _0x8db2=function(_0x2f1a74,_0x1ae877){_0x2f1a74=_0x2f1a74-0x0;var _0x2ab55a=_0xdb28[_0x2f1a74];return _0x2ab55a;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
index 9f69fdd..8d3adf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['base64','request','setEncoding','utf8','data','end','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','connection','remoteAddress','socket','bluebird','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','POST','toString'];(function(_0x277a66,_0x4f9367){var _0x3ffa3d=function(_0x364931){while(--_0x364931){_0x277a66['push'](_0x277a66['shift']());}};_0x3ffa3d(++_0x4f9367);}(_0x55d2,0x104));var _0x255d=function(_0x3438e0,_0x140a7f){_0x3438e0=_0x3438e0-0x0;var _0x45cbba=_0x55d2[_0x3438e0];return _0x45cbba;};'use strict';var BPromise=require(_0x255d('0x0'));var https=require('https');var logger=require(_0x255d('0x1'))(_0x255d('0x2'));var USERNAME=_0x255d('0x3');var PASSWORD=_0x255d('0x4');function openIssue(_0x239906,_0x402796){var _0x4c927f={'fields':{'project':{'key':_0x239906[_0x255d('0x5')]||_0x255d('0x6')},'summary':(_0x239906[_0x255d('0x7')]||_0x255d('0x8'))+_0x255d('0x9')+_0x239906['ip'],'description':_0x239906[_0x255d('0xa')]||JSON[_0x255d('0xb')](_0x239906),'issuetype':{'name':_0x239906['issuetype']||_0x255d('0xc')}}};_0x4c927f[_0x255d('0xd')][_0x255d('0xe')]=_0x239906[_0x255d('0xf')];_0x4c927f[_0x255d('0xd')][_0x255d('0x10')]=_0x239906[_0x255d('0x11')];_0x4c927f[_0x255d('0xd')][_0x255d('0x12')]=_0x239906[_0x255d('0x13')];_0x4c927f['fields'][_0x255d('0x14')]=_0x239906[_0x255d('0x15')];_0x4c927f['fields'][_0x255d('0x16')]=_0x239906[_0x255d('0x17')];_0x4c927f['fields'][_0x255d('0x18')]=_0x239906['ip'];var _0x57a737={'host':_0x255d('0x19'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0x255d('0x1a'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x255d('0x1b')](_0x255d('0x1c'))}};var _0x2f531a=JSON['stringify'](_0x4c927f);var _0x388a91=https[_0x255d('0x1d')](_0x57a737,function(_0x373d69){_0x373d69[_0x255d('0x1e')](_0x255d('0x1f'));var _0xd1ff27='';_0x373d69['on'](_0x255d('0x20'),function(_0x833f73){_0xd1ff27+=_0x833f73;});_0x373d69['on'](_0x255d('0x21'),function(){if(_0x402796){return _0x402796['status'](_0x373d69[_0x255d('0x22')])[_0x255d('0x23')](JSON[_0x255d('0x24')](_0xd1ff27));}});});_0x388a91['on'](_0x255d('0x25'),function(_0x56b6c6){if(_0x402796){return _0x402796['status'](0x1f4)['json']({'errors':[{'message':_0x255d('0x26'),'type':_0x255d('0x27')}]});}});_0x388a91[_0x255d('0x28')](_0x2f531a);_0x388a91['end']();}exports[_0x255d('0x29')]=openIssue;exports[_0x255d('0x2a')]=function(_0x4f95d6,_0x41a99e){_0x4f95d6[_0x255d('0x2b')]['ip']=_0x4f95d6[_0x255d('0x2c')]['x-forwarded-for']||_0x4f95d6[_0x255d('0x2d')][_0x255d('0x2e')]||_0x4f95d6[_0x255d('0x2f')][_0x255d('0x2e')]||_0x4f95d6[_0x255d('0x2d')]['socket'][_0x255d('0x2e')];return openIssue(_0x4f95d6[_0x255d('0x2b')],_0x41a99e);};
\ No newline at end of file
+var _0x306a=['base64','setEncoding','utf8','status','statusCode','json','parse','error','api.jira','write','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','api','support','3eAmWpBVP0','key','MOTGUI','summary','description','stringify','issuetype','customfield_11500','email','fields','customfield_11501','newToken','customfield_11503','name','customfield_11504','reason','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','toString'];(function(_0x5e0383,_0x5b4654){var _0x53f6a0=function(_0x50bf02){while(--_0x50bf02){_0x5e0383['push'](_0x5e0383['shift']());}};_0x53f6a0(++_0x5b4654);}(_0x306a,0xe9));var _0xa306=function(_0x4ea971,_0x174234){_0x4ea971=_0x4ea971-0x0;var _0x86b88d=_0x306a[_0x4ea971];return _0x86b88d;};'use strict';var BPromise=require(_0xa306('0x0'));var https=require(_0xa306('0x1'));var logger=require('../../config/logger')(_0xa306('0x2'));var USERNAME=_0xa306('0x3');var PASSWORD=_0xa306('0x4');function openIssue(_0x52f998,_0x35de12){var _0x563136={'fields':{'project':{'key':_0x52f998[_0xa306('0x5')]||_0xa306('0x6')},'summary':(_0x52f998[_0xa306('0x7')]||'Report')+'\x20from\x20'+_0x52f998['ip'],'description':_0x52f998[_0xa306('0x8')]||JSON[_0xa306('0x9')](_0x52f998),'issuetype':{'name':_0x52f998[_0xa306('0xa')]||'Bug'}}};_0x563136['fields'][_0xa306('0xb')]=_0x52f998[_0xa306('0xc')];_0x563136[_0xa306('0xd')][_0xa306('0xe')]=_0x52f998['oldToken'];_0x563136[_0xa306('0xd')]['customfield_11502']=_0x52f998[_0xa306('0xf')];_0x563136['fields'][_0xa306('0x10')]=_0x52f998[_0xa306('0x11')];_0x563136[_0xa306('0xd')][_0xa306('0x12')]=_0x52f998[_0xa306('0x13')];_0x563136[_0xa306('0xd')]['customfield_10102']=_0x52f998['ip'];var _0x1511f6={'host':_0xa306('0x14'),'port':0x1bb,'path':_0xa306('0x15'),'method':_0xa306('0x16'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0xa306('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0xa306('0x18')](_0xa306('0x19'))}};var _0x47ac83=JSON[_0xa306('0x9')](_0x563136);var _0x560478=https['request'](_0x1511f6,function(_0x207e4b){_0x207e4b[_0xa306('0x1a')](_0xa306('0x1b'));var _0x455e70='';_0x207e4b['on']('data',function(_0x57bee1){_0x455e70+=_0x57bee1;});_0x207e4b['on']('end',function(){if(_0x35de12){return _0x35de12[_0xa306('0x1c')](_0x207e4b[_0xa306('0x1d')])[_0xa306('0x1e')](JSON[_0xa306('0x1f')](_0x455e70));}});});_0x560478['on'](_0xa306('0x20'),function(_0xe6521a){if(_0x35de12){return _0x35de12[_0xa306('0x1c')](0x1f4)[_0xa306('0x1e')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0xa306('0x21')}]});}});_0x560478[_0xa306('0x22')](_0x47ac83);_0x560478['end']();}exports[_0xa306('0x23')]=openIssue;exports[_0xa306('0x24')]=function(_0x1b58a1,_0x2ed55c){_0x1b58a1[_0xa306('0x25')]['ip']=_0x1b58a1[_0xa306('0x26')][_0xa306('0x27')]||_0x1b58a1[_0xa306('0x28')][_0xa306('0x29')]||_0x1b58a1[_0xa306('0x2a')][_0xa306('0x29')]||_0x1b58a1[_0xa306('0x28')][_0xa306('0x2a')][_0xa306('0x29')];return openIssue(_0x1b58a1[_0xa306('0x25')],_0x2ed55c);};
\ No newline at end of file
index 5067404..627b349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','delete','destroy','util','connect-timeout','Router'];(function(_0x149abb,_0x4c9c49){var _0x4fe7c8=function(_0x1d8497){while(--_0x1d8497){_0x149abb['push'](_0x149abb['shift']());}};_0x4fe7c8(++_0x4c9c49);}(_0x9bde,0xe1));var _0xe9bd=function(_0x706888,_0x2db1b4){_0x706888=_0x706888-0x0;var _0x3058a3=_0x9bde[_0x706888];return _0x3058a3;};'use strict';var multer=require('multer');var util=require(_0xe9bd('0x0'));var path=require('path');var timeout=require(_0xe9bd('0x1'));var express=require('express');var router=express[_0xe9bd('0x2')]();var fs_extra=require(_0xe9bd('0x3'));var auth=require(_0xe9bd('0x4'));var interaction=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var controller=require(_0xe9bd('0x7'));router[_0xe9bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xe9bd('0x9')]);router[_0xe9bd('0x8')](_0xe9bd('0xa'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xc')]);router[_0xe9bd('0x8')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xe')]);router[_0xe9bd('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe9bd('0x10')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller['update']);router[_0xe9bd('0x11')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x0bb5=['describe','show','post','put','/:id','update','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','/describe','isAuthenticated'];(function(_0x2fa45e,_0x4445ba){var _0x13e09b=function(_0x70cd0d){while(--_0x70cd0d){_0x2fa45e['push'](_0x2fa45e['shift']());}};_0x13e09b(++_0x4445ba);}(_0x0bb5,0x148));var _0x50bb=function(_0x35aa3d,_0x39731f){_0x35aa3d=_0x35aa3d-0x0;var _0x5f5b55=_0x0bb5[_0x35aa3d];return _0x5f5b55;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0xe')]('/',auth[_0x50bb('0xb')](),controller['create']);router[_0x50bb('0xf')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x12')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller['destroy']);module[_0x50bb('0x13')]=router;
\ No newline at end of file
index ab0adea..d72b20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x7a54,0x106));var _0x47a5=function(_0x114bf4,_0x40ab01){_0x114bf4=_0x114bf4-0x0;var _0x5f41b9=_0x7a54[_0x114bf4];return _0x5f41b9;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x7a54,0x106));var _0x47a5=function(_0x6b21f3,_0x205c0f){_0x6b21f3=_0x6b21f3-0x0;var _0x193ee2=_0x7a54[_0x6b21f3];return _0x193ee2;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index b3f19b4..1a78053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x815b=['length','hasOwnProperty','nolimit','order','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','include','JscriptyAnswerReport','findAll','rows','show','rawAttributes','intersection','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','fieldName','key','model','map','keys','query','attributes','fields'];(function(_0x333d9c,_0xd785d3){var _0x28a68b=function(_0x5295ae){while(--_0x5295ae){_0x333d9c['push'](_0x333d9c['shift']());}};_0x28a68b(++_0xd785d3);}(_0x815b,0xb4));var _0xb815=function(_0x35e4a1,_0xb430bc){_0x35e4a1=_0x35e4a1-0x0;var _0x513537=_0x815b[_0x35e4a1];return _0x513537;};'use strict';var emlformat=require(_0xb815('0x0'));var rimraf=require(_0xb815('0x1'));var zipdir=require(_0xb815('0x2'));var jsonpatch=require(_0xb815('0x3'));var rp=require(_0xb815('0x4'));var moment=require('moment');var BPromise=require(_0xb815('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb815('0x6'));var sox=require(_0xb815('0x7'));var csv=require(_0xb815('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb815('0x9'));var _=require(_0xb815('0xa'));var squel=require('squel');var crypto=require(_0xb815('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb815('0x8'));var querystring=require(_0xb815('0xc'));var Papa=require(_0xb815('0xd'));var Redis=require(_0xb815('0xe'));var authService=require(_0xb815('0xf'));var qs=require(_0xb815('0x10'));var as=require(_0xb815('0x11'));var hardwareService=require(_0xb815('0x12'));var logger=require('../../config/logger')(_0xb815('0x13'));var utils=require(_0xb815('0x14'));var config=require(_0xb815('0x15'));var licenseUtil=require(_0xb815('0x16'));var db=require(_0xb815('0x17'))['db'];function respondWithStatusCode(_0x3ce2fb,_0x3e5c50){_0x3e5c50=_0x3e5c50||0xcc;return function(_0x5af22a){if(_0x5af22a){return _0x3ce2fb['sendStatus'](_0x3e5c50);}return _0x3ce2fb[_0xb815('0x18')](_0x3e5c50)[_0xb815('0x19')]();};}function respondWithResult(_0x13a09e,_0xff2720){_0xff2720=_0xff2720||0xc8;return function(_0x32b50a){if(_0x32b50a){return _0x13a09e[_0xb815('0x18')](_0xff2720)[_0xb815('0x1a')](_0x32b50a);}};}function respondWithFilteredResult(_0x4636c7,_0x966544){return function(_0xf456ca){if(_0xf456ca){var _0x3fd87d=typeof _0x966544[_0xb815('0x1b')]===_0xb815('0x1c')&&typeof _0x966544['limit']==='undefined';var _0x41445e=_0xf456ca[_0xb815('0x1d')];var _0x3f56ab=_0x3fd87d?0x0:_0x966544[_0xb815('0x1b')];var _0x324452=_0x3fd87d?_0xf456ca[_0xb815('0x1d')]:_0x966544[_0xb815('0x1b')]+_0x966544[_0xb815('0x1e')];var _0x839f08;if(_0x324452>=_0x41445e){_0x324452=_0x41445e;_0x839f08=0xc8;}else{_0x839f08=0xce;}_0x4636c7['status'](_0x839f08);return _0x4636c7['set'](_0xb815('0x1f'),_0x3f56ab+'-'+_0x324452+'/'+_0x41445e)['json'](_0xf456ca);}return null;};}function patchUpdates(_0x261b8d){return function(_0x1ebe78){try{jsonpatch[_0xb815('0x20')](_0x1ebe78,_0x261b8d,!![]);}catch(_0x3d7291){return BPromise['reject'](_0x3d7291);}return _0x1ebe78[_0xb815('0x21')]();};}function saveUpdates(_0x3c787e,_0x590eff){return function(_0x3f0f44){if(_0x3f0f44){return _0x3f0f44[_0xb815('0x22')](_0x3c787e)[_0xb815('0x23')](function(_0x37cf47){return _0x37cf47;});}return null;};}function removeEntity(_0x2ecffe,_0x19877b){return function(_0x100113){if(_0x100113){return _0x100113[_0xb815('0x24')]()[_0xb815('0x23')](function(){_0x2ecffe[_0xb815('0x18')](0xcc)[_0xb815('0x19')]();});}};}function handleEntityNotFound(_0x1a460c,_0x55b714){return function(_0x1a07cc){if(!_0x1a07cc){_0x1a460c[_0xb815('0x25')](0x194);}return _0x1a07cc;};}function handleError(_0x350448,_0x33211e){_0x33211e=_0x33211e||0x1f4;return function(_0x5f2eaf){logger[_0xb815('0x26')](_0x5f2eaf[_0xb815('0x27')]);if(_0x5f2eaf[_0xb815('0x28')]){delete _0x5f2eaf['name'];}_0x350448[_0xb815('0x18')](_0x33211e)[_0xb815('0x29')](_0x5f2eaf);};}exports[_0xb815('0x2a')]=function(_0x26bef8,_0x2e9199){var _0x3b0152={},_0x7e8a20={},_0xd22488={'count':0x0,'rows':[]};var _0x46c545=_['map'](db['JscriptyAnswerReport']['rawAttributes'],function(_0x45b5e5){return{'name':_0x45b5e5[_0xb815('0x2b')],'type':_0x45b5e5['type'][_0xb815('0x2c')]};});_0x7e8a20[_0xb815('0x2d')]=_[_0xb815('0x2e')](_0x46c545,_0xb815('0x28'));_0x7e8a20['query']=_[_0xb815('0x2f')](_0x26bef8[_0xb815('0x30')]);_0x7e8a20['filters']=_['intersection'](_0x7e8a20[_0xb815('0x2d')],_0x7e8a20['query']);_0x3b0152[_0xb815('0x31')]=_['intersection'](_0x7e8a20[_0xb815('0x2d')],qs['fields'](_0x26bef8[_0xb815('0x30')][_0xb815('0x32')]));_0x3b0152[_0xb815('0x31')]=_0x3b0152['attributes'][_0xb815('0x33')]?_0x3b0152[_0xb815('0x31')]:_0x7e8a20['model'];if(!_0x26bef8[_0xb815('0x30')][_0xb815('0x34')](_0xb815('0x35'))){_0x3b0152[_0xb815('0x1e')]=qs[_0xb815('0x1e')](_0x26bef8[_0xb815('0x30')]['limit']);_0x3b0152[_0xb815('0x1b')]=qs[_0xb815('0x1b')](_0x26bef8[_0xb815('0x30')][_0xb815('0x1b')]);}_0x3b0152[_0xb815('0x36')]=qs['sort'](_0x26bef8['query']['sort']);_0x3b0152[_0xb815('0x37')]=qs['filters'](_[_0xb815('0x38')](_0x26bef8[_0xb815('0x30')],_0x7e8a20[_0xb815('0x39')]),_0x46c545);if(_0x26bef8[_0xb815('0x30')][_0xb815('0x3a')]){_0x3b0152[_0xb815('0x37')]=_[_0xb815('0x3b')](_0x3b0152[_0xb815('0x37')],{'$or':_[_0xb815('0x2e')](_0x46c545,function(_0x26cfe3){if(_0x26cfe3[_0xb815('0x3c')]!==_0xb815('0x3d')){var _0x1dcdb3={};_0x1dcdb3[_0x26cfe3[_0xb815('0x28')]]={'$like':'%'+_0x26bef8[_0xb815('0x30')][_0xb815('0x3a')]+'%'};return _0x1dcdb3;}})});}_0x3b0152=_[_0xb815('0x3b')]({},_0x3b0152,_0x26bef8[_0xb815('0x3e')]);var _0x554495={'where':_0x3b0152['where']};return db['JscriptyAnswerReport'][_0xb815('0x1d')](_0x554495)[_0xb815('0x23')](function(_0x563ea2){_0xd22488[_0xb815('0x1d')]=_0x563ea2;if(_0x26bef8[_0xb815('0x30')][_0xb815('0x3f')]){_0x3b0152[_0xb815('0x40')]=[{'all':!![]}];}return db[_0xb815('0x41')][_0xb815('0x42')](_0x3b0152);})['then'](function(_0x572803){_0xd22488[_0xb815('0x43')]=_0x572803;return _0xd22488;})['then'](respondWithFilteredResult(_0x2e9199,_0x3b0152))['catch'](handleError(_0x2e9199,null));};exports[_0xb815('0x44')]=function(_0xdd9e31,_0x2ff7a7){var _0x388754={'raw':!![],'where':{'id':_0xdd9e31['params']['id']}},_0x4c8655={};_0x4c8655[_0xb815('0x2d')]=_[_0xb815('0x2f')](db[_0xb815('0x41')][_0xb815('0x45')]);_0x4c8655[_0xb815('0x30')]=_[_0xb815('0x2f')](_0xdd9e31[_0xb815('0x30')]);_0x4c8655[_0xb815('0x39')]=_[_0xb815('0x46')](_0x4c8655['model'],_0x4c8655[_0xb815('0x30')]);_0x388754['attributes']=_[_0xb815('0x46')](_0x4c8655['model'],qs[_0xb815('0x32')](_0xdd9e31[_0xb815('0x30')][_0xb815('0x32')]));_0x388754['attributes']=_0x388754['attributes'][_0xb815('0x33')]?_0x388754[_0xb815('0x31')]:_0x4c8655[_0xb815('0x2d')];if(_0xdd9e31['query'][_0xb815('0x3f')]){_0x388754[_0xb815('0x40')]=[{'all':!![]}];}_0x388754=_[_0xb815('0x3b')]({},_0x388754,_0xdd9e31[_0xb815('0x3e')]);return db[_0xb815('0x41')][_0xb815('0x47')](_0x388754)[_0xb815('0x23')](handleEntityNotFound(_0x2ff7a7,null))[_0xb815('0x23')](respondWithResult(_0x2ff7a7,null))['catch'](handleError(_0x2ff7a7,null));};exports['create']=function(_0x17c39c,_0x3a46f3){return db[_0xb815('0x41')][_0xb815('0x48')](_0x17c39c['body'],{})['then'](respondWithResult(_0x3a46f3,0xc9))[_0xb815('0x49')](handleError(_0x3a46f3,null));};exports[_0xb815('0x22')]=function(_0x549106,_0xfb3946){if(_0x549106['body']['id']){delete _0x549106[_0xb815('0x4a')]['id'];}return db['JscriptyAnswerReport']['find']({'where':{'id':_0x549106[_0xb815('0x4b')]['id']}})['then'](handleEntityNotFound(_0xfb3946,null))[_0xb815('0x23')](saveUpdates(_0x549106[_0xb815('0x4a')],null))[_0xb815('0x23')](respondWithResult(_0xfb3946,null))['catch'](handleError(_0xfb3946,null));};exports[_0xb815('0x24')]=function(_0xe75271,_0x1ce83d){return db[_0xb815('0x41')][_0xb815('0x47')]({'where':{'id':_0xe75271[_0xb815('0x4b')]['id']}})[_0xb815('0x23')](handleEntityNotFound(_0x1ce83d,null))['then'](removeEntity(_0x1ce83d,null))[_0xb815('0x49')](handleError(_0x1ce83d,null));};exports[_0xb815('0x4c')]=function(_0x2ef92a,_0x4d74fc){return db['JscriptyAnswerReport'][_0xb815('0x4c')]()[_0xb815('0x23')](respondWithResult(_0x4d74fc,null))[_0xb815('0x49')](handleError(_0x4d74fc,null));};
\ No newline at end of file
+var _0x41fe=['fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','error','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','catch','show','keys','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x5c6b56,_0x50899c){var _0x422328=function(_0x1da49e){while(--_0x1da49e){_0x5c6b56['push'](_0x5c6b56['shift']());}};_0x422328(++_0x50899c);}(_0x41fe,0xd1));var _0xe41f=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0x41fe[_0x585d81];return _0x1aca0d;};'use strict';var emlformat=require(_0xe41f('0x0'));var rimraf=require(_0xe41f('0x1'));var zipdir=require(_0xe41f('0x2'));var jsonpatch=require(_0xe41f('0x3'));var rp=require(_0xe41f('0x4'));var moment=require(_0xe41f('0x5'));var BPromise=require(_0xe41f('0x6'));var Mustache=require(_0xe41f('0x7'));var util=require(_0xe41f('0x8'));var path=require(_0xe41f('0x9'));var sox=require(_0xe41f('0xa'));var csv=require(_0xe41f('0xb'));var ejs=require(_0xe41f('0xc'));var fs=require('fs');var fs_extra=require(_0xe41f('0xd'));var _=require(_0xe41f('0xe'));var squel=require(_0xe41f('0xf'));var crypto=require(_0xe41f('0x10'));var jsforce=require('jsforce');var deskjs=require(_0xe41f('0x11'));var toCsv=require(_0xe41f('0xb'));var querystring=require('querystring');var Papa=require(_0xe41f('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe41f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xe41f('0x14'));var config=require(_0xe41f('0x15'));var licenseUtil=require(_0xe41f('0x16'));var db=require(_0xe41f('0x17'))['db'];function respondWithStatusCode(_0x2ed268,_0x139162){_0x139162=_0x139162||0xcc;return function(_0x34ae3a){if(_0x34ae3a){return _0x2ed268[_0xe41f('0x18')](_0x139162);}return _0x2ed268[_0xe41f('0x19')](_0x139162)[_0xe41f('0x1a')]();};}function respondWithResult(_0x53e2f6,_0x445e1c){_0x445e1c=_0x445e1c||0xc8;return function(_0x13a2dd){if(_0x13a2dd){return _0x53e2f6['status'](_0x445e1c)[_0xe41f('0x1b')](_0x13a2dd);}};}function respondWithFilteredResult(_0x9cb27c,_0x3b5992){return function(_0x1fb373){if(_0x1fb373){var _0x194653=typeof _0x3b5992[_0xe41f('0x1c')]===_0xe41f('0x1d')&&typeof _0x3b5992['limit']==='undefined';var _0x2b5688=_0x1fb373['count'];var _0x5b5dd7=_0x194653?0x0:_0x3b5992[_0xe41f('0x1c')];var _0x15f6c1=_0x194653?_0x1fb373[_0xe41f('0x1e')]:_0x3b5992[_0xe41f('0x1c')]+_0x3b5992[_0xe41f('0x1f')];var _0x5bd220;if(_0x15f6c1>=_0x2b5688){_0x15f6c1=_0x2b5688;_0x5bd220=0xc8;}else{_0x5bd220=0xce;}_0x9cb27c[_0xe41f('0x19')](_0x5bd220);return _0x9cb27c['set'](_0xe41f('0x20'),_0x5b5dd7+'-'+_0x15f6c1+'/'+_0x2b5688)[_0xe41f('0x1b')](_0x1fb373);}return null;};}function patchUpdates(_0x4dcb21){return function(_0x3ce4d8){try{jsonpatch[_0xe41f('0x21')](_0x3ce4d8,_0x4dcb21,!![]);}catch(_0x171851){return BPromise['reject'](_0x171851);}return _0x3ce4d8[_0xe41f('0x22')]();};}function saveUpdates(_0x3666c3,_0x37fce9){return function(_0x10ee63){if(_0x10ee63){return _0x10ee63[_0xe41f('0x23')](_0x3666c3)[_0xe41f('0x24')](function(_0x9c0c33){return _0x9c0c33;});}return null;};}function removeEntity(_0x520136,_0x18c6ba){return function(_0x5a443f){if(_0x5a443f){return _0x5a443f['destroy']()[_0xe41f('0x24')](function(){_0x520136[_0xe41f('0x19')](0xcc)[_0xe41f('0x1a')]();});}};}function handleEntityNotFound(_0x4f7965,_0x1ac25a){return function(_0x573b3){if(!_0x573b3){_0x4f7965[_0xe41f('0x18')](0x194);}return _0x573b3;};}function handleError(_0x479387,_0x15ccae){_0x15ccae=_0x15ccae||0x1f4;return function(_0x5790ae){logger[_0xe41f('0x25')](_0x5790ae[_0xe41f('0x26')]);if(_0x5790ae['name']){delete _0x5790ae[_0xe41f('0x27')];}_0x479387[_0xe41f('0x19')](_0x15ccae)[_0xe41f('0x28')](_0x5790ae);};}exports[_0xe41f('0x29')]=function(_0x348531,_0x2a7bf4){var _0x1a182b={},_0x4438cf={},_0x6ec664={'count':0x0,'rows':[]};var _0x1c3c38=_[_0xe41f('0x2a')](db[_0xe41f('0x2b')][_0xe41f('0x2c')],function(_0xbca5b0){return{'name':_0xbca5b0[_0xe41f('0x2d')],'type':_0xbca5b0['type'][_0xe41f('0x2e')]};});_0x4438cf[_0xe41f('0x2f')]=_[_0xe41f('0x2a')](_0x1c3c38,_0xe41f('0x27'));_0x4438cf[_0xe41f('0x30')]=_['keys'](_0x348531[_0xe41f('0x30')]);_0x4438cf[_0xe41f('0x31')]=_[_0xe41f('0x32')](_0x4438cf[_0xe41f('0x2f')],_0x4438cf['query']);_0x1a182b['attributes']=_['intersection'](_0x4438cf[_0xe41f('0x2f')],qs[_0xe41f('0x33')](_0x348531[_0xe41f('0x30')]['fields']));_0x1a182b[_0xe41f('0x34')]=_0x1a182b[_0xe41f('0x34')][_0xe41f('0x35')]?_0x1a182b[_0xe41f('0x34')]:_0x4438cf[_0xe41f('0x2f')];if(!_0x348531[_0xe41f('0x30')][_0xe41f('0x36')](_0xe41f('0x37'))){_0x1a182b[_0xe41f('0x1f')]=qs[_0xe41f('0x1f')](_0x348531[_0xe41f('0x30')][_0xe41f('0x1f')]);_0x1a182b['offset']=qs[_0xe41f('0x1c')](_0x348531['query'][_0xe41f('0x1c')]);}_0x1a182b['order']=qs[_0xe41f('0x38')](_0x348531['query']['sort']);_0x1a182b[_0xe41f('0x39')]=qs[_0xe41f('0x31')](_[_0xe41f('0x3a')](_0x348531[_0xe41f('0x30')],_0x4438cf[_0xe41f('0x31')]),_0x1c3c38);if(_0x348531['query'][_0xe41f('0x3b')]){_0x1a182b[_0xe41f('0x39')]=_[_0xe41f('0x3c')](_0x1a182b[_0xe41f('0x39')],{'$or':_[_0xe41f('0x2a')](_0x1c3c38,function(_0x10083c){if(_0x10083c[_0xe41f('0x3d')]!=='VIRTUAL'){var _0x438ead={};_0x438ead[_0x10083c[_0xe41f('0x27')]]={'$like':'%'+_0x348531[_0xe41f('0x30')][_0xe41f('0x3b')]+'%'};return _0x438ead;}})});}_0x1a182b=_[_0xe41f('0x3c')]({},_0x1a182b,_0x348531[_0xe41f('0x3e')]);var _0x2d0cf7={'where':_0x1a182b[_0xe41f('0x39')]};return db[_0xe41f('0x2b')]['count'](_0x2d0cf7)['then'](function(_0x537fbf){_0x6ec664['count']=_0x537fbf;if(_0x348531[_0xe41f('0x30')][_0xe41f('0x3f')]){_0x1a182b[_0xe41f('0x40')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xe41f('0x41')](_0x1a182b);})[_0xe41f('0x24')](function(_0x55bf6f){_0x6ec664['rows']=_0x55bf6f;return _0x6ec664;})[_0xe41f('0x24')](respondWithFilteredResult(_0x2a7bf4,_0x1a182b))[_0xe41f('0x42')](handleError(_0x2a7bf4,null));};exports[_0xe41f('0x43')]=function(_0x384001,_0x27bdee){var _0x56e180={'raw':!![],'where':{'id':_0x384001['params']['id']}},_0x82727b={};_0x82727b[_0xe41f('0x2f')]=_[_0xe41f('0x44')](db['JscriptyAnswerReport'][_0xe41f('0x2c')]);_0x82727b['query']=_[_0xe41f('0x44')](_0x384001[_0xe41f('0x30')]);_0x82727b[_0xe41f('0x31')]=_['intersection'](_0x82727b[_0xe41f('0x2f')],_0x82727b['query']);_0x56e180[_0xe41f('0x34')]=_[_0xe41f('0x32')](_0x82727b[_0xe41f('0x2f')],qs[_0xe41f('0x33')](_0x384001[_0xe41f('0x30')][_0xe41f('0x33')]));_0x56e180[_0xe41f('0x34')]=_0x56e180[_0xe41f('0x34')]['length']?_0x56e180[_0xe41f('0x34')]:_0x82727b['model'];if(_0x384001[_0xe41f('0x30')]['includeAll']){_0x56e180[_0xe41f('0x40')]=[{'all':!![]}];}_0x56e180=_[_0xe41f('0x3c')]({},_0x56e180,_0x384001[_0xe41f('0x3e')]);return db[_0xe41f('0x2b')]['find'](_0x56e180)[_0xe41f('0x24')](handleEntityNotFound(_0x27bdee,null))['then'](respondWithResult(_0x27bdee,null))[_0xe41f('0x42')](handleError(_0x27bdee,null));};exports[_0xe41f('0x45')]=function(_0x6154a,_0x3a5974){return db['JscriptyAnswerReport'][_0xe41f('0x45')](_0x6154a['body'],{})['then'](respondWithResult(_0x3a5974,0xc9))['catch'](handleError(_0x3a5974,null));};exports[_0xe41f('0x23')]=function(_0x25b374,_0x59ef57){if(_0x25b374[_0xe41f('0x46')]['id']){delete _0x25b374[_0xe41f('0x46')]['id'];}return db[_0xe41f('0x2b')][_0xe41f('0x47')]({'where':{'id':_0x25b374[_0xe41f('0x48')]['id']}})[_0xe41f('0x24')](handleEntityNotFound(_0x59ef57,null))[_0xe41f('0x24')](saveUpdates(_0x25b374[_0xe41f('0x46')],null))[_0xe41f('0x24')](respondWithResult(_0x59ef57,null))[_0xe41f('0x42')](handleError(_0x59ef57,null));};exports['destroy']=function(_0x119e32,_0x97c6c6){return db[_0xe41f('0x2b')]['find']({'where':{'id':_0x119e32[_0xe41f('0x48')]['id']}})[_0xe41f('0x24')](handleEntityNotFound(_0x97c6c6,null))[_0xe41f('0x24')](removeEntity(_0x97c6c6,null))[_0xe41f('0x42')](handleError(_0x97c6c6,null));};exports[_0xe41f('0x49')]=function(_0x4f8f47,_0x23cb73){return db[_0xe41f('0x2b')]['describe']()['then'](respondWithResult(_0x23cb73,null))['catch'](handleError(_0x23cb73,null));};
\ No newline at end of file
index ac00f9e..061ac8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe51e=['path','rimraf','../../config/environment','exports','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0xe51e,0x18a));var _0xee51=function(_0x4a10dd,_0x2f3c1a){_0x4a10dd=_0x4a10dd-0x0;var _0x39da0d=_0xe51e[_0x4a10dd];return _0x39da0d;};'use strict';var _=require(_0xee51('0x0'));var util=require(_0xee51('0x1'));var logger=require(_0xee51('0x2'))('api');var moment=require(_0xee51('0x3'));var BPromise=require(_0xee51('0x4'));var rp=require(_0xee51('0x5'));var fs=require('fs');var path=require(_0xee51('0x6'));var rimraf=require(_0xee51('0x7'));var config=require(_0xee51('0x8'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xee51('0x9')]=function(_0x53cb3f,_0x10f72a){return _0x53cb3f['define']('JscriptyAnswerReport',attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc1e0=['exports','define','report_jscripty_answers','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes'];(function(_0x5c4e16,_0x113035){var _0x36044a=function(_0xde2f25){while(--_0xde2f25){_0x5c4e16['push'](_0x5c4e16['shift']());}};_0x36044a(++_0x113035);}(_0xc1e0,0xe7));var _0x0c1e=function(_0x3d278d,_0x56918d){_0x3d278d=_0x3d278d-0x0;var _0x178303=_0xc1e0[_0x3d278d];return _0x178303;};'use strict';var _=require(_0x0c1e('0x0'));var util=require(_0x0c1e('0x1'));var logger=require('../../config/logger')(_0x0c1e('0x2'));var moment=require(_0x0c1e('0x3'));var BPromise=require(_0x0c1e('0x4'));var rp=require(_0x0c1e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0c1e('0x6'));var config=require(_0x0c1e('0x7'));var attributes=require(_0x0c1e('0x8'));module[_0x0c1e('0x9')]=function(_0x59e1e4,_0x270b6c){return _0x59e1e4[_0x0c1e('0xa')]('JscriptyAnswerReport',attributes,{'tableName':_0x0c1e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4005bc3..9b1ef6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b96=['info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','bluebird','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x28c939,_0x110e29){var _0x527fe9=function(_0x1df2a6){while(--_0x1df2a6){_0x28c939['push'](_0x28c939['shift']());}};_0x527fe9(++_0x110e29);}(_0x1b96,0xfa));var _0x61b9=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x1b96[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x61b9('0x0'));var util=require(_0x61b9('0x1'));var moment=require('moment');var BPromise=require(_0x61b9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x61b9('0x3'))('rpc');var config=require(_0x61b9('0x4'));var jayson=require(_0x61b9('0x5'));var client=jayson[_0x61b9('0x6')][_0x61b9('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2f8d35,_0x4bcec7,_0x1c0ca4){return new BPromise(function(_0x161d1c,_0x4f1785){return client[_0x61b9('0x8')](_0x2f8d35,_0x1c0ca4)[_0x61b9('0x9')](function(_0x280368){logger[_0x61b9('0xa')](_0x61b9('0xb'),_0x4bcec7,_0x61b9('0xc'));logger[_0x61b9('0xd')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x4bcec7,'request\x20sent',JSON[_0x61b9('0xe')](_0x280368));if(_0x280368[_0x61b9('0xf')]){if(_0x280368[_0x61b9('0xf')][_0x61b9('0x10')]===0x1f4){logger[_0x61b9('0xf')](_0x61b9('0xb'),_0x4bcec7,_0x280368['error'][_0x61b9('0x11')]);return _0x4f1785(_0x280368['error']['message']);}logger['error'](_0x61b9('0xb'),_0x4bcec7,_0x280368[_0x61b9('0xf')][_0x61b9('0x11')]);return _0x161d1c(_0x280368[_0x61b9('0xf')][_0x61b9('0x11')]);}else{logger[_0x61b9('0xa')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x4bcec7,_0x61b9('0xc'));_0x161d1c(_0x280368[_0x61b9('0x12')][_0x61b9('0x11')]);}})[_0x61b9('0x13')](function(_0x509026){logger['error'](_0x61b9('0xb'),_0x4bcec7,_0x509026);_0x4f1785(_0x509026);});});}
\ No newline at end of file
+var _0x00bf=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x3fcab4,_0x224020){var _0x245550=function(_0xab0acb){while(--_0xab0acb){_0x3fcab4['push'](_0x3fcab4['shift']());}};_0x245550(++_0x224020);}(_0x00bf,0x7f));var _0xf00b=function(_0x13047f,_0x551a9d){_0x13047f=_0x13047f-0x0;var _0xd2b46a=_0x00bf[_0x13047f];return _0xd2b46a;};'use strict';var _=require('lodash');var util=require(_0xf00b('0x0'));var moment=require(_0xf00b('0x1'));var BPromise=require(_0xf00b('0x2'));var rs=require(_0xf00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf00b('0x4'));var logger=require(_0xf00b('0x5'))(_0xf00b('0x6'));var config=require(_0xf00b('0x7'));var jayson=require(_0xf00b('0x8'));var client=jayson['client'][_0xf00b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ea29a,_0x2814df,_0x4f1a55){return new BPromise(function(_0x24864c,_0x8c609){return client[_0xf00b('0xa')](_0x4ea29a,_0x4f1a55)[_0xf00b('0xb')](function(_0x432f40){logger[_0xf00b('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2814df,_0xf00b('0xd'));logger[_0xf00b('0xe')](_0xf00b('0xf'),_0x2814df,_0xf00b('0xd'),JSON[_0xf00b('0x10')](_0x432f40));if(_0x432f40['error']){if(_0x432f40[_0xf00b('0x11')][_0xf00b('0x12')]===0x1f4){logger['error'](_0xf00b('0x13'),_0x2814df,_0x432f40[_0xf00b('0x11')][_0xf00b('0x14')]);return _0x8c609(_0x432f40[_0xf00b('0x11')][_0xf00b('0x14')]);}logger[_0xf00b('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2814df,_0x432f40['error']['message']);return _0x24864c(_0x432f40['error'][_0xf00b('0x14')]);}else{logger[_0xf00b('0xc')](_0xf00b('0x13'),_0x2814df,_0xf00b('0xd'));_0x24864c(_0x432f40[_0xf00b('0x15')]['message']);}})['catch'](function(_0x199a3c){logger[_0xf00b('0x11')](_0xf00b('0x13'),_0x2814df,_0x199a3c);_0x8c609(_0x199a3c);});});}
\ No newline at end of file
index 2eba1b6..6f33d12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a5=['/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','getSummary','create','/:id/clone','clone','put','delete','exports','util','connect-timeout','../../components/auth/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','/:id'];(function(_0x1bb57d,_0x11664f){var _0x4fdf76=function(_0x41cb63){while(--_0x41cb63){_0x1bb57d['push'](_0x1bb57d['shift']());}};_0x4fdf76(++_0x11664f);}(_0x62a5,0x1ec));var _0x562a=function(_0x166eb1,_0x4b8f01){_0x166eb1=_0x166eb1-0x0;var _0x37da17=_0x62a5[_0x166eb1];return _0x37da17;};'use strict';var multer=require('multer');var util=require(_0x562a('0x0'));var path=require('path');var timeout=require(_0x562a('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x562a('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x562a('0x3'));var controller=require(_0x562a('0x4'));router[_0x562a('0x5')]('/',auth[_0x562a('0x6')](),controller['index']);router[_0x562a('0x5')](_0x562a('0x7'),auth[_0x562a('0x6')](),controller['show']);router[_0x562a('0x5')](_0x562a('0x8'),auth[_0x562a('0x6')](),controller[_0x562a('0x9')]);router[_0x562a('0x5')](_0x562a('0xa'),auth[_0x562a('0x6')](),controller[_0x562a('0xb')]);router['get'](_0x562a('0xc'),auth[_0x562a('0x6')](),timeout('30s'),controller[_0x562a('0xd')]);router['post']('/',auth[_0x562a('0x6')](),controller[_0x562a('0xe')]);router['post'](_0x562a('0xf'),auth[_0x562a('0x6')](),controller[_0x562a('0x10')]);router[_0x562a('0x11')]('/:id',auth[_0x562a('0x6')](),controller['update']);router[_0x562a('0x12')](_0x562a('0x7'),auth[_0x562a('0x6')](),controller['destroy']);module[_0x562a('0x13')]=router;
\ No newline at end of file
+var _0xb2c5=['isAuthenticated','index','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','getSummary','post','create','clone','put','/:id','update','delete','exports','multer','util','path','express','Router','../../components/auth/service','./jscriptyProject.controller','get'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xb2c5,0x160));var _0x5b2c=function(_0x1e1b18,_0x5d471b){_0x1e1b18=_0x1e1b18-0x0;var _0x3da8f2=_0xb2c5[_0x1e1b18];return _0x3da8f2;};'use strict';var multer=require(_0x5b2c('0x0'));var util=require(_0x5b2c('0x1'));var path=require(_0x5b2c('0x2'));var timeout=require('connect-timeout');var express=require(_0x5b2c('0x3'));var router=express[_0x5b2c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5b2c('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5b2c('0x6'));router[_0x5b2c('0x7')]('/',auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x9')]);router[_0x5b2c('0x7')]('/:id',auth[_0x5b2c('0x8')](),controller['show']);router[_0x5b2c('0x7')](_0x5b2c('0xa'),auth[_0x5b2c('0x8')](),controller[_0x5b2c('0xb')]);router[_0x5b2c('0x7')](_0x5b2c('0xc'),auth[_0x5b2c('0x8')](),controller[_0x5b2c('0xd')]);router[_0x5b2c('0x7')](_0x5b2c('0xe'),auth[_0x5b2c('0x8')](),timeout('30s'),controller[_0x5b2c('0xf')]);router[_0x5b2c('0x10')]('/',auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x11')]);router[_0x5b2c('0x10')]('/:id/clone',auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x12')]);router[_0x5b2c('0x13')](_0x5b2c('0x14'),auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x15')]);router[_0x5b2c('0x16')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x5b2c('0x17')]=router;
\ No newline at end of file
index 2bc9375..30b5d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79f0=['formData','stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','name','BOOLEAN','lodash','util','exports','STRING','TEXT','isObjectLike','setDataValue'];(function(_0x1e9424,_0x191cba){var _0x1bd96c=function(_0x5e952d){while(--_0x5e952d){_0x1e9424['push'](_0x1e9424['shift']());}};_0x1bd96c(++_0x191cba);}(_0x79f0,0x69));var _0x079f=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0x79f0[_0x102e37];return _0x35a07c;};'use strict';var Sequelize=require('sequelize');var _=require(_0x079f('0x0'));var util=require(_0x079f('0x1'));module[_0x079f('0x2')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize[_0x079f('0x3')]},'formData':{'type':Sequelize[_0x079f('0x4')]('long'),'set':function(_0x39de69){if(_[_0x079f('0x5')](_0x39de69)){this[_0x079f('0x6')](_0x079f('0x7'),JSON[_0x079f('0x8')](_0x39de69));}else if(_[_0x079f('0x9')](_0x39de69)){this[_0x079f('0x6')](_0x079f('0x7'),_0x39de69);}else{this[_0x079f('0x6')](_0x079f('0x7'),util[_0x079f('0xa')](_0x079f('0xb'),this['getDataValue'](_0x079f('0xc'))||'',this['getDataValue']('description')||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x079f('0xd')],'defaultValue':![]}};
\ No newline at end of file
+var _0x62a9=['sequelize','util','STRING','name','TEXT','long','isObjectLike','stringify','isString','setDataValue','formData','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN'];(function(_0x109430,_0x395adf){var _0x3465a2=function(_0x496ff2){while(--_0x496ff2){_0x109430['push'](_0x109430['shift']());}};_0x3465a2(++_0x395adf);}(_0x62a9,0xf0));var _0x962a=function(_0x295a3d,_0x56d487){_0x295a3d=_0x295a3d-0x0;var _0x23a732=_0x62a9[_0x295a3d];return _0x23a732;};'use strict';var Sequelize=require(_0x962a('0x0'));var _=require('lodash');var util=require(_0x962a('0x1'));module['exports']={'name':{'type':Sequelize[_0x962a('0x2')],'unique':_0x962a('0x3')},'description':{'type':Sequelize[_0x962a('0x2')]},'formData':{'type':Sequelize[_0x962a('0x4')](_0x962a('0x5')),'set':function(_0x56a416){if(_[_0x962a('0x6')](_0x56a416)){this['setDataValue']('formData',JSON[_0x962a('0x7')](_0x56a416));}else if(_[_0x962a('0x8')](_0x56a416)){this[_0x962a('0x9')](_0x962a('0xa'),_0x56a416);}else{this[_0x962a('0x9')](_0x962a('0xa'),util[_0x962a('0xb')](_0x962a('0xc'),this[_0x962a('0xd')]('name')||'',this[_0x962a('0xd')](_0x962a('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x962a('0xf')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x962a('0xf')],'defaultValue':![]}};
\ No newline at end of file
index e05f8cf..4f8e7ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3a3=['update','then','destroy','get','Projects','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','JscriptyProject','includeAll','include','findAll','rows','show','params','filters','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','body','createdAt','autoAssociation','getSessions','pick','ProjectId','JscriptySessionReport','getAnswers','findOne','JscriptyAnswerReport','number','toString','indexOf','replace','getSummary','startTime','starttime','parse','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','answer','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save'];(function(_0x4bbd41,_0x269933){var _0xa90941=function(_0x1641ec){while(--_0x1641ec){_0x4bbd41['push'](_0x4bbd41['shift']());}};_0xa90941(++_0x269933);}(_0xa3a3,0x141));var _0x3a3a=function(_0x5252a4,_0x866393){_0x5252a4=_0x5252a4-0x0;var _0xced423=_0xa3a3[_0x5252a4];return _0xced423;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3a3a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3a3a('0x1'));var moment=require(_0x3a3a('0x2'));var BPromise=require(_0x3a3a('0x3'));var Mustache=require(_0x3a3a('0x4'));var util=require(_0x3a3a('0x5'));var path=require(_0x3a3a('0x6'));var sox=require(_0x3a3a('0x7'));var csv=require(_0x3a3a('0x8'));var ejs=require(_0x3a3a('0x9'));var fs=require('fs');var fs_extra=require(_0x3a3a('0xa'));var _=require(_0x3a3a('0xb'));var squel=require('squel');var crypto=require(_0x3a3a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3a3a('0xd'));var Papa=require(_0x3a3a('0xe'));var Redis=require(_0x3a3a('0xf'));var authService=require(_0x3a3a('0x10'));var qs=require(_0x3a3a('0x11'));var as=require(_0x3a3a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3a3a('0x13'))(_0x3a3a('0x14'));var utils=require(_0x3a3a('0x15'));var config=require(_0x3a3a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x3a3a('0x17'))['db'];function respondWithStatusCode(_0x5f3083,_0x432593){_0x432593=_0x432593||0xcc;return function(_0x2461b4){if(_0x2461b4){return _0x5f3083[_0x3a3a('0x18')](_0x432593);}return _0x5f3083[_0x3a3a('0x19')](_0x432593)[_0x3a3a('0x1a')]();};}function respondWithResult(_0x4cdb22,_0x11c936){_0x11c936=_0x11c936||0xc8;return function(_0x556dd8){if(_0x556dd8){return _0x4cdb22[_0x3a3a('0x19')](_0x11c936)[_0x3a3a('0x1b')](_0x556dd8);}};}function respondWithFilteredResult(_0x1bd42b,_0x3eb070){return function(_0x4b7a15){if(_0x4b7a15){var _0xcd1fc2=typeof _0x3eb070['offset']===_0x3a3a('0x1c')&&typeof _0x3eb070['limit']==='undefined';var _0x5f3784=_0x4b7a15[_0x3a3a('0x1d')];var _0x3515a4=_0xcd1fc2?0x0:_0x3eb070[_0x3a3a('0x1e')];var _0x46539d=_0xcd1fc2?_0x4b7a15[_0x3a3a('0x1d')]:_0x3eb070['offset']+_0x3eb070[_0x3a3a('0x1f')];var _0x1056e9;if(_0x46539d>=_0x5f3784){_0x46539d=_0x5f3784;_0x1056e9=0xc8;}else{_0x1056e9=0xce;}_0x1bd42b[_0x3a3a('0x19')](_0x1056e9);return _0x1bd42b['set'](_0x3a3a('0x20'),_0x3515a4+'-'+_0x46539d+'/'+_0x5f3784)[_0x3a3a('0x1b')](_0x4b7a15);}return null;};}function patchUpdates(_0xa87f2a){return function(_0xf42d41){try{jsonpatch[_0x3a3a('0x21')](_0xf42d41,_0xa87f2a,!![]);}catch(_0x164ae9){return BPromise[_0x3a3a('0x22')](_0x164ae9);}return _0xf42d41[_0x3a3a('0x23')]();};}function saveUpdates(_0x4e9ebd,_0x27d71a){return function(_0x33ed7d){if(_0x33ed7d){return _0x33ed7d[_0x3a3a('0x24')](_0x4e9ebd)[_0x3a3a('0x25')](function(_0x3f5fbc){return _0x3f5fbc;});}return null;};}function removeEntity(_0x3a4be2,_0x5f2abb){return function(_0x18b58f){if(_0x18b58f){return _0x18b58f[_0x3a3a('0x26')]()[_0x3a3a('0x25')](function(){var _0x1f569a=_0x18b58f[_0x3a3a('0x27')]({'plain':!![]});var _0xb02405=_0x3a3a('0x28');return db[_0x3a3a('0x29')][_0x3a3a('0x26')]({'where':{'type':_0xb02405,'resourceId':_0x1f569a['id']}})[_0x3a3a('0x25')](function(){return _0x18b58f;});})[_0x3a3a('0x25')](function(){_0x3a4be2[_0x3a3a('0x19')](0xcc)[_0x3a3a('0x1a')]();});}};}function handleEntityNotFound(_0x2d51bf,_0x3ee61b){return function(_0x6ad62c){if(!_0x6ad62c){_0x2d51bf[_0x3a3a('0x18')](0x194);}return _0x6ad62c;};}function handleError(_0x39ec35,_0x3f0de8){_0x3f0de8=_0x3f0de8||0x1f4;return function(_0x37869c){logger[_0x3a3a('0x2a')](_0x37869c[_0x3a3a('0x2b')]);if(_0x37869c[_0x3a3a('0x2c')]){delete _0x37869c[_0x3a3a('0x2c')];}_0x39ec35[_0x3a3a('0x19')](_0x3f0de8)['send'](_0x37869c);};}exports[_0x3a3a('0x2d')]=function(_0x3ca07f,_0x5769c2){var _0x4bf678={},_0x5303c8={},_0x413cc5={'count':0x0,'rows':[]};var _0x38d861=_[_0x3a3a('0x2e')](db['JscriptyProject'][_0x3a3a('0x2f')],function(_0xc8c924){return{'name':_0xc8c924[_0x3a3a('0x30')],'type':_0xc8c924[_0x3a3a('0x31')]['key']};});_0x5303c8[_0x3a3a('0x32')]=_['map'](_0x38d861,_0x3a3a('0x2c'));_0x5303c8[_0x3a3a('0x33')]=_[_0x3a3a('0x34')](_0x3ca07f['query']);_0x5303c8['filters']=_[_0x3a3a('0x35')](_0x5303c8['model'],_0x5303c8['query']);_0x4bf678['attributes']=_['intersection'](_0x5303c8[_0x3a3a('0x32')],qs[_0x3a3a('0x36')](_0x3ca07f[_0x3a3a('0x33')][_0x3a3a('0x36')]));_0x4bf678['attributes']=_0x4bf678[_0x3a3a('0x37')][_0x3a3a('0x38')]?_0x4bf678[_0x3a3a('0x37')]:_0x5303c8[_0x3a3a('0x32')];if(!_0x3ca07f['query'][_0x3a3a('0x39')](_0x3a3a('0x3a'))){_0x4bf678['limit']=qs[_0x3a3a('0x1f')](_0x3ca07f[_0x3a3a('0x33')][_0x3a3a('0x1f')]);_0x4bf678[_0x3a3a('0x1e')]=qs['offset'](_0x3ca07f[_0x3a3a('0x33')][_0x3a3a('0x1e')]);}_0x4bf678[_0x3a3a('0x3b')]=qs['sort'](_0x3ca07f['query'][_0x3a3a('0x3c')]);_0x4bf678[_0x3a3a('0x3d')]=qs['filters'](_['pick'](_0x3ca07f[_0x3a3a('0x33')],_0x5303c8['filters']),_0x38d861);if(_0x3ca07f[_0x3a3a('0x33')][_0x3a3a('0x3e')]){_0x4bf678[_0x3a3a('0x3d')]=_[_0x3a3a('0x3f')](_0x4bf678['where'],{'$or':_[_0x3a3a('0x2e')](_0x38d861,function(_0x3b8885){if(_0x3b8885[_0x3a3a('0x31')]!==_0x3a3a('0x40')){var _0x56771f={};_0x56771f[_0x3b8885[_0x3a3a('0x2c')]]={'$like':'%'+_0x3ca07f[_0x3a3a('0x33')][_0x3a3a('0x3e')]+'%'};return _0x56771f;}})});}_0x4bf678=_['merge']({},_0x4bf678,_0x3ca07f[_0x3a3a('0x41')]);var _0x35f831={'where':_0x4bf678[_0x3a3a('0x3d')]};return db[_0x3a3a('0x42')][_0x3a3a('0x1d')](_0x35f831)['then'](function(_0x324629){_0x413cc5[_0x3a3a('0x1d')]=_0x324629;if(_0x3ca07f[_0x3a3a('0x33')][_0x3a3a('0x43')]){_0x4bf678[_0x3a3a('0x44')]=[{'all':!![]}];}return db['JscriptyProject'][_0x3a3a('0x45')](_0x4bf678);})['then'](function(_0x3033f6){_0x413cc5[_0x3a3a('0x46')]=_0x3033f6;return _0x413cc5;})[_0x3a3a('0x25')](respondWithFilteredResult(_0x5769c2,_0x4bf678))['catch'](handleError(_0x5769c2,null));};exports[_0x3a3a('0x47')]=function(_0x277514,_0x5a18ee){var _0x456483={'raw':![],'where':{'id':_0x277514[_0x3a3a('0x48')]['id']}},_0x36284c={};_0x36284c[_0x3a3a('0x32')]=_[_0x3a3a('0x34')](db[_0x3a3a('0x42')][_0x3a3a('0x2f')]);_0x36284c[_0x3a3a('0x33')]=_[_0x3a3a('0x34')](_0x277514[_0x3a3a('0x33')]);_0x36284c[_0x3a3a('0x49')]=_['intersection'](_0x36284c[_0x3a3a('0x32')],_0x36284c[_0x3a3a('0x33')]);_0x456483['attributes']=_['intersection'](_0x36284c[_0x3a3a('0x32')],qs[_0x3a3a('0x36')](_0x277514[_0x3a3a('0x33')][_0x3a3a('0x36')]));_0x456483[_0x3a3a('0x37')]=_0x456483[_0x3a3a('0x37')]['length']?_0x456483[_0x3a3a('0x37')]:_0x36284c['model'];if(_0x277514['query'][_0x3a3a('0x43')]){_0x456483[_0x3a3a('0x44')]=[{'all':!![]}];}_0x456483=_[_0x3a3a('0x3f')]({},_0x456483,_0x277514['options']);return db[_0x3a3a('0x42')]['find'](_0x456483)[_0x3a3a('0x25')](handleEntityNotFound(_0x5a18ee,null))[_0x3a3a('0x25')](respondWithResult(_0x5a18ee,null))[_0x3a3a('0x4a')](handleError(_0x5a18ee,null));};exports[_0x3a3a('0x4b')]=function(_0x505160,_0x10dc8e){return db[_0x3a3a('0x42')]['create'](_0x505160['body'],{})[_0x3a3a('0x25')](function(_0x6660d4){var _0x24bc41=_0x505160[_0x3a3a('0x4c')][_0x3a3a('0x27')]({'plain':!![]});if(!_0x24bc41)throw new Error(_0x3a3a('0x4d'));if(_0x24bc41[_0x3a3a('0x4e')]===_0x3a3a('0x4c')){var _0x415270=_0x6660d4[_0x3a3a('0x27')]({'plain':!![]});var _0x1b35a4=_0x3a3a('0x28');return db[_0x3a3a('0x4f')][_0x3a3a('0x50')]({'where':{'name':_0x1b35a4,'userProfileId':_0x24bc41[_0x3a3a('0x51')]},'raw':!![]})['then'](function(_0x4ff7de){if(_0x4ff7de&&_0x4ff7de['autoAssociation']===0x0){return db[_0x3a3a('0x29')][_0x3a3a('0x4b')]({'name':_0x415270[_0x3a3a('0x2c')],'resourceId':_0x415270['id'],'type':_0x4ff7de[_0x3a3a('0x2c')],'sectionId':_0x4ff7de['id']},{})[_0x3a3a('0x25')](function(){return _0x6660d4;});}else{return _0x6660d4;}})[_0x3a3a('0x4a')](function(_0x4f9f2b){logger['error'](_0x3a3a('0x52'),_0x4f9f2b);throw _0x4f9f2b;});}return _0x6660d4;})['then'](respondWithResult(_0x10dc8e,0xc9))[_0x3a3a('0x4a')](handleError(_0x10dc8e,null));};exports[_0x3a3a('0x53')]=function(_0x1eeb80,_0x22b8b8){var _0x8c378e={'where':{'id':_0x1eeb80['params']['id']}},_0x40d5c1={};_0x40d5c1[_0x3a3a('0x32')]=_[_0x3a3a('0x34')](db[_0x3a3a('0x42')][_0x3a3a('0x2f')]);_0x8c378e[_0x3a3a('0x37')]=_['intersection'](_0x40d5c1[_0x3a3a('0x32')],qs[_0x3a3a('0x36')](_0x1eeb80['query']['fields']));_0x8c378e[_0x3a3a('0x37')]=_0x8c378e[_0x3a3a('0x37')]['length']?_0x8c378e[_0x3a3a('0x37')]:_0x40d5c1[_0x3a3a('0x32')];if(_0x1eeb80[_0x3a3a('0x33')]['includeAll']){_0x8c378e[_0x3a3a('0x44')]=[{'all':!![]}];}_0x8c378e=_[_0x3a3a('0x3f')]({},_0x8c378e,_0x1eeb80[_0x3a3a('0x41')]);return db['JscriptyProject'][_0x3a3a('0x50')](_0x8c378e)[_0x3a3a('0x25')](handleEntityNotFound(_0x22b8b8,null))[_0x3a3a('0x25')](function(_0x29f4a7){if(_0x29f4a7){var _0x5ba97c=_0x29f4a7['get']({'plain':!![]});_0x5ba97c=qs[_0x3a3a('0x54')](_0x5ba97c,['id','createdAt',_0x3a3a('0x55')]);_0x1eeb80[_0x3a3a('0x56')]=_[_0x3a3a('0x54')](_0x1eeb80[_0x3a3a('0x56')],['id',_0x3a3a('0x57'),_0x3a3a('0x55')]);return db[_0x3a3a('0x42')]['create'](_['merge'](_0x5ba97c,_0x1eeb80[_0x3a3a('0x56')]),{'include':_0x1eeb80[_0x3a3a('0x33')][_0x3a3a('0x43')]?[{'all':!![]}]:undefined})[_0x3a3a('0x25')](function(_0x4de367){var _0x4c06d6=_0x1eeb80[_0x3a3a('0x4c')]['get']({'plain':!![]});if(!_0x4c06d6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4c06d6['role']===_0x3a3a('0x4c')){var _0x55b913=_0x4de367[_0x3a3a('0x27')]({'plain':!![]});var _0x5b5541=_0x3a3a('0x28');return db[_0x3a3a('0x4f')][_0x3a3a('0x50')]({'where':{'name':_0x5b5541,'userProfileId':_0x4c06d6['userProfileId']},'raw':!![]})[_0x3a3a('0x25')](function(_0x7aea1d){if(_0x7aea1d&&_0x7aea1d[_0x3a3a('0x58')]===0x0){return db[_0x3a3a('0x29')][_0x3a3a('0x4b')]({'name':_0x55b913[_0x3a3a('0x2c')],'resourceId':_0x55b913['id'],'type':_0x7aea1d[_0x3a3a('0x2c')],'sectionId':_0x7aea1d['id']},{})[_0x3a3a('0x25')](function(){return _0x4de367;});}else{return _0x4de367;}})[_0x3a3a('0x4a')](function(_0x41ca8b){logger[_0x3a3a('0x2a')](_0x3a3a('0x52'),_0x41ca8b);throw _0x41ca8b;});}return _0x4de367;});}})[_0x3a3a('0x25')](respondWithResult(_0x22b8b8,0xc9))[_0x3a3a('0x4a')](handleError(_0x22b8b8,null));};exports['update']=function(_0xcfc768,_0x59d43a){if(_0xcfc768['body']['id']){delete _0xcfc768[_0x3a3a('0x56')]['id'];}return db[_0x3a3a('0x42')]['find']({'where':{'id':_0xcfc768[_0x3a3a('0x48')]['id']}})['then'](handleEntityNotFound(_0x59d43a,null))[_0x3a3a('0x25')](saveUpdates(_0xcfc768[_0x3a3a('0x56')],null))['then'](respondWithResult(_0x59d43a,null))['catch'](handleError(_0x59d43a,null));};exports[_0x3a3a('0x26')]=function(_0x36cfba,_0x110c98){return db[_0x3a3a('0x42')][_0x3a3a('0x50')]({'where':{'id':_0x36cfba[_0x3a3a('0x48')]['id']}})[_0x3a3a('0x25')](handleEntityNotFound(_0x110c98,null))[_0x3a3a('0x25')](removeEntity(_0x110c98,null))[_0x3a3a('0x4a')](handleError(_0x110c98,null));};exports[_0x3a3a('0x59')]=function(_0x30d703,_0x3e2366,_0x5a930a){var _0x2ce2ab={'raw':!![],'where':{}};var _0xc5d27e={};var _0x305ab2={'count':0x0,'rows':[]};return db[_0x3a3a('0x42')]['findOne']({'where':{'id':_0x30d703[_0x3a3a('0x48')]['id']}})[_0x3a3a('0x25')](handleEntityNotFound(_0x3e2366,null))[_0x3a3a('0x25')](function(_0x184a99){if(_0x184a99){_0xc5d27e[_0x3a3a('0x32')]=_[_0x3a3a('0x34')](db['JscriptySessionReport'][_0x3a3a('0x2f')]);_0xc5d27e[_0x3a3a('0x33')]=_['keys'](_0x30d703[_0x3a3a('0x33')]);_0xc5d27e[_0x3a3a('0x49')]=_[_0x3a3a('0x35')](_0xc5d27e[_0x3a3a('0x32')],_0xc5d27e[_0x3a3a('0x33')]);_0x2ce2ab[_0x3a3a('0x37')]=_[_0x3a3a('0x35')](_0xc5d27e[_0x3a3a('0x32')],qs['fields'](_0x30d703[_0x3a3a('0x33')][_0x3a3a('0x36')]));_0x2ce2ab[_0x3a3a('0x37')]=_0x2ce2ab['attributes'][_0x3a3a('0x38')]?_0x2ce2ab[_0x3a3a('0x37')]:_0xc5d27e['model'];if(!_0x30d703[_0x3a3a('0x33')]['hasOwnProperty']('nolimit')){_0x2ce2ab[_0x3a3a('0x1f')]=qs[_0x3a3a('0x1f')](_0x30d703['query'][_0x3a3a('0x1f')]);_0x2ce2ab[_0x3a3a('0x1e')]=qs[_0x3a3a('0x1e')](_0x30d703['query'][_0x3a3a('0x1e')]);}_0x2ce2ab[_0x3a3a('0x3b')]=qs[_0x3a3a('0x3c')](_0x30d703['query']['sort']);_0x2ce2ab['where']=qs[_0x3a3a('0x49')](_[_0x3a3a('0x5a')](_0x30d703[_0x3a3a('0x33')],_0xc5d27e[_0x3a3a('0x49')]));_0x2ce2ab[_0x3a3a('0x3d')][_0x3a3a('0x5b')]=_0x184a99['id'];if(_0x30d703[_0x3a3a('0x33')][_0x3a3a('0x3e')]){_0x2ce2ab['where']=_[_0x3a3a('0x3f')](_0x2ce2ab[_0x3a3a('0x3d')],{'$or':_[_0x3a3a('0x2e')](_0x2ce2ab['attributes'],function(_0x205316){var _0x89a120={};_0x89a120[_0x205316]={'$like':'%'+_0x30d703[_0x3a3a('0x33')][_0x3a3a('0x3e')]+'%'};return _0x89a120;})});}_0x2ce2ab=_[_0x3a3a('0x3f')]({},_0x2ce2ab,_0x30d703[_0x3a3a('0x41')]);return db[_0x3a3a('0x5c')][_0x3a3a('0x1d')]({'where':_0x2ce2ab[_0x3a3a('0x3d')]})[_0x3a3a('0x25')](function(_0x5dfe3a){_0x305ab2[_0x3a3a('0x1d')]=_0x5dfe3a;if(_0x30d703['query'][_0x3a3a('0x43')]){_0x2ce2ab[_0x3a3a('0x44')]=[{'all':!![]}];}return db[_0x3a3a('0x5c')]['findAll'](_0x2ce2ab);})[_0x3a3a('0x25')](function(_0x544d9d){_0x305ab2['rows']=_0x544d9d;return _0x305ab2;});}})[_0x3a3a('0x25')](respondWithFilteredResult(_0x3e2366,_0x2ce2ab))['catch'](handleError(_0x3e2366,null));};exports[_0x3a3a('0x5d')]=function(_0x52a7c7,_0x1d66ce,_0x24216b){var _0x4a2eb3={'raw':!![],'where':{}};var _0x5be038={};var _0x4e904d={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x3a3a('0x5e')]({'where':{'id':_0x52a7c7[_0x3a3a('0x48')]['id']}})[_0x3a3a('0x25')](handleEntityNotFound(_0x1d66ce,null))[_0x3a3a('0x25')](function(_0x44353a){if(_0x44353a){_0x5be038['model']=_[_0x3a3a('0x34')](db[_0x3a3a('0x5f')][_0x3a3a('0x2f')]);_0x5be038[_0x3a3a('0x33')]=_[_0x3a3a('0x34')](_0x52a7c7['query']);_0x5be038[_0x3a3a('0x49')]=_[_0x3a3a('0x35')](_0x5be038[_0x3a3a('0x32')],_0x5be038['query']);_0x4a2eb3[_0x3a3a('0x37')]=_[_0x3a3a('0x35')](_0x5be038[_0x3a3a('0x32')],qs[_0x3a3a('0x36')](_0x52a7c7[_0x3a3a('0x33')][_0x3a3a('0x36')]));_0x4a2eb3[_0x3a3a('0x37')]=_0x4a2eb3[_0x3a3a('0x37')][_0x3a3a('0x38')]?_0x4a2eb3['attributes']:_0x5be038[_0x3a3a('0x32')];if(!_0x52a7c7[_0x3a3a('0x33')][_0x3a3a('0x39')]('nolimit')){_0x4a2eb3[_0x3a3a('0x1f')]=qs[_0x3a3a('0x1f')](_0x52a7c7['query'][_0x3a3a('0x1f')]);_0x4a2eb3[_0x3a3a('0x1e')]=qs[_0x3a3a('0x1e')](_0x52a7c7[_0x3a3a('0x33')][_0x3a3a('0x1e')]);}_0x4a2eb3[_0x3a3a('0x3b')]=qs[_0x3a3a('0x3c')](_0x52a7c7[_0x3a3a('0x33')][_0x3a3a('0x3c')]);_0x4a2eb3['where']=qs[_0x3a3a('0x49')](_[_0x3a3a('0x5a')](_0x52a7c7[_0x3a3a('0x33')],_0x5be038[_0x3a3a('0x49')]));_0x4a2eb3['where'][_0x3a3a('0x5b')]=_0x44353a['id'];if(_0x52a7c7[_0x3a3a('0x33')][_0x3a3a('0x3e')]){_0x4a2eb3[_0x3a3a('0x3d')]=_[_0x3a3a('0x3f')](_0x4a2eb3[_0x3a3a('0x3d')],{'$or':_[_0x3a3a('0x2e')](_0x4a2eb3[_0x3a3a('0x37')],function(_0x2a94e3){var _0x25d17f={};_0x25d17f[_0x2a94e3]={'$like':'%'+_0x52a7c7[_0x3a3a('0x33')][_0x3a3a('0x3e')]+'%'};return _0x25d17f;})});}_0x4a2eb3=_[_0x3a3a('0x3f')]({},_0x4a2eb3,_0x52a7c7[_0x3a3a('0x41')]);return db[_0x3a3a('0x5f')][_0x3a3a('0x1d')]({'where':_0x4a2eb3[_0x3a3a('0x3d')]})[_0x3a3a('0x25')](function(_0x1b1dd4){_0x4e904d[_0x3a3a('0x1d')]=_0x1b1dd4;if(_0x52a7c7[_0x3a3a('0x33')]['includeAll']){_0x4a2eb3[_0x3a3a('0x44')]=[{'all':!![]}];}return db[_0x3a3a('0x5f')]['findAll'](_0x4a2eb3);})['then'](function(_0x3ecf29){_0x4e904d[_0x3a3a('0x46')]=_0x3ecf29;return _0x4e904d;});}})[_0x3a3a('0x25')](respondWithFilteredResult(_0x1d66ce,_0x4a2eb3))[_0x3a3a('0x4a')](handleError(_0x1d66ce,null));};function char(_0x15cb2b){return _0x3a3a('0x60')===typeof _0x15cb2b?String['fromCharCode'][_0x3a3a('0x21')](null,arguments):_0x15cb2b;}function needsEncapsulation(_0x290064){return!!_0x290064&&(_0x290064[_0x3a3a('0x61')]()[_0x3a3a('0x62')](char(0xd))>=0x0||_0x290064[_0x3a3a('0x61')]()[_0x3a3a('0x62')](char(0xa))>=0x0||_0x290064[_0x3a3a('0x61')]()[_0x3a3a('0x62')](char(0x2c))>=0x0||_0x290064[_0x3a3a('0x61')]()[_0x3a3a('0x62')](char(0x22))>=0x0);}function encapsulate(_0x340ff9){var _0x47196f=char(0x22),_0x224911='\x5c'+char(0x22),_0x478179=_0x340ff9['toString']()[_0x3a3a('0x63')](new RegExp(_0x47196f,'g'),_0x224911);return _0x47196f+_0x478179+_0x47196f;}exports[_0x3a3a('0x64')]=function(_0xaff4d8,_0x4e3937,_0x458f30){var _0x4515a9,_0x3d17d4;var _0x425a76={'where':{'ProjectId':_0xaff4d8['params']['id']}};if(_0xaff4d8['query'][_0x3a3a('0x65')]){_0x425a76[_0x3a3a('0x3d')][_0x3a3a('0x66')]=JSON[_0x3a3a('0x67')](_0xaff4d8[_0x3a3a('0x33')][_0x3a3a('0x65')]);}return db[_0x3a3a('0x5c')][_0x3a3a('0x45')](_0x425a76)['then'](handleEntityNotFound(_0x4e3937,null))[_0x3a3a('0x25')](function(_0x5e2b5c){if(_0x5e2b5c){_0x4515a9=_0x5e2b5c;return db['JscriptyQuestionReport'][_0x3a3a('0x45')]({'where':{'SessionId':{'$in':_[_0x3a3a('0x2e')](_0x4515a9,'id')},'ProjectId':_0xaff4d8[_0x3a3a('0x48')]['id']},'order':'-createdAt'});}})[_0x3a3a('0x25')](handleEntityNotFound(_0x4e3937,null))[_0x3a3a('0x25')](function(_0x62d78d){if(_0x62d78d){_0x3d17d4=_0x62d78d;var _0x27da3a={};for(var _0x217726=0x0,_0xc9dbb4=_0x3d17d4[_0x3a3a('0x38')];_0x217726<_0xc9dbb4;_0x217726++){if(!_0x27da3a[_0x3a3a('0x39')](_0x3d17d4[_0x217726][_0x3a3a('0x68')])){_0x27da3a[_0x3d17d4[_0x217726][_0x3a3a('0x68')]]=needsEncapsulation(_0x3d17d4[_0x217726][_0x3a3a('0x69')])?encapsulate(_0x3d17d4[_0x217726][_0x3a3a('0x69')]):_0x3d17d4[_0x217726][_0x3a3a('0x69')];}}var _0x179ace=[],_0x42ba84={};for(var _0x4a1ba1=0x0,_0x1a4405=_0x4515a9[_0x3a3a('0x38')];_0x4a1ba1<_0x1a4405;_0x4a1ba1++){_0x42ba84={'ProjectId':_0xaff4d8[_0x3a3a('0x48')]['id'],'SessionId':_0x4515a9[_0x4a1ba1]['id'],'StartTime':moment(_0x4515a9[_0x4a1ba1][_0x3a3a('0x66')])[_0x3a3a('0x6a')](_0x3a3a('0x6b'))};for(var _0x5b9623=0x0,_0x464581=_0x3d17d4[_0x3a3a('0x38')];_0x5b9623<_0x464581;_0x5b9623++){if(_0x3d17d4[_0x5b9623]['SessionId']==_0x4515a9[_0x4a1ba1]['id']&&_0x27da3a[_0x3a3a('0x39')](_0x3d17d4[_0x5b9623][_0x3a3a('0x68')])){_0x42ba84[_0x27da3a[_0x3d17d4[_0x5b9623][_0x3a3a('0x68')]]]=_0x3d17d4[_0x5b9623][_0x3a3a('0x6c')];}}for(var _0x4412d3 in _0x27da3a){if(!_0x42ba84[_0x3a3a('0x39')](_0x27da3a[_0x4412d3])){_0x42ba84[_0x27da3a[_0x4412d3]]=null;}}_0x179ace['push'](_0x42ba84);}return _0x179ace;}})[_0x3a3a('0x25')](function(_0x14e935){if(!_[_0x3a3a('0x6d')](_0x14e935)){var _0x23db73=toCsv(_0x14e935);var _0x56a4db=Date[_0x3a3a('0x6e')]();fs['writeFileSync'](util[_0x3a3a('0x6a')](_0x3a3a('0x6f'),_0xaff4d8[_0x3a3a('0x48')]['id'],_0x56a4db),_0x23db73);_0x4e3937[_0x3a3a('0x70')](_0x3a3a('0x71'),_0x3a3a('0x72')+util[_0x3a3a('0x6a')](_0x3a3a('0x73'),_0xaff4d8[_0x3a3a('0x48')]['id'],_0x56a4db));_0x4e3937[_0x3a3a('0x70')](_0x3a3a('0x74'),_0x3a3a('0x75'));return _0x4e3937[_0x3a3a('0x76')](util[_0x3a3a('0x6a')](_0x3a3a('0x6f'),_0xaff4d8[_0x3a3a('0x48')]['id'],_0x56a4db));}else{return _0x4e3937['sendStatus'](0xcc);}})[_0x3a3a('0x4a')](handleError(_0x4e3937,null));};
\ No newline at end of file
+var _0x7497=['UserProfileResource','error','stack','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','omit','createdAt','updatedAt','Projects','update','destroy','getSessions','JscriptySessionReport','ProjectId','getAnswers','findOne','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','replace','startTime','starttime','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','isEmpty','now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','sendStatus','eml-format','rimraf','zip-dir','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','json','apply','reject','save','then','get'];(function(_0x308374,_0x550e85){var _0x1f71e0=function(_0x18377d){while(--_0x18377d){_0x308374['push'](_0x308374['shift']());}};_0x1f71e0(++_0x550e85);}(_0x7497,0xd0));var _0x7749=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7497[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7749('0x0'));var rimraf=require(_0x7749('0x1'));var zipdir=require(_0x7749('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7749('0x3'));var Mustache=require(_0x7749('0x4'));var util=require('util');var path=require(_0x7749('0x5'));var sox=require(_0x7749('0x6'));var csv=require(_0x7749('0x7'));var ejs=require(_0x7749('0x8'));var fs=require('fs');var fs_extra=require(_0x7749('0x9'));var _=require(_0x7749('0xa'));var squel=require(_0x7749('0xb'));var crypto=require(_0x7749('0xc'));var jsforce=require(_0x7749('0xd'));var deskjs=require(_0x7749('0xe'));var toCsv=require(_0x7749('0x7'));var querystring=require('querystring');var Papa=require(_0x7749('0xf'));var Redis=require('ioredis');var authService=require(_0x7749('0x10'));var qs=require(_0x7749('0x11'));var as=require(_0x7749('0x12'));var hardwareService=require(_0x7749('0x13'));var logger=require(_0x7749('0x14'))(_0x7749('0x15'));var utils=require(_0x7749('0x16'));var config=require(_0x7749('0x17'));var licenseUtil=require(_0x7749('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d3608,_0xd24e42){_0xd24e42=_0xd24e42||0xcc;return function(_0x5b5ac5){if(_0x5b5ac5){return _0x4d3608['sendStatus'](_0xd24e42);}return _0x4d3608[_0x7749('0x19')](_0xd24e42)[_0x7749('0x1a')]();};}function respondWithResult(_0x165837,_0x92dc6c){_0x92dc6c=_0x92dc6c||0xc8;return function(_0x112ab8){if(_0x112ab8){return _0x165837[_0x7749('0x19')](_0x92dc6c)['json'](_0x112ab8);}};}function respondWithFilteredResult(_0x4ecd00,_0x209ba6){return function(_0x427943){if(_0x427943){var _0x5f4a55=typeof _0x209ba6[_0x7749('0x1b')]===_0x7749('0x1c')&&typeof _0x209ba6[_0x7749('0x1d')]===_0x7749('0x1c');var _0x129e27=_0x427943[_0x7749('0x1e')];var _0x46e548=_0x5f4a55?0x0:_0x209ba6[_0x7749('0x1b')];var _0x41ba4d=_0x5f4a55?_0x427943[_0x7749('0x1e')]:_0x209ba6['offset']+_0x209ba6[_0x7749('0x1d')];var _0x16f276;if(_0x41ba4d>=_0x129e27){_0x41ba4d=_0x129e27;_0x16f276=0xc8;}else{_0x16f276=0xce;}_0x4ecd00['status'](_0x16f276);return _0x4ecd00[_0x7749('0x1f')]('Content-Range',_0x46e548+'-'+_0x41ba4d+'/'+_0x129e27)[_0x7749('0x20')](_0x427943);}return null;};}function patchUpdates(_0x11013a){return function(_0x4040ef){try{jsonpatch[_0x7749('0x21')](_0x4040ef,_0x11013a,!![]);}catch(_0x356f3b){return BPromise[_0x7749('0x22')](_0x356f3b);}return _0x4040ef[_0x7749('0x23')]();};}function saveUpdates(_0x397a24,_0x4366a8){return function(_0x1a1d2d){if(_0x1a1d2d){return _0x1a1d2d['update'](_0x397a24)[_0x7749('0x24')](function(_0x9a2283){return _0x9a2283;});}return null;};}function removeEntity(_0x5df614,_0x5efcae){return function(_0x413eae){if(_0x413eae){return _0x413eae['destroy']()[_0x7749('0x24')](function(){var _0x2c9879=_0x413eae[_0x7749('0x25')]({'plain':!![]});var _0x40f84b='Projects';return db[_0x7749('0x26')]['destroy']({'where':{'type':_0x40f84b,'resourceId':_0x2c9879['id']}})['then'](function(){return _0x413eae;});})['then'](function(){_0x5df614['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cd489,_0x1b9353){return function(_0x3e3698){if(!_0x3e3698){_0x5cd489['sendStatus'](0x194);}return _0x3e3698;};}function handleError(_0x40f44a,_0x2a90af){_0x2a90af=_0x2a90af||0x1f4;return function(_0x8112c9){logger[_0x7749('0x27')](_0x8112c9[_0x7749('0x28')]);if(_0x8112c9[_0x7749('0x29')]){delete _0x8112c9['name'];}_0x40f44a[_0x7749('0x19')](_0x2a90af)[_0x7749('0x2a')](_0x8112c9);};}exports[_0x7749('0x2b')]=function(_0x51216e,_0xfda033){var _0x98a9b5={},_0xdc2321={},_0xe35172={'count':0x0,'rows':[]};var _0x38ea3d=_[_0x7749('0x2c')](db[_0x7749('0x2d')][_0x7749('0x2e')],function(_0x34478f){return{'name':_0x34478f[_0x7749('0x2f')],'type':_0x34478f[_0x7749('0x30')][_0x7749('0x31')]};});_0xdc2321[_0x7749('0x32')]=_[_0x7749('0x2c')](_0x38ea3d,_0x7749('0x29'));_0xdc2321[_0x7749('0x33')]=_[_0x7749('0x34')](_0x51216e['query']);_0xdc2321[_0x7749('0x35')]=_[_0x7749('0x36')](_0xdc2321[_0x7749('0x32')],_0xdc2321[_0x7749('0x33')]);_0x98a9b5['attributes']=_['intersection'](_0xdc2321['model'],qs[_0x7749('0x37')](_0x51216e[_0x7749('0x33')][_0x7749('0x37')]));_0x98a9b5[_0x7749('0x38')]=_0x98a9b5['attributes'][_0x7749('0x39')]?_0x98a9b5[_0x7749('0x38')]:_0xdc2321[_0x7749('0x32')];if(!_0x51216e['query'][_0x7749('0x3a')](_0x7749('0x3b'))){_0x98a9b5['limit']=qs[_0x7749('0x1d')](_0x51216e['query'][_0x7749('0x1d')]);_0x98a9b5[_0x7749('0x1b')]=qs[_0x7749('0x1b')](_0x51216e['query'][_0x7749('0x1b')]);}_0x98a9b5[_0x7749('0x3c')]=qs[_0x7749('0x3d')](_0x51216e[_0x7749('0x33')]['sort']);_0x98a9b5['where']=qs['filters'](_[_0x7749('0x3e')](_0x51216e[_0x7749('0x33')],_0xdc2321[_0x7749('0x35')]),_0x38ea3d);if(_0x51216e[_0x7749('0x33')][_0x7749('0x3f')]){_0x98a9b5[_0x7749('0x40')]=_[_0x7749('0x41')](_0x98a9b5[_0x7749('0x40')],{'$or':_['map'](_0x38ea3d,function(_0x43849a){if(_0x43849a[_0x7749('0x30')]!==_0x7749('0x42')){var _0x42fc31={};_0x42fc31[_0x43849a[_0x7749('0x29')]]={'$like':'%'+_0x51216e[_0x7749('0x33')][_0x7749('0x3f')]+'%'};return _0x42fc31;}})});}_0x98a9b5=_[_0x7749('0x41')]({},_0x98a9b5,_0x51216e[_0x7749('0x43')]);var _0xf13593={'where':_0x98a9b5[_0x7749('0x40')]};return db[_0x7749('0x2d')][_0x7749('0x1e')](_0xf13593)[_0x7749('0x24')](function(_0x2ffbd9){_0xe35172['count']=_0x2ffbd9;if(_0x51216e[_0x7749('0x33')][_0x7749('0x44')]){_0x98a9b5['include']=[{'all':!![]}];}return db['JscriptyProject'][_0x7749('0x45')](_0x98a9b5);})[_0x7749('0x24')](function(_0x183cdd){_0xe35172[_0x7749('0x46')]=_0x183cdd;return _0xe35172;})['then'](respondWithFilteredResult(_0xfda033,_0x98a9b5))[_0x7749('0x47')](handleError(_0xfda033,null));};exports[_0x7749('0x48')]=function(_0x43d8d0,_0x586827){var _0x2bb284={'raw':![],'where':{'id':_0x43d8d0['params']['id']}},_0x3add19={};_0x3add19[_0x7749('0x32')]=_[_0x7749('0x34')](db[_0x7749('0x2d')][_0x7749('0x2e')]);_0x3add19['query']=_[_0x7749('0x34')](_0x43d8d0[_0x7749('0x33')]);_0x3add19[_0x7749('0x35')]=_[_0x7749('0x36')](_0x3add19[_0x7749('0x32')],_0x3add19['query']);_0x2bb284[_0x7749('0x38')]=_['intersection'](_0x3add19['model'],qs[_0x7749('0x37')](_0x43d8d0[_0x7749('0x33')][_0x7749('0x37')]));_0x2bb284['attributes']=_0x2bb284[_0x7749('0x38')][_0x7749('0x39')]?_0x2bb284[_0x7749('0x38')]:_0x3add19[_0x7749('0x32')];if(_0x43d8d0[_0x7749('0x33')][_0x7749('0x44')]){_0x2bb284[_0x7749('0x49')]=[{'all':!![]}];}_0x2bb284=_[_0x7749('0x41')]({},_0x2bb284,_0x43d8d0[_0x7749('0x43')]);return db[_0x7749('0x2d')]['find'](_0x2bb284)[_0x7749('0x24')](handleEntityNotFound(_0x586827,null))[_0x7749('0x24')](respondWithResult(_0x586827,null))[_0x7749('0x47')](handleError(_0x586827,null));};exports[_0x7749('0x4a')]=function(_0x2fde3d,_0x23cb53){return db[_0x7749('0x2d')][_0x7749('0x4a')](_0x2fde3d[_0x7749('0x4b')],{})[_0x7749('0x24')](function(_0x2b1fd7){var _0x604575=_0x2fde3d[_0x7749('0x4c')][_0x7749('0x25')]({'plain':!![]});if(!_0x604575)throw new Error(_0x7749('0x4d'));if(_0x604575[_0x7749('0x4e')]==='user'){var _0xca060b=_0x2b1fd7[_0x7749('0x25')]({'plain':!![]});var _0x1825dc='Projects';return db[_0x7749('0x4f')][_0x7749('0x50')]({'where':{'name':_0x1825dc,'userProfileId':_0x604575[_0x7749('0x51')]},'raw':!![]})[_0x7749('0x24')](function(_0x9f363e){if(_0x9f363e&&_0x9f363e[_0x7749('0x52')]===0x0){return db[_0x7749('0x26')][_0x7749('0x4a')]({'name':_0xca060b[_0x7749('0x29')],'resourceId':_0xca060b['id'],'type':_0x9f363e[_0x7749('0x29')],'sectionId':_0x9f363e['id']},{})[_0x7749('0x24')](function(){return _0x2b1fd7;});}else{return _0x2b1fd7;}})['catch'](function(_0x15c2b4){logger[_0x7749('0x27')](_0x7749('0x53'),_0x15c2b4);throw _0x15c2b4;});}return _0x2b1fd7;})[_0x7749('0x24')](respondWithResult(_0x23cb53,0xc9))['catch'](handleError(_0x23cb53,null));};exports['clone']=function(_0x5c32e4,_0x4db113){var _0x32e918={'where':{'id':_0x5c32e4[_0x7749('0x54')]['id']}},_0x5c0a54={};_0x5c0a54[_0x7749('0x32')]=_['keys'](db['JscriptyProject'][_0x7749('0x2e')]);_0x32e918['attributes']=_[_0x7749('0x36')](_0x5c0a54[_0x7749('0x32')],qs[_0x7749('0x37')](_0x5c32e4[_0x7749('0x33')][_0x7749('0x37')]));_0x32e918[_0x7749('0x38')]=_0x32e918[_0x7749('0x38')]['length']?_0x32e918['attributes']:_0x5c0a54[_0x7749('0x32')];if(_0x5c32e4[_0x7749('0x33')][_0x7749('0x44')]){_0x32e918[_0x7749('0x49')]=[{'all':!![]}];}_0x32e918=_[_0x7749('0x41')]({},_0x32e918,_0x5c32e4[_0x7749('0x43')]);return db[_0x7749('0x2d')][_0x7749('0x50')](_0x32e918)[_0x7749('0x24')](handleEntityNotFound(_0x4db113,null))[_0x7749('0x24')](function(_0x1f0c1c){if(_0x1f0c1c){var _0x4b9fdc=_0x1f0c1c[_0x7749('0x25')]({'plain':!![]});_0x4b9fdc=qs[_0x7749('0x55')](_0x4b9fdc,['id',_0x7749('0x56'),_0x7749('0x57')]);_0x5c32e4[_0x7749('0x4b')]=_[_0x7749('0x55')](_0x5c32e4[_0x7749('0x4b')],['id',_0x7749('0x56'),_0x7749('0x57')]);return db['JscriptyProject'][_0x7749('0x4a')](_[_0x7749('0x41')](_0x4b9fdc,_0x5c32e4['body']),{'include':_0x5c32e4[_0x7749('0x33')][_0x7749('0x44')]?[{'all':!![]}]:undefined})[_0x7749('0x24')](function(_0x599e18){var _0x3111a9=_0x5c32e4[_0x7749('0x4c')][_0x7749('0x25')]({'plain':!![]});if(!_0x3111a9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3111a9[_0x7749('0x4e')]===_0x7749('0x4c')){var _0x5e77a8=_0x599e18[_0x7749('0x25')]({'plain':!![]});var _0x2601a9=_0x7749('0x58');return db['UserProfileSection'][_0x7749('0x50')]({'where':{'name':_0x2601a9,'userProfileId':_0x3111a9[_0x7749('0x51')]},'raw':!![]})[_0x7749('0x24')](function(_0x33b41d){if(_0x33b41d&&_0x33b41d['autoAssociation']===0x0){return db[_0x7749('0x26')][_0x7749('0x4a')]({'name':_0x5e77a8['name'],'resourceId':_0x5e77a8['id'],'type':_0x33b41d[_0x7749('0x29')],'sectionId':_0x33b41d['id']},{})['then'](function(){return _0x599e18;});}else{return _0x599e18;}})[_0x7749('0x47')](function(_0x1d943e){logger[_0x7749('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d943e);throw _0x1d943e;});}return _0x599e18;});}})['then'](respondWithResult(_0x4db113,0xc9))[_0x7749('0x47')](handleError(_0x4db113,null));};exports[_0x7749('0x59')]=function(_0x356809,_0x349814){if(_0x356809[_0x7749('0x4b')]['id']){delete _0x356809[_0x7749('0x4b')]['id'];}return db[_0x7749('0x2d')][_0x7749('0x50')]({'where':{'id':_0x356809[_0x7749('0x54')]['id']}})['then'](handleEntityNotFound(_0x349814,null))[_0x7749('0x24')](saveUpdates(_0x356809[_0x7749('0x4b')],null))[_0x7749('0x24')](respondWithResult(_0x349814,null))[_0x7749('0x47')](handleError(_0x349814,null));};exports[_0x7749('0x5a')]=function(_0xc7345,_0x47ac52){return db[_0x7749('0x2d')]['find']({'where':{'id':_0xc7345[_0x7749('0x54')]['id']}})[_0x7749('0x24')](handleEntityNotFound(_0x47ac52,null))[_0x7749('0x24')](removeEntity(_0x47ac52,null))[_0x7749('0x47')](handleError(_0x47ac52,null));};exports[_0x7749('0x5b')]=function(_0x1cf3ea,_0x9d117c,_0x330414){var _0x136efe={'raw':!![],'where':{}};var _0x25cfa1={};var _0x180c69={'count':0x0,'rows':[]};return db[_0x7749('0x2d')]['findOne']({'where':{'id':_0x1cf3ea[_0x7749('0x54')]['id']}})[_0x7749('0x24')](handleEntityNotFound(_0x9d117c,null))['then'](function(_0x46338b){if(_0x46338b){_0x25cfa1[_0x7749('0x32')]=_[_0x7749('0x34')](db[_0x7749('0x5c')]['rawAttributes']);_0x25cfa1[_0x7749('0x33')]=_[_0x7749('0x34')](_0x1cf3ea[_0x7749('0x33')]);_0x25cfa1[_0x7749('0x35')]=_[_0x7749('0x36')](_0x25cfa1[_0x7749('0x32')],_0x25cfa1[_0x7749('0x33')]);_0x136efe[_0x7749('0x38')]=_[_0x7749('0x36')](_0x25cfa1[_0x7749('0x32')],qs[_0x7749('0x37')](_0x1cf3ea['query'][_0x7749('0x37')]));_0x136efe[_0x7749('0x38')]=_0x136efe['attributes']['length']?_0x136efe[_0x7749('0x38')]:_0x25cfa1[_0x7749('0x32')];if(!_0x1cf3ea[_0x7749('0x33')][_0x7749('0x3a')](_0x7749('0x3b'))){_0x136efe[_0x7749('0x1d')]=qs[_0x7749('0x1d')](_0x1cf3ea[_0x7749('0x33')][_0x7749('0x1d')]);_0x136efe[_0x7749('0x1b')]=qs[_0x7749('0x1b')](_0x1cf3ea['query'][_0x7749('0x1b')]);}_0x136efe[_0x7749('0x3c')]=qs[_0x7749('0x3d')](_0x1cf3ea[_0x7749('0x33')][_0x7749('0x3d')]);_0x136efe[_0x7749('0x40')]=qs[_0x7749('0x35')](_[_0x7749('0x3e')](_0x1cf3ea[_0x7749('0x33')],_0x25cfa1[_0x7749('0x35')]));_0x136efe['where'][_0x7749('0x5d')]=_0x46338b['id'];if(_0x1cf3ea['query'][_0x7749('0x3f')]){_0x136efe['where']=_[_0x7749('0x41')](_0x136efe[_0x7749('0x40')],{'$or':_[_0x7749('0x2c')](_0x136efe[_0x7749('0x38')],function(_0x2903a0){var _0x2656b2={};_0x2656b2[_0x2903a0]={'$like':'%'+_0x1cf3ea[_0x7749('0x33')]['filter']+'%'};return _0x2656b2;})});}_0x136efe=_[_0x7749('0x41')]({},_0x136efe,_0x1cf3ea[_0x7749('0x43')]);return db[_0x7749('0x5c')][_0x7749('0x1e')]({'where':_0x136efe['where']})[_0x7749('0x24')](function(_0x52b082){_0x180c69[_0x7749('0x1e')]=_0x52b082;if(_0x1cf3ea[_0x7749('0x33')][_0x7749('0x44')]){_0x136efe['include']=[{'all':!![]}];}return db[_0x7749('0x5c')][_0x7749('0x45')](_0x136efe);})['then'](function(_0x2b73dd){_0x180c69['rows']=_0x2b73dd;return _0x180c69;});}})[_0x7749('0x24')](respondWithFilteredResult(_0x9d117c,_0x136efe))[_0x7749('0x47')](handleError(_0x9d117c,null));};exports[_0x7749('0x5e')]=function(_0x4a9631,_0x3924de,_0x149e05){var _0x25238a={'raw':!![],'where':{}};var _0x5ef528={};var _0x4df999={'count':0x0,'rows':[]};return db[_0x7749('0x2d')][_0x7749('0x5f')]({'where':{'id':_0x4a9631[_0x7749('0x54')]['id']}})['then'](handleEntityNotFound(_0x3924de,null))[_0x7749('0x24')](function(_0x10426b){if(_0x10426b){_0x5ef528[_0x7749('0x32')]=_[_0x7749('0x34')](db[_0x7749('0x60')][_0x7749('0x2e')]);_0x5ef528[_0x7749('0x33')]=_['keys'](_0x4a9631[_0x7749('0x33')]);_0x5ef528[_0x7749('0x35')]=_[_0x7749('0x36')](_0x5ef528[_0x7749('0x32')],_0x5ef528[_0x7749('0x33')]);_0x25238a['attributes']=_['intersection'](_0x5ef528[_0x7749('0x32')],qs[_0x7749('0x37')](_0x4a9631[_0x7749('0x33')]['fields']));_0x25238a[_0x7749('0x38')]=_0x25238a[_0x7749('0x38')][_0x7749('0x39')]?_0x25238a['attributes']:_0x5ef528[_0x7749('0x32')];if(!_0x4a9631[_0x7749('0x33')][_0x7749('0x3a')](_0x7749('0x3b'))){_0x25238a[_0x7749('0x1d')]=qs[_0x7749('0x1d')](_0x4a9631['query'][_0x7749('0x1d')]);_0x25238a[_0x7749('0x1b')]=qs['offset'](_0x4a9631[_0x7749('0x33')]['offset']);}_0x25238a['order']=qs[_0x7749('0x3d')](_0x4a9631[_0x7749('0x33')][_0x7749('0x3d')]);_0x25238a['where']=qs['filters'](_[_0x7749('0x3e')](_0x4a9631[_0x7749('0x33')],_0x5ef528[_0x7749('0x35')]));_0x25238a[_0x7749('0x40')][_0x7749('0x5d')]=_0x10426b['id'];if(_0x4a9631['query']['filter']){_0x25238a[_0x7749('0x40')]=_[_0x7749('0x41')](_0x25238a['where'],{'$or':_[_0x7749('0x2c')](_0x25238a['attributes'],function(_0x20bba1){var _0x1d2914={};_0x1d2914[_0x20bba1]={'$like':'%'+_0x4a9631[_0x7749('0x33')][_0x7749('0x3f')]+'%'};return _0x1d2914;})});}_0x25238a=_['merge']({},_0x25238a,_0x4a9631[_0x7749('0x43')]);return db[_0x7749('0x60')][_0x7749('0x1e')]({'where':_0x25238a[_0x7749('0x40')]})['then'](function(_0x21f773){_0x4df999['count']=_0x21f773;if(_0x4a9631[_0x7749('0x33')][_0x7749('0x44')]){_0x25238a[_0x7749('0x49')]=[{'all':!![]}];}return db[_0x7749('0x60')][_0x7749('0x45')](_0x25238a);})[_0x7749('0x24')](function(_0x1fcd50){_0x4df999['rows']=_0x1fcd50;return _0x4df999;});}})['then'](respondWithFilteredResult(_0x3924de,_0x25238a))[_0x7749('0x47')](handleError(_0x3924de,null));};function char(_0x58aad3){return _0x7749('0x61')===typeof _0x58aad3?String[_0x7749('0x62')][_0x7749('0x21')](null,arguments):_0x58aad3;}function needsEncapsulation(_0x1d7b24){return!!_0x1d7b24&&(_0x1d7b24['toString']()[_0x7749('0x63')](char(0xd))>=0x0||_0x1d7b24['toString']()['indexOf'](char(0xa))>=0x0||_0x1d7b24[_0x7749('0x64')]()[_0x7749('0x63')](char(0x2c))>=0x0||_0x1d7b24[_0x7749('0x64')]()[_0x7749('0x63')](char(0x22))>=0x0);}function encapsulate(_0x588bc1){var _0x35783a=char(0x22),_0x476e98='\x5c'+char(0x22),_0x198c30=_0x588bc1[_0x7749('0x64')]()[_0x7749('0x65')](new RegExp(_0x35783a,'g'),_0x476e98);return _0x35783a+_0x198c30+_0x35783a;}exports['getSummary']=function(_0x2b0b74,_0x1e613a,_0x4aac11){var _0xe08b59,_0x16fdf5;var _0x507294={'where':{'ProjectId':_0x2b0b74['params']['id']}};if(_0x2b0b74[_0x7749('0x33')][_0x7749('0x66')]){_0x507294[_0x7749('0x40')][_0x7749('0x67')]=JSON['parse'](_0x2b0b74[_0x7749('0x33')][_0x7749('0x66')]);}return db[_0x7749('0x5c')][_0x7749('0x45')](_0x507294)[_0x7749('0x24')](handleEntityNotFound(_0x1e613a,null))['then'](function(_0x1c6858){if(_0x1c6858){_0xe08b59=_0x1c6858;return db[_0x7749('0x68')]['findAll']({'where':{'SessionId':{'$in':_[_0x7749('0x2c')](_0xe08b59,'id')},'ProjectId':_0x2b0b74[_0x7749('0x54')]['id']},'order':_0x7749('0x69')});}})[_0x7749('0x24')](handleEntityNotFound(_0x1e613a,null))['then'](function(_0x457dc2){if(_0x457dc2){_0x16fdf5=_0x457dc2;var _0x3152bd={};for(var _0xd9355c=0x0,_0x2e873a=_0x16fdf5[_0x7749('0x39')];_0xd9355c<_0x2e873a;_0xd9355c++){if(!_0x3152bd[_0x7749('0x3a')](_0x16fdf5[_0xd9355c][_0x7749('0x6a')])){_0x3152bd[_0x16fdf5[_0xd9355c][_0x7749('0x6a')]]=needsEncapsulation(_0x16fdf5[_0xd9355c][_0x7749('0x6b')])?encapsulate(_0x16fdf5[_0xd9355c][_0x7749('0x6b')]):_0x16fdf5[_0xd9355c][_0x7749('0x6b')];}}var _0xb6d4f5=[],_0x1fc2df={};for(var _0x2116b8=0x0,_0xb83145=_0xe08b59[_0x7749('0x39')];_0x2116b8<_0xb83145;_0x2116b8++){_0x1fc2df={'ProjectId':_0x2b0b74['params']['id'],'SessionId':_0xe08b59[_0x2116b8]['id'],'StartTime':moment(_0xe08b59[_0x2116b8]['starttime'])['format'](_0x7749('0x6c'))};for(var _0x40dac2=0x0,_0x29c04c=_0x16fdf5[_0x7749('0x39')];_0x40dac2<_0x29c04c;_0x40dac2++){if(_0x16fdf5[_0x40dac2][_0x7749('0x6d')]==_0xe08b59[_0x2116b8]['id']&&_0x3152bd[_0x7749('0x3a')](_0x16fdf5[_0x40dac2]['questionId'])){_0x1fc2df[_0x3152bd[_0x16fdf5[_0x40dac2][_0x7749('0x6a')]]]=_0x16fdf5[_0x40dac2]['answer'];}}for(var _0x22c91f in _0x3152bd){if(!_0x1fc2df[_0x7749('0x3a')](_0x3152bd[_0x22c91f])){_0x1fc2df[_0x3152bd[_0x22c91f]]=null;}}_0xb6d4f5[_0x7749('0x6e')](_0x1fc2df);}return _0xb6d4f5;}})[_0x7749('0x24')](function(_0x1ec4e3){if(!_[_0x7749('0x6f')](_0x1ec4e3)){var _0x18b885=toCsv(_0x1ec4e3);var _0x6da9c9=Date[_0x7749('0x70')]();fs[_0x7749('0x71')](util[_0x7749('0x72')](_0x7749('0x73'),_0x2b0b74[_0x7749('0x54')]['id'],_0x6da9c9),_0x18b885);_0x1e613a[_0x7749('0x74')](_0x7749('0x75'),_0x7749('0x76')+util[_0x7749('0x72')](_0x7749('0x77'),_0x2b0b74[_0x7749('0x54')]['id'],_0x6da9c9));_0x1e613a[_0x7749('0x74')](_0x7749('0x78'),'text/csv');return _0x1e613a[_0x7749('0x79')](util[_0x7749('0x72')](_0x7749('0x73'),_0x2b0b74[_0x7749('0x54')]['id'],_0x6da9c9));}else{return _0x1e613a[_0x7749('0x7a')](0xcc);}})[_0x7749('0x47')](handleError(_0x1e613a,null));};
\ No newline at end of file
index 1a9a1e6..0f52d69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b47=['bluebird','request-promise','path','./jscriptyProject.attributes','exports','JscriptyProject','jscripty_projects','lodash','../../config/logger','api','moment'];(function(_0x10dd55,_0x36184c){var _0x3b6266=function(_0x553cad){while(--_0x553cad){_0x10dd55['push'](_0x10dd55['shift']());}};_0x3b6266(++_0x36184c);}(_0x4b47,0x1b4));var _0x74b4=function(_0x392f70,_0x27c10c){_0x392f70=_0x392f70-0x0;var _0x20bd58=_0x4b47[_0x392f70];return _0x20bd58;};'use strict';var _=require(_0x74b4('0x0'));var util=require('util');var logger=require(_0x74b4('0x1'))(_0x74b4('0x2'));var moment=require(_0x74b4('0x3'));var BPromise=require(_0x74b4('0x4'));var rp=require(_0x74b4('0x5'));var fs=require('fs');var path=require(_0x74b4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x74b4('0x7'));module[_0x74b4('0x8')]=function(_0x4dc737,_0x4cd397){return _0x4dc737['define'](_0x74b4('0x9'),attributes,{'tableName':_0x74b4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8585=['JscriptyProject','lodash','util','../../config/logger','moment','bluebird','../../config/environment','./jscriptyProject.attributes','define'];(function(_0x1fc979,_0x548f81){var _0xc59aef=function(_0x1d482e){while(--_0x1d482e){_0x1fc979['push'](_0x1fc979['shift']());}};_0xc59aef(++_0x548f81);}(_0x8585,0x64));var _0x5858=function(_0x518e80,_0x3c9c4b){_0x518e80=_0x518e80-0x0;var _0x268513=_0x8585[_0x518e80];return _0x268513;};'use strict';var _=require(_0x5858('0x0'));var util=require(_0x5858('0x1'));var logger=require(_0x5858('0x2'))('api');var moment=require(_0x5858('0x3'));var BPromise=require(_0x5858('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5858('0x5'));var attributes=require(_0x5858('0x6'));module['exports']=function(_0x5807a2,_0x35b37a){return _0x5807a2[_0x5858('0x7')](_0x5858('0x8'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca84fac..766621a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['rpc','jayson/promise','client','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x239b31,_0x44a64d){var _0x41c8be=function(_0x27f031){while(--_0x27f031){_0x239b31['push'](_0x239b31['shift']());}};_0x41c8be(++_0x44a64d);}(_0xda3f,0xec));var _0xfda3=function(_0x124e55,_0x36f8ed){_0x124e55=_0x124e55-0x0;var _0x3dc46b=_0xda3f[_0x124e55];return _0x3dc46b;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
+var _0x70e0=['code','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3910b6,_0x5246eb){var _0x301f67=function(_0x50a9ea){while(--_0x50a9ea){_0x3910b6['push'](_0x3910b6['shift']());}};_0x301f67(++_0x5246eb);}(_0x70e0,0x17b));var _0x070e=function(_0x58ffcb,_0x52d0cb){_0x58ffcb=_0x58ffcb-0x0;var _0x143df6=_0x70e0[_0x58ffcb];return _0x143df6;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index d429dd6..811d469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4775=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','show','post','put','/:id','update','delete','exports','util','path'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x4775,0x10c));var _0x5477=function(_0x4063a4,_0x19d730){_0x4063a4=_0x4063a4-0x0;var _0x17908d=_0x4775[_0x4063a4];return _0x17908d;};'use strict';var multer=require('multer');var util=require(_0x5477('0x0'));var path=require(_0x5477('0x1'));var timeout=require(_0x5477('0x2'));var express=require(_0x5477('0x3'));var router=express['Router']();var fs_extra=require(_0x5477('0x4'));var auth=require(_0x5477('0x5'));var interaction=require(_0x5477('0x6'));var config=require(_0x5477('0x7'));var controller=require('./jscriptyQuestionReport.controller');router[_0x5477('0x8')]('/',auth[_0x5477('0x9')](),controller['index']);router['get'](_0x5477('0xa'),auth[_0x5477('0x9')](),controller['describe']);router['get']('/:id',auth[_0x5477('0x9')](),controller[_0x5477('0xb')]);router[_0x5477('0xc')]('/',auth[_0x5477('0x9')](),controller['create']);router[_0x5477('0xd')](_0x5477('0xe'),auth[_0x5477('0x9')](),controller[_0x5477('0xf')]);router[_0x5477('0x10')]('/:id',auth[_0x5477('0x9')](),controller['destroy']);module[_0x5477('0x11')]=router;
\ No newline at end of file
+var _0x1b5c=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','update','delete'];(function(_0x2df3b6,_0x2c9f96){var _0x9e4d14=function(_0x497123){while(--_0x497123){_0x2df3b6['push'](_0x2df3b6['shift']());}};_0x9e4d14(++_0x2c9f96);}(_0x1b5c,0x1ba));var _0xc1b5=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0x1b5c[_0x45b034];return _0x509cb0;};'use strict';var multer=require(_0xc1b5('0x0'));var util=require('util');var path=require(_0xc1b5('0x1'));var timeout=require(_0xc1b5('0x2'));var express=require(_0xc1b5('0x3'));var router=express[_0xc1b5('0x4')]();var fs_extra=require(_0xc1b5('0x5'));var auth=require(_0xc1b5('0x6'));var interaction=require(_0xc1b5('0x7'));var config=require('../../config/environment');var controller=require(_0xc1b5('0x8'));router['get']('/',auth[_0xc1b5('0x9')](),controller[_0xc1b5('0xa')]);router[_0xc1b5('0xb')](_0xc1b5('0xc'),auth[_0xc1b5('0x9')](),controller[_0xc1b5('0xd')]);router[_0xc1b5('0xb')](_0xc1b5('0xe'),auth[_0xc1b5('0x9')](),controller['show']);router[_0xc1b5('0xf')]('/',auth['isAuthenticated'](),controller[_0xc1b5('0x10')]);router[_0xc1b5('0x11')](_0xc1b5('0xe'),auth[_0xc1b5('0x9')](),controller[_0xc1b5('0x12')]);router[_0xc1b5('0x13')](_0xc1b5('0xe'),auth[_0xc1b5('0x9')](),controller[_0xc1b5('0x14')]);module[_0xc1b5('0x15')]=router;
\ No newline at end of file
index 3ef0129..be466d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x7a54,0x106));var _0x47a5=function(_0x27d987,_0x3ca90e){_0x27d987=_0x27d987-0x0;var _0x4fa171=_0x7a54[_0x27d987];return _0x4fa171;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7a54,0x106));var _0x47a5=function(_0x197093,_0x487de9){_0x197093=_0x197093-0x0;var _0x4f1913=_0x7a54[_0x197093];return _0x4f1913;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index 6a8a400..4011f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe20d=['keys','filters','include','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show'];(function(_0x30d87a,_0xf3a07f){var _0x48f64b=function(_0x2078b7){while(--_0x2078b7){_0x30d87a['push'](_0x30d87a['shift']());}};_0x48f64b(++_0xf3a07f);}(_0xe20d,0x1ca));var _0xde20=function(_0xa2796e,_0x1eab49){_0xa2796e=_0xa2796e-0x0;var _0x4c1834=_0xe20d[_0xa2796e];return _0x4c1834;};'use strict';var emlformat=require(_0xde20('0x0'));var rimraf=require(_0xde20('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xde20('0x2'));var rp=require(_0xde20('0x3'));var moment=require(_0xde20('0x4'));var BPromise=require(_0xde20('0x5'));var Mustache=require(_0xde20('0x6'));var util=require(_0xde20('0x7'));var path=require(_0xde20('0x8'));var sox=require(_0xde20('0x9'));var csv=require(_0xde20('0xa'));var ejs=require(_0xde20('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xde20('0xc'));var jsforce=require(_0xde20('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xde20('0xe'));var Papa=require(_0xde20('0xf'));var Redis=require(_0xde20('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xde20('0x11'));var as=require(_0xde20('0x12'));var hardwareService=require(_0xde20('0x13'));var logger=require(_0xde20('0x14'))(_0xde20('0x15'));var utils=require('../../config/utils');var config=require(_0xde20('0x16'));var licenseUtil=require(_0xde20('0x17'));var db=require(_0xde20('0x18'))['db'];function respondWithStatusCode(_0x418ef0,_0x4a07e8){_0x4a07e8=_0x4a07e8||0xcc;return function(_0x1c4c65){if(_0x1c4c65){return _0x418ef0[_0xde20('0x19')](_0x4a07e8);}return _0x418ef0[_0xde20('0x1a')](_0x4a07e8)['end']();};}function respondWithResult(_0x5c59e7,_0x34abbd){_0x34abbd=_0x34abbd||0xc8;return function(_0x55a06e){if(_0x55a06e){return _0x5c59e7[_0xde20('0x1a')](_0x34abbd)[_0xde20('0x1b')](_0x55a06e);}};}function respondWithFilteredResult(_0x13b32,_0xc5a2de){return function(_0x3a86c9){if(_0x3a86c9){var _0x50f58d=typeof _0xc5a2de['offset']===_0xde20('0x1c')&&typeof _0xc5a2de[_0xde20('0x1d')]===_0xde20('0x1c');var _0x413060=_0x3a86c9['count'];var _0x2f7a88=_0x50f58d?0x0:_0xc5a2de[_0xde20('0x1e')];var _0x3f05f2=_0x50f58d?_0x3a86c9[_0xde20('0x1f')]:_0xc5a2de[_0xde20('0x1e')]+_0xc5a2de['limit'];var _0x4f398e;if(_0x3f05f2>=_0x413060){_0x3f05f2=_0x413060;_0x4f398e=0xc8;}else{_0x4f398e=0xce;}_0x13b32[_0xde20('0x1a')](_0x4f398e);return _0x13b32[_0xde20('0x20')]('Content-Range',_0x2f7a88+'-'+_0x3f05f2+'/'+_0x413060)[_0xde20('0x1b')](_0x3a86c9);}return null;};}function patchUpdates(_0x40fbe4){return function(_0x47a7ce){try{jsonpatch[_0xde20('0x21')](_0x47a7ce,_0x40fbe4,!![]);}catch(_0x244074){return BPromise[_0xde20('0x22')](_0x244074);}return _0x47a7ce[_0xde20('0x23')]();};}function saveUpdates(_0x3c365d,_0x7e96c8){return function(_0x4a0d8f){if(_0x4a0d8f){return _0x4a0d8f[_0xde20('0x24')](_0x3c365d)[_0xde20('0x25')](function(_0x50084a){return _0x50084a;});}return null;};}function removeEntity(_0x4158af,_0x3affad){return function(_0x34c235){if(_0x34c235){return _0x34c235[_0xde20('0x26')]()['then'](function(){_0x4158af['status'](0xcc)[_0xde20('0x27')]();});}};}function handleEntityNotFound(_0x38474f,_0x3bb029){return function(_0x42c7fa){if(!_0x42c7fa){_0x38474f['sendStatus'](0x194);}return _0x42c7fa;};}function handleError(_0x144fa9,_0x2085fe){_0x2085fe=_0x2085fe||0x1f4;return function(_0x3dd2ee){logger['error'](_0x3dd2ee[_0xde20('0x28')]);if(_0x3dd2ee['name']){delete _0x3dd2ee[_0xde20('0x29')];}_0x144fa9[_0xde20('0x1a')](_0x2085fe)[_0xde20('0x2a')](_0x3dd2ee);};}exports[_0xde20('0x2b')]=function(_0x22be9d,_0x150135){var _0x1005a4={},_0xe13cc5={},_0x31537f={'count':0x0,'rows':[]};var _0x172117=_[_0xde20('0x2c')](db[_0xde20('0x2d')][_0xde20('0x2e')],function(_0x2e421d){return{'name':_0x2e421d['fieldName'],'type':_0x2e421d['type'][_0xde20('0x2f')]};});_0xe13cc5[_0xde20('0x30')]=_[_0xde20('0x2c')](_0x172117,'name');_0xe13cc5[_0xde20('0x31')]=_['keys'](_0x22be9d['query']);_0xe13cc5['filters']=_[_0xde20('0x32')](_0xe13cc5['model'],_0xe13cc5[_0xde20('0x31')]);_0x1005a4[_0xde20('0x33')]=_[_0xde20('0x32')](_0xe13cc5['model'],qs[_0xde20('0x34')](_0x22be9d['query'][_0xde20('0x34')]));_0x1005a4[_0xde20('0x33')]=_0x1005a4[_0xde20('0x33')][_0xde20('0x35')]?_0x1005a4['attributes']:_0xe13cc5[_0xde20('0x30')];if(!_0x22be9d[_0xde20('0x31')]['hasOwnProperty'](_0xde20('0x36'))){_0x1005a4[_0xde20('0x1d')]=qs['limit'](_0x22be9d['query']['limit']);_0x1005a4['offset']=qs[_0xde20('0x1e')](_0x22be9d['query']['offset']);}_0x1005a4[_0xde20('0x37')]=qs[_0xde20('0x38')](_0x22be9d[_0xde20('0x31')][_0xde20('0x38')]);_0x1005a4[_0xde20('0x39')]=qs['filters'](_['pick'](_0x22be9d[_0xde20('0x31')],_0xe13cc5['filters']),_0x172117);if(_0x22be9d['query'][_0xde20('0x3a')]){_0x1005a4[_0xde20('0x39')]=_['merge'](_0x1005a4[_0xde20('0x39')],{'$or':_[_0xde20('0x2c')](_0x172117,function(_0x5b7129){if(_0x5b7129['type']!==_0xde20('0x3b')){var _0x2b8d90={};_0x2b8d90[_0x5b7129['name']]={'$like':'%'+_0x22be9d[_0xde20('0x31')]['filter']+'%'};return _0x2b8d90;}})});}_0x1005a4=_[_0xde20('0x3c')]({},_0x1005a4,_0x22be9d[_0xde20('0x3d')]);var _0x12da98={'where':_0x1005a4[_0xde20('0x39')]};return db[_0xde20('0x2d')]['count'](_0x12da98)[_0xde20('0x25')](function(_0x55a9d3){_0x31537f[_0xde20('0x1f')]=_0x55a9d3;if(_0x22be9d[_0xde20('0x31')][_0xde20('0x3e')]){_0x1005a4['include']=[{'all':!![]}];}return db[_0xde20('0x2d')][_0xde20('0x3f')](_0x1005a4);})[_0xde20('0x25')](function(_0x131a69){_0x31537f[_0xde20('0x40')]=_0x131a69;return _0x31537f;})[_0xde20('0x25')](respondWithFilteredResult(_0x150135,_0x1005a4))[_0xde20('0x41')](handleError(_0x150135,null));};exports[_0xde20('0x42')]=function(_0x28e815,_0x20a6be){var _0x4e4cd8={'raw':!![],'where':{'id':_0x28e815['params']['id']}},_0x2cf7bb={};_0x2cf7bb[_0xde20('0x30')]=_[_0xde20('0x43')](db[_0xde20('0x2d')]['rawAttributes']);_0x2cf7bb['query']=_[_0xde20('0x43')](_0x28e815['query']);_0x2cf7bb[_0xde20('0x44')]=_[_0xde20('0x32')](_0x2cf7bb['model'],_0x2cf7bb[_0xde20('0x31')]);_0x4e4cd8[_0xde20('0x33')]=_[_0xde20('0x32')](_0x2cf7bb[_0xde20('0x30')],qs['fields'](_0x28e815[_0xde20('0x31')][_0xde20('0x34')]));_0x4e4cd8[_0xde20('0x33')]=_0x4e4cd8[_0xde20('0x33')][_0xde20('0x35')]?_0x4e4cd8[_0xde20('0x33')]:_0x2cf7bb[_0xde20('0x30')];if(_0x28e815[_0xde20('0x31')][_0xde20('0x3e')]){_0x4e4cd8[_0xde20('0x45')]=[{'all':!![]}];}_0x4e4cd8=_[_0xde20('0x3c')]({},_0x4e4cd8,_0x28e815[_0xde20('0x3d')]);return db[_0xde20('0x2d')][_0xde20('0x46')](_0x4e4cd8)[_0xde20('0x25')](handleEntityNotFound(_0x20a6be,null))[_0xde20('0x25')](respondWithResult(_0x20a6be,null))[_0xde20('0x41')](handleError(_0x20a6be,null));};exports['create']=function(_0x236e9a,_0x368307){return db[_0xde20('0x2d')][_0xde20('0x47')](_0x236e9a[_0xde20('0x48')],{})[_0xde20('0x25')](respondWithResult(_0x368307,0xc9))['catch'](handleError(_0x368307,null));};exports['update']=function(_0x186bc6,_0x4b9ed9){if(_0x186bc6[_0xde20('0x48')]['id']){delete _0x186bc6[_0xde20('0x48')]['id'];}return db['JscriptyQuestionReport'][_0xde20('0x46')]({'where':{'id':_0x186bc6[_0xde20('0x49')]['id']}})[_0xde20('0x25')](handleEntityNotFound(_0x4b9ed9,null))[_0xde20('0x25')](saveUpdates(_0x186bc6[_0xde20('0x48')],null))['then'](respondWithResult(_0x4b9ed9,null))['catch'](handleError(_0x4b9ed9,null));};exports[_0xde20('0x26')]=function(_0x556b0a,_0x894aeb){return db[_0xde20('0x2d')]['find']({'where':{'id':_0x556b0a[_0xde20('0x49')]['id']}})['then'](handleEntityNotFound(_0x894aeb,null))[_0xde20('0x25')](removeEntity(_0x894aeb,null))[_0xde20('0x41')](handleError(_0x894aeb,null));};exports[_0xde20('0x4a')]=function(_0xffb2af,_0x58d47c){return db[_0xde20('0x2d')][_0xde20('0x4a')]()[_0xde20('0x25')](respondWithResult(_0x58d47c,null))['catch'](handleError(_0x58d47c,null));};
\ No newline at end of file
+var _0x129a=['save','then','destroy','error','stack','index','fieldName','type','key','model','map','name','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','options','includeAll','JscriptyQuestionReport','findAll','rows','catch','show','rawAttributes','intersection','include','merge','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject'];(function(_0x2bc051,_0x3f165f){var _0x3c886a=function(_0x2866c6){while(--_0x2866c6){_0x2bc051['push'](_0x2bc051['shift']());}};_0x3c886a(++_0x3f165f);}(_0x129a,0x108));var _0xa129=function(_0x1a4212,_0x208b9c){_0x1a4212=_0x1a4212-0x0;var _0x47a970=_0x129a[_0x1a4212];return _0x47a970;};'use strict';var emlformat=require(_0xa129('0x0'));var rimraf=require(_0xa129('0x1'));var zipdir=require(_0xa129('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa129('0x3'));var moment=require(_0xa129('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa129('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa129('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa129('0x7'));var squel=require(_0xa129('0x8'));var crypto=require('crypto');var jsforce=require(_0xa129('0x9'));var deskjs=require(_0xa129('0xa'));var toCsv=require(_0xa129('0xb'));var querystring=require(_0xa129('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa129('0xd'));var as=require(_0xa129('0xe'));var hardwareService=require(_0xa129('0xf'));var logger=require('../../config/logger')(_0xa129('0x10'));var utils=require(_0xa129('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xa129('0x12'));var db=require(_0xa129('0x13'))['db'];function respondWithStatusCode(_0x20ded5,_0x42722d){_0x42722d=_0x42722d||0xcc;return function(_0x2b1fdc){if(_0x2b1fdc){return _0x20ded5[_0xa129('0x14')](_0x42722d);}return _0x20ded5[_0xa129('0x15')](_0x42722d)[_0xa129('0x16')]();};}function respondWithResult(_0x121291,_0x30c0ff){_0x30c0ff=_0x30c0ff||0xc8;return function(_0x287bab){if(_0x287bab){return _0x121291['status'](_0x30c0ff)[_0xa129('0x17')](_0x287bab);}};}function respondWithFilteredResult(_0x341cc3,_0x385686){return function(_0x1c6545){if(_0x1c6545){var _0x425a5c=typeof _0x385686[_0xa129('0x18')]==='undefined'&&typeof _0x385686['limit']===_0xa129('0x19');var _0x1068e6=_0x1c6545[_0xa129('0x1a')];var _0x5540a8=_0x425a5c?0x0:_0x385686[_0xa129('0x18')];var _0x526c0d=_0x425a5c?_0x1c6545[_0xa129('0x1a')]:_0x385686[_0xa129('0x18')]+_0x385686[_0xa129('0x1b')];var _0x48ff98;if(_0x526c0d>=_0x1068e6){_0x526c0d=_0x1068e6;_0x48ff98=0xc8;}else{_0x48ff98=0xce;}_0x341cc3['status'](_0x48ff98);return _0x341cc3[_0xa129('0x1c')](_0xa129('0x1d'),_0x5540a8+'-'+_0x526c0d+'/'+_0x1068e6)[_0xa129('0x17')](_0x1c6545);}return null;};}function patchUpdates(_0x2a8369){return function(_0x123e12){try{jsonpatch[_0xa129('0x1e')](_0x123e12,_0x2a8369,!![]);}catch(_0x267a28){return BPromise[_0xa129('0x1f')](_0x267a28);}return _0x123e12[_0xa129('0x20')]();};}function saveUpdates(_0x26498b,_0x5711b1){return function(_0x50f296){if(_0x50f296){return _0x50f296['update'](_0x26498b)[_0xa129('0x21')](function(_0x1de1f1){return _0x1de1f1;});}return null;};}function removeEntity(_0x1564c5,_0x2bb4c2){return function(_0x13a443){if(_0x13a443){return _0x13a443[_0xa129('0x22')]()[_0xa129('0x21')](function(){_0x1564c5[_0xa129('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ab30a,_0x19538c){return function(_0x2a7417){if(!_0x2a7417){_0x4ab30a[_0xa129('0x14')](0x194);}return _0x2a7417;};}function handleError(_0x13c73b,_0x780a77){_0x780a77=_0x780a77||0x1f4;return function(_0x1ebdf1){logger[_0xa129('0x23')](_0x1ebdf1[_0xa129('0x24')]);if(_0x1ebdf1['name']){delete _0x1ebdf1['name'];}_0x13c73b['status'](_0x780a77)['send'](_0x1ebdf1);};}exports[_0xa129('0x25')]=function(_0x46d517,_0x56090c){var _0x4b740f={},_0x424ea9={},_0x1fa9ca={'count':0x0,'rows':[]};var _0x57d9ba=_['map'](db['JscriptyQuestionReport']['rawAttributes'],function(_0x37138e){return{'name':_0x37138e[_0xa129('0x26')],'type':_0x37138e[_0xa129('0x27')][_0xa129('0x28')]};});_0x424ea9[_0xa129('0x29')]=_[_0xa129('0x2a')](_0x57d9ba,_0xa129('0x2b'));_0x424ea9['query']=_[_0xa129('0x2c')](_0x46d517[_0xa129('0x2d')]);_0x424ea9[_0xa129('0x2e')]=_['intersection'](_0x424ea9[_0xa129('0x29')],_0x424ea9[_0xa129('0x2d')]);_0x4b740f[_0xa129('0x2f')]=_['intersection'](_0x424ea9[_0xa129('0x29')],qs[_0xa129('0x30')](_0x46d517[_0xa129('0x2d')][_0xa129('0x30')]));_0x4b740f[_0xa129('0x2f')]=_0x4b740f[_0xa129('0x2f')][_0xa129('0x31')]?_0x4b740f[_0xa129('0x2f')]:_0x424ea9['model'];if(!_0x46d517[_0xa129('0x2d')][_0xa129('0x32')](_0xa129('0x33'))){_0x4b740f['limit']=qs['limit'](_0x46d517[_0xa129('0x2d')][_0xa129('0x1b')]);_0x4b740f['offset']=qs[_0xa129('0x18')](_0x46d517[_0xa129('0x2d')]['offset']);}_0x4b740f['order']=qs['sort'](_0x46d517[_0xa129('0x2d')][_0xa129('0x34')]);_0x4b740f['where']=qs[_0xa129('0x2e')](_[_0xa129('0x35')](_0x46d517[_0xa129('0x2d')],_0x424ea9[_0xa129('0x2e')]),_0x57d9ba);if(_0x46d517['query'][_0xa129('0x36')]){_0x4b740f['where']=_['merge'](_0x4b740f[_0xa129('0x37')],{'$or':_[_0xa129('0x2a')](_0x57d9ba,function(_0x93b2a0){if(_0x93b2a0[_0xa129('0x27')]!==_0xa129('0x38')){var _0x288f61={};_0x288f61[_0x93b2a0['name']]={'$like':'%'+_0x46d517[_0xa129('0x2d')]['filter']+'%'};return _0x288f61;}})});}_0x4b740f=_['merge']({},_0x4b740f,_0x46d517[_0xa129('0x39')]);var _0x43b05c={'where':_0x4b740f['where']};return db['JscriptyQuestionReport'][_0xa129('0x1a')](_0x43b05c)[_0xa129('0x21')](function(_0x89a2d6){_0x1fa9ca['count']=_0x89a2d6;if(_0x46d517[_0xa129('0x2d')][_0xa129('0x3a')]){_0x4b740f['include']=[{'all':!![]}];}return db[_0xa129('0x3b')][_0xa129('0x3c')](_0x4b740f);})['then'](function(_0x5032f6){_0x1fa9ca[_0xa129('0x3d')]=_0x5032f6;return _0x1fa9ca;})[_0xa129('0x21')](respondWithFilteredResult(_0x56090c,_0x4b740f))[_0xa129('0x3e')](handleError(_0x56090c,null));};exports[_0xa129('0x3f')]=function(_0x192df2,_0x347c09){var _0x3ac3d6={'raw':!![],'where':{'id':_0x192df2['params']['id']}},_0x2693eb={};_0x2693eb[_0xa129('0x29')]=_[_0xa129('0x2c')](db[_0xa129('0x3b')][_0xa129('0x40')]);_0x2693eb[_0xa129('0x2d')]=_[_0xa129('0x2c')](_0x192df2[_0xa129('0x2d')]);_0x2693eb[_0xa129('0x2e')]=_['intersection'](_0x2693eb[_0xa129('0x29')],_0x2693eb['query']);_0x3ac3d6[_0xa129('0x2f')]=_[_0xa129('0x41')](_0x2693eb[_0xa129('0x29')],qs[_0xa129('0x30')](_0x192df2['query'][_0xa129('0x30')]));_0x3ac3d6[_0xa129('0x2f')]=_0x3ac3d6[_0xa129('0x2f')][_0xa129('0x31')]?_0x3ac3d6[_0xa129('0x2f')]:_0x2693eb[_0xa129('0x29')];if(_0x192df2[_0xa129('0x2d')][_0xa129('0x3a')]){_0x3ac3d6[_0xa129('0x42')]=[{'all':!![]}];}_0x3ac3d6=_[_0xa129('0x43')]({},_0x3ac3d6,_0x192df2['options']);return db['JscriptyQuestionReport'][_0xa129('0x44')](_0x3ac3d6)[_0xa129('0x21')](handleEntityNotFound(_0x347c09,null))[_0xa129('0x21')](respondWithResult(_0x347c09,null))[_0xa129('0x3e')](handleError(_0x347c09,null));};exports['create']=function(_0x113a98,_0x3a1cb5){return db[_0xa129('0x3b')][_0xa129('0x45')](_0x113a98[_0xa129('0x46')],{})[_0xa129('0x21')](respondWithResult(_0x3a1cb5,0xc9))['catch'](handleError(_0x3a1cb5,null));};exports[_0xa129('0x47')]=function(_0x2cf788,_0x184327){if(_0x2cf788[_0xa129('0x46')]['id']){delete _0x2cf788[_0xa129('0x46')]['id'];}return db[_0xa129('0x3b')][_0xa129('0x44')]({'where':{'id':_0x2cf788[_0xa129('0x48')]['id']}})[_0xa129('0x21')](handleEntityNotFound(_0x184327,null))[_0xa129('0x21')](saveUpdates(_0x2cf788[_0xa129('0x46')],null))[_0xa129('0x21')](respondWithResult(_0x184327,null))[_0xa129('0x3e')](handleError(_0x184327,null));};exports[_0xa129('0x22')]=function(_0x5c7b57,_0x243a8a){return db[_0xa129('0x3b')][_0xa129('0x44')]({'where':{'id':_0x5c7b57['params']['id']}})[_0xa129('0x21')](handleEntityNotFound(_0x243a8a,null))[_0xa129('0x21')](removeEntity(_0x243a8a,null))[_0xa129('0x3e')](handleError(_0x243a8a,null));};exports[_0xa129('0x49')]=function(_0x9ed05f,_0x3beb40){return db[_0xa129('0x3b')][_0xa129('0x49')]()[_0xa129('0x21')](respondWithResult(_0x3beb40,null))[_0xa129('0x3e')](handleError(_0x3beb40,null));};
\ No newline at end of file
index 735a546..df06a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1878=['lodash','util','api','moment','request-promise','path','rimraf','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions'];(function(_0x57ac8f,_0x570008){var _0x3281db=function(_0x1b5dfe){while(--_0x1b5dfe){_0x57ac8f['push'](_0x57ac8f['shift']());}};_0x3281db(++_0x570008);}(_0x1878,0x1e4));var _0x8187=function(_0x4dcf55,_0x247619){_0x4dcf55=_0x4dcf55-0x0;var _0x6fb438=_0x1878[_0x4dcf55];return _0x6fb438;};'use strict';var _=require(_0x8187('0x0'));var util=require(_0x8187('0x1'));var logger=require('../../config/logger')(_0x8187('0x2'));var moment=require(_0x8187('0x3'));var BPromise=require('bluebird');var rp=require(_0x8187('0x4'));var fs=require('fs');var path=require(_0x8187('0x5'));var rimraf=require(_0x8187('0x6'));var config=require('../../config/environment');var attributes=require(_0x8187('0x7'));module[_0x8187('0x8')]=function(_0x27d046,_0x41c019){return _0x27d046[_0x8187('0x9')]('JscriptyQuestionReport',attributes,{'tableName':_0x8187('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7db9=['JscriptyQuestionReport','report_jscripty_questions','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','define'];(function(_0x54a073,_0x2872a5){var _0x4981e2=function(_0x55de56){while(--_0x55de56){_0x54a073['push'](_0x54a073['shift']());}};_0x4981e2(++_0x2872a5);}(_0x7db9,0x195));var _0x97db=function(_0x4fe35d,_0x21fee1){_0x4fe35d=_0x4fe35d-0x0;var _0x5bb28e=_0x7db9[_0x4fe35d];return _0x5bb28e;};'use strict';var _=require(_0x97db('0x0'));var util=require(_0x97db('0x1'));var logger=require('../../config/logger')(_0x97db('0x2'));var moment=require(_0x97db('0x3'));var BPromise=require(_0x97db('0x4'));var rp=require(_0x97db('0x5'));var fs=require('fs');var path=require(_0x97db('0x6'));var rimraf=require(_0x97db('0x7'));var config=require(_0x97db('0x8'));var attributes=require(_0x97db('0x9'));module['exports']=function(_0x278d13,_0x49b49a){return _0x278d13[_0x97db('0xa')](_0x97db('0xb'),attributes,{'tableName':_0x97db('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7334c39..e6079a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x972c=['../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis'];(function(_0x549fb4,_0x57140c){var _0xc64c37=function(_0x40e702){while(--_0x40e702){_0x549fb4['push'](_0x549fb4['shift']());}};_0xc64c37(++_0x57140c);}(_0x972c,0x15c));var _0xc972=function(_0x4cbc9c,_0x52849e){_0x4cbc9c=_0x4cbc9c-0x0;var _0x4f0d4d=_0x972c[_0x4cbc9c];return _0x4f0d4d;};'use strict';var _=require(_0xc972('0x0'));var util=require(_0xc972('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc972('0x2'));var fs=require('fs');var Redis=require(_0xc972('0x3'));var db=require(_0xc972('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc972('0x5'));var config=require(_0xc972('0x6'));var jayson=require(_0xc972('0x7'));var client=jayson[_0xc972('0x8')][_0xc972('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1dbbdd,_0x20fcd4,_0x568b6e){return new BPromise(function(_0x4b95e1,_0x5105ca){return client[_0xc972('0xa')](_0x1dbbdd,_0x568b6e)[_0xc972('0xb')](function(_0x5bc402){logger[_0xc972('0xc')](_0xc972('0xd'),_0x20fcd4,_0xc972('0xe'));logger['debug'](_0xc972('0xf'),_0x20fcd4,_0xc972('0xe'),JSON[_0xc972('0x10')](_0x5bc402));if(_0x5bc402[_0xc972('0x11')]){if(_0x5bc402['error'][_0xc972('0x12')]===0x1f4){logger[_0xc972('0x11')](_0xc972('0xd'),_0x20fcd4,_0x5bc402[_0xc972('0x11')][_0xc972('0x13')]);return _0x5105ca(_0x5bc402[_0xc972('0x11')]['message']);}logger['error'](_0xc972('0xd'),_0x20fcd4,_0x5bc402[_0xc972('0x11')][_0xc972('0x13')]);return _0x4b95e1(_0x5bc402['error'][_0xc972('0x13')]);}else{logger[_0xc972('0xc')](_0xc972('0xd'),_0x20fcd4,_0xc972('0xe'));_0x4b95e1(_0x5bc402[_0xc972('0x14')]['message']);}})[_0xc972('0x15')](function(_0x3edb20){logger['error'](_0xc972('0xd'),_0x20fcd4,_0x3edb20);_0x5105ca(_0x3edb20);});});}
\ No newline at end of file
+var _0xa6ed=['stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s'];(function(_0x516536,_0x27f68b){var _0x457651=function(_0x360361){while(--_0x360361){_0x516536['push'](_0x516536['shift']());}};_0x457651(++_0x27f68b);}(_0xa6ed,0x1e7));var _0xda6e=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xa6ed[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xda6e('0x0'));var util=require(_0xda6e('0x1'));var moment=require('moment');var BPromise=require(_0xda6e('0x2'));var rs=require(_0xda6e('0x3'));var fs=require('fs');var Redis=require(_0xda6e('0x4'));var db=require(_0xda6e('0x5'))['db'];var utils=require(_0xda6e('0x6'));var logger=require('../../config/logger')(_0xda6e('0x7'));var config=require(_0xda6e('0x8'));var jayson=require(_0xda6e('0x9'));var client=jayson['client'][_0xda6e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1250b4,_0x15cb24,_0x324e42){return new BPromise(function(_0x2dfb1e,_0x53265e){return client[_0xda6e('0xb')](_0x1250b4,_0x324e42)[_0xda6e('0xc')](function(_0x49e3e5){logger[_0xda6e('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x15cb24,_0xda6e('0xe'));logger[_0xda6e('0xf')](_0xda6e('0x10'),_0x15cb24,'request\x20sent',JSON[_0xda6e('0x11')](_0x49e3e5));if(_0x49e3e5[_0xda6e('0x12')]){if(_0x49e3e5['error'][_0xda6e('0x13')]===0x1f4){logger['error'](_0xda6e('0x14'),_0x15cb24,_0x49e3e5[_0xda6e('0x12')]['message']);return _0x53265e(_0x49e3e5[_0xda6e('0x12')][_0xda6e('0x15')]);}logger['error'](_0xda6e('0x14'),_0x15cb24,_0x49e3e5[_0xda6e('0x12')][_0xda6e('0x15')]);return _0x2dfb1e(_0x49e3e5['error'][_0xda6e('0x15')]);}else{logger[_0xda6e('0xd')](_0xda6e('0x14'),_0x15cb24,_0xda6e('0xe'));_0x2dfb1e(_0x49e3e5[_0xda6e('0x16')][_0xda6e('0x15')]);}})[_0xda6e('0x17')](function(_0x161d39){logger[_0xda6e('0x12')](_0xda6e('0x14'),_0x15cb24,_0x161d39);_0x53265e(_0x161d39);});});}
\ No newline at end of file
index 47d6d1c..6f4f828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd796=['path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','post','update','delete','destroy','exports'];(function(_0x41a735,_0x323718){var _0x5de055=function(_0x5a49aa){while(--_0x5a49aa){_0x41a735['push'](_0x41a735['shift']());}};_0x5de055(++_0x323718);}(_0xd796,0x78));var _0x6d79=function(_0x3c7986,_0x1bb6bc){_0x3c7986=_0x3c7986-0x0;var _0x3a26a6=_0xd796[_0x3c7986];return _0x3a26a6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6d79('0x0'));var timeout=require(_0x6d79('0x1'));var express=require('express');var router=express[_0x6d79('0x2')]();var fs_extra=require(_0x6d79('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x6d79('0x4'));var config=require(_0x6d79('0x5'));var controller=require('./jscriptySessionReport.controller');router[_0x6d79('0x6')]('/',auth['isAuthenticated'](),controller[_0x6d79('0x7')]);router['get'](_0x6d79('0x8'),auth[_0x6d79('0x9')](),controller[_0x6d79('0xa')]);router[_0x6d79('0x6')](_0x6d79('0xb'),auth[_0x6d79('0x9')](),controller[_0x6d79('0xc')]);router[_0x6d79('0x6')](_0x6d79('0xd'),auth['isAuthenticated'](),controller[_0x6d79('0xe')]);router[_0x6d79('0xf')]('/',auth[_0x6d79('0x9')](),controller['create']);router['put']('/:id',auth[_0x6d79('0x9')](),controller[_0x6d79('0x10')]);router[_0x6d79('0x11')](_0x6d79('0xb'),auth['isAuthenticated'](),controller[_0x6d79('0x12')]);module[_0x6d79('0x13')]=router;
\ No newline at end of file
+var _0x9227=['../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','destroy','exports','util','path','Router','fs-extra'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x9227,0x9c));var _0x7922=function(_0xd75cc6,_0x3a670d){_0xd75cc6=_0xd75cc6-0x0;var _0x5af7a0=_0x9227[_0xd75cc6];return _0x5af7a0;};'use strict';var multer=require('multer');var util=require(_0x7922('0x0'));var path=require(_0x7922('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7922('0x2')]();var fs_extra=require(_0x7922('0x3'));var auth=require(_0x7922('0x4'));var interaction=require(_0x7922('0x5'));var config=require('../../config/environment');var controller=require(_0x7922('0x6'));router[_0x7922('0x7')]('/',auth[_0x7922('0x8')](),controller['index']);router[_0x7922('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x7922('0x9')]);router[_0x7922('0x7')](_0x7922('0xa'),auth[_0x7922('0x8')](),controller[_0x7922('0xb')]);router[_0x7922('0x7')](_0x7922('0xc'),auth[_0x7922('0x8')](),controller[_0x7922('0xd')]);router[_0x7922('0xe')]('/',auth[_0x7922('0x8')](),controller[_0x7922('0xf')]);router[_0x7922('0x10')](_0x7922('0xa'),auth[_0x7922('0x8')](),controller[_0x7922('0x11')]);router['delete'](_0x7922('0xa'),auth['isAuthenticated'](),controller[_0x7922('0x12')]);module[_0x7922('0x13')]=router;
\ No newline at end of file
index d8d30ed..94f9d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e33=['moment','sequelize','DATE','setDataValue','endtime','format','STRING','BOOLEAN'];(function(_0x4ab58f,_0x382a69){var _0x699d7d=function(_0x4cfaee){while(--_0x4cfaee){_0x4ab58f['push'](_0x4ab58f['shift']());}};_0x699d7d(++_0x382a69);}(_0x0e33,0xf8));var _0x30e3=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x0e33[_0x3b380d];return _0x54502b;};'use strict';var moment=require(_0x30e3('0x0'));var Sequelize=require(_0x30e3('0x1'));module['exports']={'starttime':{'type':Sequelize[_0x30e3('0x2')],'set':function(_0x17ab04){this[_0x30e3('0x3')]('starttime',_0x17ab04);this[_0x30e3('0x3')](_0x30e3('0x4'),moment()[_0x30e3('0x5')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x30e3('0x6')]},'projectname':{'type':Sequelize[_0x30e3('0x6')]},'queue':{'type':Sequelize[_0x30e3('0x6')]},'uniqueid':{'type':Sequelize[_0x30e3('0x6')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x30e3('0x6')]},'completed':{'type':Sequelize[_0x30e3('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4b9d=['BOOLEAN','moment','sequelize','DATE','starttime','setDataValue','endtime','format','STRING'];(function(_0x114a88,_0xcd0483){var _0x3ec44c=function(_0x35ba14){while(--_0x35ba14){_0x114a88['push'](_0x114a88['shift']());}};_0x3ec44c(++_0xcd0483);}(_0x4b9d,0x1c3));var _0xd4b9=function(_0x53b53e,_0x498437){_0x53b53e=_0x53b53e-0x0;var _0xbb6179=_0x4b9d[_0x53b53e];return _0xbb6179;};'use strict';var moment=require(_0xd4b9('0x0'));var Sequelize=require(_0xd4b9('0x1'));module['exports']={'starttime':{'type':Sequelize[_0xd4b9('0x2')],'set':function(_0x1fc2d0){this['setDataValue'](_0xd4b9('0x3'),_0x1fc2d0);this[_0xd4b9('0x4')](_0xd4b9('0x5'),moment()[_0xd4b9('0x6')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0xd4b9('0x2')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0xd4b9('0x7')]},'queue':{'type':Sequelize[_0xd4b9('0x7')]},'uniqueid':{'type':Sequelize[_0xd4b9('0x7')]},'calleridname':{'type':Sequelize[_0xd4b9('0x7')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xd4b9('0x8')],'defaultValue':![]}};
\ No newline at end of file
index ef54305..b7e3a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb412=['map','JscriptySessionReport','type','model','query','filters','intersection','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','include','findAll','catch','params','keys','rawAttributes','fields','find','create','body','describe','getQuestions','JscriptyQuestionReport','nolimit','SessionId','rows','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','index'];(function(_0x6fbbf0,_0x32c234){var _0x12709d=function(_0x4fc877){while(--_0x4fc877){_0x6fbbf0['push'](_0x6fbbf0['shift']());}};_0x12709d(++_0x32c234);}(_0xb412,0x6e));var _0x2b41=function(_0x32faea,_0x54ce22){_0x32faea=_0x32faea-0x0;var _0x1ad3dd=_0xb412[_0x32faea];return _0x1ad3dd;};'use strict';var emlformat=require(_0x2b41('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2b41('0x1'));var rp=require(_0x2b41('0x2'));var moment=require(_0x2b41('0x3'));var BPromise=require(_0x2b41('0x4'));var Mustache=require('mustache');var util=require(_0x2b41('0x5'));var path=require(_0x2b41('0x6'));var sox=require(_0x2b41('0x7'));var csv=require(_0x2b41('0x8'));var ejs=require(_0x2b41('0x9'));var fs=require('fs');var fs_extra=require(_0x2b41('0xa'));var _=require('lodash');var squel=require(_0x2b41('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2b41('0xc'));var toCsv=require(_0x2b41('0x8'));var querystring=require(_0x2b41('0xd'));var Papa=require(_0x2b41('0xe'));var Redis=require(_0x2b41('0xf'));var authService=require(_0x2b41('0x10'));var qs=require(_0x2b41('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2b41('0x12'))('api');var utils=require(_0x2b41('0x13'));var config=require(_0x2b41('0x14'));var licenseUtil=require(_0x2b41('0x15'));var db=require(_0x2b41('0x16'))['db'];function respondWithStatusCode(_0x2037f8,_0xb0b425){_0xb0b425=_0xb0b425||0xcc;return function(_0x16d7c7){if(_0x16d7c7){return _0x2037f8[_0x2b41('0x17')](_0xb0b425);}return _0x2037f8[_0x2b41('0x18')](_0xb0b425)[_0x2b41('0x19')]();};}function respondWithResult(_0xa90826,_0x3dc8dc){_0x3dc8dc=_0x3dc8dc||0xc8;return function(_0x1a997f){if(_0x1a997f){return _0xa90826[_0x2b41('0x18')](_0x3dc8dc)[_0x2b41('0x1a')](_0x1a997f);}};}function respondWithFilteredResult(_0xe0acc3,_0x8a3ad5){return function(_0x728d25){if(_0x728d25){var _0x334437=typeof _0x8a3ad5['offset']===_0x2b41('0x1b')&&typeof _0x8a3ad5[_0x2b41('0x1c')]===_0x2b41('0x1b');var _0x441a6d=_0x728d25[_0x2b41('0x1d')];var _0x12cdc8=_0x334437?0x0:_0x8a3ad5[_0x2b41('0x1e')];var _0x40145e=_0x334437?_0x728d25['count']:_0x8a3ad5[_0x2b41('0x1e')]+_0x8a3ad5[_0x2b41('0x1c')];var _0x3b529a;if(_0x40145e>=_0x441a6d){_0x40145e=_0x441a6d;_0x3b529a=0xc8;}else{_0x3b529a=0xce;}_0xe0acc3[_0x2b41('0x18')](_0x3b529a);return _0xe0acc3[_0x2b41('0x1f')](_0x2b41('0x20'),_0x12cdc8+'-'+_0x40145e+'/'+_0x441a6d)['json'](_0x728d25);}return null;};}function patchUpdates(_0x6d6f8f){return function(_0x585968){try{jsonpatch[_0x2b41('0x21')](_0x585968,_0x6d6f8f,!![]);}catch(_0x2f1723){return BPromise[_0x2b41('0x22')](_0x2f1723);}return _0x585968['save']();};}function saveUpdates(_0x2d8301,_0x22aa25){return function(_0x59dec2){if(_0x59dec2){return _0x59dec2[_0x2b41('0x23')](_0x2d8301)[_0x2b41('0x24')](function(_0x4c8e0f){return _0x4c8e0f;});}return null;};}function removeEntity(_0x128c8d,_0x2fc80c){return function(_0x26e0b3){if(_0x26e0b3){return _0x26e0b3[_0x2b41('0x25')]()[_0x2b41('0x24')](function(){_0x128c8d[_0x2b41('0x18')](0xcc)[_0x2b41('0x19')]();});}};}function handleEntityNotFound(_0x51cfc3,_0x23d771){return function(_0x4c32f4){if(!_0x4c32f4){_0x51cfc3[_0x2b41('0x17')](0x194);}return _0x4c32f4;};}function handleError(_0x3f0309,_0x534283){_0x534283=_0x534283||0x1f4;return function(_0x541fe5){logger[_0x2b41('0x26')](_0x541fe5['stack']);if(_0x541fe5['name']){delete _0x541fe5['name'];}_0x3f0309['status'](_0x534283)['send'](_0x541fe5);};}exports[_0x2b41('0x27')]=function(_0x116501,_0x48a689){var _0x79d5aa={},_0x32c4cd={},_0x10decd={'count':0x0,'rows':[]};var _0x2daec4=_[_0x2b41('0x28')](db[_0x2b41('0x29')]['rawAttributes'],function(_0x3a80dc){return{'name':_0x3a80dc['fieldName'],'type':_0x3a80dc[_0x2b41('0x2a')]['key']};});_0x32c4cd[_0x2b41('0x2b')]=_[_0x2b41('0x28')](_0x2daec4,'name');_0x32c4cd[_0x2b41('0x2c')]=_['keys'](_0x116501[_0x2b41('0x2c')]);_0x32c4cd[_0x2b41('0x2d')]=_[_0x2b41('0x2e')](_0x32c4cd[_0x2b41('0x2b')],_0x32c4cd['query']);_0x79d5aa[_0x2b41('0x2f')]=_[_0x2b41('0x2e')](_0x32c4cd[_0x2b41('0x2b')],qs['fields'](_0x116501[_0x2b41('0x2c')]['fields']));_0x79d5aa['attributes']=_0x79d5aa[_0x2b41('0x2f')][_0x2b41('0x30')]?_0x79d5aa[_0x2b41('0x2f')]:_0x32c4cd['model'];if(!_0x116501[_0x2b41('0x2c')][_0x2b41('0x31')]('nolimit')){_0x79d5aa[_0x2b41('0x1c')]=qs[_0x2b41('0x1c')](_0x116501[_0x2b41('0x2c')][_0x2b41('0x1c')]);_0x79d5aa[_0x2b41('0x1e')]=qs[_0x2b41('0x1e')](_0x116501[_0x2b41('0x2c')][_0x2b41('0x1e')]);}_0x79d5aa['order']=qs[_0x2b41('0x32')](_0x116501[_0x2b41('0x2c')][_0x2b41('0x32')]);_0x79d5aa[_0x2b41('0x33')]=qs[_0x2b41('0x2d')](_[_0x2b41('0x34')](_0x116501[_0x2b41('0x2c')],_0x32c4cd['filters']),_0x2daec4);if(_0x116501[_0x2b41('0x2c')][_0x2b41('0x35')]){_0x79d5aa[_0x2b41('0x33')]=_[_0x2b41('0x36')](_0x79d5aa[_0x2b41('0x33')],{'$or':_['map'](_0x2daec4,function(_0x56adae){if(_0x56adae[_0x2b41('0x2a')]!==_0x2b41('0x37')){var _0x2550eb={};_0x2550eb[_0x56adae[_0x2b41('0x38')]]={'$like':'%'+_0x116501[_0x2b41('0x2c')][_0x2b41('0x35')]+'%'};return _0x2550eb;}})});}_0x79d5aa=_[_0x2b41('0x36')]({},_0x79d5aa,_0x116501[_0x2b41('0x39')]);var _0x2dcc76={'where':_0x79d5aa['where']};return db['JscriptySessionReport'][_0x2b41('0x1d')](_0x2dcc76)[_0x2b41('0x24')](function(_0x4f0ec6){_0x10decd['count']=_0x4f0ec6;if(_0x116501[_0x2b41('0x2c')][_0x2b41('0x3a')]){_0x79d5aa[_0x2b41('0x3b')]=[{'all':!![]}];}return db[_0x2b41('0x29')][_0x2b41('0x3c')](_0x79d5aa);})['then'](function(_0x555e65){_0x10decd['rows']=_0x555e65;return _0x10decd;})[_0x2b41('0x24')](respondWithFilteredResult(_0x48a689,_0x79d5aa))[_0x2b41('0x3d')](handleError(_0x48a689,null));};exports['show']=function(_0x37ba3b,_0x3a99ff){var _0x397f3c={'raw':!![],'where':{'id':_0x37ba3b[_0x2b41('0x3e')]['id']}},_0x54baf8={};_0x54baf8[_0x2b41('0x2b')]=_[_0x2b41('0x3f')](db[_0x2b41('0x29')][_0x2b41('0x40')]);_0x54baf8['query']=_[_0x2b41('0x3f')](_0x37ba3b[_0x2b41('0x2c')]);_0x54baf8[_0x2b41('0x2d')]=_[_0x2b41('0x2e')](_0x54baf8[_0x2b41('0x2b')],_0x54baf8[_0x2b41('0x2c')]);_0x397f3c[_0x2b41('0x2f')]=_[_0x2b41('0x2e')](_0x54baf8[_0x2b41('0x2b')],qs[_0x2b41('0x41')](_0x37ba3b[_0x2b41('0x2c')]['fields']));_0x397f3c[_0x2b41('0x2f')]=_0x397f3c[_0x2b41('0x2f')][_0x2b41('0x30')]?_0x397f3c['attributes']:_0x54baf8[_0x2b41('0x2b')];if(_0x37ba3b[_0x2b41('0x2c')]['includeAll']){_0x397f3c[_0x2b41('0x3b')]=[{'all':!![]}];}_0x397f3c=_[_0x2b41('0x36')]({},_0x397f3c,_0x37ba3b[_0x2b41('0x39')]);return db[_0x2b41('0x29')][_0x2b41('0x42')](_0x397f3c)[_0x2b41('0x24')](handleEntityNotFound(_0x3a99ff,null))[_0x2b41('0x24')](respondWithResult(_0x3a99ff,null))[_0x2b41('0x3d')](handleError(_0x3a99ff,null));};exports['create']=function(_0x976fc8,_0x3d4846){return db[_0x2b41('0x29')][_0x2b41('0x43')](_0x976fc8[_0x2b41('0x44')],{})[_0x2b41('0x24')](respondWithResult(_0x3d4846,0xc9))['catch'](handleError(_0x3d4846,null));};exports[_0x2b41('0x23')]=function(_0x4630aa,_0x13837d){if(_0x4630aa[_0x2b41('0x44')]['id']){delete _0x4630aa['body']['id'];}return db[_0x2b41('0x29')][_0x2b41('0x42')]({'where':{'id':_0x4630aa[_0x2b41('0x3e')]['id']}})[_0x2b41('0x24')](handleEntityNotFound(_0x13837d,null))[_0x2b41('0x24')](saveUpdates(_0x4630aa[_0x2b41('0x44')],null))['then'](respondWithResult(_0x13837d,null))['catch'](handleError(_0x13837d,null));};exports[_0x2b41('0x25')]=function(_0x168a1d,_0x374bc9){return db[_0x2b41('0x29')][_0x2b41('0x42')]({'where':{'id':_0x168a1d['params']['id']}})['then'](handleEntityNotFound(_0x374bc9,null))[_0x2b41('0x24')](removeEntity(_0x374bc9,null))[_0x2b41('0x3d')](handleError(_0x374bc9,null));};exports['describe']=function(_0x41dc83,_0x3469ea){return db[_0x2b41('0x29')][_0x2b41('0x45')]()['then'](respondWithResult(_0x3469ea,null))[_0x2b41('0x3d')](handleError(_0x3469ea,null));};exports[_0x2b41('0x46')]=function(_0x2989bb,_0x27eeba,_0x57e679){var _0x639e81={'raw':!![],'where':{}};var _0x5bbd57={};var _0x330554={'count':0x0,'rows':[]};return db[_0x2b41('0x29')]['findOne']({'where':{'id':_0x2989bb[_0x2b41('0x3e')]['id']}})[_0x2b41('0x24')](handleEntityNotFound(_0x27eeba,null))[_0x2b41('0x24')](function(_0x406d8c){if(_0x406d8c){_0x5bbd57[_0x2b41('0x2b')]=_[_0x2b41('0x3f')](db[_0x2b41('0x47')][_0x2b41('0x40')]);_0x5bbd57['query']=_[_0x2b41('0x3f')](_0x2989bb[_0x2b41('0x2c')]);_0x5bbd57['filters']=_[_0x2b41('0x2e')](_0x5bbd57[_0x2b41('0x2b')],_0x5bbd57['query']);_0x639e81[_0x2b41('0x2f')]=_[_0x2b41('0x2e')](_0x5bbd57[_0x2b41('0x2b')],qs[_0x2b41('0x41')](_0x2989bb[_0x2b41('0x2c')]['fields']));_0x639e81[_0x2b41('0x2f')]=_0x639e81[_0x2b41('0x2f')][_0x2b41('0x30')]?_0x639e81[_0x2b41('0x2f')]:_0x5bbd57['model'];if(!_0x2989bb[_0x2b41('0x2c')][_0x2b41('0x31')](_0x2b41('0x48'))){_0x639e81[_0x2b41('0x1c')]=qs['limit'](_0x2989bb['query'][_0x2b41('0x1c')]);_0x639e81[_0x2b41('0x1e')]=qs[_0x2b41('0x1e')](_0x2989bb['query']['offset']);}_0x639e81['order']=qs[_0x2b41('0x32')](_0x2989bb[_0x2b41('0x2c')]['sort']);_0x639e81[_0x2b41('0x33')]=qs[_0x2b41('0x2d')](_[_0x2b41('0x34')](_0x2989bb['query'],_0x5bbd57[_0x2b41('0x2d')]));_0x639e81[_0x2b41('0x33')][_0x2b41('0x49')]=_0x406d8c['id'];if(_0x2989bb[_0x2b41('0x2c')][_0x2b41('0x35')]){_0x639e81['where']=_[_0x2b41('0x36')](_0x639e81[_0x2b41('0x33')],{'$or':_['map'](_0x639e81[_0x2b41('0x2f')],function(_0x24c7c3){var _0x5ab5d2={};_0x5ab5d2[_0x24c7c3]={'$like':'%'+_0x2989bb[_0x2b41('0x2c')][_0x2b41('0x35')]+'%'};return _0x5ab5d2;})});}_0x639e81=_[_0x2b41('0x36')]({},_0x639e81,_0x2989bb[_0x2b41('0x39')]);return db[_0x2b41('0x47')]['count']({'where':_0x639e81[_0x2b41('0x33')]})['then'](function(_0x400604){_0x330554['count']=_0x400604;if(_0x2989bb[_0x2b41('0x2c')][_0x2b41('0x3a')]){_0x639e81[_0x2b41('0x3b')]=[{'all':!![]}];}return db[_0x2b41('0x47')][_0x2b41('0x3c')](_0x639e81);})[_0x2b41('0x24')](function(_0x1db62d){_0x330554[_0x2b41('0x4a')]=_0x1db62d;return _0x330554;});}})['then'](respondWithFilteredResult(_0x27eeba,_0x639e81))[_0x2b41('0x3d')](handleError(_0x27eeba,null));};
\ No newline at end of file
+var _0x226f=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','error','stack','name','index','map','JscriptySessionReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','filter','merge','include','findAll','catch','show','params','includeAll','options','create','body','update','find','describe','getQuestions','findOne','JscriptyQuestionReport','order','sort','SessionId','rows','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','fs-extra','squel','crypto','jsforce'];(function(_0x49637f,_0xb4393c){var _0x5915c6=function(_0x21b259){while(--_0x21b259){_0x49637f['push'](_0x49637f['shift']());}};_0x5915c6(++_0xb4393c);}(_0x226f,0xe1));var _0xf226=function(_0x4529da,_0x10c92a){_0x4529da=_0x4529da-0x0;var _0x5e2867=_0x226f[_0x4529da];return _0x5e2867;};'use strict';var emlformat=require(_0xf226('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf226('0x1'));var jsonpatch=require(_0xf226('0x2'));var rp=require('request-promise');var moment=require(_0xf226('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xf226('0x4'));var util=require(_0xf226('0x5'));var path=require(_0xf226('0x6'));var sox=require('sox');var csv=require(_0xf226('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf226('0x8'));var _=require('lodash');var squel=require(_0xf226('0x9'));var crypto=require(_0xf226('0xa'));var jsforce=require(_0xf226('0xb'));var deskjs=require(_0xf226('0xc'));var toCsv=require(_0xf226('0x7'));var querystring=require(_0xf226('0xd'));var Papa=require(_0xf226('0xe'));var Redis=require('ioredis');var authService=require(_0xf226('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf226('0x10'));var hardwareService=require(_0xf226('0x11'));var logger=require(_0xf226('0x12'))(_0xf226('0x13'));var utils=require(_0xf226('0x14'));var config=require(_0xf226('0x15'));var licenseUtil=require(_0xf226('0x16'));var db=require(_0xf226('0x17'))['db'];function respondWithStatusCode(_0x5cafed,_0xbdf60c){_0xbdf60c=_0xbdf60c||0xcc;return function(_0x24f005){if(_0x24f005){return _0x5cafed[_0xf226('0x18')](_0xbdf60c);}return _0x5cafed[_0xf226('0x19')](_0xbdf60c)[_0xf226('0x1a')]();};}function respondWithResult(_0xf97946,_0xa6b75){_0xa6b75=_0xa6b75||0xc8;return function(_0x341cb9){if(_0x341cb9){return _0xf97946[_0xf226('0x19')](_0xa6b75)[_0xf226('0x1b')](_0x341cb9);}};}function respondWithFilteredResult(_0x6f23,_0x522ea3){return function(_0x1b46b9){if(_0x1b46b9){var _0x4ac893=typeof _0x522ea3[_0xf226('0x1c')]===_0xf226('0x1d')&&typeof _0x522ea3[_0xf226('0x1e')]===_0xf226('0x1d');var _0x2e6381=_0x1b46b9[_0xf226('0x1f')];var _0x4721c7=_0x4ac893?0x0:_0x522ea3[_0xf226('0x1c')];var _0x1cfc37=_0x4ac893?_0x1b46b9['count']:_0x522ea3[_0xf226('0x1c')]+_0x522ea3['limit'];var _0x347753;if(_0x1cfc37>=_0x2e6381){_0x1cfc37=_0x2e6381;_0x347753=0xc8;}else{_0x347753=0xce;}_0x6f23[_0xf226('0x19')](_0x347753);return _0x6f23[_0xf226('0x20')](_0xf226('0x21'),_0x4721c7+'-'+_0x1cfc37+'/'+_0x2e6381)[_0xf226('0x1b')](_0x1b46b9);}return null;};}function patchUpdates(_0x444654){return function(_0x1e4d1e){try{jsonpatch[_0xf226('0x22')](_0x1e4d1e,_0x444654,!![]);}catch(_0x3b62b0){return BPromise[_0xf226('0x23')](_0x3b62b0);}return _0x1e4d1e['save']();};}function saveUpdates(_0x1e54c9,_0x2a5060){return function(_0x3ba29c){if(_0x3ba29c){return _0x3ba29c['update'](_0x1e54c9)[_0xf226('0x24')](function(_0x5260e3){return _0x5260e3;});}return null;};}function removeEntity(_0x22354c,_0x1200bc){return function(_0x9011c3){if(_0x9011c3){return _0x9011c3['destroy']()[_0xf226('0x24')](function(){_0x22354c[_0xf226('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa510c9,_0x107124){return function(_0x304076){if(!_0x304076){_0xa510c9[_0xf226('0x18')](0x194);}return _0x304076;};}function handleError(_0x36e681,_0x1b92ca){_0x1b92ca=_0x1b92ca||0x1f4;return function(_0x22f50e){logger[_0xf226('0x25')](_0x22f50e[_0xf226('0x26')]);if(_0x22f50e['name']){delete _0x22f50e[_0xf226('0x27')];}_0x36e681[_0xf226('0x19')](_0x1b92ca)['send'](_0x22f50e);};}exports[_0xf226('0x28')]=function(_0x4cde64,_0x44d0e5){var _0x4fc85b={},_0x27aa88={},_0x32f069={'count':0x0,'rows':[]};var _0x266f5d=_[_0xf226('0x29')](db[_0xf226('0x2a')][_0xf226('0x2b')],function(_0x1b9ad1){return{'name':_0x1b9ad1[_0xf226('0x2c')],'type':_0x1b9ad1['type'][_0xf226('0x2d')]};});_0x27aa88[_0xf226('0x2e')]=_['map'](_0x266f5d,_0xf226('0x27'));_0x27aa88[_0xf226('0x2f')]=_[_0xf226('0x30')](_0x4cde64[_0xf226('0x2f')]);_0x27aa88[_0xf226('0x31')]=_[_0xf226('0x32')](_0x27aa88[_0xf226('0x2e')],_0x27aa88['query']);_0x4fc85b[_0xf226('0x33')]=_['intersection'](_0x27aa88[_0xf226('0x2e')],qs[_0xf226('0x34')](_0x4cde64['query']['fields']));_0x4fc85b[_0xf226('0x33')]=_0x4fc85b['attributes'][_0xf226('0x35')]?_0x4fc85b[_0xf226('0x33')]:_0x27aa88[_0xf226('0x2e')];if(!_0x4cde64['query'][_0xf226('0x36')](_0xf226('0x37'))){_0x4fc85b[_0xf226('0x1e')]=qs['limit'](_0x4cde64['query']['limit']);_0x4fc85b['offset']=qs[_0xf226('0x1c')](_0x4cde64[_0xf226('0x2f')][_0xf226('0x1c')]);}_0x4fc85b['order']=qs['sort'](_0x4cde64[_0xf226('0x2f')]['sort']);_0x4fc85b[_0xf226('0x38')]=qs[_0xf226('0x31')](_[_0xf226('0x39')](_0x4cde64['query'],_0x27aa88[_0xf226('0x31')]),_0x266f5d);if(_0x4cde64['query'][_0xf226('0x3a')]){_0x4fc85b['where']=_[_0xf226('0x3b')](_0x4fc85b[_0xf226('0x38')],{'$or':_[_0xf226('0x29')](_0x266f5d,function(_0xeb7658){if(_0xeb7658['type']!=='VIRTUAL'){var _0x1623e3={};_0x1623e3[_0xeb7658[_0xf226('0x27')]]={'$like':'%'+_0x4cde64['query']['filter']+'%'};return _0x1623e3;}})});}_0x4fc85b=_['merge']({},_0x4fc85b,_0x4cde64['options']);var _0x34812f={'where':_0x4fc85b[_0xf226('0x38')]};return db[_0xf226('0x2a')]['count'](_0x34812f)[_0xf226('0x24')](function(_0x21575d){_0x32f069['count']=_0x21575d;if(_0x4cde64['query']['includeAll']){_0x4fc85b[_0xf226('0x3c')]=[{'all':!![]}];}return db[_0xf226('0x2a')][_0xf226('0x3d')](_0x4fc85b);})[_0xf226('0x24')](function(_0x1bb344){_0x32f069['rows']=_0x1bb344;return _0x32f069;})['then'](respondWithFilteredResult(_0x44d0e5,_0x4fc85b))[_0xf226('0x3e')](handleError(_0x44d0e5,null));};exports[_0xf226('0x3f')]=function(_0x522c2c,_0x307283){var _0x595e3a={'raw':!![],'where':{'id':_0x522c2c[_0xf226('0x40')]['id']}},_0x52adf6={};_0x52adf6[_0xf226('0x2e')]=_['keys'](db['JscriptySessionReport']['rawAttributes']);_0x52adf6['query']=_[_0xf226('0x30')](_0x522c2c[_0xf226('0x2f')]);_0x52adf6[_0xf226('0x31')]=_[_0xf226('0x32')](_0x52adf6['model'],_0x52adf6[_0xf226('0x2f')]);_0x595e3a['attributes']=_['intersection'](_0x52adf6[_0xf226('0x2e')],qs[_0xf226('0x34')](_0x522c2c[_0xf226('0x2f')][_0xf226('0x34')]));_0x595e3a[_0xf226('0x33')]=_0x595e3a[_0xf226('0x33')]['length']?_0x595e3a[_0xf226('0x33')]:_0x52adf6[_0xf226('0x2e')];if(_0x522c2c['query'][_0xf226('0x41')]){_0x595e3a[_0xf226('0x3c')]=[{'all':!![]}];}_0x595e3a=_[_0xf226('0x3b')]({},_0x595e3a,_0x522c2c[_0xf226('0x42')]);return db[_0xf226('0x2a')]['find'](_0x595e3a)[_0xf226('0x24')](handleEntityNotFound(_0x307283,null))[_0xf226('0x24')](respondWithResult(_0x307283,null))['catch'](handleError(_0x307283,null));};exports[_0xf226('0x43')]=function(_0x4f72fa,_0x53e2cf){return db[_0xf226('0x2a')][_0xf226('0x43')](_0x4f72fa[_0xf226('0x44')],{})['then'](respondWithResult(_0x53e2cf,0xc9))[_0xf226('0x3e')](handleError(_0x53e2cf,null));};exports[_0xf226('0x45')]=function(_0x54c9d7,_0x5d6823){if(_0x54c9d7[_0xf226('0x44')]['id']){delete _0x54c9d7[_0xf226('0x44')]['id'];}return db[_0xf226('0x2a')][_0xf226('0x46')]({'where':{'id':_0x54c9d7[_0xf226('0x40')]['id']}})['then'](handleEntityNotFound(_0x5d6823,null))[_0xf226('0x24')](saveUpdates(_0x54c9d7['body'],null))[_0xf226('0x24')](respondWithResult(_0x5d6823,null))[_0xf226('0x3e')](handleError(_0x5d6823,null));};exports['destroy']=function(_0xa6303a,_0x3738ad){return db['JscriptySessionReport'][_0xf226('0x46')]({'where':{'id':_0xa6303a[_0xf226('0x40')]['id']}})['then'](handleEntityNotFound(_0x3738ad,null))[_0xf226('0x24')](removeEntity(_0x3738ad,null))[_0xf226('0x3e')](handleError(_0x3738ad,null));};exports[_0xf226('0x47')]=function(_0x508297,_0x3b06eb){return db[_0xf226('0x2a')]['describe']()['then'](respondWithResult(_0x3b06eb,null))['catch'](handleError(_0x3b06eb,null));};exports[_0xf226('0x48')]=function(_0x102490,_0x9b4e79,_0x2fdc1c){var _0x5cc789={'raw':!![],'where':{}};var _0x4724d7={};var _0x153b80={'count':0x0,'rows':[]};return db[_0xf226('0x2a')][_0xf226('0x49')]({'where':{'id':_0x102490[_0xf226('0x40')]['id']}})[_0xf226('0x24')](handleEntityNotFound(_0x9b4e79,null))[_0xf226('0x24')](function(_0x2546ab){if(_0x2546ab){_0x4724d7[_0xf226('0x2e')]=_[_0xf226('0x30')](db[_0xf226('0x4a')][_0xf226('0x2b')]);_0x4724d7[_0xf226('0x2f')]=_[_0xf226('0x30')](_0x102490['query']);_0x4724d7[_0xf226('0x31')]=_[_0xf226('0x32')](_0x4724d7[_0xf226('0x2e')],_0x4724d7['query']);_0x5cc789[_0xf226('0x33')]=_[_0xf226('0x32')](_0x4724d7['model'],qs[_0xf226('0x34')](_0x102490[_0xf226('0x2f')][_0xf226('0x34')]));_0x5cc789[_0xf226('0x33')]=_0x5cc789[_0xf226('0x33')][_0xf226('0x35')]?_0x5cc789[_0xf226('0x33')]:_0x4724d7[_0xf226('0x2e')];if(!_0x102490[_0xf226('0x2f')][_0xf226('0x36')]('nolimit')){_0x5cc789[_0xf226('0x1e')]=qs[_0xf226('0x1e')](_0x102490[_0xf226('0x2f')][_0xf226('0x1e')]);_0x5cc789[_0xf226('0x1c')]=qs[_0xf226('0x1c')](_0x102490[_0xf226('0x2f')][_0xf226('0x1c')]);}_0x5cc789[_0xf226('0x4b')]=qs['sort'](_0x102490['query'][_0xf226('0x4c')]);_0x5cc789[_0xf226('0x38')]=qs['filters'](_[_0xf226('0x39')](_0x102490[_0xf226('0x2f')],_0x4724d7[_0xf226('0x31')]));_0x5cc789[_0xf226('0x38')][_0xf226('0x4d')]=_0x2546ab['id'];if(_0x102490[_0xf226('0x2f')][_0xf226('0x3a')]){_0x5cc789[_0xf226('0x38')]=_[_0xf226('0x3b')](_0x5cc789[_0xf226('0x38')],{'$or':_[_0xf226('0x29')](_0x5cc789[_0xf226('0x33')],function(_0x5d9e6c){var _0x56c3a1={};_0x56c3a1[_0x5d9e6c]={'$like':'%'+_0x102490[_0xf226('0x2f')][_0xf226('0x3a')]+'%'};return _0x56c3a1;})});}_0x5cc789=_[_0xf226('0x3b')]({},_0x5cc789,_0x102490[_0xf226('0x42')]);return db[_0xf226('0x4a')][_0xf226('0x1f')]({'where':_0x5cc789[_0xf226('0x38')]})[_0xf226('0x24')](function(_0x53860d){_0x153b80[_0xf226('0x1f')]=_0x53860d;if(_0x102490[_0xf226('0x2f')][_0xf226('0x41')]){_0x5cc789[_0xf226('0x3c')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x5cc789);})[_0xf226('0x24')](function(_0x50a1fd){_0x153b80[_0xf226('0x4e')]=_0x50a1fd;return _0x153b80;});}})['then'](respondWithFilteredResult(_0x9b4e79,_0x5cc789))[_0xf226('0x3e')](handleError(_0x9b4e79,null));};
\ No newline at end of file
index a9d91da..f934ce6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a3=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','JscriptySessionReport','util'];(function(_0x39e84d,_0x11931d){var _0x1991bc=function(_0xc81e32){while(--_0xc81e32){_0x39e84d['push'](_0x39e84d['shift']());}};_0x1991bc(++_0x11931d);}(_0xc7a3,0xbd));var _0x3c7a=function(_0x2087dc,_0x7c5cdb){_0x2087dc=_0x2087dc-0x0;var _0x43db2c=_0xc7a3[_0x2087dc];return _0x43db2c;};'use strict';var _=require('lodash');var util=require(_0x3c7a('0x0'));var logger=require(_0x3c7a('0x1'))(_0x3c7a('0x2'));var moment=require(_0x3c7a('0x3'));var BPromise=require(_0x3c7a('0x4'));var rp=require(_0x3c7a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3c7a('0x6'));var config=require(_0x3c7a('0x7'));var attributes=require('./jscriptySessionReport.attributes');module[_0x3c7a('0x8')]=function(_0x2051ce,_0x2736c1){return _0x2051ce['define'](_0x3c7a('0x9'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84e7=['./jscriptySessionReport.attributes','exports','define','report_jscripty_sessions','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0x84e7,0x122));var _0x784e=function(_0x49bfe4,_0x5ce13c){_0x49bfe4=_0x49bfe4-0x0;var _0x40cb34=_0x84e7[_0x49bfe4];return _0x40cb34;};'use strict';var _=require('lodash');var util=require(_0x784e('0x0'));var logger=require(_0x784e('0x1'))('api');var moment=require(_0x784e('0x2'));var BPromise=require(_0x784e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x784e('0x4'));var rimraf=require(_0x784e('0x5'));var config=require(_0x784e('0x6'));var attributes=require(_0x784e('0x7'));module[_0x784e('0x8')]=function(_0x133296,_0x48ed22){return _0x133296[_0x784e('0x9')]('JscriptySessionReport',attributes,{'tableName':_0x784e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9bbc3a..b9fe088 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error','code','JscriptySessionReport,\x20%s,\x20%s','message','info','result','catch','lodash'];(function(_0x11d95f,_0x34f442){var _0x2b1a14=function(_0x3a4fa5){while(--_0x3a4fa5){_0x11d95f['push'](_0x11d95f['shift']());}};_0x2b1a14(++_0x34f442);}(_0xdf55,0x83));var _0x5df5=function(_0x430936,_0x2a6e66){_0x430936=_0x430936-0x0;var _0x470994=_0xdf55[_0x430936];return _0x470994;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var moment=require('moment');var BPromise=require(_0x5df5('0x2'));var rs=require(_0x5df5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5df5('0x4'))['db'];var utils=require(_0x5df5('0x5'));var logger=require(_0x5df5('0x6'))('rpc');var config=require(_0x5df5('0x7'));var jayson=require(_0x5df5('0x8'));var client=jayson[_0x5df5('0x9')][_0x5df5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9b8756,_0x2b7ed9,_0x4722a2){return new BPromise(function(_0x3743f3,_0x4d43a3){return client[_0x5df5('0xb')](_0x9b8756,_0x4722a2)[_0x5df5('0xc')](function(_0x41941e){logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x2b7ed9,_0x5df5('0xd'));logger['debug'](_0x5df5('0xe'),_0x2b7ed9,_0x5df5('0xd'),JSON['stringify'](_0x41941e));if(_0x41941e['error']){if(_0x41941e[_0x5df5('0xf')][_0x5df5('0x10')]===0x1f4){logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);return _0x4d43a3(_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);}logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e['error'][_0x5df5('0x12')]);return _0x3743f3(_0x41941e['error'][_0x5df5('0x12')]);}else{logger[_0x5df5('0x13')](_0x5df5('0x11'),_0x2b7ed9,_0x5df5('0xd'));_0x3743f3(_0x41941e[_0x5df5('0x14')]['message']);}})[_0x5df5('0x15')](function(_0x457205){logger['error'](_0x5df5('0x11'),_0x2b7ed9,_0x457205);_0x4d43a3(_0x457205);});});}
\ No newline at end of file
+var _0xa46e=['request','then','request\x20sent','debug','stringify','error','code','message','JscriptySessionReport,\x20%s,\x20%s','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http'];(function(_0x2a419e,_0x1aef84){var _0x1b6f49=function(_0x500274){while(--_0x500274){_0x2a419e['push'](_0x2a419e['shift']());}};_0x1b6f49(++_0x1aef84);}(_0xa46e,0x8a));var _0xea46=function(_0x383dbb,_0x17d41b){_0x383dbb=_0x383dbb-0x0;var _0x6e8bde=_0xa46e[_0x383dbb];return _0x6e8bde;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var moment=require('moment');var BPromise=require(_0xea46('0x2'));var rs=require(_0xea46('0x3'));var fs=require('fs');var Redis=require(_0xea46('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xea46('0x5'));var logger=require('../../config/logger')(_0xea46('0x6'));var config=require('../../config/environment');var jayson=require(_0xea46('0x7'));var client=jayson['client'][_0xea46('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dc26f,_0x5f1cd1,_0x2d1b30){return new BPromise(function(_0x42771a,_0xe7d428){return client[_0xea46('0x9')](_0x3dc26f,_0x2d1b30)[_0xea46('0xa')](function(_0x4cf206){logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'));logger[_0xea46('0xc')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'),JSON[_0xea46('0xd')](_0x4cf206));if(_0x4cf206[_0xea46('0xe')]){if(_0x4cf206['error'][_0xea46('0xf')]===0x1f4){logger[_0xea46('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0xe7d428(_0x4cf206['error'][_0xea46('0x10')]);}logger['error'](_0xea46('0x11'),_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0x42771a(_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);}else{logger[_0xea46('0x12')](_0xea46('0x11'),_0x5f1cd1,_0xea46('0xb'));_0x42771a(_0x4cf206[_0xea46('0x13')]['message']);}})[_0xea46('0x14')](function(_0xbf225e){logger[_0xea46('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0x5f1cd1,_0xbf225e);_0xe7d428(_0xbf225e);});});}
\ No newline at end of file
index b513972..98e372a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x046b=['get','/:id','isAuthenticated','update','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller'];(function(_0x4fd40f,_0x3b037d){var _0x4e4901=function(_0x4b3a60){while(--_0x4b3a60){_0x4fd40f['push'](_0x4fd40f['shift']());}};_0x4e4901(++_0x3b037d);}(_0x046b,0x147));var _0xb046=function(_0x93be30,_0x1be6c3){_0x93be30=_0x93be30-0x0;var _0x4d6c2c=_0x046b[_0x93be30];return _0x4d6c2c;};'use strict';var multer=require('multer');var util=require(_0xb046('0x0'));var path=require(_0xb046('0x1'));var timeout=require(_0xb046('0x2'));var express=require(_0xb046('0x3'));var router=express[_0xb046('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb046('0x5'));var interaction=require(_0xb046('0x6'));var config=require(_0xb046('0x7'));var controller=require(_0xb046('0x8'));router[_0xb046('0x9')]('/',controller['index']);router['put'](_0xb046('0xa'),auth[_0xb046('0xb')](),controller[_0xb046('0xc')]);module[_0xb046('0xd')]=router;
\ No newline at end of file
+var _0xf9d5=['index','/:id','isAuthenticated','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller'];(function(_0x238325,_0x4bee96){var _0x39ebba=function(_0x3af23a){while(--_0x3af23a){_0x238325['push'](_0x238325['shift']());}};_0x39ebba(++_0x4bee96);}(_0xf9d5,0x122));var _0x5f9d=function(_0x422afa,_0x1ea712){_0x422afa=_0x422afa-0x0;var _0x14344c=_0xf9d5[_0x422afa];return _0x14344c;};'use strict';var multer=require('multer');var util=require(_0x5f9d('0x0'));var path=require(_0x5f9d('0x1'));var timeout=require('connect-timeout');var express=require(_0x5f9d('0x2'));var router=express[_0x5f9d('0x3')]();var fs_extra=require(_0x5f9d('0x4'));var auth=require(_0x5f9d('0x5'));var interaction=require(_0x5f9d('0x6'));var config=require(_0x5f9d('0x7'));var controller=require(_0x5f9d('0x8'));router['get']('/',controller[_0x5f9d('0x9')]);router['put'](_0x5f9d('0xa'),auth[_0x5f9d('0xb')](),controller['update']);module[_0x5f9d('0xc')]=router;
\ No newline at end of file
index 1c72a29..0fafd3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6602=['exports','TEXT','STRING','INTEGER','sequelize'];(function(_0x4cd0bb,_0x452e55){var _0x1602eb=function(_0x2f5fd8){while(--_0x2f5fd8){_0x4cd0bb['push'](_0x4cd0bb['shift']());}};_0x1602eb(++_0x452e55);}(_0x6602,0x180));var _0x2660=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0x6602[_0x4ff09b];return _0x3f5c2e;};'use strict';var Sequelize=require(_0x2660('0x0'));module[_0x2660('0x1')]={'license':{'type':Sequelize[_0x2660('0x2')]},'data1':{'type':Sequelize[_0x2660('0x3')]},'data2':{'type':Sequelize[_0x2660('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x2660('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa73c=['STRING','sequelize','TEXT'];(function(_0x2f175b,_0x4066c5){var _0x1548fa=function(_0x58b256){while(--_0x58b256){_0x2f175b['push'](_0x2f175b['shift']());}};_0x1548fa(++_0x4066c5);}(_0xa73c,0x17b));var _0xca73=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa73c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xca73('0x0'));module['exports']={'license':{'type':Sequelize[_0xca73('0x1')]},'data1':{'type':Sequelize[_0xca73('0x2')]},'data2':{'type':Sequelize[_0xca73('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 9955afc..f903c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','model','keys','License','rawAttributes','query','intersection','attributes','fields','merge','getLicense','catch','find','get','body','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x4e6e56,_0x57f1a1){var _0x266107=function(_0x2e614b){while(--_0x2e614b){_0x4e6e56['push'](_0x4e6e56['shift']());}};_0x266107(++_0x57f1a1);}(_0xabce,0x103));var _0xeabc=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xabce[_0x32d457];return _0x338386;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}var utilLicense=require(_0xeabc('0x18'));exports['index']=function(_0x2163e6,_0x38572d){var _0x2b568f={'raw':!![],'where':{'id':0x1}},_0x2f8633={};_0x2f8633[_0xeabc('0x2a')]=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x2f8633[_0xeabc('0x2e')]=_['keys'](_0x2163e6[_0xeabc('0x2e')]);_0x2f8633['filters']=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],_0x2f8633[_0xeabc('0x2e')]);_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],qs[_0xeabc('0x31')](_0x2163e6['query'][_0xeabc('0x31')]));_0x2b568f[_0xeabc('0x30')]=_0x2b568f[_0xeabc('0x30')]['length']?_0x2b568f[_0xeabc('0x30')]:_0x2f8633[_0xeabc('0x2a')];_0x2b568f=_[_0xeabc('0x32')]({},_0x2b568f,_0x2163e6['options']);return utilLicense[_0xeabc('0x33')](_0x2b568f)[_0xeabc('0x25')](respondWithResult(_0x38572d,null))[_0xeabc('0x34')](handleError(_0x38572d,null));};exports['update']=function(_0xf98c7c,_0x286203){if(_0xf98c7c['body']['id']){delete _0xf98c7c['body']['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x35')]({'where':{'id':_0xf98c7c['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x286203,null))[_0xeabc('0x25')](function(_0x3edee7){var _0x10434e=_0x3edee7[_0xeabc('0x36')]({'plain':!![]});return utilLicense['checkLicense'](_0x10434e,_0xf98c7c[_0xeabc('0x37')]['key']);})[_0xeabc('0x25')](function(_0x2bda29){if(!_0x2bda29[_0xeabc('0x38')]){return saveUpdates(_0xf98c7c['body'],null);}return _0x2bda29;})['then'](respondWithResult(_0x286203,null))[_0xeabc('0x34')](handleError(_0x286203,null));};
\ No newline at end of file
+var _0xc4aa=['zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','model','keys','License','query','filters','intersection','attributes','fields','length','merge','options','getLicense','catch','body','find','params','get','checkLicense','key','demo','eml-format','rimraf'];(function(_0x48961c,_0x280e9d){var _0x1d895d=function(_0x248ffa){while(--_0x248ffa){_0x48961c['push'](_0x48961c['shift']());}};_0x1d895d(++_0x280e9d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xc4aa[_0x32f7d7];return _0x133d09;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];function respondWithStatusCode(_0x24291d,_0x5e16aa){_0x5e16aa=_0x5e16aa||0xcc;return function(_0x21a79){if(_0x21a79){return _0x24291d[_0xac4a('0x17')](_0x5e16aa);}return _0x24291d[_0xac4a('0x18')](_0x5e16aa)[_0xac4a('0x19')]();};}function respondWithResult(_0x1b4313,_0x3b71c0){_0x3b71c0=_0x3b71c0||0xc8;return function(_0x34bc01){if(_0x34bc01){return _0x1b4313[_0xac4a('0x18')](_0x3b71c0)[_0xac4a('0x1a')](_0x34bc01);}};}function respondWithFilteredResult(_0x42c7fc,_0x11e101){return function(_0x26dbb8){if(_0x26dbb8){var _0x4a2119=typeof _0x11e101[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x11e101[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x3e88e3=_0x26dbb8[_0xac4a('0x1e')];var _0x28e304=_0x4a2119?0x0:_0x11e101[_0xac4a('0x1b')];var _0x546c5d=_0x4a2119?_0x26dbb8['count']:_0x11e101[_0xac4a('0x1b')]+_0x11e101[_0xac4a('0x1d')];var _0x39b691;if(_0x546c5d>=_0x3e88e3){_0x546c5d=_0x3e88e3;_0x39b691=0xc8;}else{_0x39b691=0xce;}_0x42c7fc['status'](_0x39b691);return _0x42c7fc[_0xac4a('0x1f')](_0xac4a('0x20'),_0x28e304+'-'+_0x546c5d+'/'+_0x3e88e3)[_0xac4a('0x1a')](_0x26dbb8);}return null;};}function patchUpdates(_0x3a3cdb){return function(_0x123694){try{jsonpatch[_0xac4a('0x21')](_0x123694,_0x3a3cdb,!![]);}catch(_0xe38996){return BPromise[_0xac4a('0x22')](_0xe38996);}return _0x123694['save']();};}function saveUpdates(_0x3d8f0a,_0x3204ad){return function(_0x599787){if(_0x599787){return _0x599787[_0xac4a('0x23')](_0x3d8f0a)[_0xac4a('0x24')](function(_0x3eacd3){return _0x3eacd3;});}return null;};}function removeEntity(_0x947d8e,_0x4d2d6c){return function(_0x1b7998){if(_0x1b7998){return _0x1b7998[_0xac4a('0x25')]()[_0xac4a('0x24')](function(){_0x947d8e[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x2b0dc2,_0x222507){return function(_0x36054a){if(!_0x36054a){_0x2b0dc2[_0xac4a('0x17')](0x194);}return _0x36054a;};}function handleError(_0x3bc318,_0x1d0539){_0x1d0539=_0x1d0539||0x1f4;return function(_0x215a31){logger[_0xac4a('0x26')](_0x215a31[_0xac4a('0x27')]);if(_0x215a31[_0xac4a('0x28')]){delete _0x215a31[_0xac4a('0x28')];}_0x3bc318['status'](_0x1d0539)[_0xac4a('0x29')](_0x215a31);};}var utilLicense=require(_0xac4a('0x15'));exports[_0xac4a('0x2a')]=function(_0x2772fe,_0x116700){var _0x4a5a9e={'raw':!![],'where':{'id':0x1}},_0x47f49c={};_0x47f49c[_0xac4a('0x2b')]=_[_0xac4a('0x2c')](db[_0xac4a('0x2d')]['rawAttributes']);_0x47f49c['query']=_[_0xac4a('0x2c')](_0x2772fe[_0xac4a('0x2e')]);_0x47f49c[_0xac4a('0x2f')]=_[_0xac4a('0x30')](_0x47f49c[_0xac4a('0x2b')],_0x47f49c['query']);_0x4a5a9e[_0xac4a('0x31')]=_['intersection'](_0x47f49c[_0xac4a('0x2b')],qs['fields'](_0x2772fe[_0xac4a('0x2e')][_0xac4a('0x32')]));_0x4a5a9e[_0xac4a('0x31')]=_0x4a5a9e[_0xac4a('0x31')][_0xac4a('0x33')]?_0x4a5a9e[_0xac4a('0x31')]:_0x47f49c[_0xac4a('0x2b')];_0x4a5a9e=_[_0xac4a('0x34')]({},_0x4a5a9e,_0x2772fe[_0xac4a('0x35')]);return utilLicense[_0xac4a('0x36')](_0x4a5a9e)[_0xac4a('0x24')](respondWithResult(_0x116700,null))[_0xac4a('0x37')](handleError(_0x116700,null));};exports[_0xac4a('0x23')]=function(_0x1a9d4e,_0x5634e2){if(_0x1a9d4e[_0xac4a('0x38')]['id']){delete _0x1a9d4e[_0xac4a('0x38')]['id'];}return db['License'][_0xac4a('0x39')]({'where':{'id':_0x1a9d4e[_0xac4a('0x3a')]['id']}})['then'](handleEntityNotFound(_0x5634e2,null))['then'](function(_0x11f0be){var _0x1ba096=_0x11f0be[_0xac4a('0x3b')]({'plain':!![]});return utilLicense[_0xac4a('0x3c')](_0x1ba096,_0x1a9d4e['body'][_0xac4a('0x3d')]);})[_0xac4a('0x24')](function(_0x4e7630){if(!_0x4e7630[_0xac4a('0x3e')]){return saveUpdates(_0x1a9d4e[_0xac4a('0x38')],null);}return _0x4e7630;})[_0xac4a('0x24')](respondWithResult(_0x5634e2,null))['catch'](handleError(_0x5634e2,null));};
\ No newline at end of file
index 259674a..16f3dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x293d=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./license.attributes','exports','License','license'];(function(_0x36c124,_0x2910f8){var _0x595bb5=function(_0x44f715){while(--_0x44f715){_0x36c124['push'](_0x36c124['shift']());}};_0x595bb5(++_0x2910f8);}(_0x293d,0x179));var _0xd293=function(_0x56f28e,_0x5198fd){_0x56f28e=_0x56f28e-0x0;var _0x3d2305=_0x293d[_0x56f28e];return _0x3d2305;};'use strict';var _=require(_0xd293('0x0'));var util=require(_0xd293('0x1'));var logger=require(_0xd293('0x2'))('api');var moment=require(_0xd293('0x3'));var BPromise=require(_0xd293('0x4'));var rp=require(_0xd293('0x5'));var fs=require('fs');var path=require(_0xd293('0x6'));var rimraf=require(_0xd293('0x7'));var config=require(_0xd293('0x8'));var attributes=require(_0xd293('0x9'));module[_0xd293('0xa')]=function(_0x14e28f,_0x6a9bc3){return _0x14e28f['define'](_0xd293('0xb'),attributes,{'tableName':_0xd293('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x107f=['rimraf','./license.attributes','exports','define','License','license','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x22e213,_0xe90d42){var _0x13244d=function(_0x1f30fc){while(--_0x1f30fc){_0x22e213['push'](_0x22e213['shift']());}};_0x13244d(++_0xe90d42);}(_0x107f,0x14b));var _0xf107=function(_0x34ded7,_0x5752df){_0x34ded7=_0x34ded7-0x0;var _0x39e7ce=_0x107f[_0x34ded7];return _0x39e7ce;};'use strict';var _=require(_0xf107('0x0'));var util=require(_0xf107('0x1'));var logger=require(_0xf107('0x2'))(_0xf107('0x3'));var moment=require(_0xf107('0x4'));var BPromise=require('bluebird');var rp=require(_0xf107('0x5'));var fs=require('fs');var path=require(_0xf107('0x6'));var rimraf=require(_0xf107('0x7'));var config=require('../../config/environment');var attributes=require(_0xf107('0x8'));module[_0xf107('0x9')]=function(_0x30d773,_0x5ed385){return _0x30d773[_0xf107('0xa')](_0xf107('0xb'),attributes,{'tableName':_0xf107('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 25d4afb..bb42024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x811e=['License,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x50d915,_0x4ae3b0){var _0x2d005a=function(_0x49f9fc){while(--_0x49f9fc){_0x50d915['push'](_0x50d915['shift']());}};_0x2d005a(++_0x4ae3b0);}(_0x811e,0x1a5));var _0xe811=function(_0x314c95,_0x1c544e){_0x314c95=_0x314c95-0x0;var _0x36ce33=_0x811e[_0x314c95];return _0x36ce33;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe811('0x0'));var BPromise=require(_0xe811('0x1'));var rs=require(_0xe811('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe811('0x3'))['db'];var utils=require(_0xe811('0x4'));var logger=require(_0xe811('0x5'))(_0xe811('0x6'));var config=require('../../config/environment');var jayson=require(_0xe811('0x7'));var client=jayson[_0xe811('0x8')][_0xe811('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x362003,_0x33e601,_0x1f159c){return new BPromise(function(_0x258761,_0x508c82){return client[_0xe811('0xa')](_0x362003,_0x1f159c)[_0xe811('0xb')](function(_0x4c560e){logger[_0xe811('0xc')](_0xe811('0xd'),_0x33e601,_0xe811('0xe'));logger[_0xe811('0xf')](_0xe811('0x10'),_0x33e601,_0xe811('0xe'),JSON[_0xe811('0x11')](_0x4c560e));if(_0x4c560e[_0xe811('0x12')]){if(_0x4c560e[_0xe811('0x12')][_0xe811('0x13')]===0x1f4){logger[_0xe811('0x12')](_0xe811('0xd'),_0x33e601,_0x4c560e['error']['message']);return _0x508c82(_0x4c560e[_0xe811('0x12')][_0xe811('0x14')]);}logger[_0xe811('0x12')](_0xe811('0xd'),_0x33e601,_0x4c560e[_0xe811('0x12')][_0xe811('0x14')]);return _0x258761(_0x4c560e[_0xe811('0x12')][_0xe811('0x14')]);}else{logger[_0xe811('0xc')](_0xe811('0xd'),_0x33e601,'request\x20sent');_0x258761(_0x4c560e[_0xe811('0x15')]['message']);}})[_0xe811('0x16')](function(_0x41f63d){logger['error'](_0xe811('0xd'),_0x33e601,_0x41f63d);_0x508c82(_0x41f63d);});});}
\ No newline at end of file
+var _0x5a84=['error','code','message','License,\x20%s,\x20%s','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x5a84,0x17f));var _0x45a8=function(_0x5b8c78,_0x31805f){_0x5b8c78=_0x5b8c78-0x0;var _0x48826e=_0x5a84[_0x5b8c78];return _0x48826e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x45a8('0x0'));var BPromise=require(_0x45a8('0x1'));var rs=require(_0x45a8('0x2'));var fs=require('fs');var Redis=require(_0x45a8('0x3'));var db=require(_0x45a8('0x4'))['db'];var utils=require(_0x45a8('0x5'));var logger=require(_0x45a8('0x6'))('rpc');var config=require(_0x45a8('0x7'));var jayson=require(_0x45a8('0x8'));var client=jayson[_0x45a8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4de20d,_0x17df03,_0x16263c){return new BPromise(function(_0x4cc5d4,_0x342c5b){return client[_0x45a8('0xa')](_0x4de20d,_0x16263c)[_0x45a8('0xb')](function(_0x12fb59){logger[_0x45a8('0xc')]('License,\x20%s,\x20%s',_0x17df03,_0x45a8('0xd'));logger[_0x45a8('0xe')](_0x45a8('0xf'),_0x17df03,'request\x20sent',JSON['stringify'](_0x12fb59));if(_0x12fb59[_0x45a8('0x10')]){if(_0x12fb59[_0x45a8('0x10')][_0x45a8('0x11')]===0x1f4){logger[_0x45a8('0x10')]('License,\x20%s,\x20%s',_0x17df03,_0x12fb59[_0x45a8('0x10')][_0x45a8('0x12')]);return _0x342c5b(_0x12fb59[_0x45a8('0x10')][_0x45a8('0x12')]);}logger[_0x45a8('0x10')](_0x45a8('0x13'),_0x17df03,_0x12fb59['error'][_0x45a8('0x12')]);return _0x4cc5d4(_0x12fb59[_0x45a8('0x10')][_0x45a8('0x12')]);}else{logger[_0x45a8('0xc')]('License,\x20%s,\x20%s',_0x17df03,_0x45a8('0xd'));_0x4cc5d4(_0x12fb59['result'][_0x45a8('0x12')]);}})[_0x45a8('0x14')](function(_0x1460aa){logger[_0x45a8('0x10')]('License,\x20%s,\x20%s',_0x17df03,_0x1460aa);_0x342c5b(_0x1460aa);});});}
\ No newline at end of file
index 2307949..3354de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb179=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','index','isAuthenticated','describe','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','addAnswer','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','put','/:id','update','delete','removeImap','removeSmtp','destroy','removeAgents','exports'];(function(_0x35000d,_0xc8945c){var _0x2b856f=function(_0x3d8eb2){while(--_0x3d8eb2){_0x35000d['push'](_0x35000d['shift']());}};_0x2b856f(++_0xc8945c);}(_0xb179,0xc4));var _0x9b17=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xb179[_0x432682];return _0x463d05;};'use strict';var multer=require('multer');var util=require(_0x9b17('0x0'));var path=require(_0x9b17('0x1'));var timeout=require(_0x9b17('0x2'));var express=require(_0x9b17('0x3'));var router=express[_0x9b17('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9b17('0x5'));var interaction=require(_0x9b17('0x6'));var config=require(_0x9b17('0x7'));var controller=require(_0x9b17('0x8'));router[_0x9b17('0x9')]('/',auth['isAuthenticated'](),controller[_0x9b17('0xa')]);router[_0x9b17('0x9')]('/describe',auth[_0x9b17('0xb')](),controller[_0x9b17('0xc')]);router[_0x9b17('0x9')]('/:id',auth[_0x9b17('0xb')](),controller['show']);router['get'](_0x9b17('0xd'),auth[_0x9b17('0xb')](),controller[_0x9b17('0xe')]);router[_0x9b17('0x9')](_0x9b17('0xf'),auth[_0x9b17('0xb')](),controller['getAnswers']);router['get'](_0x9b17('0x10'),auth[_0x9b17('0xb')](),controller['getImap']);router[_0x9b17('0x9')](_0x9b17('0x11'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x12')]);router['get'](_0x9b17('0x13'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x14')]);router['get'](_0x9b17('0x15'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x16')]);router['get'](_0x9b17('0x17'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x18')]);router[_0x9b17('0x9')](_0x9b17('0x19'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x1a')]);router[_0x9b17('0x9')](_0x9b17('0x1b'),auth['isAuthenticated'](),controller[_0x9b17('0x1c')]);router[_0x9b17('0x1d')](_0x9b17('0xd'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x1e')]);router[_0x9b17('0x1d')](_0x9b17('0xf'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x1f')]);router['post']('/',auth[_0x9b17('0xb')](),controller[_0x9b17('0x20')]);router['post'](_0x9b17('0x10'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x21')]);router[_0x9b17('0x1d')](_0x9b17('0x11'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x22')]);router['post'](_0x9b17('0x13'),auth['isAuthenticated'](),controller[_0x9b17('0x23')]);router['post'](_0x9b17('0x15'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x24')]);router[_0x9b17('0x1d')](_0x9b17('0x25'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x26')]);router[_0x9b17('0x1d')](_0x9b17('0x1b'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x27')]);router[_0x9b17('0x28')](_0x9b17('0x29'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x2a')]);router[_0x9b17('0x2b')](_0x9b17('0xd'),auth[_0x9b17('0xb')](),controller['removeDispositions']);router[_0x9b17('0x2b')](_0x9b17('0xf'),auth[_0x9b17('0xb')](),controller['removeAnswers']);router[_0x9b17('0x2b')](_0x9b17('0x10'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x2c')]);router['delete']('/:id/out_servers',auth['isAuthenticated'](),controller[_0x9b17('0x2d')]);router['delete'](_0x9b17('0x29'),auth[_0x9b17('0xb')](),controller[_0x9b17('0x2e')]);router[_0x9b17('0x2b')]('/:id/users',auth[_0x9b17('0xb')](),controller[_0x9b17('0x2f')]);module[_0x9b17('0x30')]=router;
\ No newline at end of file
+var _0xa4db=['getAgents','post','addDisposition','create','addSmtp','addApplications','/:id/send','put','removeDispositions','delete','removeAnswers','removeImap','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/verify','/:id/users'];(function(_0x264eb3,_0x127326){var _0x250c97=function(_0x5be9ee){while(--_0x5be9ee){_0x264eb3['push'](_0x264eb3['shift']());}};_0x250c97(++_0x127326);}(_0xa4db,0xbf));var _0xba4d=function(_0xa8361,_0x581944){_0xa8361=_0xa8361-0x0;var _0x307baf=_0xa4db[_0xa8361];return _0x307baf;};'use strict';var multer=require(_0xba4d('0x0'));var util=require(_0xba4d('0x1'));var path=require(_0xba4d('0x2'));var timeout=require(_0xba4d('0x3'));var express=require(_0xba4d('0x4'));var router=express['Router']();var fs_extra=require(_0xba4d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xba4d('0x6'));var config=require(_0xba4d('0x7'));var controller=require(_0xba4d('0x8'));router['get']('/',auth[_0xba4d('0x9')](),controller[_0xba4d('0xa')]);router[_0xba4d('0xb')](_0xba4d('0xc'),auth[_0xba4d('0x9')](),controller[_0xba4d('0xd')]);router[_0xba4d('0xb')](_0xba4d('0xe'),auth[_0xba4d('0x9')](),controller[_0xba4d('0xf')]);router['get'](_0xba4d('0x10'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x11')]);router[_0xba4d('0xb')](_0xba4d('0x12'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x13')]);router[_0xba4d('0xb')](_0xba4d('0x14'),auth[_0xba4d('0x9')](),controller['getImap']);router['get'](_0xba4d('0x15'),auth[_0xba4d('0x9')](),controller['getSmtp']);router[_0xba4d('0xb')](_0xba4d('0x16'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x17')]);router['get'](_0xba4d('0x18'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x19')]);router[_0xba4d('0xb')](_0xba4d('0x1a'),auth[_0xba4d('0x9')](),controller['getMessages']);router[_0xba4d('0xb')](_0xba4d('0x1b'),auth[_0xba4d('0x9')](),controller['verifySmtp']);router[_0xba4d('0xb')](_0xba4d('0x1c'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x1d')]);router[_0xba4d('0x1e')](_0xba4d('0x10'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x1f')]);router[_0xba4d('0x1e')](_0xba4d('0x12'),auth[_0xba4d('0x9')](),controller['addAnswer']);router[_0xba4d('0x1e')]('/',auth[_0xba4d('0x9')](),controller[_0xba4d('0x20')]);router[_0xba4d('0x1e')](_0xba4d('0x14'),auth[_0xba4d('0x9')](),controller['addImap']);router[_0xba4d('0x1e')](_0xba4d('0x15'),auth['isAuthenticated'](),controller[_0xba4d('0x21')]);router['post'](_0xba4d('0x16'),auth[_0xba4d('0x9')](),controller['addInteraction']);router[_0xba4d('0x1e')](_0xba4d('0x18'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x22')]);router['post'](_0xba4d('0x23'),auth[_0xba4d('0x9')](),controller['send']);router['post'](_0xba4d('0x1c'),auth[_0xba4d('0x9')](),controller['addAgents']);router[_0xba4d('0x24')](_0xba4d('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xba4d('0x10'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x25')]);router[_0xba4d('0x26')](_0xba4d('0x12'),auth['isAuthenticated'](),controller[_0xba4d('0x27')]);router[_0xba4d('0x26')](_0xba4d('0x14'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x28')]);router[_0xba4d('0x26')]('/:id/out_servers',auth[_0xba4d('0x9')](),controller['removeSmtp']);router[_0xba4d('0x26')](_0xba4d('0xe'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x29')]);router['delete'](_0xba4d('0x1c'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x2a')]);module[_0xba4d('0x2b')]=router;
\ No newline at end of file
index 91d04ff..02a15a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7c=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue'];(function(_0x42e91c,_0x539c58){var _0x4861ca=function(_0x23c439){while(--_0x23c439){_0x42e91c['push'](_0x42e91c['shift']());}};_0x4861ca(++_0x539c58);}(_0xaa7c,0x1ec));var _0xcaa7=function(_0x8c721d,_0x2598f6){_0x8c721d=_0x8c721d-0x0;var _0x20c15a=_0xaa7c[_0x8c721d];return _0x20c15a;};'use strict';var Sequelize=require(_0xcaa7('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xcaa7('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xcaa7('0x3')]},'markAsUnread':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xcaa7('0x1')],'allowNull':![],'defaultValue':_0xcaa7('0x4')},'fontSize':{'type':Sequelize[_0xcaa7('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xcaa7('0x3')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xcaa7('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcaa7('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xcaa7('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xcaa7('0x6')},'mandatoryDisposition':{'type':Sequelize[_0xcaa7('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2e037c){if(!_0x2e037c)this[_0xcaa7('0x7')](_0xcaa7('0x8'),null);this[_0xcaa7('0x7')](_0xcaa7('0x9'),_0x2e037c);}}};
\ No newline at end of file
+var _0xd58c=['Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','exports','STRING','BOOLEAN','TEXT'];(function(_0x1a13b1,_0x4d1d25){var _0x395e05=function(_0x209692){while(--_0x209692){_0x1a13b1['push'](_0x1a13b1['shift']());}};_0x395e05(++_0x4d1d25);}(_0xd58c,0xb6));var _0xcd58=function(_0x244618,_0x46e001){_0x244618=_0x244618-0x0;var _0x16c64c=_0xd58c[_0x244618];return _0x16c64c;};'use strict';var Sequelize=require(_0xcd58('0x0'));module[_0xcd58('0x1')]={'description':{'type':Sequelize[_0xcd58('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xcd58('0x4')]},'markAsUnread':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xcd58('0x2')],'allowNull':![],'defaultValue':_0xcd58('0x5')},'fontSize':{'type':Sequelize[_0xcd58('0x6')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xcd58('0x7');}},'notificationSound':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xcd58('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcd58('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xcd58('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xcd58('0x9'),'set':function(_0x440776){if(!_0x440776)this[_0xcd58('0xa')]('mandatoryDispositionPauseId',null);this[_0xcd58('0xa')]('mandatoryDisposition',_0x440776);}}};
\ No newline at end of file
index 5ad8e9a..b0afe90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8be=['../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./mailAccount.socket','jayson/promise','client','http','request','then','info','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','save','UserProfileResource','destroy','name','index','MailServerIn','Imap','MailServerOut','mandatoryDispositionPause','MailAccount','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','map','VIRTUAL','merge','options','include','findAll','rows','show','params','Smtp','Pause','length','includeAll','body','find','update','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','rawAttributes','where','removeDispositions','CannedAnswer','removeAnswers','ids','isNil','active','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','cservice','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','getInteractions','CmContact','internal','Tag','Tags','tag','addApplications','transaction','MailApplication','bulkCreate','findAndCountAll','priority','getApplications','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','true','send','List','Contacts','updatedAt','DESC','from','%s\x20<%s>','email','attachments','join','root','server/files/attachments','basename','secure','auth','SendMail','sendMail','List\x20not\x20found','ListId','messageId','out','Interaction','Messages','verifySmtp','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','spread','emit','removeAgents','isArray','getAgents','User','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','querystring','papaparse','html-to-text','juice','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x55aeae,_0x3c404e){var _0x537128=function(_0x351f88){while(--_0x351f88){_0x55aeae['push'](_0x55aeae['shift']());}};_0x537128(++_0x3c404e);}(_0xb8be,0xa9));var _0xeb8b=function(_0x1a8f86,_0x5ed9c4){_0x1a8f86=_0x1a8f86-0x0;var _0x20d876=_0xb8be[_0x1a8f86];return _0x20d876;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeb8b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xeb8b('0x1'));var rp=require(_0xeb8b('0x2'));var moment=require(_0xeb8b('0x3'));var BPromise=require(_0xeb8b('0x4'));var Mustache=require(_0xeb8b('0x5'));var util=require(_0xeb8b('0x6'));var path=require(_0xeb8b('0x7'));var sox=require(_0xeb8b('0x8'));var csv=require('to-csv');var ejs=require(_0xeb8b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeb8b('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xeb8b('0xb'));var Papa=require(_0xeb8b('0xc'));var htmlToText=require(_0xeb8b('0xd'));var juice=require(_0xeb8b('0xe'));var Redis=require('ioredis');var authService=require(_0xeb8b('0xf'));var qs=require(_0xeb8b('0x10'));var as=require(_0xeb8b('0x11'));var hardwareService=require(_0xeb8b('0x12'));var logger=require(_0xeb8b('0x13'))('api');var utils=require(_0xeb8b('0x14'));var config=require(_0xeb8b('0x15'));var licenseUtil=require(_0xeb8b('0x16'));var db=require(_0xeb8b('0x17'))['db'];config['redis']=_[_0xeb8b('0x18')](config[_0xeb8b('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xeb8b('0x1a'))(new Redis(config[_0xeb8b('0x19')]));require(_0xeb8b('0x1b'))['register'](socket);var jayson=require(_0xeb8b('0x1c'));var client=jayson[_0xeb8b('0x1d')][_0xeb8b('0x1e')]({'port':0x232b});function respondWithRpcPromise(_0x510d7b,_0x303430,_0x58c86b,_0x1a6b8b){return new BPromise(function(_0x3f032e,_0x46daf2){var _0xab7234=_0x1a6b8b||client;return _0xab7234[_0xeb8b('0x1f')](_0x510d7b,_0x58c86b)[_0xeb8b('0x20')](function(_0x466b74){logger[_0xeb8b('0x21')]('MailAccount,\x20%s,\x20%s',_0x303430,'request\x20sent');logger[_0xeb8b('0x22')](_0xeb8b('0x23'),_0x303430,_0xeb8b('0x24'),JSON[_0xeb8b('0x25')](_0x466b74));if(_0x466b74[_0xeb8b('0x26')]){if(_0x466b74[_0xeb8b('0x26')][_0xeb8b('0x27')]===0x1f4){logger['error'](_0xeb8b('0x28'),_0x303430,_0x466b74[_0xeb8b('0x26')][_0xeb8b('0x29')]);return _0x46daf2(_0x466b74[_0xeb8b('0x26')]['message']);}logger[_0xeb8b('0x26')]('MailAccount,\x20%s,\x20%s',_0x303430,_0x466b74[_0xeb8b('0x26')][_0xeb8b('0x29')]);return _0x3f032e(_0x466b74[_0xeb8b('0x26')][_0xeb8b('0x29')]);}else{logger[_0xeb8b('0x21')]('MailAccount,\x20%s,\x20%s',_0x303430,_0xeb8b('0x24'));_0x3f032e(_0x466b74[_0xeb8b('0x2a')][_0xeb8b('0x29')]);}})[_0xeb8b('0x2b')](function(_0x28ec93){logger[_0xeb8b('0x26')]('MailAccount,\x20%s,\x20%s',_0x303430,_0x28ec93);_0x46daf2(_0x28ec93);});});}function respondWithStatusCode(_0xf950c6,_0x39add5){_0x39add5=_0x39add5||0xcc;return function(_0x2b13d1){if(_0x2b13d1){return _0xf950c6[_0xeb8b('0x2c')](_0x39add5);}return _0xf950c6['status'](_0x39add5)[_0xeb8b('0x2d')]();};}function respondWithResult(_0x95a47c,_0x14fe0e){_0x14fe0e=_0x14fe0e||0xc8;return function(_0x23f659){if(_0x23f659){return _0x95a47c[_0xeb8b('0x2e')](_0x14fe0e)[_0xeb8b('0x2f')](_0x23f659);}};}function respondWithFilteredResult(_0x3ea3e7,_0x487fbe){return function(_0x3bc764){if(_0x3bc764){var _0x3fd179=typeof _0x487fbe[_0xeb8b('0x30')]===_0xeb8b('0x31')&&typeof _0x487fbe[_0xeb8b('0x32')]===_0xeb8b('0x31');var _0x4f72f0=_0x3bc764[_0xeb8b('0x33')];var _0x23ea97=_0x3fd179?0x0:_0x487fbe[_0xeb8b('0x30')];var _0x482bf5=_0x3fd179?_0x3bc764[_0xeb8b('0x33')]:_0x487fbe[_0xeb8b('0x30')]+_0x487fbe['limit'];var _0x459104;if(_0x482bf5>=_0x4f72f0){_0x482bf5=_0x4f72f0;_0x459104=0xc8;}else{_0x459104=0xce;}_0x3ea3e7['status'](_0x459104);return _0x3ea3e7['set']('Content-Range',_0x23ea97+'-'+_0x482bf5+'/'+_0x4f72f0)[_0xeb8b('0x2f')](_0x3bc764);}return null;};}function patchUpdates(_0xda373b){return function(_0x3bb1f7){try{jsonpatch['apply'](_0x3bb1f7,_0xda373b,!![]);}catch(_0x39028e){return BPromise['reject'](_0x39028e);}return _0x3bb1f7[_0xeb8b('0x34')]();};}function saveUpdates(_0x2a242a,_0x50f3ce){return function(_0x45d5e9){if(_0x45d5e9){return _0x45d5e9['update'](_0x2a242a)['then'](function(_0x183262){return _0x183262;});}return null;};}function removeEntity(_0x918118,_0x20d169){return function(_0x394790){if(_0x394790){return _0x394790['destroy']()['then'](function(){var _0x7dec06=_0x394790['get']({'plain':!![]});var _0xc367b3='MailAccounts';return db[_0xeb8b('0x35')][_0xeb8b('0x36')]({'where':{'type':_0xc367b3,'resourceId':_0x7dec06['id']}})['then'](function(){return _0x394790;});})[_0xeb8b('0x20')](function(){_0x918118[_0xeb8b('0x2e')](0xcc)[_0xeb8b('0x2d')]();});}};}function handleEntityNotFound(_0x403751,_0x1e49e4){return function(_0x4f84ff){if(!_0x4f84ff){_0x403751[_0xeb8b('0x2c')](0x194);}return _0x4f84ff;};}function handleError(_0xeb2bf2,_0x3966f8){_0x3966f8=_0x3966f8||0x1f4;return function(_0x910169){logger[_0xeb8b('0x26')](_0x910169['stack']);if(_0x910169['name']){delete _0x910169[_0xeb8b('0x37')];}_0xeb2bf2['status'](_0x3966f8)['send'](_0x910169);};}exports[_0xeb8b('0x38')]=function(_0x2216df,_0x5e7c61){var _0x4371cd={'include':[{'model':db[_0xeb8b('0x39')],'as':_0xeb8b('0x3a')},{'model':db[_0xeb8b('0x3b')],'as':'Smtp'},{'model':db['Pause'],'as':_0xeb8b('0x3c')}]},_0x5bf02c={},_0x53066b={'count':0x0,'rows':[]};var _0x2957ad=_['map'](db[_0xeb8b('0x3d')]['rawAttributes'],function(_0x2f4133){return{'name':_0x2f4133[_0xeb8b('0x3e')],'type':_0x2f4133[_0xeb8b('0x3f')][_0xeb8b('0x40')]};});_0x5bf02c[_0xeb8b('0x41')]=_['map'](_0x2957ad,_0xeb8b('0x37'));_0x5bf02c['query']=_[_0xeb8b('0x42')](_0x2216df[_0xeb8b('0x43')]);_0x5bf02c[_0xeb8b('0x44')]=_[_0xeb8b('0x45')](_0x5bf02c[_0xeb8b('0x41')],_0x5bf02c[_0xeb8b('0x43')]);_0x4371cd[_0xeb8b('0x46')]=_['intersection'](_0x5bf02c[_0xeb8b('0x41')],qs[_0xeb8b('0x47')](_0x2216df[_0xeb8b('0x43')][_0xeb8b('0x47')]));_0x4371cd[_0xeb8b('0x46')]=_0x4371cd[_0xeb8b('0x46')]['length']?_0x4371cd[_0xeb8b('0x46')]:_0x5bf02c[_0xeb8b('0x41')];if(!_0x2216df[_0xeb8b('0x43')][_0xeb8b('0x48')](_0xeb8b('0x49'))){_0x4371cd[_0xeb8b('0x32')]=qs[_0xeb8b('0x32')](_0x2216df[_0xeb8b('0x43')][_0xeb8b('0x32')]);_0x4371cd[_0xeb8b('0x30')]=qs[_0xeb8b('0x30')](_0x2216df[_0xeb8b('0x43')]['offset']);}_0x4371cd[_0xeb8b('0x4a')]=qs[_0xeb8b('0x4b')](_0x2216df[_0xeb8b('0x43')][_0xeb8b('0x4b')]);_0x4371cd['where']=qs[_0xeb8b('0x44')](_[_0xeb8b('0x4c')](_0x2216df[_0xeb8b('0x43')],_0x5bf02c[_0xeb8b('0x44')]),_0x2957ad);if(_0x2216df[_0xeb8b('0x43')][_0xeb8b('0x4d')]){_0x4371cd['where']=_['merge'](_0x4371cd['where'],{'$or':_[_0xeb8b('0x4e')](_0x2957ad,function(_0x5f1433){if(_0x5f1433['type']!==_0xeb8b('0x4f')){var _0x33c6aa={};_0x33c6aa[_0x5f1433[_0xeb8b('0x37')]]={'$like':'%'+_0x2216df[_0xeb8b('0x43')][_0xeb8b('0x4d')]+'%'};return _0x33c6aa;}})});}_0x4371cd=_[_0xeb8b('0x50')]({},_0x4371cd,_0x2216df[_0xeb8b('0x51')]);var _0x3f0c6e={'where':_0x4371cd['where']};return db[_0xeb8b('0x3d')][_0xeb8b('0x33')](_0x3f0c6e)[_0xeb8b('0x20')](function(_0x2d9388){_0x53066b[_0xeb8b('0x33')]=_0x2d9388;if(_0x2216df[_0xeb8b('0x43')]['includeAll']){_0x4371cd[_0xeb8b('0x52')]=[{'all':!![]}];}return db[_0xeb8b('0x3d')][_0xeb8b('0x53')](_0x4371cd);})['then'](function(_0x2b5179){_0x53066b[_0xeb8b('0x54')]=_0x2b5179;return _0x53066b;})['then'](respondWithFilteredResult(_0x5e7c61,_0x4371cd))['catch'](handleError(_0x5e7c61,null));};exports[_0xeb8b('0x55')]=function(_0x3d87e8,_0xb0c44a){var _0x21f7de={'raw':![],'where':{'id':_0x3d87e8[_0xeb8b('0x56')]['id']},'include':[{'model':db[_0xeb8b('0x39')],'as':_0xeb8b('0x3a')},{'model':db[_0xeb8b('0x3b')],'as':_0xeb8b('0x57')},{'model':db[_0xeb8b('0x58')],'as':'mandatoryDispositionPause'}]},_0x59c767={};_0x59c767[_0xeb8b('0x41')]=_[_0xeb8b('0x42')](db[_0xeb8b('0x3d')]['rawAttributes']);_0x59c767[_0xeb8b('0x43')]=_[_0xeb8b('0x42')](_0x3d87e8[_0xeb8b('0x43')]);_0x59c767[_0xeb8b('0x44')]=_[_0xeb8b('0x45')](_0x59c767[_0xeb8b('0x41')],_0x59c767['query']);_0x21f7de[_0xeb8b('0x46')]=_[_0xeb8b('0x45')](_0x59c767[_0xeb8b('0x41')],qs[_0xeb8b('0x47')](_0x3d87e8[_0xeb8b('0x43')]['fields']));_0x21f7de[_0xeb8b('0x46')]=_0x21f7de[_0xeb8b('0x46')][_0xeb8b('0x59')]?_0x21f7de[_0xeb8b('0x46')]:_0x59c767[_0xeb8b('0x41')];if(_0x3d87e8[_0xeb8b('0x43')][_0xeb8b('0x5a')]){_0x21f7de[_0xeb8b('0x52')]=[{'all':!![]}];}_0x21f7de=_[_0xeb8b('0x50')]({},_0x21f7de,_0x3d87e8['options']);return db[_0xeb8b('0x3d')]['find'](_0x21f7de)[_0xeb8b('0x20')](handleEntityNotFound(_0xb0c44a,null))[_0xeb8b('0x20')](respondWithResult(_0xb0c44a,null))[_0xeb8b('0x2b')](handleError(_0xb0c44a,null));};exports['update']=function(_0x34ed64,_0x1b3f4f){if(_0x34ed64[_0xeb8b('0x5b')]['id']){delete _0x34ed64['body']['id'];}return db[_0xeb8b('0x3d')][_0xeb8b('0x5c')]({'where':{'id':_0x34ed64[_0xeb8b('0x56')]['id']},'include':[{'model':db[_0xeb8b('0x39')],'as':_0xeb8b('0x3a')},{'model':db['MailServerOut'],'as':_0xeb8b('0x57')},{'model':db[_0xeb8b('0x58')],'as':_0xeb8b('0x3c')}]})[_0xeb8b('0x20')](handleEntityNotFound(_0x1b3f4f,null))[_0xeb8b('0x20')](saveUpdates(_0x34ed64[_0xeb8b('0x5b')],null))[_0xeb8b('0x20')](function(_0x4ee3b3){if(_0x4ee3b3&&_0x34ed64[_0xeb8b('0x5b')][_0xeb8b('0x3a')]){return db[_0xeb8b('0x39')][_0xeb8b('0x5d')](_0x34ed64['body'][_0xeb8b('0x3a')],{'where':{'MailAccountId':_0x4ee3b3['id']}})[_0xeb8b('0x20')](function(){return _0x4ee3b3;});}return _0x4ee3b3;})['then'](function(_0x3955c4){if(_0x3955c4&&_0x34ed64['body'][_0xeb8b('0x57')]){return db[_0xeb8b('0x3b')][_0xeb8b('0x5d')](_0x34ed64['body'][_0xeb8b('0x57')],{'where':{'MailAccountId':_0x3955c4['id']}})[_0xeb8b('0x20')](function(){return _0x3955c4;});}return _0x3955c4;})[_0xeb8b('0x20')](respondWithResult(_0x1b3f4f,null))[_0xeb8b('0x2b')](handleError(_0x1b3f4f,null));};exports['describe']=function(_0x154ffe,_0x3072ce){return db[_0xeb8b('0x3d')][_0xeb8b('0x5e')]()[_0xeb8b('0x20')](respondWithResult(_0x3072ce,null))['catch'](handleError(_0x3072ce,null));};exports[_0xeb8b('0x5f')]=function(_0x171bcd,_0x6e9f47,_0xdea08c){if(_0x171bcd['body']['id']){delete _0x171bcd[_0xeb8b('0x5b')]['id'];}return db[_0xeb8b('0x3d')]['find']({'where':{'id':_0x171bcd[_0xeb8b('0x56')]['id']}})['then'](handleEntityNotFound(_0x6e9f47,null))[_0xeb8b('0x20')](function(_0x322f81){if(_0x322f81){_0x171bcd[_0xeb8b('0x5b')][_0xeb8b('0x60')]=_0x322f81['id'];return db[_0xeb8b('0x61')][_0xeb8b('0x62')](_0x171bcd['body']);}})[_0xeb8b('0x20')](respondWithResult(_0x6e9f47,null))[_0xeb8b('0x2b')](handleError(_0x6e9f47,null));};exports[_0xeb8b('0x63')]=function(_0x443ba9,_0x19e6da,_0x13458d){var _0x350446={'raw':![],'where':{}};var _0x340b7e={};var _0x1ea9e0={'count':0x0,'rows':[]};return db[_0xeb8b('0x3d')][_0xeb8b('0x64')]({'where':{'id':_0x443ba9[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x19e6da,null))[_0xeb8b('0x20')](function(_0x5cc556){if(_0x5cc556){_0x340b7e[_0xeb8b('0x41')]=_[_0xeb8b('0x42')](db['Disposition'][_0xeb8b('0x65')]);_0x340b7e[_0xeb8b('0x43')]=_['keys'](_0x443ba9[_0xeb8b('0x43')]);_0x340b7e[_0xeb8b('0x44')]=_[_0xeb8b('0x45')](_0x340b7e['model'],_0x340b7e[_0xeb8b('0x43')]);_0x350446[_0xeb8b('0x46')]=_['intersection'](_0x340b7e['model'],qs[_0xeb8b('0x47')](_0x443ba9[_0xeb8b('0x43')]['fields']));_0x350446[_0xeb8b('0x46')]=_0x350446[_0xeb8b('0x46')]['length']?_0x350446[_0xeb8b('0x46')]:_0x340b7e[_0xeb8b('0x41')];if(!_0x443ba9[_0xeb8b('0x43')]['hasOwnProperty'](_0xeb8b('0x49'))){_0x350446[_0xeb8b('0x32')]=qs[_0xeb8b('0x32')](_0x443ba9[_0xeb8b('0x43')][_0xeb8b('0x32')]);_0x350446[_0xeb8b('0x30')]=qs['offset'](_0x443ba9[_0xeb8b('0x43')][_0xeb8b('0x30')]);}_0x350446['order']=qs['sort'](_0x443ba9[_0xeb8b('0x43')]['sort']);_0x350446['where']=qs[_0xeb8b('0x44')](_[_0xeb8b('0x4c')](_0x443ba9['query'],_0x340b7e[_0xeb8b('0x44')]));_0x350446['where']['MailAccountId']=_0x5cc556['id'];if(_0x443ba9[_0xeb8b('0x43')][_0xeb8b('0x4d')]){_0x350446[_0xeb8b('0x66')]=_[_0xeb8b('0x50')](_0x350446[_0xeb8b('0x66')],{'$or':_['map'](_0x350446[_0xeb8b('0x46')],function(_0x425fb5){var _0x511900={};_0x511900[_0x425fb5]={'$like':'%'+_0x443ba9['query'][_0xeb8b('0x4d')]+'%'};return _0x511900;})});}_0x350446=_[_0xeb8b('0x50')]({},_0x350446,_0x443ba9[_0xeb8b('0x51')]);return db[_0xeb8b('0x61')][_0xeb8b('0x33')]({'where':_0x350446['where']})[_0xeb8b('0x20')](function(_0x3357c9){_0x1ea9e0[_0xeb8b('0x33')]=_0x3357c9;if(_0x443ba9[_0xeb8b('0x43')][_0xeb8b('0x5a')]){_0x350446[_0xeb8b('0x52')]=[{'all':!![]}];}return db[_0xeb8b('0x61')][_0xeb8b('0x53')](_0x350446);})[_0xeb8b('0x20')](function(_0x416412){_0x1ea9e0[_0xeb8b('0x54')]=_0x416412;return _0x1ea9e0;});}})[_0xeb8b('0x20')](respondWithFilteredResult(_0x19e6da,_0x350446))[_0xeb8b('0x2b')](handleError(_0x19e6da,null));};exports['removeDispositions']=function(_0x1784a3,_0x1f7524,_0x1a0eb0){return db[_0xeb8b('0x3d')][_0xeb8b('0x5c')]({'where':{'id':_0x1784a3[_0xeb8b('0x56')]['id']}})['then'](handleEntityNotFound(_0x1f7524,null))[_0xeb8b('0x20')](function(_0x27fd8a){if(_0x27fd8a){return _0x27fd8a[_0xeb8b('0x67')](_0x1784a3['query']['ids']);}})['then'](respondWithStatusCode(_0x1f7524,null))[_0xeb8b('0x2b')](handleError(_0x1f7524,null));};exports['addAnswer']=function(_0xd45edf,_0x27e91f,_0x35ea77){if(_0xd45edf[_0xeb8b('0x5b')]['id']){delete _0xd45edf[_0xeb8b('0x5b')]['id'];}return db[_0xeb8b('0x3d')][_0xeb8b('0x5c')]({'where':{'id':_0xd45edf[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x27e91f,null))[_0xeb8b('0x20')](function(_0x2d7be2){if(_0x2d7be2){_0xd45edf['body'][_0xeb8b('0x60')]=_0x2d7be2['id'];return db[_0xeb8b('0x68')]['create'](_0xd45edf['body']);}})[_0xeb8b('0x20')](respondWithResult(_0x27e91f,null))[_0xeb8b('0x2b')](handleError(_0x27e91f,null));};exports['getAnswers']=function(_0x3eae2b,_0x39aa3f,_0x36db35){var _0x283305={'raw':![],'where':{}};var _0x38e875={};var _0x256302={'count':0x0,'rows':[]};return db['MailAccount'][_0xeb8b('0x64')]({'where':{'id':_0x3eae2b['params']['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x39aa3f,null))[_0xeb8b('0x20')](function(_0x4b239e){if(_0x4b239e){_0x38e875[_0xeb8b('0x41')]=_[_0xeb8b('0x42')](db[_0xeb8b('0x68')][_0xeb8b('0x65')]);_0x38e875[_0xeb8b('0x43')]=_['keys'](_0x3eae2b[_0xeb8b('0x43')]);_0x38e875[_0xeb8b('0x44')]=_['intersection'](_0x38e875[_0xeb8b('0x41')],_0x38e875[_0xeb8b('0x43')]);_0x283305['attributes']=_['intersection'](_0x38e875[_0xeb8b('0x41')],qs['fields'](_0x3eae2b[_0xeb8b('0x43')][_0xeb8b('0x47')]));_0x283305[_0xeb8b('0x46')]=_0x283305[_0xeb8b('0x46')][_0xeb8b('0x59')]?_0x283305[_0xeb8b('0x46')]:_0x38e875[_0xeb8b('0x41')];if(!_0x3eae2b[_0xeb8b('0x43')][_0xeb8b('0x48')](_0xeb8b('0x49'))){_0x283305[_0xeb8b('0x32')]=qs['limit'](_0x3eae2b[_0xeb8b('0x43')][_0xeb8b('0x32')]);_0x283305['offset']=qs[_0xeb8b('0x30')](_0x3eae2b[_0xeb8b('0x43')][_0xeb8b('0x30')]);}_0x283305[_0xeb8b('0x4a')]=qs[_0xeb8b('0x4b')](_0x3eae2b[_0xeb8b('0x43')][_0xeb8b('0x4b')]);_0x283305[_0xeb8b('0x66')]=qs[_0xeb8b('0x44')](_[_0xeb8b('0x4c')](_0x3eae2b[_0xeb8b('0x43')],_0x38e875['filters']));_0x283305[_0xeb8b('0x66')][_0xeb8b('0x60')]=_0x4b239e['id'];if(_0x3eae2b['query'][_0xeb8b('0x4d')]){_0x283305['where']=_[_0xeb8b('0x50')](_0x283305[_0xeb8b('0x66')],{'$or':_['map'](_0x283305[_0xeb8b('0x46')],function(_0x347cbc){var _0x8735b9={};_0x8735b9[_0x347cbc]={'$like':'%'+_0x3eae2b['query'][_0xeb8b('0x4d')]+'%'};return _0x8735b9;})});}_0x283305=_[_0xeb8b('0x50')]({},_0x283305,_0x3eae2b[_0xeb8b('0x51')]);return db[_0xeb8b('0x68')][_0xeb8b('0x33')]({'where':_0x283305[_0xeb8b('0x66')]})[_0xeb8b('0x20')](function(_0x5df17c){_0x256302[_0xeb8b('0x33')]=_0x5df17c;if(_0x3eae2b['query'][_0xeb8b('0x5a')]){_0x283305[_0xeb8b('0x52')]=[{'all':!![]}];}return db[_0xeb8b('0x68')][_0xeb8b('0x53')](_0x283305);})[_0xeb8b('0x20')](function(_0xe14bd2){_0x256302[_0xeb8b('0x54')]=_0xe14bd2;return _0x256302;});}})[_0xeb8b('0x20')](respondWithFilteredResult(_0x39aa3f,_0x283305))['catch'](handleError(_0x39aa3f,null));};exports[_0xeb8b('0x69')]=function(_0x55f932,_0x2e056c,_0x11418b){return db[_0xeb8b('0x3d')][_0xeb8b('0x5c')]({'where':{'id':_0x55f932[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x2e056c,null))[_0xeb8b('0x20')](function(_0x496fa6){if(_0x496fa6){return _0x496fa6['removeAnswers'](_0x55f932[_0xeb8b('0x43')][_0xeb8b('0x6a')]);}})[_0xeb8b('0x20')](respondWithStatusCode(_0x2e056c,null))[_0xeb8b('0x2b')](handleError(_0x2e056c,null));};exports[_0xeb8b('0x62')]=function(_0x2a9487,_0x4cbda1){var _0x24ccb3={'name':_0x2a9487[_0xeb8b('0x5b')][_0xeb8b('0x37')],'key':_0x2a9487[_0xeb8b('0x5b')][_0xeb8b('0x40')],'email':_0x2a9487[_0xeb8b('0x5b')]['email'],'ListId':_0x2a9487[_0xeb8b('0x5b')]['ListId'],'active':!_[_0xeb8b('0x6b')](_0x2a9487['body'][_0xeb8b('0x6c')])?_0x2a9487[_0xeb8b('0x5b')][_0xeb8b('0x6c')]:!![],'description':_0x2a9487[_0xeb8b('0x5b')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0xeb8b('0x6b')](_0x2a9487[_0xeb8b('0x5b')]['cservice'])){if(_0x2a9487[_0xeb8b('0x5b')][_0xeb8b('0x6d')]){_0x24ccb3[_0xeb8b('0x3a')][_0xeb8b('0x6e')]=_0x24ccb3['Smtp'][_0xeb8b('0x6e')]=_0x2a9487['body'][_0xeb8b('0x6f')];_0x24ccb3[_0xeb8b('0x3a')][_0xeb8b('0x70')]=_0x24ccb3['Smtp'][_0xeb8b('0x71')]=_0x2a9487['body'][_0xeb8b('0x72')];}else{_0x24ccb3['Imap']['authentication']=_0x24ccb3[_0xeb8b('0x57')][_0xeb8b('0x73')]=![];}_0x24ccb3[_0xeb8b('0x3a')][_0xeb8b('0x74')]=_0x2a9487[_0xeb8b('0x5b')][_0xeb8b('0x3a')][_0xeb8b('0x74')];_0x24ccb3[_0xeb8b('0x3a')]['port']=_0x2a9487['body'][_0xeb8b('0x3a')][_0xeb8b('0x75')];_0x24ccb3[_0xeb8b('0x57')]['host']=_0x2a9487['body'][_0xeb8b('0x57')][_0xeb8b('0x74')];_0x24ccb3['Smtp'][_0xeb8b('0x75')]=_0x2a9487['body'][_0xeb8b('0x57')]['port'];}else{_0x24ccb3['Imap'][_0xeb8b('0x76')]=_0x24ccb3[_0xeb8b('0x57')][_0xeb8b('0x76')]=_0x2a9487[_0xeb8b('0x5b')][_0xeb8b('0x77')];_0x24ccb3[_0xeb8b('0x3a')][_0xeb8b('0x6e')]=_0x24ccb3[_0xeb8b('0x57')][_0xeb8b('0x6e')]=_0x2a9487[_0xeb8b('0x5b')][_0xeb8b('0x6f')];_0x24ccb3[_0xeb8b('0x3a')][_0xeb8b('0x70')]=_0x24ccb3['Smtp'][_0xeb8b('0x71')]=_0x2a9487[_0xeb8b('0x5b')]['cpassword'];}return db[_0xeb8b('0x3d')][_0xeb8b('0x62')](_0x24ccb3,{'include':[{'model':db[_0xeb8b('0x3b')],'as':_0xeb8b('0x57')},{'model':db[_0xeb8b('0x39')],'as':_0xeb8b('0x3a')}]})[_0xeb8b('0x20')](function(_0x39396b){var _0x4d1549=_0x2a9487[_0xeb8b('0x6e')][_0xeb8b('0x78')]({'plain':!![]});if(!_0x4d1549)throw new Error(_0xeb8b('0x79'));if(_0x4d1549[_0xeb8b('0x7a')]===_0xeb8b('0x6e')){var _0x157870=_0x39396b[_0xeb8b('0x78')]({'plain':!![]});return db[_0xeb8b('0x7b')][_0xeb8b('0x5c')]({'where':{'name':_0xeb8b('0x7c'),'userProfileId':_0x4d1549['userProfileId']},'raw':!![]})[_0xeb8b('0x20')](function(_0x18bc52){if(_0x18bc52&&_0x18bc52[_0xeb8b('0x7d')]===0x0){return db[_0xeb8b('0x35')][_0xeb8b('0x62')]({'name':_0x157870[_0xeb8b('0x37')],'resourceId':_0x157870['id'],'type':_0x18bc52[_0xeb8b('0x37')],'sectionId':_0x18bc52['id']},{})['then'](function(){return _0x39396b;});}else{return _0x39396b;}})[_0xeb8b('0x2b')](function(_0x418715){logger[_0xeb8b('0x26')](_0xeb8b('0x7e'),_0x418715);throw _0x418715;});}return _0x39396b;})[_0xeb8b('0x20')](respondWithResult(_0x4cbda1,0xc9))['catch'](handleError(_0x4cbda1,null));};exports[_0xeb8b('0x7f')]=function(_0x48bbad,_0x9357a6,_0x6ab1b0){return db['MailAccount'][_0xeb8b('0x64')]({'where':{'id':_0x48bbad[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x9357a6,null))[_0xeb8b('0x20')](function(_0x598ce0){if(_0x598ce0){return _0x598ce0[_0xeb8b('0x7f')]();}return null;})[_0xeb8b('0x20')](respondWithResult(_0x9357a6,null))[_0xeb8b('0x2b')](handleError(_0x9357a6,null));};exports[_0xeb8b('0x80')]=function(_0x49a5e7,_0x1b9337,_0x15387c){if(_0x49a5e7[_0xeb8b('0x5b')]['id']){delete _0x49a5e7[_0xeb8b('0x5b')]['id'];}return db[_0xeb8b('0x3d')][_0xeb8b('0x5c')]({'where':{'id':_0x49a5e7[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x1b9337,null))[_0xeb8b('0x20')](function(_0x2d6b49){if(_0x2d6b49){_0x49a5e7[_0xeb8b('0x5b')][_0xeb8b('0x60')]=_0x2d6b49['id'];return db[_0xeb8b('0x39')]['create'](_0x49a5e7[_0xeb8b('0x5b')]);}})[_0xeb8b('0x20')](respondWithResult(_0x1b9337,null))['catch'](handleError(_0x1b9337,null));};exports[_0xeb8b('0x81')]=function(_0x6fe0ab,_0x3d0e67,_0x2c206e){return db[_0xeb8b('0x3d')]['findOne']({'where':{'id':_0x6fe0ab[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x3d0e67,null))[_0xeb8b('0x20')](function(_0x5ada36){if(_0x5ada36){return _0x5ada36[_0xeb8b('0x82')](null);}return null;})[_0xeb8b('0x20')](respondWithStatusCode(_0x3d0e67,null))[_0xeb8b('0x2b')](handleError(_0x3d0e67,null));};exports[_0xeb8b('0x83')]=function(_0x353224,_0x1d5ba4,_0x3c0b7e){return db[_0xeb8b('0x3d')][_0xeb8b('0x64')]({'where':{'id':_0x353224[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x1d5ba4,null))['then'](function(_0x82fc09){if(_0x82fc09){return _0x82fc09[_0xeb8b('0x83')]();}return null;})[_0xeb8b('0x20')](respondWithResult(_0x1d5ba4,null))[_0xeb8b('0x2b')](handleError(_0x1d5ba4,null));};exports[_0xeb8b('0x84')]=function(_0x266570,_0x7c60ca,_0x1edde2){if(_0x266570[_0xeb8b('0x5b')]['id']){delete _0x266570[_0xeb8b('0x5b')]['id'];}return db['MailAccount'][_0xeb8b('0x5c')]({'where':{'id':_0x266570[_0xeb8b('0x56')]['id']}})['then'](handleEntityNotFound(_0x7c60ca,null))[_0xeb8b('0x20')](function(_0x28a82c){if(_0x28a82c){_0x266570[_0xeb8b('0x5b')]['MailAccountId']=_0x28a82c['id'];return db[_0xeb8b('0x3b')][_0xeb8b('0x62')](_0x266570[_0xeb8b('0x5b')]);}})[_0xeb8b('0x20')](respondWithResult(_0x7c60ca,null))[_0xeb8b('0x2b')](handleError(_0x7c60ca,null));};exports[_0xeb8b('0x85')]=function(_0x208adb,_0x4784d3,_0xf93977){return db[_0xeb8b('0x3d')][_0xeb8b('0x64')]({'where':{'id':_0x208adb[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x4784d3,null))['then'](function(_0xdf37e3){if(_0xdf37e3){return _0xdf37e3[_0xeb8b('0x86')](null);}return null;})['then'](respondWithStatusCode(_0x4784d3,null))[_0xeb8b('0x2b')](handleError(_0x4784d3,null));};exports[_0xeb8b('0x87')]=function(_0x504a8d,_0x5e5ca2,_0xbba781){return db[_0xeb8b('0x88')][_0xeb8b('0x5c')]({'where':{'id':_0x504a8d['params']['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x5e5ca2,null))[_0xeb8b('0x20')](function(_0x39ba11){if(_0x39ba11){return _0x39ba11[_0xeb8b('0x87')](_0x504a8d[_0xeb8b('0x5b')][_0xeb8b('0x6a')],_['omit'](_0x504a8d[_0xeb8b('0x5b')],['ids','id'])||{});}})[_0xeb8b('0x20')](respondWithResult(_0x5e5ca2,null))[_0xeb8b('0x2b')](handleError(_0x5e5ca2,null));};exports[_0xeb8b('0x89')]=function(_0x16efd0,_0x10a5f5,_0xf011c6){var _0x327641={'raw':![],'where':{}};var _0x20bc7d={};var _0x121a9b={'count':0x0,'rows':[]};return db['MailAccount'][_0xeb8b('0x64')]({'where':{'id':_0x16efd0['params']['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x10a5f5,null))['then'](function(_0x242c79){if(_0x242c79){_0x20bc7d['model']=_[_0xeb8b('0x42')](db[_0xeb8b('0x88')][_0xeb8b('0x65')]);_0x20bc7d[_0xeb8b('0x43')]=_[_0xeb8b('0x42')](_0x16efd0[_0xeb8b('0x43')]);_0x20bc7d[_0xeb8b('0x44')]=_['intersection'](_0x20bc7d[_0xeb8b('0x41')],_0x20bc7d[_0xeb8b('0x43')]);_0x327641[_0xeb8b('0x46')]=_[_0xeb8b('0x45')](_0x20bc7d['model'],qs[_0xeb8b('0x47')](_0x16efd0['query'][_0xeb8b('0x47')]));_0x327641[_0xeb8b('0x46')]=_0x327641['attributes'][_0xeb8b('0x59')]?_0x327641[_0xeb8b('0x46')]:_0x20bc7d[_0xeb8b('0x41')];if(!_0x16efd0['query'][_0xeb8b('0x48')](_0xeb8b('0x49'))){_0x327641['limit']=qs['limit'](_0x16efd0[_0xeb8b('0x43')][_0xeb8b('0x32')]);_0x327641[_0xeb8b('0x30')]=qs[_0xeb8b('0x30')](_0x16efd0['query'][_0xeb8b('0x30')]);}_0x327641[_0xeb8b('0x4a')]=qs[_0xeb8b('0x4b')](_0x16efd0[_0xeb8b('0x43')][_0xeb8b('0x4b')]);_0x327641[_0xeb8b('0x66')]=qs[_0xeb8b('0x44')](_['pick'](_0x16efd0[_0xeb8b('0x43')],_0x20bc7d[_0xeb8b('0x44')]));_0x327641['where'][_0xeb8b('0x60')]=_0x242c79['id'];if(_0x16efd0[_0xeb8b('0x43')][_0xeb8b('0x4d')]){_0x327641['where']=_[_0xeb8b('0x50')](_0x327641['where'],{'$or':_[_0xeb8b('0x4e')](_0x327641[_0xeb8b('0x46')],function(_0x906b95){var _0x5c679a={};_0x5c679a[_0x906b95]={'$like':'%'+_0x16efd0['query'][_0xeb8b('0x4d')]+'%'};return _0x5c679a;})});}_0x327641=_['merge']({},_0x327641,_0x16efd0[_0xeb8b('0x51')]);return db['MailInteraction'][_0xeb8b('0x33')]({'where':_0x327641[_0xeb8b('0x66')]})[_0xeb8b('0x20')](function(_0x86f0db){_0x121a9b['count']=_0x86f0db;if(_0x16efd0[_0xeb8b('0x43')][_0xeb8b('0x5a')]){_0x327641['include']=[{'model':db[_0xeb8b('0x8a')],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':['name','fullname',_0xeb8b('0x8b')],'required':![]},{'model':db[_0xeb8b('0x8c')],'as':_0xeb8b('0x8d'),'attributes':['id',_0xeb8b('0x37'),'color'],'where':_0x16efd0['query'][_0xeb8b('0x8e')]?{'id':_0x16efd0['query'][_0xeb8b('0x8e')]}:undefined,'required':_0x16efd0['query']['tag']?!![]:![]}];}return db[_0xeb8b('0x88')][_0xeb8b('0x53')](_0x327641);})[_0xeb8b('0x20')](function(_0x4a677f){_0x121a9b['rows']=_0x4a677f;return _0x121a9b;});}})[_0xeb8b('0x20')](respondWithFilteredResult(_0x10a5f5,_0x327641))['catch'](handleError(_0x10a5f5,null));};exports[_0xeb8b('0x8f')]=function(_0x4f6196,_0x1d5244,_0x55558f){return db[_0xeb8b('0x3d')][_0xeb8b('0x64')]({'where':{'id':_0x4f6196[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x1d5244,null))[_0xeb8b('0x20')](function(_0x489339){if(_0x489339){return db['sequelize'][_0xeb8b('0x90')](function(_0x324f64){return db['MailApplication'][_0xeb8b('0x36')]({'where':{'MailAccountId':_0x4f6196[_0xeb8b('0x56')]['id']},'transaction':_0x324f64})['then'](function(_0xeeaa2c){var _0x2f803c=_[_0xeb8b('0x4e')](_0x4f6196[_0xeb8b('0x5b')],function(_0x4e4743){_0x4e4743[_0xeb8b('0x60')]=_0x4f6196[_0xeb8b('0x56')]['id'];return _0x4e4743;});return db[_0xeb8b('0x91')][_0xeb8b('0x92')](_0x2f803c,{'transaction':_0x324f64});});})[_0xeb8b('0x20')](function(){return db[_0xeb8b('0x91')][_0xeb8b('0x93')]({'where':{'MailAccountId':_0x4f6196[_0xeb8b('0x56')]['id']},'order':_0xeb8b('0x94')});});}})['then'](respondWithResult(_0x1d5244,null))[_0xeb8b('0x2b')](handleError(_0x1d5244,null));};exports[_0xeb8b('0x95')]=function(_0x43aa4b,_0x3352f2,_0x587b27){var _0x3b5eaf={};var _0x419261={};var _0x71497b;var _0x4b90b8;return db['MailAccount'][_0xeb8b('0x64')]({'where':{'id':_0x43aa4b[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x3352f2,null))[_0xeb8b('0x20')](function(_0x345b15){if(_0x345b15){_0x71497b=_0x345b15;_0x419261[_0xeb8b('0x41')]=_[_0xeb8b('0x42')](db[_0xeb8b('0x91')][_0xeb8b('0x65')]);_0x419261[_0xeb8b('0x43')]=_['keys'](_0x43aa4b['query']);_0x419261['filters']=_[_0xeb8b('0x45')](_0x419261[_0xeb8b('0x41')],_0x419261[_0xeb8b('0x43')]);_0x3b5eaf[_0xeb8b('0x46')]=_['intersection'](_0x419261[_0xeb8b('0x41')],qs[_0xeb8b('0x47')](_0x43aa4b[_0xeb8b('0x43')][_0xeb8b('0x47')]));_0x3b5eaf[_0xeb8b('0x46')]=_0x3b5eaf[_0xeb8b('0x46')]['length']?_0x3b5eaf['attributes']:_0x419261[_0xeb8b('0x41')];_0x3b5eaf[_0xeb8b('0x4a')]=qs[_0xeb8b('0x4b')](_0x43aa4b[_0xeb8b('0x43')]['sort']);_0x3b5eaf[_0xeb8b('0x66')]=qs['filters'](_[_0xeb8b('0x4c')](_0x43aa4b[_0xeb8b('0x43')],_0x419261[_0xeb8b('0x44')]));if(_0x43aa4b[_0xeb8b('0x43')][_0xeb8b('0x4d')]){_0x3b5eaf[_0xeb8b('0x66')]=_['merge'](_0x3b5eaf['where'],{'$or':_['map'](_0x3b5eaf['attributes'],function(_0x4dc7be){var _0x3b376c={};_0x3b376c[_0x4dc7be]={'$like':'%'+_0x43aa4b['query'][_0xeb8b('0x4d')]+'%'};return _0x3b376c;})});}_0x3b5eaf=_[_0xeb8b('0x50')]({},_0x3b5eaf,_0x43aa4b[_0xeb8b('0x51')]);return _0x71497b[_0xeb8b('0x95')](_0x3b5eaf);}})[_0xeb8b('0x20')](function(_0x51f677){if(_0x51f677){_0x4b90b8=_0x51f677[_0xeb8b('0x59')];if(!_0x43aa4b[_0xeb8b('0x43')]['hasOwnProperty'](_0xeb8b('0x49'))){_0x3b5eaf[_0xeb8b('0x32')]=qs[_0xeb8b('0x32')](_0x43aa4b[_0xeb8b('0x43')]['limit']);_0x3b5eaf[_0xeb8b('0x30')]=qs['offset'](_0x43aa4b[_0xeb8b('0x43')][_0xeb8b('0x30')]);}return _0x71497b[_0xeb8b('0x95')](_0x3b5eaf);}})[_0xeb8b('0x20')](function(_0x4870d3){if(_0x4870d3){return _0x4870d3?{'count':_0x4b90b8,'rows':_0x4870d3}:null;}})[_0xeb8b('0x20')](respondWithResult(_0x3352f2,null))[_0xeb8b('0x2b')](handleError(_0x3352f2,null));};exports[_0xeb8b('0x96')]=function(_0x54bcb4,_0x212622,_0x4a99e0){var _0x3e48a1={'raw':!![],'where':{}};var _0x5c8dfc={};var _0xd7a5c2={'count':0x0,'rows':[]};return db[_0xeb8b('0x3d')][_0xeb8b('0x64')]({'where':{'id':_0x54bcb4['params']['id']}})['then'](handleEntityNotFound(_0x212622,null))[_0xeb8b('0x20')](function(_0x1545f1){if(_0x1545f1){_0x5c8dfc[_0xeb8b('0x41')]=_[_0xeb8b('0x42')](db['MailMessage'][_0xeb8b('0x65')]);_0x5c8dfc[_0xeb8b('0x43')]=_['keys'](_0x54bcb4['query']);_0x5c8dfc[_0xeb8b('0x44')]=_[_0xeb8b('0x45')](_0x5c8dfc[_0xeb8b('0x41')],_0x5c8dfc[_0xeb8b('0x43')]);_0x3e48a1[_0xeb8b('0x46')]=_[_0xeb8b('0x45')](_0x5c8dfc[_0xeb8b('0x41')],qs[_0xeb8b('0x47')](_0x54bcb4['query'][_0xeb8b('0x47')]));_0x3e48a1['attributes']=_0x3e48a1[_0xeb8b('0x46')]['length']?_0x3e48a1[_0xeb8b('0x46')]:_0x5c8dfc['model'];if(!_0x54bcb4[_0xeb8b('0x43')]['hasOwnProperty'](_0xeb8b('0x49'))){_0x3e48a1[_0xeb8b('0x32')]=qs[_0xeb8b('0x32')](_0x54bcb4[_0xeb8b('0x43')][_0xeb8b('0x32')]);_0x3e48a1['offset']=qs[_0xeb8b('0x30')](_0x54bcb4[_0xeb8b('0x43')][_0xeb8b('0x30')]);}_0x3e48a1['order']=qs[_0xeb8b('0x4b')](_0x54bcb4[_0xeb8b('0x43')][_0xeb8b('0x4b')]);_0x3e48a1['where']=qs[_0xeb8b('0x44')](_[_0xeb8b('0x4c')](_0x54bcb4[_0xeb8b('0x43')],_0x5c8dfc[_0xeb8b('0x44')]));_0x3e48a1['where']['MailAccountId']=_0x1545f1['id'];if(_0x54bcb4['query']['filter']){_0x3e48a1[_0xeb8b('0x66')]=_[_0xeb8b('0x50')](_0x3e48a1[_0xeb8b('0x66')],{'$or':_[_0xeb8b('0x4e')](_0x3e48a1[_0xeb8b('0x46')],function(_0x35024e){var _0x16d2fd={};_0x16d2fd[_0x35024e]={'$like':'%'+_0x54bcb4[_0xeb8b('0x43')]['filter']+'%'};return _0x16d2fd;})});}if(_0x54bcb4[_0xeb8b('0x43')][_0xeb8b('0x97')]){var _0x499fef=_0x54bcb4[_0xeb8b('0x43')][_0xeb8b('0x97')][_0xeb8b('0x98')](',');var _0x182a59={};_0x182a59[_0x499fef[0x0]]={'$gte':moment(_0x499fef[0x1])[_0xeb8b('0x99')](_0xeb8b('0x9a'))};_0x3e48a1[_0xeb8b('0x66')]=_[_0xeb8b('0x50')](_0x3e48a1[_0xeb8b('0x66')],_0x182a59);}_0x3e48a1=_[_0xeb8b('0x50')]({},_0x3e48a1,_0x54bcb4[_0xeb8b('0x51')]);return db['MailMessage'][_0xeb8b('0x33')]({'where':_0x3e48a1[_0xeb8b('0x66')]})['then'](function(_0x378290){_0xd7a5c2['count']=_0x378290;if(_0x54bcb4[_0xeb8b('0x43')][_0xeb8b('0x5a')]){_0x3e48a1['include']=[{'all':!![]}];}return db[_0xeb8b('0x9b')][_0xeb8b('0x53')](_0x3e48a1);})['then'](function(_0x37d3e2){if(_0x54bcb4[_0xeb8b('0x43')][_0xeb8b('0x9c')]===_0xeb8b('0x9d')){for(var _0x12222d=0x0;_0x12222d<_0x37d3e2[_0xeb8b('0x59')];_0x12222d++){_0x37d3e2[_0x12222d]['body']=juice(_0x37d3e2[_0x12222d]['body']);}}_0xd7a5c2[_0xeb8b('0x54')]=_0x37d3e2;return _0xd7a5c2;});}})['then'](respondWithFilteredResult(_0x212622,_0x3e48a1))['catch'](handleError(_0x212622,null));};exports[_0xeb8b('0x9e')]=function(_0x4ac6a6,_0x34efbe,_0x25ced3){var _0x27290d,_0x21f0ed={},_0x39cb6e;if(_0x4ac6a6[_0xeb8b('0x5b')]['to']){_0x39cb6e=_0x4ac6a6[_0xeb8b('0x5b')]['to'][_0xeb8b('0x98')](',')[0x0];}return db['MailAccount']['find']({'where':{'id':_0x4ac6a6[_0xeb8b('0x56')]['id']},'include':[{'model':db['CmList'],'as':_0xeb8b('0x9f'),'include':[{'model':db[_0xeb8b('0x8a')],'as':_0xeb8b('0xa0'),'where':{'email':_0x39cb6e},'limit':0x1,'order':[[_0xeb8b('0xa1'),_0xeb8b('0xa2')]]}]},{'model':db[_0xeb8b('0x3b')],'as':_0xeb8b('0x57'),'raw':!![]}]})['then'](handleEntityNotFound(_0x34efbe,null))[_0xeb8b('0x20')](function(_0x5f4f63){if(_0x5f4f63){_0x27290d=_0x5f4f63;if(_0x5f4f63['Smtp']){if(_[_0xeb8b('0x6b')](_0x4ac6a6[_0xeb8b('0x5b')][_0xeb8b('0xa3')])){_0x4ac6a6[_0xeb8b('0x5b')]['from']=util[_0xeb8b('0x99')](_0xeb8b('0xa4'),_0x5f4f63['name'],_0x5f4f63[_0xeb8b('0xa5')]||_0x5f4f63[_0xeb8b('0x57')][_0xeb8b('0x6e')]);}if(_0x4ac6a6[_0xeb8b('0x5b')]['attachments']&&_0x4ac6a6[_0xeb8b('0x5b')][_0xeb8b('0xa6')][_0xeb8b('0x59')]){for(var _0x3d8fb6=0x0;_0x3d8fb6<_0x4ac6a6[_0xeb8b('0x5b')]['attachments'][_0xeb8b('0x59')];_0x3d8fb6+=0x1){_0x4ac6a6[_0xeb8b('0x5b')][_0xeb8b('0xa6')][_0x3d8fb6]={'filename':_0x4ac6a6['body'][_0xeb8b('0xa6')][_0x3d8fb6]['name'],'path':path[_0xeb8b('0xa7')](config[_0xeb8b('0xa8')],_0xeb8b('0xa9'),_0x4ac6a6[_0xeb8b('0x5b')][_0xeb8b('0xa6')][_0x3d8fb6][_0xeb8b('0xaa')])};}}var _0x3db42f={'tls':{'rejectUnauthorized':![]}};if(_[_0xeb8b('0x6b')](_0x5f4f63['Smtp']['service'])){if(_0x5f4f63[_0xeb8b('0x57')][_0xeb8b('0x73')]){_0x3db42f['auth']={'user':_0x5f4f63[_0xeb8b('0x57')][_0xeb8b('0x6e')],'pass':_0x5f4f63['Smtp'][_0xeb8b('0x71')]};}_0x3db42f['host']=_0x5f4f63[_0xeb8b('0x57')]['host'];_0x3db42f[_0xeb8b('0x75')]=_0x5f4f63[_0xeb8b('0x57')][_0xeb8b('0x75')];_0x3db42f[_0xeb8b('0xab')]=_0x5f4f63['Smtp'][_0xeb8b('0xab')];}else{_0x3db42f[_0xeb8b('0x76')]=_0x5f4f63[_0xeb8b('0x57')]['service'];_0x3db42f[_0xeb8b('0xac')]={'user':_0x5f4f63[_0xeb8b('0x57')][_0xeb8b('0x6e')],'pass':_0x5f4f63[_0xeb8b('0x57')][_0xeb8b('0x71')]};}return respondWithRpcPromise(_0xeb8b('0xad'),_0xeb8b('0xae'),{'account':_0x3db42f,'message':_0x4ac6a6[_0xeb8b('0x5b')]});}else{throw new Error(_0xeb8b('0xaf'));}}})[_0xeb8b('0x20')](function(_0x322b13){if(_0x322b13){_0x21f0ed=_0x322b13;if(_0x27290d[_0xeb8b('0x9f')]){if(_0x27290d[_0xeb8b('0x9f')]['Contacts'][_0xeb8b('0x59')]){return _0x27290d[_0xeb8b('0x9f')][_0xeb8b('0xa0')][0x0];}else{return db[_0xeb8b('0x8a')][_0xeb8b('0x62')](_['defaults'](_0x4ac6a6[_0xeb8b('0x5b')],{'firstName':_0x4ac6a6['body']['to'],'email':_0x4ac6a6['body']['to'],'phone':_0x4ac6a6[_0xeb8b('0x5b')]['to'],'ListId':_0x27290d[_0xeb8b('0xb0')]}));}}else{throw new Error(_0xeb8b('0xaf'));}}})[_0xeb8b('0x20')](function(_0x376513){if(_0x376513){var _0x44eb7f={'UserId':_0x4ac6a6['user']['id'],'ContactId':_0x376513['id'],'MailAccountId':_0x27290d['id'],'inReplyTo':_0x21f0ed[_0xeb8b('0xb1')],'to':_0x4ac6a6[_0xeb8b('0x5b')][_0xeb8b('0xa3')],'cc':_0x4ac6a6[_0xeb8b('0x5b')]['cc'],'subject':_0x4ac6a6[_0xeb8b('0x5b')]['subject'],'attach':_0x4ac6a6[_0xeb8b('0x5b')]['attach'],'firstMsgDirection':_0xeb8b('0xb2'),'lastMsgAt':moment()['format'](_0xeb8b('0x9a')),'lastMsgDirection':'out','Messages':[_[_0xeb8b('0x50')](_0x4ac6a6[_0xeb8b('0x5b')],{'messageId':_0x21f0ed[_0xeb8b('0xb1')],'sentAt':moment()[_0xeb8b('0x99')](_0xeb8b('0x9a')),'read':!![],'MailAccountId':_0x27290d['id'],'UserId':_0x4ac6a6[_0xeb8b('0x6e')]['id'],'ContactId':_0x376513['id']})]};if(_0x4ac6a6[_0xeb8b('0x5b')][_0xeb8b('0xb3')]){_0x44eb7f=_['merge'](_0x44eb7f,_0x4ac6a6['body'][_0xeb8b('0xb3')]);}return db[_0xeb8b('0x88')][_0xeb8b('0x62')](_0x44eb7f,{'include':[{'model':db['MailMessage'],'as':_0xeb8b('0xb4')}]});}})['then'](respondWithResult(_0x34efbe,null))[_0xeb8b('0x2b')](handleError(_0x34efbe,null));};exports['verifySmtp']=function(_0x2bf192,_0x290776,_0x2414b0){return db[_0xeb8b('0x3d')]['find']({'where':{'id':_0x2bf192[_0xeb8b('0x56')]['id']},'include':[{'model':db[_0xeb8b('0x3b')],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x290776,null))['then'](function(_0x4969f8){if(_0x4969f8&&_0x4969f8[_0xeb8b('0x57')]){var _0x21ffab={'id':_0x4969f8['id'],'tls':{'rejectUnauthorized':![]}};if(_0x4969f8[_0xeb8b('0x57')][_0xeb8b('0x76')]){_0x21ffab[_0xeb8b('0x76')]=_0x4969f8[_0xeb8b('0x57')]['service'];}else{_0x21ffab[_0xeb8b('0x74')]=_0x4969f8[_0xeb8b('0x57')][_0xeb8b('0x74')];_0x21ffab[_0xeb8b('0x75')]=_0x4969f8['Smtp']['port'];_0x21ffab[_0xeb8b('0xab')]=_0x4969f8[_0xeb8b('0x57')][_0xeb8b('0xab')];}if(_0x4969f8['Smtp'][_0xeb8b('0x73')]){_0x21ffab[_0xeb8b('0xac')]={'user':_0x4969f8[_0xeb8b('0x57')][_0xeb8b('0x6e')],'pass':_0x4969f8[_0xeb8b('0x57')][_0xeb8b('0x71')]};}return respondWithRpcPromise('VerifySmtp',_0xeb8b('0xb5'),{'account':_0x21ffab});}})['then'](respondWithResult(_0x290776,null))[_0xeb8b('0x2b')](handleError(_0x290776,null));};exports['destroy']=function(_0x30ab65,_0x523d97){return db['MailAccount'][_0xeb8b('0x5c')]({'where':{'id':_0x30ab65[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x523d97,null))[_0xeb8b('0x20')](function(_0xc7e056){if(_0xc7e056&&_0xc7e056[_0xeb8b('0x76')]){throw new db['Sequelize']['ValidationError'](_0xeb8b('0xb6'));}return _0xc7e056;})[_0xeb8b('0x20')](removeEntity(_0x523d97,null))[_0xeb8b('0x2b')](handleError(_0x523d97,null));};exports[_0xeb8b('0xb7')]=function(_0x31074f,_0x33888a,_0x3256a5){return db[_0xeb8b('0x3d')][_0xeb8b('0x5c')]({'where':{'id':_0x31074f[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x33888a,null))[_0xeb8b('0x20')](function(_0x417e11){if(_0x417e11){return _0x417e11[_0xeb8b('0xb7')](_0x31074f['body'][_0xeb8b('0x6a')],_[_0xeb8b('0xb8')](_0x31074f['body'],[_0xeb8b('0x6a'),'id'])||{})[_0xeb8b('0xb9')](function(_0x5a71d5){for(var _0x40193f=0x0;_0x40193f<_0x31074f[_0xeb8b('0x5b')][_0xeb8b('0x6a')][_0xeb8b('0x59')];_0x40193f+=0x1){socket[_0xeb8b('0xba')]('userMailAccount:save',{'UserId':Number(_0x31074f[_0xeb8b('0x5b')][_0xeb8b('0x6a')][_0x40193f]),'MailAccountId':Number(_0x31074f[_0xeb8b('0x56')]['id'])});}return _0x5a71d5;});}})[_0xeb8b('0x20')](respondWithResult(_0x33888a,null))[_0xeb8b('0x2b')](handleError(_0x33888a,null));};exports[_0xeb8b('0xbb')]=function(_0x1edc45,_0x5ecc79,_0x1b5ebc){return db[_0xeb8b('0x3d')]['find']({'where':{'id':_0x1edc45[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x5ecc79,null))[_0xeb8b('0x20')](function(_0x44b2fc){if(_0x44b2fc){return _0x44b2fc[_0xeb8b('0xbb')](_0x1edc45[_0xeb8b('0x43')][_0xeb8b('0x6a')])[_0xeb8b('0x20')](function(){if(_[_0xeb8b('0xbc')](_0x1edc45[_0xeb8b('0x43')][_0xeb8b('0x6a')])){for(var _0x183918=0x0;_0x183918<_0x1edc45[_0xeb8b('0x43')][_0xeb8b('0x6a')][_0xeb8b('0x59')];_0x183918+=0x1){socket['emit']('userMailAccount:remove',{'UserId':Number(_0x1edc45['query'][_0xeb8b('0x6a')][_0x183918]),'MailAccountId':Number(_0x1edc45[_0xeb8b('0x56')]['id'])});}}else{socket['emit']('userMailAccount:remove',{'UserId':Number(_0x1edc45[_0xeb8b('0x43')][_0xeb8b('0x6a')]),'MailAccountId':Number(_0x1edc45[_0xeb8b('0x56')]['id'])});}});}})[_0xeb8b('0x20')](respondWithStatusCode(_0x5ecc79,null))['catch'](handleError(_0x5ecc79,null));};exports[_0xeb8b('0xbd')]=function(_0x3aac7d,_0x50dbba,_0x39cedb){var _0x5f285e={};var _0x14d10d={};var _0x28edc7;var _0x6874ad;return db[_0xeb8b('0x3d')][_0xeb8b('0x64')]({'where':{'id':_0x3aac7d[_0xeb8b('0x56')]['id']}})[_0xeb8b('0x20')](handleEntityNotFound(_0x50dbba,null))[_0xeb8b('0x20')](function(_0xa4ea2c){if(_0xa4ea2c){_0x28edc7=_0xa4ea2c;_0x14d10d[_0xeb8b('0x41')]=_[_0xeb8b('0x42')](db[_0xeb8b('0xbe')][_0xeb8b('0x65')]);_0x14d10d['query']=_[_0xeb8b('0x42')](_0x3aac7d['query']);_0x14d10d['filters']=_['intersection'](_0x14d10d[_0xeb8b('0x41')],_0x14d10d[_0xeb8b('0x43')]);_0x5f285e[_0xeb8b('0x46')]=_[_0xeb8b('0x45')](_0x14d10d[_0xeb8b('0x41')],qs[_0xeb8b('0x47')](_0x3aac7d[_0xeb8b('0x43')][_0xeb8b('0x47')]));_0x5f285e[_0xeb8b('0x46')]=_0x5f285e[_0xeb8b('0x46')][_0xeb8b('0x59')]?_0x5f285e[_0xeb8b('0x46')]:_0x14d10d[_0xeb8b('0x41')];_0x5f285e[_0xeb8b('0x4a')]=qs[_0xeb8b('0x4b')](_0x3aac7d[_0xeb8b('0x43')]['sort']);_0x5f285e['where']=qs[_0xeb8b('0x44')](_[_0xeb8b('0x4c')](_0x3aac7d[_0xeb8b('0x43')],_0x14d10d[_0xeb8b('0x44')]));if(_0x3aac7d[_0xeb8b('0x43')]['filter']){_0x5f285e[_0xeb8b('0x66')]=_['merge'](_0x5f285e[_0xeb8b('0x66')],{'$or':_[_0xeb8b('0x4e')](_0x5f285e[_0xeb8b('0x46')],function(_0x16699a){var _0x401d74={};_0x401d74[_0x16699a]={'$like':'%'+_0x3aac7d[_0xeb8b('0x43')][_0xeb8b('0x4d')]+'%'};return _0x401d74;})});}_0x5f285e=_[_0xeb8b('0x50')]({},_0x5f285e,_0x3aac7d[_0xeb8b('0x51')]);return _0x28edc7[_0xeb8b('0xbd')](_0x5f285e);}})['then'](function(_0x47040a){if(_0x47040a){_0x6874ad=_0x47040a[_0xeb8b('0x59')];if(!_0x3aac7d[_0xeb8b('0x43')]['hasOwnProperty'](_0xeb8b('0x49'))){_0x5f285e['limit']=qs['limit'](_0x3aac7d[_0xeb8b('0x43')][_0xeb8b('0x32')]);_0x5f285e[_0xeb8b('0x30')]=qs[_0xeb8b('0x30')](_0x3aac7d[_0xeb8b('0x43')][_0xeb8b('0x30')]);}return _0x28edc7[_0xeb8b('0xbd')](_0x5f285e);}})[_0xeb8b('0x20')](function(_0x37e84e){if(_0x37e84e){return _0x37e84e?{'count':_0x6874ad,'rows':_0x37e84e}:null;}})[_0xeb8b('0x20')](respondWithResult(_0x50dbba,null))[_0xeb8b('0x2b')](handleError(_0x50dbba,null));};
\ No newline at end of file
+var _0xae00=['../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','MailAccounts','UserProfileResource','stack','name','send','index','Imap','MailServerOut','Smtp','mandatoryDispositionPause','MailAccount','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','findAll','catch','show','params','MailServerIn','Pause','includeAll','include','find','body','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','hasOwnProperty','rows','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','email','ListId','isNil','active','description','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','sequelize','transaction','MailApplication','findAndCountAll','priority','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','SendMail','sendMail','List\x20not\x20found','List','messageId','subject','attach','out','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','html-to-text','juice','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x530b94,_0x4d7379){var _0x26ba83=function(_0x1ecb6f){while(--_0x1ecb6f){_0x530b94['push'](_0x530b94['shift']());}};_0x26ba83(++_0x4d7379);}(_0xae00,0x17b));var _0x0ae0=function(_0x136a0d,_0x476fe2){_0x136a0d=_0x136a0d-0x0;var _0x212ea5=_0xae00[_0x136a0d];return _0x212ea5;};'use strict';var emlformat=require(_0x0ae0('0x0'));var rimraf=require(_0x0ae0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0ae0('0x2'));var rp=require(_0x0ae0('0x3'));var moment=require(_0x0ae0('0x4'));var BPromise=require(_0x0ae0('0x5'));var Mustache=require(_0x0ae0('0x6'));var util=require(_0x0ae0('0x7'));var path=require(_0x0ae0('0x8'));var sox=require('sox');var csv=require(_0x0ae0('0x9'));var ejs=require(_0x0ae0('0xa'));var fs=require('fs');var fs_extra=require(_0x0ae0('0xb'));var _=require(_0x0ae0('0xc'));var squel=require('squel');var crypto=require(_0x0ae0('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0ae0('0xe'));var toCsv=require(_0x0ae0('0x9'));var querystring=require(_0x0ae0('0xf'));var Papa=require('papaparse');var htmlToText=require(_0x0ae0('0x10'));var juice=require(_0x0ae0('0x11'));var Redis=require('ioredis');var authService=require(_0x0ae0('0x12'));var qs=require(_0x0ae0('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ae0('0x14'));var logger=require(_0x0ae0('0x15'))(_0x0ae0('0x16'));var utils=require(_0x0ae0('0x17'));var config=require(_0x0ae0('0x18'));var licenseUtil=require(_0x0ae0('0x19'));var db=require(_0x0ae0('0x1a'))['db'];config[_0x0ae0('0x1b')]=_[_0x0ae0('0x1c')](config[_0x0ae0('0x1b')],{'host':_0x0ae0('0x1d'),'port':0x18eb});var socket=require(_0x0ae0('0x1e'))(new Redis(config[_0x0ae0('0x1b')]));require('./mailAccount.socket')[_0x0ae0('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x0ae0('0x20')][_0x0ae0('0x21')]({'port':0x232b});function respondWithRpcPromise(_0xe620fd,_0x307478,_0x341b43,_0x5f25d4){return new BPromise(function(_0x4bcbad,_0x25fb92){var _0x29913f=_0x5f25d4||client;return _0x29913f[_0x0ae0('0x22')](_0xe620fd,_0x341b43)['then'](function(_0x26a732){logger['info'](_0x0ae0('0x23'),_0x307478,'request\x20sent');logger[_0x0ae0('0x24')](_0x0ae0('0x25'),_0x307478,'request\x20sent',JSON[_0x0ae0('0x26')](_0x26a732));if(_0x26a732['error']){if(_0x26a732['error'][_0x0ae0('0x27')]===0x1f4){logger[_0x0ae0('0x28')](_0x0ae0('0x23'),_0x307478,_0x26a732[_0x0ae0('0x28')][_0x0ae0('0x29')]);return _0x25fb92(_0x26a732[_0x0ae0('0x28')]['message']);}logger[_0x0ae0('0x28')](_0x0ae0('0x23'),_0x307478,_0x26a732[_0x0ae0('0x28')][_0x0ae0('0x29')]);return _0x4bcbad(_0x26a732[_0x0ae0('0x28')][_0x0ae0('0x29')]);}else{logger['info'](_0x0ae0('0x23'),_0x307478,_0x0ae0('0x2a'));_0x4bcbad(_0x26a732[_0x0ae0('0x2b')]['message']);}})['catch'](function(_0x244d7b){logger[_0x0ae0('0x28')](_0x0ae0('0x23'),_0x307478,_0x244d7b);_0x25fb92(_0x244d7b);});});}function respondWithStatusCode(_0x328b4f,_0x1ef7c1){_0x1ef7c1=_0x1ef7c1||0xcc;return function(_0x3a7585){if(_0x3a7585){return _0x328b4f[_0x0ae0('0x2c')](_0x1ef7c1);}return _0x328b4f[_0x0ae0('0x2d')](_0x1ef7c1)[_0x0ae0('0x2e')]();};}function respondWithResult(_0x256894,_0x1c2dc3){_0x1c2dc3=_0x1c2dc3||0xc8;return function(_0xd6921d){if(_0xd6921d){return _0x256894[_0x0ae0('0x2d')](_0x1c2dc3)[_0x0ae0('0x2f')](_0xd6921d);}};}function respondWithFilteredResult(_0x2fbc02,_0x22b8c0){return function(_0x404967){if(_0x404967){var _0x4dd407=typeof _0x22b8c0[_0x0ae0('0x30')]==='undefined'&&typeof _0x22b8c0[_0x0ae0('0x31')]==='undefined';var _0x1ee473=_0x404967[_0x0ae0('0x32')];var _0x1d8aee=_0x4dd407?0x0:_0x22b8c0['offset'];var _0x5723ab=_0x4dd407?_0x404967[_0x0ae0('0x32')]:_0x22b8c0[_0x0ae0('0x30')]+_0x22b8c0['limit'];var _0x165fd9;if(_0x5723ab>=_0x1ee473){_0x5723ab=_0x1ee473;_0x165fd9=0xc8;}else{_0x165fd9=0xce;}_0x2fbc02['status'](_0x165fd9);return _0x2fbc02[_0x0ae0('0x33')](_0x0ae0('0x34'),_0x1d8aee+'-'+_0x5723ab+'/'+_0x1ee473)['json'](_0x404967);}return null;};}function patchUpdates(_0x4dcb09){return function(_0x191c46){try{jsonpatch[_0x0ae0('0x35')](_0x191c46,_0x4dcb09,!![]);}catch(_0x2bb113){return BPromise[_0x0ae0('0x36')](_0x2bb113);}return _0x191c46['save']();};}function saveUpdates(_0x3080ec,_0x2788d5){return function(_0x7501ac){if(_0x7501ac){return _0x7501ac[_0x0ae0('0x37')](_0x3080ec)[_0x0ae0('0x38')](function(_0x2dc927){return _0x2dc927;});}return null;};}function removeEntity(_0x5aa992,_0x52f9be){return function(_0x2a6775){if(_0x2a6775){return _0x2a6775[_0x0ae0('0x39')]()['then'](function(){var _0x36fc46=_0x2a6775[_0x0ae0('0x3a')]({'plain':!![]});var _0xefbca9=_0x0ae0('0x3b');return db[_0x0ae0('0x3c')][_0x0ae0('0x39')]({'where':{'type':_0xefbca9,'resourceId':_0x36fc46['id']}})[_0x0ae0('0x38')](function(){return _0x2a6775;});})[_0x0ae0('0x38')](function(){_0x5aa992['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e2c45,_0xd239ee){return function(_0x2a84d3){if(!_0x2a84d3){_0x1e2c45[_0x0ae0('0x2c')](0x194);}return _0x2a84d3;};}function handleError(_0x333897,_0x8b2ed7){_0x8b2ed7=_0x8b2ed7||0x1f4;return function(_0x4de4ef){logger[_0x0ae0('0x28')](_0x4de4ef[_0x0ae0('0x3d')]);if(_0x4de4ef[_0x0ae0('0x3e')]){delete _0x4de4ef[_0x0ae0('0x3e')];}_0x333897[_0x0ae0('0x2d')](_0x8b2ed7)[_0x0ae0('0x3f')](_0x4de4ef);};}exports[_0x0ae0('0x40')]=function(_0x44a812,_0x35e772){var _0x547d5a={'include':[{'model':db['MailServerIn'],'as':_0x0ae0('0x41')},{'model':db[_0x0ae0('0x42')],'as':_0x0ae0('0x43')},{'model':db['Pause'],'as':_0x0ae0('0x44')}]},_0x3aae5f={},_0x102bb5={'count':0x0,'rows':[]};var _0x2f76ba=_['map'](db[_0x0ae0('0x45')][_0x0ae0('0x46')],function(_0x41f3a5){return{'name':_0x41f3a5['fieldName'],'type':_0x41f3a5[_0x0ae0('0x47')][_0x0ae0('0x48')]};});_0x3aae5f[_0x0ae0('0x49')]=_[_0x0ae0('0x4a')](_0x2f76ba,_0x0ae0('0x3e'));_0x3aae5f[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x44a812['query']);_0x3aae5f[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x3aae5f['model'],_0x3aae5f['query']);_0x547d5a['attributes']=_[_0x0ae0('0x4e')](_0x3aae5f[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x547d5a[_0x0ae0('0x50')]=_0x547d5a[_0x0ae0('0x50')][_0x0ae0('0x51')]?_0x547d5a['attributes']:_0x3aae5f[_0x0ae0('0x49')];if(!_0x44a812[_0x0ae0('0x4b')]['hasOwnProperty'](_0x0ae0('0x52'))){_0x547d5a['limit']=qs['limit'](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x547d5a['offset']=qs[_0x0ae0('0x30')](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}_0x547d5a[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x54')]);_0x547d5a[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_[_0x0ae0('0x56')](_0x44a812[_0x0ae0('0x4b')],_0x3aae5f[_0x0ae0('0x4d')]),_0x2f76ba);if(_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0x547d5a['where']=_['merge'](_0x547d5a[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x2f76ba,function(_0x1121b9){if(_0x1121b9[_0x0ae0('0x47')]!==_0x0ae0('0x58')){var _0x24f82d={};_0x24f82d[_0x1121b9['name']]={'$like':'%'+_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x24f82d;}})});}_0x547d5a=_[_0x0ae0('0x59')]({},_0x547d5a,_0x44a812[_0x0ae0('0x5a')]);var _0x1eeb7c={'where':_0x547d5a['where']};return db[_0x0ae0('0x45')]['count'](_0x1eeb7c)[_0x0ae0('0x38')](function(_0x38b470){_0x102bb5[_0x0ae0('0x32')]=_0x38b470;if(_0x44a812[_0x0ae0('0x4b')]['includeAll']){_0x547d5a['include']=[{'all':!![]}];}return db[_0x0ae0('0x45')][_0x0ae0('0x5b')](_0x547d5a);})[_0x0ae0('0x38')](function(_0x1e933e){_0x102bb5['rows']=_0x1e933e;return _0x102bb5;})['then'](respondWithFilteredResult(_0x35e772,_0x547d5a))[_0x0ae0('0x5c')](handleError(_0x35e772,null));};exports[_0x0ae0('0x5d')]=function(_0xbcdab0,_0x17c74d){var _0x162334={'raw':![],'where':{'id':_0xbcdab0[_0x0ae0('0x5e')]['id']},'include':[{'model':db[_0x0ae0('0x5f')],'as':_0x0ae0('0x41')},{'model':db[_0x0ae0('0x42')],'as':'Smtp'},{'model':db[_0x0ae0('0x60')],'as':_0x0ae0('0x44')}]},_0x5e5745={};_0x5e5745[_0x0ae0('0x49')]=_['keys'](db[_0x0ae0('0x45')]['rawAttributes']);_0x5e5745['query']=_[_0x0ae0('0x4c')](_0xbcdab0[_0x0ae0('0x4b')]);_0x5e5745['filters']=_['intersection'](_0x5e5745['model'],_0x5e5745['query']);_0x162334[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x5e5745[_0x0ae0('0x49')],qs['fields'](_0xbcdab0[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x162334[_0x0ae0('0x50')]=_0x162334[_0x0ae0('0x50')][_0x0ae0('0x51')]?_0x162334[_0x0ae0('0x50')]:_0x5e5745['model'];if(_0xbcdab0['query'][_0x0ae0('0x61')]){_0x162334[_0x0ae0('0x62')]=[{'all':!![]}];}_0x162334=_[_0x0ae0('0x59')]({},_0x162334,_0xbcdab0[_0x0ae0('0x5a')]);return db[_0x0ae0('0x45')][_0x0ae0('0x63')](_0x162334)[_0x0ae0('0x38')](handleEntityNotFound(_0x17c74d,null))[_0x0ae0('0x38')](respondWithResult(_0x17c74d,null))[_0x0ae0('0x5c')](handleError(_0x17c74d,null));};exports[_0x0ae0('0x37')]=function(_0xaee3bf,_0x188b5f){if(_0xaee3bf[_0x0ae0('0x64')]['id']){delete _0xaee3bf[_0x0ae0('0x64')]['id'];}return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0xaee3bf[_0x0ae0('0x5e')]['id']},'include':[{'model':db[_0x0ae0('0x5f')],'as':_0x0ae0('0x41')},{'model':db[_0x0ae0('0x42')],'as':'Smtp'},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x0ae0('0x38')](handleEntityNotFound(_0x188b5f,null))['then'](saveUpdates(_0xaee3bf[_0x0ae0('0x64')],null))['then'](function(_0x2a42ec){if(_0x2a42ec&&_0xaee3bf[_0x0ae0('0x64')][_0x0ae0('0x41')]){return db[_0x0ae0('0x5f')]['update'](_0xaee3bf[_0x0ae0('0x64')][_0x0ae0('0x41')],{'where':{'MailAccountId':_0x2a42ec['id']}})['then'](function(){return _0x2a42ec;});}return _0x2a42ec;})[_0x0ae0('0x38')](function(_0x1535cf){if(_0x1535cf&&_0xaee3bf[_0x0ae0('0x64')]['Smtp']){return db[_0x0ae0('0x42')]['update'](_0xaee3bf['body'][_0x0ae0('0x43')],{'where':{'MailAccountId':_0x1535cf['id']}})[_0x0ae0('0x38')](function(){return _0x1535cf;});}return _0x1535cf;})['then'](respondWithResult(_0x188b5f,null))[_0x0ae0('0x5c')](handleError(_0x188b5f,null));};exports[_0x0ae0('0x65')]=function(_0x3e5274,_0x508bbd){return db['MailAccount'][_0x0ae0('0x65')]()[_0x0ae0('0x38')](respondWithResult(_0x508bbd,null))['catch'](handleError(_0x508bbd,null));};exports[_0x0ae0('0x66')]=function(_0x240f4e,_0x3016cc,_0x106985){if(_0x240f4e[_0x0ae0('0x64')]['id']){delete _0x240f4e['body']['id'];}return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x240f4e[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3016cc,null))[_0x0ae0('0x38')](function(_0x25e7b3){if(_0x25e7b3){_0x240f4e[_0x0ae0('0x64')][_0x0ae0('0x67')]=_0x25e7b3['id'];return db[_0x0ae0('0x68')][_0x0ae0('0x69')](_0x240f4e[_0x0ae0('0x64')]);}})[_0x0ae0('0x38')](respondWithResult(_0x3016cc,null))[_0x0ae0('0x5c')](handleError(_0x3016cc,null));};exports[_0x0ae0('0x6a')]=function(_0x8522ab,_0x1ee935,_0x48b7aa){var _0xb83953={'raw':![],'where':{}};var _0x51e945={};var _0x40b266={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x8522ab[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x1ee935,null))['then'](function(_0x1e41d2){if(_0x1e41d2){_0x51e945[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db['Disposition'][_0x0ae0('0x46')]);_0x51e945[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x8522ab[_0x0ae0('0x4b')]);_0x51e945[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x51e945[_0x0ae0('0x49')],_0x51e945[_0x0ae0('0x4b')]);_0xb83953[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x51e945[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x8522ab['query'][_0x0ae0('0x4f')]));_0xb83953[_0x0ae0('0x50')]=_0xb83953[_0x0ae0('0x50')]['length']?_0xb83953[_0x0ae0('0x50')]:_0x51e945[_0x0ae0('0x49')];if(!_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0xb83953['limit']=qs[_0x0ae0('0x31')](_0x8522ab['query'][_0x0ae0('0x31')]);_0xb83953[_0x0ae0('0x30')]=qs[_0x0ae0('0x30')](_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}_0xb83953[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x8522ab['query'][_0x0ae0('0x54')]);_0xb83953[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_['pick'](_0x8522ab['query'],_0x51e945[_0x0ae0('0x4d')]));_0xb83953['where'][_0x0ae0('0x67')]=_0x1e41d2['id'];if(_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0xb83953[_0x0ae0('0x55')]=_['merge'](_0xb83953['where'],{'$or':_['map'](_0xb83953[_0x0ae0('0x50')],function(_0x311fd4){var _0x4b4369={};_0x4b4369[_0x311fd4]={'$like':'%'+_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x4b4369;})});}_0xb83953=_[_0x0ae0('0x59')]({},_0xb83953,_0x8522ab[_0x0ae0('0x5a')]);return db['Disposition'][_0x0ae0('0x32')]({'where':_0xb83953[_0x0ae0('0x55')]})[_0x0ae0('0x38')](function(_0x1d5205){_0x40b266[_0x0ae0('0x32')]=_0x1d5205;if(_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x61')]){_0xb83953[_0x0ae0('0x62')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0xb83953);})['then'](function(_0x439f7c){_0x40b266[_0x0ae0('0x6d')]=_0x439f7c;return _0x40b266;});}})[_0x0ae0('0x38')](respondWithFilteredResult(_0x1ee935,_0xb83953))['catch'](handleError(_0x1ee935,null));};exports[_0x0ae0('0x6e')]=function(_0x5e809e,_0x374606,_0x18bf35){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x5e809e[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x374606,null))[_0x0ae0('0x38')](function(_0x42cc6d){if(_0x42cc6d){return _0x42cc6d['removeDispositions'](_0x5e809e[_0x0ae0('0x4b')]['ids']);}})[_0x0ae0('0x38')](respondWithStatusCode(_0x374606,null))['catch'](handleError(_0x374606,null));};exports[_0x0ae0('0x6f')]=function(_0x4eaa98,_0x33d978,_0x571349){if(_0x4eaa98[_0x0ae0('0x64')]['id']){delete _0x4eaa98[_0x0ae0('0x64')]['id'];}return db['MailAccount'][_0x0ae0('0x63')]({'where':{'id':_0x4eaa98[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x33d978,null))[_0x0ae0('0x38')](function(_0x26141f){if(_0x26141f){_0x4eaa98['body'][_0x0ae0('0x67')]=_0x26141f['id'];return db[_0x0ae0('0x70')]['create'](_0x4eaa98[_0x0ae0('0x64')]);}})[_0x0ae0('0x38')](respondWithResult(_0x33d978,null))[_0x0ae0('0x5c')](handleError(_0x33d978,null));};exports['getAnswers']=function(_0xf156a8,_0x57188e,_0x543808){var _0x1b57ae={'raw':![],'where':{}};var _0x3949ea={};var _0x3c9357={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0xf156a8['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x57188e,null))['then'](function(_0x5e45cb){if(_0x5e45cb){_0x3949ea[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db['CannedAnswer'][_0x0ae0('0x46')]);_0x3949ea[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0xf156a8[_0x0ae0('0x4b')]);_0x3949ea[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x3949ea[_0x0ae0('0x49')],_0x3949ea[_0x0ae0('0x4b')]);_0x1b57ae[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x3949ea[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0xf156a8[_0x0ae0('0x4b')]['fields']));_0x1b57ae[_0x0ae0('0x50')]=_0x1b57ae[_0x0ae0('0x50')][_0x0ae0('0x51')]?_0x1b57ae['attributes']:_0x3949ea[_0x0ae0('0x49')];if(!_0xf156a8[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x1b57ae[_0x0ae0('0x31')]=qs['limit'](_0xf156a8['query'][_0x0ae0('0x31')]);_0x1b57ae[_0x0ae0('0x30')]=qs[_0x0ae0('0x30')](_0xf156a8[_0x0ae0('0x4b')]['offset']);}_0x1b57ae[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0xf156a8[_0x0ae0('0x4b')]['sort']);_0x1b57ae[_0x0ae0('0x55')]=qs['filters'](_['pick'](_0xf156a8[_0x0ae0('0x4b')],_0x3949ea[_0x0ae0('0x4d')]));_0x1b57ae[_0x0ae0('0x55')][_0x0ae0('0x67')]=_0x5e45cb['id'];if(_0xf156a8[_0x0ae0('0x4b')]['filter']){_0x1b57ae[_0x0ae0('0x55')]=_[_0x0ae0('0x59')](_0x1b57ae[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x1b57ae['attributes'],function(_0x1985f8){var _0x3dedf8={};_0x3dedf8[_0x1985f8]={'$like':'%'+_0xf156a8[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x3dedf8;})});}_0x1b57ae=_[_0x0ae0('0x59')]({},_0x1b57ae,_0xf156a8[_0x0ae0('0x5a')]);return db[_0x0ae0('0x70')][_0x0ae0('0x32')]({'where':_0x1b57ae[_0x0ae0('0x55')]})['then'](function(_0x322a7f){_0x3c9357['count']=_0x322a7f;if(_0xf156a8[_0x0ae0('0x4b')][_0x0ae0('0x61')]){_0x1b57ae[_0x0ae0('0x62')]=[{'all':!![]}];}return db[_0x0ae0('0x70')][_0x0ae0('0x5b')](_0x1b57ae);})[_0x0ae0('0x38')](function(_0x9e9740){_0x3c9357['rows']=_0x9e9740;return _0x3c9357;});}})[_0x0ae0('0x38')](respondWithFilteredResult(_0x57188e,_0x1b57ae))[_0x0ae0('0x5c')](handleError(_0x57188e,null));};exports[_0x0ae0('0x71')]=function(_0x4afad7,_0x67b809,_0x90281b){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x4afad7[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x67b809,null))[_0x0ae0('0x38')](function(_0x493995){if(_0x493995){return _0x493995['removeAnswers'](_0x4afad7[_0x0ae0('0x4b')][_0x0ae0('0x72')]);}})[_0x0ae0('0x38')](respondWithStatusCode(_0x67b809,null))['catch'](handleError(_0x67b809,null));};exports[_0x0ae0('0x69')]=function(_0x33f5b6,_0x9509b){var _0x4a01cb={'name':_0x33f5b6[_0x0ae0('0x64')]['name'],'key':_0x33f5b6['body'][_0x0ae0('0x48')],'email':_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x73')],'ListId':_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x74')],'active':!_[_0x0ae0('0x75')](_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x76')])?_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x76')]:!![],'description':_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x77')]||null,'Imap':{},'Smtp':{}};if(_[_0x0ae0('0x75')](_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x78')])){if(_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x79')]){_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x7a')]=_0x4a01cb[_0x0ae0('0x43')]['user']=_0x33f5b6['body'][_0x0ae0('0x7b')];_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x7c')]=_0x4a01cb[_0x0ae0('0x43')][_0x0ae0('0x7d')]=_0x33f5b6['body'][_0x0ae0('0x7e')];}else{_0x4a01cb['Imap']['authentication']=_0x4a01cb[_0x0ae0('0x43')][_0x0ae0('0x7f')]=![];}_0x4a01cb['Imap'][_0x0ae0('0x80')]=_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x41')][_0x0ae0('0x80')];_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x81')]=_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x41')][_0x0ae0('0x81')];_0x4a01cb[_0x0ae0('0x43')]['host']=_0x33f5b6[_0x0ae0('0x64')]['Smtp']['host'];_0x4a01cb['Smtp'][_0x0ae0('0x81')]=_0x33f5b6[_0x0ae0('0x64')]['Smtp'][_0x0ae0('0x81')];}else{_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x82')]=_0x4a01cb['Smtp']['service']=_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x78')];_0x4a01cb['Imap'][_0x0ae0('0x7a')]=_0x4a01cb[_0x0ae0('0x43')]['user']=_0x33f5b6['body']['cuser'];_0x4a01cb['Imap'][_0x0ae0('0x7c')]=_0x4a01cb[_0x0ae0('0x43')][_0x0ae0('0x7d')]=_0x33f5b6['body'][_0x0ae0('0x7e')];}return db[_0x0ae0('0x45')][_0x0ae0('0x69')](_0x4a01cb,{'include':[{'model':db[_0x0ae0('0x42')],'as':_0x0ae0('0x43')},{'model':db[_0x0ae0('0x5f')],'as':_0x0ae0('0x41')}]})['then'](function(_0x5cd155){var _0x50c239=_0x33f5b6['user'][_0x0ae0('0x3a')]({'plain':!![]});if(!_0x50c239)throw new Error(_0x0ae0('0x83'));if(_0x50c239['role']===_0x0ae0('0x7a')){var _0x55c6c9=_0x5cd155[_0x0ae0('0x3a')]({'plain':!![]});return db[_0x0ae0('0x84')]['find']({'where':{'name':'MailAccounts','userProfileId':_0x50c239[_0x0ae0('0x85')]},'raw':!![]})[_0x0ae0('0x38')](function(_0xa49e36){if(_0xa49e36&&_0xa49e36[_0x0ae0('0x86')]===0x0){return db[_0x0ae0('0x3c')]['create']({'name':_0x55c6c9[_0x0ae0('0x3e')],'resourceId':_0x55c6c9['id'],'type':_0xa49e36[_0x0ae0('0x3e')],'sectionId':_0xa49e36['id']},{})[_0x0ae0('0x38')](function(){return _0x5cd155;});}else{return _0x5cd155;}})['catch'](function(_0x2ca0ef){logger[_0x0ae0('0x28')](_0x0ae0('0x87'),_0x2ca0ef);throw _0x2ca0ef;});}return _0x5cd155;})[_0x0ae0('0x38')](respondWithResult(_0x9509b,0xc9))[_0x0ae0('0x5c')](handleError(_0x9509b,null));};exports[_0x0ae0('0x88')]=function(_0x2c80f5,_0x5b622d,_0x91439d){return db['MailAccount'][_0x0ae0('0x6b')]({'where':{'id':_0x2c80f5[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x5b622d,null))[_0x0ae0('0x38')](function(_0x2ae09e){if(_0x2ae09e){return _0x2ae09e[_0x0ae0('0x88')]();}return null;})[_0x0ae0('0x38')](respondWithResult(_0x5b622d,null))[_0x0ae0('0x5c')](handleError(_0x5b622d,null));};exports['addImap']=function(_0x2ce84d,_0x22bb6f,_0x391a3d){if(_0x2ce84d[_0x0ae0('0x64')]['id']){delete _0x2ce84d[_0x0ae0('0x64')]['id'];}return db['MailAccount'][_0x0ae0('0x63')]({'where':{'id':_0x2ce84d['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x22bb6f,null))['then'](function(_0x74ee58){if(_0x74ee58){_0x2ce84d[_0x0ae0('0x64')]['MailAccountId']=_0x74ee58['id'];return db[_0x0ae0('0x5f')][_0x0ae0('0x69')](_0x2ce84d['body']);}})['then'](respondWithResult(_0x22bb6f,null))[_0x0ae0('0x5c')](handleError(_0x22bb6f,null));};exports['removeImap']=function(_0x407938,_0x156ce4,_0x362537){return db[_0x0ae0('0x45')]['findOne']({'where':{'id':_0x407938[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x156ce4,null))[_0x0ae0('0x38')](function(_0x5bf59e){if(_0x5bf59e){return _0x5bf59e[_0x0ae0('0x89')](null);}return null;})[_0x0ae0('0x38')](respondWithStatusCode(_0x156ce4,null))[_0x0ae0('0x5c')](handleError(_0x156ce4,null));};exports[_0x0ae0('0x8a')]=function(_0x4eeed6,_0x3d7ab0,_0x217eea){return db[_0x0ae0('0x45')]['findOne']({'where':{'id':_0x4eeed6[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x3d7ab0,null))[_0x0ae0('0x38')](function(_0x1c9606){if(_0x1c9606){return _0x1c9606[_0x0ae0('0x8a')]();}return null;})[_0x0ae0('0x38')](respondWithResult(_0x3d7ab0,null))['catch'](handleError(_0x3d7ab0,null));};exports['addSmtp']=function(_0x212e59,_0x36c185,_0x28b33c){if(_0x212e59['body']['id']){delete _0x212e59[_0x0ae0('0x64')]['id'];}return db['MailAccount'][_0x0ae0('0x63')]({'where':{'id':_0x212e59[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x36c185,null))['then'](function(_0x458b82){if(_0x458b82){_0x212e59[_0x0ae0('0x64')][_0x0ae0('0x67')]=_0x458b82['id'];return db[_0x0ae0('0x42')][_0x0ae0('0x69')](_0x212e59['body']);}})[_0x0ae0('0x38')](respondWithResult(_0x36c185,null))['catch'](handleError(_0x36c185,null));};exports[_0x0ae0('0x8b')]=function(_0x279358,_0x38645,_0x3d482f){return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x279358[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x38645,null))[_0x0ae0('0x38')](function(_0x317391){if(_0x317391){return _0x317391[_0x0ae0('0x8c')](null);}return null;})[_0x0ae0('0x38')](respondWithStatusCode(_0x38645,null))[_0x0ae0('0x5c')](handleError(_0x38645,null));};exports[_0x0ae0('0x8d')]=function(_0x32bb63,_0x276c65,_0x61bd90){return db[_0x0ae0('0x8e')][_0x0ae0('0x63')]({'where':{'id':_0x32bb63[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x276c65,null))[_0x0ae0('0x38')](function(_0x148587){if(_0x148587){return _0x148587[_0x0ae0('0x8d')](_0x32bb63[_0x0ae0('0x64')][_0x0ae0('0x72')],_[_0x0ae0('0x8f')](_0x32bb63[_0x0ae0('0x64')],['ids','id'])||{});}})[_0x0ae0('0x38')](respondWithResult(_0x276c65,null))[_0x0ae0('0x5c')](handleError(_0x276c65,null));};exports[_0x0ae0('0x90')]=function(_0x59ebb0,_0x1e64f5,_0x2c58a0){var _0x104c81={'raw':![],'where':{}};var _0x3a4757={};var _0x258e94={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x59ebb0[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x1e64f5,null))['then'](function(_0x5c845f){if(_0x5c845f){_0x3a4757[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db[_0x0ae0('0x8e')][_0x0ae0('0x46')]);_0x3a4757[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x59ebb0['query']);_0x3a4757[_0x0ae0('0x4d')]=_['intersection'](_0x3a4757['model'],_0x3a4757[_0x0ae0('0x4b')]);_0x104c81[_0x0ae0('0x50')]=_['intersection'](_0x3a4757[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x104c81[_0x0ae0('0x50')]=_0x104c81[_0x0ae0('0x50')]['length']?_0x104c81[_0x0ae0('0x50')]:_0x3a4757[_0x0ae0('0x49')];if(!_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x6c')]('nolimit')){_0x104c81['limit']=qs[_0x0ae0('0x31')](_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x104c81['offset']=qs[_0x0ae0('0x30')](_0x59ebb0[_0x0ae0('0x4b')]['offset']);}_0x104c81[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x54')]);_0x104c81['where']=qs[_0x0ae0('0x4d')](_[_0x0ae0('0x56')](_0x59ebb0[_0x0ae0('0x4b')],_0x3a4757[_0x0ae0('0x4d')]));_0x104c81['where'][_0x0ae0('0x67')]=_0x5c845f['id'];if(_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0x104c81[_0x0ae0('0x55')]=_[_0x0ae0('0x59')](_0x104c81[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x104c81['attributes'],function(_0x4e34d8){var _0x1fd36b={};_0x1fd36b[_0x4e34d8]={'$like':'%'+_0x59ebb0['query'][_0x0ae0('0x57')]+'%'};return _0x1fd36b;})});}_0x104c81=_['merge']({},_0x104c81,_0x59ebb0[_0x0ae0('0x5a')]);return db[_0x0ae0('0x8e')]['count']({'where':_0x104c81[_0x0ae0('0x55')]})['then'](function(_0x36e6bf){_0x258e94[_0x0ae0('0x32')]=_0x36e6bf;if(_0x59ebb0['query']['includeAll']){_0x104c81['include']=[{'model':db[_0x0ae0('0x91')],'as':_0x0ae0('0x92'),'required':![]},{'model':db[_0x0ae0('0x93')],'as':_0x0ae0('0x94'),'attributes':['name',_0x0ae0('0x95'),_0x0ae0('0x96')],'required':![]},{'model':db[_0x0ae0('0x97')],'as':_0x0ae0('0x98'),'attributes':['id',_0x0ae0('0x3e'),_0x0ae0('0x99')],'where':_0x59ebb0['query'][_0x0ae0('0x9a')]?{'id':_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x9a')]}:undefined,'required':_0x59ebb0[_0x0ae0('0x4b')]['tag']?!![]:![]}];}return db[_0x0ae0('0x8e')][_0x0ae0('0x5b')](_0x104c81);})[_0x0ae0('0x38')](function(_0x36fceb){_0x258e94['rows']=_0x36fceb;return _0x258e94;});}})['then'](respondWithFilteredResult(_0x1e64f5,_0x104c81))['catch'](handleError(_0x1e64f5,null));};exports['addApplications']=function(_0x3efa38,_0x3dc525,_0x1bb694){return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x3efa38[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x3dc525,null))[_0x0ae0('0x38')](function(_0x12b86c){if(_0x12b86c){return db[_0x0ae0('0x9b')][_0x0ae0('0x9c')](function(_0x513f74){return db[_0x0ae0('0x9d')][_0x0ae0('0x39')]({'where':{'MailAccountId':_0x3efa38[_0x0ae0('0x5e')]['id']},'transaction':_0x513f74})[_0x0ae0('0x38')](function(_0x30688a){var _0x28f959=_[_0x0ae0('0x4a')](_0x3efa38[_0x0ae0('0x64')],function(_0x5d21e8){_0x5d21e8[_0x0ae0('0x67')]=_0x3efa38[_0x0ae0('0x5e')]['id'];return _0x5d21e8;});return db[_0x0ae0('0x9d')]['bulkCreate'](_0x28f959,{'transaction':_0x513f74});});})['then'](function(){return db[_0x0ae0('0x9d')][_0x0ae0('0x9e')]({'where':{'MailAccountId':_0x3efa38['params']['id']},'order':_0x0ae0('0x9f')});});}})[_0x0ae0('0x38')](respondWithResult(_0x3dc525,null))[_0x0ae0('0x5c')](handleError(_0x3dc525,null));};exports[_0x0ae0('0xa0')]=function(_0x287081,_0x44280c,_0x4ebc13){var _0x3a321b={};var _0x5236cd={};var _0x5619a8;var _0x138726;return db['MailAccount'][_0x0ae0('0x6b')]({'where':{'id':_0x287081['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x44280c,null))[_0x0ae0('0x38')](function(_0x49e0fa){if(_0x49e0fa){_0x5619a8=_0x49e0fa;_0x5236cd[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db['MailApplication'][_0x0ae0('0x46')]);_0x5236cd[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x287081[_0x0ae0('0x4b')]);_0x5236cd[_0x0ae0('0x4d')]=_['intersection'](_0x5236cd[_0x0ae0('0x49')],_0x5236cd[_0x0ae0('0x4b')]);_0x3a321b[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x5236cd[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x3a321b['attributes']=_0x3a321b['attributes'][_0x0ae0('0x51')]?_0x3a321b[_0x0ae0('0x50')]:_0x5236cd['model'];_0x3a321b['order']=qs['sort'](_0x287081[_0x0ae0('0x4b')]['sort']);_0x3a321b[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_['pick'](_0x287081[_0x0ae0('0x4b')],_0x5236cd[_0x0ae0('0x4d')]));if(_0x287081[_0x0ae0('0x4b')]['filter']){_0x3a321b['where']=_[_0x0ae0('0x59')](_0x3a321b['where'],{'$or':_[_0x0ae0('0x4a')](_0x3a321b[_0x0ae0('0x50')],function(_0x2f7870){var _0x45b42d={};_0x45b42d[_0x2f7870]={'$like':'%'+_0x287081[_0x0ae0('0x4b')]['filter']+'%'};return _0x45b42d;})});}_0x3a321b=_[_0x0ae0('0x59')]({},_0x3a321b,_0x287081[_0x0ae0('0x5a')]);return _0x5619a8['getApplications'](_0x3a321b);}})[_0x0ae0('0x38')](function(_0x4097be){if(_0x4097be){_0x138726=_0x4097be[_0x0ae0('0x51')];if(!_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x3a321b[_0x0ae0('0x31')]=qs['limit'](_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x3a321b[_0x0ae0('0x30')]=qs['offset'](_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}return _0x5619a8[_0x0ae0('0xa0')](_0x3a321b);}})[_0x0ae0('0x38')](function(_0x430bbd){if(_0x430bbd){return _0x430bbd?{'count':_0x138726,'rows':_0x430bbd}:null;}})[_0x0ae0('0x38')](respondWithResult(_0x44280c,null))[_0x0ae0('0x5c')](handleError(_0x44280c,null));};exports[_0x0ae0('0xa1')]=function(_0x1de84c,_0x4615c7,_0x22cd24){var _0x5b72d8={'raw':!![],'where':{}};var _0x2c2d14={};var _0x42c15f={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')]['findOne']({'where':{'id':_0x1de84c[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x4615c7,null))['then'](function(_0x4bd4d2){if(_0x4bd4d2){_0x2c2d14['model']=_[_0x0ae0('0x4c')](db[_0x0ae0('0xa2')][_0x0ae0('0x46')]);_0x2c2d14[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x1de84c[_0x0ae0('0x4b')]);_0x2c2d14['filters']=_['intersection'](_0x2c2d14['model'],_0x2c2d14[_0x0ae0('0x4b')]);_0x5b72d8['attributes']=_['intersection'](_0x2c2d14[_0x0ae0('0x49')],qs['fields'](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x5b72d8[_0x0ae0('0x50')]=_0x5b72d8['attributes'][_0x0ae0('0x51')]?_0x5b72d8[_0x0ae0('0x50')]:_0x2c2d14['model'];if(!_0x1de84c['query'][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x5b72d8[_0x0ae0('0x31')]=qs[_0x0ae0('0x31')](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x5b72d8[_0x0ae0('0x30')]=qs[_0x0ae0('0x30')](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}_0x5b72d8[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x54')]);_0x5b72d8[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_['pick'](_0x1de84c[_0x0ae0('0x4b')],_0x2c2d14[_0x0ae0('0x4d')]));_0x5b72d8[_0x0ae0('0x55')]['MailAccountId']=_0x4bd4d2['id'];if(_0x1de84c[_0x0ae0('0x4b')]['filter']){_0x5b72d8[_0x0ae0('0x55')]=_['merge'](_0x5b72d8['where'],{'$or':_[_0x0ae0('0x4a')](_0x5b72d8[_0x0ae0('0x50')],function(_0x5929de){var _0x48eda6={};_0x48eda6[_0x5929de]={'$like':'%'+_0x1de84c['query'][_0x0ae0('0x57')]+'%'};return _0x48eda6;})});}if(_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0xa3')]){var _0x409521=_0x1de84c['query']['$gte'][_0x0ae0('0xa4')](',');var _0x51c456={};_0x51c456[_0x409521[0x0]]={'$gte':moment(_0x409521[0x1])[_0x0ae0('0xa5')](_0x0ae0('0xa6'))};_0x5b72d8['where']=_[_0x0ae0('0x59')](_0x5b72d8['where'],_0x51c456);}_0x5b72d8=_[_0x0ae0('0x59')]({},_0x5b72d8,_0x1de84c[_0x0ae0('0x5a')]);return db[_0x0ae0('0xa2')][_0x0ae0('0x32')]({'where':_0x5b72d8[_0x0ae0('0x55')]})['then'](function(_0x5b07e2){_0x42c15f[_0x0ae0('0x32')]=_0x5b07e2;if(_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x61')]){_0x5b72d8[_0x0ae0('0x62')]=[{'all':!![]}];}return db[_0x0ae0('0xa2')]['findAll'](_0x5b72d8);})[_0x0ae0('0x38')](function(_0x2c536f){if(_0x1de84c['query'][_0x0ae0('0xa7')]===_0x0ae0('0xa8')){for(var _0x3a3c2f=0x0;_0x3a3c2f<_0x2c536f[_0x0ae0('0x51')];_0x3a3c2f++){_0x2c536f[_0x3a3c2f][_0x0ae0('0x64')]=juice(_0x2c536f[_0x3a3c2f][_0x0ae0('0x64')]);}}_0x42c15f[_0x0ae0('0x6d')]=_0x2c536f;return _0x42c15f;});}})[_0x0ae0('0x38')](respondWithFilteredResult(_0x4615c7,_0x5b72d8))[_0x0ae0('0x5c')](handleError(_0x4615c7,null));};exports[_0x0ae0('0x3f')]=function(_0x2b87a8,_0x32035a,_0xf41669){var _0x10d1da,_0x3eea33={},_0x482968;if(_0x2b87a8[_0x0ae0('0x64')]['to']){_0x482968=_0x2b87a8[_0x0ae0('0x64')]['to']['split'](',')[0x0];}return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x2b87a8[_0x0ae0('0x5e')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x0ae0('0x91')],'as':_0x0ae0('0xa9'),'where':{'email':_0x482968},'limit':0x1,'order':[[_0x0ae0('0xaa'),_0x0ae0('0xab')]]}]},{'model':db[_0x0ae0('0x42')],'as':_0x0ae0('0x43'),'raw':!![]}]})[_0x0ae0('0x38')](handleEntityNotFound(_0x32035a,null))['then'](function(_0x5e0f55){if(_0x5e0f55){_0x10d1da=_0x5e0f55;if(_0x5e0f55['Smtp']){if(_[_0x0ae0('0x75')](_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xac')])){_0x2b87a8[_0x0ae0('0x64')]['from']=util[_0x0ae0('0xa5')](_0x0ae0('0xad'),_0x5e0f55[_0x0ae0('0x3e')],_0x5e0f55['email']||_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7a')]);}if(_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')]&&_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x0ae0('0x51')]){for(var _0x411c2a=0x0;_0x411c2a<_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x0ae0('0x51')];_0x411c2a+=0x1){_0x2b87a8[_0x0ae0('0x64')]['attachments'][_0x411c2a]={'filename':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x411c2a]['name'],'path':path[_0x0ae0('0xaf')](config[_0x0ae0('0xb0')],_0x0ae0('0xb1'),_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x411c2a][_0x0ae0('0xb2')])};}}var _0x52fe44={'tls':{'rejectUnauthorized':![]}};if(_[_0x0ae0('0x75')](_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x82')])){if(_0x5e0f55['Smtp'][_0x0ae0('0x7f')]){_0x52fe44[_0x0ae0('0xb3')]={'user':_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7a')],'pass':_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7d')]};}_0x52fe44['host']=_0x5e0f55[_0x0ae0('0x43')]['host'];_0x52fe44['port']=_0x5e0f55['Smtp']['port'];_0x52fe44['secure']=_0x5e0f55['Smtp']['secure'];}else{_0x52fe44['service']=_0x5e0f55[_0x0ae0('0x43')]['service'];_0x52fe44['auth']={'user':_0x5e0f55['Smtp'][_0x0ae0('0x7a')],'pass':_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7d')]};}return respondWithRpcPromise(_0x0ae0('0xb4'),_0x0ae0('0xb5'),{'account':_0x52fe44,'message':_0x2b87a8['body']});}else{throw new Error(_0x0ae0('0xb6'));}}})[_0x0ae0('0x38')](function(_0xf84780){if(_0xf84780){_0x3eea33=_0xf84780;if(_0x10d1da[_0x0ae0('0xb7')]){if(_0x10d1da[_0x0ae0('0xb7')][_0x0ae0('0xa9')][_0x0ae0('0x51')]){return _0x10d1da[_0x0ae0('0xb7')][_0x0ae0('0xa9')][0x0];}else{return db[_0x0ae0('0x91')]['create'](_[_0x0ae0('0x1c')](_0x2b87a8['body'],{'firstName':_0x2b87a8['body']['to'],'email':_0x2b87a8[_0x0ae0('0x64')]['to'],'phone':_0x2b87a8[_0x0ae0('0x64')]['to'],'ListId':_0x10d1da[_0x0ae0('0x74')]}));}}else{throw new Error(_0x0ae0('0xb6'));}}})[_0x0ae0('0x38')](function(_0x2971b0){if(_0x2971b0){var _0x3efac2={'UserId':_0x2b87a8['user']['id'],'ContactId':_0x2971b0['id'],'MailAccountId':_0x10d1da['id'],'inReplyTo':_0x3eea33[_0x0ae0('0xb8')],'to':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xac')],'cc':_0x2b87a8[_0x0ae0('0x64')]['cc'],'subject':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xb9')],'attach':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xba')],'firstMsgDirection':_0x0ae0('0xbb'),'lastMsgAt':moment()[_0x0ae0('0xa5')](_0x0ae0('0xa6')),'lastMsgDirection':'out','Messages':[_[_0x0ae0('0x59')](_0x2b87a8[_0x0ae0('0x64')],{'messageId':_0x3eea33['messageId'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x10d1da['id'],'UserId':_0x2b87a8['user']['id'],'ContactId':_0x2971b0['id']})]};if(_0x2b87a8[_0x0ae0('0x64')]['Interaction']){_0x3efac2=_[_0x0ae0('0x59')](_0x3efac2,_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xbc')]);}return db[_0x0ae0('0x8e')][_0x0ae0('0x69')](_0x3efac2,{'include':[{'model':db['MailMessage'],'as':'Messages'}]});}})[_0x0ae0('0x38')](respondWithResult(_0x32035a,null))[_0x0ae0('0x5c')](handleError(_0x32035a,null));};exports[_0x0ae0('0xbd')]=function(_0x20c363,_0x15a951,_0x3a60c4){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x20c363[_0x0ae0('0x5e')]['id']},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x15a951,null))[_0x0ae0('0x38')](function(_0x26473e){if(_0x26473e&&_0x26473e[_0x0ae0('0x43')]){var _0x5bd2f5={'id':_0x26473e['id'],'tls':{'rejectUnauthorized':![]}};if(_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x82')]){_0x5bd2f5[_0x0ae0('0x82')]=_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x82')];}else{_0x5bd2f5[_0x0ae0('0x80')]=_0x26473e[_0x0ae0('0x43')]['host'];_0x5bd2f5['port']=_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x81')];_0x5bd2f5['secure']=_0x26473e[_0x0ae0('0x43')]['secure'];}if(_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x7f')]){_0x5bd2f5[_0x0ae0('0xb3')]={'user':_0x26473e['Smtp']['user'],'pass':_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x7d')]};}return respondWithRpcPromise(_0x0ae0('0xbe'),_0x0ae0('0xbd'),{'account':_0x5bd2f5});}})[_0x0ae0('0x38')](respondWithResult(_0x15a951,null))[_0x0ae0('0x5c')](handleError(_0x15a951,null));};exports['destroy']=function(_0x42484d,_0x135bd6){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x42484d['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x135bd6,null))[_0x0ae0('0x38')](function(_0x3cc46c){if(_0x3cc46c&&_0x3cc46c['service']){throw new db[(_0x0ae0('0xbf'))][(_0x0ae0('0xc0'))](_0x0ae0('0xc1'));}return _0x3cc46c;})[_0x0ae0('0x38')](removeEntity(_0x135bd6,null))[_0x0ae0('0x5c')](handleError(_0x135bd6,null));};exports[_0x0ae0('0xc2')]=function(_0x523373,_0x360e83,_0x366399){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x523373[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x360e83,null))[_0x0ae0('0x38')](function(_0x43df2f){if(_0x43df2f){return _0x43df2f[_0x0ae0('0xc2')](_0x523373[_0x0ae0('0x64')][_0x0ae0('0x72')],_[_0x0ae0('0x8f')](_0x523373[_0x0ae0('0x64')],[_0x0ae0('0x72'),'id'])||{})[_0x0ae0('0xc3')](function(_0x2aebc2){for(var _0x54777a=0x0;_0x54777a<_0x523373['body'][_0x0ae0('0x72')][_0x0ae0('0x51')];_0x54777a+=0x1){socket[_0x0ae0('0xc4')](_0x0ae0('0xc5'),{'UserId':Number(_0x523373[_0x0ae0('0x64')][_0x0ae0('0x72')][_0x54777a]),'MailAccountId':Number(_0x523373[_0x0ae0('0x5e')]['id'])});}return _0x2aebc2;});}})[_0x0ae0('0x38')](respondWithResult(_0x360e83,null))[_0x0ae0('0x5c')](handleError(_0x360e83,null));};exports[_0x0ae0('0xc6')]=function(_0x1c5f5a,_0x1902a9,_0x2352b3){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x1c5f5a[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x1902a9,null))[_0x0ae0('0x38')](function(_0x40f226){if(_0x40f226){return _0x40f226[_0x0ae0('0xc6')](_0x1c5f5a[_0x0ae0('0x4b')][_0x0ae0('0x72')])[_0x0ae0('0x38')](function(){if(_[_0x0ae0('0xc7')](_0x1c5f5a[_0x0ae0('0x4b')][_0x0ae0('0x72')])){for(var _0x130566=0x0;_0x130566<_0x1c5f5a[_0x0ae0('0x4b')][_0x0ae0('0x72')]['length'];_0x130566+=0x1){socket[_0x0ae0('0xc4')]('userMailAccount:remove',{'UserId':Number(_0x1c5f5a['query'][_0x0ae0('0x72')][_0x130566]),'MailAccountId':Number(_0x1c5f5a['params']['id'])});}}else{socket[_0x0ae0('0xc4')](_0x0ae0('0xc8'),{'UserId':Number(_0x1c5f5a[_0x0ae0('0x4b')]['ids']),'MailAccountId':Number(_0x1c5f5a[_0x0ae0('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x1902a9,null))[_0x0ae0('0x5c')](handleError(_0x1902a9,null));};exports['getAgents']=function(_0x4ff711,_0x34b476,_0x12c14b){var _0x50bb50={};var _0x59b24d={};var _0x11a458;var _0x1f920b;return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x4ff711[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x34b476,null))['then'](function(_0x2d2467){if(_0x2d2467){_0x11a458=_0x2d2467;_0x59b24d['model']=_[_0x0ae0('0x4c')](db[_0x0ae0('0x93')][_0x0ae0('0x46')]);_0x59b24d[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x4ff711[_0x0ae0('0x4b')]);_0x59b24d[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x59b24d[_0x0ae0('0x49')],_0x59b24d[_0x0ae0('0x4b')]);_0x50bb50[_0x0ae0('0x50')]=_['intersection'](_0x59b24d[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x4ff711['query'][_0x0ae0('0x4f')]));_0x50bb50[_0x0ae0('0x50')]=_0x50bb50['attributes']['length']?_0x50bb50[_0x0ae0('0x50')]:_0x59b24d[_0x0ae0('0x49')];_0x50bb50[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x4ff711['query'][_0x0ae0('0x54')]);_0x50bb50['where']=qs[_0x0ae0('0x4d')](_[_0x0ae0('0x56')](_0x4ff711[_0x0ae0('0x4b')],_0x59b24d['filters']));if(_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0x50bb50[_0x0ae0('0x55')]=_[_0x0ae0('0x59')](_0x50bb50[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x50bb50['attributes'],function(_0x3ff57d){var _0x495723={};_0x495723[_0x3ff57d]={'$like':'%'+_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x495723;})});}_0x50bb50=_['merge']({},_0x50bb50,_0x4ff711['options']);return _0x11a458[_0x0ae0('0xc9')](_0x50bb50);}})[_0x0ae0('0x38')](function(_0x1636ec){if(_0x1636ec){_0x1f920b=_0x1636ec[_0x0ae0('0x51')];if(!_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x50bb50[_0x0ae0('0x31')]=qs[_0x0ae0('0x31')](_0x4ff711[_0x0ae0('0x4b')]['limit']);_0x50bb50['offset']=qs[_0x0ae0('0x30')](_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}return _0x11a458[_0x0ae0('0xc9')](_0x50bb50);}})[_0x0ae0('0x38')](function(_0x452172){if(_0x452172){return _0x452172?{'count':_0x1f920b,'rows':_0x452172}:null;}})[_0x0ae0('0x38')](respondWithResult(_0x34b476,null))[_0x0ae0('0x5c')](handleError(_0x34b476,null));};
\ No newline at end of file
index a443136..7ab1b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aa3=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailAccount','setMaxListeners'];(function(_0x152e9a,_0x34c579){var _0x42633e=function(_0x13c6d4){while(--_0x13c6d4){_0x152e9a['push'](_0x152e9a['shift']());}};_0x42633e(++_0x34c579);}(_0x2aa3,0x83));var _0x32aa=function(_0x41d559,_0x28a468){_0x41d559=_0x41d559-0x0;var _0x456832=_0x2aa3[_0x41d559];return _0x456832;};'use strict';var EventEmitter=require(_0x32aa('0x0'));var MailAccount=require(_0x32aa('0x1'))['db'][_0x32aa('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x32aa('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x32aa('0x4')};function emitEvent(_0x2b754c){return function(_0x13843c,_0x33612d,_0x22e989){MailAccountEvents[_0x32aa('0x5')](_0x2b754c+':'+_0x13843c['id'],_0x13843c);MailAccountEvents['emit'](_0x2b754c,_0x13843c);_0x22e989(null);};}for(var e in events){if(events[_0x32aa('0x6')](e)){var event=events[e];MailAccount[_0x32aa('0x7')](e,emitEvent(event));}}module[_0x32aa('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0xf693=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','MailAccount','setMaxListeners','save','update'];(function(_0x281799,_0x14d871){var _0x1178be=function(_0x1f8db0){while(--_0x1f8db0){_0x281799['push'](_0x281799['shift']());}};_0x1178be(++_0x14d871);}(_0xf693,0x181));var _0x3f69=function(_0x4ff1ce,_0x4f0977){_0x4ff1ce=_0x4ff1ce-0x0;var _0xa36150=_0xf693[_0x4ff1ce];return _0xa36150;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x3f69('0x0'))['db'][_0x3f69('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x3f69('0x2')](0x0);var events={'afterCreate':_0x3f69('0x3'),'afterUpdate':_0x3f69('0x4'),'afterDestroy':_0x3f69('0x5')};function emitEvent(_0x414ca5){return function(_0x527646,_0xf2fdd8,_0x300282){MailAccountEvents[_0x3f69('0x6')](_0x414ca5+':'+_0x527646['id'],_0x527646);MailAccountEvents[_0x3f69('0x6')](_0x414ca5,_0x527646);_0x300282(null);};}for(var e in events){if(events[_0x3f69('0x7')](e)){var event=events[e];MailAccount[_0x3f69('0x8')](e,emitEvent(event));}}module[_0x3f69('0x9')]=MailAccountEvents;
\ No newline at end of file
index f5a2a0d..fa141f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb27a=['MailAccount','mail_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailAccount.attributes','exports','define'];(function(_0x3048b3,_0x41ab04){var _0x2f3075=function(_0x3801ed){while(--_0x3801ed){_0x3048b3['push'](_0x3048b3['shift']());}};_0x2f3075(++_0x41ab04);}(_0xb27a,0xf2));var _0xab27=function(_0x10f6e8,_0x351db6){_0x10f6e8=_0x10f6e8-0x0;var _0x35bb3c=_0xb27a[_0x10f6e8];return _0x35bb3c;};'use strict';var _=require(_0xab27('0x0'));var util=require(_0xab27('0x1'));var logger=require(_0xab27('0x2'))(_0xab27('0x3'));var moment=require(_0xab27('0x4'));var BPromise=require(_0xab27('0x5'));var rp=require(_0xab27('0x6'));var fs=require('fs');var path=require(_0xab27('0x7'));var rimraf=require(_0xab27('0x8'));var config=require(_0xab27('0x9'));var attributes=require(_0xab27('0xa'));module[_0xab27('0xb')]=function(_0x100cbb,_0x180b22){return _0x100cbb[_0xab27('0xc')](_0xab27('0xd'),attributes,{'tableName':_0xab27('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa48b=['../../config/environment','./mailAccount.attributes','exports','define','mail_accounts','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa48b,0x1cd));var _0xba48=function(_0x587ba2,_0x42eb40){_0x587ba2=_0x587ba2-0x0;var _0x50ec73=_0xa48b[_0x587ba2];return _0x50ec73;};'use strict';var _=require('lodash');var util=require(_0xba48('0x0'));var logger=require(_0xba48('0x1'))(_0xba48('0x2'));var moment=require(_0xba48('0x3'));var BPromise=require(_0xba48('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba48('0x5'));var rimraf=require(_0xba48('0x6'));var config=require(_0xba48('0x7'));var attributes=require(_0xba48('0x8'));module[_0xba48('0x9')]=function(_0x41ebc2,_0x2da523){return _0x41ebc2[_0xba48('0xa')]('MailAccount',attributes,{'tableName':_0xba48('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 922b1e1..e94c5a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc74a=['error','code','MailAccount,\x20%s,\x20%s','message','result','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','include','map','model','info','ShowMailAccount','MailAccount','find','NotifyMailAccount','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','body','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','account','CmList','List','Contacts','DESC','MailApplication','Applications','Smtp','get','omit','applications','list','orderBy','asc','autoclose','push','close','*,*,*,*','List\x20not\x20found','messageId','generate','subject','attach','format','MailInteraction','MailMessage','Messages','create','spread','update','YYYY-MM-DD\x20HH:mm:ss','interaction','created','contact','attachments','originTo','originCc','bcc','originChannel','ChatOfflineMessageId','Attachments','name','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','localhost','./mailAccount.socket','register','request','then','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4105b4,_0x58b9cd){var _0x20f545=function(_0x4c8314){while(--_0x4c8314){_0x4105b4['push'](_0x4105b4['shift']());}};_0x20f545(++_0x58b9cd);}(_0xc74a,0x18b));var _0xac74=function(_0x4b3e90,_0x576be8){_0x4b3e90=_0x4b3e90-0x0;var _0x445f11=_0xc74a[_0x4b3e90];return _0x445f11;};'use strict';var _=require(_0xac74('0x0'));var util=require(_0xac74('0x1'));var moment=require(_0xac74('0x2'));var BPromise=require(_0xac74('0x3'));var rs=require(_0xac74('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xac74('0x5'))['db'];var utils=require(_0xac74('0x6'));var logger=require(_0xac74('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xac74('0x8'));var client=jayson[_0xac74('0x9')][_0xac74('0xa')]({'port':0x232c});config[_0xac74('0xb')]=_['defaults'](config[_0xac74('0xb')],{'host':_0xac74('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xac74('0xb')]));require(_0xac74('0xd'))[_0xac74('0xe')](socket);function respondWithRpcPromise(_0xcf2f9b,_0x2c3bac,_0x460148){return new BPromise(function(_0x480046,_0x59438a){return client[_0xac74('0xf')](_0xcf2f9b,_0x460148)[_0xac74('0x10')](function(_0x6164cc){logger['info']('MailAccount,\x20%s,\x20%s',_0x2c3bac,_0xac74('0x11'));logger[_0xac74('0x12')](_0xac74('0x13'),_0x2c3bac,_0xac74('0x11'),JSON[_0xac74('0x14')](_0x6164cc));if(_0x6164cc[_0xac74('0x15')]){if(_0x6164cc[_0xac74('0x15')][_0xac74('0x16')]===0x1f4){logger[_0xac74('0x15')](_0xac74('0x17'),_0x2c3bac,_0x6164cc[_0xac74('0x15')][_0xac74('0x18')]);return _0x59438a(_0x6164cc['error'][_0xac74('0x18')]);}logger[_0xac74('0x15')](_0xac74('0x17'),_0x2c3bac,_0x6164cc[_0xac74('0x15')][_0xac74('0x18')]);return _0x480046(_0x6164cc['error']['message']);}else{logger['info'](_0xac74('0x17'),_0x2c3bac,_0xac74('0x11'));_0x480046(_0x6164cc[_0xac74('0x19')]['message']);}})[_0xac74('0x1a')](function(_0x1f4ac0){logger[_0xac74('0x15')](_0xac74('0x17'),_0x2c3bac,_0x1f4ac0);_0x59438a(_0x1f4ac0);});});}exports[_0xac74('0x1b')]=function(_0x5b9ae7){var _0x781e39=this;return new Promise(function(_0x1454d4,_0x3d1020){return db['MailAccount'][_0xac74('0x1c')]({'raw':_0x5b9ae7[_0xac74('0x1d')]?_0x5b9ae7['options'][_0xac74('0x1e')]===undefined?!![]:![]:!![],'where':_0x5b9ae7[_0xac74('0x1d')]?_0x5b9ae7['options'][_0xac74('0x1f')]||null:null,'attributes':_0x5b9ae7[_0xac74('0x1d')]?_0x5b9ae7[_0xac74('0x1d')][_0xac74('0x20')]||null:null,'limit':_0x5b9ae7['options']?_0x5b9ae7[_0xac74('0x1d')][_0xac74('0x21')]||null:null,'include':_0x5b9ae7['options']?_0x5b9ae7['options'][_0xac74('0x22')]?_[_0xac74('0x23')](_0x5b9ae7[_0xac74('0x1d')]['include'],function(_0x588dc3){return{'model':db[_0x588dc3[_0xac74('0x24')]],'as':_0x588dc3['as'],'attributes':_0x588dc3['attributes'],'include':_0x588dc3[_0xac74('0x22')]?_[_0xac74('0x23')](_0x588dc3[_0xac74('0x22')],function(_0x1c1d42){return{'model':db[_0x1c1d42[_0xac74('0x24')]],'as':_0x1c1d42['as'],'attributes':_0x1c1d42['attributes'],'include':_0x1c1d42[_0xac74('0x22')]?_[_0xac74('0x23')](_0x1c1d42['include'],function(_0x2b560e){return{'model':db[_0x2b560e[_0xac74('0x24')]],'as':_0x2b560e['as'],'attributes':_0x2b560e[_0xac74('0x20')]};}):[]};}):[]};}):[]:[]})[_0xac74('0x10')](function(_0x3837e9){logger[_0xac74('0x25')]('GetMailAccount',_0x5b9ae7);logger['debug'](_0xac74('0x1b'),_0x5b9ae7,JSON['stringify'](_0x3837e9));_0x1454d4(_0x3837e9);})['catch'](function(_0x52740d){logger[_0xac74('0x15')](_0xac74('0x1b'),_0x52740d['message'],_0x5b9ae7);_0x3d1020(_0x781e39[_0xac74('0x15')](0x1f4,_0x52740d[_0xac74('0x18')]));});});};exports[_0xac74('0x26')]=function(_0x454eb6){var _0x3c89bf=this;return new Promise(function(_0x4e27a8,_0x48cc5e){return db[_0xac74('0x27')][_0xac74('0x28')]({'raw':_0x454eb6[_0xac74('0x1d')]?_0x454eb6[_0xac74('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x454eb6[_0xac74('0x1d')]?_0x454eb6[_0xac74('0x1d')][_0xac74('0x1f')]||null:null,'attributes':_0x454eb6[_0xac74('0x1d')]?_0x454eb6[_0xac74('0x1d')][_0xac74('0x20')]||null:null,'include':_0x454eb6['options']?_0x454eb6[_0xac74('0x1d')][_0xac74('0x22')]?_[_0xac74('0x23')](_0x454eb6[_0xac74('0x1d')][_0xac74('0x22')],function(_0x2ee05b){return{'model':db[_0x2ee05b['model']],'as':_0x2ee05b['as'],'attributes':_0x2ee05b[_0xac74('0x20')],'include':_0x2ee05b[_0xac74('0x22')]?_[_0xac74('0x23')](_0x2ee05b[_0xac74('0x22')],function(_0x4d54a8){return{'model':db[_0x4d54a8[_0xac74('0x24')]],'as':_0x4d54a8['as'],'attributes':_0x4d54a8[_0xac74('0x20')],'include':_0x4d54a8[_0xac74('0x22')]?_[_0xac74('0x23')](_0x4d54a8[_0xac74('0x22')],function(_0x394788){return{'model':db[_0x394788[_0xac74('0x24')]],'as':_0x394788['as'],'attributes':_0x394788[_0xac74('0x20')]};}):[]};}):[]};}):[]:[]})[_0xac74('0x10')](function(_0x1deb0e){logger[_0xac74('0x25')](_0xac74('0x26'),_0x454eb6);logger[_0xac74('0x12')](_0xac74('0x26'),_0x454eb6,JSON[_0xac74('0x14')](_0x1deb0e));_0x4e27a8(_0x1deb0e);})['catch'](function(_0xf44a1b){logger[_0xac74('0x15')](_0xac74('0x26'),_0xf44a1b['message'],_0x454eb6);_0x48cc5e(_0x3c89bf['error'](0x1f4,_0xf44a1b[_0xac74('0x18')]));});});};exports[_0xac74('0x29')]=function(_0x211cf1){var _0x34d617=this;return new Promise(function(_0x2c810f,_0x1daee2){var _0x514272={'body':_0x211cf1['body'],'channel':_0xac74('0x2a')};var _0x31c5f8=_[_0xac74('0x2b')](_[_0xac74('0x2c')](db[_0xac74('0x2d')][_0xac74('0x2e')]),[_0xac74('0x2f'),_0xac74('0x30'),_0xac74('0x31'),_0xac74('0x32')]);var _0x62d841=![];if(_0x211cf1[_0xac74('0x33')]['id']){delete _0x211cf1[_0xac74('0x33')]['id'];}if(_[_0xac74('0x34')](_0x211cf1['body'][_0xac74('0x35')])){return _0x1daee2(_0x34d617[_0xac74('0x15')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xac74('0x34')](_0x211cf1[_0xac74('0x33')][_0xac74('0x33')])||_0x211cf1[_0xac74('0x33')][_0xac74('0x33')]===''){return _0x1daee2(_0x34d617[_0xac74('0x15')](0x1f4,_0xac74('0x36')));}if(_[_0xac74('0x34')](_0x211cf1[_0xac74('0x33')][_0xac74('0x37')])){return _0x1daee2(_0x34d617[_0xac74('0x15')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x31c5f8));}if(!_[_0xac74('0x38')](_0x31c5f8,_0x211cf1[_0xac74('0x33')][_0xac74('0x37')])){return _0x1daee2(_0x34d617[_0xac74('0x15')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x31c5f8));}var _0x225a94={};_0x225a94[_0x211cf1['body'][_0xac74('0x37')]]=_0x211cf1[_0xac74('0x33')][_0xac74('0x35')];return db[_0xac74('0x27')][_0xac74('0x28')]({'where':{'id':_0x211cf1[_0xac74('0x39')]['id']},'include':[{'model':db[_0xac74('0x3a')],'as':_0xac74('0x3b'),'include':[{'model':db[_0xac74('0x2d')],'as':_0xac74('0x3c'),'where':_0x225a94,'limit':0x1,'order':[[_0xac74('0x30'),_0xac74('0x3d')]]}]},{'model':db[_0xac74('0x3e')],'as':_0xac74('0x3f')},{'model':db['MailServerOut'],'as':_0xac74('0x40')}]})['then'](function(_0x2e1274){if(_0x2e1274&&_0x2e1274[_0xac74('0x3b')]){var _0x2f228a=_0x2e1274[_0xac74('0x41')]({'plain':!![]});_0x514272['account']=_[_0xac74('0x42')](_0x2f228a,[_0xac74('0x3f'),_0xac74('0x3b')]);_0x514272[_0xac74('0x43')]=_0x2f228a[_0xac74('0x3f')];_0x514272[_0xac74('0x44')]=_0x2f228a[_0xac74('0x3b')];_0x514272['applications']=_[_0xac74('0x45')](_0x514272[_0xac74('0x43')],['priority'],[_0xac74('0x46')]);if(_0x514272[_0xac74('0x39')]&&_0x514272['account'][_0xac74('0x47')]){_0x514272[_0xac74('0x43')][_0xac74('0x48')]({'id':0x0,'priority':_0x514272['applications']['length']+0x1,'app':_0xac74('0x49'),'appdata':_0xac74('0x47'),'interval':_0xac74('0x4a')});}if(_0x514272[_0xac74('0x39')][_0xac74('0x3f')]){delete _0x514272[_0xac74('0x39')]['Applications'];}if(_0x514272[_0xac74('0x39')][_0xac74('0x3b')]){delete _0x514272[_0xac74('0x39')][_0xac74('0x3b')];}if(_0x2f228a[_0xac74('0x3b')][_0xac74('0x3c')]['length']){return _0x2f228a[_0xac74('0x3b')][_0xac74('0x3c')][0x0];}var _0x4c383e=_['defaults'](_0x211cf1['body'],{'firstName':_0x211cf1['body']['from'],'ListId':_0x2f228a[_0xac74('0x32')]});_0x4c383e[_0x211cf1['body'][_0xac74('0x37')]]=_0x211cf1['body'][_0xac74('0x35')];return db[_0xac74('0x2d')]['create'](_0x4c383e);}else{throw new Error(_0xac74('0x4b'));}})[_0xac74('0x10')](function(_0x54034f){_0x514272['contact']=_0x54034f;if(_0x54034f){if(!_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x4c')]){_0x211cf1['body'][_0xac74('0x18')]['messageId']=rs[_0xac74('0x4d')]()+'\x20'+_0x211cf1['body'][_0xac74('0x18')][_0xac74('0x35')];}var _0x1b2547={'ContactId':_0x54034f['id'],'MailAccountId':_0x211cf1['account']['id'],'inReplyTo':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')]['messageId'],'to':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')]['from'],'cc':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')]['cc'],'subject':_0x211cf1['body'][_0xac74('0x18')][_0xac74('0x4e')],'attach':_0x211cf1[_0xac74('0x33')]['message'][_0xac74('0x4f')],'lastMsgAt':moment()[_0xac74('0x50')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0xac74('0x51')][_0xac74('0x28')]({'where':{'closed':![],'MailAccountId':_0x211cf1[_0xac74('0x39')]['id']},'include':[{'model':db[_0xac74('0x52')],'as':_0xac74('0x53'),'attributes':[_0xac74('0x4c')],'where':{'messageId':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')]['inReplyTo']}}]})[_0xac74('0x10')](function(_0x199992){if(_0x199992){return[_0x199992,![]];}return db[_0xac74('0x51')][_0xac74('0x54')](_0x1b2547)[_0xac74('0x10')](function(_0x582b56){return[_0x582b56,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xac74('0x55')](function(_0x2558e7,_0x3b50af){if(_0x2558e7){_0x62d841=_0x3b50af;if(!_0x3b50af){return _0x2558e7[_0xac74('0x56')]({'inReplyTo':_0x211cf1[_0xac74('0x33')]['message'][_0xac74('0x4c')],'to':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x35')],'cc':_0x211cf1['body'][_0xac74('0x18')]['cc'],'subject':_0x211cf1['body'][_0xac74('0x18')]['subject'],'attach':_0x2558e7[_0xac74('0x4f')]?_0x2558e7['attach']:_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x4f')],'substatus':null,'substatusAt':moment()['format'](_0xac74('0x57')),'lastMsgAt':moment()[_0xac74('0x50')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x2558e7;}}})[_0xac74('0x10')](function(_0x4aa49b){_0x514272['interaction']=_0x4aa49b[_0xac74('0x41')]({'plain':!![]});_0x514272[_0xac74('0x58')][_0xac74('0x59')]=_0x62d841;return db[_0xac74('0x52')][_0xac74('0x54')]({'body':_0x211cf1[_0xac74('0x33')][_0xac74('0x33')],'MailAccountId':_0x211cf1[_0xac74('0x39')]['id'],'MailInteractionId':_0x4aa49b['id'],'direction':'in','ContactId':_0x514272[_0xac74('0x5a')]['id'],'messageId':_0x211cf1[_0xac74('0x33')]['message'][_0xac74('0x4c')],'from':_0x211cf1['body']['message'][_0xac74('0x35')],'to':_0x211cf1['body'][_0xac74('0x18')]['to'],'cc':_0x211cf1[_0xac74('0x33')]['message']['cc'],'subject':_0x211cf1['body'][_0xac74('0x18')]['subject'],'attach':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x4f')],'Attachments':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x5b')],'originTo':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x5c')],'originCc':_0x211cf1['body'][_0xac74('0x18')][_0xac74('0x5d')],'bcc':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x5e')],'ChatWebsiteId':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')]['ChatWebsiteId']||null,'originChannel':_0x211cf1[_0xac74('0x33')]['message'][_0xac74('0x5f')]||'Email','ChatOfflineMessageId':_0x211cf1[_0xac74('0x33')][_0xac74('0x18')][_0xac74('0x60')]||null},{'include':[{'model':db['Attachment'],'as':_0xac74('0x61')}]});})[_0xac74('0x10')](function(_0x4109e5){_0x514272[_0xac74('0x18')]=_0x4109e5;if(_0x514272[_0xac74('0x58')]['UserId']){return db['User'][_0xac74('0x28')]({'attributes':['id',_0xac74('0x62')],'where':{'id':_0x514272[_0xac74('0x58')][_0xac74('0x63')]}})[_0xac74('0x10')](function(_0x4f7eee){if(_0x4f7eee){_0x514272[_0xac74('0x43')][_0xac74('0x64')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4f7eee[_0xac74('0x62')]+','+(_0x514272[_0xac74('0x39')][_0xac74('0x65')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xac74('0x66'),_0xac74('0x67'),_0x514272);});}return respondWithRpcPromise(_0xac74('0x66'),'startRouting',_0x514272);})[_0xac74('0x10')](function(_0x316969){_0x2c810f(_0x316969);})[_0xac74('0x1a')](function(_0x557eaf){_0x1daee2(_0x34d617[_0xac74('0x15')](0x1f4,_0x557eaf[_0xac74('0x18')]));});});};
\ No newline at end of file
+var _0x5b08=['ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','include','map','model','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','from','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','List','Contacts','DESC','Applications','MailServerOut','applications','list','orderBy','priority','asc','account','push','length','close','*,*,*,*','ListId','create','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','spread','update','attach','interaction','get','attachments','originCc','bcc','ChatWebsiteId','Attachment','Attachments','UserId','User','name','agent','Start','startRouting','lodash','randomstring'];(function(_0x7224a9,_0x22ac72){var _0x5bf544=function(_0x24e078){while(--_0x24e078){_0x7224a9['push'](_0x7224a9['shift']());}};_0x5bf544(++_0x22ac72);}(_0x5b08,0x1de));var _0x85b0=function(_0x5608df,_0xff2326){_0x5608df=_0x5608df-0x0;var _0x4c2e63=_0x5b08[_0x5608df];return _0x4c2e63;};'use strict';var _=require(_0x85b0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x85b0('0x1'));var fs=require('fs');var Redis=require(_0x85b0('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x85b0('0x3'))(_0x85b0('0x4'));var config=require(_0x85b0('0x5'));var jayson=require(_0x85b0('0x6'));var client=jayson[_0x85b0('0x7')][_0x85b0('0x8')]({'port':0x232c});config[_0x85b0('0x9')]=_[_0x85b0('0xa')](config[_0x85b0('0x9')],{'host':_0x85b0('0xb'),'port':0x18eb});var socket=require(_0x85b0('0xc'))(new Redis(config[_0x85b0('0x9')]));require(_0x85b0('0xd'))[_0x85b0('0xe')](socket);function respondWithRpcPromise(_0x284b47,_0x53272e,_0x2bf9dd){return new BPromise(function(_0xeed1d,_0x20c658){return client['request'](_0x284b47,_0x2bf9dd)[_0x85b0('0xf')](function(_0x72ef0d){logger[_0x85b0('0x10')](_0x85b0('0x11'),_0x53272e,_0x85b0('0x12'));logger[_0x85b0('0x13')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x53272e,_0x85b0('0x12'),JSON[_0x85b0('0x14')](_0x72ef0d));if(_0x72ef0d[_0x85b0('0x15')]){if(_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x16')]===0x1f4){logger['error'](_0x85b0('0x11'),_0x53272e,_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x17')]);return _0x20c658(_0x72ef0d['error']['message']);}logger['error'](_0x85b0('0x11'),_0x53272e,_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x17')]);return _0xeed1d(_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x17')]);}else{logger['info'](_0x85b0('0x11'),_0x53272e,_0x85b0('0x12'));_0xeed1d(_0x72ef0d[_0x85b0('0x18')][_0x85b0('0x17')]);}})[_0x85b0('0x19')](function(_0x5c0375){logger[_0x85b0('0x15')](_0x85b0('0x11'),_0x53272e,_0x5c0375);_0x20c658(_0x5c0375);});});}exports[_0x85b0('0x1a')]=function(_0x514a62){var _0x306247=this;return new Promise(function(_0xd8d872,_0xad0328){return db[_0x85b0('0x1b')][_0x85b0('0x1c')]({'raw':_0x514a62[_0x85b0('0x1d')]?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x1e')]===undefined?!![]:![]:!![],'where':_0x514a62['options']?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x1f')]||null:null,'attributes':_0x514a62['options']?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x20')]||null:null,'limit':_0x514a62[_0x85b0('0x1d')]?_0x514a62[_0x85b0('0x1d')]['limit']||null:null,'include':_0x514a62[_0x85b0('0x1d')]?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x514a62[_0x85b0('0x1d')][_0x85b0('0x21')],function(_0x1ce89e){return{'model':db[_0x1ce89e[_0x85b0('0x23')]],'as':_0x1ce89e['as'],'attributes':_0x1ce89e[_0x85b0('0x20')],'include':_0x1ce89e[_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x1ce89e[_0x85b0('0x21')],function(_0x6082d){return{'model':db[_0x6082d[_0x85b0('0x23')]],'as':_0x6082d['as'],'attributes':_0x6082d[_0x85b0('0x20')],'include':_0x6082d['include']?_[_0x85b0('0x22')](_0x6082d[_0x85b0('0x21')],function(_0x474683){return{'model':db[_0x474683['model']],'as':_0x474683['as'],'attributes':_0x474683['attributes']};}):[]};}):[]};}):[]:[]})[_0x85b0('0xf')](function(_0x1cfd29){logger[_0x85b0('0x10')](_0x85b0('0x1a'),_0x514a62);logger['debug'](_0x85b0('0x1a'),_0x514a62,JSON[_0x85b0('0x14')](_0x1cfd29));_0xd8d872(_0x1cfd29);})['catch'](function(_0x42e480){logger[_0x85b0('0x15')](_0x85b0('0x1a'),_0x42e480[_0x85b0('0x17')],_0x514a62);_0xad0328(_0x306247[_0x85b0('0x15')](0x1f4,_0x42e480[_0x85b0('0x17')]));});});};exports[_0x85b0('0x24')]=function(_0x557b2a){var _0x43c773=this;return new Promise(function(_0x22de28,_0x25b70d){return db['MailAccount']['find']({'raw':_0x557b2a['options']?_0x557b2a[_0x85b0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x557b2a[_0x85b0('0x1d')]?_0x557b2a[_0x85b0('0x1d')][_0x85b0('0x1f')]||null:null,'attributes':_0x557b2a['options']?_0x557b2a['options']['attributes']||null:null,'include':_0x557b2a[_0x85b0('0x1d')]?_0x557b2a[_0x85b0('0x1d')][_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x557b2a[_0x85b0('0x1d')]['include'],function(_0x8eadd2){return{'model':db[_0x8eadd2[_0x85b0('0x23')]],'as':_0x8eadd2['as'],'attributes':_0x8eadd2[_0x85b0('0x20')],'include':_0x8eadd2[_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x8eadd2['include'],function(_0x22efc2){return{'model':db[_0x22efc2[_0x85b0('0x23')]],'as':_0x22efc2['as'],'attributes':_0x22efc2[_0x85b0('0x20')],'include':_0x22efc2[_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x22efc2[_0x85b0('0x21')],function(_0x3d9ed5){return{'model':db[_0x3d9ed5[_0x85b0('0x23')]],'as':_0x3d9ed5['as'],'attributes':_0x3d9ed5['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b1af1){logger[_0x85b0('0x10')](_0x85b0('0x24'),_0x557b2a);logger[_0x85b0('0x13')](_0x85b0('0x24'),_0x557b2a,JSON[_0x85b0('0x14')](_0x3b1af1));_0x22de28(_0x3b1af1);})[_0x85b0('0x19')](function(_0x33e02e){logger[_0x85b0('0x15')](_0x85b0('0x24'),_0x33e02e[_0x85b0('0x17')],_0x557b2a);_0x25b70d(_0x43c773[_0x85b0('0x15')](0x1f4,_0x33e02e[_0x85b0('0x17')]));});});};exports[_0x85b0('0x25')]=function(_0x118618){var _0x442b49=this;return new Promise(function(_0x2cac49,_0x30349b){var _0x2732c3={'body':_0x118618[_0x85b0('0x26')],'channel':_0x85b0('0x27')};var _0x5520b4=_[_0x85b0('0x28')](_[_0x85b0('0x29')](db[_0x85b0('0x2a')][_0x85b0('0x2b')]),[_0x85b0('0x2c'),_0x85b0('0x2d'),'CompanyId','ListId']);var _0x362559=![];if(_0x118618[_0x85b0('0x26')]['id']){delete _0x118618[_0x85b0('0x26')]['id'];}if(_['isNil'](_0x118618[_0x85b0('0x26')][_0x85b0('0x2e')])){return _0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x85b0('0x2f')](_0x118618[_0x85b0('0x26')][_0x85b0('0x26')])||_0x118618[_0x85b0('0x26')][_0x85b0('0x26')]===''){return _0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x85b0('0x2f')](_0x118618[_0x85b0('0x26')][_0x85b0('0x30')])){return _0x30349b(_0x442b49['error'](0x1f4,_0x85b0('0x31')+_0x5520b4));}if(!_['includes'](_0x5520b4,_0x118618['body'][_0x85b0('0x30')])){return _0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,_0x85b0('0x32')+_0x5520b4));}var _0x29c997={};_0x29c997[_0x118618[_0x85b0('0x26')][_0x85b0('0x30')]]=_0x118618['body'][_0x85b0('0x2e')];return db[_0x85b0('0x1b')][_0x85b0('0x33')]({'where':{'id':_0x118618['account']['id']},'include':[{'model':db['CmList'],'as':_0x85b0('0x34'),'include':[{'model':db[_0x85b0('0x2a')],'as':_0x85b0('0x35'),'where':_0x29c997,'limit':0x1,'order':[[_0x85b0('0x2d'),_0x85b0('0x36')]]}]},{'model':db['MailApplication'],'as':_0x85b0('0x37')},{'model':db[_0x85b0('0x38')],'as':'Smtp'}]})[_0x85b0('0xf')](function(_0x693f64){if(_0x693f64&&_0x693f64['List']){var _0x97c6e2=_0x693f64['get']({'plain':!![]});_0x2732c3['account']=_['omit'](_0x97c6e2,[_0x85b0('0x37'),_0x85b0('0x34')]);_0x2732c3[_0x85b0('0x39')]=_0x97c6e2[_0x85b0('0x37')];_0x2732c3[_0x85b0('0x3a')]=_0x97c6e2[_0x85b0('0x34')];_0x2732c3['applications']=_[_0x85b0('0x3b')](_0x2732c3[_0x85b0('0x39')],[_0x85b0('0x3c')],[_0x85b0('0x3d')]);if(_0x2732c3[_0x85b0('0x3e')]&&_0x2732c3[_0x85b0('0x3e')]['autoclose']){_0x2732c3[_0x85b0('0x39')][_0x85b0('0x3f')]({'id':0x0,'priority':_0x2732c3[_0x85b0('0x39')][_0x85b0('0x40')]+0x1,'app':_0x85b0('0x41'),'appdata':'autoclose','interval':_0x85b0('0x42')});}if(_0x2732c3[_0x85b0('0x3e')][_0x85b0('0x37')]){delete _0x2732c3[_0x85b0('0x3e')]['Applications'];}if(_0x2732c3[_0x85b0('0x3e')][_0x85b0('0x34')]){delete _0x2732c3[_0x85b0('0x3e')][_0x85b0('0x34')];}if(_0x97c6e2[_0x85b0('0x34')][_0x85b0('0x35')][_0x85b0('0x40')]){return _0x97c6e2[_0x85b0('0x34')]['Contacts'][0x0];}var _0x1ad247=_[_0x85b0('0xa')](_0x118618[_0x85b0('0x26')],{'firstName':_0x118618['body'][_0x85b0('0x2e')],'ListId':_0x97c6e2[_0x85b0('0x43')]});_0x1ad247[_0x118618[_0x85b0('0x26')][_0x85b0('0x30')]]=_0x118618['body']['from'];return db[_0x85b0('0x2a')][_0x85b0('0x44')](_0x1ad247);}else{throw new Error(_0x85b0('0x45'));}})[_0x85b0('0xf')](function(_0x5e4f5d){_0x2732c3[_0x85b0('0x46')]=_0x5e4f5d;if(_0x5e4f5d){if(!_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['messageId']){_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x47')]=rs[_0x85b0('0x48')]()+'\x20'+_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x2e')];}var _0x24b223={'ContactId':_0x5e4f5d['id'],'MailAccountId':_0x118618[_0x85b0('0x3e')]['id'],'inReplyTo':_0x118618[_0x85b0('0x26')]['message'][_0x85b0('0x47')],'to':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x2e')],'cc':_0x118618[_0x85b0('0x26')]['message']['cc'],'subject':_0x118618['body']['message'][_0x85b0('0x49')],'attach':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['attach'],'lastMsgAt':moment()[_0x85b0('0x4a')](_0x85b0('0x4b')),'lastMsgDirection':'in'};return db[_0x85b0('0x4c')][_0x85b0('0x33')]({'where':{'closed':![],'MailAccountId':_0x118618[_0x85b0('0x3e')]['id']},'include':[{'model':db[_0x85b0('0x4d')],'as':_0x85b0('0x4e'),'attributes':['messageId'],'where':{'messageId':_0x118618[_0x85b0('0x26')]['message']['inReplyTo']}}]})[_0x85b0('0xf')](function(_0x5240e3){if(_0x5240e3){return[_0x5240e3,![]];}return db[_0x85b0('0x4c')][_0x85b0('0x44')](_0x24b223)[_0x85b0('0xf')](function(_0xd05b40){return[_0xd05b40,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x85b0('0x4f')](function(_0x454fc4,_0x47f9ac){if(_0x454fc4){_0x362559=_0x47f9ac;if(!_0x47f9ac){return _0x454fc4[_0x85b0('0x50')]({'inReplyTo':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x47')],'to':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x2e')],'cc':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['cc'],'subject':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x49')],'attach':_0x454fc4[_0x85b0('0x51')]?_0x454fc4[_0x85b0('0x51')]:_0x118618[_0x85b0('0x26')]['message']['attach'],'substatus':null,'substatusAt':moment()[_0x85b0('0x4a')](_0x85b0('0x4b')),'lastMsgAt':moment()[_0x85b0('0x4a')](_0x85b0('0x4b')),'lastMsgDirection':'in'});}else{return _0x454fc4;}}})[_0x85b0('0xf')](function(_0x371b6e){_0x2732c3[_0x85b0('0x52')]=_0x371b6e[_0x85b0('0x53')]({'plain':!![]});_0x2732c3[_0x85b0('0x52')]['created']=_0x362559;return db[_0x85b0('0x4d')][_0x85b0('0x44')]({'body':_0x118618[_0x85b0('0x26')]['body'],'MailAccountId':_0x118618[_0x85b0('0x3e')]['id'],'MailInteractionId':_0x371b6e['id'],'direction':'in','ContactId':_0x2732c3[_0x85b0('0x46')]['id'],'messageId':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x47')],'from':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x2e')],'to':_0x118618['body']['message']['to'],'cc':_0x118618['body'][_0x85b0('0x17')]['cc'],'subject':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x49')],'attach':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x51')],'Attachments':_0x118618[_0x85b0('0x26')]['message'][_0x85b0('0x54')],'originTo':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['originTo'],'originCc':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x55')],'bcc':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x56')],'ChatWebsiteId':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x57')]||null,'originChannel':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['originChannel']||'Email','ChatOfflineMessageId':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x85b0('0x58')],'as':_0x85b0('0x59')}]});})[_0x85b0('0xf')](function(_0x1507bf){_0x2732c3[_0x85b0('0x17')]=_0x1507bf;if(_0x2732c3[_0x85b0('0x52')][_0x85b0('0x5a')]){return db[_0x85b0('0x5b')][_0x85b0('0x33')]({'attributes':['id',_0x85b0('0x5c')],'where':{'id':_0x2732c3[_0x85b0('0x52')][_0x85b0('0x5a')]}})[_0x85b0('0xf')](function(_0x3390e2){if(_0x3390e2){_0x2732c3[_0x85b0('0x39')]['unshift']({'id':0x0,'priority':0x0,'app':_0x85b0('0x5d'),'appdata':_0x3390e2['name']+','+(_0x2732c3['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x85b0('0x5e'),'startRouting',_0x2732c3);});}return respondWithRpcPromise(_0x85b0('0x5e'),_0x85b0('0x5f'),_0x2732c3);})[_0x85b0('0xf')](function(_0x16142f){_0x2cac49(_0x16142f);})[_0x85b0('0x19')](function(_0x580b4f){_0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,_0x580b4f[_0x85b0('0x17')]));});});};
\ No newline at end of file
index c044dfc..f4e1325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f4=['remove','emit','removeListener','length','mailAccount:','save'];(function(_0x44af93,_0x45fa15){var _0x22eef3=function(_0x53dc6f){while(--_0x53dc6f){_0x44af93['push'](_0x44af93['shift']());}};_0x22eef3(++_0x45fa15);}(_0xe4f4,0x89));var _0x4e4f=function(_0x2989ef,_0x353d45){_0x2989ef=_0x2989ef-0x0;var _0x25c7dd=_0xe4f4[_0x2989ef];return _0x25c7dd;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0x4e4f('0x0'),_0x4e4f('0x1'),'update'];function createListener(_0x1c0b84,_0x12e14b){return function(_0x3df806){_0x12e14b[_0x4e4f('0x2')](_0x1c0b84,_0x3df806);};}function removeListener(_0x413fca,_0xa5adec){return function(){MailAccountEvents[_0x4e4f('0x3')](_0x413fca,_0xa5adec);};}exports['register']=function(_0x404dfb){for(var _0x1de125=0x0,_0x50afc4=events[_0x4e4f('0x4')];_0x1de125<_0x50afc4;_0x1de125++){var _0x411cc8=events[_0x1de125];var _0x4c4a5a=createListener(_0x4e4f('0x5')+_0x411cc8,_0x404dfb);MailAccountEvents['on'](_0x411cc8,_0x4c4a5a);}};
\ No newline at end of file
+var _0x7590=['remove','update','emit','register','length','mailAccount:','save'];(function(_0x3e186f,_0x2eb7be){var _0x3595bf=function(_0x5cb578){while(--_0x5cb578){_0x3e186f['push'](_0x3e186f['shift']());}};_0x3595bf(++_0x2eb7be);}(_0x7590,0x1c6));var _0x0759=function(_0x347862,_0x339566){_0x347862=_0x347862-0x0;var _0x2ec88b=_0x7590[_0x347862];return _0x2ec88b;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0x0759('0x0'),_0x0759('0x1'),_0x0759('0x2')];function createListener(_0x3d0626,_0xf3ba58){return function(_0x26aed4){_0xf3ba58[_0x0759('0x3')](_0x3d0626,_0x26aed4);};}function removeListener(_0x565b80,_0x548ded){return function(){MailAccountEvents['removeListener'](_0x565b80,_0x548ded);};}exports[_0x0759('0x4')]=function(_0x4dfe42){for(var _0x234acf=0x0,_0x266d1f=events[_0x0759('0x5')];_0x234acf<_0x266d1f;_0x234acf++){var _0x1caa4b=events[_0x234acf];var _0x43c208=createListener(_0x0759('0x6')+_0x1caa4b,_0x4dfe42);MailAccountEvents['on'](_0x1caa4b,_0x43c208);}};
\ No newline at end of file
index a6f3757..f17f523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f5d=['delete','destroy','exports','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./mailApplication.controller','/:id','isAuthenticated','show','put','update'];(function(_0x3a7e48,_0x1e4521){var _0x193c34=function(_0x590571){while(--_0x590571){_0x3a7e48['push'](_0x3a7e48['shift']());}};_0x193c34(++_0x1e4521);}(_0x4f5d,0x120));var _0xd4f5=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x4f5d[_0x565c49];return _0x20ca34;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd4f5('0x0'));var timeout=require(_0xd4f5('0x1'));var express=require(_0xd4f5('0x2'));var router=express[_0xd4f5('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd4f5('0x4'));var config=require(_0xd4f5('0x5'));var controller=require(_0xd4f5('0x6'));router['get'](_0xd4f5('0x7'),auth[_0xd4f5('0x8')](),controller[_0xd4f5('0x9')]);router[_0xd4f5('0xa')]('/:id',auth[_0xd4f5('0x8')](),controller[_0xd4f5('0xb')]);router[_0xd4f5('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xd4f5('0xd')]);module[_0xd4f5('0xe')]=router;
\ No newline at end of file
+var _0xb638=['/:id','isAuthenticated','show','put','update','delete','destroy','path','connect-timeout','express','Router','fs-extra','../../config/environment','./mailApplication.controller','get'];(function(_0x8477e6,_0x5afe44){var _0x5149be=function(_0x3570cc){while(--_0x3570cc){_0x8477e6['push'](_0x8477e6['shift']());}};_0x5149be(++_0x5afe44);}(_0xb638,0x8e));var _0x8b63=function(_0x14da75,_0x46d102){_0x14da75=_0x14da75-0x0;var _0x27b714=_0xb638[_0x14da75];return _0x27b714;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8b63('0x0'));var timeout=require(_0x8b63('0x1'));var express=require(_0x8b63('0x2'));var router=express[_0x8b63('0x3')]();var fs_extra=require(_0x8b63('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8b63('0x5'));var controller=require(_0x8b63('0x6'));router[_0x8b63('0x7')](_0x8b63('0x8'),auth[_0x8b63('0x9')](),controller[_0x8b63('0xa')]);router[_0x8b63('0xb')](_0x8b63('0x8'),auth['isAuthenticated'](),controller[_0x8b63('0xc')]);router[_0x8b63('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x8b63('0xe')]);module['exports']=router;
\ No newline at end of file
index d2e7668..9f4f233 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceab=['TEXT','sequelize','exports','INTEGER','STRING','noop'];(function(_0x5bbb58,_0x176f96){var _0x5df0ec=function(_0x5bcce2){while(--_0x5bcce2){_0x5bbb58['push'](_0x5bbb58['shift']());}};_0x5df0ec(++_0x176f96);}(_0xceab,0x103));var _0xbcea=function(_0x30877c,_0x400e88){_0x30877c=_0x30877c-0x0;var _0x463d3a=_0xceab[_0x30877c];return _0x463d3a;};'use strict';var Sequelize=require(_0xbcea('0x0'));module[_0xbcea('0x1')]={'priority':{'type':Sequelize[_0xbcea('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xbcea('0x3')],'allowNull':![],'defaultValue':_0xbcea('0x4')},'appdata':{'type':Sequelize[_0xbcea('0x5')]()},'description':{'type':Sequelize[_0xbcea('0x3')]},'interval':{'type':Sequelize[_0xbcea('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xf8fe=['exports','TEXT','STRING'];(function(_0x5564bc,_0x5eef72){var _0x24455f=function(_0x4b2b2d){while(--_0x4b2b2d){_0x5564bc['push'](_0x5564bc['shift']());}};_0x24455f(++_0x5eef72);}(_0xf8fe,0xea));var _0xef8f=function(_0x25b1e0,_0x32d3d5){_0x25b1e0=_0x25b1e0-0x0;var _0xc87ded=_0xf8fe[_0x25b1e0];return _0xc87ded;};'use strict';var Sequelize=require('sequelize');module[_0xef8f('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xef8f('0x1')]()},'description':{'type':Sequelize[_0xef8f('0x2')]},'interval':{'type':Sequelize[_0xef8f('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index b6eaebb..29618d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['limit','count','set','apply','reject','then','stack','name','send','params','model','keys','MailApplication','query','filters','intersection','attributes','fields','length','include','merge','options','find','update','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa88,0x137));var _0x8aa8=function(_0x11a962,_0x3cc338){_0x11a962=_0x11a962-0x0;var _0x55d423=_0xaa88[_0x11a962];return _0x55d423;};'use strict';var emlformat=require(_0x8aa8('0x0'));var rimraf=require(_0x8aa8('0x1'));var zipdir=require(_0x8aa8('0x2'));var jsonpatch=require(_0x8aa8('0x3'));var rp=require('request-promise');var moment=require(_0x8aa8('0x4'));var BPromise=require(_0x8aa8('0x5'));var Mustache=require(_0x8aa8('0x6'));var util=require(_0x8aa8('0x7'));var path=require(_0x8aa8('0x8'));var sox=require(_0x8aa8('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8aa8('0xa'));var _=require('lodash');var squel=require(_0x8aa8('0xb'));var crypto=require(_0x8aa8('0xc'));var jsforce=require(_0x8aa8('0xd'));var deskjs=require(_0x8aa8('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8aa8('0xf'));var Papa=require(_0x8aa8('0x10'));var Redis=require(_0x8aa8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8aa8('0x12'));var as=require(_0x8aa8('0x13'));var hardwareService=require(_0x8aa8('0x14'));var logger=require(_0x8aa8('0x15'))('api');var utils=require(_0x8aa8('0x16'));var config=require(_0x8aa8('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8aa8('0x18'))['db'];function respondWithStatusCode(_0xa691d6,_0x28132f){_0x28132f=_0x28132f||0xcc;return function(_0x535aa0){if(_0x535aa0){return _0xa691d6[_0x8aa8('0x19')](_0x28132f);}return _0xa691d6[_0x8aa8('0x1a')](_0x28132f)[_0x8aa8('0x1b')]();};}function respondWithResult(_0x4b686e,_0x391642){_0x391642=_0x391642||0xc8;return function(_0x4af534){if(_0x4af534){return _0x4b686e['status'](_0x391642)[_0x8aa8('0x1c')](_0x4af534);}};}function respondWithFilteredResult(_0x200662,_0xae81a0){return function(_0xa6c2af){if(_0xa6c2af){var _0x42a6a4=typeof _0xae81a0[_0x8aa8('0x1d')]===_0x8aa8('0x1e')&&typeof _0xae81a0[_0x8aa8('0x1f')]===_0x8aa8('0x1e');var _0x4e8ce3=_0xa6c2af['count'];var _0x2c1b9a=_0x42a6a4?0x0:_0xae81a0['offset'];var _0x557adc=_0x42a6a4?_0xa6c2af[_0x8aa8('0x20')]:_0xae81a0['offset']+_0xae81a0[_0x8aa8('0x1f')];var _0x41092b;if(_0x557adc>=_0x4e8ce3){_0x557adc=_0x4e8ce3;_0x41092b=0xc8;}else{_0x41092b=0xce;}_0x200662[_0x8aa8('0x1a')](_0x41092b);return _0x200662[_0x8aa8('0x21')]('Content-Range',_0x2c1b9a+'-'+_0x557adc+'/'+_0x4e8ce3)[_0x8aa8('0x1c')](_0xa6c2af);}return null;};}function patchUpdates(_0x36c445){return function(_0x2825fd){try{jsonpatch[_0x8aa8('0x22')](_0x2825fd,_0x36c445,!![]);}catch(_0x4c754e){return BPromise[_0x8aa8('0x23')](_0x4c754e);}return _0x2825fd['save']();};}function saveUpdates(_0x26cf63,_0x4cc455){return function(_0x1fdadd){if(_0x1fdadd){return _0x1fdadd['update'](_0x26cf63)[_0x8aa8('0x24')](function(_0x557e4e){return _0x557e4e;});}return null;};}function removeEntity(_0x65945b,_0x40adb5){return function(_0x3ca7dc){if(_0x3ca7dc){return _0x3ca7dc['destroy']()[_0x8aa8('0x24')](function(){_0x65945b[_0x8aa8('0x1a')](0xcc)[_0x8aa8('0x1b')]();});}};}function handleEntityNotFound(_0x547a7b,_0x57acd2){return function(_0x2d1508){if(!_0x2d1508){_0x547a7b[_0x8aa8('0x19')](0x194);}return _0x2d1508;};}function handleError(_0x2f91f3,_0x3a3c7a){_0x3a3c7a=_0x3a3c7a||0x1f4;return function(_0x24143e){logger['error'](_0x24143e[_0x8aa8('0x25')]);if(_0x24143e['name']){delete _0x24143e[_0x8aa8('0x26')];}_0x2f91f3[_0x8aa8('0x1a')](_0x3a3c7a)[_0x8aa8('0x27')](_0x24143e);};}exports['show']=function(_0x4c5c5c,_0x10810d){var _0x5e96c9={'raw':!![],'where':{'id':_0x4c5c5c[_0x8aa8('0x28')]['id']}},_0x385208={};_0x385208[_0x8aa8('0x29')]=_[_0x8aa8('0x2a')](db[_0x8aa8('0x2b')]['rawAttributes']);_0x385208[_0x8aa8('0x2c')]=_[_0x8aa8('0x2a')](_0x4c5c5c['query']);_0x385208[_0x8aa8('0x2d')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],_0x385208['query']);_0x5e96c9[_0x8aa8('0x2f')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],qs[_0x8aa8('0x30')](_0x4c5c5c[_0x8aa8('0x2c')][_0x8aa8('0x30')]));_0x5e96c9[_0x8aa8('0x2f')]=_0x5e96c9[_0x8aa8('0x2f')][_0x8aa8('0x31')]?_0x5e96c9[_0x8aa8('0x2f')]:_0x385208[_0x8aa8('0x29')];if(_0x4c5c5c['query']['includeAll']){_0x5e96c9[_0x8aa8('0x32')]=[{'all':!![]}];}_0x5e96c9=_[_0x8aa8('0x33')]({},_0x5e96c9,_0x4c5c5c[_0x8aa8('0x34')]);return db[_0x8aa8('0x2b')][_0x8aa8('0x35')](_0x5e96c9)[_0x8aa8('0x24')](handleEntityNotFound(_0x10810d,null))['then'](respondWithResult(_0x10810d,null))['catch'](handleError(_0x10810d,null));};exports[_0x8aa8('0x36')]=function(_0x5755b5,_0x24997c){if(_0x5755b5[_0x8aa8('0x37')]['id']){delete _0x5755b5[_0x8aa8('0x37')]['id'];}return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x5755b5[_0x8aa8('0x28')]['id']}})[_0x8aa8('0x24')](handleEntityNotFound(_0x24997c,null))['then'](saveUpdates(_0x5755b5['body'],null))[_0x8aa8('0x24')](respondWithResult(_0x24997c,null))[_0x8aa8('0x38')](handleError(_0x24997c,null));};exports['destroy']=function(_0x24eb18,_0x2e1f52){return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x24eb18['params']['id']}})['then'](handleEntityNotFound(_0x2e1f52,null))[_0x8aa8('0x24')](removeEntity(_0x2e1f52,null))['catch'](handleError(_0x2e1f52,null));};
\ No newline at end of file
+var _0xe706=['limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','show','params','model','keys','MailApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','body','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined'];(function(_0x54808c,_0x36e290){var _0xe9459=function(_0x55df21){while(--_0x55df21){_0x54808c['push'](_0x54808c['shift']());}};_0xe9459(++_0x36e290);}(_0xe706,0xa3));var _0x6e70=function(_0x4c7892,_0x1c2cb0){_0x4c7892=_0x4c7892-0x0;var _0x2a79c8=_0xe706[_0x4c7892];return _0x2a79c8;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={'raw':!![],'where':{'id':_0x5d772a[_0x6e70('0x2e')]['id']}},_0xecf336={};_0xecf336[_0x6e70('0x2f')]=_[_0x6e70('0x30')](db[_0x6e70('0x31')][_0x6e70('0x32')]);_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x30')](_0x5d772a['query']);_0xecf336[_0x6e70('0x34')]=_['intersection'](_0xecf336[_0x6e70('0x2f')],_0xecf336['query']);_0x406f29[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0xecf336[_0x6e70('0x2f')],qs['fields'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x37')]));_0x406f29['attributes']=_0x406f29[_0x6e70('0x35')][_0x6e70('0x38')]?_0x406f29['attributes']:_0xecf336[_0x6e70('0x2f')];if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x39')]){_0x406f29[_0x6e70('0x3a')]=[{'all':!![]}];}_0x406f29=_[_0x6e70('0x3b')]({},_0x406f29,_0x5d772a[_0x6e70('0x3c')]);return db[_0x6e70('0x31')][_0x6e70('0x3d')](_0x406f29)[_0x6e70('0x29')](handleEntityNotFound(_0x1952ea,null))[_0x6e70('0x29')](respondWithResult(_0x1952ea,null))['catch'](handleError(_0x1952ea,null));};exports[_0x6e70('0x28')]=function(_0x4795a0,_0x23cd1a){if(_0x4795a0[_0x6e70('0x3e')]['id']){delete _0x4795a0[_0x6e70('0x3e')]['id'];}return db[_0x6e70('0x31')][_0x6e70('0x3d')]({'where':{'id':_0x4795a0[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x23cd1a,null))[_0x6e70('0x29')](saveUpdates(_0x4795a0[_0x6e70('0x3e')],null))[_0x6e70('0x29')](respondWithResult(_0x23cd1a,null))[_0x6e70('0x3f')](handleError(_0x23cd1a,null));};exports[_0x6e70('0x40')]=function(_0x5594d3,_0x501b53){return db['MailApplication']['find']({'where':{'id':_0x5594d3[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x501b53,null))[_0x6e70('0x29')](removeEntity(_0x501b53,null))[_0x6e70('0x3f')](handleError(_0x501b53,null));};
\ No newline at end of file
index 07d5ca0..0597d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84d2=['request-promise','rimraf','../../config/environment','./mailApplication.attributes','exports','mail_applications','utf8mb4','lodash','util','../../config/logger','api','moment'];(function(_0xab0515,_0x4b8ab2){var _0x443d59=function(_0xfd6c59){while(--_0xfd6c59){_0xab0515['push'](_0xab0515['shift']());}};_0x443d59(++_0x4b8ab2);}(_0x84d2,0x1cf));var _0x284d=function(_0x3c888a,_0x135752){_0x3c888a=_0x3c888a-0x0;var _0x1f9d35=_0x84d2[_0x3c888a];return _0x1f9d35;};'use strict';var _=require(_0x284d('0x0'));var util=require(_0x284d('0x1'));var logger=require(_0x284d('0x2'))(_0x284d('0x3'));var moment=require(_0x284d('0x4'));var BPromise=require('bluebird');var rp=require(_0x284d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x284d('0x6'));var config=require(_0x284d('0x7'));var attributes=require(_0x284d('0x8'));module[_0x284d('0x9')]=function(_0x462be4,_0x2bf078){return _0x462be4['define']('MailApplication',attributes,{'tableName':_0x284d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x284d('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xabb9=['api','moment','request-promise','path','rimraf','exports','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x261a06,_0x379b82){var _0x250ad6=function(_0x3f50ee){while(--_0x3f50ee){_0x261a06['push'](_0x261a06['shift']());}};_0x250ad6(++_0x379b82);}(_0xabb9,0x10e));var _0x9abb=function(_0x349fee,_0x3267d6){_0x349fee=_0x349fee-0x0;var _0x35977a=_0xabb9[_0x349fee];return _0x35977a;};'use strict';var _=require(_0x9abb('0x0'));var util=require(_0x9abb('0x1'));var logger=require(_0x9abb('0x2'))(_0x9abb('0x3'));var moment=require(_0x9abb('0x4'));var BPromise=require('bluebird');var rp=require(_0x9abb('0x5'));var fs=require('fs');var path=require(_0x9abb('0x6'));var rimraf=require(_0x9abb('0x7'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0x9abb('0x8')]=function(_0x2ea1a4,_0x2ad077){return _0x2ea1a4['define'](_0x9abb('0x9'),attributes,{'tableName':_0x9abb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9abb('0xb'),'collate':_0x9abb('0xc')});};
\ No newline at end of file
index fc46829..f67ee1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb588=['client','request','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','UpdateMailApplication','MailApplication','update','options','raw','attributes','limit','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x3c2d6e,_0xeb8475){var _0x56f64f=function(_0xffd084){while(--_0xffd084){_0x3c2d6e['push'](_0x3c2d6e['shift']());}};_0x56f64f(++_0xeb8475);}(_0xb588,0xf3));var _0x8b58=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb588[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x8b58('0x0'));var util=require('util');var moment=require(_0x8b58('0x1'));var BPromise=require(_0x8b58('0x2'));var rs=require(_0x8b58('0x3'));var fs=require('fs');var Redis=require(_0x8b58('0x4'));var db=require(_0x8b58('0x5'))['db'];var utils=require(_0x8b58('0x6'));var logger=require(_0x8b58('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8b58('0x8'));var client=jayson[_0x8b58('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4721e0,_0x17ea0f,_0x7b210){return new BPromise(function(_0xf9288a,_0x593ae3){return client[_0x8b58('0xa')](_0x4721e0,_0x7b210)['then'](function(_0x2e5ad3){logger[_0x8b58('0xb')](_0x8b58('0xc'),_0x17ea0f,_0x8b58('0xd'));logger[_0x8b58('0xe')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x17ea0f,_0x8b58('0xd'),JSON[_0x8b58('0xf')](_0x2e5ad3));if(_0x2e5ad3['error']){if(_0x2e5ad3['error']['code']===0x1f4){logger[_0x8b58('0x10')](_0x8b58('0xc'),_0x17ea0f,_0x2e5ad3[_0x8b58('0x10')][_0x8b58('0x11')]);return _0x593ae3(_0x2e5ad3[_0x8b58('0x10')][_0x8b58('0x11')]);}logger['error'](_0x8b58('0xc'),_0x17ea0f,_0x2e5ad3['error'][_0x8b58('0x11')]);return _0xf9288a(_0x2e5ad3[_0x8b58('0x10')][_0x8b58('0x11')]);}else{logger[_0x8b58('0xb')](_0x8b58('0xc'),_0x17ea0f,_0x8b58('0xd'));_0xf9288a(_0x2e5ad3[_0x8b58('0x12')][_0x8b58('0x11')]);}})[_0x8b58('0x13')](function(_0x2c517f){logger[_0x8b58('0x10')]('MailApplication,\x20%s,\x20%s',_0x17ea0f,_0x2c517f);_0x593ae3(_0x2c517f);});});}exports[_0x8b58('0x14')]=function(_0x1a6b99){var _0x158eb4=this;return new Promise(function(_0x3d87b0,_0x353aa0){return db[_0x8b58('0x15')][_0x8b58('0x16')](_0x1a6b99['body'],{'raw':_0x1a6b99[_0x8b58('0x17')]?_0x1a6b99[_0x8b58('0x17')][_0x8b58('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a6b99[_0x8b58('0x17')]?_0x1a6b99[_0x8b58('0x17')]['where']||null:null,'attributes':_0x1a6b99[_0x8b58('0x17')]?_0x1a6b99['options'][_0x8b58('0x19')]||null:null,'limit':_0x1a6b99[_0x8b58('0x17')]?_0x1a6b99[_0x8b58('0x17')][_0x8b58('0x1a')]||null:null})[_0x8b58('0x1b')](function(_0x5ec31b){logger['info'](_0x8b58('0x14'),_0x1a6b99);logger[_0x8b58('0xe')]('UpdateMailApplication',_0x1a6b99,JSON[_0x8b58('0xf')](_0x5ec31b));_0x3d87b0(_0x5ec31b);})[_0x8b58('0x13')](function(_0x485f6b){logger[_0x8b58('0x10')](_0x8b58('0x14'),_0x485f6b['message'],_0x1a6b99);_0x353aa0(_0x158eb4['error'](0x1f4,_0x485f6b[_0x8b58('0x11')]));});});};
\ No newline at end of file
+var _0x0f8d=['util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','update','body','options','where','attributes','limit','then','lodash'];(function(_0x4d39ad,_0x510b46){var _0x9b2a6f=function(_0x5953c7){while(--_0x5953c7){_0x4d39ad['push'](_0x4d39ad['shift']());}};_0x9b2a6f(++_0x510b46);}(_0x0f8d,0x185));var _0xd0f8=function(_0x5c47d8,_0x47eff2){_0x5c47d8=_0x5c47d8-0x0;var _0x5988c7=_0x0f8d[_0x5c47d8];return _0x5988c7;};'use strict';var _=require(_0xd0f8('0x0'));var util=require(_0xd0f8('0x1'));var moment=require(_0xd0f8('0x2'));var BPromise=require('bluebird');var rs=require(_0xd0f8('0x3'));var fs=require('fs');var Redis=require(_0xd0f8('0x4'));var db=require(_0xd0f8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd0f8('0x6'))('rpc');var config=require(_0xd0f8('0x7'));var jayson=require(_0xd0f8('0x8'));var client=jayson[_0xd0f8('0x9')][_0xd0f8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ab218,_0x5bc5ba,_0x683230){return new BPromise(function(_0x13a88d,_0x5d4279){return client[_0xd0f8('0xb')](_0x5ab218,_0x683230)['then'](function(_0x27760d){logger[_0xd0f8('0xc')]('MailApplication,\x20%s,\x20%s',_0x5bc5ba,_0xd0f8('0xd'));logger[_0xd0f8('0xe')](_0xd0f8('0xf'),_0x5bc5ba,_0xd0f8('0xd'),JSON[_0xd0f8('0x10')](_0x27760d));if(_0x27760d[_0xd0f8('0x11')]){if(_0x27760d['error']['code']===0x1f4){logger[_0xd0f8('0x11')](_0xd0f8('0x12'),_0x5bc5ba,_0x27760d[_0xd0f8('0x11')][_0xd0f8('0x13')]);return _0x5d4279(_0x27760d[_0xd0f8('0x11')][_0xd0f8('0x13')]);}logger[_0xd0f8('0x11')](_0xd0f8('0x12'),_0x5bc5ba,_0x27760d[_0xd0f8('0x11')]['message']);return _0x13a88d(_0x27760d[_0xd0f8('0x11')][_0xd0f8('0x13')]);}else{logger[_0xd0f8('0xc')](_0xd0f8('0x12'),_0x5bc5ba,_0xd0f8('0xd'));_0x13a88d(_0x27760d[_0xd0f8('0x14')][_0xd0f8('0x13')]);}})[_0xd0f8('0x15')](function(_0x2af82a){logger['error'](_0xd0f8('0x12'),_0x5bc5ba,_0x2af82a);_0x5d4279(_0x2af82a);});});}exports[_0xd0f8('0x16')]=function(_0x2faa69){var _0x7d759f=this;return new Promise(function(_0xe0c06b,_0x45ef96){return db['MailApplication'][_0xd0f8('0x17')](_0x2faa69[_0xd0f8('0x18')],{'raw':_0x2faa69[_0xd0f8('0x19')]?_0x2faa69['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2faa69[_0xd0f8('0x19')]?_0x2faa69[_0xd0f8('0x19')][_0xd0f8('0x1a')]||null:null,'attributes':_0x2faa69[_0xd0f8('0x19')]?_0x2faa69[_0xd0f8('0x19')][_0xd0f8('0x1b')]||null:null,'limit':_0x2faa69['options']?_0x2faa69[_0xd0f8('0x19')][_0xd0f8('0x1c')]||null:null})[_0xd0f8('0x1d')](function(_0x31a059){logger[_0xd0f8('0xc')](_0xd0f8('0x16'),_0x2faa69);logger[_0xd0f8('0xe')](_0xd0f8('0x16'),_0x2faa69,JSON[_0xd0f8('0x10')](_0x31a059));_0xe0c06b(_0x31a059);})[_0xd0f8('0x15')](function(_0x3af6f5){logger[_0xd0f8('0x11')](_0xd0f8('0x16'),_0x3af6f5['message'],_0x2faa69);_0x45ef96(_0x7d759f[_0xd0f8('0x11')](0x1f4,_0x3af6f5[_0xd0f8('0x13')]));});});};
\ No newline at end of file
index eb3fce8..0f0eb51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e25=['get','index','/describe','isAuthenticated','describe','/:id','show','/:id/download','post','/:id/messages','addMessage','/:id/tags','tracked','mailinteraction:addtags','addTags','put','update','delete','mail','mailinteraction:destroy','destroy','removeTags','express','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x8e25,0x14e));var _0x58e2=function(_0x84970a,_0x347a79){_0x84970a=_0x84970a-0x0;var _0x118942=_0x8e25[_0x84970a];return _0x118942;};'use strict';var express=require(_0x58e2('0x0'));var router=express['Router']();var auth=require(_0x58e2('0x1'));var interaction=require(_0x58e2('0x2'));var controller=require(_0x58e2('0x3'));router[_0x58e2('0x4')]('/',auth['isAuthenticated'](),controller[_0x58e2('0x5')]);router[_0x58e2('0x4')](_0x58e2('0x6'),auth[_0x58e2('0x7')](),controller[_0x58e2('0x8')]);router['get'](_0x58e2('0x9'),auth[_0x58e2('0x7')](),controller[_0x58e2('0xa')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router[_0x58e2('0x4')](_0x58e2('0xb'),auth[_0x58e2('0x7')](),controller['download']);router[_0x58e2('0xc')]('/',auth[_0x58e2('0x7')](),controller['create']);router['post'](_0x58e2('0xd'),auth[_0x58e2('0x7')](),controller[_0x58e2('0xe')]);router['post'](_0x58e2('0xf'),auth[_0x58e2('0x7')](),interaction[_0x58e2('0x10')]('mail',_0x58e2('0x11')),controller[_0x58e2('0x12')]);router[_0x58e2('0x13')](_0x58e2('0x9'),auth['isAuthenticated'](),interaction[_0x58e2('0x10')]('mail','mailinteraction:update'),controller[_0x58e2('0x14')]);router[_0x58e2('0x15')](_0x58e2('0x9'),auth[_0x58e2('0x7')](),interaction['tracked'](_0x58e2('0x16'),_0x58e2('0x17')),controller[_0x58e2('0x18')]);router[_0x58e2('0x15')]('/:id/tags',auth[_0x58e2('0x7')](),controller[_0x58e2('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x129e=['put','tracked','update','delete','destroy','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','describe','get','/:id','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','mail','mailinteraction:addtags','addTags'];(function(_0x49e5b3,_0x5bce3d){var _0x12b154=function(_0x1bf90a){while(--_0x1bf90a){_0x49e5b3['push'](_0x49e5b3['shift']());}};_0x12b154(++_0x5bce3d);}(_0x129e,0x67));var _0xe129=function(_0x339633,_0x1052bc){_0x339633=_0x339633-0x0;var _0x3819fb=_0x129e[_0x339633];return _0x3819fb;};'use strict';var express=require(_0xe129('0x0'));var router=express[_0xe129('0x1')]();var auth=require(_0xe129('0x2'));var interaction=require(_0xe129('0x3'));var controller=require('./mailInteraction.controller');router['get']('/',auth[_0xe129('0x4')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0xe129('0x5')]);router[_0xe129('0x6')](_0xe129('0x7'),auth[_0xe129('0x4')](),controller['show']);router[_0xe129('0x6')](_0xe129('0x8'),auth[_0xe129('0x4')](),controller[_0xe129('0x9')]);router['get'](_0xe129('0xa'),auth[_0xe129('0x4')](),controller['download']);router[_0xe129('0xb')]('/',auth[_0xe129('0x4')](),controller[_0xe129('0xc')]);router['post'](_0xe129('0x8'),auth[_0xe129('0x4')](),controller['addMessage']);router[_0xe129('0xb')](_0xe129('0xd'),auth[_0xe129('0x4')](),interaction['tracked'](_0xe129('0xe'),_0xe129('0xf')),controller[_0xe129('0x10')]);router[_0xe129('0x11')](_0xe129('0x7'),auth[_0xe129('0x4')](),interaction[_0xe129('0x12')](_0xe129('0xe'),'mailinteraction:update'),controller[_0xe129('0x13')]);router[_0xe129('0x14')](_0xe129('0x7'),auth[_0xe129('0x4')](),interaction['tracked']('mail','mailinteraction:destroy'),controller[_0xe129('0x15')]);router['delete'](_0xe129('0xd'),auth[_0xe129('0x4')](),controller[_0xe129('0x16')]);module[_0xe129('0x17')]=router;
\ No newline at end of file
index e9ff743..b87968d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62b3=['DATE','STRING','TEXT','long','ENUM','out','BOOLEAN'];(function(_0x346c4b,_0x57bce3){var _0x1e3b65=function(_0x4f106e){while(--_0x4f106e){_0x346c4b['push'](_0x346c4b['shift']());}};_0x1e3b65(++_0x57bce3);}(_0x62b3,0x19c));var _0x362b=function(_0x170f42,_0x36e3cf){_0x170f42=_0x170f42-0x0;var _0x24c7b1=_0x62b3[_0x170f42];return _0x24c7b1;};'use strict';var Sequelize=require('sequelize');var iconv=require('iconv');module['exports']={'closed':{'type':Sequelize[_0x362b('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x362b('0x1')]},'disposition':{'type':Sequelize[_0x362b('0x2')]},'secondDisposition':{'type':Sequelize[_0x362b('0x2')]},'thirdDisposition':{'type':Sequelize[_0x362b('0x2')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x362b('0x2')](0x1fe)},'to':{'type':Sequelize[_0x362b('0x2')]},'cc':{'type':Sequelize[_0x362b('0x3')](_0x362b('0x4'))},'subject':{'type':Sequelize[_0x362b('0x3')]()},'attach':{'type':Sequelize[_0x362b('0x0')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x362b('0x2')](0x3c)},'substatusAt':{'type':Sequelize[_0x362b('0x1')]},'firstMsgDirection':{'type':Sequelize[_0x362b('0x5')]('in',_0x362b('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x362b('0x5')]('in',_0x362b('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x362b('0x0')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9c2b=['STRING','long','TEXT','ENUM','out','iconv','BOOLEAN','DATE'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x9c2b,0x1a5));var _0xb9c2=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x9c2b[_0x12fc8d];return _0x3f9d04;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0xb9c2('0x0'));module['exports']={'closed':{'type':Sequelize[_0xb9c2('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb9c2('0x2')]},'disposition':{'type':Sequelize[_0xb9c2('0x3')]},'secondDisposition':{'type':Sequelize[_0xb9c2('0x3')]},'thirdDisposition':{'type':Sequelize[_0xb9c2('0x3')]},'note':{'type':Sequelize[_0xb9c2('0x3')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0xb9c2('0x3')]},'cc':{'type':Sequelize['TEXT'](_0xb9c2('0x4'))},'subject':{'type':Sequelize[_0xb9c2('0x5')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xb9c2('0x2')]},'substatus':{'type':Sequelize[_0xb9c2('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0xb9c2('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xb9c2('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xb9c2('0x6')]('in',_0xb9c2('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xb9c2('0x1')],'defaultValue':![]}};
\ No newline at end of file
index b384fbb..22a94a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','enableEmailPreview','show','params','rawAttributes','includeAll','include','merge','options','create','body','describe','addMessage','ids','omit','getMessages','nolimit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','rows','spread','emit','mailInteractionTags:save','removeTags','download','unix','join','server','tmp','root','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','get','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','build','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','stack','name','send','fullname','TagIds','Tags','split','forEach','push','MailMessage','out','-id','trimStart','plainBody','catch','index','map','MailInteraction','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','field','color','tools_tags','u.id','ui.MailInteractionId','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','length','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','isEmail','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.ContactId','i.MailAccountId','Contact.firstName','c.email'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xb10b,0x12a));var _0xbb10=function(_0xd578cb,_0x2167a3){_0xd578cb=_0xd578cb-0x0;var _0x775533=_0xb10b[_0xd578cb];return _0x775533;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var BPromise=require(_0xbb10('0x3'));var util=require('util');var path=require(_0xbb10('0x4'));var fs=require('fs');var _=require(_0xbb10('0x5'));var squel=require(_0xbb10('0x6'));var juice=require(_0xbb10('0x7'));var Redis=require(_0xbb10('0x8'));var qs=require(_0xbb10('0x9'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xbb10('0xa'))(_0xbb10('0xb'));var config=require('../../config/environment');var db=require(_0xbb10('0xc'))['db'];config[_0xbb10('0xd')]=_[_0xbb10('0xe')](config[_0xbb10('0xd')],{'host':_0xbb10('0xf'),'port':0x18eb});var socket=require(_0xbb10('0x10'))(new Redis(config[_0xbb10('0xd')]));require(_0xbb10('0x11'))['register'](socket);function respondWithStatusCode(_0x4e47f8,_0x20bd61){_0x20bd61=_0x20bd61||0xcc;return function(_0x118a74){if(_0x118a74){return _0x4e47f8[_0xbb10('0x12')](_0x20bd61);}return _0x4e47f8['status'](_0x20bd61)[_0xbb10('0x13')]();};}function respondWithResult(_0x5be7e0,_0x44fb19){_0x44fb19=_0x44fb19||0xc8;return function(_0x916a32){if(_0x916a32){return _0x5be7e0[_0xbb10('0x14')](_0x44fb19)[_0xbb10('0x15')](_0x916a32);}};}function respondWithFilteredResult(_0x442548,_0x147230){return function(_0x58a612){if(_0x58a612){var _0x26e021=typeof _0x147230[_0xbb10('0x16')]===_0xbb10('0x17')&&typeof _0x147230[_0xbb10('0x18')]===_0xbb10('0x17');var _0x2f2ebf=_0x58a612[_0xbb10('0x19')];var _0x36b5e8=_0x26e021?0x0:_0x147230[_0xbb10('0x16')];var _0x2b184e=_0x26e021?_0x58a612['count']:_0x147230[_0xbb10('0x16')]+_0x147230[_0xbb10('0x18')];var _0x133ac2;if(_0x2b184e>=_0x2f2ebf){_0x2b184e=_0x2f2ebf;_0x133ac2=0xc8;}else{_0x133ac2=0xce;}_0x442548[_0xbb10('0x14')](_0x133ac2);return _0x442548[_0xbb10('0x1a')](_0xbb10('0x1b'),_0x36b5e8+'-'+_0x2b184e+'/'+_0x2f2ebf)[_0xbb10('0x15')](_0x58a612);}return null;};}function saveUpdates(_0x30efc6){return function(_0xbf2906){if(_0xbf2906){return _0xbf2906[_0xbb10('0x1c')](_0x30efc6)['then'](function(_0x5ff0cf){return _0x5ff0cf;});}return null;};}function removeEntity(_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x1d')]()[_0xbb10('0x1e')](function(){_0x19f48d[_0xbb10('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12f888){return function(_0x12ef77){if(!_0x12ef77){_0x12f888['sendStatus'](0x194);}return _0x12ef77;};}function handleError(_0x4c4b0d,_0x8e2b97){_0x8e2b97=_0x8e2b97||0x1f4;return function(_0x311abe){logger[_0xbb10('0x1f')](_0x311abe[_0xbb10('0x20')]);if(_0x311abe[_0xbb10('0x21')]){delete _0x311abe[_0xbb10('0x21')];}_0x4c4b0d[_0xbb10('0x14')](_0x8e2b97)[_0xbb10('0x22')](_0x311abe);};}function getInteractionUsers(_0x7f2377,_0x395404){return new BPromise(function(_0x3ba6cd,_0x26ad93){try{if(_0x395404[_0x7f2377['id']]){_0x7f2377['Users']=_['map'](_0x395404[_0x7f2377['id']],function(_0x4fb5e0){return{'id':_0x4fb5e0['id'],'fullname':_0x4fb5e0[_0xbb10('0x23')]};});}}catch(_0x3c5ae7){_0x26ad93(_0x3c5ae7);}_0x3ba6cd(_0x7f2377);});}function getInteractionTags(_0x2c89b9,_0x4e25ff){return new BPromise(function(_0x2fdde9,_0x24d586){try{if(_0x2c89b9[_0xbb10('0x24')]){_0x2c89b9[_0xbb10('0x25')]=[];_0x2c89b9[_0xbb10('0x24')][_0xbb10('0x26')](',')[_0xbb10('0x27')](function(_0x4aabb9){_0x2c89b9[_0xbb10('0x25')][_0xbb10('0x28')](_0x4e25ff[_0x4aabb9]);});}delete _0x2c89b9[_0xbb10('0x24')];}catch(_0x2e0249){_0x24d586(_0x2e0249);}_0x2fdde9(_0x2c89b9);});}function getLastMessageText(_0x1d30aa){return new BPromise(function(_0x2ff4c1,_0x5d5c80){return db[_0xbb10('0x29')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x1d30aa['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb10('0x2a')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xbb10('0x2b'),'raw':!![]})[_0xbb10('0x1e')](function(_0x1b59f9){if(_0x1b59f9&&_0x1b59f9['plainBody']){_0x1d30aa['lastMsgText']=_[_0xbb10('0x2c')](_0x1b59f9[_0xbb10('0x2d')]);}_0x2ff4c1(_0x1d30aa);})['catch'](function(_0x359ad4){_0x5d5c80(_0x359ad4);});});}function updateMailInteraction(_0x37dde7,_0x2f653f,_0x1c0b57,_0x37a83f){return new BPromise(function(_0x138bc6,_0xf85197){return getInteractionUsers(_0x37dde7,_0x1c0b57)['then'](function(_0x25acb3){return getInteractionTags(_0x25acb3,_0x2f653f);})[_0xbb10('0x1e')](function(_0x441d15){if(_0x37a83f){_0x138bc6(getLastMessageText(_0x441d15));}else{_0x138bc6(_0x441d15);}})[_0xbb10('0x2e')](function(_0xfb2c5e){_0xf85197(_0xfb2c5e);});});}exports[_0xbb10('0x2f')]=function(_0x188cbd,_0x10202c){var _0x3c8d7d={},_0x56943c={},_0x2b5352={'count':0x0,'rows':[]};var _0x150107=_[_0xbb10('0x30')](db[_0xbb10('0x31')]['rawAttributes'],function(_0x111762){return{'name':_0x111762['fieldName'],'type':_0x111762['type'][_0xbb10('0x32')]};});_0x56943c[_0xbb10('0x33')]=_[_0xbb10('0x30')](_0x150107,_0xbb10('0x21'));_0x56943c[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x188cbd['query']);_0x56943c[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x56943c['model'],_0x56943c['query']);_0x3c8d7d['attributes']=_[_0xbb10('0x37')](_0x56943c[_0xbb10('0x33')],qs[_0xbb10('0x38')](_0x188cbd['query'][_0xbb10('0x38')]));_0x3c8d7d[_0xbb10('0x39')]=_0x3c8d7d[_0xbb10('0x39')]['length']?_0x3c8d7d[_0xbb10('0x39')]:_0x56943c[_0xbb10('0x33')];if(!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3a')]('nolimit')){_0x3c8d7d[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0x188cbd['query'][_0xbb10('0x18')]);_0x3c8d7d[_0xbb10('0x16')]=qs[_0xbb10('0x16')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x16')]);}_0x3c8d7d[_0xbb10('0x3b')]=qs['sort'](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x3c8d7d[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_['pick'](_0x188cbd[_0xbb10('0x34')],_0x56943c[_0xbb10('0x36')]),_0x150107);var _0x23dc18=[];var _0x403beb=squel['select']()[_0xbb10('0x3e')]('id')[_0xbb10('0x3e')]('name')['field'](_0xbb10('0x3f'))['from'](_0xbb10('0x40'));var _0x180933=squel['select']()[_0xbb10('0x3e')](_0xbb10('0x41'))[_0xbb10('0x3e')]('u.fullname')[_0xbb10('0x3e')](_0xbb10('0x42'))[_0xbb10('0x43')](_0xbb10('0x44'),'ui')[_0xbb10('0x45')](_0xbb10('0x46'),'u',_0xbb10('0x47'));var _0x3efa96=squel[_0xbb10('0x48')]()[_0xbb10('0x43')](_0xbb10('0x49'),'i')[_0xbb10('0x45')]('cm_contacts','c',_0xbb10('0x4a'))[_0xbb10('0x45')]('users','o',_0xbb10('0x4b'))[_0xbb10('0x45')](_0xbb10('0x4c'),'a',_0xbb10('0x4d'))[_0xbb10('0x45')](_0xbb10('0x4e'),'me',_0xbb10('0x4f'))['left_join']('mail_interaction_has_tags','it',_0xbb10('0x50'))[_0xbb10('0x45')](_0xbb10('0x40'),'t','t.id\x20=\x20it.TagId');var _0x5f0c12=squel[_0xbb10('0x51')]();var _0x34cf4e=[];var _0x1bd054=squel[_0xbb10('0x51')]();var _0x10159b;if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]){_0x10159b=as[_0xbb10('0x53')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]);var _0x550111=_0x10159b['sqlOperator'];for(var _0x412e13=0x0;_0x412e13<_0x10159b[_0xbb10('0x54')][_0xbb10('0x55')];_0x412e13++){var _0xb014b0=_0x10159b[_0xbb10('0x54')][_0x412e13];var _0x440f9e='i';var _0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),_0xb014b0[_0xbb10('0x3e')]]);if(!_0x358e7e){switch(_0xb014b0[_0xbb10('0x3e')]){case _0xbb10('0x57'):if(_0xb014b0[_0xbb10('0x58')]==0x1){_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0[_0xbb10('0x3e')]+'`\x20=\x200');}else{_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0['field']+_0xbb10('0x5a'));}break;case _0xbb10('0x5b'):if(_0xb014b0[_0xbb10('0x5c')]===_0xbb10('0x5d')){if(_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')]('\x20')[_0xbb10('0x55')]>0x1){_0x5f0c12[_0x550111](_0xbb10('0x5e'),qs[_0xbb10('0x5f')](_0xb014b0[_0xbb10('0x58')]),null);}else{var _0x44a056='%'+_0xb014b0[_0xbb10('0x58')]+'%';_0x5f0c12[_0x550111](_0xbb10('0x60'),_0x44a056,_0x44a056,_0x44a056);}}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'ContactId']);_0xb014b0[_0xbb10('0x3e')]=_0xbb10('0x61');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')]['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);}break;case _0xbb10('0x65'):var _0x14fed3=_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')](',')[_0xbb10('0x30')](function(_0x12ec18){return Number(_0x12ec18);});_0x14fed3[_0xbb10('0x27')](function(_0x40c4fb){_0x1bd054['or'](_0xbb10('0x66'),'%,'+_0x40c4fb+',%');});_0x34cf4e=_[_0xbb10('0x67')](_0x34cf4e,_0x14fed3);break;case _0xbb10('0x68'):if(_0xb014b0['operator']==='$substring'){_0x5f0c12[_0x550111](_0xbb10('0x69'),'%'+_0xb014b0[_0xbb10('0x58')]+'%',null);}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'UserId']);_0xb014b0['field']=_0xbb10('0x6a');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}break;case _0xbb10('0x2d'):_0x155dc5=as[_0xbb10('0x62')]('me',null,_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5['value']['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);break;}}else{var _0x155dc5=as['buildExpression'](_0x440f9e,_0x358e7e['type'],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}}}else{var _0xa1bbd9=_(_0x188cbd[_0xbb10('0x34')])['keys']()['map'](function(_0x27d7b9){return _[_0xbb10('0x6c')](_0x150107,[_0xbb10('0x21'),_0x27d7b9])?_0x27d7b9:undefined;})[_0xbb10('0x6d')]()['value']();if(!_[_0xbb10('0x6e')](_0xa1bbd9)){_0xa1bbd9[_0xbb10('0x27')](function(_0xa7179d){if(_0xa7179d==='MailAccountId'){_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),[][_0xbb10('0x70')](_0x188cbd['query'][_0xa7179d]));}else if(_0xa7179d===_0xbb10('0x71')){var _0x31e85e=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])['$gte'];var _0x251417=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])[_0xbb10('0x73')];_0x3efa96['where'](_0xbb10('0x74'),_0x31e85e,_0x251417);}else{if(_0x188cbd[_0xbb10('0x34')][_0xa7179d]===_0xbb10('0x75')){_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x76'));}else{_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x77'),_0x188cbd['query'][_0xa7179d]);}}});}if(_0x188cbd['query']['read']){if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x78')]==0x1){_0x3efa96[_0xbb10('0x59')]('`unreadMessages`\x20=\x200');}else{_0x3efa96['having'](_0xbb10('0x79'));}}if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]){_0x34cf4e=_[_0xbb10('0x7b')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')])?_0x188cbd['query'][_0xbb10('0x7a')]:new Array(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]);_0x34cf4e[_0xbb10('0x27')](function(_0x2aaaa6){_0x1bd054['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2aaaa6+',%');});}if(_0x188cbd['query']['filter']){var _0x329da7=_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7c')][_0xbb10('0x7d')]('\x5c','\x5c\x5c')[_0xbb10('0x7d')](/'/g,'\x27\x27');if(qs[_0xbb10('0x7e')](_0x329da7)){_0x5f0c12['or']('i.id\x20LIKE\x20?',_0x329da7+'%');}else if(qs[_0xbb10('0x7f')](_0x329da7)){_0x5f0c12['or']('c.email\x20LIKE\x20?',_0x329da7+'%');}else{_0x5f0c12['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x329da7))['or'](_0xbb10('0x80'),qs[_0xbb10('0x5f')](_0x329da7));}}}_0x3efa96[_0xbb10('0x3d')](_0x5f0c12);_0x3efa96[_0xbb10('0x81')]('i.id');var _0x122d38={'type':db['Sequelize']['QueryTypes'][_0xbb10('0x82')],'raw':!![]};var _0xfe3db0=_0x3efa96[_0xbb10('0x83')]();_0xfe3db0[_0xbb10('0x3e')](_0xbb10('0x84'));_0xfe3db0['field'](_0xbb10('0x85'),_0xbb10('0x57'));if(_0x3c8d7d[_0xbb10('0x3b')]){_0x3c8d7d[_0xbb10('0x3b')][_0xbb10('0x27')](function(_0x27f42f){var _0x174395=_0x27f42f[0x0]==='contactName'?_0x27f42f[0x0]:'i.'+_0x27f42f[0x0];_0x3efa96[_0xbb10('0x3b')](_0x174395,_0x27f42f[0x1]===_0xbb10('0x86')?![]:!![]);});}if(!_[_0xbb10('0x6e')](_0x34cf4e)){_0x3efa96[_0xbb10('0x59')](_0x1bd054);_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x87'),_0x34cf4e);}BPromise[_0xbb10('0x88')]()[_0xbb10('0x1e')](function(){if(!_0x10159b){if(_0x188cbd['query'][_0xbb10('0x89')])return;_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8a'));_0x3efa96['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x188cbd['user'][_0xbb10('0x8b')]!=='agent')return;return _0x188cbd['user'][_0xbb10('0x8c')]({'attributes':['id'],'raw':!![]})[_0xbb10('0x1e')](function(_0x33ff06){if(_[_0xbb10('0x6e')](_0x33ff06)){_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8d'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x8d'));}else{_0xfe3db0[_0xbb10('0x3d')]('i.MailAccountId\x20IN\x20?',_[_0xbb10('0x30')](_0x33ff06,'id'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),_[_0xbb10('0x30')](_0x33ff06,'id'));}});})['then'](function(){if(_0x188cbd['user'][_0xbb10('0x8b')]===_0xbb10('0x8e')&&!_0x10159b&&!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x89')])return[];return db['sequelize'][_0xbb10('0x34')](_0xfe3db0[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0xf7b3e1){_0x2b5352[_0xbb10('0x19')]=_0xf7b3e1['length'];if(_0x2b5352['count']===0x0)return[];return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x403beb[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x256b35){_0x23dc18=_[_0xbb10('0x91')](_0x256b35,'id');_0x122d38=_['merge'](_0x122d38,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x38')]){_0x3c8d7d[_0xbb10('0x39')]['forEach'](function(_0x32d5a5){_0x3efa96[_0xbb10('0x3e')]('i.'+_0x32d5a5);});}else{_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x85'),_0xbb10('0x57'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x92'),_0xbb10('0x93'));_0x3efa96[_0xbb10('0x3e')]('a.mandatoryDisposition',_0xbb10('0x94'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x95'),_0xbb10('0x96'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x84'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x97'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x98'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x99'));_0x3efa96['field']('i.closedAt');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9a'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9b'));_0x3efa96[_0xbb10('0x3e')]('i.lastMsgDirection');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9c'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9d'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9e'));_0x3efa96['field'](_0xbb10('0x9f'));_0x3efa96[_0xbb10('0x3e')]('i.substatus');_0x3efa96[_0xbb10('0x3e')]('i.to');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa0'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa1'));_0x3efa96[_0xbb10('0x3e')]('i.UserId');_0x3efa96[_0xbb10('0x3e')]('c.firstName',_0xbb10('0xa2'));_0x3efa96[_0xbb10('0x3e')]('c.lastName','Contact.lastName');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa3'),_0xbb10('0xa4'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa5'),_0xbb10('0xa6'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa7'),_0xbb10('0xa8'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa9'),'Contact.fax');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xaa'),_0xbb10('0xab'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xac'),_0xbb10('0xad'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xae'),_0xbb10('0x24'));}if(_0x3c8d7d[_0xbb10('0x18')])_0x3efa96[_0xbb10('0x18')](_0x3c8d7d[_0xbb10('0x18')]);if(_0x3c8d7d['offset'])_0x3efa96[_0xbb10('0x16')](_0x3c8d7d['offset']);return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x3efa96[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0x38d369){if(_0x38d369['length']>0x0)_0x180933[_0xbb10('0x3d')](_0xbb10('0xaf'),_[_0xbb10('0x30')](_0x38d369,'id'));return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x180933[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x4bd470){var _0x5cc9d7=_[_0xbb10('0xb0')](_0x4bd470,_0xbb10('0xb1'));var _0x57d5a1=[];return db[_0xbb10('0xb2')][_0xbb10('0xb3')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0xbb10('0x1e')](function(_0xaede56){var _0x5642c3=_0xaede56[_0xbb10('0xb4')];_0x38d369['forEach'](function(_0x34cec7){_0x57d5a1[_0xbb10('0x28')](updateMailInteraction(_0x34cec7,_0x23dc18,_0x5cc9d7,_0x5642c3));});return BPromise['all'](_0x57d5a1);});});});})[_0xbb10('0x1e')](function(_0x28cc74){_0x2b5352['rows']=_0x28cc74;return _0x2b5352;})['then'](respondWithFilteredResult(_0x10202c,_0x3c8d7d))[_0xbb10('0x2e')](handleError(_0x10202c,null));};exports[_0xbb10('0xb5')]=function(_0x3e0e34,_0x3299bc){var _0x3ceb77={'raw':![],'where':{'id':_0x3e0e34[_0xbb10('0xb6')]['id']}},_0x4c3bdc={};_0x4c3bdc[_0xbb10('0x33')]=_[_0xbb10('0x35')](db['MailInteraction'][_0xbb10('0xb7')]);_0x4c3bdc[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x3e0e34[_0xbb10('0x34')]);_0x4c3bdc[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x4c3bdc[_0xbb10('0x33')],_0x4c3bdc[_0xbb10('0x34')]);_0x3ceb77[_0xbb10('0x39')]=_['intersection'](_0x4c3bdc['model'],qs[_0xbb10('0x38')](_0x3e0e34[_0xbb10('0x34')][_0xbb10('0x38')]));_0x3ceb77[_0xbb10('0x39')]=_0x3ceb77[_0xbb10('0x39')][_0xbb10('0x55')]?_0x3ceb77[_0xbb10('0x39')]:_0x4c3bdc[_0xbb10('0x33')];if(_0x3e0e34[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x3ceb77[_0xbb10('0xb9')]=[{'all':!![]}];}_0x3ceb77=_[_0xbb10('0xba')]({},_0x3ceb77,_0x3e0e34[_0xbb10('0xbb')]);return db['MailInteraction'][_0xbb10('0x56')](_0x3ceb77)[_0xbb10('0x1e')](handleEntityNotFound(_0x3299bc,null))[_0xbb10('0x1e')](respondWithResult(_0x3299bc,null))[_0xbb10('0x2e')](handleError(_0x3299bc,null));};exports[_0xbb10('0xbc')]=function(_0xd9284e,_0x4258fc){return db[_0xbb10('0x31')][_0xbb10('0xbc')](_0xd9284e[_0xbb10('0xbd')],{})[_0xbb10('0x1e')](respondWithResult(_0x4258fc,0xc9))['catch'](handleError(_0x4258fc,null));};exports[_0xbb10('0x1c')]=function(_0x5e1ac5,_0x3faaca){if(_0x5e1ac5[_0xbb10('0xbd')]['id']){delete _0x5e1ac5[_0xbb10('0xbd')]['id'];}return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x5e1ac5[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x3faaca,null))[_0xbb10('0x1e')](saveUpdates(_0x5e1ac5['body'],null))[_0xbb10('0x1e')](respondWithResult(_0x3faaca,null))[_0xbb10('0x2e')](handleError(_0x3faaca,null));};exports[_0xbb10('0x1d')]=function(_0x576bb6,_0x2b652c){return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x576bb6[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x2b652c,null))[_0xbb10('0x1e')](removeEntity(_0x2b652c,null))[_0xbb10('0x2e')](handleError(_0x2b652c,null));};exports[_0xbb10('0xbe')]=function(_0x589565,_0x3696b3){return db['MailInteraction'][_0xbb10('0xbe')]()[_0xbb10('0x1e')](respondWithResult(_0x3696b3,null))[_0xbb10('0x2e')](handleError(_0x3696b3,null));};exports[_0xbb10('0xbf')]=function(_0x44c229,_0x40271f){return db[_0xbb10('0x29')]['find']({'where':{'id':_0x44c229[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x40271f,null))['then'](function(_0x1513e0){if(_0x1513e0){return _0x1513e0[_0xbb10('0xbf')](_0x44c229[_0xbb10('0xbd')][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x44c229[_0xbb10('0xbd')],['ids','id'])||{});}})[_0xbb10('0x1e')](respondWithResult(_0x40271f,null))[_0xbb10('0x2e')](handleError(_0x40271f,null));};exports[_0xbb10('0xc2')]=function(_0xb1b7c8,_0x136520){var _0x28127c={'raw':![],'where':{}};var _0x528aff={};var _0xdfdc42={'count':0x0,'rows':[]};return db[_0xbb10('0x31')][_0xbb10('0xb3')]({'where':{'id':_0xb1b7c8[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x136520,null))[_0xbb10('0x1e')](function(_0x2764e1){if(_0x2764e1){_0x528aff['model']=_[_0xbb10('0x35')](db['MailMessage'][_0xbb10('0xb7')]);_0x528aff['query']=_['keys'](_0xb1b7c8[_0xbb10('0x34')]);_0x528aff[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x528aff[_0xbb10('0x33')],_0x528aff[_0xbb10('0x34')]);_0x28127c['attributes']=_[_0xbb10('0x37')](_0x528aff['model'],qs['fields'](_0xb1b7c8['query'][_0xbb10('0x38')]));_0x28127c[_0xbb10('0x39')]=_0x28127c[_0xbb10('0x39')][_0xbb10('0x55')]?_0x28127c[_0xbb10('0x39')]:_0x528aff['model'];if(!_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3a')](_0xbb10('0xc3'))){_0x28127c[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x18')]);_0x28127c['offset']=qs['offset'](_0xb1b7c8['query'][_0xbb10('0x16')]);}_0x28127c[_0xbb10('0x3b')]=qs[_0xbb10('0x3c')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x28127c[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_[_0xbb10('0xc4')](_0xb1b7c8[_0xbb10('0x34')],_0x528aff[_0xbb10('0x36')]));_0x28127c['where']['MailInteractionId']=_0x2764e1['id'];if(_0xb1b7c8['query'][_0xbb10('0x7c')]){_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c['where'],{'$or':_[_0xbb10('0x30')](_0x28127c[_0xbb10('0x39')],function(_0x2c638d){var _0x290280={};_0x290280[_0x2c638d]={'$like':'%'+_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x7c')]+'%'};return _0x290280;})});}if(_0xb1b7c8['query']['$gte']){var _0x356660=_0xb1b7c8['query'][_0xbb10('0xc5')][_0xbb10('0x26')](',');var _0x152ca9={};_0x152ca9[_0x356660[0x0]]={'$gte':moment(_0x356660[0x1])[_0xbb10('0xc6')](_0xbb10('0xc7'))};_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c[_0xbb10('0x3d')],_0x152ca9);}_0x28127c=_[_0xbb10('0xba')]({},_0x28127c,_0xb1b7c8[_0xbb10('0xbb')]);return db['MailMessage'][_0xbb10('0x19')]({'where':_0x28127c['where']})[_0xbb10('0x1e')](function(_0x5547fa){_0xdfdc42[_0xbb10('0x19')]=_0x5547fa;if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x28127c[_0xbb10('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0xbb10('0xc8')](_0x28127c);})['then'](function(_0xfe1154){if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xc9')]==='true'){for(var _0x298167=0x0;_0x298167<_0xfe1154[_0xbb10('0x55')];_0x298167++){_0xfe1154[_0x298167][_0xbb10('0xbd')]=juice(_0xfe1154[_0x298167][_0xbb10('0xbd')]);}}_0xdfdc42[_0xbb10('0xca')]=_0xfe1154;return _0xdfdc42;});}})[_0xbb10('0x1e')](respondWithFilteredResult(_0x136520,_0x28127c))['catch'](handleError(_0x136520,null));};exports['addTags']=function(_0x522a88,_0x26a752){return db['MailInteraction'][_0xbb10('0x56')]({'where':{'id':_0x522a88['params']['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x26a752,null))[_0xbb10('0x1e')](function(_0x385ad3){if(_0x385ad3){return _0x385ad3['setTags'](_0x522a88['body'][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x522a88[_0xbb10('0xbd')],['ids','id'])||{})[_0xbb10('0xcb')](function(){return db[_0xbb10('0x65')][_0xbb10('0xc8')]({'attributes':['id','name','color'],'where':{'id':_0x522a88['body'][_0xbb10('0xc0')]}});})['then'](function(_0x3dfbcd){socket[_0xbb10('0xcc')](_0xbb10('0xcd'),{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]});return{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]};});}})[_0xbb10('0x1e')](respondWithResult(_0x26a752,null))[_0xbb10('0x2e')](handleError(_0x26a752,null));};exports[_0xbb10('0xce')]=function(_0x2746eb,_0x431792){return db[_0xbb10('0x31')]['find']({'where':{'id':_0x2746eb[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x431792,null))['then'](function(_0x14ef50){if(_0x14ef50){return _0x14ef50['removeTags'](_0x2746eb['query'][_0xbb10('0xc0')]);}})[_0xbb10('0x1e')](respondWithStatusCode(_0x431792,null))[_0xbb10('0x2e')](handleError(_0x431792,null));};exports[_0xbb10('0xcf')]=function(_0x99c4,_0x4ca4ce){var _0x161171=moment()[_0xbb10('0xd0')]()['toString']();var _0xa45726=path[_0xbb10('0xd1')](config['root'],_0xbb10('0xd2'),'files',_0xbb10('0xd3'));var _0x8e8049=path[_0xbb10('0xd1')](config[_0xbb10('0xd4')],_0xbb10('0xd2'),_0xbb10('0xd5'),_0xbb10('0xd6'));var _0x56f902=path[_0xbb10('0xd1')](_0xa45726,_0x161171);var _0x4720a1=util[_0xbb10('0xc6')](_0xbb10('0xd7'),_0x99c4[_0xbb10('0xb6')]['id'],_0x161171);var _0x1301e3=path['join'](_0xa45726,_0x4720a1);var _0x550301=[];if(_0x99c4['query'][_0xbb10('0xd6')]){_0x550301[_0xbb10('0x28')]({'model':db[_0xbb10('0xd8')],'as':_0xbb10('0xd9'),'raw':!![]});}var _0x57700b=[{'model':db[_0xbb10('0x29')],'as':_0xbb10('0xda'),'attributes':['id',_0xbb10('0xbd'),'from','to','cc','bcc',_0xbb10('0xdb'),'createdAt'],'where':{'secret':![]},'order':qs[_0xbb10('0x3c')]('id'),'include':_0x550301}];return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x99c4[_0xbb10('0xb6')]['id']},'include':_0x57700b})[_0xbb10('0x1e')](handleEntityNotFound(_0x4ca4ce,null))[_0xbb10('0x1e')](function(_0x1fe250){if(_0x1fe250&&_0x1fe250['Messages']){var _0x424371=_0x1fe250[_0xbb10('0xdc')]({'plain':!![]});fs['mkdirSync'](_0x56f902);return BPromise[_0xbb10('0xdd')](_0x424371[_0xbb10('0xda')],function(_0x32f261,_0x5b11a2){var _0x4b490a={'from':_0x32f261['from'],'to':_0x32f261['to'],'subject':_0x32f261[_0xbb10('0xdb')],'html':_0x32f261[_0xbb10('0xbd')],'headers':{'Date':moment(_0x32f261['createdAt'])[_0xbb10('0xc6')](_0xbb10('0xde'))},'attachments':[]};if(_0x32f261['cc']){_0x4b490a[_0xbb10('0xdf')]['Cc']=_0x32f261['cc'];}if(_0x32f261[_0xbb10('0xe0')]){_0x4b490a[_0xbb10('0xdf')][_0xbb10('0xe1')]=_0x32f261[_0xbb10('0xe0')];}return new BPromise(function(_0x48f0eb,_0x304603){if(_0x32f261['Attachments']){for(var _0x5a7c4e=0x0;_0x5a7c4e<_0x32f261['Attachments'][_0xbb10('0x55')];_0x5a7c4e++){var _0x572d73=_0x32f261['Attachments'][_0x5a7c4e];var _0x1f09f1=path['join'](_0x8e8049,_0x572d73[_0xbb10('0xe2')]);if(fs[_0xbb10('0xe3')](_0x1f09f1)){_0x4b490a[_0xbb10('0xd6')]['push']({'name':_0x572d73['name'],'contentType':_0x572d73[_0xbb10('0x63')],'data':fs['readFileSync'](_0x1f09f1)});}}}emlformat[_0xbb10('0xe4')](_0x4b490a,function(_0x211172,_0x589ecb){if(_0x211172)return _0x304603(_0x211172);fs['writeFileSync'](path[_0xbb10('0xd1')](_0x56f902,util[_0xbb10('0xc6')](_0xbb10('0xe5'),_0x5b11a2)),_0x589ecb);return _0x48f0eb(_0x589ecb);});});})['then'](function(){return new BPromise(function(_0x4f4aa8,_0x426a4f){zipdir(_0x56f902,{'saveTo':_0x1301e3},function(_0x22f153,_0x4d47cc){if(_0x22f153)return _0x426a4f(_0x22f153);return _0x4f4aa8(_0x4d47cc);});})[_0xbb10('0x1e')](function(){return new BPromise(function(_0x203e5a,_0xe88e90){rimraf(_0x56f902,function(_0x4845b5){if(_0x4845b5)_0xe88e90(_0x4845b5);return _0x203e5a();});});})[_0xbb10('0x1e')](function(){return _0x4ca4ce[_0xbb10('0xcf')](_0x1301e3,_0x4720a1,function(_0x166f4f){if(!_0x166f4f)fs[_0xbb10('0xe6')](_0x1301e3);});});});}else{return _0x4ca4ce[_0xbb10('0x12')](0xc8);}})[_0xbb10('0x2e')](handleError(_0x4ca4ce,null));};
\ No newline at end of file
+var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0x1c557a,_0x554e3b){var _0x30fc54=function(_0x17e964){while(--_0x17e964){_0x1c557a['push'](_0x1c557a['shift']());}};_0x30fc54(++_0x554e3b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
index b4c3185..661e31e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb844=['hasOwnProperty','hook','exports','../../mysqldb','MailMessage','setMaxListeners','save','remove','getUsers','setDataValue','Users','map','findAll','then','unreadMessages','emit','catch'];(function(_0x3a0863,_0x4cd5ef){var _0x85c557=function(_0x3011cb){while(--_0x3011cb){_0x3a0863['push'](_0x3a0863['shift']());}};_0x85c557(++_0x4cd5ef);}(_0xb844,0x146));var _0x4b84=function(_0x4af0b3,_0x1729d5){_0x4af0b3=_0x4af0b3-0x0;var _0x4ea8c0=_0xb844[_0x4af0b3];return _0x4ea8c0;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0x4b84('0x0'))['db']['MailInteraction'];var MailMessage=require(_0x4b84('0x0'))['db'][_0x4b84('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x4b84('0x2')](0x0);var events={'afterCreate':_0x4b84('0x3'),'afterUpdate':'update','afterDestroy':_0x4b84('0x4')};function emitEvent(_0x8f38c6){return function(_0x25af74,_0x2163c2,_0x48a82c){_0x25af74[_0x4b84('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x39d955){_0x25af74[_0x4b84('0x6')](_0x4b84('0x7'),_0x39d955[_0x4b84('0x8')](function(_0x1ac456){return{'id':_0x1ac456['id']};}));return MailMessage[_0x4b84('0x9')]({'where':{'MailInteractionId':_0x25af74['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4b84('0xa')](function(_0x248938){_0x25af74[_0x4b84('0x6')](_0x4b84('0xb'),_0x248938['length']);MailInteractionEvents[_0x4b84('0xc')](_0x8f38c6+':'+_0x25af74['id'],_0x25af74);MailInteractionEvents[_0x4b84('0xc')](_0x8f38c6,_0x25af74);_0x48a82c(null);})[_0x4b84('0xd')](_0x48a82c(null));};}for(var e in events){if(events[_0x4b84('0xe')](e)){var event=events[e];MailInteraction[_0x4b84('0xf')](e,emitEvent(event));}}module[_0x4b84('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0x64a4=['emit','catch','hasOwnProperty','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','unreadMessages','length'];(function(_0x472832,_0xff9aab){var _0x19b176=function(_0x4a7279){while(--_0x4a7279){_0x472832['push'](_0x472832['shift']());}};_0x19b176(++_0xff9aab);}(_0x64a4,0xa6));var _0x464a=function(_0x497cd7,_0x1caaf9){_0x497cd7=_0x497cd7-0x0;var _0x433a55=_0x64a4[_0x497cd7];return _0x433a55;};'use strict';var EventEmitter=require(_0x464a('0x0'));var MailInteraction=require(_0x464a('0x1'))['db'][_0x464a('0x2')];var MailMessage=require(_0x464a('0x1'))['db'][_0x464a('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x464a('0x4')](0x0);var events={'afterCreate':_0x464a('0x5'),'afterUpdate':_0x464a('0x6'),'afterDestroy':_0x464a('0x7')};function emitEvent(_0x6c641f){return function(_0x2b5d31,_0x328b20,_0x46cb75){_0x2b5d31['getUsers']({'attributes':['id'],'raw':!![]})[_0x464a('0x8')](function(_0x3d0164){_0x2b5d31[_0x464a('0x9')](_0x464a('0xa'),_0x3d0164[_0x464a('0xb')](function(_0x54d91f){return{'id':_0x54d91f['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x2b5d31['id'],'direction':'in','read':![]},'raw':!![]});})[_0x464a('0x8')](function(_0x38bda2){_0x2b5d31['setDataValue'](_0x464a('0xc'),_0x38bda2[_0x464a('0xd')]);MailInteractionEvents[_0x464a('0xe')](_0x6c641f+':'+_0x2b5d31['id'],_0x2b5d31);MailInteractionEvents[_0x464a('0xe')](_0x6c641f,_0x2b5d31);_0x46cb75(null);})[_0x464a('0xf')](_0x46cb75(null));};}for(var e in events){if(events[_0x464a('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x464a('0x11')]=MailInteractionEvents;
\ No newline at end of file
index a33bdd1..6fdfe00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b2a=['path','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','changed','closedAt','models','MailMessage','update','then','catch','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2503c7,_0xd1280a){var _0x2286b8=function(_0x3332ff){while(--_0x3332ff){_0x2503c7['push'](_0x2503c7['shift']());}};_0x2286b8(++_0xd1280a);}(_0x0b2a,0x19a));var _0xa0b2=function(_0x274d88,_0x5abbb6){_0x274d88=_0x274d88-0x0;var _0x219c5c=_0x0b2a[_0x274d88];return _0x219c5c;};'use strict';var _=require('lodash');var util=require(_0xa0b2('0x0'));var logger=require(_0xa0b2('0x1'))(_0xa0b2('0x2'));var moment=require(_0xa0b2('0x3'));var BPromise=require(_0xa0b2('0x4'));var rp=require(_0xa0b2('0x5'));var fs=require('fs');var path=require(_0xa0b2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailInteraction.attributes');module[_0xa0b2('0x7')]=function(_0x283887,_0x1f0872){return _0x283887[_0xa0b2('0x8')](_0xa0b2('0x9'),attributes,{'tableName':_0xa0b2('0xa'),'paranoid':![],'indexes':[{'name':_0xa0b2('0xb'),'fields':[_0xa0b2('0xc'),'to'],'type':_0xa0b2('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x26689c,_0x53dc16,_0xa7e425){if(_0x26689c[_0xa0b2('0xe')]){_0x26689c[_0xa0b2('0xf')]=moment()[_0xa0b2('0x10')](_0xa0b2('0x11'));}if(_0x26689c[_0xa0b2('0x12')]){_0x26689c['closedAt']=moment()[_0xa0b2('0x10')](_0xa0b2('0x11'));}_0xa7e425(null,_0x53dc16);},'beforeUpdate':function(_0x3e4568,_0x67c6cf,_0x59c911){if(_0x3e4568[_0xa0b2('0x13')](_0xa0b2('0xe'))){_0x3e4568[_0xa0b2('0xf')]=_0x3e4568[_0xa0b2('0xe')]?moment()[_0xa0b2('0x10')](_0xa0b2('0x11')):null;}if(_0x3e4568[_0xa0b2('0x13')]('closed')){_0x3e4568[_0xa0b2('0x14')]=moment()[_0xa0b2('0x10')](_0xa0b2('0x11'));_0x3e4568[_0xa0b2('0xe')]=null;_0x3e4568[_0xa0b2('0xf')]=null;}_0x59c911(null,_0x3e4568);},'afterUpdate':function(_0x2b659a,_0x1426e4,_0x1bf0de){var _0x55d8d0=_0x283887[_0xa0b2('0x15')];var _0x380705=_0x2b659a['get']({'plain':!![]});if(_0x380705[_0xa0b2('0x12')]){return _0x55d8d0[_0xa0b2('0x16')][_0xa0b2('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x380705['id']}})[_0xa0b2('0x18')](function(){_0x1bf0de();})[_0xa0b2('0x19')](function(_0x2b5b8e){_0x1bf0de(_0x2b5b8e);});}else{_0x1bf0de();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x137e=['define','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','closed','MailMessage','update','then','catch','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./mailInteraction.attributes','exports'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x137e,0x17c));var _0xe137=function(_0x2e0e33,_0x2b7155){_0x2e0e33=_0x2e0e33-0x0;var _0x297534=_0x137e[_0x2e0e33];return _0x297534;};'use strict';var _=require('lodash');var util=require(_0xe137('0x0'));var logger=require(_0xe137('0x1'))(_0xe137('0x2'));var moment=require(_0xe137('0x3'));var BPromise=require(_0xe137('0x4'));var rp=require(_0xe137('0x5'));var fs=require('fs');var path=require(_0xe137('0x6'));var rimraf=require('rimraf');var config=require(_0xe137('0x7'));var attributes=require(_0xe137('0x8'));module[_0xe137('0x9')]=function(_0x1eb444,_0x22cee6){return _0x1eb444[_0xe137('0xa')]('MailInteraction',attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0xe137('0xb'),'fields':[_0xe137('0xc'),'to'],'type':_0xe137('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x36cdd6,_0x2efa59,_0x46f404){if(_0x36cdd6[_0xe137('0xe')]){_0x36cdd6[_0xe137('0xf')]=moment()[_0xe137('0x10')](_0xe137('0x11'));}if(_0x36cdd6['closed']){_0x36cdd6[_0xe137('0x12')]=moment()[_0xe137('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x46f404(null,_0x2efa59);},'beforeUpdate':function(_0x39c2af,_0x3ef5e7,_0x17b2ec){if(_0x39c2af[_0xe137('0x13')](_0xe137('0xe'))){_0x39c2af[_0xe137('0xf')]=_0x39c2af[_0xe137('0xe')]?moment()[_0xe137('0x10')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x39c2af[_0xe137('0x13')](_0xe137('0x14'))){_0x39c2af[_0xe137('0x12')]=moment()[_0xe137('0x10')](_0xe137('0x11'));_0x39c2af['substatus']=null;_0x39c2af[_0xe137('0xf')]=null;}_0x17b2ec(null,_0x39c2af);},'afterUpdate':function(_0x11440f,_0x1350c5,_0x540b19){var _0x329852=_0x1eb444['models'];var _0x5ab70c=_0x11440f['get']({'plain':!![]});if(_0x5ab70c['closed']){return _0x329852[_0xe137('0x15')][_0xe137('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x5ab70c['id']}})[_0xe137('0x17')](function(){_0x540b19();})[_0xe137('0x18')](function(_0x109226){_0x540b19(_0x109226);});}else{_0x540b19();}}},'charset':'utf8mb4','collate':_0xe137('0x19')});};
\ No newline at end of file
index 4e39f86..ecc5530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aed=['moment','ioredis','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','request','then','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','UpdateMailInteraction','MailInteraction','update','body','raw','options','attributes','limit','AddTagsToMailInteraction','find','where','addTags','ids','omit','AddTags'];(function(_0x41390d,_0x595738){var _0x3d2925=function(_0x460f80){while(--_0x460f80){_0x41390d['push'](_0x41390d['shift']());}};_0x3d2925(++_0x595738);}(_0x9aed,0x9c));var _0xd9ae=function(_0x55bf92,_0x17eefd){_0x55bf92=_0x55bf92-0x0;var _0x286ca3=_0x9aed[_0x55bf92];return _0x286ca3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd9ae('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd9ae('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd9ae('0x2'))(_0xd9ae('0x3'));var config=require(_0xd9ae('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xd9ae('0x5')]['http']({'port':0x232a});config[_0xd9ae('0x6')]=_[_0xd9ae('0x7')](config[_0xd9ae('0x6')],{'host':_0xd9ae('0x8'),'port':0x18eb});var socket=require(_0xd9ae('0x9'))(new Redis(config['redis']));require(_0xd9ae('0xa'))[_0xd9ae('0xb')](socket);function respondWithRpcPromise(_0x2ed593,_0x20f67a,_0x38850d){return new BPromise(function(_0x496ea3,_0xc48070){return client[_0xd9ae('0xc')](_0x2ed593,_0x38850d)[_0xd9ae('0xd')](function(_0x2834f1){logger['info'](_0xd9ae('0xe'),_0x20f67a,_0xd9ae('0xf'));logger[_0xd9ae('0x10')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x20f67a,_0xd9ae('0xf'),JSON[_0xd9ae('0x11')](_0x2834f1));if(_0x2834f1[_0xd9ae('0x12')]){if(_0x2834f1['error'][_0xd9ae('0x13')]===0x1f4){logger['error'](_0xd9ae('0xe'),_0x20f67a,_0x2834f1[_0xd9ae('0x12')]['message']);return _0xc48070(_0x2834f1[_0xd9ae('0x12')]['message']);}logger[_0xd9ae('0x12')](_0xd9ae('0xe'),_0x20f67a,_0x2834f1[_0xd9ae('0x12')][_0xd9ae('0x14')]);return _0x496ea3(_0x2834f1[_0xd9ae('0x12')][_0xd9ae('0x14')]);}else{logger[_0xd9ae('0x15')]('MailInteraction,\x20%s,\x20%s',_0x20f67a,_0xd9ae('0xf'));_0x496ea3(_0x2834f1[_0xd9ae('0x16')][_0xd9ae('0x14')]);}})[_0xd9ae('0x17')](function(_0x32d5ad){logger[_0xd9ae('0x12')](_0xd9ae('0xe'),_0x20f67a,_0x32d5ad);_0xc48070(_0x32d5ad);});});}exports[_0xd9ae('0x18')]=function(_0x3b5d5a){var _0xb8a3c3=this;return new Promise(function(_0x41c0ea,_0x334258){return db[_0xd9ae('0x19')][_0xd9ae('0x1a')](_0x3b5d5a[_0xd9ae('0x1b')],{'raw':_0x3b5d5a['options']?_0x3b5d5a['options'][_0xd9ae('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b5d5a[_0xd9ae('0x1d')]?_0x3b5d5a['options']['where']||null:null,'attributes':_0x3b5d5a[_0xd9ae('0x1d')]?_0x3b5d5a['options'][_0xd9ae('0x1e')]||null:null,'limit':_0x3b5d5a['options']?_0x3b5d5a['options'][_0xd9ae('0x1f')]||null:null})[_0xd9ae('0xd')](function(_0x160443){logger[_0xd9ae('0x15')](_0xd9ae('0x18'),_0x3b5d5a);logger['debug'](_0xd9ae('0x18'),_0x3b5d5a,JSON['stringify'](_0x160443));_0x41c0ea(_0x160443);})['catch'](function(_0xb0ac6a){logger['error'](_0xd9ae('0x18'),_0xb0ac6a['message'],_0x3b5d5a);_0x334258(_0xb8a3c3[_0xd9ae('0x12')](0x1f4,_0xb0ac6a[_0xd9ae('0x14')]));});});};exports[_0xd9ae('0x20')]=function(_0x16c4c6){return new Promise(function(_0xb28778,_0x5743d9){return db['MailInteraction'][_0xd9ae('0x21')]({'where':_0x16c4c6[_0xd9ae('0x1d')]?_0x16c4c6['options'][_0xd9ae('0x22')]||null:null})[_0xd9ae('0xd')](function(_0x5d7ac0){if(_0x5d7ac0){return _0x5d7ac0[_0xd9ae('0x23')](_0x16c4c6[_0xd9ae('0x1b')][_0xd9ae('0x24')],_[_0xd9ae('0x25')](_0x16c4c6[_0xd9ae('0x1b')],[_0xd9ae('0x24'),'id'])||{});}})['spread'](function(_0xcdd6f1){logger[_0xd9ae('0x15')]('AddTags',_0x16c4c6);logger[_0xd9ae('0x10')](_0xd9ae('0x26'),_0x16c4c6,JSON[_0xd9ae('0x11')](_0xcdd6f1));_0xb28778(_0xcdd6f1);})[_0xd9ae('0x17')](function(_0x2f1e41){logger['error']('AddTags',_0x2f1e41['message'],_0x16c4c6);_0x5743d9(_this[_0xd9ae('0x12')](0x1f4,_0x2f1e41[_0xd9ae('0x14')]));});});};
\ No newline at end of file
+var _0xd816=['request','then','MailInteraction,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','attributes','limit','info','AddTagsToMailInteraction','find','addTags','ids','omit','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','./mailInteraction.socket','register'];(function(_0x3815c2,_0x1f54e3){var _0x271f88=function(_0x53963c){while(--_0x53963c){_0x3815c2['push'](_0x3815c2['shift']());}};_0x271f88(++_0x1f54e3);}(_0xd816,0x18b));var _0x6d81=function(_0x40256b,_0xcdad89){_0x40256b=_0x40256b-0x0;var _0x2b0773=_0xd816[_0x40256b];return _0x2b0773;};'use strict';var _=require('lodash');var util=require(_0x6d81('0x0'));var moment=require(_0x6d81('0x1'));var BPromise=require(_0x6d81('0x2'));var rs=require(_0x6d81('0x3'));var fs=require('fs');var Redis=require(_0x6d81('0x4'));var db=require(_0x6d81('0x5'))['db'];var utils=require(_0x6d81('0x6'));var logger=require(_0x6d81('0x7'))(_0x6d81('0x8'));var config=require('../../config/environment');var jayson=require(_0x6d81('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x6d81('0xa')]=_[_0x6d81('0xb')](config['redis'],{'host':_0x6d81('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6d81('0xd'))[_0x6d81('0xe')](socket);function respondWithRpcPromise(_0x1213a7,_0x2ef1d2,_0x1686c3){return new BPromise(function(_0xe6a403,_0x105bda){return client[_0x6d81('0xf')](_0x1213a7,_0x1686c3)[_0x6d81('0x10')](function(_0x543f58){logger['info'](_0x6d81('0x11'),_0x2ef1d2,'request\x20sent');logger[_0x6d81('0x12')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x2ef1d2,'request\x20sent',JSON[_0x6d81('0x13')](_0x543f58));if(_0x543f58[_0x6d81('0x14')]){if(_0x543f58[_0x6d81('0x14')][_0x6d81('0x15')]===0x1f4){logger[_0x6d81('0x14')]('MailInteraction,\x20%s,\x20%s',_0x2ef1d2,_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);return _0x105bda(_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);}logger['error'](_0x6d81('0x11'),_0x2ef1d2,_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);return _0xe6a403(_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);}else{logger['info'](_0x6d81('0x11'),_0x2ef1d2,'request\x20sent');_0xe6a403(_0x543f58[_0x6d81('0x17')][_0x6d81('0x16')]);}})[_0x6d81('0x18')](function(_0x51ba89){logger['error'](_0x6d81('0x11'),_0x2ef1d2,_0x51ba89);_0x105bda(_0x51ba89);});});}exports[_0x6d81('0x19')]=function(_0x27800c){var _0x3d0fae=this;return new Promise(function(_0x1f58c1,_0x401850){return db[_0x6d81('0x1a')][_0x6d81('0x1b')](_0x27800c[_0x6d81('0x1c')],{'raw':_0x27800c[_0x6d81('0x1d')]?_0x27800c[_0x6d81('0x1d')][_0x6d81('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27800c['options']?_0x27800c[_0x6d81('0x1d')][_0x6d81('0x1f')]||null:null,'attributes':_0x27800c[_0x6d81('0x1d')]?_0x27800c['options'][_0x6d81('0x20')]||null:null,'limit':_0x27800c[_0x6d81('0x1d')]?_0x27800c['options'][_0x6d81('0x21')]||null:null})['then'](function(_0x12049e){logger[_0x6d81('0x22')](_0x6d81('0x19'),_0x27800c);logger[_0x6d81('0x12')](_0x6d81('0x19'),_0x27800c,JSON[_0x6d81('0x13')](_0x12049e));_0x1f58c1(_0x12049e);})['catch'](function(_0x5e951f){logger['error'](_0x6d81('0x19'),_0x5e951f[_0x6d81('0x16')],_0x27800c);_0x401850(_0x3d0fae[_0x6d81('0x14')](0x1f4,_0x5e951f[_0x6d81('0x16')]));});});};exports[_0x6d81('0x23')]=function(_0x2f4ed3){return new Promise(function(_0x63c59f,_0xadc392){return db[_0x6d81('0x1a')][_0x6d81('0x24')]({'where':_0x2f4ed3[_0x6d81('0x1d')]?_0x2f4ed3[_0x6d81('0x1d')][_0x6d81('0x1f')]||null:null})[_0x6d81('0x10')](function(_0x4eb030){if(_0x4eb030){return _0x4eb030[_0x6d81('0x25')](_0x2f4ed3[_0x6d81('0x1c')][_0x6d81('0x26')],_[_0x6d81('0x27')](_0x2f4ed3[_0x6d81('0x1c')],[_0x6d81('0x26'),'id'])||{});}})['spread'](function(_0x23ca17){logger['info'](_0x6d81('0x28'),_0x2f4ed3);logger['debug'](_0x6d81('0x28'),_0x2f4ed3,JSON[_0x6d81('0x13')](_0x23ca17));_0x63c59f(_0x23ca17);})[_0x6d81('0x18')](function(_0x2245cc){logger[_0x6d81('0x14')](_0x6d81('0x28'),_0x2245cc['message'],_0x2f4ed3);_0xadc392(_this['error'](0x1f4,_0x2245cc[_0x6d81('0x16')]));});});};
\ No newline at end of file
index d7ed873..87da1df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ba=['save','remove','update','length','mailInteraction:','./mailInteraction.events'];(function(_0x5ed7f8,_0x397262){var _0x4cc495=function(_0x4f5461){while(--_0x4f5461){_0x5ed7f8['push'](_0x5ed7f8['shift']());}};_0x4cc495(++_0x397262);}(_0x27ba,0x1b5));var _0xa27b=function(_0x26e0d9,_0x3bbeff){_0x26e0d9=_0x26e0d9-0x0;var _0x3ed4bb=_0x27ba[_0x26e0d9];return _0x3ed4bb;};'use strict';var MailInteractionEvents=require(_0xa27b('0x0'));var events=[_0xa27b('0x1'),_0xa27b('0x2'),_0xa27b('0x3')];function createListener(_0x17c5b5,_0x3927a1){return function(_0x5c1a5e){_0x3927a1['emit'](_0x17c5b5,_0x5c1a5e);};}function removeListener(_0x4c0af0,_0x12e009){return function(){MailInteractionEvents['removeListener'](_0x4c0af0,_0x12e009);};}exports['register']=function(_0x4ca25d){for(var _0x1eb5c9=0x0,_0x35dc43=events[_0xa27b('0x4')];_0x1eb5c9<_0x35dc43;_0x1eb5c9++){var _0x203b6b=events[_0x1eb5c9];var _0x2e99a8=createListener(_0xa27b('0x5')+_0x203b6b,_0x4ca25d);MailInteractionEvents['on'](_0x203b6b,_0x2e99a8);}};
\ No newline at end of file
+var _0x5c4a=['save','remove','update','emit','removeListener','length'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x5c4a,0x114));var _0xa5c4=function(_0x31ffa3,_0xebda4d){_0x31ffa3=_0x31ffa3-0x0;var _0x5b7296=_0x5c4a[_0x31ffa3];return _0x5b7296;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xa5c4('0x0'),_0xa5c4('0x1'),_0xa5c4('0x2')];function createListener(_0x3a9b4e,_0x422ee1){return function(_0xc8a36c){_0x422ee1[_0xa5c4('0x3')](_0x3a9b4e,_0xc8a36c);};}function removeListener(_0x40ab67,_0x5dcd28){return function(){MailInteractionEvents[_0xa5c4('0x4')](_0x40ab67,_0x5dcd28);};}exports['register']=function(_0x429e85){for(var _0x1313b1=0x0,_0x34c345=events[_0xa5c4('0x5')];_0x1313b1<_0x34c345;_0x1313b1++){var _0x460def=events[_0x1313b1];var _0x26439b=createListener('mailInteraction:'+_0x460def,_0x429e85);MailInteractionEvents['on'](_0x460def,_0x26439b);}};
\ No newline at end of file
index 059cab8..210aaf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6916=['describe','/:id','show','/:id/download','download','post','tracked','mail','mailmessage:create','create','put','/:id/accept','accept','/:id/reject','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x36909d,_0x2795f1){var _0x1fd29d=function(_0x27d0fa){while(--_0x27d0fa){_0x36909d['push'](_0x36909d['shift']());}};_0x1fd29d(++_0x2795f1);}(_0x6916,0x1ed));var _0x6691=function(_0x210fe2,_0x419896){_0x210fe2=_0x210fe2-0x0;var _0x452c68=_0x6916[_0x210fe2];return _0x452c68;};'use strict';var multer=require('multer');var util=require(_0x6691('0x0'));var path=require(_0x6691('0x1'));var timeout=require(_0x6691('0x2'));var express=require(_0x6691('0x3'));var router=express['Router']();var fs_extra=require(_0x6691('0x4'));var auth=require(_0x6691('0x5'));var interaction=require(_0x6691('0x6'));var config=require('../../config/environment');var controller=require('./mailMessage.controller');router[_0x6691('0x7')]('/',auth[_0x6691('0x8')](),controller[_0x6691('0x9')]);router[_0x6691('0x7')](_0x6691('0xa'),auth[_0x6691('0x8')](),controller[_0x6691('0xb')]);router[_0x6691('0x7')](_0x6691('0xc'),auth['isAuthenticated'](),controller[_0x6691('0xd')]);router['get'](_0x6691('0xe'),auth[_0x6691('0x8')](),controller[_0x6691('0xf')]);router[_0x6691('0x10')]('/',auth['isAuthenticated'](),interaction[_0x6691('0x11')](_0x6691('0x12'),_0x6691('0x13')),controller[_0x6691('0x14')]);router[_0x6691('0x15')](_0x6691('0xc'),auth[_0x6691('0x8')](),controller['update']);router[_0x6691('0x15')](_0x6691('0x16'),auth[_0x6691('0x8')](),controller[_0x6691('0x17')]);router[_0x6691('0x15')](_0x6691('0x18'),auth['isAuthenticated'](),controller['reject']);router[_0x6691('0x19')](_0x6691('0xc'),auth[_0x6691('0x8')](),controller[_0x6691('0x1a')]);module[_0x6691('0x1b')]=router;
\ No newline at end of file
+var _0x6215=['describe','show','/:id/download','download','post','mail','mailmessage:create','create','put','/:id','update','/:id/accept','/:id/reject','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6215,0x198));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5621('0x0'));var util=require(_0x5621('0x1'));var path=require(_0x5621('0x2'));var timeout=require('connect-timeout');var express=require(_0x5621('0x3'));var router=express[_0x5621('0x4')]();var fs_extra=require(_0x5621('0x5'));var auth=require(_0x5621('0x6'));var interaction=require(_0x5621('0x7'));var config=require(_0x5621('0x8'));var controller=require('./mailMessage.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5621('0x9')](_0x5621('0xa'),auth[_0x5621('0xb')](),controller[_0x5621('0xc')]);router[_0x5621('0x9')]('/:id',auth[_0x5621('0xb')](),controller[_0x5621('0xd')]);router[_0x5621('0x9')](_0x5621('0xe'),auth['isAuthenticated'](),controller[_0x5621('0xf')]);router[_0x5621('0x10')]('/',auth[_0x5621('0xb')](),interaction['tracked'](_0x5621('0x11'),_0x5621('0x12')),controller[_0x5621('0x13')]);router[_0x5621('0x14')](_0x5621('0x15'),auth[_0x5621('0xb')](),controller[_0x5621('0x16')]);router[_0x5621('0x14')](_0x5621('0x17'),auth[_0x5621('0xb')](),controller['accept']);router[_0x5621('0x14')](_0x5621('0x18'),auth[_0x5621('0xb')](),controller['reject']);router[_0x5621('0x19')](_0x5621('0x15'),auth['isAuthenticated'](),controller[_0x5621('0x1a')]);module[_0x5621('0x1b')]=router;
\ No newline at end of file
index 5cd3992..56cd658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd636=['lodash','exports','TEXT','long','medium','ENUM','out','DATE','INTEGER','BOOLEAN','Email','Chat','sequelize'];(function(_0x133f0e,_0x3c25b6){var _0x11ae34=function(_0x187f92){while(--_0x187f92){_0x133f0e['push'](_0x133f0e['shift']());}};_0x11ae34(++_0x3c25b6);}(_0xd636,0xdc));var _0x6d63=function(_0x2df989,_0x3a5509){_0x2df989=_0x2df989-0x0;var _0x6a7537=_0xd636[_0x2df989];return _0x6a7537;};'use strict';var Sequelize=require(_0x6d63('0x0'));var _=require(_0x6d63('0x1'));module[_0x6d63('0x2')]={'body':{'type':Sequelize[_0x6d63('0x3')](_0x6d63('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x6d63('0x3')](_0x6d63('0x5'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x6d63('0x6')]('in',_0x6d63('0x7')),'defaultValue':_0x6d63('0x7'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['TEXT']('long')},'cc':{'type':Sequelize[_0x6d63('0x3')](_0x6d63('0x4'))},'bcc':{'type':Sequelize[_0x6d63('0x3')](_0x6d63('0x4'))},'subject':{'type':Sequelize[_0x6d63('0x3')]},'sentAt':{'type':Sequelize[_0x6d63('0x8')]},'attach':{'type':Sequelize[_0x6d63('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x6d63('0xa')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x6d63('0x8')]},'originTo':{'type':Sequelize[_0x6d63('0x3')]('long')},'originCc':{'type':Sequelize['TEXT'](_0x6d63('0x4'))},'originChannel':{'type':Sequelize[_0x6d63('0x6')](_0x6d63('0xb'),_0x6d63('0xc')),'defaultValue':_0x6d63('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x44c3=['exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','long','DATE','INTEGER','Chat','lodash'];(function(_0x23b4b1,_0x1ac436){var _0x1b2f14=function(_0x3a18ed){while(--_0x3a18ed){_0x23b4b1['push'](_0x23b4b1['shift']());}};_0x1b2f14(++_0x1ac436);}(_0x44c3,0x14f));var _0x344c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x44c3[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');var _=require(_0x344c('0x0'));module[_0x344c('0x1')]={'body':{'type':Sequelize[_0x344c('0x2')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x344c('0x2')](_0x344c('0x3'))},'read':{'type':Sequelize[_0x344c('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x344c('0x5')]('in','out'),'defaultValue':_0x344c('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x344c('0x7')](0x1fe)},'from':{'type':Sequelize[_0x344c('0x7')]},'to':{'type':Sequelize['TEXT'](_0x344c('0x8'))},'cc':{'type':Sequelize[_0x344c('0x2')](_0x344c('0x8'))},'bcc':{'type':Sequelize['TEXT'](_0x344c('0x8'))},'subject':{'type':Sequelize[_0x344c('0x2')]},'sentAt':{'type':Sequelize[_0x344c('0x9')]},'attach':{'type':Sequelize[_0x344c('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x344c('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x344c('0x9')]},'originTo':{'type':Sequelize[_0x344c('0x2')](_0x344c('0x8'))},'originCc':{'type':Sequelize['TEXT'](_0x344c('0x8'))},'originChannel':{'type':Sequelize[_0x344c('0x5')]('Email',_0x344c('0xb')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index e33101f..fbf8563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153e=['stack','name','send','index','map','MailMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','include','options','find','catch','body','params','describe','create','direction','secret','MailAccount','findOne','MailAccountId','CmList','updatedAt','DESC','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','user','auth','pass','attachments','join','root','server/files/attachments','basename','List','Contacts','CmContact','ListId','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','User','fullname','email','internal','manual','interface','channel','event','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','Sequelize','SELECT','SIP/%s','fromString','rejectmessage','unix','files','tmp','server','from','subject','createdAt','Attachments','headers','bcc','Bcc','push','readFileSync','build','writeFileSync','download','unlinkSync','bluebird','path','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','../../mysqldb','defaults','redis','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','http','request','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','status','json','limit','undefined','count','offset','set','update','destroy','then','end','sendStatus'];(function(_0x4c5e8b,_0x7fb5a4){var _0x51d31b=function(_0x817965){while(--_0x817965){_0x4c5e8b['push'](_0x4c5e8b['shift']());}};_0x51d31b(++_0x7fb5a4);}(_0x153e,0x11f));var _0xe153=function(_0x39f34f,_0x298f45){_0x39f34f=_0x39f34f-0x0;var _0x59fee1=_0x153e[_0x39f34f];return _0x59fee1;};'use strict';var emlformat=require('eml-format');var moment=require('moment');var BPromise=require(_0xe153('0x0'));var util=require('util');var path=require(_0xe153('0x1'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xe153('0x2'));var htmlToText=require(_0xe153('0x3'));var qs=require(_0xe153('0x4'));var logger=require(_0xe153('0x5'))(_0xe153('0x6'));var interaction_log=require(_0xe153('0x5'))('mail-interactions');var config=require('../../config/environment');var db=require(_0xe153('0x7'))['db'];config['redis']=_[_0xe153('0x8')](config[_0xe153('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xe153('0xa'))(new Redis(config[_0xe153('0x9')]));var htmlEntities=require(_0xe153('0xb'));require(_0xe153('0xc'))[_0xe153('0xd')](socket);var jayson=require(_0xe153('0xe'));var client=jayson['client'][_0xe153('0xf')]({'port':0x232c});var client9003=jayson['client'][_0xe153('0xf')]({'port':0x232b});var client9002=jayson['client'][_0xe153('0xf')]({'port':0x232a});function respondWithRpcPromise(_0x4024c1,_0x2a7444,_0x3e8be6,_0x197261){return new BPromise(function(_0x2ac4e6,_0x50aa05){var _0x213e29=_0x197261||client;return _0x213e29[_0xe153('0x10')](_0x4024c1,_0x3e8be6)['then'](function(_0x4fd65c){logger['info'](_0xe153('0x11'),_0x2a7444,_0xe153('0x12'));logger[_0xe153('0x13')](_0xe153('0x14'),_0x2a7444,'request\x20sent',JSON[_0xe153('0x15')](_0x4fd65c));if(_0x4fd65c['error']){if(_0x4fd65c[_0xe153('0x16')][_0xe153('0x17')]===0x1f4){logger[_0xe153('0x16')](_0xe153('0x11'),_0x2a7444,_0x4fd65c[_0xe153('0x16')][_0xe153('0x18')]);return _0x50aa05(_0x4fd65c[_0xe153('0x16')][_0xe153('0x18')]);}logger[_0xe153('0x16')](_0xe153('0x11'),_0x2a7444,_0x4fd65c[_0xe153('0x16')][_0xe153('0x18')]);return _0x2ac4e6(_0x4fd65c[_0xe153('0x16')][_0xe153('0x18')]);}else{logger[_0xe153('0x19')]('MailMessage,\x20%s,\x20%s',_0x2a7444,_0xe153('0x12'));_0x2ac4e6(_0x4fd65c[_0xe153('0x1a')][_0xe153('0x18')]);}})['catch'](function(_0x38e14e){logger['error'](_0xe153('0x11'),_0x2a7444,_0x38e14e);_0x50aa05(_0x38e14e);});});}function respondWithResult(_0x3ad143,_0x302827){_0x302827=_0x302827||0xc8;return function(_0x462815){if(_0x462815){return _0x3ad143[_0xe153('0x1b')](_0x302827)[_0xe153('0x1c')](_0x462815);}};}function respondWithFilteredResult(_0x17ac0c,_0x38a58e){return function(_0x10e804){if(_0x10e804){var _0x554ffa=typeof _0x38a58e['offset']==='undefined'&&typeof _0x38a58e[_0xe153('0x1d')]===_0xe153('0x1e');var _0x578cc8=_0x10e804[_0xe153('0x1f')];var _0x1b1ee=_0x554ffa?0x0:_0x38a58e['offset'];var _0xe7af0c=_0x554ffa?_0x10e804[_0xe153('0x1f')]:_0x38a58e[_0xe153('0x20')]+_0x38a58e[_0xe153('0x1d')];var _0x700d92;if(_0xe7af0c>=_0x578cc8){_0xe7af0c=_0x578cc8;_0x700d92=0xc8;}else{_0x700d92=0xce;}_0x17ac0c[_0xe153('0x1b')](_0x700d92);return _0x17ac0c[_0xe153('0x21')]('Content-Range',_0x1b1ee+'-'+_0xe7af0c+'/'+_0x578cc8)['json'](_0x10e804);}return null;};}function saveUpdates(_0x33459f){return function(_0x5ca4a5){if(_0x5ca4a5){return _0x5ca4a5[_0xe153('0x22')](_0x33459f)['then'](function(_0x40fb43){return _0x40fb43;});}return null;};}function removeEntity(_0x192a7a){return function(_0x308ea8){if(_0x308ea8){return _0x308ea8[_0xe153('0x23')]()[_0xe153('0x24')](function(){_0x192a7a[_0xe153('0x1b')](0xcc)[_0xe153('0x25')]();});}};}function handleEntityNotFound(_0x7c3e70){return function(_0x3405d6){if(!_0x3405d6){_0x7c3e70[_0xe153('0x26')](0x194);}return _0x3405d6;};}function handleError(_0x2d2cb9,_0x22dbe7){_0x22dbe7=_0x22dbe7||0x1f4;return function(_0x13945c){logger[_0xe153('0x16')](_0x13945c[_0xe153('0x27')]);if(_0x13945c[_0xe153('0x28')]){delete _0x13945c['name'];}_0x2d2cb9['status'](_0x22dbe7)[_0xe153('0x29')](_0x13945c);};}exports[_0xe153('0x2a')]=function(_0x535fbc,_0x5eb6e2){var _0x82ee29={},_0x2d1e54={},_0x5108ec={'count':0x0,'rows':[]};var _0x40bf84=_[_0xe153('0x2b')](db[_0xe153('0x2c')][_0xe153('0x2d')],function(_0x4b5b19){return{'name':_0x4b5b19[_0xe153('0x2e')],'type':_0x4b5b19[_0xe153('0x2f')][_0xe153('0x30')]};});_0x2d1e54['model']=_[_0xe153('0x2b')](_0x40bf84,'name');_0x2d1e54[_0xe153('0x31')]=_[_0xe153('0x32')](_0x535fbc[_0xe153('0x31')]);_0x2d1e54[_0xe153('0x33')]=_[_0xe153('0x34')](_0x2d1e54[_0xe153('0x35')],_0x2d1e54[_0xe153('0x31')]);_0x82ee29[_0xe153('0x36')]=_['intersection'](_0x2d1e54['model'],qs[_0xe153('0x37')](_0x535fbc[_0xe153('0x31')][_0xe153('0x37')]));_0x82ee29['attributes']=_0x82ee29[_0xe153('0x36')][_0xe153('0x38')]?_0x82ee29['attributes']:_0x2d1e54['model'];if(!_0x535fbc[_0xe153('0x31')]['hasOwnProperty']('nolimit')){_0x82ee29[_0xe153('0x1d')]=qs['limit'](_0x535fbc[_0xe153('0x31')]['limit']);_0x82ee29[_0xe153('0x20')]=qs[_0xe153('0x20')](_0x535fbc[_0xe153('0x31')]['offset']);}_0x82ee29['order']=qs[_0xe153('0x39')](_0x535fbc[_0xe153('0x31')]['sort']);_0x82ee29[_0xe153('0x3a')]=qs[_0xe153('0x33')](_[_0xe153('0x3b')](_0x535fbc[_0xe153('0x31')],_0x2d1e54[_0xe153('0x33')]),_0x40bf84);if(_0x535fbc[_0xe153('0x31')][_0xe153('0x3c')]){_0x82ee29[_0xe153('0x3a')]=_[_0xe153('0x3d')](_0x82ee29['where'],{'$or':_['map'](_0x40bf84,function(_0x11e0a3){if(_0x11e0a3[_0xe153('0x2f')]!==_0xe153('0x3e')){var _0x1d5798={};_0x1d5798[_0x11e0a3[_0xe153('0x28')]]={'$like':'%'+_0x535fbc['query'][_0xe153('0x3c')]+'%'};return _0x1d5798;}})});}_0x82ee29=_[_0xe153('0x3d')]({},_0x82ee29,_0x535fbc['options']);var _0x26c7c9={'where':_0x82ee29['where']};return db['MailMessage'][_0xe153('0x1f')](_0x26c7c9)['then'](function(_0x1b6f87){_0x5108ec[_0xe153('0x1f')]=_0x1b6f87;if(_0x535fbc[_0xe153('0x31')][_0xe153('0x3f')]){_0x82ee29['include']=[{'all':!![]}];}return db[_0xe153('0x2c')][_0xe153('0x40')](_0x82ee29);})['then'](function(_0x3a505d){_0x5108ec[_0xe153('0x41')]=_0x3a505d;return _0x5108ec;})[_0xe153('0x24')](respondWithFilteredResult(_0x5eb6e2,_0x82ee29))['catch'](handleError(_0x5eb6e2,null));};exports[_0xe153('0x42')]=function(_0x2a5c01,_0x17a763){var _0x180a36={'raw':!![],'where':{'id':_0x2a5c01['params']['id']}},_0x9fcc9b={};_0x9fcc9b[_0xe153('0x35')]=_[_0xe153('0x32')](db[_0xe153('0x2c')]['rawAttributes']);_0x9fcc9b[_0xe153('0x31')]=_[_0xe153('0x32')](_0x2a5c01[_0xe153('0x31')]);_0x9fcc9b['filters']=_[_0xe153('0x34')](_0x9fcc9b[_0xe153('0x35')],_0x9fcc9b[_0xe153('0x31')]);_0x180a36[_0xe153('0x36')]=_['intersection'](_0x9fcc9b['model'],qs[_0xe153('0x37')](_0x2a5c01['query'][_0xe153('0x37')]));_0x180a36[_0xe153('0x36')]=_0x180a36['attributes']['length']?_0x180a36[_0xe153('0x36')]:_0x9fcc9b[_0xe153('0x35')];if(_0x2a5c01[_0xe153('0x31')][_0xe153('0x3f')]){_0x180a36[_0xe153('0x43')]=[{'all':!![]}];}_0x180a36=_[_0xe153('0x3d')]({},_0x180a36,_0x2a5c01[_0xe153('0x44')]);return db[_0xe153('0x2c')][_0xe153('0x45')](_0x180a36)[_0xe153('0x24')](handleEntityNotFound(_0x17a763,null))[_0xe153('0x24')](respondWithResult(_0x17a763,null))[_0xe153('0x46')](handleError(_0x17a763,null));};exports['update']=function(_0x2b770c,_0x24b273){if(_0x2b770c[_0xe153('0x47')]['id']){delete _0x2b770c[_0xe153('0x47')]['id'];}return db[_0xe153('0x2c')]['find']({'where':{'id':_0x2b770c['params']['id']}})[_0xe153('0x24')](handleEntityNotFound(_0x24b273,null))[_0xe153('0x24')](saveUpdates(_0x2b770c['body'],null))[_0xe153('0x24')](respondWithResult(_0x24b273,null))[_0xe153('0x46')](handleError(_0x24b273,null));};exports[_0xe153('0x23')]=function(_0x2fb16b,_0xe21224){return db[_0xe153('0x2c')][_0xe153('0x45')]({'where':{'id':_0x2fb16b[_0xe153('0x48')]['id']}})['then'](handleEntityNotFound(_0xe21224,null))[_0xe153('0x24')](removeEntity(_0xe21224,null))[_0xe153('0x46')](handleError(_0xe21224,null));};exports[_0xe153('0x49')]=function(_0x169fb5,_0x309cdd){return db[_0xe153('0x2c')]['describe']()[_0xe153('0x24')](respondWithResult(_0x309cdd,null))[_0xe153('0x46')](handleError(_0x309cdd,null));};exports[_0xe153('0x4a')]=function(_0x58cde4,_0x435376){return db[_0xe153('0x2c')]['create'](_0x58cde4[_0xe153('0x47')])['then'](function(_0x26790d){if(_0x26790d){if(_0x26790d[_0xe153('0x4b')]==='out'&&!_0x26790d[_0xe153('0x4c')]){var _0x2d5f94,_0x146eae,_0x2e76e7;if(_0x58cde4[_0xe153('0x47')]['to']){_0x146eae=_0x58cde4[_0xe153('0x47')]['to']['split'](',')[0x0];}return db[_0xe153('0x4d')][_0xe153('0x4e')]({'where':{'id':_0x26790d[_0xe153('0x4f')]},'include':[{'model':db[_0xe153('0x50')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'email':_0x146eae},'limit':0x1,'order':[[_0xe153('0x51'),_0xe153('0x52')]]}]},{'model':db[_0xe153('0x53')],'as':_0xe153('0x54'),'raw':!![]}]})[_0xe153('0x24')](function(_0x3ddc4b){_0x2d5f94=_0x3ddc4b;if(_0x2d5f94&&_0x2d5f94[_0xe153('0x54')]){var _0x563d27={'tls':{'rejectUnauthorized':![]}};if(_[_0xe153('0x55')](_0x2d5f94['Smtp'][_0xe153('0x56')])){_0x563d27[_0xe153('0x57')]=_0x2d5f94['Smtp'][_0xe153('0x57')];_0x563d27[_0xe153('0x58')]=_0x2d5f94['Smtp'][_0xe153('0x58')];_0x563d27[_0xe153('0x59')]=_0x2d5f94[_0xe153('0x54')]['secure'];if(_0x2d5f94['Smtp'][_0xe153('0x5a')]){_0x563d27['auth']={'user':_0x2d5f94[_0xe153('0x54')][_0xe153('0x5b')],'pass':_0x2d5f94[_0xe153('0x54')]['pass']};}}else{_0x563d27[_0xe153('0x56')]=_0x2d5f94['Smtp'][_0xe153('0x56')];_0x563d27[_0xe153('0x5c')]={'user':_0x2d5f94[_0xe153('0x54')][_0xe153('0x5b')],'pass':_0x2d5f94[_0xe153('0x54')][_0xe153('0x5d')]};_0x563d27['secure']=_0x2d5f94[_0xe153('0x54')]['secure'];}if(_0x58cde4[_0xe153('0x47')][_0xe153('0x5e')]&&_0x58cde4[_0xe153('0x47')][_0xe153('0x5e')][_0xe153('0x38')]){for(var _0xbf7019=0x0;_0xbf7019<_0x58cde4[_0xe153('0x47')]['attachments']['length'];_0xbf7019+=0x1){_0x58cde4[_0xe153('0x47')]['attachments'][_0xbf7019]={'filename':_0x58cde4[_0xe153('0x47')][_0xe153('0x5e')][_0xbf7019]['name'],'path':path[_0xe153('0x5f')](config[_0xe153('0x60')],_0xe153('0x61'),_0x58cde4[_0xe153('0x47')][_0xe153('0x5e')][_0xbf7019][_0xe153('0x62')])};}}_0x2e76e7={'account':_0x563d27,'message':_0x58cde4['body']};return;}})[_0xe153('0x24')](function(){if(_0x2d5f94[_0xe153('0x63')]){if(_0x2d5f94[_0xe153('0x63')][_0xe153('0x64')]['length']){return _0x2d5f94[_0xe153('0x63')]['Contacts'][0x0];}else{return db[_0xe153('0x65')][_0xe153('0x4a')](_[_0xe153('0x8')](_0x58cde4[_0xe153('0x47')],{'firstName':_0x58cde4[_0xe153('0x47')]['to'],'email':_0x58cde4[_0xe153('0x47')]['to'],'phone':_0x58cde4['body']['to'],'ListId':_0x2d5f94[_0xe153('0x66')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x2e76e7){return respondWithRpcPromise(_0xe153('0x67'),_0xe153('0x68'),_0x2e76e7,client9003)[_0xe153('0x24')](function(_0x314fd6){return _0x26790d[_0xe153('0x22')]({'read':!![],'messageId':_0x314fd6[_0xe153('0x69')],'sentAt':moment()[_0xe153('0x6a')](_0xe153('0x6b'))});})[_0xe153('0x46')](function(_0x21e64a){logger[_0xe153('0x16')]('%s',JSON[_0xe153('0x15')](_0x21e64a));return _0x26790d;});}return _0x26790d;});}return _0x26790d;}})['then'](respondWithResult(_0x435376,0xc9))[_0xe153('0x46')](handleError(_0x435376,null));};exports[_0xe153('0x6c')]=function(_0x25f303,_0x4445e9){var _0xfaee8={'agent':{},'channel':_0xe153('0x6d')};if(_0x25f303['body']['id']){delete _0x25f303[_0xe153('0x47')]['id'];}_0x25f303[_0xe153('0x47')][_0xe153('0x6e')]=!![];_0x25f303['body'][_0xe153('0x6f')]=moment()['format'](_0xe153('0x6b'));_0x25f303[_0xe153('0x47')]['UserId']=_0x25f303[_0xe153('0x47')][_0xe153('0x70')]||_0x25f303[_0xe153('0x5b')]['id'];_0xfaee8[_0xe153('0x71')]['id']=_0x25f303['body'][_0xe153('0x70')];return db[_0xe153('0x2c')][_0xe153('0x45')]({'where':{'id':_0x25f303['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4445e9,null))[_0xe153('0x24')](saveUpdates(_0x25f303[_0xe153('0x47')],null))[_0xe153('0x24')](function(_0x5b73ed){if(_0x5b73ed){_0xfaee8['message']=_0x5b73ed[_0xe153('0x72')]({'plain':!![]});return db[_0xe153('0x73')][_0xe153('0x45')]({'where':{'id':_0x5b73ed[_0xe153('0x74')]}});}return null;})[_0xe153('0x24')](handleEntityNotFound(_0x4445e9,null))[_0xe153('0x24')](function(_0x2a1a21){if(_0x2a1a21){return _0x2a1a21[_0xe153('0x22')]({'UserId':_0x25f303[_0xe153('0x47')][_0xe153('0x70')],'read1stAt':_[_0xe153('0x55')](_0x2a1a21[_0xe153('0x75')])?moment()[_0xe153('0x6a')](_0xe153('0x6b')):undefined});}return null;})[_0xe153('0x24')](function(_0x4875bd){if(_0x4875bd){_0xfaee8[_0xe153('0x76')]=_0x4875bd[_0xe153('0x72')]({'plain':!![]});interaction_log[_0xe153('0x19')](_0xe153('0x77'),_0x25f303[_0xe153('0x5b')]['id'],_0x25f303[_0xe153('0x5b')][_0xe153('0x28')],_0x25f303[_0xe153('0x5b')][_0xe153('0x78')],_0xfaee8[_0xe153('0x76')]['id'],_0x25f303['body']?JSON[_0xe153('0x15')](_0x25f303[_0xe153('0x47')]):_0xe153('0x79'));return respondWithRpcPromise(_0xe153('0x7a'),'acceptMessage',_0xfaee8);}return null;})[_0xe153('0x24')](function(_0x4085cd){var _0x3a55a1=_0xe153('0x7b')+_0x4085cd[_0xe153('0x18')]['ContactId'];return db[_0xe153('0x7c')]['query'](_0x3a55a1,{'type':db['Sequelize'][_0xe153('0x7d')]['SELECT'],'raw':!![]})[_0xe153('0x24')](function(_0x470738){return _0x470738;});})[_0xe153('0x24')](function(_0x25fec2){if(_0x25fec2){_0xfaee8[_0xe153('0x18')]['contact']=_0x25fec2[0x0];if(!_0x25f303[_0xe153('0x47')]['UserId'])return;return db[_0xe153('0x7e')][_0xe153('0x45')]({'where':{'id':_0x25f303['body'][_0xe153('0x70')],'role':'agent'},'attributes':['id','name',_0xe153('0x7f'),_0xe153('0x80'),_0xe153('0x81')],'raw':!![]});}return null;})[_0xe153('0x24')](function(_0x16f1ca){if(!_0x16f1ca)return null;_0xfaee8['message'][_0xe153('0x71')]=_0x16f1ca;return _0xfaee8;})['then'](function(_0x149328){if(_0x149328){if(_0x25f303[_0xe153('0x47')][_0xe153('0x82')]){_0xfaee8[_0xe153('0x18')][_0xe153('0x83')]=util[_0xe153('0x6a')]('SIP/%s',_0x25f303[_0xe153('0x5b')][_0xe153('0x28')]);_0xfaee8[_0xe153('0x18')][_0xe153('0x84')]=_0xfaee8['channel'];_0xfaee8['message'][_0xe153('0x85')]=_0xe153('0x6c');_0xfaee8['message']['body']=htmlToText['fromString'](_0xfaee8[_0xe153('0x18')][_0xe153('0x47')]);return respondWithRpcPromise(_0xe153('0x86'),_0xe153('0x86'),{'event':_0xe153('0x87'),'message':_0xfaee8['message']},client9002)[_0xe153('0x24')](function(){return _0xfaee8;});}return _0xfaee8;}return null;})['then'](respondWithResult(_0x4445e9,null))[_0xe153('0x46')](handleError(_0x4445e9,null));};exports[_0xe153('0x88')]=function(_0x3aeedc,_0x45cd1d){var _0x554acd={'agent':{},'channel':_0xe153('0x6d')};if(_0x3aeedc[_0xe153('0x47')]['id']){delete _0x3aeedc[_0xe153('0x47')]['id'];}_0x3aeedc[_0xe153('0x47')][_0xe153('0x70')]=_0x3aeedc['body'][_0xe153('0x70')]||_0x3aeedc['user']['id'];_0x554acd[_0xe153('0x71')]['id']=_0x3aeedc[_0xe153('0x47')][_0xe153('0x70')];return db[_0xe153('0x2c')][_0xe153('0x45')]({'where':{'id':_0x3aeedc[_0xe153('0x48')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x45cd1d,null))['then'](function(_0x335a9e){if(_0x335a9e){_0x554acd[_0xe153('0x18')]=_0x335a9e[_0xe153('0x72')]({'plain':!![]});return db['MailInteraction'][_0xe153('0x45')]({'where':{'id':_0x335a9e[_0xe153('0x74')]}});}return null;})['then'](handleEntityNotFound(_0x45cd1d,null))[_0xe153('0x24')](function(_0x22ee31){if(_0x22ee31){_0x554acd['interaction']=_0x22ee31[_0xe153('0x72')]({'plain':!![]});interaction_log[_0xe153('0x19')](_0xe153('0x89'),_0x3aeedc[_0xe153('0x5b')]['id'],_0x3aeedc[_0xe153('0x5b')][_0xe153('0x28')],_0x3aeedc[_0xe153('0x5b')][_0xe153('0x78')],_0x554acd[_0xe153('0x76')]['id'],_0x3aeedc['body']?JSON['stringify'](_0x3aeedc['body']):_0xe153('0x79'));return respondWithRpcPromise(_0xe153('0x8a'),_0xe153('0x8b'),_0x554acd);}return null;})[_0xe153('0x24')](function(_0x390779){var _0x401e8c=_0xe153('0x7b')+_0x390779[_0xe153('0x18')][_0xe153('0x8c')];return db[_0xe153('0x7c')][_0xe153('0x31')](_0x401e8c,{'type':db[_0xe153('0x8d')][_0xe153('0x7d')][_0xe153('0x8e')],'raw':!![]})['then'](function(_0x216e2d){return _0x216e2d;});})[_0xe153('0x24')](function(_0x3ca386){if(_0x3ca386){_0x554acd[_0xe153('0x18')]['contact']=_0x3ca386[0x0];if(!_0x3aeedc['body'][_0xe153('0x70')])return;return db[_0xe153('0x7e')][_0xe153('0x45')]({'where':{'id':_0x3aeedc[_0xe153('0x47')][_0xe153('0x70')],'role':'agent'},'attributes':['id',_0xe153('0x28'),_0xe153('0x7f'),_0xe153('0x80'),_0xe153('0x81')],'raw':!![]});}return null;})[_0xe153('0x24')](function(_0x4e611b){if(!_0x4e611b)return null;_0x554acd[_0xe153('0x18')][_0xe153('0x71')]=_0x4e611b;return _0x554acd;})[_0xe153('0x24')](function(_0xffc591){if(_0xffc591){_0xffc591[_0xe153('0x18')][_0xe153('0x83')]=util['format'](_0xe153('0x8f'),_0x3aeedc[_0xe153('0x5b')][_0xe153('0x28')]);_0xffc591[_0xe153('0x18')][_0xe153('0x84')]=_0x554acd[_0xe153('0x84')];_0xffc591[_0xe153('0x18')][_0xe153('0x85')]=_0xe153('0x88');_0xffc591[_0xe153('0x18')]['body']=htmlToText[_0xe153('0x90')](_0x554acd[_0xe153('0x18')][_0xe153('0x47')]);respondWithRpcPromise(_0xe153('0x86'),_0xe153('0x86'),{'event':_0xe153('0x91'),'message':_0xffc591[_0xe153('0x18')]},client9002);return _0x554acd;}return null;})[_0xe153('0x24')](respondWithResult(_0x45cd1d,null))['catch'](handleError(_0x45cd1d,null));};exports['download']=function(_0x454dd4,_0x351287){var _0x67316b=moment()[_0xe153('0x92')]()['toString']();var _0x1dbf2a=path[_0xe153('0x5f')](config[_0xe153('0x60')],'server',_0xe153('0x93'),_0xe153('0x94'));var _0x28f418=path['join'](config['root'],_0xe153('0x95'),'files',_0xe153('0x5e'));var _0x4e1946=util[_0xe153('0x6a')]('message-%s.eml',_0x67316b);return db['MailMessage'][_0xe153('0x45')]({'where':{'id':_0x454dd4[_0xe153('0x48')]['id']},'attributes':['id',_0xe153('0x47'),_0xe153('0x96'),'to','cc','bcc',_0xe153('0x97'),_0xe153('0x98')],'include':_0x454dd4[_0xe153('0x31')][_0xe153('0x5e')]?[{'model':db['Attachment'],'as':_0xe153('0x99')}]:undefined})[_0xe153('0x24')](handleEntityNotFound(_0x351287,null))['then'](function(_0x4cbece){if(_0x4cbece){var _0x5150ae=_0x4cbece;var _0x2926dd={'from':_0x5150ae[_0xe153('0x96')],'to':_0x5150ae['to'],'subject':_0x5150ae[_0xe153('0x97')],'html':htmlEntities['decode'](_0x5150ae[_0xe153('0x47')]),'headers':{'Date':moment(_0x5150ae['createdAt'])[_0xe153('0x6a')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x4cbece['cc']){_0x2926dd[_0xe153('0x9a')]['Cc']=_0x4cbece['cc'];}if(_0x4cbece[_0xe153('0x9b')]){_0x2926dd[_0xe153('0x9a')][_0xe153('0x9c')]=_0x4cbece[_0xe153('0x9b')];}return new BPromise(function(_0x3b0cf3,_0x59bb82){if(_0x4cbece['Attachments']){for(var _0x270c2b=0x0;_0x270c2b<_0x4cbece['Attachments'][_0xe153('0x38')];_0x270c2b++){var _0x2ea1cb=_0x4cbece[_0xe153('0x99')][_0x270c2b];var _0x5c4e46=path['join'](_0x28f418,_0x2ea1cb[_0xe153('0x62')]);if(fs['existsSync'](_0x5c4e46)){_0x2926dd[_0xe153('0x5e')][_0xe153('0x9d')]({'name':_0x2ea1cb['name'],'contentType':_0x2ea1cb['type'],'data':fs[_0xe153('0x9e')](_0x5c4e46)});}}}emlformat[_0xe153('0x9f')](_0x2926dd,function(_0x58dbaa,_0x42e52b){if(_0x58dbaa)return _0x59bb82(_0x58dbaa);fs[_0xe153('0xa0')](path[_0xe153('0x5f')](_0x1dbf2a,_0x4e1946),_0x42e52b);return _0x3b0cf3(_0x42e52b);});});}})[_0xe153('0x24')](function(_0x27c0b4){if(_0x27c0b4){return _0x351287[_0xe153('0xa1')](path['join'](_0x1dbf2a,_0x4e1946),_0x4e1946,function(_0x11bb4c){if(!_0x11bb4c)fs[_0xe153('0xa2')](path['join'](_0x1dbf2a,_0x4e1946));});}})['catch'](handleError(_0x351287,null));};
\ No newline at end of file
+var _0x7d11=['read','readAt','UserId','agent','MailInteractionId','isNil','read1stAt','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','ContactId','sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','SIP/%s','channel','motionChannel','fromString','EventManager','reject','mail','MailInteraction','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','fullname','interface','event','rejectmessage','unix','toString','join','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','push','readFileSync','build','writeFileSync','download','unlinkSync','eml-format','bluebird','util','path','lodash','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','undefined','limit','offset','count','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','MailMessage','include','findAll','rows','show','includeAll','options','find','body','params','describe','direction','out','secret','split','MailAccount','findOne','CmList','List','CmContact','updatedAt','DESC','Smtp','service','host','port','secure','authentication','user','pass','attachments','root','server/files/attachments','basename','Contacts','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept'];(function(_0x57f227,_0x72f013){var _0x4fcd4b=function(_0x172329){while(--_0x172329){_0x57f227['push'](_0x57f227['shift']());}};_0x4fcd4b(++_0x72f013);}(_0x7d11,0xe8));var _0x17d1=function(_0x2afe99,_0x2cad3b){_0x2afe99=_0x2afe99-0x0;var _0xf05fea=_0x7d11[_0x2afe99];return _0xf05fea;};'use strict';var emlformat=require(_0x17d1('0x0'));var moment=require('moment');var BPromise=require(_0x17d1('0x1'));var util=require(_0x17d1('0x2'));var path=require(_0x17d1('0x3'));var fs=require('fs');var _=require(_0x17d1('0x4'));var Redis=require('ioredis');var htmlToText=require(_0x17d1('0x5'));var qs=require(_0x17d1('0x6'));var logger=require(_0x17d1('0x7'))(_0x17d1('0x8'));var interaction_log=require(_0x17d1('0x7'))(_0x17d1('0x9'));var config=require('../../config/environment');var db=require(_0x17d1('0xa'))['db'];config[_0x17d1('0xb')]=_[_0x17d1('0xc')](config[_0x17d1('0xb')],{'host':_0x17d1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x17d1('0xb')]));require('./mailMessage.socket')[_0x17d1('0xe')](socket);var jayson=require(_0x17d1('0xf'));var client=jayson[_0x17d1('0x10')][_0x17d1('0x11')]({'port':0x232c});var client9003=jayson[_0x17d1('0x10')][_0x17d1('0x11')]({'port':0x232b});var client9002=jayson['client'][_0x17d1('0x11')]({'port':0x232a});function respondWithRpcPromise(_0xf27a39,_0x29bc4e,_0x74eb53,_0x2ea046){return new BPromise(function(_0xb86be3,_0x110aa6){var _0x10f51e=_0x2ea046||client;return _0x10f51e[_0x17d1('0x12')](_0xf27a39,_0x74eb53)[_0x17d1('0x13')](function(_0x1a534e){logger[_0x17d1('0x14')](_0x17d1('0x15'),_0x29bc4e,'request\x20sent');logger[_0x17d1('0x16')](_0x17d1('0x17'),_0x29bc4e,_0x17d1('0x18'),JSON[_0x17d1('0x19')](_0x1a534e));if(_0x1a534e[_0x17d1('0x1a')]){if(_0x1a534e[_0x17d1('0x1a')][_0x17d1('0x1b')]===0x1f4){logger[_0x17d1('0x1a')](_0x17d1('0x15'),_0x29bc4e,_0x1a534e['error'][_0x17d1('0x1c')]);return _0x110aa6(_0x1a534e[_0x17d1('0x1a')][_0x17d1('0x1c')]);}logger[_0x17d1('0x1a')](_0x17d1('0x15'),_0x29bc4e,_0x1a534e[_0x17d1('0x1a')]['message']);return _0xb86be3(_0x1a534e[_0x17d1('0x1a')][_0x17d1('0x1c')]);}else{logger[_0x17d1('0x14')](_0x17d1('0x15'),_0x29bc4e,'request\x20sent');_0xb86be3(_0x1a534e[_0x17d1('0x1d')][_0x17d1('0x1c')]);}})[_0x17d1('0x1e')](function(_0x5496db){logger[_0x17d1('0x1a')](_0x17d1('0x15'),_0x29bc4e,_0x5496db);_0x110aa6(_0x5496db);});});}function respondWithResult(_0x240eb2,_0x5a208d){_0x5a208d=_0x5a208d||0xc8;return function(_0x1edcc4){if(_0x1edcc4){return _0x240eb2[_0x17d1('0x1f')](_0x5a208d)[_0x17d1('0x20')](_0x1edcc4);}};}function respondWithFilteredResult(_0x642d05,_0x4731d7){return function(_0x28037b){if(_0x28037b){var _0x1e2a98=typeof _0x4731d7['offset']===_0x17d1('0x21')&&typeof _0x4731d7[_0x17d1('0x22')]===_0x17d1('0x21');var _0xc9dc2b=_0x28037b['count'];var _0x16b006=_0x1e2a98?0x0:_0x4731d7[_0x17d1('0x23')];var _0x5c7e65=_0x1e2a98?_0x28037b[_0x17d1('0x24')]:_0x4731d7['offset']+_0x4731d7[_0x17d1('0x22')];var _0x230073;if(_0x5c7e65>=_0xc9dc2b){_0x5c7e65=_0xc9dc2b;_0x230073=0xc8;}else{_0x230073=0xce;}_0x642d05['status'](_0x230073);return _0x642d05[_0x17d1('0x25')](_0x17d1('0x26'),_0x16b006+'-'+_0x5c7e65+'/'+_0xc9dc2b)[_0x17d1('0x20')](_0x28037b);}return null;};}function saveUpdates(_0x6b9c6f){return function(_0x2d61d0){if(_0x2d61d0){return _0x2d61d0[_0x17d1('0x27')](_0x6b9c6f)[_0x17d1('0x13')](function(_0x23e333){return _0x23e333;});}return null;};}function removeEntity(_0x547590){return function(_0x367362){if(_0x367362){return _0x367362[_0x17d1('0x28')]()[_0x17d1('0x13')](function(){_0x547590[_0x17d1('0x1f')](0xcc)[_0x17d1('0x29')]();});}};}function handleEntityNotFound(_0x10a7d1){return function(_0x279796){if(!_0x279796){_0x10a7d1[_0x17d1('0x2a')](0x194);}return _0x279796;};}function handleError(_0x2f5c19,_0x5d3de5){_0x5d3de5=_0x5d3de5||0x1f4;return function(_0x1143c8){logger[_0x17d1('0x1a')](_0x1143c8[_0x17d1('0x2b')]);if(_0x1143c8[_0x17d1('0x2c')]){delete _0x1143c8[_0x17d1('0x2c')];}_0x2f5c19[_0x17d1('0x1f')](_0x5d3de5)[_0x17d1('0x2d')](_0x1143c8);};}exports[_0x17d1('0x2e')]=function(_0x49abf9,_0x2f2cbe){var _0x1c0f43={},_0x559277={},_0x2456fc={'count':0x0,'rows':[]};var _0xeeb56c=_[_0x17d1('0x2f')](db['MailMessage'][_0x17d1('0x30')],function(_0x376ceb){return{'name':_0x376ceb[_0x17d1('0x31')],'type':_0x376ceb[_0x17d1('0x32')]['key']};});_0x559277['model']=_[_0x17d1('0x2f')](_0xeeb56c,_0x17d1('0x2c'));_0x559277[_0x17d1('0x33')]=_[_0x17d1('0x34')](_0x49abf9[_0x17d1('0x33')]);_0x559277[_0x17d1('0x35')]=_[_0x17d1('0x36')](_0x559277[_0x17d1('0x37')],_0x559277[_0x17d1('0x33')]);_0x1c0f43[_0x17d1('0x38')]=_[_0x17d1('0x36')](_0x559277[_0x17d1('0x37')],qs[_0x17d1('0x39')](_0x49abf9[_0x17d1('0x33')][_0x17d1('0x39')]));_0x1c0f43['attributes']=_0x1c0f43[_0x17d1('0x38')][_0x17d1('0x3a')]?_0x1c0f43[_0x17d1('0x38')]:_0x559277[_0x17d1('0x37')];if(!_0x49abf9['query'][_0x17d1('0x3b')](_0x17d1('0x3c'))){_0x1c0f43[_0x17d1('0x22')]=qs[_0x17d1('0x22')](_0x49abf9[_0x17d1('0x33')][_0x17d1('0x22')]);_0x1c0f43[_0x17d1('0x23')]=qs[_0x17d1('0x23')](_0x49abf9[_0x17d1('0x33')]['offset']);}_0x1c0f43[_0x17d1('0x3d')]=qs[_0x17d1('0x3e')](_0x49abf9[_0x17d1('0x33')][_0x17d1('0x3e')]);_0x1c0f43['where']=qs['filters'](_[_0x17d1('0x3f')](_0x49abf9[_0x17d1('0x33')],_0x559277['filters']),_0xeeb56c);if(_0x49abf9[_0x17d1('0x33')][_0x17d1('0x40')]){_0x1c0f43['where']=_[_0x17d1('0x41')](_0x1c0f43[_0x17d1('0x42')],{'$or':_['map'](_0xeeb56c,function(_0x2b2cd5){if(_0x2b2cd5[_0x17d1('0x32')]!==_0x17d1('0x43')){var _0x1ab7b4={};_0x1ab7b4[_0x2b2cd5[_0x17d1('0x2c')]]={'$like':'%'+_0x49abf9[_0x17d1('0x33')]['filter']+'%'};return _0x1ab7b4;}})});}_0x1c0f43=_['merge']({},_0x1c0f43,_0x49abf9['options']);var _0x57fe69={'where':_0x1c0f43[_0x17d1('0x42')]};return db[_0x17d1('0x44')][_0x17d1('0x24')](_0x57fe69)[_0x17d1('0x13')](function(_0x24481c){_0x2456fc[_0x17d1('0x24')]=_0x24481c;if(_0x49abf9[_0x17d1('0x33')]['includeAll']){_0x1c0f43[_0x17d1('0x45')]=[{'all':!![]}];}return db['MailMessage'][_0x17d1('0x46')](_0x1c0f43);})[_0x17d1('0x13')](function(_0x9caa45){_0x2456fc[_0x17d1('0x47')]=_0x9caa45;return _0x2456fc;})[_0x17d1('0x13')](respondWithFilteredResult(_0x2f2cbe,_0x1c0f43))[_0x17d1('0x1e')](handleError(_0x2f2cbe,null));};exports[_0x17d1('0x48')]=function(_0x2ef185,_0x520608){var _0x33cea6={'raw':!![],'where':{'id':_0x2ef185['params']['id']}},_0x3e0566={};_0x3e0566[_0x17d1('0x37')]=_[_0x17d1('0x34')](db[_0x17d1('0x44')][_0x17d1('0x30')]);_0x3e0566[_0x17d1('0x33')]=_[_0x17d1('0x34')](_0x2ef185[_0x17d1('0x33')]);_0x3e0566[_0x17d1('0x35')]=_[_0x17d1('0x36')](_0x3e0566['model'],_0x3e0566['query']);_0x33cea6[_0x17d1('0x38')]=_[_0x17d1('0x36')](_0x3e0566[_0x17d1('0x37')],qs['fields'](_0x2ef185[_0x17d1('0x33')]['fields']));_0x33cea6[_0x17d1('0x38')]=_0x33cea6['attributes'][_0x17d1('0x3a')]?_0x33cea6[_0x17d1('0x38')]:_0x3e0566['model'];if(_0x2ef185[_0x17d1('0x33')][_0x17d1('0x49')]){_0x33cea6[_0x17d1('0x45')]=[{'all':!![]}];}_0x33cea6=_[_0x17d1('0x41')]({},_0x33cea6,_0x2ef185[_0x17d1('0x4a')]);return db['MailMessage'][_0x17d1('0x4b')](_0x33cea6)[_0x17d1('0x13')](handleEntityNotFound(_0x520608,null))[_0x17d1('0x13')](respondWithResult(_0x520608,null))[_0x17d1('0x1e')](handleError(_0x520608,null));};exports['update']=function(_0x24ca01,_0x274bcf){if(_0x24ca01[_0x17d1('0x4c')]['id']){delete _0x24ca01[_0x17d1('0x4c')]['id'];}return db[_0x17d1('0x44')][_0x17d1('0x4b')]({'where':{'id':_0x24ca01[_0x17d1('0x4d')]['id']}})[_0x17d1('0x13')](handleEntityNotFound(_0x274bcf,null))[_0x17d1('0x13')](saveUpdates(_0x24ca01[_0x17d1('0x4c')],null))['then'](respondWithResult(_0x274bcf,null))[_0x17d1('0x1e')](handleError(_0x274bcf,null));};exports['destroy']=function(_0x96c910,_0x3f8c4a){return db['MailMessage'][_0x17d1('0x4b')]({'where':{'id':_0x96c910[_0x17d1('0x4d')]['id']}})[_0x17d1('0x13')](handleEntityNotFound(_0x3f8c4a,null))['then'](removeEntity(_0x3f8c4a,null))[_0x17d1('0x1e')](handleError(_0x3f8c4a,null));};exports[_0x17d1('0x4e')]=function(_0x2a391c,_0x280379){return db[_0x17d1('0x44')]['describe']()['then'](respondWithResult(_0x280379,null))['catch'](handleError(_0x280379,null));};exports['create']=function(_0x1735d5,_0x50216a){return db[_0x17d1('0x44')]['create'](_0x1735d5[_0x17d1('0x4c')])[_0x17d1('0x13')](function(_0x359eb2){if(_0x359eb2){if(_0x359eb2[_0x17d1('0x4f')]===_0x17d1('0x50')&&!_0x359eb2[_0x17d1('0x51')]){var _0x5ac130,_0x44548a,_0x55f142;if(_0x1735d5[_0x17d1('0x4c')]['to']){_0x44548a=_0x1735d5[_0x17d1('0x4c')]['to'][_0x17d1('0x52')](',')[0x0];}return db[_0x17d1('0x53')][_0x17d1('0x54')]({'where':{'id':_0x359eb2['MailAccountId']},'include':[{'model':db[_0x17d1('0x55')],'as':_0x17d1('0x56'),'include':[{'model':db[_0x17d1('0x57')],'as':'Contacts','where':{'email':_0x44548a},'limit':0x1,'order':[[_0x17d1('0x58'),_0x17d1('0x59')]]}]},{'model':db['MailServerOut'],'as':_0x17d1('0x5a'),'raw':!![]}]})[_0x17d1('0x13')](function(_0x27cff5){_0x5ac130=_0x27cff5;if(_0x5ac130&&_0x5ac130[_0x17d1('0x5a')]){var _0x1c4063={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5b')])){_0x1c4063[_0x17d1('0x5c')]=_0x5ac130['Smtp']['host'];_0x1c4063['port']=_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5d')];_0x1c4063[_0x17d1('0x5e')]=_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5e')];if(_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5f')]){_0x1c4063['auth']={'user':_0x5ac130['Smtp'][_0x17d1('0x60')],'pass':_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x61')]};}}else{_0x1c4063[_0x17d1('0x5b')]=_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5b')];_0x1c4063['auth']={'user':_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x60')],'pass':_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x61')]};_0x1c4063[_0x17d1('0x5e')]=_0x5ac130['Smtp']['secure'];}if(_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')]&&_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x17d1('0x3a')]){for(var _0x4fc233=0x0;_0x4fc233<_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x17d1('0x3a')];_0x4fc233+=0x1){_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x4fc233]={'filename':_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x4fc233]['name'],'path':path['join'](config[_0x17d1('0x63')],_0x17d1('0x64'),_0x1735d5['body']['attachments'][_0x4fc233][_0x17d1('0x65')])};}}_0x55f142={'account':_0x1c4063,'message':_0x1735d5[_0x17d1('0x4c')]};return;}})['then'](function(){if(_0x5ac130['List']){if(_0x5ac130['List'][_0x17d1('0x66')][_0x17d1('0x3a')]){return _0x5ac130[_0x17d1('0x56')]['Contacts'][0x0];}else{return db['CmContact']['create'](_['defaults'](_0x1735d5['body'],{'firstName':_0x1735d5[_0x17d1('0x4c')]['to'],'email':_0x1735d5[_0x17d1('0x4c')]['to'],'phone':_0x1735d5[_0x17d1('0x4c')]['to'],'ListId':_0x5ac130['ListId']}));}}else{throw new Error(_0x17d1('0x67'));}})[_0x17d1('0x13')](function(){if(_0x55f142){return respondWithRpcPromise(_0x17d1('0x68'),_0x17d1('0x69'),_0x55f142,client9003)[_0x17d1('0x13')](function(_0x2ac290){return _0x359eb2[_0x17d1('0x27')]({'read':!![],'messageId':_0x2ac290[_0x17d1('0x6a')],'sentAt':moment()[_0x17d1('0x6b')](_0x17d1('0x6c'))});})[_0x17d1('0x1e')](function(_0x28c7f9){logger[_0x17d1('0x1a')]('%s',JSON[_0x17d1('0x19')](_0x28c7f9));return _0x359eb2;});}return _0x359eb2;});}return _0x359eb2;}})[_0x17d1('0x13')](respondWithResult(_0x50216a,0xc9))['catch'](handleError(_0x50216a,null));};exports[_0x17d1('0x6d')]=function(_0x1fb2f9,_0x37c0b7){var _0x3f0afc={'agent':{},'channel':'mail'};if(_0x1fb2f9[_0x17d1('0x4c')]['id']){delete _0x1fb2f9[_0x17d1('0x4c')]['id'];}_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x6e')]=!![];_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x6f')]=moment()[_0x17d1('0x6b')](_0x17d1('0x6c'));_0x1fb2f9['body']['UserId']=_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x70')]||_0x1fb2f9[_0x17d1('0x60')]['id'];_0x3f0afc[_0x17d1('0x71')]['id']=_0x1fb2f9['body'][_0x17d1('0x70')];return db['MailMessage'][_0x17d1('0x4b')]({'where':{'id':_0x1fb2f9['params']['id'],'UserId':null}})[_0x17d1('0x13')](handleEntityNotFound(_0x37c0b7,null))[_0x17d1('0x13')](saveUpdates(_0x1fb2f9[_0x17d1('0x4c')],null))[_0x17d1('0x13')](function(_0x2dcd98){if(_0x2dcd98){_0x3f0afc[_0x17d1('0x1c')]=_0x2dcd98['get']({'plain':!![]});return db['MailInteraction'][_0x17d1('0x4b')]({'where':{'id':_0x2dcd98[_0x17d1('0x72')]}});}return null;})['then'](handleEntityNotFound(_0x37c0b7,null))[_0x17d1('0x13')](function(_0x5224e8){if(_0x5224e8){return _0x5224e8['update']({'UserId':_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x70')],'read1stAt':_[_0x17d1('0x73')](_0x5224e8[_0x17d1('0x74')])?moment()[_0x17d1('0x6b')](_0x17d1('0x6c')):undefined});}return null;})[_0x17d1('0x13')](function(_0x2fa413){if(_0x2fa413){_0x3f0afc[_0x17d1('0x75')]=_0x2fa413[_0x17d1('0x76')]({'plain':!![]});interaction_log[_0x17d1('0x14')](_0x17d1('0x77'),_0x1fb2f9['user']['id'],_0x1fb2f9['user'][_0x17d1('0x2c')],_0x1fb2f9['user'][_0x17d1('0x78')],_0x3f0afc[_0x17d1('0x75')]['id'],_0x1fb2f9['body']?JSON[_0x17d1('0x19')](_0x1fb2f9[_0x17d1('0x4c')]):'null');return respondWithRpcPromise(_0x17d1('0x79'),_0x17d1('0x7a'),_0x3f0afc);}return null;})[_0x17d1('0x13')](function(_0x5be5c2){var _0x449bb1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5be5c2[_0x17d1('0x1c')][_0x17d1('0x7b')];return db[_0x17d1('0x7c')][_0x17d1('0x33')](_0x449bb1,{'type':db['Sequelize'][_0x17d1('0x7d')][_0x17d1('0x7e')],'raw':!![]})['then'](function(_0x4bed4e){return _0x4bed4e;});})[_0x17d1('0x13')](function(_0x5740e4){if(_0x5740e4){_0x3f0afc[_0x17d1('0x1c')][_0x17d1('0x7f')]=_0x5740e4[0x0];if(!_0x1fb2f9['body'][_0x17d1('0x70')])return;return db[_0x17d1('0x80')][_0x17d1('0x4b')]({'where':{'id':_0x1fb2f9[_0x17d1('0x4c')]['UserId'],'role':_0x17d1('0x71')},'attributes':['id',_0x17d1('0x2c'),'fullname',_0x17d1('0x81'),_0x17d1('0x82')],'raw':!![]});}return null;})[_0x17d1('0x13')](function(_0x248453){if(!_0x248453)return null;_0x3f0afc[_0x17d1('0x1c')][_0x17d1('0x71')]=_0x248453;return _0x3f0afc;})[_0x17d1('0x13')](function(_0x2521c9){if(_0x2521c9){if(_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x83')]){_0x3f0afc[_0x17d1('0x1c')]['interface']=util['format'](_0x17d1('0x84'),_0x1fb2f9[_0x17d1('0x60')][_0x17d1('0x2c')]);_0x3f0afc[_0x17d1('0x1c')]['channel']=_0x3f0afc[_0x17d1('0x85')];_0x3f0afc[_0x17d1('0x1c')][_0x17d1('0x86')]=_0x3f0afc[_0x17d1('0x85')];_0x3f0afc['message']['event']='accept';_0x3f0afc[_0x17d1('0x1c')]['body']=htmlToText[_0x17d1('0x87')](_0x3f0afc[_0x17d1('0x1c')]['body']);return respondWithRpcPromise('EventManager',_0x17d1('0x88'),{'event':'acceptmessage','message':_0x3f0afc['message']},client9002)['then'](function(){return _0x3f0afc;});}return _0x3f0afc;}return null;})['then'](respondWithResult(_0x37c0b7,null))['catch'](handleError(_0x37c0b7,null));};exports[_0x17d1('0x89')]=function(_0x20a50a,_0x54060f){var _0x592757={'agent':{},'channel':_0x17d1('0x8a')};if(_0x20a50a[_0x17d1('0x4c')]['id']){delete _0x20a50a[_0x17d1('0x4c')]['id'];}_0x20a50a[_0x17d1('0x4c')][_0x17d1('0x70')]=_0x20a50a[_0x17d1('0x4c')][_0x17d1('0x70')]||_0x20a50a[_0x17d1('0x60')]['id'];_0x592757[_0x17d1('0x71')]['id']=_0x20a50a['body'][_0x17d1('0x70')];return db['MailMessage'][_0x17d1('0x4b')]({'where':{'id':_0x20a50a[_0x17d1('0x4d')]['id'],'UserId':null}})[_0x17d1('0x13')](handleEntityNotFound(_0x54060f,null))[_0x17d1('0x13')](function(_0xcfc528){if(_0xcfc528){_0x592757[_0x17d1('0x1c')]=_0xcfc528[_0x17d1('0x76')]({'plain':!![]});return db[_0x17d1('0x8b')]['find']({'where':{'id':_0xcfc528[_0x17d1('0x72')]}});}return null;})[_0x17d1('0x13')](handleEntityNotFound(_0x54060f,null))['then'](function(_0x37cec4){if(_0x37cec4){_0x592757[_0x17d1('0x75')]=_0x37cec4[_0x17d1('0x76')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x20a50a[_0x17d1('0x60')]['id'],_0x20a50a[_0x17d1('0x60')][_0x17d1('0x2c')],_0x20a50a[_0x17d1('0x60')][_0x17d1('0x78')],_0x592757['interaction']['id'],_0x20a50a[_0x17d1('0x4c')]?JSON[_0x17d1('0x19')](_0x20a50a[_0x17d1('0x4c')]):_0x17d1('0x8c'));return respondWithRpcPromise(_0x17d1('0x8d'),_0x17d1('0x8e'),_0x592757);}return null;})[_0x17d1('0x13')](function(_0x51fc4f){var _0x165c49=_0x17d1('0x8f')+_0x51fc4f[_0x17d1('0x1c')][_0x17d1('0x7b')];return db[_0x17d1('0x7c')][_0x17d1('0x33')](_0x165c49,{'type':db[_0x17d1('0x90')]['QueryTypes']['SELECT'],'raw':!![]})[_0x17d1('0x13')](function(_0x5cc361){return _0x5cc361;});})[_0x17d1('0x13')](function(_0x289a43){if(_0x289a43){_0x592757['message'][_0x17d1('0x7f')]=_0x289a43[0x0];if(!_0x20a50a['body'][_0x17d1('0x70')])return;return db[_0x17d1('0x80')][_0x17d1('0x4b')]({'where':{'id':_0x20a50a[_0x17d1('0x4c')][_0x17d1('0x70')],'role':_0x17d1('0x71')},'attributes':['id',_0x17d1('0x2c'),_0x17d1('0x91'),_0x17d1('0x81'),_0x17d1('0x82')],'raw':!![]});}return null;})[_0x17d1('0x13')](function(_0x3873f3){if(!_0x3873f3)return null;_0x592757[_0x17d1('0x1c')][_0x17d1('0x71')]=_0x3873f3;return _0x592757;})['then'](function(_0x7a0784){if(_0x7a0784){_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x92')]=util[_0x17d1('0x6b')](_0x17d1('0x84'),_0x20a50a[_0x17d1('0x60')][_0x17d1('0x2c')]);_0x7a0784['message'][_0x17d1('0x85')]=_0x592757[_0x17d1('0x85')];_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x86')]=_0x592757['channel'];_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x93')]='reject';_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x4c')]=htmlToText['fromString'](_0x592757[_0x17d1('0x1c')]['body']);respondWithRpcPromise(_0x17d1('0x88'),_0x17d1('0x88'),{'event':_0x17d1('0x94'),'message':_0x7a0784[_0x17d1('0x1c')]},client9002);return _0x592757;}return null;})[_0x17d1('0x13')](respondWithResult(_0x54060f,null))[_0x17d1('0x1e')](handleError(_0x54060f,null));};exports['download']=function(_0x1ab7aa,_0x11eb1f){var _0x30c2c8=moment()[_0x17d1('0x95')]()[_0x17d1('0x96')]();var _0x4284a8=path[_0x17d1('0x97')](config[_0x17d1('0x63')],_0x17d1('0x98'),_0x17d1('0x99'),_0x17d1('0x9a'));var _0x4d86ab=path['join'](config[_0x17d1('0x63')],_0x17d1('0x98'),_0x17d1('0x99'),_0x17d1('0x62'));var _0x38f5c3=util[_0x17d1('0x6b')](_0x17d1('0x9b'),_0x30c2c8);return db[_0x17d1('0x44')][_0x17d1('0x4b')]({'where':{'id':_0x1ab7aa['params']['id']},'attributes':['id','body',_0x17d1('0x9c'),'to','cc',_0x17d1('0x9d'),_0x17d1('0x9e'),_0x17d1('0x9f')],'include':_0x1ab7aa['query'][_0x17d1('0x62')]?[{'model':db[_0x17d1('0xa0')],'as':_0x17d1('0xa1')}]:undefined})[_0x17d1('0x13')](handleEntityNotFound(_0x11eb1f,null))[_0x17d1('0x13')](function(_0x174bb9){if(_0x174bb9){var _0xba0ffb=_0x174bb9;var _0x333d66={'from':_0xba0ffb[_0x17d1('0x9c')],'to':_0xba0ffb['to'],'subject':_0xba0ffb[_0x17d1('0x9e')],'html':_0xba0ffb[_0x17d1('0x4c')],'headers':{'Date':moment(_0xba0ffb['createdAt'])[_0x17d1('0x6b')](_0x17d1('0xa2'))},'attachments':[]};if(_0x174bb9['cc']){_0x333d66['headers']['Cc']=_0x174bb9['cc'];}if(_0x174bb9[_0x17d1('0x9d')]){_0x333d66[_0x17d1('0xa3')][_0x17d1('0xa4')]=_0x174bb9[_0x17d1('0x9d')];}return new BPromise(function(_0x228d5e,_0x54f70c){if(_0x174bb9[_0x17d1('0xa1')]){for(var _0x2b470f=0x0;_0x2b470f<_0x174bb9[_0x17d1('0xa1')][_0x17d1('0x3a')];_0x2b470f++){var _0x8fc3f0=_0x174bb9[_0x17d1('0xa1')][_0x2b470f];var _0x4b3276=path[_0x17d1('0x97')](_0x4d86ab,_0x8fc3f0[_0x17d1('0x65')]);if(fs['existsSync'](_0x4b3276)){_0x333d66[_0x17d1('0x62')][_0x17d1('0xa5')]({'name':_0x8fc3f0[_0x17d1('0x2c')],'contentType':_0x8fc3f0[_0x17d1('0x32')],'data':fs[_0x17d1('0xa6')](_0x4b3276)});}}}emlformat[_0x17d1('0xa7')](_0x333d66,function(_0x287d73,_0x1eb250){if(_0x287d73)return _0x54f70c(_0x287d73);fs[_0x17d1('0xa8')](path['join'](_0x4284a8,_0x38f5c3),_0x1eb250);return _0x228d5e(_0x1eb250);});});}})[_0x17d1('0x13')](function(_0x1eeadb){if(_0x1eeadb){return _0x11eb1f[_0x17d1('0xa9')](path[_0x17d1('0x97')](_0x4284a8,_0x38f5c3),_0x38f5c3,function(_0x10d586){if(!_0x10d586)fs[_0x17d1('0xaa')](path['join'](_0x4284a8,_0x38f5c3));});}})['catch'](handleError(_0x11eb1f,null));};
\ No newline at end of file
index 115c49e..ac33c33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c52=['save','update','remove','hasOwnProperty','events','../../mysqldb','setMaxListeners'];(function(_0xd17717,_0x216479){var _0x421e11=function(_0x332f5){while(--_0x332f5){_0xd17717['push'](_0xd17717['shift']());}};_0x421e11(++_0x216479);}(_0x6c52,0x100));var _0x26c5=function(_0x5a107c,_0x4803cf){_0x5a107c=_0x5a107c-0x0;var _0x1bd525=_0x6c52[_0x5a107c];return _0x1bd525;};'use strict';var EventEmitter=require(_0x26c5('0x0'));var MailMessage=require(_0x26c5('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x26c5('0x2')](0x0);var events={'afterCreate':_0x26c5('0x3'),'afterUpdate':_0x26c5('0x4'),'afterDestroy':_0x26c5('0x5')};function emitEvent(_0x322c7c){return function(_0x3dc493,_0x96deb4,_0xeb0464){MailMessageEvents['emit'](_0x322c7c+':'+_0x3dc493['id'],_0x3dc493);MailMessageEvents['emit'](_0x322c7c,_0x3dc493);_0xeb0464(null);};}for(var e in events){if(events[_0x26c5('0x6')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
+var _0x1b82=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners'];(function(_0x3ebcab,_0x482df2){var _0x4074d3=function(_0x43ec1a){while(--_0x43ec1a){_0x3ebcab['push'](_0x3ebcab['shift']());}};_0x4074d3(++_0x482df2);}(_0x1b82,0x1a9));var _0x21b8=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1b82[_0x17d9e3];return _0x14192d;};'use strict';var EventEmitter=require(_0x21b8('0x0'));var MailMessage=require(_0x21b8('0x1'))['db'][_0x21b8('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x21b8('0x3')](0x0);var events={'afterCreate':_0x21b8('0x4'),'afterUpdate':_0x21b8('0x5'),'afterDestroy':_0x21b8('0x6')};function emitEvent(_0x3d09b7){return function(_0x11f9f8,_0x18231c,_0x397944){MailMessageEvents[_0x21b8('0x7')](_0x3d09b7+':'+_0x11f9f8['id'],_0x11f9f8);MailMessageEvents[_0x21b8('0x7')](_0x3d09b7,_0x11f9f8);_0x397944(null);};}for(var e in events){if(events[_0x21b8('0x8')](e)){var event=events[e];MailMessage[_0x21b8('0x9')](e,emitEvent(event));}}module[_0x21b8('0xa')]=MailMessageEvents;
\ No newline at end of file
index 6e92b90..1dad086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dab=['UserId','MailInteraction','findOne','then','update','createdAt','error','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','define','mail_messages','messageId','plainBody','subject','FULLTEXT','fromString','body','models','get','direction','toLowerCase','out','secret','isNil'];(function(_0x188f17,_0x348963){var _0x1c622f=function(_0x360001){while(--_0x360001){_0x188f17['push'](_0x188f17['shift']());}};_0x1c622f(++_0x348963);}(_0x9dab,0x1ac));var _0xb9da=function(_0x2f9e90,_0x193788){_0x2f9e90=_0x2f9e90-0x0;var _0x4dfbd2=_0x9dab[_0x2f9e90];return _0x4dfbd2;};'use strict';var _=require(_0xb9da('0x0'));var util=require(_0xb9da('0x1'));var logger=require(_0xb9da('0x2'))(_0xb9da('0x3'));var moment=require(_0xb9da('0x4'));var BPromise=require(_0xb9da('0x5'));var rp=require(_0xb9da('0x6'));var htmlToText=require(_0xb9da('0x7'));var fs=require('fs');var path=require(_0xb9da('0x8'));var rimraf=require(_0xb9da('0x9'));var config=require(_0xb9da('0xa'));var attributes=require(_0xb9da('0xb'));module['exports']=function(_0x34641a,_0x5654c6){return _0x34641a[_0xb9da('0xc')]('MailMessage',attributes,{'tableName':_0xb9da('0xd'),'paranoid':![],'indexes':[{'name':_0xb9da('0xe'),'fields':['messageId']},{'name':'fti_mail_messages','fields':[_0xb9da('0xf'),_0xb9da('0x10')],'type':_0xb9da('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x10b32a,_0x58dcce,_0x8b9b49){if(_0x10b32a['body']){_0x10b32a[_0xb9da('0xf')]=htmlToText[_0xb9da('0x12')](_0x10b32a[_0xb9da('0x13')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x8b9b49(null,_0x58dcce);},'afterCreate':function(_0x1f147b,_0x248cde,_0x12f133){var _0x5985d9=_0x34641a[_0xb9da('0x14')];var _0x1e1386=_0x1f147b[_0xb9da('0x15')]({'plain':!![]});if(_0x1e1386[_0xb9da('0x16')][_0xb9da('0x17')]()==='in'||_0x1e1386[_0xb9da('0x16')][_0xb9da('0x17')]()===_0xb9da('0x18')&&!_0x1e1386[_0xb9da('0x19')]&&!_[_0xb9da('0x1a')](_0x1e1386[_0xb9da('0x1b')])){_0x5985d9[_0xb9da('0x1c')][_0xb9da('0x1d')]({'where':{'id':_0x1e1386['MailInteractionId']}})[_0xb9da('0x1e')](function(_0x367bfe){if(_0x367bfe){_0x367bfe[_0xb9da('0x1f')]({'lastMsgAt':_0x1e1386[_0xb9da('0x20')],'lastMsgDirection':_0x1e1386[_0xb9da('0x16')][_0xb9da('0x17')]()});}})['catch'](function(_0x54480e){console[_0xb9da('0x21')](_0x54480e);});}_0x12f133();}},'charset':_0xb9da('0x22'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5ee9=['../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','plainBody','fromString','models','get','direction','toLowerCase','secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','api','bluebird','request-promise','html-to-text','rimraf'];(function(_0x26d9ba,_0x3349b7){var _0x47002c=function(_0x52eae6){while(--_0x52eae6){_0x26d9ba['push'](_0x26d9ba['shift']());}};_0x47002c(++_0x3349b7);}(_0x5ee9,0xf4));var _0x95ee=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x5ee9[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0x95ee('0x0'));var util=require(_0x95ee('0x1'));var logger=require(_0x95ee('0x2'))(_0x95ee('0x3'));var moment=require('moment');var BPromise=require(_0x95ee('0x4'));var rp=require(_0x95ee('0x5'));var htmlToText=require(_0x95ee('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x95ee('0x7'));var config=require(_0x95ee('0x8'));var attributes=require(_0x95ee('0x9'));module[_0x95ee('0xa')]=function(_0xd348d0,_0x38baab){return _0xd348d0[_0x95ee('0xb')](_0x95ee('0xc'),attributes,{'tableName':_0x95ee('0xd'),'paranoid':![],'indexes':[{'name':_0x95ee('0xe'),'fields':[_0x95ee('0xe')]},{'name':_0x95ee('0xf'),'fields':['plainBody',_0x95ee('0x10')],'type':_0x95ee('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x479653,_0x2c0ec4,_0x110da6){if(_0x479653[_0x95ee('0x12')]){_0x479653[_0x95ee('0x13')]=htmlToText[_0x95ee('0x14')](_0x479653[_0x95ee('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x110da6(null,_0x2c0ec4);},'afterCreate':function(_0x1c2b15,_0x52a92b,_0x3a937f){var _0x2851f9=_0xd348d0[_0x95ee('0x15')];var _0x2f00fb=_0x1c2b15[_0x95ee('0x16')]({'plain':!![]});if(_0x2f00fb[_0x95ee('0x17')][_0x95ee('0x18')]()==='in'||_0x2f00fb[_0x95ee('0x17')]['toLowerCase']()==='out'&&!_0x2f00fb[_0x95ee('0x19')]&&!_[_0x95ee('0x1a')](_0x2f00fb[_0x95ee('0x1b')])){_0x2851f9[_0x95ee('0x1c')][_0x95ee('0x1d')]({'where':{'id':_0x2f00fb[_0x95ee('0x1e')]}})['then'](function(_0x59e73f){if(_0x59e73f){_0x59e73f[_0x95ee('0x1f')]({'lastMsgAt':_0x2f00fb[_0x95ee('0x20')],'lastMsgDirection':_0x2f00fb[_0x95ee('0x17')]['toLowerCase']()});}})[_0x95ee('0x21')](function(_0x34db15){console[_0x95ee('0x22')](_0x34db15);});}_0x3a937f();}},'charset':_0x95ee('0x23'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index abe7345..c36b9ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['redis','localhost','socket.io-emitter','./mailMessage.socket','register','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateMailMessage','MailMessage','create','options','raw','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults'];(function(_0x9fb081,_0x48f480){var _0x43f8b0=function(_0x418570){while(--_0x418570){_0x9fb081['push'](_0x9fb081['shift']());}};_0x43f8b0(++_0x48f480);}(_0xb9be,0xc5));var _0xeb9b=function(_0x125ff8,_0x41925f){_0x125ff8=_0x125ff8-0x0;var _0x2d9ef=_0xb9be[_0x125ff8];return _0x2d9ef;};'use strict';var _=require(_0xeb9b('0x0'));var util=require(_0xeb9b('0x1'));var moment=require(_0xeb9b('0x2'));var BPromise=require(_0xeb9b('0x3'));var rs=require(_0xeb9b('0x4'));var fs=require('fs');var Redis=require(_0xeb9b('0x5'));var db=require(_0xeb9b('0x6'))['db'];var utils=require(_0xeb9b('0x7'));var logger=require(_0xeb9b('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xeb9b('0x9'));var client=jayson[_0xeb9b('0xa')][_0xeb9b('0xb')]({'port':0x232a});config['redis']=_[_0xeb9b('0xc')](config[_0xeb9b('0xd')],{'host':_0xeb9b('0xe'),'port':0x18eb});var socket=require(_0xeb9b('0xf'))(new Redis(config[_0xeb9b('0xd')]));require(_0xeb9b('0x10'))[_0xeb9b('0x11')](socket);function respondWithRpcPromise(_0x16761a,_0x32f0c4,_0x4f4952){return new BPromise(function(_0x20c855,_0x58d6a4){return client['request'](_0x16761a,_0x4f4952)[_0xeb9b('0x12')](function(_0x4236c0){logger['info'](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));logger[_0xeb9b('0x15')](_0xeb9b('0x16'),_0x32f0c4,'request\x20sent',JSON['stringify'](_0x4236c0));if(_0x4236c0['error']){if(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x18')]===0x1f4){logger[_0xeb9b('0x17')]('MailMessage,\x20%s,\x20%s',_0x32f0c4,_0x4236c0['error']['message']);return _0x58d6a4(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);}logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);return _0x20c855(_0x4236c0[_0xeb9b('0x17')]['message']);}else{logger[_0xeb9b('0x1a')](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));_0x20c855(_0x4236c0[_0xeb9b('0x1b')][_0xeb9b('0x19')]);}})[_0xeb9b('0x1c')](function(_0x21010e){logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x21010e);_0x58d6a4(_0x21010e);});});}exports[_0xeb9b('0x1d')]=function(_0x4f436e){var _0x43dc48=this;return new Promise(function(_0x5a7ffd,_0x5d5f54){return db[_0xeb9b('0x1e')][_0xeb9b('0x1f')](_0x4f436e['body'],{'raw':_0x4f436e[_0xeb9b('0x20')]?_0x4f436e[_0xeb9b('0x20')][_0xeb9b('0x21')]===undefined?!![]:![]:!![]})[_0xeb9b('0x12')](function(_0x3c8be7){logger[_0xeb9b('0x1a')](_0xeb9b('0x1d'),_0x4f436e);logger[_0xeb9b('0x15')](_0xeb9b('0x1d'),_0x4f436e,JSON[_0xeb9b('0x22')](_0x3c8be7));_0x5a7ffd(_0x3c8be7);})[_0xeb9b('0x1c')](function(_0x296f95){logger[_0xeb9b('0x17')](_0xeb9b('0x1d'),_0x296f95[_0xeb9b('0x19')],_0x4f436e);_0x5d5f54(_0x43dc48[_0xeb9b('0x17')](0x1f4,_0x296f95['message']));});});};
\ No newline at end of file
+var _0xf2e3=['info','request\x20sent','debug','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','CreateMailMessage','MailMessage','create','body','options','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then'];(function(_0xa2384b,_0x291e60){var _0x41dcfb=function(_0x51d17b){while(--_0x51d17b){_0xa2384b['push'](_0xa2384b['shift']());}};_0x41dcfb(++_0x291e60);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xf2e3[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var moment=require(_0x3f2e('0x1'));var BPromise=require(_0x3f2e('0x2'));var rs=require(_0x3f2e('0x3'));var fs=require('fs');var Redis=require(_0x3f2e('0x4'));var db=require(_0x3f2e('0x5'))['db'];var utils=require(_0x3f2e('0x6'));var logger=require(_0x3f2e('0x7'))(_0x3f2e('0x8'));var config=require(_0x3f2e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f2e('0xa')][_0x3f2e('0xb')]({'port':0x232a});config[_0x3f2e('0xc')]=_[_0x3f2e('0xd')](config[_0x3f2e('0xc')],{'host':_0x3f2e('0xe'),'port':0x18eb});var socket=require(_0x3f2e('0xf'))(new Redis(config[_0x3f2e('0xc')]));require(_0x3f2e('0x10'))[_0x3f2e('0x11')](socket);function respondWithRpcPromise(_0x21f22b,_0x32902a,_0x1dd9d0){return new BPromise(function(_0x10a392,_0x1bb1dd){return client[_0x3f2e('0x12')](_0x21f22b,_0x1dd9d0)[_0x3f2e('0x13')](function(_0x475cd2){logger[_0x3f2e('0x14')]('MailMessage,\x20%s,\x20%s',_0x32902a,_0x3f2e('0x15'));logger[_0x3f2e('0x16')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x32902a,_0x3f2e('0x15'),JSON[_0x3f2e('0x17')](_0x475cd2));if(_0x475cd2[_0x3f2e('0x18')]){if(_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x19')]===0x1f4){logger['error'](_0x3f2e('0x1a'),_0x32902a,_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);return _0x1bb1dd(_0x475cd2['error'][_0x3f2e('0x1b')]);}logger[_0x3f2e('0x18')](_0x3f2e('0x1a'),_0x32902a,_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);return _0x10a392(_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);}else{logger[_0x3f2e('0x14')](_0x3f2e('0x1a'),_0x32902a,_0x3f2e('0x15'));_0x10a392(_0x475cd2[_0x3f2e('0x1c')]['message']);}})[_0x3f2e('0x1d')](function(_0x243822){logger[_0x3f2e('0x18')](_0x3f2e('0x1a'),_0x32902a,_0x243822);_0x1bb1dd(_0x243822);});});}exports[_0x3f2e('0x1e')]=function(_0x4eb1e7){var _0x4ba868=this;return new Promise(function(_0x904d94,_0x11f84c){return db[_0x3f2e('0x1f')][_0x3f2e('0x20')](_0x4eb1e7[_0x3f2e('0x21')],{'raw':_0x4eb1e7[_0x3f2e('0x22')]?_0x4eb1e7['options']['raw']===undefined?!![]:![]:!![]})[_0x3f2e('0x13')](function(_0x37dab2){logger['info']('CreateMailMessage',_0x4eb1e7);logger[_0x3f2e('0x16')]('CreateMailMessage',_0x4eb1e7,JSON[_0x3f2e('0x17')](_0x37dab2));_0x904d94(_0x37dab2);})[_0x3f2e('0x1d')](function(_0x515e32){logger['error']('CreateMailMessage',_0x515e32[_0x3f2e('0x1b')],_0x4eb1e7);_0x11f84c(_0x4ba868[_0x3f2e('0x18')](0x1f4,_0x515e32['message']));});});};
\ No newline at end of file
index 7ba1ae2..8996ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c11=['save','remove','update','removeListener','register','mailMessage:'];(function(_0x23bdc9,_0x263a65){var _0x122214=function(_0x5dc0c4){while(--_0x5dc0c4){_0x23bdc9['push'](_0x23bdc9['shift']());}};_0x122214(++_0x263a65);}(_0x2c11,0xd2));var _0x12c1=function(_0x59f5fe,_0x4524ed){_0x59f5fe=_0x59f5fe-0x0;var _0x398bd2=_0x2c11[_0x59f5fe];return _0x398bd2;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x12c1('0x0'),_0x12c1('0x1'),_0x12c1('0x2')];function createListener(_0xb32936,_0x459600){return function(_0x2332e0){_0x459600['emit'](_0xb32936,_0x2332e0);};}function removeListener(_0x1169a2,_0x4c5d4a){return function(){MailMessageEvents[_0x12c1('0x3')](_0x1169a2,_0x4c5d4a);};}exports[_0x12c1('0x4')]=function(_0x422e42){for(var _0x3b9ca2=0x0,_0x5e582c=events['length'];_0x3b9ca2<_0x5e582c;_0x3b9ca2++){var _0x11a85c=events[_0x3b9ca2];var _0x24568e=createListener(_0x12c1('0x5')+_0x11a85c,_0x422e42);MailMessageEvents['on'](_0x11a85c,_0x24568e);}};
\ No newline at end of file
+var _0xcca0=['emit','removeListener','register','length','mailMessage:','remove'];(function(_0x52de74,_0x152687){var _0x33113e=function(_0x182424){while(--_0x182424){_0x52de74['push'](_0x52de74['shift']());}};_0x33113e(++_0x152687);}(_0xcca0,0x1d3));var _0x0cca=function(_0x421ff6,_0x40f195){_0x421ff6=_0x421ff6-0x0;var _0x177051=_0xcca0[_0x421ff6];return _0x177051;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=['save',_0x0cca('0x0'),'update'];function createListener(_0x390f6a,_0x60637f){return function(_0x250d22){_0x60637f[_0x0cca('0x1')](_0x390f6a,_0x250d22);};}function removeListener(_0x3a55b3,_0x1d092d){return function(){MailMessageEvents[_0x0cca('0x2')](_0x3a55b3,_0x1d092d);};}exports[_0x0cca('0x3')]=function(_0x229ecc){for(var _0x5a4a6b=0x0,_0x4aef73=events[_0x0cca('0x4')];_0x5a4a6b<_0x4aef73;_0x5a4a6b++){var _0x3e7328=events[_0x5a4a6b];var _0x45c66a=createListener(_0x0cca('0x5')+_0x3e7328,_0x229ecc);MailMessageEvents['on'](_0x3e7328,_0x45c66a);}};
\ No newline at end of file
index 38a9bda..a42e4f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bcd=['/:id/users','getAgents','post','addAgents','put','destroy','removeTeams','delete','removeAgents','exports','multer','path','express','../../components/auth/service','../../components/interaction/service','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams'];(function(_0x54f327,_0x368bf5){var _0x4bacc3=function(_0x303ad3){while(--_0x303ad3){_0x54f327['push'](_0x54f327['shift']());}};_0x4bacc3(++_0x368bf5);}(_0x4bcd,0x72));var _0xd4bc=function(_0x42e7d9,_0x4a961e){_0x42e7d9=_0x42e7d9-0x0;var _0x576412=_0x4bcd[_0x42e7d9];return _0x576412;};'use strict';var multer=require(_0xd4bc('0x0'));var util=require('util');var path=require(_0xd4bc('0x1'));var timeout=require('connect-timeout');var express=require(_0xd4bc('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd4bc('0x3'));var interaction=require(_0xd4bc('0x4'));var config=require('../../config/environment');var controller=require(_0xd4bc('0x5'));router[_0xd4bc('0x6')]('/',auth[_0xd4bc('0x7')](),controller[_0xd4bc('0x8')]);router['get'](_0xd4bc('0x9'),auth[_0xd4bc('0x7')](),controller[_0xd4bc('0xa')]);router['get'](_0xd4bc('0xb'),auth[_0xd4bc('0x7')](),controller[_0xd4bc('0xc')]);router['get']('/:id/members',auth[_0xd4bc('0x7')](),controller[_0xd4bc('0xd')]);router[_0xd4bc('0x6')](_0xd4bc('0xe'),auth[_0xd4bc('0x7')](),controller[_0xd4bc('0xf')]);router[_0xd4bc('0x6')](_0xd4bc('0x10'),auth['isAuthenticated'](),controller[_0xd4bc('0x11')]);router['post']('/',auth[_0xd4bc('0x7')](),controller['create']);router[_0xd4bc('0x12')](_0xd4bc('0xe'),auth[_0xd4bc('0x7')](),controller['addTeams']);router[_0xd4bc('0x12')](_0xd4bc('0x10'),auth[_0xd4bc('0x7')](),controller[_0xd4bc('0x13')]);router[_0xd4bc('0x14')](_0xd4bc('0xb'),auth[_0xd4bc('0x7')](),controller['update']);router['delete'](_0xd4bc('0xb'),auth[_0xd4bc('0x7')](),controller[_0xd4bc('0x15')]);router['delete'](_0xd4bc('0xe'),auth[_0xd4bc('0x7')](),controller[_0xd4bc('0x16')]);router[_0xd4bc('0x17')](_0xd4bc('0x10'),auth['isAuthenticated'](),controller[_0xd4bc('0x18')]);module[_0xd4bc('0x19')]=router;
\ No newline at end of file
+var _0x7d14=['/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','/describe','/:id','isAuthenticated','show','/:id/members'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7d14,0x9f));var _0x47d1=function(_0x2c5df9,_0x2811cb){_0x2c5df9=_0x2c5df9-0x0;var _0x39d1d0=_0x7d14[_0x2c5df9];return _0x39d1d0;};'use strict';var multer=require(_0x47d1('0x0'));var util=require(_0x47d1('0x1'));var path=require(_0x47d1('0x2'));var timeout=require(_0x47d1('0x3'));var express=require(_0x47d1('0x4'));var router=express['Router']();var fs_extra=require(_0x47d1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x47d1('0x6'));var config=require(_0x47d1('0x7'));var controller=require(_0x47d1('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x47d1('0x9')](_0x47d1('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x47d1('0x9')](_0x47d1('0xb'),auth[_0x47d1('0xc')](),controller[_0x47d1('0xd')]);router[_0x47d1('0x9')](_0x47d1('0xe'),auth[_0x47d1('0xc')](),controller['getMembers']);router[_0x47d1('0x9')](_0x47d1('0xf'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x10')]);router[_0x47d1('0x9')](_0x47d1('0x11'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x12')]);router['post']('/',auth[_0x47d1('0xc')](),controller[_0x47d1('0x13')]);router[_0x47d1('0x14')](_0x47d1('0xf'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x15')]);router[_0x47d1('0x14')](_0x47d1('0x11'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x16')]);router[_0x47d1('0x17')](_0x47d1('0xb'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x18')]);router[_0x47d1('0x19')](_0x47d1('0xb'),auth[_0x47d1('0xc')](),controller['destroy']);router[_0x47d1('0x19')](_0x47d1('0xf'),auth['isAuthenticated'](),controller[_0x47d1('0x1a')]);router[_0x47d1('0x19')](_0x47d1('0x11'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x1b')]);module[_0x47d1('0x1c')]=router;
\ No newline at end of file
index 45cd52c..688ecc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa428=['rrmemory','beepall','STRING','name','INTEGER','ENUM'];(function(_0x18fe54,_0xff789){var _0xccb1ee=function(_0x513cf3){while(--_0x513cf3){_0x18fe54['push'](_0x18fe54['shift']());}};_0xccb1ee(++_0xff789);}(_0xa428,0x17c));var _0x8a42=function(_0x32807d,_0x3934c8){_0x32807d=_0x32807d-0x0;var _0x16e4f6=_0xa428[_0x32807d];return _0x16e4f6;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8a42('0x0')],'unique':_0x8a42('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8a42('0x0')]},'timeout':{'type':Sequelize[_0x8a42('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8a42('0x3')](_0x8a42('0x4'),_0x8a42('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x1f37=['sequelize','exports','name','INTEGER','ENUM','rrmemory'];(function(_0x41dc7c,_0x15924c){var _0x312f67=function(_0x232d1d){while(--_0x232d1d){_0x41dc7c['push'](_0x41dc7c['shift']());}};_0x312f67(++_0x15924c);}(_0x1f37,0x162));var _0x71f3=function(_0x1d1d09,_0x504d77){_0x1d1d09=_0x1d1d09-0x0;var _0x8827e=_0x1f37[_0x1d1d09];return _0x8827e;};'use strict';var Sequelize=require(_0x71f3('0x0'));module[_0x71f3('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x71f3('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x71f3('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x71f3('0x4')](_0x71f3('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
index 06ef933..2348079 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','json','offset','undefined','count','set','reject','destroy','then','get','end','error','stack','name','send','map','MailQueue','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','type','merge','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileResource','describe','getMembers','findOne','UserMailQueue','MailQueueId','User','UserId','mailPause','createdAt','format','%s/%s','SIP','getTeams','addTeams','ids','Agents','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','Team','field','tq.TeamId','from','join','user_has_teams','MailQueueId\x20=\x20?','clone','SELECT','includes','all','union','removeAgents','userMailQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util'];(function(_0x4a2898,_0x102be4){var _0x4722cf=function(_0x6a9220){while(--_0x6a9220){_0x4a2898['push'](_0x4a2898['shift']());}};_0x4722cf(++_0x102be4);}(_0x049e,0x16a));var _0xe049=function(_0x22bdd3,_0x552e50){_0x22bdd3=_0x22bdd3-0x0;var _0x44d9d9=_0x049e[_0x22bdd3];return _0x44d9d9;};'use strict';var emlformat=require(_0xe049('0x0'));var rimraf=require(_0xe049('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe049('0x2'));var rp=require('request-promise');var moment=require(_0xe049('0x3'));var BPromise=require(_0xe049('0x4'));var Mustache=require(_0xe049('0x5'));var util=require(_0xe049('0x6'));var path=require(_0xe049('0x7'));var sox=require('sox');var csv=require(_0xe049('0x8'));var ejs=require(_0xe049('0x9'));var fs=require('fs');var fs_extra=require(_0xe049('0xa'));var _=require(_0xe049('0xb'));var squel=require(_0xe049('0xc'));var crypto=require(_0xe049('0xd'));var jsforce=require(_0xe049('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe049('0x8'));var querystring=require(_0xe049('0xf'));var Papa=require(_0xe049('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe049('0x11'));var as=require(_0xe049('0x12'));var hardwareService=require(_0xe049('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xe049('0x14'));var licenseUtil=require(_0xe049('0x15'));var db=require(_0xe049('0x16'))['db'];config[_0xe049('0x17')]=_[_0xe049('0x18')](config[_0xe049('0x17')],{'host':_0xe049('0x19'),'port':0x18eb});var socket=require(_0xe049('0x1a'))(new Redis(config['redis']));require(_0xe049('0x1b'))[_0xe049('0x1c')](socket);function respondWithStatusCode(_0x3924a4,_0x35fd0d){_0x35fd0d=_0x35fd0d||0xcc;return function(_0x5f57d3){if(_0x5f57d3){return _0x3924a4[_0xe049('0x1d')](_0x35fd0d);}return _0x3924a4[_0xe049('0x1e')](_0x35fd0d)['end']();};}function respondWithResult(_0x388be0,_0x26b40c){_0x26b40c=_0x26b40c||0xc8;return function(_0x526d25){if(_0x526d25){return _0x388be0[_0xe049('0x1e')](_0x26b40c)[_0xe049('0x1f')](_0x526d25);}};}function respondWithFilteredResult(_0x5d435b,_0x400a88){return function(_0x54c303){if(_0x54c303){var _0x520dd9=typeof _0x400a88[_0xe049('0x20')]==='undefined'&&typeof _0x400a88['limit']===_0xe049('0x21');var _0x1092ec=_0x54c303['count'];var _0x4cf18d=_0x520dd9?0x0:_0x400a88[_0xe049('0x20')];var _0x156225=_0x520dd9?_0x54c303[_0xe049('0x22')]:_0x400a88[_0xe049('0x20')]+_0x400a88['limit'];var _0x572f29;if(_0x156225>=_0x1092ec){_0x156225=_0x1092ec;_0x572f29=0xc8;}else{_0x572f29=0xce;}_0x5d435b[_0xe049('0x1e')](_0x572f29);return _0x5d435b[_0xe049('0x23')]('Content-Range',_0x4cf18d+'-'+_0x156225+'/'+_0x1092ec)[_0xe049('0x1f')](_0x54c303);}return null;};}function patchUpdates(_0x3f14eb){return function(_0x10cb90){try{jsonpatch['apply'](_0x10cb90,_0x3f14eb,!![]);}catch(_0x197358){return BPromise[_0xe049('0x24')](_0x197358);}return _0x10cb90['save']();};}function saveUpdates(_0x4848c9,_0x5663ec){return function(_0x3d9900){if(_0x3d9900){return _0x3d9900['update'](_0x4848c9)['then'](function(_0x1aafd1){return _0x1aafd1;});}return null;};}function removeEntity(_0x1efbbe,_0x53620b){return function(_0x1f5233){if(_0x1f5233){return _0x1f5233[_0xe049('0x25')]()[_0xe049('0x26')](function(){var _0x423ba4=_0x1f5233[_0xe049('0x27')]({'plain':!![]});var _0x1843b8='MailQueues';return db['UserProfileResource'][_0xe049('0x25')]({'where':{'type':_0x1843b8,'resourceId':_0x423ba4['id']}})['then'](function(){return _0x1f5233;});})[_0xe049('0x26')](function(){_0x1efbbe['status'](0xcc)[_0xe049('0x28')]();});}};}function handleEntityNotFound(_0x2b79dc,_0x5adcd6){return function(_0x432a6e){if(!_0x432a6e){_0x2b79dc[_0xe049('0x1d')](0x194);}return _0x432a6e;};}function handleError(_0xb64700,_0x33353d){_0x33353d=_0x33353d||0x1f4;return function(_0x4464b2){logger[_0xe049('0x29')](_0x4464b2[_0xe049('0x2a')]);if(_0x4464b2[_0xe049('0x2b')]){delete _0x4464b2[_0xe049('0x2b')];}_0xb64700[_0xe049('0x1e')](_0x33353d)[_0xe049('0x2c')](_0x4464b2);};}exports['index']=function(_0x397dc3,_0x1e99c8){var _0x4f20f6={},_0x5ea46c={},_0x4c4841={'count':0x0,'rows':[]};var _0x4c1499=_[_0xe049('0x2d')](db[_0xe049('0x2e')][_0xe049('0x2f')],function(_0x6d6cf3){return{'name':_0x6d6cf3[_0xe049('0x30')],'type':_0x6d6cf3['type'][_0xe049('0x31')]};});_0x5ea46c[_0xe049('0x32')]=_[_0xe049('0x2d')](_0x4c1499,_0xe049('0x2b'));_0x5ea46c[_0xe049('0x33')]=_['keys'](_0x397dc3[_0xe049('0x33')]);_0x5ea46c['filters']=_[_0xe049('0x34')](_0x5ea46c['model'],_0x5ea46c[_0xe049('0x33')]);_0x4f20f6[_0xe049('0x35')]=_[_0xe049('0x34')](_0x5ea46c[_0xe049('0x32')],qs[_0xe049('0x36')](_0x397dc3[_0xe049('0x33')][_0xe049('0x36')]));_0x4f20f6[_0xe049('0x35')]=_0x4f20f6[_0xe049('0x35')][_0xe049('0x37')]?_0x4f20f6[_0xe049('0x35')]:_0x5ea46c['model'];if(!_0x397dc3[_0xe049('0x33')][_0xe049('0x38')](_0xe049('0x39'))){_0x4f20f6[_0xe049('0x3a')]=qs[_0xe049('0x3a')](_0x397dc3[_0xe049('0x33')][_0xe049('0x3a')]);_0x4f20f6[_0xe049('0x20')]=qs['offset'](_0x397dc3[_0xe049('0x33')][_0xe049('0x20')]);}_0x4f20f6[_0xe049('0x3b')]=qs[_0xe049('0x3c')](_0x397dc3[_0xe049('0x33')][_0xe049('0x3c')]);_0x4f20f6[_0xe049('0x3d')]=qs[_0xe049('0x3e')](_[_0xe049('0x3f')](_0x397dc3[_0xe049('0x33')],_0x5ea46c['filters']),_0x4c1499);if(_0x397dc3[_0xe049('0x33')][_0xe049('0x40')]){_0x4f20f6[_0xe049('0x3d')]=_['merge'](_0x4f20f6[_0xe049('0x3d')],{'$or':_['map'](_0x4c1499,function(_0x570fa8){if(_0x570fa8[_0xe049('0x41')]!=='VIRTUAL'){var _0x1a5867={};_0x1a5867[_0x570fa8[_0xe049('0x2b')]]={'$like':'%'+_0x397dc3[_0xe049('0x33')][_0xe049('0x40')]+'%'};return _0x1a5867;}})});}_0x4f20f6=_[_0xe049('0x42')]({},_0x4f20f6,_0x397dc3['options']);var _0x4261da={'where':_0x4f20f6[_0xe049('0x3d')]};return db['MailQueue']['count'](_0x4261da)[_0xe049('0x26')](function(_0x20d264){_0x4c4841[_0xe049('0x22')]=_0x20d264;if(_0x397dc3[_0xe049('0x33')][_0xe049('0x43')]){_0x4f20f6[_0xe049('0x44')]=[{'all':!![]}];}return db['MailQueue'][_0xe049('0x45')](_0x4f20f6);})[_0xe049('0x26')](function(_0x5c04f6){_0x4c4841[_0xe049('0x46')]=_0x5c04f6;return _0x4c4841;})[_0xe049('0x26')](respondWithFilteredResult(_0x1e99c8,_0x4f20f6))[_0xe049('0x47')](handleError(_0x1e99c8,null));};exports[_0xe049('0x48')]=function(_0x117798,_0x560d2e){var _0x4acb61={'raw':!![],'where':{'id':_0x117798[_0xe049('0x49')]['id']}},_0x3f4f68={};_0x3f4f68[_0xe049('0x32')]=_[_0xe049('0x4a')](db[_0xe049('0x2e')][_0xe049('0x2f')]);_0x3f4f68['query']=_[_0xe049('0x4a')](_0x117798[_0xe049('0x33')]);_0x3f4f68['filters']=_[_0xe049('0x34')](_0x3f4f68['model'],_0x3f4f68[_0xe049('0x33')]);_0x4acb61['attributes']=_[_0xe049('0x34')](_0x3f4f68['model'],qs[_0xe049('0x36')](_0x117798[_0xe049('0x33')][_0xe049('0x36')]));_0x4acb61[_0xe049('0x35')]=_0x4acb61[_0xe049('0x35')]['length']?_0x4acb61[_0xe049('0x35')]:_0x3f4f68[_0xe049('0x32')];if(_0x117798[_0xe049('0x33')][_0xe049('0x43')]){_0x4acb61[_0xe049('0x44')]=[{'all':!![]}];}_0x4acb61=_[_0xe049('0x42')]({},_0x4acb61,_0x117798[_0xe049('0x4b')]);return db[_0xe049('0x2e')][_0xe049('0x4c')](_0x4acb61)['then'](handleEntityNotFound(_0x560d2e,null))['then'](respondWithResult(_0x560d2e,null))[_0xe049('0x47')](handleError(_0x560d2e,null));};exports[_0xe049('0x4d')]=function(_0x32ff60,_0x2a6f3c){return db[_0xe049('0x2e')][_0xe049('0x4d')](_0x32ff60[_0xe049('0x4e')],{})[_0xe049('0x26')](function(_0x23692f){var _0x23da27=_0x32ff60[_0xe049('0x4f')]['get']({'plain':!![]});if(!_0x23da27)throw new Error(_0xe049('0x50'));if(_0x23da27[_0xe049('0x51')]===_0xe049('0x4f')){var _0x4710ae=_0x23692f[_0xe049('0x27')]({'plain':!![]});var _0x3779c6=_0xe049('0x52');return db['UserProfileSection']['find']({'where':{'name':_0x3779c6,'userProfileId':_0x23da27['userProfileId']},'raw':!![]})[_0xe049('0x26')](function(_0x2e508e){if(_0x2e508e&&_0x2e508e['autoAssociation']===0x0){return db[_0xe049('0x53')][_0xe049('0x4d')]({'name':_0x4710ae[_0xe049('0x2b')],'resourceId':_0x4710ae['id'],'type':_0x2e508e[_0xe049('0x2b')],'sectionId':_0x2e508e['id']},{})['then'](function(){return _0x23692f;});}else{return _0x23692f;}})['catch'](function(_0x8a4b82){logger[_0xe049('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x8a4b82);throw _0x8a4b82;});}return _0x23692f;})['then'](respondWithResult(_0x2a6f3c,0xc9))[_0xe049('0x47')](handleError(_0x2a6f3c,null));};exports['update']=function(_0x3ef1fa,_0x2a1e06){if(_0x3ef1fa['body']['id']){delete _0x3ef1fa[_0xe049('0x4e')]['id'];}return db['MailQueue'][_0xe049('0x4c')]({'where':{'id':_0x3ef1fa[_0xe049('0x49')]['id']}})['then'](handleEntityNotFound(_0x2a1e06,null))[_0xe049('0x26')](saveUpdates(_0x3ef1fa[_0xe049('0x4e')],null))[_0xe049('0x26')](respondWithResult(_0x2a1e06,null))[_0xe049('0x47')](handleError(_0x2a1e06,null));};exports[_0xe049('0x25')]=function(_0x28beed,_0x26ccd4){return db[_0xe049('0x2e')][_0xe049('0x4c')]({'where':{'id':_0x28beed[_0xe049('0x49')]['id']}})['then'](handleEntityNotFound(_0x26ccd4,null))[_0xe049('0x26')](removeEntity(_0x26ccd4,null))[_0xe049('0x47')](handleError(_0x26ccd4,null));};exports[_0xe049('0x54')]=function(_0x4d2b67,_0x1434eb){return db[_0xe049('0x2e')][_0xe049('0x54')]()[_0xe049('0x26')](respondWithResult(_0x1434eb,null))[_0xe049('0x47')](handleError(_0x1434eb,null));};exports[_0xe049('0x55')]=function(_0x3cea76,_0x5790c6,_0x33f971){var _0x56e942={'raw':!![],'where':{}},_0x440b63={},_0x51f90a;return db[_0xe049('0x2e')][_0xe049('0x56')]({'where':{'id':_0x3cea76[_0xe049('0x49')]['id']}})[_0xe049('0x26')](handleEntityNotFound(_0x5790c6,null))[_0xe049('0x26')](function(_0x4af8a3){if(_0x4af8a3){_0x51f90a=_0x4af8a3[_0xe049('0x27')]({'plain':!![]});_0x440b63[_0xe049('0x32')]=_[_0xe049('0x4a')](db[_0xe049('0x57')][_0xe049('0x2f')]);_0x440b63[_0xe049('0x33')]=_[_0xe049('0x4a')](_0x3cea76[_0xe049('0x33')]);_0x440b63['filters']=_['intersection'](_0x440b63[_0xe049('0x32')],_0x440b63[_0xe049('0x33')]);_0x56e942['attributes']=_[_0xe049('0x34')](_0x440b63[_0xe049('0x32')],qs[_0xe049('0x36')](_0x3cea76[_0xe049('0x33')]['fields']));_0x56e942['attributes']=_0x56e942[_0xe049('0x35')]['length']?_0x56e942[_0xe049('0x35')]:_0x440b63[_0xe049('0x32')];if(!_0x3cea76[_0xe049('0x33')][_0xe049('0x38')](_0xe049('0x39'))){_0x56e942[_0xe049('0x3a')]=qs[_0xe049('0x3a')](_0x3cea76[_0xe049('0x33')]['limit']);_0x56e942[_0xe049('0x20')]=qs[_0xe049('0x20')](_0x3cea76[_0xe049('0x33')][_0xe049('0x20')]);}_0x56e942[_0xe049('0x3b')]=qs['sort'](_0x3cea76[_0xe049('0x33')][_0xe049('0x3c')]);_0x56e942[_0xe049('0x3d')]=qs[_0xe049('0x3e')](_['pick'](_0x3cea76['query'],_0x440b63[_0xe049('0x3e')]));_0x56e942[_0xe049('0x3d')][_0xe049('0x58')]=_0x4af8a3['id'];if(_0x3cea76[_0xe049('0x33')][_0xe049('0x40')]){_0x56e942[_0xe049('0x3d')]=_[_0xe049('0x42')](_0x56e942[_0xe049('0x3d')],{'$or':_[_0xe049('0x2d')](_0x56e942[_0xe049('0x35')],function(_0x8e5805){var _0x3fee79={};_0x3fee79[_0x8e5805]={'$like':'%'+_0x3cea76[_0xe049('0x33')][_0xe049('0x40')]+'%'};return _0x3fee79;})});}_0x56e942=_[_0xe049('0x42')]({},_0x56e942,_0x3cea76[_0xe049('0x4b')]);return db['UserMailQueue']['findAll'](_0x56e942);}})[_0xe049('0x26')](function(_0xb1604a){if(_0xb1604a){return db[_0xe049('0x59')]['findAndCountAll']({'where':{'id':_[_0xe049('0x2d')](_0xb1604a,_0xe049('0x5a')),'role':'agent'},'attributes':['id',_0xe049('0x2b'),_0xe049('0x5b'),'updatedAt',_0xe049('0x5c')]});}})[_0xe049('0x26')](function(_0x408638){if(_0x408638){return{'count':_0x408638[_0xe049('0x22')],'rows':_[_0xe049('0x2d')](_0x408638[_0xe049('0x46')],function(_0x104b8d){return{'membername':_0x104b8d[_0xe049('0x2b')],'UserId':_0x104b8d['id'],'queue_name':_0x51f90a[_0xe049('0x2b')],'MailQueueId':_0x51f90a['id'],'interface':util[_0xe049('0x5d')](_0xe049('0x5e'),_0xe049('0x5f'),_0x104b8d[_0xe049('0x2b')]),'penalty':0x0,'paused':_0x104b8d['mailPause'],'createdAt':_0x104b8d[_0xe049('0x5c')],'updatedAt':_0x104b8d['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5790c6,_0x56e942))[_0xe049('0x47')](handleError(_0x5790c6,null));};exports[_0xe049('0x60')]=function(_0x39dfa3,_0x4ed7ba,_0x2b80e5){var _0x5c3121={};var _0x34a588={};var _0x5ee7e1;var _0x27819a;return db[_0xe049('0x2e')][_0xe049('0x56')]({'where':{'id':_0x39dfa3[_0xe049('0x49')]['id']}})[_0xe049('0x26')](handleEntityNotFound(_0x4ed7ba,null))[_0xe049('0x26')](function(_0x78bcfa){if(_0x78bcfa){_0x5ee7e1=_0x78bcfa;_0x34a588[_0xe049('0x32')]=_['keys'](db['Team'][_0xe049('0x2f')]);_0x34a588[_0xe049('0x33')]=_[_0xe049('0x4a')](_0x39dfa3[_0xe049('0x33')]);_0x34a588[_0xe049('0x3e')]=_[_0xe049('0x34')](_0x34a588['model'],_0x34a588[_0xe049('0x33')]);_0x5c3121['attributes']=_['intersection'](_0x34a588[_0xe049('0x32')],qs[_0xe049('0x36')](_0x39dfa3[_0xe049('0x33')]['fields']));_0x5c3121[_0xe049('0x35')]=_0x5c3121['attributes']['length']?_0x5c3121[_0xe049('0x35')]:_0x34a588[_0xe049('0x32')];_0x5c3121[_0xe049('0x3b')]=qs['sort'](_0x39dfa3['query'][_0xe049('0x3c')]);_0x5c3121[_0xe049('0x3d')]=qs['filters'](_[_0xe049('0x3f')](_0x39dfa3[_0xe049('0x33')],_0x34a588[_0xe049('0x3e')]));if(_0x39dfa3[_0xe049('0x33')]['filter']){_0x5c3121[_0xe049('0x3d')]=_[_0xe049('0x42')](_0x5c3121[_0xe049('0x3d')],{'$or':_['map'](_0x5c3121[_0xe049('0x35')],function(_0x409a7a){var _0x26d73a={};_0x26d73a[_0x409a7a]={'$like':'%'+_0x39dfa3[_0xe049('0x33')]['filter']+'%'};return _0x26d73a;})});}_0x5c3121=_[_0xe049('0x42')]({},_0x5c3121,_0x39dfa3[_0xe049('0x4b')]);return _0x5ee7e1[_0xe049('0x60')](_0x5c3121);}})['then'](function(_0x24e26b){if(_0x24e26b){_0x27819a=_0x24e26b[_0xe049('0x37')];if(!_0x39dfa3['query'][_0xe049('0x38')](_0xe049('0x39'))){_0x5c3121['limit']=qs[_0xe049('0x3a')](_0x39dfa3[_0xe049('0x33')][_0xe049('0x3a')]);_0x5c3121[_0xe049('0x20')]=qs[_0xe049('0x20')](_0x39dfa3[_0xe049('0x33')][_0xe049('0x20')]);}return _0x5ee7e1['getTeams'](_0x5c3121);}})['then'](function(_0x4f00c9){if(_0x4f00c9){return _0x4f00c9?{'count':_0x27819a,'rows':_0x4f00c9}:null;}})[_0xe049('0x26')](respondWithResult(_0x4ed7ba,null))['catch'](handleError(_0x4ed7ba,null));};exports[_0xe049('0x61')]=function(_0xbdea83,_0x116acd,_0x3dbc0a){var _0x3cf410=_0xbdea83[_0xe049('0x4e')][_0xe049('0x62')];return db['Team']['findAll']({'where':{'id':_0x3cf410},'attributes':['id'],'include':[{'model':db[_0xe049('0x59')],'as':_0xe049('0x63'),'attributes':['id','name','online',_0xe049('0x64'),'interface'],'raw':!![]}]})['then'](function(_0x328318){if(_0x328318){var _0x13ba1d=_[_0xe049('0x65')](_0x328318,function(_0x45d7be){var _0x1893af=_0x45d7be[_0xe049('0x27')]({'plain':!![]});return _0x1893af['Agents'];});return db[_0xe049('0x2e')][_0xe049('0x4c')]({'where':{'id':_0xbdea83[_0xe049('0x49')]['id']}})['then'](function(_0x5ada32){return db[_0xe049('0x66')][_0xe049('0x67')](function(_0xd43cd6){return _0x5ada32['addTeams'](_0x3cf410,{'transaction':_0xd43cd6})[_0xe049('0x26')](function(){return BPromise[_0xe049('0x68')](_0x13ba1d,function(_0x1e733b){return db[_0xe049('0x57')][_0xe049('0x69')]({'where':{'UserId':_0x1e733b['id'],'MailQueueId':_0xbdea83[_0xe049('0x49')]['id']},'transaction':_0xd43cd6});});})[_0xe049('0x26')](function(){_0x13ba1d[_0xe049('0x6a')](function(_0x54a5a5){socket[_0xe049('0x6b')](_0xe049('0x6c'),{'UserId':_0x54a5a5['id'],'MailQueueId':_0x5ada32['id']});});});});});}})[_0xe049('0x26')](respondWithStatusCode(_0x116acd,null))[_0xe049('0x47')](handleError(_0x116acd,null));};exports[_0xe049('0x6d')]=function(_0x8357fa,_0x1ef82b,_0x1b5655){return db[_0xe049('0x6e')][_0xe049('0x45')]({'where':{'id':_0x8357fa['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xe049('0x26')](handleEntityNotFound(_0x1ef82b,null))['then'](function(_0x5089f3){var _0x3c56c2=_['map'](_0x5089f3,'id');var _0x55c600=[];var _0x2c424d=[];var _0x43f134=squel['select']();_0x43f134[_0xe049('0x6f')](_0xe049('0x70'))[_0xe049('0x71')]('team_has_mail_queues','tq')[_0xe049('0x72')](_0xe049('0x73'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xe049('0x3d')](_0xe049('0x74'),_0x8357fa[_0xe049('0x49')]['id']);for(var _0x3acb63=0x0;_0x3acb63<_0x5089f3[_0xe049('0x37')];_0x3acb63+=0x1){let _0x46a547=_0x5089f3[_0x3acb63];for(var _0x24c02e=0x0;_0x24c02e<_0x46a547[_0xe049('0x63')][_0xe049('0x37')];_0x24c02e+=0x1){let _0x3d364b=_0x46a547[_0xe049('0x63')][_0x24c02e];var _0x3d3150=_0x43f134[_0xe049('0x75')]();_0x3d3150[_0xe049('0x3d')]('ut.UserId\x20=\x20?',_0x3d364b['id']);_0x2c424d['push'](db['sequelize'][_0xe049('0x33')](_0x3d3150['toString'](),{'type':db[_0xe049('0x66')]['QueryTypes'][_0xe049('0x76')]})[_0xe049('0x26')](function(_0x49e328){if(_0x49e328[_0xe049('0x37')]===0x1){return _0x3d364b['id'];}else{var _0x4567f6=_['every'](_[_0xe049('0x2d')](_0x49e328,'TeamId'),function(_0x240f7b){return _[_0xe049('0x77')](_0x3c56c2,_0x240f7b);});if(_0x4567f6){return _0x3d364b['id'];}}}));}}return BPromise[_0xe049('0x78')](_0x2c424d)[_0xe049('0x26')](function(_0x5718fa){_0x55c600=_(_0x55c600)[_0xe049('0x79')](_0x5718fa)['compact']()['value']();return db['MailQueue'][_0xe049('0x4c')]({'where':{'id':_0x8357fa[_0xe049('0x49')]['id']}})[_0xe049('0x26')](function(_0x15f12a){return db[_0xe049('0x66')][_0xe049('0x67')](function(_0x19218f){return _0x15f12a['removeTeams'](_0x8357fa[_0xe049('0x33')]['ids'],{'transaction':_0x19218f})[_0xe049('0x26')](function(){if(!_['isEmpty'](_0x55c600)){return _0x15f12a[_0xe049('0x7a')](_0x55c600,{'transaction':_0x19218f});}})[_0xe049('0x26')](function(){_0x55c600['forEach'](function(_0x370634){socket[_0xe049('0x6b')](_0xe049('0x7b'),{'UserId':_0x370634,'MailQueueId':_0x15f12a['id']});});});});});});})[_0xe049('0x26')](respondWithStatusCode(_0x1ef82b,null))[_0xe049('0x47')](handleError(_0x1ef82b,null));};exports[_0xe049('0x7c')]=function(_0x537324,_0x58096e,_0x2b22d1){return db['MailQueue'][_0xe049('0x4c')]({'where':{'id':_0x537324[_0xe049('0x49')]['id']}})['then'](handleEntityNotFound(_0x58096e,null))[_0xe049('0x26')](function(_0xc75248){if(_0xc75248){return _0xc75248[_0xe049('0x7c')](_0x537324[_0xe049('0x4e')][_0xe049('0x62')],_['omit'](_0x537324[_0xe049('0x4e')],[_0xe049('0x62'),'id'])||{})[_0xe049('0x7d')](function(_0x371709){for(var _0x30152c=0x0;_0x30152c<_0x537324[_0xe049('0x4e')][_0xe049('0x62')][_0xe049('0x37')];_0x30152c+=0x1){socket[_0xe049('0x6b')](_0xe049('0x6c'),{'UserId':Number(_0x537324[_0xe049('0x4e')][_0xe049('0x62')][_0x30152c]),'MailQueueId':Number(_0x537324[_0xe049('0x49')]['id'])});}return _0x371709;});}})[_0xe049('0x26')](respondWithResult(_0x58096e,null))['catch'](handleError(_0x58096e,null));};exports['removeAgents']=function(_0x185144,_0x3dc731,_0x1e5614){return db['MailQueue']['find']({'where':{'id':_0x185144[_0xe049('0x49')]['id']}})[_0xe049('0x26')](handleEntityNotFound(_0x3dc731,null))[_0xe049('0x26')](function(_0xd547cf){if(_0xd547cf){return _0xd547cf[_0xe049('0x7a')](_0x185144[_0xe049('0x33')][_0xe049('0x62')])[_0xe049('0x26')](function(){if(_[_0xe049('0x7e')](_0x185144['query'][_0xe049('0x62')])){for(var _0x3bd8e1=0x0;_0x3bd8e1<_0x185144[_0xe049('0x33')]['ids']['length'];_0x3bd8e1+=0x1){socket['emit']('userMailQueue:remove',{'UserId':Number(_0x185144[_0xe049('0x33')][_0xe049('0x62')][_0x3bd8e1]),'MailQueueId':Number(_0x185144['params']['id'])});}}else{socket[_0xe049('0x6b')](_0xe049('0x7b'),{'UserId':Number(_0x185144[_0xe049('0x33')][_0xe049('0x62')]),'MailQueueId':Number(_0x185144[_0xe049('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x3dc731,null))[_0xe049('0x47')](handleError(_0x3dc731,null));};exports['getAgents']=function(_0x13cc4f,_0x4a4c6d,_0x404dd5){var _0x93d994={};var _0x446327={};var _0x3891b8;var _0x2eb472;return db[_0xe049('0x2e')][_0xe049('0x56')]({'where':{'id':_0x13cc4f[_0xe049('0x49')]['id']}})[_0xe049('0x26')](handleEntityNotFound(_0x4a4c6d,null))[_0xe049('0x26')](function(_0x42a661){if(_0x42a661){_0x3891b8=_0x42a661;_0x446327[_0xe049('0x32')]=_[_0xe049('0x4a')](db[_0xe049('0x59')][_0xe049('0x2f')]);_0x446327[_0xe049('0x33')]=_[_0xe049('0x4a')](_0x13cc4f['query']);_0x446327[_0xe049('0x3e')]=_[_0xe049('0x34')](_0x446327[_0xe049('0x32')],_0x446327[_0xe049('0x33')]);_0x93d994[_0xe049('0x35')]=_[_0xe049('0x34')](_0x446327[_0xe049('0x32')],qs[_0xe049('0x36')](_0x13cc4f[_0xe049('0x33')][_0xe049('0x36')]));_0x93d994[_0xe049('0x35')]=_0x93d994['attributes']['length']?_0x93d994[_0xe049('0x35')]:_0x446327[_0xe049('0x32')];_0x93d994['order']=qs[_0xe049('0x3c')](_0x13cc4f['query'][_0xe049('0x3c')]);_0x93d994['where']=qs[_0xe049('0x3e')](_['pick'](_0x13cc4f[_0xe049('0x33')],_0x446327['filters']));if(_0x13cc4f['query'][_0xe049('0x40')]){_0x93d994['where']=_[_0xe049('0x42')](_0x93d994[_0xe049('0x3d')],{'$or':_[_0xe049('0x2d')](_0x93d994[_0xe049('0x35')],function(_0x492e40){var _0x21fff6={};_0x21fff6[_0x492e40]={'$like':'%'+_0x13cc4f[_0xe049('0x33')][_0xe049('0x40')]+'%'};return _0x21fff6;})});}_0x93d994=_[_0xe049('0x42')]({},_0x93d994,_0x13cc4f[_0xe049('0x4b')]);return _0x3891b8[_0xe049('0x7f')](_0x93d994);}})['then'](function(_0x4344fb){if(_0x4344fb){_0x2eb472=_0x4344fb[_0xe049('0x37')];if(!_0x13cc4f[_0xe049('0x33')][_0xe049('0x38')]('nolimit')){_0x93d994[_0xe049('0x3a')]=qs[_0xe049('0x3a')](_0x13cc4f['query'][_0xe049('0x3a')]);_0x93d994[_0xe049('0x20')]=qs['offset'](_0x13cc4f[_0xe049('0x33')][_0xe049('0x20')]);}return _0x3891b8['getAgents'](_0x93d994);}})[_0xe049('0x26')](function(_0x1597e1){if(_0x1597e1){return _0x1597e1?{'count':_0x2eb472,'rows':_0x1597e1}:null;}})['then'](respondWithResult(_0x4a4c6d,null))[_0xe049('0x47')](handleError(_0x4a4c6d,null));};
\ No newline at end of file
+var _0xeb1e=['TeamId','includes','union','compact','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','get','MailQueues','UserProfileResource','error','stack','name','index','map','MailQueue','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','body','describe','findOne','order','MailQueueId','merge','UserMailQueue','findAndCountAll','UserId','agent','mailPause','updatedAt','format','SIP','getTeams','Team','addTeams','ids','User','Agents','online','voicePause','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes'];(function(_0x28fbf5,_0x2e1381){var _0x54a6bc=function(_0x1607fb){while(--_0x1607fb){_0x28fbf5['push'](_0x28fbf5['shift']());}};_0x54a6bc(++_0x2e1381);}(_0xeb1e,0x115));var _0xeeb1=function(_0x339e61,_0x4aa53c){_0x339e61=_0x339e61-0x0;var _0x621185=_0xeb1e[_0x339e61];return _0x621185;};'use strict';var emlformat=require(_0xeeb1('0x0'));var rimraf=require(_0xeeb1('0x1'));var zipdir=require(_0xeeb1('0x2'));var jsonpatch=require(_0xeeb1('0x3'));var rp=require('request-promise');var moment=require(_0xeeb1('0x4'));var BPromise=require(_0xeeb1('0x5'));var Mustache=require(_0xeeb1('0x6'));var util=require(_0xeeb1('0x7'));var path=require(_0xeeb1('0x8'));var sox=require(_0xeeb1('0x9'));var csv=require(_0xeeb1('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeeb1('0xb'));var _=require('lodash');var squel=require(_0xeeb1('0xc'));var crypto=require(_0xeeb1('0xd'));var jsforce=require(_0xeeb1('0xe'));var deskjs=require(_0xeeb1('0xf'));var toCsv=require(_0xeeb1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xeeb1('0x10'));var qs=require(_0xeeb1('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xeeb1('0x12'))('api');var utils=require(_0xeeb1('0x13'));var config=require(_0xeeb1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xeeb1('0x15'))['db'];config[_0xeeb1('0x16')]=_['defaults'](config[_0xeeb1('0x16')],{'host':_0xeeb1('0x17'),'port':0x18eb});var socket=require(_0xeeb1('0x18'))(new Redis(config[_0xeeb1('0x16')]));require('./mailQueue.socket')[_0xeeb1('0x19')](socket);function respondWithStatusCode(_0x54a2c6,_0x2bb339){_0x2bb339=_0x2bb339||0xcc;return function(_0xb46089){if(_0xb46089){return _0x54a2c6[_0xeeb1('0x1a')](_0x2bb339);}return _0x54a2c6[_0xeeb1('0x1b')](_0x2bb339)[_0xeeb1('0x1c')]();};}function respondWithResult(_0x468d21,_0x1f4af1){_0x1f4af1=_0x1f4af1||0xc8;return function(_0x2cb81a){if(_0x2cb81a){return _0x468d21['status'](_0x1f4af1)[_0xeeb1('0x1d')](_0x2cb81a);}};}function respondWithFilteredResult(_0x43a87a,_0x56dc35){return function(_0x53f986){if(_0x53f986){var _0x4decb1=typeof _0x56dc35[_0xeeb1('0x1e')]===_0xeeb1('0x1f')&&typeof _0x56dc35[_0xeeb1('0x20')]==='undefined';var _0x3b7372=_0x53f986[_0xeeb1('0x21')];var _0x8469c0=_0x4decb1?0x0:_0x56dc35[_0xeeb1('0x1e')];var _0x363fcc=_0x4decb1?_0x53f986[_0xeeb1('0x21')]:_0x56dc35[_0xeeb1('0x1e')]+_0x56dc35[_0xeeb1('0x20')];var _0x315de0;if(_0x363fcc>=_0x3b7372){_0x363fcc=_0x3b7372;_0x315de0=0xc8;}else{_0x315de0=0xce;}_0x43a87a[_0xeeb1('0x1b')](_0x315de0);return _0x43a87a[_0xeeb1('0x22')]('Content-Range',_0x8469c0+'-'+_0x363fcc+'/'+_0x3b7372)[_0xeeb1('0x1d')](_0x53f986);}return null;};}function patchUpdates(_0x28f3e4){return function(_0x10612b){try{jsonpatch[_0xeeb1('0x23')](_0x10612b,_0x28f3e4,!![]);}catch(_0xaa1f18){return BPromise['reject'](_0xaa1f18);}return _0x10612b[_0xeeb1('0x24')]();};}function saveUpdates(_0x5d0677,_0x58e2d9){return function(_0x5c61d3){if(_0x5c61d3){return _0x5c61d3[_0xeeb1('0x25')](_0x5d0677)[_0xeeb1('0x26')](function(_0x1c5a21){return _0x1c5a21;});}return null;};}function removeEntity(_0x455a33,_0x16de62){return function(_0x247404){if(_0x247404){return _0x247404[_0xeeb1('0x27')]()[_0xeeb1('0x26')](function(){var _0x2e2dab=_0x247404[_0xeeb1('0x28')]({'plain':!![]});var _0xdcde09=_0xeeb1('0x29');return db[_0xeeb1('0x2a')][_0xeeb1('0x27')]({'where':{'type':_0xdcde09,'resourceId':_0x2e2dab['id']}})['then'](function(){return _0x247404;});})[_0xeeb1('0x26')](function(){_0x455a33[_0xeeb1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b285a,_0x5c8e61){return function(_0x394c2d){if(!_0x394c2d){_0x1b285a[_0xeeb1('0x1a')](0x194);}return _0x394c2d;};}function handleError(_0x50f6ff,_0x471fc7){_0x471fc7=_0x471fc7||0x1f4;return function(_0x194894){logger[_0xeeb1('0x2b')](_0x194894[_0xeeb1('0x2c')]);if(_0x194894[_0xeeb1('0x2d')]){delete _0x194894[_0xeeb1('0x2d')];}_0x50f6ff[_0xeeb1('0x1b')](_0x471fc7)['send'](_0x194894);};}exports[_0xeeb1('0x2e')]=function(_0x204456,_0x4c5d4f){var _0x39868f={},_0x2b7a6c={},_0x136059={'count':0x0,'rows':[]};var _0x2f5189=_[_0xeeb1('0x2f')](db[_0xeeb1('0x30')][_0xeeb1('0x31')],function(_0x38d325){return{'name':_0x38d325[_0xeeb1('0x32')],'type':_0x38d325[_0xeeb1('0x33')]['key']};});_0x2b7a6c[_0xeeb1('0x34')]=_[_0xeeb1('0x2f')](_0x2f5189,'name');_0x2b7a6c[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x204456[_0xeeb1('0x35')]);_0x2b7a6c['filters']=_[_0xeeb1('0x37')](_0x2b7a6c['model'],_0x2b7a6c[_0xeeb1('0x35')]);_0x39868f[_0xeeb1('0x38')]=_[_0xeeb1('0x37')](_0x2b7a6c[_0xeeb1('0x34')],qs[_0xeeb1('0x39')](_0x204456[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x39868f[_0xeeb1('0x38')]=_0x39868f[_0xeeb1('0x38')][_0xeeb1('0x3a')]?_0x39868f[_0xeeb1('0x38')]:_0x2b7a6c['model'];if(!_0x204456[_0xeeb1('0x35')][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x39868f['limit']=qs[_0xeeb1('0x20')](_0x204456['query'][_0xeeb1('0x20')]);_0x39868f[_0xeeb1('0x1e')]=qs[_0xeeb1('0x1e')](_0x204456[_0xeeb1('0x35')]['offset']);}_0x39868f['order']=qs['sort'](_0x204456['query'][_0xeeb1('0x3d')]);_0x39868f[_0xeeb1('0x3e')]=qs[_0xeeb1('0x3f')](_[_0xeeb1('0x40')](_0x204456[_0xeeb1('0x35')],_0x2b7a6c[_0xeeb1('0x3f')]),_0x2f5189);if(_0x204456['query'][_0xeeb1('0x41')]){_0x39868f[_0xeeb1('0x3e')]=_['merge'](_0x39868f[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x2f5189,function(_0x3ee670){if(_0x3ee670[_0xeeb1('0x33')]!==_0xeeb1('0x42')){var _0x5d7031={};_0x5d7031[_0x3ee670[_0xeeb1('0x2d')]]={'$like':'%'+_0x204456[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x5d7031;}})});}_0x39868f=_['merge']({},_0x39868f,_0x204456[_0xeeb1('0x43')]);var _0x360fc4={'where':_0x39868f[_0xeeb1('0x3e')]};return db[_0xeeb1('0x30')][_0xeeb1('0x21')](_0x360fc4)[_0xeeb1('0x26')](function(_0x1044c4){_0x136059[_0xeeb1('0x21')]=_0x1044c4;if(_0x204456[_0xeeb1('0x35')][_0xeeb1('0x44')]){_0x39868f[_0xeeb1('0x45')]=[{'all':!![]}];}return db['MailQueue'][_0xeeb1('0x46')](_0x39868f);})[_0xeeb1('0x26')](function(_0x289a05){_0x136059[_0xeeb1('0x47')]=_0x289a05;return _0x136059;})['then'](respondWithFilteredResult(_0x4c5d4f,_0x39868f))[_0xeeb1('0x48')](handleError(_0x4c5d4f,null));};exports['show']=function(_0x2df0d2,_0x239fc3){var _0x4c6598={'raw':!![],'where':{'id':_0x2df0d2[_0xeeb1('0x49')]['id']}},_0x1f8e71={};_0x1f8e71[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db[_0xeeb1('0x30')][_0xeeb1('0x31')]);_0x1f8e71['query']=_[_0xeeb1('0x36')](_0x2df0d2[_0xeeb1('0x35')]);_0x1f8e71[_0xeeb1('0x3f')]=_['intersection'](_0x1f8e71['model'],_0x1f8e71['query']);_0x4c6598['attributes']=_[_0xeeb1('0x37')](_0x1f8e71['model'],qs[_0xeeb1('0x39')](_0x2df0d2[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x4c6598[_0xeeb1('0x38')]=_0x4c6598[_0xeeb1('0x38')]['length']?_0x4c6598['attributes']:_0x1f8e71[_0xeeb1('0x34')];if(_0x2df0d2[_0xeeb1('0x35')][_0xeeb1('0x44')]){_0x4c6598['include']=[{'all':!![]}];}_0x4c6598=_['merge']({},_0x4c6598,_0x2df0d2[_0xeeb1('0x43')]);return db[_0xeeb1('0x30')][_0xeeb1('0x4a')](_0x4c6598)[_0xeeb1('0x26')](handleEntityNotFound(_0x239fc3,null))['then'](respondWithResult(_0x239fc3,null))[_0xeeb1('0x48')](handleError(_0x239fc3,null));};exports['create']=function(_0x46e8e1,_0x171090){return db[_0xeeb1('0x30')][_0xeeb1('0x4b')](_0x46e8e1['body'],{})['then'](function(_0x47f1da){var _0x1e596a=_0x46e8e1[_0xeeb1('0x4c')][_0xeeb1('0x28')]({'plain':!![]});if(!_0x1e596a)throw new Error(_0xeeb1('0x4d'));if(_0x1e596a['role']===_0xeeb1('0x4c')){var _0x595f93=_0x47f1da['get']({'plain':!![]});var _0x2bc31e=_0xeeb1('0x29');return db[_0xeeb1('0x4e')][_0xeeb1('0x4a')]({'where':{'name':_0x2bc31e,'userProfileId':_0x1e596a['userProfileId']},'raw':!![]})[_0xeeb1('0x26')](function(_0x2c0c1c){if(_0x2c0c1c&&_0x2c0c1c[_0xeeb1('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x595f93[_0xeeb1('0x2d')],'resourceId':_0x595f93['id'],'type':_0x2c0c1c[_0xeeb1('0x2d')],'sectionId':_0x2c0c1c['id']},{})[_0xeeb1('0x26')](function(){return _0x47f1da;});}else{return _0x47f1da;}})[_0xeeb1('0x48')](function(_0xebcf0a){logger[_0xeeb1('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xebcf0a);throw _0xebcf0a;});}return _0x47f1da;})[_0xeeb1('0x26')](respondWithResult(_0x171090,0xc9))[_0xeeb1('0x48')](handleError(_0x171090,null));};exports[_0xeeb1('0x25')]=function(_0x591ad3,_0x270c23){if(_0x591ad3[_0xeeb1('0x50')]['id']){delete _0x591ad3[_0xeeb1('0x50')]['id'];}return db['MailQueue']['find']({'where':{'id':_0x591ad3[_0xeeb1('0x49')]['id']}})['then'](handleEntityNotFound(_0x270c23,null))[_0xeeb1('0x26')](saveUpdates(_0x591ad3['body'],null))[_0xeeb1('0x26')](respondWithResult(_0x270c23,null))[_0xeeb1('0x48')](handleError(_0x270c23,null));};exports['destroy']=function(_0xe4bccf,_0x375857){return db[_0xeeb1('0x30')]['find']({'where':{'id':_0xe4bccf[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x375857,null))[_0xeeb1('0x26')](removeEntity(_0x375857,null))[_0xeeb1('0x48')](handleError(_0x375857,null));};exports[_0xeeb1('0x51')]=function(_0x5a670a,_0x5bcb9c){return db[_0xeeb1('0x30')][_0xeeb1('0x51')]()[_0xeeb1('0x26')](respondWithResult(_0x5bcb9c,null))['catch'](handleError(_0x5bcb9c,null));};exports['getMembers']=function(_0x99dc64,_0x666a3c,_0x29627f){var _0x5ce6d1={'raw':!![],'where':{}},_0x84092b={},_0x2f7f01;return db[_0xeeb1('0x30')][_0xeeb1('0x52')]({'where':{'id':_0x99dc64[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x666a3c,null))[_0xeeb1('0x26')](function(_0x59d85f){if(_0x59d85f){_0x2f7f01=_0x59d85f[_0xeeb1('0x28')]({'plain':!![]});_0x84092b[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db['UserMailQueue'][_0xeeb1('0x31')]);_0x84092b[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x99dc64[_0xeeb1('0x35')]);_0x84092b[_0xeeb1('0x3f')]=_[_0xeeb1('0x37')](_0x84092b[_0xeeb1('0x34')],_0x84092b[_0xeeb1('0x35')]);_0x5ce6d1[_0xeeb1('0x38')]=_[_0xeeb1('0x37')](_0x84092b[_0xeeb1('0x34')],qs[_0xeeb1('0x39')](_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x5ce6d1['attributes']=_0x5ce6d1[_0xeeb1('0x38')][_0xeeb1('0x3a')]?_0x5ce6d1[_0xeeb1('0x38')]:_0x84092b[_0xeeb1('0x34')];if(!_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x5ce6d1[_0xeeb1('0x20')]=qs[_0xeeb1('0x20')](_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x20')]);_0x5ce6d1[_0xeeb1('0x1e')]=qs[_0xeeb1('0x1e')](_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x1e')]);}_0x5ce6d1[_0xeeb1('0x53')]=qs[_0xeeb1('0x3d')](_0x99dc64['query'][_0xeeb1('0x3d')]);_0x5ce6d1['where']=qs['filters'](_[_0xeeb1('0x40')](_0x99dc64[_0xeeb1('0x35')],_0x84092b['filters']));_0x5ce6d1['where'][_0xeeb1('0x54')]=_0x59d85f['id'];if(_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x41')]){_0x5ce6d1[_0xeeb1('0x3e')]=_[_0xeeb1('0x55')](_0x5ce6d1[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x5ce6d1[_0xeeb1('0x38')],function(_0x3272cb){var _0x4d841e={};_0x4d841e[_0x3272cb]={'$like':'%'+_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x4d841e;})});}_0x5ce6d1=_[_0xeeb1('0x55')]({},_0x5ce6d1,_0x99dc64[_0xeeb1('0x43')]);return db[_0xeeb1('0x56')][_0xeeb1('0x46')](_0x5ce6d1);}})['then'](function(_0x351f4e){if(_0x351f4e){return db['User'][_0xeeb1('0x57')]({'where':{'id':_[_0xeeb1('0x2f')](_0x351f4e,_0xeeb1('0x58')),'role':_0xeeb1('0x59')},'attributes':['id','name',_0xeeb1('0x5a'),_0xeeb1('0x5b'),'createdAt']});}})[_0xeeb1('0x26')](function(_0xd9478e){if(_0xd9478e){return{'count':_0xd9478e[_0xeeb1('0x21')],'rows':_[_0xeeb1('0x2f')](_0xd9478e[_0xeeb1('0x47')],function(_0x5d6304){return{'membername':_0x5d6304['name'],'UserId':_0x5d6304['id'],'queue_name':_0x2f7f01[_0xeeb1('0x2d')],'MailQueueId':_0x2f7f01['id'],'interface':util[_0xeeb1('0x5c')]('%s/%s',_0xeeb1('0x5d'),_0x5d6304['name']),'penalty':0x0,'paused':_0x5d6304['mailPause'],'createdAt':_0x5d6304['createdAt'],'updatedAt':_0x5d6304[_0xeeb1('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xeeb1('0x26')](respondWithFilteredResult(_0x666a3c,_0x5ce6d1))['catch'](handleError(_0x666a3c,null));};exports[_0xeeb1('0x5e')]=function(_0x23bf08,_0x20b91f,_0x34cf69){var _0x8da7d8={};var _0x33be14={};var _0x374c4a;var _0x2cb598;return db[_0xeeb1('0x30')][_0xeeb1('0x52')]({'where':{'id':_0x23bf08[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x20b91f,null))[_0xeeb1('0x26')](function(_0x449f07){if(_0x449f07){_0x374c4a=_0x449f07;_0x33be14[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db[_0xeeb1('0x5f')][_0xeeb1('0x31')]);_0x33be14[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x23bf08[_0xeeb1('0x35')]);_0x33be14[_0xeeb1('0x3f')]=_[_0xeeb1('0x37')](_0x33be14[_0xeeb1('0x34')],_0x33be14[_0xeeb1('0x35')]);_0x8da7d8['attributes']=_[_0xeeb1('0x37')](_0x33be14[_0xeeb1('0x34')],qs[_0xeeb1('0x39')](_0x23bf08[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x8da7d8['attributes']=_0x8da7d8[_0xeeb1('0x38')]['length']?_0x8da7d8['attributes']:_0x33be14[_0xeeb1('0x34')];_0x8da7d8['order']=qs[_0xeeb1('0x3d')](_0x23bf08[_0xeeb1('0x35')]['sort']);_0x8da7d8['where']=qs[_0xeeb1('0x3f')](_['pick'](_0x23bf08[_0xeeb1('0x35')],_0x33be14[_0xeeb1('0x3f')]));if(_0x23bf08[_0xeeb1('0x35')]['filter']){_0x8da7d8[_0xeeb1('0x3e')]=_[_0xeeb1('0x55')](_0x8da7d8[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x8da7d8[_0xeeb1('0x38')],function(_0xca8335){var _0x1568c3={};_0x1568c3[_0xca8335]={'$like':'%'+_0x23bf08[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x1568c3;})});}_0x8da7d8=_[_0xeeb1('0x55')]({},_0x8da7d8,_0x23bf08[_0xeeb1('0x43')]);return _0x374c4a[_0xeeb1('0x5e')](_0x8da7d8);}})[_0xeeb1('0x26')](function(_0x501409){if(_0x501409){_0x2cb598=_0x501409[_0xeeb1('0x3a')];if(!_0x23bf08['query'][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x8da7d8[_0xeeb1('0x20')]=qs[_0xeeb1('0x20')](_0x23bf08['query']['limit']);_0x8da7d8['offset']=qs['offset'](_0x23bf08[_0xeeb1('0x35')][_0xeeb1('0x1e')]);}return _0x374c4a[_0xeeb1('0x5e')](_0x8da7d8);}})[_0xeeb1('0x26')](function(_0x1469a9){if(_0x1469a9){return _0x1469a9?{'count':_0x2cb598,'rows':_0x1469a9}:null;}})[_0xeeb1('0x26')](respondWithResult(_0x20b91f,null))[_0xeeb1('0x48')](handleError(_0x20b91f,null));};exports[_0xeeb1('0x60')]=function(_0x2e194e,_0xad0b87,_0x5ab225){var _0x181c90=_0x2e194e['body'][_0xeeb1('0x61')];return db['Team']['findAll']({'where':{'id':_0x181c90},'attributes':['id'],'include':[{'model':db[_0xeeb1('0x62')],'as':_0xeeb1('0x63'),'attributes':['id',_0xeeb1('0x2d'),_0xeeb1('0x64'),_0xeeb1('0x65'),'interface'],'raw':!![]}]})[_0xeeb1('0x26')](function(_0x36c601){if(_0x36c601){var _0x4593ca=_['flatMap'](_0x36c601,function(_0x1d95e3){var _0x1a0b3f=_0x1d95e3[_0xeeb1('0x28')]({'plain':!![]});return _0x1a0b3f['Agents'];});return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0x2e194e[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](function(_0x5749b7){return db['sequelize']['transaction'](function(_0x19c3f5){return _0x5749b7['addTeams'](_0x181c90,{'transaction':_0x19c3f5})[_0xeeb1('0x26')](function(){return BPromise['each'](_0x4593ca,function(_0x1f48ab){return db[_0xeeb1('0x56')][_0xeeb1('0x66')]({'where':{'UserId':_0x1f48ab['id'],'MailQueueId':_0x2e194e[_0xeeb1('0x49')]['id']},'transaction':_0x19c3f5});});})[_0xeeb1('0x26')](function(){_0x4593ca[_0xeeb1('0x67')](function(_0x3d5ae1){socket[_0xeeb1('0x68')](_0xeeb1('0x69'),{'UserId':_0x3d5ae1['id'],'MailQueueId':_0x5749b7['id']});});});});});}})[_0xeeb1('0x26')](respondWithStatusCode(_0xad0b87,null))[_0xeeb1('0x48')](handleError(_0xad0b87,null));};exports[_0xeeb1('0x6a')]=function(_0x502819,_0x3e6da6,_0x4b4895){return db[_0xeeb1('0x5f')][_0xeeb1('0x46')]({'where':{'id':_0x502819[_0xeeb1('0x35')][_0xeeb1('0x61')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xeeb1('0x26')](handleEntityNotFound(_0x3e6da6,null))[_0xeeb1('0x26')](function(_0xf6ebe8){var _0x579e1c=_[_0xeeb1('0x2f')](_0xf6ebe8,'id');var _0x584ba8=[];var _0x54d83d=[];var _0x29e97d=squel['select']();_0x29e97d[_0xeeb1('0x6b')](_0xeeb1('0x6c'))[_0xeeb1('0x6d')](_0xeeb1('0x6e'),'tq')[_0xeeb1('0x6f')](_0xeeb1('0x70'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xeeb1('0x71'),_0x502819[_0xeeb1('0x49')]['id']);for(var _0x537e93=0x0;_0x537e93<_0xf6ebe8[_0xeeb1('0x3a')];_0x537e93+=0x1){let _0x2ba88f=_0xf6ebe8[_0x537e93];for(var _0x24587b=0x0;_0x24587b<_0x2ba88f[_0xeeb1('0x63')][_0xeeb1('0x3a')];_0x24587b+=0x1){let _0x9d42c3=_0x2ba88f[_0xeeb1('0x63')][_0x24587b];var _0x540a5b=_0x29e97d[_0xeeb1('0x72')]();_0x540a5b[_0xeeb1('0x3e')](_0xeeb1('0x73'),_0x9d42c3['id']);_0x54d83d['push'](db[_0xeeb1('0x74')][_0xeeb1('0x35')](_0x540a5b[_0xeeb1('0x75')](),{'type':db[_0xeeb1('0x74')][_0xeeb1('0x76')]['SELECT']})[_0xeeb1('0x26')](function(_0x22e0a9){if(_0x22e0a9['length']===0x1){return _0x9d42c3['id'];}else{var _0x42ffe1=_['every'](_[_0xeeb1('0x2f')](_0x22e0a9,_0xeeb1('0x77')),function(_0x2900d2){return _[_0xeeb1('0x78')](_0x579e1c,_0x2900d2);});if(_0x42ffe1){return _0x9d42c3['id'];}}}));}}return BPromise['all'](_0x54d83d)[_0xeeb1('0x26')](function(_0x595f66){_0x584ba8=_(_0x584ba8)[_0xeeb1('0x79')](_0x595f66)[_0xeeb1('0x7a')]()[_0xeeb1('0x7b')]();return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0x502819['params']['id']}})[_0xeeb1('0x26')](function(_0xfd721c){return db[_0xeeb1('0x74')]['transaction'](function(_0x12b250){return _0xfd721c[_0xeeb1('0x6a')](_0x502819[_0xeeb1('0x35')]['ids'],{'transaction':_0x12b250})[_0xeeb1('0x26')](function(){if(!_[_0xeeb1('0x7c')](_0x584ba8)){return _0xfd721c[_0xeeb1('0x7d')](_0x584ba8,{'transaction':_0x12b250});}})[_0xeeb1('0x26')](function(){_0x584ba8['forEach'](function(_0x122c4f){socket[_0xeeb1('0x68')](_0xeeb1('0x7e'),{'UserId':_0x122c4f,'MailQueueId':_0xfd721c['id']});});});});});});})[_0xeeb1('0x26')](respondWithStatusCode(_0x3e6da6,null))[_0xeeb1('0x48')](handleError(_0x3e6da6,null));};exports[_0xeeb1('0x7f')]=function(_0xf8a787,_0x309abb,_0x582ec5){return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0xf8a787[_0xeeb1('0x49')]['id']}})['then'](handleEntityNotFound(_0x309abb,null))[_0xeeb1('0x26')](function(_0x4990a0){if(_0x4990a0){return _0x4990a0['addAgents'](_0xf8a787[_0xeeb1('0x50')][_0xeeb1('0x61')],_[_0xeeb1('0x80')](_0xf8a787[_0xeeb1('0x50')],['ids','id'])||{})[_0xeeb1('0x81')](function(_0x3c17c3){for(var _0x3d79a9=0x0;_0x3d79a9<_0xf8a787[_0xeeb1('0x50')][_0xeeb1('0x61')][_0xeeb1('0x3a')];_0x3d79a9+=0x1){socket[_0xeeb1('0x68')](_0xeeb1('0x69'),{'UserId':Number(_0xf8a787[_0xeeb1('0x50')][_0xeeb1('0x61')][_0x3d79a9]),'MailQueueId':Number(_0xf8a787[_0xeeb1('0x49')]['id'])});}return _0x3c17c3;});}})['then'](respondWithResult(_0x309abb,null))[_0xeeb1('0x48')](handleError(_0x309abb,null));};exports[_0xeeb1('0x7d')]=function(_0x511880,_0x42897c,_0x408560){return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0x511880['params']['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x42897c,null))[_0xeeb1('0x26')](function(_0x3bd995){if(_0x3bd995){return _0x3bd995[_0xeeb1('0x7d')](_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')])[_0xeeb1('0x26')](function(){if(_[_0xeeb1('0x82')](_0x511880[_0xeeb1('0x35')]['ids'])){for(var _0x495d9c=0x0;_0x495d9c<_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')][_0xeeb1('0x3a')];_0x495d9c+=0x1){socket[_0xeeb1('0x68')](_0xeeb1('0x7e'),{'UserId':Number(_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')][_0x495d9c]),'MailQueueId':Number(_0x511880[_0xeeb1('0x49')]['id'])});}}else{socket[_0xeeb1('0x68')](_0xeeb1('0x7e'),{'UserId':Number(_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')]),'MailQueueId':Number(_0x511880[_0xeeb1('0x49')]['id'])});}});}})[_0xeeb1('0x26')](respondWithStatusCode(_0x42897c,null))['catch'](handleError(_0x42897c,null));};exports['getAgents']=function(_0x3f15d3,_0x2b48a9,_0x76a9f4){var _0x7b5d5f={};var _0x2a95bc={};var _0xcdebb5;var _0x5a0ac7;return db[_0xeeb1('0x30')][_0xeeb1('0x52')]({'where':{'id':_0x3f15d3[_0xeeb1('0x49')]['id']}})['then'](handleEntityNotFound(_0x2b48a9,null))[_0xeeb1('0x26')](function(_0x58253b){if(_0x58253b){_0xcdebb5=_0x58253b;_0x2a95bc[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db[_0xeeb1('0x62')]['rawAttributes']);_0x2a95bc[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x3f15d3[_0xeeb1('0x35')]);_0x2a95bc[_0xeeb1('0x3f')]=_[_0xeeb1('0x37')](_0x2a95bc[_0xeeb1('0x34')],_0x2a95bc[_0xeeb1('0x35')]);_0x7b5d5f[_0xeeb1('0x38')]=_[_0xeeb1('0x37')](_0x2a95bc['model'],qs['fields'](_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x7b5d5f[_0xeeb1('0x38')]=_0x7b5d5f[_0xeeb1('0x38')][_0xeeb1('0x3a')]?_0x7b5d5f[_0xeeb1('0x38')]:_0x2a95bc[_0xeeb1('0x34')];_0x7b5d5f['order']=qs['sort'](_0x3f15d3[_0xeeb1('0x35')]['sort']);_0x7b5d5f[_0xeeb1('0x3e')]=qs[_0xeeb1('0x3f')](_[_0xeeb1('0x40')](_0x3f15d3[_0xeeb1('0x35')],_0x2a95bc[_0xeeb1('0x3f')]));if(_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x41')]){_0x7b5d5f[_0xeeb1('0x3e')]=_['merge'](_0x7b5d5f[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x7b5d5f['attributes'],function(_0x1f6c9e){var _0x45be91={};_0x45be91[_0x1f6c9e]={'$like':'%'+_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x45be91;})});}_0x7b5d5f=_['merge']({},_0x7b5d5f,_0x3f15d3['options']);return _0xcdebb5['getAgents'](_0x7b5d5f);}})[_0xeeb1('0x26')](function(_0x1e10c6){if(_0x1e10c6){_0x5a0ac7=_0x1e10c6[_0xeeb1('0x3a')];if(!_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x7b5d5f[_0xeeb1('0x20')]=qs[_0xeeb1('0x20')](_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x20')]);_0x7b5d5f['offset']=qs[_0xeeb1('0x1e')](_0x3f15d3[_0xeeb1('0x35')]['offset']);}return _0xcdebb5[_0xeeb1('0x83')](_0x7b5d5f);}})['then'](function(_0x4ade44){if(_0x4ade44){return _0x4ade44?{'count':_0x5a0ac7,'rows':_0x4ade44}:null;}})['then'](respondWithResult(_0x2b48a9,null))[_0xeeb1('0x48')](handleError(_0x2b48a9,null));};
\ No newline at end of file
index 3c8da08..893de3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2a2=['events','../../mysqldb','MailQueue','remove','emit','hook','exports'];(function(_0x2c6b8c,_0x367dca){var _0x2282bf=function(_0x111caf){while(--_0x111caf){_0x2c6b8c['push'](_0x2c6b8c['shift']());}};_0x2282bf(++_0x367dca);}(_0xe2a2,0xbd));var _0x2e2a=function(_0x5a5513,_0x523836){_0x5a5513=_0x5a5513-0x0;var _0x501d7d=_0xe2a2[_0x5a5513];return _0x501d7d;};'use strict';var EventEmitter=require(_0x2e2a('0x0'));var MailQueue=require(_0x2e2a('0x1'))['db'][_0x2e2a('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2e2a('0x3')};function emitEvent(_0xde6890){return function(_0x2a8104,_0x38944d,_0x3cabdf){MailQueueEvents[_0x2e2a('0x4')](_0xde6890+':'+_0x2a8104['id'],_0x2a8104);MailQueueEvents[_0x2e2a('0x4')](_0xde6890,_0x2a8104);_0x3cabdf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x2e2a('0x5')](e,emitEvent(event));}}module[_0x2e2a('0x6')]=MailQueueEvents;
\ No newline at end of file
+var _0x3f33=['remove','emit','hasOwnProperty','hook','exports','events','MailQueue','setMaxListeners','save','update'];(function(_0x3ffccc,_0x39620f){var _0x1583d2=function(_0xdbb320){while(--_0xdbb320){_0x3ffccc['push'](_0x3ffccc['shift']());}};_0x1583d2(++_0x39620f);}(_0x3f33,0x131));var _0x33f3=function(_0x36bab3,_0x19ce33){_0x36bab3=_0x36bab3-0x0;var _0x2d3989=_0x3f33[_0x36bab3];return _0x2d3989;};'use strict';var EventEmitter=require(_0x33f3('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x33f3('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x33f3('0x2')](0x0);var events={'afterCreate':_0x33f3('0x3'),'afterUpdate':_0x33f3('0x4'),'afterDestroy':_0x33f3('0x5')};function emitEvent(_0x1a0aa1){return function(_0x3ad77c,_0xe39c6e,_0x3e76cd){MailQueueEvents[_0x33f3('0x6')](_0x1a0aa1+':'+_0x3ad77c['id'],_0x3ad77c);MailQueueEvents[_0x33f3('0x6')](_0x1a0aa1,_0x3ad77c);_0x3e76cd(null);};}for(var e in events){if(events[_0x33f3('0x7')](e)){var event=events[e];MailQueue[_0x33f3('0x8')](e,emitEvent(event));}}module[_0x33f3('0x9')]=MailQueueEvents;
\ No newline at end of file
index e79a573..68a323f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd88=['rimraf','./mailQueue.attributes','exports','define','MailQueue','lodash','util','api','moment','bluebird','request-promise'];(function(_0x120e09,_0x522872){var _0x4c07e9=function(_0x2b9ddf){while(--_0x2b9ddf){_0x120e09['push'](_0x120e09['shift']());}};_0x4c07e9(++_0x522872);}(_0xdd88,0x15a));var _0x8dd8=function(_0x4893d9,_0x55761d){_0x4893d9=_0x4893d9-0x0;var _0xb91316=_0xdd88[_0x4893d9];return _0xb91316;};'use strict';var _=require(_0x8dd8('0x0'));var util=require(_0x8dd8('0x1'));var logger=require('../../config/logger')(_0x8dd8('0x2'));var moment=require(_0x8dd8('0x3'));var BPromise=require(_0x8dd8('0x4'));var rp=require(_0x8dd8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8dd8('0x6'));var config=require('../../config/environment');var attributes=require(_0x8dd8('0x7'));module[_0x8dd8('0x8')]=function(_0x55897d,_0x168a60){return _0x55897d[_0x8dd8('0x9')](_0x8dd8('0xa'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e9f=['./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x1e9f,0x1a5));var _0xf1e9=function(_0x5c7ea7,_0x4f7d6f){_0x5c7ea7=_0x5c7ea7-0x0;var _0x4c3cf1=_0x1e9f[_0x5c7ea7];return _0x4c3cf1;};'use strict';var _=require(_0xf1e9('0x0'));var util=require('util');var logger=require(_0xf1e9('0x1'))(_0xf1e9('0x2'));var moment=require('moment');var BPromise=require(_0xf1e9('0x3'));var rp=require(_0xf1e9('0x4'));var fs=require('fs');var path=require(_0xf1e9('0x5'));var rimraf=require(_0xf1e9('0x6'));var config=require(_0xf1e9('0x7'));var attributes=require(_0xf1e9('0x8'));module[_0xf1e9('0x9')]=function(_0x2657c0,_0x5962e2){return _0x2657c0[_0xf1e9('0xa')](_0xf1e9('0xb'),attributes,{'tableName':_0xf1e9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index efe86ca..b5eb29e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f76=['MailQueue','find','debug','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','error','MailQueue,\x20%s,\x20%s','message','result','catch','GetMailQueue','findAll','options','raw','where','attributes','limit','include','map','model','then','stringify','ShowMailQueue'];(function(_0x10e0a3,_0x3e70a6){var _0x38d487=function(_0x21abad){while(--_0x21abad){_0x10e0a3['push'](_0x10e0a3['shift']());}};_0x38d487(++_0x3e70a6);}(_0x2f76,0x122));var _0x62f7=function(_0xc0793,_0x1aa1a6){_0xc0793=_0xc0793-0x0;var _0x3238c2=_0x2f76[_0xc0793];return _0x3238c2;};'use strict';var _=require('lodash');var util=require(_0x62f7('0x0'));var moment=require(_0x62f7('0x1'));var BPromise=require(_0x62f7('0x2'));var rs=require(_0x62f7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x62f7('0x4'))['db'];var utils=require(_0x62f7('0x5'));var logger=require(_0x62f7('0x6'))(_0x62f7('0x7'));var config=require('../../config/environment');var jayson=require(_0x62f7('0x8'));var client=jayson[_0x62f7('0x9')][_0x62f7('0xa')]({'port':0x232a});config[_0x62f7('0xb')]=_[_0x62f7('0xc')](config[_0x62f7('0xb')],{'host':_0x62f7('0xd'),'port':0x18eb});var socket=require(_0x62f7('0xe'))(new Redis(config[_0x62f7('0xb')]));require('./mailQueue.socket')[_0x62f7('0xf')](socket);function respondWithRpcPromise(_0x4a31af,_0x8dbacb,_0x4d4e41){return new BPromise(function(_0x371e94,_0x5cf0cf){return client[_0x62f7('0x10')](_0x4a31af,_0x4d4e41)['then'](function(_0x17bf04){logger[_0x62f7('0x11')]('MailQueue,\x20%s,\x20%s',_0x8dbacb,_0x62f7('0x12'));logger['debug'](_0x62f7('0x13'),_0x8dbacb,_0x62f7('0x12'),JSON['stringify'](_0x17bf04));if(_0x17bf04[_0x62f7('0x14')]){if(_0x17bf04[_0x62f7('0x14')]['code']===0x1f4){logger['error'](_0x62f7('0x15'),_0x8dbacb,_0x17bf04['error'][_0x62f7('0x16')]);return _0x5cf0cf(_0x17bf04[_0x62f7('0x14')][_0x62f7('0x16')]);}logger[_0x62f7('0x14')](_0x62f7('0x15'),_0x8dbacb,_0x17bf04[_0x62f7('0x14')][_0x62f7('0x16')]);return _0x371e94(_0x17bf04['error'][_0x62f7('0x16')]);}else{logger[_0x62f7('0x11')](_0x62f7('0x15'),_0x8dbacb,_0x62f7('0x12'));_0x371e94(_0x17bf04[_0x62f7('0x17')][_0x62f7('0x16')]);}})[_0x62f7('0x18')](function(_0x143511){logger['error'](_0x62f7('0x15'),_0x8dbacb,_0x143511);_0x5cf0cf(_0x143511);});});}exports[_0x62f7('0x19')]=function(_0x39c5a3){var _0x283f52=this;return new Promise(function(_0x2b1295,_0x48bde2){return db['MailQueue'][_0x62f7('0x1a')]({'raw':_0x39c5a3['options']?_0x39c5a3[_0x62f7('0x1b')][_0x62f7('0x1c')]===undefined?!![]:![]:!![],'where':_0x39c5a3[_0x62f7('0x1b')]?_0x39c5a3['options'][_0x62f7('0x1d')]||null:null,'attributes':_0x39c5a3[_0x62f7('0x1b')]?_0x39c5a3[_0x62f7('0x1b')][_0x62f7('0x1e')]||null:null,'limit':_0x39c5a3[_0x62f7('0x1b')]?_0x39c5a3['options'][_0x62f7('0x1f')]||null:null,'include':_0x39c5a3[_0x62f7('0x1b')]?_0x39c5a3['options'][_0x62f7('0x20')]?_[_0x62f7('0x21')](_0x39c5a3[_0x62f7('0x1b')][_0x62f7('0x20')],function(_0x4af8ea){return{'model':db[_0x4af8ea[_0x62f7('0x22')]],'as':_0x4af8ea['as'],'attributes':_0x4af8ea[_0x62f7('0x1e')],'include':_0x4af8ea['include']?_['map'](_0x4af8ea['include'],function(_0x24539e){return{'model':db[_0x24539e[_0x62f7('0x22')]],'as':_0x24539e['as'],'attributes':_0x24539e[_0x62f7('0x1e')],'include':_0x24539e[_0x62f7('0x20')]?_[_0x62f7('0x21')](_0x24539e[_0x62f7('0x20')],function(_0x5649cb){return{'model':db[_0x5649cb['model']],'as':_0x5649cb['as'],'attributes':_0x5649cb[_0x62f7('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x62f7('0x23')](function(_0x1d92c4){logger[_0x62f7('0x11')](_0x62f7('0x19'),_0x39c5a3);logger['debug'](_0x62f7('0x19'),_0x39c5a3,JSON[_0x62f7('0x24')](_0x1d92c4));_0x2b1295(_0x1d92c4);})[_0x62f7('0x18')](function(_0x2100e0){logger[_0x62f7('0x14')](_0x62f7('0x19'),_0x2100e0[_0x62f7('0x16')],_0x39c5a3);_0x48bde2(_0x283f52['error'](0x1f4,_0x2100e0['message']));});});};exports[_0x62f7('0x25')]=function(_0x46b88a){var _0x25e575=this;return new Promise(function(_0x524e5c,_0x227d6c){return db[_0x62f7('0x26')][_0x62f7('0x27')]({'raw':_0x46b88a[_0x62f7('0x1b')]?_0x46b88a['options'][_0x62f7('0x1c')]===undefined?!![]:![]:!![],'where':_0x46b88a['options']?_0x46b88a[_0x62f7('0x1b')][_0x62f7('0x1d')]||null:null,'attributes':_0x46b88a[_0x62f7('0x1b')]?_0x46b88a[_0x62f7('0x1b')][_0x62f7('0x1e')]||null:null,'include':_0x46b88a['options']?_0x46b88a[_0x62f7('0x1b')]['include']?_[_0x62f7('0x21')](_0x46b88a[_0x62f7('0x1b')]['include'],function(_0x4d5b2a){return{'model':db[_0x4d5b2a['model']],'as':_0x4d5b2a['as'],'attributes':_0x4d5b2a[_0x62f7('0x1e')],'include':_0x4d5b2a[_0x62f7('0x20')]?_[_0x62f7('0x21')](_0x4d5b2a[_0x62f7('0x20')],function(_0x441f4d){return{'model':db[_0x441f4d[_0x62f7('0x22')]],'as':_0x441f4d['as'],'attributes':_0x441f4d[_0x62f7('0x1e')],'include':_0x441f4d[_0x62f7('0x20')]?_[_0x62f7('0x21')](_0x441f4d[_0x62f7('0x20')],function(_0x3013ab){return{'model':db[_0x3013ab['model']],'as':_0x3013ab['as'],'attributes':_0x3013ab[_0x62f7('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x62f7('0x23')](function(_0x24f225){logger['info']('ShowMailQueue',_0x46b88a);logger[_0x62f7('0x28')]('ShowMailQueue',_0x46b88a,JSON[_0x62f7('0x24')](_0x24f225));_0x524e5c(_0x24f225);})['catch'](function(_0x2f2694){logger[_0x62f7('0x14')]('ShowMailQueue',_0x2f2694['message'],_0x46b88a);_0x227d6c(_0x25e575[_0x62f7('0x14')](0x1f4,_0x2f2694['message']));});});};
\ No newline at end of file
+var _0xc35b=['catch','GetMailQueue','findAll','options','limit','include','map','model','attributes','ShowMailQueue','MailQueue','find','raw','where','stringify','util','moment','randomstring','../../config/logger','rpc','client','http','redis','defaults','localhost','./mailQueue.socket','request','then','info','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','error','code','message','MailQueue,\x20%s,\x20%s','result'];(function(_0x32174f,_0x3b465e){var _0x230d4e=function(_0x43683f){while(--_0x43683f){_0x32174f['push'](_0x32174f['shift']());}};_0x230d4e(++_0x3b465e);}(_0xc35b,0xa3));var _0xbc35=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xc35b[_0xae7c2f];return _0x5d7001;};'use strict';var _=require('lodash');var util=require(_0xbc35('0x0'));var moment=require(_0xbc35('0x1'));var BPromise=require('bluebird');var rs=require(_0xbc35('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbc35('0x3'))(_0xbc35('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbc35('0x5')][_0xbc35('0x6')]({'port':0x232a});config[_0xbc35('0x7')]=_[_0xbc35('0x8')](config[_0xbc35('0x7')],{'host':_0xbc35('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xbc35('0xa'))['register'](socket);function respondWithRpcPromise(_0x229509,_0x15ec1e,_0x778c40){return new BPromise(function(_0x5e1912,_0x2b5301){return client[_0xbc35('0xb')](_0x229509,_0x778c40)[_0xbc35('0xc')](function(_0x4443a4){logger[_0xbc35('0xd')]('MailQueue,\x20%s,\x20%s',_0x15ec1e,_0xbc35('0xe'));logger[_0xbc35('0xf')](_0xbc35('0x10'),_0x15ec1e,'request\x20sent',JSON['stringify'](_0x4443a4));if(_0x4443a4[_0xbc35('0x11')]){if(_0x4443a4['error'][_0xbc35('0x12')]===0x1f4){logger[_0xbc35('0x11')]('MailQueue,\x20%s,\x20%s',_0x15ec1e,_0x4443a4[_0xbc35('0x11')][_0xbc35('0x13')]);return _0x2b5301(_0x4443a4[_0xbc35('0x11')][_0xbc35('0x13')]);}logger['error'](_0xbc35('0x14'),_0x15ec1e,_0x4443a4[_0xbc35('0x11')]['message']);return _0x5e1912(_0x4443a4[_0xbc35('0x11')]['message']);}else{logger[_0xbc35('0xd')](_0xbc35('0x14'),_0x15ec1e,_0xbc35('0xe'));_0x5e1912(_0x4443a4[_0xbc35('0x15')][_0xbc35('0x13')]);}})[_0xbc35('0x16')](function(_0x4a95e3){logger[_0xbc35('0x11')](_0xbc35('0x14'),_0x15ec1e,_0x4a95e3);_0x2b5301(_0x4a95e3);});});}exports[_0xbc35('0x17')]=function(_0x358ea7){var _0x548cab=this;return new Promise(function(_0x5419e7,_0x11ec73){return db['MailQueue'][_0xbc35('0x18')]({'raw':_0x358ea7[_0xbc35('0x19')]?_0x358ea7['options']['raw']===undefined?!![]:![]:!![],'where':_0x358ea7[_0xbc35('0x19')]?_0x358ea7[_0xbc35('0x19')]['where']||null:null,'attributes':_0x358ea7[_0xbc35('0x19')]?_0x358ea7['options']['attributes']||null:null,'limit':_0x358ea7[_0xbc35('0x19')]?_0x358ea7[_0xbc35('0x19')][_0xbc35('0x1a')]||null:null,'include':_0x358ea7[_0xbc35('0x19')]?_0x358ea7[_0xbc35('0x19')][_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x358ea7[_0xbc35('0x19')]['include'],function(_0x52c422){return{'model':db[_0x52c422[_0xbc35('0x1d')]],'as':_0x52c422['as'],'attributes':_0x52c422['attributes'],'include':_0x52c422[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x52c422['include'],function(_0x2a6646){return{'model':db[_0x2a6646[_0xbc35('0x1d')]],'as':_0x2a6646['as'],'attributes':_0x2a6646[_0xbc35('0x1e')],'include':_0x2a6646[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x2a6646['include'],function(_0x1cc43f){return{'model':db[_0x1cc43f[_0xbc35('0x1d')]],'as':_0x1cc43f['as'],'attributes':_0x1cc43f[_0xbc35('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbc35('0xc')](function(_0x5514f6){logger[_0xbc35('0xd')]('GetMailQueue',_0x358ea7);logger[_0xbc35('0xf')](_0xbc35('0x17'),_0x358ea7,JSON['stringify'](_0x5514f6));_0x5419e7(_0x5514f6);})[_0xbc35('0x16')](function(_0x248724){logger[_0xbc35('0x11')](_0xbc35('0x17'),_0x248724[_0xbc35('0x13')],_0x358ea7);_0x11ec73(_0x548cab[_0xbc35('0x11')](0x1f4,_0x248724['message']));});});};exports[_0xbc35('0x1f')]=function(_0x5f42c4){var _0x5b23c5=this;return new Promise(function(_0x57d06c,_0x5e4f92){return db[_0xbc35('0x20')][_0xbc35('0x21')]({'raw':_0x5f42c4[_0xbc35('0x19')]?_0x5f42c4[_0xbc35('0x19')][_0xbc35('0x22')]===undefined?!![]:![]:!![],'where':_0x5f42c4['options']?_0x5f42c4[_0xbc35('0x19')][_0xbc35('0x23')]||null:null,'attributes':_0x5f42c4[_0xbc35('0x19')]?_0x5f42c4['options'][_0xbc35('0x1e')]||null:null,'include':_0x5f42c4[_0xbc35('0x19')]?_0x5f42c4[_0xbc35('0x19')][_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x5f42c4['options'][_0xbc35('0x1b')],function(_0x258926){return{'model':db[_0x258926['model']],'as':_0x258926['as'],'attributes':_0x258926[_0xbc35('0x1e')],'include':_0x258926[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x258926[_0xbc35('0x1b')],function(_0x4cc659){return{'model':db[_0x4cc659[_0xbc35('0x1d')]],'as':_0x4cc659['as'],'attributes':_0x4cc659[_0xbc35('0x1e')],'include':_0x4cc659[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x4cc659[_0xbc35('0x1b')],function(_0x2dd43a){return{'model':db[_0x2dd43a[_0xbc35('0x1d')]],'as':_0x2dd43a['as'],'attributes':_0x2dd43a[_0xbc35('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbc35('0xc')](function(_0x167728){logger[_0xbc35('0xd')](_0xbc35('0x1f'),_0x5f42c4);logger[_0xbc35('0xf')](_0xbc35('0x1f'),_0x5f42c4,JSON[_0xbc35('0x24')](_0x167728));_0x57d06c(_0x167728);})['catch'](function(_0x54be18){logger['error'](_0xbc35('0x1f'),_0x54be18[_0xbc35('0x13')],_0x5f42c4);_0x5e4f92(_0x5b23c5[_0xbc35('0x11')](0x1f4,_0x54be18[_0xbc35('0x13')]));});});};
\ No newline at end of file
index 45d3edd..90798df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d0c=['emit','removeListener','length','mailQueue:','./mailQueue.events','save','remove','update'];(function(_0x482a1e,_0x95073){var _0xfabdd0=function(_0x20d1c2){while(--_0x20d1c2){_0x482a1e['push'](_0x482a1e['shift']());}};_0xfabdd0(++_0x95073);}(_0x6d0c,0x8c));var _0xc6d0=function(_0x35aca8,_0x1bddc9){_0x35aca8=_0x35aca8-0x0;var _0x581ff4=_0x6d0c[_0x35aca8];return _0x581ff4;};'use strict';var MailQueueEvents=require(_0xc6d0('0x0'));var events=[_0xc6d0('0x1'),_0xc6d0('0x2'),_0xc6d0('0x3')];function createListener(_0xc8bedb,_0x350d3a){return function(_0x487187){_0x350d3a[_0xc6d0('0x4')](_0xc8bedb,_0x487187);};}function removeListener(_0x5e2eb1,_0x5e5db2){return function(){MailQueueEvents[_0xc6d0('0x5')](_0x5e2eb1,_0x5e5db2);};}exports['register']=function(_0x589214){for(var _0xdae4c3=0x0,_0x40ba33=events[_0xc6d0('0x6')];_0xdae4c3<_0x40ba33;_0xdae4c3++){var _0x39e8be=events[_0xdae4c3];var _0xbd2213=createListener(_0xc6d0('0x7')+_0x39e8be,_0x589214);MailQueueEvents['on'](_0x39e8be,_0xbd2213);}};
\ No newline at end of file
+var _0xb0cf=['removeListener','register','length','mailQueue:','./mailQueue.events','remove','update','emit'];(function(_0x31e584,_0x4d9f7f){var _0x5686d0=function(_0x1f9e99){while(--_0x1f9e99){_0x31e584['push'](_0x31e584['shift']());}};_0x5686d0(++_0x4d9f7f);}(_0xb0cf,0x84));var _0xfb0c=function(_0x4e00da,_0x6c9063){_0x4e00da=_0x4e00da-0x0;var _0x2f9c7a=_0xb0cf[_0x4e00da];return _0x2f9c7a;};'use strict';var MailQueueEvents=require(_0xfb0c('0x0'));var events=['save',_0xfb0c('0x1'),_0xfb0c('0x2')];function createListener(_0xabe18,_0x2022c3){return function(_0x1a3cbb){_0x2022c3[_0xfb0c('0x3')](_0xabe18,_0x1a3cbb);};}function removeListener(_0x47e418,_0x18ab18){return function(){MailQueueEvents[_0xfb0c('0x4')](_0x47e418,_0x18ab18);};}exports[_0xfb0c('0x5')]=function(_0x496ee3){for(var _0x296356=0x0,_0x180ac9=events[_0xfb0c('0x6')];_0x296356<_0x180ac9;_0x296356++){var _0xe49634=events[_0x296356];var _0x368888=createListener(_0xfb0c('0x7')+_0xe49634,_0x496ee3);MailQueueEvents['on'](_0xe49634,_0x368888);}};
\ No newline at end of file
index bfc9361..b9afbe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9490=['/describe','isAuthenticated','/:id','post','create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./mailQueueReport.controller','index','get'];(function(_0xe25d3b,_0x71e6a7){var _0x233ce0=function(_0x98145c){while(--_0x98145c){_0xe25d3b['push'](_0xe25d3b['shift']());}};_0x233ce0(++_0x71e6a7);}(_0x9490,0x1ab));var _0x0949=function(_0x5d9c62,_0x35a1ab){_0x5d9c62=_0x5d9c62-0x0;var _0x380b7d=_0x9490[_0x5d9c62];return _0x380b7d;};'use strict';var multer=require(_0x0949('0x0'));var util=require(_0x0949('0x1'));var path=require(_0x0949('0x2'));var timeout=require('connect-timeout');var express=require(_0x0949('0x3'));var router=express[_0x0949('0x4')]();var fs_extra=require(_0x0949('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0949('0x6'));var controller=require(_0x0949('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x0949('0x8')]);router[_0x0949('0x9')](_0x0949('0xa'),auth[_0x0949('0xb')](),controller['describe']);router['get'](_0x0949('0xc'),auth[_0x0949('0xb')](),controller['show']);router[_0x0949('0xd')]('/',auth[_0x0949('0xb')](),controller[_0x0949('0xe')]);router['put'](_0x0949('0xc'),auth[_0x0949('0xb')](),controller[_0x0949('0xf')]);router[_0x0949('0x10')](_0x0949('0xc'),auth[_0x0949('0xb')](),controller[_0x0949('0x11')]);module[_0x0949('0x12')]=router;
\ No newline at end of file
+var _0x4693=['fs-extra','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x4f0e62,_0x28e44f){var _0x117ab8=function(_0x1a74bb){while(--_0x1a74bb){_0x4f0e62['push'](_0x4f0e62['shift']());}};_0x117ab8(++_0x28e44f);}(_0x4693,0xcc));var _0x3469=function(_0x2bc807,_0x57bd84){_0x2bc807=_0x2bc807-0x0;var _0x457bd1=_0x4693[_0x2bc807];return _0x457bd1;};'use strict';var multer=require(_0x3469('0x0'));var util=require('util');var path=require(_0x3469('0x1'));var timeout=require(_0x3469('0x2'));var express=require(_0x3469('0x3'));var router=express[_0x3469('0x4')]();var fs_extra=require(_0x3469('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3469('0x6'));var controller=require('./mailQueueReport.controller');router[_0x3469('0x7')]('/',auth['isAuthenticated'](),controller[_0x3469('0x8')]);router[_0x3469('0x7')](_0x3469('0x9'),auth[_0x3469('0xa')](),controller[_0x3469('0xb')]);router[_0x3469('0x7')](_0x3469('0xc'),auth[_0x3469('0xa')](),controller['show']);router[_0x3469('0xd')]('/',auth['isAuthenticated'](),controller[_0x3469('0xe')]);router['put'](_0x3469('0xc'),auth[_0x3469('0xa')](),controller[_0x3469('0xf')]);router[_0x3469('0x10')](_0x3469('0xc'),auth['isAuthenticated'](),controller[_0x3469('0x11')]);module[_0x3469('0x12')]=router;
\ No newline at end of file
index ce895ac..5b7d797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x544f=['exports','STRING','DATE','moment','sequelize'];(function(_0x2484e7,_0x3f2204){var _0x24a8a6=function(_0x32ad50){while(--_0x32ad50){_0x2484e7['push'](_0x2484e7['shift']());}};_0x24a8a6(++_0x3f2204);}(_0x544f,0xbc));var _0xf544=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x544f[_0x2070da];return _0x4f9fe1;};'use strict';var moment=require(_0xf544('0x0'));var Sequelize=require(_0xf544('0x1'));module[_0xf544('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xf544('0x3')]},'joinAt':{'type':Sequelize[_0xf544('0x4')]},'leaveAt':{'type':Sequelize[_0xf544('0x4')]},'acceptAt':{'type':Sequelize[_0xf544('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2a21=['DATE','STRING'];(function(_0x3de7e0,_0x28cbff){var _0x11d0b3=function(_0xd95412){while(--_0xd95412){_0x3de7e0['push'](_0x3de7e0['shift']());}};_0x11d0b3(++_0x28cbff);}(_0x2a21,0x7e));var _0x12a2=function(_0x2d5e4c,_0x11e2b5){_0x2d5e4c=_0x2d5e4c-0x0;var _0x3a7f53=_0x2a21[_0x2d5e4c];return _0x3a7f53;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x12a2('0x0')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x12a2('0x0')]},'reason':{'type':Sequelize[_0x12a2('0x1')]}};
\ No newline at end of file
index 6184813..4178d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','MailQueueReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','find','create','body','update','catch','describe','rimraf','fast-json-patch','request-promise','moment'];(function(_0x2cb58b,_0x5a879d){var _0xe9dd9c=function(_0x11e835){while(--_0x11e835){_0x2cb58b['push'](_0x2cb58b['shift']());}};_0xe9dd9c(++_0x5a879d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x5f66[_0x5f0089];return _0x193892;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'all':!![]}];}return db[_0x65f6('0x27')][_0x65f6('0x3c')](_0x4ac04b);})[_0x65f6('0x21')](function(_0xed4c96){_0x266cfe[_0x65f6('0x3d')]=_0xed4c96;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))['catch'](handleError(_0x559330,null));};exports[_0x65f6('0x3e')]=function(_0x400ed2,_0x377ae5){var _0x181798={'raw':!![],'where':{'id':_0x400ed2[_0x65f6('0x3f')]['id']}},_0x83e2d9={};_0x83e2d9[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x83e2d9[_0x65f6('0x2c')]=_[_0x65f6('0x2b')](_0x400ed2[_0x65f6('0x2c')]);_0x83e2d9[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],_0x83e2d9['query']);_0x181798[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x400ed2['query'][_0x65f6('0x2f')]));_0x181798[_0x65f6('0x30')]=_0x181798[_0x65f6('0x30')]['length']?_0x181798[_0x65f6('0x30')]:_0x83e2d9[_0x65f6('0x2a')];if(_0x400ed2[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x181798['include']=[{'all':!![]}];}_0x181798=_[_0x65f6('0x37')]({},_0x181798,_0x400ed2['options']);return db[_0x65f6('0x27')][_0x65f6('0x40')](_0x181798)['then'](handleEntityNotFound(_0x377ae5,null))[_0x65f6('0x21')](respondWithResult(_0x377ae5,null))['catch'](handleError(_0x377ae5,null));};exports[_0x65f6('0x41')]=function(_0x4d9b76,_0x2d1706){return db[_0x65f6('0x27')][_0x65f6('0x41')](_0x4d9b76[_0x65f6('0x42')],{})['then'](respondWithResult(_0x2d1706,0xc9))['catch'](handleError(_0x2d1706,null));};exports[_0x65f6('0x43')]=function(_0x15d3ba,_0x3b647a){if(_0x15d3ba[_0x65f6('0x42')]['id']){delete _0x15d3ba[_0x65f6('0x42')]['id'];}return db[_0x65f6('0x27')][_0x65f6('0x40')]({'where':{'id':_0x15d3ba[_0x65f6('0x3f')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b647a,null))['then'](saveUpdates(_0x15d3ba[_0x65f6('0x42')],null))[_0x65f6('0x21')](respondWithResult(_0x3b647a,null))[_0x65f6('0x44')](handleError(_0x3b647a,null));};exports['destroy']=function(_0x47e749,_0x42d453){return db['MailQueueReport'][_0x65f6('0x40')]({'where':{'id':_0x47e749[_0x65f6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x42d453,null))[_0x65f6('0x21')](removeEntity(_0x42d453,null))['catch'](handleError(_0x42d453,null));};exports[_0x65f6('0x45')]=function(_0x3b241f,_0x1ca67e){return db['MailQueueReport'][_0x65f6('0x45')]()[_0x65f6('0x21')](respondWithResult(_0x1ca67e,null))['catch'](handleError(_0x1ca67e,null));};
\ No newline at end of file
+var _0x32f4=['destroy','then','end','error','stack','name','send','map','MailQueueReport','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','fields','length','model','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update'];(function(_0x391c55,_0x168617){var _0xa434e0=function(_0x51fa5c){while(--_0x51fa5c){_0x391c55['push'](_0x391c55['shift']());}};_0xa434e0(++_0x168617);}(_0x32f4,0x154));var _0x432f=function(_0xe07f00,_0x5107ad){_0xe07f00=_0xe07f00-0x0;var _0x4157b3=_0x32f4[_0xe07f00];return _0x4157b3;};'use strict';var emlformat=require(_0x432f('0x0'));var rimraf=require(_0x432f('0x1'));var zipdir=require(_0x432f('0x2'));var jsonpatch=require(_0x432f('0x3'));var rp=require('request-promise');var moment=require(_0x432f('0x4'));var BPromise=require(_0x432f('0x5'));var Mustache=require('mustache');var util=require(_0x432f('0x6'));var path=require(_0x432f('0x7'));var sox=require(_0x432f('0x8'));var csv=require(_0x432f('0x9'));var ejs=require(_0x432f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x432f('0xb'));var crypto=require(_0x432f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x432f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x432f('0xe'));var Papa=require(_0x432f('0xf'));var Redis=require(_0x432f('0x10'));var authService=require(_0x432f('0x11'));var qs=require(_0x432f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x432f('0x13'));var logger=require('../../config/logger')(_0x432f('0x14'));var utils=require('../../config/utils');var config=require(_0x432f('0x15'));var licenseUtil=require(_0x432f('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x457389,_0x29f7d2){_0x29f7d2=_0x29f7d2||0xcc;return function(_0x52e40f){if(_0x52e40f){return _0x457389[_0x432f('0x17')](_0x29f7d2);}return _0x457389[_0x432f('0x18')](_0x29f7d2)['end']();};}function respondWithResult(_0x48a4db,_0x28d9e9){_0x28d9e9=_0x28d9e9||0xc8;return function(_0x44756d){if(_0x44756d){return _0x48a4db[_0x432f('0x18')](_0x28d9e9)[_0x432f('0x19')](_0x44756d);}};}function respondWithFilteredResult(_0x419bfe,_0x4f91c5){return function(_0x175ba7){if(_0x175ba7){var _0x2f0708=typeof _0x4f91c5[_0x432f('0x1a')]===_0x432f('0x1b')&&typeof _0x4f91c5['limit']===_0x432f('0x1b');var _0x30f231=_0x175ba7[_0x432f('0x1c')];var _0x243cf=_0x2f0708?0x0:_0x4f91c5[_0x432f('0x1a')];var _0x129582=_0x2f0708?_0x175ba7['count']:_0x4f91c5[_0x432f('0x1a')]+_0x4f91c5['limit'];var _0x3d545d;if(_0x129582>=_0x30f231){_0x129582=_0x30f231;_0x3d545d=0xc8;}else{_0x3d545d=0xce;}_0x419bfe[_0x432f('0x18')](_0x3d545d);return _0x419bfe[_0x432f('0x1d')](_0x432f('0x1e'),_0x243cf+'-'+_0x129582+'/'+_0x30f231)[_0x432f('0x19')](_0x175ba7);}return null;};}function patchUpdates(_0xf1f5d){return function(_0x10f39b){try{jsonpatch[_0x432f('0x1f')](_0x10f39b,_0xf1f5d,!![]);}catch(_0x693eb3){return BPromise[_0x432f('0x20')](_0x693eb3);}return _0x10f39b[_0x432f('0x21')]();};}function saveUpdates(_0x3446fd,_0x4dd230){return function(_0x5940bd){if(_0x5940bd){return _0x5940bd[_0x432f('0x22')](_0x3446fd)['then'](function(_0x28968e){return _0x28968e;});}return null;};}function removeEntity(_0x5b9c70,_0x37f136){return function(_0x175d1b){if(_0x175d1b){return _0x175d1b[_0x432f('0x23')]()[_0x432f('0x24')](function(){_0x5b9c70[_0x432f('0x18')](0xcc)[_0x432f('0x25')]();});}};}function handleEntityNotFound(_0x59f352,_0x252b3b){return function(_0x33edec){if(!_0x33edec){_0x59f352['sendStatus'](0x194);}return _0x33edec;};}function handleError(_0x2cbde9,_0x3e37ec){_0x3e37ec=_0x3e37ec||0x1f4;return function(_0x2bcbb4){logger[_0x432f('0x26')](_0x2bcbb4[_0x432f('0x27')]);if(_0x2bcbb4[_0x432f('0x28')]){delete _0x2bcbb4[_0x432f('0x28')];}_0x2cbde9['status'](_0x3e37ec)[_0x432f('0x29')](_0x2bcbb4);};}exports['index']=function(_0x1f1fdd,_0x573cc5){var _0x20404d={},_0x5a2c14={},_0x3f768b={'count':0x0,'rows':[]};var _0x489ba6=_[_0x432f('0x2a')](db[_0x432f('0x2b')][_0x432f('0x2c')],function(_0x59c1ab){return{'name':_0x59c1ab[_0x432f('0x2d')],'type':_0x59c1ab[_0x432f('0x2e')]['key']};});_0x5a2c14['model']=_[_0x432f('0x2a')](_0x489ba6,_0x432f('0x28'));_0x5a2c14[_0x432f('0x2f')]=_[_0x432f('0x30')](_0x1f1fdd[_0x432f('0x2f')]);_0x5a2c14[_0x432f('0x31')]=_['intersection'](_0x5a2c14['model'],_0x5a2c14[_0x432f('0x2f')]);_0x20404d[_0x432f('0x32')]=_[_0x432f('0x33')](_0x5a2c14['model'],qs[_0x432f('0x34')](_0x1f1fdd[_0x432f('0x2f')][_0x432f('0x34')]));_0x20404d[_0x432f('0x32')]=_0x20404d[_0x432f('0x32')][_0x432f('0x35')]?_0x20404d[_0x432f('0x32')]:_0x5a2c14[_0x432f('0x36')];if(!_0x1f1fdd['query']['hasOwnProperty'](_0x432f('0x37'))){_0x20404d[_0x432f('0x38')]=qs['limit'](_0x1f1fdd['query']['limit']);_0x20404d[_0x432f('0x1a')]=qs[_0x432f('0x1a')](_0x1f1fdd['query'][_0x432f('0x1a')]);}_0x20404d[_0x432f('0x39')]=qs[_0x432f('0x3a')](_0x1f1fdd['query'][_0x432f('0x3a')]);_0x20404d[_0x432f('0x3b')]=qs['filters'](_[_0x432f('0x3c')](_0x1f1fdd[_0x432f('0x2f')],_0x5a2c14['filters']),_0x489ba6);if(_0x1f1fdd[_0x432f('0x2f')][_0x432f('0x3d')]){_0x20404d[_0x432f('0x3b')]=_[_0x432f('0x3e')](_0x20404d[_0x432f('0x3b')],{'$or':_[_0x432f('0x2a')](_0x489ba6,function(_0xbef36e){if(_0xbef36e[_0x432f('0x2e')]!==_0x432f('0x3f')){var _0x2545b7={};_0x2545b7[_0xbef36e[_0x432f('0x28')]]={'$like':'%'+_0x1f1fdd['query'][_0x432f('0x3d')]+'%'};return _0x2545b7;}})});}_0x20404d=_['merge']({},_0x20404d,_0x1f1fdd[_0x432f('0x40')]);var _0x3e8a0a={'where':_0x20404d['where']};return db[_0x432f('0x2b')]['count'](_0x3e8a0a)[_0x432f('0x24')](function(_0x3aca68){_0x3f768b['count']=_0x3aca68;if(_0x1f1fdd['query'][_0x432f('0x41')]){_0x20404d[_0x432f('0x42')]=[{'all':!![]}];}return db[_0x432f('0x2b')][_0x432f('0x43')](_0x20404d);})[_0x432f('0x24')](function(_0x513a57){_0x3f768b['rows']=_0x513a57;return _0x3f768b;})['then'](respondWithFilteredResult(_0x573cc5,_0x20404d))[_0x432f('0x44')](handleError(_0x573cc5,null));};exports[_0x432f('0x45')]=function(_0x55d64c,_0x1f58af){var _0x841572={'raw':!![],'where':{'id':_0x55d64c[_0x432f('0x46')]['id']}},_0x41c90c={};_0x41c90c[_0x432f('0x36')]=_[_0x432f('0x30')](db[_0x432f('0x2b')][_0x432f('0x2c')]);_0x41c90c[_0x432f('0x2f')]=_['keys'](_0x55d64c[_0x432f('0x2f')]);_0x41c90c[_0x432f('0x31')]=_['intersection'](_0x41c90c[_0x432f('0x36')],_0x41c90c[_0x432f('0x2f')]);_0x841572[_0x432f('0x32')]=_[_0x432f('0x33')](_0x41c90c[_0x432f('0x36')],qs[_0x432f('0x34')](_0x55d64c[_0x432f('0x2f')][_0x432f('0x34')]));_0x841572[_0x432f('0x32')]=_0x841572[_0x432f('0x32')][_0x432f('0x35')]?_0x841572[_0x432f('0x32')]:_0x41c90c[_0x432f('0x36')];if(_0x55d64c[_0x432f('0x2f')]['includeAll']){_0x841572['include']=[{'all':!![]}];}_0x841572=_[_0x432f('0x3e')]({},_0x841572,_0x55d64c[_0x432f('0x40')]);return db[_0x432f('0x2b')][_0x432f('0x47')](_0x841572)[_0x432f('0x24')](handleEntityNotFound(_0x1f58af,null))['then'](respondWithResult(_0x1f58af,null))[_0x432f('0x44')](handleError(_0x1f58af,null));};exports[_0x432f('0x48')]=function(_0x46c5ee,_0x2f88d6){return db[_0x432f('0x2b')][_0x432f('0x48')](_0x46c5ee[_0x432f('0x49')],{})['then'](respondWithResult(_0x2f88d6,0xc9))[_0x432f('0x44')](handleError(_0x2f88d6,null));};exports[_0x432f('0x22')]=function(_0x359853,_0x547bd0){if(_0x359853[_0x432f('0x49')]['id']){delete _0x359853[_0x432f('0x49')]['id'];}return db['MailQueueReport']['find']({'where':{'id':_0x359853[_0x432f('0x46')]['id']}})[_0x432f('0x24')](handleEntityNotFound(_0x547bd0,null))['then'](saveUpdates(_0x359853['body'],null))[_0x432f('0x24')](respondWithResult(_0x547bd0,null))['catch'](handleError(_0x547bd0,null));};exports[_0x432f('0x23')]=function(_0x66b80e,_0x5df9b3){return db[_0x432f('0x2b')]['find']({'where':{'id':_0x66b80e[_0x432f('0x46')]['id']}})[_0x432f('0x24')](handleEntityNotFound(_0x5df9b3,null))[_0x432f('0x24')](removeEntity(_0x5df9b3,null))[_0x432f('0x44')](handleError(_0x5df9b3,null));};exports[_0x432f('0x4a')]=function(_0x2a4d36,_0x56f526){return db[_0x432f('0x2b')]['describe']()[_0x432f('0x24')](respondWithResult(_0x56f526,null))[_0x432f('0x44')](handleError(_0x56f526,null));};
\ No newline at end of file
index 9745b44..bf0b9e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa434=['report_mail_queue','uniqueid','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','define','MailQueueReport'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xa434,0x1af));var _0x4a43=function(_0x12833b,_0x26c1d2){_0x12833b=_0x12833b-0x0;var _0x3acad3=_0xa434[_0x12833b];return _0x3acad3;};'use strict';var _=require(_0x4a43('0x0'));var util=require(_0x4a43('0x1'));var logger=require(_0x4a43('0x2'))(_0x4a43('0x3'));var moment=require('moment');var BPromise=require(_0x4a43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a43('0x5'));var rimraf=require(_0x4a43('0x6'));var config=require(_0x4a43('0x7'));var attributes=require('./mailQueueReport.attributes');module[_0x4a43('0x8')]=function(_0x40abdc,_0x5677da){return _0x40abdc[_0x4a43('0x9')](_0x4a43('0xa'),attributes,{'tableName':_0x4a43('0xb'),'paranoid':![],'indexes':[{'name':_0x4a43('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1bcc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','define','MailQueueReport','report_mail_queue','uniqueid','util','api'];(function(_0x64b4de,_0xd425bc){var _0x1fecbb=function(_0x414c52){while(--_0x414c52){_0x64b4de['push'](_0x64b4de['shift']());}};_0x1fecbb(++_0xd425bc);}(_0x1bcc,0x11c));var _0xc1bc=function(_0x54afe3,_0x258ce5){_0x54afe3=_0x54afe3-0x0;var _0x3e76d6=_0x1bcc[_0x54afe3];return _0x3e76d6;};'use strict';var _=require('lodash');var util=require(_0xc1bc('0x0'));var logger=require('../../config/logger')(_0xc1bc('0x1'));var moment=require(_0xc1bc('0x2'));var BPromise=require(_0xc1bc('0x3'));var rp=require(_0xc1bc('0x4'));var fs=require('fs');var path=require(_0xc1bc('0x5'));var rimraf=require(_0xc1bc('0x6'));var config=require(_0xc1bc('0x7'));var attributes=require(_0xc1bc('0x8'));module['exports']=function(_0x19fa5d,_0x116846){return _0x19fa5d[_0xc1bc('0x9')](_0xc1bc('0xa'),attributes,{'tableName':_0xc1bc('0xb'),'paranoid':![],'indexes':[{'name':_0xc1bc('0xc'),'fields':[_0xc1bc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index cde06c3..572e865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x418da4,_0x615190){var _0x533d9f=function(_0x5c1ff4){while(--_0x5c1ff4){_0x418da4['push'](_0x418da4['shift']());}};_0x533d9f(++_0x615190);}(_0xadb5,0xad));var _0x5adb=function(_0x1a68b8,_0x5375c3){_0x1a68b8=_0x1a68b8-0x0;var _0x2ae571=_0xadb5[_0x1a68b8];return _0x2ae571;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x48bea6,_0x53459a){var _0x222876=function(_0x206a3b){while(--_0x206a3b){_0x48bea6['push'](_0x48bea6['shift']());}};_0x222876(++_0x53459a);}(_0xadb5,0xad));var _0x5adb=function(_0x15a8a2,_0x32ca33){_0x15a8a2=_0x15a8a2-0x0;var _0x4eb1a3=_0xadb5[_0x15a8a2];return _0x4eb1a3;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
index 22a2b97..86ff4df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5e9da3,_0x5afe8e){var _0x1ce810=function(_0x151170){while(--_0x151170){_0x5e9da3['push'](_0x5e9da3['shift']());}};_0x1ce810(++_0x5afe8e);}(_0xe706,0xa3));var _0x6e70=function(_0x88249c,_0x24124e){_0x88249c=_0x88249c-0x0;var _0x951993=_0xe706[_0x88249c];return _0x951993;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x453fec,_0x3373f3){var _0x1a3d09=function(_0x3db42a){while(--_0x3db42a){_0x453fec['push'](_0x453fec['shift']());}};_0x1a3d09(++_0x3373f3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 237d081..35897b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['exports','STRING','BOOLEAN','INBOX','INTEGER','sequelize'];(function(_0x5653fd,_0x2109be){var _0x201ff9=function(_0x164730){while(--_0x164730){_0x5653fd['push'](_0x5653fd['shift']());}};_0x201ff9(++_0x2109be);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x533d29,_0x126b92){_0x533d29=_0x533d29-0x0;var _0x522955=_0xe1e3[_0x533d29];return _0x522955;};'use strict';var Sequelize=require(_0x3e1e('0x0'));module[_0x3e1e('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x3e1e('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x3e1e('0x2')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize[_0x3e1e('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3e1e('0x2')],'defaultValue':_0x3e1e('0x4')},'connTimeout':{'type':Sequelize[_0x3e1e('0x5')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3e1e('0x5')],'defaultValue':0x5},'service':{'type':Sequelize[_0x3e1e('0x2')]}};
\ No newline at end of file
+var _0x3f8c=['BOOLEAN','INTEGER','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3f8c,0x104));var _0xc3f8=function(_0x3754df,_0x3a4fff){_0x3754df=_0x3754df-0x0;var _0x4b56b4=_0x3f8c[_0x3754df];return _0x4b56b4;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0xc3f8('0x0')]},'host':{'type':Sequelize[_0xc3f8('0x0')]},'authentication':{'type':Sequelize[_0xc3f8('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0xc3f8('0x0')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xc3f8('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xc3f8('0x2')],'defaultValue':0x5},'service':{'type':Sequelize[_0xc3f8('0x0')]}};
\ No newline at end of file
index dfece71..7865f78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4025=['./mailServerIn.attributes','define','MailServerIn','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2dbebe,_0x1567db){var _0x5581d9=function(_0x47d2f1){while(--_0x47d2f1){_0x2dbebe['push'](_0x2dbebe['shift']());}};_0x5581d9(++_0x1567db);}(_0x4025,0x16e));var _0x5402=function(_0x277dde,_0x521180){_0x277dde=_0x277dde-0x0;var _0x3fc6d1=_0x4025[_0x277dde];return _0x3fc6d1;};'use strict';var _=require(_0x5402('0x0'));var util=require('util');var logger=require(_0x5402('0x1'))(_0x5402('0x2'));var moment=require(_0x5402('0x3'));var BPromise=require(_0x5402('0x4'));var rp=require(_0x5402('0x5'));var fs=require('fs');var path=require(_0x5402('0x6'));var rimraf=require(_0x5402('0x7'));var config=require('../../config/environment');var attributes=require(_0x5402('0x8'));module['exports']=function(_0x280dcb,_0x146a60){return _0x280dcb[_0x5402('0x9')](_0x5402('0xa'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8fbd=['util','rimraf','./mailServerIn.attributes','mail_servers_in'];(function(_0x5bb65c,_0x140bc3){var _0xf53a31=function(_0x59c368){while(--_0x59c368){_0x5bb65c['push'](_0x5bb65c['shift']());}};_0xf53a31(++_0x140bc3);}(_0x8fbd,0x1d0));var _0xd8fb=function(_0x107867,_0x50f00e){_0x107867=_0x107867-0x0;var _0x24e1f7=_0x8fbd[_0x107867];return _0x24e1f7;};'use strict';var _=require('lodash');var util=require(_0xd8fb('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd8fb('0x1'));var config=require('../../config/environment');var attributes=require(_0xd8fb('0x2'));module['exports']=function(_0x272a45,_0xad8dc7){return _0x272a45['define']('MailServerIn',attributes,{'tableName':_0xd8fb('0x3'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39b4a22..ec2aa7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa5d=['GetMailServerIn','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','request','info','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailServerIn,\x20%s,\x20%s','result','catch','findAll','options','where','attributes','limit','include','map','model','then'];(function(_0x53f9cf,_0x4e5be8){var _0x437fb4=function(_0x5ae844){while(--_0x5ae844){_0x53f9cf['push'](_0x53f9cf['shift']());}};_0x437fb4(++_0x4e5be8);}(_0xfa5d,0x140));var _0xdfa5=function(_0xab29ee,_0x3e1716){_0xab29ee=_0xab29ee-0x0;var _0x1990cc=_0xfa5d[_0xab29ee];return _0x1990cc;};'use strict';var _=require(_0xdfa5('0x0'));var util=require('util');var moment=require(_0xdfa5('0x1'));var BPromise=require('bluebird');var rs=require(_0xdfa5('0x2'));var fs=require('fs');var Redis=require(_0xdfa5('0x3'));var db=require(_0xdfa5('0x4'))['db'];var utils=require(_0xdfa5('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xdfa5('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x13ece7,_0x633ccb,_0x329837){return new BPromise(function(_0x19310e,_0x5a3686){return client[_0xdfa5('0x7')](_0x13ece7,_0x329837)['then'](function(_0x2f1d32){logger[_0xdfa5('0x8')]('MailServerIn,\x20%s,\x20%s',_0x633ccb,_0xdfa5('0x9'));logger[_0xdfa5('0xa')](_0xdfa5('0xb'),_0x633ccb,'request\x20sent',JSON[_0xdfa5('0xc')](_0x2f1d32));if(_0x2f1d32[_0xdfa5('0xd')]){if(_0x2f1d32[_0xdfa5('0xd')][_0xdfa5('0xe')]===0x1f4){logger[_0xdfa5('0xd')]('MailServerIn,\x20%s,\x20%s',_0x633ccb,_0x2f1d32['error'][_0xdfa5('0xf')]);return _0x5a3686(_0x2f1d32[_0xdfa5('0xd')][_0xdfa5('0xf')]);}logger[_0xdfa5('0xd')](_0xdfa5('0x10'),_0x633ccb,_0x2f1d32[_0xdfa5('0xd')]['message']);return _0x19310e(_0x2f1d32[_0xdfa5('0xd')][_0xdfa5('0xf')]);}else{logger[_0xdfa5('0x8')](_0xdfa5('0x10'),_0x633ccb,'request\x20sent');_0x19310e(_0x2f1d32[_0xdfa5('0x11')][_0xdfa5('0xf')]);}})[_0xdfa5('0x12')](function(_0x19dd53){logger['error'](_0xdfa5('0x10'),_0x633ccb,_0x19dd53);_0x5a3686(_0x19dd53);});});}exports['GetMailServerIn']=function(_0x503334){var _0x5725f6=this;return new Promise(function(_0x430b02,_0x42b80d){return db['MailServerIn'][_0xdfa5('0x13')]({'raw':_0x503334[_0xdfa5('0x14')]?_0x503334[_0xdfa5('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x503334['options']?_0x503334[_0xdfa5('0x14')][_0xdfa5('0x15')]||null:null,'attributes':_0x503334[_0xdfa5('0x14')]?_0x503334[_0xdfa5('0x14')][_0xdfa5('0x16')]||null:null,'limit':_0x503334[_0xdfa5('0x14')]?_0x503334[_0xdfa5('0x14')][_0xdfa5('0x17')]||null:null,'include':_0x503334['options']?_0x503334[_0xdfa5('0x14')][_0xdfa5('0x18')]?_[_0xdfa5('0x19')](_0x503334['options'][_0xdfa5('0x18')],function(_0xc9b18d){return{'model':db[_0xc9b18d[_0xdfa5('0x1a')]],'as':_0xc9b18d['as'],'attributes':_0xc9b18d['attributes'],'include':_0xc9b18d[_0xdfa5('0x18')]?_[_0xdfa5('0x19')](_0xc9b18d[_0xdfa5('0x18')],function(_0x47cbe6){return{'model':db[_0x47cbe6[_0xdfa5('0x1a')]],'as':_0x47cbe6['as'],'attributes':_0x47cbe6[_0xdfa5('0x16')],'include':_0x47cbe6[_0xdfa5('0x18')]?_['map'](_0x47cbe6[_0xdfa5('0x18')],function(_0x527d23){return{'model':db[_0x527d23['model']],'as':_0x527d23['as'],'attributes':_0x527d23[_0xdfa5('0x16')]};}):[]};}):[]};}):[]:[]})[_0xdfa5('0x1b')](function(_0x2a6591){logger['info'](_0xdfa5('0x1c'),_0x503334);logger[_0xdfa5('0xa')](_0xdfa5('0x1c'),_0x503334,JSON['stringify'](_0x2a6591));_0x430b02(_0x2a6591);})['catch'](function(_0x30595f){logger[_0xdfa5('0xd')](_0xdfa5('0x1c'),_0x30595f['message'],_0x503334);_0x42b80d(_0x5725f6[_0xdfa5('0xd')](0x1f4,_0x30595f['message']));});});};
\ No newline at end of file
+var _0x05e2=['error','code','message','info','result','catch','GetMailServerIn','findAll','options','raw','where','limit','include','map','model','attributes','then','lodash','util','bluebird','../../mysqldb','../../config/logger','../../config/environment','http','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1c47f2,_0x560945){var _0x4efedb=function(_0x218805){while(--_0x218805){_0x1c47f2['push'](_0x1c47f2['shift']());}};_0x4efedb(++_0x560945);}(_0x05e2,0x116));var _0x205e=function(_0x2d4421,_0x15a84f){_0x2d4421=_0x2d4421-0x0;var _0x2d3b01=_0x05e2[_0x2d4421];return _0x2d3b01;};'use strict';var _=require(_0x205e('0x0'));var util=require(_0x205e('0x1'));var moment=require('moment');var BPromise=require(_0x205e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x205e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x205e('0x4'))('rpc');var config=require(_0x205e('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x205e('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3c7a2d,_0x4aa246,_0x233156){return new BPromise(function(_0x319698,_0x7d9a99){return client['request'](_0x3c7a2d,_0x233156)['then'](function(_0x4182e9){logger['info'](_0x205e('0x7'),_0x4aa246,_0x205e('0x8'));logger[_0x205e('0x9')](_0x205e('0xa'),_0x4aa246,_0x205e('0x8'),JSON[_0x205e('0xb')](_0x4182e9));if(_0x4182e9[_0x205e('0xc')]){if(_0x4182e9['error'][_0x205e('0xd')]===0x1f4){logger[_0x205e('0xc')](_0x205e('0x7'),_0x4aa246,_0x4182e9[_0x205e('0xc')][_0x205e('0xe')]);return _0x7d9a99(_0x4182e9[_0x205e('0xc')]['message']);}logger[_0x205e('0xc')](_0x205e('0x7'),_0x4aa246,_0x4182e9[_0x205e('0xc')][_0x205e('0xe')]);return _0x319698(_0x4182e9[_0x205e('0xc')]['message']);}else{logger[_0x205e('0xf')]('MailServerIn,\x20%s,\x20%s',_0x4aa246,_0x205e('0x8'));_0x319698(_0x4182e9[_0x205e('0x10')]['message']);}})[_0x205e('0x11')](function(_0x42a3f2){logger[_0x205e('0xc')]('MailServerIn,\x20%s,\x20%s',_0x4aa246,_0x42a3f2);_0x7d9a99(_0x42a3f2);});});}exports[_0x205e('0x12')]=function(_0x53a200){var _0x51a824=this;return new Promise(function(_0x189dea,_0x1e24df){return db['MailServerIn'][_0x205e('0x13')]({'raw':_0x53a200[_0x205e('0x14')]?_0x53a200[_0x205e('0x14')][_0x205e('0x15')]===undefined?!![]:![]:!![],'where':_0x53a200['options']?_0x53a200[_0x205e('0x14')][_0x205e('0x16')]||null:null,'attributes':_0x53a200[_0x205e('0x14')]?_0x53a200[_0x205e('0x14')]['attributes']||null:null,'limit':_0x53a200[_0x205e('0x14')]?_0x53a200['options'][_0x205e('0x17')]||null:null,'include':_0x53a200[_0x205e('0x14')]?_0x53a200[_0x205e('0x14')][_0x205e('0x18')]?_[_0x205e('0x19')](_0x53a200[_0x205e('0x14')][_0x205e('0x18')],function(_0x1277b9){return{'model':db[_0x1277b9[_0x205e('0x1a')]],'as':_0x1277b9['as'],'attributes':_0x1277b9[_0x205e('0x1b')],'include':_0x1277b9[_0x205e('0x18')]?_[_0x205e('0x19')](_0x1277b9[_0x205e('0x18')],function(_0x2a0373){return{'model':db[_0x2a0373['model']],'as':_0x2a0373['as'],'attributes':_0x2a0373[_0x205e('0x1b')],'include':_0x2a0373[_0x205e('0x18')]?_['map'](_0x2a0373[_0x205e('0x18')],function(_0x21af03){return{'model':db[_0x21af03['model']],'as':_0x21af03['as'],'attributes':_0x21af03['attributes']};}):[]};}):[]};}):[]:[]})[_0x205e('0x1c')](function(_0x324701){logger[_0x205e('0xf')](_0x205e('0x12'),_0x53a200);logger[_0x205e('0x9')](_0x205e('0x12'),_0x53a200,JSON[_0x205e('0xb')](_0x324701));_0x189dea(_0x324701);})[_0x205e('0x11')](function(_0x10ce10){logger[_0x205e('0xc')](_0x205e('0x12'),_0x10ce10[_0x205e('0xe')],_0x53a200);_0x1e24df(_0x51a824[_0x205e('0xc')](0x1f4,_0x10ce10[_0x205e('0xe')]));});});};
\ No newline at end of file
index 9e8baad..9aebb28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0xd7b049,_0x5d48d9){_0xd7b049=_0xd7b049-0x0;var _0x200caf=_0x7a54[_0xd7b049];return _0x200caf;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index 94c1821..cce5935 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadfa=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0x14c360,_0xeea136){var _0x49e3d7=function(_0x3954fa){while(--_0x3954fa){_0x14c360['push'](_0x14c360['shift']());}};_0x49e3d7(++_0xeea136);}(_0xadfa,0x13a));var _0xaadf=function(_0x176b14,_0x2b8f5c){_0x176b14=_0x176b14-0x0;var _0x53eabb=_0xadfa[_0x176b14];return _0x53eabb;};'use strict';var Sequelize=require(_0xaadf('0x0'));module[_0xaadf('0x1')]={'description':{'type':Sequelize[_0xaadf('0x2')]},'host':{'type':Sequelize[_0xaadf('0x2')]},'user':{'type':Sequelize[_0xaadf('0x2')]},'pass':{'type':Sequelize[_0xaadf('0x2')]},'port':{'type':Sequelize[_0xaadf('0x3')]},'secure':{'type':Sequelize[_0xaadf('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xaadf('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xbc9b=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbc9b,0x9e));var _0xbbc9=function(_0x5d68a2,_0x4304cf){_0x5d68a2=_0x5d68a2-0x0;var _0x5b3088=_0xbc9b[_0x5d68a2];return _0x5b3088;};'use strict';var Sequelize=require(_0xbbc9('0x0'));module[_0xbbc9('0x1')]={'description':{'type':Sequelize[_0xbbc9('0x2')]},'host':{'type':Sequelize[_0xbbc9('0x2')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0xbbc9('0x2')]},'port':{'type':Sequelize[_0xbbc9('0x3')]},'secure':{'type':Sequelize[_0xbbc9('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xbbc9('0x2')]},'authentication':{'type':Sequelize[_0xbbc9('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index 01a7cb1..9c1acd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7598=['name','map','MailServerOut','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','destroy','status','error','stack'];(function(_0x486eff,_0x5cb3b0){var _0x95293b=function(_0x25b947){while(--_0x25b947){_0x486eff['push'](_0x486eff['shift']());}};_0x95293b(++_0x5cb3b0);}(_0x7598,0xb6));var _0x8759=function(_0x4f1009,_0x19895b){_0x4f1009=_0x4f1009-0x0;var _0x2c9e6f=_0x7598[_0x4f1009];return _0x2c9e6f;};'use strict';var emlformat=require(_0x8759('0x0'));var rimraf=require(_0x8759('0x1'));var zipdir=require(_0x8759('0x2'));var jsonpatch=require(_0x8759('0x3'));var rp=require('request-promise');var moment=require(_0x8759('0x4'));var BPromise=require(_0x8759('0x5'));var Mustache=require(_0x8759('0x6'));var util=require(_0x8759('0x7'));var path=require(_0x8759('0x8'));var sox=require(_0x8759('0x9'));var csv=require(_0x8759('0xa'));var ejs=require(_0x8759('0xb'));var fs=require('fs');var fs_extra=require(_0x8759('0xc'));var _=require(_0x8759('0xd'));var squel=require(_0x8759('0xe'));var crypto=require(_0x8759('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x8759('0x10'));var toCsv=require(_0x8759('0xa'));var querystring=require(_0x8759('0x11'));var Papa=require(_0x8759('0x12'));var Redis=require(_0x8759('0x13'));var authService=require(_0x8759('0x14'));var qs=require(_0x8759('0x15'));var as=require(_0x8759('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8759('0x17'))('api');var utils=require(_0x8759('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x8759('0x19'));var db=require(_0x8759('0x1a'))['db'];function respondWithStatusCode(_0x5c4437,_0x3e7dcf){_0x3e7dcf=_0x3e7dcf||0xcc;return function(_0x4ad292){if(_0x4ad292){return _0x5c4437[_0x8759('0x1b')](_0x3e7dcf);}return _0x5c4437['status'](_0x3e7dcf)[_0x8759('0x1c')]();};}function respondWithResult(_0x396764,_0x3326d4){_0x3326d4=_0x3326d4||0xc8;return function(_0x4bbb90){if(_0x4bbb90){return _0x396764['status'](_0x3326d4)[_0x8759('0x1d')](_0x4bbb90);}};}function respondWithFilteredResult(_0x2c83b3,_0x3a172b){return function(_0x3db4ae){if(_0x3db4ae){var _0x186887=typeof _0x3a172b['offset']===_0x8759('0x1e')&&typeof _0x3a172b[_0x8759('0x1f')]===_0x8759('0x1e');var _0x2c534f=_0x3db4ae[_0x8759('0x20')];var _0xe5bce7=_0x186887?0x0:_0x3a172b['offset'];var _0x555495=_0x186887?_0x3db4ae['count']:_0x3a172b[_0x8759('0x21')]+_0x3a172b[_0x8759('0x1f')];var _0x5dc950;if(_0x555495>=_0x2c534f){_0x555495=_0x2c534f;_0x5dc950=0xc8;}else{_0x5dc950=0xce;}_0x2c83b3['status'](_0x5dc950);return _0x2c83b3['set'](_0x8759('0x22'),_0xe5bce7+'-'+_0x555495+'/'+_0x2c534f)[_0x8759('0x1d')](_0x3db4ae);}return null;};}function patchUpdates(_0x57e5dc){return function(_0x21c534){try{jsonpatch[_0x8759('0x23')](_0x21c534,_0x57e5dc,!![]);}catch(_0x340b0f){return BPromise[_0x8759('0x24')](_0x340b0f);}return _0x21c534['save']();};}function saveUpdates(_0x35466f,_0x30467a){return function(_0x303dab){if(_0x303dab){return _0x303dab[_0x8759('0x25')](_0x35466f)[_0x8759('0x26')](function(_0x5bdbec){return _0x5bdbec;});}return null;};}function removeEntity(_0x36905d,_0xddf6e8){return function(_0x2cabe0){if(_0x2cabe0){return _0x2cabe0[_0x8759('0x27')]()[_0x8759('0x26')](function(){_0x36905d[_0x8759('0x28')](0xcc)[_0x8759('0x1c')]();});}};}function handleEntityNotFound(_0x4bf503,_0x4eeeff){return function(_0x42981e){if(!_0x42981e){_0x4bf503['sendStatus'](0x194);}return _0x42981e;};}function handleError(_0x3a7a24,_0x2a2cae){_0x2a2cae=_0x2a2cae||0x1f4;return function(_0x29e556){logger[_0x8759('0x29')](_0x29e556[_0x8759('0x2a')]);if(_0x29e556[_0x8759('0x2b')]){delete _0x29e556[_0x8759('0x2b')];}_0x3a7a24[_0x8759('0x28')](_0x2a2cae)['send'](_0x29e556);};}exports['index']=function(_0x205cd4,_0x3d5dfa){var _0x54da64={},_0x3184c5={},_0x107474={'count':0x0,'rows':[]};var _0x2e9ce9=_[_0x8759('0x2c')](db[_0x8759('0x2d')]['rawAttributes'],function(_0x121a8e){return{'name':_0x121a8e[_0x8759('0x2e')],'type':_0x121a8e[_0x8759('0x2f')][_0x8759('0x30')]};});_0x3184c5['model']=_['map'](_0x2e9ce9,_0x8759('0x2b'));_0x3184c5[_0x8759('0x31')]=_[_0x8759('0x32')](_0x205cd4[_0x8759('0x31')]);_0x3184c5['filters']=_[_0x8759('0x33')](_0x3184c5['model'],_0x3184c5[_0x8759('0x31')]);_0x54da64[_0x8759('0x34')]=_[_0x8759('0x33')](_0x3184c5[_0x8759('0x35')],qs[_0x8759('0x36')](_0x205cd4[_0x8759('0x31')][_0x8759('0x36')]));_0x54da64['attributes']=_0x54da64[_0x8759('0x34')][_0x8759('0x37')]?_0x54da64[_0x8759('0x34')]:_0x3184c5['model'];if(!_0x205cd4[_0x8759('0x31')]['hasOwnProperty'](_0x8759('0x38'))){_0x54da64[_0x8759('0x1f')]=qs[_0x8759('0x1f')](_0x205cd4[_0x8759('0x31')]['limit']);_0x54da64[_0x8759('0x21')]=qs['offset'](_0x205cd4[_0x8759('0x31')]['offset']);}_0x54da64[_0x8759('0x39')]=qs[_0x8759('0x3a')](_0x205cd4[_0x8759('0x31')][_0x8759('0x3a')]);_0x54da64[_0x8759('0x3b')]=qs[_0x8759('0x3c')](_[_0x8759('0x3d')](_0x205cd4[_0x8759('0x31')],_0x3184c5[_0x8759('0x3c')]),_0x2e9ce9);if(_0x205cd4[_0x8759('0x31')]['filter']){_0x54da64[_0x8759('0x3b')]=_[_0x8759('0x3e')](_0x54da64[_0x8759('0x3b')],{'$or':_[_0x8759('0x2c')](_0x2e9ce9,function(_0x8e55ac){if(_0x8e55ac[_0x8759('0x2f')]!==_0x8759('0x3f')){var _0x386d42={};_0x386d42[_0x8e55ac[_0x8759('0x2b')]]={'$like':'%'+_0x205cd4['query'][_0x8759('0x40')]+'%'};return _0x386d42;}})});}_0x54da64=_[_0x8759('0x3e')]({},_0x54da64,_0x205cd4[_0x8759('0x41')]);var _0x975278={'where':_0x54da64['where']};return db['MailServerOut'][_0x8759('0x20')](_0x975278)['then'](function(_0x5cdf86){_0x107474[_0x8759('0x20')]=_0x5cdf86;if(_0x205cd4['query'][_0x8759('0x42')]){_0x54da64[_0x8759('0x43')]=[{'all':!![]}];}return db[_0x8759('0x2d')][_0x8759('0x44')](_0x54da64);})[_0x8759('0x26')](function(_0x5d84bc){_0x107474[_0x8759('0x45')]=_0x5d84bc;return _0x107474;})['then'](respondWithFilteredResult(_0x3d5dfa,_0x54da64))[_0x8759('0x46')](handleError(_0x3d5dfa,null));};exports['show']=function(_0x291cb1,_0x152592){var _0x2915f1={'raw':!![],'where':{'id':_0x291cb1[_0x8759('0x47')]['id']}},_0x266f2b={};_0x266f2b[_0x8759('0x35')]=_[_0x8759('0x32')](db[_0x8759('0x2d')]['rawAttributes']);_0x266f2b[_0x8759('0x31')]=_['keys'](_0x291cb1[_0x8759('0x31')]);_0x266f2b['filters']=_[_0x8759('0x33')](_0x266f2b['model'],_0x266f2b['query']);_0x2915f1['attributes']=_['intersection'](_0x266f2b[_0x8759('0x35')],qs[_0x8759('0x36')](_0x291cb1[_0x8759('0x31')][_0x8759('0x36')]));_0x2915f1[_0x8759('0x34')]=_0x2915f1[_0x8759('0x34')][_0x8759('0x37')]?_0x2915f1[_0x8759('0x34')]:_0x266f2b[_0x8759('0x35')];if(_0x291cb1[_0x8759('0x31')]['includeAll']){_0x2915f1[_0x8759('0x43')]=[{'all':!![]}];}_0x2915f1=_[_0x8759('0x3e')]({},_0x2915f1,_0x291cb1[_0x8759('0x41')]);return db[_0x8759('0x2d')][_0x8759('0x48')](_0x2915f1)['then'](handleEntityNotFound(_0x152592,null))[_0x8759('0x26')](respondWithResult(_0x152592,null))[_0x8759('0x46')](handleError(_0x152592,null));};exports[_0x8759('0x49')]=function(_0x1f419d,_0x3ee7c0){return db[_0x8759('0x2d')][_0x8759('0x49')](_0x1f419d['body'],{})[_0x8759('0x26')](respondWithResult(_0x3ee7c0,0xc9))['catch'](handleError(_0x3ee7c0,null));};exports['update']=function(_0x379ca8,_0x37d6c0){if(_0x379ca8[_0x8759('0x4a')]['id']){delete _0x379ca8['body']['id'];}return db[_0x8759('0x2d')][_0x8759('0x48')]({'where':{'id':_0x379ca8[_0x8759('0x47')]['id']}})[_0x8759('0x26')](handleEntityNotFound(_0x37d6c0,null))['then'](saveUpdates(_0x379ca8[_0x8759('0x4a')],null))['then'](respondWithResult(_0x37d6c0,null))[_0x8759('0x46')](handleError(_0x37d6c0,null));};exports[_0x8759('0x27')]=function(_0x39308e,_0x46e754){return db[_0x8759('0x2d')][_0x8759('0x48')]({'where':{'id':_0x39308e[_0x8759('0x47')]['id']}})[_0x8759('0x26')](handleEntityNotFound(_0x46e754,null))['then'](removeEntity(_0x46e754,null))[_0x8759('0x46')](handleError(_0x46e754,null));};
\ No newline at end of file
+var _0x6ad5=['name','send','index','MailServerOut','rawAttributes','type','key','model','query','filters','attributes','intersection','nolimit','order','sort','pick','where','merge','map','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','keys','fields','length','include','create','body','find','rimraf','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','stack'];(function(_0x4ec660,_0x50883c){var _0x4efd0d=function(_0x3871a9){while(--_0x3871a9){_0x4ec660['push'](_0x4ec660['shift']());}};_0x4efd0d(++_0x50883c);}(_0x6ad5,0x6b));var _0x56ad=function(_0x4e9689,_0x1c5cd8){_0x4e9689=_0x4e9689-0x0;var _0x2dbda2=_0x6ad5[_0x4e9689];return _0x2dbda2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x56ad('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x56ad('0x1'));var moment=require(_0x56ad('0x2'));var BPromise=require(_0x56ad('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x56ad('0x4'));var sox=require(_0x56ad('0x5'));var csv=require('to-csv');var ejs=require(_0x56ad('0x6'));var fs=require('fs');var fs_extra=require(_0x56ad('0x7'));var _=require(_0x56ad('0x8'));var squel=require('squel');var crypto=require(_0x56ad('0x9'));var jsforce=require(_0x56ad('0xa'));var deskjs=require(_0x56ad('0xb'));var toCsv=require('to-csv');var querystring=require(_0x56ad('0xc'));var Papa=require('papaparse');var Redis=require(_0x56ad('0xd'));var authService=require(_0x56ad('0xe'));var qs=require(_0x56ad('0xf'));var as=require(_0x56ad('0x10'));var hardwareService=require(_0x56ad('0x11'));var logger=require(_0x56ad('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x56ad('0x13'));var licenseUtil=require(_0x56ad('0x14'));var db=require(_0x56ad('0x15'))['db'];function respondWithStatusCode(_0x3cbeb5,_0x11a03c){_0x11a03c=_0x11a03c||0xcc;return function(_0x26ef13){if(_0x26ef13){return _0x3cbeb5[_0x56ad('0x16')](_0x11a03c);}return _0x3cbeb5[_0x56ad('0x17')](_0x11a03c)[_0x56ad('0x18')]();};}function respondWithResult(_0x49bfaa,_0xd6b956){_0xd6b956=_0xd6b956||0xc8;return function(_0x4bc8de){if(_0x4bc8de){return _0x49bfaa[_0x56ad('0x17')](_0xd6b956)['json'](_0x4bc8de);}};}function respondWithFilteredResult(_0x3c400d,_0x37a832){return function(_0x287876){if(_0x287876){var _0x4b158d=typeof _0x37a832[_0x56ad('0x19')]===_0x56ad('0x1a')&&typeof _0x37a832[_0x56ad('0x1b')]===_0x56ad('0x1a');var _0x88d258=_0x287876[_0x56ad('0x1c')];var _0x5ee572=_0x4b158d?0x0:_0x37a832['offset'];var _0x449d49=_0x4b158d?_0x287876['count']:_0x37a832[_0x56ad('0x19')]+_0x37a832[_0x56ad('0x1b')];var _0x37bd90;if(_0x449d49>=_0x88d258){_0x449d49=_0x88d258;_0x37bd90=0xc8;}else{_0x37bd90=0xce;}_0x3c400d['status'](_0x37bd90);return _0x3c400d[_0x56ad('0x1d')](_0x56ad('0x1e'),_0x5ee572+'-'+_0x449d49+'/'+_0x88d258)[_0x56ad('0x1f')](_0x287876);}return null;};}function patchUpdates(_0x3aafd2){return function(_0x409f56){try{jsonpatch[_0x56ad('0x20')](_0x409f56,_0x3aafd2,!![]);}catch(_0x5d8760){return BPromise[_0x56ad('0x21')](_0x5d8760);}return _0x409f56['save']();};}function saveUpdates(_0x250247,_0x18c28d){return function(_0x3a2053){if(_0x3a2053){return _0x3a2053['update'](_0x250247)[_0x56ad('0x22')](function(_0x5cf68e){return _0x5cf68e;});}return null;};}function removeEntity(_0x36d97c,_0x1940b4){return function(_0x5decaa){if(_0x5decaa){return _0x5decaa[_0x56ad('0x23')]()['then'](function(){_0x36d97c[_0x56ad('0x17')](0xcc)[_0x56ad('0x18')]();});}};}function handleEntityNotFound(_0x3fcd46,_0x572296){return function(_0xef2f7c){if(!_0xef2f7c){_0x3fcd46['sendStatus'](0x194);}return _0xef2f7c;};}function handleError(_0x2c6082,_0x30ac06){_0x30ac06=_0x30ac06||0x1f4;return function(_0x171676){logger['error'](_0x171676[_0x56ad('0x24')]);if(_0x171676['name']){delete _0x171676[_0x56ad('0x25')];}_0x2c6082[_0x56ad('0x17')](_0x30ac06)[_0x56ad('0x26')](_0x171676);};}exports[_0x56ad('0x27')]=function(_0x6618c6,_0x45cafb){var _0x100d87={},_0x59a06e={},_0x6211a3={'count':0x0,'rows':[]};var _0x2593fe=_['map'](db[_0x56ad('0x28')][_0x56ad('0x29')],function(_0x15fff1){return{'name':_0x15fff1['fieldName'],'type':_0x15fff1[_0x56ad('0x2a')][_0x56ad('0x2b')]};});_0x59a06e[_0x56ad('0x2c')]=_['map'](_0x2593fe,'name');_0x59a06e[_0x56ad('0x2d')]=_['keys'](_0x6618c6[_0x56ad('0x2d')]);_0x59a06e[_0x56ad('0x2e')]=_['intersection'](_0x59a06e[_0x56ad('0x2c')],_0x59a06e['query']);_0x100d87[_0x56ad('0x2f')]=_[_0x56ad('0x30')](_0x59a06e[_0x56ad('0x2c')],qs['fields'](_0x6618c6[_0x56ad('0x2d')]['fields']));_0x100d87[_0x56ad('0x2f')]=_0x100d87[_0x56ad('0x2f')]['length']?_0x100d87['attributes']:_0x59a06e[_0x56ad('0x2c')];if(!_0x6618c6[_0x56ad('0x2d')]['hasOwnProperty'](_0x56ad('0x31'))){_0x100d87[_0x56ad('0x1b')]=qs[_0x56ad('0x1b')](_0x6618c6['query']['limit']);_0x100d87['offset']=qs[_0x56ad('0x19')](_0x6618c6['query'][_0x56ad('0x19')]);}_0x100d87[_0x56ad('0x32')]=qs[_0x56ad('0x33')](_0x6618c6[_0x56ad('0x2d')][_0x56ad('0x33')]);_0x100d87['where']=qs['filters'](_[_0x56ad('0x34')](_0x6618c6[_0x56ad('0x2d')],_0x59a06e[_0x56ad('0x2e')]),_0x2593fe);if(_0x6618c6[_0x56ad('0x2d')]['filter']){_0x100d87[_0x56ad('0x35')]=_[_0x56ad('0x36')](_0x100d87[_0x56ad('0x35')],{'$or':_[_0x56ad('0x37')](_0x2593fe,function(_0x31ea21){if(_0x31ea21[_0x56ad('0x2a')]!==_0x56ad('0x38')){var _0x3b78ad={};_0x3b78ad[_0x31ea21['name']]={'$like':'%'+_0x6618c6[_0x56ad('0x2d')][_0x56ad('0x39')]+'%'};return _0x3b78ad;}})});}_0x100d87=_[_0x56ad('0x36')]({},_0x100d87,_0x6618c6[_0x56ad('0x3a')]);var _0x49340b={'where':_0x100d87[_0x56ad('0x35')]};return db[_0x56ad('0x28')][_0x56ad('0x1c')](_0x49340b)[_0x56ad('0x22')](function(_0x402943){_0x6211a3[_0x56ad('0x1c')]=_0x402943;if(_0x6618c6[_0x56ad('0x2d')][_0x56ad('0x3b')]){_0x100d87['include']=[{'all':!![]}];}return db[_0x56ad('0x28')][_0x56ad('0x3c')](_0x100d87);})[_0x56ad('0x22')](function(_0x4453d1){_0x6211a3[_0x56ad('0x3d')]=_0x4453d1;return _0x6211a3;})[_0x56ad('0x22')](respondWithFilteredResult(_0x45cafb,_0x100d87))[_0x56ad('0x3e')](handleError(_0x45cafb,null));};exports[_0x56ad('0x3f')]=function(_0x55565b,_0x1ec10f){var _0x6fb8b5={'raw':!![],'where':{'id':_0x55565b[_0x56ad('0x40')]['id']}},_0x27e61b={};_0x27e61b[_0x56ad('0x2c')]=_[_0x56ad('0x41')](db[_0x56ad('0x28')][_0x56ad('0x29')]);_0x27e61b[_0x56ad('0x2d')]=_['keys'](_0x55565b['query']);_0x27e61b[_0x56ad('0x2e')]=_[_0x56ad('0x30')](_0x27e61b['model'],_0x27e61b[_0x56ad('0x2d')]);_0x6fb8b5[_0x56ad('0x2f')]=_[_0x56ad('0x30')](_0x27e61b[_0x56ad('0x2c')],qs['fields'](_0x55565b[_0x56ad('0x2d')][_0x56ad('0x42')]));_0x6fb8b5[_0x56ad('0x2f')]=_0x6fb8b5[_0x56ad('0x2f')][_0x56ad('0x43')]?_0x6fb8b5[_0x56ad('0x2f')]:_0x27e61b[_0x56ad('0x2c')];if(_0x55565b[_0x56ad('0x2d')][_0x56ad('0x3b')]){_0x6fb8b5[_0x56ad('0x44')]=[{'all':!![]}];}_0x6fb8b5=_['merge']({},_0x6fb8b5,_0x55565b[_0x56ad('0x3a')]);return db[_0x56ad('0x28')]['find'](_0x6fb8b5)[_0x56ad('0x22')](handleEntityNotFound(_0x1ec10f,null))[_0x56ad('0x22')](respondWithResult(_0x1ec10f,null))['catch'](handleError(_0x1ec10f,null));};exports[_0x56ad('0x45')]=function(_0x3e06e9,_0x44605f){return db['MailServerOut']['create'](_0x3e06e9[_0x56ad('0x46')],{})[_0x56ad('0x22')](respondWithResult(_0x44605f,0xc9))[_0x56ad('0x3e')](handleError(_0x44605f,null));};exports['update']=function(_0x2ecdd7,_0x737718){if(_0x2ecdd7[_0x56ad('0x46')]['id']){delete _0x2ecdd7[_0x56ad('0x46')]['id'];}return db[_0x56ad('0x28')][_0x56ad('0x47')]({'where':{'id':_0x2ecdd7[_0x56ad('0x40')]['id']}})['then'](handleEntityNotFound(_0x737718,null))[_0x56ad('0x22')](saveUpdates(_0x2ecdd7['body'],null))['then'](respondWithResult(_0x737718,null))[_0x56ad('0x3e')](handleError(_0x737718,null));};exports['destroy']=function(_0x44f2d0,_0x49dfaa){return db[_0x56ad('0x28')]['find']({'where':{'id':_0x44f2d0[_0x56ad('0x40')]['id']}})[_0x56ad('0x22')](handleEntityNotFound(_0x49dfaa,null))[_0x56ad('0x22')](removeEntity(_0x49dfaa,null))[_0x56ad('0x3e')](handleError(_0x49dfaa,null));};
\ No newline at end of file
index a9768db..a50f03e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3484=['../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define','MailServerOut','mail_servers_out','lodash','util'];(function(_0x345568,_0x1d1413){var _0xd5022c=function(_0x254669){while(--_0x254669){_0x345568['push'](_0x345568['shift']());}};_0xd5022c(++_0x1d1413);}(_0x3484,0x1de));var _0x4348=function(_0x32ffef,_0xb2141a){_0x32ffef=_0x32ffef-0x0;var _0x3b1659=_0x3484[_0x32ffef];return _0x3b1659;};'use strict';var _=require(_0x4348('0x0'));var util=require(_0x4348('0x1'));var logger=require(_0x4348('0x2'))('api');var moment=require(_0x4348('0x3'));var BPromise=require('bluebird');var rp=require(_0x4348('0x4'));var fs=require('fs');var path=require(_0x4348('0x5'));var rimraf=require(_0x4348('0x6'));var config=require(_0x4348('0x7'));var attributes=require('./mailServerOut.attributes');module[_0x4348('0x8')]=function(_0x2fd5f5,_0x5b3a24){return _0x2fd5f5[_0x4348('0x9')](_0x4348('0xa'),attributes,{'tableName':_0x4348('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c56=['../../config/environment','./mailServerOut.attributes','MailServerOut','mail_servers_out','util','../../config/logger','bluebird','request-promise','rimraf'];(function(_0x3d326b,_0x8a8a1e){var _0x119033=function(_0x1af393){while(--_0x1af393){_0x3d326b['push'](_0x3d326b['shift']());}};_0x119033(++_0x8a8a1e);}(_0x4c56,0x175));var _0x64c5=function(_0xf25c5f,_0x11ff33){_0xf25c5f=_0xf25c5f-0x0;var _0x4e9211=_0x4c56[_0xf25c5f];return _0x4e9211;};'use strict';var _=require('lodash');var util=require(_0x64c5('0x0'));var logger=require(_0x64c5('0x1'))('api');var moment=require('moment');var BPromise=require(_0x64c5('0x2'));var rp=require(_0x64c5('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x64c5('0x4'));var config=require(_0x64c5('0x5'));var attributes=require(_0x64c5('0x6'));module['exports']=function(_0x280ffe,_0x58665d){return _0x280ffe['define'](_0x64c5('0x7'),attributes,{'tableName':_0x64c5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 75b3f6f..8799b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x4c1b30,_0x3298cd){var _0x1b2a90=function(_0x5020a1){while(--_0x5020a1){_0x4c1b30['push'](_0x4c1b30['shift']());}};_0x1b2a90(++_0x3298cd);}(_0x5f2f,0x73));var _0xf5f2=function(_0x118b90,_0x5bcd37){_0x118b90=_0x118b90-0x0;var _0x408e38=_0x5f2f[_0x118b90];return _0x408e38;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0xdecb09,_0x47dbe6){var _0x5e0a52=function(_0x382eed){while(--_0x382eed){_0xdecb09['push'](_0xdecb09['shift']());}};_0x5e0a52(++_0x47dbe6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xc4aa[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 0d0be61..9510349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x835f=['./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x15cc43,_0x3b5790){var _0x31eff8=function(_0x40410b){while(--_0x40410b){_0x15cc43['push'](_0x15cc43['shift']());}};_0x31eff8(++_0x3b5790);}(_0x835f,0x1c5));var _0xf835=function(_0x5774be,_0x2259d3){_0x5774be=_0x5774be-0x0;var _0x4914b4=_0x835f[_0x5774be];return _0x4914b4;};'use strict';var multer=require(_0xf835('0x0'));var util=require('util');var path=require(_0xf835('0x1'));var timeout=require(_0xf835('0x2'));var express=require(_0xf835('0x3'));var router=express[_0xf835('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf835('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf835('0x6'));var controller=require(_0xf835('0x7'));router[_0xf835('0x8')]('/',auth[_0xf835('0x9')](),controller[_0xf835('0xa')]);router[_0xf835('0x8')](_0xf835('0xb'),auth[_0xf835('0x9')](),controller[_0xf835('0xc')]);router[_0xf835('0x8')](_0xf835('0xd'),auth[_0xf835('0x9')](),controller[_0xf835('0xe')]);router[_0xf835('0xf')]('/',auth[_0xf835('0x9')](),controller['create']);router[_0xf835('0x10')](_0xf835('0xd'),auth[_0xf835('0x9')](),controller['update']);router[_0xf835('0x11')](_0xf835('0xd'),auth[_0xf835('0x9')](),controller[_0xf835('0x12')]);module[_0xf835('0x13')]=router;
\ No newline at end of file
+var _0x6a3d=['../../components/auth/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','/describe','post','put','/:id','update','delete','multer','util','path','connect-timeout','fs-extra'];(function(_0x477737,_0x560d5e){var _0x2ba7eb=function(_0x23f1d6){while(--_0x23f1d6){_0x477737['push'](_0x477737['shift']());}};_0x2ba7eb(++_0x560d5e);}(_0x6a3d,0x1c6));var _0xd6a3=function(_0x57413f,_0x4f0325){_0x57413f=_0x57413f-0x0;var _0x359a2f=_0x6a3d[_0x57413f];return _0x359a2f;};'use strict';var multer=require(_0xd6a3('0x0'));var util=require(_0xd6a3('0x1'));var path=require(_0xd6a3('0x2'));var timeout=require(_0xd6a3('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd6a3('0x4'));var auth=require(_0xd6a3('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd6a3('0x6'));var controller=require(_0xd6a3('0x7'));router['get']('/',auth[_0xd6a3('0x8')](),controller[_0xd6a3('0x9')]);router[_0xd6a3('0xa')](_0xd6a3('0xb'),auth[_0xd6a3('0x8')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0xd6a3('0xc')]('/',auth[_0xd6a3('0x8')](),controller['create']);router[_0xd6a3('0xd')](_0xd6a3('0xe'),auth[_0xd6a3('0x8')](),controller[_0xd6a3('0xf')]);router[_0xd6a3('0x10')]('/:id',auth[_0xd6a3('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 06976ef..8bac605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0689=['name','STRING','exports'];(function(_0x11b180,_0x503a9c){var _0x40c6a2=function(_0x347c21){while(--_0x347c21){_0x11b180['push'](_0x11b180['shift']());}};_0x40c6a2(++_0x503a9c);}(_0x0689,0x161));var _0x9068=function(_0x4b5ef8,_0x463086){_0x4b5ef8=_0x4b5ef8-0x0;var _0x20b85c=_0x0689[_0x4b5ef8];return _0x20b85c;};'use strict';var Sequelize=require('sequelize');module[_0x9068('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x9068('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9068('0x2')]}};
\ No newline at end of file
+var _0x15ef=['exports','STRING'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x15ef,0x80));var _0xf15e=function(_0x1e0e5b,_0x50a13d){_0x1e0e5b=_0x1e0e5b-0x0;var _0x108b05=_0x15ef[_0x1e0e5b];return _0x108b05;};'use strict';var Sequelize=require('sequelize');module[_0xf15e('0x0')]={'name':{'type':Sequelize[_0xf15e('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf15e('0x1')]}};
\ No newline at end of file
index 8663760..79aaeaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96de=['describe','eml-format','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','error','map','MailSubstatus','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','name','options','then','include','findAll','rows','show','params','rawAttributes','includeAll','find','catch','create','body'];(function(_0xf0c734,_0xd684d6){var _0x46be6c=function(_0x30e46f){while(--_0x30e46f){_0xf0c734['push'](_0xf0c734['shift']());}};_0x46be6c(++_0xd684d6);}(_0x96de,0x121));var _0xe96d=function(_0x12f1a0,_0x3f9463){_0x12f1a0=_0x12f1a0-0x0;var _0x1a3b8c=_0x96de[_0x12f1a0];return _0x1a3b8c;};'use strict';var emlformat=require(_0xe96d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe96d('0x1'));var rp=require('request-promise');var moment=require(_0xe96d('0x2'));var BPromise=require(_0xe96d('0x3'));var Mustache=require(_0xe96d('0x4'));var util=require('util');var path=require(_0xe96d('0x5'));var sox=require(_0xe96d('0x6'));var csv=require(_0xe96d('0x7'));var ejs=require(_0xe96d('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe96d('0x9'));var squel=require(_0xe96d('0xa'));var crypto=require(_0xe96d('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe96d('0x7'));var querystring=require(_0xe96d('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe96d('0xd'));var qs=require(_0xe96d('0xe'));var as=require(_0xe96d('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe96d('0x10'));var utils=require(_0xe96d('0x11'));var config=require(_0xe96d('0x12'));var licenseUtil=require(_0xe96d('0x13'));var db=require(_0xe96d('0x14'))['db'];function respondWithStatusCode(_0x32ae5f,_0x2e501e){_0x2e501e=_0x2e501e||0xcc;return function(_0x4fe280){if(_0x4fe280){return _0x32ae5f[_0xe96d('0x15')](_0x2e501e);}return _0x32ae5f['status'](_0x2e501e)[_0xe96d('0x16')]();};}function respondWithResult(_0x568886,_0x424ae7){_0x424ae7=_0x424ae7||0xc8;return function(_0x42b3ac){if(_0x42b3ac){return _0x568886['status'](_0x424ae7)[_0xe96d('0x17')](_0x42b3ac);}};}function respondWithFilteredResult(_0x5f2824,_0x1e05c4){return function(_0x5876ef){if(_0x5876ef){var _0x2f0a50=typeof _0x1e05c4[_0xe96d('0x18')]===_0xe96d('0x19')&&typeof _0x1e05c4['limit']===_0xe96d('0x19');var _0x455759=_0x5876ef[_0xe96d('0x1a')];var _0x1e1259=_0x2f0a50?0x0:_0x1e05c4[_0xe96d('0x18')];var _0x2171fa=_0x2f0a50?_0x5876ef[_0xe96d('0x1a')]:_0x1e05c4[_0xe96d('0x18')]+_0x1e05c4[_0xe96d('0x1b')];var _0x207200;if(_0x2171fa>=_0x455759){_0x2171fa=_0x455759;_0x207200=0xc8;}else{_0x207200=0xce;}_0x5f2824[_0xe96d('0x1c')](_0x207200);return _0x5f2824[_0xe96d('0x1d')](_0xe96d('0x1e'),_0x1e1259+'-'+_0x2171fa+'/'+_0x455759)[_0xe96d('0x17')](_0x5876ef);}return null;};}function patchUpdates(_0x44445c){return function(_0x573266){try{jsonpatch[_0xe96d('0x1f')](_0x573266,_0x44445c,!![]);}catch(_0xeaef3a){return BPromise[_0xe96d('0x20')](_0xeaef3a);}return _0x573266[_0xe96d('0x21')]();};}function saveUpdates(_0x118695,_0x5f03be){return function(_0x110055){if(_0x110055){return _0x110055[_0xe96d('0x22')](_0x118695)['then'](function(_0xb54f21){return _0xb54f21;});}return null;};}function removeEntity(_0x5f2e01,_0x1b0fd5){return function(_0x4e20dd){if(_0x4e20dd){return _0x4e20dd['destroy']()['then'](function(){_0x5f2e01[_0xe96d('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x217bbe,_0x197061){return function(_0x1c758d){if(!_0x1c758d){_0x217bbe['sendStatus'](0x194);}return _0x1c758d;};}function handleError(_0x4a2c72,_0xce357c){_0xce357c=_0xce357c||0x1f4;return function(_0x9f6635){logger[_0xe96d('0x23')](_0x9f6635['stack']);if(_0x9f6635['name']){delete _0x9f6635['name'];}_0x4a2c72[_0xe96d('0x1c')](_0xce357c)['send'](_0x9f6635);};}exports['index']=function(_0xb87fff,_0x598fd4){var _0x57791f={},_0x3b40ce={},_0x378747={'count':0x0,'rows':[]};var _0x3fcdd8=_[_0xe96d('0x24')](db[_0xe96d('0x25')]['rawAttributes'],function(_0x30a2a1){return{'name':_0x30a2a1[_0xe96d('0x26')],'type':_0x30a2a1['type'][_0xe96d('0x27')]};});_0x3b40ce[_0xe96d('0x28')]=_['map'](_0x3fcdd8,'name');_0x3b40ce['query']=_[_0xe96d('0x29')](_0xb87fff[_0xe96d('0x2a')]);_0x3b40ce[_0xe96d('0x2b')]=_[_0xe96d('0x2c')](_0x3b40ce[_0xe96d('0x28')],_0x3b40ce['query']);_0x57791f[_0xe96d('0x2d')]=_['intersection'](_0x3b40ce[_0xe96d('0x28')],qs[_0xe96d('0x2e')](_0xb87fff[_0xe96d('0x2a')][_0xe96d('0x2e')]));_0x57791f['attributes']=_0x57791f[_0xe96d('0x2d')][_0xe96d('0x2f')]?_0x57791f['attributes']:_0x3b40ce[_0xe96d('0x28')];if(!_0xb87fff[_0xe96d('0x2a')]['hasOwnProperty'](_0xe96d('0x30'))){_0x57791f['limit']=qs['limit'](_0xb87fff[_0xe96d('0x2a')]['limit']);_0x57791f['offset']=qs[_0xe96d('0x18')](_0xb87fff[_0xe96d('0x2a')][_0xe96d('0x18')]);}_0x57791f[_0xe96d('0x31')]=qs['sort'](_0xb87fff['query'][_0xe96d('0x32')]);_0x57791f['where']=qs['filters'](_[_0xe96d('0x33')](_0xb87fff[_0xe96d('0x2a')],_0x3b40ce['filters']),_0x3fcdd8);if(_0xb87fff[_0xe96d('0x2a')][_0xe96d('0x34')]){_0x57791f[_0xe96d('0x35')]=_[_0xe96d('0x36')](_0x57791f[_0xe96d('0x35')],{'$or':_[_0xe96d('0x24')](_0x3fcdd8,function(_0xe92e35){if(_0xe92e35[_0xe96d('0x37')]!==_0xe96d('0x38')){var _0x1ac17e={};_0x1ac17e[_0xe92e35[_0xe96d('0x39')]]={'$like':'%'+_0xb87fff[_0xe96d('0x2a')][_0xe96d('0x34')]+'%'};return _0x1ac17e;}})});}_0x57791f=_['merge']({},_0x57791f,_0xb87fff[_0xe96d('0x3a')]);var _0x5a71e2={'where':_0x57791f[_0xe96d('0x35')]};return db[_0xe96d('0x25')][_0xe96d('0x1a')](_0x5a71e2)[_0xe96d('0x3b')](function(_0x485eeb){_0x378747[_0xe96d('0x1a')]=_0x485eeb;if(_0xb87fff[_0xe96d('0x2a')]['includeAll']){_0x57791f[_0xe96d('0x3c')]=[{'all':!![]}];}return db[_0xe96d('0x25')][_0xe96d('0x3d')](_0x57791f);})[_0xe96d('0x3b')](function(_0xa1d9f6){_0x378747[_0xe96d('0x3e')]=_0xa1d9f6;return _0x378747;})[_0xe96d('0x3b')](respondWithFilteredResult(_0x598fd4,_0x57791f))['catch'](handleError(_0x598fd4,null));};exports[_0xe96d('0x3f')]=function(_0x289251,_0x3142e7){var _0x317242={'raw':!![],'where':{'id':_0x289251[_0xe96d('0x40')]['id']}},_0x33435f={};_0x33435f['model']=_[_0xe96d('0x29')](db[_0xe96d('0x25')][_0xe96d('0x41')]);_0x33435f[_0xe96d('0x2a')]=_[_0xe96d('0x29')](_0x289251[_0xe96d('0x2a')]);_0x33435f['filters']=_[_0xe96d('0x2c')](_0x33435f['model'],_0x33435f[_0xe96d('0x2a')]);_0x317242[_0xe96d('0x2d')]=_[_0xe96d('0x2c')](_0x33435f[_0xe96d('0x28')],qs['fields'](_0x289251[_0xe96d('0x2a')][_0xe96d('0x2e')]));_0x317242[_0xe96d('0x2d')]=_0x317242[_0xe96d('0x2d')][_0xe96d('0x2f')]?_0x317242['attributes']:_0x33435f[_0xe96d('0x28')];if(_0x289251['query'][_0xe96d('0x42')]){_0x317242[_0xe96d('0x3c')]=[{'all':!![]}];}_0x317242=_[_0xe96d('0x36')]({},_0x317242,_0x289251[_0xe96d('0x3a')]);return db[_0xe96d('0x25')][_0xe96d('0x43')](_0x317242)[_0xe96d('0x3b')](handleEntityNotFound(_0x3142e7,null))[_0xe96d('0x3b')](respondWithResult(_0x3142e7,null))[_0xe96d('0x44')](handleError(_0x3142e7,null));};exports[_0xe96d('0x45')]=function(_0x31fba5,_0xd7129a){return db[_0xe96d('0x25')]['create'](_0x31fba5[_0xe96d('0x46')],{})[_0xe96d('0x3b')](respondWithResult(_0xd7129a,0xc9))['catch'](handleError(_0xd7129a,null));};exports[_0xe96d('0x22')]=function(_0x2f159f,_0x567b2e){if(_0x2f159f['body']['id']){delete _0x2f159f['body']['id'];}return db['MailSubstatus'][_0xe96d('0x43')]({'where':{'id':_0x2f159f[_0xe96d('0x40')]['id']}})[_0xe96d('0x3b')](handleEntityNotFound(_0x567b2e,null))[_0xe96d('0x3b')](saveUpdates(_0x2f159f['body'],null))[_0xe96d('0x3b')](respondWithResult(_0x567b2e,null))[_0xe96d('0x44')](handleError(_0x567b2e,null));};exports['destroy']=function(_0x25a32d,_0x348487){return db[_0xe96d('0x25')][_0xe96d('0x43')]({'where':{'id':_0x25a32d[_0xe96d('0x40')]['id']}})[_0xe96d('0x3b')](handleEntityNotFound(_0x348487,null))[_0xe96d('0x3b')](removeEntity(_0x348487,null))[_0xe96d('0x44')](handleError(_0x348487,null));};exports['describe']=function(_0x4d2d5b,_0x44b5d0){return db[_0xe96d('0x25')][_0xe96d('0x47')]()['then'](respondWithResult(_0x44b5d0,null))['catch'](handleError(_0x44b5d0,null));};
\ No newline at end of file
+var _0x89c9=['json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','MailSubstatus','includeAll','include','rows','catch','show','params','keys','length','find','create','body','describe','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x89c9,0x1a4));var _0x989c=function(_0x414ff1,_0xf0462b){_0x414ff1=_0x414ff1-0x0;var _0x29c53f=_0x89c9[_0x414ff1];return _0x29c53f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x989c('0x0'));var zipdir=require(_0x989c('0x1'));var jsonpatch=require(_0x989c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x989c('0x3'));var Mustache=require(_0x989c('0x4'));var util=require(_0x989c('0x5'));var path=require(_0x989c('0x6'));var sox=require(_0x989c('0x7'));var csv=require('to-csv');var ejs=require(_0x989c('0x8'));var fs=require('fs');var fs_extra=require(_0x989c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x989c('0xa'));var querystring=require('querystring');var Papa=require(_0x989c('0xb'));var Redis=require('ioredis');var authService=require(_0x989c('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x989c('0xd'));var hardwareService=require(_0x989c('0xe'));var logger=require(_0x989c('0xf'))(_0x989c('0x10'));var utils=require(_0x989c('0x11'));var config=require(_0x989c('0x12'));var licenseUtil=require(_0x989c('0x13'));var db=require(_0x989c('0x14'))['db'];function respondWithStatusCode(_0x49ef18,_0x170392){_0x170392=_0x170392||0xcc;return function(_0x201b34){if(_0x201b34){return _0x49ef18[_0x989c('0x15')](_0x170392);}return _0x49ef18[_0x989c('0x16')](_0x170392)[_0x989c('0x17')]();};}function respondWithResult(_0x195d83,_0x24dcf2){_0x24dcf2=_0x24dcf2||0xc8;return function(_0x739380){if(_0x739380){return _0x195d83[_0x989c('0x16')](_0x24dcf2)[_0x989c('0x18')](_0x739380);}};}function respondWithFilteredResult(_0x2be399,_0x56758b){return function(_0x3d3d65){if(_0x3d3d65){var _0x322b89=typeof _0x56758b[_0x989c('0x19')]==='undefined'&&typeof _0x56758b[_0x989c('0x1a')]===_0x989c('0x1b');var _0x2875be=_0x3d3d65[_0x989c('0x1c')];var _0x490b7c=_0x322b89?0x0:_0x56758b['offset'];var _0x2715d3=_0x322b89?_0x3d3d65[_0x989c('0x1c')]:_0x56758b[_0x989c('0x19')]+_0x56758b[_0x989c('0x1a')];var _0x7b7afd;if(_0x2715d3>=_0x2875be){_0x2715d3=_0x2875be;_0x7b7afd=0xc8;}else{_0x7b7afd=0xce;}_0x2be399['status'](_0x7b7afd);return _0x2be399[_0x989c('0x1d')](_0x989c('0x1e'),_0x490b7c+'-'+_0x2715d3+'/'+_0x2875be)['json'](_0x3d3d65);}return null;};}function patchUpdates(_0x1e8785){return function(_0x2b6d72){try{jsonpatch[_0x989c('0x1f')](_0x2b6d72,_0x1e8785,!![]);}catch(_0x205df2){return BPromise[_0x989c('0x20')](_0x205df2);}return _0x2b6d72[_0x989c('0x21')]();};}function saveUpdates(_0x39bd38,_0xdb3db7){return function(_0x25e378){if(_0x25e378){return _0x25e378[_0x989c('0x22')](_0x39bd38)[_0x989c('0x23')](function(_0x4412d2){return _0x4412d2;});}return null;};}function removeEntity(_0x11c3f1,_0x2f6f1f){return function(_0x1a0513){if(_0x1a0513){return _0x1a0513[_0x989c('0x24')]()[_0x989c('0x23')](function(){_0x11c3f1['status'](0xcc)[_0x989c('0x17')]();});}};}function handleEntityNotFound(_0x33b072,_0x225e70){return function(_0x1f7d82){if(!_0x1f7d82){_0x33b072['sendStatus'](0x194);}return _0x1f7d82;};}function handleError(_0x3d0b6b,_0x6c5168){_0x6c5168=_0x6c5168||0x1f4;return function(_0x212335){logger[_0x989c('0x25')](_0x212335['stack']);if(_0x212335[_0x989c('0x26')]){delete _0x212335[_0x989c('0x26')];}_0x3d0b6b[_0x989c('0x16')](_0x6c5168)[_0x989c('0x27')](_0x212335);};}exports[_0x989c('0x28')]=function(_0x1fa9de,_0x373511){var _0x1a527a={},_0x52d02c={},_0x588ede={'count':0x0,'rows':[]};var _0x657307=_[_0x989c('0x29')](db['MailSubstatus'][_0x989c('0x2a')],function(_0x51f3e5){return{'name':_0x51f3e5[_0x989c('0x2b')],'type':_0x51f3e5[_0x989c('0x2c')][_0x989c('0x2d')]};});_0x52d02c[_0x989c('0x2e')]=_[_0x989c('0x29')](_0x657307,_0x989c('0x26'));_0x52d02c['query']=_['keys'](_0x1fa9de[_0x989c('0x2f')]);_0x52d02c[_0x989c('0x30')]=_['intersection'](_0x52d02c[_0x989c('0x2e')],_0x52d02c[_0x989c('0x2f')]);_0x1a527a['attributes']=_[_0x989c('0x31')](_0x52d02c[_0x989c('0x2e')],qs[_0x989c('0x32')](_0x1fa9de[_0x989c('0x2f')][_0x989c('0x32')]));_0x1a527a['attributes']=_0x1a527a[_0x989c('0x33')]['length']?_0x1a527a['attributes']:_0x52d02c[_0x989c('0x2e')];if(!_0x1fa9de[_0x989c('0x2f')]['hasOwnProperty'](_0x989c('0x34'))){_0x1a527a[_0x989c('0x1a')]=qs[_0x989c('0x1a')](_0x1fa9de['query'][_0x989c('0x1a')]);_0x1a527a[_0x989c('0x19')]=qs[_0x989c('0x19')](_0x1fa9de[_0x989c('0x2f')][_0x989c('0x19')]);}_0x1a527a[_0x989c('0x35')]=qs[_0x989c('0x36')](_0x1fa9de[_0x989c('0x2f')][_0x989c('0x36')]);_0x1a527a[_0x989c('0x37')]=qs['filters'](_[_0x989c('0x38')](_0x1fa9de[_0x989c('0x2f')],_0x52d02c['filters']),_0x657307);if(_0x1fa9de[_0x989c('0x2f')][_0x989c('0x39')]){_0x1a527a[_0x989c('0x37')]=_['merge'](_0x1a527a['where'],{'$or':_[_0x989c('0x29')](_0x657307,function(_0x4d99cf){if(_0x4d99cf[_0x989c('0x2c')]!==_0x989c('0x3a')){var _0x7fd3a6={};_0x7fd3a6[_0x4d99cf['name']]={'$like':'%'+_0x1fa9de[_0x989c('0x2f')]['filter']+'%'};return _0x7fd3a6;}})});}_0x1a527a=_[_0x989c('0x3b')]({},_0x1a527a,_0x1fa9de[_0x989c('0x3c')]);var _0x5118b5={'where':_0x1a527a[_0x989c('0x37')]};return db[_0x989c('0x3d')][_0x989c('0x1c')](_0x5118b5)['then'](function(_0x3d4476){_0x588ede['count']=_0x3d4476;if(_0x1fa9de[_0x989c('0x2f')][_0x989c('0x3e')]){_0x1a527a[_0x989c('0x3f')]=[{'all':!![]}];}return db[_0x989c('0x3d')]['findAll'](_0x1a527a);})['then'](function(_0xb33a1c){_0x588ede[_0x989c('0x40')]=_0xb33a1c;return _0x588ede;})['then'](respondWithFilteredResult(_0x373511,_0x1a527a))[_0x989c('0x41')](handleError(_0x373511,null));};exports[_0x989c('0x42')]=function(_0x3eb767,_0x5cca6b){var _0x54696c={'raw':!![],'where':{'id':_0x3eb767[_0x989c('0x43')]['id']}},_0xd88593={};_0xd88593[_0x989c('0x2e')]=_[_0x989c('0x44')](db['MailSubstatus'][_0x989c('0x2a')]);_0xd88593['query']=_['keys'](_0x3eb767[_0x989c('0x2f')]);_0xd88593['filters']=_[_0x989c('0x31')](_0xd88593[_0x989c('0x2e')],_0xd88593['query']);_0x54696c[_0x989c('0x33')]=_[_0x989c('0x31')](_0xd88593[_0x989c('0x2e')],qs[_0x989c('0x32')](_0x3eb767[_0x989c('0x2f')][_0x989c('0x32')]));_0x54696c[_0x989c('0x33')]=_0x54696c[_0x989c('0x33')][_0x989c('0x45')]?_0x54696c[_0x989c('0x33')]:_0xd88593[_0x989c('0x2e')];if(_0x3eb767['query'][_0x989c('0x3e')]){_0x54696c[_0x989c('0x3f')]=[{'all':!![]}];}_0x54696c=_[_0x989c('0x3b')]({},_0x54696c,_0x3eb767['options']);return db[_0x989c('0x3d')][_0x989c('0x46')](_0x54696c)[_0x989c('0x23')](handleEntityNotFound(_0x5cca6b,null))[_0x989c('0x23')](respondWithResult(_0x5cca6b,null))[_0x989c('0x41')](handleError(_0x5cca6b,null));};exports[_0x989c('0x47')]=function(_0x41add7,_0x2f89b8){return db[_0x989c('0x3d')][_0x989c('0x47')](_0x41add7[_0x989c('0x48')],{})['then'](respondWithResult(_0x2f89b8,0xc9))[_0x989c('0x41')](handleError(_0x2f89b8,null));};exports[_0x989c('0x22')]=function(_0x2d5402,_0x4ab390){if(_0x2d5402[_0x989c('0x48')]['id']){delete _0x2d5402[_0x989c('0x48')]['id'];}return db[_0x989c('0x3d')]['find']({'where':{'id':_0x2d5402[_0x989c('0x43')]['id']}})[_0x989c('0x23')](handleEntityNotFound(_0x4ab390,null))[_0x989c('0x23')](saveUpdates(_0x2d5402[_0x989c('0x48')],null))[_0x989c('0x23')](respondWithResult(_0x4ab390,null))[_0x989c('0x41')](handleError(_0x4ab390,null));};exports[_0x989c('0x24')]=function(_0x512673,_0x34164b){return db['MailSubstatus'][_0x989c('0x46')]({'where':{'id':_0x512673[_0x989c('0x43')]['id']}})[_0x989c('0x23')](handleEntityNotFound(_0x34164b,null))[_0x989c('0x23')](removeEntity(_0x34164b,null))[_0x989c('0x41')](handleError(_0x34164b,null));};exports['describe']=function(_0x5b944f,_0xdcae77){return db[_0x989c('0x3d')][_0x989c('0x49')]()['then'](respondWithResult(_0xdcae77,null))[_0x989c('0x41')](handleError(_0xdcae77,null));};
\ No newline at end of file
index 925dbd1..1a1a799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b6=['util','../../config/logger','api','moment','bluebird','path','rimraf','define','MailSubstatus','mail_substatuses'];(function(_0x3e881d,_0x5a8677){var _0x2b2610=function(_0xfae8f7){while(--_0xfae8f7){_0x3e881d['push'](_0x3e881d['shift']());}};_0x2b2610(++_0x5a8677);}(_0x64b6,0x96));var _0x664b=function(_0x5b1b21,_0x26c3e8){_0x5b1b21=_0x5b1b21-0x0;var _0x4e0d1a=_0x64b6[_0x5b1b21];return _0x4e0d1a;};'use strict';var _=require('lodash');var util=require(_0x664b('0x0'));var logger=require(_0x664b('0x1'))(_0x664b('0x2'));var moment=require(_0x664b('0x3'));var BPromise=require(_0x664b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x664b('0x5'));var rimraf=require(_0x664b('0x6'));var config=require('../../config/environment');var attributes=require('./mailSubstatus.attributes');module['exports']=function(_0x53de76,_0x27cb79){return _0x53de76[_0x664b('0x7')](_0x664b('0x8'),attributes,{'tableName':_0x664b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1338=['MailSubstatus','mail_substatuses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','define'];(function(_0x1153ff,_0x2bb354){var _0xbc230a=function(_0x179812){while(--_0x179812){_0x1153ff['push'](_0x1153ff['shift']());}};_0xbc230a(++_0x2bb354);}(_0x1338,0x1ec));var _0x8133=function(_0x4727c6,_0x5c3936){_0x4727c6=_0x4727c6-0x0;var _0x36a7b4=_0x1338[_0x4727c6];return _0x36a7b4;};'use strict';var _=require(_0x8133('0x0'));var util=require(_0x8133('0x1'));var logger=require(_0x8133('0x2'))(_0x8133('0x3'));var moment=require(_0x8133('0x4'));var BPromise=require(_0x8133('0x5'));var rp=require(_0x8133('0x6'));var fs=require('fs');var path=require(_0x8133('0x7'));var rimraf=require(_0x8133('0x8'));var config=require(_0x8133('0x9'));var attributes=require(_0x8133('0xa'));module['exports']=function(_0x1d973d,_0x418264){return _0x1d973d[_0x8133('0xb')](_0x8133('0xc'),attributes,{'tableName':_0x8133('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1d48c55..6333ed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7851=['error','message','info','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x55d829,_0x43f06c){var _0x52163b=function(_0x493cd8){while(--_0x493cd8){_0x55d829['push'](_0x55d829['shift']());}};_0x52163b(++_0x43f06c);}(_0x7851,0x194));var _0x1785=function(_0x117b62,_0x127540){_0x117b62=_0x117b62-0x0;var _0x526fc3=_0x7851[_0x117b62];return _0x526fc3;};'use strict';var _=require('lodash');var util=require(_0x1785('0x0'));var moment=require(_0x1785('0x1'));var BPromise=require(_0x1785('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1785('0x3'));var db=require(_0x1785('0x4'))['db'];var utils=require(_0x1785('0x5'));var logger=require('../../config/logger')(_0x1785('0x6'));var config=require('../../config/environment');var jayson=require(_0x1785('0x7'));var client=jayson['client'][_0x1785('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4e9987,_0x1476e2,_0x4d9ed3){return new BPromise(function(_0x5f4e02,_0x459c89){return client[_0x1785('0x9')](_0x4e9987,_0x4d9ed3)[_0x1785('0xa')](function(_0x518e89){logger['info'](_0x1785('0xb'),_0x1476e2,_0x1785('0xc'));logger[_0x1785('0xd')](_0x1785('0xe'),_0x1476e2,'request\x20sent',JSON[_0x1785('0xf')](_0x518e89));if(_0x518e89[_0x1785('0x10')]){if(_0x518e89[_0x1785('0x10')]['code']===0x1f4){logger[_0x1785('0x10')](_0x1785('0xb'),_0x1476e2,_0x518e89['error'][_0x1785('0x11')]);return _0x459c89(_0x518e89[_0x1785('0x10')][_0x1785('0x11')]);}logger[_0x1785('0x10')](_0x1785('0xb'),_0x1476e2,_0x518e89[_0x1785('0x10')][_0x1785('0x11')]);return _0x5f4e02(_0x518e89[_0x1785('0x10')][_0x1785('0x11')]);}else{logger[_0x1785('0x12')](_0x1785('0xb'),_0x1476e2,_0x1785('0xc'));_0x5f4e02(_0x518e89['result'][_0x1785('0x11')]);}})[_0x1785('0x13')](function(_0x3015b5){logger[_0x1785('0x10')](_0x1785('0xb'),_0x1476e2,_0x3015b5);_0x459c89(_0x3015b5);});});}
\ No newline at end of file
+var _0x992d=['catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x4cb272,_0x52c0e9){var _0x57b4aa=function(_0x1efefb){while(--_0x1efefb){_0x4cb272['push'](_0x4cb272['shift']());}};_0x57b4aa(++_0x52c0e9);}(_0x992d,0xa9));var _0xd992=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x992d[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xd992('0x0'));var util=require(_0xd992('0x1'));var moment=require('moment');var BPromise=require(_0xd992('0x2'));var rs=require(_0xd992('0x3'));var fs=require('fs');var Redis=require(_0xd992('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd992('0x5'))(_0xd992('0x6'));var config=require(_0xd992('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd992('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5f1a6c,_0x43c20f,_0x3d002e){return new BPromise(function(_0x4106c2,_0x2ae17a){return client[_0xd992('0x9')](_0x5f1a6c,_0x3d002e)['then'](function(_0x331a98){logger[_0xd992('0xa')](_0xd992('0xb'),_0x43c20f,_0xd992('0xc'));logger[_0xd992('0xd')](_0xd992('0xe'),_0x43c20f,_0xd992('0xc'),JSON[_0xd992('0xf')](_0x331a98));if(_0x331a98[_0xd992('0x10')]){if(_0x331a98[_0xd992('0x10')][_0xd992('0x11')]===0x1f4){logger[_0xd992('0x10')](_0xd992('0xb'),_0x43c20f,_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);return _0x2ae17a(_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);}logger[_0xd992('0x10')](_0xd992('0xb'),_0x43c20f,_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);return _0x4106c2(_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);}else{logger[_0xd992('0xa')](_0xd992('0xb'),_0x43c20f,_0xd992('0xc'));_0x4106c2(_0x331a98[_0xd992('0x13')]['message']);}})[_0xd992('0x14')](function(_0x14bd59){logger[_0xd992('0x10')]('MailSubstatus,\x20%s,\x20%s',_0x43c20f,_0x14bd59);_0x2ae17a(_0x14bd59);});});}
\ No newline at end of file
index 6ffe457..7ea2f31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7840=['./mailTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','post','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xc0a38e,_0x1907cc){var _0x3eaeee=function(_0x347a0e){while(--_0x347a0e){_0xc0a38e['push'](_0xc0a38e['shift']());}};_0x3eaeee(++_0x1907cc);}(_0x7840,0xd3));var _0x0784=function(_0x37cdae,_0x4092ee){_0x37cdae=_0x37cdae-0x0;var _0x52f50d=_0x7840[_0x37cdae];return _0x52f50d;};'use strict';var multer=require(_0x0784('0x0'));var util=require(_0x0784('0x1'));var path=require(_0x0784('0x2'));var timeout=require(_0x0784('0x3'));var express=require(_0x0784('0x4'));var router=express[_0x0784('0x5')]();var fs_extra=require(_0x0784('0x6'));var auth=require(_0x0784('0x7'));var interaction=require(_0x0784('0x8'));var config=require('../../config/environment');var controller=require(_0x0784('0x9'));router[_0x0784('0xa')]('/',auth[_0x0784('0xb')](),controller['index']);router[_0x0784('0xa')](_0x0784('0xc'),auth[_0x0784('0xb')](),controller[_0x0784('0xd')]);router['get'](_0x0784('0xe'),auth[_0x0784('0xb')](),controller['show']);router[_0x0784('0xf')]('/',auth['isAuthenticated'](),controller[_0x0784('0x10')]);router['put']('/:id',auth[_0x0784('0xb')](),controller['update']);router[_0x0784('0x11')](_0x0784('0xe'),auth['isAuthenticated'](),controller[_0x0784('0x12')]);module[_0x0784('0x13')]=router;
\ No newline at end of file
+var _0xda89=['create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post'];(function(_0x4a7b64,_0x16733c){var _0x500da6=function(_0x3454da){while(--_0x3454da){_0x4a7b64['push'](_0x4a7b64['shift']());}};_0x500da6(++_0x16733c);}(_0xda89,0xd4));var _0x9da8=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0xda89[_0x50aa2e];return _0x5e07f0;};'use strict';var multer=require(_0x9da8('0x0'));var util=require(_0x9da8('0x1'));var path=require(_0x9da8('0x2'));var timeout=require(_0x9da8('0x3'));var express=require(_0x9da8('0x4'));var router=express[_0x9da8('0x5')]();var fs_extra=require(_0x9da8('0x6'));var auth=require(_0x9da8('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x9da8('0x8'));var controller=require(_0x9da8('0x9'));router['get']('/',auth[_0x9da8('0xa')](),controller[_0x9da8('0xb')]);router[_0x9da8('0xc')](_0x9da8('0xd'),auth['isAuthenticated'](),controller[_0x9da8('0xe')]);router[_0x9da8('0xc')](_0x9da8('0xf'),auth[_0x9da8('0xa')](),controller[_0x9da8('0x10')]);router[_0x9da8('0x11')]('/',auth[_0x9da8('0xa')](),controller[_0x9da8('0x12')]);router[_0x9da8('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x9da8('0x14')]);router[_0x9da8('0x15')](_0x9da8('0xf'),auth[_0x9da8('0xa')](),controller[_0x9da8('0x16')]);module['exports']=router;
\ No newline at end of file
index 91791ac..89a00a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x3b62b4,_0x2059ed){var _0x1b9f17=function(_0x43ec1d){while(--_0x43ec1d){_0x3b62b4['push'](_0x3b62b4['shift']());}};_0x1b9f17(++_0x2059ed);}(_0x008c,0x188));var _0xc008=function(_0x31e94f,_0x42ecd6){_0x31e94f=_0x31e94f-0x0;var _0x1b8494=_0x008c[_0x31e94f];return _0x1b8494;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5959c9,_0x2ed153){var _0x4ffcbc=function(_0x459b7a){while(--_0x459b7a){_0x5959c9['push'](_0x5959c9['shift']());}};_0x4ffcbc(++_0x2ed153);}(_0x9bde,0xe1));var _0xe9bd=function(_0x3d4b32,_0x489bb1){_0x3d4b32=_0x3d4b32-0x0;var _0x39ea96=_0x9bde[_0x3d4b32];return _0x39ea96;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index b21ba62..e788b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0260=['rawAttributes','find','create','body','describe','eml-format','rimraf','request-promise','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','Content-Range','update','then','destroy','error','stack','name','send','MailTransferReport','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','show','params'];(function(_0x3d893a,_0x42671c){var _0x1b49d6=function(_0x41b767){while(--_0x41b767){_0x3d893a['push'](_0x3d893a['shift']());}};_0x1b49d6(++_0x42671c);}(_0x0260,0xda));var _0x0026=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x0260[_0x126558];return _0x1f6d14;};'use strict';var emlformat=require(_0x0026('0x0'));var rimraf=require(_0x0026('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0026('0x2'));var moment=require('moment');var BPromise=require(_0x0026('0x3'));var Mustache=require(_0x0026('0x4'));var util=require('util');var path=require(_0x0026('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0026('0x6'));var _=require(_0x0026('0x7'));var squel=require(_0x0026('0x8'));var crypto=require(_0x0026('0x9'));var jsforce=require(_0x0026('0xa'));var deskjs=require(_0x0026('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0026('0xc'));var Papa=require(_0x0026('0xd'));var Redis=require(_0x0026('0xe'));var authService=require(_0x0026('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0026('0x10'));var logger=require(_0x0026('0x11'))(_0x0026('0x12'));var utils=require(_0x0026('0x13'));var config=require(_0x0026('0x14'));var licenseUtil=require(_0x0026('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b1cf1,_0x3781c2){_0x3781c2=_0x3781c2||0xcc;return function(_0x25a040){if(_0x25a040){return _0x4b1cf1[_0x0026('0x16')](_0x3781c2);}return _0x4b1cf1[_0x0026('0x17')](_0x3781c2)[_0x0026('0x18')]();};}function respondWithResult(_0x222809,_0x250e92){_0x250e92=_0x250e92||0xc8;return function(_0x2bc8bb){if(_0x2bc8bb){return _0x222809[_0x0026('0x17')](_0x250e92)[_0x0026('0x19')](_0x2bc8bb);}};}function respondWithFilteredResult(_0x223e06,_0x187ac9){return function(_0xf07a3){if(_0xf07a3){var _0x4ed42d=typeof _0x187ac9[_0x0026('0x1a')]===_0x0026('0x1b')&&typeof _0x187ac9['limit']===_0x0026('0x1b');var _0x26a511=_0xf07a3['count'];var _0x58d523=_0x4ed42d?0x0:_0x187ac9[_0x0026('0x1a')];var _0x15d6d0=_0x4ed42d?_0xf07a3['count']:_0x187ac9[_0x0026('0x1a')]+_0x187ac9[_0x0026('0x1c')];var _0x4801e2;if(_0x15d6d0>=_0x26a511){_0x15d6d0=_0x26a511;_0x4801e2=0xc8;}else{_0x4801e2=0xce;}_0x223e06[_0x0026('0x17')](_0x4801e2);return _0x223e06['set'](_0x0026('0x1d'),_0x58d523+'-'+_0x15d6d0+'/'+_0x26a511)['json'](_0xf07a3);}return null;};}function patchUpdates(_0x549678){return function(_0x31a241){try{jsonpatch['apply'](_0x31a241,_0x549678,!![]);}catch(_0x4825ef){return BPromise['reject'](_0x4825ef);}return _0x31a241['save']();};}function saveUpdates(_0x1d5915,_0x5e1bdd){return function(_0x50bdae){if(_0x50bdae){return _0x50bdae[_0x0026('0x1e')](_0x1d5915)[_0x0026('0x1f')](function(_0x1d084d){return _0x1d084d;});}return null;};}function removeEntity(_0x1e3be4,_0x41e38b){return function(_0x47c68b){if(_0x47c68b){return _0x47c68b[_0x0026('0x20')]()[_0x0026('0x1f')](function(){_0x1e3be4[_0x0026('0x17')](0xcc)[_0x0026('0x18')]();});}};}function handleEntityNotFound(_0x5d4b2d,_0x343231){return function(_0x44d7ac){if(!_0x44d7ac){_0x5d4b2d['sendStatus'](0x194);}return _0x44d7ac;};}function handleError(_0x460844,_0x328780){_0x328780=_0x328780||0x1f4;return function(_0x439c1c){logger[_0x0026('0x21')](_0x439c1c[_0x0026('0x22')]);if(_0x439c1c['name']){delete _0x439c1c[_0x0026('0x23')];}_0x460844[_0x0026('0x17')](_0x328780)[_0x0026('0x24')](_0x439c1c);};}exports['index']=function(_0x3fd8ef,_0x21b133){var _0xf225f4={},_0x951bc8={},_0x3f10f1={'count':0x0,'rows':[]};var _0x314bcb=_['map'](db[_0x0026('0x25')]['rawAttributes'],function(_0x5ecab1){return{'name':_0x5ecab1['fieldName'],'type':_0x5ecab1['type'][_0x0026('0x26')]};});_0x951bc8[_0x0026('0x27')]=_[_0x0026('0x28')](_0x314bcb,_0x0026('0x23'));_0x951bc8[_0x0026('0x29')]=_[_0x0026('0x2a')](_0x3fd8ef[_0x0026('0x29')]);_0x951bc8[_0x0026('0x2b')]=_[_0x0026('0x2c')](_0x951bc8[_0x0026('0x27')],_0x951bc8[_0x0026('0x29')]);_0xf225f4[_0x0026('0x2d')]=_[_0x0026('0x2c')](_0x951bc8[_0x0026('0x27')],qs[_0x0026('0x2e')](_0x3fd8ef[_0x0026('0x29')][_0x0026('0x2e')]));_0xf225f4[_0x0026('0x2d')]=_0xf225f4[_0x0026('0x2d')][_0x0026('0x2f')]?_0xf225f4[_0x0026('0x2d')]:_0x951bc8[_0x0026('0x27')];if(!_0x3fd8ef['query'][_0x0026('0x30')](_0x0026('0x31'))){_0xf225f4[_0x0026('0x1c')]=qs[_0x0026('0x1c')](_0x3fd8ef['query'][_0x0026('0x1c')]);_0xf225f4['offset']=qs[_0x0026('0x1a')](_0x3fd8ef[_0x0026('0x29')]['offset']);}_0xf225f4[_0x0026('0x32')]=qs[_0x0026('0x33')](_0x3fd8ef['query'][_0x0026('0x33')]);_0xf225f4[_0x0026('0x34')]=qs[_0x0026('0x2b')](_['pick'](_0x3fd8ef[_0x0026('0x29')],_0x951bc8[_0x0026('0x2b')]),_0x314bcb);if(_0x3fd8ef[_0x0026('0x29')][_0x0026('0x35')]){_0xf225f4[_0x0026('0x34')]=_['merge'](_0xf225f4[_0x0026('0x34')],{'$or':_[_0x0026('0x28')](_0x314bcb,function(_0x400a25){if(_0x400a25[_0x0026('0x36')]!==_0x0026('0x37')){var _0x25af43={};_0x25af43[_0x400a25['name']]={'$like':'%'+_0x3fd8ef['query'][_0x0026('0x35')]+'%'};return _0x25af43;}})});}_0xf225f4=_[_0x0026('0x38')]({},_0xf225f4,_0x3fd8ef[_0x0026('0x39')]);var _0x4413d9={'where':_0xf225f4[_0x0026('0x34')]};return db[_0x0026('0x25')][_0x0026('0x3a')](_0x4413d9)[_0x0026('0x1f')](function(_0x3f8967){_0x3f10f1[_0x0026('0x3a')]=_0x3f8967;if(_0x3fd8ef[_0x0026('0x29')][_0x0026('0x3b')]){_0xf225f4[_0x0026('0x3c')]=[{'all':!![]}];}return db[_0x0026('0x25')][_0x0026('0x3d')](_0xf225f4);})[_0x0026('0x1f')](function(_0x523312){_0x3f10f1[_0x0026('0x3e')]=_0x523312;return _0x3f10f1;})['then'](respondWithFilteredResult(_0x21b133,_0xf225f4))[_0x0026('0x3f')](handleError(_0x21b133,null));};exports[_0x0026('0x40')]=function(_0x3dcd82,_0x52d41e){var _0x4a071b={'raw':!![],'where':{'id':_0x3dcd82[_0x0026('0x41')]['id']}},_0x2d66d8={};_0x2d66d8[_0x0026('0x27')]=_[_0x0026('0x2a')](db[_0x0026('0x25')][_0x0026('0x42')]);_0x2d66d8[_0x0026('0x29')]=_[_0x0026('0x2a')](_0x3dcd82[_0x0026('0x29')]);_0x2d66d8['filters']=_[_0x0026('0x2c')](_0x2d66d8[_0x0026('0x27')],_0x2d66d8[_0x0026('0x29')]);_0x4a071b[_0x0026('0x2d')]=_[_0x0026('0x2c')](_0x2d66d8[_0x0026('0x27')],qs['fields'](_0x3dcd82[_0x0026('0x29')][_0x0026('0x2e')]));_0x4a071b[_0x0026('0x2d')]=_0x4a071b['attributes'][_0x0026('0x2f')]?_0x4a071b[_0x0026('0x2d')]:_0x2d66d8[_0x0026('0x27')];if(_0x3dcd82[_0x0026('0x29')][_0x0026('0x3b')]){_0x4a071b[_0x0026('0x3c')]=[{'all':!![]}];}_0x4a071b=_['merge']({},_0x4a071b,_0x3dcd82[_0x0026('0x39')]);return db[_0x0026('0x25')][_0x0026('0x43')](_0x4a071b)['then'](handleEntityNotFound(_0x52d41e,null))[_0x0026('0x1f')](respondWithResult(_0x52d41e,null))[_0x0026('0x3f')](handleError(_0x52d41e,null));};exports[_0x0026('0x44')]=function(_0x536697,_0x52e73a){return db['MailTransferReport'][_0x0026('0x44')](_0x536697['body'],{})[_0x0026('0x1f')](respondWithResult(_0x52e73a,0xc9))[_0x0026('0x3f')](handleError(_0x52e73a,null));};exports[_0x0026('0x1e')]=function(_0x21741d,_0x2455b1){if(_0x21741d[_0x0026('0x45')]['id']){delete _0x21741d[_0x0026('0x45')]['id'];}return db[_0x0026('0x25')][_0x0026('0x43')]({'where':{'id':_0x21741d[_0x0026('0x41')]['id']}})[_0x0026('0x1f')](handleEntityNotFound(_0x2455b1,null))[_0x0026('0x1f')](saveUpdates(_0x21741d[_0x0026('0x45')],null))[_0x0026('0x1f')](respondWithResult(_0x2455b1,null))['catch'](handleError(_0x2455b1,null));};exports[_0x0026('0x20')]=function(_0xe71ba0,_0x4a45aa){return db[_0x0026('0x25')][_0x0026('0x43')]({'where':{'id':_0xe71ba0[_0x0026('0x41')]['id']}})[_0x0026('0x1f')](handleEntityNotFound(_0x4a45aa,null))['then'](removeEntity(_0x4a45aa,null))['catch'](handleError(_0x4a45aa,null));};exports[_0x0026('0x46')]=function(_0x48c67f,_0x5c90f0){return db['MailTransferReport'][_0x0026('0x46')]()[_0x0026('0x1f')](respondWithResult(_0x5c90f0,null))[_0x0026('0x3f')](handleError(_0x5c90f0,null));};
\ No newline at end of file
+var _0x25e4=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','key','model','keys','filters','query','attributes','intersection','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1ae31c,_0x8dcd2d){var _0x19519d=function(_0x22b8cd){while(--_0x22b8cd){_0x1ae31c['push'](_0x1ae31c['shift']());}};_0x19519d(++_0x8dcd2d);}(_0x25e4,0xd2));var _0x425e=function(_0x53159e,_0x3cb581){_0x53159e=_0x53159e-0x0;var _0x47a6bb=_0x25e4[_0x53159e];return _0x47a6bb;};'use strict';var emlformat=require(_0x425e('0x0'));var rimraf=require(_0x425e('0x1'));var zipdir=require(_0x425e('0x2'));var jsonpatch=require(_0x425e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x425e('0x4'));var path=require(_0x425e('0x5'));var sox=require(_0x425e('0x6'));var csv=require('to-csv');var ejs=require(_0x425e('0x7'));var fs=require('fs');var fs_extra=require(_0x425e('0x8'));var _=require(_0x425e('0x9'));var squel=require(_0x425e('0xa'));var crypto=require(_0x425e('0xb'));var jsforce=require(_0x425e('0xc'));var deskjs=require(_0x425e('0xd'));var toCsv=require(_0x425e('0xe'));var querystring=require(_0x425e('0xf'));var Papa=require(_0x425e('0x10'));var Redis=require(_0x425e('0x11'));var authService=require(_0x425e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x425e('0x13'));var hardwareService=require(_0x425e('0x14'));var logger=require('../../config/logger')(_0x425e('0x15'));var utils=require(_0x425e('0x16'));var config=require(_0x425e('0x17'));var licenseUtil=require(_0x425e('0x18'));var db=require(_0x425e('0x19'))['db'];function respondWithStatusCode(_0x3d3971,_0x9d70c9){_0x9d70c9=_0x9d70c9||0xcc;return function(_0x4e4a8f){if(_0x4e4a8f){return _0x3d3971[_0x425e('0x1a')](_0x9d70c9);}return _0x3d3971[_0x425e('0x1b')](_0x9d70c9)[_0x425e('0x1c')]();};}function respondWithResult(_0x29bfe4,_0x29d65c){_0x29d65c=_0x29d65c||0xc8;return function(_0x2c33ed){if(_0x2c33ed){return _0x29bfe4[_0x425e('0x1b')](_0x29d65c)[_0x425e('0x1d')](_0x2c33ed);}};}function respondWithFilteredResult(_0xfca2a2,_0x5dc392){return function(_0x4a158c){if(_0x4a158c){var _0x30f3f3=typeof _0x5dc392[_0x425e('0x1e')]===_0x425e('0x1f')&&typeof _0x5dc392[_0x425e('0x20')]===_0x425e('0x1f');var _0x17cb33=_0x4a158c[_0x425e('0x21')];var _0x45c3a0=_0x30f3f3?0x0:_0x5dc392[_0x425e('0x1e')];var _0x39b572=_0x30f3f3?_0x4a158c[_0x425e('0x21')]:_0x5dc392[_0x425e('0x1e')]+_0x5dc392[_0x425e('0x20')];var _0x5f2978;if(_0x39b572>=_0x17cb33){_0x39b572=_0x17cb33;_0x5f2978=0xc8;}else{_0x5f2978=0xce;}_0xfca2a2[_0x425e('0x1b')](_0x5f2978);return _0xfca2a2[_0x425e('0x22')]('Content-Range',_0x45c3a0+'-'+_0x39b572+'/'+_0x17cb33)['json'](_0x4a158c);}return null;};}function patchUpdates(_0x29b7f5){return function(_0x34461f){try{jsonpatch[_0x425e('0x23')](_0x34461f,_0x29b7f5,!![]);}catch(_0x4dee75){return BPromise[_0x425e('0x24')](_0x4dee75);}return _0x34461f[_0x425e('0x25')]();};}function saveUpdates(_0x30bb97,_0x2c4452){return function(_0x4d7e3a){if(_0x4d7e3a){return _0x4d7e3a['update'](_0x30bb97)[_0x425e('0x26')](function(_0x51cabb){return _0x51cabb;});}return null;};}function removeEntity(_0x520058,_0x9f88b7){return function(_0x1d9dc8){if(_0x1d9dc8){return _0x1d9dc8['destroy']()[_0x425e('0x26')](function(){_0x520058[_0x425e('0x1b')](0xcc)[_0x425e('0x1c')]();});}};}function handleEntityNotFound(_0x27f8d3,_0x45cb92){return function(_0x491be8){if(!_0x491be8){_0x27f8d3[_0x425e('0x1a')](0x194);}return _0x491be8;};}function handleError(_0x5082cd,_0x5a77be){_0x5a77be=_0x5a77be||0x1f4;return function(_0x5eb042){logger[_0x425e('0x27')](_0x5eb042[_0x425e('0x28')]);if(_0x5eb042['name']){delete _0x5eb042[_0x425e('0x29')];}_0x5082cd[_0x425e('0x1b')](_0x5a77be)[_0x425e('0x2a')](_0x5eb042);};}exports[_0x425e('0x2b')]=function(_0xbd573f,_0x4b342d){var _0x5871bf={},_0x29d6ac={},_0x3a66d3={'count':0x0,'rows':[]};var _0x3c6a8a=_[_0x425e('0x2c')](db[_0x425e('0x2d')][_0x425e('0x2e')],function(_0x21b436){return{'name':_0x21b436[_0x425e('0x2f')],'type':_0x21b436['type'][_0x425e('0x30')]};});_0x29d6ac[_0x425e('0x31')]=_[_0x425e('0x2c')](_0x3c6a8a,'name');_0x29d6ac['query']=_[_0x425e('0x32')](_0xbd573f['query']);_0x29d6ac[_0x425e('0x33')]=_['intersection'](_0x29d6ac[_0x425e('0x31')],_0x29d6ac[_0x425e('0x34')]);_0x5871bf[_0x425e('0x35')]=_[_0x425e('0x36')](_0x29d6ac[_0x425e('0x31')],qs[_0x425e('0x37')](_0xbd573f[_0x425e('0x34')]['fields']));_0x5871bf[_0x425e('0x35')]=_0x5871bf[_0x425e('0x35')][_0x425e('0x38')]?_0x5871bf[_0x425e('0x35')]:_0x29d6ac[_0x425e('0x31')];if(!_0xbd573f[_0x425e('0x34')]['hasOwnProperty']('nolimit')){_0x5871bf['limit']=qs[_0x425e('0x20')](_0xbd573f[_0x425e('0x34')]['limit']);_0x5871bf[_0x425e('0x1e')]=qs['offset'](_0xbd573f[_0x425e('0x34')][_0x425e('0x1e')]);}_0x5871bf[_0x425e('0x39')]=qs[_0x425e('0x3a')](_0xbd573f[_0x425e('0x34')][_0x425e('0x3a')]);_0x5871bf[_0x425e('0x3b')]=qs[_0x425e('0x33')](_[_0x425e('0x3c')](_0xbd573f[_0x425e('0x34')],_0x29d6ac['filters']),_0x3c6a8a);if(_0xbd573f['query'][_0x425e('0x3d')]){_0x5871bf[_0x425e('0x3b')]=_[_0x425e('0x3e')](_0x5871bf[_0x425e('0x3b')],{'$or':_[_0x425e('0x2c')](_0x3c6a8a,function(_0x12b0a3){if(_0x12b0a3['type']!==_0x425e('0x3f')){var _0x59dfe9={};_0x59dfe9[_0x12b0a3[_0x425e('0x29')]]={'$like':'%'+_0xbd573f[_0x425e('0x34')]['filter']+'%'};return _0x59dfe9;}})});}_0x5871bf=_[_0x425e('0x3e')]({},_0x5871bf,_0xbd573f[_0x425e('0x40')]);var _0x1b6c66={'where':_0x5871bf[_0x425e('0x3b')]};return db[_0x425e('0x2d')][_0x425e('0x21')](_0x1b6c66)[_0x425e('0x26')](function(_0x4cc137){_0x3a66d3['count']=_0x4cc137;if(_0xbd573f[_0x425e('0x34')][_0x425e('0x41')]){_0x5871bf[_0x425e('0x42')]=[{'all':!![]}];}return db[_0x425e('0x2d')][_0x425e('0x43')](_0x5871bf);})[_0x425e('0x26')](function(_0x1f13e2){_0x3a66d3[_0x425e('0x44')]=_0x1f13e2;return _0x3a66d3;})[_0x425e('0x26')](respondWithFilteredResult(_0x4b342d,_0x5871bf))[_0x425e('0x45')](handleError(_0x4b342d,null));};exports['show']=function(_0x49af7e,_0x2c3475){var _0x2ed7ef={'raw':!![],'where':{'id':_0x49af7e[_0x425e('0x46')]['id']}},_0x57501d={};_0x57501d[_0x425e('0x31')]=_[_0x425e('0x32')](db[_0x425e('0x2d')][_0x425e('0x2e')]);_0x57501d['query']=_[_0x425e('0x32')](_0x49af7e['query']);_0x57501d[_0x425e('0x33')]=_[_0x425e('0x36')](_0x57501d[_0x425e('0x31')],_0x57501d['query']);_0x2ed7ef['attributes']=_[_0x425e('0x36')](_0x57501d['model'],qs[_0x425e('0x37')](_0x49af7e[_0x425e('0x34')]['fields']));_0x2ed7ef['attributes']=_0x2ed7ef[_0x425e('0x35')][_0x425e('0x38')]?_0x2ed7ef['attributes']:_0x57501d[_0x425e('0x31')];if(_0x49af7e['query'][_0x425e('0x41')]){_0x2ed7ef[_0x425e('0x42')]=[{'all':!![]}];}_0x2ed7ef=_[_0x425e('0x3e')]({},_0x2ed7ef,_0x49af7e[_0x425e('0x40')]);return db[_0x425e('0x2d')][_0x425e('0x47')](_0x2ed7ef)['then'](handleEntityNotFound(_0x2c3475,null))[_0x425e('0x26')](respondWithResult(_0x2c3475,null))[_0x425e('0x45')](handleError(_0x2c3475,null));};exports[_0x425e('0x48')]=function(_0x3a5942,_0x4cb022){return db[_0x425e('0x2d')][_0x425e('0x48')](_0x3a5942[_0x425e('0x49')],{})[_0x425e('0x26')](respondWithResult(_0x4cb022,0xc9))[_0x425e('0x45')](handleError(_0x4cb022,null));};exports[_0x425e('0x4a')]=function(_0x1479c8,_0x2f027d){if(_0x1479c8[_0x425e('0x49')]['id']){delete _0x1479c8[_0x425e('0x49')]['id'];}return db[_0x425e('0x2d')][_0x425e('0x47')]({'where':{'id':_0x1479c8[_0x425e('0x46')]['id']}})[_0x425e('0x26')](handleEntityNotFound(_0x2f027d,null))[_0x425e('0x26')](saveUpdates(_0x1479c8[_0x425e('0x49')],null))[_0x425e('0x26')](respondWithResult(_0x2f027d,null))[_0x425e('0x45')](handleError(_0x2f027d,null));};exports[_0x425e('0x4b')]=function(_0x15ce62,_0x408d47){return db['MailTransferReport']['find']({'where':{'id':_0x15ce62[_0x425e('0x46')]['id']}})[_0x425e('0x26')](handleEntityNotFound(_0x408d47,null))[_0x425e('0x26')](removeEntity(_0x408d47,null))[_0x425e('0x45')](handleError(_0x408d47,null));};exports[_0x425e('0x4c')]=function(_0x55fbdf,_0x5defbf){return db[_0x425e('0x2d')]['describe']()['then'](respondWithResult(_0x5defbf,null))[_0x425e('0x45')](handleError(_0x5defbf,null));};
\ No newline at end of file
index a03de04..f01550c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40cb=['../../config/logger','api','bluebird','request-promise','path','rimraf','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util'];(function(_0x2ff7ef,_0x598e58){var _0x5d2adf=function(_0x2553bd){while(--_0x2553bd){_0x2ff7ef['push'](_0x2ff7ef['shift']());}};_0x5d2adf(++_0x598e58);}(_0x40cb,0x108));var _0xb40c=function(_0x1a8d5f,_0x455595){_0x1a8d5f=_0x1a8d5f-0x0;var _0x1dcc34=_0x40cb[_0x1a8d5f];return _0x1dcc34;};'use strict';var _=require(_0xb40c('0x0'));var util=require(_0xb40c('0x1'));var logger=require(_0xb40c('0x2'))(_0xb40c('0x3'));var moment=require('moment');var BPromise=require(_0xb40c('0x4'));var rp=require(_0xb40c('0x5'));var fs=require('fs');var path=require(_0xb40c('0x6'));var rimraf=require(_0xb40c('0x7'));var config=require('../../config/environment');var attributes=require(_0xb40c('0x8'));module[_0xb40c('0x9')]=function(_0x4c650d,_0x36120e){return _0x4c650d[_0xb40c('0xa')](_0xb40c('0xb'),attributes,{'tableName':_0xb40c('0xc'),'paranoid':![],'indexes':[{'name':_0xb40c('0xd'),'fields':[_0xb40c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd4e=['path','../../config/environment','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise'];(function(_0x8129d4,_0x18deec){var _0x1b9576=function(_0x3ac7e0){while(--_0x3ac7e0){_0x8129d4['push'](_0x8129d4['shift']());}};_0x1b9576(++_0x18deec);}(_0xcd4e,0x187));var _0xecd4=function(_0x35bcc4,_0x180d7b){_0x35bcc4=_0x35bcc4-0x0;var _0x3b18d2=_0xcd4e[_0x35bcc4];return _0x3b18d2;};'use strict';var _=require(_0xecd4('0x0'));var util=require(_0xecd4('0x1'));var logger=require(_0xecd4('0x2'))(_0xecd4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xecd4('0x4'));var fs=require('fs');var path=require(_0xecd4('0x5'));var rimraf=require('rimraf');var config=require(_0xecd4('0x6'));var attributes=require('./mailTransferReport.attributes');module[_0xecd4('0x7')]=function(_0x47f6ae,_0x41dd0c){return _0x47f6ae[_0xecd4('0x8')](_0xecd4('0x9'),attributes,{'tableName':_0xecd4('0xa'),'paranoid':![],'indexes':[{'name':_0xecd4('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index c9b9b3b..2c67282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ad=['rpc','../../config/environment','http','request','then','info','MailTransferReport,\x20%s,\x20%s','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x57ad,0x10b));var _0xd57a=function(_0x29849b,_0xf25afc){_0x29849b=_0x29849b-0x0;var _0x5dcc15=_0x57ad[_0x29849b];return _0x5dcc15;};'use strict';var _=require(_0xd57a('0x0'));var util=require(_0xd57a('0x1'));var moment=require(_0xd57a('0x2'));var BPromise=require(_0xd57a('0x3'));var rs=require(_0xd57a('0x4'));var fs=require('fs');var Redis=require(_0xd57a('0x5'));var db=require(_0xd57a('0x6'))['db'];var utils=require(_0xd57a('0x7'));var logger=require(_0xd57a('0x8'))(_0xd57a('0x9'));var config=require(_0xd57a('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd57a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x98d0c5,_0x37b403,_0x1e568c){return new BPromise(function(_0x1515b8,_0x453779){return client[_0xd57a('0xc')](_0x98d0c5,_0x1e568c)[_0xd57a('0xd')](function(_0x255305){logger[_0xd57a('0xe')](_0xd57a('0xf'),_0x37b403,'request\x20sent');logger['debug'](_0xd57a('0x10'),_0x37b403,_0xd57a('0x11'),JSON[_0xd57a('0x12')](_0x255305));if(_0x255305[_0xd57a('0x13')]){if(_0x255305[_0xd57a('0x13')][_0xd57a('0x14')]===0x1f4){logger[_0xd57a('0x13')]('MailTransferReport,\x20%s,\x20%s',_0x37b403,_0x255305[_0xd57a('0x13')][_0xd57a('0x15')]);return _0x453779(_0x255305['error']['message']);}logger[_0xd57a('0x13')](_0xd57a('0xf'),_0x37b403,_0x255305[_0xd57a('0x13')]['message']);return _0x1515b8(_0x255305[_0xd57a('0x13')][_0xd57a('0x15')]);}else{logger[_0xd57a('0xe')](_0xd57a('0xf'),_0x37b403,'request\x20sent');_0x1515b8(_0x255305['result'][_0xd57a('0x15')]);}})[_0xd57a('0x16')](function(_0xe0c023){logger[_0xd57a('0x13')](_0xd57a('0xf'),_0x37b403,_0xe0c023);_0x453779(_0xe0c023);});});}
\ No newline at end of file
+var _0xa817=['../../config/environment','jayson/promise','http','then','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5a7bfc,_0x5eea0b){var _0x6961e4=function(_0x230ecf){while(--_0x230ecf){_0x5a7bfc['push'](_0x5a7bfc['shift']());}};_0x6961e4(++_0x5eea0b);}(_0xa817,0x7b));var _0x7a81=function(_0x30b39e,_0x284078){_0x30b39e=_0x30b39e-0x0;var _0x5d7dfe=_0xa817[_0x30b39e];return _0x5d7dfe;};'use strict';var _=require(_0x7a81('0x0'));var util=require(_0x7a81('0x1'));var moment=require(_0x7a81('0x2'));var BPromise=require(_0x7a81('0x3'));var rs=require(_0x7a81('0x4'));var fs=require('fs');var Redis=require(_0x7a81('0x5'));var db=require(_0x7a81('0x6'))['db'];var utils=require(_0x7a81('0x7'));var logger=require(_0x7a81('0x8'))('rpc');var config=require(_0x7a81('0x9'));var jayson=require(_0x7a81('0xa'));var client=jayson['client'][_0x7a81('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35c35a,_0x3ab25c,_0x705d4e){return new BPromise(function(_0x1869fb,_0x18f6f6){return client['request'](_0x35c35a,_0x705d4e)[_0x7a81('0xc')](function(_0x5b3b66){logger['info'](_0x7a81('0xd'),_0x3ab25c,'request\x20sent');logger[_0x7a81('0xe')](_0x7a81('0xf'),_0x3ab25c,_0x7a81('0x10'),JSON[_0x7a81('0x11')](_0x5b3b66));if(_0x5b3b66[_0x7a81('0x12')]){if(_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x13')]===0x1f4){logger['error'](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x18f6f6(_0x5b3b66['error'][_0x7a81('0x14')]);}logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x1869fb(_0x5b3b66[_0x7a81('0x12')]['message']);}else{logger['info'](_0x7a81('0xd'),_0x3ab25c,_0x7a81('0x10'));_0x1869fb(_0x5b3b66['result'][_0x7a81('0x14')]);}})[_0x7a81('0x15')](function(_0x179afd){logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x179afd);_0x18f6f6(_0x179afd);});});}
\ No newline at end of file
index 7f6decf..2815317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65eb=['get','isAuthenticated','index','describe','/:id','show','post','create','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./memberReport.controller'];(function(_0x13440b,_0x4b3719){var _0x521722=function(_0x29c3cb){while(--_0x29c3cb){_0x13440b['push'](_0x13440b['shift']());}};_0x521722(++_0x4b3719);}(_0x65eb,0xc4));var _0xb65e=function(_0x30b73a,_0x1a39e2){_0x30b73a=_0x30b73a-0x0;var _0x2835d1=_0x65eb[_0x30b73a];return _0x2835d1;};'use strict';var multer=require(_0xb65e('0x0'));var util=require(_0xb65e('0x1'));var path=require(_0xb65e('0x2'));var timeout=require('connect-timeout');var express=require(_0xb65e('0x3'));var router=express['Router']();var fs_extra=require(_0xb65e('0x4'));var auth=require(_0xb65e('0x5'));var interaction=require(_0xb65e('0x6'));var config=require('../../config/environment');var controller=require(_0xb65e('0x7'));router[_0xb65e('0x8')]('/',auth[_0xb65e('0x9')](),controller[_0xb65e('0xa')]);router[_0xb65e('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xb65e('0xb')]);router[_0xb65e('0x8')](_0xb65e('0xc'),auth[_0xb65e('0x9')](),controller[_0xb65e('0xd')]);router[_0xb65e('0xe')]('/',auth[_0xb65e('0x9')](),controller[_0xb65e('0xf')]);router['put'](_0xb65e('0xc'),auth[_0xb65e('0x9')](),controller['update']);router['delete'](_0xb65e('0xc'),auth[_0xb65e('0x9')](),controller[_0xb65e('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x9196=['/describe','describe','show','create','put','/:id','update','delete','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x20f7c4,_0x1a02a8){var _0x18a0c2=function(_0x8edfc6){while(--_0x8edfc6){_0x20f7c4['push'](_0x20f7c4['shift']());}};_0x18a0c2(++_0x1a02a8);}(_0x9196,0x8e));var _0x6919=function(_0x115621,_0x341cde){_0x115621=_0x115621-0x0;var _0x5ef5ce=_0x9196[_0x115621];return _0x5ef5ce;};'use strict';var multer=require(_0x6919('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6919('0x1'));var router=express[_0x6919('0x2')]();var fs_extra=require(_0x6919('0x3'));var auth=require(_0x6919('0x4'));var interaction=require(_0x6919('0x5'));var config=require(_0x6919('0x6'));var controller=require('./memberReport.controller');router['get']('/',auth[_0x6919('0x7')](),controller[_0x6919('0x8')]);router[_0x6919('0x9')](_0x6919('0xa'),auth['isAuthenticated'](),controller[_0x6919('0xb')]);router['get']('/:id',auth[_0x6919('0x7')](),controller[_0x6919('0xc')]);router['post']('/',auth[_0x6919('0x7')](),controller[_0x6919('0xd')]);router[_0x6919('0xe')](_0x6919('0xf'),auth['isAuthenticated'](),controller[_0x6919('0x10')]);router[_0x6919('0x11')](_0x6919('0xf'),auth[_0x6919('0x7')](),controller['destroy']);module[_0x6919('0x12')]=router;
\ No newline at end of file
index f094e24..9453446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6282=['enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','INTEGER','DATE','getDataValue'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x6282,0x76));var _0x2628=function(_0x26e2a6,_0x228b63){_0x26e2a6=_0x26e2a6-0x0;var _0x13f0bd=_0x6282[_0x26e2a6];return _0x13f0bd;};'use strict';var Sequelize=require(_0x2628('0x0'));var moment=require(_0x2628('0x1'));module[_0x2628('0x2')]={'channel':{'type':Sequelize[_0x2628('0x3')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x2628('0x3')],'defaultValue':_0x2628('0x4'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x2628('0x5')]},'enterAt':{'type':Sequelize[_0x2628('0x6')]},'exitAt':{'type':Sequelize[_0x2628('0x6')],'set':function(_0x47102a){var _0x128d3a=moment(_0x47102a);var _0x50412a=moment(this[_0x2628('0x7')](_0x2628('0x8')));var _0x2170a7=_0x128d3a[_0x2628('0x9')](_0x50412a,_0x2628('0xa'));this[_0x2628('0xb')](_0x2628('0xc'),_0x47102a);this[_0x2628('0xb')](_0x2628('0xd'),_0x2170a7||null);}},'data1':{'type':Sequelize[_0x2628('0x3')],'comment':_0x2628('0xe')},'data2':{'type':Sequelize[_0x2628('0x3')],'comment':_0x2628('0xf')},'data3':{'type':Sequelize[_0x2628('0x3')],'comment':_0x2628('0x10')},'data4':{'type':Sequelize['STRING'],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0x2628('0x3')],'comment':_0x2628('0x11')},'role':{'type':Sequelize[_0x2628('0x3')]},'internal':{'type':Sequelize[_0x2628('0x5')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcf1c=['DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[dial\x20string]','talk:[queue]','INTEGER','sequelize','moment','STRING'];(function(_0x55e461,_0x260d5e){var _0x26e885=function(_0xf3121f){while(--_0xf3121f){_0x55e461['push'](_0x55e461['shift']());}};_0x26e885(++_0x260d5e);}(_0xcf1c,0x18d));var _0xccf1=function(_0x54dcad,_0x554f46){_0x54dcad=_0x54dcad-0x0;var _0x537c56=_0xcf1c[_0x54dcad];return _0x537c56;};'use strict';var Sequelize=require(_0xccf1('0x0'));var moment=require(_0xccf1('0x1'));module['exports']={'channel':{'type':Sequelize[_0xccf1('0x2')]},'membername':{'type':Sequelize[_0xccf1('0x2')]},'interface':{'type':Sequelize[_0xccf1('0x2')]},'type':{'type':Sequelize[_0xccf1('0x2')],'defaultValue':'DEFAULT\x20PAUSE','comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xccf1('0x3')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x17e358){var _0x2ee316=moment(_0x17e358);var _0x2c381f=moment(this[_0xccf1('0x4')](_0xccf1('0x5')));var _0x12ca5d=_0x2ee316[_0xccf1('0x6')](_0x2c381f,_0xccf1('0x7'));this[_0xccf1('0x8')](_0xccf1('0x9'),_0x17e358);this[_0xccf1('0x8')](_0xccf1('0xa'),_0x12ca5d||null);}},'data1':{'type':Sequelize[_0xccf1('0x2')],'comment':_0xccf1('0xb')},'data2':{'type':Sequelize[_0xccf1('0x2')],'comment':_0xccf1('0xc')},'data3':{'type':Sequelize[_0xccf1('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':_0xccf1('0xd')},'data5':{'type':Sequelize[_0xccf1('0x2')],'comment':_0xccf1('0xe')},'role':{'type':Sequelize[_0xccf1('0x2')]},'internal':{'type':Sequelize[_0xccf1('0xf')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a0c1f61..4ab43c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x3b934f,_0x59dc45){var _0x136c82=function(_0x321a23){while(--_0x321a23){_0x3b934f['push'](_0x3b934f['shift']());}};_0x136c82(++_0x59dc45);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['MemberReport']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['MemberReport'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['MemberReport'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
+var _0x9c44=['catch','params','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x100551,_0x38bbb5){var _0x165b01=function(_0xaba92d){while(--_0xaba92d){_0x100551['push'](_0x100551['shift']());}};_0x165b01(++_0x38bbb5);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
index a7a2927..9d27798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd14c=['exports','define','MemberReport','report_member','membername_interface','membername','interface','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./memberReport.attributes'];(function(_0x4ef6a9,_0x158826){var _0x5bcb8c=function(_0x1f5e6e){while(--_0x1f5e6e){_0x4ef6a9['push'](_0x4ef6a9['shift']());}};_0x5bcb8c(++_0x158826);}(_0xd14c,0x124));var _0xcd14=function(_0x2cb73e,_0x16d25f){_0x2cb73e=_0x2cb73e-0x0;var _0x459029=_0xd14c[_0x2cb73e];return _0x459029;};'use strict';var _=require('lodash');var util=require(_0xcd14('0x0'));var logger=require(_0xcd14('0x1'))(_0xcd14('0x2'));var moment=require(_0xcd14('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xcd14('0x4'));var rimraf=require(_0xcd14('0x5'));var config=require(_0xcd14('0x6'));var attributes=require(_0xcd14('0x7'));module[_0xcd14('0x8')]=function(_0x68b2ca,_0x476a93){return _0x68b2ca[_0xcd14('0x9')](_0xcd14('0xa'),attributes,{'tableName':_0xcd14('0xb'),'paranoid':![],'indexes':[{'name':_0xcd14('0xc'),'fields':[_0xcd14('0xd'),_0xcd14('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc1a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','report_member','membername_interface','interface','util'];(function(_0x2a0a6d,_0x25634f){var _0x141c07=function(_0x4945e1){while(--_0x4945e1){_0x2a0a6d['push'](_0x2a0a6d['shift']());}};_0x141c07(++_0x25634f);}(_0xdc1a,0x133));var _0xadc1=function(_0x4559a6,_0x303813){_0x4559a6=_0x4559a6-0x0;var _0x4e84fe=_0xdc1a[_0x4559a6];return _0x4e84fe;};'use strict';var _=require('lodash');var util=require(_0xadc1('0x0'));var logger=require('../../config/logger')(_0xadc1('0x1'));var moment=require(_0xadc1('0x2'));var BPromise=require(_0xadc1('0x3'));var rp=require(_0xadc1('0x4'));var fs=require('fs');var path=require(_0xadc1('0x5'));var rimraf=require(_0xadc1('0x6'));var config=require(_0xadc1('0x7'));var attributes=require(_0xadc1('0x8'));module[_0xadc1('0x9')]=function(_0x14fd14,_0x379bce){return _0x14fd14[_0xadc1('0xa')]('MemberReport',attributes,{'tableName':_0xadc1('0xb'),'paranoid':![],'indexes':[{'name':_0xadc1('0xc'),'fields':['membername',_0xadc1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 9e61645..104d783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30bc=['include','map','body','CreateMemberReport','debug','catch','UpdateMemberReport','update','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','MemberReport,\x20%s,\x20%s','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','model'];(function(_0x2fbcf6,_0x2e7155){var _0x3e7265=function(_0x15a3c3){while(--_0x15a3c3){_0x2fbcf6['push'](_0x2fbcf6['shift']());}};_0x3e7265(++_0x2e7155);}(_0x30bc,0x149));var _0xc30b=function(_0x30bd01,_0x557a2c){_0x30bd01=_0x30bd01-0x0;var _0x44cdc3=_0x30bc[_0x30bd01];return _0x44cdc3;};'use strict';var _=require(_0xc30b('0x0'));var util=require(_0xc30b('0x1'));var moment=require(_0xc30b('0x2'));var BPromise=require('bluebird');var rs=require(_0xc30b('0x3'));var fs=require('fs');var Redis=require(_0xc30b('0x4'));var db=require(_0xc30b('0x5'))['db'];var utils=require(_0xc30b('0x6'));var logger=require(_0xc30b('0x7'))(_0xc30b('0x8'));var config=require(_0xc30b('0x9'));var jayson=require(_0xc30b('0xa'));var client=jayson[_0xc30b('0xb')][_0xc30b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5dff10,_0x2f7826,_0x1aca07){return new BPromise(function(_0x25e199,_0x1c912d){return client['request'](_0x5dff10,_0x1aca07)[_0xc30b('0xd')](function(_0x5b5055){logger[_0xc30b('0xe')](_0xc30b('0xf'),_0x2f7826,'request\x20sent');logger['debug'](_0xc30b('0x10'),_0x2f7826,_0xc30b('0x11'),JSON[_0xc30b('0x12')](_0x5b5055));if(_0x5b5055[_0xc30b('0x13')]){if(_0x5b5055[_0xc30b('0x13')][_0xc30b('0x14')]===0x1f4){logger['error'](_0xc30b('0xf'),_0x2f7826,_0x5b5055[_0xc30b('0x13')]['message']);return _0x1c912d(_0x5b5055[_0xc30b('0x13')][_0xc30b('0x15')]);}logger['error'](_0xc30b('0xf'),_0x2f7826,_0x5b5055['error']['message']);return _0x25e199(_0x5b5055['error'][_0xc30b('0x15')]);}else{logger['info'](_0xc30b('0xf'),_0x2f7826,_0xc30b('0x11'));_0x25e199(_0x5b5055[_0xc30b('0x16')][_0xc30b('0x15')]);}})['catch'](function(_0xff2b55){logger[_0xc30b('0x13')](_0xc30b('0xf'),_0x2f7826,_0xff2b55);_0x1c912d(_0xff2b55);});});}exports[_0xc30b('0x17')]=function(_0x1ce7eb){var _0x23b45f=this;return new Promise(function(_0x5b4345,_0x50ade1){return db[_0xc30b('0x18')][_0xc30b('0x19')]({'raw':_0x1ce7eb[_0xc30b('0x1a')]?_0x1ce7eb[_0xc30b('0x1a')][_0xc30b('0x1b')]===undefined?!![]:![]:!![],'where':_0x1ce7eb[_0xc30b('0x1a')]?_0x1ce7eb['options'][_0xc30b('0x1c')]||null:null,'attributes':_0x1ce7eb['options']?_0x1ce7eb[_0xc30b('0x1a')][_0xc30b('0x1d')]||null:null,'limit':_0x1ce7eb[_0xc30b('0x1a')]?_0x1ce7eb[_0xc30b('0x1a')]['limit']||null:null,'include':_0x1ce7eb[_0xc30b('0x1a')]?_0x1ce7eb[_0xc30b('0x1a')]['include']?_['map'](_0x1ce7eb[_0xc30b('0x1a')]['include'],function(_0x567296){return{'model':db[_0x567296[_0xc30b('0x1e')]],'as':_0x567296['as'],'attributes':_0x567296[_0xc30b('0x1d')],'include':_0x567296[_0xc30b('0x1f')]?_['map'](_0x567296[_0xc30b('0x1f')],function(_0x2e987e){return{'model':db[_0x2e987e[_0xc30b('0x1e')]],'as':_0x2e987e['as'],'attributes':_0x2e987e['attributes'],'include':_0x2e987e[_0xc30b('0x1f')]?_[_0xc30b('0x20')](_0x2e987e[_0xc30b('0x1f')],function(_0x1c7b1b){return{'model':db[_0x1c7b1b[_0xc30b('0x1e')]],'as':_0x1c7b1b['as'],'attributes':_0x1c7b1b[_0xc30b('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x46a2a5){logger[_0xc30b('0xe')]('GetMemberReport',_0x1ce7eb);logger['debug'](_0xc30b('0x17'),_0x1ce7eb,JSON['stringify'](_0x46a2a5));_0x5b4345(_0x46a2a5);})['catch'](function(_0x3940c2){logger['error'](_0xc30b('0x17'),_0x3940c2[_0xc30b('0x15')],_0x1ce7eb);_0x50ade1(_0x23b45f[_0xc30b('0x13')](0x1f4,_0x3940c2[_0xc30b('0x15')]));});});};exports['CreateMemberReport']=function(_0x12679a){var _0x109693=this;return new Promise(function(_0x399531,_0x11f508){return db[_0xc30b('0x18')]['create'](_0x12679a[_0xc30b('0x21')],{'raw':_0x12679a[_0xc30b('0x1a')]?_0x12679a[_0xc30b('0x1a')][_0xc30b('0x1b')]===undefined?!![]:![]:!![]})[_0xc30b('0xd')](function(_0x5b4cc6){logger[_0xc30b('0xe')](_0xc30b('0x22'),_0x12679a);logger[_0xc30b('0x23')](_0xc30b('0x22'),_0x12679a,JSON['stringify'](_0x5b4cc6));_0x399531(_0x5b4cc6);})[_0xc30b('0x24')](function(_0x29ef09){logger[_0xc30b('0x13')]('CreateMemberReport',_0x29ef09[_0xc30b('0x15')],_0x12679a);_0x11f508(_0x109693[_0xc30b('0x13')](0x1f4,_0x29ef09['message']));});});};exports[_0xc30b('0x25')]=function(_0x5e709b){var _0x390a3d=this;return new Promise(function(_0x4c21c2,_0x57a6ef){return db['MemberReport'][_0xc30b('0x26')](_0x5e709b[_0xc30b('0x21')],{'raw':_0x5e709b['options']?_0x5e709b[_0xc30b('0x1a')][_0xc30b('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e709b[_0xc30b('0x1a')]?_0x5e709b[_0xc30b('0x1a')][_0xc30b('0x1c')]||null:null,'attributes':_0x5e709b['options']?_0x5e709b[_0xc30b('0x1a')][_0xc30b('0x1d')]||null:null,'limit':_0x5e709b[_0xc30b('0x1a')]?_0x5e709b[_0xc30b('0x1a')][_0xc30b('0x27')]||null:null})['then'](function(_0x3b5918){logger[_0xc30b('0xe')](_0xc30b('0x25'),_0x5e709b);logger[_0xc30b('0x23')](_0xc30b('0x25'),_0x5e709b,JSON[_0xc30b('0x12')](_0x3b5918));_0x4c21c2(_0x3b5918);})[_0xc30b('0x24')](function(_0x483669){logger['error']('UpdateMemberReport',_0x483669[_0xc30b('0x15')],_0x5e709b);_0x57a6ef(_0x390a3d[_0xc30b('0x13')](0x1f4,_0x483669[_0xc30b('0x15')]));});});};
\ No newline at end of file
+var _0xd9ce=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','GetMemberReport','create','body','CreateMemberReport','catch','UpdateMemberReport','update','lodash','util','moment','bluebird','randomstring'];(function(_0x516b8e,_0x1620ca){var _0x8863da=function(_0x27c5ea){while(--_0x27c5ea){_0x516b8e['push'](_0x516b8e['shift']());}};_0x8863da(++_0x1620ca);}(_0xd9ce,0xeb));var _0xed9c=function(_0x342782,_0x4236e0){_0x342782=_0x342782-0x0;var _0xadb50c=_0xd9ce[_0x342782];return _0xadb50c;};'use strict';var _=require(_0xed9c('0x0'));var util=require(_0xed9c('0x1'));var moment=require(_0xed9c('0x2'));var BPromise=require(_0xed9c('0x3'));var rs=require(_0xed9c('0x4'));var fs=require('fs');var Redis=require(_0xed9c('0x5'));var db=require(_0xed9c('0x6'))['db'];var utils=require(_0xed9c('0x7'));var logger=require('../../config/logger')(_0xed9c('0x8'));var config=require(_0xed9c('0x9'));var jayson=require(_0xed9c('0xa'));var client=jayson[_0xed9c('0xb')][_0xed9c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x434898,_0x58c757,_0x2ad757){return new BPromise(function(_0xde32e4,_0x5a312d){return client['request'](_0x434898,_0x2ad757)[_0xed9c('0xd')](function(_0x5ed0ab){logger[_0xed9c('0xe')](_0xed9c('0xf'),_0x58c757,_0xed9c('0x10'));logger[_0xed9c('0x11')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x58c757,_0xed9c('0x10'),JSON[_0xed9c('0x12')](_0x5ed0ab));if(_0x5ed0ab[_0xed9c('0x13')]){if(_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x14')]===0x1f4){logger['error']('MemberReport,\x20%s,\x20%s',_0x58c757,_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x15')]);return _0x5a312d(_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x15')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x58c757,_0x5ed0ab[_0xed9c('0x13')]['message']);return _0xde32e4(_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x15')]);}else{logger[_0xed9c('0xe')](_0xed9c('0xf'),_0x58c757,_0xed9c('0x10'));_0xde32e4(_0x5ed0ab[_0xed9c('0x16')][_0xed9c('0x15')]);}})['catch'](function(_0x244d5e){logger[_0xed9c('0x13')](_0xed9c('0xf'),_0x58c757,_0x244d5e);_0x5a312d(_0x244d5e);});});}exports['GetMemberReport']=function(_0x485029){var _0x7eea82=this;return new Promise(function(_0x48b7b4,_0x421834){return db[_0xed9c('0x17')][_0xed9c('0x18')]({'raw':_0x485029[_0xed9c('0x19')]?_0x485029[_0xed9c('0x19')][_0xed9c('0x1a')]===undefined?!![]:![]:!![],'where':_0x485029['options']?_0x485029[_0xed9c('0x19')][_0xed9c('0x1b')]||null:null,'attributes':_0x485029[_0xed9c('0x19')]?_0x485029['options'][_0xed9c('0x1c')]||null:null,'limit':_0x485029[_0xed9c('0x19')]?_0x485029[_0xed9c('0x19')][_0xed9c('0x1d')]||null:null,'include':_0x485029['options']?_0x485029['options'][_0xed9c('0x1e')]?_[_0xed9c('0x1f')](_0x485029[_0xed9c('0x19')][_0xed9c('0x1e')],function(_0x1fd75d){return{'model':db[_0x1fd75d[_0xed9c('0x20')]],'as':_0x1fd75d['as'],'attributes':_0x1fd75d['attributes'],'include':_0x1fd75d[_0xed9c('0x1e')]?_['map'](_0x1fd75d['include'],function(_0x495055){return{'model':db[_0x495055[_0xed9c('0x20')]],'as':_0x495055['as'],'attributes':_0x495055[_0xed9c('0x1c')],'include':_0x495055[_0xed9c('0x1e')]?_[_0xed9c('0x1f')](_0x495055['include'],function(_0x2a1fac){return{'model':db[_0x2a1fac[_0xed9c('0x20')]],'as':_0x2a1fac['as'],'attributes':_0x2a1fac[_0xed9c('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xe3be1){logger[_0xed9c('0xe')](_0xed9c('0x21'),_0x485029);logger[_0xed9c('0x11')]('GetMemberReport',_0x485029,JSON[_0xed9c('0x12')](_0xe3be1));_0x48b7b4(_0xe3be1);})['catch'](function(_0x42c134){logger[_0xed9c('0x13')](_0xed9c('0x21'),_0x42c134[_0xed9c('0x15')],_0x485029);_0x421834(_0x7eea82[_0xed9c('0x13')](0x1f4,_0x42c134['message']));});});};exports['CreateMemberReport']=function(_0x241372){var _0x9a2584=this;return new Promise(function(_0x13d128,_0xf6ddf4){return db['MemberReport'][_0xed9c('0x22')](_0x241372[_0xed9c('0x23')],{'raw':_0x241372[_0xed9c('0x19')]?_0x241372[_0xed9c('0x19')][_0xed9c('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x2226a2){logger['info'](_0xed9c('0x24'),_0x241372);logger[_0xed9c('0x11')](_0xed9c('0x24'),_0x241372,JSON[_0xed9c('0x12')](_0x2226a2));_0x13d128(_0x2226a2);})[_0xed9c('0x25')](function(_0x3ee465){logger[_0xed9c('0x13')](_0xed9c('0x24'),_0x3ee465[_0xed9c('0x15')],_0x241372);_0xf6ddf4(_0x9a2584[_0xed9c('0x13')](0x1f4,_0x3ee465[_0xed9c('0x15')]));});});};exports[_0xed9c('0x26')]=function(_0x281ca0){var _0x4655ba=this;return new Promise(function(_0x436b86,_0x3e986e){return db['MemberReport'][_0xed9c('0x27')](_0x281ca0[_0xed9c('0x23')],{'raw':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')][_0xed9c('0x1b')]||null:null,'attributes':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')][_0xed9c('0x1c')]||null:null,'limit':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')][_0xed9c('0x1d')]||null:null})[_0xed9c('0xd')](function(_0x50e6f0){logger['info'](_0xed9c('0x26'),_0x281ca0);logger[_0xed9c('0x11')](_0xed9c('0x26'),_0x281ca0,JSON['stringify'](_0x50e6f0));_0x436b86(_0x50e6f0);})[_0xed9c('0x25')](function(_0x4dc992){logger['error'](_0xed9c('0x26'),_0x4dc992['message'],_0x281ca0);_0x3e986e(_0x4655ba['error'](0x1f4,_0x4dc992[_0xed9c('0x15')]));});});};
\ No newline at end of file
index 7eddfc8..c75ee2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x010d=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','index','exports','multer','util','path','connect-timeout','express'];(function(_0x5eb2b8,_0x45d757){var _0xd3dbd0=function(_0x4794f6){while(--_0x4794f6){_0x5eb2b8['push'](_0x5eb2b8['shift']());}};_0xd3dbd0(++_0x45d757);}(_0x010d,0xed));var _0xd010=function(_0x216a89,_0x5d0f7d){_0x216a89=_0x216a89-0x0;var _0xfba552=_0x010d[_0x216a89];return _0xfba552;};'use strict';var multer=require(_0xd010('0x0'));var util=require(_0xd010('0x1'));var path=require(_0xd010('0x2'));var timeout=require(_0xd010('0x3'));var express=require(_0xd010('0x4'));var router=express[_0xd010('0x5')]();var fs_extra=require(_0xd010('0x6'));var auth=require(_0xd010('0x7'));var interaction=require(_0xd010('0x8'));var config=require('../../config/environment');var controller=require('./migration.controller');router['get']('/',controller[_0xd010('0x9')]);module[_0xd010('0xa')]=router;
\ No newline at end of file
+var _0x1f27=['../../components/auth/service','./migration.controller','get','index','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x1f27,0x13d));var _0x71f2=function(_0x1f00f0,_0x1ff4bc){_0x1f00f0=_0x1f00f0-0x0;var _0x1be3f7=_0x1f27[_0x1f00f0];return _0x1be3f7;};'use strict';var multer=require(_0x71f2('0x0'));var util=require(_0x71f2('0x1'));var path=require(_0x71f2('0x2'));var timeout=require(_0x71f2('0x3'));var express=require(_0x71f2('0x4'));var router=express[_0x71f2('0x5')]();var fs_extra=require(_0x71f2('0x6'));var auth=require(_0x71f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x71f2('0x8'));router[_0x71f2('0x9')]('/',controller[_0x71f2('0xa')]);module[_0x71f2('0xb')]=router;
\ No newline at end of file
index c67a3d2..915705f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x470f=['sequelize','exports','STRING','version'];(function(_0x5235a6,_0x680b76){var _0x1cf37e=function(_0x31c173){while(--_0x31c173){_0x5235a6['push'](_0x5235a6['shift']());}};_0x1cf37e(++_0x680b76);}(_0x470f,0x12c));var _0xf470=function(_0x3d542c,_0x2098ae){_0x3d542c=_0x3d542c-0x0;var _0x4946de=_0x470f[_0x3d542c];return _0x4946de;};'use strict';var Sequelize=require(_0xf470('0x0'));module[_0xf470('0x1')]={'version':{'type':Sequelize[_0xf470('0x2')],'unique':_0xf470('0x3')}};
\ No newline at end of file
+var _0xd1e9=['STRING','version','exports'];(function(_0x66b26e,_0x5adc00){var _0x5d5cb7=function(_0x587695){while(--_0x587695){_0x66b26e['push'](_0x66b26e['shift']());}};_0x5d5cb7(++_0x5adc00);}(_0xd1e9,0x1f4));var _0x9d1e=function(_0x4cbd35,_0x3fd034){_0x4cbd35=_0x4cbd35-0x0;var _0x41961e=_0xd1e9[_0x4cbd35];return _0x41961e;};'use strict';var Sequelize=require('sequelize');module[_0x9d1e('0x0')]={'version':{'type':Sequelize[_0x9d1e('0x1')],'unique':_0x9d1e('0x2')}};
\ No newline at end of file
index c563c49..16b1587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e4=['options','include','findAll','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','end','status','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','error','stack','name','index','map','Migration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge'];(function(_0x35cfbb,_0x24b8a2){var _0x503a16=function(_0x71bc05){while(--_0x71bc05){_0x35cfbb['push'](_0x35cfbb['shift']());}};_0x503a16(++_0x24b8a2);}(_0xa9e4,0x89));var _0x4a9e=function(_0x172087,_0x5e54ff){_0x172087=_0x172087-0x0;var _0x3ddcd7=_0xa9e4[_0x172087];return _0x3ddcd7;};'use strict';var emlformat=require(_0x4a9e('0x0'));var rimraf=require(_0x4a9e('0x1'));var zipdir=require(_0x4a9e('0x2'));var jsonpatch=require(_0x4a9e('0x3'));var rp=require(_0x4a9e('0x4'));var moment=require(_0x4a9e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4a9e('0x6'));var util=require(_0x4a9e('0x7'));var path=require(_0x4a9e('0x8'));var sox=require('sox');var csv=require(_0x4a9e('0x9'));var ejs=require(_0x4a9e('0xa'));var fs=require('fs');var fs_extra=require(_0x4a9e('0xb'));var _=require(_0x4a9e('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4a9e('0xd'));var toCsv=require(_0x4a9e('0x9'));var querystring=require(_0x4a9e('0xe'));var Papa=require(_0x4a9e('0xf'));var Redis=require(_0x4a9e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4a9e('0x11'));var as=require(_0x4a9e('0x12'));var hardwareService=require(_0x4a9e('0x13'));var logger=require(_0x4a9e('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4a9e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x28f6ff,_0x14c292){_0x14c292=_0x14c292||0xcc;return function(_0x517606){if(_0x517606){return _0x28f6ff['sendStatus'](_0x14c292);}return _0x28f6ff['status'](_0x14c292)[_0x4a9e('0x16')]();};}function respondWithResult(_0x412aa8,_0x1889fd){_0x1889fd=_0x1889fd||0xc8;return function(_0x265e56){if(_0x265e56){return _0x412aa8[_0x4a9e('0x17')](_0x1889fd)['json'](_0x265e56);}};}function respondWithFilteredResult(_0x228c44,_0x184391){return function(_0x242009){if(_0x242009){var _0x44c541=typeof _0x184391['offset']===_0x4a9e('0x18')&&typeof _0x184391[_0x4a9e('0x19')]===_0x4a9e('0x18');var _0x5d6bf2=_0x242009[_0x4a9e('0x1a')];var _0x1c3893=_0x44c541?0x0:_0x184391[_0x4a9e('0x1b')];var _0x39e01d=_0x44c541?_0x242009[_0x4a9e('0x1a')]:_0x184391[_0x4a9e('0x1b')]+_0x184391[_0x4a9e('0x19')];var _0x1945ff;if(_0x39e01d>=_0x5d6bf2){_0x39e01d=_0x5d6bf2;_0x1945ff=0xc8;}else{_0x1945ff=0xce;}_0x228c44[_0x4a9e('0x17')](_0x1945ff);return _0x228c44['set'](_0x4a9e('0x1c'),_0x1c3893+'-'+_0x39e01d+'/'+_0x5d6bf2)[_0x4a9e('0x1d')](_0x242009);}return null;};}function patchUpdates(_0x7a1eb0){return function(_0x441305){try{jsonpatch[_0x4a9e('0x1e')](_0x441305,_0x7a1eb0,!![]);}catch(_0x31d49d){return BPromise[_0x4a9e('0x1f')](_0x31d49d);}return _0x441305[_0x4a9e('0x20')]();};}function saveUpdates(_0x1ae6dd,_0x42eba4){return function(_0x5ba258){if(_0x5ba258){return _0x5ba258[_0x4a9e('0x21')](_0x1ae6dd)[_0x4a9e('0x22')](function(_0x26ec1d){return _0x26ec1d;});}return null;};}function removeEntity(_0x59813c,_0xa93510){return function(_0x5aca9c){if(_0x5aca9c){return _0x5aca9c['destroy']()[_0x4a9e('0x22')](function(){_0x59813c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x36f5ff,_0x4349b0){return function(_0x47707c){if(!_0x47707c){_0x36f5ff['sendStatus'](0x194);}return _0x47707c;};}function handleError(_0x4304ff,_0x50e032){_0x50e032=_0x50e032||0x1f4;return function(_0x3d7ccc){logger[_0x4a9e('0x23')](_0x3d7ccc[_0x4a9e('0x24')]);if(_0x3d7ccc[_0x4a9e('0x25')]){delete _0x3d7ccc[_0x4a9e('0x25')];}_0x4304ff[_0x4a9e('0x17')](_0x50e032)['send'](_0x3d7ccc);};}exports[_0x4a9e('0x26')]=function(_0xf8e888,_0x335b0c){var _0x23e068={},_0x4670bb={},_0x59f88a={'count':0x0,'rows':[]};var _0x107e9a=_[_0x4a9e('0x27')](db[_0x4a9e('0x28')][_0x4a9e('0x29')],function(_0x3e4c34){return{'name':_0x3e4c34[_0x4a9e('0x2a')],'type':_0x3e4c34['type'][_0x4a9e('0x2b')]};});_0x4670bb[_0x4a9e('0x2c')]=_[_0x4a9e('0x27')](_0x107e9a,_0x4a9e('0x25'));_0x4670bb[_0x4a9e('0x2d')]=_[_0x4a9e('0x2e')](_0xf8e888[_0x4a9e('0x2d')]);_0x4670bb[_0x4a9e('0x2f')]=_[_0x4a9e('0x30')](_0x4670bb[_0x4a9e('0x2c')],_0x4670bb[_0x4a9e('0x2d')]);_0x23e068[_0x4a9e('0x31')]=_[_0x4a9e('0x30')](_0x4670bb['model'],qs[_0x4a9e('0x32')](_0xf8e888[_0x4a9e('0x2d')][_0x4a9e('0x32')]));_0x23e068['attributes']=_0x23e068[_0x4a9e('0x31')][_0x4a9e('0x33')]?_0x23e068[_0x4a9e('0x31')]:_0x4670bb['model'];if(!_0xf8e888[_0x4a9e('0x2d')][_0x4a9e('0x34')](_0x4a9e('0x35'))){_0x23e068[_0x4a9e('0x19')]=qs[_0x4a9e('0x19')](_0xf8e888[_0x4a9e('0x2d')][_0x4a9e('0x19')]);_0x23e068[_0x4a9e('0x1b')]=qs[_0x4a9e('0x1b')](_0xf8e888[_0x4a9e('0x2d')][_0x4a9e('0x1b')]);}_0x23e068['order']=qs['sort'](_0xf8e888[_0x4a9e('0x2d')][_0x4a9e('0x36')]);_0x23e068[_0x4a9e('0x37')]=qs[_0x4a9e('0x2f')](_[_0x4a9e('0x38')](_0xf8e888[_0x4a9e('0x2d')],_0x4670bb[_0x4a9e('0x2f')]),_0x107e9a);if(_0xf8e888['query'][_0x4a9e('0x39')]){_0x23e068[_0x4a9e('0x37')]=_['merge'](_0x23e068[_0x4a9e('0x37')],{'$or':_[_0x4a9e('0x27')](_0x107e9a,function(_0x281e99){if(_0x281e99[_0x4a9e('0x3a')]!==_0x4a9e('0x3b')){var _0x38f886={};_0x38f886[_0x281e99['name']]={'$like':'%'+_0xf8e888[_0x4a9e('0x2d')]['filter']+'%'};return _0x38f886;}})});}_0x23e068=_[_0x4a9e('0x3c')]({},_0x23e068,_0xf8e888[_0x4a9e('0x3d')]);var _0x535160={'where':_0x23e068[_0x4a9e('0x37')]};return db['Migration'][_0x4a9e('0x1a')](_0x535160)[_0x4a9e('0x22')](function(_0x1d6fd2){_0x59f88a[_0x4a9e('0x1a')]=_0x1d6fd2;if(_0xf8e888[_0x4a9e('0x2d')]['includeAll']){_0x23e068[_0x4a9e('0x3e')]=[{'all':!![]}];}return db[_0x4a9e('0x28')][_0x4a9e('0x3f')](_0x23e068);})[_0x4a9e('0x22')](function(_0x5a464f){_0x59f88a[_0x4a9e('0x40')]=_0x5a464f;return _0x59f88a;})[_0x4a9e('0x22')](respondWithFilteredResult(_0x335b0c,_0x23e068))[_0x4a9e('0x41')](handleError(_0x335b0c,null));};
\ No newline at end of file
+var _0xfa26=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','Migration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0xfa26,0x1a9));var _0x6fa2=function(_0x1b06b4,_0x322789){_0x1b06b4=_0x1b06b4-0x0;var _0x3ad5a8=_0xfa26[_0x1b06b4];return _0x3ad5a8;};'use strict';var emlformat=require(_0x6fa2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6fa2('0x1'));var jsonpatch=require(_0x6fa2('0x2'));var rp=require(_0x6fa2('0x3'));var moment=require(_0x6fa2('0x4'));var BPromise=require(_0x6fa2('0x5'));var Mustache=require(_0x6fa2('0x6'));var util=require('util');var path=require(_0x6fa2('0x7'));var sox=require(_0x6fa2('0x8'));var csv=require(_0x6fa2('0x9'));var ejs=require(_0x6fa2('0xa'));var fs=require('fs');var fs_extra=require(_0x6fa2('0xb'));var _=require(_0x6fa2('0xc'));var squel=require(_0x6fa2('0xd'));var crypto=require(_0x6fa2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x6fa2('0xf'));var toCsv=require(_0x6fa2('0x9'));var querystring=require('querystring');var Papa=require(_0x6fa2('0x10'));var Redis=require(_0x6fa2('0x11'));var authService=require(_0x6fa2('0x12'));var qs=require(_0x6fa2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6fa2('0x14'))('api');var utils=require(_0x6fa2('0x15'));var config=require(_0x6fa2('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x582cb2,_0x3dfcc9){_0x3dfcc9=_0x3dfcc9||0xcc;return function(_0x3fa780){if(_0x3fa780){return _0x582cb2[_0x6fa2('0x17')](_0x3dfcc9);}return _0x582cb2[_0x6fa2('0x18')](_0x3dfcc9)[_0x6fa2('0x19')]();};}function respondWithResult(_0x604567,_0x21f029){_0x21f029=_0x21f029||0xc8;return function(_0x5b3b4f){if(_0x5b3b4f){return _0x604567['status'](_0x21f029)[_0x6fa2('0x1a')](_0x5b3b4f);}};}function respondWithFilteredResult(_0x42be79,_0x5f0843){return function(_0x19b0b7){if(_0x19b0b7){var _0x595996=typeof _0x5f0843[_0x6fa2('0x1b')]===_0x6fa2('0x1c')&&typeof _0x5f0843[_0x6fa2('0x1d')]===_0x6fa2('0x1c');var _0x3212f4=_0x19b0b7['count'];var _0x58c392=_0x595996?0x0:_0x5f0843['offset'];var _0x371201=_0x595996?_0x19b0b7[_0x6fa2('0x1e')]:_0x5f0843[_0x6fa2('0x1b')]+_0x5f0843[_0x6fa2('0x1d')];var _0x1829d7;if(_0x371201>=_0x3212f4){_0x371201=_0x3212f4;_0x1829d7=0xc8;}else{_0x1829d7=0xce;}_0x42be79[_0x6fa2('0x18')](_0x1829d7);return _0x42be79[_0x6fa2('0x1f')](_0x6fa2('0x20'),_0x58c392+'-'+_0x371201+'/'+_0x3212f4)['json'](_0x19b0b7);}return null;};}function patchUpdates(_0x2bd3f4){return function(_0x5f5875){try{jsonpatch[_0x6fa2('0x21')](_0x5f5875,_0x2bd3f4,!![]);}catch(_0x4759a6){return BPromise['reject'](_0x4759a6);}return _0x5f5875[_0x6fa2('0x22')]();};}function saveUpdates(_0x2a1af4,_0xb2297){return function(_0x13bb4e){if(_0x13bb4e){return _0x13bb4e[_0x6fa2('0x23')](_0x2a1af4)['then'](function(_0x30ff5b){return _0x30ff5b;});}return null;};}function removeEntity(_0x220b04,_0x3be6e6){return function(_0x375b71){if(_0x375b71){return _0x375b71[_0x6fa2('0x24')]()[_0x6fa2('0x25')](function(){_0x220b04[_0x6fa2('0x18')](0xcc)[_0x6fa2('0x19')]();});}};}function handleEntityNotFound(_0x30315b,_0xa660fc){return function(_0x451db7){if(!_0x451db7){_0x30315b[_0x6fa2('0x17')](0x194);}return _0x451db7;};}function handleError(_0x49c5be,_0x2b8a05){_0x2b8a05=_0x2b8a05||0x1f4;return function(_0x43a656){logger[_0x6fa2('0x26')](_0x43a656[_0x6fa2('0x27')]);if(_0x43a656[_0x6fa2('0x28')]){delete _0x43a656[_0x6fa2('0x28')];}_0x49c5be['status'](_0x2b8a05)[_0x6fa2('0x29')](_0x43a656);};}exports[_0x6fa2('0x2a')]=function(_0x2385c3,_0x28c6ae){var _0xae62e3={},_0x458bfa={},_0x325a4c={'count':0x0,'rows':[]};var _0x9cc8f0=_['map'](db[_0x6fa2('0x2b')][_0x6fa2('0x2c')],function(_0xd480bd){return{'name':_0xd480bd[_0x6fa2('0x2d')],'type':_0xd480bd[_0x6fa2('0x2e')][_0x6fa2('0x2f')]};});_0x458bfa['model']=_['map'](_0x9cc8f0,_0x6fa2('0x28'));_0x458bfa[_0x6fa2('0x30')]=_[_0x6fa2('0x31')](_0x2385c3[_0x6fa2('0x30')]);_0x458bfa[_0x6fa2('0x32')]=_[_0x6fa2('0x33')](_0x458bfa[_0x6fa2('0x34')],_0x458bfa[_0x6fa2('0x30')]);_0xae62e3['attributes']=_[_0x6fa2('0x33')](_0x458bfa['model'],qs[_0x6fa2('0x35')](_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x35')]));_0xae62e3[_0x6fa2('0x36')]=_0xae62e3['attributes'][_0x6fa2('0x37')]?_0xae62e3[_0x6fa2('0x36')]:_0x458bfa[_0x6fa2('0x34')];if(!_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x38')](_0x6fa2('0x39'))){_0xae62e3[_0x6fa2('0x1d')]=qs[_0x6fa2('0x1d')](_0x2385c3[_0x6fa2('0x30')]['limit']);_0xae62e3[_0x6fa2('0x1b')]=qs['offset'](_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x1b')]);}_0xae62e3[_0x6fa2('0x3a')]=qs[_0x6fa2('0x3b')](_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x3b')]);_0xae62e3[_0x6fa2('0x3c')]=qs[_0x6fa2('0x32')](_[_0x6fa2('0x3d')](_0x2385c3['query'],_0x458bfa[_0x6fa2('0x32')]),_0x9cc8f0);if(_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x3e')]){_0xae62e3[_0x6fa2('0x3c')]=_[_0x6fa2('0x3f')](_0xae62e3[_0x6fa2('0x3c')],{'$or':_[_0x6fa2('0x40')](_0x9cc8f0,function(_0xda536d){if(_0xda536d['type']!==_0x6fa2('0x41')){var _0x27bbfa={};_0x27bbfa[_0xda536d['name']]={'$like':'%'+_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x3e')]+'%'};return _0x27bbfa;}})});}_0xae62e3=_[_0x6fa2('0x3f')]({},_0xae62e3,_0x2385c3[_0x6fa2('0x42')]);var _0x29dee1={'where':_0xae62e3['where']};return db[_0x6fa2('0x2b')]['count'](_0x29dee1)[_0x6fa2('0x25')](function(_0x3d4114){_0x325a4c[_0x6fa2('0x1e')]=_0x3d4114;if(_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x43')]){_0xae62e3[_0x6fa2('0x44')]=[{'all':!![]}];}return db[_0x6fa2('0x2b')][_0x6fa2('0x45')](_0xae62e3);})[_0x6fa2('0x25')](function(_0x582199){_0x325a4c[_0x6fa2('0x46')]=_0x582199;return _0x325a4c;})[_0x6fa2('0x25')](respondWithFilteredResult(_0x28c6ae,_0xae62e3))[_0x6fa2('0x47')](handleError(_0x28c6ae,null));};
\ No newline at end of file
index e91d239..a623931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc816=['api','moment','bluebird','request-promise','rimraf','./migration.attributes','exports','define','Migration','util','../../config/logger'];(function(_0x5cdff9,_0x124a80){var _0x157a9d=function(_0x5c760f){while(--_0x5c760f){_0x5cdff9['push'](_0x5cdff9['shift']());}};_0x157a9d(++_0x124a80);}(_0xc816,0xe5));var _0x6c81=function(_0x143c55,_0x110e5c){_0x143c55=_0x143c55-0x0;var _0x1f4fba=_0xc816[_0x143c55];return _0x1f4fba;};'use strict';var _=require('lodash');var util=require(_0x6c81('0x0'));var logger=require(_0x6c81('0x1'))(_0x6c81('0x2'));var moment=require(_0x6c81('0x3'));var BPromise=require(_0x6c81('0x4'));var rp=require(_0x6c81('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6c81('0x6'));var config=require('../../config/environment');var attributes=require(_0x6c81('0x7'));module[_0x6c81('0x8')]=function(_0x5e51c3,_0x5382f8){return _0x5e51c3[_0x6c81('0x9')](_0x6c81('0xa'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3dd6=['Migration','migrations','lodash','util','api','moment','request-promise','path','rimraf','exports','define'];(function(_0xc78832,_0x27a347){var _0x21753a=function(_0x2efa96){while(--_0x2efa96){_0xc78832['push'](_0xc78832['shift']());}};_0x21753a(++_0x27a347);}(_0x3dd6,0x199));var _0x63dd=function(_0x23be51,_0xc02a1b){_0x23be51=_0x23be51-0x0;var _0x47a26d=_0x3dd6[_0x23be51];return _0x47a26d;};'use strict';var _=require(_0x63dd('0x0'));var util=require(_0x63dd('0x1'));var logger=require('../../config/logger')(_0x63dd('0x2'));var moment=require(_0x63dd('0x3'));var BPromise=require('bluebird');var rp=require(_0x63dd('0x4'));var fs=require('fs');var path=require(_0x63dd('0x5'));var rimraf=require(_0x63dd('0x6'));var config=require('../../config/environment');var attributes=require('./migration.attributes');module[_0x63dd('0x7')]=function(_0x47ddfa,_0x15cf8b){return _0x47ddfa[_0x63dd('0x8')](_0x63dd('0x9'),attributes,{'tableName':_0x63dd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c4837d2..f4ac963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf3=['request\x20sent','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s'];(function(_0x329437,_0x1de73a){var _0x3789d9=function(_0x37832e){while(--_0x37832e){_0x329437['push'](_0x329437['shift']());}};_0x3789d9(++_0x1de73a);}(_0x1cf3,0x1be));var _0x31cf=function(_0x264d22,_0xa64127){_0x264d22=_0x264d22-0x0;var _0x1fc53c=_0x1cf3[_0x264d22];return _0x1fc53c;};'use strict';var _=require(_0x31cf('0x0'));var util=require(_0x31cf('0x1'));var moment=require(_0x31cf('0x2'));var BPromise=require(_0x31cf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31cf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x31cf('0x5'));var logger=require(_0x31cf('0x6'))(_0x31cf('0x7'));var config=require(_0x31cf('0x8'));var jayson=require(_0x31cf('0x9'));var client=jayson[_0x31cf('0xa')][_0x31cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1830b4,_0x2581c4,_0x6be80){return new BPromise(function(_0x3f7b2e,_0x3fa83e){return client[_0x31cf('0xc')](_0x1830b4,_0x6be80)[_0x31cf('0xd')](function(_0x56e8f6){logger[_0x31cf('0xe')](_0x31cf('0xf'),_0x2581c4,_0x31cf('0x10'));logger['debug'](_0x31cf('0x11'),_0x2581c4,_0x31cf('0x10'),JSON[_0x31cf('0x12')](_0x56e8f6));if(_0x56e8f6[_0x31cf('0x13')]){if(_0x56e8f6[_0x31cf('0x13')]['code']===0x1f4){logger['error'](_0x31cf('0xf'),_0x2581c4,_0x56e8f6[_0x31cf('0x13')][_0x31cf('0x14')]);return _0x3fa83e(_0x56e8f6[_0x31cf('0x13')]['message']);}logger[_0x31cf('0x13')](_0x31cf('0xf'),_0x2581c4,_0x56e8f6[_0x31cf('0x13')]['message']);return _0x3f7b2e(_0x56e8f6[_0x31cf('0x13')][_0x31cf('0x14')]);}else{logger[_0x31cf('0xe')](_0x31cf('0xf'),_0x2581c4,'request\x20sent');_0x3f7b2e(_0x56e8f6['result'][_0x31cf('0x14')]);}})[_0x31cf('0x15')](function(_0x2d5532){logger['error'](_0x31cf('0xf'),_0x2581c4,_0x2d5532);_0x3fa83e(_0x2d5532);});});}
\ No newline at end of file
+var _0x21a3=['jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x3864cf,_0xd9f955){var _0x62500b=function(_0x7f1784){while(--_0x7f1784){_0x3864cf['push'](_0x3864cf['shift']());}};_0x62500b(++_0xd9f955);}(_0x21a3,0x66));var _0x321a=function(_0x19babd,_0x1d4ef7){_0x19babd=_0x19babd-0x0;var _0x314eaf=_0x21a3[_0x19babd];return _0x314eaf;};'use strict';var _=require(_0x321a('0x0'));var util=require('util');var moment=require(_0x321a('0x1'));var BPromise=require(_0x321a('0x2'));var rs=require(_0x321a('0x3'));var fs=require('fs');var Redis=require(_0x321a('0x4'));var db=require(_0x321a('0x5'))['db'];var utils=require(_0x321a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x321a('0x7'));var jayson=require(_0x321a('0x8'));var client=jayson[_0x321a('0x9')][_0x321a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f3b81,_0x388901,_0x24a04c){return new BPromise(function(_0x10c1d3,_0xdfd6b8){return client[_0x321a('0xb')](_0x5f3b81,_0x24a04c)[_0x321a('0xc')](function(_0x2c52dc){logger[_0x321a('0xd')](_0x321a('0xe'),_0x388901,_0x321a('0xf'));logger[_0x321a('0x10')](_0x321a('0x11'),_0x388901,'request\x20sent',JSON[_0x321a('0x12')](_0x2c52dc));if(_0x2c52dc[_0x321a('0x13')]){if(_0x2c52dc['error']['code']===0x1f4){logger[_0x321a('0x13')]('Migration,\x20%s,\x20%s',_0x388901,_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);return _0xdfd6b8(_0x2c52dc['error']['message']);}logger[_0x321a('0x13')](_0x321a('0xe'),_0x388901,_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);return _0x10c1d3(_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);}else{logger[_0x321a('0xd')](_0x321a('0xe'),_0x388901,'request\x20sent');_0x10c1d3(_0x2c52dc[_0x321a('0x15')][_0x321a('0x14')]);}})['catch'](function(_0x45ceb2){logger[_0x321a('0x13')](_0x321a('0xe'),_0x388901,_0x45ceb2);_0xdfd6b8(_0x45ceb2);});});}
\ No newline at end of file
index 0df9152..6a593b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a12=['/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./network.controller','get','isAuthenticated','index','show','create'];(function(_0x1caf1d,_0x46f071){var _0x45a731=function(_0x1cbcf2){while(--_0x1cbcf2){_0x1caf1d['push'](_0x1caf1d['shift']());}};_0x45a731(++_0x46f071);}(_0x7a12,0xe8));var _0x27a1=function(_0x8852cb,_0x5524c1){_0x8852cb=_0x8852cb-0x0;var _0x3b8331=_0x7a12[_0x8852cb];return _0x3b8331;};'use strict';var multer=require(_0x27a1('0x0'));var util=require(_0x27a1('0x1'));var path=require(_0x27a1('0x2'));var timeout=require(_0x27a1('0x3'));var express=require(_0x27a1('0x4'));var router=express[_0x27a1('0x5')]();var fs_extra=require(_0x27a1('0x6'));var auth=require(_0x27a1('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x27a1('0x8'));var controller=require(_0x27a1('0x9'));router[_0x27a1('0xa')]('/',auth[_0x27a1('0xb')](),controller[_0x27a1('0xc')]);router[_0x27a1('0xa')]('/:id',auth[_0x27a1('0xb')](),controller[_0x27a1('0xd')]);router['post']('/',auth[_0x27a1('0xb')](),controller[_0x27a1('0xe')]);router['put'](_0x27a1('0xf'),auth[_0x27a1('0xb')](),controller[_0x27a1('0x10')]);router['delete'](_0x27a1('0xf'),auth[_0x27a1('0xb')](),controller[_0x27a1('0x11')]);module[_0x27a1('0x12')]=router;
\ No newline at end of file
+var _0x4529=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','create','update','delete','destroy','exports','multer'];(function(_0x2a9fc8,_0x2e2cdf){var _0x113e9e=function(_0x28a64f){while(--_0x28a64f){_0x2a9fc8['push'](_0x2a9fc8['shift']());}};_0x113e9e(++_0x2e2cdf);}(_0x4529,0x109));var _0x9452=function(_0x9faa01,_0x1f2e59){_0x9faa01=_0x9faa01-0x0;var _0x4b4cef=_0x4529[_0x9faa01];return _0x4b4cef;};'use strict';var multer=require(_0x9452('0x0'));var util=require('util');var path=require(_0x9452('0x1'));var timeout=require(_0x9452('0x2'));var express=require(_0x9452('0x3'));var router=express[_0x9452('0x4')]();var fs_extra=require(_0x9452('0x5'));var auth=require(_0x9452('0x6'));var interaction=require(_0x9452('0x7'));var config=require(_0x9452('0x8'));var controller=require('./network.controller');router['get']('/',auth[_0x9452('0x9')](),controller[_0x9452('0xa')]);router[_0x9452('0xb')](_0x9452('0xc'),auth[_0x9452('0x9')](),controller[_0x9452('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9452('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9452('0xf')]);router[_0x9452('0x10')](_0x9452('0xc'),auth[_0x9452('0x9')](),controller[_0x9452('0x11')]);module[_0x9452('0x12')]=router;
\ No newline at end of file
index c5b764f..4f15555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ecd=['sequelize','ENUM','externip','turn','STRING'];(function(_0x43064c,_0xb5dd0b){var _0xe79b2f=function(_0x5e1b5d){while(--_0x5e1b5d){_0x43064c['push'](_0x43064c['shift']());}};_0xe79b2f(++_0xb5dd0b);}(_0x2ecd,0x78));var _0xd2ec=function(_0x53a3c9,_0x5bd249){_0x53a3c9=_0x53a3c9-0x0;var _0x464864=_0x2ecd[_0x53a3c9];return _0x464864;};'use strict';var Sequelize=require(_0xd2ec('0x0'));module['exports']={'type':{'type':Sequelize[_0xd2ec('0x1')]('localnet',_0xd2ec('0x2'),'stun',_0xd2ec('0x3'))},'value':{'type':Sequelize[_0xd2ec('0x4')]},'username':{'type':Sequelize[_0xd2ec('0x4')]},'password':{'type':Sequelize[_0xd2ec('0x4')]}};
\ No newline at end of file
+var _0x2df4=['externip','stun','turn','STRING','sequelize','ENUM'];(function(_0x3394b4,_0x4d8898){var _0x2acad2=function(_0x290be2){while(--_0x290be2){_0x3394b4['push'](_0x3394b4['shift']());}};_0x2acad2(++_0x4d8898);}(_0x2df4,0xd0));var _0x42df=function(_0x2c2954,_0x3cadf4){_0x2c2954=_0x2c2954-0x0;var _0x1e834e=_0x2df4[_0x2c2954];return _0x1e834e;};'use strict';var Sequelize=require(_0x42df('0x0'));module['exports']={'type':{'type':Sequelize[_0x42df('0x1')]('localnet',_0x42df('0x2'),_0x42df('0x3'),_0x42df('0x4'))},'value':{'type':Sequelize[_0x42df('0x5')]},'username':{'type':Sequelize[_0x42df('0x5')]},'password':{'type':Sequelize[_0x42df('0x5')]}};
\ No newline at end of file
index 88dced6..bd544ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d2=['Reload','res_stun_monitor.so','toUpperCase','TURN','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','writeFileSync','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','findAll','readFileSync','params','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','json','undefined','count','set','Content-Range','apply','update','then','destroy','end','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','limit','offset','order','where','pick','filters','filter','merge','VIRTUAL','Network','include','rows','show','options','find','catch','create','transaction','body','STUN','join','root','server/files/templates/stun_multiple.ejs','render','/etc/asterisk/stun_xcally.conf'];(function(_0x2645b3,_0x2bae8b){var _0x8b0cad=function(_0x2e3b08){while(--_0x2e3b08){_0x2645b3['push'](_0x2645b3['shift']());}};_0x8b0cad(++_0x2bae8b);}(_0x11d2,0x1c4));var _0x211d=function(_0x4c445a,_0x4ee80f){_0x4c445a=_0x4c445a-0x0;var _0x2f611c=_0x11d2[_0x4c445a];return _0x2f611c;};'use strict';var emlformat=require(_0x211d('0x0'));var rimraf=require(_0x211d('0x1'));var zipdir=require(_0x211d('0x2'));var jsonpatch=require(_0x211d('0x3'));var rp=require(_0x211d('0x4'));var moment=require(_0x211d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x211d('0x6'));var util=require(_0x211d('0x7'));var path=require(_0x211d('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x211d('0x9'));var fs=require('fs');var fs_extra=require(_0x211d('0xa'));var _=require(_0x211d('0xb'));var squel=require(_0x211d('0xc'));var crypto=require(_0x211d('0xd'));var jsforce=require(_0x211d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x211d('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x211d('0x10'));var authService=require(_0x211d('0x11'));var qs=require(_0x211d('0x12'));var as=require(_0x211d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x211d('0x14'))(_0x211d('0x15'));var utils=require(_0x211d('0x16'));var config=require(_0x211d('0x17'));var licenseUtil=require(_0x211d('0x18'));var db=require(_0x211d('0x19'))['db'];var jayson=require(_0x211d('0x1a'));var client=jayson[_0x211d('0x1b')][_0x211d('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xbf27bc,_0x4b45db,_0x2911e1,_0x26cfe2){return new BPromise(function(_0x30418e,_0x266a3b){var _0xe730ee=_0x26cfe2||client;return _0xe730ee[_0x211d('0x1d')](_0xbf27bc,_0x2911e1)['then'](function(_0x250ffd){logger[_0x211d('0x1e')](_0x211d('0x1f'),_0x4b45db,'request\x20sent');logger[_0x211d('0x20')](_0x211d('0x21'),_0x4b45db,_0x211d('0x22'),JSON[_0x211d('0x23')](_0x250ffd));if(_0x250ffd[_0x211d('0x24')]){if(_0x250ffd[_0x211d('0x24')][_0x211d('0x25')]===0x1f4){logger['error'](_0x211d('0x1f'),_0x4b45db,_0x250ffd[_0x211d('0x24')][_0x211d('0x26')]);return _0x266a3b(_0x250ffd[_0x211d('0x24')]['message']);}logger[_0x211d('0x24')]('Network,\x20%s,\x20%s',_0x4b45db,_0x250ffd[_0x211d('0x24')][_0x211d('0x26')]);return _0x30418e(_0x250ffd[_0x211d('0x24')][_0x211d('0x26')]);}else{logger[_0x211d('0x1e')](_0x211d('0x1f'),_0x4b45db,_0x211d('0x22'));_0x30418e(_0x250ffd[_0x211d('0x27')]['message']);}})['catch'](function(_0x2829ca){logger[_0x211d('0x24')](_0x211d('0x1f'),_0x4b45db,_0x2829ca);_0x266a3b(_0x2829ca);});});}function respondWithStatusCode(_0x302cf9,_0x266aa5){_0x266aa5=_0x266aa5||0xcc;return function(_0x2272f0){if(_0x2272f0){return _0x302cf9[_0x211d('0x28')](_0x266aa5);}return _0x302cf9[_0x211d('0x29')](_0x266aa5)['end']();};}function respondWithResult(_0x62ecde,_0x5742a6){_0x5742a6=_0x5742a6||0xc8;return function(_0x587d48){if(_0x587d48){return _0x62ecde['status'](_0x5742a6)[_0x211d('0x2a')](_0x587d48);}};}function respondWithFilteredResult(_0x5662cc,_0x5870a4){return function(_0x52276c){if(_0x52276c){var _0x4f6095=typeof _0x5870a4['offset']===_0x211d('0x2b')&&typeof _0x5870a4['limit']===_0x211d('0x2b');var _0x1f3d8a=_0x52276c[_0x211d('0x2c')];var _0xb2d056=_0x4f6095?0x0:_0x5870a4['offset'];var _0x30a986=_0x4f6095?_0x52276c[_0x211d('0x2c')]:_0x5870a4['offset']+_0x5870a4['limit'];var _0x5d50d5;if(_0x30a986>=_0x1f3d8a){_0x30a986=_0x1f3d8a;_0x5d50d5=0xc8;}else{_0x5d50d5=0xce;}_0x5662cc['status'](_0x5d50d5);return _0x5662cc[_0x211d('0x2d')](_0x211d('0x2e'),_0xb2d056+'-'+_0x30a986+'/'+_0x1f3d8a)[_0x211d('0x2a')](_0x52276c);}return null;};}function patchUpdates(_0x47614f){return function(_0x41c327){try{jsonpatch[_0x211d('0x2f')](_0x41c327,_0x47614f,!![]);}catch(_0x31cbb7){return BPromise['reject'](_0x31cbb7);}return _0x41c327['save']();};}function saveUpdates(_0x33a2df,_0x5cdfd0){return function(_0x3aaaa9){if(_0x3aaaa9){return _0x3aaaa9[_0x211d('0x30')](_0x33a2df)[_0x211d('0x31')](function(_0x4e4045){return _0x4e4045;});}return null;};}function removeEntity(_0x206ddc,_0x435914){return function(_0x590a49){if(_0x590a49){return _0x590a49[_0x211d('0x32')]()[_0x211d('0x31')](function(){_0x206ddc['status'](0xcc)[_0x211d('0x33')]();});}};}function handleEntityNotFound(_0x31c941,_0x26b986){return function(_0x544e22){if(!_0x544e22){_0x31c941['sendStatus'](0x194);}return _0x544e22;};}function handleError(_0x237ca8,_0x28391c){_0x28391c=_0x28391c||0x1f4;return function(_0x262249){logger[_0x211d('0x24')](_0x262249['stack']);if(_0x262249[_0x211d('0x34')]){delete _0x262249[_0x211d('0x34')];}_0x237ca8[_0x211d('0x29')](_0x28391c)[_0x211d('0x35')](_0x262249);};}exports[_0x211d('0x36')]=function(_0x447b9b,_0x8fb1da){var _0x4ac4e2={},_0x104d1d={},_0x427343={'count':0x0,'rows':[]};var _0x5275dc=_[_0x211d('0x37')](db['Network'][_0x211d('0x38')],function(_0x273cb2){return{'name':_0x273cb2[_0x211d('0x39')],'type':_0x273cb2[_0x211d('0x3a')][_0x211d('0x3b')]};});_0x104d1d[_0x211d('0x3c')]=_[_0x211d('0x37')](_0x5275dc,'name');_0x104d1d[_0x211d('0x3d')]=_[_0x211d('0x3e')](_0x447b9b[_0x211d('0x3d')]);_0x104d1d['filters']=_['intersection'](_0x104d1d[_0x211d('0x3c')],_0x104d1d[_0x211d('0x3d')]);_0x4ac4e2[_0x211d('0x3f')]=_[_0x211d('0x40')](_0x104d1d[_0x211d('0x3c')],qs[_0x211d('0x41')](_0x447b9b[_0x211d('0x3d')][_0x211d('0x41')]));_0x4ac4e2[_0x211d('0x3f')]=_0x4ac4e2[_0x211d('0x3f')][_0x211d('0x42')]?_0x4ac4e2[_0x211d('0x3f')]:_0x104d1d['model'];if(!_0x447b9b[_0x211d('0x3d')][_0x211d('0x43')]('nolimit')){_0x4ac4e2[_0x211d('0x44')]=qs[_0x211d('0x44')](_0x447b9b['query'][_0x211d('0x44')]);_0x4ac4e2[_0x211d('0x45')]=qs[_0x211d('0x45')](_0x447b9b[_0x211d('0x3d')][_0x211d('0x45')]);}_0x4ac4e2[_0x211d('0x46')]=qs['sort'](_0x447b9b[_0x211d('0x3d')]['sort']);_0x4ac4e2[_0x211d('0x47')]=qs['filters'](_[_0x211d('0x48')](_0x447b9b['query'],_0x104d1d[_0x211d('0x49')]),_0x5275dc);if(_0x447b9b[_0x211d('0x3d')][_0x211d('0x4a')]){_0x4ac4e2[_0x211d('0x47')]=_[_0x211d('0x4b')](_0x4ac4e2[_0x211d('0x47')],{'$or':_[_0x211d('0x37')](_0x5275dc,function(_0x56bb63){if(_0x56bb63['type']!==_0x211d('0x4c')){var _0x26a7c4={};_0x26a7c4[_0x56bb63[_0x211d('0x34')]]={'$like':'%'+_0x447b9b[_0x211d('0x3d')][_0x211d('0x4a')]+'%'};return _0x26a7c4;}})});}_0x4ac4e2=_['merge']({},_0x4ac4e2,_0x447b9b['options']);var _0x4ab10c={'where':_0x4ac4e2['where']};return db[_0x211d('0x4d')][_0x211d('0x2c')](_0x4ab10c)[_0x211d('0x31')](function(_0xcf1a4){_0x427343[_0x211d('0x2c')]=_0xcf1a4;if(_0x447b9b[_0x211d('0x3d')]['includeAll']){_0x4ac4e2[_0x211d('0x4e')]=[{'all':!![]}];}return db['Network']['findAll'](_0x4ac4e2);})['then'](function(_0x578c84){_0x427343[_0x211d('0x4f')]=_0x578c84;return _0x427343;})[_0x211d('0x31')](respondWithFilteredResult(_0x8fb1da,_0x4ac4e2))['catch'](handleError(_0x8fb1da,null));};exports[_0x211d('0x50')]=function(_0x2234f4,_0x1e571c){var _0xa0e4b8={'raw':!![],'where':{'id':_0x2234f4['params']['id']}},_0x2618b7={};_0x2618b7[_0x211d('0x3c')]=_[_0x211d('0x3e')](db['Network'][_0x211d('0x38')]);_0x2618b7[_0x211d('0x3d')]=_['keys'](_0x2234f4[_0x211d('0x3d')]);_0x2618b7['filters']=_['intersection'](_0x2618b7['model'],_0x2618b7['query']);_0xa0e4b8[_0x211d('0x3f')]=_[_0x211d('0x40')](_0x2618b7[_0x211d('0x3c')],qs[_0x211d('0x41')](_0x2234f4['query'][_0x211d('0x41')]));_0xa0e4b8[_0x211d('0x3f')]=_0xa0e4b8[_0x211d('0x3f')][_0x211d('0x42')]?_0xa0e4b8[_0x211d('0x3f')]:_0x2618b7[_0x211d('0x3c')];if(_0x2234f4['query']['includeAll']){_0xa0e4b8[_0x211d('0x4e')]=[{'all':!![]}];}_0xa0e4b8=_[_0x211d('0x4b')]({},_0xa0e4b8,_0x2234f4[_0x211d('0x51')]);return db[_0x211d('0x4d')][_0x211d('0x52')](_0xa0e4b8)[_0x211d('0x31')](handleEntityNotFound(_0x1e571c,null))[_0x211d('0x31')](respondWithResult(_0x1e571c,null))[_0x211d('0x53')](handleError(_0x1e571c,null));};exports[_0x211d('0x54')]=function(_0x2a93ca,_0x10f4d7,_0x3544b4){var _0x1130a5;return db['sequelize'][_0x211d('0x55')](function(_0x4aa774){return db[_0x211d('0x4d')][_0x211d('0x54')](_0x2a93ca[_0x211d('0x56')],{'raw':!![]})[_0x211d('0x31')](function(_0x2536bb){_0x1130a5=_0x2536bb;return db['Network']['findAll']({'where':{'type':_0x2a93ca[_0x211d('0x56')]['type']},'raw':!![]});})[_0x211d('0x31')](function(_0x5acd76){if(_0x1130a5[_0x211d('0x3a')]['toUpperCase']()==_0x211d('0x57')){var _0x80f2ac=fs['readFileSync'](path[_0x211d('0x58')](config[_0x211d('0x59')],_0x211d('0x5a')),'utf8');var _0x53cb51=ejs[_0x211d('0x5b')](_0x80f2ac,{'networks':_0x5acd76||[]});fs['writeFileSync'](_0x211d('0x5c'),_0x53cb51);return respondWithRpcPromise(_0x211d('0x5d'),_0x211d('0x54'),{'module':_0x211d('0x5e')});}else if(_0x1130a5[_0x211d('0x3a')][_0x211d('0x5f')]()==_0x211d('0x60')){var _0x1b484f=fs['readFileSync'](path['join'](config[_0x211d('0x59')],_0x211d('0x61')),_0x211d('0x62'));var _0x1c8bcc=ejs[_0x211d('0x5b')](_0x1b484f,{'networks':_0x5acd76||[]});fs['writeFileSync'](_0x211d('0x63'),_0x1c8bcc);return respondWithRpcPromise('Reload','create',{'module':_0x211d('0x5e')});}else{var _0x55e7fc=fs['readFileSync'](path['join'](config[_0x211d('0x59')],_0x211d('0x64')),'utf8');var _0x54fa46=ejs[_0x211d('0x5b')](_0x55e7fc,{'networks':_0x5acd76||[]});fs[_0x211d('0x65')](util[_0x211d('0x66')](_0x211d('0x67'),_0x2a93ca[_0x211d('0x56')][_0x211d('0x3a')]['toLowerCase']()),_0x54fa46);return respondWithRpcPromise(_0x211d('0x5d'),_0x211d('0x54'),{'module':_0x211d('0x68')});}return null;})[_0x211d('0x31')](function(){return _0x1130a5;});})['then'](respondWithResult(_0x10f4d7,0xc9))[_0x211d('0x53')](handleError(_0x10f4d7,null));};exports['update']=function(_0x287341,_0x308afd,_0x137926){var _0x5ae23f;return db['sequelize'][_0x211d('0x55')](function(_0x17a97d){return db['Network']['find']({'where':{'id':_0x287341['params']['id']}})[_0x211d('0x31')](handleEntityNotFound(_0x308afd,null))[_0x211d('0x31')](saveUpdates(_0x287341[_0x211d('0x56')],null))['then'](function(_0x44cb06){if(_0x44cb06){_0x5ae23f=_0x44cb06;return db[_0x211d('0x4d')][_0x211d('0x69')]({'where':{'type':_0x5ae23f['type']},'raw':!![]});}return null;})['then'](function(_0x4ca1ee){if(_0x5ae23f['type'][_0x211d('0x5f')]()==_0x211d('0x57')){var _0x45bd8d=fs[_0x211d('0x6a')](path[_0x211d('0x58')](config[_0x211d('0x59')],'server/files/templates/stun_multiple.ejs'),_0x211d('0x62'));var _0x56718c=ejs['render'](_0x45bd8d,{'networks':_0x4ca1ee||[]});fs[_0x211d('0x65')]('/etc/asterisk/stun_xcally.conf',_0x56718c);return respondWithRpcPromise('Reload',_0x211d('0x30'),{'module':_0x211d('0x5e')});}else if(_0x5ae23f['type'][_0x211d('0x5f')]()=='TURN'){var _0x593e0f=fs[_0x211d('0x6a')](path[_0x211d('0x58')](config[_0x211d('0x59')],_0x211d('0x61')),_0x211d('0x62'));var _0x3eaff7=ejs[_0x211d('0x5b')](_0x593e0f,{'networks':_0x4ca1ee||[]});fs[_0x211d('0x65')]('/etc/asterisk/turn_xcally.conf',_0x3eaff7);return respondWithRpcPromise('Reload',_0x211d('0x30'),{'module':_0x211d('0x5e')});}else{var _0x2d19d1=fs[_0x211d('0x6a')](path['join'](config[_0x211d('0x59')],'server/files/templates/network.ejs'),_0x211d('0x62'));var _0x141af3=ejs['render'](_0x2d19d1,{'networks':_0x4ca1ee||[]});fs['writeFileSync'](util[_0x211d('0x66')]('/etc/asterisk/sip_xcally_%s.conf',_0x287341[_0x211d('0x56')]['type']['toLowerCase']()),_0x141af3);return respondWithRpcPromise(_0x211d('0x5d'),'update',{'module':_0x211d('0x68')});}return null;})['then'](function(_0x440772){if(_0x440772){return _0x5ae23f;}return null;});})[_0x211d('0x31')](respondWithResult(_0x308afd,null))[_0x211d('0x53')](handleError(_0x308afd,null));};exports['destroy']=function(_0x216892,_0x589bad,_0x4ef83e){var _0x5021f0;return db[_0x211d('0x4d')][_0x211d('0x52')]({'where':{'id':_0x216892[_0x211d('0x6b')]['id']}})[_0x211d('0x31')](function(_0x50b6c3){_0x5021f0=_0x50b6c3;return _0x50b6c3;})[_0x211d('0x31')](handleEntityNotFound(_0x589bad,null))[_0x211d('0x31')](removeEntity(_0x589bad,null))[_0x211d('0x31')](function(){if(_0x5021f0){return db['Network'][_0x211d('0x69')]({'where':{'type':_0x5021f0[_0x211d('0x3a')]},'raw':!![]});}})[_0x211d('0x31')](function(_0x229a56){if(_0x5021f0['type'][_0x211d('0x5f')]()==_0x211d('0x57')){var _0x2cbdb6=fs[_0x211d('0x6a')](path[_0x211d('0x58')](config[_0x211d('0x59')],_0x211d('0x5a')),_0x211d('0x62'));var _0x5d733b=ejs[_0x211d('0x5b')](_0x2cbdb6,{'networks':_0x229a56||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x5d733b);return respondWithRpcPromise(_0x211d('0x5d'),_0x211d('0x32'),{'module':_0x211d('0x5e')});}else if(_0x5021f0['type']['toUpperCase']()==_0x211d('0x60')){var _0x15db63=fs[_0x211d('0x6a')](path[_0x211d('0x58')](config['root'],_0x211d('0x61')),_0x211d('0x62'));var _0x1c7cc7=ejs[_0x211d('0x5b')](_0x15db63,{'networks':_0x229a56||[]});fs[_0x211d('0x65')](_0x211d('0x63'),_0x1c7cc7);return respondWithRpcPromise(_0x211d('0x5d'),_0x211d('0x32'),{'module':_0x211d('0x5e')});}else{var _0x20b727=fs[_0x211d('0x6a')](path[_0x211d('0x58')](config[_0x211d('0x59')],_0x211d('0x64')),'utf8');var _0x4af52e=ejs['render'](_0x20b727,{'networks':_0x229a56||[]});fs[_0x211d('0x65')](util[_0x211d('0x66')]('/etc/asterisk/sip_xcally_%s.conf',_0x216892[_0x211d('0x56')][_0x211d('0x3a')][_0x211d('0x6c')]()),_0x4af52e);return respondWithRpcPromise(_0x211d('0x5d'),'destroy',{'module':_0x211d('0x68')});}return null;})[_0x211d('0x53')](handleError(_0x589bad,null));};
\ No newline at end of file
+var _0x2a1d=['then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','update','stack','name','send','index','map','Network','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','params','length','includeAll','include','find','create','body','toUpperCase','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','readFileSync','join','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','format','toLowerCase','Reload','chan_sip.so','sequelize','STUN','/etc/asterisk/turn_xcally.conf','/etc/asterisk/sip_xcally_%s.conf','destroy','zip-dir','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise'];(function(_0x3f596d,_0x5e2db7){var _0x32c212=function(_0x336db0){while(--_0x336db0){_0x3f596d['push'](_0x3f596d['shift']());}};_0x32c212(++_0x5e2db7);}(_0x2a1d,0x113));var _0xd2a1=function(_0x4b0d2e,_0x58638b){_0x4b0d2e=_0x4b0d2e-0x0;var _0x1960ab=_0x2a1d[_0x4b0d2e];return _0x1960ab;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd2a1('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd2a1('0x1'));var moment=require(_0xd2a1('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xd2a1('0x3'));var util=require('util');var path=require(_0xd2a1('0x4'));var sox=require('sox');var csv=require(_0xd2a1('0x5'));var ejs=require(_0xd2a1('0x6'));var fs=require('fs');var fs_extra=require(_0xd2a1('0x7'));var _=require(_0xd2a1('0x8'));var squel=require(_0xd2a1('0x9'));var crypto=require(_0xd2a1('0xa'));var jsforce=require(_0xd2a1('0xb'));var deskjs=require(_0xd2a1('0xc'));var toCsv=require(_0xd2a1('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd2a1('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd2a1('0xe'));var hardwareService=require(_0xd2a1('0xf'));var logger=require(_0xd2a1('0x10'))(_0xd2a1('0x11'));var utils=require(_0xd2a1('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xd2a1('0x13'));var db=require(_0xd2a1('0x14'))['db'];var jayson=require(_0xd2a1('0x15'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3dcf82,_0x22dd5e,_0x4dd6bf,_0xb84f04){return new BPromise(function(_0x2d094c,_0xbf88fe){var _0x47ad4e=_0xb84f04||client;return _0x47ad4e['request'](_0x3dcf82,_0x4dd6bf)[_0xd2a1('0x16')](function(_0x58cc46){logger[_0xd2a1('0x17')](_0xd2a1('0x18'),_0x22dd5e,_0xd2a1('0x19'));logger[_0xd2a1('0x1a')]('Network,\x20%s,\x20%s,\x20%s',_0x22dd5e,_0xd2a1('0x19'),JSON[_0xd2a1('0x1b')](_0x58cc46));if(_0x58cc46['error']){if(_0x58cc46[_0xd2a1('0x1c')]['code']===0x1f4){logger[_0xd2a1('0x1c')](_0xd2a1('0x18'),_0x22dd5e,_0x58cc46[_0xd2a1('0x1c')][_0xd2a1('0x1d')]);return _0xbf88fe(_0x58cc46[_0xd2a1('0x1c')][_0xd2a1('0x1d')]);}logger[_0xd2a1('0x1c')](_0xd2a1('0x18'),_0x22dd5e,_0x58cc46[_0xd2a1('0x1c')][_0xd2a1('0x1d')]);return _0x2d094c(_0x58cc46[_0xd2a1('0x1c')]['message']);}else{logger['info']('Network,\x20%s,\x20%s',_0x22dd5e,'request\x20sent');_0x2d094c(_0x58cc46['result'][_0xd2a1('0x1d')]);}})[_0xd2a1('0x1e')](function(_0x2a99ae){logger['error'](_0xd2a1('0x18'),_0x22dd5e,_0x2a99ae);_0xbf88fe(_0x2a99ae);});});}function respondWithStatusCode(_0x3a5839,_0x439451){_0x439451=_0x439451||0xcc;return function(_0x299a9c){if(_0x299a9c){return _0x3a5839[_0xd2a1('0x1f')](_0x439451);}return _0x3a5839[_0xd2a1('0x20')](_0x439451)[_0xd2a1('0x21')]();};}function respondWithResult(_0xb1be8a,_0x448a50){_0x448a50=_0x448a50||0xc8;return function(_0x50fe22){if(_0x50fe22){return _0xb1be8a[_0xd2a1('0x20')](_0x448a50)[_0xd2a1('0x22')](_0x50fe22);}};}function respondWithFilteredResult(_0x724b8b,_0x2d732c){return function(_0x3e2b47){if(_0x3e2b47){var _0x570ed7=typeof _0x2d732c[_0xd2a1('0x23')]==='undefined'&&typeof _0x2d732c[_0xd2a1('0x24')]===_0xd2a1('0x25');var _0xb86c0d=_0x3e2b47[_0xd2a1('0x26')];var _0x293683=_0x570ed7?0x0:_0x2d732c[_0xd2a1('0x23')];var _0x1f9b79=_0x570ed7?_0x3e2b47[_0xd2a1('0x26')]:_0x2d732c['offset']+_0x2d732c[_0xd2a1('0x24')];var _0x2fc0e3;if(_0x1f9b79>=_0xb86c0d){_0x1f9b79=_0xb86c0d;_0x2fc0e3=0xc8;}else{_0x2fc0e3=0xce;}_0x724b8b[_0xd2a1('0x20')](_0x2fc0e3);return _0x724b8b[_0xd2a1('0x27')]('Content-Range',_0x293683+'-'+_0x1f9b79+'/'+_0xb86c0d)[_0xd2a1('0x22')](_0x3e2b47);}return null;};}function patchUpdates(_0x4d2e3f){return function(_0x296df0){try{jsonpatch['apply'](_0x296df0,_0x4d2e3f,!![]);}catch(_0x2ad819){return BPromise[_0xd2a1('0x28')](_0x2ad819);}return _0x296df0[_0xd2a1('0x29')]();};}function saveUpdates(_0xfcc8c,_0x22c401){return function(_0x5c4bb1){if(_0x5c4bb1){return _0x5c4bb1[_0xd2a1('0x2a')](_0xfcc8c)[_0xd2a1('0x16')](function(_0x5eae73){return _0x5eae73;});}return null;};}function removeEntity(_0x4679b3,_0x2e2db4){return function(_0x23f450){if(_0x23f450){return _0x23f450['destroy']()[_0xd2a1('0x16')](function(){_0x4679b3[_0xd2a1('0x20')](0xcc)[_0xd2a1('0x21')]();});}};}function handleEntityNotFound(_0x54944c,_0x5f0d44){return function(_0x115a3f){if(!_0x115a3f){_0x54944c[_0xd2a1('0x1f')](0x194);}return _0x115a3f;};}function handleError(_0x348db0,_0x6a8926){_0x6a8926=_0x6a8926||0x1f4;return function(_0x5ceb43){logger[_0xd2a1('0x1c')](_0x5ceb43[_0xd2a1('0x2b')]);if(_0x5ceb43[_0xd2a1('0x2c')]){delete _0x5ceb43['name'];}_0x348db0[_0xd2a1('0x20')](_0x6a8926)[_0xd2a1('0x2d')](_0x5ceb43);};}exports[_0xd2a1('0x2e')]=function(_0x450a26,_0x3a2e62){var _0x39824d={},_0x141d2c={},_0x2c3680={'count':0x0,'rows':[]};var _0x1b992c=_[_0xd2a1('0x2f')](db[_0xd2a1('0x30')][_0xd2a1('0x31')],function(_0x2a2f2e){return{'name':_0x2a2f2e[_0xd2a1('0x32')],'type':_0x2a2f2e[_0xd2a1('0x33')][_0xd2a1('0x34')]};});_0x141d2c[_0xd2a1('0x35')]=_['map'](_0x1b992c,_0xd2a1('0x2c'));_0x141d2c[_0xd2a1('0x36')]=_[_0xd2a1('0x37')](_0x450a26[_0xd2a1('0x36')]);_0x141d2c[_0xd2a1('0x38')]=_[_0xd2a1('0x39')](_0x141d2c['model'],_0x141d2c[_0xd2a1('0x36')]);_0x39824d[_0xd2a1('0x3a')]=_[_0xd2a1('0x39')](_0x141d2c['model'],qs[_0xd2a1('0x3b')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x3b')]));_0x39824d['attributes']=_0x39824d['attributes']['length']?_0x39824d[_0xd2a1('0x3a')]:_0x141d2c[_0xd2a1('0x35')];if(!_0x450a26['query'][_0xd2a1('0x3c')](_0xd2a1('0x3d'))){_0x39824d['limit']=qs[_0xd2a1('0x24')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x24')]);_0x39824d[_0xd2a1('0x23')]=qs[_0xd2a1('0x23')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x23')]);}_0x39824d['order']=qs[_0xd2a1('0x3e')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x3e')]);_0x39824d[_0xd2a1('0x3f')]=qs[_0xd2a1('0x38')](_[_0xd2a1('0x40')](_0x450a26[_0xd2a1('0x36')],_0x141d2c[_0xd2a1('0x38')]),_0x1b992c);if(_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x41')]){_0x39824d['where']=_[_0xd2a1('0x42')](_0x39824d[_0xd2a1('0x3f')],{'$or':_['map'](_0x1b992c,function(_0x2d0040){if(_0x2d0040['type']!==_0xd2a1('0x43')){var _0x5b5c1b={};_0x5b5c1b[_0x2d0040[_0xd2a1('0x2c')]]={'$like':'%'+_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x41')]+'%'};return _0x5b5c1b;}})});}_0x39824d=_['merge']({},_0x39824d,_0x450a26['options']);var _0x2d6ad8={'where':_0x39824d[_0xd2a1('0x3f')]};return db[_0xd2a1('0x30')][_0xd2a1('0x26')](_0x2d6ad8)[_0xd2a1('0x16')](function(_0x3d0fec){_0x2c3680[_0xd2a1('0x26')]=_0x3d0fec;if(_0x450a26['query']['includeAll']){_0x39824d['include']=[{'all':!![]}];}return db[_0xd2a1('0x30')][_0xd2a1('0x44')](_0x39824d);})[_0xd2a1('0x16')](function(_0x1aa413){_0x2c3680[_0xd2a1('0x45')]=_0x1aa413;return _0x2c3680;})['then'](respondWithFilteredResult(_0x3a2e62,_0x39824d))[_0xd2a1('0x1e')](handleError(_0x3a2e62,null));};exports['show']=function(_0x4aec76,_0x3a1b59){var _0x22c08c={'raw':!![],'where':{'id':_0x4aec76[_0xd2a1('0x46')]['id']}},_0x567f37={};_0x567f37[_0xd2a1('0x35')]=_[_0xd2a1('0x37')](db['Network'][_0xd2a1('0x31')]);_0x567f37[_0xd2a1('0x36')]=_[_0xd2a1('0x37')](_0x4aec76[_0xd2a1('0x36')]);_0x567f37[_0xd2a1('0x38')]=_['intersection'](_0x567f37[_0xd2a1('0x35')],_0x567f37[_0xd2a1('0x36')]);_0x22c08c[_0xd2a1('0x3a')]=_['intersection'](_0x567f37[_0xd2a1('0x35')],qs[_0xd2a1('0x3b')](_0x4aec76[_0xd2a1('0x36')][_0xd2a1('0x3b')]));_0x22c08c[_0xd2a1('0x3a')]=_0x22c08c['attributes'][_0xd2a1('0x47')]?_0x22c08c['attributes']:_0x567f37[_0xd2a1('0x35')];if(_0x4aec76[_0xd2a1('0x36')][_0xd2a1('0x48')]){_0x22c08c[_0xd2a1('0x49')]=[{'all':!![]}];}_0x22c08c=_['merge']({},_0x22c08c,_0x4aec76['options']);return db['Network'][_0xd2a1('0x4a')](_0x22c08c)[_0xd2a1('0x16')](handleEntityNotFound(_0x3a1b59,null))[_0xd2a1('0x16')](respondWithResult(_0x3a1b59,null))['catch'](handleError(_0x3a1b59,null));};exports[_0xd2a1('0x4b')]=function(_0x184689,_0x18a02a,_0x1d8105){var _0x84dfc1;return db['sequelize']['transaction'](function(_0x336fe7){return db['Network'][_0xd2a1('0x4b')](_0x184689['body'],{'raw':!![]})[_0xd2a1('0x16')](function(_0x5d76a0){_0x84dfc1=_0x5d76a0;return db[_0xd2a1('0x30')][_0xd2a1('0x44')]({'where':{'type':_0x184689[_0xd2a1('0x4c')][_0xd2a1('0x33')]},'raw':!![]});})[_0xd2a1('0x16')](function(_0x175143){if(_0x84dfc1[_0xd2a1('0x33')][_0xd2a1('0x4d')]()=='STUN'){var _0x5470da=fs['readFileSync'](path['join'](config[_0xd2a1('0x4e')],_0xd2a1('0x4f')),_0xd2a1('0x50'));var _0x154ba9=ejs[_0xd2a1('0x51')](_0x5470da,{'networks':_0x175143||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x53'),_0x154ba9);return respondWithRpcPromise('Reload','create',{'module':_0xd2a1('0x54')});}else if(_0x84dfc1[_0xd2a1('0x33')][_0xd2a1('0x4d')]()==_0xd2a1('0x55')){var _0x11a547=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x58')),_0xd2a1('0x50'));var _0x3c16b0=ejs[_0xd2a1('0x51')](_0x11a547,{'networks':_0x175143||[]});fs[_0xd2a1('0x52')]('/etc/asterisk/turn_xcally.conf',_0x3c16b0);return respondWithRpcPromise('Reload',_0xd2a1('0x4b'),{'module':_0xd2a1('0x54')});}else{var _0xf00a70=fs['readFileSync'](path['join'](config[_0xd2a1('0x4e')],_0xd2a1('0x59')),_0xd2a1('0x50'));var _0x4041a7=ejs[_0xd2a1('0x51')](_0xf00a70,{'networks':_0x175143||[]});fs[_0xd2a1('0x52')](util[_0xd2a1('0x5a')]('/etc/asterisk/sip_xcally_%s.conf',_0x184689[_0xd2a1('0x4c')][_0xd2a1('0x33')][_0xd2a1('0x5b')]()),_0x4041a7);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x4b'),{'module':_0xd2a1('0x5d')});}return null;})[_0xd2a1('0x16')](function(){return _0x84dfc1;});})['then'](respondWithResult(_0x18a02a,0xc9))['catch'](handleError(_0x18a02a,null));};exports[_0xd2a1('0x2a')]=function(_0x3dc528,_0x4ad8ad,_0x538e2a){var _0x5671a9;return db[_0xd2a1('0x5e')]['transaction'](function(_0x47247e){return db[_0xd2a1('0x30')]['find']({'where':{'id':_0x3dc528[_0xd2a1('0x46')]['id']}})[_0xd2a1('0x16')](handleEntityNotFound(_0x4ad8ad,null))[_0xd2a1('0x16')](saveUpdates(_0x3dc528['body'],null))[_0xd2a1('0x16')](function(_0x2ba0c4){if(_0x2ba0c4){_0x5671a9=_0x2ba0c4;return db['Network'][_0xd2a1('0x44')]({'where':{'type':_0x5671a9['type']},'raw':!![]});}return null;})[_0xd2a1('0x16')](function(_0x26bb0b){if(_0x5671a9[_0xd2a1('0x33')][_0xd2a1('0x4d')]()==_0xd2a1('0x5f')){var _0x3667f4=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],'server/files/templates/stun_multiple.ejs'),_0xd2a1('0x50'));var _0x44ceb1=ejs[_0xd2a1('0x51')](_0x3667f4,{'networks':_0x26bb0b||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x53'),_0x44ceb1);return respondWithRpcPromise(_0xd2a1('0x5c'),'update',{'module':_0xd2a1('0x54')});}else if(_0x5671a9[_0xd2a1('0x33')][_0xd2a1('0x4d')]()=='TURN'){var _0x55ad3c=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],'server/files/templates/turn_multiple.ejs'),_0xd2a1('0x50'));var _0x4cc7ad=ejs['render'](_0x55ad3c,{'networks':_0x26bb0b||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x60'),_0x4cc7ad);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x2a'),{'module':_0xd2a1('0x54')});}else{var _0x3dd74c=fs['readFileSync'](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x59')),_0xd2a1('0x50'));var _0x583c8f=ejs[_0xd2a1('0x51')](_0x3dd74c,{'networks':_0x26bb0b||[]});fs[_0xd2a1('0x52')](util[_0xd2a1('0x5a')](_0xd2a1('0x61'),_0x3dc528[_0xd2a1('0x4c')][_0xd2a1('0x33')][_0xd2a1('0x5b')]()),_0x583c8f);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x2a'),{'module':_0xd2a1('0x5d')});}return null;})[_0xd2a1('0x16')](function(_0x424255){if(_0x424255){return _0x5671a9;}return null;});})[_0xd2a1('0x16')](respondWithResult(_0x4ad8ad,null))[_0xd2a1('0x1e')](handleError(_0x4ad8ad,null));};exports['destroy']=function(_0x100952,_0x5d07a4,_0x595f14){var _0x44864a;return db[_0xd2a1('0x30')][_0xd2a1('0x4a')]({'where':{'id':_0x100952[_0xd2a1('0x46')]['id']}})[_0xd2a1('0x16')](function(_0x5609bc){_0x44864a=_0x5609bc;return _0x5609bc;})['then'](handleEntityNotFound(_0x5d07a4,null))[_0xd2a1('0x16')](removeEntity(_0x5d07a4,null))[_0xd2a1('0x16')](function(){if(_0x44864a){return db[_0xd2a1('0x30')][_0xd2a1('0x44')]({'where':{'type':_0x44864a['type']},'raw':!![]});}})[_0xd2a1('0x16')](function(_0x282a63){if(_0x44864a[_0xd2a1('0x33')][_0xd2a1('0x4d')]()==_0xd2a1('0x5f')){var _0x53f901=fs['readFileSync'](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x4f')),_0xd2a1('0x50'));var _0x24d86e=ejs[_0xd2a1('0x51')](_0x53f901,{'networks':_0x282a63||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x53'),_0x24d86e);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x62'),{'module':'res_stun_monitor.so'});}else if(_0x44864a[_0xd2a1('0x33')][_0xd2a1('0x4d')]()=='TURN'){var _0x5a5a5e=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config['root'],_0xd2a1('0x58')),_0xd2a1('0x50'));var _0x15b954=ejs[_0xd2a1('0x51')](_0x5a5a5e,{'networks':_0x282a63||[]});fs['writeFileSync'](_0xd2a1('0x60'),_0x15b954);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x62'),{'module':_0xd2a1('0x54')});}else{var _0x15d731=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x59')),_0xd2a1('0x50'));var _0xbe0089=ejs[_0xd2a1('0x51')](_0x15d731,{'networks':_0x282a63||[]});fs[_0xd2a1('0x52')](util[_0xd2a1('0x5a')](_0xd2a1('0x61'),_0x100952[_0xd2a1('0x4c')]['type'][_0xd2a1('0x5b')]()),_0xbe0089);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x62'),{'module':_0xd2a1('0x5d')});}return null;})[_0xd2a1('0x1e')](handleError(_0x5d07a4,null));};
\ No newline at end of file
index 9fefa6f..97a8d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe02=['exports','network','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./network.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbe02,0x146));var _0x2be0=function(_0x42e7f4,_0x1813a6){_0x42e7f4=_0x42e7f4-0x0;var _0x225359=_0xbe02[_0x42e7f4];return _0x225359;};'use strict';var _=require(_0x2be0('0x0'));var util=require(_0x2be0('0x1'));var logger=require(_0x2be0('0x2'))(_0x2be0('0x3'));var moment=require('moment');var BPromise=require(_0x2be0('0x4'));var rp=require(_0x2be0('0x5'));var fs=require('fs');var path=require(_0x2be0('0x6'));var rimraf=require(_0x2be0('0x7'));var config=require(_0x2be0('0x8'));var attributes=require(_0x2be0('0x9'));module[_0x2be0('0xa')]=function(_0x474a35,_0x39a2ca){return _0x474a35['define']('Network',attributes,{'tableName':_0x2be0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0427=['api','bluebird','request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define','Network','network','../../config/logger'];(function(_0x1ed116,_0x23bc80){var _0x574066=function(_0x424f9e){while(--_0x424f9e){_0x1ed116['push'](_0x1ed116['shift']());}};_0x574066(++_0x23bc80);}(_0x0427,0x137));var _0x7042=function(_0x4e773f,_0x549a3d){_0x4e773f=_0x4e773f-0x0;var _0x5e00de=_0x0427[_0x4e773f];return _0x5e00de;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7042('0x0'))(_0x7042('0x1'));var moment=require('moment');var BPromise=require(_0x7042('0x2'));var rp=require(_0x7042('0x3'));var fs=require('fs');var path=require(_0x7042('0x4'));var rimraf=require(_0x7042('0x5'));var config=require(_0x7042('0x6'));var attributes=require(_0x7042('0x7'));module[_0x7042('0x8')]=function(_0x53ab81,_0x37a35b){return _0x53ab81[_0x7042('0x9')](_0x7042('0xa'),attributes,{'tableName':_0x7042('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5055816..770db20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0x32c4a8,_0x308828){_0x32c4a8=_0x32c4a8-0x0;var _0xfec15d=_0x7a54[_0x32c4a8];return _0xfec15d;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0xd9b65,_0x5354b7){_0xd9b65=_0xd9b65-0x0;var _0x211ccf=_0x7a54[_0xd9b65];return _0x211ccf;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 7e51b50..fb92605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221d=['../../config/environment','./openchannelAccount.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','create','post','/:id/notify','addApplications','addAgents','send','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x14f586,_0xc57464){var _0x3cc217=function(_0x31d569){while(--_0x31d569){_0x14f586['push'](_0x14f586['shift']());}};_0x3cc217(++_0xc57464);}(_0x221d,0x1e4));var _0xd221=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0x221d[_0x186376];return _0x2dbdd9;};'use strict';var multer=require(_0xd221('0x0'));var util=require('util');var path=require(_0xd221('0x1'));var timeout=require('connect-timeout');var express=require(_0xd221('0x2'));var router=express[_0xd221('0x3')]();var fs_extra=require(_0xd221('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd221('0x5'));var config=require(_0xd221('0x6'));var controller=require(_0xd221('0x7'));router['get']('/',auth[_0xd221('0x8')](),controller[_0xd221('0x9')]);router[_0xd221('0xa')](_0xd221('0xb'),auth[_0xd221('0x8')](),controller[_0xd221('0xc')]);router[_0xd221('0xa')](_0xd221('0xd'),auth[_0xd221('0x8')](),controller['show']);router[_0xd221('0xa')](_0xd221('0xe'),auth[_0xd221('0x8')](),controller[_0xd221('0xf')]);router[_0xd221('0xa')](_0xd221('0x10'),auth[_0xd221('0x8')](),controller['getAnswers']);router['get'](_0xd221('0x11'),auth[_0xd221('0x8')](),controller[_0xd221('0x12')]);router[_0xd221('0xa')](_0xd221('0x13'),auth['isAuthenticated'](),controller[_0xd221('0x14')]);router[_0xd221('0xa')](_0xd221('0x15'),auth[_0xd221('0x8')](),controller[_0xd221('0x16')]);router['post']('/',auth[_0xd221('0x8')](),controller[_0xd221('0x17')]);router[_0xd221('0x18')](_0xd221('0xe'),auth[_0xd221('0x8')](),controller['addDisposition']);router[_0xd221('0x18')](_0xd221('0x10'),auth[_0xd221('0x8')](),controller['addAnswer']);router['post'](_0xd221('0x19'),controller['notify']);router[_0xd221('0x18')](_0xd221('0x11'),auth[_0xd221('0x8')](),controller[_0xd221('0x1a')]);router[_0xd221('0x18')](_0xd221('0x15'),auth[_0xd221('0x8')](),controller[_0xd221('0x1b')]);router[_0xd221('0x18')]('/:id/send',auth[_0xd221('0x8')](),controller[_0xd221('0x1c')]);router['put'](_0xd221('0xd'),auth[_0xd221('0x8')](),controller[_0xd221('0x1d')]);router[_0xd221('0x1e')](_0xd221('0xd'),auth[_0xd221('0x8')](),controller['destroy']);router[_0xd221('0x1e')](_0xd221('0xe'),auth[_0xd221('0x8')](),controller[_0xd221('0x1f')]);router[_0xd221('0x1e')](_0xd221('0x10'),auth[_0xd221('0x8')](),controller[_0xd221('0x20')]);router['delete'](_0xd221('0x15'),auth[_0xd221('0x8')](),controller[_0xd221('0x21')]);module[_0xd221('0x22')]=router;
\ No newline at end of file
+var _0x2771=['/:id/interactions','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','put','/:id','update','destroy','delete','removeDispositions','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','isAuthenticated','index','/describe','get','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/applications','getApplications'];(function(_0x5597a4,_0x161921){var _0x26ed19=function(_0x245cf7){while(--_0x245cf7){_0x5597a4['push'](_0x5597a4['shift']());}};_0x26ed19(++_0x161921);}(_0x2771,0x110));var _0x1277=function(_0x11db0a,_0x4af927){_0x11db0a=_0x11db0a-0x0;var _0x46c7d3=_0x2771[_0x11db0a];return _0x46c7d3;};'use strict';var multer=require(_0x1277('0x0'));var util=require(_0x1277('0x1'));var path=require('path');var timeout=require(_0x1277('0x2'));var express=require('express');var router=express[_0x1277('0x3')]();var fs_extra=require(_0x1277('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1277('0x5'));var config=require('../../config/environment');var controller=require('./openchannelAccount.controller');router['get']('/',auth[_0x1277('0x6')](),controller[_0x1277('0x7')]);router['get'](_0x1277('0x8'),auth[_0x1277('0x6')](),controller['describe']);router[_0x1277('0x9')]('/:id',auth[_0x1277('0x6')](),controller[_0x1277('0xa')]);router[_0x1277('0x9')](_0x1277('0xb'),auth[_0x1277('0x6')](),controller[_0x1277('0xc')]);router[_0x1277('0x9')](_0x1277('0xd'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x1277('0x9')](_0x1277('0xe'),auth[_0x1277('0x6')](),controller[_0x1277('0xf')]);router[_0x1277('0x9')](_0x1277('0x10'),auth['isAuthenticated'](),controller['getInteractions']);router[_0x1277('0x9')](_0x1277('0x11'),auth[_0x1277('0x6')](),controller[_0x1277('0x12')]);router[_0x1277('0x13')]('/',auth[_0x1277('0x6')](),controller[_0x1277('0x14')]);router['post']('/:id/dispositions',auth[_0x1277('0x6')](),controller[_0x1277('0x15')]);router[_0x1277('0x13')](_0x1277('0xd'),auth['isAuthenticated'](),controller[_0x1277('0x16')]);router[_0x1277('0x13')](_0x1277('0x17'),controller[_0x1277('0x18')]);router[_0x1277('0x13')]('/:id/applications',auth[_0x1277('0x6')](),controller[_0x1277('0x19')]);router['post'](_0x1277('0x11'),auth['isAuthenticated'](),controller[_0x1277('0x1a')]);router['post'](_0x1277('0x1b'),auth[_0x1277('0x6')](),controller['send']);router[_0x1277('0x1c')](_0x1277('0x1d'),auth[_0x1277('0x6')](),controller[_0x1277('0x1e')]);router['delete']('/:id',auth[_0x1277('0x6')](),controller[_0x1277('0x1f')]);router[_0x1277('0x20')](_0x1277('0xb'),auth[_0x1277('0x6')](),controller[_0x1277('0x21')]);router['delete'](_0x1277('0xd'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x1277('0x20')](_0x1277('0x11'),auth[_0x1277('0x6')](),controller[_0x1277('0x22')]);module[_0x1277('0x23')]=router;
\ No newline at end of file
index f9af82a..918f155 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b71=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','randomstring','exports','name','generate','STRING'];(function(_0x366b4b,_0x2f5f96){var _0x1ac436=function(_0xa5e0bd){while(--_0xa5e0bd){_0x366b4b['push'](_0x366b4b['shift']());}};_0x1ac436(++_0x2f5f96);}(_0x6b71,0xcb));var _0x16b7=function(_0x31e97b,_0x5c503a){_0x31e97b=_0x31e97b-0x0;var _0x488a2c=_0x6b71[_0x31e97b];return _0x488a2c;};'use strict';var Sequelize=require(_0x16b7('0x0'));var rs=require(_0x16b7('0x1'));module[_0x16b7('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x16b7('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x16b7('0x4')]();}},'replyUri':{'type':Sequelize[_0x16b7('0x5')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x16b7('0x6');}},'notificationSound':{'type':Sequelize[_0x16b7('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x16b7('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x16b7('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x16b7('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x16b7('0x9'),'set':function(_0x4a9c4c){if(!_0x4a9c4c)this[_0x16b7('0xa')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0x4a9c4c);}}};
\ No newline at end of file
+var _0x4e76=['sequelize','randomstring','exports','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition'];(function(_0x51cfdf,_0x18acdc){var _0x1f4934=function(_0xa514ef){while(--_0xa514ef){_0x51cfdf['push'](_0x51cfdf['shift']());}};_0x1f4934(++_0x18acdc);}(_0x4e76,0x9c));var _0x64e7=function(_0x54698c,_0x249a74){_0x54698c=_0x54698c-0x0;var _0x20bb37=_0x4e76[_0x54698c];return _0x20bb37;};'use strict';var Sequelize=require(_0x64e7('0x0'));var rs=require(_0x64e7('0x1'));module[_0x64e7('0x2')]={'name':{'type':Sequelize[_0x64e7('0x3')],'unique':_0x64e7('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x64e7('0x3')]},'token':{'type':Sequelize[_0x64e7('0x3')],'defaultValue':function(){return rs[_0x64e7('0x5')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x64e7('0x6')],'defaultValue':function(){return _0x64e7('0x7');}},'notificationSound':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x64e7('0x3')]},'queueTransfer':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x64e7('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x64e7('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x343d98){if(!_0x343d98)this['setDataValue'](_0x64e7('0xa'),null);this[_0x64e7('0xb')](_0x64e7('0xc'),_0x343d98);}}};
\ No newline at end of file
index caa00a9..f2294dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54bd=['CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','ListId','isNil','from','from\x20is\x20mandatory','mapKey','includes','CmList','List','Contacts','account','applications','Applications','list','priority','contact','firstName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','autoclose','close','unmanaged','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','EventManager','addApplications','sequelize','transaction','OpenchannelApplication','bulkCreate','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','out','OpenchannelMessage','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','then','info','debug','request\x20sent','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','status','end','json','offset','limit','count','set','apply','reject','save','update','destroy','get','OpenchannelAccounts','send','Pause','OpenchannelAccount','type','key','model','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','mandatoryDispositionPause','rawAttributes','create','body','user','UserProfileSection','find','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','sort','OpenchannelAccountId','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel'];(function(_0x1529a3,_0x529f63){var _0x1a0d4b=function(_0x6f1058){while(--_0x6f1058){_0x1529a3['push'](_0x1529a3['shift']());}};_0x1a0d4b(++_0x529f63);}(_0x54bd,0xf7));var _0xd54b=function(_0x6686fb,_0x5b31b1){_0x6686fb=_0x6686fb-0x0;var _0x1e4fba=_0x54bd[_0x6686fb];return _0x1e4fba;};'use strict';var emlformat=require(_0xd54b('0x0'));var rimraf=require(_0xd54b('0x1'));var zipdir=require(_0xd54b('0x2'));var jsonpatch=require(_0xd54b('0x3'));var rp=require(_0xd54b('0x4'));var moment=require(_0xd54b('0x5'));var BPromise=require(_0xd54b('0x6'));var Mustache=require(_0xd54b('0x7'));var util=require(_0xd54b('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xd54b('0x9'));var ejs=require(_0xd54b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd54b('0xb'));var squel=require(_0xd54b('0xc'));var crypto=require(_0xd54b('0xd'));var jsforce=require(_0xd54b('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xd54b('0x9'));var querystring=require('querystring');var Papa=require(_0xd54b('0xf'));var Redis=require(_0xd54b('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd54b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd54b('0x12'))('api');var utils=require(_0xd54b('0x13'));var config=require(_0xd54b('0x14'));var licenseUtil=require(_0xd54b('0x15'));var db=require(_0xd54b('0x16'))['db'];config[_0xd54b('0x17')]=_[_0xd54b('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd54b('0x19'))(new Redis(config[_0xd54b('0x17')]));require(_0xd54b('0x1a'))['register'](socket);var jayson=require(_0xd54b('0x1b'));var client=jayson[_0xd54b('0x1c')][_0xd54b('0x1d')]({'port':0x232c});var client9002=jayson[_0xd54b('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x928d40,_0x3bd1cf,_0x2d1495,_0x57ee2e){return new BPromise(function(_0x4dd139,_0x449b1e){var _0x3f429f=_0x57ee2e||client;return _0x3f429f[_0xd54b('0x1e')](_0x928d40,_0x2d1495)[_0xd54b('0x1f')](function(_0x46991b){logger[_0xd54b('0x20')]('OpenchannelAccount,\x20%s,\x20%s',_0x3bd1cf,'request\x20sent');logger[_0xd54b('0x21')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x3bd1cf,_0xd54b('0x22'),JSON['stringify'](_0x46991b));if(_0x46991b[_0xd54b('0x23')]){if(_0x46991b['error'][_0xd54b('0x24')]===0x1f4){logger[_0xd54b('0x23')](_0xd54b('0x25'),_0x3bd1cf,_0x46991b[_0xd54b('0x23')][_0xd54b('0x26')]);return _0x449b1e(_0x46991b[_0xd54b('0x23')][_0xd54b('0x26')]);}logger[_0xd54b('0x23')](_0xd54b('0x25'),_0x3bd1cf,_0x46991b[_0xd54b('0x23')][_0xd54b('0x26')]);return _0x4dd139(_0x46991b[_0xd54b('0x23')][_0xd54b('0x26')]);}else{logger['info'](_0xd54b('0x25'),_0x3bd1cf,'request\x20sent');_0x4dd139(_0x46991b[_0xd54b('0x27')]['message']);}})['catch'](function(_0x1e2f03){logger['error'](_0xd54b('0x25'),_0x3bd1cf,_0x1e2f03);_0x449b1e(_0x1e2f03);});});}function respondWithStatusCode(_0x53261e,_0xc08858){_0xc08858=_0xc08858||0xcc;return function(_0xb0c63e){if(_0xb0c63e){return _0x53261e['sendStatus'](_0xc08858);}return _0x53261e[_0xd54b('0x28')](_0xc08858)[_0xd54b('0x29')]();};}function respondWithResult(_0x211a49,_0x52a4ae){_0x52a4ae=_0x52a4ae||0xc8;return function(_0x49f359){if(_0x49f359){return _0x211a49['status'](_0x52a4ae)[_0xd54b('0x2a')](_0x49f359);}};}function respondWithFilteredResult(_0x3e55eb,_0x5a844d){return function(_0x2166ab){if(_0x2166ab){var _0x404017=typeof _0x5a844d[_0xd54b('0x2b')]==='undefined'&&typeof _0x5a844d[_0xd54b('0x2c')]==='undefined';var _0x52ea65=_0x2166ab[_0xd54b('0x2d')];var _0x2cb0ab=_0x404017?0x0:_0x5a844d['offset'];var _0x430605=_0x404017?_0x2166ab[_0xd54b('0x2d')]:_0x5a844d[_0xd54b('0x2b')]+_0x5a844d['limit'];var _0x3716ae;if(_0x430605>=_0x52ea65){_0x430605=_0x52ea65;_0x3716ae=0xc8;}else{_0x3716ae=0xce;}_0x3e55eb[_0xd54b('0x28')](_0x3716ae);return _0x3e55eb[_0xd54b('0x2e')]('Content-Range',_0x2cb0ab+'-'+_0x430605+'/'+_0x52ea65)[_0xd54b('0x2a')](_0x2166ab);}return null;};}function patchUpdates(_0x59c412){return function(_0x5849f9){try{jsonpatch[_0xd54b('0x2f')](_0x5849f9,_0x59c412,!![]);}catch(_0x1c36fc){return BPromise[_0xd54b('0x30')](_0x1c36fc);}return _0x5849f9[_0xd54b('0x31')]();};}function saveUpdates(_0x4f01ce,_0x2a19d1){return function(_0x3b7136){if(_0x3b7136){return _0x3b7136[_0xd54b('0x32')](_0x4f01ce)[_0xd54b('0x1f')](function(_0x5a2370){return _0x5a2370;});}return null;};}function removeEntity(_0x13cbf2,_0x1667b8){return function(_0x1c3327){if(_0x1c3327){return _0x1c3327[_0xd54b('0x33')]()['then'](function(){var _0x4b216c=_0x1c3327[_0xd54b('0x34')]({'plain':!![]});var _0x32c7bc=_0xd54b('0x35');return db['UserProfileResource']['destroy']({'where':{'type':_0x32c7bc,'resourceId':_0x4b216c['id']}})['then'](function(){return _0x1c3327;});})[_0xd54b('0x1f')](function(){_0x13cbf2[_0xd54b('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b5e8f,_0x4cf0f9){return function(_0x478db4){if(!_0x478db4){_0x5b5e8f['sendStatus'](0x194);}return _0x478db4;};}function handleError(_0x83e3db,_0x460453){_0x460453=_0x460453||0x1f4;return function(_0x257bff){logger[_0xd54b('0x23')](_0x257bff['stack']);if(_0x257bff['name']){delete _0x257bff['name'];}_0x83e3db[_0xd54b('0x28')](_0x460453)[_0xd54b('0x36')](_0x257bff);};}exports['index']=function(_0x410bea,_0x2b6daa){var _0x3cc7db={'include':[{'model':db[_0xd54b('0x37')],'as':'mandatoryDispositionPause'}]},_0x3cfeee={},_0x4410a6={'count':0x0,'rows':[]};var _0x3d3a96=_['map'](db[_0xd54b('0x38')]['rawAttributes'],function(_0x4e092f){return{'name':_0x4e092f['fieldName'],'type':_0x4e092f[_0xd54b('0x39')][_0xd54b('0x3a')]};});_0x3cfeee[_0xd54b('0x3b')]=_[_0xd54b('0x3c')](_0x3d3a96,_0xd54b('0x3d'));_0x3cfeee[_0xd54b('0x3e')]=_[_0xd54b('0x3f')](_0x410bea['query']);_0x3cfeee[_0xd54b('0x40')]=_['intersection'](_0x3cfeee[_0xd54b('0x3b')],_0x3cfeee['query']);_0x3cc7db['attributes']=_[_0xd54b('0x41')](_0x3cfeee[_0xd54b('0x3b')],qs[_0xd54b('0x42')](_0x410bea[_0xd54b('0x3e')][_0xd54b('0x42')]));_0x3cc7db[_0xd54b('0x43')]=_0x3cc7db[_0xd54b('0x43')][_0xd54b('0x44')]?_0x3cc7db[_0xd54b('0x43')]:_0x3cfeee[_0xd54b('0x3b')];if(!_0x410bea[_0xd54b('0x3e')][_0xd54b('0x45')](_0xd54b('0x46'))){_0x3cc7db[_0xd54b('0x2c')]=qs[_0xd54b('0x2c')](_0x410bea[_0xd54b('0x3e')][_0xd54b('0x2c')]);_0x3cc7db[_0xd54b('0x2b')]=qs['offset'](_0x410bea[_0xd54b('0x3e')][_0xd54b('0x2b')]);}_0x3cc7db[_0xd54b('0x47')]=qs['sort'](_0x410bea[_0xd54b('0x3e')]['sort']);_0x3cc7db[_0xd54b('0x48')]=qs[_0xd54b('0x40')](_[_0xd54b('0x49')](_0x410bea[_0xd54b('0x3e')],_0x3cfeee['filters']),_0x3d3a96);if(_0x410bea[_0xd54b('0x3e')]['filter']){_0x3cc7db[_0xd54b('0x48')]=_[_0xd54b('0x4a')](_0x3cc7db['where'],{'$or':_[_0xd54b('0x3c')](_0x3d3a96,function(_0x40d889){if(_0x40d889[_0xd54b('0x39')]!==_0xd54b('0x4b')){var _0x1d9e10={};_0x1d9e10[_0x40d889['name']]={'$like':'%'+_0x410bea[_0xd54b('0x3e')][_0xd54b('0x4c')]+'%'};return _0x1d9e10;}})});}_0x3cc7db=_[_0xd54b('0x4a')]({},_0x3cc7db,_0x410bea[_0xd54b('0x4d')]);var _0x564ab2={'where':_0x3cc7db[_0xd54b('0x48')]};return db[_0xd54b('0x38')][_0xd54b('0x2d')](_0x564ab2)[_0xd54b('0x1f')](function(_0x4ec126){_0x4410a6[_0xd54b('0x2d')]=_0x4ec126;if(_0x410bea['query'][_0xd54b('0x4e')]){_0x3cc7db[_0xd54b('0x4f')]=[{'all':!![]}];}return db[_0xd54b('0x38')][_0xd54b('0x50')](_0x3cc7db);})[_0xd54b('0x1f')](function(_0x3601b2){_0x4410a6['rows']=_0x3601b2;return _0x4410a6;})[_0xd54b('0x1f')](respondWithFilteredResult(_0x2b6daa,_0x3cc7db))[_0xd54b('0x51')](handleError(_0x2b6daa,null));};exports[_0xd54b('0x52')]=function(_0x51d89f,_0x2f8298){var _0x493eb7={'raw':![],'where':{'id':_0x51d89f[_0xd54b('0x53')]['id']},'include':[{'model':db[_0xd54b('0x37')],'as':_0xd54b('0x54')}]},_0x2b99f2={};_0x2b99f2[_0xd54b('0x3b')]=_[_0xd54b('0x3f')](db['OpenchannelAccount'][_0xd54b('0x55')]);_0x2b99f2[_0xd54b('0x3e')]=_[_0xd54b('0x3f')](_0x51d89f[_0xd54b('0x3e')]);_0x2b99f2[_0xd54b('0x40')]=_[_0xd54b('0x41')](_0x2b99f2[_0xd54b('0x3b')],_0x2b99f2['query']);_0x493eb7['attributes']=_['intersection'](_0x2b99f2['model'],qs[_0xd54b('0x42')](_0x51d89f[_0xd54b('0x3e')][_0xd54b('0x42')]));_0x493eb7[_0xd54b('0x43')]=_0x493eb7[_0xd54b('0x43')]['length']?_0x493eb7[_0xd54b('0x43')]:_0x2b99f2[_0xd54b('0x3b')];if(_0x51d89f[_0xd54b('0x3e')]['includeAll']){_0x493eb7[_0xd54b('0x4f')]=[{'all':!![]}];}_0x493eb7=_[_0xd54b('0x4a')]({},_0x493eb7,_0x51d89f[_0xd54b('0x4d')]);return db[_0xd54b('0x38')]['find'](_0x493eb7)[_0xd54b('0x1f')](handleEntityNotFound(_0x2f8298,null))[_0xd54b('0x1f')](respondWithResult(_0x2f8298,null))['catch'](handleError(_0x2f8298,null));};exports[_0xd54b('0x56')]=function(_0x21f9ee,_0x239bf5){return db['OpenchannelAccount'][_0xd54b('0x56')](_0x21f9ee[_0xd54b('0x57')],{})[_0xd54b('0x1f')](function(_0x311caa){var _0x3bb7ed=_0x21f9ee['user'][_0xd54b('0x34')]({'plain':!![]});if(!_0x3bb7ed)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3bb7ed['role']===_0xd54b('0x58')){var _0x5959a1=_0x311caa['get']({'plain':!![]});var _0x271407=_0xd54b('0x35');return db[_0xd54b('0x59')][_0xd54b('0x5a')]({'where':{'name':_0x271407,'userProfileId':_0x3bb7ed['userProfileId']},'raw':!![]})[_0xd54b('0x1f')](function(_0x564423){if(_0x564423&&_0x564423['autoAssociation']===0x0){return db[_0xd54b('0x5b')][_0xd54b('0x56')]({'name':_0x5959a1[_0xd54b('0x3d')],'resourceId':_0x5959a1['id'],'type':_0x564423[_0xd54b('0x3d')],'sectionId':_0x564423['id']},{})[_0xd54b('0x1f')](function(){return _0x311caa;});}else{return _0x311caa;}})[_0xd54b('0x51')](function(_0x131bb0){logger[_0xd54b('0x23')](_0xd54b('0x5c'),_0x131bb0);throw _0x131bb0;});}return _0x311caa;})[_0xd54b('0x1f')](respondWithResult(_0x239bf5,0xc9))[_0xd54b('0x51')](handleError(_0x239bf5,null));};exports[_0xd54b('0x32')]=function(_0x27887e,_0x52eeb6){if(_0x27887e[_0xd54b('0x57')]['id']){delete _0x27887e[_0xd54b('0x57')]['id'];}return db['OpenchannelAccount'][_0xd54b('0x5a')]({'where':{'id':_0x27887e[_0xd54b('0x53')]['id']},'include':[{'model':db['Pause'],'as':_0xd54b('0x54')}]})['then'](handleEntityNotFound(_0x52eeb6,null))[_0xd54b('0x1f')](saveUpdates(_0x27887e['body'],null))[_0xd54b('0x1f')](respondWithResult(_0x52eeb6,null))[_0xd54b('0x51')](handleError(_0x52eeb6,null));};exports[_0xd54b('0x33')]=function(_0x2cec25,_0xf32769){return db[_0xd54b('0x38')]['find']({'where':{'id':_0x2cec25['params']['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0xf32769,null))[_0xd54b('0x1f')](removeEntity(_0xf32769,null))[_0xd54b('0x51')](handleError(_0xf32769,null));};exports[_0xd54b('0x5d')]=function(_0x2bcfad,_0x2b4f02){return db[_0xd54b('0x38')][_0xd54b('0x5d')]()[_0xd54b('0x1f')](respondWithResult(_0x2b4f02,null))[_0xd54b('0x51')](handleError(_0x2b4f02,null));};exports[_0xd54b('0x5e')]=function(_0x105b3b,_0x479c68,_0x3e70d8){if(_0x105b3b[_0xd54b('0x57')]['id']){delete _0x105b3b['body']['id'];}return db[_0xd54b('0x38')][_0xd54b('0x5a')]({'where':{'id':_0x105b3b['params']['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x479c68,null))['then'](function(_0x26c66f){if(_0x26c66f){_0x105b3b[_0xd54b('0x57')]['OpenchannelAccountId']=_0x26c66f['id'];return db[_0xd54b('0x5f')][_0xd54b('0x56')](_0x105b3b[_0xd54b('0x57')]);}})[_0xd54b('0x1f')](respondWithResult(_0x479c68,null))[_0xd54b('0x51')](handleError(_0x479c68,null));};exports[_0xd54b('0x60')]=function(_0x2a4b2e,_0x44b5f6,_0x482dda){var _0xbb2f80={'raw':![],'where':{}};var _0x4cbc1b={};var _0x4d4cb7={'count':0x0,'rows':[]};return db[_0xd54b('0x38')][_0xd54b('0x61')]({'where':{'id':_0x2a4b2e[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x44b5f6,null))[_0xd54b('0x1f')](function(_0x10c8ce){if(_0x10c8ce){_0x4cbc1b[_0xd54b('0x3b')]=_[_0xd54b('0x3f')](db[_0xd54b('0x5f')][_0xd54b('0x55')]);_0x4cbc1b[_0xd54b('0x3e')]=_[_0xd54b('0x3f')](_0x2a4b2e[_0xd54b('0x3e')]);_0x4cbc1b['filters']=_['intersection'](_0x4cbc1b[_0xd54b('0x3b')],_0x4cbc1b[_0xd54b('0x3e')]);_0xbb2f80[_0xd54b('0x43')]=_[_0xd54b('0x41')](_0x4cbc1b[_0xd54b('0x3b')],qs['fields'](_0x2a4b2e['query'][_0xd54b('0x42')]));_0xbb2f80[_0xd54b('0x43')]=_0xbb2f80[_0xd54b('0x43')][_0xd54b('0x44')]?_0xbb2f80['attributes']:_0x4cbc1b[_0xd54b('0x3b')];if(!_0x2a4b2e[_0xd54b('0x3e')][_0xd54b('0x45')](_0xd54b('0x46'))){_0xbb2f80[_0xd54b('0x2c')]=qs[_0xd54b('0x2c')](_0x2a4b2e[_0xd54b('0x3e')]['limit']);_0xbb2f80[_0xd54b('0x2b')]=qs[_0xd54b('0x2b')](_0x2a4b2e['query'][_0xd54b('0x2b')]);}_0xbb2f80[_0xd54b('0x47')]=qs[_0xd54b('0x62')](_0x2a4b2e[_0xd54b('0x3e')][_0xd54b('0x62')]);_0xbb2f80[_0xd54b('0x48')]=qs[_0xd54b('0x40')](_[_0xd54b('0x49')](_0x2a4b2e[_0xd54b('0x3e')],_0x4cbc1b[_0xd54b('0x40')]));_0xbb2f80[_0xd54b('0x48')][_0xd54b('0x63')]=_0x10c8ce['id'];if(_0x2a4b2e['query'][_0xd54b('0x4c')]){_0xbb2f80[_0xd54b('0x48')]=_[_0xd54b('0x4a')](_0xbb2f80[_0xd54b('0x48')],{'$or':_[_0xd54b('0x3c')](_0xbb2f80['attributes'],function(_0x24b6d4){var _0x17beb4={};_0x17beb4[_0x24b6d4]={'$like':'%'+_0x2a4b2e[_0xd54b('0x3e')][_0xd54b('0x4c')]+'%'};return _0x17beb4;})});}_0xbb2f80=_['merge']({},_0xbb2f80,_0x2a4b2e[_0xd54b('0x4d')]);return db['Disposition'][_0xd54b('0x2d')]({'where':_0xbb2f80[_0xd54b('0x48')]})['then'](function(_0x1ffaf5){_0x4d4cb7['count']=_0x1ffaf5;if(_0x2a4b2e[_0xd54b('0x3e')]['includeAll']){_0xbb2f80[_0xd54b('0x4f')]=[{'all':!![]}];}return db['Disposition'][_0xd54b('0x50')](_0xbb2f80);})['then'](function(_0xa6a8e9){_0x4d4cb7[_0xd54b('0x64')]=_0xa6a8e9;return _0x4d4cb7;});}})[_0xd54b('0x1f')](respondWithFilteredResult(_0x44b5f6,_0xbb2f80))[_0xd54b('0x51')](handleError(_0x44b5f6,null));};exports[_0xd54b('0x65')]=function(_0x32c0ef,_0x5785ee,_0x300b06){return db[_0xd54b('0x38')][_0xd54b('0x5a')]({'where':{'id':_0x32c0ef[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x5785ee,null))[_0xd54b('0x1f')](function(_0xc011c7){if(_0xc011c7){return _0xc011c7[_0xd54b('0x65')](_0x32c0ef[_0xd54b('0x3e')][_0xd54b('0x66')]);}})[_0xd54b('0x1f')](respondWithStatusCode(_0x5785ee,null))[_0xd54b('0x51')](handleError(_0x5785ee,null));};exports[_0xd54b('0x67')]=function(_0x2f5d52,_0x1e4ae1,_0x50a6a5){if(_0x2f5d52['body']['id']){delete _0x2f5d52[_0xd54b('0x57')]['id'];}return db[_0xd54b('0x38')][_0xd54b('0x5a')]({'where':{'id':_0x2f5d52[_0xd54b('0x53')]['id']}})['then'](handleEntityNotFound(_0x1e4ae1,null))[_0xd54b('0x1f')](function(_0x6fc1e1){if(_0x6fc1e1){_0x2f5d52['body']['OpenchannelAccountId']=_0x6fc1e1['id'];return db[_0xd54b('0x68')]['create'](_0x2f5d52[_0xd54b('0x57')]);}})[_0xd54b('0x1f')](respondWithResult(_0x1e4ae1,null))[_0xd54b('0x51')](handleError(_0x1e4ae1,null));};exports[_0xd54b('0x69')]=function(_0xede400,_0x4b53dc,_0x16a2d2){var _0xb7516a={'raw':![],'where':{}};var _0x485540={};var _0x1df571={'count':0x0,'rows':[]};return db[_0xd54b('0x38')][_0xd54b('0x61')]({'where':{'id':_0xede400[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x4b53dc,null))['then'](function(_0x308a7e){if(_0x308a7e){_0x485540[_0xd54b('0x3b')]=_['keys'](db[_0xd54b('0x68')][_0xd54b('0x55')]);_0x485540[_0xd54b('0x3e')]=_[_0xd54b('0x3f')](_0xede400['query']);_0x485540[_0xd54b('0x40')]=_[_0xd54b('0x41')](_0x485540[_0xd54b('0x3b')],_0x485540[_0xd54b('0x3e')]);_0xb7516a[_0xd54b('0x43')]=_[_0xd54b('0x41')](_0x485540[_0xd54b('0x3b')],qs[_0xd54b('0x42')](_0xede400['query'][_0xd54b('0x42')]));_0xb7516a['attributes']=_0xb7516a[_0xd54b('0x43')][_0xd54b('0x44')]?_0xb7516a[_0xd54b('0x43')]:_0x485540[_0xd54b('0x3b')];if(!_0xede400[_0xd54b('0x3e')][_0xd54b('0x45')](_0xd54b('0x46'))){_0xb7516a[_0xd54b('0x2c')]=qs[_0xd54b('0x2c')](_0xede400[_0xd54b('0x3e')][_0xd54b('0x2c')]);_0xb7516a[_0xd54b('0x2b')]=qs['offset'](_0xede400[_0xd54b('0x3e')][_0xd54b('0x2b')]);}_0xb7516a['order']=qs['sort'](_0xede400[_0xd54b('0x3e')][_0xd54b('0x62')]);_0xb7516a[_0xd54b('0x48')]=qs['filters'](_[_0xd54b('0x49')](_0xede400[_0xd54b('0x3e')],_0x485540[_0xd54b('0x40')]));_0xb7516a['where'][_0xd54b('0x63')]=_0x308a7e['id'];if(_0xede400[_0xd54b('0x3e')][_0xd54b('0x4c')]){_0xb7516a[_0xd54b('0x48')]=_['merge'](_0xb7516a[_0xd54b('0x48')],{'$or':_[_0xd54b('0x3c')](_0xb7516a[_0xd54b('0x43')],function(_0x2e9a18){var _0x427c28={};_0x427c28[_0x2e9a18]={'$like':'%'+_0xede400[_0xd54b('0x3e')][_0xd54b('0x4c')]+'%'};return _0x427c28;})});}_0xb7516a=_[_0xd54b('0x4a')]({},_0xb7516a,_0xede400[_0xd54b('0x4d')]);return db[_0xd54b('0x68')][_0xd54b('0x2d')]({'where':_0xb7516a[_0xd54b('0x48')]})[_0xd54b('0x1f')](function(_0x5ca268){_0x1df571[_0xd54b('0x2d')]=_0x5ca268;if(_0xede400['query'][_0xd54b('0x4e')]){_0xb7516a[_0xd54b('0x4f')]=[{'all':!![]}];}return db['CannedAnswer'][_0xd54b('0x50')](_0xb7516a);})[_0xd54b('0x1f')](function(_0x2616aa){_0x1df571[_0xd54b('0x64')]=_0x2616aa;return _0x1df571;});}})[_0xd54b('0x1f')](respondWithFilteredResult(_0x4b53dc,_0xb7516a))[_0xd54b('0x51')](handleError(_0x4b53dc,null));};exports[_0xd54b('0x6a')]=function(_0xd55f25,_0x5d57de,_0x1ad616){return db[_0xd54b('0x38')][_0xd54b('0x5a')]({'where':{'id':_0xd55f25[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x5d57de,null))[_0xd54b('0x1f')](function(_0x2001d2){if(_0x2001d2){return _0x2001d2[_0xd54b('0x6a')](_0xd55f25[_0xd54b('0x3e')][_0xd54b('0x66')]);}})[_0xd54b('0x1f')](respondWithStatusCode(_0x5d57de,null))[_0xd54b('0x51')](handleError(_0x5d57de,null));};exports[_0xd54b('0x6b')]=function(_0x14f524,_0x1a43b8,_0x2f27b2){var _0x54a924={'body':_0x14f524[_0xd54b('0x57')],'channel':_0xd54b('0x6c')};var _0x460121=[];var _0x8811ca=[];var _0x5dfe63={};var _0x415c09=![];return db[_0xd54b('0x6d')][_0xd54b('0x5d')]()[_0xd54b('0x1f')](function(_0x450223){if(!_0x450223){throw new db[(_0xd54b('0x6e'))][(_0xd54b('0x6f'))]('no\x20available\x20attributes');}_0x460121=_[_0xd54b('0x70')](_[_0xd54b('0x3f')](_0x450223),[_0xd54b('0x71'),'updatedAt']);_0x8811ca=_[_0xd54b('0x70')](_[_0xd54b('0x3f')](_0x450223),[_0xd54b('0x71'),_0xd54b('0x72'),'CompanyId',_0xd54b('0x73')]);if(_0x14f524[_0xd54b('0x57')]['id']){delete _0x14f524[_0xd54b('0x57')]['id'];}if(_[_0xd54b('0x74')](_0x14f524['body'][_0xd54b('0x75')])){throw new db['Sequelize'][(_0xd54b('0x6f'))](_0xd54b('0x76'));}if(_[_0xd54b('0x74')](_0x14f524['body'][_0xd54b('0x57')])||_0x14f524[_0xd54b('0x57')][_0xd54b('0x57')]===''){throw new db['Sequelize']['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xd54b('0x74')](_0x14f524[_0xd54b('0x57')][_0xd54b('0x77')])){throw new db[(_0xd54b('0x6e'))][(_0xd54b('0x6f'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x8811ca);}if(!_[_0xd54b('0x78')](_0x8811ca,_0x14f524[_0xd54b('0x57')][_0xd54b('0x77')])){throw new db[(_0xd54b('0x6e'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x8811ca);}_0x5dfe63[_0x14f524['body'][_0xd54b('0x77')]]=_0x14f524[_0xd54b('0x57')]['from'];})['then'](function(){return db['OpenchannelAccount'][_0xd54b('0x5a')]({'where':{'id':_0x14f524[_0xd54b('0x53')]['id']},'include':[{'model':db[_0xd54b('0x79')],'as':_0xd54b('0x7a'),'include':[{'model':db['CmContact'],'as':_0xd54b('0x7b'),'where':_0x5dfe63,'limit':0x1,'order':[[_0xd54b('0x72'),'DESC']]}]},{'model':db['OpenchannelApplication'],'as':'Applications'}]});})['then'](handleEntityNotFound(_0x1a43b8,null))[_0xd54b('0x1f')](function(_0x4d7e24){if(_0x4d7e24&&_0x4d7e24[_0xd54b('0x7a')]){_0x54a924[_0xd54b('0x7c')]=_0x4d7e24;_0x54a924[_0xd54b('0x7d')]=_0x4d7e24[_0xd54b('0x7e')];_0x54a924[_0xd54b('0x7f')]=_0x4d7e24['List'];_0x54a924['applications']=_['orderBy'](_0x54a924[_0xd54b('0x7d')],[_0xd54b('0x80')],['asc']);if(_0x54a924[_0xd54b('0x7c')][_0xd54b('0x7e')]){delete _0x54a924[_0xd54b('0x7c')][_0xd54b('0x7e')];}if(_0x54a924[_0xd54b('0x7c')]['List']&&_0x54a924[_0xd54b('0x7c')][_0xd54b('0x7a')][_0xd54b('0x7b')]['length']){return _0x54a924[_0xd54b('0x7c')][_0xd54b('0x7a')][_0xd54b('0x7b')][0x0];}var _0x5f4b26=_[_0xd54b('0x18')](_0x14f524[_0xd54b('0x57')],{'firstName':_0x14f524[_0xd54b('0x57')][_0xd54b('0x75')],'ListId':_0x4d7e24[_0xd54b('0x73')]});_0x5f4b26[_0x14f524[_0xd54b('0x57')][_0xd54b('0x77')]]=_0x14f524[_0xd54b('0x57')][_0xd54b('0x75')];return db[_0xd54b('0x6d')][_0xd54b('0x56')](_0x5f4b26,{'fields':_0x460121,'raw':!![]});}})[_0xd54b('0x1f')](handleEntityNotFound(_0x1a43b8,null))['then'](function(_0x290a6d){_0x54a924[_0xd54b('0x81')]=_0x290a6d;if(_0x290a6d){var _0x5cffb9={'ContactId':_0x290a6d['id'],'OpenchannelAccountId':_0x14f524[_0xd54b('0x53')]['id'],'from':(_0x290a6d[_0xd54b('0x82')]||'')+'\x20'+(_0x290a6d['lastName']||'')};var _0x3888fa={'OpenchannelAccountId':_0x14f524[_0xd54b('0x53')]['id'],'closed':![]};if(_0x14f524['body'][_0xd54b('0x83')]){_0x3888fa[_0xd54b('0x83')]=_0x14f524[_0xd54b('0x57')]['threadId'];return db[_0xd54b('0x84')][_0xd54b('0x5a')]({'where':_0x3888fa})[_0xd54b('0x1f')](function(_0x5c3f67){if(_0x5c3f67){return[_0x5c3f67,![]];}_0x5cffb9['threadId']=_0x14f524[_0xd54b('0x57')][_0xd54b('0x83')];_0x5cffb9['externalUrl']=_0x14f524['body'][_0xd54b('0x85')];return db[_0xd54b('0x84')][_0xd54b('0x56')](_0x5cffb9)[_0xd54b('0x1f')](function(_0x568df){return[_0x568df,!![]];});});}else{_0x3888fa[_0xd54b('0x83')]=null;}_0x3888fa['ContactId']=_0x290a6d['id'];return db[_0xd54b('0x84')]['find']({'where':_0x3888fa})['then'](function(_0x3857fb){if(_0x3857fb){return[_0x3857fb,![]];}return db[_0xd54b('0x84')]['create'](_0x5cffb9)[_0xd54b('0x1f')](function(_0x1acc5e){return[_0x1acc5e,!![]];});});}})[_0xd54b('0x86')](function(_0x474968,_0x4968a8){if(_0x474968){_0x415c09=_0x4968a8;if(!_0x4968a8){var _0x121fb6={'from':(_0x54a924[_0xd54b('0x81')][_0xd54b('0x82')]||'')+'\x20'+(_0x54a924[_0xd54b('0x81')]['lastName']||'')};if(_0x14f524[_0xd54b('0x57')][_0xd54b('0x83')]&&_0x14f524['body'][_0xd54b('0x87')]&&_0x14f524[_0xd54b('0x57')][_0xd54b('0x83')]!=_0x14f524[_0xd54b('0x57')][_0xd54b('0x87')]){_0x121fb6[_0xd54b('0x83')]=_0x14f524[_0xd54b('0x57')][_0xd54b('0x87')];}return _0x474968[_0xd54b('0x32')](_0x121fb6);}else{return _0x474968;}}})[_0xd54b('0x1f')](function(_0x7b5dc0){_0x54a924[_0xd54b('0x88')]=_0x7b5dc0['get']({'plain':!![]});_0x54a924[_0xd54b('0x88')][_0xd54b('0x89')]=_0x415c09;if(_0x54a924[_0xd54b('0x88')][_0xd54b('0x89')]){if(_0x54a924[_0xd54b('0x7c')][_0xd54b('0x8a')]){_0x54a924[_0xd54b('0x7d')]['push']({'id':0x0,'priority':_0x54a924[_0xd54b('0x7d')]['length']+0x1,'app':_0xd54b('0x8b'),'appdata':_0xd54b('0x8c'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage']['create']({'body':_0x14f524[_0xd54b('0x57')][_0xd54b('0x57')],'OpenchannelAccountId':_0x14f524[_0xd54b('0x53')]['id'],'OpenchannelInteractionId':_0x7b5dc0['id'],'direction':'in','ContactId':_0x54a924[_0xd54b('0x81')]['id'],'AttachmentId':_0x14f524[_0xd54b('0x57')][_0xd54b('0x8d')]});})[_0xd54b('0x1f')](function(_0x4d18af){_0x54a924['message']=_0x4d18af;if(_0x54a924[_0xd54b('0x88')][_0xd54b('0x8e')]){return db[_0xd54b('0x8f')][_0xd54b('0x5a')]({'attributes':['id','name'],'where':{'id':_0x54a924[_0xd54b('0x88')][_0xd54b('0x8e')]}})['then'](function(_0x3881db){if(_0x3881db){_0x54a924[_0xd54b('0x7d')][_0xd54b('0x90')]({'id':0x0,'priority':0x0,'app':_0xd54b('0x91'),'appdata':_0x3881db[_0xd54b('0x3d')]+','+(_0x54a924[_0xd54b('0x7c')][_0xd54b('0x92')]||0xa),'interval':'*,*,*,*'});_0x54a924[_0xd54b('0x93')]=![];}return respondWithRpcPromise(_0xd54b('0x94'),'startRouting',_0x54a924);});}return respondWithRpcPromise(_0xd54b('0x94'),'startRouting',_0x54a924);})[_0xd54b('0x1f')](function(_0x499d92){respondWithRpcPromise(_0xd54b('0x95'),_0xd54b('0x95'),{'event':_0xd54b('0x6b'),'message':_0x499d92},client9002);return _0x499d92;})['then'](respondWithResult(_0x1a43b8,null))[_0xd54b('0x51')](handleError(_0x1a43b8,null));};exports[_0xd54b('0x96')]=function(_0x1c21f4,_0x22093f,_0x55f4d5){return db['OpenchannelAccount'][_0xd54b('0x61')]({'where':{'id':_0x1c21f4['params']['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x22093f,null))[_0xd54b('0x1f')](function(_0x30b1a2){if(_0x30b1a2){return db[_0xd54b('0x97')][_0xd54b('0x98')](function(_0x446536){return db[_0xd54b('0x99')]['destroy']({'where':{'OpenchannelAccountId':_0x1c21f4[_0xd54b('0x53')]['id']},'transaction':_0x446536})['then'](function(_0x3f1b08){var _0x2f7e24=_[_0xd54b('0x3c')](_0x1c21f4[_0xd54b('0x57')],function(_0x584e7f){_0x584e7f[_0xd54b('0x63')]=_0x1c21f4[_0xd54b('0x53')]['id'];return _0x584e7f;});return db['OpenchannelApplication'][_0xd54b('0x9a')](_0x2f7e24,{'transaction':_0x446536});});})['then'](function(){return db[_0xd54b('0x99')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x1c21f4[_0xd54b('0x53')]['id']},'order':_0xd54b('0x80')});});}})['then'](respondWithResult(_0x22093f,null))[_0xd54b('0x51')](handleError(_0x22093f,null));};exports[_0xd54b('0x9b')]=function(_0xb8dc60,_0x2c777e,_0x18fa5b){var _0x2e5fd7={};var _0x4948ef={};var _0x4356f6;var _0x4a8a79;return db[_0xd54b('0x38')]['findOne']({'where':{'id':_0xb8dc60[_0xd54b('0x53')]['id']}})['then'](handleEntityNotFound(_0x2c777e,null))[_0xd54b('0x1f')](function(_0x3be7c2){if(_0x3be7c2){_0x4356f6=_0x3be7c2;_0x4948ef[_0xd54b('0x3b')]=_[_0xd54b('0x3f')](db['OpenchannelApplication'][_0xd54b('0x55')]);_0x4948ef[_0xd54b('0x3e')]=_['keys'](_0xb8dc60[_0xd54b('0x3e')]);_0x4948ef[_0xd54b('0x40')]=_['intersection'](_0x4948ef[_0xd54b('0x3b')],_0x4948ef['query']);_0x2e5fd7[_0xd54b('0x43')]=_[_0xd54b('0x41')](_0x4948ef['model'],qs[_0xd54b('0x42')](_0xb8dc60[_0xd54b('0x3e')]['fields']));_0x2e5fd7[_0xd54b('0x43')]=_0x2e5fd7[_0xd54b('0x43')][_0xd54b('0x44')]?_0x2e5fd7[_0xd54b('0x43')]:_0x4948ef[_0xd54b('0x3b')];_0x2e5fd7['order']=qs[_0xd54b('0x62')](_0xb8dc60[_0xd54b('0x3e')][_0xd54b('0x62')]);_0x2e5fd7[_0xd54b('0x48')]=qs[_0xd54b('0x40')](_[_0xd54b('0x49')](_0xb8dc60[_0xd54b('0x3e')],_0x4948ef[_0xd54b('0x40')]));if(_0xb8dc60[_0xd54b('0x3e')][_0xd54b('0x4c')]){_0x2e5fd7['where']=_[_0xd54b('0x4a')](_0x2e5fd7[_0xd54b('0x48')],{'$or':_['map'](_0x2e5fd7[_0xd54b('0x43')],function(_0x53288e){var _0x207ca2={};_0x207ca2[_0x53288e]={'$like':'%'+_0xb8dc60['query'][_0xd54b('0x4c')]+'%'};return _0x207ca2;})});}_0x2e5fd7=_[_0xd54b('0x4a')]({},_0x2e5fd7,_0xb8dc60[_0xd54b('0x4d')]);return _0x4356f6['getApplications'](_0x2e5fd7);}})[_0xd54b('0x1f')](function(_0x71aa6f){if(_0x71aa6f){_0x4a8a79=_0x71aa6f[_0xd54b('0x44')];if(!_0xb8dc60['query'][_0xd54b('0x45')]('nolimit')){_0x2e5fd7[_0xd54b('0x2c')]=qs[_0xd54b('0x2c')](_0xb8dc60[_0xd54b('0x3e')][_0xd54b('0x2c')]);_0x2e5fd7[_0xd54b('0x2b')]=qs[_0xd54b('0x2b')](_0xb8dc60[_0xd54b('0x3e')]['offset']);}return _0x4356f6['getApplications'](_0x2e5fd7);}})[_0xd54b('0x1f')](function(_0x251b6e){if(_0x251b6e){return _0x251b6e?{'count':_0x4a8a79,'rows':_0x251b6e}:null;}})[_0xd54b('0x1f')](respondWithResult(_0x2c777e,null))[_0xd54b('0x51')](handleError(_0x2c777e,null));};exports[_0xd54b('0x9c')]=function(_0x28002a,_0x2d5cd5,_0x559f7a){var _0x415923={'raw':![],'where':{}};var _0x57ab89={};var _0x42f172={'count':0x0,'rows':[]};return db[_0xd54b('0x38')][_0xd54b('0x61')]({'where':{'id':_0x28002a[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x2d5cd5,null))[_0xd54b('0x1f')](function(_0x596ac3){if(_0x596ac3){_0x57ab89[_0xd54b('0x3b')]=_[_0xd54b('0x3f')](db[_0xd54b('0x84')][_0xd54b('0x55')]);_0x57ab89[_0xd54b('0x3e')]=_[_0xd54b('0x3f')](_0x28002a[_0xd54b('0x3e')]);_0x57ab89[_0xd54b('0x40')]=_[_0xd54b('0x41')](_0x57ab89['model'],_0x57ab89[_0xd54b('0x3e')]);_0x415923[_0xd54b('0x43')]=_[_0xd54b('0x41')](_0x57ab89[_0xd54b('0x3b')],qs[_0xd54b('0x42')](_0x28002a['query'][_0xd54b('0x42')]));_0x415923[_0xd54b('0x43')]=_0x415923[_0xd54b('0x43')][_0xd54b('0x44')]?_0x415923[_0xd54b('0x43')]:_0x57ab89[_0xd54b('0x3b')];if(!_0x28002a[_0xd54b('0x3e')][_0xd54b('0x45')]('nolimit')){_0x415923[_0xd54b('0x2c')]=qs[_0xd54b('0x2c')](_0x28002a[_0xd54b('0x3e')]['limit']);_0x415923[_0xd54b('0x2b')]=qs[_0xd54b('0x2b')](_0x28002a['query'][_0xd54b('0x2b')]);}_0x415923[_0xd54b('0x47')]=qs[_0xd54b('0x62')](_0x28002a[_0xd54b('0x3e')][_0xd54b('0x62')]);_0x415923[_0xd54b('0x48')]=qs[_0xd54b('0x40')](_[_0xd54b('0x49')](_0x28002a[_0xd54b('0x3e')],_0x57ab89[_0xd54b('0x40')]));_0x415923['where']['OpenchannelAccountId']=_0x596ac3['id'];if(_0x28002a[_0xd54b('0x3e')][_0xd54b('0x4c')]){_0x415923[_0xd54b('0x48')]=_['merge'](_0x415923['where'],{'$or':_['map'](_0x415923[_0xd54b('0x43')],function(_0x46575a){var _0x440fd9={};_0x440fd9[_0x46575a]={'$like':'%'+_0x28002a[_0xd54b('0x3e')][_0xd54b('0x4c')]+'%'};return _0x440fd9;})});}_0x415923=_['merge']({},_0x415923,_0x28002a['options']);return db[_0xd54b('0x84')][_0xd54b('0x2d')]({'where':_0x415923['where']})[_0xd54b('0x1f')](function(_0x467aa5){_0x42f172[_0xd54b('0x2d')]=_0x467aa5;if(_0x28002a['query'][_0xd54b('0x4e')]){_0x415923[_0xd54b('0x4f')]=[{'model':db[_0xd54b('0x6d')],'as':_0xd54b('0x9d'),'required':![]},{'model':db[_0xd54b('0x8f')],'as':_0xd54b('0x9e'),'attributes':[_0xd54b('0x3d'),_0xd54b('0x9f'),_0xd54b('0xa0')],'required':![]},{'model':db[_0xd54b('0xa1')],'as':'Tags','attributes':['id','name',_0xd54b('0xa2')],'where':_0x28002a['query']['tag']?{'id':_0x28002a['query'][_0xd54b('0xa3')]}:undefined,'required':_0x28002a[_0xd54b('0x3e')][_0xd54b('0xa3')]?!![]:![]}];}return db[_0xd54b('0x84')]['findAll'](_0x415923);})[_0xd54b('0x1f')](function(_0x5dc861){_0x42f172[_0xd54b('0x64')]=_0x5dc861;return _0x42f172;});}})[_0xd54b('0x1f')](respondWithFilteredResult(_0x2d5cd5,_0x415923))['catch'](handleError(_0x2d5cd5,null));};exports[_0xd54b('0xa4')]=function(_0x89ffce,_0x2874c8,_0x2c3baa){return db[_0xd54b('0x38')][_0xd54b('0x5a')]({'where':{'id':_0x89ffce[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x2874c8,null))['then'](function(_0x53ef33){if(_0x53ef33){return _0x53ef33[_0xd54b('0xa4')](_0x89ffce[_0xd54b('0x57')][_0xd54b('0x66')],_[_0xd54b('0xa5')](_0x89ffce[_0xd54b('0x57')],[_0xd54b('0x66'),'id'])||{})[_0xd54b('0x86')](function(_0x1413fc){for(var _0x347282=0x0;_0x347282<_0x89ffce[_0xd54b('0x57')][_0xd54b('0x66')][_0xd54b('0x44')];_0x347282+=0x1){socket[_0xd54b('0xa6')](_0xd54b('0xa7'),{'UserId':Number(_0x89ffce[_0xd54b('0x57')][_0xd54b('0x66')][_0x347282]),'OpenchannelAccountId':Number(_0x89ffce[_0xd54b('0x53')]['id'])});}return _0x1413fc;});}})[_0xd54b('0x1f')](respondWithResult(_0x2874c8,null))[_0xd54b('0x51')](handleError(_0x2874c8,null));};exports[_0xd54b('0xa8')]=function(_0x204b2a,_0x3351f1,_0x37bec1){return db[_0xd54b('0x38')][_0xd54b('0x5a')]({'where':{'id':_0x204b2a[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x3351f1,null))[_0xd54b('0x1f')](function(_0x5be002){if(_0x5be002){return _0x5be002[_0xd54b('0xa8')](_0x204b2a[_0xd54b('0x3e')][_0xd54b('0x66')])[_0xd54b('0x1f')](function(){if(_[_0xd54b('0xa9')](_0x204b2a[_0xd54b('0x3e')]['ids'])){for(var _0x563c3b=0x0;_0x563c3b<_0x204b2a[_0xd54b('0x3e')][_0xd54b('0x66')]['length'];_0x563c3b+=0x1){socket[_0xd54b('0xa6')](_0xd54b('0xaa'),{'UserId':Number(_0x204b2a['query'][_0xd54b('0x66')][_0x563c3b]),'OpenchannelAccountId':Number(_0x204b2a['params']['id'])});}}else{socket[_0xd54b('0xa6')](_0xd54b('0xaa'),{'UserId':Number(_0x204b2a[_0xd54b('0x3e')][_0xd54b('0x66')]),'OpenchannelAccountId':Number(_0x204b2a[_0xd54b('0x53')]['id'])});}});}})[_0xd54b('0x1f')](respondWithStatusCode(_0x3351f1,null))[_0xd54b('0x51')](handleError(_0x3351f1,null));};exports[_0xd54b('0xab')]=function(_0x257d9d,_0x66284c,_0x2ebc76){var _0x45370d={};var _0x3718a9={};var _0x52dcfa;var _0x14e67b;return db[_0xd54b('0x38')]['findOne']({'where':{'id':_0x257d9d[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0x66284c,null))['then'](function(_0x11efdd){if(_0x11efdd){_0x52dcfa=_0x11efdd;_0x3718a9[_0xd54b('0x3b')]=_[_0xd54b('0x3f')](db[_0xd54b('0x8f')][_0xd54b('0x55')]);_0x3718a9['query']=_['keys'](_0x257d9d[_0xd54b('0x3e')]);_0x3718a9[_0xd54b('0x40')]=_[_0xd54b('0x41')](_0x3718a9[_0xd54b('0x3b')],_0x3718a9[_0xd54b('0x3e')]);_0x45370d[_0xd54b('0x43')]=_[_0xd54b('0x41')](_0x3718a9[_0xd54b('0x3b')],qs[_0xd54b('0x42')](_0x257d9d[_0xd54b('0x3e')][_0xd54b('0x42')]));_0x45370d[_0xd54b('0x43')]=_0x45370d['attributes']['length']?_0x45370d[_0xd54b('0x43')]:_0x3718a9[_0xd54b('0x3b')];_0x45370d[_0xd54b('0x47')]=qs[_0xd54b('0x62')](_0x257d9d['query'][_0xd54b('0x62')]);_0x45370d['where']=qs[_0xd54b('0x40')](_['pick'](_0x257d9d[_0xd54b('0x3e')],_0x3718a9[_0xd54b('0x40')]));if(_0x257d9d[_0xd54b('0x3e')]['filter']){_0x45370d[_0xd54b('0x48')]=_[_0xd54b('0x4a')](_0x45370d[_0xd54b('0x48')],{'$or':_[_0xd54b('0x3c')](_0x45370d['attributes'],function(_0x117193){var _0x4c027f={};_0x4c027f[_0x117193]={'$like':'%'+_0x257d9d[_0xd54b('0x3e')][_0xd54b('0x4c')]+'%'};return _0x4c027f;})});}_0x45370d=_[_0xd54b('0x4a')]({},_0x45370d,_0x257d9d[_0xd54b('0x4d')]);return _0x52dcfa[_0xd54b('0xab')](_0x45370d);}})[_0xd54b('0x1f')](function(_0x5649ca){if(_0x5649ca){_0x14e67b=_0x5649ca[_0xd54b('0x44')];if(!_0x257d9d[_0xd54b('0x3e')]['hasOwnProperty'](_0xd54b('0x46'))){_0x45370d['limit']=qs['limit'](_0x257d9d['query'][_0xd54b('0x2c')]);_0x45370d[_0xd54b('0x2b')]=qs[_0xd54b('0x2b')](_0x257d9d[_0xd54b('0x3e')][_0xd54b('0x2b')]);}return _0x52dcfa['getAgents'](_0x45370d);}})[_0xd54b('0x1f')](function(_0x2297c6){if(_0x2297c6){return _0x2297c6?{'count':_0x14e67b,'rows':_0x2297c6}:null;}})[_0xd54b('0x1f')](respondWithResult(_0x66284c,null))['catch'](handleError(_0x66284c,null));};exports[_0xd54b('0x36')]=function(_0x576f59,_0xc71aad,_0x5545a4){var _0x241b2d,_0x4e67ca,_0x4a4fa2;if(_['isNil'](_0x576f59[_0xd54b('0x57')]['body'])||_0x576f59[_0xd54b('0x57')][_0xd54b('0x57')]===''){throw new db['Sequelize'][(_0xd54b('0x6f'))](_0xd54b('0xac'));}if(_['isNil'](_0x576f59[_0xd54b('0x57')]['to'])){}_0x241b2d=_0x576f59[_0xd54b('0x57')]['to'];return db[_0xd54b('0x38')]['findOne']({'where':{'id':_0x576f59[_0xd54b('0x53')]['id']}})[_0xd54b('0x1f')](handleEntityNotFound(_0xc71aad,null))[_0xd54b('0x1f')](function(_0x30722b){if(_0x30722b){return db[_0xd54b('0x38')][_0xd54b('0x5a')]({'where':{'id':_0x30722b['id']},'include':[{'model':db[_0xd54b('0x79')],'as':_0xd54b('0x7a'),'include':[{'model':db[_0xd54b('0x6d')],'as':_0xd54b('0x7b'),'where':{[_0x30722b[_0xd54b('0x77')]]:_0x241b2d},'limit':0x1,'order':[[_0xd54b('0x72'),'DESC']]}]}]})['then'](handleEntityNotFound(_0xc71aad,null))[_0xd54b('0x1f')](function(_0xee8c24){if(_0xee8c24&&_0xee8c24[_0xd54b('0x7a')]){_0x4e67ca=_0xee8c24['get']({'plain':!![]});if(_0x4e67ca[_0xd54b('0x7a')]&&_0x4e67ca[_0xd54b('0x7a')]['Contacts'][_0xd54b('0x44')]){return _0x4e67ca[_0xd54b('0x7a')][_0xd54b('0x7b')][0x0];}return db[_0xd54b('0x6d')][_0xd54b('0x56')](_[_0xd54b('0x18')](_0x576f59[_0xd54b('0x57')],{'firstName':_0x241b2d,[_0xee8c24[_0xd54b('0x77')]]:_0x241b2d,'phone':_0x241b2d,'ListId':_0x4e67ca[_0xd54b('0x73')]}));}})[_0xd54b('0x1f')](handleEntityNotFound(_0xc71aad,null))[_0xd54b('0x1f')](function(_0x11046d){if(_0x11046d){_0x4a4fa2=_0x11046d;return db['OpenchannelInteraction'][_0xd54b('0x5a')]({'where':{'ContactId':_0x4a4fa2['id'],'closed':![],'OpenchannelAccountId':_0x4e67ca['id']}})['then'](function(_0xd0476c){if(_0xd0476c){return[_0xd0476c,![]];}return db[_0xd54b('0x84')]['create']({'UserId':_0x576f59[_0xd54b('0x58')]['id'],'ContactId':_0x4a4fa2['id'],'OpenchannelAccountId':_0x4e67ca['id'],'lastMsgDirection':_0xd54b('0xad'),'Messages':[_[_0xd54b('0x4a')](_0x576f59[_0xd54b('0x57')],{'read':![],'body':_0x576f59[_0xd54b('0x57')][_0xd54b('0x57')],'OpenchannelAccountId':_0x4e67ca['id'],'UserId':_0x576f59[_0xd54b('0x58')]['id'],'ContactId':_0x4a4fa2['id']})]},{'include':[{'model':db[_0xd54b('0xae')],'as':_0xd54b('0xaf')}]})[_0xd54b('0x1f')](function(_0xcb622){return[_0xcb622,!![]];});});}})[_0xd54b('0x86')](function(_0x12f5e5,_0x3ea5a5){if(_0x3ea5a5){return _0x12f5e5;}return db['OpenchannelMessage'][_0xd54b('0x56')](_['merge'](_0x576f59['body'],{'read':![],'body':_0x576f59[_0xd54b('0x57')][_0xd54b('0x57')],'OpenchannelAccountId':_0x4e67ca['id'],'OpenchannelInteractionId':_0x12f5e5['id'],'UserId':_0x576f59['user']['id'],'ContactId':_0x4a4fa2['id']}))['then'](function(_0x429fc8){_0x12f5e5['dataValues'][_0xd54b('0xaf')]=[];_0x12f5e5[_0xd54b('0xb0')][_0xd54b('0xaf')][_0xd54b('0xb1')](_0x429fc8['dataValues']);return _0x12f5e5;});});}})[_0xd54b('0x1f')](respondWithResult(_0xc71aad,null))[_0xd54b('0x51')](handleError(_0xc71aad,null));};
\ No newline at end of file
+var _0x36e5=['OpenchannelAccount,\x20%s,\x20%s','message','catch','sendStatus','status','json','offset','limit','undefined','count','set','apply','update','then','destroy','get','OpenchannelAccounts','UserProfileResource','end','stack','name','send','index','Pause','map','fieldName','key','model','query','keys','intersection','attributes','fields','length','nolimit','where','filters','filter','merge','type','VIRTUAL','options','OpenchannelAccount','includeAll','include','findAll','rows','show','mandatoryDispositionPause','rawAttributes','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','sort','pick','ids','CannedAnswer','getAnswers','removeAnswers','notify','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','CmContact','DESC','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','Contacts','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','autoclose','push','close','unmanaged','OpenchannelMessage','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','EventManager','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','User','Owner','fullname','Tag','Tags','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x8dc0cc,_0x2df91d){var _0x4f568e=function(_0x2a6dd7){while(--_0x2a6dd7){_0x8dc0cc['push'](_0x8dc0cc['shift']());}};_0x4f568e(++_0x2df91d);}(_0x36e5,0x154));var _0x536e=function(_0xd67723,_0x1e576f){_0xd67723=_0xd67723-0x0;var _0x53b62b=_0x36e5[_0xd67723];return _0x53b62b;};'use strict';var emlformat=require(_0x536e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x536e('0x1'));var rp=require(_0x536e('0x2'));var moment=require(_0x536e('0x3'));var BPromise=require(_0x536e('0x4'));var Mustache=require(_0x536e('0x5'));var util=require(_0x536e('0x6'));var path=require(_0x536e('0x7'));var sox=require(_0x536e('0x8'));var csv=require('to-csv');var ejs=require(_0x536e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x536e('0xa'));var squel=require(_0x536e('0xb'));var crypto=require(_0x536e('0xc'));var jsforce=require(_0x536e('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x536e('0xe'));var Papa=require(_0x536e('0xf'));var Redis=require('ioredis');var authService=require(_0x536e('0x10'));var qs=require(_0x536e('0x11'));var as=require(_0x536e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x536e('0x13'))(_0x536e('0x14'));var utils=require('../../config/utils');var config=require(_0x536e('0x15'));var licenseUtil=require(_0x536e('0x16'));var db=require(_0x536e('0x17'))['db'];config[_0x536e('0x18')]=_[_0x536e('0x19')](config[_0x536e('0x18')],{'host':_0x536e('0x1a'),'port':0x18eb});var socket=require(_0x536e('0x1b'))(new Redis(config['redis']));require(_0x536e('0x1c'))[_0x536e('0x1d')](socket);var jayson=require(_0x536e('0x1e'));var client=jayson[_0x536e('0x1f')]['http']({'port':0x232c});var client9002=jayson['client'][_0x536e('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xdf9849,_0x485938,_0x3dfb21,_0xb33668){return new BPromise(function(_0x4ed67d,_0x1ccdd8){var _0x30cb2f=_0xb33668||client;return _0x30cb2f[_0x536e('0x21')](_0xdf9849,_0x3dfb21)['then'](function(_0x44838b){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x485938,_0x536e('0x22'));logger[_0x536e('0x23')](_0x536e('0x24'),_0x485938,_0x536e('0x22'),JSON[_0x536e('0x25')](_0x44838b));if(_0x44838b[_0x536e('0x26')]){if(_0x44838b['error'][_0x536e('0x27')]===0x1f4){logger[_0x536e('0x26')](_0x536e('0x28'),_0x485938,_0x44838b[_0x536e('0x26')][_0x536e('0x29')]);return _0x1ccdd8(_0x44838b[_0x536e('0x26')][_0x536e('0x29')]);}logger[_0x536e('0x26')]('OpenchannelAccount,\x20%s,\x20%s',_0x485938,_0x44838b['error']['message']);return _0x4ed67d(_0x44838b[_0x536e('0x26')]['message']);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x485938,_0x536e('0x22'));_0x4ed67d(_0x44838b['result'][_0x536e('0x29')]);}})[_0x536e('0x2a')](function(_0x58e8d8){logger[_0x536e('0x26')](_0x536e('0x28'),_0x485938,_0x58e8d8);_0x1ccdd8(_0x58e8d8);});});}function respondWithStatusCode(_0x3f0fde,_0x1f09c6){_0x1f09c6=_0x1f09c6||0xcc;return function(_0x99252b){if(_0x99252b){return _0x3f0fde[_0x536e('0x2b')](_0x1f09c6);}return _0x3f0fde[_0x536e('0x2c')](_0x1f09c6)['end']();};}function respondWithResult(_0x21a3aa,_0x51eae0){_0x51eae0=_0x51eae0||0xc8;return function(_0x11b3ed){if(_0x11b3ed){return _0x21a3aa['status'](_0x51eae0)[_0x536e('0x2d')](_0x11b3ed);}};}function respondWithFilteredResult(_0x548aa7,_0x274998){return function(_0x101aeb){if(_0x101aeb){var _0x56088a=typeof _0x274998[_0x536e('0x2e')]==='undefined'&&typeof _0x274998[_0x536e('0x2f')]===_0x536e('0x30');var _0x211923=_0x101aeb[_0x536e('0x31')];var _0x219827=_0x56088a?0x0:_0x274998[_0x536e('0x2e')];var _0xf2f65d=_0x56088a?_0x101aeb[_0x536e('0x31')]:_0x274998[_0x536e('0x2e')]+_0x274998[_0x536e('0x2f')];var _0x53810f;if(_0xf2f65d>=_0x211923){_0xf2f65d=_0x211923;_0x53810f=0xc8;}else{_0x53810f=0xce;}_0x548aa7['status'](_0x53810f);return _0x548aa7[_0x536e('0x32')]('Content-Range',_0x219827+'-'+_0xf2f65d+'/'+_0x211923)[_0x536e('0x2d')](_0x101aeb);}return null;};}function patchUpdates(_0x48f2dc){return function(_0x1a5466){try{jsonpatch[_0x536e('0x33')](_0x1a5466,_0x48f2dc,!![]);}catch(_0xcf8e56){return BPromise['reject'](_0xcf8e56);}return _0x1a5466['save']();};}function saveUpdates(_0x4ede13,_0x10b2ae){return function(_0x5cf764){if(_0x5cf764){return _0x5cf764[_0x536e('0x34')](_0x4ede13)[_0x536e('0x35')](function(_0x17d9f0){return _0x17d9f0;});}return null;};}function removeEntity(_0x5a0871,_0x2b687b){return function(_0x43b6c2){if(_0x43b6c2){return _0x43b6c2[_0x536e('0x36')]()[_0x536e('0x35')](function(){var _0x524b99=_0x43b6c2[_0x536e('0x37')]({'plain':!![]});var _0x2fb8b5=_0x536e('0x38');return db[_0x536e('0x39')]['destroy']({'where':{'type':_0x2fb8b5,'resourceId':_0x524b99['id']}})[_0x536e('0x35')](function(){return _0x43b6c2;});})[_0x536e('0x35')](function(){_0x5a0871[_0x536e('0x2c')](0xcc)[_0x536e('0x3a')]();});}};}function handleEntityNotFound(_0x654223,_0x33fc2a){return function(_0x8ffebc){if(!_0x8ffebc){_0x654223[_0x536e('0x2b')](0x194);}return _0x8ffebc;};}function handleError(_0x495e03,_0x4c611b){_0x4c611b=_0x4c611b||0x1f4;return function(_0x11db1a){logger[_0x536e('0x26')](_0x11db1a[_0x536e('0x3b')]);if(_0x11db1a[_0x536e('0x3c')]){delete _0x11db1a[_0x536e('0x3c')];}_0x495e03[_0x536e('0x2c')](_0x4c611b)[_0x536e('0x3d')](_0x11db1a);};}exports[_0x536e('0x3e')]=function(_0x50c4c8,_0x2fea80){var _0x406956={'include':[{'model':db[_0x536e('0x3f')],'as':'mandatoryDispositionPause'}]},_0x232693={},_0x5b69c3={'count':0x0,'rows':[]};var _0x2592f2=_[_0x536e('0x40')](db['OpenchannelAccount']['rawAttributes'],function(_0x18a336){return{'name':_0x18a336[_0x536e('0x41')],'type':_0x18a336['type'][_0x536e('0x42')]};});_0x232693[_0x536e('0x43')]=_['map'](_0x2592f2,_0x536e('0x3c'));_0x232693[_0x536e('0x44')]=_[_0x536e('0x45')](_0x50c4c8[_0x536e('0x44')]);_0x232693['filters']=_[_0x536e('0x46')](_0x232693['model'],_0x232693['query']);_0x406956[_0x536e('0x47')]=_[_0x536e('0x46')](_0x232693[_0x536e('0x43')],qs[_0x536e('0x48')](_0x50c4c8[_0x536e('0x44')][_0x536e('0x48')]));_0x406956[_0x536e('0x47')]=_0x406956[_0x536e('0x47')][_0x536e('0x49')]?_0x406956['attributes']:_0x232693[_0x536e('0x43')];if(!_0x50c4c8[_0x536e('0x44')]['hasOwnProperty'](_0x536e('0x4a'))){_0x406956[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x50c4c8[_0x536e('0x44')][_0x536e('0x2f')]);_0x406956['offset']=qs['offset'](_0x50c4c8[_0x536e('0x44')][_0x536e('0x2e')]);}_0x406956['order']=qs['sort'](_0x50c4c8[_0x536e('0x44')]['sort']);_0x406956[_0x536e('0x4b')]=qs[_0x536e('0x4c')](_['pick'](_0x50c4c8[_0x536e('0x44')],_0x232693[_0x536e('0x4c')]),_0x2592f2);if(_0x50c4c8[_0x536e('0x44')][_0x536e('0x4d')]){_0x406956[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0x406956[_0x536e('0x4b')],{'$or':_['map'](_0x2592f2,function(_0x472fff){if(_0x472fff[_0x536e('0x4f')]!==_0x536e('0x50')){var _0x26d110={};_0x26d110[_0x472fff[_0x536e('0x3c')]]={'$like':'%'+_0x50c4c8['query']['filter']+'%'};return _0x26d110;}})});}_0x406956=_[_0x536e('0x4e')]({},_0x406956,_0x50c4c8[_0x536e('0x51')]);var _0x30ba1a={'where':_0x406956['where']};return db[_0x536e('0x52')][_0x536e('0x31')](_0x30ba1a)[_0x536e('0x35')](function(_0x47cab0){_0x5b69c3[_0x536e('0x31')]=_0x47cab0;if(_0x50c4c8['query'][_0x536e('0x53')]){_0x406956[_0x536e('0x54')]=[{'all':!![]}];}return db[_0x536e('0x52')][_0x536e('0x55')](_0x406956);})[_0x536e('0x35')](function(_0x3e7b53){_0x5b69c3[_0x536e('0x56')]=_0x3e7b53;return _0x5b69c3;})[_0x536e('0x35')](respondWithFilteredResult(_0x2fea80,_0x406956))[_0x536e('0x2a')](handleError(_0x2fea80,null));};exports[_0x536e('0x57')]=function(_0x205a10,_0x1adf28){var _0x11ddc8={'raw':![],'where':{'id':_0x205a10['params']['id']},'include':[{'model':db['Pause'],'as':_0x536e('0x58')}]},_0x3dcf2f={};_0x3dcf2f[_0x536e('0x43')]=_[_0x536e('0x45')](db[_0x536e('0x52')][_0x536e('0x59')]);_0x3dcf2f[_0x536e('0x44')]=_[_0x536e('0x45')](_0x205a10['query']);_0x3dcf2f[_0x536e('0x4c')]=_['intersection'](_0x3dcf2f['model'],_0x3dcf2f[_0x536e('0x44')]);_0x11ddc8[_0x536e('0x47')]=_['intersection'](_0x3dcf2f[_0x536e('0x43')],qs[_0x536e('0x48')](_0x205a10[_0x536e('0x44')]['fields']));_0x11ddc8[_0x536e('0x47')]=_0x11ddc8[_0x536e('0x47')]['length']?_0x11ddc8[_0x536e('0x47')]:_0x3dcf2f['model'];if(_0x205a10[_0x536e('0x44')][_0x536e('0x53')]){_0x11ddc8['include']=[{'all':!![]}];}_0x11ddc8=_['merge']({},_0x11ddc8,_0x205a10[_0x536e('0x51')]);return db[_0x536e('0x52')]['find'](_0x11ddc8)['then'](handleEntityNotFound(_0x1adf28,null))['then'](respondWithResult(_0x1adf28,null))[_0x536e('0x2a')](handleError(_0x1adf28,null));};exports[_0x536e('0x5a')]=function(_0x5dfa65,_0x708f18){return db[_0x536e('0x52')][_0x536e('0x5a')](_0x5dfa65['body'],{})[_0x536e('0x35')](function(_0x264612){var _0x3c5737=_0x5dfa65[_0x536e('0x5b')][_0x536e('0x37')]({'plain':!![]});if(!_0x3c5737)throw new Error(_0x536e('0x5c'));if(_0x3c5737[_0x536e('0x5d')]===_0x536e('0x5b')){var _0x282ee7=_0x264612['get']({'plain':!![]});var _0x44e05a=_0x536e('0x38');return db[_0x536e('0x5e')]['find']({'where':{'name':_0x44e05a,'userProfileId':_0x3c5737['userProfileId']},'raw':!![]})['then'](function(_0xe349d){if(_0xe349d&&_0xe349d[_0x536e('0x5f')]===0x0){return db[_0x536e('0x39')][_0x536e('0x5a')]({'name':_0x282ee7[_0x536e('0x3c')],'resourceId':_0x282ee7['id'],'type':_0xe349d[_0x536e('0x3c')],'sectionId':_0xe349d['id']},{})[_0x536e('0x35')](function(){return _0x264612;});}else{return _0x264612;}})['catch'](function(_0x5ca4e4){logger[_0x536e('0x26')](_0x536e('0x60'),_0x5ca4e4);throw _0x5ca4e4;});}return _0x264612;})[_0x536e('0x35')](respondWithResult(_0x708f18,0xc9))['catch'](handleError(_0x708f18,null));};exports['update']=function(_0x3b47c8,_0x1fd7ed){if(_0x3b47c8[_0x536e('0x61')]['id']){delete _0x3b47c8[_0x536e('0x61')]['id'];}return db['OpenchannelAccount'][_0x536e('0x62')]({'where':{'id':_0x3b47c8[_0x536e('0x63')]['id']},'include':[{'model':db[_0x536e('0x3f')],'as':'mandatoryDispositionPause'}]})[_0x536e('0x35')](handleEntityNotFound(_0x1fd7ed,null))[_0x536e('0x35')](saveUpdates(_0x3b47c8[_0x536e('0x61')],null))['then'](respondWithResult(_0x1fd7ed,null))[_0x536e('0x2a')](handleError(_0x1fd7ed,null));};exports[_0x536e('0x36')]=function(_0x95bc7f,_0xfb0e50){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x95bc7f[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0xfb0e50,null))['then'](removeEntity(_0xfb0e50,null))[_0x536e('0x2a')](handleError(_0xfb0e50,null));};exports[_0x536e('0x64')]=function(_0x154113,_0x3f54e8){return db[_0x536e('0x52')][_0x536e('0x64')]()[_0x536e('0x35')](respondWithResult(_0x3f54e8,null))['catch'](handleError(_0x3f54e8,null));};exports[_0x536e('0x65')]=function(_0x5cf347,_0x427ee5,_0x5599a6){if(_0x5cf347[_0x536e('0x61')]['id']){delete _0x5cf347[_0x536e('0x61')]['id'];}return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x5cf347[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x427ee5,null))[_0x536e('0x35')](function(_0x5865e7){if(_0x5865e7){_0x5cf347[_0x536e('0x61')][_0x536e('0x66')]=_0x5865e7['id'];return db[_0x536e('0x67')][_0x536e('0x5a')](_0x5cf347[_0x536e('0x61')]);}})[_0x536e('0x35')](respondWithResult(_0x427ee5,null))[_0x536e('0x2a')](handleError(_0x427ee5,null));};exports[_0x536e('0x68')]=function(_0x22c2ef,_0x37bf6d,_0x2ef8ae){var _0x5ce30e={'raw':![],'where':{}};var _0x58d466={};var _0x2a5a80={'count':0x0,'rows':[]};return db[_0x536e('0x52')][_0x536e('0x69')]({'where':{'id':_0x22c2ef[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x37bf6d,null))[_0x536e('0x35')](function(_0x39cfeb){if(_0x39cfeb){_0x58d466['model']=_[_0x536e('0x45')](db[_0x536e('0x67')][_0x536e('0x59')]);_0x58d466['query']=_[_0x536e('0x45')](_0x22c2ef['query']);_0x58d466[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x58d466[_0x536e('0x43')],_0x58d466[_0x536e('0x44')]);_0x5ce30e[_0x536e('0x47')]=_[_0x536e('0x46')](_0x58d466[_0x536e('0x43')],qs[_0x536e('0x48')](_0x22c2ef[_0x536e('0x44')][_0x536e('0x48')]));_0x5ce30e[_0x536e('0x47')]=_0x5ce30e[_0x536e('0x47')][_0x536e('0x49')]?_0x5ce30e['attributes']:_0x58d466[_0x536e('0x43')];if(!_0x22c2ef['query'][_0x536e('0x6a')]('nolimit')){_0x5ce30e[_0x536e('0x2f')]=qs['limit'](_0x22c2ef['query'][_0x536e('0x2f')]);_0x5ce30e[_0x536e('0x2e')]=qs[_0x536e('0x2e')](_0x22c2ef['query'][_0x536e('0x2e')]);}_0x5ce30e[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x22c2ef[_0x536e('0x44')]['sort']);_0x5ce30e[_0x536e('0x4b')]=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x22c2ef[_0x536e('0x44')],_0x58d466[_0x536e('0x4c')]));_0x5ce30e[_0x536e('0x4b')][_0x536e('0x66')]=_0x39cfeb['id'];if(_0x22c2ef[_0x536e('0x44')]['filter']){_0x5ce30e[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0x5ce30e[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0x5ce30e[_0x536e('0x47')],function(_0x24ac60){var _0x14d80e={};_0x14d80e[_0x24ac60]={'$like':'%'+_0x22c2ef[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x14d80e;})});}_0x5ce30e=_[_0x536e('0x4e')]({},_0x5ce30e,_0x22c2ef[_0x536e('0x51')]);return db[_0x536e('0x67')]['count']({'where':_0x5ce30e[_0x536e('0x4b')]})[_0x536e('0x35')](function(_0x398e6e){_0x2a5a80['count']=_0x398e6e;if(_0x22c2ef[_0x536e('0x44')][_0x536e('0x53')]){_0x5ce30e[_0x536e('0x54')]=[{'all':!![]}];}return db[_0x536e('0x67')][_0x536e('0x55')](_0x5ce30e);})[_0x536e('0x35')](function(_0xa79667){_0x2a5a80[_0x536e('0x56')]=_0xa79667;return _0x2a5a80;});}})['then'](respondWithFilteredResult(_0x37bf6d,_0x5ce30e))[_0x536e('0x2a')](handleError(_0x37bf6d,null));};exports['removeDispositions']=function(_0x3dc117,_0x156ac6,_0x2595cf){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x3dc117[_0x536e('0x63')]['id']}})['then'](handleEntityNotFound(_0x156ac6,null))[_0x536e('0x35')](function(_0x20cbc1){if(_0x20cbc1){return _0x20cbc1['removeDispositions'](_0x3dc117['query'][_0x536e('0x6e')]);}})['then'](respondWithStatusCode(_0x156ac6,null))[_0x536e('0x2a')](handleError(_0x156ac6,null));};exports['addAnswer']=function(_0x3f4864,_0x1db8c3,_0x3c2fa8){if(_0x3f4864[_0x536e('0x61')]['id']){delete _0x3f4864[_0x536e('0x61')]['id'];}return db[_0x536e('0x52')]['find']({'where':{'id':_0x3f4864['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x1db8c3,null))[_0x536e('0x35')](function(_0x4c68f3){if(_0x4c68f3){_0x3f4864[_0x536e('0x61')][_0x536e('0x66')]=_0x4c68f3['id'];return db[_0x536e('0x6f')][_0x536e('0x5a')](_0x3f4864[_0x536e('0x61')]);}})[_0x536e('0x35')](respondWithResult(_0x1db8c3,null))[_0x536e('0x2a')](handleError(_0x1db8c3,null));};exports[_0x536e('0x70')]=function(_0x38c9fd,_0x249b9a,_0x72dfa1){var _0x1801a1={'raw':![],'where':{}};var _0x11b4d6={};var _0x5380ae={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x38c9fd[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x249b9a,null))[_0x536e('0x35')](function(_0x561c50){if(_0x561c50){_0x11b4d6['model']=_[_0x536e('0x45')](db['CannedAnswer'][_0x536e('0x59')]);_0x11b4d6[_0x536e('0x44')]=_[_0x536e('0x45')](_0x38c9fd[_0x536e('0x44')]);_0x11b4d6[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x11b4d6[_0x536e('0x43')],_0x11b4d6[_0x536e('0x44')]);_0x1801a1[_0x536e('0x47')]=_[_0x536e('0x46')](_0x11b4d6[_0x536e('0x43')],qs[_0x536e('0x48')](_0x38c9fd[_0x536e('0x44')][_0x536e('0x48')]));_0x1801a1['attributes']=_0x1801a1['attributes'][_0x536e('0x49')]?_0x1801a1[_0x536e('0x47')]:_0x11b4d6[_0x536e('0x43')];if(!_0x38c9fd['query'][_0x536e('0x6a')](_0x536e('0x4a'))){_0x1801a1[_0x536e('0x2f')]=qs['limit'](_0x38c9fd[_0x536e('0x44')]['limit']);_0x1801a1[_0x536e('0x2e')]=qs[_0x536e('0x2e')](_0x38c9fd[_0x536e('0x44')][_0x536e('0x2e')]);}_0x1801a1[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x38c9fd[_0x536e('0x44')]['sort']);_0x1801a1[_0x536e('0x4b')]=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x38c9fd[_0x536e('0x44')],_0x11b4d6[_0x536e('0x4c')]));_0x1801a1[_0x536e('0x4b')][_0x536e('0x66')]=_0x561c50['id'];if(_0x38c9fd['query']['filter']){_0x1801a1[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0x1801a1[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0x1801a1[_0x536e('0x47')],function(_0x4c32a5){var _0x1db982={};_0x1db982[_0x4c32a5]={'$like':'%'+_0x38c9fd[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x1db982;})});}_0x1801a1=_[_0x536e('0x4e')]({},_0x1801a1,_0x38c9fd['options']);return db['CannedAnswer'][_0x536e('0x31')]({'where':_0x1801a1[_0x536e('0x4b')]})[_0x536e('0x35')](function(_0x4bde09){_0x5380ae[_0x536e('0x31')]=_0x4bde09;if(_0x38c9fd[_0x536e('0x44')][_0x536e('0x53')]){_0x1801a1['include']=[{'all':!![]}];}return db[_0x536e('0x6f')][_0x536e('0x55')](_0x1801a1);})['then'](function(_0x15af5f){_0x5380ae[_0x536e('0x56')]=_0x15af5f;return _0x5380ae;});}})[_0x536e('0x35')](respondWithFilteredResult(_0x249b9a,_0x1801a1))[_0x536e('0x2a')](handleError(_0x249b9a,null));};exports['removeAnswers']=function(_0x3caa4e,_0x31421d,_0x398167){return db['OpenchannelAccount'][_0x536e('0x62')]({'where':{'id':_0x3caa4e['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x31421d,null))['then'](function(_0x2b5426){if(_0x2b5426){return _0x2b5426[_0x536e('0x71')](_0x3caa4e['query']['ids']);}})['then'](respondWithStatusCode(_0x31421d,null))[_0x536e('0x2a')](handleError(_0x31421d,null));};exports[_0x536e('0x72')]=function(_0x15dde7,_0x483ce4,_0x4ca73c){var _0x30c599={'body':_0x15dde7[_0x536e('0x61')],'channel':'openchannel'};var _0x444af4=[];var _0x59b674=[];var _0x4087ef={};var _0x369e98=![];return db['CmContact']['describe']()[_0x536e('0x35')](function(_0x5d22f8){if(!_0x5d22f8){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x75'));}_0x444af4=_[_0x536e('0x76')](_[_0x536e('0x45')](_0x5d22f8),['createdAt','updatedAt']);_0x59b674=_[_0x536e('0x76')](_[_0x536e('0x45')](_0x5d22f8),[_0x536e('0x77'),_0x536e('0x78'),_0x536e('0x79'),_0x536e('0x7a')]);if(_0x15dde7[_0x536e('0x61')]['id']){delete _0x15dde7[_0x536e('0x61')]['id'];}if(_['isNil'](_0x15dde7['body'][_0x536e('0x7b')])){throw new db['Sequelize'][(_0x536e('0x74'))](_0x536e('0x7c'));}if(_[_0x536e('0x7d')](_0x15dde7[_0x536e('0x61')][_0x536e('0x61')])||_0x15dde7[_0x536e('0x61')][_0x536e('0x61')]===''){throw new db['Sequelize'][(_0x536e('0x74'))](_0x536e('0x7e'));}if(_[_0x536e('0x7d')](_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')])){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x80')+_0x59b674);}if(!_[_0x536e('0x81')](_0x59b674,_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')])){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x82')+_0x59b674);}_0x4087ef[_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')]]=_0x15dde7['body'][_0x536e('0x7b')];})[_0x536e('0x35')](function(){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x15dde7[_0x536e('0x63')]['id']},'include':[{'model':db[_0x536e('0x83')],'as':_0x536e('0x84'),'include':[{'model':db[_0x536e('0x85')],'as':'Contacts','where':_0x4087ef,'limit':0x1,'order':[['updatedAt',_0x536e('0x86')]]}]},{'model':db[_0x536e('0x87')],'as':_0x536e('0x88')}]});})[_0x536e('0x35')](handleEntityNotFound(_0x483ce4,null))[_0x536e('0x35')](function(_0x13ff75){if(_0x13ff75&&_0x13ff75[_0x536e('0x84')]){_0x30c599[_0x536e('0x89')]=_0x13ff75;_0x30c599[_0x536e('0x8a')]=_0x13ff75[_0x536e('0x88')];_0x30c599[_0x536e('0x8b')]=_0x13ff75[_0x536e('0x84')];_0x30c599[_0x536e('0x8a')]=_[_0x536e('0x8c')](_0x30c599[_0x536e('0x8a')],[_0x536e('0x8d')],['asc']);if(_0x30c599[_0x536e('0x89')]['Applications']){delete _0x30c599[_0x536e('0x89')][_0x536e('0x88')];}if(_0x30c599[_0x536e('0x89')][_0x536e('0x84')]&&_0x30c599[_0x536e('0x89')][_0x536e('0x84')][_0x536e('0x8e')][_0x536e('0x49')]){return _0x30c599[_0x536e('0x89')][_0x536e('0x84')][_0x536e('0x8e')][0x0];}var _0xc7f2da=_[_0x536e('0x19')](_0x15dde7[_0x536e('0x61')],{'firstName':_0x15dde7[_0x536e('0x61')][_0x536e('0x7b')],'ListId':_0x13ff75[_0x536e('0x7a')]});_0xc7f2da[_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')]]=_0x15dde7[_0x536e('0x61')][_0x536e('0x7b')];return db[_0x536e('0x85')][_0x536e('0x5a')](_0xc7f2da,{'fields':_0x444af4,'raw':!![]});}})[_0x536e('0x35')](handleEntityNotFound(_0x483ce4,null))[_0x536e('0x35')](function(_0x334af2){_0x30c599[_0x536e('0x8f')]=_0x334af2;if(_0x334af2){var _0x389cc7={'ContactId':_0x334af2['id'],'OpenchannelAccountId':_0x15dde7['params']['id'],'from':(_0x334af2[_0x536e('0x90')]||'')+'\x20'+(_0x334af2[_0x536e('0x91')]||'')};var _0x69cd50={'OpenchannelAccountId':_0x15dde7['params']['id'],'closed':![]};if(_0x15dde7[_0x536e('0x61')]['threadId']){_0x69cd50[_0x536e('0x92')]=_0x15dde7[_0x536e('0x61')]['threadId'];return db[_0x536e('0x93')]['find']({'where':_0x69cd50})['then'](function(_0x336471){if(_0x336471){return[_0x336471,![]];}_0x389cc7[_0x536e('0x92')]=_0x15dde7['body']['threadId'];_0x389cc7['externalUrl']=_0x15dde7[_0x536e('0x61')][_0x536e('0x94')];return db[_0x536e('0x93')][_0x536e('0x5a')](_0x389cc7)[_0x536e('0x35')](function(_0x58b7ef){return[_0x58b7ef,!![]];});});}else{_0x69cd50[_0x536e('0x92')]=null;}_0x69cd50['ContactId']=_0x334af2['id'];return db[_0x536e('0x93')][_0x536e('0x62')]({'where':_0x69cd50})[_0x536e('0x35')](function(_0x1cb090){if(_0x1cb090){return[_0x1cb090,![]];}return db[_0x536e('0x93')][_0x536e('0x5a')](_0x389cc7)[_0x536e('0x35')](function(_0x33703c){return[_0x33703c,!![]];});});}})[_0x536e('0x95')](function(_0x154f62,_0x115adc){if(_0x154f62){_0x369e98=_0x115adc;if(!_0x115adc){var _0x2ed840={'from':(_0x30c599[_0x536e('0x8f')]['firstName']||'')+'\x20'+(_0x30c599[_0x536e('0x8f')]['lastName']||'')};if(_0x15dde7[_0x536e('0x61')][_0x536e('0x92')]&&_0x15dde7[_0x536e('0x61')][_0x536e('0x96')]&&_0x15dde7[_0x536e('0x61')]['threadId']!=_0x15dde7[_0x536e('0x61')][_0x536e('0x96')]){_0x2ed840[_0x536e('0x92')]=_0x15dde7[_0x536e('0x61')][_0x536e('0x96')];}return _0x154f62[_0x536e('0x34')](_0x2ed840);}else{return _0x154f62;}}})[_0x536e('0x35')](function(_0xda1486){_0x30c599[_0x536e('0x97')]=_0xda1486['get']({'plain':!![]});_0x30c599[_0x536e('0x97')][_0x536e('0x98')]=_0x369e98;if(_0x30c599[_0x536e('0x97')][_0x536e('0x98')]){if(_0x30c599[_0x536e('0x89')][_0x536e('0x99')]){_0x30c599['applications'][_0x536e('0x9a')]({'id':0x0,'priority':_0x30c599[_0x536e('0x8a')][_0x536e('0x49')]+0x1,'app':_0x536e('0x9b'),'appdata':_0x536e('0x9c'),'interval':'*,*,*,*'});}}return db[_0x536e('0x9d')][_0x536e('0x5a')]({'body':_0x15dde7[_0x536e('0x61')][_0x536e('0x61')],'OpenchannelAccountId':_0x15dde7[_0x536e('0x63')]['id'],'OpenchannelInteractionId':_0xda1486['id'],'direction':'in','ContactId':_0x30c599[_0x536e('0x8f')]['id'],'AttachmentId':_0x15dde7[_0x536e('0x61')]['AttachmentId']});})['then'](function(_0x4a9b3b){_0x30c599['message']=_0x4a9b3b;if(_0x30c599[_0x536e('0x97')][_0x536e('0x9e')]){return db['User'][_0x536e('0x62')]({'attributes':['id',_0x536e('0x3c')],'where':{'id':_0x30c599['interaction'][_0x536e('0x9e')]}})['then'](function(_0x9fdd92){if(_0x9fdd92){_0x30c599[_0x536e('0x8a')][_0x536e('0x9f')]({'id':0x0,'priority':0x0,'app':_0x536e('0xa0'),'appdata':_0x9fdd92[_0x536e('0x3c')]+','+(_0x30c599[_0x536e('0x89')][_0x536e('0xa1')]||0xa),'interval':_0x536e('0xa2')});_0x30c599['forcedOwnership']=![];}return respondWithRpcPromise(_0x536e('0xa3'),_0x536e('0xa4'),_0x30c599);});}return respondWithRpcPromise('Start',_0x536e('0xa4'),_0x30c599);})[_0x536e('0x35')](function(_0x39acc9){respondWithRpcPromise('EventManager',_0x536e('0xa5'),{'event':_0x536e('0x72'),'message':_0x39acc9},client9002);return _0x39acc9;})[_0x536e('0x35')](respondWithResult(_0x483ce4,null))['catch'](handleError(_0x483ce4,null));};exports[_0x536e('0xa6')]=function(_0x43fabd,_0x2ad602,_0x50a707){return db[_0x536e('0x52')][_0x536e('0x69')]({'where':{'id':_0x43fabd['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x2ad602,null))[_0x536e('0x35')](function(_0x1815f9){if(_0x1815f9){return db['sequelize'][_0x536e('0xa7')](function(_0x4d1fac){return db[_0x536e('0x87')]['destroy']({'where':{'OpenchannelAccountId':_0x43fabd[_0x536e('0x63')]['id']},'transaction':_0x4d1fac})[_0x536e('0x35')](function(_0x505cca){var _0x3172a9=_['map'](_0x43fabd[_0x536e('0x61')],function(_0x5d021d){_0x5d021d[_0x536e('0x66')]=_0x43fabd['params']['id'];return _0x5d021d;});return db[_0x536e('0x87')][_0x536e('0xa8')](_0x3172a9,{'transaction':_0x4d1fac});});})[_0x536e('0x35')](function(){return db[_0x536e('0x87')][_0x536e('0xa9')]({'where':{'OpenchannelAccountId':_0x43fabd[_0x536e('0x63')]['id']},'order':_0x536e('0x8d')});});}})[_0x536e('0x35')](respondWithResult(_0x2ad602,null))[_0x536e('0x2a')](handleError(_0x2ad602,null));};exports[_0x536e('0xaa')]=function(_0x302224,_0x941c97,_0x5d9f62){var _0x183bbf={};var _0x1e2e2a={};var _0x1f3ad3;var _0x48417e;return db[_0x536e('0x52')]['findOne']({'where':{'id':_0x302224['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x941c97,null))[_0x536e('0x35')](function(_0x423956){if(_0x423956){_0x1f3ad3=_0x423956;_0x1e2e2a[_0x536e('0x43')]=_['keys'](db[_0x536e('0x87')][_0x536e('0x59')]);_0x1e2e2a['query']=_['keys'](_0x302224[_0x536e('0x44')]);_0x1e2e2a[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x1e2e2a[_0x536e('0x43')],_0x1e2e2a[_0x536e('0x44')]);_0x183bbf['attributes']=_['intersection'](_0x1e2e2a[_0x536e('0x43')],qs[_0x536e('0x48')](_0x302224['query'][_0x536e('0x48')]));_0x183bbf[_0x536e('0x47')]=_0x183bbf[_0x536e('0x47')]['length']?_0x183bbf[_0x536e('0x47')]:_0x1e2e2a[_0x536e('0x43')];_0x183bbf[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x302224[_0x536e('0x44')][_0x536e('0x6c')]);_0x183bbf['where']=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x302224[_0x536e('0x44')],_0x1e2e2a['filters']));if(_0x302224['query'][_0x536e('0x4d')]){_0x183bbf[_0x536e('0x4b')]=_['merge'](_0x183bbf[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0x183bbf[_0x536e('0x47')],function(_0x4c5dc4){var _0x3ca99f={};_0x3ca99f[_0x4c5dc4]={'$like':'%'+_0x302224[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x3ca99f;})});}_0x183bbf=_[_0x536e('0x4e')]({},_0x183bbf,_0x302224['options']);return _0x1f3ad3[_0x536e('0xaa')](_0x183bbf);}})[_0x536e('0x35')](function(_0x50c718){if(_0x50c718){_0x48417e=_0x50c718[_0x536e('0x49')];if(!_0x302224[_0x536e('0x44')]['hasOwnProperty'](_0x536e('0x4a'))){_0x183bbf[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x302224[_0x536e('0x44')][_0x536e('0x2f')]);_0x183bbf['offset']=qs[_0x536e('0x2e')](_0x302224[_0x536e('0x44')][_0x536e('0x2e')]);}return _0x1f3ad3[_0x536e('0xaa')](_0x183bbf);}})[_0x536e('0x35')](function(_0x153668){if(_0x153668){return _0x153668?{'count':_0x48417e,'rows':_0x153668}:null;}})[_0x536e('0x35')](respondWithResult(_0x941c97,null))[_0x536e('0x2a')](handleError(_0x941c97,null));};exports[_0x536e('0xab')]=function(_0x2e9cbb,_0x31a49d,_0xbb6b28){var _0x514097={'raw':![],'where':{}};var _0x288872={};var _0x3c7abb={'count':0x0,'rows':[]};return db[_0x536e('0x52')]['findOne']({'where':{'id':_0x2e9cbb[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x31a49d,null))['then'](function(_0x26c01b){if(_0x26c01b){_0x288872[_0x536e('0x43')]=_[_0x536e('0x45')](db[_0x536e('0x93')][_0x536e('0x59')]);_0x288872[_0x536e('0x44')]=_[_0x536e('0x45')](_0x2e9cbb[_0x536e('0x44')]);_0x288872[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x288872[_0x536e('0x43')],_0x288872['query']);_0x514097[_0x536e('0x47')]=_[_0x536e('0x46')](_0x288872[_0x536e('0x43')],qs[_0x536e('0x48')](_0x2e9cbb[_0x536e('0x44')]['fields']));_0x514097[_0x536e('0x47')]=_0x514097[_0x536e('0x47')][_0x536e('0x49')]?_0x514097['attributes']:_0x288872[_0x536e('0x43')];if(!_0x2e9cbb[_0x536e('0x44')]['hasOwnProperty'](_0x536e('0x4a'))){_0x514097[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x2e9cbb['query']['limit']);_0x514097['offset']=qs[_0x536e('0x2e')](_0x2e9cbb[_0x536e('0x44')]['offset']);}_0x514097[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x2e9cbb[_0x536e('0x44')][_0x536e('0x6c')]);_0x514097[_0x536e('0x4b')]=qs['filters'](_[_0x536e('0x6d')](_0x2e9cbb['query'],_0x288872[_0x536e('0x4c')]));_0x514097['where'][_0x536e('0x66')]=_0x26c01b['id'];if(_0x2e9cbb[_0x536e('0x44')]['filter']){_0x514097['where']=_['merge'](_0x514097['where'],{'$or':_['map'](_0x514097['attributes'],function(_0x4fe8e5){var _0x315ef2={};_0x315ef2[_0x4fe8e5]={'$like':'%'+_0x2e9cbb[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x315ef2;})});}_0x514097=_[_0x536e('0x4e')]({},_0x514097,_0x2e9cbb['options']);return db[_0x536e('0x93')][_0x536e('0x31')]({'where':_0x514097['where']})['then'](function(_0x4b8a57){_0x3c7abb['count']=_0x4b8a57;if(_0x2e9cbb[_0x536e('0x44')][_0x536e('0x53')]){_0x514097[_0x536e('0x54')]=[{'model':db[_0x536e('0x85')],'as':_0x536e('0xac'),'required':![]},{'model':db[_0x536e('0xad')],'as':_0x536e('0xae'),'attributes':['name',_0x536e('0xaf'),'internal'],'required':![]},{'model':db[_0x536e('0xb0')],'as':_0x536e('0xb1'),'attributes':['id','name','color'],'where':_0x2e9cbb[_0x536e('0x44')][_0x536e('0xb2')]?{'id':_0x2e9cbb['query']['tag']}:undefined,'required':_0x2e9cbb[_0x536e('0x44')]['tag']?!![]:![]}];}return db[_0x536e('0x93')][_0x536e('0x55')](_0x514097);})[_0x536e('0x35')](function(_0x5cbe32){_0x3c7abb[_0x536e('0x56')]=_0x5cbe32;return _0x3c7abb;});}})[_0x536e('0x35')](respondWithFilteredResult(_0x31a49d,_0x514097))[_0x536e('0x2a')](handleError(_0x31a49d,null));};exports[_0x536e('0xb3')]=function(_0x44dfab,_0x38f02e,_0x3e6f5c){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x44dfab[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x38f02e,null))['then'](function(_0xb17244){if(_0xb17244){return _0xb17244[_0x536e('0xb3')](_0x44dfab['body'][_0x536e('0x6e')],_[_0x536e('0xb4')](_0x44dfab[_0x536e('0x61')],[_0x536e('0x6e'),'id'])||{})[_0x536e('0x95')](function(_0x1a6530){for(var _0xfa54bb=0x0;_0xfa54bb<_0x44dfab['body'][_0x536e('0x6e')]['length'];_0xfa54bb+=0x1){socket['emit'](_0x536e('0xb5'),{'UserId':Number(_0x44dfab[_0x536e('0x61')][_0x536e('0x6e')][_0xfa54bb]),'OpenchannelAccountId':Number(_0x44dfab[_0x536e('0x63')]['id'])});}return _0x1a6530;});}})[_0x536e('0x35')](respondWithResult(_0x38f02e,null))[_0x536e('0x2a')](handleError(_0x38f02e,null));};exports['removeAgents']=function(_0x58ec56,_0x13240f,_0x120088){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x58ec56[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x13240f,null))['then'](function(_0x4eded9){if(_0x4eded9){return _0x4eded9[_0x536e('0xb6')](_0x58ec56['query'][_0x536e('0x6e')])[_0x536e('0x35')](function(){if(_[_0x536e('0xb7')](_0x58ec56['query'][_0x536e('0x6e')])){for(var _0x5113db=0x0;_0x5113db<_0x58ec56['query'][_0x536e('0x6e')][_0x536e('0x49')];_0x5113db+=0x1){socket[_0x536e('0xb8')](_0x536e('0xb9'),{'UserId':Number(_0x58ec56[_0x536e('0x44')][_0x536e('0x6e')][_0x5113db]),'OpenchannelAccountId':Number(_0x58ec56[_0x536e('0x63')]['id'])});}}else{socket[_0x536e('0xb8')](_0x536e('0xb9'),{'UserId':Number(_0x58ec56['query'][_0x536e('0x6e')]),'OpenchannelAccountId':Number(_0x58ec56['params']['id'])});}});}})[_0x536e('0x35')](respondWithStatusCode(_0x13240f,null))[_0x536e('0x2a')](handleError(_0x13240f,null));};exports['getAgents']=function(_0x5a7cd5,_0x379632,_0x25b954){var _0xe6d781={};var _0x59db8b={};var _0x31a7fe;var _0x45e291;return db[_0x536e('0x52')][_0x536e('0x69')]({'where':{'id':_0x5a7cd5[_0x536e('0x63')]['id']}})['then'](handleEntityNotFound(_0x379632,null))['then'](function(_0x423e0f){if(_0x423e0f){_0x31a7fe=_0x423e0f;_0x59db8b['model']=_[_0x536e('0x45')](db[_0x536e('0xad')][_0x536e('0x59')]);_0x59db8b['query']=_[_0x536e('0x45')](_0x5a7cd5[_0x536e('0x44')]);_0x59db8b[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x59db8b[_0x536e('0x43')],_0x59db8b[_0x536e('0x44')]);_0xe6d781[_0x536e('0x47')]=_['intersection'](_0x59db8b[_0x536e('0x43')],qs[_0x536e('0x48')](_0x5a7cd5['query'][_0x536e('0x48')]));_0xe6d781[_0x536e('0x47')]=_0xe6d781['attributes']['length']?_0xe6d781[_0x536e('0x47')]:_0x59db8b[_0x536e('0x43')];_0xe6d781[_0x536e('0x6b')]=qs['sort'](_0x5a7cd5[_0x536e('0x44')][_0x536e('0x6c')]);_0xe6d781['where']=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x5a7cd5[_0x536e('0x44')],_0x59db8b[_0x536e('0x4c')]));if(_0x5a7cd5[_0x536e('0x44')][_0x536e('0x4d')]){_0xe6d781[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0xe6d781[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0xe6d781[_0x536e('0x47')],function(_0x5bdd49){var _0x36e610={};_0x36e610[_0x5bdd49]={'$like':'%'+_0x5a7cd5[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x36e610;})});}_0xe6d781=_['merge']({},_0xe6d781,_0x5a7cd5[_0x536e('0x51')]);return _0x31a7fe[_0x536e('0xba')](_0xe6d781);}})[_0x536e('0x35')](function(_0x406104){if(_0x406104){_0x45e291=_0x406104['length'];if(!_0x5a7cd5[_0x536e('0x44')][_0x536e('0x6a')](_0x536e('0x4a'))){_0xe6d781[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x5a7cd5[_0x536e('0x44')][_0x536e('0x2f')]);_0xe6d781[_0x536e('0x2e')]=qs[_0x536e('0x2e')](_0x5a7cd5[_0x536e('0x44')][_0x536e('0x2e')]);}return _0x31a7fe[_0x536e('0xba')](_0xe6d781);}})['then'](function(_0x4800a3){if(_0x4800a3){return _0x4800a3?{'count':_0x45e291,'rows':_0x4800a3}:null;}})[_0x536e('0x35')](respondWithResult(_0x379632,null))['catch'](handleError(_0x379632,null));};exports[_0x536e('0x3d')]=function(_0x4f7e56,_0x440101,_0x34ed7b){var _0x2e5836,_0x3077cc,_0x466aaa;if(_['isNil'](_0x4f7e56['body'][_0x536e('0x61')])||_0x4f7e56[_0x536e('0x61')][_0x536e('0x61')]===''){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x7e'));}if(_['isNil'](_0x4f7e56[_0x536e('0x61')]['to'])){}_0x2e5836=_0x4f7e56[_0x536e('0x61')]['to'];return db['OpenchannelAccount'][_0x536e('0x69')]({'where':{'id':_0x4f7e56[_0x536e('0x63')]['id']}})['then'](handleEntityNotFound(_0x440101,null))[_0x536e('0x35')](function(_0x505b84){if(_0x505b84){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x505b84['id']},'include':[{'model':db[_0x536e('0x83')],'as':'List','include':[{'model':db[_0x536e('0x85')],'as':_0x536e('0x8e'),'where':{[_0x505b84[_0x536e('0x7f')]]:_0x2e5836},'limit':0x1,'order':[['updatedAt',_0x536e('0x86')]]}]}]})[_0x536e('0x35')](handleEntityNotFound(_0x440101,null))[_0x536e('0x35')](function(_0x524d92){if(_0x524d92&&_0x524d92[_0x536e('0x84')]){_0x3077cc=_0x524d92['get']({'plain':!![]});if(_0x3077cc[_0x536e('0x84')]&&_0x3077cc[_0x536e('0x84')]['Contacts']['length']){return _0x3077cc[_0x536e('0x84')][_0x536e('0x8e')][0x0];}return db[_0x536e('0x85')][_0x536e('0x5a')](_[_0x536e('0x19')](_0x4f7e56[_0x536e('0x61')],{'firstName':_0x2e5836,[_0x524d92['mapKey']]:_0x2e5836,'phone':_0x2e5836,'ListId':_0x3077cc[_0x536e('0x7a')]}));}})[_0x536e('0x35')](handleEntityNotFound(_0x440101,null))[_0x536e('0x35')](function(_0x4a8533){if(_0x4a8533){_0x466aaa=_0x4a8533;return db[_0x536e('0x93')]['find']({'where':{'ContactId':_0x466aaa['id'],'closed':![],'OpenchannelAccountId':_0x3077cc['id']}})[_0x536e('0x35')](function(_0x2476df){if(_0x2476df){return[_0x2476df,![]];}return db[_0x536e('0x93')][_0x536e('0x5a')]({'UserId':_0x4f7e56['user']['id'],'ContactId':_0x466aaa['id'],'OpenchannelAccountId':_0x3077cc['id'],'lastMsgDirection':_0x536e('0xbb'),'Messages':[_['merge'](_0x4f7e56[_0x536e('0x61')],{'read':![],'body':_0x4f7e56[_0x536e('0x61')][_0x536e('0x61')],'OpenchannelAccountId':_0x3077cc['id'],'UserId':_0x4f7e56['user']['id'],'ContactId':_0x466aaa['id']})]},{'include':[{'model':db[_0x536e('0x9d')],'as':_0x536e('0xbc')}]})[_0x536e('0x35')](function(_0x555a36){return[_0x555a36,!![]];});});}})[_0x536e('0x95')](function(_0x395f55,_0x2e1211){if(_0x2e1211){return _0x395f55;}return db['OpenchannelMessage'][_0x536e('0x5a')](_[_0x536e('0x4e')](_0x4f7e56[_0x536e('0x61')],{'read':![],'body':_0x4f7e56[_0x536e('0x61')][_0x536e('0x61')],'OpenchannelAccountId':_0x3077cc['id'],'OpenchannelInteractionId':_0x395f55['id'],'UserId':_0x4f7e56['user']['id'],'ContactId':_0x466aaa['id']}))[_0x536e('0x35')](function(_0x27cacd){_0x395f55[_0x536e('0xbd')][_0x536e('0xbc')]=[];_0x395f55['dataValues'][_0x536e('0xbc')][_0x536e('0x9a')](_0x27cacd['dataValues']);return _0x395f55;});});}})[_0x536e('0x35')](respondWithResult(_0x440101,null))['catch'](handleError(_0x440101,null));};
\ No newline at end of file
index 810fa0c..291a996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['../../mysqldb','setMaxListeners','update','remove','emit','events'];(function(_0x325c44,_0x73295c){var _0x1dd875=function(_0x46496f){while(--_0x46496f){_0x325c44['push'](_0x325c44['shift']());}};_0x1dd875(++_0x73295c);}(_0x41bb,0xc5));var _0xb41b=function(_0x3cbd7d,_0x4b1bbb){_0x3cbd7d=_0x3cbd7d-0x0;var _0x26d335=_0x41bb[_0x3cbd7d];return _0x26d335;};'use strict';var EventEmitter=require(_0xb41b('0x0'));var OpenchannelAccount=require(_0xb41b('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xb41b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb41b('0x3'),'afterDestroy':_0xb41b('0x4')};function emitEvent(_0x148333){return function(_0x448c8e,_0x4ee21b,_0x12cea3){OpenchannelAccountEvents[_0xb41b('0x5')](_0x148333+':'+_0x448c8e['id'],_0x448c8e);OpenchannelAccountEvents[_0xb41b('0x5')](_0x148333,_0x448c8e);_0x12cea3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x13f6=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x7aab43,_0x57263d){var _0x4ae2e2=function(_0x2f9c79){while(--_0x2f9c79){_0x7aab43['push'](_0x7aab43['shift']());}};_0x4ae2e2(++_0x57263d);}(_0x13f6,0x124));var _0x613f=function(_0x4e3b4d,_0x2d6883){_0x4e3b4d=_0x4e3b4d-0x0;var _0x1d59b0=_0x13f6[_0x4e3b4d];return _0x1d59b0;};'use strict';var EventEmitter=require(_0x613f('0x0'));var OpenchannelAccount=require(_0x613f('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x613f('0x2'),'afterUpdate':_0x613f('0x3'),'afterDestroy':_0x613f('0x4')};function emitEvent(_0x5414ff){return function(_0x179f6e,_0x1e01e3,_0x20af2f){OpenchannelAccountEvents['emit'](_0x5414ff+':'+_0x179f6e['id'],_0x179f6e);OpenchannelAccountEvents[_0x613f('0x5')](_0x5414ff,_0x179f6e);_0x20af2f(null);};}for(var e in events){if(events[_0x613f('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 39fb6bf..6773c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x1f5c7a,_0x1bb6aa){var _0x1a4bad=function(_0x384f92){while(--_0x384f92){_0x1f5c7a['push'](_0x1f5c7a['shift']());}};_0x1a4bad(++_0x1bb6aa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x526a2f,_0x59b437){var _0x52f5b6=function(_0x32267f){while(--_0x32267f){_0x526a2f['push'](_0x526a2f['shift']());}};_0x52f5b6(++_0x59b437);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 981124d..b0e9e29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693f=['info','OpenchannelAccount,\x20%s,\x20%s','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./openchannelAccount.socket','register','request','then'];(function(_0x37e0f2,_0x179b96){var _0x3e0463=function(_0x597602){while(--_0x597602){_0x37e0f2['push'](_0x37e0f2['shift']());}};_0x3e0463(++_0x179b96);}(_0x693f,0x9d));var _0xf693=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x693f[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xf693('0x0'));var util=require(_0xf693('0x1'));var moment=require(_0xf693('0x2'));var BPromise=require(_0xf693('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf693('0x4'));var db=require(_0xf693('0x5'))['db'];var utils=require(_0xf693('0x6'));var logger=require(_0xf693('0x7'))(_0xf693('0x8'));var config=require(_0xf693('0x9'));var jayson=require(_0xf693('0xa'));var client=jayson['client'][_0xf693('0xb')]({'port':0x232a});config[_0xf693('0xc')]=_['defaults'](config[_0xf693('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xf693('0xd'))(new Redis(config['redis']));require(_0xf693('0xe'))[_0xf693('0xf')](socket);function respondWithRpcPromise(_0x48984a,_0x4b09d6,_0x5d9159){return new BPromise(function(_0x38b847,_0x527cd9){return client[_0xf693('0x10')](_0x48984a,_0x5d9159)[_0xf693('0x11')](function(_0x2202f1){logger[_0xf693('0x12')](_0xf693('0x13'),_0x4b09d6,'request\x20sent');logger['debug'](_0xf693('0x14'),_0x4b09d6,_0xf693('0x15'),JSON['stringify'](_0x2202f1));if(_0x2202f1[_0xf693('0x16')]){if(_0x2202f1[_0xf693('0x16')]['code']===0x1f4){logger['error'](_0xf693('0x13'),_0x4b09d6,_0x2202f1[_0xf693('0x16')][_0xf693('0x17')]);return _0x527cd9(_0x2202f1[_0xf693('0x16')][_0xf693('0x17')]);}logger['error'](_0xf693('0x13'),_0x4b09d6,_0x2202f1[_0xf693('0x16')][_0xf693('0x17')]);return _0x38b847(_0x2202f1[_0xf693('0x16')][_0xf693('0x17')]);}else{logger[_0xf693('0x12')]('OpenchannelAccount,\x20%s,\x20%s',_0x4b09d6,'request\x20sent');_0x38b847(_0x2202f1['result'][_0xf693('0x17')]);}})[_0xf693('0x18')](function(_0x3f4d4d){logger[_0xf693('0x16')](_0xf693('0x13'),_0x4b09d6,_0x3f4d4d);_0x527cd9(_0x3f4d4d);});});}
\ No newline at end of file
+var _0x8cc8=['code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x8cc8,0x177));var _0x88cc=function(_0x2f1f7f,_0x297200){_0x2f1f7f=_0x2f1f7f-0x0;var _0x4e5bc0=_0x8cc8[_0x2f1f7f];return _0x4e5bc0;};'use strict';var _=require(_0x88cc('0x0'));var util=require(_0x88cc('0x1'));var moment=require(_0x88cc('0x2'));var BPromise=require(_0x88cc('0x3'));var rs=require(_0x88cc('0x4'));var fs=require('fs');var Redis=require(_0x88cc('0x5'));var db=require(_0x88cc('0x6'))['db'];var utils=require(_0x88cc('0x7'));var logger=require(_0x88cc('0x8'))(_0x88cc('0x9'));var config=require(_0x88cc('0xa'));var jayson=require(_0x88cc('0xb'));var client=jayson[_0x88cc('0xc')]['http']({'port':0x232a});config['redis']=_[_0x88cc('0xd')](config[_0x88cc('0xe')],{'host':_0x88cc('0xf'),'port':0x18eb});var socket=require(_0x88cc('0x10'))(new Redis(config['redis']));require(_0x88cc('0x11'))[_0x88cc('0x12')](socket);function respondWithRpcPromise(_0x574946,_0x349991,_0x5586aa){return new BPromise(function(_0x379c2a,_0x23aee8){return client[_0x88cc('0x13')](_0x574946,_0x5586aa)[_0x88cc('0x14')](function(_0x5a70a9){logger[_0x88cc('0x15')](_0x88cc('0x16'),_0x349991,_0x88cc('0x17'));logger[_0x88cc('0x18')](_0x88cc('0x19'),_0x349991,_0x88cc('0x17'),JSON[_0x88cc('0x1a')](_0x5a70a9));if(_0x5a70a9[_0x88cc('0x1b')]){if(_0x5a70a9['error'][_0x88cc('0x1c')]===0x1f4){logger[_0x88cc('0x1b')](_0x88cc('0x16'),_0x349991,_0x5a70a9[_0x88cc('0x1b')][_0x88cc('0x1d')]);return _0x23aee8(_0x5a70a9[_0x88cc('0x1b')]['message']);}logger[_0x88cc('0x1b')](_0x88cc('0x16'),_0x349991,_0x5a70a9[_0x88cc('0x1b')][_0x88cc('0x1d')]);return _0x379c2a(_0x5a70a9[_0x88cc('0x1b')]['message']);}else{logger[_0x88cc('0x15')](_0x88cc('0x16'),_0x349991,_0x88cc('0x17'));_0x379c2a(_0x5a70a9[_0x88cc('0x1e')][_0x88cc('0x1d')]);}})['catch'](function(_0x2a08a4){logger[_0x88cc('0x1b')]('OpenchannelAccount,\x20%s,\x20%s',_0x349991,_0x2a08a4);_0x23aee8(_0x2a08a4);});});}
\ No newline at end of file
index 40e0ce2..7b6ac72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c99=['./openchannelAccount.events','save','remove','update','emit','removeListener','register','openchannelAccount:'];(function(_0xb20170,_0xd6c73d){var _0xf4c14f=function(_0xc05074){while(--_0xc05074){_0xb20170['push'](_0xb20170['shift']());}};_0xf4c14f(++_0xd6c73d);}(_0x8c99,0x1a8));var _0x98c9=function(_0x31295c,_0x2f2b82){_0x31295c=_0x31295c-0x0;var _0x2c150e=_0x8c99[_0x31295c];return _0x2c150e;};'use strict';var OpenchannelAccountEvents=require(_0x98c9('0x0'));var events=[_0x98c9('0x1'),_0x98c9('0x2'),_0x98c9('0x3')];function createListener(_0x33b7c1,_0x33c0b2){return function(_0x3205a2){_0x33c0b2[_0x98c9('0x4')](_0x33b7c1,_0x3205a2);};}function removeListener(_0x459115,_0xeb82d1){return function(){OpenchannelAccountEvents[_0x98c9('0x5')](_0x459115,_0xeb82d1);};}exports[_0x98c9('0x6')]=function(_0x4fb819){for(var _0x7f0fec=0x0,_0x2ed2b6=events['length'];_0x7f0fec<_0x2ed2b6;_0x7f0fec++){var _0x4af8a6=events[_0x7f0fec];var _0x5b983e=createListener(_0x98c9('0x7')+_0x4af8a6,_0x4fb819);OpenchannelAccountEvents['on'](_0x4af8a6,_0x5b983e);}};
\ No newline at end of file
+var _0xd816=['update','emit','removeListener','./openchannelAccount.events','save'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xd816,0xd5));var _0x6d81=function(_0x3cd89f,_0x38fff1){_0x3cd89f=_0x3cd89f-0x0;var _0x41d138=_0xd816[_0x3cd89f];return _0x41d138;};'use strict';var OpenchannelAccountEvents=require(_0x6d81('0x0'));var events=[_0x6d81('0x1'),'remove',_0x6d81('0x2')];function createListener(_0x538e21,_0x540f68){return function(_0x5d99e4){_0x540f68[_0x6d81('0x3')](_0x538e21,_0x5d99e4);};}function removeListener(_0x39a52f,_0x3511a2){return function(){OpenchannelAccountEvents[_0x6d81('0x4')](_0x39a52f,_0x3511a2);};}exports['register']=function(_0x6c01ef){for(var _0x4ba95f=0x0,_0x10f1a7=events['length'];_0x4ba95f<_0x10f1a7;_0x4ba95f++){var _0x96d1ac=events[_0x4ba95f];var _0x15d634=createListener('openchannelAccount:'+_0x96d1ac,_0x6c01ef);OpenchannelAccountEvents['on'](_0x96d1ac,_0x15d634);}};
\ No newline at end of file
index 897dfc2..bf263bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x865a=['delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./openchannelApplication.controller','get','index','isAuthenticated','create','put','/:id','update'];(function(_0x44467a,_0x362fd8){var _0x182b00=function(_0x2e6b09){while(--_0x2e6b09){_0x44467a['push'](_0x44467a['shift']());}};_0x182b00(++_0x362fd8);}(_0x865a,0x101));var _0xa865=function(_0x4ece71,_0x409249){_0x4ece71=_0x4ece71-0x0;var _0x5c86c9=_0x865a[_0x4ece71];return _0x5c86c9;};'use strict';var multer=require(_0xa865('0x0'));var util=require(_0xa865('0x1'));var path=require(_0xa865('0x2'));var timeout=require(_0xa865('0x3'));var express=require(_0xa865('0x4'));var router=express[_0xa865('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa865('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa865('0x7'));router[_0xa865('0x8')]('/',auth['isAuthenticated'](),controller[_0xa865('0x9')]);router[_0xa865('0x8')]('/:id',auth[_0xa865('0xa')](),controller['show']);router['post']('/',auth[_0xa865('0xa')](),controller[_0xa865('0xb')]);router[_0xa865('0xc')](_0xa865('0xd'),auth[_0xa865('0xa')](),controller[_0xa865('0xe')]);router[_0xa865('0xf')]('/:id',auth[_0xa865('0xa')](),controller['destroy']);module[_0xa865('0x10')]=router;
\ No newline at end of file
+var _0xe5aa=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','index','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports'];(function(_0x4e2761,_0x29af8e){var _0x391c26=function(_0x880d5d){while(--_0x880d5d){_0x4e2761['push'](_0x4e2761['shift']());}};_0x391c26(++_0x29af8e);}(_0xe5aa,0x1b9));var _0xae5a=function(_0x4620c8,_0x33ffc3){_0x4620c8=_0x4620c8-0x0;var _0x248647=_0xe5aa[_0x4620c8];return _0x248647;};'use strict';var multer=require(_0xae5a('0x0'));var util=require(_0xae5a('0x1'));var path=require(_0xae5a('0x2'));var timeout=require('connect-timeout');var express=require(_0xae5a('0x3'));var router=express[_0xae5a('0x4')]();var fs_extra=require(_0xae5a('0x5'));var auth=require(_0xae5a('0x6'));var interaction=require(_0xae5a('0x7'));var config=require(_0xae5a('0x8'));var controller=require(_0xae5a('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xae5a('0xa')]);router[_0xae5a('0xb')](_0xae5a('0xc'),auth[_0xae5a('0xd')](),controller[_0xae5a('0xe')]);router[_0xae5a('0xf')]('/',auth[_0xae5a('0xd')](),controller[_0xae5a('0x10')]);router[_0xae5a('0x11')](_0xae5a('0xc'),auth[_0xae5a('0xd')](),controller['update']);router[_0xae5a('0x12')]('/:id',auth[_0xae5a('0xd')](),controller[_0xae5a('0x13')]);module[_0xae5a('0x14')]=router;
\ No newline at end of file
index ee65ab5..e382db1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d46=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x59990a,_0x30f61e){var _0x1d0cb1=function(_0x1b879c){while(--_0x1b879c){_0x59990a['push'](_0x59990a['shift']());}};_0x1d0cb1(++_0x30f61e);}(_0x8d46,0xac));var _0x68d4=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x8d46[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0x68d4('0x0'));module[_0x68d4('0x1')]={'priority':{'type':Sequelize[_0x68d4('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x68d4('0x3')],'allowNull':![],'defaultValue':_0x68d4('0x4')},'appdata':{'type':Sequelize[_0x68d4('0x5')]()},'description':{'type':Sequelize[_0x68d4('0x3')]},'interval':{'type':Sequelize[_0x68d4('0x3')],'defaultValue':_0x68d4('0x6')}};
\ No newline at end of file
+var _0x6450=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x3b8f2e,_0x5a99a8){var _0x1433d5=function(_0x5e0353){while(--_0x5e0353){_0x3b8f2e['push'](_0x3b8f2e['shift']());}};_0x1433d5(++_0x5a99a8);}(_0x6450,0x1c9));var _0x0645=function(_0x21ff42,_0x54282f){_0x21ff42=_0x21ff42-0x0;var _0x435dbc=_0x6450[_0x21ff42];return _0x435dbc;};'use strict';var Sequelize=require(_0x0645('0x0'));module['exports']={'priority':{'type':Sequelize[_0x0645('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x0645('0x2')],'allowNull':![],'defaultValue':_0x0645('0x3')},'appdata':{'type':Sequelize[_0x0645('0x4')]()},'description':{'type':Sequelize[_0x0645('0x2')]},'interval':{'type':Sequelize[_0x0645('0x2')],'defaultValue':_0x0645('0x5')}};
\ No newline at end of file
index f6e034c..76d99cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb1=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','limit','count','Content-Range','json','apply','save','update','destroy','then','error','index','map','OpenchannelApplication','type','key','name','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x5862ec,_0x1f96c9){var _0x4d727b=function(_0x28d419){while(--_0x28d419){_0x5862ec['push'](_0x5862ec['shift']());}};_0x4d727b(++_0x1f96c9);}(_0xbdb1,0x1c5));var _0x1bdb=function(_0x3feb5f,_0x45cc31){_0x3feb5f=_0x3feb5f-0x0;var _0x5c4911=_0xbdb1[_0x3feb5f];return _0x5c4911;};'use strict';var emlformat=require(_0x1bdb('0x0'));var rimraf=require(_0x1bdb('0x1'));var zipdir=require(_0x1bdb('0x2'));var jsonpatch=require(_0x1bdb('0x3'));var rp=require(_0x1bdb('0x4'));var moment=require(_0x1bdb('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1bdb('0x6'));var util=require(_0x1bdb('0x7'));var path=require(_0x1bdb('0x8'));var sox=require(_0x1bdb('0x9'));var csv=require(_0x1bdb('0xa'));var ejs=require(_0x1bdb('0xb'));var fs=require('fs');var fs_extra=require(_0x1bdb('0xc'));var _=require(_0x1bdb('0xd'));var squel=require(_0x1bdb('0xe'));var crypto=require(_0x1bdb('0xf'));var jsforce=require(_0x1bdb('0x10'));var deskjs=require(_0x1bdb('0x11'));var toCsv=require(_0x1bdb('0xa'));var querystring=require(_0x1bdb('0x12'));var Papa=require(_0x1bdb('0x13'));var Redis=require('ioredis');var authService=require(_0x1bdb('0x14'));var qs=require(_0x1bdb('0x15'));var as=require(_0x1bdb('0x16'));var hardwareService=require(_0x1bdb('0x17'));var logger=require(_0x1bdb('0x18'))(_0x1bdb('0x19'));var utils=require(_0x1bdb('0x1a'));var config=require(_0x1bdb('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x1bdb('0x1c'))['db'];function respondWithStatusCode(_0xeec833,_0x17eaf1){_0x17eaf1=_0x17eaf1||0xcc;return function(_0x5c399c){if(_0x5c399c){return _0xeec833[_0x1bdb('0x1d')](_0x17eaf1);}return _0xeec833['status'](_0x17eaf1)[_0x1bdb('0x1e')]();};}function respondWithResult(_0x3e29a9,_0x40606c){_0x40606c=_0x40606c||0xc8;return function(_0x3fed82){if(_0x3fed82){return _0x3e29a9[_0x1bdb('0x1f')](_0x40606c)['json'](_0x3fed82);}};}function respondWithFilteredResult(_0xdc7957,_0x2c647a){return function(_0x5e01fa){if(_0x5e01fa){var _0x59bc63=typeof _0x2c647a[_0x1bdb('0x20')]==='undefined'&&typeof _0x2c647a[_0x1bdb('0x21')]==='undefined';var _0x3a963d=_0x5e01fa[_0x1bdb('0x22')];var _0xb5da5=_0x59bc63?0x0:_0x2c647a[_0x1bdb('0x20')];var _0x16777e=_0x59bc63?_0x5e01fa[_0x1bdb('0x22')]:_0x2c647a[_0x1bdb('0x20')]+_0x2c647a['limit'];var _0x419e69;if(_0x16777e>=_0x3a963d){_0x16777e=_0x3a963d;_0x419e69=0xc8;}else{_0x419e69=0xce;}_0xdc7957[_0x1bdb('0x1f')](_0x419e69);return _0xdc7957['set'](_0x1bdb('0x23'),_0xb5da5+'-'+_0x16777e+'/'+_0x3a963d)[_0x1bdb('0x24')](_0x5e01fa);}return null;};}function patchUpdates(_0x3643cc){return function(_0x5c5b36){try{jsonpatch[_0x1bdb('0x25')](_0x5c5b36,_0x3643cc,!![]);}catch(_0xcb36ef){return BPromise['reject'](_0xcb36ef);}return _0x5c5b36[_0x1bdb('0x26')]();};}function saveUpdates(_0xa93940,_0x499929){return function(_0xc56a7d){if(_0xc56a7d){return _0xc56a7d[_0x1bdb('0x27')](_0xa93940)['then'](function(_0x477cb2){return _0x477cb2;});}return null;};}function removeEntity(_0x557cc8,_0x499445){return function(_0x34e373){if(_0x34e373){return _0x34e373[_0x1bdb('0x28')]()[_0x1bdb('0x29')](function(){_0x557cc8[_0x1bdb('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1354b3,_0x3baec3){return function(_0x31d8b8){if(!_0x31d8b8){_0x1354b3['sendStatus'](0x194);}return _0x31d8b8;};}function handleError(_0x27f648,_0x296240){_0x296240=_0x296240||0x1f4;return function(_0x5eb4ea){logger[_0x1bdb('0x2a')](_0x5eb4ea['stack']);if(_0x5eb4ea['name']){delete _0x5eb4ea['name'];}_0x27f648['status'](_0x296240)['send'](_0x5eb4ea);};}exports[_0x1bdb('0x2b')]=function(_0x355b3b,_0x4e9b6f){var _0x5bbcec={},_0x4ce64f={},_0x110883={'count':0x0,'rows':[]};var _0x52a5c3=_[_0x1bdb('0x2c')](db[_0x1bdb('0x2d')]['rawAttributes'],function(_0x4798e9){return{'name':_0x4798e9['fieldName'],'type':_0x4798e9[_0x1bdb('0x2e')][_0x1bdb('0x2f')]};});_0x4ce64f['model']=_[_0x1bdb('0x2c')](_0x52a5c3,_0x1bdb('0x30'));_0x4ce64f[_0x1bdb('0x31')]=_['keys'](_0x355b3b[_0x1bdb('0x31')]);_0x4ce64f[_0x1bdb('0x32')]=_[_0x1bdb('0x33')](_0x4ce64f[_0x1bdb('0x34')],_0x4ce64f['query']);_0x5bbcec[_0x1bdb('0x35')]=_[_0x1bdb('0x33')](_0x4ce64f[_0x1bdb('0x34')],qs[_0x1bdb('0x36')](_0x355b3b[_0x1bdb('0x31')][_0x1bdb('0x36')]));_0x5bbcec[_0x1bdb('0x35')]=_0x5bbcec['attributes'][_0x1bdb('0x37')]?_0x5bbcec[_0x1bdb('0x35')]:_0x4ce64f[_0x1bdb('0x34')];if(!_0x355b3b[_0x1bdb('0x31')]['hasOwnProperty'](_0x1bdb('0x38'))){_0x5bbcec[_0x1bdb('0x21')]=qs['limit'](_0x355b3b[_0x1bdb('0x31')][_0x1bdb('0x21')]);_0x5bbcec[_0x1bdb('0x20')]=qs[_0x1bdb('0x20')](_0x355b3b['query'][_0x1bdb('0x20')]);}_0x5bbcec[_0x1bdb('0x39')]=qs[_0x1bdb('0x3a')](_0x355b3b[_0x1bdb('0x31')][_0x1bdb('0x3a')]);_0x5bbcec['where']=qs[_0x1bdb('0x32')](_[_0x1bdb('0x3b')](_0x355b3b[_0x1bdb('0x31')],_0x4ce64f[_0x1bdb('0x32')]),_0x52a5c3);if(_0x355b3b['query'][_0x1bdb('0x3c')]){_0x5bbcec[_0x1bdb('0x3d')]=_[_0x1bdb('0x3e')](_0x5bbcec[_0x1bdb('0x3d')],{'$or':_['map'](_0x52a5c3,function(_0x575614){if(_0x575614[_0x1bdb('0x2e')]!==_0x1bdb('0x3f')){var _0x1714d2={};_0x1714d2[_0x575614[_0x1bdb('0x30')]]={'$like':'%'+_0x355b3b['query'][_0x1bdb('0x3c')]+'%'};return _0x1714d2;}})});}_0x5bbcec=_['merge']({},_0x5bbcec,_0x355b3b['options']);var _0x5c59fd={'where':_0x5bbcec['where']};return db['OpenchannelApplication'][_0x1bdb('0x22')](_0x5c59fd)[_0x1bdb('0x29')](function(_0x22a06f){_0x110883[_0x1bdb('0x22')]=_0x22a06f;if(_0x355b3b['query'][_0x1bdb('0x40')]){_0x5bbcec[_0x1bdb('0x41')]=[{'all':!![]}];}return db[_0x1bdb('0x2d')][_0x1bdb('0x42')](_0x5bbcec);})[_0x1bdb('0x29')](function(_0x16bb61){_0x110883[_0x1bdb('0x43')]=_0x16bb61;return _0x110883;})[_0x1bdb('0x29')](respondWithFilteredResult(_0x4e9b6f,_0x5bbcec))[_0x1bdb('0x44')](handleError(_0x4e9b6f,null));};exports[_0x1bdb('0x45')]=function(_0x11d661,_0x489e89){var _0x125ed3={'raw':!![],'where':{'id':_0x11d661['params']['id']}},_0x2c525a={};_0x2c525a[_0x1bdb('0x34')]=_[_0x1bdb('0x46')](db['OpenchannelApplication'][_0x1bdb('0x47')]);_0x2c525a[_0x1bdb('0x31')]=_['keys'](_0x11d661[_0x1bdb('0x31')]);_0x2c525a[_0x1bdb('0x32')]=_[_0x1bdb('0x33')](_0x2c525a['model'],_0x2c525a['query']);_0x125ed3[_0x1bdb('0x35')]=_[_0x1bdb('0x33')](_0x2c525a[_0x1bdb('0x34')],qs['fields'](_0x11d661[_0x1bdb('0x31')][_0x1bdb('0x36')]));_0x125ed3[_0x1bdb('0x35')]=_0x125ed3[_0x1bdb('0x35')][_0x1bdb('0x37')]?_0x125ed3[_0x1bdb('0x35')]:_0x2c525a[_0x1bdb('0x34')];if(_0x11d661[_0x1bdb('0x31')][_0x1bdb('0x40')]){_0x125ed3[_0x1bdb('0x41')]=[{'all':!![]}];}_0x125ed3=_[_0x1bdb('0x3e')]({},_0x125ed3,_0x11d661[_0x1bdb('0x48')]);return db[_0x1bdb('0x2d')][_0x1bdb('0x49')](_0x125ed3)['then'](handleEntityNotFound(_0x489e89,null))[_0x1bdb('0x29')](respondWithResult(_0x489e89,null))[_0x1bdb('0x44')](handleError(_0x489e89,null));};exports[_0x1bdb('0x4a')]=function(_0x1673d6,_0x334bed){return db[_0x1bdb('0x2d')][_0x1bdb('0x4a')](_0x1673d6[_0x1bdb('0x4b')],{})[_0x1bdb('0x29')](respondWithResult(_0x334bed,0xc9))['catch'](handleError(_0x334bed,null));};exports[_0x1bdb('0x27')]=function(_0x155259,_0x2566f8){if(_0x155259[_0x1bdb('0x4b')]['id']){delete _0x155259[_0x1bdb('0x4b')]['id'];}return db['OpenchannelApplication'][_0x1bdb('0x49')]({'where':{'id':_0x155259[_0x1bdb('0x4c')]['id']}})[_0x1bdb('0x29')](handleEntityNotFound(_0x2566f8,null))[_0x1bdb('0x29')](saveUpdates(_0x155259[_0x1bdb('0x4b')],null))[_0x1bdb('0x29')](respondWithResult(_0x2566f8,null))[_0x1bdb('0x44')](handleError(_0x2566f8,null));};exports[_0x1bdb('0x28')]=function(_0x4c2244,_0x3d7ad8){return db[_0x1bdb('0x2d')]['find']({'where':{'id':_0x4c2244[_0x1bdb('0x4c')]['id']}})[_0x1bdb('0x29')](handleEntityNotFound(_0x3d7ad8,null))[_0x1bdb('0x29')](removeEntity(_0x3d7ad8,null))[_0x1bdb('0x44')](handleError(_0x3d7ad8,null));};
\ No newline at end of file
+var _0xc5c4=['count','set','Content-Range','apply','reject','save','destroy','then','end','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','merge','VIRTUAL','filter','OpenchannelApplication','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit'];(function(_0xbe19dc,_0x59eaa5){var _0x13d4d0=function(_0x1a2f9b){while(--_0x1a2f9b){_0xbe19dc['push'](_0xbe19dc['shift']());}};_0x13d4d0(++_0x59eaa5);}(_0xc5c4,0x75));var _0x4c5c=function(_0x110e5b,_0x4894cb){_0x110e5b=_0x110e5b-0x0;var _0x5e9d66=_0xc5c4[_0x110e5b];return _0x5e9d66;};'use strict';var emlformat=require(_0x4c5c('0x0'));var rimraf=require(_0x4c5c('0x1'));var zipdir=require(_0x4c5c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4c5c('0x3'));var moment=require('moment');var BPromise=require(_0x4c5c('0x4'));var Mustache=require(_0x4c5c('0x5'));var util=require(_0x4c5c('0x6'));var path=require('path');var sox=require(_0x4c5c('0x7'));var csv=require(_0x4c5c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c5c('0x9'));var _=require(_0x4c5c('0xa'));var squel=require(_0x4c5c('0xb'));var crypto=require('crypto');var jsforce=require(_0x4c5c('0xc'));var deskjs=require(_0x4c5c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4c5c('0xe'));var Papa=require(_0x4c5c('0xf'));var Redis=require('ioredis');var authService=require(_0x4c5c('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4c5c('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4c5c('0x12'))(_0x4c5c('0x13'));var utils=require(_0x4c5c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x4c5c('0x15'));var db=require(_0x4c5c('0x16'))['db'];function respondWithStatusCode(_0x20c25b,_0x41ceae){_0x41ceae=_0x41ceae||0xcc;return function(_0x2c149f){if(_0x2c149f){return _0x20c25b[_0x4c5c('0x17')](_0x41ceae);}return _0x20c25b[_0x4c5c('0x18')](_0x41ceae)['end']();};}function respondWithResult(_0x1936d3,_0x6956c){_0x6956c=_0x6956c||0xc8;return function(_0x58abb5){if(_0x58abb5){return _0x1936d3[_0x4c5c('0x18')](_0x6956c)[_0x4c5c('0x19')](_0x58abb5);}};}function respondWithFilteredResult(_0x59dc13,_0x2a4d7b){return function(_0x4a1bde){if(_0x4a1bde){var _0x126775=typeof _0x2a4d7b[_0x4c5c('0x1a')]===_0x4c5c('0x1b')&&typeof _0x2a4d7b[_0x4c5c('0x1c')]===_0x4c5c('0x1b');var _0x478746=_0x4a1bde['count'];var _0x178d64=_0x126775?0x0:_0x2a4d7b[_0x4c5c('0x1a')];var _0x35d081=_0x126775?_0x4a1bde[_0x4c5c('0x1d')]:_0x2a4d7b[_0x4c5c('0x1a')]+_0x2a4d7b[_0x4c5c('0x1c')];var _0x3cceee;if(_0x35d081>=_0x478746){_0x35d081=_0x478746;_0x3cceee=0xc8;}else{_0x3cceee=0xce;}_0x59dc13['status'](_0x3cceee);return _0x59dc13[_0x4c5c('0x1e')](_0x4c5c('0x1f'),_0x178d64+'-'+_0x35d081+'/'+_0x478746)['json'](_0x4a1bde);}return null;};}function patchUpdates(_0x1086df){return function(_0x32e876){try{jsonpatch[_0x4c5c('0x20')](_0x32e876,_0x1086df,!![]);}catch(_0x30130a){return BPromise[_0x4c5c('0x21')](_0x30130a);}return _0x32e876[_0x4c5c('0x22')]();};}function saveUpdates(_0x227d63,_0x3820ca){return function(_0xeaf4ce){if(_0xeaf4ce){return _0xeaf4ce['update'](_0x227d63)['then'](function(_0x35b538){return _0x35b538;});}return null;};}function removeEntity(_0x5b2875,_0x1ea36d){return function(_0x5b8d11){if(_0x5b8d11){return _0x5b8d11[_0x4c5c('0x23')]()[_0x4c5c('0x24')](function(){_0x5b2875[_0x4c5c('0x18')](0xcc)[_0x4c5c('0x25')]();});}};}function handleEntityNotFound(_0x58359d,_0x1919eb){return function(_0x4d3263){if(!_0x4d3263){_0x58359d[_0x4c5c('0x17')](0x194);}return _0x4d3263;};}function handleError(_0x16a90b,_0x2c1ef6){_0x2c1ef6=_0x2c1ef6||0x1f4;return function(_0x592941){logger[_0x4c5c('0x26')](_0x592941['stack']);if(_0x592941[_0x4c5c('0x27')]){delete _0x592941['name'];}_0x16a90b[_0x4c5c('0x18')](_0x2c1ef6)[_0x4c5c('0x28')](_0x592941);};}exports[_0x4c5c('0x29')]=function(_0x42dbd4,_0x535a3f){var _0x2c954f={},_0x184d22={},_0x3a7773={'count':0x0,'rows':[]};var _0xb4e3d3=_['map'](db['OpenchannelApplication'][_0x4c5c('0x2a')],function(_0x2c688e){return{'name':_0x2c688e[_0x4c5c('0x2b')],'type':_0x2c688e[_0x4c5c('0x2c')][_0x4c5c('0x2d')]};});_0x184d22[_0x4c5c('0x2e')]=_[_0x4c5c('0x2f')](_0xb4e3d3,_0x4c5c('0x27'));_0x184d22[_0x4c5c('0x30')]=_[_0x4c5c('0x31')](_0x42dbd4['query']);_0x184d22[_0x4c5c('0x32')]=_[_0x4c5c('0x33')](_0x184d22[_0x4c5c('0x2e')],_0x184d22[_0x4c5c('0x30')]);_0x2c954f[_0x4c5c('0x34')]=_[_0x4c5c('0x33')](_0x184d22['model'],qs[_0x4c5c('0x35')](_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x35')]));_0x2c954f[_0x4c5c('0x34')]=_0x2c954f[_0x4c5c('0x34')]['length']?_0x2c954f[_0x4c5c('0x34')]:_0x184d22['model'];if(!_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x36')](_0x4c5c('0x37'))){_0x2c954f[_0x4c5c('0x1c')]=qs[_0x4c5c('0x1c')](_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x1c')]);_0x2c954f[_0x4c5c('0x1a')]=qs[_0x4c5c('0x1a')](_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x1a')]);}_0x2c954f[_0x4c5c('0x38')]=qs['sort'](_0x42dbd4[_0x4c5c('0x30')]['sort']);_0x2c954f[_0x4c5c('0x39')]=qs[_0x4c5c('0x32')](_['pick'](_0x42dbd4[_0x4c5c('0x30')],_0x184d22[_0x4c5c('0x32')]),_0xb4e3d3);if(_0x42dbd4[_0x4c5c('0x30')]['filter']){_0x2c954f[_0x4c5c('0x39')]=_[_0x4c5c('0x3a')](_0x2c954f[_0x4c5c('0x39')],{'$or':_['map'](_0xb4e3d3,function(_0x4ea2bc){if(_0x4ea2bc[_0x4c5c('0x2c')]!==_0x4c5c('0x3b')){var _0x268d3a={};_0x268d3a[_0x4ea2bc[_0x4c5c('0x27')]]={'$like':'%'+_0x42dbd4['query'][_0x4c5c('0x3c')]+'%'};return _0x268d3a;}})});}_0x2c954f=_['merge']({},_0x2c954f,_0x42dbd4['options']);var _0x3b549f={'where':_0x2c954f[_0x4c5c('0x39')]};return db[_0x4c5c('0x3d')]['count'](_0x3b549f)[_0x4c5c('0x24')](function(_0x101014){_0x3a7773[_0x4c5c('0x1d')]=_0x101014;if(_0x42dbd4['query'][_0x4c5c('0x3e')]){_0x2c954f[_0x4c5c('0x3f')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0x4c5c('0x40')](_0x2c954f);})[_0x4c5c('0x24')](function(_0x466e73){_0x3a7773[_0x4c5c('0x41')]=_0x466e73;return _0x3a7773;})[_0x4c5c('0x24')](respondWithFilteredResult(_0x535a3f,_0x2c954f))[_0x4c5c('0x42')](handleError(_0x535a3f,null));};exports[_0x4c5c('0x43')]=function(_0x5c97c6,_0x47bf21){var _0x56c435={'raw':!![],'where':{'id':_0x5c97c6[_0x4c5c('0x44')]['id']}},_0x494d16={};_0x494d16[_0x4c5c('0x2e')]=_[_0x4c5c('0x31')](db[_0x4c5c('0x3d')][_0x4c5c('0x2a')]);_0x494d16[_0x4c5c('0x30')]=_[_0x4c5c('0x31')](_0x5c97c6[_0x4c5c('0x30')]);_0x494d16[_0x4c5c('0x32')]=_['intersection'](_0x494d16['model'],_0x494d16[_0x4c5c('0x30')]);_0x56c435['attributes']=_['intersection'](_0x494d16[_0x4c5c('0x2e')],qs[_0x4c5c('0x35')](_0x5c97c6[_0x4c5c('0x30')][_0x4c5c('0x35')]));_0x56c435['attributes']=_0x56c435['attributes']['length']?_0x56c435[_0x4c5c('0x34')]:_0x494d16[_0x4c5c('0x2e')];if(_0x5c97c6[_0x4c5c('0x30')][_0x4c5c('0x3e')]){_0x56c435[_0x4c5c('0x3f')]=[{'all':!![]}];}_0x56c435=_['merge']({},_0x56c435,_0x5c97c6[_0x4c5c('0x45')]);return db[_0x4c5c('0x3d')][_0x4c5c('0x46')](_0x56c435)[_0x4c5c('0x24')](handleEntityNotFound(_0x47bf21,null))[_0x4c5c('0x24')](respondWithResult(_0x47bf21,null))[_0x4c5c('0x42')](handleError(_0x47bf21,null));};exports[_0x4c5c('0x47')]=function(_0x460289,_0x131fc5){return db[_0x4c5c('0x3d')][_0x4c5c('0x47')](_0x460289['body'],{})['then'](respondWithResult(_0x131fc5,0xc9))['catch'](handleError(_0x131fc5,null));};exports['update']=function(_0x565260,_0x5a4a48){if(_0x565260[_0x4c5c('0x48')]['id']){delete _0x565260['body']['id'];}return db[_0x4c5c('0x3d')][_0x4c5c('0x46')]({'where':{'id':_0x565260[_0x4c5c('0x44')]['id']}})[_0x4c5c('0x24')](handleEntityNotFound(_0x5a4a48,null))[_0x4c5c('0x24')](saveUpdates(_0x565260['body'],null))[_0x4c5c('0x24')](respondWithResult(_0x5a4a48,null))[_0x4c5c('0x42')](handleError(_0x5a4a48,null));};exports['destroy']=function(_0x30d9c4,_0x282335){return db[_0x4c5c('0x3d')]['find']({'where':{'id':_0x30d9c4[_0x4c5c('0x44')]['id']}})[_0x4c5c('0x24')](handleEntityNotFound(_0x282335,null))[_0x4c5c('0x24')](removeEntity(_0x282335,null))[_0x4c5c('0x42')](handleError(_0x282335,null));};
\ No newline at end of file
index 76bad7c..08209ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2019=['moment','bluebird','path','rimraf','../../config/environment','exports','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0xdc5605,_0x5718b2){var _0x1c56b2=function(_0x38525a){while(--_0x38525a){_0xdc5605['push'](_0xdc5605['shift']());}};_0x1c56b2(++_0x5718b2);}(_0x2019,0xc0));var _0x9201=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0x2019[_0x307d86];return _0x361745;};'use strict';var _=require(_0x9201('0x0'));var util=require(_0x9201('0x1'));var logger=require(_0x9201('0x2'))(_0x9201('0x3'));var moment=require(_0x9201('0x4'));var BPromise=require(_0x9201('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9201('0x6'));var rimraf=require(_0x9201('0x7'));var config=require(_0x9201('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0x9201('0x9')]=function(_0x21247f,_0x46f622){return _0x21247f['define'](_0x9201('0xa'),attributes,{'tableName':_0x9201('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9201('0xc'),'collate':_0x9201('0xd')});};
\ No newline at end of file
+var _0x0a69=['request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird'];(function(_0x5bac50,_0x540d00){var _0x28afd5=function(_0x25b25d){while(--_0x25b25d){_0x5bac50['push'](_0x5bac50['shift']());}};_0x28afd5(++_0x540d00);}(_0x0a69,0xb1));var _0x90a6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0a69[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x90a6('0x0'));var util=require(_0x90a6('0x1'));var logger=require(_0x90a6('0x2'))('api');var moment=require(_0x90a6('0x3'));var BPromise=require(_0x90a6('0x4'));var rp=require(_0x90a6('0x5'));var fs=require('fs');var path=require(_0x90a6('0x6'));var rimraf=require(_0x90a6('0x7'));var config=require(_0x90a6('0x8'));var attributes=require(_0x90a6('0x9'));module[_0x90a6('0xa')]=function(_0x5eae87,_0x2ab4c6){return _0x5eae87[_0x90a6('0xb')]('OpenchannelApplication',attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x90a6('0xc')});};
\ No newline at end of file
index 981daa0..a1e48b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62b1=['rpc','jayson/promise','client','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelApplication','update','body','options','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1e5de7,_0x22b37d){var _0x3ce9ca=function(_0x3bdbdb){while(--_0x3bdbdb){_0x1e5de7['push'](_0x1e5de7['shift']());}};_0x3ce9ca(++_0x22b37d);}(_0x62b1,0x1f1));var _0x162b=function(_0x57cc58,_0x56b014){_0x57cc58=_0x57cc58-0x0;var _0x252f0a=_0x62b1[_0x57cc58];return _0x252f0a;};'use strict';var _=require(_0x162b('0x0'));var util=require(_0x162b('0x1'));var moment=require('moment');var BPromise=require(_0x162b('0x2'));var rs=require(_0x162b('0x3'));var fs=require('fs');var Redis=require(_0x162b('0x4'));var db=require(_0x162b('0x5'))['db'];var utils=require(_0x162b('0x6'));var logger=require('../../config/logger')(_0x162b('0x7'));var config=require('../../config/environment');var jayson=require(_0x162b('0x8'));var client=jayson[_0x162b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x451002,_0x539c5c,_0x43a94f){return new BPromise(function(_0x2c66a9,_0x52379f){return client[_0x162b('0xa')](_0x451002,_0x43a94f)[_0x162b('0xb')](function(_0x5522d3){logger[_0x162b('0xc')](_0x162b('0xd'),_0x539c5c,_0x162b('0xe'));logger[_0x162b('0xf')](_0x162b('0x10'),_0x539c5c,_0x162b('0xe'),JSON[_0x162b('0x11')](_0x5522d3));if(_0x5522d3['error']){if(_0x5522d3[_0x162b('0x12')][_0x162b('0x13')]===0x1f4){logger[_0x162b('0x12')](_0x162b('0xd'),_0x539c5c,_0x5522d3[_0x162b('0x12')]['message']);return _0x52379f(_0x5522d3[_0x162b('0x12')][_0x162b('0x14')]);}logger[_0x162b('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x539c5c,_0x5522d3[_0x162b('0x12')][_0x162b('0x14')]);return _0x2c66a9(_0x5522d3[_0x162b('0x12')][_0x162b('0x14')]);}else{logger[_0x162b('0xc')](_0x162b('0xd'),_0x539c5c,_0x162b('0xe'));_0x2c66a9(_0x5522d3[_0x162b('0x15')][_0x162b('0x14')]);}})[_0x162b('0x16')](function(_0x3d14a6){logger[_0x162b('0x12')](_0x162b('0xd'),_0x539c5c,_0x3d14a6);_0x52379f(_0x3d14a6);});});}exports[_0x162b('0x17')]=function(_0x25f2e5){var _0x844197=this;return new Promise(function(_0x54dbe8,_0x1adbe5){return db['OpenchannelApplication'][_0x162b('0x18')](_0x25f2e5[_0x162b('0x19')],{'raw':_0x25f2e5[_0x162b('0x1a')]?_0x25f2e5[_0x162b('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25f2e5['options']?_0x25f2e5[_0x162b('0x1a')]['where']||null:null,'attributes':_0x25f2e5[_0x162b('0x1a')]?_0x25f2e5[_0x162b('0x1a')]['attributes']||null:null,'limit':_0x25f2e5[_0x162b('0x1a')]?_0x25f2e5['options'][_0x162b('0x1b')]||null:null})[_0x162b('0xb')](function(_0x4ce8da){logger[_0x162b('0xc')]('UpdateOpenchannelApplication',_0x25f2e5);logger[_0x162b('0xf')](_0x162b('0x17'),_0x25f2e5,JSON['stringify'](_0x4ce8da));_0x54dbe8(_0x4ce8da);})[_0x162b('0x16')](function(_0x1535a8){logger[_0x162b('0x12')](_0x162b('0x17'),_0x1535a8[_0x162b('0x14')],_0x25f2e5);_0x1adbe5(_0x844197[_0x162b('0x12')](0x1f4,_0x1535a8[_0x162b('0x14')]));});});};
\ No newline at end of file
+var _0x26e5=['stringify','error','message','request\x20sent','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','body','options','where','attributes','info','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','OpenchannelApplication,\x20%s,\x20%s','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s'];(function(_0x486f62,_0x46ef35){var _0x493e5d=function(_0x5ead31){while(--_0x5ead31){_0x486f62['push'](_0x486f62['shift']());}};_0x493e5d(++_0x46ef35);}(_0x26e5,0x139));var _0x526e=function(_0x437545,_0x4ab48b){_0x437545=_0x437545-0x0;var _0x408060=_0x26e5[_0x437545];return _0x408060;};'use strict';var _=require(_0x526e('0x0'));var util=require('util');var moment=require(_0x526e('0x1'));var BPromise=require(_0x526e('0x2'));var rs=require(_0x526e('0x3'));var fs=require('fs');var Redis=require(_0x526e('0x4'));var db=require(_0x526e('0x5'))['db'];var utils=require(_0x526e('0x6'));var logger=require(_0x526e('0x7'))('rpc');var config=require(_0x526e('0x8'));var jayson=require(_0x526e('0x9'));var client=jayson[_0x526e('0xa')][_0x526e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40238d,_0x1039b7,_0x57dd13){return new BPromise(function(_0x3dd326,_0x5c5b73){return client[_0x526e('0xc')](_0x40238d,_0x57dd13)[_0x526e('0xd')](function(_0x2ba965){logger['info'](_0x526e('0xe'),_0x1039b7,'request\x20sent');logger[_0x526e('0xf')](_0x526e('0x10'),_0x1039b7,'request\x20sent',JSON[_0x526e('0x11')](_0x2ba965));if(_0x2ba965['error']){if(_0x2ba965[_0x526e('0x12')]['code']===0x1f4){logger[_0x526e('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x1039b7,_0x2ba965[_0x526e('0x12')][_0x526e('0x13')]);return _0x5c5b73(_0x2ba965[_0x526e('0x12')][_0x526e('0x13')]);}logger['error'](_0x526e('0xe'),_0x1039b7,_0x2ba965['error']['message']);return _0x3dd326(_0x2ba965[_0x526e('0x12')][_0x526e('0x13')]);}else{logger['info'](_0x526e('0xe'),_0x1039b7,_0x526e('0x14'));_0x3dd326(_0x2ba965[_0x526e('0x15')]['message']);}})[_0x526e('0x16')](function(_0x506d61){logger[_0x526e('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x1039b7,_0x506d61);_0x5c5b73(_0x506d61);});});}exports[_0x526e('0x17')]=function(_0x56b934){var _0x314f87=this;return new Promise(function(_0x543fb7,_0x5ed380){return db[_0x526e('0x18')]['update'](_0x56b934[_0x526e('0x19')],{'raw':_0x56b934['options']?_0x56b934[_0x526e('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56b934[_0x526e('0x1a')]?_0x56b934[_0x526e('0x1a')][_0x526e('0x1b')]||null:null,'attributes':_0x56b934['options']?_0x56b934[_0x526e('0x1a')][_0x526e('0x1c')]||null:null,'limit':_0x56b934['options']?_0x56b934[_0x526e('0x1a')]['limit']||null:null})[_0x526e('0xd')](function(_0x412b7a){logger[_0x526e('0x1d')](_0x526e('0x17'),_0x56b934);logger[_0x526e('0xf')](_0x526e('0x17'),_0x56b934,JSON['stringify'](_0x412b7a));_0x543fb7(_0x412b7a);})[_0x526e('0x16')](function(_0x3ae6c3){logger['error'](_0x526e('0x17'),_0x3ae6c3[_0x526e('0x13')],_0x56b934);_0x5ed380(_0x314f87[_0x526e('0x12')](0x1f4,_0x3ae6c3[_0x526e('0x13')]));});});};
\ No newline at end of file
index 348e65a..00e94ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4919=['../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','describe','/:id','/:id/messages','/:id/download','download','create','post','addMessage','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','delete','destroy','/:id/tags','removeTags','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x295314,_0x17b250){var _0x584b0c=function(_0x51cc84){while(--_0x51cc84){_0x295314['push'](_0x295314['shift']());}};_0x584b0c(++_0x17b250);}(_0x4919,0x18c));var _0x9491=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x4919[_0x1caf6a];return _0x1bf493;};'use strict';var multer=require(_0x9491('0x0'));var util=require(_0x9491('0x1'));var path=require(_0x9491('0x2'));var timeout=require('connect-timeout');var express=require(_0x9491('0x3'));var router=express[_0x9491('0x4')]();var fs_extra=require(_0x9491('0x5'));var auth=require(_0x9491('0x6'));var interaction=require(_0x9491('0x7'));var config=require(_0x9491('0x8'));var controller=require(_0x9491('0x9'));router[_0x9491('0xa')]('/',auth[_0x9491('0xb')](),controller['index']);router[_0x9491('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x9491('0xc')]);router[_0x9491('0xa')](_0x9491('0xd'),auth[_0x9491('0xb')](),controller['show']);router[_0x9491('0xa')](_0x9491('0xe'),auth[_0x9491('0xb')](),controller['getMessages']);router[_0x9491('0xa')](_0x9491('0xf'),auth[_0x9491('0xb')](),controller[_0x9491('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9491('0x11')]);router[_0x9491('0x12')](_0x9491('0xe'),auth[_0x9491('0xb')](),controller[_0x9491('0x13')]);router['post']('/:id/tags',auth['isAuthenticated'](),interaction[_0x9491('0x14')](_0x9491('0x15'),_0x9491('0x16')),controller[_0x9491('0x17')]);router[_0x9491('0x18')]('/:id',auth[_0x9491('0xb')](),interaction['tracked'](_0x9491('0x15'),_0x9491('0x19')),controller['update']);router[_0x9491('0x1a')](_0x9491('0xd'),auth['isAuthenticated'](),interaction[_0x9491('0x14')]('openchannel','openchannelinteraction:destroy'),controller[_0x9491('0x1b')]);router['delete'](_0x9491('0x1c'),auth[_0x9491('0xb')](),controller[_0x9491('0x1d')]);module[_0x9491('0x1e')]=router;
\ No newline at end of file
+var _0xa917=['path','connect-timeout','express','Router','../../components/interaction/service','./openchannelInteraction.controller','get','isAuthenticated','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','addTags','put','openchannel','update','delete','destroy','removeTags','exports','multer','util'];(function(_0x1b3a5c,_0x2f9d5f){var _0x2ae8cb=function(_0x549ab8){while(--_0x549ab8){_0x1b3a5c['push'](_0x1b3a5c['shift']());}};_0x2ae8cb(++_0x2f9d5f);}(_0xa917,0x148));var _0x7a91=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xa917[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x7a91('0x0'));var util=require(_0x7a91('0x1'));var path=require(_0x7a91('0x2'));var timeout=require(_0x7a91('0x3'));var express=require(_0x7a91('0x4'));var router=express[_0x7a91('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7a91('0x6'));var config=require('../../config/environment');var controller=require(_0x7a91('0x7'));router[_0x7a91('0x8')]('/',auth[_0x7a91('0x9')](),controller['index']);router[_0x7a91('0x8')](_0x7a91('0xa'),auth[_0x7a91('0x9')](),controller['describe']);router[_0x7a91('0x8')](_0x7a91('0xb'),auth[_0x7a91('0x9')](),controller[_0x7a91('0xc')]);router['get'](_0x7a91('0xd'),auth[_0x7a91('0x9')](),controller[_0x7a91('0xe')]);router[_0x7a91('0x8')](_0x7a91('0xf'),auth['isAuthenticated'](),controller[_0x7a91('0x10')]);router['post']('/',auth[_0x7a91('0x9')](),controller[_0x7a91('0x11')]);router[_0x7a91('0x12')]('/:id/messages',auth[_0x7a91('0x9')](),controller[_0x7a91('0x13')]);router[_0x7a91('0x12')](_0x7a91('0x14'),auth[_0x7a91('0x9')](),interaction[_0x7a91('0x15')]('openchannel','openchannelinteraction:addtags'),controller[_0x7a91('0x16')]);router[_0x7a91('0x17')]('/:id',auth[_0x7a91('0x9')](),interaction[_0x7a91('0x15')](_0x7a91('0x18'),'openchannelinteraction:update'),controller[_0x7a91('0x19')]);router[_0x7a91('0x1a')](_0x7a91('0xb'),auth[_0x7a91('0x9')](),interaction[_0x7a91('0x15')]('openchannel','openchannelinteraction:destroy'),controller[_0x7a91('0x1b')]);router[_0x7a91('0x1a')]('/:id/tags',auth[_0x7a91('0x9')](),controller[_0x7a91('0x1c')]);module[_0x7a91('0x1d')]=router;
\ No newline at end of file
index b71460f..96aac9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a96=['DATE','STRING','BOOLEAN','sequelize','exports'];(function(_0x4265a0,_0x1c6028){var _0x39cb95=function(_0x2ea65d){while(--_0x2ea65d){_0x4265a0['push'](_0x4265a0['shift']());}};_0x39cb95(++_0x1c6028);}(_0x5a96,0xbc));var _0x65a9=function(_0x44b10b,_0x829d97){_0x44b10b=_0x44b10b-0x0;var _0x4c8f0d=_0x5a96[_0x44b10b];return _0x4c8f0d;};'use strict';var Sequelize=require(_0x65a9('0x0'));module[_0x65a9('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x65a9('0x2')]},'disposition':{'type':Sequelize[_0x65a9('0x3')]},'secondDisposition':{'type':Sequelize[_0x65a9('0x3')]},'thirdDisposition':{'type':Sequelize[_0x65a9('0x3')]},'note':{'type':Sequelize[_0x65a9('0x3')]},'read1stAt':{'type':Sequelize[_0x65a9('0x2')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x65a9('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x65a9('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x65a9('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x29d4=['STRING','ENUM','out','sequelize','BOOLEAN','DATE'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x29d4,0x1a1));var _0x429d=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x29d4[_0x5c351c];return _0x26f3b3;};'use strict';var Sequelize=require(_0x429d('0x0'));module['exports']={'closed':{'type':Sequelize[_0x429d('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x429d('0x2')]},'disposition':{'type':Sequelize[_0x429d('0x3')]},'secondDisposition':{'type':Sequelize[_0x429d('0x3')]},'thirdDisposition':{'type':Sequelize[_0x429d('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x429d('0x2')]},'threadId':{'type':Sequelize[_0x429d('0x3')]},'externalUrl':{'type':Sequelize[_0x429d('0x3')]},'lastMsgAt':{'type':Sequelize[_0x429d('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x429d('0x4')]('in',_0x429d('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x429d('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x429d('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 8a998d0..b92fce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x899f=['c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','body','some','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','filter','replace','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','all','rows','show','params','rawAttributes','includeAll','include','create','update','describe','addMessage','OpenchannelMessage','ids','getMessages','findOne','pick','OpenchannelInteractionId','$gte','options','addTags','setTags','omit','Tag','findAll','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','fullname','firstName','Attachment','Messages','createdAt','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','N.A.','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','threadId','Public','Private','basename','existsSync','pipe','createWriteStream','direction','out','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','log','err','unlinkSync','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','map','Tags','TagIds','split','forEach','push','catch','index','OpenchannelInteraction','fieldName','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','select','field','color','from','tools_tags','u.id','u.fullname','users','u.id\x20=\x20ui.UserId','openchannel_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue'];(function(_0x155d7b,_0x77d5c9){var _0xcf6f90=function(_0x5ee2c0){while(--_0x5ee2c0){_0x155d7b['push'](_0x155d7b['shift']());}};_0xcf6f90(++_0x77d5c9);}(_0x899f,0x8b));var _0xf899=function(_0x34b821,_0x504e55){_0x34b821=_0x34b821-0x0;var _0x5e00a0=_0x899f[_0x34b821];return _0x5e00a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf899('0x0'));var zipdir=require(_0xf899('0x1'));var jsonpatch=require(_0xf899('0x2'));var rp=require('request-promise');var moment=require(_0xf899('0x3'));var BPromise=require(_0xf899('0x4'));var Mustache=require(_0xf899('0x5'));var util=require(_0xf899('0x6'));var path=require('path');var sox=require(_0xf899('0x7'));var csv=require(_0xf899('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf899('0x9'));var _=require(_0xf899('0xa'));var squel=require('squel');var crypto=require(_0xf899('0xb'));var jsforce=require(_0xf899('0xc'));var deskjs=require(_0xf899('0xd'));var toCsv=require(_0xf899('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf899('0xe'));var authService=require(_0xf899('0xf'));var qs=require(_0xf899('0x10'));var as=require(_0xf899('0x11'));var pdf=require(_0xf899('0x12'));var hardwareService=require(_0xf899('0x13'));var logger=require(_0xf899('0x14'))(_0xf899('0x15'));var utils=require(_0xf899('0x16'));var config=require(_0xf899('0x17'));var licenseUtil=require(_0xf899('0x18'));var db=require(_0xf899('0x19'))['db'];config[_0xf899('0x1a')]=_[_0xf899('0x1b')](config[_0xf899('0x1a')],{'host':_0xf899('0x1c'),'port':0x18eb});var socket=require(_0xf899('0x1d'))(new Redis(config['redis']));require(_0xf899('0x1e'))['register'](socket);function respondWithStatusCode(_0xa534fc,_0x570c66){_0x570c66=_0x570c66||0xcc;return function(_0x5abf13){if(_0x5abf13){return _0xa534fc[_0xf899('0x1f')](_0x570c66);}return _0xa534fc[_0xf899('0x20')](_0x570c66)[_0xf899('0x21')]();};}function respondWithResult(_0x1e1f00,_0x4e0a03){_0x4e0a03=_0x4e0a03||0xc8;return function(_0x31a362){if(_0x31a362){return _0x1e1f00[_0xf899('0x20')](_0x4e0a03)[_0xf899('0x22')](_0x31a362);}};}function respondWithFilteredResult(_0x26e938,_0x14dfd0){return function(_0xaea0f1){if(_0xaea0f1){var _0x2d906e=typeof _0x14dfd0['offset']===_0xf899('0x23')&&typeof _0x14dfd0[_0xf899('0x24')]===_0xf899('0x23');var _0x610b07=_0xaea0f1[_0xf899('0x25')];var _0x423c8f=_0x2d906e?0x0:_0x14dfd0['offset'];var _0x50c305=_0x2d906e?_0xaea0f1[_0xf899('0x25')]:_0x14dfd0['offset']+_0x14dfd0[_0xf899('0x24')];var _0x580b06;if(_0x50c305>=_0x610b07){_0x50c305=_0x610b07;_0x580b06=0xc8;}else{_0x580b06=0xce;}_0x26e938[_0xf899('0x20')](_0x580b06);return _0x26e938[_0xf899('0x26')](_0xf899('0x27'),_0x423c8f+'-'+_0x50c305+'/'+_0x610b07)[_0xf899('0x22')](_0xaea0f1);}return null;};}function patchUpdates(_0x374c11){return function(_0x1159ba){try{jsonpatch[_0xf899('0x28')](_0x1159ba,_0x374c11,!![]);}catch(_0x49b150){return BPromise[_0xf899('0x29')](_0x49b150);}return _0x1159ba[_0xf899('0x2a')]();};}function saveUpdates(_0x1c86d8,_0xd76e58){return function(_0x2decd7){if(_0x2decd7){return _0x2decd7['update'](_0x1c86d8)[_0xf899('0x2b')](function(_0x5f0093){return _0x5f0093;});}return null;};}function removeEntity(_0x5057c2,_0x32b023){return function(_0x3cdd9b){if(_0x3cdd9b){return _0x3cdd9b[_0xf899('0x2c')]()[_0xf899('0x2b')](function(){_0x5057c2['status'](0xcc)[_0xf899('0x21')]();});}};}function handleEntityNotFound(_0x105f27,_0x579bb3){return function(_0x24d236){if(!_0x24d236){_0x105f27[_0xf899('0x1f')](0x194);}return _0x24d236;};}function handleError(_0xdaf560,_0x27284b){_0x27284b=_0x27284b||0x1f4;return function(_0x4f1c9f){logger[_0xf899('0x2d')](_0x4f1c9f[_0xf899('0x2e')]);if(_0x4f1c9f[_0xf899('0x2f')]){delete _0x4f1c9f['name'];}_0xdaf560[_0xf899('0x20')](_0x27284b)['send'](_0x4f1c9f);};}function getInteractionUsers(_0x3e25b0,_0x4cf868){return new BPromise(function(_0x2813f5,_0xb6126){try{if(_0x4cf868[_0x3e25b0['id']]){_0x3e25b0['Users']=_[_0xf899('0x30')](_0x4cf868[_0x3e25b0['id']],function(_0x190532){return{'id':_0x190532['id'],'fullname':_0x190532['fullname']};});}}catch(_0x2f5cda){_0xb6126(_0x2f5cda);}_0x2813f5(_0x3e25b0);});}function getInteractionTags(_0x232030,_0x30e1fa){return new BPromise(function(_0xcc66a1,_0x3b644c){try{if(_0x232030['TagIds']){_0x232030[_0xf899('0x31')]=[];_0x232030[_0xf899('0x32')][_0xf899('0x33')](',')[_0xf899('0x34')](function(_0x3f63c7){_0x232030[_0xf899('0x31')][_0xf899('0x35')](_0x30e1fa[_0x3f63c7]);});}delete _0x232030[_0xf899('0x32')];}catch(_0x1a614c){_0x3b644c(_0x1a614c);}_0xcc66a1(_0x232030);});}function updateOpenchannelInteraction(_0x68b06b,_0x500564,_0x58c4a1){return new BPromise(function(_0x1bc76b,_0x36cb31){return getInteractionUsers(_0x68b06b,_0x58c4a1)[_0xf899('0x2b')](function(_0x5a9d0a){return getInteractionTags(_0x5a9d0a,_0x500564);})[_0xf899('0x2b')](function(_0x5186e1){_0x1bc76b(_0x5186e1);})[_0xf899('0x36')](function(_0x4c15e9){_0x36cb31(_0x4c15e9);});});}exports[_0xf899('0x37')]=function(_0x5112fe,_0x3e9a4b){var _0x267eb5={},_0x364bcc={},_0x121800={'count':0x0,'rows':[]};var _0x1a0626=_[_0xf899('0x30')](db[_0xf899('0x38')]['rawAttributes'],function(_0x5774cf){return{'name':_0x5774cf[_0xf899('0x39')],'type':_0x5774cf['type'][_0xf899('0x3a')]};});_0x364bcc['model']=_[_0xf899('0x30')](_0x1a0626,_0xf899('0x2f'));_0x364bcc[_0xf899('0x3b')]=_[_0xf899('0x3c')](_0x5112fe['query']);_0x364bcc[_0xf899('0x3d')]=_[_0xf899('0x3e')](_0x364bcc['model'],_0x364bcc[_0xf899('0x3b')]);_0x267eb5[_0xf899('0x3f')]=_['intersection'](_0x364bcc[_0xf899('0x40')],qs[_0xf899('0x41')](_0x5112fe['query'][_0xf899('0x41')]));_0x267eb5[_0xf899('0x3f')]=_0x267eb5['attributes'][_0xf899('0x42')]?_0x267eb5[_0xf899('0x3f')]:_0x364bcc['model'];if(!_0x5112fe['query'][_0xf899('0x43')](_0xf899('0x44'))){_0x267eb5[_0xf899('0x24')]=qs[_0xf899('0x24')](_0x5112fe[_0xf899('0x3b')][_0xf899('0x24')]);_0x267eb5[_0xf899('0x45')]=qs['offset'](_0x5112fe[_0xf899('0x3b')][_0xf899('0x45')]);}_0x267eb5[_0xf899('0x46')]=qs[_0xf899('0x47')](_0x5112fe[_0xf899('0x3b')]['sort']);_0x267eb5[_0xf899('0x48')]=qs['filters'](_['pick'](_0x5112fe['query'],_0x364bcc[_0xf899('0x3d')]),_0x1a0626);var _0x5896ae=[];var _0x29d0ef=squel[_0xf899('0x49')]()[_0xf899('0x4a')]('id')['field'](_0xf899('0x2f'))[_0xf899('0x4a')](_0xf899('0x4b'))[_0xf899('0x4c')](_0xf899('0x4d'));var _0x22e850=squel[_0xf899('0x49')]()[_0xf899('0x4a')](_0xf899('0x4e'))['field'](_0xf899('0x4f'))[_0xf899('0x4a')]('ui.OpenchannelInteractionId')[_0xf899('0x4c')]('user_has_openchannel_interactions','ui')['left_join'](_0xf899('0x50'),'u',_0xf899('0x51'));var _0x8f6e32=squel[_0xf899('0x49')]()[_0xf899('0x4c')](_0xf899('0x52'),'i')[_0xf899('0x53')](_0xf899('0x54'),'c',_0xf899('0x55'))[_0xf899('0x53')](_0xf899('0x50'),'o','o.id\x20=\x20i.UserId')['left_join'](_0xf899('0x56'),'a',_0xf899('0x57'))[_0xf899('0x53')]('openchannel_messages','me',_0xf899('0x58'))[_0xf899('0x53')]('openchannel_interaction_has_tags','it',_0xf899('0x59'))['left_join'](_0xf899('0x4d'),'t',_0xf899('0x5a'));var _0x591740=squel[_0xf899('0x5b')]();var _0x176414=[];var _0x16d5ff=squel[_0xf899('0x5b')]();var _0x24ba23;if(_0x5112fe['query'][_0xf899('0x5c')]){_0x24ba23=as['parseSearch'](_0x5112fe[_0xf899('0x3b')][_0xf899('0x5c')]);var _0x3e61a5=_0x24ba23[_0xf899('0x5d')];for(var _0x281165=0x0;_0x281165<_0x24ba23['conditions']['length'];_0x281165++){var _0x19718f=_0x24ba23[_0xf899('0x5e')][_0x281165];var _0x4040a0='i';var _0x19e52e=_[_0xf899('0x5f')](_0x1a0626,[_0xf899('0x2f'),_0x19718f[_0xf899('0x4a')]]);if(!_0x19e52e){switch(_0x19718f['field']){case _0xf899('0x60'):if(_0x19718f[_0xf899('0x61')]==0x1){_0x8f6e32[_0xf899('0x62')]('`'+_0x19718f[_0xf899('0x4a')]+_0xf899('0x63'));}else{_0x8f6e32[_0xf899('0x62')]('`'+_0x19718f['field']+_0xf899('0x64'));}break;case _0xf899('0x65'):if(_0x19718f[_0xf899('0x66')]==='$substring'){if(_0x19718f[_0xf899('0x61')][_0xf899('0x33')]('\x20')[_0xf899('0x42')]>0x1){_0x591740[_0x3e61a5](_0xf899('0x67'),qs[_0xf899('0x68')](_0x19718f[_0xf899('0x61')]),null);}else{var _0x2f0639='%'+_0x19718f[_0xf899('0x61')]+'%';_0x591740[_0x3e61a5](_0xf899('0x69'),_0x2f0639,_0x2f0639,_0x2f0639);}}else{_0x19e52e=_['find'](_0x1a0626,[_0xf899('0x2f'),_0xf899('0x6a')]);_0x19718f[_0xf899('0x4a')]=_0xf899('0x6a');_0x9db8e1=as[_0xf899('0x6b')](_0x4040a0,_0x19e52e[_0xf899('0x6c')],_0x19718f);_0x591740[_0x3e61a5](_0x9db8e1[_0xf899('0x6d')],_0x9db8e1['value']['start'],_0x9db8e1[_0xf899('0x61')][_0xf899('0x21')]);}break;case'Tag':var _0x4c7e5e=_0x19718f['value'][_0xf899('0x33')](',')['map'](function(_0x381602){return Number(_0x381602);});_0x4c7e5e[_0xf899('0x34')](function(_0x40c510){_0x16d5ff['or'](_0xf899('0x6e'),'%,'+_0x40c510+',%');});_0x176414=_[_0xf899('0x6f')](_0x176414,_0x4c7e5e);break;case _0xf899('0x70'):if(_0x19718f[_0xf899('0x66')]===_0xf899('0x71')){_0x591740[_0x3e61a5](_0xf899('0x72'),'%'+_0x19718f['value']+'%',null);}else{_0x19e52e=_['find'](_0x1a0626,['name','UserId']);_0x19718f[_0xf899('0x4a')]='UserId';_0x9db8e1=as[_0xf899('0x6b')](_0x4040a0,_0x19e52e[_0xf899('0x6c')],_0x19718f);_0x591740[_0x3e61a5](_0x9db8e1['text'],_0x9db8e1[_0xf899('0x61')][_0xf899('0x73')],_0x9db8e1[_0xf899('0x61')][_0xf899('0x21')]);}break;case _0xf899('0x74'):_0x9db8e1=as[_0xf899('0x6b')]('me',null,_0x19718f);_0x591740[_0x3e61a5](_0x9db8e1['text'],_0x9db8e1['value']['start'],_0x9db8e1[_0xf899('0x61')][_0xf899('0x21')]);break;}}else{var _0x9db8e1=as[_0xf899('0x6b')](_0x4040a0,_0x19e52e['type'],_0x19718f);_0x591740[_0x3e61a5](_0x9db8e1[_0xf899('0x6d')],_0x9db8e1['value'][_0xf899('0x73')],_0x9db8e1[_0xf899('0x61')][_0xf899('0x21')]);}}}else{var _0x14f21c=_(_0x5112fe['query'])[_0xf899('0x3c')]()[_0xf899('0x30')](function(_0x3a35c0){return _[_0xf899('0x75')](_0x1a0626,[_0xf899('0x2f'),_0x3a35c0])?_0x3a35c0:undefined;})[_0xf899('0x76')]()['value']();if(!_[_0xf899('0x77')](_0x14f21c)){_0x14f21c[_0xf899('0x34')](function(_0x37cee2){if(_0x37cee2===_0xf899('0x78')){_0x8f6e32[_0xf899('0x48')](_0xf899('0x79'),[][_0xf899('0x7a')](_0x5112fe[_0xf899('0x3b')][_0x37cee2]));}else if(_0x37cee2==='createdAt'){var _0x326d7c=JSON['parse'](_0x5112fe[_0xf899('0x3b')][_0x37cee2])['$gte'];var _0x49ade6=JSON[_0xf899('0x7b')](_0x5112fe[_0xf899('0x3b')][_0x37cee2])[_0xf899('0x7c')];_0x8f6e32['where'](_0xf899('0x7d'),_0x326d7c,_0x49ade6);}else{if(_0x5112fe[_0xf899('0x3b')][_0x37cee2]===_0xf899('0x7e')){_0x8f6e32['where']('i.'+_0x37cee2+_0xf899('0x7f'));}else{_0x8f6e32[_0xf899('0x48')]('i.'+_0x37cee2+_0xf899('0x80'),_0x5112fe[_0xf899('0x3b')][_0x37cee2]);}}});}if(_0x5112fe[_0xf899('0x3b')]['read']){if(_0x5112fe[_0xf899('0x3b')][_0xf899('0x81')]==0x1){_0x8f6e32[_0xf899('0x62')]('`unreadMessages`\x20=\x200');}else{_0x8f6e32[_0xf899('0x62')]('`unreadMessages`\x20>\x200');}}if(_0x5112fe[_0xf899('0x3b')][_0xf899('0x82')]){_0x176414=_[_0xf899('0x83')](_0x5112fe[_0xf899('0x3b')][_0xf899('0x82')])?_0x5112fe['query'][_0xf899('0x82')]:new Array(_0x5112fe[_0xf899('0x3b')]['tag']);_0x176414['forEach'](function(_0x33fff8){_0x16d5ff['or'](_0xf899('0x6e'),'%,'+_0x33fff8+',%');});}if(_0x5112fe['query'][_0xf899('0x84')]){var _0x332e94=_0x5112fe[_0xf899('0x3b')][_0xf899('0x84')]['replace']('\x5c','\x5c\x5c')[_0xf899('0x85')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x332e94)){_0x591740['or']('i.id\x20LIKE\x20?',_0x332e94+'%');}else{_0x591740['or'](_0xf899('0x86'),qs['getFullTextValue'](_0x332e94))['or'](_0xf899('0x87'),_0x332e94+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x332e94+'%');}}}_0x8f6e32['where'](_0x591740);_0x8f6e32[_0xf899('0x88')]('i.id');var _0xa1cc9c={'type':db[_0xf899('0x89')][_0xf899('0x8a')][_0xf899('0x8b')],'raw':!![]};var _0xc5af0b=_0x8f6e32['clone']();_0xc5af0b[_0xf899('0x4a')]('i.id');_0xc5af0b['field'](_0xf899('0x8c'),_0xf899('0x60'));if(_0x267eb5[_0xf899('0x46')]){_0x267eb5['order'][_0xf899('0x34')](function(_0x273707){var _0x177a4a=_0x273707[0x0]===_0xf899('0x8d')?_0x273707[0x0]:'i.'+_0x273707[0x0];_0x8f6e32[_0xf899('0x46')](_0x177a4a,_0x273707[0x1]===_0xf899('0x8e')?![]:!![]);});}if(!_[_0xf899('0x77')](_0x176414)){_0x8f6e32['having'](_0x16d5ff);_0xc5af0b[_0xf899('0x48')](_0xf899('0x8f'),_0x176414);}BPromise['resolve']()[_0xf899('0x2b')](function(){if(!_0x24ba23){if(_0x5112fe['query'][_0xf899('0x78')])return;_0xc5af0b[_0xf899('0x48')](_0xf899('0x90'));_0x8f6e32[_0xf899('0x48')](_0xf899('0x90'));return;}if(_0x5112fe['user'][_0xf899('0x91')]!==_0xf899('0x92'))return;return _0x5112fe[_0xf899('0x93')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0xf899('0x2b')](function(_0x1cec49){if(_[_0xf899('0x77')](_0x1cec49)){_0xc5af0b[_0xf899('0x48')](_0xf899('0x94'));_0x8f6e32['where'](_0xf899('0x94'));}else{_0xc5af0b[_0xf899('0x48')](_0xf899('0x79'),_[_0xf899('0x30')](_0x1cec49,'id'));_0x8f6e32[_0xf899('0x48')](_0xf899('0x79'),_[_0xf899('0x30')](_0x1cec49,'id'));}});})[_0xf899('0x2b')](function(){if(_0x5112fe[_0xf899('0x93')]['role']===_0xf899('0x92')&&!_0x24ba23&&!_0x5112fe[_0xf899('0x3b')]['OpenchannelAccountId'])return[];return db[_0xf899('0x95')][_0xf899('0x3b')](_0xc5af0b[_0xf899('0x96')](),_0xa1cc9c);})['then'](function(_0x49c37d){_0x121800[_0xf899('0x25')]=_0x49c37d[_0xf899('0x42')];if(_0x121800[_0xf899('0x25')]===0x0)return[];return db[_0xf899('0x95')][_0xf899('0x3b')](_0x29d0ef[_0xf899('0x96')](),_0xa1cc9c)['then'](function(_0x423100){_0x5896ae=_[_0xf899('0x97')](_0x423100,'id');_0xa1cc9c=_[_0xf899('0x98')](_0xa1cc9c,{'model':db[_0xf899('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5112fe[_0xf899('0x3b')]['fields']){_0x267eb5['attributes'][_0xf899('0x34')](function(_0x4deb14){_0x8f6e32[_0xf899('0x4a')]('i.'+_0x4deb14);});}else{_0x8f6e32['field'](_0xf899('0x8c'),_0xf899('0x60'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0x99'),_0xf899('0x9a'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0x9b'),_0xf899('0x9c'));_0x8f6e32[_0xf899('0x4a')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xf899('0x8d'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0x9d'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0x9e'),'Contact.firstName');_0x8f6e32['field'](_0xf899('0x9f'),_0xf899('0xa0'));_0x8f6e32[_0xf899('0x4a')]('c.email',_0xf899('0xa1'));_0x8f6e32['field'](_0xf899('0xa2'),_0xf899('0xa3'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0xa4'),_0xf899('0xa5'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0xa6'),_0xf899('0xa7'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0xa8'),_0xf899('0xa9'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0xaa'),_0xf899('0xab'));_0x8f6e32[_0xf899('0x4a')](_0xf899('0xac'),_0xf899('0x32'));}if(_0x267eb5['limit'])_0x8f6e32[_0xf899('0x24')](_0x267eb5['limit']);if(_0x267eb5[_0xf899('0x45')])_0x8f6e32[_0xf899('0x45')](_0x267eb5[_0xf899('0x45')]);return db[_0xf899('0x95')]['query'](_0x8f6e32[_0xf899('0x96')](),_0xa1cc9c);})[_0xf899('0x2b')](function(_0x53fd3e){if(_0x53fd3e['length']>0x0)_0x22e850[_0xf899('0x48')](_0xf899('0xad'),_[_0xf899('0x30')](_0x53fd3e,'id'));return db[_0xf899('0x95')]['query'](_0x22e850[_0xf899('0x96')](),_0xa1cc9c)[_0xf899('0x2b')](function(_0x2b7a4c){var _0x5d1c77=_[_0xf899('0xae')](_0x2b7a4c,'OpenchannelInteractionId');var _0x5c107b=[];_0x53fd3e[_0xf899('0x34')](function(_0x378777){_0x5c107b['push'](updateOpenchannelInteraction(_0x378777,_0x5896ae,_0x5d1c77));});return BPromise[_0xf899('0xaf')](_0x5c107b);});});})[_0xf899('0x2b')](function(_0x5e0dec){_0x121800[_0xf899('0xb0')]=_0x5e0dec;return _0x121800;})[_0xf899('0x2b')](respondWithFilteredResult(_0x3e9a4b,_0x267eb5))['catch'](handleError(_0x3e9a4b,null));};exports[_0xf899('0xb1')]=function(_0x3a236f,_0x19cb12){var _0x24ce2b={};if(_0x3a236f['query']['type']&&_0x3a236f['query'][_0xf899('0x6c')]===_0xf899('0x4c')){_0x24ce2b[_0xf899('0x4c')]=_0x3a236f['params']['id'];}else{_0x24ce2b['id']=_0x3a236f[_0xf899('0xb2')]['id'];}var _0x5c8aee={'raw':![],'where':_0x24ce2b},_0x4374ac={};_0x4374ac[_0xf899('0x40')]=_[_0xf899('0x3c')](db[_0xf899('0x38')][_0xf899('0xb3')]);_0x4374ac[_0xf899('0x3b')]=_[_0xf899('0x3c')](_0x3a236f['query']);_0x4374ac['filters']=_[_0xf899('0x3e')](_0x4374ac[_0xf899('0x40')],_0x4374ac[_0xf899('0x3b')]);_0x5c8aee['attributes']=_[_0xf899('0x3e')](_0x4374ac['model'],qs[_0xf899('0x41')](_0x3a236f[_0xf899('0x3b')][_0xf899('0x41')]));_0x5c8aee[_0xf899('0x3f')]=_0x5c8aee['attributes'][_0xf899('0x42')]?_0x5c8aee[_0xf899('0x3f')]:_0x4374ac[_0xf899('0x40')];if(_0x3a236f['query'][_0xf899('0xb4')]){_0x5c8aee[_0xf899('0xb5')]=[{'all':!![]}];}_0x5c8aee=_[_0xf899('0x98')]({},_0x5c8aee,_0x3a236f['options']);return db['OpenchannelInteraction'][_0xf899('0x5f')](_0x5c8aee)[_0xf899('0x2b')](handleEntityNotFound(_0x19cb12,null))[_0xf899('0x2b')](respondWithResult(_0x19cb12,null))[_0xf899('0x36')](handleError(_0x19cb12,null));};exports[_0xf899('0xb6')]=function(_0xde48b4,_0x47d9bd){return db[_0xf899('0x38')][_0xf899('0xb6')](_0xde48b4[_0xf899('0x74')],{})[_0xf899('0x2b')](respondWithResult(_0x47d9bd,0xc9))['catch'](handleError(_0x47d9bd,null));};exports[_0xf899('0xb7')]=function(_0x1ced1d,_0x2a6dd9){if(_0x1ced1d[_0xf899('0x74')]['id']){delete _0x1ced1d[_0xf899('0x74')]['id'];}return db[_0xf899('0x38')][_0xf899('0x5f')]({'where':{'id':_0x1ced1d['params']['id']}})['then'](handleEntityNotFound(_0x2a6dd9,null))['then'](saveUpdates(_0x1ced1d[_0xf899('0x74')],null))['then'](respondWithResult(_0x2a6dd9,null))['catch'](handleError(_0x2a6dd9,null));};exports[_0xf899('0x2c')]=function(_0x1c2563,_0x3900d0){return db['OpenchannelInteraction']['find']({'where':{'id':_0x1c2563[_0xf899('0xb2')]['id']}})[_0xf899('0x2b')](handleEntityNotFound(_0x3900d0,null))[_0xf899('0x2b')](removeEntity(_0x3900d0,null))[_0xf899('0x36')](handleError(_0x3900d0,null));};exports[_0xf899('0xb8')]=function(_0x2bb2d5,_0x1c6eca){return db['OpenchannelInteraction']['describe']()[_0xf899('0x2b')](respondWithResult(_0x1c6eca,null))['catch'](handleError(_0x1c6eca,null));};exports[_0xf899('0xb9')]=function(_0x25b5bb,_0x22c705,_0x5b9064){return db[_0xf899('0xba')][_0xf899('0x5f')]({'where':{'id':_0x25b5bb['params']['id']}})[_0xf899('0x2b')](handleEntityNotFound(_0x22c705,null))['then'](function(_0x3337ad){if(_0x3337ad){return _0x3337ad['addMessage'](_0x25b5bb[_0xf899('0x74')]['ids'],_['omit'](_0x25b5bb[_0xf899('0x74')],[_0xf899('0xbb'),'id'])||{});}})[_0xf899('0x2b')](respondWithResult(_0x22c705,null))[_0xf899('0x36')](handleError(_0x22c705,null));};exports[_0xf899('0xbc')]=function(_0x5f1930,_0x106b12,_0x44eb34){var _0x11797e={'raw':![],'where':{}};var _0x122cba={};var _0x2bdcdc={'count':0x0,'rows':[]};return db[_0xf899('0x38')][_0xf899('0xbd')]({'where':{'id':_0x5f1930['params']['id']}})[_0xf899('0x2b')](handleEntityNotFound(_0x106b12,null))[_0xf899('0x2b')](function(_0x25162e){if(_0x25162e){_0x122cba[_0xf899('0x40')]=_[_0xf899('0x3c')](db['OpenchannelMessage'][_0xf899('0xb3')]);_0x122cba[_0xf899('0x3b')]=_[_0xf899('0x3c')](_0x5f1930[_0xf899('0x3b')]);_0x122cba[_0xf899('0x3d')]=_['intersection'](_0x122cba[_0xf899('0x40')],_0x122cba[_0xf899('0x3b')]);_0x11797e[_0xf899('0x3f')]=_['intersection'](_0x122cba['model'],qs['fields'](_0x5f1930[_0xf899('0x3b')][_0xf899('0x41')]));_0x11797e[_0xf899('0x3f')]=_0x11797e[_0xf899('0x3f')]['length']?_0x11797e[_0xf899('0x3f')]:_0x122cba[_0xf899('0x40')];if(!_0x5f1930[_0xf899('0x3b')]['hasOwnProperty'](_0xf899('0x44'))){_0x11797e[_0xf899('0x24')]=qs[_0xf899('0x24')](_0x5f1930[_0xf899('0x3b')][_0xf899('0x24')]);_0x11797e[_0xf899('0x45')]=qs[_0xf899('0x45')](_0x5f1930['query'][_0xf899('0x45')]);}_0x11797e['order']=qs[_0xf899('0x47')](_0x5f1930[_0xf899('0x3b')]['sort']);_0x11797e[_0xf899('0x48')]=qs[_0xf899('0x3d')](_[_0xf899('0xbe')](_0x5f1930['query'],_0x122cba[_0xf899('0x3d')]));_0x11797e[_0xf899('0x48')][_0xf899('0xbf')]=_0x25162e['id'];if(_0x5f1930[_0xf899('0x3b')]['filter']){_0x11797e[_0xf899('0x48')]=_[_0xf899('0x98')](_0x11797e[_0xf899('0x48')],{'$or':_[_0xf899('0x30')](_0x11797e[_0xf899('0x3f')],function(_0x6f8c06){var _0x413811={};_0x413811[_0x6f8c06]={'$like':'%'+_0x5f1930[_0xf899('0x3b')]['filter']+'%'};return _0x413811;})});}if(_0x5f1930['query']['$gte']){var _0x610624=_0x5f1930[_0xf899('0x3b')][_0xf899('0xc0')]['split'](',');var _0x778716={};_0x778716[_0x610624[0x0]]={'$gte':moment(_0x610624[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x11797e[_0xf899('0x48')]=_['merge'](_0x11797e[_0xf899('0x48')],_0x778716);}_0x11797e=_['merge']({},_0x11797e,_0x5f1930[_0xf899('0xc1')]);return db[_0xf899('0xba')][_0xf899('0x25')]({'where':_0x11797e[_0xf899('0x48')]})[_0xf899('0x2b')](function(_0x3566f8){_0x2bdcdc[_0xf899('0x25')]=_0x3566f8;if(_0x5f1930[_0xf899('0x3b')]['includeAll']){_0x11797e['include']=[{'all':!![]}];}return db[_0xf899('0xba')]['findAll'](_0x11797e);})[_0xf899('0x2b')](function(_0x43e531){_0x2bdcdc[_0xf899('0xb0')]=_0x43e531;return _0x2bdcdc;});}})[_0xf899('0x2b')](respondWithFilteredResult(_0x106b12,_0x11797e))[_0xf899('0x36')](handleError(_0x106b12,null));};exports[_0xf899('0xc2')]=function(_0x53325f,_0xfe27c2,_0x40c7d3){return db[_0xf899('0x38')][_0xf899('0x5f')]({'where':{'id':_0x53325f['params']['id']}})[_0xf899('0x2b')](handleEntityNotFound(_0xfe27c2,null))[_0xf899('0x2b')](function(_0x243747){if(_0x243747){return _0x243747[_0xf899('0xc3')](_0x53325f[_0xf899('0x74')][_0xf899('0xbb')],_[_0xf899('0xc4')](_0x53325f[_0xf899('0x74')],['ids','id'])||{})['spread'](function(){return db[_0xf899('0xc5')][_0xf899('0xc6')]({'attributes':['id','name','color'],'where':{'id':_0x53325f[_0xf899('0x74')][_0xf899('0xbb')]}});})[_0xf899('0x2b')](function(_0x433289){socket[_0xf899('0xc7')](_0xf899('0xc8'),{'id':Number(_0x53325f[_0xf899('0xb2')]['id']),'tags':_0x433289||[]});return{'id':Number(_0x53325f[_0xf899('0xb2')]['id']),'tags':_0x433289||[]};});}})['then'](respondWithResult(_0xfe27c2,null))['catch'](handleError(_0xfe27c2,null));};exports[_0xf899('0xc9')]=function(_0x57b989,_0x181f88,_0x2d7f85){return db['OpenchannelInteraction'][_0xf899('0x5f')]({'where':{'id':_0x57b989[_0xf899('0xb2')]['id']}})[_0xf899('0x2b')](handleEntityNotFound(_0x181f88,null))[_0xf899('0x2b')](function(_0x15cd52){if(_0x15cd52){return _0x15cd52[_0xf899('0xc9')](_0x57b989[_0xf899('0x3b')][_0xf899('0xbb')]);}})[_0xf899('0x2b')](respondWithStatusCode(_0x181f88,null))[_0xf899('0x36')](handleError(_0x181f88,null));};exports[_0xf899('0xca')]=function(_0x411828,_0x1ddd87){var _0x44109a=moment()[_0xf899('0xcb')]()[_0xf899('0x96')]();var _0x510090=path[_0xf899('0xcc')](config[_0xf899('0xcd')],_0xf899('0xce'),_0xf899('0xcf'),_0xf899('0xd0'));var _0x135020=path[_0xf899('0xcc')](config['root'],'server',_0xf899('0xcf'),_0xf899('0xd1'));var _0xca7f86=path['join'](_0x510090,_0x44109a);var _0x315d7c=util['format']('transcript-%d-%s.zip',_0x411828[_0xf899('0xb2')]['id'],_0x44109a);var _0x63b7b4=path[_0xf899('0xcc')](_0x510090,_0x315d7c);var _0x45e30e=[];_0x45e30e[_0xf899('0x35')]({'model':db[_0xf899('0x70')],'as':_0xf899('0x70'),'attributes':['id',_0xf899('0xd2')],'raw':!![]});_0x45e30e[_0xf899('0x35')]({'model':db['CmContact'],'as':_0xf899('0x65'),'attributes':['id',_0xf899('0xd3'),'lastName'],'raw':!![]});if(_0x411828[_0xf899('0x3b')][_0xf899('0xd1')]){_0x45e30e[_0xf899('0x35')]({'model':db[_0xf899('0xd4')],'as':_0xf899('0xd4'),'raw':!![]});}var _0x3e3d42=[{'model':db[_0xf899('0xba')],'as':_0xf899('0xd5'),'attributes':['id',_0xf899('0x74'),_0xf899('0xd6'),'direction',_0xf899('0xd7'),_0xf899('0x81')],'include':_0x45e30e}];_0x3e3d42[_0xf899('0x35')]({'model':db[_0xf899('0xd8')],'as':_0xf899('0xd9'),'attributes':['id',_0xf899('0x2f')]});_0x3e3d42[_0xf899('0x35')]({'model':db[_0xf899('0x70')],'as':_0xf899('0xda'),'attributes':['id',_0xf899('0xd2')]});return db[_0xf899('0x38')][_0xf899('0x5f')]({'where':{'id':_0x411828['params']['id']},'include':_0x3e3d42})[_0xf899('0x2b')](handleEntityNotFound(_0x1ddd87,null))['then'](function(_0x10ebc0){if(_0x10ebc0){var _0x2ebc13=_0x10ebc0[_0xf899('0xdb')]({'plain':!![]});fs[_0xf899('0xdc')](_0xca7f86);var _0x4f2180={'channel':'Openchannel','account':_0x2ebc13[_0xf899('0xd9')][_0xf899('0x2f')],'agent':_0x2ebc13[_0xf899('0xda')]?_0x2ebc13[_0xf899('0xda')][_0xf899('0xd2')]:_0xf899('0xdd'),'createdAt':moment(_0x2ebc13['createdAt'])[_0xf899('0xde')](_0xf899('0xdf'))[_0xf899('0x96')](),'closedAt':_0x2ebc13['closed']?moment(_0x2ebc13[_0xf899('0xe0')])[_0xf899('0xde')](_0xf899('0xdf'))[_0xf899('0x96')]():'','disposition':_0x2ebc13[_0xf899('0xe1')],'visibility':_0x2ebc13[_0xf899('0xe2')]?_0xf899('0xe3'):_0xf899('0xe4'),'messages':_(_0x2ebc13['Messages'])[_0xf899('0x84')]({'secret':![]})[_0xf899('0x30')](function(_0x45c7a7){if(_0x45c7a7[_0xf899('0xd4')]){var _0x4a95a3=path[_0xf899('0xcc')](_0x135020,_0x45c7a7[_0xf899('0xd4')][_0xf899('0xe5')]);if(fs[_0xf899('0xe6')](_0x4a95a3)){fs['createReadStream'](_0x4a95a3)[_0xf899('0xe7')](fs[_0xf899('0xe8')](path[_0xf899('0xcc')](_0xca7f86,_0x45c7a7['Attachment']['basename'])));}}return{'date':moment(_0x45c7a7['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xf899('0x96')](),'sender':_0x45c7a7[_0xf899('0xe9')]===_0xf899('0xea')?_0x45c7a7[_0xf899('0x70')]?_0x45c7a7[_0xf899('0x70')][_0xf899('0xd2')]:'System':_0x45c7a7[_0xf899('0x65')][_0xf899('0xd3')]+(_0x45c7a7[_0xf899('0x65')][_0xf899('0xeb')]?'\x20'+_0x45c7a7[_0xf899('0x65')][_0xf899('0xeb')]:''),'body':_0x45c7a7[_0xf899('0xd4')]?_0x45c7a7[_0xf899('0xd4')][_0xf899('0xe5')]:_0x45c7a7['body'],'direction':_0x45c7a7[_0xf899('0xe9')]==='out'?'A':'C','secret':_0x45c7a7[_0xf899('0xd7')],'read':_0x45c7a7['read'],'attachment':_0x45c7a7[_0xf899('0xd4')]};})['value']()};return ejs[_0xf899('0xec')](path[_0xf899('0xcc')](config[_0xf899('0xcd')],'server',_0xf899('0xed'),_0xf899('0xee')),{'interaction':_0x4f2180})['then'](function(_0x399e89){var _0xdf1386=path[_0xf899('0xcc')](_0xca7f86,_0xf899('0xef')+_0x2ebc13['id']+'-'+_0x44109a+_0xf899('0xf0'));var _0x1c21d3={'path':_0xdf1386,'channel':'Openchannel','interactionId':_0x2ebc13['id']};return pdf['createPdfFromHTML'](_0x399e89,_0x1c21d3);})[_0xf899('0x2b')](function(){return new BPromise(function(_0x483a34,_0x9e9b15){zipdir(_0xca7f86,{'saveTo':_0x63b7b4},function(_0x1ff28f,_0x44be16){if(_0x1ff28f)return _0x9e9b15(_0x1ff28f);return _0x483a34(_0x44be16);});})[_0xf899('0x2b')](function(){return new BPromise(function(_0x1c9cd2,_0x53f5f9){rimraf(_0xca7f86,function(_0x45a983){if(_0x45a983)_0x53f5f9(_0x45a983);return _0x1c9cd2();});});})[_0xf899('0x2b')](function(){return _0x1ddd87[_0xf899('0xca')](_0x63b7b4,_0x315d7c,function(_0x3b229b){if(_0x3b229b){console[_0xf899('0xf1')](_0xf899('0xf2'),_0x3b229b);}else{fs[_0xf899('0xf3')](_0x63b7b4);}});});});}else{return _0x1ddd87[_0xf899('0x1f')](0xc8);}})[_0xf899('0x36')](handleError(_0x1ddd87,null));};
\ No newline at end of file
+var _0xc6cb=['parseSearch','sqlOperator','conditions','unreadMessages','value','`\x20=\x200','having','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','$substring','find','UserId','type','start','body','keys','some','isEmpty','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','agent','i.OpenchannelAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','a.key','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.lastName','c.phone','c.mobile','Contact.mobile','c.fax','o.fullname','o.internal','Owner.internal','ui.OpenchannelInteractionId\x20IN\x20?','OpenchannelInteractionId','all','catch','params','includeAll','include','merge','create','destroy','describe','addMessage','omit','findOne','pick','options','OpenchannelMessage','findAll','addTags','ids','openchannelInteractionTags:save','removeTags','download','join','root','server','tmp','files','format','push','User','lastName','attachments','Attachment','Messages','secret','OpenchannelAccount','Account','Owner','YYYY-MM-DD\x20HH:mm:ss','disposition','threadId','Public','basename','createWriteStream','direction','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','createPdfFromHTML','log','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','jsforce','desk.js','to-csv','ioredis','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','Users','map','fullname','TagIds','Tags','split','index','OpenchannelInteraction','rawAttributes','fieldName','key','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','field','color','from','select','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search'];(function(_0x42a24d,_0x2e0cc4){var _0x36422b=function(_0x4cae30){while(--_0x4cae30){_0x42a24d['push'](_0x42a24d['shift']());}};_0x36422b(++_0x2e0cc4);}(_0xc6cb,0x160));var _0xbc6c=function(_0x4a3b7b,_0x2a08f1){_0x4a3b7b=_0x4a3b7b-0x0;var _0x240db5=_0xc6cb[_0x4a3b7b];return _0x240db5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbc6c('0x0'));var zipdir=require(_0xbc6c('0x1'));var jsonpatch=require(_0xbc6c('0x2'));var rp=require(_0xbc6c('0x3'));var moment=require(_0xbc6c('0x4'));var BPromise=require(_0xbc6c('0x5'));var Mustache=require(_0xbc6c('0x6'));var util=require(_0xbc6c('0x7'));var path=require(_0xbc6c('0x8'));var sox=require(_0xbc6c('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc6c('0xa'));var _=require(_0xbc6c('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbc6c('0xc'));var deskjs=require(_0xbc6c('0xd'));var toCsv=require(_0xbc6c('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbc6c('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbc6c('0x10'));var pdf=require(_0xbc6c('0x11'));var hardwareService=require(_0xbc6c('0x12'));var logger=require(_0xbc6c('0x13'))(_0xbc6c('0x14'));var utils=require(_0xbc6c('0x15'));var config=require(_0xbc6c('0x16'));var licenseUtil=require(_0xbc6c('0x17'));var db=require('../../mysqldb')['db'];config[_0xbc6c('0x18')]=_[_0xbc6c('0x19')](config[_0xbc6c('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbc6c('0x18')]));require(_0xbc6c('0x1a'))[_0xbc6c('0x1b')](socket);function respondWithStatusCode(_0x58c8e4,_0x1ba991){_0x1ba991=_0x1ba991||0xcc;return function(_0x397524){if(_0x397524){return _0x58c8e4[_0xbc6c('0x1c')](_0x1ba991);}return _0x58c8e4[_0xbc6c('0x1d')](_0x1ba991)[_0xbc6c('0x1e')]();};}function respondWithResult(_0x489ca1,_0x4e243e){_0x4e243e=_0x4e243e||0xc8;return function(_0x467fa6){if(_0x467fa6){return _0x489ca1[_0xbc6c('0x1d')](_0x4e243e)['json'](_0x467fa6);}};}function respondWithFilteredResult(_0x574a3b,_0x18bffc){return function(_0x274f54){if(_0x274f54){var _0x546dc9=typeof _0x18bffc[_0xbc6c('0x1f')]===_0xbc6c('0x20')&&typeof _0x18bffc[_0xbc6c('0x21')]===_0xbc6c('0x20');var _0x271bcb=_0x274f54[_0xbc6c('0x22')];var _0x3c6745=_0x546dc9?0x0:_0x18bffc[_0xbc6c('0x1f')];var _0x11ef08=_0x546dc9?_0x274f54[_0xbc6c('0x22')]:_0x18bffc[_0xbc6c('0x1f')]+_0x18bffc[_0xbc6c('0x21')];var _0x3a8a24;if(_0x11ef08>=_0x271bcb){_0x11ef08=_0x271bcb;_0x3a8a24=0xc8;}else{_0x3a8a24=0xce;}_0x574a3b[_0xbc6c('0x1d')](_0x3a8a24);return _0x574a3b[_0xbc6c('0x23')](_0xbc6c('0x24'),_0x3c6745+'-'+_0x11ef08+'/'+_0x271bcb)[_0xbc6c('0x25')](_0x274f54);}return null;};}function patchUpdates(_0x59a536){return function(_0x36a14a){try{jsonpatch[_0xbc6c('0x26')](_0x36a14a,_0x59a536,!![]);}catch(_0x44b541){return BPromise[_0xbc6c('0x27')](_0x44b541);}return _0x36a14a[_0xbc6c('0x28')]();};}function saveUpdates(_0x3a4054,_0x4b88f0){return function(_0x327262){if(_0x327262){return _0x327262[_0xbc6c('0x29')](_0x3a4054)[_0xbc6c('0x2a')](function(_0x49f7e5){return _0x49f7e5;});}return null;};}function removeEntity(_0x3b2aa3,_0x357935){return function(_0x131363){if(_0x131363){return _0x131363['destroy']()[_0xbc6c('0x2a')](function(){_0x3b2aa3[_0xbc6c('0x1d')](0xcc)[_0xbc6c('0x1e')]();});}};}function handleEntityNotFound(_0x376a0d,_0x3bb3a6){return function(_0x1b08c9){if(!_0x1b08c9){_0x376a0d[_0xbc6c('0x1c')](0x194);}return _0x1b08c9;};}function handleError(_0x4aea2d,_0x55a7c4){_0x55a7c4=_0x55a7c4||0x1f4;return function(_0x52cd92){logger[_0xbc6c('0x2b')](_0x52cd92[_0xbc6c('0x2c')]);if(_0x52cd92[_0xbc6c('0x2d')]){delete _0x52cd92[_0xbc6c('0x2d')];}_0x4aea2d[_0xbc6c('0x1d')](_0x55a7c4)['send'](_0x52cd92);};}function getInteractionUsers(_0x32313b,_0x98c31d){return new BPromise(function(_0x411eeb,_0x532542){try{if(_0x98c31d[_0x32313b['id']]){_0x32313b[_0xbc6c('0x2e')]=_[_0xbc6c('0x2f')](_0x98c31d[_0x32313b['id']],function(_0x50fec6){return{'id':_0x50fec6['id'],'fullname':_0x50fec6[_0xbc6c('0x30')]};});}}catch(_0x1dd813){_0x532542(_0x1dd813);}_0x411eeb(_0x32313b);});}function getInteractionTags(_0x3f8bee,_0x51a618){return new BPromise(function(_0x1a6ec3,_0x244322){try{if(_0x3f8bee[_0xbc6c('0x31')]){_0x3f8bee[_0xbc6c('0x32')]=[];_0x3f8bee[_0xbc6c('0x31')][_0xbc6c('0x33')](',')['forEach'](function(_0x67c06f){_0x3f8bee[_0xbc6c('0x32')]['push'](_0x51a618[_0x67c06f]);});}delete _0x3f8bee['TagIds'];}catch(_0xfbbfa4){_0x244322(_0xfbbfa4);}_0x1a6ec3(_0x3f8bee);});}function updateOpenchannelInteraction(_0xb87b9c,_0x15361f,_0x14371c){return new BPromise(function(_0x45c57d,_0xcf6a91){return getInteractionUsers(_0xb87b9c,_0x14371c)[_0xbc6c('0x2a')](function(_0x361998){return getInteractionTags(_0x361998,_0x15361f);})[_0xbc6c('0x2a')](function(_0x260cef){_0x45c57d(_0x260cef);})['catch'](function(_0x36e1fa){_0xcf6a91(_0x36e1fa);});});}exports[_0xbc6c('0x34')]=function(_0xd2cf29,_0x21e098){var _0x5a0045={},_0x5b1ab7={},_0x6c5f66={'count':0x0,'rows':[]};var _0x118ae6=_[_0xbc6c('0x2f')](db[_0xbc6c('0x35')][_0xbc6c('0x36')],function(_0x432be4){return{'name':_0x432be4[_0xbc6c('0x37')],'type':_0x432be4['type'][_0xbc6c('0x38')]};});_0x5b1ab7['model']=_[_0xbc6c('0x2f')](_0x118ae6,_0xbc6c('0x2d'));_0x5b1ab7['query']=_['keys'](_0xd2cf29['query']);_0x5b1ab7[_0xbc6c('0x39')]=_[_0xbc6c('0x3a')](_0x5b1ab7[_0xbc6c('0x3b')],_0x5b1ab7[_0xbc6c('0x3c')]);_0x5a0045[_0xbc6c('0x3d')]=_['intersection'](_0x5b1ab7['model'],qs['fields'](_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x3e')]));_0x5a0045[_0xbc6c('0x3d')]=_0x5a0045[_0xbc6c('0x3d')][_0xbc6c('0x3f')]?_0x5a0045[_0xbc6c('0x3d')]:_0x5b1ab7[_0xbc6c('0x3b')];if(!_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x40')](_0xbc6c('0x41'))){_0x5a0045[_0xbc6c('0x21')]=qs[_0xbc6c('0x21')](_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x21')]);_0x5a0045[_0xbc6c('0x1f')]=qs[_0xbc6c('0x1f')](_0xd2cf29[_0xbc6c('0x3c')]['offset']);}_0x5a0045[_0xbc6c('0x42')]=qs[_0xbc6c('0x43')](_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x43')]);_0x5a0045[_0xbc6c('0x44')]=qs['filters'](_['pick'](_0xd2cf29[_0xbc6c('0x3c')],_0x5b1ab7['filters']),_0x118ae6);var _0x3ca1d=[];var _0x4f529e=squel['select']()[_0xbc6c('0x45')]('id')[_0xbc6c('0x45')](_0xbc6c('0x2d'))[_0xbc6c('0x45')](_0xbc6c('0x46'))[_0xbc6c('0x47')]('tools_tags');var _0xf79b9b=squel[_0xbc6c('0x48')]()[_0xbc6c('0x45')](_0xbc6c('0x49'))['field'](_0xbc6c('0x4a'))[_0xbc6c('0x45')](_0xbc6c('0x4b'))[_0xbc6c('0x47')](_0xbc6c('0x4c'),'ui')[_0xbc6c('0x4d')](_0xbc6c('0x4e'),'u',_0xbc6c('0x4f'));var _0x4acbd3=squel[_0xbc6c('0x48')]()['from']('openchannel_interactions','i')[_0xbc6c('0x4d')]('cm_contacts','c',_0xbc6c('0x50'))[_0xbc6c('0x4d')](_0xbc6c('0x4e'),'o',_0xbc6c('0x51'))[_0xbc6c('0x4d')](_0xbc6c('0x52'),'a',_0xbc6c('0x53'))[_0xbc6c('0x4d')]('openchannel_messages','me',_0xbc6c('0x54'))[_0xbc6c('0x4d')]('openchannel_interaction_has_tags','it',_0xbc6c('0x55'))['left_join'](_0xbc6c('0x56'),'t',_0xbc6c('0x57'));var _0x9703ff=squel[_0xbc6c('0x58')]();var _0x21f56f=[];var _0x87b155=squel[_0xbc6c('0x58')]();var _0x221857;if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x59')]){_0x221857=as[_0xbc6c('0x5a')](_0xd2cf29[_0xbc6c('0x3c')]['search']);var _0x1dada4=_0x221857[_0xbc6c('0x5b')];for(var _0x3bf132=0x0;_0x3bf132<_0x221857[_0xbc6c('0x5c')][_0xbc6c('0x3f')];_0x3bf132++){var _0x3b9abe=_0x221857['conditions'][_0x3bf132];var _0x14f57a='i';var _0x5c84db=_['find'](_0x118ae6,[_0xbc6c('0x2d'),_0x3b9abe[_0xbc6c('0x45')]]);if(!_0x5c84db){switch(_0x3b9abe['field']){case _0xbc6c('0x5d'):if(_0x3b9abe[_0xbc6c('0x5e')]==0x1){_0x4acbd3['having']('`'+_0x3b9abe[_0xbc6c('0x45')]+_0xbc6c('0x5f'));}else{_0x4acbd3[_0xbc6c('0x60')]('`'+_0x3b9abe[_0xbc6c('0x45')]+'`\x20>\x200');}break;case _0xbc6c('0x61'):if(_0x3b9abe[_0xbc6c('0x62')]==='$substring'){if(_0x3b9abe[_0xbc6c('0x5e')][_0xbc6c('0x33')]('\x20')[_0xbc6c('0x3f')]>0x1){_0x9703ff[_0x1dada4](_0xbc6c('0x63'),qs[_0xbc6c('0x64')](_0x3b9abe['value']),null);}else{var _0x3611d4='%'+_0x3b9abe['value']+'%';_0x9703ff[_0x1dada4]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3611d4,_0x3611d4,_0x3611d4);}}else{_0x5c84db=_['find'](_0x118ae6,[_0xbc6c('0x2d'),'ContactId']);_0x3b9abe[_0xbc6c('0x45')]=_0xbc6c('0x65');_0x4a4e90=as[_0xbc6c('0x66')](_0x14f57a,_0x5c84db['type'],_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90[_0xbc6c('0x67')],_0x4a4e90[_0xbc6c('0x5e')]['start'],_0x4a4e90['value']['end']);}break;case _0xbc6c('0x68'):var _0x21d278=_0x3b9abe[_0xbc6c('0x5e')][_0xbc6c('0x33')](',')['map'](function(_0x2a5d7b){return Number(_0x2a5d7b);});_0x21d278[_0xbc6c('0x69')](function(_0x346c6d){_0x87b155['or'](_0xbc6c('0x6a'),'%,'+_0x346c6d+',%');});_0x21f56f=_[_0xbc6c('0x6b')](_0x21f56f,_0x21d278);break;case'User':if(_0x3b9abe[_0xbc6c('0x62')]===_0xbc6c('0x6c')){_0x9703ff[_0x1dada4]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x3b9abe['value']+'%',null);}else{_0x5c84db=_[_0xbc6c('0x6d')](_0x118ae6,[_0xbc6c('0x2d'),_0xbc6c('0x6e')]);_0x3b9abe[_0xbc6c('0x45')]=_0xbc6c('0x6e');_0x4a4e90=as[_0xbc6c('0x66')](_0x14f57a,_0x5c84db[_0xbc6c('0x6f')],_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90[_0xbc6c('0x67')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x70')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x1e')]);}break;case _0xbc6c('0x71'):_0x4a4e90=as[_0xbc6c('0x66')]('me',null,_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90['text'],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x70')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x1e')]);break;}}else{var _0x4a4e90=as['buildExpression'](_0x14f57a,_0x5c84db[_0xbc6c('0x6f')],_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90[_0xbc6c('0x67')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x70')],_0x4a4e90[_0xbc6c('0x5e')]['end']);}}}else{var _0x405296=_(_0xd2cf29[_0xbc6c('0x3c')])[_0xbc6c('0x72')]()[_0xbc6c('0x2f')](function(_0x47ecbd){return _[_0xbc6c('0x73')](_0x118ae6,[_0xbc6c('0x2d'),_0x47ecbd])?_0x47ecbd:undefined;})['compact']()[_0xbc6c('0x5e')]();if(!_[_0xbc6c('0x74')](_0x405296)){_0x405296['forEach'](function(_0x3a3c9c){if(_0x3a3c9c==='OpenchannelAccountId'){_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x75'),[]['concat'](_0xd2cf29[_0xbc6c('0x3c')][_0x3a3c9c]));}else if(_0x3a3c9c===_0xbc6c('0x76')){var _0x31327f=JSON[_0xbc6c('0x77')](_0xd2cf29['query'][_0x3a3c9c])[_0xbc6c('0x78')];var _0x43b1f9=JSON[_0xbc6c('0x77')](_0xd2cf29[_0xbc6c('0x3c')][_0x3a3c9c])['$lte'];_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x79'),_0x31327f,_0x43b1f9);}else{if(_0xd2cf29['query'][_0x3a3c9c]==='null'){_0x4acbd3[_0xbc6c('0x44')]('i.'+_0x3a3c9c+'\x20IS\x20NULL');}else{_0x4acbd3[_0xbc6c('0x44')]('i.'+_0x3a3c9c+_0xbc6c('0x7a'),_0xd2cf29[_0xbc6c('0x3c')][_0x3a3c9c]);}}});}if(_0xd2cf29['query'][_0xbc6c('0x7b')]){if(_0xd2cf29[_0xbc6c('0x3c')]['read']==0x1){_0x4acbd3['having'](_0xbc6c('0x7c'));}else{_0x4acbd3[_0xbc6c('0x60')](_0xbc6c('0x7d'));}}if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x7e')]){_0x21f56f=_['isArray'](_0xd2cf29[_0xbc6c('0x3c')]['tag'])?_0xd2cf29[_0xbc6c('0x3c')]['tag']:new Array(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x7e')]);_0x21f56f[_0xbc6c('0x69')](function(_0xbd8f2c){_0x87b155['or'](_0xbc6c('0x6a'),'%,'+_0xbd8f2c+',%');});}if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x7f')]){var _0x2e0e78=_0xd2cf29['query'][_0xbc6c('0x7f')]['replace']('\x5c','\x5c\x5c')[_0xbc6c('0x80')](/'/g,'\x27\x27');if(qs[_0xbc6c('0x81')](_0x2e0e78)){_0x9703ff['or'](_0xbc6c('0x82'),_0x2e0e78+'%');}else{_0x9703ff['or'](_0xbc6c('0x83'),qs[_0xbc6c('0x64')](_0x2e0e78))['or']('i.from\x20LIKE\x20?',_0x2e0e78+'%')['or'](_0xbc6c('0x84'),_0x2e0e78+'%');}}}_0x4acbd3['where'](_0x9703ff);_0x4acbd3[_0xbc6c('0x85')](_0xbc6c('0x86'));var _0xee0a8b={'type':db[_0xbc6c('0x87')][_0xbc6c('0x88')][_0xbc6c('0x89')],'raw':!![]};var _0x1f43c8=_0x4acbd3[_0xbc6c('0x8a')]();_0x1f43c8['field'](_0xbc6c('0x86'));_0x1f43c8[_0xbc6c('0x45')](_0xbc6c('0x8b'),_0xbc6c('0x5d'));if(_0x5a0045[_0xbc6c('0x42')]){_0x5a0045[_0xbc6c('0x42')]['forEach'](function(_0x430b82){var _0x1ba665=_0x430b82[0x0]===_0xbc6c('0x8c')?_0x430b82[0x0]:'i.'+_0x430b82[0x0];_0x4acbd3['order'](_0x1ba665,_0x430b82[0x1]==='DESC'?![]:!![]);});}if(!_[_0xbc6c('0x74')](_0x21f56f)){_0x4acbd3['having'](_0x87b155);_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x8d'),_0x21f56f);}BPromise[_0xbc6c('0x8e')]()[_0xbc6c('0x2a')](function(){if(!_0x221857){if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x8f')])return;_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x90'));_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x90'));return;}if(_0xd2cf29[_0xbc6c('0x91')]['role']!==_0xbc6c('0x92'))return;return _0xd2cf29[_0xbc6c('0x91')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0xbc6c('0x2a')](function(_0x59ec9f){if(_[_0xbc6c('0x74')](_0x59ec9f)){_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x93'));_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x93'));}else{_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x75'),_[_0xbc6c('0x2f')](_0x59ec9f,'id'));_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x75'),_[_0xbc6c('0x2f')](_0x59ec9f,'id'));}});})[_0xbc6c('0x2a')](function(){if(_0xd2cf29[_0xbc6c('0x91')][_0xbc6c('0x94')]===_0xbc6c('0x92')&&!_0x221857&&!_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x8f')])return[];return db[_0xbc6c('0x95')]['query'](_0x1f43c8[_0xbc6c('0x96')](),_0xee0a8b);})[_0xbc6c('0x2a')](function(_0x2215bd){_0x6c5f66['count']=_0x2215bd[_0xbc6c('0x3f')];if(_0x6c5f66['count']===0x0)return[];return db[_0xbc6c('0x95')][_0xbc6c('0x3c')](_0x4f529e[_0xbc6c('0x96')](),_0xee0a8b)[_0xbc6c('0x2a')](function(_0x39a6e7){_0x3ca1d=_[_0xbc6c('0x97')](_0x39a6e7,'id');_0xee0a8b=_['merge'](_0xee0a8b,{'model':db[_0xbc6c('0x35')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xd2cf29['query']['fields']){_0x5a0045[_0xbc6c('0x3d')][_0xbc6c('0x69')](function(_0x470ffe){_0x4acbd3[_0xbc6c('0x45')]('i.'+_0x470ffe);});}else{_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x8b'),'unreadMessages');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x98'),'Account.key');_0x4acbd3[_0xbc6c('0x45')]('a.mandatoryDisposition',_0xbc6c('0x99'));_0x4acbd3[_0xbc6c('0x45')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xbc6c('0x8c'));_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9a'));_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9b'),'Contact.firstName');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9c'),_0xbc6c('0x9d'));_0x4acbd3['field']('c.email','Contact.email');_0x4acbd3['field'](_0xbc6c('0x9e'),'Contact.phone');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9f'),_0xbc6c('0xa0'));_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0xa1'),'Contact.fax');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0xa2'),'Owner.fullname');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0xa3'),_0xbc6c('0xa4'));_0x4acbd3[_0xbc6c('0x45')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x5a0045[_0xbc6c('0x21')])_0x4acbd3['limit'](_0x5a0045['limit']);if(_0x5a0045[_0xbc6c('0x1f')])_0x4acbd3[_0xbc6c('0x1f')](_0x5a0045[_0xbc6c('0x1f')]);return db[_0xbc6c('0x95')][_0xbc6c('0x3c')](_0x4acbd3[_0xbc6c('0x96')](),_0xee0a8b);})[_0xbc6c('0x2a')](function(_0x3bc823){if(_0x3bc823[_0xbc6c('0x3f')]>0x0)_0xf79b9b[_0xbc6c('0x44')](_0xbc6c('0xa5'),_['map'](_0x3bc823,'id'));return db[_0xbc6c('0x95')][_0xbc6c('0x3c')](_0xf79b9b['toString'](),_0xee0a8b)[_0xbc6c('0x2a')](function(_0x50efce){var _0x33e7c0=_['groupBy'](_0x50efce,_0xbc6c('0xa6'));var _0x3d0b56=[];_0x3bc823[_0xbc6c('0x69')](function(_0x3e5317){_0x3d0b56['push'](updateOpenchannelInteraction(_0x3e5317,_0x3ca1d,_0x33e7c0));});return BPromise[_0xbc6c('0xa7')](_0x3d0b56);});});})[_0xbc6c('0x2a')](function(_0x4e239b){_0x6c5f66['rows']=_0x4e239b;return _0x6c5f66;})[_0xbc6c('0x2a')](respondWithFilteredResult(_0x21e098,_0x5a0045))[_0xbc6c('0xa8')](handleError(_0x21e098,null));};exports['show']=function(_0x149e10,_0x361971){var _0x2fd5b6={};if(_0x149e10[_0xbc6c('0x3c')][_0xbc6c('0x6f')]&&_0x149e10[_0xbc6c('0x3c')]['type']===_0xbc6c('0x47')){_0x2fd5b6[_0xbc6c('0x47')]=_0x149e10['params']['id'];}else{_0x2fd5b6['id']=_0x149e10[_0xbc6c('0xa9')]['id'];}var _0x5e4b7b={'raw':![],'where':_0x2fd5b6},_0x319913={};_0x319913['model']=_[_0xbc6c('0x72')](db[_0xbc6c('0x35')]['rawAttributes']);_0x319913[_0xbc6c('0x3c')]=_[_0xbc6c('0x72')](_0x149e10[_0xbc6c('0x3c')]);_0x319913['filters']=_[_0xbc6c('0x3a')](_0x319913[_0xbc6c('0x3b')],_0x319913[_0xbc6c('0x3c')]);_0x5e4b7b[_0xbc6c('0x3d')]=_[_0xbc6c('0x3a')](_0x319913[_0xbc6c('0x3b')],qs[_0xbc6c('0x3e')](_0x149e10[_0xbc6c('0x3c')]['fields']));_0x5e4b7b[_0xbc6c('0x3d')]=_0x5e4b7b[_0xbc6c('0x3d')][_0xbc6c('0x3f')]?_0x5e4b7b[_0xbc6c('0x3d')]:_0x319913['model'];if(_0x149e10['query'][_0xbc6c('0xaa')]){_0x5e4b7b[_0xbc6c('0xab')]=[{'all':!![]}];}_0x5e4b7b=_[_0xbc6c('0xac')]({},_0x5e4b7b,_0x149e10['options']);return db['OpenchannelInteraction'][_0xbc6c('0x6d')](_0x5e4b7b)[_0xbc6c('0x2a')](handleEntityNotFound(_0x361971,null))['then'](respondWithResult(_0x361971,null))['catch'](handleError(_0x361971,null));};exports[_0xbc6c('0xad')]=function(_0x1e59c4,_0x19337f){return db[_0xbc6c('0x35')][_0xbc6c('0xad')](_0x1e59c4['body'],{})[_0xbc6c('0x2a')](respondWithResult(_0x19337f,0xc9))[_0xbc6c('0xa8')](handleError(_0x19337f,null));};exports[_0xbc6c('0x29')]=function(_0x515d46,_0x57ccf1){if(_0x515d46[_0xbc6c('0x71')]['id']){delete _0x515d46[_0xbc6c('0x71')]['id'];}return db['OpenchannelInteraction']['find']({'where':{'id':_0x515d46[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x57ccf1,null))['then'](saveUpdates(_0x515d46[_0xbc6c('0x71')],null))['then'](respondWithResult(_0x57ccf1,null))['catch'](handleError(_0x57ccf1,null));};exports[_0xbc6c('0xae')]=function(_0x4904ae,_0x46827c){return db[_0xbc6c('0x35')]['find']({'where':{'id':_0x4904ae[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x46827c,null))[_0xbc6c('0x2a')](removeEntity(_0x46827c,null))[_0xbc6c('0xa8')](handleError(_0x46827c,null));};exports[_0xbc6c('0xaf')]=function(_0x280161,_0x1da38a){return db[_0xbc6c('0x35')][_0xbc6c('0xaf')]()['then'](respondWithResult(_0x1da38a,null))[_0xbc6c('0xa8')](handleError(_0x1da38a,null));};exports[_0xbc6c('0xb0')]=function(_0x49ffd7,_0x476b51,_0x8c449c){return db['OpenchannelMessage'][_0xbc6c('0x6d')]({'where':{'id':_0x49ffd7[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x476b51,null))[_0xbc6c('0x2a')](function(_0xda5363){if(_0xda5363){return _0xda5363['addMessage'](_0x49ffd7[_0xbc6c('0x71')]['ids'],_[_0xbc6c('0xb1')](_0x49ffd7[_0xbc6c('0x71')],['ids','id'])||{});}})[_0xbc6c('0x2a')](respondWithResult(_0x476b51,null))[_0xbc6c('0xa8')](handleError(_0x476b51,null));};exports['getMessages']=function(_0x315a2e,_0x614531,_0x5f0f3d){var _0x4f4c81={'raw':![],'where':{}};var _0x295397={};var _0x162f5e={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0xbc6c('0xb2')]({'where':{'id':_0x315a2e['params']['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x614531,null))[_0xbc6c('0x2a')](function(_0x155a75){if(_0x155a75){_0x295397[_0xbc6c('0x3b')]=_['keys'](db['OpenchannelMessage'][_0xbc6c('0x36')]);_0x295397[_0xbc6c('0x3c')]=_[_0xbc6c('0x72')](_0x315a2e['query']);_0x295397[_0xbc6c('0x39')]=_[_0xbc6c('0x3a')](_0x295397[_0xbc6c('0x3b')],_0x295397[_0xbc6c('0x3c')]);_0x4f4c81[_0xbc6c('0x3d')]=_[_0xbc6c('0x3a')](_0x295397[_0xbc6c('0x3b')],qs[_0xbc6c('0x3e')](_0x315a2e[_0xbc6c('0x3c')]['fields']));_0x4f4c81['attributes']=_0x4f4c81['attributes'][_0xbc6c('0x3f')]?_0x4f4c81[_0xbc6c('0x3d')]:_0x295397[_0xbc6c('0x3b')];if(!_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x40')](_0xbc6c('0x41'))){_0x4f4c81['limit']=qs['limit'](_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x21')]);_0x4f4c81[_0xbc6c('0x1f')]=qs[_0xbc6c('0x1f')](_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x1f')]);}_0x4f4c81[_0xbc6c('0x42')]=qs[_0xbc6c('0x43')](_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x43')]);_0x4f4c81[_0xbc6c('0x44')]=qs['filters'](_[_0xbc6c('0xb3')](_0x315a2e[_0xbc6c('0x3c')],_0x295397[_0xbc6c('0x39')]));_0x4f4c81[_0xbc6c('0x44')][_0xbc6c('0xa6')]=_0x155a75['id'];if(_0x315a2e['query'][_0xbc6c('0x7f')]){_0x4f4c81[_0xbc6c('0x44')]=_[_0xbc6c('0xac')](_0x4f4c81[_0xbc6c('0x44')],{'$or':_[_0xbc6c('0x2f')](_0x4f4c81['attributes'],function(_0x5b522f){var _0x268333={};_0x268333[_0x5b522f]={'$like':'%'+_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x7f')]+'%'};return _0x268333;})});}if(_0x315a2e['query'][_0xbc6c('0x78')]){var _0x1c4698=_0x315a2e['query'][_0xbc6c('0x78')][_0xbc6c('0x33')](',');var _0xbc5891={};_0xbc5891[_0x1c4698[0x0]]={'$gte':moment(_0x1c4698[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x4f4c81[_0xbc6c('0x44')]=_[_0xbc6c('0xac')](_0x4f4c81[_0xbc6c('0x44')],_0xbc5891);}_0x4f4c81=_[_0xbc6c('0xac')]({},_0x4f4c81,_0x315a2e[_0xbc6c('0xb4')]);return db['OpenchannelMessage'][_0xbc6c('0x22')]({'where':_0x4f4c81['where']})[_0xbc6c('0x2a')](function(_0x286f53){_0x162f5e[_0xbc6c('0x22')]=_0x286f53;if(_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0xaa')]){_0x4f4c81[_0xbc6c('0xab')]=[{'all':!![]}];}return db[_0xbc6c('0xb5')][_0xbc6c('0xb6')](_0x4f4c81);})['then'](function(_0xf7ce6c){_0x162f5e['rows']=_0xf7ce6c;return _0x162f5e;});}})['then'](respondWithFilteredResult(_0x614531,_0x4f4c81))[_0xbc6c('0xa8')](handleError(_0x614531,null));};exports[_0xbc6c('0xb7')]=function(_0x5040f9,_0xbdbb1,_0x3a40b2){return db['OpenchannelInteraction'][_0xbc6c('0x6d')]({'where':{'id':_0x5040f9[_0xbc6c('0xa9')]['id']}})['then'](handleEntityNotFound(_0xbdbb1,null))['then'](function(_0x35fbe0){if(_0x35fbe0){return _0x35fbe0['setTags'](_0x5040f9['body'][_0xbc6c('0xb8')],_[_0xbc6c('0xb1')](_0x5040f9[_0xbc6c('0x71')],[_0xbc6c('0xb8'),'id'])||{})['spread'](function(){return db[_0xbc6c('0x68')]['findAll']({'attributes':['id','name',_0xbc6c('0x46')],'where':{'id':_0x5040f9['body'][_0xbc6c('0xb8')]}});})['then'](function(_0x9b22e7){socket['emit'](_0xbc6c('0xb9'),{'id':Number(_0x5040f9[_0xbc6c('0xa9')]['id']),'tags':_0x9b22e7||[]});return{'id':Number(_0x5040f9[_0xbc6c('0xa9')]['id']),'tags':_0x9b22e7||[]};});}})[_0xbc6c('0x2a')](respondWithResult(_0xbdbb1,null))[_0xbc6c('0xa8')](handleError(_0xbdbb1,null));};exports['removeTags']=function(_0x16f7f1,_0x895132,_0x3474f6){return db[_0xbc6c('0x35')][_0xbc6c('0x6d')]({'where':{'id':_0x16f7f1[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x895132,null))[_0xbc6c('0x2a')](function(_0xf140d0){if(_0xf140d0){return _0xf140d0[_0xbc6c('0xba')](_0x16f7f1[_0xbc6c('0x3c')][_0xbc6c('0xb8')]);}})[_0xbc6c('0x2a')](respondWithStatusCode(_0x895132,null))[_0xbc6c('0xa8')](handleError(_0x895132,null));};exports[_0xbc6c('0xbb')]=function(_0x37fc12,_0x1917f1){var _0x447d8c=moment()['unix']()['toString']();var _0x3429b6=path[_0xbc6c('0xbc')](config[_0xbc6c('0xbd')],_0xbc6c('0xbe'),'files',_0xbc6c('0xbf'));var _0x1ee022=path[_0xbc6c('0xbc')](config[_0xbc6c('0xbd')],_0xbc6c('0xbe'),_0xbc6c('0xc0'),'attachments');var _0x5ef0b2=path[_0xbc6c('0xbc')](_0x3429b6,_0x447d8c);var _0x38dbf8=util[_0xbc6c('0xc1')]('transcript-%d-%s.zip',_0x37fc12[_0xbc6c('0xa9')]['id'],_0x447d8c);var _0xd0dffa=path[_0xbc6c('0xbc')](_0x3429b6,_0x38dbf8);var _0x29630a=[];_0x29630a[_0xbc6c('0xc2')]({'model':db[_0xbc6c('0xc3')],'as':_0xbc6c('0xc3'),'attributes':['id',_0xbc6c('0x30')],'raw':!![]});_0x29630a['push']({'model':db['CmContact'],'as':_0xbc6c('0x61'),'attributes':['id','firstName',_0xbc6c('0xc4')],'raw':!![]});if(_0x37fc12[_0xbc6c('0x3c')][_0xbc6c('0xc5')]){_0x29630a[_0xbc6c('0xc2')]({'model':db['Attachment'],'as':_0xbc6c('0xc6'),'raw':!![]});}var _0x2c0b0f=[{'model':db[_0xbc6c('0xb5')],'as':_0xbc6c('0xc7'),'attributes':['id',_0xbc6c('0x71'),_0xbc6c('0x76'),'direction',_0xbc6c('0xc8'),'read'],'include':_0x29630a}];_0x2c0b0f[_0xbc6c('0xc2')]({'model':db[_0xbc6c('0xc9')],'as':_0xbc6c('0xca'),'attributes':['id','name']});_0x2c0b0f[_0xbc6c('0xc2')]({'model':db[_0xbc6c('0xc3')],'as':_0xbc6c('0xcb'),'attributes':['id',_0xbc6c('0x30')]});return db[_0xbc6c('0x35')][_0xbc6c('0x6d')]({'where':{'id':_0x37fc12['params']['id']},'include':_0x2c0b0f})[_0xbc6c('0x2a')](handleEntityNotFound(_0x1917f1,null))['then'](function(_0xdbf901){if(_0xdbf901){var _0x1e7ad2=_0xdbf901['get']({'plain':!![]});fs['mkdirSync'](_0x5ef0b2);var _0x52094d={'channel':'Openchannel','account':_0x1e7ad2[_0xbc6c('0xca')][_0xbc6c('0x2d')],'agent':_0x1e7ad2[_0xbc6c('0xcb')]?_0x1e7ad2[_0xbc6c('0xcb')][_0xbc6c('0x30')]:'N.A.','createdAt':moment(_0x1e7ad2[_0xbc6c('0x76')])[_0xbc6c('0xc1')](_0xbc6c('0xcc'))[_0xbc6c('0x96')](),'closedAt':_0x1e7ad2['closed']?moment(_0x1e7ad2['closedAt'])[_0xbc6c('0xc1')](_0xbc6c('0xcc'))[_0xbc6c('0x96')]():'','disposition':_0x1e7ad2[_0xbc6c('0xcd')],'visibility':_0x1e7ad2[_0xbc6c('0xce')]?_0xbc6c('0xcf'):'Private','messages':_(_0x1e7ad2[_0xbc6c('0xc7')])['filter']({'secret':![]})[_0xbc6c('0x2f')](function(_0x5d9164){if(_0x5d9164[_0xbc6c('0xc6')]){var _0x294c1f=path['join'](_0x1ee022,_0x5d9164[_0xbc6c('0xc6')][_0xbc6c('0xd0')]);if(fs['existsSync'](_0x294c1f)){fs['createReadStream'](_0x294c1f)['pipe'](fs[_0xbc6c('0xd1')](path['join'](_0x5ef0b2,_0x5d9164[_0xbc6c('0xc6')][_0xbc6c('0xd0')])));}}return{'date':moment(_0x5d9164[_0xbc6c('0x76')])[_0xbc6c('0xc1')](_0xbc6c('0xcc'))[_0xbc6c('0x96')](),'sender':_0x5d9164[_0xbc6c('0xd2')]===_0xbc6c('0xd3')?_0x5d9164[_0xbc6c('0xc3')]?_0x5d9164[_0xbc6c('0xc3')]['fullname']:'System':_0x5d9164[_0xbc6c('0x61')]['firstName']+(_0x5d9164['Contact'][_0xbc6c('0xc4')]?'\x20'+_0x5d9164[_0xbc6c('0x61')]['lastName']:''),'body':_0x5d9164['Attachment']?_0x5d9164[_0xbc6c('0xc6')][_0xbc6c('0xd0')]:_0x5d9164[_0xbc6c('0x71')],'direction':_0x5d9164['direction']===_0xbc6c('0xd3')?'A':'C','secret':_0x5d9164['secret'],'read':_0x5d9164[_0xbc6c('0x7b')],'attachment':_0x5d9164[_0xbc6c('0xc6')]};})['value']()};return ejs[_0xbc6c('0xd4')](path[_0xbc6c('0xbc')](config[_0xbc6c('0xbd')],_0xbc6c('0xbe'),_0xbc6c('0xd5'),_0xbc6c('0xd6')),{'interaction':_0x52094d})['then'](function(_0x3086f2){var _0xb7c958=path['join'](_0x5ef0b2,_0xbc6c('0xd7')+_0x1e7ad2['id']+'-'+_0x447d8c+_0xbc6c('0xd8'));var _0x3990fc={'path':_0xb7c958,'channel':_0xbc6c('0xd9'),'interactionId':_0x1e7ad2['id']};return pdf[_0xbc6c('0xda')](_0x3086f2,_0x3990fc);})[_0xbc6c('0x2a')](function(){return new BPromise(function(_0x2fa31f,_0x42ce89){zipdir(_0x5ef0b2,{'saveTo':_0xd0dffa},function(_0x36f3f6,_0x3e4ee4){if(_0x36f3f6)return _0x42ce89(_0x36f3f6);return _0x2fa31f(_0x3e4ee4);});})[_0xbc6c('0x2a')](function(){return new BPromise(function(_0x3148dd,_0x42d9a0){rimraf(_0x5ef0b2,function(_0x2a6b5f){if(_0x2a6b5f)_0x42d9a0(_0x2a6b5f);return _0x3148dd();});});})[_0xbc6c('0x2a')](function(){return _0x1917f1[_0xbc6c('0xbb')](_0xd0dffa,_0x38dbf8,function(_0x501a7f){if(_0x501a7f){console[_0xbc6c('0xdb')]('err',_0x501a7f);}else{fs[_0xbc6c('0xdc')](_0xd0dffa);}});});});}else{return _0x1917f1['sendStatus'](0xc8);}})[_0xbc6c('0xa8')](handleError(_0x1917f1,null));};
\ No newline at end of file
index 40d24b3..6e5e91d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00da=['../../mysqldb','OpenchannelInteraction','OpenchannelMessage','save','update','remove','then','setDataValue','Users','map','emit','hasOwnProperty','hook','exports','events'];(function(_0x1e3671,_0x9ae4fc){var _0x48d5f5=function(_0xfab713){while(--_0xfab713){_0x1e3671['push'](_0x1e3671['shift']());}};_0x48d5f5(++_0x9ae4fc);}(_0x00da,0x68));var _0xa00d=function(_0x41715a,_0x296e4c){_0x41715a=_0x41715a-0x0;var _0x5c576b=_0x00da[_0x41715a];return _0x5c576b;};'use strict';var EventEmitter=require(_0xa00d('0x0'));var OpenchannelInteraction=require(_0xa00d('0x1'))['db'][_0xa00d('0x2')];var OpenchannelMessage=require(_0xa00d('0x1'))['db'][_0xa00d('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa00d('0x4'),'afterUpdate':_0xa00d('0x5'),'afterDestroy':_0xa00d('0x6')};function emitEvent(_0x2e77){return function(_0x2253aa,_0x611c02,_0x19976a){_0x2253aa['getUsers']({'attributes':['id'],'raw':!![]})[_0xa00d('0x7')](function(_0x151c4a){_0x2253aa[_0xa00d('0x8')](_0xa00d('0x9'),_0x151c4a[_0xa00d('0xa')](function(_0x128f36){return{'id':_0x128f36['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x2253aa['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa00d('0x7')](function(_0x4dfdf7){_0x2253aa['setDataValue']('unreadMessages',_0x4dfdf7['length']);OpenchannelInteractionEvents[_0xa00d('0xb')](_0x2e77+':'+_0x2253aa['id'],_0x2253aa);OpenchannelInteractionEvents[_0xa00d('0xb')](_0x2e77,_0x2253aa);_0x19976a(null);})['catch'](_0x19976a(null));};}for(var e in events){if(events[_0xa00d('0xc')](e)){var event=events[e];OpenchannelInteraction[_0xa00d('0xd')](e,emitEvent(event));}}module[_0xa00d('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x15b0=['OpenchannelMessage','setMaxListeners','save','update','remove','getUsers','then','Users','map','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x3bb8e2,_0x5ee2f6){var _0x69c393=function(_0x2ed25c){while(--_0x2ed25c){_0x3bb8e2['push'](_0x3bb8e2['shift']());}};_0x69c393(++_0x5ee2f6);}(_0x15b0,0x11f));var _0x015b=function(_0x46d4f6,_0x1247b2){_0x46d4f6=_0x46d4f6-0x0;var _0x1900b5=_0x15b0[_0x46d4f6];return _0x1900b5;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x015b('0x0'))['db'][_0x015b('0x1')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x015b('0x2')](0x0);var events={'afterCreate':_0x015b('0x3'),'afterUpdate':_0x015b('0x4'),'afterDestroy':_0x015b('0x5')};function emitEvent(_0x191dec){return function(_0x47dcd3,_0x54515b,_0x163456){_0x47dcd3[_0x015b('0x6')]({'attributes':['id'],'raw':!![]})[_0x015b('0x7')](function(_0x44c2dc){_0x47dcd3['setDataValue'](_0x015b('0x8'),_0x44c2dc[_0x015b('0x9')](function(_0x374768){return{'id':_0x374768['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x47dcd3['id'],'direction':'in','read':![]},'raw':!![]});})[_0x015b('0x7')](function(_0x260b92){_0x47dcd3[_0x015b('0xa')](_0x015b('0xb'),_0x260b92[_0x015b('0xc')]);OpenchannelInteractionEvents[_0x015b('0xd')](_0x191dec+':'+_0x47dcd3['id'],_0x47dcd3);OpenchannelInteractionEvents['emit'](_0x191dec,_0x47dcd3);_0x163456(null);})[_0x015b('0xe')](_0x163456(null));};}for(var e in events){if(events[_0x015b('0xf')](e)){var event=events[e];OpenchannelInteraction[_0x015b('0x10')](e,emitEvent(event));}}module[_0x015b('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 447421d..8ae7a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3595=['path','rimraf','exports','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed','closed','closedAt','format','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x3595,0x16a));var _0x5359=function(_0x538fbb,_0x15fb86){_0x538fbb=_0x538fbb-0x0;var _0x2ddfc7=_0x3595[_0x538fbb];return _0x2ddfc7;};'use strict';var _=require(_0x5359('0x0'));var util=require(_0x5359('0x1'));var logger=require(_0x5359('0x2'))(_0x5359('0x3'));var moment=require('moment');var BPromise=require(_0x5359('0x4'));var rp=require(_0x5359('0x5'));var fs=require('fs');var path=require(_0x5359('0x6'));var rimraf=require(_0x5359('0x7'));var config=require('../../config/environment');var attributes=require('./openchannelInteraction.attributes');module[_0x5359('0x8')]=function(_0x1fce26,_0x148c25){return _0x1fce26['define'](_0x5359('0x9'),attributes,{'tableName':_0x5359('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5359('0xb'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x5aedd0,_0x29276c,_0x59246a){if(_0x5aedd0[_0x5359('0xc')](_0x5359('0xd'))){_0x5aedd0[_0x5359('0xe')]=moment()[_0x5359('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x59246a(null,_0x5aedd0);}}});};
\ No newline at end of file
+var _0x7b66=['OpenchannelInteraction','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','util','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x1f0c44,_0x434ca4){var _0x1e89b2=function(_0x222ec8){while(--_0x222ec8){_0x1f0c44['push'](_0x1f0c44['shift']());}};_0x1e89b2(++_0x434ca4);}(_0x7b66,0x1aa));var _0x67b6=function(_0x3471d3,_0x18b535){_0x3471d3=_0x3471d3-0x0;var _0x4cebb4=_0x7b66[_0x3471d3];return _0x4cebb4;};'use strict';var _=require('lodash');var util=require(_0x67b6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x67b6('0x1'));var BPromise=require('bluebird');var rp=require(_0x67b6('0x2'));var fs=require('fs');var path=require(_0x67b6('0x3'));var rimraf=require(_0x67b6('0x4'));var config=require(_0x67b6('0x5'));var attributes=require('./openchannelInteraction.attributes');module[_0x67b6('0x6')]=function(_0x184e45,_0x5ee877){return _0x184e45[_0x67b6('0x7')](_0x67b6('0x8'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x67b6('0x9'),'collate':_0x67b6('0xa'),'hooks':{'beforeUpdate':function(_0x5a1e13,_0x5041a6,_0x3735ed){if(_0x5a1e13['changed'](_0x67b6('0xb'))){_0x5a1e13[_0x67b6('0xc')]=moment()[_0x67b6('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3735ed(null,_0x5a1e13);}}});};
\ No newline at end of file
index 28ba887..8b88772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03a8=['then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','options','raw','where','attributes','limit','AddTagsToOpenchannelInteraction','find','body','AddTags','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x03a8,0x12e));var _0x803a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03a8[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x803a('0x0'));var util=require(_0x803a('0x1'));var moment=require(_0x803a('0x2'));var BPromise=require(_0x803a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x803a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x803a('0x5'));var logger=require(_0x803a('0x6'))(_0x803a('0x7'));var config=require(_0x803a('0x8'));var jayson=require(_0x803a('0x9'));var client=jayson[_0x803a('0xa')][_0x803a('0xb')]({'port':0x232a});config[_0x803a('0xc')]=_[_0x803a('0xd')](config[_0x803a('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x803a('0xe'))(new Redis(config[_0x803a('0xc')]));require(_0x803a('0xf'))[_0x803a('0x10')](socket);function respondWithRpcPromise(_0x37a100,_0x1e13d1,_0x2cec18){return new BPromise(function(_0x502307,_0x2d69d8){return client[_0x803a('0x11')](_0x37a100,_0x2cec18)[_0x803a('0x12')](function(_0x40737c){logger[_0x803a('0x13')](_0x803a('0x14'),_0x1e13d1,_0x803a('0x15'));logger[_0x803a('0x16')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x1e13d1,_0x803a('0x15'),JSON[_0x803a('0x17')](_0x40737c));if(_0x40737c[_0x803a('0x18')]){if(_0x40737c[_0x803a('0x18')][_0x803a('0x19')]===0x1f4){logger[_0x803a('0x18')](_0x803a('0x14'),_0x1e13d1,_0x40737c[_0x803a('0x18')]['message']);return _0x2d69d8(_0x40737c[_0x803a('0x18')]['message']);}logger[_0x803a('0x18')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1e13d1,_0x40737c[_0x803a('0x18')][_0x803a('0x1a')]);return _0x502307(_0x40737c[_0x803a('0x18')][_0x803a('0x1a')]);}else{logger[_0x803a('0x13')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1e13d1,_0x803a('0x15'));_0x502307(_0x40737c['result'][_0x803a('0x1a')]);}})[_0x803a('0x1b')](function(_0x36d2d9){logger['error'](_0x803a('0x14'),_0x1e13d1,_0x36d2d9);_0x2d69d8(_0x36d2d9);});});}exports[_0x803a('0x1c')]=function(_0x339997){var _0x4a4c05=this;return new Promise(function(_0x58c597,_0x5329a1){return db[_0x803a('0x1d')][_0x803a('0x1e')](_0x339997['body'],{'raw':_0x339997[_0x803a('0x1f')]?_0x339997['options'][_0x803a('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x339997[_0x803a('0x1f')]?_0x339997['options'][_0x803a('0x21')]||null:null,'attributes':_0x339997[_0x803a('0x1f')]?_0x339997[_0x803a('0x1f')][_0x803a('0x22')]||null:null,'limit':_0x339997[_0x803a('0x1f')]?_0x339997[_0x803a('0x1f')][_0x803a('0x23')]||null:null})['then'](function(_0x2dfcb0){logger['info'](_0x803a('0x1c'),_0x339997);logger[_0x803a('0x16')](_0x803a('0x1c'),_0x339997,JSON['stringify'](_0x2dfcb0));_0x58c597(_0x2dfcb0);})[_0x803a('0x1b')](function(_0x11d97f){logger[_0x803a('0x18')](_0x803a('0x1c'),_0x11d97f[_0x803a('0x1a')],_0x339997);_0x5329a1(_0x4a4c05[_0x803a('0x18')](0x1f4,_0x11d97f['message']));});});};exports[_0x803a('0x24')]=function(_0x4c65e5){return new Promise(function(_0x177c3a,_0x562a84){return db['OpenchannelInteraction'][_0x803a('0x25')]({'where':_0x4c65e5[_0x803a('0x1f')]?_0x4c65e5[_0x803a('0x1f')][_0x803a('0x21')]||null:null})[_0x803a('0x12')](function(_0xff9df6){if(_0xff9df6){return _0xff9df6['addTags'](_0x4c65e5[_0x803a('0x26')]['ids'],_['omit'](_0x4c65e5['body'],['ids','id'])||{});}})['spread'](function(_0x145691){logger[_0x803a('0x13')](_0x803a('0x27'),_0x4c65e5);logger[_0x803a('0x16')](_0x803a('0x27'),_0x4c65e5,JSON[_0x803a('0x17')](_0x145691));_0x177c3a(_0x145691);})[_0x803a('0x1b')](function(_0x46b03b){logger['error'](_0x803a('0x27'),_0x46b03b[_0x803a('0x1a')],_0x4c65e5);_0x562a84(_this[_0x803a('0x18')](0x1f4,_0x46b03b[_0x803a('0x1a')]));});});};
\ No newline at end of file
+var _0xa777=['ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','update','body','options','raw','attributes','UpdateOpenchannelInteraction','catch','OpenchannelInteraction','find','where'];(function(_0xd84cb2,_0x52d3fa){var _0x1591e6=function(_0x155617){while(--_0x155617){_0xd84cb2['push'](_0xd84cb2['shift']());}};_0x1591e6(++_0x52d3fa);}(_0xa777,0x194));var _0x7a77=function(_0x87903,_0x59c45e){_0x87903=_0x87903-0x0;var _0x15376d=_0xa777[_0x87903];return _0x15376d;};'use strict';var _=require(_0x7a77('0x0'));var util=require(_0x7a77('0x1'));var moment=require(_0x7a77('0x2'));var BPromise=require(_0x7a77('0x3'));var rs=require(_0x7a77('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7a77('0x5'));var logger=require(_0x7a77('0x6'))(_0x7a77('0x7'));var config=require(_0x7a77('0x8'));var jayson=require(_0x7a77('0x9'));var client=jayson['client'][_0x7a77('0xa')]({'port':0x232a});config['redis']=_[_0x7a77('0xb')](config[_0x7a77('0xc')],{'host':_0x7a77('0xd'),'port':0x18eb});var socket=require(_0x7a77('0xe'))(new Redis(config[_0x7a77('0xc')]));require('./openchannelInteraction.socket')[_0x7a77('0xf')](socket);function respondWithRpcPromise(_0x2ee704,_0xafc4d5,_0x1ba05a){return new BPromise(function(_0x258b0e,_0x5e1446){return client['request'](_0x2ee704,_0x1ba05a)[_0x7a77('0x10')](function(_0x2b08ea){logger[_0x7a77('0x11')](_0x7a77('0x12'),_0xafc4d5,_0x7a77('0x13'));logger[_0x7a77('0x14')](_0x7a77('0x15'),_0xafc4d5,_0x7a77('0x13'),JSON[_0x7a77('0x16')](_0x2b08ea));if(_0x2b08ea[_0x7a77('0x17')]){if(_0x2b08ea['error']['code']===0x1f4){logger[_0x7a77('0x17')](_0x7a77('0x12'),_0xafc4d5,_0x2b08ea['error'][_0x7a77('0x18')]);return _0x5e1446(_0x2b08ea[_0x7a77('0x17')][_0x7a77('0x18')]);}logger['error'](_0x7a77('0x12'),_0xafc4d5,_0x2b08ea[_0x7a77('0x17')]['message']);return _0x258b0e(_0x2b08ea[_0x7a77('0x17')][_0x7a77('0x18')]);}else{logger[_0x7a77('0x11')](_0x7a77('0x12'),_0xafc4d5,_0x7a77('0x13'));_0x258b0e(_0x2b08ea[_0x7a77('0x19')][_0x7a77('0x18')]);}})['catch'](function(_0x8d32aa){logger[_0x7a77('0x17')](_0x7a77('0x12'),_0xafc4d5,_0x8d32aa);_0x5e1446(_0x8d32aa);});});}exports['UpdateOpenchannelInteraction']=function(_0x520506){var _0x3df827=this;return new Promise(function(_0x52b913,_0x230239){return db['OpenchannelInteraction'][_0x7a77('0x1a')](_0x520506[_0x7a77('0x1b')],{'raw':_0x520506[_0x7a77('0x1c')]?_0x520506['options'][_0x7a77('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x520506['options']?_0x520506[_0x7a77('0x1c')]['where']||null:null,'attributes':_0x520506['options']?_0x520506[_0x7a77('0x1c')][_0x7a77('0x1e')]||null:null,'limit':_0x520506[_0x7a77('0x1c')]?_0x520506[_0x7a77('0x1c')]['limit']||null:null})[_0x7a77('0x10')](function(_0x2d6ce0){logger[_0x7a77('0x11')](_0x7a77('0x1f'),_0x520506);logger[_0x7a77('0x14')](_0x7a77('0x1f'),_0x520506,JSON[_0x7a77('0x16')](_0x2d6ce0));_0x52b913(_0x2d6ce0);})[_0x7a77('0x20')](function(_0x547f82){logger[_0x7a77('0x17')](_0x7a77('0x1f'),_0x547f82[_0x7a77('0x18')],_0x520506);_0x230239(_0x3df827[_0x7a77('0x17')](0x1f4,_0x547f82['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x3415b9){return new Promise(function(_0x24431d,_0xae0afc){return db[_0x7a77('0x21')][_0x7a77('0x22')]({'where':_0x3415b9['options']?_0x3415b9[_0x7a77('0x1c')][_0x7a77('0x23')]||null:null})[_0x7a77('0x10')](function(_0x3f1057){if(_0x3f1057){return _0x3f1057['addTags'](_0x3415b9['body'][_0x7a77('0x24')],_[_0x7a77('0x25')](_0x3415b9[_0x7a77('0x1b')],['ids','id'])||{});}})[_0x7a77('0x26')](function(_0x556a45){logger['info'](_0x7a77('0x27'),_0x3415b9);logger[_0x7a77('0x14')]('AddTags',_0x3415b9,JSON[_0x7a77('0x16')](_0x556a45));_0x24431d(_0x556a45);})[_0x7a77('0x20')](function(_0x1437a5){logger[_0x7a77('0x17')](_0x7a77('0x27'),_0x1437a5[_0x7a77('0x18')],_0x3415b9);_0xae0afc(_this[_0x7a77('0x17')](0x1f4,_0x1437a5['message']));});});};
\ No newline at end of file
index 614f1b7..e6d2072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa942=['openchannelInteraction:','save','update','register','length'];(function(_0x51e080,_0x1e2060){var _0x2b7b55=function(_0x9d7c7d){while(--_0x9d7c7d){_0x51e080['push'](_0x51e080['shift']());}};_0x2b7b55(++_0x1e2060);}(_0xa942,0x16e));var _0x2a94=function(_0x282a57,_0x108cf8){_0x282a57=_0x282a57-0x0;var _0x5a5b45=_0xa942[_0x282a57];return _0x5a5b45;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x2a94('0x0'),'remove',_0x2a94('0x1')];function createListener(_0x9bcb3b,_0x1e09b4){return function(_0x3f2c4c){_0x1e09b4['emit'](_0x9bcb3b,_0x3f2c4c);};}function removeListener(_0x262a6c,_0xa908dc){return function(){OpenchannelInteractionEvents['removeListener'](_0x262a6c,_0xa908dc);};}exports[_0x2a94('0x2')]=function(_0x4b5740){for(var _0x38c075=0x0,_0x484158=events[_0x2a94('0x3')];_0x38c075<_0x484158;_0x38c075++){var _0xdec33f=events[_0x38c075];var _0xc700c7=createListener(_0x2a94('0x4')+_0xdec33f,_0x4b5740);OpenchannelInteractionEvents['on'](_0xdec33f,_0xc700c7);}};
\ No newline at end of file
+var _0x8c48=['save','update','emit','removeListener','register','length','openchannelInteraction:'];(function(_0x49b076,_0x4fb74e){var _0xa3609=function(_0x474e71){while(--_0x474e71){_0x49b076['push'](_0x49b076['shift']());}};_0xa3609(++_0x4fb74e);}(_0x8c48,0x1f1));var _0x88c4=function(_0x19be0d,_0x58b924){_0x19be0d=_0x19be0d-0x0;var _0x5d93e6=_0x8c48[_0x19be0d];return _0x5d93e6;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x88c4('0x0'),'remove',_0x88c4('0x1')];function createListener(_0x13df9d,_0x8c74c2){return function(_0x4d1639){_0x8c74c2[_0x88c4('0x2')](_0x13df9d,_0x4d1639);};}function removeListener(_0xa964c8,_0x2d7c5a){return function(){OpenchannelInteractionEvents[_0x88c4('0x3')](_0xa964c8,_0x2d7c5a);};}exports[_0x88c4('0x4')]=function(_0xa1ae01){for(var _0x126355=0x0,_0x4a5549=events[_0x88c4('0x5')];_0x126355<_0x4a5549;_0x126355++){var _0x238f48=events[_0x126355];var _0x15a330=createListener(_0x88c4('0x6')+_0x238f48,_0xa1ae01);OpenchannelInteractionEvents['on'](_0x238f48,_0x15a330);}};
\ No newline at end of file
index fd85fb0..e0a1f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['index','get','/describe','/:id','show','tracked','openchannel','create','put','update','accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelMessage.controller','isAuthenticated'];(function(_0x522e29,_0x51404d){var _0x193bc6=function(_0x1de668){while(--_0x1de668){_0x522e29['push'](_0x522e29['shift']());}};_0x193bc6(++_0x51404d);}(_0x9c44,0x178));var _0x49c4=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x9c44[_0x2064e5];return _0x21a233;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
+var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x3902c1,_0x1c9eb2){var _0x1266cc=function(_0x50c2c5){while(--_0x50c2c5){_0x3902c1['push'](_0x3902c1['shift']());}};_0x1266cc(++_0x1c9eb2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0xcb91[_0x4c440b];return _0x2d48cf;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
index a8bd1de..fccf7f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5fb=['medium','BOOLEAN','out','DATE','STRING','TEXT','sequelize','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xe5fb,0xce));var _0xbe5f=function(_0x95411e,_0x38b4c3){_0x95411e=_0x95411e-0x0;var _0x2c8718=_0xe5fb[_0x95411e];return _0x2c8718;};'use strict';var Sequelize=require(_0xbe5f('0x0'));module[_0xbe5f('0x1')]={'body':{'type':Sequelize['TEXT'](_0xbe5f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xbe5f('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xbe5f('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xbe5f('0x4')),'defaultValue':_0xbe5f('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0xbe5f('0x5')]},'providerName':{'type':Sequelize[_0xbe5f('0x6')]},'providerResponse':{'type':Sequelize[_0xbe5f('0x7')]}};
\ No newline at end of file
+var _0x2ca5=['medium','BOOLEAN','out','DATE','STRING','exports','TEXT'];(function(_0x52b174,_0x3ac056){var _0x1e3644=function(_0x5b9f16){while(--_0x5b9f16){_0x52b174['push'](_0x52b174['shift']());}};_0x1e3644(++_0x3ac056);}(_0x2ca5,0x108));var _0x52ca=function(_0x4a80f6,_0x3d43ad){_0x4a80f6=_0x4a80f6-0x0;var _0x5bc762=_0x2ca5[_0x4a80f6];return _0x5bc762;};'use strict';var Sequelize=require('sequelize');module[_0x52ca('0x0')]={'body':{'type':Sequelize[_0x52ca('0x1')](_0x52ca('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x52ca('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x52ca('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x52ca('0x5')]},'providerName':{'type':Sequelize[_0x52ca('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 9e02845..f02978f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dda=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','client','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','end','status','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','sendStatus','stack','send','index','map','OpenchannelMessage','rawAttributes','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','find','create','body','describe','openchannel-interactions','accept','read','readAt','format','UserId','agent','get','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','name','fullname','email','interface','SIP/%s','channel','event','EventManager','acceptmessage','reject','OpenchannelInteraction','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','User','rejectmessage','eml-format','rimraf','fast-json-patch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6dda,0x17a));var _0xa6dd=function(_0x43de5c,_0x281ca7){_0x43de5c=_0x43de5c-0x0;var _0x37d72e=_0x6dda[_0x43de5c];return _0x37d72e;};'use strict';var emlformat=require(_0xa6dd('0x0'));var rimraf=require(_0xa6dd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa6dd('0x2'));var rp=require(_0xa6dd('0x3'));var moment=require(_0xa6dd('0x4'));var BPromise=require(_0xa6dd('0x5'));var Mustache=require(_0xa6dd('0x6'));var util=require(_0xa6dd('0x7'));var path=require(_0xa6dd('0x8'));var sox=require(_0xa6dd('0x9'));var csv=require(_0xa6dd('0xa'));var ejs=require(_0xa6dd('0xb'));var fs=require('fs');var fs_extra=require(_0xa6dd('0xc'));var _=require('lodash');var squel=require(_0xa6dd('0xd'));var crypto=require(_0xa6dd('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa6dd('0xf'));var toCsv=require(_0xa6dd('0xa'));var querystring=require(_0xa6dd('0x10'));var Papa=require(_0xa6dd('0x11'));var Redis=require(_0xa6dd('0x12'));var authService=require(_0xa6dd('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xa6dd('0x14'));var hardwareService=require(_0xa6dd('0x15'));var logger=require(_0xa6dd('0x16'))(_0xa6dd('0x17'));var utils=require(_0xa6dd('0x18'));var config=require(_0xa6dd('0x19'));var licenseUtil=require(_0xa6dd('0x1a'));var db=require('../../mysqldb')['db'];config[_0xa6dd('0x1b')]=_[_0xa6dd('0x1c')](config[_0xa6dd('0x1b')],{'host':_0xa6dd('0x1d'),'port':0x18eb});var socket=require(_0xa6dd('0x1e'))(new Redis(config['redis']));require('./openchannelMessage.socket')[_0xa6dd('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xa6dd('0x20')]['http']({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xb9c368,_0x4fe167,_0x2c24ca,_0x1defa8){return new BPromise(function(_0x452bb0,_0x4bae2f){var _0x2c1ea4=_0x1defa8||client;return _0x2c1ea4['request'](_0xb9c368,_0x2c24ca)['then'](function(_0x29002c){logger[_0xa6dd('0x21')](_0xa6dd('0x22'),_0x4fe167,_0xa6dd('0x23'));logger[_0xa6dd('0x24')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x4fe167,_0xa6dd('0x23'),JSON[_0xa6dd('0x25')](_0x29002c));if(_0x29002c[_0xa6dd('0x26')]){if(_0x29002c[_0xa6dd('0x26')][_0xa6dd('0x27')]===0x1f4){logger[_0xa6dd('0x26')]('OpenchannelMessage,\x20%s,\x20%s',_0x4fe167,_0x29002c[_0xa6dd('0x26')]['message']);return _0x4bae2f(_0x29002c[_0xa6dd('0x26')][_0xa6dd('0x28')]);}logger['error'](_0xa6dd('0x22'),_0x4fe167,_0x29002c['error'][_0xa6dd('0x28')]);return _0x452bb0(_0x29002c[_0xa6dd('0x26')][_0xa6dd('0x28')]);}else{logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x4fe167,_0xa6dd('0x23'));_0x452bb0(_0x29002c[_0xa6dd('0x29')][_0xa6dd('0x28')]);}})[_0xa6dd('0x2a')](function(_0x5d576e){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x4fe167,_0x5d576e);_0x4bae2f(_0x5d576e);});});}function respondWithStatusCode(_0x70c71,_0x379db9){_0x379db9=_0x379db9||0xcc;return function(_0x490baa){if(_0x490baa){return _0x70c71['sendStatus'](_0x379db9);}return _0x70c71['status'](_0x379db9)[_0xa6dd('0x2b')]();};}function respondWithResult(_0x26602d,_0x216b10){_0x216b10=_0x216b10||0xc8;return function(_0x17572c){if(_0x17572c){return _0x26602d[_0xa6dd('0x2c')](_0x216b10)[_0xa6dd('0x2d')](_0x17572c);}};}function respondWithFilteredResult(_0x15b3ac,_0x5e548b){return function(_0x1ac4fe){if(_0x1ac4fe){var _0xe2079a=typeof _0x5e548b[_0xa6dd('0x2e')]===_0xa6dd('0x2f')&&typeof _0x5e548b[_0xa6dd('0x30')]==='undefined';var _0x39e98f=_0x1ac4fe[_0xa6dd('0x31')];var _0x163805=_0xe2079a?0x0:_0x5e548b[_0xa6dd('0x2e')];var _0x24a881=_0xe2079a?_0x1ac4fe[_0xa6dd('0x31')]:_0x5e548b[_0xa6dd('0x2e')]+_0x5e548b[_0xa6dd('0x30')];var _0x260fc4;if(_0x24a881>=_0x39e98f){_0x24a881=_0x39e98f;_0x260fc4=0xc8;}else{_0x260fc4=0xce;}_0x15b3ac[_0xa6dd('0x2c')](_0x260fc4);return _0x15b3ac['set'](_0xa6dd('0x32'),_0x163805+'-'+_0x24a881+'/'+_0x39e98f)[_0xa6dd('0x2d')](_0x1ac4fe);}return null;};}function patchUpdates(_0x40b6de){return function(_0x17e73d){try{jsonpatch['apply'](_0x17e73d,_0x40b6de,!![]);}catch(_0x1c289f){return BPromise['reject'](_0x1c289f);}return _0x17e73d[_0xa6dd('0x33')]();};}function saveUpdates(_0x3cee85,_0x1fbc09){return function(_0x37f4b6){if(_0x37f4b6){return _0x37f4b6[_0xa6dd('0x34')](_0x3cee85)[_0xa6dd('0x35')](function(_0xa4f759){return _0xa4f759;});}return null;};}function removeEntity(_0xce263f,_0xc81437){return function(_0x38b9f0){if(_0x38b9f0){return _0x38b9f0[_0xa6dd('0x36')]()['then'](function(){_0xce263f[_0xa6dd('0x2c')](0xcc)[_0xa6dd('0x2b')]();});}};}function handleEntityNotFound(_0x5bcc79,_0x460c7e){return function(_0x3b04c1){if(!_0x3b04c1){_0x5bcc79[_0xa6dd('0x37')](0x194);}return _0x3b04c1;};}function handleError(_0x290e73,_0x46e7cf){_0x46e7cf=_0x46e7cf||0x1f4;return function(_0x1dd9f5){logger[_0xa6dd('0x26')](_0x1dd9f5[_0xa6dd('0x38')]);if(_0x1dd9f5['name']){delete _0x1dd9f5['name'];}_0x290e73[_0xa6dd('0x2c')](_0x46e7cf)[_0xa6dd('0x39')](_0x1dd9f5);};}exports[_0xa6dd('0x3a')]=function(_0x491a86,_0x58ae12){var _0x3a6304={},_0xa01580={},_0x9c72a7={'count':0x0,'rows':[]};var _0x5d93b6=_[_0xa6dd('0x3b')](db[_0xa6dd('0x3c')][_0xa6dd('0x3d')],function(_0x5d78e2){return{'name':_0x5d78e2['fieldName'],'type':_0x5d78e2['type'][_0xa6dd('0x3e')]};});_0xa01580[_0xa6dd('0x3f')]=_[_0xa6dd('0x3b')](_0x5d93b6,'name');_0xa01580['query']=_[_0xa6dd('0x40')](_0x491a86[_0xa6dd('0x41')]);_0xa01580['filters']=_[_0xa6dd('0x42')](_0xa01580[_0xa6dd('0x3f')],_0xa01580['query']);_0x3a6304[_0xa6dd('0x43')]=_[_0xa6dd('0x42')](_0xa01580[_0xa6dd('0x3f')],qs[_0xa6dd('0x44')](_0x491a86[_0xa6dd('0x41')][_0xa6dd('0x44')]));_0x3a6304['attributes']=_0x3a6304['attributes'][_0xa6dd('0x45')]?_0x3a6304[_0xa6dd('0x43')]:_0xa01580[_0xa6dd('0x3f')];if(!_0x491a86['query'][_0xa6dd('0x46')](_0xa6dd('0x47'))){_0x3a6304[_0xa6dd('0x30')]=qs[_0xa6dd('0x30')](_0x491a86[_0xa6dd('0x41')][_0xa6dd('0x30')]);_0x3a6304[_0xa6dd('0x2e')]=qs['offset'](_0x491a86['query'][_0xa6dd('0x2e')]);}_0x3a6304[_0xa6dd('0x48')]=qs['sort'](_0x491a86[_0xa6dd('0x41')]['sort']);_0x3a6304[_0xa6dd('0x49')]=qs[_0xa6dd('0x4a')](_[_0xa6dd('0x4b')](_0x491a86['query'],_0xa01580['filters']),_0x5d93b6);if(_0x491a86['query'][_0xa6dd('0x4c')]){_0x3a6304[_0xa6dd('0x49')]=_[_0xa6dd('0x4d')](_0x3a6304[_0xa6dd('0x49')],{'$or':_[_0xa6dd('0x3b')](_0x5d93b6,function(_0x10af5f){if(_0x10af5f[_0xa6dd('0x4e')]!==_0xa6dd('0x4f')){var _0x48a5aa={};_0x48a5aa[_0x10af5f['name']]={'$like':'%'+_0x491a86[_0xa6dd('0x41')][_0xa6dd('0x4c')]+'%'};return _0x48a5aa;}})});}_0x3a6304=_[_0xa6dd('0x4d')]({},_0x3a6304,_0x491a86[_0xa6dd('0x50')]);var _0x2d50fa={'where':_0x3a6304[_0xa6dd('0x49')]};return db[_0xa6dd('0x3c')][_0xa6dd('0x31')](_0x2d50fa)[_0xa6dd('0x35')](function(_0x42ff54){_0x9c72a7['count']=_0x42ff54;if(_0x491a86['query'][_0xa6dd('0x51')]){_0x3a6304[_0xa6dd('0x52')]=[{'all':!![]}];}return db[_0xa6dd('0x3c')][_0xa6dd('0x53')](_0x3a6304);})[_0xa6dd('0x35')](function(_0x1a064c){_0x9c72a7['rows']=_0x1a064c;return _0x9c72a7;})[_0xa6dd('0x35')](respondWithFilteredResult(_0x58ae12,_0x3a6304))[_0xa6dd('0x2a')](handleError(_0x58ae12,null));};exports['show']=function(_0xe5e4c1,_0xe32650){var _0x28cb97={'raw':!![],'where':{'id':_0xe5e4c1['params']['id']}},_0x9d1610={};_0x9d1610[_0xa6dd('0x3f')]=_[_0xa6dd('0x40')](db[_0xa6dd('0x3c')][_0xa6dd('0x3d')]);_0x9d1610[_0xa6dd('0x41')]=_[_0xa6dd('0x40')](_0xe5e4c1[_0xa6dd('0x41')]);_0x9d1610[_0xa6dd('0x4a')]=_[_0xa6dd('0x42')](_0x9d1610[_0xa6dd('0x3f')],_0x9d1610[_0xa6dd('0x41')]);_0x28cb97[_0xa6dd('0x43')]=_[_0xa6dd('0x42')](_0x9d1610[_0xa6dd('0x3f')],qs['fields'](_0xe5e4c1['query'][_0xa6dd('0x44')]));_0x28cb97[_0xa6dd('0x43')]=_0x28cb97[_0xa6dd('0x43')]['length']?_0x28cb97[_0xa6dd('0x43')]:_0x9d1610[_0xa6dd('0x3f')];if(_0xe5e4c1[_0xa6dd('0x41')][_0xa6dd('0x51')]){_0x28cb97[_0xa6dd('0x52')]=[{'all':!![]}];}_0x28cb97=_[_0xa6dd('0x4d')]({},_0x28cb97,_0xe5e4c1['options']);return db[_0xa6dd('0x3c')][_0xa6dd('0x54')](_0x28cb97)[_0xa6dd('0x35')](handleEntityNotFound(_0xe32650,null))['then'](respondWithResult(_0xe32650,null))[_0xa6dd('0x2a')](handleError(_0xe32650,null));};exports[_0xa6dd('0x55')]=function(_0x56e6c6,_0x584b1f){return db[_0xa6dd('0x3c')][_0xa6dd('0x55')](_0x56e6c6['body'],{})[_0xa6dd('0x35')](respondWithResult(_0x584b1f,0xc9))[_0xa6dd('0x2a')](handleError(_0x584b1f,null));};exports[_0xa6dd('0x34')]=function(_0x1e78b4,_0x21a18b){if(_0x1e78b4[_0xa6dd('0x56')]['id']){delete _0x1e78b4['body']['id'];}return db[_0xa6dd('0x3c')]['find']({'where':{'id':_0x1e78b4['params']['id']}})[_0xa6dd('0x35')](handleEntityNotFound(_0x21a18b,null))[_0xa6dd('0x35')](saveUpdates(_0x1e78b4[_0xa6dd('0x56')],null))[_0xa6dd('0x35')](respondWithResult(_0x21a18b,null))[_0xa6dd('0x2a')](handleError(_0x21a18b,null));};exports['destroy']=function(_0x138ad9,_0x3ce892){return db[_0xa6dd('0x3c')][_0xa6dd('0x54')]({'where':{'id':_0x138ad9['params']['id']}})['then'](handleEntityNotFound(_0x3ce892,null))[_0xa6dd('0x35')](removeEntity(_0x3ce892,null))[_0xa6dd('0x2a')](handleError(_0x3ce892,null));};exports[_0xa6dd('0x57')]=function(_0x3a9718,_0xf35e08){return db[_0xa6dd('0x3c')][_0xa6dd('0x57')]()[_0xa6dd('0x35')](respondWithResult(_0xf35e08,null))[_0xa6dd('0x2a')](handleError(_0xf35e08,null));};var interaction_log=require(_0xa6dd('0x16'))(_0xa6dd('0x58'));exports[_0xa6dd('0x59')]=function(_0x228bca,_0x49fc92,_0x19fa79){var _0x1b65d0={'agent':{},'channel':'openchannel'};if(_0x228bca[_0xa6dd('0x56')]['id']){delete _0x228bca['body']['id'];}_0x228bca[_0xa6dd('0x56')][_0xa6dd('0x5a')]=!![];_0x228bca[_0xa6dd('0x56')][_0xa6dd('0x5b')]=moment()[_0xa6dd('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0x228bca[_0xa6dd('0x56')]['UserId']=_0x228bca[_0xa6dd('0x56')][_0xa6dd('0x5d')]||_0x228bca['user']['id'];_0x1b65d0[_0xa6dd('0x5e')]['id']=_0x228bca[_0xa6dd('0x56')][_0xa6dd('0x5d')];return db['OpenchannelMessage'][_0xa6dd('0x54')]({'where':{'id':_0x228bca['params']['id'],'UserId':null}})[_0xa6dd('0x35')](handleEntityNotFound(_0x49fc92,null))[_0xa6dd('0x35')](saveUpdates(_0x228bca[_0xa6dd('0x56')],null))['then'](function(_0x5e6f17){if(_0x5e6f17){_0x1b65d0[_0xa6dd('0x28')]=_0x5e6f17[_0xa6dd('0x5f')]({'plain':!![]});return db['OpenchannelInteraction'][_0xa6dd('0x54')]({'where':{'id':_0x5e6f17['OpenchannelInteractionId']}});}return null;})[_0xa6dd('0x35')](handleEntityNotFound(_0x49fc92,null))[_0xa6dd('0x35')](function(_0x3f70ff){if(_0x3f70ff){return _0x3f70ff[_0xa6dd('0x34')]({'UserId':_0x228bca[_0xa6dd('0x56')]['UserId'],'read1stAt':_['isNil'](_0x3f70ff[_0xa6dd('0x60')])?moment()['format'](_0xa6dd('0x61')):undefined});}return null;})[_0xa6dd('0x35')](function(_0x2f8516){if(_0x2f8516){_0x1b65d0[_0xa6dd('0x62')]=_0x2f8516[_0xa6dd('0x5f')]({'plain':!![]});interaction_log[_0xa6dd('0x21')](_0xa6dd('0x63'),_0x228bca[_0xa6dd('0x64')]['id'],_0x228bca['user']['name'],_0x228bca[_0xa6dd('0x64')][_0xa6dd('0x65')],_0x1b65d0[_0xa6dd('0x62')]['id'],_0x228bca[_0xa6dd('0x56')]?JSON[_0xa6dd('0x25')](_0x228bca[_0xa6dd('0x56')]):'null');return respondWithRpcPromise(_0xa6dd('0x66'),_0xa6dd('0x67'),_0x1b65d0);}return null;})[_0xa6dd('0x35')](function(_0x3a9e47){var _0x268626=_0xa6dd('0x68')+_0x3a9e47[_0xa6dd('0x28')][_0xa6dd('0x69')];return db[_0xa6dd('0x6a')][_0xa6dd('0x41')](_0x268626,{'type':db[_0xa6dd('0x6b')][_0xa6dd('0x6c')][_0xa6dd('0x6d')],'raw':!![]})['then'](function(_0x4b0f0f){return _0x4b0f0f;});})[_0xa6dd('0x35')](function(_0x2a3b31){if(_0x2a3b31){_0x1b65d0[_0xa6dd('0x28')][_0xa6dd('0x6e')]=_0x2a3b31[0x0];if(!_0x228bca[_0xa6dd('0x56')][_0xa6dd('0x5d')])return;return db['User'][_0xa6dd('0x54')]({'where':{'id':_0x228bca[_0xa6dd('0x56')]['UserId'],'role':'agent'},'attributes':['id',_0xa6dd('0x6f'),_0xa6dd('0x70'),_0xa6dd('0x71'),'internal'],'raw':!![]});}return null;})[_0xa6dd('0x35')](function(_0x5eba40){if(!_0x5eba40)return null;_0x1b65d0[_0xa6dd('0x28')][_0xa6dd('0x5e')]=_0x5eba40;return _0x1b65d0;})[_0xa6dd('0x35')](function(_0x3363f7){if(_0x3363f7){if(_0x228bca[_0xa6dd('0x56')]['manual']){_0x1b65d0[_0xa6dd('0x28')][_0xa6dd('0x72')]=util['format'](_0xa6dd('0x73'),_0x228bca[_0xa6dd('0x64')]['name']);_0x1b65d0[_0xa6dd('0x28')][_0xa6dd('0x74')]=_0x1b65d0[_0xa6dd('0x74')];_0x1b65d0['message'][_0xa6dd('0x75')]=_0xa6dd('0x59');return respondWithRpcPromise(_0xa6dd('0x76'),_0xa6dd('0x76'),{'event':_0xa6dd('0x77'),'message':_0x1b65d0[_0xa6dd('0x28')]},client9002)[_0xa6dd('0x35')](function(){return _0x1b65d0;});}return _0x1b65d0;}return null;})[_0xa6dd('0x35')](respondWithResult(_0x49fc92,null))['catch'](handleError(_0x49fc92,null));};var interaction_log=require(_0xa6dd('0x16'))(_0xa6dd('0x58'));exports[_0xa6dd('0x78')]=function(_0x2c0bf4,_0x1ac582,_0x454911){var _0x1d4631={'agent':{},'channel':'openchannel'};if(_0x2c0bf4[_0xa6dd('0x56')]['id']){delete _0x2c0bf4[_0xa6dd('0x56')]['id'];}_0x2c0bf4[_0xa6dd('0x56')]['UserId']=_0x2c0bf4[_0xa6dd('0x56')][_0xa6dd('0x5d')]||_0x2c0bf4['user']['id'];_0x1d4631[_0xa6dd('0x5e')]['id']=_0x2c0bf4[_0xa6dd('0x56')][_0xa6dd('0x5d')];return db[_0xa6dd('0x3c')]['find']({'where':{'id':_0x2c0bf4['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1ac582,null))[_0xa6dd('0x35')](function(_0x41f86f){if(_0x41f86f){_0x1d4631[_0xa6dd('0x28')]=_0x41f86f[_0xa6dd('0x5f')]({'plain':!![]});return db[_0xa6dd('0x79')][_0xa6dd('0x54')]({'where':{'id':_0x41f86f[_0xa6dd('0x7a')]}});}return null;})[_0xa6dd('0x35')](handleEntityNotFound(_0x1ac582,null))['then'](function(_0x593e72){if(_0x593e72){_0x1d4631[_0xa6dd('0x62')]=_0x593e72[_0xa6dd('0x5f')]({'plain':!![]});interaction_log['info'](_0xa6dd('0x7b'),_0x2c0bf4[_0xa6dd('0x64')]['id'],_0x2c0bf4[_0xa6dd('0x64')][_0xa6dd('0x6f')],_0x2c0bf4['user'][_0xa6dd('0x65')],_0x1d4631[_0xa6dd('0x62')]['id'],_0x2c0bf4['body']?JSON[_0xa6dd('0x25')](_0x2c0bf4['body']):'null');return respondWithRpcPromise(_0xa6dd('0x7c'),'rejectMessage',_0x1d4631);}return null;})[_0xa6dd('0x35')](function(_0x92753a){var _0x5d0375=_0xa6dd('0x68')+_0x92753a[_0xa6dd('0x28')][_0xa6dd('0x69')];return db['sequelize']['query'](_0x5d0375,{'type':db[_0xa6dd('0x6b')][_0xa6dd('0x6c')]['SELECT'],'raw':!![]})['then'](function(_0x38ee34){return _0x38ee34;});})[_0xa6dd('0x35')](function(_0xd1447f){if(_0xd1447f){_0x1d4631[_0xa6dd('0x28')]['contact']=_0xd1447f[0x0];if(!_0x2c0bf4[_0xa6dd('0x56')][_0xa6dd('0x5d')])return;return db[_0xa6dd('0x7d')][_0xa6dd('0x54')]({'where':{'id':_0x2c0bf4[_0xa6dd('0x56')][_0xa6dd('0x5d')],'role':_0xa6dd('0x5e')},'attributes':['id','name',_0xa6dd('0x70'),_0xa6dd('0x71'),'internal'],'raw':!![]});}return null;})['then'](function(_0x438bc8){if(!_0x438bc8)return null;_0x1d4631[_0xa6dd('0x28')]['agent']=_0x438bc8;return _0x1d4631;})[_0xa6dd('0x35')](function(_0xfd67d0){if(_0xfd67d0){_0xfd67d0[_0xa6dd('0x28')]['interface']=util['format'](_0xa6dd('0x73'),_0x2c0bf4['user'][_0xa6dd('0x6f')]);_0xfd67d0[_0xa6dd('0x28')][_0xa6dd('0x74')]=_0x1d4631[_0xa6dd('0x74')];_0xfd67d0['message'][_0xa6dd('0x75')]=_0xa6dd('0x78');respondWithRpcPromise('EventManager',_0xa6dd('0x76'),{'event':_0xa6dd('0x7e'),'message':_0xfd67d0['message']},client9002);return _0x1d4631;}return null;})[_0xa6dd('0x35')](respondWithResult(_0x1ac582,null))[_0xa6dd('0x2a')](handleError(_0x1ac582,null));};
\ No newline at end of file
+var _0xefe9=['rejectmessage','eml-format','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','redis','defaults','localhost','socket.io-emitter','register','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','stack','name','send','map','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','OpenchannelMessage','include','findAll','rows','show','params','keys','rawAttributes','find','create','body','describe','../../config/logger','openchannel-interactions','openchannel','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','format','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','email','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','User','fullname','motionChannel'];(function(_0x26c532,_0x35404e){var _0x5b5a01=function(_0x56b6ba){while(--_0x56b6ba){_0x26c532['push'](_0x26c532['shift']());}};_0x5b5a01(++_0x35404e);}(_0xefe9,0x83));var _0x9efe=function(_0x7bd4f5,_0x3a109c){_0x7bd4f5=_0x7bd4f5-0x0;var _0x5a670a=_0xefe9[_0x7bd4f5];return _0x5a670a;};'use strict';var emlformat=require(_0x9efe('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9efe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9efe('0x2'));var moment=require(_0x9efe('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9efe('0x4'));var util=require('util');var path=require(_0x9efe('0x5'));var sox=require(_0x9efe('0x6'));var csv=require(_0x9efe('0x7'));var ejs=require(_0x9efe('0x8'));var fs=require('fs');var fs_extra=require(_0x9efe('0x9'));var _=require(_0x9efe('0xa'));var squel=require(_0x9efe('0xb'));var crypto=require('crypto');var jsforce=require(_0x9efe('0xc'));var deskjs=require(_0x9efe('0xd'));var toCsv=require(_0x9efe('0x7'));var querystring=require(_0x9efe('0xe'));var Papa=require(_0x9efe('0xf'));var Redis=require(_0x9efe('0x10'));var authService=require(_0x9efe('0x11'));var qs=require(_0x9efe('0x12'));var as=require(_0x9efe('0x13'));var hardwareService=require(_0x9efe('0x14'));var logger=require('../../config/logger')(_0x9efe('0x15'));var utils=require(_0x9efe('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x9efe('0x17')]=_[_0x9efe('0x18')](config[_0x9efe('0x17')],{'host':_0x9efe('0x19'),'port':0x18eb});var socket=require(_0x9efe('0x1a'))(new Redis(config[_0x9efe('0x17')]));require('./openchannelMessage.socket')[_0x9efe('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9efe('0x1c')][_0x9efe('0x1d')]({'port':0x232c});var client9002=jayson[_0x9efe('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46d54b,_0x31e30b,_0x1a1d67,_0x10ea32){return new BPromise(function(_0x529357,_0x4da903){var _0x1eacf6=_0x10ea32||client;return _0x1eacf6[_0x9efe('0x1e')](_0x46d54b,_0x1a1d67)['then'](function(_0x579c45){logger[_0x9efe('0x1f')](_0x9efe('0x20'),_0x31e30b,'request\x20sent');logger['debug'](_0x9efe('0x21'),_0x31e30b,_0x9efe('0x22'),JSON[_0x9efe('0x23')](_0x579c45));if(_0x579c45[_0x9efe('0x24')]){if(_0x579c45[_0x9efe('0x24')][_0x9efe('0x25')]===0x1f4){logger[_0x9efe('0x24')](_0x9efe('0x20'),_0x31e30b,_0x579c45['error'][_0x9efe('0x26')]);return _0x4da903(_0x579c45[_0x9efe('0x24')][_0x9efe('0x26')]);}logger[_0x9efe('0x24')](_0x9efe('0x20'),_0x31e30b,_0x579c45[_0x9efe('0x24')][_0x9efe('0x26')]);return _0x529357(_0x579c45['error'][_0x9efe('0x26')]);}else{logger[_0x9efe('0x1f')](_0x9efe('0x20'),_0x31e30b,'request\x20sent');_0x529357(_0x579c45[_0x9efe('0x27')]['message']);}})[_0x9efe('0x28')](function(_0x52ed6e){logger[_0x9efe('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x31e30b,_0x52ed6e);_0x4da903(_0x52ed6e);});});}function respondWithStatusCode(_0xd10d5f,_0x36e81e){_0x36e81e=_0x36e81e||0xcc;return function(_0x9fd63b){if(_0x9fd63b){return _0xd10d5f[_0x9efe('0x29')](_0x36e81e);}return _0xd10d5f['status'](_0x36e81e)[_0x9efe('0x2a')]();};}function respondWithResult(_0x3ceb4a,_0x2e0ecc){_0x2e0ecc=_0x2e0ecc||0xc8;return function(_0x4fa63b){if(_0x4fa63b){return _0x3ceb4a[_0x9efe('0x2b')](_0x2e0ecc)['json'](_0x4fa63b);}};}function respondWithFilteredResult(_0x3d0f6c,_0x537419){return function(_0x5e07cb){if(_0x5e07cb){var _0x160869=typeof _0x537419[_0x9efe('0x2c')]===_0x9efe('0x2d')&&typeof _0x537419[_0x9efe('0x2e')]===_0x9efe('0x2d');var _0x252f3a=_0x5e07cb[_0x9efe('0x2f')];var _0x4234cf=_0x160869?0x0:_0x537419[_0x9efe('0x2c')];var _0x403ca1=_0x160869?_0x5e07cb[_0x9efe('0x2f')]:_0x537419[_0x9efe('0x2c')]+_0x537419[_0x9efe('0x2e')];var _0x4002f1;if(_0x403ca1>=_0x252f3a){_0x403ca1=_0x252f3a;_0x4002f1=0xc8;}else{_0x4002f1=0xce;}_0x3d0f6c[_0x9efe('0x2b')](_0x4002f1);return _0x3d0f6c[_0x9efe('0x30')](_0x9efe('0x31'),_0x4234cf+'-'+_0x403ca1+'/'+_0x252f3a)[_0x9efe('0x32')](_0x5e07cb);}return null;};}function patchUpdates(_0x291bf6){return function(_0x61403e){try{jsonpatch['apply'](_0x61403e,_0x291bf6,!![]);}catch(_0x2912c4){return BPromise[_0x9efe('0x33')](_0x2912c4);}return _0x61403e[_0x9efe('0x34')]();};}function saveUpdates(_0x44b677,_0x224761){return function(_0x736306){if(_0x736306){return _0x736306[_0x9efe('0x35')](_0x44b677)[_0x9efe('0x36')](function(_0x3b7cb1){return _0x3b7cb1;});}return null;};}function removeEntity(_0x1b4711,_0x3df30f){return function(_0x1796ff){if(_0x1796ff){return _0x1796ff[_0x9efe('0x37')]()[_0x9efe('0x36')](function(){_0x1b4711[_0x9efe('0x2b')](0xcc)[_0x9efe('0x2a')]();});}};}function handleEntityNotFound(_0x31a527,_0x368ee8){return function(_0x544fba){if(!_0x544fba){_0x31a527['sendStatus'](0x194);}return _0x544fba;};}function handleError(_0x12924f,_0xcae8dc){_0xcae8dc=_0xcae8dc||0x1f4;return function(_0x486d38){logger[_0x9efe('0x24')](_0x486d38[_0x9efe('0x38')]);if(_0x486d38[_0x9efe('0x39')]){delete _0x486d38[_0x9efe('0x39')];}_0x12924f[_0x9efe('0x2b')](_0xcae8dc)[_0x9efe('0x3a')](_0x486d38);};}exports['index']=function(_0x6727da,_0x283b65){var _0x470437={},_0x17c62d={},_0x1182b0={'count':0x0,'rows':[]};var _0x145fa7=_[_0x9efe('0x3b')](db['OpenchannelMessage']['rawAttributes'],function(_0x546b88){return{'name':_0x546b88[_0x9efe('0x3c')],'type':_0x546b88[_0x9efe('0x3d')][_0x9efe('0x3e')]};});_0x17c62d['model']=_[_0x9efe('0x3b')](_0x145fa7,_0x9efe('0x39'));_0x17c62d['query']=_['keys'](_0x6727da[_0x9efe('0x3f')]);_0x17c62d[_0x9efe('0x40')]=_[_0x9efe('0x41')](_0x17c62d[_0x9efe('0x42')],_0x17c62d['query']);_0x470437[_0x9efe('0x43')]=_[_0x9efe('0x41')](_0x17c62d[_0x9efe('0x42')],qs[_0x9efe('0x44')](_0x6727da[_0x9efe('0x3f')][_0x9efe('0x44')]));_0x470437['attributes']=_0x470437[_0x9efe('0x43')][_0x9efe('0x45')]?_0x470437[_0x9efe('0x43')]:_0x17c62d['model'];if(!_0x6727da[_0x9efe('0x3f')][_0x9efe('0x46')](_0x9efe('0x47'))){_0x470437[_0x9efe('0x2e')]=qs[_0x9efe('0x2e')](_0x6727da[_0x9efe('0x3f')]['limit']);_0x470437[_0x9efe('0x2c')]=qs[_0x9efe('0x2c')](_0x6727da[_0x9efe('0x3f')][_0x9efe('0x2c')]);}_0x470437[_0x9efe('0x48')]=qs['sort'](_0x6727da[_0x9efe('0x3f')][_0x9efe('0x49')]);_0x470437[_0x9efe('0x4a')]=qs[_0x9efe('0x40')](_['pick'](_0x6727da[_0x9efe('0x3f')],_0x17c62d[_0x9efe('0x40')]),_0x145fa7);if(_0x6727da['query'][_0x9efe('0x4b')]){_0x470437['where']=_[_0x9efe('0x4c')](_0x470437[_0x9efe('0x4a')],{'$or':_[_0x9efe('0x3b')](_0x145fa7,function(_0x3e62e7){if(_0x3e62e7[_0x9efe('0x3d')]!==_0x9efe('0x4d')){var _0xbaafc4={};_0xbaafc4[_0x3e62e7[_0x9efe('0x39')]]={'$like':'%'+_0x6727da[_0x9efe('0x3f')][_0x9efe('0x4b')]+'%'};return _0xbaafc4;}})});}_0x470437=_[_0x9efe('0x4c')]({},_0x470437,_0x6727da[_0x9efe('0x4e')]);var _0x45f4d2={'where':_0x470437[_0x9efe('0x4a')]};return db[_0x9efe('0x4f')]['count'](_0x45f4d2)[_0x9efe('0x36')](function(_0x32d6aa){_0x1182b0[_0x9efe('0x2f')]=_0x32d6aa;if(_0x6727da[_0x9efe('0x3f')]['includeAll']){_0x470437[_0x9efe('0x50')]=[{'all':!![]}];}return db[_0x9efe('0x4f')][_0x9efe('0x51')](_0x470437);})[_0x9efe('0x36')](function(_0x2321f7){_0x1182b0[_0x9efe('0x52')]=_0x2321f7;return _0x1182b0;})[_0x9efe('0x36')](respondWithFilteredResult(_0x283b65,_0x470437))['catch'](handleError(_0x283b65,null));};exports[_0x9efe('0x53')]=function(_0x1efffc,_0xf0178f){var _0x16fd74={'raw':!![],'where':{'id':_0x1efffc[_0x9efe('0x54')]['id']}},_0x270652={};_0x270652[_0x9efe('0x42')]=_[_0x9efe('0x55')](db[_0x9efe('0x4f')][_0x9efe('0x56')]);_0x270652['query']=_[_0x9efe('0x55')](_0x1efffc[_0x9efe('0x3f')]);_0x270652[_0x9efe('0x40')]=_[_0x9efe('0x41')](_0x270652[_0x9efe('0x42')],_0x270652['query']);_0x16fd74[_0x9efe('0x43')]=_['intersection'](_0x270652[_0x9efe('0x42')],qs[_0x9efe('0x44')](_0x1efffc[_0x9efe('0x3f')][_0x9efe('0x44')]));_0x16fd74['attributes']=_0x16fd74[_0x9efe('0x43')][_0x9efe('0x45')]?_0x16fd74[_0x9efe('0x43')]:_0x270652[_0x9efe('0x42')];if(_0x1efffc[_0x9efe('0x3f')]['includeAll']){_0x16fd74['include']=[{'all':!![]}];}_0x16fd74=_[_0x9efe('0x4c')]({},_0x16fd74,_0x1efffc['options']);return db['OpenchannelMessage'][_0x9efe('0x57')](_0x16fd74)['then'](handleEntityNotFound(_0xf0178f,null))[_0x9efe('0x36')](respondWithResult(_0xf0178f,null))[_0x9efe('0x28')](handleError(_0xf0178f,null));};exports[_0x9efe('0x58')]=function(_0x4ecf2b,_0x1fdcc1){return db[_0x9efe('0x4f')]['create'](_0x4ecf2b[_0x9efe('0x59')],{})['then'](respondWithResult(_0x1fdcc1,0xc9))['catch'](handleError(_0x1fdcc1,null));};exports[_0x9efe('0x35')]=function(_0x18d662,_0x1d9a3d){if(_0x18d662['body']['id']){delete _0x18d662['body']['id'];}return db['OpenchannelMessage'][_0x9efe('0x57')]({'where':{'id':_0x18d662[_0x9efe('0x54')]['id']}})['then'](handleEntityNotFound(_0x1d9a3d,null))['then'](saveUpdates(_0x18d662[_0x9efe('0x59')],null))[_0x9efe('0x36')](respondWithResult(_0x1d9a3d,null))['catch'](handleError(_0x1d9a3d,null));};exports[_0x9efe('0x37')]=function(_0x464226,_0xdacb22){return db[_0x9efe('0x4f')][_0x9efe('0x57')]({'where':{'id':_0x464226[_0x9efe('0x54')]['id']}})[_0x9efe('0x36')](handleEntityNotFound(_0xdacb22,null))['then'](removeEntity(_0xdacb22,null))['catch'](handleError(_0xdacb22,null));};exports['describe']=function(_0x18e67f,_0x307caf){return db['OpenchannelMessage'][_0x9efe('0x5a')]()['then'](respondWithResult(_0x307caf,null))[_0x9efe('0x28')](handleError(_0x307caf,null));};var interaction_log=require(_0x9efe('0x5b'))(_0x9efe('0x5c'));exports['accept']=function(_0x46bc88,_0x1f9fa0,_0x412d4b){var _0x5e8153={'agent':{},'channel':_0x9efe('0x5d')};if(_0x46bc88['body']['id']){delete _0x46bc88[_0x9efe('0x59')]['id'];}_0x46bc88[_0x9efe('0x59')]['read']=!![];_0x46bc88[_0x9efe('0x59')]['readAt']=moment()['format'](_0x9efe('0x5e'));_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')]=_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')]||_0x46bc88[_0x9efe('0x60')]['id'];_0x5e8153[_0x9efe('0x61')]['id']=_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')];return db[_0x9efe('0x4f')][_0x9efe('0x57')]({'where':{'id':_0x46bc88[_0x9efe('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1f9fa0,null))[_0x9efe('0x36')](saveUpdates(_0x46bc88[_0x9efe('0x59')],null))[_0x9efe('0x36')](function(_0x25727e){if(_0x25727e){_0x5e8153['message']=_0x25727e[_0x9efe('0x62')]({'plain':!![]});return db[_0x9efe('0x63')][_0x9efe('0x57')]({'where':{'id':_0x25727e[_0x9efe('0x64')]}});}return null;})[_0x9efe('0x36')](handleEntityNotFound(_0x1f9fa0,null))[_0x9efe('0x36')](function(_0x2e8ecc){if(_0x2e8ecc){return _0x2e8ecc[_0x9efe('0x35')]({'UserId':_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')],'read1stAt':_[_0x9efe('0x65')](_0x2e8ecc[_0x9efe('0x66')])?moment()[_0x9efe('0x67')](_0x9efe('0x5e')):undefined});}return null;})[_0x9efe('0x36')](function(_0x2a80f5){if(_0x2a80f5){_0x5e8153['interaction']=_0x2a80f5['get']({'plain':!![]});interaction_log[_0x9efe('0x1f')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x46bc88['user']['id'],_0x46bc88[_0x9efe('0x60')][_0x9efe('0x39')],_0x46bc88[_0x9efe('0x60')][_0x9efe('0x68')],_0x5e8153[_0x9efe('0x69')]['id'],_0x46bc88[_0x9efe('0x59')]?JSON[_0x9efe('0x23')](_0x46bc88[_0x9efe('0x59')]):_0x9efe('0x6a'));return respondWithRpcPromise(_0x9efe('0x6b'),'acceptMessage',_0x5e8153);}return null;})[_0x9efe('0x36')](function(_0x2339d9){var _0x190d82=_0x9efe('0x6c')+_0x2339d9['message'][_0x9efe('0x6d')];return db[_0x9efe('0x6e')][_0x9efe('0x3f')](_0x190d82,{'type':db[_0x9efe('0x6f')][_0x9efe('0x70')][_0x9efe('0x71')],'raw':!![]})[_0x9efe('0x36')](function(_0x3f8d14){return _0x3f8d14;});})[_0x9efe('0x36')](function(_0x4550d0){if(_0x4550d0){_0x5e8153[_0x9efe('0x26')][_0x9efe('0x72')]=_0x4550d0[0x0];if(!_0x46bc88[_0x9efe('0x59')]['UserId'])return;return db['User'][_0x9efe('0x57')]({'where':{'id':_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')],'role':_0x9efe('0x61')},'attributes':['id',_0x9efe('0x39'),'fullname',_0x9efe('0x73'),_0x9efe('0x74')],'raw':!![]});}return null;})[_0x9efe('0x36')](function(_0x4a7979){if(!_0x4a7979)return null;_0x5e8153['message'][_0x9efe('0x61')]=_0x4a7979;return _0x5e8153;})[_0x9efe('0x36')](function(_0x1d91bc){if(_0x1d91bc){if(_0x46bc88[_0x9efe('0x59')][_0x9efe('0x75')]){_0x5e8153[_0x9efe('0x26')][_0x9efe('0x76')]=util[_0x9efe('0x67')](_0x9efe('0x77'),_0x46bc88[_0x9efe('0x60')][_0x9efe('0x39')]);_0x5e8153['message'][_0x9efe('0x78')]=_0x5e8153['channel'];_0x5e8153['message']['motionChannel']=_0x5e8153['channel'];_0x5e8153['message'][_0x9efe('0x79')]=_0x9efe('0x7a');return respondWithRpcPromise(_0x9efe('0x7b'),_0x9efe('0x7b'),{'event':'acceptmessage','message':_0x5e8153[_0x9efe('0x26')]},client9002)['then'](function(){return _0x5e8153;});}return _0x5e8153;}return null;})['then'](respondWithResult(_0x1f9fa0,null))[_0x9efe('0x28')](handleError(_0x1f9fa0,null));};var interaction_log=require(_0x9efe('0x5b'))(_0x9efe('0x5c'));exports[_0x9efe('0x33')]=function(_0x43f5bb,_0x3e596b,_0x7a5c65){var _0x20be35={'agent':{},'channel':_0x9efe('0x5d')};if(_0x43f5bb['body']['id']){delete _0x43f5bb[_0x9efe('0x59')]['id'];}_0x43f5bb['body'][_0x9efe('0x5f')]=_0x43f5bb[_0x9efe('0x59')][_0x9efe('0x5f')]||_0x43f5bb['user']['id'];_0x20be35['agent']['id']=_0x43f5bb[_0x9efe('0x59')][_0x9efe('0x5f')];return db['OpenchannelMessage']['find']({'where':{'id':_0x43f5bb['params']['id'],'UserId':null}})[_0x9efe('0x36')](handleEntityNotFound(_0x3e596b,null))['then'](function(_0x59c6d0){if(_0x59c6d0){_0x20be35[_0x9efe('0x26')]=_0x59c6d0[_0x9efe('0x62')]({'plain':!![]});return db[_0x9efe('0x63')]['find']({'where':{'id':_0x59c6d0[_0x9efe('0x64')]}});}return null;})[_0x9efe('0x36')](handleEntityNotFound(_0x3e596b,null))['then'](function(_0x344485){if(_0x344485){_0x20be35[_0x9efe('0x69')]=_0x344485[_0x9efe('0x62')]({'plain':!![]});interaction_log[_0x9efe('0x1f')](_0x9efe('0x7c'),_0x43f5bb[_0x9efe('0x60')]['id'],_0x43f5bb[_0x9efe('0x60')][_0x9efe('0x39')],_0x43f5bb[_0x9efe('0x60')][_0x9efe('0x68')],_0x20be35[_0x9efe('0x69')]['id'],_0x43f5bb['body']?JSON[_0x9efe('0x23')](_0x43f5bb[_0x9efe('0x59')]):'null');return respondWithRpcPromise('RejectMessage',_0x9efe('0x7d'),_0x20be35);}return null;})[_0x9efe('0x36')](function(_0x209757){var _0x1e614c=_0x9efe('0x6c')+_0x209757[_0x9efe('0x26')][_0x9efe('0x6d')];return db[_0x9efe('0x6e')][_0x9efe('0x3f')](_0x1e614c,{'type':db['Sequelize'][_0x9efe('0x70')][_0x9efe('0x71')],'raw':!![]})[_0x9efe('0x36')](function(_0x545ad3){return _0x545ad3;});})['then'](function(_0x4203e1){if(_0x4203e1){_0x20be35[_0x9efe('0x26')][_0x9efe('0x72')]=_0x4203e1[0x0];if(!_0x43f5bb[_0x9efe('0x59')][_0x9efe('0x5f')])return;return db[_0x9efe('0x7e')][_0x9efe('0x57')]({'where':{'id':_0x43f5bb[_0x9efe('0x59')]['UserId'],'role':_0x9efe('0x61')},'attributes':['id',_0x9efe('0x39'),_0x9efe('0x7f'),'email','internal'],'raw':!![]});}return null;})[_0x9efe('0x36')](function(_0x491b9a){if(!_0x491b9a)return null;_0x20be35['message'][_0x9efe('0x61')]=_0x491b9a;return _0x20be35;})['then'](function(_0x37779f){if(_0x37779f){_0x37779f['message'][_0x9efe('0x76')]=util[_0x9efe('0x67')]('SIP/%s',_0x43f5bb[_0x9efe('0x60')][_0x9efe('0x39')]);_0x37779f[_0x9efe('0x26')][_0x9efe('0x78')]=_0x20be35[_0x9efe('0x78')];_0x37779f[_0x9efe('0x26')][_0x9efe('0x80')]=_0x20be35['channel'];_0x37779f[_0x9efe('0x26')][_0x9efe('0x79')]=_0x9efe('0x33');respondWithRpcPromise('EventManager','EventManager',{'event':_0x9efe('0x81'),'message':_0x37779f[_0x9efe('0x26')]},client9002);return _0x20be35;}return null;})['then'](respondWithResult(_0x3e596b,null))[_0x9efe('0x28')](handleError(_0x3e596b,null));};
\ No newline at end of file
index 1ef56ab..9b780e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d11=['events','../../mysqldb','save','update','emit','hook','exports'];(function(_0x2768e9,_0x2a50b2){var _0xb5cca0=function(_0x398432){while(--_0x398432){_0x2768e9['push'](_0x2768e9['shift']());}};_0xb5cca0(++_0x2a50b2);}(_0x1d11,0x173));var _0x11d1=function(_0x52d4ee,_0x64e207){_0x52d4ee=_0x52d4ee-0x0;var _0x51d053=_0x1d11[_0x52d4ee];return _0x51d053;};'use strict';var EventEmitter=require(_0x11d1('0x0'));var OpenchannelMessage=require(_0x11d1('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x11d1('0x2'),'afterUpdate':_0x11d1('0x3'),'afterDestroy':'remove'};function emitEvent(_0x28a75e){return function(_0x3284ac,_0x471cb6,_0x444221){OpenchannelMessageEvents[_0x11d1('0x4')](_0x28a75e+':'+_0x3284ac['id'],_0x3284ac);OpenchannelMessageEvents[_0x11d1('0x4')](_0x28a75e,_0x3284ac);_0x444221(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x11d1('0x5')](e,emitEvent(event));}}module[_0x11d1('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x37c0=['emit','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelMessage','save','update'];(function(_0x37d0bc,_0x109b96){var _0x170e60=function(_0xae2ad){while(--_0xae2ad){_0x37d0bc['push'](_0x37d0bc['shift']());}};_0x170e60(++_0x109b96);}(_0x37c0,0x1cc));var _0x037c=function(_0x9e3268,_0x370bc){_0x9e3268=_0x9e3268-0x0;var _0x54f2c5=_0x37c0[_0x9e3268];return _0x54f2c5;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0x037c('0x0'))['db'][_0x037c('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x037c('0x2'),'afterUpdate':_0x037c('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3d950a){return function(_0x39446d,_0x4ab88c,_0x48c110){OpenchannelMessageEvents[_0x037c('0x4')](_0x3d950a+':'+_0x39446d['id'],_0x39446d);OpenchannelMessageEvents[_0x037c('0x4')](_0x3d950a,_0x39446d);_0x48c110(null);};}for(var e in events){if(events[_0x037c('0x5')](e)){var event=events[e];OpenchannelMessage[_0x037c('0x6')](e,emitEvent(event));}}module[_0x037c('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 03b38ab..206165e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','catch','error','out','CmContact','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','POST','replyUri','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','utf8mb4','util','../../config/logger','api','moment','bluebird','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','models','get','direction','toLowerCase','UserId'];(function(_0x48a0f3,_0x481985){var _0x2e8467=function(_0x4a2b9b){while(--_0x4a2b9b){_0x48a0f3['push'](_0x48a0f3['shift']());}};_0x2e8467(++_0x481985);}(_0xda2d,0x102));var _0xdda2=function(_0x232e24,_0x95937){_0x232e24=_0x232e24-0x0;var _0x21c824=_0xda2d[_0x232e24];return _0x21c824;};'use strict';var _=require('lodash');var util=require(_0xdda2('0x0'));var logger=require(_0xdda2('0x1'))(_0xdda2('0x2'));var moment=require(_0xdda2('0x3'));var BPromise=require(_0xdda2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdda2('0x5'));var attributes=require(_0xdda2('0x6'));module[_0xdda2('0x7')]=function(_0x39f6c9,_0xc256bc){return _0x39f6c9[_0xdda2('0x8')](_0xdda2('0x9'),attributes,{'tableName':_0xdda2('0xa'),'paranoid':![],'indexes':[{'name':_0xdda2('0xb'),'fields':[_0xdda2('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1a774e,_0x22c6e5,_0x4df6b8){var _0x1c11b2=_0x39f6c9[_0xdda2('0xd')];var _0x42d990=_0x1a774e[_0xdda2('0xe')]({'plain':!![]});if(_0x42d990[_0xdda2('0xf')][_0xdda2('0x10')]()==='in'||_0x42d990[_0xdda2('0xf')][_0xdda2('0x10')]()==='out'&&!_0x42d990['secret']&&!_['isNil'](_0x42d990[_0xdda2('0x11')])){_0x1c11b2[_0xdda2('0x12')][_0xdda2('0x13')]({'where':{'id':_0x42d990[_0xdda2('0x14')]}})[_0xdda2('0x15')](function(_0x475222){if(_0x475222){_0x475222[_0xdda2('0x16')]({'lastMsgAt':_0x42d990['createdAt'],'lastMsgDirection':_0x42d990[_0xdda2('0xf')]['toLowerCase']()});}})[_0xdda2('0x17')](function(_0xb6b01e){console[_0xdda2('0x18')](_0xb6b01e);});}if(_0x42d990[_0xdda2('0xf')]===_0xdda2('0x19')&&!_0x42d990['secret']){var _0x55d674;_0x1c11b2[_0xdda2('0x1a')]['describe']()[_0xdda2('0x15')](function(_0x1a3b35){return _0x1c11b2[_0xdda2('0x1b')][_0xdda2('0x1c')]({'where':{'id':_0x42d990[_0xdda2('0x1d')]},'include':[{'model':_0x1c11b2[_0xdda2('0x12')],'as':_0xdda2('0x1e'),'where':{'id':_0x42d990[_0xdda2('0x14')]},'limit':0x1,'include':[{'model':_0x1c11b2[_0xdda2('0x1a')],'as':_0xdda2('0x1f'),'attributes':_[_0xdda2('0x20')](_0x1a3b35)}]}]});})[_0xdda2('0x15')](function(_0x4eed30){_0x55d674=_0x4eed30[_0xdda2('0xe')]({'plain':!![]});if(_0x55d674&&_0x55d674['replyUri']){logger[_0xdda2('0x21')](_0xdda2('0x22'),_0xdda2('0x23'),util['format'](_0xdda2('0x24'),_0x42d990['id'],_0x55d674['replyUri']));if(_0x55d674[_0xdda2('0x1e')]&&_0x55d674[_0xdda2('0x1e')]['length']){_0x42d990[_0xdda2('0x25')]=_[_0xdda2('0x26')](_0x55d674[_0xdda2('0x1e')][0x0],_0xdda2('0x1f'));_0x42d990[_0xdda2('0x1f')]=_0x55d674['Interactions'][0x0][_0xdda2('0x1f')];}var _0x22c6e5={'method':_0xdda2('0x27'),'uri':encodeURI(_0x55d674[_0xdda2('0x28')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x22c6e5['method']){case'GET':_0x22c6e5['qs']=_0x42d990;break;case _0xdda2('0x27'):_0x22c6e5[_0xdda2('0xc')]=_0x42d990;break;}return rp(_0x22c6e5)[_0xdda2('0x15')](function(_0x5e9e74){logger[_0xdda2('0x21')](_0xdda2('0x22'),_0xdda2('0x23'),util[_0xdda2('0x29')](_0xdda2('0x2a'),_0x42d990['id'],_0x55d674[_0xdda2('0x28')]));if(_0x5e9e74['body'][_0xdda2('0x2b')]&&_0x5e9e74[_0xdda2('0xc')]['threadId']!=_0x42d990[_0xdda2('0x25')][_0xdda2('0x2b')]){return _0x1c11b2[_0xdda2('0x12')][_0xdda2('0x16')]({'threadId':_0x5e9e74['body'][_0xdda2('0x2b')]},{'logging':!![],'where':{'id':_0x42d990[_0xdda2('0x25')]['id']}});}else{return;}})['then'](function(){return _0x1a774e[_0xdda2('0x16')]({'read':!![]});})['catch'](function(_0x2b8cd6){logger['error']('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util[_0xdda2('0x2c')](_0x2b8cd6,{'showHidden':![],'depth':null}));_0x4df6b8();});}else{_0x4df6b8();}})['finally'](function(){_0x4df6b8();});}else{_0x4df6b8();}}},'charset':_0xdda2('0x2d'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd4a2=['OpenchannelInteractionId','then','createdAt','toLowerCase','catch','error','describe','OpenchannelAccount','Interactions','CmContact','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','method','POST','threadId','update','inspect','finally','utf8mb4','lodash','api','bluebird','path','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','out','secret','isNil','UserId','OpenchannelInteraction','findOne'];(function(_0x3a2c23,_0x5592cb){var _0xced757=function(_0x1704ff){while(--_0x1704ff){_0x3a2c23['push'](_0x3a2c23['shift']());}};_0xced757(++_0x5592cb);}(_0xd4a2,0x173));var _0x2d4a=function(_0x47fb0b,_0x41900d){_0x47fb0b=_0x47fb0b-0x0;var _0x21ac43=_0xd4a2[_0x47fb0b];return _0x21ac43;};'use strict';var _=require(_0x2d4a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2d4a('0x1'));var moment=require('moment');var BPromise=require(_0x2d4a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d4a('0x3'));var rimraf=require('rimraf');var config=require(_0x2d4a('0x4'));var attributes=require(_0x2d4a('0x5'));module[_0x2d4a('0x6')]=function(_0x3a88e2,_0x1ca10b){return _0x3a88e2['define'](_0x2d4a('0x7'),attributes,{'tableName':_0x2d4a('0x8'),'paranoid':![],'indexes':[{'name':_0x2d4a('0x9'),'fields':[_0x2d4a('0xa')],'type':_0x2d4a('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x535b2f,_0xb9f016,_0x113839){var _0x33b786=_0x3a88e2[_0x2d4a('0xc')];var _0x3abbbd=_0x535b2f[_0x2d4a('0xd')]({'plain':!![]});if(_0x3abbbd['direction']['toLowerCase']()==='in'||_0x3abbbd[_0x2d4a('0xe')]['toLowerCase']()===_0x2d4a('0xf')&&!_0x3abbbd[_0x2d4a('0x10')]&&!_[_0x2d4a('0x11')](_0x3abbbd[_0x2d4a('0x12')])){_0x33b786[_0x2d4a('0x13')][_0x2d4a('0x14')]({'where':{'id':_0x3abbbd[_0x2d4a('0x15')]}})[_0x2d4a('0x16')](function(_0x544622){if(_0x544622){_0x544622['update']({'lastMsgAt':_0x3abbbd[_0x2d4a('0x17')],'lastMsgDirection':_0x3abbbd['direction'][_0x2d4a('0x18')]()});}})[_0x2d4a('0x19')](function(_0x11896d){console[_0x2d4a('0x1a')](_0x11896d);});}if(_0x3abbbd['direction']===_0x2d4a('0xf')&&!_0x3abbbd['secret']){var _0x2838fa;_0x33b786['CmContact'][_0x2d4a('0x1b')]()[_0x2d4a('0x16')](function(_0x2188b2){return _0x33b786[_0x2d4a('0x1c')]['find']({'where':{'id':_0x3abbbd['OpenchannelAccountId']},'include':[{'model':_0x33b786['OpenchannelInteraction'],'as':_0x2d4a('0x1d'),'where':{'id':_0x3abbbd[_0x2d4a('0x15')]},'limit':0x1,'include':[{'model':_0x33b786[_0x2d4a('0x1e')],'as':_0x2d4a('0x1f'),'attributes':_[_0x2d4a('0x20')](_0x2188b2)}]}]});})[_0x2d4a('0x16')](function(_0x56445a){_0x2838fa=_0x56445a['get']({'plain':!![]});if(_0x2838fa&&_0x2838fa[_0x2d4a('0x21')]){logger[_0x2d4a('0x22')](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x25')](_0x2d4a('0x26'),_0x3abbbd['id'],_0x2838fa[_0x2d4a('0x21')]));if(_0x2838fa[_0x2d4a('0x1d')]&&_0x2838fa['Interactions'][_0x2d4a('0x27')]){_0x3abbbd[_0x2d4a('0x28')]=_[_0x2d4a('0x29')](_0x2838fa[_0x2d4a('0x1d')][0x0],_0x2d4a('0x1f'));_0x3abbbd[_0x2d4a('0x1f')]=_0x2838fa[_0x2d4a('0x1d')][0x0][_0x2d4a('0x1f')];}var _0xb9f016={'method':'POST','uri':encodeURI(_0x2838fa['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0xb9f016[_0x2d4a('0x2a')]){case'GET':_0xb9f016['qs']=_0x3abbbd;break;case _0x2d4a('0x2b'):_0xb9f016[_0x2d4a('0xa')]=_0x3abbbd;break;}return rp(_0xb9f016)[_0x2d4a('0x16')](function(_0x1d2fa6){logger[_0x2d4a('0x22')](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x25')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x3abbbd['id'],_0x2838fa[_0x2d4a('0x21')]));if(_0x1d2fa6['body'][_0x2d4a('0x2c')]&&_0x1d2fa6[_0x2d4a('0xa')][_0x2d4a('0x2c')]!=_0x3abbbd[_0x2d4a('0x28')][_0x2d4a('0x2c')]){return _0x33b786[_0x2d4a('0x13')][_0x2d4a('0x2d')]({'threadId':_0x1d2fa6[_0x2d4a('0xa')]['threadId']},{'logging':!![],'where':{'id':_0x3abbbd[_0x2d4a('0x28')]['id']}});}else{return;}})[_0x2d4a('0x16')](function(){return _0x535b2f[_0x2d4a('0x2d')]({'read':!![]});})[_0x2d4a('0x19')](function(_0x2b66af){logger['error'](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x2e')](_0x2b66af,{'showHidden':![],'depth':null}));_0x113839();});}else{_0x113839();}})[_0x2d4a('0x2f')](function(){_0x113839();});}else{_0x113839();}}},'charset':_0x2d4a('0x30'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 9581bcc..ae03c5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['stringify','error','code','message','info','result','OpenchannelMessage','create','body','options','raw','CreateOpenchannelMessage','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x18bfd7,_0x9ecbac){var _0x282a2a=function(_0x15a1eb){while(--_0x15a1eb){_0x18bfd7['push'](_0x18bfd7['shift']());}};_0x282a2a(++_0x9ecbac);}(_0x5f66,0x1a0));var _0x65f6=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x5f66[_0x5f0089];return _0x193892;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});config['redis']=_[_0x65f6('0x9')](config[_0x65f6('0xa')],{'host':_0x65f6('0xb'),'port':0x18eb});var socket=require(_0x65f6('0xc'))(new Redis(config[_0x65f6('0xa')]));require(_0x65f6('0xd'))['register'](socket);function respondWithRpcPromise(_0x5123ee,_0x18fea1,_0x2f6d5b){return new BPromise(function(_0x264647,_0x25c416){return client['request'](_0x5123ee,_0x2f6d5b)[_0x65f6('0xe')](function(_0x571436){logger['info'](_0x65f6('0xf'),_0x18fea1,'request\x20sent');logger[_0x65f6('0x10')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x18fea1,_0x65f6('0x11'),JSON[_0x65f6('0x12')](_0x571436));if(_0x571436[_0x65f6('0x13')]){if(_0x571436[_0x65f6('0x13')][_0x65f6('0x14')]===0x1f4){logger[_0x65f6('0x13')](_0x65f6('0xf'),_0x18fea1,_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);return _0x25c416(_0x571436[_0x65f6('0x13')]['message']);}logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x571436['error'][_0x65f6('0x15')]);return _0x264647(_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);}else{logger[_0x65f6('0x16')](_0x65f6('0xf'),_0x18fea1,_0x65f6('0x11'));_0x264647(_0x571436[_0x65f6('0x17')][_0x65f6('0x15')]);}})['catch'](function(_0x4d79a1){logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x4d79a1);_0x25c416(_0x4d79a1);});});}exports['CreateOpenchannelMessage']=function(_0x5c5b91){var _0x365159=this;return new Promise(function(_0x21ea88,_0x5114a4){return db[_0x65f6('0x18')][_0x65f6('0x19')](_0x5c5b91[_0x65f6('0x1a')],{'raw':_0x5c5b91[_0x65f6('0x1b')]?_0x5c5b91[_0x65f6('0x1b')][_0x65f6('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x197a49){logger['info']('CreateOpenchannelMessage',_0x5c5b91);logger[_0x65f6('0x10')](_0x65f6('0x1d'),_0x5c5b91,JSON['stringify'](_0x197a49));_0x21ea88(_0x197a49);})[_0x65f6('0x1e')](function(_0x471a33){logger[_0x65f6('0x13')](_0x65f6('0x1d'),_0x471a33['message'],_0x5c5b91);_0x5114a4(_0x365159[_0x65f6('0x13')](0x1f4,_0x471a33[_0x65f6('0x15')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5165e3,_0x2d28c8){var _0x40ad72=function(_0xf06655){while(--_0xf06655){_0x5165e3['push'](_0x5165e3['shift']());}};_0x40ad72(++_0x2d28c8);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1b47ed,_0x582619){_0x1b47ed=_0x1b47ed-0x0;var _0x4eb1e1=_0x5f2f[_0x1b47ed];return _0x4eb1e1;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index 702c80f..dec3281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d9=['emit','removeListener','register','./openchannelMessage.events','save','remove'];(function(_0x32c06b,_0x6256c7){var _0x2c5b7e=function(_0x10550c){while(--_0x10550c){_0x32c06b['push'](_0x32c06b['shift']());}};_0x2c5b7e(++_0x6256c7);}(_0xe4d9,0x141));var _0x9e4d=function(_0x5252b5,_0x30434b){_0x5252b5=_0x5252b5-0x0;var _0x3bc1e1=_0xe4d9[_0x5252b5];return _0x3bc1e1;};'use strict';var OpenchannelMessageEvents=require(_0x9e4d('0x0'));var events=[_0x9e4d('0x1'),_0x9e4d('0x2'),'update'];function createListener(_0x42b34c,_0x5856ea){return function(_0x5d50b0){_0x5856ea[_0x9e4d('0x3')](_0x42b34c,_0x5d50b0);};}function removeListener(_0x228328,_0x581985){return function(){OpenchannelMessageEvents[_0x9e4d('0x4')](_0x228328,_0x581985);};}exports[_0x9e4d('0x5')]=function(_0x5a4881){for(var _0x493fb5=0x0,_0x74b14=events['length'];_0x493fb5<_0x74b14;_0x493fb5++){var _0x5af2a0=events[_0x493fb5];var _0x36ec30=createListener('openchannelMessage:'+_0x5af2a0,_0x5a4881);OpenchannelMessageEvents['on'](_0x5af2a0,_0x36ec30);}};
\ No newline at end of file
+var _0x872f=['openchannelMessage:','./openchannelMessage.events','save','remove','update','emit','register'];(function(_0x45bbe7,_0x4c5658){var _0x66ed74=function(_0x77efbd){while(--_0x77efbd){_0x45bbe7['push'](_0x45bbe7['shift']());}};_0x66ed74(++_0x4c5658);}(_0x872f,0x143));var _0xf872=function(_0x37df6c,_0x2a9666){_0x37df6c=_0x37df6c-0x0;var _0x41f7aa=_0x872f[_0x37df6c];return _0x41f7aa;};'use strict';var OpenchannelMessageEvents=require(_0xf872('0x0'));var events=[_0xf872('0x1'),_0xf872('0x2'),_0xf872('0x3')];function createListener(_0x3904c4,_0x22461f){return function(_0x2868bc){_0x22461f[_0xf872('0x4')](_0x3904c4,_0x2868bc);};}function removeListener(_0x3a1126,_0x1a71a9){return function(){OpenchannelMessageEvents['removeListener'](_0x3a1126,_0x1a71a9);};}exports[_0xf872('0x5')]=function(_0x51e579){for(var _0x11759f=0x0,_0x578512=events['length'];_0x11759f<_0x578512;_0x11759f++){var _0x315e32=events[_0x11759f];var _0x1ee4f7=createListener(_0xf872('0x6')+_0x315e32,_0x51e579);OpenchannelMessageEvents['on'](_0x315e32,_0x1ee4f7);}};
\ No newline at end of file
index cb5d426..f85f85c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0168=['connect-timeout','Router','../../components/auth/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','addTeams','post','addAgents','/:id','update','delete','removeTeams','removeAgents','multer','path'];(function(_0x265de8,_0x1e526a){var _0x42dbf5=function(_0x48a1a5){while(--_0x48a1a5){_0x265de8['push'](_0x265de8['shift']());}};_0x42dbf5(++_0x1e526a);}(_0x0168,0x1d2));var _0x8016=function(_0x54b366,_0x3beb7b){_0x54b366=_0x54b366-0x0;var _0x8210aa=_0x0168[_0x54b366];return _0x8210aa;};'use strict';var multer=require(_0x8016('0x0'));var util=require('util');var path=require(_0x8016('0x1'));var timeout=require(_0x8016('0x2'));var express=require('express');var router=express[_0x8016('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8016('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8016('0x5'));var controller=require(_0x8016('0x6'));router[_0x8016('0x7')]('/',auth[_0x8016('0x8')](),controller[_0x8016('0x9')]);router[_0x8016('0x7')](_0x8016('0xa'),auth['isAuthenticated'](),controller[_0x8016('0xb')]);router['get']('/:id',auth[_0x8016('0x8')](),controller[_0x8016('0xc')]);router[_0x8016('0x7')]('/:id/members',auth['isAuthenticated'](),controller[_0x8016('0xd')]);router[_0x8016('0x7')](_0x8016('0xe'),auth[_0x8016('0x8')](),controller[_0x8016('0xf')]);router[_0x8016('0x7')](_0x8016('0x10'),auth[_0x8016('0x8')](),controller[_0x8016('0x11')]);router['post']('/',auth[_0x8016('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0x8016('0x8')](),controller[_0x8016('0x12')]);router[_0x8016('0x13')](_0x8016('0x10'),auth[_0x8016('0x8')](),controller[_0x8016('0x14')]);router['put'](_0x8016('0x15'),auth['isAuthenticated'](),controller[_0x8016('0x16')]);router['delete'](_0x8016('0x15'),auth['isAuthenticated'](),controller['destroy']);router[_0x8016('0x17')]('/:id/teams',auth[_0x8016('0x8')](),controller[_0x8016('0x18')]);router[_0x8016('0x17')](_0x8016('0x10'),auth['isAuthenticated'](),controller[_0x8016('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xe2c7=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/teams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout'];(function(_0x2b5466,_0x43fe49){var _0x4f6e42=function(_0x585504){while(--_0x585504){_0x2b5466['push'](_0x2b5466['shift']());}};_0x4f6e42(++_0x43fe49);}(_0xe2c7,0x1ed));var _0x7e2c=function(_0x31ed12,_0x2a38f9){_0x31ed12=_0x31ed12-0x0;var _0x1afd40=_0xe2c7[_0x31ed12];return _0x1afd40;};'use strict';var multer=require(_0x7e2c('0x0'));var util=require(_0x7e2c('0x1'));var path=require('path');var timeout=require(_0x7e2c('0x2'));var express=require(_0x7e2c('0x3'));var router=express[_0x7e2c('0x4')]();var fs_extra=require(_0x7e2c('0x5'));var auth=require(_0x7e2c('0x6'));var interaction=require(_0x7e2c('0x7'));var config=require(_0x7e2c('0x8'));var controller=require(_0x7e2c('0x9'));router[_0x7e2c('0xa')]('/',auth[_0x7e2c('0xb')](),controller[_0x7e2c('0xc')]);router[_0x7e2c('0xa')](_0x7e2c('0xd'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0xe')]);router[_0x7e2c('0xa')](_0x7e2c('0xf'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x10')]);router[_0x7e2c('0xa')](_0x7e2c('0x11'),auth[_0x7e2c('0xb')](),controller['getMembers']);router[_0x7e2c('0xa')](_0x7e2c('0x12'),auth[_0x7e2c('0xb')](),controller['getTeams']);router['get'](_0x7e2c('0x13'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x14')]);router[_0x7e2c('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7e2c('0x15')](_0x7e2c('0x12'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x16')]);router[_0x7e2c('0x15')](_0x7e2c('0x13'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x17')]);router[_0x7e2c('0x18')](_0x7e2c('0xf'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x19')]);router[_0x7e2c('0x1a')](_0x7e2c('0xf'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x1b')]);router[_0x7e2c('0x1a')](_0x7e2c('0x12'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x1c')]);router[_0x7e2c('0x1a')](_0x7e2c('0x13'),auth['isAuthenticated'](),controller[_0x7e2c('0x1d')]);module[_0x7e2c('0x1e')]=router;
\ No newline at end of file
index ea896e1..f177bba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe5e=['beepall','roundrobin','sequelize','STRING','name','INTEGER','rrmemory'];(function(_0x223abd,_0x1a4353){var _0x28e19e=function(_0x1d0e23){while(--_0x1d0e23){_0x223abd['push'](_0x223abd['shift']());}};_0x28e19e(++_0x1a4353);}(_0xfe5e,0x12f));var _0xefe5=function(_0x1460f6,_0x59051a){_0x1460f6=_0x1460f6-0x0;var _0x46ce94=_0xfe5e[_0x1460f6];return _0x46ce94;};'use strict';var Sequelize=require(_0xefe5('0x0'));module['exports']={'name':{'type':Sequelize[_0xefe5('0x1')],'unique':_0xefe5('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xefe5('0x1')]},'timeout':{'type':Sequelize[_0xefe5('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xefe5('0x4'),_0xefe5('0x5'),_0xefe5('0x6'))}};
\ No newline at end of file
+var _0xc5e7=['beepall','roundrobin','exports','STRING','INTEGER','rrmemory'];(function(_0x430cd2,_0xffa4f5){var _0x47ad7d=function(_0x2b44aa){while(--_0x2b44aa){_0x430cd2['push'](_0x430cd2['shift']());}};_0x47ad7d(++_0xffa4f5);}(_0xc5e7,0x68));var _0x7c5e=function(_0x3491c6,_0x441ec4){_0x3491c6=_0x3491c6-0x0;var _0x59dca5=_0xc5e7[_0x3491c6];return _0x59dca5;};'use strict';var Sequelize=require('sequelize');module[_0x7c5e('0x0')]={'name':{'type':Sequelize[_0x7c5e('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7c5e('0x1')]},'timeout':{'type':Sequelize[_0x7c5e('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x7c5e('0x3'),_0x7c5e('0x4'),_0x7c5e('0x5'))}};
\ No newline at end of file
index f2b006b..d363d9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0004=['json','undefined','limit','count','offset','set','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','end','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','OpenchannelQueue','include','rows','catch','show','length','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserOpenchannelQueue','hasOwnProperty','User','findAndCountAll','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','findAll','Agents','voicePause','interface','sequelize','transaction','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','push','toString','QueryTypes','SELECT','every','TeamId','includes','compact','forEach','addAgents','omit','spread','removeAgents','isArray','userOpenchannelQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status'];(function(_0x3f91c9,_0x5d049f){var _0x20861f=function(_0x1a3e4c){while(--_0x1a3e4c){_0x3f91c9['push'](_0x3f91c9['shift']());}};_0x20861f(++_0x5d049f);}(_0x0004,0x18a));var _0x4000=function(_0x377743,_0x584cab){_0x377743=_0x377743-0x0;var _0x30ae30=_0x0004[_0x377743];return _0x30ae30;};'use strict';var emlformat=require(_0x4000('0x0'));var rimraf=require(_0x4000('0x1'));var zipdir=require(_0x4000('0x2'));var jsonpatch=require(_0x4000('0x3'));var rp=require('request-promise');var moment=require(_0x4000('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4000('0x5'));var util=require(_0x4000('0x6'));var path=require(_0x4000('0x7'));var sox=require(_0x4000('0x8'));var csv=require(_0x4000('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4000('0xa'));var _=require(_0x4000('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4000('0xc'));var deskjs=require(_0x4000('0xd'));var toCsv=require(_0x4000('0x9'));var querystring=require(_0x4000('0xe'));var Papa=require('papaparse');var Redis=require(_0x4000('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4000('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4000('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x4000('0x12'));var licenseUtil=require(_0x4000('0x13'));var db=require(_0x4000('0x14'))['db'];config[_0x4000('0x15')]=_[_0x4000('0x16')](config[_0x4000('0x15')],{'host':_0x4000('0x17'),'port':0x18eb});var socket=require(_0x4000('0x18'))(new Redis(config[_0x4000('0x15')]));require(_0x4000('0x19'))[_0x4000('0x1a')](socket);function respondWithStatusCode(_0x26eff0,_0x1ed1f0){_0x1ed1f0=_0x1ed1f0||0xcc;return function(_0x383a83){if(_0x383a83){return _0x26eff0[_0x4000('0x1b')](_0x1ed1f0);}return _0x26eff0[_0x4000('0x1c')](_0x1ed1f0)['end']();};}function respondWithResult(_0x4e5fb,_0x5c2da7){_0x5c2da7=_0x5c2da7||0xc8;return function(_0x2e44f7){if(_0x2e44f7){return _0x4e5fb[_0x4000('0x1c')](_0x5c2da7)[_0x4000('0x1d')](_0x2e44f7);}};}function respondWithFilteredResult(_0xb6dad8,_0x4cc1a5){return function(_0x457d6d){if(_0x457d6d){var _0x5ee915=typeof _0x4cc1a5['offset']===_0x4000('0x1e')&&typeof _0x4cc1a5[_0x4000('0x1f')]===_0x4000('0x1e');var _0x1ac1e8=_0x457d6d[_0x4000('0x20')];var _0x210d85=_0x5ee915?0x0:_0x4cc1a5[_0x4000('0x21')];var _0x46c972=_0x5ee915?_0x457d6d['count']:_0x4cc1a5[_0x4000('0x21')]+_0x4cc1a5[_0x4000('0x1f')];var _0x42b153;if(_0x46c972>=_0x1ac1e8){_0x46c972=_0x1ac1e8;_0x42b153=0xc8;}else{_0x42b153=0xce;}_0xb6dad8[_0x4000('0x1c')](_0x42b153);return _0xb6dad8[_0x4000('0x22')]('Content-Range',_0x210d85+'-'+_0x46c972+'/'+_0x1ac1e8)['json'](_0x457d6d);}return null;};}function patchUpdates(_0x2df1fb){return function(_0x5288bc){try{jsonpatch['apply'](_0x5288bc,_0x2df1fb,!![]);}catch(_0x2805de){return BPromise[_0x4000('0x23')](_0x2805de);}return _0x5288bc[_0x4000('0x24')]();};}function saveUpdates(_0x212b24,_0x30f8df){return function(_0x33364e){if(_0x33364e){return _0x33364e[_0x4000('0x25')](_0x212b24)[_0x4000('0x26')](function(_0x527a32){return _0x527a32;});}return null;};}function removeEntity(_0x1981cb,_0x15a727){return function(_0x4958c7){if(_0x4958c7){return _0x4958c7[_0x4000('0x27')]()['then'](function(){var _0x413eba=_0x4958c7[_0x4000('0x28')]({'plain':!![]});var _0x2d5422=_0x4000('0x29');return db[_0x4000('0x2a')]['destroy']({'where':{'type':_0x2d5422,'resourceId':_0x413eba['id']}})[_0x4000('0x26')](function(){return _0x4958c7;});})[_0x4000('0x26')](function(){_0x1981cb[_0x4000('0x1c')](0xcc)[_0x4000('0x2b')]();});}};}function handleEntityNotFound(_0x1c7fd8,_0x5854d6){return function(_0x389606){if(!_0x389606){_0x1c7fd8[_0x4000('0x1b')](0x194);}return _0x389606;};}function handleError(_0x42c940,_0x2f16a8){_0x2f16a8=_0x2f16a8||0x1f4;return function(_0x3e057e){logger[_0x4000('0x2c')](_0x3e057e['stack']);if(_0x3e057e[_0x4000('0x2d')]){delete _0x3e057e[_0x4000('0x2d')];}_0x42c940[_0x4000('0x1c')](_0x2f16a8)[_0x4000('0x2e')](_0x3e057e);};}exports[_0x4000('0x2f')]=function(_0x491f71,_0x1b0bf6){var _0x2e0293={},_0x2f6dbd={},_0x4c436b={'count':0x0,'rows':[]};var _0x1d6cd1=_[_0x4000('0x30')](db['OpenchannelQueue'][_0x4000('0x31')],function(_0xa5f9aa){return{'name':_0xa5f9aa[_0x4000('0x32')],'type':_0xa5f9aa['type'][_0x4000('0x33')]};});_0x2f6dbd[_0x4000('0x34')]=_[_0x4000('0x30')](_0x1d6cd1,_0x4000('0x2d'));_0x2f6dbd[_0x4000('0x35')]=_[_0x4000('0x36')](_0x491f71[_0x4000('0x35')]);_0x2f6dbd[_0x4000('0x37')]=_[_0x4000('0x38')](_0x2f6dbd[_0x4000('0x34')],_0x2f6dbd[_0x4000('0x35')]);_0x2e0293[_0x4000('0x39')]=_[_0x4000('0x38')](_0x2f6dbd[_0x4000('0x34')],qs['fields'](_0x491f71[_0x4000('0x35')][_0x4000('0x3a')]));_0x2e0293[_0x4000('0x39')]=_0x2e0293[_0x4000('0x39')]['length']?_0x2e0293[_0x4000('0x39')]:_0x2f6dbd[_0x4000('0x34')];if(!_0x491f71[_0x4000('0x35')]['hasOwnProperty'](_0x4000('0x3b'))){_0x2e0293['limit']=qs[_0x4000('0x1f')](_0x491f71['query']['limit']);_0x2e0293['offset']=qs[_0x4000('0x21')](_0x491f71['query'][_0x4000('0x21')]);}_0x2e0293[_0x4000('0x3c')]=qs['sort'](_0x491f71[_0x4000('0x35')][_0x4000('0x3d')]);_0x2e0293['where']=qs[_0x4000('0x37')](_[_0x4000('0x3e')](_0x491f71[_0x4000('0x35')],_0x2f6dbd[_0x4000('0x37')]),_0x1d6cd1);if(_0x491f71[_0x4000('0x35')][_0x4000('0x3f')]){_0x2e0293[_0x4000('0x40')]=_['merge'](_0x2e0293[_0x4000('0x40')],{'$or':_[_0x4000('0x30')](_0x1d6cd1,function(_0x4b7464){if(_0x4b7464[_0x4000('0x41')]!==_0x4000('0x42')){var _0x507d8c={};_0x507d8c[_0x4b7464['name']]={'$like':'%'+_0x491f71[_0x4000('0x35')][_0x4000('0x3f')]+'%'};return _0x507d8c;}})});}_0x2e0293=_[_0x4000('0x43')]({},_0x2e0293,_0x491f71[_0x4000('0x44')]);var _0x16ea27={'where':_0x2e0293['where']};return db[_0x4000('0x45')][_0x4000('0x20')](_0x16ea27)[_0x4000('0x26')](function(_0x55611e){_0x4c436b[_0x4000('0x20')]=_0x55611e;if(_0x491f71[_0x4000('0x35')]['includeAll']){_0x2e0293[_0x4000('0x46')]=[{'all':!![]}];}return db[_0x4000('0x45')]['findAll'](_0x2e0293);})[_0x4000('0x26')](function(_0x35411b){_0x4c436b[_0x4000('0x47')]=_0x35411b;return _0x4c436b;})['then'](respondWithFilteredResult(_0x1b0bf6,_0x2e0293))[_0x4000('0x48')](handleError(_0x1b0bf6,null));};exports[_0x4000('0x49')]=function(_0x504aad,_0xec306b){var _0x29407e={'raw':!![],'where':{'id':_0x504aad['params']['id']}},_0x152b39={};_0x152b39['model']=_['keys'](db[_0x4000('0x45')][_0x4000('0x31')]);_0x152b39[_0x4000('0x35')]=_['keys'](_0x504aad[_0x4000('0x35')]);_0x152b39['filters']=_['intersection'](_0x152b39[_0x4000('0x34')],_0x152b39['query']);_0x29407e[_0x4000('0x39')]=_[_0x4000('0x38')](_0x152b39[_0x4000('0x34')],qs[_0x4000('0x3a')](_0x504aad[_0x4000('0x35')][_0x4000('0x3a')]));_0x29407e['attributes']=_0x29407e[_0x4000('0x39')][_0x4000('0x4a')]?_0x29407e[_0x4000('0x39')]:_0x152b39[_0x4000('0x34')];if(_0x504aad[_0x4000('0x35')][_0x4000('0x4b')]){_0x29407e[_0x4000('0x46')]=[{'all':!![]}];}_0x29407e=_[_0x4000('0x43')]({},_0x29407e,_0x504aad[_0x4000('0x44')]);return db[_0x4000('0x45')]['find'](_0x29407e)[_0x4000('0x26')](handleEntityNotFound(_0xec306b,null))['then'](respondWithResult(_0xec306b,null))[_0x4000('0x48')](handleError(_0xec306b,null));};exports[_0x4000('0x4c')]=function(_0x584a08,_0x2b4431){return db[_0x4000('0x45')]['create'](_0x584a08[_0x4000('0x4d')],{})[_0x4000('0x26')](function(_0x55ea06){var _0x56d362=_0x584a08[_0x4000('0x4e')][_0x4000('0x28')]({'plain':!![]});if(!_0x56d362)throw new Error(_0x4000('0x4f'));if(_0x56d362[_0x4000('0x50')]===_0x4000('0x4e')){var _0x366481=_0x55ea06['get']({'plain':!![]});var _0x154275=_0x4000('0x29');return db[_0x4000('0x51')][_0x4000('0x52')]({'where':{'name':_0x154275,'userProfileId':_0x56d362[_0x4000('0x53')]},'raw':!![]})[_0x4000('0x26')](function(_0x145ec2){if(_0x145ec2&&_0x145ec2['autoAssociation']===0x0){return db[_0x4000('0x2a')][_0x4000('0x4c')]({'name':_0x366481[_0x4000('0x2d')],'resourceId':_0x366481['id'],'type':_0x145ec2[_0x4000('0x2d')],'sectionId':_0x145ec2['id']},{})[_0x4000('0x26')](function(){return _0x55ea06;});}else{return _0x55ea06;}})[_0x4000('0x48')](function(_0x46e020){logger[_0x4000('0x2c')](_0x4000('0x54'),_0x46e020);throw _0x46e020;});}return _0x55ea06;})[_0x4000('0x26')](respondWithResult(_0x2b4431,0xc9))[_0x4000('0x48')](handleError(_0x2b4431,null));};exports[_0x4000('0x25')]=function(_0x5dc342,_0x586327){if(_0x5dc342[_0x4000('0x4d')]['id']){delete _0x5dc342[_0x4000('0x4d')]['id'];}return db[_0x4000('0x45')][_0x4000('0x52')]({'where':{'id':_0x5dc342[_0x4000('0x55')]['id']}})['then'](handleEntityNotFound(_0x586327,null))[_0x4000('0x26')](saveUpdates(_0x5dc342['body'],null))[_0x4000('0x26')](respondWithResult(_0x586327,null))[_0x4000('0x48')](handleError(_0x586327,null));};exports[_0x4000('0x27')]=function(_0x594133,_0x3b21bc){return db['OpenchannelQueue'][_0x4000('0x52')]({'where':{'id':_0x594133[_0x4000('0x55')]['id']}})[_0x4000('0x26')](handleEntityNotFound(_0x3b21bc,null))[_0x4000('0x26')](removeEntity(_0x3b21bc,null))[_0x4000('0x48')](handleError(_0x3b21bc,null));};exports[_0x4000('0x56')]=function(_0x4b3ba2,_0x45fe37){return db[_0x4000('0x45')][_0x4000('0x56')]()[_0x4000('0x26')](respondWithResult(_0x45fe37,null))['catch'](handleError(_0x45fe37,null));};exports[_0x4000('0x57')]=function(_0x463049,_0x1e9b51,_0xce7409){var _0x183b38={'raw':!![],'where':{}},_0x2bdb87={},_0x3dc2d3;return db[_0x4000('0x45')][_0x4000('0x58')]({'where':{'id':_0x463049['params']['id']}})[_0x4000('0x26')](handleEntityNotFound(_0x1e9b51,null))[_0x4000('0x26')](function(_0x1f74f0){if(_0x1f74f0){_0x3dc2d3=_0x1f74f0['get']({'plain':!![]});_0x2bdb87['model']=_[_0x4000('0x36')](db[_0x4000('0x59')]['rawAttributes']);_0x2bdb87[_0x4000('0x35')]=_['keys'](_0x463049['query']);_0x2bdb87[_0x4000('0x37')]=_[_0x4000('0x38')](_0x2bdb87[_0x4000('0x34')],_0x2bdb87['query']);_0x183b38[_0x4000('0x39')]=_[_0x4000('0x38')](_0x2bdb87[_0x4000('0x34')],qs[_0x4000('0x3a')](_0x463049[_0x4000('0x35')]['fields']));_0x183b38[_0x4000('0x39')]=_0x183b38[_0x4000('0x39')][_0x4000('0x4a')]?_0x183b38[_0x4000('0x39')]:_0x2bdb87[_0x4000('0x34')];if(!_0x463049[_0x4000('0x35')][_0x4000('0x5a')](_0x4000('0x3b'))){_0x183b38[_0x4000('0x1f')]=qs['limit'](_0x463049['query'][_0x4000('0x1f')]);_0x183b38[_0x4000('0x21')]=qs[_0x4000('0x21')](_0x463049[_0x4000('0x35')][_0x4000('0x21')]);}_0x183b38['order']=qs[_0x4000('0x3d')](_0x463049[_0x4000('0x35')][_0x4000('0x3d')]);_0x183b38['where']=qs['filters'](_[_0x4000('0x3e')](_0x463049['query'],_0x2bdb87[_0x4000('0x37')]));_0x183b38['where']['OpenchannelQueueId']=_0x1f74f0['id'];if(_0x463049[_0x4000('0x35')][_0x4000('0x3f')]){_0x183b38[_0x4000('0x40')]=_[_0x4000('0x43')](_0x183b38[_0x4000('0x40')],{'$or':_['map'](_0x183b38[_0x4000('0x39')],function(_0x198548){var _0x3fc103={};_0x3fc103[_0x198548]={'$like':'%'+_0x463049['query']['filter']+'%'};return _0x3fc103;})});}_0x183b38=_[_0x4000('0x43')]({},_0x183b38,_0x463049['options']);return db[_0x4000('0x59')]['findAll'](_0x183b38);}})[_0x4000('0x26')](function(_0x26639d){if(_0x26639d){return db[_0x4000('0x5b')][_0x4000('0x5c')]({'where':{'id':_[_0x4000('0x30')](_0x26639d,'UserId'),'role':_0x4000('0x5d')},'attributes':['id','name',_0x4000('0x5e'),_0x4000('0x5f'),_0x4000('0x60')]});}})[_0x4000('0x26')](function(_0x3972ed){if(_0x3972ed){return{'count':_0x3972ed[_0x4000('0x20')],'rows':_['map'](_0x3972ed[_0x4000('0x47')],function(_0x148f20){return{'membername':_0x148f20[_0x4000('0x2d')],'UserId':_0x148f20['id'],'queue_name':_0x3dc2d3['name'],'OpenchannelQueueId':_0x3dc2d3['id'],'interface':util[_0x4000('0x61')](_0x4000('0x62'),_0x4000('0x63'),_0x148f20[_0x4000('0x2d')]),'penalty':0x0,'paused':_0x148f20[_0x4000('0x5e')],'createdAt':_0x148f20[_0x4000('0x60')],'updatedAt':_0x148f20['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x4000('0x26')](respondWithFilteredResult(_0x1e9b51,_0x183b38))['catch'](handleError(_0x1e9b51,null));};exports[_0x4000('0x64')]=function(_0x32cbc2,_0x285733,_0x4f99a4){var _0x2a448d={};var _0x2a79ff={};var _0x3aaf5f;var _0x97031e;return db[_0x4000('0x45')][_0x4000('0x58')]({'where':{'id':_0x32cbc2[_0x4000('0x55')]['id']}})[_0x4000('0x26')](handleEntityNotFound(_0x285733,null))[_0x4000('0x26')](function(_0x453746){if(_0x453746){_0x3aaf5f=_0x453746;_0x2a79ff[_0x4000('0x34')]=_[_0x4000('0x36')](db[_0x4000('0x65')][_0x4000('0x31')]);_0x2a79ff['query']=_['keys'](_0x32cbc2[_0x4000('0x35')]);_0x2a79ff[_0x4000('0x37')]=_[_0x4000('0x38')](_0x2a79ff['model'],_0x2a79ff['query']);_0x2a448d[_0x4000('0x39')]=_[_0x4000('0x38')](_0x2a79ff[_0x4000('0x34')],qs[_0x4000('0x3a')](_0x32cbc2[_0x4000('0x35')][_0x4000('0x3a')]));_0x2a448d[_0x4000('0x39')]=_0x2a448d[_0x4000('0x39')]['length']?_0x2a448d[_0x4000('0x39')]:_0x2a79ff[_0x4000('0x34')];_0x2a448d[_0x4000('0x3c')]=qs['sort'](_0x32cbc2[_0x4000('0x35')]['sort']);_0x2a448d[_0x4000('0x40')]=qs[_0x4000('0x37')](_[_0x4000('0x3e')](_0x32cbc2[_0x4000('0x35')],_0x2a79ff[_0x4000('0x37')]));if(_0x32cbc2[_0x4000('0x35')][_0x4000('0x3f')]){_0x2a448d[_0x4000('0x40')]=_[_0x4000('0x43')](_0x2a448d[_0x4000('0x40')],{'$or':_[_0x4000('0x30')](_0x2a448d['attributes'],function(_0x24a3f6){var _0x523c2b={};_0x523c2b[_0x24a3f6]={'$like':'%'+_0x32cbc2[_0x4000('0x35')][_0x4000('0x3f')]+'%'};return _0x523c2b;})});}_0x2a448d=_[_0x4000('0x43')]({},_0x2a448d,_0x32cbc2[_0x4000('0x44')]);return _0x3aaf5f[_0x4000('0x64')](_0x2a448d);}})[_0x4000('0x26')](function(_0x40bfca){if(_0x40bfca){_0x97031e=_0x40bfca[_0x4000('0x4a')];if(!_0x32cbc2[_0x4000('0x35')]['hasOwnProperty']('nolimit')){_0x2a448d[_0x4000('0x1f')]=qs[_0x4000('0x1f')](_0x32cbc2[_0x4000('0x35')][_0x4000('0x1f')]);_0x2a448d[_0x4000('0x21')]=qs[_0x4000('0x21')](_0x32cbc2[_0x4000('0x35')][_0x4000('0x21')]);}return _0x3aaf5f[_0x4000('0x64')](_0x2a448d);}})[_0x4000('0x26')](function(_0x101fc6){if(_0x101fc6){return _0x101fc6?{'count':_0x97031e,'rows':_0x101fc6}:null;}})[_0x4000('0x26')](respondWithResult(_0x285733,null))['catch'](handleError(_0x285733,null));};exports[_0x4000('0x66')]=function(_0x52d6f8,_0x55d635,_0x2a6020){var _0x4a81ad=_0x52d6f8[_0x4000('0x4d')][_0x4000('0x67')];return db[_0x4000('0x65')][_0x4000('0x68')]({'where':{'id':_0x4a81ad},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4000('0x69'),'attributes':['id',_0x4000('0x2d'),'online',_0x4000('0x6a'),_0x4000('0x6b')],'raw':!![]}]})[_0x4000('0x26')](function(_0xe08f0d){if(_0xe08f0d){var _0x48ce2c=_['flatMap'](_0xe08f0d,function(_0x166c67){var _0x337ca1=_0x166c67['get']({'plain':!![]});return _0x337ca1[_0x4000('0x69')];});return db[_0x4000('0x45')]['find']({'where':{'id':_0x52d6f8[_0x4000('0x55')]['id']}})[_0x4000('0x26')](function(_0x178b9f){return db[_0x4000('0x6c')][_0x4000('0x6d')](function(_0x5a5757){return _0x178b9f[_0x4000('0x66')](_0x4a81ad,{'transaction':_0x5a5757})[_0x4000('0x26')](function(){return BPromise[_0x4000('0x6e')](_0x48ce2c,function(_0xd5a93f){return db[_0x4000('0x59')][_0x4000('0x6f')]({'where':{'UserId':_0xd5a93f['id'],'OpenchannelQueueId':_0x52d6f8['params']['id']},'transaction':_0x5a5757});});})['then'](function(){_0x48ce2c['forEach'](function(_0x2c3b4c){socket[_0x4000('0x70')](_0x4000('0x71'),{'UserId':_0x2c3b4c['id'],'OpenchannelQueueId':_0x178b9f['id']});});});});});}})[_0x4000('0x26')](respondWithStatusCode(_0x55d635,null))['catch'](handleError(_0x55d635,null));};exports[_0x4000('0x72')]=function(_0x9b589c,_0x275b3c,_0x9711d9){return db[_0x4000('0x65')]['findAll']({'where':{'id':_0x9b589c[_0x4000('0x35')][_0x4000('0x67')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4000('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x275b3c,null))[_0x4000('0x26')](function(_0x3f41b1){var _0x54aa9f=_['map'](_0x3f41b1,'id');var _0xc7b4f7=[];var _0x30dec4=[];var _0x5844bf=squel[_0x4000('0x73')]();_0x5844bf[_0x4000('0x74')](_0x4000('0x75'))[_0x4000('0x76')](_0x4000('0x77'),'tq')[_0x4000('0x78')](_0x4000('0x79'),'ut',_0x4000('0x7a'))[_0x4000('0x40')](_0x4000('0x7b'),_0x9b589c[_0x4000('0x55')]['id']);for(var _0x23b4f8=0x0;_0x23b4f8<_0x3f41b1['length'];_0x23b4f8+=0x1){let _0x149ea8=_0x3f41b1[_0x23b4f8];for(var _0x45d62d=0x0;_0x45d62d<_0x149ea8[_0x4000('0x69')]['length'];_0x45d62d+=0x1){let _0x3ececd=_0x149ea8[_0x4000('0x69')][_0x45d62d];var _0xdacb8d=_0x5844bf[_0x4000('0x7c')]();_0xdacb8d[_0x4000('0x40')]('ut.UserId\x20=\x20?',_0x3ececd['id']);_0x30dec4[_0x4000('0x7d')](db['sequelize'][_0x4000('0x35')](_0xdacb8d[_0x4000('0x7e')](),{'type':db['sequelize'][_0x4000('0x7f')][_0x4000('0x80')]})[_0x4000('0x26')](function(_0x4c3122){if(_0x4c3122['length']===0x1){return _0x3ececd['id'];}else{var _0x547250=_[_0x4000('0x81')](_[_0x4000('0x30')](_0x4c3122,_0x4000('0x82')),function(_0xc30920){return _[_0x4000('0x83')](_0x54aa9f,_0xc30920);});if(_0x547250){return _0x3ececd['id'];}}}));}}return BPromise['all'](_0x30dec4)[_0x4000('0x26')](function(_0x1ce7e3){_0xc7b4f7=_(_0xc7b4f7)['union'](_0x1ce7e3)[_0x4000('0x84')]()['value']();return db[_0x4000('0x45')]['find']({'where':{'id':_0x9b589c['params']['id']}})[_0x4000('0x26')](function(_0x1d7df3){return db[_0x4000('0x6c')]['transaction'](function(_0x218447){return _0x1d7df3[_0x4000('0x72')](_0x9b589c[_0x4000('0x35')]['ids'],{'transaction':_0x218447})['then'](function(){if(!_['isEmpty'](_0xc7b4f7)){return _0x1d7df3['removeAgents'](_0xc7b4f7,{'transaction':_0x218447});}})[_0x4000('0x26')](function(){_0xc7b4f7[_0x4000('0x85')](function(_0x417697){socket[_0x4000('0x70')]('userOpenchannelQueue:remove',{'UserId':_0x417697,'OpenchannelQueueId':_0x1d7df3['id']});});});});});});})['then'](respondWithStatusCode(_0x275b3c,null))['catch'](handleError(_0x275b3c,null));};exports[_0x4000('0x86')]=function(_0x114335,_0x117b4c,_0x4f9bef){return db[_0x4000('0x45')][_0x4000('0x52')]({'where':{'id':_0x114335[_0x4000('0x55')]['id']}})[_0x4000('0x26')](handleEntityNotFound(_0x117b4c,null))[_0x4000('0x26')](function(_0x1072e0){if(_0x1072e0){return _0x1072e0['addAgents'](_0x114335[_0x4000('0x4d')][_0x4000('0x67')],_[_0x4000('0x87')](_0x114335[_0x4000('0x4d')],[_0x4000('0x67'),'id'])||{})[_0x4000('0x88')](function(_0x1b3708){for(var _0x1729c9=0x0;_0x1729c9<_0x114335[_0x4000('0x4d')][_0x4000('0x67')]['length'];_0x1729c9+=0x1){socket['emit'](_0x4000('0x71'),{'UserId':Number(_0x114335['body']['ids'][_0x1729c9]),'OpenchannelQueueId':Number(_0x114335[_0x4000('0x55')]['id'])});}return _0x1b3708;});}})[_0x4000('0x26')](respondWithResult(_0x117b4c,null))[_0x4000('0x48')](handleError(_0x117b4c,null));};exports[_0x4000('0x89')]=function(_0x2219b2,_0x5b74a1,_0x24b7cd){return db[_0x4000('0x45')][_0x4000('0x52')]({'where':{'id':_0x2219b2['params']['id']}})[_0x4000('0x26')](handleEntityNotFound(_0x5b74a1,null))[_0x4000('0x26')](function(_0x3549da){if(_0x3549da){return _0x3549da[_0x4000('0x89')](_0x2219b2[_0x4000('0x35')][_0x4000('0x67')])[_0x4000('0x26')](function(){if(_[_0x4000('0x8a')](_0x2219b2[_0x4000('0x35')][_0x4000('0x67')])){for(var _0x3d08a1=0x0;_0x3d08a1<_0x2219b2[_0x4000('0x35')][_0x4000('0x67')][_0x4000('0x4a')];_0x3d08a1+=0x1){socket[_0x4000('0x70')](_0x4000('0x8b'),{'UserId':Number(_0x2219b2[_0x4000('0x35')]['ids'][_0x3d08a1]),'OpenchannelQueueId':Number(_0x2219b2['params']['id'])});}}else{socket['emit'](_0x4000('0x8b'),{'UserId':Number(_0x2219b2[_0x4000('0x35')]['ids']),'OpenchannelQueueId':Number(_0x2219b2[_0x4000('0x55')]['id'])});}});}})[_0x4000('0x26')](respondWithStatusCode(_0x5b74a1,null))[_0x4000('0x48')](handleError(_0x5b74a1,null));};exports[_0x4000('0x8c')]=function(_0x180f1c,_0x3721bf,_0x7528a4){var _0x7de333={};var _0x10fbf4={};var _0x19e271;var _0x571470;return db['OpenchannelQueue'][_0x4000('0x58')]({'where':{'id':_0x180f1c[_0x4000('0x55')]['id']}})[_0x4000('0x26')](handleEntityNotFound(_0x3721bf,null))[_0x4000('0x26')](function(_0x2dd5bb){if(_0x2dd5bb){_0x19e271=_0x2dd5bb;_0x10fbf4[_0x4000('0x34')]=_[_0x4000('0x36')](db[_0x4000('0x5b')]['rawAttributes']);_0x10fbf4[_0x4000('0x35')]=_[_0x4000('0x36')](_0x180f1c['query']);_0x10fbf4[_0x4000('0x37')]=_[_0x4000('0x38')](_0x10fbf4[_0x4000('0x34')],_0x10fbf4[_0x4000('0x35')]);_0x7de333[_0x4000('0x39')]=_[_0x4000('0x38')](_0x10fbf4[_0x4000('0x34')],qs[_0x4000('0x3a')](_0x180f1c[_0x4000('0x35')][_0x4000('0x3a')]));_0x7de333['attributes']=_0x7de333[_0x4000('0x39')][_0x4000('0x4a')]?_0x7de333[_0x4000('0x39')]:_0x10fbf4['model'];_0x7de333[_0x4000('0x3c')]=qs[_0x4000('0x3d')](_0x180f1c[_0x4000('0x35')][_0x4000('0x3d')]);_0x7de333['where']=qs[_0x4000('0x37')](_[_0x4000('0x3e')](_0x180f1c['query'],_0x10fbf4[_0x4000('0x37')]));if(_0x180f1c[_0x4000('0x35')][_0x4000('0x3f')]){_0x7de333['where']=_['merge'](_0x7de333[_0x4000('0x40')],{'$or':_[_0x4000('0x30')](_0x7de333[_0x4000('0x39')],function(_0x2ee645){var _0x3393d3={};_0x3393d3[_0x2ee645]={'$like':'%'+_0x180f1c[_0x4000('0x35')][_0x4000('0x3f')]+'%'};return _0x3393d3;})});}_0x7de333=_[_0x4000('0x43')]({},_0x7de333,_0x180f1c[_0x4000('0x44')]);return _0x19e271[_0x4000('0x8c')](_0x7de333);}})[_0x4000('0x26')](function(_0x4fc528){if(_0x4fc528){_0x571470=_0x4fc528['length'];if(!_0x180f1c['query'][_0x4000('0x5a')](_0x4000('0x3b'))){_0x7de333['limit']=qs['limit'](_0x180f1c[_0x4000('0x35')][_0x4000('0x1f')]);_0x7de333[_0x4000('0x21')]=qs['offset'](_0x180f1c[_0x4000('0x35')][_0x4000('0x21')]);}return _0x19e271[_0x4000('0x8c')](_0x7de333);}})[_0x4000('0x26')](function(_0x371a68){if(_0x371a68){return _0x371a68?{'count':_0x571470,'rows':_0x371a68}:null;}})[_0x4000('0x26')](respondWithResult(_0x3721bf,null))[_0x4000('0x48')](handleError(_0x3721bf,null));};
\ No newline at end of file
+var _0x099b=['keys','intersection','model','attributes','fields','length','nolimit','sort','filters','pick','filter','where','merge','map','VIRTUAL','options','OpenchannelQueue','include','findAll','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserOpenchannelQueue','hasOwnProperty','OpenchannelQueueId','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','format','%s/%s','SIP','createdAt','Team','order','getTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','includes','all','compact','value','isEmpty','removeAgents','emit','addAgents','spread','userOpenchannelQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','then','OpenchannelQueues','UserProfileResource','destroy','error','name','send','index','rawAttributes','fieldName','key','query'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x099b,0x174));var _0xb099=function(_0x494dc7,_0x28c380){_0x494dc7=_0x494dc7-0x0;var _0x36c980=_0x099b[_0x494dc7];return _0x36c980;};'use strict';var emlformat=require(_0xb099('0x0'));var rimraf=require(_0xb099('0x1'));var zipdir=require(_0xb099('0x2'));var jsonpatch=require(_0xb099('0x3'));var rp=require('request-promise');var moment=require(_0xb099('0x4'));var BPromise=require(_0xb099('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xb099('0x6'));var csv=require(_0xb099('0x7'));var ejs=require(_0xb099('0x8'));var fs=require('fs');var fs_extra=require(_0xb099('0x9'));var _=require(_0xb099('0xa'));var squel=require(_0xb099('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb099('0xc'));var toCsv=require(_0xb099('0x7'));var querystring=require(_0xb099('0xd'));var Papa=require(_0xb099('0xe'));var Redis=require('ioredis');var authService=require(_0xb099('0xf'));var qs=require(_0xb099('0x10'));var as=require(_0xb099('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb099('0x12'))(_0xb099('0x13'));var utils=require('../../config/utils');var config=require(_0xb099('0x14'));var licenseUtil=require(_0xb099('0x15'));var db=require(_0xb099('0x16'))['db'];config[_0xb099('0x17')]=_[_0xb099('0x18')](config[_0xb099('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xb099('0x19'))(new Redis(config[_0xb099('0x17')]));require('./openchannelQueue.socket')[_0xb099('0x1a')](socket);function respondWithStatusCode(_0x53f5db,_0x19ef98){_0x19ef98=_0x19ef98||0xcc;return function(_0x783ec4){if(_0x783ec4){return _0x53f5db[_0xb099('0x1b')](_0x19ef98);}return _0x53f5db[_0xb099('0x1c')](_0x19ef98)[_0xb099('0x1d')]();};}function respondWithResult(_0x23f33f,_0xf84a68){_0xf84a68=_0xf84a68||0xc8;return function(_0x3f6d46){if(_0x3f6d46){return _0x23f33f[_0xb099('0x1c')](_0xf84a68)[_0xb099('0x1e')](_0x3f6d46);}};}function respondWithFilteredResult(_0x4c4907,_0x693218){return function(_0x5a7be0){if(_0x5a7be0){var _0xd67cbe=typeof _0x693218[_0xb099('0x1f')]==='undefined'&&typeof _0x693218[_0xb099('0x20')]===_0xb099('0x21');var _0x595003=_0x5a7be0[_0xb099('0x22')];var _0x3bf156=_0xd67cbe?0x0:_0x693218[_0xb099('0x1f')];var _0x45a8ba=_0xd67cbe?_0x5a7be0['count']:_0x693218[_0xb099('0x1f')]+_0x693218['limit'];var _0xd6d7f3;if(_0x45a8ba>=_0x595003){_0x45a8ba=_0x595003;_0xd6d7f3=0xc8;}else{_0xd6d7f3=0xce;}_0x4c4907['status'](_0xd6d7f3);return _0x4c4907[_0xb099('0x23')](_0xb099('0x24'),_0x3bf156+'-'+_0x45a8ba+'/'+_0x595003)['json'](_0x5a7be0);}return null;};}function patchUpdates(_0x4af0bb){return function(_0x1fb2ce){try{jsonpatch['apply'](_0x1fb2ce,_0x4af0bb,!![]);}catch(_0x3a56b0){return BPromise[_0xb099('0x25')](_0x3a56b0);}return _0x1fb2ce[_0xb099('0x26')]();};}function saveUpdates(_0x2d2388,_0xf4a929){return function(_0xa5bef0){if(_0xa5bef0){return _0xa5bef0['update'](_0x2d2388)[_0xb099('0x27')](function(_0x3641b6){return _0x3641b6;});}return null;};}function removeEntity(_0x386c64,_0x5f5546){return function(_0x5dc376){if(_0x5dc376){return _0x5dc376['destroy']()['then'](function(){var _0xd8fc74=_0x5dc376['get']({'plain':!![]});var _0x296624=_0xb099('0x28');return db[_0xb099('0x29')][_0xb099('0x2a')]({'where':{'type':_0x296624,'resourceId':_0xd8fc74['id']}})[_0xb099('0x27')](function(){return _0x5dc376;});})[_0xb099('0x27')](function(){_0x386c64['status'](0xcc)[_0xb099('0x1d')]();});}};}function handleEntityNotFound(_0x25a759,_0x54cba6){return function(_0x1bbba1){if(!_0x1bbba1){_0x25a759[_0xb099('0x1b')](0x194);}return _0x1bbba1;};}function handleError(_0x4aa0ac,_0x2e5c0f){_0x2e5c0f=_0x2e5c0f||0x1f4;return function(_0x4276c2){logger[_0xb099('0x2b')](_0x4276c2['stack']);if(_0x4276c2[_0xb099('0x2c')]){delete _0x4276c2[_0xb099('0x2c')];}_0x4aa0ac[_0xb099('0x1c')](_0x2e5c0f)[_0xb099('0x2d')](_0x4276c2);};}exports[_0xb099('0x2e')]=function(_0x1889f3,_0x3b4de4){var _0x2ea16b={},_0x37f759={},_0x190be1={'count':0x0,'rows':[]};var _0x5d30a2=_['map'](db['OpenchannelQueue'][_0xb099('0x2f')],function(_0x50ea2c){return{'name':_0x50ea2c[_0xb099('0x30')],'type':_0x50ea2c['type'][_0xb099('0x31')]};});_0x37f759['model']=_['map'](_0x5d30a2,_0xb099('0x2c'));_0x37f759[_0xb099('0x32')]=_[_0xb099('0x33')](_0x1889f3[_0xb099('0x32')]);_0x37f759['filters']=_[_0xb099('0x34')](_0x37f759[_0xb099('0x35')],_0x37f759[_0xb099('0x32')]);_0x2ea16b[_0xb099('0x36')]=_['intersection'](_0x37f759[_0xb099('0x35')],qs[_0xb099('0x37')](_0x1889f3[_0xb099('0x32')][_0xb099('0x37')]));_0x2ea16b['attributes']=_0x2ea16b[_0xb099('0x36')][_0xb099('0x38')]?_0x2ea16b[_0xb099('0x36')]:_0x37f759[_0xb099('0x35')];if(!_0x1889f3['query']['hasOwnProperty'](_0xb099('0x39'))){_0x2ea16b[_0xb099('0x20')]=qs[_0xb099('0x20')](_0x1889f3[_0xb099('0x32')][_0xb099('0x20')]);_0x2ea16b[_0xb099('0x1f')]=qs[_0xb099('0x1f')](_0x1889f3[_0xb099('0x32')][_0xb099('0x1f')]);}_0x2ea16b['order']=qs[_0xb099('0x3a')](_0x1889f3[_0xb099('0x32')][_0xb099('0x3a')]);_0x2ea16b['where']=qs[_0xb099('0x3b')](_[_0xb099('0x3c')](_0x1889f3[_0xb099('0x32')],_0x37f759['filters']),_0x5d30a2);if(_0x1889f3[_0xb099('0x32')][_0xb099('0x3d')]){_0x2ea16b[_0xb099('0x3e')]=_[_0xb099('0x3f')](_0x2ea16b[_0xb099('0x3e')],{'$or':_[_0xb099('0x40')](_0x5d30a2,function(_0x54b267){if(_0x54b267['type']!==_0xb099('0x41')){var _0x1b4afe={};_0x1b4afe[_0x54b267['name']]={'$like':'%'+_0x1889f3[_0xb099('0x32')][_0xb099('0x3d')]+'%'};return _0x1b4afe;}})});}_0x2ea16b=_['merge']({},_0x2ea16b,_0x1889f3[_0xb099('0x42')]);var _0x319a87={'where':_0x2ea16b[_0xb099('0x3e')]};return db[_0xb099('0x43')][_0xb099('0x22')](_0x319a87)['then'](function(_0x1b42ea){_0x190be1[_0xb099('0x22')]=_0x1b42ea;if(_0x1889f3[_0xb099('0x32')]['includeAll']){_0x2ea16b[_0xb099('0x44')]=[{'all':!![]}];}return db[_0xb099('0x43')][_0xb099('0x45')](_0x2ea16b);})[_0xb099('0x27')](function(_0x18682a){_0x190be1[_0xb099('0x46')]=_0x18682a;return _0x190be1;})[_0xb099('0x27')](respondWithFilteredResult(_0x3b4de4,_0x2ea16b))[_0xb099('0x47')](handleError(_0x3b4de4,null));};exports[_0xb099('0x48')]=function(_0x5ecdb3,_0x89d306){var _0x4118fb={'raw':!![],'where':{'id':_0x5ecdb3[_0xb099('0x49')]['id']}},_0x5bd882={};_0x5bd882[_0xb099('0x35')]=_['keys'](db[_0xb099('0x43')][_0xb099('0x2f')]);_0x5bd882[_0xb099('0x32')]=_[_0xb099('0x33')](_0x5ecdb3[_0xb099('0x32')]);_0x5bd882['filters']=_[_0xb099('0x34')](_0x5bd882[_0xb099('0x35')],_0x5bd882[_0xb099('0x32')]);_0x4118fb[_0xb099('0x36')]=_[_0xb099('0x34')](_0x5bd882[_0xb099('0x35')],qs[_0xb099('0x37')](_0x5ecdb3['query'][_0xb099('0x37')]));_0x4118fb[_0xb099('0x36')]=_0x4118fb[_0xb099('0x36')][_0xb099('0x38')]?_0x4118fb[_0xb099('0x36')]:_0x5bd882['model'];if(_0x5ecdb3[_0xb099('0x32')][_0xb099('0x4a')]){_0x4118fb[_0xb099('0x44')]=[{'all':!![]}];}_0x4118fb=_['merge']({},_0x4118fb,_0x5ecdb3['options']);return db[_0xb099('0x43')][_0xb099('0x4b')](_0x4118fb)[_0xb099('0x27')](handleEntityNotFound(_0x89d306,null))[_0xb099('0x27')](respondWithResult(_0x89d306,null))[_0xb099('0x47')](handleError(_0x89d306,null));};exports[_0xb099('0x4c')]=function(_0xa8e95b,_0x19f7cd){return db['OpenchannelQueue'][_0xb099('0x4c')](_0xa8e95b[_0xb099('0x4d')],{})[_0xb099('0x27')](function(_0x2f0ee9){var _0x4381f8=_0xa8e95b[_0xb099('0x4e')]['get']({'plain':!![]});if(!_0x4381f8)throw new Error(_0xb099('0x4f'));if(_0x4381f8[_0xb099('0x50')]==='user'){var _0x2f266e=_0x2f0ee9[_0xb099('0x51')]({'plain':!![]});var _0x351c22='OpenchannelQueues';return db[_0xb099('0x52')]['find']({'where':{'name':_0x351c22,'userProfileId':_0x4381f8[_0xb099('0x53')]},'raw':!![]})[_0xb099('0x27')](function(_0x2dbeef){if(_0x2dbeef&&_0x2dbeef[_0xb099('0x54')]===0x0){return db['UserProfileResource'][_0xb099('0x4c')]({'name':_0x2f266e[_0xb099('0x2c')],'resourceId':_0x2f266e['id'],'type':_0x2dbeef[_0xb099('0x2c')],'sectionId':_0x2dbeef['id']},{})[_0xb099('0x27')](function(){return _0x2f0ee9;});}else{return _0x2f0ee9;}})[_0xb099('0x47')](function(_0x1ffead){logger[_0xb099('0x2b')](_0xb099('0x55'),_0x1ffead);throw _0x1ffead;});}return _0x2f0ee9;})['then'](respondWithResult(_0x19f7cd,0xc9))[_0xb099('0x47')](handleError(_0x19f7cd,null));};exports['update']=function(_0x3ab2ed,_0xcb74ba){if(_0x3ab2ed[_0xb099('0x4d')]['id']){delete _0x3ab2ed[_0xb099('0x4d')]['id'];}return db[_0xb099('0x43')]['find']({'where':{'id':_0x3ab2ed[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0xcb74ba,null))['then'](saveUpdates(_0x3ab2ed['body'],null))[_0xb099('0x27')](respondWithResult(_0xcb74ba,null))['catch'](handleError(_0xcb74ba,null));};exports[_0xb099('0x2a')]=function(_0x12a452,_0x107c56){return db['OpenchannelQueue'][_0xb099('0x4b')]({'where':{'id':_0x12a452[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0x107c56,null))['then'](removeEntity(_0x107c56,null))[_0xb099('0x47')](handleError(_0x107c56,null));};exports[_0xb099('0x56')]=function(_0x5abafd,_0x298465){return db[_0xb099('0x43')][_0xb099('0x56')]()[_0xb099('0x27')](respondWithResult(_0x298465,null))[_0xb099('0x47')](handleError(_0x298465,null));};exports['getMembers']=function(_0x48090b,_0x4bea47,_0x379144){var _0x330d81={'raw':!![],'where':{}},_0x5c6a17={},_0x2ca8c4;return db[_0xb099('0x43')][_0xb099('0x57')]({'where':{'id':_0x48090b[_0xb099('0x49')]['id']}})['then'](handleEntityNotFound(_0x4bea47,null))[_0xb099('0x27')](function(_0x495c9e){if(_0x495c9e){_0x2ca8c4=_0x495c9e[_0xb099('0x51')]({'plain':!![]});_0x5c6a17[_0xb099('0x35')]=_[_0xb099('0x33')](db[_0xb099('0x58')]['rawAttributes']);_0x5c6a17[_0xb099('0x32')]=_[_0xb099('0x33')](_0x48090b[_0xb099('0x32')]);_0x5c6a17[_0xb099('0x3b')]=_[_0xb099('0x34')](_0x5c6a17['model'],_0x5c6a17['query']);_0x330d81[_0xb099('0x36')]=_[_0xb099('0x34')](_0x5c6a17[_0xb099('0x35')],qs[_0xb099('0x37')](_0x48090b[_0xb099('0x32')][_0xb099('0x37')]));_0x330d81[_0xb099('0x36')]=_0x330d81[_0xb099('0x36')][_0xb099('0x38')]?_0x330d81[_0xb099('0x36')]:_0x5c6a17['model'];if(!_0x48090b[_0xb099('0x32')][_0xb099('0x59')]('nolimit')){_0x330d81[_0xb099('0x20')]=qs[_0xb099('0x20')](_0x48090b[_0xb099('0x32')][_0xb099('0x20')]);_0x330d81['offset']=qs[_0xb099('0x1f')](_0x48090b['query'][_0xb099('0x1f')]);}_0x330d81['order']=qs[_0xb099('0x3a')](_0x48090b[_0xb099('0x32')][_0xb099('0x3a')]);_0x330d81[_0xb099('0x3e')]=qs[_0xb099('0x3b')](_['pick'](_0x48090b['query'],_0x5c6a17[_0xb099('0x3b')]));_0x330d81['where'][_0xb099('0x5a')]=_0x495c9e['id'];if(_0x48090b[_0xb099('0x32')][_0xb099('0x3d')]){_0x330d81[_0xb099('0x3e')]=_[_0xb099('0x3f')](_0x330d81['where'],{'$or':_[_0xb099('0x40')](_0x330d81[_0xb099('0x36')],function(_0x43e95d){var _0xacb8cb={};_0xacb8cb[_0x43e95d]={'$like':'%'+_0x48090b[_0xb099('0x32')][_0xb099('0x3d')]+'%'};return _0xacb8cb;})});}_0x330d81=_[_0xb099('0x3f')]({},_0x330d81,_0x48090b[_0xb099('0x42')]);return db[_0xb099('0x58')][_0xb099('0x45')](_0x330d81);}})[_0xb099('0x27')](function(_0x313b76){if(_0x313b76){return db[_0xb099('0x5b')][_0xb099('0x5c')]({'where':{'id':_['map'](_0x313b76,_0xb099('0x5d')),'role':_0xb099('0x5e')},'attributes':['id','name',_0xb099('0x5f'),_0xb099('0x60'),'createdAt']});}})[_0xb099('0x27')](function(_0x2398bd){if(_0x2398bd){return{'count':_0x2398bd[_0xb099('0x22')],'rows':_['map'](_0x2398bd['rows'],function(_0x4397c7){return{'membername':_0x4397c7[_0xb099('0x2c')],'UserId':_0x4397c7['id'],'queue_name':_0x2ca8c4['name'],'OpenchannelQueueId':_0x2ca8c4['id'],'interface':util[_0xb099('0x61')](_0xb099('0x62'),_0xb099('0x63'),_0x4397c7[_0xb099('0x2c')]),'penalty':0x0,'paused':_0x4397c7['openchannelPause'],'createdAt':_0x4397c7[_0xb099('0x64')],'updatedAt':_0x4397c7[_0xb099('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb099('0x27')](respondWithFilteredResult(_0x4bea47,_0x330d81))[_0xb099('0x47')](handleError(_0x4bea47,null));};exports['getTeams']=function(_0xb5c882,_0x5391df,_0x3c8dcc){var _0xc226fa={};var _0x1a3050={};var _0x380543;var _0x47b791;return db[_0xb099('0x43')][_0xb099('0x57')]({'where':{'id':_0xb5c882[_0xb099('0x49')]['id']}})['then'](handleEntityNotFound(_0x5391df,null))[_0xb099('0x27')](function(_0x37c9c1){if(_0x37c9c1){_0x380543=_0x37c9c1;_0x1a3050[_0xb099('0x35')]=_[_0xb099('0x33')](db[_0xb099('0x65')]['rawAttributes']);_0x1a3050[_0xb099('0x32')]=_[_0xb099('0x33')](_0xb5c882[_0xb099('0x32')]);_0x1a3050[_0xb099('0x3b')]=_[_0xb099('0x34')](_0x1a3050['model'],_0x1a3050[_0xb099('0x32')]);_0xc226fa[_0xb099('0x36')]=_[_0xb099('0x34')](_0x1a3050[_0xb099('0x35')],qs[_0xb099('0x37')](_0xb5c882[_0xb099('0x32')][_0xb099('0x37')]));_0xc226fa[_0xb099('0x36')]=_0xc226fa[_0xb099('0x36')][_0xb099('0x38')]?_0xc226fa['attributes']:_0x1a3050['model'];_0xc226fa[_0xb099('0x66')]=qs[_0xb099('0x3a')](_0xb5c882['query'][_0xb099('0x3a')]);_0xc226fa[_0xb099('0x3e')]=qs[_0xb099('0x3b')](_['pick'](_0xb5c882['query'],_0x1a3050[_0xb099('0x3b')]));if(_0xb5c882[_0xb099('0x32')][_0xb099('0x3d')]){_0xc226fa[_0xb099('0x3e')]=_[_0xb099('0x3f')](_0xc226fa['where'],{'$or':_[_0xb099('0x40')](_0xc226fa['attributes'],function(_0x16de38){var _0x1cad80={};_0x1cad80[_0x16de38]={'$like':'%'+_0xb5c882[_0xb099('0x32')]['filter']+'%'};return _0x1cad80;})});}_0xc226fa=_[_0xb099('0x3f')]({},_0xc226fa,_0xb5c882[_0xb099('0x42')]);return _0x380543['getTeams'](_0xc226fa);}})[_0xb099('0x27')](function(_0x33b081){if(_0x33b081){_0x47b791=_0x33b081[_0xb099('0x38')];if(!_0xb5c882['query'][_0xb099('0x59')](_0xb099('0x39'))){_0xc226fa[_0xb099('0x20')]=qs['limit'](_0xb5c882[_0xb099('0x32')][_0xb099('0x20')]);_0xc226fa['offset']=qs[_0xb099('0x1f')](_0xb5c882['query']['offset']);}return _0x380543[_0xb099('0x67')](_0xc226fa);}})[_0xb099('0x27')](function(_0x377ab3){if(_0x377ab3){return _0x377ab3?{'count':_0x47b791,'rows':_0x377ab3}:null;}})[_0xb099('0x27')](respondWithResult(_0x5391df,null))['catch'](handleError(_0x5391df,null));};exports['addTeams']=function(_0x3870e1,_0x167d79,_0x53ffd7){var _0x3f12dd=_0x3870e1[_0xb099('0x4d')][_0xb099('0x68')];return db['Team']['findAll']({'where':{'id':_0x3f12dd},'attributes':['id'],'include':[{'model':db[_0xb099('0x5b')],'as':_0xb099('0x69'),'attributes':['id','name',_0xb099('0x6a'),_0xb099('0x6b'),_0xb099('0x6c')],'raw':!![]}]})[_0xb099('0x27')](function(_0x1a2485){if(_0x1a2485){var _0x44723e=_[_0xb099('0x6d')](_0x1a2485,function(_0x348456){var _0xf6ae07=_0x348456[_0xb099('0x51')]({'plain':!![]});return _0xf6ae07[_0xb099('0x69')];});return db[_0xb099('0x43')][_0xb099('0x4b')]({'where':{'id':_0x3870e1[_0xb099('0x49')]['id']}})['then'](function(_0x3246cb){return db[_0xb099('0x6e')][_0xb099('0x6f')](function(_0x2c3473){return _0x3246cb['addTeams'](_0x3f12dd,{'transaction':_0x2c3473})[_0xb099('0x27')](function(){return BPromise[_0xb099('0x70')](_0x44723e,function(_0x2536de){return db[_0xb099('0x58')]['findOrCreate']({'where':{'UserId':_0x2536de['id'],'OpenchannelQueueId':_0x3870e1[_0xb099('0x49')]['id']},'transaction':_0x2c3473});});})[_0xb099('0x27')](function(){_0x44723e[_0xb099('0x71')](function(_0x2257f1){socket['emit'](_0xb099('0x72'),{'UserId':_0x2257f1['id'],'OpenchannelQueueId':_0x3246cb['id']});});});});});}})[_0xb099('0x27')](respondWithStatusCode(_0x167d79,null))[_0xb099('0x47')](handleError(_0x167d79,null));};exports[_0xb099('0x73')]=function(_0x15f229,_0x2859be,_0x46c03a){return db[_0xb099('0x65')][_0xb099('0x45')]({'where':{'id':_0x15f229[_0xb099('0x32')][_0xb099('0x68')]},'attributes':['id'],'include':[{'model':db[_0xb099('0x5b')],'as':_0xb099('0x69'),'attributes':['id'],'raw':!![]}]})[_0xb099('0x27')](handleEntityNotFound(_0x2859be,null))[_0xb099('0x27')](function(_0x1e02ae){var _0x35d024=_['map'](_0x1e02ae,'id');var _0xd237d1=[];var _0x27569d=[];var _0x520214=squel[_0xb099('0x74')]();_0x520214[_0xb099('0x75')](_0xb099('0x76'))[_0xb099('0x77')](_0xb099('0x78'),'tq')[_0xb099('0x79')](_0xb099('0x7a'),'ut',_0xb099('0x7b'))[_0xb099('0x3e')](_0xb099('0x7c'),_0x15f229['params']['id']);for(var _0x5f5554=0x0;_0x5f5554<_0x1e02ae[_0xb099('0x38')];_0x5f5554+=0x1){let _0x5524af=_0x1e02ae[_0x5f5554];for(var _0x474ab7=0x0;_0x474ab7<_0x5524af[_0xb099('0x69')][_0xb099('0x38')];_0x474ab7+=0x1){let _0x32cc68=_0x5524af[_0xb099('0x69')][_0x474ab7];var _0x24251a=_0x520214[_0xb099('0x7d')]();_0x24251a[_0xb099('0x3e')]('ut.UserId\x20=\x20?',_0x32cc68['id']);_0x27569d['push'](db['sequelize'][_0xb099('0x32')](_0x24251a[_0xb099('0x7e')](),{'type':db[_0xb099('0x6e')][_0xb099('0x7f')][_0xb099('0x80')]})[_0xb099('0x27')](function(_0x281de4){if(_0x281de4[_0xb099('0x38')]===0x1){return _0x32cc68['id'];}else{var _0x327b30=_[_0xb099('0x81')](_[_0xb099('0x40')](_0x281de4,'TeamId'),function(_0x393933){return _[_0xb099('0x82')](_0x35d024,_0x393933);});if(_0x327b30){return _0x32cc68['id'];}}}));}}return BPromise[_0xb099('0x83')](_0x27569d)['then'](function(_0x155fe4){_0xd237d1=_(_0xd237d1)['union'](_0x155fe4)[_0xb099('0x84')]()[_0xb099('0x85')]();return db[_0xb099('0x43')][_0xb099('0x4b')]({'where':{'id':_0x15f229[_0xb099('0x49')]['id']}})[_0xb099('0x27')](function(_0x13d242){return db[_0xb099('0x6e')]['transaction'](function(_0x11f2f4){return _0x13d242[_0xb099('0x73')](_0x15f229[_0xb099('0x32')][_0xb099('0x68')],{'transaction':_0x11f2f4})[_0xb099('0x27')](function(){if(!_[_0xb099('0x86')](_0xd237d1)){return _0x13d242[_0xb099('0x87')](_0xd237d1,{'transaction':_0x11f2f4});}})[_0xb099('0x27')](function(){_0xd237d1['forEach'](function(_0x2f543e){socket[_0xb099('0x88')]('userOpenchannelQueue:remove',{'UserId':_0x2f543e,'OpenchannelQueueId':_0x13d242['id']});});});});});});})[_0xb099('0x27')](respondWithStatusCode(_0x2859be,null))[_0xb099('0x47')](handleError(_0x2859be,null));};exports[_0xb099('0x89')]=function(_0x2484f5,_0xf52ab9,_0x11de46){return db['OpenchannelQueue'][_0xb099('0x4b')]({'where':{'id':_0x2484f5[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0xf52ab9,null))[_0xb099('0x27')](function(_0x55d4b5){if(_0x55d4b5){return _0x55d4b5[_0xb099('0x89')](_0x2484f5[_0xb099('0x4d')]['ids'],_['omit'](_0x2484f5[_0xb099('0x4d')],['ids','id'])||{})[_0xb099('0x8a')](function(_0x417cc6){for(var _0x137321=0x0;_0x137321<_0x2484f5[_0xb099('0x4d')][_0xb099('0x68')][_0xb099('0x38')];_0x137321+=0x1){socket[_0xb099('0x88')]('userOpenchannelQueue:save',{'UserId':Number(_0x2484f5[_0xb099('0x4d')][_0xb099('0x68')][_0x137321]),'OpenchannelQueueId':Number(_0x2484f5[_0xb099('0x49')]['id'])});}return _0x417cc6;});}})['then'](respondWithResult(_0xf52ab9,null))[_0xb099('0x47')](handleError(_0xf52ab9,null));};exports[_0xb099('0x87')]=function(_0x39fd0e,_0x4d0425,_0x258f06){return db[_0xb099('0x43')][_0xb099('0x4b')]({'where':{'id':_0x39fd0e[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0x4d0425,null))[_0xb099('0x27')](function(_0x3b162e){if(_0x3b162e){return _0x3b162e[_0xb099('0x87')](_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')])['then'](function(){if(_['isArray'](_0x39fd0e['query'][_0xb099('0x68')])){for(var _0x1d9c7d=0x0;_0x1d9c7d<_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')]['length'];_0x1d9c7d+=0x1){socket['emit'](_0xb099('0x8b'),{'UserId':Number(_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')][_0x1d9c7d]),'OpenchannelQueueId':Number(_0x39fd0e['params']['id'])});}}else{socket[_0xb099('0x88')](_0xb099('0x8b'),{'UserId':Number(_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')]),'OpenchannelQueueId':Number(_0x39fd0e[_0xb099('0x49')]['id'])});}});}})[_0xb099('0x27')](respondWithStatusCode(_0x4d0425,null))['catch'](handleError(_0x4d0425,null));};exports['getAgents']=function(_0x4d78d3,_0x9960ed,_0xaf4b66){var _0x4e9f3e={};var _0x140d38={};var _0x16d19a;var _0x50ef9d;return db[_0xb099('0x43')][_0xb099('0x57')]({'where':{'id':_0x4d78d3[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0x9960ed,null))[_0xb099('0x27')](function(_0x4452c7){if(_0x4452c7){_0x16d19a=_0x4452c7;_0x140d38[_0xb099('0x35')]=_[_0xb099('0x33')](db[_0xb099('0x5b')][_0xb099('0x2f')]);_0x140d38['query']=_[_0xb099('0x33')](_0x4d78d3[_0xb099('0x32')]);_0x140d38[_0xb099('0x3b')]=_[_0xb099('0x34')](_0x140d38[_0xb099('0x35')],_0x140d38[_0xb099('0x32')]);_0x4e9f3e[_0xb099('0x36')]=_[_0xb099('0x34')](_0x140d38[_0xb099('0x35')],qs[_0xb099('0x37')](_0x4d78d3[_0xb099('0x32')][_0xb099('0x37')]));_0x4e9f3e[_0xb099('0x36')]=_0x4e9f3e[_0xb099('0x36')]['length']?_0x4e9f3e['attributes']:_0x140d38[_0xb099('0x35')];_0x4e9f3e['order']=qs['sort'](_0x4d78d3[_0xb099('0x32')][_0xb099('0x3a')]);_0x4e9f3e[_0xb099('0x3e')]=qs['filters'](_[_0xb099('0x3c')](_0x4d78d3['query'],_0x140d38[_0xb099('0x3b')]));if(_0x4d78d3[_0xb099('0x32')][_0xb099('0x3d')]){_0x4e9f3e['where']=_['merge'](_0x4e9f3e[_0xb099('0x3e')],{'$or':_[_0xb099('0x40')](_0x4e9f3e[_0xb099('0x36')],function(_0x4fd7fa){var _0x1b3932={};_0x1b3932[_0x4fd7fa]={'$like':'%'+_0x4d78d3[_0xb099('0x32')][_0xb099('0x3d')]+'%'};return _0x1b3932;})});}_0x4e9f3e=_[_0xb099('0x3f')]({},_0x4e9f3e,_0x4d78d3[_0xb099('0x42')]);return _0x16d19a[_0xb099('0x8c')](_0x4e9f3e);}})[_0xb099('0x27')](function(_0x18cb4d){if(_0x18cb4d){_0x50ef9d=_0x18cb4d[_0xb099('0x38')];if(!_0x4d78d3['query'][_0xb099('0x59')](_0xb099('0x39'))){_0x4e9f3e[_0xb099('0x20')]=qs['limit'](_0x4d78d3['query'][_0xb099('0x20')]);_0x4e9f3e[_0xb099('0x1f')]=qs[_0xb099('0x1f')](_0x4d78d3[_0xb099('0x32')][_0xb099('0x1f')]);}return _0x16d19a['getAgents'](_0x4e9f3e);}})['then'](function(_0x5b4ec0){if(_0x5b4ec0){return _0x5b4ec0?{'count':_0x50ef9d,'rows':_0x5b4ec0}:null;}})[_0xb099('0x27')](respondWithResult(_0x9960ed,null))[_0xb099('0x47')](handleError(_0x9960ed,null));};
\ No newline at end of file
index a868b63..4f6209d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a46=['remove','emit','hasOwnProperty','hook','events','setMaxListeners','update'];(function(_0x59cf22,_0x4e65d9){var _0x480d57=function(_0x70407b){while(--_0x70407b){_0x59cf22['push'](_0x59cf22['shift']());}};_0x480d57(++_0x4e65d9);}(_0x4a46,0xba));var _0x64a4=function(_0x1cff65,_0x2990df){_0x1cff65=_0x1cff65-0x0;var _0x2c88e7=_0x4a46[_0x1cff65];return _0x2c88e7;};'use strict';var EventEmitter=require(_0x64a4('0x0'));var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x64a4('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x64a4('0x2'),'afterDestroy':_0x64a4('0x3')};function emitEvent(_0x48059b){return function(_0x12a0d7,_0x46a1a5,_0x275c4b){OpenchannelQueueEvents[_0x64a4('0x4')](_0x48059b+':'+_0x12a0d7['id'],_0x12a0d7);OpenchannelQueueEvents[_0x64a4('0x4')](_0x48059b,_0x12a0d7);_0x275c4b(null);};}for(var e in events){if(events[_0x64a4('0x5')](e)){var event=events[e];OpenchannelQueue[_0x64a4('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xc89c=['emit','hook','../../mysqldb','setMaxListeners','save','update'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xc89c,0x1a6));var _0xcc89=function(_0x64958c,_0x43ed27){_0x64958c=_0x64958c-0x0;var _0x54e61f=_0xc89c[_0x64958c];return _0x54e61f;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xcc89('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xcc89('0x1')](0x0);var events={'afterCreate':_0xcc89('0x2'),'afterUpdate':_0xcc89('0x3'),'afterDestroy':'remove'};function emitEvent(_0x23b5aa){return function(_0x31da67,_0x86fc13,_0x3d7bd1){OpenchannelQueueEvents[_0xcc89('0x4')](_0x23b5aa+':'+_0x31da67['id'],_0x31da67);OpenchannelQueueEvents[_0xcc89('0x4')](_0x23b5aa,_0x31da67);_0x3d7bd1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0xcc89('0x5')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index d3dfe96..395eee0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2182=['OpenchannelQueue','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x245f3b,_0x5bb656){var _0x573d0e=function(_0x6313f0){while(--_0x6313f0){_0x245f3b['push'](_0x245f3b['shift']());}};_0x573d0e(++_0x5bb656);}(_0x2182,0x109));var _0x2218=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2182[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0x2218('0x0'));var logger=require(_0x2218('0x1'))(_0x2218('0x2'));var moment=require(_0x2218('0x3'));var BPromise=require(_0x2218('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2218('0x5'));var rimraf=require(_0x2218('0x6'));var config=require(_0x2218('0x7'));var attributes=require('./openchannelQueue.attributes');module[_0x2218('0x8')]=function(_0x4be881,_0xe2a979){return _0x4be881[_0x2218('0x9')](_0x2218('0xa'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1ca6=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue'];(function(_0x328aa1,_0x3ce2de){var _0x210ffc=function(_0x57d5e4){while(--_0x57d5e4){_0x328aa1['push'](_0x328aa1['shift']());}};_0x210ffc(++_0x3ce2de);}(_0x1ca6,0x108));var _0x61ca=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x1ca6[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x61ca('0x0'));var util=require(_0x61ca('0x1'));var logger=require(_0x61ca('0x2'))(_0x61ca('0x3'));var moment=require(_0x61ca('0x4'));var BPromise=require(_0x61ca('0x5'));var rp=require(_0x61ca('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x61ca('0x7'));var attributes=require(_0x61ca('0x8'));module[_0x61ca('0x9')]=function(_0x1c8e36,_0x49928c){return _0x1c8e36[_0x61ca('0xa')](_0x61ca('0xb'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21b61cd..18afa05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd0=['request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelQueue,\x20%s,\x20%s','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','options','raw','attributes','limit','include','map','model','find','where','ShowOpenchannelQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','localhost','./openchannelQueue.socket','register','request','then','info'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0x2cd0,0xf9));var _0x02cd=function(_0x32e735,_0x518b99){_0x32e735=_0x32e735-0x0;var _0x4b8029=_0x2cd0[_0x32e735];return _0x4b8029;};'use strict';var _=require(_0x02cd('0x0'));var util=require(_0x02cd('0x1'));var moment=require(_0x02cd('0x2'));var BPromise=require('bluebird');var rs=require(_0x02cd('0x3'));var fs=require('fs');var Redis=require(_0x02cd('0x4'));var db=require(_0x02cd('0x5'))['db'];var utils=require(_0x02cd('0x6'));var logger=require(_0x02cd('0x7'))('rpc');var config=require(_0x02cd('0x8'));var jayson=require(_0x02cd('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x02cd('0xa')]=_['defaults'](config[_0x02cd('0xa')],{'host':_0x02cd('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x02cd('0xa')]));require(_0x02cd('0xc'))[_0x02cd('0xd')](socket);function respondWithRpcPromise(_0x3c4b10,_0x362dcc,_0x14ce00){return new BPromise(function(_0x294f58,_0xce8ff6){return client[_0x02cd('0xe')](_0x3c4b10,_0x14ce00)[_0x02cd('0xf')](function(_0x43e066){logger[_0x02cd('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x362dcc,_0x02cd('0x11'));logger[_0x02cd('0x12')](_0x02cd('0x13'),_0x362dcc,_0x02cd('0x11'),JSON[_0x02cd('0x14')](_0x43e066));if(_0x43e066[_0x02cd('0x15')]){if(_0x43e066[_0x02cd('0x15')]['code']===0x1f4){logger[_0x02cd('0x15')](_0x02cd('0x16'),_0x362dcc,_0x43e066[_0x02cd('0x15')]['message']);return _0xce8ff6(_0x43e066['error'][_0x02cd('0x17')]);}logger[_0x02cd('0x15')](_0x02cd('0x16'),_0x362dcc,_0x43e066[_0x02cd('0x15')]['message']);return _0x294f58(_0x43e066['error'][_0x02cd('0x17')]);}else{logger[_0x02cd('0x10')](_0x02cd('0x16'),_0x362dcc,_0x02cd('0x11'));_0x294f58(_0x43e066[_0x02cd('0x18')][_0x02cd('0x17')]);}})[_0x02cd('0x19')](function(_0x424e17){logger[_0x02cd('0x15')](_0x02cd('0x16'),_0x362dcc,_0x424e17);_0xce8ff6(_0x424e17);});});}exports[_0x02cd('0x1a')]=function(_0x14d325){var _0xed60f3=this;return new Promise(function(_0x55d07c,_0x359cf0){return db[_0x02cd('0x1b')]['findAll']({'raw':_0x14d325[_0x02cd('0x1c')]?_0x14d325[_0x02cd('0x1c')][_0x02cd('0x1d')]===undefined?!![]:![]:!![],'where':_0x14d325['options']?_0x14d325[_0x02cd('0x1c')]['where']||null:null,'attributes':_0x14d325[_0x02cd('0x1c')]?_0x14d325[_0x02cd('0x1c')][_0x02cd('0x1e')]||null:null,'limit':_0x14d325[_0x02cd('0x1c')]?_0x14d325[_0x02cd('0x1c')][_0x02cd('0x1f')]||null:null,'include':_0x14d325['options']?_0x14d325[_0x02cd('0x1c')][_0x02cd('0x20')]?_[_0x02cd('0x21')](_0x14d325[_0x02cd('0x1c')]['include'],function(_0x3da454){return{'model':db[_0x3da454[_0x02cd('0x22')]],'as':_0x3da454['as'],'attributes':_0x3da454[_0x02cd('0x1e')],'include':_0x3da454[_0x02cd('0x20')]?_[_0x02cd('0x21')](_0x3da454['include'],function(_0x57eb30){return{'model':db[_0x57eb30['model']],'as':_0x57eb30['as'],'attributes':_0x57eb30[_0x02cd('0x1e')],'include':_0x57eb30[_0x02cd('0x20')]?_[_0x02cd('0x21')](_0x57eb30[_0x02cd('0x20')],function(_0x2d6713){return{'model':db[_0x2d6713[_0x02cd('0x22')]],'as':_0x2d6713['as'],'attributes':_0x2d6713[_0x02cd('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x02cd('0xf')](function(_0x342aa9){logger[_0x02cd('0x10')]('GetOpenchannelQueue',_0x14d325);logger[_0x02cd('0x12')](_0x02cd('0x1a'),_0x14d325,JSON[_0x02cd('0x14')](_0x342aa9));_0x55d07c(_0x342aa9);})[_0x02cd('0x19')](function(_0x133495){logger[_0x02cd('0x15')](_0x02cd('0x1a'),_0x133495['message'],_0x14d325);_0x359cf0(_0xed60f3[_0x02cd('0x15')](0x1f4,_0x133495[_0x02cd('0x17')]));});});};exports['ShowOpenchannelQueue']=function(_0x17c58c){var _0x4d21cb=this;return new Promise(function(_0x16dbb7,_0x4bb88d){return db[_0x02cd('0x1b')][_0x02cd('0x23')]({'raw':_0x17c58c[_0x02cd('0x1c')]?_0x17c58c[_0x02cd('0x1c')][_0x02cd('0x1d')]===undefined?!![]:![]:!![],'where':_0x17c58c[_0x02cd('0x1c')]?_0x17c58c['options'][_0x02cd('0x24')]||null:null,'attributes':_0x17c58c[_0x02cd('0x1c')]?_0x17c58c[_0x02cd('0x1c')][_0x02cd('0x1e')]||null:null,'include':_0x17c58c[_0x02cd('0x1c')]?_0x17c58c[_0x02cd('0x1c')]['include']?_[_0x02cd('0x21')](_0x17c58c[_0x02cd('0x1c')][_0x02cd('0x20')],function(_0x4e8560){return{'model':db[_0x4e8560[_0x02cd('0x22')]],'as':_0x4e8560['as'],'attributes':_0x4e8560[_0x02cd('0x1e')],'include':_0x4e8560[_0x02cd('0x20')]?_[_0x02cd('0x21')](_0x4e8560[_0x02cd('0x20')],function(_0x598dc6){return{'model':db[_0x598dc6[_0x02cd('0x22')]],'as':_0x598dc6['as'],'attributes':_0x598dc6[_0x02cd('0x1e')],'include':_0x598dc6[_0x02cd('0x20')]?_['map'](_0x598dc6['include'],function(_0x430779){return{'model':db[_0x430779[_0x02cd('0x22')]],'as':_0x430779['as'],'attributes':_0x430779[_0x02cd('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x02cd('0xf')](function(_0x2ccc8a){logger[_0x02cd('0x10')](_0x02cd('0x25'),_0x17c58c);logger['debug'](_0x02cd('0x25'),_0x17c58c,JSON[_0x02cd('0x14')](_0x2ccc8a));_0x16dbb7(_0x2ccc8a);})['catch'](function(_0x2df5d6){logger[_0x02cd('0x15')](_0x02cd('0x25'),_0x2df5d6[_0x02cd('0x17')],_0x17c58c);_0x4bb88d(_0x4d21cb['error'](0x1f4,_0x2df5d6[_0x02cd('0x17')]));});});};
\ No newline at end of file
+var _0xcc4e=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowOpenchannelQueue','find','util','moment'];(function(_0x3472ed,_0x492f6f){var _0x4c70d7=function(_0x37f875){while(--_0x37f875){_0x3472ed['push'](_0x3472ed['shift']());}};_0x4c70d7(++_0x492f6f);}(_0xcc4e,0x132));var _0xecc4=function(_0x5cf88b,_0x46b96a){_0x5cf88b=_0x5cf88b-0x0;var _0x3d7f37=_0xcc4e[_0x5cf88b];return _0x3d7f37;};'use strict';var _=require('lodash');var util=require(_0xecc4('0x0'));var moment=require(_0xecc4('0x1'));var BPromise=require(_0xecc4('0x2'));var rs=require(_0xecc4('0x3'));var fs=require('fs');var Redis=require(_0xecc4('0x4'));var db=require(_0xecc4('0x5'))['db'];var utils=require(_0xecc4('0x6'));var logger=require(_0xecc4('0x7'))(_0xecc4('0x8'));var config=require(_0xecc4('0x9'));var jayson=require(_0xecc4('0xa'));var client=jayson[_0xecc4('0xb')]['http']({'port':0x232a});config[_0xecc4('0xc')]=_[_0xecc4('0xd')](config[_0xecc4('0xc')],{'host':_0xecc4('0xe'),'port':0x18eb});var socket=require(_0xecc4('0xf'))(new Redis(config[_0xecc4('0xc')]));require(_0xecc4('0x10'))[_0xecc4('0x11')](socket);function respondWithRpcPromise(_0x322fa9,_0x59d8d0,_0xf5e26b){return new BPromise(function(_0xabbe87,_0x1d86d7){return client[_0xecc4('0x12')](_0x322fa9,_0xf5e26b)[_0xecc4('0x13')](function(_0x9d0f60){logger[_0xecc4('0x14')](_0xecc4('0x15'),_0x59d8d0,_0xecc4('0x16'));logger[_0xecc4('0x17')](_0xecc4('0x18'),_0x59d8d0,_0xecc4('0x16'),JSON[_0xecc4('0x19')](_0x9d0f60));if(_0x9d0f60[_0xecc4('0x1a')]){if(_0x9d0f60['error'][_0xecc4('0x1b')]===0x1f4){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x59d8d0,_0x9d0f60[_0xecc4('0x1a')][_0xecc4('0x1c')]);return _0x1d86d7(_0x9d0f60['error'][_0xecc4('0x1c')]);}logger[_0xecc4('0x1a')](_0xecc4('0x15'),_0x59d8d0,_0x9d0f60[_0xecc4('0x1a')][_0xecc4('0x1c')]);return _0xabbe87(_0x9d0f60['error'][_0xecc4('0x1c')]);}else{logger[_0xecc4('0x14')](_0xecc4('0x15'),_0x59d8d0,_0xecc4('0x16'));_0xabbe87(_0x9d0f60[_0xecc4('0x1d')][_0xecc4('0x1c')]);}})[_0xecc4('0x1e')](function(_0x3e24f2){logger[_0xecc4('0x1a')](_0xecc4('0x15'),_0x59d8d0,_0x3e24f2);_0x1d86d7(_0x3e24f2);});});}exports[_0xecc4('0x1f')]=function(_0x5e4e1e){var _0x45ae9b=this;return new Promise(function(_0x354258,_0x2ad205){return db[_0xecc4('0x20')][_0xecc4('0x21')]({'raw':_0x5e4e1e['options']?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x23')]===undefined?!![]:![]:!![],'where':_0x5e4e1e['options']?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x24')]||null:null,'attributes':_0x5e4e1e[_0xecc4('0x22')]?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x25')]||null:null,'limit':_0x5e4e1e[_0xecc4('0x22')]?_0x5e4e1e['options'][_0xecc4('0x26')]||null:null,'include':_0x5e4e1e[_0xecc4('0x22')]?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x27')]?_[_0xecc4('0x28')](_0x5e4e1e['options'][_0xecc4('0x27')],function(_0x103531){return{'model':db[_0x103531[_0xecc4('0x29')]],'as':_0x103531['as'],'attributes':_0x103531[_0xecc4('0x25')],'include':_0x103531[_0xecc4('0x27')]?_['map'](_0x103531['include'],function(_0x4a82a2){return{'model':db[_0x4a82a2[_0xecc4('0x29')]],'as':_0x4a82a2['as'],'attributes':_0x4a82a2['attributes'],'include':_0x4a82a2['include']?_[_0xecc4('0x28')](_0x4a82a2[_0xecc4('0x27')],function(_0x5aaea2){return{'model':db[_0x5aaea2[_0xecc4('0x29')]],'as':_0x5aaea2['as'],'attributes':_0x5aaea2[_0xecc4('0x25')]};}):[]};}):[]};}):[]:[]})[_0xecc4('0x13')](function(_0x5c12ac){logger[_0xecc4('0x14')](_0xecc4('0x1f'),_0x5e4e1e);logger[_0xecc4('0x17')](_0xecc4('0x1f'),_0x5e4e1e,JSON[_0xecc4('0x19')](_0x5c12ac));_0x354258(_0x5c12ac);})[_0xecc4('0x1e')](function(_0x16761e){logger[_0xecc4('0x1a')]('GetOpenchannelQueue',_0x16761e[_0xecc4('0x1c')],_0x5e4e1e);_0x2ad205(_0x45ae9b[_0xecc4('0x1a')](0x1f4,_0x16761e[_0xecc4('0x1c')]));});});};exports[_0xecc4('0x2a')]=function(_0x2356fb){var _0xca4143=this;return new Promise(function(_0x2aa82f,_0x5b1adf){return db['OpenchannelQueue'][_0xecc4('0x2b')]({'raw':_0x2356fb[_0xecc4('0x22')]?_0x2356fb[_0xecc4('0x22')][_0xecc4('0x23')]===undefined?!![]:![]:!![],'where':_0x2356fb[_0xecc4('0x22')]?_0x2356fb[_0xecc4('0x22')][_0xecc4('0x24')]||null:null,'attributes':_0x2356fb[_0xecc4('0x22')]?_0x2356fb['options']['attributes']||null:null,'include':_0x2356fb['options']?_0x2356fb[_0xecc4('0x22')][_0xecc4('0x27')]?_[_0xecc4('0x28')](_0x2356fb[_0xecc4('0x22')][_0xecc4('0x27')],function(_0x25e82b){return{'model':db[_0x25e82b['model']],'as':_0x25e82b['as'],'attributes':_0x25e82b[_0xecc4('0x25')],'include':_0x25e82b['include']?_['map'](_0x25e82b[_0xecc4('0x27')],function(_0x57b70c){return{'model':db[_0x57b70c[_0xecc4('0x29')]],'as':_0x57b70c['as'],'attributes':_0x57b70c[_0xecc4('0x25')],'include':_0x57b70c[_0xecc4('0x27')]?_['map'](_0x57b70c[_0xecc4('0x27')],function(_0x1d3bba){return{'model':db[_0x1d3bba[_0xecc4('0x29')]],'as':_0x1d3bba['as'],'attributes':_0x1d3bba[_0xecc4('0x25')]};}):[]};}):[]};}):[]:[]})[_0xecc4('0x13')](function(_0x2dd077){logger[_0xecc4('0x14')](_0xecc4('0x2a'),_0x2356fb);logger[_0xecc4('0x17')](_0xecc4('0x2a'),_0x2356fb,JSON[_0xecc4('0x19')](_0x2dd077));_0x2aa82f(_0x2dd077);})[_0xecc4('0x1e')](function(_0x281af6){logger[_0xecc4('0x1a')](_0xecc4('0x2a'),_0x281af6[_0xecc4('0x1c')],_0x2356fb);_0x5b1adf(_0xca4143[_0xecc4('0x1a')](0x1f4,_0x281af6[_0xecc4('0x1c')]));});});};
\ No newline at end of file
index a90d76e..c38aecf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09cf=['save','remove','emit','register','length','./openchannelQueue.events'];(function(_0x3fc057,_0x4ac466){var _0x2abc4c=function(_0x1df6d4){while(--_0x1df6d4){_0x3fc057['push'](_0x3fc057['shift']());}};_0x2abc4c(++_0x4ac466);}(_0x09cf,0xbf));var _0xf09c=function(_0x4b7f0c,_0x431253){_0x4b7f0c=_0x4b7f0c-0x0;var _0x3f1a05=_0x09cf[_0x4b7f0c];return _0x3f1a05;};'use strict';var OpenchannelQueueEvents=require(_0xf09c('0x0'));var events=[_0xf09c('0x1'),_0xf09c('0x2'),'update'];function createListener(_0xfd317d,_0x43a2b9){return function(_0x3f651c){_0x43a2b9[_0xf09c('0x3')](_0xfd317d,_0x3f651c);};}function removeListener(_0x1c693a,_0xf7a300){return function(){OpenchannelQueueEvents['removeListener'](_0x1c693a,_0xf7a300);};}exports[_0xf09c('0x4')]=function(_0x51712d){for(var _0x148bed=0x0,_0x308c2b=events[_0xf09c('0x5')];_0x148bed<_0x308c2b;_0x148bed++){var _0x85011a=events[_0x148bed];var _0x2545ae=createListener('openchannelQueue:'+_0x85011a,_0x51712d);OpenchannelQueueEvents['on'](_0x85011a,_0x2545ae);}};
\ No newline at end of file
+var _0x059b=['emit','removeListener','register','length','save','update'];(function(_0x5976f8,_0x1265b7){var _0x179715=function(_0x2b2c4b){while(--_0x2b2c4b){_0x5976f8['push'](_0x5976f8['shift']());}};_0x179715(++_0x1265b7);}(_0x059b,0x94));var _0xb059=function(_0x121ce2,_0x2c1d9e){_0x121ce2=_0x121ce2-0x0;var _0xe36ce8=_0x059b[_0x121ce2];return _0xe36ce8;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0xb059('0x0'),'remove',_0xb059('0x1')];function createListener(_0x3d2f8e,_0x3aa6ec){return function(_0x1bb949){_0x3aa6ec[_0xb059('0x2')](_0x3d2f8e,_0x1bb949);};}function removeListener(_0x58bd97,_0x48be6e){return function(){OpenchannelQueueEvents[_0xb059('0x3')](_0x58bd97,_0x48be6e);};}exports[_0xb059('0x4')]=function(_0x18b10c){for(var _0x3ad486=0x0,_0x143cad=events[_0xb059('0x5')];_0x3ad486<_0x143cad;_0x3ad486++){var _0x1d5a70=events[_0x3ad486];var _0x41509a=createListener('openchannelQueue:'+_0x1d5a70,_0x18b10c);OpenchannelQueueEvents['on'](_0x1d5a70,_0x41509a);}};
\ No newline at end of file
index 4d24eb7..f38a9c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793a=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x793a,0x1c9));var _0xa793=function(_0x22cd4d,_0x688b8){_0x22cd4d=_0x22cd4d-0x0;var _0x41adc=_0x793a[_0x22cd4d];return _0x41adc;};'use strict';var multer=require(_0xa793('0x0'));var util=require(_0xa793('0x1'));var path=require(_0xa793('0x2'));var timeout=require(_0xa793('0x3'));var express=require(_0xa793('0x4'));var router=express['Router']();var fs_extra=require(_0xa793('0x5'));var auth=require(_0xa793('0x6'));var interaction=require(_0xa793('0x7'));var config=require(_0xa793('0x8'));var controller=require(_0xa793('0x9'));router[_0xa793('0xa')]('/',auth[_0xa793('0xb')](),controller[_0xa793('0xc')]);router[_0xa793('0xa')](_0xa793('0xd'),auth[_0xa793('0xb')](),controller[_0xa793('0xe')]);router[_0xa793('0xa')]('/:id',auth[_0xa793('0xb')](),controller[_0xa793('0xf')]);router['post']('/',auth[_0xa793('0xb')](),controller[_0xa793('0x10')]);router[_0xa793('0x11')](_0xa793('0x12'),auth[_0xa793('0xb')](),controller[_0xa793('0x13')]);router[_0xa793('0x14')](_0xa793('0x12'),auth[_0xa793('0xb')](),controller[_0xa793('0x15')]);module[_0xa793('0x16')]=router;
\ No newline at end of file
+var _0xc5ac=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','post','create','put','/:id','update','delete','destroy','exports','multer','path'];(function(_0x2580f9,_0x5e3602){var _0xd21817=function(_0x911e65){while(--_0x911e65){_0x2580f9['push'](_0x2580f9['shift']());}};_0xd21817(++_0x5e3602);}(_0xc5ac,0x1e2));var _0xcc5a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc5ac[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xcc5a('0x0'));var util=require('util');var path=require(_0xcc5a('0x1'));var timeout=require(_0xcc5a('0x2'));var express=require('express');var router=express[_0xcc5a('0x3')]();var fs_extra=require(_0xcc5a('0x4'));var auth=require(_0xcc5a('0x5'));var interaction=require(_0xcc5a('0x6'));var config=require(_0xcc5a('0x7'));var controller=require(_0xcc5a('0x8'));router[_0xcc5a('0x9')]('/',auth[_0xcc5a('0xa')](),controller[_0xcc5a('0xb')]);router[_0xcc5a('0x9')](_0xcc5a('0xc'),auth[_0xcc5a('0xa')](),controller[_0xcc5a('0xd')]);router[_0xcc5a('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xcc5a('0xe')]('/',auth['isAuthenticated'](),controller[_0xcc5a('0xf')]);router[_0xcc5a('0x10')](_0xcc5a('0x11'),auth['isAuthenticated'](),controller[_0xcc5a('0x12')]);router[_0xcc5a('0x13')](_0xcc5a('0x11'),auth[_0xcc5a('0xa')](),controller[_0xcc5a('0x14')]);module[_0xcc5a('0x15')]=router;
\ No newline at end of file
index 2de4e04..c0df423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60fd=['sequelize','exports','DATE','STRING'];(function(_0x6ffdb6,_0x279456){var _0x18a56b=function(_0x1d9108){while(--_0x1d9108){_0x6ffdb6['push'](_0x6ffdb6['shift']());}};_0x18a56b(++_0x279456);}(_0x60fd,0xf8));var _0xd60f=function(_0x5ee76c,_0x39cdae){_0x5ee76c=_0x5ee76c-0x0;var _0x5ddc1f=_0x60fd[_0x5ee76c];return _0x5ddc1f;};'use strict';var moment=require('moment');var Sequelize=require(_0xd60f('0x0'));module[_0xd60f('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xd60f('0x2')]},'leaveAt':{'type':Sequelize[_0xd60f('0x2')]},'acceptAt':{'type':Sequelize[_0xd60f('0x2')]},'exitAt':{'type':Sequelize[_0xd60f('0x2')]},'reason':{'type':Sequelize[_0xd60f('0x3')]}};
\ No newline at end of file
+var _0xf763=['exports','STRING','DATE','moment'];(function(_0x46a7ab,_0x39f289){var _0x1b8196=function(_0x27e6fa){while(--_0x27e6fa){_0x46a7ab['push'](_0x46a7ab['shift']());}};_0x1b8196(++_0x39f289);}(_0xf763,0x1eb));var _0x3f76=function(_0x15532c,_0x6788bd){_0x15532c=_0x15532c-0x0;var _0x3436b0=_0xf763[_0x15532c];return _0x3436b0;};'use strict';var moment=require(_0x3f76('0x0'));var Sequelize=require('sequelize');module[_0x3f76('0x1')]={'uniqueid':{'type':Sequelize[_0x3f76('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3f76('0x2')]},'joinAt':{'type':Sequelize[_0x3f76('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x3f76('0x3')]},'reason':{'type':Sequelize[_0x3f76('0x2')]}};
\ No newline at end of file
index bfa7b06..dbd8b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d80=['index','map','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','OpenchannelQueueReport','findAll','rows','show','params','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','bluebird','mustache','util','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error','name'];(function(_0x23266e,_0x3647e2){var _0x55c2b6=function(_0x32afd4){while(--_0x32afd4){_0x23266e['push'](_0x23266e['shift']());}};_0x55c2b6(++_0x3647e2);}(_0x6d80,0x1c3));var _0x06d8=function(_0x1db3fd,_0x2fa630){_0x1db3fd=_0x1db3fd-0x0;var _0x17f282=_0x6d80[_0x1db3fd];return _0x17f282;};'use strict';var emlformat=require(_0x06d8('0x0'));var rimraf=require(_0x06d8('0x1'));var zipdir=require(_0x06d8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x06d8('0x3'));var Mustache=require(_0x06d8('0x4'));var util=require(_0x06d8('0x5'));var path=require('path');var sox=require(_0x06d8('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x06d8('0x7'));var _=require(_0x06d8('0x8'));var squel=require('squel');var crypto=require(_0x06d8('0x9'));var jsforce=require(_0x06d8('0xa'));var deskjs=require(_0x06d8('0xb'));var toCsv=require(_0x06d8('0xc'));var querystring=require(_0x06d8('0xd'));var Papa=require(_0x06d8('0xe'));var Redis=require(_0x06d8('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x06d8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x06d8('0x11'));var logger=require(_0x06d8('0x12'))(_0x06d8('0x13'));var utils=require('../../config/utils');var config=require(_0x06d8('0x14'));var licenseUtil=require(_0x06d8('0x15'));var db=require(_0x06d8('0x16'))['db'];function respondWithStatusCode(_0x2d9789,_0x9f08e7){_0x9f08e7=_0x9f08e7||0xcc;return function(_0x3768e7){if(_0x3768e7){return _0x2d9789[_0x06d8('0x17')](_0x9f08e7);}return _0x2d9789['status'](_0x9f08e7)[_0x06d8('0x18')]();};}function respondWithResult(_0x51bb45,_0x163a5f){_0x163a5f=_0x163a5f||0xc8;return function(_0xd2e076){if(_0xd2e076){return _0x51bb45[_0x06d8('0x19')](_0x163a5f)[_0x06d8('0x1a')](_0xd2e076);}};}function respondWithFilteredResult(_0x4d7516,_0xa483a){return function(_0x22f45a){if(_0x22f45a){var _0x269d92=typeof _0xa483a[_0x06d8('0x1b')]===_0x06d8('0x1c')&&typeof _0xa483a[_0x06d8('0x1d')]===_0x06d8('0x1c');var _0xc6d939=_0x22f45a[_0x06d8('0x1e')];var _0x24ce14=_0x269d92?0x0:_0xa483a['offset'];var _0x282ece=_0x269d92?_0x22f45a[_0x06d8('0x1e')]:_0xa483a[_0x06d8('0x1b')]+_0xa483a['limit'];var _0x165830;if(_0x282ece>=_0xc6d939){_0x282ece=_0xc6d939;_0x165830=0xc8;}else{_0x165830=0xce;}_0x4d7516[_0x06d8('0x19')](_0x165830);return _0x4d7516['set'](_0x06d8('0x1f'),_0x24ce14+'-'+_0x282ece+'/'+_0xc6d939)['json'](_0x22f45a);}return null;};}function patchUpdates(_0x3462f4){return function(_0x195c46){try{jsonpatch[_0x06d8('0x20')](_0x195c46,_0x3462f4,!![]);}catch(_0xdf83bc){return BPromise['reject'](_0xdf83bc);}return _0x195c46[_0x06d8('0x21')]();};}function saveUpdates(_0x563d37,_0x1802a7){return function(_0x546c1e){if(_0x546c1e){return _0x546c1e[_0x06d8('0x22')](_0x563d37)[_0x06d8('0x23')](function(_0x4c8ca8){return _0x4c8ca8;});}return null;};}function removeEntity(_0x351629,_0x28ada2){return function(_0x56b215){if(_0x56b215){return _0x56b215[_0x06d8('0x24')]()[_0x06d8('0x23')](function(){_0x351629[_0x06d8('0x19')](0xcc)[_0x06d8('0x18')]();});}};}function handleEntityNotFound(_0x280013,_0xeb0d60){return function(_0x4ab688){if(!_0x4ab688){_0x280013[_0x06d8('0x17')](0x194);}return _0x4ab688;};}function handleError(_0x27125d,_0x1af579){_0x1af579=_0x1af579||0x1f4;return function(_0x319398){logger[_0x06d8('0x25')](_0x319398['stack']);if(_0x319398[_0x06d8('0x26')]){delete _0x319398[_0x06d8('0x26')];}_0x27125d[_0x06d8('0x19')](_0x1af579)['send'](_0x319398);};}exports[_0x06d8('0x27')]=function(_0x521b71,_0x1e8246){var _0x414a45={},_0x5d2572={},_0x121d28={'count':0x0,'rows':[]};var _0x289a57=_[_0x06d8('0x28')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x46d150){return{'name':_0x46d150['fieldName'],'type':_0x46d150[_0x06d8('0x29')][_0x06d8('0x2a')]};});_0x5d2572[_0x06d8('0x2b')]=_[_0x06d8('0x28')](_0x289a57,_0x06d8('0x26'));_0x5d2572[_0x06d8('0x2c')]=_[_0x06d8('0x2d')](_0x521b71[_0x06d8('0x2c')]);_0x5d2572[_0x06d8('0x2e')]=_[_0x06d8('0x2f')](_0x5d2572[_0x06d8('0x2b')],_0x5d2572['query']);_0x414a45[_0x06d8('0x30')]=_[_0x06d8('0x2f')](_0x5d2572['model'],qs[_0x06d8('0x31')](_0x521b71[_0x06d8('0x2c')][_0x06d8('0x31')]));_0x414a45[_0x06d8('0x30')]=_0x414a45[_0x06d8('0x30')][_0x06d8('0x32')]?_0x414a45['attributes']:_0x5d2572[_0x06d8('0x2b')];if(!_0x521b71[_0x06d8('0x2c')][_0x06d8('0x33')](_0x06d8('0x34'))){_0x414a45[_0x06d8('0x1d')]=qs[_0x06d8('0x1d')](_0x521b71['query'][_0x06d8('0x1d')]);_0x414a45['offset']=qs['offset'](_0x521b71[_0x06d8('0x2c')][_0x06d8('0x1b')]);}_0x414a45[_0x06d8('0x35')]=qs['sort'](_0x521b71[_0x06d8('0x2c')][_0x06d8('0x36')]);_0x414a45[_0x06d8('0x37')]=qs[_0x06d8('0x2e')](_[_0x06d8('0x38')](_0x521b71['query'],_0x5d2572[_0x06d8('0x2e')]),_0x289a57);if(_0x521b71[_0x06d8('0x2c')][_0x06d8('0x39')]){_0x414a45[_0x06d8('0x37')]=_['merge'](_0x414a45[_0x06d8('0x37')],{'$or':_['map'](_0x289a57,function(_0x5bda93){if(_0x5bda93[_0x06d8('0x29')]!=='VIRTUAL'){var _0x4206c9={};_0x4206c9[_0x5bda93[_0x06d8('0x26')]]={'$like':'%'+_0x521b71[_0x06d8('0x2c')][_0x06d8('0x39')]+'%'};return _0x4206c9;}})});}_0x414a45=_[_0x06d8('0x3a')]({},_0x414a45,_0x521b71['options']);var _0x461e1d={'where':_0x414a45['where']};return db['OpenchannelQueueReport']['count'](_0x461e1d)[_0x06d8('0x23')](function(_0x3284d5){_0x121d28['count']=_0x3284d5;if(_0x521b71[_0x06d8('0x2c')]['includeAll']){_0x414a45['include']=[{'all':!![]}];}return db[_0x06d8('0x3b')][_0x06d8('0x3c')](_0x414a45);})[_0x06d8('0x23')](function(_0x13cf87){_0x121d28[_0x06d8('0x3d')]=_0x13cf87;return _0x121d28;})['then'](respondWithFilteredResult(_0x1e8246,_0x414a45))['catch'](handleError(_0x1e8246,null));};exports[_0x06d8('0x3e')]=function(_0x4137e7,_0xe0ada4){var _0x241969={'raw':!![],'where':{'id':_0x4137e7[_0x06d8('0x3f')]['id']}},_0x13b443={};_0x13b443[_0x06d8('0x2b')]=_['keys'](db[_0x06d8('0x3b')]['rawAttributes']);_0x13b443['query']=_[_0x06d8('0x2d')](_0x4137e7[_0x06d8('0x2c')]);_0x13b443[_0x06d8('0x2e')]=_[_0x06d8('0x2f')](_0x13b443[_0x06d8('0x2b')],_0x13b443['query']);_0x241969[_0x06d8('0x30')]=_[_0x06d8('0x2f')](_0x13b443[_0x06d8('0x2b')],qs[_0x06d8('0x31')](_0x4137e7[_0x06d8('0x2c')][_0x06d8('0x31')]));_0x241969['attributes']=_0x241969['attributes'][_0x06d8('0x32')]?_0x241969[_0x06d8('0x30')]:_0x13b443[_0x06d8('0x2b')];if(_0x4137e7[_0x06d8('0x2c')]['includeAll']){_0x241969[_0x06d8('0x40')]=[{'all':!![]}];}_0x241969=_[_0x06d8('0x3a')]({},_0x241969,_0x4137e7['options']);return db[_0x06d8('0x3b')][_0x06d8('0x41')](_0x241969)['then'](handleEntityNotFound(_0xe0ada4,null))[_0x06d8('0x23')](respondWithResult(_0xe0ada4,null))[_0x06d8('0x42')](handleError(_0xe0ada4,null));};exports[_0x06d8('0x43')]=function(_0x4be682,_0x5614c3){return db[_0x06d8('0x3b')][_0x06d8('0x43')](_0x4be682['body'],{})[_0x06d8('0x23')](respondWithResult(_0x5614c3,0xc9))[_0x06d8('0x42')](handleError(_0x5614c3,null));};exports[_0x06d8('0x22')]=function(_0x38f337,_0x13b148){if(_0x38f337[_0x06d8('0x44')]['id']){delete _0x38f337[_0x06d8('0x44')]['id'];}return db[_0x06d8('0x3b')][_0x06d8('0x41')]({'where':{'id':_0x38f337['params']['id']}})[_0x06d8('0x23')](handleEntityNotFound(_0x13b148,null))[_0x06d8('0x23')](saveUpdates(_0x38f337[_0x06d8('0x44')],null))[_0x06d8('0x23')](respondWithResult(_0x13b148,null))[_0x06d8('0x42')](handleError(_0x13b148,null));};exports[_0x06d8('0x24')]=function(_0x4ab3a1,_0x16d4b3){return db[_0x06d8('0x3b')][_0x06d8('0x41')]({'where':{'id':_0x4ab3a1['params']['id']}})[_0x06d8('0x23')](handleEntityNotFound(_0x16d4b3,null))[_0x06d8('0x23')](removeEntity(_0x16d4b3,null))[_0x06d8('0x42')](handleError(_0x16d4b3,null));};exports[_0x06d8('0x45')]=function(_0x5536e7,_0x2eef8b){return db[_0x06d8('0x3b')]['describe']()[_0x06d8('0x23')](respondWithResult(_0x2eef8b,null))[_0x06d8('0x42')](handleError(_0x2eef8b,null));};
\ No newline at end of file
+var _0x7239=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','end','name','index','map','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','type','options','OpenchannelQueueReport','includeAll','include','findAll','rows','rawAttributes','find','catch','create','body','update','params','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x7239,0x7c));var _0x9723=function(_0x16abf2,_0x189fcb){_0x16abf2=_0x16abf2-0x0;var _0x44f097=_0x7239[_0x16abf2];return _0x44f097;};'use strict';var emlformat=require(_0x9723('0x0'));var rimraf=require(_0x9723('0x1'));var zipdir=require(_0x9723('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9723('0x3'));var moment=require('moment');var BPromise=require(_0x9723('0x4'));var Mustache=require(_0x9723('0x5'));var util=require('util');var path=require(_0x9723('0x6'));var sox=require(_0x9723('0x7'));var csv=require(_0x9723('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9723('0x9'));var _=require('lodash');var squel=require(_0x9723('0xa'));var crypto=require(_0x9723('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9723('0x8'));var querystring=require(_0x9723('0xc'));var Papa=require(_0x9723('0xd'));var Redis=require(_0x9723('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9723('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9723('0x10'))(_0x9723('0x11'));var utils=require('../../config/utils');var config=require(_0x9723('0x12'));var licenseUtil=require(_0x9723('0x13'));var db=require(_0x9723('0x14'))['db'];function respondWithStatusCode(_0x3dcb63,_0x5cef0f){_0x5cef0f=_0x5cef0f||0xcc;return function(_0x3b9ed1){if(_0x3b9ed1){return _0x3dcb63[_0x9723('0x15')](_0x5cef0f);}return _0x3dcb63['status'](_0x5cef0f)['end']();};}function respondWithResult(_0x37bf84,_0x5ee5d5){_0x5ee5d5=_0x5ee5d5||0xc8;return function(_0x4ad1f5){if(_0x4ad1f5){return _0x37bf84[_0x9723('0x16')](_0x5ee5d5)[_0x9723('0x17')](_0x4ad1f5);}};}function respondWithFilteredResult(_0x2c1211,_0x21a4bf){return function(_0x15ee68){if(_0x15ee68){var _0x4fb041=typeof _0x21a4bf[_0x9723('0x18')]===_0x9723('0x19')&&typeof _0x21a4bf[_0x9723('0x1a')]===_0x9723('0x19');var _0xac91d9=_0x15ee68[_0x9723('0x1b')];var _0x19d4a4=_0x4fb041?0x0:_0x21a4bf[_0x9723('0x18')];var _0x2fcf17=_0x4fb041?_0x15ee68[_0x9723('0x1b')]:_0x21a4bf['offset']+_0x21a4bf[_0x9723('0x1a')];var _0x1ad679;if(_0x2fcf17>=_0xac91d9){_0x2fcf17=_0xac91d9;_0x1ad679=0xc8;}else{_0x1ad679=0xce;}_0x2c1211['status'](_0x1ad679);return _0x2c1211[_0x9723('0x1c')](_0x9723('0x1d'),_0x19d4a4+'-'+_0x2fcf17+'/'+_0xac91d9)[_0x9723('0x17')](_0x15ee68);}return null;};}function patchUpdates(_0x280cd3){return function(_0xbec699){try{jsonpatch[_0x9723('0x1e')](_0xbec699,_0x280cd3,!![]);}catch(_0x5cabb0){return BPromise['reject'](_0x5cabb0);}return _0xbec699[_0x9723('0x1f')]();};}function saveUpdates(_0x3ee34d,_0x56ec65){return function(_0x528e34){if(_0x528e34){return _0x528e34['update'](_0x3ee34d)['then'](function(_0x6658f7){return _0x6658f7;});}return null;};}function removeEntity(_0x439f9c,_0x13d522){return function(_0x4b54ac){if(_0x4b54ac){return _0x4b54ac[_0x9723('0x20')]()[_0x9723('0x21')](function(){_0x439f9c[_0x9723('0x16')](0xcc)[_0x9723('0x22')]();});}};}function handleEntityNotFound(_0x4ebbc9,_0x1415cd){return function(_0x4b541b){if(!_0x4b541b){_0x4ebbc9[_0x9723('0x15')](0x194);}return _0x4b541b;};}function handleError(_0x252a78,_0x225952){_0x225952=_0x225952||0x1f4;return function(_0xf30268){logger['error'](_0xf30268['stack']);if(_0xf30268['name']){delete _0xf30268[_0x9723('0x23')];}_0x252a78[_0x9723('0x16')](_0x225952)['send'](_0xf30268);};}exports[_0x9723('0x24')]=function(_0x101f8e,_0x3885ba){var _0x28addb={},_0x478e3b={},_0x393a29={'count':0x0,'rows':[]};var _0x5b3453=_[_0x9723('0x25')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x1557d1){return{'name':_0x1557d1[_0x9723('0x26')],'type':_0x1557d1['type'][_0x9723('0x27')]};});_0x478e3b[_0x9723('0x28')]=_[_0x9723('0x25')](_0x5b3453,_0x9723('0x23'));_0x478e3b[_0x9723('0x29')]=_[_0x9723('0x2a')](_0x101f8e[_0x9723('0x29')]);_0x478e3b[_0x9723('0x2b')]=_[_0x9723('0x2c')](_0x478e3b[_0x9723('0x28')],_0x478e3b[_0x9723('0x29')]);_0x28addb['attributes']=_['intersection'](_0x478e3b['model'],qs[_0x9723('0x2d')](_0x101f8e['query'][_0x9723('0x2d')]));_0x28addb['attributes']=_0x28addb[_0x9723('0x2e')][_0x9723('0x2f')]?_0x28addb[_0x9723('0x2e')]:_0x478e3b[_0x9723('0x28')];if(!_0x101f8e['query'][_0x9723('0x30')](_0x9723('0x31'))){_0x28addb[_0x9723('0x1a')]=qs['limit'](_0x101f8e[_0x9723('0x29')]['limit']);_0x28addb[_0x9723('0x18')]=qs[_0x9723('0x18')](_0x101f8e[_0x9723('0x29')][_0x9723('0x18')]);}_0x28addb[_0x9723('0x32')]=qs[_0x9723('0x33')](_0x101f8e['query'][_0x9723('0x33')]);_0x28addb['where']=qs[_0x9723('0x2b')](_['pick'](_0x101f8e['query'],_0x478e3b[_0x9723('0x2b')]),_0x5b3453);if(_0x101f8e['query'][_0x9723('0x34')]){_0x28addb['where']=_[_0x9723('0x35')](_0x28addb[_0x9723('0x36')],{'$or':_[_0x9723('0x25')](_0x5b3453,function(_0x322cde){if(_0x322cde[_0x9723('0x37')]!=='VIRTUAL'){var _0x37a6da={};_0x37a6da[_0x322cde['name']]={'$like':'%'+_0x101f8e[_0x9723('0x29')][_0x9723('0x34')]+'%'};return _0x37a6da;}})});}_0x28addb=_[_0x9723('0x35')]({},_0x28addb,_0x101f8e[_0x9723('0x38')]);var _0x426148={'where':_0x28addb[_0x9723('0x36')]};return db[_0x9723('0x39')][_0x9723('0x1b')](_0x426148)['then'](function(_0x270650){_0x393a29[_0x9723('0x1b')]=_0x270650;if(_0x101f8e[_0x9723('0x29')][_0x9723('0x3a')]){_0x28addb[_0x9723('0x3b')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x9723('0x3c')](_0x28addb);})['then'](function(_0x4aa9d8){_0x393a29[_0x9723('0x3d')]=_0x4aa9d8;return _0x393a29;})[_0x9723('0x21')](respondWithFilteredResult(_0x3885ba,_0x28addb))['catch'](handleError(_0x3885ba,null));};exports['show']=function(_0x5362ec,_0xcc5431){var _0x44c071={'raw':!![],'where':{'id':_0x5362ec['params']['id']}},_0x526686={};_0x526686[_0x9723('0x28')]=_[_0x9723('0x2a')](db['OpenchannelQueueReport'][_0x9723('0x3e')]);_0x526686[_0x9723('0x29')]=_[_0x9723('0x2a')](_0x5362ec['query']);_0x526686[_0x9723('0x2b')]=_[_0x9723('0x2c')](_0x526686['model'],_0x526686[_0x9723('0x29')]);_0x44c071['attributes']=_[_0x9723('0x2c')](_0x526686[_0x9723('0x28')],qs[_0x9723('0x2d')](_0x5362ec[_0x9723('0x29')][_0x9723('0x2d')]));_0x44c071[_0x9723('0x2e')]=_0x44c071[_0x9723('0x2e')]['length']?_0x44c071[_0x9723('0x2e')]:_0x526686[_0x9723('0x28')];if(_0x5362ec[_0x9723('0x29')][_0x9723('0x3a')]){_0x44c071[_0x9723('0x3b')]=[{'all':!![]}];}_0x44c071=_['merge']({},_0x44c071,_0x5362ec[_0x9723('0x38')]);return db['OpenchannelQueueReport'][_0x9723('0x3f')](_0x44c071)[_0x9723('0x21')](handleEntityNotFound(_0xcc5431,null))['then'](respondWithResult(_0xcc5431,null))[_0x9723('0x40')](handleError(_0xcc5431,null));};exports[_0x9723('0x41')]=function(_0x1f9cdf,_0x23a210){return db[_0x9723('0x39')][_0x9723('0x41')](_0x1f9cdf[_0x9723('0x42')],{})[_0x9723('0x21')](respondWithResult(_0x23a210,0xc9))[_0x9723('0x40')](handleError(_0x23a210,null));};exports[_0x9723('0x43')]=function(_0x1ed08b,_0x31fbe2){if(_0x1ed08b[_0x9723('0x42')]['id']){delete _0x1ed08b[_0x9723('0x42')]['id'];}return db[_0x9723('0x39')]['find']({'where':{'id':_0x1ed08b[_0x9723('0x44')]['id']}})[_0x9723('0x21')](handleEntityNotFound(_0x31fbe2,null))[_0x9723('0x21')](saveUpdates(_0x1ed08b[_0x9723('0x42')],null))[_0x9723('0x21')](respondWithResult(_0x31fbe2,null))[_0x9723('0x40')](handleError(_0x31fbe2,null));};exports[_0x9723('0x20')]=function(_0x3dadca,_0x191247){return db[_0x9723('0x39')][_0x9723('0x3f')]({'where':{'id':_0x3dadca['params']['id']}})[_0x9723('0x21')](handleEntityNotFound(_0x191247,null))[_0x9723('0x21')](removeEntity(_0x191247,null))['catch'](handleError(_0x191247,null));};exports[_0x9723('0x45')]=function(_0x37b68a,_0x2017fc){return db[_0x9723('0x39')]['describe']()[_0x9723('0x21')](respondWithResult(_0x2017fc,null))[_0x9723('0x40')](handleError(_0x2017fc,null));};
\ No newline at end of file
index d30470a..7671265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x1b4357,_0x36717c){var _0x621e7b=function(_0x15e740){while(--_0x15e740){_0x1b4357['push'](_0x1b4357['shift']());}};_0x621e7b(++_0x36717c);}(_0x326f,0xd1));var _0xf326=function(_0x401827,_0x8a3cc7){_0x401827=_0x401827-0x0;var _0x3da7f5=_0x326f[_0x401827];return _0x3da7f5;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelQueueReport.attributes','exports'];(function(_0xb653f3,_0x5cccc0){var _0x5b5ed1=function(_0x53b077){while(--_0x53b077){_0xb653f3['push'](_0xb653f3['shift']());}};_0x5b5ed1(++_0x5cccc0);}(_0x2ef3,0xba));var _0x32ef=function(_0x5cf149,_0x410bb7){_0x5cf149=_0x5cf149-0x0;var _0x3b88cb=_0x2ef3[_0x5cf149];return _0x3b88cb;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var logger=require(_0x32ef('0x2'))(_0x32ef('0x3'));var moment=require(_0x32ef('0x4'));var BPromise=require(_0x32ef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32ef('0x6'));var rimraf=require(_0x32ef('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ef('0x8'));module[_0x32ef('0x9')]=function(_0x4c8104,_0x5dfa09){return _0x4c8104[_0x32ef('0xa')](_0x32ef('0xb'),attributes,{'tableName':_0x32ef('0xc'),'paranoid':![],'indexes':[{'name':_0x32ef('0xd'),'fields':[_0x32ef('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 50540f7..eef47b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc9b=['client','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','update','attributes','limit','UpdateOpenchannelQueueReport','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise'];(function(_0x2cd1e4,_0x23d906){var _0x167374=function(_0x496435){while(--_0x496435){_0x2cd1e4['push'](_0x2cd1e4['shift']());}};_0x167374(++_0x23d906);}(_0xdc9b,0x70));var _0xbdc9=function(_0x48fb5f,_0x4e31de){_0x48fb5f=_0x48fb5f-0x0;var _0x1c7d10=_0xdc9b[_0x48fb5f];return _0x1c7d10;};'use strict';var _=require(_0xbdc9('0x0'));var util=require(_0xbdc9('0x1'));var moment=require(_0xbdc9('0x2'));var BPromise=require('bluebird');var rs=require(_0xbdc9('0x3'));var fs=require('fs');var Redis=require(_0xbdc9('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbdc9('0x5'))(_0xbdc9('0x6'));var config=require('../../config/environment');var jayson=require(_0xbdc9('0x7'));var client=jayson[_0xbdc9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x472956,_0x597a18,_0x3a3dc9){return new BPromise(function(_0x15236a,_0x3b3cbd){return client[_0xbdc9('0x9')](_0x472956,_0x3a3dc9)[_0xbdc9('0xa')](function(_0x33f353){logger[_0xbdc9('0xb')](_0xbdc9('0xc'),_0x597a18,_0xbdc9('0xd'));logger[_0xbdc9('0xe')](_0xbdc9('0xf'),_0x597a18,_0xbdc9('0xd'),JSON[_0xbdc9('0x10')](_0x33f353));if(_0x33f353[_0xbdc9('0x11')]){if(_0x33f353[_0xbdc9('0x11')][_0xbdc9('0x12')]===0x1f4){logger[_0xbdc9('0x11')](_0xbdc9('0xc'),_0x597a18,_0x33f353[_0xbdc9('0x11')][_0xbdc9('0x13')]);return _0x3b3cbd(_0x33f353[_0xbdc9('0x11')]['message']);}logger[_0xbdc9('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x597a18,_0x33f353['error'][_0xbdc9('0x13')]);return _0x15236a(_0x33f353[_0xbdc9('0x11')]['message']);}else{logger[_0xbdc9('0xb')](_0xbdc9('0xc'),_0x597a18,_0xbdc9('0xd'));_0x15236a(_0x33f353[_0xbdc9('0x14')][_0xbdc9('0x13')]);}})[_0xbdc9('0x15')](function(_0x4f6125){logger['error'](_0xbdc9('0xc'),_0x597a18,_0x4f6125);_0x3b3cbd(_0x4f6125);});});}exports[_0xbdc9('0x16')]=function(_0x32b094){var _0x54add5=this;return new Promise(function(_0x4f60f4,_0x333488){return db[_0xbdc9('0x17')]['create'](_0x32b094[_0xbdc9('0x18')],{'raw':_0x32b094[_0xbdc9('0x19')]?_0x32b094[_0xbdc9('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xbdc9('0xa')](function(_0x37e81f){logger[_0xbdc9('0xb')](_0xbdc9('0x16'),_0x32b094);logger[_0xbdc9('0xe')](_0xbdc9('0x16'),_0x32b094,JSON['stringify'](_0x37e81f));_0x4f60f4(_0x37e81f);})['catch'](function(_0x2d9831){logger[_0xbdc9('0x11')](_0xbdc9('0x16'),_0x2d9831['message'],_0x32b094);_0x333488(_0x54add5[_0xbdc9('0x11')](0x1f4,_0x2d9831[_0xbdc9('0x13')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x715fa1){var _0x18ca88=this;return new Promise(function(_0x38d868,_0x23a571){return db[_0xbdc9('0x17')][_0xbdc9('0x1a')](_0x715fa1[_0xbdc9('0x18')],{'raw':_0x715fa1[_0xbdc9('0x19')]?_0x715fa1[_0xbdc9('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x715fa1[_0xbdc9('0x19')]?_0x715fa1[_0xbdc9('0x19')]['where']||null:null,'attributes':_0x715fa1[_0xbdc9('0x19')]?_0x715fa1[_0xbdc9('0x19')][_0xbdc9('0x1b')]||null:null,'limit':_0x715fa1[_0xbdc9('0x19')]?_0x715fa1[_0xbdc9('0x19')][_0xbdc9('0x1c')]||null:null})['then'](function(_0x1e1397){logger[_0xbdc9('0xb')](_0xbdc9('0x1d'),_0x715fa1);logger['debug']('UpdateOpenchannelQueueReport',_0x715fa1,JSON['stringify'](_0x1e1397));_0x38d868(_0x1e1397);})[_0xbdc9('0x15')](function(_0x2ce975){logger[_0xbdc9('0x11')](_0xbdc9('0x1d'),_0x2ce975[_0xbdc9('0x13')],_0x715fa1);_0x23a571(_0x18ca88[_0xbdc9('0x11')](0x1f4,_0x2ce975['message']));});});};
\ No newline at end of file
+var _0xbb59=['then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateOpenchannelQueueReport','body','options','catch','UpdateOpenchannelQueueReport','update','where','attributes','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x562faa,_0x23adc7){var _0xc70f59=function(_0x2d7dec){while(--_0x2d7dec){_0x562faa['push'](_0x562faa['shift']());}};_0xc70f59(++_0x23adc7);}(_0xbb59,0xec));var _0x9bb5=function(_0xecdc8b,_0x4167f2){_0xecdc8b=_0xecdc8b-0x0;var _0x201999=_0xbb59[_0xecdc8b];return _0x201999;};'use strict';var _=require(_0x9bb5('0x0'));var util=require(_0x9bb5('0x1'));var moment=require(_0x9bb5('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bb5('0x3'));var db=require(_0x9bb5('0x4'))['db'];var utils=require(_0x9bb5('0x5'));var logger=require(_0x9bb5('0x6'))(_0x9bb5('0x7'));var config=require('../../config/environment');var jayson=require(_0x9bb5('0x8'));var client=jayson[_0x9bb5('0x9')][_0x9bb5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2df722,_0xe362e0,_0x83fd10){return new BPromise(function(_0x2d6cce,_0x4e3857){return client[_0x9bb5('0xb')](_0x2df722,_0x83fd10)[_0x9bb5('0xc')](function(_0x2fdbcb){logger[_0x9bb5('0xd')](_0x9bb5('0xe'),_0xe362e0,'request\x20sent');logger[_0x9bb5('0xf')](_0x9bb5('0x10'),_0xe362e0,_0x9bb5('0x11'),JSON[_0x9bb5('0x12')](_0x2fdbcb));if(_0x2fdbcb[_0x9bb5('0x13')]){if(_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x14')]===0x1f4){logger[_0x9bb5('0x13')](_0x9bb5('0xe'),_0xe362e0,_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x15')]);return _0x4e3857(_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x15')]);}logger[_0x9bb5('0x13')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xe362e0,_0x2fdbcb['error'][_0x9bb5('0x15')]);return _0x2d6cce(_0x2fdbcb['error']['message']);}else{logger[_0x9bb5('0xd')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xe362e0,_0x9bb5('0x11'));_0x2d6cce(_0x2fdbcb[_0x9bb5('0x16')][_0x9bb5('0x15')]);}})['catch'](function(_0xb471e){logger[_0x9bb5('0x13')](_0x9bb5('0xe'),_0xe362e0,_0xb471e);_0x4e3857(_0xb471e);});});}exports[_0x9bb5('0x17')]=function(_0xba8392){var _0x19d1e9=this;return new Promise(function(_0x162815,_0xe44bdd){return db['OpenchannelQueueReport']['create'](_0xba8392[_0x9bb5('0x18')],{'raw':_0xba8392[_0x9bb5('0x19')]?_0xba8392['options']['raw']===undefined?!![]:![]:!![]})[_0x9bb5('0xc')](function(_0x182966){logger[_0x9bb5('0xd')]('CreateOpenchannelQueueReport',_0xba8392);logger[_0x9bb5('0xf')](_0x9bb5('0x17'),_0xba8392,JSON[_0x9bb5('0x12')](_0x182966));_0x162815(_0x182966);})[_0x9bb5('0x1a')](function(_0x51fa34){logger[_0x9bb5('0x13')](_0x9bb5('0x17'),_0x51fa34['message'],_0xba8392);_0xe44bdd(_0x19d1e9[_0x9bb5('0x13')](0x1f4,_0x51fa34['message']));});});};exports[_0x9bb5('0x1b')]=function(_0x5357e9){var _0x4be52b=this;return new Promise(function(_0x1d7195,_0x16db23){return db['OpenchannelQueueReport'][_0x9bb5('0x1c')](_0x5357e9[_0x9bb5('0x18')],{'raw':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9[_0x9bb5('0x19')][_0x9bb5('0x1d')]||null:null,'attributes':_0x5357e9['options']?_0x5357e9[_0x9bb5('0x19')][_0x9bb5('0x1e')]||null:null,'limit':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9['options']['limit']||null:null})['then'](function(_0x1ad67b){logger[_0x9bb5('0xd')](_0x9bb5('0x1b'),_0x5357e9);logger[_0x9bb5('0xf')](_0x9bb5('0x1b'),_0x5357e9,JSON['stringify'](_0x1ad67b));_0x1d7195(_0x1ad67b);})['catch'](function(_0x59ef00){logger[_0x9bb5('0x13')](_0x9bb5('0x1b'),_0x59ef00[_0x9bb5('0x15')],_0x5357e9);_0x16db23(_0x4be52b['error'](0x1f4,_0x59ef00['message']));});});};
\ No newline at end of file
index a46998b..655d2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74d=['multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','show','post','put','/:id','delete','destroy'];(function(_0x4ea982,_0x18c04d){var _0x13c0d5=function(_0x172c1d){while(--_0x172c1d){_0x4ea982['push'](_0x4ea982['shift']());}};_0x13c0d5(++_0x18c04d);}(_0xe74d,0x144));var _0xde74=function(_0x9eb6c0,_0x4a1995){_0x9eb6c0=_0x9eb6c0-0x0;var _0x2a4010=_0xe74d[_0x9eb6c0];return _0x2a4010;};'use strict';var multer=require(_0xde74('0x0'));var util=require('util');var path=require(_0xde74('0x1'));var timeout=require(_0xde74('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xde74('0x3'));var auth=require(_0xde74('0x4'));var interaction=require(_0xde74('0x5'));var config=require(_0xde74('0x6'));var controller=require(_0xde74('0x7'));router[_0xde74('0x8')]('/',auth[_0xde74('0x9')](),controller[_0xde74('0xa')]);router[_0xde74('0x8')](_0xde74('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xde74('0x8')]('/:id',auth[_0xde74('0x9')](),controller[_0xde74('0xc')]);router[_0xde74('0xd')]('/',auth[_0xde74('0x9')](),controller['create']);router[_0xde74('0xe')](_0xde74('0xf'),auth[_0xde74('0x9')](),controller['update']);router[_0xde74('0x10')](_0xde74('0xf'),auth[_0xde74('0x9')](),controller[_0xde74('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x10ef=['/:id','show','post','create','put','update','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x255553,_0x3eb4cd){var _0x4bf0f6=function(_0x44c016){while(--_0x44c016){_0x255553['push'](_0x255553['shift']());}};_0x4bf0f6(++_0x3eb4cd);}(_0x10ef,0x1a4));var _0xf10e=function(_0x8be34a,_0x446d42){_0x8be34a=_0x8be34a-0x0;var _0x33b2db=_0x10ef[_0x8be34a];return _0x33b2db;};'use strict';var multer=require(_0xf10e('0x0'));var util=require(_0xf10e('0x1'));var path=require(_0xf10e('0x2'));var timeout=require('connect-timeout');var express=require(_0xf10e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf10e('0x4'));var interaction=require(_0xf10e('0x5'));var config=require(_0xf10e('0x6'));var controller=require('./openchannelTransferReport.controller');router[_0xf10e('0x7')]('/',auth[_0xf10e('0x8')](),controller[_0xf10e('0x9')]);router[_0xf10e('0x7')](_0xf10e('0xa'),auth[_0xf10e('0x8')](),controller[_0xf10e('0xb')]);router[_0xf10e('0x7')](_0xf10e('0xc'),auth[_0xf10e('0x8')](),controller[_0xf10e('0xd')]);router[_0xf10e('0xe')]('/',auth[_0xf10e('0x8')](),controller[_0xf10e('0xf')]);router[_0xf10e('0x10')](_0xf10e('0xc'),auth[_0xf10e('0x8')](),controller[_0xf10e('0x11')]);router['delete'](_0xf10e('0xc'),auth[_0xf10e('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 034e2b8..4901a6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x3bc8e3,_0x409f8b){var _0xcac8d2=function(_0xa1d61c){while(--_0xa1d61c){_0x3bc8e3['push'](_0x3bc8e3['shift']());}};_0xcac8d2(++_0x409f8b);}(_0xaa88,0x137));var _0x8aa8=function(_0x11ba83,_0xd5611a){_0x11ba83=_0x11ba83-0x0;var _0x3f3925=_0xaa88[_0x11ba83];return _0x3f3925;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x1e73fc,_0x533750){var _0xeceac4=function(_0x2c6dda){while(--_0x2c6dda){_0x1e73fc['push'](_0x1e73fc['shift']());}};_0xeceac4(++_0x533750);}(_0x9c44,0x178));var _0x49c4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x9c44[_0x334841];return _0x5beb4b;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 42eb122..b00431e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75e=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','options','OpenchannelTransferReport','findAll','catch','show','params','includeAll','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset'];(function(_0x602ca8,_0x568e82){var _0x26e8ab=function(_0x3fb700){while(--_0x3fb700){_0x602ca8['push'](_0x602ca8['shift']());}};_0x26e8ab(++_0x568e82);}(_0xa75e,0x78));var _0xea75=function(_0x290093,_0x1e4f0d){_0x290093=_0x290093-0x0;var _0x191bfb=_0xa75e[_0x290093];return _0x191bfb;};'use strict';var emlformat=require(_0xea75('0x0'));var rimraf=require(_0xea75('0x1'));var zipdir=require(_0xea75('0x2'));var jsonpatch=require(_0xea75('0x3'));var rp=require(_0xea75('0x4'));var moment=require('moment');var BPromise=require(_0xea75('0x5'));var Mustache=require('mustache');var util=require(_0xea75('0x6'));var path=require(_0xea75('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xea75('0x8'));var fs=require('fs');var fs_extra=require(_0xea75('0x9'));var _=require(_0xea75('0xa'));var squel=require(_0xea75('0xb'));var crypto=require(_0xea75('0xc'));var jsforce=require(_0xea75('0xd'));var deskjs=require(_0xea75('0xe'));var toCsv=require(_0xea75('0xf'));var querystring=require(_0xea75('0x10'));var Papa=require('papaparse');var Redis=require(_0xea75('0x11'));var authService=require(_0xea75('0x12'));var qs=require(_0xea75('0x13'));var as=require(_0xea75('0x14'));var hardwareService=require(_0xea75('0x15'));var logger=require(_0xea75('0x16'))(_0xea75('0x17'));var utils=require(_0xea75('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xea75('0x19'))['db'];function respondWithStatusCode(_0x2f1b9b,_0x49f4e1){_0x49f4e1=_0x49f4e1||0xcc;return function(_0x5b0778){if(_0x5b0778){return _0x2f1b9b[_0xea75('0x1a')](_0x49f4e1);}return _0x2f1b9b['status'](_0x49f4e1)[_0xea75('0x1b')]();};}function respondWithResult(_0x55fa78,_0x5322aa){_0x5322aa=_0x5322aa||0xc8;return function(_0x8158c9){if(_0x8158c9){return _0x55fa78[_0xea75('0x1c')](_0x5322aa)[_0xea75('0x1d')](_0x8158c9);}};}function respondWithFilteredResult(_0x523ef8,_0x32a5c2){return function(_0x16ba49){if(_0x16ba49){var _0x581d02=typeof _0x32a5c2['offset']==='undefined'&&typeof _0x32a5c2[_0xea75('0x1e')]===_0xea75('0x1f');var _0x240029=_0x16ba49[_0xea75('0x20')];var _0x347b1e=_0x581d02?0x0:_0x32a5c2[_0xea75('0x21')];var _0x3fdb1a=_0x581d02?_0x16ba49[_0xea75('0x20')]:_0x32a5c2[_0xea75('0x21')]+_0x32a5c2[_0xea75('0x1e')];var _0x19e51a;if(_0x3fdb1a>=_0x240029){_0x3fdb1a=_0x240029;_0x19e51a=0xc8;}else{_0x19e51a=0xce;}_0x523ef8[_0xea75('0x1c')](_0x19e51a);return _0x523ef8['set'](_0xea75('0x22'),_0x347b1e+'-'+_0x3fdb1a+'/'+_0x240029)[_0xea75('0x1d')](_0x16ba49);}return null;};}function patchUpdates(_0x366831){return function(_0x56ac87){try{jsonpatch[_0xea75('0x23')](_0x56ac87,_0x366831,!![]);}catch(_0x3301c1){return BPromise[_0xea75('0x24')](_0x3301c1);}return _0x56ac87[_0xea75('0x25')]();};}function saveUpdates(_0x491e8c,_0x12680d){return function(_0x14f476){if(_0x14f476){return _0x14f476[_0xea75('0x26')](_0x491e8c)[_0xea75('0x27')](function(_0x3abf43){return _0x3abf43;});}return null;};}function removeEntity(_0xdff49,_0x53a699){return function(_0x2d9009){if(_0x2d9009){return _0x2d9009[_0xea75('0x28')]()[_0xea75('0x27')](function(){_0xdff49[_0xea75('0x1c')](0xcc)[_0xea75('0x1b')]();});}};}function handleEntityNotFound(_0x5138e7,_0x10a768){return function(_0x29bd7f){if(!_0x29bd7f){_0x5138e7[_0xea75('0x1a')](0x194);}return _0x29bd7f;};}function handleError(_0x437e56,_0x1c090b){_0x1c090b=_0x1c090b||0x1f4;return function(_0x86aecf){logger[_0xea75('0x29')](_0x86aecf[_0xea75('0x2a')]);if(_0x86aecf[_0xea75('0x2b')]){delete _0x86aecf[_0xea75('0x2b')];}_0x437e56[_0xea75('0x1c')](_0x1c090b)[_0xea75('0x2c')](_0x86aecf);};}exports[_0xea75('0x2d')]=function(_0x312924,_0xc46b71){var _0x10fe0d={},_0x4320ab={},_0x5a6c57={'count':0x0,'rows':[]};var _0x1b92c0=_[_0xea75('0x2e')](db['OpenchannelTransferReport'][_0xea75('0x2f')],function(_0x1993d7){return{'name':_0x1993d7[_0xea75('0x30')],'type':_0x1993d7['type'][_0xea75('0x31')]};});_0x4320ab[_0xea75('0x32')]=_[_0xea75('0x2e')](_0x1b92c0,_0xea75('0x2b'));_0x4320ab[_0xea75('0x33')]=_[_0xea75('0x34')](_0x312924[_0xea75('0x33')]);_0x4320ab[_0xea75('0x35')]=_['intersection'](_0x4320ab[_0xea75('0x32')],_0x4320ab[_0xea75('0x33')]);_0x10fe0d['attributes']=_[_0xea75('0x36')](_0x4320ab[_0xea75('0x32')],qs[_0xea75('0x37')](_0x312924['query']['fields']));_0x10fe0d[_0xea75('0x38')]=_0x10fe0d[_0xea75('0x38')][_0xea75('0x39')]?_0x10fe0d[_0xea75('0x38')]:_0x4320ab['model'];if(!_0x312924[_0xea75('0x33')][_0xea75('0x3a')](_0xea75('0x3b'))){_0x10fe0d[_0xea75('0x1e')]=qs[_0xea75('0x1e')](_0x312924[_0xea75('0x33')][_0xea75('0x1e')]);_0x10fe0d[_0xea75('0x21')]=qs[_0xea75('0x21')](_0x312924['query'][_0xea75('0x21')]);}_0x10fe0d['order']=qs[_0xea75('0x3c')](_0x312924[_0xea75('0x33')][_0xea75('0x3c')]);_0x10fe0d[_0xea75('0x3d')]=qs[_0xea75('0x35')](_[_0xea75('0x3e')](_0x312924[_0xea75('0x33')],_0x4320ab[_0xea75('0x35')]),_0x1b92c0);if(_0x312924[_0xea75('0x33')]['filter']){_0x10fe0d[_0xea75('0x3d')]=_[_0xea75('0x3f')](_0x10fe0d[_0xea75('0x3d')],{'$or':_[_0xea75('0x2e')](_0x1b92c0,function(_0x35f976){if(_0x35f976[_0xea75('0x40')]!=='VIRTUAL'){var _0x159d98={};_0x159d98[_0x35f976[_0xea75('0x2b')]]={'$like':'%'+_0x312924[_0xea75('0x33')]['filter']+'%'};return _0x159d98;}})});}_0x10fe0d=_[_0xea75('0x3f')]({},_0x10fe0d,_0x312924[_0xea75('0x41')]);var _0x264efb={'where':_0x10fe0d[_0xea75('0x3d')]};return db['OpenchannelTransferReport']['count'](_0x264efb)[_0xea75('0x27')](function(_0x92d3cf){_0x5a6c57[_0xea75('0x20')]=_0x92d3cf;if(_0x312924['query']['includeAll']){_0x10fe0d['include']=[{'all':!![]}];}return db[_0xea75('0x42')][_0xea75('0x43')](_0x10fe0d);})[_0xea75('0x27')](function(_0x3948){_0x5a6c57['rows']=_0x3948;return _0x5a6c57;})[_0xea75('0x27')](respondWithFilteredResult(_0xc46b71,_0x10fe0d))[_0xea75('0x44')](handleError(_0xc46b71,null));};exports[_0xea75('0x45')]=function(_0x4a8ed1,_0x51f745){var _0x113484={'raw':!![],'where':{'id':_0x4a8ed1[_0xea75('0x46')]['id']}},_0x391917={};_0x391917['model']=_[_0xea75('0x34')](db[_0xea75('0x42')]['rawAttributes']);_0x391917[_0xea75('0x33')]=_['keys'](_0x4a8ed1['query']);_0x391917['filters']=_[_0xea75('0x36')](_0x391917[_0xea75('0x32')],_0x391917[_0xea75('0x33')]);_0x113484['attributes']=_[_0xea75('0x36')](_0x391917[_0xea75('0x32')],qs['fields'](_0x4a8ed1[_0xea75('0x33')][_0xea75('0x37')]));_0x113484[_0xea75('0x38')]=_0x113484[_0xea75('0x38')][_0xea75('0x39')]?_0x113484[_0xea75('0x38')]:_0x391917[_0xea75('0x32')];if(_0x4a8ed1[_0xea75('0x33')][_0xea75('0x47')]){_0x113484[_0xea75('0x48')]=[{'all':!![]}];}_0x113484=_[_0xea75('0x3f')]({},_0x113484,_0x4a8ed1['options']);return db[_0xea75('0x42')]['find'](_0x113484)['then'](handleEntityNotFound(_0x51f745,null))[_0xea75('0x27')](respondWithResult(_0x51f745,null))[_0xea75('0x44')](handleError(_0x51f745,null));};exports[_0xea75('0x49')]=function(_0x13c450,_0x31d2c7){return db['OpenchannelTransferReport']['create'](_0x13c450[_0xea75('0x4a')],{})[_0xea75('0x27')](respondWithResult(_0x31d2c7,0xc9))['catch'](handleError(_0x31d2c7,null));};exports[_0xea75('0x26')]=function(_0x284c41,_0x2f6d75){if(_0x284c41[_0xea75('0x4a')]['id']){delete _0x284c41[_0xea75('0x4a')]['id'];}return db[_0xea75('0x42')][_0xea75('0x4b')]({'where':{'id':_0x284c41[_0xea75('0x46')]['id']}})[_0xea75('0x27')](handleEntityNotFound(_0x2f6d75,null))['then'](saveUpdates(_0x284c41['body'],null))[_0xea75('0x27')](respondWithResult(_0x2f6d75,null))[_0xea75('0x44')](handleError(_0x2f6d75,null));};exports['destroy']=function(_0x3edecb,_0x5c8ea8){return db[_0xea75('0x42')][_0xea75('0x4b')]({'where':{'id':_0x3edecb['params']['id']}})[_0xea75('0x27')](handleEntityNotFound(_0x5c8ea8,null))['then'](removeEntity(_0x5c8ea8,null))[_0xea75('0x44')](handleError(_0x5c8ea8,null));};exports[_0xea75('0x4c')]=function(_0x482681,_0x54be00){return db[_0xea75('0x42')]['describe']()['then'](respondWithResult(_0x54be00,null))[_0xea75('0x44')](handleError(_0x54be00,null));};
\ No newline at end of file
+var _0x94dc=['OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','keys','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map'];(function(_0x3bb341,_0x3b7ba1){var _0x2c8ba5=function(_0x1f2a86){while(--_0x1f2a86){_0x3bb341['push'](_0x3bb341['shift']());}};_0x2c8ba5(++_0x3b7ba1);}(_0x94dc,0x70));var _0xc94d=function(_0x42d29d,_0x41c228){_0x42d29d=_0x42d29d-0x0;var _0x34a98e=_0x94dc[_0x42d29d];return _0x34a98e;};'use strict';var emlformat=require(_0xc94d('0x0'));var rimraf=require(_0xc94d('0x1'));var zipdir=require(_0xc94d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc94d('0x3'));var moment=require(_0xc94d('0x4'));var BPromise=require(_0xc94d('0x5'));var Mustache=require('mustache');var util=require(_0xc94d('0x6'));var path=require(_0xc94d('0x7'));var sox=require(_0xc94d('0x8'));var csv=require(_0xc94d('0x9'));var ejs=require(_0xc94d('0xa'));var fs=require('fs');var fs_extra=require(_0xc94d('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc94d('0xc'));var jsforce=require(_0xc94d('0xd'));var deskjs=require(_0xc94d('0xe'));var toCsv=require(_0xc94d('0x9'));var querystring=require(_0xc94d('0xf'));var Papa=require(_0xc94d('0x10'));var Redis=require(_0xc94d('0x11'));var authService=require(_0xc94d('0x12'));var qs=require(_0xc94d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc94d('0x14'));var logger=require(_0xc94d('0x15'))(_0xc94d('0x16'));var utils=require(_0xc94d('0x17'));var config=require(_0xc94d('0x18'));var licenseUtil=require(_0xc94d('0x19'));var db=require(_0xc94d('0x1a'))['db'];function respondWithStatusCode(_0x3f1ae4,_0x4a4ae2){_0x4a4ae2=_0x4a4ae2||0xcc;return function(_0x51ddc4){if(_0x51ddc4){return _0x3f1ae4[_0xc94d('0x1b')](_0x4a4ae2);}return _0x3f1ae4[_0xc94d('0x1c')](_0x4a4ae2)['end']();};}function respondWithResult(_0x3556fd,_0x33a6cd){_0x33a6cd=_0x33a6cd||0xc8;return function(_0x447a62){if(_0x447a62){return _0x3556fd['status'](_0x33a6cd)[_0xc94d('0x1d')](_0x447a62);}};}function respondWithFilteredResult(_0x552d1d,_0x46ea02){return function(_0x39b3d2){if(_0x39b3d2){var _0x4d1caf=typeof _0x46ea02[_0xc94d('0x1e')]===_0xc94d('0x1f')&&typeof _0x46ea02[_0xc94d('0x20')]==='undefined';var _0x1707b9=_0x39b3d2[_0xc94d('0x21')];var _0x564e16=_0x4d1caf?0x0:_0x46ea02[_0xc94d('0x1e')];var _0x4fc703=_0x4d1caf?_0x39b3d2[_0xc94d('0x21')]:_0x46ea02['offset']+_0x46ea02[_0xc94d('0x20')];var _0xf30276;if(_0x4fc703>=_0x1707b9){_0x4fc703=_0x1707b9;_0xf30276=0xc8;}else{_0xf30276=0xce;}_0x552d1d[_0xc94d('0x1c')](_0xf30276);return _0x552d1d[_0xc94d('0x22')](_0xc94d('0x23'),_0x564e16+'-'+_0x4fc703+'/'+_0x1707b9)[_0xc94d('0x1d')](_0x39b3d2);}return null;};}function patchUpdates(_0x28602c){return function(_0x5a882e){try{jsonpatch[_0xc94d('0x24')](_0x5a882e,_0x28602c,!![]);}catch(_0x951ab){return BPromise[_0xc94d('0x25')](_0x951ab);}return _0x5a882e[_0xc94d('0x26')]();};}function saveUpdates(_0x5a9488,_0x5eaad9){return function(_0x2058ed){if(_0x2058ed){return _0x2058ed[_0xc94d('0x27')](_0x5a9488)[_0xc94d('0x28')](function(_0x2ab4ae){return _0x2ab4ae;});}return null;};}function removeEntity(_0x29da9f,_0x594d91){return function(_0x5669f6){if(_0x5669f6){return _0x5669f6[_0xc94d('0x29')]()[_0xc94d('0x28')](function(){_0x29da9f[_0xc94d('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53db1e,_0x1d5d92){return function(_0x5f05b8){if(!_0x5f05b8){_0x53db1e[_0xc94d('0x1b')](0x194);}return _0x5f05b8;};}function handleError(_0x445d4d,_0x392d0e){_0x392d0e=_0x392d0e||0x1f4;return function(_0x43aaf2){logger[_0xc94d('0x2a')](_0x43aaf2[_0xc94d('0x2b')]);if(_0x43aaf2[_0xc94d('0x2c')]){delete _0x43aaf2[_0xc94d('0x2c')];}_0x445d4d[_0xc94d('0x1c')](_0x392d0e)[_0xc94d('0x2d')](_0x43aaf2);};}exports[_0xc94d('0x2e')]=function(_0xf15fb3,_0x55b5f3){var _0x16a5cd={},_0x55e09e={},_0x22d431={'count':0x0,'rows':[]};var _0x125c2c=_[_0xc94d('0x2f')](db[_0xc94d('0x30')][_0xc94d('0x31')],function(_0x596d55){return{'name':_0x596d55[_0xc94d('0x32')],'type':_0x596d55[_0xc94d('0x33')][_0xc94d('0x34')]};});_0x55e09e[_0xc94d('0x35')]=_[_0xc94d('0x2f')](_0x125c2c,_0xc94d('0x2c'));_0x55e09e[_0xc94d('0x36')]=_['keys'](_0xf15fb3[_0xc94d('0x36')]);_0x55e09e['filters']=_[_0xc94d('0x37')](_0x55e09e[_0xc94d('0x35')],_0x55e09e[_0xc94d('0x36')]);_0x16a5cd[_0xc94d('0x38')]=_['intersection'](_0x55e09e['model'],qs['fields'](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x39')]));_0x16a5cd[_0xc94d('0x38')]=_0x16a5cd[_0xc94d('0x38')][_0xc94d('0x3a')]?_0x16a5cd[_0xc94d('0x38')]:_0x55e09e['model'];if(!_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x3b')](_0xc94d('0x3c'))){_0x16a5cd['limit']=qs[_0xc94d('0x20')](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x20')]);_0x16a5cd[_0xc94d('0x1e')]=qs['offset'](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x1e')]);}_0x16a5cd['order']=qs['sort'](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x3d')]);_0x16a5cd['where']=qs[_0xc94d('0x3e')](_[_0xc94d('0x3f')](_0xf15fb3[_0xc94d('0x36')],_0x55e09e['filters']),_0x125c2c);if(_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x40')]){_0x16a5cd[_0xc94d('0x41')]=_[_0xc94d('0x42')](_0x16a5cd[_0xc94d('0x41')],{'$or':_[_0xc94d('0x2f')](_0x125c2c,function(_0x57ebf2){if(_0x57ebf2['type']!==_0xc94d('0x43')){var _0x3f3f7e={};_0x3f3f7e[_0x57ebf2[_0xc94d('0x2c')]]={'$like':'%'+_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x40')]+'%'};return _0x3f3f7e;}})});}_0x16a5cd=_[_0xc94d('0x42')]({},_0x16a5cd,_0xf15fb3[_0xc94d('0x44')]);var _0x122dc7={'where':_0x16a5cd[_0xc94d('0x41')]};return db[_0xc94d('0x30')][_0xc94d('0x21')](_0x122dc7)[_0xc94d('0x28')](function(_0x58a742){_0x22d431[_0xc94d('0x21')]=_0x58a742;if(_0xf15fb3['query'][_0xc94d('0x45')]){_0x16a5cd[_0xc94d('0x46')]=[{'all':!![]}];}return db['OpenchannelTransferReport']['findAll'](_0x16a5cd);})[_0xc94d('0x28')](function(_0x2e622f){_0x22d431[_0xc94d('0x47')]=_0x2e622f;return _0x22d431;})[_0xc94d('0x28')](respondWithFilteredResult(_0x55b5f3,_0x16a5cd))[_0xc94d('0x48')](handleError(_0x55b5f3,null));};exports[_0xc94d('0x49')]=function(_0x240f2e,_0x4c7487){var _0x2a6305={'raw':!![],'where':{'id':_0x240f2e['params']['id']}},_0x2ec947={};_0x2ec947['model']=_[_0xc94d('0x4a')](db[_0xc94d('0x30')][_0xc94d('0x31')]);_0x2ec947[_0xc94d('0x36')]=_[_0xc94d('0x4a')](_0x240f2e[_0xc94d('0x36')]);_0x2ec947[_0xc94d('0x3e')]=_[_0xc94d('0x37')](_0x2ec947[_0xc94d('0x35')],_0x2ec947[_0xc94d('0x36')]);_0x2a6305[_0xc94d('0x38')]=_[_0xc94d('0x37')](_0x2ec947[_0xc94d('0x35')],qs[_0xc94d('0x39')](_0x240f2e[_0xc94d('0x36')][_0xc94d('0x39')]));_0x2a6305[_0xc94d('0x38')]=_0x2a6305['attributes']['length']?_0x2a6305['attributes']:_0x2ec947[_0xc94d('0x35')];if(_0x240f2e[_0xc94d('0x36')][_0xc94d('0x45')]){_0x2a6305[_0xc94d('0x46')]=[{'all':!![]}];}_0x2a6305=_['merge']({},_0x2a6305,_0x240f2e['options']);return db[_0xc94d('0x30')][_0xc94d('0x4b')](_0x2a6305)[_0xc94d('0x28')](handleEntityNotFound(_0x4c7487,null))[_0xc94d('0x28')](respondWithResult(_0x4c7487,null))['catch'](handleError(_0x4c7487,null));};exports[_0xc94d('0x4c')]=function(_0x36f59a,_0xcfdeb1){return db[_0xc94d('0x30')][_0xc94d('0x4c')](_0x36f59a[_0xc94d('0x4d')],{})[_0xc94d('0x28')](respondWithResult(_0xcfdeb1,0xc9))[_0xc94d('0x48')](handleError(_0xcfdeb1,null));};exports[_0xc94d('0x27')]=function(_0x1e772e,_0x3a12b1){if(_0x1e772e['body']['id']){delete _0x1e772e[_0xc94d('0x4d')]['id'];}return db[_0xc94d('0x30')][_0xc94d('0x4b')]({'where':{'id':_0x1e772e[_0xc94d('0x4e')]['id']}})[_0xc94d('0x28')](handleEntityNotFound(_0x3a12b1,null))[_0xc94d('0x28')](saveUpdates(_0x1e772e[_0xc94d('0x4d')],null))['then'](respondWithResult(_0x3a12b1,null))[_0xc94d('0x48')](handleError(_0x3a12b1,null));};exports[_0xc94d('0x29')]=function(_0x1d4cec,_0x521e39){return db[_0xc94d('0x30')]['find']({'where':{'id':_0x1d4cec[_0xc94d('0x4e')]['id']}})[_0xc94d('0x28')](handleEntityNotFound(_0x521e39,null))[_0xc94d('0x28')](removeEntity(_0x521e39,null))[_0xc94d('0x48')](handleError(_0x521e39,null));};exports[_0xc94d('0x4f')]=function(_0x8c3bf0,_0x4f40f8){return db[_0xc94d('0x30')][_0xc94d('0x4f')]()[_0xc94d('0x28')](respondWithResult(_0x4f40f8,null))[_0xc94d('0x48')](handleError(_0x4f40f8,null));};
\ No newline at end of file
index ca5c070..8b2e239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac2=['rimraf','../../config/environment','OpenchannelTransferReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x1ca9c5,_0x20c304){var _0x4092bc=function(_0x2ac730){while(--_0x2ac730){_0x1ca9c5['push'](_0x1ca9c5['shift']());}};_0x4092bc(++_0x20c304);}(_0x6ac2,0x1bc));var _0x26ac=function(_0x514c63,_0x3c34df){_0x514c63=_0x514c63-0x0;var _0x3f648f=_0x6ac2[_0x514c63];return _0x3f648f;};'use strict';var _=require(_0x26ac('0x0'));var util=require('util');var logger=require(_0x26ac('0x1'))(_0x26ac('0x2'));var moment=require(_0x26ac('0x3'));var BPromise=require(_0x26ac('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x26ac('0x5'));var rimraf=require(_0x26ac('0x6'));var config=require(_0x26ac('0x7'));var attributes=require('./openchannelTransferReport.attributes');module['exports']=function(_0x12450f,_0x492ccb){return _0x12450f['define'](_0x26ac('0x8'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x26ac('0x9'),'fields':[_0x26ac('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xde5a=['lodash','util','../../config/logger','api','path','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid'];(function(_0x1a33dd,_0x344163){var _0x437335=function(_0x10b716){while(--_0x10b716){_0x1a33dd['push'](_0x1a33dd['shift']());}};_0x437335(++_0x344163);}(_0xde5a,0xf2));var _0xade5=function(_0x3bed5f,_0x5bd941){_0x3bed5f=_0x3bed5f-0x0;var _0x5e2acb=_0xde5a[_0x3bed5f];return _0x5e2acb;};'use strict';var _=require(_0xade5('0x0'));var util=require(_0xade5('0x1'));var logger=require(_0xade5('0x2'))(_0xade5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xade5('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xade5('0x5'));module[_0xade5('0x6')]=function(_0xd49372,_0x2d7df2){return _0xd49372[_0xade5('0x7')](_0xade5('0x8'),attributes,{'tableName':_0xade5('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xade5('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index f615057..2923885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa786=['OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4a45b4,_0x59804f){var _0x1a99c9=function(_0x3aa517){while(--_0x3aa517){_0x4a45b4['push'](_0x4a45b4['shift']());}};_0x1a99c9(++_0x59804f);}(_0xa786,0x1d2));var _0x6a78=function(_0x521e75,_0x5d5b16){_0x521e75=_0x521e75-0x0;var _0x4d57ce=_0xa786[_0x521e75];return _0x4d57ce;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6a78('0x0'));var BPromise=require(_0x6a78('0x1'));var rs=require(_0x6a78('0x2'));var fs=require('fs');var Redis=require(_0x6a78('0x3'));var db=require(_0x6a78('0x4'))['db'];var utils=require(_0x6a78('0x5'));var logger=require(_0x6a78('0x6'))('rpc');var config=require(_0x6a78('0x7'));var jayson=require(_0x6a78('0x8'));var client=jayson[_0x6a78('0x9')][_0x6a78('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28d286,_0x2f8387,_0x2b8c4c){return new BPromise(function(_0x2a6de6,_0x25db5e){return client[_0x6a78('0xb')](_0x28d286,_0x2b8c4c)[_0x6a78('0xc')](function(_0x33e71c){logger[_0x6a78('0xd')](_0x6a78('0xe'),_0x2f8387,_0x6a78('0xf'));logger[_0x6a78('0x10')](_0x6a78('0x11'),_0x2f8387,_0x6a78('0xf'),JSON[_0x6a78('0x12')](_0x33e71c));if(_0x33e71c['error']){if(_0x33e71c['error'][_0x6a78('0x13')]===0x1f4){logger[_0x6a78('0x14')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x2f8387,_0x33e71c[_0x6a78('0x14')][_0x6a78('0x15')]);return _0x25db5e(_0x33e71c[_0x6a78('0x14')][_0x6a78('0x15')]);}logger[_0x6a78('0x14')](_0x6a78('0xe'),_0x2f8387,_0x33e71c[_0x6a78('0x14')]['message']);return _0x2a6de6(_0x33e71c['error']['message']);}else{logger[_0x6a78('0xd')](_0x6a78('0xe'),_0x2f8387,_0x6a78('0xf'));_0x2a6de6(_0x33e71c['result'][_0x6a78('0x15')]);}})[_0x6a78('0x16')](function(_0x5b5a5d){logger[_0x6a78('0x14')](_0x6a78('0xe'),_0x2f8387,_0x5b5a5d);_0x25db5e(_0x5b5a5d);});});}
\ No newline at end of file
+var _0x294b=['jayson/promise','client','http','then','info','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x59d957,_0x5dc0cb){var _0x406bdf=function(_0x319d80){while(--_0x319d80){_0x59d957['push'](_0x59d957['shift']());}};_0x406bdf(++_0x5dc0cb);}(_0x294b,0xea));var _0xb294=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x294b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb294('0x0'));var util=require('util');var moment=require(_0xb294('0x1'));var BPromise=require(_0xb294('0x2'));var rs=require(_0xb294('0x3'));var fs=require('fs');var Redis=require(_0xb294('0x4'));var db=require(_0xb294('0x5'))['db'];var utils=require(_0xb294('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb294('0x7'));var jayson=require(_0xb294('0x8'));var client=jayson[_0xb294('0x9')][_0xb294('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xcc7910,_0x509dbd,_0x39dfbf){return new BPromise(function(_0x5110aa,_0x5226a4){return client['request'](_0xcc7910,_0x39dfbf)[_0xb294('0xb')](function(_0x33f8e5){logger[_0xb294('0xc')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x509dbd,'request\x20sent');logger['debug'](_0xb294('0xd'),_0x509dbd,_0xb294('0xe'),JSON[_0xb294('0xf')](_0x33f8e5));if(_0x33f8e5[_0xb294('0x10')]){if(_0x33f8e5[_0xb294('0x10')][_0xb294('0x11')]===0x1f4){logger[_0xb294('0x10')](_0xb294('0x12'),_0x509dbd,_0x33f8e5[_0xb294('0x10')][_0xb294('0x13')]);return _0x5226a4(_0x33f8e5['error']['message']);}logger[_0xb294('0x10')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x509dbd,_0x33f8e5['error'][_0xb294('0x13')]);return _0x5110aa(_0x33f8e5[_0xb294('0x10')][_0xb294('0x13')]);}else{logger[_0xb294('0xc')](_0xb294('0x12'),_0x509dbd,_0xb294('0xe'));_0x5110aa(_0x33f8e5[_0xb294('0x14')][_0xb294('0x13')]);}})[_0xb294('0x15')](function(_0x289839){logger[_0xb294('0x10')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x509dbd,_0x289839);_0x5226a4(_0x289839);});});}
\ No newline at end of file
index b8effad..dcb9261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50a=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','show','post'];(function(_0x2b8424,_0x54131d){var _0x2678c2=function(_0xd42725){while(--_0xd42725){_0x2b8424['push'](_0x2b8424['shift']());}};_0x2678c2(++_0x54131d);}(_0xb50a,0x135));var _0xab50=function(_0x462d45,_0xec23a){_0x462d45=_0x462d45-0x0;var _0x51acb3=_0xb50a[_0x462d45];return _0x51acb3;};'use strict';var multer=require(_0xab50('0x0'));var util=require(_0xab50('0x1'));var path=require(_0xab50('0x2'));var timeout=require(_0xab50('0x3'));var express=require(_0xab50('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xab50('0x5'));var interaction=require(_0xab50('0x6'));var config=require(_0xab50('0x7'));var controller=require(_0xab50('0x8'));router[_0xab50('0x9')]('/',auth[_0xab50('0xa')](),controller[_0xab50('0xb')]);router[_0xab50('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xab50('0xc')]);router[_0xab50('0xd')]('/',auth[_0xab50('0xa')](),controller['create']);router['put'](_0xab50('0xe'),auth[_0xab50('0xa')](),controller[_0xab50('0xf')]);router[_0xab50('0x10')](_0xab50('0xe'),auth[_0xab50('0xa')](),controller[_0xab50('0x11')]);module[_0xab50('0x12')]=router;
\ No newline at end of file
+var _0x4ced=['./pause.controller','get','isAuthenticated','index','/:id','show','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0xc2779b,_0x506b63){var _0x43f072=function(_0x55ce78){while(--_0x55ce78){_0xc2779b['push'](_0xc2779b['shift']());}};_0x43f072(++_0x506b63);}(_0x4ced,0xf5));var _0xd4ce=function(_0x1727ad,_0x3283e4){_0x1727ad=_0x1727ad-0x0;var _0x441a02=_0x4ced[_0x1727ad];return _0x441a02;};'use strict';var multer=require(_0xd4ce('0x0'));var util=require('util');var path=require(_0xd4ce('0x1'));var timeout=require(_0xd4ce('0x2'));var express=require(_0xd4ce('0x3'));var router=express[_0xd4ce('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd4ce('0x5'));var config=require(_0xd4ce('0x6'));var controller=require(_0xd4ce('0x7'));router[_0xd4ce('0x8')]('/',auth[_0xd4ce('0x9')](),controller[_0xd4ce('0xa')]);router[_0xd4ce('0x8')](_0xd4ce('0xb'),auth[_0xd4ce('0x9')](),controller[_0xd4ce('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xd4ce('0xd')](_0xd4ce('0xb'),auth['isAuthenticated'](),controller[_0xd4ce('0xe')]);router[_0xd4ce('0xf')](_0xd4ce('0xb'),auth[_0xd4ce('0x9')](),controller[_0xd4ce('0x10')]);module[_0xd4ce('0x11')]=router;
\ No newline at end of file
index a2c08e6..a491674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4563=['sequelize','name'];(function(_0x2ab350,_0x5600d9){var _0x4a16d7=function(_0x36576b){while(--_0x36576b){_0x2ab350['push'](_0x2ab350['shift']());}};_0x4a16d7(++_0x5600d9);}(_0x4563,0x13c));var _0x3456=function(_0x45d08e,_0x2387ab){_0x45d08e=_0x45d08e-0x0;var _0x1a3ec8=_0x4563[_0x45d08e];return _0x1a3ec8;};'use strict';var Sequelize=require(_0x3456('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x3456('0x1'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0f87=['exports','STRING','name'];(function(_0x3441ae,_0x571245){var _0x563b00=function(_0xb1763){while(--_0xb1763){_0x3441ae['push'](_0x3441ae['shift']());}};_0x563b00(++_0x571245);}(_0x0f87,0x10e));var _0x70f8=function(_0x18c69d,_0x56acbd){_0x18c69d=_0x18c69d-0x0;var _0x4bf25b=_0x0f87[_0x18c69d];return _0x4bf25b;};'use strict';var Sequelize=require('sequelize');module[_0x70f8('0x0')]={'name':{'type':Sequelize[_0x70f8('0x1')],'unique':_0x70f8('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 63c15de..7241bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa246=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','then','get','Pauses','UserProfileResource','sendStatus','error','stack','name','send','map','Pause','rawAttributes','type','key','query','keys','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','find','catch','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','request-promise','mustache','path','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','ioredis'];(function(_0x3fdc3d,_0x48e855){var _0x1250ee=function(_0x585702){while(--_0x585702){_0x3fdc3d['push'](_0x3fdc3d['shift']());}};_0x1250ee(++_0x48e855);}(_0xa246,0x91));var _0x6a24=function(_0x550036,_0x329f68){_0x550036=_0x550036-0x0;var _0x927217=_0xa246[_0x550036];return _0x927217;};'use strict';var emlformat=require(_0x6a24('0x0'));var rimraf=require(_0x6a24('0x1'));var zipdir=require(_0x6a24('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a24('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6a24('0x4'));var util=require('util');var path=require(_0x6a24('0x5'));var sox=require('sox');var csv=require(_0x6a24('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6a24('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6a24('0x8'));var jsforce=require(_0x6a24('0x9'));var deskjs=require(_0x6a24('0xa'));var toCsv=require('to-csv');var querystring=require(_0x6a24('0xb'));var Papa=require('papaparse');var Redis=require(_0x6a24('0xc'));var authService=require(_0x6a24('0xd'));var qs=require(_0x6a24('0xe'));var as=require(_0x6a24('0xf'));var hardwareService=require(_0x6a24('0x10'));var logger=require(_0x6a24('0x11'))(_0x6a24('0x12'));var utils=require(_0x6a24('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6a24('0x14'))['db'];function respondWithStatusCode(_0x592470,_0x31dd06){_0x31dd06=_0x31dd06||0xcc;return function(_0x3d1e21){if(_0x3d1e21){return _0x592470['sendStatus'](_0x31dd06);}return _0x592470[_0x6a24('0x15')](_0x31dd06)[_0x6a24('0x16')]();};}function respondWithResult(_0xb036c3,_0x51d808){_0x51d808=_0x51d808||0xc8;return function(_0x45ee57){if(_0x45ee57){return _0xb036c3[_0x6a24('0x15')](_0x51d808)[_0x6a24('0x17')](_0x45ee57);}};}function respondWithFilteredResult(_0x2bb9ce,_0x4d1c95){return function(_0x18e6d0){if(_0x18e6d0){var _0xa711d0=typeof _0x4d1c95[_0x6a24('0x18')]===_0x6a24('0x19')&&typeof _0x4d1c95[_0x6a24('0x1a')]===_0x6a24('0x19');var _0x109a8b=_0x18e6d0[_0x6a24('0x1b')];var _0x40c2ec=_0xa711d0?0x0:_0x4d1c95[_0x6a24('0x18')];var _0x42281f=_0xa711d0?_0x18e6d0[_0x6a24('0x1b')]:_0x4d1c95[_0x6a24('0x18')]+_0x4d1c95[_0x6a24('0x1a')];var _0x25ed28;if(_0x42281f>=_0x109a8b){_0x42281f=_0x109a8b;_0x25ed28=0xc8;}else{_0x25ed28=0xce;}_0x2bb9ce[_0x6a24('0x15')](_0x25ed28);return _0x2bb9ce[_0x6a24('0x1c')]('Content-Range',_0x40c2ec+'-'+_0x42281f+'/'+_0x109a8b)[_0x6a24('0x17')](_0x18e6d0);}return null;};}function patchUpdates(_0x3f7193){return function(_0x656bd5){try{jsonpatch[_0x6a24('0x1d')](_0x656bd5,_0x3f7193,!![]);}catch(_0x133e28){return BPromise['reject'](_0x133e28);}return _0x656bd5[_0x6a24('0x1e')]();};}function saveUpdates(_0x29379a,_0x8bee2f){return function(_0x5bc9b8){if(_0x5bc9b8){return _0x5bc9b8[_0x6a24('0x1f')](_0x29379a)['then'](function(_0x553dec){return _0x553dec;});}return null;};}function removeEntity(_0x9772a8,_0x4b1965){return function(_0x30c079){if(_0x30c079){return _0x30c079[_0x6a24('0x20')]()[_0x6a24('0x21')](function(){var _0x57c21a=_0x30c079[_0x6a24('0x22')]({'plain':!![]});var _0x48bbd8=_0x6a24('0x23');return db[_0x6a24('0x24')][_0x6a24('0x20')]({'where':{'type':_0x48bbd8,'resourceId':_0x57c21a['id']}})[_0x6a24('0x21')](function(){return _0x30c079;});})['then'](function(){_0x9772a8['status'](0xcc)[_0x6a24('0x16')]();});}};}function handleEntityNotFound(_0x28acfa,_0x42a53b){return function(_0x525563){if(!_0x525563){_0x28acfa[_0x6a24('0x25')](0x194);}return _0x525563;};}function handleError(_0x17ae22,_0x6bcd2e){_0x6bcd2e=_0x6bcd2e||0x1f4;return function(_0x47c2e5){logger[_0x6a24('0x26')](_0x47c2e5[_0x6a24('0x27')]);if(_0x47c2e5[_0x6a24('0x28')]){delete _0x47c2e5[_0x6a24('0x28')];}_0x17ae22[_0x6a24('0x15')](_0x6bcd2e)[_0x6a24('0x29')](_0x47c2e5);};}exports['index']=function(_0x122dad,_0x4b86ef){var _0x17caf3={},_0x285de2={},_0x4c5019={'count':0x0,'rows':[]};var _0x2ad617=_[_0x6a24('0x2a')](db[_0x6a24('0x2b')][_0x6a24('0x2c')],function(_0x222bf8){return{'name':_0x222bf8['fieldName'],'type':_0x222bf8[_0x6a24('0x2d')][_0x6a24('0x2e')]};});_0x285de2['model']=_[_0x6a24('0x2a')](_0x2ad617,_0x6a24('0x28'));_0x285de2[_0x6a24('0x2f')]=_[_0x6a24('0x30')](_0x122dad[_0x6a24('0x2f')]);_0x285de2[_0x6a24('0x31')]=_[_0x6a24('0x32')](_0x285de2['model'],_0x285de2[_0x6a24('0x2f')]);_0x17caf3[_0x6a24('0x33')]=_['intersection'](_0x285de2[_0x6a24('0x34')],qs['fields'](_0x122dad['query'][_0x6a24('0x35')]));_0x17caf3[_0x6a24('0x33')]=_0x17caf3[_0x6a24('0x33')][_0x6a24('0x36')]?_0x17caf3['attributes']:_0x285de2[_0x6a24('0x34')];if(!_0x122dad[_0x6a24('0x2f')]['hasOwnProperty'](_0x6a24('0x37'))){_0x17caf3['limit']=qs[_0x6a24('0x1a')](_0x122dad[_0x6a24('0x2f')][_0x6a24('0x1a')]);_0x17caf3[_0x6a24('0x18')]=qs[_0x6a24('0x18')](_0x122dad['query'][_0x6a24('0x18')]);}_0x17caf3[_0x6a24('0x38')]=qs['sort'](_0x122dad['query'][_0x6a24('0x39')]);_0x17caf3[_0x6a24('0x3a')]=qs[_0x6a24('0x31')](_[_0x6a24('0x3b')](_0x122dad[_0x6a24('0x2f')],_0x285de2[_0x6a24('0x31')]),_0x2ad617);if(_0x122dad[_0x6a24('0x2f')]['filter']){_0x17caf3[_0x6a24('0x3a')]=_[_0x6a24('0x3c')](_0x17caf3[_0x6a24('0x3a')],{'$or':_['map'](_0x2ad617,function(_0x402590){if(_0x402590[_0x6a24('0x2d')]!==_0x6a24('0x3d')){var _0xb70128={};_0xb70128[_0x402590[_0x6a24('0x28')]]={'$like':'%'+_0x122dad[_0x6a24('0x2f')][_0x6a24('0x3e')]+'%'};return _0xb70128;}})});}_0x17caf3=_[_0x6a24('0x3c')]({},_0x17caf3,_0x122dad[_0x6a24('0x3f')]);var _0x50c24a={'where':_0x17caf3[_0x6a24('0x3a')]};return db['Pause'][_0x6a24('0x1b')](_0x50c24a)[_0x6a24('0x21')](function(_0x4e555b){_0x4c5019[_0x6a24('0x1b')]=_0x4e555b;if(_0x122dad[_0x6a24('0x2f')][_0x6a24('0x40')]){_0x17caf3[_0x6a24('0x41')]=[{'all':!![]}];}return db[_0x6a24('0x2b')][_0x6a24('0x42')](_0x17caf3);})[_0x6a24('0x21')](function(_0x48fb3d){_0x4c5019['rows']=_0x48fb3d;return _0x4c5019;})[_0x6a24('0x21')](respondWithFilteredResult(_0x4b86ef,_0x17caf3))['catch'](handleError(_0x4b86ef,null));};exports[_0x6a24('0x43')]=function(_0x429b45,_0x49df6e){var _0x144dcc={'raw':!![],'where':{'id':_0x429b45['params']['id']}},_0xaabb6a={};_0xaabb6a['model']=_[_0x6a24('0x30')](db['Pause'][_0x6a24('0x2c')]);_0xaabb6a['query']=_['keys'](_0x429b45[_0x6a24('0x2f')]);_0xaabb6a[_0x6a24('0x31')]=_['intersection'](_0xaabb6a[_0x6a24('0x34')],_0xaabb6a['query']);_0x144dcc[_0x6a24('0x33')]=_[_0x6a24('0x32')](_0xaabb6a[_0x6a24('0x34')],qs['fields'](_0x429b45[_0x6a24('0x2f')][_0x6a24('0x35')]));_0x144dcc['attributes']=_0x144dcc[_0x6a24('0x33')][_0x6a24('0x36')]?_0x144dcc[_0x6a24('0x33')]:_0xaabb6a[_0x6a24('0x34')];if(_0x429b45[_0x6a24('0x2f')][_0x6a24('0x40')]){_0x144dcc['include']=[{'all':!![]}];}_0x144dcc=_[_0x6a24('0x3c')]({},_0x144dcc,_0x429b45[_0x6a24('0x3f')]);return db[_0x6a24('0x2b')][_0x6a24('0x44')](_0x144dcc)[_0x6a24('0x21')](handleEntityNotFound(_0x49df6e,null))[_0x6a24('0x21')](respondWithResult(_0x49df6e,null))[_0x6a24('0x45')](handleError(_0x49df6e,null));};exports['create']=function(_0x4f02ff,_0x2739fe){return db[_0x6a24('0x2b')][_0x6a24('0x46')](_0x4f02ff['body'],{})[_0x6a24('0x21')](function(_0x43895d){var _0x1deaff=_0x4f02ff[_0x6a24('0x47')][_0x6a24('0x22')]({'plain':!![]});if(!_0x1deaff)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1deaff[_0x6a24('0x48')]===_0x6a24('0x47')){var _0x573bb5=_0x43895d['get']({'plain':!![]});var _0x3a3f45=_0x6a24('0x23');return db[_0x6a24('0x49')][_0x6a24('0x44')]({'where':{'name':_0x3a3f45,'userProfileId':_0x1deaff[_0x6a24('0x4a')]},'raw':!![]})[_0x6a24('0x21')](function(_0x4bb135){if(_0x4bb135&&_0x4bb135[_0x6a24('0x4b')]===0x0){return db[_0x6a24('0x24')][_0x6a24('0x46')]({'name':_0x573bb5[_0x6a24('0x28')],'resourceId':_0x573bb5['id'],'type':_0x4bb135[_0x6a24('0x28')],'sectionId':_0x4bb135['id']},{})[_0x6a24('0x21')](function(){return _0x43895d;});}else{return _0x43895d;}})['catch'](function(_0x415be6){logger['error'](_0x6a24('0x4c'),_0x415be6);throw _0x415be6;});}return _0x43895d;})[_0x6a24('0x21')](respondWithResult(_0x2739fe,0xc9))[_0x6a24('0x45')](handleError(_0x2739fe,null));};exports[_0x6a24('0x1f')]=function(_0x31677e,_0x1713e5){if(_0x31677e[_0x6a24('0x4d')]['id']){delete _0x31677e[_0x6a24('0x4d')]['id'];}return db[_0x6a24('0x2b')][_0x6a24('0x44')]({'where':{'id':_0x31677e[_0x6a24('0x4e')]['id']}})[_0x6a24('0x21')](handleEntityNotFound(_0x1713e5,null))[_0x6a24('0x21')](saveUpdates(_0x31677e['body'],null))[_0x6a24('0x21')](respondWithResult(_0x1713e5,null))[_0x6a24('0x45')](handleError(_0x1713e5,null));};exports[_0x6a24('0x20')]=function(_0x21db02,_0x1c47b8){return db['Pause']['find']({'where':{'id':_0x21db02['params']['id']}})['then'](handleEntityNotFound(_0x1c47b8,null))[_0x6a24('0x21')](removeEntity(_0x1c47b8,null))[_0x6a24('0x45')](handleError(_0x1c47b8,null));};
\ No newline at end of file
+var _0x46cb=['model','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','get','Pauses','UserProfileResource','error','stack','name','send','Pause','rawAttributes','fieldName','map','query','keys','intersection'];(function(_0x59e8b8,_0x54dcd6){var _0xc8b46a=function(_0x2f0a27){while(--_0x2f0a27){_0x59e8b8['push'](_0x59e8b8['shift']());}};_0xc8b46a(++_0x54dcd6);}(_0x46cb,0xc5));var _0xb46c=function(_0x26d51f,_0x1de895){_0x26d51f=_0x26d51f-0x0;var _0x48305d=_0x46cb[_0x26d51f];return _0x48305d;};'use strict';var emlformat=require(_0xb46c('0x0'));var rimraf=require(_0xb46c('0x1'));var zipdir=require(_0xb46c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb46c('0x3'));var moment=require(_0xb46c('0x4'));var BPromise=require(_0xb46c('0x5'));var Mustache=require(_0xb46c('0x6'));var util=require(_0xb46c('0x7'));var path=require(_0xb46c('0x8'));var sox=require(_0xb46c('0x9'));var csv=require('to-csv');var ejs=require(_0xb46c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb46c('0xb'));var crypto=require(_0xb46c('0xc'));var jsforce=require(_0xb46c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb46c('0xe'));var querystring=require(_0xb46c('0xf'));var Papa=require('papaparse');var Redis=require(_0xb46c('0x10'));var authService=require(_0xb46c('0x11'));var qs=require(_0xb46c('0x12'));var as=require(_0xb46c('0x13'));var hardwareService=require(_0xb46c('0x14'));var logger=require(_0xb46c('0x15'))(_0xb46c('0x16'));var utils=require(_0xb46c('0x17'));var config=require(_0xb46c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb46c('0x19'))['db'];function respondWithStatusCode(_0x2df259,_0x5cef43){_0x5cef43=_0x5cef43||0xcc;return function(_0x44aea5){if(_0x44aea5){return _0x2df259[_0xb46c('0x1a')](_0x5cef43);}return _0x2df259['status'](_0x5cef43)[_0xb46c('0x1b')]();};}function respondWithResult(_0x100180,_0x2c1af6){_0x2c1af6=_0x2c1af6||0xc8;return function(_0x4187bb){if(_0x4187bb){return _0x100180[_0xb46c('0x1c')](_0x2c1af6)[_0xb46c('0x1d')](_0x4187bb);}};}function respondWithFilteredResult(_0x11d792,_0x178a69){return function(_0x20f2d1){if(_0x20f2d1){var _0x14cc2a=typeof _0x178a69[_0xb46c('0x1e')]===_0xb46c('0x1f')&&typeof _0x178a69[_0xb46c('0x20')]===_0xb46c('0x1f');var _0x28d145=_0x20f2d1[_0xb46c('0x21')];var _0x1649b6=_0x14cc2a?0x0:_0x178a69['offset'];var _0x4cb77f=_0x14cc2a?_0x20f2d1[_0xb46c('0x21')]:_0x178a69[_0xb46c('0x1e')]+_0x178a69['limit'];var _0x1ecb34;if(_0x4cb77f>=_0x28d145){_0x4cb77f=_0x28d145;_0x1ecb34=0xc8;}else{_0x1ecb34=0xce;}_0x11d792[_0xb46c('0x1c')](_0x1ecb34);return _0x11d792[_0xb46c('0x22')](_0xb46c('0x23'),_0x1649b6+'-'+_0x4cb77f+'/'+_0x28d145)[_0xb46c('0x1d')](_0x20f2d1);}return null;};}function patchUpdates(_0x1e076c){return function(_0x490366){try{jsonpatch[_0xb46c('0x24')](_0x490366,_0x1e076c,!![]);}catch(_0x4fa39d){return BPromise[_0xb46c('0x25')](_0x4fa39d);}return _0x490366['save']();};}function saveUpdates(_0x53a5d9,_0x107ef1){return function(_0x1ac734){if(_0x1ac734){return _0x1ac734[_0xb46c('0x26')](_0x53a5d9)['then'](function(_0x147cd2){return _0x147cd2;});}return null;};}function removeEntity(_0x1c0228,_0x4ed1f8){return function(_0x317e5e){if(_0x317e5e){return _0x317e5e[_0xb46c('0x27')]()[_0xb46c('0x28')](function(){var _0x9110f3=_0x317e5e[_0xb46c('0x29')]({'plain':!![]});var _0x355b7f=_0xb46c('0x2a');return db[_0xb46c('0x2b')]['destroy']({'where':{'type':_0x355b7f,'resourceId':_0x9110f3['id']}})[_0xb46c('0x28')](function(){return _0x317e5e;});})[_0xb46c('0x28')](function(){_0x1c0228[_0xb46c('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x531c32,_0x2f6f2d){return function(_0x514194){if(!_0x514194){_0x531c32['sendStatus'](0x194);}return _0x514194;};}function handleError(_0x5a8224,_0x4e885d){_0x4e885d=_0x4e885d||0x1f4;return function(_0x56f7a2){logger[_0xb46c('0x2c')](_0x56f7a2[_0xb46c('0x2d')]);if(_0x56f7a2[_0xb46c('0x2e')]){delete _0x56f7a2['name'];}_0x5a8224[_0xb46c('0x1c')](_0x4e885d)[_0xb46c('0x2f')](_0x56f7a2);};}exports['index']=function(_0x35dabb,_0x17ddf0){var _0x32a058={},_0x2fd9b3={},_0x56e8a1={'count':0x0,'rows':[]};var _0x1885f5=_['map'](db[_0xb46c('0x30')][_0xb46c('0x31')],function(_0x423629){return{'name':_0x423629[_0xb46c('0x32')],'type':_0x423629['type']['key']};});_0x2fd9b3['model']=_[_0xb46c('0x33')](_0x1885f5,'name');_0x2fd9b3[_0xb46c('0x34')]=_[_0xb46c('0x35')](_0x35dabb[_0xb46c('0x34')]);_0x2fd9b3['filters']=_[_0xb46c('0x36')](_0x2fd9b3[_0xb46c('0x37')],_0x2fd9b3[_0xb46c('0x34')]);_0x32a058[_0xb46c('0x38')]=_['intersection'](_0x2fd9b3[_0xb46c('0x37')],qs[_0xb46c('0x39')](_0x35dabb['query']['fields']));_0x32a058['attributes']=_0x32a058[_0xb46c('0x38')][_0xb46c('0x3a')]?_0x32a058['attributes']:_0x2fd9b3[_0xb46c('0x37')];if(!_0x35dabb['query'][_0xb46c('0x3b')](_0xb46c('0x3c'))){_0x32a058['limit']=qs['limit'](_0x35dabb[_0xb46c('0x34')][_0xb46c('0x20')]);_0x32a058[_0xb46c('0x1e')]=qs[_0xb46c('0x1e')](_0x35dabb[_0xb46c('0x34')][_0xb46c('0x1e')]);}_0x32a058['order']=qs[_0xb46c('0x3d')](_0x35dabb['query'][_0xb46c('0x3d')]);_0x32a058['where']=qs['filters'](_['pick'](_0x35dabb[_0xb46c('0x34')],_0x2fd9b3[_0xb46c('0x3e')]),_0x1885f5);if(_0x35dabb[_0xb46c('0x34')][_0xb46c('0x3f')]){_0x32a058[_0xb46c('0x40')]=_[_0xb46c('0x41')](_0x32a058[_0xb46c('0x40')],{'$or':_[_0xb46c('0x33')](_0x1885f5,function(_0x274985){if(_0x274985[_0xb46c('0x42')]!=='VIRTUAL'){var _0x5c0fa2={};_0x5c0fa2[_0x274985[_0xb46c('0x2e')]]={'$like':'%'+_0x35dabb[_0xb46c('0x34')][_0xb46c('0x3f')]+'%'};return _0x5c0fa2;}})});}_0x32a058=_[_0xb46c('0x41')]({},_0x32a058,_0x35dabb[_0xb46c('0x43')]);var _0x38664d={'where':_0x32a058[_0xb46c('0x40')]};return db[_0xb46c('0x30')][_0xb46c('0x21')](_0x38664d)[_0xb46c('0x28')](function(_0x1e5eeb){_0x56e8a1[_0xb46c('0x21')]=_0x1e5eeb;if(_0x35dabb['query'][_0xb46c('0x44')]){_0x32a058[_0xb46c('0x45')]=[{'all':!![]}];}return db['Pause'][_0xb46c('0x46')](_0x32a058);})[_0xb46c('0x28')](function(_0x22fba1){_0x56e8a1[_0xb46c('0x47')]=_0x22fba1;return _0x56e8a1;})[_0xb46c('0x28')](respondWithFilteredResult(_0x17ddf0,_0x32a058))[_0xb46c('0x48')](handleError(_0x17ddf0,null));};exports[_0xb46c('0x49')]=function(_0x1b7d15,_0x5ec29d){var _0x550b69={'raw':!![],'where':{'id':_0x1b7d15[_0xb46c('0x4a')]['id']}},_0x3e2d11={};_0x3e2d11[_0xb46c('0x37')]=_[_0xb46c('0x35')](db['Pause'][_0xb46c('0x31')]);_0x3e2d11[_0xb46c('0x34')]=_[_0xb46c('0x35')](_0x1b7d15[_0xb46c('0x34')]);_0x3e2d11[_0xb46c('0x3e')]=_[_0xb46c('0x36')](_0x3e2d11['model'],_0x3e2d11[_0xb46c('0x34')]);_0x550b69[_0xb46c('0x38')]=_[_0xb46c('0x36')](_0x3e2d11[_0xb46c('0x37')],qs[_0xb46c('0x39')](_0x1b7d15[_0xb46c('0x34')][_0xb46c('0x39')]));_0x550b69['attributes']=_0x550b69[_0xb46c('0x38')][_0xb46c('0x3a')]?_0x550b69[_0xb46c('0x38')]:_0x3e2d11[_0xb46c('0x37')];if(_0x1b7d15['query']['includeAll']){_0x550b69[_0xb46c('0x45')]=[{'all':!![]}];}_0x550b69=_[_0xb46c('0x41')]({},_0x550b69,_0x1b7d15[_0xb46c('0x43')]);return db['Pause'][_0xb46c('0x4b')](_0x550b69)[_0xb46c('0x28')](handleEntityNotFound(_0x5ec29d,null))['then'](respondWithResult(_0x5ec29d,null))[_0xb46c('0x48')](handleError(_0x5ec29d,null));};exports[_0xb46c('0x4c')]=function(_0x2f1bb2,_0x4d9fbb){return db[_0xb46c('0x30')][_0xb46c('0x4c')](_0x2f1bb2[_0xb46c('0x4d')],{})[_0xb46c('0x28')](function(_0x572099){var _0xf403a1=_0x2f1bb2[_0xb46c('0x4e')][_0xb46c('0x29')]({'plain':!![]});if(!_0xf403a1)throw new Error(_0xb46c('0x4f'));if(_0xf403a1['role']===_0xb46c('0x4e')){var _0x5e6ccf=_0x572099[_0xb46c('0x29')]({'plain':!![]});var _0x29b211=_0xb46c('0x2a');return db[_0xb46c('0x50')][_0xb46c('0x4b')]({'where':{'name':_0x29b211,'userProfileId':_0xf403a1[_0xb46c('0x51')]},'raw':!![]})['then'](function(_0x5ae8f8){if(_0x5ae8f8&&_0x5ae8f8[_0xb46c('0x52')]===0x0){return db[_0xb46c('0x2b')]['create']({'name':_0x5e6ccf[_0xb46c('0x2e')],'resourceId':_0x5e6ccf['id'],'type':_0x5ae8f8[_0xb46c('0x2e')],'sectionId':_0x5ae8f8['id']},{})['then'](function(){return _0x572099;});}else{return _0x572099;}})[_0xb46c('0x48')](function(_0x2a19e6){logger[_0xb46c('0x2c')](_0xb46c('0x53'),_0x2a19e6);throw _0x2a19e6;});}return _0x572099;})[_0xb46c('0x28')](respondWithResult(_0x4d9fbb,0xc9))['catch'](handleError(_0x4d9fbb,null));};exports[_0xb46c('0x26')]=function(_0x211bbf,_0x3976a7){if(_0x211bbf['body']['id']){delete _0x211bbf[_0xb46c('0x4d')]['id'];}return db[_0xb46c('0x30')][_0xb46c('0x4b')]({'where':{'id':_0x211bbf[_0xb46c('0x4a')]['id']}})[_0xb46c('0x28')](handleEntityNotFound(_0x3976a7,null))[_0xb46c('0x28')](saveUpdates(_0x211bbf[_0xb46c('0x4d')],null))[_0xb46c('0x28')](respondWithResult(_0x3976a7,null))[_0xb46c('0x48')](handleError(_0x3976a7,null));};exports['destroy']=function(_0xf5f89a,_0x5bc3a4){return db[_0xb46c('0x30')]['find']({'where':{'id':_0xf5f89a[_0xb46c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5bc3a4,null))['then'](removeEntity(_0x5bc3a4,null))[_0xb46c('0x48')](handleError(_0x5bc3a4,null));};
\ No newline at end of file
index 574825d..cb0e669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./pause.attributes'];(function(_0x5c1eba,_0x2a356c){var _0x46e2dc=function(_0x1b1d1b){while(--_0x1b1d1b){_0x5c1eba['push'](_0x5c1eba['shift']());}};_0x46e2dc(++_0x2a356c);}(_0x8ef6,0xf2));var _0x68ef=function(_0x42fdef,_0x1fce07){_0x42fdef=_0x42fdef-0x0;var _0x2de5e3=_0x8ef6[_0x42fdef];return _0x2de5e3;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var logger=require(_0x68ef('0x2'))(_0x68ef('0x3'));var moment=require(_0x68ef('0x4'));var BPromise=require(_0x68ef('0x5'));var rp=require(_0x68ef('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var attributes=require(_0x68ef('0x9'));module[_0x68ef('0xa')]=function(_0x4d26e3,_0x4f77f3){return _0x4d26e3[_0x68ef('0xb')](_0x68ef('0xc'),attributes,{'tableName':_0x68ef('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['define','Pause','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./pause.attributes','exports'];(function(_0x3cddaf,_0x38319d){var _0x2c0b77=function(_0x5e74a7){while(--_0x5e74a7){_0x3cddaf['push'](_0x3cddaf['shift']());}};_0x2c0b77(++_0x38319d);}(_0x814b,0x1a2));var _0xb814=function(_0x367e5b,_0x5721e4){_0x367e5b=_0x367e5b-0x0;var _0x4b909e=_0x814b[_0x367e5b];return _0x4b909e;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3106f65..6d2930d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0xcc5685,_0x411c72){var _0x267842=function(_0x2a4b77){while(--_0x2a4b77){_0xcc5685['push'](_0xcc5685['shift']());}};_0x267842(++_0x411c72);}(_0xb10b,0x12a));var _0xbb10=function(_0x5c264f,_0x571dfa){_0x5c264f=_0x5c264f-0x0;var _0x57455c=_0xb10b[_0x5c264f];return _0x57455c;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x54ade0,_0x53d7c6){var _0xb2fd4=function(_0x487ca1){while(--_0x487ca1){_0x54ade0['push'](_0x54ade0['shift']());}};_0xb2fd4(++_0x53d7c6);}(_0x7a54,0x106));var _0x47a5=function(_0x663917,_0x4185b2){_0x663917=_0x663917-0x0;var _0x5de346=_0x7a54[_0x663917];return _0x5de346;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 9a685f3..196cc4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['upload','post','put','delete','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller','get','/webhook','webhookGet','/:id','isAuthenticated','/:id/download','download','diskStorage','originalname','replace','%s-%s%s','basename','extname','file'];(function(_0x47b493,_0x429ada){var _0xb7f5be=function(_0x20eb88){while(--_0x20eb88){_0x47b493['push'](_0x47b493['shift']());}};_0xb7f5be(++_0x429ada);}(_0x00bb,0x1d8));var _0xb00b=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x00bb[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var path=require(_0xb00b('0x2'));var timeout=require('connect-timeout');var express=require(_0xb00b('0x3'));var router=express['Router']();var fs_extra=require(_0xb00b('0x4'));var auth=require(_0xb00b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb00b('0x6'));var controller=require(_0xb00b('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb00b('0x8')](_0xb00b('0x9'),controller[_0xb00b('0xa')]);router[_0xb00b('0x8')](_0xb00b('0xb'),auth[_0xb00b('0xc')](),controller['show']);router['get'](_0xb00b('0xd'),auth[_0xb00b('0xc')](),controller[_0xb00b('0xe')]);var upload=multer({'storage':multer[_0xb00b('0xf')]({'destination':function(_0x28d3cc,_0x48e125,_0x3182db){_0x3182db(null,path['join'](config['root'],'server/files/plugins'));},'filename':function(_0x4ff792,_0x2d8ddf,_0x1be8aa){_0x2d8ddf[_0xb00b('0x10')]=_0x2d8ddf[_0xb00b('0x10')][_0xb00b('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1be8aa(null,util['format'](_0xb00b('0x12'),path[_0xb00b('0x13')](_0x2d8ddf['originalname'],path[_0xb00b('0x14')](_0x2d8ddf[_0xb00b('0x10')])),Date['now'](),path['extname'](_0x2d8ddf[_0xb00b('0x10')])));}})});router['post']('/',upload['single'](_0xb00b('0x15')),controller[_0xb00b('0x16')]);router[_0xb00b('0x17')](_0xb00b('0x9'),controller['webhookPost']);router[_0xb00b('0x18')]('/:id',auth[_0xb00b('0xc')](),controller['update']);router[_0xb00b('0x19')]('/:id',auth[_0xb00b('0xc')](),controller[_0xb00b('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xed1f=['basename','originalname','now','extname','single','upload','post','webhookPost','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','show','/:id/download','diskStorage','server/files/plugins','replace','format'];(function(_0x341f60,_0x427e41){var _0x14615a=function(_0x2dae52){while(--_0x2dae52){_0x341f60['push'](_0x341f60['shift']());}};_0x14615a(++_0x427e41);}(_0xed1f,0x6a));var _0xfed1=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0xed1f[_0x24f31b];return _0x488401;};'use strict';var multer=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var path=require(_0xfed1('0x2'));var timeout=require(_0xfed1('0x3'));var express=require(_0xfed1('0x4'));var router=express[_0xfed1('0x5')]();var fs_extra=require(_0xfed1('0x6'));var auth=require(_0xfed1('0x7'));var interaction=require(_0xfed1('0x8'));var config=require(_0xfed1('0x9'));var controller=require(_0xfed1('0xa'));router[_0xfed1('0xb')]('/',auth[_0xfed1('0xc')](),controller[_0xfed1('0xd')]);router[_0xfed1('0xb')](_0xfed1('0xe'),controller[_0xfed1('0xf')]);router[_0xfed1('0xb')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x10')]);router['get'](_0xfed1('0x11'),auth[_0xfed1('0xc')](),controller['download']);var upload=multer({'storage':multer[_0xfed1('0x12')]({'destination':function(_0x48c338,_0x1c3f40,_0x234f4e){_0x234f4e(null,path['join'](config['root'],_0xfed1('0x13')));},'filename':function(_0xe84ba6,_0x569a6e,_0x17f4fe){_0x569a6e['originalname']=_0x569a6e['originalname'][_0xfed1('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x17f4fe(null,util[_0xfed1('0x15')]('%s-%s%s',path[_0xfed1('0x16')](_0x569a6e['originalname'],path['extname'](_0x569a6e[_0xfed1('0x17')])),Date[_0xfed1('0x18')](),path[_0xfed1('0x19')](_0x569a6e[_0xfed1('0x17')])));}})});router['post']('/',upload[_0xfed1('0x1a')]('file'),controller[_0xfed1('0x1b')]);router[_0xfed1('0x1c')]('/webhook',controller[_0xfed1('0x1d')]);router[_0xfed1('0x1e')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xfed1('0x1f')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x1f')]);module['exports']=router;
\ No newline at end of file
index de43d94..02d8dba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xada3=['adminOnly','agentOnly','never','always','sequelize','STRING','ENUM','TEXT','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'];(function(_0x6b292e,_0xd14796){var _0x3929b8=function(_0x5284e0){while(--_0x5284e0){_0x6b292e['push'](_0x6b292e['shift']());}};_0x3929b8(++_0xd14796);}(_0xada3,0xd3));var _0x3ada=function(_0x4e2fd0,_0x28e4e1){_0x4e2fd0=_0x4e2fd0-0x0;var _0x1c5b42=_0xada3[_0x4e2fd0];return _0x1c5b42;};'use strict';var Sequelize=require(_0x3ada('0x0'));module['exports']={'name':{'type':Sequelize[_0x3ada('0x1')]},'type':{'type':Sequelize[_0x3ada('0x2')]('html','script')},'description':{'type':Sequelize[_0x3ada('0x3')]},'version':{'type':Sequelize[_0x3ada('0x3')]},'path':{'type':Sequelize[_0x3ada('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x3ada('0x4')},'sidebar':{'type':Sequelize[_0x3ada('0x2')](_0x3ada('0x5'),_0x3ada('0x6'),'always',_0x3ada('0x7')),'defaultValue':_0x3ada('0x8'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x3ada('0x1')]},'adminUrl':{'type':Sequelize[_0x3ada('0x1')]},'agentUrl':{'type':Sequelize[_0x3ada('0x1')]},'scriptName':{'type':Sequelize[_0x3ada('0x1')]},'scriptPath':{'type':Sequelize[_0x3ada('0x1')]}};
\ No newline at end of file
+var _0x6d18=['script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html'];(function(_0x1db835,_0x212240){var _0x178142=function(_0x49d1c8){while(--_0x49d1c8){_0x1db835['push'](_0x1db835['shift']());}};_0x178142(++_0x212240);}(_0x6d18,0x175));var _0x86d1=function(_0x5b9a44,_0x8ad9d3){_0x5b9a44=_0x5b9a44-0x0;var _0x447bad=_0x6d18[_0x5b9a44];return _0x447bad;};'use strict';var Sequelize=require(_0x86d1('0x0'));module[_0x86d1('0x1')]={'name':{'type':Sequelize[_0x86d1('0x2')]},'type':{'type':Sequelize[_0x86d1('0x3')](_0x86d1('0x4'),_0x86d1('0x5'))},'description':{'type':Sequelize[_0x86d1('0x6')]},'version':{'type':Sequelize[_0x86d1('0x6')]},'path':{'type':Sequelize['STRING'],'comment':_0x86d1('0x7')},'active':{'type':Sequelize[_0x86d1('0x8')],'defaultValue':0x0,'comment':_0x86d1('0x9')},'sidebar':{'type':Sequelize[_0x86d1('0x3')](_0x86d1('0xa'),_0x86d1('0xb'),_0x86d1('0xc'),'never'),'defaultValue':'always','comment':_0x86d1('0xd')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0x86d1('0x2')]},'agentUrl':{'type':Sequelize[_0x86d1('0x2')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0ec6e8c..107ce9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9db5=['localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','Plugins','error','stack','name','index','map','Plugin','rawAttributes','type','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','catch','show','params','intersection','length','download','find','path','server/files/plugins','%s.zip','createWriteStream','zip','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','join','root','dirname','basename','attachments/**/*','finalize','close','existsSync','Error','Error\x20while\x20downloading\x20the\x20plugin','Download\x20completed','info','file','extname','Plugin\x20upload\x20destination:\x20%s','readdirSync','Invalid\x20plugin\x20structure','lstatSync','manifest.json','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','format','%s%s','headers','content-length','statusCode','send','content-type','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis'];(function(_0x5b5c66,_0x232916){var _0x19c519=function(_0x2f64bd){while(--_0x2f64bd){_0x5b5c66['push'](_0x5b5c66['shift']());}};_0x19c519(++_0x232916);}(_0x9db5,0x12c));var _0x59db=function(_0x242b51,_0x586c72){_0x242b51=_0x242b51-0x0;var _0xc63c10=_0x9db5[_0x242b51];return _0xc63c10;};'use strict';var emlformat=require(_0x59db('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x59db('0x1'));var jsonpatch=require(_0x59db('0x2'));var rp=require(_0x59db('0x3'));var moment=require(_0x59db('0x4'));var BPromise=require(_0x59db('0x5'));var Mustache=require(_0x59db('0x6'));var util=require('util');var path=require('path');var sox=require(_0x59db('0x7'));var csv=require(_0x59db('0x8'));var ejs=require(_0x59db('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x59db('0xa'));var squel=require('squel');var crypto=require(_0x59db('0xb'));var jsforce=require(_0x59db('0xc'));var deskjs=require(_0x59db('0xd'));var toCsv=require(_0x59db('0x8'));var querystring=require(_0x59db('0xe'));var Papa=require(_0x59db('0xf'));var extract=require(_0x59db('0x10'));var rimraf=require(_0x59db('0x11'));var archiver=require(_0x59db('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x59db('0x13'));var as=require(_0x59db('0x14'));var hardwareService=require(_0x59db('0x15'));var logger=require('../../config/logger')(_0x59db('0x16'));var utils=require('../../config/utils');var config=require(_0x59db('0x17'));var licenseUtil=require(_0x59db('0x18'));var db=require(_0x59db('0x19'))['db'];config['redis']=_[_0x59db('0x1a')](config[_0x59db('0x1b')],{'host':_0x59db('0x1c'),'port':0x18eb});var socket=require(_0x59db('0x1d'))(new Redis(config['redis']));require(_0x59db('0x1e'))[_0x59db('0x1f')](socket);function respondWithStatusCode(_0x4e03aa,_0x3b6100){_0x3b6100=_0x3b6100||0xcc;return function(_0x340f0d){if(_0x340f0d){return _0x4e03aa[_0x59db('0x20')](_0x3b6100);}return _0x4e03aa[_0x59db('0x21')](_0x3b6100)[_0x59db('0x22')]();};}function respondWithResult(_0x3f595b,_0x51d203){_0x51d203=_0x51d203||0xc8;return function(_0x14df1d){if(_0x14df1d){return _0x3f595b[_0x59db('0x21')](_0x51d203)[_0x59db('0x23')](_0x14df1d);}};}function respondWithFilteredResult(_0x3fe09d,_0x3f40c6){return function(_0x5adc79){if(_0x5adc79){var _0x44f4ef=typeof _0x3f40c6[_0x59db('0x24')]===_0x59db('0x25')&&typeof _0x3f40c6[_0x59db('0x26')]===_0x59db('0x25');var _0x453c44=_0x5adc79[_0x59db('0x27')];var _0x40e4cc=_0x44f4ef?0x0:_0x3f40c6['offset'];var _0x4989a2=_0x44f4ef?_0x5adc79['count']:_0x3f40c6[_0x59db('0x24')]+_0x3f40c6[_0x59db('0x26')];var _0x5690fb;if(_0x4989a2>=_0x453c44){_0x4989a2=_0x453c44;_0x5690fb=0xc8;}else{_0x5690fb=0xce;}_0x3fe09d[_0x59db('0x21')](_0x5690fb);return _0x3fe09d[_0x59db('0x28')](_0x59db('0x29'),_0x40e4cc+'-'+_0x4989a2+'/'+_0x453c44)[_0x59db('0x23')](_0x5adc79);}return null;};}function patchUpdates(_0x9fd46b){return function(_0x4ae20d){try{jsonpatch[_0x59db('0x2a')](_0x4ae20d,_0x9fd46b,!![]);}catch(_0x4abce8){return BPromise['reject'](_0x4abce8);}return _0x4ae20d['save']();};}function saveUpdates(_0x48cdf0,_0x5c3688){return function(_0x136722){if(_0x136722){return _0x136722[_0x59db('0x2b')](_0x48cdf0)[_0x59db('0x2c')](function(_0x5a4b8c){return _0x5a4b8c;});}return null;};}function removeEntity(_0x13e8c3,_0x48c803){return function(_0x1c85d5){if(_0x1c85d5){return _0x1c85d5[_0x59db('0x2d')]()[_0x59db('0x2c')](function(){var _0x3b8a71=_0x1c85d5[_0x59db('0x2e')]({'plain':!![]});var _0x270f86=_0x59db('0x2f');return db['UserProfileResource'][_0x59db('0x2d')]({'where':{'type':_0x270f86,'resourceId':_0x3b8a71['id']}})[_0x59db('0x2c')](function(){return _0x1c85d5;});})['then'](function(){_0x13e8c3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f1d55,_0x6914c0){return function(_0x558c3f){if(!_0x558c3f){_0x3f1d55[_0x59db('0x20')](0x194);}return _0x558c3f;};}function handleError(_0x49b7d9,_0x160db2){_0x160db2=_0x160db2||0x1f4;return function(_0x29e418){logger[_0x59db('0x30')](_0x29e418[_0x59db('0x31')]);if(_0x29e418[_0x59db('0x32')]){delete _0x29e418[_0x59db('0x32')];}_0x49b7d9[_0x59db('0x21')](_0x160db2)['send'](_0x29e418);};}exports[_0x59db('0x33')]=function(_0x5a93c2,_0x162e4a){var _0x18689d={},_0x466945={},_0x3cd9f0={'count':0x0,'rows':[]};var _0x221e73=_[_0x59db('0x34')](db[_0x59db('0x35')][_0x59db('0x36')],function(_0x2a5b71){return{'name':_0x2a5b71['fieldName'],'type':_0x2a5b71[_0x59db('0x37')]['key']};});_0x466945[_0x59db('0x38')]=_[_0x59db('0x34')](_0x221e73,_0x59db('0x32'));_0x466945[_0x59db('0x39')]=_[_0x59db('0x3a')](_0x5a93c2['query']);_0x466945[_0x59db('0x3b')]=_['intersection'](_0x466945[_0x59db('0x38')],_0x466945[_0x59db('0x39')]);_0x18689d[_0x59db('0x3c')]=_['intersection'](_0x466945[_0x59db('0x38')],qs[_0x59db('0x3d')](_0x5a93c2['query'][_0x59db('0x3d')]));_0x18689d['attributes']=_0x18689d[_0x59db('0x3c')]['length']?_0x18689d[_0x59db('0x3c')]:_0x466945[_0x59db('0x38')];if(!_0x5a93c2[_0x59db('0x39')][_0x59db('0x3e')](_0x59db('0x3f'))){_0x18689d['limit']=qs[_0x59db('0x26')](_0x5a93c2[_0x59db('0x39')][_0x59db('0x26')]);_0x18689d[_0x59db('0x24')]=qs['offset'](_0x5a93c2[_0x59db('0x39')]['offset']);}_0x18689d[_0x59db('0x40')]=qs[_0x59db('0x41')](_0x5a93c2[_0x59db('0x39')][_0x59db('0x41')]);_0x18689d['where']=qs[_0x59db('0x3b')](_[_0x59db('0x42')](_0x5a93c2['query'],_0x466945[_0x59db('0x3b')]),_0x221e73);if(_0x5a93c2[_0x59db('0x39')][_0x59db('0x43')]){_0x18689d[_0x59db('0x44')]=_[_0x59db('0x45')](_0x18689d[_0x59db('0x44')],{'$or':_['map'](_0x221e73,function(_0x386b32){if(_0x386b32[_0x59db('0x37')]!==_0x59db('0x46')){var _0x1fa4ce={};_0x1fa4ce[_0x386b32[_0x59db('0x32')]]={'$like':'%'+_0x5a93c2[_0x59db('0x39')]['filter']+'%'};return _0x1fa4ce;}})});}_0x18689d=_[_0x59db('0x45')]({},_0x18689d,_0x5a93c2[_0x59db('0x47')]);var _0x3f8527={'where':_0x18689d[_0x59db('0x44')]};return db['Plugin'][_0x59db('0x27')](_0x3f8527)['then'](function(_0x49f839){_0x3cd9f0['count']=_0x49f839;if(_0x5a93c2[_0x59db('0x39')][_0x59db('0x48')]){_0x18689d[_0x59db('0x49')]=[{'all':!![]}];}return db['Plugin']['findAll'](_0x18689d);})[_0x59db('0x2c')](function(_0x3e5f02){_0x3cd9f0['rows']=_0x3e5f02;return _0x3cd9f0;})[_0x59db('0x2c')](respondWithFilteredResult(_0x162e4a,_0x18689d))[_0x59db('0x4a')](handleError(_0x162e4a,null));};exports[_0x59db('0x4b')]=function(_0x13258e,_0x56b45f){var _0x220c29={'raw':!![],'where':{'id':_0x13258e[_0x59db('0x4c')]['id']}},_0x24cd26={};_0x24cd26[_0x59db('0x38')]=_[_0x59db('0x3a')](db[_0x59db('0x35')][_0x59db('0x36')]);_0x24cd26[_0x59db('0x39')]=_['keys'](_0x13258e['query']);_0x24cd26[_0x59db('0x3b')]=_['intersection'](_0x24cd26[_0x59db('0x38')],_0x24cd26[_0x59db('0x39')]);_0x220c29[_0x59db('0x3c')]=_[_0x59db('0x4d')](_0x24cd26[_0x59db('0x38')],qs[_0x59db('0x3d')](_0x13258e[_0x59db('0x39')][_0x59db('0x3d')]));_0x220c29[_0x59db('0x3c')]=_0x220c29[_0x59db('0x3c')][_0x59db('0x4e')]?_0x220c29[_0x59db('0x3c')]:_0x24cd26[_0x59db('0x38')];if(_0x13258e[_0x59db('0x39')][_0x59db('0x48')]){_0x220c29['include']=[{'all':!![]}];}_0x220c29=_[_0x59db('0x45')]({},_0x220c29,_0x13258e[_0x59db('0x47')]);return db[_0x59db('0x35')]['find'](_0x220c29)[_0x59db('0x2c')](handleEntityNotFound(_0x56b45f,null))[_0x59db('0x2c')](respondWithResult(_0x56b45f,null))[_0x59db('0x4a')](handleError(_0x56b45f,null));};exports[_0x59db('0x4f')]=function(_0x194b54,_0x1d6d18,_0x90a0d7){return db[_0x59db('0x35')][_0x59db('0x50')]({'where':{'id':_0x194b54[_0x59db('0x4c')]['id']},'attributes':[_0x59db('0x32'),_0x59db('0x51')],'raw':!![]})[_0x59db('0x2c')](handleEntityNotFound(_0x1d6d18,null))[_0x59db('0x2c')](function(_0x1d0e66){if(_0x1d0e66){var _0x488e43=path['join'](config['root'],_0x59db('0x52'),util['format'](_0x59db('0x53'),path['basename'](_0x1d0e66[_0x59db('0x51')])));var _0x12ab89=fs[_0x59db('0x54')](_0x488e43);var _0x5185f0=archiver(_0x59db('0x55'),{'zlib':{'level':0x9}});_0x5185f0['on']('warning',function(_0x551ab1){if(_0x551ab1[_0x59db('0x56')]===_0x59db('0x57')){logger[_0x59db('0x30')](_0x551ab1);}else{throw new db[(_0x59db('0x58'))]['Error'](_0x59db('0x59'));}});_0x5185f0['on']('error',function(_0x598f56){throw new db['Sequelize']['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x5185f0[_0x59db('0x5a')](_0x12ab89);_0x5185f0[_0x59db('0x5b')](_0x59db('0x5c'),{'cwd':path[_0x59db('0x5d')](config[_0x59db('0x5e')],_0x59db('0x52'),path[_0x59db('0x5f')](_0x1d0e66[_0x59db('0x51')])),'ignore':[path[_0x59db('0x5d')](path[_0x59db('0x60')](_0x1d0e66['path']),'node_modules/**/*'),path[_0x59db('0x5d')](path[_0x59db('0x60')](_0x1d0e66[_0x59db('0x51')]),_0x59db('0x61'))],'nodir':!![]})[_0x59db('0x62')]();_0x12ab89['on'](_0x59db('0x63'),function(){if(!fs[_0x59db('0x64')](_0x488e43)){throw new db[(_0x59db('0x58'))]['Error']('Plugin\x20not\x20found');}return _0x1d6d18[_0x59db('0x4f')](_0x488e43,util['format'](_0x59db('0x53'),path[_0x59db('0x60')](_0x1d0e66['path'])),function(_0xc0e39b){if(_0xc0e39b){throw new db['Sequelize'][(_0x59db('0x65'))](_0x59db('0x66'));}fs['unlinkSync'](_0x488e43);logger['info'](_0x59db('0x67'));logger[_0x59db('0x68')]('Temporary\x20file\x20removed');});});}return null;})[_0x59db('0x4a')](handleError(_0x1d6d18,null));};exports['upload']=function(_0x338bc4,_0x4682ad,_0x41a1b2){var _0x1857cc=path[_0x59db('0x60')](_0x338bc4[_0x59db('0x69')]['filename'],path[_0x59db('0x6a')](_0x338bc4[_0x59db('0x69')]['filename']));var _0x378a6e=path[_0x59db('0x5d')](config['root'],_0x59db('0x52'),_0x338bc4['file']['filename']);var _0x1e5ec9=path[_0x59db('0x5d')](config[_0x59db('0x5e')],_0x59db('0x52'),_0x1857cc);logger[_0x59db('0x68')]('Plugin\x20upload\x20filepath:\x20%s',_0x378a6e);logger['info'](_0x59db('0x6b'),_0x1e5ec9);try{fs['chmodSync'](_0x378a6e,parseInt('0777',0x8));extract(_0x378a6e,{'dir':_0x1e5ec9},function(_0x3a5b44){if(_0x3a5b44){logger[_0x59db('0x30')](_0x3a5b44);handleError(_0x3a5b44,!![]);};var _0xb7e52c=fs[_0x59db('0x6c')](_0x1e5ec9);if(_0xb7e52c[_0x59db('0x4e')]>0x1){removeReferences(_0x378a6e,_0x1e5ec9);logger[_0x59db('0x30')](_0x59db('0x6d'));return _0x41a1b2(new Error(_0x59db('0x6d')));}var _0x1afc3b=fs[_0x59db('0x6e')](path[_0x59db('0x5d')](_0x1e5ec9,_0xb7e52c[0x0]));if(_0x1afc3b['isFile']()){removeReferences(_0x378a6e,_0x1e5ec9);logger[_0x59db('0x30')]('Invalid\x20plugin\x20structure');return _0x41a1b2(new Error(_0x59db('0x6d')));}if(_0x1afc3b['isDirectory']()){var _0x36152f=fs[_0x59db('0x6c')](path[_0x59db('0x5d')](_0x1e5ec9,_0xb7e52c[0x0]));if(_0x36152f[_0x59db('0x4e')]===0x0){removeReferences(_0x378a6e,_0x1e5ec9);logger[_0x59db('0x30')](_0x59db('0x6d'));return _0x41a1b2(new Error('Invalid\x20plugin\x20structure'));}var _0x19e668=_0x36152f['some'](function(_0x565b77){return _0x565b77===_0x59db('0x6f');});if(!_0x19e668){return _0x41a1b2(new Error('Plugin\x20manifest\x20missing'));}var _0x377c63=fs[_0x59db('0x70')](path[_0x59db('0x5d')](_0x1e5ec9,_0xb7e52c[0x0],_0x59db('0x6f')));var _0x4215d0=JSON['parse'](_0x377c63);if(_0x59db('0x25')==typeof _0x4215d0[_0x59db('0x32')]){return _0x41a1b2(new Error(_0x59db('0x71')));}if(_0x59db('0x25')==typeof _0x4215d0[_0x59db('0x37')]){return _0x41a1b2(new Error(_0x59db('0x72')));}if(_0x59db('0x25')==typeof _0x4215d0[_0x59db('0x73')]){return _0x41a1b2(new Error(_0x59db('0x74')));}if('undefined'==typeof _0x4215d0[_0x59db('0x75')]){return _0x41a1b2(new Error(_0x59db('0x76')));}if(_0x4215d0[_0x59db('0x37')]===_0x59db('0x77')){if('undefined'==typeof _0x4215d0[_0x59db('0x75')][_0x59db('0x78')]){return _0x41a1b2(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x59db('0x25')==typeof _0x4215d0[_0x59db('0x75')][_0x59db('0x78')][_0x59db('0x79')]&&_0x59db('0x25')==typeof _0x4215d0[_0x59db('0x75')]['views'][_0x59db('0x7a')]){return _0x41a1b2(new Error(_0x59db('0x7b')));}}else if(_0x4215d0[_0x59db('0x37')]===_0x59db('0x7c')){if(_0x59db('0x25')==typeof _0x4215d0['parameters'][_0x59db('0x7d')]){return _0x41a1b2(new Error(_0x59db('0x7e')));}if(_0x59db('0x25')==typeof _0x4215d0[_0x59db('0x75')]['scriptPath']){return _0x41a1b2(new Error(_0x59db('0x7f')));}}else{return _0x41a1b2(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x59590f=_0x4215d0[_0x59db('0x32')];var _0x5d0176=_0x4215d0[_0x59db('0x80')];var _0x48f493=_0x4215d0[_0x59db('0x37')];var _0x480dd8=_0x4215d0[_0x59db('0x81')]?_0x4215d0[_0x59db('0x81')]:_0x59db('0x82');var _0x96cb49=_0x4215d0[_0x59db('0x83')]?_0x4215d0[_0x59db('0x83')]:_0x59db('0x84');var _0x7b9c30='';var _0x12d4e2='';var _0x12b3f5='';var _0x445d8b='';var _0x4b0447=_0x4215d0['version'];if(_0x48f493===_0x59db('0x77')){if('undefined'!=typeof _0x4215d0[_0x59db('0x75')][_0x59db('0x78')][_0x59db('0x79')]){var _0x5caa94=_0x4215d0[_0x59db('0x75')][_0x59db('0x78')][_0x59db('0x79')];if(!/^(f|ht)tps?:\/\//i[_0x59db('0x85')](_0x5caa94)){_0x7b9c30=path[_0x59db('0x5d')](_0x59db('0x86'),_0x1857cc,_0xb7e52c[0x0],_0x5caa94);}else{_0x7b9c30=_0x5caa94;}}else{logger['info'](_0x59db('0x87'));}if(_0x59db('0x25')!=typeof _0x4215d0[_0x59db('0x75')][_0x59db('0x78')][_0x59db('0x7a')]){var _0x2ac4fe=_0x4215d0['parameters'][_0x59db('0x78')][_0x59db('0x7a')];if(!/^(f|ht)tps?:\/\//i[_0x59db('0x85')](_0x2ac4fe)){_0x12d4e2=path[_0x59db('0x5d')](_0x59db('0x86'),_0x1857cc,_0xb7e52c[0x0],_0x2ac4fe);}else{_0x12d4e2=_0x2ac4fe;}}else{logger[_0x59db('0x68')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x48f493===_0x59db('0x7c')){_0x12b3f5=_0x4215d0[_0x59db('0x75')]['scriptName'];_0x445d8b=_0x4215d0['parameters']['scriptPath'];if(_0x59db('0x25')!=typeof _0x4215d0['parameters'][_0x59db('0x78')]){if(_0x59db('0x25')!=typeof _0x4215d0[_0x59db('0x75')][_0x59db('0x78')][_0x59db('0x79')]){var _0x5caa94=_0x4215d0[_0x59db('0x75')][_0x59db('0x78')][_0x59db('0x79')];if(!/^(f|ht)tps?:\/\//i[_0x59db('0x85')](_0x5caa94)){_0x7b9c30=path[_0x59db('0x5d')](_0x59db('0x86'),_0x1857cc,_0xb7e52c[0x0],_0x5caa94);}else{_0x7b9c30=_0x5caa94;}}if(_0x59db('0x25')!=typeof _0x4215d0['parameters']['views'][_0x59db('0x7a')]){var _0x2ac4fe=_0x4215d0[_0x59db('0x75')][_0x59db('0x78')][_0x59db('0x7a')];if(!/^(f|ht)tps?:\/\//i[_0x59db('0x85')](_0x2ac4fe)){_0x12d4e2=path[_0x59db('0x5d')]('plugins',_0x1857cc,_0xb7e52c[0x0],_0x2ac4fe);}else{_0x12d4e2=_0x2ac4fe;}}}}var _0x53efa7={'name':_0x59590f,'description':_0x5d0176,'path':path[_0x59db('0x5d')](_0x1857cc,_0xb7e52c[0x0]),'type':_0x48f493,'sidebar':_0x480dd8,'icon':_0x96cb49,'adminUrl':_0x7b9c30,'agentUrl':_0x12d4e2,'scriptName':_0x12b3f5,'scriptPath':_0x445d8b,'version':_0x4b0447};removeReferences(_0x378a6e,null);return db['Plugin'][_0x59db('0x88')](_0x53efa7)[_0x59db('0x2c')](function(_0x16e3e5){var _0x54bf41={'role':_0x338bc4[_0x59db('0x89')][_0x59db('0x8a')],'userProfileId':_0x338bc4[_0x59db('0x89')][_0x59db('0x8b')]};if(!_0x54bf41)throw new Error(_0x59db('0x8c'));if(_0x54bf41[_0x59db('0x8a')]===_0x59db('0x8d')){var _0x370db8=_0x16e3e5['get']({'plain':!![]});return db[_0x59db('0x8e')]['find']({'where':{'name':_0x59db('0x2f'),'userProfileId':_0x54bf41[_0x59db('0x8b')]},'raw':!![]})[_0x59db('0x2c')](function(_0x2964f1){if(_0x2964f1&&_0x2964f1[_0x59db('0x8f')]===0x0){return db[_0x59db('0x90')][_0x59db('0x88')]({'name':_0x370db8[_0x59db('0x32')],'resourceId':_0x370db8['id'],'type':_0x2964f1[_0x59db('0x32')],'sectionId':_0x2964f1['id']},{})[_0x59db('0x2c')](function(){return _0x16e3e5;});}else{return _0x16e3e5;}})['catch'](function(_0x5d8b22){logger[_0x59db('0x30')](_0x59db('0x91'),_0x5d8b22);throw _0x5d8b22;});}return _0x16e3e5;})['then'](respondWithResult(_0x4682ad,null))[_0x59db('0x4a')](handleError(_0x4682ad,null));}});}catch(_0x114e66){_0x4682ad[_0x59db('0x21')](0x1f4)['send'](_0x114e66);}};function removeReferences(_0x1c488b,_0x5e17bc){try{if(_0x1c488b){fs[_0x59db('0x92')](_0x1c488b);logger[_0x59db('0x68')]('Zip\x20archive\x20removed');}if(_0x5e17bc){rimraf(_0x5e17bc,function(){});logger[_0x59db('0x68')]('Extracted\x20folder\x20removed');}}catch(_0x151b25){logger[_0x59db('0x30')](_0x151b25);}}exports[_0x59db('0x2b')]=function(_0x3854b9,_0x556e51,_0x3e29f2){return db[_0x59db('0x35')][_0x59db('0x50')]({'where':{'id':_0x3854b9[_0x59db('0x4c')]['id']}})[_0x59db('0x2c')](handleEntityNotFound(_0x556e51,null))['then'](saveUpdates(_0x3854b9[_0x59db('0x89')],null))[_0x59db('0x2c')](respondWithResult(_0x556e51,null))['catch'](handleError(_0x556e51,null));};exports[_0x59db('0x93')]=function(_0x3e4d6f,_0x4f2d86,_0x4cf4d3){return db[_0x59db('0x35')][_0x59db('0x50')]({'where':{'id':_0x3e4d6f[_0x59db('0x4c')]['id']}})[_0x59db('0x2c')](function(_0x26cb7c){if(_0x26cb7c){return _0x26cb7c[_0x59db('0x2d')]();}})['then'](function(_0x8a890b){rimraf(path[_0x59db('0x5d')](config[_0x59db('0x5e')],_0x59db('0x52'),path['dirname'](_0x8a890b[_0x59db('0x51')])),function(){});return _0x8a890b;})[_0x59db('0x2c')](handleEntityNotFound(_0x4f2d86,null))[_0x59db('0x2c')](respondWithStatusCode(_0x4f2d86,null))[_0x59db('0x4a')](handleError(_0x4f2d86,null));};exports[_0x59db('0x94')]=function(_0x5de402,_0x8e5616,_0x21ea99){return BPromise[_0x59db('0x95')]()['then'](function(){if(!_0x5de402[_0x59db('0x39')][_0x59db('0x51')]){throw new Error(_0x59db('0x96'));}if(!_0x5de402['query'][_0x59db('0x97')]){throw new Error(_0x59db('0x98'));}var _0x4a41c5=_0x5de402[_0x59db('0x39')][_0x59db('0x99')]?_0x5de402[_0x59db('0x39')][_0x59db('0x99')]+':'+_0x5de402['query']['port']:_0x59db('0x9a')+_0x5de402[_0x59db('0x39')][_0x59db('0x97')];var _0x228642=_0x5de402[_0x59db('0x39')][_0x59db('0x23')]?_0x5de402[_0x59db('0x39')][_0x59db('0x23')]:!![];var _0x35276d=_0x5de402[_0x59db('0x39')][_0x59db('0x9b')]?_0x5de402[_0x59db('0x39')][_0x59db('0x9b')]:null;var _0xe87aa3={'method':_0x5de402[_0x59db('0x9c')],'uri':util[_0x59db('0x9d')](_0x59db('0x9e'),_0x4a41c5,_0x5de402[_0x59db('0x39')][_0x59db('0x51')]),'json':_0x228642,'resolveWithFullResponse':!![],'encoding':_0x35276d,'qs':_0x5de402['query']};if(_0x5de402['headers']){_0xe87aa3['headers']=_0x5de402[_0x59db('0x9f')];if(_0xe87aa3[_0x59db('0x9f')][_0x59db('0xa0')]){delete _0xe87aa3[_0x59db('0x9f')][_0x59db('0xa0')];}}if(_0xe87aa3['headers']['content-type']){delete _0xe87aa3[_0x59db('0x9f')]['content-type'];}return rp(_0xe87aa3);})[_0x59db('0x2c')](function(_0x326135){if(_0x326135){_0x8e5616[_0x59db('0x28')](_0x326135['headers']);logger[_0x59db('0x68')](_0x326135['body']);if(_['endsWith'](_0x5de402['query'][_0x59db('0x51')],'download')&&_0x326135['statusCode']==0x1f4){return _0x8e5616[_0x59db('0x20')](_0x326135[_0x59db('0xa1')]);}else{return _0x8e5616['status'](_0x326135[_0x59db('0xa1')])[_0x59db('0xa2')](_0x326135['body']);}}else{return _0x8e5616[_0x59db('0x20')](0xc8);}})[_0x59db('0x4a')](handleError(_0x8e5616,null));};exports['webhookPost']=function(_0x45765f,_0x3e4802,_0x2ad6ea){return BPromise['resolve']()[_0x59db('0x2c')](function(){if(!_0x45765f[_0x59db('0x39')][_0x59db('0x51')]){throw new Error(_0x59db('0x96'));}if(!_0x45765f['query'][_0x59db('0x97')]){throw new Error(_0x59db('0x98'));}var _0x5284da=_0x45765f[_0x59db('0x39')][_0x59db('0x99')]?_0x45765f[_0x59db('0x39')][_0x59db('0x99')]+':'+_0x45765f['query'][_0x59db('0x97')]:'http://localhost:'+_0x45765f[_0x59db('0x39')][_0x59db('0x97')];var _0x424506=_0x45765f[_0x59db('0x39')]['json']?_0x45765f['query']['json']:!![];var _0x4b21d0=_0x45765f[_0x59db('0x39')][_0x59db('0x9b')]?_0x45765f[_0x59db('0x39')]['encoding']:null;var _0x478395={'method':_0x45765f[_0x59db('0x9c')],'uri':util[_0x59db('0x9d')](_0x59db('0x9e'),_0x5284da,_0x45765f['query'][_0x59db('0x51')]),'json':_0x424506,'resolveWithFullResponse':!![],'encoding':_0x4b21d0,'body':_0x45765f[_0x59db('0x89')]};if(_0x45765f[_0x59db('0x9f')]){_0x478395[_0x59db('0x9f')]=_0x45765f[_0x59db('0x9f')];if(_0x478395[_0x59db('0x9f')][_0x59db('0xa0')]){delete _0x478395[_0x59db('0x9f')][_0x59db('0xa0')];}}if(_0x478395[_0x59db('0x9f')]['content-type']){delete _0x478395[_0x59db('0x9f')][_0x59db('0xa3')];}return rp(_0x478395);})[_0x59db('0x2c')](function(_0x27f3ca){if(_0x27f3ca){_0x3e4802['set'](_0x27f3ca[_0x59db('0x9f')]);logger[_0x59db('0x68')](_0x27f3ca[_0x59db('0x89')]);return _0x3e4802['status'](_0x27f3ca['statusCode'])['send'](_0x27f3ca[_0x59db('0x89')]);}else{return _0x3e4802[_0x59db('0x20')](0xc8);}})[_0x59db('0x4a')](handleError(_0x3e4802,null));};
\ No newline at end of file
+var _0x3fdd=['node_modules/**/*','attachments/**/*','finalize','close','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','filename','extname','file','root','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','manifest.json','Plugin\x20manifest\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-type','endsWith','statusCode','sendStatus','webhookPost','port','content-length','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','archiver','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','redis','./plugin.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','Plugins','destroy','end','error','name','Plugin','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','type','options','findAll','rows','catch','show','params','include','find','download','join','format','basename','createWriteStream','zip','code','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','server/files/plugins','dirname'];(function(_0x16bd21,_0x3410da){var _0x3224c0=function(_0x460adc){while(--_0x460adc){_0x16bd21['push'](_0x16bd21['shift']());}};_0x3224c0(++_0x3410da);}(_0x3fdd,0xfa));var _0xd3fd=function(_0x167399,_0x40d453){_0x167399=_0x167399-0x0;var _0x1b8bec=_0x3fdd[_0x167399];return _0x1b8bec;};'use strict';var emlformat=require(_0xd3fd('0x0'));var rimraf=require(_0xd3fd('0x1'));var zipdir=require(_0xd3fd('0x2'));var jsonpatch=require(_0xd3fd('0x3'));var rp=require('request-promise');var moment=require(_0xd3fd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd3fd('0x5'));var path=require(_0xd3fd('0x6'));var sox=require('sox');var csv=require(_0xd3fd('0x7'));var ejs=require(_0xd3fd('0x8'));var fs=require('fs');var fs_extra=require(_0xd3fd('0x9'));var _=require(_0xd3fd('0xa'));var squel=require(_0xd3fd('0xb'));var crypto=require(_0xd3fd('0xc'));var jsforce=require(_0xd3fd('0xd'));var deskjs=require(_0xd3fd('0xe'));var toCsv=require(_0xd3fd('0x7'));var querystring=require(_0xd3fd('0xf'));var Papa=require(_0xd3fd('0x10'));var extract=require('extract-zip');var rimraf=require(_0xd3fd('0x1'));var archiver=require(_0xd3fd('0x11'));var Redis=require('ioredis');var authService=require(_0xd3fd('0x12'));var qs=require(_0xd3fd('0x13'));var as=require(_0xd3fd('0x14'));var hardwareService=require(_0xd3fd('0x15'));var logger=require(_0xd3fd('0x16'))(_0xd3fd('0x17'));var utils=require('../../config/utils');var config=require(_0xd3fd('0x18'));var licenseUtil=require(_0xd3fd('0x19'));var db=require(_0xd3fd('0x1a'))['db'];config['redis']=_[_0xd3fd('0x1b')](config['redis'],{'host':_0xd3fd('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd3fd('0x1d')]));require(_0xd3fd('0x1e'))[_0xd3fd('0x1f')](socket);function respondWithStatusCode(_0x18647e,_0xbbc099){_0xbbc099=_0xbbc099||0xcc;return function(_0x17776a){if(_0x17776a){return _0x18647e['sendStatus'](_0xbbc099);}return _0x18647e['status'](_0xbbc099)['end']();};}function respondWithResult(_0x27670b,_0x2fa448){_0x2fa448=_0x2fa448||0xc8;return function(_0x1a7b88){if(_0x1a7b88){return _0x27670b[_0xd3fd('0x20')](_0x2fa448)[_0xd3fd('0x21')](_0x1a7b88);}};}function respondWithFilteredResult(_0x406cfa,_0x19f49c){return function(_0x9f1408){if(_0x9f1408){var _0x335b47=typeof _0x19f49c[_0xd3fd('0x22')]===_0xd3fd('0x23')&&typeof _0x19f49c['limit']===_0xd3fd('0x23');var _0x3355e1=_0x9f1408[_0xd3fd('0x24')];var _0x46b069=_0x335b47?0x0:_0x19f49c[_0xd3fd('0x22')];var _0x40d045=_0x335b47?_0x9f1408['count']:_0x19f49c[_0xd3fd('0x22')]+_0x19f49c[_0xd3fd('0x25')];var _0x39c417;if(_0x40d045>=_0x3355e1){_0x40d045=_0x3355e1;_0x39c417=0xc8;}else{_0x39c417=0xce;}_0x406cfa[_0xd3fd('0x20')](_0x39c417);return _0x406cfa[_0xd3fd('0x26')](_0xd3fd('0x27'),_0x46b069+'-'+_0x40d045+'/'+_0x3355e1)[_0xd3fd('0x21')](_0x9f1408);}return null;};}function patchUpdates(_0x4fc188){return function(_0x3062d5){try{jsonpatch[_0xd3fd('0x28')](_0x3062d5,_0x4fc188,!![]);}catch(_0x313d27){return BPromise[_0xd3fd('0x29')](_0x313d27);}return _0x3062d5['save']();};}function saveUpdates(_0x16820c,_0x352e7f){return function(_0x4a2bff){if(_0x4a2bff){return _0x4a2bff['update'](_0x16820c)[_0xd3fd('0x2a')](function(_0x11842f){return _0x11842f;});}return null;};}function removeEntity(_0x1bff77,_0x4dc340){return function(_0x3ad92e){if(_0x3ad92e){return _0x3ad92e['destroy']()[_0xd3fd('0x2a')](function(){var _0x16e6d3=_0x3ad92e['get']({'plain':!![]});var _0xb9506=_0xd3fd('0x2b');return db['UserProfileResource'][_0xd3fd('0x2c')]({'where':{'type':_0xb9506,'resourceId':_0x16e6d3['id']}})[_0xd3fd('0x2a')](function(){return _0x3ad92e;});})[_0xd3fd('0x2a')](function(){_0x1bff77[_0xd3fd('0x20')](0xcc)[_0xd3fd('0x2d')]();});}};}function handleEntityNotFound(_0x58f438,_0x59dc00){return function(_0x422412){if(!_0x422412){_0x58f438['sendStatus'](0x194);}return _0x422412;};}function handleError(_0x2f99d1,_0x21cb13){_0x21cb13=_0x21cb13||0x1f4;return function(_0xe63f35){logger[_0xd3fd('0x2e')](_0xe63f35['stack']);if(_0xe63f35[_0xd3fd('0x2f')]){delete _0xe63f35[_0xd3fd('0x2f')];}_0x2f99d1['status'](_0x21cb13)['send'](_0xe63f35);};}exports['index']=function(_0x4bb7f4,_0x14f36d){var _0x362731={},_0x10352b={},_0xda7dcf={'count':0x0,'rows':[]};var _0xaa1614=_['map'](db[_0xd3fd('0x30')][_0xd3fd('0x31')],function(_0x51f3ab){return{'name':_0x51f3ab['fieldName'],'type':_0x51f3ab['type'][_0xd3fd('0x32')]};});_0x10352b[_0xd3fd('0x33')]=_['map'](_0xaa1614,_0xd3fd('0x2f'));_0x10352b['query']=_[_0xd3fd('0x34')](_0x4bb7f4[_0xd3fd('0x35')]);_0x10352b[_0xd3fd('0x36')]=_[_0xd3fd('0x37')](_0x10352b['model'],_0x10352b['query']);_0x362731[_0xd3fd('0x38')]=_[_0xd3fd('0x37')](_0x10352b[_0xd3fd('0x33')],qs[_0xd3fd('0x39')](_0x4bb7f4[_0xd3fd('0x35')][_0xd3fd('0x39')]));_0x362731['attributes']=_0x362731[_0xd3fd('0x38')][_0xd3fd('0x3a')]?_0x362731[_0xd3fd('0x38')]:_0x10352b[_0xd3fd('0x33')];if(!_0x4bb7f4['query'][_0xd3fd('0x3b')](_0xd3fd('0x3c'))){_0x362731[_0xd3fd('0x25')]=qs[_0xd3fd('0x25')](_0x4bb7f4[_0xd3fd('0x35')][_0xd3fd('0x25')]);_0x362731['offset']=qs[_0xd3fd('0x22')](_0x4bb7f4[_0xd3fd('0x35')]['offset']);}_0x362731[_0xd3fd('0x3d')]=qs[_0xd3fd('0x3e')](_0x4bb7f4[_0xd3fd('0x35')]['sort']);_0x362731['where']=qs[_0xd3fd('0x36')](_[_0xd3fd('0x3f')](_0x4bb7f4['query'],_0x10352b[_0xd3fd('0x36')]),_0xaa1614);if(_0x4bb7f4[_0xd3fd('0x35')][_0xd3fd('0x40')]){_0x362731[_0xd3fd('0x41')]=_[_0xd3fd('0x42')](_0x362731['where'],{'$or':_[_0xd3fd('0x43')](_0xaa1614,function(_0xa415e6){if(_0xa415e6[_0xd3fd('0x44')]!=='VIRTUAL'){var _0x93cfe1={};_0x93cfe1[_0xa415e6[_0xd3fd('0x2f')]]={'$like':'%'+_0x4bb7f4['query']['filter']+'%'};return _0x93cfe1;}})});}_0x362731=_[_0xd3fd('0x42')]({},_0x362731,_0x4bb7f4[_0xd3fd('0x45')]);var _0x125540={'where':_0x362731['where']};return db[_0xd3fd('0x30')][_0xd3fd('0x24')](_0x125540)[_0xd3fd('0x2a')](function(_0x2d89c2){_0xda7dcf[_0xd3fd('0x24')]=_0x2d89c2;if(_0x4bb7f4['query']['includeAll']){_0x362731['include']=[{'all':!![]}];}return db[_0xd3fd('0x30')][_0xd3fd('0x46')](_0x362731);})[_0xd3fd('0x2a')](function(_0x10013b){_0xda7dcf[_0xd3fd('0x47')]=_0x10013b;return _0xda7dcf;})[_0xd3fd('0x2a')](respondWithFilteredResult(_0x14f36d,_0x362731))[_0xd3fd('0x48')](handleError(_0x14f36d,null));};exports[_0xd3fd('0x49')]=function(_0x2234d3,_0x53b8f7){var _0x24bbd8={'raw':!![],'where':{'id':_0x2234d3[_0xd3fd('0x4a')]['id']}},_0x28ccf9={};_0x28ccf9[_0xd3fd('0x33')]=_['keys'](db[_0xd3fd('0x30')]['rawAttributes']);_0x28ccf9['query']=_['keys'](_0x2234d3[_0xd3fd('0x35')]);_0x28ccf9[_0xd3fd('0x36')]=_[_0xd3fd('0x37')](_0x28ccf9[_0xd3fd('0x33')],_0x28ccf9[_0xd3fd('0x35')]);_0x24bbd8['attributes']=_['intersection'](_0x28ccf9[_0xd3fd('0x33')],qs['fields'](_0x2234d3[_0xd3fd('0x35')][_0xd3fd('0x39')]));_0x24bbd8['attributes']=_0x24bbd8['attributes'][_0xd3fd('0x3a')]?_0x24bbd8[_0xd3fd('0x38')]:_0x28ccf9['model'];if(_0x2234d3[_0xd3fd('0x35')]['includeAll']){_0x24bbd8[_0xd3fd('0x4b')]=[{'all':!![]}];}_0x24bbd8=_[_0xd3fd('0x42')]({},_0x24bbd8,_0x2234d3['options']);return db[_0xd3fd('0x30')][_0xd3fd('0x4c')](_0x24bbd8)[_0xd3fd('0x2a')](handleEntityNotFound(_0x53b8f7,null))[_0xd3fd('0x2a')](respondWithResult(_0x53b8f7,null))[_0xd3fd('0x48')](handleError(_0x53b8f7,null));};exports[_0xd3fd('0x4d')]=function(_0x302382,_0x190591,_0x498108){return db['Plugin'][_0xd3fd('0x4c')]({'where':{'id':_0x302382[_0xd3fd('0x4a')]['id']},'attributes':[_0xd3fd('0x2f'),_0xd3fd('0x6')],'raw':!![]})[_0xd3fd('0x2a')](handleEntityNotFound(_0x190591,null))['then'](function(_0x3b3e1f){if(_0x3b3e1f){var _0x1a02f0=path[_0xd3fd('0x4e')](config['root'],'server/files/plugins',util[_0xd3fd('0x4f')]('%s.zip',path[_0xd3fd('0x50')](_0x3b3e1f['path'])));var _0x51d110=fs[_0xd3fd('0x51')](_0x1a02f0);var _0x30aaa9=archiver(_0xd3fd('0x52'),{'zlib':{'level':0x9}});_0x30aaa9['on']('warning',function(_0x35b1cc){if(_0x35b1cc[_0xd3fd('0x53')]==='ENOENT'){logger[_0xd3fd('0x2e')](_0x35b1cc);}else{throw new db[(_0xd3fd('0x54'))]['Error'](_0xd3fd('0x55'));}});_0x30aaa9['on']('error',function(_0x5659cf){throw new db[(_0xd3fd('0x54'))][(_0xd3fd('0x56'))](_0xd3fd('0x55'));});_0x30aaa9[_0xd3fd('0x57')](_0x51d110);_0x30aaa9[_0xd3fd('0x58')](_0xd3fd('0x59'),{'cwd':path['join'](config['root'],_0xd3fd('0x5a'),path[_0xd3fd('0x5b')](_0x3b3e1f[_0xd3fd('0x6')])),'ignore':[path['join'](path['basename'](_0x3b3e1f[_0xd3fd('0x6')]),_0xd3fd('0x5c')),path[_0xd3fd('0x4e')](path[_0xd3fd('0x50')](_0x3b3e1f[_0xd3fd('0x6')]),_0xd3fd('0x5d'))],'nodir':!![]})[_0xd3fd('0x5e')]();_0x51d110['on'](_0xd3fd('0x5f'),function(){if(!fs['existsSync'](_0x1a02f0)){throw new db[(_0xd3fd('0x54'))][(_0xd3fd('0x56'))](_0xd3fd('0x60'));}return _0x190591[_0xd3fd('0x4d')](_0x1a02f0,util[_0xd3fd('0x4f')](_0xd3fd('0x61'),path[_0xd3fd('0x50')](_0x3b3e1f[_0xd3fd('0x6')])),function(_0x5857d7){if(_0x5857d7){throw new db['Sequelize']['Error'](_0xd3fd('0x62'));}fs[_0xd3fd('0x63')](_0x1a02f0);logger[_0xd3fd('0x64')](_0xd3fd('0x65'));logger[_0xd3fd('0x64')](_0xd3fd('0x66'));});});}return null;})[_0xd3fd('0x48')](handleError(_0x190591,null));};exports[_0xd3fd('0x67')]=function(_0x3b5876,_0x572f24,_0xa19abd){var _0x1f27df=path[_0xd3fd('0x50')](_0x3b5876['file'][_0xd3fd('0x68')],path[_0xd3fd('0x69')](_0x3b5876[_0xd3fd('0x6a')][_0xd3fd('0x68')]));var _0x2d2051=path['join'](config[_0xd3fd('0x6b')],_0xd3fd('0x5a'),_0x3b5876['file'][_0xd3fd('0x68')]);var _0x411a2a=path['join'](config[_0xd3fd('0x6b')],_0xd3fd('0x5a'),_0x1f27df);logger[_0xd3fd('0x64')](_0xd3fd('0x6c'),_0x2d2051);logger[_0xd3fd('0x64')](_0xd3fd('0x6d'),_0x411a2a);try{fs[_0xd3fd('0x6e')](_0x2d2051,parseInt(_0xd3fd('0x6f'),0x8));extract(_0x2d2051,{'dir':_0x411a2a},function(_0x2fa9e5){if(_0x2fa9e5){logger[_0xd3fd('0x2e')](_0x2fa9e5);handleError(_0x2fa9e5,!![]);};var _0x229537=fs[_0xd3fd('0x70')](_0x411a2a);if(_0x229537[_0xd3fd('0x3a')]>0x1){removeReferences(_0x2d2051,_0x411a2a);logger[_0xd3fd('0x2e')](_0xd3fd('0x71'));return _0xa19abd(new Error(_0xd3fd('0x71')));}var _0x5ad89f=fs[_0xd3fd('0x72')](path[_0xd3fd('0x4e')](_0x411a2a,_0x229537[0x0]));if(_0x5ad89f[_0xd3fd('0x73')]()){removeReferences(_0x2d2051,_0x411a2a);logger[_0xd3fd('0x2e')]('Invalid\x20plugin\x20structure');return _0xa19abd(new Error(_0xd3fd('0x71')));}if(_0x5ad89f[_0xd3fd('0x74')]()){var _0x4c8cb3=fs['readdirSync'](path[_0xd3fd('0x4e')](_0x411a2a,_0x229537[0x0]));if(_0x4c8cb3[_0xd3fd('0x3a')]===0x0){removeReferences(_0x2d2051,_0x411a2a);logger[_0xd3fd('0x2e')]('Invalid\x20plugin\x20structure');return _0xa19abd(new Error(_0xd3fd('0x71')));}var _0x5cb6e0=_0x4c8cb3['some'](function(_0x288261){return _0x288261===_0xd3fd('0x75');});if(!_0x5cb6e0){return _0xa19abd(new Error(_0xd3fd('0x76')));}var _0x133fba=fs['readFileSync'](path[_0xd3fd('0x4e')](_0x411a2a,_0x229537[0x0],'manifest.json'));var _0x265855=JSON['parse'](_0x133fba);if(_0xd3fd('0x23')==typeof _0x265855['name']){return _0xa19abd(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x44')]){return _0xa19abd(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x77')]){return _0xa19abd(new Error(_0xd3fd('0x78')));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x79')]){return _0xa19abd(new Error(_0xd3fd('0x7a')));}if(_0x265855['type']===_0xd3fd('0x7b')){if('undefined'==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')]){return _0xa19abd(new Error(_0xd3fd('0x7d')));}if('undefined'==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7e')]&&_0xd3fd('0x23')==typeof _0x265855['parameters'][_0xd3fd('0x7c')][_0xd3fd('0x7f')]){return _0xa19abd(new Error(_0xd3fd('0x80')));}}else if(_0x265855[_0xd3fd('0x44')]===_0xd3fd('0x81')){if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x82')]){return _0xa19abd(new Error(_0xd3fd('0x83')));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x84')]){return _0xa19abd(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0xa19abd(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x41f544=_0x265855[_0xd3fd('0x2f')];var _0x2abac7=_0x265855[_0xd3fd('0x85')];var _0x42aad4=_0x265855[_0xd3fd('0x44')];var _0x3420d4=_0x265855['sidebar']?_0x265855[_0xd3fd('0x86')]:_0xd3fd('0x87');var _0x1675b4=_0x265855[_0xd3fd('0x88')]?_0x265855[_0xd3fd('0x88')]:_0xd3fd('0x89');var _0x3c87c1='';var _0x236b8f='';var _0x55af7c='';var _0x5dfc3d='';var _0x193918=_0x265855[_0xd3fd('0x77')];if(_0x42aad4===_0xd3fd('0x7b')){if('undefined'!=typeof _0x265855['parameters']['views'][_0xd3fd('0x7e')]){var _0x2b8807=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xd3fd('0x8a')](_0x2b8807)){_0x3c87c1=path[_0xd3fd('0x4e')](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x2b8807);}else{_0x3c87c1=_0x2b8807;}}else{logger['info'](_0xd3fd('0x8c'));}if('undefined'!=typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7f')]){var _0x296649=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0xd3fd('0x8a')](_0x296649)){_0x236b8f=path['join'](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x296649);}else{_0x236b8f=_0x296649;}}else{logger['info']('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x42aad4==='script'){_0x55af7c=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x82')];_0x5dfc3d=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x84')];if(_0xd3fd('0x23')!=typeof _0x265855[_0xd3fd('0x79')]['views']){if(_0xd3fd('0x23')!=typeof _0x265855[_0xd3fd('0x79')]['views'][_0xd3fd('0x7e')]){var _0x2b8807=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0xd3fd('0x8a')](_0x2b8807)){_0x3c87c1=path['join'](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x2b8807);}else{_0x3c87c1=_0x2b8807;}}if(_0xd3fd('0x23')!=typeof _0x265855[_0xd3fd('0x79')]['views'][_0xd3fd('0x7f')]){var _0x296649=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7f')];if(!/^(f|ht)tps?:\/\//i['test'](_0x296649)){_0x236b8f=path['join'](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x296649);}else{_0x236b8f=_0x296649;}}}}var _0x50a8b5={'name':_0x41f544,'description':_0x2abac7,'path':path['join'](_0x1f27df,_0x229537[0x0]),'type':_0x42aad4,'sidebar':_0x3420d4,'icon':_0x1675b4,'adminUrl':_0x3c87c1,'agentUrl':_0x236b8f,'scriptName':_0x55af7c,'scriptPath':_0x5dfc3d,'version':_0x193918};removeReferences(_0x2d2051,null);return db[_0xd3fd('0x30')][_0xd3fd('0x8d')](_0x50a8b5)[_0xd3fd('0x2a')](function(_0xd01007){var _0x1272cf={'role':_0x3b5876[_0xd3fd('0x8e')][_0xd3fd('0x8f')],'userProfileId':_0x3b5876['body'][_0xd3fd('0x90')]};if(!_0x1272cf)throw new Error(_0xd3fd('0x91'));if(_0x1272cf['role']==='user'){var _0x5c5cb4=_0xd01007['get']({'plain':!![]});return db['UserProfileSection'][_0xd3fd('0x4c')]({'where':{'name':_0xd3fd('0x2b'),'userProfileId':_0x1272cf['userProfileId']},'raw':!![]})[_0xd3fd('0x2a')](function(_0x393040){if(_0x393040&&_0x393040[_0xd3fd('0x92')]===0x0){return db[_0xd3fd('0x93')][_0xd3fd('0x8d')]({'name':_0x5c5cb4[_0xd3fd('0x2f')],'resourceId':_0x5c5cb4['id'],'type':_0x393040[_0xd3fd('0x2f')],'sectionId':_0x393040['id']},{})[_0xd3fd('0x2a')](function(){return _0xd01007;});}else{return _0xd01007;}})[_0xd3fd('0x48')](function(_0x4e127a){logger['error'](_0xd3fd('0x94'),_0x4e127a);throw _0x4e127a;});}return _0xd01007;})['then'](respondWithResult(_0x572f24,null))[_0xd3fd('0x48')](handleError(_0x572f24,null));}});}catch(_0x9afb46){_0x572f24['status'](0x1f4)[_0xd3fd('0x95')](_0x9afb46);}};function removeReferences(_0x56c90d,_0x8fc61e){try{if(_0x56c90d){fs[_0xd3fd('0x63')](_0x56c90d);logger[_0xd3fd('0x64')](_0xd3fd('0x96'));}if(_0x8fc61e){rimraf(_0x8fc61e,function(){});logger[_0xd3fd('0x64')](_0xd3fd('0x97'));}}catch(_0x21fb28){logger[_0xd3fd('0x2e')](_0x21fb28);}}exports[_0xd3fd('0x98')]=function(_0x567692,_0x2099e0,_0x168a32){return db[_0xd3fd('0x30')][_0xd3fd('0x4c')]({'where':{'id':_0x567692[_0xd3fd('0x4a')]['id']}})[_0xd3fd('0x2a')](handleEntityNotFound(_0x2099e0,null))['then'](saveUpdates(_0x567692[_0xd3fd('0x8e')],null))[_0xd3fd('0x2a')](respondWithResult(_0x2099e0,null))['catch'](handleError(_0x2099e0,null));};exports[_0xd3fd('0x99')]=function(_0x59f472,_0x4da5e6,_0x3b89a8){return db[_0xd3fd('0x30')]['find']({'where':{'id':_0x59f472[_0xd3fd('0x4a')]['id']}})['then'](function(_0x4d3655){if(_0x4d3655){return _0x4d3655['destroy']();}})[_0xd3fd('0x2a')](function(_0x3d39e9){rimraf(path[_0xd3fd('0x4e')](config[_0xd3fd('0x6b')],_0xd3fd('0x5a'),path[_0xd3fd('0x5b')](_0x3d39e9[_0xd3fd('0x6')])),function(){});return _0x3d39e9;})[_0xd3fd('0x2a')](handleEntityNotFound(_0x4da5e6,null))[_0xd3fd('0x2a')](respondWithStatusCode(_0x4da5e6,null))[_0xd3fd('0x48')](handleError(_0x4da5e6,null));};exports[_0xd3fd('0x9a')]=function(_0x5e4b08,_0x1350df,_0x2759dd){return BPromise[_0xd3fd('0x9b')]()[_0xd3fd('0x2a')](function(){if(!_0x5e4b08['query'][_0xd3fd('0x6')]){throw new Error(_0xd3fd('0x9c'));}if(!_0x5e4b08[_0xd3fd('0x35')]['port']){throw new Error(_0xd3fd('0x9d'));}var _0x4e0725=_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0x9e')]?_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0x9e')]+':'+_0x5e4b08[_0xd3fd('0x35')]['port']:_0xd3fd('0x9f')+_0x5e4b08[_0xd3fd('0x35')]['port'];var _0x2d212a=_0x5e4b08[_0xd3fd('0x35')]['json']?_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0x21')]:!![];var _0xc64bf1=_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0xa0')]?_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0xa0')]:null;var _0x2f34a0={'method':_0x5e4b08[_0xd3fd('0xa1')],'uri':util['format'](_0xd3fd('0xa2'),_0x4e0725,_0x5e4b08[_0xd3fd('0x35')]['path']),'json':_0x2d212a,'resolveWithFullResponse':!![],'encoding':_0xc64bf1,'qs':_0x5e4b08[_0xd3fd('0x35')]};if(_0x5e4b08[_0xd3fd('0xa3')]){_0x2f34a0[_0xd3fd('0xa3')]=_0x5e4b08[_0xd3fd('0xa3')];if(_0x2f34a0[_0xd3fd('0xa3')]['content-length']){delete _0x2f34a0[_0xd3fd('0xa3')]['content-length'];}}if(_0x2f34a0['headers']['content-type']){delete _0x2f34a0[_0xd3fd('0xa3')][_0xd3fd('0xa4')];}return rp(_0x2f34a0);})[_0xd3fd('0x2a')](function(_0x55bd0c){if(_0x55bd0c){_0x1350df[_0xd3fd('0x26')](_0x55bd0c['headers']);logger['info'](_0x55bd0c[_0xd3fd('0x8e')]);if(_[_0xd3fd('0xa5')](_0x5e4b08['query'][_0xd3fd('0x6')],_0xd3fd('0x4d'))&&_0x55bd0c['statusCode']==0x1f4){return _0x1350df['sendStatus'](_0x55bd0c['statusCode']);}else{return _0x1350df[_0xd3fd('0x20')](_0x55bd0c[_0xd3fd('0xa6')])[_0xd3fd('0x95')](_0x55bd0c[_0xd3fd('0x8e')]);}}else{return _0x1350df[_0xd3fd('0xa7')](0xc8);}})[_0xd3fd('0x48')](handleError(_0x1350df,null));};exports[_0xd3fd('0xa8')]=function(_0x2c838c,_0x1da93f,_0x5de592){return BPromise['resolve']()[_0xd3fd('0x2a')](function(){if(!_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x6')]){throw new Error(_0xd3fd('0x9c'));}if(!_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0xa9')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x244405=_0x2c838c[_0xd3fd('0x35')]['hostname']?_0x2c838c[_0xd3fd('0x35')]['hostname']+':'+_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0xa9')]:'http://localhost:'+_0x2c838c['query'][_0xd3fd('0xa9')];var _0x49a26a=_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x21')]?_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x21')]:!![];var _0x36c2a9=_0x2c838c['query'][_0xd3fd('0xa0')]?_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0xa0')]:null;var _0x95dbde={'method':_0x2c838c['method'],'uri':util[_0xd3fd('0x4f')](_0xd3fd('0xa2'),_0x244405,_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x6')]),'json':_0x49a26a,'resolveWithFullResponse':!![],'encoding':_0x36c2a9,'body':_0x2c838c[_0xd3fd('0x8e')]};if(_0x2c838c[_0xd3fd('0xa3')]){_0x95dbde[_0xd3fd('0xa3')]=_0x2c838c[_0xd3fd('0xa3')];if(_0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xaa')]){delete _0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xaa')];}}if(_0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xa4')]){delete _0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xa4')];}return rp(_0x95dbde);})[_0xd3fd('0x2a')](function(_0x256d17){if(_0x256d17){_0x1da93f[_0xd3fd('0x26')](_0x256d17[_0xd3fd('0xa3')]);logger[_0xd3fd('0x64')](_0x256d17[_0xd3fd('0x8e')]);return _0x1da93f[_0xd3fd('0x20')](_0x256d17[_0xd3fd('0xa6')])[_0xd3fd('0x95')](_0x256d17[_0xd3fd('0x8e')]);}else{return _0x1da93f[_0xd3fd('0xa7')](0xc8);}})[_0xd3fd('0x48')](handleError(_0x1da93f,null));};
\ No newline at end of file
index 9b021e5..a8e9506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce22=['events','../../mysqldb','Plugin','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0xf58b6c,_0x2bba2e){var _0x3f984f=function(_0xd7fdcf){while(--_0xd7fdcf){_0xf58b6c['push'](_0xf58b6c['shift']());}};_0x3f984f(++_0x2bba2e);}(_0xce22,0xea));var _0x2ce2=function(_0x26ba32,_0x5b1b1e){_0x26ba32=_0x26ba32-0x0;var _0x3845f1=_0xce22[_0x26ba32];return _0x3845f1;};'use strict';var EventEmitter=require(_0x2ce2('0x0'));var Plugin=require(_0x2ce2('0x1'))['db'][_0x2ce2('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x2ce2('0x3')](0x0);var events={'afterCreate':_0x2ce2('0x4'),'afterUpdate':'update','afterDestroy':_0x2ce2('0x5')};function emitEvent(_0x5bc506){return function(_0x26b273,_0x1801be,_0x470a06){PluginEvents[_0x2ce2('0x6')](_0x5bc506+':'+_0x26b273['id'],_0x26b273);PluginEvents[_0x2ce2('0x6')](_0x5bc506,_0x26b273);_0x470a06(null);};}for(var e in events){if(events[_0x2ce2('0x7')](e)){var event=events[e];Plugin[_0x2ce2('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0xb7ae=['events','../../mysqldb','Plugin','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x18516c,_0x9bfd43){var _0x53d353=function(_0x108aa9){while(--_0x108aa9){_0x18516c['push'](_0x18516c['shift']());}};_0x53d353(++_0x9bfd43);}(_0xb7ae,0xf3));var _0xeb7a=function(_0x3e6389,_0x1112db){_0x3e6389=_0x3e6389-0x0;var _0x46038f=_0xb7ae[_0x3e6389];return _0x46038f;};'use strict';var EventEmitter=require(_0xeb7a('0x0'));var Plugin=require(_0xeb7a('0x1'))['db'][_0xeb7a('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xeb7a('0x3')](0x0);var events={'afterCreate':_0xeb7a('0x4'),'afterUpdate':'update','afterDestroy':_0xeb7a('0x5')};function emitEvent(_0x242a47){return function(_0x44ce73,_0x51e0af,_0x277b5d){PluginEvents[_0xeb7a('0x6')](_0x242a47+':'+_0x44ce73['id'],_0x44ce73);PluginEvents[_0xeb7a('0x6')](_0x242a47,_0x44ce73);_0x277b5d(null);};}for(var e in events){if(events[_0xeb7a('0x7')](e)){var event=events[e];Plugin[_0xeb7a('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 995753f..88898d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cdb=['plugins','lodash','../../config/logger','api','moment','bluebird','rimraf','exports','define'];(function(_0x38183c,_0xcd6103){var _0x331e08=function(_0x237649){while(--_0x237649){_0x38183c['push'](_0x38183c['shift']());}};_0x331e08(++_0xcd6103);}(_0x3cdb,0x17b));var _0xb3cd=function(_0x8560d3,_0x26a504){_0x8560d3=_0x8560d3-0x0;var _0x33b1b5=_0x3cdb[_0x8560d3];return _0x33b1b5;};'use strict';var _=require(_0xb3cd('0x0'));var util=require('util');var logger=require(_0xb3cd('0x1'))(_0xb3cd('0x2'));var moment=require(_0xb3cd('0x3'));var BPromise=require(_0xb3cd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb3cd('0x5'));var config=require('../../config/environment');var attributes=require('./plugin.attributes');module[_0xb3cd('0x6')]=function(_0x336b4e,_0x531082){return _0x336b4e[_0xb3cd('0x7')]('Plugin',attributes,{'tableName':_0xb3cd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe384=['lodash','../../config/logger','api','moment','path','rimraf','exports','define'];(function(_0x11c7d3,_0x47fe03){var _0x351767=function(_0x41d8d9){while(--_0x41d8d9){_0x11c7d3['push'](_0x11c7d3['shift']());}};_0x351767(++_0x47fe03);}(_0xe384,0x160));var _0x4e38=function(_0x2ccaa3,_0x465b72){_0x2ccaa3=_0x2ccaa3-0x0;var _0x3b9551=_0xe384[_0x2ccaa3];return _0x3b9551;};'use strict';var _=require(_0x4e38('0x0'));var util=require('util');var logger=require(_0x4e38('0x1'))(_0x4e38('0x2'));var moment=require(_0x4e38('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e38('0x4'));var rimraf=require(_0x4e38('0x5'));var config=require('../../config/environment');var attributes=require('./plugin.attributes');module[_0x4e38('0x6')]=function(_0x5a34a1,_0x52fd5e){return _0x5a34a1[_0x4e38('0x7')]('Plugin',attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b05189..62e2a04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8472=['./plugin.socket','register','request','then','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','CreatePlugin','Plugin','create','body','options','raw','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter'];(function(_0x4c212e,_0x431781){var _0x1ce92b=function(_0xd78e91){while(--_0xd78e91){_0x4c212e['push'](_0x4c212e['shift']());}};_0x1ce92b(++_0x431781);}(_0x8472,0x1f0));var _0x2847=function(_0x31d8f4,_0x344b8d){_0x31d8f4=_0x31d8f4-0x0;var _0x33e020=_0x8472[_0x31d8f4];return _0x33e020;};'use strict';var _=require(_0x2847('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2847('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2847('0x2'));var db=require(_0x2847('0x3'))['db'];var utils=require(_0x2847('0x4'));var logger=require(_0x2847('0x5'))(_0x2847('0x6'));var config=require(_0x2847('0x7'));var jayson=require(_0x2847('0x8'));var client=jayson[_0x2847('0x9')][_0x2847('0xa')]({'port':0x232a});config[_0x2847('0xb')]=_['defaults'](config[_0x2847('0xb')],{'host':_0x2847('0xc'),'port':0x18eb});var socket=require(_0x2847('0xd'))(new Redis(config[_0x2847('0xb')]));require(_0x2847('0xe'))[_0x2847('0xf')](socket);function respondWithRpcPromise(_0x8d940b,_0x3254f9,_0x42e1e6){return new BPromise(function(_0x20e0ab,_0x5c1606){return client[_0x2847('0x10')](_0x8d940b,_0x42e1e6)[_0x2847('0x11')](function(_0x3c1a1e){logger['info'](_0x2847('0x12'),_0x3254f9,_0x2847('0x13'));logger[_0x2847('0x14')](_0x2847('0x15'),_0x3254f9,_0x2847('0x13'),JSON[_0x2847('0x16')](_0x3c1a1e));if(_0x3c1a1e['error']){if(_0x3c1a1e['error']['code']===0x1f4){logger[_0x2847('0x17')](_0x2847('0x12'),_0x3254f9,_0x3c1a1e[_0x2847('0x17')]['message']);return _0x5c1606(_0x3c1a1e[_0x2847('0x17')][_0x2847('0x18')]);}logger[_0x2847('0x17')](_0x2847('0x12'),_0x3254f9,_0x3c1a1e['error'][_0x2847('0x18')]);return _0x20e0ab(_0x3c1a1e[_0x2847('0x17')][_0x2847('0x18')]);}else{logger[_0x2847('0x19')](_0x2847('0x12'),_0x3254f9,_0x2847('0x13'));_0x20e0ab(_0x3c1a1e[_0x2847('0x1a')][_0x2847('0x18')]);}})['catch'](function(_0x146149){logger['error'](_0x2847('0x12'),_0x3254f9,_0x146149);_0x5c1606(_0x146149);});});}exports[_0x2847('0x1b')]=function(_0x25fe3d){var _0x57ba11=this;return new Promise(function(_0x2a3433,_0x19153c){return db[_0x2847('0x1c')][_0x2847('0x1d')](_0x25fe3d[_0x2847('0x1e')],{'raw':_0x25fe3d[_0x2847('0x1f')]?_0x25fe3d[_0x2847('0x1f')][_0x2847('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x3109ea){logger[_0x2847('0x19')](_0x2847('0x1b'),_0x25fe3d);logger[_0x2847('0x14')]('CreatePlugin',_0x25fe3d,JSON[_0x2847('0x16')](_0x3109ea));_0x2a3433(_0x3109ea);})[_0x2847('0x21')](function(_0x3a5ef6){logger[_0x2847('0x17')](_0x2847('0x1b'),_0x3a5ef6[_0x2847('0x18')],_0x25fe3d);_0x19153c(_0x57ba11[_0x2847('0x17')](0x1f4,_0x3a5ef6[_0x2847('0x18')]));});});};
\ No newline at end of file
+var _0xdc9b=['client','redis','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreatePlugin','Plugin','create','body','options','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise'];(function(_0x4a86cf,_0xeb2977){var _0x59b639=function(_0x22f8b3){while(--_0x22f8b3){_0x4a86cf['push'](_0x4a86cf['shift']());}};_0x59b639(++_0xeb2977);}(_0xdc9b,0x70));var _0xbdc9=function(_0x37a708,_0x5af640){_0x37a708=_0x37a708-0x0;var _0x2f7018=_0xdc9b[_0x37a708];return _0x2f7018;};'use strict';var _=require(_0xbdc9('0x0'));var util=require(_0xbdc9('0x1'));var moment=require(_0xbdc9('0x2'));var BPromise=require('bluebird');var rs=require(_0xbdc9('0x3'));var fs=require('fs');var Redis=require(_0xbdc9('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbdc9('0x5'))(_0xbdc9('0x6'));var config=require('../../config/environment');var jayson=require(_0xbdc9('0x7'));var client=jayson[_0xbdc9('0x8')]['http']({'port':0x232a});config[_0xbdc9('0x9')]=_['defaults'](config[_0xbdc9('0x9')],{'host':_0xbdc9('0xa'),'port':0x18eb});var socket=require(_0xbdc9('0xb'))(new Redis(config[_0xbdc9('0x9')]));require(_0xbdc9('0xc'))[_0xbdc9('0xd')](socket);function respondWithRpcPromise(_0x7e6df8,_0x2d1c34,_0x1a6e8f){return new BPromise(function(_0x289f6e,_0x3e58f4){return client[_0xbdc9('0xe')](_0x7e6df8,_0x1a6e8f)[_0xbdc9('0xf')](function(_0xb5a15b){logger[_0xbdc9('0x10')](_0xbdc9('0x11'),_0x2d1c34,_0xbdc9('0x12'));logger[_0xbdc9('0x13')](_0xbdc9('0x14'),_0x2d1c34,_0xbdc9('0x12'),JSON[_0xbdc9('0x15')](_0xb5a15b));if(_0xb5a15b['error']){if(_0xb5a15b[_0xbdc9('0x16')]['code']===0x1f4){logger['error'](_0xbdc9('0x11'),_0x2d1c34,_0xb5a15b[_0xbdc9('0x16')]['message']);return _0x3e58f4(_0xb5a15b[_0xbdc9('0x16')][_0xbdc9('0x17')]);}logger[_0xbdc9('0x16')](_0xbdc9('0x11'),_0x2d1c34,_0xb5a15b[_0xbdc9('0x16')][_0xbdc9('0x17')]);return _0x289f6e(_0xb5a15b['error']['message']);}else{logger[_0xbdc9('0x10')](_0xbdc9('0x11'),_0x2d1c34,_0xbdc9('0x12'));_0x289f6e(_0xb5a15b['result']['message']);}})[_0xbdc9('0x18')](function(_0x2aad7b){logger['error'](_0xbdc9('0x11'),_0x2d1c34,_0x2aad7b);_0x3e58f4(_0x2aad7b);});});}exports[_0xbdc9('0x19')]=function(_0x1f112d){var _0x478c97=this;return new Promise(function(_0x15540e,_0x37e81f){return db[_0xbdc9('0x1a')][_0xbdc9('0x1b')](_0x1f112d[_0xbdc9('0x1c')],{'raw':_0x1f112d[_0xbdc9('0x1d')]?_0x1f112d['options']['raw']===undefined?!![]:![]:!![]})[_0xbdc9('0xf')](function(_0x26f72){logger[_0xbdc9('0x10')]('CreatePlugin',_0x1f112d);logger[_0xbdc9('0x13')](_0xbdc9('0x19'),_0x1f112d,JSON['stringify'](_0x26f72));_0x15540e(_0x26f72);})[_0xbdc9('0x18')](function(_0x18ca88){logger[_0xbdc9('0x16')](_0xbdc9('0x19'),_0x18ca88[_0xbdc9('0x17')],_0x1f112d);_0x37e81f(_0x478c97[_0xbdc9('0x16')](0x1f4,_0x18ca88[_0xbdc9('0x17')]));});});};
\ No newline at end of file
index 63650a4..8c6e095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x201f=['plugin:','./plugin.events','save','remove','removeListener','register'];(function(_0x42f968,_0x48d521){var _0x5c045c=function(_0x27759b){while(--_0x27759b){_0x42f968['push'](_0x42f968['shift']());}};_0x5c045c(++_0x48d521);}(_0x201f,0x1c9));var _0xf201=function(_0x1fdf8a,_0x97b5e6){_0x1fdf8a=_0x1fdf8a-0x0;var _0x3b4f19=_0x201f[_0x1fdf8a];return _0x3b4f19;};'use strict';var PluginEvents=require(_0xf201('0x0'));var events=[_0xf201('0x1'),_0xf201('0x2'),'update'];function createListener(_0x548a0a,_0x3011b3){return function(_0x3315f1){_0x3011b3['emit'](_0x548a0a,_0x3315f1);};}function removeListener(_0x344542,_0x1755c1){return function(){PluginEvents[_0xf201('0x3')](_0x344542,_0x1755c1);};}exports[_0xf201('0x4')]=function(_0x13a5be){for(var _0x411f33=0x0,_0x498dba=events['length'];_0x411f33<_0x498dba;_0x411f33++){var _0x287678=events[_0x411f33];var _0x1c6d3a=createListener(_0xf201('0x5')+_0x287678,_0x13a5be);PluginEvents['on'](_0x287678,_0x1c6d3a);}};
\ No newline at end of file
+var _0xcbe9=['removeListener','register','length','./plugin.events','save','remove','update','emit'];(function(_0x13135b,_0x2b99e5){var _0x303ec5=function(_0xa87aa2){while(--_0xa87aa2){_0x13135b['push'](_0x13135b['shift']());}};_0x303ec5(++_0x2b99e5);}(_0xcbe9,0xe3));var _0x9cbe=function(_0x4b7cbd,_0x288efd){_0x4b7cbd=_0x4b7cbd-0x0;var _0x5db5ab=_0xcbe9[_0x4b7cbd];return _0x5db5ab;};'use strict';var PluginEvents=require(_0x9cbe('0x0'));var events=[_0x9cbe('0x1'),_0x9cbe('0x2'),_0x9cbe('0x3')];function createListener(_0x3f9fe8,_0x592c72){return function(_0x1fbfb7){_0x592c72[_0x9cbe('0x4')](_0x3f9fe8,_0x1fbfb7);};}function removeListener(_0x5c3de6,_0x42d6d4){return function(){PluginEvents[_0x9cbe('0x5')](_0x5c3de6,_0x42d6d4);};}exports[_0x9cbe('0x6')]=function(_0x15e26a){for(var _0x370fb4=0x0,_0xc7758b=events[_0x9cbe('0x7')];_0x370fb4<_0xc7758b;_0x370fb4++){var _0x37ede0=events[_0x370fb4];var _0x21c29f=createListener('plugin:'+_0x37ede0,_0x15e26a);PluginEvents['on'](_0x37ede0,_0x21c29f);}};
\ No newline at end of file
index 5df0b47..5c119cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x371964,_0x19369a){var _0x5bf78a=function(_0x3777a4){while(--_0x3777a4){_0x371964['push'](_0x371964['shift']());}};_0x5bf78a(++_0x19369a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x5079f8,_0x11122a){var _0x11eef3=function(_0x307408){while(--_0x307408){_0x5079f8['push'](_0x5079f8['shift']());}};_0x11eef3(++_0x11122a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index b9b7d9f..ab649a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2c=['start','dump','update','restart','stop','hasOwnProperty','params','destroy','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','json','error','stack','name','send','info','list','reject','express','motion2','then','catch','show','create','body','script','cwd','chdir','dirname'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xde2c,0x7f));var _0xcde2=function(_0x510c60,_0x50247e){_0x510c60=_0x510c60-0x0;var _0x49c4aa=_0xde2c[_0x510c60];return _0x49c4aa;};'use strict';var _=require(_0xcde2('0x0'));var pm2=require(_0xcde2('0x1'));var logger=require(_0xcde2('0x2'))(_0xcde2('0x3'));var path=require(_0xcde2('0x4'));var exec=require(_0xcde2('0x5'))[_0xcde2('0x6')];var BPromise=require(_0xcde2('0x7'));function handleEntityNotFound(_0x55c175,_0x4353c8){return function(_0x196898){if(!_0x196898){_0x55c175[_0xcde2('0x8')](0x194);;}return _0x196898;};}function respondWithResult(_0x1398de,_0x401b16){_0x401b16=_0x401b16||0xc8;return function(_0x53c558){if(_0x53c558){return _0x1398de[_0xcde2('0x9')](_0x401b16)[_0xcde2('0xa')](_0x53c558);}return null;};}function handleError(_0x9c7036,_0x544235){_0x544235=_0x544235||0x1f4;return function(_0x582a6c){logger[_0xcde2('0xb')](_0x582a6c[_0xcde2('0xc')]);if(_0x582a6c['name']){delete _0x582a6c[_0xcde2('0xd')];}_0x9c7036[_0xcde2('0x9')](_0x544235)[_0xcde2('0xe')](_0x582a6c);};}function execChildProcess(){return new BPromise(function(_0x127358,_0x54b7c5){exec('npm\x20install',function(_0x25677f,_0x1bc697,_0x3b1333){logger[_0xcde2('0xf')](_0x1bc697);logger[_0xcde2('0xf')](_0x3b1333);if(_0x25677f){logger[_0xcde2('0xb')](_0x25677f);return _0x54b7c5(_0x25677f);}return _0x127358(_0x1bc697);});});}exports['index']=function(_0x211215,_0x577062){return pm2[_0xcde2('0x10')]()['then'](function(_0x4b0e0e){if(_0x4b0e0e){var _0x34e079=_[_0xcde2('0x11')](_0x4b0e0e,function(_0x417505){return _0x417505[_0xcde2('0xd')]===_0xcde2('0x12')||_0x417505['name']===_0xcde2('0x13');});return{'rows':_0x34e079,'count':_0x34e079['length']};}return null;})[_0xcde2('0x14')](respondWithResult(_0x577062,null))[_0xcde2('0x15')](handleError(_0x577062,null));};exports[_0xcde2('0x16')]=function(_0x1f1858,_0x5223f1){return pm2['describe'](_0x1f1858['params']['id'])[_0xcde2('0x14')](respondWithResult(_0x5223f1,null))['then'](handleEntityNotFound(_0x5223f1,null))[_0xcde2('0x15')](handleError(_0x5223f1,null));};exports[_0xcde2('0x17')]=function(_0x252372,_0x481fc0){if(_0x252372[_0xcde2('0x18')][_0xcde2('0xd')]&&_0x252372[_0xcde2('0x18')][_0xcde2('0x19')]){var _0x43df7a=path['join'](__dirname,'../../files/plugins',_0x252372['body'][_0xcde2('0x19')]);var _0x3e5170=process[_0xcde2('0x1a')]();process[_0xcde2('0x1b')](path[_0xcde2('0x1c')](_0x43df7a));return execChildProcess()['then'](function(_0x1104b8){process['chdir'](_0x3e5170);return pm2[_0xcde2('0x1d')]({'name':_0x252372[_0xcde2('0x18')][_0xcde2('0xd')],'script':_0x43df7a});})['then'](function(_0x593aa4){pm2[_0xcde2('0x1e')]();return _0x593aa4[0x0];})[_0xcde2('0x14')](respondWithResult(_0x481fc0,0xc9))[_0xcde2('0x15')](handleError(_0x481fc0,null));}else{return _0x481fc0[_0xcde2('0x9')](0x1f4)[_0xcde2('0xe')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0xcde2('0x1f')]=function(_0x45275a,_0x1dce65){if(_0x45275a['body']['id']){delete _0x45275a[_0xcde2('0x18')]['id'];}var _0x348ca1={'online':_0xcde2('0x20'),'stopped':_0xcde2('0x21')};if(_0x348ca1[_0xcde2('0x22')](_0x45275a[_0xcde2('0x18')][_0xcde2('0x9')])){return pm2[_0x348ca1[_0x45275a[_0xcde2('0x18')]['status']]](_0x45275a[_0xcde2('0x23')]['id'])['then'](respondWithResult(_0x1dce65,0xc8))[_0xcde2('0x15')](handleError(_0x1dce65,null));}else{return _0x1dce65[_0xcde2('0x9')](0x1f4)[_0xcde2('0xe')]({'message':'Unknown\x20status'});}};exports[_0xcde2('0x24')]=function(_0x28fedd,_0x58afb1){if(_0x28fedd[_0xcde2('0x18')]['id']){delete _0x28fedd[_0xcde2('0x18')]['id'];}if(_0x28fedd[_0xcde2('0x23')]['id']){return pm2[_0xcde2('0x25')](_0x28fedd[_0xcde2('0x23')]['id'])[_0xcde2('0x14')](function(_0x11b817){pm2[_0xcde2('0x1e')]();return _0x11b817[0x0];})['then'](respondWithResult(_0x58afb1,null))[_0xcde2('0x15')](handleError(_0x58afb1,null));}else{return _0x58afb1[_0xcde2('0x9')](0x1f4)[_0xcde2('0xe')]({'message':_0xcde2('0x26')});}};
\ No newline at end of file
+var _0x91a7=['params','delete','Unknown\x20id','../../config/pm2','../../config/logger','api','child_process','bluebird','sendStatus','status','json','error','stack','name','send','npm\x20install','info','index','list','then','reject','length','show','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','catch','Missing\x20name\x20and/or\x20path','restart','stop','hasOwnProperty','Unknown\x20status'];(function(_0x59b2a1,_0x1f631f){var _0x4908d1=function(_0x14c9b8){while(--_0x14c9b8){_0x59b2a1['push'](_0x59b2a1['shift']());}};_0x4908d1(++_0x1f631f);}(_0x91a7,0xe7));var _0x791a=function(_0x56b288,_0x1ed5ac){_0x56b288=_0x56b288-0x0;var _0x355ae0=_0x91a7[_0x56b288];return _0x355ae0;};'use strict';var _=require('lodash');var pm2=require(_0x791a('0x0'));var logger=require(_0x791a('0x1'))(_0x791a('0x2'));var path=require('path');var exec=require(_0x791a('0x3'))['exec'];var BPromise=require(_0x791a('0x4'));function handleEntityNotFound(_0x535640,_0x50ab29){return function(_0x32fe2b){if(!_0x32fe2b){_0x535640[_0x791a('0x5')](0x194);;}return _0x32fe2b;};}function respondWithResult(_0x49a9b7,_0x361f53){_0x361f53=_0x361f53||0xc8;return function(_0x5db6db){if(_0x5db6db){return _0x49a9b7[_0x791a('0x6')](_0x361f53)[_0x791a('0x7')](_0x5db6db);}return null;};}function handleError(_0x5aa10a,_0x1a32b4){_0x1a32b4=_0x1a32b4||0x1f4;return function(_0x12884d){logger[_0x791a('0x8')](_0x12884d[_0x791a('0x9')]);if(_0x12884d[_0x791a('0xa')]){delete _0x12884d['name'];}_0x5aa10a[_0x791a('0x6')](_0x1a32b4)[_0x791a('0xb')](_0x12884d);};}function execChildProcess(){return new BPromise(function(_0x57e99c,_0x2bd26a){exec(_0x791a('0xc'),function(_0x167bc4,_0x17cf33,_0x2805c9){logger[_0x791a('0xd')](_0x17cf33);logger['info'](_0x2805c9);if(_0x167bc4){logger['error'](_0x167bc4);return _0x2bd26a(_0x167bc4);}return _0x57e99c(_0x17cf33);});});}exports[_0x791a('0xe')]=function(_0x2f2d8d,_0x4c56f0){return pm2[_0x791a('0xf')]()[_0x791a('0x10')](function(_0x5d5b11){if(_0x5d5b11){var _0x2887f0=_[_0x791a('0x11')](_0x5d5b11,function(_0x2ef5c5){return _0x2ef5c5[_0x791a('0xa')]==='express'||_0x2ef5c5[_0x791a('0xa')]==='motion2';});return{'rows':_0x2887f0,'count':_0x2887f0[_0x791a('0x12')]};}return null;})[_0x791a('0x10')](respondWithResult(_0x4c56f0,null))['catch'](handleError(_0x4c56f0,null));};exports[_0x791a('0x13')]=function(_0x5bea2e,_0x35fe48){return pm2['describe'](_0x5bea2e['params']['id'])['then'](respondWithResult(_0x35fe48,null))[_0x791a('0x10')](handleEntityNotFound(_0x35fe48,null))['catch'](handleError(_0x35fe48,null));};exports['create']=function(_0x39c60b,_0x5a702e){if(_0x39c60b[_0x791a('0x14')][_0x791a('0xa')]&&_0x39c60b['body'][_0x791a('0x15')]){var _0xcb5e66=path[_0x791a('0x16')](__dirname,_0x791a('0x17'),_0x39c60b['body'][_0x791a('0x15')]);var _0x2054c6=process[_0x791a('0x18')]();process[_0x791a('0x19')](path[_0x791a('0x1a')](_0xcb5e66));return execChildProcess()[_0x791a('0x10')](function(_0x2241a0){process[_0x791a('0x19')](_0x2054c6);return pm2[_0x791a('0x1b')]({'name':_0x39c60b[_0x791a('0x14')][_0x791a('0xa')],'script':_0xcb5e66});})['then'](function(_0x1102c9){pm2[_0x791a('0x1c')]();return _0x1102c9[0x0];})[_0x791a('0x10')](respondWithResult(_0x5a702e,0xc9))[_0x791a('0x1d')](handleError(_0x5a702e,null));}else{return _0x5a702e['status'](0x1f4)[_0x791a('0xb')]({'message':_0x791a('0x1e')});}};exports['update']=function(_0xdfa84f,_0x1785f5){if(_0xdfa84f[_0x791a('0x14')]['id']){delete _0xdfa84f['body']['id'];}var _0x29194d={'online':_0x791a('0x1f'),'stopped':_0x791a('0x20')};if(_0x29194d[_0x791a('0x21')](_0xdfa84f[_0x791a('0x14')][_0x791a('0x6')])){return pm2[_0x29194d[_0xdfa84f[_0x791a('0x14')][_0x791a('0x6')]]](_0xdfa84f['params']['id'])[_0x791a('0x10')](respondWithResult(_0x1785f5,0xc8))[_0x791a('0x1d')](handleError(_0x1785f5,null));}else{return _0x1785f5[_0x791a('0x6')](0x1f4)['send']({'message':_0x791a('0x22')});}};exports['destroy']=function(_0xc59f5e,_0x2e4ec8){if(_0xc59f5e[_0x791a('0x14')]['id']){delete _0xc59f5e[_0x791a('0x14')]['id'];}if(_0xc59f5e[_0x791a('0x23')]['id']){return pm2[_0x791a('0x24')](_0xc59f5e[_0x791a('0x23')]['id'])['then'](function(_0x3662c6){pm2[_0x791a('0x1c')]();return _0x3662c6[0x0];})[_0x791a('0x10')](respondWithResult(_0x2e4ec8,null))[_0x791a('0x1d')](handleError(_0x2e4ec8,null));}else{return _0x2e4ec8[_0x791a('0x6')](0x1f4)['send']({'message':_0x791a('0x25')});}};
\ No newline at end of file
index 776972d..4724ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7008=['./realtime.controller','/queues','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x2720ff,_0xa42935){var _0x55598b=function(_0x4bbebc){while(--_0x4bbebc){_0x2720ff['push'](_0x2720ff['shift']());}};_0x55598b(++_0xa42935);}(_0x7008,0x185));var _0x8700=function(_0x4c3ea6,_0x50f253){_0x4c3ea6=_0x4c3ea6-0x0;var _0x29d530=_0x7008[_0x4c3ea6];return _0x29d530;};'use strict';var express=require(_0x8700('0x0'));var router=express[_0x8700('0x1')]();var auth=require(_0x8700('0x2'));var controller=require(_0x8700('0x3'));router['get'](_0x8700('0x4'),auth[_0x8700('0x5')](),controller['getQueues']);module[_0x8700('0x6')]=router;
\ No newline at end of file
+var _0xe8b1=['exports','express','Router','./realtime.controller','get','/queues','getQueues'];(function(_0x4c0d0f,_0x5339cc){var _0x1e6724=function(_0x1f52f1){while(--_0x1f52f1){_0x4c0d0f['push'](_0x4c0d0f['shift']());}};_0x1e6724(++_0x5339cc);}(_0xe8b1,0x104));var _0x1e8b=function(_0x10dbf6,_0x3ff964){_0x10dbf6=_0x10dbf6-0x0;var _0x452147=_0xe8b1[_0x10dbf6];return _0x452147;};'use strict';var express=require(_0x1e8b('0x0'));var router=express[_0x1e8b('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x1e8b('0x2'));router[_0x1e8b('0x3')](_0x1e8b('0x4'),auth['isAuthenticated'](),controller[_0x1e8b('0x5')]);module[_0x1e8b('0x6')]=router;
\ No newline at end of file
index ff0b1bd..7be549d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0adf=['talking','pTalking','find','rows','getAgents','online','getMembers','length','agents','Pause','findAll','QueueId','User','UserId','all','catch','util','lodash','jayson/promise','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','count','status','json','stack','name','getQueues','mail','chat','sms','fax','whatsapp','voice','resolve','then','channel','includes','query','toLowerCase','startCase','Queue','map','rawAttributes','fieldName','type','key','getOptions','user','role','userProfileId','outbound','QueueCampaigns','Queues','filter','UserProfile','getResources','findAndCountAll','error','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','paused','push','originated','dialActive','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','loggedInDb','waiting'];(function(_0x68c4e3,_0x5b18b0){var _0xaca048=function(_0x485160){while(--_0x485160){_0x68c4e3['push'](_0x68c4e3['shift']());}};_0xaca048(++_0x5b18b0);}(_0x0adf,0x1d2));var _0xf0ad=function(_0x2cf985,_0x3ba904){_0x2cf985=_0x2cf985-0x0;var _0x695c36=_0x0adf[_0x2cf985];return _0x695c36;};'use strict';var util=require(_0xf0ad('0x0'));var _=require(_0xf0ad('0x1'));var jayson=require(_0xf0ad('0x2'));var qs=require('../../components/parsers/qs');var logger=require(_0xf0ad('0x3'))(_0xf0ad('0x4'));var db=require(_0xf0ad('0x5'))['db'];var client=jayson[_0xf0ad('0x6')][_0xf0ad('0x7')]({'port':0x232a});var routingClient=jayson[_0xf0ad('0x6')][_0xf0ad('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x59a588,_0x3bbf85){return function(_0x53221f){if(_0x53221f){var _0x2eca0e=typeof _0x3bbf85[_0xf0ad('0x8')]===_0xf0ad('0x9')&&typeof _0x3bbf85[_0xf0ad('0xa')]===_0xf0ad('0x9');var _0x3bc706=_0x53221f[_0xf0ad('0xb')];var _0x5bdf69=_0x2eca0e?0x0:_0x3bbf85[_0xf0ad('0x8')];var _0x53c81a=_0x2eca0e?_0x53221f[_0xf0ad('0xb')]:_0x3bbf85[_0xf0ad('0x8')]+_0x3bbf85[_0xf0ad('0xa')];var _0x2a5d0e;if(_0x53c81a>=_0x3bc706){_0x53c81a=_0x3bc706;_0x2a5d0e=0xc8;}else{_0x2a5d0e=0xce;}_0x59a588[_0xf0ad('0xc')](_0x2a5d0e);return _0x59a588['set']('Content-Range',_0x5bdf69+'-'+_0x53c81a+'/'+_0x3bc706)[_0xf0ad('0xd')](_0x53221f);}return null;};}function handleError(_0x19892c,_0x3646a2){_0x3646a2=_0x3646a2||0x1f4;return function(_0x238c3b){logger['error'](_0x238c3b[_0xf0ad('0xe')]);if(_0x238c3b[_0xf0ad('0xf')]){delete _0x238c3b['name'];}_0x19892c['status'](_0x3646a2)['send'](_0x238c3b);};}exports[_0xf0ad('0x10')]=function(_0x513237,_0x1dad7b){var _0x313ad6=[_0xf0ad('0x11'),_0xf0ad('0x12'),_0xf0ad('0x13'),'openchannel',_0xf0ad('0x14'),_0xf0ad('0x15'),_0xf0ad('0x16')];var _0x1c9fac={'count':0x0,'rows':[]},_0x47fa2b={},_0x4e9970;Promise[_0xf0ad('0x17')]()[_0xf0ad('0x18')](function(){if(_0x513237['query'][_0xf0ad('0x19')]){if(!_[_0xf0ad('0x1a')](_0x313ad6,_0x513237[_0xf0ad('0x1b')][_0xf0ad('0x19')]['toLowerCase']()))throw new Error('Invalid\x20channel');_0x4e9970=_0x513237[_0xf0ad('0x1b')][_0xf0ad('0x19')][_0xf0ad('0x1c')]();}var _0x20c5f3=_[_0xf0ad('0x1d')](_0x4e9970)+_0xf0ad('0x1e');var _0x4e874a=_[_0xf0ad('0x1f')](db[_0x20c5f3][_0xf0ad('0x20')],function(_0x31635b){return{'name':_0x31635b[_0xf0ad('0x21')],'type':_0x31635b[_0xf0ad('0x22')][_0xf0ad('0x23')]};});_0x47fa2b=qs[_0xf0ad('0x24')](_0x4e874a,_0x513237);if(_0x513237[_0xf0ad('0x25')][_0xf0ad('0x26')]===_0xf0ad('0x25')){var _0x39b3e8={'params':{'id':_0x513237[_0xf0ad('0x25')][_0xf0ad('0x27')]},'query':{'section':_0x4e9970===_0xf0ad('0x16')&&_0x513237[_0xf0ad('0x1b')]['type']===_0xf0ad('0x28')?_0xf0ad('0x29'):_[_0xf0ad('0x1d')](_0x4e9970)+_0xf0ad('0x2a'),'type':_0x513237[_0xf0ad('0x1b')][_0xf0ad('0x22')],'nolimit':!![],'sort':'name','filter':_0x513237[_0xf0ad('0x1b')][_0xf0ad('0x2b')]}};return db[_0xf0ad('0x2c')][_0xf0ad('0x2d')](_0x39b3e8);}return db[_0x20c5f3][_0xf0ad('0x2e')](_0x47fa2b);})[_0xf0ad('0x18')](function(_0x267b7a){_0x1c9fac[_0xf0ad('0xb')]=_0x267b7a[_0xf0ad('0xb')];var _0x39c46c=_0x4e9970===_0xf0ad('0x16')?client:routingClient;return _0x39c46c['request'](_[_0xf0ad('0x1d')](_0x4e9970)+'Queues',_0x513237)[_0xf0ad('0x18')](function(_0x57a1f3){if(_0x57a1f3[_0xf0ad('0x2f')])throw new Error(util[_0xf0ad('0x30')](_0xf0ad('0x31'),_0x4e9970));var _0x3015ce=_0x57a1f3[_0xf0ad('0x32')];var _0xebb70b=[_0xf0ad('0x33'),_0xf0ad('0x34'),'waiting','talking',_0xf0ad('0x35')];if(_0x4e9970===_0xf0ad('0x16')&&_0x513237[_0xf0ad('0x1b')][_0xf0ad('0x22')]==='outbound'){_0xebb70b[_0xf0ad('0x36')]('pTalking',_0xf0ad('0x37'),'message',_0xf0ad('0x38'),'dialMethod',_0xf0ad('0x39'),_0xf0ad('0x3a'),_0xf0ad('0x3b'),_0xf0ad('0x3c'),_0xf0ad('0x3d'),_0xf0ad('0x3e'),_0xf0ad('0x3f'),_0xf0ad('0x40'),'dialPredictiveIntervalMaxThreshold',_0xf0ad('0x41'),'predictiveIntervalAvailable',_0xf0ad('0x42'),'predictiveIntervalAnsweredCalls',_0xf0ad('0x43'),_0xf0ad('0x44'),_0xf0ad('0x45'),_0xf0ad('0x46'));}var _0x82f4e4=_0x267b7a['rows'][_0xf0ad('0x1f')](function(_0x31c955){var _0x1d57d1=_0x31c955[_0xf0ad('0x47')]({'plain':!![]});_0x1d57d1[_0xf0ad('0x35')]=0x0;_0x1d57d1[_0xf0ad('0x48')]=0x0;_0x1d57d1[_0xf0ad('0x33')]=0x0;_0x1d57d1['available']=0x0;_0x1d57d1[_0xf0ad('0x35')]=0x0;_0x1d57d1[_0xf0ad('0x49')]=0x0;if(_0x4e9970===_0xf0ad('0x16')){_0x1d57d1[_0xf0ad('0x4a')]=0x0;if(_0x513237[_0xf0ad('0x1b')][_0xf0ad('0x22')]===_0xf0ad('0x28')){_0x1d57d1[_0xf0ad('0x4b')]=0x0;_0x1d57d1[_0xf0ad('0x37')]=0x0;}}_0x1d57d1['agents']=[];var _0x6b3854=_[_0xf0ad('0x4c')](_0x3015ce[_0xf0ad('0x4d')],['id',_0x1d57d1['id']]);if(_0x6b3854)_['merge'](_0x1d57d1,_['pick'](_0x6b3854,_0xebb70b));if(_0x4e9970==='voice'){return _0x31c955[_0xf0ad('0x4e')]({'attributes':['id',_0xf0ad('0xf'),_0xf0ad('0x4f')],'joinTableAttributes':[],'raw':!![]})[_0xf0ad('0x18')](function(_0x383633){return _0x31c955[_0xf0ad('0x50')]({'raw':!![]})[_0xf0ad('0x18')](function(_0x1dcbd0){for(var _0x3dfedd=0x0;_0x3dfedd<_0x383633[_0xf0ad('0x51')];_0x3dfedd++){var _0x2a7138=_['find'](_0x1dcbd0,['UserId',_0x383633[_0x3dfedd]['id']]);var _0x5cd1dc={'id':_0x383633[_0x3dfedd]['id'],'name':_0x383633[_0x3dfedd][_0xf0ad('0xf')],'online':Boolean(_0x383633[_0x3dfedd][_0xf0ad('0x4f')]),'paused':_0x2a7138?Boolean(_0x2a7138['paused']):![]};if(_0x5cd1dc[_0xf0ad('0x4f')])_0x1d57d1[_0xf0ad('0x48')]++;if(_0x5cd1dc['paused'])_0x1d57d1[_0xf0ad('0x35')]++;_0x1d57d1[_0xf0ad('0x52')][_0xf0ad('0x36')](_0x5cd1dc);}return _0x1d57d1;});});}else{var _0x440291='User'+_[_0xf0ad('0x1d')](_0x4e9970)+_0xf0ad('0x1e');var _0x172e14=_0x4e9970+_0xf0ad('0x53');return db[_0x440291][_0xf0ad('0x54')]({'where':{[_[_0xf0ad('0x1d')](_0x4e9970)+_0xf0ad('0x55')]:_0x31c955['id']},'raw':!![]})[_0xf0ad('0x18')](function(_0x32b020){return db[_0xf0ad('0x56')][_0xf0ad('0x54')]({'attributes':['id','name',_0xf0ad('0x4f'),_0x172e14],'where':{'id':_[_0xf0ad('0x1f')](_0x32b020,_0xf0ad('0x57')),'role':'agent'},'raw':!![]});})['then'](function(_0x2cf742){for(var _0x6b41e8=0x0;_0x6b41e8<_0x2cf742[_0xf0ad('0x51')];_0x6b41e8++){var _0x36500c={'id':_0x2cf742[_0x6b41e8]['id'],'name':_0x2cf742[_0x6b41e8][_0xf0ad('0xf')],'online':Boolean(_0x2cf742[_0x6b41e8][_0xf0ad('0x4f')]),'paused':Boolean(_0x2cf742[_0x6b41e8][_0x172e14])};if(_0x36500c[_0xf0ad('0x4f')])_0x1d57d1['loggedInDb']++;if(_0x36500c[_0xf0ad('0x35')])_0x1d57d1['paused']++;_0x1d57d1[_0xf0ad('0x52')][_0xf0ad('0x36')](_0x36500c);}return _0x1d57d1;});}});return Promise[_0xf0ad('0x58')](_0x82f4e4);});})[_0xf0ad('0x18')](function(_0x3e99db){_0x1c9fac['rows']=_0x3e99db;return _0x1c9fac;})['then'](respondWithFilteredResult(_0x1dad7b,_0x47fa2b))[_0xf0ad('0x59')](handleError(_0x1dad7b,null));};
\ No newline at end of file
+var _0x8f9d=['fax','resolve','query','channel','Invalid\x20channel','toLowerCase','startCase','map','rawAttributes','fieldName','type','getOptions','user','role','userProfileId','voice','outbound','QueueCampaigns','Queues','findAndCountAll','then','request','format','loggedIn','available','waiting','talking','paused','message','dialActive','dialMethod','Trunk','startPredictive','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','pTalking','originated','find','merge','pick','getMembers','length','online','agents','User','Queue','Pause','findAll','QueueId','UserId','agent','all','catch','util','jayson/promise','../../config/logger','api','../../mysqldb','client','http','offset','undefined','count','limit','status','set','Content-Range','error','stack','name','send','getQueues','mail','chat','sms','openchannel'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x8f9d,0x93));var _0xd8f9=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x8f9d[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0xd8f9('0x0'));var _=require('lodash');var jayson=require(_0xd8f9('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xd8f9('0x2'))(_0xd8f9('0x3'));var db=require(_0xd8f9('0x4'))['db'];var client=jayson[_0xd8f9('0x5')][_0xd8f9('0x6')]({'port':0x232a});var routingClient=jayson[_0xd8f9('0x5')][_0xd8f9('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x5941ce,_0x1c37be){return function(_0x24dd1e){if(_0x24dd1e){var _0x25d417=typeof _0x1c37be[_0xd8f9('0x7')]===_0xd8f9('0x8')&&typeof _0x1c37be['limit']===_0xd8f9('0x8');var _0x6691e=_0x24dd1e['count'];var _0x33c31e=_0x25d417?0x0:_0x1c37be['offset'];var _0x5caee9=_0x25d417?_0x24dd1e[_0xd8f9('0x9')]:_0x1c37be[_0xd8f9('0x7')]+_0x1c37be[_0xd8f9('0xa')];var _0x379359;if(_0x5caee9>=_0x6691e){_0x5caee9=_0x6691e;_0x379359=0xc8;}else{_0x379359=0xce;}_0x5941ce[_0xd8f9('0xb')](_0x379359);return _0x5941ce[_0xd8f9('0xc')](_0xd8f9('0xd'),_0x33c31e+'-'+_0x5caee9+'/'+_0x6691e)['json'](_0x24dd1e);}return null;};}function handleError(_0x3a214b,_0x56e0d6){_0x56e0d6=_0x56e0d6||0x1f4;return function(_0x39aca0){logger[_0xd8f9('0xe')](_0x39aca0[_0xd8f9('0xf')]);if(_0x39aca0['name']){delete _0x39aca0[_0xd8f9('0x10')];}_0x3a214b[_0xd8f9('0xb')](_0x56e0d6)[_0xd8f9('0x11')](_0x39aca0);};}exports[_0xd8f9('0x12')]=function(_0x4c11f2,_0x3529e9){var _0x1525d6=[_0xd8f9('0x13'),_0xd8f9('0x14'),_0xd8f9('0x15'),_0xd8f9('0x16'),_0xd8f9('0x17'),'whatsapp','voice'];var _0x284a1a={'count':0x0,'rows':[]},_0xc6a825={},_0x4d5b8d;Promise[_0xd8f9('0x18')]()['then'](function(){if(_0x4c11f2[_0xd8f9('0x19')]['channel']){if(!_['includes'](_0x1525d6,_0x4c11f2['query'][_0xd8f9('0x1a')]['toLowerCase']()))throw new Error(_0xd8f9('0x1b'));_0x4d5b8d=_0x4c11f2[_0xd8f9('0x19')][_0xd8f9('0x1a')][_0xd8f9('0x1c')]();}var _0x3b141a=_[_0xd8f9('0x1d')](_0x4d5b8d)+'Queue';var _0x1de3cc=_[_0xd8f9('0x1e')](db[_0x3b141a][_0xd8f9('0x1f')],function(_0x36d740){return{'name':_0x36d740[_0xd8f9('0x20')],'type':_0x36d740[_0xd8f9('0x21')]['key']};});_0xc6a825=qs[_0xd8f9('0x22')](_0x1de3cc,_0x4c11f2);if(_0x4c11f2[_0xd8f9('0x23')][_0xd8f9('0x24')]===_0xd8f9('0x23')){var _0x290553={'params':{'id':_0x4c11f2['user'][_0xd8f9('0x25')]},'query':{'section':_0x4d5b8d===_0xd8f9('0x26')&&_0x4c11f2[_0xd8f9('0x19')][_0xd8f9('0x21')]===_0xd8f9('0x27')?_0xd8f9('0x28'):_[_0xd8f9('0x1d')](_0x4d5b8d)+_0xd8f9('0x29'),'type':_0x4c11f2['query'][_0xd8f9('0x21')],'nolimit':!![],'sort':_0xd8f9('0x10'),'filter':_0x4c11f2[_0xd8f9('0x19')]['filter']}};return db['UserProfile']['getResources'](_0x290553);}return db[_0x3b141a][_0xd8f9('0x2a')](_0xc6a825);})[_0xd8f9('0x2b')](function(_0x5050a4){_0x284a1a[_0xd8f9('0x9')]=_0x5050a4[_0xd8f9('0x9')];var _0x5da878=_0x4d5b8d===_0xd8f9('0x26')?client:routingClient;return _0x5da878[_0xd8f9('0x2c')](_[_0xd8f9('0x1d')](_0x4d5b8d)+'Queues',_0x4c11f2)[_0xd8f9('0x2b')](function(_0x48f7c0){if(_0x48f7c0[_0xd8f9('0xe')])throw new Error(util[_0xd8f9('0x2d')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x4d5b8d));var _0x19d639=_0x48f7c0['result'];var _0x340f0a=[_0xd8f9('0x2e'),_0xd8f9('0x2f'),_0xd8f9('0x30'),_0xd8f9('0x31'),_0xd8f9('0x32')];if(_0x4d5b8d===_0xd8f9('0x26')&&_0x4c11f2['query'][_0xd8f9('0x21')]==='outbound'){_0x340f0a['push']('pTalking','originated',_0xd8f9('0x33'),_0xd8f9('0x34'),_0xd8f9('0x35'),_0xd8f9('0x36'),_0xd8f9('0x37'),'startProgressive','erlangCalls',_0xd8f9('0x38'),_0xd8f9('0x39'),'erlangBusyFactor',_0xd8f9('0x3a'),_0xd8f9('0x3b'),_0xd8f9('0x3c'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout',_0xd8f9('0x3d'),_0xd8f9('0x3e'),_0xd8f9('0x3f'));}var _0x219c5f=_0x5050a4[_0xd8f9('0x40')]['map'](function(_0x3333ea){var _0x2bc390=_0x3333ea[_0xd8f9('0x41')]({'plain':!![]});_0x2bc390[_0xd8f9('0x32')]=0x0;_0x2bc390[_0xd8f9('0x42')]=0x0;_0x2bc390[_0xd8f9('0x2e')]=0x0;_0x2bc390[_0xd8f9('0x2f')]=0x0;_0x2bc390[_0xd8f9('0x32')]=0x0;_0x2bc390[_0xd8f9('0x30')]=0x0;if(_0x4d5b8d===_0xd8f9('0x26')){_0x2bc390[_0xd8f9('0x31')]=0x0;if(_0x4c11f2['query'][_0xd8f9('0x21')]===_0xd8f9('0x27')){_0x2bc390[_0xd8f9('0x43')]=0x0;_0x2bc390[_0xd8f9('0x44')]=0x0;}}_0x2bc390['agents']=[];var _0x157dfd=_[_0xd8f9('0x45')](_0x19d639[_0xd8f9('0x40')],['id',_0x2bc390['id']]);if(_0x157dfd)_[_0xd8f9('0x46')](_0x2bc390,_[_0xd8f9('0x47')](_0x157dfd,_0x340f0a));if(_0x4d5b8d===_0xd8f9('0x26')){return _0x3333ea['getAgents']({'attributes':['id','name','online'],'joinTableAttributes':[],'raw':!![]})[_0xd8f9('0x2b')](function(_0x293179){return _0x3333ea[_0xd8f9('0x48')]({'raw':!![]})[_0xd8f9('0x2b')](function(_0x9af000){for(var _0x324f18=0x0;_0x324f18<_0x293179[_0xd8f9('0x49')];_0x324f18++){var _0x2ff764=_[_0xd8f9('0x45')](_0x9af000,['UserId',_0x293179[_0x324f18]['id']]);var _0x4aabbe={'id':_0x293179[_0x324f18]['id'],'name':_0x293179[_0x324f18][_0xd8f9('0x10')],'online':Boolean(_0x293179[_0x324f18][_0xd8f9('0x4a')]),'paused':_0x2ff764?Boolean(_0x2ff764[_0xd8f9('0x32')]):![]};if(_0x4aabbe['online'])_0x2bc390['loggedInDb']++;if(_0x4aabbe[_0xd8f9('0x32')])_0x2bc390[_0xd8f9('0x32')]++;_0x2bc390[_0xd8f9('0x4b')]['push'](_0x4aabbe);}return _0x2bc390;});});}else{var _0xd6b6bf=_0xd8f9('0x4c')+_[_0xd8f9('0x1d')](_0x4d5b8d)+_0xd8f9('0x4d');var _0x207ad2=_0x4d5b8d+_0xd8f9('0x4e');return db[_0xd6b6bf][_0xd8f9('0x4f')]({'where':{[_[_0xd8f9('0x1d')](_0x4d5b8d)+_0xd8f9('0x50')]:_0x3333ea['id']},'raw':!![]})['then'](function(_0x53594f){return db['User'][_0xd8f9('0x4f')]({'attributes':['id',_0xd8f9('0x10'),_0xd8f9('0x4a'),_0x207ad2],'where':{'id':_[_0xd8f9('0x1e')](_0x53594f,_0xd8f9('0x51')),'role':_0xd8f9('0x52')},'raw':!![]});})[_0xd8f9('0x2b')](function(_0x26b892){for(var _0x26527c=0x0;_0x26527c<_0x26b892[_0xd8f9('0x49')];_0x26527c++){var _0x35f7a6={'id':_0x26b892[_0x26527c]['id'],'name':_0x26b892[_0x26527c][_0xd8f9('0x10')],'online':Boolean(_0x26b892[_0x26527c][_0xd8f9('0x4a')]),'paused':Boolean(_0x26b892[_0x26527c][_0x207ad2])};if(_0x35f7a6['online'])_0x2bc390[_0xd8f9('0x42')]++;if(_0x35f7a6[_0xd8f9('0x32')])_0x2bc390[_0xd8f9('0x32')]++;_0x2bc390[_0xd8f9('0x4b')]['push'](_0x35f7a6);}return _0x2bc390;});}});return Promise[_0xd8f9('0x53')](_0x219c5f);});})['then'](function(_0x59952e){_0x284a1a[_0xd8f9('0x40')]=_0x59952e;return _0x284a1a;})[_0xd8f9('0x2b')](respondWithFilteredResult(_0x3529e9,_0xc6a825))[_0xd8f9('0x54')](handleError(_0x3529e9,null));};
\ No newline at end of file
index cdf09ae..76ad2fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0xdb5e9,_0x8584fa){var _0x394d46=function(_0x30d394){while(--_0x30d394){_0xdb5e9['push'](_0xdb5e9['shift']());}};_0x394d46(++_0x8584fa);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x20414b,_0x3ce4ab){var _0x4db231=function(_0x2efa04){while(--_0x2efa04){_0x20414b['push'](_0x20414b['shift']());}};_0x4db231(++_0x3ce4ab);}(_0xedd9,0xfc));var _0x9edd=function(_0xf66b84,_0x177bac){_0xf66b84=_0xf66b84-0x0;var _0x16f303=_0xedd9[_0xf66b84];return _0x16f303;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index 927e5e0..5c5674b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f1=['STRING','DATE','sequelize','exports','INTEGER'];(function(_0x4dd0fb,_0x5984b1){var _0x1d0172=function(_0x353f08){while(--_0x353f08){_0x4dd0fb['push'](_0x4dd0fb['shift']());}};_0x1d0172(++_0x5984b1);}(_0x96f1,0x19c));var _0x196f=function(_0x133178,_0x30c7cf){_0x133178=_0x133178-0x0;var _0x53a051=_0x96f1[_0x133178];return _0x53a051;};'use strict';var Sequelize=require(_0x196f('0x0'));module[_0x196f('0x1')]={'state':{'type':Sequelize[_0x196f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x196f('0x3')]},'scheduledat':{'type':Sequelize[_0x196f('0x4')]},'uniqueid':{'type':Sequelize[_0x196f('0x3')]},'starttime':{'type':Sequelize[_0x196f('0x4')]},'responsetime':{'type':Sequelize[_0x196f('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x196f('0x3')]},'membername':{'type':Sequelize[_0x196f('0x3')]}};
\ No newline at end of file
+var _0x9c63=['INTEGER','STRING','DATE','sequelize','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9c63,0x1a7));var _0x39c6=function(_0xb78b47,_0x185191){_0xb78b47=_0xb78b47-0x0;var _0x45f6af=_0x9c63[_0xb78b47];return _0x45f6af;};'use strict';var Sequelize=require(_0x39c6('0x0'));module[_0x39c6('0x1')]={'state':{'type':Sequelize[_0x39c6('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x39c6('0x3')]},'scheduledat':{'type':Sequelize[_0x39c6('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x39c6('0x4')]},'responsetime':{'type':Sequelize[_0x39c6('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x39c6('0x3')]},'membername':{'type':Sequelize[_0x39c6('0x3')]}};
\ No newline at end of file
index 858e603..120953a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d3c=['path','rimraf','../../config/environment','./reportAgentPreview.attributes','define','ReportAgentPreview','report_agent_preview','lodash','util','moment','bluebird','request-promise'];(function(_0x47f808,_0x86e0f6){var _0x299483=function(_0xcad841){while(--_0xcad841){_0x47f808['push'](_0x47f808['shift']());}};_0x299483(++_0x86e0f6);}(_0x3d3c,0x1c3));var _0xc3d3=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x3d3c[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xc3d3('0x0'));var util=require(_0xc3d3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc3d3('0x2'));var BPromise=require(_0xc3d3('0x3'));var rp=require(_0xc3d3('0x4'));var fs=require('fs');var path=require(_0xc3d3('0x5'));var rimraf=require(_0xc3d3('0x6'));var config=require(_0xc3d3('0x7'));var attributes=require(_0xc3d3('0x8'));module['exports']=function(_0x130e39,_0x1db54a){return _0x130e39[_0xc3d3('0x9')](_0xc3d3('0xa'),attributes,{'tableName':_0xc3d3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba4e=['report_agent_preview','lodash','api','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','define','ReportAgentPreview'];(function(_0x2c1e7a,_0x155f86){var _0xcacb4f=function(_0x2b2eb3){while(--_0x2b2eb3){_0x2c1e7a['push'](_0x2c1e7a['shift']());}};_0xcacb4f(++_0x155f86);}(_0xba4e,0x119));var _0xeba4=function(_0xb4d928,_0x579093){_0xb4d928=_0xb4d928-0x0;var _0x47166e=_0xba4e[_0xb4d928];return _0x47166e;};'use strict';var _=require(_0xeba4('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeba4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xeba4('0x2'));var fs=require('fs');var path=require(_0xeba4('0x3'));var rimraf=require(_0xeba4('0x4'));var config=require(_0xeba4('0x5'));var attributes=require(_0xeba4('0x6'));module['exports']=function(_0x5c0998,_0x3c7cf3){return _0x5c0998[_0xeba4('0x7')](_0xeba4('0x8'),attributes,{'tableName':_0xeba4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0e44b3..2e8093d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bfa=['jayson/promise','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x388914,_0x3c63f9){var _0x1f9111=function(_0x23dd69){while(--_0x23dd69){_0x388914['push'](_0x388914['shift']());}};_0x1f9111(++_0x3c63f9);}(_0x7bfa,0x1ab));var _0xa7bf=function(_0x4df1f5,_0x39c6d2){_0x4df1f5=_0x4df1f5-0x0;var _0x56585b=_0x7bfa[_0x4df1f5];return _0x56585b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa7bf('0x0'));var BPromise=require(_0xa7bf('0x1'));var rs=require(_0xa7bf('0x2'));var fs=require('fs');var Redis=require(_0xa7bf('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa7bf('0x4'));var logger=require(_0xa7bf('0x5'))(_0xa7bf('0x6'));var config=require(_0xa7bf('0x7'));var jayson=require(_0xa7bf('0x8'));var client=jayson[_0xa7bf('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x535afc,_0x21be26,_0x2a4e5e){return new BPromise(function(_0x176c8d,_0x2ed14c){return client[_0xa7bf('0xa')](_0x535afc,_0x2a4e5e)[_0xa7bf('0xb')](function(_0x4b1300){logger[_0xa7bf('0xc')](_0xa7bf('0xd'),_0x21be26,_0xa7bf('0xe'));logger[_0xa7bf('0xf')](_0xa7bf('0x10'),_0x21be26,_0xa7bf('0xe'),JSON[_0xa7bf('0x11')](_0x4b1300));if(_0x4b1300['error']){if(_0x4b1300[_0xa7bf('0x12')][_0xa7bf('0x13')]===0x1f4){logger[_0xa7bf('0x12')]('ReportAgentPreview,\x20%s,\x20%s',_0x21be26,_0x4b1300[_0xa7bf('0x12')][_0xa7bf('0x14')]);return _0x2ed14c(_0x4b1300[_0xa7bf('0x12')][_0xa7bf('0x14')]);}logger[_0xa7bf('0x12')](_0xa7bf('0xd'),_0x21be26,_0x4b1300[_0xa7bf('0x12')][_0xa7bf('0x14')]);return _0x176c8d(_0x4b1300['error'][_0xa7bf('0x14')]);}else{logger[_0xa7bf('0xc')](_0xa7bf('0xd'),_0x21be26,_0xa7bf('0xe'));_0x176c8d(_0x4b1300[_0xa7bf('0x15')][_0xa7bf('0x14')]);}})[_0xa7bf('0x16')](function(_0x4eca2c){logger[_0xa7bf('0x12')](_0xa7bf('0xd'),_0x21be26,_0x4eca2c);_0x2ed14c(_0x4eca2c);});});}exports[_0xa7bf('0x17')]=function(_0x4ca2c8){var _0x304b32=this;return new Promise(function(_0x3277eb,_0x292c6b){return db[_0xa7bf('0x18')][_0xa7bf('0x19')](_0x4ca2c8[_0xa7bf('0x1a')],{'raw':_0x4ca2c8[_0xa7bf('0x1b')]?_0x4ca2c8[_0xa7bf('0x1b')][_0xa7bf('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x239c0e){logger[_0xa7bf('0xc')]('CreateReportAgentPreview',_0x4ca2c8);logger[_0xa7bf('0xf')](_0xa7bf('0x17'),_0x4ca2c8,JSON[_0xa7bf('0x11')](_0x239c0e));_0x3277eb(_0x239c0e);})['catch'](function(_0x1feea2){logger[_0xa7bf('0x12')](_0xa7bf('0x17'),_0x1feea2['message'],_0x4ca2c8);_0x292c6b(_0x304b32[_0xa7bf('0x12')](0x1f4,_0x1feea2[_0xa7bf('0x14')]));});});};
\ No newline at end of file
+var _0xbfdc=['error','message','result','catch','CreateReportAgentPreview','raw','debug','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xbfdc,0x1cf));var _0xcbfd=function(_0xa6694b,_0xa341dd){_0xa6694b=_0xa6694b-0x0;var _0x38b16f=_0xbfdc[_0xa6694b];return _0x38b16f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xcbfd('0x0'));var rs=require(_0xcbfd('0x1'));var fs=require('fs');var Redis=require(_0xcbfd('0x2'));var db=require(_0xcbfd('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xcbfd('0x4'))(_0xcbfd('0x5'));var config=require(_0xcbfd('0x6'));var jayson=require(_0xcbfd('0x7'));var client=jayson[_0xcbfd('0x8')][_0xcbfd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x9db9d8,_0x2152b4,_0x53b120){return new BPromise(function(_0x48272e,_0x263036){return client[_0xcbfd('0xa')](_0x9db9d8,_0x53b120)[_0xcbfd('0xb')](function(_0xb420b9){logger[_0xcbfd('0xc')](_0xcbfd('0xd'),_0x2152b4,'request\x20sent');logger['debug'](_0xcbfd('0xe'),_0x2152b4,_0xcbfd('0xf'),JSON[_0xcbfd('0x10')](_0xb420b9));if(_0xb420b9['error']){if(_0xb420b9[_0xcbfd('0x11')]['code']===0x1f4){logger[_0xcbfd('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x2152b4,_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);return _0x263036(_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);}logger[_0xcbfd('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x2152b4,_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);return _0x48272e(_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);}else{logger[_0xcbfd('0xc')](_0xcbfd('0xd'),_0x2152b4,'request\x20sent');_0x48272e(_0xb420b9[_0xcbfd('0x13')]['message']);}})[_0xcbfd('0x14')](function(_0x303b9a){logger[_0xcbfd('0x11')](_0xcbfd('0xd'),_0x2152b4,_0x303b9a);_0x263036(_0x303b9a);});});}exports[_0xcbfd('0x15')]=function(_0x133f58){var _0x57c36c=this;return new Promise(function(_0x3e495a,_0x155e72){return db['ReportAgentPreview']['create'](_0x133f58['body'],{'raw':_0x133f58['options']?_0x133f58['options'][_0xcbfd('0x16')]===undefined?!![]:![]:!![]})[_0xcbfd('0xb')](function(_0x4075c1){logger[_0xcbfd('0xc')](_0xcbfd('0x15'),_0x133f58);logger[_0xcbfd('0x17')](_0xcbfd('0x15'),_0x133f58,JSON[_0xcbfd('0x10')](_0x4075c1));_0x3e495a(_0x4075c1);})[_0xcbfd('0x14')](function(_0x173e0c){logger[_0xcbfd('0x11')](_0xcbfd('0x15'),_0x173e0c[_0xcbfd('0x12')],_0x133f58);_0x155e72(_0x57c36c[_0xcbfd('0x11')](0x1f4,_0x173e0c[_0xcbfd('0x12')]));});});};
\ No newline at end of file
index 549c31e..43e9201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c4a=['voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','showFaxQueues','openchannel','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','get','/voice/channels','isAuthenticated','voiceChannels','voiceChannelMixMonitor'];(function(_0x15c8d1,_0x40ba32){var _0x262c5c=function(_0x1f9611){while(--_0x1f9611){_0x15c8d1['push'](_0x15c8d1['shift']());}};_0x262c5c(++_0x40ba32);}(_0x7c4a,0xf1));var _0xa7c4=function(_0x234341,_0x1f0568){_0x234341=_0x234341-0x0;var _0x2fd6e9=_0x7c4a[_0x234341];return _0x2fd6e9;};'use strict';var multer=require(_0xa7c4('0x0'));var util=require(_0xa7c4('0x1'));var path=require(_0xa7c4('0x2'));var express=require(_0xa7c4('0x3'));var router=express[_0xa7c4('0x4')]();var auth=require(_0xa7c4('0x5'));var controller=require('./rpc.controller');router[_0xa7c4('0x6')](_0xa7c4('0x7'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x9')]);router[_0xa7c4('0x6')]('/voice/channels/:uniqueid/mixmonitor',auth[_0xa7c4('0x8')](),controller[_0xa7c4('0xa')]);router[_0xa7c4('0x6')]('/voice/channels/:uniqueid/stopmixmonitor',auth[_0xa7c4('0x8')](),controller[_0xa7c4('0xb')]);router[_0xa7c4('0x6')](_0xa7c4('0xc'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0xd')]);router[_0xa7c4('0x6')]('/chat/queues',auth['isAuthenticated'](),controller[_0xa7c4('0xe')]);router[_0xa7c4('0x6')](_0xa7c4('0xf'),auth[_0xa7c4('0x8')](),controller['mailQueues']);router[_0xa7c4('0x6')](_0xa7c4('0x10'),auth[_0xa7c4('0x8')](),controller['mailAccounts']);router[_0xa7c4('0x6')](_0xa7c4('0x11'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x12')]);router['get'](_0xa7c4('0x13'),auth['isAuthenticated'](),controller[_0xa7c4('0x14')]);router[_0xa7c4('0x6')](_0xa7c4('0x15'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x16')]);router[_0xa7c4('0x6')](_0xa7c4('0x17'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x18')]);router[_0xa7c4('0x6')](_0xa7c4('0x19'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x1a')]);router[_0xa7c4('0x6')](_0xa7c4('0x1b'),auth[_0xa7c4('0x8')](),controller['voiceQueuesChannels']);router[_0xa7c4('0x6')](_0xa7c4('0x1c'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x1d')]);router['get'](_0xa7c4('0x1e'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x1f')]);router[_0xa7c4('0x6')](_0xa7c4('0x20'),auth['isAuthenticated'](),controller[_0xa7c4('0x21')]);router['get'](_0xa7c4('0x22'),auth['isAuthenticated'](),controller[_0xa7c4('0x23')]);router[_0xa7c4('0x24')](_0xa7c4('0x22'),auth[_0xa7c4('0x8')](),controller['updateVoiceQueue']);router[_0xa7c4('0x6')]('/outbound',auth[_0xa7c4('0x8')](),controller['outbound']);router[_0xa7c4('0x6')](_0xa7c4('0x25'),auth['isAuthenticated'](),controller[_0xa7c4('0x26')]);router['get'](_0xa7c4('0x27'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x28')]);router[_0xa7c4('0x24')](_0xa7c4('0x29'),auth['isAuthenticated'](),controller[_0xa7c4('0x2a')]);router[_0xa7c4('0x6')](_0xa7c4('0x2b'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x2c')]);router[_0xa7c4('0x6')](_0xa7c4('0x2d'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x2e')]);router[_0xa7c4('0x6')](_0xa7c4('0x2f'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x30')]);router[_0xa7c4('0x6')](_0xa7c4('0x31'),auth[_0xa7c4('0x8')](),controller['faxAccounts']);router['get'](_0xa7c4('0x32'),auth['isAuthenticated'](),controller['chatQueuesWaitingInteractions']);router[_0xa7c4('0x6')](_0xa7c4('0x33'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x34')]);router['get'](_0xa7c4('0x35'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x36')]);router[_0xa7c4('0x6')](_0xa7c4('0x37'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x38')]);router[_0xa7c4('0x6')]('/sms/queues/waitinginteractions',auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x39')]);router[_0xa7c4('0x6')](_0xa7c4('0x3a'),auth['isAuthenticated'](),controller[_0xa7c4('0x3b')]);router[_0xa7c4('0x6')]('/fax/queues/waitinginteractions',auth['isAuthenticated'](),controller['faxQueuesWaitingInteractions']);router[_0xa7c4('0x3c')](_0xa7c4('0x3d'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x3e')](_0xa7c4('0x3f')));router[_0xa7c4('0x6')](_0xa7c4('0x40'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x41')]);router[_0xa7c4('0x3c')]('/chat/queues/:id/notify',auth[_0xa7c4('0x8')](),controller['queueNotify'](_0xa7c4('0x42')));router[_0xa7c4('0x6')](_0xa7c4('0x43'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x44')]);router[_0xa7c4('0x3c')](_0xa7c4('0x45'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x3e')](_0xa7c4('0x46')));router['get']('/fax/queues/:id',auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x47')]);router[_0xa7c4('0x3c')]('/openchannel/queues/:id/notify',auth['isAuthenticated'](),controller[_0xa7c4('0x3e')](_0xa7c4('0x48')));router['get']('/openchannel/queues/:id',auth[_0xa7c4('0x8')](),controller['showOpenchannelQueues']);router[_0xa7c4('0x3c')](_0xa7c4('0x49'),auth[_0xa7c4('0x8')](),controller['queueNotify'](_0xa7c4('0x4a')));router['post'](_0xa7c4('0x4b'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x3e')](_0xa7c4('0x4c')));router[_0xa7c4('0x6')](_0xa7c4('0x4d'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x4e')]);router[_0xa7c4('0x6')](_0xa7c4('0x4f'),auth['isAuthenticated'](),controller[_0xa7c4('0x50')]);router[_0xa7c4('0x3c')](_0xa7c4('0x51'),auth[_0xa7c4('0x8')](),controller[_0xa7c4('0x52')]);module[_0xa7c4('0x53')]=router;
\ No newline at end of file
+var _0xa39b=['/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','queueNotify','mail','/mail/queues/:id','showMailQueues','post','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','exports','multer','util','path','Router','../../components/auth/service','/voice/channels','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','isAuthenticated','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','/outbound/channels','outboundChannels','agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0xa39b,0x19e));var _0xba39=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xa39b[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xba39('0x0'));var util=require(_0xba39('0x1'));var path=require(_0xba39('0x2'));var express=require('express');var router=express[_0xba39('0x3')]();var auth=require(_0xba39('0x4'));var controller=require('./rpc.controller');router['get'](_0xba39('0x5'),auth['isAuthenticated'](),controller[_0xba39('0x6')]);router[_0xba39('0x7')](_0xba39('0x8'),auth['isAuthenticated'](),controller[_0xba39('0x9')]);router['get'](_0xba39('0xa'),auth['isAuthenticated'](),controller[_0xba39('0xb')]);router['get']('/voice/queues',auth[_0xba39('0xc')](),controller[_0xba39('0xd')]);router['get'](_0xba39('0xe'),auth['isAuthenticated'](),controller[_0xba39('0xf')]);router[_0xba39('0x7')](_0xba39('0x10'),auth[_0xba39('0xc')](),controller[_0xba39('0x11')]);router[_0xba39('0x7')](_0xba39('0x12'),auth['isAuthenticated'](),controller['mailAccounts']);router[_0xba39('0x7')](_0xba39('0x13'),auth[_0xba39('0xc')](),controller[_0xba39('0x14')]);router['get'](_0xba39('0x15'),auth[_0xba39('0xc')](),controller[_0xba39('0x16')]);router[_0xba39('0x7')](_0xba39('0x17'),auth[_0xba39('0xc')](),controller['whatsappQueues']);router[_0xba39('0x7')](_0xba39('0x18'),auth[_0xba39('0xc')](),controller[_0xba39('0x19')]);router[_0xba39('0x7')](_0xba39('0x1a'),auth[_0xba39('0xc')](),controller[_0xba39('0x1b')]);router[_0xba39('0x7')](_0xba39('0x1c'),auth[_0xba39('0xc')](),controller['voiceQueuesChannels']);router[_0xba39('0x7')](_0xba39('0x1d'),auth[_0xba39('0xc')](),controller[_0xba39('0x1e')]);router['get']('/voice/queues/channels/:uniqueid/hangup',auth[_0xba39('0xc')](),controller['voiceQueuesChannelHangup']);router['get'](_0xba39('0x1f'),auth['isAuthenticated'](),controller['voiceQueuesChannelRedirect']);router['get'](_0xba39('0x20'),auth['isAuthenticated'](),controller[_0xba39('0x21')]);router[_0xba39('0x22')](_0xba39('0x20'),auth[_0xba39('0xc')](),controller[_0xba39('0x23')]);router[_0xba39('0x7')]('/outbound',auth['isAuthenticated'](),controller[_0xba39('0x24')]);router[_0xba39('0x7')](_0xba39('0x25'),auth[_0xba39('0xc')](),controller[_0xba39('0x26')]);router[_0xba39('0x7')]('/agents',auth[_0xba39('0xc')](),controller[_0xba39('0x27')]);router[_0xba39('0x22')](_0xba39('0x28'),auth[_0xba39('0xc')](),controller[_0xba39('0x29')]);router[_0xba39('0x7')](_0xba39('0x2a'),auth[_0xba39('0xc')](),controller['telephones']);router[_0xba39('0x7')](_0xba39('0x2b'),auth[_0xba39('0xc')](),controller[_0xba39('0x2c')]);router[_0xba39('0x7')](_0xba39('0x2d'),auth[_0xba39('0xc')](),controller[_0xba39('0x2e')]);router[_0xba39('0x7')](_0xba39('0x2f'),auth[_0xba39('0xc')](),controller[_0xba39('0x30')]);router['get'](_0xba39('0x31'),auth[_0xba39('0xc')](),controller['chatQueuesWaitingInteractions']);router[_0xba39('0x7')](_0xba39('0x32'),auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router[_0xba39('0x7')](_0xba39('0x33'),auth[_0xba39('0xc')](),controller[_0xba39('0x34')]);router[_0xba39('0x7')]('/openchannel/queues/:id/waitinginteractions',auth[_0xba39('0xc')](),controller[_0xba39('0x35')]);router[_0xba39('0x7')](_0xba39('0x36'),auth[_0xba39('0xc')](),controller[_0xba39('0x37')]);router['get']('/whatsapp/queues/waitinginteractions',auth[_0xba39('0xc')](),controller[_0xba39('0x38')]);router[_0xba39('0x7')](_0xba39('0x39'),auth[_0xba39('0xc')](),controller[_0xba39('0x3a')]);router['post']('/mail/queues/:id/notify',auth[_0xba39('0xc')](),controller[_0xba39('0x3b')](_0xba39('0x3c')));router[_0xba39('0x7')](_0xba39('0x3d'),auth[_0xba39('0xc')](),controller[_0xba39('0x3e')]);router[_0xba39('0x3f')]('/chat/queues/:id/notify',auth[_0xba39('0xc')](),controller['queueNotify']('chat'));router[_0xba39('0x7')]('/chat/queues/:id',auth['isAuthenticated'](),controller[_0xba39('0x40')]);router['post'](_0xba39('0x41'),auth['isAuthenticated'](),controller[_0xba39('0x3b')]('fax'));router['get'](_0xba39('0x42'),auth[_0xba39('0xc')](),controller['showFaxQueues']);router[_0xba39('0x3f')](_0xba39('0x43'),auth[_0xba39('0xc')](),controller[_0xba39('0x3b')](_0xba39('0x44')));router[_0xba39('0x7')](_0xba39('0x45'),auth[_0xba39('0xc')](),controller[_0xba39('0x46')]);router[_0xba39('0x3f')]('/sms/queues/:id/notify',auth[_0xba39('0xc')](),controller[_0xba39('0x3b')](_0xba39('0x47')));router[_0xba39('0x3f')](_0xba39('0x48'),auth[_0xba39('0xc')](),controller[_0xba39('0x3b')]('whatsapp'));router[_0xba39('0x7')](_0xba39('0x49'),auth[_0xba39('0xc')](),controller[_0xba39('0x4a')]);router[_0xba39('0x7')](_0xba39('0x4b'),auth[_0xba39('0xc')](),controller[_0xba39('0x4c')]);router[_0xba39('0x3f')]('/agents/:id/notify',auth[_0xba39('0xc')](),controller['agentNotify']);module[_0xba39('0x4d')]=router;
\ No newline at end of file
index 588b57f..ef71ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['YYYY-MM-DD\x20HH:mm:ss','agent','AgentCapacity','capacity','telephones','Telephones','trunks','campaigns','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','SmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','messageId','Interaction','update','queue','InteractionId','From','QueueId','TransferReport','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','\x20Message\x20not\x20found','bluebird','moment','lodash','util','../../config/logger','api','jayson/promise','client','http','request','then','error','message','result','status','sendStatus','stack','name','send','isNil','find','rows','VoiceChannels','query','catch','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','user','interaction','hasOwnProperty','MemberReport','INTERACTION','length','format','SIP/%s','interface'];(function(_0x3bffc5,_0x288950){var _0x1b666b=function(_0x480698){while(--_0x480698){_0x3bffc5['push'](_0x3bffc5['shift']());}};_0x1b666b(++_0x288950);}(_0xeec6,0x1c2));var _0x6eec=function(_0x5e42a7,_0x3eba35){_0x5e42a7=_0x5e42a7-0x0;var _0x36d21b=_0xeec6[_0x5e42a7];return _0x36d21b;};'use strict';var BPromise=require(_0x6eec('0x0'));var moment=require(_0x6eec('0x1'));var _=require(_0x6eec('0x2'));var util=require(_0x6eec('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x6eec('0x4'))(_0x6eec('0x5'));var jayson=require(_0x6eec('0x6'));var amiClient=jayson[_0x6eec('0x7')][_0x6eec('0x8')]({'port':0x232a});var mailClient=jayson[_0x6eec('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0x6eec('0x7')][_0x6eec('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x48064a,_0x5a5e47,_0x1c810e){return new BPromise(function(_0x3443c2,_0x834c2){var _0x56e849=_0x1c810e?_0x1c810e:amiClient;return _0x56e849[_0x6eec('0x9')](_0x48064a,_0x5a5e47)[_0x6eec('0xa')](function(_0x1c774d){if(_0x1c774d['error']){if(_0x1c774d['error']['code']===0x1f4){return _0x834c2(_0x1c774d[_0x6eec('0xb')][_0x6eec('0xc')]);}return _0x3443c2(_0x1c774d['error']['message']);}else{_0x3443c2(_0x1c774d[_0x6eec('0xd')]);}})['catch'](function(_0x3091d0){_0x834c2(_0x3091d0);});});}function respondWithResult(_0x3387c2,_0x162db1){_0x162db1=_0x162db1||0xc8;return function(_0x3fe94b){if(_0x3fe94b){return _0x3387c2[_0x6eec('0xe')](_0x162db1)['json'](_0x3fe94b);}return _0x3387c2[_0x6eec('0xf')](0x194);};}function handleError(_0x3b2972,_0x462dbb){_0x462dbb=_0x462dbb||0x1f4;return function(_0xc35914){logger[_0x6eec('0xb')](_0xc35914[_0x6eec('0x10')]);if(_0xc35914[_0x6eec('0x11')]){delete _0xc35914[_0x6eec('0x11')];}_0x3b2972[_0x6eec('0xe')](_0x462dbb)[_0x6eec('0x12')](_0xc35914);};}function findById(_0x5e2a9b){return function(_0x3c0c1b){if(!_['isNil'](_0x5e2a9b)&&!_[_0x6eec('0x13')](_0x3c0c1b)&&!_[_0x6eec('0x13')](_0x3c0c1b['rows'])){return _[_0x6eec('0x14')](_0x3c0c1b[_0x6eec('0x15')],function(_0xb1eab7){return _0xb1eab7['id']==_0x5e2a9b;});}return null;};}exports['voiceChannels']=function(_0x87f3be,_0x1ed94c){return respondWithRpcPromise(_0x6eec('0x16'),_0x87f3be[_0x6eec('0x17')])[_0x6eec('0xa')](respondWithResult(_0x1ed94c,null))[_0x6eec('0x18')](handleError(_0x1ed94c,null));};exports['voiceChannelMixMonitor']=function(_0x328693,_0x2f843e){return respondWithRpcPromise(_0x6eec('0x19'),_[_0x6eec('0x1a')](_0x328693[_0x6eec('0x17')],_0x328693[_0x6eec('0x1b')]))['then'](respondWithResult(_0x2f843e,null))[_0x6eec('0x18')](handleError(_0x2f843e,null));};exports[_0x6eec('0x1c')]=function(_0x285d41,_0x27785a){return respondWithRpcPromise(_0x6eec('0x1d'),_[_0x6eec('0x1a')](_0x285d41['query'],_0x285d41[_0x6eec('0x1b')]))[_0x6eec('0xa')](respondWithResult(_0x27785a,null))[_0x6eec('0x18')](handleError(_0x27785a,null));};exports[_0x6eec('0x1e')]=function(_0x1d2be9,_0x1f386c){return respondWithRpcPromise(_0x6eec('0x1f'),_0x1d2be9[_0x6eec('0x17')])[_0x6eec('0xa')](respondWithResult(_0x1f386c,null))['catch'](handleError(_0x1f386c,null));};exports[_0x6eec('0x20')]=function(_0x44b31c,_0x30eb98){return respondWithRpcPromise(_0x6eec('0x1f'),_0x44b31c['query'])[_0x6eec('0xa')](findById(_0x44b31c[_0x6eec('0x1b')]['id']))['then'](respondWithResult(_0x30eb98,null))['catch'](handleError(_0x30eb98,null));};exports[_0x6eec('0x21')]=function(_0x47ed95,_0x20a130){return respondWithRpcPromise(_0x6eec('0x22'),_[_0x6eec('0x1a')](_0x47ed95[_0x6eec('0x23')],_0x47ed95[_0x6eec('0x1b')]))[_0x6eec('0xa')](respondWithResult(_0x20a130,null))[_0x6eec('0x18')](handleError(_0x20a130,null));};exports[_0x6eec('0x24')]=function(_0x1abd19,_0x414f5b){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x6eec('0x1a')](_0x1abd19['query'],_0x1abd19[_0x6eec('0x1b')]))[_0x6eec('0xa')](respondWithResult(_0x414f5b,null))[_0x6eec('0x18')](handleError(_0x414f5b,null));};exports['voiceQueuesChannels']=function(_0x57b40b,_0x508735){return respondWithRpcPromise(_0x6eec('0x25'),_0x57b40b[_0x6eec('0x17')])[_0x6eec('0xa')](respondWithResult(_0x508735,null))[_0x6eec('0x18')](handleError(_0x508735,null));};exports[_0x6eec('0x26')]=function(_0x23547d,_0x22e0cb){return respondWithRpcPromise(_0x6eec('0x27'),_[_0x6eec('0x1a')](_0x23547d[_0x6eec('0x17')],_0x23547d[_0x6eec('0x1b')]))[_0x6eec('0xa')](respondWithResult(_0x22e0cb,null))['catch'](handleError(_0x22e0cb,null));};exports[_0x6eec('0x28')]=function(_0x361ab7,_0x2c83d1){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x6eec('0x1a')](_0x361ab7[_0x6eec('0x17')],_0x361ab7[_0x6eec('0x1b')]))[_0x6eec('0xa')](respondWithResult(_0x2c83d1,null))[_0x6eec('0x18')](handleError(_0x2c83d1,null));};exports[_0x6eec('0x29')]=function(_0x4a7699,_0x45cfb6){return respondWithRpcPromise(_0x6eec('0x2a'),_[_0x6eec('0x1a')](_0x4a7699['query'],_0x4a7699['params']))[_0x6eec('0xa')](respondWithResult(_0x45cfb6,null))[_0x6eec('0x18')](handleError(_0x45cfb6,null));};exports[_0x6eec('0x2b')]=function(_0x3f79d1,_0x402bac){return respondWithRpcPromise('Outbound',_0x3f79d1[_0x6eec('0x17')])[_0x6eec('0xa')](respondWithResult(_0x402bac,null))[_0x6eec('0x18')](handleError(_0x402bac,null));};exports[_0x6eec('0x2c')]=function(_0x15918c,_0x2be999){return respondWithRpcPromise(_0x6eec('0x2d'),_0x15918c[_0x6eec('0x17')])['then'](respondWithResult(_0x2be999,null))[_0x6eec('0x18')](handleError(_0x2be999,null));};exports[_0x6eec('0x2e')]=function(_0x4d30c9,_0x5b3283){var _0x160fc0;return respondWithRpcPromise(_0x6eec('0x2f'),_0x4d30c9[_0x6eec('0x17')])[_0x6eec('0xa')](function(_0x4cb50e){_0x160fc0=_0x4cb50e;return respondWithRpcPromise('Agents',_0x4d30c9[_0x6eec('0x17')],routingClient);})['then'](function(_0x5ac8b2){return _[_0x6eec('0x1a')]({},_0x5ac8b2,_0x160fc0);})[_0x6eec('0xa')](respondWithResult(_0x5b3283,null))[_0x6eec('0x18')](handleError(_0x5b3283,null));};exports[_0x6eec('0x30')]=function(_0x25d3f3,_0x58dfe7){if(_0x25d3f3[_0x6eec('0x23')]&&_0x25d3f3[_0x6eec('0x23')]['interaction']&&_0x25d3f3[_0x6eec('0x31')]&&_0x25d3f3[_0x6eec('0x31')]['name']){for(var _0x2d39bf in _0x25d3f3[_0x6eec('0x23')]['interaction']){if(_0x25d3f3[_0x6eec('0x23')][_0x6eec('0x32')][_0x6eec('0x33')](_0x2d39bf)){db[_0x6eec('0x34')]['findAll']({'where':{'channel':_0x2d39bf,'membername':_0x25d3f3[_0x6eec('0x31')][_0x6eec('0x11')],'type':_0x6eec('0x35'),'exitAt':null,'uniqueid':_0x25d3f3[_0x6eec('0x23')][_0x6eec('0x32')][_0x2d39bf]&&_0x25d3f3['body']['interaction'][_0x2d39bf][_0x6eec('0x36')]?{'$notIn':_0x25d3f3[_0x6eec('0x23')][_0x6eec('0x32')][_0x2d39bf]}:{'$ne':null}}})[_0x6eec('0xa')](function(_0x44c7b8){var _0x59d7a7=moment()[_0x6eec('0x37')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x20524a=0x0,_0x408295=_0x44c7b8[_0x6eec('0x36')];_0x20524a<_0x408295;_0x20524a+=0x1){_0x44c7b8[_0x20524a]['updateAttributes']({'exitAt':_0x59d7a7});}});for(var _0x2b83f2=0x0;_0x2b83f2<_0x25d3f3[_0x6eec('0x23')][_0x6eec('0x32')][_0x2d39bf][_0x6eec('0x36')];_0x2b83f2+=0x1){db[_0x6eec('0x34')]['findOrCreate']({'where':{'channel':_0x2d39bf,'membername':_0x25d3f3[_0x6eec('0x31')]['name'],'type':'INTERACTION','uniqueid':_0x25d3f3[_0x6eec('0x23')]['interaction'][_0x2d39bf][_0x2b83f2],'exitAt':null},'defaults':{'channel':_0x2d39bf,'membername':_0x25d3f3[_0x6eec('0x31')][_0x6eec('0x11')],'interface':_[_0x6eec('0x13')](_0x25d3f3['user']['interface'])?util[_0x6eec('0x37')](_0x6eec('0x38'),_0x25d3f3[_0x6eec('0x31')][_0x6eec('0x11')]):_0x25d3f3[_0x6eec('0x31')][_0x6eec('0x39')],'type':_0x6eec('0x35'),'enterAt':moment()[_0x6eec('0x37')](_0x6eec('0x3a')),'role':_0x6eec('0x3b'),'internal':_0x25d3f3['user']['internal'],'uniqueid':_0x25d3f3[_0x6eec('0x23')][_0x6eec('0x32')][_0x2d39bf][_0x2b83f2]}});}}}}return respondWithRpcPromise(_0x6eec('0x3c'),{'id':_0x25d3f3['params']['id'],'capacity':_0x25d3f3[_0x6eec('0x23')][_0x6eec('0x3d')]},routingClient)[_0x6eec('0xa')](respondWithResult(_0x58dfe7,null))[_0x6eec('0x18')](handleError(_0x58dfe7,null));};exports[_0x6eec('0x3e')]=function(_0x43f77a,_0x10c10a){return respondWithRpcPromise(_0x6eec('0x3f'),_0x43f77a['query'])[_0x6eec('0xa')](respondWithResult(_0x10c10a,null))[_0x6eec('0x18')](handleError(_0x10c10a,null));};exports[_0x6eec('0x40')]=function(_0x3e77f3,_0x490d27){return respondWithRpcPromise('Trunks',_0x3e77f3['query'])[_0x6eec('0xa')](respondWithResult(_0x490d27,null))[_0x6eec('0x18')](handleError(_0x490d27,null));};exports[_0x6eec('0x41')]=function(_0x1de626,_0x5178f5){return respondWithRpcPromise('Campaigns',_0x1de626[_0x6eec('0x17')])[_0x6eec('0xa')](respondWithResult(_0x5178f5,null))[_0x6eec('0x18')](handleError(_0x5178f5,null));};exports['chatQueues']=function(_0x238605,_0x35f411){return respondWithRpcPromise(_0x6eec('0x42'),_0x238605[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](respondWithResult(_0x35f411,null))[_0x6eec('0x18')](handleError(_0x35f411,null));};exports[_0x6eec('0x43')]=function(_0x19fe55,_0x45fed3){return respondWithRpcPromise('ChatQueues',_0x19fe55[_0x6eec('0x17')],routingClient)['then'](findById(_0x19fe55[_0x6eec('0x1b')]['id']))[_0x6eec('0xa')](respondWithResult(_0x45fed3,null))[_0x6eec('0x18')](handleError(_0x45fed3,null));};exports[_0x6eec('0x44')]=function(_0x248d76,_0x360176){return respondWithRpcPromise(_0x6eec('0x45'),_0x248d76['query'],routingClient)[_0x6eec('0xa')](respondWithResult(_0x360176,null))['catch'](handleError(_0x360176,null));};exports[_0x6eec('0x46')]=function(_0x5c905f,_0x237324){return respondWithRpcPromise(_0x6eec('0x45'),_0x5c905f[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](findById(_0x5c905f[_0x6eec('0x1b')]['id']))[_0x6eec('0xa')](respondWithResult(_0x237324,null))[_0x6eec('0x18')](handleError(_0x237324,null));};exports[_0x6eec('0x47')]=function(_0x130002,_0x4114d1){return respondWithRpcPromise('MailAccounts',_0x130002['query'],mailClient)[_0x6eec('0xa')](respondWithResult(_0x4114d1,null))[_0x6eec('0x18')](handleError(_0x4114d1,null));};exports[_0x6eec('0x48')]=function(_0x2c0644,_0x20b040){return respondWithRpcPromise('OpenchannelQueues',_0x2c0644[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](respondWithResult(_0x20b040,null))['catch'](handleError(_0x20b040,null));};exports['showOpenchannelQueues']=function(_0x5dc8b3,_0xaa2a15){return respondWithRpcPromise(_0x6eec('0x49'),_0x5dc8b3['query'],routingClient)[_0x6eec('0xa')](findById(_0x5dc8b3[_0x6eec('0x1b')]['id']))['then'](respondWithResult(_0xaa2a15,null))[_0x6eec('0x18')](handleError(_0xaa2a15,null));};exports[_0x6eec('0x4a')]=function(_0xc852b3,_0x3c1f77){return respondWithRpcPromise('SmsQueues',_0xc852b3['query'],routingClient)[_0x6eec('0xa')](respondWithResult(_0x3c1f77,null))[_0x6eec('0x18')](handleError(_0x3c1f77,null));};exports[_0x6eec('0x4b')]=function(_0x19ca46,_0x34c4b4){return respondWithRpcPromise(_0x6eec('0x4c'),_0x19ca46[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](findById(_0x19ca46[_0x6eec('0x1b')]['id']))[_0x6eec('0xa')](respondWithResult(_0x34c4b4,null))[_0x6eec('0x18')](handleError(_0x34c4b4,null));};exports[_0x6eec('0x4d')]=function(_0x2799ca,_0x386a67){return respondWithRpcPromise(_0x6eec('0x4e'),_0x2799ca[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](respondWithResult(_0x386a67,null))['catch'](handleError(_0x386a67,null));};exports[_0x6eec('0x4f')]=function(_0x2236f7,_0x48bb52){return respondWithRpcPromise(_0x6eec('0x4e'),_0x2236f7[_0x6eec('0x17')],routingClient)['then'](findById(_0x2236f7[_0x6eec('0x1b')]['id']))[_0x6eec('0xa')](respondWithResult(_0x48bb52,null))[_0x6eec('0x18')](handleError(_0x48bb52,null));};exports[_0x6eec('0x50')]=function(_0x4c73f2,_0x40a81a){return respondWithRpcPromise(_0x6eec('0x51'),_0x4c73f2[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](respondWithResult(_0x40a81a,null))[_0x6eec('0x18')](handleError(_0x40a81a,null));};exports[_0x6eec('0x52')]=function(_0x5ae0a0,_0x1ed47e){return respondWithRpcPromise('FaxQueues',_0x5ae0a0[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](findById(_0x5ae0a0[_0x6eec('0x1b')]['id']))[_0x6eec('0xa')](respondWithResult(_0x1ed47e,null))[_0x6eec('0x18')](handleError(_0x1ed47e,null));};exports[_0x6eec('0x53')]=function(_0x404b64,_0x2ea7fe){return respondWithRpcPromise(_0x6eec('0x54'),_0x404b64['query'])[_0x6eec('0xa')](respondWithResult(_0x2ea7fe,null))[_0x6eec('0x18')](handleError(_0x2ea7fe,null));};exports[_0x6eec('0x55')]=function(_0x4eef6e,_0x19f8e2){return respondWithRpcPromise(_0x6eec('0x56'),_0x4eef6e['query'],routingClient)[_0x6eec('0xa')](respondWithResult(_0x19f8e2,null))[_0x6eec('0x18')](handleError(_0x19f8e2,null));};exports[_0x6eec('0x57')]=function(_0x18e62b,_0x266689){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x18e62b[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](respondWithResult(_0x266689,null))[_0x6eec('0x18')](handleError(_0x266689,null));};exports[_0x6eec('0x58')]=function(_0x3894dc,_0x56483b){return respondWithRpcPromise(_0x6eec('0x59'),_0x3894dc[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](respondWithResult(_0x56483b,null))[_0x6eec('0x18')](handleError(_0x56483b,null));};exports[_0x6eec('0x5a')]=function(_0x232b3a,_0x7dd5d1){return respondWithRpcPromise(_0x6eec('0x59'),_0x232b3a['query'],routingClient)[_0x6eec('0xa')](function(_0x59341a){if(_0x232b3a[_0x6eec('0x17')][_0x6eec('0x5b')]!==undefined){var _0x7a7288=_(_0x59341a[_0x6eec('0x15')])['filter']([_0x232b3a[_0x6eec('0x17')]['type'],_0x232b3a[_0x6eec('0x1b')]['id']])[_0x6eec('0x5c')](_0x6eec('0x5d'))[_0x6eec('0x5e')]()['value']();return _0x59341a['rows']['filter'](function(_0x1158b1){return _0x7a7288[_0x6eec('0x5f')](_0x1158b1[_0x6eec('0x5d')])>-0x1;});}else{return _0x59341a[_0x6eec('0x15')]['filter'](function(_0x44302a){return _0x44302a['queue_id']===parseInt(_0x232b3a[_0x6eec('0x1b')]['id']);});}})[_0x6eec('0xa')](respondWithResult(_0x7dd5d1,null))['catch'](handleError(_0x7dd5d1,null));};exports[_0x6eec('0x60')]=function(_0x2f9e8a,_0x333280){return respondWithRpcPromise(_0x6eec('0x61'),_0x2f9e8a[_0x6eec('0x17')],routingClient)[_0x6eec('0xa')](respondWithResult(_0x333280,null))['catch'](handleError(_0x333280,null));};exports[_0x6eec('0x62')]=function(_0x5aa2f3,_0x64c2ef){return respondWithRpcPromise(_0x6eec('0x63'),_0x5aa2f3['query'],routingClient)[_0x6eec('0xa')](respondWithResult(_0x64c2ef,null))['catch'](handleError(_0x64c2ef,null));};exports[_0x6eec('0x64')]=function(_0x1d1683,_0x8a4166){return respondWithRpcPromise(_0x6eec('0x65'),_0x1d1683['query'],routingClient)[_0x6eec('0xa')](respondWithResult(_0x8a4166,null))['catch'](handleError(_0x8a4166,null));};exports[_0x6eec('0x66')]=function(_0x2c0a85){return function(_0x51560c,_0x3dcf9d){var _0x435562,_0x3a90cd;var _0x328f28=_[_0x6eec('0x67')](_0x2c0a85);var _0x514e15=_0x2c0a85===_0x6eec('0x68')?_0x6eec('0x69'):_0x6eec('0x6a');return db[_0x328f28+_0x6eec('0x6b')][_0x6eec('0x6c')]({'raw':!![],'where':{'id':_0x51560c[_0x6eec('0x1b')]['id']}})['then'](function(_0x4a3af3){if(_[_0x6eec('0x13')](_0x4a3af3)){throw new Error(_0x328f28+_0x6eec('0x6d'));}_0x435562=_0x4a3af3;return db[_0x328f28+'Message']['findOne']({'where':{'id':_0x51560c[_0x6eec('0x23')][_0x6eec('0x6e')]},'include':[{'model':db[_0x328f28+'Interaction'],'as':_0x6eec('0x6f')},{'model':db[_0x328f28+_0x514e15],'as':_0x6eec('0x6a')}]});})[_0x6eec('0xa')](function(_0x5042a0){if(_[_0x6eec('0x13')](_0x5042a0)){throw new Error(_0x328f28+'\x20Message\x20not\x20found');}_0x3a90cd=_0x5042a0;return _0x5042a0[_0x6eec('0x70')]({'read':0x0,'readAt':null,'UserId':null});})[_0x6eec('0xa')](function(){var _0x585432={'uniqueid':_0x2c0a85+'.'+_0x3a90cd['id']+'.'+_0x3a90cd[_0x6eec('0x6f')]['id'],'FromUserId':_0x51560c[_0x6eec('0x31')]['id'],'type':_0x6eec('0x71')};_0x585432[_0x328f28+'MessageId']=_0x3a90cd['id'];_0x585432[_0x328f28+_0x6eec('0x72')]=_0x3a90cd[_0x6eec('0x6f')]['id'];_0x585432[_0x6eec('0x73')+_0x328f28+_0x514e15+'Id']=_0x3a90cd[_0x6eec('0x6a')]['id'];_0x585432['To'+_0x328f28+_0x6eec('0x74')]=_0x435562['id'];return db[_0x328f28+_0x6eec('0x75')]['create'](_0x585432);})[_0x6eec('0xa')](function(){return respondWithRpcPromise(_0x6eec('0x76'),{'channel':_0x2c0a85,'interaction':_0x3a90cd[_0x6eec('0x6f')],'message':_0x3a90cd,'account':_0x3a90cd[_0x6eec('0x6a')],'applications':[{'id':0x0,'priority':0x1,'app':_0x6eec('0x71'),'appdata':_0x435562[_0x6eec('0x11')]+','+(_0x3a90cd[_0x6eec('0x6a')][_0x6eec('0x77')]||0x12c),'interval':_0x6eec('0x78')}]},routingClient);})[_0x6eec('0xa')](respondWithResult(_0x3dcf9d,null))[_0x6eec('0x18')](handleError(_0x3dcf9d,null));};};exports[_0x6eec('0x79')]=function(_0x56043a,_0x1419e0){var _0x1d6604,_0x10fad1;if(_[_0x6eec('0x13')](_0x56043a[_0x6eec('0x23')][_0x6eec('0x7a')])){throw new Error(_0x6eec('0x7b'));}var _0xa94ada=_0x56043a[_0x6eec('0x23')][_0x6eec('0x7a')];var _0xaddba4=_[_0x6eec('0x67')](_0xa94ada);var _0x89aace=_0xa94ada===_0x6eec('0x68')?_0x6eec('0x69'):'Account';return db[_0x6eec('0x7c')]['findOne']({'raw':!![],'where':{'id':_0x56043a[_0x6eec('0x1b')]['id'],'role':_0x6eec('0x3b')}})[_0x6eec('0xa')](function(_0x2607ca){if(_['isNil'](_0x2607ca)){throw new Error(_0x6eec('0x7d'));}_0x1d6604=_0x2607ca;return db[_0xaddba4+'Message'][_0x6eec('0x6c')]({'where':{'id':_0x56043a[_0x6eec('0x23')][_0x6eec('0x6e')]},'include':[{'model':db[_0xaddba4+_0x6eec('0x6f')],'as':_0x6eec('0x6f')},{'model':db[_0xaddba4+_0x89aace],'as':_0x6eec('0x6a')}]});})['then'](function(_0x2888f4){if(_[_0x6eec('0x13')](_0x2888f4)){throw new Error(_0xaddba4+_0x6eec('0x7e'));}_0x10fad1=_0x2888f4;return _0x2888f4[_0x6eec('0x70')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x5229db={'uniqueid':_0xa94ada+'.'+_0x10fad1['id']+'.'+_0x10fad1[_0x6eec('0x6f')]['id'],'FromUserId':_0x56043a[_0x6eec('0x31')]['id'],'type':'queue','ToUserId':_0x1d6604['id']};_0x5229db[_0xaddba4+'MessageId']=_0x10fad1['id'];_0x5229db[_0xaddba4+_0x6eec('0x72')]=_0x10fad1[_0x6eec('0x6f')]['id'];_0x5229db['From'+_0xaddba4+_0x89aace+'Id']=_0x10fad1[_0x6eec('0x6a')]['id'];return db[_0xaddba4+_0x6eec('0x75')]['create'](_0x5229db);})[_0x6eec('0xa')](function(){return respondWithRpcPromise(_0x6eec('0x76'),{'channel':_0xa94ada,'interaction':_0x10fad1[_0x6eec('0x6f')],'message':_0x10fad1,'account':_0x10fad1['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x1d6604['name']+','+(_0x10fad1[_0x6eec('0x6a')]['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x6eec('0xa')](respondWithResult(_0x1419e0,null))['catch'](handleError(_0x1419e0,null));};
\ No newline at end of file
+var _0x8ef6=['name','send','isNil','find','rows','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','query','params','VoiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','interface','SIP/%s','INTERACTION','agent','internal','AgentCapacity','telephones','trunks','Trunks','campaigns','chatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','queue_id','value','filter','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','MessageId','InteractionId','From','QueueId','create','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','Website','User','Agent\x20not\x20found','TransferReport','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','then','error','code','message','catch','status','sendStatus','stack'];(function(_0x21e59d,_0x3dc1bc){var _0x2121c7=function(_0x1ea226){while(--_0x1ea226){_0x21e59d['push'](_0x21e59d['shift']());}};_0x2121c7(++_0x3dc1bc);}(_0x8ef6,0xf2));var _0x68ef=function(_0x1e4b76,_0x50c7c3){_0x1e4b76=_0x1e4b76-0x0;var _0x465e18=_0x8ef6[_0x1e4b76];return _0x465e18;};'use strict';var BPromise=require(_0x68ef('0x0'));var moment=require(_0x68ef('0x1'));var _=require(_0x68ef('0x2'));var util=require(_0x68ef('0x3'));var db=require(_0x68ef('0x4'))['db'];var logger=require(_0x68ef('0x5'))(_0x68ef('0x6'));var jayson=require('jayson/promise');var amiClient=jayson[_0x68ef('0x7')][_0x68ef('0x8')]({'port':0x232a});var mailClient=jayson[_0x68ef('0x7')][_0x68ef('0x8')]({'port':0x232b});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){var _0x31007e=_0x2de776?_0x2de776:amiClient;return _0x31007e[_0x68ef('0x9')](_0x3c2ff3,_0x4740e8)[_0x68ef('0xa')](function(_0x112b18){if(_0x112b18[_0x68ef('0xb')]){if(_0x112b18[_0x68ef('0xb')][_0x68ef('0xc')]===0x1f4){return _0x228967(_0x112b18[_0x68ef('0xb')][_0x68ef('0xd')]);}return _0x4eb5eb(_0x112b18[_0x68ef('0xb')][_0x68ef('0xd')]);}else{_0x4eb5eb(_0x112b18['result']);}})[_0x68ef('0xe')](function(_0x46356f){_0x228967(_0x46356f);});});}function respondWithResult(_0x1e117a,_0x454ef4){_0x454ef4=_0x454ef4||0xc8;return function(_0x40f253){if(_0x40f253){return _0x1e117a[_0x68ef('0xf')](_0x454ef4)['json'](_0x40f253);}return _0x1e117a[_0x68ef('0x10')](0x194);};}function handleError(_0xc50cce,_0x2657c5){_0x2657c5=_0x2657c5||0x1f4;return function(_0x47fbb5){logger[_0x68ef('0xb')](_0x47fbb5[_0x68ef('0x11')]);if(_0x47fbb5[_0x68ef('0x12')]){delete _0x47fbb5['name'];}_0xc50cce[_0x68ef('0xf')](_0x2657c5)[_0x68ef('0x13')](_0x47fbb5);};}function findById(_0x3d1e90){return function(_0x3780a4){if(!_['isNil'](_0x3d1e90)&&!_[_0x68ef('0x14')](_0x3780a4)&&!_['isNil'](_0x3780a4['rows'])){return _[_0x68ef('0x15')](_0x3780a4[_0x68ef('0x16')],function(_0x4ade0d){return _0x4ade0d['id']==_0x3d1e90;});}return null;};}exports['voiceChannels']=function(_0x3c4c1f,_0x2cd92c){return respondWithRpcPromise(_0x68ef('0x17'),_0x3c4c1f['query'])[_0x68ef('0xa')](respondWithResult(_0x2cd92c,null))[_0x68ef('0xe')](handleError(_0x2cd92c,null));};exports[_0x68ef('0x18')]=function(_0x5b246b,_0x3c46d4){return respondWithRpcPromise(_0x68ef('0x19'),_['merge'](_0x5b246b[_0x68ef('0x1a')],_0x5b246b[_0x68ef('0x1b')]))[_0x68ef('0xa')](respondWithResult(_0x3c46d4,null))['catch'](handleError(_0x3c46d4,null));};exports['voiceChannelStopMixMonitor']=function(_0x59bebc,_0x26018d){return respondWithRpcPromise(_0x68ef('0x1c'),_[_0x68ef('0x1d')](_0x59bebc[_0x68ef('0x1a')],_0x59bebc[_0x68ef('0x1b')]))[_0x68ef('0xa')](respondWithResult(_0x26018d,null))[_0x68ef('0xe')](handleError(_0x26018d,null));};exports[_0x68ef('0x1e')]=function(_0x65fd09,_0x13280b){return respondWithRpcPromise('VoiceQueues',_0x65fd09[_0x68ef('0x1a')])['then'](respondWithResult(_0x13280b,null))['catch'](handleError(_0x13280b,null));};exports['showVoiceQueues']=function(_0x1a7ce1,_0x268f32){return respondWithRpcPromise(_0x68ef('0x1f'),_0x1a7ce1[_0x68ef('0x1a')])['then'](findById(_0x1a7ce1['params']['id']))[_0x68ef('0xa')](respondWithResult(_0x268f32,null))[_0x68ef('0xe')](handleError(_0x268f32,null));};exports[_0x68ef('0x20')]=function(_0x263b30,_0x22ef25){return respondWithRpcPromise(_0x68ef('0x21'),_[_0x68ef('0x1d')](_0x263b30[_0x68ef('0x22')],_0x263b30['params']))[_0x68ef('0xa')](respondWithResult(_0x22ef25,null))[_0x68ef('0xe')](handleError(_0x22ef25,null));};exports[_0x68ef('0x23')]=function(_0x4c25aa,_0x370a8f){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x68ef('0x1d')](_0x4c25aa[_0x68ef('0x1a')],_0x4c25aa['params']))['then'](respondWithResult(_0x370a8f,null))[_0x68ef('0xe')](handleError(_0x370a8f,null));};exports[_0x68ef('0x24')]=function(_0x4b8fc8,_0xf58fa1){return respondWithRpcPromise(_0x68ef('0x25'),_0x4b8fc8[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0xf58fa1,null))['catch'](handleError(_0xf58fa1,null));};exports[_0x68ef('0x26')]=function(_0x1d69ac,_0x5f137b){return respondWithRpcPromise(_0x68ef('0x27'),_['merge'](_0x1d69ac[_0x68ef('0x1a')],_0x1d69ac[_0x68ef('0x1b')]))['then'](respondWithResult(_0x5f137b,null))[_0x68ef('0xe')](handleError(_0x5f137b,null));};exports['voiceQueuesChannelHangup']=function(_0x38c2f8,_0x575f43){return respondWithRpcPromise(_0x68ef('0x28'),_[_0x68ef('0x1d')](_0x38c2f8[_0x68ef('0x1a')],_0x38c2f8['params']))[_0x68ef('0xa')](respondWithResult(_0x575f43,null))['catch'](handleError(_0x575f43,null));};exports[_0x68ef('0x29')]=function(_0x4c9506,_0x474ffa){return respondWithRpcPromise(_0x68ef('0x2a'),_[_0x68ef('0x1d')](_0x4c9506[_0x68ef('0x1a')],_0x4c9506[_0x68ef('0x1b')]))[_0x68ef('0xa')](respondWithResult(_0x474ffa,null))['catch'](handleError(_0x474ffa,null));};exports[_0x68ef('0x2b')]=function(_0x15a6ab,_0x32074a){return respondWithRpcPromise('Outbound',_0x15a6ab[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x32074a,null))[_0x68ef('0xe')](handleError(_0x32074a,null));};exports['outboundChannels']=function(_0x49f260,_0x14f0fc){return respondWithRpcPromise(_0x68ef('0x2c'),_0x49f260[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x14f0fc,null))[_0x68ef('0xe')](handleError(_0x14f0fc,null));};exports[_0x68ef('0x2d')]=function(_0x41ffe0,_0x5b1246){var _0xaf7df1;return respondWithRpcPromise(_0x68ef('0x2e'),_0x41ffe0[_0x68ef('0x1a')])[_0x68ef('0xa')](function(_0x492b74){_0xaf7df1=_0x492b74;return respondWithRpcPromise(_0x68ef('0x2e'),_0x41ffe0[_0x68ef('0x1a')],routingClient);})[_0x68ef('0xa')](function(_0x410c10){return _[_0x68ef('0x1d')]({},_0x410c10,_0xaf7df1);})[_0x68ef('0xa')](respondWithResult(_0x5b1246,null))['catch'](handleError(_0x5b1246,null));};exports[_0x68ef('0x2f')]=function(_0x3f7699,_0xf5010c){if(_0x3f7699[_0x68ef('0x22')]&&_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')]&&_0x3f7699[_0x68ef('0x31')]&&_0x3f7699[_0x68ef('0x31')][_0x68ef('0x12')]){for(var _0x531096 in _0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')]){if(_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')][_0x68ef('0x32')](_0x531096)){db[_0x68ef('0x33')][_0x68ef('0x34')]({'where':{'channel':_0x531096,'membername':_0x3f7699['user'][_0x68ef('0x12')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')][_0x531096]&&_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')][_0x531096]['length']?{'$notIn':_0x3f7699[_0x68ef('0x22')]['interaction'][_0x531096]}:{'$ne':null}}})[_0x68ef('0xa')](function(_0x499423){var _0x227e36=moment()[_0x68ef('0x35')](_0x68ef('0x36'));for(var _0x5c4a66=0x0,_0x59b148=_0x499423[_0x68ef('0x37')];_0x5c4a66<_0x59b148;_0x5c4a66+=0x1){_0x499423[_0x5c4a66][_0x68ef('0x38')]({'exitAt':_0x227e36});}});for(var _0x58d72a=0x0;_0x58d72a<_0x3f7699['body']['interaction'][_0x531096][_0x68ef('0x37')];_0x58d72a+=0x1){db[_0x68ef('0x33')][_0x68ef('0x39')]({'where':{'channel':_0x531096,'membername':_0x3f7699[_0x68ef('0x31')][_0x68ef('0x12')],'type':'INTERACTION','uniqueid':_0x3f7699['body'][_0x68ef('0x30')][_0x531096][_0x58d72a],'exitAt':null},'defaults':{'channel':_0x531096,'membername':_0x3f7699[_0x68ef('0x31')][_0x68ef('0x12')],'interface':_[_0x68ef('0x14')](_0x3f7699['user'][_0x68ef('0x3a')])?util[_0x68ef('0x35')](_0x68ef('0x3b'),_0x3f7699[_0x68ef('0x31')]['name']):_0x3f7699['user'][_0x68ef('0x3a')],'type':_0x68ef('0x3c'),'enterAt':moment()['format'](_0x68ef('0x36')),'role':_0x68ef('0x3d'),'internal':_0x3f7699[_0x68ef('0x31')][_0x68ef('0x3e')],'uniqueid':_0x3f7699[_0x68ef('0x22')]['interaction'][_0x531096][_0x58d72a]}});}}}}return respondWithRpcPromise(_0x68ef('0x3f'),{'id':_0x3f7699[_0x68ef('0x1b')]['id'],'capacity':_0x3f7699[_0x68ef('0x22')]['capacity']},routingClient)[_0x68ef('0xa')](respondWithResult(_0xf5010c,null))[_0x68ef('0xe')](handleError(_0xf5010c,null));};exports[_0x68ef('0x40')]=function(_0x50ef1f,_0x7dce90){return respondWithRpcPromise('Telephones',_0x50ef1f['query'])[_0x68ef('0xa')](respondWithResult(_0x7dce90,null))['catch'](handleError(_0x7dce90,null));};exports[_0x68ef('0x41')]=function(_0xb33afd,_0x53ebd){return respondWithRpcPromise(_0x68ef('0x42'),_0xb33afd[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x53ebd,null))[_0x68ef('0xe')](handleError(_0x53ebd,null));};exports[_0x68ef('0x43')]=function(_0x2b35f4,_0x247915){return respondWithRpcPromise('Campaigns',_0x2b35f4['query'])[_0x68ef('0xa')](respondWithResult(_0x247915,null))[_0x68ef('0xe')](handleError(_0x247915,null));};exports[_0x68ef('0x44')]=function(_0xdc83f4,_0x82df12){return respondWithRpcPromise(_0x68ef('0x45'),_0xdc83f4[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x82df12,null))[_0x68ef('0xe')](handleError(_0x82df12,null));};exports['showChatQueues']=function(_0x5685bb,_0x42a4b2){return respondWithRpcPromise('ChatQueues',_0x5685bb[_0x68ef('0x1a')],routingClient)['then'](findById(_0x5685bb[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x42a4b2,null))['catch'](handleError(_0x42a4b2,null));};exports[_0x68ef('0x46')]=function(_0x4e097e,_0x407c6d){return respondWithRpcPromise(_0x68ef('0x47'),_0x4e097e[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x407c6d,null))[_0x68ef('0xe')](handleError(_0x407c6d,null));};exports[_0x68ef('0x48')]=function(_0x5c347c,_0x1cdaef){return respondWithRpcPromise(_0x68ef('0x47'),_0x5c347c[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](findById(_0x5c347c[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x1cdaef,null))['catch'](handleError(_0x1cdaef,null));};exports[_0x68ef('0x49')]=function(_0x42d2a3,_0x4886af){return respondWithRpcPromise(_0x68ef('0x4a'),_0x42d2a3[_0x68ef('0x1a')],mailClient)[_0x68ef('0xa')](respondWithResult(_0x4886af,null))['catch'](handleError(_0x4886af,null));};exports[_0x68ef('0x4b')]=function(_0x49d197,_0x5412ea){return respondWithRpcPromise(_0x68ef('0x4c'),_0x49d197['query'],routingClient)[_0x68ef('0xa')](respondWithResult(_0x5412ea,null))['catch'](handleError(_0x5412ea,null));};exports[_0x68ef('0x4d')]=function(_0x9e8554,_0x304405){return respondWithRpcPromise(_0x68ef('0x4c'),_0x9e8554[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](findById(_0x9e8554['params']['id']))[_0x68ef('0xa')](respondWithResult(_0x304405,null))['catch'](handleError(_0x304405,null));};exports[_0x68ef('0x4e')]=function(_0x4b0c3e,_0x2f97c5){return respondWithRpcPromise(_0x68ef('0x4f'),_0x4b0c3e[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x2f97c5,null))[_0x68ef('0xe')](handleError(_0x2f97c5,null));};exports[_0x68ef('0x50')]=function(_0x1be626,_0x52d29a){return respondWithRpcPromise(_0x68ef('0x4f'),_0x1be626[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](findById(_0x1be626[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x52d29a,null))['catch'](handleError(_0x52d29a,null));};exports[_0x68ef('0x51')]=function(_0x561e8d,_0x1ed172){return respondWithRpcPromise('WhatsappQueues',_0x561e8d['query'],routingClient)[_0x68ef('0xa')](respondWithResult(_0x1ed172,null))[_0x68ef('0xe')](handleError(_0x1ed172,null));};exports[_0x68ef('0x52')]=function(_0x21b2ce,_0x51f905){return respondWithRpcPromise(_0x68ef('0x53'),_0x21b2ce['query'],routingClient)[_0x68ef('0xa')](findById(_0x21b2ce[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x51f905,null))['catch'](handleError(_0x51f905,null));};exports['faxQueues']=function(_0x3e74d2,_0x1092f8){return respondWithRpcPromise(_0x68ef('0x54'),_0x3e74d2[_0x68ef('0x1a')],routingClient)['then'](respondWithResult(_0x1092f8,null))[_0x68ef('0xe')](handleError(_0x1092f8,null));};exports[_0x68ef('0x55')]=function(_0x19c20f,_0x21b104){return respondWithRpcPromise('FaxQueues',_0x19c20f[_0x68ef('0x1a')],routingClient)['then'](findById(_0x19c20f[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x21b104,null))[_0x68ef('0xe')](handleError(_0x21b104,null));};exports[_0x68ef('0x56')]=function(_0xed16d1,_0x52cb2a){return respondWithRpcPromise(_0x68ef('0x57'),_0xed16d1[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x52cb2a,null))['catch'](handleError(_0x52cb2a,null));};exports[_0x68ef('0x58')]=function(_0x4de108,_0x69b1c){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x4de108['query'],routingClient)[_0x68ef('0xa')](respondWithResult(_0x69b1c,null))[_0x68ef('0xe')](handleError(_0x69b1c,null));};exports[_0x68ef('0x59')]=function(_0x405971,_0x501004){return respondWithRpcPromise(_0x68ef('0x5a'),_0x405971[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x501004,null))['catch'](handleError(_0x501004,null));};exports[_0x68ef('0x5b')]=function(_0x2db826,_0xea2a81){return respondWithRpcPromise(_0x68ef('0x5c'),_0x2db826[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0xea2a81,null))[_0x68ef('0xe')](handleError(_0xea2a81,null));};exports[_0x68ef('0x5d')]=function(_0x156ce3,_0x11feff){return respondWithRpcPromise(_0x68ef('0x5c'),_0x156ce3[_0x68ef('0x1a')],routingClient)['then'](function(_0x15378c){if(_0x156ce3[_0x68ef('0x1a')]['type']!==undefined){var _0x513c69=_(_0x15378c[_0x68ef('0x16')])['filter']([_0x156ce3[_0x68ef('0x1a')][_0x68ef('0x5e')],_0x156ce3['params']['id']])['map'](_0x68ef('0x5f'))['uniq']()[_0x68ef('0x60')]();return _0x15378c['rows'][_0x68ef('0x61')](function(_0x4f425f){return _0x513c69[_0x68ef('0x62')](_0x4f425f[_0x68ef('0x5f')])>-0x1;});}else{return _0x15378c['rows'][_0x68ef('0x61')](function(_0x357be7){return _0x357be7[_0x68ef('0x5f')]===parseInt(_0x156ce3[_0x68ef('0x1b')]['id']);});}})['then'](respondWithResult(_0x11feff,null))[_0x68ef('0xe')](handleError(_0x11feff,null));};exports[_0x68ef('0x63')]=function(_0x5b2e89,_0x3bb3b6){return respondWithRpcPromise(_0x68ef('0x64'),_0x5b2e89[_0x68ef('0x1a')],routingClient)['then'](respondWithResult(_0x3bb3b6,null))[_0x68ef('0xe')](handleError(_0x3bb3b6,null));};exports['whatsappQueuesWaitingInteractions']=function(_0xe6bf05,_0x36c109){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0xe6bf05['query'],routingClient)['then'](respondWithResult(_0x36c109,null))['catch'](handleError(_0x36c109,null));};exports[_0x68ef('0x65')]=function(_0x28ad22,_0x1217f9){return respondWithRpcPromise(_0x68ef('0x66'),_0x28ad22[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x1217f9,null))[_0x68ef('0xe')](handleError(_0x1217f9,null));};exports[_0x68ef('0x67')]=function(_0x24ba34){return function(_0x3ae3e9,_0x17892c){var _0x108223,_0x717d7b;var _0x4bd5c3=_[_0x68ef('0x68')](_0x24ba34);var _0x556dfc=_0x24ba34===_0x68ef('0x69')?'Website':'Account';return db[_0x4bd5c3+_0x68ef('0x6a')][_0x68ef('0x6b')]({'raw':!![],'where':{'id':_0x3ae3e9[_0x68ef('0x1b')]['id']}})[_0x68ef('0xa')](function(_0x518c9a){if(_['isNil'](_0x518c9a)){throw new Error(_0x4bd5c3+_0x68ef('0x6c'));}_0x108223=_0x518c9a;return db[_0x4bd5c3+_0x68ef('0x6d')][_0x68ef('0x6b')]({'where':{'id':_0x3ae3e9['body'][_0x68ef('0x6e')]},'include':[{'model':db[_0x4bd5c3+_0x68ef('0x6f')],'as':_0x68ef('0x6f')},{'model':db[_0x4bd5c3+_0x556dfc],'as':_0x68ef('0x70')}]});})['then'](function(_0x214e89){if(_[_0x68ef('0x14')](_0x214e89)){throw new Error(_0x4bd5c3+_0x68ef('0x71'));}_0x717d7b=_0x214e89;return _0x214e89[_0x68ef('0x72')]({'read':0x0,'readAt':null,'UserId':null});})[_0x68ef('0xa')](function(){var _0x346049={'uniqueid':_0x24ba34+'.'+_0x717d7b['id']+'.'+_0x717d7b['Interaction']['id'],'FromUserId':_0x3ae3e9[_0x68ef('0x31')]['id'],'type':'queue'};_0x346049[_0x4bd5c3+_0x68ef('0x73')]=_0x717d7b['id'];_0x346049[_0x4bd5c3+_0x68ef('0x74')]=_0x717d7b[_0x68ef('0x6f')]['id'];_0x346049[_0x68ef('0x75')+_0x4bd5c3+_0x556dfc+'Id']=_0x717d7b['Account']['id'];_0x346049['To'+_0x4bd5c3+_0x68ef('0x76')]=_0x108223['id'];return db[_0x4bd5c3+'TransferReport'][_0x68ef('0x77')](_0x346049);})[_0x68ef('0xa')](function(){return respondWithRpcPromise('Start',{'channel':_0x24ba34,'interaction':_0x717d7b['Interaction'],'message':_0x717d7b,'account':_0x717d7b[_0x68ef('0x70')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x108223[_0x68ef('0x12')]+','+(_0x717d7b['Account'][_0x68ef('0x78')]||0x12c),'interval':_0x68ef('0x79')}]},routingClient);})[_0x68ef('0xa')](respondWithResult(_0x17892c,null))[_0x68ef('0xe')](handleError(_0x17892c,null));};};exports[_0x68ef('0x7a')]=function(_0x66a7a8,_0x51b8db){var _0x17d014,_0x463356;if(_[_0x68ef('0x14')](_0x66a7a8[_0x68ef('0x22')][_0x68ef('0x7b')])){throw new Error(_0x68ef('0x7c'));}var _0x303add=_0x66a7a8['body'][_0x68ef('0x7b')];var _0x373ab4=_[_0x68ef('0x68')](_0x303add);var _0x2e20aa=_0x303add===_0x68ef('0x69')?_0x68ef('0x7d'):_0x68ef('0x70');return db[_0x68ef('0x7e')][_0x68ef('0x6b')]({'raw':!![],'where':{'id':_0x66a7a8['params']['id'],'role':_0x68ef('0x3d')}})['then'](function(_0x5f3b79){if(_['isNil'](_0x5f3b79)){throw new Error(_0x68ef('0x7f'));}_0x17d014=_0x5f3b79;return db[_0x373ab4+_0x68ef('0x6d')][_0x68ef('0x6b')]({'where':{'id':_0x66a7a8['body']['messageId']},'include':[{'model':db[_0x373ab4+'Interaction'],'as':_0x68ef('0x6f')},{'model':db[_0x373ab4+_0x2e20aa],'as':_0x68ef('0x70')}]});})[_0x68ef('0xa')](function(_0x40996e){if(_[_0x68ef('0x14')](_0x40996e)){throw new Error(_0x373ab4+_0x68ef('0x71'));}_0x463356=_0x40996e;return _0x40996e['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x68ef('0xa')](function(){var _0x2c7f18={'uniqueid':_0x303add+'.'+_0x463356['id']+'.'+_0x463356[_0x68ef('0x6f')]['id'],'FromUserId':_0x66a7a8[_0x68ef('0x31')]['id'],'type':'queue','ToUserId':_0x17d014['id']};_0x2c7f18[_0x373ab4+_0x68ef('0x73')]=_0x463356['id'];_0x2c7f18[_0x373ab4+_0x68ef('0x74')]=_0x463356[_0x68ef('0x6f')]['id'];_0x2c7f18[_0x68ef('0x75')+_0x373ab4+_0x2e20aa+'Id']=_0x463356[_0x68ef('0x70')]['id'];return db[_0x373ab4+_0x68ef('0x80')][_0x68ef('0x77')](_0x2c7f18);})[_0x68ef('0xa')](function(){return respondWithRpcPromise('Start',{'channel':_0x303add,'interaction':_0x463356[_0x68ef('0x6f')],'message':_0x463356,'account':_0x463356[_0x68ef('0x70')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x17d014[_0x68ef('0x12')]+','+(_0x463356[_0x68ef('0x70')][_0x68ef('0x81')]||0x12c),'interval':_0x68ef('0x79')}]},routingClient);})[_0x68ef('0xa')](respondWithResult(_0x51b8db,null))[_0x68ef('0xe')](handleError(_0x51b8db,null));};
\ No newline at end of file
index 396e1cf..7f59a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5d9=['fs-extra','../../components/interaction/service','./schedule.controller','isAuthenticated','index','get','/:id','show','run','post','put','update','delete','exports','util','connect-timeout','express','Router'];(function(_0x15a5fa,_0x1dc1e0){var _0x31b570=function(_0x496859){while(--_0x496859){_0x15a5fa['push'](_0x15a5fa['shift']());}};_0x31b570(++_0x1dc1e0);}(_0xf5d9,0x1e2));var _0x9f5d=function(_0x30b0d8,_0x57470c){_0x30b0d8=_0x30b0d8-0x0;var _0x459c09=_0xf5d9[_0x30b0d8];return _0x459c09;};'use strict';var multer=require('multer');var util=require(_0x9f5d('0x0'));var path=require('path');var timeout=require(_0x9f5d('0x1'));var express=require(_0x9f5d('0x2'));var router=express[_0x9f5d('0x3')]();var fs_extra=require(_0x9f5d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9f5d('0x5'));var config=require('../../config/environment');var controller=require(_0x9f5d('0x6'));router['get']('/',auth[_0x9f5d('0x7')](),controller[_0x9f5d('0x8')]);router[_0x9f5d('0x9')](_0x9f5d('0xa'),auth[_0x9f5d('0x7')](),controller[_0x9f5d('0xb')]);router[_0x9f5d('0x9')]('/:id/run',auth['isAuthenticated'](),controller[_0x9f5d('0xc')]);router[_0x9f5d('0xd')]('/',auth[_0x9f5d('0x7')](),controller['create']);router[_0x9f5d('0xe')](_0x9f5d('0xa'),auth[_0x9f5d('0x7')](),controller[_0x9f5d('0xf')]);router[_0x9f5d('0x10')]('/:id',auth[_0x9f5d('0x7')](),controller['destroy']);module[_0x9f5d('0x11')]=router;
\ No newline at end of file
+var _0x378f=['Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/run','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x17cffd,_0x2e92ca){var _0x54b404=function(_0x117995){while(--_0x117995){_0x17cffd['push'](_0x17cffd['shift']());}};_0x54b404(++_0x2e92ca);}(_0x378f,0x105));var _0xf378=function(_0x5b0d01,_0x1de13c){_0x5b0d01=_0x5b0d01-0x0;var _0x2694f9=_0x378f[_0x5b0d01];return _0x2694f9;};'use strict';var multer=require(_0xf378('0x0'));var util=require(_0xf378('0x1'));var path=require(_0xf378('0x2'));var timeout=require(_0xf378('0x3'));var express=require(_0xf378('0x4'));var router=express[_0xf378('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf378('0x6'));var config=require(_0xf378('0x7'));var controller=require('./schedule.controller');router[_0xf378('0x8')]('/',auth[_0xf378('0x9')](),controller['index']);router[_0xf378('0x8')](_0xf378('0xa'),auth[_0xf378('0x9')](),controller[_0xf378('0xb')]);router[_0xf378('0x8')](_0xf378('0xc'),auth[_0xf378('0x9')](),controller['run']);router[_0xf378('0xd')]('/',auth[_0xf378('0x9')](),controller[_0xf378('0xe')]);router['put'](_0xf378('0xa'),auth[_0xf378('0x9')](),controller[_0xf378('0xf')]);router[_0xf378('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xf378('0x11')]);module[_0xf378('0x12')]=router;
\ No newline at end of file
index f10cf6f..0d7ad91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5271=['xlsx','default','TEXT','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','weeks','csv'];(function(_0x21ccfc,_0x48834e){var _0x279454=function(_0x12b780){while(--_0x12b780){_0x21ccfc['push'](_0x21ccfc['shift']());}};_0x279454(++_0x48834e);}(_0x5271,0x12f));var _0x1527=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0x5271[_0x5a3cf0];return _0x5a64ee;};'use strict';var Sequelize=require('sequelize');module[_0x1527('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x1527('0x1')]},'active':{'type':Sequelize[_0x1527('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x1527('0x1')],'allowNull':![],'defaultValue':_0x1527('0x3')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x1527('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x1527('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x1527('0x6'),'quarters','months',_0x1527('0x7'),'days','hours','minutes'),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize['ENUM'](_0x1527('0x8'),'pdf',_0x1527('0x9')),'allowNull':![],'defaultValue':_0x1527('0x8')},'type':{'type':Sequelize['ENUM']('custom',_0x1527('0xa')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0x1527('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x1527('0x1')]},'cc':{'type':Sequelize[_0x1527('0xb')]},'bcc':{'type':Sequelize[_0x1527('0xb')]},'sendIfEmpty':{'type':Sequelize[_0x1527('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc9aa=['exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','months','weeks','days','hours','minutes','csv','pdf','xlsx','custom','default','TEXT','sequelize'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0xc9aa,0x92));var _0xac9a=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0xc9aa[_0x2aea9e];return _0x430b92;};'use strict';var Sequelize=require(_0xac9a('0x0'));module[_0xac9a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xac9a('0x2')]},'active':{'type':Sequelize[_0xac9a('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xac9a('0x4')},'startAt':{'type':Sequelize[_0xac9a('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xac9a('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xac9a('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xac9a('0x7')](_0xac9a('0x8'),_0xac9a('0x9'),_0xac9a('0xa'),_0xac9a('0xb'),_0xac9a('0xc'),_0xac9a('0xd'),_0xac9a('0xe')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize['ENUM'](_0xac9a('0xf'),_0xac9a('0x10'),_0xac9a('0x11')),'allowNull':![],'defaultValue':_0xac9a('0xf')},'type':{'type':Sequelize[_0xac9a('0x7')](_0xac9a('0x12'),_0xac9a('0x13')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xac9a('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xac9a('0x2')]},'cc':{'type':Sequelize[_0xac9a('0x14')]},'bcc':{'type':Sequelize[_0xac9a('0x14')]},'sendIfEmpty':{'type':Sequelize[_0xac9a('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 976d611..f9efb28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d71=['get','Scheduler','UserProfileResource','error','stack','name','index','map','Schedule','fieldName','type','model','keys','query','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filters','filter','VIRTUAL','options','includeAll','include','catch','show','params','rawAttributes','length','merge','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','../../config/schedule','run','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy'];(function(_0x164af1,_0x3cf772){var _0x5d81a2=function(_0xa57547){while(--_0xa57547){_0x164af1['push'](_0x164af1['shift']());}};_0x5d81a2(++_0x3cf772);}(_0x6d71,0x1d5));var _0x16d7=function(_0x2ee2ae,_0x184f85){_0x2ee2ae=_0x2ee2ae-0x0;var _0x5dc51d=_0x6d71[_0x2ee2ae];return _0x5dc51d;};'use strict';var emlformat=require(_0x16d7('0x0'));var rimraf=require(_0x16d7('0x1'));var zipdir=require(_0x16d7('0x2'));var jsonpatch=require(_0x16d7('0x3'));var rp=require(_0x16d7('0x4'));var moment=require(_0x16d7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x16d7('0x6'));var path=require('path');var sox=require(_0x16d7('0x7'));var csv=require('to-csv');var ejs=require(_0x16d7('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x16d7('0x9'));var squel=require(_0x16d7('0xa'));var crypto=require(_0x16d7('0xb'));var jsforce=require(_0x16d7('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x16d7('0xd'));var Papa=require(_0x16d7('0xe'));var Redis=require(_0x16d7('0xf'));var authService=require(_0x16d7('0x10'));var qs=require(_0x16d7('0x11'));var as=require(_0x16d7('0x12'));var hardwareService=require(_0x16d7('0x13'));var logger=require(_0x16d7('0x14'))(_0x16d7('0x15'));var utils=require(_0x16d7('0x16'));var config=require(_0x16d7('0x17'));var licenseUtil=require(_0x16d7('0x18'));var db=require(_0x16d7('0x19'))['db'];function respondWithStatusCode(_0x49bbc4,_0x3d5b57){_0x3d5b57=_0x3d5b57||0xcc;return function(_0x1cd540){if(_0x1cd540){return _0x49bbc4[_0x16d7('0x1a')](_0x3d5b57);}return _0x49bbc4['status'](_0x3d5b57)[_0x16d7('0x1b')]();};}function respondWithResult(_0x15be68,_0x49166b){_0x49166b=_0x49166b||0xc8;return function(_0xecfe45){if(_0xecfe45){return _0x15be68[_0x16d7('0x1c')](_0x49166b)[_0x16d7('0x1d')](_0xecfe45);}};}function respondWithFilteredResult(_0x798c9a,_0x349593){return function(_0x3992e8){if(_0x3992e8){var _0x4c65a8=typeof _0x349593[_0x16d7('0x1e')]===_0x16d7('0x1f')&&typeof _0x349593['limit']==='undefined';var _0x66944=_0x3992e8['count'];var _0x8c9b13=_0x4c65a8?0x0:_0x349593[_0x16d7('0x1e')];var _0x19f458=_0x4c65a8?_0x3992e8[_0x16d7('0x20')]:_0x349593[_0x16d7('0x1e')]+_0x349593[_0x16d7('0x21')];var _0x2e6a49;if(_0x19f458>=_0x66944){_0x19f458=_0x66944;_0x2e6a49=0xc8;}else{_0x2e6a49=0xce;}_0x798c9a[_0x16d7('0x1c')](_0x2e6a49);return _0x798c9a[_0x16d7('0x22')](_0x16d7('0x23'),_0x8c9b13+'-'+_0x19f458+'/'+_0x66944)['json'](_0x3992e8);}return null;};}function patchUpdates(_0x28cd47){return function(_0x331ff1){try{jsonpatch[_0x16d7('0x24')](_0x331ff1,_0x28cd47,!![]);}catch(_0x3b197d){return BPromise['reject'](_0x3b197d);}return _0x331ff1[_0x16d7('0x25')]();};}function saveUpdates(_0x488da7,_0x390004){return function(_0x4e9cb){if(_0x4e9cb){return _0x4e9cb[_0x16d7('0x26')](_0x488da7)[_0x16d7('0x27')](function(_0x256ca2){return _0x256ca2;});}return null;};}function removeEntity(_0x5625aa,_0x168511){return function(_0x53e01f){if(_0x53e01f){return _0x53e01f[_0x16d7('0x28')]()[_0x16d7('0x27')](function(){var _0x5c2d54=_0x53e01f[_0x16d7('0x29')]({'plain':!![]});var _0x3de426=_0x16d7('0x2a');return db[_0x16d7('0x2b')][_0x16d7('0x28')]({'where':{'type':_0x3de426,'resourceId':_0x5c2d54['id']}})['then'](function(){return _0x53e01f;});})[_0x16d7('0x27')](function(){_0x5625aa[_0x16d7('0x1c')](0xcc)[_0x16d7('0x1b')]();});}};}function handleEntityNotFound(_0x2f66a1,_0x241c61){return function(_0x2d079d){if(!_0x2d079d){_0x2f66a1[_0x16d7('0x1a')](0x194);}return _0x2d079d;};}function handleError(_0x48dfff,_0x20ea27){_0x20ea27=_0x20ea27||0x1f4;return function(_0x4576fd){logger[_0x16d7('0x2c')](_0x4576fd[_0x16d7('0x2d')]);if(_0x4576fd[_0x16d7('0x2e')]){delete _0x4576fd[_0x16d7('0x2e')];}_0x48dfff['status'](_0x20ea27)['send'](_0x4576fd);};}exports[_0x16d7('0x2f')]=function(_0x46ce9c,_0x1362bf){var _0x5a6920={},_0x355e86={},_0x24e090={'count':0x0,'rows':[]};var _0x4f903e=_[_0x16d7('0x30')](db[_0x16d7('0x31')]['rawAttributes'],function(_0x11355d){return{'name':_0x11355d[_0x16d7('0x32')],'type':_0x11355d[_0x16d7('0x33')]['key']};});_0x355e86[_0x16d7('0x34')]=_[_0x16d7('0x30')](_0x4f903e,_0x16d7('0x2e'));_0x355e86['query']=_[_0x16d7('0x35')](_0x46ce9c[_0x16d7('0x36')]);_0x355e86['filters']=_[_0x16d7('0x37')](_0x355e86[_0x16d7('0x34')],_0x355e86[_0x16d7('0x36')]);_0x5a6920[_0x16d7('0x38')]=_[_0x16d7('0x37')](_0x355e86[_0x16d7('0x34')],qs['fields'](_0x46ce9c[_0x16d7('0x36')][_0x16d7('0x39')]));_0x5a6920['attributes']=_0x5a6920[_0x16d7('0x38')]['length']?_0x5a6920[_0x16d7('0x38')]:_0x355e86[_0x16d7('0x34')];if(!_0x46ce9c[_0x16d7('0x36')][_0x16d7('0x3a')]('nolimit')){_0x5a6920[_0x16d7('0x21')]=qs[_0x16d7('0x21')](_0x46ce9c[_0x16d7('0x36')]['limit']);_0x5a6920[_0x16d7('0x1e')]=qs['offset'](_0x46ce9c[_0x16d7('0x36')][_0x16d7('0x1e')]);}_0x5a6920[_0x16d7('0x3b')]=qs[_0x16d7('0x3c')](_0x46ce9c[_0x16d7('0x36')][_0x16d7('0x3c')]);_0x5a6920[_0x16d7('0x3d')]=qs['filters'](_[_0x16d7('0x3e')](_0x46ce9c[_0x16d7('0x36')],_0x355e86[_0x16d7('0x3f')]),_0x4f903e);if(_0x46ce9c[_0x16d7('0x36')][_0x16d7('0x40')]){_0x5a6920['where']=_['merge'](_0x5a6920[_0x16d7('0x3d')],{'$or':_['map'](_0x4f903e,function(_0x4dcaf0){if(_0x4dcaf0[_0x16d7('0x33')]!==_0x16d7('0x41')){var _0x1f3b70={};_0x1f3b70[_0x4dcaf0['name']]={'$like':'%'+_0x46ce9c['query']['filter']+'%'};return _0x1f3b70;}})});}_0x5a6920=_['merge']({},_0x5a6920,_0x46ce9c[_0x16d7('0x42')]);var _0x397c42={'where':_0x5a6920[_0x16d7('0x3d')]};return db[_0x16d7('0x31')][_0x16d7('0x20')](_0x397c42)['then'](function(_0x2244fe){_0x24e090[_0x16d7('0x20')]=_0x2244fe;if(_0x46ce9c[_0x16d7('0x36')][_0x16d7('0x43')]){_0x5a6920[_0x16d7('0x44')]=[{'all':!![]}];}return db[_0x16d7('0x31')]['findAll'](_0x5a6920);})[_0x16d7('0x27')](function(_0x56606a){_0x24e090['rows']=_0x56606a;return _0x24e090;})[_0x16d7('0x27')](respondWithFilteredResult(_0x1362bf,_0x5a6920))[_0x16d7('0x45')](handleError(_0x1362bf,null));};exports[_0x16d7('0x46')]=function(_0xbffbac,_0x3aebc6){var _0x34450d={'raw':![],'where':{'id':_0xbffbac[_0x16d7('0x47')]['id']}},_0x2781ea={};_0x2781ea['model']=_[_0x16d7('0x35')](db[_0x16d7('0x31')][_0x16d7('0x48')]);_0x2781ea[_0x16d7('0x36')]=_[_0x16d7('0x35')](_0xbffbac[_0x16d7('0x36')]);_0x2781ea[_0x16d7('0x3f')]=_['intersection'](_0x2781ea[_0x16d7('0x34')],_0x2781ea[_0x16d7('0x36')]);_0x34450d['attributes']=_[_0x16d7('0x37')](_0x2781ea['model'],qs[_0x16d7('0x39')](_0xbffbac[_0x16d7('0x36')][_0x16d7('0x39')]));_0x34450d['attributes']=_0x34450d[_0x16d7('0x38')][_0x16d7('0x49')]?_0x34450d[_0x16d7('0x38')]:_0x2781ea[_0x16d7('0x34')];if(_0xbffbac[_0x16d7('0x36')][_0x16d7('0x43')]){_0x34450d[_0x16d7('0x44')]=[{'all':!![]}];}_0x34450d=_[_0x16d7('0x4a')]({},_0x34450d,_0xbffbac[_0x16d7('0x42')]);return db[_0x16d7('0x31')][_0x16d7('0x4b')](_0x34450d)[_0x16d7('0x27')](handleEntityNotFound(_0x3aebc6,null))['then'](respondWithResult(_0x3aebc6,null))[_0x16d7('0x45')](handleError(_0x3aebc6,null));};exports[_0x16d7('0x4c')]=function(_0x2126bc,_0x1a970d){return db[_0x16d7('0x31')][_0x16d7('0x4c')](_0x2126bc['body'],{})['then'](function(_0x1477c8){var _0x134a78=_0x2126bc[_0x16d7('0x4d')][_0x16d7('0x29')]({'plain':!![]});if(!_0x134a78)throw new Error(_0x16d7('0x4e'));if(_0x134a78[_0x16d7('0x4f')]===_0x16d7('0x4d')){var _0x824bbd=_0x1477c8['get']({'plain':!![]});var _0x329bab=_0x16d7('0x2a');return db['UserProfileSection']['find']({'where':{'name':_0x329bab,'userProfileId':_0x134a78[_0x16d7('0x50')]},'raw':!![]})[_0x16d7('0x27')](function(_0x229af1){if(_0x229af1&&_0x229af1['autoAssociation']===0x0){return db[_0x16d7('0x2b')][_0x16d7('0x4c')]({'name':_0x824bbd[_0x16d7('0x2e')],'resourceId':_0x824bbd['id'],'type':_0x229af1[_0x16d7('0x2e')],'sectionId':_0x229af1['id']},{})['then'](function(){return _0x1477c8;});}else{return _0x1477c8;}})[_0x16d7('0x45')](function(_0x3ef81d){logger['error'](_0x16d7('0x51'),_0x3ef81d);throw _0x3ef81d;});}return _0x1477c8;})[_0x16d7('0x27')](respondWithResult(_0x1a970d,0xc9))[_0x16d7('0x45')](handleError(_0x1a970d,null));};exports[_0x16d7('0x26')]=function(_0x1d97d3,_0x1a9a0d){if(_0x1d97d3[_0x16d7('0x52')]['id']){delete _0x1d97d3['body']['id'];}return db[_0x16d7('0x31')][_0x16d7('0x4b')]({'where':{'id':_0x1d97d3[_0x16d7('0x47')]['id']}})[_0x16d7('0x27')](handleEntityNotFound(_0x1a9a0d,null))[_0x16d7('0x27')](saveUpdates(_0x1d97d3[_0x16d7('0x52')],null))[_0x16d7('0x27')](respondWithResult(_0x1a9a0d,null))[_0x16d7('0x45')](handleError(_0x1a9a0d,null));};exports['destroy']=function(_0xd647c6,_0x4fbfd7){return db[_0x16d7('0x31')][_0x16d7('0x4b')]({'where':{'id':_0xd647c6[_0x16d7('0x47')]['id']}})[_0x16d7('0x27')](handleEntityNotFound(_0x4fbfd7,null))[_0x16d7('0x27')](removeEntity(_0x4fbfd7,null))[_0x16d7('0x45')](handleError(_0x4fbfd7,null));};exports['run']=function(_0x53c534,_0x1afa5f,_0x31c58a){var _0x453067=require(_0x16d7('0x53'));return db[_0x16d7('0x31')][_0x16d7('0x4b')]({'where':{'id':_0x53c534[_0x16d7('0x47')]['id']},'raw':!![]})[_0x16d7('0x27')](handleEntityNotFound(_0x1afa5f,null))[_0x16d7('0x27')](function(){_0x453067[_0x16d7('0x54')](_0x53c534[_0x16d7('0x47')]['id']);})[_0x16d7('0x27')](respondWithStatusCode(_0x1afa5f,null))[_0x16d7('0x45')](handleError(_0x1afa5f,null));};
\ No newline at end of file
+var _0x8efb=['include','findAll','rows','catch','params','fields','merge','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Scheduler','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','get','UserProfileResource','error','stack','name','send','fieldName','type','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','filter','where','VIRTUAL','options','Schedule','includeAll'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x8efb,0x15e));var _0xb8ef=function(_0x203e2d,_0x37bbce){_0x203e2d=_0x203e2d-0x0;var _0x12a5c1=_0x8efb[_0x203e2d];return _0x12a5c1;};'use strict';var emlformat=require(_0xb8ef('0x0'));var rimraf=require(_0xb8ef('0x1'));var zipdir=require(_0xb8ef('0x2'));var jsonpatch=require(_0xb8ef('0x3'));var rp=require(_0xb8ef('0x4'));var moment=require('moment');var BPromise=require(_0xb8ef('0x5'));var Mustache=require(_0xb8ef('0x6'));var util=require('util');var path=require(_0xb8ef('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb8ef('0x8'));var _=require(_0xb8ef('0x9'));var squel=require(_0xb8ef('0xa'));var crypto=require(_0xb8ef('0xb'));var jsforce=require(_0xb8ef('0xc'));var deskjs=require(_0xb8ef('0xd'));var toCsv=require(_0xb8ef('0xe'));var querystring=require('querystring');var Papa=require(_0xb8ef('0xf'));var Redis=require(_0xb8ef('0x10'));var authService=require(_0xb8ef('0x11'));var qs=require(_0xb8ef('0x12'));var as=require(_0xb8ef('0x13'));var hardwareService=require(_0xb8ef('0x14'));var logger=require(_0xb8ef('0x15'))(_0xb8ef('0x16'));var utils=require(_0xb8ef('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb8ef('0x18'))['db'];function respondWithStatusCode(_0x57d47a,_0x28f67b){_0x28f67b=_0x28f67b||0xcc;return function(_0x3670aa){if(_0x3670aa){return _0x57d47a[_0xb8ef('0x19')](_0x28f67b);}return _0x57d47a[_0xb8ef('0x1a')](_0x28f67b)[_0xb8ef('0x1b')]();};}function respondWithResult(_0x3c3c12,_0x39d654){_0x39d654=_0x39d654||0xc8;return function(_0x3cf66b){if(_0x3cf66b){return _0x3c3c12['status'](_0x39d654)[_0xb8ef('0x1c')](_0x3cf66b);}};}function respondWithFilteredResult(_0x26a90e,_0x80a57f){return function(_0x2a6b0f){if(_0x2a6b0f){var _0x81dafd=typeof _0x80a57f[_0xb8ef('0x1d')]===_0xb8ef('0x1e')&&typeof _0x80a57f['limit']===_0xb8ef('0x1e');var _0x3a33e=_0x2a6b0f[_0xb8ef('0x1f')];var _0x44d7e6=_0x81dafd?0x0:_0x80a57f['offset'];var _0x1591bc=_0x81dafd?_0x2a6b0f[_0xb8ef('0x1f')]:_0x80a57f['offset']+_0x80a57f['limit'];var _0x313042;if(_0x1591bc>=_0x3a33e){_0x1591bc=_0x3a33e;_0x313042=0xc8;}else{_0x313042=0xce;}_0x26a90e[_0xb8ef('0x1a')](_0x313042);return _0x26a90e[_0xb8ef('0x20')](_0xb8ef('0x21'),_0x44d7e6+'-'+_0x1591bc+'/'+_0x3a33e)['json'](_0x2a6b0f);}return null;};}function patchUpdates(_0x5acd69){return function(_0x258458){try{jsonpatch['apply'](_0x258458,_0x5acd69,!![]);}catch(_0x246d4e){return BPromise[_0xb8ef('0x22')](_0x246d4e);}return _0x258458['save']();};}function saveUpdates(_0xf11604,_0x5f36df){return function(_0x310707){if(_0x310707){return _0x310707[_0xb8ef('0x23')](_0xf11604)[_0xb8ef('0x24')](function(_0x3293e2){return _0x3293e2;});}return null;};}function removeEntity(_0x535259,_0x5289cf){return function(_0x3a7270){if(_0x3a7270){return _0x3a7270[_0xb8ef('0x25')]()[_0xb8ef('0x24')](function(){var _0xd9148d=_0x3a7270[_0xb8ef('0x26')]({'plain':!![]});var _0x1d77d3='Scheduler';return db[_0xb8ef('0x27')][_0xb8ef('0x25')]({'where':{'type':_0x1d77d3,'resourceId':_0xd9148d['id']}})['then'](function(){return _0x3a7270;});})['then'](function(){_0x535259[_0xb8ef('0x1a')](0xcc)[_0xb8ef('0x1b')]();});}};}function handleEntityNotFound(_0x54a24d,_0x4b59ad){return function(_0x5a2ce4){if(!_0x5a2ce4){_0x54a24d[_0xb8ef('0x19')](0x194);}return _0x5a2ce4;};}function handleError(_0x51ed77,_0x2c5085){_0x2c5085=_0x2c5085||0x1f4;return function(_0x58c11e){logger[_0xb8ef('0x28')](_0x58c11e[_0xb8ef('0x29')]);if(_0x58c11e['name']){delete _0x58c11e[_0xb8ef('0x2a')];}_0x51ed77['status'](_0x2c5085)[_0xb8ef('0x2b')](_0x58c11e);};}exports['index']=function(_0x2fc9af,_0xdeceaf){var _0x36679a={},_0x73a969={},_0x26d3e4={'count':0x0,'rows':[]};var _0x5add1a=_['map'](db['Schedule']['rawAttributes'],function(_0x100b8d){return{'name':_0x100b8d[_0xb8ef('0x2c')],'type':_0x100b8d[_0xb8ef('0x2d')][_0xb8ef('0x2e')]};});_0x73a969[_0xb8ef('0x2f')]=_['map'](_0x5add1a,'name');_0x73a969['query']=_[_0xb8ef('0x30')](_0x2fc9af[_0xb8ef('0x31')]);_0x73a969[_0xb8ef('0x32')]=_[_0xb8ef('0x33')](_0x73a969[_0xb8ef('0x2f')],_0x73a969[_0xb8ef('0x31')]);_0x36679a[_0xb8ef('0x34')]=_[_0xb8ef('0x33')](_0x73a969[_0xb8ef('0x2f')],qs['fields'](_0x2fc9af[_0xb8ef('0x31')]['fields']));_0x36679a[_0xb8ef('0x34')]=_0x36679a[_0xb8ef('0x34')][_0xb8ef('0x35')]?_0x36679a[_0xb8ef('0x34')]:_0x73a969[_0xb8ef('0x2f')];if(!_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x36')](_0xb8ef('0x37'))){_0x36679a[_0xb8ef('0x38')]=qs['limit'](_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x38')]);_0x36679a[_0xb8ef('0x1d')]=qs['offset'](_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x1d')]);}_0x36679a[_0xb8ef('0x39')]=qs[_0xb8ef('0x3a')](_0x2fc9af[_0xb8ef('0x31')]['sort']);_0x36679a['where']=qs[_0xb8ef('0x32')](_['pick'](_0x2fc9af[_0xb8ef('0x31')],_0x73a969['filters']),_0x5add1a);if(_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x3b')]){_0x36679a['where']=_['merge'](_0x36679a[_0xb8ef('0x3c')],{'$or':_['map'](_0x5add1a,function(_0x38a16c){if(_0x38a16c[_0xb8ef('0x2d')]!==_0xb8ef('0x3d')){var _0x37fdde={};_0x37fdde[_0x38a16c['name']]={'$like':'%'+_0x2fc9af[_0xb8ef('0x31')]['filter']+'%'};return _0x37fdde;}})});}_0x36679a=_['merge']({},_0x36679a,_0x2fc9af[_0xb8ef('0x3e')]);var _0x5d5de8={'where':_0x36679a[_0xb8ef('0x3c')]};return db[_0xb8ef('0x3f')]['count'](_0x5d5de8)[_0xb8ef('0x24')](function(_0xb71933){_0x26d3e4[_0xb8ef('0x1f')]=_0xb71933;if(_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x40')]){_0x36679a[_0xb8ef('0x41')]=[{'all':!![]}];}return db['Schedule'][_0xb8ef('0x42')](_0x36679a);})[_0xb8ef('0x24')](function(_0x3426ad){_0x26d3e4[_0xb8ef('0x43')]=_0x3426ad;return _0x26d3e4;})['then'](respondWithFilteredResult(_0xdeceaf,_0x36679a))[_0xb8ef('0x44')](handleError(_0xdeceaf,null));};exports['show']=function(_0x29b64a,_0x348fda){var _0x4de404={'raw':![],'where':{'id':_0x29b64a[_0xb8ef('0x45')]['id']}},_0x5dd516={};_0x5dd516[_0xb8ef('0x2f')]=_[_0xb8ef('0x30')](db[_0xb8ef('0x3f')]['rawAttributes']);_0x5dd516['query']=_['keys'](_0x29b64a['query']);_0x5dd516['filters']=_['intersection'](_0x5dd516[_0xb8ef('0x2f')],_0x5dd516[_0xb8ef('0x31')]);_0x4de404['attributes']=_[_0xb8ef('0x33')](_0x5dd516[_0xb8ef('0x2f')],qs[_0xb8ef('0x46')](_0x29b64a[_0xb8ef('0x31')]['fields']));_0x4de404['attributes']=_0x4de404[_0xb8ef('0x34')][_0xb8ef('0x35')]?_0x4de404[_0xb8ef('0x34')]:_0x5dd516['model'];if(_0x29b64a['query'][_0xb8ef('0x40')]){_0x4de404[_0xb8ef('0x41')]=[{'all':!![]}];}_0x4de404=_[_0xb8ef('0x47')]({},_0x4de404,_0x29b64a[_0xb8ef('0x3e')]);return db[_0xb8ef('0x3f')][_0xb8ef('0x48')](_0x4de404)[_0xb8ef('0x24')](handleEntityNotFound(_0x348fda,null))[_0xb8ef('0x24')](respondWithResult(_0x348fda,null))[_0xb8ef('0x44')](handleError(_0x348fda,null));};exports[_0xb8ef('0x49')]=function(_0x202405,_0x6dd1e6){return db[_0xb8ef('0x3f')][_0xb8ef('0x49')](_0x202405['body'],{})[_0xb8ef('0x24')](function(_0x8b50e6){var _0x10f6f1=_0x202405['user']['get']({'plain':!![]});if(!_0x10f6f1)throw new Error(_0xb8ef('0x4a'));if(_0x10f6f1[_0xb8ef('0x4b')]===_0xb8ef('0x4c')){var _0x26be62=_0x8b50e6['get']({'plain':!![]});var _0x18ef04=_0xb8ef('0x4d');return db['UserProfileSection'][_0xb8ef('0x48')]({'where':{'name':_0x18ef04,'userProfileId':_0x10f6f1[_0xb8ef('0x4e')]},'raw':!![]})[_0xb8ef('0x24')](function(_0x23bd38){if(_0x23bd38&&_0x23bd38[_0xb8ef('0x4f')]===0x0){return db['UserProfileResource'][_0xb8ef('0x49')]({'name':_0x26be62[_0xb8ef('0x2a')],'resourceId':_0x26be62['id'],'type':_0x23bd38[_0xb8ef('0x2a')],'sectionId':_0x23bd38['id']},{})[_0xb8ef('0x24')](function(){return _0x8b50e6;});}else{return _0x8b50e6;}})['catch'](function(_0x19b83d){logger['error'](_0xb8ef('0x50'),_0x19b83d);throw _0x19b83d;});}return _0x8b50e6;})[_0xb8ef('0x24')](respondWithResult(_0x6dd1e6,0xc9))[_0xb8ef('0x44')](handleError(_0x6dd1e6,null));};exports['update']=function(_0x33eead,_0x5f45af){if(_0x33eead[_0xb8ef('0x51')]['id']){delete _0x33eead[_0xb8ef('0x51')]['id'];}return db[_0xb8ef('0x3f')][_0xb8ef('0x48')]({'where':{'id':_0x33eead[_0xb8ef('0x45')]['id']}})[_0xb8ef('0x24')](handleEntityNotFound(_0x5f45af,null))[_0xb8ef('0x24')](saveUpdates(_0x33eead[_0xb8ef('0x51')],null))[_0xb8ef('0x24')](respondWithResult(_0x5f45af,null))[_0xb8ef('0x44')](handleError(_0x5f45af,null));};exports[_0xb8ef('0x25')]=function(_0x4ad285,_0x1b39ea){return db[_0xb8ef('0x3f')]['find']({'where':{'id':_0x4ad285['params']['id']}})[_0xb8ef('0x24')](handleEntityNotFound(_0x1b39ea,null))['then'](removeEntity(_0x1b39ea,null))[_0xb8ef('0x44')](handleError(_0x1b39ea,null));};exports['run']=function(_0x116412,_0x420745,_0x340db1){var _0x463c93=require('../../config/schedule');return db[_0xb8ef('0x3f')][_0xb8ef('0x48')]({'where':{'id':_0x116412['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x420745,null))['then'](function(){_0x463c93[_0xb8ef('0x52')](_0x116412[_0xb8ef('0x45')]['id']);})[_0xb8ef('0x24')](respondWithStatusCode(_0x420745,null))[_0xb8ef('0x44')](handleError(_0x420745,null));};
\ No newline at end of file
index 8bb681c..eec8744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca5c=['path','rimraf','../../config/environment','./schedule.attributes','exports','define','Schedule','tools_schedules','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x552005,_0x4c1398){var _0x22d800=function(_0x39ba04){while(--_0x39ba04){_0x552005['push'](_0x552005['shift']());}};_0x22d800(++_0x4c1398);}(_0xca5c,0xda));var _0xcca5=function(_0x299784,_0xb0918f){_0x299784=_0x299784-0x0;var _0x5ab008=_0xca5c[_0x299784];return _0x5ab008;};'use strict';var _=require(_0xcca5('0x0'));var util=require(_0xcca5('0x1'));var logger=require(_0xcca5('0x2'))(_0xcca5('0x3'));var moment=require(_0xcca5('0x4'));var BPromise=require(_0xcca5('0x5'));var rp=require(_0xcca5('0x6'));var fs=require('fs');var path=require(_0xcca5('0x7'));var rimraf=require(_0xcca5('0x8'));var config=require(_0xcca5('0x9'));var attributes=require(_0xcca5('0xa'));module[_0xcca5('0xb')]=function(_0x2c5017,_0x149413){return _0x2c5017[_0xcca5('0xc')](_0xcca5('0xd'),attributes,{'tableName':_0xcca5('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5adf=['../../config/logger','api','request-promise','path','../../config/environment','exports','define','Schedule','lodash','util'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x5adf,0x17a));var _0xf5ad=function(_0x15dd7c,_0x4500c5){_0x15dd7c=_0x15dd7c-0x0;var _0x4bbb1a=_0x5adf[_0x15dd7c];return _0x4bbb1a;};'use strict';var _=require(_0xf5ad('0x0'));var util=require(_0xf5ad('0x1'));var logger=require(_0xf5ad('0x2'))(_0xf5ad('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf5ad('0x4'));var fs=require('fs');var path=require(_0xf5ad('0x5'));var rimraf=require('rimraf');var config=require(_0xf5ad('0x6'));var attributes=require('./schedule.attributes');module[_0xf5ad('0x7')]=function(_0x2b1910,_0x42176b){return _0x2b1910[_0xf5ad('0x8')](_0xf5ad('0x9'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 23c52ff..170fc1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cbc=['message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','error','Schedule,\x20%s,\x20%s'];(function(_0x15a4fd,_0x4538b4){var _0x2e1e01=function(_0x3a526a){while(--_0x3a526a){_0x15a4fd['push'](_0x15a4fd['shift']());}};_0x2e1e01(++_0x4538b4);}(_0x6cbc,0x193));var _0xc6cb=function(_0x1eb98b,_0x37e356){_0x1eb98b=_0x1eb98b-0x0;var _0x40b4b4=_0x6cbc[_0x1eb98b];return _0x40b4b4;};'use strict';var _=require(_0xc6cb('0x0'));var util=require(_0xc6cb('0x1'));var moment=require(_0xc6cb('0x2'));var BPromise=require('bluebird');var rs=require(_0xc6cb('0x3'));var fs=require('fs');var Redis=require(_0xc6cb('0x4'));var db=require(_0xc6cb('0x5'))['db'];var utils=require(_0xc6cb('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xc6cb('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc6cb('0x8')][_0xc6cb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51c3a9,_0x486843,_0x2c9f61){return new BPromise(function(_0xaa8ae,_0x19b5f8){return client[_0xc6cb('0xa')](_0x51c3a9,_0x2c9f61)[_0xc6cb('0xb')](function(_0xe8045f){logger['info']('Schedule,\x20%s,\x20%s',_0x486843,_0xc6cb('0xc'));logger[_0xc6cb('0xd')]('Schedule,\x20%s,\x20%s,\x20%s',_0x486843,_0xc6cb('0xc'),JSON[_0xc6cb('0xe')](_0xe8045f));if(_0xe8045f[_0xc6cb('0xf')]){if(_0xe8045f[_0xc6cb('0xf')]['code']===0x1f4){logger[_0xc6cb('0xf')](_0xc6cb('0x10'),_0x486843,_0xe8045f[_0xc6cb('0xf')][_0xc6cb('0x11')]);return _0x19b5f8(_0xe8045f[_0xc6cb('0xf')][_0xc6cb('0x11')]);}logger['error']('Schedule,\x20%s,\x20%s',_0x486843,_0xe8045f[_0xc6cb('0xf')][_0xc6cb('0x11')]);return _0xaa8ae(_0xe8045f[_0xc6cb('0xf')][_0xc6cb('0x11')]);}else{logger['info'](_0xc6cb('0x10'),_0x486843,_0xc6cb('0xc'));_0xaa8ae(_0xe8045f[_0xc6cb('0x12')][_0xc6cb('0x11')]);}})[_0xc6cb('0x13')](function(_0x1cfe68){logger['error'](_0xc6cb('0x10'),_0x486843,_0x1cfe68);_0x19b5f8(_0x1cfe68);});});}
\ No newline at end of file
+var _0x3fc0=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Schedule,\x20%s,\x20%s','debug','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x47a41f,_0x48d92b){var _0x2411f5=function(_0x3f5b72){while(--_0x3f5b72){_0x47a41f['push'](_0x47a41f['shift']());}};_0x2411f5(++_0x48d92b);}(_0x3fc0,0x160));var _0x03fc=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x3fc0[_0x3899d1];return _0xeb4a7d;};'use strict';var _=require('lodash');var util=require(_0x03fc('0x0'));var moment=require(_0x03fc('0x1'));var BPromise=require(_0x03fc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x03fc('0x3'));var db=require(_0x03fc('0x4'))['db'];var utils=require(_0x03fc('0x5'));var logger=require(_0x03fc('0x6'))(_0x03fc('0x7'));var config=require(_0x03fc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x03fc('0x9')][_0x03fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x551117,_0x3c274e,_0x1fd486){return new BPromise(function(_0x1127da,_0x42413c){return client[_0x03fc('0xb')](_0x551117,_0x1fd486)[_0x03fc('0xc')](function(_0x50fd5f){logger[_0x03fc('0xd')](_0x03fc('0xe'),_0x3c274e,'request\x20sent');logger[_0x03fc('0xf')](_0x03fc('0x10'),_0x3c274e,_0x03fc('0x11'),JSON['stringify'](_0x50fd5f));if(_0x50fd5f[_0x03fc('0x12')]){if(_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x13')]===0x1f4){logger[_0x03fc('0x12')]('Schedule,\x20%s,\x20%s',_0x3c274e,_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);return _0x42413c(_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);}logger[_0x03fc('0x12')]('Schedule,\x20%s,\x20%s',_0x3c274e,_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);return _0x1127da(_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);}else{logger[_0x03fc('0xd')]('Schedule,\x20%s,\x20%s',_0x3c274e,'request\x20sent');_0x1127da(_0x50fd5f[_0x03fc('0x15')]['message']);}})['catch'](function(_0x1b1625){logger['error']('Schedule,\x20%s,\x20%s',_0x3c274e,_0x1b1625);_0x42413c(_0x1b1625);});});}
\ No newline at end of file
index 161ab2a..678bf72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2724=['./screenRecording.controller','get','isAuthenticated','/describe','describe','/:id','show','download','post','create','put','update','delete','multer','path','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x541a67,_0x50728d){var _0x45da2a=function(_0x158929){while(--_0x158929){_0x541a67['push'](_0x541a67['shift']());}};_0x45da2a(++_0x50728d);}(_0x2724,0x189));var _0x4272=function(_0x6dbb4d,_0x2325c1){_0x6dbb4d=_0x6dbb4d-0x0;var _0x335b16=_0x2724[_0x6dbb4d];return _0x335b16;};'use strict';var multer=require(_0x4272('0x0'));var util=require('util');var path=require(_0x4272('0x1'));var timeout=require(_0x4272('0x2'));var express=require(_0x4272('0x3'));var router=express[_0x4272('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4272('0x5'));var config=require('../../config/environment');var controller=require(_0x4272('0x6'));router[_0x4272('0x7')]('/',auth[_0x4272('0x8')](),controller['index']);router[_0x4272('0x7')](_0x4272('0x9'),auth[_0x4272('0x8')](),controller[_0x4272('0xa')]);router[_0x4272('0x7')](_0x4272('0xb'),auth[_0x4272('0x8')](),controller[_0x4272('0xc')]);router['get']('/:id/download',auth[_0x4272('0x8')](),controller[_0x4272('0xd')]);router[_0x4272('0xe')]('/',auth[_0x4272('0x8')](),controller[_0x4272('0xf')]);router[_0x4272('0x10')]('/:id',auth[_0x4272('0x8')](),controller[_0x4272('0x11')]);router[_0x4272('0x12')](_0x4272('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2899=['multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','index','/describe','describe','/:id','show','isAuthenticated','post','create','put','update','delete','destroy','exports'];(function(_0x41634b,_0x35d7a4){var _0x3da878=function(_0x4019b0){while(--_0x4019b0){_0x41634b['push'](_0x41634b['shift']());}};_0x3da878(++_0x35d7a4);}(_0x2899,0x1b8));var _0x9289=function(_0x2b7be5,_0x30fec7){_0x2b7be5=_0x2b7be5-0x0;var _0x156ac9=_0x2899[_0x2b7be5];return _0x156ac9;};'use strict';var multer=require(_0x9289('0x0'));var util=require('util');var path=require(_0x9289('0x1'));var timeout=require(_0x9289('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9289('0x3'));var auth=require(_0x9289('0x4'));var interaction=require(_0x9289('0x5'));var config=require(_0x9289('0x6'));var controller=require(_0x9289('0x7'));router[_0x9289('0x8')]('/',auth['isAuthenticated'](),controller[_0x9289('0x9')]);router[_0x9289('0x8')](_0x9289('0xa'),auth['isAuthenticated'](),controller[_0x9289('0xb')]);router[_0x9289('0x8')](_0x9289('0xc'),auth['isAuthenticated'](),controller[_0x9289('0xd')]);router[_0x9289('0x8')]('/:id/download',auth[_0x9289('0xe')](),controller['download']);router[_0x9289('0xf')]('/',auth['isAuthenticated'](),controller[_0x9289('0x10')]);router[_0x9289('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x9289('0x12')]);router[_0x9289('0x13')]('/:id',auth[_0x9289('0xe')](),controller[_0x9289('0x14')]);module[_0x9289('0x15')]=router;
\ No newline at end of file
index fb656d9..48e0503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1c5=['DATE','format','MM-DD-YYYY\x20HH:mm','createdAt','toString','updatedAt','sequelize','moment','path','VIRTUAL','getDataValue','value','STRING','replace','INTEGER','setDataValue','subtract','closedAt'];(function(_0x3f7480,_0x3b4000){var _0x697e48=function(_0x10b448){while(--_0x10b448){_0x3f7480['push'](_0x3f7480['shift']());}};_0x697e48(++_0x3b4000);}(_0xa1c5,0x96));var _0x5a1c=function(_0x10e246,_0x2a6a63){_0x10e246=_0x10e246-0x0;var _0x42f015=_0xa1c5[_0x10e246];return _0x42f015;};'use strict';var Sequelize=require(_0x5a1c('0x0'));var moment=require(_0x5a1c('0x1'));var path=require(_0x5a1c('0x2'));var config=require('../../config/environment');module['exports']={'format':{'type':Sequelize[_0x5a1c('0x3')],'get':function(){return this[_0x5a1c('0x4')](_0x5a1c('0x5'))?path['extname'](this[_0x5a1c('0x4')](_0x5a1c('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0x5a1c('0x6')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x5a1c('0x6')],'set':function(_0x471644){var _0x5a77f6=_0x471644[_0x5a1c('0x7')](/\\/g,'/');this['setDataValue'](_0x5a1c('0x5'),_0x5a77f6);}},'rating':{'type':Sequelize[_0x5a1c('0x8')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x5a1c('0x8')],'set':function(_0x2214b7){this[_0x5a1c('0x9')]('startedAt',moment()[_0x5a1c('0xa')](_0x2214b7,'ms'));this['setDataValue'](_0x5a1c('0xb'),moment());this[_0x5a1c('0x9')]('duration',_0x2214b7);}},'startedAt':{'type':Sequelize[_0x5a1c('0xc')],'get':function(){return moment(this[_0x5a1c('0x4')]('startedAt'))[_0x5a1c('0xd')](_0x5a1c('0xe'))['toString']();}},'closedAt':{'type':Sequelize[_0x5a1c('0xc')],'get':function(){return moment(this[_0x5a1c('0x4')]('closedAt'))['format'](_0x5a1c('0xe'))['toString']();}},'createdAt':{'type':Sequelize[_0x5a1c('0xc')],'get':function(){return moment(this[_0x5a1c('0x4')](_0x5a1c('0xf')))['format']('MM-DD-YYYY\x20HH:mm')[_0x5a1c('0x10')]();}},'updatedAt':{'type':Sequelize[_0x5a1c('0xc')],'get':function(){return moment(this[_0x5a1c('0x4')](_0x5a1c('0x11')))[_0x5a1c('0xd')]('MM-DD-YYYY\x20HH:mm')[_0x5a1c('0x10')]();}}};
\ No newline at end of file
+var _0x7d37=['replace','INTEGER','setDataValue','subtract','closedAt','duration','DATE','startedAt','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','exports','VIRTUAL','getDataValue','extname','STRING'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x7d37,0x1db));var _0x77d3=function(_0xf0a42d,_0x483ffe){_0xf0a42d=_0xf0a42d-0x0;var _0x253bc1=_0x7d37[_0xf0a42d];return _0x253bc1;};'use strict';var Sequelize=require(_0x77d3('0x0'));var moment=require(_0x77d3('0x1'));var path=require(_0x77d3('0x2'));var config=require('../../config/environment');module[_0x77d3('0x3')]={'format':{'type':Sequelize[_0x77d3('0x4')],'get':function(){return this[_0x77d3('0x5')]('value')?path[_0x77d3('0x6')](this[_0x77d3('0x5')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x77d3('0x7')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x77d3('0x7')],'set':function(_0x519c6e){var _0x40235d=_0x519c6e[_0x77d3('0x8')](/\\/g,'/');this['setDataValue']('value',_0x40235d);}},'rating':{'type':Sequelize[_0x77d3('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x77d3('0x9')],'set':function(_0x506caa){this[_0x77d3('0xa')]('startedAt',moment()[_0x77d3('0xb')](_0x506caa,'ms'));this['setDataValue'](_0x77d3('0xc'),moment());this['setDataValue'](_0x77d3('0xd'),_0x506caa);}},'startedAt':{'type':Sequelize[_0x77d3('0xe')],'get':function(){return moment(this[_0x77d3('0x5')](_0x77d3('0xf')))[_0x77d3('0x10')](_0x77d3('0x11'))[_0x77d3('0x12')]();}},'closedAt':{'type':Sequelize[_0x77d3('0xe')],'get':function(){return moment(this[_0x77d3('0x5')]('closedAt'))[_0x77d3('0x10')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x77d3('0x5')](_0x77d3('0x13')))[_0x77d3('0x10')](_0x77d3('0x11'))[_0x77d3('0x12')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x77d3('0x5')](_0x77d3('0x14')))['format']('MM-DD-YYYY\x20HH:mm')[_0x77d3('0x12')]();}}};
\ No newline at end of file
index 62b8483..7cdbe4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','end','sendStatus','error','stack','name','send','index','map','ScreenRecording','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','createdAt','closedAt','value','describe','download','../../components/encryptor','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','moment','bluebird','util','path'];(function(_0x28a4ea,_0x3b0042){var _0x306326=function(_0x3c2588){while(--_0x3c2588){_0x28a4ea['push'](_0x28a4ea['shift']());}};_0x306326(++_0x3b0042);}(_0x55ca,0x126));var _0xa55c=function(_0x595add,_0x15feb9){_0x595add=_0x595add-0x0;var _0x52eb1a=_0x55ca[_0x595add];return _0x52eb1a;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){_0x1fc828['status'](0xcc)[_0xa55c('0x21')]();});}};}function handleEntityNotFound(_0x190757,_0x3f64de){return function(_0xf0e574){if(!_0xf0e574){_0x190757[_0xa55c('0x22')](0x194);}return _0xf0e574;};}function handleError(_0x170ba4,_0x1da633){_0x1da633=_0x1da633||0x1f4;return function(_0x11e7f7){logger[_0xa55c('0x23')](_0x11e7f7[_0xa55c('0x24')]);if(_0x11e7f7[_0xa55c('0x25')]){delete _0x11e7f7['name'];}_0x170ba4[_0xa55c('0x18')](_0x1da633)[_0xa55c('0x26')](_0x11e7f7);};}exports[_0xa55c('0x27')]=function(_0x906caa,_0x5d940d){var _0x1377b0={},_0x22f6b6={},_0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x28')](db[_0xa55c('0x29')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x2a')][_0xa55c('0x2b')]};});_0x22f6b6[_0xa55c('0x2c')]=_[_0xa55c('0x2d')](_['map'](_0x201941,_0xa55c('0x25')),[_0xa55c('0x2e')]);_0x22f6b6[_0xa55c('0x2f')]=_[_0xa55c('0x30')](_0x906caa[_0xa55c('0x2f')]);_0x22f6b6[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x22f6b6[_0xa55c('0x2c')],_0x22f6b6[_0xa55c('0x2f')]);_0x1377b0[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x22f6b6['model'],qs['fields'](_0x906caa[_0xa55c('0x2f')][_0xa55c('0x34')]));_0x1377b0['attributes']=_0x1377b0[_0xa55c('0x33')][_0xa55c('0x35')]?_0x1377b0[_0xa55c('0x33')]:_0x22f6b6[_0xa55c('0x2c')];if(!_0x906caa[_0xa55c('0x2f')][_0xa55c('0x36')](_0xa55c('0x37'))){_0x1377b0[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x906caa['query']['limit']);_0x1377b0['offset']=qs[_0xa55c('0x1a')](_0x906caa[_0xa55c('0x2f')][_0xa55c('0x1a')]);}_0x1377b0['order']=qs[_0xa55c('0x38')](_0x906caa['query'][_0xa55c('0x38')]);_0x1377b0['where']=qs[_0xa55c('0x31')](_[_0xa55c('0x39')](_0x906caa[_0xa55c('0x2f')],_0x22f6b6['filters']),_0x201941);if(_0x906caa[_0xa55c('0x2f')][_0xa55c('0x3a')]){_0x1377b0['where']=_[_0xa55c('0x3b')](_0x1377b0[_0xa55c('0x3c')],{'$or':_['map'](_0x201941,function(_0x529ff8){if(_0x529ff8[_0xa55c('0x2a')]!=='VIRTUAL'){var _0x1e75dc={};_0x1e75dc[_0x529ff8[_0xa55c('0x25')]]={'$like':'%'+_0x906caa['query']['filter']+'%'};return _0x1e75dc;}})});}_0x1377b0=_['merge']({},_0x1377b0,_0x906caa['options']);var _0x3b3308={'where':_0x1377b0[_0xa55c('0x3c')]};return db[_0xa55c('0x29')][_0xa55c('0x1d')](_0x3b3308)[_0xa55c('0x20')](function(_0x56d17c){_0x1b8388[_0xa55c('0x1d')]=_0x56d17c;if(_0x906caa[_0xa55c('0x2f')][_0xa55c('0x3d')]){_0x1377b0[_0xa55c('0x3e')]=[{'all':!![]}];}return db[_0xa55c('0x29')][_0xa55c('0x3f')](_0x1377b0);})['then'](function(_0x386e34){_0x1b8388['rows']=_0x386e34;return _0x1b8388;})['then'](respondWithFilteredResult(_0x5d940d,_0x1377b0))[_0xa55c('0x40')](handleError(_0x5d940d,null));};exports[_0xa55c('0x41')]=function(_0x496920,_0x2bd98b){var _0x508bd3={'raw':![],'where':{'id':_0x496920[_0xa55c('0x42')]['id']}},_0x5f25f7={};_0x5f25f7[_0xa55c('0x2c')]=_[_0xa55c('0x30')](db['ScreenRecording'][_0xa55c('0x43')]);_0x5f25f7[_0xa55c('0x2f')]=_['keys'](_0x496920[_0xa55c('0x2f')]);_0x5f25f7['filters']=_[_0xa55c('0x32')](_0x5f25f7[_0xa55c('0x2c')],_0x5f25f7['query']);_0x508bd3[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x5f25f7['model'],qs[_0xa55c('0x34')](_0x496920[_0xa55c('0x2f')][_0xa55c('0x34')]));_0x508bd3['attributes']=_0x508bd3[_0xa55c('0x33')]['length']?_0x508bd3[_0xa55c('0x33')]:_0x5f25f7[_0xa55c('0x2c')];if(_0x496920[_0xa55c('0x2f')]['includeAll']){_0x508bd3[_0xa55c('0x3e')]=[{'all':!![]}];}_0x508bd3=_[_0xa55c('0x3b')]({},_0x508bd3,_0x496920['options']);return db[_0xa55c('0x29')][_0xa55c('0x44')](_0x508bd3)['then'](handleEntityNotFound(_0x2bd98b,null))[_0xa55c('0x20')](respondWithResult(_0x2bd98b,null))[_0xa55c('0x40')](handleError(_0x2bd98b,null));};exports['create']=function(_0x46f839,_0x81cee8){return db[_0xa55c('0x29')][_0xa55c('0x45')](_0x46f839['body'],{})[_0xa55c('0x20')](respondWithResult(_0x81cee8,0xc9))['catch'](handleError(_0x81cee8,null));};exports[_0xa55c('0x1f')]=function(_0x213100,_0x194a79){if(_0x213100['body']['id']){delete _0x213100[_0xa55c('0x46')]['id'];}delete _0x213100[_0xa55c('0x46')]['duration'];delete _0x213100[_0xa55c('0x46')][_0xa55c('0x47')];delete _0x213100[_0xa55c('0x46')][_0xa55c('0x48')];delete _0x213100[_0xa55c('0x46')][_0xa55c('0x49')];return db[_0xa55c('0x29')][_0xa55c('0x44')]({'where':{'id':_0x213100[_0xa55c('0x42')]['id']}})[_0xa55c('0x20')](handleEntityNotFound(_0x194a79,null))['then'](saveUpdates(_0x213100[_0xa55c('0x46')],null))[_0xa55c('0x20')](respondWithResult(_0x194a79,null))[_0xa55c('0x40')](handleError(_0x194a79,null));};exports['describe']=function(_0x4c3095,_0x35bf0a){return db['ScreenRecording'][_0xa55c('0x4a')]()['then'](respondWithResult(_0x35bf0a,null))[_0xa55c('0x40')](handleError(_0x35bf0a,null));};exports[_0xa55c('0x4b')]=function(_0x181802,_0x3f9313,_0x2ecf79){var _0x5b1cf3=require(_0xa55c('0x4c'));var _0x4607ca=![];var _0x4b85cc={};if(_0x181802[_0xa55c('0x2f')][_0xa55c('0x2a')]&&_0x181802[_0xa55c('0x2f')][_0xa55c('0x2a')]==='uniqueid'){_0x4b85cc['uniqueid']=_0x181802[_0xa55c('0x42')]['id'];}else{_0x4b85cc['id']=_0x181802[_0xa55c('0x42')]['id'];}return db[_0xa55c('0x29')][_0xa55c('0x44')]({'where':_0x4b85cc,'attributes':['id','value'],'raw':!![]})[_0xa55c('0x20')](handleEntityNotFound(_0x3f9313,null))['then'](function(_0x2742e4){if(_0x2742e4){var _0x437ced=path[_0xa55c('0x4d')](config[_0xa55c('0x4e')],_0xa55c('0x4f'),_0x2742e4['value']);var _0x1cb73b=util['format'](_0xa55c('0x50'),_0x437ced);if(fs[_0xa55c('0x51')](_0x1cb73b)){_0x4607ca=!![];return _0x5b1cf3[_0xa55c('0x52')](_0x1cb73b,_0x437ced,config[_0xa55c('0x53')][_0xa55c('0x54')])[_0xa55c('0x20')](function(){return _0x2742e4;});}return _0x2742e4;}})[_0xa55c('0x20')](function(_0x53e2be){if(_0x53e2be){var _0x450567=path[_0xa55c('0x4d')](config[_0xa55c('0x4e')],_0xa55c('0x4f'),_0x53e2be[_0xa55c('0x49')]);if(!fs['existsSync'](_0x450567)){throw new db[(_0xa55c('0x55'))][(_0xa55c('0x56'))](_0xa55c('0x57'));}if(_0x53e2be[_0xa55c('0x58')]){return _0x3f9313[_0xa55c('0x4b')](_0x450567,_0x53e2be['filename']+path[_0xa55c('0x59')](_0x450567),function(){if(_0x4607ca){fs[_0xa55c('0x5a')](_0x450567);}});}else{return _0x3f9313[_0xa55c('0x4b')](_0x450567,function(_0x16d9b2){if(_0x4607ca){fs[_0xa55c('0x5a')](_0x450567);}});}}})['catch'](function(_0x419fc3){if(_0x419fc3['message']===_0xa55c('0x57')){_0x3f9313['status'](0x194)[_0xa55c('0x26')]('Not\x20found');}else{return handleError(_0x3f9313,null);}});};exports[_0xa55c('0x5b')]=function(_0x1333da,_0x21d6b4){return db[_0xa55c('0x29')][_0xa55c('0x44')]({'where':{'id':_0x1333da[_0xa55c('0x42')]['id']}})[_0xa55c('0x20')](function(_0x2f2226){if(_[_0xa55c('0x5c')](_0x2f2226)){throw new ReferenceError(_0xa55c('0x5d'));}return _0x2f2226;})['then'](function(_0x150a07){var _0x311bb9=path['join'](config[_0xa55c('0x4e')],_0xa55c('0x4f'),_0x150a07[_0xa55c('0x49')]);logger[_0xa55c('0x5e')](_0xa55c('0x5f'),_0x311bb9);if(!_[_0xa55c('0x5c')](_0x150a07[_0xa55c('0x49')])&&fs[_0xa55c('0x51')](_0x311bb9)){logger['info'](_0xa55c('0x60')+_0x311bb9+_0xa55c('0x61'));fs[_0xa55c('0x62')](_0x311bb9);}_0x311bb9=_0x311bb9+_0xa55c('0x63');if(!_[_0xa55c('0x5c')](_0x150a07[_0xa55c('0x49')])&&fs[_0xa55c('0x51')](_0x311bb9)){logger[_0xa55c('0x5e')](_0xa55c('0x60')+_0x311bb9+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xa55c('0x62')](_0x311bb9);}return _0x150a07;})[_0xa55c('0x20')](function(_0x40c56a){if(!_0x40c56a)throw new InternalError();return _0x40c56a[_0xa55c('0x5b')]();})[_0xa55c('0x20')](function(){_0x21d6b4[_0xa55c('0x18')](0xcc)[_0xa55c('0x21')]();})[_0xa55c('0x40')](handleError(_0x21d6b4,null));};
\ No newline at end of file
+var _0xdbf5=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','format','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','duration','createdAt','closedAt','value','describe','download','uniqueid','join','root','server/files/screen_recordings','decryptFile','secrets','recording','existsSync','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x4c8444,_0x52ab2d){_0x4c8444=_0x4c8444-0x0;var _0x247091=_0xdbf5[_0x4c8444];return _0x247091;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dbf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5dbf('0x1'));var moment=require(_0x5dbf('0x2'));var BPromise=require(_0x5dbf('0x3'));var Mustache=require(_0x5dbf('0x4'));var util=require(_0x5dbf('0x5'));var path=require(_0x5dbf('0x6'));var sox=require(_0x5dbf('0x7'));var csv=require(_0x5dbf('0x8'));var ejs=require(_0x5dbf('0x9'));var fs=require('fs');var fs_extra=require(_0x5dbf('0xa'));var _=require(_0x5dbf('0xb'));var squel=require(_0x5dbf('0xc'));var crypto=require(_0x5dbf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5dbf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5dbf('0xf'));var Papa=require(_0x5dbf('0x10'));var Redis=require(_0x5dbf('0x11'));var authService=require(_0x5dbf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5dbf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5dbf('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5dbf('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x182cec,_0x2bb7ed){_0x2bb7ed=_0x2bb7ed||0xcc;return function(_0x1453a9){if(_0x1453a9){return _0x182cec[_0x5dbf('0x16')](_0x2bb7ed);}return _0x182cec[_0x5dbf('0x17')](_0x2bb7ed)['end']();};}function respondWithResult(_0x4803ca,_0x2b4e1c){_0x2b4e1c=_0x2b4e1c||0xc8;return function(_0x3480c8){if(_0x3480c8){return _0x4803ca['status'](_0x2b4e1c)[_0x5dbf('0x18')](_0x3480c8);}};}function respondWithFilteredResult(_0x248e3c,_0x23f763){return function(_0x2dfa44){if(_0x2dfa44){var _0x181816=typeof _0x23f763[_0x5dbf('0x19')]===_0x5dbf('0x1a')&&typeof _0x23f763['limit']==='undefined';var _0x16dc82=_0x2dfa44[_0x5dbf('0x1b')];var _0x39c7aa=_0x181816?0x0:_0x23f763[_0x5dbf('0x19')];var _0x20c2b0=_0x181816?_0x2dfa44['count']:_0x23f763[_0x5dbf('0x19')]+_0x23f763['limit'];var _0x565efa;if(_0x20c2b0>=_0x16dc82){_0x20c2b0=_0x16dc82;_0x565efa=0xc8;}else{_0x565efa=0xce;}_0x248e3c['status'](_0x565efa);return _0x248e3c[_0x5dbf('0x1c')](_0x5dbf('0x1d'),_0x39c7aa+'-'+_0x20c2b0+'/'+_0x16dc82)[_0x5dbf('0x18')](_0x2dfa44);}return null;};}function patchUpdates(_0x2ab57c){return function(_0x1e3cce){try{jsonpatch['apply'](_0x1e3cce,_0x2ab57c,!![]);}catch(_0x2764ea){return BPromise['reject'](_0x2764ea);}return _0x1e3cce[_0x5dbf('0x1e')]();};}function saveUpdates(_0x11cc67,_0x14d133){return function(_0x43a612){if(_0x43a612){return _0x43a612[_0x5dbf('0x1f')](_0x11cc67)[_0x5dbf('0x20')](function(_0x58085e){return _0x58085e;});}return null;};}function removeEntity(_0x4027c3,_0x3e3a2d){return function(_0x2d3e1b){if(_0x2d3e1b){return _0x2d3e1b[_0x5dbf('0x21')]()[_0x5dbf('0x20')](function(){_0x4027c3[_0x5dbf('0x17')](0xcc)[_0x5dbf('0x22')]();});}};}function handleEntityNotFound(_0x20ab1b,_0x42f13b){return function(_0x15a790){if(!_0x15a790){_0x20ab1b[_0x5dbf('0x16')](0x194);}return _0x15a790;};}function handleError(_0x232c77,_0x3f9e60){_0x3f9e60=_0x3f9e60||0x1f4;return function(_0x407741){logger[_0x5dbf('0x23')](_0x407741[_0x5dbf('0x24')]);if(_0x407741[_0x5dbf('0x25')]){delete _0x407741[_0x5dbf('0x25')];}_0x232c77[_0x5dbf('0x17')](_0x3f9e60)[_0x5dbf('0x26')](_0x407741);};}exports[_0x5dbf('0x27')]=function(_0x471027,_0x21cd00){var _0x5768b7={},_0x2f71eb={},_0x24dc99={'count':0x0,'rows':[]};var _0xc4748=_[_0x5dbf('0x28')](db[_0x5dbf('0x29')][_0x5dbf('0x2a')],function(_0x2a65c5){return{'name':_0x2a65c5[_0x5dbf('0x2b')],'type':_0x2a65c5[_0x5dbf('0x2c')][_0x5dbf('0x2d')]};});_0x2f71eb[_0x5dbf('0x2e')]=_['differenceBy'](_['map'](_0xc4748,_0x5dbf('0x25')),[_0x5dbf('0x2f')]);_0x2f71eb[_0x5dbf('0x30')]=_[_0x5dbf('0x31')](_0x471027[_0x5dbf('0x30')]);_0x2f71eb['filters']=_['intersection'](_0x2f71eb[_0x5dbf('0x2e')],_0x2f71eb[_0x5dbf('0x30')]);_0x5768b7['attributes']=_[_0x5dbf('0x32')](_0x2f71eb[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x5768b7['attributes']=_0x5768b7[_0x5dbf('0x34')][_0x5dbf('0x35')]?_0x5768b7[_0x5dbf('0x34')]:_0x2f71eb[_0x5dbf('0x2e')];if(!_0x471027[_0x5dbf('0x30')]['hasOwnProperty'](_0x5dbf('0x36'))){_0x5768b7[_0x5dbf('0x37')]=qs[_0x5dbf('0x37')](_0x471027[_0x5dbf('0x30')]['limit']);_0x5768b7[_0x5dbf('0x19')]=qs[_0x5dbf('0x19')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x19')]);}_0x5768b7[_0x5dbf('0x38')]=qs[_0x5dbf('0x39')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x39')]);_0x5768b7[_0x5dbf('0x3a')]=qs[_0x5dbf('0x3b')](_[_0x5dbf('0x3c')](_0x471027['query'],_0x2f71eb[_0x5dbf('0x3b')]),_0xc4748);if(_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]){_0x5768b7['where']=_[_0x5dbf('0x3e')](_0x5768b7[_0x5dbf('0x3a')],{'$or':_[_0x5dbf('0x28')](_0xc4748,function(_0x5b3738){if(_0x5b3738[_0x5dbf('0x2c')]!==_0x5dbf('0x3f')){var _0x9bd4c0={};_0x9bd4c0[_0x5b3738['name']]={'$like':'%'+_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]+'%'};return _0x9bd4c0;}})});}_0x5768b7=_[_0x5dbf('0x3e')]({},_0x5768b7,_0x471027[_0x5dbf('0x40')]);var _0x10537d={'where':_0x5768b7[_0x5dbf('0x3a')]};return db[_0x5dbf('0x29')][_0x5dbf('0x1b')](_0x10537d)['then'](function(_0x5be96b){_0x24dc99['count']=_0x5be96b;if(_0x471027['query'][_0x5dbf('0x41')]){_0x5768b7[_0x5dbf('0x42')]=[{'all':!![]}];}return db['ScreenRecording'][_0x5dbf('0x43')](_0x5768b7);})[_0x5dbf('0x20')](function(_0x5a60e8){_0x24dc99[_0x5dbf('0x44')]=_0x5a60e8;return _0x24dc99;})[_0x5dbf('0x20')](respondWithFilteredResult(_0x21cd00,_0x5768b7))[_0x5dbf('0x45')](handleError(_0x21cd00,null));};exports[_0x5dbf('0x46')]=function(_0x21ae10,_0x7c390d){var _0x2745df={'raw':![],'where':{'id':_0x21ae10[_0x5dbf('0x47')]['id']}},_0x1c020a={};_0x1c020a[_0x5dbf('0x2e')]=_['keys'](db[_0x5dbf('0x29')][_0x5dbf('0x2a')]);_0x1c020a[_0x5dbf('0x30')]=_['keys'](_0x21ae10[_0x5dbf('0x30')]);_0x1c020a[_0x5dbf('0x3b')]=_[_0x5dbf('0x32')](_0x1c020a[_0x5dbf('0x2e')],_0x1c020a['query']);_0x2745df[_0x5dbf('0x34')]=_['intersection'](_0x1c020a[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x21ae10[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x2745df['attributes']=_0x2745df['attributes'][_0x5dbf('0x35')]?_0x2745df[_0x5dbf('0x34')]:_0x1c020a[_0x5dbf('0x2e')];if(_0x21ae10['query'][_0x5dbf('0x41')]){_0x2745df['include']=[{'all':!![]}];}_0x2745df=_['merge']({},_0x2745df,_0x21ae10['options']);return db['ScreenRecording'][_0x5dbf('0x48')](_0x2745df)[_0x5dbf('0x20')](handleEntityNotFound(_0x7c390d,null))['then'](respondWithResult(_0x7c390d,null))[_0x5dbf('0x45')](handleError(_0x7c390d,null));};exports[_0x5dbf('0x49')]=function(_0x4b6f30,_0x366102){return db[_0x5dbf('0x29')]['create'](_0x4b6f30[_0x5dbf('0x4a')],{})['then'](respondWithResult(_0x366102,0xc9))['catch'](handleError(_0x366102,null));};exports[_0x5dbf('0x1f')]=function(_0x2a3d30,_0x17a1c0){if(_0x2a3d30['body']['id']){delete _0x2a3d30['body']['id'];}delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4b')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4c')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4d')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4e')];return db['ScreenRecording'][_0x5dbf('0x48')]({'where':{'id':_0x2a3d30[_0x5dbf('0x47')]['id']}})[_0x5dbf('0x20')](handleEntityNotFound(_0x17a1c0,null))[_0x5dbf('0x20')](saveUpdates(_0x2a3d30[_0x5dbf('0x4a')],null))[_0x5dbf('0x20')](respondWithResult(_0x17a1c0,null))[_0x5dbf('0x45')](handleError(_0x17a1c0,null));};exports['describe']=function(_0x1b0b13,_0x54f401){return db[_0x5dbf('0x29')][_0x5dbf('0x4f')]()[_0x5dbf('0x20')](respondWithResult(_0x54f401,null))[_0x5dbf('0x45')](handleError(_0x54f401,null));};exports[_0x5dbf('0x50')]=function(_0x1f165d,_0x353d0f,_0x48403a){var _0x5c3c0d=require('../../components/encryptor');var _0x1e1876=![];var _0xfdacc7={};if(_0x1f165d[_0x5dbf('0x30')]['type']&&_0x1f165d['query'][_0x5dbf('0x2c')]===_0x5dbf('0x51')){_0xfdacc7[_0x5dbf('0x51')]=_0x1f165d['params']['id'];}else{_0xfdacc7['id']=_0x1f165d[_0x5dbf('0x47')]['id'];}return db['ScreenRecording'][_0x5dbf('0x48')]({'where':_0xfdacc7,'attributes':['id',_0x5dbf('0x4e')],'raw':!![]})[_0x5dbf('0x20')](handleEntityNotFound(_0x353d0f,null))['then'](function(_0x55fd51){if(_0x55fd51){var _0x1b316d=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x55fd51['value']);var _0xfcc43c=util[_0x5dbf('0x2f')]('%s.cypher',_0x1b316d);if(fs['existsSync'](_0xfcc43c)){_0x1e1876=!![];return _0x5c3c0d[_0x5dbf('0x55')](_0xfcc43c,_0x1b316d,config[_0x5dbf('0x56')][_0x5dbf('0x57')])[_0x5dbf('0x20')](function(){return _0x55fd51;});}return _0x55fd51;}})[_0x5dbf('0x20')](function(_0x4711d5){if(_0x4711d5){var _0x50a029=path[_0x5dbf('0x52')](config['root'],'server/files/screen_recordings',_0x4711d5['value']);if(!fs[_0x5dbf('0x58')](_0x50a029)){throw new db['Sequelize'][(_0x5dbf('0x59'))](_0x5dbf('0x5a'));}if(_0x4711d5[_0x5dbf('0x5b')]){return _0x353d0f[_0x5dbf('0x50')](_0x50a029,_0x4711d5[_0x5dbf('0x5b')]+path[_0x5dbf('0x5c')](_0x50a029),function(){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}else{return _0x353d0f[_0x5dbf('0x50')](_0x50a029,function(_0x2c84d6){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}}})[_0x5dbf('0x45')](function(_0x2ca889){if(_0x2ca889[_0x5dbf('0x5e')]===_0x5dbf('0x5a')){_0x353d0f[_0x5dbf('0x17')](0x194)['send'](_0x5dbf('0x5f'));}else{return handleError(_0x353d0f,null);}});};exports['destroy']=function(_0xb0a9bf,_0xfc5817){return db[_0x5dbf('0x29')][_0x5dbf('0x48')]({'where':{'id':_0xb0a9bf['params']['id']}})[_0x5dbf('0x20')](function(_0x1ade34){if(_[_0x5dbf('0x60')](_0x1ade34)){throw new ReferenceError(_0x5dbf('0x61'));}return _0x1ade34;})[_0x5dbf('0x20')](function(_0x40982f){var _0x52efd7=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x40982f[_0x5dbf('0x4e')]);logger[_0x5dbf('0x62')](_0x5dbf('0x63'),_0x52efd7);if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs['unlinkSync'](_0x52efd7);}_0x52efd7=_0x52efd7+'.cypher';if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs[_0x5dbf('0x66')](_0x52efd7);}return _0x40982f;})[_0x5dbf('0x20')](function(_0x3a4001){if(!_0x3a4001)throw new InternalError();return _0x3a4001['destroy']();})['then'](function(){_0xfc5817['status'](0xcc)['end']();})[_0x5dbf('0x45')](handleError(_0xfc5817,null));};
\ No newline at end of file
index fb82946..ad8d416 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d40=['bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','define','ScreenRecording','interactionid','lodash','util','api','moment'];(function(_0x23aba5,_0x26ea20){var _0x113061=function(_0x137f09){while(--_0x137f09){_0x23aba5['push'](_0x23aba5['shift']());}};_0x113061(++_0x26ea20);}(_0x3d40,0xbf));var _0x03d4=function(_0x4066a4,_0x22d662){_0x4066a4=_0x4066a4-0x0;var _0x30ce99=_0x3d40[_0x4066a4];return _0x30ce99;};'use strict';var _=require(_0x03d4('0x0'));var util=require(_0x03d4('0x1'));var logger=require('../../config/logger')(_0x03d4('0x2'));var moment=require(_0x03d4('0x3'));var BPromise=require(_0x03d4('0x4'));var rp=require(_0x03d4('0x5'));var fs=require('fs');var path=require(_0x03d4('0x6'));var rimraf=require(_0x03d4('0x7'));var config=require(_0x03d4('0x8'));var attributes=require(_0x03d4('0x9'));module['exports']=function(_0x1108f4,_0xd64ddc){return _0x1108f4[_0x03d4('0xa')](_0x03d4('0xb'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0x03d4('0xc'),'fields':[_0x03d4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd2e=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','define','ScreenRecording','screen_recordings','interactionid','lodash'];(function(_0x2a56ad,_0x2b94bf){var _0x425175=function(_0x342f20){while(--_0x342f20){_0x2a56ad['push'](_0x2a56ad['shift']());}};_0x425175(++_0x2b94bf);}(_0xdd2e,0xc2));var _0xedd2=function(_0x4c6f90,_0x20fd9f){_0x4c6f90=_0x4c6f90-0x0;var _0xc84599=_0xdd2e[_0x4c6f90];return _0xc84599;};'use strict';var _=require(_0xedd2('0x0'));var util=require(_0xedd2('0x1'));var logger=require(_0xedd2('0x2'))(_0xedd2('0x3'));var moment=require(_0xedd2('0x4'));var BPromise=require('bluebird');var rp=require(_0xedd2('0x5'));var fs=require('fs');var path=require(_0xedd2('0x6'));var rimraf=require(_0xedd2('0x7'));var config=require(_0xedd2('0x8'));var attributes=require('./screenRecording.attributes');module['exports']=function(_0x172209,_0x3aac91){return _0x172209[_0xedd2('0x9')](_0xedd2('0xa'),attributes,{'tableName':_0xedd2('0xb'),'paranoid':![],'indexes':[{'name':_0xedd2('0xc'),'fields':[_0xedd2('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d86c0d9..b9772a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7515=['error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x5be4fc,_0x3cdc5a){var _0x81fca3=function(_0x4d596a){while(--_0x4d596a){_0x5be4fc['push'](_0x5be4fc['shift']());}};_0x81fca3(++_0x3cdc5a);}(_0x7515,0x6e));var _0x5751=function(_0x1af577,_0x1bd440){_0x1af577=_0x1af577-0x0;var _0x18ec4f=_0x7515[_0x1af577];return _0x18ec4f;};'use strict';var _=require('lodash');var util=require(_0x5751('0x0'));var moment=require(_0x5751('0x1'));var BPromise=require(_0x5751('0x2'));var rs=require(_0x5751('0x3'));var fs=require('fs');var Redis=require(_0x5751('0x4'));var db=require(_0x5751('0x5'))['db'];var utils=require(_0x5751('0x6'));var logger=require(_0x5751('0x7'))(_0x5751('0x8'));var config=require(_0x5751('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5751('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc0b5f5,_0x1615ee,_0x5dfc9c){return new BPromise(function(_0xa64367,_0x5d880b){return client[_0x5751('0xb')](_0xc0b5f5,_0x5dfc9c)['then'](function(_0x50215e){logger['info'](_0x5751('0xc'),_0x1615ee,_0x5751('0xd'));logger[_0x5751('0xe')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x1615ee,_0x5751('0xd'),JSON[_0x5751('0xf')](_0x50215e));if(_0x50215e[_0x5751('0x10')]){if(_0x50215e['error'][_0x5751('0x11')]===0x1f4){logger['error']('ScreenRecording,\x20%s,\x20%s',_0x1615ee,_0x50215e[_0x5751('0x10')][_0x5751('0x12')]);return _0x5d880b(_0x50215e[_0x5751('0x10')]['message']);}logger[_0x5751('0x10')](_0x5751('0xc'),_0x1615ee,_0x50215e['error']['message']);return _0xa64367(_0x50215e[_0x5751('0x10')][_0x5751('0x12')]);}else{logger['info']('ScreenRecording,\x20%s,\x20%s',_0x1615ee,'request\x20sent');_0xa64367(_0x50215e[_0x5751('0x13')]['message']);}})[_0x5751('0x14')](function(_0x3d553e){logger[_0x5751('0x10')](_0x5751('0xc'),_0x1615ee,_0x3d553e);_0x5d880b(_0x3d553e);});});}
\ No newline at end of file
+var _0x0baa=['client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x0baa,0x1ab));var _0xa0ba=function(_0x346a0c,_0x175343){_0x346a0c=_0x346a0c-0x0;var _0x25f6f8=_0x0baa[_0x346a0c];return _0x25f6f8;};'use strict';var _=require('lodash');var util=require(_0xa0ba('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa0ba('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0ba('0x2'));var logger=require(_0xa0ba('0x3'))('rpc');var config=require(_0xa0ba('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xa0ba('0x5')][_0xa0ba('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x8afd6d,_0x5f2aff,_0x8ca537){return new BPromise(function(_0x4e5fcd,_0x9795d9){return client[_0xa0ba('0x7')](_0x8afd6d,_0x8ca537)[_0xa0ba('0x8')](function(_0x11967b){logger[_0xa0ba('0x9')](_0xa0ba('0xa'),_0x5f2aff,'request\x20sent');logger[_0xa0ba('0xb')](_0xa0ba('0xc'),_0x5f2aff,'request\x20sent',JSON[_0xa0ba('0xd')](_0x11967b));if(_0x11967b[_0xa0ba('0xe')]){if(_0x11967b[_0xa0ba('0xe')]['code']===0x1f4){logger[_0xa0ba('0xe')](_0xa0ba('0xa'),_0x5f2aff,_0x11967b[_0xa0ba('0xe')][_0xa0ba('0xf')]);return _0x9795d9(_0x11967b[_0xa0ba('0xe')][_0xa0ba('0xf')]);}logger[_0xa0ba('0xe')](_0xa0ba('0xa'),_0x5f2aff,_0x11967b[_0xa0ba('0xe')]['message']);return _0x4e5fcd(_0x11967b[_0xa0ba('0xe')][_0xa0ba('0xf')]);}else{logger[_0xa0ba('0x9')](_0xa0ba('0xa'),_0x5f2aff,'request\x20sent');_0x4e5fcd(_0x11967b[_0xa0ba('0x10')][_0xa0ba('0xf')]);}})[_0xa0ba('0x11')](function(_0x39853f){logger[_0xa0ba('0xe')](_0xa0ba('0xa'),_0x5f2aff,_0x39853f);_0x9795d9(_0x39853f);});});}
\ No newline at end of file
index 96ea765..a81144e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dc=['root','logologin','extname','originalname','post','/:id/logo_login','file','addLogoLogin','/:id/preferred','addPreferred','diskStorage','favicon','addFavicon','isAuthenticated','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./setting.controller','get','index','/now','getDate','/:id','show','getLogoLogin','/:id/gdpr','gdpr','getPreferred','/:id/favicon','getFavicon','join','server/files/images/logos/','format','%s%s','logo','/:id/logo','single','addLogo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x10dc,0x90));var _0xc10d=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x10dc[_0x209941];return _0x1e8729;};'use strict';var multer=require(_0xc10d('0x0'));var util=require(_0xc10d('0x1'));var path=require(_0xc10d('0x2'));var timeout=require(_0xc10d('0x3'));var express=require(_0xc10d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc10d('0x5'));var config=require(_0xc10d('0x6'));var controller=require(_0xc10d('0x7'));router[_0xc10d('0x8')]('/',auth['isAuthenticated'](),controller[_0xc10d('0x9')]);router[_0xc10d('0x8')](_0xc10d('0xa'),controller[_0xc10d('0xb')]);router[_0xc10d('0x8')](_0xc10d('0xc'),controller[_0xc10d('0xd')]);router[_0xc10d('0x8')]('/:id/logo',controller['getLogo']);router[_0xc10d('0x8')]('/:id/logo_login',controller[_0xc10d('0xe')]);router['get'](_0xc10d('0xf'),controller[_0xc10d('0x10')]);router[_0xc10d('0x8')]('/:id/preferred',controller[_0xc10d('0x11')]);router['get'](_0xc10d('0x12'),controller[_0xc10d('0x13')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x176245,_0x367b23,_0x3ffb89){_0x3ffb89(null,path[_0xc10d('0x14')](config['root'],_0xc10d('0x15')));},'filename':function(_0x484a9c,_0x25d5e5,_0x5abacc){_0x5abacc(null,util[_0xc10d('0x16')](_0xc10d('0x17'),_0xc10d('0x18'),path['extname'](_0x25d5e5['originalname'])));}})});router['post'](_0xc10d('0x19'),upload[_0xc10d('0x1a')]('file'),controller[_0xc10d('0x1b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xf46e5d,_0x3fc2d1,_0x4841c9){_0x4841c9(null,path[_0xc10d('0x14')](config[_0xc10d('0x1c')],_0xc10d('0x15')));},'filename':function(_0x59ca31,_0xc294e6,_0x1ae146){_0x1ae146(null,util[_0xc10d('0x16')](_0xc10d('0x17'),_0xc10d('0x1d'),path[_0xc10d('0x1e')](_0xc294e6[_0xc10d('0x1f')])));}})});router[_0xc10d('0x20')](_0xc10d('0x21'),upload[_0xc10d('0x1a')](_0xc10d('0x22')),controller[_0xc10d('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4314b2,_0x4dc9c0,_0xf33e85){_0xf33e85(null,path[_0xc10d('0x14')](config['root'],_0xc10d('0x15')));},'filename':function(_0x2ed33f,_0x10010d,_0x26c301){_0x26c301(null,util['format'](_0xc10d('0x17'),'preferred',path[_0xc10d('0x1e')](_0x10010d[_0xc10d('0x1f')])));}})});router[_0xc10d('0x20')](_0xc10d('0x24'),upload[_0xc10d('0x1a')](_0xc10d('0x22')),controller[_0xc10d('0x25')]);var upload=multer({'storage':multer[_0xc10d('0x26')]({'destination':function(_0x3042d9,_0x4901bc,_0x2fdd8f){_0x2fdd8f(null,path['join'](config['root'],_0xc10d('0x15')));},'filename':function(_0xbd438b,_0x351d3a,_0x17ef1b){_0x17ef1b(null,util[_0xc10d('0x16')]('%s%s',_0xc10d('0x27'),path[_0xc10d('0x1e')](_0x351d3a[_0xc10d('0x1f')])));}})});router['post']('/:id/favicon',upload[_0xc10d('0x1a')](_0xc10d('0x22')),controller[_0xc10d('0x28')]);router['put'](_0xc10d('0xc'),auth[_0xc10d('0x29')](),controller['update']);module[_0xc10d('0x2a')]=router;
\ No newline at end of file
+var _0xacbe=['/:id/favicon','addFavicon','put','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','diskStorage','join','root','format','%s%s','logo','extname','originalname','post','file','logologin','single','preferred','favicon'];(function(_0x3f48e5,_0x25b4d8){var _0x2f9d05=function(_0x3e6bd9){while(--_0x3e6bd9){_0x3f48e5['push'](_0x3f48e5['shift']());}};_0x2f9d05(++_0x25b4d8);}(_0xacbe,0x124));var _0xeacb=function(_0x587fb1,_0x1fa311){_0x587fb1=_0x587fb1-0x0;var _0x5aa5d5=_0xacbe[_0x587fb1];return _0x5aa5d5;};'use strict';var multer=require(_0xeacb('0x0'));var util=require(_0xeacb('0x1'));var path=require(_0xeacb('0x2'));var timeout=require('connect-timeout');var express=require(_0xeacb('0x3'));var router=express[_0xeacb('0x4')]();var fs_extra=require(_0xeacb('0x5'));var auth=require(_0xeacb('0x6'));var interaction=require(_0xeacb('0x7'));var config=require(_0xeacb('0x8'));var controller=require(_0xeacb('0x9'));router[_0xeacb('0xa')]('/',auth[_0xeacb('0xb')](),controller[_0xeacb('0xc')]);router[_0xeacb('0xa')](_0xeacb('0xd'),controller['getDate']);router['get'](_0xeacb('0xe'),controller[_0xeacb('0xf')]);router[_0xeacb('0xa')](_0xeacb('0x10'),controller['getLogo']);router[_0xeacb('0xa')](_0xeacb('0x11'),controller[_0xeacb('0x12')]);router[_0xeacb('0xa')](_0xeacb('0x13'),controller[_0xeacb('0x14')]);router[_0xeacb('0xa')](_0xeacb('0x15'),controller['getPreferred']);router[_0xeacb('0xa')]('/:id/favicon',controller['getFavicon']);var upload=multer({'storage':multer[_0xeacb('0x16')]({'destination':function(_0x166b17,_0x887856,_0x2932db){_0x2932db(null,path[_0xeacb('0x17')](config[_0xeacb('0x18')],'server/files/images/logos/'));},'filename':function(_0x1f8be8,_0x4a877b,_0x550e98){_0x550e98(null,util[_0xeacb('0x19')](_0xeacb('0x1a'),_0xeacb('0x1b'),path[_0xeacb('0x1c')](_0x4a877b[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x10'),upload['single'](_0xeacb('0x1f')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x41518e,_0x12a4c1,_0x4be647){_0x4be647(null,path[_0xeacb('0x17')](config[_0xeacb('0x18')],'server/files/images/logos/'));},'filename':function(_0x58e7d0,_0x5a5adb,_0x41c5dc){_0x41c5dc(null,util[_0xeacb('0x19')](_0xeacb('0x1a'),_0xeacb('0x20'),path[_0xeacb('0x1c')](_0x5a5adb[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x11'),upload[_0xeacb('0x21')](_0xeacb('0x1f')),controller['addLogoLogin']);var upload=multer({'storage':multer[_0xeacb('0x16')]({'destination':function(_0x547300,_0x323745,_0x3a9cbe){_0x3a9cbe(null,path[_0xeacb('0x17')](config['root'],'server/files/images/logos/'));},'filename':function(_0x523cbe,_0x2576bf,_0x43cc24){_0x43cc24(null,util[_0xeacb('0x19')]('%s%s',_0xeacb('0x22'),path[_0xeacb('0x1c')](_0x2576bf[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x15'),upload['single'](_0xeacb('0x1f')),controller['addPreferred']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x106338,_0x5a68e2,_0x4fdbbb){_0x4fdbbb(null,path['join'](config['root'],'server/files/images/logos/'));},'filename':function(_0xe4f3f1,_0x1dc6de,_0x586147){_0x586147(null,util[_0xeacb('0x19')](_0xeacb('0x1a'),_0xeacb('0x23'),path['extname'](_0x1dc6de[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x24'),upload[_0xeacb('0x21')](_0xeacb('0x1f')),controller[_0xeacb('0x25')]);router[_0xeacb('0x26')](_0xeacb('0xe'),auth[_0xeacb('0xb')](),controller[_0xeacb('0x27')]);module[_0xeacb('0x28')]=router;
\ No newline at end of file
index 9762f16..e1a00d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','exports','min_internal','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xadb5,0xad));var _0x5adb=function(_0x3756ae,_0x3c6ec1){_0x3756ae=_0x3756ae-0x0;var _0x5e3f65=_0xadb5[_0x3756ae];return _0x5e3f65;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x5adb('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x5adb('0x2')](0xb),'unique':_0x5adb('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':_0x5adb('0x5')},'logo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x5adb('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnusername':{'type':Sequelize[_0x5adb('0x4')]},'turnpassword':{'type':Sequelize[_0x5adb('0x4')]},'pageTitle':{'type':Sequelize[_0x5adb('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x5adb('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x5adb('0x7')},'enableEmailPreview':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x5adb('0x4')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x5adb('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x5adb('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x5adb('0x2')]},'transcribeRegion':{'type':Sequelize[_0x5adb('0x4')]},'sentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x5adb('0x2')]},'sentimentRegion':{'type':Sequelize[_0x5adb('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x5adb('0x4')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x5adb('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0xadb5=['https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','exports','min_internal','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN'];(function(_0x59f0dc,_0x1e2497){var _0x5b5445=function(_0x57ca91){while(--_0x57ca91){_0x59f0dc['push'](_0x59f0dc['shift']());}};_0x5b5445(++_0x1e2497);}(_0xadb5,0xad));var _0x5adb=function(_0x1558c5,_0x18aece){_0x1558c5=_0x1558c5-0x0;var _0x226415=_0xadb5[_0x1558c5];return _0x226415;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x5adb('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x5adb('0x2')](0xb),'unique':_0x5adb('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':_0x5adb('0x5')},'logo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x5adb('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnusername':{'type':Sequelize[_0x5adb('0x4')]},'turnpassword':{'type':Sequelize[_0x5adb('0x4')]},'pageTitle':{'type':Sequelize[_0x5adb('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x5adb('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x5adb('0x7')},'enableEmailPreview':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x5adb('0x4')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x5adb('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x5adb('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x5adb('0x2')]},'transcribeRegion':{'type':Sequelize[_0x5adb('0x4')]},'sentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x5adb('0x2')]},'sentimentRegion':{'type':Sequelize[_0x5adb('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x5adb('0x4')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x5adb('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 7d41fe5..d0c8c3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa7=['default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','status','json','offset','undefined','limit','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','Setting','rawAttributes','fieldName','type','query','filters','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','map','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','keys','intersection','find','body','addLogo','file','logo','filename','loginLogo','../../config/license/util','getLogo','server/files/images/logos','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','join','root','toLower','default_logo.svg','default','upperFirst','custom','existsSync','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','getLicense','default_loginLogo.svg','gdpr','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon'];(function(_0x79a5ef,_0xed5e03){var _0x21fbf9=function(_0x431d7d){while(--_0x431d7d){_0x79a5ef['push'](_0x79a5ef['shift']());}};_0x21fbf9(++_0xed5e03);}(_0x7aa7,0xfd));var _0x77aa=function(_0xaf4993,_0x436c90){_0xaf4993=_0xaf4993-0x0;var _0x55189b=_0x7aa7[_0xaf4993];return _0x55189b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x77aa('0x0'));var jsonpatch=require(_0x77aa('0x1'));var rp=require(_0x77aa('0x2'));var moment=require('moment');var BPromise=require(_0x77aa('0x3'));var Mustache=require(_0x77aa('0x4'));var util=require(_0x77aa('0x5'));var path=require(_0x77aa('0x6'));var sox=require(_0x77aa('0x7'));var csv=require(_0x77aa('0x8'));var ejs=require(_0x77aa('0x9'));var fs=require('fs');var fs_extra=require(_0x77aa('0xa'));var _=require('lodash');var squel=require(_0x77aa('0xb'));var crypto=require(_0x77aa('0xc'));var jsforce=require(_0x77aa('0xd'));var deskjs=require(_0x77aa('0xe'));var toCsv=require(_0x77aa('0x8'));var querystring=require(_0x77aa('0xf'));var Papa=require(_0x77aa('0x10'));var Redis=require('ioredis');var authService=require(_0x77aa('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77aa('0x12'));var logger=require(_0x77aa('0x13'))(_0x77aa('0x14'));var utils=require(_0x77aa('0x15'));var config=require(_0x77aa('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x77aa('0x17'))['db'];var jayson=require(_0x77aa('0x18'));var client=jayson[_0x77aa('0x19')][_0x77aa('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x568a54,_0x309489,_0xd08ada,_0x17c985){return new BPromise(function(_0x4dd3e7,_0x334a88){var _0x4b160f=_0x17c985||client;return _0x4b160f[_0x77aa('0x1b')](_0x568a54,_0xd08ada)[_0x77aa('0x1c')](function(_0x105a49){logger[_0x77aa('0x1d')](_0x77aa('0x1e'),_0x309489,_0x77aa('0x1f'));logger[_0x77aa('0x20')](_0x77aa('0x21'),_0x309489,_0x77aa('0x1f'),JSON['stringify'](_0x105a49));if(_0x105a49[_0x77aa('0x22')]){if(_0x105a49[_0x77aa('0x22')][_0x77aa('0x23')]===0x1f4){logger[_0x77aa('0x22')]('Setting,\x20%s,\x20%s',_0x309489,_0x105a49[_0x77aa('0x22')][_0x77aa('0x24')]);return _0x334a88(_0x105a49[_0x77aa('0x22')][_0x77aa('0x24')]);}logger['error'](_0x77aa('0x1e'),_0x309489,_0x105a49['error'][_0x77aa('0x24')]);return _0x4dd3e7(_0x105a49[_0x77aa('0x22')]['message']);}else{logger['info'](_0x77aa('0x1e'),_0x309489,_0x77aa('0x1f'));_0x4dd3e7(_0x105a49[_0x77aa('0x25')][_0x77aa('0x24')]);}})['catch'](function(_0x2a593e){logger[_0x77aa('0x22')](_0x77aa('0x1e'),_0x309489,_0x2a593e);_0x334a88(_0x2a593e);});});}function respondWithStatusCode(_0x580fc8,_0x5af6b9){_0x5af6b9=_0x5af6b9||0xcc;return function(_0x1aedfd){if(_0x1aedfd){return _0x580fc8['sendStatus'](_0x5af6b9);}return _0x580fc8['status'](_0x5af6b9)['end']();};}function respondWithResult(_0x1c6524,_0x445c45){_0x445c45=_0x445c45||0xc8;return function(_0x20cf32){if(_0x20cf32){return _0x1c6524[_0x77aa('0x26')](_0x445c45)[_0x77aa('0x27')](_0x20cf32);}};}function respondWithFilteredResult(_0x1c4772,_0x4eb890){return function(_0x286691){if(_0x286691){var _0x5e613a=typeof _0x4eb890[_0x77aa('0x28')]===_0x77aa('0x29')&&typeof _0x4eb890[_0x77aa('0x2a')]==='undefined';var _0x4b4c49=_0x286691['count'];var _0xc766ff=_0x5e613a?0x0:_0x4eb890['offset'];var _0x59dc4d=_0x5e613a?_0x286691['count']:_0x4eb890['offset']+_0x4eb890[_0x77aa('0x2a')];var _0x2c6ab2;if(_0x59dc4d>=_0x4b4c49){_0x59dc4d=_0x4b4c49;_0x2c6ab2=0xc8;}else{_0x2c6ab2=0xce;}_0x1c4772['status'](_0x2c6ab2);return _0x1c4772['set'](_0x77aa('0x2b'),_0xc766ff+'-'+_0x59dc4d+'/'+_0x4b4c49)[_0x77aa('0x27')](_0x286691);}return null;};}function patchUpdates(_0x5c29b0){return function(_0xab7732){try{jsonpatch[_0x77aa('0x2c')](_0xab7732,_0x5c29b0,!![]);}catch(_0x561cca){return BPromise[_0x77aa('0x2d')](_0x561cca);}return _0xab7732[_0x77aa('0x2e')]();};}function saveUpdates(_0x557874,_0x40569a){return function(_0x3a28eb){if(_0x3a28eb){return _0x3a28eb[_0x77aa('0x2f')](_0x557874)[_0x77aa('0x1c')](function(_0x925e50){return _0x925e50;});}return null;};}function removeEntity(_0x22b4de,_0x2e1713){return function(_0x4ed58d){if(_0x4ed58d){return _0x4ed58d[_0x77aa('0x30')]()['then'](function(){_0x22b4de[_0x77aa('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48c4ee,_0x32594f){return function(_0x46e7e9){if(!_0x46e7e9){_0x48c4ee['sendStatus'](0x194);}return _0x46e7e9;};}function handleError(_0x15a15d,_0x7ffda4){_0x7ffda4=_0x7ffda4||0x1f4;return function(_0x44c9af){logger[_0x77aa('0x22')](_0x44c9af[_0x77aa('0x31')]);if(_0x44c9af[_0x77aa('0x32')]){delete _0x44c9af[_0x77aa('0x32')];}_0x15a15d[_0x77aa('0x26')](_0x7ffda4)[_0x77aa('0x33')](_0x44c9af);};}exports[_0x77aa('0x34')]=function(_0x1d7d70,_0x4fd832){var _0x17661e={},_0x46553d={},_0xb3da8c={'count':0x0,'rows':[]};var _0x14f947=_['map'](db[_0x77aa('0x35')][_0x77aa('0x36')],function(_0x523ade){return{'name':_0x523ade[_0x77aa('0x37')],'type':_0x523ade[_0x77aa('0x38')]['key']};});_0x46553d['model']=_['map'](_0x14f947,_0x77aa('0x32'));_0x46553d['query']=_['keys'](_0x1d7d70[_0x77aa('0x39')]);_0x46553d[_0x77aa('0x3a')]=_['intersection'](_0x46553d[_0x77aa('0x3b')],_0x46553d[_0x77aa('0x39')]);_0x17661e[_0x77aa('0x3c')]=_['intersection'](_0x46553d[_0x77aa('0x3b')],qs[_0x77aa('0x3d')](_0x1d7d70[_0x77aa('0x39')][_0x77aa('0x3d')]));_0x17661e[_0x77aa('0x3c')]=_0x17661e['attributes'][_0x77aa('0x3e')]?_0x17661e[_0x77aa('0x3c')]:_0x46553d[_0x77aa('0x3b')];if(!_0x1d7d70[_0x77aa('0x39')][_0x77aa('0x3f')](_0x77aa('0x40'))){_0x17661e[_0x77aa('0x2a')]=qs[_0x77aa('0x2a')](_0x1d7d70[_0x77aa('0x39')]['limit']);_0x17661e[_0x77aa('0x28')]=qs['offset'](_0x1d7d70[_0x77aa('0x39')][_0x77aa('0x28')]);}_0x17661e['order']=qs[_0x77aa('0x41')](_0x1d7d70[_0x77aa('0x39')][_0x77aa('0x41')]);_0x17661e[_0x77aa('0x42')]=qs[_0x77aa('0x3a')](_['pick'](_0x1d7d70[_0x77aa('0x39')],_0x46553d['filters']),_0x14f947);if(_0x1d7d70[_0x77aa('0x39')]['filter']){_0x17661e[_0x77aa('0x42')]=_[_0x77aa('0x43')](_0x17661e[_0x77aa('0x42')],{'$or':_[_0x77aa('0x44')](_0x14f947,function(_0x150dca){if(_0x150dca[_0x77aa('0x38')]!==_0x77aa('0x45')){var _0x41cb26={};_0x41cb26[_0x150dca[_0x77aa('0x32')]]={'$like':'%'+_0x1d7d70[_0x77aa('0x39')][_0x77aa('0x46')]+'%'};return _0x41cb26;}})});}_0x17661e=_[_0x77aa('0x43')]({},_0x17661e,_0x1d7d70[_0x77aa('0x47')]);var _0xa40f6e={'where':_0x17661e['where']};return db[_0x77aa('0x35')][_0x77aa('0x48')](_0xa40f6e)[_0x77aa('0x1c')](function(_0xe24898){_0xb3da8c[_0x77aa('0x48')]=_0xe24898;if(_0x1d7d70[_0x77aa('0x39')][_0x77aa('0x49')]){_0x17661e[_0x77aa('0x4a')]=[{'all':!![]}];}return db[_0x77aa('0x35')][_0x77aa('0x4b')](_0x17661e);})[_0x77aa('0x1c')](function(_0xe631c7){_0xb3da8c[_0x77aa('0x4c')]=_0xe631c7;return _0xb3da8c;})[_0x77aa('0x1c')](respondWithFilteredResult(_0x4fd832,_0x17661e))[_0x77aa('0x4d')](handleError(_0x4fd832,null));};exports[_0x77aa('0x4e')]=function(_0x1afe8a,_0xeef2e6){var _0x445aa5={'raw':![],'where':{'id':_0x1afe8a[_0x77aa('0x4f')]['id']}},_0x2be1f5={};_0x2be1f5['model']=_[_0x77aa('0x50')](db['Setting']['rawAttributes']);_0x2be1f5['query']=_['keys'](_0x1afe8a[_0x77aa('0x39')]);_0x2be1f5['filters']=_[_0x77aa('0x51')](_0x2be1f5[_0x77aa('0x3b')],_0x2be1f5['query']);_0x445aa5[_0x77aa('0x3c')]=_[_0x77aa('0x51')](_0x2be1f5[_0x77aa('0x3b')],qs[_0x77aa('0x3d')](_0x1afe8a[_0x77aa('0x39')][_0x77aa('0x3d')]));_0x445aa5['attributes']=_0x445aa5[_0x77aa('0x3c')][_0x77aa('0x3e')]?_0x445aa5['attributes']:_0x2be1f5[_0x77aa('0x3b')];if(_0x1afe8a['query'][_0x77aa('0x49')]){_0x445aa5['include']=[{'all':!![]}];}_0x445aa5=_[_0x77aa('0x43')]({},_0x445aa5,_0x1afe8a[_0x77aa('0x47')]);return db[_0x77aa('0x35')][_0x77aa('0x52')](_0x445aa5)[_0x77aa('0x1c')](handleEntityNotFound(_0xeef2e6,null))['then'](respondWithResult(_0xeef2e6,null))[_0x77aa('0x4d')](handleError(_0xeef2e6,null));};exports[_0x77aa('0x2f')]=function(_0x4a9dbe,_0x4eaf84){if(_0x4a9dbe[_0x77aa('0x53')]['id']){delete _0x4a9dbe['body']['id'];}return db[_0x77aa('0x35')]['find']({'where':{'id':_0x4a9dbe[_0x77aa('0x4f')]['id']}})[_0x77aa('0x1c')](handleEntityNotFound(_0x4eaf84,null))['then'](saveUpdates(_0x4a9dbe[_0x77aa('0x53')],null))['then'](respondWithResult(_0x4eaf84,null))['catch'](handleError(_0x4eaf84,null));};exports[_0x77aa('0x54')]=function(_0x120804,_0x452be0,_0x20b389){if(_0x120804[_0x77aa('0x55')]&&_0x120804[_0x77aa('0x55')]['filename']){_0x120804[_0x77aa('0x53')][_0x77aa('0x56')]=_0x120804[_0x77aa('0x55')][_0x77aa('0x57')];}return db[_0x77aa('0x35')][_0x77aa('0x52')]({'where':{'id':_0x120804[_0x77aa('0x4f')]['id']}})['then'](handleEntityNotFound(_0x452be0,null))[_0x77aa('0x1c')](saveUpdates(_0x120804[_0x77aa('0x53')],null))[_0x77aa('0x1c')](respondWithResult(_0x452be0,null))[_0x77aa('0x4d')](handleError(_0x452be0,null));};exports['addLogoLogin']=function(_0x5efad2,_0x530e4e,_0x1b787f){if(_0x5efad2['file']&&_0x5efad2[_0x77aa('0x55')][_0x77aa('0x57')]){_0x5efad2[_0x77aa('0x53')][_0x77aa('0x58')]=_0x5efad2[_0x77aa('0x55')][_0x77aa('0x57')];}return db[_0x77aa('0x35')][_0x77aa('0x52')]({'where':{'id':_0x5efad2[_0x77aa('0x4f')]['id']}})['then'](handleEntityNotFound(_0x530e4e,null))[_0x77aa('0x1c')](saveUpdates(_0x5efad2['body'],null))[_0x77aa('0x1c')](respondWithResult(_0x530e4e,null))['catch'](handleError(_0x530e4e,null));};var utilLicense=require(_0x77aa('0x59'));exports[_0x77aa('0x5a')]=function(_0x44dadc,_0x29b003,_0x271446){var _0x51ecc9=_0x77aa('0x5b');var _0x409ba0={'custom':![]};return utilLicense['getLicense']()[_0x77aa('0x1c')](function(_0x496f2e){if(_0x496f2e){_0x409ba0=_0x496f2e;}return db[_0x77aa('0x35')][_0x77aa('0x52')]({'where':{'id':_0x44dadc[_0x77aa('0x4f')]['id']},'attributes':[_0x77aa('0x56'),_0x77aa('0x58'),_0x77aa('0x5c'),_0x77aa('0x5d'),_0x77aa('0x5e'),_0x77aa('0x5f'),_0x77aa('0x60'),_0x77aa('0x61')],'raw':!![]});})[_0x77aa('0x1c')](handleEntityNotFound(_0x29b003,null))[_0x77aa('0x1c')](function(_0x2b1a0c){if(_0x2b1a0c){var _0x5e09ed=_0x2b1a0c[_0x77aa('0x56')]&&fs['existsSync'](path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x51ecc9,_[_0x77aa('0x64')](_0x2b1a0c[_0x77aa('0x56')])))?path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x51ecc9,_[_0x77aa('0x64')](_0x2b1a0c['logo'])):path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x51ecc9,_[_0x77aa('0x64')](_0x77aa('0x65')));var _0x3eb84e=_0x77aa('0x66')+_[_0x77aa('0x67')](_0x77aa('0x56'));if(_0x2b1a0c[_0x3eb84e]||!_0x409ba0[_0x77aa('0x68')]){_0x5e09ed=path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x51ecc9,_[_0x77aa('0x64')]('default_logo.svg'));}if(!fs[_0x77aa('0x69')](_0x5e09ed)){throw new db[(_0x77aa('0x6a'))][(_0x77aa('0x6b'))](_[_0x77aa('0x67')](_0x77aa('0x56'))+_0x77aa('0x6c'));}return _0x29b003[_0x77aa('0x6d')](_0x5e09ed);}})[_0x77aa('0x4d')](handleError(_0x29b003,null));};var utilLicense=require(_0x77aa('0x59'));exports[_0x77aa('0x6e')]=function(_0x4bdde8,_0x33e114,_0x118bde){var _0x116a1f=_0x77aa('0x5b');var _0x15caa4={'custom':![]};return utilLicense[_0x77aa('0x6f')]()[_0x77aa('0x1c')](function(_0xdad1fa){if(_0xdad1fa){_0x15caa4=_0xdad1fa;}return db[_0x77aa('0x35')][_0x77aa('0x52')]({'where':{'id':_0x4bdde8[_0x77aa('0x4f')]['id']},'attributes':[_0x77aa('0x56'),_0x77aa('0x58'),'preferred',_0x77aa('0x5d'),_0x77aa('0x5e'),'defaultLoginLogo',_0x77aa('0x60'),_0x77aa('0x61')],'raw':!![]});})[_0x77aa('0x1c')](handleEntityNotFound(_0x33e114,null))[_0x77aa('0x1c')](function(_0x4a4aa6){if(_0x4a4aa6){var _0x4a7837=_0x4a4aa6['loginLogo']&&fs['existsSync'](path[_0x77aa('0x62')](config['root'],_0x116a1f,_['toLower'](_0x4a4aa6[_0x77aa('0x58')])))?path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x116a1f,_[_0x77aa('0x64')](_0x4a4aa6[_0x77aa('0x58')])):path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x116a1f,_[_0x77aa('0x64')](_0x77aa('0x70')));var _0x3b4ed9='default'+_[_0x77aa('0x67')]('loginLogo');if(_0x4a4aa6[_0x3b4ed9]||!_0x15caa4[_0x77aa('0x68')]){_0x4a7837=path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x116a1f,_[_0x77aa('0x64')](_0x77aa('0x70')));}if(!fs[_0x77aa('0x69')](_0x4a7837)){throw new db[(_0x77aa('0x6a'))]['ValidationError'](_[_0x77aa('0x67')](_0x77aa('0x58'))+_0x77aa('0x6c'));}return _0x33e114[_0x77aa('0x6d')](_0x4a7837);}})[_0x77aa('0x4d')](handleError(_0x33e114,null));};exports[_0x77aa('0x71')]=function(_0x3ceca2,_0x596140){return db['Setting']['find']({'where':{'id':_0x3ceca2[_0x77aa('0x4f')]['id']},'attributes':['securePassword']})[_0x77aa('0x1c')](respondWithResult(_0x596140,null))['catch'](handleError(_0x596140,null));};exports[_0x77aa('0x72')]=function(_0x1070df,_0xd9d6e1,_0x179a16){if(_0x1070df[_0x77aa('0x55')]&&_0x1070df[_0x77aa('0x55')][_0x77aa('0x57')]){_0x1070df[_0x77aa('0x53')]['preferred']=_0x1070df[_0x77aa('0x55')]['filename'];}return db[_0x77aa('0x35')][_0x77aa('0x52')]({'where':{'id':_0x1070df['params']['id']}})['then'](handleEntityNotFound(_0xd9d6e1,null))[_0x77aa('0x1c')](saveUpdates(_0x1070df[_0x77aa('0x53')],null))[_0x77aa('0x1c')](respondWithResult(_0xd9d6e1,null))[_0x77aa('0x4d')](handleError(_0xd9d6e1,null));};var utilLicense=require(_0x77aa('0x59'));exports[_0x77aa('0x73')]=function(_0x4fa59b,_0x25e8b4,_0xf28cd4){var _0x1fd9ef=_0x77aa('0x5b');var _0x4d2262={'custom':![]};return utilLicense[_0x77aa('0x6f')]()['then'](function(_0x3dece3){if(_0x3dece3){_0x4d2262=_0x3dece3;}return db[_0x77aa('0x35')][_0x77aa('0x52')]({'where':{'id':_0x4fa59b[_0x77aa('0x4f')]['id']},'attributes':['logo',_0x77aa('0x58'),_0x77aa('0x5c'),_0x77aa('0x5d'),'defaultLogo','defaultLoginLogo',_0x77aa('0x60'),'defaultFavicon'],'raw':!![]});})[_0x77aa('0x1c')](handleEntityNotFound(_0x25e8b4,null))[_0x77aa('0x1c')](function(_0xa86a24){if(_0xa86a24){var _0x198814=_0xa86a24[_0x77aa('0x5c')]&&fs[_0x77aa('0x69')](path[_0x77aa('0x62')](config[_0x77aa('0x63')],_0x1fd9ef,_[_0x77aa('0x64')](_0xa86a24[_0x77aa('0x5c')])))?path['join'](config[_0x77aa('0x63')],_0x1fd9ef,_['toLower'](_0xa86a24[_0x77aa('0x5c')])):path['join'](config[_0x77aa('0x63')],_0x1fd9ef,_[_0x77aa('0x64')](_0x77aa('0x74')));var _0xcf7158=_0x77aa('0x66')+_[_0x77aa('0x67')](_0x77aa('0x5c'));if(_0xa86a24[_0xcf7158]||!_0x4d2262['custom']||!_0x4d2262[_0x77aa('0x5c')]){_0x198814=path['join'](config['root'],_0x1fd9ef,_['toLower'](_0x77aa('0x74')));}if(!fs[_0x77aa('0x69')](_0x198814)){throw new db[(_0x77aa('0x6a'))][(_0x77aa('0x6b'))](_[_0x77aa('0x67')](_0x77aa('0x5c'))+_0x77aa('0x6c'));}return _0x25e8b4['download'](_0x198814);}})['catch'](handleError(_0x25e8b4,null));};exports[_0x77aa('0x75')]=function(_0x37c849,_0x73afb4,_0x45ea41){if(_0x37c849['file']&&_0x37c849[_0x77aa('0x55')][_0x77aa('0x57')]){_0x37c849[_0x77aa('0x53')][_0x77aa('0x5d')]=_0x37c849[_0x77aa('0x55')][_0x77aa('0x57')];}return db[_0x77aa('0x35')]['find']({'where':{'id':_0x37c849[_0x77aa('0x4f')]['id']}})[_0x77aa('0x1c')](handleEntityNotFound(_0x73afb4,null))['then'](saveUpdates(_0x37c849[_0x77aa('0x53')],null))[_0x77aa('0x1c')](respondWithResult(_0x73afb4,null))['catch'](handleError(_0x73afb4,null));};var utilLicense=require(_0x77aa('0x59'));exports[_0x77aa('0x76')]=function(_0x48d60b,_0x54d67a,_0x53aba7){var _0x4eed18=_0x77aa('0x5b');var _0x3e72cb={'custom':![]};return utilLicense['getLicense']()[_0x77aa('0x1c')](function(_0x4fea4e){if(_0x4fea4e){_0x3e72cb=_0x4fea4e;}return db[_0x77aa('0x35')][_0x77aa('0x52')]({'where':{'id':_0x48d60b['params']['id']},'attributes':[_0x77aa('0x56'),_0x77aa('0x58'),_0x77aa('0x5c'),_0x77aa('0x5d'),_0x77aa('0x5e'),_0x77aa('0x5f'),'defaultPreferred',_0x77aa('0x61')],'raw':!![]});})[_0x77aa('0x1c')](handleEntityNotFound(_0x54d67a,null))[_0x77aa('0x1c')](function(_0x4baf9f){if(_0x4baf9f){var _0xef97bd=_0x4baf9f[_0x77aa('0x5d')]&&fs[_0x77aa('0x69')](path['join'](config[_0x77aa('0x63')],_0x4eed18,_[_0x77aa('0x64')](_0x4baf9f[_0x77aa('0x5d')])))?path['join'](config[_0x77aa('0x63')],_0x4eed18,_[_0x77aa('0x64')](_0x4baf9f['favicon'])):path['join'](config[_0x77aa('0x63')],_0x4eed18,_['toLower'](_0x77aa('0x77')));var _0x27863c=_0x77aa('0x66')+_[_0x77aa('0x67')](_0x77aa('0x5d'));if(_0x4baf9f[_0x27863c]||!_0x3e72cb[_0x77aa('0x68')]){_0xef97bd=path['join'](config['root'],_0x4eed18,_[_0x77aa('0x64')]('default_favicon.ico'));}if(!fs[_0x77aa('0x69')](_0xef97bd)){throw new db['Sequelize'][(_0x77aa('0x6b'))](_['upperFirst'](_0x77aa('0x5d'))+_0x77aa('0x6c'));}return _0x54d67a[_0x77aa('0x6d')](_0xef97bd);}})['catch'](handleError(_0x54d67a,null));};exports[_0x77aa('0x78')]=function(_0x3d297a,_0x5e614a){var _0x4684a6={'offset':moment()[_0x77aa('0x79')]()};_0x4684a6['now']=moment()[_0x77aa('0x79')](_0x4684a6[_0x77aa('0x28')])[_0x77aa('0x7a')](_0x77aa('0x7b'));return _0x5e614a['status'](0xc8)[_0x77aa('0x33')](_0x4684a6);};
\ No newline at end of file
+var _0x530e=['existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','\x20not\x20found','download','getLogoLogin','preferred','default_loginLogo.svg','ValidationError','gdpr','addPreferred','default_preferred.png','addFavicon','default_favicon.ico','getDate','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','info','result','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','index','map','Setting','fieldName','type','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','params','keys','rawAttributes','include','find','body','catch','addLogo','file','filename','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','logo','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x530e,0x10c));var _0xe530=function(_0x3bb116,_0x48836c){_0x3bb116=_0x3bb116-0x0;var _0x3a5978=_0x530e[_0x3bb116];return _0x3a5978;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe530('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe530('0x1'));var rp=require(_0xe530('0x2'));var moment=require(_0xe530('0x3'));var BPromise=require(_0xe530('0x4'));var Mustache=require('mustache');var util=require(_0xe530('0x5'));var path=require(_0xe530('0x6'));var sox=require(_0xe530('0x7'));var csv=require('to-csv');var ejs=require(_0xe530('0x8'));var fs=require('fs');var fs_extra=require(_0xe530('0x9'));var _=require(_0xe530('0xa'));var squel=require('squel');var crypto=require(_0xe530('0xb'));var jsforce=require(_0xe530('0xc'));var deskjs=require(_0xe530('0xd'));var toCsv=require(_0xe530('0xe'));var querystring=require(_0xe530('0xf'));var Papa=require(_0xe530('0x10'));var Redis=require(_0xe530('0x11'));var authService=require(_0xe530('0x12'));var qs=require(_0xe530('0x13'));var as=require(_0xe530('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe530('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe530('0x16'));var db=require(_0xe530('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xe530('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x1d71c9,_0xb8b74,_0x361f89,_0x119a3f){return new BPromise(function(_0x59a494,_0x1f005d){var _0x4b6e7d=_0x119a3f||client;return _0x4b6e7d[_0xe530('0x19')](_0x1d71c9,_0x361f89)[_0xe530('0x1a')](function(_0x363be3){logger['info'](_0xe530('0x1b'),_0xb8b74,_0xe530('0x1c'));logger[_0xe530('0x1d')](_0xe530('0x1e'),_0xb8b74,'request\x20sent',JSON['stringify'](_0x363be3));if(_0x363be3[_0xe530('0x1f')]){if(_0x363be3[_0xe530('0x1f')][_0xe530('0x20')]===0x1f4){logger[_0xe530('0x1f')](_0xe530('0x1b'),_0xb8b74,_0x363be3[_0xe530('0x1f')][_0xe530('0x21')]);return _0x1f005d(_0x363be3[_0xe530('0x1f')][_0xe530('0x21')]);}logger[_0xe530('0x1f')](_0xe530('0x1b'),_0xb8b74,_0x363be3[_0xe530('0x1f')][_0xe530('0x21')]);return _0x59a494(_0x363be3[_0xe530('0x1f')]['message']);}else{logger[_0xe530('0x22')]('Setting,\x20%s,\x20%s',_0xb8b74,_0xe530('0x1c'));_0x59a494(_0x363be3[_0xe530('0x23')][_0xe530('0x21')]);}})['catch'](function(_0x52cad2){logger[_0xe530('0x1f')]('Setting,\x20%s,\x20%s',_0xb8b74,_0x52cad2);_0x1f005d(_0x52cad2);});});}function respondWithStatusCode(_0x41d6cd,_0x28a7f7){_0x28a7f7=_0x28a7f7||0xcc;return function(_0x334630){if(_0x334630){return _0x41d6cd['sendStatus'](_0x28a7f7);}return _0x41d6cd[_0xe530('0x24')](_0x28a7f7)[_0xe530('0x25')]();};}function respondWithResult(_0x10ff16,_0x42696b){_0x42696b=_0x42696b||0xc8;return function(_0x4bfa22){if(_0x4bfa22){return _0x10ff16['status'](_0x42696b)[_0xe530('0x26')](_0x4bfa22);}};}function respondWithFilteredResult(_0x56e064,_0x4564f5){return function(_0xba4818){if(_0xba4818){var _0x436eaf=typeof _0x4564f5[_0xe530('0x27')]===_0xe530('0x28')&&typeof _0x4564f5[_0xe530('0x29')]===_0xe530('0x28');var _0x2dd206=_0xba4818[_0xe530('0x2a')];var _0x3b4606=_0x436eaf?0x0:_0x4564f5[_0xe530('0x27')];var _0x591265=_0x436eaf?_0xba4818['count']:_0x4564f5[_0xe530('0x27')]+_0x4564f5['limit'];var _0x393f1e;if(_0x591265>=_0x2dd206){_0x591265=_0x2dd206;_0x393f1e=0xc8;}else{_0x393f1e=0xce;}_0x56e064['status'](_0x393f1e);return _0x56e064[_0xe530('0x2b')](_0xe530('0x2c'),_0x3b4606+'-'+_0x591265+'/'+_0x2dd206)[_0xe530('0x26')](_0xba4818);}return null;};}function patchUpdates(_0xaee18d){return function(_0x3de672){try{jsonpatch[_0xe530('0x2d')](_0x3de672,_0xaee18d,!![]);}catch(_0x50fa81){return BPromise[_0xe530('0x2e')](_0x50fa81);}return _0x3de672[_0xe530('0x2f')]();};}function saveUpdates(_0x302bc2,_0x1a644a){return function(_0xfcaa74){if(_0xfcaa74){return _0xfcaa74[_0xe530('0x30')](_0x302bc2)[_0xe530('0x1a')](function(_0x4c715c){return _0x4c715c;});}return null;};}function removeEntity(_0x2b97f0,_0x41d381){return function(_0x3187d8){if(_0x3187d8){return _0x3187d8[_0xe530('0x31')]()[_0xe530('0x1a')](function(){_0x2b97f0[_0xe530('0x24')](0xcc)[_0xe530('0x25')]();});}};}function handleEntityNotFound(_0x4064fc,_0x487dc9){return function(_0x3ae87c){if(!_0x3ae87c){_0x4064fc[_0xe530('0x32')](0x194);}return _0x3ae87c;};}function handleError(_0xaa4f0,_0x4cd411){_0x4cd411=_0x4cd411||0x1f4;return function(_0x3438c6){logger[_0xe530('0x1f')](_0x3438c6[_0xe530('0x33')]);if(_0x3438c6['name']){delete _0x3438c6['name'];}_0xaa4f0[_0xe530('0x24')](_0x4cd411)['send'](_0x3438c6);};}exports[_0xe530('0x34')]=function(_0x403e1f,_0x330c33){var _0x26726e={},_0x2040da={},_0x5a4aec={'count':0x0,'rows':[]};var _0x360ae9=_[_0xe530('0x35')](db[_0xe530('0x36')]['rawAttributes'],function(_0x5f540d){return{'name':_0x5f540d[_0xe530('0x37')],'type':_0x5f540d[_0xe530('0x38')][_0xe530('0x39')]};});_0x2040da[_0xe530('0x3a')]=_[_0xe530('0x35')](_0x360ae9,_0xe530('0x3b'));_0x2040da[_0xe530('0x3c')]=_['keys'](_0x403e1f['query']);_0x2040da[_0xe530('0x3d')]=_[_0xe530('0x3e')](_0x2040da[_0xe530('0x3a')],_0x2040da['query']);_0x26726e[_0xe530('0x3f')]=_[_0xe530('0x3e')](_0x2040da[_0xe530('0x3a')],qs['fields'](_0x403e1f['query'][_0xe530('0x40')]));_0x26726e[_0xe530('0x3f')]=_0x26726e[_0xe530('0x3f')][_0xe530('0x41')]?_0x26726e[_0xe530('0x3f')]:_0x2040da[_0xe530('0x3a')];if(!_0x403e1f[_0xe530('0x3c')][_0xe530('0x42')](_0xe530('0x43'))){_0x26726e[_0xe530('0x29')]=qs[_0xe530('0x29')](_0x403e1f[_0xe530('0x3c')][_0xe530('0x29')]);_0x26726e[_0xe530('0x27')]=qs['offset'](_0x403e1f[_0xe530('0x3c')][_0xe530('0x27')]);}_0x26726e['order']=qs['sort'](_0x403e1f['query'][_0xe530('0x44')]);_0x26726e[_0xe530('0x45')]=qs[_0xe530('0x3d')](_[_0xe530('0x46')](_0x403e1f['query'],_0x2040da['filters']),_0x360ae9);if(_0x403e1f[_0xe530('0x3c')]['filter']){_0x26726e[_0xe530('0x45')]=_[_0xe530('0x47')](_0x26726e[_0xe530('0x45')],{'$or':_[_0xe530('0x35')](_0x360ae9,function(_0x2dc2fc){if(_0x2dc2fc[_0xe530('0x38')]!==_0xe530('0x48')){var _0x95da79={};_0x95da79[_0x2dc2fc[_0xe530('0x3b')]]={'$like':'%'+_0x403e1f['query'][_0xe530('0x49')]+'%'};return _0x95da79;}})});}_0x26726e=_['merge']({},_0x26726e,_0x403e1f[_0xe530('0x4a')]);var _0xb2e1ff={'where':_0x26726e['where']};return db[_0xe530('0x36')][_0xe530('0x2a')](_0xb2e1ff)['then'](function(_0x43e64d){_0x5a4aec[_0xe530('0x2a')]=_0x43e64d;if(_0x403e1f[_0xe530('0x3c')][_0xe530('0x4b')]){_0x26726e['include']=[{'all':!![]}];}return db[_0xe530('0x36')][_0xe530('0x4c')](_0x26726e);})[_0xe530('0x1a')](function(_0x35a330){_0x5a4aec['rows']=_0x35a330;return _0x5a4aec;})[_0xe530('0x1a')](respondWithFilteredResult(_0x330c33,_0x26726e))['catch'](handleError(_0x330c33,null));};exports['show']=function(_0x24af3b,_0x6716c0){var _0xbb7e44={'raw':![],'where':{'id':_0x24af3b[_0xe530('0x4d')]['id']}},_0x2b20c2={};_0x2b20c2[_0xe530('0x3a')]=_[_0xe530('0x4e')](db[_0xe530('0x36')][_0xe530('0x4f')]);_0x2b20c2[_0xe530('0x3c')]=_[_0xe530('0x4e')](_0x24af3b[_0xe530('0x3c')]);_0x2b20c2[_0xe530('0x3d')]=_['intersection'](_0x2b20c2[_0xe530('0x3a')],_0x2b20c2['query']);_0xbb7e44[_0xe530('0x3f')]=_[_0xe530('0x3e')](_0x2b20c2[_0xe530('0x3a')],qs[_0xe530('0x40')](_0x24af3b['query']['fields']));_0xbb7e44[_0xe530('0x3f')]=_0xbb7e44[_0xe530('0x3f')][_0xe530('0x41')]?_0xbb7e44[_0xe530('0x3f')]:_0x2b20c2[_0xe530('0x3a')];if(_0x24af3b[_0xe530('0x3c')][_0xe530('0x4b')]){_0xbb7e44[_0xe530('0x50')]=[{'all':!![]}];}_0xbb7e44=_[_0xe530('0x47')]({},_0xbb7e44,_0x24af3b['options']);return db['Setting'][_0xe530('0x51')](_0xbb7e44)[_0xe530('0x1a')](handleEntityNotFound(_0x6716c0,null))['then'](respondWithResult(_0x6716c0,null))['catch'](handleError(_0x6716c0,null));};exports[_0xe530('0x30')]=function(_0x38e360,_0x39c0d1){if(_0x38e360[_0xe530('0x52')]['id']){delete _0x38e360[_0xe530('0x52')]['id'];}return db['Setting'][_0xe530('0x51')]({'where':{'id':_0x38e360[_0xe530('0x4d')]['id']}})[_0xe530('0x1a')](handleEntityNotFound(_0x39c0d1,null))[_0xe530('0x1a')](saveUpdates(_0x38e360[_0xe530('0x52')],null))[_0xe530('0x1a')](respondWithResult(_0x39c0d1,null))[_0xe530('0x53')](handleError(_0x39c0d1,null));};exports[_0xe530('0x54')]=function(_0x51d2d4,_0x5b881b,_0x429913){if(_0x51d2d4[_0xe530('0x55')]&&_0x51d2d4[_0xe530('0x55')]['filename']){_0x51d2d4[_0xe530('0x52')]['logo']=_0x51d2d4[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x51d2d4[_0xe530('0x4d')]['id']}})[_0xe530('0x1a')](handleEntityNotFound(_0x5b881b,null))[_0xe530('0x1a')](saveUpdates(_0x51d2d4['body'],null))[_0xe530('0x1a')](respondWithResult(_0x5b881b,null))[_0xe530('0x53')](handleError(_0x5b881b,null));};exports[_0xe530('0x57')]=function(_0x4a134d,_0xbc9a66,_0x3ddcc5){if(_0x4a134d[_0xe530('0x55')]&&_0x4a134d['file'][_0xe530('0x56')]){_0x4a134d[_0xe530('0x52')][_0xe530('0x58')]=_0x4a134d[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')]['find']({'where':{'id':_0x4a134d['params']['id']}})[_0xe530('0x1a')](handleEntityNotFound(_0xbc9a66,null))[_0xe530('0x1a')](saveUpdates(_0x4a134d[_0xe530('0x52')],null))[_0xe530('0x1a')](respondWithResult(_0xbc9a66,null))['catch'](handleError(_0xbc9a66,null));};var utilLicense=require(_0xe530('0x16'));exports[_0xe530('0x59')]=function(_0x802343,_0x2982d9,_0x2d199c){var _0x55228f=_0xe530('0x5a');var _0x795439={'custom':![]};return utilLicense[_0xe530('0x5b')]()[_0xe530('0x1a')](function(_0x3076e7){if(_0x3076e7){_0x795439=_0x3076e7;}return db[_0xe530('0x36')]['find']({'where':{'id':_0x802343[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),'preferred',_0xe530('0x5d'),_0xe530('0x5e'),_0xe530('0x5f'),_0xe530('0x60'),_0xe530('0x61')],'raw':!![]});})[_0xe530('0x1a')](handleEntityNotFound(_0x2982d9,null))[_0xe530('0x1a')](function(_0x221720){if(_0x221720){var _0x53a3df=_0x221720[_0xe530('0x5c')]&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config[_0xe530('0x64')],_0x55228f,_[_0xe530('0x65')](_0x221720[_0xe530('0x5c')])))?path[_0xe530('0x63')](config[_0xe530('0x64')],_0x55228f,_['toLower'](_0x221720[_0xe530('0x5c')])):path[_0xe530('0x63')](config[_0xe530('0x64')],_0x55228f,_[_0xe530('0x65')](_0xe530('0x66')));var _0x167628=_0xe530('0x67')+_[_0xe530('0x68')]('logo');if(_0x221720[_0x167628]||!_0x795439[_0xe530('0x69')]){_0x53a3df=path['join'](config['root'],_0x55228f,_[_0xe530('0x65')](_0xe530('0x66')));}if(!fs[_0xe530('0x62')](_0x53a3df)){throw new db[(_0xe530('0x6a'))]['ValidationError'](_[_0xe530('0x68')](_0xe530('0x5c'))+_0xe530('0x6b'));}return _0x2982d9[_0xe530('0x6c')](_0x53a3df);}})['catch'](handleError(_0x2982d9,null));};var utilLicense=require(_0xe530('0x16'));exports[_0xe530('0x6d')]=function(_0x5c52bd,_0x291284,_0x256c5c){var _0x4048f5=_0xe530('0x5a');var _0x5cda6c={'custom':![]};return utilLicense[_0xe530('0x5b')]()[_0xe530('0x1a')](function(_0x4626bc){if(_0x4626bc){_0x5cda6c=_0x4626bc;}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x5c52bd[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),_0xe530('0x6e'),_0xe530('0x5d'),_0xe530('0x5e'),_0xe530('0x5f'),_0xe530('0x60'),_0xe530('0x61')],'raw':!![]});})['then'](handleEntityNotFound(_0x291284,null))[_0xe530('0x1a')](function(_0x20a7f6){if(_0x20a7f6){var _0x1ba9b0=_0x20a7f6[_0xe530('0x58')]&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config['root'],_0x4048f5,_[_0xe530('0x65')](_0x20a7f6['loginLogo'])))?path[_0xe530('0x63')](config['root'],_0x4048f5,_[_0xe530('0x65')](_0x20a7f6[_0xe530('0x58')])):path[_0xe530('0x63')](config[_0xe530('0x64')],_0x4048f5,_[_0xe530('0x65')](_0xe530('0x6f')));var _0x167bfd='default'+_[_0xe530('0x68')](_0xe530('0x58'));if(_0x20a7f6[_0x167bfd]||!_0x5cda6c[_0xe530('0x69')]){_0x1ba9b0=path['join'](config[_0xe530('0x64')],_0x4048f5,_['toLower'](_0xe530('0x6f')));}if(!fs[_0xe530('0x62')](_0x1ba9b0)){throw new db['Sequelize'][(_0xe530('0x70'))](_['upperFirst'](_0xe530('0x58'))+_0xe530('0x6b'));}return _0x291284[_0xe530('0x6c')](_0x1ba9b0);}})[_0xe530('0x53')](handleError(_0x291284,null));};exports[_0xe530('0x71')]=function(_0x993cb4,_0x7f2744){return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x993cb4[_0xe530('0x4d')]['id']},'attributes':['securePassword']})[_0xe530('0x1a')](respondWithResult(_0x7f2744,null))[_0xe530('0x53')](handleError(_0x7f2744,null));};exports[_0xe530('0x72')]=function(_0x576244,_0x1f163a,_0x4400c9){if(_0x576244[_0xe530('0x55')]&&_0x576244[_0xe530('0x55')]['filename']){_0x576244['body']['preferred']=_0x576244[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x576244[_0xe530('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1f163a,null))[_0xe530('0x1a')](saveUpdates(_0x576244['body'],null))[_0xe530('0x1a')](respondWithResult(_0x1f163a,null))['catch'](handleError(_0x1f163a,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x50d3bb,_0x40a3c8,_0x226f8c){var _0x21b5f5=_0xe530('0x5a');var _0x15162b={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x457e26){if(_0x457e26){_0x15162b=_0x457e26;}return db['Setting']['find']({'where':{'id':_0x50d3bb[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),'preferred',_0xe530('0x5d'),'defaultLogo',_0xe530('0x5f'),_0xe530('0x60'),_0xe530('0x61')],'raw':!![]});})[_0xe530('0x1a')](handleEntityNotFound(_0x40a3c8,null))['then'](function(_0x23a760){if(_0x23a760){var _0x2e673c=_0x23a760[_0xe530('0x6e')]&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config[_0xe530('0x64')],_0x21b5f5,_[_0xe530('0x65')](_0x23a760[_0xe530('0x6e')])))?path[_0xe530('0x63')](config['root'],_0x21b5f5,_[_0xe530('0x65')](_0x23a760[_0xe530('0x6e')])):path['join'](config[_0xe530('0x64')],_0x21b5f5,_[_0xe530('0x65')]('default_preferred.png'));var _0x383704=_0xe530('0x67')+_[_0xe530('0x68')](_0xe530('0x6e'));if(_0x23a760[_0x383704]||!_0x15162b[_0xe530('0x69')]||!_0x15162b[_0xe530('0x6e')]){_0x2e673c=path[_0xe530('0x63')](config[_0xe530('0x64')],_0x21b5f5,_[_0xe530('0x65')](_0xe530('0x73')));}if(!fs[_0xe530('0x62')](_0x2e673c)){throw new db[(_0xe530('0x6a'))][(_0xe530('0x70'))](_[_0xe530('0x68')](_0xe530('0x6e'))+_0xe530('0x6b'));}return _0x40a3c8['download'](_0x2e673c);}})[_0xe530('0x53')](handleError(_0x40a3c8,null));};exports[_0xe530('0x74')]=function(_0xe63f8d,_0x503d2c,_0x53bc97){if(_0xe63f8d['file']&&_0xe63f8d[_0xe530('0x55')]['filename']){_0xe63f8d['body'][_0xe530('0x5d')]=_0xe63f8d[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0xe63f8d['params']['id']}})['then'](handleEntityNotFound(_0x503d2c,null))[_0xe530('0x1a')](saveUpdates(_0xe63f8d[_0xe530('0x52')],null))[_0xe530('0x1a')](respondWithResult(_0x503d2c,null))['catch'](handleError(_0x503d2c,null));};var utilLicense=require(_0xe530('0x16'));exports['getFavicon']=function(_0x36bfbd,_0x50626b,_0x28bc96){var _0xc09ff6=_0xe530('0x5a');var _0x45d8f8={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x4fc647){if(_0x4fc647){_0x45d8f8=_0x4fc647;}return db['Setting'][_0xe530('0x51')]({'where':{'id':_0x36bfbd[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),_0xe530('0x6e'),'favicon',_0xe530('0x5e'),_0xe530('0x5f'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0xe530('0x1a')](handleEntityNotFound(_0x50626b,null))[_0xe530('0x1a')](function(_0x12d70c){if(_0x12d70c){var _0x2c257e=_0x12d70c['favicon']&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config[_0xe530('0x64')],_0xc09ff6,_[_0xe530('0x65')](_0x12d70c['favicon'])))?path[_0xe530('0x63')](config[_0xe530('0x64')],_0xc09ff6,_[_0xe530('0x65')](_0x12d70c[_0xe530('0x5d')])):path[_0xe530('0x63')](config['root'],_0xc09ff6,_[_0xe530('0x65')](_0xe530('0x75')));var _0x5cbfd2=_0xe530('0x67')+_[_0xe530('0x68')](_0xe530('0x5d'));if(_0x12d70c[_0x5cbfd2]||!_0x45d8f8[_0xe530('0x69')]){_0x2c257e=path[_0xe530('0x63')](config[_0xe530('0x64')],_0xc09ff6,_[_0xe530('0x65')](_0xe530('0x75')));}if(!fs[_0xe530('0x62')](_0x2c257e)){throw new db[(_0xe530('0x6a'))][(_0xe530('0x70'))](_[_0xe530('0x68')](_0xe530('0x5d'))+_0xe530('0x6b'));}return _0x50626b['download'](_0x2c257e);}})[_0xe530('0x53')](handleError(_0x50626b,null));};exports[_0xe530('0x76')]=function(_0x5284ae,_0x1469d7){var _0x43b6de={'offset':moment()['utcOffset']()};_0x43b6de[_0xe530('0x77')]=moment()['utcOffset'](_0x43b6de['offset'])[_0xe530('0x78')](_0xe530('0x79'));return _0x1469d7[_0xe530('0x24')](0xc8)['send'](_0x43b6de);};
\ No newline at end of file
index d3ac6d0..35f2e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14b=['bluebird','path','./setting.attributes','exports','define','Setting','settings','lodash','util','moment'];(function(_0x84278b,_0x26df69){var _0x1729b9=function(_0x515229){while(--_0x515229){_0x84278b['push'](_0x84278b['shift']());}};_0x1729b9(++_0x26df69);}(_0xe14b,0x93));var _0xbe14=function(_0x396a22,_0x476be8){_0x396a22=_0x396a22-0x0;var _0x3b4ebd=_0xe14b[_0x396a22];return _0x3b4ebd;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce0b518..606cd20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c00=['catch','ShowSetting','Setting','find','options','where','attributes','map','include','model','moment','bluebird','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x128dec,_0x4c9251){var _0x31a4c1=function(_0x587372){while(--_0x587372){_0x128dec['push'](_0x128dec['shift']());}};_0x31a4c1(++_0x4c9251);}(_0x6c00,0x133));var _0x06c0=function(_0x30abff,_0x5f2c5f){_0x30abff=_0x30abff-0x0;var _0x4c571e=_0x6c00[_0x30abff];return _0x4c571e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x06c0('0x0'));var BPromise=require(_0x06c0('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x06c0('0x2'))('rpc');var config=require(_0x06c0('0x3'));var jayson=require(_0x06c0('0x4'));var client=jayson['client'][_0x06c0('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x13a242,_0x2f3302,_0x5e13c8){return new BPromise(function(_0x278fac,_0x275089){return client[_0x06c0('0x6')](_0x13a242,_0x5e13c8)[_0x06c0('0x7')](function(_0x4c5546){logger[_0x06c0('0x8')](_0x06c0('0x9'),_0x2f3302,_0x06c0('0xa'));logger[_0x06c0('0xb')](_0x06c0('0xc'),_0x2f3302,_0x06c0('0xa'),JSON[_0x06c0('0xd')](_0x4c5546));if(_0x4c5546[_0x06c0('0xe')]){if(_0x4c5546[_0x06c0('0xe')][_0x06c0('0xf')]===0x1f4){logger[_0x06c0('0xe')](_0x06c0('0x9'),_0x2f3302,_0x4c5546[_0x06c0('0xe')]['message']);return _0x275089(_0x4c5546['error'][_0x06c0('0x10')]);}logger[_0x06c0('0xe')]('Setting,\x20%s,\x20%s',_0x2f3302,_0x4c5546[_0x06c0('0xe')][_0x06c0('0x10')]);return _0x278fac(_0x4c5546[_0x06c0('0xe')][_0x06c0('0x10')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x2f3302,_0x06c0('0xa'));_0x278fac(_0x4c5546['result']['message']);}})[_0x06c0('0x11')](function(_0x5424a8){logger[_0x06c0('0xe')](_0x06c0('0x9'),_0x2f3302,_0x5424a8);_0x275089(_0x5424a8);});});}exports[_0x06c0('0x12')]=function(_0x393362){var _0x292b87=this;return new Promise(function(_0xaa81d1,_0x43a379){return db[_0x06c0('0x13')][_0x06c0('0x14')]({'raw':_0x393362[_0x06c0('0x15')]?_0x393362[_0x06c0('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x393362[_0x06c0('0x15')]?_0x393362[_0x06c0('0x15')][_0x06c0('0x16')]||null:null,'attributes':_0x393362['options']?_0x393362[_0x06c0('0x15')][_0x06c0('0x17')]||null:null,'include':_0x393362['options']?_0x393362['options']['include']?_[_0x06c0('0x18')](_0x393362[_0x06c0('0x15')][_0x06c0('0x19')],function(_0x1c4758){return{'model':db[_0x1c4758[_0x06c0('0x1a')]],'as':_0x1c4758['as'],'attributes':_0x1c4758[_0x06c0('0x17')],'include':_0x1c4758[_0x06c0('0x19')]?_[_0x06c0('0x18')](_0x1c4758[_0x06c0('0x19')],function(_0x254bad){return{'model':db[_0x254bad['model']],'as':_0x254bad['as'],'attributes':_0x254bad[_0x06c0('0x17')],'include':_0x254bad['include']?_['map'](_0x254bad[_0x06c0('0x19')],function(_0x4a28e4){return{'model':db[_0x4a28e4['model']],'as':_0x4a28e4['as'],'attributes':_0x4a28e4[_0x06c0('0x17')]};}):[]};}):[]};}):[]:[]})[_0x06c0('0x7')](function(_0x16bb1f){logger[_0x06c0('0x8')](_0x06c0('0x12'),_0x393362);logger['debug'](_0x06c0('0x12'),_0x393362,JSON[_0x06c0('0xd')](_0x16bb1f));_0xaa81d1(_0x16bb1f);})[_0x06c0('0x11')](function(_0x25139f){logger['error'](_0x06c0('0x12'),_0x25139f[_0x06c0('0x10')],_0x393362);_0x43a379(_0x292b87[_0x06c0('0xe')](0x1f4,_0x25139f[_0x06c0('0x10')]));});});};
\ No newline at end of file
+var _0x3a82=['options','include','model','attributes','map','ShowSetting','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','code','Setting,\x20%s,\x20%s','message','catch','Setting','find','raw'];(function(_0x31a620,_0x105a9e){var _0x55191b=function(_0x128185){while(--_0x128185){_0x31a620['push'](_0x31a620['shift']());}};_0x55191b(++_0x105a9e);}(_0x3a82,0x173));var _0x23a8=function(_0x2d7ab4,_0x379814){_0x2d7ab4=_0x2d7ab4-0x0;var _0xde4043=_0x3a82[_0x2d7ab4];return _0xde4043;};'use strict';var _=require(_0x23a8('0x0'));var util=require(_0x23a8('0x1'));var moment=require(_0x23a8('0x2'));var BPromise=require(_0x23a8('0x3'));var rs=require(_0x23a8('0x4'));var fs=require('fs');var Redis=require(_0x23a8('0x5'));var db=require(_0x23a8('0x6'))['db'];var utils=require(_0x23a8('0x7'));var logger=require(_0x23a8('0x8'))(_0x23a8('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x23a8('0xa')][_0x23a8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2f5ff2,_0x5def2b,_0xe03f5a){return new BPromise(function(_0x328cec,_0x3ed9bc){return client[_0x23a8('0xc')](_0x2f5ff2,_0xe03f5a)[_0x23a8('0xd')](function(_0xb2e4f6){logger[_0x23a8('0xe')]('Setting,\x20%s,\x20%s',_0x5def2b,_0x23a8('0xf'));logger['debug'](_0x23a8('0x10'),_0x5def2b,'request\x20sent',JSON['stringify'](_0xb2e4f6));if(_0xb2e4f6[_0x23a8('0x11')]){if(_0xb2e4f6[_0x23a8('0x11')][_0x23a8('0x12')]===0x1f4){logger['error'](_0x23a8('0x13'),_0x5def2b,_0xb2e4f6[_0x23a8('0x11')][_0x23a8('0x14')]);return _0x3ed9bc(_0xb2e4f6[_0x23a8('0x11')]['message']);}logger[_0x23a8('0x11')](_0x23a8('0x13'),_0x5def2b,_0xb2e4f6['error'][_0x23a8('0x14')]);return _0x328cec(_0xb2e4f6[_0x23a8('0x11')][_0x23a8('0x14')]);}else{logger[_0x23a8('0xe')](_0x23a8('0x13'),_0x5def2b,_0x23a8('0xf'));_0x328cec(_0xb2e4f6['result'][_0x23a8('0x14')]);}})[_0x23a8('0x15')](function(_0x59d7e3){logger[_0x23a8('0x11')](_0x23a8('0x13'),_0x5def2b,_0x59d7e3);_0x3ed9bc(_0x59d7e3);});});}exports['ShowSetting']=function(_0x24584b){var _0x4f4efc=this;return new Promise(function(_0x37f526,_0x15640d){return db[_0x23a8('0x16')][_0x23a8('0x17')]({'raw':_0x24584b['options']?_0x24584b['options'][_0x23a8('0x18')]===undefined?!![]:![]:!![],'where':_0x24584b[_0x23a8('0x19')]?_0x24584b[_0x23a8('0x19')]['where']||null:null,'attributes':_0x24584b[_0x23a8('0x19')]?_0x24584b['options']['attributes']||null:null,'include':_0x24584b[_0x23a8('0x19')]?_0x24584b['options']['include']?_['map'](_0x24584b[_0x23a8('0x19')][_0x23a8('0x1a')],function(_0x18f22b){return{'model':db[_0x18f22b[_0x23a8('0x1b')]],'as':_0x18f22b['as'],'attributes':_0x18f22b[_0x23a8('0x1c')],'include':_0x18f22b[_0x23a8('0x1a')]?_[_0x23a8('0x1d')](_0x18f22b[_0x23a8('0x1a')],function(_0x2de8e1){return{'model':db[_0x2de8e1['model']],'as':_0x2de8e1['as'],'attributes':_0x2de8e1[_0x23a8('0x1c')],'include':_0x2de8e1[_0x23a8('0x1a')]?_[_0x23a8('0x1d')](_0x2de8e1[_0x23a8('0x1a')],function(_0xb413cf){return{'model':db[_0xb413cf[_0x23a8('0x1b')]],'as':_0xb413cf['as'],'attributes':_0xb413cf['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x466a70){logger[_0x23a8('0xe')](_0x23a8('0x1e'),_0x24584b);logger[_0x23a8('0x1f')](_0x23a8('0x1e'),_0x24584b,JSON[_0x23a8('0x20')](_0x466a70));_0x37f526(_0x466a70);})[_0x23a8('0x15')](function(_0x58341f){logger[_0x23a8('0x11')](_0x23a8('0x1e'),_0x58341f[_0x23a8('0x14')],_0x24584b);_0x15640d(_0x4f4efc[_0x23a8('0x11')](0x1f4,_0x58341f['message']));});});};
\ No newline at end of file
index 2d5822f..5c87e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['create','addDisposition','addAnswer','addApplications','/:id/send','send','status','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','/:id/users','getAgents','post'];(function(_0x95c26e,_0x49a9aa){var _0x152e8b=function(_0x5a7627){while(--_0x5a7627){_0x95c26e['push'](_0x95c26e['shift']());}};_0x152e8b(++_0x49a9aa);}(_0x6aa7,0x178));var _0x76aa=function(_0x4cce3a,_0x51f8c4){_0x4cce3a=_0x4cce3a-0x0;var _0xdc8b27=_0x6aa7[_0x4cce3a];return _0xdc8b27;};'use strict';var multer=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var timeout=require(_0x76aa('0x2'));var express=require(_0x76aa('0x3'));var router=express[_0x76aa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x76aa('0x5'));var interaction=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0x76aa('0x8')](),controller['index']);router[_0x76aa('0x9')](_0x76aa('0xa'),auth[_0x76aa('0x8')](),controller['describe']);router[_0x76aa('0x9')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller['show']);router[_0x76aa('0x9')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xd')]);router[_0x76aa('0x9')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xf')]);router[_0x76aa('0x9')](_0x76aa('0x10'),auth['isAuthenticated'](),controller[_0x76aa('0x11')]);router['get'](_0x76aa('0x12'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x13')]);router[_0x76aa('0x9')](_0x76aa('0x14'),controller['statusGet']);router['get'](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x16')]);router[_0x76aa('0x17')]('/',auth['isAuthenticated'](),controller[_0x76aa('0x18')]);router['post'](_0x76aa('0xc'),auth['isAuthenticated'](),controller[_0x76aa('0x19')]);router[_0x76aa('0x17')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1a')]);router[_0x76aa('0x17')]('/:id/notify',controller['notify']);router[_0x76aa('0x17')](_0x76aa('0x10'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1b')]);router[_0x76aa('0x17')](_0x76aa('0x1c'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1d')]);router[_0x76aa('0x17')]('/:id/status',controller[_0x76aa('0x1e')]);router[_0x76aa('0x17')](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x1f')]);router[_0x76aa('0x20')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x21')]);router[_0x76aa('0x22')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x23')]);router[_0x76aa('0x22')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x24')]);router['delete'](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x25')]);router[_0x76aa('0x22')](_0x76aa('0x15'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x26')]);module[_0x76aa('0x27')]=router;
\ No newline at end of file
+var _0x326f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/status','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x326f,0xd1));var _0xf326=function(_0xa7cc77,_0x4a57e6){_0xa7cc77=_0xa7cc77-0x0;var _0x46223a=_0x326f[_0xa7cc77];return _0x46223a;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0x9')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router['get'](_0xf326('0x10'),auth['isAuthenticated'](),controller[_0xf326('0x11')]);router['get'](_0xf326('0x12'),auth['isAuthenticated'](),controller[_0xf326('0x13')]);router[_0xf326('0x9')]('/:id/interactions',auth[_0xf326('0xa')](),controller[_0xf326('0x14')]);router[_0xf326('0x9')](_0xf326('0x15'),controller['statusGet']);router[_0xf326('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x16')]);router[_0xf326('0x17')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0x18')]);router[_0xf326('0x17')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0x19')]);router['post'](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x1a')]);router[_0xf326('0x17')](_0xf326('0x1b'),controller[_0xf326('0x1c')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0xf326('0x1d')]);router[_0xf326('0x17')]('/:id/send',auth['isAuthenticated'](),controller[_0xf326('0x1e')]);router['post']('/:id/status',controller[_0xf326('0x1f')]);router[_0xf326('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x20')]);router[_0xf326('0x21')]('/:id',auth[_0xf326('0xa')](),controller[_0xf326('0x22')]);router[_0xf326('0x23')](_0xf326('0x24'),auth[_0xf326('0xa')](),controller[_0xf326('0x25')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf326('0x26')]);router[_0xf326('0x23')](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x27')]);router[_0xf326('0x23')]('/:id/users',auth[_0xf326('0xa')](),controller[_0xf326('0x28')]);module[_0xf326('0x29')]=router;
\ No newline at end of file
index ab2e550..1b8d4e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49a4=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','exports','STRING','name','generate','twilio','connectel','plivo','bandwidth','infobip','intelepeer','ENUM','TEXT'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x49a4,0x133));var _0x449a=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x49a4[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x449a('0x0'));var rs=require('randomstring');module[_0x449a('0x1')]={'name':{'type':Sequelize[_0x449a('0x2')],'unique':_0x449a('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x449a('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x449a('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x449a('0x5'),'skebby',_0x449a('0x6'),'clicksend',_0x449a('0x7'),'clickatell',_0x449a('0x8'),'csc',_0x449a('0x9'),_0x449a('0xa'))},'accountSid':{'type':Sequelize[_0x449a('0x2')]},'authId':{'type':Sequelize[_0x449a('0x2')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x449a('0xb')]('SI','TI','GP')},'username':{'type':Sequelize[_0x449a('0x2')]},'password':{'type':Sequelize[_0x449a('0x2')]},'apiKey':{'type':Sequelize[_0x449a('0x2')]},'applicationId':{'type':Sequelize[_0x449a('0x2')]},'accountId':{'type':Sequelize[_0x449a('0x2')]},'senderString':{'type':Sequelize[_0x449a('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x449a('0xc')],'defaultValue':function(){return _0x449a('0xd');}},'notificationSound':{'type':Sequelize[_0x449a('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x449a('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x449a('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x449a('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x449a('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x449a('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x449a('0xf')],'comment':_0x449a('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x449a('0xe')],'defaultValue':![],'comment':_0x449a('0x11'),'set':function(_0x3f4f6b){if(!_0x3f4f6b)this[_0x449a('0x12')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x449a('0x13'),_0x3f4f6b);}}};
\ No newline at end of file
+var _0x2735=['clicksend','plivo','clickatell','bandwidth','csc','infobip','BOOLEAN','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','name','STRING','generate','ENUM','twilio','skebby'];(function(_0x5fa7e9,_0x315b21){var _0x1ab585=function(_0x2f4f41){while(--_0x2f4f41){_0x5fa7e9['push'](_0x5fa7e9['shift']());}};_0x1ab585(++_0x315b21);}(_0x2735,0x8b));var _0x5273=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0x2735[_0x42f009];return _0x22a1e0;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x5273('0x0'));module[_0x5273('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x5273('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x5273('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x5273('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x5273('0x3')],'defaultValue':function(){return rs[_0x5273('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x5273('0x5')](_0x5273('0x6'),_0x5273('0x7'),'connectel',_0x5273('0x8'),_0x5273('0x9'),_0x5273('0xa'),_0x5273('0xb'),_0x5273('0xc'),_0x5273('0xd'),'intelepeer')},'accountSid':{'type':Sequelize[_0x5273('0x3')]},'authId':{'type':Sequelize[_0x5273('0x3')]},'authToken':{'type':Sequelize[_0x5273('0x3')]},'smsMethod':{'type':Sequelize[_0x5273('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0x5273('0x3')]},'password':{'type':Sequelize[_0x5273('0x3')]},'apiKey':{'type':Sequelize[_0x5273('0x3')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x5273('0x3')]},'senderString':{'type':Sequelize[_0x5273('0x3')]},'deliveryReport':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![]},'description':{'type':Sequelize[_0x5273('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x5273('0xf');}},'notificationSound':{'type':Sequelize[_0x5273('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5273('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5273('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x5273('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x5273('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5a0e1c){if(!_0x5a0e1c)this[_0x5273('0x12')](_0x5273('0x13'),null);this['setDataValue'](_0x5273('0x14'),_0x5a0e1c);}}};
\ No newline at end of file
index 8509889..ac273a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa023=['reject','save','then','destroy','SmsAccounts','end','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','update','body','describe','addDisposition','SmsAccountId','getDispositions','Disposition','order','removeDispositions','ids','CannedAnswer','findOne','removeAnswers','sms','SmsApplication','Applications','account','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','From','Body','messageId','from','sender','clicksend','message_id','plivo','infobip','text','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','Contacts','DESC','list','omit','SmsInteraction','spread','interaction','created','autoclose','push','close','*,*,*,*','SmsMessage','ContactId','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','User','Owner','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','CmList','List','out','dataValues','Messages','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','connectel','requestid','statusInt','status_code','groupName','DELIVERED','bandwidth','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','http','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x33e4f2,_0x760009){var _0xb32415=function(_0x226dcd){while(--_0x226dcd){_0x33e4f2['push'](_0x33e4f2['shift']());}};_0xb32415(++_0x760009);}(_0xa023,0x18d));var _0x3a02=function(_0x31e391,_0x211e7a){_0x31e391=_0x31e391-0x0;var _0x2090cd=_0xa023[_0x31e391];return _0x2090cd;};'use strict';var emlformat=require(_0x3a02('0x0'));var rimraf=require(_0x3a02('0x1'));var zipdir=require(_0x3a02('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3a02('0x3'));var BPromise=require(_0x3a02('0x4'));var Mustache=require(_0x3a02('0x5'));var util=require('util');var path=require('path');var sox=require(_0x3a02('0x6'));var csv=require(_0x3a02('0x7'));var ejs=require(_0x3a02('0x8'));var fs=require('fs');var fs_extra=require(_0x3a02('0x9'));var _=require(_0x3a02('0xa'));var squel=require(_0x3a02('0xb'));var crypto=require(_0x3a02('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3a02('0x7'));var querystring=require(_0x3a02('0xd'));var Papa=require(_0x3a02('0xe'));var Redis=require(_0x3a02('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3a02('0x10'));var hardwareService=require(_0x3a02('0x11'));var logger=require(_0x3a02('0x12'))(_0x3a02('0x13'));var utils=require(_0x3a02('0x14'));var config=require(_0x3a02('0x15'));var licenseUtil=require(_0x3a02('0x16'));var db=require('../../mysqldb')['db'];config[_0x3a02('0x17')]=_[_0x3a02('0x18')](config[_0x3a02('0x17')],{'host':_0x3a02('0x19'),'port':0x18eb});var socket=require(_0x3a02('0x1a'))(new Redis(config[_0x3a02('0x17')]));require(_0x3a02('0x1b'))[_0x3a02('0x1c')](socket);var jayson=require(_0x3a02('0x1d'));var client=jayson['client'][_0x3a02('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x5d7b7e,_0x17909a,_0x38275e,_0x518d44){return new BPromise(function(_0x57d7b9,_0x2394dd){var _0x33d06d=_0x518d44||client;return _0x33d06d[_0x3a02('0x1f')](_0x5d7b7e,_0x38275e)['then'](function(_0x377983){logger[_0x3a02('0x20')](_0x3a02('0x21'),_0x17909a,_0x3a02('0x22'));logger[_0x3a02('0x23')](_0x3a02('0x24'),_0x17909a,'request\x20sent',JSON[_0x3a02('0x25')](_0x377983));if(_0x377983[_0x3a02('0x26')]){if(_0x377983['error']['code']===0x1f4){logger[_0x3a02('0x26')](_0x3a02('0x21'),_0x17909a,_0x377983[_0x3a02('0x26')][_0x3a02('0x27')]);return _0x2394dd(_0x377983[_0x3a02('0x26')][_0x3a02('0x27')]);}logger[_0x3a02('0x26')](_0x3a02('0x21'),_0x17909a,_0x377983['error'][_0x3a02('0x27')]);return _0x57d7b9(_0x377983[_0x3a02('0x26')]['message']);}else{logger[_0x3a02('0x20')](_0x3a02('0x21'),_0x17909a,_0x3a02('0x22'));_0x57d7b9(_0x377983[_0x3a02('0x28')]['message']);}})[_0x3a02('0x29')](function(_0x3f08e7){logger['error']('SmsAccount,\x20%s,\x20%s',_0x17909a,_0x3f08e7);_0x2394dd(_0x3f08e7);});});}function respondWithStatusCode(_0x4cbb42,_0x584e80){_0x584e80=_0x584e80||0xcc;return function(_0x33e6a1){if(_0x33e6a1){return _0x4cbb42['sendStatus'](_0x584e80);}return _0x4cbb42[_0x3a02('0x2a')](_0x584e80)['end']();};}function respondWithResult(_0x539d24,_0xaf08bb){_0xaf08bb=_0xaf08bb||0xc8;return function(_0x2bcea2){if(_0x2bcea2){return _0x539d24[_0x3a02('0x2a')](_0xaf08bb)[_0x3a02('0x2b')](_0x2bcea2);}};}function respondWithFilteredResult(_0xca0147,_0x449067){return function(_0x53bbd3){if(_0x53bbd3){var _0x3cff2e=typeof _0x449067[_0x3a02('0x2c')]===_0x3a02('0x2d')&&typeof _0x449067[_0x3a02('0x2e')]===_0x3a02('0x2d');var _0x100eaa=_0x53bbd3[_0x3a02('0x2f')];var _0x45e89e=_0x3cff2e?0x0:_0x449067['offset'];var _0xd4a75c=_0x3cff2e?_0x53bbd3['count']:_0x449067[_0x3a02('0x2c')]+_0x449067['limit'];var _0x4d882e;if(_0xd4a75c>=_0x100eaa){_0xd4a75c=_0x100eaa;_0x4d882e=0xc8;}else{_0x4d882e=0xce;}_0xca0147['status'](_0x4d882e);return _0xca0147[_0x3a02('0x30')](_0x3a02('0x31'),_0x45e89e+'-'+_0xd4a75c+'/'+_0x100eaa)[_0x3a02('0x2b')](_0x53bbd3);}return null;};}function patchUpdates(_0x549483){return function(_0x334c5){try{jsonpatch[_0x3a02('0x32')](_0x334c5,_0x549483,!![]);}catch(_0x2fd30b){return BPromise[_0x3a02('0x33')](_0x2fd30b);}return _0x334c5[_0x3a02('0x34')]();};}function saveUpdates(_0x1b92ee,_0x4626dd){return function(_0x428793){if(_0x428793){return _0x428793['update'](_0x1b92ee)[_0x3a02('0x35')](function(_0x3eec96){return _0x3eec96;});}return null;};}function removeEntity(_0x26ed75,_0x45e978){return function(_0x2d2e7f){if(_0x2d2e7f){return _0x2d2e7f[_0x3a02('0x36')]()[_0x3a02('0x35')](function(){var _0x114081=_0x2d2e7f['get']({'plain':!![]});var _0x116cf0=_0x3a02('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x116cf0,'resourceId':_0x114081['id']}})[_0x3a02('0x35')](function(){return _0x2d2e7f;});})[_0x3a02('0x35')](function(){_0x26ed75[_0x3a02('0x2a')](0xcc)[_0x3a02('0x38')]();});}};}function handleEntityNotFound(_0xcfd568,_0x2b8a9d){return function(_0x13cd23){if(!_0x13cd23){_0xcfd568['sendStatus'](0x194);}return _0x13cd23;};}function handleError(_0x1ca260,_0x423cbf){_0x423cbf=_0x423cbf||0x1f4;return function(_0x108271){logger[_0x3a02('0x26')](_0x108271['stack']);if(_0x108271[_0x3a02('0x39')]){delete _0x108271[_0x3a02('0x39')];}_0x1ca260['status'](_0x423cbf)[_0x3a02('0x3a')](_0x108271);};}exports[_0x3a02('0x3b')]=function(_0xf852a2,_0x497c6d){var _0x1917fd={'include':[{'model':db[_0x3a02('0x3c')],'as':_0x3a02('0x3d')}]},_0x906bb0={},_0x1564d6={'count':0x0,'rows':[]};var _0x45bb7c=_[_0x3a02('0x3e')](db[_0x3a02('0x3f')][_0x3a02('0x40')],function(_0x54b7a3){return{'name':_0x54b7a3[_0x3a02('0x41')],'type':_0x54b7a3[_0x3a02('0x42')][_0x3a02('0x43')]};});_0x906bb0[_0x3a02('0x44')]=_['map'](_0x45bb7c,_0x3a02('0x39'));_0x906bb0[_0x3a02('0x45')]=_['keys'](_0xf852a2[_0x3a02('0x45')]);_0x906bb0[_0x3a02('0x46')]=_['intersection'](_0x906bb0[_0x3a02('0x44')],_0x906bb0[_0x3a02('0x45')]);_0x1917fd[_0x3a02('0x47')]=_[_0x3a02('0x48')](_0x906bb0[_0x3a02('0x44')],qs[_0x3a02('0x49')](_0xf852a2[_0x3a02('0x45')][_0x3a02('0x49')]));_0x1917fd[_0x3a02('0x47')]=_0x1917fd[_0x3a02('0x47')][_0x3a02('0x4a')]?_0x1917fd[_0x3a02('0x47')]:_0x906bb0[_0x3a02('0x44')];if(!_0xf852a2['query'][_0x3a02('0x4b')](_0x3a02('0x4c'))){_0x1917fd[_0x3a02('0x2e')]=qs[_0x3a02('0x2e')](_0xf852a2[_0x3a02('0x45')][_0x3a02('0x2e')]);_0x1917fd[_0x3a02('0x2c')]=qs[_0x3a02('0x2c')](_0xf852a2[_0x3a02('0x45')][_0x3a02('0x2c')]);}_0x1917fd['order']=qs['sort'](_0xf852a2[_0x3a02('0x45')][_0x3a02('0x4d')]);_0x1917fd[_0x3a02('0x4e')]=qs['filters'](_[_0x3a02('0x4f')](_0xf852a2[_0x3a02('0x45')],_0x906bb0[_0x3a02('0x46')]),_0x45bb7c);if(_0xf852a2['query'][_0x3a02('0x50')]){_0x1917fd[_0x3a02('0x4e')]=_[_0x3a02('0x51')](_0x1917fd[_0x3a02('0x4e')],{'$or':_[_0x3a02('0x3e')](_0x45bb7c,function(_0x445040){if(_0x445040[_0x3a02('0x42')]!=='VIRTUAL'){var _0x250193={};_0x250193[_0x445040[_0x3a02('0x39')]]={'$like':'%'+_0xf852a2[_0x3a02('0x45')]['filter']+'%'};return _0x250193;}})});}_0x1917fd=_[_0x3a02('0x51')]({},_0x1917fd,_0xf852a2[_0x3a02('0x52')]);var _0x4375b2={'where':_0x1917fd[_0x3a02('0x4e')]};return db['SmsAccount'][_0x3a02('0x2f')](_0x4375b2)['then'](function(_0x217f43){_0x1564d6[_0x3a02('0x2f')]=_0x217f43;if(_0xf852a2[_0x3a02('0x45')][_0x3a02('0x53')]){_0x1917fd[_0x3a02('0x54')]=[{'all':!![]}];}return db['SmsAccount'][_0x3a02('0x55')](_0x1917fd);})[_0x3a02('0x35')](function(_0x318987){_0x1564d6[_0x3a02('0x56')]=_0x318987;return _0x1564d6;})[_0x3a02('0x35')](respondWithFilteredResult(_0x497c6d,_0x1917fd))[_0x3a02('0x29')](handleError(_0x497c6d,null));};exports[_0x3a02('0x57')]=function(_0x202253,_0x4eaa9e){var _0x27e53f={'raw':![],'where':{'id':_0x202253[_0x3a02('0x58')]['id']},'include':[{'model':db[_0x3a02('0x3c')],'as':_0x3a02('0x3d')}]},_0x201eaa={};_0x201eaa[_0x3a02('0x44')]=_['keys'](db[_0x3a02('0x3f')][_0x3a02('0x40')]);_0x201eaa['query']=_[_0x3a02('0x59')](_0x202253[_0x3a02('0x45')]);_0x201eaa[_0x3a02('0x46')]=_['intersection'](_0x201eaa[_0x3a02('0x44')],_0x201eaa[_0x3a02('0x45')]);_0x27e53f[_0x3a02('0x47')]=_[_0x3a02('0x48')](_0x201eaa[_0x3a02('0x44')],qs['fields'](_0x202253[_0x3a02('0x45')]['fields']));_0x27e53f['attributes']=_0x27e53f['attributes'][_0x3a02('0x4a')]?_0x27e53f[_0x3a02('0x47')]:_0x201eaa[_0x3a02('0x44')];if(_0x202253['query']['includeAll']){_0x27e53f[_0x3a02('0x54')]=[{'all':!![]}];}_0x27e53f=_[_0x3a02('0x51')]({},_0x27e53f,_0x202253['options']);return db['SmsAccount'][_0x3a02('0x5a')](_0x27e53f)[_0x3a02('0x35')](handleEntityNotFound(_0x4eaa9e,null))[_0x3a02('0x35')](respondWithResult(_0x4eaa9e,null))[_0x3a02('0x29')](handleError(_0x4eaa9e,null));};exports['create']=function(_0x4c1613,_0x369363){return db[_0x3a02('0x3f')][_0x3a02('0x5b')](_0x4c1613['body'],{})[_0x3a02('0x35')](function(_0x1e5350){var _0xe8bf47=_0x4c1613[_0x3a02('0x5c')][_0x3a02('0x5d')]({'plain':!![]});if(!_0xe8bf47)throw new Error(_0x3a02('0x5e'));if(_0xe8bf47[_0x3a02('0x5f')]==='user'){var _0x21b599=_0x1e5350[_0x3a02('0x5d')]({'plain':!![]});var _0x5bd06c=_0x3a02('0x37');return db[_0x3a02('0x60')][_0x3a02('0x5a')]({'where':{'name':_0x5bd06c,'userProfileId':_0xe8bf47['userProfileId']},'raw':!![]})[_0x3a02('0x35')](function(_0x20ab3e){if(_0x20ab3e&&_0x20ab3e[_0x3a02('0x61')]===0x0){return db[_0x3a02('0x62')][_0x3a02('0x5b')]({'name':_0x21b599[_0x3a02('0x39')],'resourceId':_0x21b599['id'],'type':_0x20ab3e[_0x3a02('0x39')],'sectionId':_0x20ab3e['id']},{})[_0x3a02('0x35')](function(){return _0x1e5350;});}else{return _0x1e5350;}})['catch'](function(_0x4833e0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4833e0);throw _0x4833e0;});}return _0x1e5350;})[_0x3a02('0x35')](respondWithResult(_0x369363,0xc9))[_0x3a02('0x29')](handleError(_0x369363,null));};exports[_0x3a02('0x63')]=function(_0x14d667,_0x2c771){if(_0x14d667['body']['id']){delete _0x14d667[_0x3a02('0x64')]['id'];}return db[_0x3a02('0x3f')]['find']({'where':{'id':_0x14d667['params']['id']},'include':[{'model':db[_0x3a02('0x3c')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x2c771,null))['then'](saveUpdates(_0x14d667[_0x3a02('0x64')],null))[_0x3a02('0x35')](respondWithResult(_0x2c771,null))['catch'](handleError(_0x2c771,null));};exports[_0x3a02('0x36')]=function(_0x5714da,_0x297e8e){return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x5714da[_0x3a02('0x58')]['id']}})['then'](handleEntityNotFound(_0x297e8e,null))['then'](removeEntity(_0x297e8e,null))[_0x3a02('0x29')](handleError(_0x297e8e,null));};exports[_0x3a02('0x65')]=function(_0x5bdf04,_0x2d8492){return db[_0x3a02('0x3f')]['describe']()[_0x3a02('0x35')](respondWithResult(_0x2d8492,null))[_0x3a02('0x29')](handleError(_0x2d8492,null));};exports[_0x3a02('0x66')]=function(_0x26f951,_0x3c568c,_0x4ef3c8){if(_0x26f951['body']['id']){delete _0x26f951[_0x3a02('0x64')]['id'];}return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x26f951[_0x3a02('0x58')]['id']}})['then'](handleEntityNotFound(_0x3c568c,null))[_0x3a02('0x35')](function(_0x520a7c){if(_0x520a7c){_0x26f951[_0x3a02('0x64')][_0x3a02('0x67')]=_0x520a7c['id'];return db['Disposition'][_0x3a02('0x5b')](_0x26f951['body']);}})[_0x3a02('0x35')](respondWithResult(_0x3c568c,null))[_0x3a02('0x29')](handleError(_0x3c568c,null));};exports[_0x3a02('0x68')]=function(_0xa23ad0,_0x419d84,_0x16a6bb){var _0x35b07a={'raw':![],'where':{}};var _0x4c793b={};var _0xa4d4ee={'count':0x0,'rows':[]};return db[_0x3a02('0x3f')]['findOne']({'where':{'id':_0xa23ad0[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x419d84,null))[_0x3a02('0x35')](function(_0x19f23f){if(_0x19f23f){_0x4c793b['model']=_[_0x3a02('0x59')](db[_0x3a02('0x69')][_0x3a02('0x40')]);_0x4c793b['query']=_[_0x3a02('0x59')](_0xa23ad0['query']);_0x4c793b['filters']=_['intersection'](_0x4c793b[_0x3a02('0x44')],_0x4c793b[_0x3a02('0x45')]);_0x35b07a['attributes']=_['intersection'](_0x4c793b[_0x3a02('0x44')],qs[_0x3a02('0x49')](_0xa23ad0['query'][_0x3a02('0x49')]));_0x35b07a[_0x3a02('0x47')]=_0x35b07a[_0x3a02('0x47')][_0x3a02('0x4a')]?_0x35b07a[_0x3a02('0x47')]:_0x4c793b[_0x3a02('0x44')];if(!_0xa23ad0[_0x3a02('0x45')]['hasOwnProperty'](_0x3a02('0x4c'))){_0x35b07a['limit']=qs['limit'](_0xa23ad0[_0x3a02('0x45')][_0x3a02('0x2e')]);_0x35b07a[_0x3a02('0x2c')]=qs[_0x3a02('0x2c')](_0xa23ad0[_0x3a02('0x45')][_0x3a02('0x2c')]);}_0x35b07a[_0x3a02('0x6a')]=qs[_0x3a02('0x4d')](_0xa23ad0[_0x3a02('0x45')][_0x3a02('0x4d')]);_0x35b07a[_0x3a02('0x4e')]=qs[_0x3a02('0x46')](_[_0x3a02('0x4f')](_0xa23ad0[_0x3a02('0x45')],_0x4c793b[_0x3a02('0x46')]));_0x35b07a[_0x3a02('0x4e')]['SmsAccountId']=_0x19f23f['id'];if(_0xa23ad0[_0x3a02('0x45')][_0x3a02('0x50')]){_0x35b07a[_0x3a02('0x4e')]=_[_0x3a02('0x51')](_0x35b07a[_0x3a02('0x4e')],{'$or':_[_0x3a02('0x3e')](_0x35b07a[_0x3a02('0x47')],function(_0x5f1e97){var _0x4db8b3={};_0x4db8b3[_0x5f1e97]={'$like':'%'+_0xa23ad0[_0x3a02('0x45')]['filter']+'%'};return _0x4db8b3;})});}_0x35b07a=_[_0x3a02('0x51')]({},_0x35b07a,_0xa23ad0[_0x3a02('0x52')]);return db[_0x3a02('0x69')][_0x3a02('0x2f')]({'where':_0x35b07a[_0x3a02('0x4e')]})[_0x3a02('0x35')](function(_0x108fe3){_0xa4d4ee[_0x3a02('0x2f')]=_0x108fe3;if(_0xa23ad0[_0x3a02('0x45')]['includeAll']){_0x35b07a[_0x3a02('0x54')]=[{'all':!![]}];}return db[_0x3a02('0x69')]['findAll'](_0x35b07a);})[_0x3a02('0x35')](function(_0x3e2a23){_0xa4d4ee[_0x3a02('0x56')]=_0x3e2a23;return _0xa4d4ee;});}})[_0x3a02('0x35')](respondWithFilteredResult(_0x419d84,_0x35b07a))[_0x3a02('0x29')](handleError(_0x419d84,null));};exports[_0x3a02('0x6b')]=function(_0x2ffb04,_0x55dd43,_0x219d6e){return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x2ffb04[_0x3a02('0x58')]['id']}})['then'](handleEntityNotFound(_0x55dd43,null))[_0x3a02('0x35')](function(_0x4c25a8){if(_0x4c25a8){return _0x4c25a8[_0x3a02('0x6b')](_0x2ffb04[_0x3a02('0x45')][_0x3a02('0x6c')]);}})[_0x3a02('0x35')](respondWithStatusCode(_0x55dd43,null))['catch'](handleError(_0x55dd43,null));};exports['addAnswer']=function(_0x5c616f,_0x23faf3,_0x1bc338){if(_0x5c616f['body']['id']){delete _0x5c616f[_0x3a02('0x64')]['id'];}return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x5c616f[_0x3a02('0x58')]['id']}})['then'](handleEntityNotFound(_0x23faf3,null))[_0x3a02('0x35')](function(_0x363c7e){if(_0x363c7e){_0x5c616f[_0x3a02('0x64')][_0x3a02('0x67')]=_0x363c7e['id'];return db[_0x3a02('0x6d')][_0x3a02('0x5b')](_0x5c616f['body']);}})['then'](respondWithResult(_0x23faf3,null))[_0x3a02('0x29')](handleError(_0x23faf3,null));};exports['getAnswers']=function(_0x30e6b3,_0x4cc06f,_0x483960){var _0x9ac36d={'raw':![],'where':{}};var _0x3a9add={};var _0x48900a={'count':0x0,'rows':[]};return db[_0x3a02('0x3f')][_0x3a02('0x6e')]({'where':{'id':_0x30e6b3[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x4cc06f,null))[_0x3a02('0x35')](function(_0x16b259){if(_0x16b259){_0x3a9add[_0x3a02('0x44')]=_[_0x3a02('0x59')](db['CannedAnswer']['rawAttributes']);_0x3a9add['query']=_[_0x3a02('0x59')](_0x30e6b3[_0x3a02('0x45')]);_0x3a9add['filters']=_['intersection'](_0x3a9add[_0x3a02('0x44')],_0x3a9add[_0x3a02('0x45')]);_0x9ac36d[_0x3a02('0x47')]=_[_0x3a02('0x48')](_0x3a9add[_0x3a02('0x44')],qs[_0x3a02('0x49')](_0x30e6b3[_0x3a02('0x45')][_0x3a02('0x49')]));_0x9ac36d[_0x3a02('0x47')]=_0x9ac36d['attributes'][_0x3a02('0x4a')]?_0x9ac36d[_0x3a02('0x47')]:_0x3a9add['model'];if(!_0x30e6b3['query']['hasOwnProperty']('nolimit')){_0x9ac36d['limit']=qs[_0x3a02('0x2e')](_0x30e6b3['query']['limit']);_0x9ac36d[_0x3a02('0x2c')]=qs[_0x3a02('0x2c')](_0x30e6b3[_0x3a02('0x45')]['offset']);}_0x9ac36d[_0x3a02('0x6a')]=qs['sort'](_0x30e6b3['query'][_0x3a02('0x4d')]);_0x9ac36d['where']=qs[_0x3a02('0x46')](_['pick'](_0x30e6b3[_0x3a02('0x45')],_0x3a9add['filters']));_0x9ac36d[_0x3a02('0x4e')][_0x3a02('0x67')]=_0x16b259['id'];if(_0x30e6b3[_0x3a02('0x45')][_0x3a02('0x50')]){_0x9ac36d[_0x3a02('0x4e')]=_[_0x3a02('0x51')](_0x9ac36d[_0x3a02('0x4e')],{'$or':_[_0x3a02('0x3e')](_0x9ac36d[_0x3a02('0x47')],function(_0x593b7d){var _0x420971={};_0x420971[_0x593b7d]={'$like':'%'+_0x30e6b3[_0x3a02('0x45')][_0x3a02('0x50')]+'%'};return _0x420971;})});}_0x9ac36d=_['merge']({},_0x9ac36d,_0x30e6b3[_0x3a02('0x52')]);return db[_0x3a02('0x6d')][_0x3a02('0x2f')]({'where':_0x9ac36d[_0x3a02('0x4e')]})[_0x3a02('0x35')](function(_0x2cd164){_0x48900a[_0x3a02('0x2f')]=_0x2cd164;if(_0x30e6b3['query']['includeAll']){_0x9ac36d['include']=[{'all':!![]}];}return db[_0x3a02('0x6d')][_0x3a02('0x55')](_0x9ac36d);})[_0x3a02('0x35')](function(_0x2f9156){_0x48900a['rows']=_0x2f9156;return _0x48900a;});}})['then'](respondWithFilteredResult(_0x4cc06f,_0x9ac36d))[_0x3a02('0x29')](handleError(_0x4cc06f,null));};exports[_0x3a02('0x6f')]=function(_0x2df2eb,_0x4d3e45,_0x4b2e3a){return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x2df2eb[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x4d3e45,null))[_0x3a02('0x35')](function(_0x3b5de4){if(_0x3b5de4){return _0x3b5de4['removeAnswers'](_0x2df2eb[_0x3a02('0x45')][_0x3a02('0x6c')]);}})[_0x3a02('0x35')](respondWithStatusCode(_0x4d3e45,null))[_0x3a02('0x29')](handleError(_0x4d3e45,null));};exports['notify']=function(_0x111b7a,_0x1d87b0,_0xc038d6){var _0x1b2f37={'channel':_0x3a02('0x70')};var _0x5b9e0d=[];var _0x47e428=[];var _0x51159f={};return db['SmsAccount']['find']({'where':{'id':_0x111b7a[_0x3a02('0x58')]['id']},'include':[{'model':db[_0x3a02('0x71')],'as':_0x3a02('0x72')}]})['then'](handleEntityNotFound(_0x1d87b0,null))[_0x3a02('0x35')](function(_0x2528bd){_0x1b2f37[_0x3a02('0x73')]=_0x2528bd;_0x1b2f37[_0x3a02('0x74')]=_[_0x3a02('0x75')](_0x2528bd[_0x3a02('0x72')],[_0x3a02('0x76')],[_0x3a02('0x77')]);if(_0x1b2f37[_0x3a02('0x73')]['Applications']){delete _0x1b2f37[_0x3a02('0x73')][_0x3a02('0x72')];}return db[_0x3a02('0x78')][_0x3a02('0x65')]();})[_0x3a02('0x35')](function(_0x18cb6a){if(!_0x18cb6a){throw new db[(_0x3a02('0x79'))][(_0x3a02('0x7a'))](_0x3a02('0x7b'));}_0x5b9e0d=_[_0x3a02('0x7c')](_[_0x3a02('0x59')](_0x18cb6a),[_0x3a02('0x7d'),_0x3a02('0x7e')]);_0x47e428=_[_0x3a02('0x7c')](_[_0x3a02('0x59')](_0x18cb6a),[_0x3a02('0x7d'),_0x3a02('0x7e'),_0x3a02('0x7f'),_0x3a02('0x80')]);_0x1b2f37['body']={'mapKey':_0x3a02('0x81')};if(_0x1b2f37[_0x3a02('0x73')][_0x3a02('0x42')]){switch(_0x1b2f37[_0x3a02('0x73')][_0x3a02('0x42')]){case _0x3a02('0x82'):_0x1b2f37['body']['from']=_0x111b7a['body'][_0x3a02('0x83')];_0x1b2f37[_0x3a02('0x64')]['body']=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x84')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x85')]=_0x111b7a['body']['MessageSid'];break;case'skebby':_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')]='+'+_0x111b7a[_0x3a02('0x64')][_0x3a02('0x87')];_0x1b2f37['body'][_0x3a02('0x64')]=_0x111b7a['body']['text'];break;case'connectel':_0x1b2f37[_0x3a02('0x64')]['from']=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x86')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x64')]=_0x111b7a['body'][_0x3a02('0x27')];break;case _0x3a02('0x88'):_0x1b2f37[_0x3a02('0x64')]['from']=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x86')];_0x1b2f37[_0x3a02('0x64')]['body']=_0x111b7a['body'][_0x3a02('0x64')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x85')]=_0x111b7a['body'][_0x3a02('0x89')];break;case _0x3a02('0x8a'):_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')]=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x83')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x64')]=_0x111b7a[_0x3a02('0x64')]['Text'];_0x1b2f37[_0x3a02('0x64')]['messageId']=_0x111b7a[_0x3a02('0x64')]['MessageUUID'];break;case _0x3a02('0x8b'):_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')]='+'+_0x111b7a[_0x3a02('0x64')]['results'][0x0][_0x3a02('0x86')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x64')]=_0x111b7a[_0x3a02('0x64')]['results'][0x0][_0x3a02('0x8c')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x85')]=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x8d')][0x0][_0x3a02('0x85')];break;case _0x3a02('0x8e'):_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')]=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x8f')];_0x1b2f37['body'][_0x3a02('0x64')]=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x90')][_0x3a02('0x27')];break;case _0x3a02('0x91'):_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')]=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x92')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x64')]=_0x111b7a['body'][_0x3a02('0x8c')];_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x85')]=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x93')];break;case'bandwidth':_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x85')]=_0x111b7a[_0x3a02('0x64')][0x0][_0x3a02('0x27')]['id'];_0x1b2f37['body']['from']=_0x111b7a[_0x3a02('0x64')][0x0][_0x3a02('0x27')][_0x3a02('0x86')];_0x1b2f37['body'][_0x3a02('0x64')]=_0x111b7a[_0x3a02('0x64')][0x0]['message']['text'];break;case _0x3a02('0x94'):_0x1b2f37[_0x3a02('0x64')]['from']=_0x111b7a[_0x3a02('0x64')][_0x3a02('0x86')];_0x1b2f37['body'][_0x3a02('0x64')]=_0x111b7a['body']['message'];_0x1b2f37['body'][_0x3a02('0x85')]=_0x111b7a[_0x3a02('0x64')]['refid'];break;}}if(_0x1b2f37['body']['id']){delete _0x1b2f37['body']['id'];}if(_[_0x3a02('0x95')](_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')])){throw new db[(_0x3a02('0x79'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x3a02('0x95')](_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x64')])||_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x64')]===''){throw new db[(_0x3a02('0x79'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x1b2f37['body']['mapKey'])){throw new db[(_0x3a02('0x79'))][(_0x3a02('0x7a'))](_0x3a02('0x96')+_0x47e428);}if(!_[_0x3a02('0x97')](_0x47e428,_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x98')])){throw new db[(_0x3a02('0x79'))][(_0x3a02('0x7a'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x47e428);}_0x51159f[_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x98')]]=_0x1b2f37['body'][_0x3a02('0x86')];return db['CmList'][_0x3a02('0x5a')]({'where':{'id':_0x1b2f37[_0x3a02('0x73')][_0x3a02('0x80')]},'include':[{'model':db[_0x3a02('0x78')],'as':_0x3a02('0x99'),'where':_0x51159f,'limit':0x1,'order':[[_0x3a02('0x7e'),_0x3a02('0x9a')]]}]});})[_0x3a02('0x35')](handleEntityNotFound(_0x1d87b0,null))[_0x3a02('0x35')](function(_0x3e3075){if(_0x3e3075){_0x1b2f37[_0x3a02('0x9b')]=_[_0x3a02('0x9c')](_0x3e3075,['Contacts']);if(_0x3e3075['Contacts'][_0x3a02('0x4a')]){return _0x3e3075[_0x3a02('0x99')][0x0];}var _0x1d204a=_[_0x3a02('0x18')](_0x1b2f37[_0x3a02('0x64')],{'firstName':_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')],'ListId':_0x3e3075['id']});_0x1d204a[_0x1b2f37['body'][_0x3a02('0x98')]]=_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x86')];return db[_0x3a02('0x78')][_0x3a02('0x5b')](_0x1d204a,{'fields':_0x5b9e0d,'raw':!![]});}})[_0x3a02('0x35')](handleEntityNotFound(_0x1d87b0,null))[_0x3a02('0x35')](function(_0x17cd2f){if(_0x17cd2f){_0x1b2f37['contact']=_0x17cd2f;var _0x36fa1d={'ContactId':_0x17cd2f['id'],'phone':_0x1b2f37[_0x3a02('0x64')]['from'],'SmsAccountId':_0x111b7a[_0x3a02('0x58')]['id']};var _0x40088a={'ContactId':_0x17cd2f['id'],'SmsAccountId':_0x111b7a[_0x3a02('0x58')]['id'],'closed':![]};return db[_0x3a02('0x9d')]['find']({'where':_0x40088a})[_0x3a02('0x35')](function(_0x4029d9){if(_0x4029d9){return[_0x4029d9,![]];}return db[_0x3a02('0x9d')][_0x3a02('0x5b')](_0x36fa1d)['then'](function(_0x24809d){return[_0x24809d,!![]];});});}})[_0x3a02('0x9e')](function(_0x5016eb,_0x4a36f5){_0x1b2f37[_0x3a02('0x9f')]=_0x5016eb[_0x3a02('0x5d')]({'plain':!![]});_0x1b2f37[_0x3a02('0x9f')][_0x3a02('0xa0')]=![];if(_0x4a36f5){if(_0x1b2f37[_0x3a02('0x73')][_0x3a02('0xa1')]){_0x1b2f37['applications'][_0x3a02('0xa2')]({'id':0x0,'priority':_0x1b2f37[_0x3a02('0x74')][_0x3a02('0x4a')]+0x1,'app':_0x3a02('0xa3'),'appdata':'unmanaged','interval':_0x3a02('0xa4')});}_0x1b2f37[_0x3a02('0x9f')][_0x3a02('0xa0')]=!![];}return db[_0x3a02('0xa5')][_0x3a02('0x5b')]({'phone':_0x1b2f37[_0x3a02('0x64')]['from'],'messageId':_0x1b2f37[_0x3a02('0x64')][_0x3a02('0x85')],'body':_0x1b2f37[_0x3a02('0x64')]['body'],'SmsAccountId':_0x111b7a[_0x3a02('0x58')]['id'],'SmsInteractionId':_0x5016eb['id'],'direction':'in','ContactId':_0x5016eb[_0x3a02('0xa6')],'AttachmentId':_0x1b2f37['body']['AttachmentId']});})[_0x3a02('0x35')](function(_0x196e48){_0x1b2f37[_0x3a02('0x27')]=_0x196e48;if(_0x1b2f37[_0x3a02('0x9f')][_0x3a02('0xa7')]){return db['User']['find']({'attributes':['id','name'],'where':{'id':_0x1b2f37[_0x3a02('0x9f')][_0x3a02('0xa7')]}})['then'](function(_0x175091){if(_0x175091){_0x1b2f37[_0x3a02('0x74')][_0x3a02('0xa8')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x175091[_0x3a02('0x39')]+','+(_0x1b2f37[_0x3a02('0x73')][_0x3a02('0xa9')]||0xa),'interval':_0x3a02('0xa4')});}return respondWithRpcPromise(_0x3a02('0xaa'),_0x3a02('0xab'),_0x1b2f37);});}return respondWithRpcPromise(_0x3a02('0xaa'),_0x3a02('0xab'),_0x1b2f37);})['then'](function(_0x1cebbd){if(_0x1cebbd){var _0x5e067c=0xc8;var _0x320783='receiveMessage';logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x320783,_0x5e067c,_0x3a02('0xac'));logger[_0x3a02('0x23')](_0x3a02('0xad'),_0x320783,_0x5e067c,_0x3a02('0xac'),JSON['stringify'](_0x1cebbd));if(_0x1b2f37['account'][_0x3a02('0x42')]==='twilio'){return _0x1d87b0[_0x3a02('0x2a')](_0x5e067c)[_0x3a02('0x30')](_0x3a02('0xae'),_0x3a02('0xaf'))[_0x3a02('0x3a')](_0x3a02('0xb0'));}else{return _0x1d87b0[_0x3a02('0x2a')](_0x5e067c)['json'](_0x1cebbd);}}})[_0x3a02('0x29')](handleError(_0x1d87b0,null));};exports[_0x3a02('0xb1')]=function(_0x80115d,_0x226a6d,_0x2f4f4a){return db[_0x3a02('0x3f')][_0x3a02('0x6e')]({'where':{'id':_0x80115d[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x226a6d,null))[_0x3a02('0x35')](function(_0x143182){if(_0x143182){return db['sequelize'][_0x3a02('0xb2')](function(_0x475958){return db[_0x3a02('0x71')][_0x3a02('0x36')]({'where':{'SmsAccountId':_0x80115d[_0x3a02('0x58')]['id']},'transaction':_0x475958})[_0x3a02('0x35')](function(_0x1858d7){var _0x3c0a52=_[_0x3a02('0x3e')](_0x80115d[_0x3a02('0x64')],function(_0x5b7ec7){_0x5b7ec7['SmsAccountId']=_0x80115d[_0x3a02('0x58')]['id'];return _0x5b7ec7;});return db[_0x3a02('0x71')][_0x3a02('0xb3')](_0x3c0a52,{'transaction':_0x475958});});})[_0x3a02('0x35')](function(){return db[_0x3a02('0x71')][_0x3a02('0xb4')]({'where':{'SmsAccountId':_0x80115d[_0x3a02('0x58')]['id']},'order':_0x3a02('0x76')});});}})[_0x3a02('0x35')](respondWithResult(_0x226a6d,null))[_0x3a02('0x29')](handleError(_0x226a6d,null));};exports[_0x3a02('0xb5')]=function(_0x71a1ca,_0xdadae1,_0x30f007){var _0x5937b5={};var _0x17e6a0={};var _0x5365fc;var _0x4cb630;return db['SmsAccount'][_0x3a02('0x6e')]({'where':{'id':_0x71a1ca[_0x3a02('0x58')]['id']}})['then'](handleEntityNotFound(_0xdadae1,null))['then'](function(_0x2521fa){if(_0x2521fa){_0x5365fc=_0x2521fa;_0x17e6a0[_0x3a02('0x44')]=_[_0x3a02('0x59')](db[_0x3a02('0x71')][_0x3a02('0x40')]);_0x17e6a0['query']=_[_0x3a02('0x59')](_0x71a1ca[_0x3a02('0x45')]);_0x17e6a0[_0x3a02('0x46')]=_[_0x3a02('0x48')](_0x17e6a0[_0x3a02('0x44')],_0x17e6a0['query']);_0x5937b5[_0x3a02('0x47')]=_[_0x3a02('0x48')](_0x17e6a0[_0x3a02('0x44')],qs['fields'](_0x71a1ca['query'][_0x3a02('0x49')]));_0x5937b5[_0x3a02('0x47')]=_0x5937b5[_0x3a02('0x47')][_0x3a02('0x4a')]?_0x5937b5[_0x3a02('0x47')]:_0x17e6a0[_0x3a02('0x44')];_0x5937b5['order']=qs[_0x3a02('0x4d')](_0x71a1ca[_0x3a02('0x45')]['sort']);_0x5937b5[_0x3a02('0x4e')]=qs[_0x3a02('0x46')](_[_0x3a02('0x4f')](_0x71a1ca[_0x3a02('0x45')],_0x17e6a0[_0x3a02('0x46')]));if(_0x71a1ca[_0x3a02('0x45')][_0x3a02('0x50')]){_0x5937b5[_0x3a02('0x4e')]=_[_0x3a02('0x51')](_0x5937b5['where'],{'$or':_[_0x3a02('0x3e')](_0x5937b5['attributes'],function(_0x2e2353){var _0x29d132={};_0x29d132[_0x2e2353]={'$like':'%'+_0x71a1ca[_0x3a02('0x45')][_0x3a02('0x50')]+'%'};return _0x29d132;})});}_0x5937b5=_['merge']({},_0x5937b5,_0x71a1ca['options']);return _0x5365fc['getApplications'](_0x5937b5);}})['then'](function(_0x17e1fa){if(_0x17e1fa){_0x4cb630=_0x17e1fa['length'];if(!_0x71a1ca['query']['hasOwnProperty'](_0x3a02('0x4c'))){_0x5937b5[_0x3a02('0x2e')]=qs['limit'](_0x71a1ca['query']['limit']);_0x5937b5[_0x3a02('0x2c')]=qs[_0x3a02('0x2c')](_0x71a1ca['query'][_0x3a02('0x2c')]);}return _0x5365fc[_0x3a02('0xb5')](_0x5937b5);}})['then'](function(_0x28a478){if(_0x28a478){return _0x28a478?{'count':_0x4cb630,'rows':_0x28a478}:null;}})[_0x3a02('0x35')](respondWithResult(_0xdadae1,null))['catch'](handleError(_0xdadae1,null));};exports[_0x3a02('0xb6')]=function(_0x3061ae,_0x2d2460,_0x3121cd){var _0xd9ead4={'raw':![],'where':{}};var _0xd94e3a={};var _0x55a908={'count':0x0,'rows':[]};return db[_0x3a02('0x3f')][_0x3a02('0x6e')]({'where':{'id':_0x3061ae['params']['id']}})['then'](handleEntityNotFound(_0x2d2460,null))[_0x3a02('0x35')](function(_0xe5dd8f){if(_0xe5dd8f){_0xd94e3a['model']=_[_0x3a02('0x59')](db[_0x3a02('0x9d')][_0x3a02('0x40')]);_0xd94e3a[_0x3a02('0x45')]=_[_0x3a02('0x59')](_0x3061ae['query']);_0xd94e3a[_0x3a02('0x46')]=_[_0x3a02('0x48')](_0xd94e3a[_0x3a02('0x44')],_0xd94e3a[_0x3a02('0x45')]);_0xd9ead4[_0x3a02('0x47')]=_[_0x3a02('0x48')](_0xd94e3a[_0x3a02('0x44')],qs[_0x3a02('0x49')](_0x3061ae[_0x3a02('0x45')][_0x3a02('0x49')]));_0xd9ead4[_0x3a02('0x47')]=_0xd9ead4['attributes']['length']?_0xd9ead4[_0x3a02('0x47')]:_0xd94e3a['model'];if(!_0x3061ae['query'][_0x3a02('0x4b')](_0x3a02('0x4c'))){_0xd9ead4[_0x3a02('0x2e')]=qs['limit'](_0x3061ae['query'][_0x3a02('0x2e')]);_0xd9ead4['offset']=qs[_0x3a02('0x2c')](_0x3061ae['query'][_0x3a02('0x2c')]);}_0xd9ead4[_0x3a02('0x6a')]=qs[_0x3a02('0x4d')](_0x3061ae[_0x3a02('0x45')][_0x3a02('0x4d')]);_0xd9ead4[_0x3a02('0x4e')]=qs[_0x3a02('0x46')](_[_0x3a02('0x4f')](_0x3061ae[_0x3a02('0x45')],_0xd94e3a[_0x3a02('0x46')]));_0xd9ead4[_0x3a02('0x4e')][_0x3a02('0x67')]=_0xe5dd8f['id'];if(_0x3061ae[_0x3a02('0x45')][_0x3a02('0x50')]){_0xd9ead4[_0x3a02('0x4e')]=_[_0x3a02('0x51')](_0xd9ead4[_0x3a02('0x4e')],{'$or':_[_0x3a02('0x3e')](_0xd9ead4[_0x3a02('0x47')],function(_0x477679){var _0x3f215c={};_0x3f215c[_0x477679]={'$like':'%'+_0x3061ae[_0x3a02('0x45')][_0x3a02('0x50')]+'%'};return _0x3f215c;})});}_0xd9ead4=_[_0x3a02('0x51')]({},_0xd9ead4,_0x3061ae['options']);return db[_0x3a02('0x9d')][_0x3a02('0x2f')]({'where':_0xd9ead4[_0x3a02('0x4e')]})[_0x3a02('0x35')](function(_0x476359){_0x55a908[_0x3a02('0x2f')]=_0x476359;if(_0x3061ae[_0x3a02('0x45')][_0x3a02('0x53')]){_0xd9ead4[_0x3a02('0x54')]=[{'model':db[_0x3a02('0x78')],'as':'Contact','required':![]},{'model':db[_0x3a02('0xb7')],'as':_0x3a02('0xb8'),'attributes':[_0x3a02('0x39'),'fullname',_0x3a02('0xb9')],'required':![]},{'model':db[_0x3a02('0xba')],'as':_0x3a02('0xbb'),'attributes':['id',_0x3a02('0x39'),_0x3a02('0xbc')],'where':_0x3061ae[_0x3a02('0x45')][_0x3a02('0xbd')]?{'id':_0x3061ae['query']['tag']}:undefined,'required':_0x3061ae[_0x3a02('0x45')][_0x3a02('0xbd')]?!![]:![]}];}return db['SmsInteraction'][_0x3a02('0x55')](_0xd9ead4);})[_0x3a02('0x35')](function(_0x50b98c){_0x55a908['rows']=_0x50b98c;return _0x55a908;});}})[_0x3a02('0x35')](respondWithFilteredResult(_0x2d2460,_0xd9ead4))[_0x3a02('0x29')](handleError(_0x2d2460,null));};exports[_0x3a02('0x3a')]=function(_0x13c899,_0x3be4c6,_0x3c2a84){var _0x5c872d,_0x1bb9b8,_0x4ace25;if(_['isNil'](_0x13c899[_0x3a02('0x64')][_0x3a02('0x64')])||_0x13c899['body'][_0x3a02('0x64')]===''){throw new db['Sequelize']['ValidationError'](_0x3a02('0xbe'));}if(_[_0x3a02('0x95')](_0x13c899[_0x3a02('0x64')]['to'])){throw new db['Sequelize'][(_0x3a02('0x7a'))](_0x3a02('0xbf'));}_0x5c872d=_0x13c899['body']['to'];return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x13c899[_0x3a02('0x58')]['id']},'include':[{'model':db[_0x3a02('0xc0')],'as':_0x3a02('0xc1'),'include':[{'model':db[_0x3a02('0x78')],'as':'Contacts','where':{'mobile':_0x5c872d},'limit':0x1,'order':[[_0x3a02('0x7e'),'DESC']]}]}]})[_0x3a02('0x35')](handleEntityNotFound(_0x3be4c6,null))[_0x3a02('0x35')](function(_0x1cfe23){if(_0x1cfe23&&_0x1cfe23['List']){_0x1bb9b8=_0x1cfe23[_0x3a02('0x5d')]({'plain':!![]});if(_0x1bb9b8[_0x3a02('0xc1')]&&_0x1bb9b8['List'][_0x3a02('0x99')]['length']){return _0x1bb9b8['List']['Contacts'][0x0];}return db[_0x3a02('0x78')][_0x3a02('0x5b')](_[_0x3a02('0x18')](_0x13c899[_0x3a02('0x64')],{'firstName':_0x5c872d,'mobile':_0x5c872d,'phone':_0x5c872d,'ListId':_0x1bb9b8[_0x3a02('0x80')]}));}})[_0x3a02('0x35')](handleEntityNotFound(_0x3be4c6,null))[_0x3a02('0x35')](function(_0x934a60){if(_0x934a60){_0x4ace25=_0x934a60;return db['SmsInteraction'][_0x3a02('0x5a')]({'where':{'ContactId':_0x4ace25['id'],'closed':![],'SmsAccountId':_0x1bb9b8['id']}})[_0x3a02('0x35')](function(_0x120256){if(_0x120256){return[_0x120256,![]];}return db[_0x3a02('0x9d')][_0x3a02('0x5b')]({'UserId':_0x13c899[_0x3a02('0x5c')]['id'],'ContactId':_0x4ace25['id'],'SmsAccountId':_0x1bb9b8['id'],'phone':_0x5c872d,'firstMsgDirection':_0x3a02('0xc2'),'Messages':[_[_0x3a02('0x51')](_0x13c899[_0x3a02('0x64')],{'read':![],'body':_0x13c899[_0x3a02('0x64')][_0x3a02('0x64')],'phone':_0x5c872d,'SmsAccountId':_0x1bb9b8['id'],'UserId':_0x13c899[_0x3a02('0x5c')]['id'],'ContactId':_0x4ace25['id']})]},{'include':[{'model':db[_0x3a02('0xa5')],'as':'Messages'}]})[_0x3a02('0x35')](function(_0x83724e){return[_0x83724e,!![]];});});}})[_0x3a02('0x9e')](function(_0xc5e0dc,_0x565c79){if(_0x565c79){return _0xc5e0dc;}return db[_0x3a02('0xa5')][_0x3a02('0x5b')](_['merge'](_0x13c899['body'],{'read':![],'body':_0x13c899[_0x3a02('0x64')][_0x3a02('0x64')],'phone':_0x5c872d,'SmsAccountId':_0x1bb9b8['id'],'SmsInteractionId':_0xc5e0dc['id'],'UserId':_0x13c899[_0x3a02('0x5c')]['id'],'ContactId':_0x4ace25['id']}))[_0x3a02('0x35')](function(_0x42fa50){_0xc5e0dc[_0x3a02('0xc3')][_0x3a02('0xc4')]=[];_0xc5e0dc[_0x3a02('0xc3')][_0x3a02('0xc4')][_0x3a02('0xa2')](_0x42fa50[_0x3a02('0xc3')]);return _0xc5e0dc;});})[_0x3a02('0x35')](respondWithResult(_0x3be4c6,null))[_0x3a02('0x29')](handleError(_0x3be4c6,null));};exports[_0x3a02('0x2a')]=function(_0x4164b4,_0x522a54,_0xda6372){if(_0x4164b4[_0x3a02('0x64')]['id']){delete _0x4164b4[_0x3a02('0x64')]['id'];}var _0x1d16d9,_0x34b54b,_0x23eba5;return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x4164b4[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x522a54,null))[_0x3a02('0x35')](function(_0x1e949a){if(_0x1e949a){_0x23eba5=_0x1e949a;logger['debug'](_0x3a02('0x24'),_0x3a02('0x2a'),_0x3a02('0xc5'),_0x1e949a['type'],util[_0x3a02('0xc6')](_0x4164b4[_0x3a02('0x64')],{'showHidden':![],'depth':null}));switch(_0x1e949a['type']){case _0x3a02('0xc7'):if(_0x4164b4[_0x3a02('0x64')][_0x3a02('0xc8')]&&_0x4164b4[_0x3a02('0x64')][_0x3a02('0x2a')]){_0x34b54b=_0x4164b4['body'][_0x3a02('0x2a')];return db[_0x3a02('0xa5')][_0x3a02('0x5a')]({'where':{'messageId':_0x4164b4[_0x3a02('0x64')][_0x3a02('0xc8')]}});}break;case _0x3a02('0xc9'):if(_0x4164b4[_0x3a02('0x64')][_0x3a02('0xca')]&&_0x4164b4[_0x3a02('0x64')][_0x3a02('0xcb')]){_0x34b54b=_0x4164b4[_0x3a02('0x64')][_0x3a02('0xcb')];return db['SmsMessage']['find']({'where':{'messageId':_0x4164b4['body'][_0x3a02('0xca')]}});}break;case'clicksend':if(_0x4164b4[_0x3a02('0x64')]['message_id']&&_0x4164b4[_0x3a02('0x64')]['status_code']){_0x34b54b=_0x4164b4[_0x3a02('0x64')][_0x3a02('0xcc')];return db['SmsMessage'][_0x3a02('0x5a')]({'where':{'messageId':_0x4164b4[_0x3a02('0x64')]['message_id']}});}break;case _0x3a02('0x8b'):var _0x5de64e=_0x4164b4[_0x3a02('0x64')]['results'][0x0];if(_0x5de64e[_0x3a02('0x85')]&&_0x5de64e[_0x3a02('0x2a')][_0x3a02('0xcd')]===_0x3a02('0xce')){_0x34b54b=_0x5de64e['status'][_0x3a02('0xcd')];return db[_0x3a02('0xa5')][_0x3a02('0x5a')]({'where':{'messageId':_0x5de64e[_0x3a02('0x85')]}});}break;case _0x3a02('0x91'):if(_0x4164b4[_0x3a02('0x64')][_0x3a02('0x85')]&&_0x4164b4[_0x3a02('0x64')]['status']){_0x34b54b=_0x4164b4[_0x3a02('0x64')][_0x3a02('0x2a')];return db[_0x3a02('0xa5')]['find']({'where':{'messageId':_0x4164b4['body']['messageId']}});}break;case _0x3a02('0xcf'):if(_0x4164b4[_0x3a02('0x64')][0x0]['message']['id']){_0x34b54b=_0x4164b4[_0x3a02('0x64')][0x0][_0x3a02('0x42')];return db[_0x3a02('0xa5')][_0x3a02('0x5a')]({'where':{'messageId':_0x4164b4['body'][0x0][_0x3a02('0x27')]['id']}});}break;case'intelepeer':if(_0x4164b4[_0x3a02('0x64')][_0x3a02('0xd0')]&&_0x4164b4[_0x3a02('0x64')][_0x3a02('0x2a')]){_0x34b54b=_0x4164b4[_0x3a02('0x64')]['status'];return db['SmsMessage']['find']({'where':{'messageId':_0x4164b4[_0x3a02('0x64')][_0x3a02('0xd0')]}});}break;}}})[_0x3a02('0x35')](handleEntityNotFound(_0x522a54,null))[_0x3a02('0x35')](function(_0x40a82b){if(_0x40a82b){_0x1d16d9=_0x40a82b;switch(_0x23eba5[_0x3a02('0x42')]){case _0x3a02('0xc7'):if(_0x34b54b==='DELIVERED'){return _0x1d16d9[_0x3a02('0x63')]({'read':!![]});}else{logger[_0x3a02('0x26')](_0x3a02('0x24'),'status',_0x3a02('0xc7'),util[_0x3a02('0xc6')](_0x4164b4[_0x3a02('0x64')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x34b54b==='1'){return _0x1d16d9[_0x3a02('0x63')]({'read':!![]});}else{logger[_0x3a02('0x26')](_0x3a02('0x24'),'status',_0x3a02('0xc7'),util['inspect'](_0x4164b4['body'],{'showHidden':![],'depth':null}));}break;case _0x3a02('0x88'):if(!_0x4164b4['body'][_0x3a02('0xd1')]&&_0x34b54b>=0xc8&&_0x34b54b<=0xce){return _0x1d16d9[_0x3a02('0x63')]({'read':!![]});}else{logger[_0x3a02('0x26')](_0x3a02('0x24'),_0x3a02('0x2a'),_0x3a02('0x88'),util[_0x3a02('0xc6')](_0x4164b4[_0x3a02('0x64')],{'showHidden':![],'depth':null}));}break;case _0x3a02('0x8b'):var _0x2ac322=_0x4164b4[_0x3a02('0x64')][_0x3a02('0x8d')][0x0];if(_0x2ac322[_0x3a02('0x2a')][_0x3a02('0xcd')]==='DELIVERED'){return _0x1d16d9['update']({'read':!![]});}else{logger[_0x3a02('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3a02('0x2a'),_0x3a02('0x8b'),util['inspect'](_0x4164b4[_0x3a02('0x64')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x34b54b==_0x3a02('0xd2')||_0x34b54b==_0x3a02('0xd3')){return _0x1d16d9[_0x3a02('0x63')]({'read':!![]});}else{logger[_0x3a02('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x3a02('0x91'),util[_0x3a02('0xc6')](_0x4164b4[_0x3a02('0x64')],{'showHidden':![],'depth':null}));}break;case _0x3a02('0xcf'):if(_0x34b54b==_0x3a02('0xd4')){return _0x1d16d9['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x3a02('0x2a'),'bandwidth',util[_0x3a02('0xc6')](_0x4164b4[_0x3a02('0x64')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x34b54b===_0x3a02('0xd5')||_0x34b54b===_0x3a02('0xd6')){return _0x1d16d9[_0x3a02('0x63')]({'read':!![]});}else{logger['error'](_0x3a02('0x24'),'status','intelepeer',util['inspect'](_0x4164b4[_0x3a02('0x64')],{'showHidden':![],'depth':null}));}break;}return _0x1d16d9;}})['then'](respondWithResult(_0x522a54,null))[_0x3a02('0x29')](handleError(_0x522a54,null));};exports[_0x3a02('0xd7')]=function(_0x64a87e,_0x414029,_0x17dd91){var _0xb0b8f2,_0xba3576,_0x4a6927;return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x64a87e[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x414029,null))[_0x3a02('0x35')](function(_0x5619b4){if(_0x5619b4){_0x4a6927=_0x5619b4;logger['debug'](_0x3a02('0x24'),_0x3a02('0x2a'),'received\x20delivery\x20report\x20from',_0x5619b4['type'],util[_0x3a02('0xc6')](_0x64a87e[_0x3a02('0x45')],{'showHidden':![],'depth':null}));switch(_0x5619b4['type']){case _0x3a02('0x8e'):if(_0x64a87e[_0x3a02('0x45')][_0x3a02('0xd8')]&&_0x64a87e[_0x3a02('0x45')][_0x3a02('0xd9')]){_0xba3576=_0x64a87e[_0x3a02('0x45')]['state'];return db[_0x3a02('0xa5')][_0x3a02('0x5a')]({'where':{'messageId':_0x64a87e[_0x3a02('0x45')][_0x3a02('0xd8')]}});}break;}}})[_0x3a02('0x35')](handleEntityNotFound(_0x414029,null))[_0x3a02('0x35')](function(_0x39a435){if(_0x39a435){_0xb0b8f2=_0x39a435;switch(_0x4a6927[_0x3a02('0x42')]){case _0x3a02('0x8e'):if(_0xba3576==='2'||_0xba3576==='6'){return _0xb0b8f2['update']({'read':!![]});}else{logger[_0x3a02('0x26')](_0x3a02('0x24'),_0x3a02('0x2a'),_0x3a02('0x8e'),util[_0x3a02('0xc6')](_0x64a87e[_0x3a02('0x45')],{'showHidden':![],'depth':null}));};break;}return _0xb0b8f2;}})[_0x3a02('0x35')](respondWithResult(_0x414029,null))[_0x3a02('0x29')](handleError(_0x414029,null));};exports[_0x3a02('0xda')]=function(_0x593f18,_0x41c26a,_0x2abbee){return db[_0x3a02('0x3f')][_0x3a02('0x5a')]({'where':{'id':_0x593f18[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x41c26a,null))[_0x3a02('0x35')](function(_0x4b0844){if(_0x4b0844){return _0x4b0844[_0x3a02('0xda')](_0x593f18['body'][_0x3a02('0x6c')],_[_0x3a02('0x9c')](_0x593f18[_0x3a02('0x64')],['ids','id'])||{})[_0x3a02('0x9e')](function(_0x3cae6e){for(var _0x5cc5bc=0x0;_0x5cc5bc<_0x593f18[_0x3a02('0x64')][_0x3a02('0x6c')][_0x3a02('0x4a')];_0x5cc5bc+=0x1){socket[_0x3a02('0xdb')](_0x3a02('0xdc'),{'UserId':Number(_0x593f18[_0x3a02('0x64')]['ids'][_0x5cc5bc]),'SmsAccountId':Number(_0x593f18[_0x3a02('0x58')]['id'])});}return _0x3cae6e;});}})['then'](respondWithResult(_0x41c26a,null))[_0x3a02('0x29')](handleError(_0x41c26a,null));};exports[_0x3a02('0xdd')]=function(_0x5cb47c,_0x5af84a,_0x26fc2b){return db[_0x3a02('0x3f')]['find']({'where':{'id':_0x5cb47c[_0x3a02('0x58')]['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x5af84a,null))[_0x3a02('0x35')](function(_0x4f161f){if(_0x4f161f){return _0x4f161f['removeAgents'](_0x5cb47c['query'][_0x3a02('0x6c')])['then'](function(){if(_[_0x3a02('0xde')](_0x5cb47c[_0x3a02('0x45')][_0x3a02('0x6c')])){for(var _0x136080=0x0;_0x136080<_0x5cb47c[_0x3a02('0x45')]['ids'][_0x3a02('0x4a')];_0x136080+=0x1){socket[_0x3a02('0xdb')]('userSmsAccount:remove',{'UserId':Number(_0x5cb47c[_0x3a02('0x45')]['ids'][_0x136080]),'SmsAccountId':Number(_0x5cb47c['params']['id'])});}}else{socket[_0x3a02('0xdb')]('userSmsAccount:remove',{'UserId':Number(_0x5cb47c['query'][_0x3a02('0x6c')]),'SmsAccountId':Number(_0x5cb47c[_0x3a02('0x58')]['id'])});}});}})[_0x3a02('0x35')](respondWithStatusCode(_0x5af84a,null))[_0x3a02('0x29')](handleError(_0x5af84a,null));};exports['getAgents']=function(_0x34766e,_0x1d5f98,_0x46bc39){var _0x3a4278={};var _0x2d210a={};var _0x4bde1d;var _0x50d4bf;return db[_0x3a02('0x3f')][_0x3a02('0x6e')]({'where':{'id':_0x34766e['params']['id']}})[_0x3a02('0x35')](handleEntityNotFound(_0x1d5f98,null))[_0x3a02('0x35')](function(_0x2d421c){if(_0x2d421c){_0x4bde1d=_0x2d421c;_0x2d210a['model']=_[_0x3a02('0x59')](db[_0x3a02('0xb7')][_0x3a02('0x40')]);_0x2d210a[_0x3a02('0x45')]=_['keys'](_0x34766e[_0x3a02('0x45')]);_0x2d210a['filters']=_[_0x3a02('0x48')](_0x2d210a[_0x3a02('0x44')],_0x2d210a[_0x3a02('0x45')]);_0x3a4278['attributes']=_[_0x3a02('0x48')](_0x2d210a[_0x3a02('0x44')],qs['fields'](_0x34766e[_0x3a02('0x45')][_0x3a02('0x49')]));_0x3a4278[_0x3a02('0x47')]=_0x3a4278[_0x3a02('0x47')][_0x3a02('0x4a')]?_0x3a4278[_0x3a02('0x47')]:_0x2d210a[_0x3a02('0x44')];_0x3a4278[_0x3a02('0x6a')]=qs[_0x3a02('0x4d')](_0x34766e[_0x3a02('0x45')]['sort']);_0x3a4278[_0x3a02('0x4e')]=qs[_0x3a02('0x46')](_[_0x3a02('0x4f')](_0x34766e[_0x3a02('0x45')],_0x2d210a[_0x3a02('0x46')]));if(_0x34766e[_0x3a02('0x45')][_0x3a02('0x50')]){_0x3a4278['where']=_[_0x3a02('0x51')](_0x3a4278[_0x3a02('0x4e')],{'$or':_[_0x3a02('0x3e')](_0x3a4278[_0x3a02('0x47')],function(_0x1e5b8e){var _0x3b0645={};_0x3b0645[_0x1e5b8e]={'$like':'%'+_0x34766e['query'][_0x3a02('0x50')]+'%'};return _0x3b0645;})});}_0x3a4278=_[_0x3a02('0x51')]({},_0x3a4278,_0x34766e[_0x3a02('0x52')]);return _0x4bde1d[_0x3a02('0xdf')](_0x3a4278);}})[_0x3a02('0x35')](function(_0x3f0b9f){if(_0x3f0b9f){_0x50d4bf=_0x3f0b9f[_0x3a02('0x4a')];if(!_0x34766e['query'][_0x3a02('0x4b')](_0x3a02('0x4c'))){_0x3a4278[_0x3a02('0x2e')]=qs[_0x3a02('0x2e')](_0x34766e[_0x3a02('0x45')][_0x3a02('0x2e')]);_0x3a4278[_0x3a02('0x2c')]=qs['offset'](_0x34766e[_0x3a02('0x45')][_0x3a02('0x2c')]);}return _0x4bde1d['getAgents'](_0x3a4278);}})[_0x3a02('0x35')](function(_0x485925){if(_0x485925){return _0x485925?{'count':_0x50d4bf,'rows':_0x485925}:null;}})[_0x3a02('0x35')](respondWithResult(_0x1d5f98,null))[_0x3a02('0x29')](handleError(_0x1d5f98,null));};
\ No newline at end of file
+var _0x639f=['get','SmsAccounts','UserProfileResource','destroy','name','send','index','Pause','map','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','SmsAccount','includeAll','include','rows','show','params','mandatoryDispositionPause','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','SmsAccountId','Disposition','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','sms','SmsApplication','account','applications','orderBy','Applications','priority','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from','Body','messageId','MessageSid','skebby','sender','text','connectel','clicksend','message_id','From','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','Contacts','DESC','list','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','set','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','to\x20is\x20mandatory','List','Messages','dataValues','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','intelepeer','redif','DELIVERED','error_code','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','received\x20delivery\x20report\x20from','message-id','state','addAgents','omit','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update'];(function(_0x3b668e,_0x2c9ffa){var _0x43b26c=function(_0xf5dcf6){while(--_0xf5dcf6){_0x3b668e['push'](_0x3b668e['shift']());}};_0x43b26c(++_0x2c9ffa);}(_0x639f,0x18c));var _0xf639=function(_0x1d0125,_0x313278){_0x1d0125=_0x1d0125-0x0;var _0xea2823=_0x639f[_0x1d0125];return _0xea2823;};'use strict';var emlformat=require(_0xf639('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf639('0x1'));var jsonpatch=require(_0xf639('0x2'));var rp=require(_0xf639('0x3'));var moment=require(_0xf639('0x4'));var BPromise=require(_0xf639('0x5'));var Mustache=require(_0xf639('0x6'));var util=require('util');var path=require(_0xf639('0x7'));var sox=require(_0xf639('0x8'));var csv=require(_0xf639('0x9'));var ejs=require(_0xf639('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf639('0xb'));var squel=require(_0xf639('0xc'));var crypto=require(_0xf639('0xd'));var jsforce=require(_0xf639('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf639('0xf'));var Papa=require('papaparse');var Redis=require(_0xf639('0x10'));var authService=require(_0xf639('0x11'));var qs=require(_0xf639('0x12'));var as=require(_0xf639('0x13'));var hardwareService=require(_0xf639('0x14'));var logger=require(_0xf639('0x15'))(_0xf639('0x16'));var utils=require(_0xf639('0x17'));var config=require(_0xf639('0x18'));var licenseUtil=require(_0xf639('0x19'));var db=require(_0xf639('0x1a'))['db'];config['redis']=_[_0xf639('0x1b')](config['redis'],{'host':_0xf639('0x1c'),'port':0x18eb});var socket=require(_0xf639('0x1d'))(new Redis(config[_0xf639('0x1e')]));require('./smsAccount.socket')[_0xf639('0x1f')](socket);var jayson=require(_0xf639('0x20'));var client=jayson[_0xf639('0x21')][_0xf639('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x382d6c,_0x15f5ad,_0x1599b7,_0x1fc50e){return new BPromise(function(_0x3a0a17,_0x4915e0){var _0xe64fa7=_0x1fc50e||client;return _0xe64fa7[_0xf639('0x23')](_0x382d6c,_0x1599b7)[_0xf639('0x24')](function(_0x5ec874){logger[_0xf639('0x25')]('SmsAccount,\x20%s,\x20%s',_0x15f5ad,_0xf639('0x26'));logger[_0xf639('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x15f5ad,_0xf639('0x26'),JSON[_0xf639('0x28')](_0x5ec874));if(_0x5ec874[_0xf639('0x29')]){if(_0x5ec874[_0xf639('0x29')][_0xf639('0x2a')]===0x1f4){logger[_0xf639('0x29')](_0xf639('0x2b'),_0x15f5ad,_0x5ec874[_0xf639('0x29')][_0xf639('0x2c')]);return _0x4915e0(_0x5ec874[_0xf639('0x29')][_0xf639('0x2c')]);}logger[_0xf639('0x29')]('SmsAccount,\x20%s,\x20%s',_0x15f5ad,_0x5ec874['error'][_0xf639('0x2c')]);return _0x3a0a17(_0x5ec874[_0xf639('0x29')]['message']);}else{logger['info'](_0xf639('0x2b'),_0x15f5ad,'request\x20sent');_0x3a0a17(_0x5ec874[_0xf639('0x2d')][_0xf639('0x2c')]);}})[_0xf639('0x2e')](function(_0x5a369b){logger[_0xf639('0x29')](_0xf639('0x2b'),_0x15f5ad,_0x5a369b);_0x4915e0(_0x5a369b);});});}function respondWithStatusCode(_0x1d5cc1,_0x2e94b2){_0x2e94b2=_0x2e94b2||0xcc;return function(_0x302752){if(_0x302752){return _0x1d5cc1[_0xf639('0x2f')](_0x2e94b2);}return _0x1d5cc1[_0xf639('0x30')](_0x2e94b2)[_0xf639('0x31')]();};}function respondWithResult(_0x38737a,_0x29e845){_0x29e845=_0x29e845||0xc8;return function(_0x4d4547){if(_0x4d4547){return _0x38737a[_0xf639('0x30')](_0x29e845)[_0xf639('0x32')](_0x4d4547);}};}function respondWithFilteredResult(_0x4f4ccd,_0xf10511){return function(_0x59fd3a){if(_0x59fd3a){var _0x1827a6=typeof _0xf10511[_0xf639('0x33')]===_0xf639('0x34')&&typeof _0xf10511[_0xf639('0x35')]===_0xf639('0x34');var _0x4c6772=_0x59fd3a['count'];var _0x5b955e=_0x1827a6?0x0:_0xf10511[_0xf639('0x33')];var _0x1ff19e=_0x1827a6?_0x59fd3a[_0xf639('0x36')]:_0xf10511['offset']+_0xf10511[_0xf639('0x35')];var _0x573ad5;if(_0x1ff19e>=_0x4c6772){_0x1ff19e=_0x4c6772;_0x573ad5=0xc8;}else{_0x573ad5=0xce;}_0x4f4ccd['status'](_0x573ad5);return _0x4f4ccd['set'](_0xf639('0x37'),_0x5b955e+'-'+_0x1ff19e+'/'+_0x4c6772)['json'](_0x59fd3a);}return null;};}function patchUpdates(_0x2f9478){return function(_0x5f2cfc){try{jsonpatch[_0xf639('0x38')](_0x5f2cfc,_0x2f9478,!![]);}catch(_0x5044aa){return BPromise[_0xf639('0x39')](_0x5044aa);}return _0x5f2cfc[_0xf639('0x3a')]();};}function saveUpdates(_0x33f8f8,_0x5cf550){return function(_0x4b2e35){if(_0x4b2e35){return _0x4b2e35[_0xf639('0x3b')](_0x33f8f8)['then'](function(_0x13b16a){return _0x13b16a;});}return null;};}function removeEntity(_0x155e5d,_0x1b88e1){return function(_0xa634b3){if(_0xa634b3){return _0xa634b3['destroy']()[_0xf639('0x24')](function(){var _0x35ba20=_0xa634b3[_0xf639('0x3c')]({'plain':!![]});var _0x45fd6e=_0xf639('0x3d');return db[_0xf639('0x3e')][_0xf639('0x3f')]({'where':{'type':_0x45fd6e,'resourceId':_0x35ba20['id']}})['then'](function(){return _0xa634b3;});})[_0xf639('0x24')](function(){_0x155e5d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3121ac,_0x5e476e){return function(_0xe98a07){if(!_0xe98a07){_0x3121ac['sendStatus'](0x194);}return _0xe98a07;};}function handleError(_0x245f75,_0xc3534f){_0xc3534f=_0xc3534f||0x1f4;return function(_0x4a75ab){logger[_0xf639('0x29')](_0x4a75ab['stack']);if(_0x4a75ab[_0xf639('0x40')]){delete _0x4a75ab[_0xf639('0x40')];}_0x245f75['status'](_0xc3534f)[_0xf639('0x41')](_0x4a75ab);};}exports[_0xf639('0x42')]=function(_0x1ada71,_0x20bb89){var _0x3cde33={'include':[{'model':db[_0xf639('0x43')],'as':'mandatoryDispositionPause'}]},_0x37e757={},_0x6a8a00={'count':0x0,'rows':[]};var _0x2c9170=_[_0xf639('0x44')](db['SmsAccount'][_0xf639('0x45')],function(_0x3001aa){return{'name':_0x3001aa['fieldName'],'type':_0x3001aa[_0xf639('0x46')][_0xf639('0x47')]};});_0x37e757[_0xf639('0x48')]=_[_0xf639('0x44')](_0x2c9170,_0xf639('0x40'));_0x37e757[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x1ada71[_0xf639('0x49')]);_0x37e757['filters']=_['intersection'](_0x37e757[_0xf639('0x48')],_0x37e757[_0xf639('0x49')]);_0x3cde33[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x37e757[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x1ada71[_0xf639('0x49')][_0xf639('0x4d')]));_0x3cde33[_0xf639('0x4b')]=_0x3cde33[_0xf639('0x4b')][_0xf639('0x4e')]?_0x3cde33[_0xf639('0x4b')]:_0x37e757[_0xf639('0x48')];if(!_0x1ada71[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x3cde33['limit']=qs['limit'](_0x1ada71['query']['limit']);_0x3cde33['offset']=qs[_0xf639('0x33')](_0x1ada71[_0xf639('0x49')]['offset']);}_0x3cde33[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x1ada71['query'][_0xf639('0x52')]);_0x3cde33[_0xf639('0x53')]=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x1ada71[_0xf639('0x49')],_0x37e757[_0xf639('0x54')]),_0x2c9170);if(_0x1ada71[_0xf639('0x49')]['filter']){_0x3cde33['where']=_[_0xf639('0x56')](_0x3cde33[_0xf639('0x53')],{'$or':_['map'](_0x2c9170,function(_0x5ab289){if(_0x5ab289['type']!==_0xf639('0x57')){var _0x43c22b={};_0x43c22b[_0x5ab289[_0xf639('0x40')]]={'$like':'%'+_0x1ada71['query'][_0xf639('0x58')]+'%'};return _0x43c22b;}})});}_0x3cde33=_[_0xf639('0x56')]({},_0x3cde33,_0x1ada71['options']);var _0x5611f5={'where':_0x3cde33['where']};return db[_0xf639('0x59')]['count'](_0x5611f5)['then'](function(_0x3b29ed){_0x6a8a00[_0xf639('0x36')]=_0x3b29ed;if(_0x1ada71['query'][_0xf639('0x5a')]){_0x3cde33[_0xf639('0x5b')]=[{'all':!![]}];}return db[_0xf639('0x59')]['findAll'](_0x3cde33);})[_0xf639('0x24')](function(_0x3292b8){_0x6a8a00[_0xf639('0x5c')]=_0x3292b8;return _0x6a8a00;})[_0xf639('0x24')](respondWithFilteredResult(_0x20bb89,_0x3cde33))[_0xf639('0x2e')](handleError(_0x20bb89,null));};exports[_0xf639('0x5d')]=function(_0x531e93,_0x2200bd){var _0x5aeaa9={'raw':![],'where':{'id':_0x531e93[_0xf639('0x5e')]['id']},'include':[{'model':db['Pause'],'as':_0xf639('0x5f')}]},_0x3ad12a={};_0x3ad12a[_0xf639('0x48')]=_['keys'](db['SmsAccount'][_0xf639('0x45')]);_0x3ad12a[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x531e93[_0xf639('0x49')]);_0x3ad12a[_0xf639('0x54')]=_[_0xf639('0x4c')](_0x3ad12a[_0xf639('0x48')],_0x3ad12a[_0xf639('0x49')]);_0x5aeaa9['attributes']=_[_0xf639('0x4c')](_0x3ad12a[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x531e93[_0xf639('0x49')][_0xf639('0x4d')]));_0x5aeaa9['attributes']=_0x5aeaa9[_0xf639('0x4b')][_0xf639('0x4e')]?_0x5aeaa9[_0xf639('0x4b')]:_0x3ad12a[_0xf639('0x48')];if(_0x531e93['query']['includeAll']){_0x5aeaa9['include']=[{'all':!![]}];}_0x5aeaa9=_['merge']({},_0x5aeaa9,_0x531e93[_0xf639('0x60')]);return db[_0xf639('0x59')][_0xf639('0x61')](_0x5aeaa9)['then'](handleEntityNotFound(_0x2200bd,null))['then'](respondWithResult(_0x2200bd,null))[_0xf639('0x2e')](handleError(_0x2200bd,null));};exports[_0xf639('0x62')]=function(_0x89040f,_0x1db462){return db[_0xf639('0x59')][_0xf639('0x62')](_0x89040f[_0xf639('0x63')],{})['then'](function(_0x13a8a0){var _0x23036b=_0x89040f[_0xf639('0x64')][_0xf639('0x3c')]({'plain':!![]});if(!_0x23036b)throw new Error(_0xf639('0x65'));if(_0x23036b['role']==='user'){var _0x44b5dc=_0x13a8a0[_0xf639('0x3c')]({'plain':!![]});var _0x1b7a7c=_0xf639('0x3d');return db['UserProfileSection'][_0xf639('0x61')]({'where':{'name':_0x1b7a7c,'userProfileId':_0x23036b[_0xf639('0x66')]},'raw':!![]})[_0xf639('0x24')](function(_0x21262a){if(_0x21262a&&_0x21262a[_0xf639('0x67')]===0x0){return db[_0xf639('0x3e')][_0xf639('0x62')]({'name':_0x44b5dc['name'],'resourceId':_0x44b5dc['id'],'type':_0x21262a[_0xf639('0x40')],'sectionId':_0x21262a['id']},{})[_0xf639('0x24')](function(){return _0x13a8a0;});}else{return _0x13a8a0;}})[_0xf639('0x2e')](function(_0x4a557a){logger['error'](_0xf639('0x68'),_0x4a557a);throw _0x4a557a;});}return _0x13a8a0;})[_0xf639('0x24')](respondWithResult(_0x1db462,0xc9))[_0xf639('0x2e')](handleError(_0x1db462,null));};exports[_0xf639('0x3b')]=function(_0x7a2a40,_0x1593cf){if(_0x7a2a40[_0xf639('0x63')]['id']){delete _0x7a2a40[_0xf639('0x63')]['id'];}return db[_0xf639('0x59')]['find']({'where':{'id':_0x7a2a40[_0xf639('0x5e')]['id']},'include':[{'model':db[_0xf639('0x43')],'as':_0xf639('0x5f')}]})[_0xf639('0x24')](handleEntityNotFound(_0x1593cf,null))[_0xf639('0x24')](saveUpdates(_0x7a2a40[_0xf639('0x63')],null))['then'](respondWithResult(_0x1593cf,null))[_0xf639('0x2e')](handleError(_0x1593cf,null));};exports[_0xf639('0x3f')]=function(_0x2f8d45,_0x4e72dc){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x2f8d45[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4e72dc,null))[_0xf639('0x24')](removeEntity(_0x4e72dc,null))[_0xf639('0x2e')](handleError(_0x4e72dc,null));};exports[_0xf639('0x69')]=function(_0x585b38,_0x23de11){return db[_0xf639('0x59')][_0xf639('0x69')]()[_0xf639('0x24')](respondWithResult(_0x23de11,null))[_0xf639('0x2e')](handleError(_0x23de11,null));};exports['addDisposition']=function(_0x2e2393,_0x285849,_0x42887b){if(_0x2e2393[_0xf639('0x63')]['id']){delete _0x2e2393[_0xf639('0x63')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x2e2393[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x285849,null))[_0xf639('0x24')](function(_0x5e36e4){if(_0x5e36e4){_0x2e2393[_0xf639('0x63')][_0xf639('0x6a')]=_0x5e36e4['id'];return db[_0xf639('0x6b')]['create'](_0x2e2393[_0xf639('0x63')]);}})[_0xf639('0x24')](respondWithResult(_0x285849,null))[_0xf639('0x2e')](handleError(_0x285849,null));};exports['getDispositions']=function(_0x3967fa,_0x1a12a2,_0x11c594){var _0x2e44e5={'raw':![],'where':{}};var _0x4c6494={};var _0x427bfa={'count':0x0,'rows':[]};return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x3967fa[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x1a12a2,null))[_0xf639('0x24')](function(_0x58a6bd){if(_0x58a6bd){_0x4c6494[_0xf639('0x48')]=_[_0xf639('0x4a')](db[_0xf639('0x6b')][_0xf639('0x45')]);_0x4c6494[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x3967fa[_0xf639('0x49')]);_0x4c6494['filters']=_[_0xf639('0x4c')](_0x4c6494[_0xf639('0x48')],_0x4c6494['query']);_0x2e44e5[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x4c6494['model'],qs[_0xf639('0x4d')](_0x3967fa[_0xf639('0x49')][_0xf639('0x4d')]));_0x2e44e5[_0xf639('0x4b')]=_0x2e44e5[_0xf639('0x4b')][_0xf639('0x4e')]?_0x2e44e5[_0xf639('0x4b')]:_0x4c6494['model'];if(!_0x3967fa[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x2e44e5[_0xf639('0x35')]=qs['limit'](_0x3967fa[_0xf639('0x49')]['limit']);_0x2e44e5[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x3967fa['query'][_0xf639('0x33')]);}_0x2e44e5[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x3967fa[_0xf639('0x49')][_0xf639('0x52')]);_0x2e44e5[_0xf639('0x53')]=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x3967fa[_0xf639('0x49')],_0x4c6494['filters']));_0x2e44e5[_0xf639('0x53')][_0xf639('0x6a')]=_0x58a6bd['id'];if(_0x3967fa['query'][_0xf639('0x58')]){_0x2e44e5[_0xf639('0x53')]=_[_0xf639('0x56')](_0x2e44e5[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x2e44e5[_0xf639('0x4b')],function(_0x1692cb){var _0x5b181f={};_0x5b181f[_0x1692cb]={'$like':'%'+_0x3967fa[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x5b181f;})});}_0x2e44e5=_[_0xf639('0x56')]({},_0x2e44e5,_0x3967fa[_0xf639('0x60')]);return db[_0xf639('0x6b')]['count']({'where':_0x2e44e5['where']})[_0xf639('0x24')](function(_0xcaf1e1){_0x427bfa['count']=_0xcaf1e1;if(_0x3967fa[_0xf639('0x49')][_0xf639('0x5a')]){_0x2e44e5[_0xf639('0x5b')]=[{'all':!![]}];}return db[_0xf639('0x6b')][_0xf639('0x6d')](_0x2e44e5);})[_0xf639('0x24')](function(_0x2cedad){_0x427bfa[_0xf639('0x5c')]=_0x2cedad;return _0x427bfa;});}})[_0xf639('0x24')](respondWithFilteredResult(_0x1a12a2,_0x2e44e5))[_0xf639('0x2e')](handleError(_0x1a12a2,null));};exports[_0xf639('0x6e')]=function(_0xcd7548,_0x2fde23,_0x215ac2){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0xcd7548[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x2fde23,null))[_0xf639('0x24')](function(_0x51c947){if(_0x51c947){return _0x51c947[_0xf639('0x6e')](_0xcd7548[_0xf639('0x49')][_0xf639('0x6f')]);}})[_0xf639('0x24')](respondWithStatusCode(_0x2fde23,null))[_0xf639('0x2e')](handleError(_0x2fde23,null));};exports[_0xf639('0x70')]=function(_0x336614,_0x4b24dc,_0x490120){if(_0x336614[_0xf639('0x63')]['id']){delete _0x336614['body']['id'];}return db['SmsAccount']['find']({'where':{'id':_0x336614[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x4b24dc,null))[_0xf639('0x24')](function(_0x2bc187){if(_0x2bc187){_0x336614[_0xf639('0x63')]['SmsAccountId']=_0x2bc187['id'];return db[_0xf639('0x71')][_0xf639('0x62')](_0x336614[_0xf639('0x63')]);}})[_0xf639('0x24')](respondWithResult(_0x4b24dc,null))['catch'](handleError(_0x4b24dc,null));};exports['getAnswers']=function(_0x34056a,_0x1b54db,_0x54a0a1){var _0x338497={'raw':![],'where':{}};var _0x1358e2={};var _0x5ba9ac={'count':0x0,'rows':[]};return db[_0xf639('0x59')]['findOne']({'where':{'id':_0x34056a[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x1b54db,null))[_0xf639('0x24')](function(_0x2ed57f){if(_0x2ed57f){_0x1358e2[_0xf639('0x48')]=_['keys'](db[_0xf639('0x71')][_0xf639('0x45')]);_0x1358e2[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x34056a[_0xf639('0x49')]);_0x1358e2['filters']=_[_0xf639('0x4c')](_0x1358e2[_0xf639('0x48')],_0x1358e2[_0xf639('0x49')]);_0x338497[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x1358e2[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x34056a[_0xf639('0x49')]['fields']));_0x338497[_0xf639('0x4b')]=_0x338497[_0xf639('0x4b')][_0xf639('0x4e')]?_0x338497['attributes']:_0x1358e2[_0xf639('0x48')];if(!_0x34056a[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x338497[_0xf639('0x35')]=qs[_0xf639('0x35')](_0x34056a['query']['limit']);_0x338497[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x34056a[_0xf639('0x49')][_0xf639('0x33')]);}_0x338497[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x34056a[_0xf639('0x49')]['sort']);_0x338497['where']=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x34056a[_0xf639('0x49')],_0x1358e2[_0xf639('0x54')]));_0x338497['where']['SmsAccountId']=_0x2ed57f['id'];if(_0x34056a['query'][_0xf639('0x58')]){_0x338497['where']=_[_0xf639('0x56')](_0x338497[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x338497[_0xf639('0x4b')],function(_0x42ae45){var _0x48db19={};_0x48db19[_0x42ae45]={'$like':'%'+_0x34056a[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x48db19;})});}_0x338497=_[_0xf639('0x56')]({},_0x338497,_0x34056a['options']);return db[_0xf639('0x71')][_0xf639('0x36')]({'where':_0x338497['where']})[_0xf639('0x24')](function(_0x2867f9){_0x5ba9ac[_0xf639('0x36')]=_0x2867f9;if(_0x34056a[_0xf639('0x49')]['includeAll']){_0x338497[_0xf639('0x5b')]=[{'all':!![]}];}return db['CannedAnswer'][_0xf639('0x6d')](_0x338497);})[_0xf639('0x24')](function(_0x121d0d){_0x5ba9ac['rows']=_0x121d0d;return _0x5ba9ac;});}})[_0xf639('0x24')](respondWithFilteredResult(_0x1b54db,_0x338497))['catch'](handleError(_0x1b54db,null));};exports[_0xf639('0x72')]=function(_0x465e3c,_0x5f33e7,_0x2951db){return db[_0xf639('0x59')]['find']({'where':{'id':_0x465e3c[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x5f33e7,null))[_0xf639('0x24')](function(_0x50744f){if(_0x50744f){return _0x50744f[_0xf639('0x72')](_0x465e3c['query'][_0xf639('0x6f')]);}})[_0xf639('0x24')](respondWithStatusCode(_0x5f33e7,null))[_0xf639('0x2e')](handleError(_0x5f33e7,null));};exports[_0xf639('0x73')]=function(_0x4888ca,_0x4151f8,_0x187494){var _0x154c1b={'channel':_0xf639('0x74')};var _0x2519d8=[];var _0x1d3719=[];var _0x55f29b={};return db[_0xf639('0x59')]['find']({'where':{'id':_0x4888ca[_0xf639('0x5e')]['id']},'include':[{'model':db[_0xf639('0x75')],'as':'Applications'}]})[_0xf639('0x24')](handleEntityNotFound(_0x4151f8,null))[_0xf639('0x24')](function(_0x5e0b3f){_0x154c1b[_0xf639('0x76')]=_0x5e0b3f;_0x154c1b[_0xf639('0x77')]=_[_0xf639('0x78')](_0x5e0b3f[_0xf639('0x79')],[_0xf639('0x7a')],['asc']);if(_0x154c1b[_0xf639('0x76')][_0xf639('0x79')]){delete _0x154c1b[_0xf639('0x76')]['Applications'];}return db[_0xf639('0x7b')][_0xf639('0x69')]();})[_0xf639('0x24')](function(_0x2e8659){if(!_0x2e8659){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0x7d'));}_0x2519d8=_[_0xf639('0x7e')](_[_0xf639('0x4a')](_0x2e8659),[_0xf639('0x7f'),_0xf639('0x80')]);_0x1d3719=_['difference'](_[_0xf639('0x4a')](_0x2e8659),[_0xf639('0x7f'),_0xf639('0x80'),_0xf639('0x81'),'ListId']);_0x154c1b[_0xf639('0x63')]={'mapKey':'mobile'};if(_0x154c1b['account'][_0xf639('0x46')]){switch(_0x154c1b[_0xf639('0x76')][_0xf639('0x46')]){case'twilio':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')]['From'];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')][_0xf639('0x83')];_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x85')];break;case _0xf639('0x86'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]='+'+_0x4888ca[_0xf639('0x63')][_0xf639('0x87')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x88')];break;case _0xf639('0x89'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')]['message'];break;case _0xf639('0x8a'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x63')];_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8b')];break;case'plivo':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8c')];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')]['Text'];_0x154c1b['body'][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8d')];break;case _0xf639('0x8e'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]='+'+_0x4888ca[_0xf639('0x63')]['results'][0x0][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')]['results'][0x0]['text'];_0x154c1b['body'][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8f')][0x0][_0xf639('0x84')];break;case _0xf639('0x90'):_0x154c1b['body'][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x91')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x92')][_0xf639('0x2c')];break;case _0xf639('0x93'):_0x154c1b['body'][_0xf639('0x82')]=_0x4888ca['body'][_0xf639('0x94')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x88')];_0x154c1b['body'][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x95')];break;case _0xf639('0x96'):_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][0x0][_0xf639('0x2c')]['id'];_0x154c1b['body']['from']=_0x4888ca[_0xf639('0x63')][0x0][_0xf639('0x2c')]['from'];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca['body'][0x0][_0xf639('0x2c')][_0xf639('0x88')];break;case'intelepeer':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca['body'][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x2c')];_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')]['refid'];break;}}if(_0x154c1b['body']['id']){delete _0x154c1b[_0xf639('0x63')]['id'];}if(_[_0xf639('0x97')](_0x154c1b[_0xf639('0x63')][_0xf639('0x82')])){throw new db[(_0xf639('0x7c'))][(_0xf639('0x98'))](_0xf639('0x99'));}if(_[_0xf639('0x97')](_0x154c1b[_0xf639('0x63')][_0xf639('0x63')])||_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]===''){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0x9a'));}if(_[_0xf639('0x97')](_0x154c1b[_0xf639('0x63')][_0xf639('0x9b')])){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0x9c')+_0x1d3719);}if(!_[_0xf639('0x9d')](_0x1d3719,_0x154c1b['body'][_0xf639('0x9b')])){throw new db[(_0xf639('0x7c'))][(_0xf639('0x98'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1d3719);}_0x55f29b[_0x154c1b[_0xf639('0x63')]['mapKey']]=_0x154c1b[_0xf639('0x63')][_0xf639('0x82')];return db[_0xf639('0x9e')]['find']({'where':{'id':_0x154c1b[_0xf639('0x76')]['ListId']},'include':[{'model':db[_0xf639('0x7b')],'as':_0xf639('0x9f'),'where':_0x55f29b,'limit':0x1,'order':[['updatedAt',_0xf639('0xa0')]]}]});})[_0xf639('0x24')](handleEntityNotFound(_0x4151f8,null))[_0xf639('0x24')](function(_0x1259cc){if(_0x1259cc){_0x154c1b[_0xf639('0xa1')]=_['omit'](_0x1259cc,[_0xf639('0x9f')]);if(_0x1259cc[_0xf639('0x9f')][_0xf639('0x4e')]){return _0x1259cc['Contacts'][0x0];}var _0x14f79c=_['defaults'](_0x154c1b[_0xf639('0x63')],{'firstName':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')],'ListId':_0x1259cc['id']});_0x14f79c[_0x154c1b[_0xf639('0x63')][_0xf639('0x9b')]]=_0x154c1b[_0xf639('0x63')][_0xf639('0x82')];return db[_0xf639('0x7b')][_0xf639('0x62')](_0x14f79c,{'fields':_0x2519d8,'raw':!![]});}})[_0xf639('0x24')](handleEntityNotFound(_0x4151f8,null))[_0xf639('0x24')](function(_0x1993cc){if(_0x1993cc){_0x154c1b['contact']=_0x1993cc;var _0x4815e5={'ContactId':_0x1993cc['id'],'phone':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')],'SmsAccountId':_0x4888ca[_0xf639('0x5e')]['id']};var _0x171a26={'ContactId':_0x1993cc['id'],'SmsAccountId':_0x4888ca[_0xf639('0x5e')]['id'],'closed':![]};return db[_0xf639('0xa2')]['find']({'where':_0x171a26})[_0xf639('0x24')](function(_0x228b95){if(_0x228b95){return[_0x228b95,![]];}return db[_0xf639('0xa2')][_0xf639('0x62')](_0x4815e5)[_0xf639('0x24')](function(_0x176419){return[_0x176419,!![]];});});}})[_0xf639('0xa3')](function(_0x35d355,_0x36640f){_0x154c1b[_0xf639('0xa4')]=_0x35d355[_0xf639('0x3c')]({'plain':!![]});_0x154c1b[_0xf639('0xa4')][_0xf639('0xa5')]=![];if(_0x36640f){if(_0x154c1b[_0xf639('0x76')][_0xf639('0xa6')]){_0x154c1b[_0xf639('0x77')]['push']({'id':0x0,'priority':_0x154c1b[_0xf639('0x77')][_0xf639('0x4e')]+0x1,'app':_0xf639('0xa7'),'appdata':_0xf639('0xa8'),'interval':_0xf639('0xa9')});}_0x154c1b[_0xf639('0xa4')]['created']=!![];}return db[_0xf639('0xaa')][_0xf639('0x62')]({'phone':_0x154c1b[_0xf639('0x63')]['from'],'messageId':_0x154c1b[_0xf639('0x63')]['messageId'],'body':_0x154c1b['body'][_0xf639('0x63')],'SmsAccountId':_0x4888ca['params']['id'],'SmsInteractionId':_0x35d355['id'],'direction':'in','ContactId':_0x35d355[_0xf639('0xab')],'AttachmentId':_0x154c1b['body'][_0xf639('0xac')]});})[_0xf639('0x24')](function(_0x38fab8){_0x154c1b['message']=_0x38fab8;if(_0x154c1b[_0xf639('0xa4')][_0xf639('0xad')]){return db[_0xf639('0xae')][_0xf639('0x61')]({'attributes':['id',_0xf639('0x40')],'where':{'id':_0x154c1b[_0xf639('0xa4')][_0xf639('0xad')]}})[_0xf639('0x24')](function(_0x50f28f){if(_0x50f28f){_0x154c1b[_0xf639('0x77')][_0xf639('0xaf')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x50f28f[_0xf639('0x40')]+','+(_0x154c1b[_0xf639('0x76')][_0xf639('0xb0')]||0xa),'interval':_0xf639('0xa9')});}return respondWithRpcPromise(_0xf639('0xb1'),_0xf639('0xb2'),_0x154c1b);});}return respondWithRpcPromise(_0xf639('0xb1'),_0xf639('0xb2'),_0x154c1b);})[_0xf639('0x24')](function(_0x3f4784){if(_0x3f4784){var _0x563993=0xc8;var _0x4daf6e=_0xf639('0xb3');logger[_0xf639('0x25')](_0xf639('0xb4'),_0x4daf6e,_0x563993,_0xf639('0xb5'));logger[_0xf639('0x27')](_0xf639('0xb6'),_0x4daf6e,_0x563993,'entity\x20found',JSON[_0xf639('0x28')](_0x3f4784));if(_0x154c1b[_0xf639('0x76')][_0xf639('0x46')]===_0xf639('0xb7')){return _0x4151f8[_0xf639('0x30')](_0x563993)[_0xf639('0xb8')](_0xf639('0xb9'),'text/xml')[_0xf639('0x41')](_0xf639('0xba'));}else{return _0x4151f8['status'](_0x563993)['json'](_0x3f4784);}}})[_0xf639('0x2e')](handleError(_0x4151f8,null));};exports[_0xf639('0xbb')]=function(_0x21c43e,_0x300bcd,_0xdb7657){return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x21c43e[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x300bcd,null))[_0xf639('0x24')](function(_0x3d157a){if(_0x3d157a){return db['sequelize'][_0xf639('0xbc')](function(_0x81fdab){return db['SmsApplication'][_0xf639('0x3f')]({'where':{'SmsAccountId':_0x21c43e[_0xf639('0x5e')]['id']},'transaction':_0x81fdab})['then'](function(_0x27214c){var _0x5495d9=_[_0xf639('0x44')](_0x21c43e[_0xf639('0x63')],function(_0x36601f){_0x36601f['SmsAccountId']=_0x21c43e['params']['id'];return _0x36601f;});return db['SmsApplication'][_0xf639('0xbd')](_0x5495d9,{'transaction':_0x81fdab});});})['then'](function(){return db[_0xf639('0x75')][_0xf639('0xbe')]({'where':{'SmsAccountId':_0x21c43e['params']['id']},'order':_0xf639('0x7a')});});}})['then'](respondWithResult(_0x300bcd,null))[_0xf639('0x2e')](handleError(_0x300bcd,null));};exports['getApplications']=function(_0x5914e6,_0x1a7349,_0x427826){var _0x198448={};var _0x3db078={};var _0x645400;var _0x5041e5;return db['SmsAccount']['findOne']({'where':{'id':_0x5914e6[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x1a7349,null))[_0xf639('0x24')](function(_0x4d9129){if(_0x4d9129){_0x645400=_0x4d9129;_0x3db078['model']=_[_0xf639('0x4a')](db[_0xf639('0x75')][_0xf639('0x45')]);_0x3db078[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x5914e6[_0xf639('0x49')]);_0x3db078[_0xf639('0x54')]=_[_0xf639('0x4c')](_0x3db078['model'],_0x3db078['query']);_0x198448[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x3db078[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x5914e6[_0xf639('0x49')][_0xf639('0x4d')]));_0x198448[_0xf639('0x4b')]=_0x198448[_0xf639('0x4b')]['length']?_0x198448[_0xf639('0x4b')]:_0x3db078[_0xf639('0x48')];_0x198448[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x5914e6[_0xf639('0x49')][_0xf639('0x52')]);_0x198448['where']=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x5914e6[_0xf639('0x49')],_0x3db078['filters']));if(_0x5914e6[_0xf639('0x49')][_0xf639('0x58')]){_0x198448[_0xf639('0x53')]=_['merge'](_0x198448['where'],{'$or':_[_0xf639('0x44')](_0x198448[_0xf639('0x4b')],function(_0xd22988){var _0x4f5778={};_0x4f5778[_0xd22988]={'$like':'%'+_0x5914e6[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x4f5778;})});}_0x198448=_[_0xf639('0x56')]({},_0x198448,_0x5914e6[_0xf639('0x60')]);return _0x645400[_0xf639('0xbf')](_0x198448);}})['then'](function(_0x90d689){if(_0x90d689){_0x5041e5=_0x90d689[_0xf639('0x4e')];if(!_0x5914e6[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x198448[_0xf639('0x35')]=qs[_0xf639('0x35')](_0x5914e6['query'][_0xf639('0x35')]);_0x198448[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x5914e6[_0xf639('0x49')][_0xf639('0x33')]);}return _0x645400[_0xf639('0xbf')](_0x198448);}})[_0xf639('0x24')](function(_0x275dcf){if(_0x275dcf){return _0x275dcf?{'count':_0x5041e5,'rows':_0x275dcf}:null;}})[_0xf639('0x24')](respondWithResult(_0x1a7349,null))[_0xf639('0x2e')](handleError(_0x1a7349,null));};exports[_0xf639('0xc0')]=function(_0x4fdaa8,_0x54a1ff,_0x2397c6){var _0x1d78b4={'raw':![],'where':{}};var _0x20b9f6={};var _0x1e4a1c={'count':0x0,'rows':[]};return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x4fdaa8['params']['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x54a1ff,null))[_0xf639('0x24')](function(_0x1b4f6a){if(_0x1b4f6a){_0x20b9f6[_0xf639('0x48')]=_['keys'](db['SmsInteraction'][_0xf639('0x45')]);_0x20b9f6[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x4fdaa8[_0xf639('0x49')]);_0x20b9f6[_0xf639('0x54')]=_[_0xf639('0x4c')](_0x20b9f6[_0xf639('0x48')],_0x20b9f6[_0xf639('0x49')]);_0x1d78b4[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x20b9f6['model'],qs[_0xf639('0x4d')](_0x4fdaa8[_0xf639('0x49')][_0xf639('0x4d')]));_0x1d78b4[_0xf639('0x4b')]=_0x1d78b4[_0xf639('0x4b')][_0xf639('0x4e')]?_0x1d78b4[_0xf639('0x4b')]:_0x20b9f6[_0xf639('0x48')];if(!_0x4fdaa8['query'][_0xf639('0x4f')](_0xf639('0x50'))){_0x1d78b4['limit']=qs['limit'](_0x4fdaa8[_0xf639('0x49')][_0xf639('0x35')]);_0x1d78b4[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x4fdaa8[_0xf639('0x49')][_0xf639('0x33')]);}_0x1d78b4[_0xf639('0x51')]=qs['sort'](_0x4fdaa8['query'][_0xf639('0x52')]);_0x1d78b4[_0xf639('0x53')]=qs['filters'](_[_0xf639('0x55')](_0x4fdaa8['query'],_0x20b9f6[_0xf639('0x54')]));_0x1d78b4['where'][_0xf639('0x6a')]=_0x1b4f6a['id'];if(_0x4fdaa8[_0xf639('0x49')][_0xf639('0x58')]){_0x1d78b4[_0xf639('0x53')]=_[_0xf639('0x56')](_0x1d78b4[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x1d78b4['attributes'],function(_0x17b4e5){var _0xbeacf2={};_0xbeacf2[_0x17b4e5]={'$like':'%'+_0x4fdaa8[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0xbeacf2;})});}_0x1d78b4=_[_0xf639('0x56')]({},_0x1d78b4,_0x4fdaa8[_0xf639('0x60')]);return db[_0xf639('0xa2')]['count']({'where':_0x1d78b4[_0xf639('0x53')]})['then'](function(_0x1d5f36){_0x1e4a1c[_0xf639('0x36')]=_0x1d5f36;if(_0x4fdaa8[_0xf639('0x49')][_0xf639('0x5a')]){_0x1d78b4[_0xf639('0x5b')]=[{'model':db[_0xf639('0x7b')],'as':_0xf639('0xc1'),'required':![]},{'model':db['User'],'as':_0xf639('0xc2'),'attributes':[_0xf639('0x40'),_0xf639('0xc3'),'internal'],'required':![]},{'model':db[_0xf639('0xc4')],'as':_0xf639('0xc5'),'attributes':['id',_0xf639('0x40'),_0xf639('0xc6')],'where':_0x4fdaa8[_0xf639('0x49')][_0xf639('0xc7')]?{'id':_0x4fdaa8['query'][_0xf639('0xc7')]}:undefined,'required':_0x4fdaa8[_0xf639('0x49')][_0xf639('0xc7')]?!![]:![]}];}return db['SmsInteraction'][_0xf639('0x6d')](_0x1d78b4);})[_0xf639('0x24')](function(_0x24431a){_0x1e4a1c[_0xf639('0x5c')]=_0x24431a;return _0x1e4a1c;});}})['then'](respondWithFilteredResult(_0x54a1ff,_0x1d78b4))[_0xf639('0x2e')](handleError(_0x54a1ff,null));};exports[_0xf639('0x41')]=function(_0x27d1a9,_0x2f64f8,_0x3c00ea){var _0x3467f9,_0x474582,_0x1ca2f9;if(_[_0xf639('0x97')](_0x27d1a9[_0xf639('0x63')]['body'])||_0x27d1a9[_0xf639('0x63')][_0xf639('0x63')]===''){throw new db[(_0xf639('0x7c'))][(_0xf639('0x98'))](_0xf639('0x9a'));}if(_[_0xf639('0x97')](_0x27d1a9[_0xf639('0x63')]['to'])){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0xc8'));}_0x3467f9=_0x27d1a9[_0xf639('0x63')]['to'];return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x27d1a9[_0xf639('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0xf639('0xc9'),'include':[{'model':db[_0xf639('0x7b')],'as':_0xf639('0x9f'),'where':{'mobile':_0x3467f9},'limit':0x1,'order':[[_0xf639('0x80'),_0xf639('0xa0')]]}]}]})[_0xf639('0x24')](handleEntityNotFound(_0x2f64f8,null))[_0xf639('0x24')](function(_0x46b294){if(_0x46b294&&_0x46b294[_0xf639('0xc9')]){_0x474582=_0x46b294[_0xf639('0x3c')]({'plain':!![]});if(_0x474582[_0xf639('0xc9')]&&_0x474582[_0xf639('0xc9')][_0xf639('0x9f')][_0xf639('0x4e')]){return _0x474582[_0xf639('0xc9')]['Contacts'][0x0];}return db[_0xf639('0x7b')][_0xf639('0x62')](_[_0xf639('0x1b')](_0x27d1a9[_0xf639('0x63')],{'firstName':_0x3467f9,'mobile':_0x3467f9,'phone':_0x3467f9,'ListId':_0x474582['ListId']}));}})[_0xf639('0x24')](handleEntityNotFound(_0x2f64f8,null))[_0xf639('0x24')](function(_0x46e050){if(_0x46e050){_0x1ca2f9=_0x46e050;return db[_0xf639('0xa2')][_0xf639('0x61')]({'where':{'ContactId':_0x1ca2f9['id'],'closed':![],'SmsAccountId':_0x474582['id']}})[_0xf639('0x24')](function(_0xc5b78a){if(_0xc5b78a){return[_0xc5b78a,![]];}return db['SmsInteraction'][_0xf639('0x62')]({'UserId':_0x27d1a9[_0xf639('0x64')]['id'],'ContactId':_0x1ca2f9['id'],'SmsAccountId':_0x474582['id'],'phone':_0x3467f9,'firstMsgDirection':'out','Messages':[_[_0xf639('0x56')](_0x27d1a9['body'],{'read':![],'body':_0x27d1a9[_0xf639('0x63')]['body'],'phone':_0x3467f9,'SmsAccountId':_0x474582['id'],'UserId':_0x27d1a9['user']['id'],'ContactId':_0x1ca2f9['id']})]},{'include':[{'model':db[_0xf639('0xaa')],'as':_0xf639('0xca')}]})[_0xf639('0x24')](function(_0x5dbf34){return[_0x5dbf34,!![]];});});}})[_0xf639('0xa3')](function(_0x51d0aa,_0x2e580b){if(_0x2e580b){return _0x51d0aa;}return db[_0xf639('0xaa')]['create'](_['merge'](_0x27d1a9[_0xf639('0x63')],{'read':![],'body':_0x27d1a9[_0xf639('0x63')][_0xf639('0x63')],'phone':_0x3467f9,'SmsAccountId':_0x474582['id'],'SmsInteractionId':_0x51d0aa['id'],'UserId':_0x27d1a9['user']['id'],'ContactId':_0x1ca2f9['id']}))[_0xf639('0x24')](function(_0x40af55){_0x51d0aa['dataValues'][_0xf639('0xca')]=[];_0x51d0aa[_0xf639('0xcb')]['Messages']['push'](_0x40af55[_0xf639('0xcb')]);return _0x51d0aa;});})[_0xf639('0x24')](respondWithResult(_0x2f64f8,null))['catch'](handleError(_0x2f64f8,null));};exports[_0xf639('0x30')]=function(_0xb8199,_0x545659,_0x3b9572){if(_0xb8199[_0xf639('0x63')]['id']){delete _0xb8199['body']['id'];}var _0x3d8133,_0x393b2b,_0x24ae2e;return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0xb8199[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x545659,null))[_0xf639('0x24')](function(_0x2b95a8){if(_0x2b95a8){_0x24ae2e=_0x2b95a8;logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf639('0x30'),'received\x20delivery\x20report\x20from',_0x2b95a8[_0xf639('0x46')],util[_0xf639('0xcc')](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));switch(_0x2b95a8[_0xf639('0x46')]){case'skebby':if(_0xb8199[_0xf639('0x63')][_0xf639('0xcd')]&&_0xb8199[_0xf639('0x63')][_0xf639('0x30')]){_0x393b2b=_0xb8199[_0xf639('0x63')][_0xf639('0x30')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199['body'][_0xf639('0xcd')]}});}break;case _0xf639('0x89'):if(_0xb8199[_0xf639('0x63')][_0xf639('0xce')]&&_0xb8199[_0xf639('0x63')]['statusInt']){_0x393b2b=_0xb8199[_0xf639('0x63')][_0xf639('0xcf')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0xce')]}});}break;case _0xf639('0x8a'):if(_0xb8199['body']['message_id']&&_0xb8199['body'][_0xf639('0xd0')]){_0x393b2b=_0xb8199[_0xf639('0x63')]['status_code'];return db['SmsMessage'][_0xf639('0x61')]({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0x8b')]}});}break;case _0xf639('0x8e'):var _0x57c6ef=_0xb8199[_0xf639('0x63')][_0xf639('0x8f')][0x0];if(_0x57c6ef[_0xf639('0x84')]&&_0x57c6ef[_0xf639('0x30')][_0xf639('0xd1')]==='DELIVERED'){_0x393b2b=_0x57c6ef[_0xf639('0x30')][_0xf639('0xd1')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0x57c6ef['messageId']}});}break;case _0xf639('0x93'):if(_0xb8199[_0xf639('0x63')]['messageId']&&_0xb8199[_0xf639('0x63')][_0xf639('0x30')]){_0x393b2b=_0xb8199['body'][_0xf639('0x30')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0x84')]}});}break;case'bandwidth':if(_0xb8199[_0xf639('0x63')][0x0]['message']['id']){_0x393b2b=_0xb8199['body'][0x0][_0xf639('0x46')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199['body'][0x0][_0xf639('0x2c')]['id']}});}break;case _0xf639('0xd2'):if(_0xb8199[_0xf639('0x63')][_0xf639('0xd3')]&&_0xb8199[_0xf639('0x63')][_0xf639('0x30')]){_0x393b2b=_0xb8199[_0xf639('0x63')]['status'];return db[_0xf639('0xaa')]['find']({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0xd3')]}});}break;}}})[_0xf639('0x24')](handleEntityNotFound(_0x545659,null))['then'](function(_0x58881a){if(_0x58881a){_0x3d8133=_0x58881a;switch(_0x24ae2e[_0xf639('0x46')]){case _0xf639('0x86'):if(_0x393b2b===_0xf639('0xd4')){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),'status',_0xf639('0x86'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x89'):if(_0x393b2b==='1'){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf639('0x30'),_0xf639('0x86'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x8a'):if(!_0xb8199[_0xf639('0x63')][_0xf639('0xd5')]&&_0x393b2b>=0xc8&&_0x393b2b<=0xce){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf639('0x30'),_0xf639('0x8a'),util[_0xf639('0xcc')](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x8e'):var _0x20b989=_0xb8199[_0xf639('0x63')][_0xf639('0x8f')][0x0];if(_0x20b989[_0xf639('0x30')]['groupName']===_0xf639('0xd4')){return _0x3d8133['update']({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),'status',_0xf639('0x8e'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x93'):if(_0x393b2b=='DELIVERED_TO_GATEWAY'||_0x393b2b==_0xf639('0xd6')){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger['error'](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0x93'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x96'):if(_0x393b2b==_0xf639('0xd7')){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0x96'),util[_0xf639('0xcc')](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0xd2'):if(_0x393b2b===_0xf639('0xd8')||_0x393b2b==='ACCEPTD'){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0xd2'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;}return _0x3d8133;}})[_0xf639('0x24')](respondWithResult(_0x545659,null))[_0xf639('0x2e')](handleError(_0x545659,null));};exports['statusGet']=function(_0x2b74f1,_0x597924,_0x344bde){var _0x30dc19,_0x352474,_0x4887a8;return db['SmsAccount']['find']({'where':{'id':_0x2b74f1[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x597924,null))['then'](function(_0x133f05){if(_0x133f05){_0x4887a8=_0x133f05;logger[_0xf639('0x27')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0xd9'),_0x133f05[_0xf639('0x46')],util['inspect'](_0x2b74f1[_0xf639('0x49')],{'showHidden':![],'depth':null}));switch(_0x133f05[_0xf639('0x46')]){case _0xf639('0x90'):if(_0x2b74f1[_0xf639('0x49')][_0xf639('0xda')]&&_0x2b74f1[_0xf639('0x49')][_0xf639('0xdb')]){_0x352474=_0x2b74f1[_0xf639('0x49')]['state'];return db[_0xf639('0xaa')]['find']({'where':{'messageId':_0x2b74f1[_0xf639('0x49')][_0xf639('0xda')]}});}break;}}})[_0xf639('0x24')](handleEntityNotFound(_0x597924,null))[_0xf639('0x24')](function(_0x105c64){if(_0x105c64){_0x30dc19=_0x105c64;switch(_0x4887a8[_0xf639('0x46')]){case _0xf639('0x90'):if(_0x352474==='2'||_0x352474==='6'){return _0x30dc19[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0x90'),util['inspect'](_0x2b74f1[_0xf639('0x49')],{'showHidden':![],'depth':null}));};break;}return _0x30dc19;}})[_0xf639('0x24')](respondWithResult(_0x597924,null))[_0xf639('0x2e')](handleError(_0x597924,null));};exports[_0xf639('0xdc')]=function(_0x4d903b,_0x18465c,_0x204445){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x4d903b[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x18465c,null))[_0xf639('0x24')](function(_0x2c9edd){if(_0x2c9edd){return _0x2c9edd[_0xf639('0xdc')](_0x4d903b[_0xf639('0x63')][_0xf639('0x6f')],_[_0xf639('0xdd')](_0x4d903b[_0xf639('0x63')],[_0xf639('0x6f'),'id'])||{})['spread'](function(_0x1d340c){for(var _0x289d43=0x0;_0x289d43<_0x4d903b[_0xf639('0x63')][_0xf639('0x6f')]['length'];_0x289d43+=0x1){socket[_0xf639('0xde')](_0xf639('0xdf'),{'UserId':Number(_0x4d903b[_0xf639('0x63')][_0xf639('0x6f')][_0x289d43]),'SmsAccountId':Number(_0x4d903b[_0xf639('0x5e')]['id'])});}return _0x1d340c;});}})['then'](respondWithResult(_0x18465c,null))[_0xf639('0x2e')](handleError(_0x18465c,null));};exports['removeAgents']=function(_0x16c6dd,_0x3988b9,_0x496ca9){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x16c6dd[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3988b9,null))[_0xf639('0x24')](function(_0x3fd7de){if(_0x3fd7de){return _0x3fd7de[_0xf639('0xe0')](_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')])[_0xf639('0x24')](function(){if(_[_0xf639('0xe1')](_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')])){for(var _0x4f82a0=0x0;_0x4f82a0<_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')][_0xf639('0x4e')];_0x4f82a0+=0x1){socket[_0xf639('0xde')](_0xf639('0xe2'),{'UserId':Number(_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')][_0x4f82a0]),'SmsAccountId':Number(_0x16c6dd['params']['id'])});}}else{socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')]),'SmsAccountId':Number(_0x16c6dd[_0xf639('0x5e')]['id'])});}});}})[_0xf639('0x24')](respondWithStatusCode(_0x3988b9,null))[_0xf639('0x2e')](handleError(_0x3988b9,null));};exports['getAgents']=function(_0x42880e,_0x4b320c,_0x20c280){var _0x515339={};var _0x41ca46={};var _0x113e18;var _0x7f85ba;return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x42880e[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4b320c,null))[_0xf639('0x24')](function(_0x9a655f){if(_0x9a655f){_0x113e18=_0x9a655f;_0x41ca46['model']=_['keys'](db[_0xf639('0xae')]['rawAttributes']);_0x41ca46[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x42880e[_0xf639('0x49')]);_0x41ca46['filters']=_['intersection'](_0x41ca46[_0xf639('0x48')],_0x41ca46[_0xf639('0x49')]);_0x515339['attributes']=_['intersection'](_0x41ca46[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x42880e[_0xf639('0x49')][_0xf639('0x4d')]));_0x515339['attributes']=_0x515339['attributes'][_0xf639('0x4e')]?_0x515339[_0xf639('0x4b')]:_0x41ca46[_0xf639('0x48')];_0x515339['order']=qs['sort'](_0x42880e['query']['sort']);_0x515339[_0xf639('0x53')]=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x42880e['query'],_0x41ca46['filters']));if(_0x42880e[_0xf639('0x49')][_0xf639('0x58')]){_0x515339[_0xf639('0x53')]=_[_0xf639('0x56')](_0x515339[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x515339[_0xf639('0x4b')],function(_0x58ab8f){var _0x3fe9d0={};_0x3fe9d0[_0x58ab8f]={'$like':'%'+_0x42880e[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x3fe9d0;})});}_0x515339=_['merge']({},_0x515339,_0x42880e[_0xf639('0x60')]);return _0x113e18[_0xf639('0xe3')](_0x515339);}})[_0xf639('0x24')](function(_0xf45964){if(_0xf45964){_0x7f85ba=_0xf45964[_0xf639('0x4e')];if(!_0x42880e[_0xf639('0x49')][_0xf639('0x4f')]('nolimit')){_0x515339['limit']=qs[_0xf639('0x35')](_0x42880e[_0xf639('0x49')][_0xf639('0x35')]);_0x515339[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x42880e[_0xf639('0x49')]['offset']);}return _0x113e18[_0xf639('0xe3')](_0x515339);}})[_0xf639('0x24')](function(_0x115d06){if(_0x115d06){return _0x115d06?{'count':_0x7f85ba,'rows':_0x115d06}:null;}})[_0xf639('0x24')](respondWithResult(_0x4b320c,null))[_0xf639('0x2e')](handleError(_0x4b320c,null));};
\ No newline at end of file
index 0c4a068..8749913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb0e=['SmsAccount','save','remove','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x21c76e,_0x4e415d){var _0x27e000=function(_0x54c51f){while(--_0x54c51f){_0x21c76e['push'](_0x21c76e['shift']());}};_0x27e000(++_0x4e415d);}(_0xfb0e,0xd8));var _0xefb0=function(_0x2d8434,_0x43d781){_0x2d8434=_0x2d8434-0x0;var _0x26b9e4=_0xfb0e[_0x2d8434];return _0x26b9e4;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xefb0('0x0'))['db'][_0xefb0('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xefb0('0x2'),'afterUpdate':'update','afterDestroy':_0xefb0('0x3')};function emitEvent(_0x325b36){return function(_0x1b95f7,_0x35eee6,_0x4c2248){SmsAccountEvents[_0xefb0('0x4')](_0x325b36+':'+_0x1b95f7['id'],_0x1b95f7);SmsAccountEvents[_0xefb0('0x4')](_0x325b36,_0x1b95f7);_0x4c2248(null);};}for(var e in events){if(events[_0xefb0('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0xefb0('0x6')]=SmsAccountEvents;
\ No newline at end of file
+var _0xfa89=['exports','SmsAccount','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x53b7ca,_0x7b041d){var _0x4a64bd=function(_0x2f2d03){while(--_0x2f2d03){_0x53b7ca['push'](_0x53b7ca['shift']());}};_0x4a64bd(++_0x7b041d);}(_0xfa89,0x112));var _0x9fa8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfa89[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var SmsAccount=require('../../mysqldb')['db'][_0x9fa8('0x0')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x9fa8('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9fa8('0x2'),'afterDestroy':_0x9fa8('0x3')};function emitEvent(_0x288bfa){return function(_0x5d0939,_0x24fe8e,_0x75bdd2){SmsAccountEvents[_0x9fa8('0x4')](_0x288bfa+':'+_0x5d0939['id'],_0x5d0939);SmsAccountEvents[_0x9fa8('0x4')](_0x288bfa,_0x5d0939);_0x75bdd2(null);};}for(var e in events){if(events[_0x9fa8('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x9fa8('0x6')]=SmsAccountEvents;
\ No newline at end of file
index f0b43ed..233937b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fbe=['./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','bluebird','request-promise','path','rimraf'];(function(_0x53b551,_0x1681dc){var _0x2d7ce8=function(_0x399e61){while(--_0x399e61){_0x53b551['push'](_0x53b551['shift']());}};_0x2d7ce8(++_0x1681dc);}(_0x8fbe,0xe1));var _0xe8fb=function(_0x158da6,_0x3cb06d){_0x158da6=_0x158da6-0x0;var _0x429c30=_0x8fbe[_0x158da6];return _0x429c30;};'use strict';var _=require(_0xe8fb('0x0'));var util=require(_0xe8fb('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xe8fb('0x2'));var rp=require(_0xe8fb('0x3'));var fs=require('fs');var path=require(_0xe8fb('0x4'));var rimraf=require(_0xe8fb('0x5'));var config=require('../../config/environment');var attributes=require(_0xe8fb('0x6'));module[_0xe8fb('0x7')]=function(_0x5277a5,_0x4bc78b){return _0x5277a5[_0xe8fb('0x8')](_0xe8fb('0x9'),attributes,{'tableName':_0xe8fb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b33=['rimraf','../../config/environment','./smsAccount.attributes','exports','SmsAccount','sms_accounts','lodash','util','bluebird','request-promise'];(function(_0x424e6c,_0x1e54b4){var _0x2310da=function(_0x303b6a){while(--_0x303b6a){_0x424e6c['push'](_0x424e6c['shift']());}};_0x2310da(++_0x1e54b4);}(_0x2b33,0x1b4));var _0x32b3=function(_0x575c17,_0x58cf05){_0x575c17=_0x575c17-0x0;var _0x4be569=_0x2b33[_0x575c17];return _0x4be569;};'use strict';var _=require(_0x32b3('0x0'));var util=require(_0x32b3('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x32b3('0x2'));var rp=require(_0x32b3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x32b3('0x4'));var config=require(_0x32b3('0x5'));var attributes=require(_0x32b3('0x6'));module[_0x32b3('0x7')]=function(_0x2b6641,_0x5c3090){return _0x2b6641['define'](_0x32b3('0x8'),attributes,{'tableName':_0x32b3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4543568..221156a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd82=['../../config/logger','rpc','../../config/environment','http','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','find','options','raw','where','map','include','model','attributes','ShowSmsAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x4a7ea5,_0x2c8357){var _0x51688a=function(_0x4c6d9c){while(--_0x4c6d9c){_0x4a7ea5['push'](_0x4a7ea5['shift']());}};_0x51688a(++_0x2c8357);}(_0xfd82,0x146));var _0x2fd8=function(_0x211aa9,_0x5d2873){_0x211aa9=_0x211aa9-0x0;var _0x4f90f8=_0xfd82[_0x211aa9];return _0x4f90f8;};'use strict';var _=require(_0x2fd8('0x0'));var util=require(_0x2fd8('0x1'));var moment=require(_0x2fd8('0x2'));var BPromise=require(_0x2fd8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2fd8('0x4'));var db=require(_0x2fd8('0x5'))['db'];var utils=require(_0x2fd8('0x6'));var logger=require(_0x2fd8('0x7'))(_0x2fd8('0x8'));var config=require(_0x2fd8('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2fd8('0xa')]({'port':0x232a});config[_0x2fd8('0xb')]=_[_0x2fd8('0xc')](config[_0x2fd8('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x2fd8('0xd'))(new Redis(config[_0x2fd8('0xb')]));require(_0x2fd8('0xe'))[_0x2fd8('0xf')](socket);function respondWithRpcPromise(_0x55580c,_0x4361be,_0x35f2fc){return new BPromise(function(_0x56bc06,_0x1349e4){return client[_0x2fd8('0x10')](_0x55580c,_0x35f2fc)[_0x2fd8('0x11')](function(_0x4362ff){logger[_0x2fd8('0x12')](_0x2fd8('0x13'),_0x4361be,_0x2fd8('0x14'));logger[_0x2fd8('0x15')](_0x2fd8('0x16'),_0x4361be,_0x2fd8('0x14'),JSON[_0x2fd8('0x17')](_0x4362ff));if(_0x4362ff['error']){if(_0x4362ff[_0x2fd8('0x18')]['code']===0x1f4){logger['error'](_0x2fd8('0x13'),_0x4361be,_0x4362ff[_0x2fd8('0x18')][_0x2fd8('0x19')]);return _0x1349e4(_0x4362ff[_0x2fd8('0x18')][_0x2fd8('0x19')]);}logger[_0x2fd8('0x18')](_0x2fd8('0x13'),_0x4361be,_0x4362ff[_0x2fd8('0x18')][_0x2fd8('0x19')]);return _0x56bc06(_0x4362ff[_0x2fd8('0x18')][_0x2fd8('0x19')]);}else{logger[_0x2fd8('0x12')]('SmsAccount,\x20%s,\x20%s',_0x4361be,'request\x20sent');_0x56bc06(_0x4362ff[_0x2fd8('0x1a')][_0x2fd8('0x19')]);}})[_0x2fd8('0x1b')](function(_0xed228){logger[_0x2fd8('0x18')](_0x2fd8('0x13'),_0x4361be,_0xed228);_0x1349e4(_0xed228);});});}exports['ShowSmsAccount']=function(_0x5f0a44){var _0x207359=this;return new Promise(function(_0x5483d5,_0x5d5fb0){return db['SmsAccount'][_0x2fd8('0x1c')]({'raw':_0x5f0a44[_0x2fd8('0x1d')]?_0x5f0a44[_0x2fd8('0x1d')][_0x2fd8('0x1e')]===undefined?!![]:![]:!![],'where':_0x5f0a44[_0x2fd8('0x1d')]?_0x5f0a44[_0x2fd8('0x1d')][_0x2fd8('0x1f')]||null:null,'attributes':_0x5f0a44[_0x2fd8('0x1d')]?_0x5f0a44[_0x2fd8('0x1d')]['attributes']||null:null,'include':_0x5f0a44['options']?_0x5f0a44[_0x2fd8('0x1d')]['include']?_[_0x2fd8('0x20')](_0x5f0a44[_0x2fd8('0x1d')][_0x2fd8('0x21')],function(_0x32d645){return{'model':db[_0x32d645[_0x2fd8('0x22')]],'as':_0x32d645['as'],'attributes':_0x32d645[_0x2fd8('0x23')],'include':_0x32d645[_0x2fd8('0x21')]?_[_0x2fd8('0x20')](_0x32d645[_0x2fd8('0x21')],function(_0x57be7d){return{'model':db[_0x57be7d[_0x2fd8('0x22')]],'as':_0x57be7d['as'],'attributes':_0x57be7d['attributes'],'include':_0x57be7d['include']?_[_0x2fd8('0x20')](_0x57be7d[_0x2fd8('0x21')],function(_0x548ddc){return{'model':db[_0x548ddc['model']],'as':_0x548ddc['as'],'attributes':_0x548ddc['attributes']};}):[]};}):[]};}):[]:[]})[_0x2fd8('0x11')](function(_0x1595e2){logger[_0x2fd8('0x12')](_0x2fd8('0x24'),_0x5f0a44);logger['debug'](_0x2fd8('0x24'),_0x5f0a44,JSON['stringify'](_0x1595e2));_0x5483d5(_0x1595e2);})[_0x2fd8('0x1b')](function(_0x5c7049){logger['error'](_0x2fd8('0x24'),_0x5c7049[_0x2fd8('0x19')],_0x5f0a44);_0x5d5fb0(_0x207359[_0x2fd8('0x18')](0x1f4,_0x5c7049[_0x2fd8('0x19')]));});});};
\ No newline at end of file
+var _0xd675=['redis','defaults','localhost','register','request','then','info','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','map','include','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x5eef05,_0x1be989){var _0x56d4b8=function(_0x57993d){while(--_0x57993d){_0x5eef05['push'](_0x5eef05['shift']());}};_0x56d4b8(++_0x1be989);}(_0xd675,0x8c));var _0x5d67=function(_0x3d7af5,_0x308d72){_0x3d7af5=_0x3d7af5-0x0;var _0x11b446=_0xd675[_0x3d7af5];return _0x11b446;};'use strict';var _=require(_0x5d67('0x0'));var util=require(_0x5d67('0x1'));var moment=require(_0x5d67('0x2'));var BPromise=require(_0x5d67('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5d67('0x4'));var db=require(_0x5d67('0x5'))['db'];var utils=require(_0x5d67('0x6'));var logger=require(_0x5d67('0x7'))(_0x5d67('0x8'));var config=require('../../config/environment');var jayson=require(_0x5d67('0x9'));var client=jayson[_0x5d67('0xa')][_0x5d67('0xb')]({'port':0x232a});config[_0x5d67('0xc')]=_[_0x5d67('0xd')](config[_0x5d67('0xc')],{'host':_0x5d67('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5d67('0xc')]));require('./smsAccount.socket')[_0x5d67('0xf')](socket);function respondWithRpcPromise(_0x1dfdbd,_0xe002b,_0x494183){return new BPromise(function(_0x3a8246,_0x543886){return client[_0x5d67('0x10')](_0x1dfdbd,_0x494183)[_0x5d67('0x11')](function(_0xd206b8){logger[_0x5d67('0x12')](_0x5d67('0x13'),_0xe002b,'request\x20sent');logger['debug'](_0x5d67('0x14'),_0xe002b,_0x5d67('0x15'),JSON[_0x5d67('0x16')](_0xd206b8));if(_0xd206b8[_0x5d67('0x17')]){if(_0xd206b8['error'][_0x5d67('0x18')]===0x1f4){logger[_0x5d67('0x17')](_0x5d67('0x13'),_0xe002b,_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);return _0x543886(_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);}logger[_0x5d67('0x17')](_0x5d67('0x13'),_0xe002b,_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);return _0x3a8246(_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);}else{logger['info'](_0x5d67('0x13'),_0xe002b,'request\x20sent');_0x3a8246(_0xd206b8[_0x5d67('0x1a')][_0x5d67('0x19')]);}})[_0x5d67('0x1b')](function(_0x3d112b){logger[_0x5d67('0x17')](_0x5d67('0x13'),_0xe002b,_0x3d112b);_0x543886(_0x3d112b);});});}exports[_0x5d67('0x1c')]=function(_0x529f25){var _0x1c959c=this;return new Promise(function(_0x32a465,_0x33f141){return db[_0x5d67('0x1d')][_0x5d67('0x1e')]({'raw':_0x529f25[_0x5d67('0x1f')]?_0x529f25[_0x5d67('0x1f')][_0x5d67('0x20')]===undefined?!![]:![]:!![],'where':_0x529f25[_0x5d67('0x1f')]?_0x529f25[_0x5d67('0x1f')][_0x5d67('0x21')]||null:null,'attributes':_0x529f25[_0x5d67('0x1f')]?_0x529f25['options'][_0x5d67('0x22')]||null:null,'include':_0x529f25[_0x5d67('0x1f')]?_0x529f25[_0x5d67('0x1f')]['include']?_[_0x5d67('0x23')](_0x529f25[_0x5d67('0x1f')][_0x5d67('0x24')],function(_0x4982b3){return{'model':db[_0x4982b3[_0x5d67('0x25')]],'as':_0x4982b3['as'],'attributes':_0x4982b3[_0x5d67('0x22')],'include':_0x4982b3[_0x5d67('0x24')]?_[_0x5d67('0x23')](_0x4982b3['include'],function(_0x120c2b){return{'model':db[_0x120c2b[_0x5d67('0x25')]],'as':_0x120c2b['as'],'attributes':_0x120c2b[_0x5d67('0x22')],'include':_0x120c2b[_0x5d67('0x24')]?_[_0x5d67('0x23')](_0x120c2b[_0x5d67('0x24')],function(_0x445696){return{'model':db[_0x445696[_0x5d67('0x25')]],'as':_0x445696['as'],'attributes':_0x445696['attributes']};}):[]};}):[]};}):[]:[]})[_0x5d67('0x11')](function(_0x146fbd){logger['info']('ShowSmsAccount',_0x529f25);logger['debug']('ShowSmsAccount',_0x529f25,JSON[_0x5d67('0x16')](_0x146fbd));_0x32a465(_0x146fbd);})[_0x5d67('0x1b')](function(_0x393157){logger[_0x5d67('0x17')](_0x5d67('0x1c'),_0x393157[_0x5d67('0x19')],_0x529f25);_0x33f141(_0x1c959c[_0x5d67('0x17')](0x1f4,_0x393157[_0x5d67('0x19')]));});});};
\ No newline at end of file
index 5ce81f0..819f2f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 58d84b0..e80cb1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['post','create','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x243181,_0x4ad5f3){var _0x21c002=function(_0x1ce967){while(--_0x1ce967){_0x243181['push'](_0x243181['shift']());}};_0x21c002(++_0x4ad5f3);}(_0xedd9,0xfc));var _0x9edd=function(_0x19b677,_0x39f86d){_0x19b677=_0x19b677-0x0;var _0x324f65=_0xedd9[_0x19b677];return _0x324f65;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0xe')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['put'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x10')]);router[_0x9edd('0x11')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3c0b7d,_0xb0ac76){var _0x4596ee=function(_0x392b81){while(--_0x392b81){_0x3c0b7d['push'](_0x3c0b7d['shift']());}};_0x4596ee(++_0xb0ac76);}(_0x34e8,0x12c));var _0x834e=function(_0x17ae12,_0x3a331f){_0x17ae12=_0x17ae12-0x0;var _0x272ea2=_0x34e8[_0x17ae12];return _0x272ea2;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=router;
\ No newline at end of file
index 9ba8073..22b2d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da6=['sequelize','exports','INTEGER','noop','STRING','*,*,*,*'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1da6,0x1ce));var _0x61da=function(_0x2aaa60,_0x22258f){_0x2aaa60=_0x2aaa60-0x0;var _0x2e3fa5=_0x1da6[_0x2aaa60];return _0x2e3fa5;};'use strict';var Sequelize=require(_0x61da('0x0'));module[_0x61da('0x1')]={'priority':{'type':Sequelize[_0x61da('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x61da('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x61da('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x61da('0x5')}};
\ No newline at end of file
+var _0xdc79=['STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x2aef6f,_0x273038){var _0x51e269=function(_0xc0b225){while(--_0xc0b225){_0x2aef6f['push'](_0x2aef6f['shift']());}};_0x51e269(++_0x273038);}(_0xdc79,0x1d3));var _0x9dc7=function(_0x3a7904,_0x15f0d0){_0x3a7904=_0x3a7904-0x0;var _0x90539f=_0xdc79[_0x3a7904];return _0x90539f;};'use strict';var Sequelize=require(_0x9dc7('0x0'));module[_0x9dc7('0x1')]={'priority':{'type':Sequelize[_0x9dc7('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x9dc7('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9dc7('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x9dc7('0x4')}};
\ No newline at end of file
index 022570d..b16de94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9d2=['SmsApplication','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','update','then','destroy','error','name','send','index','map'];(function(_0x41568f,_0x7c6734){var _0x2b35e5=function(_0x486c48){while(--_0x486c48){_0x41568f['push'](_0x41568f['shift']());}};_0x2b35e5(++_0x7c6734);}(_0xa9d2,0x18b));var _0x2a9d=function(_0xeb6d03,_0x532844){_0xeb6d03=_0xeb6d03-0x0;var _0x4862bd=_0xa9d2[_0xeb6d03];return _0x4862bd;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2a9d('0x0'));var jsonpatch=require(_0x2a9d('0x1'));var rp=require(_0x2a9d('0x2'));var moment=require(_0x2a9d('0x3'));var BPromise=require(_0x2a9d('0x4'));var Mustache=require(_0x2a9d('0x5'));var util=require(_0x2a9d('0x6'));var path=require(_0x2a9d('0x7'));var sox=require(_0x2a9d('0x8'));var csv=require(_0x2a9d('0x9'));var ejs=require(_0x2a9d('0xa'));var fs=require('fs');var fs_extra=require(_0x2a9d('0xb'));var _=require(_0x2a9d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2a9d('0xd'));var deskjs=require(_0x2a9d('0xe'));var toCsv=require(_0x2a9d('0x9'));var querystring=require(_0x2a9d('0xf'));var Papa=require(_0x2a9d('0x10'));var Redis=require(_0x2a9d('0x11'));var authService=require(_0x2a9d('0x12'));var qs=require(_0x2a9d('0x13'));var as=require(_0x2a9d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x2a9d('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2a9d('0x16'));var db=require(_0x2a9d('0x17'))['db'];function respondWithStatusCode(_0x59d278,_0x5a6e88){_0x5a6e88=_0x5a6e88||0xcc;return function(_0x4c7cdd){if(_0x4c7cdd){return _0x59d278[_0x2a9d('0x18')](_0x5a6e88);}return _0x59d278[_0x2a9d('0x19')](_0x5a6e88)[_0x2a9d('0x1a')]();};}function respondWithResult(_0x57c5d6,_0x327143){_0x327143=_0x327143||0xc8;return function(_0x3572af){if(_0x3572af){return _0x57c5d6[_0x2a9d('0x19')](_0x327143)['json'](_0x3572af);}};}function respondWithFilteredResult(_0xe3ad7b,_0x16104c){return function(_0x925586){if(_0x925586){var _0x539d35=typeof _0x16104c['offset']===_0x2a9d('0x1b')&&typeof _0x16104c[_0x2a9d('0x1c')]==='undefined';var _0x524bbc=_0x925586[_0x2a9d('0x1d')];var _0x1a525a=_0x539d35?0x0:_0x16104c[_0x2a9d('0x1e')];var _0x1c9ede=_0x539d35?_0x925586['count']:_0x16104c[_0x2a9d('0x1e')]+_0x16104c[_0x2a9d('0x1c')];var _0x461cba;if(_0x1c9ede>=_0x524bbc){_0x1c9ede=_0x524bbc;_0x461cba=0xc8;}else{_0x461cba=0xce;}_0xe3ad7b[_0x2a9d('0x19')](_0x461cba);return _0xe3ad7b[_0x2a9d('0x1f')](_0x2a9d('0x20'),_0x1a525a+'-'+_0x1c9ede+'/'+_0x524bbc)[_0x2a9d('0x21')](_0x925586);}return null;};}function patchUpdates(_0x52f338){return function(_0x2734ec){try{jsonpatch[_0x2a9d('0x22')](_0x2734ec,_0x52f338,!![]);}catch(_0x158bb2){return BPromise['reject'](_0x158bb2);}return _0x2734ec['save']();};}function saveUpdates(_0x443222,_0x212110){return function(_0x39fcb2){if(_0x39fcb2){return _0x39fcb2[_0x2a9d('0x23')](_0x443222)[_0x2a9d('0x24')](function(_0x1b25c0){return _0x1b25c0;});}return null;};}function removeEntity(_0xb9520b,_0x4a1887){return function(_0xc80a35){if(_0xc80a35){return _0xc80a35[_0x2a9d('0x25')]()['then'](function(){_0xb9520b[_0x2a9d('0x19')](0xcc)[_0x2a9d('0x1a')]();});}};}function handleEntityNotFound(_0x5d6ef8,_0x3d46eb){return function(_0x29b131){if(!_0x29b131){_0x5d6ef8['sendStatus'](0x194);}return _0x29b131;};}function handleError(_0x91ef67,_0x510b23){_0x510b23=_0x510b23||0x1f4;return function(_0x186e8f){logger[_0x2a9d('0x26')](_0x186e8f['stack']);if(_0x186e8f[_0x2a9d('0x27')]){delete _0x186e8f[_0x2a9d('0x27')];}_0x91ef67[_0x2a9d('0x19')](_0x510b23)[_0x2a9d('0x28')](_0x186e8f);};}exports[_0x2a9d('0x29')]=function(_0x5bcf09,_0x259c7f){var _0x2069d9={},_0x3c0a03={},_0x9542b8={'count':0x0,'rows':[]};var _0x501791=_[_0x2a9d('0x2a')](db[_0x2a9d('0x2b')][_0x2a9d('0x2c')],function(_0x3eb53f){return{'name':_0x3eb53f[_0x2a9d('0x2d')],'type':_0x3eb53f['type']['key']};});_0x3c0a03[_0x2a9d('0x2e')]=_[_0x2a9d('0x2a')](_0x501791,_0x2a9d('0x27'));_0x3c0a03[_0x2a9d('0x2f')]=_[_0x2a9d('0x30')](_0x5bcf09[_0x2a9d('0x2f')]);_0x3c0a03[_0x2a9d('0x31')]=_[_0x2a9d('0x32')](_0x3c0a03[_0x2a9d('0x2e')],_0x3c0a03[_0x2a9d('0x2f')]);_0x2069d9[_0x2a9d('0x33')]=_['intersection'](_0x3c0a03[_0x2a9d('0x2e')],qs['fields'](_0x5bcf09[_0x2a9d('0x2f')][_0x2a9d('0x34')]));_0x2069d9[_0x2a9d('0x33')]=_0x2069d9[_0x2a9d('0x33')][_0x2a9d('0x35')]?_0x2069d9['attributes']:_0x3c0a03['model'];if(!_0x5bcf09[_0x2a9d('0x2f')]['hasOwnProperty'](_0x2a9d('0x36'))){_0x2069d9[_0x2a9d('0x1c')]=qs['limit'](_0x5bcf09[_0x2a9d('0x2f')][_0x2a9d('0x1c')]);_0x2069d9[_0x2a9d('0x1e')]=qs['offset'](_0x5bcf09[_0x2a9d('0x2f')][_0x2a9d('0x1e')]);}_0x2069d9[_0x2a9d('0x37')]=qs[_0x2a9d('0x38')](_0x5bcf09[_0x2a9d('0x2f')][_0x2a9d('0x38')]);_0x2069d9[_0x2a9d('0x39')]=qs[_0x2a9d('0x31')](_[_0x2a9d('0x3a')](_0x5bcf09['query'],_0x3c0a03['filters']),_0x501791);if(_0x5bcf09[_0x2a9d('0x2f')][_0x2a9d('0x3b')]){_0x2069d9[_0x2a9d('0x39')]=_[_0x2a9d('0x3c')](_0x2069d9[_0x2a9d('0x39')],{'$or':_[_0x2a9d('0x2a')](_0x501791,function(_0x2e4250){if(_0x2e4250[_0x2a9d('0x3d')]!==_0x2a9d('0x3e')){var _0x2e054f={};_0x2e054f[_0x2e4250[_0x2a9d('0x27')]]={'$like':'%'+_0x5bcf09['query'][_0x2a9d('0x3b')]+'%'};return _0x2e054f;}})});}_0x2069d9=_[_0x2a9d('0x3c')]({},_0x2069d9,_0x5bcf09[_0x2a9d('0x3f')]);var _0x2df35c={'where':_0x2069d9['where']};return db[_0x2a9d('0x2b')][_0x2a9d('0x1d')](_0x2df35c)[_0x2a9d('0x24')](function(_0x4eb04b){_0x9542b8[_0x2a9d('0x1d')]=_0x4eb04b;if(_0x5bcf09['query'][_0x2a9d('0x40')]){_0x2069d9[_0x2a9d('0x41')]=[{'all':!![]}];}return db[_0x2a9d('0x2b')]['findAll'](_0x2069d9);})[_0x2a9d('0x24')](function(_0xef4997){_0x9542b8[_0x2a9d('0x42')]=_0xef4997;return _0x9542b8;})[_0x2a9d('0x24')](respondWithFilteredResult(_0x259c7f,_0x2069d9))[_0x2a9d('0x43')](handleError(_0x259c7f,null));};exports[_0x2a9d('0x44')]=function(_0x120c34,_0x3373cd){var _0x4ff6e9={'raw':!![],'where':{'id':_0x120c34[_0x2a9d('0x45')]['id']}},_0x3cc2d7={};_0x3cc2d7['model']=_[_0x2a9d('0x30')](db[_0x2a9d('0x2b')][_0x2a9d('0x2c')]);_0x3cc2d7[_0x2a9d('0x2f')]=_[_0x2a9d('0x30')](_0x120c34[_0x2a9d('0x2f')]);_0x3cc2d7[_0x2a9d('0x31')]=_['intersection'](_0x3cc2d7['model'],_0x3cc2d7[_0x2a9d('0x2f')]);_0x4ff6e9[_0x2a9d('0x33')]=_[_0x2a9d('0x32')](_0x3cc2d7[_0x2a9d('0x2e')],qs[_0x2a9d('0x34')](_0x120c34[_0x2a9d('0x2f')][_0x2a9d('0x34')]));_0x4ff6e9[_0x2a9d('0x33')]=_0x4ff6e9[_0x2a9d('0x33')][_0x2a9d('0x35')]?_0x4ff6e9[_0x2a9d('0x33')]:_0x3cc2d7['model'];if(_0x120c34[_0x2a9d('0x2f')][_0x2a9d('0x40')]){_0x4ff6e9[_0x2a9d('0x41')]=[{'all':!![]}];}_0x4ff6e9=_['merge']({},_0x4ff6e9,_0x120c34[_0x2a9d('0x3f')]);return db[_0x2a9d('0x2b')][_0x2a9d('0x46')](_0x4ff6e9)[_0x2a9d('0x24')](handleEntityNotFound(_0x3373cd,null))[_0x2a9d('0x24')](respondWithResult(_0x3373cd,null))[_0x2a9d('0x43')](handleError(_0x3373cd,null));};exports[_0x2a9d('0x47')]=function(_0xfeca32,_0x273144){return db['SmsApplication'][_0x2a9d('0x47')](_0xfeca32[_0x2a9d('0x48')],{})[_0x2a9d('0x24')](respondWithResult(_0x273144,0xc9))[_0x2a9d('0x43')](handleError(_0x273144,null));};exports[_0x2a9d('0x23')]=function(_0x1f2e8c,_0x4919c3){if(_0x1f2e8c[_0x2a9d('0x48')]['id']){delete _0x1f2e8c[_0x2a9d('0x48')]['id'];}return db[_0x2a9d('0x2b')]['find']({'where':{'id':_0x1f2e8c[_0x2a9d('0x45')]['id']}})[_0x2a9d('0x24')](handleEntityNotFound(_0x4919c3,null))[_0x2a9d('0x24')](saveUpdates(_0x1f2e8c[_0x2a9d('0x48')],null))[_0x2a9d('0x24')](respondWithResult(_0x4919c3,null))[_0x2a9d('0x43')](handleError(_0x4919c3,null));};exports[_0x2a9d('0x25')]=function(_0x175792,_0x4129f9){return db['SmsApplication'][_0x2a9d('0x46')]({'where':{'id':_0x175792['params']['id']}})[_0x2a9d('0x24')](handleEntityNotFound(_0x4129f9,null))['then'](removeEntity(_0x4129f9,null))[_0x2a9d('0x43')](handleError(_0x4129f9,null));};
\ No newline at end of file
+var _0x9c1c=['request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','then','catch','show','params','includeAll','include','find','create','body','zip-dir'];(function(_0x33155c,_0x3fdde1){var _0x5becf7=function(_0x2f7a2f){while(--_0x2f7a2f){_0x33155c['push'](_0x33155c['shift']());}};_0x5becf7(++_0x3fdde1);}(_0x9c1c,0xe0));var _0xc9c1=function(_0x2e4cbf,_0x8763d3){_0x2e4cbf=_0x2e4cbf-0x0;var _0x52840f=_0x9c1c[_0x2e4cbf];return _0x52840f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc9c1('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc9c1('0x1'));var moment=require(_0xc9c1('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc9c1('0x3'));var util=require('util');var path=require(_0xc9c1('0x4'));var sox=require('sox');var csv=require(_0xc9c1('0x5'));var ejs=require(_0xc9c1('0x6'));var fs=require('fs');var fs_extra=require(_0xc9c1('0x7'));var _=require(_0xc9c1('0x8'));var squel=require(_0xc9c1('0x9'));var crypto=require(_0xc9c1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc9c1('0xb'));var toCsv=require(_0xc9c1('0x5'));var querystring=require(_0xc9c1('0xc'));var Papa=require(_0xc9c1('0xd'));var Redis=require(_0xc9c1('0xe'));var authService=require(_0xc9c1('0xf'));var qs=require(_0xc9c1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc9c1('0x11'));var logger=require(_0xc9c1('0x12'))(_0xc9c1('0x13'));var utils=require('../../config/utils');var config=require(_0xc9c1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc9c1('0x15'))['db'];function respondWithStatusCode(_0x551db2,_0xfa89fc){_0xfa89fc=_0xfa89fc||0xcc;return function(_0x218f39){if(_0x218f39){return _0x551db2[_0xc9c1('0x16')](_0xfa89fc);}return _0x551db2['status'](_0xfa89fc)[_0xc9c1('0x17')]();};}function respondWithResult(_0x369bd7,_0x1830f1){_0x1830f1=_0x1830f1||0xc8;return function(_0x31a294){if(_0x31a294){return _0x369bd7[_0xc9c1('0x18')](_0x1830f1)[_0xc9c1('0x19')](_0x31a294);}};}function respondWithFilteredResult(_0x4143bf,_0x3c766e){return function(_0x2a0bec){if(_0x2a0bec){var _0x3ad5fd=typeof _0x3c766e[_0xc9c1('0x1a')]===_0xc9c1('0x1b')&&typeof _0x3c766e[_0xc9c1('0x1c')]===_0xc9c1('0x1b');var _0x483bc9=_0x2a0bec[_0xc9c1('0x1d')];var _0x209ae7=_0x3ad5fd?0x0:_0x3c766e[_0xc9c1('0x1a')];var _0x3e372a=_0x3ad5fd?_0x2a0bec[_0xc9c1('0x1d')]:_0x3c766e['offset']+_0x3c766e[_0xc9c1('0x1c')];var _0x1bcff0;if(_0x3e372a>=_0x483bc9){_0x3e372a=_0x483bc9;_0x1bcff0=0xc8;}else{_0x1bcff0=0xce;}_0x4143bf[_0xc9c1('0x18')](_0x1bcff0);return _0x4143bf[_0xc9c1('0x1e')](_0xc9c1('0x1f'),_0x209ae7+'-'+_0x3e372a+'/'+_0x483bc9)['json'](_0x2a0bec);}return null;};}function patchUpdates(_0x259d06){return function(_0x44f6f8){try{jsonpatch[_0xc9c1('0x20')](_0x44f6f8,_0x259d06,!![]);}catch(_0x3fbeef){return BPromise[_0xc9c1('0x21')](_0x3fbeef);}return _0x44f6f8[_0xc9c1('0x22')]();};}function saveUpdates(_0x45b117,_0x335f3a){return function(_0x5a7026){if(_0x5a7026){return _0x5a7026[_0xc9c1('0x23')](_0x45b117)['then'](function(_0x3d6e7d){return _0x3d6e7d;});}return null;};}function removeEntity(_0x3caf92,_0x40988a){return function(_0x5f1371){if(_0x5f1371){return _0x5f1371[_0xc9c1('0x24')]()['then'](function(){_0x3caf92['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xb6cc34,_0xdfb794){return function(_0x19bc5c){if(!_0x19bc5c){_0xb6cc34[_0xc9c1('0x16')](0x194);}return _0x19bc5c;};}function handleError(_0x2c2833,_0x1a0fe2){_0x1a0fe2=_0x1a0fe2||0x1f4;return function(_0x18b2bb){logger['error'](_0x18b2bb[_0xc9c1('0x25')]);if(_0x18b2bb[_0xc9c1('0x26')]){delete _0x18b2bb[_0xc9c1('0x26')];}_0x2c2833[_0xc9c1('0x18')](_0x1a0fe2)[_0xc9c1('0x27')](_0x18b2bb);};}exports[_0xc9c1('0x28')]=function(_0x2978c8,_0x37ae2a){var _0x389520={},_0x410d83={},_0x184c64={'count':0x0,'rows':[]};var _0x2fc180=_[_0xc9c1('0x29')](db[_0xc9c1('0x2a')][_0xc9c1('0x2b')],function(_0x420ad1){return{'name':_0x420ad1[_0xc9c1('0x2c')],'type':_0x420ad1['type'][_0xc9c1('0x2d')]};});_0x410d83[_0xc9c1('0x2e')]=_[_0xc9c1('0x29')](_0x2fc180,'name');_0x410d83[_0xc9c1('0x2f')]=_[_0xc9c1('0x30')](_0x2978c8[_0xc9c1('0x2f')]);_0x410d83[_0xc9c1('0x31')]=_[_0xc9c1('0x32')](_0x410d83['model'],_0x410d83[_0xc9c1('0x2f')]);_0x389520[_0xc9c1('0x33')]=_[_0xc9c1('0x32')](_0x410d83[_0xc9c1('0x2e')],qs[_0xc9c1('0x34')](_0x2978c8['query'][_0xc9c1('0x34')]));_0x389520[_0xc9c1('0x33')]=_0x389520[_0xc9c1('0x33')][_0xc9c1('0x35')]?_0x389520[_0xc9c1('0x33')]:_0x410d83['model'];if(!_0x2978c8['query'][_0xc9c1('0x36')](_0xc9c1('0x37'))){_0x389520[_0xc9c1('0x1c')]=qs['limit'](_0x2978c8[_0xc9c1('0x2f')][_0xc9c1('0x1c')]);_0x389520['offset']=qs[_0xc9c1('0x1a')](_0x2978c8[_0xc9c1('0x2f')][_0xc9c1('0x1a')]);}_0x389520[_0xc9c1('0x38')]=qs[_0xc9c1('0x39')](_0x2978c8['query']['sort']);_0x389520[_0xc9c1('0x3a')]=qs[_0xc9c1('0x31')](_[_0xc9c1('0x3b')](_0x2978c8[_0xc9c1('0x2f')],_0x410d83[_0xc9c1('0x31')]),_0x2fc180);if(_0x2978c8[_0xc9c1('0x2f')][_0xc9c1('0x3c')]){_0x389520[_0xc9c1('0x3a')]=_[_0xc9c1('0x3d')](_0x389520['where'],{'$or':_[_0xc9c1('0x29')](_0x2fc180,function(_0x597ab6){if(_0x597ab6[_0xc9c1('0x3e')]!==_0xc9c1('0x3f')){var _0x285a9b={};_0x285a9b[_0x597ab6[_0xc9c1('0x26')]]={'$like':'%'+_0x2978c8[_0xc9c1('0x2f')]['filter']+'%'};return _0x285a9b;}})});}_0x389520=_['merge']({},_0x389520,_0x2978c8[_0xc9c1('0x40')]);var _0x346c5b={'where':_0x389520['where']};return db[_0xc9c1('0x2a')][_0xc9c1('0x1d')](_0x346c5b)['then'](function(_0x348f75){_0x184c64[_0xc9c1('0x1d')]=_0x348f75;if(_0x2978c8[_0xc9c1('0x2f')]['includeAll']){_0x389520['include']=[{'all':!![]}];}return db[_0xc9c1('0x2a')][_0xc9c1('0x41')](_0x389520);})[_0xc9c1('0x42')](function(_0x11a118){_0x184c64['rows']=_0x11a118;return _0x184c64;})['then'](respondWithFilteredResult(_0x37ae2a,_0x389520))[_0xc9c1('0x43')](handleError(_0x37ae2a,null));};exports[_0xc9c1('0x44')]=function(_0x5583dd,_0x79850d){var _0x39ae57={'raw':!![],'where':{'id':_0x5583dd[_0xc9c1('0x45')]['id']}},_0x4a693a={};_0x4a693a['model']=_[_0xc9c1('0x30')](db[_0xc9c1('0x2a')][_0xc9c1('0x2b')]);_0x4a693a['query']=_['keys'](_0x5583dd[_0xc9c1('0x2f')]);_0x4a693a['filters']=_[_0xc9c1('0x32')](_0x4a693a[_0xc9c1('0x2e')],_0x4a693a[_0xc9c1('0x2f')]);_0x39ae57[_0xc9c1('0x33')]=_[_0xc9c1('0x32')](_0x4a693a[_0xc9c1('0x2e')],qs[_0xc9c1('0x34')](_0x5583dd[_0xc9c1('0x2f')]['fields']));_0x39ae57['attributes']=_0x39ae57[_0xc9c1('0x33')][_0xc9c1('0x35')]?_0x39ae57['attributes']:_0x4a693a[_0xc9c1('0x2e')];if(_0x5583dd[_0xc9c1('0x2f')][_0xc9c1('0x46')]){_0x39ae57[_0xc9c1('0x47')]=[{'all':!![]}];}_0x39ae57=_[_0xc9c1('0x3d')]({},_0x39ae57,_0x5583dd['options']);return db['SmsApplication'][_0xc9c1('0x48')](_0x39ae57)[_0xc9c1('0x42')](handleEntityNotFound(_0x79850d,null))[_0xc9c1('0x42')](respondWithResult(_0x79850d,null))[_0xc9c1('0x43')](handleError(_0x79850d,null));};exports[_0xc9c1('0x49')]=function(_0x59ec77,_0x3796e0){return db[_0xc9c1('0x2a')][_0xc9c1('0x49')](_0x59ec77[_0xc9c1('0x4a')],{})['then'](respondWithResult(_0x3796e0,0xc9))['catch'](handleError(_0x3796e0,null));};exports['update']=function(_0x5383f5,_0x4f2231){if(_0x5383f5['body']['id']){delete _0x5383f5[_0xc9c1('0x4a')]['id'];}return db[_0xc9c1('0x2a')]['find']({'where':{'id':_0x5383f5[_0xc9c1('0x45')]['id']}})[_0xc9c1('0x42')](handleEntityNotFound(_0x4f2231,null))[_0xc9c1('0x42')](saveUpdates(_0x5383f5[_0xc9c1('0x4a')],null))['then'](respondWithResult(_0x4f2231,null))[_0xc9c1('0x43')](handleError(_0x4f2231,null));};exports[_0xc9c1('0x24')]=function(_0x5ba0df,_0x26129c){return db['SmsApplication'][_0xc9c1('0x48')]({'where':{'id':_0x5ba0df[_0xc9c1('0x45')]['id']}})['then'](handleEntityNotFound(_0x26129c,null))[_0xc9c1('0x42')](removeEntity(_0x26129c,null))[_0xc9c1('0x43')](handleError(_0x26129c,null));};
\ No newline at end of file
index 5a9a91a..80b4e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76ae=['rimraf','../../config/environment','define','sms_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x32744d,_0x79cca1){var _0x4f3f2c=function(_0x370b94){while(--_0x370b94){_0x32744d['push'](_0x32744d['shift']());}};_0x4f3f2c(++_0x79cca1);}(_0x76ae,0x155));var _0xe76a=function(_0x10d244,_0x49c680){_0x10d244=_0x10d244-0x0;var _0x67755d=_0x76ae[_0x10d244];return _0x67755d;};'use strict';var _=require(_0xe76a('0x0'));var util=require(_0xe76a('0x1'));var logger=require(_0xe76a('0x2'))(_0xe76a('0x3'));var moment=require(_0xe76a('0x4'));var BPromise=require('bluebird');var rp=require(_0xe76a('0x5'));var fs=require('fs');var path=require(_0xe76a('0x6'));var rimraf=require(_0xe76a('0x7'));var config=require(_0xe76a('0x8'));var attributes=require('./smsApplication.attributes');module['exports']=function(_0x19d5e4,_0x497064){return _0x19d5e4[_0xe76a('0x9')]('SmsApplication',attributes,{'tableName':_0xe76a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xe76a('0xb')});};
\ No newline at end of file
+var _0xf6ef=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','define','SmsApplication'];(function(_0x289689,_0x19a641){var _0x4f5e29=function(_0x20dcf5){while(--_0x20dcf5){_0x289689['push'](_0x289689['shift']());}};_0x4f5e29(++_0x19a641);}(_0xf6ef,0x115));var _0xff6e=function(_0x457b64,_0x49a219){_0x457b64=_0x457b64-0x0;var _0x437111=_0xf6ef[_0x457b64];return _0x437111;};'use strict';var _=require(_0xff6e('0x0'));var util=require(_0xff6e('0x1'));var logger=require(_0xff6e('0x2'))('api');var moment=require(_0xff6e('0x3'));var BPromise=require(_0xff6e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xff6e('0x5'));var rimraf=require(_0xff6e('0x6'));var config=require(_0xff6e('0x7'));var attributes=require('./smsApplication.attributes');module[_0xff6e('0x8')]=function(_0x5ee7bc,_0x425473){return _0x5ee7bc[_0xff6e('0x9')](_0xff6e('0xa'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xff6e('0xb')});};
\ No newline at end of file
index acf3573..e041d17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa24d=['http','request','then','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x103c58,_0x4ccc7b){var _0x220461=function(_0x50b638){while(--_0x50b638){_0x103c58['push'](_0x103c58['shift']());}};_0x220461(++_0x4ccc7b);}(_0xa24d,0x1c1));var _0xda24=function(_0x4e4d5c,_0x25dd3a){_0x4e4d5c=_0x4e4d5c-0x0;var _0x56854a=_0xa24d[_0x4e4d5c];return _0x56854a;};'use strict';var _=require(_0xda24('0x0'));var util=require(_0xda24('0x1'));var moment=require(_0xda24('0x2'));var BPromise=require(_0xda24('0x3'));var rs=require(_0xda24('0x4'));var fs=require('fs');var Redis=require(_0xda24('0x5'));var db=require(_0xda24('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xda24('0x7'))(_0xda24('0x8'));var config=require(_0xda24('0x9'));var jayson=require(_0xda24('0xa'));var client=jayson['client'][_0xda24('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xdba54e,_0x5868af,_0x3d0ec5){return new BPromise(function(_0x48117a,_0x446e2e){return client[_0xda24('0xc')](_0xdba54e,_0x3d0ec5)[_0xda24('0xd')](function(_0x1dccb2){logger['info'](_0xda24('0xe'),_0x5868af,_0xda24('0xf'));logger[_0xda24('0x10')](_0xda24('0x11'),_0x5868af,_0xda24('0xf'),JSON['stringify'](_0x1dccb2));if(_0x1dccb2[_0xda24('0x12')]){if(_0x1dccb2['error'][_0xda24('0x13')]===0x1f4){logger[_0xda24('0x12')]('SmsApplication,\x20%s,\x20%s',_0x5868af,_0x1dccb2['error'][_0xda24('0x14')]);return _0x446e2e(_0x1dccb2[_0xda24('0x12')][_0xda24('0x14')]);}logger[_0xda24('0x12')]('SmsApplication,\x20%s,\x20%s',_0x5868af,_0x1dccb2[_0xda24('0x12')]['message']);return _0x48117a(_0x1dccb2[_0xda24('0x12')][_0xda24('0x14')]);}else{logger['info']('SmsApplication,\x20%s,\x20%s',_0x5868af,_0xda24('0xf'));_0x48117a(_0x1dccb2[_0xda24('0x15')][_0xda24('0x14')]);}})[_0xda24('0x16')](function(_0x3348e0){logger[_0xda24('0x12')](_0xda24('0xe'),_0x5868af,_0x3348e0);_0x446e2e(_0x3348e0);});});}
\ No newline at end of file
+var _0x3746=['catch','lodash','util','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xe51596,_0x314d5b){var _0x22c705=function(_0x4c6f94){while(--_0x4c6f94){_0xe51596['push'](_0xe51596['shift']());}};_0x22c705(++_0x314d5b);}(_0x3746,0xa9));var _0x6374=function(_0x3b1553,_0x6d7c74){_0x3b1553=_0x3b1553-0x0;var _0x28cfff=_0x3746[_0x3b1553];return _0x28cfff;};'use strict';var _=require(_0x6374('0x0'));var util=require(_0x6374('0x1'));var moment=require('moment');var BPromise=require(_0x6374('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6374('0x3'));var db=require(_0x6374('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6374('0x5'));var config=require(_0x6374('0x6'));var jayson=require(_0x6374('0x7'));var client=jayson[_0x6374('0x8')][_0x6374('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46841a,_0x2e8717,_0x295cf9){return new BPromise(function(_0x330181,_0x30c9ac){return client['request'](_0x46841a,_0x295cf9)[_0x6374('0xa')](function(_0x5bd695){logger[_0x6374('0xb')](_0x6374('0xc'),_0x2e8717,_0x6374('0xd'));logger['debug'](_0x6374('0xe'),_0x2e8717,_0x6374('0xd'),JSON[_0x6374('0xf')](_0x5bd695));if(_0x5bd695['error']){if(_0x5bd695[_0x6374('0x10')][_0x6374('0x11')]===0x1f4){logger['error'](_0x6374('0xc'),_0x2e8717,_0x5bd695[_0x6374('0x10')][_0x6374('0x12')]);return _0x30c9ac(_0x5bd695['error'][_0x6374('0x12')]);}logger[_0x6374('0x10')](_0x6374('0xc'),_0x2e8717,_0x5bd695['error'][_0x6374('0x12')]);return _0x330181(_0x5bd695['error']['message']);}else{logger[_0x6374('0xb')]('SmsApplication,\x20%s,\x20%s',_0x2e8717,_0x6374('0xd'));_0x330181(_0x5bd695[_0x6374('0x13')][_0x6374('0x12')]);}})[_0x6374('0x14')](function(_0x287981){logger[_0x6374('0x10')](_0x6374('0xc'),_0x2e8717,_0x287981);_0x30c9ac(_0x287981);});});}
\ No newline at end of file
index 28a2131..0b26533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','describe','/:id','isAuthenticated','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms','addTags','put','smsinteraction:update','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','util','path','connect-timeout'];(function(_0x4cf005,_0x2efccb){var _0x2e20cb=function(_0x23a8b0){while(--_0x23a8b0){_0x4cf005['push'](_0x4cf005['shift']());}};_0x2e20cb(++_0x2efccb);}(_0x8f4c,0x113));var _0xc8f4=function(_0x1deab1,_0x3ca2f0){_0x1deab1=_0x1deab1-0x0;var _0x30822d=_0x8f4c[_0x1deab1];return _0x30822d;};'use strict';var multer=require(_0xc8f4('0x0'));var util=require(_0xc8f4('0x1'));var path=require(_0xc8f4('0x2'));var timeout=require(_0xc8f4('0x3'));var express=require(_0xc8f4('0x4'));var router=express[_0xc8f4('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc8f4('0x6'));var interaction=require(_0xc8f4('0x7'));var config=require(_0xc8f4('0x8'));var controller=require('./smsInteraction.controller');router[_0xc8f4('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xc8f4('0xa'),auth['isAuthenticated'](),controller[_0xc8f4('0xb')]);router[_0xc8f4('0x9')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0xe')]);router['get'](_0xc8f4('0xf'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x10')]);router[_0xc8f4('0x9')]('/:id/download',auth[_0xc8f4('0xd')](),controller['download']);router[_0xc8f4('0x11')]('/',auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x12')]);router[_0xc8f4('0x11')](_0xc8f4('0xf'),auth['isAuthenticated'](),controller[_0xc8f4('0x13')]);router[_0xc8f4('0x11')](_0xc8f4('0x14'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')](_0xc8f4('0x16'),'smsinteraction:addtags'),controller[_0xc8f4('0x17')]);router[_0xc8f4('0x18')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')]('sms',_0xc8f4('0x19')),controller['update']);router['delete'](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')](_0xc8f4('0x16'),_0xc8f4('0x1a')),controller[_0xc8f4('0x1b')]);router[_0xc8f4('0x1c')](_0xc8f4('0x14'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x1d')]);module[_0xc8f4('0x1e')]=router;
\ No newline at end of file
+var _0x4483=['isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','sms','addTags','put','/:id','smsinteraction:update','update','delete','smsinteraction:destroy','removeTags','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsInteraction.controller','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4483,0x1a3));var _0x3448=function(_0x50d848,_0x33fcf9){_0x50d848=_0x50d848-0x0;var _0x334fd4=_0x4483[_0x50d848];return _0x334fd4;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0x9')](_0x3448('0xf'),auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x9')](_0x3448('0x11'),auth[_0x3448('0xa')](),controller[_0x3448('0x12')]);router[_0x3448('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3448('0x13')](_0x3448('0xf'),auth['isAuthenticated'](),controller[_0x3448('0x14')]);router[_0x3448('0x13')](_0x3448('0x15'),auth['isAuthenticated'](),interaction[_0x3448('0x16')](_0x3448('0x17'),'smsinteraction:addtags'),controller[_0x3448('0x18')]);router[_0x3448('0x19')](_0x3448('0x1a'),auth['isAuthenticated'](),interaction[_0x3448('0x16')](_0x3448('0x17'),_0x3448('0x1b')),controller[_0x3448('0x1c')]);router[_0x3448('0x1d')](_0x3448('0x1a'),auth[_0x3448('0xa')](),interaction[_0x3448('0x16')]('sms',_0x3448('0x1e')),controller['destroy']);router['delete']('/:id/tags',auth[_0x3448('0xa')](),controller[_0x3448('0x1f')]);module[_0x3448('0x20')]=router;
\ No newline at end of file
index 8eadb20..5bc4858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3baf=['moment','exports','BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x3baf,0xf7));var _0xf3ba=function(_0x4a1cc2,_0x545018){_0x4a1cc2=_0x4a1cc2-0x0;var _0x21ca95=_0x3baf[_0x4a1cc2];return _0x21ca95;};'use strict';var Sequelize=require(_0xf3ba('0x0'));var moment=require(_0xf3ba('0x1'));module[_0xf3ba('0x2')]={'closed':{'type':Sequelize[_0xf3ba('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf3ba('0x4')]},'disposition':{'type':Sequelize[_0xf3ba('0x5')]},'secondDisposition':{'type':Sequelize[_0xf3ba('0x5')]},'thirdDisposition':{'type':Sequelize[_0xf3ba('0x5')]},'note':{'type':Sequelize[_0xf3ba('0x5')]},'phone':{'type':Sequelize[_0xf3ba('0x5')]},'read1stAt':{'type':Sequelize[_0xf3ba('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xf3ba('0x6')]('in',_0xf3ba('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf3ba('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xf3ba('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x0c29=['ENUM','out','BOOLEAN','exports','DATE','STRING'];(function(_0x496046,_0x6d5fd9){var _0x5f3e3b=function(_0x11d815){while(--_0x11d815){_0x496046['push'](_0x496046['shift']());}};_0x5f3e3b(++_0x6d5fd9);}(_0x0c29,0xb7));var _0x90c2=function(_0x385eb1,_0x497a94){_0x385eb1=_0x385eb1-0x0;var _0x5d40eb=_0x0c29[_0x385eb1];return _0x5d40eb;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x90c2('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x90c2('0x1')]},'disposition':{'type':Sequelize[_0x90c2('0x2')]},'secondDisposition':{'type':Sequelize[_0x90c2('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x90c2('0x2')]},'read1stAt':{'type':Sequelize[_0x90c2('0x1')]},'firstMsgDirection':{'type':Sequelize[_0x90c2('0x3')]('in',_0x90c2('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x90c2('0x1')]},'lastMsgDirection':{'type':Sequelize[_0x90c2('0x3')]('in',_0x90c2('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x90c2('0x5')],'defaultValue':![]}};
\ No newline at end of file
index ab9cc8e..0999e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93b5=['filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','a.id\x20=\x20i.SmsAccountId','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','length','unreadMessages','value','having','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','some','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','agent','sequelize','toString','merge','a.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','SmsInteractionId','all','rows','params','options','create','describe','SmsMessage','omit','ids','findOne','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','findAll','addTags','setTags','spread','emit','smsInteractionTags:save','removeTags','download','unix','root','server','files','join','CmContact','Contact','firstName','lastName','direction','secret','Account','Owner','get','mkdirSync','Sms','closed','closedAt','disposition','Messages','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','Users','map','fullname','TagIds','Tags','push','catch','index','SmsInteraction','rawAttributes','fieldName','type','key','query','keys'];(function(_0x23301a,_0xe583b7){var _0x1ccace=function(_0x4db4bb){while(--_0x4db4bb){_0x23301a['push'](_0x23301a['shift']());}};_0x1ccace(++_0xe583b7);}(_0x93b5,0x178));var _0x593b=function(_0x56a398,_0x3635a8){_0x56a398=_0x56a398-0x0;var _0x1169b2=_0x93b5[_0x56a398];return _0x1169b2;};'use strict';var emlformat=require(_0x593b('0x0'));var rimraf=require(_0x593b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x593b('0x2'));var moment=require(_0x593b('0x3'));var BPromise=require(_0x593b('0x4'));var Mustache=require(_0x593b('0x5'));var util=require('util');var path=require(_0x593b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x593b('0x7'));var fs=require('fs');var fs_extra=require(_0x593b('0x8'));var _=require(_0x593b('0x9'));var squel=require(_0x593b('0xa'));var crypto=require(_0x593b('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x593b('0xc'));var querystring=require('querystring');var Papa=require(_0x593b('0xd'));var Redis=require(_0x593b('0xe'));var authService=require(_0x593b('0xf'));var qs=require(_0x593b('0x10'));var as=require(_0x593b('0x11'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x593b('0x12'));var logger=require('../../config/logger')(_0x593b('0x13'));var utils=require(_0x593b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x593b('0x15'));var db=require(_0x593b('0x16'))['db'];config[_0x593b('0x17')]=_[_0x593b('0x18')](config[_0x593b('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x593b('0x19'))(new Redis(config['redis']));require(_0x593b('0x1a'))[_0x593b('0x1b')](socket);function respondWithStatusCode(_0x2c79fe,_0x2331d7){_0x2331d7=_0x2331d7||0xcc;return function(_0x2d7631){if(_0x2d7631){return _0x2c79fe['sendStatus'](_0x2331d7);}return _0x2c79fe[_0x593b('0x1c')](_0x2331d7)[_0x593b('0x1d')]();};}function respondWithResult(_0x4d9b9d,_0x1705df){_0x1705df=_0x1705df||0xc8;return function(_0x146e1f){if(_0x146e1f){return _0x4d9b9d[_0x593b('0x1c')](_0x1705df)['json'](_0x146e1f);}};}function respondWithFilteredResult(_0x7b09d1,_0x280de5){return function(_0x23e073){if(_0x23e073){var _0x39a9=typeof _0x280de5[_0x593b('0x1e')]==='undefined'&&typeof _0x280de5['limit']===_0x593b('0x1f');var _0x46e942=_0x23e073[_0x593b('0x20')];var _0x4f3e23=_0x39a9?0x0:_0x280de5[_0x593b('0x1e')];var _0x4907b6=_0x39a9?_0x23e073[_0x593b('0x20')]:_0x280de5['offset']+_0x280de5[_0x593b('0x21')];var _0x449fc2;if(_0x4907b6>=_0x46e942){_0x4907b6=_0x46e942;_0x449fc2=0xc8;}else{_0x449fc2=0xce;}_0x7b09d1[_0x593b('0x1c')](_0x449fc2);return _0x7b09d1[_0x593b('0x22')](_0x593b('0x23'),_0x4f3e23+'-'+_0x4907b6+'/'+_0x46e942)[_0x593b('0x24')](_0x23e073);}return null;};}function patchUpdates(_0x3fa860){return function(_0x20af75){try{jsonpatch['apply'](_0x20af75,_0x3fa860,!![]);}catch(_0x44755b){return BPromise[_0x593b('0x25')](_0x44755b);}return _0x20af75[_0x593b('0x26')]();};}function saveUpdates(_0x261b3d,_0xd19e98){return function(_0x55c813){if(_0x55c813){return _0x55c813[_0x593b('0x27')](_0x261b3d)[_0x593b('0x28')](function(_0x220a34){return _0x220a34;});}return null;};}function removeEntity(_0x1de408,_0x4bb67b){return function(_0x720795){if(_0x720795){return _0x720795[_0x593b('0x29')]()[_0x593b('0x28')](function(){_0x1de408['status'](0xcc)[_0x593b('0x1d')]();});}};}function handleEntityNotFound(_0x304cb9,_0x36cf01){return function(_0x3af432){if(!_0x3af432){_0x304cb9['sendStatus'](0x194);}return _0x3af432;};}function handleError(_0x499b71,_0x40c17f){_0x40c17f=_0x40c17f||0x1f4;return function(_0x3341d1){logger[_0x593b('0x2a')](_0x3341d1[_0x593b('0x2b')]);if(_0x3341d1[_0x593b('0x2c')]){delete _0x3341d1[_0x593b('0x2c')];}_0x499b71[_0x593b('0x1c')](_0x40c17f)['send'](_0x3341d1);};}function getInteractionUsers(_0x629c23,_0x5636d2){return new BPromise(function(_0x1c7917,_0x38240c){try{if(_0x5636d2[_0x629c23['id']]){_0x629c23[_0x593b('0x2d')]=_[_0x593b('0x2e')](_0x5636d2[_0x629c23['id']],function(_0xcd1d24){return{'id':_0xcd1d24['id'],'fullname':_0xcd1d24[_0x593b('0x2f')]};});}}catch(_0x19b84b){_0x38240c(_0x19b84b);}_0x1c7917(_0x629c23);});}function getInteractionTags(_0x563def,_0x5127aa){return new BPromise(function(_0x44971c,_0x565d25){try{if(_0x563def[_0x593b('0x30')]){_0x563def['Tags']=[];_0x563def[_0x593b('0x30')]['split'](',')['forEach'](function(_0x3f76e1){_0x563def[_0x593b('0x31')][_0x593b('0x32')](_0x5127aa[_0x3f76e1]);});}delete _0x563def[_0x593b('0x30')];}catch(_0xa207f0){_0x565d25(_0xa207f0);}_0x44971c(_0x563def);});}function updateSmsInteraction(_0x2d7188,_0x3ac204,_0x35a8cd){return new BPromise(function(_0xfaed2e,_0x417acb){return getInteractionUsers(_0x2d7188,_0x35a8cd)[_0x593b('0x28')](function(_0x477ffc){return getInteractionTags(_0x477ffc,_0x3ac204);})[_0x593b('0x28')](function(_0x384950){_0xfaed2e(_0x384950);})[_0x593b('0x33')](function(_0x3a4a1d){_0x417acb(_0x3a4a1d);});});}exports[_0x593b('0x34')]=function(_0x49ab63,_0x573dc7){var _0x520365={},_0x56eb67={},_0x254981={'count':0x0,'rows':[]};var _0x22e0a7=_[_0x593b('0x2e')](db[_0x593b('0x35')][_0x593b('0x36')],function(_0x47213a){return{'name':_0x47213a[_0x593b('0x37')],'type':_0x47213a[_0x593b('0x38')][_0x593b('0x39')]};});_0x56eb67['model']=_['map'](_0x22e0a7,_0x593b('0x2c'));_0x56eb67[_0x593b('0x3a')]=_[_0x593b('0x3b')](_0x49ab63[_0x593b('0x3a')]);_0x56eb67[_0x593b('0x3c')]=_[_0x593b('0x3d')](_0x56eb67[_0x593b('0x3e')],_0x56eb67[_0x593b('0x3a')]);_0x520365[_0x593b('0x3f')]=_[_0x593b('0x3d')](_0x56eb67[_0x593b('0x3e')],qs['fields'](_0x49ab63['query'][_0x593b('0x40')]));_0x520365[_0x593b('0x3f')]=_0x520365[_0x593b('0x3f')]['length']?_0x520365['attributes']:_0x56eb67[_0x593b('0x3e')];if(!_0x49ab63[_0x593b('0x3a')][_0x593b('0x41')](_0x593b('0x42'))){_0x520365[_0x593b('0x21')]=qs[_0x593b('0x21')](_0x49ab63[_0x593b('0x3a')][_0x593b('0x21')]);_0x520365[_0x593b('0x1e')]=qs[_0x593b('0x1e')](_0x49ab63[_0x593b('0x3a')]['offset']);}_0x520365[_0x593b('0x43')]=qs[_0x593b('0x44')](_0x49ab63[_0x593b('0x3a')]['sort']);_0x520365[_0x593b('0x45')]=qs[_0x593b('0x3c')](_[_0x593b('0x46')](_0x49ab63[_0x593b('0x3a')],_0x56eb67[_0x593b('0x3c')]),_0x22e0a7);var _0x537f8f=[];var _0x1959ee=squel[_0x593b('0x47')]()[_0x593b('0x48')]('id')[_0x593b('0x48')](_0x593b('0x2c'))['field'](_0x593b('0x49'))[_0x593b('0x4a')](_0x593b('0x4b'));var _0xfd4fb7=squel[_0x593b('0x47')]()[_0x593b('0x48')]('u.id')[_0x593b('0x48')]('u.fullname')['field']('ui.SmsInteractionId')[_0x593b('0x4a')](_0x593b('0x4c'),'ui')[_0x593b('0x4d')](_0x593b('0x4e'),'u',_0x593b('0x4f'));var _0x46a554=squel['select']()[_0x593b('0x4a')]('sms_interactions','i')[_0x593b('0x4d')](_0x593b('0x50'),'c',_0x593b('0x51'))[_0x593b('0x4d')](_0x593b('0x4e'),'o','o.id\x20=\x20i.UserId')[_0x593b('0x4d')]('sms_accounts','a',_0x593b('0x52'))[_0x593b('0x4d')]('sms_messages','me','me.SmsInteractionId\x20=\x20i.id')['left_join'](_0x593b('0x53'),'it',_0x593b('0x54'))[_0x593b('0x4d')](_0x593b('0x4b'),'t',_0x593b('0x55'));var _0x1c2281=squel[_0x593b('0x56')]();var _0x3cd1a6=[];var _0x4582ff=squel[_0x593b('0x56')]();var _0x5aeb03;if(_0x49ab63[_0x593b('0x3a')]['search']){_0x5aeb03=as['parseSearch'](_0x49ab63[_0x593b('0x3a')][_0x593b('0x57')]);var _0xb529e5=_0x5aeb03[_0x593b('0x58')];for(var _0x5c25bd=0x0;_0x5c25bd<_0x5aeb03[_0x593b('0x59')][_0x593b('0x5a')];_0x5c25bd++){var _0x3d0175=_0x5aeb03[_0x593b('0x59')][_0x5c25bd];var _0x5864e8='i';var _0x125bfe=_['find'](_0x22e0a7,[_0x593b('0x2c'),_0x3d0175['field']]);if(!_0x125bfe){switch(_0x3d0175[_0x593b('0x48')]){case _0x593b('0x5b'):if(_0x3d0175[_0x593b('0x5c')]==0x1){_0x46a554[_0x593b('0x5d')]('`'+_0x3d0175[_0x593b('0x48')]+'`\x20=\x200');}else{_0x46a554[_0x593b('0x5d')]('`'+_0x3d0175[_0x593b('0x48')]+'`\x20>\x200');}break;case'Contact':if(_0x3d0175[_0x593b('0x5e')]===_0x593b('0x5f')){if(_0x3d0175[_0x593b('0x5c')][_0x593b('0x60')]('\x20')['length']>0x1){_0x1c2281[_0xb529e5](_0x593b('0x61'),qs[_0x593b('0x62')](_0x3d0175[_0x593b('0x5c')]),null);}else{var _0x57d8f1='%'+_0x3d0175['value']+'%';_0x1c2281[_0xb529e5](_0x593b('0x63'),_0x57d8f1,_0x57d8f1,_0x57d8f1);}}else{_0x125bfe=_[_0x593b('0x64')](_0x22e0a7,[_0x593b('0x2c'),'ContactId']);_0x3d0175[_0x593b('0x48')]=_0x593b('0x65');_0xee366b=as['buildExpression'](_0x5864e8,_0x125bfe[_0x593b('0x38')],_0x3d0175);_0x1c2281[_0xb529e5](_0xee366b[_0x593b('0x66')],_0xee366b[_0x593b('0x5c')][_0x593b('0x67')],_0xee366b[_0x593b('0x5c')][_0x593b('0x1d')]);}break;case _0x593b('0x68'):var _0x51b5df=_0x3d0175[_0x593b('0x5c')]['split'](',')['map'](function(_0x3905d1){return Number(_0x3905d1);});_0x51b5df[_0x593b('0x69')](function(_0x1c28e2){_0x4582ff['or'](_0x593b('0x6a'),'%,'+_0x1c28e2+',%');});_0x3cd1a6=_[_0x593b('0x6b')](_0x3cd1a6,_0x51b5df);break;case _0x593b('0x6c'):if(_0x3d0175[_0x593b('0x5e')]===_0x593b('0x5f')){_0x1c2281[_0xb529e5](_0x593b('0x6d'),'%'+_0x3d0175[_0x593b('0x5c')]+'%',null);}else{_0x125bfe=_[_0x593b('0x64')](_0x22e0a7,[_0x593b('0x2c'),_0x593b('0x6e')]);_0x3d0175['field']=_0x593b('0x6e');_0xee366b=as[_0x593b('0x6f')](_0x5864e8,_0x125bfe[_0x593b('0x38')],_0x3d0175);_0x1c2281[_0xb529e5](_0xee366b['text'],_0xee366b[_0x593b('0x5c')][_0x593b('0x67')],_0xee366b[_0x593b('0x5c')]['end']);}break;case _0x593b('0x70'):_0xee366b=as[_0x593b('0x6f')]('me',null,_0x3d0175);_0x1c2281[_0xb529e5](_0xee366b[_0x593b('0x66')],_0xee366b['value']['start'],_0xee366b[_0x593b('0x5c')]['end']);break;}}else{var _0xee366b=as[_0x593b('0x6f')](_0x5864e8,_0x125bfe['type'],_0x3d0175);_0x1c2281[_0xb529e5](_0xee366b[_0x593b('0x66')],_0xee366b[_0x593b('0x5c')][_0x593b('0x67')],_0xee366b[_0x593b('0x5c')][_0x593b('0x1d')]);}}}else{var _0x4df5a0=_(_0x49ab63['query'])['keys']()[_0x593b('0x2e')](function(_0x3fc7ec){return _[_0x593b('0x71')](_0x22e0a7,[_0x593b('0x2c'),_0x3fc7ec])?_0x3fc7ec:undefined;})['compact']()[_0x593b('0x5c')]();if(!_[_0x593b('0x72')](_0x4df5a0)){_0x4df5a0[_0x593b('0x69')](function(_0x1668e8){if(_0x1668e8===_0x593b('0x73')){_0x46a554[_0x593b('0x45')](_0x593b('0x74'),[]['concat'](_0x49ab63[_0x593b('0x3a')][_0x1668e8]));}else if(_0x1668e8===_0x593b('0x75')){var _0x3285e2=JSON[_0x593b('0x76')](_0x49ab63[_0x593b('0x3a')][_0x1668e8])[_0x593b('0x77')];var _0x141b9e=JSON[_0x593b('0x76')](_0x49ab63[_0x593b('0x3a')][_0x1668e8])[_0x593b('0x78')];_0x46a554[_0x593b('0x45')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3285e2,_0x141b9e);}else{if(_0x49ab63['query'][_0x1668e8]==='null'){_0x46a554['where']('i.'+_0x1668e8+_0x593b('0x79'));}else{_0x46a554[_0x593b('0x45')]('i.'+_0x1668e8+'\x20=\x20?',_0x49ab63['query'][_0x1668e8]);}}});}if(_0x49ab63[_0x593b('0x3a')][_0x593b('0x7a')]){if(_0x49ab63[_0x593b('0x3a')][_0x593b('0x7a')]==0x1){_0x46a554['having'](_0x593b('0x7b'));}else{_0x46a554[_0x593b('0x5d')](_0x593b('0x7c'));}}if(_0x49ab63[_0x593b('0x3a')]['tag']){_0x3cd1a6=_[_0x593b('0x7d')](_0x49ab63[_0x593b('0x3a')][_0x593b('0x7e')])?_0x49ab63[_0x593b('0x3a')]['tag']:new Array(_0x49ab63[_0x593b('0x3a')][_0x593b('0x7e')]);_0x3cd1a6['forEach'](function(_0x2036bd){_0x4582ff['or'](_0x593b('0x6a'),'%,'+_0x2036bd+',%');});}if(_0x49ab63[_0x593b('0x3a')][_0x593b('0x7f')]){var _0x11da7b=_0x49ab63['query'][_0x593b('0x7f')]['replace']('\x5c','\x5c\x5c')[_0x593b('0x80')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x11da7b)){_0x1c2281['or'](_0x593b('0x81'),_0x11da7b+'%')['or']('i.phone\x20LIKE\x20?',_0x11da7b+'%');}else{_0x1c2281['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x593b('0x62')](_0x11da7b))['or'](_0x593b('0x82'),_0x11da7b+'%');}}}_0x46a554[_0x593b('0x45')](_0x1c2281);_0x46a554[_0x593b('0x83')](_0x593b('0x84'));var _0x4f36ab={'type':db[_0x593b('0x85')]['QueryTypes']['SELECT'],'raw':!![]};var _0xb4f02f=_0x46a554[_0x593b('0x86')]();_0xb4f02f['field'](_0x593b('0x84'));_0xb4f02f[_0x593b('0x48')](_0x593b('0x87'),_0x593b('0x5b'));if(_0x520365[_0x593b('0x43')]){_0x520365[_0x593b('0x43')][_0x593b('0x69')](function(_0x4bb43f){var _0x312c03=_0x4bb43f[0x0]===_0x593b('0x88')?_0x4bb43f[0x0]:'i.'+_0x4bb43f[0x0];_0x46a554[_0x593b('0x43')](_0x312c03,_0x4bb43f[0x1]===_0x593b('0x89')?![]:!![]);});}if(!_[_0x593b('0x72')](_0x3cd1a6)){_0x46a554['having'](_0x4582ff);_0xb4f02f[_0x593b('0x45')](_0x593b('0x8a'),_0x3cd1a6);}BPromise[_0x593b('0x8b')]()[_0x593b('0x28')](function(){if(!_0x5aeb03){if(_0x49ab63[_0x593b('0x3a')][_0x593b('0x73')])return;_0xb4f02f[_0x593b('0x45')](_0x593b('0x8c'));_0x46a554[_0x593b('0x45')](_0x593b('0x8c'));return;}if(_0x49ab63[_0x593b('0x8d')][_0x593b('0x8e')]!=='agent')return;return _0x49ab63[_0x593b('0x8d')][_0x593b('0x8f')]({'attributes':['id'],'raw':!![]})[_0x593b('0x28')](function(_0x1d1e15){if(_[_0x593b('0x72')](_0x1d1e15)){_0xb4f02f[_0x593b('0x45')](_0x593b('0x90'));_0x46a554['where'](_0x593b('0x90'));}else{_0xb4f02f[_0x593b('0x45')](_0x593b('0x74'),_[_0x593b('0x2e')](_0x1d1e15,'id'));_0x46a554[_0x593b('0x45')](_0x593b('0x74'),_['map'](_0x1d1e15,'id'));}});})['then'](function(){if(_0x49ab63[_0x593b('0x8d')][_0x593b('0x8e')]===_0x593b('0x91')&&!_0x5aeb03&&!_0x49ab63[_0x593b('0x3a')][_0x593b('0x73')])return[];return db['sequelize']['query'](_0xb4f02f['toString'](),_0x4f36ab);})[_0x593b('0x28')](function(_0xc78d65){_0x254981[_0x593b('0x20')]=_0xc78d65['length'];if(_0x254981[_0x593b('0x20')]===0x0)return[];return db[_0x593b('0x92')]['query'](_0x1959ee[_0x593b('0x93')](),_0x4f36ab)[_0x593b('0x28')](function(_0x3027e4){_0x537f8f=_['keyBy'](_0x3027e4,'id');_0x4f36ab=_[_0x593b('0x94')](_0x4f36ab,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x49ab63[_0x593b('0x3a')][_0x593b('0x40')]){_0x520365[_0x593b('0x3f')][_0x593b('0x69')](function(_0x387d43){_0x46a554[_0x593b('0x48')]('i.'+_0x387d43);});}else{_0x46a554[_0x593b('0x48')](_0x593b('0x87'),_0x593b('0x5b'));_0x46a554[_0x593b('0x48')](_0x593b('0x95'),'Account.key');_0x46a554[_0x593b('0x48')]('a.mandatoryDisposition',_0x593b('0x96'));_0x46a554[_0x593b('0x48')](_0x593b('0x97'),_0x593b('0x88'));_0x46a554[_0x593b('0x48')](_0x593b('0x98'));_0x46a554[_0x593b('0x48')](_0x593b('0x99'),'Contact.firstName');_0x46a554['field'](_0x593b('0x9a'),_0x593b('0x9b'));_0x46a554[_0x593b('0x48')](_0x593b('0x9c'),_0x593b('0x9d'));_0x46a554[_0x593b('0x48')]('c.phone',_0x593b('0x9e'));_0x46a554[_0x593b('0x48')](_0x593b('0x9f'),_0x593b('0xa0'));_0x46a554[_0x593b('0x48')](_0x593b('0xa1'),_0x593b('0xa2'));_0x46a554[_0x593b('0x48')](_0x593b('0xa3'),'Owner.fullname');_0x46a554['field'](_0x593b('0xa4'),_0x593b('0xa5'));_0x46a554[_0x593b('0x48')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x593b('0x30'));}if(_0x520365[_0x593b('0x21')])_0x46a554[_0x593b('0x21')](_0x520365[_0x593b('0x21')]);if(_0x520365[_0x593b('0x1e')])_0x46a554[_0x593b('0x1e')](_0x520365['offset']);return db[_0x593b('0x92')][_0x593b('0x3a')](_0x46a554[_0x593b('0x93')](),_0x4f36ab);})[_0x593b('0x28')](function(_0x41bbc2){if(_0x41bbc2[_0x593b('0x5a')]>0x0)_0xfd4fb7[_0x593b('0x45')]('ui.SmsInteractionId\x20IN\x20?',_[_0x593b('0x2e')](_0x41bbc2,'id'));return db[_0x593b('0x92')][_0x593b('0x3a')](_0xfd4fb7[_0x593b('0x93')](),_0x4f36ab)['then'](function(_0x36051f){var _0x5dd3a9=_['groupBy'](_0x36051f,_0x593b('0xa6'));var _0x3b412e=[];_0x41bbc2[_0x593b('0x69')](function(_0x464d22){_0x3b412e[_0x593b('0x32')](updateSmsInteraction(_0x464d22,_0x537f8f,_0x5dd3a9));});return BPromise[_0x593b('0xa7')](_0x3b412e);});});})['then'](function(_0x59a894){_0x254981[_0x593b('0xa8')]=_0x59a894;return _0x254981;})['then'](respondWithFilteredResult(_0x573dc7,_0x520365))[_0x593b('0x33')](handleError(_0x573dc7,null));};exports['show']=function(_0x18a0ce,_0x1d47b6){var _0x4fb1a2={'raw':![],'where':{'id':_0x18a0ce[_0x593b('0xa9')]['id']}},_0x212cba={};_0x212cba['model']=_['keys'](db[_0x593b('0x35')][_0x593b('0x36')]);_0x212cba['query']=_[_0x593b('0x3b')](_0x18a0ce[_0x593b('0x3a')]);_0x212cba[_0x593b('0x3c')]=_[_0x593b('0x3d')](_0x212cba[_0x593b('0x3e')],_0x212cba[_0x593b('0x3a')]);_0x4fb1a2[_0x593b('0x3f')]=_['intersection'](_0x212cba[_0x593b('0x3e')],qs[_0x593b('0x40')](_0x18a0ce['query'][_0x593b('0x40')]));_0x4fb1a2[_0x593b('0x3f')]=_0x4fb1a2['attributes'][_0x593b('0x5a')]?_0x4fb1a2[_0x593b('0x3f')]:_0x212cba[_0x593b('0x3e')];if(_0x18a0ce[_0x593b('0x3a')]['includeAll']){_0x4fb1a2['include']=[{'all':!![]}];}_0x4fb1a2=_[_0x593b('0x94')]({},_0x4fb1a2,_0x18a0ce[_0x593b('0xaa')]);return db[_0x593b('0x35')][_0x593b('0x64')](_0x4fb1a2)[_0x593b('0x28')](handleEntityNotFound(_0x1d47b6,null))[_0x593b('0x28')](respondWithResult(_0x1d47b6,null))[_0x593b('0x33')](handleError(_0x1d47b6,null));};exports['create']=function(_0x5d8bfa,_0x4c0302){return db[_0x593b('0x35')][_0x593b('0xab')](_0x5d8bfa[_0x593b('0x70')],{})[_0x593b('0x28')](respondWithResult(_0x4c0302,0xc9))['catch'](handleError(_0x4c0302,null));};exports[_0x593b('0x27')]=function(_0x4dd7ea,_0x354119){if(_0x4dd7ea['body']['id']){delete _0x4dd7ea['body']['id'];}return db[_0x593b('0x35')][_0x593b('0x64')]({'where':{'id':_0x4dd7ea[_0x593b('0xa9')]['id']}})[_0x593b('0x28')](handleEntityNotFound(_0x354119,null))[_0x593b('0x28')](saveUpdates(_0x4dd7ea[_0x593b('0x70')],null))[_0x593b('0x28')](respondWithResult(_0x354119,null))[_0x593b('0x33')](handleError(_0x354119,null));};exports[_0x593b('0x29')]=function(_0x4e0642,_0x1be70a){return db[_0x593b('0x35')]['find']({'where':{'id':_0x4e0642[_0x593b('0xa9')]['id']}})[_0x593b('0x28')](handleEntityNotFound(_0x1be70a,null))[_0x593b('0x28')](removeEntity(_0x1be70a,null))[_0x593b('0x33')](handleError(_0x1be70a,null));};exports[_0x593b('0xac')]=function(_0x4c4333,_0x40e530){return db['SmsInteraction'][_0x593b('0xac')]()[_0x593b('0x28')](respondWithResult(_0x40e530,null))[_0x593b('0x33')](handleError(_0x40e530,null));};exports['addMessage']=function(_0x5bc427,_0xabaeea,_0x2d9fdc){return db[_0x593b('0xad')][_0x593b('0x64')]({'where':{'id':_0x5bc427[_0x593b('0xa9')]['id']}})['then'](handleEntityNotFound(_0xabaeea,null))[_0x593b('0x28')](function(_0xdc8911){if(_0xdc8911){return _0xdc8911['addMessage'](_0x5bc427[_0x593b('0x70')]['ids'],_[_0x593b('0xae')](_0x5bc427[_0x593b('0x70')],[_0x593b('0xaf'),'id'])||{});}})[_0x593b('0x28')](respondWithResult(_0xabaeea,null))[_0x593b('0x33')](handleError(_0xabaeea,null));};exports['getMessages']=function(_0x3e39cb,_0x2850a6,_0x12722a){var _0x30305f={'raw':![],'where':{}};var _0x1c1bd5={};var _0x51ab74={'count':0x0,'rows':[]};return db['SmsInteraction'][_0x593b('0xb0')]({'where':{'id':_0x3e39cb[_0x593b('0xa9')]['id']}})[_0x593b('0x28')](handleEntityNotFound(_0x2850a6,null))[_0x593b('0x28')](function(_0x31e0b2){if(_0x31e0b2){_0x1c1bd5[_0x593b('0x3e')]=_[_0x593b('0x3b')](db['SmsMessage'][_0x593b('0x36')]);_0x1c1bd5['query']=_[_0x593b('0x3b')](_0x3e39cb['query']);_0x1c1bd5[_0x593b('0x3c')]=_[_0x593b('0x3d')](_0x1c1bd5[_0x593b('0x3e')],_0x1c1bd5[_0x593b('0x3a')]);_0x30305f['attributes']=_[_0x593b('0x3d')](_0x1c1bd5[_0x593b('0x3e')],qs['fields'](_0x3e39cb[_0x593b('0x3a')]['fields']));_0x30305f[_0x593b('0x3f')]=_0x30305f[_0x593b('0x3f')]['length']?_0x30305f[_0x593b('0x3f')]:_0x1c1bd5[_0x593b('0x3e')];if(!_0x3e39cb[_0x593b('0x3a')]['hasOwnProperty']('nolimit')){_0x30305f[_0x593b('0x21')]=qs[_0x593b('0x21')](_0x3e39cb[_0x593b('0x3a')][_0x593b('0x21')]);_0x30305f['offset']=qs[_0x593b('0x1e')](_0x3e39cb[_0x593b('0x3a')]['offset']);}_0x30305f[_0x593b('0x43')]=qs[_0x593b('0x44')](_0x3e39cb[_0x593b('0x3a')][_0x593b('0x44')]);_0x30305f[_0x593b('0x45')]=qs[_0x593b('0x3c')](_['pick'](_0x3e39cb['query'],_0x1c1bd5[_0x593b('0x3c')]));_0x30305f[_0x593b('0x45')][_0x593b('0xa6')]=_0x31e0b2['id'];if(_0x3e39cb[_0x593b('0x3a')][_0x593b('0x7f')]){_0x30305f[_0x593b('0x45')]=_[_0x593b('0x94')](_0x30305f['where'],{'$or':_[_0x593b('0x2e')](_0x30305f[_0x593b('0x3f')],function(_0x2c333f){var _0x5c4716={};_0x5c4716[_0x2c333f]={'$like':'%'+_0x3e39cb[_0x593b('0x3a')][_0x593b('0x7f')]+'%'};return _0x5c4716;})});}if(_0x3e39cb[_0x593b('0x3a')][_0x593b('0x77')]){var _0x3c8035=_0x3e39cb[_0x593b('0x3a')][_0x593b('0x77')]['split'](',');var _0x561330={};_0x561330[_0x3c8035[0x0]]={'$gte':moment(_0x3c8035[0x1])[_0x593b('0xb1')](_0x593b('0xb2'))};_0x30305f[_0x593b('0x45')]=_['merge'](_0x30305f[_0x593b('0x45')],_0x561330);}_0x30305f=_[_0x593b('0x94')]({},_0x30305f,_0x3e39cb['options']);return db[_0x593b('0xad')]['count']({'where':_0x30305f[_0x593b('0x45')]})['then'](function(_0x1751c9){_0x51ab74[_0x593b('0x20')]=_0x1751c9;if(_0x3e39cb[_0x593b('0x3a')][_0x593b('0xb3')]){_0x30305f[_0x593b('0xb4')]=[{'all':!![]}];}return db[_0x593b('0xad')][_0x593b('0xb5')](_0x30305f);})[_0x593b('0x28')](function(_0x5e5aaf){_0x51ab74[_0x593b('0xa8')]=_0x5e5aaf;return _0x51ab74;});}})[_0x593b('0x28')](respondWithFilteredResult(_0x2850a6,_0x30305f))[_0x593b('0x33')](handleError(_0x2850a6,null));};exports[_0x593b('0xb6')]=function(_0x4e5ee8,_0x28d0d7,_0x3fdadf){return db[_0x593b('0x35')][_0x593b('0x64')]({'where':{'id':_0x4e5ee8[_0x593b('0xa9')]['id']}})['then'](handleEntityNotFound(_0x28d0d7,null))[_0x593b('0x28')](function(_0x51782d){if(_0x51782d){return _0x51782d[_0x593b('0xb7')](_0x4e5ee8['body'][_0x593b('0xaf')],_[_0x593b('0xae')](_0x4e5ee8[_0x593b('0x70')],[_0x593b('0xaf'),'id'])||{})[_0x593b('0xb8')](function(){return db[_0x593b('0x68')][_0x593b('0xb5')]({'attributes':['id',_0x593b('0x2c'),_0x593b('0x49')],'where':{'id':_0x4e5ee8[_0x593b('0x70')][_0x593b('0xaf')]}});})[_0x593b('0x28')](function(_0x590cfb){socket[_0x593b('0xb9')](_0x593b('0xba'),{'id':Number(_0x4e5ee8[_0x593b('0xa9')]['id']),'tags':_0x590cfb||[]});return{'id':Number(_0x4e5ee8['params']['id']),'tags':_0x590cfb||[]};});}})['then'](respondWithResult(_0x28d0d7,null))[_0x593b('0x33')](handleError(_0x28d0d7,null));};exports[_0x593b('0xbb')]=function(_0x250f9b,_0x545fe3,_0x5686a5){return db[_0x593b('0x35')][_0x593b('0x64')]({'where':{'id':_0x250f9b[_0x593b('0xa9')]['id']}})['then'](handleEntityNotFound(_0x545fe3,null))[_0x593b('0x28')](function(_0x190fea){if(_0x190fea){return _0x190fea[_0x593b('0xbb')](_0x250f9b[_0x593b('0x3a')][_0x593b('0xaf')]);}})[_0x593b('0x28')](respondWithStatusCode(_0x545fe3,null))[_0x593b('0x33')](handleError(_0x545fe3,null));};exports[_0x593b('0xbc')]=function(_0x3251ef,_0x1e51ba){var _0x1cad16=moment()[_0x593b('0xbd')]()[_0x593b('0x93')]();var _0x2c72d5=path['join'](config[_0x593b('0xbe')],_0x593b('0xbf'),_0x593b('0xc0'),'tmp');var _0x26939a=path[_0x593b('0xc1')](config[_0x593b('0xbe')],_0x593b('0xbf'),'files','attachments');var _0x573946=path[_0x593b('0xc1')](_0x2c72d5,_0x1cad16);var _0x45874c=util[_0x593b('0xb1')]('transcript-%d-%s.zip',_0x3251ef['params']['id'],_0x1cad16);var _0x587dfe=path[_0x593b('0xc1')](_0x2c72d5,_0x45874c);var _0x161d3a=[];_0x161d3a[_0x593b('0x32')]({'model':db[_0x593b('0x6c')],'as':_0x593b('0x6c'),'attributes':['id',_0x593b('0x2f')],'raw':!![]});_0x161d3a[_0x593b('0x32')]({'model':db[_0x593b('0xc2')],'as':_0x593b('0xc3'),'attributes':['id',_0x593b('0xc4'),_0x593b('0xc5')],'raw':!![]});var _0x4f3f9c=[{'model':db[_0x593b('0xad')],'as':'Messages','attributes':['id',_0x593b('0x70'),_0x593b('0x75'),_0x593b('0xc6'),_0x593b('0xc7'),'read'],'include':_0x161d3a}];_0x4f3f9c[_0x593b('0x32')]({'model':db['SmsAccount'],'as':_0x593b('0xc8'),'attributes':['id',_0x593b('0x2c')]});_0x4f3f9c['push']({'model':db[_0x593b('0x6c')],'as':_0x593b('0xc9'),'attributes':['id','fullname']});return db[_0x593b('0x35')]['find']({'where':{'id':_0x3251ef['params']['id']},'include':_0x4f3f9c})[_0x593b('0x28')](handleEntityNotFound(_0x1e51ba,null))[_0x593b('0x28')](function(_0x367b91){if(_0x367b91){var _0x12f302=_0x367b91[_0x593b('0xca')]({'plain':!![]});fs[_0x593b('0xcb')](_0x573946);var _0x3cd8e3={'channel':_0x593b('0xcc'),'account':_0x12f302[_0x593b('0xc8')]['name'],'agent':_0x12f302['Owner']?_0x12f302[_0x593b('0xc9')][_0x593b('0x2f')]:'N.A.','createdAt':moment(_0x12f302[_0x593b('0x75')])[_0x593b('0xb1')](_0x593b('0xb2'))['toString'](),'closedAt':_0x12f302[_0x593b('0xcd')]?moment(_0x12f302[_0x593b('0xce')])[_0x593b('0xb1')](_0x593b('0xb2'))[_0x593b('0x93')]():'','disposition':_0x12f302[_0x593b('0xcf')],'messages':_(_0x12f302[_0x593b('0xd0')])[_0x593b('0x7f')]({'secret':![]})[_0x593b('0x2e')](function(_0x1cef6f){return{'date':moment(_0x1cef6f[_0x593b('0x75')])[_0x593b('0xb1')](_0x593b('0xb2'))[_0x593b('0x93')](),'sender':_0x1cef6f[_0x593b('0xc6')]===_0x593b('0xd1')?_0x1cef6f[_0x593b('0x6c')]?_0x1cef6f[_0x593b('0x6c')][_0x593b('0x2f')]:_0x593b('0xd2'):_0x1cef6f['Contact'][_0x593b('0xc4')]+(_0x1cef6f['Contact'][_0x593b('0xc5')]?'\x20'+_0x1cef6f[_0x593b('0xc3')][_0x593b('0xc5')]:''),'body':_0x1cef6f['body'],'direction':_0x1cef6f[_0x593b('0xc6')]===_0x593b('0xd1')?'A':'C','secret':_0x1cef6f[_0x593b('0xc7')],'read':_0x1cef6f[_0x593b('0x7a')]};})[_0x593b('0x5c')]()};return ejs[_0x593b('0xd3')](path['join'](config['root'],_0x593b('0xbf'),_0x593b('0xd4'),_0x593b('0xd5')),{'interaction':_0x3cd8e3})[_0x593b('0x28')](function(_0x4b0b7a){var _0x483ce1=path[_0x593b('0xc1')](_0x573946,'transcript-'+_0x12f302['id']+'-'+_0x1cad16+_0x593b('0xd6'));var _0x34fa57={'path':_0x483ce1,'channel':_0x593b('0xcc'),'interactionId':_0x12f302['id']};return pdf[_0x593b('0xd7')](_0x4b0b7a,_0x34fa57);})['then'](function(){return new BPromise(function(_0x1269ec,_0x3480cf){zipdir(_0x573946,{'saveTo':_0x587dfe},function(_0x5530a0,_0x5e8945){if(_0x5530a0)return _0x3480cf(_0x5530a0);return _0x1269ec(_0x5e8945);});})['then'](function(){return new BPromise(function(_0x40e514,_0x3cb3e2){rimraf(_0x573946,function(_0x52e278){if(_0x52e278)_0x3cb3e2(_0x52e278);return _0x40e514();});});})[_0x593b('0x28')](function(){return _0x1e51ba['download'](_0x587dfe,_0x45874c,function(_0x1bf8ac){if(_0x1bf8ac){console[_0x593b('0xd8')]('err',_0x1bf8ac);}else{fs[_0x593b('0xd9')](_0x587dfe);}});});});}else{return _0x1e51ba['sendStatus'](0xc8);}})['catch'](handleError(_0x1e51ba,null));};
\ No newline at end of file
+var _0x232f=['type','body','compact','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','toString','merge','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','c.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','ui.SmsInteractionId\x20IN\x20?','SmsInteractionId','all','rows','show','rawAttributes','intersection','includeAll','options','create','params','describe','addMessage','ids','findOne','SmsMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','addTags','setTags','omit','spread','color','emit','smsInteractionTags:save','removeTags','root','server','tmp','files','attachments','transcript-%d-%s.zip','CmContact','Contact','firstName','Messages','createdAt','direction','secret','SmsAccount','Owner','mkdirSync','Sms','Account','N.A.','closed','closedAt','disposition','out','System','lastName','renderFile','join','views','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','../../config/utils','../../config/license/util','redis','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','SmsInteraction','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','select','field','from','tools_tags','u.id','u.fullname','ui.SmsInteractionId','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','sms_accounts','a.id\x20=\x20i.SmsAccountId','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','operator','$substring','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','buildExpression','text','start','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId'];(function(_0x568a10,_0x2bdcf5){var _0x5e21b9=function(_0x34f7d){while(--_0x34f7d){_0x568a10['push'](_0x568a10['shift']());}};_0x5e21b9(++_0x2bdcf5);}(_0x232f,0x7a));var _0xf232=function(_0x4060b4,_0x82eb25){_0x4060b4=_0x4060b4-0x0;var _0x32aaa1=_0x232f[_0x4060b4];return _0x32aaa1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf232('0x0'));var zipdir=require(_0xf232('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf232('0x2'));var moment=require(_0xf232('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf232('0x4'));var path=require(_0xf232('0x5'));var sox=require(_0xf232('0x6'));var csv=require(_0xf232('0x7'));var ejs=require(_0xf232('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf232('0x9'));var deskjs=require(_0xf232('0xa'));var toCsv=require(_0xf232('0x7'));var querystring=require('querystring');var Papa=require(_0xf232('0xb'));var Redis=require(_0xf232('0xc'));var authService=require(_0xf232('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xf232('0xe'));var pdf=require(_0xf232('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf232('0x10'))('api');var utils=require(_0xf232('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xf232('0x12'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xf232('0x13')],{'host':'localhost','port':0x18eb});var socket=require(_0xf232('0x14'))(new Redis(config[_0xf232('0x13')]));require('./smsInteraction.socket')[_0xf232('0x15')](socket);function respondWithStatusCode(_0x6a9f,_0x1963d2){_0x1963d2=_0x1963d2||0xcc;return function(_0xcf8da6){if(_0xcf8da6){return _0x6a9f[_0xf232('0x16')](_0x1963d2);}return _0x6a9f[_0xf232('0x17')](_0x1963d2)[_0xf232('0x18')]();};}function respondWithResult(_0x2d4d8a,_0x2772ea){_0x2772ea=_0x2772ea||0xc8;return function(_0x15dd81){if(_0x15dd81){return _0x2d4d8a[_0xf232('0x17')](_0x2772ea)[_0xf232('0x19')](_0x15dd81);}};}function respondWithFilteredResult(_0x416a2d,_0x513c01){return function(_0x1b910d){if(_0x1b910d){var _0x25a801=typeof _0x513c01[_0xf232('0x1a')]===_0xf232('0x1b')&&typeof _0x513c01[_0xf232('0x1c')]===_0xf232('0x1b');var _0x28c5d3=_0x1b910d[_0xf232('0x1d')];var _0x4593f0=_0x25a801?0x0:_0x513c01[_0xf232('0x1a')];var _0x4c6fcf=_0x25a801?_0x1b910d[_0xf232('0x1d')]:_0x513c01['offset']+_0x513c01[_0xf232('0x1c')];var _0x49aa0d;if(_0x4c6fcf>=_0x28c5d3){_0x4c6fcf=_0x28c5d3;_0x49aa0d=0xc8;}else{_0x49aa0d=0xce;}_0x416a2d['status'](_0x49aa0d);return _0x416a2d[_0xf232('0x1e')](_0xf232('0x1f'),_0x4593f0+'-'+_0x4c6fcf+'/'+_0x28c5d3)[_0xf232('0x19')](_0x1b910d);}return null;};}function patchUpdates(_0x1695b7){return function(_0x13e88d){try{jsonpatch['apply'](_0x13e88d,_0x1695b7,!![]);}catch(_0x4ae651){return BPromise[_0xf232('0x20')](_0x4ae651);}return _0x13e88d[_0xf232('0x21')]();};}function saveUpdates(_0x5769d3,_0x47c3ca){return function(_0x578980){if(_0x578980){return _0x578980[_0xf232('0x22')](_0x5769d3)[_0xf232('0x23')](function(_0x4bb39a){return _0x4bb39a;});}return null;};}function removeEntity(_0x22fcc0,_0x4a3c67){return function(_0x55604a){if(_0x55604a){return _0x55604a[_0xf232('0x24')]()[_0xf232('0x23')](function(){_0x22fcc0[_0xf232('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x476fdf,_0x5d72f3){return function(_0xc9a892){if(!_0xc9a892){_0x476fdf[_0xf232('0x16')](0x194);}return _0xc9a892;};}function handleError(_0x2fdb2b,_0x2fbdf7){_0x2fbdf7=_0x2fbdf7||0x1f4;return function(_0x4bc5e1){logger[_0xf232('0x25')](_0x4bc5e1['stack']);if(_0x4bc5e1['name']){delete _0x4bc5e1[_0xf232('0x26')];}_0x2fdb2b[_0xf232('0x17')](_0x2fbdf7)[_0xf232('0x27')](_0x4bc5e1);};}function getInteractionUsers(_0xbe3fcc,_0x25dc34){return new BPromise(function(_0x50fadb,_0x19dcc4){try{if(_0x25dc34[_0xbe3fcc['id']]){_0xbe3fcc[_0xf232('0x28')]=_[_0xf232('0x29')](_0x25dc34[_0xbe3fcc['id']],function(_0x225b04){return{'id':_0x225b04['id'],'fullname':_0x225b04[_0xf232('0x2a')]};});}}catch(_0xeb48ee){_0x19dcc4(_0xeb48ee);}_0x50fadb(_0xbe3fcc);});}function getInteractionTags(_0x3da7af,_0x166e14){return new BPromise(function(_0x18f265,_0x27a41d){try{if(_0x3da7af[_0xf232('0x2b')]){_0x3da7af[_0xf232('0x2c')]=[];_0x3da7af[_0xf232('0x2b')][_0xf232('0x2d')](',')[_0xf232('0x2e')](function(_0x3f537c){_0x3da7af[_0xf232('0x2c')][_0xf232('0x2f')](_0x166e14[_0x3f537c]);});}delete _0x3da7af['TagIds'];}catch(_0xae87d1){_0x27a41d(_0xae87d1);}_0x18f265(_0x3da7af);});}function updateSmsInteraction(_0x4b2e38,_0x5e61a7,_0x8b2f5b){return new BPromise(function(_0x1bb57f,_0x6797e0){return getInteractionUsers(_0x4b2e38,_0x8b2f5b)[_0xf232('0x23')](function(_0x533e32){return getInteractionTags(_0x533e32,_0x5e61a7);})[_0xf232('0x23')](function(_0x36c5f6){_0x1bb57f(_0x36c5f6);})[_0xf232('0x30')](function(_0x2073c6){_0x6797e0(_0x2073c6);});});}exports['index']=function(_0x58f556,_0x5765d3){var _0x4f7498={},_0x2b3a91={},_0x8b3890={'count':0x0,'rows':[]};var _0x5d9f37=_[_0xf232('0x29')](db[_0xf232('0x31')]['rawAttributes'],function(_0x36acb8){return{'name':_0x36acb8['fieldName'],'type':_0x36acb8['type'][_0xf232('0x32')]};});_0x2b3a91[_0xf232('0x33')]=_[_0xf232('0x29')](_0x5d9f37,_0xf232('0x26'));_0x2b3a91['query']=_[_0xf232('0x34')](_0x58f556[_0xf232('0x35')]);_0x2b3a91[_0xf232('0x36')]=_['intersection'](_0x2b3a91[_0xf232('0x33')],_0x2b3a91[_0xf232('0x35')]);_0x4f7498[_0xf232('0x37')]=_['intersection'](_0x2b3a91[_0xf232('0x33')],qs[_0xf232('0x38')](_0x58f556[_0xf232('0x35')]['fields']));_0x4f7498[_0xf232('0x37')]=_0x4f7498[_0xf232('0x37')][_0xf232('0x39')]?_0x4f7498[_0xf232('0x37')]:_0x2b3a91[_0xf232('0x33')];if(!_0x58f556['query'][_0xf232('0x3a')](_0xf232('0x3b'))){_0x4f7498[_0xf232('0x1c')]=qs[_0xf232('0x1c')](_0x58f556[_0xf232('0x35')][_0xf232('0x1c')]);_0x4f7498[_0xf232('0x1a')]=qs[_0xf232('0x1a')](_0x58f556[_0xf232('0x35')][_0xf232('0x1a')]);}_0x4f7498[_0xf232('0x3c')]=qs[_0xf232('0x3d')](_0x58f556[_0xf232('0x35')][_0xf232('0x3d')]);_0x4f7498[_0xf232('0x3e')]=qs[_0xf232('0x36')](_['pick'](_0x58f556[_0xf232('0x35')],_0x2b3a91['filters']),_0x5d9f37);var _0xc2daf7=[];var _0x4a555f=squel[_0xf232('0x3f')]()[_0xf232('0x40')]('id')[_0xf232('0x40')](_0xf232('0x26'))[_0xf232('0x40')]('color')[_0xf232('0x41')](_0xf232('0x42'));var _0x599a68=squel[_0xf232('0x3f')]()[_0xf232('0x40')](_0xf232('0x43'))[_0xf232('0x40')](_0xf232('0x44'))[_0xf232('0x40')](_0xf232('0x45'))['from']('user_has_sms_interactions','ui')['left_join'](_0xf232('0x46'),'u',_0xf232('0x47'));var _0x54fac8=squel[_0xf232('0x3f')]()[_0xf232('0x41')](_0xf232('0x48'),'i')['left_join'](_0xf232('0x49'),'c',_0xf232('0x4a'))[_0xf232('0x4b')](_0xf232('0x46'),'o','o.id\x20=\x20i.UserId')[_0xf232('0x4b')](_0xf232('0x4c'),'a',_0xf232('0x4d'))[_0xf232('0x4b')]('sms_messages','me',_0xf232('0x4e'))['left_join']('sms_interaction_has_tags','it',_0xf232('0x4f'))[_0xf232('0x4b')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x174f24=squel['expr']();var _0x43a8b9=[];var _0x1d0149=squel[_0xf232('0x50')]();var _0x343ea3;if(_0x58f556[_0xf232('0x35')][_0xf232('0x51')]){_0x343ea3=as[_0xf232('0x52')](_0x58f556[_0xf232('0x35')][_0xf232('0x51')]);var _0x4f2ff7=_0x343ea3[_0xf232('0x53')];for(var _0x18ba72=0x0;_0x18ba72<_0x343ea3[_0xf232('0x54')][_0xf232('0x39')];_0x18ba72++){var _0x12484a=_0x343ea3['conditions'][_0x18ba72];var _0x213bc8='i';var _0x5a5835=_[_0xf232('0x55')](_0x5d9f37,['name',_0x12484a[_0xf232('0x40')]]);if(!_0x5a5835){switch(_0x12484a[_0xf232('0x40')]){case _0xf232('0x56'):if(_0x12484a[_0xf232('0x57')]==0x1){_0x54fac8[_0xf232('0x58')]('`'+_0x12484a[_0xf232('0x40')]+'`\x20=\x200');}else{_0x54fac8[_0xf232('0x58')]('`'+_0x12484a[_0xf232('0x40')]+_0xf232('0x59'));}break;case'Contact':if(_0x12484a[_0xf232('0x5a')]===_0xf232('0x5b')){if(_0x12484a['value']['split']('\x20')[_0xf232('0x39')]>0x1){_0x174f24[_0x4f2ff7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x12484a[_0xf232('0x57')]),null);}else{var _0x53e30e='%'+_0x12484a[_0xf232('0x57')]+'%';_0x174f24[_0x4f2ff7](_0xf232('0x5c'),_0x53e30e,_0x53e30e,_0x53e30e);}}else{_0x5a5835=_[_0xf232('0x55')](_0x5d9f37,[_0xf232('0x26'),'ContactId']);_0x12484a['field']='ContactId';_0x407e3f=as[_0xf232('0x5d')](_0x213bc8,_0x5a5835['type'],_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')][_0xf232('0x5f')],_0x407e3f[_0xf232('0x57')][_0xf232('0x18')]);}break;case'Tag':var _0x3be476=_0x12484a[_0xf232('0x57')][_0xf232('0x2d')](',')['map'](function(_0x2d9ad9){return Number(_0x2d9ad9);});_0x3be476[_0xf232('0x2e')](function(_0x4e558f){_0x1d0149['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4e558f+',%');});_0x43a8b9=_[_0xf232('0x60')](_0x43a8b9,_0x3be476);break;case _0xf232('0x61'):if(_0x12484a[_0xf232('0x5a')]==='$substring'){_0x174f24[_0x4f2ff7](_0xf232('0x62'),'%'+_0x12484a[_0xf232('0x57')]+'%',null);}else{_0x5a5835=_[_0xf232('0x55')](_0x5d9f37,[_0xf232('0x26'),_0xf232('0x63')]);_0x12484a[_0xf232('0x40')]=_0xf232('0x63');_0x407e3f=as[_0xf232('0x5d')](_0x213bc8,_0x5a5835[_0xf232('0x64')],_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')][_0xf232('0x5f')],_0x407e3f[_0xf232('0x57')][_0xf232('0x18')]);}break;case _0xf232('0x65'):_0x407e3f=as[_0xf232('0x5d')]('me',null,_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')]['start'],_0x407e3f['value'][_0xf232('0x18')]);break;}}else{var _0x407e3f=as[_0xf232('0x5d')](_0x213bc8,_0x5a5835['type'],_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')]['start'],_0x407e3f[_0xf232('0x57')][_0xf232('0x18')]);}}}else{var _0x9db3a7=_(_0x58f556['query'])['keys']()[_0xf232('0x29')](function(_0x44e0df){return _['some'](_0x5d9f37,['name',_0x44e0df])?_0x44e0df:undefined;})[_0xf232('0x66')]()[_0xf232('0x57')]();if(!_['isEmpty'](_0x9db3a7)){_0x9db3a7[_0xf232('0x2e')](function(_0x342224){if(_0x342224===_0xf232('0x67')){_0x54fac8[_0xf232('0x3e')](_0xf232('0x68'),[][_0xf232('0x69')](_0x58f556['query'][_0x342224]));}else if(_0x342224==='createdAt'){var _0x1e7390=JSON[_0xf232('0x6a')](_0x58f556['query'][_0x342224])['$gte'];var _0x2809db=JSON[_0xf232('0x6a')](_0x58f556[_0xf232('0x35')][_0x342224])['$lte'];_0x54fac8[_0xf232('0x3e')](_0xf232('0x6b'),_0x1e7390,_0x2809db);}else{if(_0x58f556[_0xf232('0x35')][_0x342224]===_0xf232('0x6c')){_0x54fac8[_0xf232('0x3e')]('i.'+_0x342224+_0xf232('0x6d'));}else{_0x54fac8[_0xf232('0x3e')]('i.'+_0x342224+_0xf232('0x6e'),_0x58f556[_0xf232('0x35')][_0x342224]);}}});}if(_0x58f556[_0xf232('0x35')][_0xf232('0x6f')]){if(_0x58f556['query'][_0xf232('0x6f')]==0x1){_0x54fac8[_0xf232('0x58')](_0xf232('0x70'));}else{_0x54fac8['having'](_0xf232('0x71'));}}if(_0x58f556[_0xf232('0x35')][_0xf232('0x72')]){_0x43a8b9=_[_0xf232('0x73')](_0x58f556[_0xf232('0x35')][_0xf232('0x72')])?_0x58f556[_0xf232('0x35')][_0xf232('0x72')]:new Array(_0x58f556[_0xf232('0x35')][_0xf232('0x72')]);_0x43a8b9[_0xf232('0x2e')](function(_0x8ab1b0){_0x1d0149['or'](_0xf232('0x74'),'%,'+_0x8ab1b0+',%');});}if(_0x58f556['query'][_0xf232('0x75')]){var _0x58ba00=_0x58f556[_0xf232('0x35')][_0xf232('0x75')]['replace']('\x5c','\x5c\x5c')[_0xf232('0x76')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x58ba00)){_0x174f24['or'](_0xf232('0x77'),_0x58ba00+'%')['or'](_0xf232('0x78'),_0x58ba00+'%');}else{_0x174f24['or'](_0xf232('0x79'),qs['getFullTextValue'](_0x58ba00))['or'](_0xf232('0x7a'),_0x58ba00+'%');}}}_0x54fac8[_0xf232('0x3e')](_0x174f24);_0x54fac8[_0xf232('0x7b')](_0xf232('0x7c'));var _0x2b00a3={'type':db[_0xf232('0x7d')][_0xf232('0x7e')][_0xf232('0x7f')],'raw':!![]};var _0x547a4a=_0x54fac8[_0xf232('0x80')]();_0x547a4a[_0xf232('0x40')]('i.id');_0x547a4a['field'](_0xf232('0x81'),_0xf232('0x56'));if(_0x4f7498[_0xf232('0x3c')]){_0x4f7498[_0xf232('0x3c')][_0xf232('0x2e')](function(_0x3e36e9){var _0x2e0702=_0x3e36e9[0x0]===_0xf232('0x82')?_0x3e36e9[0x0]:'i.'+_0x3e36e9[0x0];_0x54fac8[_0xf232('0x3c')](_0x2e0702,_0x3e36e9[0x1]===_0xf232('0x83')?![]:!![]);});}if(!_[_0xf232('0x84')](_0x43a8b9)){_0x54fac8[_0xf232('0x58')](_0x1d0149);_0x547a4a[_0xf232('0x3e')](_0xf232('0x85'),_0x43a8b9);}BPromise[_0xf232('0x86')]()[_0xf232('0x23')](function(){if(!_0x343ea3){if(_0x58f556[_0xf232('0x35')][_0xf232('0x67')])return;_0x547a4a[_0xf232('0x3e')](_0xf232('0x87'));_0x54fac8['where'](_0xf232('0x87'));return;}if(_0x58f556[_0xf232('0x88')][_0xf232('0x89')]!==_0xf232('0x8a'))return;return _0x58f556[_0xf232('0x88')][_0xf232('0x8b')]({'attributes':['id'],'raw':!![]})[_0xf232('0x23')](function(_0x583274){if(_['isEmpty'](_0x583274)){_0x547a4a['where'](_0xf232('0x8c'));_0x54fac8['where'](_0xf232('0x8c'));}else{_0x547a4a['where'](_0xf232('0x68'),_[_0xf232('0x29')](_0x583274,'id'));_0x54fac8[_0xf232('0x3e')](_0xf232('0x68'),_[_0xf232('0x29')](_0x583274,'id'));}});})[_0xf232('0x23')](function(){if(_0x58f556[_0xf232('0x88')]['role']===_0xf232('0x8a')&&!_0x343ea3&&!_0x58f556['query'][_0xf232('0x67')])return[];return db['sequelize'][_0xf232('0x35')](_0x547a4a[_0xf232('0x8d')](),_0x2b00a3);})[_0xf232('0x23')](function(_0x23c030){_0x8b3890['count']=_0x23c030[_0xf232('0x39')];if(_0x8b3890[_0xf232('0x1d')]===0x0)return[];return db['sequelize'][_0xf232('0x35')](_0x4a555f['toString'](),_0x2b00a3)['then'](function(_0x4ff2cc){_0xc2daf7=_['keyBy'](_0x4ff2cc,'id');_0x2b00a3=_[_0xf232('0x8e')](_0x2b00a3,{'model':db[_0xf232('0x31')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x58f556['query']['fields']){_0x4f7498[_0xf232('0x37')][_0xf232('0x2e')](function(_0x5bc2ac){_0x54fac8[_0xf232('0x40')]('i.'+_0x5bc2ac);});}else{_0x54fac8[_0xf232('0x40')](_0xf232('0x81'),'unreadMessages');_0x54fac8['field'](_0xf232('0x8f'),_0xf232('0x90'));_0x54fac8[_0xf232('0x40')](_0xf232('0x91'),'Account.mandatoryDisposition');_0x54fac8['field'](_0xf232('0x92'),'contactName');_0x54fac8[_0xf232('0x40')]('i.*');_0x54fac8['field'](_0xf232('0x93'),'Contact.firstName');_0x54fac8[_0xf232('0x40')](_0xf232('0x94'),'Contact.lastName');_0x54fac8[_0xf232('0x40')](_0xf232('0x95'),'Contact.email');_0x54fac8[_0xf232('0x40')](_0xf232('0x96'),_0xf232('0x97'));_0x54fac8['field'](_0xf232('0x98'),_0xf232('0x99'));_0x54fac8[_0xf232('0x40')](_0xf232('0x9a'),_0xf232('0x9b'));_0x54fac8[_0xf232('0x40')]('o.fullname',_0xf232('0x9c'));_0x54fac8[_0xf232('0x40')](_0xf232('0x9d'),_0xf232('0x9e'));_0x54fac8[_0xf232('0x40')](_0xf232('0x9f'),_0xf232('0x2b'));}if(_0x4f7498[_0xf232('0x1c')])_0x54fac8[_0xf232('0x1c')](_0x4f7498['limit']);if(_0x4f7498[_0xf232('0x1a')])_0x54fac8[_0xf232('0x1a')](_0x4f7498['offset']);return db[_0xf232('0xa0')]['query'](_0x54fac8[_0xf232('0x8d')](),_0x2b00a3);})[_0xf232('0x23')](function(_0x16dafd){if(_0x16dafd[_0xf232('0x39')]>0x0)_0x599a68['where'](_0xf232('0xa1'),_[_0xf232('0x29')](_0x16dafd,'id'));return db[_0xf232('0xa0')]['query'](_0x599a68[_0xf232('0x8d')](),_0x2b00a3)[_0xf232('0x23')](function(_0x570340){var _0x5e2d08=_['groupBy'](_0x570340,_0xf232('0xa2'));var _0x149b18=[];_0x16dafd[_0xf232('0x2e')](function(_0x3891d6){_0x149b18[_0xf232('0x2f')](updateSmsInteraction(_0x3891d6,_0xc2daf7,_0x5e2d08));});return BPromise[_0xf232('0xa3')](_0x149b18);});});})['then'](function(_0x52dcf3){_0x8b3890[_0xf232('0xa4')]=_0x52dcf3;return _0x8b3890;})[_0xf232('0x23')](respondWithFilteredResult(_0x5765d3,_0x4f7498))[_0xf232('0x30')](handleError(_0x5765d3,null));};exports[_0xf232('0xa5')]=function(_0x41d48c,_0x50e162){var _0x2315d4={'raw':![],'where':{'id':_0x41d48c['params']['id']}},_0x3ed983={};_0x3ed983[_0xf232('0x33')]=_[_0xf232('0x34')](db['SmsInteraction'][_0xf232('0xa6')]);_0x3ed983['query']=_[_0xf232('0x34')](_0x41d48c[_0xf232('0x35')]);_0x3ed983[_0xf232('0x36')]=_[_0xf232('0xa7')](_0x3ed983[_0xf232('0x33')],_0x3ed983[_0xf232('0x35')]);_0x2315d4['attributes']=_['intersection'](_0x3ed983[_0xf232('0x33')],qs['fields'](_0x41d48c[_0xf232('0x35')][_0xf232('0x38')]));_0x2315d4[_0xf232('0x37')]=_0x2315d4[_0xf232('0x37')][_0xf232('0x39')]?_0x2315d4['attributes']:_0x3ed983[_0xf232('0x33')];if(_0x41d48c[_0xf232('0x35')][_0xf232('0xa8')]){_0x2315d4['include']=[{'all':!![]}];}_0x2315d4=_['merge']({},_0x2315d4,_0x41d48c[_0xf232('0xa9')]);return db[_0xf232('0x31')]['find'](_0x2315d4)[_0xf232('0x23')](handleEntityNotFound(_0x50e162,null))[_0xf232('0x23')](respondWithResult(_0x50e162,null))[_0xf232('0x30')](handleError(_0x50e162,null));};exports[_0xf232('0xaa')]=function(_0x5c90b2,_0x42f434){return db[_0xf232('0x31')][_0xf232('0xaa')](_0x5c90b2[_0xf232('0x65')],{})[_0xf232('0x23')](respondWithResult(_0x42f434,0xc9))[_0xf232('0x30')](handleError(_0x42f434,null));};exports['update']=function(_0x54fbab,_0x8d6087){if(_0x54fbab[_0xf232('0x65')]['id']){delete _0x54fbab[_0xf232('0x65')]['id'];}return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x54fbab[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x8d6087,null))['then'](saveUpdates(_0x54fbab['body'],null))[_0xf232('0x23')](respondWithResult(_0x8d6087,null))[_0xf232('0x30')](handleError(_0x8d6087,null));};exports[_0xf232('0x24')]=function(_0x243840,_0x114f57){return db['SmsInteraction'][_0xf232('0x55')]({'where':{'id':_0x243840['params']['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x114f57,null))[_0xf232('0x23')](removeEntity(_0x114f57,null))[_0xf232('0x30')](handleError(_0x114f57,null));};exports[_0xf232('0xac')]=function(_0x361073,_0x551467){return db['SmsInteraction'][_0xf232('0xac')]()[_0xf232('0x23')](respondWithResult(_0x551467,null))[_0xf232('0x30')](handleError(_0x551467,null));};exports[_0xf232('0xad')]=function(_0x58fccc,_0x17c93a,_0x46ee3d){return db['SmsMessage']['find']({'where':{'id':_0x58fccc[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x17c93a,null))['then'](function(_0x10353d){if(_0x10353d){return _0x10353d['addMessage'](_0x58fccc[_0xf232('0x65')][_0xf232('0xae')],_['omit'](_0x58fccc[_0xf232('0x65')],[_0xf232('0xae'),'id'])||{});}})[_0xf232('0x23')](respondWithResult(_0x17c93a,null))['catch'](handleError(_0x17c93a,null));};exports['getMessages']=function(_0x2d4080,_0x39e372,_0x57d1ea){var _0x1095bc={'raw':![],'where':{}};var _0x2d997f={};var _0x51ef09={'count':0x0,'rows':[]};return db[_0xf232('0x31')][_0xf232('0xaf')]({'where':{'id':_0x2d4080[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x39e372,null))[_0xf232('0x23')](function(_0xa68441){if(_0xa68441){_0x2d997f[_0xf232('0x33')]=_[_0xf232('0x34')](db[_0xf232('0xb0')][_0xf232('0xa6')]);_0x2d997f[_0xf232('0x35')]=_[_0xf232('0x34')](_0x2d4080[_0xf232('0x35')]);_0x2d997f[_0xf232('0x36')]=_[_0xf232('0xa7')](_0x2d997f[_0xf232('0x33')],_0x2d997f['query']);_0x1095bc['attributes']=_[_0xf232('0xa7')](_0x2d997f['model'],qs[_0xf232('0x38')](_0x2d4080[_0xf232('0x35')][_0xf232('0x38')]));_0x1095bc[_0xf232('0x37')]=_0x1095bc[_0xf232('0x37')][_0xf232('0x39')]?_0x1095bc['attributes']:_0x2d997f[_0xf232('0x33')];if(!_0x2d4080[_0xf232('0x35')][_0xf232('0x3a')](_0xf232('0x3b'))){_0x1095bc[_0xf232('0x1c')]=qs[_0xf232('0x1c')](_0x2d4080[_0xf232('0x35')][_0xf232('0x1c')]);_0x1095bc[_0xf232('0x1a')]=qs[_0xf232('0x1a')](_0x2d4080[_0xf232('0x35')]['offset']);}_0x1095bc[_0xf232('0x3c')]=qs['sort'](_0x2d4080[_0xf232('0x35')][_0xf232('0x3d')]);_0x1095bc[_0xf232('0x3e')]=qs[_0xf232('0x36')](_['pick'](_0x2d4080[_0xf232('0x35')],_0x2d997f['filters']));_0x1095bc[_0xf232('0x3e')][_0xf232('0xa2')]=_0xa68441['id'];if(_0x2d4080['query'][_0xf232('0x75')]){_0x1095bc[_0xf232('0x3e')]=_[_0xf232('0x8e')](_0x1095bc[_0xf232('0x3e')],{'$or':_[_0xf232('0x29')](_0x1095bc[_0xf232('0x37')],function(_0x11d865){var _0x49f87d={};_0x49f87d[_0x11d865]={'$like':'%'+_0x2d4080[_0xf232('0x35')]['filter']+'%'};return _0x49f87d;})});}if(_0x2d4080['query']['$gte']){var _0x5b5a82=_0x2d4080['query'][_0xf232('0xb1')]['split'](',');var _0x3e76d6={};_0x3e76d6[_0x5b5a82[0x0]]={'$gte':moment(_0x5b5a82[0x1])[_0xf232('0xb2')](_0xf232('0xb3'))};_0x1095bc[_0xf232('0x3e')]=_[_0xf232('0x8e')](_0x1095bc['where'],_0x3e76d6);}_0x1095bc=_[_0xf232('0x8e')]({},_0x1095bc,_0x2d4080['options']);return db['SmsMessage'][_0xf232('0x1d')]({'where':_0x1095bc[_0xf232('0x3e')]})[_0xf232('0x23')](function(_0x2f259e){_0x51ef09['count']=_0x2f259e;if(_0x2d4080[_0xf232('0x35')][_0xf232('0xa8')]){_0x1095bc[_0xf232('0xb4')]=[{'all':!![]}];}return db['SmsMessage'][_0xf232('0xb5')](_0x1095bc);})['then'](function(_0x40a687){_0x51ef09[_0xf232('0xa4')]=_0x40a687;return _0x51ef09;});}})[_0xf232('0x23')](respondWithFilteredResult(_0x39e372,_0x1095bc))['catch'](handleError(_0x39e372,null));};exports[_0xf232('0xb6')]=function(_0x125e07,_0x381f8c,_0x1ddd2f){return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x125e07[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x381f8c,null))[_0xf232('0x23')](function(_0x352874){if(_0x352874){return _0x352874[_0xf232('0xb7')](_0x125e07[_0xf232('0x65')][_0xf232('0xae')],_[_0xf232('0xb8')](_0x125e07[_0xf232('0x65')],[_0xf232('0xae'),'id'])||{})[_0xf232('0xb9')](function(){return db['Tag'][_0xf232('0xb5')]({'attributes':['id',_0xf232('0x26'),_0xf232('0xba')],'where':{'id':_0x125e07[_0xf232('0x65')]['ids']}});})['then'](function(_0x1bb8ef){socket[_0xf232('0xbb')](_0xf232('0xbc'),{'id':Number(_0x125e07[_0xf232('0xab')]['id']),'tags':_0x1bb8ef||[]});return{'id':Number(_0x125e07['params']['id']),'tags':_0x1bb8ef||[]};});}})['then'](respondWithResult(_0x381f8c,null))[_0xf232('0x30')](handleError(_0x381f8c,null));};exports[_0xf232('0xbd')]=function(_0x27e831,_0x7e9b7b,_0x2fff3a){return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x27e831['params']['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x7e9b7b,null))[_0xf232('0x23')](function(_0x219c03){if(_0x219c03){return _0x219c03[_0xf232('0xbd')](_0x27e831['query'][_0xf232('0xae')]);}})[_0xf232('0x23')](respondWithStatusCode(_0x7e9b7b,null))[_0xf232('0x30')](handleError(_0x7e9b7b,null));};exports['download']=function(_0x40273a,_0x3d4ff8){var _0x480fa9=moment()['unix']()[_0xf232('0x8d')]();var _0x324cba=path['join'](config[_0xf232('0xbe')],_0xf232('0xbf'),'files',_0xf232('0xc0'));var _0x35ad77=path['join'](config['root'],_0xf232('0xbf'),_0xf232('0xc1'),_0xf232('0xc2'));var _0x103cbe=path['join'](_0x324cba,_0x480fa9);var _0x4b5681=util[_0xf232('0xb2')](_0xf232('0xc3'),_0x40273a[_0xf232('0xab')]['id'],_0x480fa9);var _0x198a40=path['join'](_0x324cba,_0x4b5681);var _0x3c0a92=[];_0x3c0a92['push']({'model':db[_0xf232('0x61')],'as':_0xf232('0x61'),'attributes':['id',_0xf232('0x2a')],'raw':!![]});_0x3c0a92['push']({'model':db[_0xf232('0xc4')],'as':_0xf232('0xc5'),'attributes':['id',_0xf232('0xc6'),'lastName'],'raw':!![]});var _0x3c9b5f=[{'model':db[_0xf232('0xb0')],'as':_0xf232('0xc7'),'attributes':['id',_0xf232('0x65'),_0xf232('0xc8'),_0xf232('0xc9'),_0xf232('0xca'),_0xf232('0x6f')],'include':_0x3c0a92}];_0x3c9b5f['push']({'model':db[_0xf232('0xcb')],'as':'Account','attributes':['id','name']});_0x3c9b5f['push']({'model':db[_0xf232('0x61')],'as':_0xf232('0xcc'),'attributes':['id','fullname']});return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x40273a[_0xf232('0xab')]['id']},'include':_0x3c9b5f})['then'](handleEntityNotFound(_0x3d4ff8,null))[_0xf232('0x23')](function(_0x327b5d){if(_0x327b5d){var _0x4e9a65=_0x327b5d['get']({'plain':!![]});fs[_0xf232('0xcd')](_0x103cbe);var _0x40006d={'channel':_0xf232('0xce'),'account':_0x4e9a65[_0xf232('0xcf')]['name'],'agent':_0x4e9a65[_0xf232('0xcc')]?_0x4e9a65['Owner']['fullname']:_0xf232('0xd0'),'createdAt':moment(_0x4e9a65['createdAt'])[_0xf232('0xb2')](_0xf232('0xb3'))['toString'](),'closedAt':_0x4e9a65[_0xf232('0xd1')]?moment(_0x4e9a65[_0xf232('0xd2')])[_0xf232('0xb2')](_0xf232('0xb3'))[_0xf232('0x8d')]():'','disposition':_0x4e9a65[_0xf232('0xd3')],'messages':_(_0x4e9a65[_0xf232('0xc7')])[_0xf232('0x75')]({'secret':![]})[_0xf232('0x29')](function(_0x27a9ee){return{'date':moment(_0x27a9ee[_0xf232('0xc8')])[_0xf232('0xb2')](_0xf232('0xb3'))['toString'](),'sender':_0x27a9ee['direction']===_0xf232('0xd4')?_0x27a9ee['User']?_0x27a9ee['User'][_0xf232('0x2a')]:_0xf232('0xd5'):_0x27a9ee[_0xf232('0xc5')][_0xf232('0xc6')]+(_0x27a9ee[_0xf232('0xc5')][_0xf232('0xd6')]?'\x20'+_0x27a9ee[_0xf232('0xc5')][_0xf232('0xd6')]:''),'body':_0x27a9ee[_0xf232('0x65')],'direction':_0x27a9ee[_0xf232('0xc9')]===_0xf232('0xd4')?'A':'C','secret':_0x27a9ee[_0xf232('0xca')],'read':_0x27a9ee['read']};})[_0xf232('0x57')]()};return ejs[_0xf232('0xd7')](path[_0xf232('0xd8')](config['root'],_0xf232('0xbf'),_0xf232('0xd9'),'downloadInteraction.ejs'),{'interaction':_0x40006d})[_0xf232('0x23')](function(_0x3a127b){var _0x404260=path['join'](_0x103cbe,'transcript-'+_0x4e9a65['id']+'-'+_0x480fa9+'.pdf');var _0x596048={'path':_0x404260,'channel':_0xf232('0xce'),'interactionId':_0x4e9a65['id']};return pdf[_0xf232('0xda')](_0x3a127b,_0x596048);})[_0xf232('0x23')](function(){return new BPromise(function(_0x1b9911,_0x545829){zipdir(_0x103cbe,{'saveTo':_0x198a40},function(_0x59096b,_0x730386){if(_0x59096b)return _0x545829(_0x59096b);return _0x1b9911(_0x730386);});})[_0xf232('0x23')](function(){return new BPromise(function(_0x38cf82,_0x217028){rimraf(_0x103cbe,function(_0x354bd9){if(_0x354bd9)_0x217028(_0x354bd9);return _0x38cf82();});});})[_0xf232('0x23')](function(){return _0x3d4ff8['download'](_0x198a40,_0x4b5681,function(_0x354211){if(_0x354211){console[_0xf232('0xdb')](_0xf232('0xdc'),_0x354211);}else{fs[_0xf232('0xdd')](_0x198a40);}});});});}else{return _0x3d4ff8[_0xf232('0x16')](0xc8);}})['catch'](handleError(_0x3d4ff8,null));};
\ No newline at end of file
index 9f2ec6d..dda4264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','setMaxListeners','save','update','then','setDataValue','Users','map','findAll','unreadMessages','length','emit'];(function(_0x1ef4dc,_0x26c59e){var _0x2f8bb6=function(_0x571962){while(--_0x571962){_0x1ef4dc['push'](_0x1ef4dc['shift']());}};_0x2f8bb6(++_0x26c59e);}(_0xa456,0x142));var _0x6a45=function(_0x3ea913,_0x255df2){_0x3ea913=_0x3ea913-0x0;var _0x2b4f28=_0xa456[_0x3ea913];return _0x2b4f28;};'use strict';var EventEmitter=require(_0x6a45('0x0'));var SmsInteraction=require(_0x6a45('0x1'))['db'][_0x6a45('0x2')];var SmsMessage=require(_0x6a45('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x6a45('0x3')](0x0);var events={'afterCreate':_0x6a45('0x4'),'afterUpdate':_0x6a45('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1f0701){return function(_0x40acad,_0x1e5882,_0x14da6b){_0x40acad['getUsers']({'attributes':['id'],'raw':!![]})[_0x6a45('0x6')](function(_0x26bfc0){_0x40acad[_0x6a45('0x7')](_0x6a45('0x8'),_0x26bfc0[_0x6a45('0x9')](function(_0x4858df){return{'id':_0x4858df['id']};}));return SmsMessage[_0x6a45('0xa')]({'where':{'SmsInteractionId':_0x40acad['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x36378a){_0x40acad[_0x6a45('0x7')](_0x6a45('0xb'),_0x36378a[_0x6a45('0xc')]);SmsInteractionEvents[_0x6a45('0xd')](_0x1f0701+':'+_0x40acad['id'],_0x40acad);SmsInteractionEvents['emit'](_0x1f0701,_0x40acad);_0x14da6b(null);})['catch'](_0x14da6b(null));};}for(var e in events){if(events[_0x6a45('0xe')](e)){var event=events[e];SmsInteraction[_0x6a45('0xf')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x430c=['setMaxListeners','getUsers','setDataValue','Users','map','findAll','then','length','emit','catch','hook','events','../../mysqldb','SmsMessage'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x430c,0x1a1));var _0xc430=function(_0x15b380,_0x1a3c5f){_0x15b380=_0x15b380-0x0;var _0x232c5c=_0x430c[_0x15b380];return _0x232c5c;};'use strict';var EventEmitter=require(_0xc430('0x0'));var SmsInteraction=require('../../mysqldb')['db']['SmsInteraction'];var SmsMessage=require(_0xc430('0x1'))['db'][_0xc430('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xc430('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x47d8b9){return function(_0x338a82,_0x2408f5,_0x50b256){_0x338a82[_0xc430('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x212354){_0x338a82[_0xc430('0x5')](_0xc430('0x6'),_0x212354[_0xc430('0x7')](function(_0x2e23f8){return{'id':_0x2e23f8['id']};}));return SmsMessage[_0xc430('0x8')]({'where':{'SmsInteractionId':_0x338a82['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc430('0x9')](function(_0x115814){_0x338a82[_0xc430('0x5')]('unreadMessages',_0x115814[_0xc430('0xa')]);SmsInteractionEvents[_0xc430('0xb')](_0x47d8b9+':'+_0x338a82['id'],_0x338a82);SmsInteractionEvents['emit'](_0x47d8b9,_0x338a82);_0x50b256(null);})[_0xc430('0xc')](_0x50b256(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0xc430('0xd')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index 83f8251..ecf506a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29f0=['lodash','util','../../config/logger','request-promise','path','../../config/environment','exports','define','SmsInteraction','sms_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x523cab,_0x4e899b){var _0x55de76=function(_0x34a941){while(--_0x34a941){_0x523cab['push'](_0x523cab['shift']());}};_0x55de76(++_0x4e899b);}(_0x29f0,0x1c7));var _0x029f=function(_0x126752,_0x33ae69){_0x126752=_0x126752-0x0;var _0x304088=_0x29f0[_0x126752];return _0x304088;};'use strict';var _=require(_0x029f('0x0'));var util=require(_0x029f('0x1'));var logger=require(_0x029f('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x029f('0x3'));var fs=require('fs');var path=require(_0x029f('0x4'));var rimraf=require('rimraf');var config=require(_0x029f('0x5'));var attributes=require('./smsInteraction.attributes');module[_0x029f('0x6')]=function(_0x20956e,_0xa8a7f5){return _0x20956e[_0x029f('0x7')](_0x029f('0x8'),attributes,{'tableName':_0x029f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x163324,_0x180135,_0x1acaee){if(_0x163324['changed']('closed')){_0x163324[_0x029f('0xa')]=moment()[_0x029f('0xb')](_0x029f('0xc'));}_0x1acaee(null,_0x163324);}}});};
\ No newline at end of file
+var _0xc14a=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./smsInteraction.attributes','exports','SmsInteraction','sms_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x37eabb,_0x29ed58){var _0x1b7df3=function(_0xb86545){while(--_0xb86545){_0x37eabb['push'](_0x37eabb['shift']());}};_0x1b7df3(++_0x29ed58);}(_0xc14a,0x170));var _0xac14=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xc14a[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xac14('0x0'));var util=require(_0xac14('0x1'));var logger=require(_0xac14('0x2'))(_0xac14('0x3'));var moment=require(_0xac14('0x4'));var BPromise=require(_0xac14('0x5'));var rp=require(_0xac14('0x6'));var fs=require('fs');var path=require(_0xac14('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xac14('0x8'));module[_0xac14('0x9')]=function(_0x5bab5a,_0x5b0543){return _0x5bab5a['define'](_0xac14('0xa'),attributes,{'tableName':_0xac14('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4c227b,_0x584c02,_0x37817d){if(_0x4c227b[_0xac14('0xc')]('closed')){_0x4c227b[_0xac14('0xd')]=moment()[_0xac14('0xe')](_0xac14('0xf'));}_0x37817d(null,_0x4c227b);}}});};
\ No newline at end of file
index 2012844..55fb702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94da=['redis','localhost','request','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateSmsInteraction','body','raw','options','attributes','limit','then','AddTagsToSmsInteraction','SmsInteraction','find','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults'];(function(_0x19d41b,_0x2c6be5){var _0x530d5c=function(_0x1eb7cd){while(--_0x1eb7cd){_0x19d41b['push'](_0x19d41b['shift']());}};_0x530d5c(++_0x2c6be5);}(_0x94da,0xdc));var _0xa94d=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x94da[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xa94d('0x0'));var util=require(_0xa94d('0x1'));var moment=require(_0xa94d('0x2'));var BPromise=require(_0xa94d('0x3'));var rs=require(_0xa94d('0x4'));var fs=require('fs');var Redis=require(_0xa94d('0x5'));var db=require(_0xa94d('0x6'))['db'];var utils=require(_0xa94d('0x7'));var logger=require(_0xa94d('0x8'))(_0xa94d('0x9'));var config=require('../../config/environment');var jayson=require(_0xa94d('0xa'));var client=jayson[_0xa94d('0xb')][_0xa94d('0xc')]({'port':0x232a});config['redis']=_[_0xa94d('0xd')](config[_0xa94d('0xe')],{'host':_0xa94d('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa94d('0xe')]));require('./smsInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x374479,_0x54cbfc,_0x56dc99){return new BPromise(function(_0xc841f1,_0x14f4ae){return client[_0xa94d('0x10')](_0x374479,_0x56dc99)['then'](function(_0x3ac912){logger[_0xa94d('0x11')](_0xa94d('0x12'),_0x54cbfc,_0xa94d('0x13'));logger[_0xa94d('0x14')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x54cbfc,'request\x20sent',JSON[_0xa94d('0x15')](_0x3ac912));if(_0x3ac912[_0xa94d('0x16')]){if(_0x3ac912[_0xa94d('0x16')][_0xa94d('0x17')]===0x1f4){logger[_0xa94d('0x16')](_0xa94d('0x12'),_0x54cbfc,_0x3ac912[_0xa94d('0x16')][_0xa94d('0x18')]);return _0x14f4ae(_0x3ac912[_0xa94d('0x16')][_0xa94d('0x18')]);}logger[_0xa94d('0x16')](_0xa94d('0x12'),_0x54cbfc,_0x3ac912[_0xa94d('0x16')][_0xa94d('0x18')]);return _0xc841f1(_0x3ac912[_0xa94d('0x16')][_0xa94d('0x18')]);}else{logger['info'](_0xa94d('0x12'),_0x54cbfc,'request\x20sent');_0xc841f1(_0x3ac912[_0xa94d('0x19')]['message']);}})[_0xa94d('0x1a')](function(_0x38bb18){logger[_0xa94d('0x16')](_0xa94d('0x12'),_0x54cbfc,_0x38bb18);_0x14f4ae(_0x38bb18);});});}exports[_0xa94d('0x1b')]=function(_0x1a7a11){var _0x318d35=this;return new Promise(function(_0x3a307b,_0xe2cc35){return db['SmsInteraction']['update'](_0x1a7a11[_0xa94d('0x1c')],{'raw':_0x1a7a11['options']?_0x1a7a11['options'][_0xa94d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a7a11['options']?_0x1a7a11['options']['where']||null:null,'attributes':_0x1a7a11[_0xa94d('0x1e')]?_0x1a7a11['options'][_0xa94d('0x1f')]||null:null,'limit':_0x1a7a11['options']?_0x1a7a11[_0xa94d('0x1e')][_0xa94d('0x20')]||null:null})[_0xa94d('0x21')](function(_0x2528df){logger['info']('UpdateSmsInteraction',_0x1a7a11);logger[_0xa94d('0x14')](_0xa94d('0x1b'),_0x1a7a11,JSON[_0xa94d('0x15')](_0x2528df));_0x3a307b(_0x2528df);})[_0xa94d('0x1a')](function(_0x547238){logger[_0xa94d('0x16')](_0xa94d('0x1b'),_0x547238['message'],_0x1a7a11);_0xe2cc35(_0x318d35[_0xa94d('0x16')](0x1f4,_0x547238[_0xa94d('0x18')]));});});};exports[_0xa94d('0x22')]=function(_0x5eb98f){return new Promise(function(_0x1d5284,_0x3e24cd){return db[_0xa94d('0x23')][_0xa94d('0x24')]({'where':_0x5eb98f[_0xa94d('0x1e')]?_0x5eb98f[_0xa94d('0x1e')]['where']||null:null})[_0xa94d('0x21')](function(_0x4d4160){if(_0x4d4160){return _0x4d4160['addTags'](_0x5eb98f['body']['ids'],_['omit'](_0x5eb98f[_0xa94d('0x1c')],['ids','id'])||{});}})[_0xa94d('0x25')](function(_0x1e9054){logger[_0xa94d('0x11')]('AddTags',_0x5eb98f);logger[_0xa94d('0x14')](_0xa94d('0x26'),_0x5eb98f,JSON[_0xa94d('0x15')](_0x1e9054));_0x1d5284(_0x1e9054);})['catch'](function(_0x746e03){logger[_0xa94d('0x16')](_0xa94d('0x26'),_0x746e03[_0xa94d('0x18')],_0x5eb98f);_0x3e24cd(_this['error'](0x1f4,_0x746e03[_0xa94d('0x18')]));});});};
\ No newline at end of file
+var _0x16a0=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SmsInteraction','update','body','options','raw','where','limit','UpdateSmsInteraction','addTags','ids','omit','spread','lodash','util','moment','bluebird'];(function(_0x5d2792,_0x5d4e66){var _0x4921b6=function(_0x41ae67){while(--_0x41ae67){_0x5d2792['push'](_0x5d2792['shift']());}};_0x4921b6(++_0x5d4e66);}(_0x16a0,0x16d));var _0x016a=function(_0x561fa1,_0x4386c5){_0x561fa1=_0x561fa1-0x0;var _0x35267f=_0x16a0[_0x561fa1];return _0x35267f;};'use strict';var _=require(_0x016a('0x0'));var util=require(_0x016a('0x1'));var moment=require(_0x016a('0x2'));var BPromise=require(_0x016a('0x3'));var rs=require(_0x016a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x016a('0x5'))['db'];var utils=require(_0x016a('0x6'));var logger=require(_0x016a('0x7'))(_0x016a('0x8'));var config=require(_0x016a('0x9'));var jayson=require(_0x016a('0xa'));var client=jayson['client'][_0x016a('0xb')]({'port':0x232a});config[_0x016a('0xc')]=_[_0x016a('0xd')](config['redis'],{'host':_0x016a('0xe'),'port':0x18eb});var socket=require(_0x016a('0xf'))(new Redis(config[_0x016a('0xc')]));require('./smsInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x5c7a84,_0x28a166,_0x151529){return new BPromise(function(_0x2dd2b1,_0x385f8f){return client[_0x016a('0x10')](_0x5c7a84,_0x151529)[_0x016a('0x11')](function(_0x242d9c){logger[_0x016a('0x12')](_0x016a('0x13'),_0x28a166,_0x016a('0x14'));logger[_0x016a('0x15')](_0x016a('0x16'),_0x28a166,'request\x20sent',JSON[_0x016a('0x17')](_0x242d9c));if(_0x242d9c['error']){if(_0x242d9c[_0x016a('0x18')][_0x016a('0x19')]===0x1f4){logger[_0x016a('0x18')](_0x016a('0x13'),_0x28a166,_0x242d9c['error']['message']);return _0x385f8f(_0x242d9c[_0x016a('0x18')]['message']);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x28a166,_0x242d9c[_0x016a('0x18')][_0x016a('0x1a')]);return _0x2dd2b1(_0x242d9c[_0x016a('0x18')][_0x016a('0x1a')]);}else{logger[_0x016a('0x12')](_0x016a('0x13'),_0x28a166,_0x016a('0x14'));_0x2dd2b1(_0x242d9c[_0x016a('0x1b')][_0x016a('0x1a')]);}})[_0x016a('0x1c')](function(_0x2578e9){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x28a166,_0x2578e9);_0x385f8f(_0x2578e9);});});}exports['UpdateSmsInteraction']=function(_0x20000b){var _0x5393e9=this;return new Promise(function(_0x34f711,_0xf2dea7){return db[_0x016a('0x1d')][_0x016a('0x1e')](_0x20000b[_0x016a('0x1f')],{'raw':_0x20000b[_0x016a('0x20')]?_0x20000b[_0x016a('0x20')][_0x016a('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20000b[_0x016a('0x20')]?_0x20000b['options'][_0x016a('0x22')]||null:null,'attributes':_0x20000b[_0x016a('0x20')]?_0x20000b[_0x016a('0x20')]['attributes']||null:null,'limit':_0x20000b[_0x016a('0x20')]?_0x20000b[_0x016a('0x20')][_0x016a('0x23')]||null:null})['then'](function(_0x18bcc4){logger['info']('UpdateSmsInteraction',_0x20000b);logger[_0x016a('0x15')](_0x016a('0x24'),_0x20000b,JSON['stringify'](_0x18bcc4));_0x34f711(_0x18bcc4);})['catch'](function(_0x4dd1db){logger[_0x016a('0x18')](_0x016a('0x24'),_0x4dd1db[_0x016a('0x1a')],_0x20000b);_0xf2dea7(_0x5393e9[_0x016a('0x18')](0x1f4,_0x4dd1db[_0x016a('0x1a')]));});});};exports['AddTagsToSmsInteraction']=function(_0x8a7612){return new Promise(function(_0x20123a,_0x85deb5){return db[_0x016a('0x1d')]['find']({'where':_0x8a7612[_0x016a('0x20')]?_0x8a7612[_0x016a('0x20')][_0x016a('0x22')]||null:null})['then'](function(_0x44ce5b){if(_0x44ce5b){return _0x44ce5b[_0x016a('0x25')](_0x8a7612[_0x016a('0x1f')][_0x016a('0x26')],_[_0x016a('0x27')](_0x8a7612[_0x016a('0x1f')],[_0x016a('0x26'),'id'])||{});}})[_0x016a('0x28')](function(_0x2718e4){logger['info']('AddTags',_0x8a7612);logger[_0x016a('0x15')]('AddTags',_0x8a7612,JSON[_0x016a('0x17')](_0x2718e4));_0x20123a(_0x2718e4);})[_0x016a('0x1c')](function(_0x4232a9){logger[_0x016a('0x18')]('AddTags',_0x4232a9[_0x016a('0x1a')],_0x8a7612);_0x85deb5(_this[_0x016a('0x18')](0x1f4,_0x4232a9['message']));});});};
\ No newline at end of file
index 6f92dc8..f458bc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6853=['remove','update','emit','removeListener','register','./smsInteraction.events'];(function(_0x44cb52,_0x72fc8){var _0x389f92=function(_0xa5bad8){while(--_0xa5bad8){_0x44cb52['push'](_0x44cb52['shift']());}};_0x389f92(++_0x72fc8);}(_0x6853,0x6b));var _0x3685=function(_0x83d05e,_0xdcfd0d){_0x83d05e=_0x83d05e-0x0;var _0x5d5a2b=_0x6853[_0x83d05e];return _0x5d5a2b;};'use strict';var SmsInteractionEvents=require(_0x3685('0x0'));var events=['save',_0x3685('0x1'),_0x3685('0x2')];function createListener(_0x274bba,_0xc8f327){return function(_0x442ae0){_0xc8f327[_0x3685('0x3')](_0x274bba,_0x442ae0);};}function removeListener(_0x76b4f5,_0x494a70){return function(){SmsInteractionEvents[_0x3685('0x4')](_0x76b4f5,_0x494a70);};}exports[_0x3685('0x5')]=function(_0xeb35ec){for(var _0x5aafdf=0x0,_0x49c934=events['length'];_0x5aafdf<_0x49c934;_0x5aafdf++){var _0x179e22=events[_0x5aafdf];var _0x5eb3fa=createListener('smsInteraction:'+_0x179e22,_0xeb35ec);SmsInteractionEvents['on'](_0x179e22,_0x5eb3fa);}};
\ No newline at end of file
+var _0x9a73=['register','length','save','update','emit'];(function(_0x19cbe6,_0x7b8f45){var _0x314be4=function(_0x2f4034){while(--_0x2f4034){_0x19cbe6['push'](_0x19cbe6['shift']());}};_0x314be4(++_0x7b8f45);}(_0x9a73,0x70));var _0x39a7=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x9a73[_0x13d07a];return _0x5ee0ee;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x39a7('0x0'),'remove',_0x39a7('0x1')];function createListener(_0x52649b,_0x5ea744){return function(_0x2e5918){_0x5ea744[_0x39a7('0x2')](_0x52649b,_0x2e5918);};}function removeListener(_0x1c9c60,_0x5dbf2e){return function(){SmsInteractionEvents['removeListener'](_0x1c9c60,_0x5dbf2e);};}exports[_0x39a7('0x3')]=function(_0x37e319){for(var _0x4a1a65=0x0,_0x251697=events[_0x39a7('0x4')];_0x4a1a65<_0x251697;_0x4a1a65++){var _0x2d27bd=events[_0x4a1a65];var _0x30d9b8=createListener('smsInteraction:'+_0x2d27bd,_0x37e319);SmsInteractionEvents['on'](_0x2d27bd,_0x30d9b8);}};
\ No newline at end of file
index 4be3209..fc3508a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cda=['smsmessage:create','create','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','tracked','sms'];(function(_0x38d2a9,_0x1d59f8){var _0x321ff0=function(_0x568392){while(--_0x568392){_0x38d2a9['push'](_0x38d2a9['shift']());}};_0x321ff0(++_0x1d59f8);}(_0x0cda,0x80));var _0xa0cd=function(_0x2a993a,_0x1b2b34){_0x2a993a=_0x2a993a-0x0;var _0xdfd3ed=_0x0cda[_0x2a993a];return _0xdfd3ed;};'use strict';var multer=require(_0xa0cd('0x0'));var util=require(_0xa0cd('0x1'));var path=require(_0xa0cd('0x2'));var timeout=require('connect-timeout');var express=require(_0xa0cd('0x3'));var router=express[_0xa0cd('0x4')]();var fs_extra=require(_0xa0cd('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa0cd('0x6'));var config=require('../../config/environment');var controller=require(_0xa0cd('0x7'));router[_0xa0cd('0x8')]('/',auth[_0xa0cd('0x9')](),controller[_0xa0cd('0xa')]);router[_0xa0cd('0x8')](_0xa0cd('0xb'),auth[_0xa0cd('0x9')](),controller[_0xa0cd('0xc')]);router[_0xa0cd('0x8')](_0xa0cd('0xd'),auth[_0xa0cd('0x9')](),controller[_0xa0cd('0xe')]);router['post']('/',auth[_0xa0cd('0x9')](),interaction[_0xa0cd('0xf')](_0xa0cd('0x10'),_0xa0cd('0x11')),controller[_0xa0cd('0x12')]);router['post']('/:id/status',controller[_0xa0cd('0x13')]);router[_0xa0cd('0x14')](_0xa0cd('0xd'),auth[_0xa0cd('0x9')](),controller[_0xa0cd('0x15')]);router[_0xa0cd('0x14')](_0xa0cd('0x16'),auth[_0xa0cd('0x9')](),controller[_0xa0cd('0x17')]);router[_0xa0cd('0x14')](_0xa0cd('0x18'),auth[_0xa0cd('0x9')](),controller[_0xa0cd('0x19')]);router[_0xa0cd('0x1a')](_0xa0cd('0xd'),auth['isAuthenticated'](),controller[_0xa0cd('0x1b')]);module[_0xa0cd('0x1c')]=router;
\ No newline at end of file
+var _0xd934=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','index','isAuthenticated','describe','/:id','show','post','tracked','create','/:id/status','status','put','/:id/accept','accept','/:id/reject','delete','destroy'];(function(_0x500328,_0x229d87){var _0x56bef7=function(_0x191b7d){while(--_0x191b7d){_0x500328['push'](_0x500328['shift']());}};_0x56bef7(++_0x229d87);}(_0xd934,0x15d));var _0x4d93=function(_0x4fb57a,_0xb3a6b8){_0x4fb57a=_0x4fb57a-0x0;var _0x387a8a=_0xd934[_0x4fb57a];return _0x387a8a;};'use strict';var multer=require(_0x4d93('0x0'));var util=require(_0x4d93('0x1'));var path=require(_0x4d93('0x2'));var timeout=require(_0x4d93('0x3'));var express=require(_0x4d93('0x4'));var router=express[_0x4d93('0x5')]();var fs_extra=require(_0x4d93('0x6'));var auth=require(_0x4d93('0x7'));var interaction=require(_0x4d93('0x8'));var config=require(_0x4d93('0x9'));var controller=require(_0x4d93('0xa'));router[_0x4d93('0xb')]('/',auth['isAuthenticated'](),controller[_0x4d93('0xc')]);router[_0x4d93('0xb')]('/describe',auth[_0x4d93('0xd')](),controller[_0x4d93('0xe')]);router[_0x4d93('0xb')](_0x4d93('0xf'),auth[_0x4d93('0xd')](),controller[_0x4d93('0x10')]);router[_0x4d93('0x11')]('/',auth[_0x4d93('0xd')](),interaction[_0x4d93('0x12')]('sms','smsmessage:create'),controller[_0x4d93('0x13')]);router['post'](_0x4d93('0x14'),controller[_0x4d93('0x15')]);router[_0x4d93('0x16')](_0x4d93('0xf'),auth[_0x4d93('0xd')](),controller['update']);router[_0x4d93('0x16')](_0x4d93('0x17'),auth[_0x4d93('0xd')](),controller[_0x4d93('0x18')]);router[_0x4d93('0x16')](_0x4d93('0x19'),auth[_0x4d93('0xd')](),controller['reject']);router[_0x4d93('0x1a')](_0x4d93('0xf'),auth['isAuthenticated'](),controller[_0x4d93('0x1b')]);module[_0x4d93('0x1c')]=router;
\ No newline at end of file
index 2259f6f..8f9f196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0233=['TEXT','medium','BOOLEAN','out','STRING','sequelize','exports'];(function(_0x5043a9,_0x5e5d50){var _0x32e792=function(_0x546f90){while(--_0x546f90){_0x5043a9['push'](_0x5043a9['shift']());}};_0x32e792(++_0x5e5d50);}(_0x0233,0x1b0));var _0x3023=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0x0233[_0x580647];return _0x5f0792;};'use strict';var Sequelize=require(_0x3023('0x0'));module[_0x3023('0x1')]={'body':{'type':Sequelize[_0x3023('0x2')](_0x3023('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x3023('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x3023('0x5')),'defaultValue':_0x3023('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3023('0x6')](0xbe)},'phone':{'type':Sequelize[_0x3023('0x6')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x3023('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3023('0x6')]},'providerResponse':{'type':Sequelize[_0x3023('0x2')]}};
\ No newline at end of file
+var _0x87fe=['STRING','DATE','TEXT','BOOLEAN','out'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0x87fe,0x1ec));var _0xe87f=function(_0x293a6b,_0x3b9ede){_0x293a6b=_0x293a6b-0x0;var _0x2d371c=_0x87fe[_0x293a6b];return _0x2d371c;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0xe87f('0x0')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xe87f('0x1')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xe87f('0x2'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe87f('0x3')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xe87f('0x4')]},'secret':{'type':Sequelize[_0xe87f('0x1')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe87f('0x3')]},'providerResponse':{'type':Sequelize[_0xe87f('0x0')]}};
\ No newline at end of file
index 8be2e98..12c95aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x724c=['MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','DELIVERED','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./smsMessage.socket','register','jayson/promise','client','http','request','then','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','stack','name','send','map','SmsMessage','rawAttributes','fieldName','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','keys','find','create','body','describe','sms-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','agent','fullname','internal','manual','interface','channel','EventManager','reject','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','User','email','rejectmessage','SmsAccountId','type','inspect','twilio'];(function(_0x321613,_0x39a4dc){var _0x23595f=function(_0x31b645){while(--_0x31b645){_0x321613['push'](_0x321613['shift']());}};_0x23595f(++_0x39a4dc);}(_0x724c,0x1c7));var _0xc724=function(_0xa7e359,_0x59d9a4){_0xa7e359=_0xa7e359-0x0;var _0x142f6d=_0x724c[_0xa7e359];return _0x142f6d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc724('0x0'));var zipdir=require(_0xc724('0x1'));var jsonpatch=require(_0xc724('0x2'));var rp=require('request-promise');var moment=require(_0xc724('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc724('0x4'));var util=require('util');var path=require(_0xc724('0x5'));var sox=require(_0xc724('0x6'));var csv=require('to-csv');var ejs=require(_0xc724('0x7'));var fs=require('fs');var fs_extra=require(_0xc724('0x8'));var _=require('lodash');var squel=require(_0xc724('0x9'));var crypto=require(_0xc724('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc724('0xb'));var toCsv=require(_0xc724('0xc'));var querystring=require(_0xc724('0xd'));var Papa=require(_0xc724('0xe'));var Redis=require(_0xc724('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc724('0x10'));var as=require(_0xc724('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc724('0x12'))('api');var utils=require(_0xc724('0x13'));var config=require(_0xc724('0x14'));var licenseUtil=require(_0xc724('0x15'));var db=require(_0xc724('0x16'))['db'];config[_0xc724('0x17')]=_['defaults'](config[_0xc724('0x17')],{'host':_0xc724('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc724('0x17')]));require(_0xc724('0x19'))[_0xc724('0x1a')](socket);var jayson=require(_0xc724('0x1b'));var client=jayson[_0xc724('0x1c')][_0xc724('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0xc724('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x278453,_0x116977,_0x1899f4,_0x8c654e){return new BPromise(function(_0x32eedf,_0x5ccc66){var _0x551c1f=_0x8c654e||client;return _0x551c1f[_0xc724('0x1e')](_0x278453,_0x1899f4)[_0xc724('0x1f')](function(_0x5987b8){logger['info']('SmsMessage,\x20%s,\x20%s',_0x116977,_0xc724('0x20'));logger[_0xc724('0x21')](_0xc724('0x22'),_0x116977,'request\x20sent',JSON[_0xc724('0x23')](_0x5987b8));if(_0x5987b8[_0xc724('0x24')]){if(_0x5987b8[_0xc724('0x24')][_0xc724('0x25')]===0x1f4){logger['error'](_0xc724('0x26'),_0x116977,_0x5987b8['error'][_0xc724('0x27')]);return _0x5ccc66(_0x5987b8[_0xc724('0x24')]['message']);}logger[_0xc724('0x24')](_0xc724('0x26'),_0x116977,_0x5987b8['error'][_0xc724('0x27')]);return _0x32eedf(_0x5987b8['error'][_0xc724('0x27')]);}else{logger['info'](_0xc724('0x26'),_0x116977,_0xc724('0x20'));_0x32eedf(_0x5987b8[_0xc724('0x28')][_0xc724('0x27')]);}})[_0xc724('0x29')](function(_0x56a9f9){logger[_0xc724('0x24')](_0xc724('0x26'),_0x116977,_0x56a9f9);_0x5ccc66(_0x56a9f9);});});}function respondWithStatusCode(_0x50c889,_0x537939){_0x537939=_0x537939||0xcc;return function(_0x408d76){if(_0x408d76){return _0x50c889[_0xc724('0x2a')](_0x537939);}return _0x50c889['status'](_0x537939)[_0xc724('0x2b')]();};}function respondWithResult(_0x2cbb10,_0x3801cb){_0x3801cb=_0x3801cb||0xc8;return function(_0x38e14){if(_0x38e14){return _0x2cbb10[_0xc724('0x2c')](_0x3801cb)[_0xc724('0x2d')](_0x38e14);}};}function respondWithFilteredResult(_0x2dfe30,_0x535522){return function(_0x293bef){if(_0x293bef){var _0x3ac791=typeof _0x535522[_0xc724('0x2e')]===_0xc724('0x2f')&&typeof _0x535522[_0xc724('0x30')]===_0xc724('0x2f');var _0x55b689=_0x293bef[_0xc724('0x31')];var _0x3b3afc=_0x3ac791?0x0:_0x535522[_0xc724('0x2e')];var _0x364a53=_0x3ac791?_0x293bef[_0xc724('0x31')]:_0x535522[_0xc724('0x2e')]+_0x535522['limit'];var _0x3bcc5f;if(_0x364a53>=_0x55b689){_0x364a53=_0x55b689;_0x3bcc5f=0xc8;}else{_0x3bcc5f=0xce;}_0x2dfe30[_0xc724('0x2c')](_0x3bcc5f);return _0x2dfe30[_0xc724('0x32')](_0xc724('0x33'),_0x3b3afc+'-'+_0x364a53+'/'+_0x55b689)['json'](_0x293bef);}return null;};}function patchUpdates(_0x59706a){return function(_0x4c111a){try{jsonpatch[_0xc724('0x34')](_0x4c111a,_0x59706a,!![]);}catch(_0x8e8f42){return BPromise['reject'](_0x8e8f42);}return _0x4c111a[_0xc724('0x35')]();};}function saveUpdates(_0x44a184,_0xace185){return function(_0x26b191){if(_0x26b191){return _0x26b191[_0xc724('0x36')](_0x44a184)[_0xc724('0x1f')](function(_0xa8609e){return _0xa8609e;});}return null;};}function removeEntity(_0x2e64c9,_0x28ea19){return function(_0x1f7b95){if(_0x1f7b95){return _0x1f7b95[_0xc724('0x37')]()[_0xc724('0x1f')](function(){_0x2e64c9[_0xc724('0x2c')](0xcc)[_0xc724('0x2b')]();});}};}function handleEntityNotFound(_0x1e1559,_0x2b2386){return function(_0x39ab50){if(!_0x39ab50){_0x1e1559[_0xc724('0x2a')](0x194);}return _0x39ab50;};}function handleError(_0x404add,_0x56f743){_0x56f743=_0x56f743||0x1f4;return function(_0x26493e){logger[_0xc724('0x24')](_0x26493e[_0xc724('0x38')]);if(_0x26493e['name']){delete _0x26493e[_0xc724('0x39')];}_0x404add['status'](_0x56f743)[_0xc724('0x3a')](_0x26493e);};}exports['index']=function(_0x4ae86a,_0x1d3605){var _0x2aa9f9={},_0x1a3357={},_0x16daa6={'count':0x0,'rows':[]};var _0x40ab6e=_[_0xc724('0x3b')](db[_0xc724('0x3c')][_0xc724('0x3d')],function(_0x3d84d9){return{'name':_0x3d84d9[_0xc724('0x3e')],'type':_0x3d84d9['type']['key']};});_0x1a3357['model']=_[_0xc724('0x3b')](_0x40ab6e,_0xc724('0x39'));_0x1a3357[_0xc724('0x3f')]=_['keys'](_0x4ae86a[_0xc724('0x3f')]);_0x1a3357[_0xc724('0x40')]=_[_0xc724('0x41')](_0x1a3357[_0xc724('0x42')],_0x1a3357[_0xc724('0x3f')]);_0x2aa9f9[_0xc724('0x43')]=_[_0xc724('0x41')](_0x1a3357[_0xc724('0x42')],qs['fields'](_0x4ae86a['query'][_0xc724('0x44')]));_0x2aa9f9['attributes']=_0x2aa9f9[_0xc724('0x43')][_0xc724('0x45')]?_0x2aa9f9[_0xc724('0x43')]:_0x1a3357['model'];if(!_0x4ae86a[_0xc724('0x3f')][_0xc724('0x46')](_0xc724('0x47'))){_0x2aa9f9[_0xc724('0x30')]=qs[_0xc724('0x30')](_0x4ae86a[_0xc724('0x3f')][_0xc724('0x30')]);_0x2aa9f9[_0xc724('0x2e')]=qs[_0xc724('0x2e')](_0x4ae86a['query']['offset']);}_0x2aa9f9[_0xc724('0x48')]=qs[_0xc724('0x49')](_0x4ae86a['query'][_0xc724('0x49')]);_0x2aa9f9[_0xc724('0x4a')]=qs['filters'](_[_0xc724('0x4b')](_0x4ae86a[_0xc724('0x3f')],_0x1a3357[_0xc724('0x40')]),_0x40ab6e);if(_0x4ae86a[_0xc724('0x3f')][_0xc724('0x4c')]){_0x2aa9f9[_0xc724('0x4a')]=_[_0xc724('0x4d')](_0x2aa9f9[_0xc724('0x4a')],{'$or':_[_0xc724('0x3b')](_0x40ab6e,function(_0xc48253){if(_0xc48253['type']!==_0xc724('0x4e')){var _0x8d6399={};_0x8d6399[_0xc48253[_0xc724('0x39')]]={'$like':'%'+_0x4ae86a[_0xc724('0x3f')]['filter']+'%'};return _0x8d6399;}})});}_0x2aa9f9=_['merge']({},_0x2aa9f9,_0x4ae86a[_0xc724('0x4f')]);var _0x4d20bc={'where':_0x2aa9f9[_0xc724('0x4a')]};return db[_0xc724('0x3c')][_0xc724('0x31')](_0x4d20bc)[_0xc724('0x1f')](function(_0x4ae142){_0x16daa6[_0xc724('0x31')]=_0x4ae142;if(_0x4ae86a[_0xc724('0x3f')][_0xc724('0x50')]){_0x2aa9f9[_0xc724('0x51')]=[{'all':!![]}];}return db['SmsMessage']['findAll'](_0x2aa9f9);})[_0xc724('0x1f')](function(_0x60030c){_0x16daa6[_0xc724('0x52')]=_0x60030c;return _0x16daa6;})[_0xc724('0x1f')](respondWithFilteredResult(_0x1d3605,_0x2aa9f9))['catch'](handleError(_0x1d3605,null));};exports[_0xc724('0x53')]=function(_0x1b0ce6,_0x2b7d3){var _0x213a28={'raw':!![],'where':{'id':_0x1b0ce6[_0xc724('0x54')]['id']}},_0x39ad90={};_0x39ad90[_0xc724('0x42')]=_[_0xc724('0x55')](db[_0xc724('0x3c')][_0xc724('0x3d')]);_0x39ad90['query']=_['keys'](_0x1b0ce6[_0xc724('0x3f')]);_0x39ad90['filters']=_[_0xc724('0x41')](_0x39ad90[_0xc724('0x42')],_0x39ad90['query']);_0x213a28[_0xc724('0x43')]=_[_0xc724('0x41')](_0x39ad90['model'],qs[_0xc724('0x44')](_0x1b0ce6['query'][_0xc724('0x44')]));_0x213a28[_0xc724('0x43')]=_0x213a28['attributes'][_0xc724('0x45')]?_0x213a28[_0xc724('0x43')]:_0x39ad90[_0xc724('0x42')];if(_0x1b0ce6[_0xc724('0x3f')][_0xc724('0x50')]){_0x213a28[_0xc724('0x51')]=[{'all':!![]}];}_0x213a28=_['merge']({},_0x213a28,_0x1b0ce6['options']);return db['SmsMessage'][_0xc724('0x56')](_0x213a28)[_0xc724('0x1f')](handleEntityNotFound(_0x2b7d3,null))[_0xc724('0x1f')](respondWithResult(_0x2b7d3,null))[_0xc724('0x29')](handleError(_0x2b7d3,null));};exports[_0xc724('0x57')]=function(_0x66c222,_0x20e7b7){return db[_0xc724('0x3c')][_0xc724('0x57')](_0x66c222[_0xc724('0x58')],{})[_0xc724('0x1f')](respondWithResult(_0x20e7b7,0xc9))[_0xc724('0x29')](handleError(_0x20e7b7,null));};exports['update']=function(_0x578447,_0x5115da){if(_0x578447['body']['id']){delete _0x578447['body']['id'];}return db['SmsMessage']['find']({'where':{'id':_0x578447[_0xc724('0x54')]['id']}})[_0xc724('0x1f')](handleEntityNotFound(_0x5115da,null))['then'](saveUpdates(_0x578447['body'],null))['then'](respondWithResult(_0x5115da,null))[_0xc724('0x29')](handleError(_0x5115da,null));};exports[_0xc724('0x37')]=function(_0x46353c,_0x55a2b1){return db['SmsMessage']['find']({'where':{'id':_0x46353c[_0xc724('0x54')]['id']}})[_0xc724('0x1f')](handleEntityNotFound(_0x55a2b1,null))[_0xc724('0x1f')](removeEntity(_0x55a2b1,null))['catch'](handleError(_0x55a2b1,null));};exports[_0xc724('0x59')]=function(_0x26b06e,_0x429b72){return db['SmsMessage'][_0xc724('0x59')]()[_0xc724('0x1f')](respondWithResult(_0x429b72,null))[_0xc724('0x29')](handleError(_0x429b72,null));};var interaction_log=require(_0xc724('0x12'))(_0xc724('0x5a'));exports[_0xc724('0x5b')]=function(_0x924ce4,_0x4b3b28,_0xe0042a){var _0x559bb9={'agent':{},'channel':'sms'};if(_0x924ce4[_0xc724('0x58')]['id']){delete _0x924ce4[_0xc724('0x58')]['id'];}_0x924ce4[_0xc724('0x58')][_0xc724('0x5c')]=!![];_0x924ce4[_0xc724('0x58')]['readAt']=moment()[_0xc724('0x5d')](_0xc724('0x5e'));_0x924ce4[_0xc724('0x58')][_0xc724('0x5f')]=_0x924ce4[_0xc724('0x58')][_0xc724('0x5f')]||_0x924ce4['user']['id'];_0x559bb9['agent']['id']=_0x924ce4[_0xc724('0x58')][_0xc724('0x5f')];return db['SmsMessage'][_0xc724('0x56')]({'where':{'id':_0x924ce4[_0xc724('0x54')]['id'],'UserId':null}})[_0xc724('0x1f')](handleEntityNotFound(_0x4b3b28,null))[_0xc724('0x1f')](saveUpdates(_0x924ce4[_0xc724('0x58')],null))[_0xc724('0x1f')](function(_0x157ee2){if(_0x157ee2){_0x559bb9[_0xc724('0x27')]=_0x157ee2[_0xc724('0x60')]({'plain':!![]});return db[_0xc724('0x61')][_0xc724('0x56')]({'where':{'id':_0x157ee2[_0xc724('0x62')]}});}return null;})[_0xc724('0x1f')](handleEntityNotFound(_0x4b3b28,null))[_0xc724('0x1f')](function(_0x8b64e){if(_0x8b64e){return _0x8b64e[_0xc724('0x36')]({'UserId':_0x924ce4[_0xc724('0x58')][_0xc724('0x5f')],'read1stAt':_[_0xc724('0x63')](_0x8b64e[_0xc724('0x64')])?moment()[_0xc724('0x5d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xc724('0x1f')](function(_0x5db980){if(_0x5db980){_0x559bb9[_0xc724('0x65')]=_0x5db980['get']({'plain':!![]});interaction_log[_0xc724('0x66')](_0xc724('0x67'),_0x924ce4[_0xc724('0x68')]['id'],_0x924ce4['user'][_0xc724('0x39')],_0x924ce4[_0xc724('0x68')][_0xc724('0x69')],_0x559bb9[_0xc724('0x65')]['id'],_0x924ce4[_0xc724('0x58')]?JSON[_0xc724('0x23')](_0x924ce4[_0xc724('0x58')]):'null');return respondWithRpcPromise(_0xc724('0x6a'),_0xc724('0x6b'),_0x559bb9);}return null;})[_0xc724('0x1f')](function(_0x3fbb2b){var _0x387047=_0xc724('0x6c')+_0x3fbb2b[_0xc724('0x27')][_0xc724('0x6d')];return db[_0xc724('0x6e')]['query'](_0x387047,{'type':db[_0xc724('0x6f')][_0xc724('0x70')][_0xc724('0x71')],'raw':!![]})[_0xc724('0x1f')](function(_0xe0caec){return _0xe0caec;});})['then'](function(_0x22c704){if(_0x22c704){_0x559bb9['message'][_0xc724('0x72')]=_0x22c704[0x0];if(!_0x924ce4['body']['UserId'])return;return db['User'][_0xc724('0x56')]({'where':{'id':_0x924ce4[_0xc724('0x58')][_0xc724('0x5f')],'role':_0xc724('0x73')},'attributes':['id',_0xc724('0x39'),_0xc724('0x74'),'email',_0xc724('0x75')],'raw':!![]});}return null;})['then'](function(_0x28b01a){if(!_0x28b01a)return null;_0x559bb9[_0xc724('0x27')][_0xc724('0x73')]=_0x28b01a;return _0x559bb9;})[_0xc724('0x1f')](function(_0x3fd6b2){if(_0x3fd6b2){if(_0x924ce4[_0xc724('0x58')][_0xc724('0x76')]){_0x559bb9[_0xc724('0x27')][_0xc724('0x77')]=util['format']('SIP/%s',_0x924ce4[_0xc724('0x68')][_0xc724('0x39')]);_0x559bb9[_0xc724('0x27')][_0xc724('0x78')]=_0x559bb9['channel'];_0x559bb9[_0xc724('0x27')]['event']=_0xc724('0x5b');return respondWithRpcPromise(_0xc724('0x79'),'EventManager',{'event':'acceptmessage','message':_0x559bb9[_0xc724('0x27')]},client9002)['then'](function(){return _0x559bb9;});}return _0x559bb9;}return null;})['then'](respondWithResult(_0x4b3b28,null))[_0xc724('0x29')](handleError(_0x4b3b28,null));};var interaction_log=require(_0xc724('0x12'))('sms-interactions');exports[_0xc724('0x7a')]=function(_0x1fadca,_0x263f8b,_0x341882){var _0x326855={'agent':{},'channel':'sms'};if(_0x1fadca['body']['id']){delete _0x1fadca[_0xc724('0x58')]['id'];}_0x1fadca['body']['UserId']=_0x1fadca[_0xc724('0x58')][_0xc724('0x5f')]||_0x1fadca[_0xc724('0x68')]['id'];_0x326855['agent']['id']=_0x1fadca[_0xc724('0x58')]['UserId'];return db['SmsMessage'][_0xc724('0x56')]({'where':{'id':_0x1fadca['params']['id'],'UserId':null}})[_0xc724('0x1f')](handleEntityNotFound(_0x263f8b,null))[_0xc724('0x1f')](function(_0x194ac8){if(_0x194ac8){_0x326855['message']=_0x194ac8[_0xc724('0x60')]({'plain':!![]});return db['SmsInteraction'][_0xc724('0x56')]({'where':{'id':_0x194ac8['SmsInteractionId']}});}return null;})[_0xc724('0x1f')](handleEntityNotFound(_0x263f8b,null))[_0xc724('0x1f')](function(_0x3bbe20){if(_0x3bbe20){_0x326855[_0xc724('0x65')]=_0x3bbe20['get']({'plain':!![]});interaction_log[_0xc724('0x66')](_0xc724('0x7b'),_0x1fadca[_0xc724('0x68')]['id'],_0x1fadca[_0xc724('0x68')][_0xc724('0x39')],_0x1fadca['user'][_0xc724('0x69')],_0x326855[_0xc724('0x65')]['id'],_0x1fadca[_0xc724('0x58')]?JSON[_0xc724('0x23')](_0x1fadca[_0xc724('0x58')]):_0xc724('0x7c'));return respondWithRpcPromise(_0xc724('0x7d'),'rejectMessage',_0x326855);}return null;})['then'](function(_0x24518c){var _0x5dd5a7=_0xc724('0x6c')+_0x24518c[_0xc724('0x27')]['ContactId'];return db[_0xc724('0x6e')][_0xc724('0x3f')](_0x5dd5a7,{'type':db['Sequelize'][_0xc724('0x70')][_0xc724('0x71')],'raw':!![]})[_0xc724('0x1f')](function(_0xb017cc){return _0xb017cc;});})['then'](function(_0x4faf94){if(_0x4faf94){_0x326855['message'][_0xc724('0x72')]=_0x4faf94[0x0];if(!_0x1fadca[_0xc724('0x58')][_0xc724('0x5f')])return;return db[_0xc724('0x7e')]['find']({'where':{'id':_0x1fadca['body']['UserId'],'role':_0xc724('0x73')},'attributes':['id',_0xc724('0x39'),'fullname',_0xc724('0x7f'),'internal'],'raw':!![]});}return null;})[_0xc724('0x1f')](function(_0xc36bcb){if(!_0xc36bcb)return null;_0x326855[_0xc724('0x27')][_0xc724('0x73')]=_0xc36bcb;return _0x326855;})[_0xc724('0x1f')](function(_0x3bae6c){if(_0x3bae6c){_0x3bae6c['message'][_0xc724('0x77')]=util[_0xc724('0x5d')]('SIP/%s',_0x1fadca[_0xc724('0x68')]['name']);_0x3bae6c[_0xc724('0x27')]['channel']=_0x326855[_0xc724('0x78')];_0x3bae6c[_0xc724('0x27')]['event']=_0xc724('0x7a');respondWithRpcPromise('EventManager',_0xc724('0x79'),{'event':_0xc724('0x80'),'message':_0x3bae6c[_0xc724('0x27')]},client9002);return _0x326855;}return null;})[_0xc724('0x1f')](respondWithResult(_0x263f8b,null))[_0xc724('0x29')](handleError(_0x263f8b,null));};exports[_0xc724('0x2c')]=function(_0x3eba1c,_0x2b58d7,_0x54f0e1){if(_0x3eba1c['body']['id']){delete _0x3eba1c[_0xc724('0x58')]['id'];}var _0x103338;return db[_0xc724('0x3c')][_0xc724('0x56')]({'where':{'id':_0x3eba1c['params']['id']}})[_0xc724('0x1f')](handleEntityNotFound(_0x2b58d7,null))[_0xc724('0x1f')](function(_0x1db93c){if(_0x1db93c){_0x103338=_0x1db93c;return db['SmsAccount'][_0xc724('0x56')]({'where':{'id':_0x1db93c[_0xc724('0x81')]}});}})[_0xc724('0x1f')](handleEntityNotFound(_0x2b58d7,null))['then'](function(_0x6ec567){if(_0x6ec567){logger[_0xc724('0x21')](_0xc724('0x22'),_0xc724('0x2c'),'received\x20delivery\x20report\x20from',_0x6ec567[_0xc724('0x82')],util[_0xc724('0x83')](_0x3eba1c['body'],{'showHidden':![],'depth':null}));switch(_0x6ec567[_0xc724('0x82')]){case _0xc724('0x84'):if(_0x3eba1c[_0xc724('0x58')][_0xc724('0x85')]&&_0x3eba1c[_0xc724('0x58')][_0xc724('0x85')]===_0x103338[_0xc724('0x86')]){return _0x103338[_0xc724('0x36')]({'read':!![]});}else{logger[_0xc724('0x24')](_0xc724('0x87'),_0xc724('0x2c'),'twilio',util[_0xc724('0x83')](_0x3eba1c['body'],{'showHidden':![],'depth':null}));}break;case _0xc724('0x88'):if(_0x3eba1c[_0xc724('0x58')]['MessageUUID']&&_0x3eba1c[_0xc724('0x58')][_0xc724('0x89')]===_0x103338[_0xc724('0x86')]&&_[_0xc724('0x8a')]([_0xc724('0x8b'),_0xc724('0x8c')],_0x3eba1c[_0xc724('0x58')][_0xc724('0x8d')])>=0x0){return _0x103338['update']({'read':!![]});}else{logger['error'](_0xc724('0x87'),'status',_0xc724('0x8e'),util[_0xc724('0x83')](_0x3eba1c['body'],{'showHidden':![],'depth':null}));}break;case _0xc724('0x8f'):var _0x41305d=_0x3eba1c[_0xc724('0x58')][_0xc724('0x90')][0x0];if(_0x41305d[_0xc724('0x2c')][_0xc724('0x91')]===_0xc724('0x92')){return _0x103338['update']({'read':!![]});}else{logger[_0xc724('0x24')](_0xc724('0x87'),_0xc724('0x2c'),'infobip',util[_0xc724('0x83')](_0x3eba1c[_0xc724('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x103338;}})[_0xc724('0x1f')](respondWithResult(_0x2b58d7,null))[_0xc724('0x29')](handleError(_0x2b58d7,null));};
\ No newline at end of file
+var _0xed03=['filter','merge','type','includeAll','include','rows','show','params','length','options','find','body','update','sms-interactions','accept','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','stringify','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','contact','agent','fullname','email','internal','interface','SIP/%s','motionChannel','channel','event','EventManager','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','User','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','eml-format','rimraf','fast-json-patch','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsMessage.socket','register','jayson/promise','http','client','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','name','send','index','map','SmsMessage','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x381e27,_0x5627ba){var _0x49e063=function(_0x17ecef){while(--_0x17ecef){_0x381e27['push'](_0x381e27['shift']());}};_0x49e063(++_0x5627ba);}(_0xed03,0xdc));var _0x3ed0=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0xed03[_0x363ef8];return _0x148822;};'use strict';var emlformat=require(_0x3ed0('0x0'));var rimraf=require(_0x3ed0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3ed0('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3ed0('0x3'));var Mustache=require('mustache');var util=require(_0x3ed0('0x4'));var path=require('path');var sox=require(_0x3ed0('0x5'));var csv=require(_0x3ed0('0x6'));var ejs=require(_0x3ed0('0x7'));var fs=require('fs');var fs_extra=require(_0x3ed0('0x8'));var _=require(_0x3ed0('0x9'));var squel=require(_0x3ed0('0xa'));var crypto=require(_0x3ed0('0xb'));var jsforce=require(_0x3ed0('0xc'));var deskjs=require(_0x3ed0('0xd'));var toCsv=require(_0x3ed0('0x6'));var querystring=require(_0x3ed0('0xe'));var Papa=require(_0x3ed0('0xf'));var Redis=require(_0x3ed0('0x10'));var authService=require(_0x3ed0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3ed0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ed0('0x13'))(_0x3ed0('0x14'));var utils=require(_0x3ed0('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x3ed0('0x16'));var db=require(_0x3ed0('0x17'))['db'];config[_0x3ed0('0x18')]=_[_0x3ed0('0x19')](config[_0x3ed0('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x3ed0('0x1a'))(new Redis(config[_0x3ed0('0x18')]));require(_0x3ed0('0x1b'))[_0x3ed0('0x1c')](socket);var jayson=require(_0x3ed0('0x1d'));var client=jayson['client'][_0x3ed0('0x1e')]({'port':0x232c});var client9002=jayson[_0x3ed0('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x291851,_0x196655,_0xd14d98,_0xf2a758){return new BPromise(function(_0xaa73cd,_0x230ead){var _0x47a3b5=_0xf2a758||client;return _0x47a3b5[_0x3ed0('0x20')](_0x291851,_0xd14d98)[_0x3ed0('0x21')](function(_0x54d820){logger[_0x3ed0('0x22')](_0x3ed0('0x23'),_0x196655,_0x3ed0('0x24'));logger[_0x3ed0('0x25')](_0x3ed0('0x26'),_0x196655,_0x3ed0('0x24'),JSON['stringify'](_0x54d820));if(_0x54d820[_0x3ed0('0x27')]){if(_0x54d820[_0x3ed0('0x27')][_0x3ed0('0x28')]===0x1f4){logger[_0x3ed0('0x27')](_0x3ed0('0x23'),_0x196655,_0x54d820[_0x3ed0('0x27')][_0x3ed0('0x29')]);return _0x230ead(_0x54d820['error'][_0x3ed0('0x29')]);}logger[_0x3ed0('0x27')](_0x3ed0('0x23'),_0x196655,_0x54d820[_0x3ed0('0x27')][_0x3ed0('0x29')]);return _0xaa73cd(_0x54d820['error'][_0x3ed0('0x29')]);}else{logger[_0x3ed0('0x22')](_0x3ed0('0x23'),_0x196655,_0x3ed0('0x24'));_0xaa73cd(_0x54d820[_0x3ed0('0x2a')][_0x3ed0('0x29')]);}})[_0x3ed0('0x2b')](function(_0x2e1706){logger[_0x3ed0('0x27')]('SmsMessage,\x20%s,\x20%s',_0x196655,_0x2e1706);_0x230ead(_0x2e1706);});});}function respondWithStatusCode(_0x57a12d,_0x17a3b5){_0x17a3b5=_0x17a3b5||0xcc;return function(_0x1eb6b5){if(_0x1eb6b5){return _0x57a12d[_0x3ed0('0x2c')](_0x17a3b5);}return _0x57a12d[_0x3ed0('0x2d')](_0x17a3b5)[_0x3ed0('0x2e')]();};}function respondWithResult(_0x33c407,_0x59ef6b){_0x59ef6b=_0x59ef6b||0xc8;return function(_0x5638a5){if(_0x5638a5){return _0x33c407[_0x3ed0('0x2d')](_0x59ef6b)[_0x3ed0('0x2f')](_0x5638a5);}};}function respondWithFilteredResult(_0x2a5e86,_0xaee4f0){return function(_0x409c12){if(_0x409c12){var _0x25c4ce=typeof _0xaee4f0[_0x3ed0('0x30')]===_0x3ed0('0x31')&&typeof _0xaee4f0[_0x3ed0('0x32')]===_0x3ed0('0x31');var _0x5dafa6=_0x409c12[_0x3ed0('0x33')];var _0x55935a=_0x25c4ce?0x0:_0xaee4f0[_0x3ed0('0x30')];var _0x1ed6bc=_0x25c4ce?_0x409c12[_0x3ed0('0x33')]:_0xaee4f0[_0x3ed0('0x30')]+_0xaee4f0[_0x3ed0('0x32')];var _0x2fcc30;if(_0x1ed6bc>=_0x5dafa6){_0x1ed6bc=_0x5dafa6;_0x2fcc30=0xc8;}else{_0x2fcc30=0xce;}_0x2a5e86[_0x3ed0('0x2d')](_0x2fcc30);return _0x2a5e86[_0x3ed0('0x34')](_0x3ed0('0x35'),_0x55935a+'-'+_0x1ed6bc+'/'+_0x5dafa6)['json'](_0x409c12);}return null;};}function patchUpdates(_0xedad6){return function(_0x33ca42){try{jsonpatch[_0x3ed0('0x36')](_0x33ca42,_0xedad6,!![]);}catch(_0x2145f0){return BPromise[_0x3ed0('0x37')](_0x2145f0);}return _0x33ca42[_0x3ed0('0x38')]();};}function saveUpdates(_0x528543,_0x11cad2){return function(_0x2f575b){if(_0x2f575b){return _0x2f575b['update'](_0x528543)[_0x3ed0('0x21')](function(_0x24b6a3){return _0x24b6a3;});}return null;};}function removeEntity(_0xdef801,_0x9b1081){return function(_0x51b8b3){if(_0x51b8b3){return _0x51b8b3[_0x3ed0('0x39')]()[_0x3ed0('0x21')](function(){_0xdef801[_0x3ed0('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c746a,_0x4a7817){return function(_0x331d62){if(!_0x331d62){_0x2c746a[_0x3ed0('0x2c')](0x194);}return _0x331d62;};}function handleError(_0x1c0066,_0x49da90){_0x49da90=_0x49da90||0x1f4;return function(_0x5a3751){logger[_0x3ed0('0x27')](_0x5a3751['stack']);if(_0x5a3751['name']){delete _0x5a3751[_0x3ed0('0x3a')];}_0x1c0066[_0x3ed0('0x2d')](_0x49da90)[_0x3ed0('0x3b')](_0x5a3751);};}exports[_0x3ed0('0x3c')]=function(_0xb9829,_0x18bc64){var _0x29edd4={},_0x5c1f4c={},_0x4f79b7={'count':0x0,'rows':[]};var _0x159f4c=_[_0x3ed0('0x3d')](db[_0x3ed0('0x3e')][_0x3ed0('0x3f')],function(_0x41225d){return{'name':_0x41225d[_0x3ed0('0x40')],'type':_0x41225d['type'][_0x3ed0('0x41')]};});_0x5c1f4c['model']=_[_0x3ed0('0x3d')](_0x159f4c,_0x3ed0('0x3a'));_0x5c1f4c['query']=_[_0x3ed0('0x42')](_0xb9829[_0x3ed0('0x43')]);_0x5c1f4c[_0x3ed0('0x44')]=_[_0x3ed0('0x45')](_0x5c1f4c[_0x3ed0('0x46')],_0x5c1f4c[_0x3ed0('0x43')]);_0x29edd4[_0x3ed0('0x47')]=_[_0x3ed0('0x45')](_0x5c1f4c['model'],qs[_0x3ed0('0x48')](_0xb9829['query'][_0x3ed0('0x48')]));_0x29edd4[_0x3ed0('0x47')]=_0x29edd4[_0x3ed0('0x47')]['length']?_0x29edd4[_0x3ed0('0x47')]:_0x5c1f4c['model'];if(!_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x49')](_0x3ed0('0x4a'))){_0x29edd4[_0x3ed0('0x32')]=qs[_0x3ed0('0x32')](_0xb9829['query']['limit']);_0x29edd4[_0x3ed0('0x30')]=qs[_0x3ed0('0x30')](_0xb9829[_0x3ed0('0x43')]['offset']);}_0x29edd4['order']=qs['sort'](_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x4b')]);_0x29edd4[_0x3ed0('0x4c')]=qs[_0x3ed0('0x44')](_[_0x3ed0('0x4d')](_0xb9829[_0x3ed0('0x43')],_0x5c1f4c[_0x3ed0('0x44')]),_0x159f4c);if(_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x4e')]){_0x29edd4[_0x3ed0('0x4c')]=_[_0x3ed0('0x4f')](_0x29edd4[_0x3ed0('0x4c')],{'$or':_[_0x3ed0('0x3d')](_0x159f4c,function(_0xd76c05){if(_0xd76c05[_0x3ed0('0x50')]!=='VIRTUAL'){var _0x45c574={};_0x45c574[_0xd76c05[_0x3ed0('0x3a')]]={'$like':'%'+_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x4e')]+'%'};return _0x45c574;}})});}_0x29edd4=_[_0x3ed0('0x4f')]({},_0x29edd4,_0xb9829['options']);var _0x1067d2={'where':_0x29edd4[_0x3ed0('0x4c')]};return db['SmsMessage'][_0x3ed0('0x33')](_0x1067d2)['then'](function(_0x4b1a11){_0x4f79b7[_0x3ed0('0x33')]=_0x4b1a11;if(_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x51')]){_0x29edd4[_0x3ed0('0x52')]=[{'all':!![]}];}return db[_0x3ed0('0x3e')]['findAll'](_0x29edd4);})[_0x3ed0('0x21')](function(_0x27cd10){_0x4f79b7[_0x3ed0('0x53')]=_0x27cd10;return _0x4f79b7;})['then'](respondWithFilteredResult(_0x18bc64,_0x29edd4))[_0x3ed0('0x2b')](handleError(_0x18bc64,null));};exports[_0x3ed0('0x54')]=function(_0x55d62e,_0x3c6208){var _0x1ba53b={'raw':!![],'where':{'id':_0x55d62e[_0x3ed0('0x55')]['id']}},_0x23db56={};_0x23db56[_0x3ed0('0x46')]=_[_0x3ed0('0x42')](db[_0x3ed0('0x3e')][_0x3ed0('0x3f')]);_0x23db56[_0x3ed0('0x43')]=_[_0x3ed0('0x42')](_0x55d62e[_0x3ed0('0x43')]);_0x23db56[_0x3ed0('0x44')]=_[_0x3ed0('0x45')](_0x23db56[_0x3ed0('0x46')],_0x23db56['query']);_0x1ba53b[_0x3ed0('0x47')]=_[_0x3ed0('0x45')](_0x23db56[_0x3ed0('0x46')],qs['fields'](_0x55d62e[_0x3ed0('0x43')]['fields']));_0x1ba53b[_0x3ed0('0x47')]=_0x1ba53b[_0x3ed0('0x47')][_0x3ed0('0x56')]?_0x1ba53b['attributes']:_0x23db56[_0x3ed0('0x46')];if(_0x55d62e['query'][_0x3ed0('0x51')]){_0x1ba53b[_0x3ed0('0x52')]=[{'all':!![]}];}_0x1ba53b=_[_0x3ed0('0x4f')]({},_0x1ba53b,_0x55d62e[_0x3ed0('0x57')]);return db[_0x3ed0('0x3e')][_0x3ed0('0x58')](_0x1ba53b)['then'](handleEntityNotFound(_0x3c6208,null))[_0x3ed0('0x21')](respondWithResult(_0x3c6208,null))[_0x3ed0('0x2b')](handleError(_0x3c6208,null));};exports['create']=function(_0x51c342,_0xf35ef4){return db['SmsMessage']['create'](_0x51c342[_0x3ed0('0x59')],{})[_0x3ed0('0x21')](respondWithResult(_0xf35ef4,0xc9))[_0x3ed0('0x2b')](handleError(_0xf35ef4,null));};exports[_0x3ed0('0x5a')]=function(_0x274d61,_0x28e69f){if(_0x274d61[_0x3ed0('0x59')]['id']){delete _0x274d61['body']['id'];}return db[_0x3ed0('0x3e')][_0x3ed0('0x58')]({'where':{'id':_0x274d61[_0x3ed0('0x55')]['id']}})['then'](handleEntityNotFound(_0x28e69f,null))[_0x3ed0('0x21')](saveUpdates(_0x274d61[_0x3ed0('0x59')],null))['then'](respondWithResult(_0x28e69f,null))['catch'](handleError(_0x28e69f,null));};exports[_0x3ed0('0x39')]=function(_0x19fac,_0x50a1fc){return db[_0x3ed0('0x3e')][_0x3ed0('0x58')]({'where':{'id':_0x19fac['params']['id']}})[_0x3ed0('0x21')](handleEntityNotFound(_0x50a1fc,null))[_0x3ed0('0x21')](removeEntity(_0x50a1fc,null))[_0x3ed0('0x2b')](handleError(_0x50a1fc,null));};exports['describe']=function(_0x4d16b6,_0x53b443){return db[_0x3ed0('0x3e')]['describe']()[_0x3ed0('0x21')](respondWithResult(_0x53b443,null))['catch'](handleError(_0x53b443,null));};var interaction_log=require(_0x3ed0('0x13'))(_0x3ed0('0x5b'));exports[_0x3ed0('0x5c')]=function(_0x2c5f96,_0x3305aa,_0x215784){var _0x22a3de={'agent':{},'channel':_0x3ed0('0x5d')};if(_0x2c5f96[_0x3ed0('0x59')]['id']){delete _0x2c5f96['body']['id'];}_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x5e')]=!![];_0x2c5f96[_0x3ed0('0x59')]['readAt']=moment()[_0x3ed0('0x5f')](_0x3ed0('0x60'));_0x2c5f96['body'][_0x3ed0('0x61')]=_0x2c5f96[_0x3ed0('0x59')]['UserId']||_0x2c5f96[_0x3ed0('0x62')]['id'];_0x22a3de['agent']['id']=_0x2c5f96['body'][_0x3ed0('0x61')];return db['SmsMessage'][_0x3ed0('0x58')]({'where':{'id':_0x2c5f96[_0x3ed0('0x55')]['id'],'UserId':null}})[_0x3ed0('0x21')](handleEntityNotFound(_0x3305aa,null))[_0x3ed0('0x21')](saveUpdates(_0x2c5f96['body'],null))[_0x3ed0('0x21')](function(_0x5717ca){if(_0x5717ca){_0x22a3de[_0x3ed0('0x29')]=_0x5717ca[_0x3ed0('0x63')]({'plain':!![]});return db[_0x3ed0('0x64')][_0x3ed0('0x58')]({'where':{'id':_0x5717ca[_0x3ed0('0x65')]}});}return null;})[_0x3ed0('0x21')](handleEntityNotFound(_0x3305aa,null))[_0x3ed0('0x21')](function(_0xa0bbf5){if(_0xa0bbf5){return _0xa0bbf5[_0x3ed0('0x5a')]({'UserId':_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x61')],'read1stAt':_[_0x3ed0('0x66')](_0xa0bbf5[_0x3ed0('0x67')])?moment()[_0x3ed0('0x5f')](_0x3ed0('0x60')):undefined});}return null;})[_0x3ed0('0x21')](function(_0x110f67){if(_0x110f67){_0x22a3de['interaction']=_0x110f67[_0x3ed0('0x63')]({'plain':!![]});interaction_log[_0x3ed0('0x22')](_0x3ed0('0x68'),_0x2c5f96[_0x3ed0('0x62')]['id'],_0x2c5f96['user'][_0x3ed0('0x3a')],_0x2c5f96[_0x3ed0('0x62')][_0x3ed0('0x69')],_0x22a3de[_0x3ed0('0x6a')]['id'],_0x2c5f96[_0x3ed0('0x59')]?JSON[_0x3ed0('0x6b')](_0x2c5f96['body']):'null');return respondWithRpcPromise(_0x3ed0('0x6c'),_0x3ed0('0x6d'),_0x22a3de);}return null;})[_0x3ed0('0x21')](function(_0x39f7ad){var _0xd07ece='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x39f7ad[_0x3ed0('0x29')]['ContactId'];return db[_0x3ed0('0x6e')][_0x3ed0('0x43')](_0xd07ece,{'type':db[_0x3ed0('0x6f')][_0x3ed0('0x70')]['SELECT'],'raw':!![]})[_0x3ed0('0x21')](function(_0x322748){return _0x322748;});})[_0x3ed0('0x21')](function(_0x1b9fa3){if(_0x1b9fa3){_0x22a3de['message'][_0x3ed0('0x71')]=_0x1b9fa3[0x0];if(!_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x61')])return;return db['User'][_0x3ed0('0x58')]({'where':{'id':_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x61')],'role':_0x3ed0('0x72')},'attributes':['id',_0x3ed0('0x3a'),_0x3ed0('0x73'),_0x3ed0('0x74'),_0x3ed0('0x75')],'raw':!![]});}return null;})[_0x3ed0('0x21')](function(_0x6461da){if(!_0x6461da)return null;_0x22a3de['message'][_0x3ed0('0x72')]=_0x6461da;return _0x22a3de;})[_0x3ed0('0x21')](function(_0xaf9a8b){if(_0xaf9a8b){if(_0x2c5f96[_0x3ed0('0x59')]['manual']){_0x22a3de['message'][_0x3ed0('0x76')]=util[_0x3ed0('0x5f')](_0x3ed0('0x77'),_0x2c5f96['user'][_0x3ed0('0x3a')]);_0x22a3de[_0x3ed0('0x29')]['channel']=_0x22a3de['channel'];_0x22a3de[_0x3ed0('0x29')][_0x3ed0('0x78')]=_0x22a3de[_0x3ed0('0x79')];_0x22a3de[_0x3ed0('0x29')][_0x3ed0('0x7a')]=_0x3ed0('0x5c');return respondWithRpcPromise(_0x3ed0('0x7b'),'EventManager',{'event':'acceptmessage','message':_0x22a3de[_0x3ed0('0x29')]},client9002)['then'](function(){return _0x22a3de;});}return _0x22a3de;}return null;})['then'](respondWithResult(_0x3305aa,null))[_0x3ed0('0x2b')](handleError(_0x3305aa,null));};var interaction_log=require(_0x3ed0('0x13'))(_0x3ed0('0x5b'));exports[_0x3ed0('0x37')]=function(_0x50716c,_0x1f31e6,_0x4995d3){var _0x444859={'agent':{},'channel':'sms'};if(_0x50716c['body']['id']){delete _0x50716c[_0x3ed0('0x59')]['id'];}_0x50716c[_0x3ed0('0x59')][_0x3ed0('0x61')]=_0x50716c[_0x3ed0('0x59')][_0x3ed0('0x61')]||_0x50716c['user']['id'];_0x444859['agent']['id']=_0x50716c[_0x3ed0('0x59')]['UserId'];return db[_0x3ed0('0x3e')]['find']({'where':{'id':_0x50716c[_0x3ed0('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1f31e6,null))[_0x3ed0('0x21')](function(_0x3c47e8){if(_0x3c47e8){_0x444859[_0x3ed0('0x29')]=_0x3c47e8[_0x3ed0('0x63')]({'plain':!![]});return db[_0x3ed0('0x64')][_0x3ed0('0x58')]({'where':{'id':_0x3c47e8[_0x3ed0('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x1f31e6,null))['then'](function(_0x2e60a5){if(_0x2e60a5){_0x444859[_0x3ed0('0x6a')]=_0x2e60a5[_0x3ed0('0x63')]({'plain':!![]});interaction_log[_0x3ed0('0x22')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x50716c['user']['id'],_0x50716c[_0x3ed0('0x62')][_0x3ed0('0x3a')],_0x50716c['user'][_0x3ed0('0x69')],_0x444859[_0x3ed0('0x6a')]['id'],_0x50716c[_0x3ed0('0x59')]?JSON[_0x3ed0('0x6b')](_0x50716c['body']):_0x3ed0('0x7c'));return respondWithRpcPromise(_0x3ed0('0x7d'),_0x3ed0('0x7e'),_0x444859);}return null;})['then'](function(_0x3bbbb5){var _0x3a0734=_0x3ed0('0x7f')+_0x3bbbb5[_0x3ed0('0x29')][_0x3ed0('0x80')];return db[_0x3ed0('0x6e')][_0x3ed0('0x43')](_0x3a0734,{'type':db[_0x3ed0('0x6f')]['QueryTypes'][_0x3ed0('0x81')],'raw':!![]})['then'](function(_0x2845ff){return _0x2845ff;});})['then'](function(_0x22295e){if(_0x22295e){_0x444859[_0x3ed0('0x29')][_0x3ed0('0x71')]=_0x22295e[0x0];if(!_0x50716c[_0x3ed0('0x59')]['UserId'])return;return db[_0x3ed0('0x82')][_0x3ed0('0x58')]({'where':{'id':_0x50716c[_0x3ed0('0x59')][_0x3ed0('0x61')],'role':'agent'},'attributes':['id',_0x3ed0('0x3a'),_0x3ed0('0x73'),_0x3ed0('0x74'),_0x3ed0('0x75')],'raw':!![]});}return null;})[_0x3ed0('0x21')](function(_0x492eec){if(!_0x492eec)return null;_0x444859[_0x3ed0('0x29')]['agent']=_0x492eec;return _0x444859;})[_0x3ed0('0x21')](function(_0x1a7f69){if(_0x1a7f69){_0x1a7f69[_0x3ed0('0x29')][_0x3ed0('0x76')]=util[_0x3ed0('0x5f')]('SIP/%s',_0x50716c[_0x3ed0('0x62')]['name']);_0x1a7f69['message'][_0x3ed0('0x79')]=_0x444859[_0x3ed0('0x79')];_0x1a7f69['message'][_0x3ed0('0x78')]=_0x444859[_0x3ed0('0x79')];_0x1a7f69[_0x3ed0('0x29')][_0x3ed0('0x7a')]=_0x3ed0('0x37');respondWithRpcPromise(_0x3ed0('0x7b'),_0x3ed0('0x7b'),{'event':'rejectmessage','message':_0x1a7f69[_0x3ed0('0x29')]},client9002);return _0x444859;}return null;})[_0x3ed0('0x21')](respondWithResult(_0x1f31e6,null))[_0x3ed0('0x2b')](handleError(_0x1f31e6,null));};exports['status']=function(_0x469fc2,_0x4cf1a7,_0x270827){if(_0x469fc2[_0x3ed0('0x59')]['id']){delete _0x469fc2['body']['id'];}var _0x24bfe6;return db[_0x3ed0('0x3e')]['find']({'where':{'id':_0x469fc2[_0x3ed0('0x55')]['id']}})['then'](handleEntityNotFound(_0x4cf1a7,null))['then'](function(_0x2f52e2){if(_0x2f52e2){_0x24bfe6=_0x2f52e2;return db[_0x3ed0('0x83')][_0x3ed0('0x58')]({'where':{'id':_0x2f52e2[_0x3ed0('0x84')]}});}})[_0x3ed0('0x21')](handleEntityNotFound(_0x4cf1a7,null))[_0x3ed0('0x21')](function(_0x29895b){if(_0x29895b){logger[_0x3ed0('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s','status',_0x3ed0('0x85'),_0x29895b['type'],util[_0x3ed0('0x86')](_0x469fc2['body'],{'showHidden':![],'depth':null}));switch(_0x29895b['type']){case _0x3ed0('0x87'):if(_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x88')]&&_0x469fc2[_0x3ed0('0x59')]['MessageSid']===_0x24bfe6[_0x3ed0('0x89')]){return _0x24bfe6[_0x3ed0('0x5a')]({'read':!![]});}else{logger[_0x3ed0('0x27')](_0x3ed0('0x8a'),_0x3ed0('0x2d'),_0x3ed0('0x87'),util['inspect'](_0x469fc2['body'],{'showHidden':![],'depth':null}));}break;case _0x3ed0('0x8b'):if(_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x8c')]&&_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x8c')]===_0x24bfe6[_0x3ed0('0x89')]&&_[_0x3ed0('0x8d')]([_0x3ed0('0x8e'),_0x3ed0('0x8f')],_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x90')])>=0x0){return _0x24bfe6['update']({'read':!![]});}else{logger[_0x3ed0('0x27')](_0x3ed0('0x8a'),'status',_0x3ed0('0x91'),util[_0x3ed0('0x86')](_0x469fc2[_0x3ed0('0x59')],{'showHidden':![],'depth':null}));}break;case _0x3ed0('0x92'):var _0x3fbad2=_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x93')][0x0];if(_0x3fbad2['status'][_0x3ed0('0x94')]==='DELIVERED'){return _0x24bfe6[_0x3ed0('0x5a')]({'read':!![]});}else{logger[_0x3ed0('0x27')](_0x3ed0('0x8a'),_0x3ed0('0x2d'),_0x3ed0('0x92'),util['inspect'](_0x469fc2[_0x3ed0('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x24bfe6;}})[_0x3ed0('0x21')](respondWithResult(_0x4cf1a7,null))[_0x3ed0('0x2b')](handleError(_0x4cf1a7,null));};
\ No newline at end of file
index aa38c4b..4131915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa62a=['SmsMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x349b85,_0x582c5d){var _0x375bbe=function(_0x23258c){while(--_0x23258c){_0x349b85['push'](_0x349b85['shift']());}};_0x375bbe(++_0x582c5d);}(_0xa62a,0xda));var _0xaa62=function(_0x345e4c,_0x3e73ba){_0x345e4c=_0x345e4c-0x0;var _0x40c41c=_0xa62a[_0x345e4c];return _0x40c41c;};'use strict';var EventEmitter=require(_0xaa62('0x0'));var SmsMessage=require(_0xaa62('0x1'))['db'][_0xaa62('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xaa62('0x3')](0x0);var events={'afterCreate':_0xaa62('0x4'),'afterUpdate':_0xaa62('0x5'),'afterDestroy':_0xaa62('0x6')};function emitEvent(_0x1c4f3e){return function(_0x26f1bd,_0x20a578,_0x2bdf2c){SmsMessageEvents[_0xaa62('0x7')](_0x1c4f3e+':'+_0x26f1bd['id'],_0x26f1bd);SmsMessageEvents[_0xaa62('0x7')](_0x1c4f3e,_0x26f1bd);_0x2bdf2c(null);};}for(var e in events){if(events[_0xaa62('0x8')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xaa62('0x9')]=SmsMessageEvents;
\ No newline at end of file
+var _0xf6ca=['SmsMessage','setMaxListeners','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xf6ca,0x187));var _0xaf6c=function(_0x356127,_0x4873ac){_0x356127=_0x356127-0x0;var _0x5d4c75=_0xf6ca[_0x356127];return _0x5d4c75;};'use strict';var EventEmitter=require(_0xaf6c('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0xaf6c('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xaf6c('0x2')](0x0);var events={'afterCreate':_0xaf6c('0x3'),'afterUpdate':'update','afterDestroy':_0xaf6c('0x4')};function emitEvent(_0x393396){return function(_0x204e90,_0x32276b,_0x552544){SmsMessageEvents[_0xaf6c('0x5')](_0x393396+':'+_0x204e90['id'],_0x204e90);SmsMessageEvents[_0xaf6c('0x5')](_0x393396,_0x204e90);_0x552544(null);};}for(var e in events){if(events[_0xaf6c('0x6')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xaf6c('0x7')]=SmsMessageEvents;
\ No newline at end of file
index c00c1d1..d1d4938 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5b=['length','createHash','md5','digest','signature=','GET','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','bandwidth','intelepeer','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','define','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','SmsInteraction','findOne','SmsInteractionId','update','catch','error','secret','SmsAccount','find','SmsAccountId','then','type','twilio','accountSid','authToken','phone','create','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','sender','password','sms','POST','user_key','total_sent','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','requestid','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','http_code','data','queued_count','messages','message_id','clickSend','authId','senderString','https://api.plivo.com/v1/Account/%s/Message/','toString','base64','message_uuid','plivo','infobip','baseUrl','/auth/1/session','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','apiKey','login','text','timestamp','keys','sort'];(function(_0x5b175e,_0xfeb3f1){var _0x2f65c5=function(_0x1138f8){while(--_0x1138f8){_0x5b175e['push'](_0x5b175e['shift']());}};_0x2f65c5(++_0xfeb3f1);}(_0xee5b,0x1f4));var _0xbee5=function(_0x375852,_0x12aac7){_0x375852=_0x375852-0x0;var _0x4f8781=_0xee5b[_0x375852];return _0x4f8781;};'use strict';var _=require(_0xbee5('0x0'));var util=require('util');var logger=require(_0xbee5('0x1'))(_0xbee5('0x2'));var moment=require('moment');var BPromise=require(_0xbee5('0x3'));var rp=require(_0xbee5('0x4'));var fs=require('fs');var path=require(_0xbee5('0x5'));var rimraf=require(_0xbee5('0x6'));var config=require('../../config/environment');var attributes=require('./smsMessage.attributes');module[_0xbee5('0x7')]=function(_0x2c0bde,_0xab6e4d){return _0x2c0bde[_0xbee5('0x8')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':'fti_sms_messages','fields':[_0xbee5('0x9')],'type':_0xbee5('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x45c2c7,_0x20f717,_0x4a15bf){var _0x143bd6=_0x2c0bde[_0xbee5('0xb')];var _0x9b3d3b=_0x45c2c7[_0xbee5('0xc')]({'plain':!![]});if(_0x9b3d3b[_0xbee5('0xd')][_0xbee5('0xe')]()==='in'||_0x9b3d3b[_0xbee5('0xd')][_0xbee5('0xe')]()===_0xbee5('0xf')&&!_0x9b3d3b['secret']&&!_[_0xbee5('0x10')](_0x9b3d3b['UserId'])){_0x143bd6[_0xbee5('0x11')][_0xbee5('0x12')]({'where':{'id':_0x9b3d3b[_0xbee5('0x13')]}})['then'](function(_0x5092f2){if(_0x5092f2){_0x5092f2[_0xbee5('0x14')]({'lastMsgAt':_0x9b3d3b['createdAt'],'lastMsgDirection':_0x9b3d3b[_0xbee5('0xd')]['toLowerCase']()});}})[_0xbee5('0x15')](function(_0x141878){console[_0xbee5('0x16')](_0x141878);});}if(_0x9b3d3b['direction']===_0xbee5('0xf')&&!_0x9b3d3b[_0xbee5('0x17')]){var _0x5a0ae5;_0x143bd6[_0xbee5('0x18')][_0xbee5('0x19')]({'where':{'id':_0x9b3d3b[_0xbee5('0x1a')]},'raw':!![]})[_0xbee5('0x1b')](function(_0x35eb5c){_0x5a0ae5=_0x35eb5c;if(_0x5a0ae5&&_0x5a0ae5[_0xbee5('0x1c')]){switch(_0x5a0ae5[_0xbee5('0x1c')]){case _0xbee5('0x1d'):var _0x20cf52=require(_0xbee5('0x1d'));if(_0x5a0ae5[_0xbee5('0x1e')]&&_0x5a0ae5[_0xbee5('0x1f')]&&_0x5a0ae5[_0xbee5('0x20')]){var _0x40a06=new _0x20cf52(_0x5a0ae5[_0xbee5('0x1e')],_0x5a0ae5['authToken']);_0x40a06['messages'][_0xbee5('0x21')]({'body':_0x9b3d3b['body'],'to':_0x9b3d3b[_0xbee5('0x20')],'from':_0x5a0ae5[_0xbee5('0x20')],'statusCallback':_0x5a0ae5[_0xbee5('0x22')]+_0xbee5('0x23')+_0x9b3d3b['id']+_0xbee5('0x24')+_0x5a0ae5[_0xbee5('0x25')]})[_0xbee5('0x1b')](function(_0x3cfa8d){if(_0x3cfa8d[_0xbee5('0x26')]){return _0x45c2c7['update']({'messageId':_0x3cfa8d['sid']});}})['catch'](function(_0x519473){logger['error'](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x1d'),util[_0xbee5('0x29')](_0x519473,{'showHidden':![],'depth':null}));});}else{logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),'twilio',_0xbee5('0x2a'));}break;case _0xbee5('0x2b'):var _0x179d14=_0xbee5('0x2c');if(_0x5a0ae5[_0xbee5('0x2d')]&&_0x5a0ae5['password']){var _0x21b993={'recipient':[_0x9b3d3b[_0xbee5('0x20')]],'message':_0x9b3d3b[_0xbee5('0x9')],'message_type':_0x5a0ae5[_0xbee5('0x2e')]};if(_0x5a0ae5[_0xbee5('0x2e')]&&_0x5a0ae5[_0xbee5('0x2e')]!=='SI'){_0x21b993[_0xbee5('0x2f')]=_0x5a0ae5[_0xbee5('0x20')];}var _0x2861da={'url':_0x179d14+'login?username='+_0x5a0ae5[_0xbee5('0x2d')]+'&password='+_0x5a0ae5[_0xbee5('0x30')],'method':'GET'};rp(_0x2861da)[_0xbee5('0x1b')](function(_0x52dad9){var _0x35609d=_0x52dad9['split'](';');var _0x3220bf={'user_key':_0x35609d[0x0],'session_key':_0x35609d[0x1]};_0x2861da={'url':_0x179d14+_0xbee5('0x31'),'method':_0xbee5('0x32'),'headers':{'user_key':_0x3220bf[_0xbee5('0x33')],'Session_key':_0x3220bf['session_key']},'json':!![],'body':_0x21b993};return rp(_0x2861da);})[_0xbee5('0x1b')](function(_0x17aa8d){if(_0x17aa8d[_0xbee5('0x34')]>=0x1){var _0x1c78cc={'messageId':_0x17aa8d['internal_order_id']};if(_0x5a0ae5[_0xbee5('0x2e')]!=='GP'||!_0x5a0ae5[_0xbee5('0x35')]){_0x1c78cc[_0xbee5('0x36')]=!![];}return _0x45c2c7[_0xbee5('0x14')](_0x1c78cc);}else{return logger['error'](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x2b'),util[_0xbee5('0x29')](_0x17aa8d,{'showHidden':![],'depth':null}));}})['catch'](function(_0x3c8a87){return logger['error'](_0xbee5('0x27'),'afterCreate','skebby',util['inspect'](_0x3c8a87,{'showHidden':![],'depth':null}));});}else{logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x2b'),_0xbee5('0x37'));}break;case _0xbee5('0x38'):if(_0x5a0ae5[_0xbee5('0x1f')]){var _0x702ce8={'recipient':_0x9b3d3b['phone'],'message':_0x9b3d3b[_0xbee5('0x9')],'sender':_0x5a0ae5['senderString']||_0x5a0ae5[_0xbee5('0x20')],'authorization':_0x5a0ae5[_0xbee5('0x1f')]};var _0x20f717={'method':_0xbee5('0x32'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x702ce8,'json':!![]};rp(_0x20f717)[_0xbee5('0x1b')](function(_0x4eb1f8){var _0x565e9f={'messageId':_0x4eb1f8[_0xbee5('0x39')]};if(!_0x5a0ae5[_0xbee5('0x35')]){_0x565e9f[_0xbee5('0x36')]=!![];}return _0x45c2c7[_0xbee5('0x14')](_0x565e9f);})['catch'](function(_0xf3dd5){logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x38'),util[_0xbee5('0x29')](_0xf3dd5,{'showHidden':![],'depth':null}));});}else{logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x38'),'Missing\x20parameters:\x20authToken');}break;case _0xbee5('0x3a'):if(_0x5a0ae5[_0xbee5('0x2d')]&&_0x5a0ae5['password']){var _0x702ce8={'messages':[{'source':_0xbee5('0x3b'),'to':_0x9b3d3b[_0xbee5('0x20')],'body':_0x9b3d3b[_0xbee5('0x9')],'from':_0x5a0ae5['senderString']||_0x5a0ae5['phone']}]};var _0x5985b4=util[_0xbee5('0x3c')](_0xbee5('0x3d'),_0x5a0ae5[_0xbee5('0x2d')],_0x5a0ae5[_0xbee5('0x30')]);var _0x20f717={'method':_0xbee5('0x32'),'uri':_0xbee5('0x3e'),'body':_0x702ce8,'headers':{'Authorization':util[_0xbee5('0x3c')](_0xbee5('0x3f'),new Buffer(_0x5985b4)['toString']('base64'))},'json':!![]};rp(_0x20f717)[_0xbee5('0x1b')](function(_0x51726a){if(_0x51726a[_0xbee5('0x40')]>=0xc8&&_0x51726a[_0xbee5('0x40')]<=0xce){if(_0x51726a['data']&&_0x51726a[_0xbee5('0x41')][_0xbee5('0x42')]>0x0){var _0x535843=_['head'](_0x51726a[_0xbee5('0x41')][_0xbee5('0x43')]);var _0x496872={'messageId':_0x535843[_0xbee5('0x44')]};if(!_0x5a0ae5[_0xbee5('0x35')]){_0x496872['read']=!![];}return _0x45c2c7[_0xbee5('0x14')](_0x496872);}else{logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x45'),util[_0xbee5('0x29')](_0x51726a,{'showHidden':![],'depth':null}));}}else{logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x45'),util[_0xbee5('0x29')](_0x51726a,{'showHidden':![],'depth':null}));}})[_0xbee5('0x15')](function(_0x5ba5f1){logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),'clickSend',util[_0xbee5('0x29')](_0x5ba5f1,{'showHidden':![],'depth':null}));});}else{logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','clickSend',_0xbee5('0x37'));}break;case'plivo':if(_0x5a0ae5[_0xbee5('0x46')]&&_0x5a0ae5[_0xbee5('0x1f')]){var _0x702ce8={'dst':_0x9b3d3b[_0xbee5('0x20')],'text':_0x9b3d3b[_0xbee5('0x9')],'src':_0x5a0ae5[_0xbee5('0x47')]||_0x5a0ae5['phone'],'url':_0x5a0ae5[_0xbee5('0x22')]+_0xbee5('0x23')+_0x9b3d3b['id']+_0xbee5('0x24')+_0x5a0ae5[_0xbee5('0x25')]};var _0x5985b4=util[_0xbee5('0x3c')]('%s:%s',_0x5a0ae5[_0xbee5('0x46')],_0x5a0ae5[_0xbee5('0x1f')]);var _0x20f717={'method':_0xbee5('0x32'),'uri':util[_0xbee5('0x3c')](_0xbee5('0x48'),_0x5a0ae5[_0xbee5('0x46')]),'body':_0x702ce8,'headers':{'Authorization':util[_0xbee5('0x3c')](_0xbee5('0x3f'),new Buffer(_0x5985b4)[_0xbee5('0x49')](_0xbee5('0x4a')))},'json':!![]};rp(_0x20f717)[_0xbee5('0x1b')](function(_0xeebac7){var _0x359738={'messageId':_0xeebac7[_0xbee5('0x4b')][0x0]};return _0x45c2c7['update'](_0x359738);})[_0xbee5('0x15')](function(_0x1f47ec){logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x4c'),util[_0xbee5('0x29')](_0x1f47ec,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xbee5('0x27'),'afterCreate',_0xbee5('0x4c'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0xbee5('0x4d'):if(_0x5a0ae5[_0xbee5('0x2d')]&&_0x5a0ae5[_0xbee5('0x30')]){if(_0x5a0ae5['baseUrl']){var _0x51bc42={'method':'POST','uri':_0x5a0ae5[_0xbee5('0x4e')]+_0xbee5('0x4f'),'body':{'username':_0x5a0ae5[_0xbee5('0x2d')],'password':_0x5a0ae5['password']},'json':!![]};return rp(_0x51bc42)[_0xbee5('0x1b')](function(_0x521543){var _0x21492a={'method':_0xbee5('0x32'),'uri':_0x5a0ae5[_0xbee5('0x4e')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x5a0ae5[_0xbee5('0x20')],'destinations':[{'to':_0x9b3d3b[_0xbee5('0x20')]}],'text':_0x9b3d3b[_0xbee5('0x9')],'notifyUrl':_0x5a0ae5[_0xbee5('0x22')]+_0xbee5('0x23')+_0x9b3d3b['id']+_0xbee5('0x24')+_0x5a0ae5[_0xbee5('0x25')],'notifyContentType':_0xbee5('0x50'),'callbackData':_0x5a0ae5[_0xbee5('0x20')]+';'+_0x9b3d3b[_0xbee5('0x9')]}]},'headers':{'Authorization':_0xbee5('0x51')+_0x521543[_0xbee5('0x25')]},'json':!![]};return rp(_0x21492a)[_0xbee5('0x1b')](function(_0x317b5c){if(_0x317b5c[_0xbee5('0x43')]){var _0x143fd9={'messageId':_0x317b5c[_0xbee5('0x43')][0x0]['messageId']};if(!_0x5a0ae5[_0xbee5('0x35')]){_0x143fd9['read']=!![];}return _0x45c2c7['update'](_0x143fd9);}else{return logger[_0xbee5('0x16')](_0xbee5('0x27'),'afterCreate','infobip',util[_0xbee5('0x29')](_0x317b5c,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x2fa95e){return logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x4d'),util[_0xbee5('0x29')](_0x2fa95e,{'showHidden':![],'depth':null}));});}else{logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),'infobip',_0xbee5('0x52'));}}else{logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x4d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xbee5('0x53'):var _0x2b6d1a=require('crypto');if(_0x5a0ae5[_0xbee5('0x54')]){var _0x54f45e={};_0x54f45e[_0xbee5('0x55')]=_0x5a0ae5['username'];_0x54f45e[_0xbee5('0x20')]=_0x9b3d3b['phone'];_0x54f45e['sender']=_0x5a0ae5[_0xbee5('0x20')];_0x54f45e[_0xbee5('0x56')]=_0x9b3d3b[_0xbee5('0x9')];_0x54f45e[_0xbee5('0x57')]=+new Date();var _0x2ad0c6='';var _0x6c6df6='';var _0x4c6a0b=Object[_0xbee5('0x58')](_0x54f45e);_0x4c6a0b[_0xbee5('0x59')]();for(var _0x36586a=0x0;_0x36586a<_0x4c6a0b[_0xbee5('0x5a')];_0x36586a++){if(_0x2ad0c6!=''){_0x2ad0c6+='&';}_0x2ad0c6+=_0x4c6a0b[_0x36586a]+'='+encodeURIComponent(_0x54f45e[_0x4c6a0b[_0x36586a]]);_0x6c6df6+=_0x54f45e[_0x4c6a0b[_0x36586a]];}_0x6c6df6+=_0x5a0ae5[_0xbee5('0x54')];_0x6c6df6=_0x2b6d1a[_0xbee5('0x5b')](_0xbee5('0x5c'))[_0xbee5('0x14')](_0x6c6df6)[_0xbee5('0x5d')]('hex');if(_0x2ad0c6!==''){_0x2ad0c6+='&';}_0x2ad0c6+=_0xbee5('0x5e')+_0x6c6df6;var _0x2861da={'method':_0xbee5('0x5f'),'uri':_0x5a0ae5[_0xbee5('0x4e')]+'/external/get/send.php?'+_0x2ad0c6,'json':!![]};return rp(_0x2861da)[_0xbee5('0x1b')](function(_0x237431){var _0xbb4ff6=Object[_0xbee5('0x58')](_0x237431);if(_0x237431[_0xbb4ff6[0x0]][_0xbee5('0x16')]&&parseInt(_0x237431[_0xbb4ff6[0x0]][_0xbee5('0x16')])===0x0){var _0x2bf005={'messageId':_0x237431[_0xbb4ff6[0x0]][_0xbee5('0x60')]};if(!_0x5a0ae5[_0xbee5('0x35')]){_0x2bf005[_0xbee5('0x36')]=!![];}return _0x45c2c7[_0xbee5('0x14')](_0x2bf005);}else{return logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x53'),util['inspect'](_0x237431[_0xbee5('0x16')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x3913d5){return logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),'csc',util['inspect'](_0x3913d5,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','csc',_0xbee5('0x61'));}break;case _0xbee5('0x62'):if(_0x5a0ae5[_0xbee5('0x54')]){var _0x38b7e6={'method':_0xbee5('0x32'),'uri':_0xbee5('0x63'),'headers':{'Authorization':_0x5a0ae5[_0xbee5('0x54')]},'body':{'content':_0x9b3d3b[_0xbee5('0x9')],'to':[_0x9b3d3b[_0xbee5('0x20')]],'from':_0x5a0ae5[_0xbee5('0x20')],'binary':![],'clientMessageId':_0xbee5('0x64'),'charset':_0xbee5('0x65')},'json':!![]};rp(_0x38b7e6)['then'](function(_0xc0bdc1){if(!_0xc0bdc1[_0xbee5('0x16')]){var _0x56cff5={'messageId':_0xc0bdc1['messages'][0x0][_0xbee5('0x66')]};if(!_0x5a0ae5[_0xbee5('0x35')]){_0x56cff5[_0xbee5('0x36')]=!![];}return _0x45c2c7['update'](_0x56cff5);}else{return logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),'clickatell',util['inspect'](_0xc0bdc1['error'],{'showHidden':![],'depth':null}));}})[_0xbee5('0x15')](function(_0x185219){return logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x62'),util[_0xbee5('0x29')](_0x185219,{'showHidden':![],'depth':null}));});}else{logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xbee5('0x62'),_0xbee5('0x61'));}break;case'bandwidth':if(_0x5a0ae5['username']&&_0x5a0ae5[_0xbee5('0x30')]){var _0x5985b4=util['format'](_0xbee5('0x3d'),_0x5a0ae5['username'],_0x5a0ae5[_0xbee5('0x30')]);var _0x20f717={'method':'POST','uri':_0xbee5('0x67')+_0x5a0ae5[_0xbee5('0x68')]+_0xbee5('0x69'),'body':{'to':[_0x9b3d3b[_0xbee5('0x20')]],'text':_0x9b3d3b[_0xbee5('0x9')],'from':_0x5a0ae5['phone'],'applicationId':_0x5a0ae5['applicationId']},'headers':{'Authorization':util[_0xbee5('0x3c')]('Basic\x20%s',new Buffer(_0x5985b4)[_0xbee5('0x49')]('base64'))},'json':!![]};rp(_0x20f717)[_0xbee5('0x1b')](function(_0x387032){if(_0x387032['id']){var _0x42d198={'messageId':_0x387032['id']};return _0x45c2c7[_0xbee5('0x14')](_0x42d198);}else{logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x6a'),util[_0xbee5('0x29')](_0x387032,{'showHidden':![],'depth':null}));}})[_0xbee5('0x15')](function(_0x1a07ac){logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x6a'),util[_0xbee5('0x29')](_0x1a07ac,{'showHidden':![],'depth':null}));});}else{logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x6a'),_0xbee5('0x37'));}break;case _0xbee5('0x6b'):if(_0x5a0ae5[_0xbee5('0x54')]){var _0x3433e6={};var _0x2861da={'method':_0xbee5('0x32'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0xbee5('0x6c')+_0x5a0ae5[_0xbee5('0x54')],'Content-Type':_0xbee5('0x50')},'body':{'from':_0x5a0ae5[_0xbee5('0x20')],'to':_0x9b3d3b[_0xbee5('0x20')],'text':_0x9b3d3b[_0xbee5('0x9')]},'json':!![]};return rp(_0x2861da)[_0xbee5('0x1b')](function(_0xed8e44){if(_0xed8e44[_0xbee5('0x6d')]==0xca){_0x3433e6[_0xbee5('0x6e')]=_0xed8e44;var _0x3b0679={'method':'POST','uri':_0xbee5('0x6f'),'headers':{'Authorization':_0xbee5('0x6c')+_0x5a0ae5['apiKey'],'Content-Type':_0xbee5('0x50')},'body':{'refid':_0x3433e6[_0xbee5('0x6e')][_0xbee5('0x70')]},'json':!![]};return rp(_0x3b0679)['then'](function(_0x424bae){_0x3433e6[_0xbee5('0x71')]=_0x424bae;var _0x21c3df={'messageId':_0x3433e6[_0xbee5('0x6e')][_0xbee5('0x70')],'read':!![]};return _0x45c2c7[_0xbee5('0x14')](_0x21c3df);});}else{return logger[_0xbee5('0x16')](_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x6b'),util[_0xbee5('0x29')](_0xed8e44,{'showHidden':![],'depth':null}));}})[_0xbee5('0x15')](function(_0x50dbf5){return logger[_0xbee5('0x16')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xbee5('0x6b'),util[_0xbee5('0x29')](_0x50dbf5,{'showHidden':![],'depth':null}));});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xbee5('0x28'),_0xbee5('0x6b'),_0xbee5('0x72'));}break;}}})[_0xbee5('0x73')](function(){_0x4a15bf();});}else{_0x4a15bf();}}},'charset':_0xbee5('0x74'),'collate':_0xbee5('0x75')});};
\ No newline at end of file
+var _0x12fd=['senderString','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','crypto','apiKey','login','sender','text','keys','sort','md5','digest','hex','id_sms','csc','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','apiMessageId','clickatell','bandwidth','%s:%s','https://messaging.bandwidth.com/api/v2/users/','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','body','models','toLowerCase','secret','isNil','SmsInteraction','findOne','update','createdAt','direction','catch','error','out','SmsAccount','find','then','type','twilio','accountSid','authToken','phone','messages','create','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','POST','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','username','xCALLY\x20Motion'];(function(_0x342184,_0x5ab1e4){var _0x1833ed=function(_0x1fcdbf){while(--_0x1fcdbf){_0x342184['push'](_0x342184['shift']());}};_0x1833ed(++_0x5ab1e4);}(_0x12fd,0x199));var _0xd12f=function(_0x4d620,_0x14c382){_0x4d620=_0x4d620-0x0;var _0x4f68fc=_0x12fd[_0x4d620];return _0x4f68fc;};'use strict';var _=require(_0xd12f('0x0'));var util=require(_0xd12f('0x1'));var logger=require(_0xd12f('0x2'))(_0xd12f('0x3'));var moment=require(_0xd12f('0x4'));var BPromise=require('bluebird');var rp=require(_0xd12f('0x5'));var fs=require('fs');var path=require(_0xd12f('0x6'));var rimraf=require(_0xd12f('0x7'));var config=require(_0xd12f('0x8'));var attributes=require(_0xd12f('0x9'));module[_0xd12f('0xa')]=function(_0x55bb7d,_0x3f733d){return _0x55bb7d['define'](_0xd12f('0xb'),attributes,{'tableName':_0xd12f('0xc'),'paranoid':![],'indexes':[{'name':_0xd12f('0xd'),'fields':[_0xd12f('0xd')]},{'name':'fti_sms_messages','fields':[_0xd12f('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0xd848dd,_0x5108a9,_0x59c17c){var _0x4a1677=_0x55bb7d[_0xd12f('0xf')];var _0x1c31c8=_0xd848dd['get']({'plain':!![]});if(_0x1c31c8['direction']['toLowerCase']()==='in'||_0x1c31c8['direction'][_0xd12f('0x10')]()==='out'&&!_0x1c31c8[_0xd12f('0x11')]&&!_[_0xd12f('0x12')](_0x1c31c8['UserId'])){_0x4a1677[_0xd12f('0x13')][_0xd12f('0x14')]({'where':{'id':_0x1c31c8['SmsInteractionId']}})['then'](function(_0x49afdf){if(_0x49afdf){_0x49afdf[_0xd12f('0x15')]({'lastMsgAt':_0x1c31c8[_0xd12f('0x16')],'lastMsgDirection':_0x1c31c8[_0xd12f('0x17')][_0xd12f('0x10')]()});}})[_0xd12f('0x18')](function(_0x60b06a){console[_0xd12f('0x19')](_0x60b06a);});}if(_0x1c31c8[_0xd12f('0x17')]===_0xd12f('0x1a')&&!_0x1c31c8['secret']){var _0x4b00a2;_0x4a1677[_0xd12f('0x1b')][_0xd12f('0x1c')]({'where':{'id':_0x1c31c8['SmsAccountId']},'raw':!![]})[_0xd12f('0x1d')](function(_0x12c884){_0x4b00a2=_0x12c884;if(_0x4b00a2&&_0x4b00a2[_0xd12f('0x1e')]){switch(_0x4b00a2['type']){case'twilio':var _0x22577d=require(_0xd12f('0x1f'));if(_0x4b00a2[_0xd12f('0x20')]&&_0x4b00a2[_0xd12f('0x21')]&&_0x4b00a2[_0xd12f('0x22')]){var _0x354cf0=new _0x22577d(_0x4b00a2['accountSid'],_0x4b00a2[_0xd12f('0x21')]);_0x354cf0[_0xd12f('0x23')][_0xd12f('0x24')]({'body':_0x1c31c8[_0xd12f('0xe')],'to':_0x1c31c8[_0xd12f('0x22')],'from':_0x4b00a2[_0xd12f('0x22')],'statusCallback':_0x4b00a2[_0xd12f('0x25')]+_0xd12f('0x26')+_0x1c31c8['id']+_0xd12f('0x27')+_0x4b00a2[_0xd12f('0x28')]})[_0xd12f('0x1d')](function(_0x322f78){if(_0x322f78[_0xd12f('0x29')]){return _0xd848dd[_0xd12f('0x15')]({'messageId':_0x322f78[_0xd12f('0x29')]});}})[_0xd12f('0x18')](function(_0x2218fe){logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x1f'),util[_0xd12f('0x2c')](_0x2218fe,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'twilio',_0xd12f('0x2d'));}break;case _0xd12f('0x2e'):var _0x4a5c97=_0xd12f('0x2f');if(_0x4b00a2['username']&&_0x4b00a2[_0xd12f('0x30')]){var _0x31ae8e={'recipient':[_0x1c31c8[_0xd12f('0x22')]],'message':_0x1c31c8[_0xd12f('0xe')],'message_type':_0x4b00a2['smsMethod']};if(_0x4b00a2['smsMethod']&&_0x4b00a2[_0xd12f('0x31')]!=='SI'){_0x31ae8e['sender']=_0x4b00a2[_0xd12f('0x22')];}var _0x45765e={'url':_0x4a5c97+'login?username='+_0x4b00a2['username']+'&password='+_0x4b00a2[_0xd12f('0x30')],'method':'GET'};rp(_0x45765e)[_0xd12f('0x1d')](function(_0x3b5d90){var _0x1de94d=_0x3b5d90['split'](';');var _0x17ab32={'user_key':_0x1de94d[0x0],'session_key':_0x1de94d[0x1]};_0x45765e={'url':_0x4a5c97+'sms','method':_0xd12f('0x32'),'headers':{'user_key':_0x17ab32['user_key'],'Session_key':_0x17ab32['session_key']},'json':!![],'body':_0x31ae8e};return rp(_0x45765e);})[_0xd12f('0x1d')](function(_0x39290e){if(_0x39290e[_0xd12f('0x33')]>=0x1){var _0x1dcc20={'messageId':_0x39290e[_0xd12f('0x34')]};if(_0x4b00a2[_0xd12f('0x31')]!=='GP'||!_0x4b00a2[_0xd12f('0x35')]){_0x1dcc20[_0xd12f('0x36')]=!![];}return _0xd848dd['update'](_0x1dcc20);}else{return logger['error'](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x2e'),util[_0xd12f('0x2c')](_0x39290e,{'showHidden':![],'depth':null}));}})['catch'](function(_0xa668d4){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),'afterCreate','skebby',util['inspect'](_0xa668d4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd12f('0x2a'),_0xd12f('0x2b'),'skebby',_0xd12f('0x37'));}break;case _0xd12f('0x38'):if(_0x4b00a2[_0xd12f('0x21')]){var _0x168b05={'recipient':_0x1c31c8[_0xd12f('0x22')],'message':_0x1c31c8['body'],'sender':_0x4b00a2['senderString']||_0x4b00a2['phone'],'authorization':_0x4b00a2[_0xd12f('0x21')]};var _0x5108a9={'method':_0xd12f('0x32'),'uri':_0xd12f('0x39'),'body':_0x168b05,'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x2ce514){var _0x5cb281={'messageId':_0x2ce514[_0xd12f('0x3a')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x5cb281[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x5cb281);})['catch'](function(_0x3fa8f6){logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x38'),util[_0xd12f('0x2c')](_0x3fa8f6,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x38'),_0xd12f('0x3b'));}break;case _0xd12f('0x3c'):if(_0x4b00a2[_0xd12f('0x3d')]&&_0x4b00a2['password']){var _0x168b05={'messages':[{'source':_0xd12f('0x3e'),'to':_0x1c31c8[_0xd12f('0x22')],'body':_0x1c31c8['body'],'from':_0x4b00a2[_0xd12f('0x3f')]||_0x4b00a2[_0xd12f('0x22')]}]};var _0x5df28f=util[_0xd12f('0x40')]('%s:%s',_0x4b00a2[_0xd12f('0x3d')],_0x4b00a2[_0xd12f('0x30')]);var _0x5108a9={'method':'POST','uri':_0xd12f('0x41'),'body':_0x168b05,'headers':{'Authorization':util[_0xd12f('0x40')](_0xd12f('0x42'),new Buffer(_0x5df28f)[_0xd12f('0x43')](_0xd12f('0x44')))},'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x1ab77e){if(_0x1ab77e[_0xd12f('0x45')]>=0xc8&&_0x1ab77e['http_code']<=0xce){if(_0x1ab77e[_0xd12f('0x46')]&&_0x1ab77e[_0xd12f('0x46')][_0xd12f('0x47')]>0x0){var _0x2c2385=_[_0xd12f('0x48')](_0x1ab77e['data'][_0xd12f('0x23')]);var _0x5ef50b={'messageId':_0x2c2385[_0xd12f('0x49')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x5ef50b[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x5ef50b);}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4a'),util[_0xd12f('0x2c')](_0x1ab77e,{'showHidden':![],'depth':null}));}}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xd12f('0x4a'),util['inspect'](_0x1ab77e,{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x48f312){logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),_0xd12f('0x4a'),util[_0xd12f('0x2c')](_0x48f312,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'clickSend',_0xd12f('0x37'));}break;case _0xd12f('0x4b'):if(_0x4b00a2[_0xd12f('0x4c')]&&_0x4b00a2[_0xd12f('0x21')]){var _0x168b05={'dst':_0x1c31c8['phone'],'text':_0x1c31c8[_0xd12f('0xe')],'src':_0x4b00a2[_0xd12f('0x3f')]||_0x4b00a2[_0xd12f('0x22')],'url':_0x4b00a2[_0xd12f('0x25')]+'/api/sms/messages/'+_0x1c31c8['id']+_0xd12f('0x27')+_0x4b00a2['token']};var _0x5df28f=util['format']('%s:%s',_0x4b00a2[_0xd12f('0x4c')],_0x4b00a2[_0xd12f('0x21')]);var _0x5108a9={'method':_0xd12f('0x32'),'uri':util[_0xd12f('0x40')](_0xd12f('0x4d'),_0x4b00a2[_0xd12f('0x4c')]),'body':_0x168b05,'headers':{'Authorization':util[_0xd12f('0x40')](_0xd12f('0x42'),new Buffer(_0x5df28f)[_0xd12f('0x43')](_0xd12f('0x44')))},'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x2dea93){var _0x3890c6={'messageId':_0x2dea93['message_uuid'][0x0]};return _0xd848dd[_0xd12f('0x15')](_0x3890c6);})[_0xd12f('0x18')](function(_0x4fb3ae){logger['error'](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x4b'),util[_0xd12f('0x2c')](_0x4fb3ae,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4b'),_0xd12f('0x4e'));}break;case _0xd12f('0x4f'):if(_0x4b00a2[_0xd12f('0x3d')]&&_0x4b00a2['password']){if(_0x4b00a2[_0xd12f('0x50')]){var _0x3d4402={'method':_0xd12f('0x32'),'uri':_0x4b00a2['baseUrl']+_0xd12f('0x51'),'body':{'username':_0x4b00a2['username'],'password':_0x4b00a2['password']},'json':!![]};return rp(_0x3d4402)[_0xd12f('0x1d')](function(_0x49df52){var _0x3899c3={'method':_0xd12f('0x32'),'uri':_0x4b00a2['baseUrl']+_0xd12f('0x52'),'body':{'messages':[{'from':_0x4b00a2[_0xd12f('0x22')],'destinations':[{'to':_0x1c31c8[_0xd12f('0x22')]}],'text':_0x1c31c8[_0xd12f('0xe')],'notifyUrl':_0x4b00a2[_0xd12f('0x25')]+_0xd12f('0x26')+_0x1c31c8['id']+'/status?token='+_0x4b00a2['token'],'notifyContentType':_0xd12f('0x53'),'callbackData':_0x4b00a2[_0xd12f('0x22')]+';'+_0x1c31c8['body']}]},'headers':{'Authorization':_0xd12f('0x54')+_0x49df52[_0xd12f('0x28')]},'json':!![]};return rp(_0x3899c3)[_0xd12f('0x1d')](function(_0x4feca){if(_0x4feca[_0xd12f('0x23')]){var _0x46c870={'messageId':_0x4feca[_0xd12f('0x23')][0x0]['messageId']};if(!_0x4b00a2[_0xd12f('0x35')]){_0x46c870['read']=!![];}return _0xd848dd[_0xd12f('0x15')](_0x46c870);}else{return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),util[_0xd12f('0x2c')](_0x4feca,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x74db43){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),util['inspect'](_0x74db43,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),_0xd12f('0x55'));}}else{logger['error'](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),_0xd12f('0x37'));}break;case'csc':var _0x5195bc=require(_0xd12f('0x56'));if(_0x4b00a2[_0xd12f('0x57')]){var _0x31b4b7={};_0x31b4b7[_0xd12f('0x58')]=_0x4b00a2[_0xd12f('0x3d')];_0x31b4b7[_0xd12f('0x22')]=_0x1c31c8[_0xd12f('0x22')];_0x31b4b7[_0xd12f('0x59')]=_0x4b00a2[_0xd12f('0x22')];_0x31b4b7[_0xd12f('0x5a')]=_0x1c31c8['body'];_0x31b4b7['timestamp']=+new Date();var _0x1cc1e4='';var _0x4586d6='';var _0x280074=Object[_0xd12f('0x5b')](_0x31b4b7);_0x280074[_0xd12f('0x5c')]();for(var _0x3bb69a=0x0;_0x3bb69a<_0x280074['length'];_0x3bb69a++){if(_0x1cc1e4!=''){_0x1cc1e4+='&';}_0x1cc1e4+=_0x280074[_0x3bb69a]+'='+encodeURIComponent(_0x31b4b7[_0x280074[_0x3bb69a]]);_0x4586d6+=_0x31b4b7[_0x280074[_0x3bb69a]];}_0x4586d6+=_0x4b00a2[_0xd12f('0x57')];_0x4586d6=_0x5195bc['createHash'](_0xd12f('0x5d'))[_0xd12f('0x15')](_0x4586d6)[_0xd12f('0x5e')](_0xd12f('0x5f'));if(_0x1cc1e4!==''){_0x1cc1e4+='&';}_0x1cc1e4+='signature='+_0x4586d6;var _0x45765e={'method':'GET','uri':_0x4b00a2['baseUrl']+'/external/get/send.php?'+_0x1cc1e4,'json':!![]};return rp(_0x45765e)[_0xd12f('0x1d')](function(_0x313276){var _0x40f4d1=Object[_0xd12f('0x5b')](_0x313276);if(_0x313276[_0x40f4d1[0x0]]['error']&&parseInt(_0x313276[_0x40f4d1[0x0]][_0xd12f('0x19')])===0x0){var _0x16400d={'messageId':_0x313276[_0x40f4d1[0x0]][_0xd12f('0x60')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x16400d[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x16400d);}else{return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x61'),util['inspect'](_0x313276[_0xd12f('0x19')],{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x82460e){return logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'csc',util[_0xd12f('0x2c')](_0x82460e,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x61'),_0xd12f('0x62'));}break;case'clickatell':if(_0x4b00a2[_0xd12f('0x57')]){var _0x245984={'method':_0xd12f('0x32'),'uri':_0xd12f('0x63'),'headers':{'Authorization':_0x4b00a2[_0xd12f('0x57')]},'body':{'content':_0x1c31c8[_0xd12f('0xe')],'to':[_0x1c31c8[_0xd12f('0x22')]],'from':_0x4b00a2['phone'],'binary':![],'clientMessageId':_0xd12f('0x64'),'charset':'UTF-8'},'json':!![]};rp(_0x245984)['then'](function(_0x3f076a){if(!_0x3f076a['error']){var _0x7a86ef={'messageId':_0x3f076a['messages'][0x0][_0xd12f('0x65')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x7a86ef[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x7a86ef);}else{return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x66'),util['inspect'](_0x3f076a[_0xd12f('0x19')],{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x2471a9){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x66'),util[_0xd12f('0x2c')](_0x2471a9,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x66'),'Missing\x20parameters:\x20apiKey');}break;case _0xd12f('0x67'):if(_0x4b00a2[_0xd12f('0x3d')]&&_0x4b00a2[_0xd12f('0x30')]){var _0x5df28f=util[_0xd12f('0x40')](_0xd12f('0x68'),_0x4b00a2[_0xd12f('0x3d')],_0x4b00a2[_0xd12f('0x30')]);var _0x5108a9={'method':_0xd12f('0x32'),'uri':_0xd12f('0x69')+_0x4b00a2['accountId']+_0xd12f('0x6a'),'body':{'to':[_0x1c31c8[_0xd12f('0x22')]],'text':_0x1c31c8[_0xd12f('0xe')],'from':_0x4b00a2[_0xd12f('0x22')],'applicationId':_0x4b00a2[_0xd12f('0x6b')]},'headers':{'Authorization':util[_0xd12f('0x40')](_0xd12f('0x42'),new Buffer(_0x5df28f)[_0xd12f('0x43')]('base64'))},'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x50217f){if(_0x50217f['id']){var _0x3016e5={'messageId':_0x50217f['id']};return _0xd848dd['update'](_0x3016e5);}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x67'),util[_0xd12f('0x2c')](_0x50217f,{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x5699f5){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','bandwidth',util[_0xd12f('0x2c')](_0x5699f5,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x67'),_0xd12f('0x37'));}break;case _0xd12f('0x6c'):if(_0x4b00a2['apiKey']){var _0x2c8fb7={};var _0x45765e={'method':'POST','uri':_0xd12f('0x6d'),'headers':{'Authorization':_0xd12f('0x6e')+_0x4b00a2[_0xd12f('0x57')],'Content-Type':_0xd12f('0x53')},'body':{'from':_0x4b00a2[_0xd12f('0x22')],'to':_0x1c31c8[_0xd12f('0x22')],'text':_0x1c31c8[_0xd12f('0xe')]},'json':!![]};return rp(_0x45765e)[_0xd12f('0x1d')](function(_0x5b2781){if(_0x5b2781['code']==0xca){_0x2c8fb7['message']=_0x5b2781;var _0x5076d9={'method':'POST','uri':_0xd12f('0x6f'),'headers':{'Authorization':_0xd12f('0x6e')+_0x4b00a2['apiKey'],'Content-Type':_0xd12f('0x53')},'body':{'refid':_0x2c8fb7[_0xd12f('0x70')][_0xd12f('0x71')]},'json':!![]};return rp(_0x5076d9)['then'](function(_0x1f6892){_0x2c8fb7['status']=_0x1f6892;var _0x14aec9={'messageId':_0x2c8fb7['message'][_0xd12f('0x71')],'read':!![]};return _0xd848dd[_0xd12f('0x15')](_0x14aec9);});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'intelepeer',util[_0xd12f('0x2c')](_0x5b2781,{'showHidden':![],'depth':null}));}})['catch'](function(_0x3b0a0a){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x6c'),util[_0xd12f('0x2c')](_0x3b0a0a,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xd12f('0x2a'),_0xd12f('0x2b'),'intelepeer',_0xd12f('0x72'));}break;}}})[_0xd12f('0x73')](function(){_0x59c17c();});}else{_0x59c17c();}}},'charset':_0xd12f('0x74'),'collate':_0xd12f('0x75')});};
\ No newline at end of file
index 484c933..be3825f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a46=['body','options','then','info','debug','lodash','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSmsMessage','SmsMessage','create'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x5a46,0x9b));var _0x65a4=function(_0x10995e,_0x5e3a08){_0x10995e=_0x10995e-0x0;var _0x3545e5=_0x5a46[_0x10995e];return _0x3545e5;};'use strict';var _=require(_0x65a4('0x0'));var util=require('util');var moment=require(_0x65a4('0x1'));var BPromise=require(_0x65a4('0x2'));var rs=require(_0x65a4('0x3'));var fs=require('fs');var Redis=require(_0x65a4('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x65a4('0x5'));var config=require(_0x65a4('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x65a4('0x7')]({'port':0x232a});config[_0x65a4('0x8')]=_[_0x65a4('0x9')](config[_0x65a4('0x8')],{'host':_0x65a4('0xa'),'port':0x18eb});var socket=require(_0x65a4('0xb'))(new Redis(config[_0x65a4('0x8')]));require(_0x65a4('0xc'))[_0x65a4('0xd')](socket);function respondWithRpcPromise(_0x3e4b87,_0x10bb07,_0x5f255b){return new BPromise(function(_0x2125b3,_0x314fcb){return client['request'](_0x3e4b87,_0x5f255b)['then'](function(_0x16b645){logger['info'](_0x65a4('0xe'),_0x10bb07,_0x65a4('0xf'));logger['debug'](_0x65a4('0x10'),_0x10bb07,_0x65a4('0xf'),JSON[_0x65a4('0x11')](_0x16b645));if(_0x16b645['error']){if(_0x16b645[_0x65a4('0x12')][_0x65a4('0x13')]===0x1f4){logger[_0x65a4('0x12')](_0x65a4('0xe'),_0x10bb07,_0x16b645[_0x65a4('0x12')][_0x65a4('0x14')]);return _0x314fcb(_0x16b645['error'][_0x65a4('0x14')]);}logger[_0x65a4('0x12')]('SmsMessage,\x20%s,\x20%s',_0x10bb07,_0x16b645['error'][_0x65a4('0x14')]);return _0x2125b3(_0x16b645[_0x65a4('0x12')][_0x65a4('0x14')]);}else{logger['info'](_0x65a4('0xe'),_0x10bb07,'request\x20sent');_0x2125b3(_0x16b645['result'][_0x65a4('0x14')]);}})[_0x65a4('0x15')](function(_0x1dcda4){logger[_0x65a4('0x12')](_0x65a4('0xe'),_0x10bb07,_0x1dcda4);_0x314fcb(_0x1dcda4);});});}exports[_0x65a4('0x16')]=function(_0x966dcd){var _0x43fc57=this;return new Promise(function(_0x1f66a5,_0x4b35d3){return db[_0x65a4('0x17')][_0x65a4('0x18')](_0x966dcd[_0x65a4('0x19')],{'raw':_0x966dcd[_0x65a4('0x1a')]?_0x966dcd[_0x65a4('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x65a4('0x1b')](function(_0xa3933d){logger[_0x65a4('0x1c')](_0x65a4('0x16'),_0x966dcd);logger[_0x65a4('0x1d')]('CreateSmsMessage',_0x966dcd,JSON[_0x65a4('0x11')](_0xa3933d));_0x1f66a5(_0xa3933d);})[_0x65a4('0x15')](function(_0x16a236){logger[_0x65a4('0x12')](_0x65a4('0x16'),_0x16a236[_0x65a4('0x14')],_0x966dcd);_0x4b35d3(_0x43fc57[_0x65a4('0x12')](0x1f4,_0x16a236[_0x65a4('0x14')]));});});};
\ No newline at end of file
+var _0xfa9d=['redis','defaults','localhost','./smsMessage.socket','register','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','SmsMessage','create','body','options','util','moment','randomstring','../../mysqldb','rpc','jayson/promise','client','http'];(function(_0xa99357,_0x50ffad){var _0x111875=function(_0x4dce0c){while(--_0x4dce0c){_0xa99357['push'](_0xa99357['shift']());}};_0x111875(++_0x50ffad);}(_0xfa9d,0x64));var _0xdfa9=function(_0x3d4d96,_0x104ecf){_0x3d4d96=_0x3d4d96-0x0;var _0x2689a9=_0xfa9d[_0x3d4d96];return _0x2689a9;};'use strict';var _=require('lodash');var util=require(_0xdfa9('0x0'));var moment=require(_0xdfa9('0x1'));var BPromise=require('bluebird');var rs=require(_0xdfa9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdfa9('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdfa9('0x4'));var config=require('../../config/environment');var jayson=require(_0xdfa9('0x5'));var client=jayson[_0xdfa9('0x6')][_0xdfa9('0x7')]({'port':0x232a});config[_0xdfa9('0x8')]=_[_0xdfa9('0x9')](config[_0xdfa9('0x8')],{'host':_0xdfa9('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdfa9('0x8')]));require(_0xdfa9('0xb'))[_0xdfa9('0xc')](socket);function respondWithRpcPromise(_0x2357e9,_0x27e0a2,_0x1d098d){return new BPromise(function(_0x3360a3,_0x1cc2c0){return client['request'](_0x2357e9,_0x1d098d)['then'](function(_0x2f5700){logger[_0xdfa9('0xd')]('SmsMessage,\x20%s,\x20%s',_0x27e0a2,_0xdfa9('0xe'));logger['debug'](_0xdfa9('0xf'),_0x27e0a2,_0xdfa9('0xe'),JSON[_0xdfa9('0x10')](_0x2f5700));if(_0x2f5700['error']){if(_0x2f5700['error']['code']===0x1f4){logger[_0xdfa9('0x11')](_0xdfa9('0x12'),_0x27e0a2,_0x2f5700['error'][_0xdfa9('0x13')]);return _0x1cc2c0(_0x2f5700[_0xdfa9('0x11')][_0xdfa9('0x13')]);}logger['error'](_0xdfa9('0x12'),_0x27e0a2,_0x2f5700[_0xdfa9('0x11')][_0xdfa9('0x13')]);return _0x3360a3(_0x2f5700['error'][_0xdfa9('0x13')]);}else{logger[_0xdfa9('0xd')](_0xdfa9('0x12'),_0x27e0a2,_0xdfa9('0xe'));_0x3360a3(_0x2f5700[_0xdfa9('0x14')][_0xdfa9('0x13')]);}})[_0xdfa9('0x15')](function(_0x2ea541){logger['error'](_0xdfa9('0x12'),_0x27e0a2,_0x2ea541);_0x1cc2c0(_0x2ea541);});});}exports[_0xdfa9('0x16')]=function(_0x13f743){var _0x4d7d0c=this;return new Promise(function(_0xc1218f,_0x1a52aa){return db[_0xdfa9('0x17')][_0xdfa9('0x18')](_0x13f743[_0xdfa9('0x19')],{'raw':_0x13f743[_0xdfa9('0x1a')]?_0x13f743['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3af370){logger['info']('CreateSmsMessage',_0x13f743);logger['debug'](_0xdfa9('0x16'),_0x13f743,JSON[_0xdfa9('0x10')](_0x3af370));_0xc1218f(_0x3af370);})[_0xdfa9('0x15')](function(_0x172304){logger['error'](_0xdfa9('0x16'),_0x172304[_0xdfa9('0x13')],_0x13f743);_0x1a52aa(_0x4d7d0c[_0xdfa9('0x11')](0x1f4,_0x172304['message']));});});};
\ No newline at end of file
index ec2fe00..9983fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ecb=['update','emit','removeListener','length','smsMessage:','./smsMessage.events','save','remove'];(function(_0x3bc350,_0x239339){var _0x1a2e3d=function(_0x9ee0b6){while(--_0x9ee0b6){_0x3bc350['push'](_0x3bc350['shift']());}};_0x1a2e3d(++_0x239339);}(_0x3ecb,0x75));var _0xb3ec=function(_0x3662b4,_0x503b4d){_0x3662b4=_0x3662b4-0x0;var _0x50928c=_0x3ecb[_0x3662b4];return _0x50928c;};'use strict';var SmsMessageEvents=require(_0xb3ec('0x0'));var events=[_0xb3ec('0x1'),_0xb3ec('0x2'),_0xb3ec('0x3')];function createListener(_0x18d4f0,_0x2e037f){return function(_0x2127f3){_0x2e037f[_0xb3ec('0x4')](_0x18d4f0,_0x2127f3);};}function removeListener(_0x59b8a1,_0x49597f){return function(){SmsMessageEvents[_0xb3ec('0x5')](_0x59b8a1,_0x49597f);};}exports['register']=function(_0x3ead67){for(var _0x13c0a4=0x0,_0x188a0c=events[_0xb3ec('0x6')];_0x13c0a4<_0x188a0c;_0x13c0a4++){var _0x48b2fd=events[_0x13c0a4];var _0x329e8a=createListener(_0xb3ec('0x7')+_0x48b2fd,_0x3ead67);SmsMessageEvents['on'](_0x48b2fd,_0x329e8a);}};
\ No newline at end of file
+var _0x3922=['length','smsMessage:','./smsMessage.events','save','remove','update','emit','register'];(function(_0x4706a6,_0x5a1c63){var _0x1bb705=function(_0x484ebb){while(--_0x484ebb){_0x4706a6['push'](_0x4706a6['shift']());}};_0x1bb705(++_0x5a1c63);}(_0x3922,0x1f2));var _0x2392=function(_0x3aff71,_0x493a7c){_0x3aff71=_0x3aff71-0x0;var _0x23b3ed=_0x3922[_0x3aff71];return _0x23b3ed;};'use strict';var SmsMessageEvents=require(_0x2392('0x0'));var events=[_0x2392('0x1'),_0x2392('0x2'),_0x2392('0x3')];function createListener(_0x45e1d9,_0x10fe0f){return function(_0xf795a2){_0x10fe0f[_0x2392('0x4')](_0x45e1d9,_0xf795a2);};}function removeListener(_0x3bc546,_0x42991b){return function(){SmsMessageEvents['removeListener'](_0x3bc546,_0x42991b);};}exports[_0x2392('0x5')]=function(_0x4197a2){for(var _0x2a49cf=0x0,_0x337618=events[_0x2392('0x6')];_0x2a49cf<_0x337618;_0x2a49cf++){var _0x5e0096=events[_0x2a49cf];var _0x3c350e=createListener(_0x2392('0x7')+_0x5e0096,_0x4197a2);SmsMessageEvents['on'](_0x5e0096,_0x3c350e);}};
\ No newline at end of file
index 87152d5..573b8cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69e5=['/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','create','addTeams','post','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./smsQueue.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x418ce8,_0x2d9def){var _0x4eabcd=function(_0xb27a9e){while(--_0xb27a9e){_0x418ce8['push'](_0x418ce8['shift']());}};_0x4eabcd(++_0x2d9def);}(_0x69e5,0x84));var _0x569e=function(_0x114984,_0x5c9593){_0x114984=_0x114984-0x0;var _0x44822b=_0x69e5[_0x114984];return _0x44822b;};'use strict';var multer=require(_0x569e('0x0'));var util=require(_0x569e('0x1'));var path=require(_0x569e('0x2'));var timeout=require(_0x569e('0x3'));var express=require(_0x569e('0x4'));var router=express[_0x569e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x569e('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x569e('0x7'));router[_0x569e('0x8')]('/',auth[_0x569e('0x9')](),controller[_0x569e('0xa')]);router['get'](_0x569e('0xb'),auth[_0x569e('0x9')](),controller[_0x569e('0xc')]);router[_0x569e('0x8')](_0x569e('0xd'),auth[_0x569e('0x9')](),controller[_0x569e('0xe')]);router[_0x569e('0x8')](_0x569e('0xf'),auth[_0x569e('0x9')](),controller[_0x569e('0x10')]);router['get'](_0x569e('0x11'),auth[_0x569e('0x9')](),controller[_0x569e('0x12')]);router[_0x569e('0x8')](_0x569e('0x13'),auth[_0x569e('0x9')](),controller['getAgents']);router['post']('/',auth[_0x569e('0x9')](),controller[_0x569e('0x14')]);router['post']('/:id/teams',auth[_0x569e('0x9')](),controller[_0x569e('0x15')]);router[_0x569e('0x16')]('/:id/users',auth[_0x569e('0x9')](),controller[_0x569e('0x17')]);router[_0x569e('0x18')](_0x569e('0xd'),auth[_0x569e('0x9')](),controller[_0x569e('0x19')]);router[_0x569e('0x1a')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x569e('0x1a')](_0x569e('0x11'),auth[_0x569e('0x9')](),controller[_0x569e('0x1b')]);router[_0x569e('0x1a')](_0x569e('0x13'),auth['isAuthenticated'](),controller[_0x569e('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x30e3=['addAgents','update','/:id','destroy','delete','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams'];(function(_0x1f2104,_0x3d1a56){var _0x590031=function(_0x16e37d){while(--_0x16e37d){_0x1f2104['push'](_0x1f2104['shift']());}};_0x590031(++_0x3d1a56);}(_0x30e3,0x1f3));var _0x330e=function(_0x21ce32,_0x2ccd1c){_0x21ce32=_0x21ce32-0x0;var _0xd6b087=_0x30e3[_0x21ce32];return _0xd6b087;};'use strict';var multer=require(_0x330e('0x0'));var util=require(_0x330e('0x1'));var path=require(_0x330e('0x2'));var timeout=require(_0x330e('0x3'));var express=require(_0x330e('0x4'));var router=express['Router']();var fs_extra=require(_0x330e('0x5'));var auth=require(_0x330e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x330e('0x7'));var controller=require(_0x330e('0x8'));router[_0x330e('0x9')]('/',auth[_0x330e('0xa')](),controller[_0x330e('0xb')]);router['get'](_0x330e('0xc'),auth['isAuthenticated'](),controller[_0x330e('0xd')]);router['get']('/:id',auth[_0x330e('0xa')](),controller[_0x330e('0xe')]);router[_0x330e('0x9')](_0x330e('0xf'),auth[_0x330e('0xa')](),controller['getMembers']);router[_0x330e('0x9')](_0x330e('0x10'),auth[_0x330e('0xa')](),controller[_0x330e('0x11')]);router[_0x330e('0x9')](_0x330e('0x12'),auth[_0x330e('0xa')](),controller[_0x330e('0x13')]);router[_0x330e('0x14')]('/',auth['isAuthenticated'](),controller[_0x330e('0x15')]);router['post'](_0x330e('0x10'),auth[_0x330e('0xa')](),controller[_0x330e('0x16')]);router[_0x330e('0x14')](_0x330e('0x12'),auth[_0x330e('0xa')](),controller[_0x330e('0x17')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x330e('0x18')]);router['delete'](_0x330e('0x19'),auth[_0x330e('0xa')](),controller[_0x330e('0x1a')]);router[_0x330e('0x1b')](_0x330e('0x10'),auth[_0x330e('0xa')](),controller[_0x330e('0x1c')]);router[_0x330e('0x1b')](_0x330e('0x12'),auth[_0x330e('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 4ccdc38..b368e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x320a=['rrmemory','beepall','roundrobin','STRING','INTEGER'];(function(_0x332875,_0x5675dc){var _0x16b33d=function(_0x4100ff){while(--_0x4100ff){_0x332875['push'](_0x332875['shift']());}};_0x16b33d(++_0x5675dc);}(_0x320a,0xb2));var _0xa320=function(_0x58dafc,_0x7f27b3){_0x58dafc=_0x58dafc-0x0;var _0x5cf7b2=_0x320a[_0x58dafc];return _0x5cf7b2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xa320('0x0')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa320('0x0')]},'timeout':{'type':Sequelize[_0xa320('0x1')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xa320('0x2'),_0xa320('0x3'),_0xa320('0x4'))}};
\ No newline at end of file
+var _0x95f0=['STRING','name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x205ede,_0x2f0d91){var _0x266c44=function(_0x591731){while(--_0x591731){_0x205ede['push'](_0x205ede['shift']());}};_0x266c44(++_0x2f0d91);}(_0x95f0,0x7e));var _0x095f=function(_0x3fd7be,_0x19483d){_0x3fd7be=_0x3fd7be-0x0;var _0x525660=_0x95f0[_0x3fd7be];return _0x525660;};'use strict';var Sequelize=require(_0x095f('0x0'));module[_0x095f('0x1')]={'name':{'type':Sequelize[_0x095f('0x2')],'unique':_0x095f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x095f('0x2')]},'timeout':{'type':Sequelize[_0x095f('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x095f('0x5')](_0x095f('0x6'),_0x095f('0x7'),'roundrobin')}};
\ No newline at end of file
index 16c3311..1977faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['ejs','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','SmsQueues','UserProfileResource','destroy','error','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserSmsQueue','hasOwnProperty','SmsQueueId','agent','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','ids','User','Agents','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','transaction','isEmpty','userSmsQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x59dc86,_0x34812a){var _0x37c79c=function(_0x2e838c){while(--_0x2e838c){_0x59dc86['push'](_0x59dc86['shift']());}};_0x37c79c(++_0x34812a);}(_0x77e6,0x1a6));var _0x677e=function(_0x28b511,_0x2fce48){_0x28b511=_0x28b511-0x0;var _0x3d9779=_0x77e6[_0x28b511];return _0x3d9779;};'use strict';var emlformat=require(_0x677e('0x0'));var rimraf=require(_0x677e('0x1'));var zipdir=require(_0x677e('0x2'));var jsonpatch=require(_0x677e('0x3'));var rp=require(_0x677e('0x4'));var moment=require(_0x677e('0x5'));var BPromise=require(_0x677e('0x6'));var Mustache=require(_0x677e('0x7'));var util=require('util');var path=require(_0x677e('0x8'));var sox=require(_0x677e('0x9'));var csv=require('to-csv');var ejs=require(_0x677e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x677e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x677e('0xc'));var deskjs=require(_0x677e('0xd'));var toCsv=require(_0x677e('0xe'));var querystring=require(_0x677e('0xf'));var Papa=require('papaparse');var Redis=require(_0x677e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x677e('0x11'));var as=require(_0x677e('0x12'));var hardwareService=require(_0x677e('0x13'));var logger=require(_0x677e('0x14'))(_0x677e('0x15'));var utils=require(_0x677e('0x16'));var config=require(_0x677e('0x17'));var licenseUtil=require(_0x677e('0x18'));var db=require(_0x677e('0x19'))['db'];config[_0x677e('0x1a')]=_[_0x677e('0x1b')](config[_0x677e('0x1a')],{'host':_0x677e('0x1c'),'port':0x18eb});var socket=require(_0x677e('0x1d'))(new Redis(config['redis']));require('./smsQueue.socket')['register'](socket);function respondWithStatusCode(_0x213a50,_0x1dbe16){_0x1dbe16=_0x1dbe16||0xcc;return function(_0x105c88){if(_0x105c88){return _0x213a50[_0x677e('0x1e')](_0x1dbe16);}return _0x213a50[_0x677e('0x1f')](_0x1dbe16)[_0x677e('0x20')]();};}function respondWithResult(_0x24c9eb,_0xe88242){_0xe88242=_0xe88242||0xc8;return function(_0x251069){if(_0x251069){return _0x24c9eb[_0x677e('0x1f')](_0xe88242)[_0x677e('0x21')](_0x251069);}};}function respondWithFilteredResult(_0xe4d960,_0x49d428){return function(_0x1c5124){if(_0x1c5124){var _0x2ef2bf=typeof _0x49d428[_0x677e('0x22')]===_0x677e('0x23')&&typeof _0x49d428[_0x677e('0x24')]===_0x677e('0x23');var _0x52f65d=_0x1c5124[_0x677e('0x25')];var _0x4bfbb6=_0x2ef2bf?0x0:_0x49d428[_0x677e('0x22')];var _0x267aac=_0x2ef2bf?_0x1c5124[_0x677e('0x25')]:_0x49d428['offset']+_0x49d428[_0x677e('0x24')];var _0x1a6122;if(_0x267aac>=_0x52f65d){_0x267aac=_0x52f65d;_0x1a6122=0xc8;}else{_0x1a6122=0xce;}_0xe4d960[_0x677e('0x1f')](_0x1a6122);return _0xe4d960[_0x677e('0x26')](_0x677e('0x27'),_0x4bfbb6+'-'+_0x267aac+'/'+_0x52f65d)[_0x677e('0x21')](_0x1c5124);}return null;};}function patchUpdates(_0x3a7895){return function(_0x52ee8b){try{jsonpatch['apply'](_0x52ee8b,_0x3a7895,!![]);}catch(_0x52d915){return BPromise[_0x677e('0x28')](_0x52d915);}return _0x52ee8b[_0x677e('0x29')]();};}function saveUpdates(_0x31a1e4,_0x540d0e){return function(_0x424e5d){if(_0x424e5d){return _0x424e5d[_0x677e('0x2a')](_0x31a1e4)[_0x677e('0x2b')](function(_0x42f2b8){return _0x42f2b8;});}return null;};}function removeEntity(_0x2c51d3,_0x3f0646){return function(_0x5e5397){if(_0x5e5397){return _0x5e5397['destroy']()[_0x677e('0x2b')](function(){var _0x184f68=_0x5e5397['get']({'plain':!![]});var _0x51e39d=_0x677e('0x2c');return db[_0x677e('0x2d')][_0x677e('0x2e')]({'where':{'type':_0x51e39d,'resourceId':_0x184f68['id']}})[_0x677e('0x2b')](function(){return _0x5e5397;});})[_0x677e('0x2b')](function(){_0x2c51d3['status'](0xcc)[_0x677e('0x20')]();});}};}function handleEntityNotFound(_0x2a6033,_0xeca8e2){return function(_0x1e2694){if(!_0x1e2694){_0x2a6033[_0x677e('0x1e')](0x194);}return _0x1e2694;};}function handleError(_0x2bd6fb,_0x9179a0){_0x9179a0=_0x9179a0||0x1f4;return function(_0x10eb66){logger[_0x677e('0x2f')](_0x10eb66['stack']);if(_0x10eb66[_0x677e('0x30')]){delete _0x10eb66[_0x677e('0x30')];}_0x2bd6fb[_0x677e('0x1f')](_0x9179a0)[_0x677e('0x31')](_0x10eb66);};}exports[_0x677e('0x32')]=function(_0x16f516,_0x34bb3d){var _0x65331={},_0x3b875f={},_0x1d9756={'count':0x0,'rows':[]};var _0x4d0c01=_[_0x677e('0x33')](db[_0x677e('0x34')][_0x677e('0x35')],function(_0x2570b9){return{'name':_0x2570b9[_0x677e('0x36')],'type':_0x2570b9[_0x677e('0x37')]['key']};});_0x3b875f[_0x677e('0x38')]=_[_0x677e('0x33')](_0x4d0c01,_0x677e('0x30'));_0x3b875f['query']=_[_0x677e('0x39')](_0x16f516[_0x677e('0x3a')]);_0x3b875f[_0x677e('0x3b')]=_[_0x677e('0x3c')](_0x3b875f[_0x677e('0x38')],_0x3b875f['query']);_0x65331[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x3b875f[_0x677e('0x38')],qs[_0x677e('0x3e')](_0x16f516['query'][_0x677e('0x3e')]));_0x65331[_0x677e('0x3d')]=_0x65331[_0x677e('0x3d')]['length']?_0x65331['attributes']:_0x3b875f[_0x677e('0x38')];if(!_0x16f516[_0x677e('0x3a')]['hasOwnProperty'](_0x677e('0x3f'))){_0x65331[_0x677e('0x24')]=qs['limit'](_0x16f516['query'][_0x677e('0x24')]);_0x65331[_0x677e('0x22')]=qs['offset'](_0x16f516['query'][_0x677e('0x22')]);}_0x65331[_0x677e('0x40')]=qs[_0x677e('0x41')](_0x16f516['query'][_0x677e('0x41')]);_0x65331[_0x677e('0x42')]=qs[_0x677e('0x3b')](_[_0x677e('0x43')](_0x16f516[_0x677e('0x3a')],_0x3b875f['filters']),_0x4d0c01);if(_0x16f516['query'][_0x677e('0x44')]){_0x65331[_0x677e('0x42')]=_[_0x677e('0x45')](_0x65331[_0x677e('0x42')],{'$or':_[_0x677e('0x33')](_0x4d0c01,function(_0x2f8ebb){if(_0x2f8ebb[_0x677e('0x37')]!==_0x677e('0x46')){var _0x78202e={};_0x78202e[_0x2f8ebb[_0x677e('0x30')]]={'$like':'%'+_0x16f516['query']['filter']+'%'};return _0x78202e;}})});}_0x65331=_[_0x677e('0x45')]({},_0x65331,_0x16f516[_0x677e('0x47')]);var _0x5abab2={'where':_0x65331[_0x677e('0x42')]};return db['SmsQueue'][_0x677e('0x25')](_0x5abab2)[_0x677e('0x2b')](function(_0x283aaa){_0x1d9756[_0x677e('0x25')]=_0x283aaa;if(_0x16f516[_0x677e('0x3a')][_0x677e('0x48')]){_0x65331['include']=[{'all':!![]}];}return db[_0x677e('0x34')][_0x677e('0x49')](_0x65331);})[_0x677e('0x2b')](function(_0x33fce2){_0x1d9756[_0x677e('0x4a')]=_0x33fce2;return _0x1d9756;})[_0x677e('0x2b')](respondWithFilteredResult(_0x34bb3d,_0x65331))['catch'](handleError(_0x34bb3d,null));};exports[_0x677e('0x4b')]=function(_0x5ca3db,_0x3211a9){var _0x2470d0={'raw':!![],'where':{'id':_0x5ca3db[_0x677e('0x4c')]['id']}},_0x3609da={};_0x3609da[_0x677e('0x38')]=_[_0x677e('0x39')](db[_0x677e('0x34')][_0x677e('0x35')]);_0x3609da[_0x677e('0x3a')]=_[_0x677e('0x39')](_0x5ca3db['query']);_0x3609da[_0x677e('0x3b')]=_['intersection'](_0x3609da['model'],_0x3609da[_0x677e('0x3a')]);_0x2470d0[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x3609da[_0x677e('0x38')],qs[_0x677e('0x3e')](_0x5ca3db['query'][_0x677e('0x3e')]));_0x2470d0[_0x677e('0x3d')]=_0x2470d0[_0x677e('0x3d')][_0x677e('0x4d')]?_0x2470d0[_0x677e('0x3d')]:_0x3609da['model'];if(_0x5ca3db[_0x677e('0x3a')][_0x677e('0x48')]){_0x2470d0[_0x677e('0x4e')]=[{'all':!![]}];}_0x2470d0=_['merge']({},_0x2470d0,_0x5ca3db[_0x677e('0x47')]);return db['SmsQueue'][_0x677e('0x4f')](_0x2470d0)['then'](handleEntityNotFound(_0x3211a9,null))['then'](respondWithResult(_0x3211a9,null))[_0x677e('0x50')](handleError(_0x3211a9,null));};exports[_0x677e('0x51')]=function(_0x1f767f,_0x3ff832){return db['SmsQueue'][_0x677e('0x51')](_0x1f767f[_0x677e('0x52')],{})['then'](function(_0x5e93e9){var _0x558d43=_0x1f767f[_0x677e('0x53')][_0x677e('0x54')]({'plain':!![]});if(!_0x558d43)throw new Error(_0x677e('0x55'));if(_0x558d43['role']===_0x677e('0x53')){var _0x4fa910=_0x5e93e9['get']({'plain':!![]});var _0x3bb4d8='SmsQueues';return db[_0x677e('0x56')][_0x677e('0x4f')]({'where':{'name':_0x3bb4d8,'userProfileId':_0x558d43[_0x677e('0x57')]},'raw':!![]})[_0x677e('0x2b')](function(_0x410012){if(_0x410012&&_0x410012[_0x677e('0x58')]===0x0){return db[_0x677e('0x2d')]['create']({'name':_0x4fa910['name'],'resourceId':_0x4fa910['id'],'type':_0x410012['name'],'sectionId':_0x410012['id']},{})[_0x677e('0x2b')](function(){return _0x5e93e9;});}else{return _0x5e93e9;}})[_0x677e('0x50')](function(_0x108d48){logger[_0x677e('0x2f')](_0x677e('0x59'),_0x108d48);throw _0x108d48;});}return _0x5e93e9;})[_0x677e('0x2b')](respondWithResult(_0x3ff832,0xc9))['catch'](handleError(_0x3ff832,null));};exports[_0x677e('0x2a')]=function(_0xe6654c,_0x5d4ba5){if(_0xe6654c[_0x677e('0x52')]['id']){delete _0xe6654c['body']['id'];}return db[_0x677e('0x34')][_0x677e('0x4f')]({'where':{'id':_0xe6654c[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x5d4ba5,null))['then'](saveUpdates(_0xe6654c[_0x677e('0x52')],null))['then'](respondWithResult(_0x5d4ba5,null))[_0x677e('0x50')](handleError(_0x5d4ba5,null));};exports[_0x677e('0x2e')]=function(_0x6e6f2e,_0x1c6f18){return db[_0x677e('0x34')]['find']({'where':{'id':_0x6e6f2e[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x1c6f18,null))[_0x677e('0x2b')](removeEntity(_0x1c6f18,null))['catch'](handleError(_0x1c6f18,null));};exports[_0x677e('0x5a')]=function(_0x8c6495,_0xaa218d){return db[_0x677e('0x34')][_0x677e('0x5a')]()[_0x677e('0x2b')](respondWithResult(_0xaa218d,null))['catch'](handleError(_0xaa218d,null));};exports[_0x677e('0x5b')]=function(_0x5eb65e,_0x4c48a4,_0x38b717){var _0x52d973={'raw':!![],'where':{}},_0x5ddc5f={},_0x69c67c;return db['SmsQueue'][_0x677e('0x5c')]({'where':{'id':_0x5eb65e[_0x677e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4c48a4,null))[_0x677e('0x2b')](function(_0x100be4){if(_0x100be4){_0x69c67c=_0x100be4[_0x677e('0x54')]({'plain':!![]});_0x5ddc5f[_0x677e('0x38')]=_[_0x677e('0x39')](db[_0x677e('0x5d')]['rawAttributes']);_0x5ddc5f[_0x677e('0x3a')]=_[_0x677e('0x39')](_0x5eb65e[_0x677e('0x3a')]);_0x5ddc5f['filters']=_[_0x677e('0x3c')](_0x5ddc5f[_0x677e('0x38')],_0x5ddc5f[_0x677e('0x3a')]);_0x52d973[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x5ddc5f[_0x677e('0x38')],qs[_0x677e('0x3e')](_0x5eb65e[_0x677e('0x3a')]['fields']));_0x52d973[_0x677e('0x3d')]=_0x52d973[_0x677e('0x3d')][_0x677e('0x4d')]?_0x52d973[_0x677e('0x3d')]:_0x5ddc5f[_0x677e('0x38')];if(!_0x5eb65e['query'][_0x677e('0x5e')](_0x677e('0x3f'))){_0x52d973[_0x677e('0x24')]=qs[_0x677e('0x24')](_0x5eb65e['query'][_0x677e('0x24')]);_0x52d973[_0x677e('0x22')]=qs[_0x677e('0x22')](_0x5eb65e[_0x677e('0x3a')][_0x677e('0x22')]);}_0x52d973[_0x677e('0x40')]=qs[_0x677e('0x41')](_0x5eb65e[_0x677e('0x3a')][_0x677e('0x41')]);_0x52d973[_0x677e('0x42')]=qs[_0x677e('0x3b')](_['pick'](_0x5eb65e['query'],_0x5ddc5f[_0x677e('0x3b')]));_0x52d973[_0x677e('0x42')][_0x677e('0x5f')]=_0x100be4['id'];if(_0x5eb65e[_0x677e('0x3a')][_0x677e('0x44')]){_0x52d973[_0x677e('0x42')]=_['merge'](_0x52d973[_0x677e('0x42')],{'$or':_[_0x677e('0x33')](_0x52d973[_0x677e('0x3d')],function(_0x949a37){var _0x44b96a={};_0x44b96a[_0x949a37]={'$like':'%'+_0x5eb65e[_0x677e('0x3a')]['filter']+'%'};return _0x44b96a;})});}_0x52d973=_[_0x677e('0x45')]({},_0x52d973,_0x5eb65e['options']);return db['UserSmsQueue'][_0x677e('0x49')](_0x52d973);}})['then'](function(_0x49c583){if(_0x49c583){return db['User']['findAndCountAll']({'where':{'id':_[_0x677e('0x33')](_0x49c583,'UserId'),'role':_0x677e('0x60')},'attributes':['id',_0x677e('0x30'),'smsPause',_0x677e('0x61'),_0x677e('0x62')]});}})[_0x677e('0x2b')](function(_0x1f6412){if(_0x1f6412){return{'count':_0x1f6412[_0x677e('0x25')],'rows':_[_0x677e('0x33')](_0x1f6412['rows'],function(_0x15a176){return{'membername':_0x15a176['name'],'UserId':_0x15a176['id'],'queue_name':_0x69c67c[_0x677e('0x30')],'SmsQueueId':_0x69c67c['id'],'interface':util['format'](_0x677e('0x63'),_0x677e('0x64'),_0x15a176[_0x677e('0x30')]),'penalty':0x0,'paused':_0x15a176['smsPause'],'createdAt':_0x15a176['createdAt'],'updatedAt':_0x15a176['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4c48a4,_0x52d973))[_0x677e('0x50')](handleError(_0x4c48a4,null));};exports[_0x677e('0x65')]=function(_0x333634,_0x318eb2,_0xff9fdf){var _0x2f9c58={};var _0x2b1639={};var _0x642312;var _0x337b52;return db[_0x677e('0x34')][_0x677e('0x5c')]({'where':{'id':_0x333634['params']['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x318eb2,null))[_0x677e('0x2b')](function(_0x5b07c5){if(_0x5b07c5){_0x642312=_0x5b07c5;_0x2b1639[_0x677e('0x38')]=_[_0x677e('0x39')](db[_0x677e('0x66')][_0x677e('0x35')]);_0x2b1639[_0x677e('0x3a')]=_[_0x677e('0x39')](_0x333634[_0x677e('0x3a')]);_0x2b1639[_0x677e('0x3b')]=_[_0x677e('0x3c')](_0x2b1639['model'],_0x2b1639['query']);_0x2f9c58[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x2b1639[_0x677e('0x38')],qs[_0x677e('0x3e')](_0x333634['query'][_0x677e('0x3e')]));_0x2f9c58[_0x677e('0x3d')]=_0x2f9c58[_0x677e('0x3d')]['length']?_0x2f9c58['attributes']:_0x2b1639['model'];_0x2f9c58[_0x677e('0x40')]=qs[_0x677e('0x41')](_0x333634['query'][_0x677e('0x41')]);_0x2f9c58[_0x677e('0x42')]=qs[_0x677e('0x3b')](_[_0x677e('0x43')](_0x333634['query'],_0x2b1639['filters']));if(_0x333634[_0x677e('0x3a')][_0x677e('0x44')]){_0x2f9c58[_0x677e('0x42')]=_[_0x677e('0x45')](_0x2f9c58['where'],{'$or':_['map'](_0x2f9c58['attributes'],function(_0x3c2ba0){var _0x24fd7b={};_0x24fd7b[_0x3c2ba0]={'$like':'%'+_0x333634['query']['filter']+'%'};return _0x24fd7b;})});}_0x2f9c58=_[_0x677e('0x45')]({},_0x2f9c58,_0x333634['options']);return _0x642312['getTeams'](_0x2f9c58);}})[_0x677e('0x2b')](function(_0x42746){if(_0x42746){_0x337b52=_0x42746[_0x677e('0x4d')];if(!_0x333634[_0x677e('0x3a')]['hasOwnProperty']('nolimit')){_0x2f9c58['limit']=qs[_0x677e('0x24')](_0x333634[_0x677e('0x3a')][_0x677e('0x24')]);_0x2f9c58[_0x677e('0x22')]=qs[_0x677e('0x22')](_0x333634[_0x677e('0x3a')]['offset']);}return _0x642312[_0x677e('0x65')](_0x2f9c58);}})['then'](function(_0x4b418d){if(_0x4b418d){return _0x4b418d?{'count':_0x337b52,'rows':_0x4b418d}:null;}})[_0x677e('0x2b')](respondWithResult(_0x318eb2,null))[_0x677e('0x50')](handleError(_0x318eb2,null));};exports['addTeams']=function(_0x1f2b4b,_0x22690c,_0x216182){var _0x4df9ba=_0x1f2b4b['body'][_0x677e('0x67')];return db['Team']['findAll']({'where':{'id':_0x4df9ba},'attributes':['id'],'include':[{'model':db[_0x677e('0x68')],'as':_0x677e('0x69'),'attributes':['id',_0x677e('0x30'),'online','voicePause',_0x677e('0x6a')],'raw':!![]}]})[_0x677e('0x2b')](function(_0x387c16){if(_0x387c16){var _0x4ebfa3=_[_0x677e('0x6b')](_0x387c16,function(_0x7edc45){var _0x5c8cd9=_0x7edc45[_0x677e('0x54')]({'plain':!![]});return _0x5c8cd9['Agents'];});return db[_0x677e('0x34')][_0x677e('0x4f')]({'where':{'id':_0x1f2b4b['params']['id']}})[_0x677e('0x2b')](function(_0x12cb20){return db[_0x677e('0x6c')]['transaction'](function(_0x565b36){return _0x12cb20['addTeams'](_0x4df9ba,{'transaction':_0x565b36})[_0x677e('0x2b')](function(){return BPromise[_0x677e('0x6d')](_0x4ebfa3,function(_0x17859a){return db[_0x677e('0x5d')][_0x677e('0x6e')]({'where':{'UserId':_0x17859a['id'],'SmsQueueId':_0x1f2b4b[_0x677e('0x4c')]['id']},'transaction':_0x565b36});});})[_0x677e('0x2b')](function(){_0x4ebfa3[_0x677e('0x6f')](function(_0x31ed60){socket[_0x677e('0x70')](_0x677e('0x71'),{'UserId':_0x31ed60['id'],'SmsQueueId':_0x12cb20['id']});});});});});}})[_0x677e('0x2b')](respondWithStatusCode(_0x22690c,null))['catch'](handleError(_0x22690c,null));};exports[_0x677e('0x72')]=function(_0x585593,_0x59bded,_0x487107){return db[_0x677e('0x66')][_0x677e('0x49')]({'where':{'id':_0x585593[_0x677e('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0x677e('0x68')],'as':_0x677e('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x59bded,null))['then'](function(_0x32edc3){var _0x59cf17=_[_0x677e('0x33')](_0x32edc3,'id');var _0x4b6280=[];var _0x1cf5a8=[];var _0x2171ec=squel['select']();_0x2171ec[_0x677e('0x73')](_0x677e('0x74'))[_0x677e('0x75')](_0x677e('0x76'),'tq')[_0x677e('0x77')](_0x677e('0x78'),'ut',_0x677e('0x79'))[_0x677e('0x42')](_0x677e('0x7a'),_0x585593[_0x677e('0x4c')]['id']);for(var _0x5a1b4a=0x0;_0x5a1b4a<_0x32edc3['length'];_0x5a1b4a+=0x1){let _0x31dd93=_0x32edc3[_0x5a1b4a];for(var _0x18bc64=0x0;_0x18bc64<_0x31dd93[_0x677e('0x69')]['length'];_0x18bc64+=0x1){let _0x1f5918=_0x31dd93[_0x677e('0x69')][_0x18bc64];var _0x12f311=_0x2171ec[_0x677e('0x7b')]();_0x12f311['where'](_0x677e('0x7c'),_0x1f5918['id']);_0x1cf5a8[_0x677e('0x7d')](db[_0x677e('0x6c')][_0x677e('0x3a')](_0x12f311['toString'](),{'type':db['sequelize'][_0x677e('0x7e')][_0x677e('0x7f')]})['then'](function(_0x368f80){if(_0x368f80[_0x677e('0x4d')]===0x1){return _0x1f5918['id'];}else{var _0x41968b=_[_0x677e('0x80')](_[_0x677e('0x33')](_0x368f80,_0x677e('0x81')),function(_0x36901a){return _[_0x677e('0x82')](_0x59cf17,_0x36901a);});if(_0x41968b){return _0x1f5918['id'];}}}));}}return BPromise[_0x677e('0x83')](_0x1cf5a8)[_0x677e('0x2b')](function(_0x4a6a8c){_0x4b6280=_(_0x4b6280)[_0x677e('0x84')](_0x4a6a8c)[_0x677e('0x85')]()[_0x677e('0x86')]();return db[_0x677e('0x34')][_0x677e('0x4f')]({'where':{'id':_0x585593['params']['id']}})[_0x677e('0x2b')](function(_0x6f2bee){return db['sequelize'][_0x677e('0x87')](function(_0x17c944){return _0x6f2bee[_0x677e('0x72')](_0x585593[_0x677e('0x3a')]['ids'],{'transaction':_0x17c944})[_0x677e('0x2b')](function(){if(!_[_0x677e('0x88')](_0x4b6280)){return _0x6f2bee['removeAgents'](_0x4b6280,{'transaction':_0x17c944});}})[_0x677e('0x2b')](function(){_0x4b6280[_0x677e('0x6f')](function(_0xf8fae6){socket[_0x677e('0x70')](_0x677e('0x89'),{'UserId':_0xf8fae6,'SmsQueueId':_0x6f2bee['id']});});});});});});})['then'](respondWithStatusCode(_0x59bded,null))[_0x677e('0x50')](handleError(_0x59bded,null));};exports[_0x677e('0x8a')]=function(_0x82371a,_0x49ed9c,_0x218773){return db[_0x677e('0x34')]['find']({'where':{'id':_0x82371a[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x49ed9c,null))['then'](function(_0xfc07b9){if(_0xfc07b9){return _0xfc07b9[_0x677e('0x8a')](_0x82371a[_0x677e('0x52')][_0x677e('0x67')],_[_0x677e('0x8b')](_0x82371a[_0x677e('0x52')],['ids','id'])||{})[_0x677e('0x8c')](function(_0x79e0ea){for(var _0x50a65f=0x0;_0x50a65f<_0x82371a[_0x677e('0x52')]['ids']['length'];_0x50a65f+=0x1){socket['emit'](_0x677e('0x71'),{'UserId':Number(_0x82371a[_0x677e('0x52')][_0x677e('0x67')][_0x50a65f]),'SmsQueueId':Number(_0x82371a[_0x677e('0x4c')]['id'])});}return _0x79e0ea;});}})['then'](respondWithResult(_0x49ed9c,null))['catch'](handleError(_0x49ed9c,null));};exports[_0x677e('0x8d')]=function(_0x316104,_0x48c59e,_0x122a82){return db[_0x677e('0x34')][_0x677e('0x4f')]({'where':{'id':_0x316104[_0x677e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x48c59e,null))[_0x677e('0x2b')](function(_0x4a5ded){if(_0x4a5ded){return _0x4a5ded[_0x677e('0x8d')](_0x316104['query']['ids'])[_0x677e('0x2b')](function(){if(_[_0x677e('0x8e')](_0x316104[_0x677e('0x3a')][_0x677e('0x67')])){for(var _0x11f41a=0x0;_0x11f41a<_0x316104[_0x677e('0x3a')][_0x677e('0x67')][_0x677e('0x4d')];_0x11f41a+=0x1){socket[_0x677e('0x70')]('userSmsQueue:remove',{'UserId':Number(_0x316104[_0x677e('0x3a')][_0x677e('0x67')][_0x11f41a]),'SmsQueueId':Number(_0x316104['params']['id'])});}}else{socket[_0x677e('0x70')]('userSmsQueue:remove',{'UserId':Number(_0x316104[_0x677e('0x3a')][_0x677e('0x67')]),'SmsQueueId':Number(_0x316104[_0x677e('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x48c59e,null))[_0x677e('0x50')](handleError(_0x48c59e,null));};exports[_0x677e('0x8f')]=function(_0xd330fa,_0x45fcdb,_0x335c41){var _0x3cf834={};var _0x237320={};var _0x19de60;var _0xe8559e;return db[_0x677e('0x34')][_0x677e('0x5c')]({'where':{'id':_0xd330fa[_0x677e('0x4c')]['id']}})[_0x677e('0x2b')](handleEntityNotFound(_0x45fcdb,null))[_0x677e('0x2b')](function(_0x477428){if(_0x477428){_0x19de60=_0x477428;_0x237320[_0x677e('0x38')]=_[_0x677e('0x39')](db[_0x677e('0x68')]['rawAttributes']);_0x237320[_0x677e('0x3a')]=_[_0x677e('0x39')](_0xd330fa[_0x677e('0x3a')]);_0x237320[_0x677e('0x3b')]=_['intersection'](_0x237320['model'],_0x237320[_0x677e('0x3a')]);_0x3cf834[_0x677e('0x3d')]=_[_0x677e('0x3c')](_0x237320[_0x677e('0x38')],qs[_0x677e('0x3e')](_0xd330fa[_0x677e('0x3a')][_0x677e('0x3e')]));_0x3cf834[_0x677e('0x3d')]=_0x3cf834['attributes']['length']?_0x3cf834[_0x677e('0x3d')]:_0x237320[_0x677e('0x38')];_0x3cf834[_0x677e('0x40')]=qs[_0x677e('0x41')](_0xd330fa[_0x677e('0x3a')][_0x677e('0x41')]);_0x3cf834['where']=qs[_0x677e('0x3b')](_[_0x677e('0x43')](_0xd330fa[_0x677e('0x3a')],_0x237320[_0x677e('0x3b')]));if(_0xd330fa[_0x677e('0x3a')][_0x677e('0x44')]){_0x3cf834[_0x677e('0x42')]=_['merge'](_0x3cf834['where'],{'$or':_[_0x677e('0x33')](_0x3cf834[_0x677e('0x3d')],function(_0x2a2386){var _0x949975={};_0x949975[_0x2a2386]={'$like':'%'+_0xd330fa[_0x677e('0x3a')][_0x677e('0x44')]+'%'};return _0x949975;})});}_0x3cf834=_[_0x677e('0x45')]({},_0x3cf834,_0xd330fa[_0x677e('0x47')]);return _0x19de60[_0x677e('0x8f')](_0x3cf834);}})[_0x677e('0x2b')](function(_0x2a163e){if(_0x2a163e){_0xe8559e=_0x2a163e['length'];if(!_0xd330fa[_0x677e('0x3a')][_0x677e('0x5e')]('nolimit')){_0x3cf834[_0x677e('0x24')]=qs[_0x677e('0x24')](_0xd330fa[_0x677e('0x3a')]['limit']);_0x3cf834[_0x677e('0x22')]=qs[_0x677e('0x22')](_0xd330fa[_0x677e('0x3a')][_0x677e('0x22')]);}return _0x19de60['getAgents'](_0x3cf834);}})[_0x677e('0x2b')](function(_0x50acd9){if(_0x50acd9){return _0x50acd9?{'count':_0xe8559e,'rows':_0x50acd9}:null;}})['then'](respondWithResult(_0x45fcdb,null))[_0x677e('0x50')](handleError(_0x45fcdb,null));};
\ No newline at end of file
+var _0xb181=['params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','findOne','UserSmsQueue','order','pick','SmsQueueId','findAll','User','findAndCountAll','UserId','smsPause','updatedAt','%s/%s','createdAt','getTeams','Team','addTeams','ids','Agents','transaction','each','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','./smsQueue.socket','register','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','update','then','destroy','get','SmsQueues','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','includeAll','include','rows','catch','show'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xb181,0xc6));var _0x1b18=function(_0x47af3a,_0x24ed64){_0x47af3a=_0x47af3a-0x0;var _0x513303=_0xb181[_0x47af3a];return _0x513303;};'use strict';var emlformat=require(_0x1b18('0x0'));var rimraf=require(_0x1b18('0x1'));var zipdir=require(_0x1b18('0x2'));var jsonpatch=require(_0x1b18('0x3'));var rp=require('request-promise');var moment=require(_0x1b18('0x4'));var BPromise=require(_0x1b18('0x5'));var Mustache=require('mustache');var util=require(_0x1b18('0x6'));var path=require(_0x1b18('0x7'));var sox=require(_0x1b18('0x8'));var csv=require(_0x1b18('0x9'));var ejs=require(_0x1b18('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1b18('0xb'));var squel=require(_0x1b18('0xc'));var crypto=require('crypto');var jsforce=require(_0x1b18('0xd'));var deskjs=require(_0x1b18('0xe'));var toCsv=require(_0x1b18('0x9'));var querystring=require(_0x1b18('0xf'));var Papa=require('papaparse');var Redis=require(_0x1b18('0x10'));var authService=require(_0x1b18('0x11'));var qs=require(_0x1b18('0x12'));var as=require(_0x1b18('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b18('0x14'))(_0x1b18('0x15'));var utils=require(_0x1b18('0x16'));var config=require(_0x1b18('0x17'));var licenseUtil=require(_0x1b18('0x18'));var db=require(_0x1b18('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1b18('0x1a'))(new Redis(config[_0x1b18('0x1b')]));require(_0x1b18('0x1c'))[_0x1b18('0x1d')](socket);function respondWithStatusCode(_0x209245,_0x814d){_0x814d=_0x814d||0xcc;return function(_0xdcfda3){if(_0xdcfda3){return _0x209245['sendStatus'](_0x814d);}return _0x209245['status'](_0x814d)[_0x1b18('0x1e')]();};}function respondWithResult(_0x5b421d,_0x3c8d52){_0x3c8d52=_0x3c8d52||0xc8;return function(_0xa4702b){if(_0xa4702b){return _0x5b421d[_0x1b18('0x1f')](_0x3c8d52)[_0x1b18('0x20')](_0xa4702b);}};}function respondWithFilteredResult(_0x294c8f,_0x1187ad){return function(_0xd846b1){if(_0xd846b1){var _0x1e7d32=typeof _0x1187ad['offset']==='undefined'&&typeof _0x1187ad[_0x1b18('0x21')]===_0x1b18('0x22');var _0x11b887=_0xd846b1[_0x1b18('0x23')];var _0x516c88=_0x1e7d32?0x0:_0x1187ad['offset'];var _0x4c89d7=_0x1e7d32?_0xd846b1[_0x1b18('0x23')]:_0x1187ad[_0x1b18('0x24')]+_0x1187ad['limit'];var _0x4819ce;if(_0x4c89d7>=_0x11b887){_0x4c89d7=_0x11b887;_0x4819ce=0xc8;}else{_0x4819ce=0xce;}_0x294c8f['status'](_0x4819ce);return _0x294c8f[_0x1b18('0x25')](_0x1b18('0x26'),_0x516c88+'-'+_0x4c89d7+'/'+_0x11b887)['json'](_0xd846b1);}return null;};}function patchUpdates(_0x2925cf){return function(_0xfe4613){try{jsonpatch[_0x1b18('0x27')](_0xfe4613,_0x2925cf,!![]);}catch(_0xbf6304){return BPromise['reject'](_0xbf6304);}return _0xfe4613['save']();};}function saveUpdates(_0x2117e2,_0x45cece){return function(_0x149055){if(_0x149055){return _0x149055[_0x1b18('0x28')](_0x2117e2)[_0x1b18('0x29')](function(_0x3523ce){return _0x3523ce;});}return null;};}function removeEntity(_0x18b09e,_0x4d78fb){return function(_0x2bf404){if(_0x2bf404){return _0x2bf404[_0x1b18('0x2a')]()[_0x1b18('0x29')](function(){var _0x31ee16=_0x2bf404[_0x1b18('0x2b')]({'plain':!![]});var _0x454058=_0x1b18('0x2c');return db['UserProfileResource'][_0x1b18('0x2a')]({'where':{'type':_0x454058,'resourceId':_0x31ee16['id']}})['then'](function(){return _0x2bf404;});})[_0x1b18('0x29')](function(){_0x18b09e[_0x1b18('0x1f')](0xcc)[_0x1b18('0x1e')]();});}};}function handleEntityNotFound(_0x2ecc11,_0x187c07){return function(_0x46c386){if(!_0x46c386){_0x2ecc11['sendStatus'](0x194);}return _0x46c386;};}function handleError(_0x18120f,_0x345c96){_0x345c96=_0x345c96||0x1f4;return function(_0x1efc7c){logger[_0x1b18('0x2d')](_0x1efc7c[_0x1b18('0x2e')]);if(_0x1efc7c[_0x1b18('0x2f')]){delete _0x1efc7c['name'];}_0x18120f[_0x1b18('0x1f')](_0x345c96)[_0x1b18('0x30')](_0x1efc7c);};}exports[_0x1b18('0x31')]=function(_0x35f367,_0x505bb4){var _0x368f23={},_0x3b9109={},_0x3808b9={'count':0x0,'rows':[]};var _0x34cb31=_[_0x1b18('0x32')](db[_0x1b18('0x33')][_0x1b18('0x34')],function(_0x5d190b){return{'name':_0x5d190b[_0x1b18('0x35')],'type':_0x5d190b[_0x1b18('0x36')][_0x1b18('0x37')]};});_0x3b9109[_0x1b18('0x38')]=_['map'](_0x34cb31,_0x1b18('0x2f'));_0x3b9109[_0x1b18('0x39')]=_[_0x1b18('0x3a')](_0x35f367[_0x1b18('0x39')]);_0x3b9109[_0x1b18('0x3b')]=_[_0x1b18('0x3c')](_0x3b9109[_0x1b18('0x38')],_0x3b9109[_0x1b18('0x39')]);_0x368f23['attributes']=_[_0x1b18('0x3c')](_0x3b9109[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x35f367['query']['fields']));_0x368f23[_0x1b18('0x3e')]=_0x368f23[_0x1b18('0x3e')][_0x1b18('0x3f')]?_0x368f23[_0x1b18('0x3e')]:_0x3b9109[_0x1b18('0x38')];if(!_0x35f367['query'][_0x1b18('0x40')](_0x1b18('0x41'))){_0x368f23['limit']=qs[_0x1b18('0x21')](_0x35f367['query'][_0x1b18('0x21')]);_0x368f23[_0x1b18('0x24')]=qs['offset'](_0x35f367[_0x1b18('0x39')]['offset']);}_0x368f23['order']=qs['sort'](_0x35f367[_0x1b18('0x39')][_0x1b18('0x42')]);_0x368f23[_0x1b18('0x43')]=qs[_0x1b18('0x3b')](_['pick'](_0x35f367[_0x1b18('0x39')],_0x3b9109[_0x1b18('0x3b')]),_0x34cb31);if(_0x35f367[_0x1b18('0x39')]['filter']){_0x368f23['where']=_[_0x1b18('0x44')](_0x368f23[_0x1b18('0x43')],{'$or':_[_0x1b18('0x32')](_0x34cb31,function(_0x2776e2){if(_0x2776e2[_0x1b18('0x36')]!==_0x1b18('0x45')){var _0xc6887a={};_0xc6887a[_0x2776e2[_0x1b18('0x2f')]]={'$like':'%'+_0x35f367[_0x1b18('0x39')][_0x1b18('0x46')]+'%'};return _0xc6887a;}})});}_0x368f23=_[_0x1b18('0x44')]({},_0x368f23,_0x35f367['options']);var _0x208e75={'where':_0x368f23[_0x1b18('0x43')]};return db['SmsQueue']['count'](_0x208e75)[_0x1b18('0x29')](function(_0x5305bf){_0x3808b9[_0x1b18('0x23')]=_0x5305bf;if(_0x35f367['query'][_0x1b18('0x47')]){_0x368f23[_0x1b18('0x48')]=[{'all':!![]}];}return db[_0x1b18('0x33')]['findAll'](_0x368f23);})[_0x1b18('0x29')](function(_0x5989db){_0x3808b9[_0x1b18('0x49')]=_0x5989db;return _0x3808b9;})['then'](respondWithFilteredResult(_0x505bb4,_0x368f23))[_0x1b18('0x4a')](handleError(_0x505bb4,null));};exports[_0x1b18('0x4b')]=function(_0x1361f8,_0x1db4ab){var _0x3397d3={'raw':!![],'where':{'id':_0x1361f8[_0x1b18('0x4c')]['id']}},_0x3c80f0={};_0x3c80f0[_0x1b18('0x38')]=_['keys'](db[_0x1b18('0x33')]['rawAttributes']);_0x3c80f0['query']=_['keys'](_0x1361f8[_0x1b18('0x39')]);_0x3c80f0[_0x1b18('0x3b')]=_[_0x1b18('0x3c')](_0x3c80f0[_0x1b18('0x38')],_0x3c80f0[_0x1b18('0x39')]);_0x3397d3[_0x1b18('0x3e')]=_[_0x1b18('0x3c')](_0x3c80f0[_0x1b18('0x38')],qs['fields'](_0x1361f8[_0x1b18('0x39')][_0x1b18('0x3d')]));_0x3397d3[_0x1b18('0x3e')]=_0x3397d3['attributes'][_0x1b18('0x3f')]?_0x3397d3['attributes']:_0x3c80f0[_0x1b18('0x38')];if(_0x1361f8['query'][_0x1b18('0x47')]){_0x3397d3['include']=[{'all':!![]}];}_0x3397d3=_[_0x1b18('0x44')]({},_0x3397d3,_0x1361f8[_0x1b18('0x4d')]);return db[_0x1b18('0x33')]['find'](_0x3397d3)['then'](handleEntityNotFound(_0x1db4ab,null))[_0x1b18('0x29')](respondWithResult(_0x1db4ab,null))[_0x1b18('0x4a')](handleError(_0x1db4ab,null));};exports[_0x1b18('0x4e')]=function(_0x281724,_0xfeaa07){return db['SmsQueue'][_0x1b18('0x4e')](_0x281724[_0x1b18('0x4f')],{})[_0x1b18('0x29')](function(_0x436cdf){var _0x18a03c=_0x281724[_0x1b18('0x50')][_0x1b18('0x2b')]({'plain':!![]});if(!_0x18a03c)throw new Error(_0x1b18('0x51'));if(_0x18a03c['role']==='user'){var _0x34e0d5=_0x436cdf['get']({'plain':!![]});var _0x275173=_0x1b18('0x2c');return db[_0x1b18('0x52')]['find']({'where':{'name':_0x275173,'userProfileId':_0x18a03c['userProfileId']},'raw':!![]})['then'](function(_0x107b6d){if(_0x107b6d&&_0x107b6d['autoAssociation']===0x0){return db['UserProfileResource'][_0x1b18('0x4e')]({'name':_0x34e0d5[_0x1b18('0x2f')],'resourceId':_0x34e0d5['id'],'type':_0x107b6d[_0x1b18('0x2f')],'sectionId':_0x107b6d['id']},{})[_0x1b18('0x29')](function(){return _0x436cdf;});}else{return _0x436cdf;}})[_0x1b18('0x4a')](function(_0x451403){logger[_0x1b18('0x2d')](_0x1b18('0x53'),_0x451403);throw _0x451403;});}return _0x436cdf;})['then'](respondWithResult(_0xfeaa07,0xc9))[_0x1b18('0x4a')](handleError(_0xfeaa07,null));};exports[_0x1b18('0x28')]=function(_0x2db680,_0x306ca1){if(_0x2db680['body']['id']){delete _0x2db680['body']['id'];}return db[_0x1b18('0x33')]['find']({'where':{'id':_0x2db680[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x306ca1,null))[_0x1b18('0x29')](saveUpdates(_0x2db680[_0x1b18('0x4f')],null))[_0x1b18('0x29')](respondWithResult(_0x306ca1,null))['catch'](handleError(_0x306ca1,null));};exports[_0x1b18('0x2a')]=function(_0xe5df33,_0x2b5653){return db[_0x1b18('0x33')][_0x1b18('0x54')]({'where':{'id':_0xe5df33[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2b5653,null))[_0x1b18('0x29')](removeEntity(_0x2b5653,null))['catch'](handleError(_0x2b5653,null));};exports['describe']=function(_0x1cc39e,_0x1108ed){return db[_0x1b18('0x33')][_0x1b18('0x55')]()[_0x1b18('0x29')](respondWithResult(_0x1108ed,null))[_0x1b18('0x4a')](handleError(_0x1108ed,null));};exports['getMembers']=function(_0x23294b,_0x39391a,_0x211c5b){var _0x3f083e={'raw':!![],'where':{}},_0x2757ad={},_0x347f81;return db[_0x1b18('0x33')][_0x1b18('0x56')]({'where':{'id':_0x23294b[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x39391a,null))[_0x1b18('0x29')](function(_0x1eb583){if(_0x1eb583){_0x347f81=_0x1eb583[_0x1b18('0x2b')]({'plain':!![]});_0x2757ad[_0x1b18('0x38')]=_[_0x1b18('0x3a')](db[_0x1b18('0x57')]['rawAttributes']);_0x2757ad[_0x1b18('0x39')]=_[_0x1b18('0x3a')](_0x23294b[_0x1b18('0x39')]);_0x2757ad['filters']=_[_0x1b18('0x3c')](_0x2757ad['model'],_0x2757ad['query']);_0x3f083e['attributes']=_[_0x1b18('0x3c')](_0x2757ad[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x23294b[_0x1b18('0x39')][_0x1b18('0x3d')]));_0x3f083e[_0x1b18('0x3e')]=_0x3f083e[_0x1b18('0x3e')][_0x1b18('0x3f')]?_0x3f083e[_0x1b18('0x3e')]:_0x2757ad['model'];if(!_0x23294b['query'][_0x1b18('0x40')](_0x1b18('0x41'))){_0x3f083e[_0x1b18('0x21')]=qs[_0x1b18('0x21')](_0x23294b[_0x1b18('0x39')][_0x1b18('0x21')]);_0x3f083e[_0x1b18('0x24')]=qs[_0x1b18('0x24')](_0x23294b[_0x1b18('0x39')][_0x1b18('0x24')]);}_0x3f083e[_0x1b18('0x58')]=qs['sort'](_0x23294b['query'][_0x1b18('0x42')]);_0x3f083e[_0x1b18('0x43')]=qs[_0x1b18('0x3b')](_[_0x1b18('0x59')](_0x23294b['query'],_0x2757ad[_0x1b18('0x3b')]));_0x3f083e[_0x1b18('0x43')][_0x1b18('0x5a')]=_0x1eb583['id'];if(_0x23294b[_0x1b18('0x39')]['filter']){_0x3f083e['where']=_[_0x1b18('0x44')](_0x3f083e['where'],{'$or':_[_0x1b18('0x32')](_0x3f083e[_0x1b18('0x3e')],function(_0x2126fb){var _0x35c099={};_0x35c099[_0x2126fb]={'$like':'%'+_0x23294b[_0x1b18('0x39')][_0x1b18('0x46')]+'%'};return _0x35c099;})});}_0x3f083e=_[_0x1b18('0x44')]({},_0x3f083e,_0x23294b[_0x1b18('0x4d')]);return db[_0x1b18('0x57')][_0x1b18('0x5b')](_0x3f083e);}})[_0x1b18('0x29')](function(_0xa1748a){if(_0xa1748a){return db[_0x1b18('0x5c')][_0x1b18('0x5d')]({'where':{'id':_[_0x1b18('0x32')](_0xa1748a,_0x1b18('0x5e')),'role':'agent'},'attributes':['id',_0x1b18('0x2f'),_0x1b18('0x5f'),_0x1b18('0x60'),'createdAt']});}})[_0x1b18('0x29')](function(_0x115ad8){if(_0x115ad8){return{'count':_0x115ad8['count'],'rows':_['map'](_0x115ad8[_0x1b18('0x49')],function(_0x5bf102){return{'membername':_0x5bf102[_0x1b18('0x2f')],'UserId':_0x5bf102['id'],'queue_name':_0x347f81['name'],'SmsQueueId':_0x347f81['id'],'interface':util['format'](_0x1b18('0x61'),'SIP',_0x5bf102[_0x1b18('0x2f')]),'penalty':0x0,'paused':_0x5bf102[_0x1b18('0x5f')],'createdAt':_0x5bf102[_0x1b18('0x62')],'updatedAt':_0x5bf102[_0x1b18('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x39391a,_0x3f083e))['catch'](handleError(_0x39391a,null));};exports[_0x1b18('0x63')]=function(_0x15f904,_0x27913b,_0x51b115){var _0x3a14ed={};var _0x54cf5a={};var _0x50ee90;var _0x3e2916;return db[_0x1b18('0x33')]['findOne']({'where':{'id':_0x15f904[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x27913b,null))['then'](function(_0xa4d374){if(_0xa4d374){_0x50ee90=_0xa4d374;_0x54cf5a[_0x1b18('0x38')]=_[_0x1b18('0x3a')](db[_0x1b18('0x64')][_0x1b18('0x34')]);_0x54cf5a['query']=_[_0x1b18('0x3a')](_0x15f904[_0x1b18('0x39')]);_0x54cf5a[_0x1b18('0x3b')]=_[_0x1b18('0x3c')](_0x54cf5a['model'],_0x54cf5a[_0x1b18('0x39')]);_0x3a14ed[_0x1b18('0x3e')]=_[_0x1b18('0x3c')](_0x54cf5a[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x15f904['query'][_0x1b18('0x3d')]));_0x3a14ed[_0x1b18('0x3e')]=_0x3a14ed[_0x1b18('0x3e')]['length']?_0x3a14ed[_0x1b18('0x3e')]:_0x54cf5a[_0x1b18('0x38')];_0x3a14ed[_0x1b18('0x58')]=qs[_0x1b18('0x42')](_0x15f904[_0x1b18('0x39')][_0x1b18('0x42')]);_0x3a14ed[_0x1b18('0x43')]=qs[_0x1b18('0x3b')](_[_0x1b18('0x59')](_0x15f904[_0x1b18('0x39')],_0x54cf5a[_0x1b18('0x3b')]));if(_0x15f904[_0x1b18('0x39')][_0x1b18('0x46')]){_0x3a14ed['where']=_[_0x1b18('0x44')](_0x3a14ed[_0x1b18('0x43')],{'$or':_[_0x1b18('0x32')](_0x3a14ed[_0x1b18('0x3e')],function(_0x57fd27){var _0x97bf2d={};_0x97bf2d[_0x57fd27]={'$like':'%'+_0x15f904[_0x1b18('0x39')][_0x1b18('0x46')]+'%'};return _0x97bf2d;})});}_0x3a14ed=_[_0x1b18('0x44')]({},_0x3a14ed,_0x15f904['options']);return _0x50ee90[_0x1b18('0x63')](_0x3a14ed);}})['then'](function(_0x1290d8){if(_0x1290d8){_0x3e2916=_0x1290d8[_0x1b18('0x3f')];if(!_0x15f904[_0x1b18('0x39')][_0x1b18('0x40')](_0x1b18('0x41'))){_0x3a14ed[_0x1b18('0x21')]=qs[_0x1b18('0x21')](_0x15f904[_0x1b18('0x39')][_0x1b18('0x21')]);_0x3a14ed[_0x1b18('0x24')]=qs[_0x1b18('0x24')](_0x15f904[_0x1b18('0x39')][_0x1b18('0x24')]);}return _0x50ee90[_0x1b18('0x63')](_0x3a14ed);}})[_0x1b18('0x29')](function(_0x581670){if(_0x581670){return _0x581670?{'count':_0x3e2916,'rows':_0x581670}:null;}})[_0x1b18('0x29')](respondWithResult(_0x27913b,null))[_0x1b18('0x4a')](handleError(_0x27913b,null));};exports[_0x1b18('0x65')]=function(_0x3f0f2a,_0x1eb273,_0x374c8e){var _0x5998c7=_0x3f0f2a[_0x1b18('0x4f')][_0x1b18('0x66')];return db[_0x1b18('0x64')][_0x1b18('0x5b')]({'where':{'id':_0x5998c7},'attributes':['id'],'include':[{'model':db['User'],'as':_0x1b18('0x67'),'attributes':['id',_0x1b18('0x2f'),'online','voicePause','interface'],'raw':!![]}]})[_0x1b18('0x29')](function(_0x1784fb){if(_0x1784fb){var _0x2ba191=_['flatMap'](_0x1784fb,function(_0x474e4d){var _0x55d0f2=_0x474e4d[_0x1b18('0x2b')]({'plain':!![]});return _0x55d0f2[_0x1b18('0x67')];});return db[_0x1b18('0x33')][_0x1b18('0x54')]({'where':{'id':_0x3f0f2a['params']['id']}})[_0x1b18('0x29')](function(_0x476b8a){return db['sequelize'][_0x1b18('0x68')](function(_0x2c4fb3){return _0x476b8a[_0x1b18('0x65')](_0x5998c7,{'transaction':_0x2c4fb3})[_0x1b18('0x29')](function(){return BPromise[_0x1b18('0x69')](_0x2ba191,function(_0x3f9153){return db[_0x1b18('0x57')]['findOrCreate']({'where':{'UserId':_0x3f9153['id'],'SmsQueueId':_0x3f0f2a[_0x1b18('0x4c')]['id']},'transaction':_0x2c4fb3});});})[_0x1b18('0x29')](function(){_0x2ba191['forEach'](function(_0x24f5c3){socket[_0x1b18('0x6a')](_0x1b18('0x6b'),{'UserId':_0x24f5c3['id'],'SmsQueueId':_0x476b8a['id']});});});});});}})[_0x1b18('0x29')](respondWithStatusCode(_0x1eb273,null))[_0x1b18('0x4a')](handleError(_0x1eb273,null));};exports[_0x1b18('0x6c')]=function(_0x4089de,_0x241f06,_0x34bf8c){return db[_0x1b18('0x64')]['findAll']({'where':{'id':_0x4089de['query'][_0x1b18('0x66')]},'attributes':['id'],'include':[{'model':db[_0x1b18('0x5c')],'as':_0x1b18('0x67'),'attributes':['id'],'raw':!![]}]})[_0x1b18('0x29')](handleEntityNotFound(_0x241f06,null))[_0x1b18('0x29')](function(_0x49cd3a){var _0x4d40b5=_[_0x1b18('0x32')](_0x49cd3a,'id');var _0x10ea2c=[];var _0x19d1bd=[];var _0x2d132c=squel[_0x1b18('0x6d')]();_0x2d132c[_0x1b18('0x6e')](_0x1b18('0x6f'))[_0x1b18('0x70')]('team_has_sms_queues','tq')[_0x1b18('0x71')](_0x1b18('0x72'),'ut',_0x1b18('0x73'))[_0x1b18('0x43')](_0x1b18('0x74'),_0x4089de[_0x1b18('0x4c')]['id']);for(var _0x1bc3c4=0x0;_0x1bc3c4<_0x49cd3a[_0x1b18('0x3f')];_0x1bc3c4+=0x1){let _0x574bed=_0x49cd3a[_0x1bc3c4];for(var _0xae614e=0x0;_0xae614e<_0x574bed[_0x1b18('0x67')][_0x1b18('0x3f')];_0xae614e+=0x1){let _0x3a5f24=_0x574bed[_0x1b18('0x67')][_0xae614e];var _0x2aa24f=_0x2d132c[_0x1b18('0x75')]();_0x2aa24f[_0x1b18('0x43')](_0x1b18('0x76'),_0x3a5f24['id']);_0x19d1bd[_0x1b18('0x77')](db[_0x1b18('0x78')][_0x1b18('0x39')](_0x2aa24f[_0x1b18('0x79')](),{'type':db[_0x1b18('0x78')]['QueryTypes'][_0x1b18('0x7a')]})['then'](function(_0xdb3990){if(_0xdb3990[_0x1b18('0x3f')]===0x1){return _0x3a5f24['id'];}else{var _0x8ad25b=_[_0x1b18('0x7b')](_[_0x1b18('0x32')](_0xdb3990,_0x1b18('0x7c')),function(_0x32c7f5){return _['includes'](_0x4d40b5,_0x32c7f5);});if(_0x8ad25b){return _0x3a5f24['id'];}}}));}}return BPromise[_0x1b18('0x7d')](_0x19d1bd)[_0x1b18('0x29')](function(_0x5556c9){_0x10ea2c=_(_0x10ea2c)[_0x1b18('0x7e')](_0x5556c9)[_0x1b18('0x7f')]()[_0x1b18('0x80')]();return db[_0x1b18('0x33')]['find']({'where':{'id':_0x4089de[_0x1b18('0x4c')]['id']}})[_0x1b18('0x29')](function(_0x67acc3){return db[_0x1b18('0x78')][_0x1b18('0x68')](function(_0x12521a){return _0x67acc3['removeTeams'](_0x4089de[_0x1b18('0x39')][_0x1b18('0x66')],{'transaction':_0x12521a})[_0x1b18('0x29')](function(){if(!_[_0x1b18('0x81')](_0x10ea2c)){return _0x67acc3[_0x1b18('0x82')](_0x10ea2c,{'transaction':_0x12521a});}})[_0x1b18('0x29')](function(){_0x10ea2c[_0x1b18('0x83')](function(_0x11737a){socket['emit'](_0x1b18('0x84'),{'UserId':_0x11737a,'SmsQueueId':_0x67acc3['id']});});});});});});})[_0x1b18('0x29')](respondWithStatusCode(_0x241f06,null))[_0x1b18('0x4a')](handleError(_0x241f06,null));};exports[_0x1b18('0x85')]=function(_0x21d405,_0x2e1584,_0x9f8829){return db['SmsQueue'][_0x1b18('0x54')]({'where':{'id':_0x21d405[_0x1b18('0x4c')]['id']}})[_0x1b18('0x29')](handleEntityNotFound(_0x2e1584,null))[_0x1b18('0x29')](function(_0x554ca3){if(_0x554ca3){return _0x554ca3[_0x1b18('0x85')](_0x21d405[_0x1b18('0x4f')][_0x1b18('0x66')],_[_0x1b18('0x86')](_0x21d405['body'],['ids','id'])||{})[_0x1b18('0x87')](function(_0x164089){for(var _0x53251f=0x0;_0x53251f<_0x21d405[_0x1b18('0x4f')][_0x1b18('0x66')]['length'];_0x53251f+=0x1){socket[_0x1b18('0x6a')](_0x1b18('0x6b'),{'UserId':Number(_0x21d405[_0x1b18('0x4f')]['ids'][_0x53251f]),'SmsQueueId':Number(_0x21d405['params']['id'])});}return _0x164089;});}})[_0x1b18('0x29')](respondWithResult(_0x2e1584,null))[_0x1b18('0x4a')](handleError(_0x2e1584,null));};exports['removeAgents']=function(_0x10c105,_0x3d575d,_0x4bb7c6){return db[_0x1b18('0x33')][_0x1b18('0x54')]({'where':{'id':_0x10c105['params']['id']}})['then'](handleEntityNotFound(_0x3d575d,null))[_0x1b18('0x29')](function(_0x27097d){if(_0x27097d){return _0x27097d[_0x1b18('0x82')](_0x10c105['query'][_0x1b18('0x66')])['then'](function(){if(_['isArray'](_0x10c105[_0x1b18('0x39')]['ids'])){for(var _0x59b2dc=0x0;_0x59b2dc<_0x10c105['query'][_0x1b18('0x66')][_0x1b18('0x3f')];_0x59b2dc+=0x1){socket['emit'](_0x1b18('0x84'),{'UserId':Number(_0x10c105['query'][_0x1b18('0x66')][_0x59b2dc]),'SmsQueueId':Number(_0x10c105[_0x1b18('0x4c')]['id'])});}}else{socket[_0x1b18('0x6a')](_0x1b18('0x84'),{'UserId':Number(_0x10c105[_0x1b18('0x39')]['ids']),'SmsQueueId':Number(_0x10c105[_0x1b18('0x4c')]['id'])});}});}})[_0x1b18('0x29')](respondWithStatusCode(_0x3d575d,null))[_0x1b18('0x4a')](handleError(_0x3d575d,null));};exports['getAgents']=function(_0x1b65d3,_0x5c20e4,_0x491774){var _0xe40925={};var _0x191326={};var _0x20c62a;var _0x4b2b22;return db['SmsQueue']['findOne']({'where':{'id':_0x1b65d3[_0x1b18('0x4c')]['id']}})[_0x1b18('0x29')](handleEntityNotFound(_0x5c20e4,null))['then'](function(_0x5b1932){if(_0x5b1932){_0x20c62a=_0x5b1932;_0x191326[_0x1b18('0x38')]=_[_0x1b18('0x3a')](db['User'][_0x1b18('0x34')]);_0x191326['query']=_[_0x1b18('0x3a')](_0x1b65d3[_0x1b18('0x39')]);_0x191326['filters']=_[_0x1b18('0x3c')](_0x191326[_0x1b18('0x38')],_0x191326[_0x1b18('0x39')]);_0xe40925['attributes']=_['intersection'](_0x191326[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x1b65d3[_0x1b18('0x39')]['fields']));_0xe40925['attributes']=_0xe40925[_0x1b18('0x3e')]['length']?_0xe40925['attributes']:_0x191326[_0x1b18('0x38')];_0xe40925[_0x1b18('0x58')]=qs['sort'](_0x1b65d3[_0x1b18('0x39')]['sort']);_0xe40925['where']=qs[_0x1b18('0x3b')](_['pick'](_0x1b65d3[_0x1b18('0x39')],_0x191326[_0x1b18('0x3b')]));if(_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x46')]){_0xe40925['where']=_['merge'](_0xe40925[_0x1b18('0x43')],{'$or':_[_0x1b18('0x32')](_0xe40925[_0x1b18('0x3e')],function(_0x5cccb1){var _0x47ec02={};_0x47ec02[_0x5cccb1]={'$like':'%'+_0x1b65d3['query']['filter']+'%'};return _0x47ec02;})});}_0xe40925=_['merge']({},_0xe40925,_0x1b65d3[_0x1b18('0x4d')]);return _0x20c62a[_0x1b18('0x88')](_0xe40925);}})[_0x1b18('0x29')](function(_0x27a059){if(_0x27a059){_0x4b2b22=_0x27a059[_0x1b18('0x3f')];if(!_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x40')](_0x1b18('0x41'))){_0xe40925[_0x1b18('0x21')]=qs[_0x1b18('0x21')](_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x21')]);_0xe40925[_0x1b18('0x24')]=qs[_0x1b18('0x24')](_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x24')]);}return _0x20c62a['getAgents'](_0xe40925);}})['then'](function(_0x27801c){if(_0x27801c){return _0x27801c?{'count':_0x4b2b22,'rows':_0x27801c}:null;}})[_0x1b18('0x29')](respondWithResult(_0x5c20e4,null))[_0x1b18('0x4a')](handleError(_0x5c20e4,null));};
\ No newline at end of file
index 62f07d2..81eef8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0c=['../../mysqldb','SmsQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xef0c,0xd1));var _0xcef0=function(_0x2ba510,_0x5310be){_0x2ba510=_0x2ba510-0x0;var _0x1659e7=_0xef0c[_0x2ba510];return _0x1659e7;};'use strict';var EventEmitter=require(_0xcef0('0x0'));var SmsQueue=require(_0xcef0('0x1'))['db'][_0xcef0('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xcef0('0x3')](0x0);var events={'afterCreate':_0xcef0('0x4'),'afterUpdate':_0xcef0('0x5'),'afterDestroy':_0xcef0('0x6')};function emitEvent(_0x32b2a2){return function(_0x1276aa,_0x598d1b,_0x7f6a1a){SmsQueueEvents[_0xcef0('0x7')](_0x32b2a2+':'+_0x1276aa['id'],_0x1276aa);SmsQueueEvents[_0xcef0('0x7')](_0x32b2a2,_0x1276aa);_0x7f6a1a(null);};}for(var e in events){if(events[_0xcef0('0x8')](e)){var event=events[e];SmsQueue[_0xcef0('0x9')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0xc7e8=['exports','SmsQueue','setMaxListeners','save','update','remove','emit'];(function(_0x57d745,_0x35fc6f){var _0x3842df=function(_0x38c0e7){while(--_0x38c0e7){_0x57d745['push'](_0x57d745['shift']());}};_0x3842df(++_0x35fc6f);}(_0xc7e8,0x78));var _0x8c7e=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xc7e8[_0x2070da];return _0x4f9fe1;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0x8c7e('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x8c7e('0x1')](0x0);var events={'afterCreate':_0x8c7e('0x2'),'afterUpdate':_0x8c7e('0x3'),'afterDestroy':_0x8c7e('0x4')};function emitEvent(_0x13d809){return function(_0x2716a6,_0x32645d,_0x272476){SmsQueueEvents[_0x8c7e('0x5')](_0x13d809+':'+_0x2716a6['id'],_0x2716a6);SmsQueueEvents[_0x8c7e('0x5')](_0x13d809,_0x2716a6);_0x272476(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x8c7e('0x6')]=SmsQueueEvents;
\ No newline at end of file
index 318497f..1621807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5565=['./smsQueue.attributes','exports','define','SmsQueue','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1a281e,_0x3263f5){var _0x1feb78=function(_0x5b85b5){while(--_0x5b85b5){_0x1a281e['push'](_0x1a281e['shift']());}};_0x1feb78(++_0x3263f5);}(_0x5565,0x149));var _0x5556=function(_0x1959ee,_0xeed73c){_0x1959ee=_0x1959ee-0x0;var _0x3d19ff=_0x5565[_0x1959ee];return _0x3d19ff;};'use strict';var _=require('lodash');var util=require(_0x5556('0x0'));var logger=require(_0x5556('0x1'))(_0x5556('0x2'));var moment=require(_0x5556('0x3'));var BPromise=require(_0x5556('0x4'));var rp=require(_0x5556('0x5'));var fs=require('fs');var path=require(_0x5556('0x6'));var rimraf=require(_0x5556('0x7'));var config=require(_0x5556('0x8'));var attributes=require(_0x5556('0x9'));module[_0x5556('0xa')]=function(_0x432573,_0x21e66c){return _0x432573[_0x5556('0xb')](_0x5556('0xc'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5aef=['../../config/environment','./smsQueue.attributes','exports','define','SmsQueue','sms_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0xf54b8e,_0x10e225){var _0x58c551=function(_0x192e32){while(--_0x192e32){_0xf54b8e['push'](_0xf54b8e['shift']());}};_0x58c551(++_0x10e225);}(_0x5aef,0x19c));var _0xf5ae=function(_0x1757f2,_0x1b09fa){_0x1757f2=_0x1757f2-0x0;var _0x5e7212=_0x5aef[_0x1757f2];return _0x5e7212;};'use strict';var _=require(_0xf5ae('0x0'));var util=require('util');var logger=require(_0xf5ae('0x1'))(_0xf5ae('0x2'));var moment=require(_0xf5ae('0x3'));var BPromise=require(_0xf5ae('0x4'));var rp=require(_0xf5ae('0x5'));var fs=require('fs');var path=require(_0xf5ae('0x6'));var rimraf=require(_0xf5ae('0x7'));var config=require(_0xf5ae('0x8'));var attributes=require(_0xf5ae('0x9'));module[_0xf5ae('0xa')]=function(_0x20ee0d,_0xf982cc){return _0x20ee0d[_0xf5ae('0xb')](_0xf5ae('0xc'),attributes,{'tableName':_0xf5ae('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b99042a..d86c33b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e77=['then','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsQueue,\x20%s,\x20%s','message','info','result','catch','GetSmsQueue','findAll','options','raw','attributes','limit','include','map','model','ShowSmsQueue','SmsQueue','find','where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','request'];(function(_0x5b3b9b,_0x1c71b0){var _0x47c1d7=function(_0x34c20b){while(--_0x34c20b){_0x5b3b9b['push'](_0x5b3b9b['shift']());}};_0x47c1d7(++_0x1c71b0);}(_0x8e77,0x1f2));var _0x78e7=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x8e77[_0x220dbb];return _0x2b77de;};'use strict';var _=require(_0x78e7('0x0'));var util=require(_0x78e7('0x1'));var moment=require(_0x78e7('0x2'));var BPromise=require('bluebird');var rs=require(_0x78e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x78e7('0x4'))['db'];var utils=require(_0x78e7('0x5'));var logger=require(_0x78e7('0x6'))(_0x78e7('0x7'));var config=require(_0x78e7('0x8'));var jayson=require(_0x78e7('0x9'));var client=jayson[_0x78e7('0xa')][_0x78e7('0xb')]({'port':0x232a});config[_0x78e7('0xc')]=_[_0x78e7('0xd')](config[_0x78e7('0xc')],{'host':_0x78e7('0xe'),'port':0x18eb});var socket=require(_0x78e7('0xf'))(new Redis(config[_0x78e7('0xc')]));require(_0x78e7('0x10'))['register'](socket);function respondWithRpcPromise(_0x126f15,_0x1b2616,_0x359753){return new BPromise(function(_0x5a9d49,_0x3ca19e){return client[_0x78e7('0x11')](_0x126f15,_0x359753)[_0x78e7('0x12')](function(_0x321c17){logger['info']('SmsQueue,\x20%s,\x20%s',_0x1b2616,'request\x20sent');logger[_0x78e7('0x13')](_0x78e7('0x14'),_0x1b2616,_0x78e7('0x15'),JSON[_0x78e7('0x16')](_0x321c17));if(_0x321c17[_0x78e7('0x17')]){if(_0x321c17[_0x78e7('0x17')][_0x78e7('0x18')]===0x1f4){logger[_0x78e7('0x17')](_0x78e7('0x19'),_0x1b2616,_0x321c17[_0x78e7('0x17')][_0x78e7('0x1a')]);return _0x3ca19e(_0x321c17[_0x78e7('0x17')][_0x78e7('0x1a')]);}logger[_0x78e7('0x17')](_0x78e7('0x19'),_0x1b2616,_0x321c17[_0x78e7('0x17')][_0x78e7('0x1a')]);return _0x5a9d49(_0x321c17[_0x78e7('0x17')]['message']);}else{logger[_0x78e7('0x1b')](_0x78e7('0x19'),_0x1b2616,_0x78e7('0x15'));_0x5a9d49(_0x321c17[_0x78e7('0x1c')][_0x78e7('0x1a')]);}})[_0x78e7('0x1d')](function(_0x5bad80){logger[_0x78e7('0x17')](_0x78e7('0x19'),_0x1b2616,_0x5bad80);_0x3ca19e(_0x5bad80);});});}exports[_0x78e7('0x1e')]=function(_0x1bab4b){var _0x281718=this;return new Promise(function(_0x11572a,_0x35c529){return db['SmsQueue'][_0x78e7('0x1f')]({'raw':_0x1bab4b[_0x78e7('0x20')]?_0x1bab4b[_0x78e7('0x20')][_0x78e7('0x21')]===undefined?!![]:![]:!![],'where':_0x1bab4b[_0x78e7('0x20')]?_0x1bab4b[_0x78e7('0x20')]['where']||null:null,'attributes':_0x1bab4b[_0x78e7('0x20')]?_0x1bab4b[_0x78e7('0x20')][_0x78e7('0x22')]||null:null,'limit':_0x1bab4b[_0x78e7('0x20')]?_0x1bab4b[_0x78e7('0x20')][_0x78e7('0x23')]||null:null,'include':_0x1bab4b['options']?_0x1bab4b[_0x78e7('0x20')][_0x78e7('0x24')]?_[_0x78e7('0x25')](_0x1bab4b['options'][_0x78e7('0x24')],function(_0x3fa99c){return{'model':db[_0x3fa99c[_0x78e7('0x26')]],'as':_0x3fa99c['as'],'attributes':_0x3fa99c[_0x78e7('0x22')],'include':_0x3fa99c[_0x78e7('0x24')]?_[_0x78e7('0x25')](_0x3fa99c[_0x78e7('0x24')],function(_0xe26529){return{'model':db[_0xe26529[_0x78e7('0x26')]],'as':_0xe26529['as'],'attributes':_0xe26529[_0x78e7('0x22')],'include':_0xe26529[_0x78e7('0x24')]?_[_0x78e7('0x25')](_0xe26529[_0x78e7('0x24')],function(_0x1787f6){return{'model':db[_0x1787f6[_0x78e7('0x26')]],'as':_0x1787f6['as'],'attributes':_0x1787f6[_0x78e7('0x22')]};}):[]};}):[]};}):[]:[]})[_0x78e7('0x12')](function(_0x84a34e){logger[_0x78e7('0x1b')]('GetSmsQueue',_0x1bab4b);logger['debug'](_0x78e7('0x1e'),_0x1bab4b,JSON[_0x78e7('0x16')](_0x84a34e));_0x11572a(_0x84a34e);})[_0x78e7('0x1d')](function(_0x22ac1b){logger['error'](_0x78e7('0x1e'),_0x22ac1b[_0x78e7('0x1a')],_0x1bab4b);_0x35c529(_0x281718[_0x78e7('0x17')](0x1f4,_0x22ac1b[_0x78e7('0x1a')]));});});};exports[_0x78e7('0x27')]=function(_0x1971ef){var _0x92a6a=this;return new Promise(function(_0x5d665c,_0xc4b8a0){return db[_0x78e7('0x28')][_0x78e7('0x29')]({'raw':_0x1971ef[_0x78e7('0x20')]?_0x1971ef['options'][_0x78e7('0x21')]===undefined?!![]:![]:!![],'where':_0x1971ef[_0x78e7('0x20')]?_0x1971ef[_0x78e7('0x20')][_0x78e7('0x2a')]||null:null,'attributes':_0x1971ef['options']?_0x1971ef[_0x78e7('0x20')][_0x78e7('0x22')]||null:null,'include':_0x1971ef[_0x78e7('0x20')]?_0x1971ef[_0x78e7('0x20')][_0x78e7('0x24')]?_[_0x78e7('0x25')](_0x1971ef[_0x78e7('0x20')][_0x78e7('0x24')],function(_0x19f86f){return{'model':db[_0x19f86f[_0x78e7('0x26')]],'as':_0x19f86f['as'],'attributes':_0x19f86f['attributes'],'include':_0x19f86f[_0x78e7('0x24')]?_['map'](_0x19f86f[_0x78e7('0x24')],function(_0x11b8b9){return{'model':db[_0x11b8b9[_0x78e7('0x26')]],'as':_0x11b8b9['as'],'attributes':_0x11b8b9[_0x78e7('0x22')],'include':_0x11b8b9['include']?_['map'](_0x11b8b9['include'],function(_0x4d8615){return{'model':db[_0x4d8615['model']],'as':_0x4d8615['as'],'attributes':_0x4d8615['attributes']};}):[]};}):[]};}):[]:[]})[_0x78e7('0x12')](function(_0x3f92a5){logger[_0x78e7('0x1b')](_0x78e7('0x27'),_0x1971ef);logger['debug'](_0x78e7('0x27'),_0x1971ef,JSON[_0x78e7('0x16')](_0x3f92a5));_0x5d665c(_0x3f92a5);})[_0x78e7('0x1d')](function(_0x1a5bff){logger['error'](_0x78e7('0x27'),_0x1a5bff[_0x78e7('0x1a')],_0x1971ef);_0xc4b8a0(_0x92a6a['error'](0x1f4,_0x1a5bff[_0x78e7('0x1a')]));});});};
\ No newline at end of file
+var _0xfaaa=['jayson/promise','client','redis','localhost','socket.io-emitter','request','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','where','attributes','limit','include','map','model','GetSmsQueue','ShowSmsQueue','SmsQueue','raw','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfaaa,0x15e));var _0xafaa=function(_0x5aaa8b,_0x1ad8c0){_0x5aaa8b=_0x5aaa8b-0x0;var _0x53179b=_0xfaaa[_0x5aaa8b];return _0x53179b;};'use strict';var _=require(_0xafaa('0x0'));var util=require('util');var moment=require(_0xafaa('0x1'));var BPromise=require(_0xafaa('0x2'));var rs=require(_0xafaa('0x3'));var fs=require('fs');var Redis=require(_0xafaa('0x4'));var db=require(_0xafaa('0x5'))['db'];var utils=require(_0xafaa('0x6'));var logger=require(_0xafaa('0x7'))(_0xafaa('0x8'));var config=require(_0xafaa('0x9'));var jayson=require(_0xafaa('0xa'));var client=jayson[_0xafaa('0xb')]['http']({'port':0x232a});config[_0xafaa('0xc')]=_['defaults'](config[_0xafaa('0xc')],{'host':_0xafaa('0xd'),'port':0x18eb});var socket=require(_0xafaa('0xe'))(new Redis(config[_0xafaa('0xc')]));require('./smsQueue.socket')['register'](socket);function respondWithRpcPromise(_0x22e6b7,_0x1db353,_0x11db8e){return new BPromise(function(_0x34ba63,_0x4adf7d){return client[_0xafaa('0xf')](_0x22e6b7,_0x11db8e)['then'](function(_0x41f1d6){logger[_0xafaa('0x10')](_0xafaa('0x11'),_0x1db353,_0xafaa('0x12'));logger[_0xafaa('0x13')](_0xafaa('0x14'),_0x1db353,'request\x20sent',JSON[_0xafaa('0x15')](_0x41f1d6));if(_0x41f1d6[_0xafaa('0x16')]){if(_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x17')]===0x1f4){logger['error'](_0xafaa('0x11'),_0x1db353,_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x18')]);return _0x4adf7d(_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x18')]);}logger['error'](_0xafaa('0x11'),_0x1db353,_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x18')]);return _0x34ba63(_0x41f1d6[_0xafaa('0x16')]['message']);}else{logger[_0xafaa('0x10')]('SmsQueue,\x20%s,\x20%s',_0x1db353,_0xafaa('0x12'));_0x34ba63(_0x41f1d6[_0xafaa('0x19')][_0xafaa('0x18')]);}})[_0xafaa('0x1a')](function(_0x43023b){logger['error']('SmsQueue,\x20%s,\x20%s',_0x1db353,_0x43023b);_0x4adf7d(_0x43023b);});});}exports['GetSmsQueue']=function(_0x201a5d){var _0x344f33=this;return new Promise(function(_0x395b41,_0x50a728){return db['SmsQueue'][_0xafaa('0x1b')]({'raw':_0x201a5d['options']?_0x201a5d[_0xafaa('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d[_0xafaa('0x1c')][_0xafaa('0x1d')]||null:null,'attributes':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d[_0xafaa('0x1c')][_0xafaa('0x1e')]||null:null,'limit':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d['options'][_0xafaa('0x1f')]||null:null,'include':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d[_0xafaa('0x1c')][_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x201a5d['options'][_0xafaa('0x20')],function(_0x534cef){return{'model':db[_0x534cef[_0xafaa('0x22')]],'as':_0x534cef['as'],'attributes':_0x534cef['attributes'],'include':_0x534cef[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x534cef['include'],function(_0xddf3d2){return{'model':db[_0xddf3d2[_0xafaa('0x22')]],'as':_0xddf3d2['as'],'attributes':_0xddf3d2['attributes'],'include':_0xddf3d2[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0xddf3d2[_0xafaa('0x20')],function(_0x142580){return{'model':db[_0x142580[_0xafaa('0x22')]],'as':_0x142580['as'],'attributes':_0x142580[_0xafaa('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x20da8a){logger[_0xafaa('0x10')](_0xafaa('0x23'),_0x201a5d);logger['debug'](_0xafaa('0x23'),_0x201a5d,JSON['stringify'](_0x20da8a));_0x395b41(_0x20da8a);})[_0xafaa('0x1a')](function(_0x19a916){logger[_0xafaa('0x16')]('GetSmsQueue',_0x19a916[_0xafaa('0x18')],_0x201a5d);_0x50a728(_0x344f33[_0xafaa('0x16')](0x1f4,_0x19a916[_0xafaa('0x18')]));});});};exports[_0xafaa('0x24')]=function(_0x4bc774){var _0x190507=this;return new Promise(function(_0xc8b245,_0x4ac776){return db[_0xafaa('0x25')]['find']({'raw':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774['options'][_0xafaa('0x26')]===undefined?!![]:![]:!![],'where':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774[_0xafaa('0x1c')][_0xafaa('0x1d')]||null:null,'attributes':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774[_0xafaa('0x1c')]['attributes']||null:null,'include':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774['options'][_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x4bc774['options'][_0xafaa('0x20')],function(_0x7dff71){return{'model':db[_0x7dff71[_0xafaa('0x22')]],'as':_0x7dff71['as'],'attributes':_0x7dff71['attributes'],'include':_0x7dff71[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x7dff71[_0xafaa('0x20')],function(_0x43f81e){return{'model':db[_0x43f81e[_0xafaa('0x22')]],'as':_0x43f81e['as'],'attributes':_0x43f81e['attributes'],'include':_0x43f81e[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x43f81e[_0xafaa('0x20')],function(_0x2c26f6){return{'model':db[_0x2c26f6['model']],'as':_0x2c26f6['as'],'attributes':_0x2c26f6[_0xafaa('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xafaa('0x27')](function(_0x580722){logger[_0xafaa('0x10')](_0xafaa('0x24'),_0x4bc774);logger[_0xafaa('0x13')](_0xafaa('0x24'),_0x4bc774,JSON[_0xafaa('0x15')](_0x580722));_0xc8b245(_0x580722);})[_0xafaa('0x1a')](function(_0x4e1bd7){logger['error'](_0xafaa('0x24'),_0x4e1bd7['message'],_0x4bc774);_0x4ac776(_0x190507['error'](0x1f4,_0x4e1bd7['message']));});});};
\ No newline at end of file
index 32ce86a..b9990a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18f5=['removeListener','register','length','smsQueue:','./smsQueue.events','remove','update','emit'];(function(_0x12bb90,_0x1d84df){var _0x42338c=function(_0xf86130){while(--_0xf86130){_0x12bb90['push'](_0x12bb90['shift']());}};_0x42338c(++_0x1d84df);}(_0x18f5,0x16c));var _0x518f=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x18f5[_0x5f3f88];return _0xd08119;};'use strict';var SmsQueueEvents=require(_0x518f('0x0'));var events=['save',_0x518f('0x1'),_0x518f('0x2')];function createListener(_0x292101,_0x1233f5){return function(_0x18bca8){_0x1233f5[_0x518f('0x3')](_0x292101,_0x18bca8);};}function removeListener(_0xea2570,_0x28c1fb){return function(){SmsQueueEvents[_0x518f('0x4')](_0xea2570,_0x28c1fb);};}exports[_0x518f('0x5')]=function(_0x11183f){for(var _0x2f839a=0x0,_0x19a0c4=events[_0x518f('0x6')];_0x2f839a<_0x19a0c4;_0x2f839a++){var _0x541579=events[_0x2f839a];var _0x55eeba=createListener(_0x518f('0x7')+_0x541579,_0x11183f);SmsQueueEvents['on'](_0x541579,_0x55eeba);}};
\ No newline at end of file
+var _0x8a5e=['update','emit','removeListener','length','smsQueue:','./smsQueue.events','save'];(function(_0x90dfad,_0x4d127a){var _0x8cdcc7=function(_0x34b6e1){while(--_0x34b6e1){_0x90dfad['push'](_0x90dfad['shift']());}};_0x8cdcc7(++_0x4d127a);}(_0x8a5e,0x15c));var _0xe8a5=function(_0x185e04,_0x2ae68e){_0x185e04=_0x185e04-0x0;var _0x39cd89=_0x8a5e[_0x185e04];return _0x39cd89;};'use strict';var SmsQueueEvents=require(_0xe8a5('0x0'));var events=[_0xe8a5('0x1'),'remove',_0xe8a5('0x2')];function createListener(_0xf6dec2,_0x3a8ac5){return function(_0x1ea914){_0x3a8ac5[_0xe8a5('0x3')](_0xf6dec2,_0x1ea914);};}function removeListener(_0x27f6b7,_0x118b48){return function(){SmsQueueEvents[_0xe8a5('0x4')](_0x27f6b7,_0x118b48);};}exports['register']=function(_0x39a87b){for(var _0x32acf5=0x0,_0x3dbaa2=events[_0xe8a5('0x5')];_0x32acf5<_0x3dbaa2;_0x32acf5++){var _0x30d149=events[_0x32acf5];var _0x2d34e5=createListener(_0xe8a5('0x6')+_0x30d149,_0x39a87b);SmsQueueEvents['on'](_0x30d149,_0x2d34e5);}};
\ No newline at end of file
index d643e0b..6b03f00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dbd=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x34e725,_0x5633f8){var _0x57acc4=function(_0x1715c5){while(--_0x1715c5){_0x34e725['push'](_0x34e725['shift']());}};_0x57acc4(++_0x5633f8);}(_0x8dbd,0x159));var _0xd8db=function(_0x74690b,_0x12b33b){_0x74690b=_0x74690b-0x0;var _0x35c4a7=_0x8dbd[_0x74690b];return _0x35c4a7;};'use strict';var multer=require(_0xd8db('0x0'));var util=require(_0xd8db('0x1'));var path=require('path');var timeout=require(_0xd8db('0x2'));var express=require(_0xd8db('0x3'));var router=express[_0xd8db('0x4')]();var fs_extra=require(_0xd8db('0x5'));var auth=require(_0xd8db('0x6'));var interaction=require(_0xd8db('0x7'));var config=require(_0xd8db('0x8'));var controller=require(_0xd8db('0x9'));router[_0xd8db('0xa')]('/',auth[_0xd8db('0xb')](),controller[_0xd8db('0xc')]);router[_0xd8db('0xa')](_0xd8db('0xd'),auth[_0xd8db('0xb')](),controller[_0xd8db('0xe')]);router[_0xd8db('0xa')](_0xd8db('0xf'),auth['isAuthenticated'](),controller[_0xd8db('0x10')]);router[_0xd8db('0x11')]('/',auth[_0xd8db('0xb')](),controller[_0xd8db('0x12')]);router[_0xd8db('0x13')](_0xd8db('0xf'),auth[_0xd8db('0xb')](),controller[_0xd8db('0x14')]);router[_0xd8db('0x15')](_0xd8db('0xf'),auth['isAuthenticated'](),controller[_0xd8db('0x16')]);module[_0xd8db('0x17')]=router;
\ No newline at end of file
+var _0xe9a6=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','create','put','update','delete','destroy','exports'];(function(_0x56daff,_0xadca9a){var _0x132c82=function(_0x19e0d7){while(--_0x19e0d7){_0x56daff['push'](_0x56daff['shift']());}};_0x132c82(++_0xadca9a);}(_0xe9a6,0x64));var _0x6e9a=function(_0x5a1b58,_0x40287f){_0x5a1b58=_0x5a1b58-0x0;var _0x1b5032=_0xe9a6[_0x5a1b58];return _0x1b5032;};'use strict';var multer=require(_0x6e9a('0x0'));var util=require('util');var path=require(_0x6e9a('0x1'));var timeout=require(_0x6e9a('0x2'));var express=require(_0x6e9a('0x3'));var router=express[_0x6e9a('0x4')]();var fs_extra=require(_0x6e9a('0x5'));var auth=require(_0x6e9a('0x6'));var interaction=require(_0x6e9a('0x7'));var config=require(_0x6e9a('0x8'));var controller=require('./smsQueueReport.controller');router['get']('/',auth[_0x6e9a('0x9')](),controller[_0x6e9a('0xa')]);router[_0x6e9a('0xb')]('/describe',auth[_0x6e9a('0x9')](),controller[_0x6e9a('0xc')]);router[_0x6e9a('0xb')](_0x6e9a('0xd'),auth[_0x6e9a('0x9')](),controller['show']);router['post']('/',auth[_0x6e9a('0x9')](),controller[_0x6e9a('0xe')]);router[_0x6e9a('0xf')](_0x6e9a('0xd'),auth[_0x6e9a('0x9')](),controller[_0x6e9a('0x10')]);router[_0x6e9a('0x11')](_0x6e9a('0xd'),auth[_0x6e9a('0x9')](),controller[_0x6e9a('0x12')]);module[_0x6e9a('0x13')]=router;
\ No newline at end of file
index 6a85e03..ff1eb5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5e4=['exports','STRING','DATE','moment','sequelize'];(function(_0x2b0e0f,_0x34c37a){var _0x59585b=function(_0x19a66a){while(--_0x19a66a){_0x2b0e0f['push'](_0x2b0e0f['shift']());}};_0x59585b(++_0x34c37a);}(_0xa5e4,0xee));var _0x4a5e=function(_0x4923b6,_0x3590a7){_0x4923b6=_0x4923b6-0x0;var _0x143ee6=_0xa5e4[_0x4923b6];return _0x143ee6;};'use strict';var moment=require(_0x4a5e('0x0'));var Sequelize=require(_0x4a5e('0x1'));module[_0x4a5e('0x2')]={'uniqueid':{'type':Sequelize[_0x4a5e('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x4a5e('0x4')]},'exitAt':{'type':Sequelize[_0x4a5e('0x4')]},'reason':{'type':Sequelize[_0x4a5e('0x3')]}};
\ No newline at end of file
+var _0x1d5f=['STRING','DATE','sequelize','exports'];(function(_0x43abc5,_0x252414){var _0x5bc6bd=function(_0x5c6f5f){while(--_0x5c6f5f){_0x43abc5['push'](_0x43abc5['shift']());}};_0x5bc6bd(++_0x252414);}(_0x1d5f,0x8a));var _0xf1d5=function(_0x18d631,_0x4376d2){_0x18d631=_0x18d631-0x0;var _0x50d708=_0x1d5f[_0x18d631];return _0x50d708;};'use strict';var moment=require('moment');var Sequelize=require(_0xf1d5('0x0'));module[_0xf1d5('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xf1d5('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xf1d5('0x3')]},'acceptAt':{'type':Sequelize[_0xf1d5('0x3')]},'exitAt':{'type':Sequelize[_0xf1d5('0x3')]},'reason':{'type':Sequelize[_0xf1d5('0x2')]}};
\ No newline at end of file
index 8bcb445..9fbfd00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd81=['pick','filter','merge','options','SmsQueueReport','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','catch','create','body','describe','eml-format','zip-dir','request-promise','bluebird','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','sort','where','filters'];(function(_0x5546aa,_0x44fdaa){var _0x1f11b2=function(_0x5be4b4){while(--_0x5be4b4){_0x5546aa['push'](_0x5546aa['shift']());}};_0x1f11b2(++_0x44fdaa);}(_0xfd81,0xa6));var _0x1fd8=function(_0xe1784f,_0x4a4d3e){_0xe1784f=_0xe1784f-0x0;var _0x25e8e2=_0xfd81[_0xe1784f];return _0x25e8e2;};'use strict';var emlformat=require(_0x1fd8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1fd8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1fd8('0x2'));var moment=require('moment');var BPromise=require(_0x1fd8('0x3'));var Mustache=require('mustache');var util=require(_0x1fd8('0x4'));var path=require(_0x1fd8('0x5'));var sox=require(_0x1fd8('0x6'));var csv=require('to-csv');var ejs=require(_0x1fd8('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1fd8('0x8'));var squel=require('squel');var crypto=require(_0x1fd8('0x9'));var jsforce=require(_0x1fd8('0xa'));var deskjs=require(_0x1fd8('0xb'));var toCsv=require(_0x1fd8('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1fd8('0xd'));var authService=require(_0x1fd8('0xe'));var qs=require(_0x1fd8('0xf'));var as=require(_0x1fd8('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1fd8('0x11'))(_0x1fd8('0x12'));var utils=require('../../config/utils');var config=require(_0x1fd8('0x13'));var licenseUtil=require(_0x1fd8('0x14'));var db=require(_0x1fd8('0x15'))['db'];function respondWithStatusCode(_0x5bdefb,_0x570433){_0x570433=_0x570433||0xcc;return function(_0x413e7c){if(_0x413e7c){return _0x5bdefb[_0x1fd8('0x16')](_0x570433);}return _0x5bdefb['status'](_0x570433)[_0x1fd8('0x17')]();};}function respondWithResult(_0x24830b,_0x3f8757){_0x3f8757=_0x3f8757||0xc8;return function(_0x4ac6dd){if(_0x4ac6dd){return _0x24830b['status'](_0x3f8757)[_0x1fd8('0x18')](_0x4ac6dd);}};}function respondWithFilteredResult(_0x30c1ac,_0x59f7d2){return function(_0xd7266b){if(_0xd7266b){var _0x4de9ee=typeof _0x59f7d2[_0x1fd8('0x19')]===_0x1fd8('0x1a')&&typeof _0x59f7d2[_0x1fd8('0x1b')]===_0x1fd8('0x1a');var _0x1b2a98=_0xd7266b['count'];var _0x2b9f85=_0x4de9ee?0x0:_0x59f7d2['offset'];var _0x5ab330=_0x4de9ee?_0xd7266b[_0x1fd8('0x1c')]:_0x59f7d2[_0x1fd8('0x19')]+_0x59f7d2[_0x1fd8('0x1b')];var _0x37444c;if(_0x5ab330>=_0x1b2a98){_0x5ab330=_0x1b2a98;_0x37444c=0xc8;}else{_0x37444c=0xce;}_0x30c1ac[_0x1fd8('0x1d')](_0x37444c);return _0x30c1ac[_0x1fd8('0x1e')](_0x1fd8('0x1f'),_0x2b9f85+'-'+_0x5ab330+'/'+_0x1b2a98)[_0x1fd8('0x18')](_0xd7266b);}return null;};}function patchUpdates(_0x1f56c9){return function(_0x913943){try{jsonpatch[_0x1fd8('0x20')](_0x913943,_0x1f56c9,!![]);}catch(_0x4f7e48){return BPromise[_0x1fd8('0x21')](_0x4f7e48);}return _0x913943[_0x1fd8('0x22')]();};}function saveUpdates(_0x3addf2,_0x5b5dc9){return function(_0x31c5be){if(_0x31c5be){return _0x31c5be[_0x1fd8('0x23')](_0x3addf2)['then'](function(_0x502e83){return _0x502e83;});}return null;};}function removeEntity(_0x4aa30c,_0x576e31){return function(_0x2d5e4b){if(_0x2d5e4b){return _0x2d5e4b['destroy']()[_0x1fd8('0x24')](function(){_0x4aa30c[_0x1fd8('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5875fd,_0x5cce89){return function(_0x4514d5){if(!_0x4514d5){_0x5875fd[_0x1fd8('0x16')](0x194);}return _0x4514d5;};}function handleError(_0x430639,_0x2e7c22){_0x2e7c22=_0x2e7c22||0x1f4;return function(_0x831c7a){logger[_0x1fd8('0x25')](_0x831c7a[_0x1fd8('0x26')]);if(_0x831c7a['name']){delete _0x831c7a[_0x1fd8('0x27')];}_0x430639[_0x1fd8('0x1d')](_0x2e7c22)[_0x1fd8('0x28')](_0x831c7a);};}exports[_0x1fd8('0x29')]=function(_0x2041c9,_0xcf2bd1){var _0x1c4d8c={},_0x4b2516={},_0x169502={'count':0x0,'rows':[]};var _0x506d86=_[_0x1fd8('0x2a')](db['SmsQueueReport']['rawAttributes'],function(_0x42c5f3){return{'name':_0x42c5f3[_0x1fd8('0x2b')],'type':_0x42c5f3[_0x1fd8('0x2c')][_0x1fd8('0x2d')]};});_0x4b2516[_0x1fd8('0x2e')]=_[_0x1fd8('0x2a')](_0x506d86,_0x1fd8('0x27'));_0x4b2516[_0x1fd8('0x2f')]=_['keys'](_0x2041c9[_0x1fd8('0x2f')]);_0x4b2516['filters']=_[_0x1fd8('0x30')](_0x4b2516['model'],_0x4b2516[_0x1fd8('0x2f')]);_0x1c4d8c[_0x1fd8('0x31')]=_[_0x1fd8('0x30')](_0x4b2516[_0x1fd8('0x2e')],qs[_0x1fd8('0x32')](_0x2041c9[_0x1fd8('0x2f')][_0x1fd8('0x32')]));_0x1c4d8c[_0x1fd8('0x31')]=_0x1c4d8c['attributes'][_0x1fd8('0x33')]?_0x1c4d8c[_0x1fd8('0x31')]:_0x4b2516['model'];if(!_0x2041c9[_0x1fd8('0x2f')]['hasOwnProperty'](_0x1fd8('0x34'))){_0x1c4d8c[_0x1fd8('0x1b')]=qs[_0x1fd8('0x1b')](_0x2041c9[_0x1fd8('0x2f')]['limit']);_0x1c4d8c[_0x1fd8('0x19')]=qs[_0x1fd8('0x19')](_0x2041c9[_0x1fd8('0x2f')][_0x1fd8('0x19')]);}_0x1c4d8c['order']=qs['sort'](_0x2041c9['query'][_0x1fd8('0x35')]);_0x1c4d8c[_0x1fd8('0x36')]=qs[_0x1fd8('0x37')](_[_0x1fd8('0x38')](_0x2041c9[_0x1fd8('0x2f')],_0x4b2516['filters']),_0x506d86);if(_0x2041c9['query'][_0x1fd8('0x39')]){_0x1c4d8c[_0x1fd8('0x36')]=_[_0x1fd8('0x3a')](_0x1c4d8c[_0x1fd8('0x36')],{'$or':_['map'](_0x506d86,function(_0x147618){if(_0x147618[_0x1fd8('0x2c')]!=='VIRTUAL'){var _0xcfae2d={};_0xcfae2d[_0x147618[_0x1fd8('0x27')]]={'$like':'%'+_0x2041c9[_0x1fd8('0x2f')]['filter']+'%'};return _0xcfae2d;}})});}_0x1c4d8c=_[_0x1fd8('0x3a')]({},_0x1c4d8c,_0x2041c9[_0x1fd8('0x3b')]);var _0x34a7f2={'where':_0x1c4d8c[_0x1fd8('0x36')]};return db[_0x1fd8('0x3c')][_0x1fd8('0x1c')](_0x34a7f2)['then'](function(_0x27fcf4){_0x169502[_0x1fd8('0x1c')]=_0x27fcf4;if(_0x2041c9[_0x1fd8('0x2f')][_0x1fd8('0x3d')]){_0x1c4d8c['include']=[{'all':!![]}];}return db[_0x1fd8('0x3c')][_0x1fd8('0x3e')](_0x1c4d8c);})[_0x1fd8('0x24')](function(_0x188c02){_0x169502[_0x1fd8('0x3f')]=_0x188c02;return _0x169502;})[_0x1fd8('0x24')](respondWithFilteredResult(_0xcf2bd1,_0x1c4d8c))['catch'](handleError(_0xcf2bd1,null));};exports[_0x1fd8('0x40')]=function(_0x27b986,_0x1518b2){var _0x288c63={'raw':!![],'where':{'id':_0x27b986[_0x1fd8('0x41')]['id']}},_0x4985a3={};_0x4985a3[_0x1fd8('0x2e')]=_[_0x1fd8('0x42')](db[_0x1fd8('0x3c')][_0x1fd8('0x43')]);_0x4985a3[_0x1fd8('0x2f')]=_[_0x1fd8('0x42')](_0x27b986['query']);_0x4985a3[_0x1fd8('0x37')]=_['intersection'](_0x4985a3[_0x1fd8('0x2e')],_0x4985a3[_0x1fd8('0x2f')]);_0x288c63['attributes']=_[_0x1fd8('0x30')](_0x4985a3[_0x1fd8('0x2e')],qs[_0x1fd8('0x32')](_0x27b986[_0x1fd8('0x2f')][_0x1fd8('0x32')]));_0x288c63['attributes']=_0x288c63[_0x1fd8('0x31')]['length']?_0x288c63[_0x1fd8('0x31')]:_0x4985a3['model'];if(_0x27b986[_0x1fd8('0x2f')][_0x1fd8('0x3d')]){_0x288c63[_0x1fd8('0x44')]=[{'all':!![]}];}_0x288c63=_[_0x1fd8('0x3a')]({},_0x288c63,_0x27b986['options']);return db[_0x1fd8('0x3c')][_0x1fd8('0x45')](_0x288c63)[_0x1fd8('0x24')](handleEntityNotFound(_0x1518b2,null))[_0x1fd8('0x24')](respondWithResult(_0x1518b2,null))[_0x1fd8('0x46')](handleError(_0x1518b2,null));};exports['create']=function(_0x41eb5e,_0x2b913e){return db[_0x1fd8('0x3c')][_0x1fd8('0x47')](_0x41eb5e[_0x1fd8('0x48')],{})[_0x1fd8('0x24')](respondWithResult(_0x2b913e,0xc9))[_0x1fd8('0x46')](handleError(_0x2b913e,null));};exports['update']=function(_0x36e4db,_0x3b4759){if(_0x36e4db['body']['id']){delete _0x36e4db[_0x1fd8('0x48')]['id'];}return db['SmsQueueReport'][_0x1fd8('0x45')]({'where':{'id':_0x36e4db[_0x1fd8('0x41')]['id']}})[_0x1fd8('0x24')](handleEntityNotFound(_0x3b4759,null))[_0x1fd8('0x24')](saveUpdates(_0x36e4db[_0x1fd8('0x48')],null))[_0x1fd8('0x24')](respondWithResult(_0x3b4759,null))[_0x1fd8('0x46')](handleError(_0x3b4759,null));};exports['destroy']=function(_0x5d6c4e,_0x182264){return db['SmsQueueReport'][_0x1fd8('0x45')]({'where':{'id':_0x5d6c4e[_0x1fd8('0x41')]['id']}})['then'](handleEntityNotFound(_0x182264,null))[_0x1fd8('0x24')](removeEntity(_0x182264,null))[_0x1fd8('0x46')](handleError(_0x182264,null));};exports[_0x1fd8('0x49')]=function(_0x13eecc,_0xe4725e){return db[_0x1fd8('0x3c')][_0x1fd8('0x49')]()[_0x1fd8('0x24')](respondWithResult(_0xe4725e,null))[_0x1fd8('0x46')](handleError(_0xe4725e,null));};
\ No newline at end of file
+var _0x79d7=['order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','params','intersection','SmsQueueReport','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','status','send','index','map','rawAttributes','fieldName','key','keys','query','filters','model','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x37656f,_0x350ac6){var _0x5cd9d8=function(_0x12e27e){while(--_0x12e27e){_0x37656f['push'](_0x37656f['shift']());}};_0x5cd9d8(++_0x350ac6);}(_0x79d7,0x190));var _0x779d=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x79d7[_0x32f7d7];return _0x133d09;};'use strict';var emlformat=require(_0x779d('0x0'));var rimraf=require(_0x779d('0x1'));var zipdir=require(_0x779d('0x2'));var jsonpatch=require(_0x779d('0x3'));var rp=require(_0x779d('0x4'));var moment=require('moment');var BPromise=require(_0x779d('0x5'));var Mustache=require('mustache');var util=require(_0x779d('0x6'));var path=require(_0x779d('0x7'));var sox=require(_0x779d('0x8'));var csv=require(_0x779d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x779d('0xa'));var _=require(_0x779d('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x779d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x779d('0x9'));var querystring=require(_0x779d('0xd'));var Papa=require(_0x779d('0xe'));var Redis=require(_0x779d('0xf'));var authService=require(_0x779d('0x10'));var qs=require(_0x779d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x779d('0x12'));var logger=require('../../config/logger')(_0x779d('0x13'));var utils=require('../../config/utils');var config=require(_0x779d('0x14'));var licenseUtil=require(_0x779d('0x15'));var db=require(_0x779d('0x16'))['db'];function respondWithStatusCode(_0x29cd45,_0x5ebff9){_0x5ebff9=_0x5ebff9||0xcc;return function(_0x359ae5){if(_0x359ae5){return _0x29cd45[_0x779d('0x17')](_0x5ebff9);}return _0x29cd45['status'](_0x5ebff9)[_0x779d('0x18')]();};}function respondWithResult(_0x745e0,_0x4905a1){_0x4905a1=_0x4905a1||0xc8;return function(_0x3f971e){if(_0x3f971e){return _0x745e0['status'](_0x4905a1)[_0x779d('0x19')](_0x3f971e);}};}function respondWithFilteredResult(_0x26c791,_0x1178b9){return function(_0x35231c){if(_0x35231c){var _0x1c3672=typeof _0x1178b9['offset']===_0x779d('0x1a')&&typeof _0x1178b9[_0x779d('0x1b')]==='undefined';var _0x3f13a7=_0x35231c[_0x779d('0x1c')];var _0x40ee7d=_0x1c3672?0x0:_0x1178b9['offset'];var _0x549fde=_0x1c3672?_0x35231c[_0x779d('0x1c')]:_0x1178b9[_0x779d('0x1d')]+_0x1178b9[_0x779d('0x1b')];var _0x14e588;if(_0x549fde>=_0x3f13a7){_0x549fde=_0x3f13a7;_0x14e588=0xc8;}else{_0x14e588=0xce;}_0x26c791['status'](_0x14e588);return _0x26c791['set'](_0x779d('0x1e'),_0x40ee7d+'-'+_0x549fde+'/'+_0x3f13a7)[_0x779d('0x19')](_0x35231c);}return null;};}function patchUpdates(_0x5a3f9f){return function(_0x5bdd48){try{jsonpatch[_0x779d('0x1f')](_0x5bdd48,_0x5a3f9f,!![]);}catch(_0xffab54){return BPromise[_0x779d('0x20')](_0xffab54);}return _0x5bdd48[_0x779d('0x21')]();};}function saveUpdates(_0x3ebb2c,_0x254165){return function(_0x4fa9ad){if(_0x4fa9ad){return _0x4fa9ad[_0x779d('0x22')](_0x3ebb2c)[_0x779d('0x23')](function(_0x199a3b){return _0x199a3b;});}return null;};}function removeEntity(_0x453975,_0x3b6d9f){return function(_0x43ac93){if(_0x43ac93){return _0x43ac93[_0x779d('0x24')]()[_0x779d('0x23')](function(){_0x453975['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x34622c,_0xb96816){return function(_0x223d27){if(!_0x223d27){_0x34622c[_0x779d('0x17')](0x194);}return _0x223d27;};}function handleError(_0x479363,_0x28ec93){_0x28ec93=_0x28ec93||0x1f4;return function(_0x40b3ca){logger[_0x779d('0x25')](_0x40b3ca[_0x779d('0x26')]);if(_0x40b3ca[_0x779d('0x27')]){delete _0x40b3ca[_0x779d('0x27')];}_0x479363[_0x779d('0x28')](_0x28ec93)[_0x779d('0x29')](_0x40b3ca);};}exports[_0x779d('0x2a')]=function(_0x34195d,_0x20fdff){var _0x162931={},_0x1fd02e={},_0x5accda={'count':0x0,'rows':[]};var _0x49f712=_[_0x779d('0x2b')](db['SmsQueueReport'][_0x779d('0x2c')],function(_0x50c45d){return{'name':_0x50c45d[_0x779d('0x2d')],'type':_0x50c45d['type'][_0x779d('0x2e')]};});_0x1fd02e['model']=_['map'](_0x49f712,_0x779d('0x27'));_0x1fd02e['query']=_[_0x779d('0x2f')](_0x34195d[_0x779d('0x30')]);_0x1fd02e[_0x779d('0x31')]=_['intersection'](_0x1fd02e[_0x779d('0x32')],_0x1fd02e[_0x779d('0x30')]);_0x162931[_0x779d('0x33')]=_['intersection'](_0x1fd02e[_0x779d('0x32')],qs['fields'](_0x34195d[_0x779d('0x30')][_0x779d('0x34')]));_0x162931['attributes']=_0x162931[_0x779d('0x33')][_0x779d('0x35')]?_0x162931[_0x779d('0x33')]:_0x1fd02e[_0x779d('0x32')];if(!_0x34195d['query'][_0x779d('0x36')](_0x779d('0x37'))){_0x162931[_0x779d('0x1b')]=qs[_0x779d('0x1b')](_0x34195d['query'][_0x779d('0x1b')]);_0x162931[_0x779d('0x1d')]=qs[_0x779d('0x1d')](_0x34195d[_0x779d('0x30')][_0x779d('0x1d')]);}_0x162931[_0x779d('0x38')]=qs[_0x779d('0x39')](_0x34195d[_0x779d('0x30')][_0x779d('0x39')]);_0x162931[_0x779d('0x3a')]=qs[_0x779d('0x31')](_[_0x779d('0x3b')](_0x34195d[_0x779d('0x30')],_0x1fd02e[_0x779d('0x31')]),_0x49f712);if(_0x34195d['query']['filter']){_0x162931[_0x779d('0x3a')]=_[_0x779d('0x3c')](_0x162931[_0x779d('0x3a')],{'$or':_[_0x779d('0x2b')](_0x49f712,function(_0x55dee1){if(_0x55dee1[_0x779d('0x3d')]!==_0x779d('0x3e')){var _0x366c63={};_0x366c63[_0x55dee1[_0x779d('0x27')]]={'$like':'%'+_0x34195d['query'][_0x779d('0x3f')]+'%'};return _0x366c63;}})});}_0x162931=_[_0x779d('0x3c')]({},_0x162931,_0x34195d[_0x779d('0x40')]);var _0x415e2e={'where':_0x162931[_0x779d('0x3a')]};return db['SmsQueueReport']['count'](_0x415e2e)[_0x779d('0x23')](function(_0x369123){_0x5accda[_0x779d('0x1c')]=_0x369123;if(_0x34195d['query']['includeAll']){_0x162931[_0x779d('0x41')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x779d('0x42')](_0x162931);})['then'](function(_0x5136e4){_0x5accda[_0x779d('0x43')]=_0x5136e4;return _0x5accda;})[_0x779d('0x23')](respondWithFilteredResult(_0x20fdff,_0x162931))[_0x779d('0x44')](handleError(_0x20fdff,null));};exports['show']=function(_0x251c8e,_0xd207b1){var _0x5dc2ed={'raw':!![],'where':{'id':_0x251c8e[_0x779d('0x45')]['id']}},_0x530e44={};_0x530e44[_0x779d('0x32')]=_[_0x779d('0x2f')](db['SmsQueueReport'][_0x779d('0x2c')]);_0x530e44[_0x779d('0x30')]=_[_0x779d('0x2f')](_0x251c8e[_0x779d('0x30')]);_0x530e44[_0x779d('0x31')]=_['intersection'](_0x530e44['model'],_0x530e44[_0x779d('0x30')]);_0x5dc2ed[_0x779d('0x33')]=_[_0x779d('0x46')](_0x530e44[_0x779d('0x32')],qs[_0x779d('0x34')](_0x251c8e[_0x779d('0x30')][_0x779d('0x34')]));_0x5dc2ed['attributes']=_0x5dc2ed[_0x779d('0x33')][_0x779d('0x35')]?_0x5dc2ed[_0x779d('0x33')]:_0x530e44[_0x779d('0x32')];if(_0x251c8e[_0x779d('0x30')]['includeAll']){_0x5dc2ed['include']=[{'all':!![]}];}_0x5dc2ed=_['merge']({},_0x5dc2ed,_0x251c8e[_0x779d('0x40')]);return db[_0x779d('0x47')][_0x779d('0x48')](_0x5dc2ed)[_0x779d('0x23')](handleEntityNotFound(_0xd207b1,null))[_0x779d('0x23')](respondWithResult(_0xd207b1,null))[_0x779d('0x44')](handleError(_0xd207b1,null));};exports['create']=function(_0x1b2178,_0x52925d){return db[_0x779d('0x47')][_0x779d('0x49')](_0x1b2178[_0x779d('0x4a')],{})[_0x779d('0x23')](respondWithResult(_0x52925d,0xc9))[_0x779d('0x44')](handleError(_0x52925d,null));};exports[_0x779d('0x22')]=function(_0x217dfb,_0x136dc0){if(_0x217dfb[_0x779d('0x4a')]['id']){delete _0x217dfb[_0x779d('0x4a')]['id'];}return db['SmsQueueReport'][_0x779d('0x48')]({'where':{'id':_0x217dfb[_0x779d('0x45')]['id']}})[_0x779d('0x23')](handleEntityNotFound(_0x136dc0,null))[_0x779d('0x23')](saveUpdates(_0x217dfb[_0x779d('0x4a')],null))[_0x779d('0x23')](respondWithResult(_0x136dc0,null))['catch'](handleError(_0x136dc0,null));};exports['destroy']=function(_0x403f7b,_0x241c6c){return db[_0x779d('0x47')][_0x779d('0x48')]({'where':{'id':_0x403f7b[_0x779d('0x45')]['id']}})[_0x779d('0x23')](handleEntityNotFound(_0x241c6c,null))['then'](removeEntity(_0x241c6c,null))[_0x779d('0x44')](handleError(_0x241c6c,null));};exports['describe']=function(_0x28f51d,_0x139964){return db[_0x779d('0x47')][_0x779d('0x4b')]()[_0x779d('0x23')](respondWithResult(_0x139964,null))[_0x779d('0x44')](handleError(_0x139964,null));};
\ No newline at end of file
index b262709..1e2f530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','SmsQueueReport','report_sms_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x3ddce3,_0x547f1f){var _0x21ed2f=function(_0x4fdf38){while(--_0x4fdf38){_0x3ddce3['push'](_0x3ddce3['shift']());}};_0x21ed2f(++_0x547f1f);}(_0xbaf0,0x12a));var _0x0baf=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbaf0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x20b4be,_0x2ed5d6){var _0x1f884e=function(_0x26a8f6){while(--_0x26a8f6){_0x20b4be['push'](_0x20b4be['shift']());}};_0x1f884e(++_0x2ed5d6);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0xb7e7[_0x1b5aea];return _0x15cfc6;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 3a6ae8c..f7c7169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5cb=['../../config/environment','jayson/promise','request','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','SmsQueueReport','create','body','options','raw','CreateSmsQueueReport','UpdateSmsQueueReport','update','where','attributes','limit','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x34ad03,_0x348ed6){var _0x1a4399=function(_0xe37dc1){while(--_0xe37dc1){_0x34ad03['push'](_0x34ad03['shift']());}};_0x1a4399(++_0x348ed6);}(_0xc5cb,0x16d));var _0xbc5c=function(_0xc8f565,_0xe0e55f){_0xc8f565=_0xc8f565-0x0;var _0x58209f=_0xc5cb[_0xc8f565];return _0x58209f;};'use strict';var _=require(_0xbc5c('0x0'));var util=require('util');var moment=require(_0xbc5c('0x1'));var BPromise=require('bluebird');var rs=require(_0xbc5c('0x2'));var fs=require('fs');var Redis=require(_0xbc5c('0x3'));var db=require(_0xbc5c('0x4'))['db'];var utils=require(_0xbc5c('0x5'));var logger=require(_0xbc5c('0x6'))('rpc');var config=require(_0xbc5c('0x7'));var jayson=require(_0xbc5c('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3fe00a,_0x48ed81,_0x41c68c){return new BPromise(function(_0xd91ba7,_0x384f0a){return client[_0xbc5c('0x9')](_0x3fe00a,_0x41c68c)['then'](function(_0x10da9a){logger[_0xbc5c('0xa')](_0xbc5c('0xb'),_0x48ed81,_0xbc5c('0xc'));logger[_0xbc5c('0xd')](_0xbc5c('0xe'),_0x48ed81,_0xbc5c('0xc'),JSON[_0xbc5c('0xf')](_0x10da9a));if(_0x10da9a[_0xbc5c('0x10')]){if(_0x10da9a[_0xbc5c('0x10')]['code']===0x1f4){logger[_0xbc5c('0x10')](_0xbc5c('0xb'),_0x48ed81,_0x10da9a['error'][_0xbc5c('0x11')]);return _0x384f0a(_0x10da9a[_0xbc5c('0x10')][_0xbc5c('0x11')]);}logger[_0xbc5c('0x10')](_0xbc5c('0xb'),_0x48ed81,_0x10da9a[_0xbc5c('0x10')][_0xbc5c('0x11')]);return _0xd91ba7(_0x10da9a[_0xbc5c('0x10')][_0xbc5c('0x11')]);}else{logger[_0xbc5c('0xa')](_0xbc5c('0xb'),_0x48ed81,_0xbc5c('0xc'));_0xd91ba7(_0x10da9a[_0xbc5c('0x12')]['message']);}})[_0xbc5c('0x13')](function(_0x254351){logger[_0xbc5c('0x10')](_0xbc5c('0xb'),_0x48ed81,_0x254351);_0x384f0a(_0x254351);});});}exports['CreateSmsQueueReport']=function(_0x1ef8b7){var _0x3413fd=this;return new Promise(function(_0x357cdb,_0x28811b){return db[_0xbc5c('0x14')][_0xbc5c('0x15')](_0x1ef8b7[_0xbc5c('0x16')],{'raw':_0x1ef8b7[_0xbc5c('0x17')]?_0x1ef8b7['options'][_0xbc5c('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x76ef9a){logger[_0xbc5c('0xa')]('CreateSmsQueueReport',_0x1ef8b7);logger[_0xbc5c('0xd')](_0xbc5c('0x19'),_0x1ef8b7,JSON[_0xbc5c('0xf')](_0x76ef9a));_0x357cdb(_0x76ef9a);})[_0xbc5c('0x13')](function(_0x1d975e){logger[_0xbc5c('0x10')](_0xbc5c('0x19'),_0x1d975e[_0xbc5c('0x11')],_0x1ef8b7);_0x28811b(_0x3413fd[_0xbc5c('0x10')](0x1f4,_0x1d975e[_0xbc5c('0x11')]));});});};exports[_0xbc5c('0x1a')]=function(_0x273354){var _0x24c082=this;return new Promise(function(_0x458882,_0x1a1aa1){return db[_0xbc5c('0x14')][_0xbc5c('0x1b')](_0x273354['body'],{'raw':_0x273354[_0xbc5c('0x17')]?_0x273354['options'][_0xbc5c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x273354[_0xbc5c('0x17')]?_0x273354[_0xbc5c('0x17')][_0xbc5c('0x1c')]||null:null,'attributes':_0x273354['options']?_0x273354[_0xbc5c('0x17')][_0xbc5c('0x1d')]||null:null,'limit':_0x273354[_0xbc5c('0x17')]?_0x273354[_0xbc5c('0x17')][_0xbc5c('0x1e')]||null:null})['then'](function(_0x396606){logger[_0xbc5c('0xa')](_0xbc5c('0x1a'),_0x273354);logger[_0xbc5c('0xd')]('UpdateSmsQueueReport',_0x273354,JSON['stringify'](_0x396606));_0x458882(_0x396606);})[_0xbc5c('0x13')](function(_0x442959){logger[_0xbc5c('0x10')](_0xbc5c('0x1a'),_0x442959[_0xbc5c('0x11')],_0x273354);_0x1a1aa1(_0x24c082[_0xbc5c('0x10')](0x1f4,_0x442959[_0xbc5c('0x11')]));});});};
\ No newline at end of file
+var _0x81a1=['attributes','limit','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','UpdateSmsQueueReport','update','where'];(function(_0x51e49e,_0x2e95d2){var _0x429917=function(_0x3ac1a7){while(--_0x3ac1a7){_0x51e49e['push'](_0x51e49e['shift']());}};_0x429917(++_0x2e95d2);}(_0x81a1,0x16d));var _0x181a=function(_0x496341,_0x2b434d){_0x496341=_0x496341-0x0;var _0x493c07=_0x81a1[_0x496341];return _0x493c07;};'use strict';var _=require(_0x181a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x181a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x181a('0x2'));var db=require(_0x181a('0x3'))['db'];var utils=require(_0x181a('0x4'));var logger=require(_0x181a('0x5'))(_0x181a('0x6'));var config=require(_0x181a('0x7'));var jayson=require(_0x181a('0x8'));var client=jayson[_0x181a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x507189,_0x2cd3ba,_0x4279a4){return new BPromise(function(_0x500fcf,_0x2abc90){return client[_0x181a('0xa')](_0x507189,_0x4279a4)[_0x181a('0xb')](function(_0x4865fd){logger[_0x181a('0xc')]('SmsQueueReport,\x20%s,\x20%s',_0x2cd3ba,'request\x20sent');logger[_0x181a('0xd')](_0x181a('0xe'),_0x2cd3ba,_0x181a('0xf'),JSON[_0x181a('0x10')](_0x4865fd));if(_0x4865fd[_0x181a('0x11')]){if(_0x4865fd[_0x181a('0x11')][_0x181a('0x12')]===0x1f4){logger['error'](_0x181a('0x13'),_0x2cd3ba,_0x4865fd['error'][_0x181a('0x14')]);return _0x2abc90(_0x4865fd[_0x181a('0x11')][_0x181a('0x14')]);}logger[_0x181a('0x11')](_0x181a('0x13'),_0x2cd3ba,_0x4865fd[_0x181a('0x11')][_0x181a('0x14')]);return _0x500fcf(_0x4865fd[_0x181a('0x11')][_0x181a('0x14')]);}else{logger[_0x181a('0xc')](_0x181a('0x13'),_0x2cd3ba,_0x181a('0xf'));_0x500fcf(_0x4865fd[_0x181a('0x15')][_0x181a('0x14')]);}})[_0x181a('0x16')](function(_0x48ec09){logger[_0x181a('0x11')](_0x181a('0x13'),_0x2cd3ba,_0x48ec09);_0x2abc90(_0x48ec09);});});}exports[_0x181a('0x17')]=function(_0x7b9f7d){var _0x2cf190=this;return new Promise(function(_0x5cc551,_0x2d8e86){return db[_0x181a('0x18')][_0x181a('0x19')](_0x7b9f7d[_0x181a('0x1a')],{'raw':_0x7b9f7d[_0x181a('0x1b')]?_0x7b9f7d[_0x181a('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x181a('0xb')](function(_0x242737){logger[_0x181a('0xc')](_0x181a('0x17'),_0x7b9f7d);logger[_0x181a('0xd')](_0x181a('0x17'),_0x7b9f7d,JSON['stringify'](_0x242737));_0x5cc551(_0x242737);})[_0x181a('0x16')](function(_0x9bd46c){logger[_0x181a('0x11')](_0x181a('0x17'),_0x9bd46c[_0x181a('0x14')],_0x7b9f7d);_0x2d8e86(_0x2cf190[_0x181a('0x11')](0x1f4,_0x9bd46c[_0x181a('0x14')]));});});};exports[_0x181a('0x1c')]=function(_0x1ad254){var _0x3d61d1=this;return new Promise(function(_0x3558e8,_0x2d84a5){return db[_0x181a('0x18')][_0x181a('0x1d')](_0x1ad254[_0x181a('0x1a')],{'raw':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')][_0x181a('0x1e')]||null:null,'attributes':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')][_0x181a('0x1f')]||null:null,'limit':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')][_0x181a('0x20')]||null:null})[_0x181a('0xb')](function(_0x386364){logger[_0x181a('0xc')]('UpdateSmsQueueReport',_0x1ad254);logger[_0x181a('0xd')](_0x181a('0x1c'),_0x1ad254,JSON[_0x181a('0x10')](_0x386364));_0x3558e8(_0x386364);})['catch'](function(_0x2e9bc9){logger[_0x181a('0x11')](_0x181a('0x1c'),_0x2e9bc9[_0x181a('0x14')],_0x1ad254);_0x2d84a5(_0x3d61d1[_0x181a('0x11')](0x1f4,_0x2e9bc9[_0x181a('0x14')]));});});};
\ No newline at end of file
index 7918613..f6f9ad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56a4=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','index','isAuthenticated','describe','post','create','put','/:id','update','delete','destroy','multer','util'];(function(_0x453eb3,_0x4d8a42){var _0x34ebb7=function(_0x53121c){while(--_0x53121c){_0x453eb3['push'](_0x453eb3['shift']());}};_0x34ebb7(++_0x4d8a42);}(_0x56a4,0x11b));var _0x456a=function(_0x16c2b1,_0x36a70c){_0x16c2b1=_0x16c2b1-0x0;var _0x199ac4=_0x56a4[_0x16c2b1];return _0x199ac4;};'use strict';var multer=require(_0x456a('0x0'));var util=require(_0x456a('0x1'));var path=require('path');var timeout=require(_0x456a('0x2'));var express=require(_0x456a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x456a('0x4'));var interaction=require(_0x456a('0x5'));var config=require(_0x456a('0x6'));var controller=require(_0x456a('0x7'));router[_0x456a('0x8')]('/',auth['isAuthenticated'](),controller[_0x456a('0x9')]);router['get']('/describe',auth[_0x456a('0xa')](),controller[_0x456a('0xb')]);router[_0x456a('0x8')]('/:id',auth[_0x456a('0xa')](),controller['show']);router[_0x456a('0xc')]('/',auth[_0x456a('0xa')](),controller[_0x456a('0xd')]);router[_0x456a('0xe')](_0x456a('0xf'),auth[_0x456a('0xa')](),controller[_0x456a('0x10')]);router[_0x456a('0x11')](_0x456a('0xf'),auth[_0x456a('0xa')](),controller[_0x456a('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x06f4=['../../config/environment','./smsTransferReport.controller','get','isAuthenticated','describe','put','delete','/:id','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service'];(function(_0x131916,_0x8eb089){var _0x283e61=function(_0x285d52){while(--_0x285d52){_0x131916['push'](_0x131916['shift']());}};_0x283e61(++_0x8eb089);}(_0x06f4,0x136));var _0x406f=function(_0x584b85,_0x57de2b){_0x584b85=_0x584b85-0x0;var _0x11fd4b=_0x06f4[_0x584b85];return _0x11fd4b;};'use strict';var multer=require(_0x406f('0x0'));var util=require(_0x406f('0x1'));var path=require('path');var timeout=require(_0x406f('0x2'));var express=require(_0x406f('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x406f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x406f('0x5'));var controller=require(_0x406f('0x6'));router[_0x406f('0x7')]('/',auth[_0x406f('0x8')](),controller['index']);router[_0x406f('0x7')]('/describe',auth[_0x406f('0x8')](),controller[_0x406f('0x9')]);router[_0x406f('0x7')]('/:id',auth[_0x406f('0x8')](),controller['show']);router['post']('/',auth[_0x406f('0x8')](),controller['create']);router[_0x406f('0xa')]('/:id',auth[_0x406f('0x8')](),controller['update']);router[_0x406f('0xb')](_0x406f('0xc'),auth['isAuthenticated'](),controller[_0x406f('0xd')]);module[_0x406f('0xe')]=router;
\ No newline at end of file
index 384246a..a729c02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x5e7514,_0x30c2e1){var _0x12f472=function(_0x33ddb6){while(--_0x33ddb6){_0x5e7514['push'](_0x5e7514['shift']());}};_0x12f472(++_0x30c2e1);}(_0xb43b,0x1b2));var _0xbb43=function(_0x232a4a,_0x5220dd){_0x232a4a=_0x232a4a-0x0;var _0x3eb908=_0xb43b[_0x232a4a];return _0x3eb908;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0xe706=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x229433,_0x20367b){var _0x1dcafc=function(_0x2ce5e1){while(--_0x2ce5e1){_0x229433['push'](_0x229433['shift']());}};_0x1dcafc(++_0x20367b);}(_0xe706,0xa3));var _0x6e70=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xe706[_0x47b58b];return _0x46bebe;};'use strict';var moment=require(_0x6e70('0x0'));var Sequelize=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6e70('0x3')](_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6')),'allowNull':![],'defaultValue':_0x6e70('0x6')},'transferredAt':{'type':Sequelize[_0x6e70('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x6e70('0x8')]}};
\ No newline at end of file
index 530ba5b..1bd2869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdbe=['SmsTransferReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','includeAll','show','include','merge','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','error','stack','send','index','map'];(function(_0x18d9e9,_0x4e112b){var _0x31cc73=function(_0x428b4c){while(--_0x428b4c){_0x18d9e9['push'](_0x18d9e9['shift']());}};_0x31cc73(++_0x4e112b);}(_0xbdbe,0x153));var _0xebdb=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xbdbe[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require(_0xebdb('0x0'));var rimraf=require(_0xebdb('0x1'));var zipdir=require(_0xebdb('0x2'));var jsonpatch=require(_0xebdb('0x3'));var rp=require(_0xebdb('0x4'));var moment=require(_0xebdb('0x5'));var BPromise=require(_0xebdb('0x6'));var Mustache=require('mustache');var util=require(_0xebdb('0x7'));var path=require(_0xebdb('0x8'));var sox=require('sox');var csv=require(_0xebdb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xebdb('0xa'));var _=require(_0xebdb('0xb'));var squel=require(_0xebdb('0xc'));var crypto=require(_0xebdb('0xd'));var jsforce=require(_0xebdb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xebdb('0x9'));var querystring=require(_0xebdb('0xf'));var Papa=require(_0xebdb('0x10'));var Redis=require(_0xebdb('0x11'));var authService=require(_0xebdb('0x12'));var qs=require(_0xebdb('0x13'));var as=require(_0xebdb('0x14'));var hardwareService=require(_0xebdb('0x15'));var logger=require(_0xebdb('0x16'))(_0xebdb('0x17'));var utils=require('../../config/utils');var config=require(_0xebdb('0x18'));var licenseUtil=require(_0xebdb('0x19'));var db=require(_0xebdb('0x1a'))['db'];function respondWithStatusCode(_0x1a6446,_0x22d861){_0x22d861=_0x22d861||0xcc;return function(_0x12af6f){if(_0x12af6f){return _0x1a6446[_0xebdb('0x1b')](_0x22d861);}return _0x1a6446[_0xebdb('0x1c')](_0x22d861)[_0xebdb('0x1d')]();};}function respondWithResult(_0x42b8b6,_0x310703){_0x310703=_0x310703||0xc8;return function(_0x36f8bb){if(_0x36f8bb){return _0x42b8b6[_0xebdb('0x1c')](_0x310703)['json'](_0x36f8bb);}};}function respondWithFilteredResult(_0x1faae4,_0x13b792){return function(_0x132199){if(_0x132199){var _0x283dea=typeof _0x13b792[_0xebdb('0x1e')]===_0xebdb('0x1f')&&typeof _0x13b792[_0xebdb('0x20')]==='undefined';var _0x2feb8d=_0x132199['count'];var _0x51d670=_0x283dea?0x0:_0x13b792[_0xebdb('0x1e')];var _0x363d2e=_0x283dea?_0x132199[_0xebdb('0x21')]:_0x13b792[_0xebdb('0x1e')]+_0x13b792[_0xebdb('0x20')];var _0x4ac043;if(_0x363d2e>=_0x2feb8d){_0x363d2e=_0x2feb8d;_0x4ac043=0xc8;}else{_0x4ac043=0xce;}_0x1faae4[_0xebdb('0x1c')](_0x4ac043);return _0x1faae4[_0xebdb('0x22')](_0xebdb('0x23'),_0x51d670+'-'+_0x363d2e+'/'+_0x2feb8d)[_0xebdb('0x24')](_0x132199);}return null;};}function patchUpdates(_0x508dfe){return function(_0x3543c7){try{jsonpatch[_0xebdb('0x25')](_0x3543c7,_0x508dfe,!![]);}catch(_0x26dd54){return BPromise[_0xebdb('0x26')](_0x26dd54);}return _0x3543c7['save']();};}function saveUpdates(_0xe43d8b,_0x489464){return function(_0x2199b6){if(_0x2199b6){return _0x2199b6[_0xebdb('0x27')](_0xe43d8b)[_0xebdb('0x28')](function(_0x129a79){return _0x129a79;});}return null;};}function removeEntity(_0x358bd6,_0x2887ac){return function(_0x461f41){if(_0x461f41){return _0x461f41['destroy']()['then'](function(){_0x358bd6[_0xebdb('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a99ac,_0x388b13){return function(_0x1c6721){if(!_0x1c6721){_0x1a99ac[_0xebdb('0x1b')](0x194);}return _0x1c6721;};}function handleError(_0x3faca4,_0x2fb7a4){_0x2fb7a4=_0x2fb7a4||0x1f4;return function(_0xeb4356){logger[_0xebdb('0x29')](_0xeb4356[_0xebdb('0x2a')]);if(_0xeb4356['name']){delete _0xeb4356['name'];}_0x3faca4['status'](_0x2fb7a4)[_0xebdb('0x2b')](_0xeb4356);};}exports[_0xebdb('0x2c')]=function(_0x2abfcd,_0x10f78e){var _0xf84666={},_0x50074b={},_0xa2898a={'count':0x0,'rows':[]};var _0x3e3502=_[_0xebdb('0x2d')](db[_0xebdb('0x2e')][_0xebdb('0x2f')],function(_0x7dd02e){return{'name':_0x7dd02e[_0xebdb('0x30')],'type':_0x7dd02e[_0xebdb('0x31')][_0xebdb('0x32')]};});_0x50074b[_0xebdb('0x33')]=_['map'](_0x3e3502,_0xebdb('0x34'));_0x50074b[_0xebdb('0x35')]=_[_0xebdb('0x36')](_0x2abfcd[_0xebdb('0x35')]);_0x50074b[_0xebdb('0x37')]=_[_0xebdb('0x38')](_0x50074b['model'],_0x50074b[_0xebdb('0x35')]);_0xf84666[_0xebdb('0x39')]=_[_0xebdb('0x38')](_0x50074b[_0xebdb('0x33')],qs[_0xebdb('0x3a')](_0x2abfcd[_0xebdb('0x35')][_0xebdb('0x3a')]));_0xf84666[_0xebdb('0x39')]=_0xf84666[_0xebdb('0x39')]['length']?_0xf84666[_0xebdb('0x39')]:_0x50074b[_0xebdb('0x33')];if(!_0x2abfcd[_0xebdb('0x35')][_0xebdb('0x3b')](_0xebdb('0x3c'))){_0xf84666[_0xebdb('0x20')]=qs['limit'](_0x2abfcd[_0xebdb('0x35')]['limit']);_0xf84666[_0xebdb('0x1e')]=qs[_0xebdb('0x1e')](_0x2abfcd['query'][_0xebdb('0x1e')]);}_0xf84666[_0xebdb('0x3d')]=qs[_0xebdb('0x3e')](_0x2abfcd[_0xebdb('0x35')]['sort']);_0xf84666[_0xebdb('0x3f')]=qs[_0xebdb('0x37')](_[_0xebdb('0x40')](_0x2abfcd['query'],_0x50074b[_0xebdb('0x37')]),_0x3e3502);if(_0x2abfcd[_0xebdb('0x35')][_0xebdb('0x41')]){_0xf84666[_0xebdb('0x3f')]=_['merge'](_0xf84666[_0xebdb('0x3f')],{'$or':_[_0xebdb('0x2d')](_0x3e3502,function(_0x3658ce){if(_0x3658ce[_0xebdb('0x31')]!=='VIRTUAL'){var _0x46d041={};_0x46d041[_0x3658ce[_0xebdb('0x34')]]={'$like':'%'+_0x2abfcd[_0xebdb('0x35')][_0xebdb('0x41')]+'%'};return _0x46d041;}})});}_0xf84666=_['merge']({},_0xf84666,_0x2abfcd[_0xebdb('0x42')]);var _0x37303e={'where':_0xf84666['where']};return db[_0xebdb('0x2e')][_0xebdb('0x21')](_0x37303e)[_0xebdb('0x28')](function(_0x342f84){_0xa2898a[_0xebdb('0x21')]=_0x342f84;if(_0x2abfcd[_0xebdb('0x35')][_0xebdb('0x43')]){_0xf84666['include']=[{'all':!![]}];}return db[_0xebdb('0x2e')]['findAll'](_0xf84666);})[_0xebdb('0x28')](function(_0x29ff51){_0xa2898a['rows']=_0x29ff51;return _0xa2898a;})['then'](respondWithFilteredResult(_0x10f78e,_0xf84666))['catch'](handleError(_0x10f78e,null));};exports[_0xebdb('0x44')]=function(_0x33ad76,_0x1769bf){var _0x1c2cf5={'raw':!![],'where':{'id':_0x33ad76['params']['id']}},_0x3c6e18={};_0x3c6e18[_0xebdb('0x33')]=_['keys'](db[_0xebdb('0x2e')][_0xebdb('0x2f')]);_0x3c6e18[_0xebdb('0x35')]=_['keys'](_0x33ad76[_0xebdb('0x35')]);_0x3c6e18[_0xebdb('0x37')]=_[_0xebdb('0x38')](_0x3c6e18[_0xebdb('0x33')],_0x3c6e18[_0xebdb('0x35')]);_0x1c2cf5['attributes']=_[_0xebdb('0x38')](_0x3c6e18[_0xebdb('0x33')],qs[_0xebdb('0x3a')](_0x33ad76['query']['fields']));_0x1c2cf5['attributes']=_0x1c2cf5[_0xebdb('0x39')]['length']?_0x1c2cf5[_0xebdb('0x39')]:_0x3c6e18[_0xebdb('0x33')];if(_0x33ad76[_0xebdb('0x35')][_0xebdb('0x43')]){_0x1c2cf5[_0xebdb('0x45')]=[{'all':!![]}];}_0x1c2cf5=_[_0xebdb('0x46')]({},_0x1c2cf5,_0x33ad76[_0xebdb('0x42')]);return db['SmsTransferReport'][_0xebdb('0x47')](_0x1c2cf5)['then'](handleEntityNotFound(_0x1769bf,null))['then'](respondWithResult(_0x1769bf,null))[_0xebdb('0x48')](handleError(_0x1769bf,null));};exports['create']=function(_0x4af8b2,_0x592e81){return db[_0xebdb('0x2e')][_0xebdb('0x49')](_0x4af8b2[_0xebdb('0x4a')],{})[_0xebdb('0x28')](respondWithResult(_0x592e81,0xc9))[_0xebdb('0x48')](handleError(_0x592e81,null));};exports[_0xebdb('0x27')]=function(_0xdcd9f0,_0x38b5cc){if(_0xdcd9f0['body']['id']){delete _0xdcd9f0['body']['id'];}return db[_0xebdb('0x2e')][_0xebdb('0x47')]({'where':{'id':_0xdcd9f0['params']['id']}})[_0xebdb('0x28')](handleEntityNotFound(_0x38b5cc,null))['then'](saveUpdates(_0xdcd9f0['body'],null))[_0xebdb('0x28')](respondWithResult(_0x38b5cc,null))[_0xebdb('0x48')](handleError(_0x38b5cc,null));};exports[_0xebdb('0x4b')]=function(_0x49cf97,_0x247356){return db[_0xebdb('0x2e')]['find']({'where':{'id':_0x49cf97['params']['id']}})[_0xebdb('0x28')](handleEntityNotFound(_0x247356,null))[_0xebdb('0x28')](removeEntity(_0x247356,null))[_0xebdb('0x48')](handleError(_0x247356,null));};exports[_0xebdb('0x4c')]=function(_0x54fdbf,_0x1e591f){return db[_0xebdb('0x2e')][_0xebdb('0x4c')]()[_0xebdb('0x28')](respondWithResult(_0x1e591f,null))[_0xebdb('0x48')](handleError(_0x1e591f,null));};
\ No newline at end of file
+var _0x8c6c=['order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','update','find','describe','eml-format','rimraf','fast-json-patch','moment','util','path','sox','ejs','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','then','destroy','stack','name','send','SmsTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x8c6c,0x133));var _0xc8c6=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8c6c[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0xc8c6('0x0'));var rimraf=require(_0xc8c6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc8c6('0x2'));var rp=require('request-promise');var moment=require(_0xc8c6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc8c6('0x4'));var path=require(_0xc8c6('0x5'));var sox=require(_0xc8c6('0x6'));var csv=require('to-csv');var ejs=require(_0xc8c6('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc8c6('0x8'));var crypto=require('crypto');var jsforce=require(_0xc8c6('0x9'));var deskjs=require(_0xc8c6('0xa'));var toCsv=require(_0xc8c6('0xb'));var querystring=require(_0xc8c6('0xc'));var Papa=require('papaparse');var Redis=require(_0xc8c6('0xd'));var authService=require(_0xc8c6('0xe'));var qs=require(_0xc8c6('0xf'));var as=require(_0xc8c6('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8c6('0x11'))(_0xc8c6('0x12'));var utils=require(_0xc8c6('0x13'));var config=require(_0xc8c6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc8c6('0x15'))['db'];function respondWithStatusCode(_0xd9c8f0,_0x523fc8){_0x523fc8=_0x523fc8||0xcc;return function(_0x2a0732){if(_0x2a0732){return _0xd9c8f0[_0xc8c6('0x16')](_0x523fc8);}return _0xd9c8f0[_0xc8c6('0x17')](_0x523fc8)[_0xc8c6('0x18')]();};}function respondWithResult(_0x95c5ec,_0x3b20d4){_0x3b20d4=_0x3b20d4||0xc8;return function(_0xff14af){if(_0xff14af){return _0x95c5ec[_0xc8c6('0x17')](_0x3b20d4)[_0xc8c6('0x19')](_0xff14af);}};}function respondWithFilteredResult(_0x175f57,_0x12a8a1){return function(_0x280323){if(_0x280323){var _0xab935f=typeof _0x12a8a1[_0xc8c6('0x1a')]===_0xc8c6('0x1b')&&typeof _0x12a8a1['limit']===_0xc8c6('0x1b');var _0x412ed3=_0x280323['count'];var _0x35ad89=_0xab935f?0x0:_0x12a8a1[_0xc8c6('0x1a')];var _0xbc2480=_0xab935f?_0x280323[_0xc8c6('0x1c')]:_0x12a8a1[_0xc8c6('0x1a')]+_0x12a8a1[_0xc8c6('0x1d')];var _0x3c50cf;if(_0xbc2480>=_0x412ed3){_0xbc2480=_0x412ed3;_0x3c50cf=0xc8;}else{_0x3c50cf=0xce;}_0x175f57[_0xc8c6('0x17')](_0x3c50cf);return _0x175f57[_0xc8c6('0x1e')](_0xc8c6('0x1f'),_0x35ad89+'-'+_0xbc2480+'/'+_0x412ed3)[_0xc8c6('0x19')](_0x280323);}return null;};}function patchUpdates(_0x2f8ada){return function(_0x3f259a){try{jsonpatch['apply'](_0x3f259a,_0x2f8ada,!![]);}catch(_0x4bd296){return BPromise[_0xc8c6('0x20')](_0x4bd296);}return _0x3f259a['save']();};}function saveUpdates(_0x4e0669,_0x4f7c03){return function(_0x35d827){if(_0x35d827){return _0x35d827['update'](_0x4e0669)[_0xc8c6('0x21')](function(_0x52442d){return _0x52442d;});}return null;};}function removeEntity(_0x308f35,_0x13e3b7){return function(_0x4b6948){if(_0x4b6948){return _0x4b6948[_0xc8c6('0x22')]()[_0xc8c6('0x21')](function(){_0x308f35['status'](0xcc)[_0xc8c6('0x18')]();});}};}function handleEntityNotFound(_0x18bbe6,_0x405cea){return function(_0x56033b){if(!_0x56033b){_0x18bbe6[_0xc8c6('0x16')](0x194);}return _0x56033b;};}function handleError(_0x22f6e6,_0x28d8ca){_0x28d8ca=_0x28d8ca||0x1f4;return function(_0x148568){logger['error'](_0x148568[_0xc8c6('0x23')]);if(_0x148568[_0xc8c6('0x24')]){delete _0x148568[_0xc8c6('0x24')];}_0x22f6e6[_0xc8c6('0x17')](_0x28d8ca)[_0xc8c6('0x25')](_0x148568);};}exports['index']=function(_0xc6dde3,_0xeaa4ee){var _0x5830d2={},_0x126a9d={},_0x5a215a={'count':0x0,'rows':[]};var _0xe5b410=_['map'](db[_0xc8c6('0x26')][_0xc8c6('0x27')],function(_0x2a9012){return{'name':_0x2a9012[_0xc8c6('0x28')],'type':_0x2a9012[_0xc8c6('0x29')][_0xc8c6('0x2a')]};});_0x126a9d[_0xc8c6('0x2b')]=_['map'](_0xe5b410,_0xc8c6('0x24'));_0x126a9d['query']=_[_0xc8c6('0x2c')](_0xc6dde3[_0xc8c6('0x2d')]);_0x126a9d[_0xc8c6('0x2e')]=_[_0xc8c6('0x2f')](_0x126a9d['model'],_0x126a9d[_0xc8c6('0x2d')]);_0x5830d2[_0xc8c6('0x30')]=_['intersection'](_0x126a9d['model'],qs[_0xc8c6('0x31')](_0xc6dde3['query'][_0xc8c6('0x31')]));_0x5830d2[_0xc8c6('0x30')]=_0x5830d2[_0xc8c6('0x30')][_0xc8c6('0x32')]?_0x5830d2[_0xc8c6('0x30')]:_0x126a9d[_0xc8c6('0x2b')];if(!_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x33')](_0xc8c6('0x34'))){_0x5830d2['limit']=qs[_0xc8c6('0x1d')](_0xc6dde3['query'][_0xc8c6('0x1d')]);_0x5830d2[_0xc8c6('0x1a')]=qs[_0xc8c6('0x1a')](_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x1a')]);}_0x5830d2[_0xc8c6('0x35')]=qs[_0xc8c6('0x36')](_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x36')]);_0x5830d2[_0xc8c6('0x37')]=qs[_0xc8c6('0x2e')](_[_0xc8c6('0x38')](_0xc6dde3[_0xc8c6('0x2d')],_0x126a9d[_0xc8c6('0x2e')]),_0xe5b410);if(_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x39')]){_0x5830d2[_0xc8c6('0x37')]=_[_0xc8c6('0x3a')](_0x5830d2[_0xc8c6('0x37')],{'$or':_['map'](_0xe5b410,function(_0xb3f7b3){if(_0xb3f7b3[_0xc8c6('0x29')]!=='VIRTUAL'){var _0x2e1d10={};_0x2e1d10[_0xb3f7b3[_0xc8c6('0x24')]]={'$like':'%'+_0xc6dde3[_0xc8c6('0x2d')]['filter']+'%'};return _0x2e1d10;}})});}_0x5830d2=_[_0xc8c6('0x3a')]({},_0x5830d2,_0xc6dde3[_0xc8c6('0x3b')]);var _0x2029f8={'where':_0x5830d2['where']};return db[_0xc8c6('0x26')][_0xc8c6('0x1c')](_0x2029f8)['then'](function(_0x576146){_0x5a215a['count']=_0x576146;if(_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x3c')]){_0x5830d2[_0xc8c6('0x3d')]=[{'all':!![]}];}return db[_0xc8c6('0x26')][_0xc8c6('0x3e')](_0x5830d2);})[_0xc8c6('0x21')](function(_0x1b56bd){_0x5a215a[_0xc8c6('0x3f')]=_0x1b56bd;return _0x5a215a;})['then'](respondWithFilteredResult(_0xeaa4ee,_0x5830d2))[_0xc8c6('0x40')](handleError(_0xeaa4ee,null));};exports[_0xc8c6('0x41')]=function(_0x45efc8,_0x45ce13){var _0x181e32={'raw':!![],'where':{'id':_0x45efc8[_0xc8c6('0x42')]['id']}},_0x2da23c={};_0x2da23c['model']=_[_0xc8c6('0x2c')](db[_0xc8c6('0x26')]['rawAttributes']);_0x2da23c[_0xc8c6('0x2d')]=_[_0xc8c6('0x2c')](_0x45efc8[_0xc8c6('0x2d')]);_0x2da23c[_0xc8c6('0x2e')]=_['intersection'](_0x2da23c[_0xc8c6('0x2b')],_0x2da23c[_0xc8c6('0x2d')]);_0x181e32[_0xc8c6('0x30')]=_[_0xc8c6('0x2f')](_0x2da23c[_0xc8c6('0x2b')],qs[_0xc8c6('0x31')](_0x45efc8[_0xc8c6('0x2d')]['fields']));_0x181e32['attributes']=_0x181e32[_0xc8c6('0x30')]['length']?_0x181e32[_0xc8c6('0x30')]:_0x2da23c[_0xc8c6('0x2b')];if(_0x45efc8[_0xc8c6('0x2d')][_0xc8c6('0x3c')]){_0x181e32[_0xc8c6('0x3d')]=[{'all':!![]}];}_0x181e32=_['merge']({},_0x181e32,_0x45efc8[_0xc8c6('0x3b')]);return db['SmsTransferReport']['find'](_0x181e32)[_0xc8c6('0x21')](handleEntityNotFound(_0x45ce13,null))[_0xc8c6('0x21')](respondWithResult(_0x45ce13,null))[_0xc8c6('0x40')](handleError(_0x45ce13,null));};exports[_0xc8c6('0x43')]=function(_0x538d93,_0x2447a0){return db['SmsTransferReport'][_0xc8c6('0x43')](_0x538d93[_0xc8c6('0x44')],{})['then'](respondWithResult(_0x2447a0,0xc9))[_0xc8c6('0x40')](handleError(_0x2447a0,null));};exports[_0xc8c6('0x45')]=function(_0x2c1653,_0x14828f){if(_0x2c1653[_0xc8c6('0x44')]['id']){delete _0x2c1653['body']['id'];}return db[_0xc8c6('0x26')]['find']({'where':{'id':_0x2c1653[_0xc8c6('0x42')]['id']}})[_0xc8c6('0x21')](handleEntityNotFound(_0x14828f,null))['then'](saveUpdates(_0x2c1653['body'],null))[_0xc8c6('0x21')](respondWithResult(_0x14828f,null))['catch'](handleError(_0x14828f,null));};exports['destroy']=function(_0x3aeeeb,_0x184ac2){return db['SmsTransferReport'][_0xc8c6('0x46')]({'where':{'id':_0x3aeeeb['params']['id']}})['then'](handleEntityNotFound(_0x184ac2,null))[_0xc8c6('0x21')](removeEntity(_0x184ac2,null))[_0xc8c6('0x40')](handleError(_0x184ac2,null));};exports['describe']=function(_0x296a5c,_0xaf140){return db['SmsTransferReport'][_0xc8c6('0x47')]()[_0xc8c6('0x21')](respondWithResult(_0xaf140,null))[_0xc8c6('0x40')](handleError(_0xaf140,null));};
\ No newline at end of file
index 72942f6..f5fd9bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed7=['request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x18fa0f,_0x539204){var _0x187b26=function(_0x30ef31){while(--_0x30ef31){_0x18fa0f['push'](_0x18fa0f['shift']());}};_0x187b26(++_0x539204);}(_0xbed7,0x14b));var _0x7bed=function(_0x18004b,_0x5249f2){_0x18004b=_0x18004b-0x0;var _0x314a26=_0xbed7[_0x18004b];return _0x314a26;};'use strict';var _=require(_0x7bed('0x0'));var util=require(_0x7bed('0x1'));var logger=require(_0x7bed('0x2'))(_0x7bed('0x3'));var moment=require(_0x7bed('0x4'));var BPromise=require('bluebird');var rp=require(_0x7bed('0x5'));var fs=require('fs');var path=require(_0x7bed('0x6'));var rimraf=require(_0x7bed('0x7'));var config=require(_0x7bed('0x8'));var attributes=require(_0x7bed('0x9'));module[_0x7bed('0xa')]=function(_0x41c148,_0x3aa0e9){return _0x41c148[_0x7bed('0xb')]('SmsTransferReport',attributes,{'tableName':_0x7bed('0xc'),'paranoid':![],'indexes':[{'name':_0x7bed('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x20ad=['../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x3bd568,_0x3d69ab){var _0x2ddf0b=function(_0x21c05e){while(--_0x21c05e){_0x3bd568['push'](_0x3bd568['shift']());}};_0x2ddf0b(++_0x3d69ab);}(_0x20ad,0x13a));var _0xd20a=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x20ad[_0x3e112d];return _0x531c31;};'use strict';var _=require(_0xd20a('0x0'));var util=require(_0xd20a('0x1'));var logger=require(_0xd20a('0x2'))(_0xd20a('0x3'));var moment=require('moment');var BPromise=require(_0xd20a('0x4'));var rp=require(_0xd20a('0x5'));var fs=require('fs');var path=require(_0xd20a('0x6'));var rimraf=require(_0xd20a('0x7'));var config=require(_0xd20a('0x8'));var attributes=require(_0xd20a('0x9'));module[_0xd20a('0xa')]=function(_0x26be33,_0x1c71e){return _0x26be33['define'](_0xd20a('0xb'),attributes,{'tableName':_0xd20a('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xd20a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index e6020d8..f597317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4944=['code','error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SmsTransferReport,\x20%s,\x20%s','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x791ceb,_0x3761aa){var _0x1cdf44=function(_0x5ef0bf){while(--_0x5ef0bf){_0x791ceb['push'](_0x791ceb['shift']());}};_0x1cdf44(++_0x3761aa);}(_0x4944,0x6d));var _0x4494=function(_0x525291,_0x2f81ae){_0x525291=_0x525291-0x0;var _0x5d8813=_0x4944[_0x525291];return _0x5d8813;};'use strict';var _=require(_0x4494('0x0'));var util=require('util');var moment=require(_0x4494('0x1'));var BPromise=require(_0x4494('0x2'));var rs=require(_0x4494('0x3'));var fs=require('fs');var Redis=require(_0x4494('0x4'));var db=require(_0x4494('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4494('0x6'))('rpc');var config=require(_0x4494('0x7'));var jayson=require(_0x4494('0x8'));var client=jayson[_0x4494('0x9')][_0x4494('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a4911,_0x1a94d6,_0x55bb81){return new BPromise(function(_0x12ef8e,_0x21098c){return client['request'](_0x2a4911,_0x55bb81)[_0x4494('0xb')](function(_0xec1762){logger[_0x4494('0xc')](_0x4494('0xd'),_0x1a94d6,'request\x20sent');logger['debug'](_0x4494('0xe'),_0x1a94d6,_0x4494('0xf'),JSON[_0x4494('0x10')](_0xec1762));if(_0xec1762['error']){if(_0xec1762['error'][_0x4494('0x11')]===0x1f4){logger[_0x4494('0x12')](_0x4494('0xd'),_0x1a94d6,_0xec1762[_0x4494('0x12')][_0x4494('0x13')]);return _0x21098c(_0xec1762[_0x4494('0x12')]['message']);}logger[_0x4494('0x12')](_0x4494('0xd'),_0x1a94d6,_0xec1762[_0x4494('0x12')][_0x4494('0x13')]);return _0x12ef8e(_0xec1762[_0x4494('0x12')][_0x4494('0x13')]);}else{logger[_0x4494('0xc')]('SmsTransferReport,\x20%s,\x20%s',_0x1a94d6,_0x4494('0xf'));_0x12ef8e(_0xec1762['result']['message']);}})[_0x4494('0x14')](function(_0x267d0b){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x1a94d6,_0x267d0b);_0x21098c(_0x267d0b);});});}
\ No newline at end of file
+var _0x28e3=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util'];(function(_0x247fa1,_0x4ec37c){var _0x244f35=function(_0xfb98be){while(--_0xfb98be){_0x247fa1['push'](_0x247fa1['shift']());}};_0x244f35(++_0x4ec37c);}(_0x28e3,0x106));var _0x328e=function(_0x55ff3e,_0x41077f){_0x55ff3e=_0x55ff3e-0x0;var _0x2709eb=_0x28e3[_0x55ff3e];return _0x2709eb;};'use strict';var _=require(_0x328e('0x0'));var util=require(_0x328e('0x1'));var moment=require(_0x328e('0x2'));var BPromise=require(_0x328e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x328e('0x4'));var db=require(_0x328e('0x5'))['db'];var utils=require(_0x328e('0x6'));var logger=require(_0x328e('0x7'))(_0x328e('0x8'));var config=require(_0x328e('0x9'));var jayson=require(_0x328e('0xa'));var client=jayson[_0x328e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b5c91,_0x58885f,_0x2bddaa){return new BPromise(function(_0x3696b6,_0x3467ee){return client[_0x328e('0xc')](_0x4b5c91,_0x2bddaa)[_0x328e('0xd')](function(_0x4a4f53){logger[_0x328e('0xe')](_0x328e('0xf'),_0x58885f,_0x328e('0x10'));logger['debug']('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x58885f,'request\x20sent',JSON[_0x328e('0x11')](_0x4a4f53));if(_0x4a4f53[_0x328e('0x12')]){if(_0x4a4f53[_0x328e('0x12')][_0x328e('0x13')]===0x1f4){logger[_0x328e('0x12')](_0x328e('0xf'),_0x58885f,_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);return _0x3467ee(_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);}logger[_0x328e('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x58885f,_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);return _0x3696b6(_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);}else{logger[_0x328e('0xe')](_0x328e('0xf'),_0x58885f,_0x328e('0x10'));_0x3696b6(_0x4a4f53[_0x328e('0x15')][_0x328e('0x14')]);}})['catch'](function(_0x1fdb79){logger[_0x328e('0x12')](_0x328e('0xf'),_0x58885f,_0x1fdb79);_0x3467ee(_0x1fdb79);});});}
\ No newline at end of file
index 0cb4ef7..85ce641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8081=['originalname','replace','format','basename','extname','now','post','single','file','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','show','/:id/download','diskStorage','join','root'];(function(_0xa3a31f,_0x19333d){var _0x103d0f=function(_0x400b7e){while(--_0x400b7e){_0xa3a31f['push'](_0xa3a31f['shift']());}};_0x103d0f(++_0x19333d);}(_0x8081,0x92));var _0x1808=function(_0x26bab2,_0x4aa151){_0x26bab2=_0x26bab2-0x0;var _0x1c8350=_0x8081[_0x26bab2];return _0x1c8350;};'use strict';var multer=require(_0x1808('0x0'));var util=require(_0x1808('0x1'));var path=require(_0x1808('0x2'));var timeout=require(_0x1808('0x3'));var express=require('express');var router=express[_0x1808('0x4')]();var fs_extra=require(_0x1808('0x5'));var auth=require(_0x1808('0x6'));var interaction=require(_0x1808('0x7'));var config=require(_0x1808('0x8'));var controller=require(_0x1808('0x9'));router[_0x1808('0xa')]('/',auth[_0x1808('0xb')](),controller[_0x1808('0xc')]);router[_0x1808('0xa')](_0x1808('0xd'),auth[_0x1808('0xb')](),controller[_0x1808('0xe')]);router[_0x1808('0xa')](_0x1808('0xf'),auth[_0x1808('0xb')](),controller['download']);var upload=multer({'storage':multer[_0x1808('0x10')]({'destination':function(_0x397f9c,_0x388fd6,_0x441c2a){_0x441c2a(null,path[_0x1808('0x11')](config[_0x1808('0x12')],'server/files/sounds/original/'));},'filename':function(_0x43b4fb,_0x370870,_0x1fa17d){_0x370870[_0x1808('0x13')]=_0x370870[_0x1808('0x13')][_0x1808('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1fa17d(null,util[_0x1808('0x15')]('%s-%s%s',path[_0x1808('0x16')](_0x370870[_0x1808('0x13')],path[_0x1808('0x17')](_0x370870[_0x1808('0x13')])),Date[_0x1808('0x18')](),path[_0x1808('0x17')](_0x370870[_0x1808('0x13')])));}})});router[_0x1808('0x19')]('/',upload[_0x1808('0x1a')](_0x1808('0x1b')),controller[_0x1808('0x1c')]);router[_0x1808('0x1d')](_0x1808('0xd'),auth[_0x1808('0xb')](),controller[_0x1808('0x1e')]);router[_0x1808('0x1f')](_0x1808('0xd'),auth[_0x1808('0xb')](),controller[_0x1808('0x1f')]);module[_0x1808('0x20')]=router;
\ No newline at end of file
+var _0xcef9=['diskStorage','root','originalname','format','%s-%s%s','basename','extname','post','single','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','/:id/download','download'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcef9,0x99));var _0x9cef=function(_0x3f20a6,_0x317037){_0x3f20a6=_0x3f20a6-0x0;var _0x5ac1a2=_0xcef9[_0x3f20a6];return _0x5ac1a2;};'use strict';var multer=require(_0x9cef('0x0'));var util=require(_0x9cef('0x1'));var path=require(_0x9cef('0x2'));var timeout=require(_0x9cef('0x3'));var express=require(_0x9cef('0x4'));var router=express['Router']();var fs_extra=require(_0x9cef('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9cef('0x6'));var config=require(_0x9cef('0x7'));var controller=require(_0x9cef('0x8'));router[_0x9cef('0x9')]('/',auth[_0x9cef('0xa')](),controller[_0x9cef('0xb')]);router[_0x9cef('0x9')](_0x9cef('0xc'),auth[_0x9cef('0xa')](),controller['show']);router['get'](_0x9cef('0xd'),auth[_0x9cef('0xa')](),controller[_0x9cef('0xe')]);var upload=multer({'storage':multer[_0x9cef('0xf')]({'destination':function(_0x18ef50,_0x575216,_0x2ac0f0){_0x2ac0f0(null,path['join'](config[_0x9cef('0x10')],'server/files/sounds/original/'));},'filename':function(_0x257bb2,_0x1e438a,_0x168b96){_0x1e438a[_0x9cef('0x11')]=_0x1e438a[_0x9cef('0x11')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x168b96(null,util[_0x9cef('0x12')](_0x9cef('0x13'),path[_0x9cef('0x14')](_0x1e438a['originalname'],path[_0x9cef('0x15')](_0x1e438a[_0x9cef('0x11')])),Date['now'](),path['extname'](_0x1e438a[_0x9cef('0x11')])));}})});router[_0x9cef('0x16')]('/',upload[_0x9cef('0x17')]('file'),controller['create']);router[_0x9cef('0x18')](_0x9cef('0xc'),auth['isAuthenticated'](),controller[_0x9cef('0x19')]);router['delete'](_0x9cef('0xc'),auth['isAuthenticated'](),controller[_0x9cef('0x1a')]);module[_0x9cef('0x1b')]=router;
\ No newline at end of file
index f18537d..6be504f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5a9=['BIGINT','INTEGER','exports','STRING','FLOAT'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xd5a9,0x1ec));var _0x9d5a=function(_0x802465,_0x4fe93b){_0x802465=_0x802465-0x0;var _0x5e7be4=_0xd5a9[_0x802465];return _0x5e7be4;};'use strict';var Sequelize=require('sequelize');module[_0x9d5a('0x0')]={'name':{'type':Sequelize[_0x9d5a('0x1')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x9d5a('0x1')]},'original_format':{'type':Sequelize[_0x9d5a('0x1')]},'original_duration':{'type':Sequelize[_0x9d5a('0x2')]},'original_sampleCount':{'type':Sequelize[_0x9d5a('0x3')]},'original_channelCount':{'type':Sequelize[_0x9d5a('0x4')]},'original_bitRate':{'type':Sequelize[_0x9d5a('0x3')]},'original_sampleRate':{'type':Sequelize[_0x9d5a('0x4')]},'converted_format':{'type':Sequelize[_0x9d5a('0x1')]},'converted_duration':{'type':Sequelize[_0x9d5a('0x2')]},'converted_sampleCount':{'type':Sequelize[_0x9d5a('0x3')]},'converted_channelCount':{'type':Sequelize[_0x9d5a('0x4')]},'converted_bitRate':{'type':Sequelize[_0x9d5a('0x3')]},'converted_sampleRate':{'type':Sequelize[_0x9d5a('0x4')]}};
\ No newline at end of file
+var _0x5039=['INTEGER','FLOAT','exports','STRING','BIGINT'];(function(_0x35f82e,_0x4c64f6){var _0x4f8fe5=function(_0x52911b){while(--_0x52911b){_0x35f82e['push'](_0x35f82e['shift']());}};_0x4f8fe5(++_0x4c64f6);}(_0x5039,0xf2));var _0x9503=function(_0x3acee8,_0x5f3924){_0x3acee8=_0x3acee8-0x0;var _0x5046cc=_0x5039[_0x3acee8];return _0x5046cc;};'use strict';var Sequelize=require('sequelize');module[_0x9503('0x0')]={'name':{'type':Sequelize[_0x9503('0x1')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0x9503('0x1')]},'display_name':{'type':Sequelize[_0x9503('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x9503('0x1')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x9503('0x2')]},'original_channelCount':{'type':Sequelize[_0x9503('0x3')]},'original_bitRate':{'type':Sequelize[_0x9503('0x2')]},'original_sampleRate':{'type':Sequelize[_0x9503('0x3')]},'converted_format':{'type':Sequelize[_0x9503('0x1')]},'converted_duration':{'type':Sequelize[_0x9503('0x4')]},'converted_sampleCount':{'type':Sequelize[_0x9503('0x2')]},'converted_channelCount':{'type':Sequelize[_0x9503('0x3')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index e1dc535..49cb435 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dd6=['where','pick','filter','merge','options','includeAll','findAll','rows','show','params','include','find','catch','download','save_name','join','server/files/sounds/converted','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','root','format','%s.%s','create','basename','file','extname','originalname','filename','wav','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','transcode','unlinkSync','send','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','body','role','user','userProfileId','autoAssociation','start','description','delete','server/files/sounds/original','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Sounds','end','sendStatus','error','stack','name','index','map','Sound','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort'];(function(_0x7b0b53,_0x4d6b7c){var _0x2bd38f=function(_0x381b39){while(--_0x381b39){_0x7b0b53['push'](_0x7b0b53['shift']());}};_0x2bd38f(++_0x4d6b7c);}(_0x4dd6,0x13e));var _0x64dd=function(_0x5c8bcf,_0x11f46d){_0x5c8bcf=_0x5c8bcf-0x0;var _0x188485=_0x4dd6[_0x5c8bcf];return _0x188485;};'use strict';var emlformat=require(_0x64dd('0x0'));var rimraf=require(_0x64dd('0x1'));var zipdir=require(_0x64dd('0x2'));var jsonpatch=require(_0x64dd('0x3'));var rp=require(_0x64dd('0x4'));var moment=require(_0x64dd('0x5'));var BPromise=require(_0x64dd('0x6'));var Mustache=require('mustache');var util=require(_0x64dd('0x7'));var path=require(_0x64dd('0x8'));var sox=require(_0x64dd('0x9'));var csv=require(_0x64dd('0xa'));var ejs=require(_0x64dd('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64dd('0xc'));var squel=require('squel');var crypto=require(_0x64dd('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x64dd('0xe'));var toCsv=require(_0x64dd('0xa'));var querystring=require(_0x64dd('0xf'));var Papa=require(_0x64dd('0x10'));var Redis=require(_0x64dd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x64dd('0x12'));var hardwareService=require(_0x64dd('0x13'));var logger=require(_0x64dd('0x14'))(_0x64dd('0x15'));var utils=require(_0x64dd('0x16'));var config=require(_0x64dd('0x17'));var licenseUtil=require(_0x64dd('0x18'));var db=require(_0x64dd('0x19'))['db'];function respondWithStatusCode(_0x3bedfc,_0x105385){_0x105385=_0x105385||0xcc;return function(_0x17727e){if(_0x17727e){return _0x3bedfc['sendStatus'](_0x105385);}return _0x3bedfc[_0x64dd('0x1a')](_0x105385)['end']();};}function respondWithResult(_0x5f0bf7,_0x598d92){_0x598d92=_0x598d92||0xc8;return function(_0x27d1a7){if(_0x27d1a7){return _0x5f0bf7[_0x64dd('0x1a')](_0x598d92)[_0x64dd('0x1b')](_0x27d1a7);}};}function respondWithFilteredResult(_0x27132c,_0x413ea5){return function(_0x55941a){if(_0x55941a){var _0x68cd94=typeof _0x413ea5[_0x64dd('0x1c')]===_0x64dd('0x1d')&&typeof _0x413ea5[_0x64dd('0x1e')]===_0x64dd('0x1d');var _0x4ae2d9=_0x55941a[_0x64dd('0x1f')];var _0xe907af=_0x68cd94?0x0:_0x413ea5[_0x64dd('0x1c')];var _0xc49e30=_0x68cd94?_0x55941a['count']:_0x413ea5['offset']+_0x413ea5['limit'];var _0x3f0116;if(_0xc49e30>=_0x4ae2d9){_0xc49e30=_0x4ae2d9;_0x3f0116=0xc8;}else{_0x3f0116=0xce;}_0x27132c[_0x64dd('0x1a')](_0x3f0116);return _0x27132c[_0x64dd('0x20')](_0x64dd('0x21'),_0xe907af+'-'+_0xc49e30+'/'+_0x4ae2d9)['json'](_0x55941a);}return null;};}function patchUpdates(_0x489cef){return function(_0x24f9ef){try{jsonpatch[_0x64dd('0x22')](_0x24f9ef,_0x489cef,!![]);}catch(_0x5de841){return BPromise['reject'](_0x5de841);}return _0x24f9ef[_0x64dd('0x23')]();};}function saveUpdates(_0x1c29ee,_0x3dd95c){return function(_0x4b52f5){if(_0x4b52f5){return _0x4b52f5[_0x64dd('0x24')](_0x1c29ee)[_0x64dd('0x25')](function(_0x2bb96b){return _0x2bb96b;});}return null;};}function removeEntity(_0x17341c,_0x18812d){return function(_0x482ffb){if(_0x482ffb){return _0x482ffb[_0x64dd('0x26')]()[_0x64dd('0x25')](function(){var _0x3c5ed8=_0x482ffb[_0x64dd('0x27')]({'plain':!![]});var _0x3bf7f2=_0x64dd('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x3bf7f2,'resourceId':_0x3c5ed8['id']}})[_0x64dd('0x25')](function(){return _0x482ffb;});})[_0x64dd('0x25')](function(){_0x17341c['status'](0xcc)[_0x64dd('0x29')]();});}};}function handleEntityNotFound(_0x419421,_0x246378){return function(_0xf9a7b2){if(!_0xf9a7b2){_0x419421[_0x64dd('0x2a')](0x194);}return _0xf9a7b2;};}function handleError(_0xf215fb,_0x25e9ea){_0x25e9ea=_0x25e9ea||0x1f4;return function(_0x44dc12){logger[_0x64dd('0x2b')](_0x44dc12[_0x64dd('0x2c')]);if(_0x44dc12[_0x64dd('0x2d')]){delete _0x44dc12[_0x64dd('0x2d')];}_0xf215fb['status'](_0x25e9ea)['send'](_0x44dc12);};}exports[_0x64dd('0x2e')]=function(_0x3f2ffe,_0xef23de){var _0x12025f={},_0xfe22a7={},_0x54106c={'count':0x0,'rows':[]};var _0x3c3dc4=_[_0x64dd('0x2f')](db[_0x64dd('0x30')][_0x64dd('0x31')],function(_0x12254f){return{'name':_0x12254f['fieldName'],'type':_0x12254f[_0x64dd('0x32')][_0x64dd('0x33')]};});_0xfe22a7[_0x64dd('0x34')]=_[_0x64dd('0x2f')](_0x3c3dc4,_0x64dd('0x2d'));_0xfe22a7['query']=_[_0x64dd('0x35')](_0x3f2ffe[_0x64dd('0x36')]);_0xfe22a7[_0x64dd('0x37')]=_['intersection'](_0xfe22a7[_0x64dd('0x34')],_0xfe22a7[_0x64dd('0x36')]);_0x12025f['attributes']=_[_0x64dd('0x38')](_0xfe22a7['model'],qs[_0x64dd('0x39')](_0x3f2ffe[_0x64dd('0x36')][_0x64dd('0x39')]));_0x12025f[_0x64dd('0x3a')]=_0x12025f['attributes'][_0x64dd('0x3b')]?_0x12025f['attributes']:_0xfe22a7[_0x64dd('0x34')];if(!_0x3f2ffe[_0x64dd('0x36')]['hasOwnProperty'](_0x64dd('0x3c'))){_0x12025f[_0x64dd('0x1e')]=qs[_0x64dd('0x1e')](_0x3f2ffe[_0x64dd('0x36')][_0x64dd('0x1e')]);_0x12025f[_0x64dd('0x1c')]=qs['offset'](_0x3f2ffe['query']['offset']);}_0x12025f[_0x64dd('0x3d')]=qs[_0x64dd('0x3e')](_0x3f2ffe[_0x64dd('0x36')][_0x64dd('0x3e')]);_0x12025f[_0x64dd('0x3f')]=qs[_0x64dd('0x37')](_[_0x64dd('0x40')](_0x3f2ffe[_0x64dd('0x36')],_0xfe22a7[_0x64dd('0x37')]),_0x3c3dc4);if(_0x3f2ffe[_0x64dd('0x36')][_0x64dd('0x41')]){_0x12025f['where']=_[_0x64dd('0x42')](_0x12025f[_0x64dd('0x3f')],{'$or':_[_0x64dd('0x2f')](_0x3c3dc4,function(_0x567d57){if(_0x567d57['type']!=='VIRTUAL'){var _0x2cd58e={};_0x2cd58e[_0x567d57['name']]={'$like':'%'+_0x3f2ffe[_0x64dd('0x36')]['filter']+'%'};return _0x2cd58e;}})});}_0x12025f=_[_0x64dd('0x42')]({},_0x12025f,_0x3f2ffe[_0x64dd('0x43')]);var _0x17695c={'where':_0x12025f['where']};return db[_0x64dd('0x30')]['count'](_0x17695c)['then'](function(_0x5b6138){_0x54106c['count']=_0x5b6138;if(_0x3f2ffe[_0x64dd('0x36')][_0x64dd('0x44')]){_0x12025f['include']=[{'all':!![]}];}return db[_0x64dd('0x30')][_0x64dd('0x45')](_0x12025f);})[_0x64dd('0x25')](function(_0x4d76b0){_0x54106c[_0x64dd('0x46')]=_0x4d76b0;return _0x54106c;})[_0x64dd('0x25')](respondWithFilteredResult(_0xef23de,_0x12025f))['catch'](handleError(_0xef23de,null));};exports[_0x64dd('0x47')]=function(_0x4125b1,_0xfb5043){var _0x4b1635={'raw':!![],'where':{'id':_0x4125b1[_0x64dd('0x48')]['id']}},_0x536ed9={};_0x536ed9['model']=_[_0x64dd('0x35')](db[_0x64dd('0x30')][_0x64dd('0x31')]);_0x536ed9['query']=_['keys'](_0x4125b1[_0x64dd('0x36')]);_0x536ed9[_0x64dd('0x37')]=_[_0x64dd('0x38')](_0x536ed9['model'],_0x536ed9['query']);_0x4b1635[_0x64dd('0x3a')]=_['intersection'](_0x536ed9[_0x64dd('0x34')],qs[_0x64dd('0x39')](_0x4125b1[_0x64dd('0x36')][_0x64dd('0x39')]));_0x4b1635['attributes']=_0x4b1635[_0x64dd('0x3a')][_0x64dd('0x3b')]?_0x4b1635[_0x64dd('0x3a')]:_0x536ed9[_0x64dd('0x34')];if(_0x4125b1[_0x64dd('0x36')][_0x64dd('0x44')]){_0x4b1635[_0x64dd('0x49')]=[{'all':!![]}];}_0x4b1635=_[_0x64dd('0x42')]({},_0x4b1635,_0x4125b1[_0x64dd('0x43')]);return db['Sound'][_0x64dd('0x4a')](_0x4b1635)[_0x64dd('0x25')](handleEntityNotFound(_0xfb5043,null))[_0x64dd('0x25')](respondWithResult(_0xfb5043,null))[_0x64dd('0x4b')](handleError(_0xfb5043,null));};exports[_0x64dd('0x4c')]=function(_0x35a9a6,_0x55013f,_0x161a5d){return db[_0x64dd('0x30')][_0x64dd('0x4a')]({'where':{'id':_0x35a9a6['params']['id']},'attributes':[_0x64dd('0x2d'),_0x64dd('0x4d'),'converted_format'],'raw':!![]})[_0x64dd('0x25')](handleEntityNotFound(_0x55013f,null))['then'](function(_0x19ea4b){if(_0x19ea4b){if(!fs['existsSync'](path[_0x64dd('0x4e')](config['root'],_0x64dd('0x4f'),_0x19ea4b[_0x64dd('0x4d')]+'.'+_0x19ea4b[_0x64dd('0x50')]))){throw new db[(_0x64dd('0x51'))][(_0x64dd('0x52'))](_0x64dd('0x53'));}return _0x55013f[_0x64dd('0x4c')](path[_0x64dd('0x4e')](config[_0x64dd('0x54')],'server/files/sounds/converted',util[_0x64dd('0x55')](_0x64dd('0x56'),_0x19ea4b['save_name'],_0x19ea4b['converted_format'])),util[_0x64dd('0x55')](_0x64dd('0x56'),_0x19ea4b[_0x64dd('0x2d')],_0x19ea4b[_0x64dd('0x50')]));}return null;})['catch'](handleError(_0x55013f,null));};exports[_0x64dd('0x57')]=function(_0x14bf1e,_0x133b9c,_0x1f261e){var _0x13ddfc={'name':path[_0x64dd('0x58')](_0x14bf1e[_0x64dd('0x59')]['originalname'],path[_0x64dd('0x5a')](_0x14bf1e[_0x64dd('0x59')][_0x64dd('0x5b')])),'save_name':path[_0x64dd('0x58')](_0x14bf1e[_0x64dd('0x59')][_0x64dd('0x5c')],path[_0x64dd('0x5a')](_0x14bf1e[_0x64dd('0x59')][_0x64dd('0x5c')])),'original_format':path[_0x64dd('0x5a')](_0x14bf1e[_0x64dd('0x59')][_0x64dd('0x5b')])['substring'](0x1),'converted_format':_0x64dd('0x5d')};var _0x2eab2a=path[_0x64dd('0x4e')](config[_0x64dd('0x54')],'server/files/sounds/original',_0x14bf1e[_0x64dd('0x59')]['filename']);var _0x57dd43=path[_0x64dd('0x4e')](config[_0x64dd('0x54')],_0x64dd('0x4f'),util[_0x64dd('0x55')]('%s.%s',path[_0x64dd('0x58')](_0x14bf1e[_0x64dd('0x59')][_0x64dd('0x5c')],path[_0x64dd('0x5a')](_0x14bf1e['file'][_0x64dd('0x5c')])),_0x13ddfc[_0x64dd('0x50')]));logger[_0x64dd('0x5e')](_0x64dd('0x5f'),_0x2eab2a);logger['info'](_0x64dd('0x60'),_0x57dd43);try{fs['chmodSync'](_0x2eab2a,parseInt(_0x64dd('0x61'),0x8));var _0x21ee66=sox[_0x64dd('0x62')](_0x2eab2a,_0x57dd43,{'sampleRate':0x1f40,'format':_0x64dd('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x21ee66['on'](_0x64dd('0x2b'),function(_0xa8ee14){fs[_0x64dd('0x63')](_0x2eab2a);_0x133b9c[_0x64dd('0x1a')](0x1f4)[_0x64dd('0x64')](_0xa8ee14);});_0x21ee66['on'](_0x64dd('0x65'),function(_0x2c0016){_0x13ddfc[_0x64dd('0x66')]=isNaN(_0x2c0016[_0x64dd('0x67')])?null:_0x2c0016['duration']*0x3e8;_0x13ddfc[_0x64dd('0x68')]=isNaN(_0x2c0016[_0x64dd('0x69')])?null:_0x2c0016[_0x64dd('0x69')];_0x13ddfc[_0x64dd('0x6a')]=isNaN(_0x2c0016[_0x64dd('0x6b')])?null:_0x2c0016[_0x64dd('0x6b')];_0x13ddfc[_0x64dd('0x6c')]=isNaN(_0x2c0016[_0x64dd('0x6d')])?null:_0x2c0016['bitRate'];_0x13ddfc[_0x64dd('0x6e')]=isNaN(_0x2c0016['sampleRate'])?null:_0x2c0016[_0x64dd('0x6f')];});_0x21ee66['on'](_0x64dd('0x70'),function(_0x3e4a64){_0x13ddfc[_0x64dd('0x71')]=isNaN(_0x3e4a64[_0x64dd('0x67')])?null:_0x3e4a64[_0x64dd('0x67')]*0x3e8;_0x13ddfc[_0x64dd('0x72')]=isNaN(_0x3e4a64[_0x64dd('0x69')])?null:_0x3e4a64['sampleCount'];_0x13ddfc[_0x64dd('0x73')]=isNaN(_0x3e4a64['channelCount'])?null:_0x3e4a64[_0x64dd('0x6b')];_0x13ddfc[_0x64dd('0x74')]=isNaN(_0x3e4a64[_0x64dd('0x6d')])?null:_0x3e4a64[_0x64dd('0x6d')];_0x13ddfc['converted_sampleRate']=isNaN(_0x3e4a64[_0x64dd('0x6f')])?null:_0x3e4a64[_0x64dd('0x6f')];});_0x21ee66['on']('end',function(){fs['chmodSync'](_0x57dd43,parseInt('0777',0x8));return db[_0x64dd('0x30')][_0x64dd('0x57')](_0x13ddfc)[_0x64dd('0x25')](function(_0x392f11){var _0x833778={'role':_0x14bf1e[_0x64dd('0x75')][_0x64dd('0x76')],'userProfileId':_0x14bf1e[_0x64dd('0x75')]['userProfileId']};if(!_0x833778)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x833778[_0x64dd('0x76')]===_0x64dd('0x77')){var _0x415709=_0x392f11[_0x64dd('0x27')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x64dd('0x28'),'userProfileId':_0x833778[_0x64dd('0x78')]},'raw':!![]})[_0x64dd('0x25')](function(_0x4b196){if(_0x4b196&&_0x4b196[_0x64dd('0x79')]===0x0){return db['UserProfileResource'][_0x64dd('0x57')]({'name':_0x415709[_0x64dd('0x2d')],'resourceId':_0x415709['id'],'type':_0x4b196['name'],'sectionId':_0x4b196['id']},{})[_0x64dd('0x25')](function(){return _0x392f11;});}else{return _0x392f11;}})['catch'](function(_0x5ac6e6){logger[_0x64dd('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5ac6e6);throw _0x5ac6e6;});}return _0x392f11;})[_0x64dd('0x25')](respondWithResult(_0x133b9c,null))[_0x64dd('0x4b')](handleError(_0x133b9c,null));});_0x21ee66[_0x64dd('0x7a')]();}catch(_0x44a60f){_0x133b9c[_0x64dd('0x1a')](0x1f4)[_0x64dd('0x64')](_0x44a60f);}};exports[_0x64dd('0x24')]=function(_0x1ef052,_0xaa8190,_0x19cb5a){return db[_0x64dd('0x30')][_0x64dd('0x4a')]({'where':{'id':_0x1ef052['params']['id']}})[_0x64dd('0x25')](handleEntityNotFound(_0xaa8190,null))[_0x64dd('0x25')](saveUpdates(_[_0x64dd('0x40')](_0x1ef052['body'],[_0x64dd('0x2d'),_0x64dd('0x7b')]),null))[_0x64dd('0x25')](respondWithResult(_0xaa8190,null))[_0x64dd('0x4b')](handleError(_0xaa8190,null));};exports[_0x64dd('0x7c')]=function(_0x1df723,_0x2f2cdb,_0xfb5198){return db[_0x64dd('0x30')][_0x64dd('0x4a')]({'where':{'id':_0x1df723[_0x64dd('0x48')]['id']}})[_0x64dd('0x25')](function(_0x4985ab){if(_0x4985ab){return _0x4985ab[_0x64dd('0x26')]();}})[_0x64dd('0x25')](function(_0x2663a1){var _0x3476a7=path[_0x64dd('0x4e')](config[_0x64dd('0x54')],_0x64dd('0x7d'),util[_0x64dd('0x55')](_0x64dd('0x56'),_0x2663a1[_0x64dd('0x4d')],_0x2663a1[_0x64dd('0x7e')]));var _0x298178=path[_0x64dd('0x4e')](config[_0x64dd('0x54')],'server/files/sounds/converted',util[_0x64dd('0x55')]('%s.%s',_0x2663a1[_0x64dd('0x4d')],_0x2663a1[_0x64dd('0x50')]));fs[_0x64dd('0x63')](_0x3476a7);fs['unlinkSync'](_0x298178);return _0x2663a1;})['then'](function(_0x3dc17f){if(_0x3dc17f){return _0x2f2cdb[_0x64dd('0x1a')](0xcc)[_0x64dd('0x29')]();}})[_0x64dd('0x25')](handleEntityNotFound(_0x2f2cdb,null))[_0x64dd('0x4b')](handleError(_0x2f2cdb,null));};
\ No newline at end of file
+var _0xcdf8=['server/files/sounds/converted','Sequelize','Sound\x20not\x20found','format','%s.%s','create','basename','file','extname','originalname','filename','wav','server/files/sounds/original','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_bitRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Sounds','UserProfileResource','error','stack','name','send','index','map','Sound','fieldName','type','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','download','find','save_name','converted_format','join','root'];(function(_0x484cb9,_0x103489){var _0x59517e=function(_0x2936bc){while(--_0x2936bc){_0x484cb9['push'](_0x484cb9['shift']());}};_0x59517e(++_0x103489);}(_0xcdf8,0x123));var _0x8cdf=function(_0x59c301,_0x359c50){_0x59c301=_0x59c301-0x0;var _0x3866b9=_0xcdf8[_0x59c301];return _0x3866b9;};'use strict';var emlformat=require(_0x8cdf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8cdf('0x1'));var jsonpatch=require(_0x8cdf('0x2'));var rp=require(_0x8cdf('0x3'));var moment=require('moment');var BPromise=require(_0x8cdf('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8cdf('0x5'));var sox=require(_0x8cdf('0x6'));var csv=require(_0x8cdf('0x7'));var ejs=require(_0x8cdf('0x8'));var fs=require('fs');var fs_extra=require(_0x8cdf('0x9'));var _=require(_0x8cdf('0xa'));var squel=require(_0x8cdf('0xb'));var crypto=require(_0x8cdf('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8cdf('0xd'));var toCsv=require(_0x8cdf('0x7'));var querystring=require('querystring');var Papa=require(_0x8cdf('0xe'));var Redis=require(_0x8cdf('0xf'));var authService=require(_0x8cdf('0x10'));var qs=require(_0x8cdf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8cdf('0x12'));var logger=require(_0x8cdf('0x13'))('api');var utils=require(_0x8cdf('0x14'));var config=require(_0x8cdf('0x15'));var licenseUtil=require(_0x8cdf('0x16'));var db=require(_0x8cdf('0x17'))['db'];function respondWithStatusCode(_0x3e7667,_0x1b23f1){_0x1b23f1=_0x1b23f1||0xcc;return function(_0x17d300){if(_0x17d300){return _0x3e7667[_0x8cdf('0x18')](_0x1b23f1);}return _0x3e7667[_0x8cdf('0x19')](_0x1b23f1)[_0x8cdf('0x1a')]();};}function respondWithResult(_0x40604d,_0x2e11a8){_0x2e11a8=_0x2e11a8||0xc8;return function(_0x352bcd){if(_0x352bcd){return _0x40604d[_0x8cdf('0x19')](_0x2e11a8)[_0x8cdf('0x1b')](_0x352bcd);}};}function respondWithFilteredResult(_0x38da64,_0x53d423){return function(_0x4ae692){if(_0x4ae692){var _0x571e5e=typeof _0x53d423[_0x8cdf('0x1c')]===_0x8cdf('0x1d')&&typeof _0x53d423[_0x8cdf('0x1e')]===_0x8cdf('0x1d');var _0x56a294=_0x4ae692['count'];var _0x1cac5d=_0x571e5e?0x0:_0x53d423[_0x8cdf('0x1c')];var _0x2eae76=_0x571e5e?_0x4ae692[_0x8cdf('0x1f')]:_0x53d423['offset']+_0x53d423[_0x8cdf('0x1e')];var _0x5dbb9c;if(_0x2eae76>=_0x56a294){_0x2eae76=_0x56a294;_0x5dbb9c=0xc8;}else{_0x5dbb9c=0xce;}_0x38da64[_0x8cdf('0x19')](_0x5dbb9c);return _0x38da64[_0x8cdf('0x20')](_0x8cdf('0x21'),_0x1cac5d+'-'+_0x2eae76+'/'+_0x56a294)[_0x8cdf('0x1b')](_0x4ae692);}return null;};}function patchUpdates(_0x519c1a){return function(_0x300405){try{jsonpatch[_0x8cdf('0x22')](_0x300405,_0x519c1a,!![]);}catch(_0x2bc7a2){return BPromise['reject'](_0x2bc7a2);}return _0x300405[_0x8cdf('0x23')]();};}function saveUpdates(_0xb6c0d,_0x4ae3ca){return function(_0x109fe5){if(_0x109fe5){return _0x109fe5[_0x8cdf('0x24')](_0xb6c0d)[_0x8cdf('0x25')](function(_0x50565f){return _0x50565f;});}return null;};}function removeEntity(_0x3010c6,_0x4f56b9){return function(_0x34cd84){if(_0x34cd84){return _0x34cd84[_0x8cdf('0x26')]()['then'](function(){var _0x206277=_0x34cd84[_0x8cdf('0x27')]({'plain':!![]});var _0x1bb7bc=_0x8cdf('0x28');return db[_0x8cdf('0x29')]['destroy']({'where':{'type':_0x1bb7bc,'resourceId':_0x206277['id']}})[_0x8cdf('0x25')](function(){return _0x34cd84;});})[_0x8cdf('0x25')](function(){_0x3010c6[_0x8cdf('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x905918,_0x1960fc){return function(_0x47f645){if(!_0x47f645){_0x905918[_0x8cdf('0x18')](0x194);}return _0x47f645;};}function handleError(_0x37d2b3,_0x4dd317){_0x4dd317=_0x4dd317||0x1f4;return function(_0x1f9a3c){logger[_0x8cdf('0x2a')](_0x1f9a3c[_0x8cdf('0x2b')]);if(_0x1f9a3c[_0x8cdf('0x2c')]){delete _0x1f9a3c[_0x8cdf('0x2c')];}_0x37d2b3[_0x8cdf('0x19')](_0x4dd317)[_0x8cdf('0x2d')](_0x1f9a3c);};}exports[_0x8cdf('0x2e')]=function(_0x37451c,_0x37feac){var _0x43ef25={},_0x2c13fa={},_0x2b0e24={'count':0x0,'rows':[]};var _0x54fba5=_[_0x8cdf('0x2f')](db[_0x8cdf('0x30')]['rawAttributes'],function(_0x526633){return{'name':_0x526633[_0x8cdf('0x31')],'type':_0x526633[_0x8cdf('0x32')]['key']};});_0x2c13fa[_0x8cdf('0x33')]=_[_0x8cdf('0x2f')](_0x54fba5,'name');_0x2c13fa['query']=_[_0x8cdf('0x34')](_0x37451c[_0x8cdf('0x35')]);_0x2c13fa[_0x8cdf('0x36')]=_[_0x8cdf('0x37')](_0x2c13fa[_0x8cdf('0x33')],_0x2c13fa['query']);_0x43ef25[_0x8cdf('0x38')]=_[_0x8cdf('0x37')](_0x2c13fa[_0x8cdf('0x33')],qs['fields'](_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x39')]));_0x43ef25[_0x8cdf('0x38')]=_0x43ef25[_0x8cdf('0x38')]['length']?_0x43ef25[_0x8cdf('0x38')]:_0x2c13fa[_0x8cdf('0x33')];if(!_0x37451c['query']['hasOwnProperty'](_0x8cdf('0x3a'))){_0x43ef25[_0x8cdf('0x1e')]=qs[_0x8cdf('0x1e')](_0x37451c['query'][_0x8cdf('0x1e')]);_0x43ef25[_0x8cdf('0x1c')]=qs[_0x8cdf('0x1c')](_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x1c')]);}_0x43ef25[_0x8cdf('0x3b')]=qs[_0x8cdf('0x3c')](_0x37451c['query']['sort']);_0x43ef25[_0x8cdf('0x3d')]=qs[_0x8cdf('0x36')](_[_0x8cdf('0x3e')](_0x37451c['query'],_0x2c13fa[_0x8cdf('0x36')]),_0x54fba5);if(_0x37451c['query'][_0x8cdf('0x3f')]){_0x43ef25[_0x8cdf('0x3d')]=_[_0x8cdf('0x40')](_0x43ef25['where'],{'$or':_[_0x8cdf('0x2f')](_0x54fba5,function(_0x445ab1){if(_0x445ab1['type']!==_0x8cdf('0x41')){var _0x478361={};_0x478361[_0x445ab1['name']]={'$like':'%'+_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x3f')]+'%'};return _0x478361;}})});}_0x43ef25=_[_0x8cdf('0x40')]({},_0x43ef25,_0x37451c[_0x8cdf('0x42')]);var _0x1d72da={'where':_0x43ef25[_0x8cdf('0x3d')]};return db[_0x8cdf('0x30')]['count'](_0x1d72da)[_0x8cdf('0x25')](function(_0x44d36f){_0x2b0e24[_0x8cdf('0x1f')]=_0x44d36f;if(_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x43')]){_0x43ef25[_0x8cdf('0x44')]=[{'all':!![]}];}return db[_0x8cdf('0x30')][_0x8cdf('0x45')](_0x43ef25);})['then'](function(_0x1c867c){_0x2b0e24[_0x8cdf('0x46')]=_0x1c867c;return _0x2b0e24;})[_0x8cdf('0x25')](respondWithFilteredResult(_0x37feac,_0x43ef25))[_0x8cdf('0x47')](handleError(_0x37feac,null));};exports[_0x8cdf('0x48')]=function(_0x49b56e,_0x3506e8){var _0x23ffad={'raw':!![],'where':{'id':_0x49b56e[_0x8cdf('0x49')]['id']}},_0x28252d={};_0x28252d['model']=_[_0x8cdf('0x34')](db[_0x8cdf('0x30')][_0x8cdf('0x4a')]);_0x28252d[_0x8cdf('0x35')]=_[_0x8cdf('0x34')](_0x49b56e[_0x8cdf('0x35')]);_0x28252d[_0x8cdf('0x36')]=_[_0x8cdf('0x37')](_0x28252d['model'],_0x28252d[_0x8cdf('0x35')]);_0x23ffad[_0x8cdf('0x38')]=_[_0x8cdf('0x37')](_0x28252d[_0x8cdf('0x33')],qs[_0x8cdf('0x39')](_0x49b56e['query']['fields']));_0x23ffad[_0x8cdf('0x38')]=_0x23ffad[_0x8cdf('0x38')]['length']?_0x23ffad['attributes']:_0x28252d[_0x8cdf('0x33')];if(_0x49b56e[_0x8cdf('0x35')]['includeAll']){_0x23ffad[_0x8cdf('0x44')]=[{'all':!![]}];}_0x23ffad=_[_0x8cdf('0x40')]({},_0x23ffad,_0x49b56e['options']);return db[_0x8cdf('0x30')]['find'](_0x23ffad)[_0x8cdf('0x25')](handleEntityNotFound(_0x3506e8,null))[_0x8cdf('0x25')](respondWithResult(_0x3506e8,null))[_0x8cdf('0x47')](handleError(_0x3506e8,null));};exports[_0x8cdf('0x4b')]=function(_0x568680,_0xa48f2e,_0x26c0d2){return db[_0x8cdf('0x30')][_0x8cdf('0x4c')]({'where':{'id':_0x568680['params']['id']},'attributes':['name',_0x8cdf('0x4d'),_0x8cdf('0x4e')],'raw':!![]})[_0x8cdf('0x25')](handleEntityNotFound(_0xa48f2e,null))[_0x8cdf('0x25')](function(_0x3c1110){if(_0x3c1110){if(!fs['existsSync'](path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x51'),_0x3c1110[_0x8cdf('0x4d')]+'.'+_0x3c1110[_0x8cdf('0x4e')]))){throw new db[(_0x8cdf('0x52'))]['ValidationError'](_0x8cdf('0x53'));}return _0xa48f2e[_0x8cdf('0x4b')](path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x51'),util[_0x8cdf('0x54')]('%s.%s',_0x3c1110[_0x8cdf('0x4d')],_0x3c1110[_0x8cdf('0x4e')])),util[_0x8cdf('0x54')](_0x8cdf('0x55'),_0x3c1110['name'],_0x3c1110[_0x8cdf('0x4e')]));}return null;})[_0x8cdf('0x47')](handleError(_0xa48f2e,null));};exports[_0x8cdf('0x56')]=function(_0x1ed6f6,_0x55ce34,_0x50ae5a){var _0x12d1d3={'name':path[_0x8cdf('0x57')](_0x1ed6f6[_0x8cdf('0x58')]['originalname'],path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5a')])),'save_name':path[_0x8cdf('0x57')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')],path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')])),'original_format':path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')]['originalname'])['substring'](0x1),'converted_format':_0x8cdf('0x5c')};var _0x66dcad=path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x5d'),_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')]);var _0x1ab6db=path['join'](config[_0x8cdf('0x50')],_0x8cdf('0x51'),util[_0x8cdf('0x54')](_0x8cdf('0x55'),path[_0x8cdf('0x57')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')],path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')])),_0x12d1d3[_0x8cdf('0x4e')]));logger['info'](_0x8cdf('0x5e'),_0x66dcad);logger[_0x8cdf('0x5f')](_0x8cdf('0x60'),_0x1ab6db);try{fs[_0x8cdf('0x61')](_0x66dcad,parseInt(_0x8cdf('0x62'),0x8));var _0x25a513=sox['transcode'](_0x66dcad,_0x1ab6db,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x25a513['on'](_0x8cdf('0x2a'),function(_0x222e9f){fs[_0x8cdf('0x63')](_0x66dcad);_0x55ce34[_0x8cdf('0x19')](0x1f4)['send'](_0x222e9f);});_0x25a513['on'](_0x8cdf('0x64'),function(_0x1f4980){_0x12d1d3[_0x8cdf('0x65')]=isNaN(_0x1f4980['duration'])?null:_0x1f4980[_0x8cdf('0x66')]*0x3e8;_0x12d1d3[_0x8cdf('0x67')]=isNaN(_0x1f4980[_0x8cdf('0x68')])?null:_0x1f4980[_0x8cdf('0x68')];_0x12d1d3[_0x8cdf('0x69')]=isNaN(_0x1f4980[_0x8cdf('0x6a')])?null:_0x1f4980['channelCount'];_0x12d1d3[_0x8cdf('0x6b')]=isNaN(_0x1f4980[_0x8cdf('0x6c')])?null:_0x1f4980[_0x8cdf('0x6c')];_0x12d1d3[_0x8cdf('0x6d')]=isNaN(_0x1f4980[_0x8cdf('0x6e')])?null:_0x1f4980[_0x8cdf('0x6e')];});_0x25a513['on'](_0x8cdf('0x6f'),function(_0x2d7843){_0x12d1d3['converted_duration']=isNaN(_0x2d7843['duration'])?null:_0x2d7843[_0x8cdf('0x66')]*0x3e8;_0x12d1d3[_0x8cdf('0x70')]=isNaN(_0x2d7843['sampleCount'])?null:_0x2d7843['sampleCount'];_0x12d1d3['converted_channelCount']=isNaN(_0x2d7843[_0x8cdf('0x6a')])?null:_0x2d7843[_0x8cdf('0x6a')];_0x12d1d3[_0x8cdf('0x71')]=isNaN(_0x2d7843[_0x8cdf('0x6c')])?null:_0x2d7843[_0x8cdf('0x6c')];_0x12d1d3['converted_sampleRate']=isNaN(_0x2d7843[_0x8cdf('0x6e')])?null:_0x2d7843[_0x8cdf('0x6e')];});_0x25a513['on'](_0x8cdf('0x1a'),function(){fs['chmodSync'](_0x1ab6db,parseInt(_0x8cdf('0x62'),0x8));return db['Sound'][_0x8cdf('0x56')](_0x12d1d3)[_0x8cdf('0x25')](function(_0x5e73d7){var _0x5e9acf={'role':_0x1ed6f6[_0x8cdf('0x72')]['role'],'userProfileId':_0x1ed6f6[_0x8cdf('0x72')][_0x8cdf('0x73')]};if(!_0x5e9acf)throw new Error(_0x8cdf('0x74'));if(_0x5e9acf[_0x8cdf('0x75')]===_0x8cdf('0x76')){var _0x2e1d1f=_0x5e73d7['get']({'plain':!![]});return db['UserProfileSection'][_0x8cdf('0x4c')]({'where':{'name':_0x8cdf('0x28'),'userProfileId':_0x5e9acf[_0x8cdf('0x73')]},'raw':!![]})['then'](function(_0x531b7a){if(_0x531b7a&&_0x531b7a['autoAssociation']===0x0){return db[_0x8cdf('0x29')][_0x8cdf('0x56')]({'name':_0x2e1d1f[_0x8cdf('0x2c')],'resourceId':_0x2e1d1f['id'],'type':_0x531b7a[_0x8cdf('0x2c')],'sectionId':_0x531b7a['id']},{})[_0x8cdf('0x25')](function(){return _0x5e73d7;});}else{return _0x5e73d7;}})['catch'](function(_0x224419){logger['error'](_0x8cdf('0x77'),_0x224419);throw _0x224419;});}return _0x5e73d7;})['then'](respondWithResult(_0x55ce34,null))[_0x8cdf('0x47')](handleError(_0x55ce34,null));});_0x25a513[_0x8cdf('0x78')]();}catch(_0x55abeb){_0x55ce34[_0x8cdf('0x19')](0x1f4)[_0x8cdf('0x2d')](_0x55abeb);}};exports[_0x8cdf('0x24')]=function(_0xc51994,_0x41eb81,_0x3d52d4){return db[_0x8cdf('0x30')][_0x8cdf('0x4c')]({'where':{'id':_0xc51994[_0x8cdf('0x49')]['id']}})[_0x8cdf('0x25')](handleEntityNotFound(_0x41eb81,null))[_0x8cdf('0x25')](saveUpdates(_['pick'](_0xc51994[_0x8cdf('0x72')],[_0x8cdf('0x2c'),_0x8cdf('0x79')]),null))[_0x8cdf('0x25')](respondWithResult(_0x41eb81,null))[_0x8cdf('0x47')](handleError(_0x41eb81,null));};exports[_0x8cdf('0x7a')]=function(_0x4a2bb4,_0x542af5,_0x39e441){return db[_0x8cdf('0x30')][_0x8cdf('0x4c')]({'where':{'id':_0x4a2bb4[_0x8cdf('0x49')]['id']}})['then'](function(_0x130728){if(_0x130728){return _0x130728[_0x8cdf('0x26')]();}})['then'](function(_0x4c4b4c){var _0x2a4c70=path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],'server/files/sounds/original',util[_0x8cdf('0x54')](_0x8cdf('0x55'),_0x4c4b4c[_0x8cdf('0x4d')],_0x4c4b4c[_0x8cdf('0x7b')]));var _0x1381b8=path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x51'),util[_0x8cdf('0x54')](_0x8cdf('0x55'),_0x4c4b4c[_0x8cdf('0x4d')],_0x4c4b4c[_0x8cdf('0x4e')]));fs[_0x8cdf('0x63')](_0x2a4c70);fs[_0x8cdf('0x63')](_0x1381b8);return _0x4c4b4c;})['then'](function(_0x1eed43){if(_0x1eed43){return _0x542af5['status'](0xcc)['end']();}})[_0x8cdf('0x25')](handleEntityNotFound(_0x542af5,null))[_0x8cdf('0x47')](handleError(_0x542af5,null));};
\ No newline at end of file
index a42177e..95fb04f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5b9=['rimraf','../../config/environment','exports','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc5b9,0xb8));var _0x9c5b=function(_0x4391ee,_0x363e20){_0x4391ee=_0x4391ee-0x0;var _0x46095e=_0xc5b9[_0x4391ee];return _0x46095e;};'use strict';var _=require(_0x9c5b('0x0'));var util=require(_0x9c5b('0x1'));var logger=require(_0x9c5b('0x2'))(_0x9c5b('0x3'));var moment=require(_0x9c5b('0x4'));var BPromise=require(_0x9c5b('0x5'));var rp=require(_0x9c5b('0x6'));var fs=require('fs');var path=require(_0x9c5b('0x7'));var rimraf=require(_0x9c5b('0x8'));var config=require(_0x9c5b('0x9'));var attributes=require('./sound.attributes');module[_0x9c5b('0xa')]=function(_0x215d1a,_0x67a94a){return _0x215d1a['define']('Sound',attributes,{'tableName':_0x9c5b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c00=['exports','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x55f45b,_0x13d8cb){var _0x525267=function(_0x355093){while(--_0x355093){_0x55f45b['push'](_0x55f45b['shift']());}};_0x525267(++_0x13d8cb);}(_0x7c00,0x1d6));var _0x07c0=function(_0x11c1a1,_0x17ba8c){_0x11c1a1=_0x11c1a1-0x0;var _0x483746=_0x7c00[_0x11c1a1];return _0x483746;};'use strict';var _=require(_0x07c0('0x0'));var util=require(_0x07c0('0x1'));var logger=require(_0x07c0('0x2'))(_0x07c0('0x3'));var moment=require(_0x07c0('0x4'));var BPromise=require(_0x07c0('0x5'));var rp=require(_0x07c0('0x6'));var fs=require('fs');var path=require(_0x07c0('0x7'));var rimraf=require(_0x07c0('0x8'));var config=require(_0x07c0('0x9'));var attributes=require('./sound.attributes');module[_0x07c0('0xa')]=function(_0x410ca3,_0x360e9a){return _0x410ca3[_0x07c0('0xb')]('Sound',attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2a9cac6..dea3b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa404=['Sound','find','options','raw','map','include','model','attributes','then','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xa404,0x1c9));var _0x4a40=function(_0x120192,_0x2a60dd){_0x120192=_0x120192-0x0;var _0x4418c1=_0xa404[_0x120192];return _0x4418c1;};'use strict';var _=require('lodash');var util=require(_0x4a40('0x0'));var moment=require(_0x4a40('0x1'));var BPromise=require('bluebird');var rs=require(_0x4a40('0x2'));var fs=require('fs');var Redis=require(_0x4a40('0x3'));var db=require(_0x4a40('0x4'))['db'];var utils=require(_0x4a40('0x5'));var logger=require('../../config/logger')(_0x4a40('0x6'));var config=require(_0x4a40('0x7'));var jayson=require(_0x4a40('0x8'));var client=jayson['client'][_0x4a40('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x106daf,_0x51b930,_0x3f3574){return new BPromise(function(_0x48d9f8,_0x54cf55){return client[_0x4a40('0xa')](_0x106daf,_0x3f3574)['then'](function(_0x1eb504){logger[_0x4a40('0xb')](_0x4a40('0xc'),_0x51b930,_0x4a40('0xd'));logger[_0x4a40('0xe')](_0x4a40('0xf'),_0x51b930,_0x4a40('0xd'),JSON[_0x4a40('0x10')](_0x1eb504));if(_0x1eb504[_0x4a40('0x11')]){if(_0x1eb504[_0x4a40('0x11')][_0x4a40('0x12')]===0x1f4){logger['error']('Sound,\x20%s,\x20%s',_0x51b930,_0x1eb504[_0x4a40('0x11')]['message']);return _0x54cf55(_0x1eb504[_0x4a40('0x11')][_0x4a40('0x13')]);}logger[_0x4a40('0x11')](_0x4a40('0xc'),_0x51b930,_0x1eb504[_0x4a40('0x11')][_0x4a40('0x13')]);return _0x48d9f8(_0x1eb504['error'][_0x4a40('0x13')]);}else{logger['info'](_0x4a40('0xc'),_0x51b930,'request\x20sent');_0x48d9f8(_0x1eb504[_0x4a40('0x14')][_0x4a40('0x13')]);}})[_0x4a40('0x15')](function(_0x5eda96){logger[_0x4a40('0x11')](_0x4a40('0xc'),_0x51b930,_0x5eda96);_0x54cf55(_0x5eda96);});});}exports[_0x4a40('0x16')]=function(_0x2f6bbf){var _0x386c1b=this;return new Promise(function(_0x3541ac,_0xf1001f){return db[_0x4a40('0x17')][_0x4a40('0x18')]({'raw':_0x2f6bbf[_0x4a40('0x19')]?_0x2f6bbf[_0x4a40('0x19')][_0x4a40('0x1a')]===undefined?!![]:![]:!![],'where':_0x2f6bbf[_0x4a40('0x19')]?_0x2f6bbf[_0x4a40('0x19')]['where']||null:null,'attributes':_0x2f6bbf['options']?_0x2f6bbf[_0x4a40('0x19')]['attributes']||null:null,'include':_0x2f6bbf[_0x4a40('0x19')]?_0x2f6bbf[_0x4a40('0x19')]['include']?_[_0x4a40('0x1b')](_0x2f6bbf[_0x4a40('0x19')][_0x4a40('0x1c')],function(_0x43ca18){return{'model':db[_0x43ca18[_0x4a40('0x1d')]],'as':_0x43ca18['as'],'attributes':_0x43ca18['attributes'],'include':_0x43ca18['include']?_['map'](_0x43ca18[_0x4a40('0x1c')],function(_0x238fa6){return{'model':db[_0x238fa6[_0x4a40('0x1d')]],'as':_0x238fa6['as'],'attributes':_0x238fa6[_0x4a40('0x1e')],'include':_0x238fa6[_0x4a40('0x1c')]?_['map'](_0x238fa6[_0x4a40('0x1c')],function(_0x5aa303){return{'model':db[_0x5aa303[_0x4a40('0x1d')]],'as':_0x5aa303['as'],'attributes':_0x5aa303[_0x4a40('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4a40('0x1f')](function(_0x245e3f){logger[_0x4a40('0xb')](_0x4a40('0x16'),_0x2f6bbf);logger[_0x4a40('0xe')](_0x4a40('0x16'),_0x2f6bbf,JSON[_0x4a40('0x10')](_0x245e3f));_0x3541ac(_0x245e3f);})[_0x4a40('0x15')](function(_0x751089){logger['error'](_0x4a40('0x16'),_0x751089['message'],_0x2f6bbf);_0xf1001f(_0x386c1b[_0x4a40('0x11')](0x1f4,_0x751089[_0x4a40('0x13')]));});});};
\ No newline at end of file
+var _0x9b67=['message','result','catch','ShowSound','options','raw','where','attributes','include','map','model','stringify','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x6978c0,_0x1f6765){var _0x361377=function(_0x2d6cfd){while(--_0x2d6cfd){_0x6978c0['push'](_0x6978c0['shift']());}};_0x361377(++_0x1f6765);}(_0x9b67,0xd0));var _0x79b6=function(_0x197474,_0x400cc4){_0x197474=_0x197474-0x0;var _0x55201d=_0x9b67[_0x197474];return _0x55201d;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x79b6('0x0'));var rs=require(_0x79b6('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x79b6('0x2'));var logger=require('../../config/logger')(_0x79b6('0x3'));var config=require('../../config/environment');var jayson=require(_0x79b6('0x4'));var client=jayson[_0x79b6('0x5')][_0x79b6('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x394190,_0x1e9077,_0x1106e7){return new BPromise(function(_0x95ce00,_0x289fd8){return client[_0x79b6('0x7')](_0x394190,_0x1106e7)[_0x79b6('0x8')](function(_0x493863){logger[_0x79b6('0x9')](_0x79b6('0xa'),_0x1e9077,'request\x20sent');logger[_0x79b6('0xb')](_0x79b6('0xc'),_0x1e9077,_0x79b6('0xd'),JSON['stringify'](_0x493863));if(_0x493863[_0x79b6('0xe')]){if(_0x493863[_0x79b6('0xe')][_0x79b6('0xf')]===0x1f4){logger[_0x79b6('0xe')](_0x79b6('0xa'),_0x1e9077,_0x493863[_0x79b6('0xe')]['message']);return _0x289fd8(_0x493863[_0x79b6('0xe')][_0x79b6('0x10')]);}logger[_0x79b6('0xe')](_0x79b6('0xa'),_0x1e9077,_0x493863[_0x79b6('0xe')]['message']);return _0x95ce00(_0x493863[_0x79b6('0xe')][_0x79b6('0x10')]);}else{logger[_0x79b6('0x9')](_0x79b6('0xa'),_0x1e9077,'request\x20sent');_0x95ce00(_0x493863[_0x79b6('0x11')][_0x79b6('0x10')]);}})[_0x79b6('0x12')](function(_0xfd006){logger[_0x79b6('0xe')](_0x79b6('0xa'),_0x1e9077,_0xfd006);_0x289fd8(_0xfd006);});});}exports[_0x79b6('0x13')]=function(_0x505f06){var _0x376bc6=this;return new Promise(function(_0x55a5b6,_0x13178c){return db['Sound']['find']({'raw':_0x505f06[_0x79b6('0x14')]?_0x505f06['options'][_0x79b6('0x15')]===undefined?!![]:![]:!![],'where':_0x505f06[_0x79b6('0x14')]?_0x505f06['options'][_0x79b6('0x16')]||null:null,'attributes':_0x505f06['options']?_0x505f06[_0x79b6('0x14')][_0x79b6('0x17')]||null:null,'include':_0x505f06[_0x79b6('0x14')]?_0x505f06[_0x79b6('0x14')][_0x79b6('0x18')]?_[_0x79b6('0x19')](_0x505f06[_0x79b6('0x14')][_0x79b6('0x18')],function(_0x4edf5d){return{'model':db[_0x4edf5d[_0x79b6('0x1a')]],'as':_0x4edf5d['as'],'attributes':_0x4edf5d[_0x79b6('0x17')],'include':_0x4edf5d[_0x79b6('0x18')]?_[_0x79b6('0x19')](_0x4edf5d[_0x79b6('0x18')],function(_0x797828){return{'model':db[_0x797828['model']],'as':_0x797828['as'],'attributes':_0x797828['attributes'],'include':_0x797828[_0x79b6('0x18')]?_[_0x79b6('0x19')](_0x797828[_0x79b6('0x18')],function(_0x4d2061){return{'model':db[_0x4d2061[_0x79b6('0x1a')]],'as':_0x4d2061['as'],'attributes':_0x4d2061[_0x79b6('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x577dfa){logger[_0x79b6('0x9')](_0x79b6('0x13'),_0x505f06);logger[_0x79b6('0xb')](_0x79b6('0x13'),_0x505f06,JSON[_0x79b6('0x1b')](_0x577dfa));_0x55a5b6(_0x577dfa);})['catch'](function(_0xf2d01f){logger[_0x79b6('0xe')](_0x79b6('0x13'),_0xf2d01f[_0x79b6('0x10')],_0x505f06);_0x13178c(_0x376bc6[_0x79b6('0xe')](0x1f4,_0xf2d01f[_0x79b6('0x10')]));});});};
\ No newline at end of file
index 97920c8..ee090c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['update','delete','destroy','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','create','put','/:id'];(function(_0x229354,_0xfe2ef8){var _0x545296=function(_0xe77bef){while(--_0xe77bef){_0x229354['push'](_0x229354['shift']());}};_0x545296(++_0xfe2ef8);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['post']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xb')]);router[_0x0d8b('0xc')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xd'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','/:id'];(function(_0x5e4278,_0x53ed71){var _0x2b35fe=function(_0x172b6f){while(--_0x172b6f){_0x5e4278['push'](_0x5e4278['shift']());}};_0x2b35fe(++_0x53ed71);}(_0x4fc2,0x111));var _0x24fc=function(_0x68a64c,_0x4fa1e1){_0x68a64c=_0x68a64c-0x0;var _0x3acf1f=_0x4fc2[_0x68a64c];return _0x3acf1f;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
index a594425..184352e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d7c=['ENUM','out','sequelize','STRING','TEXT','medium'];(function(_0x561580,_0x3dde94){var _0x258184=function(_0x1d18c3){while(--_0x1d18c3){_0x561580['push'](_0x561580['shift']());}};_0x258184(++_0x3dde94);}(_0x5d7c,0x116));var _0xc5d7=function(_0x4f7bc4,_0x1bcc07){_0x4f7bc4=_0x4f7bc4-0x0;var _0x3b347f=_0x5d7c[_0x4f7bc4];return _0x3b347f;};'use strict';var Sequelize=require(_0xc5d7('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xc5d7('0x1')]},'body':{'type':Sequelize[_0xc5d7('0x2')](_0xc5d7('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0xc5d7('0x4')]('in',_0xc5d7('0x5')),'defaultValue':_0xc5d7('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0xc5d7('0x1')]},'providerResponse':{'type':Sequelize[_0xc5d7('0x2')]}};
\ No newline at end of file
+var _0x50f8=['ENUM','out','sequelize','exports','STRING','TEXT','medium'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x50f8,0x79));var _0x850f=function(_0x1bcfee,_0x1e8f6a){_0x1bcfee=_0x1bcfee-0x0;var _0x175b1b=_0x50f8[_0x1bcfee];return _0x175b1b;};'use strict';var Sequelize=require(_0x850f('0x0'));module[_0x850f('0x1')]={'uniqueid':{'type':Sequelize[_0x850f('0x2')]},'body':{'type':Sequelize[_0x850f('0x3')](_0x850f('0x4')),'allowNull':![]},'direction':{'type':Sequelize[_0x850f('0x5')]('in',_0x850f('0x6')),'defaultValue':_0x850f('0x6'),'allowNull':![]},'providerName':{'type':Sequelize[_0x850f('0x2')]},'providerResponse':{'type':Sequelize[_0x850f('0x3')]}};
\ No newline at end of file
index 7f944e2..bc5f281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61c2=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','sendStatus','error','stack','name','index','map','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','rawAttributes','include','SquareMessage','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','fs-extra'];(function(_0x60df74,_0x458e29){var _0x5ee872=function(_0x356888){while(--_0x356888){_0x60df74['push'](_0x60df74['shift']());}};_0x5ee872(++_0x458e29);}(_0x61c2,0x11f));var _0x261c=function(_0x5a346b,_0x107187){_0x5a346b=_0x5a346b-0x0;var _0x35b2e0=_0x61c2[_0x5a346b];return _0x35b2e0;};'use strict';var emlformat=require(_0x261c('0x0'));var rimraf=require(_0x261c('0x1'));var zipdir=require(_0x261c('0x2'));var jsonpatch=require(_0x261c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x261c('0x4'));var Mustache=require(_0x261c('0x5'));var util=require(_0x261c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x261c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x261c('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x261c('0x9'));var jsforce=require(_0x261c('0xa'));var deskjs=require(_0x261c('0xb'));var toCsv=require(_0x261c('0x7'));var querystring=require(_0x261c('0xc'));var Papa=require(_0x261c('0xd'));var Redis=require(_0x261c('0xe'));var authService=require(_0x261c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x261c('0x10'));var hardwareService=require(_0x261c('0x11'));var logger=require(_0x261c('0x12'))('api');var utils=require(_0x261c('0x13'));var config=require(_0x261c('0x14'));var licenseUtil=require(_0x261c('0x15'));var db=require(_0x261c('0x16'))['db'];function respondWithStatusCode(_0x56e550,_0x3caf40){_0x3caf40=_0x3caf40||0xcc;return function(_0x2f232e){if(_0x2f232e){return _0x56e550['sendStatus'](_0x3caf40);}return _0x56e550[_0x261c('0x17')](_0x3caf40)[_0x261c('0x18')]();};}function respondWithResult(_0x4da031,_0x1c5a24){_0x1c5a24=_0x1c5a24||0xc8;return function(_0x2132df){if(_0x2132df){return _0x4da031[_0x261c('0x17')](_0x1c5a24)[_0x261c('0x19')](_0x2132df);}};}function respondWithFilteredResult(_0x48fd51,_0x3a6ad9){return function(_0x27a3c9){if(_0x27a3c9){var _0x234a12=typeof _0x3a6ad9['offset']===_0x261c('0x1a')&&typeof _0x3a6ad9[_0x261c('0x1b')]===_0x261c('0x1a');var _0x26dad1=_0x27a3c9[_0x261c('0x1c')];var _0x2dd3b6=_0x234a12?0x0:_0x3a6ad9[_0x261c('0x1d')];var _0x5786f0=_0x234a12?_0x27a3c9[_0x261c('0x1c')]:_0x3a6ad9[_0x261c('0x1d')]+_0x3a6ad9[_0x261c('0x1b')];var _0x127202;if(_0x5786f0>=_0x26dad1){_0x5786f0=_0x26dad1;_0x127202=0xc8;}else{_0x127202=0xce;}_0x48fd51['status'](_0x127202);return _0x48fd51[_0x261c('0x1e')](_0x261c('0x1f'),_0x2dd3b6+'-'+_0x5786f0+'/'+_0x26dad1)[_0x261c('0x19')](_0x27a3c9);}return null;};}function patchUpdates(_0x5f3288){return function(_0x4cd1e0){try{jsonpatch[_0x261c('0x20')](_0x4cd1e0,_0x5f3288,!![]);}catch(_0x35bd3f){return BPromise['reject'](_0x35bd3f);}return _0x4cd1e0[_0x261c('0x21')]();};}function saveUpdates(_0x13a947,_0x8fea){return function(_0x5a45da){if(_0x5a45da){return _0x5a45da[_0x261c('0x22')](_0x13a947)['then'](function(_0x513bc3){return _0x513bc3;});}return null;};}function removeEntity(_0x56e7cd,_0x173cbc){return function(_0x398b2c){if(_0x398b2c){return _0x398b2c[_0x261c('0x23')]()[_0x261c('0x24')](function(){_0x56e7cd[_0x261c('0x17')](0xcc)[_0x261c('0x18')]();});}};}function handleEntityNotFound(_0x10a041,_0x5131c9){return function(_0x9cb234){if(!_0x9cb234){_0x10a041[_0x261c('0x25')](0x194);}return _0x9cb234;};}function handleError(_0x1ad2fd,_0x91bdd0){_0x91bdd0=_0x91bdd0||0x1f4;return function(_0x295a25){logger[_0x261c('0x26')](_0x295a25[_0x261c('0x27')]);if(_0x295a25[_0x261c('0x28')]){delete _0x295a25[_0x261c('0x28')];}_0x1ad2fd[_0x261c('0x17')](_0x91bdd0)['send'](_0x295a25);};}exports[_0x261c('0x29')]=function(_0x21147d,_0xbeb7f4){var _0xd8f8a5={},_0x2d66cc={},_0x20a385={'count':0x0,'rows':[]};var _0x28ff6d=_[_0x261c('0x2a')](db['SquareMessage']['rawAttributes'],function(_0x1fd691){return{'name':_0x1fd691[_0x261c('0x2b')],'type':_0x1fd691[_0x261c('0x2c')]['key']};});_0x2d66cc['model']=_[_0x261c('0x2a')](_0x28ff6d,_0x261c('0x28'));_0x2d66cc[_0x261c('0x2d')]=_[_0x261c('0x2e')](_0x21147d['query']);_0x2d66cc[_0x261c('0x2f')]=_[_0x261c('0x30')](_0x2d66cc[_0x261c('0x31')],_0x2d66cc[_0x261c('0x2d')]);_0xd8f8a5['attributes']=_['intersection'](_0x2d66cc[_0x261c('0x31')],qs[_0x261c('0x32')](_0x21147d[_0x261c('0x2d')][_0x261c('0x32')]));_0xd8f8a5['attributes']=_0xd8f8a5[_0x261c('0x33')][_0x261c('0x34')]?_0xd8f8a5[_0x261c('0x33')]:_0x2d66cc['model'];if(!_0x21147d[_0x261c('0x2d')][_0x261c('0x35')]('nolimit')){_0xd8f8a5[_0x261c('0x1b')]=qs[_0x261c('0x1b')](_0x21147d[_0x261c('0x2d')][_0x261c('0x1b')]);_0xd8f8a5['offset']=qs['offset'](_0x21147d['query'][_0x261c('0x1d')]);}_0xd8f8a5[_0x261c('0x36')]=qs[_0x261c('0x37')](_0x21147d[_0x261c('0x2d')][_0x261c('0x37')]);_0xd8f8a5['where']=qs['filters'](_[_0x261c('0x38')](_0x21147d[_0x261c('0x2d')],_0x2d66cc[_0x261c('0x2f')]),_0x28ff6d);if(_0x21147d['query'][_0x261c('0x39')]){_0xd8f8a5[_0x261c('0x3a')]=_[_0x261c('0x3b')](_0xd8f8a5[_0x261c('0x3a')],{'$or':_[_0x261c('0x2a')](_0x28ff6d,function(_0x1d8d14){if(_0x1d8d14[_0x261c('0x2c')]!==_0x261c('0x3c')){var _0x27ecf7={};_0x27ecf7[_0x1d8d14[_0x261c('0x28')]]={'$like':'%'+_0x21147d[_0x261c('0x2d')]['filter']+'%'};return _0x27ecf7;}})});}_0xd8f8a5=_[_0x261c('0x3b')]({},_0xd8f8a5,_0x21147d[_0x261c('0x3d')]);var _0x18c626={'where':_0xd8f8a5['where']};return db['SquareMessage']['count'](_0x18c626)['then'](function(_0x314085){_0x20a385[_0x261c('0x1c')]=_0x314085;if(_0x21147d[_0x261c('0x2d')][_0x261c('0x3e')]){_0xd8f8a5['include']=[{'all':!![]}];}return db['SquareMessage'][_0x261c('0x3f')](_0xd8f8a5);})[_0x261c('0x24')](function(_0x5580fd){_0x20a385[_0x261c('0x40')]=_0x5580fd;return _0x20a385;})['then'](respondWithFilteredResult(_0xbeb7f4,_0xd8f8a5))['catch'](handleError(_0xbeb7f4,null));};exports[_0x261c('0x41')]=function(_0x27a9ba,_0x5b9e6a){var _0x570d92={'raw':!![],'where':{'id':_0x27a9ba[_0x261c('0x42')]['id']}},_0x29364d={};_0x29364d[_0x261c('0x31')]=_[_0x261c('0x2e')](db['SquareMessage'][_0x261c('0x43')]);_0x29364d[_0x261c('0x2d')]=_[_0x261c('0x2e')](_0x27a9ba[_0x261c('0x2d')]);_0x29364d[_0x261c('0x2f')]=_['intersection'](_0x29364d[_0x261c('0x31')],_0x29364d['query']);_0x570d92[_0x261c('0x33')]=_['intersection'](_0x29364d[_0x261c('0x31')],qs[_0x261c('0x32')](_0x27a9ba[_0x261c('0x2d')]['fields']));_0x570d92[_0x261c('0x33')]=_0x570d92['attributes'][_0x261c('0x34')]?_0x570d92['attributes']:_0x29364d[_0x261c('0x31')];if(_0x27a9ba[_0x261c('0x2d')]['includeAll']){_0x570d92[_0x261c('0x44')]=[{'all':!![]}];}_0x570d92=_[_0x261c('0x3b')]({},_0x570d92,_0x27a9ba['options']);return db[_0x261c('0x45')][_0x261c('0x46')](_0x570d92)[_0x261c('0x24')](handleEntityNotFound(_0x5b9e6a,null))[_0x261c('0x24')](respondWithResult(_0x5b9e6a,null))[_0x261c('0x47')](handleError(_0x5b9e6a,null));};exports['create']=function(_0x37a768,_0x3a80dc){return db['SquareMessage'][_0x261c('0x48')](_0x37a768[_0x261c('0x49')],{})[_0x261c('0x24')](respondWithResult(_0x3a80dc,0xc9))[_0x261c('0x47')](handleError(_0x3a80dc,null));};exports[_0x261c('0x22')]=function(_0x23de42,_0x4f09f6){if(_0x23de42[_0x261c('0x49')]['id']){delete _0x23de42[_0x261c('0x49')]['id'];}return db['SquareMessage'][_0x261c('0x46')]({'where':{'id':_0x23de42[_0x261c('0x42')]['id']}})['then'](handleEntityNotFound(_0x4f09f6,null))[_0x261c('0x24')](saveUpdates(_0x23de42[_0x261c('0x49')],null))[_0x261c('0x24')](respondWithResult(_0x4f09f6,null))[_0x261c('0x47')](handleError(_0x4f09f6,null));};exports[_0x261c('0x23')]=function(_0x5780ab,_0x3f3fa4){return db[_0x261c('0x45')][_0x261c('0x46')]({'where':{'id':_0x5780ab[_0x261c('0x42')]['id']}})[_0x261c('0x24')](handleEntityNotFound(_0x3f3fa4,null))['then'](removeEntity(_0x3f3fa4,null))['catch'](handleError(_0x3f3fa4,null));};
\ No newline at end of file
+var _0x1324=['options','findAll','rows','show','params','rawAttributes','includeAll','include','find','catch','create','body','destroy','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','SquareMessage','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0x1324,0x1c3));var _0x4132=function(_0x46d9b5,_0x57a520){_0x46d9b5=_0x46d9b5-0x0;var _0x3ff759=_0x1324[_0x46d9b5];return _0x3ff759;};'use strict';var emlformat=require(_0x4132('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4132('0x1'));var rp=require(_0x4132('0x2'));var moment=require(_0x4132('0x3'));var BPromise=require(_0x4132('0x4'));var Mustache=require(_0x4132('0x5'));var util=require('util');var path=require(_0x4132('0x6'));var sox=require(_0x4132('0x7'));var csv=require(_0x4132('0x8'));var ejs=require(_0x4132('0x9'));var fs=require('fs');var fs_extra=require(_0x4132('0xa'));var _=require(_0x4132('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4132('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4132('0x8'));var querystring=require(_0x4132('0xd'));var Papa=require('papaparse');var Redis=require(_0x4132('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4132('0xf'));var as=require(_0x4132('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4132('0x11'))(_0x4132('0x12'));var utils=require(_0x4132('0x13'));var config=require(_0x4132('0x14'));var licenseUtil=require(_0x4132('0x15'));var db=require(_0x4132('0x16'))['db'];function respondWithStatusCode(_0x301178,_0x19e961){_0x19e961=_0x19e961||0xcc;return function(_0x1808b8){if(_0x1808b8){return _0x301178[_0x4132('0x17')](_0x19e961);}return _0x301178[_0x4132('0x18')](_0x19e961)[_0x4132('0x19')]();};}function respondWithResult(_0x4c3c86,_0xaaf95){_0xaaf95=_0xaaf95||0xc8;return function(_0x1dd361){if(_0x1dd361){return _0x4c3c86[_0x4132('0x18')](_0xaaf95)['json'](_0x1dd361);}};}function respondWithFilteredResult(_0x3e4426,_0x3e74e3){return function(_0x265b45){if(_0x265b45){var _0x55e53b=typeof _0x3e74e3[_0x4132('0x1a')]===_0x4132('0x1b')&&typeof _0x3e74e3['limit']===_0x4132('0x1b');var _0x457377=_0x265b45[_0x4132('0x1c')];var _0x361c26=_0x55e53b?0x0:_0x3e74e3[_0x4132('0x1a')];var _0xa0115c=_0x55e53b?_0x265b45[_0x4132('0x1c')]:_0x3e74e3['offset']+_0x3e74e3[_0x4132('0x1d')];var _0x1d2f12;if(_0xa0115c>=_0x457377){_0xa0115c=_0x457377;_0x1d2f12=0xc8;}else{_0x1d2f12=0xce;}_0x3e4426[_0x4132('0x18')](_0x1d2f12);return _0x3e4426['set'](_0x4132('0x1e'),_0x361c26+'-'+_0xa0115c+'/'+_0x457377)['json'](_0x265b45);}return null;};}function patchUpdates(_0x35eda2){return function(_0x3e12ba){try{jsonpatch[_0x4132('0x1f')](_0x3e12ba,_0x35eda2,!![]);}catch(_0x28ba8e){return BPromise[_0x4132('0x20')](_0x28ba8e);}return _0x3e12ba[_0x4132('0x21')]();};}function saveUpdates(_0x3decae,_0x5be07b){return function(_0x5b79fa){if(_0x5b79fa){return _0x5b79fa[_0x4132('0x22')](_0x3decae)['then'](function(_0x11f8bd){return _0x11f8bd;});}return null;};}function removeEntity(_0x5ca3bc,_0xef5d96){return function(_0x1a584c){if(_0x1a584c){return _0x1a584c['destroy']()[_0x4132('0x23')](function(){_0x5ca3bc[_0x4132('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x757dbf,_0x1174f3){return function(_0x347aab){if(!_0x347aab){_0x757dbf[_0x4132('0x17')](0x194);}return _0x347aab;};}function handleError(_0x582afb,_0x214a2b){_0x214a2b=_0x214a2b||0x1f4;return function(_0x1c99ea){logger[_0x4132('0x24')](_0x1c99ea[_0x4132('0x25')]);if(_0x1c99ea[_0x4132('0x26')]){delete _0x1c99ea[_0x4132('0x26')];}_0x582afb[_0x4132('0x18')](_0x214a2b)['send'](_0x1c99ea);};}exports[_0x4132('0x27')]=function(_0xce20fc,_0x41f3f7){var _0x4cdf5f={},_0x47f787={},_0x137777={'count':0x0,'rows':[]};var _0x264320=_[_0x4132('0x28')](db[_0x4132('0x29')]['rawAttributes'],function(_0x30bf05){return{'name':_0x30bf05[_0x4132('0x2a')],'type':_0x30bf05[_0x4132('0x2b')][_0x4132('0x2c')]};});_0x47f787[_0x4132('0x2d')]=_['map'](_0x264320,_0x4132('0x26'));_0x47f787['query']=_[_0x4132('0x2e')](_0xce20fc['query']);_0x47f787[_0x4132('0x2f')]=_[_0x4132('0x30')](_0x47f787[_0x4132('0x2d')],_0x47f787[_0x4132('0x31')]);_0x4cdf5f[_0x4132('0x32')]=_[_0x4132('0x30')](_0x47f787['model'],qs['fields'](_0xce20fc[_0x4132('0x31')][_0x4132('0x33')]));_0x4cdf5f[_0x4132('0x32')]=_0x4cdf5f[_0x4132('0x32')][_0x4132('0x34')]?_0x4cdf5f[_0x4132('0x32')]:_0x47f787['model'];if(!_0xce20fc[_0x4132('0x31')]['hasOwnProperty'](_0x4132('0x35'))){_0x4cdf5f[_0x4132('0x1d')]=qs[_0x4132('0x1d')](_0xce20fc[_0x4132('0x31')][_0x4132('0x1d')]);_0x4cdf5f[_0x4132('0x1a')]=qs[_0x4132('0x1a')](_0xce20fc['query'][_0x4132('0x1a')]);}_0x4cdf5f[_0x4132('0x36')]=qs['sort'](_0xce20fc[_0x4132('0x31')][_0x4132('0x37')]);_0x4cdf5f[_0x4132('0x38')]=qs['filters'](_[_0x4132('0x39')](_0xce20fc[_0x4132('0x31')],_0x47f787[_0x4132('0x2f')]),_0x264320);if(_0xce20fc[_0x4132('0x31')][_0x4132('0x3a')]){_0x4cdf5f[_0x4132('0x38')]=_[_0x4132('0x3b')](_0x4cdf5f[_0x4132('0x38')],{'$or':_[_0x4132('0x28')](_0x264320,function(_0x548234){if(_0x548234[_0x4132('0x2b')]!=='VIRTUAL'){var _0x18724f={};_0x18724f[_0x548234[_0x4132('0x26')]]={'$like':'%'+_0xce20fc[_0x4132('0x31')][_0x4132('0x3a')]+'%'};return _0x18724f;}})});}_0x4cdf5f=_[_0x4132('0x3b')]({},_0x4cdf5f,_0xce20fc[_0x4132('0x3c')]);var _0x44a7fd={'where':_0x4cdf5f[_0x4132('0x38')]};return db[_0x4132('0x29')][_0x4132('0x1c')](_0x44a7fd)[_0x4132('0x23')](function(_0x37d8b5){_0x137777[_0x4132('0x1c')]=_0x37d8b5;if(_0xce20fc['query']['includeAll']){_0x4cdf5f['include']=[{'all':!![]}];}return db[_0x4132('0x29')][_0x4132('0x3d')](_0x4cdf5f);})[_0x4132('0x23')](function(_0x156669){_0x137777[_0x4132('0x3e')]=_0x156669;return _0x137777;})[_0x4132('0x23')](respondWithFilteredResult(_0x41f3f7,_0x4cdf5f))['catch'](handleError(_0x41f3f7,null));};exports[_0x4132('0x3f')]=function(_0x4baf10,_0x465b8a){var _0x4e9dc0={'raw':!![],'where':{'id':_0x4baf10[_0x4132('0x40')]['id']}},_0x46cdaa={};_0x46cdaa['model']=_[_0x4132('0x2e')](db[_0x4132('0x29')][_0x4132('0x41')]);_0x46cdaa[_0x4132('0x31')]=_[_0x4132('0x2e')](_0x4baf10[_0x4132('0x31')]);_0x46cdaa[_0x4132('0x2f')]=_[_0x4132('0x30')](_0x46cdaa[_0x4132('0x2d')],_0x46cdaa[_0x4132('0x31')]);_0x4e9dc0['attributes']=_[_0x4132('0x30')](_0x46cdaa[_0x4132('0x2d')],qs[_0x4132('0x33')](_0x4baf10[_0x4132('0x31')][_0x4132('0x33')]));_0x4e9dc0[_0x4132('0x32')]=_0x4e9dc0[_0x4132('0x32')]['length']?_0x4e9dc0[_0x4132('0x32')]:_0x46cdaa[_0x4132('0x2d')];if(_0x4baf10[_0x4132('0x31')][_0x4132('0x42')]){_0x4e9dc0[_0x4132('0x43')]=[{'all':!![]}];}_0x4e9dc0=_['merge']({},_0x4e9dc0,_0x4baf10[_0x4132('0x3c')]);return db[_0x4132('0x29')][_0x4132('0x44')](_0x4e9dc0)[_0x4132('0x23')](handleEntityNotFound(_0x465b8a,null))['then'](respondWithResult(_0x465b8a,null))[_0x4132('0x45')](handleError(_0x465b8a,null));};exports[_0x4132('0x46')]=function(_0x132c29,_0x3a3783){return db['SquareMessage']['create'](_0x132c29[_0x4132('0x47')],{})['then'](respondWithResult(_0x3a3783,0xc9))[_0x4132('0x45')](handleError(_0x3a3783,null));};exports['update']=function(_0x5ca958,_0xe1ef72){if(_0x5ca958[_0x4132('0x47')]['id']){delete _0x5ca958[_0x4132('0x47')]['id'];}return db[_0x4132('0x29')][_0x4132('0x44')]({'where':{'id':_0x5ca958[_0x4132('0x40')]['id']}})['then'](handleEntityNotFound(_0xe1ef72,null))['then'](saveUpdates(_0x5ca958[_0x4132('0x47')],null))[_0x4132('0x23')](respondWithResult(_0xe1ef72,null))[_0x4132('0x45')](handleError(_0xe1ef72,null));};exports[_0x4132('0x48')]=function(_0x48f2f3,_0x30b68a){return db['SquareMessage']['find']({'where':{'id':_0x48f2f3[_0x4132('0x40')]['id']}})[_0x4132('0x23')](handleEntityNotFound(_0x30b68a,null))[_0x4132('0x23')](removeEntity(_0x30b68a,null))['catch'](handleError(_0x30b68a,null));};
\ No newline at end of file
index e33b6f9..63252f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f94=['path','rimraf','../../config/environment','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x11ff24,_0x4e7385){var _0x59f49c=function(_0x32dfb8){while(--_0x32dfb8){_0x11ff24['push'](_0x11ff24['shift']());}};_0x59f49c(++_0x4e7385);}(_0x9f94,0x1e7));var _0x49f9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9f94[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x49f9('0x0'));var util=require(_0x49f9('0x1'));var logger=require(_0x49f9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x49f9('0x3'));var rp=require(_0x49f9('0x4'));var fs=require('fs');var path=require(_0x49f9('0x5'));var rimraf=require(_0x49f9('0x6'));var config=require(_0x49f9('0x7'));var attributes=require('./squareMessage.attributes');module[_0x49f9('0x8')]=function(_0x31a7fe,_0x3cd35a){return _0x31a7fe[_0x49f9('0x9')](_0x49f9('0xa'),attributes,{'tableName':_0x49f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd61=['bluebird','request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','moment'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0xcd61,0x1a0));var _0x1cd6=function(_0x4f6ad6,_0x14ea60){_0x4f6ad6=_0x4f6ad6-0x0;var _0x1bc360=_0xcd61[_0x4f6ad6];return _0x1bc360;};'use strict';var _=require(_0x1cd6('0x0'));var util=require(_0x1cd6('0x1'));var logger=require(_0x1cd6('0x2'))('api');var moment=require(_0x1cd6('0x3'));var BPromise=require(_0x1cd6('0x4'));var rp=require(_0x1cd6('0x5'));var fs=require('fs');var path=require(_0x1cd6('0x6'));var rimraf=require(_0x1cd6('0x7'));var config=require(_0x1cd6('0x8'));var attributes=require(_0x1cd6('0x9'));module[_0x1cd6('0xa')]=function(_0x394ce6,_0x50ae46){return _0x394ce6[_0x1cd6('0xb')](_0x1cd6('0xc'),attributes,{'tableName':_0x1cd6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 51b2b04..ca7baff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87c4=['message','result','SquareMessage','create','body','options','raw','CreateSquareMessage','stringify','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x41d876,_0x3854cd){var _0x1b63ee=function(_0x2c9710){while(--_0x2c9710){_0x41d876['push'](_0x41d876['shift']());}};_0x1b63ee(++_0x3854cd);}(_0x87c4,0x7a));var _0x487c=function(_0x56f1a9,_0x18ab59){_0x56f1a9=_0x56f1a9-0x0;var _0x3df1e9=_0x87c4[_0x56f1a9];return _0x3df1e9;};'use strict';var _=require(_0x487c('0x0'));var util=require(_0x487c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x487c('0x2'));var fs=require('fs');var Redis=require(_0x487c('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x487c('0x4'));var logger=require(_0x487c('0x5'))('rpc');var config=require(_0x487c('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x487c('0x7')][_0x487c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3bd15c,_0x560320,_0x5a9521){return new BPromise(function(_0x23c0d8,_0x39cbf9){return client[_0x487c('0x9')](_0x3bd15c,_0x5a9521)[_0x487c('0xa')](function(_0x331b0b){logger[_0x487c('0xb')](_0x487c('0xc'),_0x560320,'request\x20sent');logger[_0x487c('0xd')](_0x487c('0xe'),_0x560320,_0x487c('0xf'),JSON['stringify'](_0x331b0b));if(_0x331b0b['error']){if(_0x331b0b[_0x487c('0x10')][_0x487c('0x11')]===0x1f4){logger[_0x487c('0x10')](_0x487c('0xc'),_0x560320,_0x331b0b[_0x487c('0x10')]['message']);return _0x39cbf9(_0x331b0b[_0x487c('0x10')][_0x487c('0x12')]);}logger['error'](_0x487c('0xc'),_0x560320,_0x331b0b['error'][_0x487c('0x12')]);return _0x23c0d8(_0x331b0b[_0x487c('0x10')]['message']);}else{logger[_0x487c('0xb')](_0x487c('0xc'),_0x560320,'request\x20sent');_0x23c0d8(_0x331b0b[_0x487c('0x13')][_0x487c('0x12')]);}})['catch'](function(_0x4edfff){logger['error'](_0x487c('0xc'),_0x560320,_0x4edfff);_0x39cbf9(_0x4edfff);});});}exports['CreateSquareMessage']=function(_0x5308db){var _0x3b1e63=this;return new Promise(function(_0x18f768,_0x231fd3){return db[_0x487c('0x14')][_0x487c('0x15')](_0x5308db[_0x487c('0x16')],{'raw':_0x5308db['options']?_0x5308db[_0x487c('0x17')][_0x487c('0x18')]===undefined?!![]:![]:!![]})[_0x487c('0xa')](function(_0x397948){logger['info'](_0x487c('0x19'),_0x5308db);logger[_0x487c('0xd')](_0x487c('0x19'),_0x5308db,JSON[_0x487c('0x1a')](_0x397948));_0x18f768(_0x397948);})[_0x487c('0x1b')](function(_0x5aa103){logger[_0x487c('0x10')](_0x487c('0x19'),_0x5aa103['message'],_0x5308db);_0x231fd3(_0x3b1e63[_0x487c('0x10')](0x1f4,_0x5aa103['message']));});});};
\ No newline at end of file
+var _0xa042=['../../config/environment','jayson/promise','client','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareMessage','body','options','raw','debug','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x241f51,_0x236794){var _0x21b813=function(_0xc68971){while(--_0xc68971){_0x241f51['push'](_0x241f51['shift']());}};_0x21b813(++_0x236794);}(_0xa042,0x124));var _0x2a04=function(_0x449a95,_0x1030d7){_0x449a95=_0x449a95-0x0;var _0x71f2f=_0xa042[_0x449a95];return _0x71f2f;};'use strict';var _=require(_0x2a04('0x0'));var util=require(_0x2a04('0x1'));var moment=require(_0x2a04('0x2'));var BPromise=require('bluebird');var rs=require(_0x2a04('0x3'));var fs=require('fs');var Redis=require(_0x2a04('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2a04('0x5'));var logger=require(_0x2a04('0x6'))(_0x2a04('0x7'));var config=require(_0x2a04('0x8'));var jayson=require(_0x2a04('0x9'));var client=jayson[_0x2a04('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a2cc7,_0x479ee5,_0x2dff21){return new BPromise(function(_0x520f7b,_0x1feac2){return client['request'](_0x2a2cc7,_0x2dff21)['then'](function(_0x247382){logger[_0x2a04('0xb')](_0x2a04('0xc'),_0x479ee5,_0x2a04('0xd'));logger['debug'](_0x2a04('0xe'),_0x479ee5,'request\x20sent',JSON[_0x2a04('0xf')](_0x247382));if(_0x247382['error']){if(_0x247382[_0x2a04('0x10')][_0x2a04('0x11')]===0x1f4){logger['error'](_0x2a04('0xc'),_0x479ee5,_0x247382['error'][_0x2a04('0x12')]);return _0x1feac2(_0x247382['error'][_0x2a04('0x12')]);}logger['error'](_0x2a04('0xc'),_0x479ee5,_0x247382['error'][_0x2a04('0x12')]);return _0x520f7b(_0x247382[_0x2a04('0x10')]['message']);}else{logger['info'](_0x2a04('0xc'),_0x479ee5,_0x2a04('0xd'));_0x520f7b(_0x247382['result'][_0x2a04('0x12')]);}})[_0x2a04('0x13')](function(_0x2e15e6){logger[_0x2a04('0x10')]('SquareMessage,\x20%s,\x20%s',_0x479ee5,_0x2e15e6);_0x1feac2(_0x2e15e6);});});}exports[_0x2a04('0x14')]=function(_0x4e502f){var _0x5c6538=this;return new Promise(function(_0x21b532,_0x4ce962){return db['SquareMessage']['create'](_0x4e502f[_0x2a04('0x15')],{'raw':_0x4e502f[_0x2a04('0x16')]?_0x4e502f[_0x2a04('0x16')][_0x2a04('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x563751){logger[_0x2a04('0xb')](_0x2a04('0x14'),_0x4e502f);logger[_0x2a04('0x18')](_0x2a04('0x14'),_0x4e502f,JSON['stringify'](_0x563751));_0x21b532(_0x563751);})[_0x2a04('0x13')](function(_0x833f4b){logger[_0x2a04('0x10')](_0x2a04('0x14'),_0x833f4b[_0x2a04('0x12')],_0x4e502f);_0x4ce962(_0x5c6538[_0x2a04('0x10')](0x1f4,_0x833f4b[_0x2a04('0x12')]));});});};
\ No newline at end of file
index 93a7148..744dd7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0212=['show','/:id/test','post','create','put','update','/:id','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','index','get','isAuthenticated'];(function(_0x98ffc0,_0x19254c){var _0x44ac31=function(_0x50b8ab){while(--_0x50b8ab){_0x98ffc0['push'](_0x98ffc0['shift']());}};_0x44ac31(++_0x19254c);}(_0x0212,0xe5));var _0x2021=function(_0x18a536,_0x2acb01){_0x18a536=_0x18a536-0x0;var _0x5bbf23=_0x0212[_0x18a536];return _0x5bbf23;};'use strict';var multer=require('multer');var util=require(_0x2021('0x0'));var path=require(_0x2021('0x1'));var timeout=require(_0x2021('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2021('0x3'));var auth=require(_0x2021('0x4'));var interaction=require(_0x2021('0x5'));var config=require(_0x2021('0x6'));var controller=require(_0x2021('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x2021('0x8')]);router[_0x2021('0x9')]('/:id',auth[_0x2021('0xa')](),controller[_0x2021('0xb')]);router[_0x2021('0x9')](_0x2021('0xc'),auth['isAuthenticated'](),timeout('15s'),controller['test']);router[_0x2021('0xd')]('/',auth[_0x2021('0xa')](),controller[_0x2021('0xe')]);router[_0x2021('0xf')]('/:id',auth[_0x2021('0xa')](),controller[_0x2021('0x10')]);router['delete'](_0x2021('0x11'),auth[_0x2021('0xa')](),controller[_0x2021('0x12')]);module[_0x2021('0x13')]=router;
\ No newline at end of file
+var _0x203c=['express','Router','fs-extra','../../components/auth/service','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','test','post','create','delete','destroy','multer','util','path','connect-timeout'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x203c,0x74));var _0xc203=function(_0x39b732,_0x4fff2c){_0x39b732=_0x39b732-0x0;var _0x20176d=_0x203c[_0x39b732];return _0x20176d;};'use strict';var multer=require(_0xc203('0x0'));var util=require(_0xc203('0x1'));var path=require(_0xc203('0x2'));var timeout=require(_0xc203('0x3'));var express=require(_0xc203('0x4'));var router=express[_0xc203('0x5')]();var fs_extra=require(_0xc203('0x6'));var auth=require(_0xc203('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc203('0x8'));router[_0xc203('0x9')]('/',auth[_0xc203('0xa')](),controller[_0xc203('0xb')]);router['get'](_0xc203('0xc'),auth[_0xc203('0xa')](),controller[_0xc203('0xd')]);router[_0xc203('0x9')](_0xc203('0xe'),auth['isAuthenticated'](),timeout('15s'),controller[_0xc203('0xf')]);router[_0xc203('0x10')]('/',auth['isAuthenticated'](),controller[_0xc203('0x11')]);router['put'](_0xc203('0xc'),auth[_0xc203('0xa')](),controller['update']);router[_0xc203('0x12')](_0xc203('0xc'),auth[_0xc203('0xa')](),controller[_0xc203('0x13')]);module['exports']=router;
\ No newline at end of file
index 524efb3..637ca0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cf9=['STRING','name'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0x3cf9,0x162));var _0x93cf=function(_0x528efd,_0x58f433){_0x528efd=_0x528efd-0x0;var _0x2c1e04=_0x3cf9[_0x528efd];return _0x2c1e04;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x93cf('0x0')],'unique':_0x93cf('0x1'),'allowNull':![]},'dsn':{'type':Sequelize[_0x93cf('0x0')]},'description':{'type':Sequelize[_0x93cf('0x0')]}};
\ No newline at end of file
+var _0x3da7=['sequelize','STRING','name'];(function(_0x42a899,_0x4a084d){var _0x22c1f9=function(_0x407e8d){while(--_0x407e8d){_0x42a899['push'](_0x42a899['shift']());}};_0x22c1f9(++_0x4a084d);}(_0x3da7,0x14a));var _0x73da=function(_0x4ae829,_0x2c842c){_0x4ae829=_0x4ae829-0x0;var _0x256b31=_0x3da7[_0x4ae829];return _0x256b31;};'use strict';var Sequelize=require(_0x73da('0x0'));module['exports']={'name':{'type':Sequelize[_0x73da('0x1')],'unique':_0x73da('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x73da('0x1')]},'description':{'type':Sequelize[_0x73da('0x1')]}};
\ No newline at end of file
index f428011..59c0556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec31=['test','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','reject','update','then','destroy','ODBC','UserProfileResource','end','error','name','send','index','rawAttributes','fieldName','type','key','map','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','SquareOdbc','includeAll','include','findAll','rows','catch','show','params','keys','length','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find'];(function(_0x17df0c,_0x328b96){var _0x58d9d9=function(_0x16894c){while(--_0x16894c){_0x17df0c['push'](_0x17df0c['shift']());}};_0x58d9d9(++_0x328b96);}(_0xec31,0xbb));var _0x1ec3=function(_0x3c6a95,_0x20bd63){_0x3c6a95=_0x3c6a95-0x0;var _0x5e0021=_0xec31[_0x3c6a95];return _0x5e0021;};'use strict';var emlformat=require(_0x1ec3('0x0'));var rimraf=require(_0x1ec3('0x1'));var zipdir=require(_0x1ec3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1ec3('0x3'));var moment=require(_0x1ec3('0x4'));var BPromise=require(_0x1ec3('0x5'));var Mustache=require(_0x1ec3('0x6'));var util=require('util');var path=require(_0x1ec3('0x7'));var sox=require(_0x1ec3('0x8'));var csv=require(_0x1ec3('0x9'));var ejs=require(_0x1ec3('0xa'));var fs=require('fs');var fs_extra=require(_0x1ec3('0xb'));var _=require('lodash');var squel=require(_0x1ec3('0xc'));var crypto=require(_0x1ec3('0xd'));var jsforce=require(_0x1ec3('0xe'));var deskjs=require(_0x1ec3('0xf'));var toCsv=require(_0x1ec3('0x9'));var querystring=require(_0x1ec3('0x10'));var Papa=require(_0x1ec3('0x11'));var Redis=require(_0x1ec3('0x12'));var authService=require(_0x1ec3('0x13'));var qs=require(_0x1ec3('0x14'));var as=require(_0x1ec3('0x15'));var hardwareService=require(_0x1ec3('0x16'));var logger=require(_0x1ec3('0x17'))(_0x1ec3('0x18'));var utils=require('../../config/utils');var config=require(_0x1ec3('0x19'));var licenseUtil=require(_0x1ec3('0x1a'));var db=require(_0x1ec3('0x1b'))['db'];function respondWithStatusCode(_0xd8b505,_0x15738c){_0x15738c=_0x15738c||0xcc;return function(_0x339198){if(_0x339198){return _0xd8b505[_0x1ec3('0x1c')](_0x15738c);}return _0xd8b505['status'](_0x15738c)['end']();};}function respondWithResult(_0x545fc6,_0xa63754){_0xa63754=_0xa63754||0xc8;return function(_0xbfb974){if(_0xbfb974){return _0x545fc6[_0x1ec3('0x1d')](_0xa63754)[_0x1ec3('0x1e')](_0xbfb974);}};}function respondWithFilteredResult(_0x1d22b6,_0x103b54){return function(_0x4e1bcf){if(_0x4e1bcf){var _0x39c818=typeof _0x103b54[_0x1ec3('0x1f')]===_0x1ec3('0x20')&&typeof _0x103b54[_0x1ec3('0x21')]===_0x1ec3('0x20');var _0x2b6d0e=_0x4e1bcf[_0x1ec3('0x22')];var _0x461b55=_0x39c818?0x0:_0x103b54[_0x1ec3('0x1f')];var _0x4daa78=_0x39c818?_0x4e1bcf[_0x1ec3('0x22')]:_0x103b54[_0x1ec3('0x1f')]+_0x103b54['limit'];var _0xa09a0a;if(_0x4daa78>=_0x2b6d0e){_0x4daa78=_0x2b6d0e;_0xa09a0a=0xc8;}else{_0xa09a0a=0xce;}_0x1d22b6[_0x1ec3('0x1d')](_0xa09a0a);return _0x1d22b6['set']('Content-Range',_0x461b55+'-'+_0x4daa78+'/'+_0x2b6d0e)[_0x1ec3('0x1e')](_0x4e1bcf);}return null;};}function patchUpdates(_0x1e4f7e){return function(_0x17bb56){try{jsonpatch['apply'](_0x17bb56,_0x1e4f7e,!![]);}catch(_0x2e97a8){return BPromise[_0x1ec3('0x23')](_0x2e97a8);}return _0x17bb56['save']();};}function saveUpdates(_0xaec800,_0x1ef708){return function(_0xee35be){if(_0xee35be){return _0xee35be[_0x1ec3('0x24')](_0xaec800)[_0x1ec3('0x25')](function(_0x4d5080){return _0x4d5080;});}return null;};}function removeEntity(_0x357566,_0x5a6890){return function(_0x430c65){if(_0x430c65){return _0x430c65[_0x1ec3('0x26')]()[_0x1ec3('0x25')](function(){var _0x5db992=_0x430c65['get']({'plain':!![]});var _0x441329=_0x1ec3('0x27');return db[_0x1ec3('0x28')]['destroy']({'where':{'type':_0x441329,'resourceId':_0x5db992['id']}})[_0x1ec3('0x25')](function(){return _0x430c65;});})['then'](function(){_0x357566[_0x1ec3('0x1d')](0xcc)[_0x1ec3('0x29')]();});}};}function handleEntityNotFound(_0xec4fe7,_0x555e2d){return function(_0x5319fd){if(!_0x5319fd){_0xec4fe7[_0x1ec3('0x1c')](0x194);}return _0x5319fd;};}function handleError(_0x6d5172,_0x1489a1){_0x1489a1=_0x1489a1||0x1f4;return function(_0x372c37){logger[_0x1ec3('0x2a')](_0x372c37['stack']);if(_0x372c37['name']){delete _0x372c37[_0x1ec3('0x2b')];}_0x6d5172[_0x1ec3('0x1d')](_0x1489a1)[_0x1ec3('0x2c')](_0x372c37);};}exports[_0x1ec3('0x2d')]=function(_0x3e619e,_0x27cb22){var _0x589e9b={},_0x2058b6={},_0xe23b5c={'count':0x0,'rows':[]};var _0x4ff0c5=_['map'](db['SquareOdbc'][_0x1ec3('0x2e')],function(_0x4dca20){return{'name':_0x4dca20[_0x1ec3('0x2f')],'type':_0x4dca20[_0x1ec3('0x30')][_0x1ec3('0x31')]};});_0x2058b6['model']=_[_0x1ec3('0x32')](_0x4ff0c5,_0x1ec3('0x2b'));_0x2058b6[_0x1ec3('0x33')]=_['keys'](_0x3e619e[_0x1ec3('0x33')]);_0x2058b6[_0x1ec3('0x34')]=_[_0x1ec3('0x35')](_0x2058b6[_0x1ec3('0x36')],_0x2058b6[_0x1ec3('0x33')]);_0x589e9b[_0x1ec3('0x37')]=_[_0x1ec3('0x35')](_0x2058b6[_0x1ec3('0x36')],qs[_0x1ec3('0x38')](_0x3e619e['query'][_0x1ec3('0x38')]));_0x589e9b[_0x1ec3('0x37')]=_0x589e9b[_0x1ec3('0x37')]['length']?_0x589e9b[_0x1ec3('0x37')]:_0x2058b6[_0x1ec3('0x36')];if(!_0x3e619e['query'][_0x1ec3('0x39')]('nolimit')){_0x589e9b[_0x1ec3('0x21')]=qs[_0x1ec3('0x21')](_0x3e619e['query'][_0x1ec3('0x21')]);_0x589e9b[_0x1ec3('0x1f')]=qs[_0x1ec3('0x1f')](_0x3e619e[_0x1ec3('0x33')][_0x1ec3('0x1f')]);}_0x589e9b[_0x1ec3('0x3a')]=qs[_0x1ec3('0x3b')](_0x3e619e[_0x1ec3('0x33')][_0x1ec3('0x3b')]);_0x589e9b[_0x1ec3('0x3c')]=qs[_0x1ec3('0x34')](_[_0x1ec3('0x3d')](_0x3e619e[_0x1ec3('0x33')],_0x2058b6[_0x1ec3('0x34')]),_0x4ff0c5);if(_0x3e619e[_0x1ec3('0x33')][_0x1ec3('0x3e')]){_0x589e9b['where']=_[_0x1ec3('0x3f')](_0x589e9b[_0x1ec3('0x3c')],{'$or':_[_0x1ec3('0x32')](_0x4ff0c5,function(_0x36bf52){if(_0x36bf52[_0x1ec3('0x30')]!=='VIRTUAL'){var _0x5b2eaf={};_0x5b2eaf[_0x36bf52['name']]={'$like':'%'+_0x3e619e[_0x1ec3('0x33')][_0x1ec3('0x3e')]+'%'};return _0x5b2eaf;}})});}_0x589e9b=_[_0x1ec3('0x3f')]({},_0x589e9b,_0x3e619e[_0x1ec3('0x40')]);var _0x281ca1={'where':_0x589e9b[_0x1ec3('0x3c')]};return db[_0x1ec3('0x41')][_0x1ec3('0x22')](_0x281ca1)[_0x1ec3('0x25')](function(_0x961fc3){_0xe23b5c[_0x1ec3('0x22')]=_0x961fc3;if(_0x3e619e[_0x1ec3('0x33')][_0x1ec3('0x42')]){_0x589e9b[_0x1ec3('0x43')]=[{'all':!![]}];}return db['SquareOdbc'][_0x1ec3('0x44')](_0x589e9b);})[_0x1ec3('0x25')](function(_0x14eb63){_0xe23b5c[_0x1ec3('0x45')]=_0x14eb63;return _0xe23b5c;})[_0x1ec3('0x25')](respondWithFilteredResult(_0x27cb22,_0x589e9b))[_0x1ec3('0x46')](handleError(_0x27cb22,null));};exports[_0x1ec3('0x47')]=function(_0x693f23,_0x461e46){var _0x2d99be={'raw':!![],'where':{'id':_0x693f23[_0x1ec3('0x48')]['id']}},_0x5eae1c={};_0x5eae1c[_0x1ec3('0x36')]=_[_0x1ec3('0x49')](db[_0x1ec3('0x41')][_0x1ec3('0x2e')]);_0x5eae1c[_0x1ec3('0x33')]=_[_0x1ec3('0x49')](_0x693f23[_0x1ec3('0x33')]);_0x5eae1c['filters']=_[_0x1ec3('0x35')](_0x5eae1c[_0x1ec3('0x36')],_0x5eae1c[_0x1ec3('0x33')]);_0x2d99be[_0x1ec3('0x37')]=_[_0x1ec3('0x35')](_0x5eae1c['model'],qs['fields'](_0x693f23[_0x1ec3('0x33')][_0x1ec3('0x38')]));_0x2d99be[_0x1ec3('0x37')]=_0x2d99be[_0x1ec3('0x37')][_0x1ec3('0x4a')]?_0x2d99be['attributes']:_0x5eae1c[_0x1ec3('0x36')];if(_0x693f23[_0x1ec3('0x33')][_0x1ec3('0x42')]){_0x2d99be['include']=[{'all':!![]}];}_0x2d99be=_[_0x1ec3('0x3f')]({},_0x2d99be,_0x693f23['options']);return db[_0x1ec3('0x41')]['find'](_0x2d99be)['then'](handleEntityNotFound(_0x461e46,null))['then'](respondWithResult(_0x461e46,null))[_0x1ec3('0x46')](handleError(_0x461e46,null));};exports[_0x1ec3('0x4b')]=function(_0x2c7be3,_0x3c2060){return db['SquareOdbc'][_0x1ec3('0x4b')](_0x2c7be3[_0x1ec3('0x4c')],{})[_0x1ec3('0x25')](function(_0x13620b){var _0x325bb7=_0x2c7be3[_0x1ec3('0x4d')][_0x1ec3('0x4e')]({'plain':!![]});if(!_0x325bb7)throw new Error(_0x1ec3('0x4f'));if(_0x325bb7[_0x1ec3('0x50')]===_0x1ec3('0x4d')){var _0xcc692c=_0x13620b[_0x1ec3('0x4e')]({'plain':!![]});var _0x43ded7=_0x1ec3('0x27');return db[_0x1ec3('0x51')]['find']({'where':{'name':_0x43ded7,'userProfileId':_0x325bb7[_0x1ec3('0x52')]},'raw':!![]})[_0x1ec3('0x25')](function(_0x538682){if(_0x538682&&_0x538682[_0x1ec3('0x53')]===0x0){return db[_0x1ec3('0x28')][_0x1ec3('0x4b')]({'name':_0xcc692c[_0x1ec3('0x2b')],'resourceId':_0xcc692c['id'],'type':_0x538682['name'],'sectionId':_0x538682['id']},{})[_0x1ec3('0x25')](function(){return _0x13620b;});}else{return _0x13620b;}})[_0x1ec3('0x46')](function(_0x5d241a){logger[_0x1ec3('0x2a')](_0x1ec3('0x54'),_0x5d241a);throw _0x5d241a;});}return _0x13620b;})['then'](respondWithResult(_0x3c2060,0xc9))['catch'](handleError(_0x3c2060,null));};exports[_0x1ec3('0x24')]=function(_0x6b57e9,_0x569cab){if(_0x6b57e9[_0x1ec3('0x4c')]['id']){delete _0x6b57e9[_0x1ec3('0x4c')]['id'];}return db['SquareOdbc'][_0x1ec3('0x55')]({'where':{'id':_0x6b57e9['params']['id']}})['then'](handleEntityNotFound(_0x569cab,null))['then'](saveUpdates(_0x6b57e9['body'],null))[_0x1ec3('0x25')](respondWithResult(_0x569cab,null))[_0x1ec3('0x46')](handleError(_0x569cab,null));};exports[_0x1ec3('0x26')]=function(_0x27ac32,_0x27264c){return db[_0x1ec3('0x41')][_0x1ec3('0x55')]({'where':{'id':_0x27ac32[_0x1ec3('0x48')]['id']}})[_0x1ec3('0x25')](handleEntityNotFound(_0x27264c,null))[_0x1ec3('0x25')](removeEntity(_0x27264c,null))[_0x1ec3('0x46')](handleError(_0x27264c,null));};exports[_0x1ec3('0x56')]=function(_0x367735,_0x319f0d,_0x379389){var _0x5af6e9;return db['SquareOdbc'][_0x1ec3('0x55')]({'where':{'id':_0x367735['params']['id']},'attributes':['id',_0x1ec3('0x57')]})[_0x1ec3('0x25')](handleEntityNotFound(_0x319f0d,null))[_0x1ec3('0x25')](function(_0x568068){if(_0x568068){var _0x2919e2=require(_0x1ec3('0x58'))();_0x2919e2[_0x1ec3('0x59')](_0x568068[_0x1ec3('0x57')]);_0x2919e2[_0x1ec3('0x5a')]();return _0x568068;}})[_0x1ec3('0x25')](respondWithResult(_0x319f0d,null))[_0x1ec3('0x46')](handleError(_0x319f0d,null));};
\ No newline at end of file
+var _0xc0a0=['fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','ODBC','end','error','stack','name','index','map','SquareOdbc','rawAttributes','key','model','query','keys','intersection','attributes'];(function(_0x22c976,_0x49aeef){var _0x26cfb8=function(_0x427798){while(--_0x427798){_0x22c976['push'](_0x22c976['shift']());}};_0x26cfb8(++_0x49aeef);}(_0xc0a0,0xcd));var _0x0c0a=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xc0a0[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x0c0a('0x0'));var rimraf=require(_0x0c0a('0x1'));var zipdir=require(_0x0c0a('0x2'));var jsonpatch=require(_0x0c0a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0c0a('0x4'));var Mustache=require(_0x0c0a('0x5'));var util=require(_0x0c0a('0x6'));var path=require(_0x0c0a('0x7'));var sox=require(_0x0c0a('0x8'));var csv=require(_0x0c0a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0c0a('0xa'));var squel=require(_0x0c0a('0xb'));var crypto=require('crypto');var jsforce=require(_0x0c0a('0xc'));var deskjs=require(_0x0c0a('0xd'));var toCsv=require(_0x0c0a('0x9'));var querystring=require('querystring');var Papa=require(_0x0c0a('0xe'));var Redis=require(_0x0c0a('0xf'));var authService=require(_0x0c0a('0x10'));var qs=require(_0x0c0a('0x11'));var as=require(_0x0c0a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0c0a('0x13'))(_0x0c0a('0x14'));var utils=require('../../config/utils');var config=require(_0x0c0a('0x15'));var licenseUtil=require(_0x0c0a('0x16'));var db=require(_0x0c0a('0x17'))['db'];function respondWithStatusCode(_0x65c7ec,_0x380b96){_0x380b96=_0x380b96||0xcc;return function(_0x3ce064){if(_0x3ce064){return _0x65c7ec['sendStatus'](_0x380b96);}return _0x65c7ec[_0x0c0a('0x18')](_0x380b96)['end']();};}function respondWithResult(_0x37a864,_0x2165d2){_0x2165d2=_0x2165d2||0xc8;return function(_0x5c5ff7){if(_0x5c5ff7){return _0x37a864[_0x0c0a('0x18')](_0x2165d2)[_0x0c0a('0x19')](_0x5c5ff7);}};}function respondWithFilteredResult(_0x4765ad,_0x2f6fb0){return function(_0x29dcdd){if(_0x29dcdd){var _0x3362d6=typeof _0x2f6fb0[_0x0c0a('0x1a')]==='undefined'&&typeof _0x2f6fb0[_0x0c0a('0x1b')]===_0x0c0a('0x1c');var _0x23d6e2=_0x29dcdd[_0x0c0a('0x1d')];var _0x3234cb=_0x3362d6?0x0:_0x2f6fb0[_0x0c0a('0x1a')];var _0x38b158=_0x3362d6?_0x29dcdd[_0x0c0a('0x1d')]:_0x2f6fb0['offset']+_0x2f6fb0[_0x0c0a('0x1b')];var _0x3eb244;if(_0x38b158>=_0x23d6e2){_0x38b158=_0x23d6e2;_0x3eb244=0xc8;}else{_0x3eb244=0xce;}_0x4765ad[_0x0c0a('0x18')](_0x3eb244);return _0x4765ad[_0x0c0a('0x1e')](_0x0c0a('0x1f'),_0x3234cb+'-'+_0x38b158+'/'+_0x23d6e2)[_0x0c0a('0x19')](_0x29dcdd);}return null;};}function patchUpdates(_0x425b06){return function(_0x30334f){try{jsonpatch[_0x0c0a('0x20')](_0x30334f,_0x425b06,!![]);}catch(_0x4eaecf){return BPromise[_0x0c0a('0x21')](_0x4eaecf);}return _0x30334f['save']();};}function saveUpdates(_0x5d556d,_0x51fabc){return function(_0x100323){if(_0x100323){return _0x100323[_0x0c0a('0x22')](_0x5d556d)[_0x0c0a('0x23')](function(_0xe893a9){return _0xe893a9;});}return null;};}function removeEntity(_0x1c5224,_0x5b21c7){return function(_0x31ca49){if(_0x31ca49){return _0x31ca49[_0x0c0a('0x24')]()[_0x0c0a('0x23')](function(){var _0x1a51be=_0x31ca49[_0x0c0a('0x25')]({'plain':!![]});var _0x269136=_0x0c0a('0x26');return db['UserProfileResource'][_0x0c0a('0x24')]({'where':{'type':_0x269136,'resourceId':_0x1a51be['id']}})[_0x0c0a('0x23')](function(){return _0x31ca49;});})[_0x0c0a('0x23')](function(){_0x1c5224[_0x0c0a('0x18')](0xcc)[_0x0c0a('0x27')]();});}};}function handleEntityNotFound(_0xffaa52,_0x10286c){return function(_0x8427e3){if(!_0x8427e3){_0xffaa52['sendStatus'](0x194);}return _0x8427e3;};}function handleError(_0x2bc7c3,_0x1d4707){_0x1d4707=_0x1d4707||0x1f4;return function(_0x3f9230){logger[_0x0c0a('0x28')](_0x3f9230[_0x0c0a('0x29')]);if(_0x3f9230[_0x0c0a('0x2a')]){delete _0x3f9230[_0x0c0a('0x2a')];}_0x2bc7c3['status'](_0x1d4707)['send'](_0x3f9230);};}exports[_0x0c0a('0x2b')]=function(_0x4b7e85,_0x258f01){var _0x5af2a0={},_0x5b3bae={},_0x3f852a={'count':0x0,'rows':[]};var _0x159817=_[_0x0c0a('0x2c')](db[_0x0c0a('0x2d')][_0x0c0a('0x2e')],function(_0x5318f7){return{'name':_0x5318f7['fieldName'],'type':_0x5318f7['type'][_0x0c0a('0x2f')]};});_0x5b3bae[_0x0c0a('0x30')]=_['map'](_0x159817,_0x0c0a('0x2a'));_0x5b3bae[_0x0c0a('0x31')]=_[_0x0c0a('0x32')](_0x4b7e85[_0x0c0a('0x31')]);_0x5b3bae['filters']=_[_0x0c0a('0x33')](_0x5b3bae[_0x0c0a('0x30')],_0x5b3bae[_0x0c0a('0x31')]);_0x5af2a0[_0x0c0a('0x34')]=_[_0x0c0a('0x33')](_0x5b3bae[_0x0c0a('0x30')],qs[_0x0c0a('0x35')](_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x35')]));_0x5af2a0['attributes']=_0x5af2a0[_0x0c0a('0x34')][_0x0c0a('0x36')]?_0x5af2a0[_0x0c0a('0x34')]:_0x5b3bae[_0x0c0a('0x30')];if(!_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x37')](_0x0c0a('0x38'))){_0x5af2a0[_0x0c0a('0x1b')]=qs[_0x0c0a('0x1b')](_0x4b7e85['query'][_0x0c0a('0x1b')]);_0x5af2a0[_0x0c0a('0x1a')]=qs[_0x0c0a('0x1a')](_0x4b7e85[_0x0c0a('0x31')]['offset']);}_0x5af2a0[_0x0c0a('0x39')]=qs[_0x0c0a('0x3a')](_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x3a')]);_0x5af2a0[_0x0c0a('0x3b')]=qs['filters'](_['pick'](_0x4b7e85[_0x0c0a('0x31')],_0x5b3bae[_0x0c0a('0x3c')]),_0x159817);if(_0x4b7e85[_0x0c0a('0x31')]['filter']){_0x5af2a0[_0x0c0a('0x3b')]=_[_0x0c0a('0x3d')](_0x5af2a0[_0x0c0a('0x3b')],{'$or':_[_0x0c0a('0x2c')](_0x159817,function(_0x3f0d49){if(_0x3f0d49['type']!==_0x0c0a('0x3e')){var _0x330c02={};_0x330c02[_0x3f0d49['name']]={'$like':'%'+_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x3f')]+'%'};return _0x330c02;}})});}_0x5af2a0=_[_0x0c0a('0x3d')]({},_0x5af2a0,_0x4b7e85['options']);var _0x45762a={'where':_0x5af2a0[_0x0c0a('0x3b')]};return db[_0x0c0a('0x2d')]['count'](_0x45762a)[_0x0c0a('0x23')](function(_0x35174e){_0x3f852a[_0x0c0a('0x1d')]=_0x35174e;if(_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x40')]){_0x5af2a0[_0x0c0a('0x41')]=[{'all':!![]}];}return db['SquareOdbc'][_0x0c0a('0x42')](_0x5af2a0);})['then'](function(_0x199d46){_0x3f852a[_0x0c0a('0x43')]=_0x199d46;return _0x3f852a;})[_0x0c0a('0x23')](respondWithFilteredResult(_0x258f01,_0x5af2a0))[_0x0c0a('0x44')](handleError(_0x258f01,null));};exports['show']=function(_0x9cf3ee,_0x13de07){var _0x615a53={'raw':!![],'where':{'id':_0x9cf3ee['params']['id']}},_0x4380fe={};_0x4380fe[_0x0c0a('0x30')]=_[_0x0c0a('0x32')](db[_0x0c0a('0x2d')][_0x0c0a('0x2e')]);_0x4380fe[_0x0c0a('0x31')]=_['keys'](_0x9cf3ee['query']);_0x4380fe['filters']=_[_0x0c0a('0x33')](_0x4380fe[_0x0c0a('0x30')],_0x4380fe['query']);_0x615a53[_0x0c0a('0x34')]=_[_0x0c0a('0x33')](_0x4380fe[_0x0c0a('0x30')],qs[_0x0c0a('0x35')](_0x9cf3ee['query'][_0x0c0a('0x35')]));_0x615a53[_0x0c0a('0x34')]=_0x615a53[_0x0c0a('0x34')]['length']?_0x615a53[_0x0c0a('0x34')]:_0x4380fe[_0x0c0a('0x30')];if(_0x9cf3ee['query']['includeAll']){_0x615a53[_0x0c0a('0x41')]=[{'all':!![]}];}_0x615a53=_[_0x0c0a('0x3d')]({},_0x615a53,_0x9cf3ee[_0x0c0a('0x45')]);return db[_0x0c0a('0x2d')][_0x0c0a('0x46')](_0x615a53)['then'](handleEntityNotFound(_0x13de07,null))[_0x0c0a('0x23')](respondWithResult(_0x13de07,null))[_0x0c0a('0x44')](handleError(_0x13de07,null));};exports[_0x0c0a('0x47')]=function(_0x3b88c5,_0x1606fa){return db['SquareOdbc']['create'](_0x3b88c5[_0x0c0a('0x48')],{})['then'](function(_0x4b37c5){var _0x4b1f04=_0x3b88c5[_0x0c0a('0x49')][_0x0c0a('0x25')]({'plain':!![]});if(!_0x4b1f04)throw new Error(_0x0c0a('0x4a'));if(_0x4b1f04[_0x0c0a('0x4b')]===_0x0c0a('0x49')){var _0x254123=_0x4b37c5[_0x0c0a('0x25')]({'plain':!![]});var _0x2040f2=_0x0c0a('0x26');return db[_0x0c0a('0x4c')][_0x0c0a('0x46')]({'where':{'name':_0x2040f2,'userProfileId':_0x4b1f04[_0x0c0a('0x4d')]},'raw':!![]})[_0x0c0a('0x23')](function(_0x6585e2){if(_0x6585e2&&_0x6585e2[_0x0c0a('0x4e')]===0x0){return db[_0x0c0a('0x4f')][_0x0c0a('0x47')]({'name':_0x254123[_0x0c0a('0x2a')],'resourceId':_0x254123['id'],'type':_0x6585e2[_0x0c0a('0x2a')],'sectionId':_0x6585e2['id']},{})['then'](function(){return _0x4b37c5;});}else{return _0x4b37c5;}})[_0x0c0a('0x44')](function(_0x49dbb8){logger[_0x0c0a('0x28')](_0x0c0a('0x50'),_0x49dbb8);throw _0x49dbb8;});}return _0x4b37c5;})[_0x0c0a('0x23')](respondWithResult(_0x1606fa,0xc9))[_0x0c0a('0x44')](handleError(_0x1606fa,null));};exports[_0x0c0a('0x22')]=function(_0xfb899a,_0x407cfe){if(_0xfb899a[_0x0c0a('0x48')]['id']){delete _0xfb899a[_0x0c0a('0x48')]['id'];}return db[_0x0c0a('0x2d')][_0x0c0a('0x46')]({'where':{'id':_0xfb899a[_0x0c0a('0x51')]['id']}})[_0x0c0a('0x23')](handleEntityNotFound(_0x407cfe,null))[_0x0c0a('0x23')](saveUpdates(_0xfb899a[_0x0c0a('0x48')],null))[_0x0c0a('0x23')](respondWithResult(_0x407cfe,null))[_0x0c0a('0x44')](handleError(_0x407cfe,null));};exports[_0x0c0a('0x24')]=function(_0x871c91,_0x5a5599){return db[_0x0c0a('0x2d')]['find']({'where':{'id':_0x871c91[_0x0c0a('0x51')]['id']}})[_0x0c0a('0x23')](handleEntityNotFound(_0x5a5599,null))[_0x0c0a('0x23')](removeEntity(_0x5a5599,null))[_0x0c0a('0x44')](handleError(_0x5a5599,null));};exports[_0x0c0a('0x52')]=function(_0xbbd54d,_0x322ee2,_0x4de403){var _0x1eedfc;return db['SquareOdbc'][_0x0c0a('0x46')]({'where':{'id':_0xbbd54d['params']['id']},'attributes':['id',_0x0c0a('0x53')]})[_0x0c0a('0x23')](handleEntityNotFound(_0x322ee2,null))[_0x0c0a('0x23')](function(_0x4bf110){if(_0x4bf110){var _0x40da3c=require('odbc')();_0x40da3c[_0x0c0a('0x54')](_0x4bf110[_0x0c0a('0x53')]);_0x40da3c[_0x0c0a('0x55')]();return _0x4bf110;}})[_0x0c0a('0x23')](respondWithResult(_0x322ee2,null))[_0x0c0a('0x44')](handleError(_0x322ee2,null));};
\ No newline at end of file
index ac24946..01a800f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e9=['request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','SquareOdbc','square_odbc','lodash','util','api','moment'];(function(_0x557014,_0x4006c5){var _0x5c1f85=function(_0xebf756){while(--_0xebf756){_0x557014['push'](_0x557014['shift']());}};_0x5c1f85(++_0x4006c5);}(_0xe2e9,0x167));var _0x9e2e=function(_0x3af820,_0x35cbbe){_0x3af820=_0x3af820-0x0;var _0x215e66=_0xe2e9[_0x3af820];return _0x215e66;};'use strict';var _=require(_0x9e2e('0x0'));var util=require(_0x9e2e('0x1'));var logger=require('../../config/logger')(_0x9e2e('0x2'));var moment=require(_0x9e2e('0x3'));var BPromise=require('bluebird');var rp=require(_0x9e2e('0x4'));var fs=require('fs');var path=require(_0x9e2e('0x5'));var rimraf=require(_0x9e2e('0x6'));var config=require(_0x9e2e('0x7'));var attributes=require(_0x9e2e('0x8'));module['exports']=function(_0x2ed7cb,_0xdb7104){return _0x2ed7cb['define'](_0x9e2e('0x9'),attributes,{'tableName':_0x9e2e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a90=['square_odbc','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc'];(function(_0x55d8c5,_0x10287a){var _0x225ae5=function(_0x2ba03a){while(--_0x2ba03a){_0x55d8c5['push'](_0x55d8c5['shift']());}};_0x225ae5(++_0x10287a);}(_0x6a90,0x1eb));var _0x06a9=function(_0x209e76,_0x3771fd){_0x209e76=_0x209e76-0x0;var _0x37af5e=_0x6a90[_0x209e76];return _0x37af5e;};'use strict';var _=require(_0x06a9('0x0'));var util=require(_0x06a9('0x1'));var logger=require(_0x06a9('0x2'))(_0x06a9('0x3'));var moment=require(_0x06a9('0x4'));var BPromise=require('bluebird');var rp=require(_0x06a9('0x5'));var fs=require('fs');var path=require(_0x06a9('0x6'));var rimraf=require(_0x06a9('0x7'));var config=require(_0x06a9('0x8'));var attributes=require(_0x06a9('0x9'));module[_0x06a9('0xa')]=function(_0x5c6e09,_0x59fadd){return _0x5c6e09[_0x06a9('0xb')](_0x06a9('0xc'),attributes,{'tableName':_0x06a9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 549795e..61b4065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f76=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','ShowSquareOdbc','SquareOdbc','options','raw','where','attributes','map','include','model','debug','lodash','util','moment','bluebird','randomstring'];(function(_0x2ceb1b,_0x59b66f){var _0x4f1ff3=function(_0x185e18){while(--_0x185e18){_0x2ceb1b['push'](_0x2ceb1b['shift']());}};_0x4f1ff3(++_0x59b66f);}(_0x9f76,0x96));var _0x69f7=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x9f76[_0x49ca18];return _0x145d54;};'use strict';var _=require(_0x69f7('0x0'));var util=require(_0x69f7('0x1'));var moment=require(_0x69f7('0x2'));var BPromise=require(_0x69f7('0x3'));var rs=require(_0x69f7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x69f7('0x5'))['db'];var utils=require(_0x69f7('0x6'));var logger=require(_0x69f7('0x7'))(_0x69f7('0x8'));var config=require(_0x69f7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x69f7('0xa')][_0x69f7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1322ae,_0xed8eb7,_0x210ad2){return new BPromise(function(_0x4b81c6,_0x50d181){return client[_0x69f7('0xc')](_0x1322ae,_0x210ad2)[_0x69f7('0xd')](function(_0x58be4c){logger[_0x69f7('0xe')](_0x69f7('0xf'),_0xed8eb7,_0x69f7('0x10'));logger['debug']('SquareOdbc,\x20%s,\x20%s,\x20%s',_0xed8eb7,'request\x20sent',JSON[_0x69f7('0x11')](_0x58be4c));if(_0x58be4c['error']){if(_0x58be4c['error']['code']===0x1f4){logger['error'](_0x69f7('0xf'),_0xed8eb7,_0x58be4c['error']['message']);return _0x50d181(_0x58be4c[_0x69f7('0x12')][_0x69f7('0x13')]);}logger[_0x69f7('0x12')](_0x69f7('0xf'),_0xed8eb7,_0x58be4c[_0x69f7('0x12')][_0x69f7('0x13')]);return _0x4b81c6(_0x58be4c['error'][_0x69f7('0x13')]);}else{logger[_0x69f7('0xe')]('SquareOdbc,\x20%s,\x20%s',_0xed8eb7,'request\x20sent');_0x4b81c6(_0x58be4c['result'][_0x69f7('0x13')]);}})[_0x69f7('0x14')](function(_0x4a37c3){logger[_0x69f7('0x12')](_0x69f7('0xf'),_0xed8eb7,_0x4a37c3);_0x50d181(_0x4a37c3);});});}exports[_0x69f7('0x15')]=function(_0x1f1f87){var _0x35e858=this;return new Promise(function(_0x3a041d,_0x5a85fa){return db[_0x69f7('0x16')]['find']({'raw':_0x1f1f87[_0x69f7('0x17')]?_0x1f1f87['options'][_0x69f7('0x18')]===undefined?!![]:![]:!![],'where':_0x1f1f87['options']?_0x1f1f87[_0x69f7('0x17')][_0x69f7('0x19')]||null:null,'attributes':_0x1f1f87[_0x69f7('0x17')]?_0x1f1f87[_0x69f7('0x17')][_0x69f7('0x1a')]||null:null,'include':_0x1f1f87[_0x69f7('0x17')]?_0x1f1f87[_0x69f7('0x17')]['include']?_[_0x69f7('0x1b')](_0x1f1f87['options'][_0x69f7('0x1c')],function(_0x3270fa){return{'model':db[_0x3270fa[_0x69f7('0x1d')]],'as':_0x3270fa['as'],'attributes':_0x3270fa[_0x69f7('0x1a')],'include':_0x3270fa[_0x69f7('0x1c')]?_[_0x69f7('0x1b')](_0x3270fa[_0x69f7('0x1c')],function(_0x46d133){return{'model':db[_0x46d133[_0x69f7('0x1d')]],'as':_0x46d133['as'],'attributes':_0x46d133[_0x69f7('0x1a')],'include':_0x46d133['include']?_[_0x69f7('0x1b')](_0x46d133[_0x69f7('0x1c')],function(_0x45490e){return{'model':db[_0x45490e[_0x69f7('0x1d')]],'as':_0x45490e['as'],'attributes':_0x45490e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x56950a){logger[_0x69f7('0xe')](_0x69f7('0x15'),_0x1f1f87);logger[_0x69f7('0x1e')](_0x69f7('0x15'),_0x1f1f87,JSON[_0x69f7('0x11')](_0x56950a));_0x3a041d(_0x56950a);})['catch'](function(_0x575b2a){logger['error'](_0x69f7('0x15'),_0x575b2a['message'],_0x1f1f87);_0x5a85fa(_0x35e858[_0x69f7('0x12')](0x1f4,_0x575b2a[_0x69f7('0x13')]));});});};
\ No newline at end of file
+var _0x5b13=['../../config/environment','jayson/promise','client','http','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','where','attributes','include','map','model','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x3dee9e,_0x324c5b){var _0x5de62d=function(_0x3b5063){while(--_0x3b5063){_0x3dee9e['push'](_0x3dee9e['shift']());}};_0x5de62d(++_0x324c5b);}(_0x5b13,0x1d9));var _0x35b1=function(_0x39fb6a,_0x8b07ae){_0x39fb6a=_0x39fb6a-0x0;var _0x1452a1=_0x5b13[_0x39fb6a];return _0x1452a1;};'use strict';var _=require(_0x35b1('0x0'));var util=require(_0x35b1('0x1'));var moment=require(_0x35b1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x35b1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x35b1('0x4'));var logger=require(_0x35b1('0x5'))(_0x35b1('0x6'));var config=require(_0x35b1('0x7'));var jayson=require(_0x35b1('0x8'));var client=jayson[_0x35b1('0x9')][_0x35b1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2515d3,_0x4e29fb,_0x2790ab){return new BPromise(function(_0x4d39e9,_0x112666){return client['request'](_0x2515d3,_0x2790ab)[_0x35b1('0xb')](function(_0x391897){logger[_0x35b1('0xc')](_0x35b1('0xd'),_0x4e29fb,_0x35b1('0xe'));logger[_0x35b1('0xf')](_0x35b1('0x10'),_0x4e29fb,_0x35b1('0xe'),JSON[_0x35b1('0x11')](_0x391897));if(_0x391897[_0x35b1('0x12')]){if(_0x391897[_0x35b1('0x12')][_0x35b1('0x13')]===0x1f4){logger['error'](_0x35b1('0xd'),_0x4e29fb,_0x391897['error'][_0x35b1('0x14')]);return _0x112666(_0x391897['error']['message']);}logger[_0x35b1('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x4e29fb,_0x391897[_0x35b1('0x12')][_0x35b1('0x14')]);return _0x4d39e9(_0x391897[_0x35b1('0x12')][_0x35b1('0x14')]);}else{logger['info'](_0x35b1('0xd'),_0x4e29fb,'request\x20sent');_0x4d39e9(_0x391897[_0x35b1('0x15')][_0x35b1('0x14')]);}})[_0x35b1('0x16')](function(_0x9d89e6){logger[_0x35b1('0x12')](_0x35b1('0xd'),_0x4e29fb,_0x9d89e6);_0x112666(_0x9d89e6);});});}exports[_0x35b1('0x17')]=function(_0x5cc0f9){var _0x1c15b0=this;return new Promise(function(_0x31a076,_0x4d9dea){return db[_0x35b1('0x18')][_0x35b1('0x19')]({'raw':_0x5cc0f9[_0x35b1('0x1a')]?_0x5cc0f9['options']['raw']===undefined?!![]:![]:!![],'where':_0x5cc0f9['options']?_0x5cc0f9[_0x35b1('0x1a')][_0x35b1('0x1b')]||null:null,'attributes':_0x5cc0f9[_0x35b1('0x1a')]?_0x5cc0f9[_0x35b1('0x1a')][_0x35b1('0x1c')]||null:null,'include':_0x5cc0f9[_0x35b1('0x1a')]?_0x5cc0f9[_0x35b1('0x1a')]['include']?_['map'](_0x5cc0f9[_0x35b1('0x1a')][_0x35b1('0x1d')],function(_0x288a45){return{'model':db[_0x288a45['model']],'as':_0x288a45['as'],'attributes':_0x288a45[_0x35b1('0x1c')],'include':_0x288a45[_0x35b1('0x1d')]?_[_0x35b1('0x1e')](_0x288a45[_0x35b1('0x1d')],function(_0x4d7267){return{'model':db[_0x4d7267[_0x35b1('0x1f')]],'as':_0x4d7267['as'],'attributes':_0x4d7267['attributes'],'include':_0x4d7267['include']?_[_0x35b1('0x1e')](_0x4d7267[_0x35b1('0x1d')],function(_0x1c6e10){return{'model':db[_0x1c6e10[_0x35b1('0x1f')]],'as':_0x1c6e10['as'],'attributes':_0x1c6e10['attributes']};}):[]};}):[]};}):[]:[]})[_0x35b1('0xb')](function(_0x3e618a){logger[_0x35b1('0xc')](_0x35b1('0x17'),_0x5cc0f9);logger[_0x35b1('0xf')](_0x35b1('0x17'),_0x5cc0f9,JSON[_0x35b1('0x11')](_0x3e618a));_0x31a076(_0x3e618a);})[_0x35b1('0x16')](function(_0x4941e1){logger[_0x35b1('0x12')](_0x35b1('0x17'),_0x4941e1[_0x35b1('0x14')],_0x5cc0f9);_0x4d9dea(_0x1c15b0[_0x35b1('0x12')](0x1f4,_0x4941e1[_0x35b1('0x14')]));});});};
\ No newline at end of file
index c74eda8..4f42a01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x404d=['index','show','getUsers','post','isAuthenticated','create','addUsers','/:id','update','delete','destroy','/:id/users','removeUsers','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./squareProject.controller','get'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x404d,0x1e9));var _0xd404=function(_0x1cabc6,_0x5e7748){_0x1cabc6=_0x1cabc6-0x0;var _0x5904f3=_0x404d[_0x1cabc6];return _0x5904f3;};'use strict';var multer=require(_0xd404('0x0'));var util=require(_0xd404('0x1'));var path=require(_0xd404('0x2'));var timeout=require(_0xd404('0x3'));var express=require(_0xd404('0x4'));var router=express[_0xd404('0x5')]();var fs_extra=require(_0xd404('0x6'));var auth=require(_0xd404('0x7'));var interaction=require(_0xd404('0x8'));var config=require('../../config/environment');var controller=require(_0xd404('0x9'));router[_0xd404('0xa')]('/',auth['isAuthenticated'](),controller[_0xd404('0xb')]);router[_0xd404('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xd404('0xc')]);router[_0xd404('0xa')]('/:id/users',auth['isAuthenticated'](),controller[_0xd404('0xd')]);router[_0xd404('0xe')]('/',auth[_0xd404('0xf')](),controller[_0xd404('0x10')]);router['post']('/:id/users',auth[_0xd404('0xf')](),controller[_0xd404('0x11')]);router['put'](_0xd404('0x12'),auth[_0xd404('0xf')](),controller[_0xd404('0x13')]);router[_0xd404('0x14')](_0xd404('0x12'),auth[_0xd404('0xf')](),controller[_0xd404('0x15')]);router[_0xd404('0x14')](_0xd404('0x16'),auth[_0xd404('0xf')](),controller[_0xd404('0x17')]);module[_0xd404('0x18')]=router;
\ No newline at end of file
+var _0x26b0=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','index','show','/:id/users','post','isAuthenticated','create','addUsers','put','update','delete','/:id','destroy','exports'];(function(_0x49f66e,_0x3e2369){var _0x55a1e2=function(_0x50bccd){while(--_0x50bccd){_0x49f66e['push'](_0x49f66e['shift']());}};_0x55a1e2(++_0x3e2369);}(_0x26b0,0x138));var _0x026b=function(_0x1722d7,_0x456686){_0x1722d7=_0x1722d7-0x0;var _0x1ef817=_0x26b0[_0x1722d7];return _0x1ef817;};'use strict';var multer=require(_0x026b('0x0'));var util=require(_0x026b('0x1'));var path=require(_0x026b('0x2'));var timeout=require(_0x026b('0x3'));var express=require(_0x026b('0x4'));var router=express[_0x026b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x026b('0x6'));var interaction=require(_0x026b('0x7'));var config=require(_0x026b('0x8'));var controller=require(_0x026b('0x9'));router[_0x026b('0xa')]('/',auth['isAuthenticated'](),controller[_0x026b('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x026b('0xc')]);router[_0x026b('0xa')](_0x026b('0xd'),auth['isAuthenticated'](),controller['getUsers']);router[_0x026b('0xe')]('/',auth[_0x026b('0xf')](),controller[_0x026b('0x10')]);router['post'](_0x026b('0xd'),auth[_0x026b('0xf')](),controller[_0x026b('0x11')]);router[_0x026b('0x12')]('/:id',auth[_0x026b('0xf')](),controller[_0x026b('0x13')]);router[_0x026b('0x14')](_0x026b('0x15'),auth[_0x026b('0xf')](),controller[_0x026b('0x16')]);router[_0x026b('0x14')]('/:id/users',auth[_0x026b('0xf')](),controller['removeUsers']);module[_0x026b('0x17')]=router;
\ No newline at end of file
index 57c1bae..8b07b39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a4d=['BLOB','getDataValue','preproduction','toString','utf8','long','production','DATE','exports','STRING','name'];(function(_0x184800,_0x13f14e){var _0x58e20b=function(_0x481e55){while(--_0x481e55){_0x184800['push'](_0x184800['shift']());}};_0x58e20b(++_0x13f14e);}(_0x0a4d,0xad));var _0xd0a4=function(_0xd3d949,_0x4f10e4){_0xd3d949=_0xd3d949-0x0;var _0x1a9f7a=_0x0a4d[_0xd3d949];return _0x1a9f7a;};'use strict';var Sequelize=require('sequelize');module[_0xd0a4('0x0')]={'name':{'type':Sequelize[_0xd0a4('0x1')],'unique':_0xd0a4('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xd0a4('0x1')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0xd0a4('0x3')]('long'),'get':function(){if(this[_0xd0a4('0x4')](_0xd0a4('0x5'))){return this[_0xd0a4('0x4')](_0xd0a4('0x5'))[_0xd0a4('0x6')](_0xd0a4('0x7'));}}},'production':{'type':Sequelize[_0xd0a4('0x3')](_0xd0a4('0x8')),'get':function(){if(this[_0xd0a4('0x4')](_0xd0a4('0x9'))){return this['getDataValue'](_0xd0a4('0x9'))[_0xd0a4('0x6')]('utf8');}}},'savedAt':{'type':Sequelize[_0xd0a4('0xa')]},'publishedAt':{'type':Sequelize[_0xd0a4('0xa')]}};
\ No newline at end of file
+var _0x2ad9=['utf8','production','DATE','exports','STRING','name','TEXT','BLOB','long','getDataValue','preproduction','toString'];(function(_0x5bf122,_0x27987e){var _0x4dd339=function(_0x32293a){while(--_0x32293a){_0x5bf122['push'](_0x5bf122['shift']());}};_0x4dd339(++_0x27987e);}(_0x2ad9,0x13b));var _0x92ad=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2ad9[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require('sequelize');module[_0x92ad('0x0')]={'name':{'type':Sequelize[_0x92ad('0x1')],'unique':_0x92ad('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x92ad('0x1')]},'notes':{'type':Sequelize[_0x92ad('0x3')]},'preproduction':{'type':Sequelize[_0x92ad('0x4')](_0x92ad('0x5')),'get':function(){if(this[_0x92ad('0x6')](_0x92ad('0x7'))){return this[_0x92ad('0x6')](_0x92ad('0x7'))[_0x92ad('0x8')](_0x92ad('0x9'));}}},'production':{'type':Sequelize[_0x92ad('0x4')](_0x92ad('0x5')),'get':function(){if(this['getDataValue'](_0x92ad('0xa'))){return this[_0x92ad('0x6')](_0x92ad('0xa'))['toString'](_0x92ad('0x9'));}}},'savedAt':{'type':Sequelize[_0x92ad('0xb')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index acee0cf..437ff38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3297=['undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','SquareProjects','UserProfileResource','error','stack','name','send','index','SquareProject','rawAttributes','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','nolimit','sort','where','filter','merge','map','VIRTUAL','includeAll','include','catch','show','params','keys','options','body','user','role','UserProfileSection','find','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','ids','omit','removeUsers','emit','userSquareProject:remove','getUsers','findOne','User','order','pick','hasOwnProperty','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','offset'];(function(_0x415a57,_0x7cf318){var _0x37c5b6=function(_0x50aac9){while(--_0x50aac9){_0x415a57['push'](_0x415a57['shift']());}};_0x37c5b6(++_0x7cf318);}(_0x3297,0x1c9));var _0x7329=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x3297[_0x29b609];return _0x54c952;};'use strict';var emlformat=require(_0x7329('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7329('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7329('0x2'));var moment=require(_0x7329('0x3'));var BPromise=require(_0x7329('0x4'));var Mustache=require(_0x7329('0x5'));var util=require(_0x7329('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x7329('0x7'));var ejs=require(_0x7329('0x8'));var fs=require('fs');var fs_extra=require(_0x7329('0x9'));var _=require(_0x7329('0xa'));var squel=require(_0x7329('0xb'));var crypto=require(_0x7329('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7329('0x7'));var querystring=require(_0x7329('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7329('0xe'));var qs=require(_0x7329('0xf'));var as=require(_0x7329('0x10'));var hardwareService=require(_0x7329('0x11'));var logger=require('../../config/logger')(_0x7329('0x12'));var utils=require(_0x7329('0x13'));var config=require(_0x7329('0x14'));var licenseUtil=require(_0x7329('0x15'));var db=require(_0x7329('0x16'))['db'];config[_0x7329('0x17')]=_['defaults'](config[_0x7329('0x17')],{'host':_0x7329('0x18'),'port':0x18eb});var socket=require(_0x7329('0x19'))(new Redis(config[_0x7329('0x17')]));require(_0x7329('0x1a'))[_0x7329('0x1b')](socket);function respondWithStatusCode(_0x1f65d5,_0x369d62){_0x369d62=_0x369d62||0xcc;return function(_0x34f774){if(_0x34f774){return _0x1f65d5[_0x7329('0x1c')](_0x369d62);}return _0x1f65d5[_0x7329('0x1d')](_0x369d62)[_0x7329('0x1e')]();};}function respondWithResult(_0x36d6a5,_0x5003dc){_0x5003dc=_0x5003dc||0xc8;return function(_0x4946c6){if(_0x4946c6){return _0x36d6a5[_0x7329('0x1d')](_0x5003dc)[_0x7329('0x1f')](_0x4946c6);}};}function respondWithFilteredResult(_0x19dcf6,_0x31938e){return function(_0x343c68){if(_0x343c68){var _0x3c1031=typeof _0x31938e[_0x7329('0x20')]===_0x7329('0x21')&&typeof _0x31938e[_0x7329('0x22')]===_0x7329('0x21');var _0x248818=_0x343c68[_0x7329('0x23')];var _0x46a868=_0x3c1031?0x0:_0x31938e[_0x7329('0x20')];var _0x36b9f4=_0x3c1031?_0x343c68[_0x7329('0x23')]:_0x31938e['offset']+_0x31938e[_0x7329('0x22')];var _0x281d50;if(_0x36b9f4>=_0x248818){_0x36b9f4=_0x248818;_0x281d50=0xc8;}else{_0x281d50=0xce;}_0x19dcf6[_0x7329('0x1d')](_0x281d50);return _0x19dcf6[_0x7329('0x24')](_0x7329('0x25'),_0x46a868+'-'+_0x36b9f4+'/'+_0x248818)[_0x7329('0x1f')](_0x343c68);}return null;};}function patchUpdates(_0x4b2c3e){return function(_0x217a02){try{jsonpatch[_0x7329('0x26')](_0x217a02,_0x4b2c3e,!![]);}catch(_0x161181){return BPromise['reject'](_0x161181);}return _0x217a02[_0x7329('0x27')]();};}function saveUpdates(_0x41157e,_0x2508f8){return function(_0xa46775){if(_0xa46775){return _0xa46775[_0x7329('0x28')](_0x41157e)[_0x7329('0x29')](function(_0x253211){return _0x253211;});}return null;};}function removeEntity(_0x24918e,_0x446e2e){return function(_0x25dc38){if(_0x25dc38){return _0x25dc38[_0x7329('0x2a')]()['then'](function(){var _0x4b3146=_0x25dc38[_0x7329('0x2b')]({'plain':!![]});var _0x15b737=_0x7329('0x2c');return db[_0x7329('0x2d')]['destroy']({'where':{'type':_0x15b737,'resourceId':_0x4b3146['id']}})[_0x7329('0x29')](function(){return _0x25dc38;});})[_0x7329('0x29')](function(){_0x24918e[_0x7329('0x1d')](0xcc)[_0x7329('0x1e')]();});}};}function handleEntityNotFound(_0x328cc8,_0x230159){return function(_0x2251d3){if(!_0x2251d3){_0x328cc8[_0x7329('0x1c')](0x194);}return _0x2251d3;};}function handleError(_0x43fc7a,_0x3a9971){_0x3a9971=_0x3a9971||0x1f4;return function(_0x2d3aed){logger[_0x7329('0x2e')](_0x2d3aed[_0x7329('0x2f')]);if(_0x2d3aed[_0x7329('0x30')]){delete _0x2d3aed[_0x7329('0x30')];}_0x43fc7a[_0x7329('0x1d')](_0x3a9971)[_0x7329('0x31')](_0x2d3aed);};}exports[_0x7329('0x32')]=function(_0x2395c8,_0x2f19d2){var _0x34bda5={},_0x4df163={},_0x5b7bd0={'count':0x0,'rows':[]};var _0x31ff7a=_['map'](db[_0x7329('0x33')][_0x7329('0x34')],function(_0x4171a3){return{'name':_0x4171a3[_0x7329('0x35')],'type':_0x4171a3[_0x7329('0x36')][_0x7329('0x37')]};});_0x4df163['model']=_['map'](_0x31ff7a,_0x7329('0x30'));_0x4df163[_0x7329('0x38')]=_['keys'](_0x2395c8[_0x7329('0x38')]);_0x4df163[_0x7329('0x39')]=_['intersection'](_0x4df163[_0x7329('0x3a')],_0x4df163['query']);_0x34bda5[_0x7329('0x3b')]=_[_0x7329('0x3c')](_0x4df163[_0x7329('0x3a')],qs['fields'](_0x2395c8['query'][_0x7329('0x3d')]));_0x34bda5['attributes']=_0x34bda5['attributes'][_0x7329('0x3e')]?_0x34bda5[_0x7329('0x3b')]:_0x4df163[_0x7329('0x3a')];if(!_0x2395c8[_0x7329('0x38')]['hasOwnProperty'](_0x7329('0x3f'))){_0x34bda5[_0x7329('0x22')]=qs['limit'](_0x2395c8[_0x7329('0x38')]['limit']);_0x34bda5[_0x7329('0x20')]=qs[_0x7329('0x20')](_0x2395c8['query']['offset']);}_0x34bda5['order']=qs[_0x7329('0x40')](_0x2395c8[_0x7329('0x38')]['sort']);_0x34bda5[_0x7329('0x41')]=qs[_0x7329('0x39')](_['pick'](_0x2395c8[_0x7329('0x38')],_0x4df163[_0x7329('0x39')]),_0x31ff7a);if(_0x2395c8[_0x7329('0x38')][_0x7329('0x42')]){_0x34bda5[_0x7329('0x41')]=_[_0x7329('0x43')](_0x34bda5[_0x7329('0x41')],{'$or':_[_0x7329('0x44')](_0x31ff7a,function(_0x3c2ce0){if(_0x3c2ce0[_0x7329('0x36')]!==_0x7329('0x45')){var _0x5688fe={};_0x5688fe[_0x3c2ce0[_0x7329('0x30')]]={'$like':'%'+_0x2395c8['query'][_0x7329('0x42')]+'%'};return _0x5688fe;}})});}_0x34bda5=_[_0x7329('0x43')]({},_0x34bda5,_0x2395c8['options']);var _0xd5cfe3={'where':_0x34bda5[_0x7329('0x41')]};return db[_0x7329('0x33')][_0x7329('0x23')](_0xd5cfe3)[_0x7329('0x29')](function(_0x1ae84f){_0x5b7bd0[_0x7329('0x23')]=_0x1ae84f;if(_0x2395c8[_0x7329('0x38')][_0x7329('0x46')]){_0x34bda5[_0x7329('0x47')]=[{'all':!![]}];}return db[_0x7329('0x33')]['findAll'](_0x34bda5);})['then'](function(_0x56bbde){_0x5b7bd0['rows']=_0x56bbde;return _0x5b7bd0;})['then'](respondWithFilteredResult(_0x2f19d2,_0x34bda5))[_0x7329('0x48')](handleError(_0x2f19d2,null));};exports[_0x7329('0x49')]=function(_0x3bdcfe,_0x25eaca){var _0xf510a7={'raw':![],'where':{'id':_0x3bdcfe[_0x7329('0x4a')]['id']}},_0x1f3214={};_0x1f3214['model']=_[_0x7329('0x4b')](db['SquareProject']['rawAttributes']);_0x1f3214['query']=_[_0x7329('0x4b')](_0x3bdcfe['query']);_0x1f3214['filters']=_['intersection'](_0x1f3214[_0x7329('0x3a')],_0x1f3214[_0x7329('0x38')]);_0xf510a7[_0x7329('0x3b')]=_['intersection'](_0x1f3214[_0x7329('0x3a')],qs[_0x7329('0x3d')](_0x3bdcfe[_0x7329('0x38')][_0x7329('0x3d')]));_0xf510a7['attributes']=_0xf510a7[_0x7329('0x3b')][_0x7329('0x3e')]?_0xf510a7[_0x7329('0x3b')]:_0x1f3214[_0x7329('0x3a')];if(_0x3bdcfe[_0x7329('0x38')][_0x7329('0x46')]){_0xf510a7[_0x7329('0x47')]=[{'all':!![]}];}_0xf510a7=_[_0x7329('0x43')]({},_0xf510a7,_0x3bdcfe[_0x7329('0x4c')]);return db[_0x7329('0x33')]['find'](_0xf510a7)[_0x7329('0x29')](handleEntityNotFound(_0x25eaca,null))[_0x7329('0x29')](respondWithResult(_0x25eaca,null))[_0x7329('0x48')](handleError(_0x25eaca,null));};exports['create']=function(_0x10569c,_0x269c67){return db['SquareProject']['create'](_0x10569c[_0x7329('0x4d')],{})['then'](function(_0x111ced){var _0x2ecc75=_0x10569c[_0x7329('0x4e')][_0x7329('0x2b')]({'plain':!![]});if(!_0x2ecc75)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2ecc75[_0x7329('0x4f')]==='user'){var _0xeae053=_0x111ced[_0x7329('0x2b')]({'plain':!![]});var _0x4008c9='SquareProjects';return db[_0x7329('0x50')][_0x7329('0x51')]({'where':{'name':_0x4008c9,'userProfileId':_0x2ecc75[_0x7329('0x52')]},'raw':!![]})[_0x7329('0x29')](function(_0x2fae86){if(_0x2fae86&&_0x2fae86[_0x7329('0x53')]===0x0){return db[_0x7329('0x2d')][_0x7329('0x54')]({'name':_0xeae053[_0x7329('0x30')],'resourceId':_0xeae053['id'],'type':_0x2fae86[_0x7329('0x30')],'sectionId':_0x2fae86['id']},{})[_0x7329('0x29')](function(){return _0x111ced;});}else{return _0x111ced;}})[_0x7329('0x48')](function(_0x4f8f56){logger[_0x7329('0x2e')](_0x7329('0x55'),_0x4f8f56);throw _0x4f8f56;});}return _0x111ced;})[_0x7329('0x29')](respondWithResult(_0x269c67,0xc9))[_0x7329('0x48')](handleError(_0x269c67,null));};exports[_0x7329('0x28')]=function(_0x48620a,_0x3aedef){if(_0x48620a['body']['id']){delete _0x48620a[_0x7329('0x4d')]['id'];}return db['SquareProject'][_0x7329('0x51')]({'where':{'id':_0x48620a[_0x7329('0x4a')]['id']}})[_0x7329('0x29')](handleEntityNotFound(_0x3aedef,null))[_0x7329('0x29')](saveUpdates(_0x48620a[_0x7329('0x4d')],null))[_0x7329('0x29')](respondWithResult(_0x3aedef,null))[_0x7329('0x48')](handleError(_0x3aedef,null));};exports['destroy']=function(_0x38112c,_0x4f32e5){return db['SquareProject'][_0x7329('0x51')]({'where':{'id':_0x38112c[_0x7329('0x4a')]['id']}})[_0x7329('0x29')](handleEntityNotFound(_0x4f32e5,null))['then'](removeEntity(_0x4f32e5,null))[_0x7329('0x48')](handleError(_0x4f32e5,null));};exports['addUsers']=function(_0x38be7e,_0x20bf10,_0x143096){return db['SquareProject'][_0x7329('0x51')]({'where':{'id':_0x38be7e[_0x7329('0x4a')]['id']}})[_0x7329('0x29')](handleEntityNotFound(_0x20bf10,null))[_0x7329('0x29')](function(_0x553b2b){if(_0x553b2b){return _0x553b2b[_0x7329('0x56')](_0x38be7e['body'][_0x7329('0x57')],_[_0x7329('0x58')](_0x38be7e['body'],['ids','id'])||{});}})[_0x7329('0x29')](respondWithResult(_0x20bf10,null))[_0x7329('0x48')](handleError(_0x20bf10,null));};exports[_0x7329('0x59')]=function(_0x12a2a0,_0x1c6e6f,_0x10be46){return db[_0x7329('0x33')][_0x7329('0x51')]({'where':{'id':_0x12a2a0[_0x7329('0x4a')]['id']}})[_0x7329('0x29')](handleEntityNotFound(_0x1c6e6f,null))[_0x7329('0x29')](function(_0x21fcfa){if(_0x21fcfa){return _0x21fcfa['removeUsers'](_0x12a2a0['query'][_0x7329('0x57')])[_0x7329('0x29')](function(){if(_['isArray'](_0x12a2a0[_0x7329('0x38')][_0x7329('0x57')])){for(var _0x3b13dc=0x0;_0x3b13dc<_0x12a2a0['query'][_0x7329('0x57')][_0x7329('0x3e')];_0x3b13dc+=0x1){socket[_0x7329('0x5a')](_0x7329('0x5b'),{'UserId':Number(_0x12a2a0[_0x7329('0x38')][_0x7329('0x57')][_0x3b13dc]),'SquareProjectId':Number(_0x12a2a0['params']['id'])});}}else{socket[_0x7329('0x5a')](_0x7329('0x5b'),{'UserId':Number(_0x12a2a0[_0x7329('0x38')][_0x7329('0x57')]),'SquareProjectId':Number(_0x12a2a0[_0x7329('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x1c6e6f,null))[_0x7329('0x48')](handleError(_0x1c6e6f,null));};exports[_0x7329('0x5c')]=function(_0x39ba4f,_0x5ca8b8,_0x180852){var _0x493dca={};var _0x24c013={};var _0x2d0e0e;var _0x31051e;return db[_0x7329('0x33')][_0x7329('0x5d')]({'where':{'id':_0x39ba4f['params']['id']}})[_0x7329('0x29')](handleEntityNotFound(_0x5ca8b8,null))[_0x7329('0x29')](function(_0x249d12){if(_0x249d12){_0x2d0e0e=_0x249d12;_0x24c013[_0x7329('0x3a')]=_[_0x7329('0x4b')](db[_0x7329('0x5e')][_0x7329('0x34')]);_0x24c013[_0x7329('0x38')]=_[_0x7329('0x4b')](_0x39ba4f[_0x7329('0x38')]);_0x24c013['filters']=_['intersection'](_0x24c013[_0x7329('0x3a')],_0x24c013[_0x7329('0x38')]);_0x493dca[_0x7329('0x3b')]=_[_0x7329('0x3c')](_0x24c013['model'],qs[_0x7329('0x3d')](_0x39ba4f[_0x7329('0x38')]['fields']));_0x493dca[_0x7329('0x3b')]=_0x493dca['attributes']['length']?_0x493dca[_0x7329('0x3b')]:_0x24c013[_0x7329('0x3a')];_0x493dca[_0x7329('0x5f')]=qs[_0x7329('0x40')](_0x39ba4f[_0x7329('0x38')][_0x7329('0x40')]);_0x493dca[_0x7329('0x41')]=qs[_0x7329('0x39')](_[_0x7329('0x60')](_0x39ba4f['query'],_0x24c013[_0x7329('0x39')]));if(_0x39ba4f[_0x7329('0x38')]['filter']){_0x493dca[_0x7329('0x41')]=_['merge'](_0x493dca[_0x7329('0x41')],{'$or':_[_0x7329('0x44')](_0x493dca[_0x7329('0x3b')],function(_0x22d6bb){var _0x34d4ce={};_0x34d4ce[_0x22d6bb]={'$like':'%'+_0x39ba4f['query'][_0x7329('0x42')]+'%'};return _0x34d4ce;})});}_0x493dca=_[_0x7329('0x43')]({},_0x493dca,_0x39ba4f[_0x7329('0x4c')]);return _0x2d0e0e[_0x7329('0x5c')](_0x493dca);}})['then'](function(_0x58e3d1){if(_0x58e3d1){_0x31051e=_0x58e3d1[_0x7329('0x3e')];if(!_0x39ba4f['query'][_0x7329('0x61')](_0x7329('0x3f'))){_0x493dca['limit']=qs[_0x7329('0x22')](_0x39ba4f[_0x7329('0x38')][_0x7329('0x22')]);_0x493dca[_0x7329('0x20')]=qs[_0x7329('0x20')](_0x39ba4f['query']['offset']);}return _0x2d0e0e[_0x7329('0x5c')](_0x493dca);}})[_0x7329('0x29')](function(_0x5da4f2){if(_0x5da4f2){return _0x5da4f2?{'count':_0x31051e,'rows':_0x5da4f2}:null;}})[_0x7329('0x29')](respondWithResult(_0x5ca8b8,null))[_0x7329('0x48')](handleError(_0x5ca8b8,null));};
\ No newline at end of file
+var _0x3f01=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','User','sort','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','redis','defaults','localhost','./squareProject.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','get','SquareProjects','UserProfileResource','error','stack','name','send','index','rawAttributes','keys','filters','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','map','type','merge','options','SquareProject','includeAll','include','findAll','catch','intersection','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation'];(function(_0x136031,_0x248912){var _0x51c888=function(_0x2a87fb){while(--_0x2a87fb){_0x136031['push'](_0x136031['shift']());}};_0x51c888(++_0x248912);}(_0x3f01,0x1d8));var _0x13f0=function(_0x1fe6e5,_0x5aa515){_0x1fe6e5=_0x1fe6e5-0x0;var _0x321a83=_0x3f01[_0x1fe6e5];return _0x321a83;};'use strict';var emlformat=require(_0x13f0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x13f0('0x1'));var jsonpatch=require(_0x13f0('0x2'));var rp=require(_0x13f0('0x3'));var moment=require(_0x13f0('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x13f0('0x5'));var path=require(_0x13f0('0x6'));var sox=require(_0x13f0('0x7'));var csv=require('to-csv');var ejs=require(_0x13f0('0x8'));var fs=require('fs');var fs_extra=require(_0x13f0('0x9'));var _=require(_0x13f0('0xa'));var squel=require(_0x13f0('0xb'));var crypto=require(_0x13f0('0xc'));var jsforce=require(_0x13f0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x13f0('0xe'));var querystring=require(_0x13f0('0xf'));var Papa=require(_0x13f0('0x10'));var Redis=require(_0x13f0('0x11'));var authService=require(_0x13f0('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x13f0('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x13f0('0x14'))(_0x13f0('0x15'));var utils=require(_0x13f0('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x13f0('0x17')]=_[_0x13f0('0x18')](config[_0x13f0('0x17')],{'host':_0x13f0('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x13f0('0x1a'))[_0x13f0('0x1b')](socket);function respondWithStatusCode(_0x3ba8f5,_0x2c8970){_0x2c8970=_0x2c8970||0xcc;return function(_0x473c71){if(_0x473c71){return _0x3ba8f5[_0x13f0('0x1c')](_0x2c8970);}return _0x3ba8f5[_0x13f0('0x1d')](_0x2c8970)[_0x13f0('0x1e')]();};}function respondWithResult(_0x4a0af1,_0x59fb76){_0x59fb76=_0x59fb76||0xc8;return function(_0x24f7fd){if(_0x24f7fd){return _0x4a0af1[_0x13f0('0x1d')](_0x59fb76)[_0x13f0('0x1f')](_0x24f7fd);}};}function respondWithFilteredResult(_0xe2f10f,_0x3dfe4d){return function(_0x1ce94c){if(_0x1ce94c){var _0x4b2f19=typeof _0x3dfe4d[_0x13f0('0x20')]===_0x13f0('0x21')&&typeof _0x3dfe4d[_0x13f0('0x22')]===_0x13f0('0x21');var _0x5de34b=_0x1ce94c[_0x13f0('0x23')];var _0x46e1f1=_0x4b2f19?0x0:_0x3dfe4d[_0x13f0('0x20')];var _0x1a3025=_0x4b2f19?_0x1ce94c[_0x13f0('0x23')]:_0x3dfe4d['offset']+_0x3dfe4d[_0x13f0('0x22')];var _0x2f81ec;if(_0x1a3025>=_0x5de34b){_0x1a3025=_0x5de34b;_0x2f81ec=0xc8;}else{_0x2f81ec=0xce;}_0xe2f10f[_0x13f0('0x1d')](_0x2f81ec);return _0xe2f10f[_0x13f0('0x24')]('Content-Range',_0x46e1f1+'-'+_0x1a3025+'/'+_0x5de34b)[_0x13f0('0x1f')](_0x1ce94c);}return null;};}function patchUpdates(_0xececcf){return function(_0x1da4b9){try{jsonpatch[_0x13f0('0x25')](_0x1da4b9,_0xececcf,!![]);}catch(_0x10b762){return BPromise[_0x13f0('0x26')](_0x10b762);}return _0x1da4b9[_0x13f0('0x27')]();};}function saveUpdates(_0x275a23,_0x15b721){return function(_0x43cfec){if(_0x43cfec){return _0x43cfec['update'](_0x275a23)['then'](function(_0x5e2448){return _0x5e2448;});}return null;};}function removeEntity(_0x291fb2,_0x359c82){return function(_0x4ffc03){if(_0x4ffc03){return _0x4ffc03[_0x13f0('0x28')]()[_0x13f0('0x29')](function(){var _0x195ee2=_0x4ffc03[_0x13f0('0x2a')]({'plain':!![]});var _0x2a5324=_0x13f0('0x2b');return db[_0x13f0('0x2c')]['destroy']({'where':{'type':_0x2a5324,'resourceId':_0x195ee2['id']}})[_0x13f0('0x29')](function(){return _0x4ffc03;});})[_0x13f0('0x29')](function(){_0x291fb2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f15dd,_0x397174){return function(_0x1d6e66){if(!_0x1d6e66){_0x1f15dd[_0x13f0('0x1c')](0x194);}return _0x1d6e66;};}function handleError(_0x447590,_0x513b1d){_0x513b1d=_0x513b1d||0x1f4;return function(_0x124237){logger[_0x13f0('0x2d')](_0x124237[_0x13f0('0x2e')]);if(_0x124237[_0x13f0('0x2f')]){delete _0x124237[_0x13f0('0x2f')];}_0x447590[_0x13f0('0x1d')](_0x513b1d)[_0x13f0('0x30')](_0x124237);};}exports[_0x13f0('0x31')]=function(_0x51d904,_0x5dfbf5){var _0x2c7b03={},_0x24f2aa={},_0x1a1ca3={'count':0x0,'rows':[]};var _0x4ee020=_['map'](db['SquareProject'][_0x13f0('0x32')],function(_0x3412be){return{'name':_0x3412be['fieldName'],'type':_0x3412be['type']['key']};});_0x24f2aa['model']=_['map'](_0x4ee020,_0x13f0('0x2f'));_0x24f2aa['query']=_[_0x13f0('0x33')](_0x51d904['query']);_0x24f2aa[_0x13f0('0x34')]=_['intersection'](_0x24f2aa[_0x13f0('0x35')],_0x24f2aa[_0x13f0('0x36')]);_0x2c7b03[_0x13f0('0x37')]=_['intersection'](_0x24f2aa[_0x13f0('0x35')],qs[_0x13f0('0x38')](_0x51d904['query'][_0x13f0('0x38')]));_0x2c7b03[_0x13f0('0x37')]=_0x2c7b03[_0x13f0('0x37')][_0x13f0('0x39')]?_0x2c7b03['attributes']:_0x24f2aa[_0x13f0('0x35')];if(!_0x51d904['query'][_0x13f0('0x3a')](_0x13f0('0x3b'))){_0x2c7b03[_0x13f0('0x22')]=qs[_0x13f0('0x22')](_0x51d904['query']['limit']);_0x2c7b03[_0x13f0('0x20')]=qs[_0x13f0('0x20')](_0x51d904['query']['offset']);}_0x2c7b03[_0x13f0('0x3c')]=qs['sort'](_0x51d904[_0x13f0('0x36')]['sort']);_0x2c7b03[_0x13f0('0x3d')]=qs[_0x13f0('0x34')](_[_0x13f0('0x3e')](_0x51d904[_0x13f0('0x36')],_0x24f2aa[_0x13f0('0x34')]),_0x4ee020);if(_0x51d904[_0x13f0('0x36')][_0x13f0('0x3f')]){_0x2c7b03['where']=_['merge'](_0x2c7b03[_0x13f0('0x3d')],{'$or':_[_0x13f0('0x40')](_0x4ee020,function(_0x5aafec){if(_0x5aafec[_0x13f0('0x41')]!=='VIRTUAL'){var _0x19a178={};_0x19a178[_0x5aafec[_0x13f0('0x2f')]]={'$like':'%'+_0x51d904['query'][_0x13f0('0x3f')]+'%'};return _0x19a178;}})});}_0x2c7b03=_[_0x13f0('0x42')]({},_0x2c7b03,_0x51d904[_0x13f0('0x43')]);var _0x3feefa={'where':_0x2c7b03[_0x13f0('0x3d')]};return db[_0x13f0('0x44')][_0x13f0('0x23')](_0x3feefa)[_0x13f0('0x29')](function(_0x157883){_0x1a1ca3[_0x13f0('0x23')]=_0x157883;if(_0x51d904[_0x13f0('0x36')][_0x13f0('0x45')]){_0x2c7b03[_0x13f0('0x46')]=[{'all':!![]}];}return db['SquareProject'][_0x13f0('0x47')](_0x2c7b03);})[_0x13f0('0x29')](function(_0xae46c8){_0x1a1ca3['rows']=_0xae46c8;return _0x1a1ca3;})[_0x13f0('0x29')](respondWithFilteredResult(_0x5dfbf5,_0x2c7b03))[_0x13f0('0x48')](handleError(_0x5dfbf5,null));};exports['show']=function(_0x2e2f43,_0x1c8783){var _0x4a92f5={'raw':![],'where':{'id':_0x2e2f43['params']['id']}},_0x138846={};_0x138846[_0x13f0('0x35')]=_[_0x13f0('0x33')](db[_0x13f0('0x44')][_0x13f0('0x32')]);_0x138846['query']=_[_0x13f0('0x33')](_0x2e2f43[_0x13f0('0x36')]);_0x138846[_0x13f0('0x34')]=_[_0x13f0('0x49')](_0x138846[_0x13f0('0x35')],_0x138846[_0x13f0('0x36')]);_0x4a92f5[_0x13f0('0x37')]=_['intersection'](_0x138846[_0x13f0('0x35')],qs[_0x13f0('0x38')](_0x2e2f43[_0x13f0('0x36')][_0x13f0('0x38')]));_0x4a92f5[_0x13f0('0x37')]=_0x4a92f5[_0x13f0('0x37')][_0x13f0('0x39')]?_0x4a92f5['attributes']:_0x138846['model'];if(_0x2e2f43[_0x13f0('0x36')][_0x13f0('0x45')]){_0x4a92f5[_0x13f0('0x46')]=[{'all':!![]}];}_0x4a92f5=_[_0x13f0('0x42')]({},_0x4a92f5,_0x2e2f43[_0x13f0('0x43')]);return db[_0x13f0('0x44')][_0x13f0('0x4a')](_0x4a92f5)['then'](handleEntityNotFound(_0x1c8783,null))[_0x13f0('0x29')](respondWithResult(_0x1c8783,null))[_0x13f0('0x48')](handleError(_0x1c8783,null));};exports['create']=function(_0x33e2df,_0xd2299){return db[_0x13f0('0x44')]['create'](_0x33e2df[_0x13f0('0x4b')],{})[_0x13f0('0x29')](function(_0x4fd253){var _0x51b596=_0x33e2df['user'][_0x13f0('0x2a')]({'plain':!![]});if(!_0x51b596)throw new Error(_0x13f0('0x4c'));if(_0x51b596[_0x13f0('0x4d')]===_0x13f0('0x4e')){var _0x2b53d9=_0x4fd253['get']({'plain':!![]});var _0x49309e=_0x13f0('0x2b');return db['UserProfileSection'][_0x13f0('0x4a')]({'where':{'name':_0x49309e,'userProfileId':_0x51b596['userProfileId']},'raw':!![]})[_0x13f0('0x29')](function(_0x48019b){if(_0x48019b&&_0x48019b[_0x13f0('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x2b53d9['name'],'resourceId':_0x2b53d9['id'],'type':_0x48019b[_0x13f0('0x2f')],'sectionId':_0x48019b['id']},{})[_0x13f0('0x29')](function(){return _0x4fd253;});}else{return _0x4fd253;}})[_0x13f0('0x48')](function(_0x201b9c){logger[_0x13f0('0x2d')](_0x13f0('0x50'),_0x201b9c);throw _0x201b9c;});}return _0x4fd253;})['then'](respondWithResult(_0xd2299,0xc9))['catch'](handleError(_0xd2299,null));};exports['update']=function(_0x459ec2,_0x4525e3){if(_0x459ec2[_0x13f0('0x4b')]['id']){delete _0x459ec2[_0x13f0('0x4b')]['id'];}return db[_0x13f0('0x44')]['find']({'where':{'id':_0x459ec2[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x4525e3,null))[_0x13f0('0x29')](saveUpdates(_0x459ec2['body'],null))['then'](respondWithResult(_0x4525e3,null))['catch'](handleError(_0x4525e3,null));};exports[_0x13f0('0x28')]=function(_0x1c4e73,_0x6f8eb){return db[_0x13f0('0x44')][_0x13f0('0x4a')]({'where':{'id':_0x1c4e73[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x6f8eb,null))['then'](removeEntity(_0x6f8eb,null))['catch'](handleError(_0x6f8eb,null));};exports['addUsers']=function(_0x15c86a,_0x41146f,_0x1250dc){return db[_0x13f0('0x44')][_0x13f0('0x4a')]({'where':{'id':_0x15c86a[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x41146f,null))[_0x13f0('0x29')](function(_0x2be0af){if(_0x2be0af){return _0x2be0af[_0x13f0('0x52')](_0x15c86a[_0x13f0('0x4b')][_0x13f0('0x53')],_[_0x13f0('0x54')](_0x15c86a[_0x13f0('0x4b')],[_0x13f0('0x53'),'id'])||{});}})['then'](respondWithResult(_0x41146f,null))[_0x13f0('0x48')](handleError(_0x41146f,null));};exports[_0x13f0('0x55')]=function(_0x4c7f34,_0x3d17cd,_0x234b49){return db[_0x13f0('0x44')][_0x13f0('0x4a')]({'where':{'id':_0x4c7f34[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x3d17cd,null))[_0x13f0('0x29')](function(_0x7c17f7){if(_0x7c17f7){return _0x7c17f7[_0x13f0('0x55')](_0x4c7f34['query'][_0x13f0('0x53')])[_0x13f0('0x29')](function(){if(_[_0x13f0('0x56')](_0x4c7f34['query'][_0x13f0('0x53')])){for(var _0x5c82eb=0x0;_0x5c82eb<_0x4c7f34['query'][_0x13f0('0x53')][_0x13f0('0x39')];_0x5c82eb+=0x1){socket[_0x13f0('0x57')](_0x13f0('0x58'),{'UserId':Number(_0x4c7f34[_0x13f0('0x36')]['ids'][_0x5c82eb]),'SquareProjectId':Number(_0x4c7f34[_0x13f0('0x51')]['id'])});}}else{socket[_0x13f0('0x57')]('userSquareProject:remove',{'UserId':Number(_0x4c7f34[_0x13f0('0x36')][_0x13f0('0x53')]),'SquareProjectId':Number(_0x4c7f34['params']['id'])});}});}})[_0x13f0('0x29')](respondWithStatusCode(_0x3d17cd,null))[_0x13f0('0x48')](handleError(_0x3d17cd,null));};exports[_0x13f0('0x59')]=function(_0x39c3ef,_0x440885,_0x20dd13){var _0x4d0ccd={};var _0x24b828={};var _0x7f3b5f;var _0x54d86c;return db['SquareProject']['findOne']({'where':{'id':_0x39c3ef[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x440885,null))['then'](function(_0x112d05){if(_0x112d05){_0x7f3b5f=_0x112d05;_0x24b828[_0x13f0('0x35')]=_['keys'](db[_0x13f0('0x5a')][_0x13f0('0x32')]);_0x24b828[_0x13f0('0x36')]=_['keys'](_0x39c3ef[_0x13f0('0x36')]);_0x24b828[_0x13f0('0x34')]=_['intersection'](_0x24b828[_0x13f0('0x35')],_0x24b828[_0x13f0('0x36')]);_0x4d0ccd['attributes']=_['intersection'](_0x24b828[_0x13f0('0x35')],qs[_0x13f0('0x38')](_0x39c3ef[_0x13f0('0x36')][_0x13f0('0x38')]));_0x4d0ccd[_0x13f0('0x37')]=_0x4d0ccd[_0x13f0('0x37')][_0x13f0('0x39')]?_0x4d0ccd[_0x13f0('0x37')]:_0x24b828[_0x13f0('0x35')];_0x4d0ccd[_0x13f0('0x3c')]=qs[_0x13f0('0x5b')](_0x39c3ef[_0x13f0('0x36')]['sort']);_0x4d0ccd['where']=qs['filters'](_['pick'](_0x39c3ef[_0x13f0('0x36')],_0x24b828[_0x13f0('0x34')]));if(_0x39c3ef[_0x13f0('0x36')][_0x13f0('0x3f')]){_0x4d0ccd[_0x13f0('0x3d')]=_[_0x13f0('0x42')](_0x4d0ccd[_0x13f0('0x3d')],{'$or':_[_0x13f0('0x40')](_0x4d0ccd[_0x13f0('0x37')],function(_0x14b096){var _0x1eb16c={};_0x1eb16c[_0x14b096]={'$like':'%'+_0x39c3ef['query'][_0x13f0('0x3f')]+'%'};return _0x1eb16c;})});}_0x4d0ccd=_[_0x13f0('0x42')]({},_0x4d0ccd,_0x39c3ef['options']);return _0x7f3b5f[_0x13f0('0x59')](_0x4d0ccd);}})[_0x13f0('0x29')](function(_0x29d0ce){if(_0x29d0ce){_0x54d86c=_0x29d0ce[_0x13f0('0x39')];if(!_0x39c3ef['query'][_0x13f0('0x3a')](_0x13f0('0x3b'))){_0x4d0ccd[_0x13f0('0x22')]=qs[_0x13f0('0x22')](_0x39c3ef[_0x13f0('0x36')][_0x13f0('0x22')]);_0x4d0ccd['offset']=qs[_0x13f0('0x20')](_0x39c3ef[_0x13f0('0x36')]['offset']);}return _0x7f3b5f[_0x13f0('0x59')](_0x4d0ccd);}})[_0x13f0('0x29')](function(_0x30c49c){if(_0x30c49c){return _0x30c49c?{'count':_0x54d86c,'rows':_0x30c49c}:null;}})[_0x13f0('0x29')](respondWithResult(_0x440885,null))[_0x13f0('0x48')](handleError(_0x440885,null));};
\ No newline at end of file
index d431983..c5a8b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b48=['SquareProject','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x46aaca,_0x38531f){var _0x1f928f=function(_0x47d662){while(--_0x47d662){_0x46aaca['push'](_0x46aaca['shift']());}};_0x1f928f(++_0x38531f);}(_0x0b48,0xc6));var _0x80b4=function(_0x315d5d,_0x2d1146){_0x315d5d=_0x315d5d-0x0;var _0x169e12=_0x0b48[_0x315d5d];return _0x169e12;};'use strict';var EventEmitter=require(_0x80b4('0x0'));var SquareProject=require(_0x80b4('0x1'))['db'][_0x80b4('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x80b4('0x3')](0x0);var events={'afterCreate':_0x80b4('0x4'),'afterUpdate':_0x80b4('0x5'),'afterDestroy':'remove'};function emitEvent(_0x18431f){return function(_0x15e1dc,_0x2eaf94,_0x912e52){SquareProjectEvents[_0x80b4('0x6')](_0x18431f+':'+_0x15e1dc['id'],_0x15e1dc);SquareProjectEvents['emit'](_0x18431f,_0x15e1dc);_0x912e52(null);};}for(var e in events){if(events[_0x80b4('0x7')](e)){var event=events[e];SquareProject[_0x80b4('0x8')](e,emitEvent(event));}}module[_0x80b4('0x9')]=SquareProjectEvents;
\ No newline at end of file
+var _0xc895=['exports','events','../../mysqldb','SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xc895,0x1cf));var _0x5c89=function(_0x20bc10,_0x35bed9){_0x20bc10=_0x20bc10-0x0;var _0x3bd5ce=_0xc895[_0x20bc10];return _0x3bd5ce;};'use strict';var EventEmitter=require(_0x5c89('0x0'));var SquareProject=require(_0x5c89('0x1'))['db'][_0x5c89('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x5c89('0x3')](0x0);var events={'afterCreate':_0x5c89('0x4'),'afterUpdate':_0x5c89('0x5'),'afterDestroy':_0x5c89('0x6')};function emitEvent(_0x18208f){return function(_0x8c7041,_0x59a1c1,_0x47e1bc){SquareProjectEvents['emit'](_0x18208f+':'+_0x8c7041['id'],_0x8c7041);SquareProjectEvents[_0x5c89('0x7')](_0x18208f,_0x8c7041);_0x47e1bc(null);};}for(var e in events){if(events[_0x5c89('0x8')](e)){var event=events[e];SquareProject[_0x5c89('0x9')](e,emitEvent(event));}}module[_0x5c89('0xa')]=SquareProjectEvents;
\ No newline at end of file
index 87c2996..82a3a81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c2b=['savedAt','production','publishedAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SquareProject','square_projects','changed'];(function(_0x1d3906,_0x551f8c){var _0x90e496=function(_0x13e6ac){while(--_0x13e6ac){_0x1d3906['push'](_0x1d3906['shift']());}};_0x90e496(++_0x551f8c);}(_0x8c2b,0x81));var _0xb8c2=function(_0x9c8b0c,_0x41ee23){_0x9c8b0c=_0x9c8b0c-0x0;var _0x478fc4=_0x8c2b[_0x9c8b0c];return _0x478fc4;};'use strict';var _=require(_0xb8c2('0x0'));var util=require(_0xb8c2('0x1'));var logger=require(_0xb8c2('0x2'))(_0xb8c2('0x3'));var moment=require(_0xb8c2('0x4'));var BPromise=require(_0xb8c2('0x5'));var rp=require(_0xb8c2('0x6'));var fs=require('fs');var path=require(_0xb8c2('0x7'));var rimraf=require(_0xb8c2('0x8'));var config=require(_0xb8c2('0x9'));var attributes=require('./squareProject.attributes');module[_0xb8c2('0xa')]=function(_0x20fb53,_0x27e26b){return _0x20fb53[_0xb8c2('0xb')](_0xb8c2('0xc'),attributes,{'tableName':_0xb8c2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3edae0,_0x365a65,_0x495d27){if(_0x3edae0[_0xb8c2('0xe')]('preproduction')){_0x3edae0[_0xb8c2('0xf')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x3edae0[_0xb8c2('0xe')](_0xb8c2('0x10'))){_0x3edae0[_0xb8c2('0x11')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x495d27(null,_0x3edae0);}}});};
\ No newline at end of file
+var _0xd3e5=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./squareProject.attributes','exports','square_projects','changed','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt'];(function(_0x4b0d20,_0x6439ec){var _0x566217=function(_0x35dd8c){while(--_0x35dd8c){_0x4b0d20['push'](_0x4b0d20['shift']());}};_0x566217(++_0x6439ec);}(_0xd3e5,0x154));var _0x5d3e=function(_0x594dbb,_0x617fd3){_0x594dbb=_0x594dbb-0x0;var _0xe9a0d2=_0xd3e5[_0x594dbb];return _0xe9a0d2;};'use strict';var _=require(_0x5d3e('0x0'));var util=require(_0x5d3e('0x1'));var logger=require(_0x5d3e('0x2'))(_0x5d3e('0x3'));var moment=require(_0x5d3e('0x4'));var BPromise=require(_0x5d3e('0x5'));var rp=require(_0x5d3e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5d3e('0x7'));var attributes=require(_0x5d3e('0x8'));module[_0x5d3e('0x9')]=function(_0x4496ad,_0x1f768f){return _0x4496ad['define']('SquareProject',attributes,{'tableName':_0x5d3e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x456fd0,_0x3c328d,_0x3008a5){if(_0x456fd0[_0x5d3e('0xb')]('preproduction')){_0x456fd0[_0x5d3e('0xc')]=moment()[_0x5d3e('0xd')](_0x5d3e('0xe'));}if(_0x456fd0[_0x5d3e('0xb')](_0x5d3e('0xf'))){_0x456fd0[_0x5d3e('0x10')]=moment()[_0x5d3e('0xd')](_0x5d3e('0xe'));}_0x3008a5(null,_0x456fd0);}}});};
\ No newline at end of file
index a94f259..9083911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7165=['request','then','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSquareProject','SquareProject','find','options','where','attributes','include','map','model','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','socket.io-emitter','register'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x7165,0x112));var _0x5716=function(_0xb5fc12,_0x52af9e){_0xb5fc12=_0xb5fc12-0x0;var _0x41063c=_0x7165[_0xb5fc12];return _0x41063c;};'use strict';var _=require(_0x5716('0x0'));var util=require('util');var moment=require(_0x5716('0x1'));var BPromise=require('bluebird');var rs=require(_0x5716('0x2'));var fs=require('fs');var Redis=require(_0x5716('0x3'));var db=require(_0x5716('0x4'))['db'];var utils=require(_0x5716('0x5'));var logger=require(_0x5716('0x6'))(_0x5716('0x7'));var config=require(_0x5716('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5716('0x9')]({'port':0x232a});config[_0x5716('0xa')]=_[_0x5716('0xb')](config[_0x5716('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x5716('0xc'))(new Redis(config[_0x5716('0xa')]));require('./squareProject.socket')[_0x5716('0xd')](socket);function respondWithRpcPromise(_0xfb7b42,_0x413ce9,_0x10fd54){return new BPromise(function(_0x4ee002,_0x42e575){return client[_0x5716('0xe')](_0xfb7b42,_0x10fd54)[_0x5716('0xf')](function(_0x636be){logger['info'](_0x5716('0x10'),_0x413ce9,_0x5716('0x11'));logger[_0x5716('0x12')](_0x5716('0x13'),_0x413ce9,_0x5716('0x11'),JSON[_0x5716('0x14')](_0x636be));if(_0x636be[_0x5716('0x15')]){if(_0x636be[_0x5716('0x15')][_0x5716('0x16')]===0x1f4){logger[_0x5716('0x15')](_0x5716('0x10'),_0x413ce9,_0x636be['error'][_0x5716('0x17')]);return _0x42e575(_0x636be['error'][_0x5716('0x17')]);}logger[_0x5716('0x15')](_0x5716('0x10'),_0x413ce9,_0x636be[_0x5716('0x15')][_0x5716('0x17')]);return _0x4ee002(_0x636be['error'][_0x5716('0x17')]);}else{logger[_0x5716('0x18')]('SquareProject,\x20%s,\x20%s',_0x413ce9,_0x5716('0x11'));_0x4ee002(_0x636be[_0x5716('0x19')][_0x5716('0x17')]);}})[_0x5716('0x1a')](function(_0x470fc7){logger[_0x5716('0x15')]('SquareProject,\x20%s,\x20%s',_0x413ce9,_0x470fc7);_0x42e575(_0x470fc7);});});}exports[_0x5716('0x1b')]=function(_0x5380b0){var _0x49d153=this;return new Promise(function(_0x3988a7,_0x7df5c3){return db[_0x5716('0x1c')][_0x5716('0x1d')]({'raw':_0x5380b0[_0x5716('0x1e')]?_0x5380b0['options']['raw']===undefined?!![]:![]:!![],'where':_0x5380b0[_0x5716('0x1e')]?_0x5380b0[_0x5716('0x1e')][_0x5716('0x1f')]||null:null,'attributes':_0x5380b0[_0x5716('0x1e')]?_0x5380b0[_0x5716('0x1e')][_0x5716('0x20')]||null:null,'include':_0x5380b0[_0x5716('0x1e')]?_0x5380b0[_0x5716('0x1e')][_0x5716('0x21')]?_[_0x5716('0x22')](_0x5380b0[_0x5716('0x1e')]['include'],function(_0x4a7bca){return{'model':db[_0x4a7bca['model']],'as':_0x4a7bca['as'],'attributes':_0x4a7bca[_0x5716('0x20')],'include':_0x4a7bca['include']?_['map'](_0x4a7bca[_0x5716('0x21')],function(_0x1641ce){return{'model':db[_0x1641ce['model']],'as':_0x1641ce['as'],'attributes':_0x1641ce[_0x5716('0x20')],'include':_0x1641ce['include']?_['map'](_0x1641ce['include'],function(_0x2cc8b8){return{'model':db[_0x2cc8b8[_0x5716('0x23')]],'as':_0x2cc8b8['as'],'attributes':_0x2cc8b8['attributes']};}):[]};}):[]};}):[]:[]})[_0x5716('0xf')](function(_0x467f86){logger[_0x5716('0x18')](_0x5716('0x1b'),_0x5380b0);logger[_0x5716('0x12')](_0x5716('0x1b'),_0x5380b0,JSON[_0x5716('0x14')](_0x467f86));_0x3988a7(_0x467f86);})['catch'](function(_0x495cb3){logger[_0x5716('0x15')]('ShowSquareProject',_0x495cb3['message'],_0x5380b0);_0x7df5c3(_0x49d153['error'](0x1f4,_0x495cb3['message']));});});};
\ No newline at end of file
+var _0x5554=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','localhost','socket.io-emitter','./squareProject.socket','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSquareProject','SquareProject','find','raw','options','where','attributes','model','include','map','lodash','util'];(function(_0x433516,_0x1ecae4){var _0x21c7b6=function(_0x365e18){while(--_0x365e18){_0x433516['push'](_0x433516['shift']());}};_0x21c7b6(++_0x1ecae4);}(_0x5554,0x92));var _0x4555=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x5554[_0xc67528];return _0x38e26d;};'use strict';var _=require(_0x4555('0x0'));var util=require(_0x4555('0x1'));var moment=require(_0x4555('0x2'));var BPromise=require('bluebird');var rs=require(_0x4555('0x3'));var fs=require('fs');var Redis=require(_0x4555('0x4'));var db=require(_0x4555('0x5'))['db'];var utils=require(_0x4555('0x6'));var logger=require(_0x4555('0x7'))(_0x4555('0x8'));var config=require('../../config/environment');var jayson=require(_0x4555('0x9'));var client=jayson[_0x4555('0xa')]['http']({'port':0x232a});config[_0x4555('0xb')]=_['defaults'](config[_0x4555('0xb')],{'host':_0x4555('0xc'),'port':0x18eb});var socket=require(_0x4555('0xd'))(new Redis(config[_0x4555('0xb')]));require(_0x4555('0xe'))[_0x4555('0xf')](socket);function respondWithRpcPromise(_0x4a75c7,_0xf76291,_0x30977c){return new BPromise(function(_0x3e131d,_0x50390d){return client[_0x4555('0x10')](_0x4a75c7,_0x30977c)[_0x4555('0x11')](function(_0x2ba4c1){logger[_0x4555('0x12')](_0x4555('0x13'),_0xf76291,_0x4555('0x14'));logger['debug'](_0x4555('0x15'),_0xf76291,_0x4555('0x14'),JSON[_0x4555('0x16')](_0x2ba4c1));if(_0x2ba4c1[_0x4555('0x17')]){if(_0x2ba4c1[_0x4555('0x17')]['code']===0x1f4){logger[_0x4555('0x17')](_0x4555('0x13'),_0xf76291,_0x2ba4c1['error']['message']);return _0x50390d(_0x2ba4c1['error'][_0x4555('0x18')]);}logger['error']('SquareProject,\x20%s,\x20%s',_0xf76291,_0x2ba4c1[_0x4555('0x17')]['message']);return _0x3e131d(_0x2ba4c1['error'][_0x4555('0x18')]);}else{logger['info'](_0x4555('0x13'),_0xf76291,'request\x20sent');_0x3e131d(_0x2ba4c1[_0x4555('0x19')]['message']);}})[_0x4555('0x1a')](function(_0x38eec9){logger[_0x4555('0x17')](_0x4555('0x13'),_0xf76291,_0x38eec9);_0x50390d(_0x38eec9);});});}exports[_0x4555('0x1b')]=function(_0x312af0){var _0x528ecd=this;return new Promise(function(_0x17e713,_0x3dc5ac){return db[_0x4555('0x1c')][_0x4555('0x1d')]({'raw':_0x312af0['options']?_0x312af0['options'][_0x4555('0x1e')]===undefined?!![]:![]:!![],'where':_0x312af0[_0x4555('0x1f')]?_0x312af0['options'][_0x4555('0x20')]||null:null,'attributes':_0x312af0[_0x4555('0x1f')]?_0x312af0[_0x4555('0x1f')][_0x4555('0x21')]||null:null,'include':_0x312af0[_0x4555('0x1f')]?_0x312af0['options']['include']?_['map'](_0x312af0[_0x4555('0x1f')]['include'],function(_0x24cb15){return{'model':db[_0x24cb15[_0x4555('0x22')]],'as':_0x24cb15['as'],'attributes':_0x24cb15['attributes'],'include':_0x24cb15[_0x4555('0x23')]?_[_0x4555('0x24')](_0x24cb15['include'],function(_0x3c1707){return{'model':db[_0x3c1707[_0x4555('0x22')]],'as':_0x3c1707['as'],'attributes':_0x3c1707[_0x4555('0x21')],'include':_0x3c1707[_0x4555('0x23')]?_[_0x4555('0x24')](_0x3c1707[_0x4555('0x23')],function(_0xae65dc){return{'model':db[_0xae65dc['model']],'as':_0xae65dc['as'],'attributes':_0xae65dc[_0x4555('0x21')]};}):[]};}):[]};}):[]:[]})[_0x4555('0x11')](function(_0x3aa47d){logger[_0x4555('0x12')](_0x4555('0x1b'),_0x312af0);logger['debug'](_0x4555('0x1b'),_0x312af0,JSON[_0x4555('0x16')](_0x3aa47d));_0x17e713(_0x3aa47d);})['catch'](function(_0xcb41db){logger[_0x4555('0x17')](_0x4555('0x1b'),_0xcb41db['message'],_0x312af0);_0x3dc5ac(_0x528ecd[_0x4555('0x17')](0x1f4,_0xcb41db[_0x4555('0x18')]));});});};
\ No newline at end of file
index 00f462e..2139415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac8=['length','squareProject:','./squareProject.events','save','remove','update','removeListener','register'];(function(_0x1ecaeb,_0x4ce41a){var _0xd2053=function(_0x51ff4e){while(--_0x51ff4e){_0x1ecaeb['push'](_0x1ecaeb['shift']());}};_0xd2053(++_0x4ce41a);}(_0x6ac8,0x15a));var _0x86ac=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x6ac8[_0x4e9628];return _0x27bc8c;};'use strict';var SquareProjectEvents=require(_0x86ac('0x0'));var events=[_0x86ac('0x1'),_0x86ac('0x2'),_0x86ac('0x3')];function createListener(_0xd14896,_0x212040){return function(_0x2b2b36){_0x212040['emit'](_0xd14896,_0x2b2b36);};}function removeListener(_0x7ab43a,_0x449df5){return function(){SquareProjectEvents[_0x86ac('0x4')](_0x7ab43a,_0x449df5);};}exports[_0x86ac('0x5')]=function(_0x4d9a41){for(var _0x3c214f=0x0,_0x9d353=events[_0x86ac('0x6')];_0x3c214f<_0x9d353;_0x3c214f++){var _0x8808dc=events[_0x3c214f];var _0x2fbcee=createListener(_0x86ac('0x7')+_0x8808dc,_0x4d9a41);SquareProjectEvents['on'](_0x8808dc,_0x2fbcee);}};
\ No newline at end of file
+var _0x18de=['update','emit','removeListener','register','squareProject:','./squareProject.events','save','remove'];(function(_0x31055b,_0x112394){var _0xb3e22f=function(_0x33973f){while(--_0x33973f){_0x31055b['push'](_0x31055b['shift']());}};_0xb3e22f(++_0x112394);}(_0x18de,0x19d));var _0xe18d=function(_0x4477ba,_0x2adf18){_0x4477ba=_0x4477ba-0x0;var _0x1d1bc3=_0x18de[_0x4477ba];return _0x1d1bc3;};'use strict';var SquareProjectEvents=require(_0xe18d('0x0'));var events=[_0xe18d('0x1'),_0xe18d('0x2'),_0xe18d('0x3')];function createListener(_0x2bee05,_0x4e55ed){return function(_0xfadd28){_0x4e55ed[_0xe18d('0x4')](_0x2bee05,_0xfadd28);};}function removeListener(_0x52b20c,_0x17f96a){return function(){SquareProjectEvents[_0xe18d('0x5')](_0x52b20c,_0x17f96a);};}exports[_0xe18d('0x6')]=function(_0x4b4742){for(var _0x53e951=0x0,_0x3a006f=events['length'];_0x53e951<_0x3a006f;_0x53e951++){var _0xc07d28=events[_0x53e951];var _0x35f961=createListener(_0xe18d('0x7')+_0xc07d28,_0x4b4742);SquareProjectEvents['on'](_0xc07d28,_0x35f961);}};
\ No newline at end of file
index e5cd0ab..495b925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0x48bed1,_0x5ba87d){var _0x17a796=function(_0x163d29){while(--_0x163d29){_0x48bed1['push'](_0x48bed1['shift']());}};_0x17a796(++_0x5ba87d);}(_0x5fab,0x177));var _0xb5fa=function(_0x1d606e,_0x438c6a){_0x1d606e=_0x1d606e-0x0;var _0x528543=_0x5fab[_0x1d606e];return _0x528543;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0x11')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0x13')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x5fab=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0x507a50,_0x5a03e8){var _0x47bc3a=function(_0x1caf53){while(--_0x1caf53){_0x507a50['push'](_0x507a50['shift']());}};_0x47bc3a(++_0x5a03e8);}(_0x5fab,0x177));var _0xb5fa=function(_0x2f8805,_0x2f1d21){_0x2f8805=_0x2f8805-0x0;var _0xa16375=_0x5fab[_0x2f8805];return _0xa16375;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0x11')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0x13')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x14')]);module['exports']=router;
\ No newline at end of file
index 34fbc18..3165a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['getDataValue','savePath','substring','sequelize','STRING'];(function(_0x1528df,_0xca312b){var _0x366a50=function(_0x2c8b3e){while(--_0x2c8b3e){_0x1528df['push'](_0x1528df['shift']());}};_0x366a50(++_0xca312b);}(_0x3e74,0x175));var _0x43e7=function(_0xf2710f,_0x4b5d23){_0xf2710f=_0xf2710f-0x0;var _0x3112c3=_0x3e74[_0xf2710f];return _0x3112c3;};'use strict';var Sequelize=require(_0x43e7('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x43e7('0x1')]},'callerid':{'type':Sequelize[_0x43e7('0x1')]},'calleridname':{'type':Sequelize[_0x43e7('0x1')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x43e7('0x1')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x43e7('0x1')]},'projectName':{'type':Sequelize[_0x43e7('0x1')]},'saveName':{'type':Sequelize[_0x43e7('0x1')]},'filename':{'type':Sequelize[_0x43e7('0x1')]},'savePath':{'type':Sequelize[_0x43e7('0x1')]},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0x45a0d1='';var _0x3491d6=this[_0x43e7('0x2')](_0x43e7('0x3'));if(_0x3491d6){_0x45a0d1=_0x3491d6[_0x43e7('0x4')](_0x3491d6['lastIndexOf']('.'));}return _0x45a0d1;}}};
\ No newline at end of file
+var _0xf494=['STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf','sequelize','exports'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0xf494,0x1c6));var _0x4f49=function(_0x2bcd2e,_0x55f914){_0x2bcd2e=_0x2bcd2e-0x0;var _0x361472=_0xf494[_0x2bcd2e];return _0x361472;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'uniqueid':{'type':Sequelize[_0x4f49('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x4f49('0x2')]},'context':{'type':Sequelize[_0x4f49('0x2')]},'extension':{'type':Sequelize[_0x4f49('0x2')]},'priority':{'type':Sequelize[_0x4f49('0x2')]},'accountcode':{'type':Sequelize[_0x4f49('0x2')]},'dnid':{'type':Sequelize[_0x4f49('0x2')]},'projectName':{'type':Sequelize[_0x4f49('0x2')]},'saveName':{'type':Sequelize[_0x4f49('0x2')]},'filename':{'type':Sequelize[_0x4f49('0x2')]},'savePath':{'type':Sequelize[_0x4f49('0x2')]},'format':{'type':Sequelize[_0x4f49('0x3')],'get':function(){var _0x5eb186='';var _0x58e9a0=this[_0x4f49('0x4')](_0x4f49('0x5'));if(_0x58e9a0){_0x5eb186=_0x58e9a0[_0x4f49('0x6')](_0x58e9a0[_0x4f49('0x7')]('.'));}return _0x5eb186;}}};
\ No newline at end of file
index 8691198..834b96a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0f0=['json','offset','undefined','limit','count','set','Content-Range','save','update','error','stack','name','send','index','map','SquareRecording','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','include','findAll','catch','show','includeAll','find','create','body','params','download','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','SquareRecording\x20not\x20found','unlink','message','Not\x20found','destroy','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end'];(function(_0x378eb2,_0x42bfe3){var _0x1437cc=function(_0x27c09b){while(--_0x27c09b){_0x378eb2['push'](_0x378eb2['shift']());}};_0x1437cc(++_0x42bfe3);}(_0xa0f0,0x170));var _0x0a0f=function(_0x40c0ff,_0x32ef02){_0x40c0ff=_0x40c0ff-0x0;var _0x59f4d1=_0xa0f0[_0x40c0ff];return _0x59f4d1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0a0f('0x0'));var zipdir=require(_0x0a0f('0x1'));var jsonpatch=require(_0x0a0f('0x2'));var rp=require(_0x0a0f('0x3'));var moment=require(_0x0a0f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0a0f('0x5'));var util=require(_0x0a0f('0x6'));var path=require('path');var sox=require(_0x0a0f('0x7'));var csv=require(_0x0a0f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a0f('0x9'));var _=require(_0x0a0f('0xa'));var squel=require(_0x0a0f('0xb'));var crypto=require(_0x0a0f('0xc'));var jsforce=require(_0x0a0f('0xd'));var deskjs=require(_0x0a0f('0xe'));var toCsv=require(_0x0a0f('0x8'));var querystring=require(_0x0a0f('0xf'));var Papa=require(_0x0a0f('0x10'));var Redis=require(_0x0a0f('0x11'));var authService=require(_0x0a0f('0x12'));var qs=require(_0x0a0f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0a0f('0x14'));var logger=require(_0x0a0f('0x15'))(_0x0a0f('0x16'));var utils=require(_0x0a0f('0x17'));var config=require(_0x0a0f('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40304a,_0x16a455){_0x16a455=_0x16a455||0xcc;return function(_0x294ec4){if(_0x294ec4){return _0x40304a[_0x0a0f('0x19')](_0x16a455);}return _0x40304a[_0x0a0f('0x1a')](_0x16a455)[_0x0a0f('0x1b')]();};}function respondWithResult(_0x446250,_0x3a7e0a){_0x3a7e0a=_0x3a7e0a||0xc8;return function(_0x10ebb6){if(_0x10ebb6){return _0x446250[_0x0a0f('0x1a')](_0x3a7e0a)[_0x0a0f('0x1c')](_0x10ebb6);}};}function respondWithFilteredResult(_0x52aea9,_0x44f7b8){return function(_0x42b78f){if(_0x42b78f){var _0x1ec01c=typeof _0x44f7b8[_0x0a0f('0x1d')]===_0x0a0f('0x1e')&&typeof _0x44f7b8[_0x0a0f('0x1f')]===_0x0a0f('0x1e');var _0x2ca307=_0x42b78f[_0x0a0f('0x20')];var _0x93b8f9=_0x1ec01c?0x0:_0x44f7b8[_0x0a0f('0x1d')];var _0x56a579=_0x1ec01c?_0x42b78f['count']:_0x44f7b8['offset']+_0x44f7b8[_0x0a0f('0x1f')];var _0x18b024;if(_0x56a579>=_0x2ca307){_0x56a579=_0x2ca307;_0x18b024=0xc8;}else{_0x18b024=0xce;}_0x52aea9[_0x0a0f('0x1a')](_0x18b024);return _0x52aea9[_0x0a0f('0x21')](_0x0a0f('0x22'),_0x93b8f9+'-'+_0x56a579+'/'+_0x2ca307)[_0x0a0f('0x1c')](_0x42b78f);}return null;};}function patchUpdates(_0x2dec58){return function(_0x42cf42){try{jsonpatch['apply'](_0x42cf42,_0x2dec58,!![]);}catch(_0xb1565c){return BPromise['reject'](_0xb1565c);}return _0x42cf42[_0x0a0f('0x23')]();};}function saveUpdates(_0x1b520b,_0x4f94b3){return function(_0x1e25dc){if(_0x1e25dc){return _0x1e25dc[_0x0a0f('0x24')](_0x1b520b)['then'](function(_0x43c339){return _0x43c339;});}return null;};}function removeEntity(_0x558e56,_0x3766a1){return function(_0x31b590){if(_0x31b590){return _0x31b590['destroy']()['then'](function(){_0x558e56['status'](0xcc)[_0x0a0f('0x1b')]();});}};}function handleEntityNotFound(_0x17d1f8,_0x23925a){return function(_0x1d8793){if(!_0x1d8793){_0x17d1f8[_0x0a0f('0x19')](0x194);}return _0x1d8793;};}function handleError(_0x31f981,_0x9ad12e){_0x9ad12e=_0x9ad12e||0x1f4;return function(_0x540842){logger[_0x0a0f('0x25')](_0x540842[_0x0a0f('0x26')]);if(_0x540842[_0x0a0f('0x27')]){delete _0x540842[_0x0a0f('0x27')];}_0x31f981['status'](_0x9ad12e)[_0x0a0f('0x28')](_0x540842);};}exports[_0x0a0f('0x29')]=function(_0x1b9f84,_0x373716){var _0x518704={},_0x218038={},_0x127d7d={'count':0x0,'rows':[]};var _0x122f25=_[_0x0a0f('0x2a')](db[_0x0a0f('0x2b')][_0x0a0f('0x2c')],function(_0xab479e){return{'name':_0xab479e[_0x0a0f('0x2d')],'type':_0xab479e[_0x0a0f('0x2e')][_0x0a0f('0x2f')]};});_0x218038['model']=_[_0x0a0f('0x2a')](_0x122f25,_0x0a0f('0x27'));_0x218038[_0x0a0f('0x30')]=_[_0x0a0f('0x31')](_0x1b9f84[_0x0a0f('0x30')]);_0x218038[_0x0a0f('0x32')]=_[_0x0a0f('0x33')](_0x218038['model'],_0x218038[_0x0a0f('0x30')]);_0x518704['attributes']=_['intersection'](_0x218038[_0x0a0f('0x34')],qs[_0x0a0f('0x35')](_0x1b9f84[_0x0a0f('0x30')][_0x0a0f('0x35')]));_0x518704[_0x0a0f('0x36')]=_0x518704[_0x0a0f('0x36')][_0x0a0f('0x37')]?_0x518704['attributes']:_0x218038[_0x0a0f('0x34')];if(!_0x1b9f84[_0x0a0f('0x30')]['hasOwnProperty'](_0x0a0f('0x38'))){_0x518704[_0x0a0f('0x1f')]=qs[_0x0a0f('0x1f')](_0x1b9f84[_0x0a0f('0x30')][_0x0a0f('0x1f')]);_0x518704['offset']=qs['offset'](_0x1b9f84[_0x0a0f('0x30')][_0x0a0f('0x1d')]);}_0x518704[_0x0a0f('0x39')]=qs[_0x0a0f('0x3a')](_0x1b9f84[_0x0a0f('0x30')][_0x0a0f('0x3a')]);_0x518704[_0x0a0f('0x3b')]=qs[_0x0a0f('0x32')](_[_0x0a0f('0x3c')](_0x1b9f84[_0x0a0f('0x30')],_0x218038[_0x0a0f('0x32')]),_0x122f25);if(_0x1b9f84[_0x0a0f('0x30')][_0x0a0f('0x3d')]){_0x518704['where']=_[_0x0a0f('0x3e')](_0x518704['where'],{'$or':_[_0x0a0f('0x2a')](_0x122f25,function(_0x4ef581){if(_0x4ef581[_0x0a0f('0x2e')]!==_0x0a0f('0x3f')){var _0x241d90={};_0x241d90[_0x4ef581['name']]={'$like':'%'+_0x1b9f84[_0x0a0f('0x30')][_0x0a0f('0x3d')]+'%'};return _0x241d90;}})});}_0x518704=_[_0x0a0f('0x3e')]({},_0x518704,_0x1b9f84[_0x0a0f('0x40')]);var _0x2d0ff1={'where':_0x518704[_0x0a0f('0x3b')]};return db['SquareRecording']['count'](_0x2d0ff1)[_0x0a0f('0x41')](function(_0x484125){_0x127d7d[_0x0a0f('0x20')]=_0x484125;if(_0x1b9f84['query']['includeAll']){_0x518704[_0x0a0f('0x42')]=[{'all':!![]}];}return db[_0x0a0f('0x2b')][_0x0a0f('0x43')](_0x518704);})[_0x0a0f('0x41')](function(_0x14820b){_0x127d7d['rows']=_0x14820b;return _0x127d7d;})[_0x0a0f('0x41')](respondWithFilteredResult(_0x373716,_0x518704))[_0x0a0f('0x44')](handleError(_0x373716,null));};exports[_0x0a0f('0x45')]=function(_0x26a245,_0x299b5b){var _0x5d0478={'raw':!![],'where':{'id':_0x26a245['params']['id']}},_0x5f42de={};_0x5f42de[_0x0a0f('0x34')]=_['keys'](db[_0x0a0f('0x2b')][_0x0a0f('0x2c')]);_0x5f42de[_0x0a0f('0x30')]=_[_0x0a0f('0x31')](_0x26a245[_0x0a0f('0x30')]);_0x5f42de[_0x0a0f('0x32')]=_['intersection'](_0x5f42de['model'],_0x5f42de[_0x0a0f('0x30')]);_0x5d0478['attributes']=_[_0x0a0f('0x33')](_0x5f42de[_0x0a0f('0x34')],qs['fields'](_0x26a245[_0x0a0f('0x30')][_0x0a0f('0x35')]));_0x5d0478[_0x0a0f('0x36')]=_0x5d0478['attributes'][_0x0a0f('0x37')]?_0x5d0478[_0x0a0f('0x36')]:_0x5f42de[_0x0a0f('0x34')];if(_0x26a245[_0x0a0f('0x30')][_0x0a0f('0x46')]){_0x5d0478[_0x0a0f('0x42')]=[{'all':!![]}];}_0x5d0478=_[_0x0a0f('0x3e')]({},_0x5d0478,_0x26a245[_0x0a0f('0x40')]);return db[_0x0a0f('0x2b')][_0x0a0f('0x47')](_0x5d0478)[_0x0a0f('0x41')](handleEntityNotFound(_0x299b5b,null))[_0x0a0f('0x41')](respondWithResult(_0x299b5b,null))[_0x0a0f('0x44')](handleError(_0x299b5b,null));};exports[_0x0a0f('0x48')]=function(_0x5db8ef,_0x3e96b8){return db['SquareRecording'][_0x0a0f('0x48')](_0x5db8ef[_0x0a0f('0x49')],{})['then'](respondWithResult(_0x3e96b8,0xc9))[_0x0a0f('0x44')](handleError(_0x3e96b8,null));};exports['update']=function(_0x237e25,_0xc8e200){if(_0x237e25['body']['id']){delete _0x237e25[_0x0a0f('0x49')]['id'];}return db[_0x0a0f('0x2b')][_0x0a0f('0x47')]({'where':{'id':_0x237e25[_0x0a0f('0x4a')]['id']}})[_0x0a0f('0x41')](handleEntityNotFound(_0xc8e200,null))[_0x0a0f('0x41')](saveUpdates(_0x237e25['body'],null))[_0x0a0f('0x41')](respondWithResult(_0xc8e200,null))['catch'](handleError(_0xc8e200,null));};exports[_0x0a0f('0x4b')]=function(_0x1ebbce,_0x346d21,_0x15d9ee){var _0x51212e=require('../../components/encryptor');var _0x5102f8=![];var _0x16485a={};if(_0x1ebbce[_0x0a0f('0x30')][_0x0a0f('0x2e')]&&_0x1ebbce[_0x0a0f('0x30')][_0x0a0f('0x2e')]===_0x0a0f('0x4c')){_0x16485a[_0x0a0f('0x4c')]=_0x1ebbce['params']['id'];}else{_0x16485a['id']=_0x1ebbce[_0x0a0f('0x4a')]['id'];}return db[_0x0a0f('0x2b')][_0x0a0f('0x47')]({'where':_0x16485a,'attributes':['id',_0x0a0f('0x4d'),_0x0a0f('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x346d21,null))[_0x0a0f('0x41')](function(_0x3d19eb){if(_0x3d19eb){var _0x379a3a=_0x3d19eb[_0x0a0f('0x4d')];var _0x27729a=util[_0x0a0f('0x4f')](_0x0a0f('0x50'),_0x379a3a);if(fs[_0x0a0f('0x51')](_0x27729a)){_0x5102f8=!![];return _0x51212e[_0x0a0f('0x52')](_0x27729a,_0x379a3a,config[_0x0a0f('0x53')][_0x0a0f('0x54')])[_0x0a0f('0x41')](function(){return _0x3d19eb;});}return _0x3d19eb;}})[_0x0a0f('0x41')](function(_0x557f72){if(_0x557f72){var _0x7fda88=_0x557f72['savePath'];if(!fs[_0x0a0f('0x51')](_0x7fda88)){throw new db[(_0x0a0f('0x55'))]['ValidationError'](_0x0a0f('0x56'));}if(_0x557f72[_0x0a0f('0x4e')]){return _0x346d21[_0x0a0f('0x4b')](_0x7fda88,_0x557f72[_0x0a0f('0x4e')]+path['extname'](_0x7fda88),function(){if(_0x5102f8){fs[_0x0a0f('0x57')](_0x7fda88);}});}else{return _0x346d21[_0x0a0f('0x4b')](_0x7fda88,function(_0x5a254e){if(_0x5102f8){fs[_0x0a0f('0x57')](_0x7fda88);}});}}})[_0x0a0f('0x44')](function(_0x22087f){if(_0x22087f[_0x0a0f('0x58')]==='SquareRecording\x20not\x20found'){_0x346d21[_0x0a0f('0x1a')](0x194)['send'](_0x0a0f('0x59'));}else{return handleError(_0x346d21,null);}});};exports[_0x0a0f('0x5a')]=function(_0x4b271a,_0x2d19e4){return db[_0x0a0f('0x2b')][_0x0a0f('0x47')]({'where':{'id':_0x4b271a[_0x0a0f('0x4a')]['id']}})[_0x0a0f('0x41')](function(_0x374eb2){if(_['isNil'](_0x374eb2)){throw new ReferenceError(_0x0a0f('0x5b'));}return _0x374eb2;})[_0x0a0f('0x41')](function(_0x1100db){var _0x19111f=_0x1100db['savePath'];logger['info'](_0x0a0f('0x5c'),_0x19111f);if(!_[_0x0a0f('0x5d')](_0x1100db[_0x0a0f('0x4d')])&&fs[_0x0a0f('0x51')](_0x19111f)){logger[_0x0a0f('0x5e')](_0x0a0f('0x5f')+_0x19111f+_0x0a0f('0x60'));fs[_0x0a0f('0x61')](_0x19111f);}_0x19111f=_0x19111f+_0x0a0f('0x62');if(!_[_0x0a0f('0x5d')](_0x1100db[_0x0a0f('0x4d')])&&fs[_0x0a0f('0x51')](_0x19111f)){logger['info'](_0x0a0f('0x5f')+_0x19111f+_0x0a0f('0x60'));fs[_0x0a0f('0x61')](_0x19111f);}return _0x1100db;})[_0x0a0f('0x41')](function(_0x14fbcf){if(!_0x14fbcf)throw new InternalError();return _0x14fbcf[_0x0a0f('0x5a')]();})[_0x0a0f('0x41')](function(){_0x2d19e4[_0x0a0f('0x1a')](0xcc)[_0x0a0f('0x1b')]();})[_0x0a0f('0x44')](handleError(_0x2d19e4,null));};
\ No newline at end of file
+var _0x791b=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareRecording','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','download','uniqueid','find','filename','savePath','format','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','message','Not\x20found','Entity\x20not\x20found','info','isNil','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set'];(function(_0x27f680,_0xb59a1b){var _0x1b7293=function(_0x1c6101){while(--_0x1c6101){_0x27f680['push'](_0x27f680['shift']());}};_0x1b7293(++_0xb59a1b);}(_0x791b,0xa4));var _0xb791=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x791b[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0xb791('0x0'));var rimraf=require(_0xb791('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb791('0x2'));var Mustache=require(_0xb791('0x3'));var util=require(_0xb791('0x4'));var path=require(_0xb791('0x5'));var sox=require(_0xb791('0x6'));var csv=require(_0xb791('0x7'));var ejs=require(_0xb791('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb791('0x9'));var squel=require('squel');var crypto=require(_0xb791('0xa'));var jsforce=require(_0xb791('0xb'));var deskjs=require(_0xb791('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb791('0xd'));var Papa=require(_0xb791('0xe'));var Redis=require(_0xb791('0xf'));var authService=require(_0xb791('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xb791('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb791('0x12'));var utils=require(_0xb791('0x13'));var config=require(_0xb791('0x14'));var licenseUtil=require(_0xb791('0x15'));var db=require(_0xb791('0x16'))['db'];function respondWithStatusCode(_0x56acfe,_0x1f6594){_0x1f6594=_0x1f6594||0xcc;return function(_0x4e40a5){if(_0x4e40a5){return _0x56acfe[_0xb791('0x17')](_0x1f6594);}return _0x56acfe['status'](_0x1f6594)[_0xb791('0x18')]();};}function respondWithResult(_0x34741a,_0x22ca4d){_0x22ca4d=_0x22ca4d||0xc8;return function(_0x5ea87f){if(_0x5ea87f){return _0x34741a[_0xb791('0x19')](_0x22ca4d)[_0xb791('0x1a')](_0x5ea87f);}};}function respondWithFilteredResult(_0x195cb3,_0x5eea42){return function(_0xc4f8ad){if(_0xc4f8ad){var _0x7b5749=typeof _0x5eea42[_0xb791('0x1b')]===_0xb791('0x1c')&&typeof _0x5eea42[_0xb791('0x1d')]===_0xb791('0x1c');var _0x3e6112=_0xc4f8ad[_0xb791('0x1e')];var _0x4333cf=_0x7b5749?0x0:_0x5eea42[_0xb791('0x1b')];var _0x18d412=_0x7b5749?_0xc4f8ad[_0xb791('0x1e')]:_0x5eea42[_0xb791('0x1b')]+_0x5eea42['limit'];var _0x1a262a;if(_0x18d412>=_0x3e6112){_0x18d412=_0x3e6112;_0x1a262a=0xc8;}else{_0x1a262a=0xce;}_0x195cb3[_0xb791('0x19')](_0x1a262a);return _0x195cb3[_0xb791('0x1f')](_0xb791('0x20'),_0x4333cf+'-'+_0x18d412+'/'+_0x3e6112)[_0xb791('0x1a')](_0xc4f8ad);}return null;};}function patchUpdates(_0x4c5514){return function(_0x3bc040){try{jsonpatch[_0xb791('0x21')](_0x3bc040,_0x4c5514,!![]);}catch(_0x298954){return BPromise[_0xb791('0x22')](_0x298954);}return _0x3bc040[_0xb791('0x23')]();};}function saveUpdates(_0x23230b,_0x598bd1){return function(_0x330d81){if(_0x330d81){return _0x330d81[_0xb791('0x24')](_0x23230b)[_0xb791('0x25')](function(_0x3abf07){return _0x3abf07;});}return null;};}function removeEntity(_0x25880f,_0x11f88e){return function(_0xc8cae){if(_0xc8cae){return _0xc8cae[_0xb791('0x26')]()[_0xb791('0x25')](function(){_0x25880f[_0xb791('0x19')](0xcc)[_0xb791('0x18')]();});}};}function handleEntityNotFound(_0x48f3a2,_0x25e154){return function(_0x475bcd){if(!_0x475bcd){_0x48f3a2[_0xb791('0x17')](0x194);}return _0x475bcd;};}function handleError(_0x479d93,_0x2dbc9c){_0x2dbc9c=_0x2dbc9c||0x1f4;return function(_0x500960){logger[_0xb791('0x27')](_0x500960[_0xb791('0x28')]);if(_0x500960[_0xb791('0x29')]){delete _0x500960['name'];}_0x479d93[_0xb791('0x19')](_0x2dbc9c)[_0xb791('0x2a')](_0x500960);};}exports[_0xb791('0x2b')]=function(_0x3d7c6e,_0x5ce9d8){var _0x569ade={},_0x517080={},_0x51b123={'count':0x0,'rows':[]};var _0xd8e441=_[_0xb791('0x2c')](db[_0xb791('0x2d')][_0xb791('0x2e')],function(_0x2d9e65){return{'name':_0x2d9e65['fieldName'],'type':_0x2d9e65['type'][_0xb791('0x2f')]};});_0x517080['model']=_[_0xb791('0x2c')](_0xd8e441,_0xb791('0x29'));_0x517080[_0xb791('0x30')]=_[_0xb791('0x31')](_0x3d7c6e[_0xb791('0x30')]);_0x517080[_0xb791('0x32')]=_[_0xb791('0x33')](_0x517080[_0xb791('0x34')],_0x517080[_0xb791('0x30')]);_0x569ade[_0xb791('0x35')]=_['intersection'](_0x517080[_0xb791('0x34')],qs[_0xb791('0x36')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x36')]));_0x569ade['attributes']=_0x569ade['attributes']['length']?_0x569ade[_0xb791('0x35')]:_0x517080[_0xb791('0x34')];if(!_0x3d7c6e[_0xb791('0x30')][_0xb791('0x37')](_0xb791('0x38'))){_0x569ade[_0xb791('0x1d')]=qs[_0xb791('0x1d')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x1d')]);_0x569ade[_0xb791('0x1b')]=qs[_0xb791('0x1b')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x1b')]);}_0x569ade[_0xb791('0x39')]=qs[_0xb791('0x3a')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x3a')]);_0x569ade['where']=qs['filters'](_[_0xb791('0x3b')](_0x3d7c6e[_0xb791('0x30')],_0x517080[_0xb791('0x32')]),_0xd8e441);if(_0x3d7c6e[_0xb791('0x30')][_0xb791('0x3c')]){_0x569ade[_0xb791('0x3d')]=_[_0xb791('0x3e')](_0x569ade['where'],{'$or':_[_0xb791('0x2c')](_0xd8e441,function(_0x2c07af){if(_0x2c07af[_0xb791('0x3f')]!=='VIRTUAL'){var _0x5a6702={};_0x5a6702[_0x2c07af[_0xb791('0x29')]]={'$like':'%'+_0x3d7c6e[_0xb791('0x30')]['filter']+'%'};return _0x5a6702;}})});}_0x569ade=_[_0xb791('0x3e')]({},_0x569ade,_0x3d7c6e[_0xb791('0x40')]);var _0x4e2835={'where':_0x569ade[_0xb791('0x3d')]};return db[_0xb791('0x2d')]['count'](_0x4e2835)[_0xb791('0x25')](function(_0x109b3){_0x51b123[_0xb791('0x1e')]=_0x109b3;if(_0x3d7c6e[_0xb791('0x30')][_0xb791('0x41')]){_0x569ade[_0xb791('0x42')]=[{'all':!![]}];}return db[_0xb791('0x2d')][_0xb791('0x43')](_0x569ade);})[_0xb791('0x25')](function(_0x29c7ea){_0x51b123[_0xb791('0x44')]=_0x29c7ea;return _0x51b123;})[_0xb791('0x25')](respondWithFilteredResult(_0x5ce9d8,_0x569ade))[_0xb791('0x45')](handleError(_0x5ce9d8,null));};exports[_0xb791('0x46')]=function(_0x177888,_0x77d05c){var _0x13a6ce={'raw':!![],'where':{'id':_0x177888[_0xb791('0x47')]['id']}},_0x1ba4bf={};_0x1ba4bf[_0xb791('0x34')]=_['keys'](db['SquareRecording'][_0xb791('0x2e')]);_0x1ba4bf[_0xb791('0x30')]=_[_0xb791('0x31')](_0x177888[_0xb791('0x30')]);_0x1ba4bf['filters']=_[_0xb791('0x33')](_0x1ba4bf[_0xb791('0x34')],_0x1ba4bf['query']);_0x13a6ce[_0xb791('0x35')]=_[_0xb791('0x33')](_0x1ba4bf[_0xb791('0x34')],qs[_0xb791('0x36')](_0x177888[_0xb791('0x30')][_0xb791('0x36')]));_0x13a6ce['attributes']=_0x13a6ce[_0xb791('0x35')][_0xb791('0x48')]?_0x13a6ce[_0xb791('0x35')]:_0x1ba4bf[_0xb791('0x34')];if(_0x177888[_0xb791('0x30')]['includeAll']){_0x13a6ce[_0xb791('0x42')]=[{'all':!![]}];}_0x13a6ce=_[_0xb791('0x3e')]({},_0x13a6ce,_0x177888[_0xb791('0x40')]);return db[_0xb791('0x2d')]['find'](_0x13a6ce)['then'](handleEntityNotFound(_0x77d05c,null))[_0xb791('0x25')](respondWithResult(_0x77d05c,null))[_0xb791('0x45')](handleError(_0x77d05c,null));};exports[_0xb791('0x49')]=function(_0x14aac2,_0x1b115){return db['SquareRecording'][_0xb791('0x49')](_0x14aac2['body'],{})[_0xb791('0x25')](respondWithResult(_0x1b115,0xc9))[_0xb791('0x45')](handleError(_0x1b115,null));};exports[_0xb791('0x24')]=function(_0x2eacb5,_0x274309){if(_0x2eacb5[_0xb791('0x4a')]['id']){delete _0x2eacb5['body']['id'];}return db[_0xb791('0x2d')]['find']({'where':{'id':_0x2eacb5[_0xb791('0x47')]['id']}})[_0xb791('0x25')](handleEntityNotFound(_0x274309,null))[_0xb791('0x25')](saveUpdates(_0x2eacb5[_0xb791('0x4a')],null))[_0xb791('0x25')](respondWithResult(_0x274309,null))[_0xb791('0x45')](handleError(_0x274309,null));};exports[_0xb791('0x4b')]=function(_0x43478f,_0x240368,_0x3c304f){var _0x37e0c4=require('../../components/encryptor');var _0x3fb483=![];var _0x2be509={};if(_0x43478f[_0xb791('0x30')]['type']&&_0x43478f[_0xb791('0x30')]['type']===_0xb791('0x4c')){_0x2be509[_0xb791('0x4c')]=_0x43478f[_0xb791('0x47')]['id'];}else{_0x2be509['id']=_0x43478f[_0xb791('0x47')]['id'];}return db[_0xb791('0x2d')][_0xb791('0x4d')]({'where':_0x2be509,'attributes':['id','savePath',_0xb791('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x240368,null))[_0xb791('0x25')](function(_0x2e982c){if(_0x2e982c){var _0x2673b9=_0x2e982c[_0xb791('0x4f')];var _0x3d4cde=util[_0xb791('0x50')]('%s.cypher',_0x2673b9);if(fs[_0xb791('0x51')](_0x3d4cde)){_0x3fb483=!![];return _0x37e0c4[_0xb791('0x52')](_0x3d4cde,_0x2673b9,config[_0xb791('0x53')][_0xb791('0x54')])[_0xb791('0x25')](function(){return _0x2e982c;});}return _0x2e982c;}})[_0xb791('0x25')](function(_0x3106c4){if(_0x3106c4){var _0x2c0e04=_0x3106c4[_0xb791('0x4f')];if(!fs[_0xb791('0x51')](_0x2c0e04)){throw new db[(_0xb791('0x55'))][(_0xb791('0x56'))](_0xb791('0x57'));}if(_0x3106c4[_0xb791('0x4e')]){return _0x240368[_0xb791('0x4b')](_0x2c0e04,_0x3106c4[_0xb791('0x4e')]+path[_0xb791('0x58')](_0x2c0e04),function(){if(_0x3fb483){fs['unlink'](_0x2c0e04);}});}else{return _0x240368[_0xb791('0x4b')](_0x2c0e04,function(_0x2ac9e0){if(_0x3fb483){fs['unlink'](_0x2c0e04);}});}}})[_0xb791('0x45')](function(_0x18652a){if(_0x18652a[_0xb791('0x59')]==='SquareRecording\x20not\x20found'){_0x240368[_0xb791('0x19')](0x194)[_0xb791('0x2a')](_0xb791('0x5a'));}else{return handleError(_0x240368,null);}});};exports[_0xb791('0x26')]=function(_0x541cc4,_0x34ac8e){return db[_0xb791('0x2d')][_0xb791('0x4d')]({'where':{'id':_0x541cc4['params']['id']}})['then'](function(_0x47fbd6){if(_['isNil'](_0x47fbd6)){throw new ReferenceError(_0xb791('0x5b'));}return _0x47fbd6;})[_0xb791('0x25')](function(_0x3e2ef8){var _0x2c9245=_0x3e2ef8[_0xb791('0x4f')];logger[_0xb791('0x5c')]('cancellazione\x20fisica\x20documento\x20%s',_0x2c9245);if(!_[_0xb791('0x5d')](_0x3e2ef8[_0xb791('0x4f')])&&fs[_0xb791('0x51')](_0x2c9245)){logger[_0xb791('0x5c')](_0xb791('0x5e')+_0x2c9245+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xb791('0x5f')](_0x2c9245);}_0x2c9245=_0x2c9245+_0xb791('0x60');if(!_[_0xb791('0x5d')](_0x3e2ef8[_0xb791('0x4f')])&&fs[_0xb791('0x51')](_0x2c9245)){logger[_0xb791('0x5c')](_0xb791('0x5e')+_0x2c9245+_0xb791('0x61'));fs['unlinkSync'](_0x2c9245);}return _0x3e2ef8;})['then'](function(_0x214e31){if(!_0x214e31)throw new InternalError();return _0x214e31[_0xb791('0x26')]();})[_0xb791('0x25')](function(){_0x34ac8e[_0xb791('0x19')](0xcc)[_0xb791('0x18')]();})['catch'](handleError(_0x34ac8e,null));};
\ No newline at end of file
index d2bf13a..8c1dcd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','exports','define','lodash','util','../../config/logger','api'];(function(_0x140962,_0x32c9c0){var _0x279527=function(_0xcbcfd){while(--_0xcbcfd){_0x140962['push'](_0x140962['shift']());}};_0x279527(++_0x32c9c0);}(_0x5fdc,0x127));var _0xc5fd=function(_0x24e7f3,_0x4e1a29){_0x24e7f3=_0x24e7f3-0x0;var _0x25090e=_0x5fdc[_0x24e7f3];return _0x25090e;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var logger=require(_0xc5fd('0x2'))(_0xc5fd('0x3'));var moment=require(_0xc5fd('0x4'));var BPromise=require(_0xc5fd('0x5'));var rp=require(_0xc5fd('0x6'));var fs=require('fs');var path=require(_0xc5fd('0x7'));var rimraf=require(_0xc5fd('0x8'));var config=require(_0xc5fd('0x9'));var attributes=require(_0xc5fd('0xa'));module[_0xc5fd('0xb')]=function(_0x44722b,_0x216902){return _0x44722b[_0xc5fd('0xc')]('SquareRecording',attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf5a=['./squareRecording.attributes','exports','square_recordings','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x106e02,_0x39ceb4){var _0x4b9bf4=function(_0x584822){while(--_0x584822){_0x106e02['push'](_0x106e02['shift']());}};_0x4b9bf4(++_0x39ceb4);}(_0xaf5a,0x116));var _0xaaf5=function(_0x5db8e5,_0x35e3d5){_0x5db8e5=_0x5db8e5-0x0;var _0x4f800d=_0xaf5a[_0x5db8e5];return _0x4f800d;};'use strict';var _=require('lodash');var util=require(_0xaaf5('0x0'));var logger=require(_0xaaf5('0x1'))(_0xaaf5('0x2'));var moment=require(_0xaaf5('0x3'));var BPromise=require(_0xaaf5('0x4'));var rp=require(_0xaaf5('0x5'));var fs=require('fs');var path=require(_0xaaf5('0x6'));var rimraf=require(_0xaaf5('0x7'));var config=require('../../config/environment');var attributes=require(_0xaaf5('0x8'));module[_0xaaf5('0x9')]=function(_0x38d568,_0x8833b8){return _0x38d568['define']('SquareRecording',attributes,{'tableName':_0xaaf5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea2d4b7..331ff7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c36=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','error','message','result','catch','SquareRecording','create','options','raw','then','CreateSquareRecording','debug','stringify','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8c36,0x10b));var _0x68c3=function(_0x4eeeb9,_0x5740a2){_0x4eeeb9=_0x4eeeb9-0x0;var _0x10c149=_0x8c36[_0x4eeeb9];return _0x10c149;};'use strict';var _=require(_0x68c3('0x0'));var util=require(_0x68c3('0x1'));var moment=require(_0x68c3('0x2'));var BPromise=require(_0x68c3('0x3'));var rs=require(_0x68c3('0x4'));var fs=require('fs');var Redis=require(_0x68c3('0x5'));var db=require(_0x68c3('0x6'))['db'];var utils=require(_0x68c3('0x7'));var logger=require('../../config/logger')(_0x68c3('0x8'));var config=require(_0x68c3('0x9'));var jayson=require(_0x68c3('0xa'));var client=jayson[_0x68c3('0xb')][_0x68c3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x536985,_0x9bfe8b,_0x3c4e2d){return new BPromise(function(_0x469f27,_0x361787){return client[_0x68c3('0xd')](_0x536985,_0x3c4e2d)['then'](function(_0x3ef69f){logger[_0x68c3('0xe')](_0x68c3('0xf'),_0x9bfe8b,_0x68c3('0x10'));logger['debug'](_0x68c3('0x11'),_0x9bfe8b,_0x68c3('0x10'),JSON['stringify'](_0x3ef69f));if(_0x3ef69f[_0x68c3('0x12')]){if(_0x3ef69f[_0x68c3('0x12')]['code']===0x1f4){logger[_0x68c3('0x12')](_0x68c3('0xf'),_0x9bfe8b,_0x3ef69f['error'][_0x68c3('0x13')]);return _0x361787(_0x3ef69f[_0x68c3('0x12')]['message']);}logger[_0x68c3('0x12')](_0x68c3('0xf'),_0x9bfe8b,_0x3ef69f[_0x68c3('0x12')]['message']);return _0x469f27(_0x3ef69f[_0x68c3('0x12')]['message']);}else{logger[_0x68c3('0xe')]('SquareRecording,\x20%s,\x20%s',_0x9bfe8b,_0x68c3('0x10'));_0x469f27(_0x3ef69f[_0x68c3('0x14')]['message']);}})[_0x68c3('0x15')](function(_0x3f61e0){logger[_0x68c3('0x12')](_0x68c3('0xf'),_0x9bfe8b,_0x3f61e0);_0x361787(_0x3f61e0);});});}exports['CreateSquareRecording']=function(_0x42bacd){var _0x154202=this;return new Promise(function(_0x471870,_0x3acf26){return db[_0x68c3('0x16')][_0x68c3('0x17')](_0x42bacd['body'],{'raw':_0x42bacd[_0x68c3('0x18')]?_0x42bacd['options'][_0x68c3('0x19')]===undefined?!![]:![]:!![]})[_0x68c3('0x1a')](function(_0x3c0597){logger['info'](_0x68c3('0x1b'),_0x42bacd);logger[_0x68c3('0x1c')](_0x68c3('0x1b'),_0x42bacd,JSON[_0x68c3('0x1d')](_0x3c0597));_0x471870(_0x3c0597);})['catch'](function(_0x3a8d28){logger[_0x68c3('0x12')]('CreateSquareRecording',_0x3a8d28[_0x68c3('0x13')],_0x42bacd);_0x3acf26(_0x154202[_0x68c3('0x12')](0x1f4,_0x3a8d28[_0x68c3('0x13')]));});});};
\ No newline at end of file
+var _0x95a2=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','SquareRecording,\x20%s,\x20%s','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','raw','lodash','util'];(function(_0x34de7a,_0x57d22c){var _0xd1c14=function(_0x20c909){while(--_0x20c909){_0x34de7a['push'](_0x34de7a['shift']());}};_0xd1c14(++_0x57d22c);}(_0x95a2,0x120));var _0x295a=function(_0x1f5a63,_0x511504){_0x1f5a63=_0x1f5a63-0x0;var _0x30bb7a=_0x95a2[_0x1f5a63];return _0x30bb7a;};'use strict';var _=require(_0x295a('0x0'));var util=require(_0x295a('0x1'));var moment=require('moment');var BPromise=require(_0x295a('0x2'));var rs=require(_0x295a('0x3'));var fs=require('fs');var Redis=require(_0x295a('0x4'));var db=require(_0x295a('0x5'))['db'];var utils=require(_0x295a('0x6'));var logger=require('../../config/logger')(_0x295a('0x7'));var config=require(_0x295a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x295a('0x9')][_0x295a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x525711,_0x1c3a47,_0x3725e9){return new BPromise(function(_0x1e2bd7,_0x551ec3){return client[_0x295a('0xb')](_0x525711,_0x3725e9)[_0x295a('0xc')](function(_0x2b33b8){logger[_0x295a('0xd')]('SquareRecording,\x20%s,\x20%s',_0x1c3a47,_0x295a('0xe'));logger[_0x295a('0xf')](_0x295a('0x10'),_0x1c3a47,'request\x20sent',JSON[_0x295a('0x11')](_0x2b33b8));if(_0x2b33b8[_0x295a('0x12')]){if(_0x2b33b8[_0x295a('0x12')]['code']===0x1f4){logger[_0x295a('0x12')](_0x295a('0x13'),_0x1c3a47,_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);return _0x551ec3(_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);}logger[_0x295a('0x12')]('SquareRecording,\x20%s,\x20%s',_0x1c3a47,_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);return _0x1e2bd7(_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);}else{logger[_0x295a('0xd')](_0x295a('0x13'),_0x1c3a47,_0x295a('0xe'));_0x1e2bd7(_0x2b33b8[_0x295a('0x15')]['message']);}})[_0x295a('0x16')](function(_0x55eb95){logger[_0x295a('0x12')](_0x295a('0x13'),_0x1c3a47,_0x55eb95);_0x551ec3(_0x55eb95);});});}exports[_0x295a('0x17')]=function(_0x3b5762){var _0x22d029=this;return new Promise(function(_0x548a4e,_0x332911){return db[_0x295a('0x18')][_0x295a('0x19')](_0x3b5762[_0x295a('0x1a')],{'raw':_0x3b5762[_0x295a('0x1b')]?_0x3b5762[_0x295a('0x1b')][_0x295a('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x4a1e0d){logger[_0x295a('0xd')](_0x295a('0x17'),_0x3b5762);logger[_0x295a('0xf')]('CreateSquareRecording',_0x3b5762,JSON[_0x295a('0x11')](_0x4a1e0d));_0x548a4e(_0x4a1e0d);})[_0x295a('0x16')](function(_0x4eef6d){logger[_0x295a('0x12')](_0x295a('0x17'),_0x4eef6d[_0x295a('0x14')],_0x3b5762);_0x332911(_0x22d029[_0x295a('0x12')](0x1f4,_0x4eef6d[_0x295a('0x14')]));});});};
\ No newline at end of file
index 077d120..2434f9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x32e308,_0xec7dcb){var _0x319a4f=function(_0x1018cd){while(--_0x1018cd){_0x32e308['push'](_0x32e308['shift']());}};_0x319a4f(++_0xec7dcb);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xbaf0[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x31b55c,_0x2bae63){var _0x31ef26=function(_0x65ac0c){while(--_0x65ac0c){_0x31b55c['push'](_0x31b55c['shift']());}};_0x31ef26(++_0x2bae63);}(_0xe706,0xa3));var _0x6e70=function(_0x407041,_0x2571be){_0x407041=_0x407041-0x0;var _0x107d8c=_0xe706[_0x407041];return _0x107d8c;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index b809826..fb9e188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef48=['STRING','sequelize','exports'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0xef48,0x103));var _0x8ef4=function(_0x21198c,_0x37f88c){_0x21198c=_0x21198c-0x0;var _0x31e791=_0xef48[_0x21198c];return _0x31e791;};'use strict';var Sequelize=require(_0x8ef4('0x0'));module[_0x8ef4('0x1')]={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x8ef4('0x2')]},'request':{'type':Sequelize[_0x8ef4('0x2')]},'channel':{'type':Sequelize[_0x8ef4('0x2')]},'language':{'type':Sequelize[_0x8ef4('0x2')]},'type':{'type':Sequelize[_0x8ef4('0x2')]},'uniqueid':{'type':Sequelize[_0x8ef4('0x2')]},'version':{'type':Sequelize[_0x8ef4('0x2')]},'callerid':{'type':Sequelize[_0x8ef4('0x2')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x8ef4('0x2')]},'callingtns':{'type':Sequelize[_0x8ef4('0x2')]},'dnid':{'type':Sequelize[_0x8ef4('0x2')]},'rdnis':{'type':Sequelize[_0x8ef4('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x8ef4('0x2')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8ef4('0x2')]},'threadid':{'type':Sequelize[_0x8ef4('0x2')]},'project_name':{'type':Sequelize[_0x8ef4('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xb2b6=['exports','STRING','DATE','BOOLEAN','sequelize'];(function(_0x83a327,_0x53f000){var _0x54ca98=function(_0x3a43ed){while(--_0x3a43ed){_0x83a327['push'](_0x83a327['shift']());}};_0x54ca98(++_0x53f000);}(_0xb2b6,0x1bc));var _0x6b2b=function(_0x597064,_0x1e3502){_0x597064=_0x597064-0x0;var _0x9e77ce=_0xb2b6[_0x597064];return _0x9e77ce;};'use strict';var Sequelize=require(_0x6b2b('0x0'));module[_0x6b2b('0x1')]={'network':{'type':Sequelize[_0x6b2b('0x2')]},'network_script':{'type':Sequelize[_0x6b2b('0x2')]},'request':{'type':Sequelize[_0x6b2b('0x2')]},'channel':{'type':Sequelize[_0x6b2b('0x2')]},'language':{'type':Sequelize[_0x6b2b('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x6b2b('0x2')]},'callerid':{'type':Sequelize[_0x6b2b('0x2')]},'calleridname':{'type':Sequelize[_0x6b2b('0x2')]},'callingpres':{'type':Sequelize[_0x6b2b('0x2')]},'callingani2':{'type':Sequelize[_0x6b2b('0x2')]},'callington':{'type':Sequelize[_0x6b2b('0x2')]},'callingtns':{'type':Sequelize[_0x6b2b('0x2')]},'dnid':{'type':Sequelize[_0x6b2b('0x2')]},'rdnis':{'type':Sequelize[_0x6b2b('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x6b2b('0x2')]},'priority':{'type':Sequelize[_0x6b2b('0x2')]},'enhanced':{'type':Sequelize[_0x6b2b('0x2')]},'accountcode':{'type':Sequelize[_0x6b2b('0x2')]},'threadid':{'type':Sequelize[_0x6b2b('0x2')]},'project_name':{'type':Sequelize[_0x6b2b('0x2')]},'joinAt':{'type':Sequelize[_0x6b2b('0x3')]},'leaveAt':{'type':Sequelize[_0x6b2b('0x3')]},'bot':{'type':Sequelize[_0x6b2b('0x4')],'defaultValue':![]}};
\ No newline at end of file
index ba646e8..c90b9c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1db=['SquareReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','send','index','map'];(function(_0x1395d2,_0x34e033){var _0x22c592=function(_0x587aa9){while(--_0x587aa9){_0x1395d2['push'](_0x1395d2['shift']());}};_0x22c592(++_0x34e033);}(_0xa1db,0xbb));var _0xba1d=function(_0x4b1fb4,_0x36f2e0){_0x4b1fb4=_0x4b1fb4-0x0;var _0x1617cc=_0xa1db[_0x4b1fb4];return _0x1617cc;};'use strict';var emlformat=require(_0xba1d('0x0'));var rimraf=require(_0xba1d('0x1'));var zipdir=require(_0xba1d('0x2'));var jsonpatch=require(_0xba1d('0x3'));var rp=require('request-promise');var moment=require(_0xba1d('0x4'));var BPromise=require(_0xba1d('0x5'));var Mustache=require(_0xba1d('0x6'));var util=require(_0xba1d('0x7'));var path=require(_0xba1d('0x8'));var sox=require(_0xba1d('0x9'));var csv=require(_0xba1d('0xa'));var ejs=require(_0xba1d('0xb'));var fs=require('fs');var fs_extra=require(_0xba1d('0xc'));var _=require(_0xba1d('0xd'));var squel=require(_0xba1d('0xe'));var crypto=require(_0xba1d('0xf'));var jsforce=require(_0xba1d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xba1d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xba1d('0x11'));var authService=require(_0xba1d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xba1d('0x13'));var hardwareService=require(_0xba1d('0x14'));var logger=require(_0xba1d('0x15'))('api');var utils=require(_0xba1d('0x16'));var config=require(_0xba1d('0x17'));var licenseUtil=require(_0xba1d('0x18'));var db=require(_0xba1d('0x19'))['db'];function respondWithStatusCode(_0x3b356f,_0x5cdd79){_0x5cdd79=_0x5cdd79||0xcc;return function(_0x292e62){if(_0x292e62){return _0x3b356f['sendStatus'](_0x5cdd79);}return _0x3b356f[_0xba1d('0x1a')](_0x5cdd79)['end']();};}function respondWithResult(_0xe6a179,_0x53575a){_0x53575a=_0x53575a||0xc8;return function(_0xbe6f66){if(_0xbe6f66){return _0xe6a179[_0xba1d('0x1a')](_0x53575a)[_0xba1d('0x1b')](_0xbe6f66);}};}function respondWithFilteredResult(_0x35c4ab,_0x389e28){return function(_0x13ce9b){if(_0x13ce9b){var _0x46307e=typeof _0x389e28[_0xba1d('0x1c')]===_0xba1d('0x1d')&&typeof _0x389e28[_0xba1d('0x1e')]==='undefined';var _0x15a890=_0x13ce9b['count'];var _0x50292b=_0x46307e?0x0:_0x389e28['offset'];var _0x406e53=_0x46307e?_0x13ce9b[_0xba1d('0x1f')]:_0x389e28[_0xba1d('0x1c')]+_0x389e28[_0xba1d('0x1e')];var _0x2b004e;if(_0x406e53>=_0x15a890){_0x406e53=_0x15a890;_0x2b004e=0xc8;}else{_0x2b004e=0xce;}_0x35c4ab[_0xba1d('0x1a')](_0x2b004e);return _0x35c4ab['set'](_0xba1d('0x20'),_0x50292b+'-'+_0x406e53+'/'+_0x15a890)[_0xba1d('0x1b')](_0x13ce9b);}return null;};}function patchUpdates(_0x5c5a4c){return function(_0x3002d9){try{jsonpatch[_0xba1d('0x21')](_0x3002d9,_0x5c5a4c,!![]);}catch(_0x5bed9c){return BPromise[_0xba1d('0x22')](_0x5bed9c);}return _0x3002d9[_0xba1d('0x23')]();};}function saveUpdates(_0x19e2d3,_0x4d8b82){return function(_0x4a7a10){if(_0x4a7a10){return _0x4a7a10['update'](_0x19e2d3)[_0xba1d('0x24')](function(_0x55687a){return _0x55687a;});}return null;};}function removeEntity(_0x3b2861,_0x4b275b){return function(_0x3eb479){if(_0x3eb479){return _0x3eb479[_0xba1d('0x25')]()[_0xba1d('0x24')](function(){_0x3b2861['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x602c7,_0x50e72c){return function(_0x54ac61){if(!_0x54ac61){_0x602c7[_0xba1d('0x26')](0x194);}return _0x54ac61;};}function handleError(_0x235795,_0x55ad74){_0x55ad74=_0x55ad74||0x1f4;return function(_0x3a7763){logger[_0xba1d('0x27')](_0x3a7763['stack']);if(_0x3a7763['name']){delete _0x3a7763[_0xba1d('0x28')];}_0x235795[_0xba1d('0x1a')](_0x55ad74)[_0xba1d('0x29')](_0x3a7763);};}exports[_0xba1d('0x2a')]=function(_0x133378,_0x2c8589){var _0x232204={},_0x48d120={},_0x28fc58={'count':0x0,'rows':[]};var _0x3fb1a1=_[_0xba1d('0x2b')](db[_0xba1d('0x2c')][_0xba1d('0x2d')],function(_0x56c942){return{'name':_0x56c942[_0xba1d('0x2e')],'type':_0x56c942[_0xba1d('0x2f')][_0xba1d('0x30')]};});_0x48d120[_0xba1d('0x31')]=_['map'](_0x3fb1a1,_0xba1d('0x28'));_0x48d120[_0xba1d('0x32')]=_[_0xba1d('0x33')](_0x133378[_0xba1d('0x32')]);_0x48d120[_0xba1d('0x34')]=_[_0xba1d('0x35')](_0x48d120[_0xba1d('0x31')],_0x48d120[_0xba1d('0x32')]);_0x232204[_0xba1d('0x36')]=_['intersection'](_0x48d120[_0xba1d('0x31')],qs[_0xba1d('0x37')](_0x133378[_0xba1d('0x32')][_0xba1d('0x37')]));_0x232204[_0xba1d('0x36')]=_0x232204[_0xba1d('0x36')]['length']?_0x232204[_0xba1d('0x36')]:_0x48d120[_0xba1d('0x31')];if(!_0x133378[_0xba1d('0x32')][_0xba1d('0x38')](_0xba1d('0x39'))){_0x232204[_0xba1d('0x1e')]=qs[_0xba1d('0x1e')](_0x133378[_0xba1d('0x32')]['limit']);_0x232204['offset']=qs[_0xba1d('0x1c')](_0x133378['query'][_0xba1d('0x1c')]);}_0x232204['order']=qs[_0xba1d('0x3a')](_0x133378['query'][_0xba1d('0x3a')]);_0x232204[_0xba1d('0x3b')]=qs[_0xba1d('0x34')](_[_0xba1d('0x3c')](_0x133378[_0xba1d('0x32')],_0x48d120[_0xba1d('0x34')]),_0x3fb1a1);if(_0x133378[_0xba1d('0x32')][_0xba1d('0x3d')]){_0x232204[_0xba1d('0x3b')]=_[_0xba1d('0x3e')](_0x232204[_0xba1d('0x3b')],{'$or':_['map'](_0x3fb1a1,function(_0x6a2e1d){if(_0x6a2e1d[_0xba1d('0x2f')]!==_0xba1d('0x3f')){var _0x18224d={};_0x18224d[_0x6a2e1d[_0xba1d('0x28')]]={'$like':'%'+_0x133378[_0xba1d('0x32')]['filter']+'%'};return _0x18224d;}})});}_0x232204=_[_0xba1d('0x3e')]({},_0x232204,_0x133378[_0xba1d('0x40')]);var _0x488509={'where':_0x232204[_0xba1d('0x3b')]};return db[_0xba1d('0x2c')][_0xba1d('0x1f')](_0x488509)[_0xba1d('0x24')](function(_0x2b02ae){_0x28fc58['count']=_0x2b02ae;if(_0x133378[_0xba1d('0x32')][_0xba1d('0x41')]){_0x232204[_0xba1d('0x42')]=[{'all':!![]}];}return db[_0xba1d('0x2c')]['findAll'](_0x232204);})[_0xba1d('0x24')](function(_0x57e1a1){_0x28fc58[_0xba1d('0x43')]=_0x57e1a1;return _0x28fc58;})['then'](respondWithFilteredResult(_0x2c8589,_0x232204))[_0xba1d('0x44')](handleError(_0x2c8589,null));};exports[_0xba1d('0x45')]=function(_0x43cce2,_0x2fe65b){var _0xec72e1={'raw':!![],'where':{'id':_0x43cce2[_0xba1d('0x46')]['id']}},_0x1ba72={};_0x1ba72[_0xba1d('0x31')]=_[_0xba1d('0x33')](db['SquareReport'][_0xba1d('0x2d')]);_0x1ba72[_0xba1d('0x32')]=_['keys'](_0x43cce2['query']);_0x1ba72[_0xba1d('0x34')]=_['intersection'](_0x1ba72[_0xba1d('0x31')],_0x1ba72[_0xba1d('0x32')]);_0xec72e1['attributes']=_[_0xba1d('0x35')](_0x1ba72[_0xba1d('0x31')],qs[_0xba1d('0x37')](_0x43cce2[_0xba1d('0x32')][_0xba1d('0x37')]));_0xec72e1['attributes']=_0xec72e1[_0xba1d('0x36')][_0xba1d('0x47')]?_0xec72e1[_0xba1d('0x36')]:_0x1ba72[_0xba1d('0x31')];if(_0x43cce2[_0xba1d('0x32')][_0xba1d('0x41')]){_0xec72e1[_0xba1d('0x42')]=[{'all':!![]}];}_0xec72e1=_[_0xba1d('0x3e')]({},_0xec72e1,_0x43cce2[_0xba1d('0x40')]);return db['SquareReport']['find'](_0xec72e1)[_0xba1d('0x24')](handleEntityNotFound(_0x2fe65b,null))['then'](respondWithResult(_0x2fe65b,null))[_0xba1d('0x44')](handleError(_0x2fe65b,null));};exports[_0xba1d('0x48')]=function(_0x29b0b2,_0x51d901){return db[_0xba1d('0x2c')][_0xba1d('0x48')](_0x29b0b2[_0xba1d('0x49')],{})[_0xba1d('0x24')](respondWithResult(_0x51d901,0xc9))[_0xba1d('0x44')](handleError(_0x51d901,null));};exports[_0xba1d('0x4a')]=function(_0x19a93b,_0x119604){if(_0x19a93b['body']['id']){delete _0x19a93b[_0xba1d('0x49')]['id'];}return db['SquareReport'][_0xba1d('0x4b')]({'where':{'id':_0x19a93b[_0xba1d('0x46')]['id']}})[_0xba1d('0x24')](handleEntityNotFound(_0x119604,null))[_0xba1d('0x24')](saveUpdates(_0x19a93b['body'],null))[_0xba1d('0x24')](respondWithResult(_0x119604,null))[_0xba1d('0x44')](handleError(_0x119604,null));};exports[_0xba1d('0x25')]=function(_0x272e7a,_0x437b95){return db[_0xba1d('0x2c')][_0xba1d('0x4b')]({'where':{'id':_0x272e7a[_0xba1d('0x46')]['id']}})['then'](handleEntityNotFound(_0x437b95,null))[_0xba1d('0x24')](removeEntity(_0x437b95,null))[_0xba1d('0x44')](handleError(_0x437b95,null));};exports[_0xba1d('0x4c')]=function(_0x45b565,_0x492249){return db[_0xba1d('0x2c')][_0xba1d('0x4c')]()[_0xba1d('0x24')](respondWithResult(_0x492249,null))['catch'](handleError(_0x492249,null));};
\ No newline at end of file
+var _0xc10f=['rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','end','sendStatus','error','name','send','index','SquareReport','fieldName','key','query','keys','filters','model','attributes','intersection','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','include','catch','show','params','rawAttributes','fields','find','create','body','destroy','describe'];(function(_0x2fc5d4,_0x514199){var _0x3b273c=function(_0x46665a){while(--_0x46665a){_0x2fc5d4['push'](_0x2fc5d4['shift']());}};_0x3b273c(++_0x514199);}(_0xc10f,0xe4));var _0xfc10=function(_0x3b3786,_0x16d4df){_0x3b3786=_0x3b3786-0x0;var _0x1ba80e=_0xc10f[_0x3b3786];return _0x1ba80e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfc10('0x0'));var zipdir=require(_0xfc10('0x1'));var jsonpatch=require(_0xfc10('0x2'));var rp=require(_0xfc10('0x3'));var moment=require('moment');var BPromise=require(_0xfc10('0x4'));var Mustache=require(_0xfc10('0x5'));var util=require(_0xfc10('0x6'));var path=require(_0xfc10('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfc10('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfc10('0x9'));var squel=require(_0xfc10('0xa'));var crypto=require(_0xfc10('0xb'));var jsforce=require(_0xfc10('0xc'));var deskjs=require(_0xfc10('0xd'));var toCsv=require(_0xfc10('0xe'));var querystring=require(_0xfc10('0xf'));var Papa=require(_0xfc10('0x10'));var Redis=require(_0xfc10('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xfc10('0x12'));var as=require(_0xfc10('0x13'));var hardwareService=require(_0xfc10('0x14'));var logger=require(_0xfc10('0x15'))(_0xfc10('0x16'));var utils=require(_0xfc10('0x17'));var config=require(_0xfc10('0x18'));var licenseUtil=require(_0xfc10('0x19'));var db=require(_0xfc10('0x1a'))['db'];function respondWithStatusCode(_0x9f349e,_0x51fa5d){_0x51fa5d=_0x51fa5d||0xcc;return function(_0x21ea75){if(_0x21ea75){return _0x9f349e['sendStatus'](_0x51fa5d);}return _0x9f349e[_0xfc10('0x1b')](_0x51fa5d)['end']();};}function respondWithResult(_0x3aa150,_0x5e4545){_0x5e4545=_0x5e4545||0xc8;return function(_0x531fa8){if(_0x531fa8){return _0x3aa150[_0xfc10('0x1b')](_0x5e4545)[_0xfc10('0x1c')](_0x531fa8);}};}function respondWithFilteredResult(_0xd1160,_0x26defd){return function(_0x42ec54){if(_0x42ec54){var _0x15d975=typeof _0x26defd[_0xfc10('0x1d')]===_0xfc10('0x1e')&&typeof _0x26defd[_0xfc10('0x1f')]==='undefined';var _0x1243a9=_0x42ec54[_0xfc10('0x20')];var _0x5d3d3f=_0x15d975?0x0:_0x26defd['offset'];var _0x3e3f34=_0x15d975?_0x42ec54['count']:_0x26defd[_0xfc10('0x1d')]+_0x26defd['limit'];var _0xa20968;if(_0x3e3f34>=_0x1243a9){_0x3e3f34=_0x1243a9;_0xa20968=0xc8;}else{_0xa20968=0xce;}_0xd1160['status'](_0xa20968);return _0xd1160['set'](_0xfc10('0x21'),_0x5d3d3f+'-'+_0x3e3f34+'/'+_0x1243a9)[_0xfc10('0x1c')](_0x42ec54);}return null;};}function patchUpdates(_0x145ac7){return function(_0x175b63){try{jsonpatch[_0xfc10('0x22')](_0x175b63,_0x145ac7,!![]);}catch(_0x411328){return BPromise[_0xfc10('0x23')](_0x411328);}return _0x175b63['save']();};}function saveUpdates(_0x536b95,_0x4feef4){return function(_0x1c04d7){if(_0x1c04d7){return _0x1c04d7[_0xfc10('0x24')](_0x536b95)[_0xfc10('0x25')](function(_0x3acbad){return _0x3acbad;});}return null;};}function removeEntity(_0xfe1059,_0xf06af5){return function(_0x39e100){if(_0x39e100){return _0x39e100['destroy']()[_0xfc10('0x25')](function(){_0xfe1059[_0xfc10('0x1b')](0xcc)[_0xfc10('0x26')]();});}};}function handleEntityNotFound(_0x324fb7,_0x12983d){return function(_0xdb4582){if(!_0xdb4582){_0x324fb7[_0xfc10('0x27')](0x194);}return _0xdb4582;};}function handleError(_0x250026,_0x54ac5b){_0x54ac5b=_0x54ac5b||0x1f4;return function(_0x54cebb){logger[_0xfc10('0x28')](_0x54cebb['stack']);if(_0x54cebb[_0xfc10('0x29')]){delete _0x54cebb[_0xfc10('0x29')];}_0x250026[_0xfc10('0x1b')](_0x54ac5b)[_0xfc10('0x2a')](_0x54cebb);};}exports[_0xfc10('0x2b')]=function(_0x2610b0,_0x591bb3){var _0x205358={},_0x12dd10={},_0x5c0642={'count':0x0,'rows':[]};var _0xe24ae5=_['map'](db[_0xfc10('0x2c')]['rawAttributes'],function(_0x831778){return{'name':_0x831778[_0xfc10('0x2d')],'type':_0x831778['type'][_0xfc10('0x2e')]};});_0x12dd10['model']=_['map'](_0xe24ae5,_0xfc10('0x29'));_0x12dd10[_0xfc10('0x2f')]=_[_0xfc10('0x30')](_0x2610b0[_0xfc10('0x2f')]);_0x12dd10[_0xfc10('0x31')]=_['intersection'](_0x12dd10[_0xfc10('0x32')],_0x12dd10[_0xfc10('0x2f')]);_0x205358[_0xfc10('0x33')]=_[_0xfc10('0x34')](_0x12dd10[_0xfc10('0x32')],qs['fields'](_0x2610b0['query']['fields']));_0x205358[_0xfc10('0x33')]=_0x205358[_0xfc10('0x33')][_0xfc10('0x35')]?_0x205358['attributes']:_0x12dd10[_0xfc10('0x32')];if(!_0x2610b0['query'][_0xfc10('0x36')]('nolimit')){_0x205358['limit']=qs['limit'](_0x2610b0[_0xfc10('0x2f')][_0xfc10('0x1f')]);_0x205358[_0xfc10('0x1d')]=qs['offset'](_0x2610b0[_0xfc10('0x2f')]['offset']);}_0x205358[_0xfc10('0x37')]=qs[_0xfc10('0x38')](_0x2610b0[_0xfc10('0x2f')][_0xfc10('0x38')]);_0x205358[_0xfc10('0x39')]=qs[_0xfc10('0x31')](_[_0xfc10('0x3a')](_0x2610b0[_0xfc10('0x2f')],_0x12dd10[_0xfc10('0x31')]),_0xe24ae5);if(_0x2610b0[_0xfc10('0x2f')][_0xfc10('0x3b')]){_0x205358[_0xfc10('0x39')]=_[_0xfc10('0x3c')](_0x205358[_0xfc10('0x39')],{'$or':_[_0xfc10('0x3d')](_0xe24ae5,function(_0x126553){if(_0x126553[_0xfc10('0x3e')]!==_0xfc10('0x3f')){var _0x3d50e6={};_0x3d50e6[_0x126553[_0xfc10('0x29')]]={'$like':'%'+_0x2610b0[_0xfc10('0x2f')]['filter']+'%'};return _0x3d50e6;}})});}_0x205358=_['merge']({},_0x205358,_0x2610b0[_0xfc10('0x40')]);var _0x31fd1a={'where':_0x205358['where']};return db[_0xfc10('0x2c')][_0xfc10('0x20')](_0x31fd1a)[_0xfc10('0x25')](function(_0x94641a){_0x5c0642['count']=_0x94641a;if(_0x2610b0['query']['includeAll']){_0x205358[_0xfc10('0x41')]=[{'all':!![]}];}return db[_0xfc10('0x2c')]['findAll'](_0x205358);})[_0xfc10('0x25')](function(_0x48a846){_0x5c0642['rows']=_0x48a846;return _0x5c0642;})[_0xfc10('0x25')](respondWithFilteredResult(_0x591bb3,_0x205358))[_0xfc10('0x42')](handleError(_0x591bb3,null));};exports[_0xfc10('0x43')]=function(_0x16982d,_0x979f47){var _0x53bc3f={'raw':!![],'where':{'id':_0x16982d[_0xfc10('0x44')]['id']}},_0x2bc9b6={};_0x2bc9b6[_0xfc10('0x32')]=_[_0xfc10('0x30')](db[_0xfc10('0x2c')][_0xfc10('0x45')]);_0x2bc9b6['query']=_[_0xfc10('0x30')](_0x16982d['query']);_0x2bc9b6[_0xfc10('0x31')]=_[_0xfc10('0x34')](_0x2bc9b6[_0xfc10('0x32')],_0x2bc9b6[_0xfc10('0x2f')]);_0x53bc3f[_0xfc10('0x33')]=_['intersection'](_0x2bc9b6[_0xfc10('0x32')],qs[_0xfc10('0x46')](_0x16982d[_0xfc10('0x2f')][_0xfc10('0x46')]));_0x53bc3f['attributes']=_0x53bc3f['attributes'][_0xfc10('0x35')]?_0x53bc3f['attributes']:_0x2bc9b6[_0xfc10('0x32')];if(_0x16982d[_0xfc10('0x2f')]['includeAll']){_0x53bc3f['include']=[{'all':!![]}];}_0x53bc3f=_[_0xfc10('0x3c')]({},_0x53bc3f,_0x16982d[_0xfc10('0x40')]);return db[_0xfc10('0x2c')][_0xfc10('0x47')](_0x53bc3f)[_0xfc10('0x25')](handleEntityNotFound(_0x979f47,null))[_0xfc10('0x25')](respondWithResult(_0x979f47,null))[_0xfc10('0x42')](handleError(_0x979f47,null));};exports[_0xfc10('0x48')]=function(_0x2dc3cd,_0x3f8de9){return db[_0xfc10('0x2c')][_0xfc10('0x48')](_0x2dc3cd['body'],{})[_0xfc10('0x25')](respondWithResult(_0x3f8de9,0xc9))[_0xfc10('0x42')](handleError(_0x3f8de9,null));};exports['update']=function(_0x29ea45,_0x348f51){if(_0x29ea45[_0xfc10('0x49')]['id']){delete _0x29ea45[_0xfc10('0x49')]['id'];}return db['SquareReport']['find']({'where':{'id':_0x29ea45[_0xfc10('0x44')]['id']}})[_0xfc10('0x25')](handleEntityNotFound(_0x348f51,null))[_0xfc10('0x25')](saveUpdates(_0x29ea45[_0xfc10('0x49')],null))[_0xfc10('0x25')](respondWithResult(_0x348f51,null))[_0xfc10('0x42')](handleError(_0x348f51,null));};exports[_0xfc10('0x4a')]=function(_0x1d06c9,_0x5e64ac){return db[_0xfc10('0x2c')][_0xfc10('0x47')]({'where':{'id':_0x1d06c9[_0xfc10('0x44')]['id']}})[_0xfc10('0x25')](handleEntityNotFound(_0x5e64ac,null))[_0xfc10('0x25')](removeEntity(_0x5e64ac,null))[_0xfc10('0x42')](handleError(_0x5e64ac,null));};exports[_0xfc10('0x4b')]=function(_0xbad19f,_0x36683e){return db[_0xfc10('0x2c')][_0xfc10('0x4b')]()['then'](respondWithResult(_0x36683e,null))['catch'](handleError(_0x36683e,null));};
\ No newline at end of file
index 8cfba2f..35442a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94db=['api','moment','bluebird','rimraf','../../config/environment','exports','define','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash'];(function(_0x274be0,_0x32de72){var _0x197ca3=function(_0x3eaa01){while(--_0x3eaa01){_0x274be0['push'](_0x274be0['shift']());}};_0x197ca3(++_0x32de72);}(_0x94db,0x1e0));var _0xb94d=function(_0x1a0239,_0x434c3f){_0x1a0239=_0x1a0239-0x0;var _0x4dae46=_0x94db[_0x1a0239];return _0x4dae46;};'use strict';var _=require(_0xb94d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb94d('0x1'));var moment=require(_0xb94d('0x2'));var BPromise=require(_0xb94d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb94d('0x4'));var config=require(_0xb94d('0x5'));var attributes=require('./squareReport.attributes');module[_0xb94d('0x6')]=function(_0x567105,_0x5569c0){return _0x567105[_0xb94d('0x7')]('SquareReport',attributes,{'tableName':_0xb94d('0x8'),'paranoid':![],'indexes':[{'name':_0xb94d('0x9'),'fields':[_0xb94d('0xa'),_0xb94d('0xb')]},{'name':_0xb94d('0xc'),'fields':[_0xb94d('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9d30=['uniqueid','leaveAt','util','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','SquareReport','report_square','uid_pname'];(function(_0x143ee7,_0x18e5d3){var _0x31b693=function(_0xbe2612){while(--_0xbe2612){_0x143ee7['push'](_0x143ee7['shift']());}};_0x31b693(++_0x18e5d3);}(_0x9d30,0x1c9));var _0x09d3=function(_0x27cb25,_0x33c75e){_0x27cb25=_0x27cb25-0x0;var _0x1ef741=_0x9d30[_0x27cb25];return _0x1ef741;};'use strict';var _=require('lodash');var util=require(_0x09d3('0x0'));var logger=require(_0x09d3('0x1'))(_0x09d3('0x2'));var moment=require(_0x09d3('0x3'));var BPromise=require(_0x09d3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x09d3('0x5'));var rimraf=require('rimraf');var config=require(_0x09d3('0x6'));var attributes=require('./squareReport.attributes');module[_0x09d3('0x7')]=function(_0x5100c1,_0x155804){return _0x5100c1['define'](_0x09d3('0x8'),attributes,{'tableName':_0x09d3('0x9'),'paranoid':![],'indexes':[{'name':_0x09d3('0xa'),'fields':[_0x09d3('0xb'),'project_name']},{'name':_0x09d3('0xc'),'fields':[_0x09d3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 69fb05a..a280302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff14=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','options','raw','UpdateSquareReport','update','body','where','attributes','limit','lodash','util','moment'];(function(_0x3ce006,_0x20b0aa){var _0x3f7b85=function(_0x53d9a9){while(--_0x53d9a9){_0x3ce006['push'](_0x3ce006['shift']());}};_0x3f7b85(++_0x20b0aa);}(_0xff14,0x1c4));var _0x4ff1=function(_0x217614,_0x328c14){_0x217614=_0x217614-0x0;var _0x5501c3=_0xff14[_0x217614];return _0x5501c3;};'use strict';var _=require(_0x4ff1('0x0'));var util=require(_0x4ff1('0x1'));var moment=require(_0x4ff1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ff1('0x3'));var db=require(_0x4ff1('0x4'))['db'];var utils=require(_0x4ff1('0x5'));var logger=require(_0x4ff1('0x6'))(_0x4ff1('0x7'));var config=require(_0x4ff1('0x8'));var jayson=require(_0x4ff1('0x9'));var client=jayson[_0x4ff1('0xa')][_0x4ff1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45d28c,_0x31d62f,_0x5502ee){return new BPromise(function(_0x354c73,_0x4f970c){return client[_0x4ff1('0xc')](_0x45d28c,_0x5502ee)[_0x4ff1('0xd')](function(_0x104d19){logger[_0x4ff1('0xe')](_0x4ff1('0xf'),_0x31d62f,_0x4ff1('0x10'));logger[_0x4ff1('0x11')](_0x4ff1('0x12'),_0x31d62f,_0x4ff1('0x10'),JSON[_0x4ff1('0x13')](_0x104d19));if(_0x104d19['error']){if(_0x104d19[_0x4ff1('0x14')][_0x4ff1('0x15')]===0x1f4){logger[_0x4ff1('0x14')](_0x4ff1('0xf'),_0x31d62f,_0x104d19[_0x4ff1('0x14')][_0x4ff1('0x16')]);return _0x4f970c(_0x104d19[_0x4ff1('0x14')][_0x4ff1('0x16')]);}logger['error'](_0x4ff1('0xf'),_0x31d62f,_0x104d19[_0x4ff1('0x14')][_0x4ff1('0x16')]);return _0x354c73(_0x104d19[_0x4ff1('0x14')][_0x4ff1('0x16')]);}else{logger[_0x4ff1('0xe')](_0x4ff1('0xf'),_0x31d62f,_0x4ff1('0x10'));_0x354c73(_0x104d19[_0x4ff1('0x17')][_0x4ff1('0x16')]);}})[_0x4ff1('0x18')](function(_0x48015b){logger[_0x4ff1('0x14')](_0x4ff1('0xf'),_0x31d62f,_0x48015b);_0x4f970c(_0x48015b);});});}exports[_0x4ff1('0x19')]=function(_0x1fa8c3){var _0x2d7531=this;return new Promise(function(_0x57a9dc,_0x231895){return db[_0x4ff1('0x1a')]['create'](_0x1fa8c3['body'],{'raw':_0x1fa8c3[_0x4ff1('0x1b')]?_0x1fa8c3[_0x4ff1('0x1b')][_0x4ff1('0x1c')]===undefined?!![]:![]:!![]})[_0x4ff1('0xd')](function(_0x1e23e8){logger['info'](_0x4ff1('0x19'),_0x1fa8c3);logger[_0x4ff1('0x11')](_0x4ff1('0x19'),_0x1fa8c3,JSON[_0x4ff1('0x13')](_0x1e23e8));_0x57a9dc(_0x1e23e8);})[_0x4ff1('0x18')](function(_0x6db861){logger[_0x4ff1('0x14')]('CreateSquareReport',_0x6db861[_0x4ff1('0x16')],_0x1fa8c3);_0x231895(_0x2d7531[_0x4ff1('0x14')](0x1f4,_0x6db861[_0x4ff1('0x16')]));});});};exports[_0x4ff1('0x1d')]=function(_0x4a7040){var _0x197aeb=this;return new Promise(function(_0x23b2d4,_0x3885c7){return db[_0x4ff1('0x1a')][_0x4ff1('0x1e')](_0x4a7040[_0x4ff1('0x1f')],{'raw':_0x4a7040[_0x4ff1('0x1b')]?_0x4a7040[_0x4ff1('0x1b')][_0x4ff1('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a7040[_0x4ff1('0x1b')]?_0x4a7040[_0x4ff1('0x1b')][_0x4ff1('0x20')]||null:null,'attributes':_0x4a7040[_0x4ff1('0x1b')]?_0x4a7040[_0x4ff1('0x1b')][_0x4ff1('0x21')]||null:null,'limit':_0x4a7040[_0x4ff1('0x1b')]?_0x4a7040[_0x4ff1('0x1b')][_0x4ff1('0x22')]||null:null})[_0x4ff1('0xd')](function(_0x17f776){logger[_0x4ff1('0xe')](_0x4ff1('0x1d'),_0x4a7040);logger[_0x4ff1('0x11')](_0x4ff1('0x1d'),_0x4a7040,JSON[_0x4ff1('0x13')](_0x17f776));_0x23b2d4(_0x17f776);})[_0x4ff1('0x18')](function(_0x15b40a){logger[_0x4ff1('0x14')](_0x4ff1('0x1d'),_0x15b40a[_0x4ff1('0x16')],_0x4a7040);_0x3885c7(_0x197aeb[_0x4ff1('0x14')](0x1f4,_0x15b40a[_0x4ff1('0x16')]));});});};
\ No newline at end of file
+var _0xa0d4=['then','UpdateSquareReport','util','bluebird','randomstring','ioredis','../../config/environment','http','request','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','create','body','options','raw','CreateSquareReport','SquareReport','update','where','attributes'];(function(_0x2c8afe,_0x100f80){var _0x982977=function(_0x5b3a44){while(--_0x5b3a44){_0x2c8afe['push'](_0x2c8afe['shift']());}};_0x982977(++_0x100f80);}(_0xa0d4,0x1c2));var _0x4a0d=function(_0x8f9ae2,_0x592e96){_0x8f9ae2=_0x8f9ae2-0x0;var _0x39e0e3=_0xa0d4[_0x8f9ae2];return _0x39e0e3;};'use strict';var _=require('lodash');var util=require(_0x4a0d('0x0'));var moment=require('moment');var BPromise=require(_0x4a0d('0x1'));var rs=require(_0x4a0d('0x2'));var fs=require('fs');var Redis=require(_0x4a0d('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x4a0d('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4a0d('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x20b784,_0x515f14,_0x39bf54){return new BPromise(function(_0xeb795,_0xcda773){return client[_0x4a0d('0x6')](_0x20b784,_0x39bf54)['then'](function(_0x21bb26){logger['info'](_0x4a0d('0x7'),_0x515f14,_0x4a0d('0x8'));logger[_0x4a0d('0x9')](_0x4a0d('0xa'),_0x515f14,'request\x20sent',JSON[_0x4a0d('0xb')](_0x21bb26));if(_0x21bb26[_0x4a0d('0xc')]){if(_0x21bb26[_0x4a0d('0xc')]['code']===0x1f4){logger['error'](_0x4a0d('0x7'),_0x515f14,_0x21bb26[_0x4a0d('0xc')][_0x4a0d('0xd')]);return _0xcda773(_0x21bb26[_0x4a0d('0xc')][_0x4a0d('0xd')]);}logger[_0x4a0d('0xc')](_0x4a0d('0x7'),_0x515f14,_0x21bb26[_0x4a0d('0xc')][_0x4a0d('0xd')]);return _0xeb795(_0x21bb26[_0x4a0d('0xc')]['message']);}else{logger[_0x4a0d('0xe')](_0x4a0d('0x7'),_0x515f14,_0x4a0d('0x8'));_0xeb795(_0x21bb26[_0x4a0d('0xf')][_0x4a0d('0xd')]);}})[_0x4a0d('0x10')](function(_0x132a4d){logger[_0x4a0d('0xc')]('SquareReport,\x20%s,\x20%s',_0x515f14,_0x132a4d);_0xcda773(_0x132a4d);});});}exports['CreateSquareReport']=function(_0x54490a){var _0x41f255=this;return new Promise(function(_0x58dcfb,_0x3aeb4a){return db['SquareReport'][_0x4a0d('0x11')](_0x54490a[_0x4a0d('0x12')],{'raw':_0x54490a[_0x4a0d('0x13')]?_0x54490a[_0x4a0d('0x13')][_0x4a0d('0x14')]===undefined?!![]:![]:!![]})['then'](function(_0x1efad7){logger[_0x4a0d('0xe')](_0x4a0d('0x15'),_0x54490a);logger[_0x4a0d('0x9')](_0x4a0d('0x15'),_0x54490a,JSON[_0x4a0d('0xb')](_0x1efad7));_0x58dcfb(_0x1efad7);})['catch'](function(_0x31e630){logger[_0x4a0d('0xc')](_0x4a0d('0x15'),_0x31e630[_0x4a0d('0xd')],_0x54490a);_0x3aeb4a(_0x41f255['error'](0x1f4,_0x31e630['message']));});});};exports['UpdateSquareReport']=function(_0x23ea42){var _0x1a9dd5=this;return new Promise(function(_0x576e70,_0x4adb76){return db[_0x4a0d('0x16')][_0x4a0d('0x17')](_0x23ea42[_0x4a0d('0x12')],{'raw':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')][_0x4a0d('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')][_0x4a0d('0x18')]||null:null,'attributes':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')][_0x4a0d('0x19')]||null:null,'limit':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')]['limit']||null:null})[_0x4a0d('0x1a')](function(_0x2cd79d){logger[_0x4a0d('0xe')](_0x4a0d('0x1b'),_0x23ea42);logger['debug']('UpdateSquareReport',_0x23ea42,JSON[_0x4a0d('0xb')](_0x2cd79d));_0x576e70(_0x2cd79d);})[_0x4a0d('0x10')](function(_0x4a0aa1){logger[_0x4a0d('0xc')](_0x4a0d('0x1b'),_0x4a0aa1[_0x4a0d('0xd')],_0x23ea42);_0x4adb76(_0x1a9dd5[_0x4a0d('0xc')](0x1f4,_0x4a0aa1['message']));});});};
\ No newline at end of file
index fcddf90..aef291d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x794b=['express','Router','fs-extra','../../components/interaction/service','./squareReportDetail.controller','get','isAuthenticated','index','describe','create','put','/:id','delete','destroy','exports','path'];(function(_0x52215e,_0x3644bd){var _0x5e787c=function(_0x34415f){while(--_0x34415f){_0x52215e['push'](_0x52215e['shift']());}};_0x5e787c(++_0x3644bd);}(_0x794b,0x1af));var _0xb794=function(_0x51e327,_0x32fc19){_0x51e327=_0x51e327-0x0;var _0x548d19=_0x794b[_0x51e327];return _0x548d19;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb794('0x0'));var timeout=require('connect-timeout');var express=require(_0xb794('0x1'));var router=express[_0xb794('0x2')]();var fs_extra=require(_0xb794('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xb794('0x4'));var config=require('../../config/environment');var controller=require(_0xb794('0x5'));router[_0xb794('0x6')]('/',auth[_0xb794('0x7')](),controller[_0xb794('0x8')]);router[_0xb794('0x6')]('/describe',auth[_0xb794('0x7')](),controller[_0xb794('0x9')]);router[_0xb794('0x6')]('/:id',auth[_0xb794('0x7')](),controller['show']);router['post']('/',auth[_0xb794('0x7')](),controller[_0xb794('0xa')]);router[_0xb794('0xb')](_0xb794('0xc'),auth[_0xb794('0x7')](),controller['update']);router[_0xb794('0xd')]('/:id',auth[_0xb794('0x7')](),controller[_0xb794('0xe')]);module[_0xb794('0xf')]=router;
\ No newline at end of file
+var _0x71e5=['isAuthenticated','/describe','/:id','show','post','create','put','update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get'];(function(_0x4cb03b,_0x47d402){var _0x132ba4=function(_0xaf6bc4){while(--_0xaf6bc4){_0x4cb03b['push'](_0x4cb03b['shift']());}};_0x132ba4(++_0x47d402);}(_0x71e5,0xf4));var _0x571e=function(_0xa6c567,_0x4d0421){_0xa6c567=_0xa6c567-0x0;var _0x181ce7=_0x71e5[_0xa6c567];return _0x181ce7;};'use strict';var multer=require(_0x571e('0x0'));var util=require(_0x571e('0x1'));var path=require('path');var timeout=require(_0x571e('0x2'));var express=require(_0x571e('0x3'));var router=express['Router']();var fs_extra=require(_0x571e('0x4'));var auth=require(_0x571e('0x5'));var interaction=require(_0x571e('0x6'));var config=require('../../config/environment');var controller=require('./squareReportDetail.controller');router[_0x571e('0x7')]('/',auth[_0x571e('0x8')](),controller['index']);router['get'](_0x571e('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x571e('0x7')](_0x571e('0xa'),auth[_0x571e('0x8')](),controller[_0x571e('0xb')]);router[_0x571e('0xc')]('/',auth[_0x571e('0x8')](),controller[_0x571e('0xd')]);router[_0x571e('0xe')](_0x571e('0xa'),auth[_0x571e('0x8')](),controller[_0x571e('0xf')]);router[_0x571e('0x10')](_0x571e('0xa'),auth[_0x571e('0x8')](),controller['destroy']);module[_0x571e('0x11')]=router;
\ No newline at end of file
index 8182656..9b95374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1157=['TEXT','sequelize','STRING'];(function(_0xfe3407,_0x2d93f9){var _0x2a86ba=function(_0x557e9e){while(--_0x557e9e){_0xfe3407['push'](_0xfe3407['shift']());}};_0x2a86ba(++_0x2d93f9);}(_0x1157,0x1a8));var _0x7115=function(_0x42d9d4,_0x158ad6){_0x42d9d4=_0x42d9d4-0x0;var _0x3440a9=_0x1157[_0x42d9d4];return _0x3440a9;};'use strict';var Sequelize=require(_0x7115('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x7115('0x1')]},'node':{'type':Sequelize[_0x7115('0x1')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x7115('0x2')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6922=['STRING','sequelize'];(function(_0x32efcb,_0x55523f){var _0x1dae88=function(_0x11c606){while(--_0x11c606){_0x32efcb['push'](_0x32efcb['shift']());}};_0x1dae88(++_0x55523f);}(_0x6922,0x159));var _0x2692=function(_0x5ab13a,_0x474bea){_0x5ab13a=_0x5ab13a-0x0;var _0x5acc00=_0x6922[_0x5ab13a];return _0x5acc00;};'use strict';var Sequelize=require(_0x2692('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2692('0x1')]},'node':{'type':Sequelize[_0x2692('0x1')]},'application':{'type':Sequelize[_0x2692('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2759264..dfcbe79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7acd=['map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','SquareDetailsReport','findAll','rows','catch','show','create','body','update','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','destroy','then','error','stack','name','send','index'];(function(_0xb292f9,_0x42a4bc){var _0x366dab=function(_0x3c8359){while(--_0x3c8359){_0xb292f9['push'](_0xb292f9['shift']());}};_0x366dab(++_0x42a4bc);}(_0x7acd,0x1b0));var _0xd7ac=function(_0x1168d1,_0x233c7d){_0x1168d1=_0x1168d1-0x0;var _0x5ea464=_0x7acd[_0x1168d1];return _0x5ea464;};'use strict';var emlformat=require(_0xd7ac('0x0'));var rimraf=require(_0xd7ac('0x1'));var zipdir=require(_0xd7ac('0x2'));var jsonpatch=require(_0xd7ac('0x3'));var rp=require(_0xd7ac('0x4'));var moment=require(_0xd7ac('0x5'));var BPromise=require(_0xd7ac('0x6'));var Mustache=require('mustache');var util=require(_0xd7ac('0x7'));var path=require(_0xd7ac('0x8'));var sox=require('sox');var csv=require(_0xd7ac('0x9'));var ejs=require(_0xd7ac('0xa'));var fs=require('fs');var fs_extra=require(_0xd7ac('0xb'));var _=require(_0xd7ac('0xc'));var squel=require(_0xd7ac('0xd'));var crypto=require(_0xd7ac('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd7ac('0xf'));var toCsv=require(_0xd7ac('0x9'));var querystring=require(_0xd7ac('0x10'));var Papa=require(_0xd7ac('0x11'));var Redis=require(_0xd7ac('0x12'));var authService=require(_0xd7ac('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xd7ac('0x14'));var hardwareService=require(_0xd7ac('0x15'));var logger=require(_0xd7ac('0x16'))(_0xd7ac('0x17'));var utils=require(_0xd7ac('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xd7ac('0x19'));var db=require(_0xd7ac('0x1a'))['db'];function respondWithStatusCode(_0x3e46eb,_0x5ce758){_0x5ce758=_0x5ce758||0xcc;return function(_0x343a11){if(_0x343a11){return _0x3e46eb[_0xd7ac('0x1b')](_0x5ce758);}return _0x3e46eb[_0xd7ac('0x1c')](_0x5ce758)[_0xd7ac('0x1d')]();};}function respondWithResult(_0x491412,_0x22947c){_0x22947c=_0x22947c||0xc8;return function(_0x209e91){if(_0x209e91){return _0x491412[_0xd7ac('0x1c')](_0x22947c)[_0xd7ac('0x1e')](_0x209e91);}};}function respondWithFilteredResult(_0xd617af,_0x44df2e){return function(_0x5d34c4){if(_0x5d34c4){var _0x47a720=typeof _0x44df2e[_0xd7ac('0x1f')]===_0xd7ac('0x20')&&typeof _0x44df2e['limit']===_0xd7ac('0x20');var _0x3eb756=_0x5d34c4[_0xd7ac('0x21')];var _0x10fd0e=_0x47a720?0x0:_0x44df2e[_0xd7ac('0x1f')];var _0x52d7b4=_0x47a720?_0x5d34c4['count']:_0x44df2e[_0xd7ac('0x1f')]+_0x44df2e['limit'];var _0x6fa7d5;if(_0x52d7b4>=_0x3eb756){_0x52d7b4=_0x3eb756;_0x6fa7d5=0xc8;}else{_0x6fa7d5=0xce;}_0xd617af[_0xd7ac('0x1c')](_0x6fa7d5);return _0xd617af[_0xd7ac('0x22')]('Content-Range',_0x10fd0e+'-'+_0x52d7b4+'/'+_0x3eb756)[_0xd7ac('0x1e')](_0x5d34c4);}return null;};}function patchUpdates(_0x43661b){return function(_0x2781c5){try{jsonpatch['apply'](_0x2781c5,_0x43661b,!![]);}catch(_0x4bcd0e){return BPromise['reject'](_0x4bcd0e);}return _0x2781c5['save']();};}function saveUpdates(_0xae8883,_0x1f6620){return function(_0xd23ae5){if(_0xd23ae5){return _0xd23ae5['update'](_0xae8883)['then'](function(_0x5d932b){return _0x5d932b;});}return null;};}function removeEntity(_0x1f1bc0,_0x34ac6a){return function(_0x2769b7){if(_0x2769b7){return _0x2769b7[_0xd7ac('0x23')]()[_0xd7ac('0x24')](function(){_0x1f1bc0[_0xd7ac('0x1c')](0xcc)[_0xd7ac('0x1d')]();});}};}function handleEntityNotFound(_0x108110,_0x553f46){return function(_0x2ae6ba){if(!_0x2ae6ba){_0x108110[_0xd7ac('0x1b')](0x194);}return _0x2ae6ba;};}function handleError(_0x2a7c73,_0x2b94b9){_0x2b94b9=_0x2b94b9||0x1f4;return function(_0x13891a){logger[_0xd7ac('0x25')](_0x13891a[_0xd7ac('0x26')]);if(_0x13891a[_0xd7ac('0x27')]){delete _0x13891a[_0xd7ac('0x27')];}_0x2a7c73['status'](_0x2b94b9)[_0xd7ac('0x28')](_0x13891a);};}exports[_0xd7ac('0x29')]=function(_0x1e87c8,_0x6ab7f0){var _0x126931={},_0x3ac216={},_0x5abe87={'count':0x0,'rows':[]};var _0xe03689=_[_0xd7ac('0x2a')](db['SquareDetailsReport'][_0xd7ac('0x2b')],function(_0x1c8615){return{'name':_0x1c8615[_0xd7ac('0x2c')],'type':_0x1c8615[_0xd7ac('0x2d')][_0xd7ac('0x2e')]};});_0x3ac216[_0xd7ac('0x2f')]=_[_0xd7ac('0x2a')](_0xe03689,'name');_0x3ac216['query']=_[_0xd7ac('0x30')](_0x1e87c8['query']);_0x3ac216[_0xd7ac('0x31')]=_[_0xd7ac('0x32')](_0x3ac216[_0xd7ac('0x2f')],_0x3ac216[_0xd7ac('0x33')]);_0x126931[_0xd7ac('0x34')]=_[_0xd7ac('0x32')](_0x3ac216[_0xd7ac('0x2f')],qs[_0xd7ac('0x35')](_0x1e87c8['query'][_0xd7ac('0x35')]));_0x126931[_0xd7ac('0x34')]=_0x126931['attributes'][_0xd7ac('0x36')]?_0x126931['attributes']:_0x3ac216[_0xd7ac('0x2f')];if(!_0x1e87c8['query'][_0xd7ac('0x37')](_0xd7ac('0x38'))){_0x126931[_0xd7ac('0x39')]=qs['limit'](_0x1e87c8[_0xd7ac('0x33')]['limit']);_0x126931[_0xd7ac('0x1f')]=qs[_0xd7ac('0x1f')](_0x1e87c8[_0xd7ac('0x33')]['offset']);}_0x126931[_0xd7ac('0x3a')]=qs[_0xd7ac('0x3b')](_0x1e87c8['query'][_0xd7ac('0x3b')]);_0x126931[_0xd7ac('0x3c')]=qs['filters'](_[_0xd7ac('0x3d')](_0x1e87c8[_0xd7ac('0x33')],_0x3ac216['filters']),_0xe03689);if(_0x1e87c8[_0xd7ac('0x33')][_0xd7ac('0x3e')]){_0x126931[_0xd7ac('0x3c')]=_[_0xd7ac('0x3f')](_0x126931[_0xd7ac('0x3c')],{'$or':_[_0xd7ac('0x2a')](_0xe03689,function(_0x8949b7){if(_0x8949b7[_0xd7ac('0x2d')]!==_0xd7ac('0x40')){var _0x547f07={};_0x547f07[_0x8949b7[_0xd7ac('0x27')]]={'$like':'%'+_0x1e87c8[_0xd7ac('0x33')][_0xd7ac('0x3e')]+'%'};return _0x547f07;}})});}_0x126931=_[_0xd7ac('0x3f')]({},_0x126931,_0x1e87c8[_0xd7ac('0x41')]);var _0x152a70={'where':_0x126931[_0xd7ac('0x3c')]};return db['SquareDetailsReport']['count'](_0x152a70)['then'](function(_0x4fe602){_0x5abe87[_0xd7ac('0x21')]=_0x4fe602;if(_0x1e87c8[_0xd7ac('0x33')][_0xd7ac('0x42')]){_0x126931[_0xd7ac('0x43')]=[{'all':!![]}];}return db[_0xd7ac('0x44')][_0xd7ac('0x45')](_0x126931);})['then'](function(_0x3acabb){_0x5abe87[_0xd7ac('0x46')]=_0x3acabb;return _0x5abe87;})['then'](respondWithFilteredResult(_0x6ab7f0,_0x126931))[_0xd7ac('0x47')](handleError(_0x6ab7f0,null));};exports[_0xd7ac('0x48')]=function(_0x2871ed,_0x32d298){var _0x40fdf7={'raw':!![],'where':{'id':_0x2871ed['params']['id']}},_0x5c4991={};_0x5c4991['model']=_[_0xd7ac('0x30')](db[_0xd7ac('0x44')]['rawAttributes']);_0x5c4991[_0xd7ac('0x33')]=_[_0xd7ac('0x30')](_0x2871ed[_0xd7ac('0x33')]);_0x5c4991[_0xd7ac('0x31')]=_[_0xd7ac('0x32')](_0x5c4991[_0xd7ac('0x2f')],_0x5c4991[_0xd7ac('0x33')]);_0x40fdf7[_0xd7ac('0x34')]=_[_0xd7ac('0x32')](_0x5c4991[_0xd7ac('0x2f')],qs[_0xd7ac('0x35')](_0x2871ed[_0xd7ac('0x33')]['fields']));_0x40fdf7[_0xd7ac('0x34')]=_0x40fdf7[_0xd7ac('0x34')][_0xd7ac('0x36')]?_0x40fdf7[_0xd7ac('0x34')]:_0x5c4991[_0xd7ac('0x2f')];if(_0x2871ed['query'][_0xd7ac('0x42')]){_0x40fdf7['include']=[{'all':!![]}];}_0x40fdf7=_[_0xd7ac('0x3f')]({},_0x40fdf7,_0x2871ed[_0xd7ac('0x41')]);return db[_0xd7ac('0x44')]['find'](_0x40fdf7)[_0xd7ac('0x24')](handleEntityNotFound(_0x32d298,null))[_0xd7ac('0x24')](respondWithResult(_0x32d298,null))['catch'](handleError(_0x32d298,null));};exports[_0xd7ac('0x49')]=function(_0x5adbff,_0x363023){return db['SquareDetailsReport'][_0xd7ac('0x49')](_0x5adbff[_0xd7ac('0x4a')],{})[_0xd7ac('0x24')](respondWithResult(_0x363023,0xc9))[_0xd7ac('0x47')](handleError(_0x363023,null));};exports[_0xd7ac('0x4b')]=function(_0x3303df,_0x450035){if(_0x3303df['body']['id']){delete _0x3303df['body']['id'];}return db[_0xd7ac('0x44')][_0xd7ac('0x4c')]({'where':{'id':_0x3303df[_0xd7ac('0x4d')]['id']}})[_0xd7ac('0x24')](handleEntityNotFound(_0x450035,null))[_0xd7ac('0x24')](saveUpdates(_0x3303df['body'],null))[_0xd7ac('0x24')](respondWithResult(_0x450035,null))[_0xd7ac('0x47')](handleError(_0x450035,null));};exports[_0xd7ac('0x23')]=function(_0x29dbae,_0x3745e1){return db['SquareDetailsReport']['find']({'where':{'id':_0x29dbae[_0xd7ac('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3745e1,null))[_0xd7ac('0x24')](removeEntity(_0x3745e1,null))[_0xd7ac('0x47')](handleError(_0x3745e1,null));};exports[_0xd7ac('0x4e')]=function(_0x34a314,_0x5c6a65){return db['SquareDetailsReport'][_0xd7ac('0x4e')]()[_0xd7ac('0x24')](respondWithResult(_0x5c6a65,null))[_0xd7ac('0x47')](handleError(_0x5c6a65,null));};
\ No newline at end of file
+var _0xaee7=['fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','limit','undefined','count','offset','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','index','map','SquareDetailsReport','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','rawAttributes','length','includeAll','create','body','params','describe','eml-format','rimraf'];(function(_0x3b0912,_0x39d739){var _0xa8f339=function(_0x6a31ab){while(--_0x6a31ab){_0x3b0912['push'](_0x3b0912['shift']());}};_0xa8f339(++_0x39d739);}(_0xaee7,0xdf));var _0x7aee=function(_0x3804d7,_0x26196c){_0x3804d7=_0x3804d7-0x0;var _0x507230=_0xaee7[_0x3804d7];return _0x507230;};'use strict';var emlformat=require(_0x7aee('0x0'));var rimraf=require(_0x7aee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7aee('0x2'));var rp=require(_0x7aee('0x3'));var moment=require(_0x7aee('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x7aee('0x5'));var csv=require(_0x7aee('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7aee('0x7'));var _=require('lodash');var squel=require(_0x7aee('0x8'));var crypto=require(_0x7aee('0x9'));var jsforce=require(_0x7aee('0xa'));var deskjs=require(_0x7aee('0xb'));var toCsv=require('to-csv');var querystring=require(_0x7aee('0xc'));var Papa=require(_0x7aee('0xd'));var Redis=require(_0x7aee('0xe'));var authService=require(_0x7aee('0xf'));var qs=require(_0x7aee('0x10'));var as=require(_0x7aee('0x11'));var hardwareService=require(_0x7aee('0x12'));var logger=require('../../config/logger')(_0x7aee('0x13'));var utils=require(_0x7aee('0x14'));var config=require(_0x7aee('0x15'));var licenseUtil=require(_0x7aee('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x552461,_0x24e883){_0x24e883=_0x24e883||0xcc;return function(_0x53363a){if(_0x53363a){return _0x552461['sendStatus'](_0x24e883);}return _0x552461[_0x7aee('0x17')](_0x24e883)[_0x7aee('0x18')]();};}function respondWithResult(_0x3bb97c,_0x4feb7c){_0x4feb7c=_0x4feb7c||0xc8;return function(_0x422702){if(_0x422702){return _0x3bb97c[_0x7aee('0x17')](_0x4feb7c)[_0x7aee('0x19')](_0x422702);}};}function respondWithFilteredResult(_0x5185c9,_0x134c06){return function(_0x1779b9){if(_0x1779b9){var _0x58edfb=typeof _0x134c06['offset']==='undefined'&&typeof _0x134c06[_0x7aee('0x1a')]===_0x7aee('0x1b');var _0x616a7e=_0x1779b9[_0x7aee('0x1c')];var _0xb0a185=_0x58edfb?0x0:_0x134c06['offset'];var _0x24507a=_0x58edfb?_0x1779b9[_0x7aee('0x1c')]:_0x134c06[_0x7aee('0x1d')]+_0x134c06[_0x7aee('0x1a')];var _0x186231;if(_0x24507a>=_0x616a7e){_0x24507a=_0x616a7e;_0x186231=0xc8;}else{_0x186231=0xce;}_0x5185c9[_0x7aee('0x17')](_0x186231);return _0x5185c9['set'](_0x7aee('0x1e'),_0xb0a185+'-'+_0x24507a+'/'+_0x616a7e)[_0x7aee('0x19')](_0x1779b9);}return null;};}function patchUpdates(_0x1af17c){return function(_0x5c817e){try{jsonpatch[_0x7aee('0x1f')](_0x5c817e,_0x1af17c,!![]);}catch(_0x379544){return BPromise['reject'](_0x379544);}return _0x5c817e['save']();};}function saveUpdates(_0x510566,_0x496e38){return function(_0x2cccd1){if(_0x2cccd1){return _0x2cccd1[_0x7aee('0x20')](_0x510566)[_0x7aee('0x21')](function(_0x516fd0){return _0x516fd0;});}return null;};}function removeEntity(_0x20b137,_0x316215){return function(_0x1fb591){if(_0x1fb591){return _0x1fb591[_0x7aee('0x22')]()[_0x7aee('0x21')](function(){_0x20b137[_0x7aee('0x17')](0xcc)[_0x7aee('0x18')]();});}};}function handleEntityNotFound(_0x17539e,_0x3e0369){return function(_0x56b9f3){if(!_0x56b9f3){_0x17539e[_0x7aee('0x23')](0x194);}return _0x56b9f3;};}function handleError(_0x31d936,_0x3f6393){_0x3f6393=_0x3f6393||0x1f4;return function(_0x53bbaf){logger[_0x7aee('0x24')](_0x53bbaf[_0x7aee('0x25')]);if(_0x53bbaf[_0x7aee('0x26')]){delete _0x53bbaf[_0x7aee('0x26')];}_0x31d936[_0x7aee('0x17')](_0x3f6393)[_0x7aee('0x27')](_0x53bbaf);};}exports[_0x7aee('0x28')]=function(_0x127252,_0x3bd031){var _0x36fabb={},_0x586621={},_0x4036af={'count':0x0,'rows':[]};var _0x4e7097=_[_0x7aee('0x29')](db[_0x7aee('0x2a')]['rawAttributes'],function(_0x1c5a9b){return{'name':_0x1c5a9b[_0x7aee('0x2b')],'type':_0x1c5a9b[_0x7aee('0x2c')][_0x7aee('0x2d')]};});_0x586621[_0x7aee('0x2e')]=_['map'](_0x4e7097,_0x7aee('0x26'));_0x586621['query']=_[_0x7aee('0x2f')](_0x127252[_0x7aee('0x30')]);_0x586621['filters']=_[_0x7aee('0x31')](_0x586621[_0x7aee('0x2e')],_0x586621[_0x7aee('0x30')]);_0x36fabb[_0x7aee('0x32')]=_[_0x7aee('0x31')](_0x586621['model'],qs[_0x7aee('0x33')](_0x127252[_0x7aee('0x30')][_0x7aee('0x33')]));_0x36fabb[_0x7aee('0x32')]=_0x36fabb['attributes']['length']?_0x36fabb[_0x7aee('0x32')]:_0x586621[_0x7aee('0x2e')];if(!_0x127252[_0x7aee('0x30')][_0x7aee('0x34')](_0x7aee('0x35'))){_0x36fabb[_0x7aee('0x1a')]=qs['limit'](_0x127252[_0x7aee('0x30')]['limit']);_0x36fabb[_0x7aee('0x1d')]=qs[_0x7aee('0x1d')](_0x127252[_0x7aee('0x30')]['offset']);}_0x36fabb[_0x7aee('0x36')]=qs[_0x7aee('0x37')](_0x127252[_0x7aee('0x30')]['sort']);_0x36fabb['where']=qs[_0x7aee('0x38')](_[_0x7aee('0x39')](_0x127252['query'],_0x586621['filters']),_0x4e7097);if(_0x127252['query']['filter']){_0x36fabb[_0x7aee('0x3a')]=_[_0x7aee('0x3b')](_0x36fabb[_0x7aee('0x3a')],{'$or':_[_0x7aee('0x29')](_0x4e7097,function(_0x4bb5d3){if(_0x4bb5d3[_0x7aee('0x2c')]!==_0x7aee('0x3c')){var _0x59b2ce={};_0x59b2ce[_0x4bb5d3[_0x7aee('0x26')]]={'$like':'%'+_0x127252['query'][_0x7aee('0x3d')]+'%'};return _0x59b2ce;}})});}_0x36fabb=_['merge']({},_0x36fabb,_0x127252[_0x7aee('0x3e')]);var _0x34a6e3={'where':_0x36fabb[_0x7aee('0x3a')]};return db[_0x7aee('0x2a')]['count'](_0x34a6e3)[_0x7aee('0x21')](function(_0x12e8ba){_0x4036af['count']=_0x12e8ba;if(_0x127252[_0x7aee('0x30')]['includeAll']){_0x36fabb[_0x7aee('0x3f')]=[{'all':!![]}];}return db[_0x7aee('0x2a')][_0x7aee('0x40')](_0x36fabb);})[_0x7aee('0x21')](function(_0xa639b0){_0x4036af[_0x7aee('0x41')]=_0xa639b0;return _0x4036af;})[_0x7aee('0x21')](respondWithFilteredResult(_0x3bd031,_0x36fabb))[_0x7aee('0x42')](handleError(_0x3bd031,null));};exports[_0x7aee('0x43')]=function(_0x5eaa62,_0x252aef){var _0x5bf6b7={'raw':!![],'where':{'id':_0x5eaa62['params']['id']}},_0x7deae0={};_0x7deae0[_0x7aee('0x2e')]=_['keys'](db['SquareDetailsReport'][_0x7aee('0x44')]);_0x7deae0['query']=_[_0x7aee('0x2f')](_0x5eaa62[_0x7aee('0x30')]);_0x7deae0[_0x7aee('0x38')]=_[_0x7aee('0x31')](_0x7deae0[_0x7aee('0x2e')],_0x7deae0[_0x7aee('0x30')]);_0x5bf6b7[_0x7aee('0x32')]=_[_0x7aee('0x31')](_0x7deae0[_0x7aee('0x2e')],qs['fields'](_0x5eaa62[_0x7aee('0x30')][_0x7aee('0x33')]));_0x5bf6b7[_0x7aee('0x32')]=_0x5bf6b7[_0x7aee('0x32')][_0x7aee('0x45')]?_0x5bf6b7[_0x7aee('0x32')]:_0x7deae0['model'];if(_0x5eaa62[_0x7aee('0x30')][_0x7aee('0x46')]){_0x5bf6b7['include']=[{'all':!![]}];}_0x5bf6b7=_[_0x7aee('0x3b')]({},_0x5bf6b7,_0x5eaa62[_0x7aee('0x3e')]);return db[_0x7aee('0x2a')]['find'](_0x5bf6b7)[_0x7aee('0x21')](handleEntityNotFound(_0x252aef,null))[_0x7aee('0x21')](respondWithResult(_0x252aef,null))[_0x7aee('0x42')](handleError(_0x252aef,null));};exports[_0x7aee('0x47')]=function(_0x2a85ae,_0xb56b45){return db['SquareDetailsReport']['create'](_0x2a85ae[_0x7aee('0x48')],{})[_0x7aee('0x21')](respondWithResult(_0xb56b45,0xc9))['catch'](handleError(_0xb56b45,null));};exports[_0x7aee('0x20')]=function(_0x3bc2c6,_0xcfac80){if(_0x3bc2c6[_0x7aee('0x48')]['id']){delete _0x3bc2c6['body']['id'];}return db[_0x7aee('0x2a')]['find']({'where':{'id':_0x3bc2c6[_0x7aee('0x49')]['id']}})[_0x7aee('0x21')](handleEntityNotFound(_0xcfac80,null))[_0x7aee('0x21')](saveUpdates(_0x3bc2c6[_0x7aee('0x48')],null))[_0x7aee('0x21')](respondWithResult(_0xcfac80,null))[_0x7aee('0x42')](handleError(_0xcfac80,null));};exports[_0x7aee('0x22')]=function(_0x2e7db9,_0x4e8a67){return db[_0x7aee('0x2a')]['find']({'where':{'id':_0x2e7db9[_0x7aee('0x49')]['id']}})[_0x7aee('0x21')](handleEntityNotFound(_0x4e8a67,null))[_0x7aee('0x21')](removeEntity(_0x4e8a67,null))['catch'](handleError(_0x4e8a67,null));};exports['describe']=function(_0x47db5d,_0x26e98a){return db[_0x7aee('0x2a')][_0x7aee('0x4a')]()[_0x7aee('0x21')](respondWithResult(_0x26e98a,null))['catch'](handleError(_0x26e98a,null));};
\ No newline at end of file
index f7cae4c..0c3e186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02f2=['../../config/logger','request-promise','path','define','report_square_details','lodash','util'];(function(_0x50922c,_0x4d29d6){var _0x523b1c=function(_0x481791){while(--_0x481791){_0x50922c['push'](_0x50922c['shift']());}};_0x523b1c(++_0x4d29d6);}(_0x02f2,0x19b));var _0x202f=function(_0x266dd5,_0x4f1248){_0x266dd5=_0x266dd5-0x0;var _0x4420f3=_0x02f2[_0x266dd5];return _0x4420f3;};'use strict';var _=require(_0x202f('0x0'));var util=require(_0x202f('0x1'));var logger=require(_0x202f('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x202f('0x3'));var fs=require('fs');var path=require(_0x202f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./squareReportDetail.attributes');module['exports']=function(_0x1656b6,_0x22ec7b){return _0x1656b6[_0x202f('0x5')]('SquareDetailsReport',attributes,{'tableName':_0x202f('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8c7d=['bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','SquareDetailsReport','report_square_details','lodash','../../config/logger','moment'];(function(_0x2d5f0,_0x3984bc){var _0x43b664=function(_0x2020ec){while(--_0x2020ec){_0x2d5f0['push'](_0x2d5f0['shift']());}};_0x43b664(++_0x3984bc);}(_0x8c7d,0xe1));var _0xd8c7=function(_0x4337e9,_0x320926){_0x4337e9=_0x4337e9-0x0;var _0x966467=_0x8c7d[_0x4337e9];return _0x966467;};'use strict';var _=require(_0xd8c7('0x0'));var util=require('util');var logger=require(_0xd8c7('0x1'))('api');var moment=require(_0xd8c7('0x2'));var BPromise=require(_0xd8c7('0x3'));var rp=require(_0xd8c7('0x4'));var fs=require('fs');var path=require(_0xd8c7('0x5'));var rimraf=require(_0xd8c7('0x6'));var config=require(_0xd8c7('0x7'));var attributes=require(_0xd8c7('0x8'));module[_0xd8c7('0x9')]=function(_0x3a2a12,_0x57c00f){return _0x3a2a12['define'](_0xd8c7('0xa'),attributes,{'tableName':_0xd8c7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 72853ed..8178b36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30a=['message','request\x20sent','CreateSquareDetailsReport','create','body','debug','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','SquareDetailsReport,\x20%s,\x20%s','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0xa30a,0xd7));var _0xaa30=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa30a[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaa30('0x0'));var util=require(_0xaa30('0x1'));var moment=require(_0xaa30('0x2'));var BPromise=require('bluebird');var rs=require(_0xaa30('0x3'));var fs=require('fs');var Redis=require(_0xaa30('0x4'));var db=require(_0xaa30('0x5'))['db'];var utils=require(_0xaa30('0x6'));var logger=require(_0xaa30('0x7'))(_0xaa30('0x8'));var config=require(_0xaa30('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa30('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8af448,_0x14fe09,_0x42dc22){return new BPromise(function(_0x5d076a,_0xedbc45){return client[_0xaa30('0xb')](_0x8af448,_0x42dc22)[_0xaa30('0xc')](function(_0x59d028){logger[_0xaa30('0xd')](_0xaa30('0xe'),_0x14fe09,'request\x20sent');logger['debug'](_0xaa30('0xf'),_0x14fe09,'request\x20sent',JSON[_0xaa30('0x10')](_0x59d028));if(_0x59d028[_0xaa30('0x11')]){if(_0x59d028[_0xaa30('0x11')][_0xaa30('0x12')]===0x1f4){logger['error'](_0xaa30('0xe'),_0x14fe09,_0x59d028[_0xaa30('0x11')][_0xaa30('0x13')]);return _0xedbc45(_0x59d028['error'][_0xaa30('0x13')]);}logger[_0xaa30('0x11')](_0xaa30('0xe'),_0x14fe09,_0x59d028[_0xaa30('0x11')][_0xaa30('0x13')]);return _0x5d076a(_0x59d028[_0xaa30('0x11')][_0xaa30('0x13')]);}else{logger[_0xaa30('0xd')](_0xaa30('0xe'),_0x14fe09,_0xaa30('0x14'));_0x5d076a(_0x59d028['result'][_0xaa30('0x13')]);}})['catch'](function(_0x5eb356){logger[_0xaa30('0x11')](_0xaa30('0xe'),_0x14fe09,_0x5eb356);_0xedbc45(_0x5eb356);});});}exports[_0xaa30('0x15')]=function(_0x540e36){var _0x54fa49=this;return new Promise(function(_0x53f9fd,_0x23ad3b){return db['SquareDetailsReport'][_0xaa30('0x16')](_0x540e36[_0xaa30('0x17')],{'raw':_0x540e36['options']?_0x540e36['options']['raw']===undefined?!![]:![]:!![]})[_0xaa30('0xc')](function(_0x3e4f1d){logger[_0xaa30('0xd')](_0xaa30('0x15'),_0x540e36);logger[_0xaa30('0x18')]('CreateSquareDetailsReport',_0x540e36,JSON[_0xaa30('0x10')](_0x3e4f1d));_0x53f9fd(_0x3e4f1d);})[_0xaa30('0x19')](function(_0x2e16e7){logger[_0xaa30('0x11')](_0xaa30('0x15'),_0x2e16e7['message'],_0x540e36);_0x23ad3b(_0x54fa49[_0xaa30('0x11')](0x1f4,_0x2e16e7[_0xaa30('0x13')]));});});};
\ No newline at end of file
+var _0xa32b=['create','body','CreateSquareDetailsReport','stringify','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','request\x20sent','error','SquareDetailsReport,\x20%s,\x20%s','message','info','result','catch','SquareDetailsReport'];(function(_0x5e3a45,_0x45f0c5){var _0x13419f=function(_0x5ac996){while(--_0x5ac996){_0x5e3a45['push'](_0x5e3a45['shift']());}};_0x13419f(++_0x45f0c5);}(_0xa32b,0x68));var _0xba32=function(_0x3f670b,_0x10f414){_0x3f670b=_0x3f670b-0x0;var _0x1c0978=_0xa32b[_0x3f670b];return _0x1c0978;};'use strict';var _=require(_0xba32('0x0'));var util=require('util');var moment=require(_0xba32('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xba32('0x2'));var db=require(_0xba32('0x3'))['db'];var utils=require(_0xba32('0x4'));var logger=require('../../config/logger')(_0xba32('0x5'));var config=require(_0xba32('0x6'));var jayson=require(_0xba32('0x7'));var client=jayson[_0xba32('0x8')][_0xba32('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c5a59,_0x1b1332,_0x4edbc6){return new BPromise(function(_0xcdcc5b,_0x13395b){return client[_0xba32('0xa')](_0x5c5a59,_0x4edbc6)[_0xba32('0xb')](function(_0x5d8f64){logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x1b1332,'request\x20sent');logger[_0xba32('0xc')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x1b1332,_0xba32('0xd'),JSON['stringify'](_0x5d8f64));if(_0x5d8f64[_0xba32('0xe')]){if(_0x5d8f64['error']['code']===0x1f4){logger[_0xba32('0xe')](_0xba32('0xf'),_0x1b1332,_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);return _0x13395b(_0x5d8f64[_0xba32('0xe')]['message']);}logger[_0xba32('0xe')](_0xba32('0xf'),_0x1b1332,_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);return _0xcdcc5b(_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);}else{logger[_0xba32('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0x1b1332,_0xba32('0xd'));_0xcdcc5b(_0x5d8f64[_0xba32('0x12')][_0xba32('0x10')]);}})[_0xba32('0x13')](function(_0x310dee){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x1b1332,_0x310dee);_0x13395b(_0x310dee);});});}exports['CreateSquareDetailsReport']=function(_0x5c3fe6){var _0x234db9=this;return new Promise(function(_0x1ae3ea,_0x42803d){return db[_0xba32('0x14')][_0xba32('0x15')](_0x5c3fe6[_0xba32('0x16')],{'raw':_0x5c3fe6['options']?_0x5c3fe6['options']['raw']===undefined?!![]:![]:!![]})[_0xba32('0xb')](function(_0x51c43a){logger[_0xba32('0x11')](_0xba32('0x17'),_0x5c3fe6);logger[_0xba32('0xc')](_0xba32('0x17'),_0x5c3fe6,JSON[_0xba32('0x18')](_0x51c43a));_0x1ae3ea(_0x51c43a);})[_0xba32('0x13')](function(_0xdfa807){logger['error'](_0xba32('0x17'),_0xdfa807[_0xba32('0x10')],_0x5c3fe6);_0x42803d(_0x234db9[_0xba32('0xe')](0x1f4,_0xdfa807[_0xba32('0x10')]));});});};
\ No newline at end of file
index b57f8b0..aeb995d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5b=['isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router','../../components/auth/service','get'];(function(_0x27e95b,_0x3b8302){var _0x827fb3=function(_0x422b29){while(--_0x422b29){_0x27e95b['push'](_0x27e95b['shift']());}};_0x827fb3(++_0x3b8302);}(_0x7d5b,0x1c7));var _0xb7d5=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0x7d5b[_0x45783c];return _0x1161da;};'use strict';var express=require(_0xb7d5('0x0'));var router=express[_0xb7d5('0x1')]();var auth=require(_0xb7d5('0x2'));var controller=require('./system.controller');router[_0xb7d5('0x3')]('/',auth[_0xb7d5('0x4')](),controller[_0xb7d5('0x5')]);router['get'](_0xb7d5('0x6'),auth['isAuthenticated'](),controller[_0xb7d5('0x7')]);module[_0xb7d5('0x8')]=router;
\ No newline at end of file
+var _0x5ed8=['express','Router','./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0x5ed8,0x1cb));var _0x85ed=function(_0x2e04b6,_0xd8ff75){_0x2e04b6=_0x2e04b6-0x0;var _0x3ef5cc=_0x5ed8[_0x2e04b6];return _0x3ef5cc;};'use strict';var express=require(_0x85ed('0x0'));var router=express[_0x85ed('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x85ed('0x2'));router[_0x85ed('0x3')]('/',auth[_0x85ed('0x4')](),controller[_0x85ed('0x5')]);router[_0x85ed('0x3')](_0x85ed('0x6'),auth[_0x85ed('0x4')](),controller[_0x85ed('0x7')]);module[_0x85ed('0x8')]=router;
\ No newline at end of file
index e8809ff..aa4a770 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81d2=['pid','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation','child_process','exec','../../config/logger','api','bluebird','lodash','error','name','index','getAllData','then','status','json','killProcess','components/import/cm','format','params','split','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!'];(function(_0x44db68,_0x26fbd3){var _0x5165a9=function(_0x5decec){while(--_0x5decec){_0x44db68['push'](_0x44db68['shift']());}};_0x5165a9(++_0x26fbd3);}(_0x81d2,0xfe));var _0x281d=function(_0x24d593,_0x188576){_0x24d593=_0x24d593-0x0;var _0x514b11=_0x81d2[_0x24d593];return _0x514b11;};'use strict';var info=require(_0x281d('0x0'));var exec=require(_0x281d('0x1'))[_0x281d('0x2')];var logger=require(_0x281d('0x3'))(_0x281d('0x4'));var util=require('util');var BPromise=require(_0x281d('0x5'));var _=require(_0x281d('0x6'));function handleError(_0x2f115e,_0x401ce9,_0x2a19c4){_0x401ce9=_0x401ce9||0x1f4;return function(_0x5b91cb){logger[_0x281d('0x7')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x2a19c4,_0x401ce9,util['inspect'](_0x5b91cb,{'showHidden':![],'depth':null}));delete _0x5b91cb[_0x281d('0x8')];_0x2f115e['status'](_0x401ce9)['send'](_0x5b91cb);};}exports[_0x281d('0x9')]=function(_0x22c827,_0x4618ee){return info[_0x281d('0xa')]()[_0x281d('0xb')](function(_0x1b3983){return _0x4618ee[_0x281d('0xc')](0xc8)['json'](_0x1b3983);})['catch'](function(_0x426e52){return _0x4618ee[_0x281d('0xc')](0x1f4)[_0x281d('0xd')](_0x426e52);});};exports[_0x281d('0xe')]=function(_0x31f6f1,_0x465702){var _0xe7fe7=[_0x281d('0xf')];return new BPromise(function(_0x4a6c3c,_0x43a3fc){return exec(util[_0x281d('0x10')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x31f6f1[_0x281d('0x11')]['pid']),function(_0x59be32,_0x5b10ab,_0x3d8eca){if(_0x59be32){return _0x43a3fc(_0x59be32);}return _0x4a6c3c(_0x5b10ab);});})[_0x281d('0xb')](function(_0x4f1c2d){var _0x820d51=![];var _0x4d3eb3=_0x4f1c2d[_0x281d('0x12')](/\n/);for(var _0x536660=0x0,_0x103367=_0xe7fe7['length'];_0x536660<_0x103367,_0x820d51===![];_0x536660+=0x1){if(_0x4f1c2d[_0x281d('0x13')](_0xe7fe7[_0x536660])>=0x0){_0x820d51=!![];}}if(!_0x820d51){throw new Error(util['format'](_0x281d('0x14'),_0x31f6f1[_0x281d('0x11')][_0x281d('0x15')]));}process[_0x281d('0x16')](_0x31f6f1[_0x281d('0x11')][_0x281d('0x15')],'SIGINT');return _0x465702[_0x281d('0xc')](0xc8)[_0x281d('0xd')]({'message':util[_0x281d('0x10')](_0x281d('0x17'),_0x31f6f1[_0x281d('0x11')][_0x281d('0x15')])});})[_0x281d('0x18')](handleError(_0x465702,null,'killProcess'));};
\ No newline at end of file
+var _0x5bc6=['killProcess','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','split','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','exec','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','status','send','getAllData','then','json'];(function(_0x3b632f,_0x453380){var _0x10e788=function(_0x2228a4){while(--_0x2228a4){_0x3b632f['push'](_0x3b632f['shift']());}};_0x10e788(++_0x453380);}(_0x5bc6,0xa7));var _0x65bc=function(_0x51e285,_0x5e35e7){_0x51e285=_0x51e285-0x0;var _0x3da75f=_0x5bc6[_0x51e285];return _0x3da75f;};'use strict';var info=require(_0x65bc('0x0'));var exec=require('child_process')[_0x65bc('0x1')];var logger=require(_0x65bc('0x2'))(_0x65bc('0x3'));var util=require(_0x65bc('0x4'));var BPromise=require(_0x65bc('0x5'));var _=require(_0x65bc('0x6'));function handleError(_0xac3114,_0x40ba6b,_0xa6d1a9){_0x40ba6b=_0x40ba6b||0x1f4;return function(_0x2f2af0){logger[_0x65bc('0x7')](_0x65bc('0x8'),_0xa6d1a9,_0x40ba6b,util[_0x65bc('0x9')](_0x2f2af0,{'showHidden':![],'depth':null}));delete _0x2f2af0['name'];_0xac3114[_0x65bc('0xa')](_0x40ba6b)[_0x65bc('0xb')](_0x2f2af0);};}exports['index']=function(_0x504c70,_0x16b9da){return info[_0x65bc('0xc')]()[_0x65bc('0xd')](function(_0x198411){return _0x16b9da[_0x65bc('0xa')](0xc8)['json'](_0x198411);})['catch'](function(_0x3577fb){return _0x16b9da[_0x65bc('0xa')](0x1f4)[_0x65bc('0xe')](_0x3577fb);});};exports[_0x65bc('0xf')]=function(_0x60a9c8,_0x8be42e){var _0x4abb54=['components/import/cm'];return new BPromise(function(_0x43da3c,_0x3e90f9){return exec(util[_0x65bc('0x10')](_0x65bc('0x11'),_0x60a9c8[_0x65bc('0x12')]['pid']),function(_0x363432,_0x1dc53a,_0x3f3413){if(_0x363432){return _0x3e90f9(_0x363432);}return _0x43da3c(_0x1dc53a);});})[_0x65bc('0xd')](function(_0x14773d){var _0x25f859=![];var _0x23ff4e=_0x14773d[_0x65bc('0x13')](/\n/);for(var _0x2ec500=0x0,_0x4d3ca2=_0x4abb54['length'];_0x2ec500<_0x4d3ca2,_0x25f859===![];_0x2ec500+=0x1){if(_0x14773d[_0x65bc('0x14')](_0x4abb54[_0x2ec500])>=0x0){_0x25f859=!![];}}if(!_0x25f859){throw new Error(util[_0x65bc('0x10')](_0x65bc('0x15'),_0x60a9c8[_0x65bc('0x12')][_0x65bc('0x16')]));}process[_0x65bc('0x17')](_0x60a9c8[_0x65bc('0x12')][_0x65bc('0x16')],_0x65bc('0x18'));return _0x8be42e[_0x65bc('0xa')](0xc8)['json']({'message':util[_0x65bc('0x10')](_0x65bc('0x19'),_0x60a9c8[_0x65bc('0x12')][_0x65bc('0x16')])});})['catch'](handleError(_0x8be42e,null,_0x65bc('0xf')));};
\ No newline at end of file
index 7a2e48c..80bed34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x186d=['delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./tag.controller','index','get','/:id','show','post','isAuthenticated','put','update'];(function(_0x49481d,_0xd95b74){var _0x27dd6e=function(_0xee3740){while(--_0xee3740){_0x49481d['push'](_0x49481d['shift']());}};_0x27dd6e(++_0xd95b74);}(_0x186d,0x1ca));var _0xd186=function(_0x260073,_0xbe6af9){_0x260073=_0x260073-0x0;var _0x4ff033=_0x186d[_0x260073];return _0x4ff033;};'use strict';var multer=require('multer');var util=require(_0xd186('0x0'));var path=require(_0xd186('0x1'));var timeout=require(_0xd186('0x2'));var express=require(_0xd186('0x3'));var router=express[_0xd186('0x4')]();var fs_extra=require(_0xd186('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd186('0x6'));var config=require(_0xd186('0x7'));var controller=require(_0xd186('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xd186('0x9')]);router[_0xd186('0xa')](_0xd186('0xb'),auth['isAuthenticated'](),controller[_0xd186('0xc')]);router[_0xd186('0xd')]('/',auth[_0xd186('0xe')](),controller['create']);router[_0xd186('0xf')](_0xd186('0xb'),auth[_0xd186('0xe')](),controller[_0xd186('0x10')]);router[_0xd186('0x11')](_0xd186('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xd186('0x12')]=router;
\ No newline at end of file
+var _0x9916=['show','post','create','put','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./tag.controller','isAuthenticated','index','get'];(function(_0x1d3bbc,_0x47b303){var _0x1f0e96=function(_0x547a0c){while(--_0x547a0c){_0x1d3bbc['push'](_0x1d3bbc['shift']());}};_0x1f0e96(++_0x47b303);}(_0x9916,0x15c));var _0x6991=function(_0x4164d1,_0x38e72a){_0x4164d1=_0x4164d1-0x0;var _0x3e64d8=_0x9916[_0x4164d1];return _0x3e64d8;};'use strict';var multer=require(_0x6991('0x0'));var util=require(_0x6991('0x1'));var path=require(_0x6991('0x2'));var timeout=require(_0x6991('0x3'));var express=require(_0x6991('0x4'));var router=express[_0x6991('0x5')]();var fs_extra=require(_0x6991('0x6'));var auth=require(_0x6991('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6991('0x8'));router['get']('/',auth[_0x6991('0x9')](),controller[_0x6991('0xa')]);router[_0x6991('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x6991('0xc')]);router[_0x6991('0xd')]('/',auth[_0x6991('0x9')](),controller[_0x6991('0xe')]);router[_0x6991('0xf')](_0x6991('0x10'),auth[_0x6991('0x9')](),controller['update']);router['delete'](_0x6991('0x10'),auth[_0x6991('0x9')](),controller['destroy']);module[_0x6991('0x11')]=router;
\ No newline at end of file
index 0b22beb..c9f0695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['STRING','sequelize','exports'];(function(_0x16db8b,_0xca7d28){var _0x5ba017=function(_0x35b933){while(--_0x35b933){_0x16db8b['push'](_0x16db8b['shift']());}};_0x5ba017(++_0xca7d28);}(_0x5b12,0xa3));var _0x25b1=function(_0x59e727,_0x555328){_0x59e727=_0x59e727-0x0;var _0x427e82=_0x5b12[_0x59e727];return _0x427e82;};'use strict';var Sequelize=require(_0x25b1('0x0'));module[_0x25b1('0x1')]={'name':{'type':Sequelize[_0x25b1('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x25b1('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x25b1('0x2')]}};
\ No newline at end of file
+var _0x2d58=['sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d58,0x186));var _0x82d5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2d58[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x82d5('0x0'));module[_0x82d5('0x1')]={'name':{'type':Sequelize[_0x82d5('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x82d5('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x82d5('0x2')]}};
\ No newline at end of file
index 23a4047..bda4129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','Tags','UserProfileResource','name','send','index','map','Tag','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','offset','sort','pick','filter','where','options','includeAll','include','catch','show','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra'];(function(_0xe68117,_0x1d113f){var _0x3aa731=function(_0x3bc643){while(--_0x3bc643){_0xe68117['push'](_0xe68117['shift']());}};_0x3aa731(++_0x1d113f);}(_0xbec5,0xe5));var _0x5bec=function(_0xdf3db6,_0x2a1952){_0xdf3db6=_0xdf3db6-0x0;var _0x4b7a65=_0xbec5[_0xdf3db6];return _0x4b7a65;};'use strict';var emlformat=require(_0x5bec('0x0'));var rimraf=require(_0x5bec('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5bec('0x2'));var rp=require(_0x5bec('0x3'));var moment=require(_0x5bec('0x4'));var BPromise=require(_0x5bec('0x5'));var Mustache=require(_0x5bec('0x6'));var util=require('util');var path=require(_0x5bec('0x7'));var sox=require(_0x5bec('0x8'));var csv=require(_0x5bec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bec('0xa'));var _=require(_0x5bec('0xb'));var squel=require(_0x5bec('0xc'));var crypto=require(_0x5bec('0xd'));var jsforce=require(_0x5bec('0xe'));var deskjs=require(_0x5bec('0xf'));var toCsv=require(_0x5bec('0x9'));var querystring=require(_0x5bec('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bec('0x12'));var as=require(_0x5bec('0x13'));var hardwareService=require(_0x5bec('0x14'));var logger=require('../../config/logger')(_0x5bec('0x15'));var utils=require(_0x5bec('0x16'));var config=require(_0x5bec('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bec('0x18'))['db'];function respondWithStatusCode(_0x1c888f,_0x589d14){_0x589d14=_0x589d14||0xcc;return function(_0x2d2ba2){if(_0x2d2ba2){return _0x1c888f[_0x5bec('0x19')](_0x589d14);}return _0x1c888f[_0x5bec('0x1a')](_0x589d14)[_0x5bec('0x1b')]();};}function respondWithResult(_0x3198e0,_0xcd6d90){_0xcd6d90=_0xcd6d90||0xc8;return function(_0x24dcd6){if(_0x24dcd6){return _0x3198e0[_0x5bec('0x1a')](_0xcd6d90)[_0x5bec('0x1c')](_0x24dcd6);}};}function respondWithFilteredResult(_0x3ebc41,_0x31b9e4){return function(_0x325daf){if(_0x325daf){var _0x11fb8e=typeof _0x31b9e4['offset']==='undefined'&&typeof _0x31b9e4[_0x5bec('0x1d')]===_0x5bec('0x1e');var _0x31ad9c=_0x325daf[_0x5bec('0x1f')];var _0x5cd7ae=_0x11fb8e?0x0:_0x31b9e4['offset'];var _0x3cd354=_0x11fb8e?_0x325daf[_0x5bec('0x1f')]:_0x31b9e4['offset']+_0x31b9e4[_0x5bec('0x1d')];var _0xa7e223;if(_0x3cd354>=_0x31ad9c){_0x3cd354=_0x31ad9c;_0xa7e223=0xc8;}else{_0xa7e223=0xce;}_0x3ebc41[_0x5bec('0x1a')](_0xa7e223);return _0x3ebc41[_0x5bec('0x20')]('Content-Range',_0x5cd7ae+'-'+_0x3cd354+'/'+_0x31ad9c)[_0x5bec('0x1c')](_0x325daf);}return null;};}function patchUpdates(_0x5be91c){return function(_0x191c0f){try{jsonpatch[_0x5bec('0x21')](_0x191c0f,_0x5be91c,!![]);}catch(_0x3e1896){return BPromise[_0x5bec('0x22')](_0x3e1896);}return _0x191c0f[_0x5bec('0x23')]();};}function saveUpdates(_0x5e154e,_0x232584){return function(_0x4cfcb8){if(_0x4cfcb8){return _0x4cfcb8[_0x5bec('0x24')](_0x5e154e)[_0x5bec('0x25')](function(_0x5b2636){return _0x5b2636;});}return null;};}function removeEntity(_0xa414f8,_0xbef70b){return function(_0x4e0ca2){if(_0x4e0ca2){return _0x4e0ca2[_0x5bec('0x26')]()[_0x5bec('0x25')](function(){var _0x43d460=_0x4e0ca2[_0x5bec('0x27')]({'plain':!![]});var _0x226d55=_0x5bec('0x28');return db[_0x5bec('0x29')]['destroy']({'where':{'type':_0x226d55,'resourceId':_0x43d460['id']}})['then'](function(){return _0x4e0ca2;});})['then'](function(){_0xa414f8[_0x5bec('0x1a')](0xcc)[_0x5bec('0x1b')]();});}};}function handleEntityNotFound(_0x338c25,_0x4939a5){return function(_0x2b3b2c){if(!_0x2b3b2c){_0x338c25[_0x5bec('0x19')](0x194);}return _0x2b3b2c;};}function handleError(_0x57331b,_0x29e358){_0x29e358=_0x29e358||0x1f4;return function(_0x63ac8){logger['error'](_0x63ac8['stack']);if(_0x63ac8[_0x5bec('0x2a')]){delete _0x63ac8[_0x5bec('0x2a')];}_0x57331b[_0x5bec('0x1a')](_0x29e358)[_0x5bec('0x2b')](_0x63ac8);};}exports[_0x5bec('0x2c')]=function(_0x3f224c,_0x5d6621){var _0x2987ca={},_0x59b5b6={},_0x45863b={'count':0x0,'rows':[]};var _0xafbd94=_[_0x5bec('0x2d')](db[_0x5bec('0x2e')]['rawAttributes'],function(_0x2b42c8){return{'name':_0x2b42c8[_0x5bec('0x2f')],'type':_0x2b42c8[_0x5bec('0x30')]['key']};});_0x59b5b6[_0x5bec('0x31')]=_['map'](_0xafbd94,_0x5bec('0x2a'));_0x59b5b6[_0x5bec('0x32')]=_[_0x5bec('0x33')](_0x3f224c['query']);_0x59b5b6[_0x5bec('0x34')]=_[_0x5bec('0x35')](_0x59b5b6['model'],_0x59b5b6[_0x5bec('0x32')]);_0x2987ca[_0x5bec('0x36')]=_[_0x5bec('0x35')](_0x59b5b6[_0x5bec('0x31')],qs[_0x5bec('0x37')](_0x3f224c['query'][_0x5bec('0x37')]));_0x2987ca['attributes']=_0x2987ca[_0x5bec('0x36')][_0x5bec('0x38')]?_0x2987ca[_0x5bec('0x36')]:_0x59b5b6[_0x5bec('0x31')];if(!_0x3f224c[_0x5bec('0x32')][_0x5bec('0x39')]('nolimit')){_0x2987ca[_0x5bec('0x1d')]=qs[_0x5bec('0x1d')](_0x3f224c[_0x5bec('0x32')]['limit']);_0x2987ca[_0x5bec('0x3a')]=qs[_0x5bec('0x3a')](_0x3f224c['query'][_0x5bec('0x3a')]);}_0x2987ca['order']=qs[_0x5bec('0x3b')](_0x3f224c[_0x5bec('0x32')][_0x5bec('0x3b')]);_0x2987ca['where']=qs[_0x5bec('0x34')](_[_0x5bec('0x3c')](_0x3f224c[_0x5bec('0x32')],_0x59b5b6[_0x5bec('0x34')]),_0xafbd94);if(_0x3f224c[_0x5bec('0x32')][_0x5bec('0x3d')]){_0x2987ca[_0x5bec('0x3e')]=_['merge'](_0x2987ca[_0x5bec('0x3e')],{'$or':_[_0x5bec('0x2d')](_0xafbd94,function(_0x323812){if(_0x323812[_0x5bec('0x30')]!=='VIRTUAL'){var _0x27863b={};_0x27863b[_0x323812[_0x5bec('0x2a')]]={'$like':'%'+_0x3f224c[_0x5bec('0x32')]['filter']+'%'};return _0x27863b;}})});}_0x2987ca=_['merge']({},_0x2987ca,_0x3f224c[_0x5bec('0x3f')]);var _0x153d02={'where':_0x2987ca[_0x5bec('0x3e')]};return db[_0x5bec('0x2e')][_0x5bec('0x1f')](_0x153d02)['then'](function(_0x4fee8a){_0x45863b[_0x5bec('0x1f')]=_0x4fee8a;if(_0x3f224c['query'][_0x5bec('0x40')]){_0x2987ca[_0x5bec('0x41')]=[{'all':!![]}];}return db[_0x5bec('0x2e')]['findAll'](_0x2987ca);})[_0x5bec('0x25')](function(_0x26a4a5){_0x45863b['rows']=_0x26a4a5;return _0x45863b;})[_0x5bec('0x25')](respondWithFilteredResult(_0x5d6621,_0x2987ca))[_0x5bec('0x42')](handleError(_0x5d6621,null));};exports[_0x5bec('0x43')]=function(_0x2b51f7,_0x3b5631){var _0x2724cf={'raw':!![],'where':{'id':_0x2b51f7['params']['id']}},_0x3a795c={};_0x3a795c['model']=_[_0x5bec('0x33')](db['Tag']['rawAttributes']);_0x3a795c[_0x5bec('0x32')]=_['keys'](_0x2b51f7['query']);_0x3a795c['filters']=_[_0x5bec('0x35')](_0x3a795c[_0x5bec('0x31')],_0x3a795c[_0x5bec('0x32')]);_0x2724cf[_0x5bec('0x36')]=_['intersection'](_0x3a795c[_0x5bec('0x31')],qs[_0x5bec('0x37')](_0x2b51f7[_0x5bec('0x32')][_0x5bec('0x37')]));_0x2724cf['attributes']=_0x2724cf[_0x5bec('0x36')][_0x5bec('0x38')]?_0x2724cf[_0x5bec('0x36')]:_0x3a795c['model'];if(_0x2b51f7[_0x5bec('0x32')]['includeAll']){_0x2724cf[_0x5bec('0x41')]=[{'all':!![]}];}_0x2724cf=_[_0x5bec('0x44')]({},_0x2724cf,_0x2b51f7[_0x5bec('0x3f')]);return db[_0x5bec('0x2e')]['find'](_0x2724cf)[_0x5bec('0x25')](handleEntityNotFound(_0x3b5631,null))[_0x5bec('0x25')](respondWithResult(_0x3b5631,null))[_0x5bec('0x42')](handleError(_0x3b5631,null));};exports[_0x5bec('0x45')]=function(_0x35b250,_0x123758){return db[_0x5bec('0x2e')]['create'](_0x35b250[_0x5bec('0x46')],{})[_0x5bec('0x25')](function(_0x5775ca){var _0x273e09=_0x35b250[_0x5bec('0x47')][_0x5bec('0x27')]({'plain':!![]});if(!_0x273e09)throw new Error(_0x5bec('0x48'));if(_0x273e09[_0x5bec('0x49')]===_0x5bec('0x47')){var _0x3545a5=_0x5775ca['get']({'plain':!![]});var _0x101dcb='Tags';return db[_0x5bec('0x4a')][_0x5bec('0x4b')]({'where':{'name':_0x101dcb,'userProfileId':_0x273e09[_0x5bec('0x4c')]},'raw':!![]})[_0x5bec('0x25')](function(_0x158e8e){if(_0x158e8e&&_0x158e8e[_0x5bec('0x4d')]===0x0){return db[_0x5bec('0x29')][_0x5bec('0x45')]({'name':_0x3545a5[_0x5bec('0x2a')],'resourceId':_0x3545a5['id'],'type':_0x158e8e[_0x5bec('0x2a')],'sectionId':_0x158e8e['id']},{})['then'](function(){return _0x5775ca;});}else{return _0x5775ca;}})[_0x5bec('0x42')](function(_0x51af88){logger['error'](_0x5bec('0x4e'),_0x51af88);throw _0x51af88;});}return _0x5775ca;})['then'](respondWithResult(_0x123758,0xc9))['catch'](handleError(_0x123758,null));};exports[_0x5bec('0x24')]=function(_0x2114e5,_0x416058){if(_0x2114e5['body']['id']){delete _0x2114e5[_0x5bec('0x46')]['id'];}return db[_0x5bec('0x2e')][_0x5bec('0x4b')]({'where':{'id':_0x2114e5[_0x5bec('0x4f')]['id']}})['then'](handleEntityNotFound(_0x416058,null))[_0x5bec('0x25')](saveUpdates(_0x2114e5[_0x5bec('0x46')],null))[_0x5bec('0x25')](respondWithResult(_0x416058,null))[_0x5bec('0x42')](handleError(_0x416058,null));};exports[_0x5bec('0x26')]=function(_0x3ddf28,_0x33b924){return db['Tag']['find']({'where':{'id':_0x3ddf28[_0x5bec('0x4f')]['id']}})['then'](handleEntityNotFound(_0x33b924,null))[_0x5bec('0x25')](removeEntity(_0x33b924,null))[_0x5bec('0x42')](handleError(_0x33b924,null));};
\ No newline at end of file
+var _0x593e=['UserProfileResource','error','name','send','index','map','Tag','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','type','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','get','Tags'];(function(_0xb0de07,_0x3ca2a0){var _0x4633d8=function(_0x2368e0){while(--_0x2368e0){_0xb0de07['push'](_0xb0de07['shift']());}};_0x4633d8(++_0x3ca2a0);}(_0x593e,0xcb));var _0xe593=function(_0x4ebe5d,_0x14752f){_0x4ebe5d=_0x4ebe5d-0x0;var _0x2b937a=_0x593e[_0x4ebe5d];return _0x2b937a;};'use strict';var emlformat=require(_0xe593('0x0'));var rimraf=require(_0xe593('0x1'));var zipdir=require(_0xe593('0x2'));var jsonpatch=require(_0xe593('0x3'));var rp=require(_0xe593('0x4'));var moment=require(_0xe593('0x5'));var BPromise=require(_0xe593('0x6'));var Mustache=require(_0xe593('0x7'));var util=require('util');var path=require(_0xe593('0x8'));var sox=require(_0xe593('0x9'));var csv=require(_0xe593('0xa'));var ejs=require(_0xe593('0xb'));var fs=require('fs');var fs_extra=require(_0xe593('0xc'));var _=require(_0xe593('0xd'));var squel=require(_0xe593('0xe'));var crypto=require(_0xe593('0xf'));var jsforce=require(_0xe593('0x10'));var deskjs=require(_0xe593('0x11'));var toCsv=require('to-csv');var querystring=require(_0xe593('0x12'));var Papa=require(_0xe593('0x13'));var Redis=require(_0xe593('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe593('0x15'));var hardwareService=require(_0xe593('0x16'));var logger=require(_0xe593('0x17'))('api');var utils=require(_0xe593('0x18'));var config=require(_0xe593('0x19'));var licenseUtil=require(_0xe593('0x1a'));var db=require(_0xe593('0x1b'))['db'];function respondWithStatusCode(_0x8ee313,_0x31dad0){_0x31dad0=_0x31dad0||0xcc;return function(_0x24c9fd){if(_0x24c9fd){return _0x8ee313[_0xe593('0x1c')](_0x31dad0);}return _0x8ee313[_0xe593('0x1d')](_0x31dad0)[_0xe593('0x1e')]();};}function respondWithResult(_0x499819,_0x2907e4){_0x2907e4=_0x2907e4||0xc8;return function(_0x1de391){if(_0x1de391){return _0x499819['status'](_0x2907e4)[_0xe593('0x1f')](_0x1de391);}};}function respondWithFilteredResult(_0x44837b,_0x5d4c6a){return function(_0x2ae9b6){if(_0x2ae9b6){var _0x40416c=typeof _0x5d4c6a[_0xe593('0x20')]===_0xe593('0x21')&&typeof _0x5d4c6a[_0xe593('0x22')]===_0xe593('0x21');var _0x48f3b4=_0x2ae9b6[_0xe593('0x23')];var _0x470d07=_0x40416c?0x0:_0x5d4c6a['offset'];var _0xd1020e=_0x40416c?_0x2ae9b6[_0xe593('0x23')]:_0x5d4c6a['offset']+_0x5d4c6a[_0xe593('0x22')];var _0x3dba1b;if(_0xd1020e>=_0x48f3b4){_0xd1020e=_0x48f3b4;_0x3dba1b=0xc8;}else{_0x3dba1b=0xce;}_0x44837b[_0xe593('0x1d')](_0x3dba1b);return _0x44837b[_0xe593('0x24')](_0xe593('0x25'),_0x470d07+'-'+_0xd1020e+'/'+_0x48f3b4)[_0xe593('0x1f')](_0x2ae9b6);}return null;};}function patchUpdates(_0x3d2a51){return function(_0x4ea53f){try{jsonpatch['apply'](_0x4ea53f,_0x3d2a51,!![]);}catch(_0x1634d4){return BPromise['reject'](_0x1634d4);}return _0x4ea53f['save']();};}function saveUpdates(_0x1bb8e8,_0x3c65b5){return function(_0x57379d){if(_0x57379d){return _0x57379d[_0xe593('0x26')](_0x1bb8e8)['then'](function(_0x1672bf){return _0x1672bf;});}return null;};}function removeEntity(_0x2c191f,_0x185cea){return function(_0x44d997){if(_0x44d997){return _0x44d997[_0xe593('0x27')]()[_0xe593('0x28')](function(){var _0x20a098=_0x44d997[_0xe593('0x29')]({'plain':!![]});var _0x4fc483=_0xe593('0x2a');return db[_0xe593('0x2b')]['destroy']({'where':{'type':_0x4fc483,'resourceId':_0x20a098['id']}})['then'](function(){return _0x44d997;});})[_0xe593('0x28')](function(){_0x2c191f[_0xe593('0x1d')](0xcc)[_0xe593('0x1e')]();});}};}function handleEntityNotFound(_0x43699d,_0x3b66bc){return function(_0x27a3d2){if(!_0x27a3d2){_0x43699d['sendStatus'](0x194);}return _0x27a3d2;};}function handleError(_0x350e2b,_0x54e5e2){_0x54e5e2=_0x54e5e2||0x1f4;return function(_0x1dacf6){logger[_0xe593('0x2c')](_0x1dacf6['stack']);if(_0x1dacf6[_0xe593('0x2d')]){delete _0x1dacf6['name'];}_0x350e2b[_0xe593('0x1d')](_0x54e5e2)[_0xe593('0x2e')](_0x1dacf6);};}exports[_0xe593('0x2f')]=function(_0x501e54,_0x1ae8d9){var _0x13f44={},_0x3066ed={},_0x338222={'count':0x0,'rows':[]};var _0x2588be=_[_0xe593('0x30')](db[_0xe593('0x31')]['rawAttributes'],function(_0x4098a9){return{'name':_0x4098a9[_0xe593('0x32')],'type':_0x4098a9['type'][_0xe593('0x33')]};});_0x3066ed['model']=_[_0xe593('0x30')](_0x2588be,_0xe593('0x2d'));_0x3066ed[_0xe593('0x34')]=_[_0xe593('0x35')](_0x501e54[_0xe593('0x34')]);_0x3066ed[_0xe593('0x36')]=_[_0xe593('0x37')](_0x3066ed[_0xe593('0x38')],_0x3066ed[_0xe593('0x34')]);_0x13f44[_0xe593('0x39')]=_['intersection'](_0x3066ed[_0xe593('0x38')],qs[_0xe593('0x3a')](_0x501e54[_0xe593('0x34')]['fields']));_0x13f44['attributes']=_0x13f44[_0xe593('0x39')]['length']?_0x13f44[_0xe593('0x39')]:_0x3066ed[_0xe593('0x38')];if(!_0x501e54[_0xe593('0x34')][_0xe593('0x3b')](_0xe593('0x3c'))){_0x13f44[_0xe593('0x22')]=qs[_0xe593('0x22')](_0x501e54['query']['limit']);_0x13f44[_0xe593('0x20')]=qs['offset'](_0x501e54[_0xe593('0x34')]['offset']);}_0x13f44[_0xe593('0x3d')]=qs['sort'](_0x501e54['query'][_0xe593('0x3e')]);_0x13f44[_0xe593('0x3f')]=qs[_0xe593('0x36')](_['pick'](_0x501e54['query'],_0x3066ed['filters']),_0x2588be);if(_0x501e54[_0xe593('0x34')]['filter']){_0x13f44[_0xe593('0x3f')]=_[_0xe593('0x40')](_0x13f44[_0xe593('0x3f')],{'$or':_[_0xe593('0x30')](_0x2588be,function(_0x50249e){if(_0x50249e[_0xe593('0x41')]!=='VIRTUAL'){var _0x36c08e={};_0x36c08e[_0x50249e['name']]={'$like':'%'+_0x501e54['query']['filter']+'%'};return _0x36c08e;}})});}_0x13f44=_[_0xe593('0x40')]({},_0x13f44,_0x501e54['options']);var _0x3addf0={'where':_0x13f44[_0xe593('0x3f')]};return db[_0xe593('0x31')]['count'](_0x3addf0)[_0xe593('0x28')](function(_0x3f9784){_0x338222[_0xe593('0x23')]=_0x3f9784;if(_0x501e54[_0xe593('0x34')][_0xe593('0x42')]){_0x13f44[_0xe593('0x43')]=[{'all':!![]}];}return db[_0xe593('0x31')][_0xe593('0x44')](_0x13f44);})['then'](function(_0x211065){_0x338222[_0xe593('0x45')]=_0x211065;return _0x338222;})[_0xe593('0x28')](respondWithFilteredResult(_0x1ae8d9,_0x13f44))[_0xe593('0x46')](handleError(_0x1ae8d9,null));};exports[_0xe593('0x47')]=function(_0x4d3018,_0x4a9a5f){var _0x3fd874={'raw':!![],'where':{'id':_0x4d3018[_0xe593('0x48')]['id']}},_0x380429={};_0x380429['model']=_[_0xe593('0x35')](db[_0xe593('0x31')]['rawAttributes']);_0x380429['query']=_[_0xe593('0x35')](_0x4d3018[_0xe593('0x34')]);_0x380429[_0xe593('0x36')]=_['intersection'](_0x380429[_0xe593('0x38')],_0x380429[_0xe593('0x34')]);_0x3fd874[_0xe593('0x39')]=_[_0xe593('0x37')](_0x380429['model'],qs['fields'](_0x4d3018['query']['fields']));_0x3fd874[_0xe593('0x39')]=_0x3fd874['attributes'][_0xe593('0x49')]?_0x3fd874[_0xe593('0x39')]:_0x380429[_0xe593('0x38')];if(_0x4d3018[_0xe593('0x34')][_0xe593('0x42')]){_0x3fd874[_0xe593('0x43')]=[{'all':!![]}];}_0x3fd874=_[_0xe593('0x40')]({},_0x3fd874,_0x4d3018[_0xe593('0x4a')]);return db['Tag'][_0xe593('0x4b')](_0x3fd874)[_0xe593('0x28')](handleEntityNotFound(_0x4a9a5f,null))[_0xe593('0x28')](respondWithResult(_0x4a9a5f,null))['catch'](handleError(_0x4a9a5f,null));};exports[_0xe593('0x4c')]=function(_0x5dfdb1,_0x39ec9e){return db[_0xe593('0x31')][_0xe593('0x4c')](_0x5dfdb1['body'],{})['then'](function(_0x7431a3){var _0x45beb1=_0x5dfdb1['user']['get']({'plain':!![]});if(!_0x45beb1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x45beb1['role']==='user'){var _0x383645=_0x7431a3[_0xe593('0x29')]({'plain':!![]});var _0x1ed8b5=_0xe593('0x2a');return db[_0xe593('0x4d')][_0xe593('0x4b')]({'where':{'name':_0x1ed8b5,'userProfileId':_0x45beb1[_0xe593('0x4e')]},'raw':!![]})[_0xe593('0x28')](function(_0x355ad8){if(_0x355ad8&&_0x355ad8[_0xe593('0x4f')]===0x0){return db[_0xe593('0x2b')][_0xe593('0x4c')]({'name':_0x383645[_0xe593('0x2d')],'resourceId':_0x383645['id'],'type':_0x355ad8[_0xe593('0x2d')],'sectionId':_0x355ad8['id']},{})[_0xe593('0x28')](function(){return _0x7431a3;});}else{return _0x7431a3;}})[_0xe593('0x46')](function(_0x5d60c3){logger[_0xe593('0x2c')](_0xe593('0x50'),_0x5d60c3);throw _0x5d60c3;});}return _0x7431a3;})[_0xe593('0x28')](respondWithResult(_0x39ec9e,0xc9))[_0xe593('0x46')](handleError(_0x39ec9e,null));};exports[_0xe593('0x26')]=function(_0x8130b2,_0x363643){if(_0x8130b2[_0xe593('0x51')]['id']){delete _0x8130b2[_0xe593('0x51')]['id'];}return db[_0xe593('0x31')][_0xe593('0x4b')]({'where':{'id':_0x8130b2[_0xe593('0x48')]['id']}})[_0xe593('0x28')](handleEntityNotFound(_0x363643,null))[_0xe593('0x28')](saveUpdates(_0x8130b2[_0xe593('0x51')],null))['then'](respondWithResult(_0x363643,null))[_0xe593('0x46')](handleError(_0x363643,null));};exports[_0xe593('0x27')]=function(_0x142d0f,_0x24d061){return db[_0xe593('0x31')]['find']({'where':{'id':_0x142d0f['params']['id']}})[_0xe593('0x28')](handleEntityNotFound(_0x24d061,null))[_0xe593('0x28')](removeEntity(_0x24d061,null))[_0xe593('0x46')](handleError(_0x24d061,null));};
\ No newline at end of file
index 02e02d8..80e2368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7136=['tools_tags','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag'];(function(_0x5c813a,_0x1ec52c){var _0xe55f5b=function(_0x1cdf37){while(--_0x1cdf37){_0x5c813a['push'](_0x5c813a['shift']());}};_0xe55f5b(++_0x1ec52c);}(_0x7136,0x90));var _0x6713=function(_0x52ce8e,_0x4dacf5){_0x52ce8e=_0x52ce8e-0x0;var _0x489cf9=_0x7136[_0x52ce8e];return _0x489cf9;};'use strict';var _=require('lodash');var util=require(_0x6713('0x0'));var logger=require(_0x6713('0x1'))(_0x6713('0x2'));var moment=require('moment');var BPromise=require(_0x6713('0x3'));var rp=require(_0x6713('0x4'));var fs=require('fs');var path=require(_0x6713('0x5'));var rimraf=require(_0x6713('0x6'));var config=require(_0x6713('0x7'));var attributes=require(_0x6713('0x8'));module[_0x6713('0x9')]=function(_0x13adc7,_0x3b3523){return _0x13adc7[_0x6713('0xa')](_0x6713('0xb'),attributes,{'tableName':_0x6713('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d35=['lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./tag.attributes','Tag','tools_tags'];(function(_0x38230,_0x148d0c){var _0x522ec9=function(_0x21fefc){while(--_0x21fefc){_0x38230['push'](_0x38230['shift']());}};_0x522ec9(++_0x148d0c);}(_0x6d35,0xa5));var _0x56d3=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0x6d35[_0x57486e];return _0x5f110b;};'use strict';var _=require(_0x56d3('0x0'));var util=require(_0x56d3('0x1'));var logger=require('../../config/logger')(_0x56d3('0x2'));var moment=require(_0x56d3('0x3'));var BPromise=require('bluebird');var rp=require(_0x56d3('0x4'));var fs=require('fs');var path=require(_0x56d3('0x5'));var rimraf=require(_0x56d3('0x6'));var config=require(_0x56d3('0x7'));var attributes=require(_0x56d3('0x8'));module['exports']=function(_0x49805f,_0x3b9b3a){return _0x49805f['define'](_0x56d3('0x9'),attributes,{'tableName':_0x56d3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 91db748..4a30b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f62=['util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Tag,\x20%s,\x20%s','Tag,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch'];(function(_0x15ef34,_0x300c6b){var _0x31dc49=function(_0x10d6b1){while(--_0x10d6b1){_0x15ef34['push'](_0x15ef34['shift']());}};_0x31dc49(++_0x300c6b);}(_0x9f62,0x154));var _0x29f6=function(_0x5caa93,_0x4863ba){_0x5caa93=_0x5caa93-0x0;var _0x2157dd=_0x9f62[_0x5caa93];return _0x2157dd;};'use strict';var _=require('lodash');var util=require(_0x29f6('0x0'));var moment=require('moment');var BPromise=require(_0x29f6('0x1'));var rs=require(_0x29f6('0x2'));var fs=require('fs');var Redis=require(_0x29f6('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x29f6('0x4'))(_0x29f6('0x5'));var config=require(_0x29f6('0x6'));var jayson=require(_0x29f6('0x7'));var client=jayson['client'][_0x29f6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x272876,_0x9a43fe,_0x2ba602){return new BPromise(function(_0x416c6c,_0x5e9945){return client['request'](_0x272876,_0x2ba602)['then'](function(_0x549f64){logger[_0x29f6('0x9')](_0x29f6('0xa'),_0x9a43fe,'request\x20sent');logger['debug'](_0x29f6('0xb'),_0x9a43fe,_0x29f6('0xc'),JSON['stringify'](_0x549f64));if(_0x549f64[_0x29f6('0xd')]){if(_0x549f64[_0x29f6('0xd')]['code']===0x1f4){logger['error']('Tag,\x20%s,\x20%s',_0x9a43fe,_0x549f64['error'][_0x29f6('0xe')]);return _0x5e9945(_0x549f64[_0x29f6('0xd')][_0x29f6('0xe')]);}logger[_0x29f6('0xd')](_0x29f6('0xa'),_0x9a43fe,_0x549f64[_0x29f6('0xd')][_0x29f6('0xe')]);return _0x416c6c(_0x549f64[_0x29f6('0xd')][_0x29f6('0xe')]);}else{logger[_0x29f6('0x9')](_0x29f6('0xa'),_0x9a43fe,_0x29f6('0xc'));_0x416c6c(_0x549f64[_0x29f6('0xf')][_0x29f6('0xe')]);}})[_0x29f6('0x10')](function(_0x14dd56){logger[_0x29f6('0xd')]('Tag,\x20%s,\x20%s',_0x9a43fe,_0x14dd56);_0x5e9945(_0x14dd56);});});}
\ No newline at end of file
+var _0xde64=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x3bf0c0,_0x4696ba){var _0x2a511a=function(_0x2f4a6e){while(--_0x2f4a6e){_0x3bf0c0['push'](_0x3bf0c0['shift']());}};_0x2a511a(++_0x4696ba);}(_0xde64,0x17c));var _0x4de6=function(_0x1579b4,_0x5a5ec){_0x1579b4=_0x1579b4-0x0;var _0x4cdfdc=_0xde64[_0x1579b4];return _0x4cdfdc;};'use strict';var _=require(_0x4de6('0x0'));var util=require(_0x4de6('0x1'));var moment=require(_0x4de6('0x2'));var BPromise=require(_0x4de6('0x3'));var rs=require(_0x4de6('0x4'));var fs=require('fs');var Redis=require(_0x4de6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4de6('0x6'));var logger=require(_0x4de6('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4de6('0x8'));var client=jayson[_0x4de6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x568496,_0x24edef,_0x35ae72){return new BPromise(function(_0x475fb9,_0x248e39){return client[_0x4de6('0xa')](_0x568496,_0x35ae72)[_0x4de6('0xb')](function(_0x48a974){logger[_0x4de6('0xc')](_0x4de6('0xd'),_0x24edef,_0x4de6('0xe'));logger['debug'](_0x4de6('0xf'),_0x24edef,_0x4de6('0xe'),JSON[_0x4de6('0x10')](_0x48a974));if(_0x48a974[_0x4de6('0x11')]){if(_0x48a974[_0x4de6('0x11')]['code']===0x1f4){logger[_0x4de6('0x11')](_0x4de6('0xd'),_0x24edef,_0x48a974[_0x4de6('0x11')]['message']);return _0x248e39(_0x48a974[_0x4de6('0x11')][_0x4de6('0x12')]);}logger[_0x4de6('0x11')](_0x4de6('0xd'),_0x24edef,_0x48a974['error'][_0x4de6('0x12')]);return _0x475fb9(_0x48a974[_0x4de6('0x11')][_0x4de6('0x12')]);}else{logger['info'](_0x4de6('0xd'),_0x24edef,'request\x20sent');_0x475fb9(_0x48a974['result'][_0x4de6('0x12')]);}})[_0x4de6('0x13')](function(_0x6dbcf3){logger[_0x4de6('0x11')](_0x4de6('0xd'),_0x24edef,_0x6dbcf3);_0x248e39(_0x6dbcf3);});});}
\ No newline at end of file
index 77d3ca8..bafa17d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
index 377c25a..90a5967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x578bb4,_0x51668c){var _0x1604d2=function(_0x218f9f){while(--_0x218f9f){_0x578bb4['push'](_0x578bb4['shift']());}};_0x1604d2(++_0x51668c);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0x500791,_0x34f94a){var _0x1b1842=function(_0x40a33e){while(--_0x40a33e){_0x500791['push'](_0x500791['shift']());}};_0x1b1842(++_0x34f94a);}(_0x757a,0xde));var _0xa757=function(_0x3575f7,_0x588e81){_0x3575f7=_0x3575f7-0x0;var _0x17ea08=_0x757a[_0x3575f7];return _0x17ea08;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6cc84c6..052d6be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c59=['toLowerCase','Queue','Queues','addQueues','isValidChannel','add','ids','removeQueues','findOne','remove','addAgents','Voice','Chat','Mail','Sms','Fax','Openchannel','sequelize','transaction','through','penalty','QueueId','User','findOrCreate','emit','Queue:save','findAll','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','TeamVoiceQueue','all','spread','removeAgents','Whatsapp','parse','Queue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./team.socket','register','sendStatus','status','undefined','limit','count','offset','Content-Range','json','apply','reject','save','then','get','Teams','UserProfileResource','destroy','end','stack','name','index','map','Team','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getQueues','channel','Sequelize','ValidationError','Unknown\x20channel','capitalize'];(function(_0x2dc343,_0xf015a2){var _0x51eac5=function(_0x1adfef){while(--_0x1adfef){_0x2dc343['push'](_0x2dc343['shift']());}};_0x51eac5(++_0xf015a2);}(_0x7c59,0x143));var _0x97c5=function(_0x225566,_0x185e72){_0x225566=_0x225566-0x0;var _0x3d48b3=_0x7c59[_0x225566];return _0x3d48b3;};'use strict';var emlformat=require(_0x97c5('0x0'));var rimraf=require(_0x97c5('0x1'));var zipdir=require(_0x97c5('0x2'));var jsonpatch=require(_0x97c5('0x3'));var rp=require('request-promise');var moment=require(_0x97c5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x97c5('0x5'));var util=require('util');var path=require(_0x97c5('0x6'));var sox=require(_0x97c5('0x7'));var csv=require(_0x97c5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97c5('0x9'));var _=require(_0x97c5('0xa'));var squel=require(_0x97c5('0xb'));var crypto=require('crypto');var jsforce=require(_0x97c5('0xc'));var deskjs=require(_0x97c5('0xd'));var toCsv=require(_0x97c5('0x8'));var querystring=require(_0x97c5('0xe'));var Papa=require(_0x97c5('0xf'));var Redis=require('ioredis');var authService=require(_0x97c5('0x10'));var qs=require(_0x97c5('0x11'));var as=require(_0x97c5('0x12'));var hardwareService=require(_0x97c5('0x13'));var logger=require(_0x97c5('0x14'))(_0x97c5('0x15'));var utils=require(_0x97c5('0x16'));var config=require(_0x97c5('0x17'));var licenseUtil=require(_0x97c5('0x18'));var db=require(_0x97c5('0x19'))['db'];config['redis']=_[_0x97c5('0x1a')](config['redis'],{'host':_0x97c5('0x1b'),'port':0x18eb});var socket=require(_0x97c5('0x1c'))(new Redis(config[_0x97c5('0x1d')]));require(_0x97c5('0x1e'))[_0x97c5('0x1f')](socket);function respondWithStatusCode(_0xe409af,_0x1ede8e){_0x1ede8e=_0x1ede8e||0xcc;return function(_0x1aeeaf){if(_0x1aeeaf){return _0xe409af[_0x97c5('0x20')](_0x1ede8e);}return _0xe409af[_0x97c5('0x21')](_0x1ede8e)['end']();};}function respondWithResult(_0x20120a,_0x560d3e){_0x560d3e=_0x560d3e||0xc8;return function(_0x533c86){if(_0x533c86){return _0x20120a[_0x97c5('0x21')](_0x560d3e)['json'](_0x533c86);}};}function respondWithFilteredResult(_0x5c74fd,_0x2065ad){return function(_0x5a8299){if(_0x5a8299){var _0x41a601=typeof _0x2065ad['offset']===_0x97c5('0x22')&&typeof _0x2065ad[_0x97c5('0x23')]===_0x97c5('0x22');var _0x4babfb=_0x5a8299[_0x97c5('0x24')];var _0x3a24af=_0x41a601?0x0:_0x2065ad[_0x97c5('0x25')];var _0x38c041=_0x41a601?_0x5a8299[_0x97c5('0x24')]:_0x2065ad[_0x97c5('0x25')]+_0x2065ad['limit'];var _0x46b051;if(_0x38c041>=_0x4babfb){_0x38c041=_0x4babfb;_0x46b051=0xc8;}else{_0x46b051=0xce;}_0x5c74fd[_0x97c5('0x21')](_0x46b051);return _0x5c74fd['set'](_0x97c5('0x26'),_0x3a24af+'-'+_0x38c041+'/'+_0x4babfb)[_0x97c5('0x27')](_0x5a8299);}return null;};}function patchUpdates(_0x5e7b94){return function(_0x1795a3){try{jsonpatch[_0x97c5('0x28')](_0x1795a3,_0x5e7b94,!![]);}catch(_0xf44f31){return BPromise[_0x97c5('0x29')](_0xf44f31);}return _0x1795a3[_0x97c5('0x2a')]();};}function saveUpdates(_0x1c73cb,_0xd6f2b3){return function(_0x294c62){if(_0x294c62){return _0x294c62['update'](_0x1c73cb)['then'](function(_0x42e05f){return _0x42e05f;});}return null;};}function removeEntity(_0x52a52c,_0x482ca2){return function(_0x3d388b){if(_0x3d388b){return _0x3d388b['destroy']()[_0x97c5('0x2b')](function(){var _0xace66e=_0x3d388b[_0x97c5('0x2c')]({'plain':!![]});var _0x350ea0=_0x97c5('0x2d');return db[_0x97c5('0x2e')][_0x97c5('0x2f')]({'where':{'type':_0x350ea0,'resourceId':_0xace66e['id']}})[_0x97c5('0x2b')](function(){return _0x3d388b;});})[_0x97c5('0x2b')](function(){_0x52a52c[_0x97c5('0x21')](0xcc)[_0x97c5('0x30')]();});}};}function handleEntityNotFound(_0x3abe1c,_0x2b5b30){return function(_0xc0a1de){if(!_0xc0a1de){_0x3abe1c[_0x97c5('0x20')](0x194);}return _0xc0a1de;};}function handleError(_0x402c20,_0x2dc991){_0x2dc991=_0x2dc991||0x1f4;return function(_0x2c14c4){logger['error'](_0x2c14c4[_0x97c5('0x31')]);if(_0x2c14c4['name']){delete _0x2c14c4[_0x97c5('0x32')];}_0x402c20[_0x97c5('0x21')](_0x2dc991)['send'](_0x2c14c4);};}exports[_0x97c5('0x33')]=function(_0x1dfbea,_0x356ba2){var _0x24059d={},_0x46d6d6={},_0x724027={'count':0x0,'rows':[]};var _0x2781b1=_[_0x97c5('0x34')](db[_0x97c5('0x35')][_0x97c5('0x36')],function(_0x799995){return{'name':_0x799995[_0x97c5('0x37')],'type':_0x799995[_0x97c5('0x38')][_0x97c5('0x39')]};});_0x46d6d6[_0x97c5('0x3a')]=_['map'](_0x2781b1,_0x97c5('0x32'));_0x46d6d6['query']=_[_0x97c5('0x3b')](_0x1dfbea[_0x97c5('0x3c')]);_0x46d6d6[_0x97c5('0x3d')]=_['intersection'](_0x46d6d6['model'],_0x46d6d6[_0x97c5('0x3c')]);_0x24059d[_0x97c5('0x3e')]=_['intersection'](_0x46d6d6[_0x97c5('0x3a')],qs['fields'](_0x1dfbea[_0x97c5('0x3c')][_0x97c5('0x3f')]));_0x24059d[_0x97c5('0x3e')]=_0x24059d[_0x97c5('0x3e')][_0x97c5('0x40')]?_0x24059d[_0x97c5('0x3e')]:_0x46d6d6[_0x97c5('0x3a')];if(!_0x1dfbea['query'][_0x97c5('0x41')](_0x97c5('0x42'))){_0x24059d['limit']=qs[_0x97c5('0x23')](_0x1dfbea['query'][_0x97c5('0x23')]);_0x24059d[_0x97c5('0x25')]=qs['offset'](_0x1dfbea[_0x97c5('0x3c')][_0x97c5('0x25')]);}_0x24059d['order']=qs[_0x97c5('0x43')](_0x1dfbea[_0x97c5('0x3c')][_0x97c5('0x43')]);_0x24059d[_0x97c5('0x44')]=qs[_0x97c5('0x3d')](_[_0x97c5('0x45')](_0x1dfbea['query'],_0x46d6d6[_0x97c5('0x3d')]),_0x2781b1);if(_0x1dfbea[_0x97c5('0x3c')][_0x97c5('0x46')]){_0x24059d[_0x97c5('0x44')]=_[_0x97c5('0x47')](_0x24059d['where'],{'$or':_[_0x97c5('0x34')](_0x2781b1,function(_0x531569){if(_0x531569[_0x97c5('0x38')]!==_0x97c5('0x48')){var _0x39e457={};_0x39e457[_0x531569['name']]={'$like':'%'+_0x1dfbea[_0x97c5('0x3c')][_0x97c5('0x46')]+'%'};return _0x39e457;}})});}_0x24059d=_['merge']({},_0x24059d,_0x1dfbea[_0x97c5('0x49')]);var _0x3f0e4a={'where':_0x24059d[_0x97c5('0x44')]};return db[_0x97c5('0x35')][_0x97c5('0x24')](_0x3f0e4a)[_0x97c5('0x2b')](function(_0x3ad0fb){_0x724027[_0x97c5('0x24')]=_0x3ad0fb;if(_0x1dfbea['query'][_0x97c5('0x4a')]){_0x24059d[_0x97c5('0x4b')]=[{'all':!![]}];}return db[_0x97c5('0x35')]['findAll'](_0x24059d);})[_0x97c5('0x2b')](function(_0x6487aa){_0x724027['rows']=_0x6487aa;return _0x724027;})[_0x97c5('0x2b')](respondWithFilteredResult(_0x356ba2,_0x24059d))[_0x97c5('0x4c')](handleError(_0x356ba2,null));};exports[_0x97c5('0x4d')]=function(_0x25d871,_0x2f254f){var _0x437190={'raw':![],'where':{'id':_0x25d871[_0x97c5('0x4e')]['id']}},_0x2e63b6={};_0x2e63b6[_0x97c5('0x3a')]=_['keys'](db['Team'][_0x97c5('0x36')]);_0x2e63b6['query']=_[_0x97c5('0x3b')](_0x25d871['query']);_0x2e63b6[_0x97c5('0x3d')]=_['intersection'](_0x2e63b6[_0x97c5('0x3a')],_0x2e63b6['query']);_0x437190[_0x97c5('0x3e')]=_[_0x97c5('0x4f')](_0x2e63b6[_0x97c5('0x3a')],qs[_0x97c5('0x3f')](_0x25d871[_0x97c5('0x3c')][_0x97c5('0x3f')]));_0x437190[_0x97c5('0x3e')]=_0x437190[_0x97c5('0x3e')][_0x97c5('0x40')]?_0x437190[_0x97c5('0x3e')]:_0x2e63b6['model'];if(_0x25d871[_0x97c5('0x3c')][_0x97c5('0x4a')]){_0x437190[_0x97c5('0x4b')]=[{'all':!![]}];}_0x437190=_[_0x97c5('0x47')]({},_0x437190,_0x25d871[_0x97c5('0x49')]);return db['Team'][_0x97c5('0x50')](_0x437190)['then'](handleEntityNotFound(_0x2f254f,null))[_0x97c5('0x2b')](respondWithResult(_0x2f254f,null))[_0x97c5('0x4c')](handleError(_0x2f254f,null));};exports[_0x97c5('0x51')]=function(_0x375709,_0x2c91df){return db[_0x97c5('0x35')][_0x97c5('0x51')](_0x375709[_0x97c5('0x52')],{})['then'](function(_0xbd9175){var _0x2a4153=_0x375709[_0x97c5('0x53')][_0x97c5('0x2c')]({'plain':!![]});if(!_0x2a4153)throw new Error(_0x97c5('0x54'));if(_0x2a4153[_0x97c5('0x55')]==='user'){var _0x5c0192=_0xbd9175[_0x97c5('0x2c')]({'plain':!![]});var _0x2c1b23=_0x97c5('0x2d');return db[_0x97c5('0x56')][_0x97c5('0x50')]({'where':{'name':_0x2c1b23,'userProfileId':_0x2a4153['userProfileId']},'raw':!![]})[_0x97c5('0x2b')](function(_0x1adb1e){if(_0x1adb1e&&_0x1adb1e[_0x97c5('0x57')]===0x0){return db[_0x97c5('0x2e')]['create']({'name':_0x5c0192[_0x97c5('0x32')],'resourceId':_0x5c0192['id'],'type':_0x1adb1e[_0x97c5('0x32')],'sectionId':_0x1adb1e['id']},{})['then'](function(){return _0xbd9175;});}else{return _0xbd9175;}})['catch'](function(_0x53c80a){logger[_0x97c5('0x58')](_0x97c5('0x59'),_0x53c80a);throw _0x53c80a;});}return _0xbd9175;})[_0x97c5('0x2b')](respondWithResult(_0x2c91df,0xc9))[_0x97c5('0x4c')](handleError(_0x2c91df,null));};exports[_0x97c5('0x5a')]=function(_0x195cb6,_0x3c292e){if(_0x195cb6[_0x97c5('0x52')]['id']){delete _0x195cb6['body']['id'];}return db[_0x97c5('0x35')][_0x97c5('0x50')]({'where':{'id':_0x195cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c292e,null))[_0x97c5('0x2b')](saveUpdates(_0x195cb6['body'],null))['then'](respondWithResult(_0x3c292e,null))[_0x97c5('0x4c')](handleError(_0x3c292e,null));};exports[_0x97c5('0x2f')]=function(_0x496ba6,_0x4070e8){return db[_0x97c5('0x35')][_0x97c5('0x50')]({'where':{'id':_0x496ba6['params']['id']}})[_0x97c5('0x2b')](handleEntityNotFound(_0x4070e8,null))['then'](removeEntity(_0x4070e8,null))['catch'](handleError(_0x4070e8,null));};exports[_0x97c5('0x5b')]=function(_0x483c08,_0x429362,_0x4a7b76){return db[_0x97c5('0x35')]['findOne']({'where':{'id':_0x483c08[_0x97c5('0x4e')]['id']}})[_0x97c5('0x2b')](handleEntityNotFound(_0x429362,null))['then'](function(_0x5ed112){if(!_0x483c08['query'][_0x97c5('0x5c')]||!utils['isValidChannel'](_0x483c08[_0x97c5('0x3c')][_0x97c5('0x5c')])){throw new db[(_0x97c5('0x5d'))][(_0x97c5('0x5e'))](_0x97c5('0x5f'));}var _0x52e9a7={};var _0xbd4ef3={};_0xbd4ef3[_0x97c5('0x3a')]=_[_0x97c5('0x3b')](db[_[_0x97c5('0x60')](_0x483c08[_0x97c5('0x3c')][_0x97c5('0x5c')][_0x97c5('0x61')]())+_0x97c5('0x62')][_0x97c5('0x36')]);_0xbd4ef3[_0x97c5('0x3c')]=_[_0x97c5('0x3b')](_0x483c08[_0x97c5('0x3c')]);_0xbd4ef3[_0x97c5('0x3d')]=_[_0x97c5('0x4f')](_0xbd4ef3['model'],_0xbd4ef3[_0x97c5('0x3c')]);_0x52e9a7[_0x97c5('0x3e')]=_['intersection'](_0xbd4ef3[_0x97c5('0x3a')],qs['fields'](_0x483c08[_0x97c5('0x3c')]['fields']));_0x52e9a7[_0x97c5('0x3e')]=_0x52e9a7[_0x97c5('0x3e')][_0x97c5('0x40')]?_0x52e9a7['attributes']:_0xbd4ef3[_0x97c5('0x3a')];_0x52e9a7[_0x97c5('0x23')]=qs[_0x97c5('0x23')](_0x483c08['query']['limit']);_0x52e9a7[_0x97c5('0x25')]=qs[_0x97c5('0x25')](_0x483c08[_0x97c5('0x3c')][_0x97c5('0x25')]);_0x52e9a7['order']=qs['sort'](_0x483c08[_0x97c5('0x3c')][_0x97c5('0x43')]);_0x52e9a7[_0x97c5('0x44')]=qs[_0x97c5('0x3d')](_[_0x97c5('0x45')](_0x483c08['query'],_0xbd4ef3[_0x97c5('0x3d')]));_0x52e9a7=_[_0x97c5('0x47')]({},_0x52e9a7,_0x483c08[_0x97c5('0x49')]);return _0x5ed112['get'+_[_0x97c5('0x60')](_0x483c08[_0x97c5('0x3c')][_0x97c5('0x5c')][_0x97c5('0x61')]())+_0x97c5('0x63')](_0x52e9a7);})[_0x97c5('0x2b')](respondWithResult(_0x429362,null))['catch'](handleError(_0x429362,null));};exports[_0x97c5('0x64')]=function(_0x6d7869,_0x511f50,_0x2dec7a){return db['Team']['findOne']({'where':{'id':_0x6d7869[_0x97c5('0x4e')]['id']}})['then'](function(_0x31f673){if(_0x31f673){if(!_0x6d7869[_0x97c5('0x52')][_0x97c5('0x5c')]||!utils[_0x97c5('0x65')](_0x6d7869['body'][_0x97c5('0x5c')])){throw new db[(_0x97c5('0x5d'))][(_0x97c5('0x5e'))](_0x97c5('0x5f'));}return _0x31f673[_0x97c5('0x66')+_[_0x97c5('0x60')](_0x6d7869[_0x97c5('0x52')]['channel']['toLowerCase']())+_0x97c5('0x63')](_0x6d7869['body'][_0x97c5('0x67')]);}return null;})[_0x97c5('0x2b')](handleEntityNotFound(_0x511f50,null))[_0x97c5('0x2b')](respondWithStatusCode(_0x511f50,null))[_0x97c5('0x4c')](handleError(_0x511f50,null));};exports[_0x97c5('0x68')]=function(_0x48b508,_0x3ed1a0,_0x64424b){return db[_0x97c5('0x35')][_0x97c5('0x69')]({'where':{'id':_0x48b508['params']['id']}})[_0x97c5('0x2b')](function(_0x59c226){if(_0x59c226){if(!_0x48b508['query']['channel']||!utils['isValidChannel'](_0x48b508[_0x97c5('0x3c')]['channel'])){throw new db[(_0x97c5('0x5d'))][(_0x97c5('0x5e'))](_0x97c5('0x5f'));}return _0x59c226[_0x97c5('0x6a')+_[_0x97c5('0x60')](_0x48b508[_0x97c5('0x3c')][_0x97c5('0x5c')][_0x97c5('0x61')]())+_0x97c5('0x63')](_0x48b508[_0x97c5('0x3c')]['ids']);}return null;})[_0x97c5('0x2b')](handleEntityNotFound(_0x3ed1a0,null))[_0x97c5('0x2b')](respondWithStatusCode(_0x3ed1a0,null))['catch'](handleError(_0x3ed1a0,null));};exports[_0x97c5('0x6b')]=function(_0x20590c,_0x111a3e){return db['Team'][_0x97c5('0x50')]({'where':{'id':_0x20590c['params']['id']}})[_0x97c5('0x2b')](handleEntityNotFound(_0x111a3e,null))[_0x97c5('0x2b')](function(_0x19daf9){if(_0x19daf9){var _0x545d04=[_0x97c5('0x6c'),_0x97c5('0x6d'),_0x97c5('0x6e'),_0x97c5('0x6f'),_0x97c5('0x70'),_0x97c5('0x71'),'Whatsapp'];return db[_0x97c5('0x72')][_0x97c5('0x73')](function(_0x4fa417){var _0x25cbb4=_[_0x97c5('0x34')](_0x545d04,function(_0x33e91a){var _0x3bac92={'attributes':['id',_0x97c5('0x32')]};if(_0x33e91a==='Voice'){_0x3bac92[_0x97c5('0x74')]={'attributes':[_0x97c5('0x75')]};}return _0x19daf9[_0x97c5('0x2c')+_0x33e91a+_0x97c5('0x63')](_0x3bac92)[_0x97c5('0x2b')](function(_0x4f5585){var _0x151651=_['map'](_0x4f5585,function(_0x44d757){var _0x399f04=_[_0x97c5('0x34')](_0x20590c[_0x97c5('0x52')][_0x97c5('0x67')],function(_0x1ea649){var _0x5aa4ad={'where':{'UserId':_0x1ea649,[_0x33e91a+_0x97c5('0x76')]:_0x44d757['id']},'transaction':_0x4fa417};if(_0x33e91a==='Voice'){_0x5aa4ad[_0x97c5('0x1a')]={'penalty':_0x44d757['TeamVoiceQueue'][_0x97c5('0x75')]};}return db[_0x97c5('0x77')+_0x33e91a+_0x97c5('0x62')][_0x97c5('0x78')](_0x5aa4ad)[_0x97c5('0x2b')](function(){socket[_0x97c5('0x79')](_0x97c5('0x53')+_0x33e91a+_0x97c5('0x7a'),{'UserId':_0x1ea649,[_0x33e91a+_0x97c5('0x76')]:_0x44d757['id']});if(_0x33e91a!==_0x97c5('0x6c'))return;return db[_0x97c5('0x77')][_0x97c5('0x7b')]({'where':{'id':_0x20590c[_0x97c5('0x52')][_0x97c5('0x67')],'online':0x1},'attributes':['id','name',_0x97c5('0x7c'),_0x97c5('0x7d'),_0x97c5('0x7e')],'raw':!![]})[_0x97c5('0x2b')](function(_0x394d87){var _0x1ee1c1=_[_0x97c5('0x34')](_0x394d87,function(_0x3e1b1c){return db[_0x97c5('0x7f')][_0x97c5('0x80')]({'membername':_0x3e1b1c[_0x97c5('0x32')],'UserId':_0x3e1b1c['id'],'queue_name':_0x44d757[_0x97c5('0x32')],'VoiceQueueId':_0x44d757['id'],'interface':_[_0x97c5('0x81')](_0x3e1b1c[_0x97c5('0x7e')])?util[_0x97c5('0x82')](_0x97c5('0x83'),_0x3e1b1c[_0x97c5('0x32')]):_0x3e1b1c[_0x97c5('0x7e')],'paused':_0x3e1b1c[_0x97c5('0x7d')]||![],'penalty':_0x44d757[_0x97c5('0x84')][_0x97c5('0x75')]},{'transaction':_0x4fa417});});return Promise[_0x97c5('0x85')](_0x1ee1c1);});});});return Promise[_0x97c5('0x85')](_0x399f04);});return Promise['all'](_0x151651);});});return Promise[_0x97c5('0x85')](_0x25cbb4)[_0x97c5('0x2b')](function(){return _0x19daf9['addAgents'](_0x20590c[_0x97c5('0x52')]['ids'],{'transaction':_0x4fa417})[_0x97c5('0x86')](function(_0x4724b2){return _0x4724b2;});});});}})[_0x97c5('0x2b')](respondWithResult(_0x111a3e,null))['catch'](handleError(_0x111a3e,null));};exports[_0x97c5('0x87')]=function(_0x2b6b59,_0x5c55ef){return db['Team']['find']({'where':{'id':_0x2b6b59['params']['id']}})['then'](handleEntityNotFound(_0x5c55ef,null))['then'](function(_0x368ed2){if(_0x368ed2){var _0x322ec9=[_0x97c5('0x6c'),_0x97c5('0x6d'),_0x97c5('0x6e'),_0x97c5('0x6f'),_0x97c5('0x70'),_0x97c5('0x71'),_0x97c5('0x88')];return db['sequelize'][_0x97c5('0x73')](function(_0x8e2cc){var _0x1ea915=_[_0x97c5('0x34')](_0x322ec9,function(_0x25929e){var _0x34eb60={'attributes':['id',_0x97c5('0x32')]};return _0x368ed2['get'+_0x25929e+_0x97c5('0x63')](_0x34eb60)[_0x97c5('0x2b')](function(_0xa38f73){var _0x5be314=_['map'](_0xa38f73,function(_0x2e8764){return _0x2e8764[_0x97c5('0x87')](_0x2b6b59['query'][_0x97c5('0x67')],{'transaction':_0x8e2cc})['then'](function(){var _0x2b5981=JSON[_0x97c5('0x89')]('['+_0x2b6b59[_0x97c5('0x3c')][_0x97c5('0x67')]+']');var _0x2966c1=_[_0x97c5('0x34')](_0x2b5981,function(_0x4ae17a){socket[_0x97c5('0x79')](_0x97c5('0x53')+_0x25929e+_0x97c5('0x8a'),{'UserId':Number(_0x4ae17a),[_0x25929e+_0x97c5('0x76')]:_0x2e8764['id']});if(_0x25929e!=='Voice')return;return db['UserVoiceQueueRt'][_0x97c5('0x2f')]({'where':{'VoiceQueueId':_0x2e8764['id'],'UserId':_0x4ae17a},'transaction':_0x8e2cc});});return Promise[_0x97c5('0x85')](_0x2966c1);});});return Promise[_0x97c5('0x85')](_0x5be314);});});return Promise['all'](_0x1ea915)[_0x97c5('0x2b')](function(){return _0x368ed2['removeAgents'](_0x2b6b59[_0x97c5('0x3c')]['ids'],{'transaction':_0x8e2cc});});});}})[_0x97c5('0x2b')](respondWithStatusCode(_0x5c55ef,null))[_0x97c5('0x4c')](handleError(_0x5c55ef,null));};exports[_0x97c5('0x8b')]=function(_0x3e6127,_0x5100e8,_0x4c2274){var _0x52c97b={};var _0x2b0eef={};var _0xbb8435;var _0x1f0236;return db[_0x97c5('0x35')][_0x97c5('0x69')]({'where':{'id':_0x3e6127[_0x97c5('0x4e')]['id']}})[_0x97c5('0x2b')](handleEntityNotFound(_0x5100e8,null))['then'](function(_0x5958fd){if(_0x5958fd){_0xbb8435=_0x5958fd;_0x2b0eef['model']=_[_0x97c5('0x3b')](db[_0x97c5('0x77')][_0x97c5('0x36')]);_0x2b0eef[_0x97c5('0x3c')]=_['keys'](_0x3e6127[_0x97c5('0x3c')]);_0x2b0eef[_0x97c5('0x3d')]=_[_0x97c5('0x4f')](_0x2b0eef[_0x97c5('0x3a')],_0x2b0eef['query']);_0x52c97b[_0x97c5('0x3e')]=_['intersection'](_0x2b0eef[_0x97c5('0x3a')],qs[_0x97c5('0x3f')](_0x3e6127['query'][_0x97c5('0x3f')]));_0x52c97b[_0x97c5('0x3e')]=_0x52c97b[_0x97c5('0x3e')][_0x97c5('0x40')]?_0x52c97b[_0x97c5('0x3e')]:_0x2b0eef[_0x97c5('0x3a')];_0x52c97b['order']=qs[_0x97c5('0x43')](_0x3e6127[_0x97c5('0x3c')]['sort']);_0x52c97b['where']=qs[_0x97c5('0x3d')](_[_0x97c5('0x45')](_0x3e6127[_0x97c5('0x3c')],_0x2b0eef['filters']));if(_0x3e6127[_0x97c5('0x3c')][_0x97c5('0x46')]){_0x52c97b[_0x97c5('0x44')]=_[_0x97c5('0x47')](_0x52c97b[_0x97c5('0x44')],{'$or':_[_0x97c5('0x34')](_0x52c97b[_0x97c5('0x3e')],function(_0x46f58e){var _0x56c111={};_0x56c111[_0x46f58e]={'$like':'%'+_0x3e6127[_0x97c5('0x3c')][_0x97c5('0x46')]+'%'};return _0x56c111;})});}_0x52c97b=_[_0x97c5('0x47')]({},_0x52c97b,_0x3e6127[_0x97c5('0x49')]);return _0xbb8435[_0x97c5('0x8b')](_0x52c97b);}})[_0x97c5('0x2b')](function(_0x36586d){if(_0x36586d){_0x1f0236=_0x36586d['length'];if(!_0x3e6127[_0x97c5('0x3c')]['hasOwnProperty']('nolimit')){_0x52c97b['limit']=qs['limit'](_0x3e6127[_0x97c5('0x3c')]['limit']);_0x52c97b[_0x97c5('0x25')]=qs['offset'](_0x3e6127[_0x97c5('0x3c')][_0x97c5('0x25')]);}return _0xbb8435[_0x97c5('0x8b')](_0x52c97b);}})[_0x97c5('0x2b')](function(_0x3b7260){if(_0x3b7260){return _0x3b7260?{'count':_0x1f0236,'rows':_0x3b7260}:null;}})[_0x97c5('0x2b')](respondWithResult(_0x5100e8,null))[_0x97c5('0x4c')](handleError(_0x5100e8,null));};
\ No newline at end of file
+var _0x6cf5=['filter','merge','map','VIRTUAL','options','rows','catch','show','params','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','getQueues','findOne','isValidChannel','channel','Sequelize','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','add','ids','removeQueues','remove','addAgents','Voice','Chat','Fax','Openchannel','Whatsapp','transaction','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','findAll','online','interface','UserVoiceQueueRt','upsert','isNil','voicePause','all','spread','Sms','sequelize','parse','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','Teams','UserProfileResource','error','stack','name','send','index','Team','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x6cf5,0x1cf));var _0x56cf=function(_0x703dd4,_0x45647e){_0x703dd4=_0x703dd4-0x0;var _0x1f6ead=_0x6cf5[_0x703dd4];return _0x1f6ead;};'use strict';var emlformat=require(_0x56cf('0x0'));var rimraf=require(_0x56cf('0x1'));var zipdir=require(_0x56cf('0x2'));var jsonpatch=require(_0x56cf('0x3'));var rp=require('request-promise');var moment=require(_0x56cf('0x4'));var BPromise=require(_0x56cf('0x5'));var Mustache=require(_0x56cf('0x6'));var util=require(_0x56cf('0x7'));var path=require('path');var sox=require(_0x56cf('0x8'));var csv=require('to-csv');var ejs=require(_0x56cf('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x56cf('0xa'));var squel=require(_0x56cf('0xb'));var crypto=require('crypto');var jsforce=require(_0x56cf('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x56cf('0xd'));var authService=require(_0x56cf('0xe'));var qs=require(_0x56cf('0xf'));var as=require(_0x56cf('0x10'));var hardwareService=require(_0x56cf('0x11'));var logger=require(_0x56cf('0x12'))('api');var utils=require(_0x56cf('0x13'));var config=require(_0x56cf('0x14'));var licenseUtil=require(_0x56cf('0x15'));var db=require(_0x56cf('0x16'))['db'];config[_0x56cf('0x17')]=_[_0x56cf('0x18')](config[_0x56cf('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x56cf('0x19'))(new Redis(config[_0x56cf('0x17')]));require(_0x56cf('0x1a'))[_0x56cf('0x1b')](socket);function respondWithStatusCode(_0xf3ecfc,_0x695b1){_0x695b1=_0x695b1||0xcc;return function(_0x4f3a6d){if(_0x4f3a6d){return _0xf3ecfc[_0x56cf('0x1c')](_0x695b1);}return _0xf3ecfc[_0x56cf('0x1d')](_0x695b1)[_0x56cf('0x1e')]();};}function respondWithResult(_0x2ad2cb,_0x17d979){_0x17d979=_0x17d979||0xc8;return function(_0x519e1b){if(_0x519e1b){return _0x2ad2cb[_0x56cf('0x1d')](_0x17d979)[_0x56cf('0x1f')](_0x519e1b);}};}function respondWithFilteredResult(_0x123d02,_0x340479){return function(_0x2e0578){if(_0x2e0578){var _0x3da10f=typeof _0x340479[_0x56cf('0x20')]===_0x56cf('0x21')&&typeof _0x340479[_0x56cf('0x22')]==='undefined';var _0x45487f=_0x2e0578[_0x56cf('0x23')];var _0x44b16a=_0x3da10f?0x0:_0x340479[_0x56cf('0x20')];var _0x2b676f=_0x3da10f?_0x2e0578[_0x56cf('0x23')]:_0x340479[_0x56cf('0x20')]+_0x340479[_0x56cf('0x22')];var _0x41a9e1;if(_0x2b676f>=_0x45487f){_0x2b676f=_0x45487f;_0x41a9e1=0xc8;}else{_0x41a9e1=0xce;}_0x123d02[_0x56cf('0x1d')](_0x41a9e1);return _0x123d02[_0x56cf('0x24')](_0x56cf('0x25'),_0x44b16a+'-'+_0x2b676f+'/'+_0x45487f)[_0x56cf('0x1f')](_0x2e0578);}return null;};}function patchUpdates(_0x2e6ea7){return function(_0x277af9){try{jsonpatch[_0x56cf('0x26')](_0x277af9,_0x2e6ea7,!![]);}catch(_0x250e9f){return BPromise[_0x56cf('0x27')](_0x250e9f);}return _0x277af9[_0x56cf('0x28')]();};}function saveUpdates(_0xe2f856,_0x40f85e){return function(_0x2721bb){if(_0x2721bb){return _0x2721bb['update'](_0xe2f856)[_0x56cf('0x29')](function(_0x3f3a3b){return _0x3f3a3b;});}return null;};}function removeEntity(_0x571bd3,_0x4ee65a){return function(_0x3ca1b3){if(_0x3ca1b3){return _0x3ca1b3['destroy']()[_0x56cf('0x29')](function(){var _0x608c4d=_0x3ca1b3[_0x56cf('0x2a')]({'plain':!![]});var _0x712876=_0x56cf('0x2b');return db[_0x56cf('0x2c')]['destroy']({'where':{'type':_0x712876,'resourceId':_0x608c4d['id']}})['then'](function(){return _0x3ca1b3;});})[_0x56cf('0x29')](function(){_0x571bd3[_0x56cf('0x1d')](0xcc)[_0x56cf('0x1e')]();});}};}function handleEntityNotFound(_0x273811,_0x321f1e){return function(_0x96def3){if(!_0x96def3){_0x273811[_0x56cf('0x1c')](0x194);}return _0x96def3;};}function handleError(_0x266aff,_0x1fd3c8){_0x1fd3c8=_0x1fd3c8||0x1f4;return function(_0x48dc4d){logger[_0x56cf('0x2d')](_0x48dc4d[_0x56cf('0x2e')]);if(_0x48dc4d[_0x56cf('0x2f')]){delete _0x48dc4d[_0x56cf('0x2f')];}_0x266aff[_0x56cf('0x1d')](_0x1fd3c8)[_0x56cf('0x30')](_0x48dc4d);};}exports[_0x56cf('0x31')]=function(_0x583bca,_0x372683){var _0xabc083={},_0x1998c3={},_0x43d702={'count':0x0,'rows':[]};var _0xab4817=_['map'](db[_0x56cf('0x32')][_0x56cf('0x33')],function(_0x270e7a){return{'name':_0x270e7a[_0x56cf('0x34')],'type':_0x270e7a[_0x56cf('0x35')][_0x56cf('0x36')]};});_0x1998c3[_0x56cf('0x37')]=_['map'](_0xab4817,_0x56cf('0x2f'));_0x1998c3[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x583bca[_0x56cf('0x38')]);_0x1998c3['filters']=_[_0x56cf('0x3a')](_0x1998c3[_0x56cf('0x37')],_0x1998c3[_0x56cf('0x38')]);_0xabc083[_0x56cf('0x3b')]=_['intersection'](_0x1998c3[_0x56cf('0x37')],qs[_0x56cf('0x3c')](_0x583bca['query'][_0x56cf('0x3c')]));_0xabc083[_0x56cf('0x3b')]=_0xabc083[_0x56cf('0x3b')][_0x56cf('0x3d')]?_0xabc083[_0x56cf('0x3b')]:_0x1998c3[_0x56cf('0x37')];if(!_0x583bca[_0x56cf('0x38')][_0x56cf('0x3e')](_0x56cf('0x3f'))){_0xabc083[_0x56cf('0x22')]=qs[_0x56cf('0x22')](_0x583bca[_0x56cf('0x38')][_0x56cf('0x22')]);_0xabc083[_0x56cf('0x20')]=qs[_0x56cf('0x20')](_0x583bca[_0x56cf('0x38')][_0x56cf('0x20')]);}_0xabc083[_0x56cf('0x40')]=qs[_0x56cf('0x41')](_0x583bca[_0x56cf('0x38')][_0x56cf('0x41')]);_0xabc083[_0x56cf('0x42')]=qs[_0x56cf('0x43')](_[_0x56cf('0x44')](_0x583bca['query'],_0x1998c3[_0x56cf('0x43')]),_0xab4817);if(_0x583bca[_0x56cf('0x38')][_0x56cf('0x45')]){_0xabc083[_0x56cf('0x42')]=_[_0x56cf('0x46')](_0xabc083[_0x56cf('0x42')],{'$or':_[_0x56cf('0x47')](_0xab4817,function(_0x1565b7){if(_0x1565b7[_0x56cf('0x35')]!==_0x56cf('0x48')){var _0x2b41e4={};_0x2b41e4[_0x1565b7[_0x56cf('0x2f')]]={'$like':'%'+_0x583bca['query'][_0x56cf('0x45')]+'%'};return _0x2b41e4;}})});}_0xabc083=_['merge']({},_0xabc083,_0x583bca[_0x56cf('0x49')]);var _0x315558={'where':_0xabc083[_0x56cf('0x42')]};return db[_0x56cf('0x32')][_0x56cf('0x23')](_0x315558)[_0x56cf('0x29')](function(_0x14e11f){_0x43d702[_0x56cf('0x23')]=_0x14e11f;if(_0x583bca[_0x56cf('0x38')]['includeAll']){_0xabc083['include']=[{'all':!![]}];}return db[_0x56cf('0x32')]['findAll'](_0xabc083);})[_0x56cf('0x29')](function(_0x14b6dd){_0x43d702[_0x56cf('0x4a')]=_0x14b6dd;return _0x43d702;})[_0x56cf('0x29')](respondWithFilteredResult(_0x372683,_0xabc083))[_0x56cf('0x4b')](handleError(_0x372683,null));};exports[_0x56cf('0x4c')]=function(_0x4cccbe,_0x392c80){var _0x2a9b8b={'raw':![],'where':{'id':_0x4cccbe[_0x56cf('0x4d')]['id']}},_0x1c5579={};_0x1c5579[_0x56cf('0x37')]=_[_0x56cf('0x39')](db[_0x56cf('0x32')][_0x56cf('0x33')]);_0x1c5579[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x4cccbe[_0x56cf('0x38')]);_0x1c5579[_0x56cf('0x43')]=_[_0x56cf('0x3a')](_0x1c5579[_0x56cf('0x37')],_0x1c5579[_0x56cf('0x38')]);_0x2a9b8b[_0x56cf('0x3b')]=_['intersection'](_0x1c5579[_0x56cf('0x37')],qs[_0x56cf('0x3c')](_0x4cccbe[_0x56cf('0x38')][_0x56cf('0x3c')]));_0x2a9b8b['attributes']=_0x2a9b8b[_0x56cf('0x3b')][_0x56cf('0x3d')]?_0x2a9b8b[_0x56cf('0x3b')]:_0x1c5579[_0x56cf('0x37')];if(_0x4cccbe['query'][_0x56cf('0x4e')]){_0x2a9b8b['include']=[{'all':!![]}];}_0x2a9b8b=_[_0x56cf('0x46')]({},_0x2a9b8b,_0x4cccbe[_0x56cf('0x49')]);return db[_0x56cf('0x32')]['find'](_0x2a9b8b)[_0x56cf('0x29')](handleEntityNotFound(_0x392c80,null))[_0x56cf('0x29')](respondWithResult(_0x392c80,null))[_0x56cf('0x4b')](handleError(_0x392c80,null));};exports[_0x56cf('0x4f')]=function(_0x116900,_0x3522be){return db[_0x56cf('0x32')]['create'](_0x116900['body'],{})[_0x56cf('0x29')](function(_0xc7e48c){var _0x40335e=_0x116900[_0x56cf('0x50')][_0x56cf('0x2a')]({'plain':!![]});if(!_0x40335e)throw new Error(_0x56cf('0x51'));if(_0x40335e['role']==='user'){var _0x577b8d=_0xc7e48c['get']({'plain':!![]});var _0x2e93c4=_0x56cf('0x2b');return db['UserProfileSection'][_0x56cf('0x52')]({'where':{'name':_0x2e93c4,'userProfileId':_0x40335e[_0x56cf('0x53')]},'raw':!![]})['then'](function(_0x5eff2a){if(_0x5eff2a&&_0x5eff2a[_0x56cf('0x54')]===0x0){return db[_0x56cf('0x2c')]['create']({'name':_0x577b8d[_0x56cf('0x2f')],'resourceId':_0x577b8d['id'],'type':_0x5eff2a[_0x56cf('0x2f')],'sectionId':_0x5eff2a['id']},{})[_0x56cf('0x29')](function(){return _0xc7e48c;});}else{return _0xc7e48c;}})['catch'](function(_0x56fad3){logger[_0x56cf('0x2d')](_0x56cf('0x55'),_0x56fad3);throw _0x56fad3;});}return _0xc7e48c;})[_0x56cf('0x29')](respondWithResult(_0x3522be,0xc9))['catch'](handleError(_0x3522be,null));};exports['update']=function(_0x2072ef,_0x44969c){if(_0x2072ef[_0x56cf('0x56')]['id']){delete _0x2072ef[_0x56cf('0x56')]['id'];}return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x2072ef[_0x56cf('0x4d')]['id']}})['then'](handleEntityNotFound(_0x44969c,null))['then'](saveUpdates(_0x2072ef['body'],null))[_0x56cf('0x29')](respondWithResult(_0x44969c,null))['catch'](handleError(_0x44969c,null));};exports[_0x56cf('0x57')]=function(_0x293f75,_0x5cded0){return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x293f75[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x5cded0,null))[_0x56cf('0x29')](removeEntity(_0x5cded0,null))[_0x56cf('0x4b')](handleError(_0x5cded0,null));};exports[_0x56cf('0x58')]=function(_0x2d4553,_0x13f8bb,_0x318418){return db[_0x56cf('0x32')][_0x56cf('0x59')]({'where':{'id':_0x2d4553[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x13f8bb,null))['then'](function(_0xd42a88){if(!_0x2d4553[_0x56cf('0x38')]['channel']||!utils[_0x56cf('0x5a')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x5b')])){throw new db[(_0x56cf('0x5c'))][(_0x56cf('0x5d'))](_0x56cf('0x5e'));}var _0xb06407={};var _0x3decad={};_0x3decad[_0x56cf('0x37')]=_[_0x56cf('0x39')](db[_[_0x56cf('0x5f')](_0x2d4553[_0x56cf('0x38')]['channel'][_0x56cf('0x60')]())+_0x56cf('0x61')][_0x56cf('0x33')]);_0x3decad[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x2d4553['query']);_0x3decad[_0x56cf('0x43')]=_[_0x56cf('0x3a')](_0x3decad[_0x56cf('0x37')],_0x3decad[_0x56cf('0x38')]);_0xb06407['attributes']=_[_0x56cf('0x3a')](_0x3decad['model'],qs[_0x56cf('0x3c')](_0x2d4553[_0x56cf('0x38')]['fields']));_0xb06407['attributes']=_0xb06407[_0x56cf('0x3b')][_0x56cf('0x3d')]?_0xb06407[_0x56cf('0x3b')]:_0x3decad[_0x56cf('0x37')];_0xb06407[_0x56cf('0x22')]=qs[_0x56cf('0x22')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x22')]);_0xb06407['offset']=qs[_0x56cf('0x20')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x20')]);_0xb06407[_0x56cf('0x40')]=qs[_0x56cf('0x41')](_0x2d4553[_0x56cf('0x38')]['sort']);_0xb06407[_0x56cf('0x42')]=qs[_0x56cf('0x43')](_['pick'](_0x2d4553[_0x56cf('0x38')],_0x3decad[_0x56cf('0x43')]));_0xb06407=_[_0x56cf('0x46')]({},_0xb06407,_0x2d4553[_0x56cf('0x49')]);return _0xd42a88[_0x56cf('0x2a')+_[_0x56cf('0x5f')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x5b')][_0x56cf('0x60')]())+_0x56cf('0x62')](_0xb06407);})[_0x56cf('0x29')](respondWithResult(_0x13f8bb,null))[_0x56cf('0x4b')](handleError(_0x13f8bb,null));};exports[_0x56cf('0x63')]=function(_0x2908d8,_0x55d9ee,_0x2adddc){return db[_0x56cf('0x32')][_0x56cf('0x59')]({'where':{'id':_0x2908d8[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](function(_0x239585){if(_0x239585){if(!_0x2908d8[_0x56cf('0x56')][_0x56cf('0x5b')]||!utils[_0x56cf('0x5a')](_0x2908d8[_0x56cf('0x56')][_0x56cf('0x5b')])){throw new db[(_0x56cf('0x5c'))][(_0x56cf('0x5d'))]('Unknown\x20channel');}return _0x239585[_0x56cf('0x64')+_['capitalize'](_0x2908d8['body'][_0x56cf('0x5b')]['toLowerCase']())+_0x56cf('0x62')](_0x2908d8[_0x56cf('0x56')][_0x56cf('0x65')]);}return null;})[_0x56cf('0x29')](handleEntityNotFound(_0x55d9ee,null))[_0x56cf('0x29')](respondWithStatusCode(_0x55d9ee,null))['catch'](handleError(_0x55d9ee,null));};exports[_0x56cf('0x66')]=function(_0x29e0e5,_0x8a5184,_0x520953){return db[_0x56cf('0x32')][_0x56cf('0x59')]({'where':{'id':_0x29e0e5['params']['id']}})['then'](function(_0x3f17a4){if(_0x3f17a4){if(!_0x29e0e5['query']['channel']||!utils[_0x56cf('0x5a')](_0x29e0e5[_0x56cf('0x38')]['channel'])){throw new db[(_0x56cf('0x5c'))][(_0x56cf('0x5d'))]('Unknown\x20channel');}return _0x3f17a4[_0x56cf('0x67')+_[_0x56cf('0x5f')](_0x29e0e5[_0x56cf('0x38')][_0x56cf('0x5b')][_0x56cf('0x60')]())+'Queues'](_0x29e0e5[_0x56cf('0x38')][_0x56cf('0x65')]);}return null;})['then'](handleEntityNotFound(_0x8a5184,null))[_0x56cf('0x29')](respondWithStatusCode(_0x8a5184,null))['catch'](handleError(_0x8a5184,null));};exports[_0x56cf('0x68')]=function(_0x270c3b,_0x56cadd){return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x270c3b['params']['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x56cadd,null))[_0x56cf('0x29')](function(_0x17537c){if(_0x17537c){var _0x13c85e=[_0x56cf('0x69'),_0x56cf('0x6a'),'Mail','Sms',_0x56cf('0x6b'),_0x56cf('0x6c'),_0x56cf('0x6d')];return db['sequelize'][_0x56cf('0x6e')](function(_0x2ae13b){var _0x51cbf3=_[_0x56cf('0x47')](_0x13c85e,function(_0x19e377){var _0x16ca74={'attributes':['id','name']};if(_0x19e377===_0x56cf('0x69')){_0x16ca74[_0x56cf('0x6f')]={'attributes':[_0x56cf('0x70')]};}return _0x17537c[_0x56cf('0x2a')+_0x19e377+_0x56cf('0x62')](_0x16ca74)['then'](function(_0xbf7a8){var _0x38f3dd=_[_0x56cf('0x47')](_0xbf7a8,function(_0x194f36){var _0x950fee=_[_0x56cf('0x47')](_0x270c3b[_0x56cf('0x56')]['ids'],function(_0x52f086){var _0x1764d8={'where':{'UserId':_0x52f086,[_0x19e377+_0x56cf('0x71')]:_0x194f36['id']},'transaction':_0x2ae13b};if(_0x19e377===_0x56cf('0x69')){_0x1764d8[_0x56cf('0x18')]={'penalty':_0x194f36[_0x56cf('0x72')]['penalty']};}return db[_0x56cf('0x73')+_0x19e377+'Queue'][_0x56cf('0x74')](_0x1764d8)['then'](function(){socket[_0x56cf('0x75')](_0x56cf('0x50')+_0x19e377+_0x56cf('0x76'),{'UserId':_0x52f086,[_0x19e377+_0x56cf('0x71')]:_0x194f36['id']});if(_0x19e377!==_0x56cf('0x69'))return;return db[_0x56cf('0x73')][_0x56cf('0x77')]({'where':{'id':_0x270c3b[_0x56cf('0x56')]['ids'],'online':0x1},'attributes':['id',_0x56cf('0x2f'),_0x56cf('0x78'),'voicePause',_0x56cf('0x79')],'raw':!![]})['then'](function(_0x3ab731){var _0x348c9f=_[_0x56cf('0x47')](_0x3ab731,function(_0x11f481){return db[_0x56cf('0x7a')][_0x56cf('0x7b')]({'membername':_0x11f481['name'],'UserId':_0x11f481['id'],'queue_name':_0x194f36[_0x56cf('0x2f')],'VoiceQueueId':_0x194f36['id'],'interface':_[_0x56cf('0x7c')](_0x11f481[_0x56cf('0x79')])?util['format']('SIP/%s',_0x11f481[_0x56cf('0x2f')]):_0x11f481[_0x56cf('0x79')],'paused':_0x11f481[_0x56cf('0x7d')]||![],'penalty':_0x194f36['TeamVoiceQueue'][_0x56cf('0x70')]},{'transaction':_0x2ae13b});});return Promise[_0x56cf('0x7e')](_0x348c9f);});});});return Promise[_0x56cf('0x7e')](_0x950fee);});return Promise['all'](_0x38f3dd);});});return Promise[_0x56cf('0x7e')](_0x51cbf3)[_0x56cf('0x29')](function(){return _0x17537c[_0x56cf('0x68')](_0x270c3b[_0x56cf('0x56')][_0x56cf('0x65')],{'transaction':_0x2ae13b})[_0x56cf('0x7f')](function(_0x12c4d9){return _0x12c4d9;});});});}})[_0x56cf('0x29')](respondWithResult(_0x56cadd,null))['catch'](handleError(_0x56cadd,null));};exports['removeAgents']=function(_0x20e726,_0x58db8f){return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x20e726[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x58db8f,null))[_0x56cf('0x29')](function(_0x137331){if(_0x137331){var _0x2221db=[_0x56cf('0x69'),_0x56cf('0x6a'),'Mail',_0x56cf('0x80'),_0x56cf('0x6b'),'Openchannel','Whatsapp'];return db[_0x56cf('0x81')][_0x56cf('0x6e')](function(_0x153c9c){var _0x3c6bc5=_['map'](_0x2221db,function(_0x3d17eb){var _0xa7783b={'attributes':['id',_0x56cf('0x2f')]};return _0x137331['get'+_0x3d17eb+_0x56cf('0x62')](_0xa7783b)['then'](function(_0x31ad4b){var _0xf07ad9=_[_0x56cf('0x47')](_0x31ad4b,function(_0x190e7f){return _0x190e7f['removeAgents'](_0x20e726[_0x56cf('0x38')][_0x56cf('0x65')],{'transaction':_0x153c9c})[_0x56cf('0x29')](function(){var _0x4ce6c9=JSON[_0x56cf('0x82')]('['+_0x20e726[_0x56cf('0x38')]['ids']+']');var _0x1a8e4d=_[_0x56cf('0x47')](_0x4ce6c9,function(_0x5f56f7){socket[_0x56cf('0x75')]('user'+_0x3d17eb+'Queue:remove',{'UserId':Number(_0x5f56f7),[_0x3d17eb+_0x56cf('0x71')]:_0x190e7f['id']});if(_0x3d17eb!==_0x56cf('0x69'))return;return db[_0x56cf('0x7a')][_0x56cf('0x57')]({'where':{'VoiceQueueId':_0x190e7f['id'],'UserId':_0x5f56f7},'transaction':_0x153c9c});});return Promise[_0x56cf('0x7e')](_0x1a8e4d);});});return Promise[_0x56cf('0x7e')](_0xf07ad9);});});return Promise[_0x56cf('0x7e')](_0x3c6bc5)[_0x56cf('0x29')](function(){return _0x137331[_0x56cf('0x83')](_0x20e726[_0x56cf('0x38')][_0x56cf('0x65')],{'transaction':_0x153c9c});});});}})[_0x56cf('0x29')](respondWithStatusCode(_0x58db8f,null))[_0x56cf('0x4b')](handleError(_0x58db8f,null));};exports[_0x56cf('0x84')]=function(_0x54d7ea,_0x4a4649,_0x2b23f7){var _0x4b8223={};var _0x2f8878={};var _0xc3a850;var _0xd5f5bd;return db[_0x56cf('0x32')]['findOne']({'where':{'id':_0x54d7ea[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x4a4649,null))[_0x56cf('0x29')](function(_0x1778cf){if(_0x1778cf){_0xc3a850=_0x1778cf;_0x2f8878[_0x56cf('0x37')]=_['keys'](db[_0x56cf('0x73')][_0x56cf('0x33')]);_0x2f8878[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x54d7ea[_0x56cf('0x38')]);_0x2f8878[_0x56cf('0x43')]=_[_0x56cf('0x3a')](_0x2f8878[_0x56cf('0x37')],_0x2f8878['query']);_0x4b8223[_0x56cf('0x3b')]=_[_0x56cf('0x3a')](_0x2f8878[_0x56cf('0x37')],qs['fields'](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x3c')]));_0x4b8223['attributes']=_0x4b8223[_0x56cf('0x3b')]['length']?_0x4b8223[_0x56cf('0x3b')]:_0x2f8878['model'];_0x4b8223[_0x56cf('0x40')]=qs[_0x56cf('0x41')](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x41')]);_0x4b8223[_0x56cf('0x42')]=qs[_0x56cf('0x43')](_[_0x56cf('0x44')](_0x54d7ea['query'],_0x2f8878['filters']));if(_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x45')]){_0x4b8223[_0x56cf('0x42')]=_['merge'](_0x4b8223['where'],{'$or':_[_0x56cf('0x47')](_0x4b8223['attributes'],function(_0x311b2e){var _0x3ddb06={};_0x3ddb06[_0x311b2e]={'$like':'%'+_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x45')]+'%'};return _0x3ddb06;})});}_0x4b8223=_['merge']({},_0x4b8223,_0x54d7ea[_0x56cf('0x49')]);return _0xc3a850[_0x56cf('0x84')](_0x4b8223);}})[_0x56cf('0x29')](function(_0x43c2d8){if(_0x43c2d8){_0xd5f5bd=_0x43c2d8[_0x56cf('0x3d')];if(!_0x54d7ea['query']['hasOwnProperty'](_0x56cf('0x3f'))){_0x4b8223[_0x56cf('0x22')]=qs[_0x56cf('0x22')](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x22')]);_0x4b8223[_0x56cf('0x20')]=qs[_0x56cf('0x20')](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x20')]);}return _0xc3a850[_0x56cf('0x84')](_0x4b8223);}})[_0x56cf('0x29')](function(_0x4cec21){if(_0x4cec21){return _0x4cec21?{'count':_0xd5f5bd,'rows':_0x4cec21}:null;}})[_0x56cf('0x29')](respondWithResult(_0x4a4649,null))[_0x56cf('0x4b')](handleError(_0x4a4649,null));};
\ No newline at end of file
index edd500f..467767e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaea3=['update','remove','emit','hook','../../mysqldb','setMaxListeners','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaea3,0x146));var _0x3aea=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xaea3[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require('events');var Team=require(_0x3aea('0x0'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents[_0x3aea('0x1')](0x0);var events={'afterCreate':_0x3aea('0x2'),'afterUpdate':_0x3aea('0x3'),'afterDestroy':_0x3aea('0x4')};function emitEvent(_0x9442de){return function(_0x17f909,_0x3f5a44,_0x1a3673){TeamEvents[_0x3aea('0x5')](_0x9442de+':'+_0x17f909['id'],_0x17f909);TeamEvents[_0x3aea('0x5')](_0x9442de,_0x17f909);_0x1a3673(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x3aea('0x6')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0x49bf=['exports','events','../../mysqldb','Team','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x4e5d86,_0x1b998a){var _0x43300e=function(_0x57ea85){while(--_0x57ea85){_0x4e5d86['push'](_0x4e5d86['shift']());}};_0x43300e(++_0x1b998a);}(_0x49bf,0x1a5));var _0xf49b=function(_0xeaf469,_0x22ab6e){_0xeaf469=_0xeaf469-0x0;var _0x52cb68=_0x49bf[_0xeaf469];return _0x52cb68;};'use strict';var EventEmitter=require(_0xf49b('0x0'));var Team=require(_0xf49b('0x1'))['db'][_0xf49b('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xf49b('0x3')](0x0);var events={'afterCreate':_0xf49b('0x4'),'afterUpdate':'update','afterDestroy':_0xf49b('0x5')};function emitEvent(_0x171a19){return function(_0x2ee909,_0x4e47cf,_0x372458){TeamEvents['emit'](_0x171a19+':'+_0x2ee909['id'],_0x2ee909);TeamEvents[_0xf49b('0x6')](_0x171a19,_0x2ee909);_0x372458(null);};}for(var e in events){if(events[_0xf49b('0x7')](e)){var event=events[e];Team[_0xf49b('0x8')](e,emitEvent(event));}}module[_0xf49b('0x9')]=TeamEvents;
\ No newline at end of file
index aab1e89..c3c135c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac5f=['util','../../config/logger','api','moment','request-promise','path','rimraf','exports','define'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xac5f,0xf3));var _0xfac5=function(_0x33c97d,_0x4ba623){_0x33c97d=_0x33c97d-0x0;var _0x29b037=_0xac5f[_0x33c97d];return _0x29b037;};'use strict';var _=require('lodash');var util=require(_0xfac5('0x0'));var logger=require(_0xfac5('0x1'))(_0xfac5('0x2'));var moment=require(_0xfac5('0x3'));var BPromise=require('bluebird');var rp=require(_0xfac5('0x4'));var fs=require('fs');var path=require(_0xfac5('0x5'));var rimraf=require(_0xfac5('0x6'));var config=require('../../config/environment');var attributes=require('./team.attributes');module[_0xfac5('0x7')]=function(_0x140396,_0x1d7e38){return _0x140396[_0xfac5('0x8')]('Team',attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe704=['moment','rimraf','../../config/environment','./team.attributes','exports','define','util','../../config/logger','api'];(function(_0x284022,_0x453dae){var _0x5c0889=function(_0x4cc881){while(--_0x4cc881){_0x284022['push'](_0x284022['shift']());}};_0x5c0889(++_0x453dae);}(_0xe704,0x1ec));var _0x4e70=function(_0x34c383,_0x578f94){_0x34c383=_0x34c383-0x0;var _0x40b591=_0xe704[_0x34c383];return _0x40b591;};'use strict';var _=require('lodash');var util=require(_0x4e70('0x0'));var logger=require(_0x4e70('0x1'))(_0x4e70('0x2'));var moment=require(_0x4e70('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4e70('0x4'));var config=require(_0x4e70('0x5'));var attributes=require(_0x4e70('0x6'));module[_0x4e70('0x7')]=function(_0x2066b6,_0x317019){return _0x2066b6[_0x4e70('0x8')]('Team',attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index acb1607..21f938b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca16=['then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','Team,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./team.socket','register','request'];(function(_0x1300ec,_0x3ff267){var _0x2c13c9=function(_0x58d88){while(--_0x58d88){_0x1300ec['push'](_0x1300ec['shift']());}};_0x2c13c9(++_0x3ff267);}(_0xca16,0x1dc));var _0x6ca1=function(_0x241a07,_0x5f117c){_0x241a07=_0x241a07-0x0;var _0x433062=_0xca16[_0x241a07];return _0x433062;};'use strict';var _=require(_0x6ca1('0x0'));var util=require(_0x6ca1('0x1'));var moment=require(_0x6ca1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ca1('0x3'));var db=require(_0x6ca1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6ca1('0x5'))(_0x6ca1('0x6'));var config=require(_0x6ca1('0x7'));var jayson=require(_0x6ca1('0x8'));var client=jayson[_0x6ca1('0x9')][_0x6ca1('0xa')]({'port':0x232a});config[_0x6ca1('0xb')]=_[_0x6ca1('0xc')](config[_0x6ca1('0xb')],{'host':_0x6ca1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6ca1('0xb')]));require(_0x6ca1('0xe'))[_0x6ca1('0xf')](socket);function respondWithRpcPromise(_0x5c2f33,_0x26c388,_0xa84742){return new BPromise(function(_0x31da85,_0x217015){return client[_0x6ca1('0x10')](_0x5c2f33,_0xa84742)[_0x6ca1('0x11')](function(_0x2f3070){logger[_0x6ca1('0x12')]('Team,\x20%s,\x20%s',_0x26c388,_0x6ca1('0x13'));logger[_0x6ca1('0x14')](_0x6ca1('0x15'),_0x26c388,_0x6ca1('0x13'),JSON[_0x6ca1('0x16')](_0x2f3070));if(_0x2f3070[_0x6ca1('0x17')]){if(_0x2f3070['error'][_0x6ca1('0x18')]===0x1f4){logger['error'](_0x6ca1('0x19'),_0x26c388,_0x2f3070[_0x6ca1('0x17')]['message']);return _0x217015(_0x2f3070[_0x6ca1('0x17')]['message']);}logger['error'](_0x6ca1('0x19'),_0x26c388,_0x2f3070['error'][_0x6ca1('0x1a')]);return _0x31da85(_0x2f3070[_0x6ca1('0x17')]['message']);}else{logger[_0x6ca1('0x12')](_0x6ca1('0x19'),_0x26c388,_0x6ca1('0x13'));_0x31da85(_0x2f3070[_0x6ca1('0x1b')][_0x6ca1('0x1a')]);}})[_0x6ca1('0x1c')](function(_0x3b9fe7){logger['error'](_0x6ca1('0x19'),_0x26c388,_0x3b9fe7);_0x217015(_0x3b9fe7);});});}
\ No newline at end of file
+var _0xdca7=['./team.socket','register','request','then','info','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter'];(function(_0x10c51f,_0x11270f){var _0x56a0cd=function(_0x563ac6){while(--_0x563ac6){_0x10c51f['push'](_0x10c51f['shift']());}};_0x56a0cd(++_0x11270f);}(_0xdca7,0xe6));var _0x7dca=function(_0x5aeb62,_0x233d67){_0x5aeb62=_0x5aeb62-0x0;var _0x22ffee=_0xdca7[_0x5aeb62];return _0x22ffee;};'use strict';var _=require(_0x7dca('0x0'));var util=require('util');var moment=require(_0x7dca('0x1'));var BPromise=require(_0x7dca('0x2'));var rs=require(_0x7dca('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7dca('0x4'))['db'];var utils=require(_0x7dca('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x7dca('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x7dca('0x7')]=_['defaults'](config['redis'],{'host':_0x7dca('0x8'),'port':0x18eb});var socket=require(_0x7dca('0x9'))(new Redis(config[_0x7dca('0x7')]));require(_0x7dca('0xa'))[_0x7dca('0xb')](socket);function respondWithRpcPromise(_0x62f3b9,_0x26c1ad,_0x3c6ad7){return new BPromise(function(_0x32aad9,_0x3eeabf){return client[_0x7dca('0xc')](_0x62f3b9,_0x3c6ad7)[_0x7dca('0xd')](function(_0x50eaf6){logger[_0x7dca('0xe')](_0x7dca('0xf'),_0x26c1ad,'request\x20sent');logger[_0x7dca('0x10')](_0x7dca('0x11'),_0x26c1ad,_0x7dca('0x12'),JSON['stringify'](_0x50eaf6));if(_0x50eaf6['error']){if(_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x14')]===0x1f4){logger[_0x7dca('0x13')](_0x7dca('0xf'),_0x26c1ad,_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);return _0x3eeabf(_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);}logger[_0x7dca('0x13')](_0x7dca('0xf'),_0x26c1ad,_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);return _0x32aad9(_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);}else{logger[_0x7dca('0xe')]('Team,\x20%s,\x20%s',_0x26c1ad,_0x7dca('0x12'));_0x32aad9(_0x50eaf6[_0x7dca('0x16')]['message']);}})[_0x7dca('0x17')](function(_0x53a146){logger['error'](_0x7dca('0xf'),_0x26c1ad,_0x53a146);_0x3eeabf(_0x53a146);});});}
\ No newline at end of file
index 46c7cb8..9d94abf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c7=['length','team:','save','remove','update','emit','register'];(function(_0x45f7c9,_0x192a73){var _0x2c6810=function(_0xddb463){while(--_0xddb463){_0x45f7c9['push'](_0x45f7c9['shift']());}};_0x2c6810(++_0x192a73);}(_0x47c7,0x1f3));var _0x747c=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x47c7[_0x1ab180];return _0xfb2c2d;};'use strict';var TeamEvents=require('./team.events');var events=[_0x747c('0x0'),_0x747c('0x1'),_0x747c('0x2')];function createListener(_0x5d8956,_0x552a0f){return function(_0x2cf1a3){_0x552a0f[_0x747c('0x3')](_0x5d8956,_0x2cf1a3);};}function removeListener(_0x627fc5,_0x3f4579){return function(){TeamEvents['removeListener'](_0x627fc5,_0x3f4579);};}exports[_0x747c('0x4')]=function(_0x5c9a0b){for(var _0xf4d0b2=0x0,_0x351f82=events[_0x747c('0x5')];_0xf4d0b2<_0x351f82;_0xf4d0b2++){var _0x2e0e82=events[_0xf4d0b2];var _0x8b3b3b=createListener(_0x747c('0x6')+_0x2e0e82,_0x5c9a0b);TeamEvents['on'](_0x2e0e82,_0x8b3b3b);}};
\ No newline at end of file
+var _0xb455=['removeListener','register','length','team:','./team.events','save','remove','update'];(function(_0x269ff5,_0x3b4514){var _0x16b4b4=function(_0x2c6dd7){while(--_0x2c6dd7){_0x269ff5['push'](_0x269ff5['shift']());}};_0x16b4b4(++_0x3b4514);}(_0xb455,0x104));var _0x5b45=function(_0xf2e578,_0x335453){_0xf2e578=_0xf2e578-0x0;var _0x525828=_0xb455[_0xf2e578];return _0x525828;};'use strict';var TeamEvents=require(_0x5b45('0x0'));var events=[_0x5b45('0x1'),_0x5b45('0x2'),_0x5b45('0x3')];function createListener(_0x3b9f02,_0x547fe6){return function(_0x55d82b){_0x547fe6['emit'](_0x3b9f02,_0x55d82b);};}function removeListener(_0x9009dd,_0x3c7343){return function(){TeamEvents[_0x5b45('0x4')](_0x9009dd,_0x3c7343);};}exports[_0x5b45('0x5')]=function(_0x3321c2){for(var _0x41466c=0x0,_0x414c7d=events[_0x5b45('0x6')];_0x41466c<_0x414c7d;_0x41466c++){var _0x2e3618=events[_0x41466c];var _0xd51a90=createListener(_0x5b45('0x7')+_0x2e3618,_0x3321c2);TeamEvents['on'](_0x2e3618,_0xd51a90);}};
\ No newline at end of file
index f0577e6..135ae44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2bb455,_0x1e0a7c){var _0x1d2cfc=function(_0x217390){while(--_0x217390){_0x2bb455['push'](_0x2bb455['shift']());}};_0x1d2cfc(++_0x1e0a7c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xaf025d,_0x586d7a){_0xaf025d=_0xaf025d-0x0;var _0x1c77cb=_0xcb91[_0xaf025d];return _0x1c77cb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x2e65ee,_0x29dad9){var _0x4c712a=function(_0xca593f){while(--_0xca593f){_0x2e65ee['push'](_0x2e65ee['shift']());}};_0x4c712a(++_0x29dad9);}(_0x9c44,0x178));var _0x49c4=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x9c44[_0x32f7d7];return _0x133d09;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 2119985..e09ccfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63b1=['sequelize','exports','INTEGER'];(function(_0x2ea5ae,_0x3fe75f){var _0x208303=function(_0x39e3a9){while(--_0x39e3a9){_0x2ea5ae['push'](_0x2ea5ae['shift']());}};_0x208303(++_0x3fe75f);}(_0x63b1,0x96));var _0x163b=function(_0x10e1d4,_0x17aed9){_0x10e1d4=_0x10e1d4-0x0;var _0x169a61=_0x63b1[_0x10e1d4];return _0x169a61;};'use strict';var Sequelize=require(_0x163b('0x0'));module[_0x163b('0x1')]={'penalty':{'type':Sequelize[_0x163b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xed24=['INTEGER','sequelize','exports'];(function(_0x4bad68,_0x2a89aa){var _0x572e22=function(_0x1c43cf){while(--_0x1c43cf){_0x4bad68['push'](_0x4bad68['shift']());}};_0x572e22(++_0x2a89aa);}(_0xed24,0xe5));var _0x4ed2=function(_0x3fce2e,_0x28cf73){_0x3fce2e=_0x3fce2e-0x0;var _0x20284f=_0xed24[_0x3fce2e];return _0x20284f;};'use strict';var Sequelize=require(_0x4ed2('0x0'));module[_0x4ed2('0x1')]={'penalty':{'type':Sequelize[_0x4ed2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index eb48e71..ce9c7af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x032e=['exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x3071ab,_0x574a59){var _0x2f458c=function(_0x1eb9c7){while(--_0x1eb9c7){_0x3071ab['push'](_0x3071ab['shift']());}};_0x2f458c(++_0x574a59);}(_0x032e,0x124));var _0xe032=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x032e[_0x1e7b16];return _0x37fadc;};'use strict';var _=require(_0xe032('0x0'));var util=require('util');var logger=require(_0xe032('0x1'))(_0xe032('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe032('0x3'));var fs=require('fs');var path=require(_0xe032('0x4'));var rimraf=require(_0xe032('0x5'));var config=require(_0xe032('0x6'));var attributes=require(_0xe032('0x7'));module[_0xe032('0x8')]=function(_0x2ba8a0,_0x33ad0b){return _0x2ba8a0[_0xe032('0x9')](_0xe032('0xa'),attributes,{'tableName':_0xe032('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6364=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','TeamVoiceQueue'];(function(_0x2d8d69,_0x8e47ff){var _0x39ae22=function(_0xd7935e){while(--_0xd7935e){_0x2d8d69['push'](_0x2d8d69['shift']());}};_0x39ae22(++_0x8e47ff);}(_0x6364,0x8f));var _0x4636=function(_0x5a8422,_0x2b4e95){_0x5a8422=_0x5a8422-0x0;var _0x10aa57=_0x6364[_0x5a8422];return _0x10aa57;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4636('0x0'))(_0x4636('0x1'));var moment=require(_0x4636('0x2'));var BPromise=require(_0x4636('0x3'));var rp=require(_0x4636('0x4'));var fs=require('fs');var path=require(_0x4636('0x5'));var rimraf=require(_0x4636('0x6'));var config=require(_0x4636('0x7'));var attributes=require('./teamVoiceQueue.attributes');module[_0x4636('0x8')]=function(_0x30201f,_0x3e0ed6){return _0x30201f[_0x4636('0x9')](_0x4636('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index debd538..9651c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc85c=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x266bac,_0xe03f9a){var _0x267ee2=function(_0x3e4291){while(--_0x3e4291){_0x266bac['push'](_0x266bac['shift']());}};_0x267ee2(++_0xe03f9a);}(_0xc85c,0xf2));var _0xcc85=function(_0x13d580,_0x53a187){_0x13d580=_0x13d580-0x0;var _0x5e124b=_0xc85c[_0x13d580];return _0x5e124b;};'use strict';var _=require(_0xcc85('0x0'));var util=require(_0xcc85('0x1'));var moment=require('moment');var BPromise=require(_0xcc85('0x2'));var rs=require(_0xcc85('0x3'));var fs=require('fs');var Redis=require(_0xcc85('0x4'));var db=require(_0xcc85('0x5'))['db'];var utils=require(_0xcc85('0x6'));var logger=require(_0xcc85('0x7'))(_0xcc85('0x8'));var config=require(_0xcc85('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5172dd,_0x55d825,_0x37f9be){return new BPromise(function(_0xa2dc3e,_0xb1af23){return client['request'](_0x5172dd,_0x37f9be)['then'](function(_0x2916a9){logger[_0xcc85('0xa')](_0xcc85('0xb'),_0x55d825,_0xcc85('0xc'));logger[_0xcc85('0xd')](_0xcc85('0xe'),_0x55d825,_0xcc85('0xc'),JSON['stringify'](_0x2916a9));if(_0x2916a9[_0xcc85('0xf')]){if(_0x2916a9[_0xcc85('0xf')][_0xcc85('0x10')]===0x1f4){logger[_0xcc85('0xf')](_0xcc85('0xb'),_0x55d825,_0x2916a9[_0xcc85('0xf')]['message']);return _0xb1af23(_0x2916a9[_0xcc85('0xf')][_0xcc85('0x11')]);}logger['error'](_0xcc85('0xb'),_0x55d825,_0x2916a9[_0xcc85('0xf')][_0xcc85('0x11')]);return _0xa2dc3e(_0x2916a9[_0xcc85('0xf')][_0xcc85('0x11')]);}else{logger[_0xcc85('0xa')](_0xcc85('0xb'),_0x55d825,_0xcc85('0xc'));_0xa2dc3e(_0x2916a9[_0xcc85('0x12')][_0xcc85('0x11')]);}})[_0xcc85('0x13')](function(_0x554649){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x55d825,_0x554649);_0xb1af23(_0x554649);});});}
\ No newline at end of file
+var _0x1036=['request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s'];(function(_0x142ec2,_0x5bb03d){var _0x45ef4e=function(_0x4bc513){while(--_0x4bc513){_0x142ec2['push'](_0x142ec2['shift']());}};_0x45ef4e(++_0x5bb03d);}(_0x1036,0x18f));var _0x6103=function(_0x139ef5,_0x409104){_0x139ef5=_0x139ef5-0x0;var _0x56b9f5=_0x1036[_0x139ef5];return _0x56b9f5;};'use strict';var _=require(_0x6103('0x0'));var util=require(_0x6103('0x1'));var moment=require('moment');var BPromise=require(_0x6103('0x2'));var rs=require(_0x6103('0x3'));var fs=require('fs');var Redis=require(_0x6103('0x4'));var db=require(_0x6103('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6103('0x6'));var config=require(_0x6103('0x7'));var jayson=require(_0x6103('0x8'));var client=jayson[_0x6103('0x9')][_0x6103('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c019e,_0x33a804,_0x57ea6d){return new BPromise(function(_0x18887c,_0x4981b9){return client[_0x6103('0xb')](_0x1c019e,_0x57ea6d)[_0x6103('0xc')](function(_0x287611){logger[_0x6103('0xd')](_0x6103('0xe'),_0x33a804,_0x6103('0xf'));logger[_0x6103('0x10')](_0x6103('0x11'),_0x33a804,'request\x20sent',JSON[_0x6103('0x12')](_0x287611));if(_0x287611['error']){if(_0x287611[_0x6103('0x13')][_0x6103('0x14')]===0x1f4){logger['error'](_0x6103('0xe'),_0x33a804,_0x287611[_0x6103('0x13')][_0x6103('0x15')]);return _0x4981b9(_0x287611[_0x6103('0x13')]['message']);}logger[_0x6103('0x13')](_0x6103('0xe'),_0x33a804,_0x287611[_0x6103('0x13')][_0x6103('0x15')]);return _0x18887c(_0x287611[_0x6103('0x13')]['message']);}else{logger[_0x6103('0xd')](_0x6103('0xe'),_0x33a804,_0x6103('0xf'));_0x18887c(_0x287611[_0x6103('0x16')][_0x6103('0x15')]);}})['catch'](function(_0x2aa484){logger[_0x6103('0x13')](_0x6103('0xe'),_0x33a804,_0x2aa484);_0x4981b9(_0x2aa484);});});}
\ No newline at end of file
index 9421952..0b73040 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4d8=['show','create','put','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../config/environment','./template.controller','get','isAuthenticated','index','/:id'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc4d8,0xa6));var _0x8c4d=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xc4d8[_0x42245d];return _0x4b211a;};'use strict';var multer=require(_0x8c4d('0x0'));var util=require('util');var path=require(_0x8c4d('0x1'));var timeout=require(_0x8c4d('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8c4d('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8c4d('0x4'));var controller=require(_0x8c4d('0x5'));router[_0x8c4d('0x6')]('/',auth[_0x8c4d('0x7')](),controller[_0x8c4d('0x8')]);router[_0x8c4d('0x6')](_0x8c4d('0x9'),auth[_0x8c4d('0x7')](),controller[_0x8c4d('0xa')]);router['post']('/',auth[_0x8c4d('0x7')](),controller[_0x8c4d('0xb')]);router[_0x8c4d('0xc')](_0x8c4d('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x8c4d('0xd')](_0x8c4d('0x9'),auth[_0x8c4d('0x7')](),controller[_0x8c4d('0xe')]);module[_0x8c4d('0xf')]=router;
\ No newline at end of file
+var _0x1189=['create','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x4bf8cf,_0x48cbdd){var _0x53b949=function(_0x45f9dd){while(--_0x45f9dd){_0x4bf8cf['push'](_0x4bf8cf['shift']());}};_0x53b949(++_0x48cbdd);}(_0x1189,0x17f));var _0x9118=function(_0x1604c4,_0x1696d2){_0x1604c4=_0x1604c4-0x0;var _0xe3ae19=_0x1189[_0x1604c4];return _0xe3ae19;};'use strict';var multer=require(_0x9118('0x0'));var util=require(_0x9118('0x1'));var path=require(_0x9118('0x2'));var timeout=require(_0x9118('0x3'));var express=require('express');var router=express[_0x9118('0x4')]();var fs_extra=require(_0x9118('0x5'));var auth=require(_0x9118('0x6'));var interaction=require(_0x9118('0x7'));var config=require(_0x9118('0x8'));var controller=require(_0x9118('0x9'));router[_0x9118('0xa')]('/',auth['isAuthenticated'](),controller[_0x9118('0xb')]);router[_0x9118('0xa')](_0x9118('0xc'),auth[_0x9118('0xd')](),controller[_0x9118('0xe')]);router[_0x9118('0xf')]('/',auth['isAuthenticated'](),controller[_0x9118('0x10')]);router[_0x9118('0x11')](_0x9118('0xc'),auth[_0x9118('0xd')](),controller[_0x9118('0x12')]);router[_0x9118('0x13')](_0x9118('0xc'),auth['isAuthenticated'](),controller[_0x9118('0x14')]);module['exports']=router;
\ No newline at end of file
index cfded34..0f4a87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x538b=['STRING','TEXT','sequelize'];(function(_0x3925e5,_0x5dcecb){var _0x57d9a0=function(_0x2c837a){while(--_0x2c837a){_0x3925e5['push'](_0x3925e5['shift']());}};_0x57d9a0(++_0x5dcecb);}(_0x538b,0xf2));var _0xb538=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x538b[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0xb538('0x0'));module['exports']={'name':{'type':Sequelize[_0xb538('0x1')]},'description':{'type':Sequelize[_0xb538('0x1')]},'html':{'type':Sequelize[_0xb538('0x2')]}};
\ No newline at end of file
+var _0xf01b=['sequelize','exports','STRING','TEXT'];(function(_0x3c5424,_0x29a651){var _0x53126a=function(_0x56306c){while(--_0x56306c){_0x3c5424['push'](_0x3c5424['shift']());}};_0x53126a(++_0x29a651);}(_0xf01b,0xa8));var _0xbf01=function(_0x4fcd95,_0x470605){_0x4fcd95=_0x4fcd95-0x0;var _0x4d47bf=_0xf01b[_0x4fcd95];return _0x4d47bf;};'use strict';var Sequelize=require(_0xbf01('0x0'));module[_0xbf01('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbf01('0x2')]},'html':{'type':Sequelize[_0xbf01('0x3')]}};
\ No newline at end of file
index 7605e51..887b282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc246=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Template','findAll','rows','catch','show','params','length','includeAll','include','find','create','body','user','role','Templates','UserProfileSection','userProfileId','autoAssociation','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x23ea6a,_0xeb7243){var _0x3520a4=function(_0x5bc3b8){while(--_0x5bc3b8){_0x23ea6a['push'](_0x23ea6a['shift']());}};_0x3520a4(++_0xeb7243);}(_0xc246,0x144));var _0x6c24=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc246[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6c24('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6c24('0x1'));var jsonpatch=require(_0x6c24('0x2'));var rp=require('request-promise');var moment=require(_0x6c24('0x3'));var BPromise=require(_0x6c24('0x4'));var Mustache=require(_0x6c24('0x5'));var util=require(_0x6c24('0x6'));var path=require(_0x6c24('0x7'));var sox=require('sox');var csv=require(_0x6c24('0x8'));var ejs=require(_0x6c24('0x9'));var fs=require('fs');var fs_extra=require(_0x6c24('0xa'));var _=require(_0x6c24('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6c24('0xc'));var deskjs=require(_0x6c24('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6c24('0xe'));var Papa=require(_0x6c24('0xf'));var Redis=require(_0x6c24('0x10'));var authService=require(_0x6c24('0x11'));var qs=require(_0x6c24('0x12'));var as=require(_0x6c24('0x13'));var hardwareService=require(_0x6c24('0x14'));var logger=require(_0x6c24('0x15'))(_0x6c24('0x16'));var utils=require(_0x6c24('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x6c24('0x18'));var db=require(_0x6c24('0x19'))['db'];function respondWithStatusCode(_0x1b1c98,_0x2200a2){_0x2200a2=_0x2200a2||0xcc;return function(_0x11c469){if(_0x11c469){return _0x1b1c98[_0x6c24('0x1a')](_0x2200a2);}return _0x1b1c98[_0x6c24('0x1b')](_0x2200a2)[_0x6c24('0x1c')]();};}function respondWithResult(_0xc4e38c,_0xb955d9){_0xb955d9=_0xb955d9||0xc8;return function(_0x568620){if(_0x568620){return _0xc4e38c[_0x6c24('0x1b')](_0xb955d9)[_0x6c24('0x1d')](_0x568620);}};}function respondWithFilteredResult(_0x3db1fa,_0x585d66){return function(_0xd9e112){if(_0xd9e112){var _0x225715=typeof _0x585d66[_0x6c24('0x1e')]===_0x6c24('0x1f')&&typeof _0x585d66[_0x6c24('0x20')]===_0x6c24('0x1f');var _0x4a20c2=_0xd9e112[_0x6c24('0x21')];var _0x1ffdef=_0x225715?0x0:_0x585d66['offset'];var _0x129db9=_0x225715?_0xd9e112['count']:_0x585d66['offset']+_0x585d66[_0x6c24('0x20')];var _0x3ac7a9;if(_0x129db9>=_0x4a20c2){_0x129db9=_0x4a20c2;_0x3ac7a9=0xc8;}else{_0x3ac7a9=0xce;}_0x3db1fa[_0x6c24('0x1b')](_0x3ac7a9);return _0x3db1fa[_0x6c24('0x22')]('Content-Range',_0x1ffdef+'-'+_0x129db9+'/'+_0x4a20c2)[_0x6c24('0x1d')](_0xd9e112);}return null;};}function patchUpdates(_0x370933){return function(_0x2f1aa0){try{jsonpatch['apply'](_0x2f1aa0,_0x370933,!![]);}catch(_0x50fc6f){return BPromise[_0x6c24('0x23')](_0x50fc6f);}return _0x2f1aa0[_0x6c24('0x24')]();};}function saveUpdates(_0xddcea3,_0xf4639e){return function(_0x243077){if(_0x243077){return _0x243077[_0x6c24('0x25')](_0xddcea3)[_0x6c24('0x26')](function(_0x5451ff){return _0x5451ff;});}return null;};}function removeEntity(_0x520715,_0x488ac7){return function(_0x5e8870){if(_0x5e8870){return _0x5e8870[_0x6c24('0x27')]()['then'](function(){var _0x58513a=_0x5e8870[_0x6c24('0x28')]({'plain':!![]});var _0x540d8c='Templates';return db[_0x6c24('0x29')][_0x6c24('0x27')]({'where':{'type':_0x540d8c,'resourceId':_0x58513a['id']}})[_0x6c24('0x26')](function(){return _0x5e8870;});})[_0x6c24('0x26')](function(){_0x520715['status'](0xcc)[_0x6c24('0x1c')]();});}};}function handleEntityNotFound(_0x135b06,_0x34add8){return function(_0x39d32b){if(!_0x39d32b){_0x135b06[_0x6c24('0x1a')](0x194);}return _0x39d32b;};}function handleError(_0x3fade5,_0x34b71b){_0x34b71b=_0x34b71b||0x1f4;return function(_0xa0f7d){logger[_0x6c24('0x2a')](_0xa0f7d[_0x6c24('0x2b')]);if(_0xa0f7d[_0x6c24('0x2c')]){delete _0xa0f7d[_0x6c24('0x2c')];}_0x3fade5[_0x6c24('0x1b')](_0x34b71b)[_0x6c24('0x2d')](_0xa0f7d);};}exports[_0x6c24('0x2e')]=function(_0x1c18bf,_0xf5bf05){var _0x2f508f={},_0x22c676={},_0x4a7756={'count':0x0,'rows':[]};var _0x40f2a3=_[_0x6c24('0x2f')](db['Template'][_0x6c24('0x30')],function(_0x32bf78){return{'name':_0x32bf78[_0x6c24('0x31')],'type':_0x32bf78[_0x6c24('0x32')][_0x6c24('0x33')]};});_0x22c676['model']=_[_0x6c24('0x2f')](_0x40f2a3,_0x6c24('0x2c'));_0x22c676[_0x6c24('0x34')]=_[_0x6c24('0x35')](_0x1c18bf[_0x6c24('0x34')]);_0x22c676[_0x6c24('0x36')]=_[_0x6c24('0x37')](_0x22c676[_0x6c24('0x38')],_0x22c676['query']);_0x2f508f[_0x6c24('0x39')]=_[_0x6c24('0x37')](_0x22c676[_0x6c24('0x38')],qs[_0x6c24('0x3a')](_0x1c18bf[_0x6c24('0x34')][_0x6c24('0x3a')]));_0x2f508f['attributes']=_0x2f508f[_0x6c24('0x39')]['length']?_0x2f508f[_0x6c24('0x39')]:_0x22c676[_0x6c24('0x38')];if(!_0x1c18bf['query'][_0x6c24('0x3b')](_0x6c24('0x3c'))){_0x2f508f[_0x6c24('0x20')]=qs[_0x6c24('0x20')](_0x1c18bf[_0x6c24('0x34')]['limit']);_0x2f508f[_0x6c24('0x1e')]=qs[_0x6c24('0x1e')](_0x1c18bf[_0x6c24('0x34')][_0x6c24('0x1e')]);}_0x2f508f[_0x6c24('0x3d')]=qs[_0x6c24('0x3e')](_0x1c18bf[_0x6c24('0x34')]['sort']);_0x2f508f[_0x6c24('0x3f')]=qs[_0x6c24('0x36')](_['pick'](_0x1c18bf[_0x6c24('0x34')],_0x22c676[_0x6c24('0x36')]),_0x40f2a3);if(_0x1c18bf[_0x6c24('0x34')][_0x6c24('0x40')]){_0x2f508f[_0x6c24('0x3f')]=_[_0x6c24('0x41')](_0x2f508f[_0x6c24('0x3f')],{'$or':_[_0x6c24('0x2f')](_0x40f2a3,function(_0x4f35d5){if(_0x4f35d5[_0x6c24('0x32')]!==_0x6c24('0x42')){var _0x584b22={};_0x584b22[_0x4f35d5['name']]={'$like':'%'+_0x1c18bf[_0x6c24('0x34')]['filter']+'%'};return _0x584b22;}})});}_0x2f508f=_[_0x6c24('0x41')]({},_0x2f508f,_0x1c18bf[_0x6c24('0x43')]);var _0x174e4b={'where':_0x2f508f['where']};return db[_0x6c24('0x44')][_0x6c24('0x21')](_0x174e4b)[_0x6c24('0x26')](function(_0x14b1d1){_0x4a7756[_0x6c24('0x21')]=_0x14b1d1;if(_0x1c18bf['query']['includeAll']){_0x2f508f['include']=[{'all':!![]}];}return db[_0x6c24('0x44')][_0x6c24('0x45')](_0x2f508f);})[_0x6c24('0x26')](function(_0x210a7a){_0x4a7756[_0x6c24('0x46')]=_0x210a7a;return _0x4a7756;})['then'](respondWithFilteredResult(_0xf5bf05,_0x2f508f))[_0x6c24('0x47')](handleError(_0xf5bf05,null));};exports[_0x6c24('0x48')]=function(_0x5c82fa,_0x1e0526){var _0x4c7f6c={'raw':!![],'where':{'id':_0x5c82fa[_0x6c24('0x49')]['id']}},_0x5498a6={};_0x5498a6[_0x6c24('0x38')]=_['keys'](db[_0x6c24('0x44')]['rawAttributes']);_0x5498a6[_0x6c24('0x34')]=_[_0x6c24('0x35')](_0x5c82fa['query']);_0x5498a6[_0x6c24('0x36')]=_[_0x6c24('0x37')](_0x5498a6[_0x6c24('0x38')],_0x5498a6[_0x6c24('0x34')]);_0x4c7f6c['attributes']=_[_0x6c24('0x37')](_0x5498a6[_0x6c24('0x38')],qs[_0x6c24('0x3a')](_0x5c82fa[_0x6c24('0x34')][_0x6c24('0x3a')]));_0x4c7f6c[_0x6c24('0x39')]=_0x4c7f6c['attributes'][_0x6c24('0x4a')]?_0x4c7f6c[_0x6c24('0x39')]:_0x5498a6[_0x6c24('0x38')];if(_0x5c82fa[_0x6c24('0x34')][_0x6c24('0x4b')]){_0x4c7f6c[_0x6c24('0x4c')]=[{'all':!![]}];}_0x4c7f6c=_[_0x6c24('0x41')]({},_0x4c7f6c,_0x5c82fa[_0x6c24('0x43')]);return db[_0x6c24('0x44')][_0x6c24('0x4d')](_0x4c7f6c)[_0x6c24('0x26')](handleEntityNotFound(_0x1e0526,null))[_0x6c24('0x26')](respondWithResult(_0x1e0526,null))[_0x6c24('0x47')](handleError(_0x1e0526,null));};exports[_0x6c24('0x4e')]=function(_0x5d8fa8,_0x45029f){return db[_0x6c24('0x44')][_0x6c24('0x4e')](_0x5d8fa8[_0x6c24('0x4f')],{})['then'](function(_0x4152c6){var _0x4e4976=_0x5d8fa8[_0x6c24('0x50')][_0x6c24('0x28')]({'plain':!![]});if(!_0x4e4976)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e4976[_0x6c24('0x51')]===_0x6c24('0x50')){var _0x42353d=_0x4152c6[_0x6c24('0x28')]({'plain':!![]});var _0x27119b=_0x6c24('0x52');return db[_0x6c24('0x53')][_0x6c24('0x4d')]({'where':{'name':_0x27119b,'userProfileId':_0x4e4976[_0x6c24('0x54')]},'raw':!![]})['then'](function(_0x115e8d){if(_0x115e8d&&_0x115e8d[_0x6c24('0x55')]===0x0){return db[_0x6c24('0x29')][_0x6c24('0x4e')]({'name':_0x42353d[_0x6c24('0x2c')],'resourceId':_0x42353d['id'],'type':_0x115e8d['name'],'sectionId':_0x115e8d['id']},{})[_0x6c24('0x26')](function(){return _0x4152c6;});}else{return _0x4152c6;}})['catch'](function(_0x3b9e71){logger[_0x6c24('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b9e71);throw _0x3b9e71;});}return _0x4152c6;})[_0x6c24('0x26')](respondWithResult(_0x45029f,0xc9))['catch'](handleError(_0x45029f,null));};exports['update']=function(_0x2ba0a6,_0xc00ddf){if(_0x2ba0a6[_0x6c24('0x4f')]['id']){delete _0x2ba0a6['body']['id'];}return db[_0x6c24('0x44')]['find']({'where':{'id':_0x2ba0a6['params']['id']}})[_0x6c24('0x26')](handleEntityNotFound(_0xc00ddf,null))[_0x6c24('0x26')](saveUpdates(_0x2ba0a6[_0x6c24('0x4f')],null))[_0x6c24('0x26')](respondWithResult(_0xc00ddf,null))[_0x6c24('0x47')](handleError(_0xc00ddf,null));};exports[_0x6c24('0x27')]=function(_0x383768,_0x50d934){return db['Template']['find']({'where':{'id':_0x383768[_0x6c24('0x49')]['id']}})[_0x6c24('0x26')](handleEntityNotFound(_0x50d934,null))[_0x6c24('0x26')](removeEntity(_0x50d934,null))['catch'](handleError(_0x50d934,null));};
\ No newline at end of file
+var _0x3eb6=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','count','set','Content-Range','reject','save','then','get','Templates','destroy','end','error','name','index','map','Template','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','user','role','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service'];(function(_0x4cc809,_0xf6d616){var _0x5556a6=function(_0xa05f5b){while(--_0xa05f5b){_0x4cc809['push'](_0x4cc809['shift']());}};_0x5556a6(++_0xf6d616);}(_0x3eb6,0x189));var _0x63eb=function(_0x42446c,_0x106c25){_0x42446c=_0x42446c-0x0;var _0x29059d=_0x3eb6[_0x42446c];return _0x29059d;};'use strict';var emlformat=require(_0x63eb('0x0'));var rimraf=require(_0x63eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x63eb('0x2'));var moment=require(_0x63eb('0x3'));var BPromise=require(_0x63eb('0x4'));var Mustache=require(_0x63eb('0x5'));var util=require(_0x63eb('0x6'));var path=require('path');var sox=require(_0x63eb('0x7'));var csv=require('to-csv');var ejs=require(_0x63eb('0x8'));var fs=require('fs');var fs_extra=require(_0x63eb('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x63eb('0xa'));var jsforce=require(_0x63eb('0xb'));var deskjs=require(_0x63eb('0xc'));var toCsv=require(_0x63eb('0xd'));var querystring=require('querystring');var Papa=require(_0x63eb('0xe'));var Redis=require(_0x63eb('0xf'));var authService=require(_0x63eb('0x10'));var qs=require(_0x63eb('0x11'));var as=require(_0x63eb('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x63eb('0x13'))(_0x63eb('0x14'));var utils=require(_0x63eb('0x15'));var config=require(_0x63eb('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfdab1b,_0xdc61c){_0xdc61c=_0xdc61c||0xcc;return function(_0x38a6a9){if(_0x38a6a9){return _0xfdab1b[_0x63eb('0x17')](_0xdc61c);}return _0xfdab1b[_0x63eb('0x18')](_0xdc61c)['end']();};}function respondWithResult(_0x20bce5,_0x21d35f){_0x21d35f=_0x21d35f||0xc8;return function(_0x358ae9){if(_0x358ae9){return _0x20bce5[_0x63eb('0x18')](_0x21d35f)[_0x63eb('0x19')](_0x358ae9);}};}function respondWithFilteredResult(_0x2b8dc1,_0x1b2513){return function(_0x203a82){if(_0x203a82){var _0x2803b8=typeof _0x1b2513[_0x63eb('0x1a')]==='undefined'&&typeof _0x1b2513['limit']===_0x63eb('0x1b');var _0x47722a=_0x203a82[_0x63eb('0x1c')];var _0x227310=_0x2803b8?0x0:_0x1b2513[_0x63eb('0x1a')];var _0x8de49d=_0x2803b8?_0x203a82[_0x63eb('0x1c')]:_0x1b2513[_0x63eb('0x1a')]+_0x1b2513['limit'];var _0x3ed371;if(_0x8de49d>=_0x47722a){_0x8de49d=_0x47722a;_0x3ed371=0xc8;}else{_0x3ed371=0xce;}_0x2b8dc1['status'](_0x3ed371);return _0x2b8dc1[_0x63eb('0x1d')](_0x63eb('0x1e'),_0x227310+'-'+_0x8de49d+'/'+_0x47722a)[_0x63eb('0x19')](_0x203a82);}return null;};}function patchUpdates(_0x3b99a6){return function(_0x2da96f){try{jsonpatch['apply'](_0x2da96f,_0x3b99a6,!![]);}catch(_0x4d67fa){return BPromise[_0x63eb('0x1f')](_0x4d67fa);}return _0x2da96f[_0x63eb('0x20')]();};}function saveUpdates(_0x4f9aa0,_0x56b077){return function(_0x70514c){if(_0x70514c){return _0x70514c['update'](_0x4f9aa0)['then'](function(_0x18003d){return _0x18003d;});}return null;};}function removeEntity(_0x5e21b8,_0x239b83){return function(_0x47829e){if(_0x47829e){return _0x47829e['destroy']()[_0x63eb('0x21')](function(){var _0x357fe8=_0x47829e[_0x63eb('0x22')]({'plain':!![]});var _0x47ffa1=_0x63eb('0x23');return db['UserProfileResource'][_0x63eb('0x24')]({'where':{'type':_0x47ffa1,'resourceId':_0x357fe8['id']}})[_0x63eb('0x21')](function(){return _0x47829e;});})[_0x63eb('0x21')](function(){_0x5e21b8['status'](0xcc)[_0x63eb('0x25')]();});}};}function handleEntityNotFound(_0x37e2b8,_0x31382b){return function(_0x57d8a8){if(!_0x57d8a8){_0x37e2b8[_0x63eb('0x17')](0x194);}return _0x57d8a8;};}function handleError(_0x28bc28,_0x35e7e5){_0x35e7e5=_0x35e7e5||0x1f4;return function(_0x126ed9){logger[_0x63eb('0x26')](_0x126ed9['stack']);if(_0x126ed9['name']){delete _0x126ed9[_0x63eb('0x27')];}_0x28bc28[_0x63eb('0x18')](_0x35e7e5)['send'](_0x126ed9);};}exports[_0x63eb('0x28')]=function(_0x5aaac6,_0x57f1e2){var _0x22fa56={},_0x2d00be={},_0x230597={'count':0x0,'rows':[]};var _0x3e7301=_[_0x63eb('0x29')](db[_0x63eb('0x2a')][_0x63eb('0x2b')],function(_0x5b48f2){return{'name':_0x5b48f2[_0x63eb('0x2c')],'type':_0x5b48f2[_0x63eb('0x2d')][_0x63eb('0x2e')]};});_0x2d00be[_0x63eb('0x2f')]=_[_0x63eb('0x29')](_0x3e7301,_0x63eb('0x27'));_0x2d00be['query']=_['keys'](_0x5aaac6[_0x63eb('0x30')]);_0x2d00be[_0x63eb('0x31')]=_[_0x63eb('0x32')](_0x2d00be[_0x63eb('0x2f')],_0x2d00be[_0x63eb('0x30')]);_0x22fa56[_0x63eb('0x33')]=_[_0x63eb('0x32')](_0x2d00be[_0x63eb('0x2f')],qs[_0x63eb('0x34')](_0x5aaac6[_0x63eb('0x30')]['fields']));_0x22fa56['attributes']=_0x22fa56[_0x63eb('0x33')][_0x63eb('0x35')]?_0x22fa56[_0x63eb('0x33')]:_0x2d00be[_0x63eb('0x2f')];if(!_0x5aaac6['query'][_0x63eb('0x36')](_0x63eb('0x37'))){_0x22fa56[_0x63eb('0x38')]=qs[_0x63eb('0x38')](_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x38')]);_0x22fa56['offset']=qs[_0x63eb('0x1a')](_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x1a')]);}_0x22fa56[_0x63eb('0x39')]=qs[_0x63eb('0x3a')](_0x5aaac6[_0x63eb('0x30')]['sort']);_0x22fa56[_0x63eb('0x3b')]=qs['filters'](_['pick'](_0x5aaac6[_0x63eb('0x30')],_0x2d00be['filters']),_0x3e7301);if(_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x3c')]){_0x22fa56[_0x63eb('0x3b')]=_[_0x63eb('0x3d')](_0x22fa56['where'],{'$or':_[_0x63eb('0x29')](_0x3e7301,function(_0x46cc85){if(_0x46cc85[_0x63eb('0x2d')]!==_0x63eb('0x3e')){var _0x2263bf={};_0x2263bf[_0x46cc85[_0x63eb('0x27')]]={'$like':'%'+_0x5aaac6[_0x63eb('0x30')]['filter']+'%'};return _0x2263bf;}})});}_0x22fa56=_[_0x63eb('0x3d')]({},_0x22fa56,_0x5aaac6[_0x63eb('0x3f')]);var _0x31c1a2={'where':_0x22fa56[_0x63eb('0x3b')]};return db[_0x63eb('0x2a')][_0x63eb('0x1c')](_0x31c1a2)['then'](function(_0x144215){_0x230597[_0x63eb('0x1c')]=_0x144215;if(_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x40')]){_0x22fa56[_0x63eb('0x41')]=[{'all':!![]}];}return db[_0x63eb('0x2a')][_0x63eb('0x42')](_0x22fa56);})[_0x63eb('0x21')](function(_0x23d2cf){_0x230597[_0x63eb('0x43')]=_0x23d2cf;return _0x230597;})[_0x63eb('0x21')](respondWithFilteredResult(_0x57f1e2,_0x22fa56))[_0x63eb('0x44')](handleError(_0x57f1e2,null));};exports[_0x63eb('0x45')]=function(_0x4ce7b5,_0x547399){var _0x1a4d74={'raw':!![],'where':{'id':_0x4ce7b5[_0x63eb('0x46')]['id']}},_0x302447={};_0x302447[_0x63eb('0x2f')]=_['keys'](db[_0x63eb('0x2a')][_0x63eb('0x2b')]);_0x302447[_0x63eb('0x30')]=_[_0x63eb('0x47')](_0x4ce7b5[_0x63eb('0x30')]);_0x302447[_0x63eb('0x31')]=_[_0x63eb('0x32')](_0x302447[_0x63eb('0x2f')],_0x302447[_0x63eb('0x30')]);_0x1a4d74['attributes']=_[_0x63eb('0x32')](_0x302447[_0x63eb('0x2f')],qs['fields'](_0x4ce7b5['query']['fields']));_0x1a4d74['attributes']=_0x1a4d74[_0x63eb('0x33')][_0x63eb('0x35')]?_0x1a4d74[_0x63eb('0x33')]:_0x302447['model'];if(_0x4ce7b5[_0x63eb('0x30')]['includeAll']){_0x1a4d74[_0x63eb('0x41')]=[{'all':!![]}];}_0x1a4d74=_[_0x63eb('0x3d')]({},_0x1a4d74,_0x4ce7b5[_0x63eb('0x3f')]);return db[_0x63eb('0x2a')]['find'](_0x1a4d74)[_0x63eb('0x21')](handleEntityNotFound(_0x547399,null))[_0x63eb('0x21')](respondWithResult(_0x547399,null))[_0x63eb('0x44')](handleError(_0x547399,null));};exports[_0x63eb('0x48')]=function(_0x543a60,_0x5748c9){return db['Template'][_0x63eb('0x48')](_0x543a60['body'],{})[_0x63eb('0x21')](function(_0x3a9c77){var _0x2bd66a=_0x543a60[_0x63eb('0x49')][_0x63eb('0x22')]({'plain':!![]});if(!_0x2bd66a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2bd66a[_0x63eb('0x4a')]==='user'){var _0x34f81b=_0x3a9c77['get']({'plain':!![]});var _0x4de4fa=_0x63eb('0x23');return db[_0x63eb('0x4b')][_0x63eb('0x4c')]({'where':{'name':_0x4de4fa,'userProfileId':_0x2bd66a['userProfileId']},'raw':!![]})[_0x63eb('0x21')](function(_0x3750e0){if(_0x3750e0&&_0x3750e0[_0x63eb('0x4d')]===0x0){return db[_0x63eb('0x4e')][_0x63eb('0x48')]({'name':_0x34f81b[_0x63eb('0x27')],'resourceId':_0x34f81b['id'],'type':_0x3750e0['name'],'sectionId':_0x3750e0['id']},{})['then'](function(){return _0x3a9c77;});}else{return _0x3a9c77;}})['catch'](function(_0x1d42a2){logger['error'](_0x63eb('0x4f'),_0x1d42a2);throw _0x1d42a2;});}return _0x3a9c77;})['then'](respondWithResult(_0x5748c9,0xc9))[_0x63eb('0x44')](handleError(_0x5748c9,null));};exports[_0x63eb('0x50')]=function(_0xe71c6a,_0x323d24){if(_0xe71c6a[_0x63eb('0x51')]['id']){delete _0xe71c6a[_0x63eb('0x51')]['id'];}return db[_0x63eb('0x2a')]['find']({'where':{'id':_0xe71c6a[_0x63eb('0x46')]['id']}})[_0x63eb('0x21')](handleEntityNotFound(_0x323d24,null))['then'](saveUpdates(_0xe71c6a['body'],null))[_0x63eb('0x21')](respondWithResult(_0x323d24,null))[_0x63eb('0x44')](handleError(_0x323d24,null));};exports[_0x63eb('0x24')]=function(_0x231aad,_0x1178ad){return db[_0x63eb('0x2a')][_0x63eb('0x4c')]({'where':{'id':_0x231aad[_0x63eb('0x46')]['id']}})['then'](handleEntityNotFound(_0x1178ad,null))[_0x63eb('0x21')](removeEntity(_0x1178ad,null))['catch'](handleError(_0x1178ad,null));};
\ No newline at end of file
index 95888a4..5d1716f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8313=['path','../../config/environment','./template.attributes','exports','define','Template','tools_templates','util','../../config/logger','request-promise'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x8313,0x15b));var _0x3831=function(_0x55dd4a,_0x52da5d){_0x55dd4a=_0x55dd4a-0x0;var _0x87d880=_0x8313[_0x55dd4a];return _0x87d880;};'use strict';var _=require('lodash');var util=require(_0x3831('0x0'));var logger=require(_0x3831('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3831('0x2'));var fs=require('fs');var path=require(_0x3831('0x3'));var rimraf=require('rimraf');var config=require(_0x3831('0x4'));var attributes=require(_0x3831('0x5'));module[_0x3831('0x6')]=function(_0x44f86f,_0x51c613){return _0x44f86f[_0x3831('0x7')](_0x3831('0x8'),attributes,{'tableName':_0x3831('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedba=['util','api','moment','bluebird','path','rimraf','./template.attributes','define','Template','tools_templates','lodash'];(function(_0x15b0ec,_0x31bcc0){var _0x2d575b=function(_0x55dc03){while(--_0x55dc03){_0x15b0ec['push'](_0x15b0ec['shift']());}};_0x2d575b(++_0x31bcc0);}(_0xedba,0x1cd));var _0xaedb=function(_0x9058c6,_0x50bf42){_0x9058c6=_0x9058c6-0x0;var _0x4a922e=_0xedba[_0x9058c6];return _0x4a922e;};'use strict';var _=require(_0xaedb('0x0'));var util=require(_0xaedb('0x1'));var logger=require('../../config/logger')(_0xaedb('0x2'));var moment=require(_0xaedb('0x3'));var BPromise=require(_0xaedb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaedb('0x5'));var rimraf=require(_0xaedb('0x6'));var config=require('../../config/environment');var attributes=require(_0xaedb('0x7'));module['exports']=function(_0x1af15e,_0x46ee7d){return _0x1af15e[_0xaedb('0x8')](_0xaedb('0x9'),attributes,{'tableName':_0xaedb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7679089..ec766b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0718=['findAll','options','raw','where','limit','include','map','model','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','request\x20sent','stringify','error','code','Template,\x20%s,\x20%s','message','result','catch','GetTemplate','Template'];(function(_0x2eddac,_0x5be14f){var _0x5598ed=function(_0x8f347d){while(--_0x8f347d){_0x2eddac['push'](_0x2eddac['shift']());}};_0x5598ed(++_0x5be14f);}(_0x0718,0x18a));var _0x8071=function(_0x3f59b1,_0x25cdbe){_0x3f59b1=_0x3f59b1-0x0;var _0x11d2e8=_0x0718[_0x3f59b1];return _0x11d2e8;};'use strict';var _=require(_0x8071('0x0'));var util=require('util');var moment=require(_0x8071('0x1'));var BPromise=require(_0x8071('0x2'));var rs=require(_0x8071('0x3'));var fs=require('fs');var Redis=require(_0x8071('0x4'));var db=require(_0x8071('0x5'))['db'];var utils=require(_0x8071('0x6'));var logger=require(_0x8071('0x7'))(_0x8071('0x8'));var config=require(_0x8071('0x9'));var jayson=require(_0x8071('0xa'));var client=jayson[_0x8071('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1e1e35,_0x1e011c,_0x4d38ac){return new BPromise(function(_0x52d2e3,_0x4d8cd4){return client[_0x8071('0xc')](_0x1e1e35,_0x4d38ac)[_0x8071('0xd')](function(_0x5bbb8f){logger[_0x8071('0xe')]('Template,\x20%s,\x20%s',_0x1e011c,'request\x20sent');logger[_0x8071('0xf')]('Template,\x20%s,\x20%s,\x20%s',_0x1e011c,_0x8071('0x10'),JSON[_0x8071('0x11')](_0x5bbb8f));if(_0x5bbb8f[_0x8071('0x12')]){if(_0x5bbb8f[_0x8071('0x12')][_0x8071('0x13')]===0x1f4){logger['error'](_0x8071('0x14'),_0x1e011c,_0x5bbb8f[_0x8071('0x12')]['message']);return _0x4d8cd4(_0x5bbb8f[_0x8071('0x12')][_0x8071('0x15')]);}logger[_0x8071('0x12')](_0x8071('0x14'),_0x1e011c,_0x5bbb8f[_0x8071('0x12')][_0x8071('0x15')]);return _0x52d2e3(_0x5bbb8f[_0x8071('0x12')]['message']);}else{logger['info'](_0x8071('0x14'),_0x1e011c,_0x8071('0x10'));_0x52d2e3(_0x5bbb8f[_0x8071('0x16')][_0x8071('0x15')]);}})[_0x8071('0x17')](function(_0x1d79e1){logger[_0x8071('0x12')](_0x8071('0x14'),_0x1e011c,_0x1d79e1);_0x4d8cd4(_0x1d79e1);});});}exports[_0x8071('0x18')]=function(_0x36aedc){var _0x1687c7=this;return new Promise(function(_0x3690f4,_0xe378e1){return db[_0x8071('0x19')][_0x8071('0x1a')]({'raw':_0x36aedc[_0x8071('0x1b')]?_0x36aedc[_0x8071('0x1b')][_0x8071('0x1c')]===undefined?!![]:![]:!![],'where':_0x36aedc[_0x8071('0x1b')]?_0x36aedc[_0x8071('0x1b')][_0x8071('0x1d')]||null:null,'attributes':_0x36aedc[_0x8071('0x1b')]?_0x36aedc['options']['attributes']||null:null,'limit':_0x36aedc['options']?_0x36aedc[_0x8071('0x1b')][_0x8071('0x1e')]||null:null,'include':_0x36aedc['options']?_0x36aedc[_0x8071('0x1b')][_0x8071('0x1f')]?_[_0x8071('0x20')](_0x36aedc[_0x8071('0x1b')][_0x8071('0x1f')],function(_0x2f401c){return{'model':db[_0x2f401c[_0x8071('0x21')]],'as':_0x2f401c['as'],'attributes':_0x2f401c[_0x8071('0x22')],'include':_0x2f401c['include']?_[_0x8071('0x20')](_0x2f401c[_0x8071('0x1f')],function(_0x18f43b){return{'model':db[_0x18f43b[_0x8071('0x21')]],'as':_0x18f43b['as'],'attributes':_0x18f43b[_0x8071('0x22')],'include':_0x18f43b[_0x8071('0x1f')]?_[_0x8071('0x20')](_0x18f43b[_0x8071('0x1f')],function(_0x255b1f){return{'model':db[_0x255b1f[_0x8071('0x21')]],'as':_0x255b1f['as'],'attributes':_0x255b1f[_0x8071('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x485dec){logger[_0x8071('0xe')]('GetTemplate',_0x36aedc);logger[_0x8071('0xf')]('GetTemplate',_0x36aedc,JSON[_0x8071('0x11')](_0x485dec));_0x3690f4(_0x485dec);})[_0x8071('0x17')](function(_0xa414cc){logger[_0x8071('0x12')]('GetTemplate',_0xa414cc['message'],_0x36aedc);_0xe378e1(_0x1687c7[_0x8071('0x12')](0x1f4,_0xa414cc[_0x8071('0x15')]));});});};
\ No newline at end of file
+var _0x7348=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetTemplate','options','raw','where','include','map','model','attributes','then','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7348,0x16b));var _0x8734=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x7348[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0x8734('0x0'));var moment=require(_0x8734('0x1'));var BPromise=require('bluebird');var rs=require(_0x8734('0x2'));var fs=require('fs');var Redis=require(_0x8734('0x3'));var db=require(_0x8734('0x4'))['db'];var utils=require(_0x8734('0x5'));var logger=require(_0x8734('0x6'))('rpc');var config=require(_0x8734('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8734('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11505f,_0x3dbaf1,_0x409987){return new BPromise(function(_0x4b55fc,_0x282efb){return client['request'](_0x11505f,_0x409987)['then'](function(_0xb06875){logger['info'](_0x8734('0x9'),_0x3dbaf1,'request\x20sent');logger[_0x8734('0xa')](_0x8734('0xb'),_0x3dbaf1,_0x8734('0xc'),JSON[_0x8734('0xd')](_0xb06875));if(_0xb06875['error']){if(_0xb06875[_0x8734('0xe')][_0x8734('0xf')]===0x1f4){logger[_0x8734('0xe')](_0x8734('0x9'),_0x3dbaf1,_0xb06875[_0x8734('0xe')][_0x8734('0x10')]);return _0x282efb(_0xb06875[_0x8734('0xe')]['message']);}logger[_0x8734('0xe')]('Template,\x20%s,\x20%s',_0x3dbaf1,_0xb06875['error']['message']);return _0x4b55fc(_0xb06875[_0x8734('0xe')][_0x8734('0x10')]);}else{logger[_0x8734('0x11')](_0x8734('0x9'),_0x3dbaf1,_0x8734('0xc'));_0x4b55fc(_0xb06875['result'][_0x8734('0x10')]);}})[_0x8734('0x12')](function(_0x5b1663){logger[_0x8734('0xe')](_0x8734('0x9'),_0x3dbaf1,_0x5b1663);_0x282efb(_0x5b1663);});});}exports[_0x8734('0x13')]=function(_0x92addd){var _0x39da0c=this;return new Promise(function(_0x467ece,_0x25f144){return db['Template']['findAll']({'raw':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')][_0x8734('0x15')]===undefined?!![]:![]:!![],'where':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')][_0x8734('0x16')]||null:null,'attributes':_0x92addd['options']?_0x92addd['options']['attributes']||null:null,'limit':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')]['limit']||null:null,'include':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')][_0x8734('0x17')]?_[_0x8734('0x18')](_0x92addd['options'][_0x8734('0x17')],function(_0x4a022e){return{'model':db[_0x4a022e[_0x8734('0x19')]],'as':_0x4a022e['as'],'attributes':_0x4a022e[_0x8734('0x1a')],'include':_0x4a022e[_0x8734('0x17')]?_[_0x8734('0x18')](_0x4a022e[_0x8734('0x17')],function(_0x23b59e){return{'model':db[_0x23b59e[_0x8734('0x19')]],'as':_0x23b59e['as'],'attributes':_0x23b59e[_0x8734('0x1a')],'include':_0x23b59e['include']?_[_0x8734('0x18')](_0x23b59e[_0x8734('0x17')],function(_0x3e7bcf){return{'model':db[_0x3e7bcf[_0x8734('0x19')]],'as':_0x3e7bcf['as'],'attributes':_0x3e7bcf[_0x8734('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8734('0x1b')](function(_0xa831f3){logger[_0x8734('0x11')]('GetTemplate',_0x92addd);logger[_0x8734('0xa')](_0x8734('0x13'),_0x92addd,JSON[_0x8734('0xd')](_0xa831f3));_0x467ece(_0xa831f3);})[_0x8734('0x12')](function(_0x2c439d){logger[_0x8734('0xe')]('GetTemplate',_0x2c439d[_0x8734('0x10')],_0x92addd);_0x25f144(_0x39da0c[_0x8734('0xe')](0x1f4,_0x2c439d['message']));});});};
\ No newline at end of file
index 21e764e..8ae66cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f2=['../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','index','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAllCondition','addAnyCondition','addAction','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb3f2,0x1bb));var _0x2b3f=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xb3f2[_0x13b8f3];return _0x1a6d06;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2b3f('0x0'));var timeout=require(_0x2b3f('0x1'));var express=require(_0x2b3f('0x2'));var router=express[_0x2b3f('0x3')]();var fs_extra=require(_0x2b3f('0x4'));var auth=require(_0x2b3f('0x5'));var interaction=require(_0x2b3f('0x6'));var config=require(_0x2b3f('0x7'));var controller=require(_0x2b3f('0x8'));router[_0x2b3f('0x9')]('/',auth['isAuthenticated'](),controller[_0x2b3f('0xa')]);router['get'](_0x2b3f('0xb'),auth[_0x2b3f('0xc')](),controller[_0x2b3f('0xd')]);router[_0x2b3f('0x9')](_0x2b3f('0xe'),auth['isAuthenticated'](),controller[_0x2b3f('0xf')]);router[_0x2b3f('0x9')](_0x2b3f('0x10'),auth[_0x2b3f('0xc')](),controller[_0x2b3f('0x11')]);router[_0x2b3f('0x9')](_0x2b3f('0x12'),auth[_0x2b3f('0xc')](),controller[_0x2b3f('0x13')]);router[_0x2b3f('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2b3f('0x14')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0x2b3f('0x15')]);router[_0x2b3f('0x14')](_0x2b3f('0x10'),auth[_0x2b3f('0xc')](),controller[_0x2b3f('0x16')]);router[_0x2b3f('0x14')](_0x2b3f('0x12'),auth['isAuthenticated'](),controller[_0x2b3f('0x17')]);router['put'](_0x2b3f('0xb'),auth['isAuthenticated'](),controller[_0x2b3f('0x18')]);router[_0x2b3f('0x19')](_0x2b3f('0xb'),auth['isAuthenticated'](),controller[_0x2b3f('0x1a')]);module[_0x2b3f('0x1b')]=router;
\ No newline at end of file
+var _0x7fce=['multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','show','getAnyConditions','/:id/actions','getActions','post','/:id/any_conditions','addAnyCondition','addAction','update','delete'];(function(_0x252242,_0x19c92c){var _0x54fcd4=function(_0x2f3ea4){while(--_0x2f3ea4){_0x252242['push'](_0x252242['shift']());}};_0x54fcd4(++_0x19c92c);}(_0x7fce,0xdc));var _0xe7fc=function(_0x794740,_0x2bf2d){_0x794740=_0x794740-0x0;var _0x3eb671=_0x7fce[_0x794740];return _0x3eb671;};'use strict';var multer=require(_0xe7fc('0x0'));var util=require(_0xe7fc('0x1'));var path=require(_0xe7fc('0x2'));var timeout=require('connect-timeout');var express=require(_0xe7fc('0x3'));var router=express['Router']();var fs_extra=require(_0xe7fc('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe7fc('0x5'));var config=require(_0xe7fc('0x6'));var controller=require('./trigger.controller');router['get']('/',auth[_0xe7fc('0x7')](),controller['index']);router[_0xe7fc('0x8')](_0xe7fc('0x9'),auth[_0xe7fc('0x7')](),controller[_0xe7fc('0xa')]);router[_0xe7fc('0x8')]('/:id/all_conditions',auth[_0xe7fc('0x7')](),controller['getAllConditions']);router[_0xe7fc('0x8')]('/:id/any_conditions',auth[_0xe7fc('0x7')](),controller[_0xe7fc('0xb')]);router[_0xe7fc('0x8')](_0xe7fc('0xc'),auth['isAuthenticated'](),controller[_0xe7fc('0xd')]);router[_0xe7fc('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe7fc('0xe')]('/:id/all_conditions',auth[_0xe7fc('0x7')](),controller['addAllCondition']);router['post'](_0xe7fc('0xf'),auth[_0xe7fc('0x7')](),controller[_0xe7fc('0x10')]);router[_0xe7fc('0xe')](_0xe7fc('0xc'),auth['isAuthenticated'](),controller[_0xe7fc('0x11')]);router['put']('/:id',auth[_0xe7fc('0x7')](),controller[_0xe7fc('0x12')]);router[_0xe7fc('0x13')](_0xe7fc('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a7f15b9..cce5416 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd20=['BOOLEAN','sequelize','exports','STRING'];(function(_0x4ecc26,_0x57a231){var _0x314613=function(_0x424e88){while(--_0x424e88){_0x4ecc26['push'](_0x4ecc26['shift']());}};_0x314613(++_0x57a231);}(_0xdd20,0xbd));var _0x0dd2=function(_0x45e14c,_0x9dabd){_0x45e14c=_0x45e14c-0x0;var _0x3f364f=_0xdd20[_0x45e14c];return _0x3f364f;};'use strict';var Sequelize=require(_0x0dd2('0x0'));module[_0x0dd2('0x1')]={'name':{'type':Sequelize[_0x0dd2('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0dd2('0x2')]},'status':{'type':Sequelize[_0x0dd2('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9c8a=['STRING','BOOLEAN','exports'];(function(_0x583df4,_0x3437b1){var _0x26e6fa=function(_0x1c6398){while(--_0x1c6398){_0x583df4['push'](_0x583df4['shift']());}};_0x26e6fa(++_0x3437b1);}(_0x9c8a,0x191));var _0xa9c8=function(_0x5b132d,_0x485ca6){_0x5b132d=_0x5b132d-0x0;var _0xfac472=_0x9c8a[_0x5b132d];return _0xfac472;};'use strict';var Sequelize=require('sequelize');module[_0xa9c8('0x0')]={'name':{'type':Sequelize[_0xa9c8('0x1')]},'channel':{'type':Sequelize[_0xa9c8('0x1')]},'description':{'type':Sequelize[_0xa9c8('0x1')]},'status':{'type':Sequelize[_0xa9c8('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 23b0ffb..4003a40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1826=['findOne','getAnyConditions','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','destroy','then','get','Triggers','UserProfileResource','sendStatus','error','name','map','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','Trigger','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addAllCondition','TriggerAllId','Condition','addAnyCondition','getAllConditions'];(function(_0x21f9b9,_0x16758d){var _0x399ad3=function(_0x43e706){while(--_0x43e706){_0x21f9b9['push'](_0x21f9b9['shift']());}};_0x399ad3(++_0x16758d);}(_0x1826,0x1c7));var _0x6182=function(_0x48a17b,_0x15fe4b){_0x48a17b=_0x48a17b-0x0;var _0x3170db=_0x1826[_0x48a17b];return _0x3170db;};'use strict';var emlformat=require(_0x6182('0x0'));var rimraf=require(_0x6182('0x1'));var zipdir=require(_0x6182('0x2'));var jsonpatch=require(_0x6182('0x3'));var rp=require(_0x6182('0x4'));var moment=require(_0x6182('0x5'));var BPromise=require(_0x6182('0x6'));var Mustache=require(_0x6182('0x7'));var util=require(_0x6182('0x8'));var path=require('path');var sox=require(_0x6182('0x9'));var csv=require(_0x6182('0xa'));var ejs=require(_0x6182('0xb'));var fs=require('fs');var fs_extra=require(_0x6182('0xc'));var _=require('lodash');var squel=require(_0x6182('0xd'));var crypto=require(_0x6182('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6182('0xa'));var querystring=require('querystring');var Papa=require(_0x6182('0xf'));var Redis=require(_0x6182('0x10'));var authService=require(_0x6182('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x6182('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6182('0x13'))(_0x6182('0x14'));var utils=require(_0x6182('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6182('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5905d7,_0x3a80f2){_0x3a80f2=_0x3a80f2||0xcc;return function(_0x33a0d7){if(_0x33a0d7){return _0x5905d7['sendStatus'](_0x3a80f2);}return _0x5905d7[_0x6182('0x17')](_0x3a80f2)[_0x6182('0x18')]();};}function respondWithResult(_0x12e3ab,_0xcc2961){_0xcc2961=_0xcc2961||0xc8;return function(_0x1e3e8b){if(_0x1e3e8b){return _0x12e3ab[_0x6182('0x17')](_0xcc2961)['json'](_0x1e3e8b);}};}function respondWithFilteredResult(_0x54ca0e,_0x4a65e3){return function(_0x21f1d4){if(_0x21f1d4){var _0x546006=typeof _0x4a65e3['offset']===_0x6182('0x19')&&typeof _0x4a65e3[_0x6182('0x1a')]===_0x6182('0x19');var _0x5da1d4=_0x21f1d4[_0x6182('0x1b')];var _0x24a237=_0x546006?0x0:_0x4a65e3[_0x6182('0x1c')];var _0x2dfd7a=_0x546006?_0x21f1d4['count']:_0x4a65e3[_0x6182('0x1c')]+_0x4a65e3['limit'];var _0x48d064;if(_0x2dfd7a>=_0x5da1d4){_0x2dfd7a=_0x5da1d4;_0x48d064=0xc8;}else{_0x48d064=0xce;}_0x54ca0e[_0x6182('0x17')](_0x48d064);return _0x54ca0e[_0x6182('0x1d')](_0x6182('0x1e'),_0x24a237+'-'+_0x2dfd7a+'/'+_0x5da1d4)[_0x6182('0x1f')](_0x21f1d4);}return null;};}function patchUpdates(_0x415cea){return function(_0x4eff92){try{jsonpatch[_0x6182('0x20')](_0x4eff92,_0x415cea,!![]);}catch(_0x37c6e9){return BPromise[_0x6182('0x21')](_0x37c6e9);}return _0x4eff92['save']();};}function saveUpdates(_0x2b8012,_0x91a641){return function(_0x2a73b5){if(_0x2a73b5){return _0x2a73b5['update'](_0x2b8012)['then'](function(_0x2dbf91){return _0x2dbf91;});}return null;};}function removeEntity(_0x791267,_0x3872ec){return function(_0x2b4dc4){if(_0x2b4dc4){return _0x2b4dc4[_0x6182('0x22')]()[_0x6182('0x23')](function(){var _0x1c1ffa=_0x2b4dc4[_0x6182('0x24')]({'plain':!![]});var _0x573190=_0x6182('0x25');return db[_0x6182('0x26')][_0x6182('0x22')]({'where':{'type':_0x573190,'resourceId':_0x1c1ffa['id']}})[_0x6182('0x23')](function(){return _0x2b4dc4;});})[_0x6182('0x23')](function(){_0x791267['status'](0xcc)[_0x6182('0x18')]();});}};}function handleEntityNotFound(_0xb7ce6e,_0x3e5211){return function(_0x451ff2){if(!_0x451ff2){_0xb7ce6e[_0x6182('0x27')](0x194);}return _0x451ff2;};}function handleError(_0x5457b2,_0x2add20){_0x2add20=_0x2add20||0x1f4;return function(_0x2b36cb){logger[_0x6182('0x28')](_0x2b36cb['stack']);if(_0x2b36cb[_0x6182('0x29')]){delete _0x2b36cb[_0x6182('0x29')];}_0x5457b2[_0x6182('0x17')](_0x2add20)['send'](_0x2b36cb);};}exports['index']=function(_0x56493b,_0x4980d1){var _0x3e104a={},_0x587cca={},_0x4f1f26={'count':0x0,'rows':[]};var _0x3d9e09=_[_0x6182('0x2a')](db['Trigger']['rawAttributes'],function(_0x1d2db6){return{'name':_0x1d2db6[_0x6182('0x2b')],'type':_0x1d2db6['type'][_0x6182('0x2c')]};});_0x587cca[_0x6182('0x2d')]=_['map'](_0x3d9e09,_0x6182('0x29'));_0x587cca[_0x6182('0x2e')]=_['keys'](_0x56493b['query']);_0x587cca[_0x6182('0x2f')]=_[_0x6182('0x30')](_0x587cca[_0x6182('0x2d')],_0x587cca['query']);_0x3e104a[_0x6182('0x31')]=_[_0x6182('0x30')](_0x587cca['model'],qs[_0x6182('0x32')](_0x56493b['query'][_0x6182('0x32')]));_0x3e104a[_0x6182('0x31')]=_0x3e104a[_0x6182('0x31')][_0x6182('0x33')]?_0x3e104a[_0x6182('0x31')]:_0x587cca[_0x6182('0x2d')];if(!_0x56493b['query'][_0x6182('0x34')](_0x6182('0x35'))){_0x3e104a[_0x6182('0x1a')]=qs[_0x6182('0x1a')](_0x56493b[_0x6182('0x2e')][_0x6182('0x1a')]);_0x3e104a[_0x6182('0x1c')]=qs[_0x6182('0x1c')](_0x56493b['query'][_0x6182('0x1c')]);}_0x3e104a[_0x6182('0x36')]=qs['sort'](_0x56493b[_0x6182('0x2e')][_0x6182('0x37')]);_0x3e104a[_0x6182('0x38')]=qs[_0x6182('0x2f')](_[_0x6182('0x39')](_0x56493b[_0x6182('0x2e')],_0x587cca['filters']),_0x3d9e09);if(_0x56493b[_0x6182('0x2e')]['filter']){_0x3e104a['where']=_['merge'](_0x3e104a[_0x6182('0x38')],{'$or':_[_0x6182('0x2a')](_0x3d9e09,function(_0x24004c){if(_0x24004c[_0x6182('0x3a')]!==_0x6182('0x3b')){var _0x3d1e96={};_0x3d1e96[_0x24004c[_0x6182('0x29')]]={'$like':'%'+_0x56493b[_0x6182('0x2e')][_0x6182('0x3c')]+'%'};return _0x3d1e96;}})});}_0x3e104a=_[_0x6182('0x3d')]({},_0x3e104a,_0x56493b[_0x6182('0x3e')]);var _0x4de3d7={'where':_0x3e104a[_0x6182('0x38')]};return db[_0x6182('0x3f')][_0x6182('0x1b')](_0x4de3d7)[_0x6182('0x23')](function(_0x37b21c){_0x4f1f26['count']=_0x37b21c;if(_0x56493b['query'][_0x6182('0x40')]){_0x3e104a[_0x6182('0x41')]=[{'all':!![]}];}return db[_0x6182('0x3f')][_0x6182('0x42')](_0x3e104a);})[_0x6182('0x23')](function(_0x230ad7){_0x4f1f26[_0x6182('0x43')]=_0x230ad7;return _0x4f1f26;})[_0x6182('0x23')](respondWithFilteredResult(_0x4980d1,_0x3e104a))[_0x6182('0x44')](handleError(_0x4980d1,null));};exports['show']=function(_0x1334fe,_0x3541f4){var _0x1ca0d4={'raw':![],'where':{'id':_0x1334fe[_0x6182('0x45')]['id']}},_0x2e3841={};_0x2e3841[_0x6182('0x2d')]=_[_0x6182('0x46')](db['Trigger'][_0x6182('0x47')]);_0x2e3841['query']=_['keys'](_0x1334fe['query']);_0x2e3841['filters']=_[_0x6182('0x30')](_0x2e3841[_0x6182('0x2d')],_0x2e3841[_0x6182('0x2e')]);_0x1ca0d4[_0x6182('0x31')]=_[_0x6182('0x30')](_0x2e3841[_0x6182('0x2d')],qs[_0x6182('0x32')](_0x1334fe['query'][_0x6182('0x32')]));_0x1ca0d4[_0x6182('0x31')]=_0x1ca0d4[_0x6182('0x31')]['length']?_0x1ca0d4[_0x6182('0x31')]:_0x2e3841['model'];if(_0x1334fe['query']['includeAll']){_0x1ca0d4['include']=[{'all':!![]}];}_0x1ca0d4=_['merge']({},_0x1ca0d4,_0x1334fe[_0x6182('0x3e')]);return db[_0x6182('0x3f')]['find'](_0x1ca0d4)[_0x6182('0x23')](handleEntityNotFound(_0x3541f4,null))[_0x6182('0x23')](respondWithResult(_0x3541f4,null))[_0x6182('0x44')](handleError(_0x3541f4,null));};exports['create']=function(_0x9115ce,_0x219c15){return db[_0x6182('0x3f')][_0x6182('0x48')](_0x9115ce[_0x6182('0x49')],{})[_0x6182('0x23')](function(_0x54bbd2){var _0xafaafa=_0x9115ce[_0x6182('0x4a')][_0x6182('0x24')]({'plain':!![]});if(!_0xafaafa)throw new Error(_0x6182('0x4b'));if(_0xafaafa['role']===_0x6182('0x4a')){var _0x56f3ae=_0x54bbd2[_0x6182('0x24')]({'plain':!![]});var _0x64a11c=_0x6182('0x25');return db[_0x6182('0x4c')][_0x6182('0x4d')]({'where':{'name':_0x64a11c,'userProfileId':_0xafaafa['userProfileId']},'raw':!![]})[_0x6182('0x23')](function(_0x4736ec){if(_0x4736ec&&_0x4736ec['autoAssociation']===0x0){return db[_0x6182('0x26')][_0x6182('0x48')]({'name':_0x56f3ae[_0x6182('0x29')],'resourceId':_0x56f3ae['id'],'type':_0x4736ec[_0x6182('0x29')],'sectionId':_0x4736ec['id']},{})[_0x6182('0x23')](function(){return _0x54bbd2;});}else{return _0x54bbd2;}})['catch'](function(_0x376a77){logger[_0x6182('0x28')](_0x6182('0x4e'),_0x376a77);throw _0x376a77;});}return _0x54bbd2;})[_0x6182('0x23')](respondWithResult(_0x219c15,0xc9))[_0x6182('0x44')](handleError(_0x219c15,null));};exports[_0x6182('0x4f')]=function(_0x1354fb,_0x180eea){if(_0x1354fb[_0x6182('0x49')]['id']){delete _0x1354fb[_0x6182('0x49')]['id'];}return db[_0x6182('0x3f')][_0x6182('0x4d')]({'where':{'id':_0x1354fb[_0x6182('0x45')]['id']}})[_0x6182('0x23')](handleEntityNotFound(_0x180eea,null))[_0x6182('0x23')](saveUpdates(_0x1354fb[_0x6182('0x49')],null))[_0x6182('0x23')](respondWithResult(_0x180eea,null))[_0x6182('0x44')](handleError(_0x180eea,null));};exports[_0x6182('0x22')]=function(_0x234710,_0x5019f7){return db[_0x6182('0x3f')][_0x6182('0x4d')]({'where':{'id':_0x234710[_0x6182('0x45')]['id']}})[_0x6182('0x23')](handleEntityNotFound(_0x5019f7,null))['then'](removeEntity(_0x5019f7,null))['catch'](handleError(_0x5019f7,null));};exports[_0x6182('0x50')]=function(_0x264f46,_0x467ae8,_0x1371ba){if(_0x264f46['body']['id']){delete _0x264f46[_0x6182('0x49')]['id'];}return db['Trigger'][_0x6182('0x4d')]({'where':{'id':_0x264f46[_0x6182('0x45')]['id']}})['then'](handleEntityNotFound(_0x467ae8,null))[_0x6182('0x23')](function(_0xdc3dd5){if(_0xdc3dd5){_0x264f46['body'][_0x6182('0x51')]=_0xdc3dd5['id'];return db[_0x6182('0x52')][_0x6182('0x48')](_0x264f46[_0x6182('0x49')]);}})['then'](respondWithResult(_0x467ae8,null))[_0x6182('0x44')](handleError(_0x467ae8,null));};exports[_0x6182('0x53')]=function(_0x33e06f,_0x13306e,_0x201261){if(_0x33e06f['body']['id']){delete _0x33e06f['body']['id'];}return db[_0x6182('0x3f')]['find']({'where':{'id':_0x33e06f['params']['id']}})[_0x6182('0x23')](handleEntityNotFound(_0x13306e,null))[_0x6182('0x23')](function(_0x5ee65f){if(_0x5ee65f){_0x33e06f[_0x6182('0x49')]['TriggerAnyId']=_0x5ee65f['id'];return db['Condition']['create'](_0x33e06f[_0x6182('0x49')]);}})['then'](respondWithResult(_0x13306e,null))[_0x6182('0x44')](handleError(_0x13306e,null));};exports[_0x6182('0x54')]=function(_0x4a1d25,_0x1827c2,_0x22441e){var _0x1cc9ce={};var _0x4d4fb6={};var _0x5b0fb3;var _0xdd0f14;return db[_0x6182('0x3f')][_0x6182('0x55')]({'where':{'id':_0x4a1d25[_0x6182('0x45')]['id']}})['then'](handleEntityNotFound(_0x1827c2,null))[_0x6182('0x23')](function(_0x267633){if(_0x267633){_0x5b0fb3=_0x267633;_0x4d4fb6[_0x6182('0x2d')]=_[_0x6182('0x46')](db[_0x6182('0x52')][_0x6182('0x47')]);_0x4d4fb6[_0x6182('0x2e')]=_[_0x6182('0x46')](_0x4a1d25[_0x6182('0x2e')]);_0x4d4fb6[_0x6182('0x2f')]=_['intersection'](_0x4d4fb6[_0x6182('0x2d')],_0x4d4fb6[_0x6182('0x2e')]);_0x1cc9ce[_0x6182('0x31')]=_[_0x6182('0x30')](_0x4d4fb6[_0x6182('0x2d')],qs[_0x6182('0x32')](_0x4a1d25[_0x6182('0x2e')][_0x6182('0x32')]));_0x1cc9ce[_0x6182('0x31')]=_0x1cc9ce[_0x6182('0x31')][_0x6182('0x33')]?_0x1cc9ce[_0x6182('0x31')]:_0x4d4fb6[_0x6182('0x2d')];_0x1cc9ce['order']=qs[_0x6182('0x37')](_0x4a1d25['query']['sort']);_0x1cc9ce[_0x6182('0x38')]=qs[_0x6182('0x2f')](_['pick'](_0x4a1d25[_0x6182('0x2e')],_0x4d4fb6[_0x6182('0x2f')]));if(_0x4a1d25['query'][_0x6182('0x3c')]){_0x1cc9ce['where']=_['merge'](_0x1cc9ce[_0x6182('0x38')],{'$or':_[_0x6182('0x2a')](_0x1cc9ce[_0x6182('0x31')],function(_0xed2c12){var _0x5c41ff={};_0x5c41ff[_0xed2c12]={'$like':'%'+_0x4a1d25['query'][_0x6182('0x3c')]+'%'};return _0x5c41ff;})});}_0x1cc9ce=_[_0x6182('0x3d')]({},_0x1cc9ce,_0x4a1d25[_0x6182('0x3e')]);return _0x5b0fb3['getAllConditions'](_0x1cc9ce);}})[_0x6182('0x23')](function(_0x2b393d){if(_0x2b393d){_0xdd0f14=_0x2b393d[_0x6182('0x33')];if(!_0x4a1d25[_0x6182('0x2e')][_0x6182('0x34')](_0x6182('0x35'))){_0x1cc9ce[_0x6182('0x1a')]=qs[_0x6182('0x1a')](_0x4a1d25[_0x6182('0x2e')][_0x6182('0x1a')]);_0x1cc9ce[_0x6182('0x1c')]=qs[_0x6182('0x1c')](_0x4a1d25[_0x6182('0x2e')]['offset']);}return _0x5b0fb3['getAllConditions'](_0x1cc9ce);}})['then'](function(_0x4cb3fe){if(_0x4cb3fe){return _0x4cb3fe?{'count':_0xdd0f14,'rows':_0x4cb3fe}:null;}})[_0x6182('0x23')](respondWithResult(_0x1827c2,null))[_0x6182('0x44')](handleError(_0x1827c2,null));};exports[_0x6182('0x56')]=function(_0x2261ba,_0x49e781,_0x457c2e){var _0x35f2f9={};var _0x2ddc6c={};var _0x1ffa96;var _0x55a48d;return db[_0x6182('0x3f')][_0x6182('0x55')]({'where':{'id':_0x2261ba[_0x6182('0x45')]['id']}})[_0x6182('0x23')](handleEntityNotFound(_0x49e781,null))[_0x6182('0x23')](function(_0x5b99f0){if(_0x5b99f0){_0x1ffa96=_0x5b99f0;_0x2ddc6c['model']=_[_0x6182('0x46')](db['Condition'][_0x6182('0x47')]);_0x2ddc6c[_0x6182('0x2e')]=_['keys'](_0x2261ba[_0x6182('0x2e')]);_0x2ddc6c[_0x6182('0x2f')]=_['intersection'](_0x2ddc6c['model'],_0x2ddc6c[_0x6182('0x2e')]);_0x35f2f9[_0x6182('0x31')]=_[_0x6182('0x30')](_0x2ddc6c[_0x6182('0x2d')],qs[_0x6182('0x32')](_0x2261ba[_0x6182('0x2e')][_0x6182('0x32')]));_0x35f2f9[_0x6182('0x31')]=_0x35f2f9[_0x6182('0x31')][_0x6182('0x33')]?_0x35f2f9[_0x6182('0x31')]:_0x2ddc6c[_0x6182('0x2d')];_0x35f2f9[_0x6182('0x36')]=qs['sort'](_0x2261ba[_0x6182('0x2e')][_0x6182('0x37')]);_0x35f2f9[_0x6182('0x38')]=qs[_0x6182('0x2f')](_[_0x6182('0x39')](_0x2261ba[_0x6182('0x2e')],_0x2ddc6c['filters']));if(_0x2261ba[_0x6182('0x2e')]['filter']){_0x35f2f9['where']=_[_0x6182('0x3d')](_0x35f2f9[_0x6182('0x38')],{'$or':_[_0x6182('0x2a')](_0x35f2f9[_0x6182('0x31')],function(_0x240112){var _0x56b01a={};_0x56b01a[_0x240112]={'$like':'%'+_0x2261ba[_0x6182('0x2e')][_0x6182('0x3c')]+'%'};return _0x56b01a;})});}_0x35f2f9=_[_0x6182('0x3d')]({},_0x35f2f9,_0x2261ba[_0x6182('0x3e')]);return _0x1ffa96[_0x6182('0x56')](_0x35f2f9);}})[_0x6182('0x23')](function(_0x415eab){if(_0x415eab){_0x55a48d=_0x415eab[_0x6182('0x33')];if(!_0x2261ba['query'][_0x6182('0x34')]('nolimit')){_0x35f2f9[_0x6182('0x1a')]=qs[_0x6182('0x1a')](_0x2261ba['query'][_0x6182('0x1a')]);_0x35f2f9[_0x6182('0x1c')]=qs[_0x6182('0x1c')](_0x2261ba[_0x6182('0x2e')][_0x6182('0x1c')]);}return _0x1ffa96[_0x6182('0x56')](_0x35f2f9);}})[_0x6182('0x23')](function(_0x5a8562){if(_0x5a8562){return _0x5a8562?{'count':_0x55a48d,'rows':_0x5a8562}:null;}})[_0x6182('0x23')](respondWithResult(_0x49e781,null))[_0x6182('0x44')](handleError(_0x49e781,null));};exports['addAction']=function(_0xaa75c4,_0x268c39,_0x1c7db1){if(_0xaa75c4['body']['id']){delete _0xaa75c4[_0x6182('0x49')]['id'];}return db[_0x6182('0x3f')][_0x6182('0x4d')]({'where':{'id':_0xaa75c4[_0x6182('0x45')]['id']}})['then'](handleEntityNotFound(_0x268c39,null))[_0x6182('0x23')](function(_0xd30774){if(_0xd30774){_0xaa75c4[_0x6182('0x49')][_0x6182('0x57')]=_0xd30774['id'];return db[_0x6182('0x58')]['create'](_0xaa75c4['body']);}})['then'](respondWithResult(_0x268c39,null))[_0x6182('0x44')](handleError(_0x268c39,null));};exports[_0x6182('0x59')]=function(_0x17b390,_0x445e15,_0x499fac){var _0x5c0a3a={};var _0x92fda9={};var _0x59927e;var _0x362b42;return db[_0x6182('0x3f')][_0x6182('0x55')]({'where':{'id':_0x17b390[_0x6182('0x45')]['id']}})[_0x6182('0x23')](handleEntityNotFound(_0x445e15,null))['then'](function(_0x36647f){if(_0x36647f){_0x59927e=_0x36647f;_0x92fda9[_0x6182('0x2d')]=_['keys'](db['Action'][_0x6182('0x47')]);_0x92fda9[_0x6182('0x2e')]=_[_0x6182('0x46')](_0x17b390[_0x6182('0x2e')]);_0x92fda9['filters']=_[_0x6182('0x30')](_0x92fda9[_0x6182('0x2d')],_0x92fda9['query']);_0x5c0a3a['attributes']=_['intersection'](_0x92fda9[_0x6182('0x2d')],qs[_0x6182('0x32')](_0x17b390[_0x6182('0x2e')][_0x6182('0x32')]));_0x5c0a3a[_0x6182('0x31')]=_0x5c0a3a['attributes'][_0x6182('0x33')]?_0x5c0a3a['attributes']:_0x92fda9[_0x6182('0x2d')];_0x5c0a3a['order']=qs['sort'](_0x17b390[_0x6182('0x2e')][_0x6182('0x37')]);_0x5c0a3a[_0x6182('0x38')]=qs[_0x6182('0x2f')](_[_0x6182('0x39')](_0x17b390[_0x6182('0x2e')],_0x92fda9['filters']));if(_0x17b390['query']['filter']){_0x5c0a3a['where']=_[_0x6182('0x3d')](_0x5c0a3a[_0x6182('0x38')],{'$or':_[_0x6182('0x2a')](_0x5c0a3a[_0x6182('0x31')],function(_0x4d3847){var _0x4efb83={};_0x4efb83[_0x4d3847]={'$like':'%'+_0x17b390['query'][_0x6182('0x3c')]+'%'};return _0x4efb83;})});}_0x5c0a3a=_['merge']({},_0x5c0a3a,_0x17b390[_0x6182('0x3e')]);return _0x59927e[_0x6182('0x59')](_0x5c0a3a);}})[_0x6182('0x23')](function(_0x8f9f30){if(_0x8f9f30){_0x362b42=_0x8f9f30[_0x6182('0x33')];if(!_0x17b390['query'][_0x6182('0x34')](_0x6182('0x35'))){_0x5c0a3a[_0x6182('0x1a')]=qs[_0x6182('0x1a')](_0x17b390[_0x6182('0x2e')][_0x6182('0x1a')]);_0x5c0a3a[_0x6182('0x1c')]=qs[_0x6182('0x1c')](_0x17b390[_0x6182('0x2e')][_0x6182('0x1c')]);}return _0x59927e[_0x6182('0x59')](_0x5c0a3a);}})[_0x6182('0x23')](function(_0x23593a){if(_0x23593a){return _0x23593a?{'count':_0x362b42,'rows':_0x23593a}:null;}})[_0x6182('0x23')](respondWithResult(_0x445e15,null))['catch'](handleError(_0x445e15,null));};
\ No newline at end of file
+var _0x1628=['include','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','pick','options','getAnyConditions','addAction','TriggerId','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','destroy','then','UserProfileResource','error','stack','name','index','map','Trigger','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','findAll','keys','length'];(function(_0x1c9c5c,_0x93beb8){var _0x5ad5c9=function(_0x302a56){while(--_0x302a56){_0x1c9c5c['push'](_0x1c9c5c['shift']());}};_0x5ad5c9(++_0x93beb8);}(_0x1628,0x19d));var _0x8162=function(_0x1e6e4e,_0x2b1b09){_0x1e6e4e=_0x1e6e4e-0x0;var _0x3d746b=_0x1628[_0x1e6e4e];return _0x3d746b;};'use strict';var emlformat=require(_0x8162('0x0'));var rimraf=require(_0x8162('0x1'));var zipdir=require(_0x8162('0x2'));var jsonpatch=require(_0x8162('0x3'));var rp=require(_0x8162('0x4'));var moment=require(_0x8162('0x5'));var BPromise=require(_0x8162('0x6'));var Mustache=require(_0x8162('0x7'));var util=require(_0x8162('0x8'));var path=require('path');var sox=require(_0x8162('0x9'));var csv=require(_0x8162('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8162('0xb'));var _=require(_0x8162('0xc'));var squel=require(_0x8162('0xd'));var crypto=require(_0x8162('0xe'));var jsforce=require(_0x8162('0xf'));var deskjs=require(_0x8162('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8162('0x11'));var Papa=require(_0x8162('0x12'));var Redis=require(_0x8162('0x13'));var authService=require(_0x8162('0x14'));var qs=require(_0x8162('0x15'));var as=require(_0x8162('0x16'));var hardwareService=require(_0x8162('0x17'));var logger=require(_0x8162('0x18'))(_0x8162('0x19'));var utils=require(_0x8162('0x1a'));var config=require(_0x8162('0x1b'));var licenseUtil=require(_0x8162('0x1c'));var db=require(_0x8162('0x1d'))['db'];function respondWithStatusCode(_0x198454,_0xcb78a6){_0xcb78a6=_0xcb78a6||0xcc;return function(_0x80044){if(_0x80044){return _0x198454[_0x8162('0x1e')](_0xcb78a6);}return _0x198454[_0x8162('0x1f')](_0xcb78a6)[_0x8162('0x20')]();};}function respondWithResult(_0x5e52c3,_0x5bcfd0){_0x5bcfd0=_0x5bcfd0||0xc8;return function(_0xee81){if(_0xee81){return _0x5e52c3['status'](_0x5bcfd0)['json'](_0xee81);}};}function respondWithFilteredResult(_0x2efef7,_0x5b923c){return function(_0x25a73a){if(_0x25a73a){var _0x6226f7=typeof _0x5b923c[_0x8162('0x21')]===_0x8162('0x22')&&typeof _0x5b923c[_0x8162('0x23')]==='undefined';var _0x3d5aee=_0x25a73a['count'];var _0x30e129=_0x6226f7?0x0:_0x5b923c[_0x8162('0x21')];var _0x37cbb3=_0x6226f7?_0x25a73a[_0x8162('0x24')]:_0x5b923c['offset']+_0x5b923c['limit'];var _0x4c6cbf;if(_0x37cbb3>=_0x3d5aee){_0x37cbb3=_0x3d5aee;_0x4c6cbf=0xc8;}else{_0x4c6cbf=0xce;}_0x2efef7[_0x8162('0x1f')](_0x4c6cbf);return _0x2efef7[_0x8162('0x25')](_0x8162('0x26'),_0x30e129+'-'+_0x37cbb3+'/'+_0x3d5aee)[_0x8162('0x27')](_0x25a73a);}return null;};}function patchUpdates(_0x38daa5){return function(_0x179ce1){try{jsonpatch['apply'](_0x179ce1,_0x38daa5,!![]);}catch(_0xf3aefe){return BPromise['reject'](_0xf3aefe);}return _0x179ce1['save']();};}function saveUpdates(_0x1aa507,_0x480056){return function(_0x310918){if(_0x310918){return _0x310918[_0x8162('0x28')](_0x1aa507)['then'](function(_0x46729c){return _0x46729c;});}return null;};}function removeEntity(_0x26ee72,_0x34f9ed){return function(_0x3f0423){if(_0x3f0423){return _0x3f0423[_0x8162('0x29')]()[_0x8162('0x2a')](function(){var _0x37aeb2=_0x3f0423['get']({'plain':!![]});var _0x235491='Triggers';return db[_0x8162('0x2b')]['destroy']({'where':{'type':_0x235491,'resourceId':_0x37aeb2['id']}})[_0x8162('0x2a')](function(){return _0x3f0423;});})[_0x8162('0x2a')](function(){_0x26ee72['status'](0xcc)[_0x8162('0x20')]();});}};}function handleEntityNotFound(_0x26ec01,_0x49f2bd){return function(_0x21f542){if(!_0x21f542){_0x26ec01[_0x8162('0x1e')](0x194);}return _0x21f542;};}function handleError(_0x585c41,_0xe87bc){_0xe87bc=_0xe87bc||0x1f4;return function(_0x203f83){logger[_0x8162('0x2c')](_0x203f83[_0x8162('0x2d')]);if(_0x203f83[_0x8162('0x2e')]){delete _0x203f83[_0x8162('0x2e')];}_0x585c41[_0x8162('0x1f')](_0xe87bc)['send'](_0x203f83);};}exports[_0x8162('0x2f')]=function(_0x4b25bf,_0x5846f){var _0x716188={},_0x4d0e05={},_0x314e65={'count':0x0,'rows':[]};var _0x459074=_[_0x8162('0x30')](db[_0x8162('0x31')][_0x8162('0x32')],function(_0xe7b923){return{'name':_0xe7b923[_0x8162('0x33')],'type':_0xe7b923[_0x8162('0x34')][_0x8162('0x35')]};});_0x4d0e05['model']=_[_0x8162('0x30')](_0x459074,_0x8162('0x2e'));_0x4d0e05[_0x8162('0x36')]=_['keys'](_0x4b25bf[_0x8162('0x36')]);_0x4d0e05[_0x8162('0x37')]=_[_0x8162('0x38')](_0x4d0e05[_0x8162('0x39')],_0x4d0e05['query']);_0x716188['attributes']=_['intersection'](_0x4d0e05[_0x8162('0x39')],qs['fields'](_0x4b25bf[_0x8162('0x36')][_0x8162('0x3a')]));_0x716188[_0x8162('0x3b')]=_0x716188[_0x8162('0x3b')]['length']?_0x716188[_0x8162('0x3b')]:_0x4d0e05[_0x8162('0x39')];if(!_0x4b25bf[_0x8162('0x36')][_0x8162('0x3c')](_0x8162('0x3d'))){_0x716188[_0x8162('0x23')]=qs['limit'](_0x4b25bf[_0x8162('0x36')]['limit']);_0x716188['offset']=qs[_0x8162('0x21')](_0x4b25bf[_0x8162('0x36')][_0x8162('0x21')]);}_0x716188[_0x8162('0x3e')]=qs[_0x8162('0x3f')](_0x4b25bf[_0x8162('0x36')][_0x8162('0x3f')]);_0x716188['where']=qs[_0x8162('0x37')](_['pick'](_0x4b25bf[_0x8162('0x36')],_0x4d0e05[_0x8162('0x37')]),_0x459074);if(_0x4b25bf[_0x8162('0x36')][_0x8162('0x40')]){_0x716188[_0x8162('0x41')]=_[_0x8162('0x42')](_0x716188[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0x459074,function(_0x3a3b5a){if(_0x3a3b5a[_0x8162('0x34')]!==_0x8162('0x43')){var _0x3ce76d={};_0x3ce76d[_0x3a3b5a[_0x8162('0x2e')]]={'$like':'%'+_0x4b25bf[_0x8162('0x36')][_0x8162('0x40')]+'%'};return _0x3ce76d;}})});}_0x716188=_['merge']({},_0x716188,_0x4b25bf['options']);var _0x3b2bab={'where':_0x716188[_0x8162('0x41')]};return db['Trigger']['count'](_0x3b2bab)['then'](function(_0x14b26b){_0x314e65[_0x8162('0x24')]=_0x14b26b;if(_0x4b25bf[_0x8162('0x36')][_0x8162('0x44')]){_0x716188['include']=[{'all':!![]}];}return db['Trigger'][_0x8162('0x45')](_0x716188);})['then'](function(_0xd4cd70){_0x314e65['rows']=_0xd4cd70;return _0x314e65;})[_0x8162('0x2a')](respondWithFilteredResult(_0x5846f,_0x716188))['catch'](handleError(_0x5846f,null));};exports['show']=function(_0x2d7761,_0x47870e){var _0x1f1ddd={'raw':![],'where':{'id':_0x2d7761['params']['id']}},_0x5077be={};_0x5077be[_0x8162('0x39')]=_[_0x8162('0x46')](db['Trigger']['rawAttributes']);_0x5077be[_0x8162('0x36')]=_[_0x8162('0x46')](_0x2d7761[_0x8162('0x36')]);_0x5077be[_0x8162('0x37')]=_[_0x8162('0x38')](_0x5077be[_0x8162('0x39')],_0x5077be[_0x8162('0x36')]);_0x1f1ddd['attributes']=_[_0x8162('0x38')](_0x5077be['model'],qs[_0x8162('0x3a')](_0x2d7761[_0x8162('0x36')][_0x8162('0x3a')]));_0x1f1ddd[_0x8162('0x3b')]=_0x1f1ddd['attributes'][_0x8162('0x47')]?_0x1f1ddd[_0x8162('0x3b')]:_0x5077be[_0x8162('0x39')];if(_0x2d7761[_0x8162('0x36')][_0x8162('0x44')]){_0x1f1ddd[_0x8162('0x48')]=[{'all':!![]}];}_0x1f1ddd=_[_0x8162('0x42')]({},_0x1f1ddd,_0x2d7761['options']);return db[_0x8162('0x31')][_0x8162('0x49')](_0x1f1ddd)[_0x8162('0x2a')](handleEntityNotFound(_0x47870e,null))[_0x8162('0x2a')](respondWithResult(_0x47870e,null))['catch'](handleError(_0x47870e,null));};exports[_0x8162('0x4a')]=function(_0x580e24,_0x1c70cf){return db['Trigger']['create'](_0x580e24[_0x8162('0x4b')],{})[_0x8162('0x2a')](function(_0x2b5994){var _0x2d44c5=_0x580e24['user'][_0x8162('0x4c')]({'plain':!![]});if(!_0x2d44c5)throw new Error(_0x8162('0x4d'));if(_0x2d44c5[_0x8162('0x4e')]==='user'){var _0x1b3ee3=_0x2b5994['get']({'plain':!![]});var _0x143ee1='Triggers';return db[_0x8162('0x4f')][_0x8162('0x49')]({'where':{'name':_0x143ee1,'userProfileId':_0x2d44c5[_0x8162('0x50')]},'raw':!![]})[_0x8162('0x2a')](function(_0x5f4000){if(_0x5f4000&&_0x5f4000['autoAssociation']===0x0){return db['UserProfileResource'][_0x8162('0x4a')]({'name':_0x1b3ee3['name'],'resourceId':_0x1b3ee3['id'],'type':_0x5f4000[_0x8162('0x2e')],'sectionId':_0x5f4000['id']},{})[_0x8162('0x2a')](function(){return _0x2b5994;});}else{return _0x2b5994;}})[_0x8162('0x51')](function(_0x13b30b){logger[_0x8162('0x2c')](_0x8162('0x52'),_0x13b30b);throw _0x13b30b;});}return _0x2b5994;})[_0x8162('0x2a')](respondWithResult(_0x1c70cf,0xc9))[_0x8162('0x51')](handleError(_0x1c70cf,null));};exports[_0x8162('0x28')]=function(_0x3d79da,_0x48b5e6){if(_0x3d79da[_0x8162('0x4b')]['id']){delete _0x3d79da[_0x8162('0x4b')]['id'];}return db['Trigger'][_0x8162('0x49')]({'where':{'id':_0x3d79da['params']['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x48b5e6,null))[_0x8162('0x2a')](saveUpdates(_0x3d79da[_0x8162('0x4b')],null))[_0x8162('0x2a')](respondWithResult(_0x48b5e6,null))['catch'](handleError(_0x48b5e6,null));};exports[_0x8162('0x29')]=function(_0xe4eef8,_0x4ef051){return db[_0x8162('0x31')][_0x8162('0x49')]({'where':{'id':_0xe4eef8[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x4ef051,null))[_0x8162('0x2a')](removeEntity(_0x4ef051,null))[_0x8162('0x51')](handleError(_0x4ef051,null));};exports[_0x8162('0x54')]=function(_0x21d1a8,_0x51247c,_0x1554ce){if(_0x21d1a8[_0x8162('0x4b')]['id']){delete _0x21d1a8[_0x8162('0x4b')]['id'];}return db[_0x8162('0x31')][_0x8162('0x49')]({'where':{'id':_0x21d1a8[_0x8162('0x53')]['id']}})['then'](handleEntityNotFound(_0x51247c,null))['then'](function(_0x5b74dc){if(_0x5b74dc){_0x21d1a8[_0x8162('0x4b')][_0x8162('0x55')]=_0x5b74dc['id'];return db[_0x8162('0x56')][_0x8162('0x4a')](_0x21d1a8['body']);}})['then'](respondWithResult(_0x51247c,null))[_0x8162('0x51')](handleError(_0x51247c,null));};exports[_0x8162('0x57')]=function(_0x580a68,_0x5a7511,_0x296618){if(_0x580a68[_0x8162('0x4b')]['id']){delete _0x580a68[_0x8162('0x4b')]['id'];}return db['Trigger'][_0x8162('0x49')]({'where':{'id':_0x580a68[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x5a7511,null))[_0x8162('0x2a')](function(_0x39cb1a){if(_0x39cb1a){_0x580a68['body'][_0x8162('0x58')]=_0x39cb1a['id'];return db[_0x8162('0x56')][_0x8162('0x4a')](_0x580a68[_0x8162('0x4b')]);}})[_0x8162('0x2a')](respondWithResult(_0x5a7511,null))[_0x8162('0x51')](handleError(_0x5a7511,null));};exports[_0x8162('0x59')]=function(_0x57aee9,_0x579b32,_0x5c4ba9){var _0xc93552={};var _0x10a771={};var _0x515313;var _0x260046;return db['Trigger'][_0x8162('0x5a')]({'where':{'id':_0x57aee9[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x579b32,null))[_0x8162('0x2a')](function(_0x3143cf){if(_0x3143cf){_0x515313=_0x3143cf;_0x10a771[_0x8162('0x39')]=_[_0x8162('0x46')](db[_0x8162('0x56')][_0x8162('0x32')]);_0x10a771[_0x8162('0x36')]=_[_0x8162('0x46')](_0x57aee9[_0x8162('0x36')]);_0x10a771[_0x8162('0x37')]=_[_0x8162('0x38')](_0x10a771[_0x8162('0x39')],_0x10a771[_0x8162('0x36')]);_0xc93552[_0x8162('0x3b')]=_[_0x8162('0x38')](_0x10a771[_0x8162('0x39')],qs[_0x8162('0x3a')](_0x57aee9[_0x8162('0x36')][_0x8162('0x3a')]));_0xc93552[_0x8162('0x3b')]=_0xc93552[_0x8162('0x3b')][_0x8162('0x47')]?_0xc93552[_0x8162('0x3b')]:_0x10a771[_0x8162('0x39')];_0xc93552[_0x8162('0x3e')]=qs[_0x8162('0x3f')](_0x57aee9['query'][_0x8162('0x3f')]);_0xc93552[_0x8162('0x41')]=qs['filters'](_[_0x8162('0x5b')](_0x57aee9[_0x8162('0x36')],_0x10a771[_0x8162('0x37')]));if(_0x57aee9[_0x8162('0x36')][_0x8162('0x40')]){_0xc93552['where']=_[_0x8162('0x42')](_0xc93552[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0xc93552[_0x8162('0x3b')],function(_0x36707d){var _0x440cf8={};_0x440cf8[_0x36707d]={'$like':'%'+_0x57aee9[_0x8162('0x36')][_0x8162('0x40')]+'%'};return _0x440cf8;})});}_0xc93552=_[_0x8162('0x42')]({},_0xc93552,_0x57aee9[_0x8162('0x5c')]);return _0x515313[_0x8162('0x59')](_0xc93552);}})[_0x8162('0x2a')](function(_0x46a1d9){if(_0x46a1d9){_0x260046=_0x46a1d9[_0x8162('0x47')];if(!_0x57aee9[_0x8162('0x36')][_0x8162('0x3c')](_0x8162('0x3d'))){_0xc93552['limit']=qs[_0x8162('0x23')](_0x57aee9[_0x8162('0x36')][_0x8162('0x23')]);_0xc93552[_0x8162('0x21')]=qs[_0x8162('0x21')](_0x57aee9[_0x8162('0x36')][_0x8162('0x21')]);}return _0x515313[_0x8162('0x59')](_0xc93552);}})['then'](function(_0x5b00aa){if(_0x5b00aa){return _0x5b00aa?{'count':_0x260046,'rows':_0x5b00aa}:null;}})[_0x8162('0x2a')](respondWithResult(_0x579b32,null))['catch'](handleError(_0x579b32,null));};exports[_0x8162('0x5d')]=function(_0x4d8366,_0x413fc8,_0x2ee4f9){var _0xd66567={};var _0x2220b3={};var _0x1f74fc;var _0x495cfe;return db['Trigger'][_0x8162('0x5a')]({'where':{'id':_0x4d8366['params']['id']}})['then'](handleEntityNotFound(_0x413fc8,null))['then'](function(_0x6a5acd){if(_0x6a5acd){_0x1f74fc=_0x6a5acd;_0x2220b3[_0x8162('0x39')]=_[_0x8162('0x46')](db[_0x8162('0x56')][_0x8162('0x32')]);_0x2220b3[_0x8162('0x36')]=_['keys'](_0x4d8366['query']);_0x2220b3[_0x8162('0x37')]=_[_0x8162('0x38')](_0x2220b3[_0x8162('0x39')],_0x2220b3[_0x8162('0x36')]);_0xd66567[_0x8162('0x3b')]=_[_0x8162('0x38')](_0x2220b3[_0x8162('0x39')],qs['fields'](_0x4d8366['query'][_0x8162('0x3a')]));_0xd66567['attributes']=_0xd66567['attributes'][_0x8162('0x47')]?_0xd66567[_0x8162('0x3b')]:_0x2220b3[_0x8162('0x39')];_0xd66567[_0x8162('0x3e')]=qs[_0x8162('0x3f')](_0x4d8366[_0x8162('0x36')]['sort']);_0xd66567['where']=qs[_0x8162('0x37')](_[_0x8162('0x5b')](_0x4d8366[_0x8162('0x36')],_0x2220b3[_0x8162('0x37')]));if(_0x4d8366[_0x8162('0x36')][_0x8162('0x40')]){_0xd66567['where']=_[_0x8162('0x42')](_0xd66567[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0xd66567[_0x8162('0x3b')],function(_0x1f62ad){var _0x225b48={};_0x225b48[_0x1f62ad]={'$like':'%'+_0x4d8366['query'][_0x8162('0x40')]+'%'};return _0x225b48;})});}_0xd66567=_['merge']({},_0xd66567,_0x4d8366[_0x8162('0x5c')]);return _0x1f74fc['getAnyConditions'](_0xd66567);}})[_0x8162('0x2a')](function(_0x2c5786){if(_0x2c5786){_0x495cfe=_0x2c5786[_0x8162('0x47')];if(!_0x4d8366['query'][_0x8162('0x3c')]('nolimit')){_0xd66567[_0x8162('0x23')]=qs['limit'](_0x4d8366['query']['limit']);_0xd66567[_0x8162('0x21')]=qs[_0x8162('0x21')](_0x4d8366[_0x8162('0x36')][_0x8162('0x21')]);}return _0x1f74fc[_0x8162('0x5d')](_0xd66567);}})['then'](function(_0x2282a1){if(_0x2282a1){return _0x2282a1?{'count':_0x495cfe,'rows':_0x2282a1}:null;}})['then'](respondWithResult(_0x413fc8,null))[_0x8162('0x51')](handleError(_0x413fc8,null));};exports[_0x8162('0x5e')]=function(_0x19714b,_0x3ced04,_0x2726c9){if(_0x19714b[_0x8162('0x4b')]['id']){delete _0x19714b[_0x8162('0x4b')]['id'];}return db['Trigger']['find']({'where':{'id':_0x19714b[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x3ced04,null))[_0x8162('0x2a')](function(_0x7f8fb5){if(_0x7f8fb5){_0x19714b[_0x8162('0x4b')][_0x8162('0x5f')]=_0x7f8fb5['id'];return db['Action'][_0x8162('0x4a')](_0x19714b[_0x8162('0x4b')]);}})[_0x8162('0x2a')](respondWithResult(_0x3ced04,null))[_0x8162('0x51')](handleError(_0x3ced04,null));};exports[_0x8162('0x60')]=function(_0x53ca44,_0x276cc7,_0x2bbf4b){var _0x5743d8={};var _0x1be05c={};var _0x5b7576;var _0x2577fe;return db[_0x8162('0x31')][_0x8162('0x5a')]({'where':{'id':_0x53ca44[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x276cc7,null))['then'](function(_0x5c6260){if(_0x5c6260){_0x5b7576=_0x5c6260;_0x1be05c[_0x8162('0x39')]=_[_0x8162('0x46')](db['Action']['rawAttributes']);_0x1be05c[_0x8162('0x36')]=_[_0x8162('0x46')](_0x53ca44[_0x8162('0x36')]);_0x1be05c[_0x8162('0x37')]=_[_0x8162('0x38')](_0x1be05c[_0x8162('0x39')],_0x1be05c[_0x8162('0x36')]);_0x5743d8['attributes']=_[_0x8162('0x38')](_0x1be05c[_0x8162('0x39')],qs[_0x8162('0x3a')](_0x53ca44[_0x8162('0x36')][_0x8162('0x3a')]));_0x5743d8[_0x8162('0x3b')]=_0x5743d8['attributes'][_0x8162('0x47')]?_0x5743d8['attributes']:_0x1be05c[_0x8162('0x39')];_0x5743d8['order']=qs[_0x8162('0x3f')](_0x53ca44[_0x8162('0x36')]['sort']);_0x5743d8[_0x8162('0x41')]=qs[_0x8162('0x37')](_[_0x8162('0x5b')](_0x53ca44[_0x8162('0x36')],_0x1be05c['filters']));if(_0x53ca44[_0x8162('0x36')][_0x8162('0x40')]){_0x5743d8['where']=_[_0x8162('0x42')](_0x5743d8[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0x5743d8[_0x8162('0x3b')],function(_0x4950ea){var _0xe65b73={};_0xe65b73[_0x4950ea]={'$like':'%'+_0x53ca44[_0x8162('0x36')][_0x8162('0x40')]+'%'};return _0xe65b73;})});}_0x5743d8=_[_0x8162('0x42')]({},_0x5743d8,_0x53ca44[_0x8162('0x5c')]);return _0x5b7576[_0x8162('0x60')](_0x5743d8);}})[_0x8162('0x2a')](function(_0x49a96e){if(_0x49a96e){_0x2577fe=_0x49a96e[_0x8162('0x47')];if(!_0x53ca44[_0x8162('0x36')][_0x8162('0x3c')]('nolimit')){_0x5743d8[_0x8162('0x23')]=qs['limit'](_0x53ca44['query'][_0x8162('0x23')]);_0x5743d8[_0x8162('0x21')]=qs[_0x8162('0x21')](_0x53ca44[_0x8162('0x36')][_0x8162('0x21')]);}return _0x5b7576[_0x8162('0x60')](_0x5743d8);}})['then'](function(_0x34724e){if(_0x34724e){return _0x34724e?{'count':_0x2577fe,'rows':_0x34724e}:null;}})[_0x8162('0x2a')](respondWithResult(_0x276cc7,null))[_0x8162('0x51')](handleError(_0x276cc7,null));};
\ No newline at end of file
index 64fa4fc..f230c13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f49=['util','api','moment','bluebird','path','rimraf','exports','Trigger','lodash'];(function(_0x6dca2d,_0x5c9cc){var _0x14e000=function(_0x30bd68){while(--_0x30bd68){_0x6dca2d['push'](_0x6dca2d['shift']());}};_0x14e000(++_0x5c9cc);}(_0x3f49,0x11f));var _0x93f4=function(_0x450a2d,_0x5c4673){_0x450a2d=_0x450a2d-0x0;var _0x39b4b6=_0x3f49[_0x450a2d];return _0x39b4b6;};'use strict';var _=require(_0x93f4('0x0'));var util=require(_0x93f4('0x1'));var logger=require('../../config/logger')(_0x93f4('0x2'));var moment=require(_0x93f4('0x3'));var BPromise=require(_0x93f4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x93f4('0x5'));var rimraf=require(_0x93f4('0x6'));var config=require('../../config/environment');var attributes=require('./trigger.attributes');module[_0x93f4('0x7')]=function(_0x38eb6c,_0x2dfdf7){return _0x38eb6c['define'](_0x93f4('0x8'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x43f3=['tools_triggers','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./trigger.attributes','define','Trigger'];(function(_0x52c553,_0x273e5a){var _0x425607=function(_0x25f443){while(--_0x25f443){_0x52c553['push'](_0x52c553['shift']());}};_0x425607(++_0x273e5a);}(_0x43f3,0xab));var _0x343f=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0x43f3[_0x30bd4d];return _0x306915;};'use strict';var _=require('lodash');var util=require(_0x343f('0x0'));var logger=require(_0x343f('0x1'))('api');var moment=require(_0x343f('0x2'));var BPromise=require('bluebird');var rp=require(_0x343f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x343f('0x4'));var config=require(_0x343f('0x5'));var attributes=require(_0x343f('0x6'));module['exports']=function(_0x2ec994,_0x693775){return _0x2ec994[_0x343f('0x7')](_0x343f('0x8'),attributes,{'tableName':_0x343f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b9cd39..0f7390e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8178=['Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','Trigger,\x20%s,\x20%s','message','result','catch','GetTrigger','Trigger','options','raw','attributes','limit','include','map','model','find','where','ShowTrigger','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug'];(function(_0x50e593,_0x3ae998){var _0x3821d0=function(_0x53c295){while(--_0x53c295){_0x50e593['push'](_0x50e593['shift']());}};_0x3821d0(++_0x3ae998);}(_0x8178,0x110));var _0x8817=function(_0x19f137,_0x69a6c5){_0x19f137=_0x19f137-0x0;var _0x13021f=_0x8178[_0x19f137];return _0x13021f;};'use strict';var _=require(_0x8817('0x0'));var util=require('util');var moment=require(_0x8817('0x1'));var BPromise=require(_0x8817('0x2'));var rs=require(_0x8817('0x3'));var fs=require('fs');var Redis=require(_0x8817('0x4'));var db=require(_0x8817('0x5'))['db'];var utils=require(_0x8817('0x6'));var logger=require('../../config/logger')(_0x8817('0x7'));var config=require(_0x8817('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8817('0x9')][_0x8817('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11034c,_0x3145b9,_0x5ca62e){return new BPromise(function(_0x4d11ce,_0x1a2b34){return client[_0x8817('0xb')](_0x11034c,_0x5ca62e)[_0x8817('0xc')](function(_0x14fdcb){logger[_0x8817('0xd')]('Trigger,\x20%s,\x20%s',_0x3145b9,_0x8817('0xe'));logger[_0x8817('0xf')](_0x8817('0x10'),_0x3145b9,_0x8817('0xe'),JSON[_0x8817('0x11')](_0x14fdcb));if(_0x14fdcb[_0x8817('0x12')]){if(_0x14fdcb[_0x8817('0x12')][_0x8817('0x13')]===0x1f4){logger[_0x8817('0x12')](_0x8817('0x14'),_0x3145b9,_0x14fdcb[_0x8817('0x12')][_0x8817('0x15')]);return _0x1a2b34(_0x14fdcb[_0x8817('0x12')]['message']);}logger[_0x8817('0x12')]('Trigger,\x20%s,\x20%s',_0x3145b9,_0x14fdcb[_0x8817('0x12')][_0x8817('0x15')]);return _0x4d11ce(_0x14fdcb[_0x8817('0x12')][_0x8817('0x15')]);}else{logger[_0x8817('0xd')]('Trigger,\x20%s,\x20%s',_0x3145b9,_0x8817('0xe'));_0x4d11ce(_0x14fdcb[_0x8817('0x16')][_0x8817('0x15')]);}})[_0x8817('0x17')](function(_0x1eb588){logger['error'](_0x8817('0x14'),_0x3145b9,_0x1eb588);_0x1a2b34(_0x1eb588);});});}exports[_0x8817('0x18')]=function(_0x85a66){var _0x60412=this;return new Promise(function(_0x17d75f,_0x5a798d){return db[_0x8817('0x19')]['findAll']({'raw':_0x85a66[_0x8817('0x1a')]?_0x85a66[_0x8817('0x1a')][_0x8817('0x1b')]===undefined?!![]:![]:!![],'where':_0x85a66['options']?_0x85a66[_0x8817('0x1a')]['where']||null:null,'attributes':_0x85a66[_0x8817('0x1a')]?_0x85a66['options'][_0x8817('0x1c')]||null:null,'limit':_0x85a66[_0x8817('0x1a')]?_0x85a66[_0x8817('0x1a')][_0x8817('0x1d')]||null:null,'include':_0x85a66[_0x8817('0x1a')]?_0x85a66[_0x8817('0x1a')][_0x8817('0x1e')]?_[_0x8817('0x1f')](_0x85a66[_0x8817('0x1a')][_0x8817('0x1e')],function(_0xdfa58f){return{'model':db[_0xdfa58f[_0x8817('0x20')]],'as':_0xdfa58f['as'],'attributes':_0xdfa58f[_0x8817('0x1c')],'include':_0xdfa58f[_0x8817('0x1e')]?_[_0x8817('0x1f')](_0xdfa58f[_0x8817('0x1e')],function(_0x586988){return{'model':db[_0x586988[_0x8817('0x20')]],'as':_0x586988['as'],'attributes':_0x586988[_0x8817('0x1c')],'include':_0x586988[_0x8817('0x1e')]?_[_0x8817('0x1f')](_0x586988[_0x8817('0x1e')],function(_0x58ada2){return{'model':db[_0x58ada2['model']],'as':_0x58ada2['as'],'attributes':_0x58ada2[_0x8817('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2ed2e9){logger[_0x8817('0xd')]('GetTrigger',_0x85a66);logger[_0x8817('0xf')](_0x8817('0x18'),_0x85a66,JSON[_0x8817('0x11')](_0x2ed2e9));_0x17d75f(_0x2ed2e9);})[_0x8817('0x17')](function(_0x1a567f){logger[_0x8817('0x12')](_0x8817('0x18'),_0x1a567f['message'],_0x85a66);_0x5a798d(_0x60412[_0x8817('0x12')](0x1f4,_0x1a567f['message']));});});};exports['ShowTrigger']=function(_0x3dc7ab){var _0x2fb80a=this;return new Promise(function(_0x5ba4dc,_0x5ec258){return db[_0x8817('0x19')][_0x8817('0x21')]({'raw':_0x3dc7ab[_0x8817('0x1a')]?_0x3dc7ab[_0x8817('0x1a')][_0x8817('0x1b')]===undefined?!![]:![]:!![],'where':_0x3dc7ab[_0x8817('0x1a')]?_0x3dc7ab[_0x8817('0x1a')][_0x8817('0x22')]||null:null,'attributes':_0x3dc7ab['options']?_0x3dc7ab[_0x8817('0x1a')][_0x8817('0x1c')]||null:null,'include':_0x3dc7ab[_0x8817('0x1a')]?_0x3dc7ab[_0x8817('0x1a')]['include']?_[_0x8817('0x1f')](_0x3dc7ab['options'][_0x8817('0x1e')],function(_0x269571){return{'model':db[_0x269571[_0x8817('0x20')]],'as':_0x269571['as'],'attributes':_0x269571['attributes'],'include':_0x269571[_0x8817('0x1e')]?_[_0x8817('0x1f')](_0x269571[_0x8817('0x1e')],function(_0x4ce820){return{'model':db[_0x4ce820['model']],'as':_0x4ce820['as'],'attributes':_0x4ce820[_0x8817('0x1c')],'include':_0x4ce820[_0x8817('0x1e')]?_['map'](_0x4ce820['include'],function(_0x31d6d1){return{'model':db[_0x31d6d1[_0x8817('0x20')]],'as':_0x31d6d1['as'],'attributes':_0x31d6d1[_0x8817('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8817('0xc')](function(_0x1ff53){logger[_0x8817('0xd')](_0x8817('0x23'),_0x3dc7ab);logger['debug'](_0x8817('0x23'),_0x3dc7ab,JSON[_0x8817('0x11')](_0x1ff53));_0x5ba4dc(_0x1ff53);})[_0x8817('0x17')](function(_0x179206){logger['error']('ShowTrigger',_0x179206[_0x8817('0x15')],_0x3dc7ab);_0x5ec258(_0x2fb80a[_0x8817('0x12')](0x1f4,_0x179206[_0x8817('0x15')]));});});};
\ No newline at end of file
+var _0x9e0e=['info','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Trigger,\x20%s,\x20%s','message','result','catch','Trigger','options','raw','where','attributes','limit','include','model','map','GetTrigger','ShowTrigger','find','stringify','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x54ea7a,_0x19df9b){var _0x65a10d=function(_0x1bf936){while(--_0x1bf936){_0x54ea7a['push'](_0x54ea7a['shift']());}};_0x65a10d(++_0x19df9b);}(_0x9e0e,0xa3));var _0xe9e0=function(_0x4beaa2,_0x4bf997){_0x4beaa2=_0x4beaa2-0x0;var _0x11490b=_0x9e0e[_0x4beaa2];return _0x11490b;};'use strict';var _=require(_0xe9e0('0x0'));var util=require(_0xe9e0('0x1'));var moment=require('moment');var BPromise=require(_0xe9e0('0x2'));var rs=require(_0xe9e0('0x3'));var fs=require('fs');var Redis=require(_0xe9e0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9e0('0x5'));var logger=require('../../config/logger')(_0xe9e0('0x6'));var config=require(_0xe9e0('0x7'));var jayson=require(_0xe9e0('0x8'));var client=jayson[_0xe9e0('0x9')][_0xe9e0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fa4d1,_0x1f98a1,_0x4c23a1){return new BPromise(function(_0x403963,_0x575f85){return client['request'](_0x2fa4d1,_0x4c23a1)[_0xe9e0('0xb')](function(_0x135b2c){logger[_0xe9e0('0xc')]('Trigger,\x20%s,\x20%s',_0x1f98a1,'request\x20sent');logger[_0xe9e0('0xd')](_0xe9e0('0xe'),_0x1f98a1,_0xe9e0('0xf'),JSON['stringify'](_0x135b2c));if(_0x135b2c['error']){if(_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x11')]===0x1f4){logger[_0xe9e0('0x10')](_0xe9e0('0x12'),_0x1f98a1,_0x135b2c['error']['message']);return _0x575f85(_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x13')]);}logger[_0xe9e0('0x10')](_0xe9e0('0x12'),_0x1f98a1,_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x13')]);return _0x403963(_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x13')]);}else{logger[_0xe9e0('0xc')](_0xe9e0('0x12'),_0x1f98a1,'request\x20sent');_0x403963(_0x135b2c[_0xe9e0('0x14')][_0xe9e0('0x13')]);}})[_0xe9e0('0x15')](function(_0x14fb78){logger[_0xe9e0('0x10')]('Trigger,\x20%s,\x20%s',_0x1f98a1,_0x14fb78);_0x575f85(_0x14fb78);});});}exports['GetTrigger']=function(_0x160b34){var _0x266cc7=this;return new Promise(function(_0x11746a,_0xee33fe){return db[_0xe9e0('0x16')]['findAll']({'raw':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x18')]===undefined?!![]:![]:!![],'where':_0x160b34['options']?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x19')]||null:null,'attributes':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1a')]||null:null,'limit':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1b')]||null:null,'include':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1c')]?_['map'](_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1c')],function(_0x5416f5){return{'model':db[_0x5416f5[_0xe9e0('0x1d')]],'as':_0x5416f5['as'],'attributes':_0x5416f5[_0xe9e0('0x1a')],'include':_0x5416f5[_0xe9e0('0x1c')]?_[_0xe9e0('0x1e')](_0x5416f5[_0xe9e0('0x1c')],function(_0x31750f){return{'model':db[_0x31750f['model']],'as':_0x31750f['as'],'attributes':_0x31750f[_0xe9e0('0x1a')],'include':_0x31750f[_0xe9e0('0x1c')]?_[_0xe9e0('0x1e')](_0x31750f[_0xe9e0('0x1c')],function(_0x44c387){return{'model':db[_0x44c387[_0xe9e0('0x1d')]],'as':_0x44c387['as'],'attributes':_0x44c387[_0xe9e0('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe9e0('0xb')](function(_0xe2a0ff){logger['info'](_0xe9e0('0x1f'),_0x160b34);logger[_0xe9e0('0xd')](_0xe9e0('0x1f'),_0x160b34,JSON['stringify'](_0xe2a0ff));_0x11746a(_0xe2a0ff);})[_0xe9e0('0x15')](function(_0x471f2e){logger[_0xe9e0('0x10')](_0xe9e0('0x1f'),_0x471f2e[_0xe9e0('0x13')],_0x160b34);_0xee33fe(_0x266cc7['error'](0x1f4,_0x471f2e[_0xe9e0('0x13')]));});});};exports[_0xe9e0('0x20')]=function(_0x2b17d4){var _0x2b8e25=this;return new Promise(function(_0x5ba6b3,_0x64ea99){return db[_0xe9e0('0x16')][_0xe9e0('0x21')]({'raw':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4[_0xe9e0('0x17')][_0xe9e0('0x18')]===undefined?!![]:![]:!![],'where':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4['options'][_0xe9e0('0x19')]||null:null,'attributes':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4[_0xe9e0('0x17')][_0xe9e0('0x1a')]||null:null,'include':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4[_0xe9e0('0x17')][_0xe9e0('0x1c')]?_[_0xe9e0('0x1e')](_0x2b17d4[_0xe9e0('0x17')]['include'],function(_0x20ce87){return{'model':db[_0x20ce87['model']],'as':_0x20ce87['as'],'attributes':_0x20ce87[_0xe9e0('0x1a')],'include':_0x20ce87[_0xe9e0('0x1c')]?_['map'](_0x20ce87[_0xe9e0('0x1c')],function(_0x1e1ce8){return{'model':db[_0x1e1ce8[_0xe9e0('0x1d')]],'as':_0x1e1ce8['as'],'attributes':_0x1e1ce8[_0xe9e0('0x1a')],'include':_0x1e1ce8['include']?_['map'](_0x1e1ce8[_0xe9e0('0x1c')],function(_0x587d09){return{'model':db[_0x587d09[_0xe9e0('0x1d')]],'as':_0x587d09['as'],'attributes':_0x587d09[_0xe9e0('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd52438){logger['info']('ShowTrigger',_0x2b17d4);logger[_0xe9e0('0xd')](_0xe9e0('0x20'),_0x2b17d4,JSON[_0xe9e0('0x22')](_0xd52438));_0x5ba6b3(_0xd52438);})[_0xe9e0('0x15')](function(_0x436fb6){logger[_0xe9e0('0x10')](_0xe9e0('0x20'),_0x436fb6[_0xe9e0('0x13')],_0x2b17d4);_0x64ea99(_0x2b8e25[_0xe9e0('0x10')](0x1f4,_0x436fb6[_0xe9e0('0x13')]));});});};
\ No newline at end of file
index 7efd93b..0c80e72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b40=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','/:id','show','post','/:id/clone'];(function(_0x4f4c2a,_0x5f5a28){var _0xd15be6=function(_0x1bc725){while(--_0x1bc725){_0x4f4c2a['push'](_0x4f4c2a['shift']());}};_0xd15be6(++_0x5f5a28);}(_0x1b40,0x1b6));var _0x01b4=function(_0x53d578,_0x4ca37f){_0x53d578=_0x53d578-0x0;var _0x5ce805=_0x1b40[_0x53d578];return _0x5ce805;};'use strict';var multer=require(_0x01b4('0x0'));var util=require(_0x01b4('0x1'));var path=require(_0x01b4('0x2'));var timeout=require(_0x01b4('0x3'));var express=require(_0x01b4('0x4'));var router=express[_0x01b4('0x5')]();var fs_extra=require(_0x01b4('0x6'));var auth=require(_0x01b4('0x7'));var interaction=require(_0x01b4('0x8'));var config=require(_0x01b4('0x9'));var controller=require(_0x01b4('0xa'));router[_0x01b4('0xb')]('/',auth[_0x01b4('0xc')](),controller[_0x01b4('0xd')]);router[_0x01b4('0xb')](_0x01b4('0xe'),auth[_0x01b4('0xc')](),controller[_0x01b4('0xf')]);router[_0x01b4('0x10')](_0x01b4('0x11'),auth[_0x01b4('0xc')](),controller['clone']);router[_0x01b4('0x10')]('/',auth[_0x01b4('0xc')](),controller[_0x01b4('0x12')]);router[_0x01b4('0x13')]('/:id',auth[_0x01b4('0xc')](),controller[_0x01b4('0x14')]);router[_0x01b4('0x15')]('/:id',auth[_0x01b4('0xc')](),controller[_0x01b4('0x16')]);module[_0x01b4('0x17')]=router;
\ No newline at end of file
+var _0xbff6=['/:id','show','/:id/clone','post','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index'];(function(_0x4d9443,_0xe0d01f){var _0x350586=function(_0x1e8783){while(--_0x1e8783){_0x4d9443['push'](_0x4d9443['shift']());}};_0x350586(++_0xe0d01f);}(_0xbff6,0xf3));var _0x6bff=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xbff6[_0x57b54c];return _0x59cc19;};'use strict';var multer=require('multer');var util=require(_0x6bff('0x0'));var path=require('path');var timeout=require(_0x6bff('0x1'));var express=require(_0x6bff('0x2'));var router=express[_0x6bff('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6bff('0x4'));var interaction=require(_0x6bff('0x5'));var config=require('../../config/environment');var controller=require('./trunk.controller');router[_0x6bff('0x6')]('/',auth[_0x6bff('0x7')](),controller[_0x6bff('0x8')]);router['get'](_0x6bff('0x9'),auth['isAuthenticated'](),controller[_0x6bff('0xa')]);router['post'](_0x6bff('0xb'),auth[_0x6bff('0x7')](),controller['clone']);router[_0x6bff('0xc')]('/',auth[_0x6bff('0x7')](),controller['create']);router[_0x6bff('0xd')](_0x6bff('0x9'),auth['isAuthenticated'](),controller[_0x6bff('0xe')]);router[_0x6bff('0xf')](_0x6bff('0x9'),auth[_0x6bff('0x7')](),controller[_0x6bff('0x10')]);module[_0x6bff('0x11')]=router;
\ No newline at end of file
index 793cfbb..f3d55fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f8=['ALLOWED_NOT_SCREENED','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','STRING','udp','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','nonat','force_rport,comedia','setDataValue','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','yes','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','INTEGER','always','accept','originate','uac','pai','fingerprint','certificate','passive','dynamic','update,nonat','BOOLEAN','sequelize','exports','name','ENUM','friend','user','from-voip-provider'];(function(_0x4748d1,_0x49d5dd){var _0x5082db=function(_0x846a49){while(--_0x846a49){_0x4748d1['push'](_0x4748d1['shift']());}};_0x5082db(++_0x49d5dd);}(_0x57f8,0xc1));var _0x857f=function(_0x124c75,_0x332013){_0x124c75=_0x124c75-0x0;var _0x5c5471=_0x57f8[_0x124c75];return _0x5c5471;};'use strict';var Sequelize=require(_0x857f('0x0'));module[_0x857f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x857f('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x4'),_0x857f('0x5'),'peer'),'allowNull':![],'defaultValue':_0x857f('0x4')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x857f('0x6')},'callingpres':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x7'),'ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN',_0x857f('0x8'),_0x857f('0x9'),_0x857f('0xa'),_0x857f('0xb'),_0x857f('0xc'))},'deny':{'type':Sequelize[_0x857f('0xd')]},'permit':{'type':Sequelize[_0x857f('0xd')]},'secret':{'type':Sequelize[_0x857f('0xd')]},'md5secret':{'type':Sequelize[_0x857f('0xd')]},'remotesecret':{'type':Sequelize[_0x857f('0xd')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0x857f('0xe'),'set':function(_0x7b7214){this['setDataValue'](_0x857f('0xf'),_0x7b7214?_0x7b7214['join'](','):null);},'get':function(){return this['getDataValue'](_0x857f('0xf'))?this[_0x857f('0x10')](_0x857f('0xf'))[_0x857f('0x11')](','):null;},'comment':_0x857f('0x12')},'dtmfmode':{'type':Sequelize[_0x857f('0x3')]('rfc2833',_0x857f('0x13'),_0x857f('0x14'),_0x857f('0x15'),_0x857f('0x16')),'defaultValue':_0x857f('0x17')},'directmedia':{'type':Sequelize[_0x857f('0x3')]('yes','no',_0x857f('0x18'),'update','outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x857f('0x3')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x857f('0xd')]},'directmediadeny':{'type':Sequelize[_0x857f('0xd')]},'nat':{'type':Sequelize[_0x857f('0xd')],'defaultValue':_0x857f('0x19'),'set':function(_0x4b0ec3){this[_0x857f('0x1a')](_0x857f('0x1b'),_0x4b0ec3?_0x4b0ec3[_0x857f('0x1c')](','):null);},'get':function(){return this[_0x857f('0x10')]('nat')?this[_0x857f('0x10')](_0x857f('0x1b'))['split'](','):null;},'comment':_0x857f('0x1d')},'callgroup':{'type':Sequelize[_0x857f('0xd')]},'namedcallgroup':{'type':Sequelize[_0x857f('0xd')]},'pickupgroup':{'type':Sequelize[_0x857f('0xd')]},'namedpickupgroup':{'type':Sequelize[_0x857f('0xd')]},'language':{'type':Sequelize[_0x857f('0xd')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0x857f('0xd')],'defaultValue':_0x857f('0x1e')},'allow':{'type':Sequelize[_0x857f('0xd')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x3435e7){this[_0x857f('0x1a')](_0x857f('0x1f'),_0x3435e7?_0x3435e7[_0x857f('0x1c')](';'):_0x857f('0x20'));},'get':function(){return this[_0x857f('0x10')](_0x857f('0x1f'))?this[_0x857f('0x10')]('allow')[_0x857f('0x11')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'insecure':{'type':Sequelize[_0x857f('0xd')],'defaultValue':_0x857f('0x22'),'set':function(_0xbb7f34){this[_0x857f('0x1a')](_0x857f('0x23'),_0xbb7f34?_0xbb7f34['join'](','):null);},'get':function(){return this[_0x857f('0x10')](_0x857f('0x23'))?this[_0x857f('0x10')](_0x857f('0x23'))['split'](','):null;},'comment':_0x857f('0x24')},'trustrpid':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x857f('0x21'),'no','never')},'promiscredir':{'type':Sequelize['ENUM'](_0x857f('0x21'),'no')},'useclientcode':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x857f('0xd')],'defaultValue':_0x857f('0x25')},'amaflags':{'type':Sequelize[_0x857f('0xd')]},'callcounter':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no'),'defaultValue':_0x857f('0x21')},'busylevel':{'type':Sequelize[_0x857f('0x26')](0xb)},'allowoverlap':{'type':Sequelize['ENUM']('yes','no')},'allowsubscribe':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'allowtransfer':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'ignoresdpversion':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'subscribecontext':{'type':Sequelize[_0x857f('0xd')]},'template':{'type':Sequelize[_0x857f('0xd')]},'videosupport':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no',_0x857f('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x857f('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x857f('0x3')]('yes','no')},'mailbox':{'type':Sequelize[_0x857f('0xd')]},'session_timers':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x28'),'refuse',_0x857f('0x29'))},'session_expires':{'type':Sequelize[_0x857f('0x26')](0xb)},'session_minse':{'type':Sequelize[_0x857f('0x26')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0x857f('0x2a'),'uas'),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0x857f('0xd')]},'fromdomain':{'type':Sequelize[_0x857f('0xd')]},'fromuser':{'type':Sequelize[_0x857f('0xd')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no'),'defaultValue':_0x857f('0x21')},'keepalive':{'type':Sequelize[_0x857f('0x26')](0xb)},'defaultip':{'type':Sequelize[_0x857f('0xd')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x857f('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x857f('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no',_0x857f('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x857f('0xd')]},'callbackextension':{'type':Sequelize[_0x857f('0xd')]},'timert1':{'type':Sequelize[_0x857f('0x26')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0x857f('0x26')](0xb)},'contactpermit':{'type':Sequelize[_0x857f('0xd')]},'contactdeny':{'type':Sequelize[_0x857f('0xd')]},'contactacl':{'type':Sequelize[_0x857f('0xd')]},'unsolicited_mailbox':{'type':Sequelize[_0x857f('0xd')]},'use_q850_reason':{'type':Sequelize[_0x857f('0xd')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'force_avp':{'type':Sequelize['ENUM']('yes','no')},'icesupport':{'type':Sequelize['ENUM'](_0x857f('0x21'),'no')},'dtlsenable':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'dtlsverify':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no',_0x857f('0x2c'),_0x857f('0x2d'))},'dtlsrekey':{'type':Sequelize[_0x857f('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0x857f('0xd')]},'dtlsprivatekey':{'type':Sequelize[_0x857f('0xd')]},'dtlscipher':{'type':Sequelize[_0x857f('0xd')]},'dtlscafile':{'type':Sequelize[_0x857f('0xd')]},'dtlscapath':{'type':Sequelize[_0x857f('0xd')]},'dtlssetup':{'type':Sequelize[_0x857f('0x3')]('active',_0x857f('0x2e'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x857f('0xd')]},'usereqphone':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x857f('0xd')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0x857f('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'subscribemwi':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x857f('0xd')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0x857f('0x2f')},'canreinvite':{'type':Sequelize[_0x857f('0x3')](_0x857f('0x21'),'no',_0x857f('0x18'),'update',_0x857f('0x30')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x857f('0xd')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x857f('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xfec1=['passive','dynamic','update,nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','setDataValue','getDataValue','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','INTEGER','always','accept','refuse','originate','uas','pai','certificate','active'];(function(_0x483fcc,_0x28ce51){var _0x354bf5=function(_0x4ca2ab){while(--_0x4ca2ab){_0x483fcc['push'](_0x483fcc['shift']());}};_0x354bf5(++_0x28ce51);}(_0xfec1,0xdc));var _0x1fec=function(_0x3ba9cd,_0x33adb2){_0x3ba9cd=_0x3ba9cd-0x0;var _0x1815d7=_0xfec1[_0x3ba9cd];return _0x1815d7;};'use strict';var Sequelize=require(_0x1fec('0x0'));module[_0x1fec('0x1')]={'name':{'type':Sequelize[_0x1fec('0x2')],'allowNull':![],'unique':_0x1fec('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x5'),_0x1fec('0x6'),_0x1fec('0x7')),'allowNull':![],'defaultValue':_0x1fec('0x5')},'context':{'type':Sequelize[_0x1fec('0x2')],'allowNull':![],'defaultValue':_0x1fec('0x8')},'callingpres':{'type':Sequelize['ENUM'](_0x1fec('0x9'),_0x1fec('0xa'),_0x1fec('0xb'),'ALLOWED',_0x1fec('0xc'),_0x1fec('0xd'),'PROHIB_FAILED_SCREEN',_0x1fec('0xe'))},'deny':{'type':Sequelize[_0x1fec('0x2')]},'permit':{'type':Sequelize[_0x1fec('0x2')]},'secret':{'type':Sequelize[_0x1fec('0x2')]},'md5secret':{'type':Sequelize[_0x1fec('0x2')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0xf'),'set':function(_0xdfe030){this[_0x1fec('0x10')]('transport',_0xdfe030?_0xdfe030['join'](','):null);},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x12'))?this[_0x1fec('0x11')]('transport')[_0x1fec('0x13')](','):null;},'comment':_0x1fec('0x14')},'dtmfmode':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x15'),_0x1fec('0x16'),_0x1fec('0x17'),_0x1fec('0x18'),_0x1fec('0x19')),'defaultValue':_0x1fec('0x15')},'directmedia':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no',_0x1fec('0x1b'),_0x1fec('0x1c'),_0x1fec('0x1d')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1fec('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0x1e'),'set':function(_0x16cccf){this[_0x1fec('0x10')](_0x1fec('0x1f'),_0x16cccf?_0x16cccf[_0x1fec('0x20')](','):null);},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x1f'))?this[_0x1fec('0x11')]('nat')[_0x1fec('0x13')](','):null;},'comment':_0x1fec('0x21')},'callgroup':{'type':Sequelize[_0x1fec('0x2')]},'namedcallgroup':{'type':Sequelize[_0x1fec('0x2')]},'pickupgroup':{'type':Sequelize[_0x1fec('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1fec('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0x22')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1fec('0x23'),'set':function(_0x58b83f){this[_0x1fec('0x10')]('allow',_0x58b83f?_0x58b83f[_0x1fec('0x20')](';'):_0x1fec('0x23'));},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x24'))?this[_0x1fec('0x11')](_0x1fec('0x24'))['split'](';'):null;},'comment':_0x1fec('0x25')},'autoframing':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x1fec('0x26'),'set':function(_0x252b78){this[_0x1fec('0x10')](_0x1fec('0x27'),_0x252b78?_0x252b78['join'](','):null);},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x27'))?this[_0x1fec('0x11')](_0x1fec('0x27'))[_0x1fec('0x13')](','):null;},'comment':_0x1fec('0x28')},'trustrpid':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no','never')},'promiscredir':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'useclientcode':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'accountcode':{'type':Sequelize[_0x1fec('0x29')](0xb)},'setvar':{'type':Sequelize[_0x1fec('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x1fec('0x2')]},'callcounter':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':_0x1fec('0x1a')},'busylevel':{'type':Sequelize[_0x1fec('0x29')](0xb)},'allowoverlap':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'allowsubscribe':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'allowtransfer':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'subscribecontext':{'type':Sequelize[_0x1fec('0x2')]},'template':{'type':Sequelize[_0x1fec('0x2')]},'videosupport':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no',_0x1fec('0x2a')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'mailbox':{'type':Sequelize[_0x1fec('0x2')]},'session_timers':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x2b'),_0x1fec('0x2c'),_0x1fec('0x2d'))},'session_expires':{'type':Sequelize[_0x1fec('0x29')](0xb)},'session_minse':{'type':Sequelize[_0x1fec('0x29')](0xb)},'session_refresher':{'type':Sequelize[_0x1fec('0x4')]('uac',_0x1fec('0x2e')),'defaultValue':_0x1fec('0x2e')},'t38pt_usertpsource':{'type':Sequelize[_0x1fec('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x1fec('0x2')]},'port':{'type':Sequelize[_0x1fec('0x29')](0x5)},'qualify':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':_0x1fec('0x1a')},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0x1fec('0x2')]},'defaultuser':{'type':Sequelize[_0x1fec('0x2')]},'rtptimeout':{'type':Sequelize[_0x1fec('0x29')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x1fec('0x29')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x1fec('0x29')](0xb)},'sendrpid':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no',_0x1fec('0x2f')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1fec('0x2')]},'callbackextension':{'type':Sequelize[_0x1fec('0x2')]},'timert1':{'type':Sequelize[_0x1fec('0x29')](0xb)},'timerb':{'type':Sequelize[_0x1fec('0x29')](0xb)},'qualifyfreq':{'type':Sequelize[_0x1fec('0x29')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x1fec('0x2')]},'contactacl':{'type':Sequelize[_0x1fec('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x1fec('0x2')]},'use_q850_reason':{'type':Sequelize[_0x1fec('0x2')]},'maxforwards':{'type':Sequelize[_0x1fec('0x29')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'force_avp':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'icesupport':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'dtlsenable':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'dtlsverify':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no','fingerprint',_0x1fec('0x30'))},'dtlsrekey':{'type':Sequelize[_0x1fec('0x29')](0xb)},'dtlscertfile':{'type':Sequelize[_0x1fec('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x1fec('0x2')]},'dtlscipher':{'type':Sequelize[_0x1fec('0x2')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0x1fec('0x2')]},'dtlssetup':{'type':Sequelize['ENUM'](_0x1fec('0x31'),_0x1fec('0x32'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1fec('0x2')]},'recordofffeature':{'type':Sequelize[_0x1fec('0x2')]},'call_limit':{'type':Sequelize[_0x1fec('0x29')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM']('yes','no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x1fec('0x1a'),'no')},'vmexten':{'type':Sequelize[_0x1fec('0x2')]},'mohinterpret':{'type':Sequelize[_0x1fec('0x2')]},'mohsuggest':{'type':Sequelize[_0x1fec('0x2')]},'parkinglot':{'type':Sequelize[_0x1fec('0x2')]},'description':{'type':Sequelize[_0x1fec('0x2')]},'host':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0x33')},'canreinvite':{'type':Sequelize[_0x1fec('0x4')]('yes','no',_0x1fec('0x1b'),_0x1fec('0x1c'),_0x1fec('0x34')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x1fec('0x2')]},'otherFields':{'type':Sequelize[_0x1fec('0x2')]},'active':{'type':Sequelize[_0x1fec('0x35')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 2c5a459..a0cd87e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['catch','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','get','UserProfileResource','end','stack','name','send','Trunk','rawAttributes','type','model','map','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','keys','length','options','find','clone','omit','updatedAt','body','createdAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','render','Reload','chan_sip.so','readFileSync','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x12d9d1,_0x11241c){var _0x2095da=function(_0x1243ef){while(--_0x1243ef){_0x12d9d1['push'](_0x12d9d1['shift']());}};_0x2095da(++_0x11241c);}(_0x55ca,0x126));var _0xa55c=function(_0x101ccf,_0x37e172){_0x101ccf=_0x101ccf-0x0;var _0x99b0f1=_0x55ca[_0x101ccf];return _0x99b0f1;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xa55c('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x576044,_0x5a3672,_0x59ea8d,_0x18ee85){return new BPromise(function(_0x3930e4,_0x462cd6){var _0x938bd6=_0x18ee85||client;return _0x938bd6[_0xa55c('0x19')](_0x576044,_0x59ea8d)[_0xa55c('0x1a')](function(_0x4e0b2f){logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,_0xa55c('0x1d'));logger[_0xa55c('0x1e')](_0xa55c('0x1f'),_0x5a3672,_0xa55c('0x1d'),JSON[_0xa55c('0x20')](_0x4e0b2f));if(_0x4e0b2f[_0xa55c('0x21')]){if(_0x4e0b2f[_0xa55c('0x21')]['code']===0x1f4){logger[_0xa55c('0x21')](_0xa55c('0x1c'),_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x462cd6(_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5a3672,_0x4e0b2f[_0xa55c('0x21')][_0xa55c('0x22')]);return _0x3930e4(_0x4e0b2f[_0xa55c('0x21')]['message']);}else{logger[_0xa55c('0x1b')](_0xa55c('0x1c'),_0x5a3672,'request\x20sent');_0x3930e4(_0x4e0b2f[_0xa55c('0x23')][_0xa55c('0x22')]);}})[_0xa55c('0x24')](function(_0x1965f1){logger[_0xa55c('0x21')]('Trunk,\x20%s,\x20%s',_0x5a3672,_0x1965f1);_0x462cd6(_0x1965f1);});});}function respondWithStatusCode(_0x1fc828,_0x504c24){_0x504c24=_0x504c24||0xcc;return function(_0x5ba836){if(_0x5ba836){return _0x1fc828['sendStatus'](_0x504c24);}return _0x1fc828[_0xa55c('0x25')](_0x504c24)['end']();};}function respondWithResult(_0x3ecbe7,_0x190757){_0x190757=_0x190757||0xc8;return function(_0x3f64de){if(_0x3f64de){return _0x3ecbe7[_0xa55c('0x25')](_0x190757)[_0xa55c('0x26')](_0x3f64de);}};}function respondWithFilteredResult(_0x170ba4,_0x1da633){return function(_0x11e7f7){if(_0x11e7f7){var _0x192df2=typeof _0x1da633[_0xa55c('0x27')]===_0xa55c('0x28')&&typeof _0x1da633['limit']===_0xa55c('0x28');var _0x28814f=_0x11e7f7[_0xa55c('0x29')];var _0x906caa=_0x192df2?0x0:_0x1da633['offset'];var _0x1377b0=_0x192df2?_0x11e7f7[_0xa55c('0x29')]:_0x1da633[_0xa55c('0x27')]+_0x1da633[_0xa55c('0x2a')];var _0x45ee8d;if(_0x1377b0>=_0x28814f){_0x1377b0=_0x28814f;_0x45ee8d=0xc8;}else{_0x45ee8d=0xce;}_0x170ba4[_0xa55c('0x25')](_0x45ee8d);return _0x170ba4['set'](_0xa55c('0x2b'),_0x906caa+'-'+_0x1377b0+'/'+_0x28814f)['json'](_0x11e7f7);}return null;};}function patchUpdates(_0x35c9c2){return function(_0x1d730b){try{jsonpatch[_0xa55c('0x2c')](_0x1d730b,_0x35c9c2,!![]);}catch(_0x223813){return BPromise['reject'](_0x223813);}return _0x1d730b[_0xa55c('0x2d')]();};}function saveUpdates(_0x2096ae,_0x331e58){return function(_0x20da31){if(_0x20da31){return _0x20da31[_0xa55c('0x2e')](_0x2096ae)[_0xa55c('0x1a')](function(_0x29748a){return _0x29748a;});}return null;};}function removeEntity(_0x24d44d,_0x2808e9){return function(_0xcbaf2e){if(_0xcbaf2e){return _0xcbaf2e[_0xa55c('0x2f')]()['then'](function(){var _0x54ca97=_0xcbaf2e[_0xa55c('0x30')]({'plain':!![]});var _0x19733e='Trunks';return db[_0xa55c('0x31')][_0xa55c('0x2f')]({'where':{'type':_0x19733e,'resourceId':_0x54ca97['id']}})[_0xa55c('0x1a')](function(){return _0xcbaf2e;});})[_0xa55c('0x1a')](function(){_0x24d44d[_0xa55c('0x25')](0xcc)[_0xa55c('0x32')]();});}};}function handleEntityNotFound(_0x3ce1b3,_0x222d4b){return function(_0x3959e3){if(!_0x3959e3){_0x3ce1b3['sendStatus'](0x194);}return _0x3959e3;};}function handleError(_0x5f3e99,_0x4b23d3){_0x4b23d3=_0x4b23d3||0x1f4;return function(_0x3fd75f){logger[_0xa55c('0x21')](_0x3fd75f[_0xa55c('0x33')]);if(_0x3fd75f['name']){delete _0x3fd75f[_0xa55c('0x34')];}_0x5f3e99['status'](_0x4b23d3)[_0xa55c('0x35')](_0x3fd75f);};}exports['index']=function(_0x18c6f1,_0x39267c){var _0x3c0ec1={},_0x4d3eb5={},_0x7c4a47={'count':0x0,'rows':[]};var _0x30f23b=_['map'](db[_0xa55c('0x36')][_0xa55c('0x37')],function(_0x4d9083){return{'name':_0x4d9083['fieldName'],'type':_0x4d9083[_0xa55c('0x38')]['key']};});_0x4d3eb5[_0xa55c('0x39')]=_[_0xa55c('0x3a')](_0x30f23b,'name');_0x4d3eb5['query']=_['keys'](_0x18c6f1['query']);_0x4d3eb5[_0xa55c('0x3b')]=_[_0xa55c('0x3c')](_0x4d3eb5[_0xa55c('0x39')],_0x4d3eb5[_0xa55c('0x3d')]);_0x3c0ec1[_0xa55c('0x3e')]=_['intersection'](_0x4d3eb5[_0xa55c('0x39')],qs[_0xa55c('0x3f')](_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x3f')]));_0x3c0ec1[_0xa55c('0x3e')]=_0x3c0ec1[_0xa55c('0x3e')]['length']?_0x3c0ec1[_0xa55c('0x3e')]:_0x4d3eb5['model'];if(!_0x18c6f1['query'][_0xa55c('0x40')](_0xa55c('0x41'))){_0x3c0ec1['limit']=qs[_0xa55c('0x2a')](_0x18c6f1['query']['limit']);_0x3c0ec1[_0xa55c('0x27')]=qs[_0xa55c('0x27')](_0x18c6f1[_0xa55c('0x3d')]['offset']);}_0x3c0ec1[_0xa55c('0x42')]=qs[_0xa55c('0x43')](_0x18c6f1['query'][_0xa55c('0x43')]);_0x3c0ec1['where']=qs[_0xa55c('0x3b')](_[_0xa55c('0x44')](_0x18c6f1['query'],_0x4d3eb5[_0xa55c('0x3b')]),_0x30f23b);if(_0x18c6f1[_0xa55c('0x3d')]['filter']){_0x3c0ec1[_0xa55c('0x45')]=_[_0xa55c('0x46')](_0x3c0ec1[_0xa55c('0x45')],{'$or':_['map'](_0x30f23b,function(_0x334f52){if(_0x334f52['type']!==_0xa55c('0x47')){var _0x3a8af4={};_0x3a8af4[_0x334f52[_0xa55c('0x34')]]={'$like':'%'+_0x18c6f1['query'][_0xa55c('0x48')]+'%'};return _0x3a8af4;}})});}_0x3c0ec1=_[_0xa55c('0x46')]({},_0x3c0ec1,_0x18c6f1['options']);var _0x3d19f5={'where':_0x3c0ec1[_0xa55c('0x45')]};return db['Trunk'][_0xa55c('0x29')](_0x3d19f5)[_0xa55c('0x1a')](function(_0x52f9a7){_0x7c4a47[_0xa55c('0x29')]=_0x52f9a7;if(_0x18c6f1[_0xa55c('0x3d')][_0xa55c('0x49')]){_0x3c0ec1[_0xa55c('0x4a')]=[{'all':!![]}];}return db['Trunk'][_0xa55c('0x4b')](_0x3c0ec1);})['then'](function(_0x2157d6){_0x7c4a47[_0xa55c('0x4c')]=_0x2157d6;return _0x7c4a47;})[_0xa55c('0x1a')](respondWithFilteredResult(_0x39267c,_0x3c0ec1))['catch'](handleError(_0x39267c,null));};exports[_0xa55c('0x4d')]=function(_0x250b00,_0x574fe9){var _0x5be06={'raw':![],'where':{'id':_0x250b00[_0xa55c('0x4e')]['id']}},_0x34de95={};_0x34de95[_0xa55c('0x39')]=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x34de95[_0xa55c('0x3d')]=_[_0xa55c('0x4f')](_0x250b00[_0xa55c('0x3d')]);_0x34de95['filters']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],_0x34de95[_0xa55c('0x3d')]);_0x5be06['attributes']=_[_0xa55c('0x3c')](_0x34de95[_0xa55c('0x39')],qs['fields'](_0x250b00[_0xa55c('0x3d')]['fields']));_0x5be06[_0xa55c('0x3e')]=_0x5be06[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x5be06[_0xa55c('0x3e')]:_0x34de95[_0xa55c('0x39')];if(_0x250b00['query'][_0xa55c('0x49')]){_0x5be06[_0xa55c('0x4a')]=[{'all':!![]}];}_0x5be06=_['merge']({},_0x5be06,_0x250b00[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x5be06)[_0xa55c('0x1a')](handleEntityNotFound(_0x574fe9,null))['then'](respondWithResult(_0x574fe9,null))['catch'](handleError(_0x574fe9,null));};exports[_0xa55c('0x53')]=function(_0x250dea,_0x3ca5b8){var _0x44ac57={'where':{'id':_0x250dea[_0xa55c('0x4e')]['id']}},_0x54cbde={};_0x54cbde['model']=_[_0xa55c('0x4f')](db[_0xa55c('0x36')][_0xa55c('0x37')]);_0x44ac57[_0xa55c('0x3e')]=_[_0xa55c('0x3c')](_0x54cbde['model'],qs[_0xa55c('0x3f')](_0x250dea['query'][_0xa55c('0x3f')]));_0x44ac57[_0xa55c('0x3e')]=_0x44ac57[_0xa55c('0x3e')][_0xa55c('0x50')]?_0x44ac57[_0xa55c('0x3e')]:_0x54cbde[_0xa55c('0x39')];if(_0x250dea[_0xa55c('0x3d')]['includeAll']){_0x44ac57[_0xa55c('0x4a')]=[{'all':!![]}];}_0x44ac57=_[_0xa55c('0x46')]({},_0x44ac57,_0x250dea[_0xa55c('0x51')]);return db[_0xa55c('0x36')][_0xa55c('0x52')](_0x44ac57)['then'](handleEntityNotFound(_0x3ca5b8,null))[_0xa55c('0x1a')](function(_0x3cd40d){if(_0x3cd40d){var _0x28bac4=_0x3cd40d[_0xa55c('0x30')]({'plain':!![]});_0x28bac4=qs[_0xa55c('0x54')](_0x28bac4,['id','createdAt',_0xa55c('0x55')]);_0x250dea[_0xa55c('0x56')]=_[_0xa55c('0x54')](_0x250dea[_0xa55c('0x56')],['id',_0xa55c('0x57'),'updatedAt']);return db[_0xa55c('0x36')]['create'](_[_0xa55c('0x46')](_0x28bac4,_0x250dea['body']),{'include':_0x250dea[_0xa55c('0x3d')]['includeAll']?[{'all':!![]}]:undefined})[_0xa55c('0x1a')](function(_0x1333da){var _0x21d6b4=_0x250dea[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x21d6b4)throw new Error(_0xa55c('0x59'));if(_0x21d6b4[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0x14b515=_0x1333da[_0xa55c('0x30')]({'plain':!![]});var _0x51c736=_0xa55c('0x5b');return db[_0xa55c('0x5c')]['find']({'where':{'name':_0x51c736,'userProfileId':_0x21d6b4[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x3e3b4b){if(_0x3e3b4b&&_0x3e3b4b[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')][_0xa55c('0x5f')]({'name':_0x14b515[_0xa55c('0x34')],'resourceId':_0x14b515['id'],'type':_0x3e3b4b[_0xa55c('0x34')],'sectionId':_0x3e3b4b['id']},{})['then'](function(){return _0x1333da;});}else{return _0x1333da;}})[_0xa55c('0x24')](function(_0x475131){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x475131);throw _0x475131;});}return _0x1333da;});}})[_0xa55c('0x1a')](respondWithResult(_0x3ca5b8,0xc9))[_0xa55c('0x24')](handleError(_0x3ca5b8,null));};exports[_0xa55c('0x5f')]=function(_0x4249c1,_0x25d5a1,_0x4a08ca){var _0x347562;return db[_0xa55c('0x36')][_0xa55c('0x5f')](_0x4249c1[_0xa55c('0x56')],{'raw':!![]})[_0xa55c('0x1a')](function(_0x10e711){_0x347562=_0x10e711;return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x3178a6){var _0x3bbc4b=fs['readFileSync'](path[_0xa55c('0x61')](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0x129bb4=fs['readFileSync'](path['join'](config[_0xa55c('0x64')],_0xa55c('0x65')),_0xa55c('0x63'));var _0x42529f=ejs['render'](_0x3bbc4b,{'trunks':_0x3178a6||[]});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x42529f);if(_0x347562[_0xa55c('0x68')]){var _0x3a9910=ejs[_0xa55c('0x69')](_0x129bb4,{'trunks':_0x3178a6||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x3a9910);}})[_0xa55c('0x1a')](function(){return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x5f'),{'module':_0xa55c('0x6b')});})[_0xa55c('0x1a')](function(){var _0x4b2032=_0x4249c1[_0xa55c('0x58')][_0xa55c('0x30')]({'plain':!![]});if(!_0x4b2032)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b2032[_0xa55c('0x5a')]===_0xa55c('0x58')){var _0xa340fb=_0x347562['get']({'plain':!![]});return db[_0xa55c('0x5c')][_0xa55c('0x52')]({'where':{'name':_0xa55c('0x5b'),'userProfileId':_0x4b2032[_0xa55c('0x5d')]},'raw':!![]})[_0xa55c('0x1a')](function(_0x506f74){if(_0x506f74&&_0x506f74[_0xa55c('0x5e')]===0x0){return db[_0xa55c('0x31')]['create']({'name':_0xa340fb['name'],'resourceId':_0xa340fb['id'],'type':_0x506f74[_0xa55c('0x34')],'sectionId':_0x506f74['id']},{})['then'](function(){return _0x347562;});}else{return _0x347562;}})[_0xa55c('0x24')](function(_0x5ca0bc){logger[_0xa55c('0x21')](_0xa55c('0x60'),_0x5ca0bc);throw _0x5ca0bc;});}return _0x347562;})[_0xa55c('0x1a')](respondWithResult(_0x25d5a1,0xc9))[_0xa55c('0x24')](handleError(_0x25d5a1,null));};exports[_0xa55c('0x2e')]=function(_0xff7b1c,_0x16dfc6,_0x5d8551){var _0x463195;return db[_0xa55c('0x36')][_0xa55c('0x52')]({'where':{'id':_0xff7b1c[_0xa55c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x16dfc6,null))[_0xa55c('0x1a')](saveUpdates(_0xff7b1c[_0xa55c('0x56')],null))[_0xa55c('0x1a')](function(_0x2298ac){if(_0x2298ac){_0x463195=_0x2298ac;return db['Trunk']['findAll']({'raw':!![]});}})[_0xa55c('0x1a')](function(_0x428872){if(_0x428872){var _0x12e3a8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x62')),_0xa55c('0x63'));var _0xd33c9c=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x65')),'utf8');var _0x19497b=ejs['render'](_0x12e3a8,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x19497b);var _0x36ded7=ejs[_0xa55c('0x69')](_0xd33c9c,{'trunks':_0x428872||[]});fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x36ded7);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2e'),{'module':_0xa55c('0x6b')});}return null;})[_0xa55c('0x1a')](function(_0x576a1b){if(_0x576a1b){return _0x463195;}})['then'](respondWithResult(_0x16dfc6,null))[_0xa55c('0x24')](handleError(_0x16dfc6,null));};exports[_0xa55c('0x2f')]=function(_0xc2ad5c,_0x256db0,_0x1622cb){var _0x137728;return db['Trunk'][_0xa55c('0x52')]({'where':{'id':_0xc2ad5c[_0xa55c('0x4e')]['id']}})[_0xa55c('0x1a')](handleEntityNotFound(_0x256db0,null))[_0xa55c('0x1a')](removeEntity(_0x256db0,null))[_0xa55c('0x1a')](function(){return db[_0xa55c('0x36')][_0xa55c('0x4b')]({'raw':!![]});})[_0xa55c('0x1a')](function(_0x58b670){var _0x25d09d=fs[_0xa55c('0x6c')](path[_0xa55c('0x61')](config[_0xa55c('0x64')],_0xa55c('0x62')),'utf8');var _0x2685d8=fs[_0xa55c('0x6c')](path['join'](config['root'],_0xa55c('0x65')),_0xa55c('0x63'));var _0x5c2229=ejs['render'](_0x25d09d,{'trunks':_0x58b670});var _0x579726=ejs['render'](_0x2685d8,{'trunks':_0x58b670});fs[_0xa55c('0x66')](_0xa55c('0x67'),_0x5c2229);fs[_0xa55c('0x66')](_0xa55c('0x6d'),_0x579726);return respondWithRpcPromise(_0xa55c('0x6a'),_0xa55c('0x2f'),{'module':'chan_sip.so'});})[_0xa55c('0x24')](handleError(_0x256db0,null));};
\ No newline at end of file
+var _0x425d=['readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','UserProfileSection','userProfileId','/etc/asterisk/sip_xcally_trunks.conf','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','Trunk,\x20%s,\x20%s','result','catch','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','stack','name','send','index','map','Trunk','rawAttributes','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','clone','find','omit','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8'];(function(_0x52ad5d,_0xd2b7e3){var _0x237e87=function(_0x2c4a87){while(--_0x2c4a87){_0x52ad5d['push'](_0x52ad5d['shift']());}};_0x237e87(++_0xd2b7e3);}(_0x425d,0x1e0));var _0xd425=function(_0x397c8d,_0xf0a1a4){_0x397c8d=_0x397c8d-0x0;var _0x1c5b0a=_0x425d[_0x397c8d];return _0x1c5b0a;};'use strict';var emlformat=require(_0xd425('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd425('0x1'));var jsonpatch=require(_0xd425('0x2'));var rp=require(_0xd425('0x3'));var moment=require(_0xd425('0x4'));var BPromise=require(_0xd425('0x5'));var Mustache=require(_0xd425('0x6'));var util=require(_0xd425('0x7'));var path=require('path');var sox=require(_0xd425('0x8'));var csv=require(_0xd425('0x9'));var ejs=require(_0xd425('0xa'));var fs=require('fs');var fs_extra=require(_0xd425('0xb'));var _=require(_0xd425('0xc'));var squel=require(_0xd425('0xd'));var crypto=require('crypto');var jsforce=require(_0xd425('0xe'));var deskjs=require(_0xd425('0xf'));var toCsv=require(_0xd425('0x9'));var querystring=require(_0xd425('0x10'));var Papa=require(_0xd425('0x11'));var Redis=require(_0xd425('0x12'));var authService=require(_0xd425('0x13'));var qs=require(_0xd425('0x14'));var as=require(_0xd425('0x15'));var hardwareService=require(_0xd425('0x16'));var logger=require(_0xd425('0x17'))(_0xd425('0x18'));var utils=require(_0xd425('0x19'));var config=require(_0xd425('0x1a'));var licenseUtil=require(_0xd425('0x1b'));var db=require(_0xd425('0x1c'))['db'];var jayson=require(_0xd425('0x1d'));var client=jayson[_0xd425('0x1e')][_0xd425('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x18eafb,_0x51263f,_0x27318c,_0x17a498){return new BPromise(function(_0x336dc3,_0x5d3d60){var _0x309263=_0x17a498||client;return _0x309263[_0xd425('0x20')](_0x18eafb,_0x27318c)[_0xd425('0x21')](function(_0x41f34d){logger[_0xd425('0x22')]('Trunk,\x20%s,\x20%s',_0x51263f,_0xd425('0x23'));logger[_0xd425('0x24')](_0xd425('0x25'),_0x51263f,_0xd425('0x23'),JSON['stringify'](_0x41f34d));if(_0x41f34d[_0xd425('0x26')]){if(_0x41f34d[_0xd425('0x26')][_0xd425('0x27')]===0x1f4){logger[_0xd425('0x26')]('Trunk,\x20%s,\x20%s',_0x51263f,_0x41f34d['error']['message']);return _0x5d3d60(_0x41f34d['error'][_0xd425('0x28')]);}logger[_0xd425('0x26')](_0xd425('0x29'),_0x51263f,_0x41f34d['error'][_0xd425('0x28')]);return _0x336dc3(_0x41f34d[_0xd425('0x26')]['message']);}else{logger[_0xd425('0x22')](_0xd425('0x29'),_0x51263f,_0xd425('0x23'));_0x336dc3(_0x41f34d[_0xd425('0x2a')][_0xd425('0x28')]);}})[_0xd425('0x2b')](function(_0x2480a0){logger[_0xd425('0x26')](_0xd425('0x29'),_0x51263f,_0x2480a0);_0x5d3d60(_0x2480a0);});});}function respondWithStatusCode(_0x2b030b,_0x151ad9){_0x151ad9=_0x151ad9||0xcc;return function(_0x40e84b){if(_0x40e84b){return _0x2b030b['sendStatus'](_0x151ad9);}return _0x2b030b[_0xd425('0x2c')](_0x151ad9)[_0xd425('0x2d')]();};}function respondWithResult(_0x398985,_0x1908a5){_0x1908a5=_0x1908a5||0xc8;return function(_0x2afcdb){if(_0x2afcdb){return _0x398985[_0xd425('0x2c')](_0x1908a5)[_0xd425('0x2e')](_0x2afcdb);}};}function respondWithFilteredResult(_0x577e4b,_0x12f951){return function(_0x177de2){if(_0x177de2){var _0x1d8861=typeof _0x12f951['offset']===_0xd425('0x2f')&&typeof _0x12f951[_0xd425('0x30')]===_0xd425('0x2f');var _0x999fb9=_0x177de2[_0xd425('0x31')];var _0x185d7e=_0x1d8861?0x0:_0x12f951[_0xd425('0x32')];var _0x37b63c=_0x1d8861?_0x177de2[_0xd425('0x31')]:_0x12f951[_0xd425('0x32')]+_0x12f951['limit'];var _0x471e3e;if(_0x37b63c>=_0x999fb9){_0x37b63c=_0x999fb9;_0x471e3e=0xc8;}else{_0x471e3e=0xce;}_0x577e4b[_0xd425('0x2c')](_0x471e3e);return _0x577e4b[_0xd425('0x33')](_0xd425('0x34'),_0x185d7e+'-'+_0x37b63c+'/'+_0x999fb9)[_0xd425('0x2e')](_0x177de2);}return null;};}function patchUpdates(_0x1abf33){return function(_0x47405f){try{jsonpatch[_0xd425('0x35')](_0x47405f,_0x1abf33,!![]);}catch(_0x3ec51b){return BPromise[_0xd425('0x36')](_0x3ec51b);}return _0x47405f[_0xd425('0x37')]();};}function saveUpdates(_0x5f3dab,_0x316493){return function(_0x2a2a9b){if(_0x2a2a9b){return _0x2a2a9b[_0xd425('0x38')](_0x5f3dab)[_0xd425('0x21')](function(_0x28870f){return _0x28870f;});}return null;};}function removeEntity(_0x4eddbc,_0x4aa168){return function(_0x3badcc){if(_0x3badcc){return _0x3badcc['destroy']()['then'](function(){var _0x51669d=_0x3badcc[_0xd425('0x39')]({'plain':!![]});var _0xfb0c8=_0xd425('0x3a');return db[_0xd425('0x3b')]['destroy']({'where':{'type':_0xfb0c8,'resourceId':_0x51669d['id']}})[_0xd425('0x21')](function(){return _0x3badcc;});})[_0xd425('0x21')](function(){_0x4eddbc[_0xd425('0x2c')](0xcc)[_0xd425('0x2d')]();});}};}function handleEntityNotFound(_0x27b9e2,_0x1e12f2){return function(_0x35bbec){if(!_0x35bbec){_0x27b9e2['sendStatus'](0x194);}return _0x35bbec;};}function handleError(_0x363fb0,_0x59b3d3){_0x59b3d3=_0x59b3d3||0x1f4;return function(_0x22df81){logger[_0xd425('0x26')](_0x22df81[_0xd425('0x3c')]);if(_0x22df81['name']){delete _0x22df81[_0xd425('0x3d')];}_0x363fb0[_0xd425('0x2c')](_0x59b3d3)[_0xd425('0x3e')](_0x22df81);};}exports[_0xd425('0x3f')]=function(_0x58f36d,_0x1d38fa){var _0x3cf540={},_0x59e326={},_0x5d310e={'count':0x0,'rows':[]};var _0x48fc85=_[_0xd425('0x40')](db[_0xd425('0x41')][_0xd425('0x42')],function(_0x588688){return{'name':_0x588688['fieldName'],'type':_0x588688['type'][_0xd425('0x43')]};});_0x59e326[_0xd425('0x44')]=_[_0xd425('0x40')](_0x48fc85,_0xd425('0x3d'));_0x59e326[_0xd425('0x45')]=_[_0xd425('0x46')](_0x58f36d[_0xd425('0x45')]);_0x59e326['filters']=_[_0xd425('0x47')](_0x59e326[_0xd425('0x44')],_0x59e326[_0xd425('0x45')]);_0x3cf540['attributes']=_[_0xd425('0x47')](_0x59e326[_0xd425('0x44')],qs[_0xd425('0x48')](_0x58f36d['query'][_0xd425('0x48')]));_0x3cf540[_0xd425('0x49')]=_0x3cf540[_0xd425('0x49')][_0xd425('0x4a')]?_0x3cf540['attributes']:_0x59e326[_0xd425('0x44')];if(!_0x58f36d[_0xd425('0x45')][_0xd425('0x4b')](_0xd425('0x4c'))){_0x3cf540[_0xd425('0x30')]=qs[_0xd425('0x30')](_0x58f36d[_0xd425('0x45')]['limit']);_0x3cf540[_0xd425('0x32')]=qs[_0xd425('0x32')](_0x58f36d['query'][_0xd425('0x32')]);}_0x3cf540['order']=qs['sort'](_0x58f36d[_0xd425('0x45')]['sort']);_0x3cf540[_0xd425('0x4d')]=qs['filters'](_[_0xd425('0x4e')](_0x58f36d[_0xd425('0x45')],_0x59e326[_0xd425('0x4f')]),_0x48fc85);if(_0x58f36d[_0xd425('0x45')][_0xd425('0x50')]){_0x3cf540['where']=_[_0xd425('0x51')](_0x3cf540['where'],{'$or':_[_0xd425('0x40')](_0x48fc85,function(_0x55a15d){if(_0x55a15d[_0xd425('0x52')]!==_0xd425('0x53')){var _0x3fd2ce={};_0x3fd2ce[_0x55a15d[_0xd425('0x3d')]]={'$like':'%'+_0x58f36d[_0xd425('0x45')]['filter']+'%'};return _0x3fd2ce;}})});}_0x3cf540=_[_0xd425('0x51')]({},_0x3cf540,_0x58f36d[_0xd425('0x54')]);var _0x35e77b={'where':_0x3cf540[_0xd425('0x4d')]};return db[_0xd425('0x41')]['count'](_0x35e77b)[_0xd425('0x21')](function(_0x177704){_0x5d310e[_0xd425('0x31')]=_0x177704;if(_0x58f36d[_0xd425('0x45')][_0xd425('0x55')]){_0x3cf540[_0xd425('0x56')]=[{'all':!![]}];}return db['Trunk'][_0xd425('0x57')](_0x3cf540);})[_0xd425('0x21')](function(_0x5bfac6){_0x5d310e[_0xd425('0x58')]=_0x5bfac6;return _0x5d310e;})[_0xd425('0x21')](respondWithFilteredResult(_0x1d38fa,_0x3cf540))[_0xd425('0x2b')](handleError(_0x1d38fa,null));};exports[_0xd425('0x59')]=function(_0x5c0219,_0x54f1d){var _0x2b8882={'raw':![],'where':{'id':_0x5c0219[_0xd425('0x5a')]['id']}},_0x4552cd={};_0x4552cd[_0xd425('0x44')]=_['keys'](db['Trunk'][_0xd425('0x42')]);_0x4552cd['query']=_[_0xd425('0x46')](_0x5c0219[_0xd425('0x45')]);_0x4552cd['filters']=_[_0xd425('0x47')](_0x4552cd['model'],_0x4552cd['query']);_0x2b8882[_0xd425('0x49')]=_[_0xd425('0x47')](_0x4552cd[_0xd425('0x44')],qs[_0xd425('0x48')](_0x5c0219[_0xd425('0x45')][_0xd425('0x48')]));_0x2b8882[_0xd425('0x49')]=_0x2b8882[_0xd425('0x49')]['length']?_0x2b8882[_0xd425('0x49')]:_0x4552cd[_0xd425('0x44')];if(_0x5c0219[_0xd425('0x45')][_0xd425('0x55')]){_0x2b8882[_0xd425('0x56')]=[{'all':!![]}];}_0x2b8882=_[_0xd425('0x51')]({},_0x2b8882,_0x5c0219[_0xd425('0x54')]);return db[_0xd425('0x41')]['find'](_0x2b8882)['then'](handleEntityNotFound(_0x54f1d,null))['then'](respondWithResult(_0x54f1d,null))[_0xd425('0x2b')](handleError(_0x54f1d,null));};exports[_0xd425('0x5b')]=function(_0x3dec61,_0x3c6b49){var _0x59c286={'where':{'id':_0x3dec61['params']['id']}},_0x4fedc0={};_0x4fedc0['model']=_[_0xd425('0x46')](db[_0xd425('0x41')]['rawAttributes']);_0x59c286[_0xd425('0x49')]=_[_0xd425('0x47')](_0x4fedc0[_0xd425('0x44')],qs['fields'](_0x3dec61['query'][_0xd425('0x48')]));_0x59c286['attributes']=_0x59c286['attributes']['length']?_0x59c286[_0xd425('0x49')]:_0x4fedc0[_0xd425('0x44')];if(_0x3dec61[_0xd425('0x45')]['includeAll']){_0x59c286[_0xd425('0x56')]=[{'all':!![]}];}_0x59c286=_['merge']({},_0x59c286,_0x3dec61[_0xd425('0x54')]);return db[_0xd425('0x41')][_0xd425('0x5c')](_0x59c286)[_0xd425('0x21')](handleEntityNotFound(_0x3c6b49,null))[_0xd425('0x21')](function(_0xd261a){if(_0xd261a){var _0xa21f7c=_0xd261a[_0xd425('0x39')]({'plain':!![]});_0xa21f7c=qs[_0xd425('0x5d')](_0xa21f7c,['id','createdAt',_0xd425('0x5e')]);_0x3dec61[_0xd425('0x5f')]=_[_0xd425('0x5d')](_0x3dec61[_0xd425('0x5f')],['id','createdAt','updatedAt']);return db[_0xd425('0x41')][_0xd425('0x60')](_[_0xd425('0x51')](_0xa21f7c,_0x3dec61[_0xd425('0x5f')]),{'include':_0x3dec61[_0xd425('0x45')][_0xd425('0x55')]?[{'all':!![]}]:undefined})[_0xd425('0x21')](function(_0x44782a){var _0x1fcde4=_0x3dec61[_0xd425('0x61')][_0xd425('0x39')]({'plain':!![]});if(!_0x1fcde4)throw new Error(_0xd425('0x62'));if(_0x1fcde4[_0xd425('0x63')]===_0xd425('0x61')){var _0x5e72db=_0x44782a[_0xd425('0x39')]({'plain':!![]});var _0x343cc1=_0xd425('0x3a');return db['UserProfileSection']['find']({'where':{'name':_0x343cc1,'userProfileId':_0x1fcde4['userProfileId']},'raw':!![]})[_0xd425('0x21')](function(_0x34d065){if(_0x34d065&&_0x34d065[_0xd425('0x64')]===0x0){return db['UserProfileResource'][_0xd425('0x60')]({'name':_0x5e72db['name'],'resourceId':_0x5e72db['id'],'type':_0x34d065[_0xd425('0x3d')],'sectionId':_0x34d065['id']},{})[_0xd425('0x21')](function(){return _0x44782a;});}else{return _0x44782a;}})[_0xd425('0x2b')](function(_0x5113fc){logger[_0xd425('0x26')](_0xd425('0x65'),_0x5113fc);throw _0x5113fc;});}return _0x44782a;});}})[_0xd425('0x21')](respondWithResult(_0x3c6b49,0xc9))[_0xd425('0x2b')](handleError(_0x3c6b49,null));};exports[_0xd425('0x60')]=function(_0x43b1a9,_0x38a762,_0x44db7f){var _0xcb1a64;return db[_0xd425('0x41')][_0xd425('0x60')](_0x43b1a9[_0xd425('0x5f')],{'raw':!![]})[_0xd425('0x21')](function(_0x285d54){_0xcb1a64=_0x285d54;return db[_0xd425('0x41')][_0xd425('0x57')]({'raw':!![]});})[_0xd425('0x21')](function(_0x25cae6){var _0x541218=fs['readFileSync'](path[_0xd425('0x66')](config['root'],_0xd425('0x67')),_0xd425('0x68'));var _0xb407bb=fs[_0xd425('0x69')](path['join'](config[_0xd425('0x6a')],_0xd425('0x6b')),_0xd425('0x68'));var _0x689332=ejs[_0xd425('0x6c')](_0x541218,{'trunks':_0x25cae6||[]});fs[_0xd425('0x6d')]('/etc/asterisk/sip_xcally_trunks.conf',_0x689332);if(_0xcb1a64['registry']){var _0x3ccffe=ejs[_0xd425('0x6c')](_0xb407bb,{'trunks':_0x25cae6||[]});fs['writeFileSync'](_0xd425('0x6e'),_0x3ccffe);}})['then'](function(){return respondWithRpcPromise(_0xd425('0x6f'),_0xd425('0x60'),{'module':_0xd425('0x70')});})[_0xd425('0x21')](function(){var _0x376134=_0x43b1a9[_0xd425('0x61')][_0xd425('0x39')]({'plain':!![]});if(!_0x376134)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x376134[_0xd425('0x63')]===_0xd425('0x61')){var _0x24af3=_0xcb1a64[_0xd425('0x39')]({'plain':!![]});return db[_0xd425('0x71')]['find']({'where':{'name':_0xd425('0x3a'),'userProfileId':_0x376134[_0xd425('0x72')]},'raw':!![]})['then'](function(_0x2bb36f){if(_0x2bb36f&&_0x2bb36f[_0xd425('0x64')]===0x0){return db['UserProfileResource'][_0xd425('0x60')]({'name':_0x24af3[_0xd425('0x3d')],'resourceId':_0x24af3['id'],'type':_0x2bb36f[_0xd425('0x3d')],'sectionId':_0x2bb36f['id']},{})[_0xd425('0x21')](function(){return _0xcb1a64;});}else{return _0xcb1a64;}})[_0xd425('0x2b')](function(_0x572f23){logger[_0xd425('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x572f23);throw _0x572f23;});}return _0xcb1a64;})[_0xd425('0x21')](respondWithResult(_0x38a762,0xc9))[_0xd425('0x2b')](handleError(_0x38a762,null));};exports['update']=function(_0x2bf8e6,_0xcf7b51,_0x66d87b){var _0x1fc64d;return db['Trunk']['find']({'where':{'id':_0x2bf8e6[_0xd425('0x5a')]['id']}})[_0xd425('0x21')](handleEntityNotFound(_0xcf7b51,null))[_0xd425('0x21')](saveUpdates(_0x2bf8e6['body'],null))[_0xd425('0x21')](function(_0xb1479e){if(_0xb1479e){_0x1fc64d=_0xb1479e;return db['Trunk'][_0xd425('0x57')]({'raw':!![]});}})['then'](function(_0x998ad1){if(_0x998ad1){var _0x46346c=fs[_0xd425('0x69')](path[_0xd425('0x66')](config['root'],'server/files/templates/trunk.ejs'),_0xd425('0x68'));var _0x413a65=fs['readFileSync'](path[_0xd425('0x66')](config[_0xd425('0x6a')],'server/files/templates/registry.ejs'),_0xd425('0x68'));var _0x369f8b=ejs[_0xd425('0x6c')](_0x46346c,{'trunks':_0x998ad1||[]});fs[_0xd425('0x6d')](_0xd425('0x73'),_0x369f8b);var _0xf251e6=ejs[_0xd425('0x6c')](_0x413a65,{'trunks':_0x998ad1||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0xf251e6);return respondWithRpcPromise(_0xd425('0x6f'),'update',{'module':_0xd425('0x70')});}return null;})[_0xd425('0x21')](function(_0x58cad5){if(_0x58cad5){return _0x1fc64d;}})[_0xd425('0x21')](respondWithResult(_0xcf7b51,null))[_0xd425('0x2b')](handleError(_0xcf7b51,null));};exports['destroy']=function(_0x592c40,_0x750685,_0x242ed8){var _0x16eac6;return db[_0xd425('0x41')][_0xd425('0x5c')]({'where':{'id':_0x592c40[_0xd425('0x5a')]['id']}})[_0xd425('0x21')](handleEntityNotFound(_0x750685,null))[_0xd425('0x21')](removeEntity(_0x750685,null))['then'](function(){return db[_0xd425('0x41')][_0xd425('0x57')]({'raw':!![]});})['then'](function(_0x2bbcf3){var _0x1d386c=fs[_0xd425('0x69')](path[_0xd425('0x66')](config[_0xd425('0x6a')],_0xd425('0x67')),_0xd425('0x68'));var _0x2c3995=fs[_0xd425('0x69')](path[_0xd425('0x66')](config[_0xd425('0x6a')],'server/files/templates/registry.ejs'),_0xd425('0x68'));var _0x498e81=ejs['render'](_0x1d386c,{'trunks':_0x2bbcf3});var _0x2c8d63=ejs['render'](_0x2c3995,{'trunks':_0x2bbcf3});fs[_0xd425('0x6d')](_0xd425('0x73'),_0x498e81);fs[_0xd425('0x6d')](_0xd425('0x6e'),_0x2c8d63);return respondWithRpcPromise(_0xd425('0x6f'),_0xd425('0x74'),{'module':_0xd425('0x70')});})['catch'](handleError(_0x750685,null));};
\ No newline at end of file
index 4f95609..972416e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3855=['request-promise','rimraf','../../config/environment','define','tools_trunks','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x1ccbcc,_0x5c948b){var _0x1e873f=function(_0x4f232e){while(--_0x4f232e){_0x1ccbcc['push'](_0x1ccbcc['shift']());}};_0x1e873f(++_0x5c948b);}(_0x3855,0x1d3));var _0x5385=function(_0x3b82a2,_0x231997){_0x3b82a2=_0x3b82a2-0x0;var _0x15c4ce=_0x3855[_0x3b82a2];return _0x15c4ce;};'use strict';var _=require(_0x5385('0x0'));var util=require(_0x5385('0x1'));var logger=require(_0x5385('0x2'))(_0x5385('0x3'));var moment=require(_0x5385('0x4'));var BPromise=require(_0x5385('0x5'));var rp=require(_0x5385('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5385('0x7'));var config=require(_0x5385('0x8'));var attributes=require('./trunk.attributes');module['exports']=function(_0x165940,_0x1a4503){return _0x165940[_0x5385('0x9')]('Trunk',attributes,{'tableName':_0x5385('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x48e2=['lodash','../../config/logger','moment','rimraf','./trunk.attributes','define','Trunk','tools_trunks'];(function(_0x51b661,_0x566ef8){var _0x5d1971=function(_0x5cc6b8){while(--_0x5cc6b8){_0x51b661['push'](_0x51b661['shift']());}};_0x5d1971(++_0x566ef8);}(_0x48e2,0xe8));var _0x248e=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x48e2[_0x122096];return _0x3d1966;};'use strict';var _=require(_0x248e('0x0'));var util=require('util');var logger=require(_0x248e('0x1'))('api');var moment=require(_0x248e('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x248e('0x3'));var config=require('../../config/environment');var attributes=require(_0x248e('0x4'));module['exports']=function(_0x195c43,_0x5e4a09){return _0x195c43[_0x248e('0x5')](_0x248e('0x6'),attributes,{'tableName':_0x248e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba38afc..2573305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fbe=['model','attributes','debug','ShowTrunk','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','Trunk,\x20%s,\x20%s','message','result','catch','GetTrunk','Trunk','options','raw','where','limit','include','map'];(function(_0x13f752,_0x221be5){var _0xff8a32=function(_0x475f59){while(--_0x475f59){_0x13f752['push'](_0x13f752['shift']());}};_0xff8a32(++_0x221be5);}(_0x5fbe,0xbe));var _0xe5fb=function(_0x9bdf3b,_0x2f78f0){_0x9bdf3b=_0x9bdf3b-0x0;var _0x1fd757=_0x5fbe[_0x9bdf3b];return _0x1fd757;};'use strict';var _=require(_0xe5fb('0x0'));var util=require(_0xe5fb('0x1'));var moment=require(_0xe5fb('0x2'));var BPromise=require(_0xe5fb('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe5fb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe5fb('0x5'))(_0xe5fb('0x6'));var config=require(_0xe5fb('0x7'));var jayson=require(_0xe5fb('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4e3e84,_0x4d2ad0,_0x3500e8){return new BPromise(function(_0x3773f9,_0x2d24ed){return client['request'](_0x4e3e84,_0x3500e8)[_0xe5fb('0x9')](function(_0x5f5a3e){logger[_0xe5fb('0xa')]('Trunk,\x20%s,\x20%s',_0x4d2ad0,_0xe5fb('0xb'));logger['debug'](_0xe5fb('0xc'),_0x4d2ad0,_0xe5fb('0xb'),JSON[_0xe5fb('0xd')](_0x5f5a3e));if(_0x5f5a3e['error']){if(_0x5f5a3e[_0xe5fb('0xe')]['code']===0x1f4){logger[_0xe5fb('0xe')](_0xe5fb('0xf'),_0x4d2ad0,_0x5f5a3e['error'][_0xe5fb('0x10')]);return _0x2d24ed(_0x5f5a3e[_0xe5fb('0xe')][_0xe5fb('0x10')]);}logger['error'](_0xe5fb('0xf'),_0x4d2ad0,_0x5f5a3e[_0xe5fb('0xe')][_0xe5fb('0x10')]);return _0x3773f9(_0x5f5a3e[_0xe5fb('0xe')][_0xe5fb('0x10')]);}else{logger['info'](_0xe5fb('0xf'),_0x4d2ad0,_0xe5fb('0xb'));_0x3773f9(_0x5f5a3e[_0xe5fb('0x11')][_0xe5fb('0x10')]);}})[_0xe5fb('0x12')](function(_0x4cf872){logger[_0xe5fb('0xe')](_0xe5fb('0xf'),_0x4d2ad0,_0x4cf872);_0x2d24ed(_0x4cf872);});});}exports[_0xe5fb('0x13')]=function(_0x22d596){var _0x2748dc=this;return new Promise(function(_0x4edfdc,_0x384872){return db[_0xe5fb('0x14')]['findAll']({'raw':_0x22d596[_0xe5fb('0x15')]?_0x22d596[_0xe5fb('0x15')][_0xe5fb('0x16')]===undefined?!![]:![]:!![],'where':_0x22d596['options']?_0x22d596['options'][_0xe5fb('0x17')]||null:null,'attributes':_0x22d596[_0xe5fb('0x15')]?_0x22d596[_0xe5fb('0x15')]['attributes']||null:null,'limit':_0x22d596[_0xe5fb('0x15')]?_0x22d596[_0xe5fb('0x15')][_0xe5fb('0x18')]||null:null,'include':_0x22d596[_0xe5fb('0x15')]?_0x22d596['options'][_0xe5fb('0x19')]?_[_0xe5fb('0x1a')](_0x22d596[_0xe5fb('0x15')][_0xe5fb('0x19')],function(_0x50e87e){return{'model':db[_0x50e87e[_0xe5fb('0x1b')]],'as':_0x50e87e['as'],'attributes':_0x50e87e[_0xe5fb('0x1c')],'include':_0x50e87e[_0xe5fb('0x19')]?_[_0xe5fb('0x1a')](_0x50e87e[_0xe5fb('0x19')],function(_0x112025){return{'model':db[_0x112025['model']],'as':_0x112025['as'],'attributes':_0x112025[_0xe5fb('0x1c')],'include':_0x112025[_0xe5fb('0x19')]?_['map'](_0x112025[_0xe5fb('0x19')],function(_0x514bf1){return{'model':db[_0x514bf1[_0xe5fb('0x1b')]],'as':_0x514bf1['as'],'attributes':_0x514bf1[_0xe5fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe5fb('0x9')](function(_0x4d5b26){logger[_0xe5fb('0xa')](_0xe5fb('0x13'),_0x22d596);logger[_0xe5fb('0x1d')](_0xe5fb('0x13'),_0x22d596,JSON['stringify'](_0x4d5b26));_0x4edfdc(_0x4d5b26);})['catch'](function(_0x56ea41){logger[_0xe5fb('0xe')]('GetTrunk',_0x56ea41[_0xe5fb('0x10')],_0x22d596);_0x384872(_0x2748dc[_0xe5fb('0xe')](0x1f4,_0x56ea41[_0xe5fb('0x10')]));});});};exports[_0xe5fb('0x1e')]=function(_0x50ca3a){var _0x2e0e4d=this;return new Promise(function(_0x1b1f85,_0x58a099){return db[_0xe5fb('0x14')]['find']({'raw':_0x50ca3a[_0xe5fb('0x15')]?_0x50ca3a[_0xe5fb('0x15')][_0xe5fb('0x16')]===undefined?!![]:![]:!![],'where':_0x50ca3a[_0xe5fb('0x15')]?_0x50ca3a[_0xe5fb('0x15')]['where']||null:null,'attributes':_0x50ca3a[_0xe5fb('0x15')]?_0x50ca3a[_0xe5fb('0x15')]['attributes']||null:null,'include':_0x50ca3a[_0xe5fb('0x15')]?_0x50ca3a[_0xe5fb('0x15')][_0xe5fb('0x19')]?_['map'](_0x50ca3a[_0xe5fb('0x15')][_0xe5fb('0x19')],function(_0x524a48){return{'model':db[_0x524a48['model']],'as':_0x524a48['as'],'attributes':_0x524a48[_0xe5fb('0x1c')],'include':_0x524a48[_0xe5fb('0x19')]?_[_0xe5fb('0x1a')](_0x524a48[_0xe5fb('0x19')],function(_0x2c1404){return{'model':db[_0x2c1404[_0xe5fb('0x1b')]],'as':_0x2c1404['as'],'attributes':_0x2c1404[_0xe5fb('0x1c')],'include':_0x2c1404[_0xe5fb('0x19')]?_[_0xe5fb('0x1a')](_0x2c1404[_0xe5fb('0x19')],function(_0x2f8a4e){return{'model':db[_0x2f8a4e[_0xe5fb('0x1b')]],'as':_0x2f8a4e['as'],'attributes':_0x2f8a4e[_0xe5fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe5fb('0x9')](function(_0x34f092){logger[_0xe5fb('0xa')](_0xe5fb('0x1e'),_0x50ca3a);logger[_0xe5fb('0x1d')]('ShowTrunk',_0x50ca3a,JSON[_0xe5fb('0xd')](_0x34f092));_0x1b1f85(_0x34f092);})['catch'](function(_0x3640fc){logger['error'](_0xe5fb('0x1e'),_0x3640fc['message'],_0x50ca3a);_0x58a099(_0x2e0e4d[_0xe5fb('0xe')](0x1f4,_0x3640fc['message']));});});};
\ No newline at end of file
+var _0x9c61=['error','Trunk,\x20%s,\x20%s','message','info','request\x20sent','result','catch','GetTrunk','Trunk','findAll','options','raw','where','limit','include','map','model','attributes','ShowTrunk','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x24e3d2,_0x1981ff){var _0x5d5c1c=function(_0xcf4910){while(--_0xcf4910){_0x24e3d2['push'](_0x24e3d2['shift']());}};_0x5d5c1c(++_0x1981ff);}(_0x9c61,0x145));var _0x19c6=function(_0x5a2291,_0x3ddda7){_0x5a2291=_0x5a2291-0x0;var _0x10e3f5=_0x9c61[_0x5a2291];return _0x10e3f5;};'use strict';var _=require(_0x19c6('0x0'));var util=require(_0x19c6('0x1'));var moment=require(_0x19c6('0x2'));var BPromise=require(_0x19c6('0x3'));var rs=require(_0x19c6('0x4'));var fs=require('fs');var Redis=require(_0x19c6('0x5'));var db=require(_0x19c6('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x19c6('0x7'))(_0x19c6('0x8'));var config=require('../../config/environment');var jayson=require(_0x19c6('0x9'));var client=jayson[_0x19c6('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35f18a,_0x2d03a3,_0x12f6f2){return new BPromise(function(_0x38bca4,_0x5d5c19){return client[_0x19c6('0xb')](_0x35f18a,_0x12f6f2)['then'](function(_0x4fb5ec){logger['info']('Trunk,\x20%s,\x20%s',_0x2d03a3,'request\x20sent');logger[_0x19c6('0xc')](_0x19c6('0xd'),_0x2d03a3,'request\x20sent',JSON[_0x19c6('0xe')](_0x4fb5ec));if(_0x4fb5ec[_0x19c6('0xf')]){if(_0x4fb5ec['error']['code']===0x1f4){logger[_0x19c6('0xf')](_0x19c6('0x10'),_0x2d03a3,_0x4fb5ec[_0x19c6('0xf')][_0x19c6('0x11')]);return _0x5d5c19(_0x4fb5ec[_0x19c6('0xf')][_0x19c6('0x11')]);}logger[_0x19c6('0xf')](_0x19c6('0x10'),_0x2d03a3,_0x4fb5ec[_0x19c6('0xf')][_0x19c6('0x11')]);return _0x38bca4(_0x4fb5ec[_0x19c6('0xf')]['message']);}else{logger[_0x19c6('0x12')](_0x19c6('0x10'),_0x2d03a3,_0x19c6('0x13'));_0x38bca4(_0x4fb5ec[_0x19c6('0x14')][_0x19c6('0x11')]);}})[_0x19c6('0x15')](function(_0x2c2700){logger['error'](_0x19c6('0x10'),_0x2d03a3,_0x2c2700);_0x5d5c19(_0x2c2700);});});}exports[_0x19c6('0x16')]=function(_0x4a9545){var _0x3c1077=this;return new Promise(function(_0x1ae27f,_0xc27f4e){return db[_0x19c6('0x17')][_0x19c6('0x18')]({'raw':_0x4a9545[_0x19c6('0x19')]?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1a')]===undefined?!![]:![]:!![],'where':_0x4a9545['options']?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1b')]||null:null,'attributes':_0x4a9545[_0x19c6('0x19')]?_0x4a9545[_0x19c6('0x19')]['attributes']||null:null,'limit':_0x4a9545['options']?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1c')]||null:null,'include':_0x4a9545[_0x19c6('0x19')]?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1d')]?_[_0x19c6('0x1e')](_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1d')],function(_0x27ed88){return{'model':db[_0x27ed88[_0x19c6('0x1f')]],'as':_0x27ed88['as'],'attributes':_0x27ed88[_0x19c6('0x20')],'include':_0x27ed88[_0x19c6('0x1d')]?_[_0x19c6('0x1e')](_0x27ed88[_0x19c6('0x1d')],function(_0xce5df6){return{'model':db[_0xce5df6[_0x19c6('0x1f')]],'as':_0xce5df6['as'],'attributes':_0xce5df6[_0x19c6('0x20')],'include':_0xce5df6[_0x19c6('0x1d')]?_['map'](_0xce5df6[_0x19c6('0x1d')],function(_0x166229){return{'model':db[_0x166229[_0x19c6('0x1f')]],'as':_0x166229['as'],'attributes':_0x166229['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5eff37){logger['info']('GetTrunk',_0x4a9545);logger[_0x19c6('0xc')](_0x19c6('0x16'),_0x4a9545,JSON[_0x19c6('0xe')](_0x5eff37));_0x1ae27f(_0x5eff37);})['catch'](function(_0x24a9fa){logger['error'](_0x19c6('0x16'),_0x24a9fa[_0x19c6('0x11')],_0x4a9545);_0xc27f4e(_0x3c1077['error'](0x1f4,_0x24a9fa[_0x19c6('0x11')]));});});};exports['ShowTrunk']=function(_0x17e1db){var _0x40c5a0=this;return new Promise(function(_0x5ee582,_0x2e7c46){return db[_0x19c6('0x17')]['find']({'raw':_0x17e1db['options']?_0x17e1db[_0x19c6('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x17e1db[_0x19c6('0x19')]?_0x17e1db[_0x19c6('0x19')][_0x19c6('0x1b')]||null:null,'attributes':_0x17e1db[_0x19c6('0x19')]?_0x17e1db[_0x19c6('0x19')][_0x19c6('0x20')]||null:null,'include':_0x17e1db[_0x19c6('0x19')]?_0x17e1db[_0x19c6('0x19')][_0x19c6('0x1d')]?_['map'](_0x17e1db[_0x19c6('0x19')]['include'],function(_0x3e282d){return{'model':db[_0x3e282d[_0x19c6('0x1f')]],'as':_0x3e282d['as'],'attributes':_0x3e282d['attributes'],'include':_0x3e282d['include']?_[_0x19c6('0x1e')](_0x3e282d[_0x19c6('0x1d')],function(_0x4d952c){return{'model':db[_0x4d952c[_0x19c6('0x1f')]],'as':_0x4d952c['as'],'attributes':_0x4d952c[_0x19c6('0x20')],'include':_0x4d952c[_0x19c6('0x1d')]?_[_0x19c6('0x1e')](_0x4d952c[_0x19c6('0x1d')],function(_0x1f0ef8){return{'model':db[_0x1f0ef8[_0x19c6('0x1f')]],'as':_0x1f0ef8['as'],'attributes':_0x1f0ef8[_0x19c6('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f44b8){logger[_0x19c6('0x12')](_0x19c6('0x21'),_0x17e1db);logger[_0x19c6('0xc')](_0x19c6('0x21'),_0x17e1db,JSON['stringify'](_0x1f44b8));_0x5ee582(_0x1f44b8);})['catch'](function(_0x27679d){logger[_0x19c6('0xf')](_0x19c6('0x21'),_0x27679d[_0x19c6('0x11')],_0x17e1db);_0x2e7c46(_0x40c5a0[_0x19c6('0xf')](0x1f4,_0x27679d['message']));});});};
\ No newline at end of file
index 5657780..dc750a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0562=['/:id/sms_accounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','removeChatInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','/:id/fax_accounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','/:id/avatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','getGroups','getRecordings','/:id/screen_recordings','/:id/chat/interactions','/:id/openchannel/interactions','/:id/mail/interactions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','create','/create_many','addQueues','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','file','addAvatar','/:id/login','login','/:id/logout','/:id/unpause','unpause','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addFaxAccounts'];(function(_0x7ed9e9,_0x35fb5d){var _0x383437=function(_0x496ea0){while(--_0x496ea0){_0x7ed9e9['push'](_0x7ed9e9['shift']());}};_0x383437(++_0x35fb5d);}(_0x0562,0x1de));var _0x2056=function(_0x2b5571,_0x1542da){_0x2b5571=_0x2b5571-0x0;var _0x220dc6=_0x0562[_0x2b5571];return _0x220dc6;};'use strict';var multer=require('multer');var util=require(_0x2056('0x0'));var path=require('path');var timeout=require(_0x2056('0x1'));var express=require('express');var router=express[_0x2056('0x2')]();var fs_extra=require(_0x2056('0x3'));var auth=require(_0x2056('0x4'));var interaction=require(_0x2056('0x5'));var config=require(_0x2056('0x6'));var controller=require(_0x2056('0x7'));router[_0x2056('0x8')]('/',auth[_0x2056('0x9')](),controller[_0x2056('0xa')]);router[_0x2056('0x8')](_0x2056('0xb'),auth[_0x2056('0x9')](),controller[_0x2056('0xc')]);router[_0x2056('0x8')](_0x2056('0xd'),auth[_0x2056('0x9')](),controller[_0x2056('0xe')]);router[_0x2056('0x8')](_0x2056('0xf'),auth[_0x2056('0x9')](),controller[_0x2056('0x10')]);router['get'](_0x2056('0x11'),auth[_0x2056('0x9')](),controller[_0x2056('0x12')]);router[_0x2056('0x8')](_0x2056('0x13'),controller['getAvatar']);router[_0x2056('0x8')](_0x2056('0x14'),auth[_0x2056('0x9')](),controller[_0x2056('0x15')]);router['get'](_0x2056('0x16'),auth[_0x2056('0x9')](),controller[_0x2056('0x17')]);router[_0x2056('0x8')](_0x2056('0x18'),auth['isAuthenticated'](),controller[_0x2056('0x19')]);router[_0x2056('0x8')](_0x2056('0x1a'),auth[_0x2056('0x9')](),controller[_0x2056('0x1b')]);router[_0x2056('0x8')]('/:id/groups',auth['isAuthenticated'](),controller[_0x2056('0x1c')]);router['get']('/:id/recordings',auth[_0x2056('0x9')](),controller[_0x2056('0x1d')]);router['get'](_0x2056('0x1e'),auth[_0x2056('0x9')](),controller['getScreenRecordings']);router[_0x2056('0x8')](_0x2056('0x1f'),auth['isAuthenticated'](),controller['getChatInteractions']);router[_0x2056('0x8')](_0x2056('0x20'),auth[_0x2056('0x9')](),controller['getOpenchannelInteractions']);router[_0x2056('0x8')](_0x2056('0x21'),auth[_0x2056('0x9')](),controller['getMailInteractions']);router['get'](_0x2056('0x22'),auth[_0x2056('0x9')](),controller[_0x2056('0x23')]);router['get'](_0x2056('0x24'),auth[_0x2056('0x9')](),controller[_0x2056('0x25')]);router['get']('/:id/whatsapp/interactions',auth[_0x2056('0x9')](),controller[_0x2056('0x26')]);router['get'](_0x2056('0x27'),auth[_0x2056('0x9')](),controller[_0x2056('0x28')]);router[_0x2056('0x8')](_0x2056('0x29'),auth[_0x2056('0x9')](),controller[_0x2056('0x2a')]);router[_0x2056('0x8')](_0x2056('0x2b'),auth[_0x2056('0x9')](),controller[_0x2056('0x2c')]);router[_0x2056('0x8')](_0x2056('0x2d'),auth[_0x2056('0x9')](),controller['getVoicePrefixes']);router['get']('/:id/fax_accounts',auth[_0x2056('0x9')](),controller[_0x2056('0x2e')]);router[_0x2056('0x8')](_0x2056('0x2f'),auth[_0x2056('0x9')](),controller['getMailAccounts']);router['get'](_0x2056('0x30'),auth[_0x2056('0x9')](),controller[_0x2056('0x31')]);router[_0x2056('0x8')]('/:id/sms_accounts',auth[_0x2056('0x9')](),controller[_0x2056('0x32')]);router[_0x2056('0x8')](_0x2056('0x33'),auth[_0x2056('0x9')](),controller[_0x2056('0x34')]);router[_0x2056('0x8')](_0x2056('0x35'),auth[_0x2056('0x9')](),controller[_0x2056('0x36')]);router[_0x2056('0x8')](_0x2056('0x37'),auth[_0x2056('0x9')](),controller['getSquareProjects']);router[_0x2056('0x8')](_0x2056('0x38'),auth[_0x2056('0x9')](),controller[_0x2056('0x39')]);router['get'](_0x2056('0x3a'),auth[_0x2056('0x9')](),controller[_0x2056('0x3b')]);router[_0x2056('0x3c')](_0x2056('0x16'),auth[_0x2056('0x9')](),controller['addContacts']);router[_0x2056('0x3c')]('/',auth['isAuthenticated'](),controller[_0x2056('0x3d')]);router[_0x2056('0x3c')](_0x2056('0x3e'),auth[_0x2056('0x9')](),controller['bulkCreate']);router[_0x2056('0x3c')]('/:id/queues',auth['isAuthenticated'](),controller[_0x2056('0x3f')]);var upload=multer({'storage':multer[_0x2056('0x40')]({'destination':function(_0x1a5935,_0x3e7f30,_0x506e95){_0x506e95(null,path[_0x2056('0x41')](config[_0x2056('0x42')],_0x2056('0x43')));},'filename':function(_0x95e798,_0x281e55,_0x37f905){_0x37f905(null,util['format'](_0x2056('0x44'),Date[_0x2056('0x45')](),_0x281e55[_0x2056('0x46')]));}})});router[_0x2056('0x3c')](_0x2056('0x13'),upload['single'](_0x2056('0x47')),controller[_0x2056('0x48')]);router[_0x2056('0x3c')](_0x2056('0x49'),auth[_0x2056('0x9')](),controller[_0x2056('0x4a')]);router[_0x2056('0x3c')](_0x2056('0x4b'),auth[_0x2056('0x9')](),controller['logout']);router['post']('/:id/pause',auth['isAuthenticated'](),controller['pause']);router[_0x2056('0x3c')](_0x2056('0x4c'),auth[_0x2056('0x9')](),controller[_0x2056('0x4d')]);router['post'](_0x2056('0x27'),auth[_0x2056('0x9')](),controller['addTeams']);router[_0x2056('0x3c')]('/:id/chat_interactions',auth[_0x2056('0x9')](),controller['addChatInteractions']);router[_0x2056('0x3c')](_0x2056('0x4e'),auth[_0x2056('0x9')](),controller[_0x2056('0x4f')]);router[_0x2056('0x3c')](_0x2056('0x50'),auth[_0x2056('0x9')](),controller[_0x2056('0x51')]);router[_0x2056('0x3c')]('/:id/sms_interactions',auth[_0x2056('0x9')](),controller[_0x2056('0x52')]);router[_0x2056('0x3c')](_0x2056('0x53'),auth[_0x2056('0x9')](),controller[_0x2056('0x54')]);router[_0x2056('0x3c')]('/:id/whatsapp_interactions',auth[_0x2056('0x9')](),controller[_0x2056('0x55')]);router[_0x2056('0x3c')]('/:id/fax_accounts',auth[_0x2056('0x9')](),controller[_0x2056('0x56')]);router[_0x2056('0x3c')]('/:id/mail_accounts',auth[_0x2056('0x9')](),controller['addMailAccounts']);router[_0x2056('0x3c')](_0x2056('0x30'),auth[_0x2056('0x9')](),controller['addOpenchannelAccounts']);router[_0x2056('0x3c')](_0x2056('0x57'),auth[_0x2056('0x9')](),controller[_0x2056('0x58')]);router[_0x2056('0x3c')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x2056('0x59')]);router['post'](_0x2056('0x35'),auth[_0x2056('0x9')](),controller[_0x2056('0x5a')]);router['post'](_0x2056('0x37'),auth[_0x2056('0x9')](),controller['addSquareProjects']);router[_0x2056('0x3c')](_0x2056('0x3a'),auth[_0x2056('0x9')](),controller[_0x2056('0x5b')]);router[_0x2056('0x5c')](_0x2056('0x11'),auth[_0x2056('0x9')](),controller[_0x2056('0x5d')]);router[_0x2056('0x5c')](_0x2056('0x5e'),auth[_0x2056('0x9')](),controller[_0x2056('0x5f')]);router[_0x2056('0x60')](_0x2056('0x18'),auth['isAuthenticated'](),controller[_0x2056('0x61')]);router['delete'](_0x2056('0x27'),auth[_0x2056('0x9')](),controller[_0x2056('0x62')]);router[_0x2056('0x60')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x2056('0x60')]('/:id/chat_interactions',auth['isAuthenticated'](),controller[_0x2056('0x63')]);router[_0x2056('0x60')](_0x2056('0x4e'),auth[_0x2056('0x9')](),controller['removeMailInteractions']);router[_0x2056('0x60')]('/:id/fax_interactions',auth[_0x2056('0x9')](),controller[_0x2056('0x64')]);router['delete'](_0x2056('0x65'),auth[_0x2056('0x9')](),controller[_0x2056('0x66')]);router[_0x2056('0x60')](_0x2056('0x53'),auth[_0x2056('0x9')](),controller[_0x2056('0x67')]);router[_0x2056('0x60')]('/:id/whatsapp_interactions',auth[_0x2056('0x9')](),controller[_0x2056('0x68')]);router['delete'](_0x2056('0x69'),auth[_0x2056('0x9')](),controller['removeFaxAccounts']);router['delete'](_0x2056('0x2f'),auth[_0x2056('0x9')](),controller[_0x2056('0x6a')]);router[_0x2056('0x60')]('/:id/openchannel_accounts',auth[_0x2056('0x9')](),controller[_0x2056('0x6b')]);router['delete'](_0x2056('0x57'),auth[_0x2056('0x9')](),controller[_0x2056('0x6c')]);router[_0x2056('0x60')](_0x2056('0x33'),auth['isAuthenticated'](),controller[_0x2056('0x6d')]);router[_0x2056('0x60')](_0x2056('0x35'),auth[_0x2056('0x9')](),controller[_0x2056('0x6e')]);router[_0x2056('0x60')](_0x2056('0x37'),auth[_0x2056('0x9')](),controller[_0x2056('0x6f')]);router['delete'](_0x2056('0x3a'),auth[_0x2056('0x9')](),controller['removeApiKey']);module[_0x2056('0x70')]=router;
\ No newline at end of file
+var _0x7dc1=['show','/:id/avatar','getAvatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','getWhatsappAccounts','/:id/square_projects','getSquareProjects','getScheduledCalls','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','addQueues','diskStorage','root','format','%s-%s','now','originalname','file','addAvatar','/:id/login','login','logout','/:id/pause','pause','unpause','/:id/chat_interactions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','addSquareProjects','createApiKey','put','update','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeFaxAccounts','removeMailAccounts','/:id/openchannel_accounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','/describe','describe','whoami','/presence','getPresence','/:id'];(function(_0x325618,_0x48a8d2){var _0x19302f=function(_0x118ff4){while(--_0x118ff4){_0x325618['push'](_0x325618['shift']());}};_0x19302f(++_0x48a8d2);}(_0x7dc1,0x65));var _0x17dc=function(_0x1793ef,_0x5cac36){_0x1793ef=_0x1793ef-0x0;var _0x540ef5=_0x7dc1[_0x1793ef];return _0x540ef5;};'use strict';var multer=require(_0x17dc('0x0'));var util=require(_0x17dc('0x1'));var path=require(_0x17dc('0x2'));var timeout=require('connect-timeout');var express=require(_0x17dc('0x3'));var router=express['Router']();var fs_extra=require(_0x17dc('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x17dc('0x5'));var config=require(_0x17dc('0x6'));var controller=require(_0x17dc('0x7'));router[_0x17dc('0x8')]('/',auth[_0x17dc('0x9')](),controller['index']);router[_0x17dc('0x8')](_0x17dc('0xa'),auth['isAuthenticated'](),controller[_0x17dc('0xb')]);router[_0x17dc('0x8')]('/whoami',auth[_0x17dc('0x9')](),controller[_0x17dc('0xc')]);router[_0x17dc('0x8')](_0x17dc('0xd'),auth[_0x17dc('0x9')](),controller[_0x17dc('0xe')]);router[_0x17dc('0x8')](_0x17dc('0xf'),auth['isAuthenticated'](),controller[_0x17dc('0x10')]);router['get'](_0x17dc('0x11'),controller[_0x17dc('0x12')]);router['get']('/:id/open_tabs',auth[_0x17dc('0x9')](),controller[_0x17dc('0x13')]);router['get'](_0x17dc('0x14'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x15')]);router[_0x17dc('0x8')](_0x17dc('0x16'),auth[_0x17dc('0x9')](),controller['getQueues']);router[_0x17dc('0x8')](_0x17dc('0x17'),auth['isAuthenticated'](),controller[_0x17dc('0x18')]);router[_0x17dc('0x8')](_0x17dc('0x19'),auth['isAuthenticated'](),controller[_0x17dc('0x1a')]);router['get']('/:id/recordings',auth[_0x17dc('0x9')](),controller[_0x17dc('0x1b')]);router[_0x17dc('0x8')](_0x17dc('0x1c'),auth['isAuthenticated'](),controller[_0x17dc('0x1d')]);router[_0x17dc('0x8')](_0x17dc('0x1e'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x1f')]);router[_0x17dc('0x8')](_0x17dc('0x20'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x21')]);router[_0x17dc('0x8')](_0x17dc('0x22'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x23')]);router[_0x17dc('0x8')]('/:id/sms/interactions',auth['isAuthenticated'](),controller[_0x17dc('0x24')]);router['get'](_0x17dc('0x25'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x26')]);router[_0x17dc('0x8')](_0x17dc('0x27'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x28')]);router[_0x17dc('0x8')](_0x17dc('0x29'),auth['isAuthenticated'](),controller['getTeams']);router[_0x17dc('0x8')](_0x17dc('0x2a'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x2b')]);router['get']('/:id/agents',auth[_0x17dc('0x9')](),controller[_0x17dc('0x2c')]);router[_0x17dc('0x8')](_0x17dc('0x2d'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x2e')]);router['get'](_0x17dc('0x2f'),auth['isAuthenticated'](),controller[_0x17dc('0x30')]);router[_0x17dc('0x8')](_0x17dc('0x31'),auth['isAuthenticated'](),controller[_0x17dc('0x32')]);router[_0x17dc('0x8')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x17dc('0x33')]);router[_0x17dc('0x8')](_0x17dc('0x34'),auth['isAuthenticated'](),controller[_0x17dc('0x35')]);router[_0x17dc('0x8')](_0x17dc('0x36'),auth['isAuthenticated'](),controller[_0x17dc('0x37')]);router['get']('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller[_0x17dc('0x38')]);router['get'](_0x17dc('0x39'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x3a')]);router[_0x17dc('0x8')]('/:id/scheduled_calls',auth[_0x17dc('0x9')](),controller[_0x17dc('0x3b')]);router[_0x17dc('0x8')](_0x17dc('0x3c'),auth[_0x17dc('0x9')](),controller['getApiKey']);router[_0x17dc('0x3d')](_0x17dc('0x14'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x3e')]);router[_0x17dc('0x3d')]('/',auth[_0x17dc('0x9')](),controller[_0x17dc('0x3f')]);router[_0x17dc('0x3d')](_0x17dc('0x40'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x41')]);router[_0x17dc('0x3d')](_0x17dc('0x16'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x42')]);var upload=multer({'storage':multer[_0x17dc('0x43')]({'destination':function(_0x5771b3,_0x23c808,_0x2d3712){_0x2d3712(null,path['join'](config[_0x17dc('0x44')],'server/files/images/'));},'filename':function(_0x76eb8d,_0x1f2aa4,_0x1eb3b4){_0x1eb3b4(null,util[_0x17dc('0x45')](_0x17dc('0x46'),Date[_0x17dc('0x47')](),_0x1f2aa4[_0x17dc('0x48')]));}})});router[_0x17dc('0x3d')](_0x17dc('0x11'),upload['single'](_0x17dc('0x49')),controller[_0x17dc('0x4a')]);router[_0x17dc('0x3d')](_0x17dc('0x4b'),auth['isAuthenticated'](),controller[_0x17dc('0x4c')]);router[_0x17dc('0x3d')]('/:id/logout',auth[_0x17dc('0x9')](),controller[_0x17dc('0x4d')]);router[_0x17dc('0x3d')](_0x17dc('0x4e'),auth['isAuthenticated'](),controller[_0x17dc('0x4f')]);router['post']('/:id/unpause',auth[_0x17dc('0x9')](),controller[_0x17dc('0x50')]);router[_0x17dc('0x3d')](_0x17dc('0x29'),auth[_0x17dc('0x9')](),controller['addTeams']);router[_0x17dc('0x3d')](_0x17dc('0x51'),auth[_0x17dc('0x9')](),controller['addChatInteractions']);router[_0x17dc('0x3d')](_0x17dc('0x52'),auth[_0x17dc('0x9')](),controller['addMailInteractions']);router[_0x17dc('0x3d')](_0x17dc('0x53'),auth['isAuthenticated'](),controller[_0x17dc('0x54')]);router[_0x17dc('0x3d')](_0x17dc('0x55'),auth[_0x17dc('0x9')](),controller['addSmsInteractions']);router['post'](_0x17dc('0x56'),auth['isAuthenticated'](),controller[_0x17dc('0x57')]);router['post'](_0x17dc('0x58'),auth['isAuthenticated'](),controller[_0x17dc('0x59')]);router[_0x17dc('0x3d')](_0x17dc('0x2f'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x5a')]);router[_0x17dc('0x3d')](_0x17dc('0x31'),auth['isAuthenticated'](),controller['addMailAccounts']);router['post']('/:id/openchannel_accounts',auth[_0x17dc('0x9')](),controller['addOpenchannelAccounts']);router[_0x17dc('0x3d')](_0x17dc('0x34'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x5b')]);router[_0x17dc('0x3d')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x17dc('0x5c')]);router[_0x17dc('0x3d')](_0x17dc('0x5d'),auth['isAuthenticated'](),controller[_0x17dc('0x5e')]);router[_0x17dc('0x3d')](_0x17dc('0x39'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x5f')]);router['post'](_0x17dc('0x3c'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x60')]);router[_0x17dc('0x61')](_0x17dc('0xf'),auth['isAuthenticated'](),controller[_0x17dc('0x62')]);router[_0x17dc('0x61')]('/:id/password',auth[_0x17dc('0x9')](),controller[_0x17dc('0x63')]);router[_0x17dc('0x64')](_0x17dc('0x16'),auth['isAuthenticated'](),controller[_0x17dc('0x65')]);router[_0x17dc('0x64')](_0x17dc('0x29'),auth['isAuthenticated'](),controller[_0x17dc('0x66')]);router[_0x17dc('0x64')]('/:id',auth[_0x17dc('0x9')](),controller[_0x17dc('0x67')]);router[_0x17dc('0x64')](_0x17dc('0x51'),auth['isAuthenticated'](),controller[_0x17dc('0x68')]);router['delete'](_0x17dc('0x52'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x69')]);router[_0x17dc('0x64')](_0x17dc('0x53'),auth[_0x17dc('0x9')](),controller['removeFaxInteractions']);router[_0x17dc('0x64')]('/:id/sms_interactions',auth[_0x17dc('0x9')](),controller[_0x17dc('0x6a')]);router[_0x17dc('0x64')](_0x17dc('0x56'),auth['isAuthenticated'](),controller['removeOpenchannelInteractions']);router['delete'](_0x17dc('0x58'),auth[_0x17dc('0x9')](),controller['removeWhatsappInteractions']);router['delete'](_0x17dc('0x2f'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x6b')]);router[_0x17dc('0x64')](_0x17dc('0x31'),auth['isAuthenticated'](),controller[_0x17dc('0x6c')]);router[_0x17dc('0x64')](_0x17dc('0x6d'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x6e')]);router[_0x17dc('0x64')]('/:id/sms_accounts',auth[_0x17dc('0x9')](),controller[_0x17dc('0x6f')]);router[_0x17dc('0x64')]('/:id/chat_websites',auth[_0x17dc('0x9')](),controller[_0x17dc('0x70')]);router[_0x17dc('0x64')]('/:id/whatsapp_accounts',auth[_0x17dc('0x9')](),controller[_0x17dc('0x71')]);router[_0x17dc('0x64')](_0x17dc('0x39'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x72')]);router[_0x17dc('0x64')](_0x17dc('0x3c'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x73')]);module[_0x17dc('0x74')]=router;
\ No newline at end of file
index 47a16fe..9f74917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x553a=['info','shortinfo','inband','auto','rfc2833','update','yes','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','always','accept','refuse','originate','uac','uas','fingerprint','certificate','actpass','nonat','isArray','udp','wss','encryption','avpf','force_avp','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','moment','lodash','exports','STRING','setDataValue','defaultuser','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','admin','user','agent','local','format','BOOLEAN','DATE','DEFAULT\x20PAUSE','INTEGER','dynamic','ENUM','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'];(function(_0x21f707,_0x6ae101){var _0x4d153e=function(_0x3308b1){while(--_0x3308b1){_0x21f707['push'](_0x21f707['shift']());}};_0x4d153e(++_0x6ae101);}(_0x553a,0x192));var _0xa553=function(_0x1394a2,_0x533264){_0x1394a2=_0x1394a2-0x0;var _0x31dcd1=_0x553a[_0x1394a2];return _0x31dcd1;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xa553('0x0'));var util=require('util');var _=require(_0xa553('0x1'));module[_0xa553('0x2')]={'name':{'type':Sequelize[_0xa553('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x4d5106){this[_0xa553('0x4')]('name',_0x4d5106);this['setDataValue'](_0xa553('0x5'),_0x4d5106);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x18da5d){this[_0xa553('0x4')](_0xa553('0x6'),_0x18da5d);this['setDataValue'](_0xa553('0x7'),util['format'](_0xa553('0x8'),_0x18da5d,this[_0xa553('0x9')](_0xa553('0xa'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa553('0xb'),'validate':{'isEmail':!![]},'set':function(_0x58c170){if(_0x58c170){this[_0xa553('0x4')](_0xa553('0xb'),_0x58c170[_0xa553('0xc')]());}}},'role':{'type':Sequelize['ENUM'](_0xa553('0xd'),_0xa553('0xe'),_0xa553('0xf'),'telephone'),'allowNull':![]},'password':{'type':Sequelize[_0xa553('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xa553('0x3')],'defaultValue':_0xa553('0x10')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':'internal','set':function(_0x15b224){this[_0xa553('0x4')](_0xa553('0xa'),_0x15b224);this[_0xa553('0x4')]('accountcode',_0x15b224);this[_0xa553('0x4')]('callerid',util[_0xa553('0x11')]('\x22%s\x22\x20<%s>',this['getDataValue'](_0xa553('0x6')),_0x15b224));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xa553('0x3')]},'mobile':{'type':Sequelize[_0xa553('0x3')]},'address':{'type':Sequelize[_0xa553('0x3')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0xa553('0x3')]},'city':{'type':Sequelize[_0xa553('0x3')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xa553('0x13')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0xa553('0x14')},'lastPauseAt':{'type':Sequelize[_0xa553('0x13')]},'chatCapacity':{'type':Sequelize[_0xa553('0x15')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xa553('0x15')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xa553('0x15')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xa553('0x15')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xa553('0x15')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'description':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![],'defaultValue':_0xa553('0x16')},'ipaddr':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0xa553('0x15')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x18'),_0xa553('0xe'),_0xa553('0x19')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![],'defaultValue':_0xa553('0x1a')},'callingpres':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x1b'),_0xa553('0x1c'),_0xa553('0x1d'),_0xa553('0x1e'),_0xa553('0x1f'),_0xa553('0x20'),_0xa553('0x21'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'udp','set':function(_0x20830f){this[_0xa553('0x4')](_0xa553('0x22'),_0x20830f?_0x20830f[_0xa553('0x23')](','):null);},'get':function(){return this[_0xa553('0x9')]('transport')?this[_0xa553('0x9')]('transport')[_0xa553('0x24')](','):null;},'comment':_0xa553('0x25')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833',_0xa553('0x26'),_0xa553('0x27'),_0xa553('0x28'),_0xa553('0x29')),'allowNull':!![],'defaultValue':_0xa553('0x2a')},'directmedia':{'type':Sequelize[_0xa553('0x17')]('yes','no','nonat',_0xa553('0x2b'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xa553('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![],'defaultValue':_0xa553('0x2d'),'set':function(_0x1728b0){this[_0xa553('0x4')](_0xa553('0x2e'),_0x1728b0?_0x1728b0[_0xa553('0x23')](','):null);},'get':function(){return this[_0xa553('0x9')](_0xa553('0x2e'))?this[_0xa553('0x9')](_0xa553('0x2e'))[_0xa553('0x24')](','):null;},'comment':_0xa553('0x2f')},'callgroup':{'type':Sequelize[_0xa553('0x3')]},'namedcallgroup':{'type':Sequelize[_0xa553('0x3')]},'pickupgroup':{'type':Sequelize[_0xa553('0x3')]},'namedpickupgroup':{'type':Sequelize[_0xa553('0x3')]},'language':{'type':Sequelize[_0xa553('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xa553('0x3')]},'disallow':{'type':Sequelize[_0xa553('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0xa553('0x3')],'allowNull':![],'defaultValue':_0xa553('0x30'),'set':function(_0x222d8e){this[_0xa553('0x4')](_0xa553('0x31'),_0x222d8e?_0x222d8e[_0xa553('0x23')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0xa553('0x9')]('allow')?this[_0xa553('0x9')](_0xa553('0x31'))[_0xa553('0x24')](';'):null;},'comment':_0xa553('0x32')},'autoframing':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![],'set':function(_0xfbccf4){this[_0xa553('0x4')](_0xa553('0x33'),_0xfbccf4?_0xfbccf4[_0xa553('0x23')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xa553('0x9')]('insecure')[_0xa553('0x24')](','):null;},'comment':_0xa553('0x34')},'trustrpid':{'type':Sequelize['ENUM'](_0xa553('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xa553('0x17')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xa553('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xa553('0x17')]('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xa553('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no',_0xa553('0x35')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xa553('0x17')]('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x36'),_0xa553('0x37'),_0xa553('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x39'),'uas'),'allowNull':!![],'defaultValue':_0xa553('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xa553('0x17')]('yes','no'),'allowNull':!![],'defaultValue':_0xa553('0x2c')},'keepalive':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xa553('0x15')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0xa553('0x2c'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no',_0xa553('0x3b'),_0xa553('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xa553('0x17')]('active','passive',_0xa553('0x3d')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xa553('0x17')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xa553('0x17')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xa553('0x17')](_0xa553('0x2c'),'no',_0xa553('0x3e'),_0xa553('0x2b'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0xa553('0x13')]},'passwordResetAt':{'type':Sequelize[_0xa553('0x13')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0xa553('0x15')],'defaultValue':0x0,'set':function(_0x3aae77){this[_0xa553('0x4')]('showWebBar',_0x3aae77);var _0x244124=this['get']({'plain':!![]});switch(_0x3aae77){case 0x0:case 0x1:var _0x4f8a3d=_0x244124[_0xa553('0x22')]?_[_0xa553('0x3f')](_0x244124['transport'])?_0x244124[_0xa553('0x22')][_0xa553('0x23')]():_0x244124[_0xa553('0x22')]:_0xa553('0x40');if(_0x4f8a3d===_0xa553('0x41')){_0x4f8a3d=_0xa553('0x40');}this[_0xa553('0x4')](_0xa553('0x22'),_0x4f8a3d);this['setDataValue'](_0xa553('0x42'),'no');this[_0xa553('0x4')](_0xa553('0x43'),null);this['setDataValue'](_0xa553('0x44'),null);this[_0xa553('0x4')]('icesupport',null);this['setDataValue'](_0xa553('0x45'),null);this[_0xa553('0x4')](_0xa553('0x46'),null);this[_0xa553('0x4')](_0xa553('0x47'),null);this[_0xa553('0x4')](_0xa553('0x48'),null);this[_0xa553('0x4')](_0xa553('0x49'),null);this[_0xa553('0x4')](_0xa553('0x4a'),'no');break;case 0x2:this['setDataValue']('transport','wss');this[_0xa553('0x4')](_0xa553('0x42'),_0xa553('0x2c'));this[_0xa553('0x4')](_0xa553('0x43'),_0xa553('0x2c'));this[_0xa553('0x4')](_0xa553('0x44'),_0xa553('0x2c'));this[_0xa553('0x4')]('icesupport',_0xa553('0x2c'));this[_0xa553('0x4')]('dtlsenable',_0xa553('0x2c'));this[_0xa553('0x4')](_0xa553('0x46'),'no');this[_0xa553('0x4')](_0xa553('0x47'),_0xa553('0x3d'));this[_0xa553('0x4')](_0xa553('0x48'),_0x244124[_0xa553('0x48')]||_0xa553('0x4b'));this['setDataValue']('dtlsprivatekey',_0x244124[_0xa553('0x49')]||_0xa553('0x4c'));this[_0xa553('0x4')]('rtcp_mux',_0xa553('0x2c'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x34e59e){this[_0xa553('0x4')](_0xa553('0x4d'),_0x34e59e?_0x34e59e['join'](','):[]);},'get':function(){return this['getDataValue'](_0xa553('0x4d'))?_[_0xa553('0x4e')](this[_0xa553('0x9')](_0xa553('0x4d'))[_0xa553('0x24')](','),function(_0x6089ff){return parseInt(_0x6089ff,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xa553('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0xa553('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xa553('0x12')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xa553('0x12')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xa553('0x15')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xa553('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xa553('0x15')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xa553('0x17')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xa553('0x12')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xa553('0x3')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xa553('0x4f')],'get':function(){return this['getDataValue']('phoneBarEnableScreenRecordingByAgent')?this[_0xa553('0x9')](_0xa553('0x50')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'interface':{'type':Sequelize[_0xa553('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xa553('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![],'set':function(_0x487830){if(typeof _0x487830===_0xa553('0x51')){var _0x3f89be=_0x487830==='1'?!![]:_0x487830==='0'?![]:_0x487830==='true'?!![]:_0x487830===_0xa553('0x52')?![]:![];this[_0xa553('0x4')](_0xa553('0x53'),_0x3f89be);}else{this[_0xa553('0x4')]('screenrecording',_0x487830);}}},'blocked':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![],'set':function(_0x4c2265){this[_0xa553('0x4')](_0xa553('0x54'),_0x4c2265);if(_0x4c2265===!![]){this[_0xa553('0x4')](_0xa553('0x55'),moment());this['setDataValue'](_0xa553('0x56'),0x0);}else{this[_0xa553('0x4')](_0xa553('0x55'),null);}}},'blockedAt':{'type':Sequelize[_0xa553('0x13')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xa553('0x15')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xa553('0x12')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xa553('0x15')](0x5)[_0xa553('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xa553('0x12')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xa553('0x12')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xa553('0x12')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6808=['always','refuse','uas','fingerprint','certificate','active','passive','actpass','nonat','update','showWebBar','get','wss','encryption','avpf','force_avp','dtlsenable','dtlsverify','dtlssetup','dtlsprivatekey','rtcp_mux','dtlscertfile','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','ENUM','admin','user','local','accountcode','getDataValue','BOOLEAN','DATE','INTEGER','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','yes','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','never','\x22\x22\x20<>'];(function(_0x5e7baf,_0x11000c){var _0x9b1443=function(_0x199626){while(--_0x199626){_0x5e7baf['push'](_0x5e7baf['shift']());}};_0x9b1443(++_0x11000c);}(_0x6808,0xd1));var _0x8680=function(_0x4ade17,_0x1bff9b){_0x4ade17=_0x4ade17-0x0;var _0x3e4bb9=_0x6808[_0x4ade17];return _0x3e4bb9;};'use strict';var Sequelize=require(_0x8680('0x0'));var moment=require(_0x8680('0x1'));var util=require(_0x8680('0x2'));var _=require(_0x8680('0x3'));module[_0x8680('0x4')]={'name':{'type':Sequelize[_0x8680('0x5')],'allowNull':![],'unique':_0x8680('0x6'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x37c702){this['setDataValue'](_0x8680('0x6'),_0x37c702);this[_0x8680('0x7')](_0x8680('0x8'),_0x37c702);},'comment':_0x8680('0x9')},'fullname':{'type':Sequelize[_0x8680('0x5')],'allowNull':![],'set':function(_0x5ea2c7){this[_0x8680('0x7')](_0x8680('0xa'),_0x5ea2c7);this['setDataValue']('callerid',util[_0x8680('0xb')](_0x8680('0xc'),_0x5ea2c7,this['getDataValue'](_0x8680('0xd'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x3c1b07){if(_0x3c1b07){this[_0x8680('0x7')](_0x8680('0xe'),_0x3c1b07[_0x8680('0xf')]());}}},'role':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x11'),_0x8680('0x12'),'agent','telephone'),'allowNull':![]},'password':{'type':Sequelize[_0x8680('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x8680('0x5')],'defaultValue':_0x8680('0x13')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x8680('0xd'),'set':function(_0x392b6b){this[_0x8680('0x7')](_0x8680('0xd'),_0x392b6b);this[_0x8680('0x7')](_0x8680('0x14'),_0x392b6b);this[_0x8680('0x7')]('callerid',util[_0x8680('0xb')]('\x22%s\x22\x20<%s>',this[_0x8680('0x15')]('fullname'),_0x392b6b));}},'salt':{'type':Sequelize[_0x8680('0x5')]},'phone':{'type':Sequelize[_0x8680('0x5')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x8680('0x5')]},'zipcode':{'type':Sequelize[_0x8680('0x5')]},'userpic':{'type':Sequelize[_0x8680('0x5')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x8680('0x17')]},'voicePause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x8680('0x5')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x8680('0x17')]},'chatCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x8680('0x18')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x8680('0x18')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'description':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'host':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'port':{'type':Sequelize[_0x8680('0x18')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0x8680('0x19'),'user',_0x8680('0x1a')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x1b')},'callingpres':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x1c'),_0x8680('0x1d'),_0x8680('0x1e'),_0x8680('0x1f'),_0x8680('0x20'),_0x8680('0x21'),_0x8680('0x22'),_0x8680('0x23')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'secret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'transport':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x24'),'set':function(_0x3bd116){this['setDataValue']('transport',_0x3bd116?_0x3bd116[_0x8680('0x25')](','):null);},'get':function(){return this[_0x8680('0x15')](_0x8680('0x26'))?this[_0x8680('0x15')](_0x8680('0x26'))[_0x8680('0x27')](','):null;},'comment':_0x8680('0x28')},'dtmfmode':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x29'),_0x8680('0x2a'),'shortinfo',_0x8680('0x2b'),'auto'),'allowNull':!![],'defaultValue':_0x8680('0x29')},'directmedia':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no','nonat','update',_0x8680('0x2d')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'nat':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x2e'),'set':function(_0x5930b1){this[_0x8680('0x7')](_0x8680('0x2f'),_0x5930b1?_0x5930b1['join'](','):null);},'get':function(){return this['getDataValue'](_0x8680('0x2f'))?this[_0x8680('0x15')](_0x8680('0x2f'))[_0x8680('0x27')](','):null;},'comment':_0x8680('0x30')},'callgroup':{'type':Sequelize[_0x8680('0x5')]},'namedcallgroup':{'type':Sequelize[_0x8680('0x5')]},'pickupgroup':{'type':Sequelize[_0x8680('0x5')]},'namedpickupgroup':{'type':Sequelize[_0x8680('0x5')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8680('0x31')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8680('0x32'),'set':function(_0x549cb1){this[_0x8680('0x7')]('allow',_0x549cb1?_0x549cb1[_0x8680('0x25')](';'):_0x8680('0x32'));},'get':function(){return this['getDataValue']('allow')?this[_0x8680('0x15')]('allow')[_0x8680('0x27')](';'):null;},'comment':_0x8680('0x33')},'autoframing':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'set':function(_0x5328a){this[_0x8680('0x7')](_0x8680('0x34'),_0x5328a?_0x5328a[_0x8680('0x25')](','):null);},'get':function(){return this[_0x8680('0x15')](_0x8680('0x34'))?this[_0x8680('0x15')](_0x8680('0x34'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x8680('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no',_0x8680('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x36')},'amaflags':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':_0x8680('0x2c')},'busylevel':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no',_0x8680('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x8680('0x10')]('accept',_0x8680('0x38'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x8680('0x10')]('uac',_0x8680('0x39')),'allowNull':!![],'defaultValue':_0x8680('0x39')},'t38pt_usertpsource':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x8680('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x8680('0x10')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x8680('0x10')]('yes','no',_0x8680('0x3a'),_0x8680('0x3b')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x8680('0x3c'),_0x8680('0x3d'),_0x8680('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no',_0x8680('0x3f'),_0x8680('0x40'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x8680('0x5')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x8680('0x17')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0,'set':function(_0x85cd8d){this[_0x8680('0x7')](_0x8680('0x41'),_0x85cd8d);var _0x3beabd=this[_0x8680('0x42')]({'plain':!![]});switch(_0x85cd8d){case 0x0:case 0x1:var _0x12197c=_0x3beabd[_0x8680('0x26')]?_['isArray'](_0x3beabd[_0x8680('0x26')])?_0x3beabd[_0x8680('0x26')][_0x8680('0x25')]():_0x3beabd[_0x8680('0x26')]:_0x8680('0x24');if(_0x12197c===_0x8680('0x43')){_0x12197c=_0x8680('0x24');}this['setDataValue']('transport',_0x12197c);this['setDataValue'](_0x8680('0x44'),'no');this[_0x8680('0x7')](_0x8680('0x45'),null);this[_0x8680('0x7')](_0x8680('0x46'),null);this[_0x8680('0x7')]('icesupport',null);this[_0x8680('0x7')](_0x8680('0x47'),null);this[_0x8680('0x7')](_0x8680('0x48'),null);this[_0x8680('0x7')](_0x8680('0x49'),null);this[_0x8680('0x7')]('dtlscertfile',null);this[_0x8680('0x7')](_0x8680('0x4a'),null);this[_0x8680('0x7')](_0x8680('0x4b'),'no');break;case 0x2:this['setDataValue'](_0x8680('0x26'),_0x8680('0x43'));this[_0x8680('0x7')](_0x8680('0x44'),_0x8680('0x2c'));this[_0x8680('0x7')](_0x8680('0x45'),_0x8680('0x2c'));this[_0x8680('0x7')](_0x8680('0x46'),_0x8680('0x2c'));this[_0x8680('0x7')]('icesupport',_0x8680('0x2c'));this[_0x8680('0x7')](_0x8680('0x47'),_0x8680('0x2c'));this['setDataValue']('dtlsverify','no');this[_0x8680('0x7')](_0x8680('0x49'),_0x8680('0x3e'));this[_0x8680('0x7')](_0x8680('0x4c'),_0x3beabd['dtlscertfile']||'/etc/pki/tls/certs/motion.crt');this[_0x8680('0x7')]('dtlsprivatekey',_0x3beabd['dtlsprivatekey']||'/etc/pki/tls/private/motion.key');this['setDataValue']('rtcp_mux',_0x8680('0x2c'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x4d07bb){this[_0x8680('0x7')](_0x8680('0x4d'),_0x4d07bb?_0x4d07bb[_0x8680('0x25')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_[_0x8680('0x4e')](this['getDataValue'](_0x8680('0x4d'))[_0x8680('0x27')](','),function(_0x1d1d85){return parseInt(_0x1d1d85,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x8680('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x8680('0x5')]},'phoneBarBusyNumber':{'type':Sequelize[_0x8680('0x5')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x8680('0x5')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x8680('0x5')]},'phoneBarEnableJaws':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x8680('0x15')]('phoneBarEnableScreenRecordingByAgent')?this['getDataValue'](_0x8680('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x8680('0x5')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![],'set':function(_0x27cf09){if(typeof _0x27cf09===_0x8680('0x50')){var _0x4a5030=_0x27cf09==='1'?!![]:_0x27cf09==='0'?![]:_0x27cf09===_0x8680('0x51')?!![]:_0x27cf09===_0x8680('0x52')?![]:![];this[_0x8680('0x7')](_0x8680('0x53'),_0x4a5030);}else{this['setDataValue'](_0x8680('0x53'),_0x27cf09);}}},'blocked':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![],'set':function(_0x582e3d){this['setDataValue'](_0x8680('0x54'),_0x582e3d);if(_0x582e3d===!![]){this[_0x8680('0x7')](_0x8680('0x55'),moment());this[_0x8680('0x7')](_0x8680('0x56'),0x0);}else{this['setDataValue'](_0x8680('0x55'),null);}}},'blockedAt':{'type':Sequelize[_0x8680('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0x8680('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]}};
\ No newline at end of file
index fe61c3b..eb327f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8c=['Queue:save','isNil','format','SIP/%s','voicePause','upsert','removeQueues','remove','Queues','isArray','QueueId','Queue:remove','UserVoiceQueueRt','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','whatsapp','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','findOne','filters','sort','where','pick','merge','CmList','List','Tag','Tags','tag','hasOwnProperty','nolimit','order','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','concat','isMiddleware','pause','updateAttributes','getChannels','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','voice','QueuePause','manual','%s%s','Pause','Team','getTeams','addTeams','setDataValue','getChatQueues','getMailQueues','Mail','Sms','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','flatten','transaction','addAgent','online','getDataValue','removeTeams','Voice','Chat','getSmsQueues','Whatsapp','removeAgent','getLists','getAgents','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','omit','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','getScheduledCalls','$or','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$any','CmHopper','lastName','CmContact','Contact','dialActive','VoiceQueue','retrieveApiKey','json','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','resolve','teams','queues','inbound','col','asc','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','QueryTypes','select','field','ui.','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','util','path','lodash','squel','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','./user.socket','register','redis','defaults','localhost','client','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','update','destroy','get','role','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','value','find','name','stack','send','rawAttributes','type','key','password','salt','include','includes','attributes','push','User','findAll','rows','query','true','length','chat','dataValues','sms','fax','mail','openchannel','all','show','model','differenceBy','keys','intersection','fields','includeAll','options','params','body','describe','addContacts','ids','Setting','findById','securePassword','validatePasswordPattern','max','internal','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','from','voicemail','fullname','email','permissions','101','103','113','110','104','105','107','108','109','100','111','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','VoiceMail','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','each','isEmpty','compact','UserProfileResource','changePassword','newPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Sequelize','Wrong\x20credentials','oldPassword','Invalid\x20body\x20format.\x20Use\x20newPassword','enforcePasswordHistory','validatePasswordHistory','previousPasswords','passwordHistoryLimit','updatePasswordsHistory','addQueues','channel','loginInPause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','penalty','spread','emit'];(function(_0x425cab,_0x38a6ad){var _0x105290=function(_0x26251d){while(--_0x26251d){_0x425cab['push'](_0x425cab['shift']());}};_0x105290(++_0x38a6ad);}(_0x3f8c,0x104));var _0xc3f8=function(_0x401c8f,_0x119525){_0x401c8f=_0x401c8f-0x0;var _0x482baf=_0x3f8c[_0x401c8f];return _0x482baf;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xc3f8('0x0'));var path=require(_0xc3f8('0x1'));var fs=require('fs');var _=require(_0xc3f8('0x2'));var squel=require(_0xc3f8('0x3'));var jayson=require('jayson/promise');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xc3f8('0x4'));var utils=require(_0xc3f8('0x5'));var config=require(_0xc3f8('0x6'));var licenseUtil=require(_0xc3f8('0x7'));var db=require(_0xc3f8('0x8'))['db'];var socket=require(_0xc3f8('0x9'))(new Redis(config['redis']));require(_0xc3f8('0xa'))[_0xc3f8('0xb')](socket);config[_0xc3f8('0xc')]=_[_0xc3f8('0xd')](config[_0xc3f8('0xc')],{'host':_0xc3f8('0xe'),'port':0x18eb});var client=jayson[_0xc3f8('0xf')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x22736b,_0x1075a6,_0x378541,_0x4303aa){return new BPromise(function(_0x58118f,_0x313714){var _0x28e4c7=_0x4303aa||client;return _0x28e4c7[_0xc3f8('0x10')](_0x22736b,_0x378541)[_0xc3f8('0x11')](function(_0x511763){logger[_0xc3f8('0x12')](_0xc3f8('0x13'),_0x1075a6,_0xc3f8('0x14'));logger[_0xc3f8('0x15')](_0xc3f8('0x16'),_0x1075a6,_0xc3f8('0x14'),JSON[_0xc3f8('0x17')](_0x511763));if(_0x511763[_0xc3f8('0x18')]){if(_0x511763[_0xc3f8('0x18')][_0xc3f8('0x19')]===0x1f4){logger[_0xc3f8('0x18')](_0xc3f8('0x13'),_0x1075a6,_0x511763[_0xc3f8('0x18')]['message']);return _0x313714(_0x511763[_0xc3f8('0x18')]['message']);}logger['error'](_0xc3f8('0x13'),_0x1075a6,_0x511763[_0xc3f8('0x18')][_0xc3f8('0x1a')]);return _0x58118f(_0x511763[_0xc3f8('0x18')]['message']);}else{logger[_0xc3f8('0x12')](_0xc3f8('0x13'),_0x1075a6,'request\x20sent');_0x58118f(_0x511763[_0xc3f8('0x1b')]['message']);}})[_0xc3f8('0x1c')](function(_0x42ce65){logger[_0xc3f8('0x18')]('User,\x20%s,\x20%s',_0x1075a6,_0x42ce65);_0x313714(_0x42ce65);});});}function respondWithStatusCode(_0x543dca,_0x113cd2){_0x113cd2=_0x113cd2||0xcc;return function(_0x2a7096){if(_0x2a7096){return _0x543dca[_0xc3f8('0x1d')](_0x113cd2);}return _0x543dca[_0xc3f8('0x1e')](_0x113cd2)[_0xc3f8('0x1f')]();};}function respondWithResult(_0x251bf7,_0x43b2b4){_0x43b2b4=_0x43b2b4||0xc8;return function(_0x42a155){if(_0x42a155){return _0x251bf7['status'](_0x43b2b4)['json'](_0x42a155);}};}function respondWithFilteredResult(_0x4b83f0,_0x2559a4){return function(_0x5e1d14){if(_0x5e1d14){var _0x11335=typeof _0x2559a4[_0xc3f8('0x20')]==='undefined'&&typeof _0x2559a4[_0xc3f8('0x21')]===_0xc3f8('0x22');var _0x2d237e=_0x5e1d14[_0xc3f8('0x23')];var _0x25088f=_0x11335?0x0:_0x2559a4[_0xc3f8('0x20')];var _0xf1d460=_0x11335?_0x5e1d14[_0xc3f8('0x23')]:_0x2559a4[_0xc3f8('0x20')]+_0x2559a4[_0xc3f8('0x21')];var _0x22c8e6;if(_0xf1d460>=_0x2d237e){_0xf1d460=_0x2d237e;_0x22c8e6=0xc8;}else{_0x22c8e6=0xce;}_0x4b83f0[_0xc3f8('0x1e')](_0x22c8e6);return _0x4b83f0[_0xc3f8('0x24')](_0xc3f8('0x25'),_0x25088f+'-'+_0xf1d460+'/'+_0x2d237e)['json'](_0x5e1d14);}return null;};}function saveUpdates(_0x58b303){return function(_0x2909f8){if(_0x2909f8){return _0x2909f8[_0xc3f8('0x26')](_0x58b303)['then'](function(_0x151bba){return _0x151bba;});}return null;};}function removeEntity(_0x4d39a0){return function(_0x2015af){if(_0x2015af){return _0x2015af[_0xc3f8('0x27')]()['then'](function(){var _0x48b32e=_0x2015af[_0xc3f8('0x28')]({'plain':!![]});if(_0x48b32e[_0xc3f8('0x29')]===_0xc3f8('0x2a'))return;var _0x3704e5=[{'name':_0xc3f8('0x2b'),'value':_0xc3f8('0x2c'),'ignore':!![]},{'name':_0xc3f8('0x2d'),'value':_0xc3f8('0x2e'),'ignore':![]},{'name':_0xc3f8('0x2f'),'value':_0xc3f8('0x30'),'ignore':![]}];var _0x52e543=_(_0x3704e5)[_0xc3f8('0x31')](_0xc3f8('0x32'))[_0xc3f8('0x33')](_0xc3f8('0x34'))[_0xc3f8('0x34')]();if(_['includes'](_0x52e543,_0x48b32e['role'])){return;}var _0x2be68e=_[_0xc3f8('0x35')](_0x3704e5,[_0xc3f8('0x34'),_0x48b32e[_0xc3f8('0x29')]])[_0xc3f8('0x36')];return db['UserProfileResource'][_0xc3f8('0x27')]({'where':{'type':_0x2be68e,'resourceId':_0x48b32e['id']}})[_0xc3f8('0x11')](function(){return _0x2015af;});})[_0xc3f8('0x11')](function(){_0x4d39a0['status'](0xcc)[_0xc3f8('0x1f')]();});}};}function handleEntityNotFound(_0x11ecc2){return function(_0x317319){if(!_0x317319){_0x11ecc2['sendStatus'](0x194);}return _0x317319;};}function handleError(_0x21a725,_0x37ae52){_0x37ae52=_0x37ae52||0x1f4;return function(_0x560553){logger[_0xc3f8('0x18')](_0x560553[_0xc3f8('0x37')]);if(_0x560553[_0xc3f8('0x36')]){delete _0x560553[_0xc3f8('0x36')];}_0x21a725[_0xc3f8('0x1e')](_0x37ae52)[_0xc3f8('0x38')](_0x560553);};}exports['index']=function(_0x285307,_0x2e4880){var _0x2d3129={},_0x2f589d={'count':0x0,'rows':[]};var _0x17aff0=_(db['User'][_0xc3f8('0x39')])[_0xc3f8('0x33')](function(_0xaa4c98){return{'name':_0xaa4c98['fieldName'],'type':_0xaa4c98[_0xc3f8('0x3a')][_0xc3f8('0x3b')]};})[_0xc3f8('0x31')](function(_0x2d4167){return!_['includes']([_0xc3f8('0x3c'),_0xc3f8('0x3d')],_0x2d4167[_0xc3f8('0x36')]);})[_0xc3f8('0x34')]();_0x2d3129=qs['getOptions'](_0x17aff0,_0x285307);var _0x3f313e={'where':_0x2d3129['where']};return db['User'][_0xc3f8('0x23')](_0x3f313e)[_0xc3f8('0x11')](function(_0x22ec3b){_0x2f589d[_0xc3f8('0x23')]=_0x22ec3b;if(_0x285307['query']['includeAll']){_0x2d3129[_0xc3f8('0x3e')]=[{'all':!![]}];}if(!_[_0xc3f8('0x3f')](_0x2d3129[_0xc3f8('0x40')],'id')){_0x2d3129[_0xc3f8('0x40')][_0xc3f8('0x41')]('id');}return db[_0xc3f8('0x42')][_0xc3f8('0x43')](_0x2d3129);})[_0xc3f8('0x11')](function(_0x13d8dc){_0x2f589d[_0xc3f8('0x44')]=_0x13d8dc;if(_0x285307[_0xc3f8('0x45')]['openTabs']===_0xc3f8('0x46')){var _0x22e9b3=[];for(var _0x4b327f=0x0;_0x4b327f<_0x2f589d[_0xc3f8('0x44')][_0xc3f8('0x47')];_0x4b327f++){_0x22e9b3['push'](get_open_tabs(_0xc3f8('0x48'),_0x2f589d[_0xc3f8('0x44')][_0x4b327f][_0xc3f8('0x49')]));_0x22e9b3[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4a'),_0x2f589d[_0xc3f8('0x44')][_0x4b327f][_0xc3f8('0x49')]));_0x22e9b3[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4b'),_0x2f589d[_0xc3f8('0x44')][_0x4b327f][_0xc3f8('0x49')]));_0x22e9b3['push'](get_open_tabs(_0xc3f8('0x4c'),_0x2f589d[_0xc3f8('0x44')][_0x4b327f]['dataValues']));_0x22e9b3[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4d'),_0x2f589d[_0xc3f8('0x44')][_0x4b327f][_0xc3f8('0x49')]));_0x22e9b3['push'](get_open_tabs('whatsapp',_0x2f589d[_0xc3f8('0x44')][_0x4b327f][_0xc3f8('0x49')]));}return BPromise[_0xc3f8('0x4e')](_0x22e9b3)['then'](function(_0x1b5777){return _0x2f589d;});}else{return _0x2f589d;}})[_0xc3f8('0x11')](respondWithFilteredResult(_0x2e4880,_0x2d3129))[_0xc3f8('0x1c')](handleError(_0x2e4880,null));};exports[_0xc3f8('0x4f')]=function(_0x103f0d,_0x5bf6a5){var _0x309e40={'raw':![],'where':{'id':_0x103f0d['params']['id']}},_0x873828={};_0x873828[_0xc3f8('0x50')]=_[_0xc3f8('0x51')](_[_0xc3f8('0x52')](db[_0xc3f8('0x42')][_0xc3f8('0x39')]),[_0xc3f8('0x3c'),_0xc3f8('0x3d')]);_0x873828['query']=_[_0xc3f8('0x52')](_0x103f0d[_0xc3f8('0x45')]);_0x873828['filters']=_[_0xc3f8('0x53')](_0x873828[_0xc3f8('0x50')],_0x873828[_0xc3f8('0x45')]);_0x309e40[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x873828[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x103f0d['query'][_0xc3f8('0x54')]));_0x309e40[_0xc3f8('0x40')]=_0x309e40[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x309e40[_0xc3f8('0x40')]:_0x873828[_0xc3f8('0x50')];if(_0x103f0d[_0xc3f8('0x45')][_0xc3f8('0x55')]){_0x309e40['include']=[{'all':!![]}];}_0x309e40=_['merge']({},_0x309e40,_0x103f0d[_0xc3f8('0x56')]);if(!_[_0xc3f8('0x3f')](_0x309e40['attributes'],'id')){_0x309e40['attributes'][_0xc3f8('0x41')]('id');}return db['User'][_0xc3f8('0x35')](_0x309e40)[_0xc3f8('0x11')](handleEntityNotFound(_0x5bf6a5,null))[_0xc3f8('0x11')](function(_0x5292a0){var _0x109a31=[];values=_0x5292a0;if(_0x103f0d['query']['openTabs']===_0xc3f8('0x46')){_0x109a31['push'](get_open_tabs(_0xc3f8('0x48'),_0x5292a0[_0xc3f8('0x49')]));_0x109a31[_0xc3f8('0x41')](get_open_tabs('sms',_0x5292a0[_0xc3f8('0x49')]));_0x109a31[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4d'),_0x5292a0[_0xc3f8('0x49')]));_0x109a31[_0xc3f8('0x41')](get_open_tabs('whatsapp',_0x5292a0['dataValues']));_0x109a31[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4b'),_0x5292a0[_0xc3f8('0x49')]));_0x109a31[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4c'),_0x5292a0['dataValues']));return BPromise[_0xc3f8('0x4e')](_0x109a31);}else{return values;}})['then'](function(_0x21dfc8){return values;})[_0xc3f8('0x11')](respondWithResult(_0x5bf6a5,null))[_0xc3f8('0x1c')](handleError(_0x5bf6a5,null));};exports[_0xc3f8('0x26')]=function(_0x5c6f6e,_0x2c549e){if(_0x5c6f6e['body']['id']){delete _0x5c6f6e['body']['id'];}delete _0x5c6f6e['body']['role'];return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x5c6f6e[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x2c549e,null))[_0xc3f8('0x11')](saveUpdates(_0x5c6f6e[_0xc3f8('0x58')],null))[_0xc3f8('0x11')](respondWithResult(_0x2c549e,null))[_0xc3f8('0x1c')](handleError(_0x2c549e,null));};exports['describe']=function(_0x84e1a2,_0x1c1d08){return db[_0xc3f8('0x42')][_0xc3f8('0x59')]()[_0xc3f8('0x11')](respondWithResult(_0x1c1d08,null))['catch'](handleError(_0x1c1d08,null));};exports[_0xc3f8('0x5a')]=function(_0x39b142,_0x30c90f){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x39b142['params']['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x30c90f,null))[_0xc3f8('0x11')](function(_0x42b255){if(_0x42b255){return _0x42b255[_0xc3f8('0x5a')](_0x39b142[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x39b142[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{});}})[_0xc3f8('0x11')](respondWithResult(_0x30c90f,null))['catch'](handleError(_0x30c90f,null));};function validateUser(_0x20cebe){return new BPromise(function(_0x54a6b7,_0x546e3b){if(_0x20cebe['internal'])return _0x54a6b7(_0x20cebe);return db[_0xc3f8('0x5c')][_0xc3f8('0x5d')](0x1)['then'](function(_0x24811c){if(_0x24811c[_0xc3f8('0x5e')])authService[_0xc3f8('0x5f')](_0x20cebe[_0xc3f8('0x3c')]);db[_0xc3f8('0x42')][_0xc3f8('0x60')](_0xc3f8('0x61'))[_0xc3f8('0x11')](function(_0x58268e){if(_['isNil'](_0x58268e)){_0x20cebe[_0xc3f8('0x61')]=_0x24811c['min_internal']||0x1;return;}if(_['isNil'](_0x24811c['min_internal'])||_0x24811c['min_internal']===_0x58268e){_0x20cebe['internal']=_0x58268e+0x1;return;}if(_0x24811c[_0xc3f8('0x62')]>_0x58268e){_0x20cebe[_0xc3f8('0x61')]=_0x24811c[_0xc3f8('0x62')];return;}return db[_0xc3f8('0x63')]['query'](_0xc3f8('0x64'),{'type':db[_0xc3f8('0x63')]['QueryTypes'][_0xc3f8('0x65')]})[_0xc3f8('0x11')](function(_0x104eec){if(_0x104eec&&_0x104eec['length']){for(var _0xaedf89=0x0,_0x5e3125=_0x104eec['length'];_0xaedf89<_0x5e3125&&_['isNil'](_0x20cebe[_0xc3f8('0x61')]);_0xaedf89++){if(_0x24811c[_0xc3f8('0x62')]<=_0x104eec[_0xaedf89]['from']){_0x20cebe[_0xc3f8('0x61')]=_0x104eec[_0xaedf89][_0xc3f8('0x66')];}else if(_0x24811c['min_internal']>_0x104eec[_0xaedf89][_0xc3f8('0x66')]&&_0x24811c[_0xc3f8('0x62')]<=_0x104eec[_0xaedf89]['to']){_0x20cebe['internal']=_0x24811c[_0xc3f8('0x62')];}}}if(_['isNil'](_0x20cebe[_0xc3f8('0x61')])){_0x20cebe[_0xc3f8('0x61')]=_0x58268e+0x1;}return _0x54a6b7(_0x20cebe);});});})['catch'](function(_0x54a784){_0x546e3b(_0x54a784);});});}function updateUser(_0x11edfe){return new BPromise(function(_0x10a1b6,_0x58bbc4){try{if(_0x11edfe[_0xc3f8('0x67')]){_0x11edfe['mailbox']=_0x11edfe[_0xc3f8('0x61')];_0x11edfe['VoiceMail']={'mailbox':_0x11edfe[_0xc3f8('0x61')],'password':_0x11edfe[_0xc3f8('0x3c')],'fullname':_0x11edfe[_0xc3f8('0x68')],'email':_0x11edfe[_0xc3f8('0x69')]};}if(_0x11edfe[_0xc3f8('0x29')]===_0xc3f8('0x2e')){if(!_0x11edfe[_0xc3f8('0x6a')])_0x11edfe[_0xc3f8('0x6a')]=[_0xc3f8('0x6b'),'102',_0xc3f8('0x6c'),_0xc3f8('0x6d'),_0xc3f8('0x6e'),_0xc3f8('0x6f'),_0xc3f8('0x70'),'106',_0xc3f8('0x71'),_0xc3f8('0x72'),_0xc3f8('0x73'),_0xc3f8('0x74'),_0xc3f8('0x75'),'114',_0xc3f8('0x76')];}_0x10a1b6(_0x11edfe);}catch(_0xbd005d){_0x58bbc4(_0xbd005d);}});}exports[_0xc3f8('0x77')]=function(_0x52e6fc,_0x4a0f25){if(_0x52e6fc[_0xc3f8('0x2c')][_0xc3f8('0x29')]===_0xc3f8('0x2e'))throw new Error(_0xc3f8('0x78'));if(_0x52e6fc['body'][_0xc3f8('0x29')]===_0xc3f8('0x2c')&&_0x52e6fc[_0xc3f8('0x2c')]['role']!==_0xc3f8('0x2a')){throw new Error(_0xc3f8('0x79'));}if(_0x52e6fc['body']['role']===_0xc3f8('0x2a')&&_0x52e6fc[_0xc3f8('0x2c')]['role']!==_0xc3f8('0x2a')){throw new Error(_0xc3f8('0x7a'));}return licenseUtil['checkUserLimits']([_0x52e6fc[_0xc3f8('0x58')]])['then'](function(){return validateUser(_0x52e6fc[_0xc3f8('0x58')]);})['then'](function(_0x34e991){return updateUser(_0x34e991)[_0xc3f8('0x11')](function(_0x2fafd7){if(_0x2fafd7[_0xc3f8('0x29')]===_0xc3f8('0x2a')){_0x2fafd7[_0xc3f8('0x7b')]=_0x52e6fc[_0xc3f8('0x2c')][_0xc3f8('0x7b')];delete _0x2fafd7[_0xc3f8('0x7c')];}return _0x2fafd7;});})['then'](function(_0x47e2c1){return db[_0xc3f8('0x42')]['create'](_0x47e2c1,{'include':[{'model':db[_0xc3f8('0x7d')],'as':_0xc3f8('0x7d')}]});})[_0xc3f8('0x11')](function(_0xfb05eb){if(_0x52e6fc['body'][_0xc3f8('0x29')]===_0xc3f8('0x2c'))return _0xfb05eb;if(_0x52e6fc[_0xc3f8('0x2c')][_0xc3f8('0x29')]!==_0xc3f8('0x2c'))return _0xfb05eb;return db[_0xc3f8('0x7e')][_0xc3f8('0x35')]({'where':{'name':_0xfb05eb[_0xc3f8('0x29')]===_0xc3f8('0x2e')?'Agents':'Telephones','userProfileId':_0x52e6fc[_0xc3f8('0x2c')][_0xc3f8('0x7c')]},'raw':!![]})[_0xc3f8('0x11')](function(_0x4d0b1a){if(!_0x4d0b1a||_0x4d0b1a[_0xc3f8('0x7f')]!=0x0)return _0xfb05eb;return db['UserProfileResource'][_0xc3f8('0x77')]({'name':_0xfb05eb['name'],'resourceId':_0xfb05eb['id'],'type':_0x4d0b1a[_0xc3f8('0x36')],'sectionId':_0x4d0b1a['id']},{})[_0xc3f8('0x11')](function(){return _0xfb05eb;});})[_0xc3f8('0x1c')](function(_0x2e3c2d){logger[_0xc3f8('0x18')](_0xc3f8('0x80'),_0x2e3c2d);throw _0x2e3c2d;});})[_0xc3f8('0x11')](respondWithResult(_0x4a0f25,0xc9))[_0xc3f8('0x1c')](handleError(_0x4a0f25,null));};exports['bulkCreate']=function(_0x3cd57d,_0x209748){var _0x33c670=_0x3cd57d[_0xc3f8('0x58')];var _0x4536bf=[];if(_0x3cd57d['user'][_0xc3f8('0x29')]===_0xc3f8('0x2e'))throw new Error(_0xc3f8('0x78'));if(_[_0xc3f8('0x81')](_0x33c670,['role','user'])&&_0x3cd57d[_0xc3f8('0x2c')][_0xc3f8('0x29')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_['some'](_0x33c670,[_0xc3f8('0x29'),'admin'])&&_0x3cd57d[_0xc3f8('0x2c')][_0xc3f8('0x29')]!==_0xc3f8('0x2a')){throw new Error(_0xc3f8('0x82'));}return licenseUtil[_0xc3f8('0x83')](_0x33c670)[_0xc3f8('0x11')](function(){return validateUser(_0x33c670[0x0]);})[_0xc3f8('0x11')](function(){for(var _0x52690f=0x1;_0x52690f<_0x33c670['length'];_0x52690f++){var _0x55185a=_0x33c670[_0x52690f-0x1]['internal'];if(!_0x33c670[_0x52690f][_0xc3f8('0x61')])_0x33c670[_0x52690f]['internal']=_0x55185a+0x1;_0x4536bf[_0xc3f8('0x41')](validateUser(_0x33c670[_0x52690f]));}return BPromise[_0xc3f8('0x4e')](_0x4536bf);})[_0xc3f8('0x11')](function(){_0x4536bf=[];for(var _0x4dac11=0x0;_0x4dac11<_0x33c670[_0xc3f8('0x47')];_0x4dac11++){_0x4536bf[_0xc3f8('0x41')](updateUser(_0x33c670[_0x4dac11]));}return BPromise['all'](_0x4536bf);})[_0xc3f8('0x11')](function(){return BPromise[_0xc3f8('0x84')](_0x33c670,function(_0x1faa05){return db['User'][_0xc3f8('0x77')](_0x1faa05,{'include':[{'model':db[_0xc3f8('0x7d')],'as':_0xc3f8('0x7d')}]})['then'](function(_0x1704e5){_0x1faa05['id']=_0x1704e5['id'];return _0x1faa05;});});})[_0xc3f8('0x11')](function(_0x248316){if(_0x3cd57d[_0xc3f8('0x58')][_0xc3f8('0x29')]===_0xc3f8('0x2c'))return _0x248316;if(_0x3cd57d['user'][_0xc3f8('0x29')]!==_0xc3f8('0x2c'))return _0x248316;var _0x532750=_[_0xc3f8('0x81')](_0x248316,function(_0xe6f37d){return _0xe6f37d['role']===_0xc3f8('0x2e')||_0xe6f37d[_0xc3f8('0x29')]===_0xc3f8('0x30');});if(!_0x532750)return _0x248316;return db['UserProfileSection']['findAll']({'where':{'name':{'$or':[_0xc3f8('0x2d'),'Telephones']},'userProfileId':_0x3cd57d[_0xc3f8('0x2c')][_0xc3f8('0x7c')]},'raw':!![]})[_0xc3f8('0x11')](function(_0x4b885b){if(_[_0xc3f8('0x85')](_0x4b885b)||!_[_0xc3f8('0x81')](_0x4b885b,[_0xc3f8('0x7f'),0x0]))return _0x248316;_0x4536bf=[];var _0x42e2e1=_(_0x4b885b)[_0xc3f8('0x33')](function(_0x128bc8){if(_0x128bc8['autoAssociation']===0x1)return;return _0x128bc8[_0xc3f8('0x36')]===_0xc3f8('0x2d')?_0xc3f8('0x2e'):_0xc3f8('0x30');})[_0xc3f8('0x86')]()['value']();for(var _0x1fe97d=0x0;_0x1fe97d<_0x248316[_0xc3f8('0x47')];_0x1fe97d++){if(!_[_0xc3f8('0x3f')](_0x42e2e1,_0x248316[_0x1fe97d]['role']))return;var _0x429889=_0x248316[_0x1fe97d][_0xc3f8('0x29')]===_0xc3f8('0x2e')?_0xc3f8('0x2d'):_0xc3f8('0x2f');_0x4536bf['push'](db[_0xc3f8('0x87')][_0xc3f8('0x77')]({'name':_0x248316[_0x1fe97d][_0xc3f8('0x36')],'resourceId':_0x248316[_0x1fe97d]['id'],'type':_0x429889,'sectionId':_[_0xc3f8('0x35')](_0x4b885b,[_0xc3f8('0x36'),_0x429889])['id']},{}));}return BPromise[_0xc3f8('0x4e')](_0x4536bf);});})[_0xc3f8('0x11')](respondWithResult(_0x209748,0xc9))[_0xc3f8('0x1c')](handleError(_0x209748,null));};exports[_0xc3f8('0x88')]=function(_0x132d60,_0x259ff9){if(_0x132d60['body']['id']){delete _0x132d60['body']['id'];}return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x132d60['params']['id']}})[_0xc3f8('0x11')](function(_0x254bb0){if(!_0x254bb0)return null;if(_0x254bb0['id']===_0x132d60[_0xc3f8('0x2c')]['id']){if(!_0x132d60[_0xc3f8('0x58')]['oldPassword']||!_0x132d60[_0xc3f8('0x58')][_0xc3f8('0x89')]){throw new db['Sequelize'][(_0xc3f8('0x8a'))](_0xc3f8('0x8b'));}if(!_0x254bb0['authenticate'](_0x132d60['body']['oldPassword'])){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0x8d'));}if(_0x132d60[_0xc3f8('0x58')][_0xc3f8('0x8e')]===_0x132d60[_0xc3f8('0x58')][_0xc3f8('0x89')]){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))]('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x132d60['user'][_0xc3f8('0x29')]===_0xc3f8('0x2a')){if(!_0x132d60[_0xc3f8('0x58')][_0xc3f8('0x89')]){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0x8f'));}}else if(_0x132d60[_0xc3f8('0x2c')][_0xc3f8('0x29')]==='user'){if(!_0x132d60[_0xc3f8('0x58')]['newPassword']){throw new db['Sequelize'][(_0xc3f8('0x8a'))](_0xc3f8('0x8f'));}if(_0x254bb0[_0xc3f8('0x29')]!==_0xc3f8('0x2e')){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))]('Unauthorized');}}else{throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0x78'));}return _0x254bb0;})['then'](handleEntityNotFound(_0x259ff9,null))['then'](function(_0x14427e){return db[_0xc3f8('0x5c')]['findOne']({'attributes':['id',_0xc3f8('0x5e'),_0xc3f8('0x90'),'passwordHistoryLimit']})[_0xc3f8('0x11')](function(_0xfec26){if(_0xfec26[_0xc3f8('0x5e')])authService[_0xc3f8('0x5f')](_0x132d60[_0xc3f8('0x58')]['newPassword']);if(!_0xfec26[_0xc3f8('0x90')]||!_0x14427e['previousPasswords'])return _0x14427e;authService[_0xc3f8('0x91')](_0x132d60[_0xc3f8('0x58')]['newPassword'],_0x14427e[_0xc3f8('0x92')],_0xfec26[_0xc3f8('0x93')]);return _0x14427e;})[_0xc3f8('0x11')](saveUpdates({'password':_0x132d60[_0xc3f8('0x58')][_0xc3f8('0x89')],'passwordResetAt':_0x132d60[_0xc3f8('0x2c')]['id']==_0x132d60[_0xc3f8('0x57')]['id']?moment():null,'previousPasswords':authService[_0xc3f8('0x94')](_0x132d60[_0xc3f8('0x58')][_0xc3f8('0x89')],_0x14427e[_0xc3f8('0x92')])},null));})[_0xc3f8('0x11')](respondWithResult(_0x259ff9,null))[_0xc3f8('0x1c')](handleError(_0x259ff9,null));};exports[_0xc3f8('0x95')]=function(_0x38e365,_0x5085cf){var _0x31d6da=_0x38e365[_0xc3f8('0x58')][_0xc3f8('0x96')];return db['User'][_0xc3f8('0x35')]({'where':{'id':_0x38e365[_0xc3f8('0x57')]['id']},'attributes':['id','name',_0xc3f8('0x29'),'online',_0xc3f8('0x97'),'voicePause',_0xc3f8('0x98')]})[_0xc3f8('0x11')](handleEntityNotFound(_0x5085cf,null))[_0xc3f8('0x11')](function(_0x5b984d){if(_0x5b984d){if(!utils[_0xc3f8('0x99')](_0x31d6da)){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0x9a'));}return _0x5b984d[_0xc3f8('0x9b')+_[_0xc3f8('0x9c')](_0x31d6da[_0xc3f8('0x9d')]())+'Queues'](_0x38e365[_0xc3f8('0x58')][_0xc3f8('0x5b')],{'penalty':_0x38e365[_0xc3f8('0x58')][_0xc3f8('0x9e')]||0x0})[_0xc3f8('0x9f')](function(_0x4337be){for(var _0x2eab2c=0x0;_0x2eab2c<_0x38e365[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x2eab2c+=0x1){var _0x1cc82b={'UserId':Number(_0x38e365[_0xc3f8('0x57')]['id'])};_0x1cc82b[_[_0xc3f8('0x9c')](_0x31d6da[_0xc3f8('0x9d')]())+'QueueId']=Number(_0x38e365[_0xc3f8('0x58')]['ids'][_0x2eab2c]);socket[_0xc3f8('0xa0')]('user'+_['capitalize'](_0x31d6da[_0xc3f8('0x9d')]())+_0xc3f8('0xa1'),_0x1cc82b);}return _0x4337be;})[_0xc3f8('0x11')](function(){if(_0x31d6da==='voice'){return db['VoiceQueue'][_0xc3f8('0x43')]({'where':{'id':_0x38e365[_0xc3f8('0x58')][_0xc3f8('0x5b')]||[]},'raw':!![],'attributes':['id',_0xc3f8('0x36')]});}})[_0xc3f8('0x11')](function(_0x5ecde8){var _0x44948e=_0x5b984d[_0xc3f8('0x28')]({'plain':!![]});var _0x1e5530=[];if(_0x31d6da==='voice'&&_0x44948e['role']===_0xc3f8('0x2e')&&_0x44948e['online']){for(var _0x574a1b=0x0;_0x574a1b<_0x5ecde8['length'];_0x574a1b+=0x1){_0x1e5530[_0xc3f8('0x41')]({'membername':_0x44948e[_0xc3f8('0x36')],'UserId':_0x44948e['id'],'queue_name':_0x5ecde8[_0x574a1b][_0xc3f8('0x36')],'VoiceQueueId':_0x5ecde8[_0x574a1b]['id'],'interface':_[_0xc3f8('0xa2')](_0x44948e['interface'])?util[_0xc3f8('0xa3')](_0xc3f8('0xa4'),_0x44948e[_0xc3f8('0x36')]):_0x44948e['interface'],'paused':_0x44948e[_0xc3f8('0xa5')]||![],'penalty':_0x38e365[_0xc3f8('0x58')][_0xc3f8('0x9e')]||0x0});}return BPromise[_0xc3f8('0x84')](_0x1e5530,function(_0x2e95aa){return db['UserVoiceQueueRt'][_0xc3f8('0xa6')](_0x2e95aa);});}return _0x5b984d;});}})[_0xc3f8('0x11')](respondWithStatusCode(_0x5085cf,null))[_0xc3f8('0x1c')](handleError(_0x5085cf,null));};exports[_0xc3f8('0xa7')]=function(_0x450622,_0x21f724){var _0x488ec8;return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x450622['params']['id']},'attributes':['id',_0xc3f8('0x36'),_0xc3f8('0x29')]})[_0xc3f8('0x11')](handleEntityNotFound(_0x21f724,null))['then'](function(_0x38f806){if(_0x38f806){_0x488ec8=_0x38f806;if(!_0x450622['query'][_0xc3f8('0x96')]||!utils[_0xc3f8('0x99')](_0x450622[_0xc3f8('0x45')][_0xc3f8('0x96')])){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0x9a'));}return _0x38f806[_0xc3f8('0xa8')+_[_0xc3f8('0x9c')](_0x450622[_0xc3f8('0x45')][_0xc3f8('0x96')][_0xc3f8('0x9d')]())+_0xc3f8('0xa9')](_0x450622[_0xc3f8('0x45')][_0xc3f8('0x5b')]);}})[_0xc3f8('0x11')](function(_0x5a9d28){if(_[_0xc3f8('0xaa')](_0x450622[_0xc3f8('0x45')][_0xc3f8('0x5b')])){for(var _0x3a53a9=0x0;_0x3a53a9<_0x450622[_0xc3f8('0x45')]['ids'][_0xc3f8('0x47')];_0x3a53a9+=0x1){var _0x204330={'UserId':Number(_0x450622[_0xc3f8('0x57')]['id'])};_0x204330[_[_0xc3f8('0x9c')](_0x450622[_0xc3f8('0x45')][_0xc3f8('0x96')][_0xc3f8('0x9d')]())+'QueueId']=Number(_0x450622[_0xc3f8('0x45')]['ids'][_0x3a53a9]);socket['emit'](_0xc3f8('0x2c')+_[_0xc3f8('0x9c')](_0x450622[_0xc3f8('0x45')][_0xc3f8('0x96')][_0xc3f8('0x9d')]())+'Queue:remove',_0x204330);}}else{var _0x204330={'UserId':Number(_0x450622['params']['id'])};_0x204330[_[_0xc3f8('0x9c')](_0x450622[_0xc3f8('0x45')]['channel'][_0xc3f8('0x9d')]())+_0xc3f8('0xab')]=Number(_0x450622['query'][_0xc3f8('0x5b')]);socket[_0xc3f8('0xa0')](_0xc3f8('0x2c')+_[_0xc3f8('0x9c')](_0x450622[_0xc3f8('0x45')][_0xc3f8('0x96')][_0xc3f8('0x9d')]())+_0xc3f8('0xac'),_0x204330);}return _0x5a9d28;})[_0xc3f8('0x11')](function(){if(_0x450622[_0xc3f8('0x45')][_0xc3f8('0x96')]==='voice'){return db[_0xc3f8('0xad')]['destroy']({'where':{'UserId':_0x450622[_0xc3f8('0x57')]['id'],'VoiceQueueId':_0x450622['query'][_0xc3f8('0x5b')]},'individualHooks':!![]})[_0xc3f8('0x11')](function(){return _0x488ec8;});}return _0x488ec8;})['then'](respondWithStatusCode(_0x21f724,null))['catch'](handleError(_0x21f724,null));};exports['addAvatar']=function(_0x1a423a,_0xbc517d){_0x1a423a[_0xc3f8('0x58')][_0xc3f8('0xae')]=_0x1a423a[_0xc3f8('0xaf')][_0xc3f8('0xb0')];return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x1a423a[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0xbc517d,null))[_0xc3f8('0x11')](saveUpdates(_0x1a423a[_0xc3f8('0x58')],null))['then'](respondWithResult(_0xbc517d,null))[_0xc3f8('0x1c')](handleError(_0xbc517d,null));};exports[_0xc3f8('0xb1')]=function(_0x2dc74f,_0x31d2d5){var _0x18bacd=path[_0xc3f8('0xb2')](config[_0xc3f8('0xb3')],_0xc3f8('0xb4'));return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x2dc74f[_0xc3f8('0x57')]['id']},'attributes':['id',_0xc3f8('0xae')],'raw':!![]})[_0xc3f8('0x11')](handleEntityNotFound(_0x31d2d5,null))[_0xc3f8('0x11')](function(_0x3d088a){if(_0x3d088a){if(_[_0xc3f8('0xa2')](_0x3d088a[_0xc3f8('0xae')])){return _0x31d2d5[_0xc3f8('0xb5')](_0x18bacd);}else{if(!fs[_0xc3f8('0xb6')](path[_0xc3f8('0xb2')](config[_0xc3f8('0xb3')],_0xc3f8('0xb7'),_0x3d088a[_0xc3f8('0xae')]))){return _0x31d2d5[_0xc3f8('0xb5')](_0x18bacd);}return _0x31d2d5[_0xc3f8('0xb5')](path[_0xc3f8('0xb2')](config[_0xc3f8('0xb3')],_0xc3f8('0xb7'),_0x3d088a[_0xc3f8('0xae')]));}}})[_0xc3f8('0x1c')](handleError(_0x31d2d5,null));};exports[_0xc3f8('0xb8')]=function(_0x3a89ba,_0x4fb914){return db['User']['find']({'where':{'id':_0x3a89ba[_0xc3f8('0x57')]['id']},'attributes':['id']})[_0xc3f8('0x11')](handleEntityNotFound(_0x4fb914,null))[_0xc3f8('0x11')](function(_0x565405){var _0x5495a3=[];values=_0x565405['dataValues'];_0x5495a3[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x48'),_0x565405[_0xc3f8('0x49')]));_0x5495a3[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4a'),_0x565405['dataValues']));_0x5495a3['push'](get_open_tabs(_0xc3f8('0x4d'),_0x565405['dataValues']));_0x5495a3['push'](get_open_tabs(_0xc3f8('0xb9'),_0x565405[_0xc3f8('0x49')]));_0x5495a3['push'](get_open_tabs('fax',_0x565405[_0xc3f8('0x49')]));_0x5495a3[_0xc3f8('0x41')](get_open_tabs(_0xc3f8('0x4c'),_0x565405[_0xc3f8('0x49')]));return BPromise['all'](_0x5495a3);})[_0xc3f8('0x11')](function(_0x16a074){var _0x38b73a=[];if(_0x16a074){for(var _0x3284eb=0x0;_0x3284eb<values[_0xc3f8('0xba')]['length'];_0x3284eb++){var _0x513b34=values[_0xc3f8('0xba')][_0x3284eb];_0x38b73a[_0xc3f8('0x41')]({'channel':_0xc3f8('0xbb'),'id':_0x513b34['id'],'createdAt':_0x513b34[_0xc3f8('0xbc')]});}for(var _0x3284eb=0x0;_0x3284eb<values[_0xc3f8('0xbd')][_0xc3f8('0x47')];_0x3284eb++){var _0x513b34=values['FaxOpenTabs'][_0x3284eb];_0x38b73a[_0xc3f8('0x41')]({'channel':_0xc3f8('0xbe'),'id':_0x513b34['id'],'createdAt':_0x513b34[_0xc3f8('0xbc')]});}for(var _0x3284eb=0x0;_0x3284eb<values[_0xc3f8('0xbf')]['length'];_0x3284eb++){var _0x513b34=values['OpenchannelOpenTabs'][_0x3284eb];_0x38b73a['push']({'channel':_0xc3f8('0xc0'),'id':_0x513b34['id'],'createdAt':_0x513b34[_0xc3f8('0xbc')]});}for(var _0x3284eb=0x0;_0x3284eb<values[_0xc3f8('0xc1')][_0xc3f8('0x47')];_0x3284eb++){var _0x513b34=values[_0xc3f8('0xc1')][_0x3284eb];_0x38b73a[_0xc3f8('0x41')]({'channel':_0xc3f8('0xc2'),'id':_0x513b34['id'],'createdAt':_0x513b34['createdAt']});}for(var _0x3284eb=0x0;_0x3284eb<values[_0xc3f8('0xc3')][_0xc3f8('0x47')];_0x3284eb++){var _0x513b34=values[_0xc3f8('0xc3')][_0x3284eb];_0x38b73a[_0xc3f8('0x41')]({'channel':_0xc3f8('0xc4'),'id':_0x513b34['id'],'createdAt':_0x513b34[_0xc3f8('0xbc')]});}for(var _0x3284eb=0x0;_0x3284eb<values[_0xc3f8('0xc5')]['length'];_0x3284eb++){var _0x513b34=values[_0xc3f8('0xc5')][_0x3284eb];_0x38b73a['push']({'channel':_0xc3f8('0xc6'),'id':_0x513b34['id'],'createdAt':_0x513b34[_0xc3f8('0xbc')]});}var _0x131c87={'count':_0x38b73a['length'],'rows':_0x38b73a};return _0x131c87;}else return null;})['then'](respondWithResult(_0x4fb914,null))[_0xc3f8('0x1c')](handleError(_0x4fb914,null));};exports[_0xc3f8('0xc7')]=function(_0x2aceb8,_0x3c97ba){var _0x2a638d={};var _0x38f7c4={};var _0x5f3167;var _0x97caf1;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x2aceb8['params']['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x3c97ba,null))[_0xc3f8('0x11')](function(_0x56e0bc){if(_0x56e0bc){_0x5f3167=_0x56e0bc;_0x38f7c4['model']=_[_0xc3f8('0x52')](db['CmContact'][_0xc3f8('0x39')]);_0x38f7c4['query']=_[_0xc3f8('0x52')](_0x2aceb8[_0xc3f8('0x45')]);_0x38f7c4[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x38f7c4[_0xc3f8('0x50')],_0x38f7c4['query']);_0x2a638d[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x38f7c4[_0xc3f8('0x50')],qs['fields'](_0x2aceb8[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x2a638d[_0xc3f8('0x40')]=_0x2a638d[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x2a638d[_0xc3f8('0x40')]:_0x38f7c4['model'];_0x2a638d['order']=qs[_0xc3f8('0xca')](_0x2aceb8[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x2a638d[_0xc3f8('0xcb')]=qs['filters'](_[_0xc3f8('0xcc')](_0x2aceb8[_0xc3f8('0x45')],_0x38f7c4[_0xc3f8('0xc9')]));if(_0x2aceb8['query'][_0xc3f8('0x31')]){_0x2a638d[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x2a638d[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x2a638d[_0xc3f8('0x40')],function(_0x103abc){var _0x2ce7e3={};_0x2ce7e3[_0x103abc]={'$like':'%'+_0x2aceb8[_0xc3f8('0x45')]['filter']+'%'};return _0x2ce7e3;})});}_0x2a638d=_[_0xc3f8('0xcd')]({},_0x2a638d,_0x2aceb8[_0xc3f8('0x56')]);return _0x5f3167[_0xc3f8('0xc7')](_0x2a638d);}})[_0xc3f8('0x11')](function(_0x2a5927){if(_0x2a5927){_0x97caf1=_0x2a5927[_0xc3f8('0x47')];if(_0x2aceb8['query']['hasOwnProperty'](_0xc3f8('0x55'))){_0x2a638d['include']=[{'model':db[_0xc3f8('0xce')],'as':_0xc3f8('0xcf'),'required':![]},{'model':db[_0xc3f8('0xd0')],'as':_0xc3f8('0xd1'),'attributes':['id',_0xc3f8('0x36'),'color'],'where':_0x2aceb8['query'][_0xc3f8('0xd2')]?{'id':_0x2aceb8[_0xc3f8('0x45')][_0xc3f8('0xd2')]}:undefined,'required':_0x2aceb8[_0xc3f8('0x45')][_0xc3f8('0xd2')]?!![]:![]}];}if(!_0x2aceb8[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x2a638d['limit']=qs[_0xc3f8('0x21')](_0x2aceb8[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x2a638d[_0xc3f8('0x20')]=qs['offset'](_0x2aceb8[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x5f3167['getContacts'](_0x2a638d);}})[_0xc3f8('0x11')](function(_0x4da608){if(_0x4da608){return _0x4da608?{'count':_0x97caf1,'rows':_0x4da608}:null;}})['then'](respondWithResult(_0x3c97ba,null))[_0xc3f8('0x1c')](handleError(_0x3c97ba,null));};exports['getQueues']=function(_0x10bd96,_0x2db24){var _0x569f62;var _0x48c8bb;var _0x4ce116={};var _0x46cedb;return db['User']['findOne']({'where':{'id':_0x10bd96[_0xc3f8('0x57')]['id']},'attributes':['id','name','role']})[_0xc3f8('0x11')](handleEntityNotFound(_0x2db24,null))[_0xc3f8('0x11')](function(_0x82ad5c){if(!utils[_0xc3f8('0x99')](_0x10bd96['query'][_0xc3f8('0x96')])){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0x9a'));}_0x569f62=_0x82ad5c;var _0x6cdcf5={};_0x6cdcf5[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_[_0xc3f8('0x9c')](_0x10bd96[_0xc3f8('0x45')][_0xc3f8('0x96')])+'Queue'][_0xc3f8('0x39')]);_0x6cdcf5[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x10bd96[_0xc3f8('0x45')]);_0x6cdcf5[_0xc3f8('0xc9')]=_['intersection'](_0x6cdcf5[_0xc3f8('0x50')],_0x6cdcf5[_0xc3f8('0x45')]);_0x4ce116[_0xc3f8('0x40')]=_['intersection'](_0x6cdcf5[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x10bd96['query'][_0xc3f8('0x54')]));_0x4ce116[_0xc3f8('0x40')]=_0x4ce116[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x4ce116[_0xc3f8('0x40')]:_0x6cdcf5[_0xc3f8('0x50')];_0x4ce116[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x10bd96[_0xc3f8('0x45')]['sort']);_0x4ce116[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x10bd96['query'],_0x6cdcf5['filters']));if(_0x10bd96[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x4ce116[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x4ce116[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x4ce116[_0xc3f8('0x40')],function(_0x2d6f8b){var _0x1e1587={};_0x1e1587[_0x2d6f8b]={'$like':'%'+_0x10bd96[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x1e1587;})});}_0x4ce116=_[_0xc3f8('0xcd')]({},_0x4ce116,_0x10bd96['options']);switch(_0x569f62[_0xc3f8('0x29')]){case _0xc3f8('0x2a'):return db[_[_0xc3f8('0x9c')](_0x10bd96[_0xc3f8('0x45')][_0xc3f8('0x96')])+_0xc3f8('0xd6')][_0xc3f8('0x43')](_0x4ce116);case _0xc3f8('0x2c'):case _0xc3f8('0x2e'):return _0x569f62['get'+_['capitalize'](_0x10bd96[_0xc3f8('0x45')][_0xc3f8('0x96')])+_0xc3f8('0xa9')](_0x4ce116);default:throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0xd7'));}})[_0xc3f8('0x11')](function(_0x2a36a9){_0x46cedb=_0x2a36a9[_0xc3f8('0x47')];if(!_0x10bd96['query'][_0xc3f8('0xd3')]('nolimit')){_0x4ce116['limit']=qs[_0xc3f8('0x21')](_0x10bd96['query']['limit']);_0x4ce116['offset']=qs[_0xc3f8('0x20')](_0x10bd96['query'][_0xc3f8('0x20')]);}switch(_0x569f62[_0xc3f8('0x29')]){case'admin':return db[_[_0xc3f8('0x9c')](_0x10bd96[_0xc3f8('0x45')][_0xc3f8('0x96')])+_0xc3f8('0xd6')]['findAll'](_0x4ce116);case _0xc3f8('0x2c'):case _0xc3f8('0x2e'):return _0x569f62[_0xc3f8('0x28')+_[_0xc3f8('0x9c')](_0x10bd96['query'][_0xc3f8('0x96')])+_0xc3f8('0xa9')](_0x4ce116);}})['then'](function(_0xd512ad){return{'count':_0x46cedb,'rows':_0xd512ad};})[_0xc3f8('0x11')](respondWithResult(_0x2db24,null))[_0xc3f8('0x1c')](handleError(_0x2db24,null));};exports[_0xc3f8('0xd8')]=function(_0x3f7dd0,_0x371de5){var _0x44d716={};var _0x97ce27={};var _0x2a9310;var _0x39dad0;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x3f7dd0['params']['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x371de5,null))[_0xc3f8('0x11')](function(_0x5d740f){if(_0x5d740f){_0x2a9310=_0x5d740f;_0x97ce27[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xad')][_0xc3f8('0x39')]);_0x97ce27['query']=_[_0xc3f8('0x52')](_0x3f7dd0['query']);_0x97ce27[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x97ce27[_0xc3f8('0x50')],_0x97ce27[_0xc3f8('0x45')]);_0x44d716[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x97ce27[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x3f7dd0[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x44d716[_0xc3f8('0x40')]=_0x44d716[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x44d716['attributes']:_0x97ce27[_0xc3f8('0x50')];_0x44d716[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x3f7dd0[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x44d716[_0xc3f8('0xcb')]=qs['filters'](_['pick'](_0x3f7dd0[_0xc3f8('0x45')],_0x97ce27[_0xc3f8('0xc9')]));if(_0x3f7dd0[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x44d716[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x44d716[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x44d716[_0xc3f8('0x40')],function(_0xb57378){var _0x5cbb57={};_0x5cbb57[_0xb57378]={'$like':'%'+_0x3f7dd0[_0xc3f8('0x45')]['filter']+'%'};return _0x5cbb57;})});}_0x44d716=_[_0xc3f8('0xcd')]({},_0x44d716,_0x3f7dd0[_0xc3f8('0x56')]);return _0x2a9310[_0xc3f8('0xd8')](_0x44d716);}})['then'](function(_0xcf6a3e){if(_0xcf6a3e){_0x39dad0=_0xcf6a3e[_0xc3f8('0x47')];if(!_0x3f7dd0['query']['hasOwnProperty'](_0xc3f8('0xd4'))){_0x44d716[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x3f7dd0['query']['limit']);_0x44d716[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x3f7dd0[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x2a9310[_0xc3f8('0xd8')](_0x44d716);}})[_0xc3f8('0x11')](function(_0x5b75f9){if(_0x5b75f9){return _0x5b75f9?{'count':_0x39dad0,'rows':_0x5b75f9}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x371de5,null))[_0xc3f8('0x1c')](handleError(_0x371de5,null));};exports[_0xc3f8('0xd9')]=function(_0x2d2b55,_0x2966be){var _0x5b19ea={};var _0x26c6b8={};var _0x7dc9a;var _0x2e2558;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x2d2b55[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x2966be,null))[_0xc3f8('0x11')](function(_0x499f6a){if(_0x499f6a){_0x7dc9a=_0x499f6a;_0x26c6b8[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xda')][_0xc3f8('0x39')]);_0x26c6b8[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x2d2b55['query']);_0x26c6b8[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x26c6b8['model'],_0x26c6b8[_0xc3f8('0x45')]);_0x5b19ea[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x26c6b8[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x2d2b55[_0xc3f8('0x45')]['fields']));_0x5b19ea[_0xc3f8('0x40')]=_0x5b19ea[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x5b19ea['attributes']:_0x26c6b8[_0xc3f8('0x50')];_0x5b19ea['order']=qs[_0xc3f8('0xca')](_0x2d2b55[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x5b19ea[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x2d2b55[_0xc3f8('0x45')],_0x26c6b8[_0xc3f8('0xc9')]));if(_0x2d2b55['query']['filter']){_0x5b19ea['where']=_[_0xc3f8('0xcd')](_0x5b19ea['where'],{'$or':_['map'](_0x5b19ea['attributes'],function(_0xba7d31){var _0x446ba4={};_0x446ba4[_0xba7d31]={'$like':'%'+_0x2d2b55[_0xc3f8('0x45')]['filter']+'%'};return _0x446ba4;})});}_0x5b19ea=_['merge']({},_0x5b19ea,_0x2d2b55['options']);return _0x7dc9a['getGroups'](_0x5b19ea);}})['then'](function(_0x38714a){if(_0x38714a){_0x2e2558=_0x38714a[_0xc3f8('0x47')];if(!_0x2d2b55[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x5b19ea[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x2d2b55[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x5b19ea[_0xc3f8('0x20')]=qs['offset'](_0x2d2b55[_0xc3f8('0x45')]['offset']);}return _0x7dc9a['getGroups'](_0x5b19ea);}})[_0xc3f8('0x11')](function(_0x2ed4a6){if(_0x2ed4a6){return _0x2ed4a6?{'count':_0x2e2558,'rows':_0x2ed4a6}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x2966be,null))['catch'](handleError(_0x2966be,null));};exports[_0xc3f8('0xdb')]=function(_0x38d0ec,_0x254e56){var _0x5cd036={'raw':!![],'where':{}};var _0x5de922={};var _0x4bb992={'count':0x0,'rows':[]};return db[_0xc3f8('0x42')]['findOne']({'where':{'id':_0x38d0ec[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x254e56,null))[_0xc3f8('0x11')](function(_0x47bb2e){if(_0x47bb2e){_0x5de922[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xdc')][_0xc3f8('0x39')]);_0x5de922[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x38d0ec[_0xc3f8('0x45')]);_0x5de922[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x5de922['model'],_0x5de922['query']);_0x5cd036[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x5de922[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x38d0ec[_0xc3f8('0x45')]['fields']));_0x5cd036[_0xc3f8('0x40')]=_0x5cd036[_0xc3f8('0x40')]['length']?_0x5cd036[_0xc3f8('0x40')]:_0x5de922[_0xc3f8('0x50')];if(!_0x38d0ec[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x5cd036[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x38d0ec['query']['limit']);_0x5cd036[_0xc3f8('0x20')]=qs['offset'](_0x38d0ec['query'][_0xc3f8('0x20')]);}_0x5cd036[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x38d0ec[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x5cd036[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x38d0ec['query'],_0x5de922[_0xc3f8('0xc9')]));_0x5cd036[_0xc3f8('0xcb')][_0xc3f8('0xdd')]=_0x47bb2e['id'];if(_0x38d0ec[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x5cd036[_0xc3f8('0xcb')]=_['merge'](_0x5cd036[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x5cd036[_0xc3f8('0x40')],function(_0x37775f){var _0x398d59={};_0x398d59[_0x37775f]={'$like':'%'+_0x38d0ec[_0xc3f8('0x45')]['filter']+'%'};return _0x398d59;})});}_0x5cd036=_[_0xc3f8('0xcd')]({},_0x5cd036,_0x38d0ec[_0xc3f8('0x56')]);return db[_0xc3f8('0xdc')]['count']({'where':_0x5cd036['where']})[_0xc3f8('0x11')](function(_0x5a73cc){_0x4bb992[_0xc3f8('0x23')]=_0x5a73cc;if(_0x38d0ec[_0xc3f8('0x45')][_0xc3f8('0x55')]){_0x5cd036[_0xc3f8('0x3e')]=[{'all':!![]}];}return db[_0xc3f8('0xdc')][_0xc3f8('0x43')](_0x5cd036);})['then'](function(_0x32e2a1){_0x4bb992['rows']=_0x32e2a1;return _0x4bb992;});}})[_0xc3f8('0x11')](respondWithFilteredResult(_0x254e56,_0x5cd036))['catch'](handleError(_0x254e56,null));};exports['getScreenRecordings']=function(_0x239ddc,_0x539c13){var _0x4e7ce5={'raw':!![],'where':{}};var _0x64fffa={};var _0x2904a1={'count':0x0,'rows':[]};return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x239ddc[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x539c13,null))[_0xc3f8('0x11')](function(_0x2243cc){if(_0x2243cc){_0x64fffa[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xde')][_0xc3f8('0x39')]);_0x64fffa[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x239ddc['query']);_0x64fffa[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x64fffa['model'],_0x64fffa[_0xc3f8('0x45')]);_0x4e7ce5[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x64fffa['model'],qs['fields'](_0x239ddc[_0xc3f8('0x45')]['fields']));_0x4e7ce5[_0xc3f8('0x40')]=_0x4e7ce5['attributes'][_0xc3f8('0x47')]?_0x4e7ce5[_0xc3f8('0x40')]:_0x64fffa[_0xc3f8('0x50')];if(!_0x239ddc[_0xc3f8('0x45')][_0xc3f8('0xd3')]('nolimit')){_0x4e7ce5[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x239ddc[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x4e7ce5[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x239ddc[_0xc3f8('0x45')][_0xc3f8('0x20')]);}_0x4e7ce5[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x239ddc[_0xc3f8('0x45')]['sort']);_0x4e7ce5[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x239ddc[_0xc3f8('0x45')],_0x64fffa[_0xc3f8('0xc9')]));_0x4e7ce5[_0xc3f8('0xcb')]['UserId']=_0x2243cc['id'];if(_0x239ddc[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x4e7ce5[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x4e7ce5[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x4e7ce5[_0xc3f8('0x40')],function(_0x3f3637){var _0x4a5e52={};_0x4a5e52[_0x3f3637]={'$like':'%'+_0x239ddc[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x4a5e52;})});}_0x4e7ce5=_['merge']({},_0x4e7ce5,_0x239ddc['options']);return db['ScreenRecording'][_0xc3f8('0x23')]({'where':_0x4e7ce5[_0xc3f8('0xcb')]})['then'](function(_0x22c204){_0x2904a1[_0xc3f8('0x23')]=_0x22c204;if(_0x239ddc[_0xc3f8('0x45')][_0xc3f8('0x55')]){_0x4e7ce5[_0xc3f8('0x3e')]=[{'all':!![]}];}return db[_0xc3f8('0xde')]['findAll'](_0x4e7ce5);})[_0xc3f8('0x11')](function(_0x3d3c52){_0x2904a1['rows']=_0x3d3c52;return _0x2904a1;});}})[_0xc3f8('0x11')](respondWithFilteredResult(_0x539c13,_0x4e7ce5))[_0xc3f8('0x1c')](handleError(_0x539c13,null));};exports[_0xc3f8('0xdf')]=function(_0x5093dd,_0x6a4adb){var _0x47b275={};var _0x4cb7e3={};var _0x37d4de;var _0x553349;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x5093dd[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x6a4adb,null))[_0xc3f8('0x11')](function(_0x386dc0){if(_0x386dc0){_0x37d4de=_0x386dc0;_0x4cb7e3[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xe0')][_0xc3f8('0x39')]);_0x4cb7e3['query']=_['keys'](_0x5093dd[_0xc3f8('0x45')]);_0x4cb7e3[_0xc3f8('0xc9')]=_['intersection'](_0x4cb7e3['model'],_0x4cb7e3[_0xc3f8('0x45')]);_0x47b275[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x4cb7e3['model'],qs['fields'](_0x5093dd[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x47b275[_0xc3f8('0x40')]=_0x47b275[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x47b275[_0xc3f8('0x40')]:_0x4cb7e3[_0xc3f8('0x50')];_0x47b275['order']=qs['sort'](_0x5093dd['query']['sort']);_0x47b275[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_['pick'](_0x5093dd[_0xc3f8('0x45')],_0x4cb7e3[_0xc3f8('0xc9')]));if(_0x5093dd[_0xc3f8('0x45')]['filter']){_0x47b275[_0xc3f8('0xcb')]=_['merge'](_0x47b275[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x47b275[_0xc3f8('0x40')],function(_0x110a51){var _0x407da5={};_0x407da5[_0x110a51]={'$like':'%'+_0x5093dd[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x407da5;})});}_0x47b275=_[_0xc3f8('0xcd')]({},_0x47b275,_0x5093dd[_0xc3f8('0x56')]);return _0x37d4de['getChatInteractions'](_0x47b275);}})['then'](function(_0x43f015){if(_0x43f015){_0x553349=_0x43f015['length'];if(!_0x5093dd[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x47b275[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x5093dd[_0xc3f8('0x45')]['limit']);_0x47b275[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x5093dd['query']['offset']);}return _0x37d4de[_0xc3f8('0xdf')](_0x47b275);}})[_0xc3f8('0x11')](function(_0x3a32b1){if(_0x3a32b1){return _0x3a32b1?{'count':_0x553349,'rows':_0x3a32b1}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x6a4adb,null))[_0xc3f8('0x1c')](handleError(_0x6a4adb,null));};exports[_0xc3f8('0xe1')]=function(_0x20105b,_0x5eb30a){var _0x5e7826={};var _0x6f6f13={};var _0x289f24;var _0x329101;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x20105b['params']['id']}})['then'](handleEntityNotFound(_0x5eb30a,null))[_0xc3f8('0x11')](function(_0x529352){if(_0x529352){_0x289f24=_0x529352;_0x6f6f13[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xe2')][_0xc3f8('0x39')]);_0x6f6f13[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x20105b[_0xc3f8('0x45')]);_0x6f6f13['filters']=_[_0xc3f8('0x53')](_0x6f6f13['model'],_0x6f6f13[_0xc3f8('0x45')]);_0x5e7826[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x6f6f13[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x20105b[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x5e7826['attributes']=_0x5e7826[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x5e7826[_0xc3f8('0x40')]:_0x6f6f13['model'];_0x5e7826[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x20105b[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x5e7826[_0xc3f8('0xcb')]=qs['filters'](_[_0xc3f8('0xcc')](_0x20105b['query'],_0x6f6f13['filters']));if(_0x20105b['query'][_0xc3f8('0x31')]){_0x5e7826[_0xc3f8('0xcb')]=_['merge'](_0x5e7826[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x5e7826[_0xc3f8('0x40')],function(_0x144687){var _0x34518f={};_0x34518f[_0x144687]={'$like':'%'+_0x20105b[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x34518f;})});}_0x5e7826=_[_0xc3f8('0xcd')]({},_0x5e7826,_0x20105b[_0xc3f8('0x56')]);return _0x289f24[_0xc3f8('0xe1')](_0x5e7826);}})['then'](function(_0x28491a){if(_0x28491a){_0x329101=_0x28491a['length'];if(!_0x20105b[_0xc3f8('0x45')]['hasOwnProperty'](_0xc3f8('0xd4'))){_0x5e7826[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x20105b['query'][_0xc3f8('0x21')]);_0x5e7826[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x20105b[_0xc3f8('0x45')]['offset']);}return _0x289f24[_0xc3f8('0xe1')](_0x5e7826);}})['then'](function(_0x22c521){if(_0x22c521){return _0x22c521?{'count':_0x329101,'rows':_0x22c521}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x5eb30a,null))[_0xc3f8('0x1c')](handleError(_0x5eb30a,null));};exports[_0xc3f8('0xe3')]=function(_0x425724,_0x2aca06){var _0x1a696a={'raw':!![],'where':{}};var _0x4d242d={};var _0x308989={'count':0x0,'rows':[]};return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x425724[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x2aca06,null))[_0xc3f8('0x11')](function(_0x33d28a){if(_0x33d28a){_0x4d242d[_0xc3f8('0x50')]=_['keys'](db['MailInteraction'][_0xc3f8('0x39')]);_0x4d242d['query']=_['keys'](_0x425724[_0xc3f8('0x45')]);_0x4d242d[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x4d242d[_0xc3f8('0x50')],_0x4d242d['query']);_0x1a696a['attributes']=_[_0xc3f8('0x53')](_0x4d242d['model'],qs[_0xc3f8('0x54')](_0x425724[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x1a696a[_0xc3f8('0x40')]=_0x1a696a[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x1a696a[_0xc3f8('0x40')]:_0x4d242d[_0xc3f8('0x50')];if(!_0x425724[_0xc3f8('0x45')]['hasOwnProperty']('nolimit')){_0x1a696a['limit']=qs[_0xc3f8('0x21')](_0x425724[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x1a696a[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x425724[_0xc3f8('0x45')][_0xc3f8('0x20')]);}_0x1a696a[_0xc3f8('0xd5')]=qs['sort'](_0x425724[_0xc3f8('0x45')]['sort']);_0x1a696a[_0xc3f8('0xcb')]=qs['filters'](_[_0xc3f8('0xcc')](_0x425724[_0xc3f8('0x45')],_0x4d242d[_0xc3f8('0xc9')]));_0x1a696a[_0xc3f8('0xcb')][_0xc3f8('0xdd')]=_0x33d28a['id'];if(_0x425724[_0xc3f8('0x45')]['filter']){_0x1a696a[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x1a696a[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x1a696a[_0xc3f8('0x40')],function(_0x4a512e){var _0x186e21={};_0x186e21[_0x4a512e]={'$like':'%'+_0x425724[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x186e21;})});}_0x1a696a=_['merge']({},_0x1a696a,_0x425724[_0xc3f8('0x56')]);return db[_0xc3f8('0xe4')][_0xc3f8('0x23')]({'where':_0x1a696a[_0xc3f8('0xcb')]})[_0xc3f8('0x11')](function(_0x199ec4){_0x308989[_0xc3f8('0x23')]=_0x199ec4;if(_0x425724[_0xc3f8('0x45')]['includeAll']){_0x1a696a['include']=[{'all':!![]}];}return db[_0xc3f8('0xe4')][_0xc3f8('0x43')](_0x1a696a);})[_0xc3f8('0x11')](function(_0x506be2){_0x308989[_0xc3f8('0x44')]=_0x506be2;return _0x308989;});}})['then'](respondWithFilteredResult(_0x2aca06,_0x1a696a))[_0xc3f8('0x1c')](handleError(_0x2aca06,null));};exports[_0xc3f8('0xe5')]=function(_0xc1df6b,_0x18aacd){var _0x5d4557={};var _0x9b2cf6={};var _0x1f6c05;var _0x7c6d68;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0xc1df6b[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x18aacd,null))[_0xc3f8('0x11')](function(_0x4ff67f){if(_0x4ff67f){_0x1f6c05=_0x4ff67f;_0x9b2cf6[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xe6')][_0xc3f8('0x39')]);_0x9b2cf6[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0xc1df6b[_0xc3f8('0x45')]);_0x9b2cf6[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x9b2cf6['model'],_0x9b2cf6[_0xc3f8('0x45')]);_0x5d4557[_0xc3f8('0x40')]=_['intersection'](_0x9b2cf6[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0xc1df6b[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x5d4557[_0xc3f8('0x40')]=_0x5d4557[_0xc3f8('0x40')]['length']?_0x5d4557[_0xc3f8('0x40')]:_0x9b2cf6[_0xc3f8('0x50')];_0x5d4557[_0xc3f8('0xd5')]=qs['sort'](_0xc1df6b['query'][_0xc3f8('0xca')]);_0x5d4557[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_['pick'](_0xc1df6b[_0xc3f8('0x45')],_0x9b2cf6[_0xc3f8('0xc9')]));if(_0xc1df6b['query'][_0xc3f8('0x31')]){_0x5d4557[_0xc3f8('0xcb')]=_['merge'](_0x5d4557[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x5d4557['attributes'],function(_0x4e6e12){var _0x4c00b1={};_0x4c00b1[_0x4e6e12]={'$like':'%'+_0xc1df6b['query'][_0xc3f8('0x31')]+'%'};return _0x4c00b1;})});}_0x5d4557=_[_0xc3f8('0xcd')]({},_0x5d4557,_0xc1df6b[_0xc3f8('0x56')]);return _0x1f6c05[_0xc3f8('0xe5')](_0x5d4557);}})['then'](function(_0x3f55ea){if(_0x3f55ea){_0x7c6d68=_0x3f55ea[_0xc3f8('0x47')];if(!_0xc1df6b[_0xc3f8('0x45')]['hasOwnProperty'](_0xc3f8('0xd4'))){_0x5d4557['limit']=qs[_0xc3f8('0x21')](_0xc1df6b[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x5d4557[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0xc1df6b[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x1f6c05[_0xc3f8('0xe5')](_0x5d4557);}})[_0xc3f8('0x11')](function(_0xf25666){if(_0xf25666){return _0xf25666?{'count':_0x7c6d68,'rows':_0xf25666}:null;}})['then'](respondWithResult(_0x18aacd,null))[_0xc3f8('0x1c')](handleError(_0x18aacd,null));};exports[_0xc3f8('0xe7')]=function(_0x2cf486,_0x13d388){var _0x3d8eea={};var _0x2c9290={};var _0x4d60bb;var _0x22722c;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x2cf486[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x13d388,null))['then'](function(_0x15d341){if(_0x15d341){_0x4d60bb=_0x15d341;_0x2c9290[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0xe8')][_0xc3f8('0x39')]);_0x2c9290[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x2cf486['query']);_0x2c9290[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x2c9290[_0xc3f8('0x50')],_0x2c9290[_0xc3f8('0x45')]);_0x3d8eea[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x2c9290['model'],qs[_0xc3f8('0x54')](_0x2cf486[_0xc3f8('0x45')]['fields']));_0x3d8eea[_0xc3f8('0x40')]=_0x3d8eea[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x3d8eea[_0xc3f8('0x40')]:_0x2c9290[_0xc3f8('0x50')];_0x3d8eea['order']=qs[_0xc3f8('0xca')](_0x2cf486['query'][_0xc3f8('0xca')]);_0x3d8eea[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_['pick'](_0x2cf486['query'],_0x2c9290[_0xc3f8('0xc9')]));if(_0x2cf486[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x3d8eea[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x3d8eea[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x3d8eea[_0xc3f8('0x40')],function(_0x15cecb){var _0x289844={};_0x289844[_0x15cecb]={'$like':'%'+_0x2cf486[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x289844;})});}_0x3d8eea=_[_0xc3f8('0xcd')]({},_0x3d8eea,_0x2cf486[_0xc3f8('0x56')]);return _0x4d60bb['getFaxInteractions'](_0x3d8eea);}})[_0xc3f8('0x11')](function(_0x5e7dca){if(_0x5e7dca){_0x22722c=_0x5e7dca[_0xc3f8('0x47')];if(!_0x2cf486[_0xc3f8('0x45')]['hasOwnProperty'](_0xc3f8('0xd4'))){_0x3d8eea[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x2cf486[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x3d8eea[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x2cf486['query'][_0xc3f8('0x20')]);}return _0x4d60bb[_0xc3f8('0xe7')](_0x3d8eea);}})[_0xc3f8('0x11')](function(_0x4f9d7c){if(_0x4f9d7c){return _0x4f9d7c?{'count':_0x22722c,'rows':_0x4f9d7c}:null;}})['then'](respondWithResult(_0x13d388,null))[_0xc3f8('0x1c')](handleError(_0x13d388,null));};exports[_0xc3f8('0xe9')]=function(_0x10145f,_0x1c6f8c){var _0x7785ae={};var _0x565e00={};var _0x53deb2;var _0x40f70d;return db[_0xc3f8('0x42')]['findOne']({'where':{'id':_0x10145f[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x1c6f8c,null))['then'](function(_0x268a5c){if(_0x268a5c){_0x53deb2=_0x268a5c;_0x565e00[_0xc3f8('0x50')]=_['keys'](db[_0xc3f8('0xea')]['rawAttributes']);_0x565e00[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x10145f[_0xc3f8('0x45')]);_0x565e00[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x565e00['model'],_0x565e00[_0xc3f8('0x45')]);_0x7785ae['attributes']=_['intersection'](_0x565e00[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x10145f[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x7785ae['attributes']=_0x7785ae[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x7785ae[_0xc3f8('0x40')]:_0x565e00[_0xc3f8('0x50')];_0x7785ae[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x10145f[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x7785ae[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x10145f[_0xc3f8('0x45')],_0x565e00['filters']));if(_0x10145f[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x7785ae[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x7785ae[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x7785ae[_0xc3f8('0x40')],function(_0x4dc9a6){var _0x4b52fb={};_0x4b52fb[_0x4dc9a6]={'$like':'%'+_0x10145f['query'][_0xc3f8('0x31')]+'%'};return _0x4b52fb;})});}_0x7785ae=_['merge']({},_0x7785ae,_0x10145f[_0xc3f8('0x56')]);return _0x53deb2[_0xc3f8('0xe9')](_0x7785ae);}})['then'](function(_0x2f49af){if(_0x2f49af){_0x40f70d=_0x2f49af[_0xc3f8('0x47')];if(!_0x10145f[_0xc3f8('0x45')]['hasOwnProperty'](_0xc3f8('0xd4'))){_0x7785ae[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x10145f[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x7785ae['offset']=qs['offset'](_0x10145f['query'][_0xc3f8('0x20')]);}return _0x53deb2['getWhatsappInteractions'](_0x7785ae);}})[_0xc3f8('0x11')](function(_0x2dc1dd){if(_0x2dc1dd){return _0x2dc1dd?{'count':_0x40f70d,'rows':_0x2dc1dd}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x1c6f8c,null))[_0xc3f8('0x1c')](handleError(_0x1c6f8c,null));};exports[_0xc3f8('0xeb')]=function(_0x516a75,_0x36bdcb,_0xf49df8){var _0x24b52f;var _0x5eaeca;var _0x1a42fa;var _0x36d0e1=!_[_0xc3f8('0xa2')](_0x516a75[_0xc3f8('0x57')]['id'])?_0x516a75[_0xc3f8('0x57')]['id']:!_[_0xc3f8('0xa2')](_0x516a75[_0xc3f8('0x2c')]['id'])?_0x516a75[_0xc3f8('0x2c')]['id']:null;return db['User'][_0xc3f8('0x35')]({'where':{'id':_0x36d0e1,'role':{'$or':[_0xc3f8('0x2a'),_0xc3f8('0x2c'),_0xc3f8('0x2e')]}},'attributes':['id',_0xc3f8('0x36'),_0xc3f8('0xec'),_0xc3f8('0xed'),_0xc3f8('0x29'),_0xc3f8('0x61'),_0xc3f8('0x97')]})['then'](function(_0x1004d7){if(_0x1004d7){if(_0x1004d7[_0xc3f8('0x29')]===_0xc3f8('0x2e')){_0x24b52f=_0x1004d7;if(_0x516a75['body'][_0xc3f8('0x98')]){_0x1a42fa=util['format'](_0xc3f8('0xee'),_0x24b52f[_0x516a75[_0xc3f8('0x58')][_0xc3f8('0x98')]]);}else if(_0x516a75[_0xc3f8('0x58')][_0xc3f8('0xef')]){_0x1a42fa=util[_0xc3f8('0xa3')]('SIP/%s',_0x516a75[_0xc3f8('0x58')][_0xc3f8('0xef')]);}else{_0x1a42fa=util[_0xc3f8('0xa3')]('SIP/%s',_0x24b52f[_0xc3f8('0x36')]);}socket['to'](util[_0xc3f8('0xa3')]('user:%s',_0x24b52f[_0xc3f8('0x36')]))[_0xc3f8('0xa0')](_0xc3f8('0xf0'),{'user':{'id':_0x24b52f['id'],'name':_0x24b52f[_0xc3f8('0x36')]},'ip':_0x516a75[_0xc3f8('0xf1')][_0xc3f8('0xf2')]||_0x516a75[_0xc3f8('0xf3')][_0xc3f8('0xf4')]||_0x516a75['socket'][_0xc3f8('0xf4')]||_0x516a75[_0xc3f8('0xf3')][_0xc3f8('0xf5')]['remoteAddress']});return db[_0xc3f8('0xad')][_0xc3f8('0x27')]({'where':{'membername':_0x24b52f['name']},'individualHooks':!![]});}}else{throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0xc3f8('0x11')](function(){if(_0x24b52f){return _0x24b52f[_0xc3f8('0xf6')]({'raw':!![]});}})[_0xc3f8('0x11')](function(_0x38fea4){if(_0x24b52f){var _0x3bb412=[];if(_0x38fea4){_0x5eaeca=_0x38fea4;if(_0x5eaeca[_0xc3f8('0x47')]){for(var _0xdd825f=0x0;_0xdd825f<_0x5eaeca[_0xc3f8('0x47')];_0xdd825f++){_0x3bb412[_0xc3f8('0x41')]({'membername':_0x24b52f[_0xc3f8('0x36')],'UserId':_0x24b52f['id'],'queue_name':_0x5eaeca[_0xdd825f][_0xc3f8('0x36')],'VoiceQueueId':_0x5eaeca[_0xdd825f]['id'],'interface':_0x1a42fa,'paused':_0x24b52f[_0xc3f8('0x97')]||![],'penalty':_0x5eaeca[_0xdd825f][_0xc3f8('0xf7')]||0x0});}return BPromise[_0xc3f8('0x84')](_0x3bb412,function(_0x167abe){return db['UserVoiceQueueRt'][_0xc3f8('0xa6')](_0x167abe);});}}}})[_0xc3f8('0x11')](function(){if(_0x24b52f){return db[_0xc3f8('0xf8')][_0xc3f8('0x43')]({'where':{'membername':_0x24b52f[_0xc3f8('0x36')],'exitAt':null}});}})['then'](function(_0x2a857d){if(_0x24b52f){var _0x275be5=[];_0x2a857d[_0xc3f8('0xf9')](function(_0x4be758){_0x275be5[_0xc3f8('0x41')](_0x4be758[_0xc3f8('0x26')]({'exitAt':moment()[_0xc3f8('0xa3')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xc3f8('0x4e')](_0x275be5);}})['then'](function(){if(_0x24b52f){var _0x15bb69=[];var _0x220ff7=[];var _0xfe89aa=utils['getChannels']();var _0x860a1e={'membername':_0x24b52f['name'],'interface':_0x1a42fa,'enterAt':moment()[_0xc3f8('0xa3')](_0xc3f8('0xfa')),'role':_0x24b52f[_0xc3f8('0x29')],'internal':_0x24b52f[_0xc3f8('0x61')]};_0xfe89aa[_0xc3f8('0xf9')](function(_0x415fb0){_0x15bb69[_0xc3f8('0x41')](_[_0xc3f8('0xcd')]({'channel':_0x415fb0,'type':_0xc3f8('0xfb'),'data1':_0x516a75['body'][_0xc3f8('0xfc')],'data2':_0x1a42fa},_0x860a1e));if(_0x24b52f[_0xc3f8('0x97')]){_0x220ff7[_0xc3f8('0x41')](_[_0xc3f8('0xcd')]({'channel':_0x415fb0,'type':_0xc3f8('0xfd'),'data1':_0xc3f8('0xfe')},_0x860a1e));}});return db['MemberReport']['bulkCreate'](_0x15bb69[_0xc3f8('0xff')](_0x220ff7),{'individualHooks':!![]});}})['then'](function(){if(_0x24b52f){return _0x24b52f[_0xc3f8('0x26')]({'online':!![],'lastLoginAt':moment()[_0xc3f8('0xa3')](_0xc3f8('0xfa')),'voicePause':_0x24b52f[_0xc3f8('0x97')]||![],'mailPause':_0x24b52f[_0xc3f8('0x97')]||![],'chatPause':_0x24b52f[_0xc3f8('0x97')]||![],'faxPause':_0x24b52f[_0xc3f8('0x97')]||![],'smsPause':_0x24b52f[_0xc3f8('0x97')]||![],'openchannelPause':_0x24b52f[_0xc3f8('0x97')]||![],'whatsappPause':_0x24b52f[_0xc3f8('0x97')]||![],'pauseType':_0x24b52f[_0xc3f8('0x97')]?_0xc3f8('0xfe'):null,'interface':_0x1a42fa,'lastPauseAt':moment()[_0xc3f8('0xa3')](_0xc3f8('0xfa'))});}})[_0xc3f8('0x11')](function(_0x5a7f0a){if(_0x516a75[_0xc3f8('0x100')]){return _0xf49df8();}else{return BPromise['resolve'](_0x5a7f0a)[_0xc3f8('0x11')](respondWithResult(_0x36bdcb,null));}})['catch'](handleError(_0x36bdcb,null));};exports['logout']=function(_0x469c24,_0x4a221f){var _0x6743a5;return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x469c24[_0xc3f8('0x57')]['id'],'role':_0xc3f8('0x2e')},'attributes':['id',_0xc3f8('0x36'),_0xc3f8('0x29')]})['then'](handleEntityNotFound(_0x4a221f,null))['then'](function(_0x5a9170){if(_0x5a9170){_0x6743a5=_0x5a9170;return db[_0xc3f8('0xad')][_0xc3f8('0x27')]({'where':{'membername':_0x6743a5[_0xc3f8('0x36')]},'individualHooks':!![]});}})['then'](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x6743a5['name'],'exitAt':null}});})['then'](function(_0x1ad38b){var _0x304dc4=[];_0x1ad38b[_0xc3f8('0xf9')](function(_0x4f2236){_0x304dc4[_0xc3f8('0x41')](_0x4f2236[_0xc3f8('0x26')]({'exitAt':moment()['format'](_0xc3f8('0xfa'))}));});return BPromise[_0xc3f8('0x4e')](_0x304dc4);})['then'](function(){return _0x6743a5['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xc3f8('0x11')](respondWithResult(_0x4a221f,null))['catch'](handleError(_0x4a221f,null));};exports[_0xc3f8('0x101')]=function(_0x3b8553,_0x24b8a4){var _0x42b8f5;return db['UserVoiceQueueRt'][_0xc3f8('0x26')]({'paused':0x1},{'where':{'UserId':_0x3b8553[_0xc3f8('0x57')]['id']},'individualHooks':!![]})['then'](function(){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x3b8553[_0xc3f8('0x57')]['id'],'role':'agent'},'attributes':['id',_0xc3f8('0x36'),'role','internal',_0xc3f8('0x98')]});})['then'](handleEntityNotFound(_0x24b8a4,null))[_0xc3f8('0x11')](function(_0x39f3c4){if(_0x39f3c4){_0x42b8f5=_0x39f3c4;return respondWithRpcPromise('QueuePause',_0xc3f8('0x101'),{'id':_0x42b8f5['id'],'name':_0x42b8f5[_0xc3f8('0x36')],'pause':!![]});}})[_0xc3f8('0x11')](function(){if(_0x42b8f5){return db[_0xc3f8('0xf8')][_0xc3f8('0x43')]({'where':{'membername':_0x42b8f5['name'],'type':_0xc3f8('0xfd'),'exitAt':null}});}})[_0xc3f8('0x11')](function(_0x1585ee){if(_0x1585ee['length']){var _0x546338=moment()['format'](_0xc3f8('0xfa'));for(var _0x8a2d71=0x0,_0xbd977e=_0x1585ee['length'];_0x8a2d71<_0xbd977e;_0x8a2d71++){_0x1585ee[_0x8a2d71][_0xc3f8('0x102')]({'exitAt':_0x546338});}}})[_0xc3f8('0x11')](function(){var _0x26d703=[];var _0x5f3e45=utils[_0xc3f8('0x103')]();_0x5f3e45[_0xc3f8('0xf9')](function(_0x187459){_0x26d703[_0xc3f8('0x41')]({'channel':_0x187459,'membername':_0x42b8f5[_0xc3f8('0x36')],'interface':_[_0xc3f8('0xa2')](_0x42b8f5[_0xc3f8('0x98')])?util[_0xc3f8('0xa3')](_0xc3f8('0xa4'),_0x42b8f5[_0xc3f8('0x36')]):_0x42b8f5[_0xc3f8('0x98')],'type':'PAUSE','enterAt':moment()[_0xc3f8('0xa3')](_0xc3f8('0xfa')),'data1':_0x3b8553['body']['type']||_0xc3f8('0x104'),'role':_0x42b8f5['role'],'internal':_0x42b8f5[_0xc3f8('0x61')]});});return db[_0xc3f8('0xf8')]['bulkCreate'](_0x26d703,{'individualHooks':!![]});})[_0xc3f8('0x11')](function(){return _0x42b8f5[_0xc3f8('0x26')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x3b8553['body'][_0xc3f8('0x3a')]||_0xc3f8('0x104'),'lastPauseAt':moment()['format'](_0xc3f8('0xfa'))});})['then'](respondWithResult(_0x24b8a4,null))[_0xc3f8('0x1c')](handleError(_0x24b8a4,null));};exports[_0xc3f8('0x105')]=function(_0x398ea5,_0x29b492){var _0x4dfed7;return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x398ea5[_0xc3f8('0x57')]['id']},'attributes':['id',_0xc3f8('0x36'),_0xc3f8('0x29'),'voicePause',_0xc3f8('0x106'),_0xc3f8('0x107'),_0xc3f8('0x108'),_0xc3f8('0x109'),_0xc3f8('0x10a'),_0xc3f8('0x10b'),_0xc3f8('0x10c'),'lastPauseAt']})[_0xc3f8('0x11')](handleEntityNotFound(_0x29b492,null))[_0xc3f8('0x11')](function(_0x3b3520){if(_0x3b3520){_0x4dfed7=_0x3b3520;if(_0x398ea5['body']['channel']&&!utils[_0xc3f8('0x99')](_0x398ea5[_0xc3f8('0x58')][_0xc3f8('0x96')])){throw new db[(_0xc3f8('0x8c'))][(_0xc3f8('0x8a'))](_0xc3f8('0x9a'));}switch(_0x398ea5[_0xc3f8('0x58')][_0xc3f8('0x96')]){case _0xc3f8('0x10d'):return respondWithRpcPromise(_0xc3f8('0x10e'),_0xc3f8('0x105'),{'id':_0x4dfed7['id'],'name':_0x4dfed7[_0xc3f8('0x36')],'pause':![]})[_0xc3f8('0x11')](function(){return db['UserVoiceQueueRt'][_0xc3f8('0x26')]({'paused':0x0},{'where':{'UserId':_0x4dfed7['id']},'individualHooks':!![]});})[_0xc3f8('0x11')](function(){return db[_0xc3f8('0xf8')][_0xc3f8('0x35')]({'where':{'channel':_0x398ea5[_0xc3f8('0x58')][_0xc3f8('0x96')],'membername':_0x4dfed7[_0xc3f8('0x36')],'type':_0xc3f8('0xfd'),'exitAt':null}});})['then'](function(_0x2aca34){if(_0x2aca34){return _0x2aca34[_0xc3f8('0x26')]({'exitAt':moment()[_0xc3f8('0xa3')](_0xc3f8('0xfa')),'data2':_0xc3f8('0x10f')},{'individualHooks':!![]});}return null;})[_0xc3f8('0x11')](function(){return _0x4dfed7[_0xc3f8('0x26')]({'voicePause':![]});});case _0xc3f8('0x4c'):case _0xc3f8('0x48'):case _0xc3f8('0x4b'):case _0xc3f8('0x4a'):case _0xc3f8('0xb9'):case'openchannel':return db[_0xc3f8('0xf8')][_0xc3f8('0x35')]({'where':{'channel':_0x398ea5['body'][_0xc3f8('0x96')],'membername':_0x4dfed7[_0xc3f8('0x36')],'type':'PAUSE','exitAt':null}})['then'](function(_0x49368b){if(_0x49368b){return _0x49368b[_0xc3f8('0x26')]({'exitAt':moment()[_0xc3f8('0xa3')](_0xc3f8('0xfa')),'data2':_0xc3f8('0x10f')},{'individualHooks':!![]});}return null;})[_0xc3f8('0x11')](function(){var _0x30b8b7={};_[_0xc3f8('0x24')](_0x30b8b7,util[_0xc3f8('0xa3')](_0xc3f8('0x110'),_0x398ea5[_0xc3f8('0x58')]['channel'],_0xc3f8('0x111')),![]);return _0x4dfed7['update'](_0x30b8b7);});default:return respondWithRpcPromise(_0xc3f8('0x10e'),_0xc3f8('0x105'),{'id':_0x4dfed7['id'],'name':_0x4dfed7[_0xc3f8('0x36')],'pause':![]})[_0xc3f8('0x11')](function(){return db[_0xc3f8('0xad')][_0xc3f8('0x26')]({'paused':0x0},{'where':{'UserId':_0x4dfed7['id']}});})['then'](function(){return db[_0xc3f8('0xf8')][_0xc3f8('0x43')]({'where':{'membername':_0x4dfed7[_0xc3f8('0x36')],'type':_0xc3f8('0xfd'),'exitAt':null}});})['then'](function(_0xa472e8){var _0x5cb6e3=[];_0xa472e8[_0xc3f8('0xf9')](function(_0x5e9dd6){_0x5cb6e3['push'](_0x5e9dd6[_0xc3f8('0x26')]({'exitAt':moment()[_0xc3f8('0xa3')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xc3f8('0x10f')}));});return BPromise[_0xc3f8('0x4e')](_0x5cb6e3);})[_0xc3f8('0x11')](function(){return _0x4dfed7[_0xc3f8('0x26')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xc3f8('0x11')](respondWithResult(_0x29b492,null))['catch'](handleError(_0x29b492,null));};exports['getTeams']=function(_0x4dee6f,_0x4a8f71){var _0x5b6d01={};var _0x45d061={};var _0x149092;var _0x46dfcc;return db[_0xc3f8('0x42')]['findOne']({'where':{'id':_0x4dee6f['params']['id']}})['then'](handleEntityNotFound(_0x4a8f71,null))[_0xc3f8('0x11')](function(_0x598796){if(_0x598796){_0x149092=_0x598796;_0x45d061[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0x112')][_0xc3f8('0x39')]);_0x45d061[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x4dee6f[_0xc3f8('0x45')]);_0x45d061[_0xc3f8('0xc9')]=_['intersection'](_0x45d061[_0xc3f8('0x50')],_0x45d061[_0xc3f8('0x45')]);_0x5b6d01[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x45d061[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x4dee6f[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x5b6d01['attributes']=_0x5b6d01['attributes']['length']?_0x5b6d01[_0xc3f8('0x40')]:_0x45d061['model'];_0x5b6d01['order']=qs[_0xc3f8('0xca')](_0x4dee6f[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x5b6d01[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x4dee6f['query'],_0x45d061[_0xc3f8('0xc9')]));if(_0x4dee6f['query'][_0xc3f8('0x31')]){_0x5b6d01[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x5b6d01[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x5b6d01[_0xc3f8('0x40')],function(_0x5c84f5){var _0xfe062f={};_0xfe062f[_0x5c84f5]={'$like':'%'+_0x4dee6f['query'][_0xc3f8('0x31')]+'%'};return _0xfe062f;})});}_0x5b6d01=_[_0xc3f8('0xcd')]({},_0x5b6d01,_0x4dee6f[_0xc3f8('0x56')]);return _0x149092[_0xc3f8('0x113')](_0x5b6d01);}})['then'](function(_0x4a4639){if(_0x4a4639){_0x46dfcc=_0x4a4639[_0xc3f8('0x47')];if(!_0x4dee6f[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x5b6d01['limit']=qs[_0xc3f8('0x21')](_0x4dee6f['query'][_0xc3f8('0x21')]);_0x5b6d01[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x4dee6f['query'][_0xc3f8('0x20')]);}return _0x149092[_0xc3f8('0x113')](_0x5b6d01);}})[_0xc3f8('0x11')](function(_0x488e1f){if(_0x488e1f){return _0x488e1f?{'count':_0x46dfcc,'rows':_0x488e1f}:null;}})['then'](respondWithResult(_0x4a8f71,null))[_0xc3f8('0x1c')](handleError(_0x4a8f71,null));};exports['addTeams']=function(_0x3c6b53,_0x25073b){return db['User']['find']({'where':{'id':_0x3c6b53[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x25073b,null))[_0xc3f8('0x11')](function(_0x266786){if(_0x266786){var _0x2d237c=_0x266786['get']({'plain':!![]});return _0x266786[_0xc3f8('0x114')](_0x3c6b53[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x3c6b53[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{})[_0xc3f8('0x11')](function(){for(var _0x4ef330=0x0;_0x4ef330<_0x3c6b53[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x4ef330++){var _0xa3ff73=[];db[_0xc3f8('0x112')]['findOne']({'where':{'id':_0x3c6b53[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0x4ef330]}})['then'](function(_0x410130){_0xa3ff73[_0xc3f8('0x41')](_0x410130[_0xc3f8('0xf6')]()[_0xc3f8('0x11')](function(_0x5ec7e8){for(var _0x3f006e=0x0;_0x3f006e<_0x5ec7e8['length'];_0x3f006e++){_0x5ec7e8[_0x3f006e][_0xc3f8('0x115')]('channel','Voice');}return _0x5ec7e8;}));_0xa3ff73[_0xc3f8('0x41')](_0x410130[_0xc3f8('0x116')]()[_0xc3f8('0x11')](function(_0xa86739){for(var _0x13b2ff=0x0;_0x13b2ff<_0xa86739[_0xc3f8('0x47')];_0x13b2ff++){_0xa86739[_0x13b2ff][_0xc3f8('0x115')](_0xc3f8('0x96'),'Chat');}return _0xa86739;}));_0xa3ff73['push'](_0x410130[_0xc3f8('0x117')]()[_0xc3f8('0x11')](function(_0x133ccc){for(var _0x35d615=0x0;_0x35d615<_0x133ccc[_0xc3f8('0x47')];_0x35d615++){_0x133ccc[_0x35d615]['setDataValue'](_0xc3f8('0x96'),_0xc3f8('0x118'));}return _0x133ccc;}));_0xa3ff73[_0xc3f8('0x41')](_0x410130['getSmsQueues']()[_0xc3f8('0x11')](function(_0x1fabc9){for(var _0x15cf2a=0x0;_0x15cf2a<_0x1fabc9[_0xc3f8('0x47')];_0x15cf2a++){_0x1fabc9[_0x15cf2a][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x119'));}return _0x1fabc9;}));_0xa3ff73[_0xc3f8('0x41')](_0x410130['getWhatsappQueues']()[_0xc3f8('0x11')](function(_0x451c2f){for(var _0x5e1abc=0x0;_0x5e1abc<_0x451c2f[_0xc3f8('0x47')];_0x5e1abc++){_0x451c2f[_0x5e1abc][_0xc3f8('0x115')](_0xc3f8('0x96'),'Whatsapp');}return _0x451c2f;}));_0xa3ff73[_0xc3f8('0x41')](_0x410130[_0xc3f8('0x11a')]()['then'](function(_0xe0131){for(var _0x23a4c8=0x0;_0x23a4c8<_0xe0131[_0xc3f8('0x47')];_0x23a4c8++){_0xe0131[_0x23a4c8][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x11b'));}return _0xe0131;}));_0xa3ff73['push'](_0x410130[_0xc3f8('0x11c')]()[_0xc3f8('0x11')](function(_0x243715){for(var _0x35a8c4=0x0;_0x35a8c4<_0x243715[_0xc3f8('0x47')];_0x35a8c4++){_0x243715[_0x35a8c4][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x11d'));}return _0x243715;}));return BPromise[_0xc3f8('0x4e')](_0xa3ff73);})[_0xc3f8('0x11')](function(_0x42b6ef){var _0x48b3f7=_[_0xc3f8('0x11e')](_0x42b6ef);_0xa3ff73=[];return db[_0xc3f8('0x63')][_0xc3f8('0x11f')](function(_0x4aa748){for(var _0x883f9c=0x0;_0x883f9c<_0x48b3f7[_0xc3f8('0x47')];_0x883f9c++){_0xa3ff73['push'](_0x48b3f7[_0x883f9c][_0xc3f8('0x120')](_0x2d237c['id']),{'transaction':_0x4aa748});}return BPromise['all'](_0xa3ff73)[_0xc3f8('0x11')](function(){if(_0x2d237c[_0xc3f8('0x121')]){return BPromise['each'](_[_0xc3f8('0x31')](_0x48b3f7,function(_0x24be7b){return _0x24be7b[_0xc3f8('0x122')](_0xc3f8('0x96'))==='Voice';}),function(_0x1225c5){return db[_0xc3f8('0xad')][_0xc3f8('0xa6')]({'membername':_0x2d237c['name'],'UserId':_0x2d237c['id'],'queue_name':_0x1225c5['name'],'VoiceQueueId':_0x1225c5['id'],'interface':_[_0xc3f8('0xa2')](_0x2d237c[_0xc3f8('0x98')])?util[_0xc3f8('0xa3')]('SIP/%s',_0x2d237c[_0xc3f8('0x36')]):_0x2d237c[_0xc3f8('0x98')],'paused':_0x2d237c[_0xc3f8('0xa5')]||![],'penalty':_0x2d237c[_0xc3f8('0x9e')]},{'transaction':_0x4aa748});});}else{return;}})[_0xc3f8('0x11')](function(){for(var _0x332fb5=0x0;_0x332fb5<_0x48b3f7[_0xc3f8('0x47')];_0x332fb5++){var _0x761b5c=_0x48b3f7[_0x332fb5]['getDataValue'](_0xc3f8('0x96'));var _0x13c408=_0x761b5c+'QueueId';socket[_0xc3f8('0xa0')]('user'+_0x761b5c+'Queue:save',{'UserId':_0x2d237c['id'],['queueField']:_0x48b3f7[_0x332fb5]['id']});}});});});}});}})[_0xc3f8('0x11')](respondWithStatusCode(_0x25073b,null))[_0xc3f8('0x1c')](handleError(_0x25073b,null));};exports[_0xc3f8('0x123')]=function(_0x22270c,_0x2d22b6){return db['User'][_0xc3f8('0xc8')]({'where':{'id':_0x22270c[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x2d22b6,null))[_0xc3f8('0x11')](function(_0x18dc51){if(_0x18dc51){var _0x269fbf=_0x18dc51[_0xc3f8('0x28')]({'plain':!![]});var _0x4e9120=_0x22270c[_0xc3f8('0x45')][_0xc3f8('0x5b')];return _0x18dc51[_0xc3f8('0x123')](_0x4e9120)['then'](function(){for(var _0xb5fed9=0x0;_0xb5fed9<_0x4e9120[_0xc3f8('0x47')];_0xb5fed9++){var _0x131695=[];db[_0xc3f8('0x112')][_0xc3f8('0xc8')]({'where':{'id':_0x4e9120[_0xb5fed9]}})[_0xc3f8('0x11')](function(_0x333634){_0x131695[_0xc3f8('0x41')](_0x333634['getVoiceQueues']()[_0xc3f8('0x11')](function(_0x2dd63f){for(var _0x17146b=0x0;_0x17146b<_0x2dd63f[_0xc3f8('0x47')];_0x17146b++){_0x2dd63f[_0x17146b][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x124'));}return _0x2dd63f;}));_0x131695[_0xc3f8('0x41')](_0x333634[_0xc3f8('0x116')]()['then'](function(_0x153ebb){for(var _0x199c1c=0x0;_0x199c1c<_0x153ebb[_0xc3f8('0x47')];_0x199c1c++){_0x153ebb[_0x199c1c]['setDataValue'](_0xc3f8('0x96'),_0xc3f8('0x125'));}return _0x153ebb;}));_0x131695['push'](_0x333634[_0xc3f8('0x117')]()[_0xc3f8('0x11')](function(_0x1a2cae){for(var _0xf3a74b=0x0;_0xf3a74b<_0x1a2cae['length'];_0xf3a74b++){_0x1a2cae[_0xf3a74b][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x118'));}return _0x1a2cae;}));_0x131695[_0xc3f8('0x41')](_0x333634[_0xc3f8('0x126')]()[_0xc3f8('0x11')](function(_0x4f90c0){for(var _0x6b8f42=0x0;_0x6b8f42<_0x4f90c0[_0xc3f8('0x47')];_0x6b8f42++){_0x4f90c0[_0x6b8f42]['setDataValue']('channel',_0xc3f8('0x119'));}return _0x4f90c0;}));_0x131695[_0xc3f8('0x41')](_0x333634['getWhatsappQueues']()[_0xc3f8('0x11')](function(_0x327bcf){for(var _0x490da7=0x0;_0x490da7<_0x327bcf[_0xc3f8('0x47')];_0x490da7++){_0x327bcf[_0x490da7][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x127'));}return _0x327bcf;}));_0x131695[_0xc3f8('0x41')](_0x333634['getFaxQueues']()[_0xc3f8('0x11')](function(_0x39aa74){for(var _0x33ce40=0x0;_0x33ce40<_0x39aa74[_0xc3f8('0x47')];_0x33ce40++){_0x39aa74[_0x33ce40][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x11b'));}return _0x39aa74;}));_0x131695[_0xc3f8('0x41')](_0x333634['getOpenchannelQueues']()[_0xc3f8('0x11')](function(_0xff6144){for(var _0x3d5e55=0x0;_0x3d5e55<_0xff6144['length'];_0x3d5e55++){_0xff6144[_0x3d5e55][_0xc3f8('0x115')](_0xc3f8('0x96'),_0xc3f8('0x11d'));}return _0xff6144;}));return BPromise['all'](_0x131695);})[_0xc3f8('0x11')](function(_0x586a40){var _0x549e4c=_[_0xc3f8('0x11e')](_0x586a40);_0x131695=[];return db[_0xc3f8('0x63')][_0xc3f8('0x11f')](function(_0x46c368){for(var _0x559dd0=0x0;_0x559dd0<_0x549e4c[_0xc3f8('0x47')];_0x559dd0++){_0x131695[_0xc3f8('0x41')](_0x549e4c[_0x559dd0][_0xc3f8('0x128')](_0x269fbf['id']),{'transaction':_0x46c368});}return BPromise[_0xc3f8('0x4e')](_0x131695)[_0xc3f8('0x11')](function(){if(_0x269fbf['online']){return BPromise[_0xc3f8('0x84')](_[_0xc3f8('0x31')](_0x549e4c,function(_0x100e42){return _0x100e42[_0xc3f8('0x122')](_0xc3f8('0x96'))===_0xc3f8('0x124');}),function(_0x3b0e75){return db[_0xc3f8('0xad')][_0xc3f8('0x27')]({'where':{'VoiceQueueId':_0x3b0e75['id'],'UserId':_0x269fbf['id']},'transaction':_0x46c368});});}else{return;}})[_0xc3f8('0x11')](function(){for(var _0x38b553=0x0;_0x38b553<_0x549e4c[_0xc3f8('0x47')];_0x38b553++){var _0x2d7dcf=_0x549e4c[_0x38b553][_0xc3f8('0x122')]('channel');var _0xff992e=_0x2d7dcf+_0xc3f8('0xab');socket[_0xc3f8('0xa0')](_0xc3f8('0x2c')+_0x2d7dcf+_0xc3f8('0xac'),{'UserId':_0x269fbf['id'],['queueField']:_0x549e4c[_0x38b553]['id']});}});});});}});}})['then'](respondWithStatusCode(_0x2d22b6,null))[_0xc3f8('0x1c')](handleError(_0x2d22b6,null));};exports[_0xc3f8('0x129')]=function(_0x3ed642,_0x1d3bb5){var _0xbfd6ed={};var _0x4342ed={};var _0x140ad1;var _0x1fcb37;return db['User'][_0xc3f8('0xc8')]({'where':{'id':_0x3ed642['params']['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x1d3bb5,null))['then'](function(_0x2e404c){if(_0x2e404c){_0x140ad1=_0x2e404c;_0x4342ed[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db['CmList']['rawAttributes']);_0x4342ed['query']=_[_0xc3f8('0x52')](_0x3ed642[_0xc3f8('0x45')]);_0x4342ed['filters']=_[_0xc3f8('0x53')](_0x4342ed[_0xc3f8('0x50')],_0x4342ed[_0xc3f8('0x45')]);_0xbfd6ed[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x4342ed[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x3ed642[_0xc3f8('0x45')]['fields']));_0xbfd6ed['attributes']=_0xbfd6ed[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0xbfd6ed[_0xc3f8('0x40')]:_0x4342ed[_0xc3f8('0x50')];_0xbfd6ed[_0xc3f8('0xd5')]=qs['sort'](_0x3ed642[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0xbfd6ed[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x3ed642['query'],_0x4342ed['filters']));if(_0x3ed642[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0xbfd6ed[_0xc3f8('0xcb')]=_['merge'](_0xbfd6ed['where'],{'$or':_['map'](_0xbfd6ed[_0xc3f8('0x40')],function(_0x760826){var _0x12a208={};_0x12a208[_0x760826]={'$like':'%'+_0x3ed642[_0xc3f8('0x45')]['filter']+'%'};return _0x12a208;})});}_0xbfd6ed=_[_0xc3f8('0xcd')]({},_0xbfd6ed,_0x3ed642[_0xc3f8('0x56')]);return _0x140ad1[_0xc3f8('0x129')](_0xbfd6ed);}})[_0xc3f8('0x11')](function(_0x4aedc3){if(_0x4aedc3){_0x1fcb37=_0x4aedc3['length'];if(!_0x3ed642[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0xbfd6ed[_0xc3f8('0x21')]=qs['limit'](_0x3ed642['query'][_0xc3f8('0x21')]);_0xbfd6ed[_0xc3f8('0x20')]=qs['offset'](_0x3ed642[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x140ad1['getLists'](_0xbfd6ed);}})[_0xc3f8('0x11')](function(_0x5a7f6f){if(_0x5a7f6f){return _0x5a7f6f?{'count':_0x1fcb37,'rows':_0x5a7f6f}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x1d3bb5,null))[_0xc3f8('0x1c')](handleError(_0x1d3bb5,null));};exports[_0xc3f8('0x12a')]=function(_0x156ea3,_0x1a3002){var _0x3f2199={};var _0x463182={};var _0x5c66b2;var _0x2322c3;return db[_0xc3f8('0x42')]['findOne']({'where':{'id':_0x156ea3[_0xc3f8('0x57')]['id']}})['then'](handleEntityNotFound(_0x1a3002,null))['then'](function(_0x28306f){if(_0x28306f){_0x5c66b2=_0x28306f;_0x463182['model']=_[_0xc3f8('0x52')](db[_0xc3f8('0x42')][_0xc3f8('0x39')]);_0x463182[_0xc3f8('0x45')]=_['keys'](_0x156ea3[_0xc3f8('0x45')]);_0x463182['filters']=_[_0xc3f8('0x53')](_0x463182[_0xc3f8('0x50')],_0x463182[_0xc3f8('0x45')]);_0x3f2199[_0xc3f8('0x40')]=_['intersection'](_0x463182[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x156ea3[_0xc3f8('0x45')]['fields']));_0x3f2199[_0xc3f8('0x40')]=_0x3f2199[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x3f2199[_0xc3f8('0x40')]:_0x463182['model'];_0x3f2199[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x156ea3[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x3f2199[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x156ea3[_0xc3f8('0x45')],_0x463182['filters']));if(_0x156ea3['query'][_0xc3f8('0x31')]){_0x3f2199[_0xc3f8('0xcb')]=_['merge'](_0x3f2199[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x3f2199[_0xc3f8('0x40')],function(_0x39c41a){var _0x22a538={};_0x22a538[_0x39c41a]={'$like':'%'+_0x156ea3['query'][_0xc3f8('0x31')]+'%'};return _0x22a538;})});}_0x3f2199['model']=db[_0xc3f8('0x42')];_0x3f2199['as']='Agents';_0x3f2199=_['merge']({},_0x3f2199,_0x156ea3[_0xc3f8('0x56')]);return _0x5c66b2['getVoiceQueues']({'include':[_0x3f2199]});}})[_0xc3f8('0x11')](function(_0x6d6af1){if(_0x6d6af1){var _0x1f5146={},_0x264008=[],_0x510b05=0x0;for(var _0x549752=0x0;_0x549752<_0x6d6af1[_0xc3f8('0x47')];_0x549752+=0x1){for(var _0x468282=0x0,_0x2ea932;_0x468282<_0x6d6af1[_0x549752][_0xc3f8('0x2d')]['length'];_0x468282+=0x1){_0x2ea932=_0x6d6af1[_0x549752][_0xc3f8('0x2d')][_0x468282][_0xc3f8('0x28')]({'plain':!![]});_0x1f5146[_0x2ea932['id']]=_0x2ea932;}}_0x1f5146=_['values'](_0x1f5146);for(var _0x7c0668=qs[_0xc3f8('0x20')](_0x156ea3[_0xc3f8('0x45')][_0xc3f8('0x20')]);_0x7c0668<_0x1f5146[_0xc3f8('0x47')]&&_0x264008[_0xc3f8('0x47')]<qs['limit'](_0x156ea3[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x7c0668+=0x1){if(_0x1f5146[_0x7c0668]){_0x264008[_0xc3f8('0x41')](_0x1f5146[_0x7c0668]);}}return{'count':_0x1f5146[_0xc3f8('0x47')],'rows':_0x264008};}})[_0xc3f8('0x11')](respondWithResult(_0x1a3002,null))['catch'](handleError(_0x1a3002,null));};exports[_0xc3f8('0x27')]=function(_0x5cb9fc,_0x2f4bce){if(_0x5cb9fc[_0xc3f8('0x2c')]['id']==_0x5cb9fc[_0xc3f8('0x57')]['id']){return _0x2f4bce[_0xc3f8('0x1e')](0x1f4)[_0xc3f8('0x38')]({'message':_0xc3f8('0x12b')});}return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x5cb9fc[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x2f4bce,null))[_0xc3f8('0x11')](removeEntity(_0x2f4bce,null))['catch'](handleError(_0x2f4bce,null));};exports[_0xc3f8('0x12c')]=function(_0x19a111,_0x35ba33){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x19a111[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x35ba33,null))[_0xc3f8('0x11')](function(_0x537183){if(_0x537183){return _0x537183['addChatInteractions'](_0x19a111['body'][_0xc3f8('0x5b')],_[_0xc3f8('0x12d')](_0x19a111[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{})[_0xc3f8('0x9f')](function(){for(var _0x5864cc=0x0;_0x5864cc<_0x19a111['body'][_0xc3f8('0x5b')]['length'];_0x5864cc+=0x1){socket[_0xc3f8('0xa0')](_0xc3f8('0x12e'),{'ChatInteractionId':Number(_0x19a111[_0xc3f8('0x58')]['ids'][_0x5864cc]),'UserId':Number(_0x19a111['params']['id'])});}return _0x19a111['body'][_0xc3f8('0x5b')];});}})[_0xc3f8('0x11')](respondWithResult(_0x35ba33,null))[_0xc3f8('0x1c')](handleError(_0x35ba33,null));};exports['removeChatInteractions']=function(_0x3074cc,_0x1c79c5){return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x3074cc['params']['id']}})['then'](handleEntityNotFound(_0x1c79c5,null))[_0xc3f8('0x11')](function(_0x5a56dd){if(_0x5a56dd){return _0x5a56dd[_0xc3f8('0x12f')](_0x3074cc[_0xc3f8('0x45')]['ids'])[_0xc3f8('0x11')](function(){if(_[_0xc3f8('0xaa')](_0x3074cc[_0xc3f8('0x45')][_0xc3f8('0x5b')])){for(var _0x26cc69=0x0;_0x26cc69<_0x3074cc['query'][_0xc3f8('0x5b')]['length'];_0x26cc69+=0x1){socket['emit'](_0xc3f8('0x130'),{'ChatInteractionId':Number(_0x3074cc[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0x26cc69]),'UserId':Number(_0x3074cc[_0xc3f8('0x57')]['id'])});}}else{socket[_0xc3f8('0xa0')](_0xc3f8('0x130'),{'ChatInteractionId':Number(_0x3074cc[_0xc3f8('0x45')]['ids']),'UserId':Number(_0x3074cc[_0xc3f8('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x1c79c5,null))[_0xc3f8('0x1c')](handleError(_0x1c79c5,null));};exports[_0xc3f8('0x131')]=function(_0x58cf93,_0x177f4c){return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x58cf93[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x177f4c,null))[_0xc3f8('0x11')](function(_0x5bf55a){if(_0x5bf55a){return _0x5bf55a[_0xc3f8('0x131')](_0x58cf93[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x58cf93[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{})[_0xc3f8('0x9f')](function(){for(var _0x23494b=0x0;_0x23494b<_0x58cf93[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x23494b+=0x1){socket[_0xc3f8('0xa0')](_0xc3f8('0x132'),{'MailInteractionId':Number(_0x58cf93[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0x23494b]),'UserId':Number(_0x58cf93[_0xc3f8('0x57')]['id'])});}return _0x58cf93[_0xc3f8('0x58')][_0xc3f8('0x5b')];});}})['then'](respondWithResult(_0x177f4c,null))[_0xc3f8('0x1c')](handleError(_0x177f4c,null));};exports[_0xc3f8('0x133')]=function(_0x3db748,_0x8608c0){return db['User'][_0xc3f8('0x35')]({'where':{'id':_0x3db748[_0xc3f8('0x57')]['id']}})['then'](handleEntityNotFound(_0x8608c0,null))['then'](function(_0x9daa35){if(_0x9daa35){return _0x9daa35['removeMailInteractions'](_0x3db748[_0xc3f8('0x45')][_0xc3f8('0x5b')])['then'](function(){if(_[_0xc3f8('0xaa')](_0x3db748[_0xc3f8('0x45')][_0xc3f8('0x5b')])){for(var _0x861782=0x0;_0x861782<_0x3db748[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x861782+=0x1){socket[_0xc3f8('0xa0')](_0xc3f8('0x134'),{'MailInteractionId':Number(_0x3db748[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0x861782]),'UserId':Number(_0x3db748[_0xc3f8('0x57')]['id'])});}}else{socket['emit'](_0xc3f8('0x134'),{'MailInteractionId':Number(_0x3db748[_0xc3f8('0x45')][_0xc3f8('0x5b')]),'UserId':Number(_0x3db748[_0xc3f8('0x57')]['id'])});}});}})[_0xc3f8('0x11')](respondWithStatusCode(_0x8608c0,null))['catch'](handleError(_0x8608c0,null));};exports[_0xc3f8('0x135')]=function(_0x491982,_0x71dd1b){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x491982[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x71dd1b,null))[_0xc3f8('0x11')](function(_0x39219b){if(_0x39219b){return _0x39219b[_0xc3f8('0x135')](_0x491982[_0xc3f8('0x58')][_0xc3f8('0x5b')],_[_0xc3f8('0x12d')](_0x491982[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{})[_0xc3f8('0x9f')](function(){for(var _0x1f28ad=0x0;_0x1f28ad<_0x491982[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x1f28ad+=0x1){socket[_0xc3f8('0xa0')](_0xc3f8('0x136'),{'FaxInteractionId':Number(_0x491982['body'][_0xc3f8('0x5b')][_0x1f28ad]),'UserId':Number(_0x491982['params']['id'])});}return _0x491982['body'][_0xc3f8('0x5b')];});}})[_0xc3f8('0x11')](respondWithResult(_0x71dd1b,null))[_0xc3f8('0x1c')](handleError(_0x71dd1b,null));};exports[_0xc3f8('0x137')]=function(_0x3cc3ed,_0x2a97f5){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x3cc3ed[_0xc3f8('0x57')]['id']}})['then'](handleEntityNotFound(_0x2a97f5,null))[_0xc3f8('0x11')](function(_0x337bd1){if(_0x337bd1){return _0x337bd1[_0xc3f8('0x137')](_0x3cc3ed[_0xc3f8('0x45')][_0xc3f8('0x5b')])[_0xc3f8('0x11')](function(){if(_['isArray'](_0x3cc3ed[_0xc3f8('0x45')]['ids'])){for(var _0x5995de=0x0;_0x5995de<_0x3cc3ed[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x5995de+=0x1){socket[_0xc3f8('0xa0')](_0xc3f8('0x138'),{'FaxInteractionId':Number(_0x3cc3ed[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0x5995de]),'UserId':Number(_0x3cc3ed[_0xc3f8('0x57')]['id'])});}}else{socket[_0xc3f8('0xa0')](_0xc3f8('0x138'),{'FaxInteractionId':Number(_0x3cc3ed[_0xc3f8('0x45')]['ids']),'UserId':Number(_0x3cc3ed[_0xc3f8('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x2a97f5,null))[_0xc3f8('0x1c')](handleError(_0x2a97f5,null));};exports['addSmsInteractions']=function(_0x31f8ff,_0x2a3232){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x31f8ff['params']['id']}})['then'](handleEntityNotFound(_0x2a3232,null))[_0xc3f8('0x11')](function(_0x1c5980){if(_0x1c5980){return _0x1c5980[_0xc3f8('0x139')](_0x31f8ff[_0xc3f8('0x58')][_0xc3f8('0x5b')],_[_0xc3f8('0x12d')](_0x31f8ff[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{})[_0xc3f8('0x9f')](function(){for(var _0x3139e9=0x0;_0x3139e9<_0x31f8ff['body'][_0xc3f8('0x5b')]['length'];_0x3139e9+=0x1){socket[_0xc3f8('0xa0')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x31f8ff['body'][_0xc3f8('0x5b')][_0x3139e9]),'UserId':Number(_0x31f8ff['params']['id'])});}return _0x31f8ff[_0xc3f8('0x58')][_0xc3f8('0x5b')];});}})[_0xc3f8('0x11')](respondWithResult(_0x2a3232,null))[_0xc3f8('0x1c')](handleError(_0x2a3232,null));};exports[_0xc3f8('0x13a')]=function(_0x2d8351,_0x347682){return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x2d8351[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x347682,null))[_0xc3f8('0x11')](function(_0x328ea6){if(_0x328ea6){return _0x328ea6[_0xc3f8('0x13a')](_0x2d8351[_0xc3f8('0x45')][_0xc3f8('0x5b')])['then'](function(){if(_['isArray'](_0x2d8351['query'][_0xc3f8('0x5b')])){for(var _0x362ed0=0x0;_0x362ed0<_0x2d8351[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x362ed0+=0x1){socket[_0xc3f8('0xa0')](_0xc3f8('0x13b'),{'SmsInteractionId':Number(_0x2d8351[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0x362ed0]),'UserId':Number(_0x2d8351['params']['id'])});}}else{socket['emit'](_0xc3f8('0x13b'),{'SmsInteractionId':Number(_0x2d8351['query'][_0xc3f8('0x5b')]),'UserId':Number(_0x2d8351['params']['id'])});}});}})[_0xc3f8('0x11')](respondWithStatusCode(_0x347682,null))['catch'](handleError(_0x347682,null));};exports[_0xc3f8('0x13c')]=function(_0x5652a6,_0x28f44f){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x5652a6[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x28f44f,null))[_0xc3f8('0x11')](function(_0x4bc7a3){if(_0x4bc7a3){return _0x4bc7a3[_0xc3f8('0x13c')](_0x5652a6[_0xc3f8('0x58')][_0xc3f8('0x5b')],_[_0xc3f8('0x12d')](_0x5652a6['body'],[_0xc3f8('0x5b'),'id'])||{})['spread'](function(){for(var _0x3430b9=0x0;_0x3430b9<_0x5652a6[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x3430b9+=0x1){socket['emit']('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x5652a6[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0x3430b9]),'UserId':Number(_0x5652a6[_0xc3f8('0x57')]['id'])});}return _0x5652a6[_0xc3f8('0x58')]['ids'];});}})[_0xc3f8('0x11')](respondWithResult(_0x28f44f,null))['catch'](handleError(_0x28f44f,null));};exports[_0xc3f8('0x13d')]=function(_0x230ba2,_0x3ac36c){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x230ba2['params']['id']}})['then'](handleEntityNotFound(_0x3ac36c,null))[_0xc3f8('0x11')](function(_0x48a9f6){if(_0x48a9f6){return _0x48a9f6[_0xc3f8('0x13d')](_0x230ba2[_0xc3f8('0x45')]['ids'])[_0xc3f8('0x11')](function(){if(_['isArray'](_0x230ba2[_0xc3f8('0x45')][_0xc3f8('0x5b')])){for(var _0xd3c8dd=0x0;_0xd3c8dd<_0x230ba2[_0xc3f8('0x45')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0xd3c8dd+=0x1){socket['emit'](_0xc3f8('0x13e'),{'OpenchannelInteractionId':Number(_0x230ba2[_0xc3f8('0x45')]['ids'][_0xd3c8dd]),'UserId':Number(_0x230ba2[_0xc3f8('0x57')]['id'])});}}else{socket[_0xc3f8('0xa0')](_0xc3f8('0x13e'),{'OpenchannelInteractionId':Number(_0x230ba2['query'][_0xc3f8('0x5b')]),'UserId':Number(_0x230ba2[_0xc3f8('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x3ac36c,null))['catch'](handleError(_0x3ac36c,null));};exports[_0xc3f8('0x13f')]=function(_0x7930d1,_0x203d02){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x7930d1[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x203d02,null))[_0xc3f8('0x11')](function(_0x11a245){if(_0x11a245){return _0x11a245[_0xc3f8('0x13f')](_0x7930d1[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x7930d1[_0xc3f8('0x58')],['ids','id'])||{})[_0xc3f8('0x9f')](function(){for(var _0x1852cc=0x0;_0x1852cc<_0x7930d1[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0xc3f8('0x47')];_0x1852cc+=0x1){socket[_0xc3f8('0xa0')](_0xc3f8('0x140'),{'WhatsappInteractionId':Number(_0x7930d1[_0xc3f8('0x58')][_0xc3f8('0x5b')][_0x1852cc]),'UserId':Number(_0x7930d1[_0xc3f8('0x57')]['id'])});}return _0x7930d1[_0xc3f8('0x58')][_0xc3f8('0x5b')];});}})[_0xc3f8('0x11')](respondWithResult(_0x203d02,null))[_0xc3f8('0x1c')](handleError(_0x203d02,null));};exports[_0xc3f8('0x141')]=function(_0x390ccd,_0x41b330){return db['User']['find']({'where':{'id':_0x390ccd['params']['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x41b330,null))[_0xc3f8('0x11')](function(_0x3e5a62){if(_0x3e5a62){return _0x3e5a62[_0xc3f8('0x141')](_0x390ccd['query']['ids']);}})['then'](respondWithStatusCode(_0x41b330,null))[_0xc3f8('0x1c')](handleError(_0x41b330,null));};exports[_0xc3f8('0x142')]=function(_0x22be44,_0x18aae6){var _0x3fe855={};var _0x1047f2={};var _0x3c46b0;var _0x5baa9a;return db['User'][_0xc3f8('0xc8')]({'where':{'id':_0x22be44[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x18aae6,null))['then'](function(_0x325247){if(_0x325247){_0x3c46b0=_0x325247;_0x1047f2[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0x143')][_0xc3f8('0x39')]);_0x1047f2['query']=_[_0xc3f8('0x52')](_0x22be44[_0xc3f8('0x45')]);_0x1047f2[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x1047f2[_0xc3f8('0x50')],_0x1047f2[_0xc3f8('0x45')]);_0x3fe855[_0xc3f8('0x40')]=_['intersection'](_0x1047f2[_0xc3f8('0x50')],qs['fields'](_0x22be44['query']['fields']));_0x3fe855[_0xc3f8('0x40')]=_0x3fe855[_0xc3f8('0x40')]['length']?_0x3fe855[_0xc3f8('0x40')]:_0x1047f2['model'];_0x3fe855[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x22be44[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x3fe855['where']=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x22be44[_0xc3f8('0x45')],_0x1047f2['filters']));if(_0x22be44[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x3fe855[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x3fe855['where'],{'$or':_['map'](_0x3fe855[_0xc3f8('0x40')],function(_0x2db508){var _0x2a6f90={};_0x2a6f90[_0x2db508]={'$like':'%'+_0x22be44[_0xc3f8('0x45')]['filter']+'%'};return _0x2a6f90;})});}_0x3fe855=_[_0xc3f8('0xcd')]({},_0x3fe855,_0x22be44[_0xc3f8('0x56')]);return _0x3c46b0['getVoicePrefixes'](_0x3fe855);}})['then'](function(_0x432d7a){if(_0x432d7a){_0x5baa9a=_0x432d7a[_0xc3f8('0x47')];if(!_0x22be44[_0xc3f8('0x45')][_0xc3f8('0xd3')]('nolimit')){_0x3fe855[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x22be44[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x3fe855[_0xc3f8('0x20')]=qs['offset'](_0x22be44[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x3c46b0[_0xc3f8('0x142')](_0x3fe855);}})[_0xc3f8('0x11')](function(_0x5a5fec){if(_0x5a5fec){return _0x5a5fec?{'count':_0x5baa9a,'rows':_0x5a5fec}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x18aae6,null))[_0xc3f8('0x1c')](handleError(_0x18aae6,null));};exports[_0xc3f8('0x144')]=function(_0x3c7043,_0x836b5a){var _0x29ef9f={};var _0x4b212d={};var _0x1fbc2b;var _0x53c8fe;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x3c7043[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x836b5a,null))['then'](function(_0x255d0d){if(_0x255d0d){_0x1fbc2b=_0x255d0d;_0x4b212d['model']=_['keys'](db[_0xc3f8('0x145')][_0xc3f8('0x39')]);_0x4b212d[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x3c7043['query']);_0x4b212d['filters']=_[_0xc3f8('0x53')](_0x4b212d['model'],_0x4b212d[_0xc3f8('0x45')]);_0x29ef9f[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x4b212d['model'],qs[_0xc3f8('0x54')](_0x3c7043['query'][_0xc3f8('0x54')]));_0x29ef9f['attributes']=_0x29ef9f[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x29ef9f[_0xc3f8('0x40')]:_0x4b212d[_0xc3f8('0x50')];_0x29ef9f[_0xc3f8('0xd5')]=qs['sort'](_0x3c7043[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x29ef9f[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x3c7043[_0xc3f8('0x45')],_0x4b212d[_0xc3f8('0xc9')]));if(_0x3c7043[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x29ef9f[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x29ef9f[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x29ef9f[_0xc3f8('0x40')],function(_0x27ec71){var _0x287590={};_0x287590[_0x27ec71]={'$like':'%'+_0x3c7043['query'][_0xc3f8('0x31')]+'%'};return _0x287590;})});}_0x29ef9f=_[_0xc3f8('0xcd')]({},_0x29ef9f,_0x3c7043[_0xc3f8('0x56')]);return _0x1fbc2b[_0xc3f8('0x144')](_0x29ef9f);}})['then'](function(_0x13e8eb){if(_0x13e8eb){_0x53c8fe=_0x13e8eb['length'];if(!_0x3c7043[_0xc3f8('0x45')]['hasOwnProperty'](_0xc3f8('0xd4'))){_0x29ef9f[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x3c7043[_0xc3f8('0x45')]['limit']);_0x29ef9f[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x3c7043[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x1fbc2b[_0xc3f8('0x144')](_0x29ef9f);}})[_0xc3f8('0x11')](function(_0x42f83d){if(_0x42f83d){return _0x42f83d?{'count':_0x53c8fe,'rows':_0x42f83d}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x836b5a,null))[_0xc3f8('0x1c')](handleError(_0x836b5a,null));};exports[_0xc3f8('0x146')]=function(_0x4d7246,_0x3bfea9){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x4d7246[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x3bfea9,null))[_0xc3f8('0x11')](function(_0x1472f8){if(_0x1472f8){return _0x1472f8[_0xc3f8('0x146')](_0x4d7246[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x4d7246[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{});}})[_0xc3f8('0x11')](respondWithResult(_0x3bfea9,null))[_0xc3f8('0x1c')](handleError(_0x3bfea9,null));};exports['removeFaxAccounts']=function(_0x2dc5ff,_0x28cd04){return db['User'][_0xc3f8('0x35')]({'where':{'id':_0x2dc5ff[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x28cd04,null))[_0xc3f8('0x11')](function(_0x4eb08b){if(_0x4eb08b){return _0x4eb08b['removeFaxAccounts'](_0x2dc5ff['query'][_0xc3f8('0x5b')]);}})['then'](respondWithStatusCode(_0x28cd04,null))[_0xc3f8('0x1c')](handleError(_0x28cd04,null));};exports['getMailAccounts']=function(_0x3e5989,_0x1f7d4c){var _0x15695f={};var _0x34f240={};var _0x24f692;var _0x2f3c88;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x3e5989[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x1f7d4c,null))['then'](function(_0x29d133){if(_0x29d133){_0x24f692=_0x29d133;_0x34f240[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db['MailAccount'][_0xc3f8('0x39')]);_0x34f240[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x3e5989[_0xc3f8('0x45')]);_0x34f240[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x34f240[_0xc3f8('0x50')],_0x34f240[_0xc3f8('0x45')]);_0x15695f['attributes']=_[_0xc3f8('0x53')](_0x34f240['model'],qs[_0xc3f8('0x54')](_0x3e5989[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x15695f[_0xc3f8('0x40')]=_0x15695f[_0xc3f8('0x40')]['length']?_0x15695f['attributes']:_0x34f240['model'];_0x15695f[_0xc3f8('0xd5')]=qs['sort'](_0x3e5989[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x15695f[_0xc3f8('0xcb')]=qs['filters'](_['pick'](_0x3e5989[_0xc3f8('0x45')],_0x34f240[_0xc3f8('0xc9')]));if(_0x3e5989[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x15695f[_0xc3f8('0xcb')]=_['merge'](_0x15695f['where'],{'$or':_[_0xc3f8('0x33')](_0x15695f[_0xc3f8('0x40')],function(_0x423a6e){var _0x144f5a={};_0x144f5a[_0x423a6e]={'$like':'%'+_0x3e5989[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x144f5a;})});}_0x15695f=_[_0xc3f8('0xcd')]({},_0x15695f,_0x3e5989[_0xc3f8('0x56')]);return _0x24f692[_0xc3f8('0x147')](_0x15695f);}})['then'](function(_0x1fd6e4){if(_0x1fd6e4){_0x2f3c88=_0x1fd6e4[_0xc3f8('0x47')];if(!_0x3e5989[_0xc3f8('0x45')]['hasOwnProperty'](_0xc3f8('0xd4'))){_0x15695f[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x3e5989['query'][_0xc3f8('0x21')]);_0x15695f[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x3e5989['query']['offset']);}return _0x24f692[_0xc3f8('0x147')](_0x15695f);}})['then'](function(_0x1f27da){if(_0x1f27da){return _0x1f27da?{'count':_0x2f3c88,'rows':_0x1f27da}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x1f7d4c,null))['catch'](handleError(_0x1f7d4c,null));};exports[_0xc3f8('0x148')]=function(_0x1fbed7,_0x57b251){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x1fbed7[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x57b251,null))[_0xc3f8('0x11')](function(_0x24b991){if(_0x24b991){return _0x24b991['addMailAccounts'](_0x1fbed7[_0xc3f8('0x58')][_0xc3f8('0x5b')],_[_0xc3f8('0x12d')](_0x1fbed7[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x57b251,null))[_0xc3f8('0x1c')](handleError(_0x57b251,null));};exports['removeMailAccounts']=function(_0x1b2053,_0x3eca9d){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x1b2053['params']['id']}})['then'](handleEntityNotFound(_0x3eca9d,null))[_0xc3f8('0x11')](function(_0x133fc0){if(_0x133fc0){return _0x133fc0[_0xc3f8('0x149')](_0x1b2053['query']['ids']);}})[_0xc3f8('0x11')](respondWithStatusCode(_0x3eca9d,null))['catch'](handleError(_0x3eca9d,null));};exports[_0xc3f8('0x14a')]=function(_0x48403c,_0x12ff55){var _0x2092e9={};var _0x63987d={};var _0x27bf4c;var _0x1de1b3;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x48403c[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x12ff55,null))[_0xc3f8('0x11')](function(_0x267844){if(_0x267844){_0x27bf4c=_0x267844;_0x63987d[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0x14b')]['rawAttributes']);_0x63987d[_0xc3f8('0x45')]=_['keys'](_0x48403c[_0xc3f8('0x45')]);_0x63987d[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x63987d[_0xc3f8('0x50')],_0x63987d[_0xc3f8('0x45')]);_0x2092e9[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x63987d['model'],qs[_0xc3f8('0x54')](_0x48403c[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x2092e9[_0xc3f8('0x40')]=_0x2092e9['attributes'][_0xc3f8('0x47')]?_0x2092e9['attributes']:_0x63987d[_0xc3f8('0x50')];_0x2092e9[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x48403c[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x2092e9['where']=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x48403c[_0xc3f8('0x45')],_0x63987d[_0xc3f8('0xc9')]));if(_0x48403c[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x2092e9['where']=_[_0xc3f8('0xcd')](_0x2092e9[_0xc3f8('0xcb')],{'$or':_['map'](_0x2092e9[_0xc3f8('0x40')],function(_0x39e179){var _0xfcc1d6={};_0xfcc1d6[_0x39e179]={'$like':'%'+_0x48403c[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0xfcc1d6;})});}_0x2092e9=_[_0xc3f8('0xcd')]({},_0x2092e9,_0x48403c['options']);return _0x27bf4c[_0xc3f8('0x14a')](_0x2092e9);}})[_0xc3f8('0x11')](function(_0x1258e5){if(_0x1258e5){_0x1de1b3=_0x1258e5[_0xc3f8('0x47')];if(!_0x48403c[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x2092e9[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x48403c[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x2092e9[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x48403c[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x27bf4c[_0xc3f8('0x14a')](_0x2092e9);}})['then'](function(_0x401337){if(_0x401337){return _0x401337?{'count':_0x1de1b3,'rows':_0x401337}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x12ff55,null))[_0xc3f8('0x1c')](handleError(_0x12ff55,null));};exports[_0xc3f8('0x14c')]=function(_0x104ea7,_0x1b3670){return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x104ea7[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x1b3670,null))[_0xc3f8('0x11')](function(_0xd0346e){if(_0xd0346e){return _0xd0346e['addOpenchannelAccounts'](_0x104ea7['body'][_0xc3f8('0x5b')],_[_0xc3f8('0x12d')](_0x104ea7[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{});}})[_0xc3f8('0x11')](respondWithResult(_0x1b3670,null))[_0xc3f8('0x1c')](handleError(_0x1b3670,null));};exports[_0xc3f8('0x14d')]=function(_0x4b8e6a,_0x36b3fc){return db['User'][_0xc3f8('0x35')]({'where':{'id':_0x4b8e6a['params']['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x36b3fc,null))[_0xc3f8('0x11')](function(_0x100672){if(_0x100672){return _0x100672[_0xc3f8('0x14d')](_0x4b8e6a[_0xc3f8('0x45')][_0xc3f8('0x5b')]);}})[_0xc3f8('0x11')](respondWithStatusCode(_0x36b3fc,null))[_0xc3f8('0x1c')](handleError(_0x36b3fc,null));};exports[_0xc3f8('0x14e')]=function(_0x197a23,_0x332792){var _0x464d3f={};var _0x47a331={};var _0x167f5b;var _0x47b828;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x197a23[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x332792,null))[_0xc3f8('0x11')](function(_0x12d566){if(_0x12d566){_0x167f5b=_0x12d566;_0x47a331['model']=_[_0xc3f8('0x52')](db[_0xc3f8('0x14f')][_0xc3f8('0x39')]);_0x47a331[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x197a23[_0xc3f8('0x45')]);_0x47a331[_0xc3f8('0xc9')]=_['intersection'](_0x47a331['model'],_0x47a331[_0xc3f8('0x45')]);_0x464d3f[_0xc3f8('0x40')]=_['intersection'](_0x47a331[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x197a23[_0xc3f8('0x45')]['fields']));_0x464d3f[_0xc3f8('0x40')]=_0x464d3f[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x464d3f[_0xc3f8('0x40')]:_0x47a331[_0xc3f8('0x50')];_0x464d3f['order']=qs['sort'](_0x197a23[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x464d3f[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x197a23['query'],_0x47a331[_0xc3f8('0xc9')]));if(_0x197a23[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x464d3f[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x464d3f['where'],{'$or':_[_0xc3f8('0x33')](_0x464d3f[_0xc3f8('0x40')],function(_0x1ba011){var _0xe6b6b1={};_0xe6b6b1[_0x1ba011]={'$like':'%'+_0x197a23[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0xe6b6b1;})});}_0x464d3f=_['merge']({},_0x464d3f,_0x197a23[_0xc3f8('0x56')]);return _0x167f5b[_0xc3f8('0x14e')](_0x464d3f);}})['then'](function(_0xa7172b){if(_0xa7172b){_0x47b828=_0xa7172b['length'];if(!_0x197a23[_0xc3f8('0x45')][_0xc3f8('0xd3')]('nolimit')){_0x464d3f[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x197a23[_0xc3f8('0x45')]['limit']);_0x464d3f[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x197a23[_0xc3f8('0x45')]['offset']);}return _0x167f5b['getSmsAccounts'](_0x464d3f);}})[_0xc3f8('0x11')](function(_0x2cf0f4){if(_0x2cf0f4){return _0x2cf0f4?{'count':_0x47b828,'rows':_0x2cf0f4}:null;}})['then'](respondWithResult(_0x332792,null))['catch'](handleError(_0x332792,null));};exports[_0xc3f8('0x150')]=function(_0x135fb4,_0x3d071f){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x135fb4[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x3d071f,null))[_0xc3f8('0x11')](function(_0x326ba3){if(_0x326ba3){return _0x326ba3[_0xc3f8('0x150')](_0x135fb4[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x135fb4[_0xc3f8('0x58')],['ids','id'])||{});}})[_0xc3f8('0x11')](respondWithResult(_0x3d071f,null))[_0xc3f8('0x1c')](handleError(_0x3d071f,null));};exports[_0xc3f8('0x151')]=function(_0x17e684,_0x14ee60){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x17e684[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x14ee60,null))[_0xc3f8('0x11')](function(_0x111505){if(_0x111505){return _0x111505[_0xc3f8('0x151')](_0x17e684[_0xc3f8('0x45')][_0xc3f8('0x5b')]);}})[_0xc3f8('0x11')](respondWithStatusCode(_0x14ee60,null))['catch'](handleError(_0x14ee60,null));};exports['getChatWebsites']=function(_0x112cf9,_0x51ee91){var _0x2a5c61={};var _0x366e77={};var _0x11253f;var _0x295d0;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x112cf9[_0xc3f8('0x57')]['id']}})['then'](handleEntityNotFound(_0x51ee91,null))[_0xc3f8('0x11')](function(_0x276699){if(_0x276699){_0x11253f=_0x276699;_0x366e77[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0x152')]['rawAttributes']);_0x366e77[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x112cf9['query']);_0x366e77[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x366e77[_0xc3f8('0x50')],_0x366e77[_0xc3f8('0x45')]);_0x2a5c61[_0xc3f8('0x40')]=_['intersection'](_0x366e77['model'],qs[_0xc3f8('0x54')](_0x112cf9['query']['fields']));_0x2a5c61[_0xc3f8('0x40')]=_0x2a5c61['attributes'][_0xc3f8('0x47')]?_0x2a5c61[_0xc3f8('0x40')]:_0x366e77[_0xc3f8('0x50')];_0x2a5c61[_0xc3f8('0xd5')]=qs['sort'](_0x112cf9[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x2a5c61[_0xc3f8('0xcb')]=qs['filters'](_['pick'](_0x112cf9[_0xc3f8('0x45')],_0x366e77[_0xc3f8('0xc9')]));if(_0x112cf9[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x2a5c61['where']=_['merge'](_0x2a5c61['where'],{'$or':_['map'](_0x2a5c61[_0xc3f8('0x40')],function(_0x4873ac){var _0x24b661={};_0x24b661[_0x4873ac]={'$like':'%'+_0x112cf9[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x24b661;})});}_0x2a5c61=_[_0xc3f8('0xcd')]({},_0x2a5c61,_0x112cf9['options']);return _0x11253f[_0xc3f8('0x153')](_0x2a5c61);}})[_0xc3f8('0x11')](function(_0x2a5d4d){if(_0x2a5d4d){_0x295d0=_0x2a5d4d[_0xc3f8('0x47')];if(!_0x112cf9['query'][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x2a5c61['limit']=qs['limit'](_0x112cf9[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x2a5c61[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x112cf9[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x11253f[_0xc3f8('0x153')](_0x2a5c61);}})[_0xc3f8('0x11')](function(_0x76e34f){if(_0x76e34f){return _0x76e34f?{'count':_0x295d0,'rows':_0x76e34f}:null;}})[_0xc3f8('0x11')](respondWithResult(_0x51ee91,null))[_0xc3f8('0x1c')](handleError(_0x51ee91,null));};exports['addChatWebsites']=function(_0x5ce070,_0x1b3d95){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x5ce070[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x1b3d95,null))[_0xc3f8('0x11')](function(_0x18603a){if(_0x18603a){return _0x18603a[_0xc3f8('0x154')](_0x5ce070[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x5ce070['body'],[_0xc3f8('0x5b'),'id'])||{});}})[_0xc3f8('0x11')](respondWithResult(_0x1b3d95,null))[_0xc3f8('0x1c')](handleError(_0x1b3d95,null));};exports['removeChatWebsites']=function(_0x3d3f08,_0x38dd1e){return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x3d3f08[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x38dd1e,null))[_0xc3f8('0x11')](function(_0x385fad){if(_0x385fad){return _0x385fad[_0xc3f8('0x155')](_0x3d3f08[_0xc3f8('0x45')][_0xc3f8('0x5b')]);}})[_0xc3f8('0x11')](respondWithStatusCode(_0x38dd1e,null))[_0xc3f8('0x1c')](handleError(_0x38dd1e,null));};exports[_0xc3f8('0x156')]=function(_0x494e72,_0xab2528){var _0x29a4ec={};var _0x4bd62d={};var _0x20aeef;var _0x8e1849;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x494e72[_0xc3f8('0x57')]['id']}})['then'](handleEntityNotFound(_0xab2528,null))[_0xc3f8('0x11')](function(_0x3ed543){if(_0x3ed543){_0x20aeef=_0x3ed543;_0x4bd62d[_0xc3f8('0x50')]=_['keys'](db[_0xc3f8('0x157')][_0xc3f8('0x39')]);_0x4bd62d[_0xc3f8('0x45')]=_['keys'](_0x494e72['query']);_0x4bd62d[_0xc3f8('0xc9')]=_['intersection'](_0x4bd62d[_0xc3f8('0x50')],_0x4bd62d[_0xc3f8('0x45')]);_0x29a4ec[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x4bd62d[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x494e72[_0xc3f8('0x45')]['fields']));_0x29a4ec[_0xc3f8('0x40')]=_0x29a4ec['attributes'][_0xc3f8('0x47')]?_0x29a4ec[_0xc3f8('0x40')]:_0x4bd62d[_0xc3f8('0x50')];_0x29a4ec['order']=qs['sort'](_0x494e72[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x29a4ec[_0xc3f8('0xcb')]=qs['filters'](_[_0xc3f8('0xcc')](_0x494e72[_0xc3f8('0x45')],_0x4bd62d['filters']));if(_0x494e72[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x29a4ec[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x29a4ec['where'],{'$or':_[_0xc3f8('0x33')](_0x29a4ec['attributes'],function(_0x218370){var _0x516d79={};_0x516d79[_0x218370]={'$like':'%'+_0x494e72[_0xc3f8('0x45')]['filter']+'%'};return _0x516d79;})});}_0x29a4ec=_[_0xc3f8('0xcd')]({},_0x29a4ec,_0x494e72['options']);return _0x20aeef[_0xc3f8('0x156')](_0x29a4ec);}})[_0xc3f8('0x11')](function(_0x407c13){if(_0x407c13){_0x8e1849=_0x407c13[_0xc3f8('0x47')];if(!_0x494e72[_0xc3f8('0x45')]['hasOwnProperty'](_0xc3f8('0xd4'))){_0x29a4ec[_0xc3f8('0x21')]=qs[_0xc3f8('0x21')](_0x494e72[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x29a4ec[_0xc3f8('0x20')]=qs['offset'](_0x494e72[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0x20aeef['getWhatsappAccounts'](_0x29a4ec);}})['then'](function(_0x3716d6){if(_0x3716d6){return _0x3716d6?{'count':_0x8e1849,'rows':_0x3716d6}:null;}})[_0xc3f8('0x11')](respondWithResult(_0xab2528,null))[_0xc3f8('0x1c')](handleError(_0xab2528,null));};exports[_0xc3f8('0x158')]=function(_0x1646a0,_0x4144fb){return db['User']['find']({'where':{'id':_0x1646a0[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x4144fb,null))[_0xc3f8('0x11')](function(_0x3f01c1){if(_0x3f01c1){return _0x3f01c1[_0xc3f8('0x158')](_0x1646a0[_0xc3f8('0x58')][_0xc3f8('0x5b')],_['omit'](_0x1646a0[_0xc3f8('0x58')],['ids','id'])||{});}})[_0xc3f8('0x11')](respondWithResult(_0x4144fb,null))[_0xc3f8('0x1c')](handleError(_0x4144fb,null));};exports['removeWhatsappAccounts']=function(_0xdfdc55,_0x413e9f){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0xdfdc55[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x413e9f,null))[_0xc3f8('0x11')](function(_0x172989){if(_0x172989){return _0x172989[_0xc3f8('0x159')](_0xdfdc55[_0xc3f8('0x45')][_0xc3f8('0x5b')]);}})[_0xc3f8('0x11')](respondWithStatusCode(_0x413e9f,null))[_0xc3f8('0x1c')](handleError(_0x413e9f,null));};exports[_0xc3f8('0x15a')]=function(_0x3c89df,_0xd546ff){var _0x40ff4e={};var _0x7e3ec1={};var _0xc091b6;var _0x290783;return db[_0xc3f8('0x42')][_0xc3f8('0xc8')]({'where':{'id':_0x3c89df[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0xd546ff,null))[_0xc3f8('0x11')](function(_0x170e69){if(_0x170e69){_0xc091b6=_0x170e69;_0x7e3ec1[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](db[_0xc3f8('0x15b')][_0xc3f8('0x39')]);_0x7e3ec1['query']=_[_0xc3f8('0x52')](_0x3c89df[_0xc3f8('0x45')]);_0x7e3ec1['filters']=_[_0xc3f8('0x53')](_0x7e3ec1[_0xc3f8('0x50')],_0x7e3ec1['query']);_0x40ff4e[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x7e3ec1[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x3c89df[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x40ff4e[_0xc3f8('0x40')]=_0x40ff4e[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x40ff4e['attributes']:_0x7e3ec1['model'];_0x40ff4e[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x3c89df[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x40ff4e[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_['pick'](_0x3c89df[_0xc3f8('0x45')],_0x7e3ec1[_0xc3f8('0xc9')]));if(_0x3c89df[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x40ff4e[_0xc3f8('0xcb')]=_['merge'](_0x40ff4e[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x40ff4e[_0xc3f8('0x40')],function(_0x3ed045){var _0x59423e={};_0x59423e[_0x3ed045]={'$like':'%'+_0x3c89df[_0xc3f8('0x45')][_0xc3f8('0x31')]+'%'};return _0x59423e;})});}_0x40ff4e=_['merge']({},_0x40ff4e,_0x3c89df[_0xc3f8('0x56')]);return _0xc091b6[_0xc3f8('0x15a')](_0x40ff4e);}})[_0xc3f8('0x11')](function(_0x50d680){if(_0x50d680){_0x290783=_0x50d680[_0xc3f8('0x47')];if(!_0x3c89df['query']['hasOwnProperty']('nolimit')){_0x40ff4e['limit']=qs[_0xc3f8('0x21')](_0x3c89df[_0xc3f8('0x45')][_0xc3f8('0x21')]);_0x40ff4e[_0xc3f8('0x20')]=qs[_0xc3f8('0x20')](_0x3c89df[_0xc3f8('0x45')][_0xc3f8('0x20')]);}return _0xc091b6['getSquareProjects'](_0x40ff4e);}})[_0xc3f8('0x11')](function(_0x483a08){if(_0x483a08){return _0x483a08?{'count':_0x290783,'rows':_0x483a08}:null;}})[_0xc3f8('0x11')](respondWithResult(_0xd546ff,null))['catch'](handleError(_0xd546ff,null));};exports['addSquareProjects']=function(_0x51d9a5,_0x37d744){return db[_0xc3f8('0x42')]['find']({'where':{'id':_0x51d9a5[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x37d744,null))[_0xc3f8('0x11')](function(_0x106713){if(_0x106713){return _0x106713[_0xc3f8('0x15c')](_0x51d9a5[_0xc3f8('0x58')]['ids'],_[_0xc3f8('0x12d')](_0x51d9a5[_0xc3f8('0x58')],[_0xc3f8('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x37d744,null))[_0xc3f8('0x1c')](handleError(_0x37d744,null));};exports['removeSquareProjects']=function(_0x24f478,_0x4909fb){return db['User'][_0xc3f8('0x35')]({'where':{'id':_0x24f478[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x4909fb,null))['then'](function(_0x1d2f86){if(_0x1d2f86){return _0x1d2f86['removeSquareProjects'](_0x24f478[_0xc3f8('0x45')][_0xc3f8('0x5b')]);}})['then'](respondWithStatusCode(_0x4909fb,null))[_0xc3f8('0x1c')](handleError(_0x4909fb,null));};exports[_0xc3f8('0x15d')]=function(_0x32c2b2,_0x42b557){var _0x37a0fe={},_0x316176={},_0xe42765={'count':0x0,'rows':[]};var _0x273131=db['CmHopper'][_0xc3f8('0x39')];_0x316176[_0xc3f8('0x50')]=_[_0xc3f8('0x52')](_0x273131);_0x316176[_0xc3f8('0x45')]=_[_0xc3f8('0x52')](_0x32c2b2[_0xc3f8('0x45')]);_0x316176[_0xc3f8('0xc9')]=_[_0xc3f8('0x53')](_0x316176[_0xc3f8('0x50')],_0x316176[_0xc3f8('0x45')]);_0x316176[_0xc3f8('0xc9')]=_[_0xc3f8('0xff')](_0x316176['filters'],['$and',_0xc3f8('0x15e'),'$gt',_0xc3f8('0x15f'),_0xc3f8('0x160'),_0xc3f8('0x161'),_0xc3f8('0x162'),_0xc3f8('0x163'),'$not',_0xc3f8('0x164'),_0xc3f8('0x165'),_0xc3f8('0x166'),_0xc3f8('0x167'),_0xc3f8('0x168'),_0xc3f8('0x169'),_0xc3f8('0x16a'),_0xc3f8('0x16b'),_0xc3f8('0x168'),_0xc3f8('0x16c'),'$contains','$contained',_0xc3f8('0x16d')]);_0x37a0fe[_0xc3f8('0x40')]=_[_0xc3f8('0x53')](_0x316176[_0xc3f8('0x50')],qs[_0xc3f8('0x54')](_0x32c2b2[_0xc3f8('0x45')][_0xc3f8('0x54')]));_0x37a0fe['attributes']=_0x37a0fe[_0xc3f8('0x40')][_0xc3f8('0x47')]?_0x37a0fe[_0xc3f8('0x40')]:_0x316176[_0xc3f8('0x50')];if(!_0x32c2b2[_0xc3f8('0x45')][_0xc3f8('0xd3')]('nolimit')){_0x37a0fe['limit']=qs[_0xc3f8('0x21')](_0x32c2b2['query']['limit']);_0x37a0fe['offset']=qs[_0xc3f8('0x20')](_0x32c2b2[_0xc3f8('0x45')][_0xc3f8('0x20')]);}_0x37a0fe[_0xc3f8('0xd5')]=qs[_0xc3f8('0xca')](_0x32c2b2[_0xc3f8('0x45')][_0xc3f8('0xca')]);_0x37a0fe[_0xc3f8('0xcb')]=qs[_0xc3f8('0xc9')](_[_0xc3f8('0xcc')](_0x32c2b2[_0xc3f8('0x45')],_0x316176[_0xc3f8('0xc9')]));if(_0x32c2b2[_0xc3f8('0x45')][_0xc3f8('0x31')]){_0x37a0fe[_0xc3f8('0xcb')]=_[_0xc3f8('0xcd')](_0x37a0fe[_0xc3f8('0xcb')],{'$or':_[_0xc3f8('0x33')](_0x37a0fe[_0xc3f8('0x40')],function(_0x583068){var _0x5e9574={};_0x5e9574[_0x583068]={'$like':'%'+_0x32c2b2['query'][_0xc3f8('0x31')]+'%'};return _0x5e9574;})});}_0x37a0fe[_0xc3f8('0xcb')]={'$and':[_0x37a0fe['where'],{'$or':[{'UserId':_0x32c2b2[_0xc3f8('0x57')]['id']},{'OwnerId':_0x32c2b2[_0xc3f8('0x57')]['id']}]}]};_0x37a0fe=_[_0xc3f8('0xcd')]({},_0x37a0fe,_0x32c2b2[_0xc3f8('0x56')]);var _0x1ac0a8={'where':_0x37a0fe[_0xc3f8('0xcb')]};return db[_0xc3f8('0x16e')][_0xc3f8('0x23')](_0x1ac0a8)[_0xc3f8('0x11')](function(_0x348e20){_0xe42765['count']=_0x348e20;if(_0x32c2b2['query'][_0xc3f8('0x55')]){_0x37a0fe[_0xc3f8('0x3e')]=[{'attributes':['id','firstName',_0xc3f8('0x16f'),_0xc3f8('0xec')],'model':db[_0xc3f8('0x170')],'as':_0xc3f8('0x171')},{'attributes':['id','name',_0xc3f8('0x172')],'model':db[_0xc3f8('0x173')],'as':'Queue'}];}return db[_0xc3f8('0x16e')][_0xc3f8('0x43')](_0x37a0fe);})['then'](function(_0x4e257a){_0xe42765[_0xc3f8('0x44')]=_0x4e257a;return _0xe42765;})[_0xc3f8('0x11')](respondWithFilteredResult(_0x42b557,_0x37a0fe))[_0xc3f8('0x1c')](handleError(_0x42b557,null));};exports['getApiKey']=function(_0x346f33,_0x1af760){if(!_[_0xc3f8('0xa2')](_0x346f33['user']['id'])&&(_0x346f33[_0xc3f8('0x2c')][_0xc3f8('0x29')]==_0xc3f8('0x2a')||_0x346f33[_0xc3f8('0x2c')][_0xc3f8('0x29')]==_0xc3f8('0x2c'))){return db[_0xc3f8('0x42')]['findOne']({'where':{'id':_0x346f33[_0xc3f8('0x57')]['id']},'raw':!![]})[_0xc3f8('0x11')](function(_0x4eb280){return authService[_0xc3f8('0x174')](_0x4eb280);})[_0xc3f8('0x11')](function(_0x23aa83){if(_0x23aa83){return _0x1af760[_0xc3f8('0x1e')](0xc8)[_0xc3f8('0x175')]({'api_key':_0x23aa83[_0xc3f8('0x176')]});}else{return _0x1af760[_0xc3f8('0x1e')](0xcc)[_0xc3f8('0x175')]({'message':_0xc3f8('0x177')});}})['catch'](handleError(_0x1af760,0x193));}else{return _0x1af760['status'](0x191)[_0xc3f8('0x175')]({'message':_0xc3f8('0x178')});}};exports[_0xc3f8('0x179')]=function(_0x25c4b2,_0x2162a6){if(!_[_0xc3f8('0xa2')](_0x25c4b2[_0xc3f8('0x2c')]['id'])&&(_0x25c4b2[_0xc3f8('0x2c')][_0xc3f8('0x29')]==_0xc3f8('0x2a')||_0x25c4b2['user'][_0xc3f8('0x29')]==_0xc3f8('0x2c'))){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x25c4b2[_0xc3f8('0x57')]['id']}})['then'](function(_0x2ac7ce){return authService[_0xc3f8('0x17a')](_0x2ac7ce);})[_0xc3f8('0x11')](function(_0xdf8687){return db[_0xc3f8('0x42')]['update']({'apiKeyIat':_0xdf8687[_0xc3f8('0x17b')],'apiKeyNonce':_0xdf8687[_0xc3f8('0x17c')]},{'where':{'id':_0x25c4b2['params']['id']}})[_0xc3f8('0x11')](function(){return _0x2162a6[_0xc3f8('0x1e')](0xc8)[_0xc3f8('0x175')]({'api_key':_0xdf8687['token']});});})[_0xc3f8('0x1c')](handleError(_0x2162a6,0x193));}else{return _0x2162a6['status'](0x191)[_0xc3f8('0x175')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xc3f8('0x17d')]=function(_0x25bfdb,_0x2cde3a){if(!_[_0xc3f8('0xa2')](_0x25bfdb['user']['id'])&&(_0x25bfdb['user'][_0xc3f8('0x29')]=='admin'||_0x25bfdb[_0xc3f8('0x2c')][_0xc3f8('0x29')]==_0xc3f8('0x2c'))){return db[_0xc3f8('0x42')][_0xc3f8('0x35')]({'where':{'id':_0x25bfdb[_0xc3f8('0x57')]['id']}})[_0xc3f8('0x11')](handleEntityNotFound(_0x2cde3a,null))[_0xc3f8('0x11')](function(_0x5ec051){if(_0x5ec051&&_0x5ec051[_0xc3f8('0x17e')]&&_0x5ec051[_0xc3f8('0x17f')])return _0x5ec051;else throw{'message':_0xc3f8('0x180')};})[_0xc3f8('0x11')](function(_0x3ec20c){return db['User'][_0xc3f8('0x26')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x25bfdb['params']['id']}});})[_0xc3f8('0x11')](respondWithStatusCode(_0x2cde3a,0xc8))[_0xc3f8('0x1c')](handleError(_0x2cde3a,0x193));}else{return _0x2cde3a[_0xc3f8('0x1e')](0x191)[_0xc3f8('0x175')]({'message':_0xc3f8('0x178')});}};exports[_0xc3f8('0x181')]=function(_0x595f4d,_0x2a238d){var _0x4874e1=_0x595f4d[_0xc3f8('0x2c')][_0xc3f8('0x28')]({'plain':!![]});if(!_0x4874e1){return _0x2a238d['status'](0x191)[_0xc3f8('0x38')](_0xc3f8('0x182'));}else{return _0x2a238d[_0xc3f8('0x1e')](0xc8)[_0xc3f8('0x175')](_0x4874e1);}};exports[_0xc3f8('0x183')]=function(_0x1b8e20,_0x257cf1){var _0x443346={'offset':0x0},_0x28387d={'count':0x0,'rows':[]};Promise[_0xc3f8('0x184')]()[_0xc3f8('0x11')](function(){if(!_0x1b8e20['query'][_0xc3f8('0x31')]&&!_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x185')]&&!_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x186')])return[];return Promise[_0xc3f8('0x184')]()[_0xc3f8('0x11')](function(){var _0x3ed07f=[];if(!_[_0xc3f8('0x85')](_0x1b8e20[_0xc3f8('0x45')]['teams'])){_0x3ed07f[_0xc3f8('0x41')](db[_0xc3f8('0x112')][_0xc3f8('0x43')]({'attributes':['id',_0xc3f8('0x36')],'where':{'id':_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x185')]}}));}if(!_['isEmpty'](_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x186')])){_0x3ed07f[_0xc3f8('0x41')](db['VoiceQueue']['findAll']({'attributes':['id','name'],'type':_0xc3f8('0x187'),'where':{'id':_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x186')]}}));}return Promise['all'](_0x3ed07f);})[_0xc3f8('0x11')](function(_0xc775fa){var _0x26cc18=_['flatten'](_0xc775fa)[_0xc3f8('0x33')](function(_0x4e8e3d){return _0x4e8e3d[_0xc3f8('0x12a')]({'attributes':['id',_0xc3f8('0x36'),_0xc3f8('0x61'),_0xc3f8('0x121')],'raw':!![]});});return Promise[_0xc3f8('0x4e')](_0x26cc18);})[_0xc3f8('0x11')](function(_0x131e8c){var _0x5b329d=_[_0xc3f8('0x11e')](_0x131e8c);if(!_0x1b8e20['query']['filter'])return _0x5b329d;if(_[_0xc3f8('0x85')](_0x5b329d)){return db[_0xc3f8('0x42')]['findAll']({'attributes':['id',_0xc3f8('0x36'),'internal',_0xc3f8('0x121')],'where':{'role':_0xc3f8('0x2e'),'$or':[db[_0xc3f8('0x63')][_0xc3f8('0xcb')](db['sequelize']['fn']('lower',db['sequelize'][_0xc3f8('0x188')](_0xc3f8('0x36'))),{'$like':'%'+_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x31')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x1b8e20['query'][_0xc3f8('0x31')]+'%'}}]},'raw':!![]});}else{return _(_0x5b329d)['flatten']()[_0xc3f8('0x31')](function(_0x56121f){return _0x56121f[_0xc3f8('0x36')][_0xc3f8('0x9d')]()[_0xc3f8('0x3f')](_0x1b8e20['query'][_0xc3f8('0x31')][_0xc3f8('0x9d')]())||_0x56121f[_0xc3f8('0x61')]['toString']()['includes'](_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x31')]);})[_0xc3f8('0x34')]();}})['then'](function(_0x24de78){var _0x31076a='name';var _0x41a3dd=_0xc3f8('0x189');if(_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0xca')]){var _0x41a3dd=_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0xca')][0x0]==='-'?_0xc3f8('0x18a'):_0xc3f8('0x189');var _0x31076a=_0x41a3dd==='asc'?_0x1b8e20[_0xc3f8('0x45')]['sort']:_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0xca')][_0xc3f8('0x18b')](0x1);}return _(_0x24de78)[_0xc3f8('0x18c')]('id')[_0xc3f8('0x18d')]([function(_0x45b0b7){return _0x31076a===_0xc3f8('0x36')?_0x45b0b7[_0x31076a][_0xc3f8('0x9d')]():_0x45b0b7[_0x31076a];}],[_0x41a3dd])[_0xc3f8('0x33')](function(_0x1d0dd4){return _[_0xc3f8('0xcc')](_0x1d0dd4,['id',_0xc3f8('0x36'),_0xc3f8('0x61'),_0xc3f8('0x121')]);})[_0xc3f8('0x34')]();})[_0xc3f8('0x11')](function(_0x12a9ce){return client[_0xc3f8('0x10')]('Agents',_0x1b8e20)[_0xc3f8('0x11')](function(_0x427fdc){if(_0x427fdc[_0xc3f8('0x18')])throw new Error(_0xc3f8('0x18e'));var _0x1a719=_0x427fdc[_0xc3f8('0x1b')];var _0x54511c=jayson['client'][_0xc3f8('0x18f')]({'port':0x232c});return _0x54511c[_0xc3f8('0x10')](_0xc3f8('0x2d'),_0x1b8e20)[_0xc3f8('0x11')](function(_0xc129c8){if(_0xc129c8[_0xc3f8('0x18')])throw new Error(_0xc3f8('0x190'));var _0x2b4439=_0xc129c8[_0xc3f8('0x1b')];return _[_0xc3f8('0xcd')]({},_0x2b4439,_0x1a719);});})[_0xc3f8('0x11')](function(_0x4c2ca1){return _[_0xc3f8('0x33')](_0x12a9ce,function(_0x1f4ff5){var _0x4ca2de=_['find'](_0x4c2ca1[_0xc3f8('0x44')],['id',_0x1f4ff5['id']]);if(!_0x4ca2de||!_0x1f4ff5['online']){_0x1f4ff5['status']=_0xc3f8('0x191');}else if(_0x4ca2de[_0xc3f8('0xa5')]){_0x1f4ff5[_0xc3f8('0x1e')]=_0xc3f8('0x101');}else{_0x1f4ff5[_0xc3f8('0x1e')]=_[_0xc3f8('0x3f')]([_0xc3f8('0x192'),_0xc3f8('0x193'),_0xc3f8('0x194'),_0xc3f8('0x195'),null,undefined],_0x4ca2de[_0xc3f8('0x196')])?_0xc3f8('0x121'):_0xc3f8('0x197');}return _0x1f4ff5;});});});})['then'](function(_0x574226){if(!_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0xd3')](_0xc3f8('0xd4'))){_0x443346['limit']=qs[_0xc3f8('0x21')](_0x1b8e20[_0xc3f8('0x45')]['limit']||0xa);_0x443346['offset']=qs['offset'](_0x1b8e20[_0xc3f8('0x45')][_0xc3f8('0x20')]);}_0x28387d[_0xc3f8('0x23')]=_0x574226[_0xc3f8('0x47')];_0x28387d['rows']=_0x443346[_0xc3f8('0x21')]?_0x574226[_0xc3f8('0x198')](_0x443346[_0xc3f8('0x20')],_0x443346[_0xc3f8('0x20')]+_0x443346[_0xc3f8('0x21')]):_0x574226;return _0x28387d;})[_0xc3f8('0x11')](respondWithFilteredResult(_0x257cf1,_0x443346))[_0xc3f8('0x1c')](handleError(_0x257cf1,null));};function get_open_tabs(_0x575cf5,_0x2609ea){var _0x45d3c0=_0x575cf5[_0xc3f8('0x199')](0x0)[_0xc3f8('0x19a')]()+_0x575cf5['slice'](0x1);var _0xf68e9b={'type':db[_0xc3f8('0x8c')][_0xc3f8('0x19b')]['SELECT'],'raw':!![]};return new BPromise(function(_0x184b6c,_0x638f91){var _0x1f84ec=squel[_0xc3f8('0x19c')]()[_0xc3f8('0x19d')](_0xc3f8('0x19e')+_0x45d3c0+'InteractionId','id')[_0xc3f8('0x19d')](_0xc3f8('0x19f'))[_0xc3f8('0x66')](_0xc3f8('0x1a0')+_0x575cf5+_0xc3f8('0x1a1'),'ui')[_0xc3f8('0xcb')](_0xc3f8('0x1a2'),_0x2609ea['id']);return db[_0xc3f8('0x63')][_0xc3f8('0x45')](_0x1f84ec[_0xc3f8('0x1a3')](),_0xf68e9b)[_0xc3f8('0x11')](function(_0x137783){_0x2609ea[_0x45d3c0+_0xc3f8('0x1a4')]=_0x137783;_0x184b6c(_0x137783);})[_0xc3f8('0x1c')](function(_0x1e0382){_0x638f91(_0x1e0382);});});};
\ No newline at end of file
+var _0xb9e7=['$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','firstName','lastName','CmContact','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','queues','teams','inbound','lower','col','toString','asc','substring','uniqBy','orderBy','request','client','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','ui.','InteractionId','field','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','bluebird','util','path','lodash','squel','jayson/promise','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost','http','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','get','role','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','value','includes','find','name','send','index','User','rawAttributes','fieldName','type','key','password','query','include','attributes','push','findAll','rows','openTabs','dataValues','fax','mail','openchannel','whatsapp','all','show','params','model','differenceBy','keys','salt','filters','intersection','fields','length','includeAll','merge','options','true','chat','sms','body','describe','addContacts','ids','internal','findById','max','min_internal','isNil','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','103','110','104','105','106','108','109','100','111','114','115','create','Unauthorized','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','telephone','isEmpty','autoAssociation','changePassword','oldPassword','newPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Sequelize','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','Queues','penalty','spread','QueueId','emit','Queue:save','VoiceQueue','voice','format','SIP/%s','each','UserVoiceQueueRt','upsert','removeQueues','isArray','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','existsSync','download','server/files/images/','ChatOpenTabs','CHAT','createdAt','FAX','OpenchannelOpenTabs','OPENCHANNEL','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','order','sort','pick','where','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','VoiceRecording','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','UserId','getSmsInteractions','FaxInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','bulkCreate','concat','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','openchannelPause','smsPause','pauseType','lastPauseAt','unpause','manual','Pause','getTeams','Team','addTeams','omit','setDataValue','Voice','getChatQueues','getMailQueues','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','Fax','getOpenchannelQueues','Openchannel','transaction','getDataValue','removeTeams','Chat','Mail','flatten','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','getScheduledCalls','CmHopper'];(function(_0x1ae1fb,_0x81c2ec){var _0x57166=function(_0x48c137){while(--_0x48c137){_0x1ae1fb['push'](_0x1ae1fb['shift']());}};_0x57166(++_0x81c2ec);}(_0xb9e7,0x1df));var _0x7b9e=function(_0x6f1a87,_0x5d5bcf){_0x6f1a87=_0x6f1a87-0x0;var _0x2495c7=_0xb9e7[_0x6f1a87];return _0x2495c7;};'use strict';var moment=require('moment');var BPromise=require(_0x7b9e('0x0'));var util=require(_0x7b9e('0x1'));var path=require(_0x7b9e('0x2'));var fs=require('fs');var _=require(_0x7b9e('0x3'));var squel=require(_0x7b9e('0x4'));var jayson=require(_0x7b9e('0x5'));var Redis=require('ioredis');var authService=require(_0x7b9e('0x6'));var qs=require(_0x7b9e('0x7'));var logger=require('../../config/logger')(_0x7b9e('0x8'));var utils=require('../../config/utils');var config=require(_0x7b9e('0x9'));var licenseUtil=require(_0x7b9e('0xa'));var db=require(_0x7b9e('0xb'))['db'];var socket=require(_0x7b9e('0xc'))(new Redis(config[_0x7b9e('0xd')]));require('./user.socket')[_0x7b9e('0xe')](socket);config[_0x7b9e('0xd')]=_[_0x7b9e('0xf')](config['redis'],{'host':_0x7b9e('0x10'),'port':0x18eb});var client=jayson['client'][_0x7b9e('0x11')]({'port':0x232a});var values;function respondWithRpcPromise(_0x2d6ffd,_0x540002,_0x54cc6a,_0x15ef78){return new BPromise(function(_0x567ea9,_0x29584e){var _0x5f1f9b=_0x15ef78||client;return _0x5f1f9b['request'](_0x2d6ffd,_0x54cc6a)['then'](function(_0x3fa26c){logger[_0x7b9e('0x12')](_0x7b9e('0x13'),_0x540002,_0x7b9e('0x14'));logger['debug'](_0x7b9e('0x15'),_0x540002,_0x7b9e('0x14'),JSON[_0x7b9e('0x16')](_0x3fa26c));if(_0x3fa26c[_0x7b9e('0x17')]){if(_0x3fa26c[_0x7b9e('0x17')][_0x7b9e('0x18')]===0x1f4){logger[_0x7b9e('0x17')](_0x7b9e('0x13'),_0x540002,_0x3fa26c[_0x7b9e('0x17')][_0x7b9e('0x19')]);return _0x29584e(_0x3fa26c['error'][_0x7b9e('0x19')]);}logger['error'](_0x7b9e('0x13'),_0x540002,_0x3fa26c[_0x7b9e('0x17')]['message']);return _0x567ea9(_0x3fa26c[_0x7b9e('0x17')][_0x7b9e('0x19')]);}else{logger['info']('User,\x20%s,\x20%s',_0x540002,_0x7b9e('0x14'));_0x567ea9(_0x3fa26c[_0x7b9e('0x1a')][_0x7b9e('0x19')]);}})[_0x7b9e('0x1b')](function(_0x524d43){logger[_0x7b9e('0x17')](_0x7b9e('0x13'),_0x540002,_0x524d43);_0x29584e(_0x524d43);});});}function respondWithStatusCode(_0x3bdbd8,_0x112374){_0x112374=_0x112374||0xcc;return function(_0x167d6f){if(_0x167d6f){return _0x3bdbd8['sendStatus'](_0x112374);}return _0x3bdbd8[_0x7b9e('0x1c')](_0x112374)[_0x7b9e('0x1d')]();};}function respondWithResult(_0x7db95f,_0x9b24da){_0x9b24da=_0x9b24da||0xc8;return function(_0x45cb41){if(_0x45cb41){return _0x7db95f[_0x7b9e('0x1c')](_0x9b24da)[_0x7b9e('0x1e')](_0x45cb41);}};}function respondWithFilteredResult(_0x39575a,_0x2b4b86){return function(_0x5dcd42){if(_0x5dcd42){var _0xf8b578=typeof _0x2b4b86[_0x7b9e('0x1f')]===_0x7b9e('0x20')&&typeof _0x2b4b86[_0x7b9e('0x21')]===_0x7b9e('0x20');var _0x2fde42=_0x5dcd42[_0x7b9e('0x22')];var _0x34b9c8=_0xf8b578?0x0:_0x2b4b86[_0x7b9e('0x1f')];var _0x2ce657=_0xf8b578?_0x5dcd42['count']:_0x2b4b86[_0x7b9e('0x1f')]+_0x2b4b86[_0x7b9e('0x21')];var _0x1a541c;if(_0x2ce657>=_0x2fde42){_0x2ce657=_0x2fde42;_0x1a541c=0xc8;}else{_0x1a541c=0xce;}_0x39575a[_0x7b9e('0x1c')](_0x1a541c);return _0x39575a[_0x7b9e('0x23')](_0x7b9e('0x24'),_0x34b9c8+'-'+_0x2ce657+'/'+_0x2fde42)['json'](_0x5dcd42);}return null;};}function saveUpdates(_0x22612e){return function(_0x5ca745){if(_0x5ca745){return _0x5ca745[_0x7b9e('0x25')](_0x22612e)['then'](function(_0x39c502){return _0x39c502;});}return null;};}function removeEntity(_0x4a7fbd){return function(_0x196d6c){if(_0x196d6c){return _0x196d6c[_0x7b9e('0x26')]()[_0x7b9e('0x27')](function(){var _0x1979d7=_0x196d6c[_0x7b9e('0x28')]({'plain':!![]});if(_0x1979d7[_0x7b9e('0x29')]===_0x7b9e('0x2a'))return;var _0x56e87e=[{'name':_0x7b9e('0x2b'),'value':_0x7b9e('0x2c'),'ignore':!![]},{'name':_0x7b9e('0x2d'),'value':_0x7b9e('0x2e'),'ignore':![]},{'name':_0x7b9e('0x2f'),'value':'telephone','ignore':![]}];var _0x2c005a=_(_0x56e87e)[_0x7b9e('0x30')](_0x7b9e('0x31'))[_0x7b9e('0x32')](_0x7b9e('0x33'))['value']();if(_[_0x7b9e('0x34')](_0x2c005a,_0x1979d7[_0x7b9e('0x29')])){return;}var _0x10104c=_[_0x7b9e('0x35')](_0x56e87e,['value',_0x1979d7['role']])[_0x7b9e('0x36')];return db['UserProfileResource']['destroy']({'where':{'type':_0x10104c,'resourceId':_0x1979d7['id']}})[_0x7b9e('0x27')](function(){return _0x196d6c;});})['then'](function(){_0x4a7fbd[_0x7b9e('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46210d){return function(_0x16e29b){if(!_0x16e29b){_0x46210d['sendStatus'](0x194);}return _0x16e29b;};}function handleError(_0x9dc173,_0x28b91e){_0x28b91e=_0x28b91e||0x1f4;return function(_0x19c7ae){logger[_0x7b9e('0x17')](_0x19c7ae['stack']);if(_0x19c7ae[_0x7b9e('0x36')]){delete _0x19c7ae[_0x7b9e('0x36')];}_0x9dc173[_0x7b9e('0x1c')](_0x28b91e)[_0x7b9e('0x37')](_0x19c7ae);};}exports[_0x7b9e('0x38')]=function(_0x5aa89e,_0x55a6c7){var _0x495d95={},_0x2f9551={'count':0x0,'rows':[]};var _0x542873=_(db[_0x7b9e('0x39')][_0x7b9e('0x3a')])[_0x7b9e('0x32')](function(_0x4cec61){return{'name':_0x4cec61[_0x7b9e('0x3b')],'type':_0x4cec61[_0x7b9e('0x3c')][_0x7b9e('0x3d')]};})[_0x7b9e('0x30')](function(_0x1260f0){return!_[_0x7b9e('0x34')]([_0x7b9e('0x3e'),'salt'],_0x1260f0[_0x7b9e('0x36')]);})[_0x7b9e('0x33')]();_0x495d95=qs['getOptions'](_0x542873,_0x5aa89e);var _0x2ccc3b={'where':_0x495d95['where']};return db[_0x7b9e('0x39')][_0x7b9e('0x22')](_0x2ccc3b)[_0x7b9e('0x27')](function(_0x5b07de){_0x2f9551[_0x7b9e('0x22')]=_0x5b07de;if(_0x5aa89e[_0x7b9e('0x3f')]['includeAll']){_0x495d95[_0x7b9e('0x40')]=[{'all':!![]}];}if(!_[_0x7b9e('0x34')](_0x495d95['attributes'],'id')){_0x495d95[_0x7b9e('0x41')][_0x7b9e('0x42')]('id');}return db[_0x7b9e('0x39')][_0x7b9e('0x43')](_0x495d95);})['then'](function(_0x4e79fc){_0x2f9551[_0x7b9e('0x44')]=_0x4e79fc;if(_0x5aa89e[_0x7b9e('0x3f')][_0x7b9e('0x45')]==='true'){var _0x534f47=[];for(var _0x2d2285=0x0;_0x2d2285<_0x2f9551[_0x7b9e('0x44')]['length'];_0x2d2285++){_0x534f47[_0x7b9e('0x42')](get_open_tabs('chat',_0x2f9551['rows'][_0x2d2285][_0x7b9e('0x46')]));_0x534f47['push'](get_open_tabs('sms',_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));_0x534f47['push'](get_open_tabs(_0x7b9e('0x47'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));_0x534f47[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x48'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));_0x534f47[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x49'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285]['dataValues']));_0x534f47[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x4a'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));}return BPromise[_0x7b9e('0x4b')](_0x534f47)[_0x7b9e('0x27')](function(_0x54e4fb){return _0x2f9551;});}else{return _0x2f9551;}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x55a6c7,_0x495d95))['catch'](handleError(_0x55a6c7,null));};exports[_0x7b9e('0x4c')]=function(_0xfb1bd9,_0x96dbdc){var _0x527b35={'raw':![],'where':{'id':_0xfb1bd9[_0x7b9e('0x4d')]['id']}},_0x3c1389={};_0x3c1389[_0x7b9e('0x4e')]=_[_0x7b9e('0x4f')](_[_0x7b9e('0x50')](db[_0x7b9e('0x39')][_0x7b9e('0x3a')]),[_0x7b9e('0x3e'),_0x7b9e('0x51')]);_0x3c1389[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0xfb1bd9['query']);_0x3c1389[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x3c1389[_0x7b9e('0x4e')],_0x3c1389['query']);_0x527b35[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x3c1389[_0x7b9e('0x4e')],qs['fields'](_0xfb1bd9[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x527b35[_0x7b9e('0x41')]=_0x527b35[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x527b35[_0x7b9e('0x41')]:_0x3c1389[_0x7b9e('0x4e')];if(_0xfb1bd9['query'][_0x7b9e('0x56')]){_0x527b35[_0x7b9e('0x40')]=[{'all':!![]}];}_0x527b35=_[_0x7b9e('0x57')]({},_0x527b35,_0xfb1bd9[_0x7b9e('0x58')]);if(!_[_0x7b9e('0x34')](_0x527b35['attributes'],'id')){_0x527b35[_0x7b9e('0x41')]['push']('id');}return db['User'][_0x7b9e('0x35')](_0x527b35)[_0x7b9e('0x27')](handleEntityNotFound(_0x96dbdc,null))[_0x7b9e('0x27')](function(_0x5b3727){var _0x24e3da=[];values=_0x5b3727;if(_0xfb1bd9[_0x7b9e('0x3f')][_0x7b9e('0x45')]===_0x7b9e('0x59')){_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x5a'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da['push'](get_open_tabs(_0x7b9e('0x5b'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs('openchannel',_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x4a'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x47'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x48'),_0x5b3727[_0x7b9e('0x46')]));return BPromise['all'](_0x24e3da);}else{return values;}})[_0x7b9e('0x27')](function(_0x6eaadc){return values;})['then'](respondWithResult(_0x96dbdc,null))[_0x7b9e('0x1b')](handleError(_0x96dbdc,null));};exports['update']=function(_0x2debf6,_0xc6c921){if(_0x2debf6[_0x7b9e('0x5c')]['id']){delete _0x2debf6[_0x7b9e('0x5c')]['id'];}delete _0x2debf6[_0x7b9e('0x5c')]['role'];return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x2debf6['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xc6c921,null))[_0x7b9e('0x27')](saveUpdates(_0x2debf6['body'],null))[_0x7b9e('0x27')](respondWithResult(_0xc6c921,null))[_0x7b9e('0x1b')](handleError(_0xc6c921,null));};exports[_0x7b9e('0x5d')]=function(_0x4125f0,_0x27dc1b){return db['User'][_0x7b9e('0x5d')]()[_0x7b9e('0x27')](respondWithResult(_0x27dc1b,null))['catch'](handleError(_0x27dc1b,null));};exports[_0x7b9e('0x5e')]=function(_0x517e6f,_0x3090ab){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x517e6f[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3090ab,null))['then'](function(_0x5d30b6){if(_0x5d30b6){return _0x5d30b6[_0x7b9e('0x5e')](_0x517e6f[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_['omit'](_0x517e6f['body'],[_0x7b9e('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x3090ab,null))[_0x7b9e('0x1b')](handleError(_0x3090ab,null));};function validateUser(_0x4e6dae){return new BPromise(function(_0x275f82,_0x52a16b){if(_0x4e6dae[_0x7b9e('0x60')])return _0x275f82(_0x4e6dae);return db['Setting'][_0x7b9e('0x61')](0x1)['then'](function(_0x322f69){if(_0x322f69['securePassword'])authService['validatePasswordPattern'](_0x4e6dae[_0x7b9e('0x3e')]);db[_0x7b9e('0x39')][_0x7b9e('0x62')](_0x7b9e('0x60'))[_0x7b9e('0x27')](function(_0x5797e1){if(_['isNil'](_0x5797e1)){_0x4e6dae['internal']=_0x322f69[_0x7b9e('0x63')]||0x1;return;}if(_[_0x7b9e('0x64')](_0x322f69[_0x7b9e('0x63')])||_0x322f69[_0x7b9e('0x63')]===_0x5797e1){_0x4e6dae[_0x7b9e('0x60')]=_0x5797e1+0x1;return;}if(_0x322f69[_0x7b9e('0x63')]>_0x5797e1){_0x4e6dae[_0x7b9e('0x60')]=_0x322f69[_0x7b9e('0x63')];return;}return db[_0x7b9e('0x65')]['query'](_0x7b9e('0x66'),{'type':db[_0x7b9e('0x65')][_0x7b9e('0x67')][_0x7b9e('0x68')]})['then'](function(_0x3660a8){if(_0x3660a8&&_0x3660a8[_0x7b9e('0x55')]){for(var _0x4f3f95=0x0,_0x4b260e=_0x3660a8['length'];_0x4f3f95<_0x4b260e&&_[_0x7b9e('0x64')](_0x4e6dae['internal']);_0x4f3f95++){if(_0x322f69[_0x7b9e('0x63')]<=_0x3660a8[_0x4f3f95]['from']){_0x4e6dae['internal']=_0x3660a8[_0x4f3f95]['from'];}else if(_0x322f69[_0x7b9e('0x63')]>_0x3660a8[_0x4f3f95]['from']&&_0x322f69['min_internal']<=_0x3660a8[_0x4f3f95]['to']){_0x4e6dae[_0x7b9e('0x60')]=_0x322f69[_0x7b9e('0x63')];}}}if(_[_0x7b9e('0x64')](_0x4e6dae[_0x7b9e('0x60')])){_0x4e6dae[_0x7b9e('0x60')]=_0x5797e1+0x1;}return _0x275f82(_0x4e6dae);});});})[_0x7b9e('0x1b')](function(_0x30639f){_0x52a16b(_0x30639f);});});}function updateUser(_0x113753){return new BPromise(function(_0x4cf1ff,_0x424b1e){try{if(_0x113753[_0x7b9e('0x69')]){_0x113753[_0x7b9e('0x6a')]=_0x113753[_0x7b9e('0x60')];_0x113753[_0x7b9e('0x6b')]={'mailbox':_0x113753[_0x7b9e('0x60')],'password':_0x113753[_0x7b9e('0x3e')],'fullname':_0x113753[_0x7b9e('0x6c')],'email':_0x113753[_0x7b9e('0x6d')]};}if(_0x113753[_0x7b9e('0x29')]===_0x7b9e('0x2e')){if(!_0x113753['permissions'])_0x113753[_0x7b9e('0x6e')]=[_0x7b9e('0x6f'),'102',_0x7b9e('0x70'),'113',_0x7b9e('0x71'),_0x7b9e('0x72'),_0x7b9e('0x73'),_0x7b9e('0x74'),'107',_0x7b9e('0x75'),_0x7b9e('0x76'),_0x7b9e('0x77'),_0x7b9e('0x78'),_0x7b9e('0x79'),_0x7b9e('0x7a')];}_0x4cf1ff(_0x113753);}catch(_0x6e03b6){_0x424b1e(_0x6e03b6);}});}exports[_0x7b9e('0x7b')]=function(_0x466dd8,_0x46db56){if(_0x466dd8[_0x7b9e('0x2c')]['role']===_0x7b9e('0x2e'))throw new Error(_0x7b9e('0x7c'));if(_0x466dd8[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2c')&&_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x29')]!==_0x7b9e('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x466dd8[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2a')&&_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x29')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x7b9e('0x7d')]([_0x466dd8[_0x7b9e('0x5c')]])[_0x7b9e('0x27')](function(){return validateUser(_0x466dd8[_0x7b9e('0x5c')]);})[_0x7b9e('0x27')](function(_0x2a7f57){return updateUser(_0x2a7f57)[_0x7b9e('0x27')](function(_0x19ccaf){if(_0x19ccaf['role']===_0x7b9e('0x2a')){_0x19ccaf['settingsEnabled']=_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x7e')];delete _0x19ccaf[_0x7b9e('0x7f')];}return _0x19ccaf;});})[_0x7b9e('0x27')](function(_0x5224e2){return db[_0x7b9e('0x39')]['create'](_0x5224e2,{'include':[{'model':db[_0x7b9e('0x6b')],'as':_0x7b9e('0x6b')}]});})['then'](function(_0x130370){if(_0x466dd8[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2c'))return _0x130370;if(_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x29')]!==_0x7b9e('0x2c'))return _0x130370;return db[_0x7b9e('0x80')]['find']({'where':{'name':_0x130370[_0x7b9e('0x29')]===_0x7b9e('0x2e')?'Agents':'Telephones','userProfileId':_0x466dd8[_0x7b9e('0x2c')]['userProfileId']},'raw':!![]})[_0x7b9e('0x27')](function(_0x31d9bc){if(!_0x31d9bc||_0x31d9bc['autoAssociation']!=0x0)return _0x130370;return db[_0x7b9e('0x81')][_0x7b9e('0x7b')]({'name':_0x130370['name'],'resourceId':_0x130370['id'],'type':_0x31d9bc[_0x7b9e('0x36')],'sectionId':_0x31d9bc['id']},{})[_0x7b9e('0x27')](function(){return _0x130370;});})[_0x7b9e('0x1b')](function(_0x5a6658){logger[_0x7b9e('0x17')](_0x7b9e('0x82'),_0x5a6658);throw _0x5a6658;});})[_0x7b9e('0x27')](respondWithResult(_0x46db56,0xc9))[_0x7b9e('0x1b')](handleError(_0x46db56,null));};exports['bulkCreate']=function(_0xd1b87f,_0x2fe389){var _0x48f6dc=_0xd1b87f['body'];var _0x24d3aa=[];if(_0xd1b87f['user'][_0x7b9e('0x29')]===_0x7b9e('0x2e'))throw new Error('Unauthorized');if(_['some'](_0x48f6dc,[_0x7b9e('0x29'),_0x7b9e('0x2c')])&&_0xd1b87f[_0x7b9e('0x2c')]['role']!==_0x7b9e('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x7b9e('0x83')](_0x48f6dc,[_0x7b9e('0x29'),_0x7b9e('0x2a')])&&_0xd1b87f['user'][_0x7b9e('0x29')]!==_0x7b9e('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x7b9e('0x7d')](_0x48f6dc)[_0x7b9e('0x27')](function(){return validateUser(_0x48f6dc[0x0]);})['then'](function(){for(var _0x35682e=0x1;_0x35682e<_0x48f6dc[_0x7b9e('0x55')];_0x35682e++){var _0x40b675=_0x48f6dc[_0x35682e-0x1][_0x7b9e('0x60')];if(!_0x48f6dc[_0x35682e][_0x7b9e('0x60')])_0x48f6dc[_0x35682e][_0x7b9e('0x60')]=_0x40b675+0x1;_0x24d3aa[_0x7b9e('0x42')](validateUser(_0x48f6dc[_0x35682e]));}return BPromise[_0x7b9e('0x4b')](_0x24d3aa);})[_0x7b9e('0x27')](function(){_0x24d3aa=[];for(var _0x3d61f4=0x0;_0x3d61f4<_0x48f6dc[_0x7b9e('0x55')];_0x3d61f4++){_0x24d3aa[_0x7b9e('0x42')](updateUser(_0x48f6dc[_0x3d61f4]));}return BPromise['all'](_0x24d3aa);})[_0x7b9e('0x27')](function(){return BPromise['each'](_0x48f6dc,function(_0x438613){return db['User']['create'](_0x438613,{'include':[{'model':db[_0x7b9e('0x6b')],'as':_0x7b9e('0x6b')}]})[_0x7b9e('0x27')](function(_0x5f49ce){_0x438613['id']=_0x5f49ce['id'];return _0x438613;});});})[_0x7b9e('0x27')](function(_0x1b1920){if(_0xd1b87f[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2c'))return _0x1b1920;if(_0xd1b87f[_0x7b9e('0x2c')][_0x7b9e('0x29')]!=='user')return _0x1b1920;var _0x180e95=_[_0x7b9e('0x83')](_0x1b1920,function(_0x58cd91){return _0x58cd91[_0x7b9e('0x29')]===_0x7b9e('0x2e')||_0x58cd91[_0x7b9e('0x29')]===_0x7b9e('0x84');});if(!_0x180e95)return _0x1b1920;return db[_0x7b9e('0x80')][_0x7b9e('0x43')]({'where':{'name':{'$or':[_0x7b9e('0x2d'),'Telephones']},'userProfileId':_0xd1b87f['user']['userProfileId']},'raw':!![]})[_0x7b9e('0x27')](function(_0x22fc84){if(_[_0x7b9e('0x85')](_0x22fc84)||!_[_0x7b9e('0x83')](_0x22fc84,[_0x7b9e('0x86'),0x0]))return _0x1b1920;_0x24d3aa=[];var _0x1191d8=_(_0x22fc84)[_0x7b9e('0x32')](function(_0x14c95b){if(_0x14c95b[_0x7b9e('0x86')]===0x1)return;return _0x14c95b['name']===_0x7b9e('0x2d')?_0x7b9e('0x2e'):_0x7b9e('0x84');})['compact']()[_0x7b9e('0x33')]();for(var _0x51868f=0x0;_0x51868f<_0x1b1920[_0x7b9e('0x55')];_0x51868f++){if(!_[_0x7b9e('0x34')](_0x1191d8,_0x1b1920[_0x51868f][_0x7b9e('0x29')]))return;var _0x1b37f3=_0x1b1920[_0x51868f]['role']===_0x7b9e('0x2e')?'Agents':_0x7b9e('0x2f');_0x24d3aa[_0x7b9e('0x42')](db['UserProfileResource']['create']({'name':_0x1b1920[_0x51868f][_0x7b9e('0x36')],'resourceId':_0x1b1920[_0x51868f]['id'],'type':_0x1b37f3,'sectionId':_['find'](_0x22fc84,['name',_0x1b37f3])['id']},{}));}return BPromise[_0x7b9e('0x4b')](_0x24d3aa);});})[_0x7b9e('0x27')](respondWithResult(_0x2fe389,0xc9))[_0x7b9e('0x1b')](handleError(_0x2fe389,null));};exports[_0x7b9e('0x87')]=function(_0x4f0c00,_0x49670f){if(_0x4f0c00['body']['id']){delete _0x4f0c00[_0x7b9e('0x5c')]['id'];}return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x4f0c00[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](function(_0x19d48e){if(!_0x19d48e)return null;if(_0x19d48e['id']===_0x4f0c00['user']['id']){if(!_0x4f0c00['body'][_0x7b9e('0x88')]||!_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x89')]){throw new db['Sequelize'][(_0x7b9e('0x8a'))](_0x7b9e('0x8b'));}if(!_0x19d48e[_0x7b9e('0x8c')](_0x4f0c00['body'][_0x7b9e('0x88')])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x8e'));}if(_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x88')]===_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x89')]){throw new db['Sequelize']['ValidationError'](_0x7b9e('0x8f'));}}else if(_0x4f0c00[_0x7b9e('0x2c')][_0x7b9e('0x29')]==='admin'){if(!_0x4f0c00[_0x7b9e('0x5c')]['newPassword']){throw new db['Sequelize'][(_0x7b9e('0x8a'))](_0x7b9e('0x90'));}}else if(_0x4f0c00[_0x7b9e('0x2c')][_0x7b9e('0x29')]==='user'){if(!_0x4f0c00['body'][_0x7b9e('0x89')]){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x90'));}if(_0x19d48e[_0x7b9e('0x29')]!==_0x7b9e('0x2e')){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))]('Unauthorized');}}else{throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))]('Unauthorized');}return _0x19d48e;})[_0x7b9e('0x27')](handleEntityNotFound(_0x49670f,null))[_0x7b9e('0x27')](function(_0x4af72e){return db[_0x7b9e('0x91')][_0x7b9e('0x92')]({'attributes':['id',_0x7b9e('0x93'),_0x7b9e('0x94'),_0x7b9e('0x95')]})['then'](function(_0x2411d1){if(_0x2411d1[_0x7b9e('0x93')])authService[_0x7b9e('0x96')](_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x89')]);if(!_0x2411d1[_0x7b9e('0x94')]||!_0x4af72e[_0x7b9e('0x97')])return _0x4af72e;authService['validatePasswordHistory'](_0x4f0c00['body'][_0x7b9e('0x89')],_0x4af72e[_0x7b9e('0x97')],_0x2411d1['passwordHistoryLimit']);return _0x4af72e;})['then'](saveUpdates({'password':_0x4f0c00['body']['newPassword'],'passwordResetAt':_0x4f0c00[_0x7b9e('0x2c')]['id']==_0x4f0c00['params']['id']?moment():null,'previousPasswords':authService[_0x7b9e('0x98')](_0x4f0c00[_0x7b9e('0x5c')]['newPassword'],_0x4af72e[_0x7b9e('0x97')])},null));})[_0x7b9e('0x27')](respondWithResult(_0x49670f,null))[_0x7b9e('0x1b')](handleError(_0x49670f,null));};exports['addQueues']=function(_0x18a0a6,_0x799acb){var _0x128331=_0x18a0a6[_0x7b9e('0x5c')][_0x7b9e('0x99')];return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x18a0a6[_0x7b9e('0x4d')]['id']},'attributes':['id','name',_0x7b9e('0x29'),_0x7b9e('0x9a'),_0x7b9e('0x9b'),_0x7b9e('0x9c'),_0x7b9e('0x9d')]})['then'](handleEntityNotFound(_0x799acb,null))[_0x7b9e('0x27')](function(_0x530d43){if(_0x530d43){if(!utils[_0x7b9e('0x9e')](_0x128331)){throw new db[(_0x7b9e('0x8d'))]['ValidationError'](_0x7b9e('0x9f'));}return _0x530d43['add'+_[_0x7b9e('0xa0')](_0x128331[_0x7b9e('0xa1')]())+_0x7b9e('0xa2')](_0x18a0a6['body'][_0x7b9e('0x5f')],{'penalty':_0x18a0a6['body'][_0x7b9e('0xa3')]||0x0})[_0x7b9e('0xa4')](function(_0x177677){for(var _0x4bfb67=0x0;_0x4bfb67<_0x18a0a6[_0x7b9e('0x5c')]['ids'][_0x7b9e('0x55')];_0x4bfb67+=0x1){var _0x30b8ec={'UserId':Number(_0x18a0a6['params']['id'])};_0x30b8ec[_[_0x7b9e('0xa0')](_0x128331[_0x7b9e('0xa1')]())+_0x7b9e('0xa5')]=Number(_0x18a0a6[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x4bfb67]);socket[_0x7b9e('0xa6')](_0x7b9e('0x2c')+_[_0x7b9e('0xa0')](_0x128331[_0x7b9e('0xa1')]())+_0x7b9e('0xa7'),_0x30b8ec);}return _0x177677;})[_0x7b9e('0x27')](function(){if(_0x128331==='voice'){return db[_0x7b9e('0xa8')]['findAll']({'where':{'id':_0x18a0a6[_0x7b9e('0x5c')]['ids']||[]},'raw':!![],'attributes':['id',_0x7b9e('0x36')]});}})[_0x7b9e('0x27')](function(_0x332829){var _0x376061=_0x530d43[_0x7b9e('0x28')]({'plain':!![]});var _0x67386e=[];if(_0x128331===_0x7b9e('0xa9')&&_0x376061[_0x7b9e('0x29')]===_0x7b9e('0x2e')&&_0x376061[_0x7b9e('0x9a')]){for(var _0x431a31=0x0;_0x431a31<_0x332829['length'];_0x431a31+=0x1){_0x67386e['push']({'membername':_0x376061['name'],'UserId':_0x376061['id'],'queue_name':_0x332829[_0x431a31][_0x7b9e('0x36')],'VoiceQueueId':_0x332829[_0x431a31]['id'],'interface':_[_0x7b9e('0x64')](_0x376061[_0x7b9e('0x9d')])?util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x376061[_0x7b9e('0x36')]):_0x376061[_0x7b9e('0x9d')],'paused':_0x376061[_0x7b9e('0x9c')]||![],'penalty':_0x18a0a6[_0x7b9e('0x5c')][_0x7b9e('0xa3')]||0x0});}return BPromise[_0x7b9e('0xac')](_0x67386e,function(_0x54ae35){return db[_0x7b9e('0xad')][_0x7b9e('0xae')](_0x54ae35);});}return _0x530d43;});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x799acb,null))[_0x7b9e('0x1b')](handleError(_0x799acb,null));};exports[_0x7b9e('0xaf')]=function(_0x4be6c2,_0x3e1740){var _0x5524a6;return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x4be6c2['params']['id']},'attributes':['id','name',_0x7b9e('0x29')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x3e1740,null))[_0x7b9e('0x27')](function(_0x73c07){if(_0x73c07){_0x5524a6=_0x73c07;if(!_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x99')]||!utils[_0x7b9e('0x9e')](_0x4be6c2[_0x7b9e('0x3f')]['channel'])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x9f'));}return _0x73c07['remove'+_[_0x7b9e('0xa0')](_0x4be6c2[_0x7b9e('0x3f')]['channel'][_0x7b9e('0xa1')]())+_0x7b9e('0xa2')](_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](function(_0x39a1b4){if(_[_0x7b9e('0xb0')](_0x4be6c2['query'][_0x7b9e('0x5f')])){for(var _0x20ba6a=0x0;_0x20ba6a<_0x4be6c2['query']['ids']['length'];_0x20ba6a+=0x1){var _0x20a6fd={'UserId':Number(_0x4be6c2[_0x7b9e('0x4d')]['id'])};_0x20a6fd[_[_0x7b9e('0xa0')](_0x4be6c2[_0x7b9e('0x3f')]['channel'][_0x7b9e('0xa1')]())+_0x7b9e('0xa5')]=Number(_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x5f')][_0x20ba6a]);socket[_0x7b9e('0xa6')]('user'+_[_0x7b9e('0xa0')](_0x4be6c2['query'][_0x7b9e('0x99')][_0x7b9e('0xa1')]())+_0x7b9e('0xb1'),_0x20a6fd);}}else{var _0x20a6fd={'UserId':Number(_0x4be6c2[_0x7b9e('0x4d')]['id'])};_0x20a6fd[_['capitalize'](_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x99')]['toLowerCase']())+_0x7b9e('0xa5')]=Number(_0x4be6c2[_0x7b9e('0x3f')]['ids']);socket[_0x7b9e('0xa6')](_0x7b9e('0x2c')+_[_0x7b9e('0xa0')](_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x99')][_0x7b9e('0xa1')]())+_0x7b9e('0xb1'),_0x20a6fd);}return _0x39a1b4;})[_0x7b9e('0x27')](function(){if(_0x4be6c2['query']['channel']===_0x7b9e('0xa9')){return db[_0x7b9e('0xad')][_0x7b9e('0x26')]({'where':{'UserId':_0x4be6c2[_0x7b9e('0x4d')]['id'],'VoiceQueueId':_0x4be6c2[_0x7b9e('0x3f')]['ids']},'individualHooks':!![]})[_0x7b9e('0x27')](function(){return _0x5524a6;});}return _0x5524a6;})[_0x7b9e('0x27')](respondWithStatusCode(_0x3e1740,null))[_0x7b9e('0x1b')](handleError(_0x3e1740,null));};exports[_0x7b9e('0xb2')]=function(_0x3570fb,_0x19ff71){_0x3570fb[_0x7b9e('0x5c')][_0x7b9e('0xb3')]=_0x3570fb[_0x7b9e('0xb4')][_0x7b9e('0xb5')];return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3570fb[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x19ff71,null))[_0x7b9e('0x27')](saveUpdates(_0x3570fb[_0x7b9e('0x5c')],null))[_0x7b9e('0x27')](respondWithResult(_0x19ff71,null))[_0x7b9e('0x1b')](handleError(_0x19ff71,null));};exports[_0x7b9e('0xb6')]=function(_0x5e2654,_0x2f3aa2){var _0x3851af=path[_0x7b9e('0xb7')](config[_0x7b9e('0xb8')],_0x7b9e('0xb9'));return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x5e2654[_0x7b9e('0x4d')]['id']},'attributes':['id',_0x7b9e('0xb3')],'raw':!![]})[_0x7b9e('0x27')](handleEntityNotFound(_0x2f3aa2,null))[_0x7b9e('0x27')](function(_0x37e63d){if(_0x37e63d){if(_[_0x7b9e('0x64')](_0x37e63d[_0x7b9e('0xb3')])){return _0x2f3aa2['download'](_0x3851af);}else{if(!fs[_0x7b9e('0xba')](path['join'](config[_0x7b9e('0xb8')],'server/files/images/',_0x37e63d['userpic']))){return _0x2f3aa2[_0x7b9e('0xbb')](_0x3851af);}return _0x2f3aa2[_0x7b9e('0xbb')](path[_0x7b9e('0xb7')](config[_0x7b9e('0xb8')],_0x7b9e('0xbc'),_0x37e63d[_0x7b9e('0xb3')]));}}})[_0x7b9e('0x1b')](handleError(_0x2f3aa2,null));};exports['getOpenTabs']=function(_0x136caa,_0x10b9cd){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x136caa[_0x7b9e('0x4d')]['id']},'attributes':['id']})[_0x7b9e('0x27')](handleEntityNotFound(_0x10b9cd,null))[_0x7b9e('0x27')](function(_0x199776){var _0xcc15ad=[];values=_0x199776[_0x7b9e('0x46')];_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x5a'),_0x199776[_0x7b9e('0x46')]));_0xcc15ad['push'](get_open_tabs('sms',_0x199776[_0x7b9e('0x46')]));_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x49'),_0x199776[_0x7b9e('0x46')]));_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x4a'),_0x199776['dataValues']));_0xcc15ad['push'](get_open_tabs(_0x7b9e('0x47'),_0x199776[_0x7b9e('0x46')]));_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x48'),_0x199776[_0x7b9e('0x46')]));return BPromise['all'](_0xcc15ad);})['then'](function(_0x2a5f0a){var _0x502f97=[];if(_0x2a5f0a){for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xbd')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values[_0x7b9e('0xbd')][_0x31e425];_0x502f97['push']({'channel':_0x7b9e('0xbe'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values['FaxOpenTabs'][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values['FaxOpenTabs'][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc0'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xc1')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values[_0x7b9e('0xc1')][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc2'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values['MailOpenTabs']['length'];_0x31e425++){var _0x1bc04e=values['MailOpenTabs'][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc3'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xc4')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values['SmsOpenTabs'][_0x31e425];_0x502f97['push']({'channel':_0x7b9e('0xc5'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xc6')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values[_0x7b9e('0xc6')][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc7'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}var _0x5f5466={'count':_0x502f97[_0x7b9e('0x55')],'rows':_0x502f97};return _0x5f5466;}else return null;})['then'](respondWithResult(_0x10b9cd,null))[_0x7b9e('0x1b')](handleError(_0x10b9cd,null));};exports[_0x7b9e('0xc8')]=function(_0x9d5e3c,_0x511c44){var _0x1a3ce1={};var _0x1153d9={};var _0x44f9d4;var _0xab1737;return db['User']['findOne']({'where':{'id':_0x9d5e3c['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x511c44,null))[_0x7b9e('0x27')](function(_0x23e562){if(_0x23e562){_0x44f9d4=_0x23e562;_0x1153d9[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['CmContact']['rawAttributes']);_0x1153d9[_0x7b9e('0x3f')]=_['keys'](_0x9d5e3c['query']);_0x1153d9[_0x7b9e('0x52')]=_['intersection'](_0x1153d9[_0x7b9e('0x4e')],_0x1153d9[_0x7b9e('0x3f')]);_0x1a3ce1[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1153d9['model'],qs[_0x7b9e('0x54')](_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x1a3ce1[_0x7b9e('0x41')]=_0x1a3ce1[_0x7b9e('0x41')]['length']?_0x1a3ce1[_0x7b9e('0x41')]:_0x1153d9[_0x7b9e('0x4e')];_0x1a3ce1[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x1a3ce1['where']=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x9d5e3c[_0x7b9e('0x3f')],_0x1153d9[_0x7b9e('0x52')]));if(_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x1a3ce1[_0x7b9e('0xcc')]=_['merge'](_0x1a3ce1[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x1a3ce1[_0x7b9e('0x41')],function(_0x1019f6){var _0x2bdf28={};_0x2bdf28[_0x1019f6]={'$like':'%'+_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x2bdf28;})});}_0x1a3ce1=_[_0x7b9e('0x57')]({},_0x1a3ce1,_0x9d5e3c['options']);return _0x44f9d4[_0x7b9e('0xc8')](_0x1a3ce1);}})[_0x7b9e('0x27')](function(_0x477679){if(_0x477679){_0xab1737=_0x477679['length'];if(_0x9d5e3c['query']['hasOwnProperty']('includeAll')){_0x1a3ce1[_0x7b9e('0x40')]=[{'model':db[_0x7b9e('0xcd')],'as':_0x7b9e('0xce'),'required':![]},{'model':db[_0x7b9e('0xcf')],'as':_0x7b9e('0xd0'),'attributes':['id','name',_0x7b9e('0xd1')],'where':_0x9d5e3c['query'][_0x7b9e('0xd2')]?{'id':_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xd2')]}:undefined,'required':_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xd2')]?!![]:![]}];}if(!_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x1a3ce1[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x9d5e3c['query'][_0x7b9e('0x21')]);_0x1a3ce1[_0x7b9e('0x1f')]=qs['offset'](_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x44f9d4['getContacts'](_0x1a3ce1);}})[_0x7b9e('0x27')](function(_0xf4b78){if(_0xf4b78){return _0xf4b78?{'count':_0xab1737,'rows':_0xf4b78}:null;}})['then'](respondWithResult(_0x511c44,null))[_0x7b9e('0x1b')](handleError(_0x511c44,null));};exports['getQueues']=function(_0x3a8e92,_0x2d3dbb){var _0x42e28c;var _0x39c8fc;var _0x4ab4c0={};var _0x32d689;return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x3a8e92[_0x7b9e('0x4d')]['id']},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x29')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x2d3dbb,null))[_0x7b9e('0x27')](function(_0x31ddfc){if(!utils[_0x7b9e('0x9e')](_0x3a8e92['query']['channel'])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x9f'));}_0x42e28c=_0x31ddfc;var _0x362f1e={};_0x362f1e[_0x7b9e('0x4e')]=_['keys'](db[_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+'Queue'][_0x7b9e('0x3a')]);_0x362f1e[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x3a8e92[_0x7b9e('0x3f')]);_0x362f1e[_0x7b9e('0x52')]=_['intersection'](_0x362f1e[_0x7b9e('0x4e')],_0x362f1e[_0x7b9e('0x3f')]);_0x4ab4c0[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x362f1e['model'],qs['fields'](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x4ab4c0[_0x7b9e('0x41')]=_0x4ab4c0[_0x7b9e('0x41')]['length']?_0x4ab4c0[_0x7b9e('0x41')]:_0x362f1e[_0x7b9e('0x4e')];_0x4ab4c0[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x4ab4c0[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x3a8e92[_0x7b9e('0x3f')],_0x362f1e[_0x7b9e('0x52')]));if(_0x3a8e92[_0x7b9e('0x3f')]['filter']){_0x4ab4c0[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x4ab4c0[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x4ab4c0[_0x7b9e('0x41')],function(_0x1abb27){var _0x3ad102={};_0x3ad102[_0x1abb27]={'$like':'%'+_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x3ad102;})});}_0x4ab4c0=_['merge']({},_0x4ab4c0,_0x3a8e92['options']);switch(_0x42e28c[_0x7b9e('0x29')]){case _0x7b9e('0x2a'):return db[_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+_0x7b9e('0xd5')][_0x7b9e('0x43')](_0x4ab4c0);case _0x7b9e('0x2c'):case _0x7b9e('0x2e'):return _0x42e28c[_0x7b9e('0x28')+_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+_0x7b9e('0xa2')](_0x4ab4c0);default:throw new db[(_0x7b9e('0x8d'))]['ValidationError'](_0x7b9e('0xd6'));}})['then'](function(_0x32fbf3){_0x32d689=_0x32fbf3[_0x7b9e('0x55')];if(!_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x4ab4c0[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x4ab4c0[_0x7b9e('0x1f')]=qs['offset'](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}switch(_0x42e28c[_0x7b9e('0x29')]){case'admin':return db[_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+_0x7b9e('0xd5')]['findAll'](_0x4ab4c0);case _0x7b9e('0x2c'):case _0x7b9e('0x2e'):return _0x42e28c[_0x7b9e('0x28')+_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')]['channel'])+'Queues'](_0x4ab4c0);}})['then'](function(_0x16cf74){return{'count':_0x32d689,'rows':_0x16cf74};})['then'](respondWithResult(_0x2d3dbb,null))['catch'](handleError(_0x2d3dbb,null));};exports[_0x7b9e('0xd7')]=function(_0x53dcec,_0x1c78d3){var _0x5cd55a={};var _0x576ba2={};var _0x4700b8;var _0x4dc763;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x53dcec[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1c78d3,null))[_0x7b9e('0x27')](function(_0x1446f7){if(_0x1446f7){_0x4700b8=_0x1446f7;_0x576ba2[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['UserVoiceQueueRt'][_0x7b9e('0x3a')]);_0x576ba2[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x53dcec[_0x7b9e('0x3f')]);_0x576ba2[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x576ba2['model'],_0x576ba2[_0x7b9e('0x3f')]);_0x5cd55a[_0x7b9e('0x41')]=_['intersection'](_0x576ba2[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x5cd55a[_0x7b9e('0x41')]=_0x5cd55a[_0x7b9e('0x41')]['length']?_0x5cd55a[_0x7b9e('0x41')]:_0x576ba2['model'];_0x5cd55a[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x5cd55a[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x53dcec[_0x7b9e('0x3f')],_0x576ba2[_0x7b9e('0x52')]));if(_0x53dcec['query']['filter']){_0x5cd55a[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x5cd55a['where'],{'$or':_[_0x7b9e('0x32')](_0x5cd55a['attributes'],function(_0x4fb4cc){var _0xa7476b={};_0xa7476b[_0x4fb4cc]={'$like':'%'+_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0xa7476b;})});}_0x5cd55a=_['merge']({},_0x5cd55a,_0x53dcec[_0x7b9e('0x58')]);return _0x4700b8[_0x7b9e('0xd7')](_0x5cd55a);}})['then'](function(_0x26d963){if(_0x26d963){_0x4dc763=_0x26d963[_0x7b9e('0x55')];if(!_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x5cd55a[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x5cd55a[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x53dcec[_0x7b9e('0x3f')]['offset']);}return _0x4700b8['getVoiceQueuesRt'](_0x5cd55a);}})[_0x7b9e('0x27')](function(_0x49884c){if(_0x49884c){return _0x49884c?{'count':_0x4dc763,'rows':_0x49884c}:null;}})['then'](respondWithResult(_0x1c78d3,null))[_0x7b9e('0x1b')](handleError(_0x1c78d3,null));};exports[_0x7b9e('0xd8')]=function(_0x10f7c3,_0x3c5ba6){var _0x3c5534={};var _0x2f1361={};var _0x3e4b6f;var _0x431303;return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x10f7c3[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x3c5ba6,null))[_0x7b9e('0x27')](function(_0x174d85){if(_0x174d85){_0x3e4b6f=_0x174d85;_0x2f1361[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0xd9')][_0x7b9e('0x3a')]);_0x2f1361[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x10f7c3[_0x7b9e('0x3f')]);_0x2f1361['filters']=_[_0x7b9e('0x53')](_0x2f1361[_0x7b9e('0x4e')],_0x2f1361[_0x7b9e('0x3f')]);_0x3c5534[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x2f1361[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x10f7c3['query']['fields']));_0x3c5534[_0x7b9e('0x41')]=_0x3c5534[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x3c5534['attributes']:_0x2f1361[_0x7b9e('0x4e')];_0x3c5534[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3c5534['where']=qs['filters'](_[_0x7b9e('0xcb')](_0x10f7c3['query'],_0x2f1361['filters']));if(_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x3c5534['where']=_[_0x7b9e('0x57')](_0x3c5534['where'],{'$or':_[_0x7b9e('0x32')](_0x3c5534['attributes'],function(_0x2a6ee9){var _0x1be216={};_0x1be216[_0x2a6ee9]={'$like':'%'+_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x1be216;})});}_0x3c5534=_[_0x7b9e('0x57')]({},_0x3c5534,_0x10f7c3[_0x7b9e('0x58')]);return _0x3e4b6f[_0x7b9e('0xd8')](_0x3c5534);}})['then'](function(_0xa831be){if(_0xa831be){_0x431303=_0xa831be[_0x7b9e('0x55')];if(!_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x3c5534[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x3c5534['offset']=qs[_0x7b9e('0x1f')](_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x3e4b6f[_0x7b9e('0xd8')](_0x3c5534);}})[_0x7b9e('0x27')](function(_0x500458){if(_0x500458){return _0x500458?{'count':_0x431303,'rows':_0x500458}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x3c5ba6,null))[_0x7b9e('0x1b')](handleError(_0x3c5ba6,null));};exports['getRecordings']=function(_0x44119b,_0x1aff4b){var _0x8c0f17={'raw':!![],'where':{}};var _0x1e8d3f={};var _0xe0f0ef={'count':0x0,'rows':[]};return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x44119b[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1aff4b,null))['then'](function(_0x3f0682){if(_0x3f0682){_0x1e8d3f['model']=_[_0x7b9e('0x50')](db[_0x7b9e('0xda')][_0x7b9e('0x3a')]);_0x1e8d3f[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x44119b[_0x7b9e('0x3f')]);_0x1e8d3f['filters']=_['intersection'](_0x1e8d3f[_0x7b9e('0x4e')],_0x1e8d3f[_0x7b9e('0x3f')]);_0x8c0f17[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1e8d3f[_0x7b9e('0x4e')],qs['fields'](_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x8c0f17[_0x7b9e('0x41')]=_0x8c0f17[_0x7b9e('0x41')]['length']?_0x8c0f17[_0x7b9e('0x41')]:_0x1e8d3f[_0x7b9e('0x4e')];if(!_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x8c0f17['limit']=qs[_0x7b9e('0x21')](_0x44119b['query']['limit']);_0x8c0f17[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x8c0f17[_0x7b9e('0xc9')]=qs['sort'](_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x8c0f17[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x44119b[_0x7b9e('0x3f')],_0x1e8d3f[_0x7b9e('0x52')]));_0x8c0f17[_0x7b9e('0xcc')]['UserId']=_0x3f0682['id'];if(_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x8c0f17[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x8c0f17[_0x7b9e('0xcc')],{'$or':_['map'](_0x8c0f17[_0x7b9e('0x41')],function(_0x9d70c8){var _0x5a563e={};_0x5a563e[_0x9d70c8]={'$like':'%'+_0x44119b[_0x7b9e('0x3f')]['filter']+'%'};return _0x5a563e;})});}_0x8c0f17=_[_0x7b9e('0x57')]({},_0x8c0f17,_0x44119b[_0x7b9e('0x58')]);return db[_0x7b9e('0xda')][_0x7b9e('0x22')]({'where':_0x8c0f17[_0x7b9e('0xcc')]})[_0x7b9e('0x27')](function(_0xe292f8){_0xe0f0ef['count']=_0xe292f8;if(_0x44119b['query'][_0x7b9e('0x56')]){_0x8c0f17[_0x7b9e('0x40')]=[{'all':!![]}];}return db[_0x7b9e('0xda')]['findAll'](_0x8c0f17);})[_0x7b9e('0x27')](function(_0x4cdace){_0xe0f0ef[_0x7b9e('0x44')]=_0x4cdace;return _0xe0f0ef;});}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x1aff4b,_0x8c0f17))['catch'](handleError(_0x1aff4b,null));};exports['getScreenRecordings']=function(_0x2c6b4d,_0x4a3b05){var _0x1349bc={'raw':!![],'where':{}};var _0x551202={};var _0x3800a2={'count':0x0,'rows':[]};return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x2c6b4d['params']['id']}})['then'](handleEntityNotFound(_0x4a3b05,null))['then'](function(_0x5a1df6){if(_0x5a1df6){_0x551202[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0xdb')]['rawAttributes']);_0x551202[_0x7b9e('0x3f')]=_['keys'](_0x2c6b4d[_0x7b9e('0x3f')]);_0x551202['filters']=_[_0x7b9e('0x53')](_0x551202[_0x7b9e('0x4e')],_0x551202[_0x7b9e('0x3f')]);_0x1349bc[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x551202[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x2c6b4d[_0x7b9e('0x3f')]['fields']));_0x1349bc[_0x7b9e('0x41')]=_0x1349bc[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x1349bc['attributes']:_0x551202[_0x7b9e('0x4e')];if(!_0x2c6b4d[_0x7b9e('0x3f')]['hasOwnProperty']('nolimit')){_0x1349bc[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x1349bc[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x1349bc[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x2c6b4d[_0x7b9e('0x3f')]['sort']);_0x1349bc[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x2c6b4d[_0x7b9e('0x3f')],_0x551202['filters']));_0x1349bc[_0x7b9e('0xcc')]['UserId']=_0x5a1df6['id'];if(_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x1349bc[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x1349bc[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x1349bc[_0x7b9e('0x41')],function(_0x50ba83){var _0x573811={};_0x573811[_0x50ba83]={'$like':'%'+_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x573811;})});}_0x1349bc=_[_0x7b9e('0x57')]({},_0x1349bc,_0x2c6b4d[_0x7b9e('0x58')]);return db[_0x7b9e('0xdb')][_0x7b9e('0x22')]({'where':_0x1349bc['where']})[_0x7b9e('0x27')](function(_0x31ac8f){_0x3800a2[_0x7b9e('0x22')]=_0x31ac8f;if(_0x2c6b4d['query']['includeAll']){_0x1349bc[_0x7b9e('0x40')]=[{'all':!![]}];}return db['ScreenRecording'][_0x7b9e('0x43')](_0x1349bc);})[_0x7b9e('0x27')](function(_0x4bf5b2){_0x3800a2[_0x7b9e('0x44')]=_0x4bf5b2;return _0x3800a2;});}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x4a3b05,_0x1349bc))['catch'](handleError(_0x4a3b05,null));};exports[_0x7b9e('0xdc')]=function(_0x3c3020,_0x39fcbe){var _0x2db7e3={};var _0x2d03e0={};var _0x161a18;var _0x2daa08;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x3c3020['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x39fcbe,null))[_0x7b9e('0x27')](function(_0x357744){if(_0x357744){_0x161a18=_0x357744;_0x2d03e0[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['ChatInteraction']['rawAttributes']);_0x2d03e0[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x3c3020[_0x7b9e('0x3f')]);_0x2d03e0[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x2d03e0['model'],_0x2d03e0[_0x7b9e('0x3f')]);_0x2db7e3[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x2d03e0[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x3c3020[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x2db7e3[_0x7b9e('0x41')]=_0x2db7e3[_0x7b9e('0x41')]['length']?_0x2db7e3[_0x7b9e('0x41')]:_0x2d03e0[_0x7b9e('0x4e')];_0x2db7e3[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x3c3020['query'][_0x7b9e('0xca')]);_0x2db7e3[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x3c3020[_0x7b9e('0x3f')],_0x2d03e0[_0x7b9e('0x52')]));if(_0x3c3020[_0x7b9e('0x3f')]['filter']){_0x2db7e3['where']=_[_0x7b9e('0x57')](_0x2db7e3[_0x7b9e('0xcc')],{'$or':_['map'](_0x2db7e3[_0x7b9e('0x41')],function(_0x50737d){var _0x59e752={};_0x59e752[_0x50737d]={'$like':'%'+_0x3c3020['query']['filter']+'%'};return _0x59e752;})});}_0x2db7e3=_[_0x7b9e('0x57')]({},_0x2db7e3,_0x3c3020['options']);return _0x161a18[_0x7b9e('0xdc')](_0x2db7e3);}})[_0x7b9e('0x27')](function(_0x448cc8){if(_0x448cc8){_0x2daa08=_0x448cc8[_0x7b9e('0x55')];if(!_0x3c3020['query'][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x2db7e3[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x3c3020[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x2db7e3[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x3c3020[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x161a18[_0x7b9e('0xdc')](_0x2db7e3);}})['then'](function(_0x13edb7){if(_0x13edb7){return _0x13edb7?{'count':_0x2daa08,'rows':_0x13edb7}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x39fcbe,null))['catch'](handleError(_0x39fcbe,null));};exports[_0x7b9e('0xdd')]=function(_0x535ea8,_0x42fe2a){var _0x1e54c7={};var _0x25ae75={};var _0x3a5b57;var _0x324e75;return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x535ea8[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x42fe2a,null))['then'](function(_0x24458b){if(_0x24458b){_0x3a5b57=_0x24458b;_0x25ae75['model']=_['keys'](db[_0x7b9e('0xde')][_0x7b9e('0x3a')]);_0x25ae75[_0x7b9e('0x3f')]=_['keys'](_0x535ea8[_0x7b9e('0x3f')]);_0x25ae75[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x25ae75[_0x7b9e('0x4e')],_0x25ae75['query']);_0x1e54c7[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x25ae75[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x1e54c7[_0x7b9e('0x41')]=_0x1e54c7[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x1e54c7[_0x7b9e('0x41')]:_0x25ae75['model'];_0x1e54c7[_0x7b9e('0xc9')]=qs['sort'](_0x535ea8['query'][_0x7b9e('0xca')]);_0x1e54c7[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x535ea8[_0x7b9e('0x3f')],_0x25ae75['filters']));if(_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x1e54c7[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x1e54c7['where'],{'$or':_[_0x7b9e('0x32')](_0x1e54c7[_0x7b9e('0x41')],function(_0x4a701a){var _0x5424ab={};_0x5424ab[_0x4a701a]={'$like':'%'+_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x5424ab;})});}_0x1e54c7=_[_0x7b9e('0x57')]({},_0x1e54c7,_0x535ea8[_0x7b9e('0x58')]);return _0x3a5b57[_0x7b9e('0xdd')](_0x1e54c7);}})[_0x7b9e('0x27')](function(_0xd256c0){if(_0xd256c0){_0x324e75=_0xd256c0['length'];if(!_0x535ea8[_0x7b9e('0x3f')]['hasOwnProperty'](_0x7b9e('0xd4'))){_0x1e54c7['limit']=qs[_0x7b9e('0x21')](_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x1e54c7[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x535ea8[_0x7b9e('0x3f')]['offset']);}return _0x3a5b57[_0x7b9e('0xdd')](_0x1e54c7);}})[_0x7b9e('0x27')](function(_0x4d20f7){if(_0x4d20f7){return _0x4d20f7?{'count':_0x324e75,'rows':_0x4d20f7}:null;}})['then'](respondWithResult(_0x42fe2a,null))[_0x7b9e('0x1b')](handleError(_0x42fe2a,null));};exports[_0x7b9e('0xdf')]=function(_0x17c313,_0x1c61e1){var _0x36f0ac={'raw':!![],'where':{}};var _0x16d4e7={};var _0x12b052={'count':0x0,'rows':[]};return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x17c313[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1c61e1,null))['then'](function(_0x44d065){if(_0x44d065){_0x16d4e7['model']=_[_0x7b9e('0x50')](db[_0x7b9e('0xe0')]['rawAttributes']);_0x16d4e7['query']=_[_0x7b9e('0x50')](_0x17c313['query']);_0x16d4e7['filters']=_[_0x7b9e('0x53')](_0x16d4e7['model'],_0x16d4e7[_0x7b9e('0x3f')]);_0x36f0ac['attributes']=_[_0x7b9e('0x53')](_0x16d4e7['model'],qs['fields'](_0x17c313[_0x7b9e('0x3f')]['fields']));_0x36f0ac['attributes']=_0x36f0ac['attributes'][_0x7b9e('0x55')]?_0x36f0ac[_0x7b9e('0x41')]:_0x16d4e7[_0x7b9e('0x4e')];if(!_0x17c313['query']['hasOwnProperty'](_0x7b9e('0xd4'))){_0x36f0ac[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x36f0ac[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x36f0ac['order']=qs[_0x7b9e('0xca')](_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x36f0ac[_0x7b9e('0xcc')]=qs['filters'](_['pick'](_0x17c313[_0x7b9e('0x3f')],_0x16d4e7[_0x7b9e('0x52')]));_0x36f0ac['where'][_0x7b9e('0xe1')]=_0x44d065['id'];if(_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x36f0ac[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x36f0ac[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x36f0ac[_0x7b9e('0x41')],function(_0x3af2e9){var _0xe33f7d={};_0xe33f7d[_0x3af2e9]={'$like':'%'+_0x17c313['query'][_0x7b9e('0x30')]+'%'};return _0xe33f7d;})});}_0x36f0ac=_[_0x7b9e('0x57')]({},_0x36f0ac,_0x17c313[_0x7b9e('0x58')]);return db['MailInteraction']['count']({'where':_0x36f0ac[_0x7b9e('0xcc')]})['then'](function(_0x171503){_0x12b052[_0x7b9e('0x22')]=_0x171503;if(_0x17c313[_0x7b9e('0x3f')]['includeAll']){_0x36f0ac[_0x7b9e('0x40')]=[{'all':!![]}];}return db['MailInteraction'][_0x7b9e('0x43')](_0x36f0ac);})[_0x7b9e('0x27')](function(_0x4bf38e){_0x12b052[_0x7b9e('0x44')]=_0x4bf38e;return _0x12b052;});}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x1c61e1,_0x36f0ac))[_0x7b9e('0x1b')](handleError(_0x1c61e1,null));};exports[_0x7b9e('0xe2')]=function(_0x5a57d1,_0xbe1356){var _0x3cef0d={};var _0x4d4f91={};var _0x40f393;var _0x5c21d7;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x5a57d1[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xbe1356,null))[_0x7b9e('0x27')](function(_0x1144f8){if(_0x1144f8){_0x40f393=_0x1144f8;_0x4d4f91[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['SmsInteraction'][_0x7b9e('0x3a')]);_0x4d4f91[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x5a57d1[_0x7b9e('0x3f')]);_0x4d4f91['filters']=_[_0x7b9e('0x53')](_0x4d4f91[_0x7b9e('0x4e')],_0x4d4f91[_0x7b9e('0x3f')]);_0x3cef0d['attributes']=_['intersection'](_0x4d4f91[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x5a57d1['query'][_0x7b9e('0x54')]));_0x3cef0d[_0x7b9e('0x41')]=_0x3cef0d[_0x7b9e('0x41')]['length']?_0x3cef0d[_0x7b9e('0x41')]:_0x4d4f91[_0x7b9e('0x4e')];_0x3cef0d[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3cef0d[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x5a57d1[_0x7b9e('0x3f')],_0x4d4f91[_0x7b9e('0x52')]));if(_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x3cef0d[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x3cef0d['where'],{'$or':_[_0x7b9e('0x32')](_0x3cef0d[_0x7b9e('0x41')],function(_0x490cf8){var _0x215d9f={};_0x215d9f[_0x490cf8]={'$like':'%'+_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x215d9f;})});}_0x3cef0d=_[_0x7b9e('0x57')]({},_0x3cef0d,_0x5a57d1[_0x7b9e('0x58')]);return _0x40f393['getSmsInteractions'](_0x3cef0d);}})[_0x7b9e('0x27')](function(_0x1a7dba){if(_0x1a7dba){_0x5c21d7=_0x1a7dba[_0x7b9e('0x55')];if(!_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x3cef0d['limit']=qs[_0x7b9e('0x21')](_0x5a57d1[_0x7b9e('0x3f')]['limit']);_0x3cef0d[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x5a57d1[_0x7b9e('0x3f')]['offset']);}return _0x40f393[_0x7b9e('0xe2')](_0x3cef0d);}})[_0x7b9e('0x27')](function(_0x10dd3c){if(_0x10dd3c){return _0x10dd3c?{'count':_0x5c21d7,'rows':_0x10dd3c}:null;}})[_0x7b9e('0x27')](respondWithResult(_0xbe1356,null))[_0x7b9e('0x1b')](handleError(_0xbe1356,null));};exports['getFaxInteractions']=function(_0x2398db,_0x251f3d){var _0x2ac75b={};var _0x1c739b={};var _0x5ba058;var _0x27566d;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x2398db[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x251f3d,null))[_0x7b9e('0x27')](function(_0x3a20be){if(_0x3a20be){_0x5ba058=_0x3a20be;_0x1c739b['model']=_['keys'](db[_0x7b9e('0xe3')]['rawAttributes']);_0x1c739b['query']=_[_0x7b9e('0x50')](_0x2398db[_0x7b9e('0x3f')]);_0x1c739b[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x1c739b[_0x7b9e('0x4e')],_0x1c739b[_0x7b9e('0x3f')]);_0x2ac75b[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1c739b[_0x7b9e('0x4e')],qs['fields'](_0x2398db['query'][_0x7b9e('0x54')]));_0x2ac75b[_0x7b9e('0x41')]=_0x2ac75b[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x2ac75b[_0x7b9e('0x41')]:_0x1c739b[_0x7b9e('0x4e')];_0x2ac75b[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x2ac75b['where']=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x2398db['query'],_0x1c739b['filters']));if(_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x2ac75b[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x2ac75b[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x2ac75b[_0x7b9e('0x41')],function(_0x33a499){var _0x14aa6d={};_0x14aa6d[_0x33a499]={'$like':'%'+_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x14aa6d;})});}_0x2ac75b=_[_0x7b9e('0x57')]({},_0x2ac75b,_0x2398db['options']);return _0x5ba058['getFaxInteractions'](_0x2ac75b);}})[_0x7b9e('0x27')](function(_0x4a037c){if(_0x4a037c){_0x27566d=_0x4a037c[_0x7b9e('0x55')];if(!_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x2ac75b[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x2ac75b[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x2398db['query']['offset']);}return _0x5ba058[_0x7b9e('0xe4')](_0x2ac75b);}})[_0x7b9e('0x27')](function(_0x93bdeb){if(_0x93bdeb){return _0x93bdeb?{'count':_0x27566d,'rows':_0x93bdeb}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x251f3d,null))[_0x7b9e('0x1b')](handleError(_0x251f3d,null));};exports[_0x7b9e('0xe5')]=function(_0x232db4,_0x2874db){var _0x16868e={};var _0x1b14e8={};var _0x5936c2;var _0x6ea2f6;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x232db4['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x2874db,null))[_0x7b9e('0x27')](function(_0x2a5123){if(_0x2a5123){_0x5936c2=_0x2a5123;_0x1b14e8[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0xe6')][_0x7b9e('0x3a')]);_0x1b14e8[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x232db4['query']);_0x1b14e8[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x1b14e8['model'],_0x1b14e8['query']);_0x16868e[_0x7b9e('0x41')]=_['intersection'](_0x1b14e8['model'],qs[_0x7b9e('0x54')](_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x16868e[_0x7b9e('0x41')]=_0x16868e['attributes'][_0x7b9e('0x55')]?_0x16868e[_0x7b9e('0x41')]:_0x1b14e8[_0x7b9e('0x4e')];_0x16868e[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x232db4['query'][_0x7b9e('0xca')]);_0x16868e[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x232db4[_0x7b9e('0x3f')],_0x1b14e8[_0x7b9e('0x52')]));if(_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x16868e[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x16868e['where'],{'$or':_[_0x7b9e('0x32')](_0x16868e['attributes'],function(_0x38a3e5){var _0x4a0644={};_0x4a0644[_0x38a3e5]={'$like':'%'+_0x232db4[_0x7b9e('0x3f')]['filter']+'%'};return _0x4a0644;})});}_0x16868e=_[_0x7b9e('0x57')]({},_0x16868e,_0x232db4[_0x7b9e('0x58')]);return _0x5936c2['getWhatsappInteractions'](_0x16868e);}})[_0x7b9e('0x27')](function(_0x442e2d){if(_0x442e2d){_0x6ea2f6=_0x442e2d[_0x7b9e('0x55')];if(!_0x232db4['query'][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x16868e[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x16868e[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x5936c2[_0x7b9e('0xe5')](_0x16868e);}})[_0x7b9e('0x27')](function(_0xbd9669){if(_0xbd9669){return _0xbd9669?{'count':_0x6ea2f6,'rows':_0xbd9669}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x2874db,null))['catch'](handleError(_0x2874db,null));};exports[_0x7b9e('0xe7')]=function(_0x49e12d,_0x41d5af,_0xab508a){var _0x431547;var _0x436729;var _0x468ddb;var _0x44d544=!_['isNil'](_0x49e12d[_0x7b9e('0x4d')]['id'])?_0x49e12d[_0x7b9e('0x4d')]['id']:!_[_0x7b9e('0x64')](_0x49e12d[_0x7b9e('0x2c')]['id'])?_0x49e12d[_0x7b9e('0x2c')]['id']:null;return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x44d544,'role':{'$or':[_0x7b9e('0x2a'),_0x7b9e('0x2c'),_0x7b9e('0x2e')]}},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0xe8'),_0x7b9e('0xe9'),'role','internal',_0x7b9e('0x9b')]})[_0x7b9e('0x27')](function(_0x5c7108){if(_0x5c7108){if(_0x5c7108['role']===_0x7b9e('0x2e')){_0x431547=_0x5c7108;if(_0x49e12d[_0x7b9e('0x5c')][_0x7b9e('0x9d')]){_0x468ddb=util[_0x7b9e('0xaa')](_0x7b9e('0xea'),_0x431547[_0x49e12d['body'][_0x7b9e('0x9d')]]);}else if(_0x49e12d[_0x7b9e('0x5c')]['intrf']){_0x468ddb=util[_0x7b9e('0xaa')]('SIP/%s',_0x49e12d[_0x7b9e('0x5c')][_0x7b9e('0xeb')]);}else{_0x468ddb=util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x431547['name']);}socket['to'](util[_0x7b9e('0xaa')]('user:%s',_0x431547[_0x7b9e('0x36')]))['emit'](_0x7b9e('0xec'),{'user':{'id':_0x431547['id'],'name':_0x431547['name']},'ip':_0x49e12d[_0x7b9e('0xed')][_0x7b9e('0xee')]||_0x49e12d[_0x7b9e('0xef')][_0x7b9e('0xf0')]||_0x49e12d[_0x7b9e('0xf1')][_0x7b9e('0xf0')]||_0x49e12d[_0x7b9e('0xef')][_0x7b9e('0xf1')][_0x7b9e('0xf0')]});return db[_0x7b9e('0xad')][_0x7b9e('0x26')]({'where':{'membername':_0x431547[_0x7b9e('0x36')]},'individualHooks':!![]});}}else{throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x7b9e('0x27')](function(){if(_0x431547){return _0x431547[_0x7b9e('0xf2')]({'raw':!![]});}})[_0x7b9e('0x27')](function(_0x38b4ab){if(_0x431547){var _0x2066ef=[];if(_0x38b4ab){_0x436729=_0x38b4ab;if(_0x436729[_0x7b9e('0x55')]){for(var _0x444541=0x0;_0x444541<_0x436729['length'];_0x444541++){_0x2066ef[_0x7b9e('0x42')]({'membername':_0x431547['name'],'UserId':_0x431547['id'],'queue_name':_0x436729[_0x444541]['name'],'VoiceQueueId':_0x436729[_0x444541]['id'],'interface':_0x468ddb,'paused':_0x431547[_0x7b9e('0x9b')]||![],'penalty':_0x436729[_0x444541]['UserVoiceQueue.penalty']||0x0});}return BPromise['each'](_0x2066ef,function(_0x2d7df7){return db['UserVoiceQueueRt'][_0x7b9e('0xae')](_0x2d7df7);});}}}})['then'](function(){if(_0x431547){return db[_0x7b9e('0xf3')]['findAll']({'where':{'membername':_0x431547['name'],'exitAt':null}});}})[_0x7b9e('0x27')](function(_0x5a1be9){if(_0x431547){var _0x5b2439=[];_0x5a1be9[_0x7b9e('0xf4')](function(_0x5faa37){_0x5b2439['push'](_0x5faa37[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x5b2439);}})['then'](function(){if(_0x431547){var _0x14b0f3=[];var _0x41e619=[];var _0x3bd5d1=utils['getChannels']();var _0x521b23={'membername':_0x431547[_0x7b9e('0x36')],'interface':_0x468ddb,'enterAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'role':_0x431547[_0x7b9e('0x29')],'internal':_0x431547[_0x7b9e('0x60')]};_0x3bd5d1[_0x7b9e('0xf4')](function(_0xc1ffab){_0x14b0f3[_0x7b9e('0x42')](_[_0x7b9e('0x57')]({'channel':_0xc1ffab,'type':_0x7b9e('0xf6'),'data1':_0x49e12d['body'][_0x7b9e('0xf7')],'data2':_0x468ddb},_0x521b23));if(_0x431547['loginInPause']){_0x41e619[_0x7b9e('0x42')](_[_0x7b9e('0x57')]({'channel':_0xc1ffab,'type':_0x7b9e('0xf8'),'data1':_0x7b9e('0xf9')},_0x521b23));}});return db['MemberReport'][_0x7b9e('0xfa')](_0x14b0f3[_0x7b9e('0xfb')](_0x41e619),{'individualHooks':!![]});}})[_0x7b9e('0x27')](function(){if(_0x431547){return _0x431547['update']({'online':!![],'lastLoginAt':moment()['format'](_0x7b9e('0xf5')),'voicePause':_0x431547[_0x7b9e('0x9b')]||![],'mailPause':_0x431547[_0x7b9e('0x9b')]||![],'chatPause':_0x431547['loginInPause']||![],'faxPause':_0x431547[_0x7b9e('0x9b')]||![],'smsPause':_0x431547[_0x7b9e('0x9b')]||![],'openchannelPause':_0x431547[_0x7b9e('0x9b')]||![],'whatsappPause':_0x431547['loginInPause']||![],'pauseType':_0x431547['loginInPause']?'LOGININPAUSE':null,'interface':_0x468ddb,'lastPauseAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5'))});}})[_0x7b9e('0x27')](function(_0xd9f507){if(_0x49e12d[_0x7b9e('0xfc')]){return _0xab508a();}else{return BPromise[_0x7b9e('0xfd')](_0xd9f507)[_0x7b9e('0x27')](respondWithResult(_0x41d5af,null));}})[_0x7b9e('0x1b')](handleError(_0x41d5af,null));};exports[_0x7b9e('0xfe')]=function(_0x4e5d31,_0x4a261c){var _0x2ebbb2;return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x4e5d31[_0x7b9e('0x4d')]['id'],'role':_0x7b9e('0x2e')},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x29')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x4a261c,null))[_0x7b9e('0x27')](function(_0x1a6b46){if(_0x1a6b46){_0x2ebbb2=_0x1a6b46;return db[_0x7b9e('0xad')][_0x7b9e('0x26')]({'where':{'membername':_0x2ebbb2[_0x7b9e('0x36')]},'individualHooks':!![]});}})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xf3')][_0x7b9e('0x43')]({'where':{'membername':_0x2ebbb2[_0x7b9e('0x36')],'exitAt':null}});})['then'](function(_0x453ad1){var _0x6da84a=[];_0x453ad1[_0x7b9e('0xf4')](function(_0x2f4403){_0x6da84a[_0x7b9e('0x42')](_0x2f4403[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x7b9e('0x4b')](_0x6da84a);})[_0x7b9e('0x27')](function(){return _0x2ebbb2[_0x7b9e('0x25')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x7b9e('0x27')](respondWithResult(_0x4a261c,null))['catch'](handleError(_0x4a261c,null));};exports[_0x7b9e('0xff')]=function(_0x45022b,_0xb94e18){var _0x557ac7;return db[_0x7b9e('0xad')][_0x7b9e('0x25')]({'paused':0x1},{'where':{'UserId':_0x45022b['params']['id']},'individualHooks':!![]})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x45022b['params']['id'],'role':_0x7b9e('0x2e')},'attributes':['id',_0x7b9e('0x36'),'role',_0x7b9e('0x60'),_0x7b9e('0x9d')]});})['then'](handleEntityNotFound(_0xb94e18,null))[_0x7b9e('0x27')](function(_0x1b8fa9){if(_0x1b8fa9){_0x557ac7=_0x1b8fa9;return respondWithRpcPromise(_0x7b9e('0x100'),_0x7b9e('0xff'),{'id':_0x557ac7['id'],'name':_0x557ac7[_0x7b9e('0x36')],'pause':!![]});}})[_0x7b9e('0x27')](function(){if(_0x557ac7){return db[_0x7b9e('0xf3')][_0x7b9e('0x43')]({'where':{'membername':_0x557ac7[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}});}})[_0x7b9e('0x27')](function(_0x50db19){if(_0x50db19['length']){var _0x3e0d9b=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x5bd390=0x0,_0x1a82dc=_0x50db19[_0x7b9e('0x55')];_0x5bd390<_0x1a82dc;_0x5bd390++){_0x50db19[_0x5bd390][_0x7b9e('0x101')]({'exitAt':_0x3e0d9b});}}})[_0x7b9e('0x27')](function(){var _0x5c8e48=[];var _0x55d11c=utils[_0x7b9e('0x102')]();_0x55d11c[_0x7b9e('0xf4')](function(_0x123b91){_0x5c8e48['push']({'channel':_0x123b91,'membername':_0x557ac7[_0x7b9e('0x36')],'interface':_[_0x7b9e('0x64')](_0x557ac7['interface'])?util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x557ac7[_0x7b9e('0x36')]):_0x557ac7[_0x7b9e('0x9d')],'type':'PAUSE','enterAt':moment()['format'](_0x7b9e('0xf5')),'data1':_0x45022b[_0x7b9e('0x5c')][_0x7b9e('0x3c')]||_0x7b9e('0x103'),'role':_0x557ac7[_0x7b9e('0x29')],'internal':_0x557ac7[_0x7b9e('0x60')]});});return db[_0x7b9e('0xf3')]['bulkCreate'](_0x5c8e48,{'individualHooks':!![]});})['then'](function(){return _0x557ac7['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x45022b[_0x7b9e('0x5c')][_0x7b9e('0x3c')]||_0x7b9e('0x103'),'lastPauseAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5'))});})[_0x7b9e('0x27')](respondWithResult(_0xb94e18,null))[_0x7b9e('0x1b')](handleError(_0xb94e18,null));};exports['unpause']=function(_0x4ae1fe,_0x5df29c){var _0x4cdabf;return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x4ae1fe[_0x7b9e('0x4d')]['id']},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x29'),_0x7b9e('0x9c'),_0x7b9e('0x104'),_0x7b9e('0x105'),_0x7b9e('0x106'),_0x7b9e('0x107'),_0x7b9e('0x108'),'whatsapppause',_0x7b9e('0x109'),_0x7b9e('0x10a')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x5df29c,null))['then'](function(_0xaf03da){if(_0xaf03da){_0x4cdabf=_0xaf03da;if(_0x4ae1fe[_0x7b9e('0x5c')][_0x7b9e('0x99')]&&!utils['isValidChannel'](_0x4ae1fe[_0x7b9e('0x5c')][_0x7b9e('0x99')])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x9f'));}switch(_0x4ae1fe[_0x7b9e('0x5c')][_0x7b9e('0x99')]){case _0x7b9e('0xa9'):return respondWithRpcPromise(_0x7b9e('0x100'),_0x7b9e('0x10b'),{'id':_0x4cdabf['id'],'name':_0x4cdabf[_0x7b9e('0x36')],'pause':![]})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xad')][_0x7b9e('0x25')]({'paused':0x0},{'where':{'UserId':_0x4cdabf['id']},'individualHooks':!![]});})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xf3')][_0x7b9e('0x35')]({'where':{'channel':_0x4ae1fe[_0x7b9e('0x5c')]['channel'],'membername':_0x4cdabf[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}});})[_0x7b9e('0x27')](function(_0x27dee7){if(_0x27dee7){return _0x27dee7['update']({'exitAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'data2':_0x7b9e('0x10c')},{'individualHooks':!![]});}return null;})[_0x7b9e('0x27')](function(){return _0x4cdabf['update']({'voicePause':![]});});case'mail':case'chat':case _0x7b9e('0x47'):case'sms':case _0x7b9e('0x4a'):case'openchannel':return db[_0x7b9e('0xf3')][_0x7b9e('0x35')]({'where':{'channel':_0x4ae1fe[_0x7b9e('0x5c')]['channel'],'membername':_0x4cdabf[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}})[_0x7b9e('0x27')](function(_0x149c91){if(_0x149c91){return _0x149c91[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x7b9e('0x27')](function(){var _0x24980f={};_[_0x7b9e('0x23')](_0x24980f,util[_0x7b9e('0xaa')]('%s%s',_0x4ae1fe['body'][_0x7b9e('0x99')],_0x7b9e('0x10d')),![]);return _0x4cdabf[_0x7b9e('0x25')](_0x24980f);});default:return respondWithRpcPromise(_0x7b9e('0x100'),'unpause',{'id':_0x4cdabf['id'],'name':_0x4cdabf['name'],'pause':![]})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xad')][_0x7b9e('0x25')]({'paused':0x0},{'where':{'UserId':_0x4cdabf['id']}});})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xf3')][_0x7b9e('0x43')]({'where':{'membername':_0x4cdabf[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}});})[_0x7b9e('0x27')](function(_0x27e069){var _0x251065=[];_0x27e069[_0x7b9e('0xf4')](function(_0xea19d3){_0x251065['push'](_0xea19d3[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'data2':'manual'}));});return BPromise[_0x7b9e('0x4b')](_0x251065);})[_0x7b9e('0x27')](function(){return _0x4cdabf[_0x7b9e('0x25')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x7b9e('0x27')](respondWithResult(_0x5df29c,null))[_0x7b9e('0x1b')](handleError(_0x5df29c,null));};exports[_0x7b9e('0x10e')]=function(_0x117aa1,_0x5af8c1){var _0x3f8377={};var _0x8de1bb={};var _0x2e67f1;var _0x14eb07;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x117aa1[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x5af8c1,null))[_0x7b9e('0x27')](function(_0x100e94){if(_0x100e94){_0x2e67f1=_0x100e94;_0x8de1bb[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x10f')][_0x7b9e('0x3a')]);_0x8de1bb['query']=_[_0x7b9e('0x50')](_0x117aa1['query']);_0x8de1bb[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x8de1bb['model'],_0x8de1bb[_0x7b9e('0x3f')]);_0x3f8377[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x8de1bb[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x117aa1['query']['fields']));_0x3f8377['attributes']=_0x3f8377[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x3f8377[_0x7b9e('0x41')]:_0x8de1bb['model'];_0x3f8377[_0x7b9e('0xc9')]=qs['sort'](_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3f8377[_0x7b9e('0xcc')]=qs['filters'](_[_0x7b9e('0xcb')](_0x117aa1['query'],_0x8de1bb[_0x7b9e('0x52')]));if(_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x3f8377[_0x7b9e('0xcc')]=_['merge'](_0x3f8377['where'],{'$or':_[_0x7b9e('0x32')](_0x3f8377[_0x7b9e('0x41')],function(_0x490fb5){var _0xdee8e2={};_0xdee8e2[_0x490fb5]={'$like':'%'+_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0xdee8e2;})});}_0x3f8377=_[_0x7b9e('0x57')]({},_0x3f8377,_0x117aa1[_0x7b9e('0x58')]);return _0x2e67f1[_0x7b9e('0x10e')](_0x3f8377);}})[_0x7b9e('0x27')](function(_0x2372f1){if(_0x2372f1){_0x14eb07=_0x2372f1[_0x7b9e('0x55')];if(!_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0xd3')]('nolimit')){_0x3f8377[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x3f8377[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x117aa1['query'][_0x7b9e('0x1f')]);}return _0x2e67f1[_0x7b9e('0x10e')](_0x3f8377);}})[_0x7b9e('0x27')](function(_0xae6201){if(_0xae6201){return _0xae6201?{'count':_0x14eb07,'rows':_0xae6201}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x5af8c1,null))[_0x7b9e('0x1b')](handleError(_0x5af8c1,null));};exports[_0x7b9e('0x110')]=function(_0x49df2c,_0xa95126){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x49df2c['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xa95126,null))[_0x7b9e('0x27')](function(_0xa97c49){if(_0xa97c49){var _0x19bc1d=_0xa97c49[_0x7b9e('0x28')]({'plain':!![]});return _0xa97c49['addTeams'](_0x49df2c['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x49df2c[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{})['then'](function(){for(var _0x480a0c=0x0;_0x480a0c<_0x49df2c[_0x7b9e('0x5c')][_0x7b9e('0x5f')]['length'];_0x480a0c++){var _0x265bf8=[];db['Team'][_0x7b9e('0x92')]({'where':{'id':_0x49df2c['body']['ids'][_0x480a0c]}})[_0x7b9e('0x27')](function(_0xf067d7){_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0xf2')]()[_0x7b9e('0x27')](function(_0x58b9b7){for(var _0x23abe3=0x0;_0x23abe3<_0x58b9b7[_0x7b9e('0x55')];_0x23abe3++){_0x58b9b7[_0x23abe3][_0x7b9e('0x112')]('channel',_0x7b9e('0x113'));}return _0x58b9b7;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0x114')]()[_0x7b9e('0x27')](function(_0x3d35dd){for(var _0x396bae=0x0;_0x396bae<_0x3d35dd[_0x7b9e('0x55')];_0x396bae++){_0x3d35dd[_0x396bae][_0x7b9e('0x112')](_0x7b9e('0x99'),'Chat');}return _0x3d35dd;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0x115')]()[_0x7b9e('0x27')](function(_0x119362){for(var _0x7e2e0d=0x0;_0x7e2e0d<_0x119362[_0x7b9e('0x55')];_0x7e2e0d++){_0x119362[_0x7e2e0d][_0x7b9e('0x112')](_0x7b9e('0x99'),'Mail');}return _0x119362;}));_0x265bf8['push'](_0xf067d7[_0x7b9e('0x116')]()['then'](function(_0x1127bd){for(var _0x3c6bda=0x0;_0x3c6bda<_0x1127bd[_0x7b9e('0x55')];_0x3c6bda++){_0x1127bd[_0x3c6bda]['setDataValue']('channel',_0x7b9e('0x117'));}return _0x1127bd;}));_0x265bf8['push'](_0xf067d7[_0x7b9e('0x118')]()[_0x7b9e('0x27')](function(_0x398a69){for(var _0x4a20b6=0x0;_0x4a20b6<_0x398a69['length'];_0x4a20b6++){_0x398a69[_0x4a20b6][_0x7b9e('0x112')](_0x7b9e('0x99'),_0x7b9e('0x119'));}return _0x398a69;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7['getFaxQueues']()['then'](function(_0x4a1e06){for(var _0x15e73f=0x0;_0x15e73f<_0x4a1e06[_0x7b9e('0x55')];_0x15e73f++){_0x4a1e06[_0x15e73f]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x11a'));}return _0x4a1e06;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0x11b')]()[_0x7b9e('0x27')](function(_0x49c9a6){for(var _0x291e4b=0x0;_0x291e4b<_0x49c9a6['length'];_0x291e4b++){_0x49c9a6[_0x291e4b][_0x7b9e('0x112')](_0x7b9e('0x99'),_0x7b9e('0x11c'));}return _0x49c9a6;}));return BPromise[_0x7b9e('0x4b')](_0x265bf8);})[_0x7b9e('0x27')](function(_0x2c114a){var _0x47881b=_['flatten'](_0x2c114a);_0x265bf8=[];return db[_0x7b9e('0x65')][_0x7b9e('0x11d')](function(_0x3b956a){for(var _0x33ac5e=0x0;_0x33ac5e<_0x47881b['length'];_0x33ac5e++){_0x265bf8['push'](_0x47881b[_0x33ac5e]['addAgent'](_0x19bc1d['id']),{'transaction':_0x3b956a});}return BPromise[_0x7b9e('0x4b')](_0x265bf8)['then'](function(){if(_0x19bc1d['online']){return BPromise[_0x7b9e('0xac')](_[_0x7b9e('0x30')](_0x47881b,function(_0x43da29){return _0x43da29[_0x7b9e('0x11e')](_0x7b9e('0x99'))===_0x7b9e('0x113');}),function(_0x5ae7e9){return db[_0x7b9e('0xad')][_0x7b9e('0xae')]({'membername':_0x19bc1d['name'],'UserId':_0x19bc1d['id'],'queue_name':_0x5ae7e9['name'],'VoiceQueueId':_0x5ae7e9['id'],'interface':_[_0x7b9e('0x64')](_0x19bc1d[_0x7b9e('0x9d')])?util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x19bc1d['name']):_0x19bc1d[_0x7b9e('0x9d')],'paused':_0x19bc1d[_0x7b9e('0x9c')]||![],'penalty':_0x19bc1d[_0x7b9e('0xa3')]},{'transaction':_0x3b956a});});}else{return;}})[_0x7b9e('0x27')](function(){for(var _0xc5a419=0x0;_0xc5a419<_0x47881b['length'];_0xc5a419++){var _0x10b285=_0x47881b[_0xc5a419][_0x7b9e('0x11e')](_0x7b9e('0x99'));var _0x2d47d3=_0x10b285+_0x7b9e('0xa5');socket[_0x7b9e('0xa6')](_0x7b9e('0x2c')+_0x10b285+_0x7b9e('0xa7'),{'UserId':_0x19bc1d['id'],['queueField']:_0x47881b[_0xc5a419]['id']});}});});});}});}})['then'](respondWithStatusCode(_0xa95126,null))['catch'](handleError(_0xa95126,null));};exports[_0x7b9e('0x11f')]=function(_0x21f692,_0x221c11){return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x21f692['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x221c11,null))[_0x7b9e('0x27')](function(_0x1ddf5f){if(_0x1ddf5f){var _0x364824=_0x1ddf5f['get']({'plain':!![]});var _0x26448b=_0x21f692[_0x7b9e('0x3f')][_0x7b9e('0x5f')];return _0x1ddf5f[_0x7b9e('0x11f')](_0x26448b)[_0x7b9e('0x27')](function(){for(var _0x21378b=0x0;_0x21378b<_0x26448b[_0x7b9e('0x55')];_0x21378b++){var _0x586c3d=[];db[_0x7b9e('0x10f')][_0x7b9e('0x92')]({'where':{'id':_0x26448b[_0x21378b]}})[_0x7b9e('0x27')](function(_0xdd9c6b){_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b[_0x7b9e('0xf2')]()['then'](function(_0x44a3c9){for(var _0x329a92=0x0;_0x329a92<_0x44a3c9['length'];_0x329a92++){_0x44a3c9[_0x329a92]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x113'));}return _0x44a3c9;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b[_0x7b9e('0x114')]()[_0x7b9e('0x27')](function(_0xac6e1f){for(var _0x2006d1=0x0;_0x2006d1<_0xac6e1f[_0x7b9e('0x55')];_0x2006d1++){_0xac6e1f[_0x2006d1]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x120'));}return _0xac6e1f;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getMailQueues']()[_0x7b9e('0x27')](function(_0x3c3193){for(var _0x589bed=0x0;_0x589bed<_0x3c3193[_0x7b9e('0x55')];_0x589bed++){_0x3c3193[_0x589bed][_0x7b9e('0x112')](_0x7b9e('0x99'),_0x7b9e('0x121'));}return _0x3c3193;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getSmsQueues']()[_0x7b9e('0x27')](function(_0x19a554){for(var _0x280b6a=0x0;_0x280b6a<_0x19a554[_0x7b9e('0x55')];_0x280b6a++){_0x19a554[_0x280b6a][_0x7b9e('0x112')]('channel','Sms');}return _0x19a554;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getWhatsappQueues']()[_0x7b9e('0x27')](function(_0x5d2758){for(var _0x529260=0x0;_0x529260<_0x5d2758[_0x7b9e('0x55')];_0x529260++){_0x5d2758[_0x529260]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x119'));}return _0x5d2758;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getFaxQueues']()[_0x7b9e('0x27')](function(_0x2f78b7){for(var _0x58c202=0x0;_0x58c202<_0x2f78b7[_0x7b9e('0x55')];_0x58c202++){_0x2f78b7[_0x58c202]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x11a'));}return _0x2f78b7;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getOpenchannelQueues']()[_0x7b9e('0x27')](function(_0x548db3){for(var _0x4cac46=0x0;_0x4cac46<_0x548db3[_0x7b9e('0x55')];_0x4cac46++){_0x548db3[_0x4cac46][_0x7b9e('0x112')](_0x7b9e('0x99'),'Openchannel');}return _0x548db3;}));return BPromise[_0x7b9e('0x4b')](_0x586c3d);})[_0x7b9e('0x27')](function(_0x360c9f){var _0x1b9897=_[_0x7b9e('0x122')](_0x360c9f);_0x586c3d=[];return db[_0x7b9e('0x65')][_0x7b9e('0x11d')](function(_0x4c8941){for(var _0x1fd7d5=0x0;_0x1fd7d5<_0x1b9897[_0x7b9e('0x55')];_0x1fd7d5++){_0x586c3d[_0x7b9e('0x42')](_0x1b9897[_0x1fd7d5][_0x7b9e('0x123')](_0x364824['id']),{'transaction':_0x4c8941});}return BPromise[_0x7b9e('0x4b')](_0x586c3d)['then'](function(){if(_0x364824['online']){return BPromise[_0x7b9e('0xac')](_['filter'](_0x1b9897,function(_0x3ae17e){return _0x3ae17e[_0x7b9e('0x11e')](_0x7b9e('0x99'))===_0x7b9e('0x113');}),function(_0x10c0a2){return db['UserVoiceQueueRt'][_0x7b9e('0x26')]({'where':{'VoiceQueueId':_0x10c0a2['id'],'UserId':_0x364824['id']},'transaction':_0x4c8941});});}else{return;}})[_0x7b9e('0x27')](function(){for(var _0xa9706c=0x0;_0xa9706c<_0x1b9897[_0x7b9e('0x55')];_0xa9706c++){var _0x1e7f46=_0x1b9897[_0xa9706c]['getDataValue'](_0x7b9e('0x99'));var _0x5ae721=_0x1e7f46+'QueueId';socket[_0x7b9e('0xa6')]('user'+_0x1e7f46+_0x7b9e('0xb1'),{'UserId':_0x364824['id'],['queueField']:_0x1b9897[_0xa9706c]['id']});}});});});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x221c11,null))[_0x7b9e('0x1b')](handleError(_0x221c11,null));};exports[_0x7b9e('0x124')]=function(_0x293993,_0x1f45f5){var _0x32ae09={};var _0x17e1e7={};var _0x2931c1;var _0x4a9a97;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x293993[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1f45f5,null))[_0x7b9e('0x27')](function(_0x43539d){if(_0x43539d){_0x2931c1=_0x43539d;_0x17e1e7[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0xcd')][_0x7b9e('0x3a')]);_0x17e1e7['query']=_[_0x7b9e('0x50')](_0x293993[_0x7b9e('0x3f')]);_0x17e1e7[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x17e1e7[_0x7b9e('0x4e')],_0x17e1e7[_0x7b9e('0x3f')]);_0x32ae09[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x17e1e7['model'],qs['fields'](_0x293993[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x32ae09[_0x7b9e('0x41')]=_0x32ae09['attributes'][_0x7b9e('0x55')]?_0x32ae09[_0x7b9e('0x41')]:_0x17e1e7[_0x7b9e('0x4e')];_0x32ae09[_0x7b9e('0xc9')]=qs['sort'](_0x293993[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x32ae09[_0x7b9e('0xcc')]=qs['filters'](_['pick'](_0x293993[_0x7b9e('0x3f')],_0x17e1e7[_0x7b9e('0x52')]));if(_0x293993[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x32ae09['where']=_['merge'](_0x32ae09[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x32ae09[_0x7b9e('0x41')],function(_0x457745){var _0x3b4ed5={};_0x3b4ed5[_0x457745]={'$like':'%'+_0x293993[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x3b4ed5;})});}_0x32ae09=_[_0x7b9e('0x57')]({},_0x32ae09,_0x293993[_0x7b9e('0x58')]);return _0x2931c1[_0x7b9e('0x124')](_0x32ae09);}})[_0x7b9e('0x27')](function(_0x131cfb){if(_0x131cfb){_0x4a9a97=_0x131cfb[_0x7b9e('0x55')];if(!_0x293993[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x32ae09[_0x7b9e('0x21')]=qs['limit'](_0x293993['query'][_0x7b9e('0x21')]);_0x32ae09[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x293993['query'][_0x7b9e('0x1f')]);}return _0x2931c1[_0x7b9e('0x124')](_0x32ae09);}})[_0x7b9e('0x27')](function(_0x15d168){if(_0x15d168){return _0x15d168?{'count':_0x4a9a97,'rows':_0x15d168}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x1f45f5,null))[_0x7b9e('0x1b')](handleError(_0x1f45f5,null));};exports[_0x7b9e('0x125')]=function(_0x26cda7,_0x2573e8){var _0x9efaae={};var _0x1e6c62={};var _0x728784;var _0x58dd55;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x26cda7[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x2573e8,null))[_0x7b9e('0x27')](function(_0x4e2f48){if(_0x4e2f48){_0x728784=_0x4e2f48;_0x1e6c62[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0x39')]['rawAttributes']);_0x1e6c62[_0x7b9e('0x3f')]=_['keys'](_0x26cda7[_0x7b9e('0x3f')]);_0x1e6c62[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x1e6c62['model'],_0x1e6c62['query']);_0x9efaae[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1e6c62[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x26cda7['query'][_0x7b9e('0x54')]));_0x9efaae['attributes']=_0x9efaae[_0x7b9e('0x41')]['length']?_0x9efaae[_0x7b9e('0x41')]:_0x1e6c62[_0x7b9e('0x4e')];_0x9efaae['order']=qs['sort'](_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x9efaae['where']=qs[_0x7b9e('0x52')](_['pick'](_0x26cda7['query'],_0x1e6c62[_0x7b9e('0x52')]));if(_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x9efaae['where']=_['merge'](_0x9efaae[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x9efaae[_0x7b9e('0x41')],function(_0x3e9aa8){var _0x30dab1={};_0x30dab1[_0x3e9aa8]={'$like':'%'+_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x30dab1;})});}_0x9efaae[_0x7b9e('0x4e')]=db[_0x7b9e('0x39')];_0x9efaae['as']=_0x7b9e('0x2d');_0x9efaae=_[_0x7b9e('0x57')]({},_0x9efaae,_0x26cda7[_0x7b9e('0x58')]);return _0x728784[_0x7b9e('0xf2')]({'include':[_0x9efaae]});}})['then'](function(_0x2eb9a6){if(_0x2eb9a6){var _0x436f19={},_0x56301a=[],_0x522489=0x0;for(var _0x13bb71=0x0;_0x13bb71<_0x2eb9a6[_0x7b9e('0x55')];_0x13bb71+=0x1){for(var _0x5be9aa=0x0,_0x12beb2;_0x5be9aa<_0x2eb9a6[_0x13bb71]['Agents'][_0x7b9e('0x55')];_0x5be9aa+=0x1){_0x12beb2=_0x2eb9a6[_0x13bb71][_0x7b9e('0x2d')][_0x5be9aa][_0x7b9e('0x28')]({'plain':!![]});_0x436f19[_0x12beb2['id']]=_0x12beb2;}}_0x436f19=_[_0x7b9e('0x126')](_0x436f19);for(var _0x36f16f=qs['offset'](_0x26cda7['query'][_0x7b9e('0x1f')]);_0x36f16f<_0x436f19[_0x7b9e('0x55')]&&_0x56301a['length']<qs[_0x7b9e('0x21')](_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x36f16f+=0x1){if(_0x436f19[_0x36f16f]){_0x56301a[_0x7b9e('0x42')](_0x436f19[_0x36f16f]);}}return{'count':_0x436f19['length'],'rows':_0x56301a};}})[_0x7b9e('0x27')](respondWithResult(_0x2573e8,null))[_0x7b9e('0x1b')](handleError(_0x2573e8,null));};exports[_0x7b9e('0x26')]=function(_0x46d810,_0xdd8951){if(_0x46d810[_0x7b9e('0x2c')]['id']==_0x46d810[_0x7b9e('0x4d')]['id']){return _0xdd8951['status'](0x1f4)[_0x7b9e('0x37')]({'message':_0x7b9e('0x127')});}return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x46d810[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xdd8951,null))[_0x7b9e('0x27')](removeEntity(_0xdd8951,null))[_0x7b9e('0x1b')](handleError(_0xdd8951,null));};exports[_0x7b9e('0x128')]=function(_0x15c37f,_0x118217){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x15c37f['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x118217,null))[_0x7b9e('0x27')](function(_0x1e514c){if(_0x1e514c){return _0x1e514c[_0x7b9e('0x128')](_0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_['omit'](_0x15c37f['body'],[_0x7b9e('0x5f'),'id'])||{})['spread'](function(){for(var _0x3a5f5e=0x0;_0x3a5f5e<_0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')]['length'];_0x3a5f5e+=0x1){socket['emit']('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x3a5f5e]),'UserId':Number(_0x15c37f[_0x7b9e('0x4d')]['id'])});}return _0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x118217,null))[_0x7b9e('0x1b')](handleError(_0x118217,null));};exports[_0x7b9e('0x129')]=function(_0x19bf47,_0x17fdbd){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x19bf47[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x17fdbd,null))[_0x7b9e('0x27')](function(_0x34154a){if(_0x34154a){return _0x34154a[_0x7b9e('0x129')](_0x19bf47[_0x7b9e('0x3f')][_0x7b9e('0x5f')])[_0x7b9e('0x27')](function(){if(_['isArray'](_0x19bf47[_0x7b9e('0x3f')]['ids'])){for(var _0x25be00=0x0;_0x25be00<_0x19bf47[_0x7b9e('0x3f')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x25be00+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x12a'),{'ChatInteractionId':Number(_0x19bf47['query']['ids'][_0x25be00]),'UserId':Number(_0x19bf47['params']['id'])});}}else{socket['emit'](_0x7b9e('0x12a'),{'ChatInteractionId':Number(_0x19bf47[_0x7b9e('0x3f')][_0x7b9e('0x5f')]),'UserId':Number(_0x19bf47[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x17fdbd,null))[_0x7b9e('0x1b')](handleError(_0x17fdbd,null));};exports[_0x7b9e('0x12b')]=function(_0x4be142,_0x362257){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x4be142[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x362257,null))['then'](function(_0x383c90){if(_0x383c90){return _0x383c90[_0x7b9e('0x12b')](_0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x4be142['body'],[_0x7b9e('0x5f'),'id'])||{})[_0x7b9e('0xa4')](function(){for(var _0xe32b24=0x0;_0xe32b24<_0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0xe32b24+=0x1){socket['emit'](_0x7b9e('0x12c'),{'MailInteractionId':Number(_0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0xe32b24]),'UserId':Number(_0x4be142[_0x7b9e('0x4d')]['id'])});}return _0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x362257,null))[_0x7b9e('0x1b')](handleError(_0x362257,null));};exports['removeMailInteractions']=function(_0x3c156a,_0x485bde){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3c156a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x485bde,null))[_0x7b9e('0x27')](function(_0x10fc90){if(_0x10fc90){return _0x10fc90['removeMailInteractions'](_0x3c156a[_0x7b9e('0x3f')]['ids'])[_0x7b9e('0x27')](function(){if(_[_0x7b9e('0xb0')](_0x3c156a[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0x158702=0x0;_0x158702<_0x3c156a['query'][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x158702+=0x1){socket['emit'](_0x7b9e('0x12d'),{'MailInteractionId':Number(_0x3c156a['query'][_0x7b9e('0x5f')][_0x158702]),'UserId':Number(_0x3c156a[_0x7b9e('0x4d')]['id'])});}}else{socket[_0x7b9e('0xa6')](_0x7b9e('0x12d'),{'MailInteractionId':Number(_0x3c156a[_0x7b9e('0x3f')][_0x7b9e('0x5f')]),'UserId':Number(_0x3c156a[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x485bde,null))['catch'](handleError(_0x485bde,null));};exports['addFaxInteractions']=function(_0x1ea1f7,_0x5820a5){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x1ea1f7[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5820a5,null))['then'](function(_0x1e842e){if(_0x1e842e){return _0x1e842e[_0x7b9e('0x12e')](_0x1ea1f7[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x1ea1f7[_0x7b9e('0x5c')],['ids','id'])||{})[_0x7b9e('0xa4')](function(){for(var _0x4e6639=0x0;_0x4e6639<_0x1ea1f7['body']['ids']['length'];_0x4e6639+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x12f'),{'FaxInteractionId':Number(_0x1ea1f7['body'][_0x7b9e('0x5f')][_0x4e6639]),'UserId':Number(_0x1ea1f7['params']['id'])});}return _0x1ea1f7['body'][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x5820a5,null))[_0x7b9e('0x1b')](handleError(_0x5820a5,null));};exports[_0x7b9e('0x130')]=function(_0x40c1fb,_0x4a3f32){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x40c1fb[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4a3f32,null))[_0x7b9e('0x27')](function(_0x1a8452){if(_0x1a8452){return _0x1a8452['removeFaxInteractions'](_0x40c1fb[_0x7b9e('0x3f')][_0x7b9e('0x5f')])[_0x7b9e('0x27')](function(){if(_[_0x7b9e('0xb0')](_0x40c1fb[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0x3340e2=0x0;_0x3340e2<_0x40c1fb['query']['ids'][_0x7b9e('0x55')];_0x3340e2+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x131'),{'FaxInteractionId':Number(_0x40c1fb[_0x7b9e('0x3f')]['ids'][_0x3340e2]),'UserId':Number(_0x40c1fb[_0x7b9e('0x4d')]['id'])});}}else{socket['emit'](_0x7b9e('0x131'),{'FaxInteractionId':Number(_0x40c1fb[_0x7b9e('0x3f')]['ids']),'UserId':Number(_0x40c1fb[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x4a3f32,null))[_0x7b9e('0x1b')](handleError(_0x4a3f32,null));};exports[_0x7b9e('0x132')]=function(_0x14dd37,_0x12ffce){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x14dd37[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x12ffce,null))[_0x7b9e('0x27')](function(_0x6676d){if(_0x6676d){return _0x6676d['addSmsInteractions'](_0x14dd37['body'][_0x7b9e('0x5f')],_['omit'](_0x14dd37[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{})[_0x7b9e('0xa4')](function(){for(var _0x61dcae=0x0;_0x61dcae<_0x14dd37[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x61dcae+=0x1){socket['emit'](_0x7b9e('0x133'),{'SmsInteractionId':Number(_0x14dd37[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x61dcae]),'UserId':Number(_0x14dd37['params']['id'])});}return _0x14dd37[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x12ffce,null))['catch'](handleError(_0x12ffce,null));};exports['removeSmsInteractions']=function(_0x2212c5,_0x425faa){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x2212c5[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x425faa,null))[_0x7b9e('0x27')](function(_0x453bcf){if(_0x453bcf){return _0x453bcf[_0x7b9e('0x134')](_0x2212c5[_0x7b9e('0x3f')][_0x7b9e('0x5f')])[_0x7b9e('0x27')](function(){if(_[_0x7b9e('0xb0')](_0x2212c5[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0x27521e=0x0;_0x27521e<_0x2212c5[_0x7b9e('0x3f')]['ids'][_0x7b9e('0x55')];_0x27521e+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x135'),{'SmsInteractionId':Number(_0x2212c5[_0x7b9e('0x3f')]['ids'][_0x27521e]),'UserId':Number(_0x2212c5['params']['id'])});}}else{socket['emit'](_0x7b9e('0x135'),{'SmsInteractionId':Number(_0x2212c5['query'][_0x7b9e('0x5f')]),'UserId':Number(_0x2212c5['params']['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x425faa,null))['catch'](handleError(_0x425faa,null));};exports[_0x7b9e('0x136')]=function(_0x415d17,_0x2e727a){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x415d17[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x2e727a,null))[_0x7b9e('0x27')](function(_0xc6b379){if(_0xc6b379){return _0xc6b379[_0x7b9e('0x136')](_0x415d17[_0x7b9e('0x5c')]['ids'],_[_0x7b9e('0x111')](_0x415d17[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{})['spread'](function(){for(var _0x191ccd=0x0;_0x191ccd<_0x415d17[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x191ccd+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x137'),{'OpenchannelInteractionId':Number(_0x415d17[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x191ccd]),'UserId':Number(_0x415d17['params']['id'])});}return _0x415d17[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x2e727a,null))[_0x7b9e('0x1b')](handleError(_0x2e727a,null));};exports[_0x7b9e('0x138')]=function(_0x3d06eb,_0x28d04d){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x3d06eb['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x28d04d,null))['then'](function(_0x54a7f7){if(_0x54a7f7){return _0x54a7f7[_0x7b9e('0x138')](_0x3d06eb['query'][_0x7b9e('0x5f')])['then'](function(){if(_[_0x7b9e('0xb0')](_0x3d06eb[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0xd21935=0x0;_0xd21935<_0x3d06eb[_0x7b9e('0x3f')]['ids'][_0x7b9e('0x55')];_0xd21935+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x139'),{'OpenchannelInteractionId':Number(_0x3d06eb[_0x7b9e('0x3f')][_0x7b9e('0x5f')][_0xd21935]),'UserId':Number(_0x3d06eb[_0x7b9e('0x4d')]['id'])});}}else{socket[_0x7b9e('0xa6')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x3d06eb[_0x7b9e('0x3f')][_0x7b9e('0x5f')]),'UserId':Number(_0x3d06eb[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x28d04d,null))[_0x7b9e('0x1b')](handleError(_0x28d04d,null));};exports[_0x7b9e('0x13a')]=function(_0x5b7a85,_0x4672a8){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x5b7a85[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4672a8,null))[_0x7b9e('0x27')](function(_0x2ef395){if(_0x2ef395){return _0x2ef395[_0x7b9e('0x13a')](_0x5b7a85[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x5b7a85[_0x7b9e('0x5c')],['ids','id'])||{})['spread'](function(){for(var _0x8dfb19=0x0;_0x8dfb19<_0x5b7a85['body'][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x8dfb19+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x13b'),{'WhatsappInteractionId':Number(_0x5b7a85[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x8dfb19]),'UserId':Number(_0x5b7a85[_0x7b9e('0x4d')]['id'])});}return _0x5b7a85['body'][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x4672a8,null))[_0x7b9e('0x1b')](handleError(_0x4672a8,null));};exports[_0x7b9e('0x13c')]=function(_0x38caf3,_0x453dbd){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x38caf3[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x453dbd,null))[_0x7b9e('0x27')](function(_0x537f5f){if(_0x537f5f){return _0x537f5f['removeWhatsappInteractions'](_0x38caf3[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x453dbd,null))['catch'](handleError(_0x453dbd,null));};exports[_0x7b9e('0x13d')]=function(_0x32c50a,_0x23b31b){var _0x4985b4={};var _0x25ddb7={};var _0x4b126c;var _0x152c86;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x32c50a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x23b31b,null))[_0x7b9e('0x27')](function(_0x48d778){if(_0x48d778){_0x4b126c=_0x48d778;_0x25ddb7[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0x13e')][_0x7b9e('0x3a')]);_0x25ddb7[_0x7b9e('0x3f')]=_['keys'](_0x32c50a[_0x7b9e('0x3f')]);_0x25ddb7['filters']=_[_0x7b9e('0x53')](_0x25ddb7[_0x7b9e('0x4e')],_0x25ddb7['query']);_0x4985b4['attributes']=_[_0x7b9e('0x53')](_0x25ddb7[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x4985b4[_0x7b9e('0x41')]=_0x4985b4['attributes'][_0x7b9e('0x55')]?_0x4985b4[_0x7b9e('0x41')]:_0x25ddb7['model'];_0x4985b4[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x4985b4['where']=qs[_0x7b9e('0x52')](_['pick'](_0x32c50a[_0x7b9e('0x3f')],_0x25ddb7['filters']));if(_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x4985b4[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x4985b4[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x4985b4[_0x7b9e('0x41')],function(_0x4deb11){var _0x1eb7d5={};_0x1eb7d5[_0x4deb11]={'$like':'%'+_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x1eb7d5;})});}_0x4985b4=_[_0x7b9e('0x57')]({},_0x4985b4,_0x32c50a[_0x7b9e('0x58')]);return _0x4b126c['getVoicePrefixes'](_0x4985b4);}})['then'](function(_0x11ed37){if(_0x11ed37){_0x152c86=_0x11ed37['length'];if(!_0x32c50a[_0x7b9e('0x3f')]['hasOwnProperty'](_0x7b9e('0xd4'))){_0x4985b4[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x32c50a[_0x7b9e('0x3f')]['limit']);_0x4985b4[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x32c50a[_0x7b9e('0x3f')]['offset']);}return _0x4b126c[_0x7b9e('0x13d')](_0x4985b4);}})[_0x7b9e('0x27')](function(_0x20273d){if(_0x20273d){return _0x20273d?{'count':_0x152c86,'rows':_0x20273d}:null;}})['then'](respondWithResult(_0x23b31b,null))[_0x7b9e('0x1b')](handleError(_0x23b31b,null));};exports[_0x7b9e('0x13f')]=function(_0x2488e8,_0x27e4b8){var _0x56a0ac={};var _0x135a46={};var _0x2184a0;var _0x2ed595;return db['User']['findOne']({'where':{'id':_0x2488e8[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x27e4b8,null))[_0x7b9e('0x27')](function(_0x4c4b83){if(_0x4c4b83){_0x2184a0=_0x4c4b83;_0x135a46[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x140')][_0x7b9e('0x3a')]);_0x135a46[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x2488e8[_0x7b9e('0x3f')]);_0x135a46['filters']=_[_0x7b9e('0x53')](_0x135a46['model'],_0x135a46[_0x7b9e('0x3f')]);_0x56a0ac['attributes']=_[_0x7b9e('0x53')](_0x135a46[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x2488e8[_0x7b9e('0x3f')]['fields']));_0x56a0ac[_0x7b9e('0x41')]=_0x56a0ac[_0x7b9e('0x41')]['length']?_0x56a0ac[_0x7b9e('0x41')]:_0x135a46['model'];_0x56a0ac[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x56a0ac['where']=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x2488e8['query'],_0x135a46['filters']));if(_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x56a0ac['where']=_[_0x7b9e('0x57')](_0x56a0ac[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x56a0ac[_0x7b9e('0x41')],function(_0x2daba3){var _0x238172={};_0x238172[_0x2daba3]={'$like':'%'+_0x2488e8['query']['filter']+'%'};return _0x238172;})});}_0x56a0ac=_['merge']({},_0x56a0ac,_0x2488e8[_0x7b9e('0x58')]);return _0x2184a0[_0x7b9e('0x13f')](_0x56a0ac);}})[_0x7b9e('0x27')](function(_0x4497ec){if(_0x4497ec){_0x2ed595=_0x4497ec[_0x7b9e('0x55')];if(!_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x56a0ac['limit']=qs[_0x7b9e('0x21')](_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x56a0ac[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x2184a0[_0x7b9e('0x13f')](_0x56a0ac);}})['then'](function(_0x361cb5){if(_0x361cb5){return _0x361cb5?{'count':_0x2ed595,'rows':_0x361cb5}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x27e4b8,null))['catch'](handleError(_0x27e4b8,null));};exports[_0x7b9e('0x141')]=function(_0x14064d,_0x3524f4){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x14064d[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x3524f4,null))[_0x7b9e('0x27')](function(_0x4c8cbf){if(_0x4c8cbf){return _0x4c8cbf[_0x7b9e('0x141')](_0x14064d['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x14064d[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x3524f4,null))['catch'](handleError(_0x3524f4,null));};exports[_0x7b9e('0x142')]=function(_0x224a16,_0x4c6738){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x224a16[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4c6738,null))[_0x7b9e('0x27')](function(_0x2c4f1c){if(_0x2c4f1c){return _0x2c4f1c[_0x7b9e('0x142')](_0x224a16[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x4c6738,null))[_0x7b9e('0x1b')](handleError(_0x4c6738,null));};exports['getMailAccounts']=function(_0x6d3ebc,_0x52ceb1){var _0x3a2a28={};var _0x127c4a={};var _0x354393;var _0x1e5eb8;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x6d3ebc[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x52ceb1,null))[_0x7b9e('0x27')](function(_0xc58305){if(_0xc58305){_0x354393=_0xc58305;_0x127c4a[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['MailAccount'][_0x7b9e('0x3a')]);_0x127c4a['query']=_['keys'](_0x6d3ebc[_0x7b9e('0x3f')]);_0x127c4a[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x127c4a[_0x7b9e('0x4e')],_0x127c4a[_0x7b9e('0x3f')]);_0x3a2a28['attributes']=_['intersection'](_0x127c4a[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x6d3ebc[_0x7b9e('0x3f')]['fields']));_0x3a2a28[_0x7b9e('0x41')]=_0x3a2a28[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x3a2a28[_0x7b9e('0x41')]:_0x127c4a[_0x7b9e('0x4e')];_0x3a2a28[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x6d3ebc[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3a2a28[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x6d3ebc[_0x7b9e('0x3f')],_0x127c4a[_0x7b9e('0x52')]));if(_0x6d3ebc['query'][_0x7b9e('0x30')]){_0x3a2a28[_0x7b9e('0xcc')]=_['merge'](_0x3a2a28['where'],{'$or':_[_0x7b9e('0x32')](_0x3a2a28[_0x7b9e('0x41')],function(_0x3a8dd5){var _0xeaa785={};_0xeaa785[_0x3a8dd5]={'$like':'%'+_0x6d3ebc[_0x7b9e('0x3f')]['filter']+'%'};return _0xeaa785;})});}_0x3a2a28=_[_0x7b9e('0x57')]({},_0x3a2a28,_0x6d3ebc[_0x7b9e('0x58')]);return _0x354393[_0x7b9e('0x143')](_0x3a2a28);}})[_0x7b9e('0x27')](function(_0x4d2c6a){if(_0x4d2c6a){_0x1e5eb8=_0x4d2c6a['length'];if(!_0x6d3ebc[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x3a2a28['limit']=qs[_0x7b9e('0x21')](_0x6d3ebc[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x3a2a28[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x6d3ebc['query'][_0x7b9e('0x1f')]);}return _0x354393[_0x7b9e('0x143')](_0x3a2a28);}})[_0x7b9e('0x27')](function(_0x439ad7){if(_0x439ad7){return _0x439ad7?{'count':_0x1e5eb8,'rows':_0x439ad7}:null;}})['then'](respondWithResult(_0x52ceb1,null))[_0x7b9e('0x1b')](handleError(_0x52ceb1,null));};exports[_0x7b9e('0x144')]=function(_0x52b38a,_0x409b2b){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x52b38a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x409b2b,null))[_0x7b9e('0x27')](function(_0x2e9bed){if(_0x2e9bed){return _0x2e9bed['addMailAccounts'](_0x52b38a[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x52b38a[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x409b2b,null))[_0x7b9e('0x1b')](handleError(_0x409b2b,null));};exports[_0x7b9e('0x145')]=function(_0x3ad3d1,_0x302670){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3ad3d1[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x302670,null))[_0x7b9e('0x27')](function(_0x5b9dac){if(_0x5b9dac){return _0x5b9dac[_0x7b9e('0x145')](_0x3ad3d1[_0x7b9e('0x3f')]['ids']);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x302670,null))[_0x7b9e('0x1b')](handleError(_0x302670,null));};exports[_0x7b9e('0x146')]=function(_0x23a1da,_0x15d167){var _0x400ca3={};var _0x266f01={};var _0x35d1a8;var _0x5579df;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x23a1da['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x15d167,null))[_0x7b9e('0x27')](function(_0x435e5c){if(_0x435e5c){_0x35d1a8=_0x435e5c;_0x266f01[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x147')][_0x7b9e('0x3a')]);_0x266f01[_0x7b9e('0x3f')]=_['keys'](_0x23a1da[_0x7b9e('0x3f')]);_0x266f01[_0x7b9e('0x52')]=_['intersection'](_0x266f01['model'],_0x266f01[_0x7b9e('0x3f')]);_0x400ca3[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x266f01[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x23a1da['query']['fields']));_0x400ca3[_0x7b9e('0x41')]=_0x400ca3[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x400ca3['attributes']:_0x266f01[_0x7b9e('0x4e')];_0x400ca3[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x400ca3[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x23a1da[_0x7b9e('0x3f')],_0x266f01['filters']));if(_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x400ca3[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x400ca3['where'],{'$or':_[_0x7b9e('0x32')](_0x400ca3['attributes'],function(_0x46b27e){var _0x1dc485={};_0x1dc485[_0x46b27e]={'$like':'%'+_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x1dc485;})});}_0x400ca3=_['merge']({},_0x400ca3,_0x23a1da[_0x7b9e('0x58')]);return _0x35d1a8[_0x7b9e('0x146')](_0x400ca3);}})[_0x7b9e('0x27')](function(_0x246c6b){if(_0x246c6b){_0x5579df=_0x246c6b[_0x7b9e('0x55')];if(!_0x23a1da['query']['hasOwnProperty']('nolimit')){_0x400ca3[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x400ca3[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x35d1a8[_0x7b9e('0x146')](_0x400ca3);}})[_0x7b9e('0x27')](function(_0x4b746c){if(_0x4b746c){return _0x4b746c?{'count':_0x5579df,'rows':_0x4b746c}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x15d167,null))[_0x7b9e('0x1b')](handleError(_0x15d167,null));};exports['addOpenchannelAccounts']=function(_0x153ce0,_0x12eb82){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x153ce0[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x12eb82,null))['then'](function(_0x3e13cc){if(_0x3e13cc){return _0x3e13cc[_0x7b9e('0x148')](_0x153ce0[_0x7b9e('0x5c')]['ids'],_[_0x7b9e('0x111')](_0x153ce0[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x12eb82,null))[_0x7b9e('0x1b')](handleError(_0x12eb82,null));};exports['removeOpenchannelAccounts']=function(_0xb665d1,_0x294da4){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0xb665d1['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x294da4,null))[_0x7b9e('0x27')](function(_0x5b528d){if(_0x5b528d){return _0x5b528d['removeOpenchannelAccounts'](_0xb665d1[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x294da4,null))[_0x7b9e('0x1b')](handleError(_0x294da4,null));};exports['getSmsAccounts']=function(_0x10e114,_0x310b20){var _0x1644a0={};var _0x2003b1={};var _0x4c3db3;var _0x326911;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x10e114[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x310b20,null))[_0x7b9e('0x27')](function(_0x24aa6b){if(_0x24aa6b){_0x4c3db3=_0x24aa6b;_0x2003b1[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x149')][_0x7b9e('0x3a')]);_0x2003b1[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x10e114[_0x7b9e('0x3f')]);_0x2003b1['filters']=_[_0x7b9e('0x53')](_0x2003b1[_0x7b9e('0x4e')],_0x2003b1[_0x7b9e('0x3f')]);_0x1644a0['attributes']=_[_0x7b9e('0x53')](_0x2003b1[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x1644a0[_0x7b9e('0x41')]=_0x1644a0[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x1644a0[_0x7b9e('0x41')]:_0x2003b1[_0x7b9e('0x4e')];_0x1644a0[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x1644a0['where']=qs['filters'](_[_0x7b9e('0xcb')](_0x10e114[_0x7b9e('0x3f')],_0x2003b1[_0x7b9e('0x52')]));if(_0x10e114['query'][_0x7b9e('0x30')]){_0x1644a0[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x1644a0['where'],{'$or':_[_0x7b9e('0x32')](_0x1644a0[_0x7b9e('0x41')],function(_0x2395b1){var _0x3f954a={};_0x3f954a[_0x2395b1]={'$like':'%'+_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x3f954a;})});}_0x1644a0=_[_0x7b9e('0x57')]({},_0x1644a0,_0x10e114[_0x7b9e('0x58')]);return _0x4c3db3[_0x7b9e('0x14a')](_0x1644a0);}})['then'](function(_0x2537a4){if(_0x2537a4){_0x326911=_0x2537a4[_0x7b9e('0x55')];if(!_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0xd3')]('nolimit')){_0x1644a0[_0x7b9e('0x21')]=qs['limit'](_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x1644a0[_0x7b9e('0x1f')]=qs['offset'](_0x10e114[_0x7b9e('0x3f')]['offset']);}return _0x4c3db3['getSmsAccounts'](_0x1644a0);}})[_0x7b9e('0x27')](function(_0x5ad49a){if(_0x5ad49a){return _0x5ad49a?{'count':_0x326911,'rows':_0x5ad49a}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x310b20,null))['catch'](handleError(_0x310b20,null));};exports[_0x7b9e('0x14b')]=function(_0x40be44,_0x21d517){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x40be44[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x21d517,null))[_0x7b9e('0x27')](function(_0x3f40dd){if(_0x3f40dd){return _0x3f40dd[_0x7b9e('0x14b')](_0x40be44['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x40be44[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x21d517,null))['catch'](handleError(_0x21d517,null));};exports['removeSmsAccounts']=function(_0x3f207a,_0x4c4f0d){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3f207a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4c4f0d,null))['then'](function(_0x78048){if(_0x78048){return _0x78048[_0x7b9e('0x14c')](_0x3f207a['query'][_0x7b9e('0x5f')]);}})['then'](respondWithStatusCode(_0x4c4f0d,null))[_0x7b9e('0x1b')](handleError(_0x4c4f0d,null));};exports[_0x7b9e('0x14d')]=function(_0x30ee80,_0x26eee0){var _0x334bbe={};var _0x31dab4={};var _0x25b01f;var _0x28726c;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x30ee80[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x26eee0,null))[_0x7b9e('0x27')](function(_0x49ed66){if(_0x49ed66){_0x25b01f=_0x49ed66;_0x31dab4[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x14e')][_0x7b9e('0x3a')]);_0x31dab4['query']=_[_0x7b9e('0x50')](_0x30ee80['query']);_0x31dab4[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x31dab4[_0x7b9e('0x4e')],_0x31dab4[_0x7b9e('0x3f')]);_0x334bbe['attributes']=_['intersection'](_0x31dab4['model'],qs[_0x7b9e('0x54')](_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x334bbe[_0x7b9e('0x41')]=_0x334bbe[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x334bbe[_0x7b9e('0x41')]:_0x31dab4[_0x7b9e('0x4e')];_0x334bbe[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x30ee80[_0x7b9e('0x3f')]['sort']);_0x334bbe['where']=qs['filters'](_['pick'](_0x30ee80[_0x7b9e('0x3f')],_0x31dab4[_0x7b9e('0x52')]));if(_0x30ee80[_0x7b9e('0x3f')]['filter']){_0x334bbe[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x334bbe[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x334bbe[_0x7b9e('0x41')],function(_0x5a51cb){var _0x168009={};_0x168009[_0x5a51cb]={'$like':'%'+_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x168009;})});}_0x334bbe=_['merge']({},_0x334bbe,_0x30ee80[_0x7b9e('0x58')]);return _0x25b01f['getChatWebsites'](_0x334bbe);}})['then'](function(_0x18186f){if(_0x18186f){_0x28726c=_0x18186f[_0x7b9e('0x55')];if(!_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x334bbe[_0x7b9e('0x21')]=qs['limit'](_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x334bbe[_0x7b9e('0x1f')]=qs['offset'](_0x30ee80[_0x7b9e('0x3f')]['offset']);}return _0x25b01f['getChatWebsites'](_0x334bbe);}})[_0x7b9e('0x27')](function(_0x232079){if(_0x232079){return _0x232079?{'count':_0x28726c,'rows':_0x232079}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x26eee0,null))[_0x7b9e('0x1b')](handleError(_0x26eee0,null));};exports[_0x7b9e('0x14f')]=function(_0x5266a9,_0x7f3273){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x5266a9[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x7f3273,null))[_0x7b9e('0x27')](function(_0x50fa8c){if(_0x50fa8c){return _0x50fa8c[_0x7b9e('0x14f')](_0x5266a9['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x5266a9[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x7f3273,null))['catch'](handleError(_0x7f3273,null));};exports[_0x7b9e('0x150')]=function(_0x173c22,_0xb010b7){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x173c22[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xb010b7,null))[_0x7b9e('0x27')](function(_0xf9ef7e){if(_0xf9ef7e){return _0xf9ef7e[_0x7b9e('0x150')](_0x173c22[_0x7b9e('0x3f')]['ids']);}})[_0x7b9e('0x27')](respondWithStatusCode(_0xb010b7,null))[_0x7b9e('0x1b')](handleError(_0xb010b7,null));};exports[_0x7b9e('0x151')]=function(_0xb9c3c1,_0x29fba4){var _0x330117={};var _0x4df999={};var _0x3c543b;var _0x5ab471;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0xb9c3c1[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x29fba4,null))[_0x7b9e('0x27')](function(_0x188df3){if(_0x188df3){_0x3c543b=_0x188df3;_0x4df999[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['WhatsappAccount'][_0x7b9e('0x3a')]);_0x4df999[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0xb9c3c1[_0x7b9e('0x3f')]);_0x4df999[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x4df999[_0x7b9e('0x4e')],_0x4df999['query']);_0x330117[_0x7b9e('0x41')]=_['intersection'](_0x4df999[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x330117[_0x7b9e('0x41')]=_0x330117[_0x7b9e('0x41')]['length']?_0x330117[_0x7b9e('0x41')]:_0x4df999[_0x7b9e('0x4e')];_0x330117[_0x7b9e('0xc9')]=qs['sort'](_0xb9c3c1['query'][_0x7b9e('0xca')]);_0x330117[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0xb9c3c1[_0x7b9e('0x3f')],_0x4df999[_0x7b9e('0x52')]));if(_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x330117[_0x7b9e('0xcc')]=_['merge'](_0x330117[_0x7b9e('0xcc')],{'$or':_['map'](_0x330117['attributes'],function(_0x5a3a8d){var _0x614ed6={};_0x614ed6[_0x5a3a8d]={'$like':'%'+_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x614ed6;})});}_0x330117=_[_0x7b9e('0x57')]({},_0x330117,_0xb9c3c1[_0x7b9e('0x58')]);return _0x3c543b[_0x7b9e('0x151')](_0x330117);}})[_0x7b9e('0x27')](function(_0x2b4ffe){if(_0x2b4ffe){_0x5ab471=_0x2b4ffe[_0x7b9e('0x55')];if(!_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x330117[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0xb9c3c1['query'][_0x7b9e('0x21')]);_0x330117['offset']=qs[_0x7b9e('0x1f')](_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x3c543b[_0x7b9e('0x151')](_0x330117);}})[_0x7b9e('0x27')](function(_0x447dce){if(_0x447dce){return _0x447dce?{'count':_0x5ab471,'rows':_0x447dce}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x29fba4,null))['catch'](handleError(_0x29fba4,null));};exports[_0x7b9e('0x152')]=function(_0xc191ff,_0x4c8350){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0xc191ff[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4c8350,null))[_0x7b9e('0x27')](function(_0x26a433){if(_0x26a433){return _0x26a433['addWhatsappAccounts'](_0xc191ff['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0xc191ff['body'],['ids','id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x4c8350,null))[_0x7b9e('0x1b')](handleError(_0x4c8350,null));};exports[_0x7b9e('0x153')]=function(_0x226f83,_0x5650fd){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x226f83[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x5650fd,null))['then'](function(_0x2404d2){if(_0x2404d2){return _0x2404d2['removeWhatsappAccounts'](_0x226f83[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x5650fd,null))['catch'](handleError(_0x5650fd,null));};exports[_0x7b9e('0x154')]=function(_0x4503f9,_0x1d5b72){var _0xcf90d6={};var _0x25897e={};var _0x1b158b;var _0x3916e8;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x4503f9['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1d5b72,null))['then'](function(_0x266f3e){if(_0x266f3e){_0x1b158b=_0x266f3e;_0x25897e[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0x155')]['rawAttributes']);_0x25897e[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x4503f9[_0x7b9e('0x3f')]);_0x25897e[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x25897e[_0x7b9e('0x4e')],_0x25897e[_0x7b9e('0x3f')]);_0xcf90d6[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x25897e[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x4503f9[_0x7b9e('0x3f')]['fields']));_0xcf90d6[_0x7b9e('0x41')]=_0xcf90d6[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0xcf90d6['attributes']:_0x25897e['model'];_0xcf90d6['order']=qs[_0x7b9e('0xca')](_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0xcf90d6['where']=qs['filters'](_[_0x7b9e('0xcb')](_0x4503f9['query'],_0x25897e[_0x7b9e('0x52')]));if(_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0xcf90d6[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0xcf90d6['where'],{'$or':_['map'](_0xcf90d6[_0x7b9e('0x41')],function(_0xbc5e){var _0x20ae2d={};_0x20ae2d[_0xbc5e]={'$like':'%'+_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x20ae2d;})});}_0xcf90d6=_[_0x7b9e('0x57')]({},_0xcf90d6,_0x4503f9['options']);return _0x1b158b[_0x7b9e('0x154')](_0xcf90d6);}})[_0x7b9e('0x27')](function(_0x2f23c9){if(_0x2f23c9){_0x3916e8=_0x2f23c9[_0x7b9e('0x55')];if(!_0x4503f9['query']['hasOwnProperty']('nolimit')){_0xcf90d6['limit']=qs[_0x7b9e('0x21')](_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0xcf90d6[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x1b158b['getSquareProjects'](_0xcf90d6);}})[_0x7b9e('0x27')](function(_0x48ad30){if(_0x48ad30){return _0x48ad30?{'count':_0x3916e8,'rows':_0x48ad30}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x1d5b72,null))[_0x7b9e('0x1b')](handleError(_0x1d5b72,null));};exports[_0x7b9e('0x156')]=function(_0x2bb4cd,_0x46af61){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x2bb4cd[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x46af61,null))[_0x7b9e('0x27')](function(_0x3cd46d){if(_0x3cd46d){return _0x3cd46d[_0x7b9e('0x156')](_0x2bb4cd[_0x7b9e('0x5c')]['ids'],_[_0x7b9e('0x111')](_0x2bb4cd[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x46af61,null))[_0x7b9e('0x1b')](handleError(_0x46af61,null));};exports['removeSquareProjects']=function(_0x5d1fc2,_0x541abf){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x5d1fc2['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x541abf,null))[_0x7b9e('0x27')](function(_0x4766d6){if(_0x4766d6){return _0x4766d6['removeSquareProjects'](_0x5d1fc2[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})['then'](respondWithStatusCode(_0x541abf,null))[_0x7b9e('0x1b')](handleError(_0x541abf,null));};exports[_0x7b9e('0x157')]=function(_0x17289a,_0x5c9768){var _0x403723={},_0x178305={},_0x477014={'count':0x0,'rows':[]};var _0x3420b7=db[_0x7b9e('0x158')][_0x7b9e('0x3a')];_0x178305[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](_0x3420b7);_0x178305['query']=_['keys'](_0x17289a['query']);_0x178305[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x178305[_0x7b9e('0x4e')],_0x178305[_0x7b9e('0x3f')]);_0x178305['filters']=_[_0x7b9e('0xfb')](_0x178305[_0x7b9e('0x52')],[_0x7b9e('0x159'),_0x7b9e('0x15a'),_0x7b9e('0x15b'),_0x7b9e('0x15c'),_0x7b9e('0x15d'),_0x7b9e('0x15e'),_0x7b9e('0x15f'),_0x7b9e('0x160'),_0x7b9e('0x161'),_0x7b9e('0x162'),_0x7b9e('0x163'),_0x7b9e('0x164'),_0x7b9e('0x165'),_0x7b9e('0x166'),_0x7b9e('0x167'),_0x7b9e('0x168'),_0x7b9e('0x169'),_0x7b9e('0x166'),_0x7b9e('0x16a'),_0x7b9e('0x16b'),'$contained',_0x7b9e('0x16c')]);_0x403723[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x178305[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x403723[_0x7b9e('0x41')]=_0x403723[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x403723[_0x7b9e('0x41')]:_0x178305[_0x7b9e('0x4e')];if(!_0x17289a[_0x7b9e('0x3f')]['hasOwnProperty'](_0x7b9e('0xd4'))){_0x403723[_0x7b9e('0x21')]=qs['limit'](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x403723[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x403723[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x403723[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x17289a[_0x7b9e('0x3f')],_0x178305[_0x7b9e('0x52')]));if(_0x17289a[_0x7b9e('0x3f')]['filter']){_0x403723[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x403723['where'],{'$or':_[_0x7b9e('0x32')](_0x403723[_0x7b9e('0x41')],function(_0x33ac6c){var _0x2655c4={};_0x2655c4[_0x33ac6c]={'$like':'%'+_0x17289a['query'][_0x7b9e('0x30')]+'%'};return _0x2655c4;})});}_0x403723[_0x7b9e('0xcc')]={'$and':[_0x403723[_0x7b9e('0xcc')],{'$or':[{'UserId':_0x17289a[_0x7b9e('0x4d')]['id']},{'OwnerId':_0x17289a[_0x7b9e('0x4d')]['id']}]}]};_0x403723=_[_0x7b9e('0x57')]({},_0x403723,_0x17289a[_0x7b9e('0x58')]);var _0x206a32={'where':_0x403723[_0x7b9e('0xcc')]};return db[_0x7b9e('0x158')][_0x7b9e('0x22')](_0x206a32)[_0x7b9e('0x27')](function(_0xf4057f){_0x477014[_0x7b9e('0x22')]=_0xf4057f;if(_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x56')]){_0x403723[_0x7b9e('0x40')]=[{'attributes':['id',_0x7b9e('0x16d'),_0x7b9e('0x16e'),_0x7b9e('0xe8')],'model':db[_0x7b9e('0x16f')],'as':_0x7b9e('0x170')},{'attributes':['id',_0x7b9e('0x36'),'dialActive'],'model':db[_0x7b9e('0xa8')],'as':_0x7b9e('0xd5')}];}return db[_0x7b9e('0x158')][_0x7b9e('0x43')](_0x403723);})['then'](function(_0x3cc483){_0x477014[_0x7b9e('0x44')]=_0x3cc483;return _0x477014;})['then'](respondWithFilteredResult(_0x5c9768,_0x403723))[_0x7b9e('0x1b')](handleError(_0x5c9768,null));};exports[_0x7b9e('0x171')]=function(_0x276b78,_0x21eada){if(!_[_0x7b9e('0x64')](_0x276b78[_0x7b9e('0x2c')]['id'])&&(_0x276b78[_0x7b9e('0x2c')][_0x7b9e('0x29')]==_0x7b9e('0x2a')||_0x276b78['user'][_0x7b9e('0x29')]==_0x7b9e('0x2c'))){return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x276b78[_0x7b9e('0x4d')]['id']},'raw':!![]})[_0x7b9e('0x27')](function(_0x38617e){return authService[_0x7b9e('0x172')](_0x38617e);})[_0x7b9e('0x27')](function(_0x2b670c){if(_0x2b670c){return _0x21eada[_0x7b9e('0x1c')](0xc8)['json']({'api_key':_0x2b670c[_0x7b9e('0x173')]});}else{return _0x21eada['status'](0xcc)[_0x7b9e('0x1e')]({'message':_0x7b9e('0x174')});}})[_0x7b9e('0x1b')](handleError(_0x21eada,0x193));}else{return _0x21eada[_0x7b9e('0x1c')](0x191)['json']({'message':_0x7b9e('0x175')});}};exports[_0x7b9e('0x176')]=function(_0x5b4eaa,_0x40ee59){if(!_[_0x7b9e('0x64')](_0x5b4eaa['user']['id'])&&(_0x5b4eaa[_0x7b9e('0x2c')][_0x7b9e('0x29')]=='admin'||_0x5b4eaa['user'][_0x7b9e('0x29')]==_0x7b9e('0x2c'))){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x5b4eaa[_0x7b9e('0x4d')]['id']}})['then'](function(_0x595f87){return authService['generateApiKey'](_0x595f87);})['then'](function(_0x18120f){return db[_0x7b9e('0x39')][_0x7b9e('0x25')]({'apiKeyIat':_0x18120f[_0x7b9e('0x177')],'apiKeyNonce':_0x18120f[_0x7b9e('0x178')]},{'where':{'id':_0x5b4eaa[_0x7b9e('0x4d')]['id']}})['then'](function(){return _0x40ee59[_0x7b9e('0x1c')](0xc8)[_0x7b9e('0x1e')]({'api_key':_0x18120f['token']});});})['catch'](handleError(_0x40ee59,0x193));}else{return _0x40ee59[_0x7b9e('0x1c')](0x191)[_0x7b9e('0x1e')]({'message':_0x7b9e('0x175')});}};exports['removeApiKey']=function(_0x5807d8,_0x585bfa){if(!_[_0x7b9e('0x64')](_0x5807d8['user']['id'])&&(_0x5807d8[_0x7b9e('0x2c')][_0x7b9e('0x29')]==_0x7b9e('0x2a')||_0x5807d8[_0x7b9e('0x2c')]['role']=='user')){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x5807d8[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x585bfa,null))[_0x7b9e('0x27')](function(_0x20567d){if(_0x20567d&&_0x20567d[_0x7b9e('0x179')]&&_0x20567d[_0x7b9e('0x17a')])return _0x20567d;else throw{'message':'API\x20key\x20not\x20available'};})[_0x7b9e('0x27')](function(_0x38eac8){return db[_0x7b9e('0x39')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x5807d8['params']['id']}});})[_0x7b9e('0x27')](respondWithStatusCode(_0x585bfa,0xc8))[_0x7b9e('0x1b')](handleError(_0x585bfa,0x193));}else{return _0x585bfa[_0x7b9e('0x1c')](0x191)[_0x7b9e('0x1e')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x7b9e('0x17b')]=function(_0x35e26b,_0x49bcc9){var _0x4a943e=_0x35e26b['user'][_0x7b9e('0x28')]({'plain':!![]});if(!_0x4a943e){return _0x49bcc9[_0x7b9e('0x1c')](0x191)[_0x7b9e('0x37')](_0x7b9e('0x17c'));}else{return _0x49bcc9[_0x7b9e('0x1c')](0xc8)[_0x7b9e('0x1e')](_0x4a943e);}};exports[_0x7b9e('0x17d')]=function(_0x30ec36,_0x5ebad0){var _0x5a77ca={'offset':0x0},_0x1884c8={'count':0x0,'rows':[]};Promise['resolve']()[_0x7b9e('0x27')](function(){if(!_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')]&&!_0x30ec36[_0x7b9e('0x3f')]['teams']&&!_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x17e')])return[];return Promise[_0x7b9e('0xfd')]()['then'](function(){var _0x18da31=[];if(!_[_0x7b9e('0x85')](_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x17f')])){_0x18da31[_0x7b9e('0x42')](db[_0x7b9e('0x10f')]['findAll']({'attributes':['id',_0x7b9e('0x36')],'where':{'id':_0x30ec36['query'][_0x7b9e('0x17f')]}}));}if(!_[_0x7b9e('0x85')](_0x30ec36['query'][_0x7b9e('0x17e')])){_0x18da31[_0x7b9e('0x42')](db[_0x7b9e('0xa8')][_0x7b9e('0x43')]({'attributes':['id',_0x7b9e('0x36')],'type':_0x7b9e('0x180'),'where':{'id':_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x17e')]}}));}return Promise[_0x7b9e('0x4b')](_0x18da31);})[_0x7b9e('0x27')](function(_0x2cd77e){var _0x441a61=_[_0x7b9e('0x122')](_0x2cd77e)['map'](function(_0x1fd918){return _0x1fd918[_0x7b9e('0x125')]({'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x60'),_0x7b9e('0x9a')],'raw':!![]});});return Promise[_0x7b9e('0x4b')](_0x441a61);})[_0x7b9e('0x27')](function(_0x113924){var _0xb08980=_[_0x7b9e('0x122')](_0x113924);if(!_0x30ec36[_0x7b9e('0x3f')]['filter'])return _0xb08980;if(_['isEmpty'](_0xb08980)){return db[_0x7b9e('0x39')]['findAll']({'attributes':['id',_0x7b9e('0x36'),'internal',_0x7b9e('0x9a')],'where':{'role':_0x7b9e('0x2e'),'$or':[db[_0x7b9e('0x65')]['where'](db['sequelize']['fn'](_0x7b9e('0x181'),db[_0x7b9e('0x65')][_0x7b9e('0x182')]('name')),{'$like':'%'+_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')][_0x7b9e('0xa1')]()+'%'}),{'internal':{'$like':'%'+_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0xb08980)[_0x7b9e('0x122')]()[_0x7b9e('0x30')](function(_0x1d3207){return _0x1d3207[_0x7b9e('0x36')][_0x7b9e('0xa1')]()[_0x7b9e('0x34')](_0x30ec36[_0x7b9e('0x3f')]['filter'][_0x7b9e('0xa1')]())||_0x1d3207[_0x7b9e('0x60')][_0x7b9e('0x183')]()[_0x7b9e('0x34')](_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')]);})['value']();}})[_0x7b9e('0x27')](function(_0x11d37c){var _0x24f446='name';var _0x304449='asc';if(_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')]){var _0x304449=_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')][0x0]==='-'?'desc':_0x7b9e('0x184');var _0x24f446=_0x304449===_0x7b9e('0x184')?_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')]:_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')][_0x7b9e('0x185')](0x1);}return _(_0x11d37c)[_0x7b9e('0x186')]('id')[_0x7b9e('0x187')]([function(_0xe2dff0){return _0x24f446===_0x7b9e('0x36')?_0xe2dff0[_0x24f446]['toLowerCase']():_0xe2dff0[_0x24f446];}],[_0x304449])[_0x7b9e('0x32')](function(_0x41dd05){return _[_0x7b9e('0xcb')](_0x41dd05,['id',_0x7b9e('0x36'),_0x7b9e('0x60'),'online']);})[_0x7b9e('0x33')]();})['then'](function(_0x15fa08){return client[_0x7b9e('0x188')](_0x7b9e('0x2d'),_0x30ec36)[_0x7b9e('0x27')](function(_0x58a816){if(_0x58a816[_0x7b9e('0x17')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x82a4b6=_0x58a816[_0x7b9e('0x1a')];var _0x4f8c6b=jayson[_0x7b9e('0x189')][_0x7b9e('0x11')]({'port':0x232c});return _0x4f8c6b[_0x7b9e('0x188')](_0x7b9e('0x2d'),_0x30ec36)[_0x7b9e('0x27')](function(_0x30825f){if(_0x30825f[_0x7b9e('0x17')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x1017b1=_0x30825f['result'];return _[_0x7b9e('0x57')]({},_0x1017b1,_0x82a4b6);});})['then'](function(_0xfb213){return _['map'](_0x15fa08,function(_0x527e11){var _0x4d2104=_['find'](_0xfb213['rows'],['id',_0x527e11['id']]);if(!_0x4d2104||!_0x527e11[_0x7b9e('0x9a')]){_0x527e11[_0x7b9e('0x1c')]='offline';}else if(_0x4d2104[_0x7b9e('0x9c')]){_0x527e11[_0x7b9e('0x1c')]=_0x7b9e('0xff');}else{_0x527e11[_0x7b9e('0x1c')]=_[_0x7b9e('0x34')]([_0x7b9e('0x18a'),_0x7b9e('0x18b'),_0x7b9e('0x18c'),_0x7b9e('0x18d'),null,undefined],_0x4d2104[_0x7b9e('0x18e')])?_0x7b9e('0x9a'):_0x7b9e('0x18f');}return _0x527e11;});});});})[_0x7b9e('0x27')](function(_0x47b430){if(!_0x30ec36['query'][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x5a77ca[_0x7b9e('0x21')]=qs['limit'](_0x30ec36[_0x7b9e('0x3f')]['limit']||0xa);_0x5a77ca['offset']=qs[_0x7b9e('0x1f')](_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x1884c8[_0x7b9e('0x22')]=_0x47b430[_0x7b9e('0x55')];_0x1884c8[_0x7b9e('0x44')]=_0x5a77ca[_0x7b9e('0x21')]?_0x47b430[_0x7b9e('0x190')](_0x5a77ca[_0x7b9e('0x1f')],_0x5a77ca[_0x7b9e('0x1f')]+_0x5a77ca[_0x7b9e('0x21')]):_0x47b430;return _0x1884c8;})[_0x7b9e('0x27')](respondWithFilteredResult(_0x5ebad0,_0x5a77ca))[_0x7b9e('0x1b')](handleError(_0x5ebad0,null));};function get_open_tabs(_0x52405c,_0x595098){var _0x4eb708=_0x52405c[_0x7b9e('0x191')](0x0)[_0x7b9e('0x192')]()+_0x52405c[_0x7b9e('0x190')](0x1);var _0x43495a={'type':db[_0x7b9e('0x8d')]['QueryTypes'][_0x7b9e('0x68')],'raw':!![]};return new BPromise(function(_0x16d342,_0x3718c1){var _0x239ba4=squel[_0x7b9e('0x193')]()['field'](_0x7b9e('0x194')+_0x4eb708+_0x7b9e('0x195'),'id')[_0x7b9e('0x196')](_0x7b9e('0x197'))[_0x7b9e('0x198')](_0x7b9e('0x199')+_0x52405c+_0x7b9e('0x19a'),'ui')[_0x7b9e('0xcc')](_0x7b9e('0x19b'),_0x595098['id']);return db[_0x7b9e('0x65')][_0x7b9e('0x3f')](_0x239ba4['toString'](),_0x43495a)[_0x7b9e('0x27')](function(_0x3c463a){_0x595098[_0x4eb708+'OpenTabs']=_0x3c463a;_0x16d342(_0x3c463a);})[_0x7b9e('0x1b')](function(_0x5c8783){_0x3718c1(_0x5c8783);});});};
\ No newline at end of file
index 1d5dfdb..c135302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f04=['exports','events','../../mysqldb','User','setMaxListeners','remove','emit'];(function(_0x324b53,_0x38e44b){var _0x36cd87=function(_0x1c4046){while(--_0x1c4046){_0x324b53['push'](_0x324b53['shift']());}};_0x36cd87(++_0x38e44b);}(_0x5f04,0x104));var _0x45f0=function(_0x285b48,_0x41b4c6){_0x285b48=_0x285b48-0x0;var _0x5020e9=_0x5f04[_0x285b48];return _0x5020e9;};'use strict';var EventEmitter=require(_0x45f0('0x0'));var User=require(_0x45f0('0x1'))['db'][_0x45f0('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x45f0('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x45f0('0x4')};function emitEvent(_0x367f3c){return function(_0x46bd6a,_0x432181,_0x196af9){UserEvents[_0x45f0('0x5')](_0x367f3c+':'+_0x46bd6a['id'],_0x46bd6a);UserEvents[_0x45f0('0x5')](_0x367f3c,_0x46bd6a);_0x196af9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x45f0('0x6')]=UserEvents;
\ No newline at end of file
+var _0xb692=['hasOwnProperty','../../mysqldb','User','setMaxListeners','remove','emit'];(function(_0x1bd3f5,_0x25b370){var _0x455611=function(_0x2f5852){while(--_0x2f5852){_0x1bd3f5['push'](_0x1bd3f5['shift']());}};_0x455611(++_0x25b370);}(_0xb692,0x1f3));var _0x2b69=function(_0x484cb9,_0x103489){_0x484cb9=_0x484cb9-0x0;var _0x59517e=_0xb692[_0x484cb9];return _0x59517e;};'use strict';var EventEmitter=require('events');var User=require(_0x2b69('0x0'))['db'][_0x2b69('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x2b69('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2b69('0x3')};function emitEvent(_0x411622){return function(_0xceafc7,_0x2e8d8f,_0x2da2ce){UserEvents[_0x2b69('0x4')](_0x411622+':'+_0xceafc7['id'],_0xceafc7);UserEvents[_0x2b69('0x4')](_0x411622,_0xceafc7);_0x2da2ce(null);};}for(var e in events){if(events[_0x2b69('0x5')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index f59497c..25e4c88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x780b=['salt','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','%s%s','prefix','push','merge','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','password','SIP/%s,%s','name','options','join','wav','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Hangup','priority','VoiceChanSpy','findAll','internal','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','then','privacyEnabled','updateMd5Password','catch','changed','updatePassword','VoiceExtension','bulkCreate','destroy','concat','encryptPassword','function','randomBytes','toString','base64','pbkdf2Sync','pbkdf2','sha1','indexOf','provider','Invalid\x20password','makeSalt'];(function(_0x52a3b9,_0x134550){var _0x2b0874=function(_0x4358b5){while(--_0x4358b5){_0x52a3b9['push'](_0x52a3b9['shift']());}};_0x2b0874(++_0x134550);}(_0x780b,0x184));var _0xb780=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x780b[_0x3e5086];return _0xfeb102;};'use strict';var BPromise=require(_0xb780('0x0'));var crypto=require(_0xb780('0x1'));var util=require(_0xb780('0x2'));var md5=require(_0xb780('0x3'));var _=require(_0xb780('0x4'));var attributes=require(_0xb780('0x5'));var authTypes=[_0xb780('0x6')];var validatePresenceOf=function(_0x36cbe3){return _0x36cbe3&&_0x36cbe3[_0xb780('0x7')];};var getChanSpyApplications=function(_0x1a82d1,_0x32e793,_0xca49a2){var _0x128197={'context':_0x1a82d1[_0xb780('0x8')]||_0xb780('0x9'),'type':_0xb780('0xa'),'isApp':![],'UserId':_0x1a82d1['id']};var _0x45b562=[];for(var _0x1931ca=0x0,_0x1041b7=0x1;_0x1931ca<_0xca49a2[_0xb780('0x7')];_0x1931ca++,_0x1041b7=0x1){var _0x11289c={'exten':util['format'](_0xb780('0xb'),_0xca49a2[_0x1931ca][_0xb780('0xc')],_0x32e793),'ChanSpyId':_0xca49a2[_0x1931ca]['id']};_0x45b562[_0xb780('0xd')](_[_0xb780('0xe')]({'app':'Set','appdata':util[_0xb780('0xf')](_0xb780('0x10'),_0xb780('0x11')),'priority':_0x1041b7++},_0x128197,_0x11289c));if(_0xca49a2[_0x1931ca][_0xb780('0x12')]){_0x45b562[_0xb780('0xd')](_[_0xb780('0xe')]({'app':_0xb780('0x13'),'appdata':util['format'](_0xb780('0x14'),_0xca49a2[_0x1931ca]['recordingFormat']),'priority':_0x1041b7++},_0x128197,_0x11289c));}if(_0xca49a2[_0x1931ca]['auth']){_0x45b562['push'](_['merge']({'app':'Authenticate','appdata':_0xca49a2[_0x1931ca][_0xb780('0x15')],'priority':_0x1041b7++},_0x128197,_0x11289c));}_0x45b562['push'](_['merge']({'app':'ChanSpy','appdata':util[_0xb780('0xf')](_0xb780('0x16'),_0x1a82d1[_0xb780('0x17')],_0xca49a2[_0x1931ca][_0xb780('0x18')]?_0xca49a2[_0x1931ca][_0xb780('0x18')][_0xb780('0x19')](''):''),'priority':_0x1041b7++},_0x128197,_0x11289c));if(_0xca49a2[_0x1931ca][_0xb780('0x12')]){_0x45b562[_0xb780('0xd')](_[_0xb780('0xe')]({'app':'StopMixMonitor','priority':_0x1041b7++},_0x128197,_0x11289c));}}return _0x45b562;};var getUserApplications=function(_0x13dec2,_0xf07c45){var _0x4beb08=[_0xb780('0x1a'),'WAV',_0xb780('0x1b')];var _0x4922b7={'context':_0x13dec2['context']||_0xb780('0x9'),'exten':_0xf07c45,'type':_0xb780('0xa'),'isApp':![],'UserId':_0x13dec2['id']};var _0x580182=[{'app':_0xb780('0x1c'),'appdata':_0xb780('0x1d')}];if(_0x13dec2[_0xb780('0x1e')]&&_[_0xb780('0x1f')](_0x4beb08,_0x13dec2[_0xb780('0x1e')])){_0x580182[_0xb780('0xd')]({'app':_0xb780('0x1c'),'appdata':_0xb780('0x20')});_0x580182['push']({'app':_0xb780('0x1c'),'appdata':util[_0xb780('0xf')](_0xb780('0x21'),_0x13dec2['extensionMonitor'])});_0x580182[_0xb780('0xd')]({'app':_0xb780('0x22'),'appdata':util[_0xb780('0xf')](_0xb780('0x23'),_0x13dec2[_0xb780('0x17')])});}else{_0x580182[_0xb780('0xd')]({'app':'Dial','appdata':util[_0xb780('0xf')]('SIP/%s,,tTxX',_0x13dec2[_0xb780('0x17')])});}_0x580182[_0xb780('0xd')]({'app':_0xb780('0x24')});for(var _0x130884=0x0;_0x130884<_0x580182[_0xb780('0x7')];_0x130884++){_0x580182[_0x130884][_0xb780('0x25')]=_0x130884+0x1;_0x580182[_0x130884]=_['defaults'](_0x580182[_0x130884],_0x4922b7);}return _0x580182;};var getChanSpyPromise=function(_0x226e27,_0x117650){return new BPromise(function(_0x3fc0b1,_0x73987a){return _0x226e27[_0xb780('0x26')][_0xb780('0x27')]()['then'](function(_0x11a9e4){if(_0x11a9e4){var _0x3b65c2=getChanSpyApplications(_0x117650,_0x117650[_0xb780('0x28')],_0x11a9e4);if(_0x117650[_0xb780('0x28')]!=_0x117650['name']){_0x3b65c2=_0x3b65c2['concat'](getChanSpyApplications(_0x117650,_0x117650[_0xb780('0x17')],_0x11a9e4));}return _0x3fc0b1(_0x3b65c2);}return _0x3fc0b1([]);})['catch'](function(_0x4e64f3){_0x73987a(_0x4e64f3);});});};module[_0xb780('0x29')]=function(_0x104af1,_0x18f239){var _0x257d67=_0x104af1[_0xb780('0x2a')];return _0x104af1[_0xb780('0x2b')](_0xb780('0x2c'),attributes,{'tableName':_0xb780('0x2d'),'charset':_0xb780('0x2e'),'collate':_0xb780('0x2f'),'hooks':{'beforeCreate':function(_0x184d19,_0x50bba3,_0x422d9a){var _0x3120de=typeof _0x184d19[_0xb780('0x30')]===_0xb780('0x31')?BPromise[_0xb780('0x32')](null):_0x257d67[_0xb780('0x33')]['find']({'where':{'id':_0x184d19[_0xb780('0x30')]}});_0x3120de[_0xb780('0x34')](function(_0x4bb9e5){if(_0x4bb9e5){_0x184d19['privacyEnabled']=_0x4bb9e5[_0xb780('0x35')];}})['then'](function(){_0x184d19[_0xb780('0x36')]();_0x184d19['updatePassword'](_0x422d9a);})[_0xb780('0x37')](function(_0x54887f){_0x422d9a(_0x54887f);});},'beforeUpdate':function(_0xb22a2c,_0x4fb406,_0x38dd9b){Promise[_0xb780('0x32')]()[_0xb780('0x34')](function(){if(_0xb22a2c[_0xb780('0x38')](_0xb780('0x30'))===![])return;return _0x257d67['UserProfile']['find']({'where':{'id':_0xb22a2c[_0xb780('0x30')]}})[_0xb780('0x34')](function(_0x4c5f35){if(_0x4c5f35)_0xb22a2c[_0xb780('0x35')]=_0x4c5f35['privacyEnabled'];return;});})[_0xb780('0x34')](function(){if(_0xb22a2c[_0xb780('0x38')]('password')){_0xb22a2c[_0xb780('0x36')]();return _0xb22a2c[_0xb780('0x39')](_0x38dd9b);}_0x38dd9b();})[_0xb780('0x37')](function(_0x25d7f1){_0x38dd9b(_0x25d7f1);});},'afterCreate':function(_0x207a5d,_0x430941,_0x2019fb){var _0x59130e=getUserApplications(_0x207a5d,_0x207a5d[_0xb780('0x28')]);if(_0x207a5d['internal']!=_0x207a5d[_0xb780('0x17')]){_0x59130e=_0x59130e['concat'](getUserApplications(_0x207a5d,_0x207a5d['name']));}return _0x257d67['VoiceExtension']['bulkCreate'](_0x59130e)[_0xb780('0x34')](function(){if(_0x207a5d[_0xb780('0x11')]){return getChanSpyPromise(_0x257d67,_0x207a5d);}})[_0xb780('0x34')](function(_0x517da7){if(_0x517da7&&_0x517da7[_0xb780('0x7')]){return _0x257d67[_0xb780('0x3a')][_0xb780('0x3b')](_0x517da7);}})[_0xb780('0x34')](function(){_0x2019fb();})['catch'](function(_0x5dc570){_0x2019fb(_0x5dc570);});},'afterUpdate':function(_0x5de730,_0xd5d2b8,_0x30fa7f){return BPromise[_0xb780('0x32')]()[_0xb780('0x34')](function(){if(_0x5de730['changed'](_0xb780('0x11'))||_0x5de730['changed'](_0xb780('0x8'))){return _0x257d67[_0xb780('0x3a')][_0xb780('0x3c')]({'where':{'UserId':_0x5de730['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xb780('0x34')](function(){if(_0x5de730[_0xb780('0x11')]){return getChanSpyPromise(_0x257d67,_0x5de730)[_0xb780('0x34')](function(_0x1c60d5){if(_0x1c60d5&&_0x1c60d5[_0xb780('0x7')]){return _0x257d67[_0xb780('0x3a')][_0xb780('0x3b')](_0x1c60d5);}});}});}})[_0xb780('0x34')](function(){if(_0x5de730['changed'](_0xb780('0x1e'))||_0x5de730['changed'](_0xb780('0x8'))){return _0x257d67[_0xb780('0x3a')][_0xb780('0x3c')]({'where':{'UserId':_0x5de730['id'],'type':'system','ChanSpyId':null}})[_0xb780('0x34')](function(){var _0xc86fcc=getUserApplications(_0x5de730,_0x5de730[_0xb780('0x28')]);if(_0x5de730[_0xb780('0x28')]!=_0x5de730[_0xb780('0x17')]){_0xc86fcc=_0xc86fcc[_0xb780('0x3d')](getUserApplications(_0x5de730,_0x5de730[_0xb780('0x17')]));}return _0x257d67['VoiceExtension'][_0xb780('0x3b')](_0xc86fcc);});}})[_0xb780('0x34')](function(){_0x30fa7f();})[_0xb780('0x37')](function(_0x1ceea0){_0x30fa7f(_0x1ceea0);});},'afterDestroy':function(_0x534a46,_0xd89afa){return _0x257d67['VoiceExtension']['destroy']({'where':{'UserId':_0x534a46['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4f309d,_0x6794bd){if(!_0x6794bd){return this[_0xb780('0x15')]===this[_0xb780('0x3e')](_0x4f309d);}var _0x6113fb=this;this['encryptPassword'](_0x4f309d,function(_0x379b25,_0x3314c5){if(_0x379b25){_0x6794bd(_0x379b25);}if(_0x6113fb[_0xb780('0x15')]===_0x3314c5){_0x6794bd(null,!![]);}else{_0x6794bd(null,![]);}});},'makeSalt':function(_0x160696,_0x4ad23b){var _0x8e9099=0x10;if(typeof arguments[0x0]===_0xb780('0x3f')){_0x4ad23b=arguments[0x0];_0x160696=_0x8e9099;}else if(typeof arguments[0x1]===_0xb780('0x3f')){_0x4ad23b=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x160696){_0x160696=_0x8e9099;}return crypto[_0xb780('0x40')](_0x160696,function(_0x836e7f,_0x41d6de){if(_0x836e7f){_0x4ad23b(_0x836e7f);}return _0x4ad23b(null,_0x41d6de[_0xb780('0x41')]('base64'));});},'encryptPassword':function(_0xb6d17f,_0x5bdb9d){if(!_0xb6d17f||!this['salt']){return _0x5bdb9d?_0x5bdb9d(null):null;}var _0x4725cd=0x2710;var _0x1d2bed=0x40;var _0x4b114e=new Buffer(this['salt'],_0xb780('0x42'));if(!_0x5bdb9d){return crypto[_0xb780('0x43')](_0xb6d17f,_0x4b114e,_0x4725cd,_0x1d2bed,'sha1')[_0xb780('0x41')](_0xb780('0x42'));}return crypto[_0xb780('0x44')](_0xb6d17f,_0x4b114e,_0x4725cd,_0x1d2bed,_0xb780('0x45'),function(_0x304c38,_0x235abb){if(_0x304c38){_0x5bdb9d(_0x304c38);}return _0x5bdb9d(null,_0x235abb[_0xb780('0x41')](_0xb780('0x42')));});},'updatePassword':function(_0x143edb){if(!this[_0xb780('0x15')]){return _0x143edb(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xb780('0x46')](this[_0xb780('0x47')])===-0x1){_0x143edb(new Error(_0xb780('0x48')));}var _0x1e44e0=this;this[_0xb780('0x49')](function(_0x54bc9e,_0x27381b){if(_0x54bc9e){return _0x143edb(_0x54bc9e);}_0x1e44e0[_0xb780('0x4a')]=_0x27381b;_0x1e44e0[_0xb780('0x3e')](_0x1e44e0['password'],function(_0x45f5cb,_0x1e506f){if(_0x45f5cb){_0x143edb(_0x45f5cb);}_0x1e44e0['password']=_0x1e506f;_0x143edb(null);});});},'updateMd5Password':function(){this[_0xb780('0x4b')]=md5(this[_0xb780('0x17')]+_0xb780('0x4c')+this[_0xb780('0x15')]);return this[_0xb780('0x4b')];}}});};
\ No newline at end of file
+var _0x5df0=['_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','internal','catch','exports','models','define','User','utf8','utf8_bin','userProfileId','resolve','UserProfile','find','then','privacyEnabled','updatePassword','changed','updateMd5Password','concat','VoiceExtension','bulkCreate','context','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','lodash','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','Set','CDR(type)=%s','chanspy','record','push','merge','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','SIP/%s,%s','options','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x5fe7ce,_0x1a0d39){var _0x3b5793=function(_0x221d2a){while(--_0x221d2a){_0x5fe7ce['push'](_0x5fe7ce['shift']());}};_0x3b5793(++_0x1a0d39);}(_0x5df0,0x118));var _0x05df=function(_0x31727b,_0x4106e2){_0x31727b=_0x31727b-0x0;var _0x2d4562=_0x5df0[_0x31727b];return _0x2d4562;};'use strict';var BPromise=require(_0x05df('0x0'));var crypto=require(_0x05df('0x1'));var util=require(_0x05df('0x2'));var md5=require('md5');var _=require(_0x05df('0x3'));var attributes=require(_0x05df('0x4'));var authTypes=[_0x05df('0x5')];var validatePresenceOf=function(_0x35e5d2){return _0x35e5d2&&_0x35e5d2[_0x05df('0x6')];};var getChanSpyApplications=function(_0x49d479,_0x4f411d,_0x522a50){var _0x22f97a={'context':_0x49d479['context']||_0x05df('0x7'),'type':_0x05df('0x8'),'isApp':![],'UserId':_0x49d479['id']};var _0x2f94c9=[];for(var _0x193a1f=0x0,_0x1b0e7c=0x1;_0x193a1f<_0x522a50['length'];_0x193a1f++,_0x1b0e7c=0x1){var _0x433d82={'exten':util[_0x05df('0x9')](_0x05df('0xa'),_0x522a50[_0x193a1f][_0x05df('0xb')],_0x4f411d),'ChanSpyId':_0x522a50[_0x193a1f]['id']};_0x2f94c9['push'](_['merge']({'app':_0x05df('0xc'),'appdata':util[_0x05df('0x9')](_0x05df('0xd'),_0x05df('0xe')),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));if(_0x522a50[_0x193a1f][_0x05df('0xf')]){_0x2f94c9[_0x05df('0x10')](_[_0x05df('0x11')]({'app':_0x05df('0x12'),'appdata':util[_0x05df('0x9')](_0x05df('0x13'),_0x522a50[_0x193a1f]['recordingFormat']),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));}if(_0x522a50[_0x193a1f]['auth']){_0x2f94c9[_0x05df('0x10')](_[_0x05df('0x11')]({'app':_0x05df('0x14'),'appdata':_0x522a50[_0x193a1f][_0x05df('0x15')],'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));}_0x2f94c9[_0x05df('0x10')](_['merge']({'app':_0x05df('0x16'),'appdata':util[_0x05df('0x9')](_0x05df('0x17'),_0x49d479['name'],_0x522a50[_0x193a1f][_0x05df('0x18')]?_0x522a50[_0x193a1f][_0x05df('0x18')]['join'](''):''),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));if(_0x522a50[_0x193a1f][_0x05df('0xf')]){_0x2f94c9[_0x05df('0x10')](_['merge']({'app':_0x05df('0x19'),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));}}return _0x2f94c9;};var getUserApplications=function(_0x26b485,_0x122bc4){var _0x406292=[_0x05df('0x1a'),_0x05df('0x1b'),_0x05df('0x1c')];var _0x54ebd3={'context':_0x26b485['context']||'from-sip','exten':_0x122bc4,'type':_0x05df('0x8'),'isApp':![],'UserId':_0x26b485['id']};var _0x8cb55f=[{'app':_0x05df('0xc'),'appdata':_0x05df('0x1d')}];if(_0x26b485[_0x05df('0x1e')]&&_['includes'](_0x406292,_0x26b485['extensionMonitor'])){_0x8cb55f[_0x05df('0x10')]({'app':'Set','appdata':_0x05df('0x1f')});_0x8cb55f[_0x05df('0x10')]({'app':'Set','appdata':util[_0x05df('0x9')](_0x05df('0x20'),_0x26b485[_0x05df('0x1e')])});_0x8cb55f[_0x05df('0x10')]({'app':_0x05df('0x21'),'appdata':util[_0x05df('0x9')](_0x05df('0x22'),_0x26b485[_0x05df('0x23')])});}else{_0x8cb55f[_0x05df('0x10')]({'app':'Dial','appdata':util[_0x05df('0x9')](_0x05df('0x24'),_0x26b485[_0x05df('0x23')])});}_0x8cb55f[_0x05df('0x10')]({'app':_0x05df('0x25')});for(var _0xe1f23c=0x0;_0xe1f23c<_0x8cb55f[_0x05df('0x6')];_0xe1f23c++){_0x8cb55f[_0xe1f23c][_0x05df('0x26')]=_0xe1f23c+0x1;_0x8cb55f[_0xe1f23c]=_[_0x05df('0x27')](_0x8cb55f[_0xe1f23c],_0x54ebd3);}return _0x8cb55f;};var getChanSpyPromise=function(_0x3452aa,_0x41f354){return new BPromise(function(_0x28efa9,_0x11c0fd){return _0x3452aa[_0x05df('0x28')]['findAll']()['then'](function(_0x3ed8b3){if(_0x3ed8b3){var _0x4fb6c5=getChanSpyApplications(_0x41f354,_0x41f354[_0x05df('0x29')],_0x3ed8b3);if(_0x41f354[_0x05df('0x29')]!=_0x41f354[_0x05df('0x23')]){_0x4fb6c5=_0x4fb6c5['concat'](getChanSpyApplications(_0x41f354,_0x41f354['name'],_0x3ed8b3));}return _0x28efa9(_0x4fb6c5);}return _0x28efa9([]);})[_0x05df('0x2a')](function(_0x3173dc){_0x11c0fd(_0x3173dc);});});};module[_0x05df('0x2b')]=function(_0x4c4323,_0xf80d1f){var _0x38905a=_0x4c4323[_0x05df('0x2c')];return _0x4c4323[_0x05df('0x2d')](_0x05df('0x2e'),attributes,{'tableName':'users','charset':_0x05df('0x2f'),'collate':_0x05df('0x30'),'hooks':{'beforeCreate':function(_0x12e49f,_0x27d090,_0x1b17a0){var _0x2956ea=typeof _0x12e49f[_0x05df('0x31')]==='undefined'?BPromise[_0x05df('0x32')](null):_0x38905a[_0x05df('0x33')][_0x05df('0x34')]({'where':{'id':_0x12e49f['userProfileId']}});_0x2956ea[_0x05df('0x35')](function(_0x4db63d){if(_0x4db63d){_0x12e49f[_0x05df('0x36')]=_0x4db63d[_0x05df('0x36')];}})[_0x05df('0x35')](function(){_0x12e49f['updateMd5Password']();_0x12e49f[_0x05df('0x37')](_0x1b17a0);})[_0x05df('0x2a')](function(_0x30cf28){_0x1b17a0(_0x30cf28);});},'beforeUpdate':function(_0x3c7d31,_0x8f48d,_0x21a521){Promise[_0x05df('0x32')]()[_0x05df('0x35')](function(){if(_0x3c7d31[_0x05df('0x38')](_0x05df('0x31'))===![])return;return _0x38905a[_0x05df('0x33')][_0x05df('0x34')]({'where':{'id':_0x3c7d31[_0x05df('0x31')]}})['then'](function(_0x32816c){if(_0x32816c)_0x3c7d31[_0x05df('0x36')]=_0x32816c[_0x05df('0x36')];return;});})[_0x05df('0x35')](function(){if(_0x3c7d31[_0x05df('0x38')](_0x05df('0x15'))){_0x3c7d31[_0x05df('0x39')]();return _0x3c7d31[_0x05df('0x37')](_0x21a521);}_0x21a521();})[_0x05df('0x2a')](function(_0x3e6e92){_0x21a521(_0x3e6e92);});},'afterCreate':function(_0x941381,_0x47eb5d,_0x200206){var _0x42b87a=getUserApplications(_0x941381,_0x941381[_0x05df('0x29')]);if(_0x941381[_0x05df('0x29')]!=_0x941381[_0x05df('0x23')]){_0x42b87a=_0x42b87a[_0x05df('0x3a')](getUserApplications(_0x941381,_0x941381[_0x05df('0x23')]));}return _0x38905a[_0x05df('0x3b')][_0x05df('0x3c')](_0x42b87a)[_0x05df('0x35')](function(){if(_0x941381[_0x05df('0xe')]){return getChanSpyPromise(_0x38905a,_0x941381);}})[_0x05df('0x35')](function(_0x56488a){if(_0x56488a&&_0x56488a[_0x05df('0x6')]){return _0x38905a['VoiceExtension']['bulkCreate'](_0x56488a);}})[_0x05df('0x35')](function(){_0x200206();})['catch'](function(_0x57c099){_0x200206(_0x57c099);});},'afterUpdate':function(_0x571124,_0x228a7c,_0xd174f4){return BPromise[_0x05df('0x32')]()[_0x05df('0x35')](function(){if(_0x571124[_0x05df('0x38')]('chanspy')||_0x571124[_0x05df('0x38')](_0x05df('0x3d'))){return _0x38905a[_0x05df('0x3b')][_0x05df('0x3e')]({'where':{'UserId':_0x571124['id'],'type':_0x05df('0x8'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x571124[_0x05df('0xe')]){return getChanSpyPromise(_0x38905a,_0x571124)[_0x05df('0x35')](function(_0x561b12){if(_0x561b12&&_0x561b12['length']){return _0x38905a[_0x05df('0x3b')][_0x05df('0x3c')](_0x561b12);}});}});}})[_0x05df('0x35')](function(){if(_0x571124[_0x05df('0x38')]('extensionMonitor')||_0x571124[_0x05df('0x38')](_0x05df('0x3d'))){return _0x38905a['VoiceExtension'][_0x05df('0x3e')]({'where':{'UserId':_0x571124['id'],'type':_0x05df('0x8'),'ChanSpyId':null}})[_0x05df('0x35')](function(){var _0x574237=getUserApplications(_0x571124,_0x571124[_0x05df('0x29')]);if(_0x571124[_0x05df('0x29')]!=_0x571124['name']){_0x574237=_0x574237[_0x05df('0x3a')](getUserApplications(_0x571124,_0x571124[_0x05df('0x23')]));}return _0x38905a['VoiceExtension'][_0x05df('0x3c')](_0x574237);});}})['then'](function(){_0xd174f4();})[_0x05df('0x2a')](function(_0x2b7797){_0xd174f4(_0x2b7797);});},'afterDestroy':function(_0xac16e5,_0x5a73c6){return _0x38905a[_0x05df('0x3b')][_0x05df('0x3e')]({'where':{'UserId':_0xac16e5['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x18932a,_0x506439){if(!_0x506439){return this[_0x05df('0x15')]===this[_0x05df('0x3f')](_0x18932a);}var _0x21d404=this;this['encryptPassword'](_0x18932a,function(_0x4e4a29,_0x37cd5b){if(_0x4e4a29){_0x506439(_0x4e4a29);}if(_0x21d404['password']===_0x37cd5b){_0x506439(null,!![]);}else{_0x506439(null,![]);}});},'makeSalt':function(_0x1de7d0,_0x156368){var _0x3a379=0x10;if(typeof arguments[0x0]===_0x05df('0x40')){_0x156368=arguments[0x0];_0x1de7d0=_0x3a379;}else if(typeof arguments[0x1]==='function'){_0x156368=arguments[0x1];}else{throw new Error(_0x05df('0x41'));}if(!_0x1de7d0){_0x1de7d0=_0x3a379;}return crypto[_0x05df('0x42')](_0x1de7d0,function(_0x28db49,_0x46eed8){if(_0x28db49){_0x156368(_0x28db49);}return _0x156368(null,_0x46eed8[_0x05df('0x43')](_0x05df('0x44')));});},'encryptPassword':function(_0x395eb0,_0x124209){if(!_0x395eb0||!this[_0x05df('0x45')]){return _0x124209?_0x124209(null):null;}var _0x5e8207=0x2710;var _0x1fd528=0x40;var _0x2ed5f5=new Buffer(this[_0x05df('0x45')],_0x05df('0x44'));if(!_0x124209){return crypto['pbkdf2Sync'](_0x395eb0,_0x2ed5f5,_0x5e8207,_0x1fd528,_0x05df('0x46'))['toString']('base64');}return crypto[_0x05df('0x47')](_0x395eb0,_0x2ed5f5,_0x5e8207,_0x1fd528,'sha1',function(_0x3c906a,_0x3954c1){if(_0x3c906a){_0x124209(_0x3c906a);}return _0x124209(null,_0x3954c1[_0x05df('0x43')](_0x05df('0x44')));});},'updatePassword':function(_0x132cab){if(!this['password']){return _0x132cab(null);}if(!validatePresenceOf(this[_0x05df('0x15')])&&authTypes[_0x05df('0x48')](this[_0x05df('0x49')])===-0x1){_0x132cab(new Error(_0x05df('0x4a')));}var _0x1166e8=this;this[_0x05df('0x4b')](function(_0x4f4f64,_0x48874d){if(_0x4f4f64){return _0x132cab(_0x4f4f64);}_0x1166e8[_0x05df('0x45')]=_0x48874d;_0x1166e8[_0x05df('0x3f')](_0x1166e8[_0x05df('0x15')],function(_0x2fd67d,_0x39381c){if(_0x2fd67d){_0x132cab(_0x2fd67d);}_0x1166e8[_0x05df('0x15')]=_0x39381c;_0x132cab(null);});});},'updateMd5Password':function(){this[_0x05df('0x4c')]=md5(this[_0x05df('0x23')]+_0x05df('0x4d')+this[_0x05df('0x15')]);return this[_0x05df('0x4c')];}}});};
\ No newline at end of file
index 25e661d..2c65fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49a7=['rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','User,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','catch','find','ShowUser','name','role','internal','UserVoiceQueueRt','update','PAUSE','length','format','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','interface','type','DEFAULT\x20PAUSE','body','uniqueid','MemberReport','bulkCreate','YYYY-MM-DD\x20HH:mm:ss','UnpauseUser','findOne','isValidChannel','Unknown\x20channel','channel','voice','chat','fax','sms','whatsapp','system','set','%s%s','Pause','all','LogoutUser','destroy','LoginUser','phone','loginInPause','count','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','merge','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x413941,_0x32c0e4){var _0x4e4927=function(_0xa297e4){while(--_0xa297e4){_0x413941['push'](_0x413941['shift']());}};_0x4e4927(++_0x32c0e4);}(_0x49a7,0xb2));var _0x749a=function(_0x1863a5,_0x19a8c6){_0x1863a5=_0x1863a5-0x0;var _0x591172=_0x49a7[_0x1863a5];return _0x591172;};'use strict';var _=require(_0x749a('0x0'));var util=require(_0x749a('0x1'));var moment=require(_0x749a('0x2'));var BPromise=require(_0x749a('0x3'));var rs=require(_0x749a('0x4'));var fs=require('fs');var Redis=require(_0x749a('0x5'));var db=require(_0x749a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x749a('0x7'))(_0x749a('0x8'));var config=require('../../config/environment');var jayson=require(_0x749a('0x9'));var client=jayson[_0x749a('0xa')][_0x749a('0xb')]({'port':0x232a});config[_0x749a('0xc')]=_[_0x749a('0xd')](config[_0x749a('0xc')],{'host':_0x749a('0xe'),'port':0x18eb});var socket=require(_0x749a('0xf'))(new Redis(config[_0x749a('0xc')]));require('./user.socket')['register'](socket);function respondWithRpcPromise(_0x4e613a,_0x6f177e,_0x2c1c11){return new BPromise(function(_0x323320,_0x5dda6f){return client[_0x749a('0x10')](_0x4e613a,_0x2c1c11)[_0x749a('0x11')](function(_0x50d6f3){logger['info'](_0x749a('0x12'),_0x6f177e,_0x749a('0x13'));logger[_0x749a('0x14')]('User,\x20%s,\x20%s,\x20%s',_0x6f177e,_0x749a('0x13'),JSON[_0x749a('0x15')](_0x50d6f3));if(_0x50d6f3['error']){if(_0x50d6f3[_0x749a('0x16')]['code']===0x1f4){logger[_0x749a('0x16')](_0x749a('0x12'),_0x6f177e,_0x50d6f3[_0x749a('0x16')][_0x749a('0x17')]);return _0x5dda6f(_0x50d6f3[_0x749a('0x16')]['message']);}logger[_0x749a('0x16')](_0x749a('0x12'),_0x6f177e,_0x50d6f3['error'][_0x749a('0x17')]);return _0x323320(_0x50d6f3[_0x749a('0x16')][_0x749a('0x17')]);}else{logger[_0x749a('0x18')](_0x749a('0x12'),_0x6f177e,_0x749a('0x13'));_0x323320(_0x50d6f3[_0x749a('0x19')][_0x749a('0x17')]);}})['catch'](function(_0x1b4d35){logger[_0x749a('0x16')](_0x749a('0x12'),_0x6f177e,_0x1b4d35);_0x5dda6f(_0x1b4d35);});});}exports[_0x749a('0x1a')]=function(_0x1f11da){var _0x528212=this;return new Promise(function(_0x4bd8bf,_0x5ee5c3){return db[_0x749a('0x1b')][_0x749a('0x1c')]({'raw':_0x1f11da['options']?_0x1f11da[_0x749a('0x1d')][_0x749a('0x1e')]===undefined?!![]:![]:!![],'where':_0x1f11da[_0x749a('0x1d')]?_0x1f11da[_0x749a('0x1d')][_0x749a('0x1f')]||null:null,'attributes':_0x1f11da[_0x749a('0x1d')]?_0x1f11da[_0x749a('0x1d')][_0x749a('0x20')]||null:null,'limit':_0x1f11da[_0x749a('0x1d')]?_0x1f11da['options'][_0x749a('0x21')]||null:null,'include':_0x1f11da[_0x749a('0x1d')]?_0x1f11da[_0x749a('0x1d')][_0x749a('0x22')]?_[_0x749a('0x23')](_0x1f11da['options'][_0x749a('0x22')],function(_0x4894af){return{'model':db[_0x4894af['model']],'as':_0x4894af['as'],'attributes':_0x4894af[_0x749a('0x20')],'include':_0x4894af[_0x749a('0x22')]?_[_0x749a('0x23')](_0x4894af[_0x749a('0x22')],function(_0x44f59e){return{'model':db[_0x44f59e[_0x749a('0x24')]],'as':_0x44f59e['as'],'attributes':_0x44f59e[_0x749a('0x20')],'include':_0x44f59e[_0x749a('0x22')]?_['map'](_0x44f59e[_0x749a('0x22')],function(_0x56403d){return{'model':db[_0x56403d['model']],'as':_0x56403d['as'],'attributes':_0x56403d[_0x749a('0x20')]};}):[]};}):[]};}):[]:[]})[_0x749a('0x11')](function(_0x24836){logger['info']('GetUser',_0x1f11da);logger[_0x749a('0x14')](_0x749a('0x1a'),_0x1f11da,JSON[_0x749a('0x15')](_0x24836));_0x4bd8bf(_0x24836);})[_0x749a('0x25')](function(_0x3b6bdd){logger[_0x749a('0x16')](_0x749a('0x1a'),_0x3b6bdd[_0x749a('0x17')],_0x1f11da);_0x5ee5c3(_0x528212[_0x749a('0x16')](0x1f4,_0x3b6bdd[_0x749a('0x17')]));});});};exports['ShowUser']=function(_0xf231cb){var _0xf649c6=this;return new Promise(function(_0x274aa3,_0x552594){return db[_0x749a('0x1b')][_0x749a('0x26')]({'raw':_0xf231cb[_0x749a('0x1d')]?_0xf231cb[_0x749a('0x1d')][_0x749a('0x1e')]===undefined?!![]:![]:!![],'where':_0xf231cb[_0x749a('0x1d')]?_0xf231cb['options'][_0x749a('0x1f')]||null:null,'attributes':_0xf231cb['options']?_0xf231cb['options']['attributes']||null:null,'include':_0xf231cb[_0x749a('0x1d')]?_0xf231cb[_0x749a('0x1d')][_0x749a('0x22')]?_[_0x749a('0x23')](_0xf231cb['options'][_0x749a('0x22')],function(_0x53d33e){return{'model':db[_0x53d33e[_0x749a('0x24')]],'as':_0x53d33e['as'],'attributes':_0x53d33e[_0x749a('0x20')],'include':_0x53d33e[_0x749a('0x22')]?_['map'](_0x53d33e['include'],function(_0x5082a1){return{'model':db[_0x5082a1['model']],'as':_0x5082a1['as'],'attributes':_0x5082a1[_0x749a('0x20')],'include':_0x5082a1[_0x749a('0x22')]?_[_0x749a('0x23')](_0x5082a1[_0x749a('0x22')],function(_0x555664){return{'model':db[_0x555664[_0x749a('0x24')]],'as':_0x555664['as'],'attributes':_0x555664[_0x749a('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x15d2ab){logger['info'](_0x749a('0x27'),_0xf231cb);logger['debug'](_0x749a('0x27'),_0xf231cb,JSON['stringify'](_0x15d2ab));_0x274aa3(_0x15d2ab);})[_0x749a('0x25')](function(_0x4d38eb){logger[_0x749a('0x16')](_0x749a('0x27'),_0x4d38eb[_0x749a('0x17')],_0xf231cb);_0x552594(_0xf649c6['error'](0x1f4,_0x4d38eb[_0x749a('0x17')]));});});};exports['PauseUser']=function(_0x3e5989){var _0x5ed705=this;return new Promise(function(_0x23d482,_0x25c946){var _0x4dc421;return db['User']['find']({'where':_0x3e5989[_0x749a('0x1d')]['where']||{},'attributes':['id',_0x749a('0x28'),_0x749a('0x29'),_0x749a('0x2a'),'interface']})['then'](function(_0x5b6b75){if(_0x5b6b75){_0x4dc421=_0x5b6b75;return db[_0x749a('0x2b')][_0x749a('0x2c')]({'paused':0x1},{'where':{'UserId':_0x4dc421['id']},'individualHooks':!![]});}})[_0x749a('0x11')](function(){if(_0x4dc421){return db['MemberReport']['findAll']({'where':{'membername':_0x4dc421[_0x749a('0x28')],'type':_0x749a('0x2d'),'exitAt':null}});}})[_0x749a('0x11')](function(_0xadbe84){if(_0x4dc421){if(_0xadbe84&&_0xadbe84[_0x749a('0x2e')]){var _0x1f13ac=moment()[_0x749a('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0xab9afa=0x0,_0x39683b=_0xadbe84['length'];_0xab9afa<_0x39683b;_0xab9afa++){_0xadbe84[_0xab9afa][_0x749a('0x30')]({'exitAt':_0x1f13ac});}}}})[_0x749a('0x11')](function(){if(_0x4dc421){var _0xfaf0a8=[];var _0x11489e=utils[_0x749a('0x31')]();_0x11489e[_0x749a('0x32')](function(_0x427282){_0xfaf0a8[_0x749a('0x33')]({'channel':_0x427282,'membername':_0x4dc421[_0x749a('0x28')],'interface':_[_0x749a('0x34')](_0x4dc421['interface'])?util[_0x749a('0x2f')](_0x749a('0x35'),_0x4dc421['name']):_0x4dc421[_0x749a('0x36')],'type':_0x749a('0x2d'),'enterAt':moment()[_0x749a('0x2f')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x3e5989['body'][_0x749a('0x37')]||_0x749a('0x38'),'role':_0x4dc421[_0x749a('0x29')],'internal':_0x4dc421[_0x749a('0x2a')],'uniqueid':_0x3e5989[_0x749a('0x39')][_0x749a('0x3a')]||null});});return db[_0x749a('0x3b')][_0x749a('0x3c')](_0xfaf0a8,{'individualHooks':!![]});}})[_0x749a('0x11')](function(){if(_0x4dc421){return _0x4dc421[_0x749a('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3e5989['body']['type']||_0x749a('0x38'),'lastPauseAt':moment()['format'](_0x749a('0x3d'))});}})[_0x749a('0x11')](function(_0x4f06af){_0x23d482(_0x4f06af);})[_0x749a('0x25')](function(_0x33f09d){_0x25c946(_0x5ed705[_0x749a('0x16')](0x1f4,_0x33f09d[_0x749a('0x17')]));});});};exports[_0x749a('0x3e')]=function(_0x3321f8){var _0x1dadd6=this;return new Promise(function(_0x4531a0,_0x3b3498){var _0x51a222;return db[_0x749a('0x1b')][_0x749a('0x3f')]({'where':_0x3321f8[_0x749a('0x1d')][_0x749a('0x1f')]||{},'attributes':['id',_0x749a('0x28')]})[_0x749a('0x11')](function(_0x595f4c){if(_0x595f4c){_0x51a222=_0x595f4c;if(_0x3321f8[_0x749a('0x39')]['channel']&&!utils[_0x749a('0x40')](_0x3321f8['body']['channel'])){throw new Error(_0x749a('0x41'));}switch(_0x3321f8[_0x749a('0x39')][_0x749a('0x42')]){case _0x749a('0x43'):return db['UserVoiceQueueRt'][_0x749a('0x2c')]({'paused':0x0},{'where':{'UserId':_0x51a222['id']}})[_0x749a('0x11')](function(){return db[_0x749a('0x3b')][_0x749a('0x26')]({'where':{'channel':_0x3321f8[_0x749a('0x39')][_0x749a('0x42')],'membername':_0x51a222[_0x749a('0x28')],'type':_0x749a('0x2d'),'exitAt':null}});})[_0x749a('0x11')](function(_0x5782be){if(_0x5782be){return _0x5782be[_0x749a('0x2c')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});}return null;})[_0x749a('0x11')](function(){return _0x51a222['update']({'voicePause':![]});});case'mail':case _0x749a('0x44'):case _0x749a('0x45'):case _0x749a('0x46'):case'openchannel':case _0x749a('0x47'):return db[_0x749a('0x3b')][_0x749a('0x26')]({'where':{'channel':_0x3321f8['body'][_0x749a('0x42')],'membername':_0x51a222[_0x749a('0x28')],'type':_0x749a('0x2d'),'exitAt':null}})[_0x749a('0x11')](function(_0x3bb3ed){return _0x3bb3ed[_0x749a('0x2c')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x749a('0x48')},{'individualHooks':!![]});})[_0x749a('0x11')](function(){var _0x3eaf6a={};_[_0x749a('0x49')](_0x3eaf6a,util['format'](_0x749a('0x4a'),_0x3321f8[_0x749a('0x39')][_0x749a('0x42')],_0x749a('0x4b')),![]);return _0x51a222['update'](_0x3eaf6a);});default:return db[_0x749a('0x2b')][_0x749a('0x2c')]({'paused':0x0},{'where':{'UserId':_0x51a222['id']}})[_0x749a('0x11')](function(){return db[_0x749a('0x3b')][_0x749a('0x1c')]({'where':{'membername':_0x51a222[_0x749a('0x28')],'type':_0x749a('0x2d'),'exitAt':null}});})['then'](function(_0x1e8649){var _0x59581d=[];_0x1e8649[_0x749a('0x32')](function(_0x2b50bb){_0x59581d[_0x749a('0x33')](_0x2b50bb['update']({'exitAt':moment()[_0x749a('0x2f')](_0x749a('0x3d')),'data2':_0x749a('0x48')}));});return BPromise[_0x749a('0x4c')](_0x59581d);})[_0x749a('0x11')](function(){return _0x51a222[_0x749a('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x749a('0x11')](function(_0x29e7ce){_0x4531a0(_0x29e7ce);})['catch'](function(_0x44c89e){_0x3b3498(_0x1dadd6[_0x749a('0x16')](0x1f4,_0x44c89e[_0x749a('0x17')]));});});};exports[_0x749a('0x4d')]=function(_0x540b74){var _0x233be6=this;return new Promise(function(_0x212a28,_0x2a2ffb){var _0x14292b;return db['User']['findOne']({'where':_0x540b74[_0x749a('0x1d')][_0x749a('0x1f')]||{},'attributes':['id',_0x749a('0x28')]})[_0x749a('0x11')](function(_0x2b77cd){if(_0x2b77cd){_0x14292b=_0x2b77cd;return db[_0x749a('0x2b')][_0x749a('0x4e')]({'where':{'membername':_0x14292b[_0x749a('0x28')]},'individualHooks':!![]});}})[_0x749a('0x11')](function(){if(_0x14292b){return db[_0x749a('0x3b')]['findAll']({'where':{'membername':_0x14292b['name'],'exitAt':null}});}})[_0x749a('0x11')](function(_0x31980d){if(_0x14292b){if(_0x31980d&&_0x31980d[_0x749a('0x2e')]){var _0x22334e=[];_0x31980d[_0x749a('0x32')](function(_0x2977d0){_0x22334e[_0x749a('0x33')](_0x2977d0[_0x749a('0x2c')]({'exitAt':moment()[_0x749a('0x2f')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x749a('0x4c')](_0x22334e);}}})[_0x749a('0x11')](function(){if(_0x14292b){return _0x14292b['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x154294){_0x212a28(_0x154294);})[_0x749a('0x25')](function(_0x5d37b6){_0x2a2ffb(_0x233be6[_0x749a('0x16')](0x1f4,_0x5d37b6[_0x749a('0x17')]));});});};exports[_0x749a('0x4f')]=function(_0x3ac103){var _0x32f4d9=this;return new Promise(function(_0x40414c,_0x51bd60){var _0x19c406;var _0x2290ca;var _0x176479;var _0x2c1675;return db['User'][_0x749a('0x3f')]({'where':_0x3ac103[_0x749a('0x1d')][_0x749a('0x1f')]||{},'attributes':['id',_0x749a('0x28'),'role','mobile',_0x749a('0x50'),'internal',_0x749a('0x51'),_0x749a('0x36')]})[_0x749a('0x11')](function(_0x2a2393){if(_0x2a2393){_0x19c406=_0x2a2393;_0x2c1675=_0x3ac103[_0x749a('0x39')][_0x749a('0x36')]?_0x3ac103[_0x749a('0x39')][_0x749a('0x36')]:util[_0x749a('0x2f')](_0x749a('0x35'),_0x19c406['name']);return db[_0x749a('0x1b')][_0x749a('0x52')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x19c406['id']}}});}})[_0x749a('0x11')](function(_0x5c650c){if(_0x5c650c){_0x176479=_0x5c650c;return require(_0x749a('0x53'))[_0x749a('0x54')]();}})[_0x749a('0x11')](function(_0x79fbe){if(_0x79fbe&&_0x79fbe['agents']&&_0x176479>=_0x79fbe[_0x749a('0x55')]){throw new Error(_0x749a('0x56'));}})[_0x749a('0x11')](function(){if(_0x19c406){return db[_0x749a('0x2b')][_0x749a('0x4e')]({'where':{'membername':_0x19c406[_0x749a('0x28')]},'individualHooks':!![]});}})[_0x749a('0x11')](function(){if(_0x19c406){return _0x19c406[_0x749a('0x57')]({'raw':!![]});}})[_0x749a('0x11')](function(_0xcde61e){if(_0x19c406){if(_0xcde61e){var _0x1716aa=[];_0x2290ca=_0xcde61e;if(_0x2290ca[_0x749a('0x2e')]){for(var _0x27b4bc=0x0;_0x27b4bc<_0x2290ca[_0x749a('0x2e')];_0x27b4bc++){_0x1716aa['push'](db[_0x749a('0x2b')][_0x749a('0x58')]({'membername':_0x19c406[_0x749a('0x28')],'UserId':_0x19c406['id'],'queue_name':_0x2290ca[_0x27b4bc][_0x749a('0x28')],'VoiceQueueId':_0x2290ca[_0x27b4bc]['id'],'interface':_0x2c1675,'paused':_0x19c406[_0x749a('0x51')]||![],'penalty':_0x2290ca[_0x27b4bc]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x749a('0x4c')](_0x1716aa);}}}})[_0x749a('0x11')](function(){if(_0x19c406){return db[_0x749a('0x3b')]['findAll']({'where':{'membername':_0x19c406[_0x749a('0x28')],'exitAt':null}});}})['then'](function(_0x436176){if(_0x19c406){if(_0x436176&&_0x436176[_0x749a('0x2e')]){var _0x5a4752=[];_0x436176[_0x749a('0x32')](function(_0x2efe41){_0x5a4752[_0x749a('0x33')](_0x2efe41[_0x749a('0x2c')]({'exitAt':moment()[_0x749a('0x2f')](_0x749a('0x3d'))}));});return BPromise[_0x749a('0x4c')](_0x5a4752);}}})[_0x749a('0x11')](function(_0x3234c3){if(_0x19c406){var _0x4a91f4=[];var _0x277601=[];var _0x434402=utils[_0x749a('0x31')]();var _0x16a7ae={'membername':_0x19c406[_0x749a('0x28')],'interface':_0x2c1675,'enterAt':moment()[_0x749a('0x2f')](_0x749a('0x3d')),'role':_0x19c406['role'],'internal':_0x19c406[_0x749a('0x2a')]};_0x434402[_0x749a('0x32')](function(_0x17b565){_0x4a91f4['push'](_[_0x749a('0x59')]({'channel':_0x17b565,'type':'LOGIN','data1':_0x749a('0x5a'),'data2':_0x2c1675},_0x16a7ae));if(_0x19c406[_0x749a('0x51')]){_0x277601['push'](_[_0x749a('0x59')]({'channel':_0x17b565,'type':_0x749a('0x2d'),'data1':_0x749a('0x5b')},_0x16a7ae));}});return db[_0x749a('0x3b')][_0x749a('0x3c')](_0x4a91f4[_0x749a('0x5c')](_0x277601),{'individualHooks':!![]});}})[_0x749a('0x11')](function(){if(_0x19c406){return _0x19c406[_0x749a('0x2c')]({'online':!![],'lastLoginAt':moment()[_0x749a('0x2f')](_0x749a('0x3d')),'voicePause':_0x19c406['loginInPause']||![],'mailPause':_0x19c406['loginInPause']||![],'chatPause':_0x19c406[_0x749a('0x51')]||![],'faxPause':_0x19c406['loginInPause']||![],'smsPause':_0x19c406[_0x749a('0x51')]||![],'openchannelPause':_0x19c406[_0x749a('0x51')]||![],'pauseType':_0x19c406[_0x749a('0x51')]?_0x749a('0x5b'):null,'lastPauseAt':moment()['format'](_0x749a('0x3d')),'interface':_0x2c1675});}})[_0x749a('0x11')](function(_0x3a388f){_0x40414c(_0x3a388f);})[_0x749a('0x25')](function(_0x2d21ea){_0x51bd60(_0x32f4d9[_0x749a('0x16')](0x1f4,_0x2d21ea[_0x749a('0x17')]));});});};
\ No newline at end of file
+var _0x3066=['findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','SIP/%s','PAUSE','body','type','uniqueid','update','channel','voice','system','chat','fax','openchannel','whatsapp','set','%s%s','all','LogoutUser','destroy','forEach','LoginUser','findOne','loginInPause','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','merge','callysquare','LOGININPAUSE','bulkCreate','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./user.socket','register','then','info','User,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','options','where','attributes','include','map','model','GetUser','debug','ShowUser','User','find','raw','PauseUser','name','role','internal','interface','UserVoiceQueueRt','MemberReport'];(function(_0x31ced5,_0x5d5415){var _0x10d9e5=function(_0x2e51a5){while(--_0x2e51a5){_0x31ced5['push'](_0x31ced5['shift']());}};_0x10d9e5(++_0x5d5415);}(_0x3066,0x17d));var _0x6306=function(_0x44689f,_0x27e8e1){_0x44689f=_0x44689f-0x0;var _0x4ad4af=_0x3066[_0x44689f];return _0x4ad4af;};'use strict';var _=require(_0x6306('0x0'));var util=require(_0x6306('0x1'));var moment=require(_0x6306('0x2'));var BPromise=require(_0x6306('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6306('0x4'))['db'];var utils=require(_0x6306('0x5'));var logger=require(_0x6306('0x6'))(_0x6306('0x7'));var config=require(_0x6306('0x8'));var jayson=require(_0x6306('0x9'));var client=jayson['client'][_0x6306('0xa')]({'port':0x232a});config[_0x6306('0xb')]=_[_0x6306('0xc')](config['redis'],{'host':_0x6306('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6306('0xb')]));require(_0x6306('0xe'))[_0x6306('0xf')](socket);function respondWithRpcPromise(_0xb6bd20,_0x1d102c,_0x3c3775){return new BPromise(function(_0x2f88d8,_0xe41694){return client['request'](_0xb6bd20,_0x3c3775)[_0x6306('0x10')](function(_0x2e1c6a){logger[_0x6306('0x11')](_0x6306('0x12'),_0x1d102c,_0x6306('0x13'));logger['debug']('User,\x20%s,\x20%s,\x20%s',_0x1d102c,'request\x20sent',JSON['stringify'](_0x2e1c6a));if(_0x2e1c6a[_0x6306('0x14')]){if(_0x2e1c6a[_0x6306('0x14')][_0x6306('0x15')]===0x1f4){logger[_0x6306('0x14')](_0x6306('0x12'),_0x1d102c,_0x2e1c6a[_0x6306('0x14')]['message']);return _0xe41694(_0x2e1c6a[_0x6306('0x14')][_0x6306('0x16')]);}logger[_0x6306('0x14')](_0x6306('0x12'),_0x1d102c,_0x2e1c6a['error'][_0x6306('0x16')]);return _0x2f88d8(_0x2e1c6a[_0x6306('0x14')][_0x6306('0x16')]);}else{logger[_0x6306('0x11')](_0x6306('0x12'),_0x1d102c,_0x6306('0x13'));_0x2f88d8(_0x2e1c6a[_0x6306('0x17')][_0x6306('0x16')]);}})[_0x6306('0x18')](function(_0x44e04c){logger[_0x6306('0x14')](_0x6306('0x12'),_0x1d102c,_0x44e04c);_0xe41694(_0x44e04c);});});}exports['GetUser']=function(_0x1ff8fe){var _0x33cab5=this;return new Promise(function(_0xd9458f,_0x230352){return db['User']['findAll']({'raw':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe['options'][_0x6306('0x1a')]||null:null,'attributes':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')][_0x6306('0x1b')]||null:null,'limit':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')]['limit']||null:null,'include':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')][_0x6306('0x1c')]?_[_0x6306('0x1d')](_0x1ff8fe['options']['include'],function(_0x4bdb09){return{'model':db[_0x4bdb09[_0x6306('0x1e')]],'as':_0x4bdb09['as'],'attributes':_0x4bdb09['attributes'],'include':_0x4bdb09['include']?_['map'](_0x4bdb09['include'],function(_0x3db685){return{'model':db[_0x3db685['model']],'as':_0x3db685['as'],'attributes':_0x3db685[_0x6306('0x1b')],'include':_0x3db685['include']?_[_0x6306('0x1d')](_0x3db685[_0x6306('0x1c')],function(_0x22f909){return{'model':db[_0x22f909['model']],'as':_0x22f909['as'],'attributes':_0x22f909[_0x6306('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6306('0x10')](function(_0x307cf6){logger[_0x6306('0x11')](_0x6306('0x1f'),_0x1ff8fe);logger[_0x6306('0x20')](_0x6306('0x1f'),_0x1ff8fe,JSON['stringify'](_0x307cf6));_0xd9458f(_0x307cf6);})[_0x6306('0x18')](function(_0x330060){logger[_0x6306('0x14')](_0x6306('0x1f'),_0x330060['message'],_0x1ff8fe);_0x230352(_0x33cab5['error'](0x1f4,_0x330060[_0x6306('0x16')]));});});};exports[_0x6306('0x21')]=function(_0x1fc56c){var _0x5ec362=this;return new Promise(function(_0x4de031,_0x238110){return db[_0x6306('0x22')][_0x6306('0x23')]({'raw':_0x1fc56c[_0x6306('0x19')]?_0x1fc56c[_0x6306('0x19')][_0x6306('0x24')]===undefined?!![]:![]:!![],'where':_0x1fc56c[_0x6306('0x19')]?_0x1fc56c['options']['where']||null:null,'attributes':_0x1fc56c['options']?_0x1fc56c[_0x6306('0x19')][_0x6306('0x1b')]||null:null,'include':_0x1fc56c[_0x6306('0x19')]?_0x1fc56c[_0x6306('0x19')]['include']?_[_0x6306('0x1d')](_0x1fc56c['options'][_0x6306('0x1c')],function(_0x36a73f){return{'model':db[_0x36a73f[_0x6306('0x1e')]],'as':_0x36a73f['as'],'attributes':_0x36a73f[_0x6306('0x1b')],'include':_0x36a73f[_0x6306('0x1c')]?_[_0x6306('0x1d')](_0x36a73f[_0x6306('0x1c')],function(_0x446f9e){return{'model':db[_0x446f9e[_0x6306('0x1e')]],'as':_0x446f9e['as'],'attributes':_0x446f9e[_0x6306('0x1b')],'include':_0x446f9e[_0x6306('0x1c')]?_[_0x6306('0x1d')](_0x446f9e['include'],function(_0x9c4e5a){return{'model':db[_0x9c4e5a['model']],'as':_0x9c4e5a['as'],'attributes':_0x9c4e5a[_0x6306('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6306('0x10')](function(_0xd23150){logger[_0x6306('0x11')]('ShowUser',_0x1fc56c);logger[_0x6306('0x20')](_0x6306('0x21'),_0x1fc56c,JSON['stringify'](_0xd23150));_0x4de031(_0xd23150);})[_0x6306('0x18')](function(_0x4fecd6){logger[_0x6306('0x14')](_0x6306('0x21'),_0x4fecd6[_0x6306('0x16')],_0x1fc56c);_0x238110(_0x5ec362[_0x6306('0x14')](0x1f4,_0x4fecd6[_0x6306('0x16')]));});});};exports[_0x6306('0x25')]=function(_0xbc5397){var _0x2773ab=this;return new Promise(function(_0x2bca28,_0x3a8329){var _0x1ac206;return db['User']['find']({'where':_0xbc5397[_0x6306('0x19')][_0x6306('0x1a')]||{},'attributes':['id',_0x6306('0x26'),_0x6306('0x27'),_0x6306('0x28'),_0x6306('0x29')]})[_0x6306('0x10')](function(_0x4b3457){if(_0x4b3457){_0x1ac206=_0x4b3457;return db[_0x6306('0x2a')]['update']({'paused':0x1},{'where':{'UserId':_0x1ac206['id']},'individualHooks':!![]});}})['then'](function(){if(_0x1ac206){return db[_0x6306('0x2b')][_0x6306('0x2c')]({'where':{'membername':_0x1ac206[_0x6306('0x26')],'type':'PAUSE','exitAt':null}});}})[_0x6306('0x10')](function(_0x26a488){if(_0x1ac206){if(_0x26a488&&_0x26a488[_0x6306('0x2d')]){var _0x71dc2=moment()[_0x6306('0x2e')](_0x6306('0x2f'));for(var _0x2205d0=0x0,_0x214b86=_0x26a488[_0x6306('0x2d')];_0x2205d0<_0x214b86;_0x2205d0++){_0x26a488[_0x2205d0][_0x6306('0x30')]({'exitAt':_0x71dc2});}}}})[_0x6306('0x10')](function(){if(_0x1ac206){var _0x147b02=[];var _0x3bc684=utils['getChannels']();_0x3bc684['forEach'](function(_0x3e83f1){_0x147b02[_0x6306('0x31')]({'channel':_0x3e83f1,'membername':_0x1ac206['name'],'interface':_['isNil'](_0x1ac206['interface'])?util[_0x6306('0x2e')](_0x6306('0x32'),_0x1ac206[_0x6306('0x26')]):_0x1ac206[_0x6306('0x29')],'type':_0x6306('0x33'),'enterAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'data1':_0xbc5397[_0x6306('0x34')][_0x6306('0x35')]||'DEFAULT\x20PAUSE','role':_0x1ac206[_0x6306('0x27')],'internal':_0x1ac206[_0x6306('0x28')],'uniqueid':_0xbc5397[_0x6306('0x34')][_0x6306('0x36')]||null});});return db[_0x6306('0x2b')]['bulkCreate'](_0x147b02,{'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x1ac206){return _0x1ac206[_0x6306('0x37')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0xbc5397[_0x6306('0x34')][_0x6306('0x35')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x6306('0x2e')](_0x6306('0x2f'))});}})['then'](function(_0x3feeba){_0x2bca28(_0x3feeba);})[_0x6306('0x18')](function(_0x4c47ab){_0x3a8329(_0x2773ab['error'](0x1f4,_0x4c47ab[_0x6306('0x16')]));});});};exports['UnpauseUser']=function(_0x9b98a4){var _0x535d44=this;return new Promise(function(_0x30f48d,_0x457e50){var _0x2f7f01;return db[_0x6306('0x22')]['findOne']({'where':_0x9b98a4[_0x6306('0x19')][_0x6306('0x1a')]||{},'attributes':['id','name']})[_0x6306('0x10')](function(_0x221a6e){if(_0x221a6e){_0x2f7f01=_0x221a6e;if(_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')]&&!utils['isValidChannel'](_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')])){throw new Error('Unknown\x20channel');}switch(_0x9b98a4[_0x6306('0x34')]['channel']){case _0x6306('0x39'):return db['UserVoiceQueueRt'][_0x6306('0x37')]({'paused':0x0},{'where':{'UserId':_0x2f7f01['id']}})[_0x6306('0x10')](function(){return db['MemberReport'][_0x6306('0x23')]({'where':{'channel':_0x9b98a4['body'][_0x6306('0x38')],'membername':_0x2f7f01[_0x6306('0x26')],'type':_0x6306('0x33'),'exitAt':null}});})[_0x6306('0x10')](function(_0xc6b8fb){if(_0xc6b8fb){return _0xc6b8fb[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x6306('0x3a')},{'individualHooks':!![]});}return null;})[_0x6306('0x10')](function(){return _0x2f7f01['update']({'voicePause':![]});});case'mail':case _0x6306('0x3b'):case _0x6306('0x3c'):case'sms':case _0x6306('0x3d'):case _0x6306('0x3e'):return db['MemberReport']['find']({'where':{'channel':_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')],'membername':_0x2f7f01['name'],'type':_0x6306('0x33'),'exitAt':null}})['then'](function(_0x381308){return _0x381308[_0x6306('0x37')]({'exitAt':moment()['format'](_0x6306('0x2f')),'data2':_0x6306('0x3a')},{'individualHooks':!![]});})[_0x6306('0x10')](function(){var _0xc271d6={};_[_0x6306('0x3f')](_0xc271d6,util[_0x6306('0x2e')](_0x6306('0x40'),_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')],'Pause'),![]);return _0x2f7f01['update'](_0xc271d6);});default:return db[_0x6306('0x2a')][_0x6306('0x37')]({'paused':0x0},{'where':{'UserId':_0x2f7f01['id']}})[_0x6306('0x10')](function(){return db['MemberReport'][_0x6306('0x2c')]({'where':{'membername':_0x2f7f01['name'],'type':_0x6306('0x33'),'exitAt':null}});})[_0x6306('0x10')](function(_0x1d0956){var _0xc84c2d=[];_0x1d0956['forEach'](function(_0x19831d){_0xc84c2d[_0x6306('0x31')](_0x19831d[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'data2':_0x6306('0x3a')}));});return BPromise[_0x6306('0x41')](_0xc84c2d);})[_0x6306('0x10')](function(){return _0x2f7f01[_0x6306('0x37')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x6306('0x10')](function(_0x21465d){_0x30f48d(_0x21465d);})[_0x6306('0x18')](function(_0xd1dde8){_0x457e50(_0x535d44[_0x6306('0x14')](0x1f4,_0xd1dde8[_0x6306('0x16')]));});});};exports[_0x6306('0x42')]=function(_0xe7d00e){var _0x424a06=this;return new Promise(function(_0x227466,_0x456fc5){var _0x1d82c1;return db[_0x6306('0x22')]['findOne']({'where':_0xe7d00e['options'][_0x6306('0x1a')]||{},'attributes':['id',_0x6306('0x26')]})[_0x6306('0x10')](function(_0x5635e2){if(_0x5635e2){_0x1d82c1=_0x5635e2;return db[_0x6306('0x2a')][_0x6306('0x43')]({'where':{'membername':_0x1d82c1['name']},'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x1d82c1){return db[_0x6306('0x2b')][_0x6306('0x2c')]({'where':{'membername':_0x1d82c1[_0x6306('0x26')],'exitAt':null}});}})[_0x6306('0x10')](function(_0x425735){if(_0x1d82c1){if(_0x425735&&_0x425735[_0x6306('0x2d')]){var _0x1cfc2c=[];_0x425735[_0x6306('0x44')](function(_0x1141d6){_0x1cfc2c['push'](_0x1141d6[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')](_0x6306('0x2f'))}));});return BPromise[_0x6306('0x41')](_0x1cfc2c);}}})[_0x6306('0x10')](function(){if(_0x1d82c1){return _0x1d82c1[_0x6306('0x37')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x6306('0x10')](function(_0x80ec2b){_0x227466(_0x80ec2b);})['catch'](function(_0x2efdf3){_0x456fc5(_0x424a06['error'](0x1f4,_0x2efdf3[_0x6306('0x16')]));});});};exports[_0x6306('0x45')]=function(_0x159702){var _0x3fb153=this;return new Promise(function(_0x2fe8b9,_0x39dd2a){var _0x4eb6a9;var _0x3e4f88;var _0x1c722b;var _0x2eb30a;return db[_0x6306('0x22')][_0x6306('0x46')]({'where':_0x159702[_0x6306('0x19')][_0x6306('0x1a')]||{},'attributes':['id','name',_0x6306('0x27'),'mobile','phone','internal',_0x6306('0x47'),_0x6306('0x29')]})[_0x6306('0x10')](function(_0x171b6c){if(_0x171b6c){_0x4eb6a9=_0x171b6c;_0x2eb30a=_0x159702[_0x6306('0x34')]['interface']?_0x159702[_0x6306('0x34')][_0x6306('0x29')]:util[_0x6306('0x2e')](_0x6306('0x32'),_0x4eb6a9[_0x6306('0x26')]);return db[_0x6306('0x22')][_0x6306('0x48')]({'where':{'role':_0x6306('0x49'),'online':!![],'id':{'$ne':_0x4eb6a9['id']}}});}})[_0x6306('0x10')](function(_0x498705){if(_0x498705){_0x1c722b=_0x498705;return require(_0x6306('0x4a'))['getLicense']();}})[_0x6306('0x10')](function(_0x549119){if(_0x549119&&_0x549119['agents']&&_0x1c722b>=_0x549119[_0x6306('0x4b')]){throw new Error(_0x6306('0x4c'));}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return db[_0x6306('0x2a')][_0x6306('0x43')]({'where':{'membername':_0x4eb6a9[_0x6306('0x26')]},'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return _0x4eb6a9[_0x6306('0x4d')]({'raw':!![]});}})['then'](function(_0x2228f6){if(_0x4eb6a9){if(_0x2228f6){var _0xe7a5c5=[];_0x3e4f88=_0x2228f6;if(_0x3e4f88['length']){for(var _0x3865c7=0x0;_0x3865c7<_0x3e4f88[_0x6306('0x2d')];_0x3865c7++){_0xe7a5c5[_0x6306('0x31')](db[_0x6306('0x2a')][_0x6306('0x4e')]({'membername':_0x4eb6a9['name'],'UserId':_0x4eb6a9['id'],'queue_name':_0x3e4f88[_0x3865c7][_0x6306('0x26')],'VoiceQueueId':_0x3e4f88[_0x3865c7]['id'],'interface':_0x2eb30a,'paused':_0x4eb6a9[_0x6306('0x47')]||![],'penalty':_0x3e4f88[_0x3865c7][_0x6306('0x4f')]||0x0}));}return BPromise[_0x6306('0x41')](_0xe7a5c5);}}}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return db[_0x6306('0x2b')][_0x6306('0x2c')]({'where':{'membername':_0x4eb6a9[_0x6306('0x26')],'exitAt':null}});}})[_0x6306('0x10')](function(_0xbd0db3){if(_0x4eb6a9){if(_0xbd0db3&&_0xbd0db3[_0x6306('0x2d')]){var _0x1256e2=[];_0xbd0db3[_0x6306('0x44')](function(_0x449284){_0x1256e2[_0x6306('0x31')](_0x449284[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x6306('0x41')](_0x1256e2);}}})['then'](function(_0x401dcb){if(_0x4eb6a9){var _0x39991e=[];var _0x114434=[];var _0x23b8c2=utils[_0x6306('0x50')]();var _0x2bd353={'membername':_0x4eb6a9[_0x6306('0x26')],'interface':_0x2eb30a,'enterAt':moment()[_0x6306('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x4eb6a9['role'],'internal':_0x4eb6a9[_0x6306('0x28')]};_0x23b8c2[_0x6306('0x44')](function(_0x14640c){_0x39991e[_0x6306('0x31')](_[_0x6306('0x51')]({'channel':_0x14640c,'type':'LOGIN','data1':_0x6306('0x52'),'data2':_0x2eb30a},_0x2bd353));if(_0x4eb6a9['loginInPause']){_0x114434[_0x6306('0x31')](_[_0x6306('0x51')]({'channel':_0x14640c,'type':'PAUSE','data1':_0x6306('0x53')},_0x2bd353));}});return db[_0x6306('0x2b')][_0x6306('0x54')](_0x39991e['concat'](_0x114434),{'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return _0x4eb6a9[_0x6306('0x37')]({'online':!![],'lastLoginAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'voicePause':_0x4eb6a9[_0x6306('0x47')]||![],'mailPause':_0x4eb6a9[_0x6306('0x47')]||![],'chatPause':_0x4eb6a9[_0x6306('0x47')]||![],'faxPause':_0x4eb6a9[_0x6306('0x47')]||![],'smsPause':_0x4eb6a9[_0x6306('0x47')]||![],'openchannelPause':_0x4eb6a9['loginInPause']||![],'pauseType':_0x4eb6a9[_0x6306('0x47')]?_0x6306('0x53'):null,'lastPauseAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'interface':_0x2eb30a});}})[_0x6306('0x10')](function(_0x4ea6d1){_0x2fe8b9(_0x4ea6d1);})[_0x6306('0x18')](function(_0x8fa83){_0x39dd2a(_0x3fb153['error'](0x1f4,_0x8fa83[_0x6306('0x16')]));});});};
\ No newline at end of file
index b8c3358..838514c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed85=['remove','emit','register','length','./user.events'];(function(_0x1f0084,_0x169444){var _0x5e80ac=function(_0x15cd3d){while(--_0x15cd3d){_0x1f0084['push'](_0x1f0084['shift']());}};_0x5e80ac(++_0x169444);}(_0xed85,0x7c));var _0x5ed8=function(_0x2e76a7,_0x23871a){_0x2e76a7=_0x2e76a7-0x0;var _0x454cde=_0xed85[_0x2e76a7];return _0x454cde;};'use strict';var UserEvents=require(_0x5ed8('0x0'));var events=['save',_0x5ed8('0x1'),'update'];function createListener(_0x2ab311,_0x3138d2){return function(_0x2142a0){_0x3138d2[_0x5ed8('0x2')](_0x2ab311,_0x2142a0);};}function removeListener(_0xc1f4a3,_0x3f7ae2){return function(){UserEvents['removeListener'](_0xc1f4a3,_0x3f7ae2);};}exports[_0x5ed8('0x3')]=function(_0x2160a2){for(var _0xce4274=0x0,_0x53b47d=events[_0x5ed8('0x4')];_0xce4274<_0x53b47d;_0xce4274++){var _0x37d377=events[_0xce4274];var _0x5bf7d5=createListener('user:'+_0x37d377,_0x2160a2);UserEvents['on'](_0x37d377,_0x5bf7d5);}};
\ No newline at end of file
+var _0xb243=['./user.events','remove','update','emit','removeListener','register','length','user:'];(function(_0x482236,_0x230bac){var _0x493b6d=function(_0x31182b){while(--_0x31182b){_0x482236['push'](_0x482236['shift']());}};_0x493b6d(++_0x230bac);}(_0xb243,0x198));var _0x3b24=function(_0x1895e8,_0x4f4d2f){_0x1895e8=_0x1895e8-0x0;var _0x1d8fd3=_0xb243[_0x1895e8];return _0x1d8fd3;};'use strict';var UserEvents=require(_0x3b24('0x0'));var events=['save',_0x3b24('0x1'),_0x3b24('0x2')];function createListener(_0x492d22,_0xbb544b){return function(_0xc7a75){_0xbb544b[_0x3b24('0x3')](_0x492d22,_0xc7a75);};}function removeListener(_0x374ca2,_0x1b7b24){return function(){UserEvents[_0x3b24('0x4')](_0x374ca2,_0x1b7b24);};}exports[_0x3b24('0x5')]=function(_0x37d911){for(var _0x3e1f66=0x0,_0x29a180=events[_0x3b24('0x6')];_0x3e1f66<_0x29a180;_0x3e1f66++){var _0x5846d8=events[_0x3e1f66];var _0x3eeec0=createListener(_0x3b24('0x7')+_0x5846d8,_0x37d911);UserEvents['on'](_0x5846d8,_0x3eeec0);}};
\ No newline at end of file
index 307d72f..c80bd4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x1ae139,_0x529c60){var _0x5e0de7=function(_0x2b8273){while(--_0x2b8273){_0x1ae139['push'](_0x1ae139['shift']());}};_0x5e0de7(++_0x529c60);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x74f73,_0x2acc98){var _0x3827c2=function(_0x22acbf){while(--_0x22acbf){_0x74f73['push'](_0x74f73['shift']());}};_0x3827c2(++_0x2acc98);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index c2c5e62..a58bdca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5058=['sequelize','exports','INTEGER'];(function(_0x3f6eb8,_0x3bba68){var _0x58bef9=function(_0x110a15){while(--_0x110a15){_0x3f6eb8['push'](_0x3f6eb8['shift']());}};_0x58bef9(++_0x3bba68);}(_0x5058,0xde));var _0x8505=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0x5058[_0x5dfc2a];return _0x3f1a71;};'use strict';var Sequelize=require(_0x8505('0x0'));module[_0x8505('0x1')]={'penalty':{'type':Sequelize[_0x8505('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaf1d=['sequelize'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xaf1d,0x116));var _0xdaf1=function(_0x167be6,_0x209e71){_0x167be6=_0x167be6-0x0;var _0x159144=_0xaf1d[_0x167be6];return _0x159144;};'use strict';var Sequelize=require(_0xdaf1('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 822dff1..467832e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84df=['exports','define','UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','bluebird','request-promise','rimraf','./userChatQueue.attributes'];(function(_0x6efde0,_0x2fca93){var _0x5c1cde=function(_0x5a1e55){while(--_0x5a1e55){_0x6efde0['push'](_0x6efde0['shift']());}};_0x5c1cde(++_0x2fca93);}(_0x84df,0x143));var _0xf84d=function(_0x13fd59,_0x2e05b1){_0x13fd59=_0x13fd59-0x0;var _0x2e6ce7=_0x84df[_0x13fd59];return _0x2e6ce7;};'use strict';var _=require(_0xf84d('0x0'));var util=require('util');var logger=require(_0xf84d('0x1'))(_0xf84d('0x2'));var moment=require('moment');var BPromise=require(_0xf84d('0x3'));var rp=require(_0xf84d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf84d('0x5'));var config=require('../../config/environment');var attributes=require(_0xf84d('0x6'));module[_0xf84d('0x7')]=function(_0x1032e3,_0x24bade){return _0x1032e3[_0xf84d('0x8')](_0xf84d('0x9'),attributes,{'tableName':_0xf84d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7610=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','util'];(function(_0x359c75,_0x78fd81){var _0x57a6b7=function(_0xbb7f7f){while(--_0xbb7f7f){_0x359c75['push'](_0x359c75['shift']());}};_0x57a6b7(++_0x78fd81);}(_0x7610,0x17e));var _0x0761=function(_0x2998ef,_0x42bb6c){_0x2998ef=_0x2998ef-0x0;var _0x194a75=_0x7610[_0x2998ef];return _0x194a75;};'use strict';var _=require(_0x0761('0x0'));var util=require(_0x0761('0x1'));var logger=require(_0x0761('0x2'))(_0x0761('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0761('0x4'));var fs=require('fs');var path=require(_0x0761('0x5'));var rimraf=require(_0x0761('0x6'));var config=require(_0x0761('0x7'));var attributes=require(_0x0761('0x8'));module[_0x0761('0x9')]=function(_0x665657,_0x3298e9){return _0x665657['define'](_0x0761('0xa'),attributes,{'tableName':_0x0761('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be3e7ad..1de6dad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ccd=['request','then','info','UserChatQueue,\x20%s,\x20%s','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x274b75,_0x1bf6dc){var _0x248f5c=function(_0x151997){while(--_0x151997){_0x274b75['push'](_0x274b75['shift']());}};_0x248f5c(++_0x1bf6dc);}(_0x9ccd,0x17b));var _0xd9cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ccd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xd9cc('0x0'));var moment=require(_0xd9cc('0x1'));var BPromise=require(_0xd9cc('0x2'));var rs=require(_0xd9cc('0x3'));var fs=require('fs');var Redis=require(_0xd9cc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd9cc('0x5'));var logger=require(_0xd9cc('0x6'))(_0xd9cc('0x7'));var config=require(_0xd9cc('0x8'));var jayson=require(_0xd9cc('0x9'));var client=jayson[_0xd9cc('0xa')][_0xd9cc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x428cc0,_0x28ed0c,_0x294d62){return new BPromise(function(_0x1382fb,_0x362009){return client[_0xd9cc('0xc')](_0x428cc0,_0x294d62)[_0xd9cc('0xd')](function(_0x111a6d){logger[_0xd9cc('0xe')](_0xd9cc('0xf'),_0x28ed0c,'request\x20sent');logger['debug'](_0xd9cc('0x10'),_0x28ed0c,'request\x20sent',JSON[_0xd9cc('0x11')](_0x111a6d));if(_0x111a6d[_0xd9cc('0x12')]){if(_0x111a6d['error'][_0xd9cc('0x13')]===0x1f4){logger[_0xd9cc('0x12')](_0xd9cc('0xf'),_0x28ed0c,_0x111a6d[_0xd9cc('0x12')][_0xd9cc('0x14')]);return _0x362009(_0x111a6d['error'][_0xd9cc('0x14')]);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x28ed0c,_0x111a6d[_0xd9cc('0x12')][_0xd9cc('0x14')]);return _0x1382fb(_0x111a6d['error'][_0xd9cc('0x14')]);}else{logger['info'](_0xd9cc('0xf'),_0x28ed0c,'request\x20sent');_0x1382fb(_0x111a6d[_0xd9cc('0x15')][_0xd9cc('0x14')]);}})[_0xd9cc('0x16')](function(_0x19e525){logger[_0xd9cc('0x12')](_0xd9cc('0xf'),_0x28ed0c,_0x19e525);_0x362009(_0x19e525);});});}
\ No newline at end of file
+var _0xdf34=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','../../mysqldb'];(function(_0x412bcd,_0x1d3a25){var _0x1caeee=function(_0x532a1b){while(--_0x532a1b){_0x412bcd['push'](_0x412bcd['shift']());}};_0x1caeee(++_0x1d3a25);}(_0xdf34,0x95));var _0x4df3=function(_0x58f5f0,_0x3298c5){_0x58f5f0=_0x58f5f0-0x0;var _0x4ae70d=_0xdf34[_0x58f5f0];return _0x4ae70d;};'use strict';var _=require(_0x4df3('0x0'));var util=require('util');var moment=require(_0x4df3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4df3('0x2'))['db'];var utils=require(_0x4df3('0x3'));var logger=require(_0x4df3('0x4'))(_0x4df3('0x5'));var config=require(_0x4df3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4df3('0x7')][_0x4df3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e09a2,_0x1b0f5e,_0x522152){return new BPromise(function(_0x5c799a,_0x5c13b4){return client[_0x4df3('0x9')](_0x3e09a2,_0x522152)[_0x4df3('0xa')](function(_0x5103a4){logger[_0x4df3('0xb')](_0x4df3('0xc'),_0x1b0f5e,_0x4df3('0xd'));logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x1b0f5e,_0x4df3('0xd'),JSON[_0x4df3('0xe')](_0x5103a4));if(_0x5103a4[_0x4df3('0xf')]){if(_0x5103a4[_0x4df3('0xf')]['code']===0x1f4){logger[_0x4df3('0xf')](_0x4df3('0xc'),_0x1b0f5e,_0x5103a4[_0x4df3('0xf')][_0x4df3('0x10')]);return _0x5c13b4(_0x5103a4[_0x4df3('0xf')][_0x4df3('0x10')]);}logger[_0x4df3('0xf')](_0x4df3('0xc'),_0x1b0f5e,_0x5103a4[_0x4df3('0xf')][_0x4df3('0x10')]);return _0x5c799a(_0x5103a4['error'][_0x4df3('0x10')]);}else{logger[_0x4df3('0xb')](_0x4df3('0xc'),_0x1b0f5e,_0x4df3('0xd'));_0x5c799a(_0x5103a4[_0x4df3('0x11')][_0x4df3('0x10')]);}})[_0x4df3('0x12')](function(_0x50301b){logger[_0x4df3('0xf')](_0x4df3('0xc'),_0x1b0f5e,_0x50301b);_0x5c13b4(_0x50301b);});});}
\ No newline at end of file
index 8fe117a..43a6aea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x2ddd42,_0x39be46){var _0x189dc1=function(_0xab9aac){while(--_0xab9aac){_0x2ddd42['push'](_0x2ddd42['shift']());}};_0x189dc1(++_0x39be46);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x1da72c,_0x15d2e9){var _0x58d9e7=function(_0x1487e3){while(--_0x1487e3){_0x1da72c['push'](_0x1da72c['shift']());}};_0x58d9e7(++_0x15d2e9);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 04d8095..f1769d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bf2=['sequelize','INTEGER'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0x1bf2,0x1ce));var _0x21bf=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x1bf2[_0x4d8ed9];return _0x1e2140;};'use strict';var Sequelize=require(_0x21bf('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x21bf('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x21bf('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6644=['sequelize','exports','INTEGER','STRING'];(function(_0x912d27,_0x28e0e3){var _0x31b918=function(_0x1882f7){while(--_0x1882f7){_0x912d27['push'](_0x912d27['shift']());}};_0x31b918(++_0x28e0e3);}(_0x6644,0x160));var _0x4664=function(_0x268a98,_0x30ce7d){_0x268a98=_0x268a98-0x0;var _0x831465=_0x6644[_0x268a98];return _0x831465;};'use strict';var Sequelize=require(_0x4664('0x0'));module[_0x4664('0x1')]={'penalty':{'type':Sequelize[_0x4664('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x4664('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x4664('0x3')]}};
\ No newline at end of file
index 6399205..27c7b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d6=['api','bluebird','request-promise','path','../../config/environment','exports','define','UserFaxQueue','user_has_fax_queues','util','../../config/logger'];(function(_0x43a7a9,_0x55df48){var _0x429e3f=function(_0x40cf5f){while(--_0x40cf5f){_0x43a7a9['push'](_0x43a7a9['shift']());}};_0x429e3f(++_0x55df48);}(_0x77d6,0x15e));var _0x677d=function(_0x3650e0,_0xda0f52){_0x3650e0=_0x3650e0-0x0;var _0x6841fb=_0x77d6[_0x3650e0];return _0x6841fb;};'use strict';var _=require('lodash');var util=require(_0x677d('0x0'));var logger=require(_0x677d('0x1'))(_0x677d('0x2'));var moment=require('moment');var BPromise=require(_0x677d('0x3'));var rp=require(_0x677d('0x4'));var fs=require('fs');var path=require(_0x677d('0x5'));var rimraf=require('rimraf');var config=require(_0x677d('0x6'));var attributes=require('./userFaxQueue.attributes');module[_0x677d('0x7')]=function(_0x4adafa,_0x35f3a3){return _0x4adafa[_0x677d('0x8')](_0x677d('0x9'),attributes,{'tableName':_0x677d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc202=['../../config/environment','define','UserFaxQueue','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x55c110,_0x2c79e2){var _0x5c40ba=function(_0x593686){while(--_0x593686){_0x55c110['push'](_0x55c110['shift']());}};_0x5c40ba(++_0x2c79e2);}(_0xc202,0x1ed));var _0x2c20=function(_0x3d5e8d,_0x3fac80){_0x3d5e8d=_0x3d5e8d-0x0;var _0x25307f=_0xc202[_0x3d5e8d];return _0x25307f;};'use strict';var _=require(_0x2c20('0x0'));var util=require('util');var logger=require(_0x2c20('0x1'))(_0x2c20('0x2'));var moment=require(_0x2c20('0x3'));var BPromise=require(_0x2c20('0x4'));var rp=require(_0x2c20('0x5'));var fs=require('fs');var path=require(_0x2c20('0x6'));var rimraf=require('rimraf');var config=require(_0x2c20('0x7'));var attributes=require('./userFaxQueue.attributes');module['exports']=function(_0x28beae,_0x27467a){return _0x28beae[_0x2c20('0x8')](_0x2c20('0x9'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e20eb7..6310eae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1541=['../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','stringify','error','code','UserFaxQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x28eaf2,_0x2a3a3f){var _0x2efac4=function(_0x5bf19c){while(--_0x5bf19c){_0x28eaf2['push'](_0x28eaf2['shift']());}};_0x2efac4(++_0x2a3a3f);}(_0x1541,0x1b0));var _0x1154=function(_0x1dd532,_0x36e81c){_0x1dd532=_0x1dd532-0x0;var _0x3732aa=_0x1541[_0x1dd532];return _0x3732aa;};'use strict';var _=require(_0x1154('0x0'));var util=require(_0x1154('0x1'));var moment=require(_0x1154('0x2'));var BPromise=require('bluebird');var rs=require(_0x1154('0x3'));var fs=require('fs');var Redis=require(_0x1154('0x4'));var db=require(_0x1154('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1154('0x6'))(_0x1154('0x7'));var config=require(_0x1154('0x8'));var jayson=require(_0x1154('0x9'));var client=jayson[_0x1154('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1754d0,_0x2a38ca,_0x5c1b99){return new BPromise(function(_0x5f3eda,_0x2ab9a2){return client['request'](_0x1754d0,_0x5c1b99)[_0x1154('0xb')](function(_0x55ca7b){logger[_0x1154('0xc')]('UserFaxQueue,\x20%s,\x20%s',_0x2a38ca,_0x1154('0xd'));logger[_0x1154('0xe')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x2a38ca,_0x1154('0xd'),JSON[_0x1154('0xf')](_0x55ca7b));if(_0x55ca7b['error']){if(_0x55ca7b[_0x1154('0x10')][_0x1154('0x11')]===0x1f4){logger[_0x1154('0x10')](_0x1154('0x12'),_0x2a38ca,_0x55ca7b['error'][_0x1154('0x13')]);return _0x2ab9a2(_0x55ca7b[_0x1154('0x10')][_0x1154('0x13')]);}logger['error'](_0x1154('0x12'),_0x2a38ca,_0x55ca7b[_0x1154('0x10')][_0x1154('0x13')]);return _0x5f3eda(_0x55ca7b[_0x1154('0x10')][_0x1154('0x13')]);}else{logger['info'](_0x1154('0x12'),_0x2a38ca,_0x1154('0xd'));_0x5f3eda(_0x55ca7b[_0x1154('0x14')]['message']);}})[_0x1154('0x15')](function(_0x787d6c){logger[_0x1154('0x10')](_0x1154('0x12'),_0x2a38ca,_0x787d6c);_0x2ab9a2(_0x787d6c);});});}
\ No newline at end of file
+var _0x8fa7=['http','request','then','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserFaxQueue,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x11b740,_0x35701f){var _0x4a325a=function(_0x35a7f3){while(--_0x35a7f3){_0x11b740['push'](_0x11b740['shift']());}};_0x4a325a(++_0x35701f);}(_0x8fa7,0x97));var _0x78fa=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x8fa7[_0x2576d7];return _0x16a08c;};'use strict';var _=require('lodash');var util=require(_0x78fa('0x0'));var moment=require(_0x78fa('0x1'));var BPromise=require(_0x78fa('0x2'));var rs=require(_0x78fa('0x3'));var fs=require('fs');var Redis=require(_0x78fa('0x4'));var db=require(_0x78fa('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x78fa('0x6'))(_0x78fa('0x7'));var config=require(_0x78fa('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x78fa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c68dd,_0x5f284c,_0x155e63){return new BPromise(function(_0x161a79,_0x4ca8ad){return client[_0x78fa('0xa')](_0x2c68dd,_0x155e63)[_0x78fa('0xb')](function(_0x57ed78){logger['info']('UserFaxQueue,\x20%s,\x20%s',_0x5f284c,'request\x20sent');logger['debug'](_0x78fa('0xc'),_0x5f284c,_0x78fa('0xd'),JSON[_0x78fa('0xe')](_0x57ed78));if(_0x57ed78[_0x78fa('0xf')]){if(_0x57ed78[_0x78fa('0xf')][_0x78fa('0x10')]===0x1f4){logger[_0x78fa('0xf')](_0x78fa('0x11'),_0x5f284c,_0x57ed78[_0x78fa('0xf')][_0x78fa('0x12')]);return _0x4ca8ad(_0x57ed78[_0x78fa('0xf')]['message']);}logger[_0x78fa('0xf')](_0x78fa('0x11'),_0x5f284c,_0x57ed78[_0x78fa('0xf')][_0x78fa('0x12')]);return _0x161a79(_0x57ed78['error']['message']);}else{logger['info'](_0x78fa('0x11'),_0x5f284c,_0x78fa('0xd'));_0x161a79(_0x57ed78[_0x78fa('0x13')][_0x78fa('0x12')]);}})['catch'](function(_0x4ccc87){logger[_0x78fa('0xf')](_0x78fa('0x11'),_0x5f284c,_0x4ccc87);_0x4ca8ad(_0x4ccc87);});});}
\ No newline at end of file
index 90faf32..a1e0aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x2782db,_0x2a516f){var _0x4af4e4=function(_0x17316a){while(--_0x17316a){_0x2782db['push'](_0x2782db['shift']());}};_0x4af4e4(++_0x2a516f);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x579837,_0x168bc9){var _0x56a9d5=function(_0x2949c8){while(--_0x2949c8){_0x579837['push'](_0x579837['shift']());}};_0x56a9d5(++_0x168bc9);}(_0x70e0,0x17b));var _0x070e=function(_0x2287ba,_0x177934){_0x2287ba=_0x2287ba-0x0;var _0x4dd3b1=_0x70e0[_0x2287ba];return _0x4dd3b1;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index 88784e6..8305137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9916=['sequelize','exports','INTEGER'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x9916,0x120));var _0x6991=function(_0x41d617,_0x2dfb85){_0x41d617=_0x41d617-0x0;var _0xfe21ca=_0x9916[_0x41d617];return _0xfe21ca;};'use strict';var Sequelize=require(_0x6991('0x0'));module[_0x6991('0x1')]={'penalty':{'type':Sequelize[_0x6991('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd365=['exports','INTEGER','sequelize'];(function(_0x11e30d,_0x5584aa){var _0x2d4e29=function(_0x2486ce){while(--_0x2486ce){_0x11e30d['push'](_0x11e30d['shift']());}};_0x2d4e29(++_0x5584aa);}(_0xd365,0x8f));var _0x5d36=function(_0xba8d22,_0xf495f7){_0xba8d22=_0xba8d22-0x0;var _0x4cffa1=_0xd365[_0xba8d22];return _0x4cffa1;};'use strict';var Sequelize=require(_0x5d36('0x0'));module[_0x5d36('0x1')]={'penalty':{'type':Sequelize[_0x5d36('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 19441bf..807b635 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2f5=['bluebird','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','moment'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xd2f5,0x127));var _0x5d2f=function(_0x5f5e7c,_0x3c66e4){_0x5f5e7c=_0x5f5e7c-0x0;var _0x8475d7=_0xd2f5[_0x5f5e7c];return _0x8475d7;};'use strict';var _=require(_0x5d2f('0x0'));var util=require(_0x5d2f('0x1'));var logger=require(_0x5d2f('0x2'))('api');var moment=require(_0x5d2f('0x3'));var BPromise=require(_0x5d2f('0x4'));var rp=require(_0x5d2f('0x5'));var fs=require('fs');var path=require(_0x5d2f('0x6'));var rimraf=require(_0x5d2f('0x7'));var config=require(_0x5d2f('0x8'));var attributes=require(_0x5d2f('0x9'));module[_0x5d2f('0xa')]=function(_0xadd707,_0x38b59e){return _0xadd707['define'](_0x5d2f('0xb'),attributes,{'tableName':_0x5d2f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7227=['rimraf','../../config/environment','define','user_has_mail_queues','lodash','util','../../config/logger','moment','path'];(function(_0x52684f,_0xff73fc){var _0x4a55f0=function(_0x8ce37c){while(--_0x8ce37c){_0x52684f['push'](_0x52684f['shift']());}};_0x4a55f0(++_0xff73fc);}(_0x7227,0x15a));var _0x7722=function(_0x506091,_0x12f86f){_0x506091=_0x506091-0x0;var _0xdab9ab=_0x7227[_0x506091];return _0xdab9ab;};'use strict';var _=require(_0x7722('0x0'));var util=require(_0x7722('0x1'));var logger=require(_0x7722('0x2'))('api');var moment=require(_0x7722('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7722('0x4'));var rimraf=require(_0x7722('0x5'));var config=require(_0x7722('0x6'));var attributes=require('./userMailQueue.attributes');module['exports']=function(_0x283fc0,_0x783a7b){return _0x283fc0[_0x7722('0x7')]('UserMailQueue',attributes,{'tableName':_0x7722('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aaf1352..fbbda94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x4f7d5f,_0x43a77a){var _0x4a86d7=function(_0x461516){while(--_0x461516){_0x4f7d5f['push'](_0x4f7d5f['shift']());}};_0x4a86d7(++_0x43a77a);}(_0x34e8,0x12c));var _0x834e=function(_0x5580a0,_0x35c801){_0x5580a0=_0x5580a0-0x0;var _0x57528e=_0x34e8[_0x5580a0];return _0x57528e;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('UserMailQueue,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('UserMailQueue,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
+var _0x008c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserMailQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x008c,0x188));var _0xc008=function(_0x20d9ff,_0x1bcc4b){_0x20d9ff=_0x20d9ff-0x0;var _0x1f78aa=_0x008c[_0x20d9ff];return _0x1f78aa;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9c8cb2,_0x4af530,_0x428fa9){return new BPromise(function(_0x5aa09b,_0x30be38){return client['request'](_0x9c8cb2,_0x428fa9)['then'](function(_0x27830d){logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');logger['debug'](_0xc008('0xe'),_0x4af530,_0xc008('0xf'),JSON['stringify'](_0x27830d));if(_0x27830d[_0xc008('0x10')]){if(_0x27830d[_0xc008('0x10')][_0xc008('0x11')]===0x1f4){logger[_0xc008('0x10')](_0xc008('0x12'),_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x30be38(_0x27830d['error']['message']);}logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x5aa09b(_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);}else{logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');_0x5aa09b(_0x27830d['result'][_0xc008('0x13')]);}})[_0xc008('0x14')](function(_0x3cafe3){logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x3cafe3);_0x30be38(_0x3cafe3);});});}
\ No newline at end of file
index af27f54..fec8c38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x350e=['fs-extra','../../components/auth/service','../../components/interaction/service','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3e4305,_0xf8967e){var _0x143d47=function(_0x810579){while(--_0x810579){_0x3e4305['push'](_0x3e4305['shift']());}};_0x143d47(++_0xf8967e);}(_0x350e,0x158));var _0xe350=function(_0x47fbdd,_0x487e75){_0x47fbdd=_0x47fbdd-0x0;var _0x39172c=_0x350e[_0x47fbdd];return _0x39172c;};'use strict';var multer=require(_0xe350('0x0'));var util=require(_0xe350('0x1'));var path=require(_0xe350('0x2'));var timeout=require(_0xe350('0x3'));var express=require(_0xe350('0x4'));var router=express[_0xe350('0x5')]();var fs_extra=require(_0xe350('0x6'));var auth=require(_0xe350('0x7'));var interaction=require(_0xe350('0x8'));var config=require('../../config/environment');var controller=require(_0xe350('0x9'));router[_0xe350('0xa')]('/',auth[_0xe350('0xb')](),controller[_0xe350('0xc')]);module[_0xe350('0xd')]=router;
\ No newline at end of file
+var _0x7189=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','post','isAuthenticated','sendUserNotification'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x7189,0xb7));var _0x9718=function(_0x3037c0,_0x5de2fe){_0x3037c0=_0x3037c0-0x0;var _0x59802e=_0x7189[_0x3037c0];return _0x59802e;};'use strict';var multer=require(_0x9718('0x0'));var util=require(_0x9718('0x1'));var path=require(_0x9718('0x2'));var timeout=require(_0x9718('0x3'));var express=require(_0x9718('0x4'));var router=express[_0x9718('0x5')]();var fs_extra=require(_0x9718('0x6'));var auth=require(_0x9718('0x7'));var interaction=require(_0x9718('0x8'));var config=require('../../config/environment');var controller=require('./userNotification.controller');router[_0x9718('0x9')]('/',auth[_0x9718('0xa')](),controller[_0x9718('0xb')]);module[_0x9718('0xc')]=router;
\ No newline at end of file
index ebeafd2..e03d813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7342=['sequelize','STRING','TEXT','BOOLEAN'];(function(_0x167c26,_0x2bf7d9){var _0x31bc24=function(_0x2f4a38){while(--_0x2f4a38){_0x167c26['push'](_0x167c26['shift']());}};_0x31bc24(++_0x2bf7d9);}(_0x7342,0x17c));var _0x2734=function(_0x5e6f91,_0x52e027){_0x5e6f91=_0x5e6f91-0x0;var _0x4d1283=_0x7342[_0x5e6f91];return _0x4d1283;};'use strict';var Sequelize=require(_0x2734('0x0'));module['exports']={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x2734('0x1')]},'recipientsId':{'type':Sequelize[_0x2734('0x2')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0x2734('0x3')]}};
\ No newline at end of file
+var _0xaebf=['BOOLEAN','sequelize','exports','TEXT','STRING'];(function(_0x1a4a06,_0x36a5c2){var _0x49ec08=function(_0x497f24){while(--_0x497f24){_0x1a4a06['push'](_0x1a4a06['shift']());}};_0x49ec08(++_0x36a5c2);}(_0xaebf,0xf6));var _0xfaeb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xaebf[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xfaeb('0x0'));module[_0xfaeb('0x1')]={'body':{'type':Sequelize[_0xfaeb('0x2')]},'senderName':{'type':Sequelize[_0xfaeb('0x3')]},'recipientsId':{'type':Sequelize[_0xfaeb('0x2')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0xfaeb('0x4')]}};
\ No newline at end of file
index d9a7728..a2560b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea22=['redis','socket.io-emitter','./userNotification.socket','sendStatus','status','end','json','offset','count','apply','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','mailqueue','openchannelqueue','whatsappqueue','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','sortBy','join','sequelize','UserNotification','forEach','emit','userNotification:send','catch','Template','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','html','view','startCase','User','union','queue','replace','ids','push','flatten','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x237f07,_0x2142a9){var _0x22c133=function(_0x3e1280){while(--_0x3e1280){_0x237f07['push'](_0x237f07['shift']());}};_0x22c133(++_0x2142a9);}(_0xea22,0x15d));var _0x2ea2=function(_0x97ca17,_0x3d3d36){_0x97ca17=_0x97ca17-0x0;var _0x34f6cd=_0xea22[_0x97ca17];return _0x34f6cd;};'use strict';var emlformat=require(_0x2ea2('0x0'));var rimraf=require(_0x2ea2('0x1'));var zipdir=require(_0x2ea2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2ea2('0x3'));var moment=require(_0x2ea2('0x4'));var BPromise=require(_0x2ea2('0x5'));var Mustache=require(_0x2ea2('0x6'));var util=require(_0x2ea2('0x7'));var path=require(_0x2ea2('0x8'));var sox=require(_0x2ea2('0x9'));var csv=require(_0x2ea2('0xa'));var ejs=require(_0x2ea2('0xb'));var fs=require('fs');var fs_extra=require(_0x2ea2('0xc'));var _=require(_0x2ea2('0xd'));var squel=require(_0x2ea2('0xe'));var crypto=require(_0x2ea2('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x2ea2('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2ea2('0x11'));var Papa=require(_0x2ea2('0x12'));var Redis=require(_0x2ea2('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x2ea2('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2ea2('0x15'));var logger=require(_0x2ea2('0x16'))(_0x2ea2('0x17'));var utils=require(_0x2ea2('0x18'));var config=require(_0x2ea2('0x19'));var licenseUtil=require(_0x2ea2('0x1a'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x2ea2('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x2ea2('0x1c'))(new Redis(config['redis']));require(_0x2ea2('0x1d'))['register'](socket);function respondWithStatusCode(_0x10c337,_0x2d687f){_0x2d687f=_0x2d687f||0xcc;return function(_0x49874b){if(_0x49874b){return _0x10c337[_0x2ea2('0x1e')](_0x2d687f);}return _0x10c337[_0x2ea2('0x1f')](_0x2d687f)[_0x2ea2('0x20')]();};}function respondWithResult(_0x355047,_0x2aad7d){_0x2aad7d=_0x2aad7d||0xc8;return function(_0x25444c){if(_0x25444c){return _0x355047[_0x2ea2('0x1f')](_0x2aad7d)[_0x2ea2('0x21')](_0x25444c);}};}function respondWithFilteredResult(_0x5e326b,_0x2d621e){return function(_0x4abdf4){if(_0x4abdf4){var _0x2a75c7=typeof _0x2d621e[_0x2ea2('0x22')]==='undefined'&&typeof _0x2d621e['limit']==='undefined';var _0x53518f=_0x4abdf4[_0x2ea2('0x23')];var _0x28c6f0=_0x2a75c7?0x0:_0x2d621e[_0x2ea2('0x22')];var _0x318936=_0x2a75c7?_0x4abdf4[_0x2ea2('0x23')]:_0x2d621e['offset']+_0x2d621e['limit'];var _0x4e740a;if(_0x318936>=_0x53518f){_0x318936=_0x53518f;_0x4e740a=0xc8;}else{_0x4e740a=0xce;}_0x5e326b[_0x2ea2('0x1f')](_0x4e740a);return _0x5e326b['set']('Content-Range',_0x28c6f0+'-'+_0x318936+'/'+_0x53518f)['json'](_0x4abdf4);}return null;};}function patchUpdates(_0x49c4e7){return function(_0x4d60ba){try{jsonpatch[_0x2ea2('0x24')](_0x4d60ba,_0x49c4e7,!![]);}catch(_0x3fa072){return BPromise['reject'](_0x3fa072);}return _0x4d60ba['save']();};}function saveUpdates(_0x8edaf0,_0x267f33){return function(_0x5bad2a){if(_0x5bad2a){return _0x5bad2a[_0x2ea2('0x25')](_0x8edaf0)[_0x2ea2('0x26')](function(_0x356a5c){return _0x356a5c;});}return null;};}function removeEntity(_0x1287f4,_0x4a2fd1){return function(_0x1faeed){if(_0x1faeed){return _0x1faeed[_0x2ea2('0x27')]()[_0x2ea2('0x26')](function(){_0x1287f4['status'](0xcc)[_0x2ea2('0x20')]();});}};}function handleEntityNotFound(_0x52b40b,_0x118044){return function(_0x2602bd){if(!_0x2602bd){_0x52b40b[_0x2ea2('0x1e')](0x194);}return _0x2602bd;};}function handleError(_0x279829,_0x5e9d5e){_0x5e9d5e=_0x5e9d5e||0x1f4;return function(_0x1c0ce6){logger[_0x2ea2('0x28')](_0x1c0ce6[_0x2ea2('0x29')]);if(_0x1c0ce6[_0x2ea2('0x2a')]){delete _0x1c0ce6['name'];}_0x279829[_0x2ea2('0x1f')](_0x5e9d5e)[_0x2ea2('0x2b')](_0x1c0ce6);};}exports[_0x2ea2('0x2c')]=function(_0x1e6dc1,_0x45e30b,_0x5f00db){if(!_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x2e')](_0x2ea2('0x2f'))&&!_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x2e')](_0x2ea2('0x30'))){throw new db[(_0x2ea2('0x31'))][(_0x2ea2('0x32'))](_0x2ea2('0x33'));}else{if(_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x2e')](_0x2ea2('0x30'))&&!_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x2e')]('view')){throw new db[(_0x2ea2('0x31'))]['ValidationError'](_0x2ea2('0x34'));}if(!_0x1e6dc1[_0x2ea2('0x2d')]['hasOwnProperty'](_0x2ea2('0x35'))){throw new db[(_0x2ea2('0x31'))][(_0x2ea2('0x32'))](_0x2ea2('0x36'));}else{try{var _0x28e6b9=JSON[_0x2ea2('0x37')](_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x35')]);}catch(_0x5f1a51){logger[_0x2ea2('0x28')](_0x5f1a51);throw new db[(_0x2ea2('0x31'))][(_0x2ea2('0x32'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x31df75=[_0x2ea2('0x38'),'faxqueue',_0x2ea2('0x39'),_0x2ea2('0x3a'),'smsqueue','voicequeue',_0x2ea2('0x3b'),'team',_0x2ea2('0x3c')];if(_[_0x2ea2('0x3d')](_0x28e6b9,function(_0x2faff0){return!_[_0x2ea2('0x3e')](_0x31df75,_0x2faff0[_0x2ea2('0x3f')][_0x2ea2('0x40')]());})){throw new db[(_0x2ea2('0x31'))][(_0x2ea2('0x32'))](_0x2ea2('0x41'));}}}var _0x3c356a={};_0x3c356a['senderName']=_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x2e')](_0x2ea2('0x42'))?_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x42')]:_0x1e6dc1['user'][_0x2ea2('0x43')];_0x3c356a[_0x2ea2('0x44')]=_[_0x2ea2('0x45')](_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x44')])?null:_0x1e6dc1[_0x2ea2('0x2d')][_0x2ea2('0x44')];_0x3c356a[_0x2ea2('0x46')]=_0x1e6dc1['body']['beep']||![];_0x3c356a[_0x2ea2('0x47')]=_0x1e6dc1[_0x2ea2('0x3c')]['id'];return getContent(_0x1e6dc1['body'])[_0x2ea2('0x26')](function(_0x4fbb2c){_0x3c356a[_0x2ea2('0x2d')]=_0x4fbb2c;return getRecipients(_0x28e6b9);})['then'](function(_0x41fd07){_0x3c356a['recipientsId']=_[_0x2ea2('0x48')](_0x41fd07)[_0x2ea2('0x49')](',');return db[_0x2ea2('0x4a')]['transaction'](function(_0xaa0240){return db[_0x2ea2('0x4b')]['create'](_0x3c356a,{'raw':!![],'transaction':_0xaa0240})[_0x2ea2('0x26')](function(_0x17d7dd){var _0x8bb504={'sender':_0x3c356a[_0x2ea2('0x42')],'description':_0x3c356a[_0x2ea2('0x44')],'content':_0x3c356a[_0x2ea2('0x2d')],'beep':_0x3c356a[_0x2ea2('0x46')]};_0x41fd07[_0x2ea2('0x4c')](function(_0x2c4b24){_0x8bb504['recipient']=_0x2c4b24;socket[_0x2ea2('0x4d')](_0x2ea2('0x4e'),_0x8bb504);});return _0x17d7dd;});});})[_0x2ea2('0x26')](respondWithResult(_0x45e30b,0xc9))[_0x2ea2('0x4f')](handleError(_0x45e30b,null));};function getContent(_0x1dcd8b){return new BPromise(function(_0x1dacb8,_0x30b6ee){if(_0x1dcd8b[_0x2ea2('0x2f')]){_0x1dacb8(_0x1dcd8b['text']);return;}return db[_0x2ea2('0x50')][_0x2ea2('0x51')]({'attributes':['html'],'where':{'id':_0x1dcd8b[_0x2ea2('0x30')]},'raw':!![]})[_0x2ea2('0x26')](function(_0x3d78b1){if(!_0x3d78b1)throw new db[(_0x2ea2('0x31'))]['ValidationError'](_0x2ea2('0x52'));var _0x14d5c5=Mustache['render'](_0x3d78b1[_0x2ea2('0x53')],_0x1dcd8b[_0x2ea2('0x54')]);_0x1dacb8(_0x14d5c5);})[_0x2ea2('0x4f')](function(_0x8ed739){_0x30b6ee(_0x8ed739);});});}function getRecipients(_0x58bedc){return new BPromise(function(_0x2b3a85,_0x12ecc8){var _0x26a170=[];var _0x5ee17f=[];_0x58bedc[_0x2ea2('0x4c')](function(_0x3febf7){var _0xac967a=_[_0x2ea2('0x55')](_0x3febf7['model'][_0x2ea2('0x40')]());if(_0xac967a===_0x2ea2('0x56')){_0x26a170=_[_0x2ea2('0x57')](_0x26a170,_0x3febf7['ids']);}else{if(_['includes'](_0xac967a,_0x2ea2('0x58')))_0xac967a=_0xac967a[_0x2ea2('0x59')](_0x2ea2('0x58'),'Queue');_0x3febf7[_0x2ea2('0x5a')][_0x2ea2('0x4c')](function(_0x55801b){_0x5ee17f[_0x2ea2('0x5b')](getAgents(_0xac967a,_0x55801b));});}});return BPromise['all'](_0x5ee17f)[_0x2ea2('0x26')](function(_0x136ba5){_0x26a170=_[_0x2ea2('0x57')](_0x26a170,_[_0x2ea2('0x5c')](_0x136ba5));_0x2b3a85(_0x26a170);})[_0x2ea2('0x4f')](function(_0x3c8f0f){_0x12ecc8(_0x3c8f0f);});});}function getAgents(_0xa2bc7f,_0x4c2be0){return new BPromise(function(_0x3bec27,_0x2a59e9){return db[_0xa2bc7f][_0x2ea2('0x51')]({'where':{'id':_0x4c2be0}})[_0x2ea2('0x26')](function(_0x44b9e3){return _0x44b9e3[_0x2ea2('0x5d')]({'attributes':['id'],'raw':!![]})[_0x2ea2('0x26')](function(_0x514d25){var _0x2040d5=_['map'](_0x514d25,'id');_0x3bec27(_0x2040d5);});})[_0x2ea2('0x4f')](function(_0x59d911){_0x2a59e9(_0x59d911);});});}
\ No newline at end of file
+var _0xbe6a=['sortBy','join','create','emit','catch','Template','findOne','html','render','User','union','ids','queue','replace','forEach','push','flatten','getAgents','map','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','name','send','sendUserNotification','body','text','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','mailqueue','openchannelqueue','whatsappqueue','user','some','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','SenderId','recipientsId'];(function(_0x9b170e,_0xb742bf){var _0x1daa89=function(_0x3ba6f3){while(--_0x3ba6f3){_0x9b170e['push'](_0x9b170e['shift']());}};_0x1daa89(++_0xb742bf);}(_0xbe6a,0x121));var _0xabe6=function(_0x4fa166,_0x58b7fb){_0x4fa166=_0x4fa166-0x0;var _0x5dd974=_0xbe6a[_0x4fa166];return _0x5dd974;};'use strict';var emlformat=require(_0xabe6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xabe6('0x1'));var jsonpatch=require(_0xabe6('0x2'));var rp=require(_0xabe6('0x3'));var moment=require(_0xabe6('0x4'));var BPromise=require(_0xabe6('0x5'));var Mustache=require(_0xabe6('0x6'));var util=require(_0xabe6('0x7'));var path=require(_0xabe6('0x8'));var sox=require(_0xabe6('0x9'));var csv=require(_0xabe6('0xa'));var ejs=require(_0xabe6('0xb'));var fs=require('fs');var fs_extra=require(_0xabe6('0xc'));var _=require(_0xabe6('0xd'));var squel=require('squel');var crypto=require(_0xabe6('0xe'));var jsforce=require(_0xabe6('0xf'));var deskjs=require(_0xabe6('0x10'));var toCsv=require(_0xabe6('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xabe6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xabe6('0x12'));var as=require(_0xabe6('0x13'));var hardwareService=require(_0xabe6('0x14'));var logger=require(_0xabe6('0x15'))(_0xabe6('0x16'));var utils=require(_0xabe6('0x17'));var config=require(_0xabe6('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xabe6('0x19'))['db'];config['redis']=_[_0xabe6('0x1a')](config['redis'],{'host':_0xabe6('0x1b'),'port':0x18eb});var socket=require(_0xabe6('0x1c'))(new Redis(config[_0xabe6('0x1d')]));require('./userNotification.socket')[_0xabe6('0x1e')](socket);function respondWithStatusCode(_0x13e556,_0x58f360){_0x58f360=_0x58f360||0xcc;return function(_0x647717){if(_0x647717){return _0x13e556[_0xabe6('0x1f')](_0x58f360);}return _0x13e556[_0xabe6('0x20')](_0x58f360)['end']();};}function respondWithResult(_0x14a112,_0x56d1bf){_0x56d1bf=_0x56d1bf||0xc8;return function(_0xab9fb7){if(_0xab9fb7){return _0x14a112[_0xabe6('0x20')](_0x56d1bf)[_0xabe6('0x21')](_0xab9fb7);}};}function respondWithFilteredResult(_0x3e32a9,_0x1c70a1){return function(_0xdd8e71){if(_0xdd8e71){var _0x13e3d6=typeof _0x1c70a1[_0xabe6('0x22')]===_0xabe6('0x23')&&typeof _0x1c70a1[_0xabe6('0x24')]===_0xabe6('0x23');var _0x5c532a=_0xdd8e71[_0xabe6('0x25')];var _0x305cb7=_0x13e3d6?0x0:_0x1c70a1[_0xabe6('0x22')];var _0x2716c8=_0x13e3d6?_0xdd8e71['count']:_0x1c70a1[_0xabe6('0x22')]+_0x1c70a1[_0xabe6('0x24')];var _0x3fe061;if(_0x2716c8>=_0x5c532a){_0x2716c8=_0x5c532a;_0x3fe061=0xc8;}else{_0x3fe061=0xce;}_0x3e32a9[_0xabe6('0x20')](_0x3fe061);return _0x3e32a9[_0xabe6('0x26')]('Content-Range',_0x305cb7+'-'+_0x2716c8+'/'+_0x5c532a)[_0xabe6('0x21')](_0xdd8e71);}return null;};}function patchUpdates(_0x4198f2){return function(_0x1238a6){try{jsonpatch['apply'](_0x1238a6,_0x4198f2,!![]);}catch(_0x522412){return BPromise[_0xabe6('0x27')](_0x522412);}return _0x1238a6[_0xabe6('0x28')]();};}function saveUpdates(_0x44433f,_0x189cc3){return function(_0x31c627){if(_0x31c627){return _0x31c627[_0xabe6('0x29')](_0x44433f)[_0xabe6('0x2a')](function(_0x2bf8ec){return _0x2bf8ec;});}return null;};}function removeEntity(_0x3ad8f4,_0x20162a){return function(_0x45537e){if(_0x45537e){return _0x45537e['destroy']()[_0xabe6('0x2a')](function(){_0x3ad8f4[_0xabe6('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x316fc6,_0x2e2024){return function(_0x4adfc8){if(!_0x4adfc8){_0x316fc6[_0xabe6('0x1f')](0x194);}return _0x4adfc8;};}function handleError(_0x1b095e,_0xb63d3d){_0xb63d3d=_0xb63d3d||0x1f4;return function(_0x50fcfc){logger['error'](_0x50fcfc['stack']);if(_0x50fcfc[_0xabe6('0x2b')]){delete _0x50fcfc['name'];}_0x1b095e[_0xabe6('0x20')](_0xb63d3d)[_0xabe6('0x2c')](_0x50fcfc);};}exports[_0xabe6('0x2d')]=function(_0x14806d,_0x5b4861,_0x21c2fb){if(!_0x14806d[_0xabe6('0x2e')]['hasOwnProperty'](_0xabe6('0x2f'))&&!_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')](_0xabe6('0x31'))){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x34'));}else{if(_0x14806d['body'][_0xabe6('0x30')]('TemplateId')&&!_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')]('view')){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x35'));}if(!_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')]('recipients')){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x36'));}else{try{var _0x1693fd=JSON[_0xabe6('0x37')](_0x14806d['body']['recipients']);}catch(_0x4e0455){logger['error'](_0x4e0455);throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x38'));}var _0x184050=['chatqueue','faxqueue',_0xabe6('0x39'),_0xabe6('0x3a'),'smsqueue','voicequeue',_0xabe6('0x3b'),'team',_0xabe6('0x3c')];if(_[_0xabe6('0x3d')](_0x1693fd,function(_0x12e22e){return!_['includes'](_0x184050,_0x12e22e[_0xabe6('0x3e')][_0xabe6('0x3f')]());})){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x40'));}}}var _0x33edd3={};_0x33edd3[_0xabe6('0x41')]=_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')](_0xabe6('0x41'))?_0x14806d[_0xabe6('0x2e')]['senderName']:_0x14806d[_0xabe6('0x3c')][_0xabe6('0x42')];_0x33edd3[_0xabe6('0x43')]=_[_0xabe6('0x44')](_0x14806d[_0xabe6('0x2e')][_0xabe6('0x43')])?null:_0x14806d[_0xabe6('0x2e')][_0xabe6('0x43')];_0x33edd3['beep']=_0x14806d[_0xabe6('0x2e')]['beep']||![];_0x33edd3[_0xabe6('0x45')]=_0x14806d[_0xabe6('0x3c')]['id'];return getContent(_0x14806d['body'])[_0xabe6('0x2a')](function(_0x5a4e19){_0x33edd3[_0xabe6('0x2e')]=_0x5a4e19;return getRecipients(_0x1693fd);})[_0xabe6('0x2a')](function(_0x144c32){_0x33edd3[_0xabe6('0x46')]=_[_0xabe6('0x47')](_0x144c32)[_0xabe6('0x48')](',');return db['sequelize']['transaction'](function(_0x4761e5){return db['UserNotification'][_0xabe6('0x49')](_0x33edd3,{'raw':!![],'transaction':_0x4761e5})['then'](function(_0x141df0){var _0x57c93b={'sender':_0x33edd3[_0xabe6('0x41')],'description':_0x33edd3['recipientsDescription'],'content':_0x33edd3['body'],'beep':_0x33edd3['beep']};_0x144c32['forEach'](function(_0xc29f5f){_0x57c93b['recipient']=_0xc29f5f;socket[_0xabe6('0x4a')]('userNotification:send',_0x57c93b);});return _0x141df0;});});})['then'](respondWithResult(_0x5b4861,0xc9))[_0xabe6('0x4b')](handleError(_0x5b4861,null));};function getContent(_0x4658a3){return new BPromise(function(_0x4382e0,_0xc282f0){if(_0x4658a3[_0xabe6('0x2f')]){_0x4382e0(_0x4658a3[_0xabe6('0x2f')]);return;}return db[_0xabe6('0x4c')][_0xabe6('0x4d')]({'attributes':[_0xabe6('0x4e')],'where':{'id':_0x4658a3[_0xabe6('0x31')]},'raw':!![]})[_0xabe6('0x2a')](function(_0x3e8f4f){if(!_0x3e8f4f)throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x59eab8=Mustache[_0xabe6('0x4f')](_0x3e8f4f['html'],_0x4658a3['view']);_0x4382e0(_0x59eab8);})['catch'](function(_0x200aba){_0xc282f0(_0x200aba);});});}function getRecipients(_0x405d04){return new BPromise(function(_0x5ae592,_0x215c23){var _0x4f01fc=[];var _0x18fa2c=[];_0x405d04['forEach'](function(_0x2abba7){var _0x2caf15=_['startCase'](_0x2abba7[_0xabe6('0x3e')][_0xabe6('0x3f')]());if(_0x2caf15===_0xabe6('0x50')){_0x4f01fc=_[_0xabe6('0x51')](_0x4f01fc,_0x2abba7[_0xabe6('0x52')]);}else{if(_['includes'](_0x2caf15,_0xabe6('0x53')))_0x2caf15=_0x2caf15[_0xabe6('0x54')](_0xabe6('0x53'),'Queue');_0x2abba7['ids'][_0xabe6('0x55')](function(_0xd979aa){_0x18fa2c[_0xabe6('0x56')](getAgents(_0x2caf15,_0xd979aa));});}});return BPromise['all'](_0x18fa2c)['then'](function(_0xcd3e18){_0x4f01fc=_[_0xabe6('0x51')](_0x4f01fc,_[_0xabe6('0x57')](_0xcd3e18));_0x5ae592(_0x4f01fc);})['catch'](function(_0x47fdef){_0x215c23(_0x47fdef);});});}function getAgents(_0x13ad23,_0x3788f7){return new BPromise(function(_0x1cbc37,_0x28122e){return db[_0x13ad23][_0xabe6('0x4d')]({'where':{'id':_0x3788f7}})['then'](function(_0x33d734){return _0x33d734[_0xabe6('0x58')]({'attributes':['id'],'raw':!![]})['then'](function(_0x55c914){var _0x35b34a=_[_0xabe6('0x59')](_0x55c914,'id');_0x1cbc37(_0x35b34a);});})[_0xabe6('0x4b')](function(_0x3d472a){_0x28122e(_0x3d472a);});});}
\ No newline at end of file
index 5d90963..1ebbcb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x330f=['exports','events','../../mysqldb','UserNotification','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x330f,0xbf));var _0xf330=function(_0x305486,_0x24acd4){_0x305486=_0x305486-0x0;var _0xa04940=_0x330f[_0x305486];return _0xa04940;};'use strict';var EventEmitter=require(_0xf330('0x0'));var UserNotification=require(_0xf330('0x1'))['db'][_0xf330('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf330('0x3'),'afterUpdate':_0xf330('0x4'),'afterDestroy':_0xf330('0x5')};function emitEvent(_0x39db3a){return function(_0x5f3c85,_0x3db07e,_0x2158ef){UserNotificationEvents[_0xf330('0x6')](_0x39db3a+':'+_0x5f3c85['id'],_0x5f3c85);UserNotificationEvents[_0xf330('0x6')](_0x39db3a,_0x5f3c85);_0x2158ef(null);};}for(var e in events){if(events[_0xf330('0x7')](e)){var event=events[e];UserNotification[_0xf330('0x8')](e,emitEvent(event));}}module[_0xf330('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0x6501=['../../mysqldb','setMaxListeners','save','update','remove','hasOwnProperty','hook','exports','events'];(function(_0x186187,_0x55205e){var _0x170b84=function(_0xb7db54){while(--_0xb7db54){_0x186187['push'](_0x186187['shift']());}};_0x170b84(++_0x55205e);}(_0x6501,0x116));var _0x1650=function(_0x54e7a1,_0x598f7){_0x54e7a1=_0x54e7a1-0x0;var _0x23f516=_0x6501[_0x54e7a1];return _0x23f516;};'use strict';var EventEmitter=require(_0x1650('0x0'));var UserNotification=require(_0x1650('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x1650('0x2')](0x0);var events={'afterCreate':_0x1650('0x3'),'afterUpdate':_0x1650('0x4'),'afterDestroy':_0x1650('0x5')};function emitEvent(_0x45392e){return function(_0x24929d,_0xc1bfd8,_0x43cfc2){UserNotificationEvents['emit'](_0x45392e+':'+_0x24929d['id'],_0x24929d);UserNotificationEvents['emit'](_0x45392e,_0x24929d);_0x43cfc2(null);};}for(var e in events){if(events[_0x1650('0x6')](e)){var event=events[e];UserNotification[_0x1650('0x7')](e,emitEvent(event));}}module[_0x1650('0x8')]=UserNotificationEvents;
\ No newline at end of file
index 9d0e3f9..3cd8570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa445=['exports','define','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./userNotification.attributes'];(function(_0x2a1b33,_0x409f50){var _0x4c50e7=function(_0x13e16d){while(--_0x13e16d){_0x2a1b33['push'](_0x2a1b33['shift']());}};_0x4c50e7(++_0x409f50);}(_0xa445,0x1d3));var _0x5a44=function(_0x3d89c5,_0x45f207){_0x3d89c5=_0x3d89c5-0x0;var _0xa43950=_0xa445[_0x3d89c5];return _0xa43950;};'use strict';var _=require(_0x5a44('0x0'));var util=require(_0x5a44('0x1'));var logger=require('../../config/logger')(_0x5a44('0x2'));var moment=require(_0x5a44('0x3'));var BPromise=require(_0x5a44('0x4'));var rp=require(_0x5a44('0x5'));var fs=require('fs');var path=require(_0x5a44('0x6'));var rimraf=require(_0x5a44('0x7'));var config=require('../../config/environment');var attributes=require(_0x5a44('0x8'));module[_0x5a44('0x9')]=function(_0x17cfc0,_0xeca339){return _0x17cfc0[_0x5a44('0xa')]('UserNotification',attributes,{'tableName':_0x5a44('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5a44('0xc'),'collate':_0x5a44('0xd')});};
\ No newline at end of file
+var _0xda1a=['rimraf','exports','define','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','path'];(function(_0xf12af2,_0x3c4aed){var _0x52c026=function(_0x390cd9){while(--_0x390cd9){_0xf12af2['push'](_0xf12af2['shift']());}};_0x52c026(++_0x3c4aed);}(_0xda1a,0x1f4));var _0xada1=function(_0x556256,_0x44c518){_0x556256=_0x556256-0x0;var _0x30cffc=_0xda1a[_0x556256];return _0x30cffc;};'use strict';var _=require('lodash');var util=require(_0xada1('0x0'));var logger=require(_0xada1('0x1'))(_0xada1('0x2'));var moment=require(_0xada1('0x3'));var BPromise=require(_0xada1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xada1('0x5'));var rimraf=require(_0xada1('0x6'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0xada1('0x7')]=function(_0x3adf63,_0x359ef1){return _0x3adf63[_0xada1('0x8')]('UserNotification',attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xada1('0x9'),'collate':_0xada1('0xa')});};
\ No newline at end of file
index 5df5f6a..8d8a118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ef=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','debug','UserNotification,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch'];(function(_0x422540,_0x51898b){var _0x400b5d=function(_0x5e0469){while(--_0x5e0469){_0x422540['push'](_0x422540['shift']());}};_0x400b5d(++_0x51898b);}(_0x55ef,0x177));var _0xf55e=function(_0x27bd79,_0x1d7d2b){_0x27bd79=_0x27bd79-0x0;var _0x208297=_0x55ef[_0x27bd79];return _0x208297;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf55e('0x0'));var BPromise=require(_0xf55e('0x1'));var rs=require(_0xf55e('0x2'));var fs=require('fs');var Redis=require(_0xf55e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf55e('0x4'));var logger=require(_0xf55e('0x5'))(_0xf55e('0x6'));var config=require(_0xf55e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf55e('0x8')][_0xf55e('0x9')]({'port':0x232a});config[_0xf55e('0xa')]=_['defaults'](config[_0xf55e('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf55e('0xa')]));require(_0xf55e('0xb'))[_0xf55e('0xc')](socket);function respondWithRpcPromise(_0x1e1375,_0x46450c,_0x3c8513){return new BPromise(function(_0x588009,_0x411ff2){return client[_0xf55e('0xd')](_0x1e1375,_0x3c8513)[_0xf55e('0xe')](function(_0x9f0421){logger[_0xf55e('0xf')](_0xf55e('0x10'),_0x46450c,'request\x20sent');logger[_0xf55e('0x11')](_0xf55e('0x12'),_0x46450c,_0xf55e('0x13'),JSON['stringify'](_0x9f0421));if(_0x9f0421[_0xf55e('0x14')]){if(_0x9f0421[_0xf55e('0x14')][_0xf55e('0x15')]===0x1f4){logger[_0xf55e('0x14')](_0xf55e('0x10'),_0x46450c,_0x9f0421[_0xf55e('0x14')][_0xf55e('0x16')]);return _0x411ff2(_0x9f0421[_0xf55e('0x14')]['message']);}logger['error'](_0xf55e('0x10'),_0x46450c,_0x9f0421[_0xf55e('0x14')][_0xf55e('0x16')]);return _0x588009(_0x9f0421[_0xf55e('0x14')]['message']);}else{logger[_0xf55e('0xf')]('UserNotification,\x20%s,\x20%s',_0x46450c,'request\x20sent');_0x588009(_0x9f0421[_0xf55e('0x17')][_0xf55e('0x16')]);}})[_0xf55e('0x18')](function(_0xa00b5f){logger[_0xf55e('0x14')]('UserNotification,\x20%s,\x20%s',_0x46450c,_0xa00b5f);_0x411ff2(_0xa00b5f);});});}
\ No newline at end of file
+var _0x6e9f=['code','message','catch','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x494651,_0x28c844){var _0x26e771=function(_0x249abe){while(--_0x249abe){_0x494651['push'](_0x494651['shift']());}};_0x26e771(++_0x28c844);}(_0x6e9f,0x123));var _0xf6e9=function(_0x524d43,_0x8789e2){_0x524d43=_0x524d43-0x0;var _0x5345f9=_0x6e9f[_0x524d43];return _0x5345f9;};'use strict';var _=require('lodash');var util=require(_0xf6e9('0x0'));var moment=require('moment');var BPromise=require(_0xf6e9('0x1'));var rs=require(_0xf6e9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf6e9('0x3'));var logger=require(_0xf6e9('0x4'))(_0xf6e9('0x5'));var config=require(_0xf6e9('0x6'));var jayson=require(_0xf6e9('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xf6e9('0x8')]=_[_0xf6e9('0x9')](config[_0xf6e9('0x8')],{'host':_0xf6e9('0xa'),'port':0x18eb});var socket=require(_0xf6e9('0xb'))(new Redis(config['redis']));require(_0xf6e9('0xc'))['register'](socket);function respondWithRpcPromise(_0x19245b,_0x2ac4bf,_0x44f7ab){return new BPromise(function(_0x5b4fb1,_0xed4286){return client[_0xf6e9('0xd')](_0x19245b,_0x44f7ab)[_0xf6e9('0xe')](function(_0x1dd92a){logger[_0xf6e9('0xf')](_0xf6e9('0x10'),_0x2ac4bf,_0xf6e9('0x11'));logger['debug'](_0xf6e9('0x12'),_0x2ac4bf,_0xf6e9('0x11'),JSON[_0xf6e9('0x13')](_0x1dd92a));if(_0x1dd92a[_0xf6e9('0x14')]){if(_0x1dd92a[_0xf6e9('0x14')][_0xf6e9('0x15')]===0x1f4){logger['error'](_0xf6e9('0x10'),_0x2ac4bf,_0x1dd92a['error'][_0xf6e9('0x16')]);return _0xed4286(_0x1dd92a['error'][_0xf6e9('0x16')]);}logger[_0xf6e9('0x14')](_0xf6e9('0x10'),_0x2ac4bf,_0x1dd92a['error'][_0xf6e9('0x16')]);return _0x5b4fb1(_0x1dd92a[_0xf6e9('0x14')][_0xf6e9('0x16')]);}else{logger[_0xf6e9('0xf')]('UserNotification,\x20%s,\x20%s',_0x2ac4bf,_0xf6e9('0x11'));_0x5b4fb1(_0x1dd92a['result'][_0xf6e9('0x16')]);}})[_0xf6e9('0x17')](function(_0x238f3e){logger[_0xf6e9('0x14')](_0xf6e9('0x10'),_0x2ac4bf,_0x238f3e);_0xed4286(_0x238f3e);});});}
\ No newline at end of file
index 09d638c..6d88194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5278=['update','emit','removeListener','register','length','userNotification:','./userNotification.events'];(function(_0x37639c,_0x548f82){var _0x23bb59=function(_0x2ae408){while(--_0x2ae408){_0x37639c['push'](_0x37639c['shift']());}};_0x23bb59(++_0x548f82);}(_0x5278,0xd1));var _0x8527=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x5278[_0x422905];return _0x33dc6c;};'use strict';var UserNotificationEvents=require(_0x8527('0x0'));var events=['save','remove',_0x8527('0x1')];function createListener(_0x3e9025,_0x472e0f){return function(_0x54d678){_0x472e0f[_0x8527('0x2')](_0x3e9025,_0x54d678);};}function removeListener(_0x23aa29,_0x4d9d80){return function(){UserNotificationEvents[_0x8527('0x3')](_0x23aa29,_0x4d9d80);};}exports[_0x8527('0x4')]=function(_0x21ea53){for(var _0xc843c1=0x0,_0x42378c=events[_0x8527('0x5')];_0xc843c1<_0x42378c;_0xc843c1++){var _0x334c99=events[_0xc843c1];var _0x5ed560=createListener(_0x8527('0x6')+_0x334c99,_0x21ea53);UserNotificationEvents['on'](_0x334c99,_0x5ed560);}};
\ No newline at end of file
+var _0x8470=['save','remove','update','emit','removeListener','register','userNotification:','./userNotification.events'];(function(_0x5a9fc4,_0x498cc0){var _0x473712=function(_0x2421b9){while(--_0x2421b9){_0x5a9fc4['push'](_0x5a9fc4['shift']());}};_0x473712(++_0x498cc0);}(_0x8470,0xef));var _0x0847=function(_0x4d7f64,_0x326a4d){_0x4d7f64=_0x4d7f64-0x0;var _0x5f2846=_0x8470[_0x4d7f64];return _0x5f2846;};'use strict';var UserNotificationEvents=require(_0x0847('0x0'));var events=[_0x0847('0x1'),_0x0847('0x2'),_0x0847('0x3')];function createListener(_0x298d5e,_0x1875ae){return function(_0x19a6eb){_0x1875ae[_0x0847('0x4')](_0x298d5e,_0x19a6eb);};}function removeListener(_0x12a42a,_0x39c6e6){return function(){UserNotificationEvents[_0x0847('0x5')](_0x12a42a,_0x39c6e6);};}exports[_0x0847('0x6')]=function(_0x2d0c5a){for(var _0x49ab3b=0x0,_0x4a02e2=events['length'];_0x49ab3b<_0x4a02e2;_0x49ab3b++){var _0x4494d2=events[_0x49ab3b];var _0xe61fc4=createListener(_0x0847('0x7')+_0x4494d2,_0x2d0c5a);UserNotificationEvents['on'](_0x4494d2,_0xe61fc4);}};
\ No newline at end of file
index 8a7c095..66719bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x3e5a76,_0x1e2316){var _0x2b9bc6=function(_0x1218e3){while(--_0x1218e3){_0x3e5a76['push'](_0x3e5a76['shift']());}};_0x2b9bc6(++_0x1e2316);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3a7979,_0x1ff89e){var _0x387b3a=function(_0x39e3cd){while(--_0x39e3cd){_0x3a7979['push'](_0x3a7979['shift']());}};_0x387b3a(++_0x1ff89e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 35d8056..ed25d1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a2=['INTEGER','sequelize','exports'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xd7a2,0x18a));var _0x2d7a=function(_0x471a93,_0x56f59f){_0x471a93=_0x471a93-0x0;var _0x12731e=_0xd7a2[_0x471a93];return _0x12731e;};'use strict';var Sequelize=require(_0x2d7a('0x0'));module[_0x2d7a('0x1')]={'penalty':{'type':Sequelize[_0x2d7a('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa1fc=['exports'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xa1fc,0xb1));var _0xca1f=function(_0x4cf3a0,_0xc29e73){_0x4cf3a0=_0x4cf3a0-0x0;var _0x25adb7=_0xa1fc[_0x4cf3a0];return _0x25adb7;};'use strict';var Sequelize=require('sequelize');module[_0xca1f('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d58e2e8..1c81d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x227a=['UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./userOpenchannelQueue.attributes','exports','define'];(function(_0x48d6a3,_0x37c848){var _0x38bfa0=function(_0x3fba2e){while(--_0x3fba2e){_0x48d6a3['push'](_0x48d6a3['shift']());}};_0x38bfa0(++_0x37c848);}(_0x227a,0x11a));var _0xa227=function(_0x3eb645,_0x303a80){_0x3eb645=_0x3eb645-0x0;var _0x2b5512=_0x227a[_0x3eb645];return _0x2b5512;};'use strict';var _=require(_0xa227('0x0'));var util=require(_0xa227('0x1'));var logger=require(_0xa227('0x2'))(_0xa227('0x3'));var moment=require(_0xa227('0x4'));var BPromise=require(_0xa227('0x5'));var rp=require(_0xa227('0x6'));var fs=require('fs');var path=require(_0xa227('0x7'));var rimraf=require(_0xa227('0x8'));var config=require('../../config/environment');var attributes=require(_0xa227('0x9'));module[_0xa227('0xa')]=function(_0x49e626,_0x4299dc){return _0x49e626[_0xa227('0xb')](_0xa227('0xc'),attributes,{'tableName':_0xa227('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd17=['../../config/logger','api','bluebird','request-promise','../../config/environment','./userOpenchannelQueue.attributes','exports','define','user_has_openchannel_queues','lodash','util'];(function(_0x16497e,_0x4eead5){var _0x34ee65=function(_0x512e1f){while(--_0x512e1f){_0x16497e['push'](_0x16497e['shift']());}};_0x34ee65(++_0x4eead5);}(_0xfd17,0x1a0));var _0x7fd1=function(_0x138b2c,_0x142181){_0x138b2c=_0x138b2c-0x0;var _0xa8b921=_0xfd17[_0x138b2c];return _0xa8b921;};'use strict';var _=require(_0x7fd1('0x0'));var util=require(_0x7fd1('0x1'));var logger=require(_0x7fd1('0x2'))(_0x7fd1('0x3'));var moment=require('moment');var BPromise=require(_0x7fd1('0x4'));var rp=require(_0x7fd1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7fd1('0x6'));var attributes=require(_0x7fd1('0x7'));module[_0x7fd1('0x8')]=function(_0x50b31d,_0x548a78){return _0x50b31d[_0x7fd1('0x9')]('UserOpenchannelQueue',attributes,{'tableName':_0x7fd1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d3f55b7..b110595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37ad=['../../config/environment','jayson/promise','client','http','request','info','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x37ad,0x1b0));var _0xd37a=function(_0x5a31b6,_0x58f421){_0x5a31b6=_0x5a31b6-0x0;var _0x1c3523=_0x37ad[_0x5a31b6];return _0x1c3523;};'use strict';var _=require('lodash');var util=require(_0xd37a('0x0'));var moment=require(_0xd37a('0x1'));var BPromise=require('bluebird');var rs=require(_0xd37a('0x2'));var fs=require('fs');var Redis=require(_0xd37a('0x3'));var db=require(_0xd37a('0x4'))['db'];var utils=require(_0xd37a('0x5'));var logger=require(_0xd37a('0x6'))(_0xd37a('0x7'));var config=require(_0xd37a('0x8'));var jayson=require(_0xd37a('0x9'));var client=jayson[_0xd37a('0xa')][_0xd37a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2abd54,_0x2b38e7,_0x147284){return new BPromise(function(_0x6862a9,_0x2e4e3c){return client[_0xd37a('0xc')](_0x2abd54,_0x147284)['then'](function(_0x5d910d){logger[_0xd37a('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2b38e7,'request\x20sent');logger['debug'](_0xd37a('0xe'),_0x2b38e7,_0xd37a('0xf'),JSON['stringify'](_0x5d910d));if(_0x5d910d[_0xd37a('0x10')]){if(_0x5d910d[_0xd37a('0x10')][_0xd37a('0x11')]===0x1f4){logger['error'](_0xd37a('0x12'),_0x2b38e7,_0x5d910d['error'][_0xd37a('0x13')]);return _0x2e4e3c(_0x5d910d[_0xd37a('0x10')]['message']);}logger[_0xd37a('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2b38e7,_0x5d910d[_0xd37a('0x10')]['message']);return _0x6862a9(_0x5d910d['error']['message']);}else{logger['info'](_0xd37a('0x12'),_0x2b38e7,_0xd37a('0xf'));_0x6862a9(_0x5d910d[_0xd37a('0x14')][_0xd37a('0x13')]);}})[_0xd37a('0x15')](function(_0x858570){logger[_0xd37a('0x10')](_0xd37a('0x12'),_0x2b38e7,_0x858570);_0x2e4e3c(_0x858570);});});}
\ No newline at end of file
+var _0xd578=['rpc','jayson/promise','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','debug','request\x20sent','error','message','info','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xad5599,_0x2d489a){var _0x259907=function(_0x5af2ff){while(--_0x5af2ff){_0xad5599['push'](_0xad5599['shift']());}};_0x259907(++_0x2d489a);}(_0xd578,0x19c));var _0x8d57=function(_0x53c0c4,_0x14752f){_0x53c0c4=_0x53c0c4-0x0;var _0x53a94f=_0xd578[_0x53c0c4];return _0x53a94f;};'use strict';var _=require(_0x8d57('0x0'));var util=require(_0x8d57('0x1'));var moment=require('moment');var BPromise=require(_0x8d57('0x2'));var rs=require(_0x8d57('0x3'));var fs=require('fs');var Redis=require(_0x8d57('0x4'));var db=require(_0x8d57('0x5'))['db'];var utils=require(_0x8d57('0x6'));var logger=require(_0x8d57('0x7'))(_0x8d57('0x8'));var config=require('../../config/environment');var jayson=require(_0x8d57('0x9'));var client=jayson[_0x8d57('0xa')][_0x8d57('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x59e2bc,_0x1ea4e3,_0x29214f){return new BPromise(function(_0x2c6566,_0x4e5786){return client[_0x8d57('0xc')](_0x59e2bc,_0x29214f)[_0x8d57('0xd')](function(_0x2be39a){logger['info'](_0x8d57('0xe'),_0x1ea4e3,'request\x20sent');logger[_0x8d57('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x1ea4e3,_0x8d57('0x10'),JSON['stringify'](_0x2be39a));if(_0x2be39a[_0x8d57('0x11')]){if(_0x2be39a[_0x8d57('0x11')]['code']===0x1f4){logger[_0x8d57('0x11')](_0x8d57('0xe'),_0x1ea4e3,_0x2be39a[_0x8d57('0x11')][_0x8d57('0x12')]);return _0x4e5786(_0x2be39a['error'][_0x8d57('0x12')]);}logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x1ea4e3,_0x2be39a[_0x8d57('0x11')]['message']);return _0x2c6566(_0x2be39a[_0x8d57('0x11')]['message']);}else{logger[_0x8d57('0x13')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x1ea4e3,'request\x20sent');_0x2c6566(_0x2be39a['result']['message']);}})[_0x8d57('0x14')](function(_0x1fa2b6){logger['error'](_0x8d57('0xe'),_0x1ea4e3,_0x1fa2b6);_0x4e5786(_0x1fa2b6);});});}
\ No newline at end of file
index 09a265f..98b478f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e83=['post','/:id/clone','clone','addSections','addResources','put','delete','removeSections','removeResources','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfile.controller','isAuthenticated','index','get','/describe','/:id','/:id/sections','getSections','/:id/resources','getResources','create'];(function(_0x33d4a2,_0x2baaf4){var _0x2c793f=function(_0x414303){while(--_0x414303){_0x33d4a2['push'](_0x33d4a2['shift']());}};_0x2c793f(++_0x2baaf4);}(_0x5e83,0xb2));var _0x35e8=function(_0x5cb977,_0x13c79c){_0x5cb977=_0x5cb977-0x0;var _0x40c203=_0x5e83[_0x5cb977];return _0x40c203;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x35e8('0x0'));var timeout=require(_0x35e8('0x1'));var express=require(_0x35e8('0x2'));var router=express[_0x35e8('0x3')]();var fs_extra=require(_0x35e8('0x4'));var auth=require(_0x35e8('0x5'));var interaction=require(_0x35e8('0x6'));var config=require('../../config/environment');var controller=require(_0x35e8('0x7'));router['get']('/',auth[_0x35e8('0x8')](),controller[_0x35e8('0x9')]);router[_0x35e8('0xa')](_0x35e8('0xb'),auth[_0x35e8('0x8')](),controller['describe']);router['get'](_0x35e8('0xc'),auth['isAuthenticated'](),controller['show']);router['get'](_0x35e8('0xd'),auth[_0x35e8('0x8')](),controller[_0x35e8('0xe')]);router['get'](_0x35e8('0xf'),auth[_0x35e8('0x8')](),controller[_0x35e8('0x10')]);router['post']('/',auth[_0x35e8('0x8')](),controller[_0x35e8('0x11')]);router[_0x35e8('0x12')](_0x35e8('0x13'),auth[_0x35e8('0x8')](),controller[_0x35e8('0x14')]);router[_0x35e8('0x12')](_0x35e8('0xd'),auth[_0x35e8('0x8')](),controller[_0x35e8('0x15')]);router['post'](_0x35e8('0xf'),auth[_0x35e8('0x8')](),controller[_0x35e8('0x16')]);router[_0x35e8('0x17')](_0x35e8('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x35e8('0x18')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x35e8('0x18')](_0x35e8('0xd'),auth[_0x35e8('0x8')](),controller[_0x35e8('0x19')]);router[_0x35e8('0x18')]('/:id/resources',auth[_0x35e8('0x8')](),controller[_0x35e8('0x1a')]);module[_0x35e8('0x1b')]=router;
\ No newline at end of file
+var _0xa09c=['removeResources','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','isAuthenticated','index','get','/describe','/:id','show','/:id/sections','getResources','create','post','/:id/clone','clone','addSections','/:id/resources','addResources','delete','destroy','removeSections'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa09c,0x151));var _0xca09=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xa09c[_0x1d1779];return _0x2377e9;};'use strict';var multer=require('multer');var util=require(_0xca09('0x0'));var path=require(_0xca09('0x1'));var timeout=require(_0xca09('0x2'));var express=require(_0xca09('0x3'));var router=express['Router']();var fs_extra=require(_0xca09('0x4'));var auth=require(_0xca09('0x5'));var interaction=require(_0xca09('0x6'));var config=require(_0xca09('0x7'));var controller=require(_0xca09('0x8'));router['get']('/',auth[_0xca09('0x9')](),controller[_0xca09('0xa')]);router[_0xca09('0xb')](_0xca09('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xca09('0xb')](_0xca09('0xd'),auth[_0xca09('0x9')](),controller[_0xca09('0xe')]);router['get'](_0xca09('0xf'),auth[_0xca09('0x9')](),controller['getSections']);router[_0xca09('0xb')]('/:id/resources',auth['isAuthenticated'](),controller[_0xca09('0x10')]);router['post']('/',auth[_0xca09('0x9')](),controller[_0xca09('0x11')]);router[_0xca09('0x12')](_0xca09('0x13'),auth[_0xca09('0x9')](),controller[_0xca09('0x14')]);router[_0xca09('0x12')](_0xca09('0xf'),auth[_0xca09('0x9')](),controller[_0xca09('0x15')]);router[_0xca09('0x12')](_0xca09('0x16'),auth[_0xca09('0x9')](),controller[_0xca09('0x17')]);router['put'](_0xca09('0xd'),auth[_0xca09('0x9')](),controller['update']);router[_0xca09('0x18')](_0xca09('0xd'),auth[_0xca09('0x9')](),controller[_0xca09('0x19')]);router[_0xca09('0x18')](_0xca09('0xf'),auth[_0xca09('0x9')](),controller[_0xca09('0x1a')]);router['delete'](_0xca09('0x16'),auth[_0xca09('0x9')](),controller[_0xca09('0x1b')]);module['exports']=router;
\ No newline at end of file
index 01a6932..7753b69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe7f=['sequelize','exports','STRING','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN'];(function(_0x55054d,_0x35adc6){var _0x5324fa=function(_0x348b0c){while(--_0x348b0c){_0x55054d['push'](_0x55054d['shift']());}};_0x5324fa(++_0x35adc6);}(_0xfe7f,0xcf));var _0xffe7=function(_0x22766f,_0x577e75){_0x22766f=_0x22766f-0x0;var _0x5e0773=_0xfe7f[_0x22766f];return _0x5e0773;};'use strict';var Sequelize=require(_0xffe7('0x0'));module[_0xffe7('0x1')]={'name':{'type':Sequelize[_0xffe7('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xffe7('0x2')],'set':function(_0x226d6c){this[_0xffe7('0x3')](_0xffe7('0x4'),_0x226d6c?_0x226d6c[_0xffe7('0x5')](''):[]);},'get':function(){return this[_0xffe7('0x6')](_0xffe7('0x4'))?this[_0xffe7('0x6')](_0xffe7('0x4'))[_0xffe7('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xffe7('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xffe7('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xffe7('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xffe7('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xffe7('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xffe7('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xffe7('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xffe7('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6c0c=['setDataValue','crudPermissions','split','BOOLEAN','sequelize','exports','STRING'];(function(_0x5b3aca,_0x3d0d08){var _0x3c93b1=function(_0x11a2f5){while(--_0x11a2f5){_0x5b3aca['push'](_0x5b3aca['shift']());}};_0x3c93b1(++_0x3d0d08);}(_0x6c0c,0x169));var _0xc6c0=function(_0x493c66,_0x46241d){_0x493c66=_0x493c66-0x0;var _0x1634e4=_0x6c0c[_0x493c66];return _0x1634e4;};'use strict';var Sequelize=require(_0xc6c0('0x0'));module[_0xc6c0('0x1')]={'name':{'type':Sequelize[_0xc6c0('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xc6c0('0x2')],'set':function(_0x2bca26){this[_0xc6c0('0x3')](_0xc6c0('0x4'),_0x2bca26?_0x2bca26['join'](''):[]);},'get':function(){return this['getDataValue'](_0xc6c0('0x4'))?this['getDataValue']('crudPermissions')[_0xc6c0('0x5')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xc6c0('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 3e04b0a..a113eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f25=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./userProfile.socket','register','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','error','stack','name','send','index','map','UserProfile','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','params','length','options','find','body','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction','create','get','UserProfileSection','autoAssociation','UserProfileResource','userProfileId','destroy','describe','sectionId','Resources','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x56b138,_0x2396d6){var _0x3df878=function(_0x4b3ccc){while(--_0x4b3ccc){_0x56b138['push'](_0x56b138['shift']());}};_0x3df878(++_0x2396d6);}(_0x8f25,0x14b));var _0x58f2=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x8f25[_0x5ddb1c];return _0x354adc;};'use strict';var emlformat=require(_0x58f2('0x0'));var rimraf=require(_0x58f2('0x1'));var zipdir=require(_0x58f2('0x2'));var jsonpatch=require(_0x58f2('0x3'));var rp=require(_0x58f2('0x4'));var moment=require(_0x58f2('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x58f2('0x6'));var sox=require(_0x58f2('0x7'));var csv=require(_0x58f2('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x58f2('0x9'));var _=require(_0x58f2('0xa'));var squel=require(_0x58f2('0xb'));var crypto=require(_0x58f2('0xc'));var jsforce=require(_0x58f2('0xd'));var deskjs=require(_0x58f2('0xe'));var toCsv=require(_0x58f2('0x8'));var querystring=require(_0x58f2('0xf'));var Papa=require('papaparse');var Redis=require(_0x58f2('0x10'));var authService=require(_0x58f2('0x11'));var qs=require(_0x58f2('0x12'));var as=require(_0x58f2('0x13'));var hardwareService=require(_0x58f2('0x14'));var logger=require('../../config/logger')(_0x58f2('0x15'));var utils=require(_0x58f2('0x16'));var config=require(_0x58f2('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x58f2('0x18'))['db'];config[_0x58f2('0x19')]=_['defaults'](config[_0x58f2('0x19')],{'host':_0x58f2('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x58f2('0x19')]));require(_0x58f2('0x1b'))[_0x58f2('0x1c')](socket);function respondWithStatusCode(_0x250c1c,_0x879d54){_0x879d54=_0x879d54||0xcc;return function(_0x1dc4ac){if(_0x1dc4ac){return _0x250c1c[_0x58f2('0x1d')](_0x879d54);}return _0x250c1c[_0x58f2('0x1e')](_0x879d54)[_0x58f2('0x1f')]();};}function respondWithResult(_0x21db0c,_0x256f1f){_0x256f1f=_0x256f1f||0xc8;return function(_0x3f9991){if(_0x3f9991){return _0x21db0c['status'](_0x256f1f)[_0x58f2('0x20')](_0x3f9991);}};}function respondWithFilteredResult(_0x4e7fc9,_0x2042bf){return function(_0x1db4ad){if(_0x1db4ad){var _0x4e66a4=typeof _0x2042bf['offset']==='undefined'&&typeof _0x2042bf['limit']===_0x58f2('0x21');var _0x16523e=_0x1db4ad[_0x58f2('0x22')];var _0xf66efd=_0x4e66a4?0x0:_0x2042bf[_0x58f2('0x23')];var _0x1db5fd=_0x4e66a4?_0x1db4ad['count']:_0x2042bf[_0x58f2('0x23')]+_0x2042bf[_0x58f2('0x24')];var _0x4c537f;if(_0x1db5fd>=_0x16523e){_0x1db5fd=_0x16523e;_0x4c537f=0xc8;}else{_0x4c537f=0xce;}_0x4e7fc9[_0x58f2('0x1e')](_0x4c537f);return _0x4e7fc9[_0x58f2('0x25')]('Content-Range',_0xf66efd+'-'+_0x1db5fd+'/'+_0x16523e)[_0x58f2('0x20')](_0x1db4ad);}return null;};}function patchUpdates(_0xdee848){return function(_0x38e0b8){try{jsonpatch[_0x58f2('0x26')](_0x38e0b8,_0xdee848,!![]);}catch(_0x16fa72){return BPromise[_0x58f2('0x27')](_0x16fa72);}return _0x38e0b8[_0x58f2('0x28')]();};}function saveUpdates(_0x29d70b,_0x3f81c1){return function(_0x8fad73){if(_0x8fad73){return _0x8fad73[_0x58f2('0x29')](_0x29d70b)[_0x58f2('0x2a')](function(_0x34a2e2){return _0x34a2e2;});}return null;};}function removeEntity(_0xb5f201,_0x1224f1){return function(_0x422aa0){if(_0x422aa0){return _0x422aa0['destroy']()[_0x58f2('0x2a')](function(){_0xb5f201['status'](0xcc)[_0x58f2('0x1f')]();});}};}function handleEntityNotFound(_0x1692cb,_0x2ec718){return function(_0x55e50a){if(!_0x55e50a){_0x1692cb[_0x58f2('0x1d')](0x194);}return _0x55e50a;};}function handleError(_0x44700f,_0x46db2e){_0x46db2e=_0x46db2e||0x1f4;return function(_0x58433b){logger[_0x58f2('0x2b')](_0x58433b[_0x58f2('0x2c')]);if(_0x58433b['name']){delete _0x58433b[_0x58f2('0x2d')];}_0x44700f[_0x58f2('0x1e')](_0x46db2e)[_0x58f2('0x2e')](_0x58433b);};}exports[_0x58f2('0x2f')]=function(_0x5a6296,_0x46386a){var _0x492db5={},_0x2633f8={},_0x128af8={'count':0x0,'rows':[]};var _0x8f339d=_[_0x58f2('0x30')](db[_0x58f2('0x31')][_0x58f2('0x32')],function(_0x5f3b55){return{'name':_0x5f3b55[_0x58f2('0x33')],'type':_0x5f3b55[_0x58f2('0x34')][_0x58f2('0x35')]};});_0x2633f8['model']=_[_0x58f2('0x30')](_0x8f339d,_0x58f2('0x2d'));_0x2633f8['query']=_[_0x58f2('0x36')](_0x5a6296[_0x58f2('0x37')]);_0x2633f8[_0x58f2('0x38')]=_[_0x58f2('0x39')](_0x2633f8[_0x58f2('0x3a')],_0x2633f8['query']);_0x492db5[_0x58f2('0x3b')]=_[_0x58f2('0x39')](_0x2633f8[_0x58f2('0x3a')],qs[_0x58f2('0x3c')](_0x5a6296[_0x58f2('0x37')][_0x58f2('0x3c')]));_0x492db5[_0x58f2('0x3b')]=_0x492db5['attributes']['length']?_0x492db5[_0x58f2('0x3b')]:_0x2633f8[_0x58f2('0x3a')];if(!_0x5a6296[_0x58f2('0x37')][_0x58f2('0x3d')]('nolimit')){_0x492db5[_0x58f2('0x24')]=qs['limit'](_0x5a6296['query'][_0x58f2('0x24')]);_0x492db5[_0x58f2('0x23')]=qs['offset'](_0x5a6296[_0x58f2('0x37')][_0x58f2('0x23')]);}_0x492db5[_0x58f2('0x3e')]=qs[_0x58f2('0x3f')](_0x5a6296[_0x58f2('0x37')][_0x58f2('0x3f')]);_0x492db5[_0x58f2('0x40')]=qs['filters'](_[_0x58f2('0x41')](_0x5a6296['query'],_0x2633f8[_0x58f2('0x38')]),_0x8f339d);if(_0x5a6296[_0x58f2('0x37')][_0x58f2('0x42')]){_0x492db5[_0x58f2('0x40')]=_['merge'](_0x492db5[_0x58f2('0x40')],{'$or':_[_0x58f2('0x30')](_0x8f339d,function(_0x3f0af2){if(_0x3f0af2[_0x58f2('0x34')]!==_0x58f2('0x43')){var _0x20a3c8={};_0x20a3c8[_0x3f0af2[_0x58f2('0x2d')]]={'$like':'%'+_0x5a6296[_0x58f2('0x37')][_0x58f2('0x42')]+'%'};return _0x20a3c8;}})});}_0x492db5=_[_0x58f2('0x44')]({},_0x492db5,_0x5a6296['options']);var _0x5299ab={'where':_0x492db5[_0x58f2('0x40')]};return db[_0x58f2('0x31')]['count'](_0x5299ab)[_0x58f2('0x2a')](function(_0x2891f6){_0x128af8[_0x58f2('0x22')]=_0x2891f6;if(_0x5a6296[_0x58f2('0x37')][_0x58f2('0x45')]){_0x492db5[_0x58f2('0x46')]=[{'all':!![]}];}return db['UserProfile'][_0x58f2('0x47')](_0x492db5);})[_0x58f2('0x2a')](function(_0x966735){_0x128af8[_0x58f2('0x48')]=_0x966735;return _0x128af8;})[_0x58f2('0x2a')](respondWithFilteredResult(_0x46386a,_0x492db5))[_0x58f2('0x49')](handleError(_0x46386a,null));};exports['show']=function(_0x1e78d6,_0x5255ab){var _0x11a8be={'raw':![],'where':{'id':_0x1e78d6[_0x58f2('0x4a')]['id']}},_0x492970={};_0x492970[_0x58f2('0x3a')]=_[_0x58f2('0x36')](db[_0x58f2('0x31')]['rawAttributes']);_0x492970['query']=_[_0x58f2('0x36')](_0x1e78d6[_0x58f2('0x37')]);_0x492970[_0x58f2('0x38')]=_[_0x58f2('0x39')](_0x492970['model'],_0x492970['query']);_0x11a8be[_0x58f2('0x3b')]=_[_0x58f2('0x39')](_0x492970[_0x58f2('0x3a')],qs[_0x58f2('0x3c')](_0x1e78d6['query'][_0x58f2('0x3c')]));_0x11a8be[_0x58f2('0x3b')]=_0x11a8be[_0x58f2('0x3b')][_0x58f2('0x4b')]?_0x11a8be[_0x58f2('0x3b')]:_0x492970[_0x58f2('0x3a')];if(_0x1e78d6[_0x58f2('0x37')][_0x58f2('0x45')]){_0x11a8be['include']=[{'all':!![]}];}_0x11a8be=_[_0x58f2('0x44')]({},_0x11a8be,_0x1e78d6[_0x58f2('0x4c')]);return db[_0x58f2('0x31')][_0x58f2('0x4d')](_0x11a8be)[_0x58f2('0x2a')](handleEntityNotFound(_0x5255ab,null))[_0x58f2('0x2a')](respondWithResult(_0x5255ab,null))[_0x58f2('0x49')](handleError(_0x5255ab,null));};exports['create']=function(_0x318c81,_0x28a4b4){return db[_0x58f2('0x31')]['create'](_0x318c81[_0x58f2('0x4e')],{})[_0x58f2('0x2a')](respondWithResult(_0x28a4b4,0xc9))[_0x58f2('0x49')](handleError(_0x28a4b4,null));};exports['clone']=function(_0x45d10e,_0x3dba49){var _0x60b507={'where':{'id':_0x45d10e[_0x58f2('0x4a')]['id']}},_0x1f6868={};_0x1f6868[_0x58f2('0x3a')]=_['keys'](db[_0x58f2('0x31')][_0x58f2('0x32')]);_0x60b507[_0x58f2('0x3b')]=_[_0x58f2('0x39')](_0x1f6868[_0x58f2('0x3a')],qs[_0x58f2('0x3c')](_0x45d10e['query'][_0x58f2('0x3c')]));_0x60b507[_0x58f2('0x3b')]=_0x60b507[_0x58f2('0x3b')]['length']?_0x60b507[_0x58f2('0x3b')]:_0x1f6868[_0x58f2('0x3a')];if(_0x45d10e['query'][_0x58f2('0x45')]){_0x60b507[_0x58f2('0x46')]=[{'all':!![]}];}_0x60b507=_[_0x58f2('0x44')]({},_0x60b507,_0x45d10e[_0x58f2('0x4c')]);return db[_0x58f2('0x31')][_0x58f2('0x4d')](_0x60b507)[_0x58f2('0x2a')](handleEntityNotFound(_0x3dba49,null))['then'](function(_0x5ace9f){if(_0x5ace9f){var _0xe77a7a=_0x5ace9f['get']({'plain':!![]});_0xe77a7a=qs[_0x58f2('0x4f')](_0xe77a7a,['id','createdAt',_0x58f2('0x50'),_0x58f2('0x51')]);_0x45d10e['body']=_[_0x58f2('0x4f')](_0x45d10e['body'],['id',_0x58f2('0x52'),_0x58f2('0x50')]);return db[_0x58f2('0x53')][_0x58f2('0x54')](function(_0x929fe){return db[_0x58f2('0x31')][_0x58f2('0x55')](_[_0x58f2('0x44')](_0xe77a7a,_0x45d10e[_0x58f2('0x4e')]),{'include':_0x45d10e['query'][_0x58f2('0x45')]?[{'all':!![]}]:undefined,'transaction':_0x929fe})[_0x58f2('0x2a')](function(_0x4c54ae){var _0x2ae8fb=_0x4c54ae[_0x58f2('0x56')]({'plain':!![]});return db[_0x58f2('0x57')][_0x58f2('0x47')]({'where':{'userProfileId':_0x45d10e[_0x58f2('0x4a')]['id']},'raw':!![]})[_0x58f2('0x2a')](function(_0x2f56ca){if(_0x2f56ca){return BPromise['each'](_0x2f56ca,function(_0x5df62b){return new BPromise(function(_0x3ddbf6,_0x59bfa9){if(_0x5df62b[_0x58f2('0x58')]===null||_0x5df62b[_0x58f2('0x58')]===0x1)_0x3ddbf6(null);return db[_0x58f2('0x59')]['findAll']({'where':{'sectionId':_0x5df62b['id']},'raw':!![]})[_0x58f2('0x2a')](function(_0x550dd9){var _0x555870=_[_0x58f2('0x30')](_0x550dd9,function(_0x489872){return qs[_0x58f2('0x4f')](_0x489872,['id',_0x58f2('0x52'),_0x58f2('0x50'),'sectionId']);});_0x3ddbf6(_0x555870);})[_0x58f2('0x49')](function(_0x129d47){_0x59bfa9(_0x129d47);});})[_0x58f2('0x2a')](function(_0x45f61d){var _0x560e62=qs[_0x58f2('0x4f')](_0x5df62b,['id','createdAt','updatedAt']);_0x560e62[_0x58f2('0x5a')]=_0x2ae8fb['id'];if(_0x45f61d)_0x560e62['Resources']=_0x45f61d;return _0x560e62;})[_0x58f2('0x2a')](function(_0x2791d7){return db[_0x58f2('0x57')]['create'](_0x2791d7,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x929fe});});})[_0x58f2('0x2a')](function(){return _0x2ae8fb;});}});});});}})[_0x58f2('0x2a')](respondWithResult(_0x3dba49,0xc9))[_0x58f2('0x49')](handleError(_0x3dba49,null));};exports['update']=function(_0x24290d,_0x4fb9d7){if(_0x24290d[_0x58f2('0x4e')]['id']){delete _0x24290d['body']['id'];}return db[_0x58f2('0x31')][_0x58f2('0x4d')]({'where':{'id':_0x24290d[_0x58f2('0x4a')]['id']}})[_0x58f2('0x2a')](handleEntityNotFound(_0x4fb9d7,null))[_0x58f2('0x2a')](saveUpdates(_0x24290d[_0x58f2('0x4e')],null))[_0x58f2('0x2a')](respondWithResult(_0x4fb9d7,null))[_0x58f2('0x49')](handleError(_0x4fb9d7,null));};exports[_0x58f2('0x5b')]=function(_0x10b6e1,_0x3bbf17){return db['UserProfile'][_0x58f2('0x4d')]({'where':{'id':_0x10b6e1[_0x58f2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3bbf17,null))['then'](removeEntity(_0x3bbf17,null))['catch'](handleError(_0x3bbf17,null));};exports[_0x58f2('0x5c')]=function(_0x285c3b,_0x42370d){return db[_0x58f2('0x31')]['describe']()[_0x58f2('0x2a')](respondWithResult(_0x42370d,null))[_0x58f2('0x49')](handleError(_0x42370d,null));};exports['addSections']=function(_0x4f7885,_0x4cbab1){var _0x41750f=_0x4f7885[_0x58f2('0x4e')];return db['UserProfile'][_0x58f2('0x4d')]({'where':{'id':_0x4f7885[_0x58f2('0x4a')]['id']}})[_0x58f2('0x2a')](handleEntityNotFound(_0x4cbab1,null))[_0x58f2('0x2a')](function(_0x40d941){if(_0x40d941){return db[_0x58f2('0x53')][_0x58f2('0x54')](function(_0x16ec6f){return db['UserProfileSection'][_0x58f2('0x5b')]({'where':{'userProfileId':_0x4f7885[_0x58f2('0x4a')]['id'],'sectionId':_[_0x58f2('0x30')](_0x41750f,function(_0x2b934b){return _0x2b934b[_0x58f2('0x5d')];})},'transaction':_0x16ec6f})[_0x58f2('0x2a')](function(){var _0x45c6df=_['map'](_0x41750f,function(_0x39d5c3){_0x39d5c3[_0x58f2('0x5a')]=_0x4f7885['params']['id'];return _0x39d5c3;});var _0x17edf4=[];return BPromise['each'](_0x45c6df,function(_0x29ba1e){return db[_0x58f2('0x57')][_0x58f2('0x55')](_0x29ba1e,{'include':[{'model':db[_0x58f2('0x59')],'as':_0x58f2('0x5e')}],'raw':!![],'transaction':_0x16ec6f})['then'](function(_0x27e791){_0x17edf4[_0x58f2('0x5f')](_0x27e791[_0x58f2('0x56')]({'plain':!![]}));});})['then'](function(){return _0x17edf4;});});});}})['then'](function(_0x1c2ff5){return _0x1c2ff5;})[_0x58f2('0x2a')](respondWithResult(_0x4cbab1,null))[_0x58f2('0x49')](handleError(_0x4cbab1,null));};exports[_0x58f2('0x60')]=function(_0x25c95b,_0x543945){var _0x1ffa27;return db[_0x58f2('0x31')][_0x58f2('0x4d')]({'where':{'id':_0x25c95b['params']['id']},'attributes':['id',_0x58f2('0x2d')]})[_0x58f2('0x2a')](handleEntityNotFound(_0x543945,null))[_0x58f2('0x2a')](function(_0x1c5cea){if(_0x1c5cea){_0x1ffa27=_0x1c5cea;return db[_0x58f2('0x57')]['destroy']({'where':{'userProfileId':_0x25c95b[_0x58f2('0x4a')]['id'],'sectionId':_0x25c95b[_0x58f2('0x37')][_0x58f2('0x61')]}});}})['then'](function(){return _0x1ffa27;})[_0x58f2('0x2a')](respondWithStatusCode(_0x543945,null))['catch'](handleError(_0x543945,null));};exports[_0x58f2('0x62')]=function(_0x1fbafa,_0x49f320){var _0x2287f6=[];var _0x12ba26=[];return db[_0x58f2('0x57')][_0x58f2('0x47')]({'where':{'userProfileId':_0x1fbafa[_0x58f2('0x4a')]['id']},'raw':!![]})[_0x58f2('0x2a')](function(_0x3c0282){_0x2287f6=_[_0x58f2('0x42')](_0x3c0282,function(_0x26d22c){return _0x26d22c[_0x58f2('0x63')]===0x1||_[_0x58f2('0x64')]([0x3eb,0x709],_0x26d22c[_0x58f2('0x5d')]);});if(!_[_0x58f2('0x65')](_0x2287f6)){return _[_0x58f2('0x30')](_0x2287f6,function(_0x325632){return _0x325632['sectionId'];});}else{return;}})[_0x58f2('0x2a')](function(_0x5bd852){if(_0x5bd852)_0x12ba26=_0x5bd852;if(_['includes'](_0x12ba26,0x64)){var _0x3d6b8e=_[_0x58f2('0x4d')](_0x2287f6,{'sectionId':0x64});return hasDefaultDashboard(_0x3d6b8e)['then'](function(_0x3b77b4){return _['map'](_0x2287f6,function(_0x5380f5){if(_0x5380f5[_0x58f2('0x5d')]===0x64){_0x5380f5[_0x58f2('0x66')]=_0x3b77b4;}return _0x5380f5;});});}else{return;}})['then'](function(_0x59d566){if(_0x59d566)_0x2287f6=_0x59d566;if(_[_0x58f2('0x64')](_0x12ba26,0x3eb)){var _0x4f9c9c=_[_0x58f2('0x4d')](_0x2287f6,{'sectionId':0x3eb});return getCustomDashboards(_0x4f9c9c)['then'](function(_0x104a53){return _[_0x58f2('0x30')](_0x2287f6,function(_0x4db4dd){if(_0x4f9c9c[_0x58f2('0x63')]){if(_0x4db4dd[_0x58f2('0x5d')]===0x3eb){_0x4db4dd['subsections']=_0x104a53;}}else{if(_0x4db4dd[_0x58f2('0x5d')]===0x64){_0x4db4dd[_0x58f2('0x66')]=_0x104a53;}}return _0x4db4dd;});});}else{return;}})[_0x58f2('0x2a')](function(_0x1bafde){if(_0x1bafde)_0x2287f6=_0x1bafde;if(_[_0x58f2('0x64')](_0x12ba26,0x709)){var _0x301b24=_[_0x58f2('0x4d')](_0x2287f6,{'sectionId':0x709});return getPlugins(_0x301b24)[_0x58f2('0x2a')](function(_0x457a63){if(_0x301b24[_0x58f2('0x63')]){return _[_0x58f2('0x30')](_0x2287f6,function(_0x4c3da5){if(_0x4c3da5['sectionId']===0x709){_0x4c3da5[_0x58f2('0x66')]=_0x457a63;}return _0x4c3da5;});}else{var _0x1b6ae0={'sectionId':0x76c,'enabled':0x1,'subsections':_0x457a63};var _0x5f422a=_[_0x58f2('0x30')](_0x2287f6);_0x5f422a['push'](_0x1b6ae0);return _0x5f422a;}});}else{return;}})[_0x58f2('0x2a')](function(_0x5ae521){if(_0x5ae521)_0x2287f6=_0x5ae521;return _[_0x58f2('0x42')](_0x2287f6,[_0x58f2('0x63'),0x1]);})[_0x58f2('0x2a')](respondWithResult(_0x49f320,null))['catch'](handleError(_0x49f320,null));};function hasDefaultDashboard(_0x51e3a9){var _0xf58d68=[0x65];return new BPromise(function(_0x4c1cae,_0xaed07d){try{if(_0x51e3a9[_0x58f2('0x58')]){_0x4c1cae(_0xf58d68);}else{return db[_0x58f2('0x59')][_0x58f2('0x67')]({'where':{'sectionId':_0x51e3a9['id']},'raw':!![]})['then'](function(_0x48c102){_0x48c102?_0x4c1cae(_0xf58d68):_0x4c1cae();});}}catch(_0x15612f){_0xaed07d(_0x15612f);}});}function getCustomDashboards(_0x5e8b95){var _0x118ce1=[];return new BPromise(function(_0x29b122,_0x257783){try{if(_0x5e8b95[_0x58f2('0x58')]){return db[_0x58f2('0x68')]['findAll']({'raw':!![]})['then'](function(_0xd74443){_0xd74443['forEach'](function(_0x3e7529){_0x118ce1[_0x58f2('0x5f')](_0x3e7529['id']+0x1869f);});_0x29b122(_0x118ce1);});}else{return db[_0x58f2('0x59')]['findAll']({'where':{'sectionId':_0x5e8b95['id']},'raw':!![]})['then'](function(_0x3027f4){_0x3027f4[_0x58f2('0x69')](function(_0x4c3388){_0x118ce1[_0x58f2('0x5f')](_0x4c3388[_0x58f2('0x6a')]+0x1869f);});_0x29b122(_0x118ce1);});}}catch(_0x214134){_0x257783(_0x214134);}});}function getPlugins(_0x30e54e){var _0x5f2357=[];return new BPromise(function(_0x2e5ec6,_0x4b4bd6){try{if(_0x30e54e[_0x58f2('0x58')]){return db[_0x58f2('0x6b')][_0x58f2('0x47')]({'raw':!![]})[_0x58f2('0x2a')](function(_0x29890b){_0x29890b[_0x58f2('0x69')](function(_0x9360c0){_0x5f2357[_0x58f2('0x5f')](_0x9360c0['id']+0x15b38);});_0x2e5ec6(_0x5f2357);});}else{return db[_0x58f2('0x59')][_0x58f2('0x47')]({'where':{'sectionId':_0x30e54e['id']},'raw':!![]})[_0x58f2('0x2a')](function(_0x55850f){_0x55850f['forEach'](function(_0x1df694){_0x5f2357[_0x58f2('0x5f')](_0x1df694[_0x58f2('0x6a')]+0x15b38);});_0x2e5ec6(_0x5f2357);});}}catch(_0x1945ae){_0x4b4bd6(_0x1945ae);}});}exports[_0x58f2('0x6c')]=function(_0x2ae32a,_0x55eee5){return db[_0x58f2('0x31')][_0x58f2('0x4d')]({'where':{'id':_0x2ae32a['params']['id']}})[_0x58f2('0x2a')](handleEntityNotFound(_0x55eee5,null))[_0x58f2('0x2a')](function(_0x291a14){if(_0x291a14){return db['sequelize'][_0x58f2('0x54')](function(_0x28fb68){return db[_0x58f2('0x57')][_0x58f2('0x47')]({'where':{'userProfileId':_0x2ae32a['params']['id']},'attributes':['id'],'raw':!![]})[_0x58f2('0x2a')](function(_0x514d54){if(_0x514d54){return db[_0x58f2('0x57')]['destroy']({'where':{'userProfileId':_0x2ae32a[_0x58f2('0x4a')]['id'],'id':_[_0x58f2('0x30')](_0x514d54,function(_0xd6c35){return _0xd6c35['id'];})},'transaction':_0x28fb68});}})[_0x58f2('0x2a')](function(_0x5800a1){var _0x4f134a=_['map'](_0x2ae32a[_0x58f2('0x4e')],function(_0xabfa7b){_0xabfa7b[_0x58f2('0x5a')]=_0x2ae32a[_0x58f2('0x4a')]['id'];return _0xabfa7b;});return db[_0x58f2('0x57')][_0x58f2('0x6d')](_0x4f134a,{'raw':!![],'transaction':_0x28fb68});})['then'](function(_0x5ea0d5){var _0x597b9e=_[_0x58f2('0x42')](_[_0x58f2('0x30')](_0x5ea0d5,function(_0x399e64){return _0x399e64[_0x58f2('0x56')]({'plain':!![]});}),{'includeAll':![]});if(_0x597b9e){return db[_0x58f2('0x57')][_0x58f2('0x47')]({'where':{'userProfileId':_0x2ae32a[_0x58f2('0x4a')]['id'],'sectionId':_['map'](_0x597b9e,function(_0x479ffe){return _0x479ffe['sectionId'];})},'attributes':['id','sectionId'],'raw':!![]})[_0x58f2('0x2a')](function(_0x3fd916){var _0xbd3540=_['map'](_0x2ae32a[_0x58f2('0x4e')],function(_0x95990a){_0x95990a[_0x58f2('0x5a')]=_0x2ae32a[_0x58f2('0x4a')]['id'];return _0x95990a;});return db['UserProfileResource'][_0x58f2('0x6d')](_0xbd3540,{'raw':!![],'transaction':_0x28fb68});});}})[_0x58f2('0x49')](handleError(_0x55eee5,null));});}})[_0x58f2('0x2a')](function(_0x3ee3f6){var _0x483f43=_[_0x58f2('0x30')](_0x3ee3f6,function(_0x3d0dfb){return _0x3d0dfb[_0x58f2('0x56')]({'plain':!![]});});})[_0x58f2('0x2a')](respondWithResult(_0x55eee5,null))[_0x58f2('0x49')](handleError(_0x55eee5,null));};exports[_0x58f2('0x6e')]=function(_0x4a45a5,_0x4d9a76,_0x3cc808){return db[_0x58f2('0x31')]['find']({'where':{'id':_0x4a45a5[_0x58f2('0x4a')]['id']}})[_0x58f2('0x2a')](handleEntityNotFound(_0x4d9a76,null))[_0x58f2('0x2a')](function(_0x59ab71){if(_0x59ab71){return _0x59ab71[_0x58f2('0x6e')](_0x4a45a5[_0x58f2('0x37')]['ids']);}})[_0x58f2('0x2a')](respondWithStatusCode(_0x4d9a76,null))[_0x58f2('0x49')](handleError(_0x4d9a76,null));};exports[_0x58f2('0x6f')]=function(_0x3a80fc,_0x252851){var _0x1026f5={};if(!_0x3a80fc['query'][_0x58f2('0x70')])throw new Error(_0x58f2('0x71'));if(!_0x3a80fc[_0x58f2('0x37')][_0x58f2('0x3d')](_0x58f2('0x72'))){_0x1026f5[_0x58f2('0x24')]=qs[_0x58f2('0x24')](_0x3a80fc[_0x58f2('0x37')][_0x58f2('0x24')]);_0x1026f5[_0x58f2('0x23')]=qs[_0x58f2('0x23')](_0x3a80fc[_0x58f2('0x37')][_0x58f2('0x23')]);}return db[_0x58f2('0x31')][_0x58f2('0x4d')]({'where':{'id':_0x3a80fc['params']['id']}})[_0x58f2('0x2a')](function(_0x15b6d3){if(!_0x15b6d3)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x3a80fc[_0x58f2('0x4a')]['id']);return db[_0x58f2('0x31')][_0x58f2('0x6f')](_0x3a80fc);})[_0x58f2('0x2a')](respondWithFilteredResult(_0x252851,_0x1026f5))[_0x58f2('0x49')](handleError(_0x252851,null));};
\ No newline at end of file
+var _0xd878=['key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','pick','filter','where','VIRTUAL','merge','options','UserProfile','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','clone','get','updatedAt','crudPermissions','createdAt','sequelize','transaction','UserProfileSection','autoAssociation','UserProfileResource','omit','userProfileId','Resources','describe','addSections','sectionId','each','push','removeSections','ids','includes','subsections','enabled','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./userProfile.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','map','fieldName','type'];(function(_0x35b7d4,_0x5a5c43){var _0x4e8cee=function(_0x66859c){while(--_0x66859c){_0x35b7d4['push'](_0x35b7d4['shift']());}};_0x4e8cee(++_0x5a5c43);}(_0xd878,0x118));var _0x8d87=function(_0x4924d3,_0x5c088e){_0x4924d3=_0x4924d3-0x0;var _0x756f4e=_0xd878[_0x4924d3];return _0x756f4e;};'use strict';var emlformat=require(_0x8d87('0x0'));var rimraf=require(_0x8d87('0x1'));var zipdir=require(_0x8d87('0x2'));var jsonpatch=require(_0x8d87('0x3'));var rp=require(_0x8d87('0x4'));var moment=require(_0x8d87('0x5'));var BPromise=require(_0x8d87('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x8d87('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d87('0x8'));var _=require(_0x8d87('0x9'));var squel=require(_0x8d87('0xa'));var crypto=require(_0x8d87('0xb'));var jsforce=require(_0x8d87('0xc'));var deskjs=require(_0x8d87('0xd'));var toCsv=require(_0x8d87('0xe'));var querystring=require(_0x8d87('0xf'));var Papa=require(_0x8d87('0x10'));var Redis=require('ioredis');var authService=require(_0x8d87('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8d87('0x12'));var logger=require(_0x8d87('0x13'))(_0x8d87('0x14'));var utils=require(_0x8d87('0x15'));var config=require(_0x8d87('0x16'));var licenseUtil=require(_0x8d87('0x17'));var db=require('../../mysqldb')['db'];config[_0x8d87('0x18')]=_['defaults'](config[_0x8d87('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x8d87('0x19'))(new Redis(config[_0x8d87('0x18')]));require(_0x8d87('0x1a'))['register'](socket);function respondWithStatusCode(_0x3107dd,_0x53b15e){_0x53b15e=_0x53b15e||0xcc;return function(_0x54ac96){if(_0x54ac96){return _0x3107dd[_0x8d87('0x1b')](_0x53b15e);}return _0x3107dd[_0x8d87('0x1c')](_0x53b15e)[_0x8d87('0x1d')]();};}function respondWithResult(_0x28c54e,_0x262833){_0x262833=_0x262833||0xc8;return function(_0x21d1dc){if(_0x21d1dc){return _0x28c54e['status'](_0x262833)[_0x8d87('0x1e')](_0x21d1dc);}};}function respondWithFilteredResult(_0x3326d5,_0x5b627f){return function(_0x53fe79){if(_0x53fe79){var _0x3e04c8=typeof _0x5b627f[_0x8d87('0x1f')]===_0x8d87('0x20')&&typeof _0x5b627f['limit']===_0x8d87('0x20');var _0x3a3678=_0x53fe79[_0x8d87('0x21')];var _0xde0183=_0x3e04c8?0x0:_0x5b627f[_0x8d87('0x1f')];var _0x2358f1=_0x3e04c8?_0x53fe79[_0x8d87('0x21')]:_0x5b627f[_0x8d87('0x1f')]+_0x5b627f[_0x8d87('0x22')];var _0xfe5cc1;if(_0x2358f1>=_0x3a3678){_0x2358f1=_0x3a3678;_0xfe5cc1=0xc8;}else{_0xfe5cc1=0xce;}_0x3326d5[_0x8d87('0x1c')](_0xfe5cc1);return _0x3326d5[_0x8d87('0x23')](_0x8d87('0x24'),_0xde0183+'-'+_0x2358f1+'/'+_0x3a3678)[_0x8d87('0x1e')](_0x53fe79);}return null;};}function patchUpdates(_0x1d6e42){return function(_0x358998){try{jsonpatch[_0x8d87('0x25')](_0x358998,_0x1d6e42,!![]);}catch(_0x1128f9){return BPromise[_0x8d87('0x26')](_0x1128f9);}return _0x358998['save']();};}function saveUpdates(_0x1ce316,_0x2cd362){return function(_0x5f7030){if(_0x5f7030){return _0x5f7030['update'](_0x1ce316)[_0x8d87('0x27')](function(_0x218ed7){return _0x218ed7;});}return null;};}function removeEntity(_0x46e302,_0x2383b4){return function(_0x35e2f5){if(_0x35e2f5){return _0x35e2f5[_0x8d87('0x28')]()[_0x8d87('0x27')](function(){_0x46e302[_0x8d87('0x1c')](0xcc)[_0x8d87('0x1d')]();});}};}function handleEntityNotFound(_0xa41b40,_0x36f078){return function(_0x2b6aa1){if(!_0x2b6aa1){_0xa41b40[_0x8d87('0x1b')](0x194);}return _0x2b6aa1;};}function handleError(_0x20988d,_0xd70aae){_0xd70aae=_0xd70aae||0x1f4;return function(_0x40f54d){logger[_0x8d87('0x29')](_0x40f54d[_0x8d87('0x2a')]);if(_0x40f54d[_0x8d87('0x2b')]){delete _0x40f54d[_0x8d87('0x2b')];}_0x20988d[_0x8d87('0x1c')](_0xd70aae)['send'](_0x40f54d);};}exports['index']=function(_0x52d932,_0x22aaef){var _0x1b3a71={},_0x3fc8f0={},_0x4638cc={'count':0x0,'rows':[]};var _0x53c29d=_[_0x8d87('0x2c')](db['UserProfile']['rawAttributes'],function(_0x1aad96){return{'name':_0x1aad96[_0x8d87('0x2d')],'type':_0x1aad96[_0x8d87('0x2e')][_0x8d87('0x2f')]};});_0x3fc8f0[_0x8d87('0x30')]=_[_0x8d87('0x2c')](_0x53c29d,_0x8d87('0x2b'));_0x3fc8f0[_0x8d87('0x31')]=_['keys'](_0x52d932[_0x8d87('0x31')]);_0x3fc8f0[_0x8d87('0x32')]=_[_0x8d87('0x33')](_0x3fc8f0[_0x8d87('0x30')],_0x3fc8f0['query']);_0x1b3a71[_0x8d87('0x34')]=_[_0x8d87('0x33')](_0x3fc8f0['model'],qs['fields'](_0x52d932[_0x8d87('0x31')][_0x8d87('0x35')]));_0x1b3a71['attributes']=_0x1b3a71[_0x8d87('0x34')][_0x8d87('0x36')]?_0x1b3a71['attributes']:_0x3fc8f0[_0x8d87('0x30')];if(!_0x52d932[_0x8d87('0x31')][_0x8d87('0x37')]('nolimit')){_0x1b3a71[_0x8d87('0x22')]=qs['limit'](_0x52d932[_0x8d87('0x31')][_0x8d87('0x22')]);_0x1b3a71[_0x8d87('0x1f')]=qs[_0x8d87('0x1f')](_0x52d932['query'][_0x8d87('0x1f')]);}_0x1b3a71[_0x8d87('0x38')]=qs['sort'](_0x52d932['query']['sort']);_0x1b3a71['where']=qs[_0x8d87('0x32')](_[_0x8d87('0x39')](_0x52d932[_0x8d87('0x31')],_0x3fc8f0['filters']),_0x53c29d);if(_0x52d932[_0x8d87('0x31')][_0x8d87('0x3a')]){_0x1b3a71['where']=_['merge'](_0x1b3a71[_0x8d87('0x3b')],{'$or':_[_0x8d87('0x2c')](_0x53c29d,function(_0x554745){if(_0x554745[_0x8d87('0x2e')]!==_0x8d87('0x3c')){var _0x816268={};_0x816268[_0x554745['name']]={'$like':'%'+_0x52d932[_0x8d87('0x31')][_0x8d87('0x3a')]+'%'};return _0x816268;}})});}_0x1b3a71=_[_0x8d87('0x3d')]({},_0x1b3a71,_0x52d932[_0x8d87('0x3e')]);var _0x18ba54={'where':_0x1b3a71[_0x8d87('0x3b')]};return db[_0x8d87('0x3f')][_0x8d87('0x21')](_0x18ba54)['then'](function(_0x1d6a80){_0x4638cc[_0x8d87('0x21')]=_0x1d6a80;if(_0x52d932[_0x8d87('0x31')][_0x8d87('0x40')]){_0x1b3a71[_0x8d87('0x41')]=[{'all':!![]}];}return db[_0x8d87('0x3f')][_0x8d87('0x42')](_0x1b3a71);})[_0x8d87('0x27')](function(_0x2a9893){_0x4638cc[_0x8d87('0x43')]=_0x2a9893;return _0x4638cc;})['then'](respondWithFilteredResult(_0x22aaef,_0x1b3a71))[_0x8d87('0x44')](handleError(_0x22aaef,null));};exports[_0x8d87('0x45')]=function(_0x3146ff,_0x227192){var _0x6452da={'raw':![],'where':{'id':_0x3146ff[_0x8d87('0x46')]['id']}},_0x4591f4={};_0x4591f4[_0x8d87('0x30')]=_[_0x8d87('0x47')](db[_0x8d87('0x3f')][_0x8d87('0x48')]);_0x4591f4['query']=_[_0x8d87('0x47')](_0x3146ff['query']);_0x4591f4[_0x8d87('0x32')]=_[_0x8d87('0x33')](_0x4591f4[_0x8d87('0x30')],_0x4591f4['query']);_0x6452da[_0x8d87('0x34')]=_[_0x8d87('0x33')](_0x4591f4['model'],qs[_0x8d87('0x35')](_0x3146ff[_0x8d87('0x31')]['fields']));_0x6452da[_0x8d87('0x34')]=_0x6452da[_0x8d87('0x34')][_0x8d87('0x36')]?_0x6452da[_0x8d87('0x34')]:_0x4591f4[_0x8d87('0x30')];if(_0x3146ff[_0x8d87('0x31')][_0x8d87('0x40')]){_0x6452da[_0x8d87('0x41')]=[{'all':!![]}];}_0x6452da=_[_0x8d87('0x3d')]({},_0x6452da,_0x3146ff['options']);return db[_0x8d87('0x3f')][_0x8d87('0x49')](_0x6452da)['then'](handleEntityNotFound(_0x227192,null))[_0x8d87('0x27')](respondWithResult(_0x227192,null))[_0x8d87('0x44')](handleError(_0x227192,null));};exports[_0x8d87('0x4a')]=function(_0x2e9526,_0xffbfcb){return db['UserProfile'][_0x8d87('0x4a')](_0x2e9526[_0x8d87('0x4b')],{})[_0x8d87('0x27')](respondWithResult(_0xffbfcb,0xc9))['catch'](handleError(_0xffbfcb,null));};exports[_0x8d87('0x4c')]=function(_0xd08253,_0x591269){var _0x1316fc={'where':{'id':_0xd08253['params']['id']}},_0x205ccc={};_0x205ccc['model']=_[_0x8d87('0x47')](db[_0x8d87('0x3f')][_0x8d87('0x48')]);_0x1316fc[_0x8d87('0x34')]=_[_0x8d87('0x33')](_0x205ccc[_0x8d87('0x30')],qs[_0x8d87('0x35')](_0xd08253['query']['fields']));_0x1316fc[_0x8d87('0x34')]=_0x1316fc['attributes'][_0x8d87('0x36')]?_0x1316fc[_0x8d87('0x34')]:_0x205ccc[_0x8d87('0x30')];if(_0xd08253[_0x8d87('0x31')][_0x8d87('0x40')]){_0x1316fc[_0x8d87('0x41')]=[{'all':!![]}];}_0x1316fc=_[_0x8d87('0x3d')]({},_0x1316fc,_0xd08253['options']);return db['UserProfile'][_0x8d87('0x49')](_0x1316fc)['then'](handleEntityNotFound(_0x591269,null))['then'](function(_0x4a5daa){if(_0x4a5daa){var _0x2ba2ab=_0x4a5daa[_0x8d87('0x4d')]({'plain':!![]});_0x2ba2ab=qs['omit'](_0x2ba2ab,['id','createdAt',_0x8d87('0x4e'),_0x8d87('0x4f')]);_0xd08253['body']=_['omit'](_0xd08253[_0x8d87('0x4b')],['id',_0x8d87('0x50'),'updatedAt']);return db[_0x8d87('0x51')][_0x8d87('0x52')](function(_0x18f80e){return db[_0x8d87('0x3f')][_0x8d87('0x4a')](_[_0x8d87('0x3d')](_0x2ba2ab,_0xd08253[_0x8d87('0x4b')]),{'include':_0xd08253[_0x8d87('0x31')][_0x8d87('0x40')]?[{'all':!![]}]:undefined,'transaction':_0x18f80e})['then'](function(_0x2d8f83){var _0x6b6975=_0x2d8f83['get']({'plain':!![]});return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0xd08253[_0x8d87('0x46')]['id']},'raw':!![]})['then'](function(_0x5e17d0){if(_0x5e17d0){return BPromise['each'](_0x5e17d0,function(_0x16ed3f){return new BPromise(function(_0x1987e6,_0x256a4f){if(_0x16ed3f[_0x8d87('0x54')]===null||_0x16ed3f[_0x8d87('0x54')]===0x1)_0x1987e6(null);return db[_0x8d87('0x55')][_0x8d87('0x42')]({'where':{'sectionId':_0x16ed3f['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x481f92){var _0x5a8e8e=_['map'](_0x481f92,function(_0x59eebe){return qs[_0x8d87('0x56')](_0x59eebe,['id',_0x8d87('0x50'),_0x8d87('0x4e'),'sectionId']);});_0x1987e6(_0x5a8e8e);})[_0x8d87('0x44')](function(_0x252654){_0x256a4f(_0x252654);});})[_0x8d87('0x27')](function(_0x3af54a){var _0x2f2875=qs[_0x8d87('0x56')](_0x16ed3f,['id','createdAt','updatedAt']);_0x2f2875[_0x8d87('0x57')]=_0x6b6975['id'];if(_0x3af54a)_0x2f2875[_0x8d87('0x58')]=_0x3af54a;return _0x2f2875;})['then'](function(_0x5da096){return db[_0x8d87('0x53')][_0x8d87('0x4a')](_0x5da096,{'include':[{'model':db[_0x8d87('0x55')],'as':'Resources'}],'raw':!![],'transaction':_0x18f80e});});})[_0x8d87('0x27')](function(){return _0x6b6975;});}});});});}})[_0x8d87('0x27')](respondWithResult(_0x591269,0xc9))[_0x8d87('0x44')](handleError(_0x591269,null));};exports['update']=function(_0x2e09ca,_0x452540){if(_0x2e09ca[_0x8d87('0x4b')]['id']){delete _0x2e09ca['body']['id'];}return db[_0x8d87('0x3f')]['find']({'where':{'id':_0x2e09ca[_0x8d87('0x46')]['id']}})['then'](handleEntityNotFound(_0x452540,null))[_0x8d87('0x27')](saveUpdates(_0x2e09ca[_0x8d87('0x4b')],null))[_0x8d87('0x27')](respondWithResult(_0x452540,null))['catch'](handleError(_0x452540,null));};exports[_0x8d87('0x28')]=function(_0x8e043d,_0xc8186){return db['UserProfile'][_0x8d87('0x49')]({'where':{'id':_0x8e043d['params']['id']}})['then'](handleEntityNotFound(_0xc8186,null))[_0x8d87('0x27')](removeEntity(_0xc8186,null))['catch'](handleError(_0xc8186,null));};exports[_0x8d87('0x59')]=function(_0x5b0fb6,_0x174433){return db[_0x8d87('0x3f')][_0x8d87('0x59')]()['then'](respondWithResult(_0x174433,null))[_0x8d87('0x44')](handleError(_0x174433,null));};exports[_0x8d87('0x5a')]=function(_0x3f462f,_0x3f460f){var _0x3931fa=_0x3f462f[_0x8d87('0x4b')];return db[_0x8d87('0x3f')][_0x8d87('0x49')]({'where':{'id':_0x3f462f[_0x8d87('0x46')]['id']}})[_0x8d87('0x27')](handleEntityNotFound(_0x3f460f,null))['then'](function(_0x3faffd){if(_0x3faffd){return db['sequelize'][_0x8d87('0x52')](function(_0x4ef9af){return db[_0x8d87('0x53')]['destroy']({'where':{'userProfileId':_0x3f462f[_0x8d87('0x46')]['id'],'sectionId':_[_0x8d87('0x2c')](_0x3931fa,function(_0x50a125){return _0x50a125[_0x8d87('0x5b')];})},'transaction':_0x4ef9af})['then'](function(){var _0x1bcf54=_[_0x8d87('0x2c')](_0x3931fa,function(_0x36cb01){_0x36cb01['userProfileId']=_0x3f462f[_0x8d87('0x46')]['id'];return _0x36cb01;});var _0x3ba937=[];return BPromise[_0x8d87('0x5c')](_0x1bcf54,function(_0x402ad0){return db[_0x8d87('0x53')][_0x8d87('0x4a')](_0x402ad0,{'include':[{'model':db['UserProfileResource'],'as':_0x8d87('0x58')}],'raw':!![],'transaction':_0x4ef9af})[_0x8d87('0x27')](function(_0x3f746d){_0x3ba937[_0x8d87('0x5d')](_0x3f746d['get']({'plain':!![]}));});})[_0x8d87('0x27')](function(){return _0x3ba937;});});});}})[_0x8d87('0x27')](function(_0x526126){return _0x526126;})[_0x8d87('0x27')](respondWithResult(_0x3f460f,null))[_0x8d87('0x44')](handleError(_0x3f460f,null));};exports[_0x8d87('0x5e')]=function(_0x45dc53,_0x5573f6){var _0x2bbc06;return db[_0x8d87('0x3f')]['find']({'where':{'id':_0x45dc53[_0x8d87('0x46')]['id']},'attributes':['id',_0x8d87('0x2b')]})['then'](handleEntityNotFound(_0x5573f6,null))[_0x8d87('0x27')](function(_0x20c42c){if(_0x20c42c){_0x2bbc06=_0x20c42c;return db[_0x8d87('0x53')][_0x8d87('0x28')]({'where':{'userProfileId':_0x45dc53[_0x8d87('0x46')]['id'],'sectionId':_0x45dc53[_0x8d87('0x31')][_0x8d87('0x5f')]}});}})['then'](function(){return _0x2bbc06;})['then'](respondWithStatusCode(_0x5573f6,null))['catch'](handleError(_0x5573f6,null));};exports['getSections']=function(_0x5802fa,_0x12e2a7){var _0x4700d0=[];var _0x4be86d=[];return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0x5802fa[_0x8d87('0x46')]['id']},'raw':!![]})[_0x8d87('0x27')](function(_0xa2903e){_0x4700d0=_[_0x8d87('0x3a')](_0xa2903e,function(_0x571a22){return _0x571a22['enabled']===0x1||_[_0x8d87('0x60')]([0x3eb,0x709],_0x571a22[_0x8d87('0x5b')]);});if(!_['isEmpty'](_0x4700d0)){return _['map'](_0x4700d0,function(_0x2f5e5b){return _0x2f5e5b['sectionId'];});}else{return;}})[_0x8d87('0x27')](function(_0x4daa2d){if(_0x4daa2d)_0x4be86d=_0x4daa2d;if(_[_0x8d87('0x60')](_0x4be86d,0x64)){var _0x3c0b02=_[_0x8d87('0x49')](_0x4700d0,{'sectionId':0x64});return hasDefaultDashboard(_0x3c0b02)[_0x8d87('0x27')](function(_0x9748c4){return _[_0x8d87('0x2c')](_0x4700d0,function(_0x4e670b){if(_0x4e670b['sectionId']===0x64){_0x4e670b[_0x8d87('0x61')]=_0x9748c4;}return _0x4e670b;});});}else{return;}})[_0x8d87('0x27')](function(_0x3eb3a3){if(_0x3eb3a3)_0x4700d0=_0x3eb3a3;if(_['includes'](_0x4be86d,0x3eb)){var _0x8b2319=_['find'](_0x4700d0,{'sectionId':0x3eb});return getCustomDashboards(_0x8b2319)[_0x8d87('0x27')](function(_0x3274a3){return _[_0x8d87('0x2c')](_0x4700d0,function(_0x23e3fc){if(_0x8b2319[_0x8d87('0x62')]){if(_0x23e3fc['sectionId']===0x3eb){_0x23e3fc[_0x8d87('0x61')]=_0x3274a3;}}else{if(_0x23e3fc[_0x8d87('0x5b')]===0x64){_0x23e3fc[_0x8d87('0x61')]=_0x3274a3;}}return _0x23e3fc;});});}else{return;}})[_0x8d87('0x27')](function(_0x20f611){if(_0x20f611)_0x4700d0=_0x20f611;if(_[_0x8d87('0x60')](_0x4be86d,0x709)){var _0x5d3f91=_[_0x8d87('0x49')](_0x4700d0,{'sectionId':0x709});return getPlugins(_0x5d3f91)[_0x8d87('0x27')](function(_0x55faa4){if(_0x5d3f91['enabled']){return _[_0x8d87('0x2c')](_0x4700d0,function(_0x3b7ec2){if(_0x3b7ec2[_0x8d87('0x5b')]===0x709){_0x3b7ec2[_0x8d87('0x61')]=_0x55faa4;}return _0x3b7ec2;});}else{var _0x492643={'sectionId':0x76c,'enabled':0x1,'subsections':_0x55faa4};var _0x1ca6a2=_[_0x8d87('0x2c')](_0x4700d0);_0x1ca6a2[_0x8d87('0x5d')](_0x492643);return _0x1ca6a2;}});}else{return;}})[_0x8d87('0x27')](function(_0x5b170c){if(_0x5b170c)_0x4700d0=_0x5b170c;return _['filter'](_0x4700d0,[_0x8d87('0x62'),0x1]);})[_0x8d87('0x27')](respondWithResult(_0x12e2a7,null))[_0x8d87('0x44')](handleError(_0x12e2a7,null));};function hasDefaultDashboard(_0x55cf73){var _0x44abb0=[0x65];return new BPromise(function(_0x3395b9,_0x2ff357){try{if(_0x55cf73[_0x8d87('0x54')]){_0x3395b9(_0x44abb0);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x55cf73['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x3cbe76){_0x3cbe76?_0x3395b9(_0x44abb0):_0x3395b9();});}}catch(_0x58aa26){_0x2ff357(_0x58aa26);}});}function getCustomDashboards(_0x527c43){var _0x28f48f=[];return new BPromise(function(_0x472666,_0x6e7a18){try{if(_0x527c43[_0x8d87('0x54')]){return db['Dashboard']['findAll']({'raw':!![]})[_0x8d87('0x27')](function(_0x399190){_0x399190['forEach'](function(_0x107acb){_0x28f48f[_0x8d87('0x5d')](_0x107acb['id']+0x1869f);});_0x472666(_0x28f48f);});}else{return db[_0x8d87('0x55')][_0x8d87('0x42')]({'where':{'sectionId':_0x527c43['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x30464a){_0x30464a[_0x8d87('0x63')](function(_0x281220){_0x28f48f[_0x8d87('0x5d')](_0x281220[_0x8d87('0x64')]+0x1869f);});_0x472666(_0x28f48f);});}}catch(_0x1a3321){_0x6e7a18(_0x1a3321);}});}function getPlugins(_0x545c8d){var _0x2d04f6=[];return new BPromise(function(_0x1ce591,_0x41754e){try{if(_0x545c8d[_0x8d87('0x54')]){return db['Plugin'][_0x8d87('0x42')]({'raw':!![]})['then'](function(_0xb7cb31){_0xb7cb31[_0x8d87('0x63')](function(_0x27e72f){_0x2d04f6[_0x8d87('0x5d')](_0x27e72f['id']+0x15b38);});_0x1ce591(_0x2d04f6);});}else{return db[_0x8d87('0x55')][_0x8d87('0x42')]({'where':{'sectionId':_0x545c8d['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x5b1faa){_0x5b1faa[_0x8d87('0x63')](function(_0xce1f09){_0x2d04f6['push'](_0xce1f09[_0x8d87('0x64')]+0x15b38);});_0x1ce591(_0x2d04f6);});}}catch(_0x336572){_0x41754e(_0x336572);}});}exports[_0x8d87('0x65')]=function(_0xf3a391,_0x21f3c9){return db[_0x8d87('0x3f')][_0x8d87('0x49')]({'where':{'id':_0xf3a391[_0x8d87('0x46')]['id']}})[_0x8d87('0x27')](handleEntityNotFound(_0x21f3c9,null))[_0x8d87('0x27')](function(_0x2498c0){if(_0x2498c0){return db[_0x8d87('0x51')][_0x8d87('0x52')](function(_0x3dd619){return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0xf3a391[_0x8d87('0x46')]['id']},'attributes':['id'],'raw':!![]})[_0x8d87('0x27')](function(_0x1cb525){if(_0x1cb525){return db['UserProfileSection'][_0x8d87('0x28')]({'where':{'userProfileId':_0xf3a391['params']['id'],'id':_[_0x8d87('0x2c')](_0x1cb525,function(_0x6af51d){return _0x6af51d['id'];})},'transaction':_0x3dd619});}})['then'](function(_0x1b09fc){var _0x27e561=_[_0x8d87('0x2c')](_0xf3a391[_0x8d87('0x4b')],function(_0x4b7a2b){_0x4b7a2b[_0x8d87('0x57')]=_0xf3a391[_0x8d87('0x46')]['id'];return _0x4b7a2b;});return db[_0x8d87('0x53')][_0x8d87('0x66')](_0x27e561,{'raw':!![],'transaction':_0x3dd619});})[_0x8d87('0x27')](function(_0x3ba247){var _0x1f958b=_['filter'](_[_0x8d87('0x2c')](_0x3ba247,function(_0x120be5){return _0x120be5[_0x8d87('0x4d')]({'plain':!![]});}),{'includeAll':![]});if(_0x1f958b){return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0xf3a391[_0x8d87('0x46')]['id'],'sectionId':_[_0x8d87('0x2c')](_0x1f958b,function(_0x27ac8f){return _0x27ac8f[_0x8d87('0x5b')];})},'attributes':['id',_0x8d87('0x5b')],'raw':!![]})[_0x8d87('0x27')](function(_0x112bdd){var _0x154de7=_[_0x8d87('0x2c')](_0xf3a391[_0x8d87('0x4b')],function(_0x4e132e){_0x4e132e[_0x8d87('0x57')]=_0xf3a391[_0x8d87('0x46')]['id'];return _0x4e132e;});return db[_0x8d87('0x55')]['bulkCreate'](_0x154de7,{'raw':!![],'transaction':_0x3dd619});});}})['catch'](handleError(_0x21f3c9,null));});}})[_0x8d87('0x27')](function(_0x317010){var _0x3a101e=_['map'](_0x317010,function(_0x4375b1){return _0x4375b1[_0x8d87('0x4d')]({'plain':!![]});});})[_0x8d87('0x27')](respondWithResult(_0x21f3c9,null))[_0x8d87('0x44')](handleError(_0x21f3c9,null));};exports[_0x8d87('0x67')]=function(_0x9a784e,_0x11388e,_0x3f1dde){return db[_0x8d87('0x3f')]['find']({'where':{'id':_0x9a784e[_0x8d87('0x46')]['id']}})['then'](handleEntityNotFound(_0x11388e,null))['then'](function(_0x409eed){if(_0x409eed){return _0x409eed[_0x8d87('0x67')](_0x9a784e[_0x8d87('0x31')][_0x8d87('0x5f')]);}})[_0x8d87('0x27')](respondWithStatusCode(_0x11388e,null))[_0x8d87('0x44')](handleError(_0x11388e,null));};exports[_0x8d87('0x68')]=function(_0x3332b7,_0x2d426b){var _0x17da06={};if(!_0x3332b7['query'][_0x8d87('0x69')])throw new Error(_0x8d87('0x6a'));if(!_0x3332b7[_0x8d87('0x31')]['hasOwnProperty'](_0x8d87('0x6b'))){_0x17da06[_0x8d87('0x22')]=qs['limit'](_0x3332b7['query'][_0x8d87('0x22')]);_0x17da06[_0x8d87('0x1f')]=qs['offset'](_0x3332b7[_0x8d87('0x31')][_0x8d87('0x1f')]);}return db[_0x8d87('0x3f')][_0x8d87('0x49')]({'where':{'id':_0x3332b7[_0x8d87('0x46')]['id']}})[_0x8d87('0x27')](function(_0x541011){if(!_0x541011)throw new Error(_0x8d87('0x6c')+_0x3332b7[_0x8d87('0x46')]['id']);return db[_0x8d87('0x3f')]['getResources'](_0x3332b7);})[_0x8d87('0x27')](respondWithFilteredResult(_0x2d426b,_0x17da06))[_0x8d87('0x44')](handleError(_0x2d426b,null));};
\ No newline at end of file
index 75b0c02..554038f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b29=['emit','hasOwnProperty','exports','../../mysqldb','UserProfile','setMaxListeners','save','remove'];(function(_0x75eef5,_0x34e2dd){var _0x265fe7=function(_0x37292a){while(--_0x37292a){_0x75eef5['push'](_0x75eef5['shift']());}};_0x265fe7(++_0x34e2dd);}(_0x2b29,0x163));var _0x92b2=function(_0x542c30,_0x1abf33){_0x542c30=_0x542c30-0x0;var _0x55626c=_0x2b29[_0x542c30];return _0x55626c;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x92b2('0x0'))['db'][_0x92b2('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x92b2('0x2')](0x0);var events={'afterCreate':_0x92b2('0x3'),'afterUpdate':'update','afterDestroy':_0x92b2('0x4')};function emitEvent(_0xdb5991){return function(_0xbc7de4,_0x3963eb,_0x16c1b0){UserProfileEvents[_0x92b2('0x5')](_0xdb5991+':'+_0xbc7de4['id'],_0xbc7de4);UserProfileEvents['emit'](_0xdb5991,_0xbc7de4);_0x16c1b0(null);};}for(var e in events){if(events[_0x92b2('0x6')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x92b2('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0xee87=['UserProfile','setMaxListeners','save','update','remove','emit','hook','exports','../../mysqldb'];(function(_0x37093d,_0x59b383){var _0x3f3211=function(_0x5e189c){while(--_0x5e189c){_0x37093d['push'](_0x37093d['shift']());}};_0x3f3211(++_0x59b383);}(_0xee87,0x10d));var _0x7ee8=function(_0x4dfa62,_0xae8e61){_0x4dfa62=_0x4dfa62-0x0;var _0x4d678f=_0xee87[_0x4dfa62];return _0x4d678f;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x7ee8('0x0'))['db'][_0x7ee8('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x7ee8('0x2')](0x0);var events={'afterCreate':_0x7ee8('0x3'),'afterUpdate':_0x7ee8('0x4'),'afterDestroy':_0x7ee8('0x5')};function emitEvent(_0x41c2cc){return function(_0x2f1867,_0x32466c,_0x23a89c){UserProfileEvents['emit'](_0x41c2cc+':'+_0x2f1867['id'],_0x2f1867);UserProfileEvents[_0x7ee8('0x6')](_0x41c2cc,_0x2f1867);_0x23a89c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x7ee8('0x7')](e,emitEvent(event));}}module[_0x7ee8('0x8')]=UserProfileEvents;
\ No newline at end of file
index b8f8548..88125fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dispositions','Disposition','Dashboard','intervals','Interval','Pause','scheduler','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','variables','Variable','Plugin','extractedreports','Reports','charAt','slice','SELECT','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','toString','define','UserProfile','query','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','UserProfileSection','find','params','all','ignore','union','push','autoAssociation','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','merge','key','VIRTUAL','foreignKey','AnalyticExtractedReport','includeAll','include','reportType','default','reportId','DefaultReports','CustomReports','count','Tags','color','tag','ThroughTags','openTabs','true','rows','chat','dataValues','sms','fax','mail','lodash','./userProfile.attributes','../../components/parsers/qs','exports','models','filter','field','value','associatedResources','map','model','findAll','then','catch','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','SquareProjects','name','projectName','projects','JscriptyProject','contacts','CmContact','parentSections','Lists','ListId','lists','CmList','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','ChatWebsite','faxqueues','faxaccounts','inboundroutes','outboundroutes','voicemails','VoiceMail','Agents','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','musiconholds','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','whatsappqueues','WhatsappQueue','WhatsappAccount','Team','queuecampaigns','users','agents','telephones','Users','admin','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','cannedanswers','CannedAnswer'];(function(_0x546778,_0x5a5dfb){var _0x16b445=function(_0x283628){while(--_0x283628){_0x546778['push'](_0x546778['shift']());}};_0x16b445(++_0x5a5dfb);}(_0x7a54,0x106));var _0x47a5=function(_0x56b054,_0x3b8aea){_0x56b054=_0x56b054-0x0;var _0x8ea90a=_0x7a54[_0x56b054];return _0x8ea90a;};'use strict';var _=require(_0x47a5('0x0'));var attributes=require(_0x47a5('0x1'));var qs=require(_0x47a5('0x2'));var squel=require('squel');module[_0x47a5('0x3')]=function(_0x4086cd){var _0x4880bf=_0x4086cd[_0x47a5('0x4')];function _0x11bf85(_0x2a1a7e,_0x3717e1){return new Promise(function(_0xfdf934,_0x545a97){if(!_0x3717e1)return _0xfdf934(null);var _0x3d5629=_0x3717e1['filter']?{[_0x3717e1[_0x47a5('0x5')][_0x47a5('0x6')]]:_0x3717e1['filter'][_0x47a5('0x7')]}:undefined;return _0x4880bf[_0x2a1a7e]['findAll']({'where':_0x3d5629,'raw':!![]})['then'](function(_0x582352){_0x3717e1[_0x47a5('0x8')]=_[_0x47a5('0x9')](_0x582352,'id');_0xfdf934(_0x3717e1);})['catch'](function(_0x2eb0dd){_0x545a97(_0x2eb0dd);});});}function _0x49e844(_0x5de6d7,_0x1f47f4){return new Promise(function(_0x69e4d4,_0x2f399b){var _0x250fad=_0x5de6d7[_0x47a5('0x5')]?{[_0x5de6d7[_0x47a5('0x5')][_0x47a5('0x6')]]:_0x5de6d7['filter'][_0x47a5('0x7')]}:undefined;return _0x4880bf[_0x5de6d7[_0x47a5('0xa')]][_0x47a5('0xb')]({'where':_0x250fad,'raw':!![]})[_0x47a5('0xc')](function(_0x139f25){_0x1f47f4[_0x47a5('0x8')]=_[_0x47a5('0x9')](_0x139f25,function(_0x190faa){return _0x190faa['name'];});_0x69e4d4(_0x1f47f4);})[_0x47a5('0xd')](function(_0x11faf5){_0x2f399b(_0x11faf5);});});}function _0x3b001e(_0x2a2cbb,_0x1ef44c,_0x574af6){if(!_0x1ef44c)return Promise['resolve'](null);return new Promise(function(_0x138bc0,_0x4b966e){return _0x4880bf['UserProfileResource'][_0x47a5('0xb')]({'where':{'sectionId':_0x1ef44c['id']},'raw':!![]})[_0x47a5('0xc')](function(_0x2ce454){if(_0x2a2cbb[_0x47a5('0x6')]&&_0x2a2cbb[_0x47a5('0x6')]!=='id'){_0x1ef44c[_0x47a5('0x8')]=_[_0x47a5('0x9')](_0x2ce454,function(_0xe3c618){return _0xe3c618[_0x2a2cbb[_0x47a5('0x6')]];});}else{if(_0x574af6==='AnalyticExtractedReport'){_0x1ef44c[_0x47a5('0x8')]=_[_0x47a5('0x9')](_0x2ce454,function(_0x47cf3c){return{'id':_0x47cf3c[_0x47a5('0xe')],'type':_0x47cf3c[_0x47a5('0xf')]};});}else{_0x1ef44c[_0x47a5('0x8')]=_['map'](_0x2ce454,function(_0xb8ae6c){return _0xb8ae6c[_0x47a5('0xe')];});}}_0x138bc0(_0x1ef44c);})[_0x47a5('0xd')](function(_0x7a9f9e){_0x4b966e(_0x7a9f9e);});});}function _0x5ef1b1(_0xe2dea9,_0x385687){var _0x513981={'parentSections':[]};switch(_0xe2dea9[_0x47a5('0x10')]()){case _0x47a5('0x11'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x13');break;case _0x47a5('0x14'):_0x513981['childModel']='SquareOdbc';break;case _0x47a5('0x15'):_0x513981['childModel']=_0x47a5('0x16');_0x513981['parentSections']=[{'name':_0x47a5('0x17'),'field':_0x47a5('0x18'),'foreignKey':_0x47a5('0x19')}];break;case _0x47a5('0x1a'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x1b');break;case _0x47a5('0x1c'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x1d');_0x513981[_0x47a5('0x1e')]=[{'name':_0x47a5('0x1f'),'field':'id','foreignKey':_0x47a5('0x20')}];break;case _0x47a5('0x21'):_0x513981['childModel']=_0x47a5('0x22');break;case'companies':_0x513981[_0x47a5('0x12')]=_0x47a5('0x23');break;case _0x47a5('0x24'):_0x513981['childModel']=_0x47a5('0x25');break;case _0x47a5('0x26'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x27');break;case'chatwebsites':_0x513981['childModel']=_0x47a5('0x28');break;case _0x47a5('0x29'):_0x513981['childModel']='FaxQueue';break;case _0x47a5('0x2a'):_0x513981[_0x47a5('0x12')]='FaxAccount';break;case _0x47a5('0x2b'):case'internalroutes':case _0x47a5('0x2c'):_0x513981[_0x47a5('0x12')]='VoiceExtension';break;case'contexts':_0x513981[_0x47a5('0x12')]='VoiceContext';break;case _0x47a5('0x2d'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x2e');break;case'voicerecordings':_0x513981[_0x47a5('0x12')]='VoiceRecording';_0x513981['parentSections']=[{'name':_0x47a5('0x2f'),'field':'name','foreignKey':_0x47a5('0x30'),'model':'User','filter':{'field':_0x47a5('0x31'),'value':[_0x47a5('0x32')]}},{'name':_0x47a5('0x33'),'field':_0x47a5('0x18'),'foreignKey':_0x47a5('0x30'),'model':_0x47a5('0x34'),'filter':{'field':_0x47a5('0x31'),'value':[_0x47a5('0x35')]}},{'name':_0x47a5('0x36'),'field':'name','foreignKey':_0x47a5('0x37'),'model':_0x47a5('0x38'),'filter':{'field':'type','value':[_0x47a5('0x39')]}},{'name':_0x47a5('0x3a'),'field':_0x47a5('0x18'),'foreignKey':'queue','model':_0x47a5('0x38'),'filter':{'field':_0x47a5('0xf'),'value':['outbound']}}];break;case _0x47a5('0x3b'):_0x513981[_0x47a5('0x12')]='VoiceMusicOnHold';break;case'chanspies':_0x513981['childModel']=_0x47a5('0x3c');break;case'voiceprefixes':_0x513981[_0x47a5('0x12')]=_0x47a5('0x3d');break;case _0x47a5('0x3e'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x3f');break;case _0x47a5('0x40'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x41');break;case _0x47a5('0x42'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x43');break;case _0x47a5('0x44'):_0x513981[_0x47a5('0x12')]='MailSubstatus';break;case _0x47a5('0x45'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x46');break;case _0x47a5('0x47'):_0x513981['childModel']=_0x47a5('0x48');break;case'smsqueues':_0x513981['childModel']='SmsQueue';break;case'smsaccounts':_0x513981[_0x47a5('0x12')]='SmsAccount';break;case _0x47a5('0x49'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x4a');break;case'whatsappaccounts':_0x513981[_0x47a5('0x12')]=_0x47a5('0x4b');break;case'teams':_0x513981['childModel']=_0x47a5('0x4c');break;case'voicequeues':case _0x47a5('0x4d'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x38');if(_0x385687){_0x513981[_0x47a5('0x1e')]=[{'name':_0x47a5('0x36')},{'name':_0x47a5('0x3a')}];}break;case _0x47a5('0x4e'):case _0x47a5('0x4f'):case _0x47a5('0x50'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x34');if(_0x385687){_0x513981[_0x47a5('0x1e')]=[{'name':_0x47a5('0x51'),'filter':{'field':_0x47a5('0x31'),'value':[_0x47a5('0x52'),_0x47a5('0x53')]},'ignore':!![]},{'name':'Agents'},{'name':_0x47a5('0x33')}];}break;case _0x47a5('0x54'):_0x513981['childModel']='ZendeskAccount';break;case _0x47a5('0x55'):_0x513981['childModel']=_0x47a5('0x56');break;case _0x47a5('0x57'):_0x513981['childModel']='FreshdeskAccount';break;case _0x47a5('0x58'):_0x513981['childModel']=_0x47a5('0x59');break;case _0x47a5('0x5a'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x5b');break;case _0x47a5('0x5c'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x5d');break;case'vtigeraccounts':_0x513981['childModel']=_0x47a5('0x34');break;case _0x47a5('0x5e'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x5f');break;case _0x47a5('0x60'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x61');break;case'customdashboards':_0x513981[_0x47a5('0x12')]=_0x47a5('0x62');break;case _0x47a5('0x63'):_0x513981['childModel']=_0x47a5('0x64');break;case'pauses':_0x513981[_0x47a5('0x12')]=_0x47a5('0x65');break;case _0x47a5('0x66'):_0x513981[_0x47a5('0x12')]='Schedule';break;case _0x47a5('0x67'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x68');break;case _0x47a5('0x69'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x6a');break;case _0x47a5('0x6b'):_0x513981['childModel']=_0x47a5('0x6c');break;case _0x47a5('0x6d'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x6e');break;case _0x47a5('0x6f'):_0x513981[_0x47a5('0x12')]='Trunk';break;case _0x47a5('0x70'):_0x513981[_0x47a5('0x12')]=_0x47a5('0x71');break;case'plugins':_0x513981[_0x47a5('0x12')]=_0x47a5('0x72');break;case _0x47a5('0x73'):_0x513981['childModel']='AnalyticExtractedReport';_0x513981[_0x47a5('0x1e')]=[{'name':_0x47a5('0x74'),'field':'id','foreignKey':'reportId'}];break;case'metrics':_0x513981[_0x47a5('0x12')]='AnalyticMetric';break;}return _0x513981;}function _0x16bb8a(_0x5d383d,_0x482de6){var _0x389ed9=_0x5d383d[_0x47a5('0x75')](0x0)['toUpperCase']()+_0x5d383d[_0x47a5('0x76')](0x1);var _0x72fe={'type':_0x4880bf['Sequelize']['QueryTypes'][_0x47a5('0x77')],'raw':!![]};return new Promise(function(_0x30d482,_0x867da0){var _0x2931e4=squel['select']()[_0x47a5('0x6')](_0x47a5('0x78')+_0x389ed9+_0x47a5('0x79'),'id')['field'](_0x47a5('0x7a'))['from'](_0x47a5('0x7b')+_0x5d383d+_0x47a5('0x7c'),'ui')[_0x47a5('0x7d')](_0x47a5('0x7e'),_0x482de6['id']);return _0x4880bf[_0x47a5('0x7f')]['query'](_0x2931e4[_0x47a5('0x80')](),_0x72fe)['then'](function(_0x5cbe97){_0x482de6[_0x389ed9+'OpenTabs']=_0x5cbe97;_0x30d482(_0x5cbe97);})['catch'](function(_0x212d92){_0x867da0(_0x212d92);});});}return _0x4086cd[_0x47a5('0x81')](_0x47a5('0x82'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x4d3db1){var _0x139229={'raw':![],'where':{}};var _0x23020b={};var _0x45d4b6={'count':0x0,'rows':[]};var _0x3c2b46=_0x4d3db1[_0x47a5('0x83')]['section'];var _0x3474b7=_0x4d3db1['query'][_0x47a5('0x84')]||![];var _0x274d31=_0x5ef1b1(_0x3c2b46,_0x3474b7);if(!_0x274d31['childModel'])throw new Error(_0x47a5('0x85')+_0x3c2b46+'\x27');var _0x345104=[{'name':_0x3c2b46}];if(!_[_0x47a5('0x86')](_0x274d31[_0x47a5('0x1e')]))_0x345104=_0x274d31[_0x47a5('0x1e')];var _0x215634=[];for(var _0x35cca8=0x0;_0x35cca8<_0x345104[_0x47a5('0x87')];_0x35cca8++){_0x215634['push'](_0x4880bf[_0x47a5('0x88')][_0x47a5('0x89')]({'where':{'userProfileId':_0x4d3db1[_0x47a5('0x8a')]['id'],'name':_0x345104[_0x35cca8][_0x47a5('0x18')]},'raw':!![]}));}return Promise[_0x47a5('0x8b')](_0x215634)['then'](function(_0xbec033){var _0xdfcecc=_[_0x47a5('0x5')](_0xbec033,function(_0x144aaa){return _0x144aaa?_0x144aaa:undefined;});var _0x4228a3=_[_0x47a5('0x5')](_0x345104,[_0x47a5('0x8c'),!![]]);var _0x149d34=_[_0x47a5('0x86')](_0xdfcecc)&&_[_0x47a5('0x86')](_0x4228a3)?null:_[_0x47a5('0x8d')](_0x4228a3,_0xdfcecc);if(!_0x149d34)return null;var _0x44fda9=[];for(var _0x3c0006=0x0;_0x3c0006<_0x149d34[_0x47a5('0x87')];_0x3c0006++){var _0x3edd17=_['find'](_0x345104,function(_0x42dd7d){return _0x149d34[_0x3c0006]?_0x42dd7d[_0x47a5('0x18')]===_0x149d34[_0x3c0006][_0x47a5('0x18')]:null;});if(_0x3edd17){if(_0x149d34[_0x3c0006]['ignore']){_0x44fda9[_0x47a5('0x8e')](_0x11bf85(_0x274d31[_0x47a5('0x12')],_0x149d34[_0x3c0006]));}else{if(!_0x149d34[_0x3c0006][_0x47a5('0x8f')]){_0x44fda9[_0x47a5('0x8e')](_0x3b001e(_0x3edd17,_0x149d34[_0x3c0006],_0x274d31['childModel']));}else{if(_0x3edd17[_0x47a5('0xa')]){_0x44fda9['push'](_0x49e844(_0x3edd17,_0x149d34[_0x3c0006]));}}}}}return Promise[_0x47a5('0x8b')](_0x44fda9);})['then'](function(_0x43f649){var _0x4cf7c5=_0x43f649;var _0x7c1190=null;if(_0x4cf7c5){_0x7c1190=_0x4cf7c5[_0x47a5('0x87')]===0x1?_0x4cf7c5[0x0]:null;}if(!_0x7c1190&&!_0x4cf7c5)return _0x45d4b6;var _0x2578d6=_0x4880bf[_0x274d31['childModel']]['rawAttributes'];_0x23020b['model']=_[_0x47a5('0x90')](_0x2578d6);_0x23020b[_0x47a5('0x83')]=_[_0x47a5('0x90')](_0x4d3db1[_0x47a5('0x83')]);_0x23020b['filters']=_[_0x47a5('0x91')](_0x23020b[_0x47a5('0xa')],_0x23020b[_0x47a5('0x83')]);_0x139229[_0x47a5('0x92')]=_[_0x47a5('0x91')](_0x23020b[_0x47a5('0xa')],qs[_0x47a5('0x93')](_0x4d3db1[_0x47a5('0x83')][_0x47a5('0x93')]));_0x139229[_0x47a5('0x92')]=_0x139229[_0x47a5('0x92')][_0x47a5('0x87')]?_0x139229['attributes']:_0x23020b[_0x47a5('0xa')];if(!_0x4d3db1['query'][_0x47a5('0x94')](_0x47a5('0x95'))){_0x139229[_0x47a5('0x96')]=qs[_0x47a5('0x96')](_0x4d3db1[_0x47a5('0x83')][_0x47a5('0x96')]);_0x139229[_0x47a5('0x97')]=qs[_0x47a5('0x97')](_0x4d3db1[_0x47a5('0x83')][_0x47a5('0x97')]);}_0x139229[_0x47a5('0x98')]=qs[_0x47a5('0x99')](_0x4d3db1[_0x47a5('0x83')][_0x47a5('0x99')]);_0x139229[_0x47a5('0x7d')]=qs['filters'](_['pick'](_0x4d3db1['query'],_0x23020b['filters']));if(_0x4d3db1[_0x47a5('0x83')][_0x47a5('0x5')]){_0x139229['where']=_[_0x47a5('0x9a')](_0x139229[_0x47a5('0x7d')],{'$or':_[_0x47a5('0x9')](_0x2578d6,function(_0x396102){if(_0x396102[_0x47a5('0xf')][_0x47a5('0x9b')]!==_0x47a5('0x9c')){var _0x1c7302={};_0x1c7302[_0x396102[_0x47a5('0x6')]]={'$like':'%'+_0x4d3db1[_0x47a5('0x83')][_0x47a5('0x5')]+'%'};return _0x1c7302;}})});}var _0x5e5f16=[];var _0x18fa31=null;var _0x1fbd42={};if(_0x7c1190){_0x18fa31=_[_0x47a5('0x89')](_0x345104,['name',_0x7c1190[_0x47a5('0x18')]]);if(_0x18fa31[_0x47a5('0x6')]){_0x1fbd42={};if(_0x274d31[_0x47a5('0x12')]==='AnalyticExtractedReport'){_0x1fbd42[_0x18fa31[_0x47a5('0x9d')]]=_['map'](_0x7c1190['associatedResources'],'id');}else{_0x1fbd42[_0x18fa31[_0x47a5('0x9d')]]=_0x7c1190[_0x47a5('0x8')];}_0x5e5f16[_0x47a5('0x8e')](_0x1fbd42);}else{_0x139229[_0x47a5('0x7d')]['id']=_0x7c1190[_0x47a5('0x8')];}}else{for(var _0xea50f3=0x0;_0xea50f3<_0x4cf7c5['length'];_0xea50f3++){_0x18fa31=_['find'](_0x345104,[_0x47a5('0x18'),_0x4cf7c5[_0xea50f3]['name']]);if(_0x18fa31[_0x47a5('0x6')]){_0x1fbd42={};_0x1fbd42[_0x18fa31[_0x47a5('0x9d')]]=_0x4cf7c5[_0xea50f3][_0x47a5('0x8')];_0x5e5f16[_0x47a5('0x8e')](_0x1fbd42);}else{if(!_0x139229['where']['id'])_0x139229[_0x47a5('0x7d')]['id']=[];_0x4cf7c5[_0xea50f3]['associatedResources']['forEach'](function(_0x139c79){_0x139229[_0x47a5('0x7d')]['id']['push'](_0x139c79);});}}}if(!_[_0x47a5('0x86')](_0x5e5f16)){_0x139229[_0x47a5('0x7d')]=_[_0x47a5('0x9a')](_0x139229['where'],{'$and':{'$or':_0x5e5f16}});}_0x139229=_[_0x47a5('0x9a')]({},_0x139229,_0x4d3db1['options']);if(_0x7c1190&&!_0x7c1190[_0x47a5('0x8f')]&&_0x274d31[_0x47a5('0x12')]===_0x47a5('0x9e')){if(_0x4d3db1['query'][_0x47a5('0x9f')]){_0x139229[_0x47a5('0xa0')]=[{'all':!![]}];}return _0x4880bf[_0x274d31[_0x47a5('0x12')]]['findAll'](_0x139229)[_0x47a5('0xc')](function(_0x4f2fbb){var _0x3c012b=[];_0x4f2fbb['forEach'](function(_0x135d2e){var _0x20d8bd;switch(_0x135d2e[_0x47a5('0xa1')]){case _0x47a5('0xa2'):_0x20d8bd=_['find'](_0x7c1190[_0x47a5('0x8')],function(_0x2ae130){return _0x2ae130['id']===_0x135d2e[_0x47a5('0xa3')]&&_0x2ae130[_0x47a5('0xf')]===_0x47a5('0xa4');});break;case'custom':_0x20d8bd=_['find'](_0x7c1190[_0x47a5('0x8')],function(_0x4ab01f){return _0x4ab01f['id']===_0x135d2e[_0x47a5('0xa3')]&&_0x4ab01f[_0x47a5('0xf')]===_0x47a5('0xa5');});break;}if(_0x20d8bd)_0x3c012b['push'](_0x135d2e);});_0x45d4b6[_0x47a5('0xa6')]=_0x3c012b[_0x47a5('0x87')];_0x45d4b6['rows']=_0x3c012b;return _0x45d4b6;});}else{return _0x4880bf[_0x274d31[_0x47a5('0x12')]][_0x47a5('0xa6')]({'where':_0x139229[_0x47a5('0x7d')]})[_0x47a5('0xc')](function(_0x58dacd){_0x45d4b6['count']=_0x58dacd;if(_0x4d3db1[_0x47a5('0x83')][_0x47a5('0x9f')]){if(_0x274d31['childModel']===_0x47a5('0x1d')){_0x139229[_0x47a5('0xa0')]=[{'model':_0x4880bf['Tag'],'as':_0x47a5('0xa7'),'attributes':['id',_0x47a5('0x18'),_0x47a5('0xa8')],'required':_0x4d3db1['query'][_0x47a5('0xa9')]?!![]:![]},{'model':_0x4880bf['Tag'],'as':_0x47a5('0xaa'),'attributes':['id','name',_0x47a5('0xa8')],'through':_0x4d3db1[_0x47a5('0x83')]['tag']?{'attributes':[],'where':{'TagId':_0x4d3db1[_0x47a5('0x83')]['tag']||undefined}}:{},'required':_0x4d3db1[_0x47a5('0x83')][_0x47a5('0xa9')]?!![]:![]}];}else{_0x139229[_0x47a5('0xa0')]=[{'all':!![]}];}}return _0x4880bf[_0x274d31[_0x47a5('0x12')]]['findAll'](_0x139229);})[_0x47a5('0xc')](function(_0x593426){_0x45d4b6['rows']=_0x593426;if(_0x3c2b46===_0x47a5('0x2f')&&_0x4d3db1[_0x47a5('0x83')][_0x47a5('0xab')]===_0x47a5('0xac')){var _0x380c8b=[];for(var _0x5b1f5e=0x0;_0x5b1f5e<_0x45d4b6[_0x47a5('0xad')][_0x47a5('0x87')];_0x5b1f5e++){_0x380c8b[_0x47a5('0x8e')](_0x16bb8a(_0x47a5('0xae'),_0x45d4b6['rows'][_0x5b1f5e][_0x47a5('0xaf')]));_0x380c8b['push'](_0x16bb8a(_0x47a5('0xb0'),_0x45d4b6[_0x47a5('0xad')][_0x5b1f5e][_0x47a5('0xaf')]));_0x380c8b[_0x47a5('0x8e')](_0x16bb8a(_0x47a5('0xb1'),_0x45d4b6[_0x47a5('0xad')][_0x5b1f5e][_0x47a5('0xaf')]));_0x380c8b[_0x47a5('0x8e')](_0x16bb8a(_0x47a5('0xb2'),_0x45d4b6['rows'][_0x5b1f5e][_0x47a5('0xaf')]));_0x380c8b[_0x47a5('0x8e')](_0x16bb8a('openchannel',_0x45d4b6[_0x47a5('0xad')][_0x5b1f5e][_0x47a5('0xaf')]));_0x380c8b[_0x47a5('0x8e')](_0x16bb8a('whatsapp',_0x45d4b6['rows'][_0x5b1f5e][_0x47a5('0xaf')]));}return Promise[_0x47a5('0x8b')](_0x380c8b)['then'](function(){return _0x45d4b6;});}return _0x45d4b6;});}});}}});};
\ No newline at end of file
+var _0x7ee1=['User','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','users','agents','telephones','Users','admin','user','Telephones','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','Interval','Pause','scheduler','Schedule','sounds','tags','templates','Template','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','Reports','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','select','ui.','InteractionId','ui.createdAt','from','user_has_','where','ui.UserId\x20=\x20?','query','toString','OpenTabs','define','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','UserProfileSection','find','params','ignore','union','length','push','autoAssociation','all','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','merge','key','VIRTUAL','foreignKey','forEach','options','include','default','reportId','DefaultReports','custom','rows','count','includeAll','Tag','Tags','color','tag','openTabs','true','chat','dataValues','sms','openchannel','whatsapp','lodash','exports','filter','field','value','findAll','then','catch','model','associatedResources','map','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','name','projectName','projects','JscriptyProject','CmContact','ListId','lists','CmList','globalcustomfields','CmCustomField','ChatQueue','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceRecording','Agents','membername','role','agent'];(function(_0x3c5f8d,_0x39891f){var _0x3b7beb=function(_0x44d6c9){while(--_0x44d6c9){_0x3c5f8d['push'](_0x3c5f8d['shift']());}};_0x3b7beb(++_0x39891f);}(_0x7ee1,0x8d));var _0x17ee=function(_0x59d3db,_0x59fcd9){_0x59d3db=_0x59d3db-0x0;var _0x4fac8c=_0x7ee1[_0x59d3db];return _0x4fac8c;};'use strict';var _=require(_0x17ee('0x0'));var attributes=require('./userProfile.attributes');var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0x17ee('0x1')]=function(_0x31a2fe){var _0x1790ff=_0x31a2fe['models'];function _0x1602fd(_0x1811e4,_0x10f7a8){return new Promise(function(_0x2f9ebc,_0x5c0617){if(!_0x10f7a8)return _0x2f9ebc(null);var _0x52b1db=_0x10f7a8[_0x17ee('0x2')]?{[_0x10f7a8['filter'][_0x17ee('0x3')]]:_0x10f7a8['filter'][_0x17ee('0x4')]}:undefined;return _0x1790ff[_0x1811e4][_0x17ee('0x5')]({'where':_0x52b1db,'raw':!![]})[_0x17ee('0x6')](function(_0x4af369){_0x10f7a8['associatedResources']=_['map'](_0x4af369,'id');_0x2f9ebc(_0x10f7a8);})[_0x17ee('0x7')](function(_0x4ee1e0){_0x5c0617(_0x4ee1e0);});});}function _0x155964(_0x378a78,_0x3068b2){return new Promise(function(_0x3d4f0f,_0x57fae0){var _0x1acde5=_0x378a78['filter']?{[_0x378a78[_0x17ee('0x2')][_0x17ee('0x3')]]:_0x378a78[_0x17ee('0x2')][_0x17ee('0x4')]}:undefined;return _0x1790ff[_0x378a78[_0x17ee('0x8')]][_0x17ee('0x5')]({'where':_0x1acde5,'raw':!![]})[_0x17ee('0x6')](function(_0x54434e){_0x3068b2[_0x17ee('0x9')]=_[_0x17ee('0xa')](_0x54434e,function(_0x329af2){return _0x329af2['name'];});_0x3d4f0f(_0x3068b2);})['catch'](function(_0x551c5f){_0x57fae0(_0x551c5f);});});}function _0x4d4593(_0x2fe0ac,_0x2382ce,_0x1b87c3){if(!_0x2382ce)return Promise[_0x17ee('0xb')](null);return new Promise(function(_0x443f81,_0x236d18){return _0x1790ff[_0x17ee('0xc')]['findAll']({'where':{'sectionId':_0x2382ce['id']},'raw':!![]})[_0x17ee('0x6')](function(_0x1118a3){if(_0x2fe0ac[_0x17ee('0x3')]&&_0x2fe0ac[_0x17ee('0x3')]!=='id'){_0x2382ce[_0x17ee('0x9')]=_['map'](_0x1118a3,function(_0x393720){return _0x393720[_0x2fe0ac['field']];});}else{if(_0x1b87c3===_0x17ee('0xd')){_0x2382ce['associatedResources']=_[_0x17ee('0xa')](_0x1118a3,function(_0x343f1b){return{'id':_0x343f1b[_0x17ee('0xe')],'type':_0x343f1b[_0x17ee('0xf')]};});}else{_0x2382ce[_0x17ee('0x9')]=_[_0x17ee('0xa')](_0x1118a3,function(_0x44548f){return _0x44548f[_0x17ee('0xe')];});}}_0x443f81(_0x2382ce);})[_0x17ee('0x7')](function(_0x1f3d6d){_0x236d18(_0x1f3d6d);});});}function _0x37fe4e(_0x4d2d91,_0x4b7bfe){var _0x2118a6={'parentSections':[]};switch(_0x4d2d91[_0x17ee('0x10')]()){case _0x17ee('0x11'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x13');break;case _0x17ee('0x14'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x15');break;case _0x17ee('0x16'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x17');_0x2118a6[_0x17ee('0x18')]=[{'name':'SquareProjects','field':_0x17ee('0x19'),'foreignKey':_0x17ee('0x1a')}];break;case _0x17ee('0x1b'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x1c');break;case'contacts':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x1d');_0x2118a6[_0x17ee('0x18')]=[{'name':'Lists','field':'id','foreignKey':_0x17ee('0x1e')}];break;case _0x17ee('0x1f'):_0x2118a6['childModel']=_0x17ee('0x20');break;case'companies':_0x2118a6[_0x17ee('0x12')]='CmCompany';break;case _0x17ee('0x21'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x22');break;case'chatqueues':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x23');break;case'chatwebsites':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x24');break;case _0x17ee('0x25'):_0x2118a6['childModel']='FaxQueue';break;case _0x17ee('0x26'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x27');break;case _0x17ee('0x28'):case'internalroutes':case'outboundroutes':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x29');break;case _0x17ee('0x2a'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x2b');break;case _0x17ee('0x2c'):_0x2118a6[_0x17ee('0x12')]='VoiceMail';break;case'voicerecordings':_0x2118a6['childModel']=_0x17ee('0x2d');_0x2118a6['parentSections']=[{'name':_0x17ee('0x2e'),'field':_0x17ee('0x19'),'foreignKey':_0x17ee('0x2f'),'model':'User','filter':{'field':_0x17ee('0x30'),'value':[_0x17ee('0x31')]}},{'name':'Telephones','field':'name','foreignKey':_0x17ee('0x2f'),'model':_0x17ee('0x32'),'filter':{'field':_0x17ee('0x30'),'value':[_0x17ee('0x33')]}},{'name':_0x17ee('0x34'),'field':'name','foreignKey':'queue','model':_0x17ee('0x35'),'filter':{'field':_0x17ee('0xf'),'value':[_0x17ee('0x36')]}},{'name':_0x17ee('0x37'),'field':_0x17ee('0x19'),'foreignKey':_0x17ee('0x38'),'model':'VoiceQueue','filter':{'field':'type','value':[_0x17ee('0x39')]}}];break;case _0x17ee('0x3a'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x3b');break;case _0x17ee('0x3c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x3d');break;case _0x17ee('0x3e'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x3f');break;case'ivrcampaigns':_0x2118a6['childModel']='Campaign';break;case _0x17ee('0x40'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x41');break;case _0x17ee('0x42'):_0x2118a6['childModel']=_0x17ee('0x43');break;case _0x17ee('0x44'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x45');break;case'openchannelqueues':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x46');break;case _0x17ee('0x47'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x48');break;case _0x17ee('0x49'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4a');break;case'smsaccounts':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4b');break;case _0x17ee('0x4c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4d');break;case _0x17ee('0x4e'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4f');break;case _0x17ee('0x50'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x51');break;case _0x17ee('0x52'):case'queuecampaigns':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x35');if(_0x4b7bfe){_0x2118a6['parentSections']=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0x17ee('0x53'):case _0x17ee('0x54'):case _0x17ee('0x55'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x32');if(_0x4b7bfe){_0x2118a6['parentSections']=[{'name':_0x17ee('0x56'),'filter':{'field':_0x17ee('0x30'),'value':[_0x17ee('0x57'),_0x17ee('0x58')]},'ignore':!![]},{'name':_0x17ee('0x2e')},{'name':_0x17ee('0x59')}];}break;case _0x17ee('0x5a'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x5b');break;case _0x17ee('0x5c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x5d');break;case'freshdeskaccounts':_0x2118a6['childModel']=_0x17ee('0x5e');break;case _0x17ee('0x5f'):_0x2118a6['childModel']='SugarcrmAccount';break;case _0x17ee('0x60'):_0x2118a6['childModel']=_0x17ee('0x61');break;case _0x17ee('0x62'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x63');break;case _0x17ee('0x64'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x32');break;case _0x17ee('0x65'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x66');break;case _0x17ee('0x67'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x68');break;case'customdashboards':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x69');break;case'intervals':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x6a');break;case'pauses':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x6b');break;case _0x17ee('0x6c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x6d');break;case _0x17ee('0x6e'):_0x2118a6[_0x17ee('0x12')]='Sound';break;case _0x17ee('0x6f'):_0x2118a6['childModel']='Tag';break;case _0x17ee('0x70'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x71');break;case'triggers':_0x2118a6['childModel']=_0x17ee('0x72');break;case _0x17ee('0x73'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x74');break;case _0x17ee('0x75'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x76');break;case _0x17ee('0x77'):_0x2118a6['childModel']=_0x17ee('0x78');break;case _0x17ee('0x79'):_0x2118a6['childModel']='AnalyticExtractedReport';_0x2118a6[_0x17ee('0x18')]=[{'name':_0x17ee('0x7a'),'field':'id','foreignKey':'reportId'}];break;case'metrics':_0x2118a6['childModel']=_0x17ee('0x7b');break;}return _0x2118a6;}function _0x1f860d(_0x1fbaec,_0x4a00db){var _0x3b5284=_0x1fbaec[_0x17ee('0x7c')](0x0)[_0x17ee('0x7d')]()+_0x1fbaec[_0x17ee('0x7e')](0x1);var _0x499e21={'type':_0x1790ff[_0x17ee('0x7f')][_0x17ee('0x80')]['SELECT'],'raw':!![]};return new Promise(function(_0x431b6a,_0x13e9e3){var _0x280036=squel[_0x17ee('0x81')]()[_0x17ee('0x3')](_0x17ee('0x82')+_0x3b5284+_0x17ee('0x83'),'id')[_0x17ee('0x3')](_0x17ee('0x84'))[_0x17ee('0x85')](_0x17ee('0x86')+_0x1fbaec+'_interactions','ui')[_0x17ee('0x87')](_0x17ee('0x88'),_0x4a00db['id']);return _0x1790ff['sequelize'][_0x17ee('0x89')](_0x280036[_0x17ee('0x8a')](),_0x499e21)[_0x17ee('0x6')](function(_0x5c2658){_0x4a00db[_0x3b5284+_0x17ee('0x8b')]=_0x5c2658;_0x431b6a(_0x5c2658);})[_0x17ee('0x7')](function(_0x2d72c2){_0x13e9e3(_0x2d72c2);});});}return _0x31a2fe[_0x17ee('0x8c')]('UserProfile',attributes,{'tableName':_0x17ee('0x8d'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x42a6b4){var _0x59d907={'raw':![],'where':{}};var _0xc0a30f={};var _0x135c29={'count':0x0,'rows':[]};var _0x16cd1b=_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x8e')];var _0x13d99b=_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x8f')]||![];var _0x38087a=_0x37fe4e(_0x16cd1b,_0x13d99b);if(!_0x38087a[_0x17ee('0x12')])throw new Error(_0x17ee('0x90')+_0x16cd1b+'\x27');var _0x5f35b6=[{'name':_0x16cd1b}];if(!_[_0x17ee('0x91')](_0x38087a['parentSections']))_0x5f35b6=_0x38087a[_0x17ee('0x18')];var _0x38fd73=[];for(var _0x97b640=0x0;_0x97b640<_0x5f35b6['length'];_0x97b640++){_0x38fd73['push'](_0x1790ff[_0x17ee('0x92')][_0x17ee('0x93')]({'where':{'userProfileId':_0x42a6b4[_0x17ee('0x94')]['id'],'name':_0x5f35b6[_0x97b640][_0x17ee('0x19')]},'raw':!![]}));}return Promise['all'](_0x38fd73)[_0x17ee('0x6')](function(_0x597697){var _0x5b2baa=_[_0x17ee('0x2')](_0x597697,function(_0x3f3b42){return _0x3f3b42?_0x3f3b42:undefined;});var _0x49cc91=_['filter'](_0x5f35b6,[_0x17ee('0x95'),!![]]);var _0x32ac7a=_['isEmpty'](_0x5b2baa)&&_[_0x17ee('0x91')](_0x49cc91)?null:_[_0x17ee('0x96')](_0x49cc91,_0x5b2baa);if(!_0x32ac7a)return null;var _0x1477ef=[];for(var _0x442d0f=0x0;_0x442d0f<_0x32ac7a[_0x17ee('0x97')];_0x442d0f++){var _0x57e7e7=_[_0x17ee('0x93')](_0x5f35b6,function(_0x504467){return _0x32ac7a[_0x442d0f]?_0x504467[_0x17ee('0x19')]===_0x32ac7a[_0x442d0f][_0x17ee('0x19')]:null;});if(_0x57e7e7){if(_0x32ac7a[_0x442d0f][_0x17ee('0x95')]){_0x1477ef[_0x17ee('0x98')](_0x1602fd(_0x38087a[_0x17ee('0x12')],_0x32ac7a[_0x442d0f]));}else{if(!_0x32ac7a[_0x442d0f][_0x17ee('0x99')]){_0x1477ef[_0x17ee('0x98')](_0x4d4593(_0x57e7e7,_0x32ac7a[_0x442d0f],_0x38087a[_0x17ee('0x12')]));}else{if(_0x57e7e7[_0x17ee('0x8')]){_0x1477ef[_0x17ee('0x98')](_0x155964(_0x57e7e7,_0x32ac7a[_0x442d0f]));}}}}}return Promise[_0x17ee('0x9a')](_0x1477ef);})['then'](function(_0x457d01){var _0x402e70=_0x457d01;var _0x1600c7=null;if(_0x402e70){_0x1600c7=_0x402e70[_0x17ee('0x97')]===0x1?_0x402e70[0x0]:null;}if(!_0x1600c7&&!_0x402e70)return _0x135c29;var _0x24ce05=_0x1790ff[_0x38087a[_0x17ee('0x12')]]['rawAttributes'];_0xc0a30f[_0x17ee('0x8')]=_[_0x17ee('0x9b')](_0x24ce05);_0xc0a30f['query']=_[_0x17ee('0x9b')](_0x42a6b4[_0x17ee('0x89')]);_0xc0a30f[_0x17ee('0x9c')]=_[_0x17ee('0x9d')](_0xc0a30f[_0x17ee('0x8')],_0xc0a30f[_0x17ee('0x89')]);_0x59d907['attributes']=_['intersection'](_0xc0a30f[_0x17ee('0x8')],qs['fields'](_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x9e')]));_0x59d907['attributes']=_0x59d907['attributes'][_0x17ee('0x97')]?_0x59d907[_0x17ee('0x9f')]:_0xc0a30f[_0x17ee('0x8')];if(!_0x42a6b4['query'][_0x17ee('0xa0')](_0x17ee('0xa1'))){_0x59d907[_0x17ee('0xa2')]=qs[_0x17ee('0xa2')](_0x42a6b4['query'][_0x17ee('0xa2')]);_0x59d907[_0x17ee('0xa3')]=qs[_0x17ee('0xa3')](_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xa3')]);}_0x59d907[_0x17ee('0xa4')]=qs[_0x17ee('0xa5')](_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xa5')]);_0x59d907[_0x17ee('0x87')]=qs[_0x17ee('0x9c')](_['pick'](_0x42a6b4[_0x17ee('0x89')],_0xc0a30f[_0x17ee('0x9c')]));if(_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x2')]){_0x59d907[_0x17ee('0x87')]=_[_0x17ee('0xa6')](_0x59d907[_0x17ee('0x87')],{'$or':_['map'](_0x24ce05,function(_0x1bfe00){if(_0x1bfe00[_0x17ee('0xf')][_0x17ee('0xa7')]!==_0x17ee('0xa8')){var _0x212fdf={};_0x212fdf[_0x1bfe00[_0x17ee('0x3')]]={'$like':'%'+_0x42a6b4['query'][_0x17ee('0x2')]+'%'};return _0x212fdf;}})});}var _0x3c6536=[];var _0x40f002=null;var _0x1acd22={};if(_0x1600c7){_0x40f002=_[_0x17ee('0x93')](_0x5f35b6,[_0x17ee('0x19'),_0x1600c7['name']]);if(_0x40f002[_0x17ee('0x3')]){_0x1acd22={};if(_0x38087a[_0x17ee('0x12')]===_0x17ee('0xd')){_0x1acd22[_0x40f002[_0x17ee('0xa9')]]=_[_0x17ee('0xa')](_0x1600c7[_0x17ee('0x9')],'id');}else{_0x1acd22[_0x40f002[_0x17ee('0xa9')]]=_0x1600c7[_0x17ee('0x9')];}_0x3c6536[_0x17ee('0x98')](_0x1acd22);}else{_0x59d907[_0x17ee('0x87')]['id']=_0x1600c7[_0x17ee('0x9')];}}else{for(var _0xedd714=0x0;_0xedd714<_0x402e70['length'];_0xedd714++){_0x40f002=_[_0x17ee('0x93')](_0x5f35b6,[_0x17ee('0x19'),_0x402e70[_0xedd714]['name']]);if(_0x40f002[_0x17ee('0x3')]){_0x1acd22={};_0x1acd22[_0x40f002[_0x17ee('0xa9')]]=_0x402e70[_0xedd714][_0x17ee('0x9')];_0x3c6536['push'](_0x1acd22);}else{if(!_0x59d907[_0x17ee('0x87')]['id'])_0x59d907[_0x17ee('0x87')]['id']=[];_0x402e70[_0xedd714][_0x17ee('0x9')][_0x17ee('0xaa')](function(_0x1012b6){_0x59d907[_0x17ee('0x87')]['id'][_0x17ee('0x98')](_0x1012b6);});}}}if(!_['isEmpty'](_0x3c6536)){_0x59d907[_0x17ee('0x87')]=_[_0x17ee('0xa6')](_0x59d907[_0x17ee('0x87')],{'$and':{'$or':_0x3c6536}});}_0x59d907=_['merge']({},_0x59d907,_0x42a6b4[_0x17ee('0xab')]);if(_0x1600c7&&!_0x1600c7[_0x17ee('0x99')]&&_0x38087a[_0x17ee('0x12')]===_0x17ee('0xd')){if(_0x42a6b4[_0x17ee('0x89')]['includeAll']){_0x59d907[_0x17ee('0xac')]=[{'all':!![]}];}return _0x1790ff[_0x38087a['childModel']][_0x17ee('0x5')](_0x59d907)[_0x17ee('0x6')](function(_0x3571a8){var _0x17e2f3=[];_0x3571a8[_0x17ee('0xaa')](function(_0x26d5ba){var _0x26ef1f;switch(_0x26d5ba['reportType']){case _0x17ee('0xad'):_0x26ef1f=_[_0x17ee('0x93')](_0x1600c7[_0x17ee('0x9')],function(_0x14a66f){return _0x14a66f['id']===_0x26d5ba[_0x17ee('0xae')]&&_0x14a66f['type']===_0x17ee('0xaf');});break;case _0x17ee('0xb0'):_0x26ef1f=_['find'](_0x1600c7[_0x17ee('0x9')],function(_0x25a4b9){return _0x25a4b9['id']===_0x26d5ba[_0x17ee('0xae')]&&_0x25a4b9[_0x17ee('0xf')]==='CustomReports';});break;}if(_0x26ef1f)_0x17e2f3[_0x17ee('0x98')](_0x26d5ba);});_0x135c29['count']=_0x17e2f3[_0x17ee('0x97')];_0x135c29[_0x17ee('0xb1')]=_0x17e2f3;return _0x135c29;});}else{return _0x1790ff[_0x38087a[_0x17ee('0x12')]][_0x17ee('0xb2')]({'where':_0x59d907[_0x17ee('0x87')]})[_0x17ee('0x6')](function(_0x4e89ee){_0x135c29[_0x17ee('0xb2')]=_0x4e89ee;if(_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb3')]){if(_0x38087a[_0x17ee('0x12')]===_0x17ee('0x1d')){_0x59d907[_0x17ee('0xac')]=[{'model':_0x1790ff[_0x17ee('0xb4')],'as':_0x17ee('0xb5'),'attributes':['id',_0x17ee('0x19'),_0x17ee('0xb6')],'required':_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb7')]?!![]:![]},{'model':_0x1790ff[_0x17ee('0xb4')],'as':'ThroughTags','attributes':['id','name',_0x17ee('0xb6')],'through':_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb7')]?{'attributes':[],'where':{'TagId':_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb7')]||undefined}}:{},'required':_0x42a6b4['query'][_0x17ee('0xb7')]?!![]:![]}];}else{_0x59d907[_0x17ee('0xac')]=[{'all':!![]}];}}return _0x1790ff[_0x38087a[_0x17ee('0x12')]][_0x17ee('0x5')](_0x59d907);})[_0x17ee('0x6')](function(_0x2bdf47){_0x135c29[_0x17ee('0xb1')]=_0x2bdf47;if(_0x16cd1b===_0x17ee('0x2e')&&_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb8')]===_0x17ee('0xb9')){var _0x50daad=[];for(var _0x3801b6=0x0;_0x3801b6<_0x135c29[_0x17ee('0xb1')]['length'];_0x3801b6++){_0x50daad[_0x17ee('0x98')](_0x1f860d(_0x17ee('0xba'),_0x135c29['rows'][_0x3801b6][_0x17ee('0xbb')]));_0x50daad['push'](_0x1f860d(_0x17ee('0xbc'),_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));_0x50daad[_0x17ee('0x98')](_0x1f860d('fax',_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));_0x50daad[_0x17ee('0x98')](_0x1f860d('mail',_0x135c29[_0x17ee('0xb1')][_0x3801b6]['dataValues']));_0x50daad[_0x17ee('0x98')](_0x1f860d(_0x17ee('0xbd'),_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));_0x50daad['push'](_0x1f860d(_0x17ee('0xbe'),_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));}return Promise[_0x17ee('0x9a')](_0x50daad)[_0x17ee('0x6')](function(){return _0x135c29;});}return _0x135c29;});}});}}});};
\ No newline at end of file
index da40b77..10060d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc0=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','request','then','info','UserProfile,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util'];(function(_0x2e8fa2,_0x3a2167){var _0x4f0b50=function(_0x582e44){while(--_0x582e44){_0x2e8fa2['push'](_0x2e8fa2['shift']());}};_0x4f0b50(++_0x3a2167);}(_0x6dc0,0xb6));var _0x06dc=function(_0x10244a,_0x3e96f4){_0x10244a=_0x10244a-0x0;var _0x4daacd=_0x6dc0[_0x10244a];return _0x4daacd;};'use strict';var _=require(_0x06dc('0x0'));var util=require(_0x06dc('0x1'));var moment=require(_0x06dc('0x2'));var BPromise=require('bluebird');var rs=require(_0x06dc('0x3'));var fs=require('fs');var Redis=require(_0x06dc('0x4'));var db=require(_0x06dc('0x5'))['db'];var utils=require(_0x06dc('0x6'));var logger=require('../../config/logger')(_0x06dc('0x7'));var config=require(_0x06dc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x06dc('0x9')]['http']({'port':0x232a});config[_0x06dc('0xa')]=_[_0x06dc('0xb')](config[_0x06dc('0xa')],{'host':_0x06dc('0xc'),'port':0x18eb});var socket=require(_0x06dc('0xd'))(new Redis(config['redis']));require('./userProfile.socket')['register'](socket);function respondWithRpcPromise(_0x128ea7,_0x1f2041,_0x4ec0aa){return new BPromise(function(_0x45693d,_0x1e7abd){return client[_0x06dc('0xe')](_0x128ea7,_0x4ec0aa)[_0x06dc('0xf')](function(_0x4fa7fc){logger[_0x06dc('0x10')](_0x06dc('0x11'),_0x1f2041,'request\x20sent');logger['debug']('UserProfile,\x20%s,\x20%s,\x20%s',_0x1f2041,'request\x20sent',JSON[_0x06dc('0x12')](_0x4fa7fc));if(_0x4fa7fc['error']){if(_0x4fa7fc['error']['code']===0x1f4){logger[_0x06dc('0x13')](_0x06dc('0x11'),_0x1f2041,_0x4fa7fc[_0x06dc('0x13')]['message']);return _0x1e7abd(_0x4fa7fc[_0x06dc('0x13')][_0x06dc('0x14')]);}logger[_0x06dc('0x13')](_0x06dc('0x11'),_0x1f2041,_0x4fa7fc['error'][_0x06dc('0x14')]);return _0x45693d(_0x4fa7fc[_0x06dc('0x13')][_0x06dc('0x14')]);}else{logger[_0x06dc('0x10')](_0x06dc('0x11'),_0x1f2041,'request\x20sent');_0x45693d(_0x4fa7fc[_0x06dc('0x15')][_0x06dc('0x14')]);}})[_0x06dc('0x16')](function(_0xc658ea){logger[_0x06dc('0x13')](_0x06dc('0x11'),_0x1f2041,_0xc658ea);_0x1e7abd(_0xc658ea);});});}
\ No newline at end of file
+var _0xffb1=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./userProfile.socket','register','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xffb1,0x93));var _0x1ffb=function(_0x545b71,_0x4f44eb){_0x545b71=_0x545b71-0x0;var _0x26e587=_0xffb1[_0x545b71];return _0x26e587;};'use strict';var _=require(_0x1ffb('0x0'));var util=require(_0x1ffb('0x1'));var moment=require(_0x1ffb('0x2'));var BPromise=require(_0x1ffb('0x3'));var rs=require(_0x1ffb('0x4'));var fs=require('fs');var Redis=require(_0x1ffb('0x5'));var db=require(_0x1ffb('0x6'))['db'];var utils=require(_0x1ffb('0x7'));var logger=require(_0x1ffb('0x8'))(_0x1ffb('0x9'));var config=require('../../config/environment');var jayson=require(_0x1ffb('0xa'));var client=jayson[_0x1ffb('0xb')][_0x1ffb('0xc')]({'port':0x232a});config[_0x1ffb('0xd')]=_[_0x1ffb('0xe')](config['redis'],{'host':_0x1ffb('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1ffb('0x10'))[_0x1ffb('0x11')](socket);function respondWithRpcPromise(_0x88a91b,_0x5d1736,_0x47f924){return new BPromise(function(_0x13afd2,_0x36c36c){return client['request'](_0x88a91b,_0x47f924)[_0x1ffb('0x12')](function(_0x4fd018){logger[_0x1ffb('0x13')](_0x1ffb('0x14'),_0x5d1736,_0x1ffb('0x15'));logger[_0x1ffb('0x16')](_0x1ffb('0x17'),_0x5d1736,_0x1ffb('0x15'),JSON['stringify'](_0x4fd018));if(_0x4fd018[_0x1ffb('0x18')]){if(_0x4fd018[_0x1ffb('0x18')][_0x1ffb('0x19')]===0x1f4){logger['error'](_0x1ffb('0x14'),_0x5d1736,_0x4fd018['error']['message']);return _0x36c36c(_0x4fd018['error'][_0x1ffb('0x1a')]);}logger[_0x1ffb('0x18')]('UserProfile,\x20%s,\x20%s',_0x5d1736,_0x4fd018[_0x1ffb('0x18')][_0x1ffb('0x1a')]);return _0x13afd2(_0x4fd018[_0x1ffb('0x18')][_0x1ffb('0x1a')]);}else{logger['info'](_0x1ffb('0x14'),_0x5d1736,'request\x20sent');_0x13afd2(_0x4fd018[_0x1ffb('0x1b')][_0x1ffb('0x1a')]);}})[_0x1ffb('0x1c')](function(_0x30b8cc){logger[_0x1ffb('0x18')]('UserProfile,\x20%s,\x20%s',_0x5d1736,_0x30b8cc);_0x36c36c(_0x30b8cc);});});}
\ No newline at end of file
index 9c6ef3c..00228ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d1=['emit','removeListener','length','userProfile:','remove','update'];(function(_0x17cca1,_0x4cd1f6){var _0x2a1d4a=function(_0x33c8a1){while(--_0x33c8a1){_0x17cca1['push'](_0x17cca1['shift']());}};_0x2a1d4a(++_0x4cd1f6);}(_0x36d1,0x13c));var _0x136d=function(_0x197ac2,_0x11d9e6){_0x197ac2=_0x197ac2-0x0;var _0x5a00e3=_0x36d1[_0x197ac2];return _0x5a00e3;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save',_0x136d('0x0'),_0x136d('0x1')];function createListener(_0x52d8cf,_0x4077a4){return function(_0x4108eb){_0x4077a4[_0x136d('0x2')](_0x52d8cf,_0x4108eb);};}function removeListener(_0x2834c7,_0x432487){return function(){UserProfileEvents[_0x136d('0x3')](_0x2834c7,_0x432487);};}exports['register']=function(_0x32343c){for(var _0x22390f=0x0,_0x1d435c=events[_0x136d('0x4')];_0x22390f<_0x1d435c;_0x22390f++){var _0x542d55=events[_0x22390f];var _0x1b9d17=createListener(_0x136d('0x5')+_0x542d55,_0x32343c);UserProfileEvents['on'](_0x542d55,_0x1b9d17);}};
\ No newline at end of file
+var _0x65e2=['save','remove','emit','length','userProfile:'];(function(_0x13ab2c,_0x532fb3){var _0x58756a=function(_0x2e3b28){while(--_0x2e3b28){_0x13ab2c['push'](_0x13ab2c['shift']());}};_0x58756a(++_0x532fb3);}(_0x65e2,0x69));var _0x265e=function(_0x14dc09,_0x4488b9){_0x14dc09=_0x14dc09-0x0;var _0x51a3de=_0x65e2[_0x14dc09];return _0x51a3de;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0x265e('0x0'),_0x265e('0x1'),'update'];function createListener(_0xb2f37d,_0x230de8){return function(_0x28334e){_0x230de8[_0x265e('0x2')](_0xb2f37d,_0x28334e);};}function removeListener(_0xa36138,_0x5680b6){return function(){UserProfileEvents['removeListener'](_0xa36138,_0x5680b6);};}exports['register']=function(_0x50e6fe){for(var _0x39309a=0x0,_0x13ce83=events[_0x265e('0x3')];_0x39309a<_0x13ce83;_0x39309a++){var _0x192507=events[_0x39309a];var _0x453fff=createListener(_0x265e('0x4')+_0x192507,_0x50e6fe);UserProfileEvents['on'](_0x192507,_0x453fff);}};
\ No newline at end of file
index 95bc12f..a684fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c6d=['/:id','show','create','put','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','isAuthenticated'];(function(_0x5b808b,_0x2c652b){var _0x1d1859=function(_0x5604af){while(--_0x5604af){_0x5b808b['push'](_0x5b808b['shift']());}};_0x1d1859(++_0x2c652b);}(_0x5c6d,0x195));var _0xd5c6=function(_0x49004c,_0x279390){_0x49004c=_0x49004c-0x0;var _0x4e9898=_0x5c6d[_0x49004c];return _0x4e9898;};'use strict';var multer=require(_0xd5c6('0x0'));var util=require(_0xd5c6('0x1'));var path=require('path');var timeout=require(_0xd5c6('0x2'));var express=require(_0xd5c6('0x3'));var router=express[_0xd5c6('0x4')]();var fs_extra=require(_0xd5c6('0x5'));var auth=require(_0xd5c6('0x6'));var interaction=require(_0xd5c6('0x7'));var config=require('../../config/environment');var controller=require(_0xd5c6('0x8'));router[_0xd5c6('0x9')]('/',auth[_0xd5c6('0xa')](),controller['index']);router[_0xd5c6('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd5c6('0x9')](_0xd5c6('0xb'),auth[_0xd5c6('0xa')](),controller[_0xd5c6('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd5c6('0xd')]);router[_0xd5c6('0xe')](_0xd5c6('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xd5c6('0xb'),auth[_0xd5c6('0xa')](),controller['destroy']);module[_0xd5c6('0xf')]=router;
\ No newline at end of file
+var _0x004b=['../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','/describe','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x004b,0x67));var _0xb004=function(_0x41f618,_0x8b5cd8){_0x41f618=_0x41f618-0x0;var _0x2c9a00=_0x004b[_0x41f618];return _0x2c9a00;};'use strict';var multer=require(_0xb004('0x0'));var util=require(_0xb004('0x1'));var path=require(_0xb004('0x2'));var timeout=require(_0xb004('0x3'));var express=require('express');var router=express[_0xb004('0x4')]();var fs_extra=require(_0xb004('0x5'));var auth=require(_0xb004('0x6'));var interaction=require(_0xb004('0x7'));var config=require(_0xb004('0x8'));var controller=require(_0xb004('0x9'));router[_0xb004('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb004('0xa')](_0xb004('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xb004('0xa')](_0xb004('0xc'),auth[_0xb004('0xd')](),controller[_0xb004('0xe')]);router[_0xb004('0xf')]('/',auth[_0xb004('0xd')](),controller[_0xb004('0x10')]);router[_0xb004('0x11')](_0xb004('0xc'),auth['isAuthenticated'](),controller[_0xb004('0x12')]);router[_0xb004('0x13')](_0xb004('0xc'),auth[_0xb004('0xd')](),controller[_0xb004('0x14')]);module[_0xb004('0x15')]=router;
\ No newline at end of file
index 7ce7c56..2c13068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe36a=['STRING','INTEGER','exports'];(function(_0x21eef2,_0x1480ea){var _0x32f106=function(_0x409e7e){while(--_0x409e7e){_0x21eef2['push'](_0x21eef2['shift']());}};_0x32f106(++_0x1480ea);}(_0xe36a,0x119));var _0xae36=function(_0x2598f0,_0x3d61ff){_0x2598f0=_0x2598f0-0x0;var _0x4448c8=_0xe36a[_0x2598f0];return _0x4448c8;};'use strict';var Sequelize=require('sequelize');module[_0xae36('0x0')]={'name':{'type':Sequelize[_0xae36('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xae36('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xae36('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xe32d=['INTEGER','STRING','exports'];(function(_0x5981ba,_0x188a5b){var _0x42ee4e=function(_0x4ba7e9){while(--_0x4ba7e9){_0x5981ba['push'](_0x5981ba['shift']());}};_0x42ee4e(++_0x188a5b);}(_0xe32d,0x92));var _0xde32=function(_0x10a236,_0x17ce17){_0x10a236=_0x10a236-0x0;var _0x4cf221=_0xe32d[_0x10a236];return _0x4cf221;};'use strict';var Sequelize=require('sequelize');module[_0xde32('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xde32('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xde32('0x2')],'allowNull':![]}};
\ No newline at end of file
index 34ccc0d..048009a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf61e=['where','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','status','error','stack','name','send','index','map','UserProfileResource','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order'];(function(_0x2974b3,_0xb7923c){var _0x675266=function(_0x41ad89){while(--_0x41ad89){_0x2974b3['push'](_0x2974b3['shift']());}};_0x675266(++_0xb7923c);}(_0xf61e,0x191));var _0xef61=function(_0x40b11b,_0x2d1710){_0x40b11b=_0x40b11b-0x0;var _0x53d11e=_0xf61e[_0x40b11b];return _0x53d11e;};'use strict';var emlformat=require(_0xef61('0x0'));var rimraf=require(_0xef61('0x1'));var zipdir=require(_0xef61('0x2'));var jsonpatch=require(_0xef61('0x3'));var rp=require(_0xef61('0x4'));var moment=require(_0xef61('0x5'));var BPromise=require(_0xef61('0x6'));var Mustache=require(_0xef61('0x7'));var util=require(_0xef61('0x8'));var path=require(_0xef61('0x9'));var sox=require(_0xef61('0xa'));var csv=require(_0xef61('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef61('0xc'));var _=require(_0xef61('0xd'));var squel=require('squel');var crypto=require(_0xef61('0xe'));var jsforce=require(_0xef61('0xf'));var deskjs=require(_0xef61('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef61('0x11'));var Redis=require(_0xef61('0x12'));var authService=require(_0xef61('0x13'));var qs=require(_0xef61('0x14'));var as=require(_0xef61('0x15'));var hardwareService=require(_0xef61('0x16'));var logger=require(_0xef61('0x17'))(_0xef61('0x18'));var utils=require(_0xef61('0x19'));var config=require(_0xef61('0x1a'));var licenseUtil=require(_0xef61('0x1b'));var db=require(_0xef61('0x1c'))['db'];function respondWithStatusCode(_0x114e1f,_0x318f1c){_0x318f1c=_0x318f1c||0xcc;return function(_0x5de159){if(_0x5de159){return _0x114e1f[_0xef61('0x1d')](_0x318f1c);}return _0x114e1f['status'](_0x318f1c)[_0xef61('0x1e')]();};}function respondWithResult(_0x1db2a9,_0x370ee0){_0x370ee0=_0x370ee0||0xc8;return function(_0x76ef9b){if(_0x76ef9b){return _0x1db2a9['status'](_0x370ee0)[_0xef61('0x1f')](_0x76ef9b);}};}function respondWithFilteredResult(_0x435beb,_0x1224c2){return function(_0x78ff22){if(_0x78ff22){var _0x588a61=typeof _0x1224c2[_0xef61('0x20')]===_0xef61('0x21')&&typeof _0x1224c2['limit']===_0xef61('0x21');var _0x408541=_0x78ff22[_0xef61('0x22')];var _0x22dc1b=_0x588a61?0x0:_0x1224c2[_0xef61('0x20')];var _0x28315a=_0x588a61?_0x78ff22[_0xef61('0x22')]:_0x1224c2['offset']+_0x1224c2[_0xef61('0x23')];var _0x2c8dad;if(_0x28315a>=_0x408541){_0x28315a=_0x408541;_0x2c8dad=0xc8;}else{_0x2c8dad=0xce;}_0x435beb['status'](_0x2c8dad);return _0x435beb[_0xef61('0x24')](_0xef61('0x25'),_0x22dc1b+'-'+_0x28315a+'/'+_0x408541)[_0xef61('0x1f')](_0x78ff22);}return null;};}function patchUpdates(_0x26cf42){return function(_0xb0d7a4){try{jsonpatch[_0xef61('0x26')](_0xb0d7a4,_0x26cf42,!![]);}catch(_0x92ea33){return BPromise['reject'](_0x92ea33);}return _0xb0d7a4['save']();};}function saveUpdates(_0x3d31c1,_0x58bd7d){return function(_0x389d6d){if(_0x389d6d){return _0x389d6d['update'](_0x3d31c1)['then'](function(_0x2f0569){return _0x2f0569;});}return null;};}function removeEntity(_0x5ce99d,_0x53181b){return function(_0xfbee94){if(_0xfbee94){return _0xfbee94[_0xef61('0x27')]()[_0xef61('0x28')](function(){_0x5ce99d[_0xef61('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16b144,_0x4e738f){return function(_0x2a6832){if(!_0x2a6832){_0x16b144[_0xef61('0x1d')](0x194);}return _0x2a6832;};}function handleError(_0x2419a9,_0xf4c7c9){_0xf4c7c9=_0xf4c7c9||0x1f4;return function(_0x2155f1){logger[_0xef61('0x2a')](_0x2155f1[_0xef61('0x2b')]);if(_0x2155f1[_0xef61('0x2c')]){delete _0x2155f1[_0xef61('0x2c')];}_0x2419a9[_0xef61('0x29')](_0xf4c7c9)[_0xef61('0x2d')](_0x2155f1);};}exports[_0xef61('0x2e')]=function(_0xeb9a62,_0x63edd4){var _0x1f3572={},_0x85978={},_0x39c15e={'count':0x0,'rows':[]};var _0x393ea9=_[_0xef61('0x2f')](db[_0xef61('0x30')][_0xef61('0x31')],function(_0x53fa3b){return{'name':_0x53fa3b['fieldName'],'type':_0x53fa3b['type'][_0xef61('0x32')]};});_0x85978[_0xef61('0x33')]=_[_0xef61('0x2f')](_0x393ea9,'name');_0x85978[_0xef61('0x34')]=_[_0xef61('0x35')](_0xeb9a62['query']);_0x85978[_0xef61('0x36')]=_['intersection'](_0x85978['model'],_0x85978[_0xef61('0x34')]);_0x1f3572['attributes']=_[_0xef61('0x37')](_0x85978['model'],qs[_0xef61('0x38')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x38')]));_0x1f3572[_0xef61('0x39')]=_0x1f3572[_0xef61('0x39')][_0xef61('0x3a')]?_0x1f3572[_0xef61('0x39')]:_0x85978[_0xef61('0x33')];if(!_0xeb9a62[_0xef61('0x34')][_0xef61('0x3b')]('nolimit')){_0x1f3572[_0xef61('0x23')]=qs[_0xef61('0x23')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x23')]);_0x1f3572[_0xef61('0x20')]=qs['offset'](_0xeb9a62[_0xef61('0x34')][_0xef61('0x20')]);}_0x1f3572[_0xef61('0x3c')]=qs['sort'](_0xeb9a62['query']['sort']);_0x1f3572[_0xef61('0x3d')]=qs['filters'](_['pick'](_0xeb9a62['query'],_0x85978[_0xef61('0x36')]),_0x393ea9);if(_0xeb9a62[_0xef61('0x34')][_0xef61('0x3e')]){_0x1f3572['where']=_['merge'](_0x1f3572['where'],{'$or':_[_0xef61('0x2f')](_0x393ea9,function(_0x32ad44){if(_0x32ad44['type']!==_0xef61('0x3f')){var _0x12f442={};_0x12f442[_0x32ad44[_0xef61('0x2c')]]={'$like':'%'+_0xeb9a62[_0xef61('0x34')]['filter']+'%'};return _0x12f442;}})});}_0x1f3572=_[_0xef61('0x40')]({},_0x1f3572,_0xeb9a62[_0xef61('0x41')]);var _0x3103d4={'where':_0x1f3572[_0xef61('0x3d')]};return db['UserProfileResource']['count'](_0x3103d4)[_0xef61('0x28')](function(_0x462972){_0x39c15e[_0xef61('0x22')]=_0x462972;if(_0xeb9a62['query'][_0xef61('0x42')]){_0x1f3572[_0xef61('0x43')]=[{'all':!![]}];}return db[_0xef61('0x30')][_0xef61('0x44')](_0x1f3572);})['then'](function(_0x545597){_0x39c15e['rows']=_0x545597;return _0x39c15e;})[_0xef61('0x28')](respondWithFilteredResult(_0x63edd4,_0x1f3572))[_0xef61('0x45')](handleError(_0x63edd4,null));};exports[_0xef61('0x46')]=function(_0xe40d,_0x3f81a1){var _0x272143={'raw':![],'where':{'id':_0xe40d['params']['id']}},_0xc9b467={};_0xc9b467[_0xef61('0x33')]=_[_0xef61('0x35')](db[_0xef61('0x30')][_0xef61('0x31')]);_0xc9b467['query']=_[_0xef61('0x35')](_0xe40d[_0xef61('0x34')]);_0xc9b467[_0xef61('0x36')]=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],_0xc9b467[_0xef61('0x34')]);_0x272143['attributes']=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],qs[_0xef61('0x38')](_0xe40d['query'][_0xef61('0x38')]));_0x272143[_0xef61('0x39')]=_0x272143[_0xef61('0x39')][_0xef61('0x3a')]?_0x272143[_0xef61('0x39')]:_0xc9b467[_0xef61('0x33')];if(_0xe40d['query'][_0xef61('0x42')]){_0x272143[_0xef61('0x43')]=[{'all':!![]}];}_0x272143=_['merge']({},_0x272143,_0xe40d[_0xef61('0x41')]);return db[_0xef61('0x30')][_0xef61('0x47')](_0x272143)[_0xef61('0x28')](handleEntityNotFound(_0x3f81a1,null))['then'](respondWithResult(_0x3f81a1,null))[_0xef61('0x45')](handleError(_0x3f81a1,null));};exports[_0xef61('0x48')]=function(_0x5e614b,_0x47b09d){return db[_0xef61('0x30')][_0xef61('0x48')](_0x5e614b['body'],{})[_0xef61('0x28')](respondWithResult(_0x47b09d,0xc9))[_0xef61('0x45')](handleError(_0x47b09d,null));};exports[_0xef61('0x49')]=function(_0x2904e0,_0x13bb20){if(_0x2904e0[_0xef61('0x4a')]['id']){delete _0x2904e0[_0xef61('0x4a')]['id'];}return db['UserProfileResource'][_0xef61('0x47')]({'where':{'id':_0x2904e0['params']['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x13bb20,null))[_0xef61('0x28')](saveUpdates(_0x2904e0[_0xef61('0x4a')],null))[_0xef61('0x28')](respondWithResult(_0x13bb20,null))[_0xef61('0x45')](handleError(_0x13bb20,null));};exports[_0xef61('0x27')]=function(_0x3e23eb,_0x1565c7){return db[_0xef61('0x30')]['find']({'where':{'id':_0x3e23eb[_0xef61('0x4b')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x1565c7,null))['then'](removeEntity(_0x1565c7,null))['catch'](handleError(_0x1565c7,null));};exports[_0xef61('0x4c')]=function(_0x1ce127,_0x504389){return db[_0xef61('0x30')]['describe']()[_0xef61('0x28')](respondWithResult(_0x504389,null))[_0xef61('0x45')](handleError(_0x504389,null));};
\ No newline at end of file
+var _0xdb28=['index','UserProfileResource','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send'];(function(_0x59d12e,_0x1128ff){var _0x2f5ee4=function(_0x213beb){while(--_0x213beb){_0x59d12e['push'](_0x59d12e['shift']());}};_0x2f5ee4(++_0x1128ff);}(_0xdb28,0x106));var _0x8db2=function(_0x36a11e,_0x586146){_0x36a11e=_0x36a11e-0x0;var _0xa1517=_0xdb28[_0x36a11e];return _0xa1517;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};exports[_0x8db2('0x4b')]=function(_0x426ae0,_0x3bc632){return db[_0x8db2('0x2b')][_0x8db2('0x4b')]()[_0x8db2('0x24')](respondWithResult(_0x3bc632,null))[_0x8db2('0x42')](handleError(_0x3bc632,null));};
\ No newline at end of file
index 42a4523..28b2fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b5b=['request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','util','../../config/logger','api','moment'];(function(_0x43d8c1,_0x5ed732){var _0x1f79fc=function(_0x24fcaf){while(--_0x24fcaf){_0x43d8c1['push'](_0x43d8c1['shift']());}};_0x1f79fc(++_0x5ed732);}(_0x2b5b,0x10c));var _0xb2b5=function(_0x26e322,_0x56b29c){_0x26e322=_0x26e322-0x0;var _0x56ed11=_0x2b5b[_0x26e322];return _0x56ed11;};'use strict';var _=require('lodash');var util=require(_0xb2b5('0x0'));var logger=require(_0xb2b5('0x1'))(_0xb2b5('0x2'));var moment=require(_0xb2b5('0x3'));var BPromise=require('bluebird');var rp=require(_0xb2b5('0x4'));var fs=require('fs');var path=require(_0xb2b5('0x5'));var rimraf=require(_0xb2b5('0x6'));var config=require(_0xb2b5('0x7'));var attributes=require(_0xb2b5('0x8'));module[_0xb2b5('0x9')]=function(_0x3653d9,_0x44420d){return _0x3653d9[_0xb2b5('0xa')](_0xb2b5('0xb'),attributes,{'tableName':_0xb2b5('0xc'),'paranoid':![],'indexes':[{'name':_0xb2b5('0xd'),'fields':[_0xb2b5('0xe'),_0xb2b5('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xffeb=['define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','util','../../config/logger','api','request-promise','path','../../config/environment','exports'];(function(_0x6a7a98,_0xcb7659){var _0x3bebec=function(_0x2af9ac){while(--_0x2af9ac){_0x6a7a98['push'](_0x6a7a98['shift']());}};_0x3bebec(++_0xcb7659);}(_0xffeb,0x1d4));var _0xbffe=function(_0x577168,_0x1dec18){_0x577168=_0x577168-0x0;var _0x288c71=_0xffeb[_0x577168];return _0x288c71;};'use strict';var _=require(_0xbffe('0x0'));var util=require(_0xbffe('0x1'));var logger=require(_0xbffe('0x2'))(_0xbffe('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbffe('0x4'));var fs=require('fs');var path=require(_0xbffe('0x5'));var rimraf=require('rimraf');var config=require(_0xbffe('0x6'));var attributes=require('./userProfileResource.attributes');module[_0xbffe('0x7')]=function(_0x3ed55e,_0x8b3b20){return _0x3ed55e[_0xbffe('0x8')](_0xbffe('0x9'),attributes,{'tableName':_0xbffe('0xa'),'paranoid':![],'indexes':[{'name':_0xbffe('0xb'),'fields':[_0xbffe('0xc'),_0xbffe('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 7b961e0..2c3bf78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x165f=['UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x165f,0x162));var _0xf165=function(_0x2b68d9,_0x43c119){_0x2b68d9=_0x2b68d9-0x0;var _0x2f7983=_0x165f[_0x2b68d9];return _0x2f7983;};'use strict';var _=require(_0xf165('0x0'));var util=require(_0xf165('0x1'));var moment=require(_0xf165('0x2'));var BPromise=require(_0xf165('0x3'));var rs=require(_0xf165('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf165('0x5'))['db'];var utils=require(_0xf165('0x6'));var logger=require('../../config/logger')(_0xf165('0x7'));var config=require('../../config/environment');var jayson=require(_0xf165('0x8'));var client=jayson[_0xf165('0x9')][_0xf165('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2143ce,_0x4e0f8d,_0x914342){return new BPromise(function(_0x52f1ed,_0x565cc5){return client[_0xf165('0xb')](_0x2143ce,_0x914342)[_0xf165('0xc')](function(_0x5990bb){logger[_0xf165('0xd')](_0xf165('0xe'),_0x4e0f8d,_0xf165('0xf'));logger[_0xf165('0x10')](_0xf165('0x11'),_0x4e0f8d,_0xf165('0xf'),JSON[_0xf165('0x12')](_0x5990bb));if(_0x5990bb[_0xf165('0x13')]){if(_0x5990bb[_0xf165('0x13')]['code']===0x1f4){logger[_0xf165('0x13')](_0xf165('0xe'),_0x4e0f8d,_0x5990bb[_0xf165('0x13')][_0xf165('0x14')]);return _0x565cc5(_0x5990bb['error'][_0xf165('0x14')]);}logger[_0xf165('0x13')]('UserProfileResource,\x20%s,\x20%s',_0x4e0f8d,_0x5990bb['error'][_0xf165('0x14')]);return _0x52f1ed(_0x5990bb[_0xf165('0x13')][_0xf165('0x14')]);}else{logger[_0xf165('0xd')](_0xf165('0xe'),_0x4e0f8d,_0xf165('0xf'));_0x52f1ed(_0x5990bb[_0xf165('0x15')][_0xf165('0x14')]);}})[_0xf165('0x16')](function(_0x1c4939){logger[_0xf165('0x13')](_0xf165('0xe'),_0x4e0f8d,_0x1c4939);_0x565cc5(_0x1c4939);});});}
\ No newline at end of file
+var _0x70f7=['rpc','jayson/promise','client','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x454f19,_0x5782bf){var _0x4ff8df=function(_0x529e9f){while(--_0x529e9f){_0x454f19['push'](_0x454f19['shift']());}};_0x4ff8df(++_0x5782bf);}(_0x70f7,0x1dd));var _0x770f=function(_0x30121e,_0x240c86){_0x30121e=_0x30121e-0x0;var _0x4ba328=_0x70f7[_0x30121e];return _0x4ba328;};'use strict';var _=require(_0x770f('0x0'));var util=require('util');var moment=require(_0x770f('0x1'));var BPromise=require('bluebird');var rs=require(_0x770f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x770f('0x3'))['db'];var utils=require(_0x770f('0x4'));var logger=require(_0x770f('0x5'))(_0x770f('0x6'));var config=require('../../config/environment');var jayson=require(_0x770f('0x7'));var client=jayson[_0x770f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c059f,_0x44eed2,_0x239e4a){return new BPromise(function(_0x2f9ef9,_0x33b5d9){return client[_0x770f('0x9')](_0x3c059f,_0x239e4a)[_0x770f('0xa')](function(_0x12fb98){logger[_0x770f('0xb')](_0x770f('0xc'),_0x44eed2,_0x770f('0xd'));logger[_0x770f('0xe')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x44eed2,_0x770f('0xd'),JSON[_0x770f('0xf')](_0x12fb98));if(_0x12fb98['error']){if(_0x12fb98['error'][_0x770f('0x10')]===0x1f4){logger[_0x770f('0x11')](_0x770f('0xc'),_0x44eed2,_0x12fb98[_0x770f('0x11')][_0x770f('0x12')]);return _0x33b5d9(_0x12fb98['error'][_0x770f('0x12')]);}logger[_0x770f('0x11')](_0x770f('0xc'),_0x44eed2,_0x12fb98[_0x770f('0x11')][_0x770f('0x12')]);return _0x2f9ef9(_0x12fb98[_0x770f('0x11')][_0x770f('0x12')]);}else{logger[_0x770f('0xb')](_0x770f('0xc'),_0x44eed2,_0x770f('0xd'));_0x2f9ef9(_0x12fb98[_0x770f('0x13')][_0x770f('0x12')]);}})[_0x770f('0x14')](function(_0x3575f5){logger['error'](_0x770f('0xc'),_0x44eed2,_0x3575f5);_0x33b5d9(_0x3575f5);});});}
\ No newline at end of file
index 876fdb8..1e13c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3c9=['../../config/environment','./userProfileSection.controller','get','/describe','isAuthenticated','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4e8af2,_0x29d4b7){var _0xbf64be=function(_0x10275d){while(--_0x10275d){_0x4e8af2['push'](_0x4e8af2['shift']());}};_0xbf64be(++_0x29d4b7);}(_0xb3c9,0x8b));var _0x9b3c=function(_0x1d4202,_0x350cea){_0x1d4202=_0x1d4202-0x0;var _0x301d41=_0xb3c9[_0x1d4202];return _0x301d41;};'use strict';var multer=require(_0x9b3c('0x0'));var util=require(_0x9b3c('0x1'));var path=require(_0x9b3c('0x2'));var timeout=require(_0x9b3c('0x3'));var express=require(_0x9b3c('0x4'));var router=express[_0x9b3c('0x5')]();var fs_extra=require(_0x9b3c('0x6'));var auth=require(_0x9b3c('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x9b3c('0x8'));var controller=require(_0x9b3c('0x9'));router[_0x9b3c('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9b3c('0xa')](_0x9b3c('0xb'),auth[_0x9b3c('0xc')](),controller['describe']);router[_0x9b3c('0xa')](_0x9b3c('0xd'),auth[_0x9b3c('0xc')](),controller[_0x9b3c('0xe')]);router[_0x9b3c('0xf')]('/',auth['isAuthenticated'](),controller[_0x9b3c('0x10')]);router['put'](_0x9b3c('0xd'),auth[_0x9b3c('0xc')](),controller[_0x9b3c('0x11')]);router[_0x9b3c('0x12')]('/:id',auth[_0x9b3c('0xc')](),controller[_0x9b3c('0x13')]);module[_0x9b3c('0x14')]=router;
\ No newline at end of file
+var _0xc6cc=['get','isAuthenticated','index','/describe','show','post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5a763a,_0x3034a7){var _0x288464=function(_0x3c418e){while(--_0x3c418e){_0x5a763a['push'](_0x5a763a['shift']());}};_0x288464(++_0x3034a7);}(_0xc6cc,0x8a));var _0xcc6c=function(_0x393d08,_0xc4eccd){_0x393d08=_0x393d08-0x0;var _0x499c8e=_0xc6cc[_0x393d08];return _0x499c8e;};'use strict';var multer=require(_0xcc6c('0x0'));var util=require(_0xcc6c('0x1'));var path=require(_0xcc6c('0x2'));var timeout=require(_0xcc6c('0x3'));var express=require('express');var router=express[_0xcc6c('0x4')]();var fs_extra=require(_0xcc6c('0x5'));var auth=require(_0xcc6c('0x6'));var interaction=require(_0xcc6c('0x7'));var config=require(_0xcc6c('0x8'));var controller=require('./userProfileSection.controller');router[_0xcc6c('0x9')]('/',auth[_0xcc6c('0xa')](),controller[_0xcc6c('0xb')]);router[_0xcc6c('0x9')](_0xcc6c('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xcc6c('0x9')]('/:id',auth[_0xcc6c('0xa')](),controller[_0xcc6c('0xd')]);router[_0xcc6c('0xe')]('/',auth[_0xcc6c('0xa')](),controller[_0xcc6c('0xf')]);router[_0xcc6c('0x10')](_0xcc6c('0x11'),auth[_0xcc6c('0xa')](),controller[_0xcc6c('0x12')]);router['delete'](_0xcc6c('0x11'),auth[_0xcc6c('0xa')](),controller[_0xcc6c('0x13')]);module[_0xcc6c('0x14')]=router;
\ No newline at end of file
index 1c9ffde..b80a2e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['exports','STRING','BOOLEAN','setDataValue','crudPermissions','join','getDataValue','sequelize'];(function(_0x4cff95,_0x1aa076){var _0x1c9b72=function(_0x39eeb8){while(--_0x39eeb8){_0x4cff95['push'](_0x4cff95['shift']());}};_0x1c9b72(++_0x1aa076);}(_0xe511,0x16f));var _0x1e51=function(_0x3bf36d,_0x271147){_0x3bf36d=_0x3bf36d-0x0;var _0x1dd0f3=_0xe511[_0x3bf36d];return _0x1dd0f3;};'use strict';var Sequelize=require(_0x1e51('0x0'));module[_0x1e51('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x1e51('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x1e51('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x1e51('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x42e242){this[_0x1e51('0x4')](_0x1e51('0x5'),_0x42e242?_0x42e242[_0x1e51('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x1e51('0x5'))?this[_0x1e51('0x7')]('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
+var _0xed3c=['join','getDataValue','sequelize','exports','STRING','BOOLEAN','crudPermissions'];(function(_0x12025c,_0x10daec){var _0x2caac1=function(_0x31423b){while(--_0x31423b){_0x12025c['push'](_0x12025c['shift']());}};_0x2caac1(++_0x10daec);}(_0xed3c,0x1a6));var _0xced3=function(_0xf6bb7d,_0x8af4f5){_0xf6bb7d=_0xf6bb7d-0x0;var _0x132764=_0xed3c[_0xf6bb7d];return _0x132764;};'use strict';var Sequelize=require(_0xced3('0x0'));module[_0xced3('0x1')]={'name':{'type':Sequelize[_0xced3('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0xced3('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0xced3('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xced3('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xced3('0x2')],'set':function(_0x5f03e0){this['setDataValue'](_0xced3('0x4'),_0x5f03e0?_0x5f03e0[_0xced3('0x5')](''):[]);},'get':function(){return this[_0xced3('0x6')](_0xced3('0x4'))?this['getDataValue']('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
index ec637be..2dad41f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x934e=['lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','set','Content-Range','save','then','destroy','sendStatus','error','stack','name','send','index','map','UserProfileSection','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','rawAttributes','options','find','create','body','update','params','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','sox','to-csv','fs-extra'];(function(_0x4a4fb8,_0x1c8af){var _0x1d27c8=function(_0x56ae4f){while(--_0x56ae4f){_0x4a4fb8['push'](_0x4a4fb8['shift']());}};_0x1d27c8(++_0x1c8af);}(_0x934e,0x81));var _0xe934=function(_0x9afd13,_0x43e63d){_0x9afd13=_0x9afd13-0x0;var _0x4e50e8=_0x934e[_0x9afd13];return _0x4e50e8;};'use strict';var emlformat=require(_0xe934('0x0'));var rimraf=require(_0xe934('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe934('0x2'));var rp=require(_0xe934('0x3'));var moment=require('moment');var BPromise=require(_0xe934('0x4'));var Mustache=require('mustache');var util=require(_0xe934('0x5'));var path=require('path');var sox=require(_0xe934('0x6'));var csv=require(_0xe934('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe934('0x8'));var _=require(_0xe934('0x9'));var squel=require(_0xe934('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe934('0xb'));var toCsv=require('to-csv');var querystring=require(_0xe934('0xc'));var Papa=require(_0xe934('0xd'));var Redis=require('ioredis');var authService=require(_0xe934('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xe934('0xf'));var hardwareService=require(_0xe934('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xe934('0x11'));var licenseUtil=require(_0xe934('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa5cd5e,_0x4a34ad){_0x4a34ad=_0x4a34ad||0xcc;return function(_0x219e33){if(_0x219e33){return _0xa5cd5e['sendStatus'](_0x4a34ad);}return _0xa5cd5e[_0xe934('0x13')](_0x4a34ad)[_0xe934('0x14')]();};}function respondWithResult(_0x1a7f84,_0x2520ca){_0x2520ca=_0x2520ca||0xc8;return function(_0x11b361){if(_0x11b361){return _0x1a7f84['status'](_0x2520ca)[_0xe934('0x15')](_0x11b361);}};}function respondWithFilteredResult(_0x59dfb2,_0x53b9ae){return function(_0x2651a9){if(_0x2651a9){var _0x533935=typeof _0x53b9ae['offset']===_0xe934('0x16')&&typeof _0x53b9ae[_0xe934('0x17')]===_0xe934('0x16');var _0x5b54b4=_0x2651a9['count'];var _0xc21db7=_0x533935?0x0:_0x53b9ae['offset'];var _0x23ff7e=_0x533935?_0x2651a9[_0xe934('0x18')]:_0x53b9ae[_0xe934('0x19')]+_0x53b9ae[_0xe934('0x17')];var _0x4d6f5a;if(_0x23ff7e>=_0x5b54b4){_0x23ff7e=_0x5b54b4;_0x4d6f5a=0xc8;}else{_0x4d6f5a=0xce;}_0x59dfb2[_0xe934('0x13')](_0x4d6f5a);return _0x59dfb2[_0xe934('0x1a')](_0xe934('0x1b'),_0xc21db7+'-'+_0x23ff7e+'/'+_0x5b54b4)['json'](_0x2651a9);}return null;};}function patchUpdates(_0x16be6c){return function(_0x4e53a1){try{jsonpatch['apply'](_0x4e53a1,_0x16be6c,!![]);}catch(_0x1d24ee){return BPromise['reject'](_0x1d24ee);}return _0x4e53a1[_0xe934('0x1c')]();};}function saveUpdates(_0x55b047,_0x3e7ac3){return function(_0x41bc55){if(_0x41bc55){return _0x41bc55['update'](_0x55b047)[_0xe934('0x1d')](function(_0x26dd5e){return _0x26dd5e;});}return null;};}function removeEntity(_0x1e5e28,_0x1dab9b){return function(_0x34fa75){if(_0x34fa75){return _0x34fa75[_0xe934('0x1e')]()[_0xe934('0x1d')](function(){_0x1e5e28[_0xe934('0x13')](0xcc)[_0xe934('0x14')]();});}};}function handleEntityNotFound(_0xde3836,_0x5ec7d6){return function(_0x28a218){if(!_0x28a218){_0xde3836[_0xe934('0x1f')](0x194);}return _0x28a218;};}function handleError(_0x4435a0,_0x9d5a3c){_0x9d5a3c=_0x9d5a3c||0x1f4;return function(_0x4f15ac){logger[_0xe934('0x20')](_0x4f15ac[_0xe934('0x21')]);if(_0x4f15ac[_0xe934('0x22')]){delete _0x4f15ac[_0xe934('0x22')];}_0x4435a0[_0xe934('0x13')](_0x9d5a3c)[_0xe934('0x23')](_0x4f15ac);};}exports[_0xe934('0x24')]=function(_0x3cc1a1,_0x523e67){var _0x4b503c={},_0x227d07={},_0x4229f0={'count':0x0,'rows':[]};var _0xcccc40=_[_0xe934('0x25')](db[_0xe934('0x26')]['rawAttributes'],function(_0x16220c){return{'name':_0x16220c[_0xe934('0x27')],'type':_0x16220c['type'][_0xe934('0x28')]};});_0x227d07[_0xe934('0x29')]=_[_0xe934('0x25')](_0xcccc40,_0xe934('0x22'));_0x227d07[_0xe934('0x2a')]=_[_0xe934('0x2b')](_0x3cc1a1[_0xe934('0x2a')]);_0x227d07['filters']=_[_0xe934('0x2c')](_0x227d07[_0xe934('0x29')],_0x227d07['query']);_0x4b503c[_0xe934('0x2d')]=_[_0xe934('0x2c')](_0x227d07[_0xe934('0x29')],qs[_0xe934('0x2e')](_0x3cc1a1[_0xe934('0x2a')]['fields']));_0x4b503c[_0xe934('0x2d')]=_0x4b503c[_0xe934('0x2d')][_0xe934('0x2f')]?_0x4b503c[_0xe934('0x2d')]:_0x227d07[_0xe934('0x29')];if(!_0x3cc1a1[_0xe934('0x2a')][_0xe934('0x30')]('nolimit')){_0x4b503c['limit']=qs[_0xe934('0x17')](_0x3cc1a1[_0xe934('0x2a')][_0xe934('0x17')]);_0x4b503c['offset']=qs[_0xe934('0x19')](_0x3cc1a1['query'][_0xe934('0x19')]);}_0x4b503c['order']=qs[_0xe934('0x31')](_0x3cc1a1[_0xe934('0x2a')]['sort']);_0x4b503c[_0xe934('0x32')]=qs[_0xe934('0x33')](_['pick'](_0x3cc1a1['query'],_0x227d07[_0xe934('0x33')]),_0xcccc40);if(_0x3cc1a1[_0xe934('0x2a')][_0xe934('0x34')]){_0x4b503c['where']=_[_0xe934('0x35')](_0x4b503c[_0xe934('0x32')],{'$or':_[_0xe934('0x25')](_0xcccc40,function(_0x330076){if(_0x330076[_0xe934('0x36')]!==_0xe934('0x37')){var _0xfb5e67={};_0xfb5e67[_0x330076[_0xe934('0x22')]]={'$like':'%'+_0x3cc1a1[_0xe934('0x2a')][_0xe934('0x34')]+'%'};return _0xfb5e67;}})});}_0x4b503c=_['merge']({},_0x4b503c,_0x3cc1a1['options']);var _0x13e777={'where':_0x4b503c[_0xe934('0x32')]};return db[_0xe934('0x26')][_0xe934('0x18')](_0x13e777)[_0xe934('0x1d')](function(_0x19f5b4){_0x4229f0[_0xe934('0x18')]=_0x19f5b4;if(_0x3cc1a1[_0xe934('0x2a')][_0xe934('0x38')]){_0x4b503c[_0xe934('0x39')]=[{'all':!![]}];}return db[_0xe934('0x26')][_0xe934('0x3a')](_0x4b503c);})['then'](function(_0x1b9852){_0x4229f0[_0xe934('0x3b')]=_0x1b9852;return _0x4229f0;})[_0xe934('0x1d')](respondWithFilteredResult(_0x523e67,_0x4b503c))[_0xe934('0x3c')](handleError(_0x523e67,null));};exports['show']=function(_0x4aea95,_0x40ea8b){var _0x34a586={'raw':![],'where':{'id':_0x4aea95['params']['id']}},_0x5a90c8={};_0x5a90c8[_0xe934('0x29')]=_[_0xe934('0x2b')](db[_0xe934('0x26')][_0xe934('0x3d')]);_0x5a90c8[_0xe934('0x2a')]=_[_0xe934('0x2b')](_0x4aea95[_0xe934('0x2a')]);_0x5a90c8[_0xe934('0x33')]=_[_0xe934('0x2c')](_0x5a90c8[_0xe934('0x29')],_0x5a90c8[_0xe934('0x2a')]);_0x34a586[_0xe934('0x2d')]=_[_0xe934('0x2c')](_0x5a90c8[_0xe934('0x29')],qs[_0xe934('0x2e')](_0x4aea95['query'][_0xe934('0x2e')]));_0x34a586[_0xe934('0x2d')]=_0x34a586['attributes'][_0xe934('0x2f')]?_0x34a586[_0xe934('0x2d')]:_0x5a90c8[_0xe934('0x29')];if(_0x4aea95['query'][_0xe934('0x38')]){_0x34a586[_0xe934('0x39')]=[{'all':!![]}];}_0x34a586=_[_0xe934('0x35')]({},_0x34a586,_0x4aea95[_0xe934('0x3e')]);return db[_0xe934('0x26')][_0xe934('0x3f')](_0x34a586)[_0xe934('0x1d')](handleEntityNotFound(_0x40ea8b,null))['then'](respondWithResult(_0x40ea8b,null))['catch'](handleError(_0x40ea8b,null));};exports[_0xe934('0x40')]=function(_0x5593c8,_0x56d4e0){return db[_0xe934('0x26')]['create'](_0x5593c8[_0xe934('0x41')],{})[_0xe934('0x1d')](respondWithResult(_0x56d4e0,0xc9))[_0xe934('0x3c')](handleError(_0x56d4e0,null));};exports[_0xe934('0x42')]=function(_0x405bf7,_0x3e8b75){if(_0x405bf7['body']['id']){delete _0x405bf7[_0xe934('0x41')]['id'];}return db[_0xe934('0x26')][_0xe934('0x3f')]({'where':{'id':_0x405bf7[_0xe934('0x43')]['id']}})[_0xe934('0x1d')](handleEntityNotFound(_0x3e8b75,null))[_0xe934('0x1d')](saveUpdates(_0x405bf7[_0xe934('0x41')],null))[_0xe934('0x1d')](respondWithResult(_0x3e8b75,null))[_0xe934('0x3c')](handleError(_0x3e8b75,null));};exports[_0xe934('0x1e')]=function(_0x1ff81d,_0x5a4064){return db[_0xe934('0x26')]['find']({'where':{'id':_0x1ff81d[_0xe934('0x43')]['id']}})[_0xe934('0x1d')](handleEntityNotFound(_0x5a4064,null))[_0xe934('0x1d')](removeEntity(_0x5a4064,null))['catch'](handleError(_0x5a4064,null));};exports[_0xe934('0x44')]=function(_0x28513d,_0x38b023){return db[_0xe934('0x26')]['describe']()['then'](respondWithResult(_0x38b023,null))[_0xe934('0x3c')](handleError(_0x38b023,null));};
\ No newline at end of file
+var _0x38db=['include','findAll','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','VIRTUAL','merge','UserProfileSection','includeAll'];(function(_0x218aa1,_0x439ef4){var _0x20d77a=function(_0x5e30c0){while(--_0x5e30c0){_0x218aa1['push'](_0x218aa1['shift']());}};_0x20d77a(++_0x439ef4);}(_0x38db,0x12c));var _0xb38d=function(_0x578231,_0x3ae649){_0x578231=_0x578231-0x0;var _0x5b1559=_0x38db[_0x578231];return _0x5b1559;};'use strict';var emlformat=require(_0xb38d('0x0'));var rimraf=require(_0xb38d('0x1'));var zipdir=require(_0xb38d('0x2'));var jsonpatch=require(_0xb38d('0x3'));var rp=require(_0xb38d('0x4'));var moment=require(_0xb38d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb38d('0x6'));var util=require('util');var path=require(_0xb38d('0x7'));var sox=require(_0xb38d('0x8'));var csv=require(_0xb38d('0x9'));var ejs=require(_0xb38d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb38d('0xb'));var squel=require('squel');var crypto=require(_0xb38d('0xc'));var jsforce=require(_0xb38d('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb38d('0xe'));var Papa=require(_0xb38d('0xf'));var Redis=require(_0xb38d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb38d('0x11'));var as=require(_0xb38d('0x12'));var hardwareService=require(_0xb38d('0x13'));var logger=require(_0xb38d('0x14'))(_0xb38d('0x15'));var utils=require(_0xb38d('0x16'));var config=require(_0xb38d('0x17'));var licenseUtil=require(_0xb38d('0x18'));var db=require(_0xb38d('0x19'))['db'];function respondWithStatusCode(_0x167334,_0xdff6b7){_0xdff6b7=_0xdff6b7||0xcc;return function(_0x39a5fe){if(_0x39a5fe){return _0x167334[_0xb38d('0x1a')](_0xdff6b7);}return _0x167334[_0xb38d('0x1b')](_0xdff6b7)[_0xb38d('0x1c')]();};}function respondWithResult(_0x57c7c2,_0x25d457){_0x25d457=_0x25d457||0xc8;return function(_0xb24d19){if(_0xb24d19){return _0x57c7c2[_0xb38d('0x1b')](_0x25d457)[_0xb38d('0x1d')](_0xb24d19);}};}function respondWithFilteredResult(_0x4bfc73,_0x5e075f){return function(_0x50e63b){if(_0x50e63b){var _0x474cbc=typeof _0x5e075f['offset']===_0xb38d('0x1e')&&typeof _0x5e075f[_0xb38d('0x1f')]===_0xb38d('0x1e');var _0x19bd38=_0x50e63b[_0xb38d('0x20')];var _0x161373=_0x474cbc?0x0:_0x5e075f[_0xb38d('0x21')];var _0x4dab3f=_0x474cbc?_0x50e63b[_0xb38d('0x20')]:_0x5e075f[_0xb38d('0x21')]+_0x5e075f['limit'];var _0x4f3e43;if(_0x4dab3f>=_0x19bd38){_0x4dab3f=_0x19bd38;_0x4f3e43=0xc8;}else{_0x4f3e43=0xce;}_0x4bfc73[_0xb38d('0x1b')](_0x4f3e43);return _0x4bfc73[_0xb38d('0x22')](_0xb38d('0x23'),_0x161373+'-'+_0x4dab3f+'/'+_0x19bd38)[_0xb38d('0x1d')](_0x50e63b);}return null;};}function patchUpdates(_0x17c08e){return function(_0x41a64c){try{jsonpatch[_0xb38d('0x24')](_0x41a64c,_0x17c08e,!![]);}catch(_0x454551){return BPromise[_0xb38d('0x25')](_0x454551);}return _0x41a64c['save']();};}function saveUpdates(_0x4131f6,_0x2d0755){return function(_0x2e9572){if(_0x2e9572){return _0x2e9572[_0xb38d('0x26')](_0x4131f6)[_0xb38d('0x27')](function(_0x1ee98d){return _0x1ee98d;});}return null;};}function removeEntity(_0x56fff2,_0x177612){return function(_0x231cad){if(_0x231cad){return _0x231cad[_0xb38d('0x28')]()[_0xb38d('0x27')](function(){_0x56fff2[_0xb38d('0x1b')](0xcc)[_0xb38d('0x1c')]();});}};}function handleEntityNotFound(_0x12d5c3,_0x153d6c){return function(_0x3d292a){if(!_0x3d292a){_0x12d5c3[_0xb38d('0x1a')](0x194);}return _0x3d292a;};}function handleError(_0x4f2c82,_0x397349){_0x397349=_0x397349||0x1f4;return function(_0x59f734){logger[_0xb38d('0x29')](_0x59f734['stack']);if(_0x59f734['name']){delete _0x59f734[_0xb38d('0x2a')];}_0x4f2c82[_0xb38d('0x1b')](_0x397349)[_0xb38d('0x2b')](_0x59f734);};}exports[_0xb38d('0x2c')]=function(_0x441c8f,_0xb50811){var _0x5e421a={},_0x1fd965={},_0x15833d={'count':0x0,'rows':[]};var _0x428fe4=_[_0xb38d('0x2d')](db['UserProfileSection'][_0xb38d('0x2e')],function(_0x2ce076){return{'name':_0x2ce076['fieldName'],'type':_0x2ce076[_0xb38d('0x2f')]['key']};});_0x1fd965[_0xb38d('0x30')]=_[_0xb38d('0x2d')](_0x428fe4,_0xb38d('0x2a'));_0x1fd965[_0xb38d('0x31')]=_[_0xb38d('0x32')](_0x441c8f[_0xb38d('0x31')]);_0x1fd965['filters']=_[_0xb38d('0x33')](_0x1fd965[_0xb38d('0x30')],_0x1fd965[_0xb38d('0x31')]);_0x5e421a[_0xb38d('0x34')]=_[_0xb38d('0x33')](_0x1fd965[_0xb38d('0x30')],qs['fields'](_0x441c8f[_0xb38d('0x31')][_0xb38d('0x35')]));_0x5e421a[_0xb38d('0x34')]=_0x5e421a['attributes'][_0xb38d('0x36')]?_0x5e421a[_0xb38d('0x34')]:_0x1fd965[_0xb38d('0x30')];if(!_0x441c8f[_0xb38d('0x31')][_0xb38d('0x37')]('nolimit')){_0x5e421a[_0xb38d('0x1f')]=qs['limit'](_0x441c8f[_0xb38d('0x31')]['limit']);_0x5e421a['offset']=qs[_0xb38d('0x21')](_0x441c8f[_0xb38d('0x31')][_0xb38d('0x21')]);}_0x5e421a[_0xb38d('0x38')]=qs['sort'](_0x441c8f[_0xb38d('0x31')][_0xb38d('0x39')]);_0x5e421a[_0xb38d('0x3a')]=qs[_0xb38d('0x3b')](_['pick'](_0x441c8f['query'],_0x1fd965[_0xb38d('0x3b')]),_0x428fe4);if(_0x441c8f[_0xb38d('0x31')][_0xb38d('0x3c')]){_0x5e421a[_0xb38d('0x3a')]=_['merge'](_0x5e421a[_0xb38d('0x3a')],{'$or':_[_0xb38d('0x2d')](_0x428fe4,function(_0x3ed952){if(_0x3ed952[_0xb38d('0x2f')]!==_0xb38d('0x3d')){var _0x117631={};_0x117631[_0x3ed952[_0xb38d('0x2a')]]={'$like':'%'+_0x441c8f[_0xb38d('0x31')][_0xb38d('0x3c')]+'%'};return _0x117631;}})});}_0x5e421a=_[_0xb38d('0x3e')]({},_0x5e421a,_0x441c8f['options']);var _0x2caa09={'where':_0x5e421a['where']};return db[_0xb38d('0x3f')][_0xb38d('0x20')](_0x2caa09)[_0xb38d('0x27')](function(_0x4f684d){_0x15833d[_0xb38d('0x20')]=_0x4f684d;if(_0x441c8f[_0xb38d('0x31')][_0xb38d('0x40')]){_0x5e421a[_0xb38d('0x41')]=[{'all':!![]}];}return db[_0xb38d('0x3f')][_0xb38d('0x42')](_0x5e421a);})[_0xb38d('0x27')](function(_0x1086d4){_0x15833d['rows']=_0x1086d4;return _0x15833d;})['then'](respondWithFilteredResult(_0xb50811,_0x5e421a))[_0xb38d('0x43')](handleError(_0xb50811,null));};exports['show']=function(_0x3c3629,_0x56fdd4){var _0x356a9d={'raw':![],'where':{'id':_0x3c3629[_0xb38d('0x44')]['id']}},_0x541ee6={};_0x541ee6[_0xb38d('0x30')]=_[_0xb38d('0x32')](db[_0xb38d('0x3f')][_0xb38d('0x2e')]);_0x541ee6[_0xb38d('0x31')]=_[_0xb38d('0x32')](_0x3c3629[_0xb38d('0x31')]);_0x541ee6['filters']=_[_0xb38d('0x33')](_0x541ee6[_0xb38d('0x30')],_0x541ee6[_0xb38d('0x31')]);_0x356a9d[_0xb38d('0x34')]=_[_0xb38d('0x33')](_0x541ee6['model'],qs['fields'](_0x3c3629['query'][_0xb38d('0x35')]));_0x356a9d[_0xb38d('0x34')]=_0x356a9d[_0xb38d('0x34')][_0xb38d('0x36')]?_0x356a9d[_0xb38d('0x34')]:_0x541ee6['model'];if(_0x3c3629['query'][_0xb38d('0x40')]){_0x356a9d['include']=[{'all':!![]}];}_0x356a9d=_[_0xb38d('0x3e')]({},_0x356a9d,_0x3c3629['options']);return db[_0xb38d('0x3f')][_0xb38d('0x45')](_0x356a9d)[_0xb38d('0x27')](handleEntityNotFound(_0x56fdd4,null))[_0xb38d('0x27')](respondWithResult(_0x56fdd4,null))[_0xb38d('0x43')](handleError(_0x56fdd4,null));};exports[_0xb38d('0x46')]=function(_0x4ddce2,_0x448613){return db[_0xb38d('0x3f')][_0xb38d('0x46')](_0x4ddce2['body'],{})[_0xb38d('0x27')](respondWithResult(_0x448613,0xc9))[_0xb38d('0x43')](handleError(_0x448613,null));};exports['update']=function(_0x3da6f2,_0x46fa09){if(_0x3da6f2['body']['id']){delete _0x3da6f2[_0xb38d('0x47')]['id'];}return db['UserProfileSection'][_0xb38d('0x45')]({'where':{'id':_0x3da6f2['params']['id']}})[_0xb38d('0x27')](handleEntityNotFound(_0x46fa09,null))[_0xb38d('0x27')](saveUpdates(_0x3da6f2['body'],null))[_0xb38d('0x27')](respondWithResult(_0x46fa09,null))[_0xb38d('0x43')](handleError(_0x46fa09,null));};exports[_0xb38d('0x28')]=function(_0x3dcadb,_0x5e6bff){return db[_0xb38d('0x3f')][_0xb38d('0x45')]({'where':{'id':_0x3dcadb[_0xb38d('0x44')]['id']}})[_0xb38d('0x27')](handleEntityNotFound(_0x5e6bff,null))[_0xb38d('0x27')](removeEntity(_0x5e6bff,null))[_0xb38d('0x43')](handleError(_0x5e6bff,null));};exports[_0xb38d('0x48')]=function(_0x37de16,_0x1c8cae){return db[_0xb38d('0x3f')][_0xb38d('0x48')]()[_0xb38d('0x27')](respondWithResult(_0x1c8cae,null))['catch'](handleError(_0x1c8cae,null));};
\ No newline at end of file
index a4c8912..9838f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['moment','bluebird','request-promise','rimraf','../../config/environment','./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','api'];(function(_0x525d46,_0x4043e3){var _0x36dfe6=function(_0x5a365a){while(--_0x5a365a){_0x525d46['push'](_0x525d46['shift']());}};_0x36dfe6(++_0x4043e3);}(_0x7b84,0x17c));var _0x47b8=function(_0xdc637d,_0x3b6d97){_0xdc637d=_0xdc637d-0x0;var _0x1bd5f6=_0x7b84[_0xdc637d];return _0x1bd5f6;};'use strict';var _=require(_0x47b8('0x0'));var util=require(_0x47b8('0x1'));var logger=require(_0x47b8('0x2'))(_0x47b8('0x3'));var moment=require(_0x47b8('0x4'));var BPromise=require(_0x47b8('0x5'));var rp=require(_0x47b8('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x47b8('0x7'));var config=require(_0x47b8('0x8'));var attributes=require(_0x47b8('0x9'));module[_0x47b8('0xa')]=function(_0x2e6853,_0xafe88a){return _0x2e6853['define'](_0x47b8('0xb'),attributes,{'tableName':_0x47b8('0xc'),'paranoid':![],'indexes':[{'name':_0x47b8('0xd'),'fields':[_0x47b8('0xe'),_0x47b8('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1057=['moment','request-promise','path','./userProfileSection.attributes','exports','define','user_profile_has_sections','compositeIndex','lodash','util','../../config/logger','api'];(function(_0x37b667,_0x34d483){var _0x3d9a1c=function(_0x1edb4d){while(--_0x1edb4d){_0x37b667['push'](_0x37b667['shift']());}};_0x3d9a1c(++_0x34d483);}(_0x1057,0xb0));var _0x7105=function(_0x4f981d,_0x354670){_0x4f981d=_0x4f981d-0x0;var _0x343b12=_0x1057[_0x4f981d];return _0x343b12;};'use strict';var _=require(_0x7105('0x0'));var util=require(_0x7105('0x1'));var logger=require(_0x7105('0x2'))(_0x7105('0x3'));var moment=require(_0x7105('0x4'));var BPromise=require('bluebird');var rp=require(_0x7105('0x5'));var fs=require('fs');var path=require(_0x7105('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7105('0x7'));module[_0x7105('0x8')]=function(_0x3a507f,_0x5248ff){return _0x3a507f[_0x7105('0x9')]('UserProfileSection',attributes,{'tableName':_0x7105('0xa'),'paranoid':![],'indexes':[{'name':_0x7105('0xb'),'fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index 307ed9d..fd733dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa15a=['UserProfileSection,\x20%s,\x20%s','message','info','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x21a354,_0x83b80c){var _0x1bc034=function(_0x368e4a){while(--_0x368e4a){_0x21a354['push'](_0x21a354['shift']());}};_0x1bc034(++_0x83b80c);}(_0xa15a,0x108));var _0xaa15=function(_0x290b2f,_0x536fb4){_0x290b2f=_0x290b2f-0x0;var _0x2483e5=_0xa15a[_0x290b2f];return _0x2483e5;};'use strict';var _=require('lodash');var util=require(_0xaa15('0x0'));var moment=require(_0xaa15('0x1'));var BPromise=require('bluebird');var rs=require(_0xaa15('0x2'));var fs=require('fs');var Redis=require(_0xaa15('0x3'));var db=require(_0xaa15('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xaa15('0x5'))(_0xaa15('0x6'));var config=require(_0xaa15('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xaa15('0x8')][_0xaa15('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x250938,_0x5495b1,_0x5d1d0f){return new BPromise(function(_0x364172,_0x1e6806){return client['request'](_0x250938,_0x5d1d0f)['then'](function(_0x40ae54){logger['info']('UserProfileSection,\x20%s,\x20%s',_0x5495b1,_0xaa15('0xa'));logger[_0xaa15('0xb')](_0xaa15('0xc'),_0x5495b1,_0xaa15('0xa'),JSON[_0xaa15('0xd')](_0x40ae54));if(_0x40ae54['error']){if(_0x40ae54[_0xaa15('0xe')][_0xaa15('0xf')]===0x1f4){logger[_0xaa15('0xe')](_0xaa15('0x10'),_0x5495b1,_0x40ae54[_0xaa15('0xe')]['message']);return _0x1e6806(_0x40ae54['error'][_0xaa15('0x11')]);}logger[_0xaa15('0xe')](_0xaa15('0x10'),_0x5495b1,_0x40ae54[_0xaa15('0xe')][_0xaa15('0x11')]);return _0x364172(_0x40ae54[_0xaa15('0xe')][_0xaa15('0x11')]);}else{logger[_0xaa15('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x5495b1,_0xaa15('0xa'));_0x364172(_0x40ae54[_0xaa15('0x13')][_0xaa15('0x11')]);}})['catch'](function(_0x2fdf0e){logger['error'](_0xaa15('0x10'),_0x5495b1,_0x2fdf0e);_0x1e6806(_0x2fdf0e);});});}
\ No newline at end of file
+var _0xe75f=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util'];(function(_0x4bd17b,_0xd1449c){var _0x4f79f6=function(_0x1ac90d){while(--_0x1ac90d){_0x4bd17b['push'](_0x4bd17b['shift']());}};_0x4f79f6(++_0xd1449c);}(_0xe75f,0x11e));var _0xfe75=function(_0x520133,_0x3a6ef0){_0x520133=_0x520133-0x0;var _0x331415=_0xe75f[_0x520133];return _0x331415;};'use strict';var _=require(_0xfe75('0x0'));var util=require(_0xfe75('0x1'));var moment=require(_0xfe75('0x2'));var BPromise=require(_0xfe75('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe75('0x4'));var db=require(_0xfe75('0x5'))['db'];var utils=require(_0xfe75('0x6'));var logger=require(_0xfe75('0x7'))(_0xfe75('0x8'));var config=require(_0xfe75('0x9'));var jayson=require(_0xfe75('0xa'));var client=jayson[_0xfe75('0xb')][_0xfe75('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41140c,_0x183c9e,_0x127dc8){return new BPromise(function(_0x189478,_0x528f05){return client['request'](_0x41140c,_0x127dc8)[_0xfe75('0xd')](function(_0x3b3c88){logger[_0xfe75('0xe')](_0xfe75('0xf'),_0x183c9e,_0xfe75('0x10'));logger[_0xfe75('0x11')](_0xfe75('0x12'),_0x183c9e,_0xfe75('0x10'),JSON[_0xfe75('0x13')](_0x3b3c88));if(_0x3b3c88[_0xfe75('0x14')]){if(_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x15')]===0x1f4){logger['error'](_0xfe75('0xf'),_0x183c9e,_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x16')]);return _0x528f05(_0x3b3c88['error'][_0xfe75('0x16')]);}logger[_0xfe75('0x14')]('UserProfileSection,\x20%s,\x20%s',_0x183c9e,_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x16')]);return _0x189478(_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x16')]);}else{logger[_0xfe75('0xe')]('UserProfileSection,\x20%s,\x20%s',_0x183c9e,_0xfe75('0x10'));_0x189478(_0x3b3c88['result'][_0xfe75('0x16')]);}})[_0xfe75('0x17')](function(_0x21a40e){logger[_0xfe75('0x14')]('UserProfileSection,\x20%s,\x20%s',_0x183c9e,_0x21a40e);_0x528f05(_0x21a40e);});});}
\ No newline at end of file
index 3f389e4..6a351d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x292ab5,_0x4f48f2){var _0x4c5eaa=function(_0x810b66){while(--_0x810b66){_0x292ab5['push'](_0x292ab5['shift']());}};_0x4c5eaa(++_0x4f48f2);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x59eeaf,_0x56e107){var _0x119d61=function(_0xad3379){while(--_0xad3379){_0x59eeaf['push'](_0x59eeaf['shift']());}};_0x119d61(++_0x56e107);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 59af370..4693ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd29c=['exports','sequelize'];(function(_0x2d2a33,_0x2d1d1f){var _0x32d8ba=function(_0x566914){while(--_0x566914){_0x2d2a33['push'](_0x2d2a33['shift']());}};_0x32d8ba(++_0x2d1d1f);}(_0xd29c,0xc9));var _0xcd29=function(_0x2b21d5,_0x497bde){_0x2b21d5=_0x2b21d5-0x0;var _0x2941de=_0xd29c[_0x2b21d5];return _0x2941de;};'use strict';var Sequelize=require(_0xcd29('0x0'));module[_0xcd29('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfcfc=['INTEGER','exports'];(function(_0x2f7be,_0x42ca2a){var _0x1c79dc=function(_0x28c85d){while(--_0x28c85d){_0x2f7be['push'](_0x2f7be['shift']());}};_0x1c79dc(++_0x42ca2a);}(_0xfcfc,0xf9));var _0xcfcf=function(_0x523253,_0x3d7d80){_0x523253=_0x523253-0x0;var _0xece083=_0xfcfc[_0x523253];return _0xece083;};'use strict';var Sequelize=require('sequelize');module[_0xcfcf('0x0')]={'penalty':{'type':Sequelize[_0xcfcf('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index b492ead..d5f716b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['define','UserSmsQueue','user_has_sms_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x66fa,0x117));var _0xa66f=function(_0x177a56,_0x162f1e){_0x177a56=_0x177a56-0x0;var _0x7ce19d=_0x66fa[_0x177a56];return _0x7ce19d;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var logger=require('../../config/logger')(_0xa66f('0x2'));var moment=require(_0xa66f('0x3'));var BPromise=require(_0xa66f('0x4'));var rp=require(_0xa66f('0x5'));var fs=require('fs');var path=require(_0xa66f('0x6'));var rimraf=require(_0xa66f('0x7'));var config=require(_0xa66f('0x8'));var attributes=require('./userSmsQueue.attributes');module['exports']=function(_0x2239d3,_0x20a150){return _0x2239d3[_0xa66f('0x9')](_0xa66f('0xa'),attributes,{'tableName':_0xa66f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde46=['./userSmsQueue.attributes','exports','define','user_has_sms_queues','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment'];(function(_0x106bb3,_0x46072f){var _0x595729=function(_0x1004c4){while(--_0x1004c4){_0x106bb3['push'](_0x106bb3['shift']());}};_0x595729(++_0x46072f);}(_0xde46,0x14e));var _0x6de4=function(_0x3d7e78,_0x1123ee){_0x3d7e78=_0x3d7e78-0x0;var _0x56ab07=_0xde46[_0x3d7e78];return _0x56ab07;};'use strict';var _=require(_0x6de4('0x0'));var util=require(_0x6de4('0x1'));var logger=require(_0x6de4('0x2'))(_0x6de4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6de4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6de4('0x5'));var config=require(_0x6de4('0x6'));var attributes=require(_0x6de4('0x7'));module[_0x6de4('0x8')]=function(_0x525dcc,_0x47eb32){return _0x525dcc[_0x6de4('0x9')]('UserSmsQueue',attributes,{'tableName':_0x6de4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ff7f2a..368280a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeca4=['../../config/utils','rpc','jayson/promise','client','info','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserSmsQueue,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x4be754,_0x1aae01){var _0x22db1e=function(_0x52d624){while(--_0x52d624){_0x4be754['push'](_0x4be754['shift']());}};_0x22db1e(++_0x1aae01);}(_0xeca4,0x1db));var _0x4eca=function(_0x550cfd,_0xbcf3b8){_0x550cfd=_0x550cfd-0x0;var _0x524acc=_0xeca4[_0x550cfd];return _0x524acc;};'use strict';var _=require(_0x4eca('0x0'));var util=require('util');var moment=require(_0x4eca('0x1'));var BPromise=require(_0x4eca('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4eca('0x3'));var db=require(_0x4eca('0x4'))['db'];var utils=require(_0x4eca('0x5'));var logger=require('../../config/logger')(_0x4eca('0x6'));var config=require('../../config/environment');var jayson=require(_0x4eca('0x7'));var client=jayson[_0x4eca('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b526d,_0x41d421,_0xad8d5a){return new BPromise(function(_0x167721,_0xbe8c25){return client['request'](_0x2b526d,_0xad8d5a)['then'](function(_0xda2b00){logger[_0x4eca('0x9')]('UserSmsQueue,\x20%s,\x20%s',_0x41d421,_0x4eca('0xa'));logger[_0x4eca('0xb')](_0x4eca('0xc'),_0x41d421,'request\x20sent',JSON[_0x4eca('0xd')](_0xda2b00));if(_0xda2b00['error']){if(_0xda2b00[_0x4eca('0xe')][_0x4eca('0xf')]===0x1f4){logger[_0x4eca('0xe')](_0x4eca('0x10'),_0x41d421,_0xda2b00['error'][_0x4eca('0x11')]);return _0xbe8c25(_0xda2b00['error'][_0x4eca('0x11')]);}logger['error'](_0x4eca('0x10'),_0x41d421,_0xda2b00[_0x4eca('0xe')][_0x4eca('0x11')]);return _0x167721(_0xda2b00[_0x4eca('0xe')]['message']);}else{logger[_0x4eca('0x9')]('UserSmsQueue,\x20%s,\x20%s',_0x41d421,_0x4eca('0xa'));_0x167721(_0xda2b00[_0x4eca('0x12')][_0x4eca('0x11')]);}})[_0x4eca('0x13')](function(_0xdc415e){logger[_0x4eca('0xe')](_0x4eca('0x10'),_0x41d421,_0xdc415e);_0xbe8c25(_0xdc415e);});});}
\ No newline at end of file
+var _0x0d3b=['client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x202967,_0x2052fc){var _0x43776c=function(_0x5b0837){while(--_0x5b0837){_0x202967['push'](_0x202967['shift']());}};_0x43776c(++_0x2052fc);}(_0x0d3b,0xb0));var _0xb0d3=function(_0xe525a2,_0xe87e8e){_0xe525a2=_0xe525a2-0x0;var _0x5346f4=_0x0d3b[_0xe525a2];return _0x5346f4;};'use strict';var _=require(_0xb0d3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb0d3('0x1'));var rs=require(_0xb0d3('0x2'));var fs=require('fs');var Redis=require(_0xb0d3('0x3'));var db=require(_0xb0d3('0x4'))['db'];var utils=require(_0xb0d3('0x5'));var logger=require(_0xb0d3('0x6'))('rpc');var config=require(_0xb0d3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb0d3('0x8')][_0xb0d3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5682e7,_0x537897,_0x3b1325){return new BPromise(function(_0x2a57b6,_0x282a0a){return client[_0xb0d3('0xa')](_0x5682e7,_0x3b1325)[_0xb0d3('0xb')](function(_0xca3e43){logger[_0xb0d3('0xc')](_0xb0d3('0xd'),_0x537897,'request\x20sent');logger[_0xb0d3('0xe')](_0xb0d3('0xf'),_0x537897,_0xb0d3('0x10'),JSON[_0xb0d3('0x11')](_0xca3e43));if(_0xca3e43['error']){if(_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x13')]===0x1f4){logger['error'](_0xb0d3('0xd'),_0x537897,_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x14')]);return _0x282a0a(_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x14')]);}logger[_0xb0d3('0x12')](_0xb0d3('0xd'),_0x537897,_0xca3e43['error'][_0xb0d3('0x14')]);return _0x2a57b6(_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x14')]);}else{logger[_0xb0d3('0xc')](_0xb0d3('0xd'),_0x537897,'request\x20sent');_0x2a57b6(_0xca3e43[_0xb0d3('0x15')][_0xb0d3('0x14')]);}})[_0xb0d3('0x16')](function(_0x598e1e){logger[_0xb0d3('0x12')](_0xb0d3('0xd'),_0x537897,_0x598e1e);_0x282a0a(_0x598e1e);});});}
\ No newline at end of file
index a1dbf17..b4ca782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3dc40b,_0x3ee3dc){var _0x227825=function(_0x10b5e3){while(--_0x10b5e3){_0x3dc40b['push'](_0x3dc40b['shift']());}};_0x227825(++_0x3ee3dc);}(_0xe706,0xa3));var _0x6e70=function(_0x292423,_0x1759b7){_0x292423=_0x292423-0x0;var _0x2801cb=_0xe706[_0x292423];return _0x2801cb;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x47927e,_0x3cb5e0){var _0x1d0fb6=function(_0x2f5c15){while(--_0x2f5c15){_0x47927e['push'](_0x47927e['shift']());}};_0x1d0fb6(++_0x3cb5e0);}(_0xe706,0xa3));var _0x6e70=function(_0x1bb0b8,_0x24add2){_0x1bb0b8=_0x1bb0b8-0x0;var _0x22fc67=_0xe706[_0x1bb0b8];return _0x22fc67;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index c53e32d..ea28bc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba12=['exports'];(function(_0x2ddea4,_0x3b4d83){var _0xb3eb2=function(_0x11ab0a){while(--_0x11ab0a){_0x2ddea4['push'](_0x2ddea4['shift']());}};_0xb3eb2(++_0x3b4d83);}(_0xba12,0xa4));var _0x2ba1=function(_0x1b736b,_0x417fca){_0x1b736b=_0x1b736b-0x0;var _0x435d0d=_0xba12[_0x1b736b];return _0x435d0d;};'use strict';var Sequelize=require('sequelize');module[_0x2ba1('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8819=['INTEGER'];(function(_0x1b0cc8,_0x6e3392){var _0x441d1a=function(_0x248cef){while(--_0x248cef){_0x1b0cc8['push'](_0x1b0cc8['shift']());}};_0x441d1a(++_0x6e3392);}(_0x8819,0x94));var _0x9881=function(_0x312600,_0x5d2d4b){_0x312600=_0x312600-0x0;var _0x34ee2e=_0x8819[_0x312600];return _0x34ee2e;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x9881('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index 47a52e8..46b1e73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x823b=['lodash','util','../../config/logger','api','moment','path','rimraf','./userVoiceQueue.attributes','exports','define','user_has_voice_queues'];(function(_0x21f9eb,_0x3c6621){var _0x4bfd24=function(_0x5d67b8){while(--_0x5d67b8){_0x21f9eb['push'](_0x21f9eb['shift']());}};_0x4bfd24(++_0x3c6621);}(_0x823b,0x1d9));var _0xb823=function(_0x150a7e,_0x3bd0f1){_0x150a7e=_0x150a7e-0x0;var _0x12fd12=_0x823b[_0x150a7e];return _0x12fd12;};'use strict';var _=require(_0xb823('0x0'));var util=require(_0xb823('0x1'));var logger=require(_0xb823('0x2'))(_0xb823('0x3'));var moment=require(_0xb823('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb823('0x5'));var rimraf=require(_0xb823('0x6'));var config=require('../../config/environment');var attributes=require(_0xb823('0x7'));module[_0xb823('0x8')]=function(_0x5c6b89,_0x4deb74){return _0x5c6b89[_0xb823('0x9')]('UserVoiceQueue',attributes,{'tableName':_0xb823('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x67c9=['lodash','util','../../config/logger','bluebird','rimraf','../../config/environment','./userVoiceQueue.attributes','define','UserVoiceQueue','user_has_voice_queues'];(function(_0x5cb11e,_0x38f9b0){var _0x167802=function(_0x260297){while(--_0x260297){_0x5cb11e['push'](_0x5cb11e['shift']());}};_0x167802(++_0x38f9b0);}(_0x67c9,0x1e0));var _0x967c=function(_0x51b80a,_0x355fe3){_0x51b80a=_0x51b80a-0x0;var _0x22fdf0=_0x67c9[_0x51b80a];return _0x22fdf0;};'use strict';var _=require(_0x967c('0x0'));var util=require(_0x967c('0x1'));var logger=require(_0x967c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x967c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x967c('0x4'));var config=require(_0x967c('0x5'));var attributes=require(_0x967c('0x6'));module['exports']=function(_0x3195a1,_0x60c39){return _0x3195a1[_0x967c('0x7')](_0x967c('0x8'),attributes,{'tableName':_0x967c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af4060c..af0e64b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd3f=['../../config/logger','jayson/promise','client','http','request','info','UserVoiceQueue,\x20%s,\x20%s','UserVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis'];(function(_0x172ed7,_0x3d08fd){var _0xfa8f61=function(_0xe07a21){while(--_0xe07a21){_0x172ed7['push'](_0x172ed7['shift']());}};_0xfa8f61(++_0x3d08fd);}(_0xcd3f,0x6e));var _0xfcd3=function(_0x292102,_0x427efa){_0x292102=_0x292102-0x0;var _0x54c775=_0xcd3f[_0x292102];return _0x54c775;};'use strict';var _=require(_0xfcd3('0x0'));var util=require('util');var moment=require(_0xfcd3('0x1'));var BPromise=require(_0xfcd3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfcd3('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfcd3('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xfcd3('0x5'));var client=jayson[_0xfcd3('0x6')][_0xfcd3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2f385e,_0xf6b66d,_0x17b8aa){return new BPromise(function(_0x212169,_0x3ea4c5){return client[_0xfcd3('0x8')](_0x2f385e,_0x17b8aa)['then'](function(_0x4ac298){logger[_0xfcd3('0x9')](_0xfcd3('0xa'),_0xf6b66d,'request\x20sent');logger['debug'](_0xfcd3('0xb'),_0xf6b66d,_0xfcd3('0xc'),JSON[_0xfcd3('0xd')](_0x4ac298));if(_0x4ac298[_0xfcd3('0xe')]){if(_0x4ac298[_0xfcd3('0xe')][_0xfcd3('0xf')]===0x1f4){logger[_0xfcd3('0xe')](_0xfcd3('0xa'),_0xf6b66d,_0x4ac298['error'][_0xfcd3('0x10')]);return _0x3ea4c5(_0x4ac298[_0xfcd3('0xe')][_0xfcd3('0x10')]);}logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0xf6b66d,_0x4ac298['error'][_0xfcd3('0x10')]);return _0x212169(_0x4ac298[_0xfcd3('0xe')][_0xfcd3('0x10')]);}else{logger[_0xfcd3('0x9')]('UserVoiceQueue,\x20%s,\x20%s',_0xf6b66d,_0xfcd3('0xc'));_0x212169(_0x4ac298[_0xfcd3('0x11')]['message']);}})[_0xfcd3('0x12')](function(_0x5d5ab0){logger['error'](_0xfcd3('0xa'),_0xf6b66d,_0x5d5ab0);_0x3ea4c5(_0x5d5ab0);});});}
\ No newline at end of file
+var _0x8b69=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util'];(function(_0x322efb,_0x539552){var _0x4245ca=function(_0x456790){while(--_0x456790){_0x322efb['push'](_0x322efb['shift']());}};_0x4245ca(++_0x539552);}(_0x8b69,0xcf));var _0x98b6=function(_0xed4ed0,_0x4b977f){_0xed4ed0=_0xed4ed0-0x0;var _0x55077c=_0x8b69[_0xed4ed0];return _0x55077c;};'use strict';var _=require(_0x98b6('0x0'));var util=require(_0x98b6('0x1'));var moment=require('moment');var BPromise=require(_0x98b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x98b6('0x3'))['db'];var utils=require(_0x98b6('0x4'));var logger=require(_0x98b6('0x5'))(_0x98b6('0x6'));var config=require(_0x98b6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x98b6('0x8')][_0x98b6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x453b3e,_0x3ae354,_0x48c2e3){return new BPromise(function(_0x421e4a,_0x2ebce6){return client['request'](_0x453b3e,_0x48c2e3)['then'](function(_0xc87ad2){logger[_0x98b6('0xa')](_0x98b6('0xb'),_0x3ae354,_0x98b6('0xc'));logger[_0x98b6('0xd')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x3ae354,_0x98b6('0xc'),JSON['stringify'](_0xc87ad2));if(_0xc87ad2['error']){if(_0xc87ad2[_0x98b6('0xe')][_0x98b6('0xf')]===0x1f4){logger[_0x98b6('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x3ae354,_0xc87ad2[_0x98b6('0xe')]['message']);return _0x2ebce6(_0xc87ad2[_0x98b6('0xe')][_0x98b6('0x10')]);}logger[_0x98b6('0xe')](_0x98b6('0xb'),_0x3ae354,_0xc87ad2[_0x98b6('0xe')][_0x98b6('0x10')]);return _0x421e4a(_0xc87ad2[_0x98b6('0xe')][_0x98b6('0x10')]);}else{logger[_0x98b6('0xa')](_0x98b6('0xb'),_0x3ae354,_0x98b6('0xc'));_0x421e4a(_0xc87ad2[_0x98b6('0x11')][_0x98b6('0x10')]);}})[_0x98b6('0x12')](function(_0x150b26){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x3ae354,_0x150b26);_0x2ebce6(_0x150b26);});});}
\ No newline at end of file
index 7f0fb85..6339699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x4d7638,_0x1f6f21){var _0x2bc330=function(_0x2009df){while(--_0x2009df){_0x4d7638['push'](_0x4d7638['shift']());}};_0x2bc330(++_0x1f6f21);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x44b3bd,_0x44c97d){_0x44b3bd=_0x44b3bd-0x0;var _0x1efc4a=_0xcb91[_0x44b3bd];return _0x1efc4a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x5ec25b,_0x1ff58e){var _0x4fe26f=function(_0x3997cf){while(--_0x3997cf){_0x5ec25b['push'](_0x5ec25b['shift']());}};_0x4fe26f(++_0x1ff58e);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 184488d..f50681d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ba0=['sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x26da4f,_0x3fb61b){var _0x36c865=function(_0x505b82){while(--_0x505b82){_0x26da4f['push'](_0x26da4f['shift']());}};_0x36c865(++_0x3fb61b);}(_0x7ba0,0x1bc));var _0x07ba=function(_0x34c268,_0x5ae7a1){_0x34c268=_0x34c268-0x0;var _0x480f25=_0x7ba0[_0x34c268];return _0x480f25;};'use strict';var Sequelize=require(_0x07ba('0x0'));module[_0x07ba('0x1')]={'uniqueid':{'type':Sequelize[_0x07ba('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x07ba('0x3')},'membername':{'type':Sequelize[_0x07ba('0x4')],'allowNull':![],'comment':_0x07ba('0x3')},'UserId':{'type':Sequelize[_0x07ba('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x07ba('0x4')],'allowNull':![],'unique':_0x07ba('0x5'),'comment':_0x07ba('0x3')},'VoiceQueueId':{'type':Sequelize[_0x07ba('0x2')],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x07ba('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x07ba('0x2')](0xb),'defaultValue':0x0,'comment':_0x07ba('0x3')}};
\ No newline at end of file
+var _0xd086=['Required\x20by\x20Asterisk','STRING','sequelize','INTEGER'];(function(_0x11ba06,_0x41d28d){var _0x3053d8=function(_0x2362c9){while(--_0x2362c9){_0x11ba06['push'](_0x11ba06['shift']());}};_0x3053d8(++_0x41d28d);}(_0xd086,0x1da));var _0x6d08=function(_0x556b04,_0x5350bc){_0x556b04=_0x556b04-0x0;var _0x1a4255=_0xd086[_0x556b04];return _0x1a4255;};'use strict';var Sequelize=require(_0x6d08('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x6d08('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x6d08('0x2')},'membername':{'type':Sequelize[_0x6d08('0x3')],'allowNull':![],'comment':_0x6d08('0x2')},'UserId':{'type':Sequelize[_0x6d08('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x6d08('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0x6d08('0x2')},'penalty':{'type':Sequelize[_0x6d08('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x6d08('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index 07946b1..c2142fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1162=['exports','../../mysqldb','UserVoiceQueueRt','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x51aa5f,_0x2a745e){var _0x23fd65=function(_0x27b4f5){while(--_0x27b4f5){_0x51aa5f['push'](_0x51aa5f['shift']());}};_0x23fd65(++_0x2a745e);}(_0x1162,0x9a));var _0x2116=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1162[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x2116('0x0'))['db'][_0x2116('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x2116('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2116('0x3'),'afterDestroy':_0x2116('0x4')};function emitEvent(_0x4b6113){return function(_0x3ecaee,_0x4c1201,_0x4b8884){UserVoiceQueueRtEvents[_0x2116('0x5')](_0x4b6113+':'+_0x3ecaee['id'],_0x3ecaee);UserVoiceQueueRtEvents[_0x2116('0x5')](_0x4b6113,_0x3ecaee);_0x4b8884(null);};}for(var e in events){if(events[_0x2116('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0x2116('0x7')](e,emitEvent(event));}}module[_0x2116('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xdeee=['UserVoiceQueueRt','save','update','remove','emit','exports','events','../../mysqldb'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0xdeee,0x8e));var _0xedee=function(_0x5b23ce,_0x158f8f){_0x5b23ce=_0x5b23ce-0x0;var _0x463607=_0xdeee[_0x5b23ce];return _0x463607;};'use strict';var EventEmitter=require(_0xedee('0x0'));var UserVoiceQueueRt=require(_0xedee('0x1'))['db'][_0xedee('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xedee('0x3'),'afterUpdate':_0xedee('0x4'),'afterDestroy':_0xedee('0x5')};function emitEvent(_0x31f8ad){return function(_0x1b1c43,_0x5849b8,_0x3a80a9){UserVoiceQueueRtEvents[_0xedee('0x6')](_0x31f8ad+':'+_0x1b1c43['id'],_0x1b1c43);UserVoiceQueueRtEvents['emit'](_0x31f8ad,_0x1b1c43);_0x3a80a9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xedee('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 60d4914..f837443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b94=['util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt'];(function(_0x6aa5b,_0x41480d){var _0x4e7479=function(_0x1d629a){while(--_0x1d629a){_0x6aa5b['push'](_0x6aa5b['shift']());}};_0x4e7479(++_0x41480d);}(_0x9b94,0xc6));var _0x49b9=function(_0x11f997,_0xd00577){_0x11f997=_0x11f997-0x0;var _0x1c82b1=_0x9b94[_0x11f997];return _0x1c82b1;};'use strict';var _=require('lodash');var util=require(_0x49b9('0x0'));var logger=require(_0x49b9('0x1'))('api');var moment=require('moment');var BPromise=require(_0x49b9('0x2'));var rp=require(_0x49b9('0x3'));var fs=require('fs');var path=require(_0x49b9('0x4'));var rimraf=require(_0x49b9('0x5'));var config=require(_0x49b9('0x6'));var attributes=require(_0x49b9('0x7'));module[_0x49b9('0x8')]=function(_0x58c95a,_0x3f2777){return _0x58c95a[_0x49b9('0x9')](_0x49b9('0xa'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf8cd=['./userVoiceQueueRt.attributes','exports','define','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x8323cd,_0xa7f4a8){var _0x58aea3=function(_0x2b38ce){while(--_0x2b38ce){_0x8323cd['push'](_0x8323cd['shift']());}};_0x58aea3(++_0xa7f4a8);}(_0xf8cd,0x13c));var _0xdf8c=function(_0x32a9f1,_0x388a74){_0x32a9f1=_0x32a9f1-0x0;var _0x4bca30=_0xf8cd[_0x32a9f1];return _0x4bca30;};'use strict';var _=require(_0xdf8c('0x0'));var util=require(_0xdf8c('0x1'));var logger=require(_0xdf8c('0x2'))(_0xdf8c('0x3'));var moment=require(_0xdf8c('0x4'));var BPromise=require('bluebird');var rp=require(_0xdf8c('0x5'));var fs=require('fs');var path=require(_0xdf8c('0x6'));var rimraf=require(_0xdf8c('0x7'));var config=require(_0xdf8c('0x8'));var attributes=require(_0xdf8c('0x9'));module[_0xdf8c('0xa')]=function(_0x5a67e5,_0x3d82e3){return _0x5a67e5[_0xdf8c('0xb')]('UserVoiceQueueRt',attributes,{'tableName':_0xdf8c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f9c0a23..11c80ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x844a=['register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','findAll','options','raw','where','COUNT','sequelize','outboundQueuePauses','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket'];(function(_0x580b15,_0x28afa4){var _0x1adb1b=function(_0x47a01f){while(--_0x47a01f){_0x580b15['push'](_0x580b15['shift']());}};_0x1adb1b(++_0x28afa4);}(_0x844a,0x1ac));var _0xa844=function(_0x6fd5c9,_0x157369){_0x6fd5c9=_0x6fd5c9-0x0;var _0x5db83f=_0x844a[_0x6fd5c9];return _0x5db83f;};'use strict';var _=require('lodash');var util=require(_0xa844('0x0'));var moment=require('moment');var BPromise=require(_0xa844('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa844('0x2'));var db=require(_0xa844('0x3'))['db'];var utils=require(_0xa844('0x4'));var logger=require(_0xa844('0x5'))(_0xa844('0x6'));var config=require(_0xa844('0x7'));var jayson=require(_0xa844('0x8'));var client=jayson[_0xa844('0x9')][_0xa844('0xa')]({'port':0x232a});config[_0xa844('0xb')]=_[_0xa844('0xc')](config['redis'],{'host':_0xa844('0xd'),'port':0x18eb});var socket=require(_0xa844('0xe'))(new Redis(config[_0xa844('0xb')]));require(_0xa844('0xf'))[_0xa844('0x10')](socket);function respondWithRpcPromise(_0x301e4a,_0x1f1910,_0x4648b2){return new BPromise(function(_0xc8e068,_0x59527b){return client[_0xa844('0x11')](_0x301e4a,_0x4648b2)[_0xa844('0x12')](function(_0x6f0ec8){logger[_0xa844('0x13')](_0xa844('0x14'),_0x1f1910,'request\x20sent');logger[_0xa844('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x1f1910,_0xa844('0x16'),JSON[_0xa844('0x17')](_0x6f0ec8));if(_0x6f0ec8[_0xa844('0x18')]){if(_0x6f0ec8[_0xa844('0x18')][_0xa844('0x19')]===0x1f4){logger[_0xa844('0x18')](_0xa844('0x14'),_0x1f1910,_0x6f0ec8['error'][_0xa844('0x1a')]);return _0x59527b(_0x6f0ec8['error']['message']);}logger[_0xa844('0x18')](_0xa844('0x14'),_0x1f1910,_0x6f0ec8[_0xa844('0x18')][_0xa844('0x1a')]);return _0xc8e068(_0x6f0ec8[_0xa844('0x18')][_0xa844('0x1a')]);}else{logger['info'](_0xa844('0x14'),_0x1f1910,_0xa844('0x16'));_0xc8e068(_0x6f0ec8[_0xa844('0x1b')][_0xa844('0x1a')]);}})[_0xa844('0x1c')](function(_0x22620d){logger[_0xa844('0x18')](_0xa844('0x14'),_0x1f1910,_0x22620d);_0x59527b(_0x22620d);});});}exports[_0xa844('0x1d')]=function(_0x46070f){var _0x4b2099=this;return new Promise(function(_0x2959c0,_0x52a068){return db['UserVoiceQueueRt'][_0xa844('0x1e')]({'raw':_0x46070f['options']?_0x46070f[_0xa844('0x1f')][_0xa844('0x20')]===undefined?!![]:![]:!![],'where':_0x46070f[_0xa844('0x1f')]?_0x46070f[_0xa844('0x1f')][_0xa844('0x21')]||null:null,'attributes':[[db['sequelize']['fn'](_0xa844('0x22'),db[_0xa844('0x23')]['fn']('IF',db[_0xa844('0x23')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0xa844('0x24')]]})['then'](function(_0x353ac9){logger['info'](_0xa844('0x1d'),_0x46070f);logger[_0xa844('0x15')](_0xa844('0x1d'),_0x46070f,JSON[_0xa844('0x17')](_0x353ac9));_0x2959c0(_0x353ac9);})[_0xa844('0x1c')](function(_0x6649d8){logger[_0xa844('0x18')](_0xa844('0x1d'),_0x6649d8[_0xa844('0x1a')],_0x46070f);_0x52a068(_0x4b2099[_0xa844('0x18')](0x1f4,_0x6649d8[_0xa844('0x1a')]));});});};
\ No newline at end of file
+var _0x0a76=['debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','info','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','raw','sequelize','outboundQueuePauses','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','./userVoiceQueueRt.socket','register','request','then','request\x20sent'];(function(_0x481cf4,_0x331b46){var _0x3b33f0=function(_0x4e873c){while(--_0x4e873c){_0x481cf4['push'](_0x481cf4['shift']());}};_0x3b33f0(++_0x331b46);}(_0x0a76,0xb5));var _0x60a7=function(_0x541f20,_0x2244e0){_0x541f20=_0x541f20-0x0;var _0x22fc33=_0x0a76[_0x541f20];return _0x22fc33;};'use strict';var _=require(_0x60a7('0x0'));var util=require(_0x60a7('0x1'));var moment=require('moment');var BPromise=require(_0x60a7('0x2'));var rs=require(_0x60a7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x60a7('0x4'));var logger=require(_0x60a7('0x5'))('rpc');var config=require(_0x60a7('0x6'));var jayson=require(_0x60a7('0x7'));var client=jayson[_0x60a7('0x8')]['http']({'port':0x232a});config[_0x60a7('0x9')]=_[_0x60a7('0xa')](config[_0x60a7('0x9')],{'host':_0x60a7('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x60a7('0xc'))[_0x60a7('0xd')](socket);function respondWithRpcPromise(_0x25b2ce,_0x18c29c,_0x19877b){return new BPromise(function(_0x2fc2da,_0x4a9710){return client[_0x60a7('0xe')](_0x25b2ce,_0x19877b)[_0x60a7('0xf')](function(_0x5a5628){logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x18c29c,_0x60a7('0x10'));logger[_0x60a7('0x11')](_0x60a7('0x12'),_0x18c29c,_0x60a7('0x10'),JSON[_0x60a7('0x13')](_0x5a5628));if(_0x5a5628[_0x60a7('0x14')]){if(_0x5a5628[_0x60a7('0x14')][_0x60a7('0x15')]===0x1f4){logger['error'](_0x60a7('0x16'),_0x18c29c,_0x5a5628['error'][_0x60a7('0x17')]);return _0x4a9710(_0x5a5628['error'][_0x60a7('0x17')]);}logger[_0x60a7('0x14')](_0x60a7('0x16'),_0x18c29c,_0x5a5628[_0x60a7('0x14')][_0x60a7('0x17')]);return _0x2fc2da(_0x5a5628[_0x60a7('0x14')][_0x60a7('0x17')]);}else{logger[_0x60a7('0x18')](_0x60a7('0x16'),_0x18c29c,_0x60a7('0x10'));_0x2fc2da(_0x5a5628[_0x60a7('0x19')][_0x60a7('0x17')]);}})[_0x60a7('0x1a')](function(_0x2799cb){logger['error'](_0x60a7('0x16'),_0x18c29c,_0x2799cb);_0x4a9710(_0x2799cb);});});}exports[_0x60a7('0x1b')]=function(_0x1d7610){var _0x291b60=this;return new Promise(function(_0x490240,_0x45a948){return db[_0x60a7('0x1c')]['findAll']({'raw':_0x1d7610[_0x60a7('0x1d')]?_0x1d7610[_0x60a7('0x1d')][_0x60a7('0x1e')]===undefined?!![]:![]:!![],'where':_0x1d7610[_0x60a7('0x1d')]?_0x1d7610[_0x60a7('0x1d')]['where']||null:null,'attributes':[[db[_0x60a7('0x1f')]['fn']('COUNT',db[_0x60a7('0x1f')]['fn']('IF',db[_0x60a7('0x1f')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0x60a7('0x20')]]})[_0x60a7('0xf')](function(_0x61eeab){logger[_0x60a7('0x18')](_0x60a7('0x1b'),_0x1d7610);logger[_0x60a7('0x11')]('GetVoiceQueueRtPauses',_0x1d7610,JSON[_0x60a7('0x13')](_0x61eeab));_0x490240(_0x61eeab);})[_0x60a7('0x1a')](function(_0x3c8cfa){logger[_0x60a7('0x14')]('GetVoiceQueueRtPauses',_0x3c8cfa['message'],_0x1d7610);_0x45a948(_0x291b60[_0x60a7('0x14')](0x1f4,_0x3c8cfa[_0x60a7('0x17')]));});});};
\ No newline at end of file
index 885247a..eaaf7a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecb2=['userVoiceQueueRt:','./userVoiceQueueRt.events','update','emit','removeListener','register','length'];(function(_0x18b4d3,_0x252c46){var _0x455feb=function(_0x407f83){while(--_0x407f83){_0x18b4d3['push'](_0x18b4d3['shift']());}};_0x455feb(++_0x252c46);}(_0xecb2,0xf6));var _0x2ecb=function(_0x3fdc28,_0x15dd04){_0x3fdc28=_0x3fdc28-0x0;var _0x4ec388=_0xecb2[_0x3fdc28];return _0x4ec388;};'use strict';var UserVoiceQueueRtEvents=require(_0x2ecb('0x0'));var events=['save','remove',_0x2ecb('0x1')];function createListener(_0x548b3c,_0x59d894){return function(_0x1bb230){_0x59d894[_0x2ecb('0x2')](_0x548b3c,_0x1bb230);};}function removeListener(_0x393e7c,_0x2a4fe5){return function(){UserVoiceQueueRtEvents[_0x2ecb('0x3')](_0x393e7c,_0x2a4fe5);};}exports[_0x2ecb('0x4')]=function(_0x4c169f){for(var _0x51b28c=0x0,_0x49de99=events[_0x2ecb('0x5')];_0x51b28c<_0x49de99;_0x51b28c++){var _0x3df4a0=events[_0x51b28c];var _0x15a959=createListener(_0x2ecb('0x6')+_0x3df4a0,_0x4c169f);UserVoiceQueueRtEvents['on'](_0x3df4a0,_0x15a959);}};
\ No newline at end of file
+var _0x576b=['emit','removeListener','register','length','userVoiceQueueRt:','update'];(function(_0x3b6aaf,_0x4aef36){var _0x295fa9=function(_0x4320d3){while(--_0x4320d3){_0x3b6aaf['push'](_0x3b6aaf['shift']());}};_0x295fa9(++_0x4aef36);}(_0x576b,0x1d9));var _0xb576=function(_0x41fa52,_0x391ecf){_0x41fa52=_0x41fa52-0x0;var _0x1fdbf8=_0x576b[_0x41fa52];return _0x1fdbf8;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save','remove',_0xb576('0x0')];function createListener(_0x1cb118,_0x5db0de){return function(_0x2c3737){_0x5db0de[_0xb576('0x1')](_0x1cb118,_0x2c3737);};}function removeListener(_0x4e022a,_0x20cb85){return function(){UserVoiceQueueRtEvents[_0xb576('0x2')](_0x4e022a,_0x20cb85);};}exports[_0xb576('0x3')]=function(_0x3039d9){for(var _0x11427a=0x0,_0x22cbae=events[_0xb576('0x4')];_0x11427a<_0x22cbae;_0x11427a++){var _0x42f2c0=events[_0x11427a];var _0xe6d2fd=createListener(_0xb576('0x5')+_0x42f2c0,_0x3039d9);UserVoiceQueueRtEvents['on'](_0x42f2c0,_0xe6d2fd);}};
\ No newline at end of file
index 7f0100c..03f0cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x251d48,_0x3f883b){var _0x2873a6=function(_0x453fca){while(--_0x453fca){_0x251d48['push'](_0x251d48['shift']());}};_0x2873a6(++_0x3f883b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x3c6310,_0x13601d){var _0x320122=function(_0x596176){while(--_0x596176){_0x3c6310['push'](_0x3c6310['shift']());}};_0x320122(++_0x13601d);}(_0x9c44,0x178));var _0x49c4=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x9c44[_0x5f1391];return _0x50ebe3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 9006424..6ea0edf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1c85=['exports','sequelize'];(function(_0x3be7b5,_0x4ac509){var _0x1801c7=function(_0xe0b401){while(--_0xe0b401){_0x3be7b5['push'](_0x3be7b5['shift']());}};_0x1801c7(++_0x4ac509);}(_0x1c85,0x18b));var _0x51c8=function(_0x201246,_0x1e0cf7){_0x201246=_0x201246-0x0;var _0x59d250=_0x1c85[_0x201246];return _0x59d250;};'use strict';var Sequelize=require(_0x51c8('0x0'));module[_0x51c8('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 580b297..a4e2ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa58=['./userWhatsappQueue.attributes','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','api','request-promise','path','rimraf','../../config/environment'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0xfa58,0x9e));var _0x8fa5=function(_0x843880,_0x1516d1){_0x843880=_0x843880-0x0;var _0x49943f=_0xfa58[_0x843880];return _0x49943f;};'use strict';var _=require(_0x8fa5('0x0'));var util=require(_0x8fa5('0x1'));var logger=require('../../config/logger')(_0x8fa5('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8fa5('0x3'));var fs=require('fs');var path=require(_0x8fa5('0x4'));var rimraf=require(_0x8fa5('0x5'));var config=require(_0x8fa5('0x6'));var attributes=require(_0x8fa5('0x7'));module['exports']=function(_0x35c16e,_0x1a6cb6){return _0x35c16e[_0x8fa5('0x8')](_0x8fa5('0x9'),attributes,{'tableName':_0x8fa5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3462=['exports','user_has_whatsapp_queues','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./userWhatsappQueue.attributes'];(function(_0x3c2407,_0x3c9a47){var _0x5d2eac=function(_0xb33bf8){while(--_0xb33bf8){_0x3c2407['push'](_0x3c2407['shift']());}};_0x5d2eac(++_0x3c9a47);}(_0x3462,0x16a));var _0x2346=function(_0xa5ab46,_0x4ee79e){_0xa5ab46=_0xa5ab46-0x0;var _0x228c32=_0x3462[_0xa5ab46];return _0x228c32;};'use strict';var _=require(_0x2346('0x0'));var util=require(_0x2346('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2346('0x2'));var BPromise=require(_0x2346('0x3'));var rp=require(_0x2346('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2346('0x5'));var config=require(_0x2346('0x6'));var attributes=require(_0x2346('0x7'));module[_0x2346('0x8')]=function(_0x3eba33,_0x76fc3c){return _0x3eba33['define']('UserWhatsappQueue',attributes,{'tableName':_0x2346('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10e579f..39dbf03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f64=['../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ioredis','../../mysqldb'];(function(_0x14dbc4,_0x261bb6){var _0x472c9e=function(_0x473d62){while(--_0x473d62){_0x14dbc4['push'](_0x14dbc4['shift']());}};_0x472c9e(++_0x261bb6);}(_0x8f64,0x12e));var _0x48f6=function(_0x18a8ba,_0x443975){_0x18a8ba=_0x18a8ba-0x0;var _0x9bc929=_0x8f64[_0x18a8ba];return _0x9bc929;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x48f6('0x0'));var db=require(_0x48f6('0x1'))['db'];var utils=require(_0x48f6('0x2'));var logger=require(_0x48f6('0x3'))('rpc');var config=require(_0x48f6('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x48f6('0x5')][_0x48f6('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x42f91d,_0x479b1b,_0x2fb089){return new BPromise(function(_0xe16900,_0x3ae2e9){return client[_0x48f6('0x7')](_0x42f91d,_0x2fb089)[_0x48f6('0x8')](function(_0x4077c5){logger[_0x48f6('0x9')](_0x48f6('0xa'),_0x479b1b,_0x48f6('0xb'));logger['debug'](_0x48f6('0xc'),_0x479b1b,'request\x20sent',JSON[_0x48f6('0xd')](_0x4077c5));if(_0x4077c5[_0x48f6('0xe')]){if(_0x4077c5[_0x48f6('0xe')][_0x48f6('0xf')]===0x1f4){logger[_0x48f6('0xe')](_0x48f6('0xa'),_0x479b1b,_0x4077c5[_0x48f6('0xe')][_0x48f6('0x10')]);return _0x3ae2e9(_0x4077c5['error'][_0x48f6('0x10')]);}logger[_0x48f6('0xe')]('UserWhatsappQueue,\x20%s,\x20%s',_0x479b1b,_0x4077c5[_0x48f6('0xe')][_0x48f6('0x10')]);return _0xe16900(_0x4077c5[_0x48f6('0xe')][_0x48f6('0x10')]);}else{logger[_0x48f6('0x9')]('UserWhatsappQueue,\x20%s,\x20%s',_0x479b1b,_0x48f6('0xb'));_0xe16900(_0x4077c5[_0x48f6('0x11')][_0x48f6('0x10')]);}})[_0x48f6('0x12')](function(_0xb592ab){logger['error'](_0x48f6('0xa'),_0x479b1b,_0xb592ab);_0x3ae2e9(_0xb592ab);});});}
\ No newline at end of file
+var _0xb709=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch'];(function(_0x39d609,_0x2b142a){var _0x41215c=function(_0x181034){while(--_0x181034){_0x39d609['push'](_0x39d609['shift']());}};_0x41215c(++_0x2b142a);}(_0xb709,0x73));var _0x9b70=function(_0x1e0b51,_0x510d35){_0x1e0b51=_0x1e0b51-0x0;var _0x2494cf=_0xb709[_0x1e0b51];return _0x2494cf;};'use strict';var _=require(_0x9b70('0x0'));var util=require(_0x9b70('0x1'));var moment=require('moment');var BPromise=require(_0x9b70('0x2'));var rs=require(_0x9b70('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9b70('0x4'))['db'];var utils=require(_0x9b70('0x5'));var logger=require(_0x9b70('0x6'))(_0x9b70('0x7'));var config=require(_0x9b70('0x8'));var jayson=require(_0x9b70('0x9'));var client=jayson[_0x9b70('0xa')][_0x9b70('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x86cdda,_0x3adbe4,_0x492995){return new BPromise(function(_0x51e785,_0x4983c8){return client['request'](_0x86cdda,_0x492995)[_0x9b70('0xc')](function(_0x460d92){logger[_0x9b70('0xd')](_0x9b70('0xe'),_0x3adbe4,'request\x20sent');logger[_0x9b70('0xf')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x3adbe4,_0x9b70('0x10'),JSON[_0x9b70('0x11')](_0x460d92));if(_0x460d92['error']){if(_0x460d92['error'][_0x9b70('0x12')]===0x1f4){logger[_0x9b70('0x13')](_0x9b70('0xe'),_0x3adbe4,_0x460d92[_0x9b70('0x13')][_0x9b70('0x14')]);return _0x4983c8(_0x460d92['error'][_0x9b70('0x14')]);}logger[_0x9b70('0x13')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3adbe4,_0x460d92[_0x9b70('0x13')]['message']);return _0x51e785(_0x460d92[_0x9b70('0x13')][_0x9b70('0x14')]);}else{logger[_0x9b70('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3adbe4,_0x9b70('0x10'));_0x51e785(_0x460d92[_0x9b70('0x15')]['message']);}})[_0x9b70('0x16')](function(_0x27f75e){logger[_0x9b70('0x13')](_0x9b70('0xe'),_0x3adbe4,_0x27f75e);_0x4983c8(_0x27f75e);});});}
\ No newline at end of file
index d0afce0..4613113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d3=['update','delete','destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','put'];(function(_0x31e95a,_0x1a3619){var _0x292cef=function(_0x6e8530){while(--_0x6e8530){_0x31e95a['push'](_0x31e95a['shift']());}};_0x292cef(++_0x1a3619);}(_0x98d3,0x173));var _0x398d=function(_0x8ad372,_0x398278){_0x8ad372=_0x8ad372-0x0;var _0x3ec287=_0x98d3[_0x8ad372];return _0x3ec287;};'use strict';var multer=require(_0x398d('0x0'));var util=require(_0x398d('0x1'));var path=require('path');var timeout=require(_0x398d('0x2'));var express=require('express');var router=express[_0x398d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x398d('0x4'));var interaction=require(_0x398d('0x5'));var config=require('../../config/environment');var controller=require('./variable.controller');router[_0x398d('0x6')]('/',auth[_0x398d('0x7')](),controller[_0x398d('0x8')]);router['get'](_0x398d('0x9'),auth[_0x398d('0x7')](),controller[_0x398d('0xa')]);router[_0x398d('0xb')]('/',auth[_0x398d('0x7')](),controller['create']);router[_0x398d('0xc')](_0x398d('0x9'),auth[_0x398d('0x7')](),controller[_0x398d('0xd')]);router[_0x398d('0xe')](_0x398d('0x9'),auth[_0x398d('0x7')](),controller[_0x398d('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x383d=['/:id','isAuthenticated','show','create','put','update','delete','destroy','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','index'];(function(_0x55d7c2,_0x4ce6fb){var _0x1755ef=function(_0xddc25c){while(--_0xddc25c){_0x55d7c2['push'](_0x55d7c2['shift']());}};_0x1755ef(++_0x4ce6fb);}(_0x383d,0x86));var _0xd383=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x383d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd383('0x0'));var timeout=require(_0xd383('0x1'));var express=require(_0xd383('0x2'));var router=express['Router']();var fs_extra=require(_0xd383('0x3'));var auth=require(_0xd383('0x4'));var interaction=require(_0xd383('0x5'));var config=require(_0xd383('0x6'));var controller=require(_0xd383('0x7'));router[_0xd383('0x8')]('/',auth['isAuthenticated'](),controller[_0xd383('0x9')]);router[_0xd383('0x8')](_0xd383('0xa'),auth[_0xd383('0xb')](),controller[_0xd383('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd383('0xd')]);router[_0xd383('0xe')]('/:id',auth[_0xd383('0xb')](),controller[_0xd383('0xf')]);router[_0xd383('0x10')](_0xd383('0xa'),auth[_0xd383('0xb')](),controller[_0xd383('0x11')]);module['exports']=router;
\ No newline at end of file
index 29a8f1d..afb6dab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c90=['STRING','sequelize'];(function(_0x15685a,_0x7208fe){var _0x1a6345=function(_0x29bdd9){while(--_0x29bdd9){_0x15685a['push'](_0x15685a['shift']());}};_0x1a6345(++_0x7208fe);}(_0x2c90,0xe5));var _0x02c9=function(_0x21aa61,_0x3c1dc2){_0x21aa61=_0x21aa61-0x0;var _0x573f06=_0x2c90[_0x21aa61];return _0x573f06;};'use strict';var Sequelize=require(_0x02c9('0x0'));module['exports']={'name':{'type':Sequelize[_0x02c9('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x02c9('0x1')]}};
\ No newline at end of file
+var _0x2228=['STRING'];(function(_0x57d11b,_0x2a4299){var _0x63ad6e=function(_0x54b02d){while(--_0x54b02d){_0x57d11b['push'](_0x57d11b['shift']());}};_0x63ad6e(++_0x2a4299);}(_0x2228,0x118));var _0x8222=function(_0x5d7507,_0x2c6011){_0x5d7507=_0x5d7507-0x0;var _0x391919=_0x2228[_0x5d7507];return _0x391919;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8222('0x0')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8222('0x0')]}};
\ No newline at end of file
index f793872..ff098a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75e3=['then','destroy','get','Variables','UserProfileResource','error','name','send','Variable','rawAttributes','fieldName','type','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','map','VIRTUAL','include','rows','catch','show','params','keys','intersection','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','update','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','reject','save'];(function(_0x3125e3,_0x829e6f){var _0x306456=function(_0x54ea30){while(--_0x54ea30){_0x3125e3['push'](_0x3125e3['shift']());}};_0x306456(++_0x829e6f);}(_0x75e3,0x7d));var _0x375e=function(_0x3de92c,_0x411ef9){_0x3de92c=_0x3de92c-0x0;var _0x47a28b=_0x75e3[_0x3de92c];return _0x47a28b;};'use strict';var emlformat=require(_0x375e('0x0'));var rimraf=require(_0x375e('0x1'));var zipdir=require(_0x375e('0x2'));var jsonpatch=require(_0x375e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x375e('0x4'));var util=require(_0x375e('0x5'));var path=require('path');var sox=require(_0x375e('0x6'));var csv=require(_0x375e('0x7'));var ejs=require(_0x375e('0x8'));var fs=require('fs');var fs_extra=require(_0x375e('0x9'));var _=require(_0x375e('0xa'));var squel=require(_0x375e('0xb'));var crypto=require(_0x375e('0xc'));var jsforce=require(_0x375e('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x375e('0xe'));var authService=require(_0x375e('0xf'));var qs=require(_0x375e('0x10'));var as=require(_0x375e('0x11'));var hardwareService=require(_0x375e('0x12'));var logger=require(_0x375e('0x13'))(_0x375e('0x14'));var utils=require(_0x375e('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x375e('0x16'));var db=require(_0x375e('0x17'))['db'];function respondWithStatusCode(_0xed5e44,_0x3f20b0){_0x3f20b0=_0x3f20b0||0xcc;return function(_0x48a0e5){if(_0x48a0e5){return _0xed5e44[_0x375e('0x18')](_0x3f20b0);}return _0xed5e44[_0x375e('0x19')](_0x3f20b0)[_0x375e('0x1a')]();};}function respondWithResult(_0x59db43,_0x31261c){_0x31261c=_0x31261c||0xc8;return function(_0x173c3d){if(_0x173c3d){return _0x59db43[_0x375e('0x19')](_0x31261c)['json'](_0x173c3d);}};}function respondWithFilteredResult(_0x13991f,_0x3ff8e7){return function(_0x237857){if(_0x237857){var _0x560053=typeof _0x3ff8e7[_0x375e('0x1b')]==='undefined'&&typeof _0x3ff8e7['limit']===_0x375e('0x1c');var _0x149ae7=_0x237857[_0x375e('0x1d')];var _0x3ed5ea=_0x560053?0x0:_0x3ff8e7[_0x375e('0x1b')];var _0x54b2c5=_0x560053?_0x237857[_0x375e('0x1d')]:_0x3ff8e7[_0x375e('0x1b')]+_0x3ff8e7['limit'];var _0x43c52b;if(_0x54b2c5>=_0x149ae7){_0x54b2c5=_0x149ae7;_0x43c52b=0xc8;}else{_0x43c52b=0xce;}_0x13991f[_0x375e('0x19')](_0x43c52b);return _0x13991f[_0x375e('0x1e')](_0x375e('0x1f'),_0x3ed5ea+'-'+_0x54b2c5+'/'+_0x149ae7)[_0x375e('0x20')](_0x237857);}return null;};}function patchUpdates(_0x2e765f){return function(_0x534698){try{jsonpatch['apply'](_0x534698,_0x2e765f,!![]);}catch(_0x16c961){return BPromise[_0x375e('0x21')](_0x16c961);}return _0x534698[_0x375e('0x22')]();};}function saveUpdates(_0x327f7b,_0x27e3d8){return function(_0x48de76){if(_0x48de76){return _0x48de76['update'](_0x327f7b)[_0x375e('0x23')](function(_0x5b827e){return _0x5b827e;});}return null;};}function removeEntity(_0x332387,_0xc1fdc9){return function(_0x377a51){if(_0x377a51){return _0x377a51[_0x375e('0x24')]()[_0x375e('0x23')](function(){var _0x16dbb1=_0x377a51[_0x375e('0x25')]({'plain':!![]});var _0x3fc275=_0x375e('0x26');return db[_0x375e('0x27')][_0x375e('0x24')]({'where':{'type':_0x3fc275,'resourceId':_0x16dbb1['id']}})['then'](function(){return _0x377a51;});})['then'](function(){_0x332387['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xc08161,_0x55213f){return function(_0x32b4f0){if(!_0x32b4f0){_0xc08161[_0x375e('0x18')](0x194);}return _0x32b4f0;};}function handleError(_0x3ceff4,_0x403bee){_0x403bee=_0x403bee||0x1f4;return function(_0x8b7629){logger[_0x375e('0x28')](_0x8b7629['stack']);if(_0x8b7629[_0x375e('0x29')]){delete _0x8b7629['name'];}_0x3ceff4[_0x375e('0x19')](_0x403bee)[_0x375e('0x2a')](_0x8b7629);};}exports['index']=function(_0x5a0249,_0x586aa9){var _0x13c6a3={},_0x5807cf={},_0x121f55={'count':0x0,'rows':[]};var _0x4e8d63=_['map'](db[_0x375e('0x2b')][_0x375e('0x2c')],function(_0x289440){return{'name':_0x289440[_0x375e('0x2d')],'type':_0x289440[_0x375e('0x2e')]['key']};});_0x5807cf[_0x375e('0x2f')]=_['map'](_0x4e8d63,_0x375e('0x29'));_0x5807cf[_0x375e('0x30')]=_['keys'](_0x5a0249[_0x375e('0x30')]);_0x5807cf[_0x375e('0x31')]=_['intersection'](_0x5807cf[_0x375e('0x2f')],_0x5807cf['query']);_0x13c6a3[_0x375e('0x32')]=_['intersection'](_0x5807cf[_0x375e('0x2f')],qs['fields'](_0x5a0249[_0x375e('0x30')][_0x375e('0x33')]));_0x13c6a3[_0x375e('0x32')]=_0x13c6a3['attributes'][_0x375e('0x34')]?_0x13c6a3[_0x375e('0x32')]:_0x5807cf[_0x375e('0x2f')];if(!_0x5a0249[_0x375e('0x30')][_0x375e('0x35')](_0x375e('0x36'))){_0x13c6a3[_0x375e('0x37')]=qs[_0x375e('0x37')](_0x5a0249[_0x375e('0x30')][_0x375e('0x37')]);_0x13c6a3[_0x375e('0x1b')]=qs['offset'](_0x5a0249[_0x375e('0x30')][_0x375e('0x1b')]);}_0x13c6a3[_0x375e('0x38')]=qs[_0x375e('0x39')](_0x5a0249['query']['sort']);_0x13c6a3[_0x375e('0x3a')]=qs[_0x375e('0x31')](_[_0x375e('0x3b')](_0x5a0249['query'],_0x5807cf[_0x375e('0x31')]),_0x4e8d63);if(_0x5a0249[_0x375e('0x30')][_0x375e('0x3c')]){_0x13c6a3[_0x375e('0x3a')]=_[_0x375e('0x3d')](_0x13c6a3[_0x375e('0x3a')],{'$or':_[_0x375e('0x3e')](_0x4e8d63,function(_0xa15c41){if(_0xa15c41[_0x375e('0x2e')]!==_0x375e('0x3f')){var _0x175366={};_0x175366[_0xa15c41[_0x375e('0x29')]]={'$like':'%'+_0x5a0249[_0x375e('0x30')][_0x375e('0x3c')]+'%'};return _0x175366;}})});}_0x13c6a3=_[_0x375e('0x3d')]({},_0x13c6a3,_0x5a0249['options']);var _0xb97679={'where':_0x13c6a3[_0x375e('0x3a')]};return db[_0x375e('0x2b')][_0x375e('0x1d')](_0xb97679)['then'](function(_0x47945c){_0x121f55['count']=_0x47945c;if(_0x5a0249[_0x375e('0x30')]['includeAll']){_0x13c6a3[_0x375e('0x40')]=[{'all':!![]}];}return db['Variable']['findAll'](_0x13c6a3);})[_0x375e('0x23')](function(_0x287235){_0x121f55[_0x375e('0x41')]=_0x287235;return _0x121f55;})['then'](respondWithFilteredResult(_0x586aa9,_0x13c6a3))[_0x375e('0x42')](handleError(_0x586aa9,null));};exports[_0x375e('0x43')]=function(_0x29c5b4,_0x3c3a62){var _0x3796c5={'raw':!![],'where':{'id':_0x29c5b4[_0x375e('0x44')]['id']}},_0x318be0={};_0x318be0[_0x375e('0x2f')]=_[_0x375e('0x45')](db['Variable'][_0x375e('0x2c')]);_0x318be0['query']=_[_0x375e('0x45')](_0x29c5b4[_0x375e('0x30')]);_0x318be0['filters']=_[_0x375e('0x46')](_0x318be0[_0x375e('0x2f')],_0x318be0['query']);_0x3796c5[_0x375e('0x32')]=_[_0x375e('0x46')](_0x318be0[_0x375e('0x2f')],qs['fields'](_0x29c5b4[_0x375e('0x30')][_0x375e('0x33')]));_0x3796c5[_0x375e('0x32')]=_0x3796c5[_0x375e('0x32')][_0x375e('0x34')]?_0x3796c5['attributes']:_0x318be0[_0x375e('0x2f')];if(_0x29c5b4[_0x375e('0x30')][_0x375e('0x47')]){_0x3796c5[_0x375e('0x40')]=[{'all':!![]}];}_0x3796c5=_[_0x375e('0x3d')]({},_0x3796c5,_0x29c5b4['options']);return db[_0x375e('0x2b')][_0x375e('0x48')](_0x3796c5)[_0x375e('0x23')](handleEntityNotFound(_0x3c3a62,null))[_0x375e('0x23')](respondWithResult(_0x3c3a62,null))[_0x375e('0x42')](handleError(_0x3c3a62,null));};exports[_0x375e('0x49')]=function(_0x3f1f30,_0x3fd8ed){return db['Variable'][_0x375e('0x49')](_0x3f1f30[_0x375e('0x4a')],{})[_0x375e('0x23')](function(_0x491ff7){var _0x494051=_0x3f1f30[_0x375e('0x4b')][_0x375e('0x25')]({'plain':!![]});if(!_0x494051)throw new Error(_0x375e('0x4c'));if(_0x494051[_0x375e('0x4d')]==='user'){var _0x50247f=_0x491ff7[_0x375e('0x25')]({'plain':!![]});var _0x455585=_0x375e('0x26');return db['UserProfileSection'][_0x375e('0x48')]({'where':{'name':_0x455585,'userProfileId':_0x494051['userProfileId']},'raw':!![]})[_0x375e('0x23')](function(_0x1dc23a){if(_0x1dc23a&&_0x1dc23a[_0x375e('0x4e')]===0x0){return db[_0x375e('0x27')][_0x375e('0x49')]({'name':_0x50247f[_0x375e('0x29')],'resourceId':_0x50247f['id'],'type':_0x1dc23a['name'],'sectionId':_0x1dc23a['id']},{})[_0x375e('0x23')](function(){return _0x491ff7;});}else{return _0x491ff7;}})[_0x375e('0x42')](function(_0x57080b){logger[_0x375e('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x57080b);throw _0x57080b;});}return _0x491ff7;})[_0x375e('0x23')](respondWithResult(_0x3fd8ed,0xc9))['catch'](handleError(_0x3fd8ed,null));};exports[_0x375e('0x4f')]=function(_0x4526bf,_0x353bd3){if(_0x4526bf[_0x375e('0x4a')]['id']){delete _0x4526bf[_0x375e('0x4a')]['id'];}return db['Variable'][_0x375e('0x48')]({'where':{'id':_0x4526bf[_0x375e('0x44')]['id']}})[_0x375e('0x23')](handleEntityNotFound(_0x353bd3,null))[_0x375e('0x23')](saveUpdates(_0x4526bf[_0x375e('0x4a')],null))['then'](respondWithResult(_0x353bd3,null))[_0x375e('0x42')](handleError(_0x353bd3,null));};exports[_0x375e('0x24')]=function(_0x36104e,_0x5204b8){return db['Variable']['find']({'where':{'id':_0x36104e['params']['id']}})['then'](handleEntityNotFound(_0x5204b8,null))[_0x375e('0x23')](removeEntity(_0x5204b8,null))[_0x375e('0x42')](handleError(_0x5204b8,null));};
\ No newline at end of file
+var _0x3c51=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','then','get','UserProfileResource','sendStatus','error','stack','name','send','map','Variable','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','options','include','findAll','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','Variables','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x52c8d3,_0x15009a){var _0x4b7f9d=function(_0x12eefe){while(--_0x12eefe){_0x52c8d3['push'](_0x52c8d3['shift']());}};_0x4b7f9d(++_0x15009a);}(_0x3c51,0x13a));var _0x13c5=function(_0x57427b,_0x4f7a85){_0x57427b=_0x57427b-0x0;var _0x40b7ad=_0x3c51[_0x57427b];return _0x40b7ad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x13c5('0x0'));var zipdir=require(_0x13c5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x13c5('0x2'));var moment=require(_0x13c5('0x3'));var BPromise=require(_0x13c5('0x4'));var Mustache=require(_0x13c5('0x5'));var util=require(_0x13c5('0x6'));var path=require(_0x13c5('0x7'));var sox=require(_0x13c5('0x8'));var csv=require(_0x13c5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x13c5('0xa'));var _=require(_0x13c5('0xb'));var squel=require('squel');var crypto=require(_0x13c5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x13c5('0xd'));var toCsv=require('to-csv');var querystring=require(_0x13c5('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x13c5('0xf'));var qs=require(_0x13c5('0x10'));var as=require(_0x13c5('0x11'));var hardwareService=require(_0x13c5('0x12'));var logger=require(_0x13c5('0x13'))(_0x13c5('0x14'));var utils=require(_0x13c5('0x15'));var config=require(_0x13c5('0x16'));var licenseUtil=require(_0x13c5('0x17'));var db=require(_0x13c5('0x18'))['db'];function respondWithStatusCode(_0x4e25bc,_0x3218c4){_0x3218c4=_0x3218c4||0xcc;return function(_0x269903){if(_0x269903){return _0x4e25bc['sendStatus'](_0x3218c4);}return _0x4e25bc[_0x13c5('0x19')](_0x3218c4)[_0x13c5('0x1a')]();};}function respondWithResult(_0x34dff9,_0x74ace6){_0x74ace6=_0x74ace6||0xc8;return function(_0x2bb91f){if(_0x2bb91f){return _0x34dff9['status'](_0x74ace6)[_0x13c5('0x1b')](_0x2bb91f);}};}function respondWithFilteredResult(_0x5a7572,_0x357471){return function(_0x11c744){if(_0x11c744){var _0x8b0df7=typeof _0x357471[_0x13c5('0x1c')]===_0x13c5('0x1d')&&typeof _0x357471[_0x13c5('0x1e')]===_0x13c5('0x1d');var _0x33a8c6=_0x11c744['count'];var _0x1e69f2=_0x8b0df7?0x0:_0x357471[_0x13c5('0x1c')];var _0x592fc4=_0x8b0df7?_0x11c744[_0x13c5('0x1f')]:_0x357471[_0x13c5('0x1c')]+_0x357471['limit'];var _0x1348cc;if(_0x592fc4>=_0x33a8c6){_0x592fc4=_0x33a8c6;_0x1348cc=0xc8;}else{_0x1348cc=0xce;}_0x5a7572[_0x13c5('0x19')](_0x1348cc);return _0x5a7572[_0x13c5('0x20')]('Content-Range',_0x1e69f2+'-'+_0x592fc4+'/'+_0x33a8c6)['json'](_0x11c744);}return null;};}function patchUpdates(_0x689306){return function(_0x37c3b5){try{jsonpatch[_0x13c5('0x21')](_0x37c3b5,_0x689306,!![]);}catch(_0x10fae1){return BPromise['reject'](_0x10fae1);}return _0x37c3b5[_0x13c5('0x22')]();};}function saveUpdates(_0x4e65ad,_0x3f7299){return function(_0x3ded0b){if(_0x3ded0b){return _0x3ded0b[_0x13c5('0x23')](_0x4e65ad)['then'](function(_0x23951b){return _0x23951b;});}return null;};}function removeEntity(_0x30a1e9,_0x3ba37b){return function(_0x25f097){if(_0x25f097){return _0x25f097[_0x13c5('0x24')]()[_0x13c5('0x25')](function(){var _0xd8ab9e=_0x25f097[_0x13c5('0x26')]({'plain':!![]});var _0x4f560c='Variables';return db[_0x13c5('0x27')][_0x13c5('0x24')]({'where':{'type':_0x4f560c,'resourceId':_0xd8ab9e['id']}})['then'](function(){return _0x25f097;});})[_0x13c5('0x25')](function(){_0x30a1e9[_0x13c5('0x19')](0xcc)[_0x13c5('0x1a')]();});}};}function handleEntityNotFound(_0x547c9b,_0x4469fb){return function(_0x3d2ab9){if(!_0x3d2ab9){_0x547c9b[_0x13c5('0x28')](0x194);}return _0x3d2ab9;};}function handleError(_0x32f4fd,_0x49eae4){_0x49eae4=_0x49eae4||0x1f4;return function(_0x258d34){logger[_0x13c5('0x29')](_0x258d34[_0x13c5('0x2a')]);if(_0x258d34[_0x13c5('0x2b')]){delete _0x258d34[_0x13c5('0x2b')];}_0x32f4fd[_0x13c5('0x19')](_0x49eae4)[_0x13c5('0x2c')](_0x258d34);};}exports['index']=function(_0x2fd2f9,_0x499a45){var _0x24b649={},_0x4421e6={},_0x5aa0ba={'count':0x0,'rows':[]};var _0x217c4e=_[_0x13c5('0x2d')](db[_0x13c5('0x2e')][_0x13c5('0x2f')],function(_0x57d8f9){return{'name':_0x57d8f9[_0x13c5('0x30')],'type':_0x57d8f9['type'][_0x13c5('0x31')]};});_0x4421e6[_0x13c5('0x32')]=_[_0x13c5('0x2d')](_0x217c4e,_0x13c5('0x2b'));_0x4421e6[_0x13c5('0x33')]=_[_0x13c5('0x34')](_0x2fd2f9[_0x13c5('0x33')]);_0x4421e6['filters']=_[_0x13c5('0x35')](_0x4421e6[_0x13c5('0x32')],_0x4421e6[_0x13c5('0x33')]);_0x24b649['attributes']=_[_0x13c5('0x35')](_0x4421e6[_0x13c5('0x32')],qs[_0x13c5('0x36')](_0x2fd2f9[_0x13c5('0x33')]['fields']));_0x24b649['attributes']=_0x24b649[_0x13c5('0x37')][_0x13c5('0x38')]?_0x24b649[_0x13c5('0x37')]:_0x4421e6['model'];if(!_0x2fd2f9[_0x13c5('0x33')][_0x13c5('0x39')](_0x13c5('0x3a'))){_0x24b649[_0x13c5('0x1e')]=qs[_0x13c5('0x1e')](_0x2fd2f9[_0x13c5('0x33')]['limit']);_0x24b649[_0x13c5('0x1c')]=qs['offset'](_0x2fd2f9[_0x13c5('0x33')]['offset']);}_0x24b649[_0x13c5('0x3b')]=qs[_0x13c5('0x3c')](_0x2fd2f9[_0x13c5('0x33')][_0x13c5('0x3c')]);_0x24b649[_0x13c5('0x3d')]=qs[_0x13c5('0x3e')](_[_0x13c5('0x3f')](_0x2fd2f9['query'],_0x4421e6['filters']),_0x217c4e);if(_0x2fd2f9['query'][_0x13c5('0x40')]){_0x24b649[_0x13c5('0x3d')]=_[_0x13c5('0x41')](_0x24b649['where'],{'$or':_['map'](_0x217c4e,function(_0x490173){if(_0x490173[_0x13c5('0x42')]!=='VIRTUAL'){var _0x5bda85={};_0x5bda85[_0x490173[_0x13c5('0x2b')]]={'$like':'%'+_0x2fd2f9['query'][_0x13c5('0x40')]+'%'};return _0x5bda85;}})});}_0x24b649=_[_0x13c5('0x41')]({},_0x24b649,_0x2fd2f9[_0x13c5('0x43')]);var _0x4b9f83={'where':_0x24b649[_0x13c5('0x3d')]};return db[_0x13c5('0x2e')][_0x13c5('0x1f')](_0x4b9f83)[_0x13c5('0x25')](function(_0x6f3e4f){_0x5aa0ba[_0x13c5('0x1f')]=_0x6f3e4f;if(_0x2fd2f9[_0x13c5('0x33')]['includeAll']){_0x24b649[_0x13c5('0x44')]=[{'all':!![]}];}return db[_0x13c5('0x2e')][_0x13c5('0x45')](_0x24b649);})[_0x13c5('0x25')](function(_0x47a9e7){_0x5aa0ba[_0x13c5('0x46')]=_0x47a9e7;return _0x5aa0ba;})[_0x13c5('0x25')](respondWithFilteredResult(_0x499a45,_0x24b649))[_0x13c5('0x47')](handleError(_0x499a45,null));};exports[_0x13c5('0x48')]=function(_0x97e733,_0x1949b0){var _0x4cb6b9={'raw':!![],'where':{'id':_0x97e733[_0x13c5('0x49')]['id']}},_0x2db20b={};_0x2db20b[_0x13c5('0x32')]=_['keys'](db[_0x13c5('0x2e')]['rawAttributes']);_0x2db20b['query']=_[_0x13c5('0x34')](_0x97e733[_0x13c5('0x33')]);_0x2db20b[_0x13c5('0x3e')]=_[_0x13c5('0x35')](_0x2db20b[_0x13c5('0x32')],_0x2db20b[_0x13c5('0x33')]);_0x4cb6b9[_0x13c5('0x37')]=_['intersection'](_0x2db20b[_0x13c5('0x32')],qs[_0x13c5('0x36')](_0x97e733['query']['fields']));_0x4cb6b9[_0x13c5('0x37')]=_0x4cb6b9[_0x13c5('0x37')][_0x13c5('0x38')]?_0x4cb6b9['attributes']:_0x2db20b[_0x13c5('0x32')];if(_0x97e733[_0x13c5('0x33')]['includeAll']){_0x4cb6b9[_0x13c5('0x44')]=[{'all':!![]}];}_0x4cb6b9=_[_0x13c5('0x41')]({},_0x4cb6b9,_0x97e733[_0x13c5('0x43')]);return db[_0x13c5('0x2e')][_0x13c5('0x4a')](_0x4cb6b9)['then'](handleEntityNotFound(_0x1949b0,null))[_0x13c5('0x25')](respondWithResult(_0x1949b0,null))['catch'](handleError(_0x1949b0,null));};exports[_0x13c5('0x4b')]=function(_0x475517,_0x133efc){return db[_0x13c5('0x2e')]['create'](_0x475517['body'],{})[_0x13c5('0x25')](function(_0x41e8e9){var _0x399d9b=_0x475517['user'][_0x13c5('0x26')]({'plain':!![]});if(!_0x399d9b)throw new Error(_0x13c5('0x4c'));if(_0x399d9b['role']==='user'){var _0x129fac=_0x41e8e9[_0x13c5('0x26')]({'plain':!![]});var _0x4e7244=_0x13c5('0x4d');return db[_0x13c5('0x4e')]['find']({'where':{'name':_0x4e7244,'userProfileId':_0x399d9b[_0x13c5('0x4f')]},'raw':!![]})[_0x13c5('0x25')](function(_0x2acf85){if(_0x2acf85&&_0x2acf85[_0x13c5('0x50')]===0x0){return db[_0x13c5('0x27')][_0x13c5('0x4b')]({'name':_0x129fac['name'],'resourceId':_0x129fac['id'],'type':_0x2acf85[_0x13c5('0x2b')],'sectionId':_0x2acf85['id']},{})['then'](function(){return _0x41e8e9;});}else{return _0x41e8e9;}})[_0x13c5('0x47')](function(_0x1237cf){logger[_0x13c5('0x29')](_0x13c5('0x51'),_0x1237cf);throw _0x1237cf;});}return _0x41e8e9;})['then'](respondWithResult(_0x133efc,0xc9))[_0x13c5('0x47')](handleError(_0x133efc,null));};exports['update']=function(_0x31a451,_0x15112b){if(_0x31a451[_0x13c5('0x52')]['id']){delete _0x31a451[_0x13c5('0x52')]['id'];}return db['Variable'][_0x13c5('0x4a')]({'where':{'id':_0x31a451['params']['id']}})[_0x13c5('0x25')](handleEntityNotFound(_0x15112b,null))[_0x13c5('0x25')](saveUpdates(_0x31a451[_0x13c5('0x52')],null))['then'](respondWithResult(_0x15112b,null))[_0x13c5('0x47')](handleError(_0x15112b,null));};exports[_0x13c5('0x24')]=function(_0x2ea22a,_0x2d07d4){return db['Variable'][_0x13c5('0x4a')]({'where':{'id':_0x2ea22a[_0x13c5('0x49')]['id']}})[_0x13c5('0x25')](handleEntityNotFound(_0x2d07d4,null))[_0x13c5('0x25')](removeEntity(_0x2d07d4,null))[_0x13c5('0x47')](handleError(_0x2d07d4,null));};
\ No newline at end of file
index 51c5425..6ceaa6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf651=['tools_variables','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x8ce8f3,_0x243827){var _0x5719b0=function(_0x4d881b){while(--_0x4d881b){_0x8ce8f3['push'](_0x8ce8f3['shift']());}};_0x5719b0(++_0x243827);}(_0xf651,0xac));var _0x1f65=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xf651[_0x21549c];return _0x426cbd;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1f65('0x0'))('api');var moment=require(_0x1f65('0x1'));var BPromise=require('bluebird');var rp=require(_0x1f65('0x2'));var fs=require('fs');var path=require(_0x1f65('0x3'));var rimraf=require(_0x1f65('0x4'));var config=require(_0x1f65('0x5'));var attributes=require('./variable.attributes');module[_0x1f65('0x6')]=function(_0x5d74ac,_0x179aa3){return _0x5d74ac[_0x1f65('0x7')]('Variable',attributes,{'tableName':_0x1f65('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe43=['lodash','util','api','moment','bluebird','request-promise','../../config/environment','exports','Variable','tools_variables'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbe43,0x140));var _0x3be4=function(_0x592985,_0x5f1552){_0x592985=_0x592985-0x0;var _0x182b21=_0xbe43[_0x592985];return _0x182b21;};'use strict';var _=require(_0x3be4('0x0'));var util=require(_0x3be4('0x1'));var logger=require('../../config/logger')(_0x3be4('0x2'));var moment=require(_0x3be4('0x3'));var BPromise=require(_0x3be4('0x4'));var rp=require(_0x3be4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3be4('0x6'));var attributes=require('./variable.attributes');module[_0x3be4('0x7')]=function(_0x4f208c,_0x28b7ac){return _0x4f208c['define'](_0x3be4('0x8'),attributes,{'tableName':_0x3be4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1154815..950fcc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['catch','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','http','then','info','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','Variable,\x20%s,\x20%s','message','ShowVariable','Variable','find','options','raw','where','attributes','include','map','model'];(function(_0x3b6d12,_0x59a8b3){var _0x361b27=function(_0x178c33){while(--_0x178c33){_0x3b6d12['push'](_0x3b6d12['shift']());}};_0x361b27(++_0x59a8b3);}(_0x4b84,0x1cc));var _0x44b8=function(_0x16bb0e,_0x343132){_0x16bb0e=_0x16bb0e-0x0;var _0x102b8b=_0x4b84[_0x16bb0e];return _0x102b8b;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44b8('0x3'));var logger=require(_0x44b8('0x4'))(_0x44b8('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x44b8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x54274b,_0x327f59,_0x5947f7){return new BPromise(function(_0x3e87c5,_0x5a2353){return client['request'](_0x54274b,_0x5947f7)[_0x44b8('0x7')](function(_0x42319d){logger[_0x44b8('0x8')]('Variable,\x20%s,\x20%s',_0x327f59,_0x44b8('0x9'));logger[_0x44b8('0xa')](_0x44b8('0xb'),_0x327f59,_0x44b8('0x9'),JSON[_0x44b8('0xc')](_0x42319d));if(_0x42319d[_0x44b8('0xd')]){if(_0x42319d[_0x44b8('0xd')]['code']===0x1f4){logger[_0x44b8('0xd')](_0x44b8('0xe'),_0x327f59,_0x42319d['error'][_0x44b8('0xf')]);return _0x5a2353(_0x42319d['error'][_0x44b8('0xf')]);}logger[_0x44b8('0xd')]('Variable,\x20%s,\x20%s',_0x327f59,_0x42319d[_0x44b8('0xd')]['message']);return _0x3e87c5(_0x42319d['error'][_0x44b8('0xf')]);}else{logger[_0x44b8('0x8')](_0x44b8('0xe'),_0x327f59,_0x44b8('0x9'));_0x3e87c5(_0x42319d['result']['message']);}})['catch'](function(_0x3fe9fb){logger['error'](_0x44b8('0xe'),_0x327f59,_0x3fe9fb);_0x5a2353(_0x3fe9fb);});});}exports[_0x44b8('0x10')]=function(_0x55e258){var _0x36743e=this;return new Promise(function(_0xe3de8f,_0x5103f5){return db[_0x44b8('0x11')][_0x44b8('0x12')]({'raw':_0x55e258['options']?_0x55e258[_0x44b8('0x13')][_0x44b8('0x14')]===undefined?!![]:![]:!![],'where':_0x55e258[_0x44b8('0x13')]?_0x55e258[_0x44b8('0x13')][_0x44b8('0x15')]||null:null,'attributes':_0x55e258[_0x44b8('0x13')]?_0x55e258[_0x44b8('0x13')][_0x44b8('0x16')]||null:null,'include':_0x55e258[_0x44b8('0x13')]?_0x55e258[_0x44b8('0x13')][_0x44b8('0x17')]?_[_0x44b8('0x18')](_0x55e258['options'][_0x44b8('0x17')],function(_0x3a8aa4){return{'model':db[_0x3a8aa4[_0x44b8('0x19')]],'as':_0x3a8aa4['as'],'attributes':_0x3a8aa4[_0x44b8('0x16')],'include':_0x3a8aa4[_0x44b8('0x17')]?_['map'](_0x3a8aa4[_0x44b8('0x17')],function(_0x54677c){return{'model':db[_0x54677c[_0x44b8('0x19')]],'as':_0x54677c['as'],'attributes':_0x54677c[_0x44b8('0x16')],'include':_0x54677c[_0x44b8('0x17')]?_[_0x44b8('0x18')](_0x54677c[_0x44b8('0x17')],function(_0x59acbc){return{'model':db[_0x59acbc[_0x44b8('0x19')]],'as':_0x59acbc['as'],'attributes':_0x59acbc['attributes']};}):[]};}):[]};}):[]:[]})[_0x44b8('0x7')](function(_0x350482){logger['info'](_0x44b8('0x10'),_0x55e258);logger[_0x44b8('0xa')](_0x44b8('0x10'),_0x55e258,JSON['stringify'](_0x350482));_0xe3de8f(_0x350482);})[_0x44b8('0x1a')](function(_0x242342){logger['error'](_0x44b8('0x10'),_0x242342['message'],_0x55e258);_0x5103f5(_0x36743e[_0x44b8('0xd')](0x1f4,_0x242342['message']));});});};
\ No newline at end of file
+var _0x326f=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','Variable,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','ShowVariable','Variable','raw','options','include','model','attributes','map','then','stringify','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x326f,0xd1));var _0xf326=function(_0x3d2065,_0x139d5b){_0x3d2065=_0x3d2065-0x0;var _0x4a8c51=_0x326f[_0x3d2065];return _0x4a8c51;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('Variable,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['find']({'raw':_0x453100['options']?_0x453100['options'][_0xf326('0x16')]===undefined?!![]:![]:!![],'where':_0x453100[_0xf326('0x17')]?_0x453100['options']['where']||null:null,'attributes':_0x453100[_0xf326('0x17')]?_0x453100['options']['attributes']||null:null,'include':_0x453100[_0xf326('0x17')]?_0x453100[_0xf326('0x17')]['include']?_['map'](_0x453100[_0xf326('0x17')][_0xf326('0x18')],function(_0x5f21a2){return{'model':db[_0x5f21a2[_0xf326('0x19')]],'as':_0x5f21a2['as'],'attributes':_0x5f21a2[_0xf326('0x1a')],'include':_0x5f21a2[_0xf326('0x18')]?_[_0xf326('0x1b')](_0x5f21a2[_0xf326('0x18')],function(_0x2049ec){return{'model':db[_0x2049ec['model']],'as':_0x2049ec['as'],'attributes':_0x2049ec['attributes'],'include':_0x2049ec['include']?_[_0xf326('0x1b')](_0x2049ec[_0xf326('0x18')],function(_0x2cd45a){return{'model':db[_0x2cd45a[_0xf326('0x19')]],'as':_0x2cd45a['as'],'attributes':_0x2cd45a[_0xf326('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf326('0x1c')](function(_0x5217d4){logger[_0xf326('0xb')](_0xf326('0x14'),_0x453100);logger[_0xf326('0xe')]('ShowVariable',_0x453100,JSON[_0xf326('0x1d')](_0x5217d4));_0x31ffb9(_0x5217d4);})['catch'](function(_0x4a9abf){logger[_0xf326('0xf')](_0xf326('0x14'),_0x4a9abf[_0xf326('0x11')],_0x453100);_0xcef2b5(_0x18bee3['error'](0x1f4,_0x4a9abf[_0xf326('0x11')]));});});};
\ No newline at end of file
index 7605014..7421a36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f98=['Router','../../components/auth/service','./version.controller','index','get','/fetch','fetch','/reset','isAuthenticated','canUpdate','reset','/pull','pull','/restart','restart','/migrations','migrations','exports','express'];(function(_0x373202,_0x1a1fd4){var _0x5e90ab=function(_0x20da9b){while(--_0x20da9b){_0x373202['push'](_0x373202['shift']());}};_0x5e90ab(++_0x1a1fd4);}(_0x4f98,0x97));var _0x84f9=function(_0x479160,_0x3ab560){_0x479160=_0x479160-0x0;var _0x47ac6d=_0x4f98[_0x479160];return _0x47ac6d;};'use strict';var express=require(_0x84f9('0x0'));var router=express[_0x84f9('0x1')]();var auth=require(_0x84f9('0x2'));var controller=require(_0x84f9('0x3'));router['get']('/',controller[_0x84f9('0x4')]);router[_0x84f9('0x5')](_0x84f9('0x6'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x84f9('0x7')]);router['get'](_0x84f9('0x8'),auth[_0x84f9('0x9')](),auth[_0x84f9('0xa')](),controller[_0x84f9('0xb')]);router[_0x84f9('0x5')](_0x84f9('0xc'),auth[_0x84f9('0x9')](),auth[_0x84f9('0xa')](),controller[_0x84f9('0xd')]);router[_0x84f9('0x5')](_0x84f9('0xe'),auth[_0x84f9('0x9')](),controller[_0x84f9('0xf')]);router['get'](_0x84f9('0x10'),controller[_0x84f9('0x11')]);module[_0x84f9('0x12')]=router;
\ No newline at end of file
+var _0xd96a=['fetch','/reset','isAuthenticated','reset','/pull','pull','/restart','restart','/migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index','/fetch','canUpdate'];(function(_0x56db78,_0x113e0f){var _0x770689=function(_0x38c2f8){while(--_0x38c2f8){_0x56db78['push'](_0x56db78['shift']());}};_0x770689(++_0x113e0f);}(_0xd96a,0x184));var _0xad96=function(_0x3bcad5,_0x1b65a8){_0x3bcad5=_0x3bcad5-0x0;var _0x38c9ff=_0xd96a[_0x3bcad5];return _0x38c9ff;};'use strict';var express=require(_0xad96('0x0'));var router=express[_0xad96('0x1')]();var auth=require(_0xad96('0x2'));var controller=require(_0xad96('0x3'));router[_0xad96('0x4')]('/',controller[_0xad96('0x5')]);router[_0xad96('0x4')](_0xad96('0x6'),auth['isAuthenticated'](),auth[_0xad96('0x7')](),controller[_0xad96('0x8')]);router[_0xad96('0x4')](_0xad96('0x9'),auth[_0xad96('0xa')](),auth['canUpdate'](),controller[_0xad96('0xb')]);router[_0xad96('0x4')](_0xad96('0xc'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xad96('0xd')]);router['get'](_0xad96('0xe'),auth[_0xad96('0xa')](),controller[_0xad96('0xf')]);router[_0xad96('0x4')](_0xad96('0x10'),controller['migrations']);module[_0xad96('0x11')]=router;
\ No newline at end of file
index 6537884..a17e735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b2a=['constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','pkginfo','compare-versions','child_process','exec','../../config/environment','../../config/logger','update','simple-git','index','exports','version','latest','2.0.0','json','status','fetch','origin','master','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','error','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','root','server','length','.js','push','sequelize','Migration'];(function(_0x2b2acd,_0x26a3df){var _0xf49494=function(_0x473d2a){while(--_0x473d2a){_0x2b2acd['push'](_0x2b2acd['shift']());}};_0xf49494(++_0x26a3df);}(_0x4b2a,0x9f));var _0xa4b2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x4b2a[_0x3ab51d];return _0x29a04e;};'use strict';var Umzug=require('umzug');var path=require(_0xa4b2('0x0'));var fs=require('fs');var _=require(_0xa4b2('0x1'));var pkginfo=require(_0xa4b2('0x2'))(module,'version');var compareVersions=require(_0xa4b2('0x3'));var exec=require(_0xa4b2('0x4'))[_0xa4b2('0x5')];var db=require('../../mysqldb')['db'];var config=require(_0xa4b2('0x6'));var pm2=require('../../config/pm2');var logger=require(_0xa4b2('0x7'))(_0xa4b2('0x8'));var git=require(_0xa4b2('0x9'))(config['root']);exports[_0xa4b2('0xa')]=function(_0x5d99ee,_0x34983e){var _0x4ff808={'current':module[_0xa4b2('0xb')][_0xa4b2('0xc')],'phonebar':0x2};if(_0x5d99ee['query']&&_0x5d99ee['query']['latest']){return git['fetch']()['tags'](function(_0x53ca7c,_0xd2ab41){_0x4ff808[_0xa4b2('0xd')]=(_0x53ca7c?module[_0xa4b2('0xb')][_0xa4b2('0xc')]:_0xd2ab41[_0xa4b2('0xd')])||_0xa4b2('0xe');return _0x34983e['status'](0xc8)[_0xa4b2('0xf')](_0x4ff808);});}else{return _0x34983e[_0xa4b2('0x10')](0xc8)[_0xa4b2('0xf')](_0x4ff808);}};exports['fetch']=function(_0x33a27d,_0x20c78e){return git[_0xa4b2('0x11')]([_0xa4b2('0x12'),_0xa4b2('0x13')],function(_0x3742af){if(_0x3742af){logger['error'](_0x3742af);return _0x20c78e[_0xa4b2('0x10')](0x1f4)['json'](_0x3742af);}logger[_0xa4b2('0x14')](_0xa4b2('0x15'));return _0x20c78e[_0xa4b2('0x10')](0xc8)['json']({'output':_0xa4b2('0x16')});});};exports['reset']=function(_0x20b2b5,_0x12aabd){return git[_0xa4b2('0x17')]([_0xa4b2('0x18'),_0xa4b2('0x19')],function(_0x5d9205){if(_0x5d9205){logger['error'](_0x5d9205);return _0x12aabd[_0xa4b2('0x10')](0x1f4)[_0xa4b2('0xf')](_0x5d9205);}logger[_0xa4b2('0x14')](_0xa4b2('0x1a'));return _0x12aabd['status'](0xc8)[_0xa4b2('0xf')]({'output':_0xa4b2('0x1b')});});};exports[_0xa4b2('0x1c')]=function(_0x22038d,_0x52dcaf){exec(_0xa4b2('0x1d'),function(_0x2baad1,_0x2a4ef9,_0x282844){logger[_0xa4b2('0x14')](_0x2a4ef9);logger[_0xa4b2('0x14')](_0x282844);if(_0x2baad1){logger[_0xa4b2('0x1e')](_0x2baad1);return _0x52dcaf[_0xa4b2('0x10')](0x1f4)[_0xa4b2('0xf')](_0x2baad1);}return _0x52dcaf[_0xa4b2('0x10')](0xc8)[_0xa4b2('0xf')]({'output':_0x2a4ef9});});};exports['restart']=function(_0x42f18d,_0xfe16c4){return pm2['restart'](_0xa4b2('0x1f'))['then'](function(_0x350b37){logger[_0xa4b2('0x14')](_0xa4b2('0x20'),_0x350b37);return _0xfe16c4['status'](0xc8)[_0xa4b2('0xf')]({'output':_0xa4b2('0x21')});})[_0xa4b2('0x22')](function(_0x1adee6){logger[_0xa4b2('0x1e')](_0x1adee6);return _0xfe16c4[_0xa4b2('0x10')](0x1f4)[_0xa4b2('0xf')](_0x1adee6);});};exports[_0xa4b2('0x23')]=function(_0x9180ef,_0xa52248){var _0x1b8ecc=fs[_0xa4b2('0x24')](path[_0xa4b2('0x25')](config[_0xa4b2('0x26')],_0xa4b2('0x27'),_0xa4b2('0x23')));var _0x2478d9=[];for(var _0x4b163c=0x0;_0x4b163c<_0x1b8ecc[_0xa4b2('0x28')];_0x4b163c++){var _0x2c3ae0=_0x1b8ecc[_0x4b163c]['replace'](_0xa4b2('0x29'),'');if(compareVersions(module['exports']['version'],_0x2c3ae0)===-0x1){_0x2478d9[_0xa4b2('0x2a')](_0x2c3ae0);}}if(_0x2478d9[_0xa4b2('0x28')]){var _0x2c111b=_0x2478d9['sort'](compareVersions);var _0x184f94=new Umzug({'storage':_0xa4b2('0x2b'),'storageOptions':{'model':db[_0xa4b2('0x2c')],'modelName':'Migration','columnName':_0xa4b2('0xc')},'migrations':{'params':[db[_0xa4b2('0x2b')]['getQueryInterface'](),db[_0xa4b2('0x2b')][_0xa4b2('0x2d')],function(){throw new Error(_0xa4b2('0x2e'));}],'path':path['join'](config[_0xa4b2('0x26')],'server','migrations'),'pattern':/\.js$/}});_0x184f94['up']({'migrations':_['map'](_0x2c111b,function(_0x5e5a21){return _0x5e5a21+_0xa4b2('0x29');})})['then'](function(){return _0xa52248['status'](0xc8)['json']({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xa4b2('0xb')]['version']+_0xa4b2('0x2f')+_[_0xa4b2('0x30')](_0x2c111b),'migrations':_[_0xa4b2('0x25')](_0x2c111b)});})[_0xa4b2('0x22')](function(_0x3e3e74){if(_0x3e3e74 instanceof db[_0xa4b2('0x2b')][_0xa4b2('0x31')]){return _0xa52248[_0xa4b2('0x10')](0xc8)['json']({'output':_0xa4b2('0x32')});}else{return _0xa52248[_0xa4b2('0x10')](0x1f4)[_0xa4b2('0xf')](_0x3e3e74);}});}else{return _0xa52248[_0xa4b2('0x10')](0xc8)[_0xa4b2('0xf')]({'output':_0xa4b2('0x32')});}};
\ No newline at end of file
+var _0x9d55=['then','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','child_process','../../mysqldb','../../config/environment','../../config/logger','simple-git','root','index','exports','query','latest','fetch','tags','2.0.0','status','json','origin','master','error','info','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','readdirSync','join','server','migrations','length','sort','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js'];(function(_0x46bede,_0x10e433){var _0x39b5c3=function(_0x25b0b3){while(--_0x25b0b3){_0x46bede['push'](_0x46bede['shift']());}};_0x39b5c3(++_0x10e433);}(_0x9d55,0xd7));var _0x59d5=function(_0x518098,_0x3e3102){_0x518098=_0x518098-0x0;var _0x17796f=_0x9d55[_0x518098];return _0x17796f;};'use strict';var Umzug=require(_0x59d5('0x0'));var path=require(_0x59d5('0x1'));var fs=require('fs');var _=require(_0x59d5('0x2'));var pkginfo=require(_0x59d5('0x3'))(module,_0x59d5('0x4'));var compareVersions=require(_0x59d5('0x5'));var exec=require(_0x59d5('0x6'))['exec'];var db=require(_0x59d5('0x7'))['db'];var config=require(_0x59d5('0x8'));var pm2=require('../../config/pm2');var logger=require(_0x59d5('0x9'))('update');var git=require(_0x59d5('0xa'))(config[_0x59d5('0xb')]);exports[_0x59d5('0xc')]=function(_0x4b3ef6,_0x4a93ad){var _0x258d72={'current':module[_0x59d5('0xd')][_0x59d5('0x4')],'phonebar':0x2};if(_0x4b3ef6[_0x59d5('0xe')]&&_0x4b3ef6[_0x59d5('0xe')][_0x59d5('0xf')]){return git[_0x59d5('0x10')]()[_0x59d5('0x11')](function(_0x5449b5,_0x190c8b){_0x258d72[_0x59d5('0xf')]=(_0x5449b5?module[_0x59d5('0xd')][_0x59d5('0x4')]:_0x190c8b[_0x59d5('0xf')])||_0x59d5('0x12');return _0x4a93ad[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')](_0x258d72);});}else{return _0x4a93ad[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')](_0x258d72);}};exports['fetch']=function(_0x2bd1ef,_0x28f338){return git[_0x59d5('0x10')]([_0x59d5('0x15'),_0x59d5('0x16')],function(_0x5cfd4a){if(_0x5cfd4a){logger[_0x59d5('0x17')](_0x5cfd4a);return _0x28f338['status'](0x1f4)['json'](_0x5cfd4a);}logger[_0x59d5('0x18')]('git\x20fetch');return _0x28f338[_0x59d5('0x13')](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x59d5('0x19')]=function(_0x3291f6,_0x2dd322){return git[_0x59d5('0x19')]([_0x59d5('0x1a'),_0x59d5('0x1b')],function(_0x378cbb){if(_0x378cbb){logger[_0x59d5('0x17')](_0x378cbb);return _0x2dd322[_0x59d5('0x13')](0x1f4)[_0x59d5('0x14')](_0x378cbb);}logger[_0x59d5('0x18')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x2dd322[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x1c')});});};exports[_0x59d5('0x1d')]=function(_0x75137b,_0x2a69b1){exec(_0x59d5('0x1e'),function(_0x3dd05c,_0x4b2423,_0x2732a9){logger[_0x59d5('0x18')](_0x4b2423);logger[_0x59d5('0x18')](_0x2732a9);if(_0x3dd05c){logger[_0x59d5('0x17')](_0x3dd05c);return _0x2a69b1['status'](0x1f4)[_0x59d5('0x14')](_0x3dd05c);}return _0x2a69b1[_0x59d5('0x13')](0xc8)['json']({'output':_0x4b2423});});};exports['restart']=function(_0x7198c6,_0x2cdd5c){return pm2['restart']('motion2')['then'](function(_0x38fd0e){logger[_0x59d5('0x18')](_0x59d5('0x1f'),_0x38fd0e);return _0x2cdd5c[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x20')});})['catch'](function(_0x51469a){logger[_0x59d5('0x17')](_0x51469a);return _0x2cdd5c[_0x59d5('0x13')](0x1f4)['json'](_0x51469a);});};exports['migrations']=function(_0x4bf83c,_0x1be853){var _0x53d7a5=fs[_0x59d5('0x21')](path[_0x59d5('0x22')](config[_0x59d5('0xb')],_0x59d5('0x23'),_0x59d5('0x24')));var _0x24d98f=[];for(var _0xa324ff=0x0;_0xa324ff<_0x53d7a5[_0x59d5('0x25')];_0xa324ff++){var _0x196c91=_0x53d7a5[_0xa324ff]['replace']('.js','');if(compareVersions(module[_0x59d5('0xd')][_0x59d5('0x4')],_0x196c91)===-0x1){_0x24d98f['push'](_0x196c91);}}if(_0x24d98f[_0x59d5('0x25')]){var _0x1ce6b6=_0x24d98f[_0x59d5('0x26')](compareVersions);var _0x3d1915=new Umzug({'storage':_0x59d5('0x27'),'storageOptions':{'model':db['Migration'],'modelName':'Migration','columnName':'version'},'migrations':{'params':[db[_0x59d5('0x27')][_0x59d5('0x28')](),db[_0x59d5('0x27')][_0x59d5('0x29')],function(){throw new Error(_0x59d5('0x2a'));}],'path':path['join'](config['root'],_0x59d5('0x23'),_0x59d5('0x24')),'pattern':/\.js$/}});_0x3d1915['up']({'migrations':_[_0x59d5('0x2b')](_0x1ce6b6,function(_0x2c84b0){return _0x2c84b0+_0x59d5('0x2c');})})[_0x59d5('0x2d')](function(){return _0x1be853[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x2e')+module[_0x59d5('0xd')][_0x59d5('0x4')]+_0x59d5('0x2f')+_[_0x59d5('0x30')](_0x1ce6b6),'migrations':_['join'](_0x1ce6b6)});})[_0x59d5('0x31')](function(_0x2202a2){if(_0x2202a2 instanceof db[_0x59d5('0x27')][_0x59d5('0x32')]){return _0x1be853[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x33')});}else{return _0x1be853[_0x59d5('0x13')](0x1f4)[_0x59d5('0x14')](_0x2202a2);}});}else{return _0x1be853[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x33')});}};
\ No newline at end of file
index 738c3cf..4275ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6923=['util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','exports','multer'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6923,0x109));var _0x3692=function(_0x1a1e48,_0x38cf4f){_0x1a1e48=_0x1a1e48-0x0;var _0x27af1d=_0x6923[_0x1a1e48];return _0x27af1d;};'use strict';var multer=require(_0x3692('0x0'));var util=require(_0x3692('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3692('0x2'));var router=express[_0x3692('0x3')]();var fs_extra=require(_0x3692('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3692('0x5'));var config=require(_0x3692('0x6'));var controller=require(_0x3692('0x7'));router[_0x3692('0x8')]('/',auth[_0x3692('0x9')](),controller['index']);router['get'](_0x3692('0xa'),auth[_0x3692('0x9')](),controller[_0x3692('0xb')]);router[_0x3692('0x8')](_0x3692('0xc'),auth[_0x3692('0x9')](),controller[_0x3692('0xd')]);router[_0x3692('0xe')]('/',auth['isAuthenticated'](),controller[_0x3692('0xf')]);router[_0x3692('0x10')](_0x3692('0xc'),auth[_0x3692('0x9')](),controller['update']);router[_0x3692('0x11')](_0x3692('0xc'),auth[_0x3692('0x9')](),controller['destroy']);module[_0x3692('0x12')]=router;
\ No newline at end of file
+var _0xe3f6=['destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete'];(function(_0x527824,_0xc824a9){var _0xc8b8ed=function(_0x1b0e19){while(--_0x1b0e19){_0x527824['push'](_0x527824['shift']());}};_0xc8b8ed(++_0xc824a9);}(_0xe3f6,0x1a6));var _0x6e3f=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xe3f6[_0x56916d];return _0x2b7f1f;};'use strict';var multer=require(_0x6e3f('0x0'));var util=require(_0x6e3f('0x1'));var path=require('path');var timeout=require(_0x6e3f('0x2'));var express=require(_0x6e3f('0x3'));var router=express[_0x6e3f('0x4')]();var fs_extra=require(_0x6e3f('0x5'));var auth=require(_0x6e3f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6e3f('0x7'));var controller=require(_0x6e3f('0x8'));router[_0x6e3f('0x9')]('/',auth[_0x6e3f('0xa')](),controller[_0x6e3f('0xb')]);router['get'](_0x6e3f('0xc'),auth['isAuthenticated'](),controller[_0x6e3f('0xd')]);router['get'](_0x6e3f('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x6e3f('0xf')]('/',auth[_0x6e3f('0xa')](),controller[_0x6e3f('0x10')]);router['put']('/:id',auth[_0x6e3f('0xa')](),controller[_0x6e3f('0x11')]);router[_0x6e3f('0x12')](_0x6e3f('0xe'),auth[_0x6e3f('0xa')](),controller[_0x6e3f('0x13')]);module[_0x6e3f('0x14')]=router;
\ No newline at end of file
index 9e86964..c445c25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef9=['INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0xdef9,0x1ed));var _0x9def=function(_0x27097a,_0x1b7f8b){_0x27097a=_0x27097a-0x0;var _0x26378b=_0xdef9[_0x27097a];return _0x26378b;};'use strict';var Sequelize=require(_0x9def('0x0'));module[_0x9def('0x1')]={'type':{'type':Sequelize[_0x9def('0x2')]},'uniqueid':{'type':Sequelize[_0x9def('0x2')]},'calleridnum':{'type':Sequelize[_0x9def('0x2')]},'calleridname':{'type':Sequelize[_0x9def('0x2')]},'queue':{'type':Sequelize[_0x9def('0x2')]},'interface':{'type':Sequelize[_0x9def('0x2')]},'membername':{'type':Sequelize[_0x9def('0x2')]},'agentcalledAt':{'type':Sequelize[_0x9def('0x3')]},'agentconnectAt':{'type':Sequelize[_0x9def('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x9def('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x9def('0x3')]},'agentdumpAt':{'type':Sequelize[_0x9def('0x3')]},'holdtime':{'type':Sequelize[_0x9def('0x4')]},'agentcomplete':{'type':Sequelize[_0x9def('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x9def('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x9def('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x9def('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x9def('0x4')]},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x9def('0x2')]},'channelstate':{'type':Sequelize[_0x9def('0x4')]},'channelstatedesc':{'type':Sequelize[_0x9def('0x2')]},'connectedlinenum':{'type':Sequelize[_0x9def('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9def('0x2')]},'accountcode':{'type':Sequelize[_0x9def('0x2')]},'context':{'type':Sequelize[_0x9def('0x2')]},'exten':{'type':Sequelize[_0x9def('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x9def('0x2')]},'destchannelstate':{'type':Sequelize[_0x9def('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x9def('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x9def('0x2')]},'destlanguage':{'type':Sequelize[_0x9def('0x2')]},'destaccountcode':{'type':Sequelize[_0x9def('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x9def('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x9def('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x9def('0x2')]},'transfer':{'type':Sequelize[_0x9def('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x9def('0x2')],'comment':_0x9def('0x6')},'transferexten':{'type':Sequelize[_0x9def('0x2')]},'transferuniqueid':{'type':Sequelize[_0x9def('0x2')]},'agententerreason':{'type':Sequelize[_0x9def('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6947=['exports','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x6947,0x72));var _0x7694=function(_0x38e2d1,_0x1fb483){_0x38e2d1=_0x38e2d1-0x0;var _0x59a95c=_0x6947[_0x38e2d1];return _0x59a95c;};'use strict';var Sequelize=require('sequelize');module[_0x7694('0x0')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x7694('0x1')]},'calleridnum':{'type':Sequelize[_0x7694('0x1')]},'calleridname':{'type':Sequelize[_0x7694('0x1')]},'queue':{'type':Sequelize[_0x7694('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x7694('0x2')]},'agentconnectAt':{'type':Sequelize[_0x7694('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x7694('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x7694('0x2')]},'agentdumpAt':{'type':Sequelize[_0x7694('0x2')]},'holdtime':{'type':Sequelize[_0x7694('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x7694('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x7694('0x3')]},'agentacw':{'type':Sequelize[_0x7694('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x7694('0x1')]},'lastevent':{'type':Sequelize[_0x7694('0x1')]},'channel':{'type':Sequelize[_0x7694('0x1')]},'channelstate':{'type':Sequelize[_0x7694('0x3')]},'channelstatedesc':{'type':Sequelize[_0x7694('0x1')]},'connectedlinenum':{'type':Sequelize[_0x7694('0x1')]},'connectedlinename':{'type':Sequelize[_0x7694('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x7694('0x1')]},'context':{'type':Sequelize[_0x7694('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x7694('0x1')]},'destchannel':{'type':Sequelize[_0x7694('0x1')]},'destchannelstate':{'type':Sequelize[_0x7694('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x7694('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x7694('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x7694('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x7694('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x7694('0x1')]},'destpriority':{'type':Sequelize[_0x7694('0x1')]},'destuniqueid':{'type':Sequelize[_0x7694('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x7694('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x7694('0x1')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x7694('0x1')],'comment':_0x7694('0x5')},'transferexten':{'type':Sequelize[_0x7694('0x1')]},'transferuniqueid':{'type':Sequelize[_0x7694('0x1')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d7ea4aa..9104b22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
+var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index 2ea5a53..63d7be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a7=['VoiceAgentReport','report_agent','destuniqueid','lodash','moment','bluebird','request-promise','rimraf','./voiceAgentReport.attributes','define'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xd8a7,0xdf));var _0x7d8a=function(_0x4dd8df,_0x527071){_0x4dd8df=_0x4dd8df-0x0;var _0x21628a=_0xd8a7[_0x4dd8df];return _0x21628a;};'use strict';var _=require(_0x7d8a('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x7d8a('0x1'));var BPromise=require(_0x7d8a('0x2'));var rp=require(_0x7d8a('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7d8a('0x4'));var config=require('../../config/environment');var attributes=require(_0x7d8a('0x5'));module['exports']=function(_0x27ef8e,_0x530308){return _0x27ef8e[_0x7d8a('0x6')](_0x7d8a('0x7'),attributes,{'tableName':_0x7d8a('0x8'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x7d8a('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3831=['bluebird','request-promise','rimraf','./voiceAgentReport.attributes','define','report_agent','uniqueid','destuniqueid','lodash','../../config/logger','api','moment'];(function(_0x29a528,_0x4710ff){var _0x11cbf2=function(_0x25ffad){while(--_0x25ffad){_0x29a528['push'](_0x29a528['shift']());}};_0x11cbf2(++_0x4710ff);}(_0x3831,0x14c));var _0x1383=function(_0x40f470,_0x3a5975){_0x40f470=_0x40f470-0x0;var _0x46ce5f=_0x3831[_0x40f470];return _0x46ce5f;};'use strict';var _=require(_0x1383('0x0'));var util=require('util');var logger=require(_0x1383('0x1'))(_0x1383('0x2'));var moment=require(_0x1383('0x3'));var BPromise=require(_0x1383('0x4'));var rp=require(_0x1383('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1383('0x6'));var config=require('../../config/environment');var attributes=require(_0x1383('0x7'));module['exports']=function(_0x5b64b1,_0x5eb4d8){return _0x5b64b1[_0x1383('0x8')]('VoiceAgentReport',attributes,{'tableName':_0x1383('0x9'),'paranoid':![],'indexes':[{'fields':[_0x1383('0xa'),_0x1383('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 70815cb..b75cfe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0319=['raw','CreateVoiceAgentReport','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceAgentReport','create','options'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0319,0x167));var _0x9031=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x0319[_0x13ea00];return _0x1f7347;};'use strict';var _=require(_0x9031('0x0'));var util=require(_0x9031('0x1'));var moment=require('moment');var BPromise=require(_0x9031('0x2'));var rs=require(_0x9031('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9031('0x4'));var logger=require(_0x9031('0x5'))('rpc');var config=require(_0x9031('0x6'));var jayson=require(_0x9031('0x7'));var client=jayson[_0x9031('0x8')][_0x9031('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xf53fd9,_0x1d27a2,_0x289b66){return new BPromise(function(_0x104434,_0x268834){return client['request'](_0xf53fd9,_0x289b66)[_0x9031('0xa')](function(_0xb8e830){logger[_0x9031('0xb')](_0x9031('0xc'),_0x1d27a2,_0x9031('0xd'));logger[_0x9031('0xe')](_0x9031('0xf'),_0x1d27a2,_0x9031('0xd'),JSON[_0x9031('0x10')](_0xb8e830));if(_0xb8e830['error']){if(_0xb8e830[_0x9031('0x11')][_0x9031('0x12')]===0x1f4){logger[_0x9031('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x1d27a2,_0xb8e830['error'][_0x9031('0x13')]);return _0x268834(_0xb8e830['error'][_0x9031('0x13')]);}logger[_0x9031('0x11')](_0x9031('0xc'),_0x1d27a2,_0xb8e830[_0x9031('0x11')]['message']);return _0x104434(_0xb8e830['error']['message']);}else{logger['info'](_0x9031('0xc'),_0x1d27a2,'request\x20sent');_0x104434(_0xb8e830[_0x9031('0x14')]['message']);}})[_0x9031('0x15')](function(_0x20317b){logger[_0x9031('0x11')](_0x9031('0xc'),_0x1d27a2,_0x20317b);_0x268834(_0x20317b);});});}exports['CreateVoiceAgentReport']=function(_0x31dd0f){var _0x5ef604=this;return new Promise(function(_0x560b9b,_0x17ac2e){return db[_0x9031('0x16')][_0x9031('0x17')](_0x31dd0f['body'],{'raw':_0x31dd0f[_0x9031('0x18')]?_0x31dd0f[_0x9031('0x18')][_0x9031('0x19')]===undefined?!![]:![]:!![]})[_0x9031('0xa')](function(_0x321363){logger[_0x9031('0xb')]('CreateVoiceAgentReport',_0x31dd0f);logger[_0x9031('0xe')](_0x9031('0x1a'),_0x31dd0f,JSON[_0x9031('0x10')](_0x321363));_0x560b9b(_0x321363);})['catch'](function(_0x36bbdb){logger[_0x9031('0x11')](_0x9031('0x1a'),_0x36bbdb[_0x9031('0x13')],_0x31dd0f);_0x17ac2e(_0x5ef604[_0x9031('0x11')](0x1f4,_0x36bbdb[_0x9031('0x13')]));});});};exports[_0x9031('0x1b')]=function(_0xf37a0){var _0x22bb6f=this;return new Promise(function(_0x1ce33e,_0x571c4c){return db[_0x9031('0x16')][_0x9031('0x1c')](_0xf37a0['body'],{'raw':_0xf37a0[_0x9031('0x18')]?_0xf37a0[_0x9031('0x18')][_0x9031('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf37a0[_0x9031('0x18')]?_0xf37a0[_0x9031('0x18')][_0x9031('0x1d')]||null:null,'attributes':_0xf37a0[_0x9031('0x18')]?_0xf37a0[_0x9031('0x18')][_0x9031('0x1e')]||null:null,'limit':_0xf37a0[_0x9031('0x18')]?_0xf37a0[_0x9031('0x18')][_0x9031('0x1f')]||null:null})[_0x9031('0xa')](function(_0x40195b){logger['info'](_0x9031('0x1b'),_0xf37a0);logger[_0x9031('0xe')](_0x9031('0x1b'),_0xf37a0,JSON[_0x9031('0x10')](_0x40195b));_0x1ce33e(_0x40195b);})[_0x9031('0x15')](function(_0x421bd6){logger[_0x9031('0x11')](_0x9031('0x1b'),_0x421bd6['message'],_0xf37a0);_0x571c4c(_0x22bb6f[_0x9031('0x11')](0x1f4,_0x421bd6[_0x9031('0x13')]));});});};
\ No newline at end of file
+var _0x60be=['../../config/environment','jayson/promise','client','http','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','VoiceAgentReport','create','body','options','raw','CreateVoiceAgentReport','stringify','UpdateVoiceAgentReport','update','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x34fa9d,_0x463e10){var _0x3ecf30=function(_0x3e7a18){while(--_0x3e7a18){_0x34fa9d['push'](_0x34fa9d['shift']());}};_0x3ecf30(++_0x463e10);}(_0x60be,0x14d));var _0xe60b=function(_0x1e3077,_0x9b9b52){_0x1e3077=_0x1e3077-0x0;var _0x378418=_0x60be[_0x1e3077];return _0x378418;};'use strict';var _=require(_0xe60b('0x0'));var util=require('util');var moment=require(_0xe60b('0x1'));var BPromise=require(_0xe60b('0x2'));var rs=require(_0xe60b('0x3'));var fs=require('fs');var Redis=require(_0xe60b('0x4'));var db=require(_0xe60b('0x5'))['db'];var utils=require(_0xe60b('0x6'));var logger=require('../../config/logger')(_0xe60b('0x7'));var config=require(_0xe60b('0x8'));var jayson=require(_0xe60b('0x9'));var client=jayson[_0xe60b('0xa')][_0xe60b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d897c,_0x37e234,_0x38215a){return new BPromise(function(_0x52e157,_0x1459f4){return client['request'](_0x2d897c,_0x38215a)[_0xe60b('0xc')](function(_0x5d4ab0){logger[_0xe60b('0xd')](_0xe60b('0xe'),_0x37e234,_0xe60b('0xf'));logger[_0xe60b('0x10')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x37e234,_0xe60b('0xf'),JSON['stringify'](_0x5d4ab0));if(_0x5d4ab0[_0xe60b('0x11')]){if(_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x12')]===0x1f4){logger[_0xe60b('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x37e234,_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);return _0x1459f4(_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);}logger[_0xe60b('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x37e234,_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);return _0x52e157(_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);}else{logger['info'](_0xe60b('0xe'),_0x37e234,_0xe60b('0xf'));_0x52e157(_0x5d4ab0['result'][_0xe60b('0x13')]);}})[_0xe60b('0x14')](function(_0x30e8c3){logger['error'](_0xe60b('0xe'),_0x37e234,_0x30e8c3);_0x1459f4(_0x30e8c3);});});}exports['CreateVoiceAgentReport']=function(_0x3f804f){var _0x11cb6e=this;return new Promise(function(_0x4fba8e,_0x2875ec){return db[_0xe60b('0x15')][_0xe60b('0x16')](_0x3f804f[_0xe60b('0x17')],{'raw':_0x3f804f['options']?_0x3f804f[_0xe60b('0x18')][_0xe60b('0x19')]===undefined?!![]:![]:!![]})[_0xe60b('0xc')](function(_0xcea0d8){logger['info'](_0xe60b('0x1a'),_0x3f804f);logger[_0xe60b('0x10')](_0xe60b('0x1a'),_0x3f804f,JSON[_0xe60b('0x1b')](_0xcea0d8));_0x4fba8e(_0xcea0d8);})[_0xe60b('0x14')](function(_0x25c1fd){logger['error'](_0xe60b('0x1a'),_0x25c1fd[_0xe60b('0x13')],_0x3f804f);_0x2875ec(_0x11cb6e[_0xe60b('0x11')](0x1f4,_0x25c1fd[_0xe60b('0x13')]));});});};exports[_0xe60b('0x1c')]=function(_0x34e576){var _0x52c7d5=this;return new Promise(function(_0x4702e4,_0x1f6f0c){return db[_0xe60b('0x15')][_0xe60b('0x1d')](_0x34e576['body'],{'raw':_0x34e576[_0xe60b('0x18')]?_0x34e576['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34e576[_0xe60b('0x18')]?_0x34e576[_0xe60b('0x18')]['where']||null:null,'attributes':_0x34e576[_0xe60b('0x18')]?_0x34e576['options']['attributes']||null:null,'limit':_0x34e576['options']?_0x34e576[_0xe60b('0x18')][_0xe60b('0x1e')]||null:null})['then'](function(_0x464c74){logger[_0xe60b('0xd')](_0xe60b('0x1c'),_0x34e576);logger[_0xe60b('0x10')](_0xe60b('0x1c'),_0x34e576,JSON[_0xe60b('0x1b')](_0x464c74));_0x4702e4(_0x464c74);})[_0xe60b('0x14')](function(_0x5819ee){logger['error'](_0xe60b('0x1c'),_0x5819ee['message'],_0x34e576);_0x1f6f0c(_0x52c7d5[_0xe60b('0x11')](0x1f4,_0x5819ee[_0xe60b('0x13')]));});});};
\ No newline at end of file
index 4d03cc4..348bd88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc949=['show','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x58961c,_0x501d71){var _0x33114c=function(_0x4ddcb3){while(--_0x4ddcb3){_0x58961c['push'](_0x58961c['shift']());}};_0x33114c(++_0x501d71);}(_0xc949,0x181));var _0x9c94=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xc949[_0x3054be];return _0x3df150;};'use strict';var multer=require(_0x9c94('0x0'));var util=require('util');var path=require(_0x9c94('0x1'));var timeout=require(_0x9c94('0x2'));var express=require(_0x9c94('0x3'));var router=express[_0x9c94('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9c94('0x5'));var interaction=require(_0x9c94('0x6'));var config=require('../../config/environment');var controller=require(_0x9c94('0x7'));router[_0x9c94('0x8')]('/',auth[_0x9c94('0x9')](),controller[_0x9c94('0xa')]);router['get'](_0x9c94('0xb'),auth[_0x9c94('0x9')](),controller[_0x9c94('0xc')]);router[_0x9c94('0x8')](_0x9c94('0xd'),auth[_0x9c94('0x9')](),controller[_0x9c94('0xe')]);router[_0x9c94('0xf')]('/',auth[_0x9c94('0x9')](),controller[_0x9c94('0x10')]);router['put'](_0x9c94('0xd'),auth[_0x9c94('0x9')](),controller[_0x9c94('0x11')]);router[_0x9c94('0x12')](_0x9c94('0xd'),auth[_0x9c94('0x9')](),controller[_0x9c94('0x13')]);module[_0x9c94('0x14')]=router;
\ No newline at end of file
+var _0xcb66=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x5af843,_0x17840e){var _0x165ecd=function(_0x496cd2){while(--_0x496cd2){_0x5af843['push'](_0x5af843['shift']());}};_0x165ecd(++_0x17840e);}(_0xcb66,0x19f));var _0x6cb6=function(_0x1b92a6,_0x14444b){_0x1b92a6=_0x1b92a6-0x0;var _0x24be5b=_0xcb66[_0x1b92a6];return _0x24be5b;};'use strict';var multer=require('multer');var util=require(_0x6cb6('0x0'));var path=require(_0x6cb6('0x1'));var timeout=require(_0x6cb6('0x2'));var express=require(_0x6cb6('0x3'));var router=express[_0x6cb6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6cb6('0x5'));var interaction=require(_0x6cb6('0x6'));var config=require(_0x6cb6('0x7'));var controller=require(_0x6cb6('0x8'));router[_0x6cb6('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6cb6('0x9')](_0x6cb6('0xa'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xc')]);router[_0x6cb6('0x9')](_0x6cb6('0xd'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xe')]);router[_0x6cb6('0xf')]('/',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x10')]);router[_0x6cb6('0x11')](_0x6cb6('0xd'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x12')]);module[_0x6cb6('0x13')]=router;
\ No newline at end of file
index 5268bc8..349a282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27f4=['ENUM','inbound','internal','dialer','DATE','INTEGER','exports','STRING'];(function(_0x42569e,_0x20fd08){var _0x5159a=function(_0x405ff2){while(--_0x405ff2){_0x42569e['push'](_0x42569e['shift']());}};_0x5159a(++_0x20fd08);}(_0x27f4,0x14e));var _0x427f=function(_0x28d885,_0x22d916){_0x28d885=_0x28d885-0x0;var _0x54e080=_0x27f4[_0x28d885];return _0x54e080;};'use strict';var Sequelize=require('sequelize');module[_0x427f('0x0')]={'uniqueid':{'type':Sequelize[_0x427f('0x1')]},'type':{'type':Sequelize[_0x427f('0x2')](_0x427f('0x3'),_0x427f('0x4'),'outbound','inbound-fax','outbound-fax',_0x427f('0x5'))},'tag':{'type':Sequelize[_0x427f('0x1')]},'accountcode':{'type':Sequelize[_0x427f('0x1')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0x427f('0x1')]},'destinationcontext':{'type':Sequelize[_0x427f('0x1')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x427f('0x1')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x427f('0x1')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x427f('0x6')]},'answertime':{'type':Sequelize[_0x427f('0x6')]},'endtime':{'type':Sequelize[_0x427f('0x6')]},'duration':{'type':Sequelize[_0x427f('0x7')]},'billableseconds':{'type':Sequelize[_0x427f('0x7')]},'mohtime':{'type':Sequelize[_0x427f('0x7')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x427f('0x1')]},'amaflags':{'type':Sequelize[_0x427f('0x1')]},'userfield':{'type':Sequelize[_0x427f('0x1')]},'userDisposition':{'type':Sequelize[_0x427f('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x427f('0x1')]},'userThirdDisposition':{'type':Sequelize[_0x427f('0x1')]},'note':{'type':Sequelize[_0x427f('0x1')]},'prefix':{'type':Sequelize[_0x427f('0x1')]},'routeid':{'type':Sequelize[_0x427f('0x7')]},'sipcallid':{'type':Sequelize[_0x427f('0x1')]}};
\ No newline at end of file
+var _0xb248=['INTEGER','exports','inbound','internal','inbound-fax','outbound-fax','dialer','STRING','TEXT','DATE'];(function(_0xf606e2,_0x18d317){var _0x2ec1b1=function(_0x49ed64){while(--_0x49ed64){_0xf606e2['push'](_0xf606e2['shift']());}};_0x2ec1b1(++_0x18d317);}(_0xb248,0x1b9));var _0x8b24=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xb248[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');module[_0x8b24('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x8b24('0x1'),_0x8b24('0x2'),'outbound',_0x8b24('0x3'),_0x8b24('0x4'),_0x8b24('0x5'))},'tag':{'type':Sequelize[_0x8b24('0x6')]},'accountcode':{'type':Sequelize[_0x8b24('0x6')]},'source':{'type':Sequelize[_0x8b24('0x6')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x8b24('0x6')]},'callerid':{'type':Sequelize[_0x8b24('0x6')]},'channel':{'type':Sequelize[_0x8b24('0x6')]},'destinationchannel':{'type':Sequelize[_0x8b24('0x6')]},'lastapplication':{'type':Sequelize[_0x8b24('0x6')]},'lastdata':{'type':Sequelize[_0x8b24('0x7')]},'starttime':{'type':Sequelize[_0x8b24('0x8')]},'systemanswertime':{'type':Sequelize[_0x8b24('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x8b24('0x8')]},'duration':{'type':Sequelize[_0x8b24('0x9')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x8b24('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x8b24('0x6')]},'amaflags':{'type':Sequelize[_0x8b24('0x6')]},'userfield':{'type':Sequelize[_0x8b24('0x6')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x8b24('0x6')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x8b24('0x6')]},'routeid':{'type':Sequelize[_0x8b24('0x9')]},'sipcallid':{'type':Sequelize[_0x8b24('0x6')]}};
\ No newline at end of file
index 8802a70..5b1493c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x5f66,0x1a0));var _0x65f6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5f66[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
+var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x11b1b3,_0xf3cc69){var _0x437029=function(_0x40499a){while(--_0x40499a){_0x11b1b3['push'](_0x11b1b3['shift']());}};_0x437029(++_0xf3cc69);}(_0xadb5,0xad));var _0x5adb=function(_0x47de39,_0x436e00){_0x47de39=_0x47de39-0x0;var _0x6a6103=_0xadb5[_0x47de39];return _0x6a6103;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
index b4882c3..aa17e52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e90=['exports','VoiceCallReport','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes'];(function(_0x5d4cb5,_0x22025e){var _0x25561e=function(_0x4d792a){while(--_0x4d792a){_0x5d4cb5['push'](_0x5d4cb5['shift']());}};_0x25561e(++_0x22025e);}(_0x1e90,0x1c5));var _0x01e9=function(_0x169a73,_0x182f58){_0x169a73=_0x169a73-0x0;var _0x2480be=_0x1e90[_0x169a73];return _0x2480be;};'use strict';var _=require(_0x01e9('0x0'));var util=require(_0x01e9('0x1'));var logger=require(_0x01e9('0x2'))(_0x01e9('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x01e9('0x4'));var fs=require('fs');var path=require(_0x01e9('0x5'));var rimraf=require(_0x01e9('0x6'));var config=require(_0x01e9('0x7'));var attributes=require(_0x01e9('0x8'));module[_0x01e9('0x9')]=function(_0x50cff9,_0x3291f9){return _0x50cff9['define'](_0x01e9('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4677=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./voiceCallReport.attributes','define','VoiceCallReport','report_call','lodash','util'];(function(_0xb0fd3f,_0x279a5){var _0x5839da=function(_0x34006c){while(--_0x34006c){_0xb0fd3f['push'](_0xb0fd3f['shift']());}};_0x5839da(++_0x279a5);}(_0x4677,0x6a));var _0x7467=function(_0x13d304,_0xe20892){_0x13d304=_0x13d304-0x0;var _0x362691=_0x4677[_0x13d304];return _0x362691;};'use strict';var _=require(_0x7467('0x0'));var util=require(_0x7467('0x1'));var logger=require(_0x7467('0x2'))('api');var moment=require(_0x7467('0x3'));var BPromise=require(_0x7467('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7467('0x5'));var rimraf=require(_0x7467('0x6'));var config=require(_0x7467('0x7'));var attributes=require(_0x7467('0x8'));module['exports']=function(_0x338778,_0x41312c){return _0x338778[_0x7467('0x9')](_0x7467('0xa'),attributes,{'tableName':_0x7467('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 2789286..48b3e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17b=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','limit','map','include','model','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','util','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xc17b,0x105));var _0xbc17=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc17b[_0x36c5b0];return _0xf19333;};'use strict';var _=require('lodash');var util=require(_0xbc17('0x0'));var moment=require('moment');var BPromise=require(_0xbc17('0x1'));var rs=require(_0xbc17('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbc17('0x3'))['db'];var utils=require(_0xbc17('0x4'));var logger=require('../../config/logger')(_0xbc17('0x5'));var config=require(_0xbc17('0x6'));var jayson=require(_0xbc17('0x7'));var client=jayson[_0xbc17('0x8')][_0xbc17('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x15e681,_0x3be286,_0x464a72){return new BPromise(function(_0x250c46,_0x2c99b0){return client[_0xbc17('0xa')](_0x15e681,_0x464a72)[_0xbc17('0xb')](function(_0x14eec4){logger[_0xbc17('0xc')](_0xbc17('0xd'),_0x3be286,_0xbc17('0xe'));logger[_0xbc17('0xf')](_0xbc17('0x10'),_0x3be286,_0xbc17('0xe'),JSON[_0xbc17('0x11')](_0x14eec4));if(_0x14eec4[_0xbc17('0x12')]){if(_0x14eec4[_0xbc17('0x12')]['code']===0x1f4){logger[_0xbc17('0x12')](_0xbc17('0xd'),_0x3be286,_0x14eec4['error'][_0xbc17('0x13')]);return _0x2c99b0(_0x14eec4[_0xbc17('0x12')][_0xbc17('0x13')]);}logger[_0xbc17('0x12')](_0xbc17('0xd'),_0x3be286,_0x14eec4[_0xbc17('0x12')]['message']);return _0x250c46(_0x14eec4[_0xbc17('0x12')][_0xbc17('0x13')]);}else{logger['info'](_0xbc17('0xd'),_0x3be286,_0xbc17('0xe'));_0x250c46(_0x14eec4[_0xbc17('0x14')]['message']);}})[_0xbc17('0x15')](function(_0x495c1e){logger[_0xbc17('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x3be286,_0x495c1e);_0x2c99b0(_0x495c1e);});});}exports[_0xbc17('0x16')]=function(_0x4d6fce){var _0x5a7b75=this;return new Promise(function(_0x1f2e35,_0x35cdac){return db[_0xbc17('0x17')][_0xbc17('0x18')]({'raw':_0x4d6fce[_0xbc17('0x19')]?_0x4d6fce[_0xbc17('0x19')][_0xbc17('0x1a')]===undefined?!![]:![]:!![],'where':_0x4d6fce[_0xbc17('0x19')]?_0x4d6fce[_0xbc17('0x19')][_0xbc17('0x1b')]||null:null,'attributes':_0x4d6fce['options']?_0x4d6fce[_0xbc17('0x19')][_0xbc17('0x1c')]||null:null,'limit':_0x4d6fce[_0xbc17('0x19')]?_0x4d6fce['options'][_0xbc17('0x1d')]||null:null,'include':_0x4d6fce[_0xbc17('0x19')]?_0x4d6fce[_0xbc17('0x19')]['include']?_[_0xbc17('0x1e')](_0x4d6fce[_0xbc17('0x19')][_0xbc17('0x1f')],function(_0x286afe){return{'model':db[_0x286afe[_0xbc17('0x20')]],'as':_0x286afe['as'],'attributes':_0x286afe[_0xbc17('0x1c')],'include':_0x286afe[_0xbc17('0x1f')]?_[_0xbc17('0x1e')](_0x286afe[_0xbc17('0x1f')],function(_0x48d36a){return{'model':db[_0x48d36a[_0xbc17('0x20')]],'as':_0x48d36a['as'],'attributes':_0x48d36a['attributes'],'include':_0x48d36a[_0xbc17('0x1f')]?_[_0xbc17('0x1e')](_0x48d36a[_0xbc17('0x1f')],function(_0x29f353){return{'model':db[_0x29f353[_0xbc17('0x20')]],'as':_0x29f353['as'],'attributes':_0x29f353[_0xbc17('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b7564){logger[_0xbc17('0xc')](_0xbc17('0x16'),_0x4d6fce);logger['debug'](_0xbc17('0x16'),_0x4d6fce,JSON['stringify'](_0x4b7564));_0x1f2e35(_0x4b7564);})[_0xbc17('0x15')](function(_0xf78eea){logger['error'](_0xbc17('0x16'),_0xf78eea[_0xbc17('0x13')],_0x4d6fce);_0x35cdac(_0x5a7b75[_0xbc17('0x12')](0x1f4,_0xf78eea[_0xbc17('0x13')]));});});};exports[_0xbc17('0x21')]=function(_0x4fe418){var _0x759b57=this;return new Promise(function(_0x3e26dc,_0x4aa0e5){return db[_0xbc17('0x17')][_0xbc17('0x22')](_0x4fe418[_0xbc17('0x23')],{'raw':_0x4fe418['options']?_0x4fe418[_0xbc17('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xbc17('0xb')](function(_0x3b8a55){logger[_0xbc17('0xc')](_0xbc17('0x21'),_0x4fe418);logger['debug'](_0xbc17('0x21'),_0x4fe418,JSON[_0xbc17('0x11')](_0x3b8a55));_0x3e26dc(_0x3b8a55);})[_0xbc17('0x15')](function(_0x1dd152){logger[_0xbc17('0x12')](_0xbc17('0x21'),_0x1dd152['message'],_0x4fe418);_0x4aa0e5(_0x759b57[_0xbc17('0x12')](0x1f4,_0x1dd152[_0xbc17('0x13')]));});});};exports[_0xbc17('0x24')]=function(_0x14284e){var _0x42ce2f=this;return new Promise(function(_0x2a027c,_0x43118a){return db[_0xbc17('0x17')][_0xbc17('0x25')](_0x14284e[_0xbc17('0x23')],{'raw':_0x14284e[_0xbc17('0x19')]?_0x14284e[_0xbc17('0x19')][_0xbc17('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14284e[_0xbc17('0x19')]?_0x14284e[_0xbc17('0x19')]['where']||null:null,'attributes':_0x14284e[_0xbc17('0x19')]?_0x14284e['options'][_0xbc17('0x1c')]||null:null,'limit':_0x14284e[_0xbc17('0x19')]?_0x14284e[_0xbc17('0x19')][_0xbc17('0x1d')]||null:null})[_0xbc17('0xb')](function(_0x4f57ed){logger[_0xbc17('0xc')](_0xbc17('0x24'),_0x14284e);logger['debug'](_0xbc17('0x24'),_0x14284e,JSON['stringify'](_0x4f57ed));_0x2a027c(_0x4f57ed);})[_0xbc17('0x15')](function(_0x4f01ed){logger[_0xbc17('0x12')](_0xbc17('0x24'),_0x4f01ed['message'],_0x14284e);_0x43118a(_0x42ce2f[_0xbc17('0x12')](0x1f4,_0x4f01ed['message']));});});};
\ No newline at end of file
+var _0xc21f=['info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','attributes','include','map','model','then','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','limit','lodash','util','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0xc21f,0x1b1));var _0xfc21=function(_0x12691c,_0x30ccdc){_0x12691c=_0x12691c-0x0;var _0x3b4a4a=_0xc21f[_0x12691c];return _0x3b4a4a;};'use strict';var _=require(_0xfc21('0x0'));var util=require(_0xfc21('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc21('0x2'))['db'];var utils=require(_0xfc21('0x3'));var logger=require(_0xfc21('0x4'))(_0xfc21('0x5'));var config=require('../../config/environment');var jayson=require(_0xfc21('0x6'));var client=jayson['client'][_0xfc21('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x516adb,_0x1eeec6,_0x63c40d){return new BPromise(function(_0x1cadd6,_0x1359c2){return client[_0xfc21('0x8')](_0x516adb,_0x63c40d)['then'](function(_0x53b72c){logger[_0xfc21('0x9')](_0xfc21('0xa'),_0x1eeec6,_0xfc21('0xb'));logger[_0xfc21('0xc')](_0xfc21('0xd'),_0x1eeec6,_0xfc21('0xb'),JSON[_0xfc21('0xe')](_0x53b72c));if(_0x53b72c[_0xfc21('0xf')]){if(_0x53b72c[_0xfc21('0xf')]['code']===0x1f4){logger['error'](_0xfc21('0xa'),_0x1eeec6,_0x53b72c[_0xfc21('0xf')][_0xfc21('0x10')]);return _0x1359c2(_0x53b72c[_0xfc21('0xf')][_0xfc21('0x10')]);}logger[_0xfc21('0xf')](_0xfc21('0xa'),_0x1eeec6,_0x53b72c[_0xfc21('0xf')][_0xfc21('0x10')]);return _0x1cadd6(_0x53b72c['error']['message']);}else{logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x1eeec6,_0xfc21('0xb'));_0x1cadd6(_0x53b72c[_0xfc21('0x11')][_0xfc21('0x10')]);}})[_0xfc21('0x12')](function(_0x386734){logger[_0xfc21('0xf')]('VoiceCallReport,\x20%s,\x20%s',_0x1eeec6,_0x386734);_0x1359c2(_0x386734);});});}exports[_0xfc21('0x13')]=function(_0x3dab2d){var _0xa06912=this;return new Promise(function(_0x1437d3,_0xd7b431){return db[_0xfc21('0x14')][_0xfc21('0x15')]({'raw':_0x3dab2d['options']?_0x3dab2d[_0xfc21('0x16')][_0xfc21('0x17')]===undefined?!![]:![]:!![],'where':_0x3dab2d[_0xfc21('0x16')]?_0x3dab2d[_0xfc21('0x16')]['where']||null:null,'attributes':_0x3dab2d['options']?_0x3dab2d['options'][_0xfc21('0x18')]||null:null,'limit':_0x3dab2d[_0xfc21('0x16')]?_0x3dab2d['options']['limit']||null:null,'include':_0x3dab2d['options']?_0x3dab2d[_0xfc21('0x16')][_0xfc21('0x19')]?_[_0xfc21('0x1a')](_0x3dab2d['options']['include'],function(_0x3d845f){return{'model':db[_0x3d845f[_0xfc21('0x1b')]],'as':_0x3d845f['as'],'attributes':_0x3d845f['attributes'],'include':_0x3d845f[_0xfc21('0x19')]?_[_0xfc21('0x1a')](_0x3d845f[_0xfc21('0x19')],function(_0x2e4abe){return{'model':db[_0x2e4abe['model']],'as':_0x2e4abe['as'],'attributes':_0x2e4abe[_0xfc21('0x18')],'include':_0x2e4abe[_0xfc21('0x19')]?_[_0xfc21('0x1a')](_0x2e4abe['include'],function(_0x5e0377){return{'model':db[_0x5e0377[_0xfc21('0x1b')]],'as':_0x5e0377['as'],'attributes':_0x5e0377['attributes']};}):[]};}):[]};}):[]:[]})[_0xfc21('0x1c')](function(_0x353975){logger[_0xfc21('0x9')]('GetVoiceCallReport',_0x3dab2d);logger['debug'](_0xfc21('0x13'),_0x3dab2d,JSON['stringify'](_0x353975));_0x1437d3(_0x353975);})[_0xfc21('0x12')](function(_0x2a3c70){logger[_0xfc21('0xf')](_0xfc21('0x13'),_0x2a3c70[_0xfc21('0x10')],_0x3dab2d);_0xd7b431(_0xa06912['error'](0x1f4,_0x2a3c70['message']));});});};exports[_0xfc21('0x1d')]=function(_0x44d944){var _0x572da8=this;return new Promise(function(_0x25cc09,_0x505248){return db[_0xfc21('0x14')][_0xfc21('0x1e')](_0x44d944[_0xfc21('0x1f')],{'raw':_0x44d944[_0xfc21('0x16')]?_0x44d944['options'][_0xfc21('0x17')]===undefined?!![]:![]:!![]})[_0xfc21('0x1c')](function(_0x567f83){logger['info'](_0xfc21('0x1d'),_0x44d944);logger[_0xfc21('0xc')](_0xfc21('0x1d'),_0x44d944,JSON[_0xfc21('0xe')](_0x567f83));_0x25cc09(_0x567f83);})[_0xfc21('0x12')](function(_0x12ef2e){logger[_0xfc21('0xf')](_0xfc21('0x1d'),_0x12ef2e[_0xfc21('0x10')],_0x44d944);_0x505248(_0x572da8[_0xfc21('0xf')](0x1f4,_0x12ef2e[_0xfc21('0x10')]));});});};exports[_0xfc21('0x20')]=function(_0x11c6a6){var _0xbae642=this;return new Promise(function(_0x3fa5a6,_0x18f418){return db[_0xfc21('0x14')]['update'](_0x11c6a6['body'],{'raw':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')]['where']||null:null,'attributes':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')][_0xfc21('0x18')]||null:null,'limit':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')][_0xfc21('0x21')]||null:null})['then'](function(_0x3b9ea6){logger[_0xfc21('0x9')](_0xfc21('0x20'),_0x11c6a6);logger[_0xfc21('0xc')](_0xfc21('0x20'),_0x11c6a6,JSON['stringify'](_0x3b9ea6));_0x3fa5a6(_0x3b9ea6);})[_0xfc21('0x12')](function(_0x36eec9){logger[_0xfc21('0xf')](_0xfc21('0x20'),_0x36eec9[_0xfc21('0x10')],_0x11c6a6);_0x18f418(_0xbae642[_0xfc21('0xf')](0x1f4,_0x36eec9['message']));});});};
\ No newline at end of file
index 37d4dcb..9e5e013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x261d=['../../config/environment','./voiceChanSpy.controller','index','/:id','isAuthenticated','show','create','delete','exports','multer','util','connect-timeout','Router','../../components/interaction/service'];(function(_0xdf26c5,_0x11465d){var _0x34d10e=function(_0x4c70de){while(--_0x4c70de){_0xdf26c5['push'](_0xdf26c5['shift']());}};_0x34d10e(++_0x11465d);}(_0x261d,0x19f));var _0xd261=function(_0x53db91,_0x29a9c0){_0x53db91=_0x53db91-0x0;var _0x5ccf61=_0x261d[_0x53db91];return _0x5ccf61;};'use strict';var multer=require(_0xd261('0x0'));var util=require(_0xd261('0x1'));var path=require('path');var timeout=require(_0xd261('0x2'));var express=require('express');var router=express[_0xd261('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd261('0x4'));var config=require(_0xd261('0x5'));var controller=require(_0xd261('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xd261('0x7')]);router['get'](_0xd261('0x8'),auth[_0xd261('0x9')](),controller[_0xd261('0xa')]);router['post']('/',auth[_0xd261('0x9')](),controller[_0xd261('0xb')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd261('0xc')](_0xd261('0x8'),auth[_0xd261('0x9')](),controller['destroy']);module[_0xd261('0xd')]=router;
\ No newline at end of file
+var _0xdff4=['index','get','/:id','create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated'];(function(_0x5a213a,_0x2b4a23){var _0x3577b3=function(_0x3a4213){while(--_0x3a4213){_0x5a213a['push'](_0x5a213a['shift']());}};_0x3577b3(++_0x2b4a23);}(_0xdff4,0x197));var _0x4dff=function(_0x57059f,_0x56a31a){_0x57059f=_0x57059f-0x0;var _0x137847=_0xdff4[_0x57059f];return _0x137847;};'use strict';var multer=require(_0x4dff('0x0'));var util=require(_0x4dff('0x1'));var path=require(_0x4dff('0x2'));var timeout=require(_0x4dff('0x3'));var express=require(_0x4dff('0x4'));var router=express[_0x4dff('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4dff('0x6'));var interaction=require(_0x4dff('0x7'));var config=require('../../config/environment');var controller=require('./voiceChanSpy.controller');router['get']('/',auth[_0x4dff('0x8')](),controller[_0x4dff('0x9')]);router[_0x4dff('0xa')](_0x4dff('0xb'),auth[_0x4dff('0x8')](),controller['show']);router['post']('/',auth[_0x4dff('0x8')](),controller[_0x4dff('0xc')]);router['put'](_0x4dff('0xb'),auth['isAuthenticated'](),controller[_0x4dff('0xd')]);router[_0x4dff('0xe')](_0x4dff('0xb'),auth['isAuthenticated'](),controller[_0x4dff('0xf')]);module['exports']=router;
\ No newline at end of file
index 8c9c2c9..e7ccdc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07d8=['setDataValue','options','join','split','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x07d8,0x1f4));var _0x807d=function(_0x35b0bf,_0x216f69){_0x35b0bf=_0x35b0bf-0x0;var _0x3c3329=_0x07d8[_0x35b0bf];return _0x3c3329;};'use strict';var Sequelize=require(_0x807d('0x0'));module[_0x807d('0x1')]={'name':{'type':Sequelize[_0x807d('0x2')]},'prefix':{'type':Sequelize[_0x807d('0x2')],'unique':_0x807d('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x807d('0x2')],'set':function(_0x3737dc){this[_0x807d('0x4')](_0x807d('0x5'),_0x3737dc?_0x3737dc[_0x807d('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x807d('0x5'))?this['getDataValue'](_0x807d('0x5'))[_0x807d('0x7')](''):[];}},'auth':{'type':Sequelize[_0x807d('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x807d('0x2')]},'record':{'type':Sequelize[_0x807d('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa8f3=['exports','STRING','name','setDataValue','options','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x5d61b4,_0x4f7b91){var _0x183fc5=function(_0x5ecf92){while(--_0x5ecf92){_0x5d61b4['push'](_0x5d61b4['shift']());}};_0x183fc5(++_0x4f7b91);}(_0xa8f3,0x171));var _0x3a8f=function(_0x2fd394,_0x3abd2c){_0x2fd394=_0x2fd394-0x0;var _0x5bf508=_0xa8f3[_0x2fd394];return _0x5bf508;};'use strict';var Sequelize=require(_0x3a8f('0x0'));module[_0x3a8f('0x1')]={'name':{'type':Sequelize[_0x3a8f('0x2')]},'prefix':{'type':Sequelize[_0x3a8f('0x2')],'unique':_0x3a8f('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x3a8f('0x2')],'set':function(_0x1f0b52){this[_0x3a8f('0x4')](_0x3a8f('0x5'),_0x1f0b52?_0x1f0b52[_0x3a8f('0x6')](''):[]);},'get':function(){return this[_0x3a8f('0x7')](_0x3a8f('0x5'))?this[_0x3a8f('0x7')](_0x3a8f('0x5'))[_0x3a8f('0x8')](''):[];}},'auth':{'type':Sequelize[_0x3a8f('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0x3a8f('0x2')]},'record':{'type':Sequelize[_0x3a8f('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x3a8f('0x2')]},'description':{'type':Sequelize[_0x3a8f('0x2')]}};
\ No newline at end of file
index bdc6914..f6059ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec56=['eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','VoiceChanSpy','include','findAll','rows','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0xec56,0x1bd));var _0x6ec5=function(_0x4c6230,_0x5b4e2a){_0x4c6230=_0x4c6230-0x0;var _0x3a0d13=_0xec56[_0x4c6230];return _0x3a0d13;};'use strict';var emlformat=require(_0x6ec5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6ec5('0x1'));var rp=require(_0x6ec5('0x2'));var moment=require(_0x6ec5('0x3'));var BPromise=require(_0x6ec5('0x4'));var Mustache=require(_0x6ec5('0x5'));var util=require(_0x6ec5('0x6'));var path=require(_0x6ec5('0x7'));var sox=require(_0x6ec5('0x8'));var csv=require(_0x6ec5('0x9'));var ejs=require(_0x6ec5('0xa'));var fs=require('fs');var fs_extra=require(_0x6ec5('0xb'));var _=require(_0x6ec5('0xc'));var squel=require(_0x6ec5('0xd'));var crypto=require(_0x6ec5('0xe'));var jsforce=require(_0x6ec5('0xf'));var deskjs=require(_0x6ec5('0x10'));var toCsv=require(_0x6ec5('0x9'));var querystring=require(_0x6ec5('0x11'));var Papa=require(_0x6ec5('0x12'));var Redis=require('ioredis');var authService=require(_0x6ec5('0x13'));var qs=require(_0x6ec5('0x14'));var as=require(_0x6ec5('0x15'));var hardwareService=require(_0x6ec5('0x16'));var logger=require(_0x6ec5('0x17'))(_0x6ec5('0x18'));var utils=require(_0x6ec5('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x6ec5('0x1a'));var db=require(_0x6ec5('0x1b'))['db'];function respondWithStatusCode(_0x2b1f61,_0xb04ab6){_0xb04ab6=_0xb04ab6||0xcc;return function(_0x135aaf){if(_0x135aaf){return _0x2b1f61[_0x6ec5('0x1c')](_0xb04ab6);}return _0x2b1f61[_0x6ec5('0x1d')](_0xb04ab6)[_0x6ec5('0x1e')]();};}function respondWithResult(_0x5166ad,_0x3ed07a){_0x3ed07a=_0x3ed07a||0xc8;return function(_0x4d1510){if(_0x4d1510){return _0x5166ad[_0x6ec5('0x1d')](_0x3ed07a)[_0x6ec5('0x1f')](_0x4d1510);}};}function respondWithFilteredResult(_0x4a4e3c,_0x9fc0e7){return function(_0xdc0b10){if(_0xdc0b10){var _0x4d09fe=typeof _0x9fc0e7[_0x6ec5('0x20')]===_0x6ec5('0x21')&&typeof _0x9fc0e7[_0x6ec5('0x22')]===_0x6ec5('0x21');var _0x23b3e3=_0xdc0b10[_0x6ec5('0x23')];var _0x1dbee9=_0x4d09fe?0x0:_0x9fc0e7[_0x6ec5('0x20')];var _0x2608c0=_0x4d09fe?_0xdc0b10[_0x6ec5('0x23')]:_0x9fc0e7[_0x6ec5('0x20')]+_0x9fc0e7[_0x6ec5('0x22')];var _0x437f0f;if(_0x2608c0>=_0x23b3e3){_0x2608c0=_0x23b3e3;_0x437f0f=0xc8;}else{_0x437f0f=0xce;}_0x4a4e3c[_0x6ec5('0x1d')](_0x437f0f);return _0x4a4e3c[_0x6ec5('0x24')](_0x6ec5('0x25'),_0x1dbee9+'-'+_0x2608c0+'/'+_0x23b3e3)[_0x6ec5('0x1f')](_0xdc0b10);}return null;};}function patchUpdates(_0x4abd5d){return function(_0x272532){try{jsonpatch[_0x6ec5('0x26')](_0x272532,_0x4abd5d,!![]);}catch(_0xd045b){return BPromise[_0x6ec5('0x27')](_0xd045b);}return _0x272532[_0x6ec5('0x28')]();};}function saveUpdates(_0x38a821,_0x18243f){return function(_0x48733b){if(_0x48733b){return _0x48733b[_0x6ec5('0x29')](_0x38a821)[_0x6ec5('0x2a')](function(_0x358d18){return _0x358d18;});}return null;};}function removeEntity(_0x1560c6,_0x57060c){return function(_0x27f631){if(_0x27f631){return _0x27f631[_0x6ec5('0x2b')]()['then'](function(){var _0x2dc0a7=_0x27f631[_0x6ec5('0x2c')]({'plain':!![]});var _0xb4d269='ChanSpies';return db[_0x6ec5('0x2d')][_0x6ec5('0x2b')]({'where':{'type':_0xb4d269,'resourceId':_0x2dc0a7['id']}})[_0x6ec5('0x2a')](function(){return _0x27f631;});})[_0x6ec5('0x2a')](function(){_0x1560c6[_0x6ec5('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x171e2a,_0x267a30){return function(_0x4a9860){if(!_0x4a9860){_0x171e2a[_0x6ec5('0x1c')](0x194);}return _0x4a9860;};}function handleError(_0x3f5ee0,_0x5c8c7d){_0x5c8c7d=_0x5c8c7d||0x1f4;return function(_0x3d36cb){logger[_0x6ec5('0x2e')](_0x3d36cb[_0x6ec5('0x2f')]);if(_0x3d36cb[_0x6ec5('0x30')]){delete _0x3d36cb[_0x6ec5('0x30')];}_0x3f5ee0['status'](_0x5c8c7d)[_0x6ec5('0x31')](_0x3d36cb);};}exports[_0x6ec5('0x32')]=function(_0x24aff9,_0x174164){var _0x3e6d33={},_0x22c3d3={},_0x394132={'count':0x0,'rows':[]};var _0x59a6de=_[_0x6ec5('0x33')](db['VoiceChanSpy'][_0x6ec5('0x34')],function(_0x5c6517){return{'name':_0x5c6517[_0x6ec5('0x35')],'type':_0x5c6517[_0x6ec5('0x36')]['key']};});_0x22c3d3['model']=_[_0x6ec5('0x33')](_0x59a6de,_0x6ec5('0x30'));_0x22c3d3['query']=_[_0x6ec5('0x37')](_0x24aff9[_0x6ec5('0x38')]);_0x22c3d3['filters']=_[_0x6ec5('0x39')](_0x22c3d3[_0x6ec5('0x3a')],_0x22c3d3[_0x6ec5('0x38')]);_0x3e6d33[_0x6ec5('0x3b')]=_[_0x6ec5('0x39')](_0x22c3d3[_0x6ec5('0x3a')],qs[_0x6ec5('0x3c')](_0x24aff9[_0x6ec5('0x38')]['fields']));_0x3e6d33[_0x6ec5('0x3b')]=_0x3e6d33['attributes'][_0x6ec5('0x3d')]?_0x3e6d33[_0x6ec5('0x3b')]:_0x22c3d3[_0x6ec5('0x3a')];if(!_0x24aff9[_0x6ec5('0x38')][_0x6ec5('0x3e')](_0x6ec5('0x3f'))){_0x3e6d33[_0x6ec5('0x22')]=qs[_0x6ec5('0x22')](_0x24aff9[_0x6ec5('0x38')][_0x6ec5('0x22')]);_0x3e6d33[_0x6ec5('0x20')]=qs['offset'](_0x24aff9['query'][_0x6ec5('0x20')]);}_0x3e6d33['order']=qs[_0x6ec5('0x40')](_0x24aff9[_0x6ec5('0x38')][_0x6ec5('0x40')]);_0x3e6d33[_0x6ec5('0x41')]=qs[_0x6ec5('0x42')](_[_0x6ec5('0x43')](_0x24aff9[_0x6ec5('0x38')],_0x22c3d3['filters']),_0x59a6de);if(_0x24aff9[_0x6ec5('0x38')][_0x6ec5('0x44')]){_0x3e6d33[_0x6ec5('0x41')]=_[_0x6ec5('0x45')](_0x3e6d33[_0x6ec5('0x41')],{'$or':_[_0x6ec5('0x33')](_0x59a6de,function(_0x74e78b){if(_0x74e78b[_0x6ec5('0x36')]!==_0x6ec5('0x46')){var _0x53dcd8={};_0x53dcd8[_0x74e78b[_0x6ec5('0x30')]]={'$like':'%'+_0x24aff9['query'][_0x6ec5('0x44')]+'%'};return _0x53dcd8;}})});}_0x3e6d33=_['merge']({},_0x3e6d33,_0x24aff9[_0x6ec5('0x47')]);var _0x45de3c={'where':_0x3e6d33['where']};return db[_0x6ec5('0x48')][_0x6ec5('0x23')](_0x45de3c)[_0x6ec5('0x2a')](function(_0x48c019){_0x394132[_0x6ec5('0x23')]=_0x48c019;if(_0x24aff9[_0x6ec5('0x38')]['includeAll']){_0x3e6d33[_0x6ec5('0x49')]=[{'all':!![]}];}return db[_0x6ec5('0x48')][_0x6ec5('0x4a')](_0x3e6d33);})[_0x6ec5('0x2a')](function(_0x43d858){_0x394132[_0x6ec5('0x4b')]=_0x43d858;return _0x394132;})[_0x6ec5('0x2a')](respondWithFilteredResult(_0x174164,_0x3e6d33))[_0x6ec5('0x4c')](handleError(_0x174164,null));};exports[_0x6ec5('0x4d')]=function(_0x5a7b9c,_0x96340b){var _0x4ee5f5={'raw':![],'where':{'id':_0x5a7b9c[_0x6ec5('0x4e')]['id']}},_0x17cfed={};_0x17cfed[_0x6ec5('0x3a')]=_[_0x6ec5('0x37')](db['VoiceChanSpy'][_0x6ec5('0x34')]);_0x17cfed[_0x6ec5('0x38')]=_['keys'](_0x5a7b9c[_0x6ec5('0x38')]);_0x17cfed['filters']=_[_0x6ec5('0x39')](_0x17cfed[_0x6ec5('0x3a')],_0x17cfed[_0x6ec5('0x38')]);_0x4ee5f5[_0x6ec5('0x3b')]=_['intersection'](_0x17cfed['model'],qs[_0x6ec5('0x3c')](_0x5a7b9c['query'][_0x6ec5('0x3c')]));_0x4ee5f5[_0x6ec5('0x3b')]=_0x4ee5f5[_0x6ec5('0x3b')][_0x6ec5('0x3d')]?_0x4ee5f5[_0x6ec5('0x3b')]:_0x17cfed['model'];if(_0x5a7b9c['query'][_0x6ec5('0x4f')]){_0x4ee5f5[_0x6ec5('0x49')]=[{'all':!![]}];}_0x4ee5f5=_[_0x6ec5('0x45')]({},_0x4ee5f5,_0x5a7b9c[_0x6ec5('0x47')]);return db[_0x6ec5('0x48')][_0x6ec5('0x50')](_0x4ee5f5)[_0x6ec5('0x2a')](handleEntityNotFound(_0x96340b,null))[_0x6ec5('0x2a')](respondWithResult(_0x96340b,null))[_0x6ec5('0x4c')](handleError(_0x96340b,null));};exports[_0x6ec5('0x51')]=function(_0xd265c,_0x1c5e2f){return db[_0x6ec5('0x48')][_0x6ec5('0x51')](_0xd265c['body'],{})[_0x6ec5('0x2a')](function(_0x51709d){var _0x40b9cc=_0xd265c[_0x6ec5('0x52')]['get']({'plain':!![]});if(!_0x40b9cc)throw new Error(_0x6ec5('0x53'));if(_0x40b9cc[_0x6ec5('0x54')]==='user'){var _0x23a64d=_0x51709d[_0x6ec5('0x2c')]({'plain':!![]});var _0x486552='ChanSpies';return db[_0x6ec5('0x55')]['find']({'where':{'name':_0x486552,'userProfileId':_0x40b9cc['userProfileId']},'raw':!![]})[_0x6ec5('0x2a')](function(_0x101966){if(_0x101966&&_0x101966[_0x6ec5('0x56')]===0x0){return db[_0x6ec5('0x2d')]['create']({'name':_0x23a64d[_0x6ec5('0x30')],'resourceId':_0x23a64d['id'],'type':_0x101966[_0x6ec5('0x30')],'sectionId':_0x101966['id']},{})[_0x6ec5('0x2a')](function(){return _0x51709d;});}else{return _0x51709d;}})[_0x6ec5('0x4c')](function(_0x9bde51){logger[_0x6ec5('0x2e')](_0x6ec5('0x57'),_0x9bde51);throw _0x9bde51;});}return _0x51709d;})[_0x6ec5('0x2a')](respondWithResult(_0x1c5e2f,0xc9))[_0x6ec5('0x4c')](handleError(_0x1c5e2f,null));};exports[_0x6ec5('0x29')]=function(_0x29317f,_0x4370f2){if(_0x29317f[_0x6ec5('0x58')]['id']){delete _0x29317f['body']['id'];}return db[_0x6ec5('0x48')][_0x6ec5('0x50')]({'where':{'id':_0x29317f['params']['id']}})[_0x6ec5('0x2a')](handleEntityNotFound(_0x4370f2,null))[_0x6ec5('0x2a')](saveUpdates(_0x29317f[_0x6ec5('0x58')],null))[_0x6ec5('0x2a')](respondWithResult(_0x4370f2,null))[_0x6ec5('0x4c')](handleError(_0x4370f2,null));};exports['destroy']=function(_0x5f3d3f,_0x282cbc){return db['VoiceChanSpy'][_0x6ec5('0x50')]({'where':{'id':_0x5f3d3f[_0x6ec5('0x4e')]['id']}})[_0x6ec5('0x2a')](handleEntityNotFound(_0x282cbc,null))[_0x6ec5('0x2a')](removeEntity(_0x282cbc,null))[_0x6ec5('0x4c')](handleError(_0x282cbc,null));};
\ No newline at end of file
+var _0x3189=['include','findAll','rows','catch','params','VoiceChanSpy','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','count','set','Content-Range','json','apply','save','update','destroy','then','get','ChanSpies','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll'];(function(_0x3c2155,_0x4a0493){var _0x37e699=function(_0x326bef){while(--_0x326bef){_0x3c2155['push'](_0x3c2155['shift']());}};_0x37e699(++_0x4a0493);}(_0x3189,0xae));var _0x9318=function(_0x9bc089,_0x35e935){_0x9bc089=_0x9bc089-0x0;var _0x301012=_0x3189[_0x9bc089];return _0x301012;};'use strict';var emlformat=require(_0x9318('0x0'));var rimraf=require(_0x9318('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9318('0x2'));var rp=require(_0x9318('0x3'));var moment=require(_0x9318('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9318('0x5'));var util=require('util');var path=require('path');var sox=require(_0x9318('0x6'));var csv=require(_0x9318('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9318('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9318('0x9'));var jsforce=require(_0x9318('0xa'));var deskjs=require(_0x9318('0xb'));var toCsv=require('to-csv');var querystring=require(_0x9318('0xc'));var Papa=require(_0x9318('0xd'));var Redis=require(_0x9318('0xe'));var authService=require(_0x9318('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9318('0x10'));var logger=require('../../config/logger')(_0x9318('0x11'));var utils=require(_0x9318('0x12'));var config=require(_0x9318('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9318('0x14'))['db'];function respondWithStatusCode(_0x5b63fe,_0x5133a4){_0x5133a4=_0x5133a4||0xcc;return function(_0x2ac258){if(_0x2ac258){return _0x5b63fe['sendStatus'](_0x5133a4);}return _0x5b63fe[_0x9318('0x15')](_0x5133a4)[_0x9318('0x16')]();};}function respondWithResult(_0x571d73,_0x258b56){_0x258b56=_0x258b56||0xc8;return function(_0xfe145c){if(_0xfe145c){return _0x571d73[_0x9318('0x15')](_0x258b56)['json'](_0xfe145c);}};}function respondWithFilteredResult(_0x4a5d09,_0x10d4f0){return function(_0x11b380){if(_0x11b380){var _0x4ee574=typeof _0x10d4f0[_0x9318('0x17')]===_0x9318('0x18')&&typeof _0x10d4f0['limit']===_0x9318('0x18');var _0x26c0d8=_0x11b380[_0x9318('0x19')];var _0xda93f2=_0x4ee574?0x0:_0x10d4f0[_0x9318('0x17')];var _0x19c253=_0x4ee574?_0x11b380[_0x9318('0x19')]:_0x10d4f0[_0x9318('0x17')]+_0x10d4f0['limit'];var _0x367300;if(_0x19c253>=_0x26c0d8){_0x19c253=_0x26c0d8;_0x367300=0xc8;}else{_0x367300=0xce;}_0x4a5d09[_0x9318('0x15')](_0x367300);return _0x4a5d09[_0x9318('0x1a')](_0x9318('0x1b'),_0xda93f2+'-'+_0x19c253+'/'+_0x26c0d8)[_0x9318('0x1c')](_0x11b380);}return null;};}function patchUpdates(_0xc122e9){return function(_0x59a34f){try{jsonpatch[_0x9318('0x1d')](_0x59a34f,_0xc122e9,!![]);}catch(_0x5219e4){return BPromise['reject'](_0x5219e4);}return _0x59a34f[_0x9318('0x1e')]();};}function saveUpdates(_0x317f9d,_0xa45304){return function(_0x2b3d31){if(_0x2b3d31){return _0x2b3d31[_0x9318('0x1f')](_0x317f9d)['then'](function(_0x46c7f2){return _0x46c7f2;});}return null;};}function removeEntity(_0x3d6205,_0x451694){return function(_0x33502a){if(_0x33502a){return _0x33502a[_0x9318('0x20')]()[_0x9318('0x21')](function(){var _0x2686e8=_0x33502a[_0x9318('0x22')]({'plain':!![]});var _0x174e63=_0x9318('0x23');return db[_0x9318('0x24')][_0x9318('0x20')]({'where':{'type':_0x174e63,'resourceId':_0x2686e8['id']}})[_0x9318('0x21')](function(){return _0x33502a;});})[_0x9318('0x21')](function(){_0x3d6205[_0x9318('0x15')](0xcc)[_0x9318('0x16')]();});}};}function handleEntityNotFound(_0x4c46d8,_0x33b261){return function(_0x1138ac){if(!_0x1138ac){_0x4c46d8['sendStatus'](0x194);}return _0x1138ac;};}function handleError(_0x3690a2,_0x3b2eb9){_0x3b2eb9=_0x3b2eb9||0x1f4;return function(_0x177833){logger[_0x9318('0x25')](_0x177833[_0x9318('0x26')]);if(_0x177833[_0x9318('0x27')]){delete _0x177833[_0x9318('0x27')];}_0x3690a2['status'](_0x3b2eb9)[_0x9318('0x28')](_0x177833);};}exports[_0x9318('0x29')]=function(_0x5a8af5,_0x3363ab){var _0x4c4a6f={},_0x27e821={},_0x22cdd3={'count':0x0,'rows':[]};var _0x5b9cfc=_[_0x9318('0x2a')](db['VoiceChanSpy'][_0x9318('0x2b')],function(_0x12f114){return{'name':_0x12f114[_0x9318('0x2c')],'type':_0x12f114['type'][_0x9318('0x2d')]};});_0x27e821[_0x9318('0x2e')]=_[_0x9318('0x2a')](_0x5b9cfc,_0x9318('0x27'));_0x27e821['query']=_['keys'](_0x5a8af5[_0x9318('0x2f')]);_0x27e821['filters']=_[_0x9318('0x30')](_0x27e821[_0x9318('0x2e')],_0x27e821['query']);_0x4c4a6f[_0x9318('0x31')]=_[_0x9318('0x30')](_0x27e821['model'],qs[_0x9318('0x32')](_0x5a8af5[_0x9318('0x2f')]['fields']));_0x4c4a6f[_0x9318('0x31')]=_0x4c4a6f[_0x9318('0x31')][_0x9318('0x33')]?_0x4c4a6f[_0x9318('0x31')]:_0x27e821[_0x9318('0x2e')];if(!_0x5a8af5[_0x9318('0x2f')][_0x9318('0x34')](_0x9318('0x35'))){_0x4c4a6f[_0x9318('0x36')]=qs['limit'](_0x5a8af5['query'][_0x9318('0x36')]);_0x4c4a6f[_0x9318('0x17')]=qs[_0x9318('0x17')](_0x5a8af5[_0x9318('0x2f')][_0x9318('0x17')]);}_0x4c4a6f[_0x9318('0x37')]=qs[_0x9318('0x38')](_0x5a8af5[_0x9318('0x2f')][_0x9318('0x38')]);_0x4c4a6f[_0x9318('0x39')]=qs['filters'](_['pick'](_0x5a8af5[_0x9318('0x2f')],_0x27e821['filters']),_0x5b9cfc);if(_0x5a8af5['query'][_0x9318('0x3a')]){_0x4c4a6f[_0x9318('0x39')]=_[_0x9318('0x3b')](_0x4c4a6f[_0x9318('0x39')],{'$or':_[_0x9318('0x2a')](_0x5b9cfc,function(_0x38386e){if(_0x38386e['type']!==_0x9318('0x3c')){var _0x4f8f18={};_0x4f8f18[_0x38386e[_0x9318('0x27')]]={'$like':'%'+_0x5a8af5[_0x9318('0x2f')]['filter']+'%'};return _0x4f8f18;}})});}_0x4c4a6f=_[_0x9318('0x3b')]({},_0x4c4a6f,_0x5a8af5[_0x9318('0x3d')]);var _0x37a8d2={'where':_0x4c4a6f[_0x9318('0x39')]};return db['VoiceChanSpy']['count'](_0x37a8d2)[_0x9318('0x21')](function(_0x45ef71){_0x22cdd3['count']=_0x45ef71;if(_0x5a8af5[_0x9318('0x2f')][_0x9318('0x3e')]){_0x4c4a6f[_0x9318('0x3f')]=[{'all':!![]}];}return db['VoiceChanSpy'][_0x9318('0x40')](_0x4c4a6f);})[_0x9318('0x21')](function(_0x28d505){_0x22cdd3[_0x9318('0x41')]=_0x28d505;return _0x22cdd3;})['then'](respondWithFilteredResult(_0x3363ab,_0x4c4a6f))[_0x9318('0x42')](handleError(_0x3363ab,null));};exports['show']=function(_0x3af694,_0xc7581d){var _0x2b6350={'raw':![],'where':{'id':_0x3af694[_0x9318('0x43')]['id']}},_0x31520e={};_0x31520e[_0x9318('0x2e')]=_['keys'](db[_0x9318('0x44')]['rawAttributes']);_0x31520e[_0x9318('0x2f')]=_[_0x9318('0x45')](_0x3af694['query']);_0x31520e['filters']=_['intersection'](_0x31520e[_0x9318('0x2e')],_0x31520e[_0x9318('0x2f')]);_0x2b6350[_0x9318('0x31')]=_[_0x9318('0x30')](_0x31520e[_0x9318('0x2e')],qs[_0x9318('0x32')](_0x3af694[_0x9318('0x2f')][_0x9318('0x32')]));_0x2b6350[_0x9318('0x31')]=_0x2b6350[_0x9318('0x31')]['length']?_0x2b6350[_0x9318('0x31')]:_0x31520e[_0x9318('0x2e')];if(_0x3af694[_0x9318('0x2f')][_0x9318('0x3e')]){_0x2b6350[_0x9318('0x3f')]=[{'all':!![]}];}_0x2b6350=_[_0x9318('0x3b')]({},_0x2b6350,_0x3af694[_0x9318('0x3d')]);return db[_0x9318('0x44')]['find'](_0x2b6350)[_0x9318('0x21')](handleEntityNotFound(_0xc7581d,null))[_0x9318('0x21')](respondWithResult(_0xc7581d,null))[_0x9318('0x42')](handleError(_0xc7581d,null));};exports['create']=function(_0x47b00b,_0x4ce675){return db[_0x9318('0x44')][_0x9318('0x46')](_0x47b00b[_0x9318('0x47')],{})[_0x9318('0x21')](function(_0x317903){var _0x1ee3c8=_0x47b00b[_0x9318('0x48')]['get']({'plain':!![]});if(!_0x1ee3c8)throw new Error(_0x9318('0x49'));if(_0x1ee3c8[_0x9318('0x4a')]==='user'){var _0x5a7d2a=_0x317903[_0x9318('0x22')]({'plain':!![]});var _0x155e69=_0x9318('0x23');return db[_0x9318('0x4b')][_0x9318('0x4c')]({'where':{'name':_0x155e69,'userProfileId':_0x1ee3c8[_0x9318('0x4d')]},'raw':!![]})[_0x9318('0x21')](function(_0x39e21e){if(_0x39e21e&&_0x39e21e['autoAssociation']===0x0){return db[_0x9318('0x24')][_0x9318('0x46')]({'name':_0x5a7d2a[_0x9318('0x27')],'resourceId':_0x5a7d2a['id'],'type':_0x39e21e[_0x9318('0x27')],'sectionId':_0x39e21e['id']},{})[_0x9318('0x21')](function(){return _0x317903;});}else{return _0x317903;}})[_0x9318('0x42')](function(_0x2c41a0){logger[_0x9318('0x25')](_0x9318('0x4e'),_0x2c41a0);throw _0x2c41a0;});}return _0x317903;})[_0x9318('0x21')](respondWithResult(_0x4ce675,0xc9))[_0x9318('0x42')](handleError(_0x4ce675,null));};exports[_0x9318('0x1f')]=function(_0x359871,_0x260c87){if(_0x359871[_0x9318('0x47')]['id']){delete _0x359871['body']['id'];}return db['VoiceChanSpy'][_0x9318('0x4c')]({'where':{'id':_0x359871[_0x9318('0x43')]['id']}})['then'](handleEntityNotFound(_0x260c87,null))[_0x9318('0x21')](saveUpdates(_0x359871[_0x9318('0x47')],null))[_0x9318('0x21')](respondWithResult(_0x260c87,null))[_0x9318('0x42')](handleError(_0x260c87,null));};exports[_0x9318('0x20')]=function(_0xbfd12c,_0x5b7a6f){return db['VoiceChanSpy'][_0x9318('0x4c')]({'where':{'id':_0xbfd12c[_0x9318('0x43')]['id']}})[_0x9318('0x21')](handleEntityNotFound(_0x5b7a6f,null))['then'](removeEntity(_0x5b7a6f,null))['catch'](handleError(_0x5b7a6f,null));};
\ No newline at end of file
index ab8e5c2..c67df6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9002=['bulkCreate','destroy','bluebird','context','%s%s','prefix','system','push','merge','format','chanspy','record','MixMonitor','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','length','concat','internal','User','agent','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','VoiceExtension'];(function(_0x111c00,_0x5df487){var _0xb1af07=function(_0x1e82f4){while(--_0x1e82f4){_0x111c00['push'](_0x111c00['shift']());}};_0xb1af07(++_0x5df487);}(_0x9002,0x160));var _0x2900=function(_0x3482e0,_0x5b65bb){_0x3482e0=_0x3482e0-0x0;var _0x4ab6b9=_0x9002[_0x3482e0];return _0x4ab6b9;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0x2900('0x0'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x2e582c,_0x114051,_0x69ba85){var _0x18cec2=0x1;var _0x12fce3=[];var _0x4e3b72={'context':_0x114051[_0x2900('0x1')]||'from-sip','exten':util['format'](_0x2900('0x2'),_0x2e582c[_0x2900('0x3')],_0x69ba85),'type':_0x2900('0x4'),'isApp':![],'ChanSpyId':_0x2e582c['id'],'UserId':_0x114051['id']};_0x12fce3[_0x2900('0x5')](_[_0x2900('0x6')]({'app':'Set','appdata':util[_0x2900('0x7')]('CDR(type)=%s',_0x2900('0x8')),'priority':_0x18cec2++},_0x4e3b72));if(_0x2e582c[_0x2900('0x9')]){_0x12fce3[_0x2900('0x5')](_[_0x2900('0x6')]({'app':_0x2900('0xa'),'appdata':util[_0x2900('0x7')]('${UNIQUEID}.%s,a',_0x2e582c[_0x2900('0xb')]),'priority':_0x18cec2++},_0x4e3b72));}if(_0x2e582c[_0x2900('0xc')]){_0x12fce3[_0x2900('0x5')](_[_0x2900('0x6')]({'app':'Authenticate','appdata':_0x2e582c[_0x2900('0xd')],'priority':_0x18cec2++},_0x4e3b72));}_0x12fce3[_0x2900('0x5')](_[_0x2900('0x6')]({'app':_0x2900('0xe'),'appdata':util[_0x2900('0x7')](_0x2900('0xf'),_0x114051[_0x2900('0x10')],_0x2e582c[_0x2900('0x11')]?_0x2e582c[_0x2900('0x11')][_0x2900('0x12')](''):''),'priority':_0x18cec2++},_0x4e3b72));if(_0x2e582c['record']){_0x12fce3[_0x2900('0x5')](_[_0x2900('0x6')]({'app':_0x2900('0x13'),'priority':_0x18cec2++},_0x4e3b72));}return _0x12fce3;};var getChanSpyApplications=function(_0x4250d9,_0x598fe7){var _0xcaaa5f=[];for(var _0x4eaec9=0x0,_0x5313e9=0x1;_0x4eaec9<_0x598fe7[_0x2900('0x14')];_0x4eaec9++,_0x5313e9=0x1){_0xcaaa5f=_0xcaaa5f[_0x2900('0x15')](getUserApplications(_0x4250d9,_0x598fe7[_0x4eaec9],_0x598fe7[_0x4eaec9][_0x2900('0x16')]));if(_0x598fe7[_0x4eaec9]['internal']!=_0x598fe7[_0x4eaec9][_0x2900('0x10')]){_0xcaaa5f=_0xcaaa5f[_0x2900('0x15')](getUserApplications(_0x4250d9,_0x598fe7[_0x4eaec9],_0x598fe7[_0x4eaec9][_0x2900('0x10')]));}}return _0xcaaa5f;};var getChanSpyPromise=function(_0x37c0a1,_0x410ea7){return new BPromise(function(_0x250af0,_0x3d2350){return _0x37c0a1[_0x2900('0x17')]['findAll']({'attributes':['id',_0x2900('0x10'),_0x2900('0x16')],'where':{'role':_0x2900('0x18'),'chanspy':!![]},'raw':!![]})['then'](function(_0x5a400e){if(_0x5a400e){return _0x250af0(getChanSpyApplications(_0x410ea7,_0x5a400e));}return _0x250af0([]);})[_0x2900('0x19')](function(_0x3b5e4b){_0x3d2350(_0x3b5e4b);});});};module[_0x2900('0x1a')]=function(_0x2aaf40,_0x54f43b){var _0x1e51f2=_0x2aaf40[_0x2900('0x1b')];return _0x2aaf40[_0x2900('0x1c')](_0x2900('0x1d'),attributes,{'tableName':_0x2900('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x8cb4f6,_0x534bff,_0x53b6be){return getChanSpyPromise(_0x1e51f2,_0x8cb4f6)[_0x2900('0x1f')](function(_0x1536fa){if(_0x1536fa&&_0x1536fa[_0x2900('0x14')]){return _0x1e51f2[_0x2900('0x20')][_0x2900('0x21')](_0x1536fa);}})['then'](function(){_0x53b6be();})[_0x2900('0x19')](function(_0x3f2c0f){_0x53b6be(_0x3f2c0f);});},'afterUpdate':function(_0x37e26d,_0x5d6251,_0x17ff9c){return _0x1e51f2[_0x2900('0x20')][_0x2900('0x22')]({'where':{'ChanSpyId':_0x37e26d['id']}})[_0x2900('0x1f')](function(){return getChanSpyPromise(_0x1e51f2,_0x37e26d);})[_0x2900('0x1f')](function(_0x4347af){if(_0x4347af&&_0x4347af[_0x2900('0x14')]){return _0x1e51f2['VoiceExtension'][_0x2900('0x21')](_0x4347af);}})[_0x2900('0x1f')](function(){_0x17ff9c();})[_0x2900('0x19')](function(_0x41e37f){_0x17ff9c(_0x41e37f);});},'afterDestroy':function(_0x102049,_0xb545d4,_0x500c56){return _0x1e51f2[_0x2900('0x20')][_0x2900('0x22')]({'where':{'ChanSpyId':_0x102049['id']}})[_0x2900('0x1f')](function(){_0x500c56();})[_0x2900('0x19')](function(_0x19c979){_0x500c56(_0x19c979);});}}});};
\ No newline at end of file
+var _0x3e51=['prefix','push','Set','format','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','SIP/%s,%s','name','options','join','StopMixMonitor','length','internal','concat','User','findAll','agent','then','exports','models','define','voice_chanspy','VoiceExtension','bulkCreate','destroy','catch','lodash','util','bluebird','./voiceChanSpy.attributes','from-sip','%s%s'];(function(_0x4067ac,_0x363603){var _0x53d74d=function(_0x492ad4){while(--_0x492ad4){_0x4067ac['push'](_0x4067ac['shift']());}};_0x53d74d(++_0x363603);}(_0x3e51,0x132));var _0x13e5=function(_0x3936cc,_0x976f06){_0x3936cc=_0x3936cc-0x0;var _0x1abf00=_0x3e51[_0x3936cc];return _0x1abf00;};'use strict';var _=require(_0x13e5('0x0'));var util=require(_0x13e5('0x1'));var BPromise=require(_0x13e5('0x2'));var attributes=require(_0x13e5('0x3'));var getUserApplications=function(_0x18d6eb,_0x1c0996,_0x4bba35){var _0x4497d3=0x1;var _0x4b534a=[];var _0x8b4088={'context':_0x1c0996['context']||_0x13e5('0x4'),'exten':util['format'](_0x13e5('0x5'),_0x18d6eb[_0x13e5('0x6')],_0x4bba35),'type':'system','isApp':![],'ChanSpyId':_0x18d6eb['id'],'UserId':_0x1c0996['id']};_0x4b534a[_0x13e5('0x7')](_['merge']({'app':_0x13e5('0x8'),'appdata':util[_0x13e5('0x9')](_0x13e5('0xa'),_0x13e5('0xb')),'priority':_0x4497d3++},_0x8b4088));if(_0x18d6eb[_0x13e5('0xc')]){_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':_0x13e5('0xe'),'appdata':util[_0x13e5('0x9')](_0x13e5('0xf'),_0x18d6eb[_0x13e5('0x10')]),'priority':_0x4497d3++},_0x8b4088));}if(_0x18d6eb[_0x13e5('0x11')]){_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':_0x13e5('0x12'),'appdata':_0x18d6eb['password'],'priority':_0x4497d3++},_0x8b4088));}_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':'ChanSpy','appdata':util['format'](_0x13e5('0x13'),_0x1c0996[_0x13e5('0x14')],_0x18d6eb[_0x13e5('0x15')]?_0x18d6eb[_0x13e5('0x15')][_0x13e5('0x16')](''):''),'priority':_0x4497d3++},_0x8b4088));if(_0x18d6eb[_0x13e5('0xc')]){_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':_0x13e5('0x17'),'priority':_0x4497d3++},_0x8b4088));}return _0x4b534a;};var getChanSpyApplications=function(_0x5a709c,_0x677e35){var _0x161861=[];for(var _0x28cb03=0x0,_0x18b5d4=0x1;_0x28cb03<_0x677e35[_0x13e5('0x18')];_0x28cb03++,_0x18b5d4=0x1){_0x161861=_0x161861['concat'](getUserApplications(_0x5a709c,_0x677e35[_0x28cb03],_0x677e35[_0x28cb03][_0x13e5('0x19')]));if(_0x677e35[_0x28cb03][_0x13e5('0x19')]!=_0x677e35[_0x28cb03]['name']){_0x161861=_0x161861[_0x13e5('0x1a')](getUserApplications(_0x5a709c,_0x677e35[_0x28cb03],_0x677e35[_0x28cb03]['name']));}}return _0x161861;};var getChanSpyPromise=function(_0x3ee11,_0x3c5b2){return new BPromise(function(_0x367cb3,_0x45d243){return _0x3ee11[_0x13e5('0x1b')][_0x13e5('0x1c')]({'attributes':['id',_0x13e5('0x14'),_0x13e5('0x19')],'where':{'role':_0x13e5('0x1d'),'chanspy':!![]},'raw':!![]})[_0x13e5('0x1e')](function(_0x1fe0f7){if(_0x1fe0f7){return _0x367cb3(getChanSpyApplications(_0x3c5b2,_0x1fe0f7));}return _0x367cb3([]);})['catch'](function(_0x256f38){_0x45d243(_0x256f38);});});};module[_0x13e5('0x1f')]=function(_0x2db193,_0x15fe77){var _0x202168=_0x2db193[_0x13e5('0x20')];return _0x2db193[_0x13e5('0x21')]('VoiceChanSpy',attributes,{'tableName':_0x13e5('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2e7641,_0x90fe82,_0x50bf66){return getChanSpyPromise(_0x202168,_0x2e7641)['then'](function(_0x91a7ad){if(_0x91a7ad&&_0x91a7ad[_0x13e5('0x18')]){return _0x202168[_0x13e5('0x23')][_0x13e5('0x24')](_0x91a7ad);}})[_0x13e5('0x1e')](function(){_0x50bf66();})['catch'](function(_0xaac92c){_0x50bf66(_0xaac92c);});},'afterUpdate':function(_0x3f05cf,_0x99bedb,_0x114a42){return _0x202168['VoiceExtension'][_0x13e5('0x25')]({'where':{'ChanSpyId':_0x3f05cf['id']}})[_0x13e5('0x1e')](function(){return getChanSpyPromise(_0x202168,_0x3f05cf);})[_0x13e5('0x1e')](function(_0x145fcc){if(_0x145fcc&&_0x145fcc[_0x13e5('0x18')]){return _0x202168['VoiceExtension'][_0x13e5('0x24')](_0x145fcc);}})[_0x13e5('0x1e')](function(){_0x114a42();})[_0x13e5('0x26')](function(_0x5da649){_0x114a42(_0x5da649);});},'afterDestroy':function(_0x48d5a9,_0x3f3add,_0x4d2f12){return _0x202168[_0x13e5('0x23')][_0x13e5('0x25')]({'where':{'ChanSpyId':_0x48d5a9['id']}})[_0x13e5('0x1e')](function(){_0x4d2f12();})[_0x13e5('0x26')](function(_0x1b913f){_0x4d2f12(_0x1b913f);});}}});};
\ No newline at end of file
index feb6fa5..5e9e4e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fa=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','request\x20sent','result','catch','util','moment'];(function(_0x2622ac,_0x44f576){var _0x281996=function(_0x3d60f5){while(--_0x3d60f5){_0x2622ac['push'](_0x2622ac['shift']());}};_0x281996(++_0x44f576);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x51a182,_0x5639a7){_0x51a182=_0x51a182-0x0;var _0x46aa3e=_0xa5fa[_0x51a182];return _0x46aa3e;};'use strict';var _=require('lodash');var util=require(_0xaa5f('0x0'));var moment=require(_0xaa5f('0x1'));var BPromise=require(_0xaa5f('0x2'));var rs=require(_0xaa5f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa5f('0x4'))['db'];var utils=require(_0xaa5f('0x5'));var logger=require('../../config/logger')(_0xaa5f('0x6'));var config=require(_0xaa5f('0x7'));var jayson=require(_0xaa5f('0x8'));var client=jayson[_0xaa5f('0x9')][_0xaa5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13b606,_0x302138,_0xc326df){return new BPromise(function(_0x74f64f,_0x3f550e){return client[_0xaa5f('0xb')](_0x13b606,_0xc326df)['then'](function(_0x1674c2){logger[_0xaa5f('0xc')]('VoiceChanSpy,\x20%s,\x20%s',_0x302138,'request\x20sent');logger[_0xaa5f('0xd')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x302138,'request\x20sent',JSON[_0xaa5f('0xe')](_0x1674c2));if(_0x1674c2['error']){if(_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x10')]===0x1f4){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')]['message']);return _0x3f550e(_0x1674c2[_0xaa5f('0xf')]['message']);}logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x12')]);return _0x74f64f(_0x1674c2[_0xaa5f('0xf')]['message']);}else{logger['info'](_0xaa5f('0x11'),_0x302138,_0xaa5f('0x13'));_0x74f64f(_0x1674c2[_0xaa5f('0x14')][_0xaa5f('0x12')]);}})[_0xaa5f('0x15')](function(_0x1fa36a){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1fa36a);_0x3f550e(_0x1fa36a);});});}
\ No newline at end of file
+var _0x7af2=['catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','error','message','VoiceChanSpy,\x20%s,\x20%s','result'];(function(_0x12f910,_0x5d9f15){var _0x52afe6=function(_0x5ee9fc){while(--_0x5ee9fc){_0x12f910['push'](_0x12f910['shift']());}};_0x52afe6(++_0x5d9f15);}(_0x7af2,0x119));var _0x27af=function(_0x3262cc,_0x183e0b){_0x3262cc=_0x3262cc-0x0;var _0xa63dd=_0x7af2[_0x3262cc];return _0xa63dd;};'use strict';var _=require('lodash');var util=require(_0x27af('0x0'));var moment=require(_0x27af('0x1'));var BPromise=require(_0x27af('0x2'));var rs=require(_0x27af('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x27af('0x4'))['db'];var utils=require(_0x27af('0x5'));var logger=require(_0x27af('0x6'))(_0x27af('0x7'));var config=require(_0x27af('0x8'));var jayson=require(_0x27af('0x9'));var client=jayson[_0x27af('0xa')][_0x27af('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2193c6,_0x572219,_0x1e2509){return new BPromise(function(_0x366868,_0x389e97){return client['request'](_0x2193c6,_0x1e2509)[_0x27af('0xc')](function(_0xfa1882){logger[_0x27af('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x572219,_0x27af('0xe'));logger['debug']('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x572219,_0x27af('0xe'),JSON['stringify'](_0xfa1882));if(_0xfa1882['error']){if(_0xfa1882[_0x27af('0xf')]['code']===0x1f4){logger[_0x27af('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x572219,_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);return _0x389e97(_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);}logger[_0x27af('0xf')](_0x27af('0x11'),_0x572219,_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);return _0x366868(_0xfa1882[_0x27af('0xf')][_0x27af('0x10')]);}else{logger[_0x27af('0xd')](_0x27af('0x11'),_0x572219,_0x27af('0xe'));_0x366868(_0xfa1882[_0x27af('0x12')][_0x27af('0x10')]);}})[_0x27af('0x13')](function(_0x13f8ed){logger[_0x27af('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x572219,_0x13f8ed);_0x389e97(_0x13f8ed);});});}
\ No newline at end of file
index 2c41543..1aeeb9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0071=['util','path','express','Router','fs-extra','../../components/auth/service','./voiceContext.controller','get','isAuthenticated','index','/:id','delete','exports','multer'];(function(_0x3cb260,_0x17977d){var _0x4426e8=function(_0x1eaeeb){while(--_0x1eaeeb){_0x3cb260['push'](_0x3cb260['shift']());}};_0x4426e8(++_0x17977d);}(_0x0071,0x1bf));var _0x1007=function(_0x1b4d51,_0x30f986){_0x1b4d51=_0x1b4d51-0x0;var _0x58e3e1=_0x0071[_0x1b4d51];return _0x58e3e1;};'use strict';var multer=require(_0x1007('0x0'));var util=require(_0x1007('0x1'));var path=require(_0x1007('0x2'));var timeout=require('connect-timeout');var express=require(_0x1007('0x3'));var router=express[_0x1007('0x4')]();var fs_extra=require(_0x1007('0x5'));var auth=require(_0x1007('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1007('0x7'));router[_0x1007('0x8')]('/',auth[_0x1007('0x9')](),controller[_0x1007('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x1007('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x1007('0xc')]('/:id',auth[_0x1007('0x9')](),controller['destroy']);module[_0x1007('0xd')]=router;
\ No newline at end of file
+var _0x3a3a=['show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated'];(function(_0x5bda4f,_0x22b15f){var _0x11f675=function(_0x28cd5a){while(--_0x28cd5a){_0x5bda4f['push'](_0x5bda4f['shift']());}};_0x11f675(++_0x22b15f);}(_0x3a3a,0x111));var _0xa3a3=function(_0x12e7d4,_0x15e458){_0x12e7d4=_0x12e7d4-0x0;var _0x28610c=_0x3a3a[_0x12e7d4];return _0x28610c;};'use strict';var multer=require(_0xa3a3('0x0'));var util=require(_0xa3a3('0x1'));var path=require('path');var timeout=require(_0xa3a3('0x2'));var express=require(_0xa3a3('0x3'));var router=express[_0xa3a3('0x4')]();var fs_extra=require(_0xa3a3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa3a3('0x6'));var config=require(_0xa3a3('0x7'));var controller=require('./voiceContext.controller');router[_0xa3a3('0x8')]('/',auth['isAuthenticated'](),controller[_0xa3a3('0x9')]);router['get'](_0xa3a3('0xa'),auth[_0xa3a3('0xb')](),controller[_0xa3a3('0xc')]);router[_0xa3a3('0xd')]('/',auth[_0xa3a3('0xb')](),controller[_0xa3a3('0xe')]);router[_0xa3a3('0xf')](_0xa3a3('0xa'),auth[_0xa3a3('0xb')](),controller['update']);router[_0xa3a3('0x10')](_0xa3a3('0xa'),auth[_0xa3a3('0xb')](),controller[_0xa3a3('0x11')]);module[_0xa3a3('0x12')]=router;
\ No newline at end of file
index ba7a1e6..9dca4da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0e3=['exports','STRING','name','sequelize'];(function(_0x1f58cb,_0x47a4b9){var _0x1a1bde=function(_0x564d35){while(--_0x564d35){_0x1f58cb['push'](_0x1f58cb['shift']());}};_0x1a1bde(++_0x47a4b9);}(_0xd0e3,0x14b));var _0x3d0e=function(_0x5c56e1,_0x4a4ac3){_0x5c56e1=_0x5c56e1-0x0;var _0xdfc8c9=_0xd0e3[_0x5c56e1];return _0xdfc8c9;};'use strict';var Sequelize=require(_0x3d0e('0x0'));module[_0x3d0e('0x1')]={'name':{'type':Sequelize[_0x3d0e('0x2')],'unique':_0x3d0e('0x3')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa616=['exports','STRING','sequelize'];(function(_0x4b191c,_0x384ea6){var _0x28c0b7=function(_0x2e0069){while(--_0x2e0069){_0x4b191c['push'](_0x4b191c['shift']());}};_0x28c0b7(++_0x384ea6);}(_0xa616,0xda));var _0x6a61=function(_0x48291a,_0x5a29dc){_0x48291a=_0x48291a-0x0;var _0xf76871=_0xa616[_0x48291a];return _0xf76871;};'use strict';var Sequelize=require(_0x6a61('0x0'));module[_0x6a61('0x1')]={'name':{'type':Sequelize[_0x6a61('0x2')],'unique':'name'},'description':{'type':Sequelize[_0x6a61('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 112608c..a87bd64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79da=['rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','sendStatus','status','end','json','offset','undefined','limit','apply','reject','save','update','destroy','get','Contexts','name','VoiceContext','rawAttributes','fieldName','key','map','query','filters','model','attributes','fields','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','findAll','catch','show','params','keys','intersection','includeAll','include','find','create','body','root','utf8','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','readFileSync','join','server/files/templates/context.ejs','render','writeFileSync','eml-format'];(function(_0x2deefb,_0xfb2fd2){var _0x35dc94=function(_0x285d59){while(--_0x285d59){_0x2deefb['push'](_0x2deefb['shift']());}};_0x35dc94(++_0xfb2fd2);}(_0x79da,0x1ee));var _0xa79d=function(_0x221800,_0x4654be){_0x221800=_0x221800-0x0;var _0xc9f38d=_0x79da[_0x221800];return _0xc9f38d;};'use strict';var emlformat=require(_0xa79d('0x0'));var rimraf=require(_0xa79d('0x1'));var zipdir=require(_0xa79d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa79d('0x3'));var BPromise=require(_0xa79d('0x4'));var Mustache=require(_0xa79d('0x5'));var util=require(_0xa79d('0x6'));var path=require(_0xa79d('0x7'));var sox=require(_0xa79d('0x8'));var csv=require(_0xa79d('0x9'));var ejs=require(_0xa79d('0xa'));var fs=require('fs');var fs_extra=require(_0xa79d('0xb'));var _=require(_0xa79d('0xc'));var squel=require(_0xa79d('0xd'));var crypto=require(_0xa79d('0xe'));var jsforce=require(_0xa79d('0xf'));var deskjs=require(_0xa79d('0x10'));var toCsv=require(_0xa79d('0x9'));var querystring=require(_0xa79d('0x11'));var Papa=require(_0xa79d('0x12'));var Redis=require('ioredis');var authService=require(_0xa79d('0x13'));var qs=require(_0xa79d('0x14'));var as=require(_0xa79d('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa79d('0x16'))(_0xa79d('0x17'));var utils=require(_0xa79d('0x18'));var config=require(_0xa79d('0x19'));var licenseUtil=require(_0xa79d('0x1a'));var db=require('../../mysqldb')['db'];var jayson=require(_0xa79d('0x1b'));var client=jayson[_0xa79d('0x1c')][_0xa79d('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x5b37da,_0x2bead5,_0x165041,_0x43eaff){return new BPromise(function(_0x194f89,_0x58bd75){var _0x211328=_0x43eaff||client;return _0x211328['request'](_0x5b37da,_0x165041)[_0xa79d('0x1e')](function(_0x54ff08){logger['info'](_0xa79d('0x1f'),_0x2bead5,_0xa79d('0x20'));logger[_0xa79d('0x21')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x2bead5,'request\x20sent',JSON[_0xa79d('0x22')](_0x54ff08));if(_0x54ff08[_0xa79d('0x23')]){if(_0x54ff08[_0xa79d('0x23')][_0xa79d('0x24')]===0x1f4){logger[_0xa79d('0x23')](_0xa79d('0x1f'),_0x2bead5,_0x54ff08['error'][_0xa79d('0x25')]);return _0x58bd75(_0x54ff08[_0xa79d('0x23')]['message']);}logger[_0xa79d('0x23')](_0xa79d('0x1f'),_0x2bead5,_0x54ff08[_0xa79d('0x23')]['message']);return _0x194f89(_0x54ff08[_0xa79d('0x23')]['message']);}else{logger[_0xa79d('0x26')](_0xa79d('0x1f'),_0x2bead5,'request\x20sent');_0x194f89(_0x54ff08['result'][_0xa79d('0x25')]);}})['catch'](function(_0x2cf133){logger[_0xa79d('0x23')](_0xa79d('0x1f'),_0x2bead5,_0x2cf133);_0x58bd75(_0x2cf133);});});}function respondWithStatusCode(_0x238588,_0x22e3f1){_0x22e3f1=_0x22e3f1||0xcc;return function(_0x101627){if(_0x101627){return _0x238588[_0xa79d('0x27')](_0x22e3f1);}return _0x238588[_0xa79d('0x28')](_0x22e3f1)[_0xa79d('0x29')]();};}function respondWithResult(_0x222953,_0x565726){_0x565726=_0x565726||0xc8;return function(_0xa4051f){if(_0xa4051f){return _0x222953['status'](_0x565726)[_0xa79d('0x2a')](_0xa4051f);}};}function respondWithFilteredResult(_0x1a100d,_0x42da5b){return function(_0x5f0456){if(_0x5f0456){var _0x47f9e7=typeof _0x42da5b[_0xa79d('0x2b')]===_0xa79d('0x2c')&&typeof _0x42da5b[_0xa79d('0x2d')]==='undefined';var _0x571f44=_0x5f0456['count'];var _0x32e95a=_0x47f9e7?0x0:_0x42da5b[_0xa79d('0x2b')];var _0x241f00=_0x47f9e7?_0x5f0456['count']:_0x42da5b['offset']+_0x42da5b[_0xa79d('0x2d')];var _0x47a690;if(_0x241f00>=_0x571f44){_0x241f00=_0x571f44;_0x47a690=0xc8;}else{_0x47a690=0xce;}_0x1a100d[_0xa79d('0x28')](_0x47a690);return _0x1a100d['set']('Content-Range',_0x32e95a+'-'+_0x241f00+'/'+_0x571f44)[_0xa79d('0x2a')](_0x5f0456);}return null;};}function patchUpdates(_0x4b8785){return function(_0x39703b){try{jsonpatch[_0xa79d('0x2e')](_0x39703b,_0x4b8785,!![]);}catch(_0x3179a0){return BPromise[_0xa79d('0x2f')](_0x3179a0);}return _0x39703b[_0xa79d('0x30')]();};}function saveUpdates(_0x5c356b,_0x556d32){return function(_0xd1a26c){if(_0xd1a26c){return _0xd1a26c[_0xa79d('0x31')](_0x5c356b)[_0xa79d('0x1e')](function(_0x5c278f){return _0x5c278f;});}return null;};}function removeEntity(_0x56eddd,_0x42a504){return function(_0x514307){if(_0x514307){return _0x514307[_0xa79d('0x32')]()[_0xa79d('0x1e')](function(){var _0x4061ad=_0x514307[_0xa79d('0x33')]({'plain':!![]});var _0x992f9e=_0xa79d('0x34');return db['UserProfileResource']['destroy']({'where':{'type':_0x992f9e,'resourceId':_0x4061ad['id']}})['then'](function(){return _0x514307;});})[_0xa79d('0x1e')](function(){_0x56eddd[_0xa79d('0x28')](0xcc)[_0xa79d('0x29')]();});}};}function handleEntityNotFound(_0x32cd15,_0xcee083){return function(_0x5d06db){if(!_0x5d06db){_0x32cd15[_0xa79d('0x27')](0x194);}return _0x5d06db;};}function handleError(_0x22c2cb,_0x3ea04e){_0x3ea04e=_0x3ea04e||0x1f4;return function(_0x5c0be0){logger[_0xa79d('0x23')](_0x5c0be0['stack']);if(_0x5c0be0['name']){delete _0x5c0be0[_0xa79d('0x35')];}_0x22c2cb[_0xa79d('0x28')](_0x3ea04e)['send'](_0x5c0be0);};}exports['index']=function(_0xf267ed,_0x4c0159){var _0x2e7527={},_0x203fcf={},_0x3a0af8={'count':0x0,'rows':[]};var _0x277769=_['map'](db[_0xa79d('0x36')][_0xa79d('0x37')],function(_0x4de781){return{'name':_0x4de781[_0xa79d('0x38')],'type':_0x4de781['type'][_0xa79d('0x39')]};});_0x203fcf['model']=_[_0xa79d('0x3a')](_0x277769,_0xa79d('0x35'));_0x203fcf[_0xa79d('0x3b')]=_['keys'](_0xf267ed['query']);_0x203fcf[_0xa79d('0x3c')]=_['intersection'](_0x203fcf[_0xa79d('0x3d')],_0x203fcf['query']);_0x2e7527[_0xa79d('0x3e')]=_['intersection'](_0x203fcf[_0xa79d('0x3d')],qs[_0xa79d('0x3f')](_0xf267ed[_0xa79d('0x3b')][_0xa79d('0x3f')]));_0x2e7527[_0xa79d('0x3e')]=_0x2e7527[_0xa79d('0x3e')]['length']?_0x2e7527[_0xa79d('0x3e')]:_0x203fcf[_0xa79d('0x3d')];if(!_0xf267ed[_0xa79d('0x3b')]['hasOwnProperty'](_0xa79d('0x40'))){_0x2e7527['limit']=qs[_0xa79d('0x2d')](_0xf267ed['query']['limit']);_0x2e7527['offset']=qs[_0xa79d('0x2b')](_0xf267ed[_0xa79d('0x3b')][_0xa79d('0x2b')]);}_0x2e7527[_0xa79d('0x41')]=qs['sort'](_0xf267ed['query'][_0xa79d('0x42')]);_0x2e7527[_0xa79d('0x43')]=qs['filters'](_['pick'](_0xf267ed[_0xa79d('0x3b')],_0x203fcf[_0xa79d('0x3c')]),_0x277769);if(_0xf267ed[_0xa79d('0x3b')][_0xa79d('0x44')]){_0x2e7527[_0xa79d('0x43')]=_['merge'](_0x2e7527['where'],{'$or':_[_0xa79d('0x3a')](_0x277769,function(_0x34a156){if(_0x34a156[_0xa79d('0x45')]!==_0xa79d('0x46')){var _0x1f4c24={};_0x1f4c24[_0x34a156['name']]={'$like':'%'+_0xf267ed[_0xa79d('0x3b')][_0xa79d('0x44')]+'%'};return _0x1f4c24;}})});}_0x2e7527=_[_0xa79d('0x47')]({},_0x2e7527,_0xf267ed[_0xa79d('0x48')]);var _0x239eb5={'where':_0x2e7527[_0xa79d('0x43')]};return db[_0xa79d('0x36')]['count'](_0x239eb5)['then'](function(_0xe7726e){_0x3a0af8['count']=_0xe7726e;if(_0xf267ed['query']['includeAll']){_0x2e7527['include']=[{'all':!![]}];}return db['VoiceContext'][_0xa79d('0x49')](_0x2e7527);})[_0xa79d('0x1e')](function(_0x2c046c){_0x3a0af8['rows']=_0x2c046c;return _0x3a0af8;})['then'](respondWithFilteredResult(_0x4c0159,_0x2e7527))[_0xa79d('0x4a')](handleError(_0x4c0159,null));};exports[_0xa79d('0x4b')]=function(_0x70e615,_0x49aa32){var _0x115abf={'raw':![],'where':{'id':_0x70e615[_0xa79d('0x4c')]['id']}},_0x217664={};_0x217664[_0xa79d('0x3d')]=_[_0xa79d('0x4d')](db[_0xa79d('0x36')][_0xa79d('0x37')]);_0x217664[_0xa79d('0x3b')]=_[_0xa79d('0x4d')](_0x70e615['query']);_0x217664['filters']=_['intersection'](_0x217664[_0xa79d('0x3d')],_0x217664[_0xa79d('0x3b')]);_0x115abf['attributes']=_[_0xa79d('0x4e')](_0x217664[_0xa79d('0x3d')],qs[_0xa79d('0x3f')](_0x70e615[_0xa79d('0x3b')][_0xa79d('0x3f')]));_0x115abf[_0xa79d('0x3e')]=_0x115abf[_0xa79d('0x3e')]['length']?_0x115abf[_0xa79d('0x3e')]:_0x217664[_0xa79d('0x3d')];if(_0x70e615[_0xa79d('0x3b')][_0xa79d('0x4f')]){_0x115abf[_0xa79d('0x50')]=[{'all':!![]}];}_0x115abf=_[_0xa79d('0x47')]({},_0x115abf,_0x70e615[_0xa79d('0x48')]);return db[_0xa79d('0x36')][_0xa79d('0x51')](_0x115abf)['then'](handleEntityNotFound(_0x49aa32,null))[_0xa79d('0x1e')](respondWithResult(_0x49aa32,null))[_0xa79d('0x4a')](handleError(_0x49aa32,null));};exports[_0xa79d('0x52')]=function(_0x41212d,_0x1415f7,_0x3e827b){var _0x1d18c0;return db[_0xa79d('0x36')][_0xa79d('0x52')](_0x41212d[_0xa79d('0x53')],{'raw':!![]})[_0xa79d('0x1e')](function(_0x1fd1f9){_0x1d18c0=_0x1fd1f9;return db[_0xa79d('0x36')][_0xa79d('0x49')]({'raw':!![]});})['then'](function(_0x20efcb){var _0x4fd7d5=fs['readFileSync'](path['join'](config[_0xa79d('0x54')],'server/files/templates/context.ejs'),_0xa79d('0x55'));var _0x407ed8=ejs['render'](_0x4fd7d5,{'contexts':_0x20efcb||[]});fs['writeFileSync'](_0xa79d('0x56'),_0x407ed8);})[_0xa79d('0x1e')](function(){return respondWithRpcPromise(_0xa79d('0x57'),'create',{'module':_0xa79d('0x58')});})[_0xa79d('0x1e')](function(){var _0x1f9867=_0x41212d[_0xa79d('0x59')][_0xa79d('0x33')]({'plain':!![]});if(!_0x1f9867)throw new Error(_0xa79d('0x5a'));if(_0x1f9867['role']==='user'){var _0x22eaff=_0x1d18c0[_0xa79d('0x33')]({'plain':!![]});return db[_0xa79d('0x5b')][_0xa79d('0x51')]({'where':{'name':_0xa79d('0x34'),'userProfileId':_0x1f9867['userProfileId']},'raw':!![]})[_0xa79d('0x1e')](function(_0x237c14){if(_0x237c14&&_0x237c14[_0xa79d('0x5c')]===0x0){return db[_0xa79d('0x5d')][_0xa79d('0x52')]({'name':_0x22eaff['name'],'resourceId':_0x22eaff['id'],'type':_0x237c14[_0xa79d('0x35')],'sectionId':_0x237c14['id']},{})[_0xa79d('0x1e')](function(){return _0x1d18c0;});}else{return _0x1d18c0;}})[_0xa79d('0x4a')](function(_0x4f5244){logger[_0xa79d('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4f5244);throw _0x4f5244;});}return _0x1d18c0;})['then'](respondWithResult(_0x1415f7,0xc9))[_0xa79d('0x4a')](handleError(_0x1415f7,null));};exports[_0xa79d('0x31')]=function(_0x49bea8,_0x1ceee3,_0x4597ed){var _0x86d3c7;return db[_0xa79d('0x36')][_0xa79d('0x51')]({'where':{'id':_0x49bea8[_0xa79d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1ceee3,null))[_0xa79d('0x1e')](saveUpdates(_0x49bea8[_0xa79d('0x53')],null))['then'](function(_0x537068){if(_0x537068){_0x86d3c7=_0x537068;return db[_0xa79d('0x36')][_0xa79d('0x49')]({'raw':!![]});}})[_0xa79d('0x1e')](function(_0x5a4483){var _0x4fdf23=fs[_0xa79d('0x5e')](path[_0xa79d('0x5f')](config[_0xa79d('0x54')],_0xa79d('0x60')),_0xa79d('0x55'));var _0x3b6187=ejs[_0xa79d('0x61')](_0x4fdf23,{'contexts':_0x5a4483||[]});fs[_0xa79d('0x62')](_0xa79d('0x56'),_0x3b6187);})[_0xa79d('0x1e')](function(){return respondWithRpcPromise(_0xa79d('0x57'),_0xa79d('0x31'),{'module':_0xa79d('0x58')});})[_0xa79d('0x1e')](function(){return _0x86d3c7;})[_0xa79d('0x1e')](respondWithResult(_0x1ceee3,null))[_0xa79d('0x4a')](handleError(_0x1ceee3,null));};exports[_0xa79d('0x32')]=function(_0x545799,_0x2e38d0,_0x1b1158){var _0x6c0a33;return db['VoiceContext']['find']({'where':{'id':_0x545799[_0xa79d('0x4c')]['id']}})[_0xa79d('0x1e')](handleEntityNotFound(_0x2e38d0,null))[_0xa79d('0x1e')](removeEntity(_0x2e38d0,null))[_0xa79d('0x1e')](function(){return db[_0xa79d('0x36')][_0xa79d('0x49')]({'raw':!![]});})[_0xa79d('0x1e')](function(_0x1f77cf){var _0x431a2b=fs[_0xa79d('0x5e')](path[_0xa79d('0x5f')](config[_0xa79d('0x54')],'server/files/templates/context.ejs'),_0xa79d('0x55'));var _0x4373d8=ejs[_0xa79d('0x61')](_0x431a2b,{'contexts':_0x1f77cf});fs[_0xa79d('0x62')](_0xa79d('0x56'),_0x4373d8);return respondWithRpcPromise(_0xa79d('0x57'),'destroy',{'module':_0xa79d('0x58')});})[_0xa79d('0x4a')](handleError(_0x2e38d0,null));};
\ No newline at end of file
+var _0xa0b7=['undefined','count','offset','limit','reject','save','destroy','get','Contexts','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','pick','filters','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','create','body','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','readFileSync','join','root','server/files/templates/context.ejs','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','catch','sendStatus','status','end','json'];(function(_0x2f7ce1,_0x2fb0e9){var _0x1af9c1=function(_0x433c65){while(--_0x433c65){_0x2f7ce1['push'](_0x2f7ce1['shift']());}};_0x1af9c1(++_0x2fb0e9);}(_0xa0b7,0x16b));var _0x7a0b=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xa0b7[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x7a0b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7a0b('0x1'));var jsonpatch=require(_0x7a0b('0x2'));var rp=require('request-promise');var moment=require(_0x7a0b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7a0b('0x4'));var util=require(_0x7a0b('0x5'));var path=require(_0x7a0b('0x6'));var sox=require('sox');var csv=require(_0x7a0b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a0b('0x8'));var _=require(_0x7a0b('0x9'));var squel=require(_0x7a0b('0xa'));var crypto=require(_0x7a0b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7a0b('0xc'));var toCsv=require(_0x7a0b('0x7'));var querystring=require(_0x7a0b('0xd'));var Papa=require(_0x7a0b('0xe'));var Redis=require(_0x7a0b('0xf'));var authService=require(_0x7a0b('0x10'));var qs=require(_0x7a0b('0x11'));var as=require(_0x7a0b('0x12'));var hardwareService=require(_0x7a0b('0x13'));var logger=require('../../config/logger')(_0x7a0b('0x14'));var utils=require(_0x7a0b('0x15'));var config=require(_0x7a0b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x7a0b('0x17'))['db'];var jayson=require(_0x7a0b('0x18'));var client=jayson[_0x7a0b('0x19')][_0x7a0b('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x306577,_0x123ba5,_0x463f26,_0x481982){return new BPromise(function(_0x52cc47,_0x84f74e){var _0x3d0d22=_0x481982||client;return _0x3d0d22['request'](_0x306577,_0x463f26)[_0x7a0b('0x1b')](function(_0x29f314){logger['info'](_0x7a0b('0x1c'),_0x123ba5,'request\x20sent');logger[_0x7a0b('0x1d')](_0x7a0b('0x1e'),_0x123ba5,'request\x20sent',JSON[_0x7a0b('0x1f')](_0x29f314));if(_0x29f314[_0x7a0b('0x20')]){if(_0x29f314[_0x7a0b('0x20')]['code']===0x1f4){logger['error'](_0x7a0b('0x1c'),_0x123ba5,_0x29f314[_0x7a0b('0x20')]['message']);return _0x84f74e(_0x29f314['error'][_0x7a0b('0x21')]);}logger[_0x7a0b('0x20')](_0x7a0b('0x1c'),_0x123ba5,_0x29f314['error'][_0x7a0b('0x21')]);return _0x52cc47(_0x29f314['error'][_0x7a0b('0x21')]);}else{logger[_0x7a0b('0x22')](_0x7a0b('0x1c'),_0x123ba5,_0x7a0b('0x23'));_0x52cc47(_0x29f314['result'][_0x7a0b('0x21')]);}})[_0x7a0b('0x24')](function(_0x204140){logger[_0x7a0b('0x20')](_0x7a0b('0x1c'),_0x123ba5,_0x204140);_0x84f74e(_0x204140);});});}function respondWithStatusCode(_0x2d4376,_0x970d52){_0x970d52=_0x970d52||0xcc;return function(_0x3808e4){if(_0x3808e4){return _0x2d4376[_0x7a0b('0x25')](_0x970d52);}return _0x2d4376[_0x7a0b('0x26')](_0x970d52)[_0x7a0b('0x27')]();};}function respondWithResult(_0x443658,_0x3f1a9a){_0x3f1a9a=_0x3f1a9a||0xc8;return function(_0x5f28d9){if(_0x5f28d9){return _0x443658[_0x7a0b('0x26')](_0x3f1a9a)[_0x7a0b('0x28')](_0x5f28d9);}};}function respondWithFilteredResult(_0x3cb474,_0x3d3d3d){return function(_0x5d4b4a){if(_0x5d4b4a){var _0x40f203=typeof _0x3d3d3d['offset']===_0x7a0b('0x29')&&typeof _0x3d3d3d['limit']===_0x7a0b('0x29');var _0x9aaccd=_0x5d4b4a[_0x7a0b('0x2a')];var _0x5bf0a2=_0x40f203?0x0:_0x3d3d3d[_0x7a0b('0x2b')];var _0x2f77da=_0x40f203?_0x5d4b4a['count']:_0x3d3d3d[_0x7a0b('0x2b')]+_0x3d3d3d[_0x7a0b('0x2c')];var _0xb9d10d;if(_0x2f77da>=_0x9aaccd){_0x2f77da=_0x9aaccd;_0xb9d10d=0xc8;}else{_0xb9d10d=0xce;}_0x3cb474[_0x7a0b('0x26')](_0xb9d10d);return _0x3cb474['set']('Content-Range',_0x5bf0a2+'-'+_0x2f77da+'/'+_0x9aaccd)[_0x7a0b('0x28')](_0x5d4b4a);}return null;};}function patchUpdates(_0x2bb1ba){return function(_0x1b9644){try{jsonpatch['apply'](_0x1b9644,_0x2bb1ba,!![]);}catch(_0x42cc32){return BPromise[_0x7a0b('0x2d')](_0x42cc32);}return _0x1b9644[_0x7a0b('0x2e')]();};}function saveUpdates(_0x165d23,_0x4dae3f){return function(_0x1fe3d0){if(_0x1fe3d0){return _0x1fe3d0['update'](_0x165d23)[_0x7a0b('0x1b')](function(_0x50a178){return _0x50a178;});}return null;};}function removeEntity(_0x2f6b25,_0x4002c8){return function(_0x37fd90){if(_0x37fd90){return _0x37fd90[_0x7a0b('0x2f')]()[_0x7a0b('0x1b')](function(){var _0x4708ee=_0x37fd90[_0x7a0b('0x30')]({'plain':!![]});var _0x46bb55=_0x7a0b('0x31');return db['UserProfileResource'][_0x7a0b('0x2f')]({'where':{'type':_0x46bb55,'resourceId':_0x4708ee['id']}})['then'](function(){return _0x37fd90;});})[_0x7a0b('0x1b')](function(){_0x2f6b25[_0x7a0b('0x26')](0xcc)[_0x7a0b('0x27')]();});}};}function handleEntityNotFound(_0x312e1a,_0x37a5c5){return function(_0x17201f){if(!_0x17201f){_0x312e1a[_0x7a0b('0x25')](0x194);}return _0x17201f;};}function handleError(_0x181648,_0x3c4891){_0x3c4891=_0x3c4891||0x1f4;return function(_0x47dbb1){logger[_0x7a0b('0x20')](_0x47dbb1[_0x7a0b('0x32')]);if(_0x47dbb1['name']){delete _0x47dbb1[_0x7a0b('0x33')];}_0x181648['status'](_0x3c4891)[_0x7a0b('0x34')](_0x47dbb1);};}exports[_0x7a0b('0x35')]=function(_0x31250b,_0x3d224c){var _0x1e8c21={},_0x107dfb={},_0x45a77c={'count':0x0,'rows':[]};var _0x3d1936=_[_0x7a0b('0x36')](db[_0x7a0b('0x37')][_0x7a0b('0x38')],function(_0x3b2711){return{'name':_0x3b2711[_0x7a0b('0x39')],'type':_0x3b2711[_0x7a0b('0x3a')][_0x7a0b('0x3b')]};});_0x107dfb[_0x7a0b('0x3c')]=_[_0x7a0b('0x36')](_0x3d1936,_0x7a0b('0x33'));_0x107dfb[_0x7a0b('0x3d')]=_[_0x7a0b('0x3e')](_0x31250b[_0x7a0b('0x3d')]);_0x107dfb['filters']=_[_0x7a0b('0x3f')](_0x107dfb[_0x7a0b('0x3c')],_0x107dfb['query']);_0x1e8c21[_0x7a0b('0x40')]=_[_0x7a0b('0x3f')](_0x107dfb[_0x7a0b('0x3c')],qs[_0x7a0b('0x41')](_0x31250b[_0x7a0b('0x3d')]['fields']));_0x1e8c21[_0x7a0b('0x40')]=_0x1e8c21[_0x7a0b('0x40')][_0x7a0b('0x42')]?_0x1e8c21['attributes']:_0x107dfb[_0x7a0b('0x3c')];if(!_0x31250b['query']['hasOwnProperty'](_0x7a0b('0x43'))){_0x1e8c21[_0x7a0b('0x2c')]=qs[_0x7a0b('0x2c')](_0x31250b[_0x7a0b('0x3d')][_0x7a0b('0x2c')]);_0x1e8c21['offset']=qs['offset'](_0x31250b[_0x7a0b('0x3d')][_0x7a0b('0x2b')]);}_0x1e8c21['order']=qs['sort'](_0x31250b[_0x7a0b('0x3d')][_0x7a0b('0x44')]);_0x1e8c21[_0x7a0b('0x45')]=qs['filters'](_[_0x7a0b('0x46')](_0x31250b['query'],_0x107dfb[_0x7a0b('0x47')]),_0x3d1936);if(_0x31250b[_0x7a0b('0x3d')]['filter']){_0x1e8c21[_0x7a0b('0x45')]=_[_0x7a0b('0x48')](_0x1e8c21[_0x7a0b('0x45')],{'$or':_[_0x7a0b('0x36')](_0x3d1936,function(_0xa915d8){if(_0xa915d8[_0x7a0b('0x3a')]!==_0x7a0b('0x49')){var _0x2eb899={};_0x2eb899[_0xa915d8[_0x7a0b('0x33')]]={'$like':'%'+_0x31250b['query']['filter']+'%'};return _0x2eb899;}})});}_0x1e8c21=_['merge']({},_0x1e8c21,_0x31250b[_0x7a0b('0x4a')]);var _0x27d4b9={'where':_0x1e8c21[_0x7a0b('0x45')]};return db['VoiceContext'][_0x7a0b('0x2a')](_0x27d4b9)[_0x7a0b('0x1b')](function(_0x39e39d){_0x45a77c['count']=_0x39e39d;if(_0x31250b[_0x7a0b('0x3d')]['includeAll']){_0x1e8c21[_0x7a0b('0x4b')]=[{'all':!![]}];}return db[_0x7a0b('0x37')][_0x7a0b('0x4c')](_0x1e8c21);})[_0x7a0b('0x1b')](function(_0x4a6510){_0x45a77c[_0x7a0b('0x4d')]=_0x4a6510;return _0x45a77c;})[_0x7a0b('0x1b')](respondWithFilteredResult(_0x3d224c,_0x1e8c21))[_0x7a0b('0x24')](handleError(_0x3d224c,null));};exports[_0x7a0b('0x4e')]=function(_0x4eb463,_0xeab844){var _0x450a15={'raw':![],'where':{'id':_0x4eb463[_0x7a0b('0x4f')]['id']}},_0x426823={};_0x426823[_0x7a0b('0x3c')]=_['keys'](db[_0x7a0b('0x37')][_0x7a0b('0x38')]);_0x426823[_0x7a0b('0x3d')]=_[_0x7a0b('0x3e')](_0x4eb463[_0x7a0b('0x3d')]);_0x426823[_0x7a0b('0x47')]=_[_0x7a0b('0x3f')](_0x426823[_0x7a0b('0x3c')],_0x426823[_0x7a0b('0x3d')]);_0x450a15[_0x7a0b('0x40')]=_[_0x7a0b('0x3f')](_0x426823[_0x7a0b('0x3c')],qs[_0x7a0b('0x41')](_0x4eb463[_0x7a0b('0x3d')]['fields']));_0x450a15['attributes']=_0x450a15['attributes']['length']?_0x450a15[_0x7a0b('0x40')]:_0x426823['model'];if(_0x4eb463[_0x7a0b('0x3d')][_0x7a0b('0x50')]){_0x450a15[_0x7a0b('0x4b')]=[{'all':!![]}];}_0x450a15=_[_0x7a0b('0x48')]({},_0x450a15,_0x4eb463[_0x7a0b('0x4a')]);return db[_0x7a0b('0x37')][_0x7a0b('0x51')](_0x450a15)[_0x7a0b('0x1b')](handleEntityNotFound(_0xeab844,null))[_0x7a0b('0x1b')](respondWithResult(_0xeab844,null))[_0x7a0b('0x24')](handleError(_0xeab844,null));};exports[_0x7a0b('0x52')]=function(_0x3fe834,_0x2dadcf,_0x243a0b){var _0x12bad9;return db[_0x7a0b('0x37')][_0x7a0b('0x52')](_0x3fe834[_0x7a0b('0x53')],{'raw':!![]})[_0x7a0b('0x1b')](function(_0xd4f758){_0x12bad9=_0xd4f758;return db[_0x7a0b('0x37')][_0x7a0b('0x4c')]({'raw':!![]});})[_0x7a0b('0x1b')](function(_0x52bf75){var _0x3da6ab=fs['readFileSync'](path['join'](config['root'],'server/files/templates/context.ejs'),_0x7a0b('0x54'));var _0x5aa490=ejs[_0x7a0b('0x55')](_0x3da6ab,{'contexts':_0x52bf75||[]});fs[_0x7a0b('0x56')](_0x7a0b('0x57'),_0x5aa490);})[_0x7a0b('0x1b')](function(){return respondWithRpcPromise(_0x7a0b('0x58'),'create',{'module':_0x7a0b('0x59')});})[_0x7a0b('0x1b')](function(){var _0x5227d3=_0x3fe834[_0x7a0b('0x5a')][_0x7a0b('0x30')]({'plain':!![]});if(!_0x5227d3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5227d3[_0x7a0b('0x5b')]===_0x7a0b('0x5a')){var _0x70cbe9=_0x12bad9[_0x7a0b('0x30')]({'plain':!![]});return db[_0x7a0b('0x5c')]['find']({'where':{'name':_0x7a0b('0x31'),'userProfileId':_0x5227d3[_0x7a0b('0x5d')]},'raw':!![]})[_0x7a0b('0x1b')](function(_0x485c2f){if(_0x485c2f&&_0x485c2f['autoAssociation']===0x0){return db[_0x7a0b('0x5e')][_0x7a0b('0x52')]({'name':_0x70cbe9[_0x7a0b('0x33')],'resourceId':_0x70cbe9['id'],'type':_0x485c2f['name'],'sectionId':_0x485c2f['id']},{})['then'](function(){return _0x12bad9;});}else{return _0x12bad9;}})[_0x7a0b('0x24')](function(_0xb849a1){logger[_0x7a0b('0x20')](_0x7a0b('0x5f'),_0xb849a1);throw _0xb849a1;});}return _0x12bad9;})['then'](respondWithResult(_0x2dadcf,0xc9))['catch'](handleError(_0x2dadcf,null));};exports[_0x7a0b('0x60')]=function(_0xf7bd96,_0x4daf27,_0x528190){var _0x4126c3;return db[_0x7a0b('0x37')][_0x7a0b('0x51')]({'where':{'id':_0xf7bd96['params']['id']}})[_0x7a0b('0x1b')](handleEntityNotFound(_0x4daf27,null))['then'](saveUpdates(_0xf7bd96['body'],null))[_0x7a0b('0x1b')](function(_0xf31455){if(_0xf31455){_0x4126c3=_0xf31455;return db[_0x7a0b('0x37')][_0x7a0b('0x4c')]({'raw':!![]});}})[_0x7a0b('0x1b')](function(_0x36f756){var _0x50fbbd=fs[_0x7a0b('0x61')](path[_0x7a0b('0x62')](config[_0x7a0b('0x63')],_0x7a0b('0x64')),'utf8');var _0x289b7c=ejs[_0x7a0b('0x55')](_0x50fbbd,{'contexts':_0x36f756||[]});fs[_0x7a0b('0x56')](_0x7a0b('0x57'),_0x289b7c);})[_0x7a0b('0x1b')](function(){return respondWithRpcPromise(_0x7a0b('0x58'),'update',{'module':_0x7a0b('0x59')});})[_0x7a0b('0x1b')](function(){return _0x4126c3;})[_0x7a0b('0x1b')](respondWithResult(_0x4daf27,null))[_0x7a0b('0x24')](handleError(_0x4daf27,null));};exports[_0x7a0b('0x2f')]=function(_0x19fe58,_0x596fc3,_0x1be78a){var _0x15c183;return db[_0x7a0b('0x37')][_0x7a0b('0x51')]({'where':{'id':_0x19fe58[_0x7a0b('0x4f')]['id']}})[_0x7a0b('0x1b')](handleEntityNotFound(_0x596fc3,null))[_0x7a0b('0x1b')](removeEntity(_0x596fc3,null))[_0x7a0b('0x1b')](function(){return db[_0x7a0b('0x37')][_0x7a0b('0x4c')]({'raw':!![]});})[_0x7a0b('0x1b')](function(_0x3ac22a){var _0x5291af=fs[_0x7a0b('0x61')](path[_0x7a0b('0x62')](config[_0x7a0b('0x63')],'server/files/templates/context.ejs'),'utf8');var _0x406ee9=ejs['render'](_0x5291af,{'contexts':_0x3ac22a});fs['writeFileSync'](_0x7a0b('0x57'),_0x406ee9);return respondWithRpcPromise('Reload',_0x7a0b('0x2f'),{'module':_0x7a0b('0x59')});})[_0x7a0b('0x24')](handleError(_0x596fc3,null));};
\ No newline at end of file
index 8291ef7..fdce07c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c38=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','define','VoiceContext','voice_contexts','util','../../config/logger','api'];(function(_0x418ce4,_0xf342d5){var _0x1ec3cd=function(_0x203db1){while(--_0x203db1){_0x418ce4['push'](_0x418ce4['shift']());}};_0x1ec3cd(++_0xf342d5);}(_0x1c38,0x72));var _0x81c3=function(_0x5b312a,_0x4dc09b){_0x5b312a=_0x5b312a-0x0;var _0x448b0b=_0x1c38[_0x5b312a];return _0x448b0b;};'use strict';var _=require('lodash');var util=require(_0x81c3('0x0'));var logger=require(_0x81c3('0x1'))(_0x81c3('0x2'));var moment=require(_0x81c3('0x3'));var BPromise=require(_0x81c3('0x4'));var rp=require(_0x81c3('0x5'));var fs=require('fs');var path=require(_0x81c3('0x6'));var rimraf=require(_0x81c3('0x7'));var config=require(_0x81c3('0x8'));var attributes=require(_0x81c3('0x9'));module['exports']=function(_0x36df38,_0x270fe3){return _0x36df38[_0x81c3('0xa')](_0x81c3('0xb'),attributes,{'tableName':_0x81c3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x705f=['bluebird','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','lodash','util','../../config/logger','moment'];(function(_0x5850b8,_0x115914){var _0x8f3282=function(_0x4855cb){while(--_0x4855cb){_0x5850b8['push'](_0x5850b8['shift']());}};_0x8f3282(++_0x115914);}(_0x705f,0x1b8));var _0xf705=function(_0x22f164,_0xaa4f80){_0x22f164=_0x22f164-0x0;var _0x51ab95=_0x705f[_0x22f164];return _0x51ab95;};'use strict';var _=require(_0xf705('0x0'));var util=require(_0xf705('0x1'));var logger=require(_0xf705('0x2'))('api');var moment=require(_0xf705('0x3'));var BPromise=require(_0xf705('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf705('0x5'));var rimraf=require(_0xf705('0x6'));var config=require(_0xf705('0x7'));var attributes=require(_0xf705('0x8'));module[_0xf705('0x9')]=function(_0x1fd39f,_0x5ea2a9){return _0x1fd39f[_0xf705('0xa')](_0xf705('0xb'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2bece53..dcbd5e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf485=['rpc','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x41bd78,_0x9798b6){var _0x555a78=function(_0x5c3c50){while(--_0x5c3c50){_0x41bd78['push'](_0x41bd78['shift']());}};_0x555a78(++_0x9798b6);}(_0xf485,0x1af));var _0x5f48=function(_0x56f147,_0x3b83a9){_0x56f147=_0x56f147-0x0;var _0x444eb9=_0xf485[_0x56f147];return _0x444eb9;};'use strict';var _=require(_0x5f48('0x0'));var util=require('util');var moment=require(_0x5f48('0x1'));var BPromise=require('bluebird');var rs=require(_0x5f48('0x2'));var fs=require('fs');var Redis=require(_0x5f48('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5f48('0x4'));var logger=require(_0x5f48('0x5'))(_0x5f48('0x6'));var config=require('../../config/environment');var jayson=require(_0x5f48('0x7'));var client=jayson[_0x5f48('0x8')][_0x5f48('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x427713,_0x2013b2,_0x475a1a){return new BPromise(function(_0x1c33dd,_0x3ea948){return client[_0x5f48('0xa')](_0x427713,_0x475a1a)['then'](function(_0x1cfc7f){logger[_0x5f48('0xb')](_0x5f48('0xc'),_0x2013b2,_0x5f48('0xd'));logger[_0x5f48('0xe')](_0x5f48('0xf'),_0x2013b2,_0x5f48('0xd'),JSON['stringify'](_0x1cfc7f));if(_0x1cfc7f[_0x5f48('0x10')]){if(_0x1cfc7f[_0x5f48('0x10')]['code']===0x1f4){logger[_0x5f48('0x10')](_0x5f48('0xc'),_0x2013b2,_0x1cfc7f[_0x5f48('0x10')][_0x5f48('0x11')]);return _0x3ea948(_0x1cfc7f[_0x5f48('0x10')]['message']);}logger['error'](_0x5f48('0xc'),_0x2013b2,_0x1cfc7f[_0x5f48('0x10')][_0x5f48('0x11')]);return _0x1c33dd(_0x1cfc7f[_0x5f48('0x10')][_0x5f48('0x11')]);}else{logger[_0x5f48('0xb')](_0x5f48('0xc'),_0x2013b2,_0x5f48('0xd'));_0x1c33dd(_0x1cfc7f['result'][_0x5f48('0x11')]);}})[_0x5f48('0x12')](function(_0x29adc2){logger[_0x5f48('0x10')](_0x5f48('0xc'),_0x2013b2,_0x29adc2);_0x3ea948(_0x29adc2);});});}
\ No newline at end of file
+var _0x2b4a=['error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','request\x20sent','stringify'];(function(_0x59663e,_0x7d0342){var _0x20b821=function(_0x100d7e){while(--_0x100d7e){_0x59663e['push'](_0x59663e['shift']());}};_0x20b821(++_0x7d0342);}(_0x2b4a,0x13e));var _0xa2b4=function(_0x8abd64,_0x539570){_0x8abd64=_0x8abd64-0x0;var _0xd2511e=_0x2b4a[_0x8abd64];return _0xd2511e;};'use strict';var _=require(_0xa2b4('0x0'));var util=require(_0xa2b4('0x1'));var moment=require(_0xa2b4('0x2'));var BPromise=require(_0xa2b4('0x3'));var rs=require(_0xa2b4('0x4'));var fs=require('fs');var Redis=require(_0xa2b4('0x5'));var db=require(_0xa2b4('0x6'))['db'];var utils=require(_0xa2b4('0x7'));var logger=require('../../config/logger')(_0xa2b4('0x8'));var config=require(_0xa2b4('0x9'));var jayson=require(_0xa2b4('0xa'));var client=jayson[_0xa2b4('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x136da5,_0x4533c0,_0x5e19a8){return new BPromise(function(_0x39139c,_0x912f94){return client[_0xa2b4('0xc')](_0x136da5,_0x5e19a8)[_0xa2b4('0xd')](function(_0x5fbcff){logger[_0xa2b4('0xe')]('VoiceContext,\x20%s,\x20%s',_0x4533c0,'request\x20sent');logger[_0xa2b4('0xf')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x4533c0,_0xa2b4('0x10'),JSON[_0xa2b4('0x11')](_0x5fbcff));if(_0x5fbcff[_0xa2b4('0x12')]){if(_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x13')]===0x1f4){logger[_0xa2b4('0x12')](_0xa2b4('0x14'),_0x4533c0,_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x15')]);return _0x912f94(_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x15')]);}logger[_0xa2b4('0x12')](_0xa2b4('0x14'),_0x4533c0,_0x5fbcff[_0xa2b4('0x12')]['message']);return _0x39139c(_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x15')]);}else{logger[_0xa2b4('0xe')](_0xa2b4('0x14'),_0x4533c0,_0xa2b4('0x10'));_0x39139c(_0x5fbcff[_0xa2b4('0x16')]['message']);}})[_0xa2b4('0x17')](function(_0x1b7bc3){logger[_0xa2b4('0x12')](_0xa2b4('0x14'),_0x4533c0,_0x1b7bc3);_0x912f94(_0x1b7bc3);});});}
\ No newline at end of file
index 9c5a320..4dcc5d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05fd=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/:id','post','put','update','multer','util','connect-timeout','fs-extra'];(function(_0x35b18a,_0x6b2fbe){var _0x4db1bd=function(_0x389e62){while(--_0x389e62){_0x35b18a['push'](_0x35b18a['shift']());}};_0x4db1bd(++_0x6b2fbe);}(_0x05fd,0x173));var _0xd05f=function(_0x985317,_0x2b0f1a){_0x985317=_0x985317-0x0;var _0x5aaf8d=_0x05fd[_0x985317];return _0x5aaf8d;};'use strict';var multer=require(_0xd05f('0x0'));var util=require(_0xd05f('0x1'));var path=require('path');var timeout=require(_0xd05f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd05f('0x3'));var auth=require(_0xd05f('0x4'));var interaction=require(_0xd05f('0x5'));var config=require(_0xd05f('0x6'));var controller=require(_0xd05f('0x7'));router[_0xd05f('0x8')]('/',auth[_0xd05f('0x9')](),controller[_0xd05f('0xa')]);router[_0xd05f('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd05f('0x8')](_0xd05f('0xb'),auth[_0xd05f('0x9')](),controller['show']);router[_0xd05f('0xc')]('/',auth[_0xd05f('0x9')](),controller['create']);router[_0xd05f('0xd')]('/:id',auth[_0xd05f('0x9')](),controller[_0xd05f('0xe')]);router['delete'](_0xd05f('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe559=['../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','update','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x86794c,_0x5df4b0){var _0x2ea7a8=function(_0x17a723){while(--_0x17a723){_0x86794c['push'](_0x86794c['shift']());}};_0x2ea7a8(++_0x5df4b0);}(_0xe559,0x176));var _0x9e55=function(_0x26c804,_0x3ea271){_0x26c804=_0x26c804-0x0;var _0x9b5238=_0xe559[_0x26c804];return _0x9b5238;};'use strict';var multer=require('multer');var util=require(_0x9e55('0x0'));var path=require(_0x9e55('0x1'));var timeout=require(_0x9e55('0x2'));var express=require(_0x9e55('0x3'));var router=express[_0x9e55('0x4')]();var fs_extra=require(_0x9e55('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9e55('0x6'));var config=require(_0x9e55('0x7'));var controller=require(_0x9e55('0x8'));router['get']('/',auth[_0x9e55('0x9')](),controller[_0x9e55('0xa')]);router[_0x9e55('0xb')](_0x9e55('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x9e55('0xb')](_0x9e55('0xd'),auth['isAuthenticated'](),controller[_0x9e55('0xe')]);router[_0x9e55('0xf')]('/',auth[_0x9e55('0x9')](),controller[_0x9e55('0x10')]);router['put'](_0x9e55('0xd'),auth[_0x9e55('0x9')](),controller[_0x9e55('0x11')]);router['delete'](_0x9e55('0xd'),auth[_0x9e55('0x9')](),controller['destroy']);module[_0x9e55('0x12')]=router;
\ No newline at end of file
index 31a5bf9..dc53e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x1ff275,_0x12b011){var _0x156912=function(_0x47bf8b){while(--_0x47bf8b){_0x1ff275['push'](_0x1ff275['shift']());}};_0x156912(++_0x12b011);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x17a8b0,_0x4a2e8d){_0x17a8b0=_0x17a8b0-0x0;var _0x1358ee=_0xd6d6[_0x17a8b0];return _0x1358ee;};'use strict';var Sequelize=require(_0x6d6d('0x0'));module[_0x6d6d('0x1')]={'privilege':{'type':Sequelize[_0x6d6d('0x2')]},'channel':{'type':Sequelize[_0x6d6d('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'calleridnum':{'type':Sequelize[_0x6d6d('0x2')]},'calleridname':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'language':{'type':Sequelize[_0x6d6d('0x2')]},'accountcode':{'type':Sequelize[_0x6d6d('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x6d6d('0x2')]},'priority':{'type':Sequelize[_0x6d6d('0x3')]},'uniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'linkedid':{'type':Sequelize[_0x6d6d('0x2')]},'destchannel':{'type':Sequelize[_0x6d6d('0x2')]},'destchannelstate':{'type':Sequelize[_0x6d6d('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'destlanguage':{'type':Sequelize[_0x6d6d('0x2')]},'destaccountcode':{'type':Sequelize[_0x6d6d('0x2')]},'destcontext':{'type':Sequelize[_0x6d6d('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x6d6d('0x3')]},'destuniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x6d6d('0x2')]},'starttime':{'type':Sequelize[_0x6d6d('0x4')]},'answertime':{'type':Sequelize[_0x6d6d('0x4')]},'endtime':{'type':Sequelize[_0x6d6d('0x4')]},'lastevent':{'type':Sequelize[_0x6d6d('0x2')],'comment':_0x6d6d('0x5')},'routeId':{'type':Sequelize[_0x6d6d('0x3')]},'duration':{'type':Sequelize[_0x6d6d('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x6d6d('0x3')]}};
\ No newline at end of file
+var _0x9c44=['STRING','INTEGER','DATE','called,connect,complete'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9c44,0x178));var _0x49c4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9c44[_0x543084];return _0x306a57;};'use strict';var Sequelize=require('sequelize');module['exports']={'privilege':{'type':Sequelize[_0x49c4('0x0')]},'channel':{'type':Sequelize[_0x49c4('0x0')]},'channelstate':{'type':Sequelize[_0x49c4('0x1')]},'channelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'calleridnum':{'type':Sequelize[_0x49c4('0x0')]},'calleridname':{'type':Sequelize[_0x49c4('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x49c4('0x0')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x49c4('0x0')]},'exten':{'type':Sequelize[_0x49c4('0x0')]},'priority':{'type':Sequelize[_0x49c4('0x1')]},'uniqueid':{'type':Sequelize[_0x49c4('0x0')]},'linkedid':{'type':Sequelize[_0x49c4('0x0')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x49c4('0x1')]},'destchannelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridnum':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridname':{'type':Sequelize[_0x49c4('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x49c4('0x0')]},'destaccountcode':{'type':Sequelize[_0x49c4('0x0')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x49c4('0x0')]},'destpriority':{'type':Sequelize[_0x49c4('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x49c4('0x0')]},'dialstatus':{'type':Sequelize[_0x49c4('0x0')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x49c4('0x2')]},'endtime':{'type':Sequelize[_0x49c4('0x2')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x49c4('0x3')},'routeId':{'type':Sequelize[_0x49c4('0x1')]},'duration':{'type':Sequelize[_0x49c4('0x1')]},'holdtime':{'type':Sequelize[_0x49c4('0x1')]},'billableseconds':{'type':Sequelize[_0x49c4('0x1')]}};
\ No newline at end of file
index 6e8c6dd..a0cff4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb6=['../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','json','update','then','destroy','sendStatus','error','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','pick','merge','where','VIRTUAL','filter','VoiceDialReport','include','findAll','rows','catch','show','params','includeAll','options','create','body','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x209b13,_0x508ad5){var _0x1428a6=function(_0x491cc9){while(--_0x491cc9){_0x209b13['push'](_0x209b13['shift']());}};_0x1428a6(++_0x508ad5);}(_0xddb6,0x1d3));var _0x6ddb=function(_0xc88652,_0xa60371){_0xc88652=_0xc88652-0x0;var _0x5ee5ce=_0xddb6[_0xc88652];return _0x5ee5ce;};'use strict';var emlformat=require(_0x6ddb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6ddb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6ddb('0x2'));var moment=require(_0x6ddb('0x3'));var BPromise=require(_0x6ddb('0x4'));var Mustache=require('mustache');var util=require(_0x6ddb('0x5'));var path=require(_0x6ddb('0x6'));var sox=require(_0x6ddb('0x7'));var csv=require('to-csv');var ejs=require(_0x6ddb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6ddb('0x9'));var squel=require(_0x6ddb('0xa'));var crypto=require(_0x6ddb('0xb'));var jsforce=require(_0x6ddb('0xc'));var deskjs=require(_0x6ddb('0xd'));var toCsv=require(_0x6ddb('0xe'));var querystring=require(_0x6ddb('0xf'));var Papa=require('papaparse');var Redis=require(_0x6ddb('0x10'));var authService=require(_0x6ddb('0x11'));var qs=require(_0x6ddb('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6ddb('0x13'));var logger=require(_0x6ddb('0x14'))(_0x6ddb('0x15'));var utils=require(_0x6ddb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6ddb('0x17'));var db=require(_0x6ddb('0x18'))['db'];function respondWithStatusCode(_0x21f0ac,_0xc3af25){_0xc3af25=_0xc3af25||0xcc;return function(_0x280955){if(_0x280955){return _0x21f0ac['sendStatus'](_0xc3af25);}return _0x21f0ac[_0x6ddb('0x19')](_0xc3af25)['end']();};}function respondWithResult(_0xcd4923,_0x49931f){_0x49931f=_0x49931f||0xc8;return function(_0x198c67){if(_0x198c67){return _0xcd4923[_0x6ddb('0x19')](_0x49931f)['json'](_0x198c67);}};}function respondWithFilteredResult(_0xa2f5e7,_0x39d958){return function(_0x183ca6){if(_0x183ca6){var _0x3842ce=typeof _0x39d958[_0x6ddb('0x1a')]===_0x6ddb('0x1b')&&typeof _0x39d958[_0x6ddb('0x1c')]===_0x6ddb('0x1b');var _0x1a9c4e=_0x183ca6[_0x6ddb('0x1d')];var _0x433dc4=_0x3842ce?0x0:_0x39d958['offset'];var _0x582aed=_0x3842ce?_0x183ca6[_0x6ddb('0x1d')]:_0x39d958[_0x6ddb('0x1a')]+_0x39d958[_0x6ddb('0x1c')];var _0xdc6bff;if(_0x582aed>=_0x1a9c4e){_0x582aed=_0x1a9c4e;_0xdc6bff=0xc8;}else{_0xdc6bff=0xce;}_0xa2f5e7[_0x6ddb('0x19')](_0xdc6bff);return _0xa2f5e7['set']('Content-Range',_0x433dc4+'-'+_0x582aed+'/'+_0x1a9c4e)[_0x6ddb('0x1e')](_0x183ca6);}return null;};}function patchUpdates(_0x1977f2){return function(_0x5c7896){try{jsonpatch['apply'](_0x5c7896,_0x1977f2,!![]);}catch(_0x1f5edc){return BPromise['reject'](_0x1f5edc);}return _0x5c7896['save']();};}function saveUpdates(_0x38f112,_0x5f3790){return function(_0x106352){if(_0x106352){return _0x106352[_0x6ddb('0x1f')](_0x38f112)[_0x6ddb('0x20')](function(_0x17d211){return _0x17d211;});}return null;};}function removeEntity(_0x59beda,_0x9b216f){return function(_0x2c1559){if(_0x2c1559){return _0x2c1559[_0x6ddb('0x21')]()[_0x6ddb('0x20')](function(){_0x59beda[_0x6ddb('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1afae5,_0x1a534f){return function(_0x26f2ed){if(!_0x26f2ed){_0x1afae5[_0x6ddb('0x22')](0x194);}return _0x26f2ed;};}function handleError(_0xcdb94,_0x59b5a2){_0x59b5a2=_0x59b5a2||0x1f4;return function(_0x1a3725){logger[_0x6ddb('0x23')](_0x1a3725['stack']);if(_0x1a3725[_0x6ddb('0x24')]){delete _0x1a3725[_0x6ddb('0x24')];}_0xcdb94[_0x6ddb('0x19')](_0x59b5a2)['send'](_0x1a3725);};}exports[_0x6ddb('0x25')]=function(_0x150355,_0x4fe12d){var _0x5e4fa7={},_0x85eb1a={},_0x3e1932={'count':0x0,'rows':[]};var _0x1f1d18=_[_0x6ddb('0x26')](db['VoiceDialReport'][_0x6ddb('0x27')],function(_0x1befcf){return{'name':_0x1befcf[_0x6ddb('0x28')],'type':_0x1befcf[_0x6ddb('0x29')][_0x6ddb('0x2a')]};});_0x85eb1a[_0x6ddb('0x2b')]=_[_0x6ddb('0x26')](_0x1f1d18,_0x6ddb('0x24'));_0x85eb1a[_0x6ddb('0x2c')]=_[_0x6ddb('0x2d')](_0x150355['query']);_0x85eb1a[_0x6ddb('0x2e')]=_[_0x6ddb('0x2f')](_0x85eb1a[_0x6ddb('0x2b')],_0x85eb1a[_0x6ddb('0x2c')]);_0x5e4fa7['attributes']=_[_0x6ddb('0x2f')](_0x85eb1a[_0x6ddb('0x2b')],qs['fields'](_0x150355['query'][_0x6ddb('0x30')]));_0x5e4fa7[_0x6ddb('0x31')]=_0x5e4fa7[_0x6ddb('0x31')]['length']?_0x5e4fa7[_0x6ddb('0x31')]:_0x85eb1a[_0x6ddb('0x2b')];if(!_0x150355[_0x6ddb('0x2c')]['hasOwnProperty'](_0x6ddb('0x32'))){_0x5e4fa7[_0x6ddb('0x1c')]=qs[_0x6ddb('0x1c')](_0x150355[_0x6ddb('0x2c')]['limit']);_0x5e4fa7[_0x6ddb('0x1a')]=qs[_0x6ddb('0x1a')](_0x150355[_0x6ddb('0x2c')][_0x6ddb('0x1a')]);}_0x5e4fa7[_0x6ddb('0x33')]=qs['sort'](_0x150355['query']['sort']);_0x5e4fa7['where']=qs[_0x6ddb('0x2e')](_[_0x6ddb('0x34')](_0x150355[_0x6ddb('0x2c')],_0x85eb1a[_0x6ddb('0x2e')]),_0x1f1d18);if(_0x150355['query']['filter']){_0x5e4fa7['where']=_[_0x6ddb('0x35')](_0x5e4fa7[_0x6ddb('0x36')],{'$or':_[_0x6ddb('0x26')](_0x1f1d18,function(_0x385d0b){if(_0x385d0b[_0x6ddb('0x29')]!==_0x6ddb('0x37')){var _0x10dc65={};_0x10dc65[_0x385d0b[_0x6ddb('0x24')]]={'$like':'%'+_0x150355[_0x6ddb('0x2c')][_0x6ddb('0x38')]+'%'};return _0x10dc65;}})});}_0x5e4fa7=_[_0x6ddb('0x35')]({},_0x5e4fa7,_0x150355['options']);var _0x10b05a={'where':_0x5e4fa7['where']};return db[_0x6ddb('0x39')][_0x6ddb('0x1d')](_0x10b05a)['then'](function(_0x314267){_0x3e1932['count']=_0x314267;if(_0x150355[_0x6ddb('0x2c')]['includeAll']){_0x5e4fa7[_0x6ddb('0x3a')]=[{'all':!![]}];}return db[_0x6ddb('0x39')][_0x6ddb('0x3b')](_0x5e4fa7);})['then'](function(_0x3360ff){_0x3e1932[_0x6ddb('0x3c')]=_0x3360ff;return _0x3e1932;})[_0x6ddb('0x20')](respondWithFilteredResult(_0x4fe12d,_0x5e4fa7))[_0x6ddb('0x3d')](handleError(_0x4fe12d,null));};exports[_0x6ddb('0x3e')]=function(_0x5d5c0a,_0x383506){var _0x12bbd0={'raw':!![],'where':{'id':_0x5d5c0a[_0x6ddb('0x3f')]['id']}},_0x54c09a={};_0x54c09a[_0x6ddb('0x2b')]=_[_0x6ddb('0x2d')](db['VoiceDialReport'][_0x6ddb('0x27')]);_0x54c09a[_0x6ddb('0x2c')]=_[_0x6ddb('0x2d')](_0x5d5c0a[_0x6ddb('0x2c')]);_0x54c09a['filters']=_[_0x6ddb('0x2f')](_0x54c09a['model'],_0x54c09a[_0x6ddb('0x2c')]);_0x12bbd0[_0x6ddb('0x31')]=_[_0x6ddb('0x2f')](_0x54c09a['model'],qs['fields'](_0x5d5c0a[_0x6ddb('0x2c')][_0x6ddb('0x30')]));_0x12bbd0[_0x6ddb('0x31')]=_0x12bbd0[_0x6ddb('0x31')]['length']?_0x12bbd0[_0x6ddb('0x31')]:_0x54c09a[_0x6ddb('0x2b')];if(_0x5d5c0a[_0x6ddb('0x2c')][_0x6ddb('0x40')]){_0x12bbd0[_0x6ddb('0x3a')]=[{'all':!![]}];}_0x12bbd0=_[_0x6ddb('0x35')]({},_0x12bbd0,_0x5d5c0a[_0x6ddb('0x41')]);return db[_0x6ddb('0x39')]['find'](_0x12bbd0)['then'](handleEntityNotFound(_0x383506,null))[_0x6ddb('0x20')](respondWithResult(_0x383506,null))[_0x6ddb('0x3d')](handleError(_0x383506,null));};exports[_0x6ddb('0x42')]=function(_0x31b2f2,_0x1d0a0b){return db[_0x6ddb('0x39')][_0x6ddb('0x42')](_0x31b2f2['body'],{})[_0x6ddb('0x20')](respondWithResult(_0x1d0a0b,0xc9))['catch'](handleError(_0x1d0a0b,null));};exports[_0x6ddb('0x1f')]=function(_0x33ede8,_0x4fc568){if(_0x33ede8[_0x6ddb('0x43')]['id']){delete _0x33ede8[_0x6ddb('0x43')]['id'];}return db[_0x6ddb('0x39')][_0x6ddb('0x44')]({'where':{'id':_0x33ede8['params']['id']}})[_0x6ddb('0x20')](handleEntityNotFound(_0x4fc568,null))[_0x6ddb('0x20')](saveUpdates(_0x33ede8['body'],null))[_0x6ddb('0x20')](respondWithResult(_0x4fc568,null))[_0x6ddb('0x3d')](handleError(_0x4fc568,null));};exports[_0x6ddb('0x21')]=function(_0x5295e6,_0x38a1ec){return db['VoiceDialReport'][_0x6ddb('0x44')]({'where':{'id':_0x5295e6[_0x6ddb('0x3f')]['id']}})[_0x6ddb('0x20')](handleEntityNotFound(_0x38a1ec,null))[_0x6ddb('0x20')](removeEntity(_0x38a1ec,null))['catch'](handleError(_0x38a1ec,null));};exports[_0x6ddb('0x45')]=function(_0x24410d,_0x47db6d){return db['VoiceDialReport']['describe']()[_0x6ddb('0x20')](respondWithResult(_0x47db6d,null))['catch'](handleError(_0x47db6d,null));};
\ No newline at end of file
+var _0x9c17=['sendStatus','status','offset','undefined','limit','count','set','json','save','update','then','end','error','stack','name','send','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','include','VoiceDialReport','findAll','rows','catch','show','params','find','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util'];(function(_0x57c80f,_0x43a4f3){var _0x166b31=function(_0x352cd7){while(--_0x352cd7){_0x57c80f['push'](_0x57c80f['shift']());}};_0x166b31(++_0x43a4f3);}(_0x9c17,0x111));var _0x79c1=function(_0x292bab,_0x18b725){_0x292bab=_0x292bab-0x0;var _0x3a1de1=_0x9c17[_0x292bab];return _0x3a1de1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x79c1('0x0'));var zipdir=require(_0x79c1('0x1'));var jsonpatch=require(_0x79c1('0x2'));var rp=require('request-promise');var moment=require(_0x79c1('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x79c1('0x4'));var sox=require(_0x79c1('0x5'));var csv=require(_0x79c1('0x6'));var ejs=require(_0x79c1('0x7'));var fs=require('fs');var fs_extra=require(_0x79c1('0x8'));var _=require(_0x79c1('0x9'));var squel=require(_0x79c1('0xa'));var crypto=require(_0x79c1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x79c1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x79c1('0xd'));var Papa=require(_0x79c1('0xe'));var Redis=require(_0x79c1('0xf'));var authService=require(_0x79c1('0x10'));var qs=require(_0x79c1('0x11'));var as=require(_0x79c1('0x12'));var hardwareService=require(_0x79c1('0x13'));var logger=require(_0x79c1('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x79c1('0x15'));var licenseUtil=require(_0x79c1('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ccd8e,_0x17c30b){_0x17c30b=_0x17c30b||0xcc;return function(_0x56a2ba){if(_0x56a2ba){return _0x3ccd8e[_0x79c1('0x17')](_0x17c30b);}return _0x3ccd8e[_0x79c1('0x18')](_0x17c30b)['end']();};}function respondWithResult(_0x5d4bd4,_0x564bb0){_0x564bb0=_0x564bb0||0xc8;return function(_0xb7397b){if(_0xb7397b){return _0x5d4bd4['status'](_0x564bb0)['json'](_0xb7397b);}};}function respondWithFilteredResult(_0x357162,_0x44b51a){return function(_0x1315f1){if(_0x1315f1){var _0xad5d=typeof _0x44b51a[_0x79c1('0x19')]===_0x79c1('0x1a')&&typeof _0x44b51a[_0x79c1('0x1b')]==='undefined';var _0x56eede=_0x1315f1[_0x79c1('0x1c')];var _0x2aa582=_0xad5d?0x0:_0x44b51a[_0x79c1('0x19')];var _0x3c17f1=_0xad5d?_0x1315f1[_0x79c1('0x1c')]:_0x44b51a[_0x79c1('0x19')]+_0x44b51a[_0x79c1('0x1b')];var _0x320244;if(_0x3c17f1>=_0x56eede){_0x3c17f1=_0x56eede;_0x320244=0xc8;}else{_0x320244=0xce;}_0x357162['status'](_0x320244);return _0x357162[_0x79c1('0x1d')]('Content-Range',_0x2aa582+'-'+_0x3c17f1+'/'+_0x56eede)[_0x79c1('0x1e')](_0x1315f1);}return null;};}function patchUpdates(_0x344229){return function(_0x5e85c6){try{jsonpatch['apply'](_0x5e85c6,_0x344229,!![]);}catch(_0x1f20fa){return BPromise['reject'](_0x1f20fa);}return _0x5e85c6[_0x79c1('0x1f')]();};}function saveUpdates(_0x34862e,_0x4f721a){return function(_0x4a3b54){if(_0x4a3b54){return _0x4a3b54[_0x79c1('0x20')](_0x34862e)[_0x79c1('0x21')](function(_0x14f46c){return _0x14f46c;});}return null;};}function removeEntity(_0x3cd5e6,_0x343a63){return function(_0x820025){if(_0x820025){return _0x820025['destroy']()[_0x79c1('0x21')](function(){_0x3cd5e6[_0x79c1('0x18')](0xcc)[_0x79c1('0x22')]();});}};}function handleEntityNotFound(_0x51f407,_0x4cc35){return function(_0x43f50b){if(!_0x43f50b){_0x51f407[_0x79c1('0x17')](0x194);}return _0x43f50b;};}function handleError(_0x5b7b68,_0x2409e8){_0x2409e8=_0x2409e8||0x1f4;return function(_0x31e37b){logger[_0x79c1('0x23')](_0x31e37b[_0x79c1('0x24')]);if(_0x31e37b[_0x79c1('0x25')]){delete _0x31e37b['name'];}_0x5b7b68[_0x79c1('0x18')](_0x2409e8)[_0x79c1('0x26')](_0x31e37b);};}exports['index']=function(_0x3f2f12,_0x415f6c){var _0x4ee335={},_0x30a3fd={},_0x1a2d6a={'count':0x0,'rows':[]};var _0x13d663=_['map'](db['VoiceDialReport'][_0x79c1('0x27')],function(_0x59d1a8){return{'name':_0x59d1a8[_0x79c1('0x28')],'type':_0x59d1a8[_0x79c1('0x29')][_0x79c1('0x2a')]};});_0x30a3fd[_0x79c1('0x2b')]=_['map'](_0x13d663,_0x79c1('0x25'));_0x30a3fd[_0x79c1('0x2c')]=_[_0x79c1('0x2d')](_0x3f2f12[_0x79c1('0x2c')]);_0x30a3fd[_0x79c1('0x2e')]=_[_0x79c1('0x2f')](_0x30a3fd['model'],_0x30a3fd[_0x79c1('0x2c')]);_0x4ee335[_0x79c1('0x30')]=_[_0x79c1('0x2f')](_0x30a3fd[_0x79c1('0x2b')],qs[_0x79c1('0x31')](_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x31')]));_0x4ee335[_0x79c1('0x30')]=_0x4ee335[_0x79c1('0x30')][_0x79c1('0x32')]?_0x4ee335[_0x79c1('0x30')]:_0x30a3fd[_0x79c1('0x2b')];if(!_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x33')](_0x79c1('0x34'))){_0x4ee335[_0x79c1('0x1b')]=qs[_0x79c1('0x1b')](_0x3f2f12[_0x79c1('0x2c')]['limit']);_0x4ee335['offset']=qs[_0x79c1('0x19')](_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x19')]);}_0x4ee335[_0x79c1('0x35')]=qs['sort'](_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x36')]);_0x4ee335[_0x79c1('0x37')]=qs[_0x79c1('0x2e')](_[_0x79c1('0x38')](_0x3f2f12['query'],_0x30a3fd['filters']),_0x13d663);if(_0x3f2f12['query'][_0x79c1('0x39')]){_0x4ee335[_0x79c1('0x37')]=_[_0x79c1('0x3a')](_0x4ee335[_0x79c1('0x37')],{'$or':_[_0x79c1('0x3b')](_0x13d663,function(_0x3058d5){if(_0x3058d5[_0x79c1('0x29')]!=='VIRTUAL'){var _0x45f10c={};_0x45f10c[_0x3058d5[_0x79c1('0x25')]]={'$like':'%'+_0x3f2f12['query']['filter']+'%'};return _0x45f10c;}})});}_0x4ee335=_['merge']({},_0x4ee335,_0x3f2f12[_0x79c1('0x3c')]);var _0x248b1c={'where':_0x4ee335[_0x79c1('0x37')]};return db['VoiceDialReport']['count'](_0x248b1c)['then'](function(_0xc197c1){_0x1a2d6a[_0x79c1('0x1c')]=_0xc197c1;if(_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x3d')]){_0x4ee335[_0x79c1('0x3e')]=[{'all':!![]}];}return db[_0x79c1('0x3f')][_0x79c1('0x40')](_0x4ee335);})[_0x79c1('0x21')](function(_0x59e094){_0x1a2d6a[_0x79c1('0x41')]=_0x59e094;return _0x1a2d6a;})[_0x79c1('0x21')](respondWithFilteredResult(_0x415f6c,_0x4ee335))[_0x79c1('0x42')](handleError(_0x415f6c,null));};exports[_0x79c1('0x43')]=function(_0x1fc65e,_0x42d550){var _0x4d3168={'raw':!![],'where':{'id':_0x1fc65e[_0x79c1('0x44')]['id']}},_0x375f57={};_0x375f57[_0x79c1('0x2b')]=_[_0x79c1('0x2d')](db['VoiceDialReport'][_0x79c1('0x27')]);_0x375f57[_0x79c1('0x2c')]=_[_0x79c1('0x2d')](_0x1fc65e['query']);_0x375f57[_0x79c1('0x2e')]=_[_0x79c1('0x2f')](_0x375f57['model'],_0x375f57[_0x79c1('0x2c')]);_0x4d3168['attributes']=_[_0x79c1('0x2f')](_0x375f57['model'],qs[_0x79c1('0x31')](_0x1fc65e[_0x79c1('0x2c')][_0x79c1('0x31')]));_0x4d3168[_0x79c1('0x30')]=_0x4d3168[_0x79c1('0x30')]['length']?_0x4d3168[_0x79c1('0x30')]:_0x375f57[_0x79c1('0x2b')];if(_0x1fc65e[_0x79c1('0x2c')]['includeAll']){_0x4d3168[_0x79c1('0x3e')]=[{'all':!![]}];}_0x4d3168=_[_0x79c1('0x3a')]({},_0x4d3168,_0x1fc65e[_0x79c1('0x3c')]);return db[_0x79c1('0x3f')][_0x79c1('0x45')](_0x4d3168)[_0x79c1('0x21')](handleEntityNotFound(_0x42d550,null))[_0x79c1('0x21')](respondWithResult(_0x42d550,null))[_0x79c1('0x42')](handleError(_0x42d550,null));};exports[_0x79c1('0x46')]=function(_0x3e485d,_0x50235a){return db[_0x79c1('0x3f')][_0x79c1('0x46')](_0x3e485d[_0x79c1('0x47')],{})[_0x79c1('0x21')](respondWithResult(_0x50235a,0xc9))[_0x79c1('0x42')](handleError(_0x50235a,null));};exports[_0x79c1('0x20')]=function(_0x1fad10,_0x41867b){if(_0x1fad10[_0x79c1('0x47')]['id']){delete _0x1fad10['body']['id'];}return db[_0x79c1('0x3f')][_0x79c1('0x45')]({'where':{'id':_0x1fad10[_0x79c1('0x44')]['id']}})[_0x79c1('0x21')](handleEntityNotFound(_0x41867b,null))['then'](saveUpdates(_0x1fad10[_0x79c1('0x47')],null))['then'](respondWithResult(_0x41867b,null))[_0x79c1('0x42')](handleError(_0x41867b,null));};exports[_0x79c1('0x48')]=function(_0x206c77,_0x49ee46){return db[_0x79c1('0x3f')]['find']({'where':{'id':_0x206c77[_0x79c1('0x44')]['id']}})[_0x79c1('0x21')](handleEntityNotFound(_0x49ee46,null))['then'](removeEntity(_0x49ee46,null))[_0x79c1('0x42')](handleError(_0x49ee46,null));};exports[_0x79c1('0x49')]=function(_0x26958e,_0x4d40c5){return db[_0x79c1('0x3f')][_0x79c1('0x49')]()[_0x79c1('0x21')](respondWithResult(_0x4d40c5,null))['catch'](handleError(_0x4d40c5,null));};
\ No newline at end of file
index 624deeb..103c6ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5173=['./voiceDialReport.attributes','exports','define','VoiceDialReport','uniqueid','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x59405a,_0x540604){var _0x5adf5b=function(_0x454b1f){while(--_0x454b1f){_0x59405a['push'](_0x59405a['shift']());}};_0x5adf5b(++_0x540604);}(_0x5173,0x109));var _0x3517=function(_0x486c56,_0x523826){_0x486c56=_0x486c56-0x0;var _0x85864e=_0x5173[_0x486c56];return _0x85864e;};'use strict';var _=require(_0x3517('0x0'));var util=require(_0x3517('0x1'));var logger=require(_0x3517('0x2'))('api');var moment=require(_0x3517('0x3'));var BPromise=require('bluebird');var rp=require(_0x3517('0x4'));var fs=require('fs');var path=require(_0x3517('0x5'));var rimraf=require(_0x3517('0x6'));var config=require(_0x3517('0x7'));var attributes=require(_0x3517('0x8'));module[_0x3517('0x9')]=function(_0x46d835,_0x2a0b0c){return _0x46d835[_0x3517('0xa')](_0x3517('0xb'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x3517('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x61c8=['uniqueid','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceDialReport'];(function(_0x3be627,_0x3e387a){var _0x29963d=function(_0xc86c74){while(--_0xc86c74){_0x3be627['push'](_0x3be627['shift']());}};_0x29963d(++_0x3e387a);}(_0x61c8,0x199));var _0x861c=function(_0xae0c01,_0x449c99){_0xae0c01=_0xae0c01-0x0;var _0x913e86=_0x61c8[_0xae0c01];return _0x913e86;};'use strict';var _=require(_0x861c('0x0'));var util=require(_0x861c('0x1'));var logger=require(_0x861c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x861c('0x3'));var rp=require(_0x861c('0x4'));var fs=require('fs');var path=require(_0x861c('0x5'));var rimraf=require(_0x861c('0x6'));var config=require(_0x861c('0x7'));var attributes=require('./voiceDialReport.attributes');module[_0x861c('0x8')]=function(_0xb72943,_0x56630d){return _0xb72943[_0x861c('0x9')](_0x861c('0xa'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x861c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 59bfcb8..e6ee088 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa833=['../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateVoiceDialReport','VoiceDialReport','create','options','raw','catch','update','body','where','attributes','limit','UpdateVoiceDialReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x5ba9dd,_0x7f59bf){var _0xf9d2e5=function(_0x2c991b){while(--_0x2c991b){_0x5ba9dd['push'](_0x5ba9dd['shift']());}};_0xf9d2e5(++_0x7f59bf);}(_0xa833,0x1cd));var _0x3a83=function(_0x152493,_0x437242){_0x152493=_0x152493-0x0;var _0x47233a=_0xa833[_0x152493];return _0x47233a;};'use strict';var _=require(_0x3a83('0x0'));var util=require(_0x3a83('0x1'));var moment=require(_0x3a83('0x2'));var BPromise=require(_0x3a83('0x3'));var rs=require(_0x3a83('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3a83('0x5'))['db'];var utils=require(_0x3a83('0x6'));var logger=require(_0x3a83('0x7'))(_0x3a83('0x8'));var config=require(_0x3a83('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3a83('0xa')][_0x3a83('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x19e7ac,_0x246c50,_0x2eea8c){return new BPromise(function(_0x3ddf4a,_0xd3d9f8){return client[_0x3a83('0xc')](_0x19e7ac,_0x2eea8c)[_0x3a83('0xd')](function(_0x25cd60){logger[_0x3a83('0xe')](_0x3a83('0xf'),_0x246c50,'request\x20sent');logger[_0x3a83('0x10')](_0x3a83('0x11'),_0x246c50,_0x3a83('0x12'),JSON[_0x3a83('0x13')](_0x25cd60));if(_0x25cd60[_0x3a83('0x14')]){if(_0x25cd60[_0x3a83('0x14')][_0x3a83('0x15')]===0x1f4){logger['error'](_0x3a83('0xf'),_0x246c50,_0x25cd60[_0x3a83('0x14')][_0x3a83('0x16')]);return _0xd3d9f8(_0x25cd60[_0x3a83('0x14')][_0x3a83('0x16')]);}logger['error'](_0x3a83('0xf'),_0x246c50,_0x25cd60[_0x3a83('0x14')]['message']);return _0x3ddf4a(_0x25cd60[_0x3a83('0x14')][_0x3a83('0x16')]);}else{logger[_0x3a83('0xe')](_0x3a83('0xf'),_0x246c50,'request\x20sent');_0x3ddf4a(_0x25cd60[_0x3a83('0x17')][_0x3a83('0x16')]);}})['catch'](function(_0xedfeb1){logger[_0x3a83('0x14')](_0x3a83('0xf'),_0x246c50,_0xedfeb1);_0xd3d9f8(_0xedfeb1);});});}exports[_0x3a83('0x18')]=function(_0x5f2634){var _0x56ff1b=this;return new Promise(function(_0x466b3e,_0x3b0546){return db[_0x3a83('0x19')][_0x3a83('0x1a')](_0x5f2634['body'],{'raw':_0x5f2634[_0x3a83('0x1b')]?_0x5f2634[_0x3a83('0x1b')][_0x3a83('0x1c')]===undefined?!![]:![]:!![]})[_0x3a83('0xd')](function(_0x3a32d3){logger[_0x3a83('0xe')]('CreateVoiceDialReport',_0x5f2634);logger[_0x3a83('0x10')](_0x3a83('0x18'),_0x5f2634,JSON['stringify'](_0x3a32d3));_0x466b3e(_0x3a32d3);})[_0x3a83('0x1d')](function(_0x4b8fc9){logger['error'](_0x3a83('0x18'),_0x4b8fc9['message'],_0x5f2634);_0x3b0546(_0x56ff1b[_0x3a83('0x14')](0x1f4,_0x4b8fc9[_0x3a83('0x16')]));});});};exports['UpdateVoiceDialReport']=function(_0xd43244){var _0x3fe63f=this;return new Promise(function(_0x3c5e5e,_0x3c8135){return db[_0x3a83('0x19')][_0x3a83('0x1e')](_0xd43244[_0x3a83('0x1f')],{'raw':_0xd43244[_0x3a83('0x1b')]?_0xd43244[_0x3a83('0x1b')][_0x3a83('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd43244[_0x3a83('0x1b')]?_0xd43244['options'][_0x3a83('0x20')]||null:null,'attributes':_0xd43244[_0x3a83('0x1b')]?_0xd43244[_0x3a83('0x1b')][_0x3a83('0x21')]||null:null,'limit':_0xd43244[_0x3a83('0x1b')]?_0xd43244[_0x3a83('0x1b')][_0x3a83('0x22')]||null:null})['then'](function(_0x396fcc){logger[_0x3a83('0xe')](_0x3a83('0x23'),_0xd43244);logger[_0x3a83('0x10')](_0x3a83('0x23'),_0xd43244,JSON['stringify'](_0x396fcc));_0x3c5e5e(_0x396fcc);})[_0x3a83('0x1d')](function(_0x42e352){logger[_0x3a83('0x14')](_0x3a83('0x23'),_0x42e352[_0x3a83('0x16')],_0xd43244);_0x3c8135(_0x3fe63f['error'](0x1f4,_0x42e352[_0x3a83('0x16')]));});});};
\ No newline at end of file
+var _0x2648=['create','body','options','raw','then','stringify','UpdateVoiceDialReport','update','where','attributes','limit','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateVoiceDialReport'];(function(_0x272e40,_0x34b731){var _0x329681=function(_0x223e67){while(--_0x223e67){_0x272e40['push'](_0x272e40['shift']());}};_0x329681(++_0x34b731);}(_0x2648,0x19e));var _0x8264=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2648[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8264('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8264('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8264('0x2'));var db=require(_0x8264('0x3'))['db'];var utils=require(_0x8264('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8264('0x5'));var client=jayson[_0x8264('0x6')][_0x8264('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x19d049,_0x49465e,_0x542695){return new BPromise(function(_0x20e3e6,_0x34eef4){return client[_0x8264('0x8')](_0x19d049,_0x542695)['then'](function(_0x1cc30e){logger[_0x8264('0x9')](_0x8264('0xa'),_0x49465e,_0x8264('0xb'));logger[_0x8264('0xc')](_0x8264('0xd'),_0x49465e,_0x8264('0xb'),JSON['stringify'](_0x1cc30e));if(_0x1cc30e['error']){if(_0x1cc30e[_0x8264('0xe')][_0x8264('0xf')]===0x1f4){logger[_0x8264('0xe')](_0x8264('0xa'),_0x49465e,_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);return _0x34eef4(_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);}logger[_0x8264('0xe')](_0x8264('0xa'),_0x49465e,_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);return _0x20e3e6(_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);}else{logger[_0x8264('0x9')]('VoiceDialReport,\x20%s,\x20%s',_0x49465e,_0x8264('0xb'));_0x20e3e6(_0x1cc30e[_0x8264('0x11')][_0x8264('0x10')]);}})[_0x8264('0x12')](function(_0x1b42b8){logger[_0x8264('0xe')](_0x8264('0xa'),_0x49465e,_0x1b42b8);_0x34eef4(_0x1b42b8);});});}exports[_0x8264('0x13')]=function(_0x3ab96c){var _0x2e633b=this;return new Promise(function(_0x3746b6,_0x2bdce6){return db['VoiceDialReport'][_0x8264('0x14')](_0x3ab96c[_0x8264('0x15')],{'raw':_0x3ab96c['options']?_0x3ab96c[_0x8264('0x16')][_0x8264('0x17')]===undefined?!![]:![]:!![]})[_0x8264('0x18')](function(_0x5d42ac){logger[_0x8264('0x9')](_0x8264('0x13'),_0x3ab96c);logger[_0x8264('0xc')](_0x8264('0x13'),_0x3ab96c,JSON[_0x8264('0x19')](_0x5d42ac));_0x3746b6(_0x5d42ac);})['catch'](function(_0x3d72d7){logger[_0x8264('0xe')](_0x8264('0x13'),_0x3d72d7['message'],_0x3ab96c);_0x2bdce6(_0x2e633b[_0x8264('0xe')](0x1f4,_0x3d72d7[_0x8264('0x10')]));});});};exports[_0x8264('0x1a')]=function(_0x4f5a5c){var _0x317490=this;return new Promise(function(_0x4db2c0,_0x34db52){return db['VoiceDialReport'][_0x8264('0x1b')](_0x4f5a5c[_0x8264('0x15')],{'raw':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c[_0x8264('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c['options'][_0x8264('0x1c')]||null:null,'attributes':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c[_0x8264('0x16')][_0x8264('0x1d')]||null:null,'limit':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c[_0x8264('0x16')][_0x8264('0x1e')]||null:null})[_0x8264('0x18')](function(_0x3e44c2){logger[_0x8264('0x9')](_0x8264('0x1a'),_0x4f5a5c);logger[_0x8264('0xc')](_0x8264('0x1a'),_0x4f5a5c,JSON[_0x8264('0x19')](_0x3e44c2));_0x4db2c0(_0x3e44c2);})[_0x8264('0x12')](function(_0x3973dc){logger[_0x8264('0xe')](_0x8264('0x1a'),_0x3973dc[_0x8264('0x10')],_0x4f5a5c);_0x34db52(_0x317490[_0x8264('0xe')](0x1f4,_0x3973dc[_0x8264('0x10')]));});});};
\ No newline at end of file
index 33ae48b..6156e61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d9=['show','post','create','put','update','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','./voiceExtension.controller','get','index','/:id','isAuthenticated'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x44d9,0x183));var _0x944d=function(_0x5ca6bb,_0x5585d6){_0x5ca6bb=_0x5ca6bb-0x0;var _0x5a6fba=_0x44d9[_0x5ca6bb];return _0x5a6fba;};'use strict';var multer=require(_0x944d('0x0'));var util=require(_0x944d('0x1'));var path=require(_0x944d('0x2'));var timeout=require('connect-timeout');var express=require(_0x944d('0x3'));var router=express[_0x944d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x944d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x944d('0x6'));var controller=require(_0x944d('0x7'));router[_0x944d('0x8')]('/',auth['isAuthenticated'](),controller[_0x944d('0x9')]);router['get'](_0x944d('0xa'),auth[_0x944d('0xb')](),controller[_0x944d('0xc')]);router[_0x944d('0xd')]('/',auth[_0x944d('0xb')](),controller[_0x944d('0xe')]);router[_0x944d('0xd')]('/:id/applications',auth[_0x944d('0xb')](),controller['addApplications']);router[_0x944d('0xf')](_0x944d('0xa'),auth[_0x944d('0xb')](),controller[_0x944d('0x10')]);router['delete'](_0x944d('0xa'),auth[_0x944d('0xb')](),controller[_0x944d('0x11')]);module[_0x944d('0x12')]=router;
\ No newline at end of file
+var _0x335f=['put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','./voiceExtension.controller','get','isAuthenticated','/:id','show','post','/:id/applications','addApplications'];(function(_0x194618,_0x2b8535){var _0x3a6638=function(_0x3853f6){while(--_0x3853f6){_0x194618['push'](_0x194618['shift']());}};_0x3a6638(++_0x2b8535);}(_0x335f,0x1cc));var _0xf335=function(_0x11b239,_0x39c5ab){_0x11b239=_0x11b239-0x0;var _0x7a3f22=_0x335f[_0x11b239];return _0x7a3f22;};'use strict';var multer=require(_0xf335('0x0'));var util=require(_0xf335('0x1'));var path=require(_0xf335('0x2'));var timeout=require(_0xf335('0x3'));var express=require(_0xf335('0x4'));var router=express[_0xf335('0x5')]();var fs_extra=require(_0xf335('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf335('0x7'));router[_0xf335('0x8')]('/',auth[_0xf335('0x9')](),controller['index']);router[_0xf335('0x8')](_0xf335('0xa'),auth[_0xf335('0x9')](),controller[_0xf335('0xb')]);router[_0xf335('0xc')]('/',auth[_0xf335('0x9')](),controller['create']);router[_0xf335('0xc')](_0xf335('0xd'),auth[_0xf335('0x9')](),controller[_0xf335('0xe')]);router[_0xf335('0xf')](_0xf335('0xa'),auth[_0xf335('0x9')](),controller['update']);router[_0xf335('0x10')](_0xf335('0xa'),auth[_0xf335('0x9')](),controller[_0xf335('0x11')]);module[_0xf335('0x12')]=router;
\ No newline at end of file
index 1dbfbaa..0a64d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa28=['internal','inbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','STRING','compositeIndex','NoOp','ENUM','inbound'];(function(_0x5e738a,_0x2b0ab4){var _0x27d917=function(_0x35ffb5){while(--_0x35ffb5){_0x5e738a['push'](_0x5e738a['shift']());}};_0x27d917(++_0x2b0ab4);}(_0xaa28,0x1ca));var _0x8aa2=function(_0x1e91eb,_0x5829a3){_0x1e91eb=_0x1e91eb-0x0;var _0x2af75a=_0xaa28[_0x1e91eb];return _0x2af75a;};'use strict';var Sequelize=require(_0x8aa2('0x0'));module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x8aa2('0x1')],'allowNull':![],'unique':_0x8aa2('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x8aa2('0x2')},'tag':{'type':Sequelize[_0x8aa2('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x8aa2('0x1')],'allowNull':![],'defaultValue':_0x8aa2('0x3')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x8aa2('0x4')](_0x8aa2('0x5'),'outbound',_0x8aa2('0x6'),_0x8aa2('0x7'),'outbound-fax',_0x8aa2('0x8'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x8aa2('0x1')]},'interval':{'type':Sequelize[_0x8aa2('0x1')],'allowNull':![],'defaultValue':_0x8aa2('0x9')},'IntervalId':{'type':Sequelize[_0x8aa2('0xa')]},'isApp':{'type':Sequelize[_0x8aa2('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x8aa2('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x8aa2('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x8aa2('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x8aa2('0xa')]},'recordingFormat':{'type':Sequelize[_0x8aa2('0x1')],'defaultValue':_0x8aa2('0xc')},'answer':{'type':Sequelize[_0x8aa2('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0x8aa2('0xd')],'get':function(_0x57af65){return this[_0x8aa2('0xe')](_0x8aa2('0xf'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x50ac=['compositeIndex','ENUM','inbound','outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','sequelize','STRING'];(function(_0x45e6c9,_0x31f591){var _0x538af0=function(_0x5a3304){while(--_0x5a3304){_0x45e6c9['push'](_0x45e6c9['shift']());}};_0x538af0(++_0x31f591);}(_0x50ac,0x148));var _0xc50a=function(_0x5c46fe,_0x56e4f7){_0x5c46fe=_0x5c46fe-0x0;var _0x497f6c=_0x50ac[_0x5c46fe];return _0x497f6c;};'use strict';var Sequelize=require(_0xc50a('0x0'));module['exports']={'context':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'unique':_0xc50a('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'unique':_0xc50a('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xc50a('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc50a('0x3')](_0xc50a('0x4'),_0xc50a('0x5'),'internal',_0xc50a('0x6'),_0xc50a('0x7'),_0xc50a('0x8'),_0xc50a('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xc50a('0x1')]},'interval':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'defaultValue':_0xc50a('0xa')},'IntervalId':{'type':Sequelize[_0xc50a('0xb')]},'isApp':{'type':Sequelize[_0xc50a('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc50a('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0xc50a('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0xc50a('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc50a('0xb')]},'recordingFormat':{'type':Sequelize[_0xc50a('0x1')],'defaultValue':_0xc50a('0xd')},'answer':{'type':Sequelize[_0xc50a('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0xc50a('0xe')],'get':function(_0x6c26d3){return this['getDataValue']('exten');}},'alias':{'type':Sequelize[_0xc50a('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 629741e..f81e9ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34af=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','redis','defaults','localhost','./voiceExtension.socket','register','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','filter','ignore','map','value','includes','find','type','name','sendStatus','error','send','index','rawAttributes','fieldName','key','keys','query','filters','intersection','attributes','model','fields','nolimit','sort','where','pick','merge','VIRTUAL','options','VoiceExtension','include','findAll','rows','catch','params','length','includeAll','create','body','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','internal','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','description','cutdigits','mandatoryDisposition','alias','context','addApplications','findOne','sequelize','transaction','VoiceExtensionId','isApp','true','createRouting','findAndCountAll','cast(priority\x20as\x20unsigned)','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x45825e,_0x2f44e4){var _0x4d2330=function(_0x1a6921){while(--_0x1a6921){_0x45825e['push'](_0x45825e['shift']());}};_0x4d2330(++_0x2f44e4);}(_0x34af,0x1a8));var _0xf34a=function(_0x4f464b,_0x3f42ec){_0x4f464b=_0x4f464b-0x0;var _0x4b75ab=_0x34af[_0x4f464b];return _0x4b75ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf34a('0x0'));var zipdir=require(_0xf34a('0x1'));var jsonpatch=require(_0xf34a('0x2'));var rp=require(_0xf34a('0x3'));var moment=require(_0xf34a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf34a('0x5'));var util=require(_0xf34a('0x6'));var path=require(_0xf34a('0x7'));var sox=require(_0xf34a('0x8'));var csv=require(_0xf34a('0x9'));var ejs=require(_0xf34a('0xa'));var fs=require('fs');var fs_extra=require(_0xf34a('0xb'));var _=require(_0xf34a('0xc'));var squel=require(_0xf34a('0xd'));var crypto=require(_0xf34a('0xe'));var jsforce=require(_0xf34a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xf34a('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf34a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf34a('0x11'))(_0xf34a('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf34a('0x13'));var db=require('../../mysqldb')['db'];config[_0xf34a('0x14')]=_[_0xf34a('0x15')](config[_0xf34a('0x14')],{'host':_0xf34a('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf34a('0x17'))[_0xf34a('0x18')](socket);function respondWithStatusCode(_0x16a949,_0x315dc5){_0x315dc5=_0x315dc5||0xcc;return function(_0xdba470){if(_0xdba470){return _0x16a949['sendStatus'](_0x315dc5);}return _0x16a949[_0xf34a('0x19')](_0x315dc5)['end']();};}function respondWithResult(_0x1f2f22,_0x36e8fe){_0x36e8fe=_0x36e8fe||0xc8;return function(_0x563fd8){if(_0x563fd8){return _0x1f2f22['status'](_0x36e8fe)['json'](_0x563fd8);}};}function respondWithFilteredResult(_0x33cda3,_0xf1aaaa){return function(_0x4e35de){if(_0x4e35de){var _0x187075=typeof _0xf1aaaa[_0xf34a('0x1a')]===_0xf34a('0x1b')&&typeof _0xf1aaaa[_0xf34a('0x1c')]===_0xf34a('0x1b');var _0x240fc0=_0x4e35de[_0xf34a('0x1d')];var _0x20751f=_0x187075?0x0:_0xf1aaaa[_0xf34a('0x1a')];var _0x34fae8=_0x187075?_0x4e35de[_0xf34a('0x1d')]:_0xf1aaaa['offset']+_0xf1aaaa[_0xf34a('0x1c')];var _0x37b4af;if(_0x34fae8>=_0x240fc0){_0x34fae8=_0x240fc0;_0x37b4af=0xc8;}else{_0x37b4af=0xce;}_0x33cda3[_0xf34a('0x19')](_0x37b4af);return _0x33cda3[_0xf34a('0x1e')](_0xf34a('0x1f'),_0x20751f+'-'+_0x34fae8+'/'+_0x240fc0)[_0xf34a('0x20')](_0x4e35de);}return null;};}function patchUpdates(_0x6bac45){return function(_0x24c552){try{jsonpatch[_0xf34a('0x21')](_0x24c552,_0x6bac45,!![]);}catch(_0xca5fc4){return BPromise['reject'](_0xca5fc4);}return _0x24c552[_0xf34a('0x22')]();};}function saveUpdates(_0xcf5331,_0x3bbec9){return function(_0x2c84c2){if(_0x2c84c2){return _0x2c84c2[_0xf34a('0x23')](_0xcf5331)[_0xf34a('0x24')](function(_0x7fc2bc){return _0x7fc2bc;});}return null;};}function removeEntity(_0x758a3f,_0x7cfa11){return function(_0x2d131c){if(_0x2d131c){return _0x2d131c[_0xf34a('0x25')]()[_0xf34a('0x24')](function(){var _0x154005=_0x2d131c[_0xf34a('0x26')]({'plain':!![]});var _0x1deb62=[{'name':_0xf34a('0x27'),'value':_0xf34a('0x28'),'ignore':![]},{'name':_0xf34a('0x29'),'value':_0xf34a('0x2a'),'ignore':![]},{'name':_0xf34a('0x2b'),'value':'internal','ignore':![]}];var _0x377783=_(_0x1deb62)[_0xf34a('0x2c')](_0xf34a('0x2d'))[_0xf34a('0x2e')](_0xf34a('0x2f'))[_0xf34a('0x2f')]();if(_[_0xf34a('0x30')](_0x377783,_0x154005['type'])){return;}var _0x35cd86=_[_0xf34a('0x31')](_0x1deb62,[_0xf34a('0x2f'),_0x154005[_0xf34a('0x32')]])[_0xf34a('0x33')];return db['UserProfileResource']['destroy']({'where':{'type':_0x35cd86,'resourceId':_0x154005['id']}})[_0xf34a('0x24')](function(){return _0x2d131c;});})[_0xf34a('0x24')](function(){_0x758a3f[_0xf34a('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x789ec1,_0xa119fd){return function(_0x35d66a){if(!_0x35d66a){_0x789ec1[_0xf34a('0x34')](0x194);}return _0x35d66a;};}function handleError(_0x32e368,_0x3ef597){_0x3ef597=_0x3ef597||0x1f4;return function(_0x2d4ecd){logger[_0xf34a('0x35')](_0x2d4ecd['stack']);if(_0x2d4ecd[_0xf34a('0x33')]){delete _0x2d4ecd[_0xf34a('0x33')];}_0x32e368[_0xf34a('0x19')](_0x3ef597)[_0xf34a('0x36')](_0x2d4ecd);};}exports[_0xf34a('0x37')]=function(_0x5cc124,_0x68e425){var _0xe536f0={},_0x2bda85={},_0x2d1676={'count':0x0,'rows':[]};var _0x225924=_[_0xf34a('0x2e')](db['VoiceExtension'][_0xf34a('0x38')],function(_0x180e11){return{'name':_0x180e11[_0xf34a('0x39')],'type':_0x180e11['type'][_0xf34a('0x3a')]};});_0x2bda85['model']=_[_0xf34a('0x2e')](_0x225924,_0xf34a('0x33'));_0x2bda85['query']=_[_0xf34a('0x3b')](_0x5cc124[_0xf34a('0x3c')]);_0x2bda85[_0xf34a('0x3d')]=_[_0xf34a('0x3e')](_0x2bda85['model'],_0x2bda85['query']);_0xe536f0[_0xf34a('0x3f')]=_[_0xf34a('0x3e')](_0x2bda85[_0xf34a('0x40')],qs['fields'](_0x5cc124[_0xf34a('0x3c')][_0xf34a('0x41')]));_0xe536f0['attributes']=_0xe536f0['attributes']['length']?_0xe536f0[_0xf34a('0x3f')]:_0x2bda85[_0xf34a('0x40')];if(!_0x5cc124[_0xf34a('0x3c')]['hasOwnProperty'](_0xf34a('0x42'))){_0xe536f0[_0xf34a('0x1c')]=qs[_0xf34a('0x1c')](_0x5cc124[_0xf34a('0x3c')][_0xf34a('0x1c')]);_0xe536f0[_0xf34a('0x1a')]=qs[_0xf34a('0x1a')](_0x5cc124['query'][_0xf34a('0x1a')]);}_0xe536f0['order']=qs['sort'](_0x5cc124[_0xf34a('0x3c')][_0xf34a('0x43')]);_0xe536f0[_0xf34a('0x44')]=qs['filters'](_[_0xf34a('0x45')](_0x5cc124[_0xf34a('0x3c')],_0x2bda85['filters']),_0x225924);if(_0x5cc124[_0xf34a('0x3c')][_0xf34a('0x2c')]){_0xe536f0[_0xf34a('0x44')]=_[_0xf34a('0x46')](_0xe536f0[_0xf34a('0x44')],{'$or':_['map'](_0x225924,function(_0x3428a7){if(_0x3428a7[_0xf34a('0x32')]!==_0xf34a('0x47')){var _0x1966c9={};_0x1966c9[_0x3428a7[_0xf34a('0x33')]]={'$like':'%'+_0x5cc124['query'][_0xf34a('0x2c')]+'%'};return _0x1966c9;}})});}_0xe536f0=_[_0xf34a('0x46')]({},_0xe536f0,_0x5cc124[_0xf34a('0x48')]);var _0x4329c9={'where':_0xe536f0[_0xf34a('0x44')]};return db[_0xf34a('0x49')][_0xf34a('0x1d')](_0x4329c9)[_0xf34a('0x24')](function(_0x3503e1){_0x2d1676['count']=_0x3503e1;if(_0x5cc124['query']['includeAll']){_0xe536f0[_0xf34a('0x4a')]=[{'all':!![]}];}return db[_0xf34a('0x49')][_0xf34a('0x4b')](_0xe536f0);})[_0xf34a('0x24')](function(_0x3489f5){_0x2d1676[_0xf34a('0x4c')]=_0x3489f5;return _0x2d1676;})[_0xf34a('0x24')](respondWithFilteredResult(_0x68e425,_0xe536f0))[_0xf34a('0x4d')](handleError(_0x68e425,null));};exports['show']=function(_0x10f86d,_0x11fc58){var _0x33066a={'raw':![],'where':{'id':_0x10f86d[_0xf34a('0x4e')]['id']}},_0x1c0207={};_0x1c0207['model']=_[_0xf34a('0x3b')](db['VoiceExtension'][_0xf34a('0x38')]);_0x1c0207[_0xf34a('0x3c')]=_[_0xf34a('0x3b')](_0x10f86d['query']);_0x1c0207[_0xf34a('0x3d')]=_[_0xf34a('0x3e')](_0x1c0207[_0xf34a('0x40')],_0x1c0207[_0xf34a('0x3c')]);_0x33066a['attributes']=_[_0xf34a('0x3e')](_0x1c0207['model'],qs[_0xf34a('0x41')](_0x10f86d[_0xf34a('0x3c')][_0xf34a('0x41')]));_0x33066a['attributes']=_0x33066a[_0xf34a('0x3f')][_0xf34a('0x4f')]?_0x33066a['attributes']:_0x1c0207[_0xf34a('0x40')];if(_0x10f86d[_0xf34a('0x3c')][_0xf34a('0x50')]){_0x33066a[_0xf34a('0x4a')]=[{'all':!![]}];}_0x33066a=_[_0xf34a('0x46')]({},_0x33066a,_0x10f86d[_0xf34a('0x48')]);return db['VoiceExtension'][_0xf34a('0x31')](_0x33066a)[_0xf34a('0x24')](handleEntityNotFound(_0x11fc58,null))[_0xf34a('0x24')](respondWithResult(_0x11fc58,null))[_0xf34a('0x4d')](handleError(_0x11fc58,null));};exports['destroy']=function(_0x35dd51,_0x2dafc7){return db[_0xf34a('0x49')][_0xf34a('0x31')]({'where':{'id':_0x35dd51[_0xf34a('0x4e')]['id']}})[_0xf34a('0x24')](handleEntityNotFound(_0x2dafc7,null))[_0xf34a('0x24')](removeEntity(_0x2dafc7,null))[_0xf34a('0x4d')](handleError(_0x2dafc7,null));};exports[_0xf34a('0x51')]=function(_0x43eb8a,_0x36bbba){if(_0x43eb8a[_0xf34a('0x52')][_0xf34a('0x32')]===_0xf34a('0x2a')&&!_['startsWith'](_0x43eb8a['body'][_0xf34a('0x53')],'_')){_0x43eb8a['body']['exten']='_'[_0xf34a('0x54')](_0x43eb8a['body'][_0xf34a('0x53')]);}return db[_0xf34a('0x49')][_0xf34a('0x51')](_0x43eb8a[_0xf34a('0x52')],{'raw':![]})['then'](function(_0x21b988){var _0x320072=_0x43eb8a['user'][_0xf34a('0x26')]({'plain':!![]});if(!_0x320072)throw new Error(_0xf34a('0x55'));if(_0x320072[_0xf34a('0x56')]===_0xf34a('0x57')){var _0x3a8692=_0x21b988[_0xf34a('0x26')]({'plain':!![]});var _0x492975=[{'name':'InboundRoutes','value':_0xf34a('0x28')},{'name':_0xf34a('0x29'),'value':_0xf34a('0x2a')},{'name':_0xf34a('0x2b'),'value':_0xf34a('0x58')}];var _0x402f06=_[_0xf34a('0x31')](_0x492975,[_0xf34a('0x2f'),_0x3a8692[_0xf34a('0x32')]])[_0xf34a('0x33')];return db[_0xf34a('0x59')][_0xf34a('0x31')]({'where':{'name':_0x402f06,'userProfileId':_0x320072[_0xf34a('0x5a')]},'raw':!![]})[_0xf34a('0x24')](function(_0x2d9215){if(_0x2d9215&&_0x2d9215[_0xf34a('0x5b')]===0x0){return db[_0xf34a('0x5c')]['create']({'name':_0x3a8692[_0xf34a('0x33')],'resourceId':_0x3a8692['id'],'type':_0x2d9215[_0xf34a('0x33')],'sectionId':_0x2d9215['id']},{})[_0xf34a('0x24')](function(){return _0x21b988;});}else{return _0x21b988;}})['catch'](function(_0x5236da){logger[_0xf34a('0x35')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5236da);throw _0x5236da;});}return _0x21b988;})['then'](respondWithResult(_0x36bbba,0xc9))['catch'](handleError(_0x36bbba,null));};exports[_0xf34a('0x23')]=function(_0x5eae96,_0x267177){if(_0x5eae96['body']['id']){delete _0x5eae96[_0xf34a('0x52')]['id'];}return db[_0xf34a('0x49')][_0xf34a('0x31')]({'where':{'id':_0x5eae96[_0xf34a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x267177,null))[_0xf34a('0x24')](function(_0x3d5b8c){if(_0x3d5b8c){return db['VoiceExtension'][_0xf34a('0x23')](_[_0xf34a('0x45')](_0x5eae96['body'],[_0xf34a('0x53'),'context',_0xf34a('0x5d'),'recordingFormat',_0xf34a('0x5e'),_0xf34a('0x5f'),_0xf34a('0x60')]),{'where':{'context':_0x3d5b8c[_0xf34a('0x61')],'exten':_0x3d5b8c[_0xf34a('0x53')]},'individualHooks':!![]})['then'](function(_0x516f34){return _0x516f34;});}return null;})[_0xf34a('0x24')](respondWithStatusCode(_0x267177,null))['catch'](handleError(_0x267177,null));};exports[_0xf34a('0x62')]=function(_0x740bff,_0x4c2cd7){return db[_0xf34a('0x49')][_0xf34a('0x63')]({'where':{'id':_0x740bff['params']['id']}})[_0xf34a('0x24')](function(_0x357f86){if(_0x357f86){return db[_0xf34a('0x64')][_0xf34a('0x65')](function(_0x170d3f){return db[_0xf34a('0x49')][_0xf34a('0x25')]({'where':{'VoiceExtensionId':_0x740bff['params']['id']},'transaction':_0x170d3f})[_0xf34a('0x24')](function(){var _0x516fec=_[_0xf34a('0x2e')](_0x740bff[_0xf34a('0x52')],function(_0x423d82){_0x423d82[_0xf34a('0x66')]=_0x740bff[_0xf34a('0x4e')]['id'];_0x423d82[_0xf34a('0x67')]=!![];return _0x423d82;});var _0x17a3c4=_0x740bff[_0xf34a('0x3c')]['rewriteDial']&&_0x740bff[_0xf34a('0x3c')]['rewriteDial']['toLowerCase']()===_0xf34a('0x68')?!![]:![];return _0x357f86[_0xf34a('0x69')](_0x516fec,_0x17a3c4);})[_0xf34a('0x24')](function(_0x572faa){return db[_0xf34a('0x49')]['bulkCreate'](_0x572faa,{'transaction':_0x170d3f});});})['then'](function(){return db[_0xf34a('0x49')][_0xf34a('0x6a')]({'where':{'isApp':!![],'VoiceExtensionId':_0x740bff[_0xf34a('0x4e')]['id']},'order':_0xf34a('0x6b')});});}})['then'](respondWithResult(_0x4c2cd7,null))[_0xf34a('0x4d')](handleError(_0x4c2cd7,null));};
\ No newline at end of file
+var _0x255b=['./voiceExtension.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','filter','ignore','value','includes','type','find','name','then','error','stack','send','index','map','VoiceExtension','rawAttributes','fieldName','query','keys','intersection','attributes','fields','length','model','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','create','outbound','startsWith','body','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','recordingFormat','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','createRouting','bulkCreate','findAndCountAll','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x255b,0x12f));var _0xb255=function(_0xa08cfd,_0x5d04fe){_0xa08cfd=_0xa08cfd-0x0;var _0x27b129=_0x255b[_0xa08cfd];return _0x27b129;};'use strict';var emlformat=require(_0xb255('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb255('0x1'));var jsonpatch=require(_0xb255('0x2'));var rp=require(_0xb255('0x3'));var moment=require(_0xb255('0x4'));var BPromise=require(_0xb255('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb255('0x6'));var sox=require('sox');var csv=require(_0xb255('0x7'));var ejs=require(_0xb255('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb255('0x9'));var squel=require(_0xb255('0xa'));var crypto=require(_0xb255('0xb'));var jsforce=require(_0xb255('0xc'));var deskjs=require(_0xb255('0xd'));var toCsv=require(_0xb255('0x7'));var querystring=require(_0xb255('0xe'));var Papa=require(_0xb255('0xf'));var Redis=require(_0xb255('0x10'));var authService=require(_0xb255('0x11'));var qs=require(_0xb255('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb255('0x13'));var logger=require(_0xb255('0x14'))(_0xb255('0x15'));var utils=require('../../config/utils');var config=require(_0xb255('0x16'));var licenseUtil=require(_0xb255('0x17'));var db=require('../../mysqldb')['db'];config[_0xb255('0x18')]=_[_0xb255('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb255('0x1a'))(new Redis(config[_0xb255('0x18')]));require(_0xb255('0x1b'))['register'](socket);function respondWithStatusCode(_0x5158e2,_0x1d1aeb){_0x1d1aeb=_0x1d1aeb||0xcc;return function(_0x161ad9){if(_0x161ad9){return _0x5158e2[_0xb255('0x1c')](_0x1d1aeb);}return _0x5158e2[_0xb255('0x1d')](_0x1d1aeb)[_0xb255('0x1e')]();};}function respondWithResult(_0x55eef3,_0x5d8fe1){_0x5d8fe1=_0x5d8fe1||0xc8;return function(_0x5a640e){if(_0x5a640e){return _0x55eef3[_0xb255('0x1d')](_0x5d8fe1)[_0xb255('0x1f')](_0x5a640e);}};}function respondWithFilteredResult(_0x386fdc,_0x55880c){return function(_0x54db30){if(_0x54db30){var _0x1954f2=typeof _0x55880c[_0xb255('0x20')]===_0xb255('0x21')&&typeof _0x55880c[_0xb255('0x22')]===_0xb255('0x21');var _0x58802a=_0x54db30['count'];var _0x2b9b34=_0x1954f2?0x0:_0x55880c[_0xb255('0x20')];var _0x3a7fdb=_0x1954f2?_0x54db30[_0xb255('0x23')]:_0x55880c[_0xb255('0x20')]+_0x55880c[_0xb255('0x22')];var _0x2674c3;if(_0x3a7fdb>=_0x58802a){_0x3a7fdb=_0x58802a;_0x2674c3=0xc8;}else{_0x2674c3=0xce;}_0x386fdc[_0xb255('0x1d')](_0x2674c3);return _0x386fdc[_0xb255('0x24')](_0xb255('0x25'),_0x2b9b34+'-'+_0x3a7fdb+'/'+_0x58802a)['json'](_0x54db30);}return null;};}function patchUpdates(_0x3c4b65){return function(_0x4b128d){try{jsonpatch[_0xb255('0x26')](_0x4b128d,_0x3c4b65,!![]);}catch(_0x2bac53){return BPromise['reject'](_0x2bac53);}return _0x4b128d['save']();};}function saveUpdates(_0x260b1b,_0x324ad8){return function(_0x4a37c3){if(_0x4a37c3){return _0x4a37c3[_0xb255('0x27')](_0x260b1b)['then'](function(_0x39d0e9){return _0x39d0e9;});}return null;};}function removeEntity(_0x33a1ba,_0x13bf47){return function(_0xd1c861){if(_0xd1c861){return _0xd1c861[_0xb255('0x28')]()['then'](function(){var _0x1bc51f=_0xd1c861[_0xb255('0x29')]({'plain':!![]});var _0x31d3aa=[{'name':_0xb255('0x2a'),'value':_0xb255('0x2b'),'ignore':![]},{'name':_0xb255('0x2c'),'value':'outbound','ignore':![]},{'name':_0xb255('0x2d'),'value':_0xb255('0x2e'),'ignore':![]}];var _0x1d07ad=_(_0x31d3aa)[_0xb255('0x2f')](_0xb255('0x30'))['map'](_0xb255('0x31'))['value']();if(_[_0xb255('0x32')](_0x1d07ad,_0x1bc51f[_0xb255('0x33')])){return;}var _0xea1f0a=_[_0xb255('0x34')](_0x31d3aa,[_0xb255('0x31'),_0x1bc51f['type']])[_0xb255('0x35')];return db['UserProfileResource']['destroy']({'where':{'type':_0xea1f0a,'resourceId':_0x1bc51f['id']}})[_0xb255('0x36')](function(){return _0xd1c861;});})[_0xb255('0x36')](function(){_0x33a1ba[_0xb255('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe84cf7,_0x225146){return function(_0xe28f77){if(!_0xe28f77){_0xe84cf7[_0xb255('0x1c')](0x194);}return _0xe28f77;};}function handleError(_0x5e7e56,_0x539e4e){_0x539e4e=_0x539e4e||0x1f4;return function(_0x154205){logger[_0xb255('0x37')](_0x154205[_0xb255('0x38')]);if(_0x154205['name']){delete _0x154205[_0xb255('0x35')];}_0x5e7e56[_0xb255('0x1d')](_0x539e4e)[_0xb255('0x39')](_0x154205);};}exports[_0xb255('0x3a')]=function(_0x53b36f,_0x33525a){var _0x980fb2={},_0x1a5df8={},_0x473d1e={'count':0x0,'rows':[]};var _0x542f48=_[_0xb255('0x3b')](db[_0xb255('0x3c')][_0xb255('0x3d')],function(_0x1562b2){return{'name':_0x1562b2[_0xb255('0x3e')],'type':_0x1562b2[_0xb255('0x33')]['key']};});_0x1a5df8['model']=_[_0xb255('0x3b')](_0x542f48,_0xb255('0x35'));_0x1a5df8[_0xb255('0x3f')]=_[_0xb255('0x40')](_0x53b36f[_0xb255('0x3f')]);_0x1a5df8['filters']=_[_0xb255('0x41')](_0x1a5df8['model'],_0x1a5df8[_0xb255('0x3f')]);_0x980fb2[_0xb255('0x42')]=_['intersection'](_0x1a5df8['model'],qs[_0xb255('0x43')](_0x53b36f[_0xb255('0x3f')][_0xb255('0x43')]));_0x980fb2['attributes']=_0x980fb2['attributes'][_0xb255('0x44')]?_0x980fb2[_0xb255('0x42')]:_0x1a5df8[_0xb255('0x45')];if(!_0x53b36f[_0xb255('0x3f')]['hasOwnProperty']('nolimit')){_0x980fb2['limit']=qs[_0xb255('0x22')](_0x53b36f['query'][_0xb255('0x22')]);_0x980fb2['offset']=qs['offset'](_0x53b36f['query'][_0xb255('0x20')]);}_0x980fb2[_0xb255('0x46')]=qs['sort'](_0x53b36f['query'][_0xb255('0x47')]);_0x980fb2[_0xb255('0x48')]=qs[_0xb255('0x49')](_[_0xb255('0x4a')](_0x53b36f[_0xb255('0x3f')],_0x1a5df8[_0xb255('0x49')]),_0x542f48);if(_0x53b36f['query'][_0xb255('0x2f')]){_0x980fb2[_0xb255('0x48')]=_[_0xb255('0x4b')](_0x980fb2[_0xb255('0x48')],{'$or':_['map'](_0x542f48,function(_0xf88e82){if(_0xf88e82[_0xb255('0x33')]!==_0xb255('0x4c')){var _0x59b0c0={};_0x59b0c0[_0xf88e82[_0xb255('0x35')]]={'$like':'%'+_0x53b36f['query'][_0xb255('0x2f')]+'%'};return _0x59b0c0;}})});}_0x980fb2=_['merge']({},_0x980fb2,_0x53b36f['options']);var _0x848070={'where':_0x980fb2['where']};return db[_0xb255('0x3c')][_0xb255('0x23')](_0x848070)[_0xb255('0x36')](function(_0x85fbf4){_0x473d1e[_0xb255('0x23')]=_0x85fbf4;if(_0x53b36f[_0xb255('0x3f')][_0xb255('0x4d')]){_0x980fb2[_0xb255('0x4e')]=[{'all':!![]}];}return db[_0xb255('0x3c')]['findAll'](_0x980fb2);})[_0xb255('0x36')](function(_0x8d5fc8){_0x473d1e[_0xb255('0x4f')]=_0x8d5fc8;return _0x473d1e;})[_0xb255('0x36')](respondWithFilteredResult(_0x33525a,_0x980fb2))[_0xb255('0x50')](handleError(_0x33525a,null));};exports[_0xb255('0x51')]=function(_0x51e2df,_0x5695ef){var _0x5d54ad={'raw':![],'where':{'id':_0x51e2df[_0xb255('0x52')]['id']}},_0xc25fae={};_0xc25fae[_0xb255('0x45')]=_[_0xb255('0x40')](db['VoiceExtension']['rawAttributes']);_0xc25fae['query']=_[_0xb255('0x40')](_0x51e2df[_0xb255('0x3f')]);_0xc25fae[_0xb255('0x49')]=_[_0xb255('0x41')](_0xc25fae[_0xb255('0x45')],_0xc25fae[_0xb255('0x3f')]);_0x5d54ad[_0xb255('0x42')]=_[_0xb255('0x41')](_0xc25fae['model'],qs[_0xb255('0x43')](_0x51e2df['query'][_0xb255('0x43')]));_0x5d54ad['attributes']=_0x5d54ad['attributes']['length']?_0x5d54ad[_0xb255('0x42')]:_0xc25fae[_0xb255('0x45')];if(_0x51e2df['query'][_0xb255('0x4d')]){_0x5d54ad[_0xb255('0x4e')]=[{'all':!![]}];}_0x5d54ad=_[_0xb255('0x4b')]({},_0x5d54ad,_0x51e2df[_0xb255('0x53')]);return db[_0xb255('0x3c')][_0xb255('0x34')](_0x5d54ad)[_0xb255('0x36')](handleEntityNotFound(_0x5695ef,null))['then'](respondWithResult(_0x5695ef,null))[_0xb255('0x50')](handleError(_0x5695ef,null));};exports[_0xb255('0x28')]=function(_0x486ab3,_0x2777d0){return db[_0xb255('0x3c')][_0xb255('0x34')]({'where':{'id':_0x486ab3[_0xb255('0x52')]['id']}})[_0xb255('0x36')](handleEntityNotFound(_0x2777d0,null))[_0xb255('0x36')](removeEntity(_0x2777d0,null))[_0xb255('0x50')](handleError(_0x2777d0,null));};exports[_0xb255('0x54')]=function(_0x579ef9,_0x532c75){if(_0x579ef9['body'][_0xb255('0x33')]===_0xb255('0x55')&&!_[_0xb255('0x56')](_0x579ef9[_0xb255('0x57')][_0xb255('0x58')],'_')){_0x579ef9[_0xb255('0x57')]['exten']='_'[_0xb255('0x59')](_0x579ef9['body']['exten']);}return db[_0xb255('0x3c')][_0xb255('0x54')](_0x579ef9['body'],{'raw':![]})[_0xb255('0x36')](function(_0x5549b0){var _0x174b5a=_0x579ef9['user'][_0xb255('0x29')]({'plain':!![]});if(!_0x174b5a)throw new Error(_0xb255('0x5a'));if(_0x174b5a[_0xb255('0x5b')]===_0xb255('0x5c')){var _0x1b724e=_0x5549b0[_0xb255('0x29')]({'plain':!![]});var _0x579b90=[{'name':_0xb255('0x2a'),'value':'inbound'},{'name':'OutboundRoutes','value':_0xb255('0x55')},{'name':_0xb255('0x2d'),'value':_0xb255('0x2e')}];var _0x7701b9=_[_0xb255('0x34')](_0x579b90,[_0xb255('0x31'),_0x1b724e[_0xb255('0x33')]])[_0xb255('0x35')];return db['UserProfileSection'][_0xb255('0x34')]({'where':{'name':_0x7701b9,'userProfileId':_0x174b5a[_0xb255('0x5d')]},'raw':!![]})['then'](function(_0x4900c4){if(_0x4900c4&&_0x4900c4['autoAssociation']===0x0){return db[_0xb255('0x5e')]['create']({'name':_0x1b724e[_0xb255('0x35')],'resourceId':_0x1b724e['id'],'type':_0x4900c4[_0xb255('0x35')],'sectionId':_0x4900c4['id']},{})['then'](function(){return _0x5549b0;});}else{return _0x5549b0;}})[_0xb255('0x50')](function(_0x2f937b){logger[_0xb255('0x37')](_0xb255('0x5f'),_0x2f937b);throw _0x2f937b;});}return _0x5549b0;})['then'](respondWithResult(_0x532c75,0xc9))['catch'](handleError(_0x532c75,null));};exports[_0xb255('0x27')]=function(_0x5f48dc,_0x5082d9){if(_0x5f48dc[_0xb255('0x57')]['id']){delete _0x5f48dc[_0xb255('0x57')]['id'];}return db['VoiceExtension'][_0xb255('0x34')]({'where':{'id':_0x5f48dc[_0xb255('0x52')]['id']}})[_0xb255('0x36')](handleEntityNotFound(_0x5082d9,null))[_0xb255('0x36')](function(_0xefbb03){if(_0xefbb03){return db[_0xb255('0x3c')][_0xb255('0x27')](_[_0xb255('0x4a')](_0x5f48dc[_0xb255('0x57')],[_0xb255('0x58'),_0xb255('0x60'),'description',_0xb255('0x61'),'cutdigits',_0xb255('0x62'),_0xb255('0x63')]),{'where':{'context':_0xefbb03[_0xb255('0x60')],'exten':_0xefbb03[_0xb255('0x58')]},'individualHooks':!![]})[_0xb255('0x36')](function(_0x5e60d9){return _0x5e60d9;});}return null;})[_0xb255('0x36')](respondWithStatusCode(_0x5082d9,null))['catch'](handleError(_0x5082d9,null));};exports[_0xb255('0x64')]=function(_0x528e19,_0x40ebfa){return db[_0xb255('0x3c')][_0xb255('0x65')]({'where':{'id':_0x528e19['params']['id']}})['then'](function(_0x1a3b84){if(_0x1a3b84){return db[_0xb255('0x66')][_0xb255('0x67')](function(_0x594730){return db[_0xb255('0x3c')][_0xb255('0x28')]({'where':{'VoiceExtensionId':_0x528e19['params']['id']},'transaction':_0x594730})[_0xb255('0x36')](function(){var _0xe9dded=_[_0xb255('0x3b')](_0x528e19[_0xb255('0x57')],function(_0x4011b1){_0x4011b1[_0xb255('0x68')]=_0x528e19[_0xb255('0x52')]['id'];_0x4011b1[_0xb255('0x69')]=!![];return _0x4011b1;});var _0x1da490=_0x528e19[_0xb255('0x3f')]['rewriteDial']&&_0x528e19['query'][_0xb255('0x6a')]['toLowerCase']()==='true'?!![]:![];return _0x1a3b84[_0xb255('0x6b')](_0xe9dded,_0x1da490);})['then'](function(_0x21866d){return db[_0xb255('0x3c')][_0xb255('0x6c')](_0x21866d,{'transaction':_0x594730});});})['then'](function(){return db[_0xb255('0x3c')][_0xb255('0x6d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x528e19['params']['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})[_0xb255('0x36')](respondWithResult(_0x40ebfa,null))[_0xb255('0x50')](handleError(_0x40ebfa,null));};
\ No newline at end of file
index 0da57ac..5c88454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1373=['hasOwnProperty','hook','exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','emit'];(function(_0xe18a03,_0x34d03c){var _0x5a56e4=function(_0x278508){while(--_0x278508){_0xe18a03['push'](_0xe18a03['shift']());}};_0x5a56e4(++_0x34d03c);}(_0x1373,0x139));var _0x3137=function(_0x57ad68,_0x4a2577){_0x57ad68=_0x57ad68-0x0;var _0x1158dd=_0x1373[_0x57ad68];return _0x1158dd;};'use strict';var EventEmitter=require(_0x3137('0x0'));var VoiceExtension=require(_0x3137('0x1'))['db'][_0x3137('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x3137('0x3')](0x0);var events={'afterCreate':_0x3137('0x4'),'afterUpdate':_0x3137('0x5'),'afterDestroy':'remove'};function emitEvent(_0xcb2bd0){return function(_0x5c13f2,_0x3c51e7,_0x3a71c2){VoiceExtensionEvents[_0x3137('0x6')](_0xcb2bd0+':'+_0x5c13f2['id'],_0x5c13f2);VoiceExtensionEvents[_0x3137('0x6')](_0xcb2bd0,_0x5c13f2);_0x3a71c2(null);};}for(var e in events){if(events[_0x3137('0x7')](e)){var event=events[e];VoiceExtension[_0x3137('0x8')](e,emitEvent(event));}}module[_0x3137('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0xe90f=['hook','exports','events','VoiceExtension','setMaxListeners','save','update','remove','emit'];(function(_0x31f849,_0x28cd20){var _0xc60979=function(_0x5e670d){while(--_0x5e670d){_0x31f849['push'](_0x31f849['shift']());}};_0xc60979(++_0x28cd20);}(_0xe90f,0xec));var _0xfe90=function(_0x58bf5f,_0x477093){_0x58bf5f=_0x58bf5f-0x0;var _0x2e5e88=_0xe90f[_0x58bf5f];return _0x2e5e88;};'use strict';var EventEmitter=require(_0xfe90('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0xfe90('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xfe90('0x2')](0x0);var events={'afterCreate':_0xfe90('0x3'),'afterUpdate':_0xfe90('0x4'),'afterDestroy':_0xfe90('0x5')};function emitEvent(_0x545927){return function(_0x44665f,_0x323f38,_0x53d8cf){VoiceExtensionEvents[_0xfe90('0x6')](_0x545927+':'+_0x44665f['id'],_0x44665f);VoiceExtensionEvents[_0xfe90('0x6')](_0x545927,_0x44665f);_0x53d8cf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xfe90('0x7')](e,emitEvent(event));}}module[_0xfe90('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
index 3101468..840674c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4905=['push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','none','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','wav','trunk','timeout','options','url','length','param','split','phone','prefix','${EXTEN}','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','toLowerCase','tag','CDR(tag)=','Set(CALLERID(all)=','playback','includes','app','appType','custom','answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','last','priority','concat','catch','define','Hangup','util','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','exten','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','inbound'];(function(_0x505a7d,_0x25e11f){var _0x17d880=function(_0x213c2){while(--_0x213c2){_0x505a7d['push'](_0x505a7d['shift']());}};_0x17d880(++_0x25e11f);}(_0x4905,0x1dd));var _0x5490=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0x4905[_0x18cd5b];return _0x5eaa52;};'use strict';var util=require(_0x5490('0x0'));var _=require(_0x5490('0x1'));var attributes=require(_0x5490('0x2'));module[_0x5490('0x3')]=function(_0xccc9d6){var _0x105bc4=_0xccc9d6[_0x5490('0x4')];function _0x3b611b(_0x1481d6){var _0x3ee948=0x2;var _0x517755=[{'type':_0x1481d6[_0x5490('0x5')],'app':_0x5490('0x6'),'appdata':_0x5490('0x7')+_0x1481d6[_0x5490('0x5')],'context':_0x1481d6['context'],'exten':_0x1481d6[_0x5490('0x8')],'priority':_0x3ee948++,'VoiceExtensionId':_0x1481d6['id']},{'type':_0x1481d6['type'],'app':_0x1481d6[_0x5490('0x9')]?'Set':_0x5490('0xa'),'appdata':_0x1481d6[_0x5490('0x9')]?_0x5490('0xb')+_0x1481d6[_0x5490('0x9')]:_0x5490('0xc'),'context':_0x1481d6[_0x5490('0xd')],'exten':_0x1481d6['exten'],'priority':_0x3ee948++,'VoiceExtensionId':_0x1481d6['id']}];if(_0x1481d6[_0x5490('0x5')]===_0x5490('0xe')){_0x517755[_0x5490('0xf')]({'type':'inbound','app':_0x5490('0x6'),'appdata':_0x5490('0x10')+_0x1481d6['id'],'context':_0x1481d6[_0x5490('0xd')],'exten':_0x1481d6[_0x5490('0x8')],'priority':_0x3ee948++,'VoiceExtensionId':_0x1481d6['id']});}_0x517755['push']({'type':_0x1481d6[_0x5490('0x5')],'app':_0x5490('0x6'),'appdata':_0x5490('0x11'),'context':_0x1481d6[_0x5490('0xd')],'exten':_0x1481d6[_0x5490('0x8')],'priority':_0x3ee948++,'VoiceExtensionId':_0x1481d6['id']},{'type':_0x1481d6[_0x5490('0x5')],'app':_0x5490('0x6'),'appdata':_0x5490('0x12'),'context':_0x1481d6[_0x5490('0xd')],'exten':_0x1481d6[_0x5490('0x8')],'priority':_0x3ee948++,'VoiceExtensionId':_0x1481d6['id']},{'type':_0x1481d6[_0x5490('0x5')],'app':_0x5490('0x6'),'appdata':_0x5490('0x13'),'context':_0x1481d6[_0x5490('0xd')],'exten':_0x1481d6[_0x5490('0x8')],'priority':_0x3ee948++,'VoiceExtensionId':_0x1481d6['id']});return _0x517755;}function _0x20c760(_0xe83865){var _0x2f6bbe=0x2;var _0xae682f=[{'type':_0x5490('0x14'),'app':_0x5490('0x6'),'appdata':_0x5490('0x15'),'context':_0xe83865['context'],'exten':_0xe83865['exten'],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':'outbound','app':_0xe83865[_0x5490('0x9')]?_0x5490('0x6'):_0x5490('0xa'),'appdata':_0xe83865['alias']?_0x5490('0xb')+_0xe83865['alias']:_0x5490('0xc'),'context':_0xe83865[_0x5490('0xd')],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':_0x5490('0x6'),'appdata':_0x5490('0x16')+(_0xe83865[_0x5490('0x17')]?_0x5490('0x18')+_0xe83865['cutdigits']+'}':'${EXTEN}'),'context':_0xe83865[_0x5490('0xd')],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':_0x5490('0x6'),'appdata':'CDR(routeid)='+_0xe83865['id'],'context':_0xe83865[_0x5490('0xd')],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':_0x5490('0x19'),'appdata':_0x5490('0x1a')+(_0x2f6bbe+0x2)+'):Goto('+(_0x2f6bbe+0x1)+')','context':_0xe83865[_0x5490('0xd')],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':'Set','appdata':_0xe83865[_0x5490('0x17')]?_0x5490('0x1b')+_0xe83865['cutdigits']+'}':_0x5490('0x1c'),'context':_0xe83865['context'],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':'Set','appdata':_0x5490('0x11'),'context':_0xe83865[_0x5490('0xd')],'exten':_0xe83865['exten'],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':_0x5490('0x6'),'appdata':_0x5490('0x12'),'context':_0xe83865[_0x5490('0xd')],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':_0x5490('0x6'),'appdata':_0x5490('0x13'),'context':_0xe83865['context'],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':'Set','appdata':_0x5490('0x1d')+_0xe83865['id'],'context':_0xe83865['context'],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']}];if(_0xe83865[_0x5490('0x1e')]('recordingFormat')&&_0xe83865['recordingFormat']!==_0x5490('0x1f')){_0xae682f[_0x5490('0xf')]({'type':_0x5490('0x14'),'app':_0x5490('0x6'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0xe83865['context'],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']},{'type':_0x5490('0x14'),'app':_0x5490('0x6'),'appdata':_0x5490('0x20')+_0xe83865[_0x5490('0x21')]||_0x5490('0x22'),'context':_0xe83865[_0x5490('0xd')],'exten':_0xe83865[_0x5490('0x8')],'priority':_0x2f6bbe++,'VoiceExtensionId':_0xe83865['id']});}return _0xae682f;}function _0x7ae656(_0x1ccd28){var _0x540aab=[{'name':_0x5490('0x23'),'param':0x0},{'name':_0x5490('0x24'),'param':0x1},{'name':_0x5490('0x25'),'param':0x2},{'name':_0x5490('0x26'),'param':0x3}];var _0x6a8a2e={};var _0xec8cb7=_0x1ccd28['split'](',');var _0x2a7cd0=[];for(var _0x8f497a=0x0;_0x8f497a<_0x540aab[_0x5490('0x27')];_0x8f497a++){switch(_0x540aab[_0x8f497a]['name']){case _0x5490('0x23'):_0x6a8a2e[_0x5490('0x23')]=_0xec8cb7[_0x540aab[_0x8f497a][_0x5490('0x28')]][_0x5490('0x29')]('/')[0x1];_0x6a8a2e[_0x5490('0x2a')]=_0xec8cb7[_0x540aab[_0x8f497a][_0x5490('0x28')]]['split']('/')[0x2];_0x6a8a2e[_0x5490('0x2b')]=_0x6a8a2e[_0x5490('0x2a')]?_0x6a8a2e['phone']['split']('$')[0x0]:undefined;_0x6a8a2e[_0x5490('0x2a')]=route[_0x5490('0x17')]?(_0x6a8a2e[_0x5490('0x2b')]||'')+_0x5490('0x18')+route[_0x5490('0x17')]+'}':(_0x6a8a2e[_0x5490('0x2b')]||'')+_0x5490('0x2c');_0x2a7cd0[_0x540aab[_0x8f497a][_0x5490('0x28')]]=[_0x5490('0x2d'),_0x6a8a2e[_0x5490('0x23')],_0x6a8a2e['phone']][_0x5490('0x2e')]('/');break;case _0x5490('0x25'):_0x6a8a2e[_0x5490('0x25')]=_0xec8cb7[_0x540aab[_0x8f497a][_0x5490('0x28')]];if(route['recordingFormat']!==_0x5490('0x1f')){if(_0x6a8a2e[_0x5490('0x25')][_0x5490('0x2f')](_0x5490('0x30'))<0x0){_0x6a8a2e[_0x5490('0x25')]+='U(xcally-mixmonitor-context)';}}else{_0x6a8a2e[_0x5490('0x25')]=_0x6a8a2e[_0x5490('0x25')][_0x5490('0x31')]('U(xcally-mixmonitor-context)','');}_0x2a7cd0[_0x540aab[_0x8f497a][_0x5490('0x28')]]=_0x6a8a2e[_0x5490('0x25')];break;default:_0x2a7cd0[_0x540aab[_0x8f497a][_0x5490('0x28')]]=_0xec8cb7[_0x540aab[_0x8f497a][_0x5490('0x28')]];}}return _0x2a7cd0['join'](',');}function _0x33f4ef(_0xab7a7a,_0x44fc04,_0x2fe5ee,_0x1981c2){return new Promise(function(_0x20b97c,_0x2aa245){var _0x385e80=[];if(_[_0x5490('0x32')](_0x44fc04))return _0x20b97c(_0x385e80);_0x105bc4[_0x5490('0x33')][_0x5490('0x34')]({'attributes':['id',_0x5490('0x35'),_0x5490('0x36')],'raw':!![]})[_0x5490('0x37')](function(_0x139996){for(var _0x59d260=0x0,_0x4b4f3d=0x0;_0x59d260<_0x44fc04[_0x5490('0x27')];_0x59d260++,_0x4b4f3d=0x0){var _0x204c9e=_0x44fc04[_0x59d260];var _0x5f4a60=[];var _0x3a8336=[];if(_0x204c9e['interval']!==_0x5490('0x38')){_0x204c9e[_0x5490('0x39')]=[_0x204c9e[_0x5490('0x35')]];}else{_0x204c9e['intervals']=_0x204c9e[_0x5490('0x36')]?_['map'](_['filter'](_0x139996,{'IntervalId':_0x204c9e[_0x5490('0x36')]}),_0x5490('0x35')):[];}_0x204c9e['context']=_0xab7a7a['context'];_0x204c9e[_0x5490('0x8')]=_0xab7a7a[_0x5490('0x8')];if(_0x204c9e[_0x5490('0x5')])_0x204c9e[_0x5490('0x5')]=_0x204c9e[_0x5490('0x5')][_0x5490('0x3a')]();if(_0xab7a7a[_0x5490('0x5')]===_0x5490('0x14')){if(_0x204c9e['hasOwnProperty']('tag')&&_0x204c9e['tag']&&_0x204c9e[_0x5490('0x3b')]!=='--'){_0x5f4a60[_0x5490('0xf')]({'type':_0x204c9e['type'][_0x5490('0x3a')](),'app':_0x5490('0x6'),'appdata':_0x5490('0x3c')+_0x204c9e[_0x5490('0x3b')],'context':_0xab7a7a['context'],'exten':_0xab7a7a[_0x5490('0x8')],'priority':_0x204c9e['intervals'][_0x5490('0x27')]+_0x2fe5ee+_0x4b4f3d++,'VoiceExtensionId':_0xab7a7a['id']});}_0x5f4a60[_0x5490('0xf')]({'type':_0x204c9e['type'][_0x5490('0x3a')](),'app':_0x5490('0x19'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x204c9e['callerID']?_0x5490('0x3d')+_0x204c9e['callerID']+')':'NoOp(No\x20number\x20available)'),'context':_0xab7a7a[_0x5490('0xd')],'exten':_0xab7a7a[_0x5490('0x8')],'priority':_0x204c9e[_0x5490('0x39')][_0x5490('0x27')]+_0x2fe5ee+_0x4b4f3d++,'VoiceExtensionId':_0xab7a7a['id']});}else{if(_0x204c9e[_0x5490('0x1e')]('answer')){if(['queue',_0x5490('0x3e')][_0x5490('0x3f')](_0x204c9e[_0x5490('0x40')][_0x5490('0x3a')]())&&_0x204c9e[_0x5490('0x41')]!==_0x5490('0x42')){if(_0x204c9e[_0x5490('0x43')]){_0x5f4a60['push']({'type':_0x204c9e[_0x5490('0x5')]['toLowerCase'](),'app':_0x5490('0x19'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0xab7a7a[_0x5490('0xd')],'exten':_0xab7a7a[_0x5490('0x8')],'priority':_0x204c9e[_0x5490('0x39')][_0x5490('0x27')]+_0x2fe5ee+_0x4b4f3d++,'VoiceExtensionId':_0xab7a7a['id']});_0x5f4a60['push']({'type':_0x204c9e[_0x5490('0x5')][_0x5490('0x3a')](),'app':_0x5490('0x6'),'appdata':_0x5490('0x44'),'context':_0xab7a7a[_0x5490('0xd')],'exten':_0xab7a7a[_0x5490('0x8')],'priority':_0x204c9e['intervals'][_0x5490('0x27')]+_0x2fe5ee+_0x4b4f3d++,'VoiceExtensionId':_0xab7a7a['id']});}else{_0x5f4a60[_0x5490('0xf')]({'type':_0x204c9e[_0x5490('0x5')][_0x5490('0x3a')](),'app':_0x5490('0x19'),'appdata':_0x5490('0x45'),'context':_0xab7a7a['context'],'exten':_0xab7a7a[_0x5490('0x8')],'priority':_0x204c9e[_0x5490('0x39')][_0x5490('0x27')]+_0x2fe5ee+_0x4b4f3d++,'VoiceExtensionId':_0xab7a7a['id']});_0x5f4a60[_0x5490('0xf')]({'type':_0x204c9e[_0x5490('0x5')][_0x5490('0x3a')](),'app':_0x5490('0x6'),'appdata':_0x5490('0x46'),'context':_0xab7a7a['context'],'exten':_0xab7a7a[_0x5490('0x8')],'priority':_0x204c9e[_0x5490('0x39')]['length']+_0x2fe5ee+_0x4b4f3d++,'VoiceExtensionId':_0xab7a7a['id']});}}}}for(var _0x4e89e6=0x0;_0x4e89e6<_0x204c9e[_0x5490('0x39')]['length'];_0x4e89e6++){var _0x4cb4f8=_0x2fe5ee+_0x204c9e[_0x5490('0x39')][_0x5490('0x27')];var _0x318dc7=_0x4e89e6===_0x204c9e[_0x5490('0x39')][_0x5490('0x27')]-0x1?_0x2fe5ee+_0x5f4a60[_0x5490('0x27')]+_0x3a8336[_0x5490('0x27')]+0x2:_0x2fe5ee+_0x4e89e6+0x1;_0x5f4a60[_0x5490('0x47')](_0x4e89e6,0x0,{'type':_0xab7a7a['type'],'app':_0x5490('0x48'),'appdata':_0x204c9e[_0x5490('0x39')][_0x4e89e6]+'?'+_0xab7a7a[_0x5490('0xd')]+',${EXTEN},'+_0x4cb4f8+':'+_0xab7a7a[_0x5490('0xd')]+_0x5490('0x49')+_0x318dc7,'exten':_0xab7a7a[_0x5490('0x8')],'context':_0xab7a7a[_0x5490('0xd')],'priority':_0x2fe5ee+_0x4e89e6,'VoiceExtensionId':_0xab7a7a['id']});}if(_0x1981c2&&_0x204c9e[_0x5490('0x41')]===_0x5490('0x4a'))_0x204c9e[_0x5490('0x4b')]=_0x7ae656(_0x204c9e[_0x5490('0x4b')]);_0x204c9e['priority']=_0x5f4a60[_0x5490('0x27')]?_[_0x5490('0x4c')](_0x5f4a60)[_0x5490('0x4d')]+0x1:_0x2fe5ee;_0x385e80=_[_0x5490('0x4e')](_0x385e80,_0x5f4a60,[_0x204c9e],_0x3a8336);_0x2fe5ee=_[_0x5490('0x4c')](_0x385e80)[_0x5490('0x4d')]+0x1;}return _0x20b97c(_0x385e80);})[_0x5490('0x4f')](function(_0x426604){_0x2aa245(_0x426604);});});}return _0xccc9d6[_0x5490('0x50')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0xb8d649,_0x8a3c92){var _0x1759ae=this;var _0x976302=_0x1759ae['type']===_0x5490('0x14')?_0x20c760(_0x1759ae):_0x3b611b(_0x1759ae);return _0x33f4ef(_0x1759ae,_0xb8d649,_['last'](_0x976302)[_0x5490('0x4d')]+0x1,_0x8a3c92)[_0x5490('0x37')](function(_0x466d94){var _0x57689d=_[_0x5490('0x4e')](_0x976302,_0x466d94);_0x57689d[_0x5490('0xf')]({'type':_0x1759ae['type'],'app':_0x5490('0x51'),'exten':_0x1759ae[_0x5490('0x8')],'context':_0x1759ae[_0x5490('0xd')],'priority':_[_0x5490('0x4c')](_0x57689d)[_0x5490('0x4d')]+0x1,'VoiceExtensionId':_0x1759ae['id']});return _0x57689d;});}}});};
\ No newline at end of file
+var _0xec14=['CDR(routeid)=','context','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','NoOp','CDR(destination)=','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','cutdigits','CDR(prefix)=${EXTEN:0:','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','push','_XCALLY_MIXMONITOR_FORMAT=','wav','timeout','options','url','name','trunk','split','phone','param','prefix','${EXTEN:','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','Interval','findAll','interval','IntervalId','then','length','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','answer','queue','includes','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','voice_extensions','Hangup','util','lodash','./voiceExtension.attributes','exports','models','Set','CDR(type)=','type','exten','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound'];(function(_0x529ef9,_0x844a63){var _0x2e97f5=function(_0x309a7f){while(--_0x309a7f){_0x529ef9['push'](_0x529ef9['shift']());}};_0x2e97f5(++_0x844a63);}(_0xec14,0xe9));var _0x4ec1=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xec14[_0x30ae5e];return _0x1f2e93;};'use strict';var util=require(_0x4ec1('0x0'));var _=require(_0x4ec1('0x1'));var attributes=require(_0x4ec1('0x2'));module[_0x4ec1('0x3')]=function(_0x17181f){var _0x16486e=_0x17181f[_0x4ec1('0x4')];function _0x563076(_0x332e5a){var _0x52bb52=0x2;var _0x220600=[{'type':_0x332e5a['type'],'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x6')+_0x332e5a[_0x4ec1('0x7')],'context':_0x332e5a['context'],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']},{'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x332e5a['alias']?_0x4ec1('0x5'):'NoOp','appdata':_0x332e5a[_0x4ec1('0x9')]?_0x4ec1('0xa')+_0x332e5a[_0x4ec1('0x9')]:_0x4ec1('0xb'),'context':_0x332e5a['context'],'exten':_0x332e5a['exten'],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']}];if(_0x332e5a[_0x4ec1('0x7')]===_0x4ec1('0xc')){_0x220600['push']({'type':'inbound','app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xd')+_0x332e5a['id'],'context':_0x332e5a[_0x4ec1('0xe')],'exten':_0x332e5a['exten'],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']});}_0x220600['push']({'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xf'),'context':_0x332e5a['context'],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']},{'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x10'),'context':_0x332e5a[_0x4ec1('0xe')],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']},{'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x4ec1('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x332e5a[_0x4ec1('0xe')],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']});return _0x220600;}function _0x325e3a(_0x490463){var _0x36dcb4=0x2;var _0x14dfda=[{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x12'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463['exten'],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x490463[_0x4ec1('0x9')]?'Set':_0x4ec1('0x13'),'appdata':_0x490463[_0x4ec1('0x9')]?_0x4ec1('0xa')+_0x490463[_0x4ec1('0x9')]:_0x4ec1('0xb'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x14')+(_0x490463['cutdigits']?'${EXTEN:'+_0x490463['cutdigits']+'}':_0x4ec1('0x15')),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xd')+_0x490463['id'],'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463['exten'],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x16'),'appdata':_0x4ec1('0x17')+(_0x36dcb4+0x2)+_0x4ec1('0x18')+(_0x36dcb4+0x1)+')','context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x490463[_0x4ec1('0x19')]?_0x4ec1('0x1a')+_0x490463[_0x4ec1('0x19')]+'}':'CDR(prefix)=noprefix','context':_0x490463['context'],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xf'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x10'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x1b'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':'outbound','app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x1c')+_0x490463['id'],'context':_0x490463['context'],'exten':_0x490463['exten'],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']}];if(_0x490463[_0x4ec1('0x1d')]('recordingFormat')&&_0x490463[_0x4ec1('0x1e')]!==_0x4ec1('0x1f')){_0x14dfda[_0x4ec1('0x20')]({'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x21')+_0x490463['recordingFormat']||_0x4ec1('0x22'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']});}return _0x14dfda;}function _0x1b9440(_0x4ec579){var _0x4a7261=[{'name':'trunk','param':0x0},{'name':_0x4ec1('0x23'),'param':0x1},{'name':_0x4ec1('0x24'),'param':0x2},{'name':_0x4ec1('0x25'),'param':0x3}];var _0x5adf12={};var _0x4a294c=_0x4ec579['split'](',');var _0x72c42e=[];for(var _0x1cc6a0=0x0;_0x1cc6a0<_0x4a7261['length'];_0x1cc6a0++){switch(_0x4a7261[_0x1cc6a0][_0x4ec1('0x26')]){case _0x4ec1('0x27'):_0x5adf12[_0x4ec1('0x27')]=_0x4a294c[_0x4a7261[_0x1cc6a0]['param']][_0x4ec1('0x28')]('/')[0x1];_0x5adf12[_0x4ec1('0x29')]=_0x4a294c[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]][_0x4ec1('0x28')]('/')[0x2];_0x5adf12[_0x4ec1('0x2b')]=_0x5adf12[_0x4ec1('0x29')]?_0x5adf12[_0x4ec1('0x29')][_0x4ec1('0x28')]('$')[0x0]:undefined;_0x5adf12[_0x4ec1('0x29')]=route['cutdigits']?(_0x5adf12[_0x4ec1('0x2b')]||'')+_0x4ec1('0x2c')+route['cutdigits']+'}':(_0x5adf12[_0x4ec1('0x2b')]||'')+_0x4ec1('0x15');_0x72c42e[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]]=[_0x4ec1('0x2d'),_0x5adf12[_0x4ec1('0x27')],_0x5adf12[_0x4ec1('0x29')]][_0x4ec1('0x2e')]('/');break;case _0x4ec1('0x24'):_0x5adf12[_0x4ec1('0x24')]=_0x4a294c[_0x4a7261[_0x1cc6a0]['param']];if(route['recordingFormat']!=='none'){if(_0x5adf12[_0x4ec1('0x24')][_0x4ec1('0x2f')](_0x4ec1('0x30'))<0x0){_0x5adf12[_0x4ec1('0x24')]+=_0x4ec1('0x30');}}else{_0x5adf12[_0x4ec1('0x24')]=_0x5adf12[_0x4ec1('0x24')][_0x4ec1('0x31')]('U(xcally-mixmonitor-context)','');}_0x72c42e[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]]=_0x5adf12[_0x4ec1('0x24')];break;default:_0x72c42e[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]]=_0x4a294c[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]];}}return _0x72c42e[_0x4ec1('0x2e')](',');}function _0x52e775(_0x4df30e,_0x9ba536,_0x10ca52,_0x4aafba){return new Promise(function(_0xb09b0f,_0x1155d9){var _0x5da2b3=[];if(_['isEmpty'](_0x9ba536))return _0xb09b0f(_0x5da2b3);_0x16486e[_0x4ec1('0x32')][_0x4ec1('0x33')]({'attributes':['id',_0x4ec1('0x34'),_0x4ec1('0x35')],'raw':!![]})[_0x4ec1('0x36')](function(_0x403e33){for(var _0x2914e3=0x0,_0x24bad4=0x0;_0x2914e3<_0x9ba536[_0x4ec1('0x37')];_0x2914e3++,_0x24bad4=0x0){var _0x4451c5=_0x9ba536[_0x2914e3];var _0x108bb4=[];var _0xc0228b=[];if(_0x4451c5[_0x4ec1('0x34')]!=='*,*,*,*'){_0x4451c5['intervals']=[_0x4451c5['interval']];}else{_0x4451c5[_0x4ec1('0x38')]=_0x4451c5['IntervalId']?_[_0x4ec1('0x39')](_[_0x4ec1('0x3a')](_0x403e33,{'IntervalId':_0x4451c5[_0x4ec1('0x35')]}),_0x4ec1('0x34')):[];}_0x4451c5[_0x4ec1('0xe')]=_0x4df30e[_0x4ec1('0xe')];_0x4451c5[_0x4ec1('0x8')]=_0x4df30e[_0x4ec1('0x8')];if(_0x4451c5[_0x4ec1('0x7')])_0x4451c5['type']=_0x4451c5[_0x4ec1('0x7')][_0x4ec1('0x3b')]();if(_0x4df30e[_0x4ec1('0x7')]===_0x4ec1('0x11')){if(_0x4451c5[_0x4ec1('0x1d')](_0x4ec1('0x3c'))&&_0x4451c5[_0x4ec1('0x3c')]&&_0x4451c5[_0x4ec1('0x3c')]!=='--'){_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5[_0x4ec1('0x7')]['toLowerCase'](),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x3d')+_0x4451c5[_0x4ec1('0x3c')],'context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e['exten'],'priority':_0x4451c5[_0x4ec1('0x38')]['length']+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5['type'][_0x4ec1('0x3b')](),'app':_0x4ec1('0x16'),'appdata':_0x4ec1('0x3e')+(_0x4451c5['callerID']?_0x4ec1('0x3f')+_0x4451c5[_0x4ec1('0x40')]+')':'NoOp(No\x20number\x20available)'),'context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e[_0x4ec1('0x8')],'priority':_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}else{if(_0x4451c5[_0x4ec1('0x1d')](_0x4ec1('0x41'))){if([_0x4ec1('0x42'),'playback'][_0x4ec1('0x43')](_0x4451c5[_0x4ec1('0x44')][_0x4ec1('0x3b')]())&&_0x4451c5[_0x4ec1('0x45')]!=='custom'){if(_0x4451c5[_0x4ec1('0x41')]){_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5[_0x4ec1('0x7')]['toLowerCase'](),'app':_0x4ec1('0x16'),'appdata':_0x4ec1('0x46'),'context':_0x4df30e['context'],'exten':_0x4df30e['exten'],'priority':_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});_0x108bb4['push']({'type':_0x4451c5[_0x4ec1('0x7')][_0x4ec1('0x3b')](),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x47'),'context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e[_0x4ec1('0x8')],'priority':_0x4451c5['intervals'][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}else{_0x108bb4['push']({'type':_0x4451c5[_0x4ec1('0x7')]['toLowerCase'](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x4df30e['context'],'exten':_0x4df30e['exten'],'priority':_0x4451c5['intervals'][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5[_0x4ec1('0x7')][_0x4ec1('0x3b')](),'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e[_0x4ec1('0x8')],'priority':_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}}}}for(var _0x1eb7f0=0x0;_0x1eb7f0<_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')];_0x1eb7f0++){var _0x1c419d=_0x10ca52+_0x4451c5[_0x4ec1('0x38')]['length'];var _0xda2bfd=_0x1eb7f0===_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]-0x1?_0x10ca52+_0x108bb4[_0x4ec1('0x37')]+_0xc0228b[_0x4ec1('0x37')]+0x2:_0x10ca52+_0x1eb7f0+0x1;_0x108bb4['splice'](_0x1eb7f0,0x0,{'type':_0x4df30e[_0x4ec1('0x7')],'app':_0x4ec1('0x48'),'appdata':_0x4451c5[_0x4ec1('0x38')][_0x1eb7f0]+'?'+_0x4df30e[_0x4ec1('0xe')]+_0x4ec1('0x49')+_0x1c419d+':'+_0x4df30e[_0x4ec1('0xe')]+',${EXTEN},'+_0xda2bfd,'exten':_0x4df30e[_0x4ec1('0x8')],'context':_0x4df30e[_0x4ec1('0xe')],'priority':_0x10ca52+_0x1eb7f0,'VoiceExtensionId':_0x4df30e['id']});}if(_0x4aafba&&_0x4451c5[_0x4ec1('0x45')]===_0x4ec1('0x4a'))_0x4451c5['appdata']=_0x1b9440(_0x4451c5[_0x4ec1('0x4b')]);_0x4451c5[_0x4ec1('0x4c')]=_0x108bb4[_0x4ec1('0x37')]?_[_0x4ec1('0x4d')](_0x108bb4)[_0x4ec1('0x4c')]+0x1:_0x10ca52;_0x5da2b3=_[_0x4ec1('0x4e')](_0x5da2b3,_0x108bb4,[_0x4451c5],_0xc0228b);_0x10ca52=_[_0x4ec1('0x4d')](_0x5da2b3)[_0x4ec1('0x4c')]+0x1;}return _0xb09b0f(_0x5da2b3);})[_0x4ec1('0x4f')](function(_0xa6a18c){_0x1155d9(_0xa6a18c);});});}return _0x17181f['define']('VoiceExtension',attributes,{'tableName':_0x4ec1('0x50'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x17714a,_0x21e256){var _0x5e16e3=this;var _0x1175b4=_0x5e16e3[_0x4ec1('0x7')]===_0x4ec1('0x11')?_0x325e3a(_0x5e16e3):_0x563076(_0x5e16e3);return _0x52e775(_0x5e16e3,_0x17714a,_['last'](_0x1175b4)[_0x4ec1('0x4c')]+0x1,_0x21e256)[_0x4ec1('0x36')](function(_0x90df6d){var _0x737194=_[_0x4ec1('0x4e')](_0x1175b4,_0x90df6d);_0x737194[_0x4ec1('0x20')]({'type':_0x5e16e3[_0x4ec1('0x7')],'app':_0x4ec1('0x51'),'exten':_0x5e16e3[_0x4ec1('0x8')],'context':_0x5e16e3[_0x4ec1('0xe')],'priority':_[_0x4ec1('0x4d')](_0x737194)[_0x4ec1('0x4c')]+0x1,'VoiceExtensionId':_0x5e16e3['id']});return _0x737194;});}}});};
\ No newline at end of file
index 6774393..0ee0564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c5=['rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceExtension','findAll','options','attributes','limit','include','map','model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x38f4c8,_0x488833){var _0x28f567=function(_0x411729){while(--_0x411729){_0x38f4c8['push'](_0x38f4c8['shift']());}};_0x28f567(++_0x488833);}(_0x37c5,0xa7));var _0x537c=function(_0x2bc550,_0x5c44fc){_0x2bc550=_0x2bc550-0x0;var _0x453fda=_0x37c5[_0x2bc550];return _0x453fda;};'use strict';var _=require('lodash');var util=require(_0x537c('0x0'));var moment=require(_0x537c('0x1'));var BPromise=require(_0x537c('0x2'));var rs=require(_0x537c('0x3'));var fs=require('fs');var Redis=require(_0x537c('0x4'));var db=require(_0x537c('0x5'))['db'];var utils=require(_0x537c('0x6'));var logger=require(_0x537c('0x7'))(_0x537c('0x8'));var config=require(_0x537c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x537c('0xa')][_0x537c('0xb')]({'port':0x232a});config[_0x537c('0xc')]=_['defaults'](config[_0x537c('0xc')],{'host':_0x537c('0xd'),'port':0x18eb});var socket=require(_0x537c('0xe'))(new Redis(config[_0x537c('0xc')]));require('./voiceExtension.socket')[_0x537c('0xf')](socket);function respondWithRpcPromise(_0x1d8c6f,_0x29c294,_0x579666){return new BPromise(function(_0x1459e0,_0x48fdeb){return client['request'](_0x1d8c6f,_0x579666)[_0x537c('0x10')](function(_0x53004e){logger[_0x537c('0x11')](_0x537c('0x12'),_0x29c294,_0x537c('0x13'));logger[_0x537c('0x14')](_0x537c('0x15'),_0x29c294,_0x537c('0x13'),JSON[_0x537c('0x16')](_0x53004e));if(_0x53004e[_0x537c('0x17')]){if(_0x53004e[_0x537c('0x17')]['code']===0x1f4){logger[_0x537c('0x17')](_0x537c('0x12'),_0x29c294,_0x53004e[_0x537c('0x17')][_0x537c('0x18')]);return _0x48fdeb(_0x53004e[_0x537c('0x17')][_0x537c('0x18')]);}logger[_0x537c('0x17')](_0x537c('0x12'),_0x29c294,_0x53004e[_0x537c('0x17')]['message']);return _0x1459e0(_0x53004e[_0x537c('0x17')]['message']);}else{logger['info'](_0x537c('0x12'),_0x29c294,_0x537c('0x13'));_0x1459e0(_0x53004e[_0x537c('0x19')]['message']);}})[_0x537c('0x1a')](function(_0x229ffd){logger['error']('VoiceExtension,\x20%s,\x20%s',_0x29c294,_0x229ffd);_0x48fdeb(_0x229ffd);});});}exports[_0x537c('0x1b')]=function(_0x49641d){var _0x59a481=this;return new Promise(function(_0x2307c7,_0x32be40){return db['VoiceExtension'][_0x537c('0x1c')]({'raw':_0x49641d[_0x537c('0x1d')]?_0x49641d['options']['raw']===undefined?!![]:![]:!![],'where':_0x49641d[_0x537c('0x1d')]?_0x49641d['options']['where']||null:null,'attributes':_0x49641d[_0x537c('0x1d')]?_0x49641d[_0x537c('0x1d')][_0x537c('0x1e')]||null:null,'limit':_0x49641d[_0x537c('0x1d')]?_0x49641d[_0x537c('0x1d')][_0x537c('0x1f')]||null:null,'include':_0x49641d['options']?_0x49641d[_0x537c('0x1d')][_0x537c('0x20')]?_[_0x537c('0x21')](_0x49641d[_0x537c('0x1d')][_0x537c('0x20')],function(_0x4b6af1){return{'model':db[_0x4b6af1['model']],'as':_0x4b6af1['as'],'attributes':_0x4b6af1['attributes'],'include':_0x4b6af1[_0x537c('0x20')]?_[_0x537c('0x21')](_0x4b6af1['include'],function(_0x3005a4){return{'model':db[_0x3005a4[_0x537c('0x22')]],'as':_0x3005a4['as'],'attributes':_0x3005a4[_0x537c('0x1e')],'include':_0x3005a4['include']?_['map'](_0x3005a4[_0x537c('0x20')],function(_0x44cc94){return{'model':db[_0x44cc94[_0x537c('0x22')]],'as':_0x44cc94['as'],'attributes':_0x44cc94[_0x537c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x537c('0x10')](function(_0x5ca8f6){logger[_0x537c('0x11')](_0x537c('0x1b'),_0x49641d);logger['debug']('GetVoiceExtension',_0x49641d,JSON['stringify'](_0x5ca8f6));_0x2307c7(_0x5ca8f6);})['catch'](function(_0x254996){logger[_0x537c('0x17')](_0x537c('0x1b'),_0x254996['message'],_0x49641d);_0x32be40(_0x59a481[_0x537c('0x17')](0x1f4,_0x254996[_0x537c('0x18')]));});});};
\ No newline at end of file
+var _0x4989=['stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','where','attributes','limit','include','map','model','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent'];(function(_0x59ea2e,_0x10a0af){var _0x364d17=function(_0x192824){while(--_0x192824){_0x59ea2e['push'](_0x59ea2e['shift']());}};_0x364d17(++_0x10a0af);}(_0x4989,0x79));var _0x9498=function(_0x9e0cb3,_0x9cd497){_0x9e0cb3=_0x9e0cb3-0x0;var _0x5926b7=_0x4989[_0x9e0cb3];return _0x5926b7;};'use strict';var _=require(_0x9498('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9498('0x1'));var rs=require(_0x9498('0x2'));var fs=require('fs');var Redis=require(_0x9498('0x3'));var db=require(_0x9498('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9498('0x5'));var config=require('../../config/environment');var jayson=require(_0x9498('0x6'));var client=jayson[_0x9498('0x7')]['http']({'port':0x232a});config[_0x9498('0x8')]=_[_0x9498('0x9')](config[_0x9498('0x8')],{'host':_0x9498('0xa'),'port':0x18eb});var socket=require(_0x9498('0xb'))(new Redis(config[_0x9498('0x8')]));require(_0x9498('0xc'))[_0x9498('0xd')](socket);function respondWithRpcPromise(_0x2cd88f,_0x212a2d,_0x1e7440){return new BPromise(function(_0x5ce9bf,_0x1926af){return client[_0x9498('0xe')](_0x2cd88f,_0x1e7440)[_0x9498('0xf')](function(_0x51f0b1){logger[_0x9498('0x10')](_0x9498('0x11'),_0x212a2d,'request\x20sent');logger['debug']('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x212a2d,_0x9498('0x12'),JSON[_0x9498('0x13')](_0x51f0b1));if(_0x51f0b1[_0x9498('0x14')]){if(_0x51f0b1[_0x9498('0x14')][_0x9498('0x15')]===0x1f4){logger[_0x9498('0x14')]('VoiceExtension,\x20%s,\x20%s',_0x212a2d,_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);return _0x1926af(_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);}logger[_0x9498('0x14')](_0x9498('0x11'),_0x212a2d,_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);return _0x5ce9bf(_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);}else{logger[_0x9498('0x10')](_0x9498('0x11'),_0x212a2d,_0x9498('0x12'));_0x5ce9bf(_0x51f0b1[_0x9498('0x17')][_0x9498('0x16')]);}})[_0x9498('0x18')](function(_0x5d775d){logger[_0x9498('0x14')](_0x9498('0x11'),_0x212a2d,_0x5d775d);_0x1926af(_0x5d775d);});});}exports[_0x9498('0x19')]=function(_0x192436){var _0x4e09d5=this;return new Promise(function(_0x2d14d3,_0x58521c){return db[_0x9498('0x1a')][_0x9498('0x1b')]({'raw':_0x192436[_0x9498('0x1c')]?_0x192436['options']['raw']===undefined?!![]:![]:!![],'where':_0x192436['options']?_0x192436[_0x9498('0x1c')][_0x9498('0x1d')]||null:null,'attributes':_0x192436['options']?_0x192436[_0x9498('0x1c')][_0x9498('0x1e')]||null:null,'limit':_0x192436[_0x9498('0x1c')]?_0x192436[_0x9498('0x1c')][_0x9498('0x1f')]||null:null,'include':_0x192436[_0x9498('0x1c')]?_0x192436[_0x9498('0x1c')][_0x9498('0x20')]?_[_0x9498('0x21')](_0x192436['options'][_0x9498('0x20')],function(_0x7c9682){return{'model':db[_0x7c9682[_0x9498('0x22')]],'as':_0x7c9682['as'],'attributes':_0x7c9682['attributes'],'include':_0x7c9682[_0x9498('0x20')]?_[_0x9498('0x21')](_0x7c9682[_0x9498('0x20')],function(_0x2f9262){return{'model':db[_0x2f9262[_0x9498('0x22')]],'as':_0x2f9262['as'],'attributes':_0x2f9262['attributes'],'include':_0x2f9262['include']?_[_0x9498('0x21')](_0x2f9262[_0x9498('0x20')],function(_0x191b4e){return{'model':db[_0x191b4e[_0x9498('0x22')]],'as':_0x191b4e['as'],'attributes':_0x191b4e[_0x9498('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9498('0xf')](function(_0xf47729){logger[_0x9498('0x10')](_0x9498('0x19'),_0x192436);logger['debug']('GetVoiceExtension',_0x192436,JSON[_0x9498('0x13')](_0xf47729));_0x2d14d3(_0xf47729);})['catch'](function(_0x5edc83){logger[_0x9498('0x14')](_0x9498('0x19'),_0x5edc83['message'],_0x192436);_0x58521c(_0x4e09d5['error'](0x1f4,_0x5edc83[_0x9498('0x16')]));});});};
\ No newline at end of file
index d0e5c15..7a83e31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['update','emit','removeListener','register','length','./voiceExtension.events'];(function(_0x3070ca,_0xf2d053){var _0x38ecd1=function(_0x2c176e){while(--_0x2c176e){_0x3070ca['push'](_0x3070ca['shift']());}};_0x38ecd1(++_0xf2d053);}(_0x326f,0xd1));var _0xf326=function(_0x54360a,_0x33ad7a){_0x54360a=_0x54360a-0x0;var _0x3d6270=_0x326f[_0x54360a];return _0x3d6270;};'use strict';var VoiceExtensionEvents=require(_0xf326('0x0'));var events=['save','remove',_0xf326('0x1')];function createListener(_0x330ddb,_0x22aabf){return function(_0x408257){_0x22aabf[_0xf326('0x2')](_0x330ddb,_0x408257);};}function removeListener(_0x120a26,_0x9445c6){return function(){VoiceExtensionEvents[_0xf326('0x3')](_0x120a26,_0x9445c6);};}exports[_0xf326('0x4')]=function(_0x3ace29){for(var _0x4c2249=0x0,_0x3c254d=events[_0xf326('0x5')];_0x4c2249<_0x3c254d;_0x4c2249++){var _0x165f95=events[_0x4c2249];var _0x1e7b8a=createListener('voiceExtension:'+_0x165f95,_0x3ace29);VoiceExtensionEvents['on'](_0x165f95,_0x1e7b8a);}};
\ No newline at end of file
+var _0x53ec=['length','voiceExtension:','./voiceExtension.events','save','remove','update','emit','removeListener'];(function(_0x5f15df,_0x1ff23f){var _0x5a7154=function(_0x1f8692){while(--_0x1f8692){_0x5f15df['push'](_0x5f15df['shift']());}};_0x5a7154(++_0x1ff23f);}(_0x53ec,0x192));var _0xc53e=function(_0x4a34e0,_0x29ff2f){_0x4a34e0=_0x4a34e0-0x0;var _0xb5ce1d=_0x53ec[_0x4a34e0];return _0xb5ce1d;};'use strict';var VoiceExtensionEvents=require(_0xc53e('0x0'));var events=[_0xc53e('0x1'),_0xc53e('0x2'),_0xc53e('0x3')];function createListener(_0x1b04cc,_0xe45c6d){return function(_0x51c435){_0xe45c6d[_0xc53e('0x4')](_0x1b04cc,_0x51c435);};}function removeListener(_0x4e954a,_0x2b90f6){return function(){VoiceExtensionEvents[_0xc53e('0x5')](_0x4e954a,_0x2b90f6);};}exports['register']=function(_0x2f1414){for(var _0x4f989b=0x0,_0x41a9e8=events[_0xc53e('0x6')];_0x4f989b<_0x41a9e8;_0x4f989b++){var _0x5d3b28=events[_0x4f989b];var _0x1616ac=createListener(_0xc53e('0x7')+_0x5d3b28,_0x2f1414);VoiceExtensionEvents['on'](_0x5d3b28,_0x1616ac);}};
\ No newline at end of file
index 4971efb..12a3ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1893=['delete','destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','create','put','update'];(function(_0x59f26e,_0xfcde74){var _0x246428=function(_0x2e2989){while(--_0x2e2989){_0x59f26e['push'](_0x59f26e['shift']());}};_0x246428(++_0xfcde74);}(_0x1893,0xa2));var _0x3189=function(_0x5c1ddc,_0x587040){_0x5c1ddc=_0x5c1ddc-0x0;var _0x542a11=_0x1893[_0x5c1ddc];return _0x542a11;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3189('0x0'));var timeout=require(_0x3189('0x1'));var express=require(_0x3189('0x2'));var router=express[_0x3189('0x3')]();var fs_extra=require(_0x3189('0x4'));var auth=require(_0x3189('0x5'));var interaction=require(_0x3189('0x6'));var config=require('../../config/environment');var controller=require(_0x3189('0x7'));router[_0x3189('0x8')]('/',auth[_0x3189('0x9')](),controller[_0x3189('0xa')]);router[_0x3189('0x8')](_0x3189('0xb'),auth[_0x3189('0x9')](),controller[_0x3189('0xc')]);router['get'](_0x3189('0xd'),auth['isAuthenticated'](),controller[_0x3189('0xe')]);router['post']('/',auth[_0x3189('0x9')](),controller[_0x3189('0xf')]);router[_0x3189('0x10')](_0x3189('0xb'),auth['isAuthenticated'](),controller[_0x3189('0x11')]);router[_0x3189('0x12')](_0x3189('0xb'),auth[_0x3189('0x9')](),controller[_0x3189('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x8f9d=['/:id/messages','getMessages','create','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','isAuthenticated','index','get','/:id'];(function(_0x6ca7f4,_0x51a5df){var _0x494fa6=function(_0x359532){while(--_0x359532){_0x6ca7f4['push'](_0x6ca7f4['shift']());}};_0x494fa6(++_0x51a5df);}(_0x8f9d,0x93));var _0xd8f9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x8f9d[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xd8f9('0x0'));var util=require('util');var path=require(_0xd8f9('0x1'));var timeout=require('connect-timeout');var express=require(_0xd8f9('0x2'));var router=express[_0xd8f9('0x3')]();var fs_extra=require(_0xd8f9('0x4'));var auth=require(_0xd8f9('0x5'));var interaction=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var controller=require(_0xd8f9('0x8'));router['get']('/',auth[_0xd8f9('0x9')](),controller[_0xd8f9('0xa')]);router[_0xd8f9('0xb')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller['show']);router[_0xd8f9('0xb')](_0xd8f9('0xd'),auth['isAuthenticated'](),controller[_0xd8f9('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd8f9('0xf')]);router[_0xd8f9('0x10')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller[_0xd8f9('0x11')]);router[_0xd8f9('0x12')](_0xd8f9('0xc'),auth['isAuthenticated'](),controller[_0xd8f9('0x13')]);module['exports']=router;
\ No newline at end of file
index b93cd48..ffd8293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e43=['setDataValue','email','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','sequelize','STRING','from-voicemail','contest_mailbox'];(function(_0x17711f,_0x27f87b){var _0x41b27c=function(_0x55fa2d){while(--_0x55fa2d){_0x17711f['push'](_0x17711f['shift']());}};_0x41b27c(++_0x27f87b);}(_0x3e43,0x84));var _0x33e4=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x3e43[_0x311c35];return _0x5cc50c;};'use strict';var Sequelize=require(_0x33e4('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0x33e4('0x1')]},'context':{'type':Sequelize[_0x33e4('0x1')],'defaultValue':_0x33e4('0x2'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x33e4('0x1')],'defaultValue':'','allowNull':![],'unique':_0x33e4('0x3')},'password':{'type':Sequelize[_0x33e4('0x1')]},'fullname':{'type':Sequelize[_0x33e4('0x1')]},'email':{'type':Sequelize[_0x33e4('0x1')],'validate':{'isEmail':!![]},'set':function(_0x5616bf){this[_0x33e4('0x4')](_0x33e4('0x5'),typeof _0x5616bf===_0x33e4('0x6')&&_0x5616bf[_0x33e4('0x7')]()?_0x5616bf['trim']():null);}},'pager':{'type':Sequelize[_0x33e4('0x1')]},'tz':{'type':Sequelize[_0x33e4('0x1')],'defaultValue':_0x33e4('0x8')},'attach':{'type':Sequelize[_0x33e4('0x9')](_0x33e4('0xa'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x33e4('0x9')]('yes','no'),'defaultValue':_0x33e4('0xa'),'allowNull':![]},'dialout':{'type':Sequelize[_0x33e4('0x1')]},'callback':{'type':Sequelize[_0x33e4('0x1')]},'review':{'type':Sequelize[_0x33e4('0x9')](_0x33e4('0xa'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x33e4('0x9')](_0x33e4('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x33e4('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x33e4('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0x33e4('0xa'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x33e4('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x33e4('0xa'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0x33e4('0xa'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x33e4('0x9')]('yes','no'),'defaultValue':_0x33e4('0xa'),'allowNull':![]},'stamp':{'type':_0x33e4('0xc')},'emailsubject':{'type':Sequelize[_0x33e4('0x1')]},'emailbody':{'type':Sequelize[_0x33e4('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x33e4('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x33e4('0xe')],'get':function(){return this[_0x33e4('0xf')](_0x33e4('0x10'))+'\x20-\x20'+this[_0x33e4('0xf')]('mailbox');}}};
\ No newline at end of file
+var _0xe234=['contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','STRING','from-voicemail'];(function(_0x44ad9a,_0x58078f){var _0x1ae1a3=function(_0x4d9e88){while(--_0x4d9e88){_0x44ad9a['push'](_0x44ad9a['shift']());}};_0x1ae1a3(++_0x58078f);}(_0xe234,0x7e));var _0x4e23=function(_0x40d257,_0x10dc13){_0x40d257=_0x40d257-0x0;var _0x37b1f3=_0xe234[_0x40d257];return _0x37b1f3;};'use strict';var Sequelize=require('sequelize');module['exports']={'customer_id':{'type':Sequelize[_0x4e23('0x0')]},'context':{'type':Sequelize[_0x4e23('0x0')],'defaultValue':_0x4e23('0x1'),'unique':_0x4e23('0x2')},'mailbox':{'type':Sequelize[_0x4e23('0x0')],'defaultValue':'','allowNull':![],'unique':_0x4e23('0x2')},'password':{'type':Sequelize[_0x4e23('0x0')]},'fullname':{'type':Sequelize[_0x4e23('0x0')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x22f3b6){this[_0x4e23('0x3')](_0x4e23('0x4'),typeof _0x22f3b6===_0x4e23('0x5')&&_0x22f3b6[_0x4e23('0x6')]()?_0x22f3b6['trim']():null);}},'pager':{'type':Sequelize[_0x4e23('0x0')]},'tz':{'type':Sequelize[_0x4e23('0x0')],'defaultValue':_0x4e23('0x7')},'attach':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x4e23('0x0')]},'callback':{'type':Sequelize[_0x4e23('0x0')]},'review':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'stamp':{'type':_0x4e23('0xa')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x4e23('0x0')]},'maxsecs':{'type':Sequelize[_0x4e23('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x4e23('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x4e23('0xc')],'get':function(){return this[_0x4e23('0xd')](_0x4e23('0xe'))+_0x4e23('0xf')+this[_0x4e23('0xd')]('mailbox');}}};
\ No newline at end of file
index 4fea250..bd2957c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750a=['mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','status','end','offset','undefined','count','set','json','destroy','then','get','Voicemails','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','VoiceMail','include','findAll','rows','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','body','getMessages','findOne','VoiceMailMessage','length','findAndCountAll','rimraf','request-promise','moment','bluebird'];(function(_0x55dbdc,_0x2a203a){var _0x5d7a04=function(_0x44621e){while(--_0x44621e){_0x55dbdc['push'](_0x55dbdc['shift']());}};_0x5d7a04(++_0x2a203a);}(_0x750a,0x140));var _0xa750=function(_0x3208d6,_0x5e0b42){_0x3208d6=_0x3208d6-0x0;var _0x165fc1=_0x750a[_0x3208d6];return _0x165fc1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa750('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa750('0x1'));var moment=require(_0xa750('0x2'));var BPromise=require(_0xa750('0x3'));var Mustache=require(_0xa750('0x4'));var util=require(_0xa750('0x5'));var path=require(_0xa750('0x6'));var sox=require(_0xa750('0x7'));var csv=require(_0xa750('0x8'));var ejs=require(_0xa750('0x9'));var fs=require('fs');var fs_extra=require(_0xa750('0xa'));var _=require(_0xa750('0xb'));var squel=require(_0xa750('0xc'));var crypto=require(_0xa750('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa750('0x8'));var querystring=require('querystring');var Papa=require(_0xa750('0xe'));var Redis=require(_0xa750('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa750('0x10'));var as=require(_0xa750('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa750('0x12'));var utils=require('../../config/utils');var config=require(_0xa750('0x13'));var licenseUtil=require(_0xa750('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x24ec62,_0x1c5657){_0x1c5657=_0x1c5657||0xcc;return function(_0x344c67){if(_0x344c67){return _0x24ec62['sendStatus'](_0x1c5657);}return _0x24ec62[_0xa750('0x15')](_0x1c5657)[_0xa750('0x16')]();};}function respondWithResult(_0x2d3421,_0x24e48a){_0x24e48a=_0x24e48a||0xc8;return function(_0xa66181){if(_0xa66181){return _0x2d3421[_0xa750('0x15')](_0x24e48a)['json'](_0xa66181);}};}function respondWithFilteredResult(_0x3ae2a1,_0x8488ea){return function(_0x290d46){if(_0x290d46){var _0x49fe3b=typeof _0x8488ea[_0xa750('0x17')]===_0xa750('0x18')&&typeof _0x8488ea['limit']==='undefined';var _0x321eb2=_0x290d46['count'];var _0x433dbd=_0x49fe3b?0x0:_0x8488ea[_0xa750('0x17')];var _0x4f1faa=_0x49fe3b?_0x290d46[_0xa750('0x19')]:_0x8488ea['offset']+_0x8488ea['limit'];var _0x25e335;if(_0x4f1faa>=_0x321eb2){_0x4f1faa=_0x321eb2;_0x25e335=0xc8;}else{_0x25e335=0xce;}_0x3ae2a1['status'](_0x25e335);return _0x3ae2a1[_0xa750('0x1a')]('Content-Range',_0x433dbd+'-'+_0x4f1faa+'/'+_0x321eb2)[_0xa750('0x1b')](_0x290d46);}return null;};}function patchUpdates(_0x4a007d){return function(_0x3dc7f1){try{jsonpatch['apply'](_0x3dc7f1,_0x4a007d,!![]);}catch(_0x1efb68){return BPromise['reject'](_0x1efb68);}return _0x3dc7f1['save']();};}function saveUpdates(_0xaa9d3e,_0x52da84){return function(_0x216fbf){if(_0x216fbf){return _0x216fbf['update'](_0xaa9d3e)['then'](function(_0x5b433d){return _0x5b433d;});}return null;};}function removeEntity(_0x5d758e,_0x15d72f){return function(_0x2ec6c4){if(_0x2ec6c4){return _0x2ec6c4[_0xa750('0x1c')]()[_0xa750('0x1d')](function(){var _0x1b80a5=_0x2ec6c4[_0xa750('0x1e')]({'plain':!![]});var _0x3001bc=_0xa750('0x1f');return db[_0xa750('0x20')][_0xa750('0x1c')]({'where':{'type':_0x3001bc,'resourceId':_0x1b80a5['id']}})[_0xa750('0x1d')](function(){return _0x2ec6c4;});})[_0xa750('0x1d')](function(){_0x5d758e[_0xa750('0x15')](0xcc)[_0xa750('0x16')]();});}};}function handleEntityNotFound(_0x310e2d,_0x4ffff4){return function(_0x3d3923){if(!_0x3d3923){_0x310e2d[_0xa750('0x21')](0x194);}return _0x3d3923;};}function handleError(_0x21cd2c,_0x4cceee){_0x4cceee=_0x4cceee||0x1f4;return function(_0x35ab53){logger[_0xa750('0x22')](_0x35ab53[_0xa750('0x23')]);if(_0x35ab53[_0xa750('0x24')]){delete _0x35ab53['name'];}_0x21cd2c[_0xa750('0x15')](_0x4cceee)[_0xa750('0x25')](_0x35ab53);};}exports[_0xa750('0x26')]=function(_0x2aef3a,_0x2c5253){var _0x59ab33={},_0x46cc11={},_0x4c2c9e={'count':0x0,'rows':[]};var _0x2d0e93=_[_0xa750('0x27')](db['VoiceMail'][_0xa750('0x28')],function(_0x6bc25d){return{'name':_0x6bc25d[_0xa750('0x29')],'type':_0x6bc25d[_0xa750('0x2a')][_0xa750('0x2b')]};});_0x46cc11[_0xa750('0x2c')]=_[_0xa750('0x27')](_0x2d0e93,_0xa750('0x24'));_0x46cc11['query']=_[_0xa750('0x2d')](_0x2aef3a['query']);_0x46cc11[_0xa750('0x2e')]=_[_0xa750('0x2f')](_0x46cc11[_0xa750('0x2c')],_0x46cc11[_0xa750('0x30')]);_0x59ab33['attributes']=_[_0xa750('0x2f')](_0x46cc11[_0xa750('0x2c')],qs['fields'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x31')]));_0x59ab33[_0xa750('0x32')]=_0x59ab33[_0xa750('0x32')]['length']?_0x59ab33[_0xa750('0x32')]:_0x46cc11['model'];if(!_0x2aef3a['query'][_0xa750('0x33')](_0xa750('0x34'))){_0x59ab33[_0xa750('0x35')]=qs['limit'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x35')]);_0x59ab33[_0xa750('0x17')]=qs['offset'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x17')]);}_0x59ab33[_0xa750('0x36')]=qs['sort'](_0x2aef3a[_0xa750('0x30')][_0xa750('0x37')]);_0x59ab33[_0xa750('0x38')]=qs['filters'](_[_0xa750('0x39')](_0x2aef3a[_0xa750('0x30')],_0x46cc11[_0xa750('0x2e')]),_0x2d0e93);if(_0x2aef3a[_0xa750('0x30')]['filter']){_0x59ab33['where']=_[_0xa750('0x3a')](_0x59ab33[_0xa750('0x38')],{'$or':_['map'](_0x2d0e93,function(_0x43dc3a){if(_0x43dc3a[_0xa750('0x2a')]!==_0xa750('0x3b')){var _0x1166ff={};_0x1166ff[_0x43dc3a[_0xa750('0x24')]]={'$like':'%'+_0x2aef3a['query'][_0xa750('0x3c')]+'%'};return _0x1166ff;}})});}_0x59ab33=_[_0xa750('0x3a')]({},_0x59ab33,_0x2aef3a[_0xa750('0x3d')]);var _0x134874={'where':_0x59ab33[_0xa750('0x38')]};return db[_0xa750('0x3e')][_0xa750('0x19')](_0x134874)['then'](function(_0x3daa38){_0x4c2c9e['count']=_0x3daa38;if(_0x2aef3a[_0xa750('0x30')]['includeAll']){_0x59ab33[_0xa750('0x3f')]=[{'all':!![]}];}return db[_0xa750('0x3e')][_0xa750('0x40')](_0x59ab33);})[_0xa750('0x1d')](function(_0x430d60){_0x4c2c9e[_0xa750('0x41')]=_0x430d60;return _0x4c2c9e;})[_0xa750('0x1d')](respondWithFilteredResult(_0x2c5253,_0x59ab33))[_0xa750('0x42')](handleError(_0x2c5253,null));};exports[_0xa750('0x43')]=function(_0x108a1a,_0x36a8d6){var _0x1458f1={'raw':!![],'where':{'id':_0x108a1a[_0xa750('0x44')]['id']}},_0x3ec860={};_0x3ec860[_0xa750('0x2c')]=_[_0xa750('0x2d')](db[_0xa750('0x3e')][_0xa750('0x28')]);_0x3ec860[_0xa750('0x30')]=_[_0xa750('0x2d')](_0x108a1a['query']);_0x3ec860[_0xa750('0x2e')]=_[_0xa750('0x2f')](_0x3ec860[_0xa750('0x2c')],_0x3ec860[_0xa750('0x30')]);_0x1458f1[_0xa750('0x32')]=_[_0xa750('0x2f')](_0x3ec860[_0xa750('0x2c')],qs[_0xa750('0x31')](_0x108a1a[_0xa750('0x30')]['fields']));_0x1458f1[_0xa750('0x32')]=_0x1458f1[_0xa750('0x32')]['length']?_0x1458f1[_0xa750('0x32')]:_0x3ec860[_0xa750('0x2c')];if(_0x108a1a[_0xa750('0x30')][_0xa750('0x45')]){_0x1458f1[_0xa750('0x3f')]=[{'all':!![]}];}_0x1458f1=_[_0xa750('0x3a')]({},_0x1458f1,_0x108a1a[_0xa750('0x3d')]);return db[_0xa750('0x3e')][_0xa750('0x46')](_0x1458f1)[_0xa750('0x1d')](handleEntityNotFound(_0x36a8d6,null))['then'](respondWithResult(_0x36a8d6,null))[_0xa750('0x42')](handleError(_0x36a8d6,null));};exports[_0xa750('0x47')]=function(_0x58afd2,_0x93e49f){return db[_0xa750('0x3e')][_0xa750('0x47')](_0x58afd2['body'],{})[_0xa750('0x1d')](function(_0x3fc623){var _0x1e5a9a=_0x58afd2[_0xa750('0x48')]['get']({'plain':!![]});if(!_0x1e5a9a)throw new Error(_0xa750('0x49'));if(_0x1e5a9a[_0xa750('0x4a')]===_0xa750('0x48')){var _0xed4f88=_0x3fc623['get']({'plain':!![]});var _0x203f2a=_0xa750('0x1f');return db['UserProfileSection'][_0xa750('0x46')]({'where':{'name':_0x203f2a,'userProfileId':_0x1e5a9a['userProfileId']},'raw':!![]})[_0xa750('0x1d')](function(_0x69995b){if(_0x69995b&&_0x69995b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0xed4f88[_0xa750('0x24')],'resourceId':_0xed4f88['id'],'type':_0x69995b[_0xa750('0x24')],'sectionId':_0x69995b['id']},{})['then'](function(){return _0x3fc623;});}else{return _0x3fc623;}})[_0xa750('0x42')](function(_0x1a79a9){logger[_0xa750('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a79a9);throw _0x1a79a9;});}return _0x3fc623;})['then'](respondWithResult(_0x93e49f,0xc9))['catch'](handleError(_0x93e49f,null));};exports['update']=function(_0x3c34d4,_0x4a1b5d){if(_0x3c34d4[_0xa750('0x4b')]['id']){delete _0x3c34d4[_0xa750('0x4b')]['id'];}return db['VoiceMail'][_0xa750('0x46')]({'where':{'id':_0x3c34d4['params']['id']}})[_0xa750('0x1d')](handleEntityNotFound(_0x4a1b5d,null))['then'](saveUpdates(_0x3c34d4['body'],null))['then'](respondWithResult(_0x4a1b5d,null))['catch'](handleError(_0x4a1b5d,null));};exports[_0xa750('0x1c')]=function(_0x40dac2,_0x5f1313){return db['VoiceMail']['find']({'where':{'id':_0x40dac2[_0xa750('0x44')]['id']}})[_0xa750('0x1d')](handleEntityNotFound(_0x5f1313,null))[_0xa750('0x1d')](removeEntity(_0x5f1313,null))[_0xa750('0x42')](handleError(_0x5f1313,null));};exports[_0xa750('0x4c')]=function(_0x13528a,_0x599e7e,_0x590b1c){return db[_0xa750('0x3e')][_0xa750('0x4d')]({'where':{'id':_0x13528a[_0xa750('0x44')]['id']}})[_0xa750('0x1d')](handleEntityNotFound(_0x599e7e,null))[_0xa750('0x1d')](function(_0x5a3cd5){var _0x4030b3;var _0xaa63be={},_0x2c7dd0={};_0x2c7dd0[_0xa750('0x2c')]=_[_0xa750('0x2d')](db[_0xa750('0x4e')][_0xa750('0x28')]);_0x2c7dd0[_0xa750('0x30')]=_['keys'](_0x13528a[_0xa750('0x30')]);_0x2c7dd0[_0xa750('0x2e')]=_[_0xa750('0x2f')](_0x2c7dd0[_0xa750('0x2c')],_0x2c7dd0[_0xa750('0x30')]);_0xaa63be['attributes']=_[_0xa750('0x2f')](_0x2c7dd0[_0xa750('0x2c')],qs[_0xa750('0x31')](_0x13528a[_0xa750('0x30')][_0xa750('0x31')]));_0xaa63be[_0xa750('0x32')]=_0xaa63be[_0xa750('0x32')][_0xa750('0x4f')]?_0xaa63be[_0xa750('0x32')]:_0x2c7dd0[_0xa750('0x2c')];if(!_0x13528a[_0xa750('0x30')][_0xa750('0x33')](_0xa750('0x34'))){_0xaa63be[_0xa750('0x35')]=qs[_0xa750('0x35')](_0x13528a[_0xa750('0x30')]['limit']);_0xaa63be[_0xa750('0x17')]=qs['offset'](_0x13528a[_0xa750('0x30')][_0xa750('0x17')]);}_0xaa63be[_0xa750('0x36')]=qs['sort'](_0x13528a[_0xa750('0x30')][_0xa750('0x37')]);_0xaa63be[_0xa750('0x38')]=qs[_0xa750('0x2e')](_[_0xa750('0x39')](_0x13528a[_0xa750('0x30')],_0x2c7dd0['filters']));if(_0x13528a[_0xa750('0x30')][_0xa750('0x3c')]){_0xaa63be['where']=_[_0xa750('0x3a')](_0xaa63be[_0xa750('0x38')],{'$or':_[_0xa750('0x27')](_0xaa63be[_0xa750('0x32')],function(_0x3255c7){var _0x1b7597={};_0x1b7597[_0x3255c7]={'$like':'%'+_0x13528a[_0xa750('0x30')][_0xa750('0x3c')]+'%'};return _0x1b7597;})});}_0xaa63be[_0xa750('0x38')]=_[_0xa750('0x3a')](_0xaa63be[_0xa750('0x38')],{'mailboxuser':_0x5a3cd5['mailbox']});_0xaa63be=_['merge']({},_0xaa63be,_0x13528a[_0xa750('0x3d')]);return db[_0xa750('0x4e')][_0xa750('0x50')](_0xaa63be)[_0xa750('0x1d')](respondWithFilteredResult(_0x599e7e,_0xaa63be));})['catch'](handleError(_0x599e7e,null));};
\ No newline at end of file
+var _0x1be1=['set','Content-Range','apply','reject','save','update','then','get','Voicemails','destroy','sendStatus','error','stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','include','findAll','rows','show','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','findOne','VoiceMailMessage','length','mailbox','findAndCountAll','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count'];(function(_0x1c97d8,_0x4413bc){var _0x1b0be5=function(_0x4fe142){while(--_0x4fe142){_0x1c97d8['push'](_0x1c97d8['shift']());}};_0x1b0be5(++_0x4413bc);}(_0x1be1,0x192));var _0x11be=function(_0x291829,_0x51d3e1){_0x291829=_0x291829-0x0;var _0x49fd45=_0x1be1[_0x291829];return _0x49fd45;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x11be('0x0'));var jsonpatch=require(_0x11be('0x1'));var rp=require('request-promise');var moment=require(_0x11be('0x2'));var BPromise=require(_0x11be('0x3'));var Mustache=require(_0x11be('0x4'));var util=require(_0x11be('0x5'));var path=require('path');var sox=require(_0x11be('0x6'));var csv=require(_0x11be('0x7'));var ejs=require(_0x11be('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11be('0x9'));var squel=require('squel');var crypto=require(_0x11be('0xa'));var jsforce=require(_0x11be('0xb'));var deskjs=require(_0x11be('0xc'));var toCsv=require(_0x11be('0x7'));var querystring=require(_0x11be('0xd'));var Papa=require('papaparse');var Redis=require(_0x11be('0xe'));var authService=require(_0x11be('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x11be('0x10'));var hardwareService=require(_0x11be('0x11'));var logger=require(_0x11be('0x12'))(_0x11be('0x13'));var utils=require('../../config/utils');var config=require(_0x11be('0x14'));var licenseUtil=require(_0x11be('0x15'));var db=require(_0x11be('0x16'))['db'];function respondWithStatusCode(_0x4b36c8,_0x3ff31f){_0x3ff31f=_0x3ff31f||0xcc;return function(_0x2dad05){if(_0x2dad05){return _0x4b36c8['sendStatus'](_0x3ff31f);}return _0x4b36c8[_0x11be('0x17')](_0x3ff31f)['end']();};}function respondWithResult(_0x49228e,_0x569842){_0x569842=_0x569842||0xc8;return function(_0x4b6e7e){if(_0x4b6e7e){return _0x49228e['status'](_0x569842)['json'](_0x4b6e7e);}};}function respondWithFilteredResult(_0x588871,_0x2280e2){return function(_0x52bbef){if(_0x52bbef){var _0x31047c=typeof _0x2280e2[_0x11be('0x18')]===_0x11be('0x19')&&typeof _0x2280e2[_0x11be('0x1a')]==='undefined';var _0x2ed725=_0x52bbef[_0x11be('0x1b')];var _0x56ab61=_0x31047c?0x0:_0x2280e2[_0x11be('0x18')];var _0xc3263c=_0x31047c?_0x52bbef[_0x11be('0x1b')]:_0x2280e2['offset']+_0x2280e2['limit'];var _0x141391;if(_0xc3263c>=_0x2ed725){_0xc3263c=_0x2ed725;_0x141391=0xc8;}else{_0x141391=0xce;}_0x588871[_0x11be('0x17')](_0x141391);return _0x588871[_0x11be('0x1c')](_0x11be('0x1d'),_0x56ab61+'-'+_0xc3263c+'/'+_0x2ed725)['json'](_0x52bbef);}return null;};}function patchUpdates(_0x12a5bd){return function(_0x45136f){try{jsonpatch[_0x11be('0x1e')](_0x45136f,_0x12a5bd,!![]);}catch(_0x452315){return BPromise[_0x11be('0x1f')](_0x452315);}return _0x45136f[_0x11be('0x20')]();};}function saveUpdates(_0xa944ac,_0x17678d){return function(_0x3aea14){if(_0x3aea14){return _0x3aea14[_0x11be('0x21')](_0xa944ac)['then'](function(_0xfe3737){return _0xfe3737;});}return null;};}function removeEntity(_0x46b7c2,_0x2fe43c){return function(_0x5d1690){if(_0x5d1690){return _0x5d1690['destroy']()[_0x11be('0x22')](function(){var _0x10ce04=_0x5d1690[_0x11be('0x23')]({'plain':!![]});var _0x4cb27f=_0x11be('0x24');return db['UserProfileResource'][_0x11be('0x25')]({'where':{'type':_0x4cb27f,'resourceId':_0x10ce04['id']}})['then'](function(){return _0x5d1690;});})[_0x11be('0x22')](function(){_0x46b7c2[_0x11be('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48029b,_0x28b3a0){return function(_0x1d3b5c){if(!_0x1d3b5c){_0x48029b[_0x11be('0x26')](0x194);}return _0x1d3b5c;};}function handleError(_0x30427b,_0x17c67f){_0x17c67f=_0x17c67f||0x1f4;return function(_0xf5a6ac){logger[_0x11be('0x27')](_0xf5a6ac[_0x11be('0x28')]);if(_0xf5a6ac['name']){delete _0xf5a6ac[_0x11be('0x29')];}_0x30427b['status'](_0x17c67f)[_0x11be('0x2a')](_0xf5a6ac);};}exports[_0x11be('0x2b')]=function(_0x510476,_0x584d4c){var _0x49fd5c={},_0x265fc9={},_0x5e8f9a={'count':0x0,'rows':[]};var _0x66316d=_[_0x11be('0x2c')](db[_0x11be('0x2d')][_0x11be('0x2e')],function(_0x25e214){return{'name':_0x25e214[_0x11be('0x2f')],'type':_0x25e214['type'][_0x11be('0x30')]};});_0x265fc9[_0x11be('0x31')]=_[_0x11be('0x2c')](_0x66316d,_0x11be('0x29'));_0x265fc9[_0x11be('0x32')]=_[_0x11be('0x33')](_0x510476['query']);_0x265fc9[_0x11be('0x34')]=_[_0x11be('0x35')](_0x265fc9[_0x11be('0x31')],_0x265fc9[_0x11be('0x32')]);_0x49fd5c[_0x11be('0x36')]=_['intersection'](_0x265fc9[_0x11be('0x31')],qs[_0x11be('0x37')](_0x510476[_0x11be('0x32')]['fields']));_0x49fd5c[_0x11be('0x36')]=_0x49fd5c['attributes']['length']?_0x49fd5c['attributes']:_0x265fc9['model'];if(!_0x510476[_0x11be('0x32')][_0x11be('0x38')](_0x11be('0x39'))){_0x49fd5c['limit']=qs[_0x11be('0x1a')](_0x510476[_0x11be('0x32')]['limit']);_0x49fd5c[_0x11be('0x18')]=qs['offset'](_0x510476[_0x11be('0x32')]['offset']);}_0x49fd5c[_0x11be('0x3a')]=qs[_0x11be('0x3b')](_0x510476[_0x11be('0x32')][_0x11be('0x3b')]);_0x49fd5c['where']=qs[_0x11be('0x34')](_[_0x11be('0x3c')](_0x510476[_0x11be('0x32')],_0x265fc9[_0x11be('0x34')]),_0x66316d);if(_0x510476['query'][_0x11be('0x3d')]){_0x49fd5c[_0x11be('0x3e')]=_[_0x11be('0x3f')](_0x49fd5c[_0x11be('0x3e')],{'$or':_[_0x11be('0x2c')](_0x66316d,function(_0x1b1aac){if(_0x1b1aac[_0x11be('0x40')]!=='VIRTUAL'){var _0x2618f5={};_0x2618f5[_0x1b1aac[_0x11be('0x29')]]={'$like':'%'+_0x510476['query'][_0x11be('0x3d')]+'%'};return _0x2618f5;}})});}_0x49fd5c=_[_0x11be('0x3f')]({},_0x49fd5c,_0x510476['options']);var _0x30b67a={'where':_0x49fd5c['where']};return db[_0x11be('0x2d')]['count'](_0x30b67a)[_0x11be('0x22')](function(_0x30be21){_0x5e8f9a['count']=_0x30be21;if(_0x510476[_0x11be('0x32')]['includeAll']){_0x49fd5c[_0x11be('0x41')]=[{'all':!![]}];}return db[_0x11be('0x2d')][_0x11be('0x42')](_0x49fd5c);})[_0x11be('0x22')](function(_0x2b847a){_0x5e8f9a[_0x11be('0x43')]=_0x2b847a;return _0x5e8f9a;})[_0x11be('0x22')](respondWithFilteredResult(_0x584d4c,_0x49fd5c))['catch'](handleError(_0x584d4c,null));};exports[_0x11be('0x44')]=function(_0x18cddf,_0x9610a1){var _0x317e2d={'raw':!![],'where':{'id':_0x18cddf['params']['id']}},_0x589ac4={};_0x589ac4['model']=_[_0x11be('0x33')](db['VoiceMail'][_0x11be('0x2e')]);_0x589ac4['query']=_[_0x11be('0x33')](_0x18cddf[_0x11be('0x32')]);_0x589ac4[_0x11be('0x34')]=_[_0x11be('0x35')](_0x589ac4[_0x11be('0x31')],_0x589ac4[_0x11be('0x32')]);_0x317e2d[_0x11be('0x36')]=_['intersection'](_0x589ac4[_0x11be('0x31')],qs['fields'](_0x18cddf[_0x11be('0x32')][_0x11be('0x37')]));_0x317e2d[_0x11be('0x36')]=_0x317e2d['attributes']['length']?_0x317e2d['attributes']:_0x589ac4[_0x11be('0x31')];if(_0x18cddf[_0x11be('0x32')]['includeAll']){_0x317e2d['include']=[{'all':!![]}];}_0x317e2d=_['merge']({},_0x317e2d,_0x18cddf[_0x11be('0x45')]);return db[_0x11be('0x2d')][_0x11be('0x46')](_0x317e2d)[_0x11be('0x22')](handleEntityNotFound(_0x9610a1,null))[_0x11be('0x22')](respondWithResult(_0x9610a1,null))[_0x11be('0x47')](handleError(_0x9610a1,null));};exports[_0x11be('0x48')]=function(_0x3f2070,_0x2ce110){return db[_0x11be('0x2d')][_0x11be('0x48')](_0x3f2070['body'],{})[_0x11be('0x22')](function(_0x29f82f){var _0x534ee7=_0x3f2070['user']['get']({'plain':!![]});if(!_0x534ee7)throw new Error(_0x11be('0x49'));if(_0x534ee7['role']===_0x11be('0x4a')){var _0x1c1626=_0x29f82f[_0x11be('0x23')]({'plain':!![]});var _0x1fb48d=_0x11be('0x24');return db[_0x11be('0x4b')][_0x11be('0x46')]({'where':{'name':_0x1fb48d,'userProfileId':_0x534ee7[_0x11be('0x4c')]},'raw':!![]})[_0x11be('0x22')](function(_0x4c873a){if(_0x4c873a&&_0x4c873a[_0x11be('0x4d')]===0x0){return db['UserProfileResource'][_0x11be('0x48')]({'name':_0x1c1626[_0x11be('0x29')],'resourceId':_0x1c1626['id'],'type':_0x4c873a['name'],'sectionId':_0x4c873a['id']},{})[_0x11be('0x22')](function(){return _0x29f82f;});}else{return _0x29f82f;}})[_0x11be('0x47')](function(_0x4c0e37){logger[_0x11be('0x27')](_0x11be('0x4e'),_0x4c0e37);throw _0x4c0e37;});}return _0x29f82f;})['then'](respondWithResult(_0x2ce110,0xc9))['catch'](handleError(_0x2ce110,null));};exports[_0x11be('0x21')]=function(_0x2886ac,_0x50eeab){if(_0x2886ac['body']['id']){delete _0x2886ac[_0x11be('0x4f')]['id'];}return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x2886ac['params']['id']}})['then'](handleEntityNotFound(_0x50eeab,null))['then'](saveUpdates(_0x2886ac[_0x11be('0x4f')],null))[_0x11be('0x22')](respondWithResult(_0x50eeab,null))[_0x11be('0x47')](handleError(_0x50eeab,null));};exports['destroy']=function(_0x4db963,_0x33409c){return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x4db963[_0x11be('0x50')]['id']}})['then'](handleEntityNotFound(_0x33409c,null))[_0x11be('0x22')](removeEntity(_0x33409c,null))['catch'](handleError(_0x33409c,null));};exports['getMessages']=function(_0x568f20,_0x5aa6bf,_0x1a43df){return db[_0x11be('0x2d')][_0x11be('0x51')]({'where':{'id':_0x568f20[_0x11be('0x50')]['id']}})[_0x11be('0x22')](handleEntityNotFound(_0x5aa6bf,null))[_0x11be('0x22')](function(_0xb97604){var _0x55e79d;var _0x54e52a={},_0x7c1ee5={};_0x7c1ee5[_0x11be('0x31')]=_[_0x11be('0x33')](db[_0x11be('0x52')][_0x11be('0x2e')]);_0x7c1ee5[_0x11be('0x32')]=_[_0x11be('0x33')](_0x568f20[_0x11be('0x32')]);_0x7c1ee5[_0x11be('0x34')]=_['intersection'](_0x7c1ee5[_0x11be('0x31')],_0x7c1ee5[_0x11be('0x32')]);_0x54e52a[_0x11be('0x36')]=_['intersection'](_0x7c1ee5[_0x11be('0x31')],qs[_0x11be('0x37')](_0x568f20['query']['fields']));_0x54e52a[_0x11be('0x36')]=_0x54e52a[_0x11be('0x36')][_0x11be('0x53')]?_0x54e52a[_0x11be('0x36')]:_0x7c1ee5['model'];if(!_0x568f20[_0x11be('0x32')][_0x11be('0x38')](_0x11be('0x39'))){_0x54e52a[_0x11be('0x1a')]=qs[_0x11be('0x1a')](_0x568f20[_0x11be('0x32')][_0x11be('0x1a')]);_0x54e52a[_0x11be('0x18')]=qs[_0x11be('0x18')](_0x568f20['query']['offset']);}_0x54e52a[_0x11be('0x3a')]=qs[_0x11be('0x3b')](_0x568f20['query'][_0x11be('0x3b')]);_0x54e52a[_0x11be('0x3e')]=qs[_0x11be('0x34')](_[_0x11be('0x3c')](_0x568f20[_0x11be('0x32')],_0x7c1ee5[_0x11be('0x34')]));if(_0x568f20[_0x11be('0x32')]['filter']){_0x54e52a['where']=_[_0x11be('0x3f')](_0x54e52a[_0x11be('0x3e')],{'$or':_[_0x11be('0x2c')](_0x54e52a['attributes'],function(_0x82c02c){var _0x422696={};_0x422696[_0x82c02c]={'$like':'%'+_0x568f20[_0x11be('0x32')][_0x11be('0x3d')]+'%'};return _0x422696;})});}_0x54e52a[_0x11be('0x3e')]=_[_0x11be('0x3f')](_0x54e52a[_0x11be('0x3e')],{'mailboxuser':_0xb97604[_0x11be('0x54')]});_0x54e52a=_[_0x11be('0x3f')]({},_0x54e52a,_0x568f20[_0x11be('0x45')]);return db[_0x11be('0x52')][_0x11be('0x55')](_0x54e52a)[_0x11be('0x22')](respondWithFilteredResult(_0x5aa6bf,_0x54e52a));})[_0x11be('0x47')](handleError(_0x5aa6bf,null));};
\ No newline at end of file
index 16ab7b0..f8bbf35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb891=['request-promise','path','./voiceMail.attributes','exports','define','voice_voicemail','mailbox_context','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5510af,_0x1d5b4c){var _0x4e727a=function(_0xbd9830){while(--_0xbd9830){_0x5510af['push'](_0x5510af['shift']());}};_0x4e727a(++_0x1d5b4c);}(_0xb891,0xbd));var _0x1b89=function(_0x213213,_0x337d60){_0x213213=_0x213213-0x0;var _0x204b9b=_0xb891[_0x213213];return _0x204b9b;};'use strict';var _=require(_0x1b89('0x0'));var util=require(_0x1b89('0x1'));var logger=require(_0x1b89('0x2'))(_0x1b89('0x3'));var moment=require(_0x1b89('0x4'));var BPromise=require(_0x1b89('0x5'));var rp=require(_0x1b89('0x6'));var fs=require('fs');var path=require(_0x1b89('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1b89('0x8'));module[_0x1b89('0x9')]=function(_0x5016e4,_0x5755c0){return _0x5016e4[_0x1b89('0xa')]('VoiceMail',attributes,{'tableName':_0x1b89('0xb'),'paranoid':![],'indexes':[{'name':_0x1b89('0xc'),'fields':['mailbox','context']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5f2a=['lodash','../../config/logger','api','bluebird','request-promise','../../config/environment','./voiceMail.attributes','define','VoiceMail','voice_voicemail','mailbox'];(function(_0x31af4b,_0x2c2106){var _0x496bd8=function(_0xb4f2b7){while(--_0xb4f2b7){_0x31af4b['push'](_0x31af4b['shift']());}};_0x496bd8(++_0x2c2106);}(_0x5f2a,0x108));var _0xa5f2=function(_0x52bf54,_0x248cf2){_0x52bf54=_0x52bf54-0x0;var _0x4a4745=_0x5f2a[_0x52bf54];return _0x4a4745;};'use strict';var _=require(_0xa5f2('0x0'));var util=require('util');var logger=require(_0xa5f2('0x1'))(_0xa5f2('0x2'));var moment=require('moment');var BPromise=require(_0xa5f2('0x3'));var rp=require(_0xa5f2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa5f2('0x5'));var attributes=require(_0xa5f2('0x6'));module['exports']=function(_0x1fbb36,_0x52d34a){return _0x1fbb36[_0xa5f2('0x7')](_0xa5f2('0x8'),attributes,{'tableName':_0xa5f2('0x9'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xa5f2('0xa'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 1cebcb6..3fa6438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe597=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','error','VoiceMail,\x20%s,\x20%s','message','info','catch'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0xe597,0xa8));var _0x7e59=function(_0x62f502,_0x1b4638){_0x62f502=_0x62f502-0x0;var _0x2568c4=_0xe597[_0x62f502];return _0x2568c4;};'use strict';var _=require('lodash');var util=require(_0x7e59('0x0'));var moment=require(_0x7e59('0x1'));var BPromise=require('bluebird');var rs=require(_0x7e59('0x2'));var fs=require('fs');var Redis=require(_0x7e59('0x3'));var db=require(_0x7e59('0x4'))['db'];var utils=require(_0x7e59('0x5'));var logger=require(_0x7e59('0x6'))(_0x7e59('0x7'));var config=require(_0x7e59('0x8'));var jayson=require(_0x7e59('0x9'));var client=jayson['client'][_0x7e59('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b9ca6,_0x4219d9,_0x16cc4d){return new BPromise(function(_0x184ca5,_0x2d7cff){return client[_0x7e59('0xb')](_0x1b9ca6,_0x16cc4d)[_0x7e59('0xc')](function(_0x3ebd40){logger['info']('VoiceMail,\x20%s,\x20%s',_0x4219d9,'request\x20sent');logger[_0x7e59('0xd')](_0x7e59('0xe'),_0x4219d9,_0x7e59('0xf'),JSON['stringify'](_0x3ebd40));if(_0x3ebd40[_0x7e59('0x10')]){if(_0x3ebd40[_0x7e59('0x10')]['code']===0x1f4){logger[_0x7e59('0x10')](_0x7e59('0x11'),_0x4219d9,_0x3ebd40['error'][_0x7e59('0x12')]);return _0x2d7cff(_0x3ebd40[_0x7e59('0x10')][_0x7e59('0x12')]);}logger['error'](_0x7e59('0x11'),_0x4219d9,_0x3ebd40[_0x7e59('0x10')]['message']);return _0x184ca5(_0x3ebd40['error'][_0x7e59('0x12')]);}else{logger[_0x7e59('0x13')](_0x7e59('0x11'),_0x4219d9,_0x7e59('0xf'));_0x184ca5(_0x3ebd40['result'][_0x7e59('0x12')]);}})[_0x7e59('0x14')](function(_0x4f06e6){logger[_0x7e59('0x10')](_0x7e59('0x11'),_0x4219d9,_0x4f06e6);_0x2d7cff(_0x4f06e6);});});}
\ No newline at end of file
+var _0xf4d0=['info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x18aaaf,_0x385db6){var _0x52d892=function(_0x1ac6da){while(--_0x1ac6da){_0x18aaaf['push'](_0x18aaaf['shift']());}};_0x52d892(++_0x385db6);}(_0xf4d0,0x120));var _0x0f4d=function(_0x322d52,_0x41b43b){_0x322d52=_0x322d52-0x0;var _0x291fa5=_0xf4d0[_0x322d52];return _0x291fa5;};'use strict';var _=require(_0x0f4d('0x0'));var util=require(_0x0f4d('0x1'));var moment=require('moment');var BPromise=require(_0x0f4d('0x2'));var rs=require(_0x0f4d('0x3'));var fs=require('fs');var Redis=require(_0x0f4d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0f4d('0x5'));var logger=require(_0x0f4d('0x6'))(_0x0f4d('0x7'));var config=require(_0x0f4d('0x8'));var jayson=require(_0x0f4d('0x9'));var client=jayson[_0x0f4d('0xa')][_0x0f4d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31077e,_0x4ccb1a,_0x4b4094){return new BPromise(function(_0x220293,_0x55099b){return client['request'](_0x31077e,_0x4b4094)['then'](function(_0x3f9971){logger[_0x0f4d('0xc')](_0x0f4d('0xd'),_0x4ccb1a,_0x0f4d('0xe'));logger[_0x0f4d('0xf')](_0x0f4d('0x10'),_0x4ccb1a,_0x0f4d('0xe'),JSON[_0x0f4d('0x11')](_0x3f9971));if(_0x3f9971[_0x0f4d('0x12')]){if(_0x3f9971[_0x0f4d('0x12')]['code']===0x1f4){logger['error']('VoiceMail,\x20%s,\x20%s',_0x4ccb1a,_0x3f9971[_0x0f4d('0x12')][_0x0f4d('0x13')]);return _0x55099b(_0x3f9971[_0x0f4d('0x12')][_0x0f4d('0x13')]);}logger[_0x0f4d('0x12')](_0x0f4d('0xd'),_0x4ccb1a,_0x3f9971['error'][_0x0f4d('0x13')]);return _0x220293(_0x3f9971[_0x0f4d('0x12')]['message']);}else{logger['info'](_0x0f4d('0xd'),_0x4ccb1a,_0x0f4d('0xe'));_0x220293(_0x3f9971['result'][_0x0f4d('0x13')]);}})['catch'](function(_0x3992e2){logger[_0x0f4d('0x12')](_0x0f4d('0xd'),_0x4ccb1a,_0x3992e2);_0x55099b(_0x3992e2);});});}
\ No newline at end of file
index fa7f6a8..7bef335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d50=['../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','delete','multer','util','express','Router','fs-extra','../../components/auth/service'];(function(_0x32e188,_0x5258b1){var _0x286892=function(_0x4a4fc0){while(--_0x4a4fc0){_0x32e188['push'](_0x32e188['shift']());}};_0x286892(++_0x5258b1);}(_0x3d50,0x14a));var _0x03d5=function(_0x1e086b,_0x14a6c3){_0x1e086b=_0x1e086b-0x0;var _0x2592d8=_0x3d50[_0x1e086b];return _0x2592d8;};'use strict';var multer=require(_0x03d5('0x0'));var util=require(_0x03d5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x03d5('0x2'));var router=express[_0x03d5('0x3')]();var fs_extra=require(_0x03d5('0x4'));var auth=require(_0x03d5('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x03d5('0x6'));var controller=require('./voiceMailMessage.controller');router[_0x03d5('0x7')]('/',auth[_0x03d5('0x8')](),controller[_0x03d5('0x9')]);router['get'](_0x03d5('0xa'),auth[_0x03d5('0x8')](),controller['show']);router[_0x03d5('0x7')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x03d5('0xb')]('/',auth[_0x03d5('0x8')](),controller[_0x03d5('0xc')]);router[_0x03d5('0xd')](_0x03d5('0xa'),auth[_0x03d5('0x8')](),controller[_0x03d5('0xe')]);router[_0x03d5('0xf')](_0x03d5('0xa'),auth[_0x03d5('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xef0c=['destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','index','/:id','isAuthenticated','show','create','put','update','delete'];(function(_0x37cd61,_0x30fb86){var _0x443360=function(_0xfad8b7){while(--_0xfad8b7){_0x37cd61['push'](_0x37cd61['shift']());}};_0x443360(++_0x30fb86);}(_0xef0c,0x1f0));var _0xcef0=function(_0x411cb9,_0x264b9c){_0x411cb9=_0x411cb9-0x0;var _0x26981a=_0xef0c[_0x411cb9];return _0x26981a;};'use strict';var multer=require('multer');var util=require(_0xcef0('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcef0('0x1'));var router=express[_0xcef0('0x2')]();var fs_extra=require(_0xcef0('0x3'));var auth=require(_0xcef0('0x4'));var interaction=require(_0xcef0('0x5'));var config=require(_0xcef0('0x6'));var controller=require(_0xcef0('0x7'));router[_0xcef0('0x8')]('/',auth['isAuthenticated'](),controller[_0xcef0('0x9')]);router[_0xcef0('0x8')](_0xcef0('0xa'),auth[_0xcef0('0xb')](),controller[_0xcef0('0xc')]);router['get']('/:id/download',auth[_0xcef0('0xb')](),controller['download']);router['post']('/',auth[_0xcef0('0xb')](),controller[_0xcef0('0xd')]);router[_0xcef0('0xe')](_0xcef0('0xa'),auth['isAuthenticated'](),controller[_0xcef0('0xf')]);router[_0xcef0('0x10')](_0xcef0('0xa'),auth[_0xcef0('0xb')](),controller[_0xcef0('0x11')]);module[_0xcef0('0x12')]=router;
\ No newline at end of file
index 270d534..b131359 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06dd=['TIMESTAMP','literal','sequelize','exports','getDataValue','INTEGER','STRING','BLOB','long'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x06dd,0xda));var _0xd06d=function(_0x2c1fc6,_0x292eab){_0x2c1fc6=_0x2c1fc6-0x0;var _0x59335b=_0x06dd[_0x2c1fc6];return _0x59335b;};'use strict';var Sequelize=require(_0xd06d('0x0'));module[_0xd06d('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x241154){return this[_0xd06d('0x2')]('id');}},'msgnum':{'type':Sequelize[_0xd06d('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xd06d('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xd06d('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0xd06d('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xd06d('0x4')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xd06d('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xd06d('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xd06d('0x5')](_0xd06d('0x6')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0xd06d('0x4')],'defaultValue':''},'stamp':{'type':_0xd06d('0x7'),'defaultValue':Sequelize[_0xd06d('0x8')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
+var _0xe0c3=['BLOB','long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','getDataValue','STRING'];(function(_0x2bcbe6,_0x27444d){var _0x28baee=function(_0x2f5249){while(--_0x2f5249){_0x2bcbe6['push'](_0x2bcbe6['shift']());}};_0x28baee(++_0x27444d);}(_0xe0c3,0x146));var _0x3e0c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe0c3[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x3e0c('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x24f66a){return this[_0x3e0c('0x1')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'origtime':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'recording':{'type':Sequelize[_0x3e0c('0x3')](_0x3e0c('0x4')),'defaultValue':null},'flag':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'stamp':{'type':_0x3e0c('0x5'),'defaultValue':Sequelize['literal'](_0x3e0c('0x6'))}};
\ No newline at end of file
index d4b1b80..3f6f49e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd92=['destroy','end','error','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','key','model','differenceBy','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','type','merge','options','include','findAll','rows','catch','show','params','keys','includeAll','create','body','find','download','recording','VoiceMailMessage\x20not\x20found','attachment','msg_id','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','reject','save','then'];(function(_0x4e9274,_0x49576e){var _0x8b474c=function(_0x204cca){while(--_0x204cca){_0x4e9274['push'](_0x4e9274['shift']());}};_0x8b474c(++_0x49576e);}(_0xbd92,0xd6));var _0x2bd9=function(_0x2d48f5,_0x49d2ac){_0x2d48f5=_0x2d48f5-0x0;var _0x1432a9=_0xbd92[_0x2d48f5];return _0x1432a9;};'use strict';var emlformat=require(_0x2bd9('0x0'));var rimraf=require(_0x2bd9('0x1'));var zipdir=require(_0x2bd9('0x2'));var jsonpatch=require(_0x2bd9('0x3'));var rp=require(_0x2bd9('0x4'));var moment=require(_0x2bd9('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2bd9('0x6'));var util=require(_0x2bd9('0x7'));var path=require('path');var sox=require(_0x2bd9('0x8'));var csv=require('to-csv');var ejs=require(_0x2bd9('0x9'));var fs=require('fs');var fs_extra=require(_0x2bd9('0xa'));var _=require('lodash');var squel=require(_0x2bd9('0xb'));var crypto=require(_0x2bd9('0xc'));var jsforce=require(_0x2bd9('0xd'));var deskjs=require(_0x2bd9('0xe'));var toCsv=require(_0x2bd9('0xf'));var querystring=require(_0x2bd9('0x10'));var Papa=require(_0x2bd9('0x11'));var Redis=require(_0x2bd9('0x12'));var authService=require(_0x2bd9('0x13'));var qs=require(_0x2bd9('0x14'));var as=require(_0x2bd9('0x15'));var hardwareService=require(_0x2bd9('0x16'));var logger=require(_0x2bd9('0x17'))(_0x2bd9('0x18'));var utils=require(_0x2bd9('0x19'));var config=require(_0x2bd9('0x1a'));var licenseUtil=require(_0x2bd9('0x1b'));var db=require(_0x2bd9('0x1c'))['db'];function respondWithStatusCode(_0x5d42df,_0x105eac){_0x105eac=_0x105eac||0xcc;return function(_0x24a646){if(_0x24a646){return _0x5d42df[_0x2bd9('0x1d')](_0x105eac);}return _0x5d42df[_0x2bd9('0x1e')](_0x105eac)['end']();};}function respondWithResult(_0x89493c,_0x1191a2){_0x1191a2=_0x1191a2||0xc8;return function(_0x212d93){if(_0x212d93){return _0x89493c[_0x2bd9('0x1e')](_0x1191a2)[_0x2bd9('0x1f')](_0x212d93);}};}function respondWithFilteredResult(_0x2e0ccc,_0x43656d){return function(_0x39d407){if(_0x39d407){var _0x3f9fe5=typeof _0x43656d['offset']===_0x2bd9('0x20')&&typeof _0x43656d[_0x2bd9('0x21')]==='undefined';var _0x4758ff=_0x39d407['count'];var _0x50701c=_0x3f9fe5?0x0:_0x43656d[_0x2bd9('0x22')];var _0x2193c8=_0x3f9fe5?_0x39d407[_0x2bd9('0x23')]:_0x43656d[_0x2bd9('0x22')]+_0x43656d[_0x2bd9('0x21')];var _0x19e1a9;if(_0x2193c8>=_0x4758ff){_0x2193c8=_0x4758ff;_0x19e1a9=0xc8;}else{_0x19e1a9=0xce;}_0x2e0ccc['status'](_0x19e1a9);return _0x2e0ccc[_0x2bd9('0x24')](_0x2bd9('0x25'),_0x50701c+'-'+_0x2193c8+'/'+_0x4758ff)[_0x2bd9('0x1f')](_0x39d407);}return null;};}function patchUpdates(_0x375a28){return function(_0x35d3b9){try{jsonpatch['apply'](_0x35d3b9,_0x375a28,!![]);}catch(_0x362ea7){return BPromise[_0x2bd9('0x26')](_0x362ea7);}return _0x35d3b9[_0x2bd9('0x27')]();};}function saveUpdates(_0xb48e08,_0x1e9f1b){return function(_0xa1debd){if(_0xa1debd){return _0xa1debd['update'](_0xb48e08)[_0x2bd9('0x28')](function(_0x17e44c){return _0x17e44c;});}return null;};}function removeEntity(_0x766144,_0x5d74d6){return function(_0x2a2ce1){if(_0x2a2ce1){return _0x2a2ce1[_0x2bd9('0x29')]()[_0x2bd9('0x28')](function(){_0x766144[_0x2bd9('0x1e')](0xcc)[_0x2bd9('0x2a')]();});}};}function handleEntityNotFound(_0x337358,_0x53aff8){return function(_0x41c3bb){if(!_0x41c3bb){_0x337358[_0x2bd9('0x1d')](0x194);}return _0x41c3bb;};}function handleError(_0x57d227,_0x1e1ba1){_0x1e1ba1=_0x1e1ba1||0x1f4;return function(_0x5566ad){logger[_0x2bd9('0x2b')](_0x5566ad['stack']);if(_0x5566ad[_0x2bd9('0x2c')]){delete _0x5566ad['name'];}_0x57d227[_0x2bd9('0x1e')](_0x1e1ba1)[_0x2bd9('0x2d')](_0x5566ad);};}exports[_0x2bd9('0x2e')]=function(_0x12a8c0,_0x2b8f4a){var _0x15e90d={},_0x2e9e94={},_0x483fb8={'count':0x0,'rows':[]};var _0x370cb5=_[_0x2bd9('0x2f')](db[_0x2bd9('0x30')][_0x2bd9('0x31')],function(_0x9bac6b){return{'name':_0x9bac6b[_0x2bd9('0x32')],'type':_0x9bac6b['type'][_0x2bd9('0x33')]};});_0x2e9e94[_0x2bd9('0x34')]=_[_0x2bd9('0x35')](_['map'](_0x370cb5,_0x2bd9('0x2c')),[_0x2bd9('0x2c')]);_0x2e9e94['query']=_['keys'](_0x12a8c0['query']);_0x2e9e94[_0x2bd9('0x36')]=_[_0x2bd9('0x37')](_0x2e9e94[_0x2bd9('0x34')],_0x2e9e94[_0x2bd9('0x38')]);_0x15e90d['attributes']=_[_0x2bd9('0x37')](_0x2e9e94[_0x2bd9('0x34')],qs['fields'](_0x12a8c0[_0x2bd9('0x38')][_0x2bd9('0x39')]));_0x15e90d['attributes']=_0x15e90d[_0x2bd9('0x3a')][_0x2bd9('0x3b')]?_0x15e90d[_0x2bd9('0x3a')]:_0x2e9e94['model'];if(!_0x12a8c0['query'][_0x2bd9('0x3c')](_0x2bd9('0x3d'))){_0x15e90d['limit']=qs[_0x2bd9('0x21')](_0x12a8c0['query'][_0x2bd9('0x21')]);_0x15e90d['offset']=qs[_0x2bd9('0x22')](_0x12a8c0[_0x2bd9('0x38')][_0x2bd9('0x22')]);}_0x15e90d['order']=qs[_0x2bd9('0x3e')](_0x12a8c0[_0x2bd9('0x38')]['sort']);_0x15e90d[_0x2bd9('0x3f')]=qs['filters'](_['pick'](_0x12a8c0[_0x2bd9('0x38')],_0x2e9e94[_0x2bd9('0x36')]),_0x370cb5);if(_0x12a8c0[_0x2bd9('0x38')][_0x2bd9('0x40')]){_0x15e90d[_0x2bd9('0x3f')]=_['merge'](_0x15e90d['where'],{'$or':_[_0x2bd9('0x2f')](_0x370cb5,function(_0x26b2e8){if(_0x26b2e8[_0x2bd9('0x41')]!=='VIRTUAL'){var _0x4dd693={};_0x4dd693[_0x26b2e8[_0x2bd9('0x2c')]]={'$like':'%'+_0x12a8c0[_0x2bd9('0x38')][_0x2bd9('0x40')]+'%'};return _0x4dd693;}})});}_0x15e90d=_[_0x2bd9('0x42')]({},_0x15e90d,_0x12a8c0[_0x2bd9('0x43')]);var _0x2ff72c={'where':_0x15e90d['where']};return db['VoiceMailMessage'][_0x2bd9('0x23')](_0x2ff72c)[_0x2bd9('0x28')](function(_0x46e3b0){_0x483fb8[_0x2bd9('0x23')]=_0x46e3b0;if(_0x12a8c0[_0x2bd9('0x38')]['includeAll']){_0x15e90d[_0x2bd9('0x44')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x2bd9('0x45')](_0x15e90d);})['then'](function(_0x2abbea){_0x483fb8[_0x2bd9('0x46')]=_0x2abbea;return _0x483fb8;})[_0x2bd9('0x28')](respondWithFilteredResult(_0x2b8f4a,_0x15e90d))[_0x2bd9('0x47')](handleError(_0x2b8f4a,null));};exports[_0x2bd9('0x48')]=function(_0xdb21e9,_0x2e98ac){var _0x3f2b36={'raw':!![],'where':{'id':_0xdb21e9[_0x2bd9('0x49')]['id']}},_0x5713b0={};_0x5713b0[_0x2bd9('0x34')]=_[_0x2bd9('0x4a')](db[_0x2bd9('0x30')]['rawAttributes']);_0x5713b0['query']=_['keys'](_0xdb21e9[_0x2bd9('0x38')]);_0x5713b0[_0x2bd9('0x36')]=_[_0x2bd9('0x37')](_0x5713b0[_0x2bd9('0x34')],_0x5713b0[_0x2bd9('0x38')]);_0x3f2b36['attributes']=_[_0x2bd9('0x37')](_0x5713b0[_0x2bd9('0x34')],qs[_0x2bd9('0x39')](_0xdb21e9[_0x2bd9('0x38')]['fields']));_0x3f2b36[_0x2bd9('0x3a')]=_0x3f2b36[_0x2bd9('0x3a')][_0x2bd9('0x3b')]?_0x3f2b36[_0x2bd9('0x3a')]:_0x5713b0[_0x2bd9('0x34')];if(_0xdb21e9[_0x2bd9('0x38')][_0x2bd9('0x4b')]){_0x3f2b36[_0x2bd9('0x44')]=[{'all':!![]}];}_0x3f2b36=_[_0x2bd9('0x42')]({},_0x3f2b36,_0xdb21e9[_0x2bd9('0x43')]);return db['VoiceMailMessage']['find'](_0x3f2b36)['then'](handleEntityNotFound(_0x2e98ac,null))[_0x2bd9('0x28')](respondWithResult(_0x2e98ac,null))[_0x2bd9('0x47')](handleError(_0x2e98ac,null));};exports[_0x2bd9('0x4c')]=function(_0x2911c1,_0x399b79){return db[_0x2bd9('0x30')][_0x2bd9('0x4c')](_0x2911c1[_0x2bd9('0x4d')],{})['then'](respondWithResult(_0x399b79,0xc9))['catch'](handleError(_0x399b79,null));};exports['update']=function(_0x20bd96,_0x355dcd){if(_0x20bd96['body']['id']){delete _0x20bd96[_0x2bd9('0x4d')]['id'];}return db[_0x2bd9('0x30')][_0x2bd9('0x4e')]({'where':{'id':_0x20bd96[_0x2bd9('0x49')]['id']}})[_0x2bd9('0x28')](handleEntityNotFound(_0x355dcd,null))[_0x2bd9('0x28')](saveUpdates(_0x20bd96[_0x2bd9('0x4d')],null))[_0x2bd9('0x28')](respondWithResult(_0x355dcd,null))[_0x2bd9('0x47')](handleError(_0x355dcd,null));};exports[_0x2bd9('0x29')]=function(_0x4ec66e,_0x3d7eab){return db[_0x2bd9('0x30')][_0x2bd9('0x4e')]({'where':{'id':_0x4ec66e[_0x2bd9('0x49')]['id']}})[_0x2bd9('0x28')](handleEntityNotFound(_0x3d7eab,null))[_0x2bd9('0x28')](removeEntity(_0x3d7eab,null))[_0x2bd9('0x47')](handleError(_0x3d7eab,null));};exports[_0x2bd9('0x4f')]=function(_0x177d72,_0x520cc1,_0x582866){return db[_0x2bd9('0x30')]['find']({'where':{'id':_0x177d72[_0x2bd9('0x49')]['id']},'attributes':['id',_0x2bd9('0x50'),'msg_id']})[_0x2bd9('0x28')](handleEntityNotFound(_0x520cc1,null))[_0x2bd9('0x28')](function(_0x9543a9){if(_0x9543a9){if(!_0x9543a9[_0x2bd9('0x50')]){throw new db['Sequelize']['ValidationError'](_0x2bd9('0x51'));}var _0x55e70a={'Content-Type':'audio/wav','Content-Disposition':_0x2bd9('0x52')};if(_0x9543a9[_0x2bd9('0x53')]){_0x55e70a['Content-Disposition']='attachment;\x20filename=\x22'+_0x9543a9[_0x2bd9('0x53')]+_0x2bd9('0x54');}_0x520cc1['set'](_0x55e70a);return _0x520cc1[_0x2bd9('0x2d')](new Buffer(_0x9543a9['recording']));}})[_0x2bd9('0x47')](handleError(_0x520cc1,null));};
\ No newline at end of file
+var _0x262b=['attachment','Content-Disposition','.wav\x22','eml-format','rimraf','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','update','then','end','error','name','send','map','VoiceMailMessage','rawAttributes','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','destroy','msg_id','recording','Sequelize','ValidationError','audio/wav'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x262b,0x9d));var _0xb262=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x262b[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xb262('0x0'));var rimraf=require(_0xb262('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb262('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb262('0x3'));var Mustache=require(_0xb262('0x4'));var util=require('util');var path=require(_0xb262('0x5'));var sox=require(_0xb262('0x6'));var csv=require(_0xb262('0x7'));var ejs=require(_0xb262('0x8'));var fs=require('fs');var fs_extra=require(_0xb262('0x9'));var _=require(_0xb262('0xa'));var squel=require(_0xb262('0xb'));var crypto=require(_0xb262('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb262('0xd'));var authService=require(_0xb262('0xe'));var qs=require(_0xb262('0xf'));var as=require(_0xb262('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb262('0x11'))('api');var utils=require(_0xb262('0x12'));var config=require(_0xb262('0x13'));var licenseUtil=require(_0xb262('0x14'));var db=require(_0xb262('0x15'))['db'];function respondWithStatusCode(_0x10341c,_0x293730){_0x293730=_0x293730||0xcc;return function(_0x1ead85){if(_0x1ead85){return _0x10341c['sendStatus'](_0x293730);}return _0x10341c[_0xb262('0x16')](_0x293730)['end']();};}function respondWithResult(_0x59d552,_0x2c3149){_0x2c3149=_0x2c3149||0xc8;return function(_0xc29cbc){if(_0xc29cbc){return _0x59d552['status'](_0x2c3149)[_0xb262('0x17')](_0xc29cbc);}};}function respondWithFilteredResult(_0x3107a1,_0x3d923e){return function(_0x367843){if(_0x367843){var _0x90edd9=typeof _0x3d923e[_0xb262('0x18')]===_0xb262('0x19')&&typeof _0x3d923e[_0xb262('0x1a')]==='undefined';var _0x2613bc=_0x367843[_0xb262('0x1b')];var _0x3ebef5=_0x90edd9?0x0:_0x3d923e[_0xb262('0x18')];var _0x50803a=_0x90edd9?_0x367843[_0xb262('0x1b')]:_0x3d923e[_0xb262('0x18')]+_0x3d923e[_0xb262('0x1a')];var _0x405666;if(_0x50803a>=_0x2613bc){_0x50803a=_0x2613bc;_0x405666=0xc8;}else{_0x405666=0xce;}_0x3107a1[_0xb262('0x16')](_0x405666);return _0x3107a1[_0xb262('0x1c')]('Content-Range',_0x3ebef5+'-'+_0x50803a+'/'+_0x2613bc)[_0xb262('0x17')](_0x367843);}return null;};}function patchUpdates(_0x6f5c6d){return function(_0x3dca59){try{jsonpatch[_0xb262('0x1d')](_0x3dca59,_0x6f5c6d,!![]);}catch(_0x260115){return BPromise[_0xb262('0x1e')](_0x260115);}return _0x3dca59['save']();};}function saveUpdates(_0x50f88f,_0x418e69){return function(_0x4149e3){if(_0x4149e3){return _0x4149e3[_0xb262('0x1f')](_0x50f88f)[_0xb262('0x20')](function(_0x37b5dd){return _0x37b5dd;});}return null;};}function removeEntity(_0x168869,_0x592897){return function(_0x20eb30){if(_0x20eb30){return _0x20eb30['destroy']()[_0xb262('0x20')](function(){_0x168869[_0xb262('0x16')](0xcc)[_0xb262('0x21')]();});}};}function handleEntityNotFound(_0x44aa09,_0x591739){return function(_0x3f563a){if(!_0x3f563a){_0x44aa09['sendStatus'](0x194);}return _0x3f563a;};}function handleError(_0x39e1d0,_0x3d093f){_0x3d093f=_0x3d093f||0x1f4;return function(_0x102b60){logger[_0xb262('0x22')](_0x102b60['stack']);if(_0x102b60[_0xb262('0x23')]){delete _0x102b60[_0xb262('0x23')];}_0x39e1d0['status'](_0x3d093f)[_0xb262('0x24')](_0x102b60);};}exports['index']=function(_0x22ba5c,_0x599d13){var _0x5dacc2={},_0x80cfda={},_0x585813={'count':0x0,'rows':[]};var _0x1f03da=_[_0xb262('0x25')](db[_0xb262('0x26')][_0xb262('0x27')],function(_0x396a1a){return{'name':_0x396a1a['fieldName'],'type':_0x396a1a[_0xb262('0x28')][_0xb262('0x29')]};});_0x80cfda[_0xb262('0x2a')]=_[_0xb262('0x2b')](_[_0xb262('0x25')](_0x1f03da,'name'),[_0xb262('0x23')]);_0x80cfda[_0xb262('0x2c')]=_[_0xb262('0x2d')](_0x22ba5c[_0xb262('0x2c')]);_0x80cfda['filters']=_[_0xb262('0x2e')](_0x80cfda[_0xb262('0x2a')],_0x80cfda[_0xb262('0x2c')]);_0x5dacc2[_0xb262('0x2f')]=_[_0xb262('0x2e')](_0x80cfda[_0xb262('0x2a')],qs['fields'](_0x22ba5c[_0xb262('0x2c')][_0xb262('0x30')]));_0x5dacc2[_0xb262('0x2f')]=_0x5dacc2[_0xb262('0x2f')][_0xb262('0x31')]?_0x5dacc2[_0xb262('0x2f')]:_0x80cfda[_0xb262('0x2a')];if(!_0x22ba5c[_0xb262('0x2c')][_0xb262('0x32')](_0xb262('0x33'))){_0x5dacc2['limit']=qs[_0xb262('0x1a')](_0x22ba5c['query'][_0xb262('0x1a')]);_0x5dacc2[_0xb262('0x18')]=qs[_0xb262('0x18')](_0x22ba5c['query']['offset']);}_0x5dacc2[_0xb262('0x34')]=qs[_0xb262('0x35')](_0x22ba5c[_0xb262('0x2c')][_0xb262('0x35')]);_0x5dacc2[_0xb262('0x36')]=qs['filters'](_[_0xb262('0x37')](_0x22ba5c[_0xb262('0x2c')],_0x80cfda['filters']),_0x1f03da);if(_0x22ba5c[_0xb262('0x2c')][_0xb262('0x38')]){_0x5dacc2[_0xb262('0x36')]=_[_0xb262('0x39')](_0x5dacc2[_0xb262('0x36')],{'$or':_['map'](_0x1f03da,function(_0x4a68c6){if(_0x4a68c6[_0xb262('0x28')]!==_0xb262('0x3a')){var _0x290214={};_0x290214[_0x4a68c6[_0xb262('0x23')]]={'$like':'%'+_0x22ba5c['query'][_0xb262('0x38')]+'%'};return _0x290214;}})});}_0x5dacc2=_[_0xb262('0x39')]({},_0x5dacc2,_0x22ba5c[_0xb262('0x3b')]);var _0x3ab6fd={'where':_0x5dacc2[_0xb262('0x36')]};return db[_0xb262('0x26')][_0xb262('0x1b')](_0x3ab6fd)[_0xb262('0x20')](function(_0x5ea7f1){_0x585813[_0xb262('0x1b')]=_0x5ea7f1;if(_0x22ba5c[_0xb262('0x2c')][_0xb262('0x3c')]){_0x5dacc2[_0xb262('0x3d')]=[{'all':!![]}];}return db[_0xb262('0x26')][_0xb262('0x3e')](_0x5dacc2);})[_0xb262('0x20')](function(_0x15097e){_0x585813['rows']=_0x15097e;return _0x585813;})[_0xb262('0x20')](respondWithFilteredResult(_0x599d13,_0x5dacc2))[_0xb262('0x3f')](handleError(_0x599d13,null));};exports[_0xb262('0x40')]=function(_0x2e8f81,_0x4bce07){var _0x1ee9de={'raw':!![],'where':{'id':_0x2e8f81[_0xb262('0x41')]['id']}},_0x4e00ef={};_0x4e00ef[_0xb262('0x2a')]=_[_0xb262('0x2d')](db[_0xb262('0x26')][_0xb262('0x27')]);_0x4e00ef[_0xb262('0x2c')]=_[_0xb262('0x2d')](_0x2e8f81[_0xb262('0x2c')]);_0x4e00ef['filters']=_[_0xb262('0x2e')](_0x4e00ef[_0xb262('0x2a')],_0x4e00ef[_0xb262('0x2c')]);_0x1ee9de[_0xb262('0x2f')]=_[_0xb262('0x2e')](_0x4e00ef[_0xb262('0x2a')],qs['fields'](_0x2e8f81[_0xb262('0x2c')][_0xb262('0x30')]));_0x1ee9de[_0xb262('0x2f')]=_0x1ee9de[_0xb262('0x2f')][_0xb262('0x31')]?_0x1ee9de[_0xb262('0x2f')]:_0x4e00ef[_0xb262('0x2a')];if(_0x2e8f81[_0xb262('0x2c')]['includeAll']){_0x1ee9de[_0xb262('0x3d')]=[{'all':!![]}];}_0x1ee9de=_['merge']({},_0x1ee9de,_0x2e8f81[_0xb262('0x3b')]);return db['VoiceMailMessage'][_0xb262('0x42')](_0x1ee9de)[_0xb262('0x20')](handleEntityNotFound(_0x4bce07,null))[_0xb262('0x20')](respondWithResult(_0x4bce07,null))[_0xb262('0x3f')](handleError(_0x4bce07,null));};exports[_0xb262('0x43')]=function(_0x1d7dc1,_0xaefab6){return db[_0xb262('0x26')][_0xb262('0x43')](_0x1d7dc1['body'],{})[_0xb262('0x20')](respondWithResult(_0xaefab6,0xc9))[_0xb262('0x3f')](handleError(_0xaefab6,null));};exports[_0xb262('0x1f')]=function(_0x43982b,_0x237f31){if(_0x43982b['body']['id']){delete _0x43982b['body']['id'];}return db[_0xb262('0x26')][_0xb262('0x42')]({'where':{'id':_0x43982b[_0xb262('0x41')]['id']}})[_0xb262('0x20')](handleEntityNotFound(_0x237f31,null))[_0xb262('0x20')](saveUpdates(_0x43982b['body'],null))[_0xb262('0x20')](respondWithResult(_0x237f31,null))['catch'](handleError(_0x237f31,null));};exports[_0xb262('0x44')]=function(_0x5bd2ed,_0x48f64d){return db['VoiceMailMessage'][_0xb262('0x42')]({'where':{'id':_0x5bd2ed[_0xb262('0x41')]['id']}})[_0xb262('0x20')](handleEntityNotFound(_0x48f64d,null))[_0xb262('0x20')](removeEntity(_0x48f64d,null))['catch'](handleError(_0x48f64d,null));};exports['download']=function(_0x18181a,_0x540185,_0xceb214){return db['VoiceMailMessage']['find']({'where':{'id':_0x18181a[_0xb262('0x41')]['id']},'attributes':['id','recording',_0xb262('0x45')]})[_0xb262('0x20')](handleEntityNotFound(_0x540185,null))[_0xb262('0x20')](function(_0x1ba136){if(_0x1ba136){if(!_0x1ba136[_0xb262('0x46')]){throw new db[(_0xb262('0x47'))][(_0xb262('0x48'))]('VoiceMailMessage\x20not\x20found');}var _0x452242={'Content-Type':_0xb262('0x49'),'Content-Disposition':_0xb262('0x4a')};if(_0x1ba136[_0xb262('0x45')]){_0x452242[_0xb262('0x4b')]='attachment;\x20filename=\x22'+_0x1ba136[_0xb262('0x45')]+_0xb262('0x4c');}_0x540185[_0xb262('0x1c')](_0x452242);return _0x540185[_0xb262('0x24')](new Buffer(_0x1ba136['recording']));}})['catch'](handleError(_0x540185,null));};
\ No newline at end of file
index 5bc0973..6425ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa268=['VoiceMailMessage','voice_voicemail_messages','dir','util','moment','bluebird','path','../../config/environment','./voiceMailMessage.attributes'];(function(_0x3a4e18,_0xd83726){var _0x34dd5e=function(_0x579f40){while(--_0x579f40){_0x3a4e18['push'](_0x3a4e18['shift']());}};_0x34dd5e(++_0xd83726);}(_0xa268,0x81));var _0x8a26=function(_0x51b05d,_0x4a6691){_0x51b05d=_0x51b05d-0x0;var _0x31bcb8=_0xa268[_0x51b05d];return _0x31bcb8;};'use strict';var _=require('lodash');var util=require(_0x8a26('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x8a26('0x1'));var BPromise=require(_0x8a26('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8a26('0x3'));var rimraf=require('rimraf');var config=require(_0x8a26('0x4'));var attributes=require(_0x8a26('0x5'));module['exports']=function(_0x50ee8e,_0x49fee9){return _0x50ee8e['define'](_0x8a26('0x6'),attributes,{'tableName':_0x8a26('0x7'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0x8a26('0x8')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xd5de=['bluebird','path','rimraf','../../config/environment','./voiceMailMessage.attributes','define','VoiceMailMessage','voice_voicemail_messages','dir','util','moment'];(function(_0x3f9011,_0x309210){var _0xbce05b=function(_0x4d5895){while(--_0x4d5895){_0x3f9011['push'](_0x3f9011['shift']());}};_0xbce05b(++_0x309210);}(_0xd5de,0x1cc));var _0xed5d=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xd5de[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require(_0xed5d('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xed5d('0x1'));var BPromise=require(_0xed5d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed5d('0x3'));var rimraf=require(_0xed5d('0x4'));var config=require(_0xed5d('0x5'));var attributes=require(_0xed5d('0x6'));module['exports']=function(_0x5d4031,_0x3751d0){return _0x5d4031[_0xed5d('0x7')](_0xed5d('0x8'),attributes,{'tableName':_0xed5d('0x9'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xed5d('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index e86b962..8f78a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e4=['http','then','info','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceMailMessage,\x20%s,\x20%s','message','request\x20sent','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise'];(function(_0x18fc2d,_0x3d356a){var _0x409fc8=function(_0x432710){while(--_0x432710){_0x18fc2d['push'](_0x18fc2d['shift']());}};_0x409fc8(++_0x3d356a);}(_0x34e4,0xa0));var _0x434e=function(_0xa8868c,_0x148c73){_0xa8868c=_0xa8868c-0x0;var _0x1cef75=_0x34e4[_0xa8868c];return _0x1cef75;};'use strict';var _=require('lodash');var util=require(_0x434e('0x0'));var moment=require(_0x434e('0x1'));var BPromise=require(_0x434e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x434e('0x3'));var db=require(_0x434e('0x4'))['db'];var utils=require(_0x434e('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x434e('0x6'));var jayson=require(_0x434e('0x7'));var client=jayson['client'][_0x434e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b6cfd,_0x493e22,_0x2d1790){return new BPromise(function(_0x5b14a0,_0x306c96){return client['request'](_0x2b6cfd,_0x2d1790)[_0x434e('0x9')](function(_0x24b04b){logger[_0x434e('0xa')]('VoiceMailMessage,\x20%s,\x20%s',_0x493e22,'request\x20sent');logger[_0x434e('0xb')](_0x434e('0xc'),_0x493e22,'request\x20sent',JSON[_0x434e('0xd')](_0x24b04b));if(_0x24b04b[_0x434e('0xe')]){if(_0x24b04b[_0x434e('0xe')][_0x434e('0xf')]===0x1f4){logger['error'](_0x434e('0x10'),_0x493e22,_0x24b04b[_0x434e('0xe')][_0x434e('0x11')]);return _0x306c96(_0x24b04b[_0x434e('0xe')][_0x434e('0x11')]);}logger[_0x434e('0xe')](_0x434e('0x10'),_0x493e22,_0x24b04b[_0x434e('0xe')]['message']);return _0x5b14a0(_0x24b04b[_0x434e('0xe')][_0x434e('0x11')]);}else{logger[_0x434e('0xa')](_0x434e('0x10'),_0x493e22,_0x434e('0x12'));_0x5b14a0(_0x24b04b[_0x434e('0x13')]['message']);}})[_0x434e('0x14')](function(_0x36ccd0){logger[_0x434e('0xe')](_0x434e('0x10'),_0x493e22,_0x36ccd0);_0x306c96(_0x36ccd0);});});}
\ No newline at end of file
+var _0xb7a1=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x19115e,_0x507bab){var _0x45bbd4=function(_0x1308bf){while(--_0x1308bf){_0x19115e['push'](_0x19115e['shift']());}};_0x45bbd4(++_0x507bab);}(_0xb7a1,0xbb));var _0x1b7a=function(_0x302d47,_0x627e2c){_0x302d47=_0x302d47-0x0;var _0x2a0b0d=_0xb7a1[_0x302d47];return _0x2a0b0d;};'use strict';var _=require('lodash');var util=require(_0x1b7a('0x0'));var moment=require(_0x1b7a('0x1'));var BPromise=require(_0x1b7a('0x2'));var rs=require(_0x1b7a('0x3'));var fs=require('fs');var Redis=require(_0x1b7a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b7a('0x5'));var logger=require(_0x1b7a('0x6'))(_0x1b7a('0x7'));var config=require(_0x1b7a('0x8'));var jayson=require(_0x1b7a('0x9'));var client=jayson[_0x1b7a('0xa')][_0x1b7a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1367d3,_0x2939db,_0x2259cd){return new BPromise(function(_0x2ee271,_0x4ca5f0){return client[_0x1b7a('0xc')](_0x1367d3,_0x2259cd)[_0x1b7a('0xd')](function(_0x281936){logger[_0x1b7a('0xe')](_0x1b7a('0xf'),_0x2939db,_0x1b7a('0x10'));logger[_0x1b7a('0x11')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x2939db,_0x1b7a('0x10'),JSON[_0x1b7a('0x12')](_0x281936));if(_0x281936[_0x1b7a('0x13')]){if(_0x281936['error'][_0x1b7a('0x14')]===0x1f4){logger['error'](_0x1b7a('0xf'),_0x2939db,_0x281936[_0x1b7a('0x13')]['message']);return _0x4ca5f0(_0x281936['error'][_0x1b7a('0x15')]);}logger[_0x1b7a('0x13')](_0x1b7a('0xf'),_0x2939db,_0x281936[_0x1b7a('0x13')][_0x1b7a('0x15')]);return _0x2ee271(_0x281936['error'][_0x1b7a('0x15')]);}else{logger[_0x1b7a('0xe')](_0x1b7a('0xf'),_0x2939db,'request\x20sent');_0x2ee271(_0x281936[_0x1b7a('0x16')][_0x1b7a('0x15')]);}})[_0x1b7a('0x17')](function(_0x111d53){logger[_0x1b7a('0x13')](_0x1b7a('0xf'),_0x2939db,_0x111d53);_0x4ca5f0(_0x111d53);});});}
\ No newline at end of file
index 934c45a..b9ed0bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb586=['exports','multer','util','connect-timeout','../../components/interaction/service','./voiceMusicOnHold.controller','isAuthenticated','index','get','show','/:id/sounds','getSounds','post','create','put','/:id','update','delete','destroy','/:id/sounds/:id2','removeSound'];(function(_0x26531f,_0x286ca7){var _0x133c8c=function(_0x3ee8cc){while(--_0x3ee8cc){_0x26531f['push'](_0x26531f['shift']());}};_0x133c8c(++_0x286ca7);}(_0xb586,0x6a));var _0x6b58=function(_0x589f71,_0x212326){_0x589f71=_0x589f71-0x0;var _0x5763bd=_0xb586[_0x589f71];return _0x5763bd;};'use strict';var multer=require(_0x6b58('0x0'));var util=require(_0x6b58('0x1'));var path=require('path');var timeout=require(_0x6b58('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6b58('0x3'));var config=require('../../config/environment');var controller=require(_0x6b58('0x4'));router['get']('/',auth[_0x6b58('0x5')](),controller[_0x6b58('0x6')]);router[_0x6b58('0x7')]('/:id',auth[_0x6b58('0x5')](),controller[_0x6b58('0x8')]);router[_0x6b58('0x7')](_0x6b58('0x9'),auth['isAuthenticated'](),controller[_0x6b58('0xa')]);router[_0x6b58('0xb')]('/',auth[_0x6b58('0x5')](),controller[_0x6b58('0xc')]);router[_0x6b58('0xb')](_0x6b58('0x9'),auth[_0x6b58('0x5')](),controller['addSound']);router[_0x6b58('0xd')](_0x6b58('0xe'),auth['isAuthenticated'](),controller[_0x6b58('0xf')]);router[_0x6b58('0x10')]('/:id',auth[_0x6b58('0x5')](),controller[_0x6b58('0x11')]);router[_0x6b58('0x10')](_0x6b58('0x12'),auth[_0x6b58('0x5')](),controller[_0x6b58('0x13')]);module[_0x6b58('0x14')]=router;
\ No newline at end of file
+var _0x4d8c=['get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds','post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4d8c,0x1a0));var _0xc4d8=function(_0x2bc5fb,_0x703997){_0x2bc5fb=_0x2bc5fb-0x0;var _0x26b107=_0x4d8c[_0x2bc5fb];return _0x26b107;};'use strict';var multer=require(_0xc4d8('0x0'));var util=require(_0xc4d8('0x1'));var path=require(_0xc4d8('0x2'));var timeout=require(_0xc4d8('0x3'));var express=require('express');var router=express[_0xc4d8('0x4')]();var fs_extra=require(_0xc4d8('0x5'));var auth=require(_0xc4d8('0x6'));var interaction=require(_0xc4d8('0x7'));var config=require(_0xc4d8('0x8'));var controller=require('./voiceMusicOnHold.controller');router[_0xc4d8('0x9')]('/',auth[_0xc4d8('0xa')](),controller[_0xc4d8('0xb')]);router[_0xc4d8('0x9')](_0xc4d8('0xc'),auth[_0xc4d8('0xa')](),controller[_0xc4d8('0xd')]);router[_0xc4d8('0x9')](_0xc4d8('0xe'),auth[_0xc4d8('0xa')](),controller[_0xc4d8('0xf')]);router[_0xc4d8('0x10')]('/',auth[_0xc4d8('0xa')](),controller[_0xc4d8('0x11')]);router[_0xc4d8('0x10')](_0xc4d8('0xe'),auth['isAuthenticated'](),controller[_0xc4d8('0x12')]);router[_0xc4d8('0x13')](_0xc4d8('0xc'),auth[_0xc4d8('0xa')](),controller[_0xc4d8('0x14')]);router[_0xc4d8('0x15')]('/:id',auth[_0xc4d8('0xa')](),controller[_0xc4d8('0x16')]);router[_0xc4d8('0x15')](_0xc4d8('0x17'),auth[_0xc4d8('0xa')](),controller['removeSound']);module[_0xc4d8('0x18')]=router;
\ No newline at end of file
index 21c1dc1..51e0178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0469=['custom','files','mp3nb','quietmp3nb','quietmp3','mp3','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM'];(function(_0x4120c8,_0x2dc453){var _0x4310de=function(_0x11554c){while(--_0x11554c){_0x4120c8['push'](_0x4120c8['shift']());}};_0x4310de(++_0x2dc453);}(_0x0469,0xbf));var _0x9046=function(_0x226a41,_0x11ab55){_0x226a41=_0x226a41-0x0;var _0x42451e=_0x0469[_0x226a41];return _0x42451e;};'use strict';var Sequelize=require(_0x9046('0x0'));module[_0x9046('0x1')]={'name':{'type':Sequelize[_0x9046('0x2')],'allowNull':![],'unique':_0x9046('0x3')},'mode':{'type':Sequelize[_0x9046('0x4')](_0x9046('0x5'),_0x9046('0x6'),_0x9046('0x7'),_0x9046('0x8'),_0x9046('0x9'),_0x9046('0xa')),'allowNull':!![],'defaultValue':_0x9046('0x6')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0x9046('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x9046('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x9046('0x2')],'allowNull':!![],'defaultValue':_0x9046('0xb')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x9046('0xc')},'defaultEntry':{'type':Sequelize[_0x9046('0xd')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6e19=['STRING','TIMESTAMP','BOOLEAN','ENUM','custom','files','quietmp3nb','quietmp3','mp3'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x6e19,0x198));var _0x96e1=function(_0x179544,_0x5f04f0){_0x179544=_0x179544-0x0;var _0x332aac=_0x6e19[_0x179544];return _0x332aac;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x96e1('0x0')](_0x96e1('0x1'),_0x96e1('0x2'),'mp3nb',_0x96e1('0x3'),_0x96e1('0x4'),_0x96e1('0x5')),'allowNull':!![],'defaultValue':_0x96e1('0x2')},'directory':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![]},'application':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![]},'digit':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![]},'sort':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x96e1('0x7')},'defaultEntry':{'type':Sequelize[_0x96e1('0x8')],'defaultValue':0x0}};
\ No newline at end of file
index 00017d1..478a4f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86de=['directory','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','Sound','save_name','converted_format','createdAt','join','server/files/sounds/converted','%s.%s','extname','server/files/moh','format','message','removeSound','findOne','id2','getSounds','pick','eml-format','rimraf','zip-dir','bluebird','mustache','sox','to-csv','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','get','MusicOnHolds','end','error','stack','name','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','intersection','find','body','create','sequelize','transaction','mode','files','root','mkdirSync'];(function(_0x1e9887,_0x3dba5e){var _0x31ec1d=function(_0x4bd73a){while(--_0x4bd73a){_0x1e9887['push'](_0x1e9887['shift']());}};_0x31ec1d(++_0x3dba5e);}(_0x86de,0x150));var _0xe86d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x86de[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xe86d('0x0'));var rimraf=require(_0xe86d('0x1'));var zipdir=require(_0xe86d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe86d('0x3'));var Mustache=require(_0xe86d('0x4'));var util=require('util');var path=require('path');var sox=require(_0xe86d('0x5'));var csv=require(_0xe86d('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe86d('0x7'));var squel=require(_0xe86d('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe86d('0x9'));var toCsv=require('to-csv');var querystring=require(_0xe86d('0xa'));var Papa=require(_0xe86d('0xb'));var Redis=require('ioredis');var authService=require(_0xe86d('0xc'));var qs=require(_0xe86d('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe86d('0xe'))(_0xe86d('0xf'));var utils=require('../../config/utils');var config=require(_0xe86d('0x10'));var licenseUtil=require(_0xe86d('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x386f54,_0x57dd5){_0x57dd5=_0x57dd5||0xcc;return function(_0x3e00d0){if(_0x3e00d0){return _0x386f54[_0xe86d('0x12')](_0x57dd5);}return _0x386f54[_0xe86d('0x13')](_0x57dd5)['end']();};}function respondWithResult(_0x4de29e,_0x19147e){_0x19147e=_0x19147e||0xc8;return function(_0x41f87d){if(_0x41f87d){return _0x4de29e[_0xe86d('0x13')](_0x19147e)[_0xe86d('0x14')](_0x41f87d);}};}function respondWithFilteredResult(_0x16f4ac,_0x417819){return function(_0x22eff0){if(_0x22eff0){var _0x4c7b43=typeof _0x417819[_0xe86d('0x15')]===_0xe86d('0x16')&&typeof _0x417819[_0xe86d('0x17')]===_0xe86d('0x16');var _0x23a3e0=_0x22eff0[_0xe86d('0x18')];var _0xd75c5=_0x4c7b43?0x0:_0x417819[_0xe86d('0x15')];var _0x329e59=_0x4c7b43?_0x22eff0[_0xe86d('0x18')]:_0x417819['offset']+_0x417819[_0xe86d('0x17')];var _0x1671f9;if(_0x329e59>=_0x23a3e0){_0x329e59=_0x23a3e0;_0x1671f9=0xc8;}else{_0x1671f9=0xce;}_0x16f4ac[_0xe86d('0x13')](_0x1671f9);return _0x16f4ac[_0xe86d('0x19')](_0xe86d('0x1a'),_0xd75c5+'-'+_0x329e59+'/'+_0x23a3e0)[_0xe86d('0x14')](_0x22eff0);}return null;};}function patchUpdates(_0x42410e){return function(_0x1740db){try{jsonpatch['apply'](_0x1740db,_0x42410e,!![]);}catch(_0x3606dd){return BPromise['reject'](_0x3606dd);}return _0x1740db[_0xe86d('0x1b')]();};}function saveUpdates(_0x240a00,_0x455f4f){return function(_0x1a7e98){if(_0x1a7e98){return _0x1a7e98[_0xe86d('0x1c')](_0x240a00)[_0xe86d('0x1d')](function(_0x53968b){return _0x53968b;});}return null;};}function removeEntity(_0x1e1faa,_0x5bd45f){return function(_0x3b7cf6){if(_0x3b7cf6){return _0x3b7cf6[_0xe86d('0x1e')]()[_0xe86d('0x1d')](function(){var _0x420a73=_0x3b7cf6[_0xe86d('0x1f')]({'plain':!![]});var _0x4b4780=_0xe86d('0x20');return db['UserProfileResource'][_0xe86d('0x1e')]({'where':{'type':_0x4b4780,'resourceId':_0x420a73['id']}})[_0xe86d('0x1d')](function(){return _0x3b7cf6;});})['then'](function(){_0x1e1faa[_0xe86d('0x13')](0xcc)[_0xe86d('0x21')]();});}};}function handleEntityNotFound(_0x4d2de9,_0x3b2419){return function(_0x2c03ed){if(!_0x2c03ed){_0x4d2de9[_0xe86d('0x12')](0x194);}return _0x2c03ed;};}function handleError(_0xc3c7ab,_0x4d0c73){_0x4d0c73=_0x4d0c73||0x1f4;return function(_0x372d1f){logger[_0xe86d('0x22')](_0x372d1f[_0xe86d('0x23')]);if(_0x372d1f['name']){delete _0x372d1f[_0xe86d('0x24')];}_0xc3c7ab[_0xe86d('0x13')](_0x4d0c73)['send'](_0x372d1f);};}exports['index']=function(_0x97197a,_0x1744a1){var _0x4fea8b={},_0x3d7e0f={},_0x4ba1b7={'count':0x0,'rows':[]};var _0x554a9a=_[_0xe86d('0x25')](db[_0xe86d('0x26')][_0xe86d('0x27')],function(_0x21f129){return{'name':_0x21f129[_0xe86d('0x28')],'type':_0x21f129[_0xe86d('0x29')][_0xe86d('0x2a')]};});_0x3d7e0f[_0xe86d('0x2b')]=_['map'](_0x554a9a,'name');_0x3d7e0f[_0xe86d('0x2c')]=_['keys'](_0x97197a[_0xe86d('0x2c')]);_0x3d7e0f[_0xe86d('0x2d')]=_['intersection'](_0x3d7e0f[_0xe86d('0x2b')],_0x3d7e0f['query']);_0x4fea8b[_0xe86d('0x2e')]=_['intersection'](_0x3d7e0f[_0xe86d('0x2b')],qs['fields'](_0x97197a[_0xe86d('0x2c')][_0xe86d('0x2f')]));_0x4fea8b[_0xe86d('0x2e')]=_0x4fea8b[_0xe86d('0x2e')][_0xe86d('0x30')]?_0x4fea8b['attributes']:_0x3d7e0f[_0xe86d('0x2b')];if(!_0x97197a['query'][_0xe86d('0x31')](_0xe86d('0x32'))){_0x4fea8b[_0xe86d('0x17')]=qs[_0xe86d('0x17')](_0x97197a['query'][_0xe86d('0x17')]);_0x4fea8b['offset']=qs[_0xe86d('0x15')](_0x97197a[_0xe86d('0x2c')]['offset']);}_0x4fea8b[_0xe86d('0x33')]=qs[_0xe86d('0x34')](_0x97197a['query'][_0xe86d('0x34')]);delete _0x97197a[_0xe86d('0x2c')][_0xe86d('0x34')];_0x4fea8b[_0xe86d('0x35')]=qs[_0xe86d('0x2d')](_['pick'](_0x97197a['query'],_0x3d7e0f[_0xe86d('0x2d')]),_0x554a9a);if(_0x97197a[_0xe86d('0x2c')]['filter']){_0x4fea8b[_0xe86d('0x35')]=_[_0xe86d('0x36')](_0x4fea8b[_0xe86d('0x35')],{'$or':_[_0xe86d('0x25')](_0x554a9a,function(_0x103994){if(_0x103994['type']!==_0xe86d('0x37')){var _0x3c09cb={};_0x3c09cb[_0x103994[_0xe86d('0x24')]]={'$like':'%'+_0x97197a[_0xe86d('0x2c')][_0xe86d('0x38')]+'%'};return _0x3c09cb;}})});}_0x4fea8b=_[_0xe86d('0x36')]({},_0x4fea8b,_0x97197a[_0xe86d('0x39')]);var _0x58b125={'where':_0x4fea8b[_0xe86d('0x35')]};return db[_0xe86d('0x26')][_0xe86d('0x18')](_0x58b125)[_0xe86d('0x1d')](function(_0x4c8fbf){_0x4ba1b7[_0xe86d('0x18')]=_0x4c8fbf;if(_0x97197a['query'][_0xe86d('0x3a')]){_0x4fea8b[_0xe86d('0x3b')]=[{'all':!![]}];}return db[_0xe86d('0x26')][_0xe86d('0x3c')](_0x4fea8b);})[_0xe86d('0x1d')](function(_0x43fc30){_0x4ba1b7[_0xe86d('0x3d')]=_0x43fc30;return _0x4ba1b7;})['then'](respondWithFilteredResult(_0x1744a1,_0x4fea8b))[_0xe86d('0x3e')](handleError(_0x1744a1,null));};exports[_0xe86d('0x3f')]=function(_0x2c52cd,_0x4f711f){var _0x282d92={'raw':![],'where':{'id':_0x2c52cd[_0xe86d('0x40')]['id']}},_0x591742={};_0x591742['model']=_[_0xe86d('0x41')](db['VoiceMusicOnHold'][_0xe86d('0x27')]);_0x591742[_0xe86d('0x2c')]=_[_0xe86d('0x41')](_0x2c52cd['query']);_0x591742[_0xe86d('0x2d')]=_[_0xe86d('0x42')](_0x591742[_0xe86d('0x2b')],_0x591742[_0xe86d('0x2c')]);_0x282d92[_0xe86d('0x2e')]=_['intersection'](_0x591742[_0xe86d('0x2b')],qs[_0xe86d('0x2f')](_0x2c52cd['query'][_0xe86d('0x2f')]));_0x282d92[_0xe86d('0x2e')]=_0x282d92[_0xe86d('0x2e')][_0xe86d('0x30')]?_0x282d92[_0xe86d('0x2e')]:_0x591742[_0xe86d('0x2b')];if(_0x2c52cd[_0xe86d('0x2c')][_0xe86d('0x3a')]){_0x282d92[_0xe86d('0x3b')]=[{'all':!![]}];}_0x282d92=_[_0xe86d('0x36')]({},_0x282d92,_0x2c52cd[_0xe86d('0x39')]);return db[_0xe86d('0x26')][_0xe86d('0x43')](_0x282d92)[_0xe86d('0x1d')](handleEntityNotFound(_0x4f711f,null))['then'](respondWithResult(_0x4f711f,null))['catch'](handleError(_0x4f711f,null));};exports['update']=function(_0x13dca7,_0x75bdc1){if(_0x13dca7[_0xe86d('0x44')]['id']){delete _0x13dca7[_0xe86d('0x44')]['id'];}return db[_0xe86d('0x26')][_0xe86d('0x43')]({'where':{'id':_0x13dca7[_0xe86d('0x40')]['id']}})['then'](handleEntityNotFound(_0x75bdc1,null))[_0xe86d('0x1d')](saveUpdates(_0x13dca7[_0xe86d('0x44')],null))['then'](respondWithResult(_0x75bdc1,null))['catch'](handleError(_0x75bdc1,null));};exports[_0xe86d('0x45')]=function(_0x1c98f4,_0x1a308b,_0x493099){return db[_0xe86d('0x46')][_0xe86d('0x47')](function(_0x1fce93){if(_0x1c98f4[_0xe86d('0x44')][_0xe86d('0x48')]===_0xe86d('0x49')){_0x1c98f4[_0xe86d('0x44')]['directory']=path['join'](config[_0xe86d('0x4a')],'server/files/moh',_0x1c98f4[_0xe86d('0x44')][_0xe86d('0x24')]);}return db[_0xe86d('0x26')][_0xe86d('0x45')](_0x1c98f4[_0xe86d('0x44')],{'transaction':_0x1fce93})[_0xe86d('0x1d')](function(_0x1e17b2){if(_0x1c98f4[_0xe86d('0x44')][_0xe86d('0x48')]===_0xe86d('0x49')){fs[_0xe86d('0x4b')](_0x1e17b2[_0xe86d('0x4c')],parseInt(_0xe86d('0x4d'),0x8));}var _0x14c666=_0x1c98f4['user'][_0xe86d('0x1f')]({'plain':!![]});if(!_0x14c666)throw new Error(_0xe86d('0x4e'));if(_0x14c666[_0xe86d('0x4f')]==='user'){var _0x456ab3=_0x1e17b2[_0xe86d('0x1f')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xe86d('0x20'),'userProfileId':_0x14c666['userProfileId']},'raw':!![]})[_0xe86d('0x1d')](function(_0x29e28a){if(_0x29e28a&&_0x29e28a[_0xe86d('0x50')]===0x0){return db['UserProfileResource'][_0xe86d('0x45')]({'name':_0x456ab3[_0xe86d('0x24')],'resourceId':_0x456ab3['id'],'type':_0x29e28a[_0xe86d('0x24')],'sectionId':_0x29e28a['id']},{})[_0xe86d('0x1d')](function(){return _0x1e17b2;});}else{return _0x1e17b2;}})['catch'](function(_0x419d68){logger[_0xe86d('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x419d68);});}return _0x1e17b2;});})[_0xe86d('0x1d')](respondWithResult(_0x1a308b,0xc9))['catch'](handleError(_0x1a308b,null));};exports[_0xe86d('0x1e')]=function(_0x5adb5d,_0xa548c,_0x5e963b){var _0x23e6c6;return db['VoiceMusicOnHold'][_0xe86d('0x43')]({'where':{'id':_0x5adb5d[_0xe86d('0x40')]['id']}})[_0xe86d('0x1d')](function(_0x34d1de){if(_0x34d1de){return db[_0xe86d('0x46')][_0xe86d('0x47')](function(_0x5e25e3){return _0x34d1de[_0xe86d('0x1e')]({'transaction':_0x5e25e3,'raw':!![]})[_0xe86d('0x1d')](function(_0x21ebf6){if(_0x21ebf6[_0xe86d('0x4c')]){fs[_0xe86d('0x51')](_0x21ebf6[_0xe86d('0x4c')])[_0xe86d('0x52')](function(_0x45f03f){fs[_0xe86d('0x53')](path['join'](_0x21ebf6['directory'],_0x45f03f));});fs[_0xe86d('0x54')](_0x21ebf6[_0xe86d('0x4c')]);}return _0x21ebf6;});})[_0xe86d('0x3e')](function(_0x389844){throw new db[(_0xe86d('0x55'))][(_0xe86d('0x56'))](_0x389844['message']);});}})[_0xe86d('0x1d')](handleEntityNotFound(_0xa548c,null))[_0xe86d('0x1d')](removeEntity(_0xa548c,null))[_0xe86d('0x3e')](handleError(_0xa548c,null));};exports['addSound']=function(_0x44031d,_0xd8633c,_0x282cb9){return db[_0xe86d('0x46')][_0xe86d('0x47')](function(_0x108bbc){var _0x45fd99;return db[_0xe86d('0x26')][_0xe86d('0x43')]({'where':{'id':_0x44031d[_0xe86d('0x40')]['id']}})['then'](function(_0x38abbb){if(_0x38abbb){_0x45fd99=_0x38abbb;return _0x38abbb['addSound'](_0x44031d['body']['id'],{'transaction':_0x108bbc});}})[_0xe86d('0x1d')](function(_0x5dee56){if(_0x5dee56){return db[_0xe86d('0x57')]['findOne']({'where':{'id':_0x44031d[_0xe86d('0x44')]['id']},'attributes':['id','name',_0xe86d('0x58'),_0xe86d('0x59'),_0xe86d('0x5a')],'raw':!![]});}})[_0xe86d('0x1d')](function(_0x4c430c){if(_0x4c430c){var _0x3aab76=path[_0xe86d('0x5b')](config[_0xe86d('0x4a')],_0xe86d('0x5c'),util['format'](_0xe86d('0x5d'),path['basename'](_0x4c430c['save_name'],path[_0xe86d('0x5e')](_0x4c430c[_0xe86d('0x58')])),_0x4c430c['converted_format']));var _0x14d073=path[_0xe86d('0x5b')](config['root'],_0xe86d('0x5f'),_0x45fd99[_0xe86d('0x24')],util[_0xe86d('0x60')](_0xe86d('0x5d'),_0x4c430c[_0xe86d('0x24')],_0x4c430c[_0xe86d('0x59')]));fs['symlinkSync'](_0x3aab76,_0x14d073);return _0x4c430c;}})[_0xe86d('0x3e')](function(_0x253d62){throw new db[(_0xe86d('0x55'))][(_0xe86d('0x56'))](_0x253d62[_0xe86d('0x61')]);});})[_0xe86d('0x1d')](handleEntityNotFound(_0xd8633c,null))[_0xe86d('0x1d')](respondWithResult(_0xd8633c,0xc9))[_0xe86d('0x3e')](handleError(_0xd8633c,null));};exports[_0xe86d('0x62')]=function(_0x528ec2,_0x36be23,_0x506f22){return db[_0xe86d('0x46')][_0xe86d('0x47')](function(_0x1f3b90){var _0x910583;return db[_0xe86d('0x26')][_0xe86d('0x63')]({'where':{'id':_0x528ec2['params']['id']}})[_0xe86d('0x1d')](handleEntityNotFound(_0x36be23,null))[_0xe86d('0x1d')](function(_0x29054d){if(_0x29054d){_0x910583=_0x29054d;return _0x29054d[_0xe86d('0x62')](_0x528ec2[_0xe86d('0x40')][_0xe86d('0x64')]);}})[_0xe86d('0x1d')](function(_0x27dd47){if(_0x27dd47){return db[_0xe86d('0x57')][_0xe86d('0x63')]({'where':{'id':_0x528ec2[_0xe86d('0x40')][_0xe86d('0x64')]},'attributes':['id','name','save_name','converted_format',_0xe86d('0x5a')],'raw':!![]});}})[_0xe86d('0x1d')](function(_0x29e3e1){if(_0x29e3e1){fs[_0xe86d('0x53')](path[_0xe86d('0x5b')](_0x910583[_0xe86d('0x4c')],util[_0xe86d('0x60')](_0xe86d('0x5d'),_0x29e3e1[_0xe86d('0x24')],_0x29e3e1[_0xe86d('0x59')])));return _0x29e3e1;}})[_0xe86d('0x3e')](function(_0x5d7234){throw new db[(_0xe86d('0x55'))]['ValidationError'](_0x5d7234[_0xe86d('0x61')]);});})['then'](handleEntityNotFound(_0x36be23,null))[_0xe86d('0x1d')](respondWithStatusCode(_0x36be23,0xcc))['catch'](handleError(_0x36be23,null));};exports[_0xe86d('0x65')]=function(_0x1e8716,_0x42b1af,_0x5f5ba3){var _0x3e35c0={};var _0x8a3668={};var _0x5d4df2;var _0x6321d8;return db[_0xe86d('0x26')][_0xe86d('0x63')]({'where':{'id':_0x1e8716['params']['id']}})[_0xe86d('0x1d')](handleEntityNotFound(_0x42b1af,null))[_0xe86d('0x1d')](function(_0x2daf33){if(_0x2daf33){_0x5d4df2=_0x2daf33;_0x8a3668['model']=_['keys'](db[_0xe86d('0x57')][_0xe86d('0x27')]);_0x8a3668['query']=_[_0xe86d('0x41')](_0x1e8716[_0xe86d('0x2c')]);_0x8a3668[_0xe86d('0x2d')]=_['intersection'](_0x8a3668[_0xe86d('0x2b')],_0x8a3668[_0xe86d('0x2c')]);_0x3e35c0[_0xe86d('0x2e')]=_[_0xe86d('0x42')](_0x8a3668[_0xe86d('0x2b')],qs[_0xe86d('0x2f')](_0x1e8716[_0xe86d('0x2c')][_0xe86d('0x2f')]));_0x3e35c0[_0xe86d('0x2e')]=_0x3e35c0[_0xe86d('0x2e')][_0xe86d('0x30')]?_0x3e35c0['attributes']:_0x8a3668['model'];_0x3e35c0[_0xe86d('0x33')]=qs['sort'](_0x1e8716[_0xe86d('0x2c')][_0xe86d('0x34')]);_0x3e35c0['where']=qs[_0xe86d('0x2d')](_[_0xe86d('0x66')](_0x1e8716['query'],_0x8a3668[_0xe86d('0x2d')]));if(_0x1e8716[_0xe86d('0x2c')][_0xe86d('0x38')]){_0x3e35c0[_0xe86d('0x35')]=_[_0xe86d('0x36')](_0x3e35c0[_0xe86d('0x35')],{'$or':_[_0xe86d('0x25')](_0x3e35c0['attributes'],function(_0x1a984e){var _0x35dd5e={};_0x35dd5e[_0x1a984e]={'$like':'%'+_0x1e8716[_0xe86d('0x2c')][_0xe86d('0x38')]+'%'};return _0x35dd5e;})});}_0x3e35c0=_[_0xe86d('0x36')]({},_0x3e35c0,_0x1e8716[_0xe86d('0x39')]);return _0x5d4df2[_0xe86d('0x65')](_0x3e35c0);}})[_0xe86d('0x1d')](function(_0x57791c){if(_0x57791c){_0x6321d8=_0x57791c['length'];if(!_0x1e8716[_0xe86d('0x2c')]['hasOwnProperty'](_0xe86d('0x32'))){_0x3e35c0[_0xe86d('0x17')]=qs[_0xe86d('0x17')](_0x1e8716['query']['limit']);_0x3e35c0['offset']=qs['offset'](_0x1e8716[_0xe86d('0x2c')]['offset']);}return _0x5d4df2[_0xe86d('0x65')](_0x3e35c0);}})[_0xe86d('0x1d')](function(_0x18efd2){if(_0x18efd2){return _0x18efd2?{'count':_0x6321d8,'rows':_0x18efd2}:null;}})['then'](respondWithResult(_0x42b1af,null))[_0xe86d('0x3e')](handleError(_0x42b1af,null));};
\ No newline at end of file
+var _0x9709=['body','catch','create','sequelize','transaction','mode','join','files','mkdirSync','0777','user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','directory','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','findOne','save_name','converted_format','root','server/files/sounds/converted','format','%s.%s','removeSound','id2','createdAt','getSounds','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','get','MusicOnHolds','UserProfileResource','destroy','end','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','length','includeAll','find'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x9709,0x108));var _0x9970=function(_0x4cf104,_0x470834){_0x4cf104=_0x4cf104-0x0;var _0xa32f24=_0x9709[_0x4cf104];return _0xa32f24;};'use strict';var emlformat=require(_0x9970('0x0'));var rimraf=require(_0x9970('0x1'));var zipdir=require(_0x9970('0x2'));var jsonpatch=require(_0x9970('0x3'));var rp=require(_0x9970('0x4'));var moment=require(_0x9970('0x5'));var BPromise=require(_0x9970('0x6'));var Mustache=require('mustache');var util=require(_0x9970('0x7'));var path=require(_0x9970('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9970('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9970('0xa'));var crypto=require(_0x9970('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9970('0xc'));var toCsv=require(_0x9970('0xd'));var querystring=require(_0x9970('0xe'));var Papa=require(_0x9970('0xf'));var Redis=require(_0x9970('0x10'));var authService=require(_0x9970('0x11'));var qs=require(_0x9970('0x12'));var as=require(_0x9970('0x13'));var hardwareService=require(_0x9970('0x14'));var logger=require(_0x9970('0x15'))(_0x9970('0x16'));var utils=require('../../config/utils');var config=require(_0x9970('0x17'));var licenseUtil=require(_0x9970('0x18'));var db=require(_0x9970('0x19'))['db'];function respondWithStatusCode(_0x1006e1,_0x5c3cb3){_0x5c3cb3=_0x5c3cb3||0xcc;return function(_0xf643ac){if(_0xf643ac){return _0x1006e1[_0x9970('0x1a')](_0x5c3cb3);}return _0x1006e1[_0x9970('0x1b')](_0x5c3cb3)['end']();};}function respondWithResult(_0x480f3e,_0x21d92d){_0x21d92d=_0x21d92d||0xc8;return function(_0xe0f3b8){if(_0xe0f3b8){return _0x480f3e['status'](_0x21d92d)[_0x9970('0x1c')](_0xe0f3b8);}};}function respondWithFilteredResult(_0x1f3fde,_0x2eaefd){return function(_0x5f5a20){if(_0x5f5a20){var _0x27b241=typeof _0x2eaefd['offset']===_0x9970('0x1d')&&typeof _0x2eaefd[_0x9970('0x1e')]===_0x9970('0x1d');var _0x5c9e6a=_0x5f5a20[_0x9970('0x1f')];var _0x2661eb=_0x27b241?0x0:_0x2eaefd[_0x9970('0x20')];var _0x104b8=_0x27b241?_0x5f5a20[_0x9970('0x1f')]:_0x2eaefd[_0x9970('0x20')]+_0x2eaefd[_0x9970('0x1e')];var _0x5d8065;if(_0x104b8>=_0x5c9e6a){_0x104b8=_0x5c9e6a;_0x5d8065=0xc8;}else{_0x5d8065=0xce;}_0x1f3fde['status'](_0x5d8065);return _0x1f3fde[_0x9970('0x21')](_0x9970('0x22'),_0x2661eb+'-'+_0x104b8+'/'+_0x5c9e6a)[_0x9970('0x1c')](_0x5f5a20);}return null;};}function patchUpdates(_0x154a9d){return function(_0x2a1c54){try{jsonpatch[_0x9970('0x23')](_0x2a1c54,_0x154a9d,!![]);}catch(_0x111f47){return BPromise['reject'](_0x111f47);}return _0x2a1c54[_0x9970('0x24')]();};}function saveUpdates(_0x2b2e3d,_0x322d57){return function(_0x3b11b4){if(_0x3b11b4){return _0x3b11b4[_0x9970('0x25')](_0x2b2e3d)[_0x9970('0x26')](function(_0x1ea8bc){return _0x1ea8bc;});}return null;};}function removeEntity(_0x449d11,_0x53cb8d){return function(_0x3a924c){if(_0x3a924c){return _0x3a924c['destroy']()['then'](function(){var _0x4187c7=_0x3a924c[_0x9970('0x27')]({'plain':!![]});var _0x47cfcd=_0x9970('0x28');return db[_0x9970('0x29')][_0x9970('0x2a')]({'where':{'type':_0x47cfcd,'resourceId':_0x4187c7['id']}})[_0x9970('0x26')](function(){return _0x3a924c;});})[_0x9970('0x26')](function(){_0x449d11[_0x9970('0x1b')](0xcc)[_0x9970('0x2b')]();});}};}function handleEntityNotFound(_0x40d35b,_0x2ab914){return function(_0x2c6a56){if(!_0x2c6a56){_0x40d35b[_0x9970('0x1a')](0x194);}return _0x2c6a56;};}function handleError(_0x431739,_0x588ac7){_0x588ac7=_0x588ac7||0x1f4;return function(_0x1b4e23){logger['error'](_0x1b4e23[_0x9970('0x2c')]);if(_0x1b4e23[_0x9970('0x2d')]){delete _0x1b4e23['name'];}_0x431739['status'](_0x588ac7)[_0x9970('0x2e')](_0x1b4e23);};}exports[_0x9970('0x2f')]=function(_0x298108,_0x4d45a6){var _0x5cd98c={},_0x5032d4={},_0x17cf60={'count':0x0,'rows':[]};var _0x1ac674=_[_0x9970('0x30')](db[_0x9970('0x31')][_0x9970('0x32')],function(_0x3e1333){return{'name':_0x3e1333[_0x9970('0x33')],'type':_0x3e1333[_0x9970('0x34')][_0x9970('0x35')]};});_0x5032d4[_0x9970('0x36')]=_[_0x9970('0x30')](_0x1ac674,'name');_0x5032d4[_0x9970('0x37')]=_[_0x9970('0x38')](_0x298108[_0x9970('0x37')]);_0x5032d4[_0x9970('0x39')]=_[_0x9970('0x3a')](_0x5032d4[_0x9970('0x36')],_0x5032d4[_0x9970('0x37')]);_0x5cd98c[_0x9970('0x3b')]=_[_0x9970('0x3a')](_0x5032d4[_0x9970('0x36')],qs[_0x9970('0x3c')](_0x298108['query'][_0x9970('0x3c')]));_0x5cd98c[_0x9970('0x3b')]=_0x5cd98c[_0x9970('0x3b')]['length']?_0x5cd98c[_0x9970('0x3b')]:_0x5032d4[_0x9970('0x36')];if(!_0x298108[_0x9970('0x37')][_0x9970('0x3d')]('nolimit')){_0x5cd98c[_0x9970('0x1e')]=qs[_0x9970('0x1e')](_0x298108[_0x9970('0x37')]['limit']);_0x5cd98c[_0x9970('0x20')]=qs[_0x9970('0x20')](_0x298108[_0x9970('0x37')][_0x9970('0x20')]);}_0x5cd98c[_0x9970('0x3e')]=qs['sort'](_0x298108['query']['sort']);delete _0x298108['query'][_0x9970('0x3f')];_0x5cd98c[_0x9970('0x40')]=qs[_0x9970('0x39')](_[_0x9970('0x41')](_0x298108[_0x9970('0x37')],_0x5032d4['filters']),_0x1ac674);if(_0x298108[_0x9970('0x37')][_0x9970('0x42')]){_0x5cd98c[_0x9970('0x40')]=_['merge'](_0x5cd98c[_0x9970('0x40')],{'$or':_[_0x9970('0x30')](_0x1ac674,function(_0x1ca726){if(_0x1ca726[_0x9970('0x34')]!==_0x9970('0x43')){var _0x3b3faa={};_0x3b3faa[_0x1ca726[_0x9970('0x2d')]]={'$like':'%'+_0x298108[_0x9970('0x37')]['filter']+'%'};return _0x3b3faa;}})});}_0x5cd98c=_[_0x9970('0x44')]({},_0x5cd98c,_0x298108[_0x9970('0x45')]);var _0xa4fbda={'where':_0x5cd98c[_0x9970('0x40')]};return db[_0x9970('0x31')][_0x9970('0x1f')](_0xa4fbda)[_0x9970('0x26')](function(_0x217357){_0x17cf60[_0x9970('0x1f')]=_0x217357;if(_0x298108[_0x9970('0x37')]['includeAll']){_0x5cd98c[_0x9970('0x46')]=[{'all':!![]}];}return db[_0x9970('0x31')][_0x9970('0x47')](_0x5cd98c);})[_0x9970('0x26')](function(_0x97cdc4){_0x17cf60[_0x9970('0x48')]=_0x97cdc4;return _0x17cf60;})[_0x9970('0x26')](respondWithFilteredResult(_0x4d45a6,_0x5cd98c))['catch'](handleError(_0x4d45a6,null));};exports[_0x9970('0x49')]=function(_0x5d6be4,_0x2b691e){var _0x17253d={'raw':![],'where':{'id':_0x5d6be4[_0x9970('0x4a')]['id']}},_0x308f7c={};_0x308f7c[_0x9970('0x36')]=_[_0x9970('0x38')](db['VoiceMusicOnHold']['rawAttributes']);_0x308f7c['query']=_['keys'](_0x5d6be4[_0x9970('0x37')]);_0x308f7c[_0x9970('0x39')]=_['intersection'](_0x308f7c['model'],_0x308f7c['query']);_0x17253d[_0x9970('0x3b')]=_[_0x9970('0x3a')](_0x308f7c[_0x9970('0x36')],qs[_0x9970('0x3c')](_0x5d6be4[_0x9970('0x37')][_0x9970('0x3c')]));_0x17253d[_0x9970('0x3b')]=_0x17253d[_0x9970('0x3b')][_0x9970('0x4b')]?_0x17253d[_0x9970('0x3b')]:_0x308f7c['model'];if(_0x5d6be4[_0x9970('0x37')][_0x9970('0x4c')]){_0x17253d[_0x9970('0x46')]=[{'all':!![]}];}_0x17253d=_[_0x9970('0x44')]({},_0x17253d,_0x5d6be4['options']);return db[_0x9970('0x31')][_0x9970('0x4d')](_0x17253d)['then'](handleEntityNotFound(_0x2b691e,null))[_0x9970('0x26')](respondWithResult(_0x2b691e,null))['catch'](handleError(_0x2b691e,null));};exports[_0x9970('0x25')]=function(_0x4bffd7,_0x2c3a25){if(_0x4bffd7[_0x9970('0x4e')]['id']){delete _0x4bffd7[_0x9970('0x4e')]['id'];}return db[_0x9970('0x31')]['find']({'where':{'id':_0x4bffd7[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](handleEntityNotFound(_0x2c3a25,null))[_0x9970('0x26')](saveUpdates(_0x4bffd7[_0x9970('0x4e')],null))[_0x9970('0x26')](respondWithResult(_0x2c3a25,null))[_0x9970('0x4f')](handleError(_0x2c3a25,null));};exports[_0x9970('0x50')]=function(_0x72e11a,_0x2fcd65,_0x4257f7){return db[_0x9970('0x51')][_0x9970('0x52')](function(_0x396e8b){if(_0x72e11a[_0x9970('0x4e')][_0x9970('0x53')]==='files'){_0x72e11a[_0x9970('0x4e')]['directory']=path[_0x9970('0x54')](config['root'],'server/files/moh',_0x72e11a['body'][_0x9970('0x2d')]);}return db['VoiceMusicOnHold'][_0x9970('0x50')](_0x72e11a[_0x9970('0x4e')],{'transaction':_0x396e8b})[_0x9970('0x26')](function(_0x32afa7){if(_0x72e11a[_0x9970('0x4e')]['mode']===_0x9970('0x55')){fs[_0x9970('0x56')](_0x32afa7['directory'],parseInt(_0x9970('0x57'),0x8));}var _0x5171bd=_0x72e11a[_0x9970('0x58')][_0x9970('0x27')]({'plain':!![]});if(!_0x5171bd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5171bd[_0x9970('0x59')]===_0x9970('0x58')){var _0x281557=_0x32afa7[_0x9970('0x27')]({'plain':!![]});return db['UserProfileSection'][_0x9970('0x4d')]({'where':{'name':_0x9970('0x28'),'userProfileId':_0x5171bd[_0x9970('0x5a')]},'raw':!![]})[_0x9970('0x26')](function(_0x2d2765){if(_0x2d2765&&_0x2d2765[_0x9970('0x5b')]===0x0){return db[_0x9970('0x29')][_0x9970('0x50')]({'name':_0x281557['name'],'resourceId':_0x281557['id'],'type':_0x2d2765['name'],'sectionId':_0x2d2765['id']},{})['then'](function(){return _0x32afa7;});}else{return _0x32afa7;}})[_0x9970('0x4f')](function(_0x5704ff){logger[_0x9970('0x5c')](_0x9970('0x5d'),_0x5704ff);});}return _0x32afa7;});})['then'](respondWithResult(_0x2fcd65,0xc9))[_0x9970('0x4f')](handleError(_0x2fcd65,null));};exports[_0x9970('0x2a')]=function(_0x29e712,_0x58e55f,_0x4ef6df){var _0x46582f;return db[_0x9970('0x31')][_0x9970('0x4d')]({'where':{'id':_0x29e712[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](function(_0x3b4e92){if(_0x3b4e92){return db[_0x9970('0x51')]['transaction'](function(_0x48c528){return _0x3b4e92[_0x9970('0x2a')]({'transaction':_0x48c528,'raw':!![]})[_0x9970('0x26')](function(_0x19de8f){if(_0x19de8f['directory']){fs[_0x9970('0x5e')](_0x19de8f[_0x9970('0x5f')])[_0x9970('0x60')](function(_0x47092a){fs[_0x9970('0x61')](path[_0x9970('0x54')](_0x19de8f['directory'],_0x47092a));});fs[_0x9970('0x62')](_0x19de8f[_0x9970('0x5f')]);}return _0x19de8f;});})[_0x9970('0x4f')](function(_0x43f16f){throw new db[(_0x9970('0x63'))][(_0x9970('0x64'))](_0x43f16f[_0x9970('0x65')]);});}})[_0x9970('0x26')](handleEntityNotFound(_0x58e55f,null))[_0x9970('0x26')](removeEntity(_0x58e55f,null))['catch'](handleError(_0x58e55f,null));};exports[_0x9970('0x66')]=function(_0x55b909,_0x2d013d,_0x4c0251){return db[_0x9970('0x51')][_0x9970('0x52')](function(_0x4c3eb4){var _0xa306e0;return db[_0x9970('0x31')][_0x9970('0x4d')]({'where':{'id':_0x55b909['params']['id']}})[_0x9970('0x26')](function(_0x18a4f9){if(_0x18a4f9){_0xa306e0=_0x18a4f9;return _0x18a4f9['addSound'](_0x55b909['body']['id'],{'transaction':_0x4c3eb4});}})[_0x9970('0x26')](function(_0x5bb024){if(_0x5bb024){return db['Sound'][_0x9970('0x67')]({'where':{'id':_0x55b909['body']['id']},'attributes':['id',_0x9970('0x2d'),_0x9970('0x68'),_0x9970('0x69'),'createdAt'],'raw':!![]});}})[_0x9970('0x26')](function(_0x5ab604){if(_0x5ab604){var _0x3752f6=path[_0x9970('0x54')](config[_0x9970('0x6a')],_0x9970('0x6b'),util[_0x9970('0x6c')](_0x9970('0x6d'),path['basename'](_0x5ab604[_0x9970('0x68')],path['extname'](_0x5ab604[_0x9970('0x68')])),_0x5ab604[_0x9970('0x69')]));var _0x8a0923=path[_0x9970('0x54')](config[_0x9970('0x6a')],'server/files/moh',_0xa306e0['name'],util[_0x9970('0x6c')](_0x9970('0x6d'),_0x5ab604['name'],_0x5ab604[_0x9970('0x69')]));fs['symlinkSync'](_0x3752f6,_0x8a0923);return _0x5ab604;}})[_0x9970('0x4f')](function(_0x282e43){throw new db[(_0x9970('0x63'))][(_0x9970('0x64'))](_0x282e43['message']);});})['then'](handleEntityNotFound(_0x2d013d,null))[_0x9970('0x26')](respondWithResult(_0x2d013d,0xc9))[_0x9970('0x4f')](handleError(_0x2d013d,null));};exports[_0x9970('0x6e')]=function(_0x2f4180,_0xa5ae2b,_0x57f1cf){return db['sequelize'][_0x9970('0x52')](function(_0x2683ff){var _0x11ec9c;return db[_0x9970('0x31')][_0x9970('0x67')]({'where':{'id':_0x2f4180[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](handleEntityNotFound(_0xa5ae2b,null))['then'](function(_0x31871d){if(_0x31871d){_0x11ec9c=_0x31871d;return _0x31871d[_0x9970('0x6e')](_0x2f4180[_0x9970('0x4a')][_0x9970('0x6f')]);}})['then'](function(_0x1a6652){if(_0x1a6652){return db['Sound'][_0x9970('0x67')]({'where':{'id':_0x2f4180[_0x9970('0x4a')][_0x9970('0x6f')]},'attributes':['id','name','save_name',_0x9970('0x69'),_0x9970('0x70')],'raw':!![]});}})['then'](function(_0x40b3a0){if(_0x40b3a0){fs[_0x9970('0x61')](path[_0x9970('0x54')](_0x11ec9c[_0x9970('0x5f')],util[_0x9970('0x6c')](_0x9970('0x6d'),_0x40b3a0['name'],_0x40b3a0[_0x9970('0x69')])));return _0x40b3a0;}})[_0x9970('0x4f')](function(_0x2fe525){throw new db['Sequelize'][(_0x9970('0x64'))](_0x2fe525[_0x9970('0x65')]);});})[_0x9970('0x26')](handleEntityNotFound(_0xa5ae2b,null))[_0x9970('0x26')](respondWithStatusCode(_0xa5ae2b,0xcc))[_0x9970('0x4f')](handleError(_0xa5ae2b,null));};exports['getSounds']=function(_0x48f3bf,_0x270434,_0x16c857){var _0x246ed5={};var _0x415b1d={};var _0x1b6a5f;var _0x3b157f;return db[_0x9970('0x31')][_0x9970('0x67')]({'where':{'id':_0x48f3bf[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](handleEntityNotFound(_0x270434,null))[_0x9970('0x26')](function(_0x10852f){if(_0x10852f){_0x1b6a5f=_0x10852f;_0x415b1d[_0x9970('0x36')]=_['keys'](db['Sound'][_0x9970('0x32')]);_0x415b1d[_0x9970('0x37')]=_[_0x9970('0x38')](_0x48f3bf['query']);_0x415b1d[_0x9970('0x39')]=_[_0x9970('0x3a')](_0x415b1d['model'],_0x415b1d['query']);_0x246ed5[_0x9970('0x3b')]=_[_0x9970('0x3a')](_0x415b1d[_0x9970('0x36')],qs['fields'](_0x48f3bf['query'][_0x9970('0x3c')]));_0x246ed5[_0x9970('0x3b')]=_0x246ed5[_0x9970('0x3b')][_0x9970('0x4b')]?_0x246ed5['attributes']:_0x415b1d[_0x9970('0x36')];_0x246ed5['order']=qs[_0x9970('0x3f')](_0x48f3bf['query'][_0x9970('0x3f')]);_0x246ed5[_0x9970('0x40')]=qs[_0x9970('0x39')](_[_0x9970('0x41')](_0x48f3bf[_0x9970('0x37')],_0x415b1d[_0x9970('0x39')]));if(_0x48f3bf[_0x9970('0x37')][_0x9970('0x42')]){_0x246ed5[_0x9970('0x40')]=_[_0x9970('0x44')](_0x246ed5[_0x9970('0x40')],{'$or':_['map'](_0x246ed5['attributes'],function(_0x91056d){var _0xb605d9={};_0xb605d9[_0x91056d]={'$like':'%'+_0x48f3bf['query'][_0x9970('0x42')]+'%'};return _0xb605d9;})});}_0x246ed5=_[_0x9970('0x44')]({},_0x246ed5,_0x48f3bf[_0x9970('0x45')]);return _0x1b6a5f[_0x9970('0x71')](_0x246ed5);}})[_0x9970('0x26')](function(_0x3bde77){if(_0x3bde77){_0x3b157f=_0x3bde77[_0x9970('0x4b')];if(!_0x48f3bf[_0x9970('0x37')]['hasOwnProperty']('nolimit')){_0x246ed5[_0x9970('0x1e')]=qs[_0x9970('0x1e')](_0x48f3bf[_0x9970('0x37')][_0x9970('0x1e')]);_0x246ed5[_0x9970('0x20')]=qs[_0x9970('0x20')](_0x48f3bf['query'][_0x9970('0x20')]);}return _0x1b6a5f[_0x9970('0x71')](_0x246ed5);}})[_0x9970('0x26')](function(_0x3b3d48){if(_0x3b3d48){return _0x3b3d48?{'count':_0x3b157f,'rows':_0x3b3d48}:null;}})[_0x9970('0x26')](respondWithResult(_0x270434,null))['catch'](handleError(_0x270434,null));};
\ No newline at end of file
index c1bfb78..56a917d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc7d=['../../config/environment','exports','VoiceMusicOnHold','voice_musiconhold','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xdc7d,0xd5));var _0xddc7=function(_0x3acc95,_0x5ddf98){_0x3acc95=_0x3acc95-0x0;var _0x157112=_0xdc7d[_0x3acc95];return _0x157112;};'use strict';var _=require('lodash');var util=require(_0xddc7('0x0'));var logger=require(_0xddc7('0x1'))(_0xddc7('0x2'));var moment=require(_0xddc7('0x3'));var BPromise=require(_0xddc7('0x4'));var rp=require(_0xddc7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xddc7('0x6'));var config=require(_0xddc7('0x7'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xddc7('0x8')]=function(_0x524fd5,_0x42f95b){return _0x524fd5['define'](_0xddc7('0x9'),attributes,{'tableName':_0xddc7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb234=['path','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xb234,0xe4));var _0x4b23=function(_0x306aad,_0x121723){_0x306aad=_0x306aad-0x0;var _0x35ffff=_0xb234[_0x306aad];return _0x35ffff;};'use strict';var _=require(_0x4b23('0x0'));var util=require(_0x4b23('0x1'));var logger=require(_0x4b23('0x2'))(_0x4b23('0x3'));var moment=require(_0x4b23('0x4'));var BPromise=require('bluebird');var rp=require(_0x4b23('0x5'));var fs=require('fs');var path=require(_0x4b23('0x6'));var rimraf=require('rimraf');var config=require(_0x4b23('0x7'));var attributes=require(_0x4b23('0x8'));module[_0x4b23('0x9')]=function(_0x6c40f9,_0x29f412){return _0x6c40f9[_0x4b23('0xa')](_0x4b23('0xb'),attributes,{'tableName':_0x4b23('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7eb4f5d..73b83ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','VoiceMusicOnHold,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x14b0bb,_0x212233){var _0x2a42aa=function(_0x4c45d7){while(--_0x4c45d7){_0x14b0bb['push'](_0x14b0bb['shift']());}};_0x2a42aa(++_0x212233);}(_0x70e0,0x17b));var _0x070e=function(_0x16086e,_0x3287e8){_0x16086e=_0x16086e-0x0;var _0x119062=_0x70e0[_0x16086e];return _0x119062;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x215d7c,_0x576946){var _0x4773a4=function(_0x135fa4){while(--_0x135fa4){_0x215d7c['push'](_0x215d7c['shift']());}};_0x4773a4(++_0x576946);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 4488a93..d423eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf4f=['../../components/auth/service','../../components/interaction/service','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','/:id/users','addAgents','update','destroy','delete','removeAgents','exports','multer','util','path','express','fs-extra'];(function(_0x334d52,_0x40d32b){var _0x32aacf=function(_0x2a904e){while(--_0x2a904e){_0x334d52['push'](_0x334d52['shift']());}};_0x32aacf(++_0x40d32b);}(_0xcf4f,0x163));var _0xfcf4=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0xcf4f[_0xc4001c];return _0x49f7bc;};'use strict';var multer=require(_0xfcf4('0x0'));var util=require(_0xfcf4('0x1'));var path=require(_0xfcf4('0x2'));var timeout=require('connect-timeout');var express=require(_0xfcf4('0x3'));var router=express['Router']();var fs_extra=require(_0xfcf4('0x4'));var auth=require(_0xfcf4('0x5'));var interaction=require(_0xfcf4('0x6'));var config=require('../../config/environment');var controller=require(_0xfcf4('0x7'));router[_0xfcf4('0x8')]('/',auth[_0xfcf4('0x9')](),controller[_0xfcf4('0xa')]);router[_0xfcf4('0x8')](_0xfcf4('0xb'),auth[_0xfcf4('0x9')](),controller[_0xfcf4('0xc')]);router[_0xfcf4('0x8')](_0xfcf4('0xd'),auth[_0xfcf4('0x9')](),controller[_0xfcf4('0xe')]);router['get']('/:id/users',auth[_0xfcf4('0x9')](),controller['getAgents']);router[_0xfcf4('0xf')]('/',auth['isAuthenticated'](),controller[_0xfcf4('0x10')]);router['post'](_0xfcf4('0x11'),auth[_0xfcf4('0x9')](),controller[_0xfcf4('0x12')]);router['put'](_0xfcf4('0xd'),auth['isAuthenticated'](),controller[_0xfcf4('0x13')]);router['delete'](_0xfcf4('0xd'),auth[_0xfcf4('0x9')](),controller[_0xfcf4('0x14')]);router[_0xfcf4('0x15')]('/:id/users',auth[_0xfcf4('0x9')](),controller[_0xfcf4('0x16')]);module[_0xfcf4('0x17')]=router;
\ No newline at end of file
+var _0xf023=['delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/users','getAgents','create','post','addAgents','put','update'];(function(_0x2c7b86,_0x59ef3c){var _0x256735=function(_0x352e33){while(--_0x352e33){_0x2c7b86['push'](_0x2c7b86['shift']());}};_0x256735(++_0x59ef3c);}(_0xf023,0xf6));var _0x3f02=function(_0x425d02,_0x50bab9){_0x425d02=_0x425d02-0x0;var _0x30c0eb=_0xf023[_0x425d02];return _0x30c0eb;};'use strict';var multer=require(_0x3f02('0x0'));var util=require(_0x3f02('0x1'));var path=require(_0x3f02('0x2'));var timeout=require(_0x3f02('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3f02('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3f02('0x5'));var config=require(_0x3f02('0x6'));var controller=require('./voicePrefix.controller');router[_0x3f02('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3f02('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x3f02('0x7')](_0x3f02('0x8'),auth[_0x3f02('0x9')](),controller[_0x3f02('0xa')]);router[_0x3f02('0x7')](_0x3f02('0xb'),auth[_0x3f02('0x9')](),controller[_0x3f02('0xc')]);router['post']('/',auth[_0x3f02('0x9')](),controller[_0x3f02('0xd')]);router[_0x3f02('0xe')](_0x3f02('0xb'),auth['isAuthenticated'](),controller[_0x3f02('0xf')]);router[_0x3f02('0x10')](_0x3f02('0x8'),auth[_0x3f02('0x9')](),controller[_0x3f02('0x11')]);router[_0x3f02('0x12')](_0x3f02('0x8'),auth[_0x3f02('0x9')](),controller[_0x3f02('0x13')]);router['delete'](_0x3f02('0xb'),auth[_0x3f02('0x9')](),controller[_0x3f02('0x14')]);module[_0x3f02('0x15')]=router;
\ No newline at end of file
index 7944a4a..032af6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c40=['sequelize','exports','STRING','name','VIRTUAL','system-','INTEGER'];(function(_0x86e316,_0x2d1fde){var _0x4d014d=function(_0x589905){while(--_0x589905){_0x86e316['push'](_0x86e316['shift']());}};_0x4d014d(++_0x2d1fde);}(_0x6c40,0x111));var _0x06c4=function(_0x46f4a7,_0x5b6334){_0x46f4a7=_0x46f4a7-0x0;var _0x1b584f=_0x6c40[_0x46f4a7];return _0x1b584f;};'use strict';var Sequelize=require(_0x06c4('0x0'));module[_0x06c4('0x1')]={'name':{'type':Sequelize[_0x06c4('0x2')],'allowNull':![],'unique':_0x06c4('0x3')},'prefix':{'type':Sequelize[_0x06c4('0x4')],'get':function(_0x2b33a2){return _0x06c4('0x5')+this['getDataValue'](_0x06c4('0x3'))+'-';}},'description':{'type':Sequelize[_0x06c4('0x2')]},'callerIdAll':{'type':Sequelize[_0x06c4('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x06c4('0x6')]}};
\ No newline at end of file
+var _0x9894=['VIRTUAL','INTEGER','sequelize','exports','STRING','name'];(function(_0x225791,_0x1bf3e6){var _0x367e17=function(_0x562c4d){while(--_0x562c4d){_0x225791['push'](_0x225791['shift']());}};_0x367e17(++_0x1bf3e6);}(_0x9894,0x1f4));var _0x4989=function(_0x5224bf,_0x42170b){_0x5224bf=_0x5224bf-0x0;var _0x382dff=_0x9894[_0x5224bf];return _0x382dff;};'use strict';var Sequelize=require(_0x4989('0x0'));module[_0x4989('0x1')]={'name':{'type':Sequelize[_0x4989('0x2')],'allowNull':![],'unique':_0x4989('0x3')},'prefix':{'type':Sequelize[_0x4989('0x4')],'get':function(_0x28c5ab){return'system-'+this['getDataValue'](_0x4989('0x3'))+'-';}},'description':{'type':Sequelize[_0x4989('0x2')]},'callerIdAll':{'type':Sequelize[_0x4989('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x4989('0x5')]}};
\ No newline at end of file
index 14f225b..0d3901b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aee=['filter','where','merge','type','options','include','catch','show','params','find','describe','transaction','create','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','app','system','description','Voice\x20Prefix\x20Extension','prefix','NoOp','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','context','${EXTEN:','charAt','body','system-','sequelize','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','isArray','userVoicePrefix:remove','getAgents','findOne','User','rawAttributes','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','register','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','error','stack','name','send','index','map','VoicePrefix','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick'];(function(_0x3ff2f9,_0x544ba1){var _0x3b0913=function(_0x554288){while(--_0x554288){_0x3ff2f9['push'](_0x3ff2f9['shift']());}};_0x3b0913(++_0x544ba1);}(_0x3aee,0x131));var _0xe3ae=function(_0x1d930e,_0x20d8b8){_0x1d930e=_0x1d930e-0x0;var _0x5bbd66=_0x3aee[_0x1d930e];return _0x5bbd66;};'use strict';var emlformat=require(_0xe3ae('0x0'));var rimraf=require(_0xe3ae('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe3ae('0x2'));var rp=require(_0xe3ae('0x3'));var moment=require(_0xe3ae('0x4'));var BPromise=require(_0xe3ae('0x5'));var Mustache=require(_0xe3ae('0x6'));var util=require(_0xe3ae('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xe3ae('0x8'));var ejs=require(_0xe3ae('0x9'));var fs=require('fs');var fs_extra=require(_0xe3ae('0xa'));var _=require(_0xe3ae('0xb'));var squel=require(_0xe3ae('0xc'));var crypto=require(_0xe3ae('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xe3ae('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe3ae('0xf'));var Papa=require(_0xe3ae('0x10'));var Redis=require(_0xe3ae('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe3ae('0x12'));var logger=require(_0xe3ae('0x13'))(_0xe3ae('0x14'));var utils=require(_0xe3ae('0x15'));var config=require(_0xe3ae('0x16'));var licenseUtil=require(_0xe3ae('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe3ae('0x18')](config[_0xe3ae('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe3ae('0x19')]));require('./voicePrefix.socket')[_0xe3ae('0x1a')](socket);function respondWithStatusCode(_0x16eb0d,_0x6ecd9b){_0x6ecd9b=_0x6ecd9b||0xcc;return function(_0x22c790){if(_0x22c790){return _0x16eb0d[_0xe3ae('0x1b')](_0x6ecd9b);}return _0x16eb0d['status'](_0x6ecd9b)[_0xe3ae('0x1c')]();};}function respondWithResult(_0x4b5826,_0x4e505a){_0x4e505a=_0x4e505a||0xc8;return function(_0x34ba70){if(_0x34ba70){return _0x4b5826[_0xe3ae('0x1d')](_0x4e505a)[_0xe3ae('0x1e')](_0x34ba70);}};}function respondWithFilteredResult(_0x5a2c7c,_0x23c395){return function(_0x1cd220){if(_0x1cd220){var _0x5b6872=typeof _0x23c395[_0xe3ae('0x1f')]==='undefined'&&typeof _0x23c395[_0xe3ae('0x20')]===_0xe3ae('0x21');var _0xd380f=_0x1cd220[_0xe3ae('0x22')];var _0x2272c0=_0x5b6872?0x0:_0x23c395[_0xe3ae('0x1f')];var _0x5dba66=_0x5b6872?_0x1cd220['count']:_0x23c395[_0xe3ae('0x1f')]+_0x23c395[_0xe3ae('0x20')];var _0x42ce83;if(_0x5dba66>=_0xd380f){_0x5dba66=_0xd380f;_0x42ce83=0xc8;}else{_0x42ce83=0xce;}_0x5a2c7c['status'](_0x42ce83);return _0x5a2c7c[_0xe3ae('0x23')](_0xe3ae('0x24'),_0x2272c0+'-'+_0x5dba66+'/'+_0xd380f)[_0xe3ae('0x1e')](_0x1cd220);}return null;};}function patchUpdates(_0x14aa59){return function(_0x2b07e8){try{jsonpatch[_0xe3ae('0x25')](_0x2b07e8,_0x14aa59,!![]);}catch(_0x2606db){return BPromise[_0xe3ae('0x26')](_0x2606db);}return _0x2b07e8[_0xe3ae('0x27')]();};}function saveUpdates(_0x36225b,_0x56b4f2){return function(_0x9e7ce0){if(_0x9e7ce0){return _0x9e7ce0[_0xe3ae('0x28')](_0x36225b)[_0xe3ae('0x29')](function(_0x5c1efa){return _0x5c1efa;});}return null;};}function removeEntity(_0xe3afdb,_0x2eaeed){return function(_0x2b5da5){if(_0x2b5da5){return _0x2b5da5[_0xe3ae('0x2a')]()['then'](function(){var _0xdc345a=_0x2b5da5[_0xe3ae('0x2b')]({'plain':!![]});var _0x437a51=_0xe3ae('0x2c');return db['UserProfileResource']['destroy']({'where':{'type':_0x437a51,'resourceId':_0xdc345a['id']}})[_0xe3ae('0x29')](function(){return _0x2b5da5;});})[_0xe3ae('0x29')](function(){_0xe3afdb[_0xe3ae('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d67e1,_0x5c4e65){return function(_0x3d4f53){if(!_0x3d4f53){_0x3d67e1['sendStatus'](0x194);}return _0x3d4f53;};}function handleError(_0x2021f7,_0x1c3bf9){_0x1c3bf9=_0x1c3bf9||0x1f4;return function(_0x243921){logger[_0xe3ae('0x2d')](_0x243921[_0xe3ae('0x2e')]);if(_0x243921[_0xe3ae('0x2f')]){delete _0x243921[_0xe3ae('0x2f')];}_0x2021f7[_0xe3ae('0x1d')](_0x1c3bf9)[_0xe3ae('0x30')](_0x243921);};}exports[_0xe3ae('0x31')]=function(_0x39341e,_0x2f1321){var _0x2e2147={},_0x265f8e={},_0x4c71fc={'count':0x0,'rows':[]};var _0xabf9f7=_[_0xe3ae('0x32')](db[_0xe3ae('0x33')]['rawAttributes'],function(_0x47a8f3){return{'name':_0x47a8f3[_0xe3ae('0x34')],'type':_0x47a8f3['type'][_0xe3ae('0x35')]};});_0x265f8e[_0xe3ae('0x36')]=_[_0xe3ae('0x32')](_0xabf9f7,'name');_0x265f8e[_0xe3ae('0x37')]=_[_0xe3ae('0x38')](_0x39341e[_0xe3ae('0x37')]);_0x265f8e[_0xe3ae('0x39')]=_[_0xe3ae('0x3a')](_0x265f8e[_0xe3ae('0x36')],_0x265f8e['query']);_0x2e2147[_0xe3ae('0x3b')]=_[_0xe3ae('0x3a')](_0x265f8e[_0xe3ae('0x36')],qs[_0xe3ae('0x3c')](_0x39341e[_0xe3ae('0x37')]['fields']));_0x2e2147['attributes']=_0x2e2147[_0xe3ae('0x3b')][_0xe3ae('0x3d')]?_0x2e2147[_0xe3ae('0x3b')]:_0x265f8e[_0xe3ae('0x36')];if(!_0x39341e[_0xe3ae('0x37')][_0xe3ae('0x3e')](_0xe3ae('0x3f'))){_0x2e2147[_0xe3ae('0x20')]=qs[_0xe3ae('0x20')](_0x39341e['query'][_0xe3ae('0x20')]);_0x2e2147['offset']=qs[_0xe3ae('0x1f')](_0x39341e[_0xe3ae('0x37')][_0xe3ae('0x1f')]);}_0x2e2147[_0xe3ae('0x40')]=qs[_0xe3ae('0x41')](_0x39341e[_0xe3ae('0x37')][_0xe3ae('0x41')]);_0x2e2147['where']=qs[_0xe3ae('0x39')](_[_0xe3ae('0x42')](_0x39341e[_0xe3ae('0x37')],_0x265f8e[_0xe3ae('0x39')]),_0xabf9f7);if(_0x39341e[_0xe3ae('0x37')][_0xe3ae('0x43')]){_0x2e2147[_0xe3ae('0x44')]=_[_0xe3ae('0x45')](_0x2e2147[_0xe3ae('0x44')],{'$or':_[_0xe3ae('0x32')](_0xabf9f7,function(_0x5419f6){if(_0x5419f6[_0xe3ae('0x46')]!=='VIRTUAL'){var _0x151fa6={};_0x151fa6[_0x5419f6[_0xe3ae('0x2f')]]={'$like':'%'+_0x39341e[_0xe3ae('0x37')][_0xe3ae('0x43')]+'%'};return _0x151fa6;}})});}_0x2e2147=_['merge']({},_0x2e2147,_0x39341e[_0xe3ae('0x47')]);var _0x3d2d11={'where':_0x2e2147[_0xe3ae('0x44')]};return db[_0xe3ae('0x33')][_0xe3ae('0x22')](_0x3d2d11)['then'](function(_0x2f08b4){_0x4c71fc[_0xe3ae('0x22')]=_0x2f08b4;if(_0x39341e[_0xe3ae('0x37')]['includeAll']){_0x2e2147[_0xe3ae('0x48')]=[{'all':!![]}];}return db[_0xe3ae('0x33')]['findAll'](_0x2e2147);})[_0xe3ae('0x29')](function(_0x28f8eb){_0x4c71fc['rows']=_0x28f8eb;return _0x4c71fc;})[_0xe3ae('0x29')](respondWithFilteredResult(_0x2f1321,_0x2e2147))[_0xe3ae('0x49')](handleError(_0x2f1321,null));};exports[_0xe3ae('0x4a')]=function(_0x51c3f6,_0x506066){var _0x591106={'raw':![],'where':{'id':_0x51c3f6[_0xe3ae('0x4b')]['id']}},_0x5ed912={};_0x5ed912[_0xe3ae('0x36')]=_[_0xe3ae('0x38')](db['VoicePrefix']['rawAttributes']);_0x5ed912['query']=_[_0xe3ae('0x38')](_0x51c3f6[_0xe3ae('0x37')]);_0x5ed912['filters']=_[_0xe3ae('0x3a')](_0x5ed912[_0xe3ae('0x36')],_0x5ed912[_0xe3ae('0x37')]);_0x591106[_0xe3ae('0x3b')]=_['intersection'](_0x5ed912[_0xe3ae('0x36')],qs['fields'](_0x51c3f6['query'][_0xe3ae('0x3c')]));_0x591106[_0xe3ae('0x3b')]=_0x591106['attributes'][_0xe3ae('0x3d')]?_0x591106[_0xe3ae('0x3b')]:_0x5ed912[_0xe3ae('0x36')];if(_0x51c3f6['query']['includeAll']){_0x591106[_0xe3ae('0x48')]=[{'all':!![]}];}_0x591106=_[_0xe3ae('0x45')]({},_0x591106,_0x51c3f6['options']);return db[_0xe3ae('0x33')][_0xe3ae('0x4c')](_0x591106)['then'](handleEntityNotFound(_0x506066,null))[_0xe3ae('0x29')](respondWithResult(_0x506066,null))[_0xe3ae('0x49')](handleError(_0x506066,null));};exports['destroy']=function(_0x46bc95,_0x41f07d){return db['VoicePrefix'][_0xe3ae('0x4c')]({'where':{'id':_0x46bc95[_0xe3ae('0x4b')]['id']}})[_0xe3ae('0x29')](handleEntityNotFound(_0x41f07d,null))['then'](removeEntity(_0x41f07d,null))[_0xe3ae('0x49')](handleError(_0x41f07d,null));};exports[_0xe3ae('0x4d')]=function(_0x2b1c17,_0x73cf35){return db[_0xe3ae('0x33')][_0xe3ae('0x4d')]()[_0xe3ae('0x29')](respondWithResult(_0x73cf35,null))['catch'](handleError(_0x73cf35,null));};exports['create']=function(_0x4b488e,_0x373029){var _0x1986ab;return db['sequelize'][_0xe3ae('0x4e')](function(_0x5b03b0){return db[_0xe3ae('0x33')][_0xe3ae('0x4f')](_0x4b488e['body'],{'transaction':_0x5b03b0})[_0xe3ae('0x29')](function(_0x480298){_0x1986ab=_0x480298[_0xe3ae('0x2b')]({'plain':!![]});return db[_0xe3ae('0x50')][_0xe3ae('0x4c')]({'where':{'id':_0x1986ab[_0xe3ae('0x51')]},'raw':!![]})[_0xe3ae('0x29')](function(_0x17658e){return createVoicePrefixExtensions(_0x1986ab,_0x17658e,_0x5b03b0);});});})[_0xe3ae('0x29')](function(){var _0x4d8327=_0x4b488e['user'][_0xe3ae('0x2b')]({'plain':!![]});if(!_0x4d8327)throw new Error(_0xe3ae('0x52'));if(_0x4d8327[_0xe3ae('0x53')]===_0xe3ae('0x54')){var _0x3c0a32=_0x1986ab;return db[_0xe3ae('0x55')][_0xe3ae('0x4c')]({'where':{'name':_0xe3ae('0x2c'),'userProfileId':_0x4d8327[_0xe3ae('0x56')]},'raw':!![]})[_0xe3ae('0x29')](function(_0x2a99fe){if(_0x2a99fe&&_0x2a99fe[_0xe3ae('0x57')]===0x0){return db[_0xe3ae('0x58')][_0xe3ae('0x4f')]({'name':_0x3c0a32['name'],'resourceId':_0x3c0a32['id'],'type':_0x2a99fe[_0xe3ae('0x2f')],'sectionId':_0x2a99fe['id']},{})[_0xe3ae('0x29')](function(){return _0x1986ab;});}else{return _0x1986ab;}})[_0xe3ae('0x49')](function(_0x52f49f){logger[_0xe3ae('0x2d')](_0xe3ae('0x59'),_0x52f49f);throw _0x52f49f;});}return _0x1986ab;})['then'](respondWithResult(_0x373029,null))[_0xe3ae('0x49')](handleError(_0x373029,null));};function Extension(_0x47a824,_0xeadfec,_0x42bc4f,_0x9236f5){this['context']=_0xe3ae('0x5a');this['exten']=_0x47a824;this[_0xe3ae('0x5b')]=_0x42bc4f;this['type']=_0xe3ae('0x5c');this[_0xe3ae('0x5d')]=_0xe3ae('0x5e');this['priority']=_0xeadfec;this['appdata']=_0x9236f5;}function createVoicePrefixExtensions(_0x1ee28b,_0x2e07af,_0x58f361){return new BPromise(function(_0x4d8daf,_0x16c7d8){var _0x59861d=new Extension(formatPrefixName(_0x1ee28b[_0xe3ae('0x5f')]),0x1,_0xe3ae('0x60'),'Voice\x20Prefix');_0x59861d[_0xe3ae('0x61')]=_0x1ee28b['id'];return db[_0xe3ae('0x50')][_0xe3ae('0x4f')](_0x59861d,{'transaction':_0x58f361})[_0xe3ae('0x29')](function(_0x4b153d){var _0x21b6bf=_0x4b153d['get']({'plain':!![]});var _0x3e82e8=_[_0xe3ae('0x32')](addVoicePrefixExtensions(_0x1ee28b,_0x2e07af),function(_0x50f2a3){_0x50f2a3[_0xe3ae('0x51')]=_0x21b6bf['id'];_0x50f2a3['VoicePrefixId']=_0x1ee28b['id'];return _0x50f2a3;});return db['VoiceExtension']['bulkCreate'](_0x3e82e8,{'transaction':_0x58f361})['then'](function(_0x14e91b){if(!_0x14e91b){return _0x16c7d8(_0xe3ae('0x62'));}else{return _0x4d8daf(_0x14e91b);}})[_0xe3ae('0x49')](function(_0x3f9e94){return _0x16c7d8(_0x3f9e94);});});;});};function addVoicePrefixExtensions(_0x2f77b3,_0x5daf9d){var _0x226533=[];var _0x170745=formatPrefixName(_0x2f77b3[_0xe3ae('0x5f')]);_0x226533[_0xe3ae('0x63')](new Extension(_0x170745,0x2,_0xe3ae('0x64'),'CDR(prefix)='+_0x2f77b3[_0xe3ae('0x2f')]));if(_0x2f77b3[_0xe3ae('0x65')]){_0x226533[_0xe3ae('0x63')](new Extension(_0x170745,0x3,'Set',_0xe3ae('0x66')+_0x2f77b3['callerIdAll']));}else{_0x226533[_0xe3ae('0x63')](new Extension(_0x170745,0x3,'NoOp',_0xe3ae('0x67')));}_0x226533[_0xe3ae('0x63')](new Extension(_0x170745,0x4,_0xe3ae('0x68'),_0x5daf9d[_0xe3ae('0x69')]+','+_0xe3ae('0x6a')+(0x8+_0x2f77b3['name'][_0xe3ae('0x3d')])+'}'+','+0x1));return _0x226533;}function formatPrefixName(_0x336645){var _0x37730f='_';for(var _0x6c558b=0x0;_0x6c558b<_0x336645[_0xe3ae('0x3d')];_0x6c558b++){if(_0x336645[_0xe3ae('0x6b')](_0x6c558b)=='-'){_0x37730f+=_0x336645[_0xe3ae('0x6b')](_0x6c558b);}else{_0x37730f+='['+_0x336645['charAt'](_0x6c558b)+']';}}_0x37730f+='.';return _0x37730f;}exports['update']=function(_0x4b4b4d,_0x293345,_0x552419){var _0x21fa9c=_0x4b4b4d[_0xe3ae('0x6c')];_0x21fa9c[_0xe3ae('0x5f')]=_0xe3ae('0x6d')+_0x21fa9c[_0xe3ae('0x2f')]+'-';return db[_0xe3ae('0x6e')][_0xe3ae('0x4e')](function(_0x2568d2){return db[_0xe3ae('0x33')]['update'](_0x21fa9c,{'where':{'id':_0x21fa9c['id']},'transaction':_0x2568d2})['then'](function(){return db['VoiceExtension'][_0xe3ae('0x2a')]({'where':{'VoicePrefixId':_0x21fa9c['id']},'transaction':_0x2568d2})[_0xe3ae('0x29')](function(){return db[_0xe3ae('0x50')][_0xe3ae('0x4c')]({'where':{'id':_0x21fa9c[_0xe3ae('0x51')]},'raw':!![]})[_0xe3ae('0x29')](function(_0x1c38eb){return createVoicePrefixExtensions(_0x21fa9c,_0x1c38eb,_0x2568d2);});});});})[_0xe3ae('0x29')](function(){return db[_0xe3ae('0x33')][_0xe3ae('0x6f')](_0x21fa9c['id']);})[_0xe3ae('0x29')](respondWithResult(_0x293345,null))[_0xe3ae('0x49')](handleError(_0x293345,null));};exports[_0xe3ae('0x70')]=function(_0x2dfd5c,_0x217de6,_0x34ee76){return db[_0xe3ae('0x33')]['find']({'where':{'id':_0x2dfd5c[_0xe3ae('0x4b')]['id']}})[_0xe3ae('0x29')](handleEntityNotFound(_0x217de6,null))[_0xe3ae('0x29')](function(_0x2b0aa2){if(_0x2b0aa2){return _0x2b0aa2[_0xe3ae('0x70')](_0x2dfd5c['body'][_0xe3ae('0x71')],_[_0xe3ae('0x72')](_0x2dfd5c['body'],['ids','id'])||{})[_0xe3ae('0x73')](function(_0x2a5d81){for(var _0x4451ea=0x0;_0x4451ea<_0x2dfd5c['body'][_0xe3ae('0x71')][_0xe3ae('0x3d')];_0x4451ea+=0x1){socket[_0xe3ae('0x74')](_0xe3ae('0x75'),{'UserId':Number(_0x2dfd5c[_0xe3ae('0x6c')][_0xe3ae('0x71')][_0x4451ea]),'VoicePrefixId':Number(_0x2dfd5c[_0xe3ae('0x4b')]['id'])});}return _0x2a5d81;});}})[_0xe3ae('0x29')](respondWithResult(_0x217de6,null))[_0xe3ae('0x49')](handleError(_0x217de6,null));};exports['removeAgents']=function(_0x1b995e,_0xd154cd,_0x5e3cca){return db[_0xe3ae('0x33')]['find']({'where':{'id':_0x1b995e[_0xe3ae('0x4b')]['id']}})[_0xe3ae('0x29')](handleEntityNotFound(_0xd154cd,null))[_0xe3ae('0x29')](function(_0x4b23a0){if(_0x4b23a0){return _0x4b23a0['removeAgents'](_0x1b995e[_0xe3ae('0x37')][_0xe3ae('0x71')])[_0xe3ae('0x29')](function(){if(_[_0xe3ae('0x76')](_0x1b995e[_0xe3ae('0x37')][_0xe3ae('0x71')])){for(var _0x5dc21d=0x0;_0x5dc21d<_0x1b995e[_0xe3ae('0x37')][_0xe3ae('0x71')][_0xe3ae('0x3d')];_0x5dc21d+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x1b995e['query'][_0xe3ae('0x71')][_0x5dc21d]),'VoicePrefixId':Number(_0x1b995e[_0xe3ae('0x4b')]['id'])});}}else{socket[_0xe3ae('0x74')](_0xe3ae('0x77'),{'UserId':Number(_0x1b995e['query'][_0xe3ae('0x71')]),'VoicePrefixId':Number(_0x1b995e[_0xe3ae('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0xd154cd,null))[_0xe3ae('0x49')](handleError(_0xd154cd,null));};exports[_0xe3ae('0x78')]=function(_0x556e45,_0x5a3601,_0xd57587){var _0x4fc4f9={};var _0xe139a6={};var _0x34168e;var _0x3a4c7a;return db[_0xe3ae('0x33')][_0xe3ae('0x79')]({'where':{'id':_0x556e45['params']['id']}})[_0xe3ae('0x29')](handleEntityNotFound(_0x5a3601,null))[_0xe3ae('0x29')](function(_0x80a451){if(_0x80a451){_0x34168e=_0x80a451;_0xe139a6[_0xe3ae('0x36')]=_[_0xe3ae('0x38')](db[_0xe3ae('0x7a')][_0xe3ae('0x7b')]);_0xe139a6[_0xe3ae('0x37')]=_['keys'](_0x556e45['query']);_0xe139a6[_0xe3ae('0x39')]=_[_0xe3ae('0x3a')](_0xe139a6[_0xe3ae('0x36')],_0xe139a6['query']);_0x4fc4f9[_0xe3ae('0x3b')]=_[_0xe3ae('0x3a')](_0xe139a6[_0xe3ae('0x36')],qs[_0xe3ae('0x3c')](_0x556e45[_0xe3ae('0x37')]['fields']));_0x4fc4f9[_0xe3ae('0x3b')]=_0x4fc4f9['attributes'][_0xe3ae('0x3d')]?_0x4fc4f9[_0xe3ae('0x3b')]:_0xe139a6[_0xe3ae('0x36')];_0x4fc4f9['order']=qs[_0xe3ae('0x41')](_0x556e45[_0xe3ae('0x37')][_0xe3ae('0x41')]);_0x4fc4f9['where']=qs['filters'](_['pick'](_0x556e45[_0xe3ae('0x37')],_0xe139a6[_0xe3ae('0x39')]));if(_0x556e45[_0xe3ae('0x37')][_0xe3ae('0x43')]){_0x4fc4f9[_0xe3ae('0x44')]=_[_0xe3ae('0x45')](_0x4fc4f9['where'],{'$or':_['map'](_0x4fc4f9[_0xe3ae('0x3b')],function(_0x9b68fb){var _0x4f4c09={};_0x4f4c09[_0x9b68fb]={'$like':'%'+_0x556e45[_0xe3ae('0x37')]['filter']+'%'};return _0x4f4c09;})});}_0x4fc4f9=_[_0xe3ae('0x45')]({},_0x4fc4f9,_0x556e45[_0xe3ae('0x47')]);return _0x34168e[_0xe3ae('0x78')](_0x4fc4f9);}})[_0xe3ae('0x29')](function(_0x405609){if(_0x405609){_0x3a4c7a=_0x405609[_0xe3ae('0x3d')];if(!_0x556e45['query'][_0xe3ae('0x3e')](_0xe3ae('0x3f'))){_0x4fc4f9[_0xe3ae('0x20')]=qs[_0xe3ae('0x20')](_0x556e45[_0xe3ae('0x37')][_0xe3ae('0x20')]);_0x4fc4f9[_0xe3ae('0x1f')]=qs['offset'](_0x556e45[_0xe3ae('0x37')][_0xe3ae('0x1f')]);}return _0x34168e['getAgents'](_0x4fc4f9);}})[_0xe3ae('0x29')](function(_0x3a6e7f){if(_0x3a6e7f){return _0x3a6e7f?{'count':_0x3a4c7a,'rows':_0x3a6e7f}:null;}})['then'](respondWithResult(_0x5a3601,null))[_0xe3ae('0x49')](handleError(_0x5a3601,null));};
\ No newline at end of file
+var _0xbb35=['./voicePrefix.socket','register','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','get','VoicePrefixes','error','name','send','index','map','VoicePrefix','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','describe','create','sequelize','body','VoiceExtension','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','context','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoiceExtensionId','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','callerIdAll','NoOp','No\x20callerid\x20available','goto','charAt','update','system-','transaction','findById','omit','spread','ids','emit','removeAgents','isArray','userVoicePrefix:remove','User','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter'];(function(_0x53fb23,_0x3599fb){var _0x2eea03=function(_0x3e766f){while(--_0x3e766f){_0x53fb23['push'](_0x53fb23['shift']());}};_0x2eea03(++_0x3599fb);}(_0xbb35,0x1d3));var _0x5bb3=function(_0x720852,_0x1e9302){_0x720852=_0x720852-0x0;var _0x43ba74=_0xbb35[_0x720852];return _0x43ba74;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5bb3('0x0'));var zipdir=require(_0x5bb3('0x1'));var jsonpatch=require(_0x5bb3('0x2'));var rp=require(_0x5bb3('0x3'));var moment=require(_0x5bb3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5bb3('0x5'));var util=require(_0x5bb3('0x6'));var path=require(_0x5bb3('0x7'));var sox=require(_0x5bb3('0x8'));var csv=require(_0x5bb3('0x9'));var ejs=require(_0x5bb3('0xa'));var fs=require('fs');var fs_extra=require(_0x5bb3('0xb'));var _=require(_0x5bb3('0xc'));var squel=require(_0x5bb3('0xd'));var crypto=require('crypto');var jsforce=require(_0x5bb3('0xe'));var deskjs=require(_0x5bb3('0xf'));var toCsv=require(_0x5bb3('0x9'));var querystring=require(_0x5bb3('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bb3('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bb3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5bb3('0x13'));var logger=require(_0x5bb3('0x14'))(_0x5bb3('0x15'));var utils=require(_0x5bb3('0x16'));var config=require(_0x5bb3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bb3('0x18'))['db'];config[_0x5bb3('0x19')]=_[_0x5bb3('0x1a')](config['redis'],{'host':_0x5bb3('0x1b'),'port':0x18eb});var socket=require(_0x5bb3('0x1c'))(new Redis(config[_0x5bb3('0x19')]));require(_0x5bb3('0x1d'))[_0x5bb3('0x1e')](socket);function respondWithStatusCode(_0x2835b1,_0x230dbf){_0x230dbf=_0x230dbf||0xcc;return function(_0x171369){if(_0x171369){return _0x2835b1['sendStatus'](_0x230dbf);}return _0x2835b1['status'](_0x230dbf)['end']();};}function respondWithResult(_0x3722f3,_0x1da0b6){_0x1da0b6=_0x1da0b6||0xc8;return function(_0x388802){if(_0x388802){return _0x3722f3[_0x5bb3('0x1f')](_0x1da0b6)[_0x5bb3('0x20')](_0x388802);}};}function respondWithFilteredResult(_0x24bd58,_0x364b86){return function(_0xbbaf0){if(_0xbbaf0){var _0x107dbb=typeof _0x364b86[_0x5bb3('0x21')]==='undefined'&&typeof _0x364b86['limit']===_0x5bb3('0x22');var _0x41c9a5=_0xbbaf0[_0x5bb3('0x23')];var _0x442ee2=_0x107dbb?0x0:_0x364b86[_0x5bb3('0x21')];var _0x3fe551=_0x107dbb?_0xbbaf0[_0x5bb3('0x23')]:_0x364b86['offset']+_0x364b86[_0x5bb3('0x24')];var _0x3b1325;if(_0x3fe551>=_0x41c9a5){_0x3fe551=_0x41c9a5;_0x3b1325=0xc8;}else{_0x3b1325=0xce;}_0x24bd58[_0x5bb3('0x1f')](_0x3b1325);return _0x24bd58['set'](_0x5bb3('0x25'),_0x442ee2+'-'+_0x3fe551+'/'+_0x41c9a5)['json'](_0xbbaf0);}return null;};}function patchUpdates(_0xa16d6e){return function(_0x4be614){try{jsonpatch[_0x5bb3('0x26')](_0x4be614,_0xa16d6e,!![]);}catch(_0x384f57){return BPromise[_0x5bb3('0x27')](_0x384f57);}return _0x4be614[_0x5bb3('0x28')]();};}function saveUpdates(_0x2f9ca3,_0x904ca3){return function(_0x2fa05b){if(_0x2fa05b){return _0x2fa05b['update'](_0x2f9ca3)[_0x5bb3('0x29')](function(_0x41e28f){return _0x41e28f;});}return null;};}function removeEntity(_0x4c4a7a,_0x439ee4){return function(_0x256a5f){if(_0x256a5f){return _0x256a5f[_0x5bb3('0x2a')]()[_0x5bb3('0x29')](function(){var _0x21da73=_0x256a5f[_0x5bb3('0x2b')]({'plain':!![]});var _0x405eea=_0x5bb3('0x2c');return db['UserProfileResource']['destroy']({'where':{'type':_0x405eea,'resourceId':_0x21da73['id']}})[_0x5bb3('0x29')](function(){return _0x256a5f;});})['then'](function(){_0x4c4a7a[_0x5bb3('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x831fd4,_0xbdc0b5){return function(_0x104efe){if(!_0x104efe){_0x831fd4['sendStatus'](0x194);}return _0x104efe;};}function handleError(_0x28c825,_0x29a442){_0x29a442=_0x29a442||0x1f4;return function(_0x461109){logger[_0x5bb3('0x2d')](_0x461109['stack']);if(_0x461109['name']){delete _0x461109[_0x5bb3('0x2e')];}_0x28c825['status'](_0x29a442)[_0x5bb3('0x2f')](_0x461109);};}exports[_0x5bb3('0x30')]=function(_0x5217ca,_0x321834){var _0xd935a7={},_0x3d7115={},_0xe5981a={'count':0x0,'rows':[]};var _0x46ba29=_[_0x5bb3('0x31')](db[_0x5bb3('0x32')]['rawAttributes'],function(_0x554fc0){return{'name':_0x554fc0['fieldName'],'type':_0x554fc0[_0x5bb3('0x33')][_0x5bb3('0x34')]};});_0x3d7115[_0x5bb3('0x35')]=_[_0x5bb3('0x31')](_0x46ba29,'name');_0x3d7115['query']=_[_0x5bb3('0x36')](_0x5217ca[_0x5bb3('0x37')]);_0x3d7115[_0x5bb3('0x38')]=_[_0x5bb3('0x39')](_0x3d7115[_0x5bb3('0x35')],_0x3d7115[_0x5bb3('0x37')]);_0xd935a7['attributes']=_[_0x5bb3('0x39')](_0x3d7115[_0x5bb3('0x35')],qs[_0x5bb3('0x3a')](_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x3a')]));_0xd935a7['attributes']=_0xd935a7[_0x5bb3('0x3b')][_0x5bb3('0x3c')]?_0xd935a7[_0x5bb3('0x3b')]:_0x3d7115[_0x5bb3('0x35')];if(!_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x3d')](_0x5bb3('0x3e'))){_0xd935a7[_0x5bb3('0x24')]=qs[_0x5bb3('0x24')](_0x5217ca[_0x5bb3('0x37')]['limit']);_0xd935a7[_0x5bb3('0x21')]=qs[_0x5bb3('0x21')](_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x21')]);}_0xd935a7[_0x5bb3('0x3f')]=qs[_0x5bb3('0x40')](_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x40')]);_0xd935a7[_0x5bb3('0x41')]=qs[_0x5bb3('0x38')](_[_0x5bb3('0x42')](_0x5217ca['query'],_0x3d7115[_0x5bb3('0x38')]),_0x46ba29);if(_0x5217ca[_0x5bb3('0x37')]['filter']){_0xd935a7[_0x5bb3('0x41')]=_[_0x5bb3('0x43')](_0xd935a7[_0x5bb3('0x41')],{'$or':_[_0x5bb3('0x31')](_0x46ba29,function(_0x3a9858){if(_0x3a9858['type']!==_0x5bb3('0x44')){var _0x11a482={};_0x11a482[_0x3a9858[_0x5bb3('0x2e')]]={'$like':'%'+_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x45')]+'%'};return _0x11a482;}})});}_0xd935a7=_[_0x5bb3('0x43')]({},_0xd935a7,_0x5217ca['options']);var _0x6d6c39={'where':_0xd935a7['where']};return db[_0x5bb3('0x32')][_0x5bb3('0x23')](_0x6d6c39)['then'](function(_0x2f20c7){_0xe5981a['count']=_0x2f20c7;if(_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x46')]){_0xd935a7[_0x5bb3('0x47')]=[{'all':!![]}];}return db[_0x5bb3('0x32')][_0x5bb3('0x48')](_0xd935a7);})[_0x5bb3('0x29')](function(_0x58969c){_0xe5981a[_0x5bb3('0x49')]=_0x58969c;return _0xe5981a;})[_0x5bb3('0x29')](respondWithFilteredResult(_0x321834,_0xd935a7))[_0x5bb3('0x4a')](handleError(_0x321834,null));};exports[_0x5bb3('0x4b')]=function(_0x47cad3,_0x29f54f){var _0x36bdaf={'raw':![],'where':{'id':_0x47cad3[_0x5bb3('0x4c')]['id']}},_0x3f46c8={};_0x3f46c8[_0x5bb3('0x35')]=_[_0x5bb3('0x36')](db[_0x5bb3('0x32')][_0x5bb3('0x4d')]);_0x3f46c8[_0x5bb3('0x37')]=_['keys'](_0x47cad3[_0x5bb3('0x37')]);_0x3f46c8[_0x5bb3('0x38')]=_[_0x5bb3('0x39')](_0x3f46c8[_0x5bb3('0x35')],_0x3f46c8[_0x5bb3('0x37')]);_0x36bdaf[_0x5bb3('0x3b')]=_[_0x5bb3('0x39')](_0x3f46c8[_0x5bb3('0x35')],qs[_0x5bb3('0x3a')](_0x47cad3[_0x5bb3('0x37')][_0x5bb3('0x3a')]));_0x36bdaf[_0x5bb3('0x3b')]=_0x36bdaf[_0x5bb3('0x3b')][_0x5bb3('0x3c')]?_0x36bdaf[_0x5bb3('0x3b')]:_0x3f46c8[_0x5bb3('0x35')];if(_0x47cad3[_0x5bb3('0x37')][_0x5bb3('0x46')]){_0x36bdaf[_0x5bb3('0x47')]=[{'all':!![]}];}_0x36bdaf=_[_0x5bb3('0x43')]({},_0x36bdaf,_0x47cad3[_0x5bb3('0x4e')]);return db[_0x5bb3('0x32')][_0x5bb3('0x4f')](_0x36bdaf)[_0x5bb3('0x29')](handleEntityNotFound(_0x29f54f,null))[_0x5bb3('0x29')](respondWithResult(_0x29f54f,null))[_0x5bb3('0x4a')](handleError(_0x29f54f,null));};exports[_0x5bb3('0x2a')]=function(_0x444733,_0x24756a){return db[_0x5bb3('0x32')][_0x5bb3('0x4f')]({'where':{'id':_0x444733['params']['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x24756a,null))[_0x5bb3('0x29')](removeEntity(_0x24756a,null))['catch'](handleError(_0x24756a,null));};exports[_0x5bb3('0x50')]=function(_0xa2fc6e,_0x444681){return db['VoicePrefix'][_0x5bb3('0x50')]()[_0x5bb3('0x29')](respondWithResult(_0x444681,null))[_0x5bb3('0x4a')](handleError(_0x444681,null));};exports[_0x5bb3('0x51')]=function(_0x40d008,_0x373607){var _0x520abe;return db[_0x5bb3('0x52')]['transaction'](function(_0xffa73e){return db[_0x5bb3('0x32')][_0x5bb3('0x51')](_0x40d008[_0x5bb3('0x53')],{'transaction':_0xffa73e})['then'](function(_0x4938ca){_0x520abe=_0x4938ca[_0x5bb3('0x2b')]({'plain':!![]});return db[_0x5bb3('0x54')]['find']({'where':{'id':_0x520abe['VoiceExtensionId']},'raw':!![]})[_0x5bb3('0x29')](function(_0x937d9f){return createVoicePrefixExtensions(_0x520abe,_0x937d9f,_0xffa73e);});});})[_0x5bb3('0x29')](function(){var _0x23bf72=_0x40d008['user'][_0x5bb3('0x2b')]({'plain':!![]});if(!_0x23bf72)throw new Error(_0x5bb3('0x55'));if(_0x23bf72[_0x5bb3('0x56')]===_0x5bb3('0x57')){var _0x5ef434=_0x520abe;return db[_0x5bb3('0x58')][_0x5bb3('0x4f')]({'where':{'name':_0x5bb3('0x2c'),'userProfileId':_0x23bf72[_0x5bb3('0x59')]},'raw':!![]})[_0x5bb3('0x29')](function(_0x4eb322){if(_0x4eb322&&_0x4eb322[_0x5bb3('0x5a')]===0x0){return db['UserProfileResource'][_0x5bb3('0x51')]({'name':_0x5ef434['name'],'resourceId':_0x5ef434['id'],'type':_0x4eb322[_0x5bb3('0x2e')],'sectionId':_0x4eb322['id']},{})[_0x5bb3('0x29')](function(){return _0x520abe;});}else{return _0x520abe;}})['catch'](function(_0x31eba1){logger[_0x5bb3('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31eba1);throw _0x31eba1;});}return _0x520abe;})['then'](respondWithResult(_0x373607,null))[_0x5bb3('0x4a')](handleError(_0x373607,null));};function Extension(_0x357bfe,_0x207a02,_0x1cc66a,_0x1f7303){this[_0x5bb3('0x5b')]='from-sip';this[_0x5bb3('0x5c')]=_0x357bfe;this[_0x5bb3('0x5d')]=_0x1cc66a;this[_0x5bb3('0x33')]=_0x5bb3('0x5e');this[_0x5bb3('0x5f')]=_0x5bb3('0x60');this[_0x5bb3('0x61')]=_0x207a02;this[_0x5bb3('0x62')]=_0x1f7303;}function createVoicePrefixExtensions(_0x5503eb,_0x2435df,_0x51fb55){return new BPromise(function(_0xf3a144,_0x420f80){var _0x318327=new Extension(formatPrefixName(_0x5503eb[_0x5bb3('0x63')]),0x1,'NoOp',_0x5bb3('0x64'));_0x318327['VoicePrefixId']=_0x5503eb['id'];return db[_0x5bb3('0x54')][_0x5bb3('0x51')](_0x318327,{'transaction':_0x51fb55})['then'](function(_0x2cf2f5){var _0x3f2d79=_0x2cf2f5[_0x5bb3('0x2b')]({'plain':!![]});var _0x184e3f=_[_0x5bb3('0x31')](addVoicePrefixExtensions(_0x5503eb,_0x2435df),function(_0x1ef60d){_0x1ef60d[_0x5bb3('0x65')]=_0x3f2d79['id'];_0x1ef60d[_0x5bb3('0x66')]=_0x5503eb['id'];return _0x1ef60d;});return db['VoiceExtension']['bulkCreate'](_0x184e3f,{'transaction':_0x51fb55})[_0x5bb3('0x29')](function(_0x3c2b38){if(!_0x3c2b38){return _0x420f80(_0x5bb3('0x67'));}else{return _0xf3a144(_0x3c2b38);}})['catch'](function(_0x25036f){return _0x420f80(_0x25036f);});});;});};function addVoicePrefixExtensions(_0x30be44,_0x2295d2){var _0x58447=[];var _0x37dbd5=formatPrefixName(_0x30be44['prefix']);_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x2,_0x5bb3('0x69'),'CDR(prefix)='+_0x30be44[_0x5bb3('0x2e')]));if(_0x30be44[_0x5bb3('0x6a')]){_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x3,_0x5bb3('0x69'),'PREFIX-CALLERIDALL='+_0x30be44[_0x5bb3('0x6a')]));}else{_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x3,_0x5bb3('0x6b'),_0x5bb3('0x6c')));}_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x4,_0x5bb3('0x6d'),_0x2295d2[_0x5bb3('0x5b')]+','+'${EXTEN:'+(0x8+_0x30be44[_0x5bb3('0x2e')][_0x5bb3('0x3c')])+'}'+','+0x1));return _0x58447;}function formatPrefixName(_0xf89c58){var _0x1fae78='_';for(var _0x40931e=0x0;_0x40931e<_0xf89c58[_0x5bb3('0x3c')];_0x40931e++){if(_0xf89c58[_0x5bb3('0x6e')](_0x40931e)=='-'){_0x1fae78+=_0xf89c58[_0x5bb3('0x6e')](_0x40931e);}else{_0x1fae78+='['+_0xf89c58[_0x5bb3('0x6e')](_0x40931e)+']';}}_0x1fae78+='.';return _0x1fae78;}exports[_0x5bb3('0x6f')]=function(_0x6ac10a,_0x434232,_0x4c307d){var _0x20ade7=_0x6ac10a[_0x5bb3('0x53')];_0x20ade7[_0x5bb3('0x63')]=_0x5bb3('0x70')+_0x20ade7['name']+'-';return db[_0x5bb3('0x52')][_0x5bb3('0x71')](function(_0x424dca){return db[_0x5bb3('0x32')][_0x5bb3('0x6f')](_0x20ade7,{'where':{'id':_0x20ade7['id']},'transaction':_0x424dca})['then'](function(){return db[_0x5bb3('0x54')][_0x5bb3('0x2a')]({'where':{'VoicePrefixId':_0x20ade7['id']},'transaction':_0x424dca})[_0x5bb3('0x29')](function(){return db['VoiceExtension']['find']({'where':{'id':_0x20ade7[_0x5bb3('0x65')]},'raw':!![]})[_0x5bb3('0x29')](function(_0xac04e2){return createVoicePrefixExtensions(_0x20ade7,_0xac04e2,_0x424dca);});});});})[_0x5bb3('0x29')](function(){return db['VoicePrefix'][_0x5bb3('0x72')](_0x20ade7['id']);})[_0x5bb3('0x29')](respondWithResult(_0x434232,null))[_0x5bb3('0x4a')](handleError(_0x434232,null));};exports['addAgents']=function(_0x45a8c3,_0x479615,_0x5e8133){return db[_0x5bb3('0x32')]['find']({'where':{'id':_0x45a8c3[_0x5bb3('0x4c')]['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x479615,null))['then'](function(_0x4f66fb){if(_0x4f66fb){return _0x4f66fb['addAgents'](_0x45a8c3['body']['ids'],_[_0x5bb3('0x73')](_0x45a8c3[_0x5bb3('0x53')],['ids','id'])||{})[_0x5bb3('0x74')](function(_0x39948c){for(var _0x4d12c2=0x0;_0x4d12c2<_0x45a8c3[_0x5bb3('0x53')][_0x5bb3('0x75')]['length'];_0x4d12c2+=0x1){socket[_0x5bb3('0x76')]('userVoicePrefix:save',{'UserId':Number(_0x45a8c3[_0x5bb3('0x53')][_0x5bb3('0x75')][_0x4d12c2]),'VoicePrefixId':Number(_0x45a8c3[_0x5bb3('0x4c')]['id'])});}return _0x39948c;});}})[_0x5bb3('0x29')](respondWithResult(_0x479615,null))[_0x5bb3('0x4a')](handleError(_0x479615,null));};exports[_0x5bb3('0x77')]=function(_0xa6d6ad,_0x25d995,_0x1d794f){return db[_0x5bb3('0x32')][_0x5bb3('0x4f')]({'where':{'id':_0xa6d6ad[_0x5bb3('0x4c')]['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x25d995,null))['then'](function(_0x485871){if(_0x485871){return _0x485871[_0x5bb3('0x77')](_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')])[_0x5bb3('0x29')](function(){if(_[_0x5bb3('0x78')](_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')])){for(var _0xca282f=0x0;_0xca282f<_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')][_0x5bb3('0x3c')];_0xca282f+=0x1){socket[_0x5bb3('0x76')](_0x5bb3('0x79'),{'UserId':Number(_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')][_0xca282f]),'VoicePrefixId':Number(_0xa6d6ad['params']['id'])});}}else{socket[_0x5bb3('0x76')]('userVoicePrefix:remove',{'UserId':Number(_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')]),'VoicePrefixId':Number(_0xa6d6ad[_0x5bb3('0x4c')]['id'])});}});}})[_0x5bb3('0x29')](respondWithStatusCode(_0x25d995,null))[_0x5bb3('0x4a')](handleError(_0x25d995,null));};exports['getAgents']=function(_0x3c7f46,_0x547c8f,_0x348766){var _0x2af4ce={};var _0x31499e={};var _0x38e449;var _0x43d2da;return db[_0x5bb3('0x32')]['findOne']({'where':{'id':_0x3c7f46[_0x5bb3('0x4c')]['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x547c8f,null))[_0x5bb3('0x29')](function(_0x28c0fe){if(_0x28c0fe){_0x38e449=_0x28c0fe;_0x31499e[_0x5bb3('0x35')]=_['keys'](db[_0x5bb3('0x7a')][_0x5bb3('0x4d')]);_0x31499e['query']=_[_0x5bb3('0x36')](_0x3c7f46[_0x5bb3('0x37')]);_0x31499e[_0x5bb3('0x38')]=_[_0x5bb3('0x39')](_0x31499e[_0x5bb3('0x35')],_0x31499e['query']);_0x2af4ce[_0x5bb3('0x3b')]=_[_0x5bb3('0x39')](_0x31499e[_0x5bb3('0x35')],qs[_0x5bb3('0x3a')](_0x3c7f46['query']['fields']));_0x2af4ce[_0x5bb3('0x3b')]=_0x2af4ce[_0x5bb3('0x3b')][_0x5bb3('0x3c')]?_0x2af4ce[_0x5bb3('0x3b')]:_0x31499e[_0x5bb3('0x35')];_0x2af4ce['order']=qs[_0x5bb3('0x40')](_0x3c7f46[_0x5bb3('0x37')]['sort']);_0x2af4ce[_0x5bb3('0x41')]=qs['filters'](_['pick'](_0x3c7f46[_0x5bb3('0x37')],_0x31499e[_0x5bb3('0x38')]));if(_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x45')]){_0x2af4ce[_0x5bb3('0x41')]=_[_0x5bb3('0x43')](_0x2af4ce[_0x5bb3('0x41')],{'$or':_[_0x5bb3('0x31')](_0x2af4ce[_0x5bb3('0x3b')],function(_0x1ae91a){var _0x27b90a={};_0x27b90a[_0x1ae91a]={'$like':'%'+_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x45')]+'%'};return _0x27b90a;})});}_0x2af4ce=_['merge']({},_0x2af4ce,_0x3c7f46[_0x5bb3('0x4e')]);return _0x38e449[_0x5bb3('0x7b')](_0x2af4ce);}})[_0x5bb3('0x29')](function(_0x5b714c){if(_0x5b714c){_0x43d2da=_0x5b714c[_0x5bb3('0x3c')];if(!_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x3d')]('nolimit')){_0x2af4ce['limit']=qs[_0x5bb3('0x24')](_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x24')]);_0x2af4ce[_0x5bb3('0x21')]=qs[_0x5bb3('0x21')](_0x3c7f46['query'][_0x5bb3('0x21')]);}return _0x38e449[_0x5bb3('0x7b')](_0x2af4ce);}})['then'](function(_0x1565c6){if(_0x1565c6){return _0x1565c6?{'count':_0x43d2da,'rows':_0x1565c6}:null;}})[_0x5bb3('0x29')](respondWithResult(_0x547c8f,null))['catch'](handleError(_0x547c8f,null));};
\ No newline at end of file
index 8b43ad7..3513cb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ddc=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','VoicePrefix','save','update'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x2ddc,0x148));var _0xc2dd=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x2ddc[_0x2e4e19];return _0x9ba20b;};'use strict';var EventEmitter=require(_0xc2dd('0x0'));var VoicePrefix=require(_0xc2dd('0x1'))['db'][_0xc2dd('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc2dd('0x3'),'afterUpdate':_0xc2dd('0x4'),'afterDestroy':_0xc2dd('0x5')};function emitEvent(_0x3d543c){return function(_0xc67612,_0x36bb03,_0x36b39d){VoicePrefixEvents[_0xc2dd('0x6')](_0x3d543c+':'+_0xc67612['id'],_0xc67612);VoicePrefixEvents['emit'](_0x3d543c,_0xc67612);_0x36b39d(null);};}for(var e in events){if(events[_0xc2dd('0x7')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0xc2dd('0x8')]=VoicePrefixEvents;
\ No newline at end of file
+var _0xb374=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0xb374,0x177));var _0x4b37=function(_0x1c3b2a,_0x5ea0af){_0x1c3b2a=_0x1c3b2a-0x0;var _0x3a54a5=_0xb374[_0x1c3b2a];return _0x3a54a5;};'use strict';var EventEmitter=require(_0x4b37('0x0'));var VoicePrefix=require(_0x4b37('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4b37('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4b37('0x3'),'afterDestroy':_0x4b37('0x4')};function emitEvent(_0x2a3d7e){return function(_0x90cba1,_0x471025,_0x2ec7e1){VoicePrefixEvents['emit'](_0x2a3d7e+':'+_0x90cba1['id'],_0x90cba1);VoicePrefixEvents[_0x4b37('0x5')](_0x2a3d7e,_0x90cba1);_0x2ec7e1(null);};}for(var e in events){if(events[_0x4b37('0x6')](e)){var event=events[e];VoicePrefix[_0x4b37('0x7')](e,emitEvent(event));}}module[_0x4b37('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index 8168877..63d168c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d8=['./voicePrefix.attributes','exports','voice_prefixes','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x6aad74,_0x32ecf4){var _0x5b1c38=function(_0x567477){while(--_0x567477){_0x6aad74['push'](_0x6aad74['shift']());}};_0x5b1c38(++_0x32ecf4);}(_0x41d8,0x179));var _0x841d=function(_0x1fa873,_0x1319ab){_0x1fa873=_0x1fa873-0x0;var _0x599fbc=_0x41d8[_0x1fa873];return _0x599fbc;};'use strict';var _=require(_0x841d('0x0'));var util=require(_0x841d('0x1'));var logger=require('../../config/logger')(_0x841d('0x2'));var moment=require('moment');var BPromise=require(_0x841d('0x3'));var rp=require(_0x841d('0x4'));var fs=require('fs');var path=require(_0x841d('0x5'));var rimraf=require(_0x841d('0x6'));var config=require(_0x841d('0x7'));var attributes=require(_0x841d('0x8'));module[_0x841d('0x9')]=function(_0x5e650f,_0x537e72){return _0x5e650f['define']('VoicePrefix',attributes,{'tableName':_0x841d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4a6=['request-promise','path','rimraf','../../config/environment','define','VoicePrefix','voice_prefixes','lodash','api','moment','bluebird'];(function(_0x4c974e,_0x513d9e){var _0x31327b=function(_0x5db97c){while(--_0x5db97c){_0x4c974e['push'](_0x4c974e['shift']());}};_0x31327b(++_0x513d9e);}(_0xc4a6,0x1e0));var _0x6c4a=function(_0x4108e9,_0x58da63){_0x4108e9=_0x4108e9-0x0;var _0x369cc4=_0xc4a6[_0x4108e9];return _0x369cc4;};'use strict';var _=require(_0x6c4a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6c4a('0x1'));var moment=require(_0x6c4a('0x2'));var BPromise=require(_0x6c4a('0x3'));var rp=require(_0x6c4a('0x4'));var fs=require('fs');var path=require(_0x6c4a('0x5'));var rimraf=require(_0x6c4a('0x6'));var config=require(_0x6c4a('0x7'));var attributes=require('./voicePrefix.attributes');module['exports']=function(_0x4ec6f4,_0xd39c91){return _0x4ec6f4[_0x6c4a('0x8')](_0x6c4a('0x9'),attributes,{'tableName':_0x6c4a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f7bb16..285edc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc0=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','request','then','info','VoicePrefix,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util'];(function(_0x2f20f8,_0x54a3f2){var _0xfcb1b7=function(_0xfd0c0d){while(--_0xfd0c0d){_0x2f20f8['push'](_0x2f20f8['shift']());}};_0xfcb1b7(++_0x54a3f2);}(_0x6dc0,0xb6));var _0x06dc=function(_0x4997fb,_0x2f40cb){_0x4997fb=_0x4997fb-0x0;var _0x427eb9=_0x6dc0[_0x4997fb];return _0x427eb9;};'use strict';var _=require(_0x06dc('0x0'));var util=require(_0x06dc('0x1'));var moment=require(_0x06dc('0x2'));var BPromise=require('bluebird');var rs=require(_0x06dc('0x3'));var fs=require('fs');var Redis=require(_0x06dc('0x4'));var db=require(_0x06dc('0x5'))['db'];var utils=require(_0x06dc('0x6'));var logger=require('../../config/logger')(_0x06dc('0x7'));var config=require(_0x06dc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x06dc('0x9')]['http']({'port':0x232a});config[_0x06dc('0xa')]=_[_0x06dc('0xb')](config[_0x06dc('0xa')],{'host':_0x06dc('0xc'),'port':0x18eb});var socket=require(_0x06dc('0xd'))(new Redis(config['redis']));require('./voicePrefix.socket')['register'](socket);function respondWithRpcPromise(_0x128ea7,_0x1f2041,_0x4ec0aa){return new BPromise(function(_0x45693d,_0x1e7abd){return client[_0x06dc('0xe')](_0x128ea7,_0x4ec0aa)[_0x06dc('0xf')](function(_0x4fa7fc){logger[_0x06dc('0x10')](_0x06dc('0x11'),_0x1f2041,'request\x20sent');logger['debug']('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x1f2041,'request\x20sent',JSON[_0x06dc('0x12')](_0x4fa7fc));if(_0x4fa7fc['error']){if(_0x4fa7fc['error']['code']===0x1f4){logger[_0x06dc('0x13')](_0x06dc('0x11'),_0x1f2041,_0x4fa7fc[_0x06dc('0x13')]['message']);return _0x1e7abd(_0x4fa7fc[_0x06dc('0x13')][_0x06dc('0x14')]);}logger[_0x06dc('0x13')](_0x06dc('0x11'),_0x1f2041,_0x4fa7fc['error'][_0x06dc('0x14')]);return _0x45693d(_0x4fa7fc[_0x06dc('0x13')][_0x06dc('0x14')]);}else{logger[_0x06dc('0x10')](_0x06dc('0x11'),_0x1f2041,'request\x20sent');_0x45693d(_0x4fa7fc[_0x06dc('0x15')][_0x06dc('0x14')]);}})[_0x06dc('0x16')](function(_0xc658ea){logger[_0x06dc('0x13')](_0x06dc('0x11'),_0x1f2041,_0xc658ea);_0x1e7abd(_0xc658ea);});});}
\ No newline at end of file
+var _0x01db=['info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voicePrefix.socket','register','then'];(function(_0xe68132,_0x4a7e97){var _0x19ed56=function(_0x159288){while(--_0x159288){_0xe68132['push'](_0xe68132['shift']());}};_0x19ed56(++_0x4a7e97);}(_0x01db,0x171));var _0xb01d=function(_0x131636,_0x13020a){_0x131636=_0x131636-0x0;var _0x2df7ee=_0x01db[_0x131636];return _0x2df7ee;};'use strict';var _=require(_0xb01d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb01d('0x1'));var rs=require(_0xb01d('0x2'));var fs=require('fs');var Redis=require(_0xb01d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb01d('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xb01d('0x5'));var jayson=require(_0xb01d('0x6'));var client=jayson[_0xb01d('0x7')][_0xb01d('0x8')]({'port':0x232a});config[_0xb01d('0x9')]=_[_0xb01d('0xa')](config[_0xb01d('0x9')],{'host':_0xb01d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb01d('0xc'))[_0xb01d('0xd')](socket);function respondWithRpcPromise(_0x28e0fc,_0x3b2de4,_0x147b7b){return new BPromise(function(_0x9112c1,_0x4eb866){return client['request'](_0x28e0fc,_0x147b7b)[_0xb01d('0xe')](function(_0x1b59b9){logger[_0xb01d('0xf')](_0xb01d('0x10'),_0x3b2de4,_0xb01d('0x11'));logger[_0xb01d('0x12')](_0xb01d('0x13'),_0x3b2de4,'request\x20sent',JSON['stringify'](_0x1b59b9));if(_0x1b59b9[_0xb01d('0x14')]){if(_0x1b59b9['error'][_0xb01d('0x15')]===0x1f4){logger[_0xb01d('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x3b2de4,_0x1b59b9[_0xb01d('0x14')][_0xb01d('0x16')]);return _0x4eb866(_0x1b59b9[_0xb01d('0x14')][_0xb01d('0x16')]);}logger['error'](_0xb01d('0x10'),_0x3b2de4,_0x1b59b9['error'][_0xb01d('0x16')]);return _0x9112c1(_0x1b59b9[_0xb01d('0x14')][_0xb01d('0x16')]);}else{logger[_0xb01d('0xf')]('VoicePrefix,\x20%s,\x20%s',_0x3b2de4,_0xb01d('0x11'));_0x9112c1(_0x1b59b9[_0xb01d('0x17')][_0xb01d('0x16')]);}})['catch'](function(_0x210023){logger['error'](_0xb01d('0x10'),_0x3b2de4,_0x210023);_0x4eb866(_0x210023);});});}
\ No newline at end of file
index 6abe536..65be4e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7229=['voicePrefix:','./voicePrefix.events','save','remove','update','emit','removeListener','register','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7229,0x76));var _0x9722=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x7229[_0x2bf141];return _0x48277b;};'use strict';var VoicePrefixEvents=require(_0x9722('0x0'));var events=[_0x9722('0x1'),_0x9722('0x2'),_0x9722('0x3')];function createListener(_0x18f480,_0x5eccad){return function(_0x5226eb){_0x5eccad[_0x9722('0x4')](_0x18f480,_0x5226eb);};}function removeListener(_0x255678,_0x43fcea){return function(){VoicePrefixEvents[_0x9722('0x5')](_0x255678,_0x43fcea);};}exports[_0x9722('0x6')]=function(_0x43e0ed){for(var _0x2689b3=0x0,_0x541b0c=events[_0x9722('0x7')];_0x2689b3<_0x541b0c;_0x2689b3++){var _0x5a5bd1=events[_0x2689b3];var _0x237c3e=createListener(_0x9722('0x8')+_0x5a5bd1,_0x43e0ed);VoicePrefixEvents['on'](_0x5a5bd1,_0x237c3e);}};
\ No newline at end of file
+var _0x3f19=['length','voicePrefix:','./voicePrefix.events','emit','register'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3f19,0xc0));var _0x93f1=function(_0xf4eae3,_0x438eba){_0xf4eae3=_0xf4eae3-0x0;var _0x441c2a=_0x3f19[_0xf4eae3];return _0x441c2a;};'use strict';var VoicePrefixEvents=require(_0x93f1('0x0'));var events=['save','remove','update'];function createListener(_0x33bddc,_0x4d1cac){return function(_0x452cf9){_0x4d1cac[_0x93f1('0x1')](_0x33bddc,_0x452cf9);};}function removeListener(_0x3bd3fa,_0x2057aa){return function(){VoicePrefixEvents['removeListener'](_0x3bd3fa,_0x2057aa);};}exports[_0x93f1('0x2')]=function(_0x522769){for(var _0x999026=0x0,_0x425c6f=events[_0x93f1('0x3')];_0x999026<_0x425c6f;_0x999026++){var _0xdaa92=events[_0x999026];var _0x5d7374=createListener(_0x93f1('0x4')+_0xdaa92,_0x522769);VoicePrefixEvents['on'](_0xdaa92,_0x5d7374);}};
\ No newline at end of file
index 6fc30c9..6f1a80b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c6c=['delete','destroy','removeTeams','removeLists','removeBlackLists','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','isAuthenticated','index','get','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','getAgents','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addTeams','/:id/users','addAgents','addLists','addBlackLists','put','/:id','update'];(function(_0x13bea0,_0x210a0c){var _0x3f12df=function(_0x11ef1c){while(--_0x11ef1c){_0x13bea0['push'](_0x13bea0['shift']());}};_0x3f12df(++_0x210a0c);}(_0x7c6c,0xb9));var _0xc7c6=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x7c6c[_0x199572];return _0x13cfa3;};'use strict';var multer=require(_0xc7c6('0x0'));var util=require('util');var path=require(_0xc7c6('0x1'));var timeout=require(_0xc7c6('0x2'));var express=require('express');var router=express[_0xc7c6('0x3')]();var fs_extra=require(_0xc7c6('0x4'));var auth=require(_0xc7c6('0x5'));var interaction=require(_0xc7c6('0x6'));var config=require(_0xc7c6('0x7'));var controller=require(_0xc7c6('0x8'));router['get']('/',auth[_0xc7c6('0x9')](),controller[_0xc7c6('0xa')]);router[_0xc7c6('0xb')]('/:id',auth[_0xc7c6('0x9')](),controller['show']);router[_0xc7c6('0xb')](_0xc7c6('0xc'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0xd')]);router[_0xc7c6('0xb')]('/:id/hopper_histories',auth['isAuthenticated'](),controller[_0xc7c6('0xe')]);router['get'](_0xc7c6('0xf'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x10')]);router['get'](_0xc7c6('0x11'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x12')]);router[_0xc7c6('0xb')](_0xc7c6('0x13'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x14')]);router[_0xc7c6('0xb')]('/:id/users',auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x15')]);router[_0xc7c6('0xb')](_0xc7c6('0x16'),auth['isAuthenticated'](),controller[_0xc7c6('0x17')]);router[_0xc7c6('0xb')](_0xc7c6('0x18'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x19')]);router[_0xc7c6('0xb')](_0xc7c6('0x1a'),auth['isAuthenticated'](),controller[_0xc7c6('0x1b')]);router[_0xc7c6('0x1c')]('/',auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x1d')]);router[_0xc7c6('0x1c')](_0xc7c6('0x1e'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x1f')]);router[_0xc7c6('0x1c')](_0xc7c6('0x13'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x20')]);router[_0xc7c6('0x1c')](_0xc7c6('0x21'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x22')]);router[_0xc7c6('0x1c')](_0xc7c6('0x18'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x23')]);router['post'](_0xc7c6('0x1a'),auth['isAuthenticated'](),controller[_0xc7c6('0x24')]);router[_0xc7c6('0x25')](_0xc7c6('0x26'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x27')]);router[_0xc7c6('0x28')]('/:id',auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x29')]);router['delete'](_0xc7c6('0x13'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x2a')]);router[_0xc7c6('0x28')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);router['delete'](_0xc7c6('0x18'),auth['isAuthenticated'](),controller[_0xc7c6('0x2b')]);router['delete'](_0xc7c6('0x1a'),auth[_0xc7c6('0x9')](),controller[_0xc7c6('0x2c')]);module['exports']=router;
\ No newline at end of file
+var _0x0bbb=['removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','isAuthenticated','show','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','getAgents','getMembers','/:id/lists','getLists','/:id/blacklists','post','create','/:id/clone','clone','/:id/users','addAgents','addLists','addBlackLists','put','delete','destroy','removeTeams'];(function(_0xbfe20,_0x398601){var _0x4422d6=function(_0x262fe4){while(--_0x262fe4){_0xbfe20['push'](_0xbfe20['shift']());}};_0x4422d6(++_0x398601);}(_0x0bbb,0xae));var _0xb0bb=function(_0xcdcb36,_0x5f3d31){_0xcdcb36=_0xcdcb36-0x0;var _0x427cfd=_0x0bbb[_0xcdcb36];return _0x427cfd;};'use strict';var multer=require(_0xb0bb('0x0'));var util=require(_0xb0bb('0x1'));var path=require(_0xb0bb('0x2'));var timeout=require(_0xb0bb('0x3'));var express=require(_0xb0bb('0x4'));var router=express[_0xb0bb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb0bb('0x6'));var interaction=require(_0xb0bb('0x7'));var config=require(_0xb0bb('0x8'));var controller=require(_0xb0bb('0x9'));router[_0xb0bb('0xa')]('/',auth['isAuthenticated'](),controller[_0xb0bb('0xb')]);router[_0xb0bb('0xa')](_0xb0bb('0xc'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0xe')]);router[_0xb0bb('0xa')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0xb0bb('0xf')]);router[_0xb0bb('0xa')](_0xb0bb('0x10'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x11')]);router[_0xb0bb('0xa')](_0xb0bb('0x12'),auth['isAuthenticated'](),controller[_0xb0bb('0x13')]);router[_0xb0bb('0xa')](_0xb0bb('0x14'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x15')]);router[_0xb0bb('0xa')](_0xb0bb('0x16'),auth['isAuthenticated'](),controller[_0xb0bb('0x17')]);router[_0xb0bb('0xa')]('/:id/users',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x18')]);router[_0xb0bb('0xa')]('/:id/members',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x19')]);router[_0xb0bb('0xa')](_0xb0bb('0x1a'),auth['isAuthenticated'](),controller[_0xb0bb('0x1b')]);router['get'](_0xb0bb('0x1c'),auth[_0xb0bb('0xd')](),controller['getBlackLists']);router[_0xb0bb('0x1d')]('/',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x1e')]);router[_0xb0bb('0x1d')](_0xb0bb('0x1f'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x20')]);router['post']('/:id/teams',auth[_0xb0bb('0xd')](),controller['addTeams']);router[_0xb0bb('0x1d')](_0xb0bb('0x21'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x22')]);router[_0xb0bb('0x1d')]('/:id/lists',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x23')]);router[_0xb0bb('0x1d')](_0xb0bb('0x1c'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x24')]);router[_0xb0bb('0x25')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xb0bb('0x26')]('/:id',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x27')]);router['delete'](_0xb0bb('0x16'),auth['isAuthenticated'](),controller[_0xb0bb('0x28')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb0bb('0x29')]);router['delete'](_0xb0bb('0x1a'),auth[_0xb0bb('0xd')](),controller['removeLists']);router[_0xb0bb('0x26')](_0xb0bb('0x1c'),auth[_0xb0bb('0xd')](),controller['removeBlackLists']);module[_0xb0bb('0x2a')]=router;
\ No newline at end of file
index 16566cf..8d6ddf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9d=['#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','outbound','default','STRING','ringall','random','rrmemory','linear','wrandom','rrordered','strategy','getDataValue','type','dialMethod','roundrobin','progressive','predictive','power','INTEGER','yes','once','TEXT','periodic_announce','split','setDataValue','joinempty','join','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','booked','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','ASC','DESC','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)'];(function(_0x565d82,_0x292255){var _0x34e7ee=function(_0x5ee66e){while(--_0x5ee66e){_0x565d82['push'](_0x565d82['shift']());}};_0x34e7ee(++_0x292255);}(_0x3e9d,0x1ba));var _0xd3e9=function(_0x274818,_0x38c734){_0x274818=_0x274818-0x0;var _0x584b30=_0x3e9d[_0x274818];return _0x584b30;};'use strict';var Sequelize=require(_0xd3e9('0x0'));module[_0xd3e9('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd3e9('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x4'),_0xd3e9('0x5')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0xd3e9('0x6')},'announce':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':''},'strategy':{'type':Sequelize[_0xd3e9('0x3')]('rr',_0xd3e9('0x8'),'leastrecent','fewestcalls',_0xd3e9('0x9'),_0xd3e9('0xa'),_0xd3e9('0xb'),_0xd3e9('0xc'),_0xd3e9('0xd')),'allowNull':![],'defaultValue':_0xd3e9('0x8'),'set':function(_0x2944cd){this['setDataValue'](_0xd3e9('0xe'),_0x2944cd?_0x2944cd:_0xd3e9('0xa'));},'get':function(){var _0x45bfda=this[_0xd3e9('0xf')](_0xd3e9('0x10'));var _0x17175a=this[_0xd3e9('0xf')](_0xd3e9('0x11'));var _0x34dca9=this[_0xd3e9('0xf')]('strategy');if(_0x45bfda===_0xd3e9('0x4')){return _0x34dca9;}if(_0x17175a==='booked'&&_0x34dca9==='rrmemory'||_0x17175a==='booked'&&_0x34dca9===_0xd3e9('0x12')){return _0x34dca9;}if(_0x17175a===_0xd3e9('0x13')||_0x17175a===_0xd3e9('0x14')||_0x17175a===_0xd3e9('0x15')){return _0x34dca9;}return null;}},'servicelevel':{'type':Sequelize[_0xd3e9('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xd3e9('0x16')](0xb)},'timeout':{'type':Sequelize[_0xd3e9('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xd3e9('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0xd3e9('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xd3e9('0x3')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0xd3e9('0x3')]('yes','no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xd3e9('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0xd3e9('0x3')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xd3e9('0x3')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xd3e9('0x3')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0xd3e9('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xd3e9('0x7')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xd3e9('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xd3e9('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0xd3e9('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x17'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize['ENUM']('yes','no',_0xd3e9('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x17'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xd3e9('0x7')]},'queue_youarenext':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xd3e9('0x7')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xd3e9('0x7')]},'queue_quantity1':{'type':Sequelize[_0xd3e9('0x7')]},'queue_quantity2':{'type':Sequelize[_0xd3e9('0x7')]},'queue_periodic_announce':{'type':Sequelize[_0xd3e9('0x7')]},'queue_less_than':{'type':Sequelize[_0xd3e9('0x7')]},'periodic_announce':{'type':Sequelize[_0xd3e9('0x19')],'set':function(_0x605ace){this['setDataValue']('periodic_announce',_0x605ace?_0x605ace['join'](','):[]);},'get':function(){return this[_0xd3e9('0xf')](_0xd3e9('0x1a'))?this[_0xd3e9('0xf')]('periodic_announce')[_0xd3e9('0x1b')](','):[];}},'joinempty':{'type':Sequelize['STRING'],'defaultValue':_0xd3e9('0x17'),'set':function(_0x599d54){this[_0xd3e9('0x1c')](_0xd3e9('0x1d'),_0x599d54?_0x599d54[_0xd3e9('0x1e')](','):undefined);},'get':function(){return this[_0xd3e9('0xf')](_0xd3e9('0x1d'))?this['getDataValue'](_0xd3e9('0x1d'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':'no','set':function(_0x1c141d){this['setDataValue'](_0xd3e9('0x1f'),_0x1c141d?_0x1c141d[_0xd3e9('0x1e')](','):undefined);},'get':function(){return this[_0xd3e9('0xf')]('leavewhenempty')?this[_0xd3e9('0xf')](_0xd3e9('0x1f'))[_0xd3e9('0x1b')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0xd3e9('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xd3e9('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xd3e9('0x7')]},'description':{'type':Sequelize[_0xd3e9('0x7')]},'acw':{'type':Sequelize[_0xd3e9('0x20')],'defaultValue':0x0,'set':function(_0x5c002f){this['setDataValue'](_0xd3e9('0x21'),_0x5c002f);if(_0x5c002f){if(this[_0xd3e9('0xf')](_0xd3e9('0x22'))<0x2){this['setDataValue'](_0xd3e9('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xd3e9('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xd3e9('0x20')],'defaultValue':0x0,'comment':_0xd3e9('0x23')},'dialMethod':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x24'),_0xd3e9('0x13'),'power','predictive',_0xd3e9('0x25')),'defaultValue':_0xd3e9('0x13'),'comment':_0xd3e9('0x26')},'dialLimitChannel':{'type':Sequelize[_0xd3e9('0x16')](0x4)[_0xd3e9('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xd3e9('0x28')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xd3e9('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xd3e9('0x29')},'dialPowerLevel':{'type':Sequelize[_0xd3e9('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xd3e9('0x2b')},'dialPredictiveOptimization':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x2c'),_0xd3e9('0x2d')),'defaultValue':'dropRate','comment':_0xd3e9('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xd3e9('0x2f')},'dialPredictiveInterval':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xd3e9('0x30')},'dialOriginateCallerIdName':{'type':Sequelize[_0xd3e9('0x7')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xd3e9('0x7')]},'dialOriginateTimeout':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x31')},'dialQueueOptions':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':_0xd3e9('0x32'),'comment':_0xd3e9('0x33')},'dialQueueTimeout':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x34')},'dialQueueProject':{'type':Sequelize[_0xd3e9('0x7')],'comment':_0xd3e9('0x35')},'dialCongestionMaxRetry':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x36')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xd3e9('0x16')](0x5)[_0xd3e9('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd3e9('0x37')},'dialBusyMaxRetry':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x38')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd3e9('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd3e9('0x39')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0x3,'comment':_0xd3e9('0x3a')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xd3e9('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd3e9('0x3b')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd3e9('0x27')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xd3e9('0x3c')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':_0xd3e9('0x3d')},'dialPrefix':{'type':Sequelize[_0xd3e9('0x7')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xd3e9('0x3')](_0xd3e9('0x3e'),_0xd3e9('0x3f'),_0xd3e9('0x40')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xd3e9('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xd3e9('0x16')](0x9)[_0xd3e9('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0xd3e9('0x16')](0x9)[_0xd3e9('0x27')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xd3e9('0x41')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xd3e9('0x42')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xd3e9('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd3e9('0x43')},'dialAMDMinWordLength':{'type':Sequelize[_0xd3e9('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xd3e9('0x44')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xd3e9('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xd3e9('0x45')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xd3e9('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xd3e9('0x46')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xd3e9('0x16')](0x9)[_0xd3e9('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd3e9('0x47')},'dialRecallMeTimeout':{'type':Sequelize[_0xd3e9('0x16')](0x5)[_0xd3e9('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xd3e9('0x48')},'dialRecallInQueue':{'type':Sequelize[_0xd3e9('0x20')],'defaultValue':0x0,'comment':_0xd3e9('0x49')},'dialOrderByScheduledAt':{'type':Sequelize[_0xd3e9('0x3')]('DESC',_0xd3e9('0x4a')),'defaultValue':_0xd3e9('0x4b')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0xd3e9('0x35')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xd3e9('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xd3e9('0x16')](0x5)[_0xd3e9('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd3e9('0x4c')},'dialDropMaxRetry':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x4d')},'dialDropRetryFrequency':{'type':Sequelize[_0xd3e9('0x16')](0x5)[_0xd3e9('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd3e9('0x4e')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x4f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xd3e9('0x16')](0x5)[_0xd3e9('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xd3e9('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x50')},'dialMachineRetryFrequency':{'type':Sequelize[_0xd3e9('0x16')](0x5)[_0xd3e9('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd3e9('0x51')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xd3e9('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd3e9('0x52')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd3e9('0x16')],'allowNull':!![],'comment':_0xd3e9('0x53')},'mandatoryDisposition':{'type':Sequelize[_0xd3e9('0x20')],'defaultValue':![],'comment':_0xd3e9('0x54'),'set':function(_0x429eb8){if(!_0x429eb8)this[_0xd3e9('0x1c')](_0xd3e9('0x55'),null);this['setDataValue'](_0xd3e9('0x56'),_0x429eb8);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xd3e9('0x16')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xd3e9('0x16')](0x3)[_0xd3e9('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x3cbc=['AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','STRING','default','ringall','leastrecent','fewestcalls','linear','wrandom','rrordered','setDataValue','strategy','getDataValue','dialMethod','booked','roundrobin','progressive','power','INTEGER','yes','all','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)'];(function(_0x366a6e,_0x4b3a06){var _0x3b3e00=function(_0x27947a){while(--_0x27947a){_0x366a6e['push'](_0x366a6e['shift']());}};_0x3b3e00(++_0x4b3a06);}(_0x3cbc,0x151));var _0xc3cb=function(_0x95474b,_0x4855ca){_0x95474b=_0x95474b-0x0;var _0x3d27c9=_0x3cbc[_0x95474b];return _0x3d27c9;};'use strict';var Sequelize=require(_0xc3cb('0x0'));module[_0xc3cb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc3cb('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x4'),'outbound'),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':_0xc3cb('0x6')},'announce':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0xc3cb('0x7'),_0xc3cb('0x8'),_0xc3cb('0x9'),'random','rrmemory',_0xc3cb('0xa'),_0xc3cb('0xb'),_0xc3cb('0xc')),'allowNull':![],'defaultValue':'ringall','set':function(_0x23b78e){this[_0xc3cb('0xd')](_0xc3cb('0xe'),_0x23b78e?_0x23b78e:'rrmemory');},'get':function(){var _0x238177=this['getDataValue']('type');var _0xb378f2=this[_0xc3cb('0xf')](_0xc3cb('0x10'));var _0x5149ad=this['getDataValue'](_0xc3cb('0xe'));if(_0x238177===_0xc3cb('0x4')){return _0x5149ad;}if(_0xb378f2===_0xc3cb('0x11')&&_0x5149ad==='rrmemory'||_0xb378f2===_0xc3cb('0x11')&&_0x5149ad===_0xc3cb('0x12')){return _0x5149ad;}if(_0xb378f2===_0xc3cb('0x13')||_0xb378f2==='predictive'||_0xb378f2===_0xc3cb('0x14')){return _0x5149ad;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xc3cb('0x15')](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xc3cb('0x5')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xc3cb('0x3')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no',_0xc3cb('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xc3cb('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc3cb('0x5')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xc3cb('0x5')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc3cb('0x3')]('yes','no'),'defaultValue':_0xc3cb('0x16')},'announce_holdtime':{'type':Sequelize['ENUM']('yes','no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xc3cb('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xc3cb('0x5')]},'queue_youarenext':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc3cb('0x5')]},'queue_quantity1':{'type':Sequelize[_0xc3cb('0x5')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xc3cb('0x5')]},'queue_less_than':{'type':Sequelize[_0xc3cb('0x5')]},'periodic_announce':{'type':Sequelize[_0xc3cb('0x18')],'set':function(_0x136fa9){this['setDataValue'](_0xc3cb('0x19'),_0x136fa9?_0x136fa9['join'](','):[]);},'get':function(){return this[_0xc3cb('0xf')](_0xc3cb('0x19'))?this[_0xc3cb('0xf')](_0xc3cb('0x19'))[_0xc3cb('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':'yes','set':function(_0x38783f){this[_0xc3cb('0xd')](_0xc3cb('0x1b'),_0x38783f?_0x38783f[_0xc3cb('0x1c')](','):undefined);},'get':function(){return this[_0xc3cb('0xf')](_0xc3cb('0x1b'))?this[_0xc3cb('0xf')]('joinempty')[_0xc3cb('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':'no','set':function(_0x4bb0a6){this[_0xc3cb('0xd')](_0xc3cb('0x1d'),_0x4bb0a6?_0x4bb0a6[_0xc3cb('0x1c')](','):undefined);},'get':function(){return this['getDataValue']('leavewhenempty')?this['getDataValue'](_0xc3cb('0x1d'))[_0xc3cb('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc3cb('0x5')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'set':function(_0x18623f){this['setDataValue']('acw',_0x18623f);if(_0x18623f){if(this[_0xc3cb('0xf')]('wrapuptime')<0x2){this[_0xc3cb('0xd')](_0xc3cb('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'comment':_0xc3cb('0x20')},'dialMethod':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x21'),_0xc3cb('0x13'),_0xc3cb('0x14'),'predictive',_0xc3cb('0x11')),'defaultValue':_0xc3cb('0x13'),'comment':_0xc3cb('0x22')},'dialLimitChannel':{'type':Sequelize[_0xc3cb('0x15')](0x4)[_0xc3cb('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc3cb('0x24')},'dialLimitQueue':{'type':Sequelize[_0xc3cb('0x15')](0x4)[_0xc3cb('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc3cb('0x25')},'dialPowerLevel':{'type':Sequelize[_0xc3cb('0x26')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xc3cb('0x27')},'dialPredictiveOptimization':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x28'),'dropRate'),'defaultValue':_0xc3cb('0x29'),'comment':_0xc3cb('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xc3cb('0x26')](0x2)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xc3cb('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0xc3cb('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xc3cb('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':'tTxX','comment':_0xc3cb('0x2d')},'dialQueueTimeout':{'type':Sequelize[_0xc3cb('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x2e')},'dialQueueProject':{'type':Sequelize[_0xc3cb('0x5')],'comment':_0xc3cb('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x30')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x31')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x32')},'dialBusyRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x33')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'comment':_0xc3cb('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x35')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc3cb('0x36')},'dialTimezone':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':_0xc3cb('0x37')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x38'),'never',_0xc3cb('0x39')),'defaultValue':_0xc3cb('0x38')},'dialAMDActive':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc3cb('0x23')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc3cb('0x3a')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc3cb('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xc3cb('0x3c')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc3cb('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc3cb('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc3cb('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc3cb('0x3f')},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xc3cb('0x40')},'dialRecallInQueue':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x41'),_0xc3cb('0x42')),'defaultValue':_0xc3cb('0x41')},'dialQueueProject2':{'type':Sequelize[_0xc3cb('0x5')],'comment':_0xc3cb('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc3cb('0x43')},'dialCutDigit':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc3cb('0x44')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x45')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x46')},'dialDropMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x47')},'dialDropRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x4a')},'dialMachineMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc3cb('0x15')],'allowNull':!![],'comment':_0xc3cb('0x4f')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc3cb('0x50'),'set':function(_0x387172){if(!_0x387172)this[_0xc3cb('0xd')](_0xc3cb('0x51'),null);this['setDataValue'](_0xc3cb('0x52'),_0x387172);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index e1568d4..0c0b969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb8e=['UserProfileResource','destroy','end','sendStatus','error','stack','send','map','VoiceQueue','rawAttributes','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','count','catch','show','params','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','includeAll','include','options','createdAt','updatedAt','UserProfileSection','findOne','CmHopper','VoiceQueueId','findAll','rows','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','addTeams','teams','Team','User','Agents','online','voicePause','interface','forEach','penalty','sequelize','transaction','TeamVoiceQueue','upsert','UserVoiceQueue','each','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','select','tq.TeamId','from','team_has_voice_queues','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','all','compact','isEmpty','userVoiceQueue:remove','addAgents','omit','removeAgents','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','field','NOW()','CmListId','ListId','deletedAt\x20IS\x20NULL','toString','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','phone\x20IS\x20NOT\x20NULL','cm_contacts','ListId\x20=\x20?','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','to-csv','ejs','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','register','status','offset','undefined','limit','set','Content-Range','json','apply','reject','save','update','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','value','includes','find','type','name'];(function(_0x27dfe7,_0x3acd6f){var _0x9d647c=function(_0x200340){while(--_0x200340){_0x27dfe7['push'](_0x27dfe7['shift']());}};_0x9d647c(++_0x3acd6f);}(_0xfb8e,0x1ef));var _0xefb8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfb8e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xefb8('0x0'));var rimraf=require(_0xefb8('0x1'));var zipdir=require(_0xefb8('0x2'));var jsonpatch=require(_0xefb8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xefb8('0x4'));var Mustache=require(_0xefb8('0x5'));var util=require('util');var path=require(_0xefb8('0x6'));var sox=require('sox');var csv=require(_0xefb8('0x7'));var ejs=require(_0xefb8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xefb8('0x9'));var crypto=require('crypto');var jsforce=require(_0xefb8('0xa'));var deskjs=require(_0xefb8('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xefb8('0xc'));var Redis=require(_0xefb8('0xd'));var authService=require(_0xefb8('0xe'));var qs=require(_0xefb8('0xf'));var as=require(_0xefb8('0x10'));var hardwareService=require(_0xefb8('0x11'));var logger=require('../../config/logger')(_0xefb8('0x12'));var utils=require(_0xefb8('0x13'));var config=require(_0xefb8('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xefb8('0x15'))['db'];config[_0xefb8('0x16')]=_[_0xefb8('0x17')](config[_0xefb8('0x16')],{'host':_0xefb8('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xefb8('0x16')]));require(_0xefb8('0x19'))[_0xefb8('0x1a')](socket);function respondWithStatusCode(_0x5159de,_0x465f71){_0x465f71=_0x465f71||0xcc;return function(_0x261edd){if(_0x261edd){return _0x5159de['sendStatus'](_0x465f71);}return _0x5159de['status'](_0x465f71)['end']();};}function respondWithResult(_0x56aa06,_0x22b63c){_0x22b63c=_0x22b63c||0xc8;return function(_0x5e63ae){if(_0x5e63ae){return _0x56aa06[_0xefb8('0x1b')](_0x22b63c)['json'](_0x5e63ae);}};}function respondWithFilteredResult(_0x302792,_0x1a91da){return function(_0x5d27ba){if(_0x5d27ba){var _0x12eac7=typeof _0x1a91da[_0xefb8('0x1c')]===_0xefb8('0x1d')&&typeof _0x1a91da[_0xefb8('0x1e')]==='undefined';var _0x414f6b=_0x5d27ba['count'];var _0x5e4a6a=_0x12eac7?0x0:_0x1a91da['offset'];var _0x35e354=_0x12eac7?_0x5d27ba['count']:_0x1a91da[_0xefb8('0x1c')]+_0x1a91da['limit'];var _0x1078dc;if(_0x35e354>=_0x414f6b){_0x35e354=_0x414f6b;_0x1078dc=0xc8;}else{_0x1078dc=0xce;}_0x302792[_0xefb8('0x1b')](_0x1078dc);return _0x302792[_0xefb8('0x1f')](_0xefb8('0x20'),_0x5e4a6a+'-'+_0x35e354+'/'+_0x414f6b)[_0xefb8('0x21')](_0x5d27ba);}return null;};}function patchUpdates(_0x520db6){return function(_0x861c66){try{jsonpatch[_0xefb8('0x22')](_0x861c66,_0x520db6,!![]);}catch(_0x2ed627){return BPromise[_0xefb8('0x23')](_0x2ed627);}return _0x861c66[_0xefb8('0x24')]();};}function saveUpdates(_0x1ebd9f,_0x25f752){return function(_0xec403a){if(_0xec403a){return _0xec403a[_0xefb8('0x25')](_0x1ebd9f)[_0xefb8('0x26')](function(_0x24c5d7){return _0x24c5d7;});}return null;};}function removeEntity(_0x434b0a,_0x29a1bf){return function(_0x3b9232){if(_0x3b9232){return _0x3b9232['destroy']()[_0xefb8('0x26')](function(){var _0x4a6f7f=_0x3b9232[_0xefb8('0x27')]({'plain':!![]});var _0xeb9c02=[{'name':_0xefb8('0x28'),'value':_0xefb8('0x29'),'ignore':![]},{'name':_0xefb8('0x2a'),'value':_0xefb8('0x2b'),'ignore':![]}];var _0x1d9f55=_(_0xeb9c02)[_0xefb8('0x2c')](_0xefb8('0x2d'))['map']('value')[_0xefb8('0x2e')]();if(_[_0xefb8('0x2f')](_0x1d9f55,_0x4a6f7f['type'])){return;}var _0x440ce8=_[_0xefb8('0x30')](_0xeb9c02,[_0xefb8('0x2e'),_0x4a6f7f[_0xefb8('0x31')]])[_0xefb8('0x32')];return db[_0xefb8('0x33')][_0xefb8('0x34')]({'where':{'type':_0x440ce8,'resourceId':_0x4a6f7f['id']}})[_0xefb8('0x26')](function(){return _0x3b9232;});})[_0xefb8('0x26')](function(){_0x434b0a[_0xefb8('0x1b')](0xcc)[_0xefb8('0x35')]();});}};}function handleEntityNotFound(_0x14150,_0x3f1619){return function(_0x5a0981){if(!_0x5a0981){_0x14150[_0xefb8('0x36')](0x194);}return _0x5a0981;};}function handleError(_0xb57ff0,_0x1a8fc){_0x1a8fc=_0x1a8fc||0x1f4;return function(_0xb1e064){logger[_0xefb8('0x37')](_0xb1e064[_0xefb8('0x38')]);if(_0xb1e064[_0xefb8('0x32')]){delete _0xb1e064[_0xefb8('0x32')];}_0xb57ff0[_0xefb8('0x1b')](_0x1a8fc)[_0xefb8('0x39')](_0xb1e064);};}exports['index']=function(_0x875ece,_0x325b87){var _0x380e91={},_0x19c3f7={},_0x22873a={'count':0x0,'rows':[]};var _0x893a05=_[_0xefb8('0x3a')](db[_0xefb8('0x3b')][_0xefb8('0x3c')],function(_0x122e31){return{'name':_0x122e31['fieldName'],'type':_0x122e31[_0xefb8('0x31')]['key']};});_0x19c3f7['model']=_[_0xefb8('0x3a')](_0x893a05,'name');_0x19c3f7['query']=_[_0xefb8('0x3d')](_0x875ece[_0xefb8('0x3e')]);_0x19c3f7[_0xefb8('0x3f')]=_[_0xefb8('0x40')](_0x19c3f7[_0xefb8('0x41')],_0x19c3f7[_0xefb8('0x3e')]);_0x380e91[_0xefb8('0x42')]=_[_0xefb8('0x40')](_0x19c3f7[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0x875ece[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x380e91[_0xefb8('0x42')]=_0x380e91['attributes']['length']?_0x380e91[_0xefb8('0x42')]:_0x19c3f7[_0xefb8('0x41')];if(!_0x875ece['query'][_0xefb8('0x44')](_0xefb8('0x45'))){_0x380e91[_0xefb8('0x1e')]=qs[_0xefb8('0x1e')](_0x875ece['query'][_0xefb8('0x1e')]);_0x380e91[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0x875ece[_0xefb8('0x3e')][_0xefb8('0x1c')]);}_0x380e91[_0xefb8('0x46')]=qs[_0xefb8('0x47')](_0x875ece[_0xefb8('0x3e')]['sort']);_0x380e91[_0xefb8('0x48')]=qs[_0xefb8('0x3f')](_[_0xefb8('0x49')](_0x875ece[_0xefb8('0x3e')],_0x19c3f7['filters']),_0x893a05);if(_0x875ece[_0xefb8('0x3e')][_0xefb8('0x2c')]){_0x380e91[_0xefb8('0x48')]=_[_0xefb8('0x4a')](_0x380e91[_0xefb8('0x48')],{'$or':_[_0xefb8('0x3a')](_0x893a05,function(_0xb7a403){if(_0xb7a403['type']!==_0xefb8('0x4b')){var _0x3a644d={};_0x3a644d[_0xb7a403[_0xefb8('0x32')]]={'$like':'%'+_0x875ece[_0xefb8('0x3e')][_0xefb8('0x2c')]+'%'};return _0x3a644d;}})});}_0x380e91=_['merge']({},_0x380e91,_0x875ece['options']);var _0x4af7c2={'where':_0x380e91['where']};return db['VoiceQueue'][_0xefb8('0x4c')](_0x4af7c2)[_0xefb8('0x26')](function(_0x1686c3){_0x22873a[_0xefb8('0x4c')]=_0x1686c3;if(_0x875ece['query']['includeAll']){_0x380e91['include']=[{'all':!![]}];}return db[_0xefb8('0x3b')]['findAll'](_0x380e91);})[_0xefb8('0x26')](function(_0x74d3eb){_0x22873a['rows']=_0x74d3eb;return _0x22873a;})['then'](respondWithFilteredResult(_0x325b87,_0x380e91))[_0xefb8('0x4d')](handleError(_0x325b87,null));};exports[_0xefb8('0x4e')]=function(_0x1734e6,_0x32f910){var _0x33ff15={'raw':![],'where':{'id':_0x1734e6[_0xefb8('0x4f')]['id']}},_0x54aec7={};_0x54aec7[_0xefb8('0x41')]=_[_0xefb8('0x3d')](db[_0xefb8('0x3b')]['rawAttributes']);_0x54aec7[_0xefb8('0x3e')]=_[_0xefb8('0x3d')](_0x1734e6[_0xefb8('0x3e')]);_0x54aec7[_0xefb8('0x3f')]=_['intersection'](_0x54aec7[_0xefb8('0x41')],_0x54aec7['query']);_0x33ff15[_0xefb8('0x42')]=_['intersection'](_0x54aec7[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0x1734e6[_0xefb8('0x3e')]['fields']));_0x33ff15[_0xefb8('0x42')]=_0x33ff15[_0xefb8('0x42')][_0xefb8('0x50')]?_0x33ff15[_0xefb8('0x42')]:_0x54aec7['model'];if(_0x1734e6[_0xefb8('0x3e')]['includeAll']){_0x33ff15['include']=[{'all':!![]}];}_0x33ff15=_[_0xefb8('0x4a')]({},_0x33ff15,_0x1734e6['options']);return db[_0xefb8('0x3b')][_0xefb8('0x30')](_0x33ff15)[_0xefb8('0x26')](handleEntityNotFound(_0x32f910,null))[_0xefb8('0x26')](respondWithResult(_0x32f910,null))[_0xefb8('0x4d')](handleError(_0x32f910,null));};exports[_0xefb8('0x51')]=function(_0x5ec5a2,_0x5f235a){return db[_0xefb8('0x3b')]['create'](_0x5ec5a2[_0xefb8('0x52')],{})['then'](function(_0x1a2b9d){var _0x132cef=_0x5ec5a2[_0xefb8('0x53')][_0xefb8('0x27')]({'plain':!![]});if(!_0x132cef)throw new Error(_0xefb8('0x54'));if(_0x132cef[_0xefb8('0x55')]===_0xefb8('0x53')){var _0xdc2094=_0x1a2b9d[_0xefb8('0x27')]({'plain':!![]});var _0x448989=[{'name':_0xefb8('0x28'),'value':_0xefb8('0x29')},{'name':_0xefb8('0x2a'),'value':'outbound'}];var _0x19690c=_[_0xefb8('0x30')](_0x448989,[_0xefb8('0x2e'),_0xdc2094[_0xefb8('0x31')]])['name'];return db['UserProfileSection'][_0xefb8('0x30')]({'where':{'name':_0x19690c,'userProfileId':_0x132cef[_0xefb8('0x56')]},'raw':!![]})[_0xefb8('0x26')](function(_0xbcbf77){if(_0xbcbf77&&_0xbcbf77[_0xefb8('0x57')]===0x0){return db[_0xefb8('0x33')][_0xefb8('0x51')]({'name':_0xdc2094[_0xefb8('0x32')],'resourceId':_0xdc2094['id'],'type':_0xbcbf77['name'],'sectionId':_0xbcbf77['id']},{})[_0xefb8('0x26')](function(){return _0x1a2b9d;});}else{return _0x1a2b9d;}})[_0xefb8('0x4d')](function(_0x3ec5ce){logger['error'](_0xefb8('0x58'),_0x3ec5ce);throw _0x3ec5ce;});}return _0x1a2b9d;})['then'](respondWithResult(_0x5f235a,0xc9))[_0xefb8('0x4d')](handleError(_0x5f235a,null));};exports[_0xefb8('0x59')]=function(_0x302b7a,_0xf1b9c2){var _0x31512e={'where':{'id':_0x302b7a[_0xefb8('0x4f')]['id']}},_0x288a07={};_0x288a07[_0xefb8('0x41')]=_[_0xefb8('0x3d')](db[_0xefb8('0x3b')][_0xefb8('0x3c')]);_0x31512e[_0xefb8('0x42')]=_[_0xefb8('0x40')](_0x288a07[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0x302b7a[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x31512e[_0xefb8('0x42')]=_0x31512e[_0xefb8('0x42')][_0xefb8('0x50')]?_0x31512e[_0xefb8('0x42')]:_0x288a07[_0xefb8('0x41')];if(_0x302b7a[_0xefb8('0x3e')][_0xefb8('0x5a')]){_0x31512e[_0xefb8('0x5b')]=[{'all':!![]}];}_0x31512e=_[_0xefb8('0x4a')]({},_0x31512e,_0x302b7a[_0xefb8('0x5c')]);return db[_0xefb8('0x3b')]['find'](_0x31512e)[_0xefb8('0x26')](handleEntityNotFound(_0xf1b9c2,null))[_0xefb8('0x26')](function(_0xb4b101){if(_0xb4b101){var _0x2bd582=_0xb4b101['get']({'plain':!![]});_0x2bd582=qs['omit'](_0x2bd582,['id','createdAt','updatedAt']);_0x302b7a[_0xefb8('0x52')]=_['omit'](_0x302b7a[_0xefb8('0x52')],['id',_0xefb8('0x5d'),_0xefb8('0x5e')]);return db[_0xefb8('0x3b')]['create'](_[_0xefb8('0x4a')](_0x2bd582,_0x302b7a[_0xefb8('0x52')]),{'include':_0x302b7a['query'][_0xefb8('0x5a')]?[{'all':!![]}]:undefined})[_0xefb8('0x26')](function(_0x35d3a7){var _0x4855fa=_0x302b7a[_0xefb8('0x53')][_0xefb8('0x27')]({'plain':!![]});if(!_0x4855fa)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4855fa[_0xefb8('0x55')]===_0xefb8('0x53')){var _0x3d820c=_0x35d3a7[_0xefb8('0x27')]({'plain':!![]});var _0xac6e82=[{'name':_0xefb8('0x28'),'value':_0xefb8('0x29')},{'name':_0xefb8('0x2a'),'value':_0xefb8('0x2b')}];var _0x3ca661=_['find'](_0xac6e82,[_0xefb8('0x2e'),_0x3d820c['type']])[_0xefb8('0x32')];return db[_0xefb8('0x5f')][_0xefb8('0x30')]({'where':{'name':_0x3ca661,'userProfileId':_0x4855fa[_0xefb8('0x56')]},'raw':!![]})['then'](function(_0x3b8af6){if(_0x3b8af6&&_0x3b8af6[_0xefb8('0x57')]===0x0){return db[_0xefb8('0x33')][_0xefb8('0x51')]({'name':_0x3d820c['name'],'resourceId':_0x3d820c['id'],'type':_0x3b8af6[_0xefb8('0x32')],'sectionId':_0x3b8af6['id']},{})['then'](function(){return _0x35d3a7;});}else{return _0x35d3a7;}})[_0xefb8('0x4d')](function(_0x487e73){logger[_0xefb8('0x37')](_0xefb8('0x58'),_0x487e73);throw _0x487e73;});}return _0x35d3a7;});}})['then'](respondWithResult(_0xf1b9c2,0xc9))[_0xefb8('0x4d')](handleError(_0xf1b9c2,null));};exports[_0xefb8('0x25')]=function(_0x2316f6,_0x10dcb9){if(_0x2316f6[_0xefb8('0x52')]['id']){delete _0x2316f6['body']['id'];}return db[_0xefb8('0x3b')]['find']({'where':{'id':_0x2316f6[_0xefb8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x10dcb9,null))['then'](saveUpdates(_0x2316f6[_0xefb8('0x52')],null))[_0xefb8('0x26')](respondWithResult(_0x10dcb9,null))[_0xefb8('0x4d')](handleError(_0x10dcb9,null));};exports[_0xefb8('0x34')]=function(_0x1fe327,_0x3d6c82){return db[_0xefb8('0x3b')][_0xefb8('0x30')]({'where':{'id':_0x1fe327[_0xefb8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3d6c82,null))[_0xefb8('0x26')](removeEntity(_0x3d6c82,null))[_0xefb8('0x4d')](handleError(_0x3d6c82,null));};exports['getHoppers']=function(_0xbd1b00,_0x27137b,_0x58cb3e){var _0x174a05={'raw':![],'where':{}};var _0x3d19ee={};var _0x89bcb6={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xefb8('0x60')]({'where':{'id':_0xbd1b00[_0xefb8('0x4f')]['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x27137b,null))['then'](function(_0x38d196){if(_0x38d196){_0x3d19ee[_0xefb8('0x41')]=_[_0xefb8('0x3d')](db[_0xefb8('0x61')][_0xefb8('0x3c')]);_0x3d19ee['query']=_[_0xefb8('0x3d')](_0xbd1b00[_0xefb8('0x3e')]);_0x3d19ee['filters']=_['intersection'](_0x3d19ee[_0xefb8('0x41')],_0x3d19ee['query']);_0x174a05['attributes']=_['intersection'](_0x3d19ee[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0xbd1b00[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x174a05[_0xefb8('0x42')]=_0x174a05[_0xefb8('0x42')][_0xefb8('0x50')]?_0x174a05[_0xefb8('0x42')]:_0x3d19ee['model'];if(!_0xbd1b00[_0xefb8('0x3e')][_0xefb8('0x44')](_0xefb8('0x45'))){_0x174a05[_0xefb8('0x1e')]=qs[_0xefb8('0x1e')](_0xbd1b00['query'][_0xefb8('0x1e')]);_0x174a05[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0xbd1b00[_0xefb8('0x3e')][_0xefb8('0x1c')]);}_0x174a05[_0xefb8('0x46')]=qs[_0xefb8('0x47')](_0xbd1b00[_0xefb8('0x3e')][_0xefb8('0x47')]);_0x174a05[_0xefb8('0x48')]=qs['filters'](_['pick'](_0xbd1b00[_0xefb8('0x3e')],_0x3d19ee[_0xefb8('0x3f')]));_0x174a05[_0xefb8('0x48')][_0xefb8('0x62')]=_0x38d196['id'];if(_0xbd1b00[_0xefb8('0x3e')]['filter']){_0x174a05[_0xefb8('0x48')]=_['merge'](_0x174a05['where'],{'$or':_[_0xefb8('0x3a')](_0x174a05[_0xefb8('0x42')],function(_0x4a8c3c){var _0x726dab={};_0x726dab[_0x4a8c3c]={'$like':'%'+_0xbd1b00[_0xefb8('0x3e')][_0xefb8('0x2c')]+'%'};return _0x726dab;})});}_0x174a05=_[_0xefb8('0x4a')]({},_0x174a05,_0xbd1b00[_0xefb8('0x5c')]);return db[_0xefb8('0x61')][_0xefb8('0x4c')]({'where':_0x174a05[_0xefb8('0x48')]})[_0xefb8('0x26')](function(_0x50756b){_0x89bcb6[_0xefb8('0x4c')]=_0x50756b;if(_0xbd1b00[_0xefb8('0x3e')][_0xefb8('0x5a')]){_0x174a05[_0xefb8('0x5b')]=[{'all':!![]}];}return db[_0xefb8('0x61')][_0xefb8('0x63')](_0x174a05);})[_0xefb8('0x26')](function(_0x28bc59){_0x89bcb6[_0xefb8('0x64')]=_0x28bc59;return _0x89bcb6;});}})[_0xefb8('0x26')](respondWithFilteredResult(_0x27137b,_0x174a05))[_0xefb8('0x4d')](handleError(_0x27137b,null));};exports[_0xefb8('0x65')]=function(_0x4ad199,_0x1005cb,_0x39302a){var _0x49ca7a={'raw':!![],'where':{}};var _0x295628={};var _0x12fe88={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xefb8('0x60')]({'where':{'id':_0x4ad199[_0xefb8('0x4f')]['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x1005cb,null))[_0xefb8('0x26')](function(_0xea760b){if(_0xea760b){_0x295628[_0xefb8('0x41')]=_[_0xefb8('0x3d')](db[_0xefb8('0x66')][_0xefb8('0x3c')]);_0x295628['query']=_['keys'](_0x4ad199[_0xefb8('0x3e')]);_0x295628[_0xefb8('0x3f')]=_['intersection'](_0x295628['model'],_0x295628['query']);_0x49ca7a[_0xefb8('0x42')]=_[_0xefb8('0x40')](_0x295628[_0xefb8('0x41')],qs['fields'](_0x4ad199[_0xefb8('0x3e')]['fields']));_0x49ca7a[_0xefb8('0x42')]=_0x49ca7a['attributes'][_0xefb8('0x50')]?_0x49ca7a[_0xefb8('0x42')]:_0x295628[_0xefb8('0x41')];if(!_0x4ad199[_0xefb8('0x3e')][_0xefb8('0x44')](_0xefb8('0x45'))){_0x49ca7a[_0xefb8('0x1e')]=qs['limit'](_0x4ad199[_0xefb8('0x3e')][_0xefb8('0x1e')]);_0x49ca7a['offset']=qs[_0xefb8('0x1c')](_0x4ad199[_0xefb8('0x3e')]['offset']);}_0x49ca7a['order']=qs[_0xefb8('0x47')](_0x4ad199['query']['sort']);_0x49ca7a[_0xefb8('0x48')]=qs[_0xefb8('0x3f')](_['pick'](_0x4ad199['query'],_0x295628[_0xefb8('0x3f')]));_0x49ca7a[_0xefb8('0x48')][_0xefb8('0x62')]=_0xea760b['id'];if(_0x4ad199[_0xefb8('0x3e')][_0xefb8('0x2c')]){_0x49ca7a[_0xefb8('0x48')]=_['merge'](_0x49ca7a['where'],{'$or':_[_0xefb8('0x3a')](_0x49ca7a['attributes'],function(_0x5bce28){var _0xce95c0={};_0xce95c0[_0x5bce28]={'$like':'%'+_0x4ad199[_0xefb8('0x3e')][_0xefb8('0x2c')]+'%'};return _0xce95c0;})});}_0x49ca7a=_['merge']({},_0x49ca7a,_0x4ad199[_0xefb8('0x5c')]);return db[_0xefb8('0x66')]['count']({'where':_0x49ca7a[_0xefb8('0x48')]})[_0xefb8('0x26')](function(_0x397204){_0x12fe88[_0xefb8('0x4c')]=_0x397204;if(_0x4ad199[_0xefb8('0x3e')][_0xefb8('0x5a')]){_0x49ca7a[_0xefb8('0x5b')]=[{'all':!![]}];}return db[_0xefb8('0x66')][_0xefb8('0x63')](_0x49ca7a);})[_0xefb8('0x26')](function(_0x56a838){_0x12fe88[_0xefb8('0x64')]=_0x56a838;return _0x12fe88;});}})[_0xefb8('0x26')](respondWithFilteredResult(_0x1005cb,_0x49ca7a))['catch'](handleError(_0x1005cb,null));};exports[_0xefb8('0x67')]=function(_0x4e5d68,_0xcb1dc4,_0x534389){var _0x511349={'raw':!![],'where':{}};var _0x4c7f12={};var _0x36d4cc={'count':0x0,'rows':[]};return db[_0xefb8('0x3b')][_0xefb8('0x60')]({'where':{'id':_0x4e5d68['params']['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0xcb1dc4,null))['then'](function(_0x5c46d3){if(_0x5c46d3){_0x4c7f12[_0xefb8('0x41')]=_['keys'](db[_0xefb8('0x68')][_0xefb8('0x3c')]);_0x4c7f12['query']=_[_0xefb8('0x3d')](_0x4e5d68['query']);_0x4c7f12['filters']=_['intersection'](_0x4c7f12[_0xefb8('0x41')],_0x4c7f12[_0xefb8('0x3e')]);_0x511349[_0xefb8('0x42')]=_[_0xefb8('0x40')](_0x4c7f12[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0x4e5d68[_0xefb8('0x3e')]['fields']));_0x511349[_0xefb8('0x42')]=_0x511349['attributes'][_0xefb8('0x50')]?_0x511349[_0xefb8('0x42')]:_0x4c7f12[_0xefb8('0x41')];if(!_0x4e5d68[_0xefb8('0x3e')][_0xefb8('0x44')](_0xefb8('0x45'))){_0x511349[_0xefb8('0x1e')]=qs[_0xefb8('0x1e')](_0x4e5d68[_0xefb8('0x3e')]['limit']);_0x511349[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0x4e5d68[_0xefb8('0x3e')][_0xefb8('0x1c')]);}_0x511349[_0xefb8('0x46')]=qs['sort'](_0x4e5d68[_0xefb8('0x3e')]['sort']);_0x511349[_0xefb8('0x48')]=qs[_0xefb8('0x3f')](_[_0xefb8('0x49')](_0x4e5d68[_0xefb8('0x3e')],_0x4c7f12[_0xefb8('0x3f')]));_0x511349['where'][_0xefb8('0x62')]=_0x5c46d3['id'];if(_0x4e5d68[_0xefb8('0x3e')][_0xefb8('0x2c')]){_0x511349['where']=_[_0xefb8('0x4a')](_0x511349[_0xefb8('0x48')],{'$or':_[_0xefb8('0x3a')](_0x511349['attributes'],function(_0x25b6e3){var _0x282836={};_0x282836[_0x25b6e3]={'$like':'%'+_0x4e5d68[_0xefb8('0x3e')][_0xefb8('0x2c')]+'%'};return _0x282836;})});}_0x511349=_[_0xefb8('0x4a')]({},_0x511349,_0x4e5d68[_0xefb8('0x5c')]);return db[_0xefb8('0x68')]['count']({'where':_0x511349[_0xefb8('0x48')]})[_0xefb8('0x26')](function(_0x57faf2){_0x36d4cc[_0xefb8('0x4c')]=_0x57faf2;if(_0x4e5d68[_0xefb8('0x3e')]['includeAll']){_0x511349[_0xefb8('0x5b')]=[{'all':!![]}];}return db[_0xefb8('0x68')][_0xefb8('0x63')](_0x511349);})[_0xefb8('0x26')](function(_0x2c0ffc){_0x36d4cc[_0xefb8('0x64')]=_0x2c0ffc;return _0x36d4cc;});}})[_0xefb8('0x26')](respondWithFilteredResult(_0xcb1dc4,_0x511349))[_0xefb8('0x4d')](handleError(_0xcb1dc4,null));};exports['getHopperBlacks']=function(_0x26be24,_0x309541,_0x13f329){var _0x2318fe={'raw':!![],'where':{}};var _0x1507a8={};var _0x1633f7={'count':0x0,'rows':[]};return db[_0xefb8('0x3b')][_0xefb8('0x60')]({'where':{'id':_0x26be24[_0xefb8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x309541,null))[_0xefb8('0x26')](function(_0x173b64){if(_0x173b64){_0x1507a8[_0xefb8('0x41')]=_['keys'](db[_0xefb8('0x69')][_0xefb8('0x3c')]);_0x1507a8['query']=_[_0xefb8('0x3d')](_0x26be24[_0xefb8('0x3e')]);_0x1507a8[_0xefb8('0x3f')]=_[_0xefb8('0x40')](_0x1507a8[_0xefb8('0x41')],_0x1507a8['query']);_0x2318fe['attributes']=_[_0xefb8('0x40')](_0x1507a8['model'],qs[_0xefb8('0x43')](_0x26be24[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x2318fe[_0xefb8('0x42')]=_0x2318fe[_0xefb8('0x42')]['length']?_0x2318fe[_0xefb8('0x42')]:_0x1507a8[_0xefb8('0x41')];if(!_0x26be24['query'][_0xefb8('0x44')]('nolimit')){_0x2318fe[_0xefb8('0x1e')]=qs[_0xefb8('0x1e')](_0x26be24['query'][_0xefb8('0x1e')]);_0x2318fe['offset']=qs[_0xefb8('0x1c')](_0x26be24['query'][_0xefb8('0x1c')]);}_0x2318fe[_0xefb8('0x46')]=qs[_0xefb8('0x47')](_0x26be24[_0xefb8('0x3e')][_0xefb8('0x47')]);_0x2318fe[_0xefb8('0x48')]=qs['filters'](_['pick'](_0x26be24[_0xefb8('0x3e')],_0x1507a8[_0xefb8('0x3f')]));_0x2318fe[_0xefb8('0x48')][_0xefb8('0x62')]=_0x173b64['id'];if(_0x26be24['query'][_0xefb8('0x2c')]){_0x2318fe[_0xefb8('0x48')]=_[_0xefb8('0x4a')](_0x2318fe[_0xefb8('0x48')],{'$or':_[_0xefb8('0x3a')](_0x2318fe['attributes'],function(_0x4b737b){var _0x54a3fa={};_0x54a3fa[_0x4b737b]={'$like':'%'+_0x26be24[_0xefb8('0x3e')]['filter']+'%'};return _0x54a3fa;})});}_0x2318fe=_[_0xefb8('0x4a')]({},_0x2318fe,_0x26be24[_0xefb8('0x5c')]);return db[_0xefb8('0x69')][_0xefb8('0x4c')]({'where':_0x2318fe[_0xefb8('0x48')]})['then'](function(_0xced631){_0x1633f7['count']=_0xced631;if(_0x26be24['query'][_0xefb8('0x5a')]){_0x2318fe[_0xefb8('0x5b')]=[{'all':!![]}];}return db[_0xefb8('0x69')][_0xefb8('0x63')](_0x2318fe);})[_0xefb8('0x26')](function(_0x4a084b){_0x1633f7[_0xefb8('0x64')]=_0x4a084b;return _0x1633f7;});}})[_0xefb8('0x26')](respondWithFilteredResult(_0x309541,_0x2318fe))['catch'](handleError(_0x309541,null));};exports[_0xefb8('0x6a')]=function(_0x412ebc,_0x4e7a24,_0x5ee867){var _0x32a3d4={};var _0x28528c={};var _0x5c48b7;var _0x568c06;return db[_0xefb8('0x3b')][_0xefb8('0x60')]({'where':{'id':_0x412ebc[_0xefb8('0x4f')]['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x4e7a24,null))['then'](function(_0x26925a){if(_0x26925a){_0x5c48b7=_0x26925a;_0x28528c[_0xefb8('0x41')]=_[_0xefb8('0x3d')](db['Team'][_0xefb8('0x3c')]);_0x28528c[_0xefb8('0x3e')]=_['keys'](_0x412ebc['query']);_0x28528c[_0xefb8('0x3f')]=_['intersection'](_0x28528c['model'],_0x28528c[_0xefb8('0x3e')]);_0x32a3d4['attributes']=_[_0xefb8('0x40')](_0x28528c['model'],qs[_0xefb8('0x43')](_0x412ebc[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x32a3d4['attributes']=_0x32a3d4[_0xefb8('0x42')][_0xefb8('0x50')]?_0x32a3d4[_0xefb8('0x42')]:_0x28528c[_0xefb8('0x41')];_0x32a3d4[_0xefb8('0x46')]=qs['sort'](_0x412ebc[_0xefb8('0x3e')]['sort']);_0x32a3d4['where']=qs[_0xefb8('0x3f')](_[_0xefb8('0x49')](_0x412ebc[_0xefb8('0x3e')],_0x28528c['filters']));if(_0x412ebc[_0xefb8('0x3e')]['filter']){_0x32a3d4[_0xefb8('0x48')]=_['merge'](_0x32a3d4[_0xefb8('0x48')],{'$or':_[_0xefb8('0x3a')](_0x32a3d4['attributes'],function(_0x34b001){var _0x167f99={};_0x167f99[_0x34b001]={'$like':'%'+_0x412ebc[_0xefb8('0x3e')][_0xefb8('0x2c')]+'%'};return _0x167f99;})});}_0x32a3d4=_['merge']({},_0x32a3d4,_0x412ebc['options']);return _0x5c48b7['getTeams'](_0x32a3d4);}})[_0xefb8('0x26')](function(_0x5a1da9){if(_0x5a1da9){_0x568c06=_0x5a1da9['length'];if(!_0x412ebc[_0xefb8('0x3e')]['hasOwnProperty'](_0xefb8('0x45'))){_0x32a3d4[_0xefb8('0x1e')]=qs[_0xefb8('0x1e')](_0x412ebc[_0xefb8('0x3e')][_0xefb8('0x1e')]);_0x32a3d4[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0x412ebc[_0xefb8('0x3e')][_0xefb8('0x1c')]);}return _0x5c48b7[_0xefb8('0x6a')](_0x32a3d4);}})[_0xefb8('0x26')](function(_0x169961){if(_0x169961){return _0x169961?{'count':_0x568c06,'rows':_0x169961}:null;}})[_0xefb8('0x26')](respondWithResult(_0x4e7a24,null))[_0xefb8('0x4d')](handleError(_0x4e7a24,null));};exports[_0xefb8('0x6b')]=function(_0x44431c,_0xabec55,_0x449258){var _0x3c4916=_0x44431c[_0xefb8('0x52')][_0xefb8('0x6c')];var _0x3735b2=_[_0xefb8('0x3a')](_0x3c4916,'id');return db[_0xefb8('0x6d')]['findAll']({'where':{'id':_0x3735b2},'attributes':['id'],'include':[{'model':db[_0xefb8('0x6e')],'as':_0xefb8('0x6f'),'attributes':['id','name',_0xefb8('0x70'),_0xefb8('0x71'),_0xefb8('0x72')],'raw':!![]}]})['then'](function(_0x8095a6){if(_0x8095a6){var _0x5b615a=_['flatMap'](_0x8095a6,function(_0x384840){var _0x2aa462=_0x384840[_0xefb8('0x27')]({'plain':!![]});_0x2aa462['Agents'][_0xefb8('0x73')](function(_0x463885){_0x463885[_0xefb8('0x74')]=_['find'](_0x3c4916,{'id':_0x2aa462['id']})['penalty'];});return _0x2aa462['Agents'];});return db['VoiceQueue'][_0xefb8('0x30')]({'where':{'id':_0x44431c[_0xefb8('0x4f')]['id']}})[_0xefb8('0x26')](function(_0x4e2371){return db[_0xefb8('0x75')][_0xefb8('0x76')](function(_0x38385a){return _0x4e2371['addTeams'](_0x3735b2,{'transaction':_0x38385a})[_0xefb8('0x26')](function(){return BPromise['each'](_0x3c4916,function(_0x4c73fe){return db[_0xefb8('0x77')][_0xefb8('0x78')]({'TeamId':_0x4c73fe['id'],'VoiceQueueId':_0x44431c[_0xefb8('0x4f')]['id'],'penalty':_0x4c73fe[_0xefb8('0x74')]},{'transaction':_0x38385a});});})[_0xefb8('0x26')](function(){return BPromise['each'](_0x5b615a,function(_0x3e4946){return db[_0xefb8('0x79')]['findOrCreate']({'where':{'UserId':_0x3e4946['id'],'VoiceQueueId':_0x44431c[_0xefb8('0x4f')]['id']},'defaults':{'penalty':_0x3e4946['penalty']},'transaction':_0x38385a});});})[_0xefb8('0x26')](function(){return BPromise[_0xefb8('0x7a')](_['filter'](_0x5b615a,{'online':!![]}),function(_0x2d381d){return db[_0xefb8('0x7b')]['upsert']({'membername':_0x2d381d[_0xefb8('0x32')],'UserId':_0x2d381d['id'],'queue_name':_0x4e2371[_0xefb8('0x32')],'VoiceQueueId':_0x4e2371['id'],'interface':_[_0xefb8('0x7c')](_0x2d381d[_0xefb8('0x72')])?util[_0xefb8('0x7d')](_0xefb8('0x7e'),_0x2d381d['name']):_0x2d381d[_0xefb8('0x72')],'paused':_0x2d381d['voicePause']||![],'penalty':_0x2d381d[_0xefb8('0x74')]},{'transaction':_0x38385a});});})[_0xefb8('0x26')](function(){_0x5b615a[_0xefb8('0x73')](function(_0x162f6d){socket[_0xefb8('0x7f')](_0xefb8('0x80'),{'UserId':_0x162f6d['id'],'VoiceQueueId':_0x4e2371['id']});});});});});}})[_0xefb8('0x26')](respondWithStatusCode(_0xabec55,null))['catch'](handleError(_0xabec55,null));};exports[_0xefb8('0x81')]=function(_0x2a8437,_0x11d683,_0x21b443){return db['Team'][_0xefb8('0x63')]({'where':{'id':_0x2a8437[_0xefb8('0x3e')][_0xefb8('0x82')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xefb8('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xefb8('0x26')](handleEntityNotFound(_0x11d683,null))[_0xefb8('0x26')](function(_0x165790){var _0x412005=_['map'](_0x165790,'id');var _0x32b8e5=[];var _0x117ca4=[];var _0x523fcc=squel[_0xefb8('0x83')]();_0x523fcc['field'](_0xefb8('0x84'))[_0xefb8('0x85')](_0xefb8('0x86'),'tq')['join']('user_has_teams','ut',_0xefb8('0x87'))[_0xefb8('0x48')](_0xefb8('0x88'),_0x2a8437[_0xefb8('0x4f')]['id']);for(var _0x388bc8=0x0;_0x388bc8<_0x165790[_0xefb8('0x50')];_0x388bc8+=0x1){let _0x31ac32=_0x165790[_0x388bc8];for(var _0x2d8c46=0x0;_0x2d8c46<_0x31ac32[_0xefb8('0x6f')][_0xefb8('0x50')];_0x2d8c46+=0x1){let _0xfa9994=_0x31ac32['Agents'][_0x2d8c46];var _0x49d245=_0x523fcc['clone']();_0x49d245[_0xefb8('0x48')](_0xefb8('0x89'),_0xfa9994['id']);_0x117ca4[_0xefb8('0x8a')](db[_0xefb8('0x75')][_0xefb8('0x3e')](_0x49d245['toString'](),{'type':db[_0xefb8('0x75')][_0xefb8('0x8b')][_0xefb8('0x8c')]})[_0xefb8('0x26')](function(_0x352762){if(_0x352762[_0xefb8('0x50')]===0x1){return _0xfa9994['id'];}else{var _0x174abd=_[_0xefb8('0x8d')](_[_0xefb8('0x3a')](_0x352762,_0xefb8('0x8e')),function(_0x149010){return _[_0xefb8('0x2f')](_0x412005,_0x149010);});if(_0x174abd){return _0xfa9994['id'];}}}));}}return BPromise[_0xefb8('0x8f')](_0x117ca4)['then'](function(_0x2b7aaf){_0x32b8e5=_(_0x32b8e5)['union'](_0x2b7aaf)[_0xefb8('0x90')]()[_0xefb8('0x2e')]();return db[_0xefb8('0x3b')][_0xefb8('0x30')]({'where':{'id':_0x2a8437[_0xefb8('0x4f')]['id']}})[_0xefb8('0x26')](function(_0x299bee){return db[_0xefb8('0x75')][_0xefb8('0x76')](function(_0x5f0222){return _0x299bee['removeTeams'](_0x2a8437[_0xefb8('0x3e')]['ids'],{'transaction':_0x5f0222})[_0xefb8('0x26')](function(){if(!_[_0xefb8('0x91')](_0x32b8e5)){return _0x299bee['removeAgents'](_0x32b8e5,{'transaction':_0x5f0222})[_0xefb8('0x26')](function(){return db['UserVoiceQueueRt'][_0xefb8('0x34')]({'where':{'VoiceQueueId':_0x2a8437[_0xefb8('0x4f')]['id'],'UserId':_0x32b8e5},'transaction':_0x5f0222});});}})[_0xefb8('0x26')](function(){_0x32b8e5[_0xefb8('0x73')](function(_0x543a14){socket[_0xefb8('0x7f')](_0xefb8('0x92'),{'UserId':_0x543a14,'VoiceQueueId':_0x299bee['id']});});});});});});})[_0xefb8('0x26')](respondWithStatusCode(_0x11d683,null))[_0xefb8('0x4d')](handleError(_0x11d683,null));};exports['addAgents']=function(_0x122660,_0xf2d5bd,_0x35c80e){var _0x1d160c,_0xf7d054;return db[_0xefb8('0x3b')][_0xefb8('0x30')]({'where':{'id':_0x122660[_0xefb8('0x4f')]['id']}})['then'](handleEntityNotFound(_0xf2d5bd,null))[_0xefb8('0x26')](function(_0x11b49a){if(_0x11b49a){_0xf7d054=_0x11b49a;return _0x11b49a[_0xefb8('0x93')](_0x122660[_0xefb8('0x52')][_0xefb8('0x82')],_[_0xefb8('0x94')](_0x122660['body'],['ids','id'])||{})['spread'](function(_0x18ce62){for(var _0x31af83=0x0;_0x31af83<_0x122660[_0xefb8('0x52')][_0xefb8('0x82')]['length'];_0x31af83+=0x1){socket[_0xefb8('0x7f')](_0xefb8('0x80'),{'UserId':Number(_0x122660[_0xefb8('0x52')][_0xefb8('0x82')][_0x31af83]),'VoiceQueueId':Number(_0x122660[_0xefb8('0x4f')]['id'])});}return _0x18ce62;});}})[_0xefb8('0x26')](function(_0x39b78c){_0x1d160c=_0x39b78c||[];if(_0xf7d054){return db['User'][_0xefb8('0x63')]({'where':{'id':_0x122660['body'][_0xefb8('0x82')]},'attributes':['id',_0xefb8('0x32'),_0xefb8('0x70'),_0xefb8('0x71'),'interface'],'raw':!![]});}})['then'](function(_0x3375da){if(!_[_0xefb8('0x91')](_0x3375da)){var _0x1dedfb=[];for(var _0x58d36a=0x0;_0x58d36a<_0x3375da[_0xefb8('0x50')];_0x58d36a++){if(_0x3375da[_0x58d36a][_0xefb8('0x70')]){_0x1dedfb[_0xefb8('0x8a')](db[_0xefb8('0x7b')][_0xefb8('0x78')]({'membername':_0x3375da[_0x58d36a][_0xefb8('0x32')],'UserId':_0x3375da[_0x58d36a]['id'],'queue_name':_0xf7d054[_0xefb8('0x32')],'VoiceQueueId':_0xf7d054['id'],'interface':_[_0xefb8('0x7c')](_0x3375da[_0x58d36a][_0xefb8('0x72')])?util[_0xefb8('0x7d')](_0xefb8('0x7e'),_0x3375da[_0x58d36a]['name']):_0x3375da[_0x58d36a]['interface'],'paused':_0x3375da[_0x58d36a][_0xefb8('0x71')]||![],'penalty':_0x122660[_0xefb8('0x52')][_0xefb8('0x74')]||0x0}));}}return BPromise[_0xefb8('0x8f')](_0x1dedfb);}})[_0xefb8('0x26')](function(){return _0x1d160c;})['then'](respondWithResult(_0xf2d5bd,null))[_0xefb8('0x4d')](handleError(_0xf2d5bd,null));};exports[_0xefb8('0x95')]=function(_0x585ea0,_0x3d1714,_0x144eb5){return db['VoiceQueue'][_0xefb8('0x30')]({'where':{'id':_0x585ea0[_0xefb8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3d1714,null))[_0xefb8('0x26')](function(_0x3dde83){if(_0x3dde83){return _0x3dde83[_0xefb8('0x95')](_0x585ea0[_0xefb8('0x3e')][_0xefb8('0x82')])['then'](function(){if(_[_0xefb8('0x96')](_0x585ea0[_0xefb8('0x3e')][_0xefb8('0x82')])){for(var _0x5e15ca=0x0;_0x5e15ca<_0x585ea0[_0xefb8('0x3e')]['ids']['length'];_0x5e15ca+=0x1){socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x585ea0['query']['ids'][_0x5e15ca]),'VoiceQueueId':Number(_0x585ea0['params']['id'])});}}else{socket[_0xefb8('0x7f')](_0xefb8('0x92'),{'UserId':Number(_0x585ea0['query'][_0xefb8('0x82')]),'VoiceQueueId':Number(_0x585ea0[_0xefb8('0x4f')]['id'])});}});}})[_0xefb8('0x26')](function(_0x1d6896){return db[_0xefb8('0x7b')][_0xefb8('0x34')]({'where':{'VoiceQueueId':_0x585ea0[_0xefb8('0x4f')]['id'],'UserId':_0x585ea0[_0xefb8('0x3e')]['ids']}})[_0xefb8('0x26')](function(){return _0x1d6896;});})[_0xefb8('0x26')](respondWithStatusCode(_0x3d1714,null))[_0xefb8('0x4d')](handleError(_0x3d1714,null));};exports[_0xefb8('0x97')]=function(_0x2c5898,_0x20a9f1,_0x379dd7){var _0x29303b={};var _0x3458fa={};var _0x449615;var _0x1612c8;return db['VoiceQueue'][_0xefb8('0x60')]({'where':{'id':_0x2c5898['params']['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x20a9f1,null))[_0xefb8('0x26')](function(_0x2833cc){if(_0x2833cc){_0x449615=_0x2833cc;_0x3458fa['model']=_[_0xefb8('0x3d')](db[_0xefb8('0x6e')][_0xefb8('0x3c')]);_0x3458fa['query']=_[_0xefb8('0x3d')](_0x2c5898[_0xefb8('0x3e')]);_0x3458fa[_0xefb8('0x3f')]=_[_0xefb8('0x40')](_0x3458fa[_0xefb8('0x41')],_0x3458fa['query']);_0x29303b['attributes']=_['intersection'](_0x3458fa[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0x2c5898[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x29303b[_0xefb8('0x42')]=_0x29303b[_0xefb8('0x42')][_0xefb8('0x50')]?_0x29303b[_0xefb8('0x42')]:_0x3458fa[_0xefb8('0x41')];_0x29303b[_0xefb8('0x46')]=qs['sort'](_0x2c5898[_0xefb8('0x3e')][_0xefb8('0x47')]);_0x29303b[_0xefb8('0x48')]=qs[_0xefb8('0x3f')](_['pick'](_0x2c5898[_0xefb8('0x3e')],_0x3458fa[_0xefb8('0x3f')]));if(_0x2c5898[_0xefb8('0x3e')][_0xefb8('0x2c')]){_0x29303b[_0xefb8('0x48')]=_['merge'](_0x29303b['where'],{'$or':_[_0xefb8('0x3a')](_0x29303b['attributes'],function(_0x36e751){var _0x5a57f3={};_0x5a57f3[_0x36e751]={'$like':'%'+_0x2c5898[_0xefb8('0x3e')]['filter']+'%'};return _0x5a57f3;})});}_0x29303b=_[_0xefb8('0x4a')]({},_0x29303b,_0x2c5898[_0xefb8('0x5c')]);return _0x449615[_0xefb8('0x97')](_0x29303b);}})[_0xefb8('0x26')](function(_0x307d32){if(_0x307d32){_0x1612c8=_0x307d32[_0xefb8('0x50')];if(!_0x2c5898['query']['hasOwnProperty'](_0xefb8('0x45'))){_0x29303b['limit']=qs[_0xefb8('0x1e')](_0x2c5898[_0xefb8('0x3e')][_0xefb8('0x1e')]);_0x29303b[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0x2c5898['query'][_0xefb8('0x1c')]);}return _0x449615[_0xefb8('0x97')](_0x29303b);}})[_0xefb8('0x26')](function(_0x4ef36c){if(_0x4ef36c){return _0x4ef36c?{'count':_0x1612c8,'rows':_0x4ef36c}:null;}})[_0xefb8('0x26')](respondWithResult(_0x20a9f1,null))[_0xefb8('0x4d')](handleError(_0x20a9f1,null));};exports['getMembers']=function(_0x3ea921,_0x3a98e1,_0x392ada){var _0x575de5={};var _0xb45b64={};var _0x57c38b;var _0x53d1d0;return db[_0xefb8('0x3b')][_0xefb8('0x60')]({'where':{'id':_0x3ea921['params']['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x3a98e1,null))['then'](function(_0x372127){if(_0x372127){_0x57c38b=_0x372127;_0xb45b64[_0xefb8('0x41')]=_[_0xefb8('0x3d')](db['UserVoiceQueueRt'][_0xefb8('0x3c')]);_0xb45b64[_0xefb8('0x3e')]=_[_0xefb8('0x3d')](_0x3ea921[_0xefb8('0x3e')]);_0xb45b64[_0xefb8('0x3f')]=_['intersection'](_0xb45b64[_0xefb8('0x41')],_0xb45b64[_0xefb8('0x3e')]);_0x575de5['attributes']=_[_0xefb8('0x40')](_0xb45b64[_0xefb8('0x41')],qs['fields'](_0x3ea921[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x575de5['attributes']=_0x575de5[_0xefb8('0x42')]['length']?_0x575de5[_0xefb8('0x42')]:_0xb45b64[_0xefb8('0x41')];_0x575de5['order']=qs[_0xefb8('0x47')](_0x3ea921['query'][_0xefb8('0x47')]);_0x575de5[_0xefb8('0x48')]=qs[_0xefb8('0x3f')](_[_0xefb8('0x49')](_0x3ea921[_0xefb8('0x3e')],_0xb45b64[_0xefb8('0x3f')]));if(_0x3ea921[_0xefb8('0x3e')][_0xefb8('0x2c')]){_0x575de5['where']=_['merge'](_0x575de5[_0xefb8('0x48')],{'$or':_[_0xefb8('0x3a')](_0x575de5[_0xefb8('0x42')],function(_0x2c3cab){var _0x5a81cf={};_0x5a81cf[_0x2c3cab]={'$like':'%'+_0x3ea921[_0xefb8('0x3e')]['filter']+'%'};return _0x5a81cf;})});}_0x575de5=_['merge']({},_0x575de5,_0x3ea921[_0xefb8('0x5c')]);return _0x57c38b[_0xefb8('0x98')](_0x575de5);}})[_0xefb8('0x26')](function(_0x1bdb4a){if(_0x1bdb4a){_0x53d1d0=_0x1bdb4a[_0xefb8('0x50')];if(!_0x3ea921['query'][_0xefb8('0x44')](_0xefb8('0x45'))){_0x575de5[_0xefb8('0x1e')]=qs[_0xefb8('0x1e')](_0x3ea921['query']['limit']);_0x575de5[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0x3ea921[_0xefb8('0x3e')][_0xefb8('0x1c')]);}return _0x57c38b[_0xefb8('0x98')](_0x575de5);}})[_0xefb8('0x26')](function(_0x1f756c){return _0x1f756c?{'count':_0x53d1d0,'rows':_0x1f756c}:null;})['then'](respondWithResult(_0x3a98e1,null))[_0xefb8('0x4d')](handleError(_0x3a98e1,null));};exports[_0xefb8('0x99')]=function(_0x435f26,_0x366913,_0x52147b){var _0x3acd08={};var _0x52bdec={};var _0x352634;var _0x43c2f4;return db[_0xefb8('0x3b')][_0xefb8('0x60')]({'where':{'id':_0x435f26[_0xefb8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x366913,null))[_0xefb8('0x26')](function(_0x29957f){if(_0x29957f){_0x352634=_0x29957f;_0x52bdec['model']=_['keys'](db[_0xefb8('0x9a')][_0xefb8('0x3c')]);_0x52bdec[_0xefb8('0x3e')]=_[_0xefb8('0x3d')](_0x435f26[_0xefb8('0x3e')]);_0x52bdec[_0xefb8('0x3f')]=_[_0xefb8('0x40')](_0x52bdec[_0xefb8('0x41')],_0x52bdec[_0xefb8('0x3e')]);_0x3acd08[_0xefb8('0x42')]=_[_0xefb8('0x40')](_0x52bdec[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0x435f26[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x3acd08[_0xefb8('0x42')]=_0x3acd08[_0xefb8('0x42')]['length']?_0x3acd08['attributes']:_0x52bdec[_0xefb8('0x41')];_0x3acd08['order']=qs['sort'](_0x435f26[_0xefb8('0x3e')][_0xefb8('0x47')]);_0x3acd08['where']=qs[_0xefb8('0x3f')](_[_0xefb8('0x49')](_0x435f26[_0xefb8('0x3e')],_0x52bdec[_0xefb8('0x3f')]));if(_0x435f26['query'][_0xefb8('0x2c')]){_0x3acd08['where']=_[_0xefb8('0x4a')](_0x3acd08['where'],{'$or':_['map'](_0x3acd08[_0xefb8('0x42')],function(_0x397be0){var _0x1d7705={};_0x1d7705[_0x397be0]={'$like':'%'+_0x435f26[_0xefb8('0x3e')][_0xefb8('0x2c')]+'%'};return _0x1d7705;})});}_0x3acd08=_[_0xefb8('0x4a')]({},_0x3acd08,_0x435f26[_0xefb8('0x5c')]);return _0x352634['getLists'](_0x3acd08);}})['then'](function(_0xa232f1){if(_0xa232f1){_0x43c2f4=_0xa232f1[_0xefb8('0x50')];if(!_0x435f26[_0xefb8('0x3e')][_0xefb8('0x44')](_0xefb8('0x45'))){_0x3acd08[_0xefb8('0x1e')]=qs[_0xefb8('0x1e')](_0x435f26['query']['limit']);_0x3acd08[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0x435f26['query'][_0xefb8('0x1c')]);}return _0x352634[_0xefb8('0x99')](_0x3acd08);}})[_0xefb8('0x26')](function(_0x584b1e){if(_0x584b1e){return _0x584b1e?{'count':_0x43c2f4,'rows':_0x584b1e}:null;}})[_0xefb8('0x26')](respondWithResult(_0x366913,null))['catch'](handleError(_0x366913,null));};exports[_0xefb8('0x9b')]=function(_0x36ec6e,_0x132017,_0x58b217){var _0x2cfe53,_0x5a571b;return db[_0xefb8('0x3b')][_0xefb8('0x30')]({'where':{'id':_0x36ec6e[_0xefb8('0x4f')]['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x132017,null))['then'](function(_0x223cd1){if(_0x223cd1){_0x5a571b=_0x223cd1;return _0x223cd1['addLists'](_0x36ec6e[_0xefb8('0x52')]['ids'],_[_0xefb8('0x94')](_0x36ec6e[_0xefb8('0x52')],[_0xefb8('0x82'),'id'])||{});}return null;})['spread'](function(_0x1e8cf6){var _0x27ac1d;_0x2cfe53=_0x1e8cf6||[];var _0x3b6b1b=[];if(_0x1e8cf6){for(var _0x28e37f=0x0;_0x28e37f<_0x1e8cf6[_0xefb8('0x50')];_0x28e37f+=0x1){var _0x310bc5=_0x1e8cf6[_0x28e37f][_0xefb8('0x27')]({'plain':!![]});_0x5a571b['dialCheckDuplicateType']=_0x36ec6e[_0xefb8('0x52')][_0xefb8('0x9c')]?_0x36ec6e[_0xefb8('0x52')][_0xefb8('0x9c')]:_0x5a571b[_0xefb8('0x9c')];switch(_0x5a571b['dialCheckDuplicateType']){case _0xefb8('0x9d'):_0x27ac1d=squel[_0xefb8('0x9e')]()[_0xefb8('0x9f')](_0xefb8('0xa0'))[_0xefb8('0xa1')]([_0xefb8('0xa2'),_0xefb8('0xa3'),_0xefb8('0xa4'),'ListId',_0xefb8('0x62'),'createdAt',_0xefb8('0x5e')],squel[_0xefb8('0x83')]()['field'](_0xefb8('0xa2'),_0xefb8('0xa2'))[_0xefb8('0xa5')](_0xefb8('0xa6'),'scheduledAt')[_0xefb8('0xa5')]('id',_0xefb8('0xa4'))[_0xefb8('0xa5')](_0x310bc5[_0xefb8('0xa7')]['toString'](),_0xefb8('0xa8'))[_0xefb8('0xa5')](_0x36ec6e[_0xefb8('0x4f')]['id']['toString'](),'VoiceQueueId')['field'](_0xefb8('0xa6'),_0xefb8('0x5d'))[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0x5e'))[_0xefb8('0x85')]('cm_contacts')[_0xefb8('0x48')](_0xefb8('0xa9'))[_0xefb8('0x48')]('ListId\x20=\x20?',_0x310bc5[_0xefb8('0xa7')][_0xefb8('0xaa')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0xefb8('0x48')](_0xefb8('0xab'),squel['select']()['field']('COALESCE(calleridnum,\x27\x27)')[_0xefb8('0x85')](_0xefb8('0xac'))[_0xefb8('0x48')](_0xefb8('0x88'),_0x36ec6e['params']['id'][_0xefb8('0xaa')]()))[_0xefb8('0x48')]('phone\x20NOT\x20IN\x20(?)',squel[_0xefb8('0x83')]()['field'](_0xefb8('0xad'))[_0xefb8('0x85')](_0xefb8('0xa0'))[_0xefb8('0x48')](_0xefb8('0x88'),_0x36ec6e[_0xefb8('0x4f')]['id'][_0xefb8('0xaa')]())))[_0xefb8('0xaa')]();break;case _0xefb8('0xae'):_0x27ac1d=squel[_0xefb8('0x9e')]()[_0xefb8('0x9f')](_0xefb8('0xa0'))['fromQuery']([_0xefb8('0xa2'),'scheduledAt','ContactId',_0xefb8('0xa8'),_0xefb8('0x62'),'createdAt',_0xefb8('0x5e')],squel[_0xefb8('0x83')]()['field']('phone',_0xefb8('0xa2'))[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0xa3'))[_0xefb8('0xa5')]('id',_0xefb8('0xa4'))[_0xefb8('0xa5')](_0x310bc5['CmListId']['toString'](),'ListId')[_0xefb8('0xa5')](_0x36ec6e[_0xefb8('0x4f')]['id'][_0xefb8('0xaa')](),'VoiceQueueId')[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0x5d'))[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0x5e'))['from']('cm_contacts')[_0xefb8('0x48')](_0xefb8('0xa9'))[_0xefb8('0x48')]('ListId\x20=\x20?',_0x310bc5[_0xefb8('0xa7')][_0xefb8('0xaa')]())['where'](_0xefb8('0xaf'))[_0xefb8('0x48')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0xefb8('0xad'))[_0xefb8('0x85')]('cm_hopper')[_0xefb8('0x48')]('VoiceQueueId\x20=\x20?',_0x36ec6e[_0xefb8('0x4f')]['id'][_0xefb8('0xaa')]())))[_0xefb8('0xaa')]();break;default:_0x27ac1d=squel[_0xefb8('0x9e')]()[_0xefb8('0x9f')](_0xefb8('0xa0'))[_0xefb8('0xa1')](['phone',_0xefb8('0xa3'),_0xefb8('0xa4'),_0xefb8('0xa8'),'VoiceQueueId',_0xefb8('0x5d'),_0xefb8('0x5e')],squel['select']()[_0xefb8('0xa5')](_0xefb8('0xa2'),_0xefb8('0xa2'))[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0xa3'))['field']('id',_0xefb8('0xa4'))['field'](_0x310bc5[_0xefb8('0xa7')][_0xefb8('0xaa')](),_0xefb8('0xa8'))[_0xefb8('0xa5')](_0x36ec6e[_0xefb8('0x4f')]['id'][_0xefb8('0xaa')](),'VoiceQueueId')[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0x5d'))[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0x5e'))[_0xefb8('0x85')](_0xefb8('0xb0'))[_0xefb8('0x48')](_0xefb8('0xa9'))[_0xefb8('0x48')](_0xefb8('0xb1'),_0x310bc5['CmListId']['toString']())[_0xefb8('0x48')](_0xefb8('0xaf')))[_0xefb8('0xaa')]();}_0x3b6b1b[_0xefb8('0x8a')](db['sequelize'][_0xefb8('0x3e')](_0x27ac1d));}return BPromise['all'](_0x3b6b1b);}})[_0xefb8('0x26')](function(){return _0x2cfe53;})[_0xefb8('0x26')](respondWithResult(_0x132017,null))['catch'](handleError(_0x132017,null));};exports[_0xefb8('0xb2')]=function(_0x41da77,_0x3cada9,_0x54fad7){return db[_0xefb8('0x3b')]['find']({'where':{'id':_0x41da77['params']['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x3cada9,null))[_0xefb8('0x26')](function(_0x55b863){if(_0x55b863){return _0x55b863[_0xefb8('0xb2')](_0x41da77[_0xefb8('0x3e')][_0xefb8('0x82')]);}})[_0xefb8('0x26')](function(_0x5582a6){if(_0x5582a6){return db[_0xefb8('0x61')][_0xefb8('0x34')]({'where':{'ListId':_0x41da77[_0xefb8('0x3e')][_0xefb8('0x82')],'VoiceQueueId':_0x41da77['params']['id']}})[_0xefb8('0x26')](function(){return _0x5582a6;});}})[_0xefb8('0x26')](respondWithStatusCode(_0x3cada9,null))['catch'](handleError(_0x3cada9,null));};exports[_0xefb8('0xb3')]=function(_0x40f3e8,_0x4b5883,_0x5d3470){var _0x25dd92={};var _0x140e3a={};var _0x362f95;var _0x1f639d;return db[_0xefb8('0x3b')][_0xefb8('0x60')]({'where':{'id':_0x40f3e8['params']['id']}})['then'](handleEntityNotFound(_0x4b5883,null))[_0xefb8('0x26')](function(_0x4534d7){if(_0x4534d7){_0x362f95=_0x4534d7;_0x140e3a[_0xefb8('0x41')]=_['keys'](db[_0xefb8('0x9a')]['rawAttributes']);_0x140e3a[_0xefb8('0x3e')]=_['keys'](_0x40f3e8['query']);_0x140e3a[_0xefb8('0x3f')]=_[_0xefb8('0x40')](_0x140e3a[_0xefb8('0x41')],_0x140e3a[_0xefb8('0x3e')]);_0x25dd92[_0xefb8('0x42')]=_[_0xefb8('0x40')](_0x140e3a[_0xefb8('0x41')],qs[_0xefb8('0x43')](_0x40f3e8[_0xefb8('0x3e')][_0xefb8('0x43')]));_0x25dd92[_0xefb8('0x42')]=_0x25dd92[_0xefb8('0x42')][_0xefb8('0x50')]?_0x25dd92[_0xefb8('0x42')]:_0x140e3a[_0xefb8('0x41')];_0x25dd92[_0xefb8('0x46')]=qs[_0xefb8('0x47')](_0x40f3e8['query']['sort']);_0x25dd92[_0xefb8('0x48')]=qs[_0xefb8('0x3f')](_[_0xefb8('0x49')](_0x40f3e8[_0xefb8('0x3e')],_0x140e3a['filters']));if(_0x40f3e8[_0xefb8('0x3e')]['filter']){_0x25dd92[_0xefb8('0x48')]=_['merge'](_0x25dd92[_0xefb8('0x48')],{'$or':_[_0xefb8('0x3a')](_0x25dd92[_0xefb8('0x42')],function(_0x4ff0f3){var _0x27a3d3={};_0x27a3d3[_0x4ff0f3]={'$like':'%'+_0x40f3e8[_0xefb8('0x3e')][_0xefb8('0x2c')]+'%'};return _0x27a3d3;})});}_0x25dd92=_[_0xefb8('0x4a')]({},_0x25dd92,_0x40f3e8[_0xefb8('0x5c')]);return _0x362f95[_0xefb8('0xb3')](_0x25dd92);}})[_0xefb8('0x26')](function(_0x21d77f){if(_0x21d77f){_0x1f639d=_0x21d77f['length'];if(!_0x40f3e8[_0xefb8('0x3e')]['hasOwnProperty'](_0xefb8('0x45'))){_0x25dd92['limit']=qs['limit'](_0x40f3e8['query']['limit']);_0x25dd92[_0xefb8('0x1c')]=qs[_0xefb8('0x1c')](_0x40f3e8[_0xefb8('0x3e')][_0xefb8('0x1c')]);}return _0x362f95['getBlackLists'](_0x25dd92);}})[_0xefb8('0x26')](function(_0x5b42ee){if(_0x5b42ee){return _0x5b42ee?{'count':_0x1f639d,'rows':_0x5b42ee}:null;}})[_0xefb8('0x26')](respondWithResult(_0x4b5883,null))[_0xefb8('0x4d')](handleError(_0x4b5883,null));};exports[_0xefb8('0xb4')]=function(_0x32f2a6,_0x78ed39,_0x470af0){var _0xbc94f5,_0x12a150;return db[_0xefb8('0x3b')][_0xefb8('0x30')]({'where':{'id':_0x32f2a6[_0xefb8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x78ed39,null))[_0xefb8('0x26')](function(_0x1b87d9){if(_0x1b87d9){_0x12a150=_0x1b87d9;return _0x1b87d9['addBlackLists'](_0x32f2a6[_0xefb8('0x52')]['ids'],_[_0xefb8('0x94')](_0x32f2a6[_0xefb8('0x52')],[_0xefb8('0x82'),'id'])||{});}return null;})['spread'](function(_0x2043dc){var _0x156e0e;_0xbc94f5=_0x2043dc||[];var _0x327772=[];if(_0x2043dc){for(var _0x227eb7=0x0;_0x227eb7<_0x2043dc[_0xefb8('0x50')];_0x227eb7+=0x1){var _0x189047=_0x2043dc[_0x227eb7]['get']({'plain':!![]});_0x156e0e=squel[_0xefb8('0x9e')]()[_0xefb8('0x9f')]('cm_hopper_black')['fromQuery']([_0xefb8('0xa2'),'ContactId',_0xefb8('0xa8'),_0xefb8('0x62'),_0xefb8('0x5d'),'updatedAt'],squel[_0xefb8('0x83')]()[_0xefb8('0xa5')](_0xefb8('0xa2'),_0xefb8('0xa2'))['field']('id',_0xefb8('0xa4'))['field'](_0x189047[_0xefb8('0xa7')][_0xefb8('0xaa')](),_0xefb8('0xa8'))[_0xefb8('0xa5')](_0x32f2a6[_0xefb8('0x4f')]['id'][_0xefb8('0xaa')](),_0xefb8('0x62'))[_0xefb8('0xa5')](_0xefb8('0xa6'),_0xefb8('0x5d'))['field'](_0xefb8('0xa6'),'updatedAt')[_0xefb8('0x85')]('cm_contacts')[_0xefb8('0x48')](_0xefb8('0xa9'))['where'](_0xefb8('0xb1'),_0x189047[_0xefb8('0xa7')][_0xefb8('0xaa')]())[_0xefb8('0x48')](_0xefb8('0xaf')))[_0xefb8('0xaa')]();_0x327772[_0xefb8('0x8a')](db['sequelize'][_0xefb8('0x3e')](_0x156e0e));}return BPromise[_0xefb8('0x8f')](_0x327772);}})[_0xefb8('0x26')](function(){return _0xbc94f5;})[_0xefb8('0x26')](respondWithResult(_0x78ed39,null))[_0xefb8('0x4d')](handleError(_0x78ed39,null));};exports[_0xefb8('0xb5')]=function(_0x324392,_0x5925f4,_0x1a987b){return db[_0xefb8('0x3b')][_0xefb8('0x30')]({'where':{'id':_0x324392[_0xefb8('0x4f')]['id']}})[_0xefb8('0x26')](handleEntityNotFound(_0x5925f4,null))[_0xefb8('0x26')](function(_0x31a516){if(_0x31a516){return _0x31a516[_0xefb8('0xb5')](_0x324392['query'][_0xefb8('0x82')]);}})[_0xefb8('0x26')](function(_0x501c9e){if(_0x501c9e){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x324392[_0xefb8('0x3e')]['ids'],'VoiceQueueId':_0x324392['params']['id']}})[_0xefb8('0x26')](function(){return _0x501c9e;});}})[_0xefb8('0x26')](respondWithStatusCode(_0x5925f4,null))[_0xefb8('0x4d')](handleError(_0x5925f4,null));};
\ No newline at end of file
+var _0x4c43=['body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','outbound','UserProfileSection','autoAssociation','error','clone','params','rawAttributes','omit','createdAt','updatedAt','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getHoppers','CmHopper','getHopperHistories','findOne','CmHopperHistory','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','User','Agents','online','voicePause','interface','flatMap','forEach','sequelize','upsert','penalty','each','UserVoiceQueueRt','isNil','format','emit','userVoiceQueue:save','select','field','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','compact','transaction','removeTeams','ids','isEmpty','userVoiceQueue:remove','addAgents','spread','SIP/%s','removeAgents','isArray','getAgents','getMembers','CmList','getLists','dialCheckDuplicateType','always','into','cm_hopper','scheduledAt','phone','ContactId','CmListId','toString','ListId','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','fromQuery','all','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','end','status','json','undefined','count','offset','set','Content-Range','save','then','get','VoiceQueues','inbound','QueueCampaigns','ignore','value','find','name','destroy','sendStatus','stack','send','VoiceQueue','fieldName','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','create'];(function(_0xb77eca,_0x18fe7a){var _0x127a4c=function(_0x599615){while(--_0x599615){_0xb77eca['push'](_0xb77eca['shift']());}};_0x127a4c(++_0x18fe7a);}(_0x4c43,0x67));var _0x34c4=function(_0x205b01,_0x2b034c){_0x205b01=_0x205b01-0x0;var _0x3f84f5=_0x4c43[_0x205b01];return _0x3f84f5;};'use strict';var emlformat=require(_0x34c4('0x0'));var rimraf=require(_0x34c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x34c4('0x2'));var rp=require(_0x34c4('0x3'));var moment=require(_0x34c4('0x4'));var BPromise=require(_0x34c4('0x5'));var Mustache=require(_0x34c4('0x6'));var util=require(_0x34c4('0x7'));var path=require(_0x34c4('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x34c4('0x9'));var _=require(_0x34c4('0xa'));var squel=require(_0x34c4('0xb'));var crypto=require(_0x34c4('0xc'));var jsforce=require(_0x34c4('0xd'));var deskjs=require(_0x34c4('0xe'));var toCsv=require(_0x34c4('0xf'));var querystring=require(_0x34c4('0x10'));var Papa=require(_0x34c4('0x11'));var Redis=require(_0x34c4('0x12'));var authService=require(_0x34c4('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x34c4('0x14'));var logger=require(_0x34c4('0x15'))(_0x34c4('0x16'));var utils=require(_0x34c4('0x17'));var config=require(_0x34c4('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x34c4('0x19'))['db'];config[_0x34c4('0x1a')]=_['defaults'](config[_0x34c4('0x1a')],{'host':_0x34c4('0x1b'),'port':0x18eb});var socket=require(_0x34c4('0x1c'))(new Redis(config[_0x34c4('0x1a')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x333ff9,_0x4ea2eb){_0x4ea2eb=_0x4ea2eb||0xcc;return function(_0x326107){if(_0x326107){return _0x333ff9['sendStatus'](_0x4ea2eb);}return _0x333ff9['status'](_0x4ea2eb)[_0x34c4('0x1d')]();};}function respondWithResult(_0x5e1702,_0x40bcaa){_0x40bcaa=_0x40bcaa||0xc8;return function(_0x308b62){if(_0x308b62){return _0x5e1702[_0x34c4('0x1e')](_0x40bcaa)[_0x34c4('0x1f')](_0x308b62);}};}function respondWithFilteredResult(_0x3617ce,_0x227b47){return function(_0x135011){if(_0x135011){var _0x1d9ca7=typeof _0x227b47['offset']===_0x34c4('0x20')&&typeof _0x227b47['limit']===_0x34c4('0x20');var _0x4e03b2=_0x135011[_0x34c4('0x21')];var _0x395e4f=_0x1d9ca7?0x0:_0x227b47[_0x34c4('0x22')];var _0xfce78f=_0x1d9ca7?_0x135011[_0x34c4('0x21')]:_0x227b47[_0x34c4('0x22')]+_0x227b47['limit'];var _0x4d5b40;if(_0xfce78f>=_0x4e03b2){_0xfce78f=_0x4e03b2;_0x4d5b40=0xc8;}else{_0x4d5b40=0xce;}_0x3617ce['status'](_0x4d5b40);return _0x3617ce[_0x34c4('0x23')](_0x34c4('0x24'),_0x395e4f+'-'+_0xfce78f+'/'+_0x4e03b2)['json'](_0x135011);}return null;};}function patchUpdates(_0x4150f4){return function(_0x440750){try{jsonpatch['apply'](_0x440750,_0x4150f4,!![]);}catch(_0x46c476){return BPromise['reject'](_0x46c476);}return _0x440750[_0x34c4('0x25')]();};}function saveUpdates(_0x4e0751,_0xe216d4){return function(_0x38cb64){if(_0x38cb64){return _0x38cb64['update'](_0x4e0751)['then'](function(_0x22417f){return _0x22417f;});}return null;};}function removeEntity(_0x590b75,_0x4e95d3){return function(_0x32d47){if(_0x32d47){return _0x32d47['destroy']()[_0x34c4('0x26')](function(){var _0x7f8bf4=_0x32d47[_0x34c4('0x27')]({'plain':!![]});var _0x557d51=[{'name':_0x34c4('0x28'),'value':_0x34c4('0x29'),'ignore':![]},{'name':_0x34c4('0x2a'),'value':'outbound','ignore':![]}];var _0x4ba12b=_(_0x557d51)['filter'](_0x34c4('0x2b'))['map'](_0x34c4('0x2c'))[_0x34c4('0x2c')]();if(_['includes'](_0x4ba12b,_0x7f8bf4['type'])){return;}var _0x14dca2=_[_0x34c4('0x2d')](_0x557d51,['value',_0x7f8bf4['type']])[_0x34c4('0x2e')];return db['UserProfileResource'][_0x34c4('0x2f')]({'where':{'type':_0x14dca2,'resourceId':_0x7f8bf4['id']}})[_0x34c4('0x26')](function(){return _0x32d47;});})['then'](function(){_0x590b75[_0x34c4('0x1e')](0xcc)[_0x34c4('0x1d')]();});}};}function handleEntityNotFound(_0x3511ca,_0x526197){return function(_0xb2d5e){if(!_0xb2d5e){_0x3511ca[_0x34c4('0x30')](0x194);}return _0xb2d5e;};}function handleError(_0x1dd872,_0x223584){_0x223584=_0x223584||0x1f4;return function(_0x5211cd){logger['error'](_0x5211cd[_0x34c4('0x31')]);if(_0x5211cd[_0x34c4('0x2e')]){delete _0x5211cd[_0x34c4('0x2e')];}_0x1dd872[_0x34c4('0x1e')](_0x223584)[_0x34c4('0x32')](_0x5211cd);};}exports['index']=function(_0x570a86,_0x488be7){var _0xc5daa2={},_0x405c03={},_0x196c85={'count':0x0,'rows':[]};var _0x2efe91=_['map'](db[_0x34c4('0x33')]['rawAttributes'],function(_0x1731e7){return{'name':_0x1731e7[_0x34c4('0x34')],'type':_0x1731e7['type'][_0x34c4('0x35')]};});_0x405c03['model']=_[_0x34c4('0x36')](_0x2efe91,_0x34c4('0x2e'));_0x405c03[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x570a86['query']);_0x405c03[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x405c03[_0x34c4('0x3b')],_0x405c03[_0x34c4('0x37')]);_0xc5daa2[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0x405c03[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x570a86[_0x34c4('0x37')][_0x34c4('0x3d')]));_0xc5daa2[_0x34c4('0x3c')]=_0xc5daa2[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0xc5daa2[_0x34c4('0x3c')]:_0x405c03['model'];if(!_0x570a86[_0x34c4('0x37')][_0x34c4('0x3f')](_0x34c4('0x40'))){_0xc5daa2['limit']=qs[_0x34c4('0x41')](_0x570a86[_0x34c4('0x37')]['limit']);_0xc5daa2[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x570a86[_0x34c4('0x37')]['offset']);}_0xc5daa2[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x570a86[_0x34c4('0x37')][_0x34c4('0x43')]);_0xc5daa2[_0x34c4('0x44')]=qs['filters'](_[_0x34c4('0x45')](_0x570a86[_0x34c4('0x37')],_0x405c03['filters']),_0x2efe91);if(_0x570a86[_0x34c4('0x37')]['filter']){_0xc5daa2[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0xc5daa2[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x2efe91,function(_0x2013db){if(_0x2013db[_0x34c4('0x47')]!==_0x34c4('0x48')){var _0x1a447f={};_0x1a447f[_0x2013db[_0x34c4('0x2e')]]={'$like':'%'+_0x570a86[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x1a447f;}})});}_0xc5daa2=_[_0x34c4('0x46')]({},_0xc5daa2,_0x570a86[_0x34c4('0x4a')]);var _0x1c21ef={'where':_0xc5daa2[_0x34c4('0x44')]};return db[_0x34c4('0x33')][_0x34c4('0x21')](_0x1c21ef)[_0x34c4('0x26')](function(_0x5cb4d6){_0x196c85[_0x34c4('0x21')]=_0x5cb4d6;if(_0x570a86[_0x34c4('0x37')][_0x34c4('0x4b')]){_0xc5daa2[_0x34c4('0x4c')]=[{'all':!![]}];}return db['VoiceQueue'][_0x34c4('0x4d')](_0xc5daa2);})[_0x34c4('0x26')](function(_0x479f18){_0x196c85[_0x34c4('0x4e')]=_0x479f18;return _0x196c85;})[_0x34c4('0x26')](respondWithFilteredResult(_0x488be7,_0xc5daa2))[_0x34c4('0x4f')](handleError(_0x488be7,null));};exports['show']=function(_0x18c831,_0x541f53){var _0x1c808c={'raw':![],'where':{'id':_0x18c831['params']['id']}},_0x2f0fc2={};_0x2f0fc2[_0x34c4('0x3b')]=_['keys'](db[_0x34c4('0x33')]['rawAttributes']);_0x2f0fc2[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x18c831[_0x34c4('0x37')]);_0x2f0fc2[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x2f0fc2[_0x34c4('0x3b')],_0x2f0fc2[_0x34c4('0x37')]);_0x1c808c[_0x34c4('0x3c')]=_['intersection'](_0x2f0fc2[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x18c831[_0x34c4('0x37')]['fields']));_0x1c808c['attributes']=_0x1c808c[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x1c808c[_0x34c4('0x3c')]:_0x2f0fc2[_0x34c4('0x3b')];if(_0x18c831['query'][_0x34c4('0x4b')]){_0x1c808c[_0x34c4('0x4c')]=[{'all':!![]}];}_0x1c808c=_[_0x34c4('0x46')]({},_0x1c808c,_0x18c831[_0x34c4('0x4a')]);return db[_0x34c4('0x33')][_0x34c4('0x2d')](_0x1c808c)['then'](handleEntityNotFound(_0x541f53,null))[_0x34c4('0x26')](respondWithResult(_0x541f53,null))[_0x34c4('0x4f')](handleError(_0x541f53,null));};exports['create']=function(_0x5afa32,_0x34f1cf){return db['VoiceQueue'][_0x34c4('0x50')](_0x5afa32[_0x34c4('0x51')],{})[_0x34c4('0x26')](function(_0x46bc97){var _0x2d75ad=_0x5afa32['user'][_0x34c4('0x27')]({'plain':!![]});if(!_0x2d75ad)throw new Error(_0x34c4('0x52'));if(_0x2d75ad[_0x34c4('0x53')]===_0x34c4('0x54')){var _0x2f447d=_0x46bc97['get']({'plain':!![]});var _0x42ff13=[{'name':_0x34c4('0x28'),'value':_0x34c4('0x29')},{'name':_0x34c4('0x2a'),'value':_0x34c4('0x55')}];var _0x3e038f=_[_0x34c4('0x2d')](_0x42ff13,['value',_0x2f447d[_0x34c4('0x47')]])['name'];return db[_0x34c4('0x56')][_0x34c4('0x2d')]({'where':{'name':_0x3e038f,'userProfileId':_0x2d75ad['userProfileId']},'raw':!![]})[_0x34c4('0x26')](function(_0x90eb69){if(_0x90eb69&&_0x90eb69[_0x34c4('0x57')]===0x0){return db['UserProfileResource'][_0x34c4('0x50')]({'name':_0x2f447d[_0x34c4('0x2e')],'resourceId':_0x2f447d['id'],'type':_0x90eb69[_0x34c4('0x2e')],'sectionId':_0x90eb69['id']},{})['then'](function(){return _0x46bc97;});}else{return _0x46bc97;}})['catch'](function(_0x2c9006){logger[_0x34c4('0x58')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c9006);throw _0x2c9006;});}return _0x46bc97;})[_0x34c4('0x26')](respondWithResult(_0x34f1cf,0xc9))[_0x34c4('0x4f')](handleError(_0x34f1cf,null));};exports[_0x34c4('0x59')]=function(_0x412880,_0x5b0a94){var _0x421691={'where':{'id':_0x412880[_0x34c4('0x5a')]['id']}},_0x569df9={};_0x569df9['model']=_[_0x34c4('0x38')](db[_0x34c4('0x33')][_0x34c4('0x5b')]);_0x421691[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0x569df9['model'],qs[_0x34c4('0x3d')](_0x412880[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x421691[_0x34c4('0x3c')]=_0x421691[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x421691[_0x34c4('0x3c')]:_0x569df9[_0x34c4('0x3b')];if(_0x412880['query']['includeAll']){_0x421691[_0x34c4('0x4c')]=[{'all':!![]}];}_0x421691=_[_0x34c4('0x46')]({},_0x421691,_0x412880[_0x34c4('0x4a')]);return db[_0x34c4('0x33')][_0x34c4('0x2d')](_0x421691)[_0x34c4('0x26')](handleEntityNotFound(_0x5b0a94,null))['then'](function(_0x2b7a60){if(_0x2b7a60){var _0x12f50a=_0x2b7a60['get']({'plain':!![]});_0x12f50a=qs[_0x34c4('0x5c')](_0x12f50a,['id',_0x34c4('0x5d'),_0x34c4('0x5e')]);_0x412880['body']=_[_0x34c4('0x5c')](_0x412880['body'],['id',_0x34c4('0x5d'),_0x34c4('0x5e')]);return db[_0x34c4('0x33')]['create'](_[_0x34c4('0x46')](_0x12f50a,_0x412880['body']),{'include':_0x412880['query'][_0x34c4('0x4b')]?[{'all':!![]}]:undefined})[_0x34c4('0x26')](function(_0x54556a){var _0x300317=_0x412880[_0x34c4('0x54')][_0x34c4('0x27')]({'plain':!![]});if(!_0x300317)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x300317[_0x34c4('0x53')]===_0x34c4('0x54')){var _0x3fcc01=_0x54556a[_0x34c4('0x27')]({'plain':!![]});var _0x18fcc0=[{'name':_0x34c4('0x28'),'value':_0x34c4('0x29')},{'name':_0x34c4('0x2a'),'value':'outbound'}];var _0xbf3c27=_[_0x34c4('0x2d')](_0x18fcc0,[_0x34c4('0x2c'),_0x3fcc01[_0x34c4('0x47')]])['name'];return db[_0x34c4('0x56')]['find']({'where':{'name':_0xbf3c27,'userProfileId':_0x300317[_0x34c4('0x5f')]},'raw':!![]})[_0x34c4('0x26')](function(_0x12c45f){if(_0x12c45f&&_0x12c45f['autoAssociation']===0x0){return db[_0x34c4('0x60')][_0x34c4('0x50')]({'name':_0x3fcc01[_0x34c4('0x2e')],'resourceId':_0x3fcc01['id'],'type':_0x12c45f[_0x34c4('0x2e')],'sectionId':_0x12c45f['id']},{})[_0x34c4('0x26')](function(){return _0x54556a;});}else{return _0x54556a;}})[_0x34c4('0x4f')](function(_0x2fa282){logger[_0x34c4('0x58')](_0x34c4('0x61'),_0x2fa282);throw _0x2fa282;});}return _0x54556a;});}})[_0x34c4('0x26')](respondWithResult(_0x5b0a94,0xc9))[_0x34c4('0x4f')](handleError(_0x5b0a94,null));};exports[_0x34c4('0x62')]=function(_0x28b93a,_0x146f58){if(_0x28b93a[_0x34c4('0x51')]['id']){delete _0x28b93a[_0x34c4('0x51')]['id'];}return db['VoiceQueue'][_0x34c4('0x2d')]({'where':{'id':_0x28b93a[_0x34c4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x146f58,null))[_0x34c4('0x26')](saveUpdates(_0x28b93a[_0x34c4('0x51')],null))[_0x34c4('0x26')](respondWithResult(_0x146f58,null))[_0x34c4('0x4f')](handleError(_0x146f58,null));};exports[_0x34c4('0x2f')]=function(_0x270dc2,_0x345fcc){return db['VoiceQueue']['find']({'where':{'id':_0x270dc2['params']['id']}})['then'](handleEntityNotFound(_0x345fcc,null))['then'](removeEntity(_0x345fcc,null))[_0x34c4('0x4f')](handleError(_0x345fcc,null));};exports[_0x34c4('0x63')]=function(_0x5605ce,_0x56a0cc,_0x1bf5f9){var _0x1a0983={'raw':![],'where':{}};var _0x2ccbb7={};var _0x253696={'count':0x0,'rows':[]};return db[_0x34c4('0x33')]['findOne']({'where':{'id':_0x5605ce[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x56a0cc,null))[_0x34c4('0x26')](function(_0x59904c){if(_0x59904c){_0x2ccbb7['model']=_['keys'](db[_0x34c4('0x64')][_0x34c4('0x5b')]);_0x2ccbb7[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x5605ce[_0x34c4('0x37')]);_0x2ccbb7[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x2ccbb7[_0x34c4('0x3b')],_0x2ccbb7[_0x34c4('0x37')]);_0x1a0983[_0x34c4('0x3c')]=_['intersection'](_0x2ccbb7[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x5605ce[_0x34c4('0x37')]['fields']));_0x1a0983[_0x34c4('0x3c')]=_0x1a0983[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x1a0983['attributes']:_0x2ccbb7[_0x34c4('0x3b')];if(!_0x5605ce['query'][_0x34c4('0x3f')](_0x34c4('0x40'))){_0x1a0983[_0x34c4('0x41')]=qs['limit'](_0x5605ce['query']['limit']);_0x1a0983[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x5605ce[_0x34c4('0x37')]['offset']);}_0x1a0983['order']=qs[_0x34c4('0x43')](_0x5605ce['query']['sort']);_0x1a0983[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x5605ce['query'],_0x2ccbb7[_0x34c4('0x39')]));_0x1a0983['where']['VoiceQueueId']=_0x59904c['id'];if(_0x5605ce[_0x34c4('0x37')][_0x34c4('0x49')]){_0x1a0983[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0x1a0983[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x1a0983[_0x34c4('0x3c')],function(_0x563d1c){var _0x4faa89={};_0x4faa89[_0x563d1c]={'$like':'%'+_0x5605ce[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x4faa89;})});}_0x1a0983=_[_0x34c4('0x46')]({},_0x1a0983,_0x5605ce[_0x34c4('0x4a')]);return db[_0x34c4('0x64')][_0x34c4('0x21')]({'where':_0x1a0983[_0x34c4('0x44')]})[_0x34c4('0x26')](function(_0x4a2071){_0x253696[_0x34c4('0x21')]=_0x4a2071;if(_0x5605ce[_0x34c4('0x37')][_0x34c4('0x4b')]){_0x1a0983[_0x34c4('0x4c')]=[{'all':!![]}];}return db[_0x34c4('0x64')]['findAll'](_0x1a0983);})[_0x34c4('0x26')](function(_0xc802aa){_0x253696[_0x34c4('0x4e')]=_0xc802aa;return _0x253696;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x56a0cc,_0x1a0983))[_0x34c4('0x4f')](handleError(_0x56a0cc,null));};exports[_0x34c4('0x65')]=function(_0x5c1ccd,_0x2faf9f,_0x5ab684){var _0x466ce4={'raw':!![],'where':{}};var _0x1c0745={};var _0x3c84fd={'count':0x0,'rows':[]};return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x5c1ccd[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x2faf9f,null))['then'](function(_0x59dbb6){if(_0x59dbb6){_0x1c0745[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x67')]['rawAttributes']);_0x1c0745[_0x34c4('0x37')]=_['keys'](_0x5c1ccd[_0x34c4('0x37')]);_0x1c0745[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x1c0745[_0x34c4('0x3b')],_0x1c0745[_0x34c4('0x37')]);_0x466ce4[_0x34c4('0x3c')]=_['intersection'](_0x1c0745[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x466ce4[_0x34c4('0x3c')]=_0x466ce4[_0x34c4('0x3c')]['length']?_0x466ce4[_0x34c4('0x3c')]:_0x1c0745[_0x34c4('0x3b')];if(!_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x3f')](_0x34c4('0x40'))){_0x466ce4[_0x34c4('0x41')]=qs['limit'](_0x5c1ccd[_0x34c4('0x37')]['limit']);_0x466ce4['offset']=qs[_0x34c4('0x22')](_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x22')]);}_0x466ce4[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x43')]);_0x466ce4[_0x34c4('0x44')]=qs['filters'](_[_0x34c4('0x45')](_0x5c1ccd[_0x34c4('0x37')],_0x1c0745[_0x34c4('0x39')]));_0x466ce4['where'][_0x34c4('0x68')]=_0x59dbb6['id'];if(_0x5c1ccd[_0x34c4('0x37')]['filter']){_0x466ce4[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0x466ce4['where'],{'$or':_[_0x34c4('0x36')](_0x466ce4[_0x34c4('0x3c')],function(_0x57f7d3){var _0xe8b99a={};_0xe8b99a[_0x57f7d3]={'$like':'%'+_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0xe8b99a;})});}_0x466ce4=_[_0x34c4('0x46')]({},_0x466ce4,_0x5c1ccd['options']);return db['CmHopperHistory'][_0x34c4('0x21')]({'where':_0x466ce4[_0x34c4('0x44')]})[_0x34c4('0x26')](function(_0x28fb58){_0x3c84fd[_0x34c4('0x21')]=_0x28fb58;if(_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x4b')]){_0x466ce4[_0x34c4('0x4c')]=[{'all':!![]}];}return db[_0x34c4('0x67')]['findAll'](_0x466ce4);})['then'](function(_0x3d2720){_0x3c84fd['rows']=_0x3d2720;return _0x3c84fd;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x2faf9f,_0x466ce4))[_0x34c4('0x4f')](handleError(_0x2faf9f,null));};exports[_0x34c4('0x69')]=function(_0x2ce0e5,_0x1e64ea,_0x178a30){var _0x5deb83={'raw':!![],'where':{}};var _0x1fefeb={};var _0x2f1097={'count':0x0,'rows':[]};return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x2ce0e5[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x1e64ea,null))[_0x34c4('0x26')](function(_0x2eb6ae){if(_0x2eb6ae){_0x1fefeb[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x6a')][_0x34c4('0x5b')]);_0x1fefeb[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x2ce0e5[_0x34c4('0x37')]);_0x1fefeb[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x1fefeb['model'],_0x1fefeb[_0x34c4('0x37')]);_0x5deb83[_0x34c4('0x3c')]=_['intersection'](_0x1fefeb[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x2ce0e5[_0x34c4('0x37')]['fields']));_0x5deb83[_0x34c4('0x3c')]=_0x5deb83[_0x34c4('0x3c')]['length']?_0x5deb83[_0x34c4('0x3c')]:_0x1fefeb['model'];if(!_0x2ce0e5[_0x34c4('0x37')]['hasOwnProperty'](_0x34c4('0x40'))){_0x5deb83[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x2ce0e5['query']['limit']);_0x5deb83['offset']=qs[_0x34c4('0x22')](_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x22')]);}_0x5deb83[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x43')]);_0x5deb83[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x2ce0e5[_0x34c4('0x37')],_0x1fefeb[_0x34c4('0x39')]));_0x5deb83[_0x34c4('0x44')]['VoiceQueueId']=_0x2eb6ae['id'];if(_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x49')]){_0x5deb83[_0x34c4('0x44')]=_['merge'](_0x5deb83['where'],{'$or':_[_0x34c4('0x36')](_0x5deb83[_0x34c4('0x3c')],function(_0x28eef1){var _0x4f7fd2={};_0x4f7fd2[_0x28eef1]={'$like':'%'+_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x4f7fd2;})});}_0x5deb83=_['merge']({},_0x5deb83,_0x2ce0e5[_0x34c4('0x4a')]);return db[_0x34c4('0x6a')][_0x34c4('0x21')]({'where':_0x5deb83[_0x34c4('0x44')]})[_0x34c4('0x26')](function(_0x34e226){_0x2f1097[_0x34c4('0x21')]=_0x34e226;if(_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x4b')]){_0x5deb83[_0x34c4('0x4c')]=[{'all':!![]}];}return db[_0x34c4('0x6a')][_0x34c4('0x4d')](_0x5deb83);})['then'](function(_0x24b26c){_0x2f1097[_0x34c4('0x4e')]=_0x24b26c;return _0x2f1097;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x1e64ea,_0x5deb83))[_0x34c4('0x4f')](handleError(_0x1e64ea,null));};exports[_0x34c4('0x6b')]=function(_0x2a35da,_0x404032,_0x7838c0){var _0xb9b4a2={'raw':!![],'where':{}};var _0x3e6fde={};var _0x5dc5f8={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x34c4('0x66')]({'where':{'id':_0x2a35da[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x404032,null))[_0x34c4('0x26')](function(_0x2fb1b){if(_0x2fb1b){_0x3e6fde[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x6c')][_0x34c4('0x5b')]);_0x3e6fde['query']=_['keys'](_0x2a35da[_0x34c4('0x37')]);_0x3e6fde[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x3e6fde['model'],_0x3e6fde[_0x34c4('0x37')]);_0xb9b4a2['attributes']=_[_0x34c4('0x3a')](_0x3e6fde[_0x34c4('0x3b')],qs['fields'](_0x2a35da[_0x34c4('0x37')]['fields']));_0xb9b4a2[_0x34c4('0x3c')]=_0xb9b4a2[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0xb9b4a2[_0x34c4('0x3c')]:_0x3e6fde[_0x34c4('0x3b')];if(!_0x2a35da['query'][_0x34c4('0x3f')](_0x34c4('0x40'))){_0xb9b4a2[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x2a35da[_0x34c4('0x37')]['limit']);_0xb9b4a2[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x2a35da[_0x34c4('0x37')][_0x34c4('0x22')]);}_0xb9b4a2[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x2a35da[_0x34c4('0x37')][_0x34c4('0x43')]);_0xb9b4a2[_0x34c4('0x44')]=qs['filters'](_[_0x34c4('0x45')](_0x2a35da[_0x34c4('0x37')],_0x3e6fde['filters']));_0xb9b4a2[_0x34c4('0x44')][_0x34c4('0x68')]=_0x2fb1b['id'];if(_0x2a35da[_0x34c4('0x37')]['filter']){_0xb9b4a2[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0xb9b4a2[_0x34c4('0x44')],{'$or':_['map'](_0xb9b4a2[_0x34c4('0x3c')],function(_0x1d4c8a){var _0x431ac7={};_0x431ac7[_0x1d4c8a]={'$like':'%'+_0x2a35da['query'][_0x34c4('0x49')]+'%'};return _0x431ac7;})});}_0xb9b4a2=_[_0x34c4('0x46')]({},_0xb9b4a2,_0x2a35da[_0x34c4('0x4a')]);return db[_0x34c4('0x6c')][_0x34c4('0x21')]({'where':_0xb9b4a2[_0x34c4('0x44')]})['then'](function(_0x32c748){_0x5dc5f8[_0x34c4('0x21')]=_0x32c748;if(_0x2a35da[_0x34c4('0x37')][_0x34c4('0x4b')]){_0xb9b4a2['include']=[{'all':!![]}];}return db[_0x34c4('0x6c')][_0x34c4('0x4d')](_0xb9b4a2);})[_0x34c4('0x26')](function(_0x176256){_0x5dc5f8[_0x34c4('0x4e')]=_0x176256;return _0x5dc5f8;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x404032,_0xb9b4a2))[_0x34c4('0x4f')](handleError(_0x404032,null));};exports[_0x34c4('0x6d')]=function(_0xe32404,_0x341bcb,_0x3a880a){var _0x454916={};var _0xcf25a2={};var _0x241807;var _0x5f2838;return db['VoiceQueue'][_0x34c4('0x66')]({'where':{'id':_0xe32404['params']['id']}})['then'](handleEntityNotFound(_0x341bcb,null))[_0x34c4('0x26')](function(_0x1c7f58){if(_0x1c7f58){_0x241807=_0x1c7f58;_0xcf25a2['model']=_['keys'](db[_0x34c4('0x6e')][_0x34c4('0x5b')]);_0xcf25a2[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0xe32404[_0x34c4('0x37')]);_0xcf25a2['filters']=_['intersection'](_0xcf25a2['model'],_0xcf25a2[_0x34c4('0x37')]);_0x454916['attributes']=_[_0x34c4('0x3a')](_0xcf25a2[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0xe32404[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x454916[_0x34c4('0x3c')]=_0x454916[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x454916[_0x34c4('0x3c')]:_0xcf25a2[_0x34c4('0x3b')];_0x454916[_0x34c4('0x42')]=qs['sort'](_0xe32404[_0x34c4('0x37')][_0x34c4('0x43')]);_0x454916[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_['pick'](_0xe32404['query'],_0xcf25a2[_0x34c4('0x39')]));if(_0xe32404[_0x34c4('0x37')][_0x34c4('0x49')]){_0x454916['where']=_[_0x34c4('0x46')](_0x454916[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x454916[_0x34c4('0x3c')],function(_0x4caeb7){var _0x1e1326={};_0x1e1326[_0x4caeb7]={'$like':'%'+_0xe32404[_0x34c4('0x37')]['filter']+'%'};return _0x1e1326;})});}_0x454916=_[_0x34c4('0x46')]({},_0x454916,_0xe32404[_0x34c4('0x4a')]);return _0x241807['getTeams'](_0x454916);}})[_0x34c4('0x26')](function(_0xd0975b){if(_0xd0975b){_0x5f2838=_0xd0975b[_0x34c4('0x3e')];if(!_0xe32404[_0x34c4('0x37')][_0x34c4('0x3f')](_0x34c4('0x40'))){_0x454916['limit']=qs[_0x34c4('0x41')](_0xe32404['query'][_0x34c4('0x41')]);_0x454916[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0xe32404[_0x34c4('0x37')][_0x34c4('0x22')]);}return _0x241807[_0x34c4('0x6d')](_0x454916);}})[_0x34c4('0x26')](function(_0x406472){if(_0x406472){return _0x406472?{'count':_0x5f2838,'rows':_0x406472}:null;}})['then'](respondWithResult(_0x341bcb,null))['catch'](handleError(_0x341bcb,null));};exports[_0x34c4('0x6f')]=function(_0x41681d,_0x505935,_0x1276dc){var _0x3cbcaf=_0x41681d[_0x34c4('0x51')]['teams'];var _0x203652=_['map'](_0x3cbcaf,'id');return db['Team'][_0x34c4('0x4d')]({'where':{'id':_0x203652},'attributes':['id'],'include':[{'model':db[_0x34c4('0x70')],'as':_0x34c4('0x71'),'attributes':['id','name',_0x34c4('0x72'),_0x34c4('0x73'),_0x34c4('0x74')],'raw':!![]}]})['then'](function(_0x43182a){if(_0x43182a){var _0x2f5857=_[_0x34c4('0x75')](_0x43182a,function(_0x3775f0){var _0x57809d=_0x3775f0[_0x34c4('0x27')]({'plain':!![]});_0x57809d[_0x34c4('0x71')][_0x34c4('0x76')](function(_0x150784){_0x150784['penalty']=_['find'](_0x3cbcaf,{'id':_0x57809d['id']})['penalty'];});return _0x57809d[_0x34c4('0x71')];});return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x41681d['params']['id']}})['then'](function(_0x161f4){return db[_0x34c4('0x77')]['transaction'](function(_0x4d8643){return _0x161f4[_0x34c4('0x6f')](_0x203652,{'transaction':_0x4d8643})['then'](function(){return BPromise['each'](_0x3cbcaf,function(_0x31ce55){return db['TeamVoiceQueue'][_0x34c4('0x78')]({'TeamId':_0x31ce55['id'],'VoiceQueueId':_0x41681d[_0x34c4('0x5a')]['id'],'penalty':_0x31ce55[_0x34c4('0x79')]},{'transaction':_0x4d8643});});})[_0x34c4('0x26')](function(){return BPromise[_0x34c4('0x7a')](_0x2f5857,function(_0x52f0cd){return db['UserVoiceQueue']['findOrCreate']({'where':{'UserId':_0x52f0cd['id'],'VoiceQueueId':_0x41681d['params']['id']},'defaults':{'penalty':_0x52f0cd['penalty']},'transaction':_0x4d8643});});})[_0x34c4('0x26')](function(){return BPromise[_0x34c4('0x7a')](_[_0x34c4('0x49')](_0x2f5857,{'online':!![]}),function(_0x3bdf32){return db[_0x34c4('0x7b')]['upsert']({'membername':_0x3bdf32[_0x34c4('0x2e')],'UserId':_0x3bdf32['id'],'queue_name':_0x161f4['name'],'VoiceQueueId':_0x161f4['id'],'interface':_[_0x34c4('0x7c')](_0x3bdf32[_0x34c4('0x74')])?util[_0x34c4('0x7d')]('SIP/%s',_0x3bdf32['name']):_0x3bdf32[_0x34c4('0x74')],'paused':_0x3bdf32['voicePause']||![],'penalty':_0x3bdf32[_0x34c4('0x79')]},{'transaction':_0x4d8643});});})[_0x34c4('0x26')](function(){_0x2f5857['forEach'](function(_0x5ed5bc){socket[_0x34c4('0x7e')](_0x34c4('0x7f'),{'UserId':_0x5ed5bc['id'],'VoiceQueueId':_0x161f4['id']});});});});});}})[_0x34c4('0x26')](respondWithStatusCode(_0x505935,null))[_0x34c4('0x4f')](handleError(_0x505935,null));};exports['removeTeams']=function(_0x4c3328,_0x2ed508,_0xb6ad8d){return db[_0x34c4('0x6e')][_0x34c4('0x4d')]({'where':{'id':_0x4c3328[_0x34c4('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x34c4('0x70')],'as':_0x34c4('0x71'),'attributes':['id'],'raw':!![]}]})[_0x34c4('0x26')](handleEntityNotFound(_0x2ed508,null))[_0x34c4('0x26')](function(_0x952e87){var _0x46b320=_['map'](_0x952e87,'id');var _0x390b30=[];var _0x41b21f=[];var _0x919d66=squel[_0x34c4('0x80')]();_0x919d66[_0x34c4('0x81')](_0x34c4('0x82'))[_0x34c4('0x83')](_0x34c4('0x84'),'tq')['join'](_0x34c4('0x85'),'ut',_0x34c4('0x86'))[_0x34c4('0x44')](_0x34c4('0x87'),_0x4c3328[_0x34c4('0x5a')]['id']);for(var _0x2c98fc=0x0;_0x2c98fc<_0x952e87['length'];_0x2c98fc+=0x1){let _0x4aa7e3=_0x952e87[_0x2c98fc];for(var _0x5e886b=0x0;_0x5e886b<_0x4aa7e3['Agents'][_0x34c4('0x3e')];_0x5e886b+=0x1){let _0xa3a2b2=_0x4aa7e3[_0x34c4('0x71')][_0x5e886b];var _0x163211=_0x919d66[_0x34c4('0x59')]();_0x163211['where'](_0x34c4('0x88'),_0xa3a2b2['id']);_0x41b21f[_0x34c4('0x89')](db[_0x34c4('0x77')][_0x34c4('0x37')](_0x163211['toString'](),{'type':db[_0x34c4('0x77')][_0x34c4('0x8a')][_0x34c4('0x8b')]})[_0x34c4('0x26')](function(_0x200000){if(_0x200000[_0x34c4('0x3e')]===0x1){return _0xa3a2b2['id'];}else{var _0x3c2e80=_[_0x34c4('0x8c')](_[_0x34c4('0x36')](_0x200000,_0x34c4('0x8d')),function(_0x362ea8){return _['includes'](_0x46b320,_0x362ea8);});if(_0x3c2e80){return _0xa3a2b2['id'];}}}));}}return BPromise['all'](_0x41b21f)[_0x34c4('0x26')](function(_0x4517a7){_0x390b30=_(_0x390b30)['union'](_0x4517a7)[_0x34c4('0x8e')]()[_0x34c4('0x2c')]();return db[_0x34c4('0x33')]['find']({'where':{'id':_0x4c3328[_0x34c4('0x5a')]['id']}})['then'](function(_0x560b0f){return db[_0x34c4('0x77')][_0x34c4('0x8f')](function(_0x33ddef){return _0x560b0f[_0x34c4('0x90')](_0x4c3328[_0x34c4('0x37')][_0x34c4('0x91')],{'transaction':_0x33ddef})[_0x34c4('0x26')](function(){if(!_[_0x34c4('0x92')](_0x390b30)){return _0x560b0f['removeAgents'](_0x390b30,{'transaction':_0x33ddef})[_0x34c4('0x26')](function(){return db[_0x34c4('0x7b')]['destroy']({'where':{'VoiceQueueId':_0x4c3328[_0x34c4('0x5a')]['id'],'UserId':_0x390b30},'transaction':_0x33ddef});});}})['then'](function(){_0x390b30[_0x34c4('0x76')](function(_0x4f9fb5){socket[_0x34c4('0x7e')](_0x34c4('0x93'),{'UserId':_0x4f9fb5,'VoiceQueueId':_0x560b0f['id']});});});});});});})[_0x34c4('0x26')](respondWithStatusCode(_0x2ed508,null))[_0x34c4('0x4f')](handleError(_0x2ed508,null));};exports[_0x34c4('0x94')]=function(_0x57c48f,_0x282f0e,_0x3bdc4b){var _0x3f37b2,_0x5963a7;return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x57c48f[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x282f0e,null))[_0x34c4('0x26')](function(_0x17734d){if(_0x17734d){_0x5963a7=_0x17734d;return _0x17734d[_0x34c4('0x94')](_0x57c48f[_0x34c4('0x51')][_0x34c4('0x91')],_[_0x34c4('0x5c')](_0x57c48f[_0x34c4('0x51')],['ids','id'])||{})[_0x34c4('0x95')](function(_0x134a8b){for(var _0x9d781=0x0;_0x9d781<_0x57c48f[_0x34c4('0x51')][_0x34c4('0x91')][_0x34c4('0x3e')];_0x9d781+=0x1){socket[_0x34c4('0x7e')](_0x34c4('0x7f'),{'UserId':Number(_0x57c48f[_0x34c4('0x51')][_0x34c4('0x91')][_0x9d781]),'VoiceQueueId':Number(_0x57c48f[_0x34c4('0x5a')]['id'])});}return _0x134a8b;});}})['then'](function(_0xd2a37e){_0x3f37b2=_0xd2a37e||[];if(_0x5963a7){return db[_0x34c4('0x70')][_0x34c4('0x4d')]({'where':{'id':_0x57c48f['body']['ids']},'attributes':['id','name','online',_0x34c4('0x73'),_0x34c4('0x74')],'raw':!![]});}})[_0x34c4('0x26')](function(_0x54c35d){if(!_[_0x34c4('0x92')](_0x54c35d)){var _0x1fea58=[];for(var _0x438bbd=0x0;_0x438bbd<_0x54c35d[_0x34c4('0x3e')];_0x438bbd++){if(_0x54c35d[_0x438bbd][_0x34c4('0x72')]){_0x1fea58[_0x34c4('0x89')](db[_0x34c4('0x7b')][_0x34c4('0x78')]({'membername':_0x54c35d[_0x438bbd][_0x34c4('0x2e')],'UserId':_0x54c35d[_0x438bbd]['id'],'queue_name':_0x5963a7[_0x34c4('0x2e')],'VoiceQueueId':_0x5963a7['id'],'interface':_['isNil'](_0x54c35d[_0x438bbd][_0x34c4('0x74')])?util[_0x34c4('0x7d')](_0x34c4('0x96'),_0x54c35d[_0x438bbd][_0x34c4('0x2e')]):_0x54c35d[_0x438bbd][_0x34c4('0x74')],'paused':_0x54c35d[_0x438bbd][_0x34c4('0x73')]||![],'penalty':_0x57c48f[_0x34c4('0x51')]['penalty']||0x0}));}}return BPromise['all'](_0x1fea58);}})[_0x34c4('0x26')](function(){return _0x3f37b2;})['then'](respondWithResult(_0x282f0e,null))[_0x34c4('0x4f')](handleError(_0x282f0e,null));};exports[_0x34c4('0x97')]=function(_0x5b47b7,_0x4b0eef,_0x4cd8ad){return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x5b47b7[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x4b0eef,null))[_0x34c4('0x26')](function(_0xfa1583){if(_0xfa1583){return _0xfa1583['removeAgents'](_0x5b47b7['query'][_0x34c4('0x91')])[_0x34c4('0x26')](function(){if(_[_0x34c4('0x98')](_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')])){for(var _0x394051=0x0;_0x394051<_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')][_0x34c4('0x3e')];_0x394051+=0x1){socket[_0x34c4('0x7e')]('userVoiceQueue:remove',{'UserId':Number(_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')][_0x394051]),'VoiceQueueId':Number(_0x5b47b7['params']['id'])});}}else{socket[_0x34c4('0x7e')]('userVoiceQueue:remove',{'UserId':Number(_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')]),'VoiceQueueId':Number(_0x5b47b7[_0x34c4('0x5a')]['id'])});}});}})[_0x34c4('0x26')](function(_0x127cd0){return db[_0x34c4('0x7b')]['destroy']({'where':{'VoiceQueueId':_0x5b47b7[_0x34c4('0x5a')]['id'],'UserId':_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')]}})[_0x34c4('0x26')](function(){return _0x127cd0;});})[_0x34c4('0x26')](respondWithStatusCode(_0x4b0eef,null))['catch'](handleError(_0x4b0eef,null));};exports['getAgents']=function(_0x24d73a,_0x2e3422,_0x54ed6b){var _0x226bab={};var _0xe31a52={};var _0x139e49;var _0x3a340c;return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x24d73a[_0x34c4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2e3422,null))[_0x34c4('0x26')](function(_0x4bcf54){if(_0x4bcf54){_0x139e49=_0x4bcf54;_0xe31a52[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x70')][_0x34c4('0x5b')]);_0xe31a52['query']=_['keys'](_0x24d73a['query']);_0xe31a52[_0x34c4('0x39')]=_['intersection'](_0xe31a52[_0x34c4('0x3b')],_0xe31a52[_0x34c4('0x37')]);_0x226bab['attributes']=_[_0x34c4('0x3a')](_0xe31a52['model'],qs['fields'](_0x24d73a[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x226bab[_0x34c4('0x3c')]=_0x226bab[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x226bab[_0x34c4('0x3c')]:_0xe31a52['model'];_0x226bab[_0x34c4('0x42')]=qs['sort'](_0x24d73a[_0x34c4('0x37')][_0x34c4('0x43')]);_0x226bab['where']=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x24d73a[_0x34c4('0x37')],_0xe31a52[_0x34c4('0x39')]));if(_0x24d73a['query']['filter']){_0x226bab[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0x226bab['where'],{'$or':_[_0x34c4('0x36')](_0x226bab[_0x34c4('0x3c')],function(_0x555d27){var _0x358475={};_0x358475[_0x555d27]={'$like':'%'+_0x24d73a[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x358475;})});}_0x226bab=_[_0x34c4('0x46')]({},_0x226bab,_0x24d73a[_0x34c4('0x4a')]);return _0x139e49[_0x34c4('0x99')](_0x226bab);}})[_0x34c4('0x26')](function(_0x176b4d){if(_0x176b4d){_0x3a340c=_0x176b4d['length'];if(!_0x24d73a[_0x34c4('0x37')]['hasOwnProperty'](_0x34c4('0x40'))){_0x226bab[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x24d73a['query'][_0x34c4('0x41')]);_0x226bab[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x24d73a[_0x34c4('0x37')]['offset']);}return _0x139e49[_0x34c4('0x99')](_0x226bab);}})[_0x34c4('0x26')](function(_0x5be993){if(_0x5be993){return _0x5be993?{'count':_0x3a340c,'rows':_0x5be993}:null;}})['then'](respondWithResult(_0x2e3422,null))[_0x34c4('0x4f')](handleError(_0x2e3422,null));};exports['getMembers']=function(_0xb583ca,_0x590bf3,_0x2d2a9b){var _0x57cd4d={};var _0x43b04b={};var _0x2f3a32;var _0x45da2f;return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0xb583ca['params']['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x590bf3,null))[_0x34c4('0x26')](function(_0x2cec94){if(_0x2cec94){_0x2f3a32=_0x2cec94;_0x43b04b[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x7b')]['rawAttributes']);_0x43b04b[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0xb583ca[_0x34c4('0x37')]);_0x43b04b['filters']=_[_0x34c4('0x3a')](_0x43b04b['model'],_0x43b04b['query']);_0x57cd4d[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0x43b04b['model'],qs[_0x34c4('0x3d')](_0xb583ca[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x57cd4d[_0x34c4('0x3c')]=_0x57cd4d['attributes']['length']?_0x57cd4d[_0x34c4('0x3c')]:_0x43b04b[_0x34c4('0x3b')];_0x57cd4d['order']=qs[_0x34c4('0x43')](_0xb583ca[_0x34c4('0x37')][_0x34c4('0x43')]);_0x57cd4d[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0xb583ca[_0x34c4('0x37')],_0x43b04b[_0x34c4('0x39')]));if(_0xb583ca[_0x34c4('0x37')][_0x34c4('0x49')]){_0x57cd4d[_0x34c4('0x44')]=_['merge'](_0x57cd4d[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x57cd4d[_0x34c4('0x3c')],function(_0x3fe291){var _0x544807={};_0x544807[_0x3fe291]={'$like':'%'+_0xb583ca['query'][_0x34c4('0x49')]+'%'};return _0x544807;})});}_0x57cd4d=_['merge']({},_0x57cd4d,_0xb583ca['options']);return _0x2f3a32[_0x34c4('0x9a')](_0x57cd4d);}})[_0x34c4('0x26')](function(_0x45bca9){if(_0x45bca9){_0x45da2f=_0x45bca9[_0x34c4('0x3e')];if(!_0xb583ca[_0x34c4('0x37')]['hasOwnProperty'](_0x34c4('0x40'))){_0x57cd4d['limit']=qs[_0x34c4('0x41')](_0xb583ca['query'][_0x34c4('0x41')]);_0x57cd4d['offset']=qs['offset'](_0xb583ca['query'][_0x34c4('0x22')]);}return _0x2f3a32[_0x34c4('0x9a')](_0x57cd4d);}})[_0x34c4('0x26')](function(_0xcf5a22){return _0xcf5a22?{'count':_0x45da2f,'rows':_0xcf5a22}:null;})['then'](respondWithResult(_0x590bf3,null))[_0x34c4('0x4f')](handleError(_0x590bf3,null));};exports['getLists']=function(_0x2c2aea,_0x55abc9,_0x461dc1){var _0x497373={};var _0x4b553={};var _0x1d36b2;var _0x105027;return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x2c2aea['params']['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x55abc9,null))[_0x34c4('0x26')](function(_0x3cdbc1){if(_0x3cdbc1){_0x1d36b2=_0x3cdbc1;_0x4b553['model']=_['keys'](db[_0x34c4('0x9b')][_0x34c4('0x5b')]);_0x4b553['query']=_['keys'](_0x2c2aea['query']);_0x4b553['filters']=_[_0x34c4('0x3a')](_0x4b553[_0x34c4('0x3b')],_0x4b553['query']);_0x497373[_0x34c4('0x3c')]=_['intersection'](_0x4b553[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x497373[_0x34c4('0x3c')]=_0x497373[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x497373['attributes']:_0x4b553[_0x34c4('0x3b')];_0x497373['order']=qs[_0x34c4('0x43')](_0x2c2aea[_0x34c4('0x37')]['sort']);_0x497373[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x2c2aea['query'],_0x4b553[_0x34c4('0x39')]));if(_0x2c2aea[_0x34c4('0x37')]['filter']){_0x497373[_0x34c4('0x44')]=_['merge'](_0x497373[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x497373[_0x34c4('0x3c')],function(_0x132683){var _0x544d8c={};_0x544d8c[_0x132683]={'$like':'%'+_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x544d8c;})});}_0x497373=_[_0x34c4('0x46')]({},_0x497373,_0x2c2aea['options']);return _0x1d36b2[_0x34c4('0x9c')](_0x497373);}})['then'](function(_0x9c9844){if(_0x9c9844){_0x105027=_0x9c9844[_0x34c4('0x3e')];if(!_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x3f')]('nolimit')){_0x497373[_0x34c4('0x41')]=qs['limit'](_0x2c2aea[_0x34c4('0x37')]['limit']);_0x497373[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x22')]);}return _0x1d36b2[_0x34c4('0x9c')](_0x497373);}})[_0x34c4('0x26')](function(_0x3e3ef3){if(_0x3e3ef3){return _0x3e3ef3?{'count':_0x105027,'rows':_0x3e3ef3}:null;}})['then'](respondWithResult(_0x55abc9,null))[_0x34c4('0x4f')](handleError(_0x55abc9,null));};exports['addLists']=function(_0x13bba4,_0x2707db,_0x170434){var _0xdb3a4e,_0x58c0a3;return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x13bba4['params']['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x2707db,null))[_0x34c4('0x26')](function(_0x237e25){if(_0x237e25){_0x58c0a3=_0x237e25;return _0x237e25['addLists'](_0x13bba4[_0x34c4('0x51')]['ids'],_[_0x34c4('0x5c')](_0x13bba4[_0x34c4('0x51')],[_0x34c4('0x91'),'id'])||{});}return null;})[_0x34c4('0x95')](function(_0x202b1f){var _0x21c422;_0xdb3a4e=_0x202b1f||[];var _0x523339=[];if(_0x202b1f){for(var _0x32c0e8=0x0;_0x32c0e8<_0x202b1f[_0x34c4('0x3e')];_0x32c0e8+=0x1){var _0xf4a384=_0x202b1f[_0x32c0e8][_0x34c4('0x27')]({'plain':!![]});_0x58c0a3['dialCheckDuplicateType']=_0x13bba4[_0x34c4('0x51')][_0x34c4('0x9d')]?_0x13bba4[_0x34c4('0x51')]['dialCheckDuplicateType']:_0x58c0a3[_0x34c4('0x9d')];switch(_0x58c0a3[_0x34c4('0x9d')]){case _0x34c4('0x9e'):_0x21c422=squel['insert']()[_0x34c4('0x9f')](_0x34c4('0xa0'))['fromQuery'](['phone',_0x34c4('0xa1'),'ContactId','ListId',_0x34c4('0x68'),_0x34c4('0x5d'),'updatedAt'],squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xa2'),_0x34c4('0xa2'))[_0x34c4('0x81')]('NOW()',_0x34c4('0xa1'))[_0x34c4('0x81')]('id',_0x34c4('0xa3'))[_0x34c4('0x81')](_0xf4a384[_0x34c4('0xa4')][_0x34c4('0xa5')](),_0x34c4('0xa6'))[_0x34c4('0x81')](_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')](),'VoiceQueueId')[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5e'))[_0x34c4('0x83')](_0x34c4('0xa8'))[_0x34c4('0x44')](_0x34c4('0xa9'))[_0x34c4('0x44')](_0x34c4('0xaa'),_0xf4a384[_0x34c4('0xa4')]['toString']())[_0x34c4('0x44')](_0x34c4('0xab'))[_0x34c4('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xac'))[_0x34c4('0x83')](_0x34c4('0xad'))[_0x34c4('0x44')](_0x34c4('0x87'),_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')]()))[_0x34c4('0x44')](_0x34c4('0xae'),squel[_0x34c4('0x80')]()['field'](_0x34c4('0xaf'))[_0x34c4('0x83')](_0x34c4('0xa0'))[_0x34c4('0x44')](_0x34c4('0x87'),_0x13bba4['params']['id'][_0x34c4('0xa5')]())))['toString']();break;case _0x34c4('0xb0'):_0x21c422=squel[_0x34c4('0xb1')]()['into'](_0x34c4('0xa0'))[_0x34c4('0xb2')](['phone','scheduledAt','ContactId',_0x34c4('0xa6'),_0x34c4('0x68'),_0x34c4('0x5d'),'updatedAt'],squel[_0x34c4('0x80')]()['field'](_0x34c4('0xa2'),_0x34c4('0xa2'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0xa1'))[_0x34c4('0x81')]('id',_0x34c4('0xa3'))['field'](_0xf4a384[_0x34c4('0xa4')]['toString'](),'ListId')[_0x34c4('0x81')](_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')](),'VoiceQueueId')[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')](_0x34c4('0xa7'),'updatedAt')['from'](_0x34c4('0xa8'))[_0x34c4('0x44')]('deletedAt\x20IS\x20NULL')[_0x34c4('0x44')](_0x34c4('0xaa'),_0xf4a384[_0x34c4('0xa4')][_0x34c4('0xa5')]())[_0x34c4('0x44')](_0x34c4('0xab'))[_0x34c4('0x44')](_0x34c4('0xae'),squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xaf'))[_0x34c4('0x83')]('cm_hopper')[_0x34c4('0x44')](_0x34c4('0x87'),_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')]())))[_0x34c4('0xa5')]();break;default:_0x21c422=squel['insert']()['into'](_0x34c4('0xa0'))[_0x34c4('0xb2')]([_0x34c4('0xa2'),_0x34c4('0xa1'),_0x34c4('0xa3'),'ListId',_0x34c4('0x68'),_0x34c4('0x5d'),_0x34c4('0x5e')],squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xa2'),_0x34c4('0xa2'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0xa1'))[_0x34c4('0x81')]('id','ContactId')['field'](_0xf4a384['CmListId'][_0x34c4('0xa5')](),_0x34c4('0xa6'))[_0x34c4('0x81')](_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')](),'VoiceQueueId')[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')]('NOW()',_0x34c4('0x5e'))[_0x34c4('0x83')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x34c4('0x44')]('ListId\x20=\x20?',_0xf4a384[_0x34c4('0xa4')][_0x34c4('0xa5')]())[_0x34c4('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x34c4('0xa5')]();}_0x523339[_0x34c4('0x89')](db[_0x34c4('0x77')][_0x34c4('0x37')](_0x21c422));}return BPromise[_0x34c4('0xb3')](_0x523339);}})[_0x34c4('0x26')](function(){return _0xdb3a4e;})[_0x34c4('0x26')](respondWithResult(_0x2707db,null))[_0x34c4('0x4f')](handleError(_0x2707db,null));};exports[_0x34c4('0xb4')]=function(_0x4b8f44,_0x2b9ba5,_0x4d052f){return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x4b8f44[_0x34c4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2b9ba5,null))[_0x34c4('0x26')](function(_0x33c673){if(_0x33c673){return _0x33c673['removeLists'](_0x4b8f44['query']['ids']);}})[_0x34c4('0x26')](function(_0x51b08a){if(_0x51b08a){return db[_0x34c4('0x64')]['destroy']({'where':{'ListId':_0x4b8f44[_0x34c4('0x37')]['ids'],'VoiceQueueId':_0x4b8f44['params']['id']}})[_0x34c4('0x26')](function(){return _0x51b08a;});}})[_0x34c4('0x26')](respondWithStatusCode(_0x2b9ba5,null))[_0x34c4('0x4f')](handleError(_0x2b9ba5,null));};exports[_0x34c4('0xb5')]=function(_0x5a7b3e,_0x34820a,_0x429fc9){var _0x488fb6={};var _0xf57ec3={};var _0x25b40a;var _0x5e3f1e;return db['VoiceQueue'][_0x34c4('0x66')]({'where':{'id':_0x5a7b3e[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x34820a,null))[_0x34c4('0x26')](function(_0x1408a8){if(_0x1408a8){_0x25b40a=_0x1408a8;_0xf57ec3[_0x34c4('0x3b')]=_['keys'](db[_0x34c4('0x9b')][_0x34c4('0x5b')]);_0xf57ec3[_0x34c4('0x37')]=_['keys'](_0x5a7b3e[_0x34c4('0x37')]);_0xf57ec3[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0xf57ec3[_0x34c4('0x3b')],_0xf57ec3[_0x34c4('0x37')]);_0x488fb6[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0xf57ec3[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x5a7b3e[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x488fb6[_0x34c4('0x3c')]=_0x488fb6[_0x34c4('0x3c')]['length']?_0x488fb6['attributes']:_0xf57ec3[_0x34c4('0x3b')];_0x488fb6[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x5a7b3e['query'][_0x34c4('0x43')]);_0x488fb6[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x5a7b3e[_0x34c4('0x37')],_0xf57ec3[_0x34c4('0x39')]));if(_0x5a7b3e[_0x34c4('0x37')][_0x34c4('0x49')]){_0x488fb6[_0x34c4('0x44')]=_['merge'](_0x488fb6[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x488fb6[_0x34c4('0x3c')],function(_0x1d3b9a){var _0x210a71={};_0x210a71[_0x1d3b9a]={'$like':'%'+_0x5a7b3e[_0x34c4('0x37')]['filter']+'%'};return _0x210a71;})});}_0x488fb6=_[_0x34c4('0x46')]({},_0x488fb6,_0x5a7b3e[_0x34c4('0x4a')]);return _0x25b40a[_0x34c4('0xb5')](_0x488fb6);}})[_0x34c4('0x26')](function(_0x9c0b7c){if(_0x9c0b7c){_0x5e3f1e=_0x9c0b7c[_0x34c4('0x3e')];if(!_0x5a7b3e['query']['hasOwnProperty'](_0x34c4('0x40'))){_0x488fb6[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x5a7b3e['query']['limit']);_0x488fb6[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x5a7b3e[_0x34c4('0x37')][_0x34c4('0x22')]);}return _0x25b40a[_0x34c4('0xb5')](_0x488fb6);}})[_0x34c4('0x26')](function(_0x196947){if(_0x196947){return _0x196947?{'count':_0x5e3f1e,'rows':_0x196947}:null;}})[_0x34c4('0x26')](respondWithResult(_0x34820a,null))[_0x34c4('0x4f')](handleError(_0x34820a,null));};exports[_0x34c4('0xb6')]=function(_0x4c185a,_0x1d9251,_0x35deb9){var _0x77c09c,_0x19786f;return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x4c185a[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x1d9251,null))[_0x34c4('0x26')](function(_0x301de7){if(_0x301de7){_0x19786f=_0x301de7;return _0x301de7[_0x34c4('0xb6')](_0x4c185a[_0x34c4('0x51')]['ids'],_[_0x34c4('0x5c')](_0x4c185a[_0x34c4('0x51')],[_0x34c4('0x91'),'id'])||{});}return null;})[_0x34c4('0x95')](function(_0x3fe83b){var _0x414e23;_0x77c09c=_0x3fe83b||[];var _0x47b459=[];if(_0x3fe83b){for(var _0x56864a=0x0;_0x56864a<_0x3fe83b[_0x34c4('0x3e')];_0x56864a+=0x1){var _0x1edd4b=_0x3fe83b[_0x56864a][_0x34c4('0x27')]({'plain':!![]});_0x414e23=squel['insert']()[_0x34c4('0x9f')]('cm_hopper_black')[_0x34c4('0xb2')](['phone','ContactId',_0x34c4('0xa6'),'VoiceQueueId',_0x34c4('0x5d'),_0x34c4('0x5e')],squel[_0x34c4('0x80')]()['field']('phone',_0x34c4('0xa2'))['field']('id',_0x34c4('0xa3'))[_0x34c4('0x81')](_0x1edd4b['CmListId'][_0x34c4('0xa5')](),_0x34c4('0xa6'))['field'](_0x4c185a[_0x34c4('0x5a')]['id']['toString'](),_0x34c4('0x68'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5e'))[_0x34c4('0x83')](_0x34c4('0xa8'))[_0x34c4('0x44')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x1edd4b[_0x34c4('0xa4')][_0x34c4('0xa5')]())[_0x34c4('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x34c4('0xa5')]();_0x47b459[_0x34c4('0x89')](db['sequelize'][_0x34c4('0x37')](_0x414e23));}return BPromise[_0x34c4('0xb3')](_0x47b459);}})[_0x34c4('0x26')](function(){return _0x77c09c;})[_0x34c4('0x26')](respondWithResult(_0x1d9251,null))[_0x34c4('0x4f')](handleError(_0x1d9251,null));};exports['removeBlackLists']=function(_0x5f0622,_0x5be4f1,_0x3dcbd3){return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x5f0622[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x5be4f1,null))[_0x34c4('0x26')](function(_0x446f8b){if(_0x446f8b){return _0x446f8b[_0x34c4('0xb7')](_0x5f0622[_0x34c4('0x37')][_0x34c4('0x91')]);}})[_0x34c4('0x26')](function(_0x3c8e9a){if(_0x3c8e9a){return db['CmHopperBlack'][_0x34c4('0x2f')]({'where':{'ListId':_0x5f0622['query'][_0x34c4('0x91')],'VoiceQueueId':_0x5f0622[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](function(){return _0x3c8e9a;});}})[_0x34c4('0x26')](respondWithStatusCode(_0x5be4f1,null))['catch'](handleError(_0x5be4f1,null));};
\ No newline at end of file
index a4f0f3d..4367bc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f56=['events','../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x6465b0,_0x45653a){var _0x4884fe=function(_0x427085){while(--_0x427085){_0x6465b0['push'](_0x6465b0['shift']());}};_0x4884fe(++_0x45653a);}(_0x9f56,0x96));var _0x69f5=function(_0x57d13b,_0x52d8cb){_0x57d13b=_0x57d13b-0x0;var _0x467696=_0x9f56[_0x57d13b];return _0x467696;};'use strict';var EventEmitter=require(_0x69f5('0x0'));var VoiceQueue=require(_0x69f5('0x1'))['db'][_0x69f5('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x69f5('0x3')](0x0);var events={'afterCreate':_0x69f5('0x4'),'afterUpdate':_0x69f5('0x5'),'afterDestroy':_0x69f5('0x6')};function emitEvent(_0x1d45f0){return function(_0x3f6d0b,_0x3bd0ee,_0x55687c){VoiceQueueEvents[_0x69f5('0x7')](_0x1d45f0+':'+_0x3f6d0b['id'],_0x3f6d0b);VoiceQueueEvents[_0x69f5('0x7')](_0x1d45f0,_0x3f6d0b);_0x55687c(null);};}for(var e in events){if(events[_0x69f5('0x8')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x69f5('0x9')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x34a0=['emit','hasOwnProperty','hook','exports','VoiceQueue','setMaxListeners','save','update','remove'];(function(_0x2a4291,_0x53bdd8){var _0xf91cbe=function(_0x3e2a54){while(--_0x3e2a54){_0x2a4291['push'](_0x2a4291['shift']());}};_0xf91cbe(++_0x53bdd8);}(_0x34a0,0x151));var _0x034a=function(_0x5e32ff,_0x53d040){_0x5e32ff=_0x5e32ff-0x0;var _0x595147=_0x34a0[_0x5e32ff];return _0x595147;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db'][_0x034a('0x0')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x034a('0x1')](0x0);var events={'afterCreate':_0x034a('0x2'),'afterUpdate':_0x034a('0x3'),'afterDestroy':_0x034a('0x4')};function emitEvent(_0x2f0f88){return function(_0x133b8f,_0x24d2ec,_0x367e01){VoiceQueueEvents[_0x034a('0x5')](_0x2f0f88+':'+_0x133b8f['id'],_0x133b8f);VoiceQueueEvents[_0x034a('0x5')](_0x2f0f88,_0x133b8f);_0x367e01(null);};}for(var e in events){if(events[_0x034a('0x6')](e)){var event=events[e];VoiceQueue[_0x034a('0x7')](e,emitEvent(event));}}module[_0x034a('0x8')]=VoiceQueueEvents;
\ No newline at end of file
index 9a23f12..42a3516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x55a76a,_0x2d0203){var _0x45885a=function(_0x4348d5){while(--_0x4348d5){_0x55a76a['push'](_0x55a76a['shift']());}};_0x45885a(++_0x2d0203);}(_0x008c,0x188));var _0xc008=function(_0x4c4136,_0x1e74ae){_0x4c4136=_0x4c4136-0x0;var _0x11fa28=_0x008c[_0x4c4136];return _0x11fa28;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x4dc9a7,_0xdee4bf){var _0x316023=function(_0x2a6209){while(--_0x2a6209){_0x4dc9a7['push'](_0x4dc9a7['shift']());}};_0x316023(++_0xdee4bf);}(_0x9c44,0x178));var _0x49c4=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x9c44[_0x1969a7];return _0x3d665f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 85a2a44..57f4755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b66=['model','then','GetVoiceQueue','ShowVoiceQueue','where','debug','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','localhost','./voiceQueue.socket','register','request','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','VoiceQueue','findAll','options','raw','attributes','include','map'];(function(_0xfedc72,_0x292f02){var _0x2c7c78=function(_0x12fbf1){while(--_0x12fbf1){_0xfedc72['push'](_0xfedc72['shift']());}};_0x2c7c78(++_0x292f02);}(_0x4b66,0xe4));var _0x64b6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4b66[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x64b6('0x0'));var util=require('util');var moment=require(_0x64b6('0x1'));var BPromise=require(_0x64b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x64b6('0x3'));var db=require(_0x64b6('0x4'))['db'];var utils=require(_0x64b6('0x5'));var logger=require('../../config/logger')(_0x64b6('0x6'));var config=require(_0x64b6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x64b6('0x8')][_0x64b6('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x64b6('0xa')],{'host':_0x64b6('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x64b6('0xa')]));require(_0x64b6('0xc'))[_0x64b6('0xd')](socket);function respondWithRpcPromise(_0x58b2b7,_0x53b446,_0x442b5b){return new BPromise(function(_0x3d3017,_0x2cb44c){return client[_0x64b6('0xe')](_0x58b2b7,_0x442b5b)['then'](function(_0x5aa9df){logger[_0x64b6('0xf')](_0x64b6('0x10'),_0x53b446,_0x64b6('0x11'));logger['debug'](_0x64b6('0x12'),_0x53b446,_0x64b6('0x11'),JSON[_0x64b6('0x13')](_0x5aa9df));if(_0x5aa9df['error']){if(_0x5aa9df[_0x64b6('0x14')]['code']===0x1f4){logger[_0x64b6('0x14')](_0x64b6('0x10'),_0x53b446,_0x5aa9df[_0x64b6('0x14')][_0x64b6('0x15')]);return _0x2cb44c(_0x5aa9df[_0x64b6('0x14')][_0x64b6('0x15')]);}logger[_0x64b6('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x53b446,_0x5aa9df[_0x64b6('0x14')][_0x64b6('0x15')]);return _0x3d3017(_0x5aa9df[_0x64b6('0x14')][_0x64b6('0x15')]);}else{logger[_0x64b6('0xf')](_0x64b6('0x10'),_0x53b446,_0x64b6('0x11'));_0x3d3017(_0x5aa9df[_0x64b6('0x16')][_0x64b6('0x15')]);}})[_0x64b6('0x17')](function(_0x92a7ef){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x53b446,_0x92a7ef);_0x2cb44c(_0x92a7ef);});});}exports['GetVoiceQueue']=function(_0x3fa808){var _0x41dd3d=this;return new Promise(function(_0x379c4a,_0x14bc5e){return db[_0x64b6('0x18')][_0x64b6('0x19')]({'raw':_0x3fa808[_0x64b6('0x1a')]?_0x3fa808[_0x64b6('0x1a')][_0x64b6('0x1b')]===undefined?!![]:![]:!![],'where':_0x3fa808[_0x64b6('0x1a')]?_0x3fa808[_0x64b6('0x1a')]['where']||null:null,'attributes':_0x3fa808['options']?_0x3fa808['options'][_0x64b6('0x1c')]||null:null,'limit':_0x3fa808[_0x64b6('0x1a')]?_0x3fa808[_0x64b6('0x1a')]['limit']||null:null,'include':_0x3fa808[_0x64b6('0x1a')]?_0x3fa808['options'][_0x64b6('0x1d')]?_[_0x64b6('0x1e')](_0x3fa808[_0x64b6('0x1a')]['include'],function(_0x548b74){return{'model':db[_0x548b74['model']],'as':_0x548b74['as'],'attributes':_0x548b74['attributes'],'include':_0x548b74[_0x64b6('0x1d')]?_[_0x64b6('0x1e')](_0x548b74['include'],function(_0x1526d7){return{'model':db[_0x1526d7[_0x64b6('0x1f')]],'as':_0x1526d7['as'],'attributes':_0x1526d7[_0x64b6('0x1c')],'include':_0x1526d7[_0x64b6('0x1d')]?_[_0x64b6('0x1e')](_0x1526d7[_0x64b6('0x1d')],function(_0x391cb2){return{'model':db[_0x391cb2[_0x64b6('0x1f')]],'as':_0x391cb2['as'],'attributes':_0x391cb2[_0x64b6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x64b6('0x20')](function(_0xa5779){logger[_0x64b6('0xf')](_0x64b6('0x21'),_0x3fa808);logger['debug'](_0x64b6('0x21'),_0x3fa808,JSON['stringify'](_0xa5779));_0x379c4a(_0xa5779);})['catch'](function(_0x3d52dd){logger[_0x64b6('0x14')](_0x64b6('0x21'),_0x3d52dd[_0x64b6('0x15')],_0x3fa808);_0x14bc5e(_0x41dd3d[_0x64b6('0x14')](0x1f4,_0x3d52dd[_0x64b6('0x15')]));});});};exports[_0x64b6('0x22')]=function(_0x3a8faa){var _0x33f05a=this;return new Promise(function(_0x32412a,_0x3453f9){return db['VoiceQueue']['find']({'raw':_0x3a8faa['options']?_0x3a8faa['options'][_0x64b6('0x1b')]===undefined?!![]:![]:!![],'where':_0x3a8faa['options']?_0x3a8faa[_0x64b6('0x1a')][_0x64b6('0x23')]||null:null,'attributes':_0x3a8faa[_0x64b6('0x1a')]?_0x3a8faa[_0x64b6('0x1a')][_0x64b6('0x1c')]||null:null,'include':_0x3a8faa['options']?_0x3a8faa['options'][_0x64b6('0x1d')]?_[_0x64b6('0x1e')](_0x3a8faa[_0x64b6('0x1a')][_0x64b6('0x1d')],function(_0x8deeab){return{'model':db[_0x8deeab['model']],'as':_0x8deeab['as'],'attributes':_0x8deeab[_0x64b6('0x1c')],'include':_0x8deeab[_0x64b6('0x1d')]?_[_0x64b6('0x1e')](_0x8deeab[_0x64b6('0x1d')],function(_0x4ffb6d){return{'model':db[_0x4ffb6d[_0x64b6('0x1f')]],'as':_0x4ffb6d['as'],'attributes':_0x4ffb6d[_0x64b6('0x1c')],'include':_0x4ffb6d[_0x64b6('0x1d')]?_[_0x64b6('0x1e')](_0x4ffb6d[_0x64b6('0x1d')],function(_0x5f01f9){return{'model':db[_0x5f01f9[_0x64b6('0x1f')]],'as':_0x5f01f9['as'],'attributes':_0x5f01f9[_0x64b6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x64b6('0x20')](function(_0x5c48e6){logger['info']('ShowVoiceQueue',_0x3a8faa);logger[_0x64b6('0x24')](_0x64b6('0x22'),_0x3a8faa,JSON[_0x64b6('0x13')](_0x5c48e6));_0x32412a(_0x5c48e6);})[_0x64b6('0x17')](function(_0x3389d8){logger[_0x64b6('0x14')](_0x64b6('0x22'),_0x3389d8[_0x64b6('0x15')],_0x3a8faa);_0x3453f9(_0x33f05a[_0x64b6('0x14')](0x1f4,_0x3389d8[_0x64b6('0x15')]));});});};
\ No newline at end of file
+var _0xc1d1=['GetVoiceQueue','findAll','options','raw','where','attributes','limit','include','model','map','ShowVoiceQueue','VoiceQueue','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','stringify','error','code','message','VoiceQueue,\x20%s,\x20%s','request\x20sent','result','catch'];(function(_0x2a2007,_0x43332a){var _0x1be20d=function(_0x11f394){while(--_0x11f394){_0x2a2007['push'](_0x2a2007['shift']());}};_0x1be20d(++_0x43332a);}(_0xc1d1,0x14d));var _0x1c1d=function(_0x2bc66a,_0x3d75c5){_0x2bc66a=_0x2bc66a-0x0;var _0x252f76=_0xc1d1[_0x2bc66a];return _0x252f76;};'use strict';var _=require(_0x1c1d('0x0'));var util=require(_0x1c1d('0x1'));var moment=require(_0x1c1d('0x2'));var BPromise=require(_0x1c1d('0x3'));var rs=require(_0x1c1d('0x4'));var fs=require('fs');var Redis=require(_0x1c1d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1c1d('0x6'));var logger=require(_0x1c1d('0x7'))('rpc');var config=require(_0x1c1d('0x8'));var jayson=require(_0x1c1d('0x9'));var client=jayson[_0x1c1d('0xa')][_0x1c1d('0xb')]({'port':0x232a});config[_0x1c1d('0xc')]=_[_0x1c1d('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1c1d('0xe'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x1c1d('0xf')](socket);function respondWithRpcPromise(_0x1bbbe4,_0x28682c,_0x365ed2){return new BPromise(function(_0x5e8d94,_0x3d152f){return client[_0x1c1d('0x10')](_0x1bbbe4,_0x365ed2)[_0x1c1d('0x11')](function(_0xa7af2d){logger[_0x1c1d('0x12')]('VoiceQueue,\x20%s,\x20%s',_0x28682c,'request\x20sent');logger['debug']('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x28682c,'request\x20sent',JSON[_0x1c1d('0x13')](_0xa7af2d));if(_0xa7af2d[_0x1c1d('0x14')]){if(_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x15')]===0x1f4){logger[_0x1c1d('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x28682c,_0xa7af2d['error'][_0x1c1d('0x16')]);return _0x3d152f(_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x16')]);}logger[_0x1c1d('0x14')](_0x1c1d('0x17'),_0x28682c,_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x16')]);return _0x5e8d94(_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x16')]);}else{logger[_0x1c1d('0x12')](_0x1c1d('0x17'),_0x28682c,_0x1c1d('0x18'));_0x5e8d94(_0xa7af2d[_0x1c1d('0x19')][_0x1c1d('0x16')]);}})[_0x1c1d('0x1a')](function(_0x50e8da){logger[_0x1c1d('0x14')](_0x1c1d('0x17'),_0x28682c,_0x50e8da);_0x3d152f(_0x50e8da);});});}exports[_0x1c1d('0x1b')]=function(_0x166510){var _0x28926f=this;return new Promise(function(_0x22e318,_0x3a22e8){return db['VoiceQueue'][_0x1c1d('0x1c')]({'raw':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x1e')]===undefined?!![]:![]:!![],'where':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x1f')]||null:null,'attributes':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x20')]||null:null,'limit':_0x166510['options']?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x21')]||null:null,'include':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x22')]?_['map'](_0x166510['options'][_0x1c1d('0x22')],function(_0x132b25){return{'model':db[_0x132b25[_0x1c1d('0x23')]],'as':_0x132b25['as'],'attributes':_0x132b25[_0x1c1d('0x20')],'include':_0x132b25[_0x1c1d('0x22')]?_[_0x1c1d('0x24')](_0x132b25[_0x1c1d('0x22')],function(_0x2f6ff3){return{'model':db[_0x2f6ff3[_0x1c1d('0x23')]],'as':_0x2f6ff3['as'],'attributes':_0x2f6ff3[_0x1c1d('0x20')],'include':_0x2f6ff3[_0x1c1d('0x22')]?_[_0x1c1d('0x24')](_0x2f6ff3['include'],function(_0x5c526){return{'model':db[_0x5c526[_0x1c1d('0x23')]],'as':_0x5c526['as'],'attributes':_0x5c526['attributes']};}):[]};}):[]};}):[]:[]})[_0x1c1d('0x11')](function(_0x3eeb04){logger[_0x1c1d('0x12')]('GetVoiceQueue',_0x166510);logger['debug'](_0x1c1d('0x1b'),_0x166510,JSON[_0x1c1d('0x13')](_0x3eeb04));_0x22e318(_0x3eeb04);})[_0x1c1d('0x1a')](function(_0x47c96e){logger[_0x1c1d('0x14')](_0x1c1d('0x1b'),_0x47c96e[_0x1c1d('0x16')],_0x166510);_0x3a22e8(_0x28926f[_0x1c1d('0x14')](0x1f4,_0x47c96e[_0x1c1d('0x16')]));});});};exports[_0x1c1d('0x25')]=function(_0x5a963d){var _0x40e0d4=this;return new Promise(function(_0x3410b9,_0x50d281){return db[_0x1c1d('0x26')]['find']({'raw':_0x5a963d['options']?_0x5a963d['options'][_0x1c1d('0x1e')]===undefined?!![]:![]:!![],'where':_0x5a963d[_0x1c1d('0x1d')]?_0x5a963d[_0x1c1d('0x1d')]['where']||null:null,'attributes':_0x5a963d[_0x1c1d('0x1d')]?_0x5a963d[_0x1c1d('0x1d')][_0x1c1d('0x20')]||null:null,'include':_0x5a963d[_0x1c1d('0x1d')]?_0x5a963d[_0x1c1d('0x1d')]['include']?_['map'](_0x5a963d['options']['include'],function(_0x384fa5){return{'model':db[_0x384fa5[_0x1c1d('0x23')]],'as':_0x384fa5['as'],'attributes':_0x384fa5[_0x1c1d('0x20')],'include':_0x384fa5[_0x1c1d('0x22')]?_[_0x1c1d('0x24')](_0x384fa5[_0x1c1d('0x22')],function(_0x2da0ee){return{'model':db[_0x2da0ee[_0x1c1d('0x23')]],'as':_0x2da0ee['as'],'attributes':_0x2da0ee['attributes'],'include':_0x2da0ee[_0x1c1d('0x22')]?_['map'](_0x2da0ee[_0x1c1d('0x22')],function(_0x5f0938){return{'model':db[_0x5f0938[_0x1c1d('0x23')]],'as':_0x5f0938['as'],'attributes':_0x5f0938[_0x1c1d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x1c1d('0x11')](function(_0x7b2e31){logger[_0x1c1d('0x12')]('ShowVoiceQueue',_0x5a963d);logger[_0x1c1d('0x27')](_0x1c1d('0x25'),_0x5a963d,JSON['stringify'](_0x7b2e31));_0x3410b9(_0x7b2e31);})['catch'](function(_0x2b4458){logger[_0x1c1d('0x14')](_0x1c1d('0x25'),_0x2b4458[_0x1c1d('0x16')],_0x5a963d);_0x50d281(_0x40e0d4[_0x1c1d('0x14')](0x1f4,_0x2b4458[_0x1c1d('0x16')]));});});};
\ No newline at end of file
index d8ffe92..dcfe290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e61=['./voiceQueue.events','remove','update','emit','removeListener','register','voiceQueue:'];(function(_0x25ddbd,_0x47e65a){var _0x424386=function(_0x357c1b){while(--_0x357c1b){_0x25ddbd['push'](_0x25ddbd['shift']());}};_0x424386(++_0x47e65a);}(_0x6e61,0x188));var _0x16e6=function(_0x1ef4dc,_0x26c59e){_0x1ef4dc=_0x1ef4dc-0x0;var _0x2f8bb6=_0x6e61[_0x1ef4dc];return _0x2f8bb6;};'use strict';var VoiceQueueEvents=require(_0x16e6('0x0'));var events=['save',_0x16e6('0x1'),_0x16e6('0x2')];function createListener(_0x56a5dd,_0x34a9ba){return function(_0x45fccd){_0x34a9ba[_0x16e6('0x3')](_0x56a5dd,_0x45fccd);};}function removeListener(_0x22926a,_0x36ea26){return function(){VoiceQueueEvents[_0x16e6('0x4')](_0x22926a,_0x36ea26);};}exports[_0x16e6('0x5')]=function(_0x11a0a4){for(var _0x3d0582=0x0,_0x5d3f60=events['length'];_0x3d0582<_0x5d3f60;_0x3d0582++){var _0x39211c=events[_0x3d0582];var _0x231cba=createListener(_0x16e6('0x6')+_0x39211c,_0x11a0a4);VoiceQueueEvents['on'](_0x39211c,_0x231cba);}};
\ No newline at end of file
+var _0xe0ad=['register','./voiceQueue.events','save','remove','update','emit','removeListener'];(function(_0x559a56,_0x393c90){var _0x331669=function(_0x5d23ff){while(--_0x5d23ff){_0x559a56['push'](_0x559a56['shift']());}};_0x331669(++_0x393c90);}(_0xe0ad,0x12e));var _0xde0a=function(_0x384bc2,_0x59639d){_0x384bc2=_0x384bc2-0x0;var _0x2cd106=_0xe0ad[_0x384bc2];return _0x2cd106;};'use strict';var VoiceQueueEvents=require(_0xde0a('0x0'));var events=[_0xde0a('0x1'),_0xde0a('0x2'),_0xde0a('0x3')];function createListener(_0x3b18f6,_0x540907){return function(_0x3e5f38){_0x540907[_0xde0a('0x4')](_0x3b18f6,_0x3e5f38);};}function removeListener(_0x14139d,_0x2bcc95){return function(){VoiceQueueEvents[_0xde0a('0x5')](_0x14139d,_0x2bcc95);};}exports[_0xde0a('0x6')]=function(_0xb9635f){for(var _0x425784=0x0,_0x5e457b=events['length'];_0x425784<_0x5e457b;_0x425784++){var _0x50eb82=events[_0x425784];var _0x2f553b=createListener('voiceQueue:'+_0x50eb82,_0xb9635f);VoiceQueueEvents['on'](_0x50eb82,_0x2f553b);}};
\ No newline at end of file
index a193104..4c75607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cb6=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','describe','/index','/:id','create','update','delete','exports','multer','path','connect-timeout','Router','fs-extra'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x5cb6,0x67));var _0x65cb=function(_0x32c57d,_0x4b455a){_0x32c57d=_0x32c57d-0x0;var _0x353d7f=_0x5cb6[_0x32c57d];return _0x353d7f;};'use strict';var multer=require(_0x65cb('0x0'));var util=require('util');var path=require(_0x65cb('0x1'));var timeout=require(_0x65cb('0x2'));var express=require('express');var router=express[_0x65cb('0x3')]();var fs_extra=require(_0x65cb('0x4'));var auth=require(_0x65cb('0x5'));var interaction=require(_0x65cb('0x6'));var config=require(_0x65cb('0x7'));var controller=require(_0x65cb('0x8'));router[_0x65cb('0x9')]('/',auth[_0x65cb('0xa')](),controller['index']);router[_0x65cb('0x9')]('/describe',auth[_0x65cb('0xa')](),controller[_0x65cb('0xb')]);router[_0x65cb('0x9')](_0x65cb('0xc'),auth[_0x65cb('0xa')](),controller['getVoiceQueuesReport']);router[_0x65cb('0x9')](_0x65cb('0xd'),auth[_0x65cb('0xa')](),controller['show']);router['post']('/',auth[_0x65cb('0xa')](),controller[_0x65cb('0xe')]);router['put'](_0x65cb('0xd'),auth['isAuthenticated'](),controller[_0x65cb('0xf')]);router[_0x65cb('0x10')](_0x65cb('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x65cb('0x11')]=router;
\ No newline at end of file
+var _0x8c92=['fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','post','create','/:id','update','delete','destroy','exports','util','path','connect-timeout','Router'];(function(_0x5e13af,_0x5461e0){var _0x3dbfa0=function(_0x44c302){while(--_0x44c302){_0x5e13af['push'](_0x5e13af['shift']());}};_0x3dbfa0(++_0x5461e0);}(_0x8c92,0x6a));var _0x28c9=function(_0x31ca49,_0x5e6186){_0x31ca49=_0x31ca49-0x0;var _0x59548b=_0x8c92[_0x31ca49];return _0x59548b;};'use strict';var multer=require('multer');var util=require(_0x28c9('0x0'));var path=require(_0x28c9('0x1'));var timeout=require(_0x28c9('0x2'));var express=require('express');var router=express[_0x28c9('0x3')]();var fs_extra=require(_0x28c9('0x4'));var auth=require(_0x28c9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x28c9('0x6'));var controller=require(_0x28c9('0x7'));router[_0x28c9('0x8')]('/',auth[_0x28c9('0x9')](),controller[_0x28c9('0xa')]);router[_0x28c9('0x8')](_0x28c9('0xb'),auth['isAuthenticated'](),controller[_0x28c9('0xc')]);router[_0x28c9('0x8')](_0x28c9('0xd'),auth['isAuthenticated'](),controller[_0x28c9('0xe')]);router[_0x28c9('0x8')]('/:id',auth[_0x28c9('0x9')](),controller['show']);router[_0x28c9('0xf')]('/',auth[_0x28c9('0x9')](),controller[_0x28c9('0x10')]);router['put'](_0x28c9('0x11'),auth[_0x28c9('0x9')](),controller[_0x28c9('0x12')]);router[_0x28c9('0x13')](_0x28c9('0x11'),auth[_0x28c9('0x9')](),controller[_0x28c9('0x14')]);module[_0x28c9('0x15')]=router;
\ No newline at end of file
index 786415e..78b4566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x391c=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','getDataValue','format','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x391c,0x199));var _0xc391=function(_0x131b4b,_0x5f3de3){_0x131b4b=_0x131b4b-0x0;var _0x4ac9bd=_0x391c[_0x131b4b];return _0x4ac9bd;};'use strict';var Sequelize=require(_0xc391('0x0'));var moment=require('moment');module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xc391('0x1')]},'calleridnum':{'type':Sequelize[_0xc391('0x1')]},'calleridname':{'type':Sequelize[_0xc391('0x1')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0xc391('0x2')]},'queuecallerleaveAt':{'type':Sequelize[_0xc391('0x2')],'set':function(_0x5c2838){var _0x296072=moment(_0x5c2838);var _0x158f9a=moment(this[_0xc391('0x3')]('queuecallerjoinAt'))[_0xc391('0x4')]('YYYY-MM-DD\x20HH:mm:ss');var _0x2ba61b=_0x296072['diff'](_0x158f9a,'seconds');this[_0xc391('0x5')](_0xc391('0x6'),_0x5c2838);this[_0xc391('0x5')](_0xc391('0x7'),_0x2ba61b||null);}},'position':{'type':Sequelize[_0xc391('0x8')]},'count':{'type':Sequelize[_0xc391('0x8')]},'queuecallerabandon':{'type':Sequelize[_0xc391('0x9')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xc391('0x2')]},'queuecallercomplete':{'type':Sequelize[_0xc391('0x9')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xc391('0x2')]},'queuecallerexit':{'type':Sequelize[_0xc391('0x9')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xc391('0x2')]},'queuecallerexitreason':{'type':Sequelize[_0xc391('0x1')],'comment':_0xc391('0xa')},'originalposition':{'type':Sequelize[_0xc391('0x8')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xc391('0x1')]},'connectedlinename':{'type':Sequelize[_0xc391('0x1')]},'accountcode':{'type':Sequelize[_0xc391('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xc391('0x1')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0xc391('0x8')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xc391('0x9')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xc391('0x9')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xc391('0xb')},'transferexten':{'type':Sequelize[_0xc391('0x1')]},'transferuniqueid':{'type':Sequelize[_0xc391('0x1')]},'disposition':{'type':Sequelize[_0xc391('0x1')]},'secondDisposition':{'type':Sequelize[_0xc391('0x1')]},'thirdDisposition':{'type':Sequelize[_0xc391('0x1')]},'queuecallerenterreason':{'type':Sequelize[_0xc391('0x8')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x55e5=['queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE'];(function(_0x5baa24,_0x19fdfd){var _0x1216e0=function(_0x373cbd){while(--_0x373cbd){_0x5baa24['push'](_0x5baa24['shift']());}};_0x1216e0(++_0x19fdfd);}(_0x55e5,0xe9));var _0x555e=function(_0xc537ae,_0x129a0b){_0xc537ae=_0xc537ae-0x0;var _0x3162e4=_0x55e5[_0xc537ae];return _0x3162e4;};'use strict';var Sequelize=require(_0x555e('0x0'));var moment=require(_0x555e('0x1'));module[_0x555e('0x2')]={'type':{'type':Sequelize[_0x555e('0x3')]},'uniqueid':{'type':Sequelize[_0x555e('0x3')]},'calleridnum':{'type':Sequelize[_0x555e('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x555e('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x555e('0x4')],'set':function(_0x4009ee){var _0x2e9c7f=moment(_0x4009ee);var _0x25c0bd=moment(this['getDataValue'](_0x555e('0x5')))['format'](_0x555e('0x6'));var _0xf250de=_0x2e9c7f['diff'](_0x25c0bd,_0x555e('0x7'));this[_0x555e('0x8')]('queuecallerleaveAt',_0x4009ee);this['setDataValue'](_0x555e('0x9'),_0xf250de||null);}},'position':{'type':Sequelize[_0x555e('0xa')]},'count':{'type':Sequelize[_0x555e('0xa')]},'queuecallerabandon':{'type':Sequelize[_0x555e('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x555e('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallerexit':{'type':Sequelize[_0x555e('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x555e('0xc')},'originalposition':{'type':Sequelize[_0x555e('0xa')]},'channel':{'type':Sequelize[_0x555e('0x3')]},'connectedlinenum':{'type':Sequelize[_0x555e('0x3')]},'connectedlinename':{'type':Sequelize[_0x555e('0x3')]},'accountcode':{'type':Sequelize[_0x555e('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x555e('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x555e('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x555e('0xd')},'transferexten':{'type':Sequelize[_0x555e('0x3')]},'transferuniqueid':{'type':Sequelize[_0x555e('0x3')]},'disposition':{'type':Sequelize[_0x555e('0x3')]},'secondDisposition':{'type':Sequelize[_0x555e('0x3')]},'thirdDisposition':{'type':Sequelize[_0x555e('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x555e('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index 9956c54..ca871c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b5=['key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','params','find','create','body','destroy','catch','describe','getVoiceQueuesReport','sort','pick','include','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','end','status','offset','undefined','limit','count','set','reject','update','then','sendStatus','error','stack','name','send','map','VoiceQueueReport','rawAttributes','fieldName','type'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0xa9b5,0x1d4));var _0x5a9b=function(_0x282553,_0x62a377){_0x282553=_0x282553-0x0;var _0x3420dc=_0xa9b5[_0x282553];return _0x3420dc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5a9b('0x0'));var zipdir=require(_0x5a9b('0x1'));var jsonpatch=require(_0x5a9b('0x2'));var rp=require('request-promise');var moment=require(_0x5a9b('0x3'));var BPromise=require(_0x5a9b('0x4'));var Mustache=require(_0x5a9b('0x5'));var util=require('util');var path=require(_0x5a9b('0x6'));var sox=require(_0x5a9b('0x7'));var csv=require('to-csv');var ejs=require(_0x5a9b('0x8'));var fs=require('fs');var fs_extra=require(_0x5a9b('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5a9b('0xa'));var jsforce=require(_0x5a9b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x5a9b('0xc'));var querystring=require(_0x5a9b('0xd'));var Papa=require(_0x5a9b('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5a9b('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5a9b('0x10'));var config=require(_0x5a9b('0x11'));var licenseUtil=require(_0x5a9b('0x12'));var db=require('../../mysqldb')['db'];config[_0x5a9b('0x13')]=_[_0x5a9b('0x14')](config[_0x5a9b('0x13')],{'host':_0x5a9b('0x15'),'port':0x18eb});var socket=require(_0x5a9b('0x16'))(new Redis(config['redis']));require('./voiceQueueReport.socket')['register'](socket);function respondWithStatusCode(_0x3ef27a,_0x263a55){_0x263a55=_0x263a55||0xcc;return function(_0x24eb52){if(_0x24eb52){return _0x3ef27a['sendStatus'](_0x263a55);}return _0x3ef27a['status'](_0x263a55)[_0x5a9b('0x17')]();};}function respondWithResult(_0x2f934d,_0x4173b7){_0x4173b7=_0x4173b7||0xc8;return function(_0x11f810){if(_0x11f810){return _0x2f934d[_0x5a9b('0x18')](_0x4173b7)['json'](_0x11f810);}};}function respondWithFilteredResult(_0x1de32b,_0x2b70df){return function(_0xb62a91){if(_0xb62a91){var _0x1f4c80=typeof _0x2b70df[_0x5a9b('0x19')]===_0x5a9b('0x1a')&&typeof _0x2b70df[_0x5a9b('0x1b')]===_0x5a9b('0x1a');var _0x3e56ea=_0xb62a91['count'];var _0x4501bf=_0x1f4c80?0x0:_0x2b70df[_0x5a9b('0x19')];var _0x5ea00d=_0x1f4c80?_0xb62a91[_0x5a9b('0x1c')]:_0x2b70df[_0x5a9b('0x19')]+_0x2b70df[_0x5a9b('0x1b')];var _0x12f0f5;if(_0x5ea00d>=_0x3e56ea){_0x5ea00d=_0x3e56ea;_0x12f0f5=0xc8;}else{_0x12f0f5=0xce;}_0x1de32b['status'](_0x12f0f5);return _0x1de32b[_0x5a9b('0x1d')]('Content-Range',_0x4501bf+'-'+_0x5ea00d+'/'+_0x3e56ea)['json'](_0xb62a91);}return null;};}function patchUpdates(_0x1d687e){return function(_0x284865){try{jsonpatch['apply'](_0x284865,_0x1d687e,!![]);}catch(_0x250418){return BPromise[_0x5a9b('0x1e')](_0x250418);}return _0x284865['save']();};}function saveUpdates(_0x4a8d00,_0x4e8557){return function(_0x45710e){if(_0x45710e){return _0x45710e[_0x5a9b('0x1f')](_0x4a8d00)[_0x5a9b('0x20')](function(_0x3d7dae){return _0x3d7dae;});}return null;};}function removeEntity(_0xe3fc91,_0x142efc){return function(_0x379343){if(_0x379343){return _0x379343['destroy']()['then'](function(){_0xe3fc91[_0x5a9b('0x18')](0xcc)[_0x5a9b('0x17')]();});}};}function handleEntityNotFound(_0x5cd630,_0x149a2a){return function(_0x532474){if(!_0x532474){_0x5cd630[_0x5a9b('0x21')](0x194);}return _0x532474;};}function handleError(_0x208fbb,_0x231d1f){_0x231d1f=_0x231d1f||0x1f4;return function(_0x227df9){logger[_0x5a9b('0x22')](_0x227df9[_0x5a9b('0x23')]);if(_0x227df9['name']){delete _0x227df9[_0x5a9b('0x24')];}_0x208fbb[_0x5a9b('0x18')](_0x231d1f)[_0x5a9b('0x25')](_0x227df9);};}exports['index']=function(_0x3f367f,_0x8e2478){var _0x5f052c={},_0x51b43b={},_0xca634b={'count':0x0,'rows':[]};var _0x4bc2ac=_[_0x5a9b('0x26')](db[_0x5a9b('0x27')][_0x5a9b('0x28')],function(_0x2cfdb6){return{'name':_0x2cfdb6[_0x5a9b('0x29')],'type':_0x2cfdb6[_0x5a9b('0x2a')][_0x5a9b('0x2b')]};});_0x51b43b['model']=_[_0x5a9b('0x26')](_0x4bc2ac,_0x5a9b('0x24'));_0x51b43b[_0x5a9b('0x2c')]=_[_0x5a9b('0x2d')](_0x3f367f[_0x5a9b('0x2c')]);_0x51b43b[_0x5a9b('0x2e')]=_[_0x5a9b('0x2f')](_0x51b43b[_0x5a9b('0x30')],_0x51b43b[_0x5a9b('0x2c')]);_0x5f052c['attributes']=_[_0x5a9b('0x2f')](_0x51b43b['model'],qs[_0x5a9b('0x31')](_0x3f367f[_0x5a9b('0x2c')][_0x5a9b('0x31')]));_0x5f052c[_0x5a9b('0x32')]=_0x5f052c[_0x5a9b('0x32')][_0x5a9b('0x33')]?_0x5f052c[_0x5a9b('0x32')]:_0x51b43b[_0x5a9b('0x30')];if(!_0x3f367f['query']['hasOwnProperty'](_0x5a9b('0x34'))){_0x5f052c[_0x5a9b('0x1b')]=qs[_0x5a9b('0x1b')](_0x3f367f[_0x5a9b('0x2c')][_0x5a9b('0x1b')]);_0x5f052c[_0x5a9b('0x19')]=qs[_0x5a9b('0x19')](_0x3f367f[_0x5a9b('0x2c')]['offset']);}_0x5f052c[_0x5a9b('0x35')]=qs['sort'](_0x3f367f['query']['sort']);_0x5f052c['where']=qs[_0x5a9b('0x2e')](_['pick'](_0x3f367f[_0x5a9b('0x2c')],_0x51b43b['filters']),_0x4bc2ac);if(_0x3f367f[_0x5a9b('0x2c')][_0x5a9b('0x36')]){_0x5f052c[_0x5a9b('0x37')]=_[_0x5a9b('0x38')](_0x5f052c[_0x5a9b('0x37')],{'$or':_[_0x5a9b('0x26')](_0x4bc2ac,function(_0x5c0107){if(_0x5c0107[_0x5a9b('0x2a')]!==_0x5a9b('0x39')){var _0x554455={};_0x554455[_0x5c0107['name']]={'$like':'%'+_0x3f367f[_0x5a9b('0x2c')][_0x5a9b('0x36')]+'%'};return _0x554455;}})});}_0x5f052c=_[_0x5a9b('0x38')]({},_0x5f052c,_0x3f367f[_0x5a9b('0x3a')]);var _0x5affa1={'where':_0x5f052c[_0x5a9b('0x37')]};return db[_0x5a9b('0x27')][_0x5a9b('0x1c')](_0x5affa1)[_0x5a9b('0x20')](function(_0x2eec49){_0xca634b['count']=_0x2eec49;if(_0x3f367f[_0x5a9b('0x2c')][_0x5a9b('0x3b')]){_0x5f052c['include']=[{'all':!![]}];}return db[_0x5a9b('0x27')][_0x5a9b('0x3c')](_0x5f052c);})[_0x5a9b('0x20')](function(_0x2a0846){_0xca634b[_0x5a9b('0x3d')]=_0x2a0846;return _0xca634b;})['then'](respondWithFilteredResult(_0x8e2478,_0x5f052c))['catch'](handleError(_0x8e2478,null));};exports['show']=function(_0x3a143e,_0x5f0ef8){var _0x19b69e={'raw':![],'where':{'id':_0x3a143e[_0x5a9b('0x3e')]['id']}},_0xd73505={};_0xd73505[_0x5a9b('0x30')]=_[_0x5a9b('0x2d')](db[_0x5a9b('0x27')][_0x5a9b('0x28')]);_0xd73505['query']=_[_0x5a9b('0x2d')](_0x3a143e['query']);_0xd73505[_0x5a9b('0x2e')]=_[_0x5a9b('0x2f')](_0xd73505[_0x5a9b('0x30')],_0xd73505[_0x5a9b('0x2c')]);_0x19b69e['attributes']=_[_0x5a9b('0x2f')](_0xd73505[_0x5a9b('0x30')],qs[_0x5a9b('0x31')](_0x3a143e['query'][_0x5a9b('0x31')]));_0x19b69e[_0x5a9b('0x32')]=_0x19b69e[_0x5a9b('0x32')]['length']?_0x19b69e[_0x5a9b('0x32')]:_0xd73505[_0x5a9b('0x30')];if(_0x3a143e[_0x5a9b('0x2c')]['includeAll']){_0x19b69e['include']=[{'all':!![]}];}_0x19b69e=_['merge']({},_0x19b69e,_0x3a143e[_0x5a9b('0x3a')]);return db['VoiceQueueReport'][_0x5a9b('0x3f')](_0x19b69e)['then'](handleEntityNotFound(_0x5f0ef8,null))[_0x5a9b('0x20')](respondWithResult(_0x5f0ef8,null))['catch'](handleError(_0x5f0ef8,null));};exports[_0x5a9b('0x40')]=function(_0x1a297d,_0xc5bd6e){return db['VoiceQueueReport'][_0x5a9b('0x40')](_0x1a297d['body'],{})[_0x5a9b('0x20')](respondWithResult(_0xc5bd6e,0xc9))['catch'](handleError(_0xc5bd6e,null));};exports[_0x5a9b('0x1f')]=function(_0x24fd9b,_0x308e80){if(_0x24fd9b[_0x5a9b('0x41')]['id']){delete _0x24fd9b[_0x5a9b('0x41')]['id'];}return db[_0x5a9b('0x27')][_0x5a9b('0x3f')]({'where':{'id':_0x24fd9b[_0x5a9b('0x3e')]['id']}})[_0x5a9b('0x20')](handleEntityNotFound(_0x308e80,null))[_0x5a9b('0x20')](saveUpdates(_0x24fd9b[_0x5a9b('0x41')],null))[_0x5a9b('0x20')](respondWithResult(_0x308e80,null))['catch'](handleError(_0x308e80,null));};exports[_0x5a9b('0x42')]=function(_0x3f35b2,_0x4f0c26){return db[_0x5a9b('0x27')][_0x5a9b('0x3f')]({'where':{'id':_0x3f35b2[_0x5a9b('0x3e')]['id']}})[_0x5a9b('0x20')](handleEntityNotFound(_0x4f0c26,null))['then'](removeEntity(_0x4f0c26,null))[_0x5a9b('0x43')](handleError(_0x4f0c26,null));};exports['describe']=function(_0x527a34,_0x5078a7){return db[_0x5a9b('0x27')][_0x5a9b('0x44')]()[_0x5a9b('0x20')](respondWithResult(_0x5078a7,null))[_0x5a9b('0x43')](handleError(_0x5078a7,null));};exports[_0x5a9b('0x45')]=function(_0x51aefd,_0x31331b){var _0x861c5={},_0x4ba1a4={},_0x35724e={'count':0x0,'rows':[]};_0x4ba1a4[_0x5a9b('0x30')]=_[_0x5a9b('0x2d')](db[_0x5a9b('0x27')][_0x5a9b('0x28')]);_0x4ba1a4[_0x5a9b('0x2c')]=_[_0x5a9b('0x2d')](_0x51aefd[_0x5a9b('0x2c')]);_0x4ba1a4[_0x5a9b('0x2e')]=_[_0x5a9b('0x2f')](_0x4ba1a4[_0x5a9b('0x30')],_0x4ba1a4[_0x5a9b('0x2c')]);_0x861c5[_0x5a9b('0x32')]=_[_0x5a9b('0x2f')](_0x4ba1a4[_0x5a9b('0x30')],qs['fields'](_0x51aefd[_0x5a9b('0x2c')][_0x5a9b('0x31')]));_0x861c5[_0x5a9b('0x32')]=_0x861c5[_0x5a9b('0x32')][_0x5a9b('0x33')]?_0x861c5[_0x5a9b('0x32')]:_0x4ba1a4['model'];if(!_0x51aefd[_0x5a9b('0x2c')]['hasOwnProperty']('nolimit')){_0x861c5[_0x5a9b('0x1b')]=qs['limit'](_0x51aefd['query'][_0x5a9b('0x1b')]);_0x861c5[_0x5a9b('0x19')]=qs['offset'](_0x51aefd[_0x5a9b('0x2c')]['offset']);}_0x861c5['order']=qs[_0x5a9b('0x46')](_0x51aefd['query'][_0x5a9b('0x46')]);_0x861c5[_0x5a9b('0x37')]=qs[_0x5a9b('0x2e')](_[_0x5a9b('0x47')](_0x51aefd[_0x5a9b('0x2c')],_0x4ba1a4[_0x5a9b('0x2e')]));if(_0x51aefd[_0x5a9b('0x2c')]['filter']){_0x861c5[_0x5a9b('0x37')]=_[_0x5a9b('0x38')](_0x861c5[_0x5a9b('0x37')],{'$or':_[_0x5a9b('0x26')](_0x861c5['attributes'],function(_0x1c5941){var _0x1ed318={};_0x1ed318[_0x1c5941]={'$like':'%'+_0x51aefd['query'][_0x5a9b('0x36')]+'%'};return _0x1ed318;})});}_0x861c5=_['merge']({},_0x861c5,_0x51aefd[_0x5a9b('0x3a')]);var _0x5cfc52={'where':_0x861c5[_0x5a9b('0x37')]};return db[_0x5a9b('0x27')][_0x5a9b('0x1c')](_0x5cfc52)['then'](function(_0x4792b5){_0x35724e[_0x5a9b('0x1c')]=_0x4792b5;if(_0x51aefd['query'][_0x5a9b('0x3b')]){_0x861c5[_0x5a9b('0x48')]=[{'all':!![]}];}return db[_0x5a9b('0x27')][_0x5a9b('0x3c')](_0x861c5);})['then'](function(_0x19266c){_0x35724e[_0x5a9b('0x3d')]=_0x19266c;return _0x35724e;})[_0x5a9b('0x20')](respondWithFilteredResult(_0x31331b,_0x861c5,_0x5a9b('0x45')))[_0x5a9b('0x43')](handleError(_0x31331b,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0xaff8=['fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','rawAttributes','type','key','map','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','VoiceQueueReport','includeAll','findAll','rows','catch','params','length','options','find','create','body','describe','getVoiceQueuesReport','hasOwnProperty','filter','include','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs'];(function(_0x255ac0,_0x3f6645){var _0x437bf1=function(_0x5baff0){while(--_0x5baff0){_0x255ac0['push'](_0x255ac0['shift']());}};_0x437bf1(++_0x3f6645);}(_0xaff8,0xa2));var _0x8aff=function(_0x11ced7,_0x29a8b0){_0x11ced7=_0x11ced7-0x0;var _0x4bed14=_0xaff8[_0x11ced7];return _0x4bed14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8aff('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8aff('0x1'));var rp=require(_0x8aff('0x2'));var moment=require(_0x8aff('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8aff('0x4'));var util=require(_0x8aff('0x5'));var path=require(_0x8aff('0x6'));var sox=require(_0x8aff('0x7'));var csv=require(_0x8aff('0x8'));var ejs=require(_0x8aff('0x9'));var fs=require('fs');var fs_extra=require(_0x8aff('0xa'));var _=require(_0x8aff('0xb'));var squel=require(_0x8aff('0xc'));var crypto=require(_0x8aff('0xd'));var jsforce=require(_0x8aff('0xe'));var deskjs=require(_0x8aff('0xf'));var toCsv=require(_0x8aff('0x8'));var querystring=require('querystring');var Papa=require(_0x8aff('0x10'));var Redis=require(_0x8aff('0x11'));var authService=require(_0x8aff('0x12'));var qs=require(_0x8aff('0x13'));var as=require(_0x8aff('0x14'));var hardwareService=require(_0x8aff('0x15'));var logger=require(_0x8aff('0x16'))(_0x8aff('0x17'));var utils=require(_0x8aff('0x18'));var config=require(_0x8aff('0x19'));var licenseUtil=require(_0x8aff('0x1a'));var db=require(_0x8aff('0x1b'))['db'];config['redis']=_[_0x8aff('0x1c')](config['redis'],{'host':_0x8aff('0x1d'),'port':0x18eb});var socket=require(_0x8aff('0x1e'))(new Redis(config[_0x8aff('0x1f')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithStatusCode(_0x1cea29,_0x562143){_0x562143=_0x562143||0xcc;return function(_0x501a85){if(_0x501a85){return _0x1cea29[_0x8aff('0x20')](_0x562143);}return _0x1cea29[_0x8aff('0x21')](_0x562143)[_0x8aff('0x22')]();};}function respondWithResult(_0x3b75e7,_0xae6e19){_0xae6e19=_0xae6e19||0xc8;return function(_0x30265d){if(_0x30265d){return _0x3b75e7[_0x8aff('0x21')](_0xae6e19)[_0x8aff('0x23')](_0x30265d);}};}function respondWithFilteredResult(_0x336c42,_0x13e019){return function(_0x3097c5){if(_0x3097c5){var _0x2457f7=typeof _0x13e019[_0x8aff('0x24')]===_0x8aff('0x25')&&typeof _0x13e019[_0x8aff('0x26')]===_0x8aff('0x25');var _0x4c13d9=_0x3097c5[_0x8aff('0x27')];var _0x231f48=_0x2457f7?0x0:_0x13e019[_0x8aff('0x24')];var _0x479dd8=_0x2457f7?_0x3097c5[_0x8aff('0x27')]:_0x13e019[_0x8aff('0x24')]+_0x13e019[_0x8aff('0x26')];var _0x13be93;if(_0x479dd8>=_0x4c13d9){_0x479dd8=_0x4c13d9;_0x13be93=0xc8;}else{_0x13be93=0xce;}_0x336c42[_0x8aff('0x21')](_0x13be93);return _0x336c42[_0x8aff('0x28')](_0x8aff('0x29'),_0x231f48+'-'+_0x479dd8+'/'+_0x4c13d9)[_0x8aff('0x23')](_0x3097c5);}return null;};}function patchUpdates(_0x388963){return function(_0xc18c74){try{jsonpatch[_0x8aff('0x2a')](_0xc18c74,_0x388963,!![]);}catch(_0x300437){return BPromise[_0x8aff('0x2b')](_0x300437);}return _0xc18c74[_0x8aff('0x2c')]();};}function saveUpdates(_0x7148ce,_0x12d30d){return function(_0x204750){if(_0x204750){return _0x204750[_0x8aff('0x2d')](_0x7148ce)[_0x8aff('0x2e')](function(_0x3db9b9){return _0x3db9b9;});}return null;};}function removeEntity(_0x11bf5c,_0x5013d7){return function(_0x427089){if(_0x427089){return _0x427089[_0x8aff('0x2f')]()[_0x8aff('0x2e')](function(){_0x11bf5c[_0x8aff('0x21')](0xcc)[_0x8aff('0x22')]();});}};}function handleEntityNotFound(_0x1983be,_0x47c733){return function(_0x1f1c53){if(!_0x1f1c53){_0x1983be['sendStatus'](0x194);}return _0x1f1c53;};}function handleError(_0x1ffe25,_0x4ecfaa){_0x4ecfaa=_0x4ecfaa||0x1f4;return function(_0x856f6e){logger[_0x8aff('0x30')](_0x856f6e['stack']);if(_0x856f6e[_0x8aff('0x31')]){delete _0x856f6e[_0x8aff('0x31')];}_0x1ffe25['status'](_0x4ecfaa)[_0x8aff('0x32')](_0x856f6e);};}exports[_0x8aff('0x33')]=function(_0x54e8e6,_0x27b965){var _0x42f670={},_0xe4286e={},_0x49f6e4={'count':0x0,'rows':[]};var _0x494b32=_['map'](db['VoiceQueueReport'][_0x8aff('0x34')],function(_0x253878){return{'name':_0x253878['fieldName'],'type':_0x253878[_0x8aff('0x35')][_0x8aff('0x36')]};});_0xe4286e['model']=_[_0x8aff('0x37')](_0x494b32,_0x8aff('0x31'));_0xe4286e[_0x8aff('0x38')]=_[_0x8aff('0x39')](_0x54e8e6[_0x8aff('0x38')]);_0xe4286e[_0x8aff('0x3a')]=_[_0x8aff('0x3b')](_0xe4286e[_0x8aff('0x3c')],_0xe4286e[_0x8aff('0x38')]);_0x42f670[_0x8aff('0x3d')]=_[_0x8aff('0x3b')](_0xe4286e[_0x8aff('0x3c')],qs[_0x8aff('0x3e')](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x3e')]));_0x42f670[_0x8aff('0x3d')]=_0x42f670['attributes']['length']?_0x42f670[_0x8aff('0x3d')]:_0xe4286e[_0x8aff('0x3c')];if(!_0x54e8e6[_0x8aff('0x38')]['hasOwnProperty'](_0x8aff('0x3f'))){_0x42f670[_0x8aff('0x26')]=qs['limit'](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x26')]);_0x42f670[_0x8aff('0x24')]=qs[_0x8aff('0x24')](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x24')]);}_0x42f670[_0x8aff('0x40')]=qs[_0x8aff('0x41')](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x41')]);_0x42f670[_0x8aff('0x42')]=qs[_0x8aff('0x3a')](_[_0x8aff('0x43')](_0x54e8e6[_0x8aff('0x38')],_0xe4286e[_0x8aff('0x3a')]),_0x494b32);if(_0x54e8e6[_0x8aff('0x38')]['filter']){_0x42f670[_0x8aff('0x42')]=_[_0x8aff('0x44')](_0x42f670[_0x8aff('0x42')],{'$or':_[_0x8aff('0x37')](_0x494b32,function(_0x389960){if(_0x389960[_0x8aff('0x35')]!==_0x8aff('0x45')){var _0x22f5f4={};_0x22f5f4[_0x389960['name']]={'$like':'%'+_0x54e8e6[_0x8aff('0x38')]['filter']+'%'};return _0x22f5f4;}})});}_0x42f670=_[_0x8aff('0x44')]({},_0x42f670,_0x54e8e6['options']);var _0x33f79f={'where':_0x42f670['where']};return db[_0x8aff('0x46')]['count'](_0x33f79f)[_0x8aff('0x2e')](function(_0x1901f0){_0x49f6e4['count']=_0x1901f0;if(_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x47')]){_0x42f670['include']=[{'all':!![]}];}return db[_0x8aff('0x46')][_0x8aff('0x48')](_0x42f670);})[_0x8aff('0x2e')](function(_0x24f48e){_0x49f6e4[_0x8aff('0x49')]=_0x24f48e;return _0x49f6e4;})[_0x8aff('0x2e')](respondWithFilteredResult(_0x27b965,_0x42f670))[_0x8aff('0x4a')](handleError(_0x27b965,null));};exports['show']=function(_0x500ed7,_0x134c60){var _0x4c079f={'raw':![],'where':{'id':_0x500ed7[_0x8aff('0x4b')]['id']}},_0x1ae734={};_0x1ae734[_0x8aff('0x3c')]=_[_0x8aff('0x39')](db[_0x8aff('0x46')][_0x8aff('0x34')]);_0x1ae734[_0x8aff('0x38')]=_[_0x8aff('0x39')](_0x500ed7[_0x8aff('0x38')]);_0x1ae734[_0x8aff('0x3a')]=_[_0x8aff('0x3b')](_0x1ae734[_0x8aff('0x3c')],_0x1ae734[_0x8aff('0x38')]);_0x4c079f[_0x8aff('0x3d')]=_[_0x8aff('0x3b')](_0x1ae734['model'],qs[_0x8aff('0x3e')](_0x500ed7[_0x8aff('0x38')]['fields']));_0x4c079f[_0x8aff('0x3d')]=_0x4c079f[_0x8aff('0x3d')][_0x8aff('0x4c')]?_0x4c079f[_0x8aff('0x3d')]:_0x1ae734[_0x8aff('0x3c')];if(_0x500ed7['query'][_0x8aff('0x47')]){_0x4c079f['include']=[{'all':!![]}];}_0x4c079f=_['merge']({},_0x4c079f,_0x500ed7[_0x8aff('0x4d')]);return db[_0x8aff('0x46')][_0x8aff('0x4e')](_0x4c079f)[_0x8aff('0x2e')](handleEntityNotFound(_0x134c60,null))['then'](respondWithResult(_0x134c60,null))[_0x8aff('0x4a')](handleError(_0x134c60,null));};exports[_0x8aff('0x4f')]=function(_0x2615ab,_0xd20cc8){return db[_0x8aff('0x46')][_0x8aff('0x4f')](_0x2615ab[_0x8aff('0x50')],{})[_0x8aff('0x2e')](respondWithResult(_0xd20cc8,0xc9))[_0x8aff('0x4a')](handleError(_0xd20cc8,null));};exports[_0x8aff('0x2d')]=function(_0x573a72,_0x2ce2cf){if(_0x573a72[_0x8aff('0x50')]['id']){delete _0x573a72['body']['id'];}return db['VoiceQueueReport'][_0x8aff('0x4e')]({'where':{'id':_0x573a72[_0x8aff('0x4b')]['id']}})[_0x8aff('0x2e')](handleEntityNotFound(_0x2ce2cf,null))[_0x8aff('0x2e')](saveUpdates(_0x573a72[_0x8aff('0x50')],null))[_0x8aff('0x2e')](respondWithResult(_0x2ce2cf,null))[_0x8aff('0x4a')](handleError(_0x2ce2cf,null));};exports['destroy']=function(_0x17fcb7,_0x2f2a4b){return db['VoiceQueueReport']['find']({'where':{'id':_0x17fcb7['params']['id']}})[_0x8aff('0x2e')](handleEntityNotFound(_0x2f2a4b,null))['then'](removeEntity(_0x2f2a4b,null))['catch'](handleError(_0x2f2a4b,null));};exports['describe']=function(_0x1aa232,_0x55e90c){return db[_0x8aff('0x46')][_0x8aff('0x51')]()['then'](respondWithResult(_0x55e90c,null))['catch'](handleError(_0x55e90c,null));};exports[_0x8aff('0x52')]=function(_0x3fb0e2,_0xb7f408){var _0x3d2b4c={},_0x407920={},_0x4d8c46={'count':0x0,'rows':[]};_0x407920[_0x8aff('0x3c')]=_[_0x8aff('0x39')](db[_0x8aff('0x46')][_0x8aff('0x34')]);_0x407920[_0x8aff('0x38')]=_[_0x8aff('0x39')](_0x3fb0e2[_0x8aff('0x38')]);_0x407920['filters']=_[_0x8aff('0x3b')](_0x407920[_0x8aff('0x3c')],_0x407920[_0x8aff('0x38')]);_0x3d2b4c[_0x8aff('0x3d')]=_[_0x8aff('0x3b')](_0x407920[_0x8aff('0x3c')],qs[_0x8aff('0x3e')](_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x3e')]));_0x3d2b4c[_0x8aff('0x3d')]=_0x3d2b4c[_0x8aff('0x3d')]['length']?_0x3d2b4c[_0x8aff('0x3d')]:_0x407920[_0x8aff('0x3c')];if(!_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x53')](_0x8aff('0x3f'))){_0x3d2b4c[_0x8aff('0x26')]=qs[_0x8aff('0x26')](_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x26')]);_0x3d2b4c['offset']=qs['offset'](_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x24')]);}_0x3d2b4c[_0x8aff('0x40')]=qs[_0x8aff('0x41')](_0x3fb0e2['query'][_0x8aff('0x41')]);_0x3d2b4c[_0x8aff('0x42')]=qs[_0x8aff('0x3a')](_[_0x8aff('0x43')](_0x3fb0e2['query'],_0x407920[_0x8aff('0x3a')]));if(_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x54')]){_0x3d2b4c[_0x8aff('0x42')]=_['merge'](_0x3d2b4c[_0x8aff('0x42')],{'$or':_[_0x8aff('0x37')](_0x3d2b4c[_0x8aff('0x3d')],function(_0x4a75ce){var _0x3ca737={};_0x3ca737[_0x4a75ce]={'$like':'%'+_0x3fb0e2[_0x8aff('0x38')]['filter']+'%'};return _0x3ca737;})});}_0x3d2b4c=_[_0x8aff('0x44')]({},_0x3d2b4c,_0x3fb0e2[_0x8aff('0x4d')]);var _0x115ebf={'where':_0x3d2b4c[_0x8aff('0x42')]};return db[_0x8aff('0x46')]['count'](_0x115ebf)[_0x8aff('0x2e')](function(_0x336d41){_0x4d8c46[_0x8aff('0x27')]=_0x336d41;if(_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x47')]){_0x3d2b4c[_0x8aff('0x55')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x8aff('0x48')](_0x3d2b4c);})['then'](function(_0x1a63d6){_0x4d8c46['rows']=_0x1a63d6;return _0x4d8c46;})[_0x8aff('0x2e')](respondWithFilteredResult(_0xb7f408,_0x3d2b4c,_0x8aff('0x52')))[_0x8aff('0x4a')](handleError(_0xb7f408,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index d197c17..e42434c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf174=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','save'];(function(_0x49bc13,_0x247635){var _0x5453c=function(_0xf18df3){while(--_0xf18df3){_0x49bc13['push'](_0x49bc13['shift']());}};_0x5453c(++_0x247635);}(_0xf174,0x1be));var _0x4f17=function(_0x4b0c29,_0x40b576){_0x4b0c29=_0x4b0c29-0x0;var _0x44de8e=_0xf174[_0x4b0c29];return _0x44de8e;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0x4f17('0x0'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4f17('0x1'),'afterUpdate':_0x4f17('0x2'),'afterDestroy':_0x4f17('0x3')};function emitEvent(_0x46b931){return function(_0xaf25f8,_0x42deae,_0x41a8d9){VoiceQueueReportEvents[_0x4f17('0x4')](_0x46b931+':'+_0xaf25f8['id'],_0xaf25f8);VoiceQueueReportEvents[_0x4f17('0x4')](_0x46b931,_0xaf25f8);_0x41a8d9(null);};}for(var e in events){if(events[_0x4f17('0x5')](e)){var event=events[e];VoiceQueueReport[_0x4f17('0x6')](e,emitEvent(event));}}module[_0x4f17('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x19c5=['hasOwnProperty','exports','events','save','update','emit'];(function(_0x3cd410,_0x4f0d1f){var _0x58769f=function(_0x4904ed){while(--_0x4904ed){_0x3cd410['push'](_0x3cd410['shift']());}};_0x58769f(++_0x4f0d1f);}(_0x19c5,0xbc));var _0x519c=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x19c5[_0x1fc122];return _0xa2cb13;};'use strict';var EventEmitter=require(_0x519c('0x0'));var VoiceQueueReport=require('../../mysqldb')['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x519c('0x1'),'afterUpdate':_0x519c('0x2'),'afterDestroy':'remove'};function emitEvent(_0x173140){return function(_0x5d9632,_0x2579d7,_0x1ba981){VoiceQueueReportEvents[_0x519c('0x3')](_0x173140+':'+_0x5d9632['id'],_0x5d9632);VoiceQueueReportEvents[_0x519c('0x3')](_0x173140,_0x5d9632);_0x1ba981(null);};}for(var e in events){if(events[_0x519c('0x4')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x519c('0x5')]=VoiceQueueReportEvents;
\ No newline at end of file
index 6083a59..110e02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xded3=['bluebird','request-promise','../../config/environment','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util','api','moment'];(function(_0x211418,_0x4f08b1){var _0x23280e=function(_0x436902){while(--_0x436902){_0x211418['push'](_0x211418['shift']());}};_0x23280e(++_0x4f08b1);}(_0xded3,0xc8));var _0x3ded=function(_0x345087,_0x53b1e6){_0x345087=_0x345087-0x0;var _0x453863=_0xded3[_0x345087];return _0x453863;};'use strict';var _=require(_0x3ded('0x0'));var util=require(_0x3ded('0x1'));var logger=require('../../config/logger')(_0x3ded('0x2'));var moment=require(_0x3ded('0x3'));var BPromise=require(_0x3ded('0x4'));var rp=require(_0x3ded('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3ded('0x6'));var attributes=require('./voiceQueueReport.attributes');module['exports']=function(_0x70a0fc,_0x13c02e){return _0x70a0fc[_0x3ded('0x7')](_0x3ded('0x8'),attributes,{'tableName':_0x3ded('0x9'),'paranoid':![],'indexes':[{'fields':[_0x3ded('0xa')]},{'fields':[_0x3ded('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x655b=['util','../../config/logger','api','moment','bluebird','path','rimraf','./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash'];(function(_0x4487c1,_0x397254){var _0x507a73=function(_0x2b72aa){while(--_0x2b72aa){_0x4487c1['push'](_0x4487c1['shift']());}};_0x507a73(++_0x397254);}(_0x655b,0x195));var _0xb655=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x655b[_0x160c73];return _0xd9302;};'use strict';var _=require(_0xb655('0x0'));var util=require(_0xb655('0x1'));var logger=require(_0xb655('0x2'))(_0xb655('0x3'));var moment=require(_0xb655('0x4'));var BPromise=require(_0xb655('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb655('0x6'));var rimraf=require(_0xb655('0x7'));var config=require('../../config/environment');var attributes=require(_0xb655('0x8'));module['exports']=function(_0x399515,_0xe9eeca){return _0x399515[_0xb655('0x9')](_0xb655('0xa'),attributes,{'tableName':_0xb655('0xb'),'paranoid':![],'indexes':[{'fields':[_0xb655('0xc')]},{'fields':[_0xb655('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index f19f817..82a9d9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b7=['findAll','options','raw','where','limit','map','include','model','attributes','catch','CreateVoiceQueueReport','VoiceQueueReport','create','body','UpdateVoiceQueueReport','update','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','then','VoiceQueueReport,\x20%s,\x20%s','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','GetVoiceQueueReport'];(function(_0x547aea,_0x1ad376){var _0x595ad4=function(_0xaee464){while(--_0xaee464){_0x547aea['push'](_0x547aea['shift']());}};_0x595ad4(++_0x1ad376);}(_0x43b7,0x66));var _0x743b=function(_0x586bd5,_0x52be60){_0x586bd5=_0x586bd5-0x0;var _0x7ec7a5=_0x43b7[_0x586bd5];return _0x7ec7a5;};'use strict';var _=require(_0x743b('0x0'));var util=require(_0x743b('0x1'));var moment=require('moment');var BPromise=require(_0x743b('0x2'));var rs=require(_0x743b('0x3'));var fs=require('fs');var Redis=require(_0x743b('0x4'));var db=require(_0x743b('0x5'))['db'];var utils=require(_0x743b('0x6'));var logger=require('../../config/logger')(_0x743b('0x7'));var config=require('../../config/environment');var jayson=require(_0x743b('0x8'));var client=jayson[_0x743b('0x9')][_0x743b('0xa')]({'port':0x232a});config[_0x743b('0xb')]=_[_0x743b('0xc')](config['redis'],{'host':_0x743b('0xd'),'port':0x18eb});var socket=require(_0x743b('0xe'))(new Redis(config[_0x743b('0xb')]));require(_0x743b('0xf'))[_0x743b('0x10')](socket);function respondWithRpcPromise(_0x5ba90e,_0x540f8f,_0x2d031f){return new BPromise(function(_0x4b4d2f,_0x149ea2){return client['request'](_0x5ba90e,_0x2d031f)[_0x743b('0x11')](function(_0x381856){logger['info'](_0x743b('0x12'),_0x540f8f,'request\x20sent');logger[_0x743b('0x13')](_0x743b('0x14'),_0x540f8f,_0x743b('0x15'),JSON[_0x743b('0x16')](_0x381856));if(_0x381856[_0x743b('0x17')]){if(_0x381856[_0x743b('0x17')]['code']===0x1f4){logger[_0x743b('0x17')](_0x743b('0x12'),_0x540f8f,_0x381856[_0x743b('0x17')]['message']);return _0x149ea2(_0x381856[_0x743b('0x17')]['message']);}logger[_0x743b('0x17')](_0x743b('0x12'),_0x540f8f,_0x381856['error'][_0x743b('0x18')]);return _0x4b4d2f(_0x381856['error']['message']);}else{logger[_0x743b('0x19')](_0x743b('0x12'),_0x540f8f,'request\x20sent');_0x4b4d2f(_0x381856['result'][_0x743b('0x18')]);}})['catch'](function(_0x185242){logger['error'](_0x743b('0x12'),_0x540f8f,_0x185242);_0x149ea2(_0x185242);});});}exports[_0x743b('0x1a')]=function(_0x24d6fe){var _0x3db022=this;return new Promise(function(_0x3a1e11,_0x27354c){return db['VoiceQueueReport'][_0x743b('0x1b')]({'raw':_0x24d6fe[_0x743b('0x1c')]?_0x24d6fe[_0x743b('0x1c')][_0x743b('0x1d')]===undefined?!![]:![]:!![],'where':_0x24d6fe[_0x743b('0x1c')]?_0x24d6fe['options'][_0x743b('0x1e')]||null:null,'attributes':_0x24d6fe[_0x743b('0x1c')]?_0x24d6fe[_0x743b('0x1c')]['attributes']||null:null,'limit':_0x24d6fe[_0x743b('0x1c')]?_0x24d6fe[_0x743b('0x1c')][_0x743b('0x1f')]||null:null,'include':_0x24d6fe[_0x743b('0x1c')]?_0x24d6fe[_0x743b('0x1c')]['include']?_[_0x743b('0x20')](_0x24d6fe[_0x743b('0x1c')][_0x743b('0x21')],function(_0x3f6e28){return{'model':db[_0x3f6e28[_0x743b('0x22')]],'as':_0x3f6e28['as'],'attributes':_0x3f6e28['attributes'],'include':_0x3f6e28[_0x743b('0x21')]?_[_0x743b('0x20')](_0x3f6e28[_0x743b('0x21')],function(_0x26bde9){return{'model':db[_0x26bde9[_0x743b('0x22')]],'as':_0x26bde9['as'],'attributes':_0x26bde9[_0x743b('0x23')],'include':_0x26bde9[_0x743b('0x21')]?_[_0x743b('0x20')](_0x26bde9[_0x743b('0x21')],function(_0x37a963){return{'model':db[_0x37a963['model']],'as':_0x37a963['as'],'attributes':_0x37a963[_0x743b('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xb69d62){logger[_0x743b('0x19')](_0x743b('0x1a'),_0x24d6fe);logger[_0x743b('0x13')](_0x743b('0x1a'),_0x24d6fe,JSON[_0x743b('0x16')](_0xb69d62));_0x3a1e11(_0xb69d62);})[_0x743b('0x24')](function(_0x240232){logger[_0x743b('0x17')](_0x743b('0x1a'),_0x240232[_0x743b('0x18')],_0x24d6fe);_0x27354c(_0x3db022[_0x743b('0x17')](0x1f4,_0x240232['message']));});});};exports[_0x743b('0x25')]=function(_0x1df8a6){var _0x4ebb13=this;return new Promise(function(_0x5c617a,_0x280b09){return db[_0x743b('0x26')][_0x743b('0x27')](_0x1df8a6[_0x743b('0x28')],{'raw':_0x1df8a6[_0x743b('0x1c')]?_0x1df8a6['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x4b30f7){logger[_0x743b('0x19')]('CreateVoiceQueueReport',_0x1df8a6);logger[_0x743b('0x13')]('CreateVoiceQueueReport',_0x1df8a6,JSON[_0x743b('0x16')](_0x4b30f7));_0x5c617a(_0x4b30f7);})[_0x743b('0x24')](function(_0x3a0b89){logger[_0x743b('0x17')](_0x743b('0x25'),_0x3a0b89[_0x743b('0x18')],_0x1df8a6);_0x280b09(_0x4ebb13[_0x743b('0x17')](0x1f4,_0x3a0b89[_0x743b('0x18')]));});});};exports[_0x743b('0x29')]=function(_0x4835c1){var _0x4986de=this;return new Promise(function(_0x4f054f,_0x1ff385){return db[_0x743b('0x26')][_0x743b('0x2a')](_0x4835c1['body'],{'raw':_0x4835c1[_0x743b('0x1c')]?_0x4835c1[_0x743b('0x1c')][_0x743b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4835c1[_0x743b('0x1c')]?_0x4835c1[_0x743b('0x1c')][_0x743b('0x1e')]||null:null,'attributes':_0x4835c1[_0x743b('0x1c')]?_0x4835c1[_0x743b('0x1c')][_0x743b('0x23')]||null:null,'limit':_0x4835c1[_0x743b('0x1c')]?_0x4835c1['options'][_0x743b('0x1f')]||null:null})[_0x743b('0x11')](function(_0x112f44){logger[_0x743b('0x19')]('UpdateVoiceQueueReport',_0x4835c1);logger['debug'](_0x743b('0x29'),_0x4835c1,JSON[_0x743b('0x16')](_0x112f44));_0x4f054f(_0x112f44);})[_0x743b('0x24')](function(_0xa9b2db){logger[_0x743b('0x17')]('UpdateVoiceQueueReport',_0xa9b2db[_0x743b('0x18')],_0x4835c1);_0x1ff385(_0x4986de[_0x743b('0x17')](0x1f4,_0xa9b2db[_0x743b('0x18')]));});});};
\ No newline at end of file
+var _0x2f6b=['message','info','catch','VoiceQueueReport','raw','options','attributes','limit','include','map','model','GetVoiceQueueReport','debug','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x34006d,_0x3945fe){var _0x1f640e=function(_0x2483b0){while(--_0x2483b0){_0x34006d['push'](_0x34006d['shift']());}};_0x1f640e(++_0x3945fe);}(_0x2f6b,0x112));var _0xb2f6=function(_0x307101,_0x45fd0a){_0x307101=_0x307101-0x0;var _0x5d4775=_0x2f6b[_0x307101];return _0x5d4775;};'use strict';var _=require(_0xb2f6('0x0'));var util=require(_0xb2f6('0x1'));var moment=require(_0xb2f6('0x2'));var BPromise=require(_0xb2f6('0x3'));var rs=require(_0xb2f6('0x4'));var fs=require('fs');var Redis=require(_0xb2f6('0x5'));var db=require(_0xb2f6('0x6'))['db'];var utils=require(_0xb2f6('0x7'));var logger=require(_0xb2f6('0x8'))(_0xb2f6('0x9'));var config=require(_0xb2f6('0xa'));var jayson=require(_0xb2f6('0xb'));var client=jayson[_0xb2f6('0xc')][_0xb2f6('0xd')]({'port':0x232a});config[_0xb2f6('0xe')]=_['defaults'](config['redis'],{'host':_0xb2f6('0xf'),'port':0x18eb});var socket=require(_0xb2f6('0x10'))(new Redis(config[_0xb2f6('0xe')]));require(_0xb2f6('0x11'))[_0xb2f6('0x12')](socket);function respondWithRpcPromise(_0x599bb9,_0x26d6ea,_0x506bb0){return new BPromise(function(_0x306449,_0x10b58a){return client[_0xb2f6('0x13')](_0x599bb9,_0x506bb0)[_0xb2f6('0x14')](function(_0x3c7b31){logger['info'](_0xb2f6('0x15'),_0x26d6ea,_0xb2f6('0x16'));logger['debug'](_0xb2f6('0x17'),_0x26d6ea,'request\x20sent',JSON[_0xb2f6('0x18')](_0x3c7b31));if(_0x3c7b31['error']){if(_0x3c7b31[_0xb2f6('0x19')][_0xb2f6('0x1a')]===0x1f4){logger[_0xb2f6('0x19')]('VoiceQueueReport,\x20%s,\x20%s',_0x26d6ea,_0x3c7b31[_0xb2f6('0x19')]['message']);return _0x10b58a(_0x3c7b31[_0xb2f6('0x19')]['message']);}logger[_0xb2f6('0x19')](_0xb2f6('0x15'),_0x26d6ea,_0x3c7b31['error'][_0xb2f6('0x1b')]);return _0x306449(_0x3c7b31[_0xb2f6('0x19')][_0xb2f6('0x1b')]);}else{logger[_0xb2f6('0x1c')](_0xb2f6('0x15'),_0x26d6ea,'request\x20sent');_0x306449(_0x3c7b31['result'][_0xb2f6('0x1b')]);}})[_0xb2f6('0x1d')](function(_0x111978){logger[_0xb2f6('0x19')]('VoiceQueueReport,\x20%s,\x20%s',_0x26d6ea,_0x111978);_0x10b58a(_0x111978);});});}exports['GetVoiceQueueReport']=function(_0x28561a){var _0x10ff75=this;return new Promise(function(_0xa76b02,_0xe55b4c){return db[_0xb2f6('0x1e')]['findAll']({'raw':_0x28561a['options']?_0x28561a['options'][_0xb2f6('0x1f')]===undefined?!![]:![]:!![],'where':_0x28561a[_0xb2f6('0x20')]?_0x28561a[_0xb2f6('0x20')]['where']||null:null,'attributes':_0x28561a[_0xb2f6('0x20')]?_0x28561a[_0xb2f6('0x20')][_0xb2f6('0x21')]||null:null,'limit':_0x28561a[_0xb2f6('0x20')]?_0x28561a['options'][_0xb2f6('0x22')]||null:null,'include':_0x28561a[_0xb2f6('0x20')]?_0x28561a[_0xb2f6('0x20')][_0xb2f6('0x23')]?_[_0xb2f6('0x24')](_0x28561a[_0xb2f6('0x20')][_0xb2f6('0x23')],function(_0x43cd27){return{'model':db[_0x43cd27[_0xb2f6('0x25')]],'as':_0x43cd27['as'],'attributes':_0x43cd27['attributes'],'include':_0x43cd27['include']?_['map'](_0x43cd27[_0xb2f6('0x23')],function(_0x2a588c){return{'model':db[_0x2a588c['model']],'as':_0x2a588c['as'],'attributes':_0x2a588c[_0xb2f6('0x21')],'include':_0x2a588c[_0xb2f6('0x23')]?_[_0xb2f6('0x24')](_0x2a588c['include'],function(_0x32808c){return{'model':db[_0x32808c['model']],'as':_0x32808c['as'],'attributes':_0x32808c['attributes']};}):[]};}):[]};}):[]:[]})[_0xb2f6('0x14')](function(_0x194118){logger['info'](_0xb2f6('0x26'),_0x28561a);logger[_0xb2f6('0x27')](_0xb2f6('0x26'),_0x28561a,JSON[_0xb2f6('0x18')](_0x194118));_0xa76b02(_0x194118);})[_0xb2f6('0x1d')](function(_0x45f149){logger[_0xb2f6('0x19')](_0xb2f6('0x26'),_0x45f149['message'],_0x28561a);_0xe55b4c(_0x10ff75['error'](0x1f4,_0x45f149[_0xb2f6('0x1b')]));});});};exports['CreateVoiceQueueReport']=function(_0x19d8df){var _0x5b1427=this;return new Promise(function(_0x4e99de,_0x42182f){return db[_0xb2f6('0x1e')]['create'](_0x19d8df[_0xb2f6('0x28')],{'raw':_0x19d8df[_0xb2f6('0x20')]?_0x19d8df[_0xb2f6('0x20')][_0xb2f6('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x235ee1){logger['info']('CreateVoiceQueueReport',_0x19d8df);logger['debug']('CreateVoiceQueueReport',_0x19d8df,JSON[_0xb2f6('0x18')](_0x235ee1));_0x4e99de(_0x235ee1);})['catch'](function(_0x51d0bb){logger[_0xb2f6('0x19')](_0xb2f6('0x29'),_0x51d0bb['message'],_0x19d8df);_0x42182f(_0x5b1427[_0xb2f6('0x19')](0x1f4,_0x51d0bb['message']));});});};exports[_0xb2f6('0x2a')]=function(_0x3f9368){var _0x47a798=this;return new Promise(function(_0xadb770,_0x287188){return db['VoiceQueueReport']['update'](_0x3f9368[_0xb2f6('0x28')],{'raw':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')][_0xb2f6('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')]['where']||null:null,'attributes':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')][_0xb2f6('0x21')]||null:null,'limit':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')][_0xb2f6('0x22')]||null:null})[_0xb2f6('0x14')](function(_0x44aa7d){logger[_0xb2f6('0x1c')](_0xb2f6('0x2a'),_0x3f9368);logger[_0xb2f6('0x27')](_0xb2f6('0x2a'),_0x3f9368,JSON[_0xb2f6('0x18')](_0x44aa7d));_0xadb770(_0x44aa7d);})[_0xb2f6('0x1d')](function(_0x402e11){logger[_0xb2f6('0x19')](_0xb2f6('0x2a'),_0x402e11[_0xb2f6('0x1b')],_0x3f9368);_0x287188(_0x47a798['error'](0x1f4,_0x402e11['message']));});});};
\ No newline at end of file
index cbe79fc..5bdd130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc73a=['register','length','save','remove','update','emit','removeListener'];(function(_0xea98ab,_0x297344){var _0x39058e=function(_0x27524a){while(--_0x27524a){_0xea98ab['push'](_0xea98ab['shift']());}};_0x39058e(++_0x297344);}(_0xc73a,0x72));var _0xac73=function(_0x325e4d,_0x4d88f6){_0x325e4d=_0x325e4d-0x0;var _0x5533c4=_0xc73a[_0x325e4d];return _0x5533c4;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xac73('0x0'),_0xac73('0x1'),_0xac73('0x2')];function createListener(_0x4eb4db,_0x5dac0f){return function(_0x32e40e){_0x5dac0f[_0xac73('0x3')](_0x4eb4db,_0x32e40e);};}function removeListener(_0x36d689,_0x53ef2e){return function(){VoiceQueueReportEvents[_0xac73('0x4')](_0x36d689,_0x53ef2e);};}exports[_0xac73('0x5')]=function(_0x23fa68){for(var _0x57992a=0x0,_0x9eb408=events[_0xac73('0x6')];_0x57992a<_0x9eb408;_0x57992a++){var _0x1cc38a=events[_0x57992a];var _0x22638a=createListener('voiceQueueReport:'+_0x1cc38a,_0x23fa68);VoiceQueueReportEvents['on'](_0x1cc38a,_0x22638a);}};
\ No newline at end of file
+var _0x406f=['emit','removeListener','register','length','./voiceQueueReport.events','remove'];(function(_0x148e46,_0x3769ad){var _0x273bb4=function(_0x19d928){while(--_0x19d928){_0x148e46['push'](_0x148e46['shift']());}};_0x273bb4(++_0x3769ad);}(_0x406f,0xe8));var _0xf406=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x406f[_0x59ee6f];return _0x4c0979;};'use strict';var VoiceQueueReportEvents=require(_0xf406('0x0'));var events=['save',_0xf406('0x1'),'update'];function createListener(_0x28ed57,_0x444c02){return function(_0x2921ce){_0x444c02[_0xf406('0x2')](_0x28ed57,_0x2921ce);};}function removeListener(_0xbe427a,_0x19221b){return function(){VoiceQueueReportEvents[_0xf406('0x3')](_0xbe427a,_0x19221b);};}exports[_0xf406('0x4')]=function(_0x40542f){for(var _0x235134=0x0,_0x51237b=events[_0xf406('0x5')];_0x235134<_0x51237b;_0x235134++){var _0x18bf2f=events[_0x235134];var _0x1130ae=createListener('voiceQueueReport:'+_0x18bf2f,_0x40542f);VoiceQueueReportEvents['on'](_0x18bf2f,_0x1130ae);}};
\ No newline at end of file
index 1d079c1..87f5e28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6010=['put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','/:id','post'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6010,0xca));var _0x0601=function(_0x22f6b1,_0x9a7d7){_0x22f6b1=_0x22f6b1-0x0;var _0x19c339=_0x6010[_0x22f6b1];return _0x19c339;};'use strict';var multer=require(_0x0601('0x0'));var util=require('util');var path=require(_0x0601('0x1'));var timeout=require(_0x0601('0x2'));var express=require(_0x0601('0x3'));var router=express[_0x0601('0x4')]();var fs_extra=require(_0x0601('0x5'));var auth=require(_0x0601('0x6'));var interaction=require(_0x0601('0x7'));var config=require(_0x0601('0x8'));var controller=require(_0x0601('0x9'));router[_0x0601('0xa')]('/',auth[_0x0601('0xb')](),controller['index']);router['get'](_0x0601('0xc'),auth[_0x0601('0xb')](),controller['show']);router[_0x0601('0xd')]('/',auth[_0x0601('0xb')](),controller['create']);router[_0x0601('0xe')]('/:id',auth[_0x0601('0xb')](),controller[_0x0601('0xf')]);router['delete'](_0x0601('0xc'),auth['isAuthenticated'](),controller[_0x0601('0x10')]);module[_0x0601('0x11')]=router;
\ No newline at end of file
+var _0x3bef=['get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5ca82d,_0x7d11a0){var _0x397661=function(_0x4ce955){while(--_0x4ce955){_0x5ca82d['push'](_0x5ca82d['shift']());}};_0x397661(++_0x7d11a0);}(_0x3bef,0x185));var _0xf3be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3bef[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf3be('0x0'));var util=require(_0xf3be('0x1'));var path=require(_0xf3be('0x2'));var timeout=require(_0xf3be('0x3'));var express=require(_0xf3be('0x4'));var router=express[_0xf3be('0x5')]();var fs_extra=require(_0xf3be('0x6'));var auth=require(_0xf3be('0x7'));var interaction=require(_0xf3be('0x8'));var config=require(_0xf3be('0x9'));var controller=require('./voiceQueuesLog.controller');router[_0xf3be('0xa')]('/',auth[_0xf3be('0xb')](),controller[_0xf3be('0xc')]);router[_0xf3be('0xa')](_0xf3be('0xd'),auth['isAuthenticated'](),controller[_0xf3be('0xe')]);router[_0xf3be('0xf')]('/',auth[_0xf3be('0xb')](),controller[_0xf3be('0x10')]);router['put'](_0xf3be('0xd'),auth[_0xf3be('0xb')](),controller[_0xf3be('0x11')]);router[_0xf3be('0x12')](_0xf3be('0xd'),auth['isAuthenticated'](),controller[_0xf3be('0x13')]);module[_0xf3be('0x14')]=router;
\ No newline at end of file
index 573781e..5bb68a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f7=['sequelize','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x30d438,_0x5e0484){var _0x3fe0f6=function(_0x301940){while(--_0x301940){_0x30d438['push'](_0x30d438['shift']());}};_0x3fe0f6(++_0x5e0484);}(_0xd4f7,0x8c));var _0x7d4f=function(_0x35e75a,_0x5ed225){_0x35e75a=_0x35e75a-0x0;var _0xb23c7f=_0xd4f7[_0x35e75a];return _0xb23c7f;};'use strict';var Sequelize=require(_0x7d4f('0x0'));var moment=require('moment');module['exports']={'time':{'type':Sequelize[_0x7d4f('0x1')]},'callid':{'type':Sequelize[_0x7d4f('0x1')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x7d4f('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x7d4f('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x7d4f('0x1')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x7d4f('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x7d4f('0x1')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x7d4f('0x2')],'allowNull':![],'defaultValue':moment()[_0x7d4f('0x3')](_0x7d4f('0x4'))}};
\ No newline at end of file
+var _0xbdde=['format','YYYY-MM-DD\x20HH:mm:ss','STRING','DATE'];(function(_0x1f4c15,_0x208c8a){var _0x1c53f8=function(_0x14f874){while(--_0x14f874){_0x1f4c15['push'](_0x1f4c15['shift']());}};_0x1c53f8(++_0x208c8a);}(_0xbdde,0x12e));var _0xebdd=function(_0x5d9d1e,_0x287c37){_0x5d9d1e=_0x5d9d1e-0x0;var _0x2fc272=_0xbdde[_0x5d9d1e];return _0x2fc272;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module['exports']={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xebdd('0x1')],'allowNull':![],'defaultValue':moment()[_0xebdd('0x2')](_0xebdd('0x3'))}};
\ No newline at end of file
index 58cced7..3720b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd394=['VIRTUAL','options','VoiceQueuesLog','includeAll','include','findAll','rows','show','params','keys','rawAttributes','catch','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','mustache','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','send','index','map','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x3f4450,_0xfaf1a8){var _0x492655=function(_0x355887){while(--_0x355887){_0x3f4450['push'](_0x3f4450['shift']());}};_0x492655(++_0xfaf1a8);}(_0xd394,0xe7));var _0x4d39=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd394[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x4d39('0x0'));var rimraf=require(_0x4d39('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d39('0x2'));var rp=require(_0x4d39('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4d39('0x4'));var util=require('util');var path=require('path');var sox=require(_0x4d39('0x5'));var csv=require(_0x4d39('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4d39('0x7'));var _=require('lodash');var squel=require(_0x4d39('0x8'));var crypto=require(_0x4d39('0x9'));var jsforce=require(_0x4d39('0xa'));var deskjs=require(_0x4d39('0xb'));var toCsv=require(_0x4d39('0x6'));var querystring=require(_0x4d39('0xc'));var Papa=require(_0x4d39('0xd'));var Redis=require('ioredis');var authService=require(_0x4d39('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4d39('0xf'));var hardwareService=require(_0x4d39('0x10'));var logger=require('../../config/logger')(_0x4d39('0x11'));var utils=require(_0x4d39('0x12'));var config=require(_0x4d39('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa5f58d,_0x323dd9){_0x323dd9=_0x323dd9||0xcc;return function(_0x1fe41b){if(_0x1fe41b){return _0xa5f58d['sendStatus'](_0x323dd9);}return _0xa5f58d[_0x4d39('0x14')](_0x323dd9)[_0x4d39('0x15')]();};}function respondWithResult(_0x57bb37,_0xc599){_0xc599=_0xc599||0xc8;return function(_0x2d61b4){if(_0x2d61b4){return _0x57bb37[_0x4d39('0x14')](_0xc599)[_0x4d39('0x16')](_0x2d61b4);}};}function respondWithFilteredResult(_0x21f054,_0x38f554){return function(_0x159967){if(_0x159967){var _0x3a9830=typeof _0x38f554['offset']===_0x4d39('0x17')&&typeof _0x38f554[_0x4d39('0x18')]===_0x4d39('0x17');var _0x6137f6=_0x159967['count'];var _0x1a6f97=_0x3a9830?0x0:_0x38f554['offset'];var _0x32c909=_0x3a9830?_0x159967[_0x4d39('0x19')]:_0x38f554[_0x4d39('0x1a')]+_0x38f554[_0x4d39('0x18')];var _0x1d97ea;if(_0x32c909>=_0x6137f6){_0x32c909=_0x6137f6;_0x1d97ea=0xc8;}else{_0x1d97ea=0xce;}_0x21f054['status'](_0x1d97ea);return _0x21f054[_0x4d39('0x1b')](_0x4d39('0x1c'),_0x1a6f97+'-'+_0x32c909+'/'+_0x6137f6)[_0x4d39('0x16')](_0x159967);}return null;};}function patchUpdates(_0x1f5c45){return function(_0x354c40){try{jsonpatch[_0x4d39('0x1d')](_0x354c40,_0x1f5c45,!![]);}catch(_0x2dfa4c){return BPromise['reject'](_0x2dfa4c);}return _0x354c40[_0x4d39('0x1e')]();};}function saveUpdates(_0x1bdd6b,_0x314792){return function(_0x1704f7){if(_0x1704f7){return _0x1704f7[_0x4d39('0x1f')](_0x1bdd6b)[_0x4d39('0x20')](function(_0x1f9fae){return _0x1f9fae;});}return null;};}function removeEntity(_0x5670ee,_0x3f50d0){return function(_0x54ade6){if(_0x54ade6){return _0x54ade6[_0x4d39('0x21')]()[_0x4d39('0x20')](function(){_0x5670ee[_0x4d39('0x14')](0xcc)[_0x4d39('0x15')]();});}};}function handleEntityNotFound(_0x2b33e4,_0x3106b4){return function(_0x3a6b08){if(!_0x3a6b08){_0x2b33e4[_0x4d39('0x22')](0x194);}return _0x3a6b08;};}function handleError(_0x982c0a,_0x4c9519){_0x4c9519=_0x4c9519||0x1f4;return function(_0x3b30d7){logger['error'](_0x3b30d7[_0x4d39('0x23')]);if(_0x3b30d7[_0x4d39('0x24')]){delete _0x3b30d7[_0x4d39('0x24')];}_0x982c0a[_0x4d39('0x14')](_0x4c9519)[_0x4d39('0x25')](_0x3b30d7);};}exports[_0x4d39('0x26')]=function(_0x12399e,_0x16a421){var _0x2f712f={},_0x5af2f7={},_0xd24cb3={'count':0x0,'rows':[]};var _0x14771e=_[_0x4d39('0x27')](db['VoiceQueuesLog']['rawAttributes'],function(_0x384667){return{'name':_0x384667[_0x4d39('0x28')],'type':_0x384667[_0x4d39('0x29')]['key']};});_0x5af2f7['model']=_[_0x4d39('0x27')](_0x14771e,_0x4d39('0x24'));_0x5af2f7[_0x4d39('0x2a')]=_['keys'](_0x12399e[_0x4d39('0x2a')]);_0x5af2f7[_0x4d39('0x2b')]=_[_0x4d39('0x2c')](_0x5af2f7[_0x4d39('0x2d')],_0x5af2f7[_0x4d39('0x2a')]);_0x2f712f[_0x4d39('0x2e')]=_['intersection'](_0x5af2f7['model'],qs[_0x4d39('0x2f')](_0x12399e[_0x4d39('0x2a')][_0x4d39('0x2f')]));_0x2f712f[_0x4d39('0x2e')]=_0x2f712f['attributes'][_0x4d39('0x30')]?_0x2f712f['attributes']:_0x5af2f7[_0x4d39('0x2d')];if(!_0x12399e[_0x4d39('0x2a')][_0x4d39('0x31')](_0x4d39('0x32'))){_0x2f712f[_0x4d39('0x18')]=qs['limit'](_0x12399e[_0x4d39('0x2a')][_0x4d39('0x18')]);_0x2f712f[_0x4d39('0x1a')]=qs[_0x4d39('0x1a')](_0x12399e[_0x4d39('0x2a')][_0x4d39('0x1a')]);}_0x2f712f[_0x4d39('0x33')]=qs[_0x4d39('0x34')](_0x12399e[_0x4d39('0x2a')]['sort']);_0x2f712f[_0x4d39('0x35')]=qs[_0x4d39('0x2b')](_[_0x4d39('0x36')](_0x12399e[_0x4d39('0x2a')],_0x5af2f7[_0x4d39('0x2b')]),_0x14771e);if(_0x12399e['query'][_0x4d39('0x37')]){_0x2f712f[_0x4d39('0x35')]=_[_0x4d39('0x38')](_0x2f712f['where'],{'$or':_[_0x4d39('0x27')](_0x14771e,function(_0x3bad96){if(_0x3bad96[_0x4d39('0x29')]!==_0x4d39('0x39')){var _0x40037f={};_0x40037f[_0x3bad96['name']]={'$like':'%'+_0x12399e[_0x4d39('0x2a')]['filter']+'%'};return _0x40037f;}})});}_0x2f712f=_[_0x4d39('0x38')]({},_0x2f712f,_0x12399e[_0x4d39('0x3a')]);var _0x17383e={'where':_0x2f712f[_0x4d39('0x35')]};return db[_0x4d39('0x3b')]['count'](_0x17383e)[_0x4d39('0x20')](function(_0x361a31){_0xd24cb3[_0x4d39('0x19')]=_0x361a31;if(_0x12399e[_0x4d39('0x2a')][_0x4d39('0x3c')]){_0x2f712f[_0x4d39('0x3d')]=[{'all':!![]}];}return db[_0x4d39('0x3b')][_0x4d39('0x3e')](_0x2f712f);})[_0x4d39('0x20')](function(_0x40d986){_0xd24cb3[_0x4d39('0x3f')]=_0x40d986;return _0xd24cb3;})[_0x4d39('0x20')](respondWithFilteredResult(_0x16a421,_0x2f712f))['catch'](handleError(_0x16a421,null));};exports[_0x4d39('0x40')]=function(_0x5b36b7,_0x544c01){var _0x2567ef={'raw':!![],'where':{'id':_0x5b36b7[_0x4d39('0x41')]['id']}},_0x1022dc={};_0x1022dc[_0x4d39('0x2d')]=_[_0x4d39('0x42')](db['VoiceQueuesLog'][_0x4d39('0x43')]);_0x1022dc['query']=_[_0x4d39('0x42')](_0x5b36b7['query']);_0x1022dc[_0x4d39('0x2b')]=_['intersection'](_0x1022dc[_0x4d39('0x2d')],_0x1022dc[_0x4d39('0x2a')]);_0x2567ef[_0x4d39('0x2e')]=_[_0x4d39('0x2c')](_0x1022dc[_0x4d39('0x2d')],qs[_0x4d39('0x2f')](_0x5b36b7[_0x4d39('0x2a')]['fields']));_0x2567ef[_0x4d39('0x2e')]=_0x2567ef[_0x4d39('0x2e')][_0x4d39('0x30')]?_0x2567ef['attributes']:_0x1022dc[_0x4d39('0x2d')];if(_0x5b36b7[_0x4d39('0x2a')]['includeAll']){_0x2567ef[_0x4d39('0x3d')]=[{'all':!![]}];}_0x2567ef=_[_0x4d39('0x38')]({},_0x2567ef,_0x5b36b7[_0x4d39('0x3a')]);return db[_0x4d39('0x3b')]['find'](_0x2567ef)[_0x4d39('0x20')](handleEntityNotFound(_0x544c01,null))[_0x4d39('0x20')](respondWithResult(_0x544c01,null))[_0x4d39('0x44')](handleError(_0x544c01,null));};exports[_0x4d39('0x45')]=function(_0x418e1d,_0x56c4b3){return db[_0x4d39('0x3b')][_0x4d39('0x45')](_0x418e1d[_0x4d39('0x46')],{})['then'](respondWithResult(_0x56c4b3,0xc9))[_0x4d39('0x44')](handleError(_0x56c4b3,null));};exports[_0x4d39('0x1f')]=function(_0x253ffd,_0x2cc82a){if(_0x253ffd[_0x4d39('0x46')]['id']){delete _0x253ffd[_0x4d39('0x46')]['id'];}return db[_0x4d39('0x3b')][_0x4d39('0x47')]({'where':{'id':_0x253ffd[_0x4d39('0x41')]['id']}})[_0x4d39('0x20')](handleEntityNotFound(_0x2cc82a,null))[_0x4d39('0x20')](saveUpdates(_0x253ffd[_0x4d39('0x46')],null))['then'](respondWithResult(_0x2cc82a,null))[_0x4d39('0x44')](handleError(_0x2cc82a,null));};exports['destroy']=function(_0x4cca46,_0x2d687d){return db[_0x4d39('0x3b')][_0x4d39('0x47')]({'where':{'id':_0x4cca46[_0x4d39('0x41')]['id']}})['then'](handleEntityNotFound(_0x2d687d,null))[_0x4d39('0x20')](removeEntity(_0x2d687d,null))[_0x4d39('0x44')](handleError(_0x2d687d,null));};
\ No newline at end of file
+var _0x3d94=['ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','send','index','map','VoiceQueuesLog','type','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox'];(function(_0x112f37,_0x17cac4){var _0x1fe5b5=function(_0x50e91f){while(--_0x50e91f){_0x112f37['push'](_0x112f37['shift']());}};_0x1fe5b5(++_0x17cac4);}(_0x3d94,0xd7));var _0x43d9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x3d94[_0x2641f9];return _0x585741;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x43d9('0x0'));var zipdir=require(_0x43d9('0x1'));var jsonpatch=require(_0x43d9('0x2'));var rp=require('request-promise');var moment=require(_0x43d9('0x3'));var BPromise=require(_0x43d9('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x43d9('0x5'));var sox=require(_0x43d9('0x6'));var csv=require('to-csv');var ejs=require(_0x43d9('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x43d9('0x8'));var squel=require(_0x43d9('0x9'));var crypto=require('crypto');var jsforce=require(_0x43d9('0xa'));var deskjs=require(_0x43d9('0xb'));var toCsv=require(_0x43d9('0xc'));var querystring=require(_0x43d9('0xd'));var Papa=require(_0x43d9('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43d9('0xf'));var as=require(_0x43d9('0x10'));var hardwareService=require(_0x43d9('0x11'));var logger=require(_0x43d9('0x12'))(_0x43d9('0x13'));var utils=require(_0x43d9('0x14'));var config=require(_0x43d9('0x15'));var licenseUtil=require(_0x43d9('0x16'));var db=require(_0x43d9('0x17'))['db'];function respondWithStatusCode(_0x57ca24,_0xbdd1fb){_0xbdd1fb=_0xbdd1fb||0xcc;return function(_0x35da0d){if(_0x35da0d){return _0x57ca24['sendStatus'](_0xbdd1fb);}return _0x57ca24[_0x43d9('0x18')](_0xbdd1fb)[_0x43d9('0x19')]();};}function respondWithResult(_0x2a1e1c,_0x37b52b){_0x37b52b=_0x37b52b||0xc8;return function(_0x468439){if(_0x468439){return _0x2a1e1c[_0x43d9('0x18')](_0x37b52b)[_0x43d9('0x1a')](_0x468439);}};}function respondWithFilteredResult(_0x1601cb,_0x49f022){return function(_0x3ce5e6){if(_0x3ce5e6){var _0xd562b8=typeof _0x49f022[_0x43d9('0x1b')]===_0x43d9('0x1c')&&typeof _0x49f022['limit']===_0x43d9('0x1c');var _0x1e55c9=_0x3ce5e6[_0x43d9('0x1d')];var _0x5e7178=_0xd562b8?0x0:_0x49f022[_0x43d9('0x1b')];var _0x2738d2=_0xd562b8?_0x3ce5e6[_0x43d9('0x1d')]:_0x49f022[_0x43d9('0x1b')]+_0x49f022['limit'];var _0x28d54b;if(_0x2738d2>=_0x1e55c9){_0x2738d2=_0x1e55c9;_0x28d54b=0xc8;}else{_0x28d54b=0xce;}_0x1601cb[_0x43d9('0x18')](_0x28d54b);return _0x1601cb[_0x43d9('0x1e')](_0x43d9('0x1f'),_0x5e7178+'-'+_0x2738d2+'/'+_0x1e55c9)[_0x43d9('0x1a')](_0x3ce5e6);}return null;};}function patchUpdates(_0x239fa7){return function(_0x41fc1b){try{jsonpatch[_0x43d9('0x20')](_0x41fc1b,_0x239fa7,!![]);}catch(_0xc7b80c){return BPromise[_0x43d9('0x21')](_0xc7b80c);}return _0x41fc1b[_0x43d9('0x22')]();};}function saveUpdates(_0x3863ce,_0x545840){return function(_0x3a3196){if(_0x3a3196){return _0x3a3196['update'](_0x3863ce)[_0x43d9('0x23')](function(_0x1040a0){return _0x1040a0;});}return null;};}function removeEntity(_0x2295e5,_0x49d164){return function(_0x69b7ab){if(_0x69b7ab){return _0x69b7ab[_0x43d9('0x24')]()[_0x43d9('0x23')](function(){_0x2295e5[_0x43d9('0x18')](0xcc)[_0x43d9('0x19')]();});}};}function handleEntityNotFound(_0x1f1dd9,_0x1596fe){return function(_0x22c954){if(!_0x22c954){_0x1f1dd9[_0x43d9('0x25')](0x194);}return _0x22c954;};}function handleError(_0x56cf2d,_0x246328){_0x246328=_0x246328||0x1f4;return function(_0x29eedb){logger[_0x43d9('0x26')](_0x29eedb[_0x43d9('0x27')]);if(_0x29eedb['name']){delete _0x29eedb['name'];}_0x56cf2d[_0x43d9('0x18')](_0x246328)[_0x43d9('0x28')](_0x29eedb);};}exports[_0x43d9('0x29')]=function(_0x22489e,_0x104a92){var _0x3ce32a={},_0x1705c2={},_0x3fd803={'count':0x0,'rows':[]};var _0x37cd57=_[_0x43d9('0x2a')](db[_0x43d9('0x2b')]['rawAttributes'],function(_0x4bfb9){return{'name':_0x4bfb9['fieldName'],'type':_0x4bfb9[_0x43d9('0x2c')]['key']};});_0x1705c2[_0x43d9('0x2d')]=_[_0x43d9('0x2a')](_0x37cd57,_0x43d9('0x2e'));_0x1705c2[_0x43d9('0x2f')]=_[_0x43d9('0x30')](_0x22489e['query']);_0x1705c2[_0x43d9('0x31')]=_[_0x43d9('0x32')](_0x1705c2[_0x43d9('0x2d')],_0x1705c2[_0x43d9('0x2f')]);_0x3ce32a['attributes']=_[_0x43d9('0x32')](_0x1705c2['model'],qs[_0x43d9('0x33')](_0x22489e[_0x43d9('0x2f')][_0x43d9('0x33')]));_0x3ce32a['attributes']=_0x3ce32a[_0x43d9('0x34')][_0x43d9('0x35')]?_0x3ce32a['attributes']:_0x1705c2[_0x43d9('0x2d')];if(!_0x22489e['query'][_0x43d9('0x36')](_0x43d9('0x37'))){_0x3ce32a[_0x43d9('0x38')]=qs['limit'](_0x22489e[_0x43d9('0x2f')][_0x43d9('0x38')]);_0x3ce32a[_0x43d9('0x1b')]=qs['offset'](_0x22489e['query'][_0x43d9('0x1b')]);}_0x3ce32a['order']=qs[_0x43d9('0x39')](_0x22489e[_0x43d9('0x2f')][_0x43d9('0x39')]);_0x3ce32a[_0x43d9('0x3a')]=qs[_0x43d9('0x31')](_['pick'](_0x22489e['query'],_0x1705c2['filters']),_0x37cd57);if(_0x22489e[_0x43d9('0x2f')]['filter']){_0x3ce32a[_0x43d9('0x3a')]=_[_0x43d9('0x3b')](_0x3ce32a[_0x43d9('0x3a')],{'$or':_[_0x43d9('0x2a')](_0x37cd57,function(_0x1cb206){if(_0x1cb206[_0x43d9('0x2c')]!==_0x43d9('0x3c')){var _0x270510={};_0x270510[_0x1cb206[_0x43d9('0x2e')]]={'$like':'%'+_0x22489e['query'][_0x43d9('0x3d')]+'%'};return _0x270510;}})});}_0x3ce32a=_[_0x43d9('0x3b')]({},_0x3ce32a,_0x22489e[_0x43d9('0x3e')]);var _0x54d184={'where':_0x3ce32a[_0x43d9('0x3a')]};return db['VoiceQueuesLog']['count'](_0x54d184)['then'](function(_0x3bb924){_0x3fd803[_0x43d9('0x1d')]=_0x3bb924;if(_0x22489e['query'][_0x43d9('0x3f')]){_0x3ce32a[_0x43d9('0x40')]=[{'all':!![]}];}return db[_0x43d9('0x2b')][_0x43d9('0x41')](_0x3ce32a);})[_0x43d9('0x23')](function(_0x20704e){_0x3fd803[_0x43d9('0x42')]=_0x20704e;return _0x3fd803;})[_0x43d9('0x23')](respondWithFilteredResult(_0x104a92,_0x3ce32a))[_0x43d9('0x43')](handleError(_0x104a92,null));};exports[_0x43d9('0x44')]=function(_0x419d17,_0x100d5a){var _0x133788={'raw':!![],'where':{'id':_0x419d17[_0x43d9('0x45')]['id']}},_0x5293f3={};_0x5293f3[_0x43d9('0x2d')]=_[_0x43d9('0x30')](db['VoiceQueuesLog'][_0x43d9('0x46')]);_0x5293f3[_0x43d9('0x2f')]=_[_0x43d9('0x30')](_0x419d17[_0x43d9('0x2f')]);_0x5293f3[_0x43d9('0x31')]=_[_0x43d9('0x32')](_0x5293f3[_0x43d9('0x2d')],_0x5293f3['query']);_0x133788[_0x43d9('0x34')]=_[_0x43d9('0x32')](_0x5293f3[_0x43d9('0x2d')],qs[_0x43d9('0x33')](_0x419d17[_0x43d9('0x2f')][_0x43d9('0x33')]));_0x133788[_0x43d9('0x34')]=_0x133788[_0x43d9('0x34')][_0x43d9('0x35')]?_0x133788[_0x43d9('0x34')]:_0x5293f3[_0x43d9('0x2d')];if(_0x419d17[_0x43d9('0x2f')][_0x43d9('0x3f')]){_0x133788[_0x43d9('0x40')]=[{'all':!![]}];}_0x133788=_[_0x43d9('0x3b')]({},_0x133788,_0x419d17[_0x43d9('0x3e')]);return db[_0x43d9('0x2b')][_0x43d9('0x47')](_0x133788)[_0x43d9('0x23')](handleEntityNotFound(_0x100d5a,null))[_0x43d9('0x23')](respondWithResult(_0x100d5a,null))[_0x43d9('0x43')](handleError(_0x100d5a,null));};exports[_0x43d9('0x48')]=function(_0x15d927,_0x40eb0f){return db['VoiceQueuesLog']['create'](_0x15d927['body'],{})['then'](respondWithResult(_0x40eb0f,0xc9))[_0x43d9('0x43')](handleError(_0x40eb0f,null));};exports['update']=function(_0x2e7ae0,_0x212123){if(_0x2e7ae0['body']['id']){delete _0x2e7ae0[_0x43d9('0x49')]['id'];}return db[_0x43d9('0x2b')][_0x43d9('0x47')]({'where':{'id':_0x2e7ae0['params']['id']}})[_0x43d9('0x23')](handleEntityNotFound(_0x212123,null))[_0x43d9('0x23')](saveUpdates(_0x2e7ae0[_0x43d9('0x49')],null))['then'](respondWithResult(_0x212123,null))['catch'](handleError(_0x212123,null));};exports[_0x43d9('0x24')]=function(_0x19d3c5,_0x525f54){return db[_0x43d9('0x2b')][_0x43d9('0x47')]({'where':{'id':_0x19d3c5[_0x43d9('0x45')]['id']}})[_0x43d9('0x23')](handleEntityNotFound(_0x525f54,null))[_0x43d9('0x23')](removeEntity(_0x525f54,null))['catch'](handleError(_0x525f54,null));};
\ No newline at end of file
index 292c996..801bf01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4567=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','define','voice_queues_log','event','dtm','lodash','util'];(function(_0x421196,_0x1cbd94){var _0x2738af=function(_0xc956ff){while(--_0xc956ff){_0x421196['push'](_0x421196['shift']());}};_0x2738af(++_0x1cbd94);}(_0x4567,0x14e));var _0x7456=function(_0x1b3ff7,_0x6cca67){_0x1b3ff7=_0x1b3ff7-0x0;var _0x523ba3=_0x4567[_0x1b3ff7];return _0x523ba3;};'use strict';var _=require(_0x7456('0x0'));var util=require(_0x7456('0x1'));var logger=require(_0x7456('0x2'))('api');var moment=require(_0x7456('0x3'));var BPromise=require(_0x7456('0x4'));var rp=require(_0x7456('0x5'));var fs=require('fs');var path=require(_0x7456('0x6'));var rimraf=require(_0x7456('0x7'));var config=require(_0x7456('0x8'));var attributes=require(_0x7456('0x9'));module['exports']=function(_0x75fcb1,_0x831554){return _0x75fcb1[_0x7456('0xa')]('VoiceQueuesLog',attributes,{'tableName':_0x7456('0xb'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x7456('0xc'),_0x7456('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x4e70=['rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x19b737,_0x3908b7){var _0x29f19f=function(_0x1d315b){while(--_0x1d315b){_0x19b737['push'](_0x19b737['shift']());}};_0x29f19f(++_0x3908b7);}(_0x4e70,0x69));var _0x04e7=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x4e70[_0x29d915];return _0x160f86;};'use strict';var _=require(_0x04e7('0x0'));var util=require(_0x04e7('0x1'));var logger=require(_0x04e7('0x2'))(_0x04e7('0x3'));var moment=require('moment');var BPromise=require(_0x04e7('0x4'));var rp=require(_0x04e7('0x5'));var fs=require('fs');var path=require(_0x04e7('0x6'));var rimraf=require(_0x04e7('0x7'));var config=require(_0x04e7('0x8'));var attributes=require(_0x04e7('0x9'));module[_0x04e7('0xa')]=function(_0x324945,_0x3d0cef){return _0x324945[_0x04e7('0xb')]('VoiceQueuesLog',attributes,{'tableName':_0x04e7('0xc'),'paranoid':![],'indexes':[{'name':_0x04e7('0xd'),'fields':[_0x04e7('0xe'),_0x04e7('0xf')]}],'timestamps':![]});};
\ No newline at end of file
index 5d4735d..1f898f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e8=['../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x57b5bf,_0x37c3da){var _0x50ec77=function(_0x697b31){while(--_0x697b31){_0x57b5bf['push'](_0x57b5bf['shift']());}};_0x50ec77(++_0x37c3da);}(_0xf6e8,0xc1));var _0x8f6e=function(_0x147e54,_0x1c49b8){_0x147e54=_0x147e54-0x0;var _0x315917=_0xf6e8[_0x147e54];return _0x315917;};'use strict';var _=require('lodash');var util=require(_0x8f6e('0x0'));var moment=require(_0x8f6e('0x1'));var BPromise=require(_0x8f6e('0x2'));var rs=require(_0x8f6e('0x3'));var fs=require('fs');var Redis=require(_0x8f6e('0x4'));var db=require(_0x8f6e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8f6e('0x6'))('rpc');var config=require(_0x8f6e('0x7'));var jayson=require(_0x8f6e('0x8'));var client=jayson['client'][_0x8f6e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x233158,_0xd26126,_0x71b52c){return new BPromise(function(_0x423ed4,_0x105076){return client[_0x8f6e('0xa')](_0x233158,_0x71b52c)[_0x8f6e('0xb')](function(_0x364ade){logger[_0x8f6e('0xc')]('VoiceQueuesLog,\x20%s,\x20%s',_0xd26126,_0x8f6e('0xd'));logger[_0x8f6e('0xe')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0xd26126,_0x8f6e('0xd'),JSON[_0x8f6e('0xf')](_0x364ade));if(_0x364ade[_0x8f6e('0x10')]){if(_0x364ade[_0x8f6e('0x10')][_0x8f6e('0x11')]===0x1f4){logger[_0x8f6e('0x10')](_0x8f6e('0x12'),_0xd26126,_0x364ade[_0x8f6e('0x10')][_0x8f6e('0x13')]);return _0x105076(_0x364ade[_0x8f6e('0x10')][_0x8f6e('0x13')]);}logger[_0x8f6e('0x10')](_0x8f6e('0x12'),_0xd26126,_0x364ade['error'][_0x8f6e('0x13')]);return _0x423ed4(_0x364ade[_0x8f6e('0x10')]['message']);}else{logger[_0x8f6e('0xc')](_0x8f6e('0x12'),_0xd26126,_0x8f6e('0xd'));_0x423ed4(_0x364ade['result']['message']);}})['catch'](function(_0x201991){logger[_0x8f6e('0x10')](_0x8f6e('0x12'),_0xd26126,_0x201991);_0x105076(_0x201991);});});}
\ No newline at end of file
+var _0x1e4f=['../../config/utils','../../config/logger','../../config/environment','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','randomstring','ioredis'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0x1e4f,0x1a0));var _0xf1e4=function(_0x11f418,_0x16283a){_0x11f418=_0x11f418-0x0;var _0x5d7f70=_0x1e4f[_0x11f418];return _0x5d7f70;};'use strict';var _=require(_0xf1e4('0x0'));var util=require('util');var moment=require(_0xf1e4('0x1'));var BPromise=require('bluebird');var rs=require(_0xf1e4('0x2'));var fs=require('fs');var Redis=require(_0xf1e4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf1e4('0x4'));var logger=require(_0xf1e4('0x5'))('rpc');var config=require(_0xf1e4('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf1e4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1a04f3,_0x2c253d,_0x57c187){return new BPromise(function(_0x2ea095,_0x137e3d){return client[_0xf1e4('0x8')](_0x1a04f3,_0x57c187)[_0xf1e4('0x9')](function(_0x577e7a){logger[_0xf1e4('0xa')](_0xf1e4('0xb'),_0x2c253d,'request\x20sent');logger[_0xf1e4('0xc')](_0xf1e4('0xd'),_0x2c253d,_0xf1e4('0xe'),JSON[_0xf1e4('0xf')](_0x577e7a));if(_0x577e7a['error']){if(_0x577e7a['error']['code']===0x1f4){logger[_0xf1e4('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2c253d,_0x577e7a[_0xf1e4('0x10')][_0xf1e4('0x11')]);return _0x137e3d(_0x577e7a[_0xf1e4('0x10')]['message']);}logger[_0xf1e4('0x10')](_0xf1e4('0xb'),_0x2c253d,_0x577e7a[_0xf1e4('0x10')]['message']);return _0x2ea095(_0x577e7a[_0xf1e4('0x10')][_0xf1e4('0x11')]);}else{logger['info'](_0xf1e4('0xb'),_0x2c253d,'request\x20sent');_0x2ea095(_0x577e7a[_0xf1e4('0x12')][_0xf1e4('0x11')]);}})[_0xf1e4('0x13')](function(_0x418e3e){logger[_0xf1e4('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2c253d,_0x418e3e);_0x137e3d(_0x418e3e);});});}
\ No newline at end of file
index 4dc57df..4858cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa174=['../../components/interaction/service','../../config/environment','index','isAuthenticated','describe','/:id','show','get','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','runTranscribe','put','update','destroy','path','connect-timeout','express','../../components/auth/service'];(function(_0x13d64d,_0x4c7113){var _0x14e5d4=function(_0x15d5a9){while(--_0x15d5a9){_0x13d64d['push'](_0x13d64d['shift']());}};_0x14e5d4(++_0x4c7113);}(_0xa174,0x86));var _0x4a17=function(_0x235e48,_0x69a246){_0x235e48=_0x235e48-0x0;var _0x2f8190=_0xa174[_0x235e48];return _0x2f8190;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4a17('0x0'));var timeout=require(_0x4a17('0x1'));var express=require(_0x4a17('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4a17('0x3'));var interaction=require(_0x4a17('0x4'));var config=require(_0x4a17('0x5'));var controller=require('./voiceRecording.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x4a17('0x6')]);router['get']('/describe',auth[_0x4a17('0x7')](),controller[_0x4a17('0x8')]);router['get'](_0x4a17('0x9'),auth[_0x4a17('0x7')](),controller[_0x4a17('0xa')]);router[_0x4a17('0xb')](_0x4a17('0xc'),auth[_0x4a17('0x7')](),controller[_0x4a17('0xd')]);router[_0x4a17('0xb')](_0x4a17('0xe'),controller[_0x4a17('0xf')]);router[_0x4a17('0xb')](_0x4a17('0x10'),auth['isAuthenticated'](),controller[_0x4a17('0x11')]);router[_0x4a17('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4a17('0x12')](_0x4a17('0x10'),auth[_0x4a17('0x7')](),controller[_0x4a17('0x13')]);router[_0x4a17('0x14')](_0x4a17('0x9'),auth[_0x4a17('0x7')](),controller[_0x4a17('0x15')]);router['delete'](_0x4a17('0x9'),auth[_0x4a17('0x7')](),controller[_0x4a17('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xf4dd=['downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','index','/describe','/:id','isAuthenticated','show','download'];(function(_0x558984,_0x34e386){var _0x4160fb=function(_0x3455e6){while(--_0x3455e6){_0x558984['push'](_0x558984['shift']());}};_0x4160fb(++_0x34e386);}(_0xf4dd,0x185));var _0xdf4d=function(_0x187873,_0x2086cf){_0x187873=_0x187873-0x0;var _0x3132b0=_0xf4dd[_0x187873];return _0x3132b0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdf4d('0x0'));var timeout=require(_0xdf4d('0x1'));var express=require(_0xdf4d('0x2'));var router=express[_0xdf4d('0x3')]();var fs_extra=require(_0xdf4d('0x4'));var auth=require(_0xdf4d('0x5'));var interaction=require(_0xdf4d('0x6'));var config=require(_0xdf4d('0x7'));var controller=require(_0xdf4d('0x8'));router[_0xdf4d('0x9')]('/',auth['isAuthenticated'](),controller[_0xdf4d('0xa')]);router[_0xdf4d('0x9')](_0xdf4d('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xdf4d('0x9')](_0xdf4d('0xc'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0xe')]);router[_0xdf4d('0x9')]('/:id/download',auth[_0xdf4d('0xd')](),controller[_0xdf4d('0xf')]);router[_0xdf4d('0x9')]('/:id/downloads',controller[_0xdf4d('0x10')]);router[_0xdf4d('0x9')](_0xdf4d('0x11'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x12')]);router[_0xdf4d('0x13')]('/',auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x14')]);router[_0xdf4d('0x13')]('/:id/transcribe',auth['isAuthenticated'](),controller[_0xdf4d('0x15')]);router[_0xdf4d('0x16')](_0xdf4d('0xc'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x17')]);router[_0xdf4d('0x18')](_0xdf4d('0xc'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x19')]);module[_0xdf4d('0x1a')]=router;
\ No newline at end of file
index b8a3d86..a5023b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
index b364327..b941026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x095c=['fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','set','Content-Range','json','apply','save','destroy','then','error','stack','name','send','map','fieldName','key','model','differenceBy','format','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filters','merge','type','VIRTUAL','filter','options','VoiceRecording','count','include','rows','catch','show','params','rawAttributes','includeAll','find','create','body','update','describe','download','../../components/encryptor','uniqueid','value','existsSync','recording','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','Not\x20found','downloads','sequelize','token','$and','push','decryptFile','secrets','Sequelize','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','%s.cypher','Voice\x20Recording\x20not\x20found','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs'];(function(_0x3d39e3,_0x138d4d){var _0x5799d2=function(_0x280dab){while(--_0x280dab){_0x3d39e3['push'](_0x3d39e3['shift']());}};_0x5799d2(++_0x138d4d);}(_0x095c,0x1d2));var _0xc095=function(_0x50ed57,_0x4b813d){_0x50ed57=_0x50ed57-0x0;var _0x575784=_0x095c[_0x50ed57];return _0x575784;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc095('0x0'));var zipdir=require(_0xc095('0x1'));var jsonpatch=require(_0xc095('0x2'));var rp=require(_0xc095('0x3'));var moment=require(_0xc095('0x4'));var BPromise=require(_0xc095('0x5'));var Mustache=require(_0xc095('0x6'));var util=require(_0xc095('0x7'));var path=require(_0xc095('0x8'));var sox=require(_0xc095('0x9'));var csv=require('to-csv');var ejs=require(_0xc095('0xa'));var fs=require('fs');var fs_extra=require(_0xc095('0xb'));var _=require(_0xc095('0xc'));var squel=require(_0xc095('0xd'));var crypto=require(_0xc095('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc095('0xf'));var toCsv=require(_0xc095('0x10'));var querystring=require(_0xc095('0x11'));var Papa=require(_0xc095('0x12'));var AWS=require(_0xc095('0x13'));var uuidv4=require(_0xc095('0x14'));var Redis=require(_0xc095('0x15'));var authService=require(_0xc095('0x16'));var qs=require(_0xc095('0x17'));var as=require(_0xc095('0x18'));var hardwareService=require(_0xc095('0x19'));var logger=require('../../config/logger')(_0xc095('0x1a'));var utils=require(_0xc095('0x1b'));var config=require(_0xc095('0x1c'));var licenseUtil=require(_0xc095('0x1d'));var db=require(_0xc095('0x1e'))['db'];function respondWithStatusCode(_0x3ffe70,_0x4ae221){_0x4ae221=_0x4ae221||0xcc;return function(_0x1c9a4f){if(_0x1c9a4f){return _0x3ffe70[_0xc095('0x1f')](_0x4ae221);}return _0x3ffe70['status'](_0x4ae221)[_0xc095('0x20')]();};}function respondWithResult(_0x19dc56,_0x90ed9b){_0x90ed9b=_0x90ed9b||0xc8;return function(_0x16f09c){if(_0x16f09c){return _0x19dc56[_0xc095('0x21')](_0x90ed9b)['json'](_0x16f09c);}};}function respondWithFilteredResult(_0x4e8399,_0x12c9ee){return function(_0x538284){if(_0x538284){var _0x38ce25=typeof _0x12c9ee[_0xc095('0x22')]===_0xc095('0x23')&&typeof _0x12c9ee['limit']===_0xc095('0x23');var _0x4cd0c0=_0x538284['count'];var _0x4fb5c4=_0x38ce25?0x0:_0x12c9ee[_0xc095('0x22')];var _0x7e083a=_0x38ce25?_0x538284['count']:_0x12c9ee[_0xc095('0x22')]+_0x12c9ee[_0xc095('0x24')];var _0x11518b;if(_0x7e083a>=_0x4cd0c0){_0x7e083a=_0x4cd0c0;_0x11518b=0xc8;}else{_0x11518b=0xce;}_0x4e8399[_0xc095('0x21')](_0x11518b);return _0x4e8399[_0xc095('0x25')](_0xc095('0x26'),_0x4fb5c4+'-'+_0x7e083a+'/'+_0x4cd0c0)[_0xc095('0x27')](_0x538284);}return null;};}function patchUpdates(_0x28e5d3){return function(_0x2e419a){try{jsonpatch[_0xc095('0x28')](_0x2e419a,_0x28e5d3,!![]);}catch(_0x66acf1){return BPromise['reject'](_0x66acf1);}return _0x2e419a[_0xc095('0x29')]();};}function saveUpdates(_0x37880b,_0x1417ec){return function(_0x21f5ad){if(_0x21f5ad){return _0x21f5ad['update'](_0x37880b)['then'](function(_0x91478){return _0x91478;});}return null;};}function removeEntity(_0x2e7357,_0x2a193){return function(_0xd1e74){if(_0xd1e74){return _0xd1e74[_0xc095('0x2a')]()[_0xc095('0x2b')](function(){_0x2e7357[_0xc095('0x21')](0xcc)[_0xc095('0x20')]();});}};}function handleEntityNotFound(_0x4d9813,_0x211ebf){return function(_0x2eb0ab){if(!_0x2eb0ab){_0x4d9813[_0xc095('0x1f')](0x194);}return _0x2eb0ab;};}function handleError(_0x2401d3,_0x48b718){_0x48b718=_0x48b718||0x1f4;return function(_0x2eae09){logger[_0xc095('0x2c')](_0x2eae09[_0xc095('0x2d')]);if(_0x2eae09[_0xc095('0x2e')]){delete _0x2eae09[_0xc095('0x2e')];}_0x2401d3[_0xc095('0x21')](_0x48b718)[_0xc095('0x2f')](_0x2eae09);};}exports['index']=function(_0x2952aa,_0xe2ce78){var _0x20e8f4={},_0x1a6f23={},_0x64cbf={'count':0x0,'rows':[]};var _0x3a9388=_[_0xc095('0x30')](db['VoiceRecording']['rawAttributes'],function(_0x10ca2f){return{'name':_0x10ca2f[_0xc095('0x31')],'type':_0x10ca2f['type'][_0xc095('0x32')]};});_0x1a6f23[_0xc095('0x33')]=_[_0xc095('0x34')](_[_0xc095('0x30')](_0x3a9388,_0xc095('0x2e')),[_0xc095('0x35')]);_0x1a6f23[_0xc095('0x36')]=_[_0xc095('0x37')](_0x2952aa['query']);_0x1a6f23['filters']=_[_0xc095('0x38')](_0x1a6f23[_0xc095('0x33')],_0x1a6f23[_0xc095('0x36')]);_0x20e8f4[_0xc095('0x39')]=_[_0xc095('0x38')](_0x1a6f23[_0xc095('0x33')],qs[_0xc095('0x3a')](_0x2952aa[_0xc095('0x36')][_0xc095('0x3a')]));_0x20e8f4[_0xc095('0x39')]=_0x20e8f4['attributes'][_0xc095('0x3b')]?_0x20e8f4['attributes']:_0x1a6f23[_0xc095('0x33')];if(!_0x2952aa[_0xc095('0x36')][_0xc095('0x3c')]('nolimit')){_0x20e8f4['limit']=qs[_0xc095('0x24')](_0x2952aa[_0xc095('0x36')][_0xc095('0x24')]);_0x20e8f4['offset']=qs[_0xc095('0x22')](_0x2952aa[_0xc095('0x36')][_0xc095('0x22')]);}_0x20e8f4['order']=qs[_0xc095('0x3d')](_0x2952aa[_0xc095('0x36')][_0xc095('0x3d')]);_0x20e8f4[_0xc095('0x3e')]=qs['filters'](_[_0xc095('0x3f')](_0x2952aa[_0xc095('0x36')],_0x1a6f23[_0xc095('0x40')]),_0x3a9388);if(_0x2952aa[_0xc095('0x36')]['filter']){_0x20e8f4[_0xc095('0x3e')]=_[_0xc095('0x41')](_0x20e8f4[_0xc095('0x3e')],{'$or':_['map'](_0x3a9388,function(_0x5b61f2){if(_0x5b61f2[_0xc095('0x42')]!==_0xc095('0x43')){var _0x11da54={};_0x11da54[_0x5b61f2[_0xc095('0x2e')]]={'$like':'%'+_0x2952aa[_0xc095('0x36')][_0xc095('0x44')]+'%'};return _0x11da54;}})});}_0x20e8f4=_['merge']({},_0x20e8f4,_0x2952aa[_0xc095('0x45')]);var _0x1fd76f={'where':_0x20e8f4[_0xc095('0x3e')]};return db[_0xc095('0x46')][_0xc095('0x47')](_0x1fd76f)[_0xc095('0x2b')](function(_0x55ade1){_0x64cbf[_0xc095('0x47')]=_0x55ade1;if(_0x2952aa[_0xc095('0x36')]['includeAll']){_0x20e8f4[_0xc095('0x48')]=[{'all':!![]}];}return db[_0xc095('0x46')]['findAll'](_0x20e8f4);})[_0xc095('0x2b')](function(_0x1484d0){_0x64cbf[_0xc095('0x49')]=_0x1484d0;return _0x64cbf;})[_0xc095('0x2b')](respondWithFilteredResult(_0xe2ce78,_0x20e8f4))[_0xc095('0x4a')](handleError(_0xe2ce78,null));};exports[_0xc095('0x4b')]=function(_0x335956,_0x1ca48a){var _0x43ba17={'raw':![],'where':{'id':_0x335956[_0xc095('0x4c')]['id']}},_0xdf3309={};_0xdf3309['model']=_[_0xc095('0x37')](db[_0xc095('0x46')][_0xc095('0x4d')]);_0xdf3309[_0xc095('0x36')]=_[_0xc095('0x37')](_0x335956[_0xc095('0x36')]);_0xdf3309[_0xc095('0x40')]=_[_0xc095('0x38')](_0xdf3309['model'],_0xdf3309[_0xc095('0x36')]);_0x43ba17[_0xc095('0x39')]=_['intersection'](_0xdf3309[_0xc095('0x33')],qs[_0xc095('0x3a')](_0x335956['query'][_0xc095('0x3a')]));_0x43ba17[_0xc095('0x39')]=_0x43ba17[_0xc095('0x39')]['length']?_0x43ba17[_0xc095('0x39')]:_0xdf3309[_0xc095('0x33')];if(_0x335956['query'][_0xc095('0x4e')]){_0x43ba17['include']=[{'all':!![]}];}_0x43ba17=_[_0xc095('0x41')]({},_0x43ba17,_0x335956[_0xc095('0x45')]);return db['VoiceRecording'][_0xc095('0x4f')](_0x43ba17)[_0xc095('0x2b')](handleEntityNotFound(_0x1ca48a,null))[_0xc095('0x2b')](respondWithResult(_0x1ca48a,null))[_0xc095('0x4a')](handleError(_0x1ca48a,null));};exports['create']=function(_0x4b7533,_0x4c8b1a){return db[_0xc095('0x46')][_0xc095('0x50')](_0x4b7533[_0xc095('0x51')],{})[_0xc095('0x2b')](respondWithResult(_0x4c8b1a,0xc9))[_0xc095('0x4a')](handleError(_0x4c8b1a,null));};exports[_0xc095('0x52')]=function(_0x35272f,_0x9ca8a5){if(_0x35272f[_0xc095('0x51')]['id']){delete _0x35272f[_0xc095('0x51')]['id'];}return db[_0xc095('0x46')][_0xc095('0x4f')]({'where':{'id':_0x35272f[_0xc095('0x4c')]['id']}})['then'](handleEntityNotFound(_0x9ca8a5,null))['then'](saveUpdates(_0x35272f[_0xc095('0x51')],null))['then'](respondWithResult(_0x9ca8a5,null))['catch'](handleError(_0x9ca8a5,null));};exports[_0xc095('0x53')]=function(_0x5025f9,_0xd7a1c9){return db[_0xc095('0x46')][_0xc095('0x53')]()[_0xc095('0x2b')](respondWithResult(_0xd7a1c9,null))[_0xc095('0x4a')](handleError(_0xd7a1c9,null));};exports[_0xc095('0x54')]=function(_0x14a820,_0x15ad8f,_0x315f7a){var _0x46fd4d=require(_0xc095('0x55'));var _0x2261e2=![];var _0x5ce8c8={};if(_0x14a820[_0xc095('0x36')][_0xc095('0x42')]&&_0x14a820['query'][_0xc095('0x42')]===_0xc095('0x56')){_0x5ce8c8[_0xc095('0x56')]=_0x14a820[_0xc095('0x4c')]['id'];}else{_0x5ce8c8['id']=_0x14a820[_0xc095('0x4c')]['id'];}return db[_0xc095('0x46')][_0xc095('0x4f')]({'where':_0x5ce8c8,'attributes':['id','value'],'raw':!![]})[_0xc095('0x2b')](handleEntityNotFound(_0x15ad8f,null))[_0xc095('0x2b')](function(_0x56fd43){if(_0x56fd43){var _0x2bca8c=_0x56fd43[_0xc095('0x57')];var _0x559a7d=util[_0xc095('0x35')]('%s.cypher',_0x2bca8c);if(fs[_0xc095('0x58')](_0x559a7d)){_0x2261e2=!![];return _0x46fd4d['decryptFile'](_0x559a7d,_0x2bca8c,config['secrets'][_0xc095('0x59')])[_0xc095('0x2b')](function(){return _0x56fd43;});}return _0x56fd43;}})[_0xc095('0x2b')](function(_0x2a693f){if(_0x2a693f){var _0x2c22ab=_0x2a693f[_0xc095('0x57')];if(!fs[_0xc095('0x58')](_0x2c22ab)){throw new db['Sequelize'][(_0xc095('0x5a'))](_0xc095('0x5b'));}if(_0x2a693f['filename']){return _0x15ad8f[_0xc095('0x54')](_0x2c22ab,_0x2a693f[_0xc095('0x5c')]+path[_0xc095('0x5d')](_0x2c22ab),function(){if(_0x2261e2){fs[_0xc095('0x5e')](_0x2c22ab);}});}else{return _0x15ad8f['download'](_0x2c22ab,function(_0x2baf6b){if(_0x2261e2){fs[_0xc095('0x5e')](_0x2c22ab);}});}}})[_0xc095('0x4a')](function(_0x33be67){if(_0x33be67['message']===_0xc095('0x5b')){_0x15ad8f[_0xc095('0x21')](0x194)[_0xc095('0x2f')](_0xc095('0x5f'));}else{return handleError(_0x15ad8f,null);}});};exports[_0xc095('0x60')]=function(_0x19144a,_0x18b336,_0x519c7a){var _0xb1f4fa=require(_0xc095('0x55'));var _0x2a660c=![];var _0x1ff6bd={'$and':[db['sequelize']['where'](db['sequelize']['fn']('MD5',db[_0xc095('0x61')]['col']('uniqueid')),_0x19144a[_0xc095('0x36')][_0xc095('0x62')])]};if(_0x19144a[_0xc095('0x36')][_0xc095('0x42')]&&_0x19144a[_0xc095('0x36')]['type']===_0xc095('0x56')){_0x1ff6bd[_0xc095('0x63')][_0xc095('0x64')]({'uniqueid':_0x19144a[_0xc095('0x4c')]['id']});}else{_0x1ff6bd[_0xc095('0x63')][_0xc095('0x64')]({'id':_0x19144a['params']['id']});}return db[_0xc095('0x46')][_0xc095('0x4f')]({'where':_0x1ff6bd,'attributes':['id',_0xc095('0x57')],'raw':!![]})[_0xc095('0x2b')](handleEntityNotFound(_0x18b336,null))[_0xc095('0x2b')](function(_0x35b9cc){if(_0x35b9cc){var _0x4091fe=util['format']('%s.cypher',_0x35b9cc[_0xc095('0x57')]);if(fs[_0xc095('0x58')](_0x4091fe)){_0x2a660c=!![];return _0xb1f4fa[_0xc095('0x65')](_0x4091fe,_0x35b9cc['value'],config[_0xc095('0x66')][_0xc095('0x59')])['then'](function(){return _0x35b9cc;});}return _0x35b9cc;}})[_0xc095('0x2b')](function(_0x5d8c31){if(_0x5d8c31){if(!fs['existsSync'](_0x5d8c31[_0xc095('0x57')])){throw new db[(_0xc095('0x67'))]['ValidationError'](_0xc095('0x5b'));}if(_0x5d8c31[_0xc095('0x5c')]){return _0x18b336[_0xc095('0x54')](_0x5d8c31[_0xc095('0x57')],_0x5d8c31[_0xc095('0x5c')]+path[_0xc095('0x5d')](_0x5d8c31['value']),function(){if(_0x2a660c){fs[_0xc095('0x5e')](_0x5d8c31[_0xc095('0x57')]);}});}else{return _0x18b336['download'](_0x5d8c31[_0xc095('0x57')],function(_0x5159f5){if(_0x2a660c){fs[_0xc095('0x5e')](_0x5d8c31[_0xc095('0x57')]);}});}}})[_0xc095('0x4a')](handleError(_0x18b336,null));};exports['destroy']=function(_0x540e74,_0x13f891){return db[_0xc095('0x46')]['find']({'where':{'id':_0x540e74['params']['id']}})[_0xc095('0x2b')](function(_0x1ef9fe){if(_[_0xc095('0x68')](_0x1ef9fe)){throw new ReferenceError(_0xc095('0x69'));}return _0x1ef9fe;})['then'](function(_0x45c02d){var _0x594729=_0x45c02d[_0xc095('0x57')];logger[_0xc095('0x6a')](_0xc095('0x6b'),_0x594729);if(!_['isNil'](_0x45c02d[_0xc095('0x57')])&&fs['existsSync'](_0x594729)){logger[_0xc095('0x6a')]('File:\x20\x22'+_0x594729+_0xc095('0x6c'));fs[_0xc095('0x6d')](_0x594729);}_0x594729=_0x594729+_0xc095('0x6e');if(!_[_0xc095('0x68')](_0x45c02d[_0xc095('0x57')])&&fs[_0xc095('0x58')](_0x594729)){logger[_0xc095('0x6a')]('File:\x20\x22'+_0x594729+_0xc095('0x6c'));fs[_0xc095('0x6d')](_0x594729);}return _0x45c02d;})[_0xc095('0x2b')](function(_0xc8647e){if(!_0xc8647e)throw new InternalError();return _0xc8647e[_0xc095('0x2a')]();})[_0xc095('0x2b')](function(){_0x13f891[_0xc095('0x21')](0xcc)['end']();})[_0xc095('0x4a')](handleError(_0x13f891,null));};function getBucketslist(_0x30e700,_0x431490,_0x2fdf84){return new Promise(function(_0x4f38e7,_0x3bf0a5){var _0x1f5b73=new AWS['S3']({'accessKeyId':_0x431490,'secretAccessKey':_0x30e700,'region':_0x2fdf84});_0x1f5b73[_0xc095('0x6f')]({},function(_0x52bfbd,_0x33223a){if(_0x52bfbd){return _0x3bf0a5(_0x52bfbd);}else{return _0x4f38e7(_0x33223a);}});});}function createBucket(_0x56ec8a,_0x4eee05,_0x72153a,_0xefe3ca){return new Promise(function(_0x33a194,_0x4b9e87){var _0x348714=new AWS['S3']({'accessKeyId':_0x4eee05,'secretAccessKey':_0x56ec8a,'region':_0x72153a});_0x348714[_0xc095('0x70')]({'Bucket':_0xefe3ca},function(_0x24df82,_0x531b0f){if(_0x24df82){return _0x4b9e87(_0x24df82);}else{return _0x33a194(_0x531b0f);}});});}function uploadFile(_0x3cefee,_0x328ce6,_0x2f2e11,_0x2eb744,_0x49eaf5,_0x13a172){return new Promise(function(_0x54259f,_0x4140c6){var _0x697833=new AWS['S3']({'accessKeyId':_0x328ce6,'secretAccessKey':_0x3cefee,'region':_0x2f2e11});_0x697833[_0xc095('0x71')]({'Bucket':_0x2eb744,'Key':_0x49eaf5,'Body':_0x13a172},function(_0x2306bb,_0x2938ae){if(_0x2306bb){return _0x4140c6(_0x2306bb);}else{return _0x54259f(_0x2938ae);}});});}function startTranscribe(_0x310f16,_0x24fbd5,_0x695d16,_0x2b976c,_0x545426,_0x5b34f7){return new Promise(function(_0x412f6d,_0x11d3e2){var _0x11380d=new AWS[(_0xc095('0x72'))]({'accessKeyId':_0x24fbd5,'secretAccessKey':_0x310f16,'region':_0x695d16});_0x11380d['startTranscriptionJob']({'TranscriptionJobName':_0x2b976c,'LanguageCode':_0x545426,'Media':{'MediaFileUri':_0x5b34f7}},function(_0x1dc106,_0x2529a7){if(_0x1dc106){return _0x11d3e2(_0x1dc106);}else{return _0x412f6d(_0x2529a7);}});});}function transcribe(_0x2944e5,_0xa93236,_0x434367,_0x37ad9b,_0x508b09,_0xb21067,_0x3e017b){return new Promise(function(_0x4269d1,_0x592e20){var _0x93e744={};logger[_0xc095('0x6a')](util[_0xc095('0x35')](_0xc095('0x73'),_0x2944e5,_0x508b09));return uploadFile(_0xa93236,_0x434367,_0x37ad9b,_0x508b09,path[_0xc095('0x74')](_0xb21067),fs[_0xc095('0x75')](_0xb21067))['then'](function(_0x54e0ce){logger[_0xc095('0x6a')](util[_0xc095('0x35')](_0xc095('0x76'),_0x2944e5,_0x508b09,_0x54e0ce[_0xc095('0x77')]));_0x93e744[_0xc095('0x78')]=_0x54e0ce[_0xc095('0x79')];_0x93e744['location']=_0x54e0ce[_0xc095('0x77')];logger[_0xc095('0x6a')](util[_0xc095('0x35')](_0xc095('0x7a'),_0x2944e5));return startTranscribe(_0xa93236,_0x434367,_0x37ad9b,uuidv4(),_0x3e017b,_0x54e0ce['Location']);})['then'](function(_0x54c277){logger['info'](util[_0xc095('0x35')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x2944e5,_0x54c277[_0xc095('0x7b')][_0xc095('0x7c')]));_0x93e744[_0xc095('0x7d')]=_0x54c277[_0xc095('0x7b')][_0xc095('0x7c')];_0x93e744[_0xc095('0x7e')]=_0x54c277[_0xc095('0x7b')][_0xc095('0x7f')];return _0x4269d1(_0x93e744);})[_0xc095('0x4a')](function(_0x49cb5a){return _0x592e20(_0x49cb5a);});});}exports[_0xc095('0x80')]=function(_0x4ad4b8,_0x424fec,_0x1f0389){var _0x1b3104;var _0x57cf72;var _0x80bb8e;var _0x300a63=require(_0xc095('0x55'));return db[_0xc095('0x46')][_0xc095('0x81')]({'where':{'id':_0x4ad4b8[_0xc095('0x4c')]['id']}})[_0xc095('0x2b')](function(_0x58cd4e){if(_0x58cd4e){var _0x452515=util['format'](_0xc095('0x82'),_0x58cd4e[_0xc095('0x57')]);if(fs['existsSync'](_0x452515)){cypher=!![];return _0x300a63['decryptFile'](_0x452515,_0x58cd4e['value'],config['secrets'][_0xc095('0x59')])[_0xc095('0x2b')](function(){return _0x58cd4e;});}return _0x58cd4e;}})[_0xc095('0x2b')](function(_0x35d960){if(!_0x35d960){throw new db[(_0xc095('0x67'))][(_0xc095('0x5a'))](_0xc095('0x83'));}_0x57cf72=_0x35d960;return db['Setting']['findOne']({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x424fec,null))[_0xc095('0x2b')](function(_0x4c4e7a){if(_0x4c4e7a){_0x1b3104=_0x4c4e7a;if(!_0x1b3104[_0xc095('0x84')]||!_0x1b3104[_0xc095('0x85')]||!_0x1b3104[_0xc095('0x86')]||!_0x1b3104[_0xc095('0x87')]||!_0x1b3104[_0xc095('0x78')]){throw new db[(_0xc095('0x67'))][(_0xc095('0x5a'))](_0xc095('0x88'));}if(_0x4ad4b8[_0xc095('0x51')][_0xc095('0x89')]&&(!_0x1b3104['sentiment']||!_0x1b3104[_0xc095('0x8a')]||!_0x1b3104[_0xc095('0x8b')]||!_0x1b3104['language']||!_0x1b3104[_0xc095('0x78')])){throw new db[(_0xc095('0x67'))][(_0xc095('0x5a'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0xc095('0x8c')][_0xc095('0x81')]({'where':{'id':_0x1b3104[_0xc095('0x85')]}});}})['then'](function(_0x4347a2){if(!_0x4347a2){throw new db[(_0xc095('0x67'))]['ValidationError'](_0xc095('0x8d'));}if(!_0x4347a2[_0xc095('0x8e')]||!_0x4347a2['data2']){throw new db[(_0xc095('0x67'))][(_0xc095('0x5a'))](_0xc095('0x8f'));}_0x80bb8e=_0x4347a2;return getBucketslist(_0x80bb8e[_0xc095('0x8e')],_0x80bb8e[_0xc095('0x90')],_0x1b3104[_0xc095('0x86')]);})['then'](function(_0x51c621){if(_0x51c621&&_0x51c621['Buckets']){var _0x1a3e8e=_[_0xc095('0x4f')](_0x51c621[_0xc095('0x91')],function(_0x2a12de){return _0x2a12de[_0xc095('0x92')]===_0x1b3104[_0xc095('0x78')];});if(!_0x1a3e8e){logger['info'](util[_0xc095('0x35')](_0xc095('0x93'),_0x4ad4b8[_0xc095('0x4c')]['id'],_0x1b3104[_0xc095('0x78')]));return createBucket(_0x80bb8e['data1'],_0x80bb8e['data2'],_0x1b3104['transcribeRegion'],_0x1b3104[_0xc095('0x78')]);}logger['info'](util['format'](_0xc095('0x94'),_0x4ad4b8[_0xc095('0x4c')]['id'],_0x1b3104[_0xc095('0x78')]));return;}})['then'](function(_0x4e0602){if(_0x57cf72[_0xc095('0x7e')]===_0xc095('0x95')){return transcribe(_0x4ad4b8[_0xc095('0x4c')]['id'],_0x80bb8e['data1'],_0x80bb8e[_0xc095('0x90')],_0x1b3104['transcribeRegion'],_0x1b3104['bucket'],_0x57cf72[_0xc095('0x57')],_0x1b3104['language']);}else{logger[_0xc095('0x6a')](util['format'](_0xc095('0x96'),_0x4ad4b8[_0xc095('0x4c')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})['then'](function(_0x17fd87){if(_0x17fd87){_0x17fd87[_0xc095('0x97')]=_0x4ad4b8[_0xc095('0x51')][_0xc095('0x89')];return _0x57cf72['updateAttributes'](_0x17fd87);}})['then'](respondWithResult(_0x424fec,null))[_0xc095('0x4a')](handleError(_0x424fec,null));};function writeFile(_0x51e2f6,_0x4de8bb){return new Promise(function(_0x25bcf1,_0x4e070c){fs[_0xc095('0x98')](_0x4de8bb,_0x51e2f6,function(_0xbdc641,_0xe7a566){if(_0xbdc641){return _0x4e070c(_0xbdc641);}else{return _0x25bcf1(_0xe7a566);}});});}exports[_0xc095('0x99')]=function(_0x86f5d6,_0x33b127,_0x57313b){return db[_0xc095('0x46')][_0xc095('0x81')]({'where':{'id':_0x86f5d6['params']['id']}})[_0xc095('0x2b')](handleEntityNotFound(_0x33b127))[_0xc095('0x2b')](function(_0x2f7800){if(_0x2f7800&&_0x2f7800[_0xc095('0x9a')]){var _0x76f49a=_0x2f7800[_0xc095('0x9a')];var _0x5b225e=config[_0xc095('0x9b')]+_0xc095('0x9c')+_0x2f7800['id']+_0xc095('0x9d');if(fs[_0xc095('0x58')](_0x5b225e)){return _0x5b225e;}return writeFile(_0x76f49a,_0x5b225e)[_0xc095('0x2b')](function(){return _0x5b225e;});}else{throw new db[(_0xc095('0x67'))][(_0xc095('0x5a'))](_0xc095('0x9e'));}})[_0xc095('0x2b')](function(_0x1eeae2){return _0x33b127[_0xc095('0x54')](_0x1eeae2);})[_0xc095('0x4a')](handleError(_0x33b127));};
\ No newline at end of file
+var _0xd138=['[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','secrets','Voice\x20Recording\x20not\x20found','Setting','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','transcribeAccountId','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','eml-format','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','aws-sdk','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','limit','undefined','count','offset','status','set','Content-Range','apply','reject','save','update','then','name','send','map','VoiceRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','sort','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','describe','uniqueid','value','%s.cypher','existsSync','decryptFile','recording','ValidationError','VoiceRecording\x20not\x20found','download','filename','message','Not\x20found','downloads','../../components/encryptor','sequelize','col','token','$and','push','Sequelize','extname','unlink','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync'];(function(_0x2444bb,_0x218878){var _0x57df0d=function(_0x4d757f){while(--_0x4d757f){_0x2444bb['push'](_0x2444bb['shift']());}};_0x57df0d(++_0x218878);}(_0xd138,0xba));var _0x8d13=function(_0x1dfebf,_0x1d6791){_0x1dfebf=_0x1dfebf-0x0;var _0x5ec3fe=_0xd138[_0x1dfebf];return _0x5ec3fe;};'use strict';var emlformat=require(_0x8d13('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8d13('0x1'));var jsonpatch=require(_0x8d13('0x2'));var rp=require(_0x8d13('0x3'));var moment=require(_0x8d13('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x8d13('0x5'));var sox=require(_0x8d13('0x6'));var csv=require(_0x8d13('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d13('0x8'));var _=require('lodash');var squel=require(_0x8d13('0x9'));var crypto=require(_0x8d13('0xa'));var jsforce=require(_0x8d13('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x8d13('0x7'));var querystring=require('querystring');var Papa=require(_0x8d13('0xc'));var AWS=require(_0x8d13('0xd'));var uuidv4=require('uuid/v4');var Redis=require('ioredis');var authService=require(_0x8d13('0xe'));var qs=require(_0x8d13('0xf'));var as=require(_0x8d13('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8d13('0x11'));var utils=require(_0x8d13('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x8d13('0x13'));var db=require(_0x8d13('0x14'))['db'];function respondWithStatusCode(_0x30d71c,_0x392087){_0x392087=_0x392087||0xcc;return function(_0x2e1304){if(_0x2e1304){return _0x30d71c[_0x8d13('0x15')](_0x392087);}return _0x30d71c['status'](_0x392087)[_0x8d13('0x16')]();};}function respondWithResult(_0x144403,_0x233869){_0x233869=_0x233869||0xc8;return function(_0x5023c4){if(_0x5023c4){return _0x144403['status'](_0x233869)[_0x8d13('0x17')](_0x5023c4);}};}function respondWithFilteredResult(_0x4c5cab,_0xed45ef){return function(_0x5b1e02){if(_0x5b1e02){var _0x9b5313=typeof _0xed45ef['offset']==='undefined'&&typeof _0xed45ef[_0x8d13('0x18')]===_0x8d13('0x19');var _0x64049f=_0x5b1e02[_0x8d13('0x1a')];var _0x184a62=_0x9b5313?0x0:_0xed45ef[_0x8d13('0x1b')];var _0x5db8cc=_0x9b5313?_0x5b1e02['count']:_0xed45ef[_0x8d13('0x1b')]+_0xed45ef[_0x8d13('0x18')];var _0x73b286;if(_0x5db8cc>=_0x64049f){_0x5db8cc=_0x64049f;_0x73b286=0xc8;}else{_0x73b286=0xce;}_0x4c5cab[_0x8d13('0x1c')](_0x73b286);return _0x4c5cab[_0x8d13('0x1d')](_0x8d13('0x1e'),_0x184a62+'-'+_0x5db8cc+'/'+_0x64049f)[_0x8d13('0x17')](_0x5b1e02);}return null;};}function patchUpdates(_0x17f7e8){return function(_0x3b464b){try{jsonpatch[_0x8d13('0x1f')](_0x3b464b,_0x17f7e8,!![]);}catch(_0x128617){return BPromise[_0x8d13('0x20')](_0x128617);}return _0x3b464b[_0x8d13('0x21')]();};}function saveUpdates(_0x355e2d,_0x418018){return function(_0x4a4f86){if(_0x4a4f86){return _0x4a4f86[_0x8d13('0x22')](_0x355e2d)[_0x8d13('0x23')](function(_0xfee3c3){return _0xfee3c3;});}return null;};}function removeEntity(_0x256aa4,_0x44541e){return function(_0x5dba22){if(_0x5dba22){return _0x5dba22['destroy']()[_0x8d13('0x23')](function(){_0x256aa4[_0x8d13('0x1c')](0xcc)[_0x8d13('0x16')]();});}};}function handleEntityNotFound(_0xf82471,_0xcc5f0c){return function(_0x8e737b){if(!_0x8e737b){_0xf82471['sendStatus'](0x194);}return _0x8e737b;};}function handleError(_0x303bf2,_0x3e5cad){_0x3e5cad=_0x3e5cad||0x1f4;return function(_0x236c85){logger['error'](_0x236c85['stack']);if(_0x236c85[_0x8d13('0x24')]){delete _0x236c85[_0x8d13('0x24')];}_0x303bf2[_0x8d13('0x1c')](_0x3e5cad)[_0x8d13('0x25')](_0x236c85);};}exports['index']=function(_0x2a25af,_0x568c9b){var _0x4b950e={},_0x40f72d={},_0x521cd3={'count':0x0,'rows':[]};var _0x283182=_[_0x8d13('0x26')](db[_0x8d13('0x27')][_0x8d13('0x28')],function(_0x20d7ff){return{'name':_0x20d7ff[_0x8d13('0x29')],'type':_0x20d7ff[_0x8d13('0x2a')][_0x8d13('0x2b')]};});_0x40f72d[_0x8d13('0x2c')]=_[_0x8d13('0x2d')](_[_0x8d13('0x26')](_0x283182,_0x8d13('0x24')),[_0x8d13('0x2e')]);_0x40f72d[_0x8d13('0x2f')]=_[_0x8d13('0x30')](_0x2a25af[_0x8d13('0x2f')]);_0x40f72d[_0x8d13('0x31')]=_[_0x8d13('0x32')](_0x40f72d['model'],_0x40f72d[_0x8d13('0x2f')]);_0x4b950e[_0x8d13('0x33')]=_[_0x8d13('0x32')](_0x40f72d[_0x8d13('0x2c')],qs[_0x8d13('0x34')](_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x34')]));_0x4b950e['attributes']=_0x4b950e[_0x8d13('0x33')][_0x8d13('0x35')]?_0x4b950e['attributes']:_0x40f72d['model'];if(!_0x2a25af[_0x8d13('0x2f')]['hasOwnProperty']('nolimit')){_0x4b950e[_0x8d13('0x18')]=qs[_0x8d13('0x18')](_0x2a25af['query']['limit']);_0x4b950e['offset']=qs[_0x8d13('0x1b')](_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x1b')]);}_0x4b950e['order']=qs[_0x8d13('0x36')](_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x36')]);_0x4b950e['where']=qs[_0x8d13('0x31')](_['pick'](_0x2a25af['query'],_0x40f72d[_0x8d13('0x31')]),_0x283182);if(_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x37')]){_0x4b950e[_0x8d13('0x38')]=_[_0x8d13('0x39')](_0x4b950e[_0x8d13('0x38')],{'$or':_[_0x8d13('0x26')](_0x283182,function(_0xaad13d){if(_0xaad13d[_0x8d13('0x2a')]!=='VIRTUAL'){var _0x3bdbd9={};_0x3bdbd9[_0xaad13d[_0x8d13('0x24')]]={'$like':'%'+_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x37')]+'%'};return _0x3bdbd9;}})});}_0x4b950e=_[_0x8d13('0x39')]({},_0x4b950e,_0x2a25af[_0x8d13('0x3a')]);var _0x3aac8c={'where':_0x4b950e[_0x8d13('0x38')]};return db[_0x8d13('0x27')][_0x8d13('0x1a')](_0x3aac8c)[_0x8d13('0x23')](function(_0x47d203){_0x521cd3[_0x8d13('0x1a')]=_0x47d203;if(_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x3b')]){_0x4b950e[_0x8d13('0x3c')]=[{'all':!![]}];}return db['VoiceRecording'][_0x8d13('0x3d')](_0x4b950e);})['then'](function(_0x3f7acd){_0x521cd3[_0x8d13('0x3e')]=_0x3f7acd;return _0x521cd3;})[_0x8d13('0x23')](respondWithFilteredResult(_0x568c9b,_0x4b950e))[_0x8d13('0x3f')](handleError(_0x568c9b,null));};exports[_0x8d13('0x40')]=function(_0x2f1041,_0x40ef3e){var _0x3f9246={'raw':![],'where':{'id':_0x2f1041['params']['id']}},_0x358067={};_0x358067[_0x8d13('0x2c')]=_[_0x8d13('0x30')](db[_0x8d13('0x27')]['rawAttributes']);_0x358067[_0x8d13('0x2f')]=_['keys'](_0x2f1041['query']);_0x358067['filters']=_['intersection'](_0x358067[_0x8d13('0x2c')],_0x358067[_0x8d13('0x2f')]);_0x3f9246[_0x8d13('0x33')]=_['intersection'](_0x358067[_0x8d13('0x2c')],qs[_0x8d13('0x34')](_0x2f1041[_0x8d13('0x2f')][_0x8d13('0x34')]));_0x3f9246[_0x8d13('0x33')]=_0x3f9246[_0x8d13('0x33')]['length']?_0x3f9246[_0x8d13('0x33')]:_0x358067[_0x8d13('0x2c')];if(_0x2f1041[_0x8d13('0x2f')][_0x8d13('0x3b')]){_0x3f9246['include']=[{'all':!![]}];}_0x3f9246=_[_0x8d13('0x39')]({},_0x3f9246,_0x2f1041[_0x8d13('0x3a')]);return db[_0x8d13('0x27')][_0x8d13('0x41')](_0x3f9246)[_0x8d13('0x23')](handleEntityNotFound(_0x40ef3e,null))[_0x8d13('0x23')](respondWithResult(_0x40ef3e,null))[_0x8d13('0x3f')](handleError(_0x40ef3e,null));};exports[_0x8d13('0x42')]=function(_0x1e689e,_0x56fc13){return db['VoiceRecording'][_0x8d13('0x42')](_0x1e689e[_0x8d13('0x43')],{})['then'](respondWithResult(_0x56fc13,0xc9))[_0x8d13('0x3f')](handleError(_0x56fc13,null));};exports['update']=function(_0x178f2d,_0x37238d){if(_0x178f2d['body']['id']){delete _0x178f2d[_0x8d13('0x43')]['id'];}return db[_0x8d13('0x27')]['find']({'where':{'id':_0x178f2d[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](handleEntityNotFound(_0x37238d,null))[_0x8d13('0x23')](saveUpdates(_0x178f2d[_0x8d13('0x43')],null))[_0x8d13('0x23')](respondWithResult(_0x37238d,null))[_0x8d13('0x3f')](handleError(_0x37238d,null));};exports[_0x8d13('0x45')]=function(_0x4904c5,_0x4125d8){return db['VoiceRecording']['describe']()['then'](respondWithResult(_0x4125d8,null))[_0x8d13('0x3f')](handleError(_0x4125d8,null));};exports['download']=function(_0x5ab277,_0x52611d,_0x350e7c){var _0x395c56=require('../../components/encryptor');var _0x127f9e=![];var _0x2b9dd5={};if(_0x5ab277['query']['type']&&_0x5ab277[_0x8d13('0x2f')][_0x8d13('0x2a')]===_0x8d13('0x46')){_0x2b9dd5[_0x8d13('0x46')]=_0x5ab277[_0x8d13('0x44')]['id'];}else{_0x2b9dd5['id']=_0x5ab277[_0x8d13('0x44')]['id'];}return db[_0x8d13('0x27')]['find']({'where':_0x2b9dd5,'attributes':['id',_0x8d13('0x47')],'raw':!![]})[_0x8d13('0x23')](handleEntityNotFound(_0x52611d,null))[_0x8d13('0x23')](function(_0x312364){if(_0x312364){var _0x1b8a16=_0x312364['value'];var _0x1beb36=util[_0x8d13('0x2e')](_0x8d13('0x48'),_0x1b8a16);if(fs[_0x8d13('0x49')](_0x1beb36)){_0x127f9e=!![];return _0x395c56[_0x8d13('0x4a')](_0x1beb36,_0x1b8a16,config['secrets'][_0x8d13('0x4b')])['then'](function(){return _0x312364;});}return _0x312364;}})[_0x8d13('0x23')](function(_0x5b5865){if(_0x5b5865){var _0x432068=_0x5b5865['value'];if(!fs['existsSync'](_0x432068)){throw new db['Sequelize'][(_0x8d13('0x4c'))](_0x8d13('0x4d'));}if(_0x5b5865['filename']){return _0x52611d[_0x8d13('0x4e')](_0x432068,_0x5b5865[_0x8d13('0x4f')]+path['extname'](_0x432068),function(){if(_0x127f9e){fs['unlink'](_0x432068);}});}else{return _0x52611d[_0x8d13('0x4e')](_0x432068,function(_0x500ed5){if(_0x127f9e){fs['unlink'](_0x432068);}});}}})[_0x8d13('0x3f')](function(_0x3c4efd){if(_0x3c4efd[_0x8d13('0x50')]===_0x8d13('0x4d')){_0x52611d[_0x8d13('0x1c')](0x194)['send'](_0x8d13('0x51'));}else{return handleError(_0x52611d,null);}});};exports[_0x8d13('0x52')]=function(_0x72f50,_0x55631c,_0x41f0b7){var _0x501217=require(_0x8d13('0x53'));var _0x14e3ff=![];var _0x553eea={'$and':[db[_0x8d13('0x54')][_0x8d13('0x38')](db['sequelize']['fn']('MD5',db[_0x8d13('0x54')][_0x8d13('0x55')](_0x8d13('0x46'))),_0x72f50[_0x8d13('0x2f')][_0x8d13('0x56')])]};if(_0x72f50['query']['type']&&_0x72f50[_0x8d13('0x2f')]['type']==='uniqueid'){_0x553eea[_0x8d13('0x57')][_0x8d13('0x58')]({'uniqueid':_0x72f50['params']['id']});}else{_0x553eea[_0x8d13('0x57')][_0x8d13('0x58')]({'id':_0x72f50[_0x8d13('0x44')]['id']});}return db['VoiceRecording'][_0x8d13('0x41')]({'where':_0x553eea,'attributes':['id',_0x8d13('0x47')],'raw':!![]})[_0x8d13('0x23')](handleEntityNotFound(_0x55631c,null))['then'](function(_0x10a160){if(_0x10a160){var _0x5af28d=util[_0x8d13('0x2e')](_0x8d13('0x48'),_0x10a160[_0x8d13('0x47')]);if(fs[_0x8d13('0x49')](_0x5af28d)){_0x14e3ff=!![];return _0x501217[_0x8d13('0x4a')](_0x5af28d,_0x10a160[_0x8d13('0x47')],config['secrets']['recording'])[_0x8d13('0x23')](function(){return _0x10a160;});}return _0x10a160;}})['then'](function(_0x173f91){if(_0x173f91){if(!fs[_0x8d13('0x49')](_0x173f91['value'])){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))](_0x8d13('0x4d'));}if(_0x173f91[_0x8d13('0x4f')]){return _0x55631c[_0x8d13('0x4e')](_0x173f91[_0x8d13('0x47')],_0x173f91['filename']+path[_0x8d13('0x5a')](_0x173f91[_0x8d13('0x47')]),function(){if(_0x14e3ff){fs[_0x8d13('0x5b')](_0x173f91['value']);}});}else{return _0x55631c[_0x8d13('0x4e')](_0x173f91[_0x8d13('0x47')],function(_0x1d8c9d){if(_0x14e3ff){fs[_0x8d13('0x5b')](_0x173f91[_0x8d13('0x47')]);}});}}})[_0x8d13('0x3f')](handleError(_0x55631c,null));};exports[_0x8d13('0x5c')]=function(_0x590b4c,_0x44e9b8){return db['VoiceRecording'][_0x8d13('0x41')]({'where':{'id':_0x590b4c[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](function(_0x38e088){if(_[_0x8d13('0x5d')](_0x38e088)){throw new ReferenceError(_0x8d13('0x5e'));}return _0x38e088;})[_0x8d13('0x23')](function(_0xb5bc31){var _0x4be23b=_0xb5bc31[_0x8d13('0x47')];logger[_0x8d13('0x5f')](_0x8d13('0x60'),_0x4be23b);if(!_[_0x8d13('0x5d')](_0xb5bc31['value'])&&fs[_0x8d13('0x49')](_0x4be23b)){logger[_0x8d13('0x5f')](_0x8d13('0x61')+_0x4be23b+_0x8d13('0x62'));fs[_0x8d13('0x63')](_0x4be23b);}_0x4be23b=_0x4be23b+'.cypher';if(!_[_0x8d13('0x5d')](_0xb5bc31[_0x8d13('0x47')])&&fs['existsSync'](_0x4be23b)){logger[_0x8d13('0x5f')]('File:\x20\x22'+_0x4be23b+_0x8d13('0x62'));fs[_0x8d13('0x63')](_0x4be23b);}return _0xb5bc31;})['then'](function(_0x42872b){if(!_0x42872b)throw new InternalError();return _0x42872b[_0x8d13('0x5c')]();})['then'](function(){_0x44e9b8[_0x8d13('0x1c')](0xcc)[_0x8d13('0x16')]();})[_0x8d13('0x3f')](handleError(_0x44e9b8,null));};function getBucketslist(_0x582b7f,_0x5f2b3e,_0x126e3f){return new Promise(function(_0x46cce6,_0x28fd74){var _0x358305=new AWS['S3']({'accessKeyId':_0x5f2b3e,'secretAccessKey':_0x582b7f,'region':_0x126e3f});_0x358305[_0x8d13('0x64')]({},function(_0x2d31f5,_0x3165a8){if(_0x2d31f5){return _0x28fd74(_0x2d31f5);}else{return _0x46cce6(_0x3165a8);}});});}function createBucket(_0x5ba62c,_0x579d64,_0xe24511,_0x2419a2){return new Promise(function(_0x4d3b96,_0x226a46){var _0x1a3b4a=new AWS['S3']({'accessKeyId':_0x579d64,'secretAccessKey':_0x5ba62c,'region':_0xe24511});_0x1a3b4a[_0x8d13('0x65')]({'Bucket':_0x2419a2},function(_0x47bea0,_0x23f898){if(_0x47bea0){return _0x226a46(_0x47bea0);}else{return _0x4d3b96(_0x23f898);}});});}function uploadFile(_0x183b48,_0x3daf5d,_0x10be77,_0x444a35,_0x57d136,_0x3b5310){return new Promise(function(_0x3d51c7,_0x411ebb){var _0x27e01c=new AWS['S3']({'accessKeyId':_0x3daf5d,'secretAccessKey':_0x183b48,'region':_0x10be77});_0x27e01c[_0x8d13('0x66')]({'Bucket':_0x444a35,'Key':_0x57d136,'Body':_0x3b5310},function(_0x464c6a,_0x5bb3e2){if(_0x464c6a){return _0x411ebb(_0x464c6a);}else{return _0x3d51c7(_0x5bb3e2);}});});}function startTranscribe(_0x5676c2,_0x5dc177,_0x183750,_0x10b0fd,_0x224a73,_0x30b905){return new Promise(function(_0x1ac1c0,_0x59fba0){var _0x5cb234=new AWS[(_0x8d13('0x67'))]({'accessKeyId':_0x5dc177,'secretAccessKey':_0x5676c2,'region':_0x183750});_0x5cb234[_0x8d13('0x68')]({'TranscriptionJobName':_0x10b0fd,'LanguageCode':_0x224a73,'Media':{'MediaFileUri':_0x30b905}},function(_0x345f9c,_0x2539e2){if(_0x345f9c){return _0x59fba0(_0x345f9c);}else{return _0x1ac1c0(_0x2539e2);}});});}function transcribe(_0x4a2474,_0x1ba825,_0x549039,_0x20863c,_0x3309bd,_0x3a567c,_0xbd15c4){return new Promise(function(_0x4f45a5,_0x45b46f){var _0xfb2e32={};logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x69'),_0x4a2474,_0x3309bd));return uploadFile(_0x1ba825,_0x549039,_0x20863c,_0x3309bd,path[_0x8d13('0x6a')](_0x3a567c),fs[_0x8d13('0x6b')](_0x3a567c))['then'](function(_0x46387b){logger['info'](util[_0x8d13('0x2e')](_0x8d13('0x6c'),_0x4a2474,_0x3309bd,_0x46387b[_0x8d13('0x6d')]));_0xfb2e32[_0x8d13('0x6e')]=_0x46387b[_0x8d13('0x6f')];_0xfb2e32[_0x8d13('0x70')]=_0x46387b[_0x8d13('0x6d')];logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x71'),_0x4a2474));return startTranscribe(_0x1ba825,_0x549039,_0x20863c,uuidv4(),_0xbd15c4,_0x46387b[_0x8d13('0x6d')]);})['then'](function(_0x9bd422){logger[_0x8d13('0x5f')](util['format'](_0x8d13('0x72'),_0x4a2474,_0x9bd422[_0x8d13('0x73')]['TranscriptionJobName']));_0xfb2e32['transcribeName']=_0x9bd422[_0x8d13('0x73')][_0x8d13('0x74')];_0xfb2e32[_0x8d13('0x75')]=_0x9bd422[_0x8d13('0x73')][_0x8d13('0x76')];return _0x4f45a5(_0xfb2e32);})['catch'](function(_0x350213){return _0x45b46f(_0x350213);});});}exports[_0x8d13('0x77')]=function(_0x3ac9ae,_0x33a4fd,_0x1d3b56){var _0x1ee967;var _0x17e0f2;var _0x56d35a;var _0xf957b0=require(_0x8d13('0x53'));return db[_0x8d13('0x27')][_0x8d13('0x78')]({'where':{'id':_0x3ac9ae[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](function(_0x30f1e3){if(_0x30f1e3){var _0x486e45=util[_0x8d13('0x2e')]('%s.cypher',_0x30f1e3[_0x8d13('0x47')]);if(fs[_0x8d13('0x49')](_0x486e45)){cypher=!![];return _0xf957b0[_0x8d13('0x4a')](_0x486e45,_0x30f1e3[_0x8d13('0x47')],config[_0x8d13('0x79')][_0x8d13('0x4b')])[_0x8d13('0x23')](function(){return _0x30f1e3;});}return _0x30f1e3;}})[_0x8d13('0x23')](function(_0x5708e9){if(!_0x5708e9){throw new db[(_0x8d13('0x59'))]['ValidationError'](_0x8d13('0x7a'));}_0x17e0f2=_0x5708e9;return db[_0x8d13('0x7b')][_0x8d13('0x78')]({'where':{'id':0x1}});})[_0x8d13('0x23')](handleEntityNotFound(_0x33a4fd,null))[_0x8d13('0x23')](function(_0xa0d153){if(_0xa0d153){_0x1ee967=_0xa0d153;if(!_0x1ee967['transcribe']||!_0x1ee967['transcribeAccountId']||!_0x1ee967[_0x8d13('0x7c')]||!_0x1ee967[_0x8d13('0x7d')]||!_0x1ee967[_0x8d13('0x6e')]){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))](_0x8d13('0x7e'));}if(_0x3ac9ae[_0x8d13('0x43')]['runSentiment']&&(!_0x1ee967[_0x8d13('0x7f')]||!_0x1ee967['sentimentAccountId']||!_0x1ee967[_0x8d13('0x80')]||!_0x1ee967[_0x8d13('0x7d')]||!_0x1ee967[_0x8d13('0x6e')])){throw new db['Sequelize'][(_0x8d13('0x4c'))](_0x8d13('0x81'));}return db['CloudProvider'][_0x8d13('0x78')]({'where':{'id':_0x1ee967[_0x8d13('0x82')]}});}})[_0x8d13('0x23')](function(_0xc61a4f){if(!_0xc61a4f){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xc61a4f[_0x8d13('0x83')]||!_0xc61a4f[_0x8d13('0x84')]){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))]('Cloud\x20Provider\x20not\x20configured');}_0x56d35a=_0xc61a4f;return getBucketslist(_0x56d35a[_0x8d13('0x83')],_0x56d35a[_0x8d13('0x84')],_0x1ee967[_0x8d13('0x7c')]);})['then'](function(_0x14ffd2){if(_0x14ffd2&&_0x14ffd2['Buckets']){var _0x163274=_['find'](_0x14ffd2[_0x8d13('0x85')],function(_0x38670c){return _0x38670c[_0x8d13('0x86')]===_0x1ee967['bucket'];});if(!_0x163274){logger[_0x8d13('0x5f')](util['format'](_0x8d13('0x87'),_0x3ac9ae[_0x8d13('0x44')]['id'],_0x1ee967[_0x8d13('0x6e')]));return createBucket(_0x56d35a[_0x8d13('0x83')],_0x56d35a['data2'],_0x1ee967[_0x8d13('0x7c')],_0x1ee967[_0x8d13('0x6e')]);}logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x88'),_0x3ac9ae[_0x8d13('0x44')]['id'],_0x1ee967['bucket']));return;}})[_0x8d13('0x23')](function(_0x4fee79){if(_0x17e0f2['transcribeStatus']==='NEW'){return transcribe(_0x3ac9ae[_0x8d13('0x44')]['id'],_0x56d35a[_0x8d13('0x83')],_0x56d35a[_0x8d13('0x84')],_0x1ee967['transcribeRegion'],_0x1ee967[_0x8d13('0x6e')],_0x17e0f2[_0x8d13('0x47')],_0x1ee967[_0x8d13('0x7d')]);}else{logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x89'),_0x3ac9ae[_0x8d13('0x44')]['id']));return{'transcribeStatus':_0x8d13('0x8a')};}})[_0x8d13('0x23')](function(_0x189876){if(_0x189876){_0x189876[_0x8d13('0x8b')]=_0x3ac9ae[_0x8d13('0x43')][_0x8d13('0x8c')];return _0x17e0f2['updateAttributes'](_0x189876);}})['then'](respondWithResult(_0x33a4fd,null))[_0x8d13('0x3f')](handleError(_0x33a4fd,null));};function writeFile(_0xbf325b,_0xe1c696){return new Promise(function(_0x4ee33d,_0x23cc82){fs[_0x8d13('0x8d')](_0xe1c696,_0xbf325b,function(_0x3c90d7,_0x2bfb3){if(_0x3c90d7){return _0x23cc82(_0x3c90d7);}else{return _0x4ee33d(_0x2bfb3);}});});}exports[_0x8d13('0x8e')]=function(_0x245ad1,_0x7ce289,_0x2ccf84){return db[_0x8d13('0x27')][_0x8d13('0x78')]({'where':{'id':_0x245ad1[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](handleEntityNotFound(_0x7ce289))[_0x8d13('0x23')](function(_0x51ae21){if(_0x51ae21&&_0x51ae21[_0x8d13('0x8f')]){var _0x4f71e0=_0x51ae21[_0x8d13('0x8f')];var _0x176112=config[_0x8d13('0x90')]+_0x8d13('0x91')+_0x51ae21['id']+_0x8d13('0x92');if(fs[_0x8d13('0x49')](_0x176112)){return _0x176112;}return writeFile(_0x4f71e0,_0x176112)[_0x8d13('0x23')](function(){return _0x176112;});}else{throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))]('Transcript\x20not\x20available');}})[_0x8d13('0x23')](function(_0x196658){return _0x7ce289[_0x8d13('0x4e')](_0x196658);})[_0x8d13('0x3f')](handleError(_0x7ce289));};
\ No newline at end of file
index df12cbd..f8d26b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaae4=['voice_recordings','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceRecording.attributes','VoiceRecording'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xaae4,0x120));var _0x4aae=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xaae4[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x4aae('0x0'));var util=require(_0x4aae('0x1'));var logger=require(_0x4aae('0x2'))('api');var moment=require(_0x4aae('0x3'));var BPromise=require(_0x4aae('0x4'));var rp=require(_0x4aae('0x5'));var fs=require('fs');var path=require(_0x4aae('0x6'));var rimraf=require(_0x4aae('0x7'));var config=require(_0x4aae('0x8'));var attributes=require(_0x4aae('0x9'));module['exports']=function(_0xb5135a,_0x32b1fc){return _0xb5135a['define'](_0x4aae('0xa'),attributes,{'tableName':_0x4aae('0xb'),'paranoid':![],'indexes':[{'name':_0x4aae('0xc'),'fields':[_0x4aae('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a29=['VoiceRecording','voice_recordings','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./voiceRecording.attributes','exports','define'];(function(_0x3295c5,_0x33ca95){var _0x40a2c8=function(_0x36a203){while(--_0x36a203){_0x3295c5['push'](_0x3295c5['shift']());}};_0x40a2c8(++_0x33ca95);}(_0x3a29,0x199));var _0x93a2=function(_0x4242c6,_0x255889){_0x4242c6=_0x4242c6-0x0;var _0x17032e=_0x3a29[_0x4242c6];return _0x17032e;};'use strict';var _=require(_0x93a2('0x0'));var util=require(_0x93a2('0x1'));var logger=require(_0x93a2('0x2'))(_0x93a2('0x3'));var moment=require('moment');var BPromise=require(_0x93a2('0x4'));var rp=require(_0x93a2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x93a2('0x6'));var config=require(_0x93a2('0x7'));var attributes=require(_0x93a2('0x8'));module[_0x93a2('0x9')]=function(_0x319cf0,_0xa73dd5){return _0x319cf0[_0x93a2('0xa')](_0x93a2('0xb'),attributes,{'tableName':_0x93a2('0xc'),'paranoid':![],'indexes':[{'name':_0x93a2('0xd'),'fields':[_0x93a2('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 16e3e39..b49d982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['encryptFile','secrets','recording','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateVoiceRecording','update','options','raw','where','limit','debug','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','value','format','%s.cypher'];(function(_0x3a587a,_0xe30987){var _0x3222de=function(_0x440322){while(--_0x440322){_0x3a587a['push'](_0x3a587a['shift']());}};_0x3222de(++_0xe30987);}(_0xadb5,0xad));var _0x5adb=function(_0x308151,_0x1e5f98){_0x308151=_0x308151-0x0;var _0x3f175c=_0xadb5[_0x308151];return _0x3f175c;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('VoiceRecording,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['VoiceRecording'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529b65[_0x5adb('0x17')]?_0x529b65[_0x5adb('0x17')][_0x5adb('0x19')]||null:null,'attributes':_0x529b65['options']?_0x529b65[_0x5adb('0x17')]['attributes']||null:null,'limit':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x1a')]||null:null})[_0x5adb('0xb')](function(_0x1a8014){logger[_0x5adb('0xc')](_0x5adb('0x15'),_0x529b65);logger[_0x5adb('0x1b')]('UpdateVoiceRecording',_0x529b65,JSON[_0x5adb('0xf')](_0x1a8014));_0x5de028(_0x1a8014);})[_0x5adb('0x14')](function(_0x3220cd){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x3220cd['message'],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x3220cd[_0x5adb('0x12')]));});});};exports['CreateVoiceRecording']=function(_0x1feecf){var _0x1ded9f=this;return new Promise(function(_0x1a0acd,_0x55b40a){var _0x13ad1d=require(_0x5adb('0x1c'));var _0x3a4fca;return db[_0x5adb('0x1d')][_0x5adb('0x1e')]({'attributes':['id',_0x5adb('0x1f')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x49992e){_0x3a4fca=_0x49992e;return db['VoiceRecording'][_0x5adb('0x20')](_0x1feecf[_0x5adb('0x21')]);})[_0x5adb('0xb')](function(_0x512bab){if(_0x3a4fca[_0x5adb('0x1f')]&&fs['existsSync'](_0x512bab[_0x5adb('0x22')])){var _0x34b793=util[_0x5adb('0x23')](_0x5adb('0x24'),_0x512bab[_0x5adb('0x22')]);return _0x13ad1d[_0x5adb('0x25')](_0x512bab[_0x5adb('0x22')],_0x34b793,config[_0x5adb('0x26')][_0x5adb('0x27')])[_0x5adb('0xb')](function(){fs['unlink'](_0x512bab[_0x5adb('0x22')]);logger['info'](_0x5adb('0x28'));return _0x512bab;});}return _0x512bab;})[_0x5adb('0xb')](function(_0x5d1441){logger[_0x5adb('0xc')](_0x5adb('0x29'),_0x1feecf);logger[_0x5adb('0x1b')]('CreateVoiceRecording',_0x1feecf,JSON[_0x5adb('0xf')](_0x5d1441));_0x1a0acd(_0x5d1441);})[_0x5adb('0x14')](function(_0x4b5887){logger['error'](_0x5adb('0x29'),_0x4b5887['message'],_0x1feecf);_0x55b40a(_0x1ded9f[_0x5adb('0x10')](0x1f4,_0x4b5887[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0xfcbb=['VoiceRecording,\x20%s,\x20%s','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','options','attributes','limit','CreateVoiceRecording','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','format','%s.cypher','encryptFile','recording','unlink','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x461467,_0x81d0dd){var _0x5c47da=function(_0x5a10a8){while(--_0x5a10a8){_0x461467['push'](_0x461467['shift']());}};_0x5c47da(++_0x81d0dd);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x5072a2,_0x4cee35){_0x5072a2=_0x5072a2-0x0;var _0x240318=_0xfcbb[_0x5072a2];return _0x240318;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var moment=require(_0xbfcb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbfcb('0x3'));var db=require(_0xbfcb('0x4'))['db'];var utils=require(_0xbfcb('0x5'));var logger=require(_0xbfcb('0x6'))(_0xbfcb('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbfcb('0x8')][_0xbfcb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8d4e6a,_0x2df839,_0x288ee5){return new BPromise(function(_0x2f875c,_0x49717b){return client['request'](_0x8d4e6a,_0x288ee5)[_0xbfcb('0xa')](function(_0x331173){logger[_0xbfcb('0xb')]('VoiceRecording,\x20%s,\x20%s',_0x2df839,_0xbfcb('0xc'));logger[_0xbfcb('0xd')](_0xbfcb('0xe'),_0x2df839,_0xbfcb('0xc'),JSON[_0xbfcb('0xf')](_0x331173));if(_0x331173[_0xbfcb('0x10')]){if(_0x331173['error'][_0xbfcb('0x11')]===0x1f4){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')]['message']);return _0x49717b(_0x331173[_0xbfcb('0x10')]['message']);}logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);return _0x2f875c(_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);}else{logger[_0xbfcb('0xb')](_0xbfcb('0x12'),_0x2df839,_0xbfcb('0xc'));_0x2f875c(_0x331173[_0xbfcb('0x14')][_0xbfcb('0x13')]);}})[_0xbfcb('0x15')](function(_0x26f335){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x26f335);_0x49717b(_0x26f335);});});}exports[_0xbfcb('0x16')]=function(_0xba1d6){var _0x38689e=this;return new Promise(function(_0x3404aa,_0x46b8d2){return db[_0xbfcb('0x17')][_0xbfcb('0x18')](_0xba1d6['body'],{'raw':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')]['where']||null:null,'attributes':_0xba1d6['options']?_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1a')]||null:null,'limit':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1b')]||null:null})['then'](function(_0x365d6c){logger[_0xbfcb('0xb')](_0xbfcb('0x16'),_0xba1d6);logger[_0xbfcb('0xd')](_0xbfcb('0x16'),_0xba1d6,JSON[_0xbfcb('0xf')](_0x365d6c));_0x3404aa(_0x365d6c);})[_0xbfcb('0x15')](function(_0x14e43c){logger[_0xbfcb('0x10')](_0xbfcb('0x16'),_0x14e43c[_0xbfcb('0x13')],_0xba1d6);_0x46b8d2(_0x38689e[_0xbfcb('0x10')](0x1f4,_0x14e43c[_0xbfcb('0x13')]));});});};exports[_0xbfcb('0x1c')]=function(_0x3e954d){var _0x2a1272=this;return new Promise(function(_0x5cd703,_0x3465f5){var _0x2881f8=require('../../components/encryptor');var _0x64a69;return db[_0xbfcb('0x1d')][_0xbfcb('0x1e')]({'attributes':['id',_0xbfcb('0x1f')],'where':{'id':0x1},'raw':!![]})[_0xbfcb('0xa')](function(_0x3542e9){_0x64a69=_0x3542e9;return db[_0xbfcb('0x17')][_0xbfcb('0x20')](_0x3e954d[_0xbfcb('0x21')]);})[_0xbfcb('0xa')](function(_0x59719b){if(_0x64a69[_0xbfcb('0x1f')]&&fs[_0xbfcb('0x22')](_0x59719b[_0xbfcb('0x23')])){var _0x43de3c=util[_0xbfcb('0x24')](_0xbfcb('0x25'),_0x59719b[_0xbfcb('0x23')]);return _0x2881f8[_0xbfcb('0x26')](_0x59719b[_0xbfcb('0x23')],_0x43de3c,config['secrets'][_0xbfcb('0x27')])[_0xbfcb('0xa')](function(){fs[_0xbfcb('0x28')](_0x59719b[_0xbfcb('0x23')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x59719b;});}return _0x59719b;})[_0xbfcb('0xa')](function(_0x35925b){logger[_0xbfcb('0xb')](_0xbfcb('0x1c'),_0x3e954d);logger[_0xbfcb('0xd')](_0xbfcb('0x1c'),_0x3e954d,JSON[_0xbfcb('0xf')](_0x35925b));_0x5cd703(_0x35925b);})['catch'](function(_0x504d81){logger['error'](_0xbfcb('0x1c'),_0x504d81['message'],_0x3e954d);_0x3465f5(_0x2a1272[_0xbfcb('0x10')](0x1f4,_0x504d81[_0xbfcb('0x13')]));});});};
\ No newline at end of file
index ee91577..44d133a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e71=['describe','create','put','/:id','update','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x529f79,_0x5b4c85){var _0x21e1d5=function(_0x31226f){while(--_0x31226f){_0x529f79['push'](_0x529f79['shift']());}};_0x21e1d5(++_0x5b4c85);}(_0x8e71,0x16c));var _0x18e7=function(_0x4ab866,_0x40e607){_0x4ab866=_0x4ab866-0x0;var _0x56047a=_0x8e71[_0x4ab866];return _0x56047a;};'use strict';var multer=require(_0x18e7('0x0'));var util=require(_0x18e7('0x1'));var path=require('path');var timeout=require(_0x18e7('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x18e7('0x3'));var auth=require(_0x18e7('0x4'));var interaction=require(_0x18e7('0x5'));var config=require('../../config/environment');var controller=require('./voiceTransferReport.controller');router[_0x18e7('0x6')]('/',auth[_0x18e7('0x7')](),controller[_0x18e7('0x8')]);router[_0x18e7('0x6')](_0x18e7('0x9'),auth[_0x18e7('0x7')](),controller[_0x18e7('0xa')]);router[_0x18e7('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x18e7('0xb')]);router[_0x18e7('0xc')](_0x18e7('0xd'),auth[_0x18e7('0x7')](),controller[_0x18e7('0xe')]);router[_0x18e7('0xf')](_0x18e7('0xd'),auth[_0x18e7('0x7')](),controller['destroy']);module[_0x18e7('0x10')]=router;
\ No newline at end of file
+var _0xb862=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','index','isAuthenticated','describe','/:id','show','post','put','delete','destroy','exports','multer'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xb862,0x97));var _0x2b86=function(_0x392f65,_0x43f0e1){_0x392f65=_0x392f65-0x0;var _0x47b36e=_0xb862[_0x392f65];return _0x47b36e;};'use strict';var multer=require(_0x2b86('0x0'));var util=require(_0x2b86('0x1'));var path=require(_0x2b86('0x2'));var timeout=require('connect-timeout');var express=require(_0x2b86('0x3'));var router=express['Router']();var fs_extra=require(_0x2b86('0x4'));var auth=require(_0x2b86('0x5'));var interaction=require(_0x2b86('0x6'));var config=require('../../config/environment');var controller=require(_0x2b86('0x7'));router[_0x2b86('0x8')]('/',auth['isAuthenticated'](),controller[_0x2b86('0x9')]);router[_0x2b86('0x8')]('/describe',auth[_0x2b86('0xa')](),controller[_0x2b86('0xb')]);router[_0x2b86('0x8')](_0x2b86('0xc'),auth['isAuthenticated'](),controller[_0x2b86('0xd')]);router[_0x2b86('0xe')]('/',auth[_0x2b86('0xa')](),controller['create']);router[_0x2b86('0xf')](_0x2b86('0xc'),auth[_0x2b86('0xa')](),controller['update']);router[_0x2b86('0x10')]('/:id',auth[_0x2b86('0xa')](),controller[_0x2b86('0x11')]);module[_0x2b86('0x12')]=router;
\ No newline at end of file
index ee470e2..125b3c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x148d=['STRING','ENUM','Yes','sequelize','moment','exports','blind'];(function(_0x28509b,_0x5831ff){var _0x1e0b6=function(_0x37d8a2){while(--_0x37d8a2){_0x28509b['push'](_0x28509b['shift']());}};_0x1e0b6(++_0x5831ff);}(_0x148d,0x81));var _0xd148=function(_0x5ee984,_0x4b8fcb){_0x5ee984=_0x5ee984-0x0;var _0x35fc1d=_0x148d[_0x5ee984];return _0x35fc1d;};'use strict';var Sequelize=require(_0xd148('0x0'));var moment=require(_0xd148('0x1'));module[_0xd148('0x2')]={'type':{'type':Sequelize['ENUM'](_0xd148('0x3'),'attended')},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0xd148('0x4')]},'transferercalleridnum':{'type':Sequelize[_0xd148('0x4')]},'transferercalleridname':{'type':Sequelize[_0xd148('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0xd148('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0xd148('0x4')]},'transfereraccountcode':{'type':Sequelize[_0xd148('0x4')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0xd148('0x4')]},'transfererlinkedid':{'type':Sequelize[_0xd148('0x4')]},'transfereechannel':{'type':Sequelize[_0xd148('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0xd148('0x4')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0xd148('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0xd148('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0xd148('0x4')]},'transfereecontext':{'type':Sequelize[_0xd148('0x4')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0xd148('0x5')](_0xd148('0x6'),'No')},'context':{'type':Sequelize[_0xd148('0x4')]},'extension':{'type':Sequelize[_0xd148('0x4')]}};
\ No newline at end of file
+var _0x2915=['STRING','sequelize','moment','exports','ENUM','blind'];(function(_0x1a7550,_0x1edace){var _0x426e22=function(_0x1c10a1){while(--_0x1c10a1){_0x1a7550['push'](_0x1a7550['shift']());}};_0x426e22(++_0x1edace);}(_0x2915,0x145));var _0x5291=function(_0x25e214,_0x42a13e){_0x25e214=_0x25e214-0x0;var _0x48ca06=_0x2915[_0x25e214];return _0x48ca06;};'use strict';var Sequelize=require(_0x5291('0x0'));var moment=require(_0x5291('0x1'));module[_0x5291('0x2')]={'type':{'type':Sequelize[_0x5291('0x3')](_0x5291('0x4'),'attended')},'result':{'type':Sequelize[_0x5291('0x5')]},'transfererchannel':{'type':Sequelize[_0x5291('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x5291('0x5')]},'transferercalleridname':{'type':Sequelize[_0x5291('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0x5291('0x5')]},'transferercontext':{'type':Sequelize[_0x5291('0x5')]},'transfererexten':{'type':Sequelize[_0x5291('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x5291('0x5')]},'transfereechannel':{'type':Sequelize[_0x5291('0x5')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x5291('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x5291('0x5')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x5291('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x5291('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x5291('0x5')]},'isexternal':{'type':Sequelize['ENUM']('Yes','No')},'context':{'type':Sequelize[_0x5291('0x5')]},'extension':{'type':Sequelize[_0x5291('0x5')]}};
\ No newline at end of file
index 6f3970f..a7fcb62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb83a=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','update','then','name','send','index','map','VoiceTransferReport','rawAttributes','model','query','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','filter','type','merge','includeAll','include','findAll','rows','params','keys','length','create','body','catch','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x28578d,_0xcf5cf0){var _0x524826=function(_0x4a51b7){while(--_0x4a51b7){_0x28578d['push'](_0x28578d['shift']());}};_0x524826(++_0xcf5cf0);}(_0xb83a,0x184));var _0xab83=function(_0x3ee348,_0x1dc943){_0x3ee348=_0x3ee348-0x0;var _0x2e72be=_0xb83a[_0x3ee348];return _0x2e72be;};'use strict';var emlformat=require(_0xab83('0x0'));var rimraf=require(_0xab83('0x1'));var zipdir=require(_0xab83('0x2'));var jsonpatch=require(_0xab83('0x3'));var rp=require(_0xab83('0x4'));var moment=require('moment');var BPromise=require(_0xab83('0x5'));var Mustache=require(_0xab83('0x6'));var util=require(_0xab83('0x7'));var path=require(_0xab83('0x8'));var sox=require(_0xab83('0x9'));var csv=require(_0xab83('0xa'));var ejs=require(_0xab83('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xab83('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xab83('0xd'));var toCsv=require(_0xab83('0xa'));var querystring=require(_0xab83('0xe'));var Papa=require('papaparse');var Redis=require(_0xab83('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xab83('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xab83('0x11'));var logger=require(_0xab83('0x12'))(_0xab83('0x13'));var utils=require(_0xab83('0x14'));var config=require(_0xab83('0x15'));var licenseUtil=require(_0xab83('0x16'));var db=require(_0xab83('0x17'))['db'];function respondWithStatusCode(_0x373c64,_0x24bdef){_0x24bdef=_0x24bdef||0xcc;return function(_0x21776b){if(_0x21776b){return _0x373c64[_0xab83('0x18')](_0x24bdef);}return _0x373c64[_0xab83('0x19')](_0x24bdef)[_0xab83('0x1a')]();};}function respondWithResult(_0x11ec85,_0x428c4a){_0x428c4a=_0x428c4a||0xc8;return function(_0x227c77){if(_0x227c77){return _0x11ec85[_0xab83('0x19')](_0x428c4a)[_0xab83('0x1b')](_0x227c77);}};}function respondWithFilteredResult(_0x1f4198,_0x36c1e5){return function(_0x5c55ef){if(_0x5c55ef){var _0x11ccd0=typeof _0x36c1e5['offset']===_0xab83('0x1c')&&typeof _0x36c1e5[_0xab83('0x1d')]===_0xab83('0x1c');var _0x3f6366=_0x5c55ef['count'];var _0x369317=_0x11ccd0?0x0:_0x36c1e5[_0xab83('0x1e')];var _0x566fd3=_0x11ccd0?_0x5c55ef[_0xab83('0x1f')]:_0x36c1e5[_0xab83('0x1e')]+_0x36c1e5[_0xab83('0x1d')];var _0x40d3f0;if(_0x566fd3>=_0x3f6366){_0x566fd3=_0x3f6366;_0x40d3f0=0xc8;}else{_0x40d3f0=0xce;}_0x1f4198[_0xab83('0x19')](_0x40d3f0);return _0x1f4198[_0xab83('0x20')](_0xab83('0x21'),_0x369317+'-'+_0x566fd3+'/'+_0x3f6366)['json'](_0x5c55ef);}return null;};}function patchUpdates(_0x6b8465){return function(_0x2cd86a){try{jsonpatch[_0xab83('0x22')](_0x2cd86a,_0x6b8465,!![]);}catch(_0x2b862b){return BPromise['reject'](_0x2b862b);}return _0x2cd86a['save']();};}function saveUpdates(_0x25d2c1,_0x22302d){return function(_0x2f17c9){if(_0x2f17c9){return _0x2f17c9[_0xab83('0x23')](_0x25d2c1)[_0xab83('0x24')](function(_0x129ac8){return _0x129ac8;});}return null;};}function removeEntity(_0x57d4ca,_0x5dd6ad){return function(_0x149f39){if(_0x149f39){return _0x149f39['destroy']()[_0xab83('0x24')](function(){_0x57d4ca[_0xab83('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2338b8,_0x1c7f50){return function(_0x30a608){if(!_0x30a608){_0x2338b8['sendStatus'](0x194);}return _0x30a608;};}function handleError(_0x1bdd1f,_0x26fa39){_0x26fa39=_0x26fa39||0x1f4;return function(_0x541c69){logger['error'](_0x541c69['stack']);if(_0x541c69[_0xab83('0x25')]){delete _0x541c69[_0xab83('0x25')];}_0x1bdd1f[_0xab83('0x19')](_0x26fa39)[_0xab83('0x26')](_0x541c69);};}exports[_0xab83('0x27')]=function(_0x573acf,_0x4f042d){var _0x5507c7={},_0x774c85={},_0x4889f1={'count':0x0,'rows':[]};var _0x123176=_[_0xab83('0x28')](db[_0xab83('0x29')][_0xab83('0x2a')],function(_0x46614b){return{'name':_0x46614b['fieldName'],'type':_0x46614b['type']['key']};});_0x774c85[_0xab83('0x2b')]=_[_0xab83('0x28')](_0x123176,_0xab83('0x25'));_0x774c85[_0xab83('0x2c')]=_['keys'](_0x573acf[_0xab83('0x2c')]);_0x774c85[_0xab83('0x2d')]=_[_0xab83('0x2e')](_0x774c85[_0xab83('0x2b')],_0x774c85[_0xab83('0x2c')]);_0x5507c7['attributes']=_[_0xab83('0x2e')](_0x774c85[_0xab83('0x2b')],qs[_0xab83('0x2f')](_0x573acf[_0xab83('0x2c')][_0xab83('0x2f')]));_0x5507c7[_0xab83('0x30')]=_0x5507c7[_0xab83('0x30')]['length']?_0x5507c7['attributes']:_0x774c85[_0xab83('0x2b')];if(!_0x573acf[_0xab83('0x2c')][_0xab83('0x31')]('nolimit')){_0x5507c7[_0xab83('0x1d')]=qs[_0xab83('0x1d')](_0x573acf[_0xab83('0x2c')][_0xab83('0x1d')]);_0x5507c7[_0xab83('0x1e')]=qs[_0xab83('0x1e')](_0x573acf[_0xab83('0x2c')]['offset']);}_0x5507c7['order']=qs['sort'](_0x573acf[_0xab83('0x2c')][_0xab83('0x32')]);_0x5507c7[_0xab83('0x33')]=qs['filters'](_[_0xab83('0x34')](_0x573acf[_0xab83('0x2c')],_0x774c85[_0xab83('0x2d')]),_0x123176);if(_0x573acf[_0xab83('0x2c')][_0xab83('0x35')]){_0x5507c7['where']=_['merge'](_0x5507c7[_0xab83('0x33')],{'$or':_[_0xab83('0x28')](_0x123176,function(_0xc0efb8){if(_0xc0efb8[_0xab83('0x36')]!=='VIRTUAL'){var _0x53ecb5={};_0x53ecb5[_0xc0efb8[_0xab83('0x25')]]={'$like':'%'+_0x573acf[_0xab83('0x2c')][_0xab83('0x35')]+'%'};return _0x53ecb5;}})});}_0x5507c7=_[_0xab83('0x37')]({},_0x5507c7,_0x573acf['options']);var _0x4fbfb3={'where':_0x5507c7[_0xab83('0x33')]};return db[_0xab83('0x29')][_0xab83('0x1f')](_0x4fbfb3)[_0xab83('0x24')](function(_0x36cb56){_0x4889f1['count']=_0x36cb56;if(_0x573acf[_0xab83('0x2c')][_0xab83('0x38')]){_0x5507c7[_0xab83('0x39')]=[{'all':!![]}];}return db[_0xab83('0x29')][_0xab83('0x3a')](_0x5507c7);})[_0xab83('0x24')](function(_0x29e2bd){_0x4889f1[_0xab83('0x3b')]=_0x29e2bd;return _0x4889f1;})['then'](respondWithFilteredResult(_0x4f042d,_0x5507c7))['catch'](handleError(_0x4f042d,null));};exports['show']=function(_0x25928a,_0x1c3a6a){var _0x3f4de4={'raw':!![],'where':{'id':_0x25928a[_0xab83('0x3c')]['id']}},_0x410cb6={};_0x410cb6[_0xab83('0x2b')]=_[_0xab83('0x3d')](db['VoiceTransferReport'][_0xab83('0x2a')]);_0x410cb6[_0xab83('0x2c')]=_[_0xab83('0x3d')](_0x25928a['query']);_0x410cb6[_0xab83('0x2d')]=_[_0xab83('0x2e')](_0x410cb6[_0xab83('0x2b')],_0x410cb6[_0xab83('0x2c')]);_0x3f4de4['attributes']=_[_0xab83('0x2e')](_0x410cb6['model'],qs[_0xab83('0x2f')](_0x25928a[_0xab83('0x2c')][_0xab83('0x2f')]));_0x3f4de4[_0xab83('0x30')]=_0x3f4de4['attributes'][_0xab83('0x3e')]?_0x3f4de4['attributes']:_0x410cb6[_0xab83('0x2b')];if(_0x25928a['query']['includeAll']){_0x3f4de4[_0xab83('0x39')]=[{'all':!![]}];}_0x3f4de4=_['merge']({},_0x3f4de4,_0x25928a['options']);return db['VoiceTransferReport']['find'](_0x3f4de4)['then'](handleEntityNotFound(_0x1c3a6a,null))[_0xab83('0x24')](respondWithResult(_0x1c3a6a,null))['catch'](handleError(_0x1c3a6a,null));};exports[_0xab83('0x3f')]=function(_0x6cb3c2,_0x5e8427){return db[_0xab83('0x29')]['create'](_0x6cb3c2[_0xab83('0x40')],{})['then'](respondWithResult(_0x5e8427,0xc9))[_0xab83('0x41')](handleError(_0x5e8427,null));};exports['update']=function(_0x7bb088,_0x1ee308){if(_0x7bb088['body']['id']){delete _0x7bb088['body']['id'];}return db[_0xab83('0x29')][_0xab83('0x42')]({'where':{'id':_0x7bb088['params']['id']}})['then'](handleEntityNotFound(_0x1ee308,null))[_0xab83('0x24')](saveUpdates(_0x7bb088[_0xab83('0x40')],null))[_0xab83('0x24')](respondWithResult(_0x1ee308,null))[_0xab83('0x41')](handleError(_0x1ee308,null));};exports['destroy']=function(_0x2feadb,_0x4f9d92){return db[_0xab83('0x29')][_0xab83('0x42')]({'where':{'id':_0x2feadb[_0xab83('0x3c')]['id']}})[_0xab83('0x24')](handleEntityNotFound(_0x4f9d92,null))[_0xab83('0x24')](removeEntity(_0x4f9d92,null))[_0xab83('0x41')](handleError(_0x4f9d92,null));};exports[_0xab83('0x43')]=function(_0xb89229,_0x560336){return db[_0xab83('0x29')]['describe']()[_0xab83('0x24')](respondWithResult(_0x560336,null))[_0xab83('0x41')](handleError(_0x560336,null));};
\ No newline at end of file
+var _0xd424=['index','map','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','type','options','VoiceTransferReport','includeAll','include','findAll','catch','show','params','rawAttributes','length','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','destroy','error','stack','name','send'];(function(_0x1598c1,_0x71e50b){var _0x17e123=function(_0x354361){while(--_0x354361){_0x1598c1['push'](_0x1598c1['shift']());}};_0x17e123(++_0x71e50b);}(_0xd424,0x105));var _0x4d42=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xd424[_0x580576];return _0x3f55a0;};'use strict';var emlformat=require(_0x4d42('0x0'));var rimraf=require(_0x4d42('0x1'));var zipdir=require(_0x4d42('0x2'));var jsonpatch=require(_0x4d42('0x3'));var rp=require(_0x4d42('0x4'));var moment=require(_0x4d42('0x5'));var BPromise=require(_0x4d42('0x6'));var Mustache=require(_0x4d42('0x7'));var util=require('util');var path=require(_0x4d42('0x8'));var sox=require(_0x4d42('0x9'));var csv=require(_0x4d42('0xa'));var ejs=require(_0x4d42('0xb'));var fs=require('fs');var fs_extra=require(_0x4d42('0xc'));var _=require('lodash');var squel=require(_0x4d42('0xd'));var crypto=require(_0x4d42('0xe'));var jsforce=require(_0x4d42('0xf'));var deskjs=require(_0x4d42('0x10'));var toCsv=require(_0x4d42('0xa'));var querystring=require(_0x4d42('0x11'));var Papa=require(_0x4d42('0x12'));var Redis=require(_0x4d42('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d42('0x14'));var logger=require(_0x4d42('0x15'))(_0x4d42('0x16'));var utils=require(_0x4d42('0x17'));var config=require(_0x4d42('0x18'));var licenseUtil=require(_0x4d42('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a18a9,_0x303ca2){_0x303ca2=_0x303ca2||0xcc;return function(_0x50235b){if(_0x50235b){return _0x2a18a9[_0x4d42('0x1a')](_0x303ca2);}return _0x2a18a9[_0x4d42('0x1b')](_0x303ca2)[_0x4d42('0x1c')]();};}function respondWithResult(_0x584873,_0x10b608){_0x10b608=_0x10b608||0xc8;return function(_0xc29236){if(_0xc29236){return _0x584873[_0x4d42('0x1b')](_0x10b608)[_0x4d42('0x1d')](_0xc29236);}};}function respondWithFilteredResult(_0x4d5e0f,_0x1f2ad1){return function(_0xf6e799){if(_0xf6e799){var _0x268a8c=typeof _0x1f2ad1[_0x4d42('0x1e')]===_0x4d42('0x1f')&&typeof _0x1f2ad1[_0x4d42('0x20')]===_0x4d42('0x1f');var _0x5a9b43=_0xf6e799[_0x4d42('0x21')];var _0x28d236=_0x268a8c?0x0:_0x1f2ad1['offset'];var _0x550482=_0x268a8c?_0xf6e799[_0x4d42('0x21')]:_0x1f2ad1[_0x4d42('0x1e')]+_0x1f2ad1[_0x4d42('0x20')];var _0x1c4641;if(_0x550482>=_0x5a9b43){_0x550482=_0x5a9b43;_0x1c4641=0xc8;}else{_0x1c4641=0xce;}_0x4d5e0f[_0x4d42('0x1b')](_0x1c4641);return _0x4d5e0f[_0x4d42('0x22')](_0x4d42('0x23'),_0x28d236+'-'+_0x550482+'/'+_0x5a9b43)[_0x4d42('0x1d')](_0xf6e799);}return null;};}function patchUpdates(_0x2776b9){return function(_0x249029){try{jsonpatch['apply'](_0x249029,_0x2776b9,!![]);}catch(_0x562de3){return BPromise['reject'](_0x562de3);}return _0x249029[_0x4d42('0x24')]();};}function saveUpdates(_0x5bebbd,_0x150eab){return function(_0xa66652){if(_0xa66652){return _0xa66652['update'](_0x5bebbd)[_0x4d42('0x25')](function(_0x3d9210){return _0x3d9210;});}return null;};}function removeEntity(_0x12f185,_0x171a46){return function(_0x11850d){if(_0x11850d){return _0x11850d[_0x4d42('0x26')]()['then'](function(){_0x12f185[_0x4d42('0x1b')](0xcc)[_0x4d42('0x1c')]();});}};}function handleEntityNotFound(_0x19b408,_0xdde436){return function(_0x1da7ef){if(!_0x1da7ef){_0x19b408[_0x4d42('0x1a')](0x194);}return _0x1da7ef;};}function handleError(_0x1aa1b5,_0x1fb647){_0x1fb647=_0x1fb647||0x1f4;return function(_0x10e2dc){logger[_0x4d42('0x27')](_0x10e2dc[_0x4d42('0x28')]);if(_0x10e2dc['name']){delete _0x10e2dc[_0x4d42('0x29')];}_0x1aa1b5[_0x4d42('0x1b')](_0x1fb647)[_0x4d42('0x2a')](_0x10e2dc);};}exports[_0x4d42('0x2b')]=function(_0x4f2e5c,_0x344864){var _0x16fa13={},_0x1e67b3={},_0x4d93cf={'count':0x0,'rows':[]};var _0x301631=_[_0x4d42('0x2c')](db['VoiceTransferReport']['rawAttributes'],function(_0x3a618a){return{'name':_0x3a618a['fieldName'],'type':_0x3a618a['type'][_0x4d42('0x2d')]};});_0x1e67b3[_0x4d42('0x2e')]=_[_0x4d42('0x2c')](_0x301631,_0x4d42('0x29'));_0x1e67b3[_0x4d42('0x2f')]=_[_0x4d42('0x30')](_0x4f2e5c['query']);_0x1e67b3[_0x4d42('0x31')]=_[_0x4d42('0x32')](_0x1e67b3['model'],_0x1e67b3[_0x4d42('0x2f')]);_0x16fa13[_0x4d42('0x33')]=_[_0x4d42('0x32')](_0x1e67b3[_0x4d42('0x2e')],qs[_0x4d42('0x34')](_0x4f2e5c[_0x4d42('0x2f')]['fields']));_0x16fa13['attributes']=_0x16fa13[_0x4d42('0x33')]['length']?_0x16fa13[_0x4d42('0x33')]:_0x1e67b3[_0x4d42('0x2e')];if(!_0x4f2e5c[_0x4d42('0x2f')][_0x4d42('0x35')](_0x4d42('0x36'))){_0x16fa13[_0x4d42('0x20')]=qs[_0x4d42('0x20')](_0x4f2e5c[_0x4d42('0x2f')]['limit']);_0x16fa13['offset']=qs[_0x4d42('0x1e')](_0x4f2e5c[_0x4d42('0x2f')][_0x4d42('0x1e')]);}_0x16fa13[_0x4d42('0x37')]=qs['sort'](_0x4f2e5c[_0x4d42('0x2f')][_0x4d42('0x38')]);_0x16fa13['where']=qs[_0x4d42('0x31')](_[_0x4d42('0x39')](_0x4f2e5c['query'],_0x1e67b3[_0x4d42('0x31')]),_0x301631);if(_0x4f2e5c[_0x4d42('0x2f')]['filter']){_0x16fa13[_0x4d42('0x3a')]=_[_0x4d42('0x3b')](_0x16fa13['where'],{'$or':_[_0x4d42('0x2c')](_0x301631,function(_0x17012f){if(_0x17012f[_0x4d42('0x3c')]!=='VIRTUAL'){var _0x4460a3={};_0x4460a3[_0x17012f[_0x4d42('0x29')]]={'$like':'%'+_0x4f2e5c['query']['filter']+'%'};return _0x4460a3;}})});}_0x16fa13=_[_0x4d42('0x3b')]({},_0x16fa13,_0x4f2e5c[_0x4d42('0x3d')]);var _0x32dfdc={'where':_0x16fa13['where']};return db[_0x4d42('0x3e')][_0x4d42('0x21')](_0x32dfdc)[_0x4d42('0x25')](function(_0x5eb463){_0x4d93cf[_0x4d42('0x21')]=_0x5eb463;if(_0x4f2e5c['query'][_0x4d42('0x3f')]){_0x16fa13[_0x4d42('0x40')]=[{'all':!![]}];}return db[_0x4d42('0x3e')][_0x4d42('0x41')](_0x16fa13);})['then'](function(_0x1ba24a){_0x4d93cf['rows']=_0x1ba24a;return _0x4d93cf;})[_0x4d42('0x25')](respondWithFilteredResult(_0x344864,_0x16fa13))[_0x4d42('0x42')](handleError(_0x344864,null));};exports[_0x4d42('0x43')]=function(_0x61506d,_0x45bcad){var _0x3e2839={'raw':!![],'where':{'id':_0x61506d[_0x4d42('0x44')]['id']}},_0xae8d55={};_0xae8d55[_0x4d42('0x2e')]=_[_0x4d42('0x30')](db[_0x4d42('0x3e')][_0x4d42('0x45')]);_0xae8d55[_0x4d42('0x2f')]=_[_0x4d42('0x30')](_0x61506d['query']);_0xae8d55[_0x4d42('0x31')]=_['intersection'](_0xae8d55[_0x4d42('0x2e')],_0xae8d55['query']);_0x3e2839[_0x4d42('0x33')]=_['intersection'](_0xae8d55['model'],qs[_0x4d42('0x34')](_0x61506d[_0x4d42('0x2f')][_0x4d42('0x34')]));_0x3e2839[_0x4d42('0x33')]=_0x3e2839['attributes'][_0x4d42('0x46')]?_0x3e2839['attributes']:_0xae8d55[_0x4d42('0x2e')];if(_0x61506d['query'][_0x4d42('0x3f')]){_0x3e2839['include']=[{'all':!![]}];}_0x3e2839=_[_0x4d42('0x3b')]({},_0x3e2839,_0x61506d[_0x4d42('0x3d')]);return db['VoiceTransferReport'][_0x4d42('0x47')](_0x3e2839)[_0x4d42('0x25')](handleEntityNotFound(_0x45bcad,null))[_0x4d42('0x25')](respondWithResult(_0x45bcad,null))[_0x4d42('0x42')](handleError(_0x45bcad,null));};exports[_0x4d42('0x48')]=function(_0x4c87b6,_0x1e1de0){return db[_0x4d42('0x3e')][_0x4d42('0x48')](_0x4c87b6[_0x4d42('0x49')],{})[_0x4d42('0x25')](respondWithResult(_0x1e1de0,0xc9))[_0x4d42('0x42')](handleError(_0x1e1de0,null));};exports[_0x4d42('0x4a')]=function(_0x18a88f,_0x3a6dd2){if(_0x18a88f[_0x4d42('0x49')]['id']){delete _0x18a88f['body']['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x18a88f[_0x4d42('0x44')]['id']}})['then'](handleEntityNotFound(_0x3a6dd2,null))[_0x4d42('0x25')](saveUpdates(_0x18a88f[_0x4d42('0x49')],null))[_0x4d42('0x25')](respondWithResult(_0x3a6dd2,null))['catch'](handleError(_0x3a6dd2,null));};exports['destroy']=function(_0x167a0a,_0x1984e1){return db[_0x4d42('0x3e')][_0x4d42('0x47')]({'where':{'id':_0x167a0a[_0x4d42('0x44')]['id']}})[_0x4d42('0x25')](handleEntityNotFound(_0x1984e1,null))['then'](removeEntity(_0x1984e1,null))[_0x4d42('0x42')](handleError(_0x1984e1,null));};exports[_0x4d42('0x4b')]=function(_0x44bd13,_0x10d8f9){return db[_0x4d42('0x3e')]['describe']()['then'](respondWithResult(_0x10d8f9,null))['catch'](handleError(_0x10d8f9,null));};
\ No newline at end of file
index 6ebda40..84baf2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x431a=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer'];(function(_0x746f4d,_0xb3b407){var _0x2b1e31=function(_0x270f64){while(--_0x270f64){_0x746f4d['push'](_0x746f4d['shift']());}};_0x2b1e31(++_0xb3b407);}(_0x431a,0x174));var _0xa431=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x431a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa431('0x0'));var util=require(_0xa431('0x1'));var logger=require('../../config/logger')(_0xa431('0x2'));var moment=require(_0xa431('0x3'));var BPromise=require(_0xa431('0x4'));var rp=require(_0xa431('0x5'));var fs=require('fs');var path=require(_0xa431('0x6'));var rimraf=require('rimraf');var config=require(_0xa431('0x7'));var attributes=require(_0xa431('0x8'));module[_0xa431('0x9')]=function(_0x521b62,_0xb6f6c4){return _0x521b62['define'](_0xa431('0xa'),attributes,{'tableName':_0xa431('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f24=['util','../../config/logger','api','moment','request-promise','../../config/environment','./voiceTransferReport.attributes','define','VoiceTransferReport','lodash'];(function(_0x503e60,_0xb589a0){var _0x3dcdf9=function(_0x44cf7f){while(--_0x44cf7f){_0x503e60['push'](_0x503e60['shift']());}};_0x3dcdf9(++_0xb589a0);}(_0x0f24,0x185));var _0x40f2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0f24[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x40f2('0x0'));var util=require(_0x40f2('0x1'));var logger=require(_0x40f2('0x2'))(_0x40f2('0x3'));var moment=require(_0x40f2('0x4'));var BPromise=require('bluebird');var rp=require(_0x40f2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x40f2('0x6'));var attributes=require(_0x40f2('0x7'));module['exports']=function(_0x1f35fd,_0x57dd67){return _0x1f35fd[_0x40f2('0x8')](_0x40f2('0x9'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d67cb5a..76bb3a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d0=['debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','VoiceTransferReport,\x20%s,\x20%s','message','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','then','stringify','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','info'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0xc0d0,0x1db));var _0x0c0d=function(_0x122e9b,_0x391bf4){_0x122e9b=_0x122e9b-0x0;var _0x22c247=_0xc0d0[_0x122e9b];return _0x22c247;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0c0d('0x0'));var BPromise=require('bluebird');var rs=require(_0x0c0d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c0d('0x2'))['db'];var utils=require(_0x0c0d('0x3'));var logger=require(_0x0c0d('0x4'))(_0x0c0d('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0c0d('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x380b18,_0x24d563,_0x5897dd){return new BPromise(function(_0x29dd83,_0x22cb8e){return client['request'](_0x380b18,_0x5897dd)['then'](function(_0x2d4bcc){logger[_0x0c0d('0x7')]('VoiceTransferReport,\x20%s,\x20%s',_0x24d563,'request\x20sent');logger[_0x0c0d('0x8')](_0x0c0d('0x9'),_0x24d563,_0x0c0d('0xa'),JSON['stringify'](_0x2d4bcc));if(_0x2d4bcc['error']){if(_0x2d4bcc[_0x0c0d('0xb')][_0x0c0d('0xc')]===0x1f4){logger[_0x0c0d('0xb')](_0x0c0d('0xd'),_0x24d563,_0x2d4bcc[_0x0c0d('0xb')]['message']);return _0x22cb8e(_0x2d4bcc[_0x0c0d('0xb')][_0x0c0d('0xe')]);}logger[_0x0c0d('0xb')](_0x0c0d('0xd'),_0x24d563,_0x2d4bcc[_0x0c0d('0xb')][_0x0c0d('0xe')]);return _0x29dd83(_0x2d4bcc[_0x0c0d('0xb')][_0x0c0d('0xe')]);}else{logger[_0x0c0d('0x7')]('VoiceTransferReport,\x20%s,\x20%s',_0x24d563,'request\x20sent');_0x29dd83(_0x2d4bcc['result'][_0x0c0d('0xe')]);}})[_0x0c0d('0xf')](function(_0x1815b3){logger[_0x0c0d('0xb')](_0x0c0d('0xd'),_0x24d563,_0x1815b3);_0x22cb8e(_0x1815b3);});});}exports[_0x0c0d('0x10')]=function(_0x273759){var _0x2e470f=this;return new Promise(function(_0x33e66b,_0x1c920c){return db[_0x0c0d('0x11')][_0x0c0d('0x12')](_0x273759[_0x0c0d('0x13')],{'raw':_0x273759[_0x0c0d('0x14')]?_0x273759[_0x0c0d('0x14')]['raw']===undefined?!![]:![]:!![]})[_0x0c0d('0x15')](function(_0x259644){logger[_0x0c0d('0x7')]('CreateVoiceTransferReport',_0x273759);logger[_0x0c0d('0x8')](_0x0c0d('0x10'),_0x273759,JSON[_0x0c0d('0x16')](_0x259644));_0x33e66b(_0x259644);})[_0x0c0d('0xf')](function(_0x3622fe){logger['error'](_0x0c0d('0x10'),_0x3622fe[_0x0c0d('0xe')],_0x273759);_0x1c920c(_0x2e470f[_0x0c0d('0xb')](0x1f4,_0x3622fe[_0x0c0d('0xe')]));});});};
\ No newline at end of file
+var _0x8aee=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','VoiceTransferReport','create','body','options','raw','CreateVoiceTransferReport','stringify','catch'];(function(_0x254d9f,_0x54ddb5){var _0x1eedb9=function(_0x2d05f1){while(--_0x2d05f1){_0x254d9f['push'](_0x254d9f['shift']());}};_0x1eedb9(++_0x54ddb5);}(_0x8aee,0x10e));var _0xe8ae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8aee[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe8ae('0x0'));var util=require(_0xe8ae('0x1'));var moment=require('moment');var BPromise=require(_0xe8ae('0x2'));var rs=require(_0xe8ae('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe8ae('0x4'))['db'];var utils=require(_0xe8ae('0x5'));var logger=require(_0xe8ae('0x6'))(_0xe8ae('0x7'));var config=require(_0xe8ae('0x8'));var jayson=require(_0xe8ae('0x9'));var client=jayson[_0xe8ae('0xa')][_0xe8ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45b011,_0xfccbc7,_0x11d767){return new BPromise(function(_0x55659a,_0x4285f1){return client[_0xe8ae('0xc')](_0x45b011,_0x11d767)[_0xe8ae('0xd')](function(_0x5942e9){logger[_0xe8ae('0xe')](_0xe8ae('0xf'),_0xfccbc7,_0xe8ae('0x10'));logger[_0xe8ae('0x11')](_0xe8ae('0x12'),_0xfccbc7,_0xe8ae('0x10'),JSON['stringify'](_0x5942e9));if(_0x5942e9['error']){if(_0x5942e9[_0xe8ae('0x13')]['code']===0x1f4){logger[_0xe8ae('0x13')](_0xe8ae('0xf'),_0xfccbc7,_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);return _0x4285f1(_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);}logger[_0xe8ae('0x13')](_0xe8ae('0xf'),_0xfccbc7,_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);return _0x55659a(_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);}else{logger[_0xe8ae('0xe')](_0xe8ae('0xf'),_0xfccbc7,'request\x20sent');_0x55659a(_0x5942e9[_0xe8ae('0x15')]['message']);}})['catch'](function(_0x339b86){logger[_0xe8ae('0x13')](_0xe8ae('0xf'),_0xfccbc7,_0x339b86);_0x4285f1(_0x339b86);});});}exports['CreateVoiceTransferReport']=function(_0x291126){var _0x29b25c=this;return new Promise(function(_0x41c4be,_0x2dcc6d){return db[_0xe8ae('0x16')][_0xe8ae('0x17')](_0x291126[_0xe8ae('0x18')],{'raw':_0x291126['options']?_0x291126[_0xe8ae('0x19')][_0xe8ae('0x1a')]===undefined?!![]:![]:!![]})[_0xe8ae('0xd')](function(_0x198ac4){logger[_0xe8ae('0xe')](_0xe8ae('0x1b'),_0x291126);logger[_0xe8ae('0x11')](_0xe8ae('0x1b'),_0x291126,JSON[_0xe8ae('0x1c')](_0x198ac4));_0x41c4be(_0x198ac4);})[_0xe8ae('0x1d')](function(_0xbe321a){logger['error'](_0xe8ae('0x1b'),_0xbe321a[_0xe8ae('0x14')],_0x291126);_0x2dcc6d(_0x29b25c[_0xe8ae('0x13')](0x1f4,_0xbe321a[_0xe8ae('0x14')]));});});};
\ No newline at end of file
index fecc312..cd18689 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24b3=['/transfer','exports','express','Router','../../components/auth/service','post','/originate','isAuthenticated','canUpdate','originate','/hangup','/answer','/hold','hold','/unhold','unhold','/calls','calls'];(function(_0x382df0,_0x216777){var _0x94b5df=function(_0x145ca0){while(--_0x145ca0){_0x382df0['push'](_0x382df0['shift']());}};_0x94b5df(++_0x216777);}(_0x24b3,0x1b2));var _0x324b=function(_0x2faa72,_0x3ad645){_0x2faa72=_0x2faa72-0x0;var _0x524276=_0x24b3[_0x2faa72];return _0x524276;};'use strict';var express=require(_0x324b('0x0'));var router=express[_0x324b('0x1')]();var auth=require(_0x324b('0x2'));var controller=require('./webbar.controller');router[_0x324b('0x3')](_0x324b('0x4'),auth[_0x324b('0x5')](),auth[_0x324b('0x6')](),controller[_0x324b('0x7')]);router['post'](_0x324b('0x8'),auth['isAuthenticated'](),auth[_0x324b('0x6')](),controller['hangup']);router[_0x324b('0x3')](_0x324b('0x9'),auth[_0x324b('0x5')](),auth[_0x324b('0x6')](),controller['answer']);router[_0x324b('0x3')](_0x324b('0xa'),auth[_0x324b('0x5')](),auth['canUpdate'](),controller[_0x324b('0xb')]);router[_0x324b('0x3')](_0x324b('0xc'),auth[_0x324b('0x5')](),auth[_0x324b('0x6')](),controller[_0x324b('0xd')]);router[_0x324b('0x3')](_0x324b('0xe'),auth[_0x324b('0x5')](),auth[_0x324b('0x6')](),controller[_0x324b('0xf')]);router[_0x324b('0x3')](_0x324b('0x10'),auth['isAuthenticated'](),auth['canUpdate'](),controller['transfer']);module[_0x324b('0x11')]=router;
\ No newline at end of file
+var _0x902e=['/calls','/transfer','transfer','exports','express','Router','../../components/auth/service','post','/originate','isAuthenticated','/hangup','canUpdate','/answer','/unhold','unhold'];(function(_0x237fed,_0x1af92f){var _0x47d2be=function(_0x474a23){while(--_0x474a23){_0x237fed['push'](_0x237fed['shift']());}};_0x47d2be(++_0x1af92f);}(_0x902e,0x16c));var _0xe902=function(_0x5964d3,_0x9d25d6){_0x5964d3=_0x5964d3-0x0;var _0x37e9e5=_0x902e[_0x5964d3];return _0x37e9e5;};'use strict';var express=require(_0xe902('0x0'));var router=express[_0xe902('0x1')]();var auth=require(_0xe902('0x2'));var controller=require('./webbar.controller');router[_0xe902('0x3')](_0xe902('0x4'),auth[_0xe902('0x5')](),auth['canUpdate'](),controller['originate']);router[_0xe902('0x3')](_0xe902('0x6'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller['hangup']);router['post'](_0xe902('0x8'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller['answer']);router[_0xe902('0x3')]('/hold',auth[_0xe902('0x5')](),auth['canUpdate'](),controller['hold']);router[_0xe902('0x3')](_0xe902('0x9'),auth[_0xe902('0x5')](),auth['canUpdate'](),controller[_0xe902('0xa')]);router['post'](_0xe902('0xb'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller['calls']);router[_0xe902('0x3')](_0xe902('0xc'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller[_0xe902('0xd')]);module[_0xe902('0xe')]=router;
\ No newline at end of file
index 6ec1591..13eb7d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6737=['answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','UserId','conference\x20fired:','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','redis','defaults','validate','userId\x20is\x20required','string','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','handleError:','error','stack','status','send','name','NotFound','request','then','code','message','catch','User','VoiceChannels','filter','rows','sessionId','length','sessionId\x20','\x20not\x20found!','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','webbar:hangup','answer\x20fired:','webbar:answer'];(function(_0x17767c,_0x3466d6){var _0x42a70e=function(_0x5834ea){while(--_0x5834ea){_0x17767c['push'](_0x17767c['shift']());}};_0x42a70e(++_0x3466d6);}(_0x6737,0xe2));var _0x7673=function(_0x28c2d7,_0x3ca88e){_0x28c2d7=_0x28c2d7-0x0;var _0x37afa5=_0x6737[_0x28c2d7];return _0x37afa5;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x7673('0x0'));var db=require(_0x7673('0x1'))['db'];var config=require('../../config/environment');var util=require(_0x7673('0x2'));var BPromise=require(_0x7673('0x3'));var jayson=require(_0x7673('0x4'));var amiClient=jayson[_0x7673('0x5')]['http']({'port':0x232a});var logger=require(_0x7673('0x6'))(_0x7673('0x7'));var Redis=require('ioredis');config[_0x7673('0x8')]=_[_0x7673('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require(_0x7673('0xa'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x7673('0xb')]},'callNumber':{'type':_0x7673('0xc'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x7673('0xc')},'callbackUrl':{'type':_0x7673('0xc')}});var hangupValidation=new Schema({'userId':{'type':_0x7673('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x7673('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x7673('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x7673('0xd'),'required':[!![],_0x7673('0xb')]},'sessionId':{'type':_0x7673('0xc'),'required':[!![],_0x7673('0xe')]},'transferNumber':{'type':_0x7673('0xc'),'required':[!![],_0x7673('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x7673('0xd'),'required':[!![],_0x7673('0xb')]},'sessionId':{'type':_0x7673('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x7673('0xb')]},'sessionId':{'type':_0x7673('0xc'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x7673('0xd'),'required':[!![],_0x7673('0xb')]}});var conferenceValidation=new Schema({'userId':{'type':_0x7673('0xd'),'required':[!![],_0x7673('0xb')]}});function emit(_0x2a2840,_0x4a8ea0,_0x5ed354){logger[_0x7673('0x10')](_0x2a2840,_0x4a8ea0,JSON[_0x7673('0x11')](_0x5ed354));io['to'](_0x2a2840)['emit'](_0x4a8ea0,_0x5ed354);}function handleError(_0x3afbb3){return function(_0x17699a){console['log'](_0x7673('0x12'),_0x17699a,_0x17699a instanceof RangeError);logger[_0x7673('0x13')](_0x17699a[_0x7673('0x14')]);if(_0x17699a instanceof RangeError){if(_0x17699a['name']){delete _0x17699a['name'];}_0x3afbb3[_0x7673('0x15')](0x194)[_0x7673('0x16')](_0x17699a);}else{if(_0x17699a['name']){delete _0x17699a[_0x7673('0x17')];}_0x3afbb3[_0x7673('0x15')](0x1f4)[_0x7673('0x16')](_0x17699a);}};}function checkError(){return function(_0x33eb47){if(!_0x33eb47){throw new RangeError(_0x7673('0x18'));}return _0x33eb47;};}function respondWithRpcPromise(_0x3e28ca,_0x59879a){return new BPromise(function(_0x557161,_0xea9b37){var _0x21774f=amiClient;return _0x21774f[_0x7673('0x19')](_0x3e28ca,_0x59879a)[_0x7673('0x1a')](function(_0x16bb16){if(_0x16bb16['error']){if(_0x16bb16[_0x7673('0x13')][_0x7673('0x1b')]===0x1f4){return _0xea9b37(_0x16bb16[_0x7673('0x13')][_0x7673('0x1c')]);}return _0x557161(_0x16bb16[_0x7673('0x13')][_0x7673('0x1c')]);}else{_0x557161(_0x16bb16['result']);}})[_0x7673('0x1d')](function(_0xaca974){_0xea9b37(_0xaca974);});});}function getAgent(_0x425897){return db[_0x7673('0x1e')]['findOne']({'where':{'id':_0x425897,'role':'agent'}})[_0x7673('0x1a')](checkError());}function getAgentCheckSession(_0x11b42b,_0x291d10){return new BPromise(function(_0x9d9eab,_0x119a21){var _0x45a045=respondWithRpcPromise(_0x7673('0x1f'));var _0x5a59f9=getAgent(_0x11b42b);Promise['all']([_0x45a045,_0x5a59f9])[_0x7673('0x1a')](function(_0x2d4c0a){var _0x1dd436=_0x2d4c0a[0x0];var _0x335743=_0x2d4c0a[0x1];var _0x12ac6b=_[_0x7673('0x20')](_0x1dd436[_0x7673('0x21')],function(_0x4f12b9){return _0x4f12b9['UserId']==_0x335743['id']&&_0x4f12b9[_0x7673('0x22')]==_0x291d10;});if(_0x12ac6b[_0x7673('0x23')]==0x1){_0x9d9eab(_0x335743);}else{_0x119a21(new RangeError(_0x7673('0x24')+_0x291d10+_0x7673('0x25')));}});});}exports['originate']=function(_0x3aa249,_0x497760){logger[_0x7673('0x10')](_0x7673('0x26'),_0x3aa249[_0x7673('0x27')]);var _0x1b924f=originateValidation[_0x7673('0xa')](_0x3aa249[_0x7673('0x27')]);if(_0x1b924f[_0x7673('0x23')]>0x0){return _0x497760[_0x7673('0x15')](0x190)[_0x7673('0x28')](_0x1b924f);}var _0x1b6061=_0x3aa249[_0x7673('0x27')][_0x7673('0x29')];var _0x26cccd=_0x3aa249['body'][_0x7673('0x2a')];var _0x42f658=_0x3aa249[_0x7673('0x27')][_0x7673('0x2b')];var _0x30ddec=_0x3aa249[_0x7673('0x27')][_0x7673('0x2c')];return getAgent(_0x1b6061)['then'](function(_0x563e2d){logger[_0x7673('0x10')](_0x7673('0x2d'),_0x563e2d[_0x7673('0x17')]);emit(util[_0x7673('0x2e')](_0x7673('0x2f'),_0x563e2d[_0x7673('0x17')]),_0x7673('0x30'),{'callNumber':_0x26cccd,'callerId':_0x42f658,'callbackUrl':_0x30ddec});return _0x497760['status'](0xc8)[_0x7673('0x28')]({'error':![],'message':_0x7673('0x31')});})['catch'](handleError(_0x497760));};exports[_0x7673('0x32')]=function(_0x400f3c,_0x287eee){logger[_0x7673('0x10')]('hangup\x20fired:',_0x400f3c[_0x7673('0x27')]);var _0x1f77c0=hangupValidation['validate'](_0x400f3c[_0x7673('0x27')]);if(_0x1f77c0[_0x7673('0x23')]>0x0){return _0x287eee[_0x7673('0x15')](0x190)['json'](_0x1f77c0);}var _0xe50aa5=_0x400f3c[_0x7673('0x27')][_0x7673('0x29')];var _0x5dfb9a=_0x400f3c['body'][_0x7673('0x22')];return getAgent(_0xe50aa5)['then'](function(_0x4ba2b4){logger[_0x7673('0x10')](_0x7673('0x2d'),_0x4ba2b4['name']);emit(util[_0x7673('0x2e')](_0x7673('0x2f'),_0x4ba2b4[_0x7673('0x17')]),_0x7673('0x33'),{'sessionId':_0x5dfb9a});return _0x287eee[_0x7673('0x15')](0xc8)[_0x7673('0x28')]({'error':![],'message':'hangup\x20executed!'});})[_0x7673('0x1d')](handleError(_0x287eee));};exports['answer']=function(_0xf43bb7,_0x52f803){logger[_0x7673('0x10')](_0x7673('0x34'),_0xf43bb7['body']);var _0x5b2e69=answerValidation[_0x7673('0xa')](_0xf43bb7['body']);if(_0x5b2e69[_0x7673('0x23')]>0x0){return _0x52f803[_0x7673('0x15')](0x190)[_0x7673('0x28')](_0x5b2e69);}var _0x3b6223=_0xf43bb7[_0x7673('0x27')]['userId'];var _0x4ea8b3=_0xf43bb7[_0x7673('0x27')][_0x7673('0x22')];return getAgent(_0x3b6223)['then'](function(_0x4005ee){logger[_0x7673('0x10')](_0x7673('0x2d'),_0x4005ee['name']);emit(util[_0x7673('0x2e')](_0x7673('0x2f'),_0x4005ee[_0x7673('0x17')]),_0x7673('0x35'),{'sessionId':_0x4ea8b3});return _0x52f803[_0x7673('0x15')](0xc8)[_0x7673('0x28')]({'error':![],'message':_0x7673('0x36')});})[_0x7673('0x1d')](handleError(_0x52f803));};exports[_0x7673('0x37')]=function(_0x4ed31d,_0x126981){logger[_0x7673('0x10')](_0x7673('0x38'),_0x4ed31d[_0x7673('0x27')]);var _0x332b5a=holdValidation[_0x7673('0xa')](_0x4ed31d[_0x7673('0x27')]);if(_0x332b5a['length']>0x0){return _0x126981[_0x7673('0x15')](0x190)[_0x7673('0x28')](_0x332b5a);}var _0x461ac3=_0x4ed31d[_0x7673('0x27')][_0x7673('0x29')];var _0x4b844d=_0x4ed31d[_0x7673('0x27')][_0x7673('0x22')];return getAgent(_0x461ac3)[_0x7673('0x1a')](function(_0x2397fb){logger[_0x7673('0x10')]('entityFound:',_0x2397fb['name']);emit(util[_0x7673('0x2e')](_0x7673('0x2f'),_0x2397fb['name']),_0x7673('0x39'),{'sessionId':_0x4b844d});return _0x126981[_0x7673('0x15')](0xc8)[_0x7673('0x28')]({'error':![],'message':_0x7673('0x3a')});})[_0x7673('0x1d')](handleError(_0x126981));};exports['unhold']=function(_0x23789d,_0x3afffa){logger[_0x7673('0x10')](_0x7673('0x3b'),_0x23789d['body']);var _0x1691a5=unholdValidation[_0x7673('0xa')](_0x23789d[_0x7673('0x27')]);if(_0x1691a5[_0x7673('0x23')]>0x0){return _0x3afffa[_0x7673('0x15')](0x190)[_0x7673('0x28')](_0x1691a5);}var _0x115eef=_0x23789d[_0x7673('0x27')][_0x7673('0x29')];var _0x362409=_0x23789d[_0x7673('0x27')]['sessionId'];return getAgent(_0x115eef)[_0x7673('0x1a')](function(_0x4a0d99){logger[_0x7673('0x10')](_0x7673('0x2d'),_0x4a0d99[_0x7673('0x17')]);emit(util['format'](_0x7673('0x2f'),_0x4a0d99[_0x7673('0x17')]),_0x7673('0x3c'),{'sessionId':_0x362409});return _0x3afffa[_0x7673('0x15')](0xc8)[_0x7673('0x28')]({'error':![],'message':_0x7673('0x3d')});})[_0x7673('0x1d')](handleError(_0x3afffa));};exports[_0x7673('0x3e')]=function(_0x375bca,_0x1064d5){logger[_0x7673('0x10')](_0x7673('0x3f'),_0x1064d5[_0x7673('0x27')]);var _0xb3c9e9=callsValidation['validate'](_0x375bca[_0x7673('0x27')]);if(_0xb3c9e9['length']>0x0){return _0x1064d5[_0x7673('0x15')](0x190)[_0x7673('0x28')](_0xb3c9e9);}var _0x1d424a=_0x375bca['body'][_0x7673('0x29')];var _0x5d71b7=respondWithRpcPromise('VoiceChannels');var _0x1804a4=getAgent(_0x1d424a);return Promise['all']([_0x5d71b7,_0x1804a4])['then'](function(_0x1dd141){var _0x3f6ef3=_0x1dd141[0x0];var _0x215a32=_0x1dd141[0x1];var _0xeaa731=_[_0x7673('0x20')](_0x3f6ef3[_0x7673('0x21')],function(_0x151276){return _0x151276[_0x7673('0x40')]==_0x215a32['id'];});return _0x1064d5[_0x7673('0x15')](0xc8)[_0x7673('0x28')]({'count':_0xeaa731[_0x7673('0x23')],'rows':_0xeaa731});})['catch'](handleError(_0x1064d5));};exports['conference']=function(_0x2aa032,_0x297744){logger[_0x7673('0x10')](_0x7673('0x41'),_0x2aa032[_0x7673('0x27')]);var _0x48e51c=conferenceValidation['validate'](_0x2aa032[_0x7673('0x27')]);if(_0x48e51c[_0x7673('0x23')]>0x0){return _0x297744[_0x7673('0x15')](0x190)[_0x7673('0x28')](_0x48e51c);}var _0x51c617=_0x2aa032['body'][_0x7673('0x29')];return getAgent(_0x51c617)[_0x7673('0x1a')](function(_0x1cf039){logger['info'](_0x7673('0x2d'),_0x1cf039['name']);emit(util[_0x7673('0x2e')](_0x7673('0x2f'),_0x1cf039[_0x7673('0x17')]),'webbar:conference');return _0x297744[_0x7673('0x15')](0xc8)[_0x7673('0x28')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x297744));};exports['transfer']=function(_0x32dcfc,_0x2dd367){logger[_0x7673('0x10')](_0x7673('0x42'),_0x32dcfc['body']);var _0xed9040=transferValidation['validate'](_0x32dcfc[_0x7673('0x27')]);if(_0xed9040[_0x7673('0x23')]>0x0){return _0x2dd367[_0x7673('0x15')](0x190)[_0x7673('0x28')](_0xed9040);}var _0x5abb12=_0x32dcfc[_0x7673('0x27')][_0x7673('0x29')];var _0x308a9e=_0x32dcfc['body']['sessionId'];var _0x2d21f2=_0x32dcfc[_0x7673('0x27')][_0x7673('0x43')];return getAgent(_0x5abb12)[_0x7673('0x1a')](function(_0x20e9bd){logger['info'](_0x7673('0x2d'),_0x20e9bd[_0x7673('0x17')]);emit(util['format']('user:%s',_0x20e9bd['name']),_0x7673('0x44'),{'sessionId':_0x308a9e,'transferNumber':_0x2d21f2});return _0x2dd367[_0x7673('0x15')](0xc8)['json']({'error':![],'message':_0x7673('0x45')});})['catch'](handleError(_0x2dd367));};
\ No newline at end of file
+var _0x7a2c=['answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','unhold','webbar:unhold','unhold\x20executed!','all','conference','webbar:conference','conference\x20executed!','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','ioredis','redis','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','transferNumber\x20is\x20required','stringify','log','handleError:','name','send','request','then','error','code','message','result','catch','User','agent','VoiceChannels','filter','rows','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','status','userId','body','callNumber','callerId','callbackUrl','info','format','user:%s','webbar:originate','json','hangup','hangup\x20fired:','length','entityFound:','webbar:hangup','hangup\x20executed!','answer'];(function(_0x65d748,_0x35e146){var _0x52e055=function(_0x115a19){while(--_0x115a19){_0x65d748['push'](_0x65d748['shift']());}};_0x52e055(++_0x35e146);}(_0x7a2c,0x17b));var _0xc7a2=function(_0x301a40,_0x45e6fa){_0x301a40=_0x301a40-0x0;var _0x3f25d2=_0x7a2c[_0x301a40];return _0x3f25d2;};'use strict';var path=require(_0xc7a2('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0xc7a2('0x1'))['db'];var config=require(_0xc7a2('0x2'));var util=require(_0xc7a2('0x3'));var BPromise=require(_0xc7a2('0x4'));var jayson=require(_0xc7a2('0x5'));var amiClient=jayson[_0xc7a2('0x6')][_0xc7a2('0x7')]({'port':0x232a});var logger=require(_0xc7a2('0x8'))('webbarapi');var Redis=require(_0xc7a2('0x9'));config[_0xc7a2('0xa')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xc7a2('0xb'))(new Redis(config[_0xc7a2('0xa')]));var Schema=require(_0xc7a2('0xc'));var originateValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xc7a2('0xe'),'required':[!![],_0xc7a2('0xf')]},'callerId':{'type':_0xc7a2('0xe')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xc7a2('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':_0xc7a2('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xc7a2('0xe'),'required':[!![],_0xc7a2('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':_0xc7a2('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':_0xc7a2('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]}});function emit(_0x26d678,_0x2c3338,_0x2bc321){logger['info'](_0x26d678,_0x2c3338,JSON[_0xc7a2('0x12')](_0x2bc321));io['to'](_0x26d678)['emit'](_0x2c3338,_0x2bc321);}function handleError(_0x2414f4){return function(_0x302d54){console[_0xc7a2('0x13')](_0xc7a2('0x14'),_0x302d54,_0x302d54 instanceof RangeError);logger['error'](_0x302d54['stack']);if(_0x302d54 instanceof RangeError){if(_0x302d54[_0xc7a2('0x15')]){delete _0x302d54[_0xc7a2('0x15')];}_0x2414f4['status'](0x194)['send'](_0x302d54);}else{if(_0x302d54['name']){delete _0x302d54[_0xc7a2('0x15')];}_0x2414f4['status'](0x1f4)[_0xc7a2('0x16')](_0x302d54);}};}function checkError(){return function(_0x260be1){if(!_0x260be1){throw new RangeError('NotFound');}return _0x260be1;};}function respondWithRpcPromise(_0x40f3c4,_0x2dff1d){return new BPromise(function(_0x1b51a1,_0x35e0f6){var _0x337bdb=amiClient;return _0x337bdb[_0xc7a2('0x17')](_0x40f3c4,_0x2dff1d)[_0xc7a2('0x18')](function(_0x4a05e1){if(_0x4a05e1['error']){if(_0x4a05e1[_0xc7a2('0x19')][_0xc7a2('0x1a')]===0x1f4){return _0x35e0f6(_0x4a05e1['error'][_0xc7a2('0x1b')]);}return _0x1b51a1(_0x4a05e1[_0xc7a2('0x19')][_0xc7a2('0x1b')]);}else{_0x1b51a1(_0x4a05e1[_0xc7a2('0x1c')]);}})[_0xc7a2('0x1d')](function(_0x35584a){_0x35e0f6(_0x35584a);});});}function getAgent(_0x1beecd){return db[_0xc7a2('0x1e')]['findOne']({'where':{'id':_0x1beecd,'role':_0xc7a2('0x1f')}})['then'](checkError());}function getAgentCheckSession(_0x206eb7,_0x4cc3a8){return new BPromise(function(_0x20404b,_0x14182f){var _0xd93f19=respondWithRpcPromise(_0xc7a2('0x20'));var _0x4977f0=getAgent(_0x206eb7);Promise['all']([_0xd93f19,_0x4977f0])[_0xc7a2('0x18')](function(_0x2f3097){var _0x272c6b=_0x2f3097[0x0];var _0x305efb=_0x2f3097[0x1];var _0x3be88c=_[_0xc7a2('0x21')](_0x272c6b[_0xc7a2('0x22')],function(_0x5e970e){return _0x5e970e[_0xc7a2('0x23')]==_0x305efb['id']&&_0x5e970e[_0xc7a2('0x24')]==_0x4cc3a8;});if(_0x3be88c['length']==0x1){_0x20404b(_0x305efb);}else{_0x14182f(new RangeError(_0xc7a2('0x25')+_0x4cc3a8+_0xc7a2('0x26')));}});});}exports[_0xc7a2('0x27')]=function(_0x517df7,_0x2820a9){logger['info'](_0xc7a2('0x28'),_0x517df7['body']);var _0x5cd5ef=originateValidation[_0xc7a2('0xc')](_0x517df7['body']);if(_0x5cd5ef['length']>0x0){return _0x2820a9[_0xc7a2('0x29')](0x190)['json'](_0x5cd5ef);}var _0x3df1d2=_0x517df7['body'][_0xc7a2('0x2a')];var _0x2a8a26=_0x517df7[_0xc7a2('0x2b')][_0xc7a2('0x2c')];var _0x3d5d7e=_0x517df7[_0xc7a2('0x2b')][_0xc7a2('0x2d')];var _0x2a3bfb=_0x517df7[_0xc7a2('0x2b')][_0xc7a2('0x2e')];return getAgent(_0x3df1d2)['then'](function(_0x30234f){logger[_0xc7a2('0x2f')]('entityFound:',_0x30234f[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x30234f[_0xc7a2('0x15')]),_0xc7a2('0x32'),{'callNumber':_0x2a8a26,'callerId':_0x3d5d7e,'callbackUrl':_0x2a3bfb});return _0x2820a9[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':'originate\x20executed!'});})[_0xc7a2('0x1d')](handleError(_0x2820a9));};exports[_0xc7a2('0x34')]=function(_0x468151,_0x49ad1f){logger[_0xc7a2('0x2f')](_0xc7a2('0x35'),_0x468151['body']);var _0x366706=hangupValidation[_0xc7a2('0xc')](_0x468151[_0xc7a2('0x2b')]);if(_0x366706[_0xc7a2('0x36')]>0x0){return _0x49ad1f[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0x366706);}var _0x8559fe=_0x468151[_0xc7a2('0x2b')]['userId'];var _0xd418ee=_0x468151['body'][_0xc7a2('0x24')];return getAgent(_0x8559fe)[_0xc7a2('0x18')](function(_0x2cd014){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x2cd014[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x2cd014['name']),_0xc7a2('0x38'),{'sessionId':_0xd418ee});return _0x49ad1f[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x39')});})[_0xc7a2('0x1d')](handleError(_0x49ad1f));};exports[_0xc7a2('0x3a')]=function(_0x4c99de,_0x5ebb9c){logger['info'](_0xc7a2('0x3b'),_0x4c99de[_0xc7a2('0x2b')]);var _0x28ed1c=answerValidation[_0xc7a2('0xc')](_0x4c99de[_0xc7a2('0x2b')]);if(_0x28ed1c[_0xc7a2('0x36')]>0x0){return _0x5ebb9c[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0x28ed1c);}var _0x246482=_0x4c99de['body']['userId'];var _0x4bcb42=_0x4c99de[_0xc7a2('0x2b')][_0xc7a2('0x24')];return getAgent(_0x246482)['then'](function(_0x44f2e9){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x44f2e9['name']);emit(util[_0xc7a2('0x30')]('user:%s',_0x44f2e9[_0xc7a2('0x15')]),_0xc7a2('0x3c'),{'sessionId':_0x4bcb42});return _0x5ebb9c['status'](0xc8)['json']({'error':![],'message':_0xc7a2('0x3d')});})[_0xc7a2('0x1d')](handleError(_0x5ebb9c));};exports['hold']=function(_0x8b8cc2,_0x404e48){logger[_0xc7a2('0x2f')](_0xc7a2('0x3e'),_0x8b8cc2[_0xc7a2('0x2b')]);var _0xa81aa3=holdValidation['validate'](_0x8b8cc2[_0xc7a2('0x2b')]);if(_0xa81aa3[_0xc7a2('0x36')]>0x0){return _0x404e48[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0xa81aa3);}var _0x54fc41=_0x8b8cc2[_0xc7a2('0x2b')][_0xc7a2('0x2a')];var _0x2adcc6=_0x8b8cc2[_0xc7a2('0x2b')][_0xc7a2('0x24')];return getAgent(_0x54fc41)[_0xc7a2('0x18')](function(_0x7378ed){logger[_0xc7a2('0x2f')]('entityFound:',_0x7378ed[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x7378ed[_0xc7a2('0x15')]),'webbar:hold',{'sessionId':_0x2adcc6});return _0x404e48[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':'hold\x20executed!'});})[_0xc7a2('0x1d')](handleError(_0x404e48));};exports[_0xc7a2('0x3f')]=function(_0xb09c6f,_0x457318){logger[_0xc7a2('0x2f')]('unhold\x20fired:',_0xb09c6f[_0xc7a2('0x2b')]);var _0x44716e=unholdValidation[_0xc7a2('0xc')](_0xb09c6f['body']);if(_0x44716e['length']>0x0){return _0x457318[_0xc7a2('0x29')](0x190)['json'](_0x44716e);}var _0x4944b7=_0xb09c6f[_0xc7a2('0x2b')][_0xc7a2('0x2a')];var _0x4a6cb2=_0xb09c6f['body'][_0xc7a2('0x24')];return getAgent(_0x4944b7)[_0xc7a2('0x18')](function(_0x119355){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x119355['name']);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x119355['name']),_0xc7a2('0x40'),{'sessionId':_0x4a6cb2});return _0x457318[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x41')});})[_0xc7a2('0x1d')](handleError(_0x457318));};exports['calls']=function(_0xd91777,_0x40afd2){logger[_0xc7a2('0x2f')]('calls\x20fired:',_0x40afd2[_0xc7a2('0x2b')]);var _0x3174ef=callsValidation[_0xc7a2('0xc')](_0xd91777[_0xc7a2('0x2b')]);if(_0x3174ef[_0xc7a2('0x36')]>0x0){return _0x40afd2[_0xc7a2('0x29')](0x190)['json'](_0x3174ef);}var _0x458ee7=_0xd91777[_0xc7a2('0x2b')][_0xc7a2('0x2a')];var _0x332e8e=respondWithRpcPromise(_0xc7a2('0x20'));var _0x1f0762=getAgent(_0x458ee7);return Promise[_0xc7a2('0x42')]([_0x332e8e,_0x1f0762])['then'](function(_0x2b1bb3){var _0x4e51a8=_0x2b1bb3[0x0];var _0x4e1efa=_0x2b1bb3[0x1];var _0x38df09=_[_0xc7a2('0x21')](_0x4e51a8[_0xc7a2('0x22')],function(_0x4b3045){return _0x4b3045[_0xc7a2('0x23')]==_0x4e1efa['id'];});return _0x40afd2['status'](0xc8)['json']({'count':_0x38df09[_0xc7a2('0x36')],'rows':_0x38df09});})[_0xc7a2('0x1d')](handleError(_0x40afd2));};exports[_0xc7a2('0x43')]=function(_0x1c915b,_0x2fd2b2){logger[_0xc7a2('0x2f')]('conference\x20fired:',_0x1c915b['body']);var _0x5a91d1=conferenceValidation[_0xc7a2('0xc')](_0x1c915b['body']);if(_0x5a91d1['length']>0x0){return _0x2fd2b2['status'](0x190)['json'](_0x5a91d1);}var _0x100b1f=_0x1c915b[_0xc7a2('0x2b')][_0xc7a2('0x2a')];return getAgent(_0x100b1f)[_0xc7a2('0x18')](function(_0x52c83a){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x52c83a[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x52c83a[_0xc7a2('0x15')]),_0xc7a2('0x44'));return _0x2fd2b2[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x45')});})[_0xc7a2('0x1d')](handleError(_0x2fd2b2));};exports['transfer']=function(_0x531924,_0x3613be){logger['info'](_0xc7a2('0x46'),_0x531924[_0xc7a2('0x2b')]);var _0x3dc131=transferValidation[_0xc7a2('0xc')](_0x531924['body']);if(_0x3dc131[_0xc7a2('0x36')]>0x0){return _0x3613be[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0x3dc131);}var _0xc7ce86=_0x531924[_0xc7a2('0x2b')]['userId'];var _0x1d387c=_0x531924[_0xc7a2('0x2b')][_0xc7a2('0x24')];var _0x45044a=_0x531924[_0xc7a2('0x2b')]['transferNumber'];return getAgent(_0xc7ce86)[_0xc7a2('0x18')](function(_0x4ce8d0){logger['info'](_0xc7a2('0x37'),_0x4ce8d0[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')]('user:%s',_0x4ce8d0[_0xc7a2('0x15')]),_0xc7a2('0x47'),{'sessionId':_0x1d387c,'transferNumber':_0x45044a});return _0x3613be['status'](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x48')});})[_0xc7a2('0x1d')](handleError(_0x3613be));};
\ No newline at end of file
index 2428878..8f9de38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','addDisposition','addAnswer','/:id/notify','/:id/send','send','put','update','delete','removeAnswers'];(function(_0x17d573,_0x28b545){var _0x1d138c=function(_0x4e5028){while(--_0x4e5028){_0x17d573['push'](_0x17d573['shift']());}};_0x1d138c(++_0x28b545);}(_0x2ef3,0xba));var _0x32ef=function(_0xfa245c,_0x5002f0){_0xfa245c=_0xfa245c-0x0;var _0x328fab=_0x2ef3[_0xfa245c];return _0x328fab;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['get'](_0x32ef('0x12'),auth['isAuthenticated'](),controller[_0x32ef('0x13')]);router['get'](_0x32ef('0x14'),auth[_0x32ef('0xb')](),controller['getApplications']);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x15')](_0x32ef('0xf'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x16')]);router['post']('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x32ef('0x17')]);router[_0x32ef('0x15')](_0x32ef('0x12'),auth['isAuthenticated'](),controller['addAgents']);router[_0x32ef('0x15')](_0x32ef('0x14'),auth[_0x32ef('0xb')](),controller['addApplications']);router[_0x32ef('0x15')](_0x32ef('0x18'),controller['notify']);router[_0x32ef('0x15')](_0x32ef('0x19'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x1a')]);router[_0x32ef('0x1b')](_0x32ef('0xd'),auth['isAuthenticated'](),controller[_0x32ef('0x1c')]);router['delete'](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller['destroy']);router[_0x32ef('0x1d')](_0x32ef('0xf'),auth[_0x32ef('0xb')](),controller['removeDispositions']);router['delete'](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x1e')]);router['delete']('/:id/users',auth[_0x32ef('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xd4a2=['../../components/auth/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/canned_answers','addAnswer','addAgents','notify','/:id/send','send','put','update','delete','destroy','removeAnswers','removeAgents','multer','connect-timeout','Router'];(function(_0x172450,_0x5801c7){var _0x22888d=function(_0x185d86){while(--_0x185d86){_0x172450['push'](_0x172450['shift']());}};_0x22888d(++_0x5801c7);}(_0xd4a2,0x173));var _0x2d4a=function(_0x176570,_0x35f814){_0x176570=_0x176570-0x0;var _0x50f1d7=_0xd4a2[_0x176570];return _0x50f1d7;};'use strict';var multer=require(_0x2d4a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2d4a('0x1'));var express=require('express');var router=express[_0x2d4a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2d4a('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x2d4a('0x4'));var controller=require(_0x2d4a('0x5'));router[_0x2d4a('0x6')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x8')]);router['get'](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xa')]);router[_0x2d4a('0x6')](_0x2d4a('0xb'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xc')]);router[_0x2d4a('0x6')](_0x2d4a('0xd'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xe')]);router[_0x2d4a('0x6')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x2d4a('0xf')]);router['get'](_0x2d4a('0x10'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x11')]);router[_0x2d4a('0x6')](_0x2d4a('0x12'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x13')]);router[_0x2d4a('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2d4a('0x14')]('/:id/dispositions',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x15')]);router[_0x2d4a('0x14')](_0x2d4a('0x16'),auth['isAuthenticated'](),controller[_0x2d4a('0x17')]);router['post'](_0x2d4a('0x10'),auth['isAuthenticated'](),controller[_0x2d4a('0x18')]);router[_0x2d4a('0x14')](_0x2d4a('0x12'),auth[_0x2d4a('0x7')](),controller['addApplications']);router['post']('/:id/notify',controller[_0x2d4a('0x19')]);router[_0x2d4a('0x14')](_0x2d4a('0x1a'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x1b')]);router[_0x2d4a('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0x2d4a('0x1d')]);router[_0x2d4a('0x1e')](_0x2d4a('0xb'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x1f')]);router[_0x2d4a('0x1e')](_0x2d4a('0xd'),auth[_0x2d4a('0x7')](),controller['removeDispositions']);router[_0x2d4a('0x1e')](_0x2d4a('0x16'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x20')]);router[_0x2d4a('0x1e')](_0x2d4a('0x10'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x21')]);module['exports']=router;
\ No newline at end of file
index 4c41912..3ac2f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5047=['ENUM','twilio','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x5047,0x117));var _0x7504=function(_0x314a8c,_0x1c2e8d){_0x314a8c=_0x314a8c-0x0;var _0x1d4607=_0x5047[_0x314a8c];return _0x1d4607;};'use strict';var Sequelize=require(_0x7504('0x0'));var rs=require(_0x7504('0x1'));module[_0x7504('0x2')]={'name':{'type':Sequelize[_0x7504('0x3')],'unique':_0x7504('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x7504('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x7504('0x3')],'defaultValue':function(){return rs[_0x7504('0x5')]();}},'phone':{'type':Sequelize[_0x7504('0x3')]},'type':{'type':Sequelize[_0x7504('0x6')](_0x7504('0x7'))},'accountSid':{'type':Sequelize[_0x7504('0x3')]},'authToken':{'type':Sequelize[_0x7504('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x7504('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x7504('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x7504('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7504('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7504('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7504('0x9')],'comment':_0x7504('0xa')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x7504('0xb'),'set':function(_0x50638f){if(!_0x50638f){this[_0x7504('0xc')](_0x7504('0xd'),null);}this[_0x7504('0xc')](_0x7504('0xe'),_0x50638f);}},'description':{'type':Sequelize[_0x7504('0x3')]}};
\ No newline at end of file
+var _0x2529=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','generate','ENUM','twilio','TEXT'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x2529,0x16f));var _0x9252=function(_0x240e2b,_0x1d9ac0){_0x240e2b=_0x240e2b-0x0;var _0x4656ca=_0x2529[_0x240e2b];return _0x4656ca;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x9252('0x0'));module[_0x9252('0x1')]={'name':{'type':Sequelize[_0x9252('0x2')],'unique':_0x9252('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x9252('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x9252('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x9252('0x2')],'defaultValue':function(){return rs[_0x9252('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x9252('0x5')](_0x9252('0x6'))},'accountSid':{'type':Sequelize[_0x9252('0x2')]},'authToken':{'type':Sequelize[_0x9252('0x2')]},'notificationTemplate':{'type':Sequelize[_0x9252('0x7')],'defaultValue':function(){return _0x9252('0x8');}},'notificationSound':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9252('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9252('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x9252('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![],'comment':_0x9252('0xc'),'set':function(_0x13eafc){if(!_0x13eafc){this[_0x9252('0xd')]('mandatoryDispositionPauseId',null);}this[_0x9252('0xd')](_0x9252('0xe'),_0x13eafc);}},'description':{'type':Sequelize[_0x9252('0x2')]}};
\ No newline at end of file
index 43524a3..89cae33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff2=['request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','register','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','mandatoryDispositionPause','map','WhatsappAccount','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','Pause','rawAttributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','getDispositions','Disposition','length','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','User','getAgents','addApplications','sequelize','WhatsappApplication','findAndCountAll','priority','getApplications','notify','Applications','account','applications','orderBy','asc','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','CompanyId','ListId','mobile','type','twilio','From','replace','whatsapp:','Body','messageId','MessageSid','isNil','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','from','Contacts','defaults','contact','WhatsappInteraction','interaction','created','autoclose','close','unmanaged','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','waitForTheAssignedAgent','*,*,*,*','startRouting','Start','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','CmList','List','DESC','out','dataValues','Messages','push','eml-format','fast-json-patch'];(function(_0x48c4ef,_0x319d44){var _0x435715=function(_0x925d50){while(--_0x925d50){_0x48c4ef['push'](_0x48c4ef['shift']());}};_0x435715(++_0x319d44);}(_0x6ff2,0xba));var _0x26ff=function(_0x161f72,_0x4f6b71){_0x161f72=_0x161f72-0x0;var _0x444d61=_0x6ff2[_0x161f72];return _0x444d61;};'use strict';var emlformat=require(_0x26ff('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x26ff('0x1'));var rp=require(_0x26ff('0x2'));var moment=require(_0x26ff('0x3'));var BPromise=require(_0x26ff('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x26ff('0x5'));var sox=require(_0x26ff('0x6'));var csv=require(_0x26ff('0x7'));var ejs=require(_0x26ff('0x8'));var fs=require('fs');var fs_extra=require(_0x26ff('0x9'));var _=require(_0x26ff('0xa'));var squel=require(_0x26ff('0xb'));var crypto=require(_0x26ff('0xc'));var jsforce=require(_0x26ff('0xd'));var deskjs=require(_0x26ff('0xe'));var toCsv=require(_0x26ff('0x7'));var querystring=require(_0x26ff('0xf'));var Papa=require('papaparse');var Redis=require(_0x26ff('0x10'));var authService=require(_0x26ff('0x11'));var qs=require(_0x26ff('0x12'));var as=require(_0x26ff('0x13'));var hardwareService=require(_0x26ff('0x14'));var logger=require(_0x26ff('0x15'))(_0x26ff('0x16'));var utils=require(_0x26ff('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x26ff('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x26ff('0x19')],{'host':_0x26ff('0x1a'),'port':0x18eb});var socket=require(_0x26ff('0x1b'))(new Redis(config[_0x26ff('0x19')]));require('./whatsappAccount.socket')[_0x26ff('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x26ff('0x1d')][_0x26ff('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x3e611b,_0x443ed8,_0x2d4092,_0x23197c){return new BPromise(function(_0x39bb5d,_0x59b68c){var _0x9f8907=_0x23197c||client;return _0x9f8907[_0x26ff('0x1f')](_0x3e611b,_0x2d4092)[_0x26ff('0x20')](function(_0x5c1137){logger[_0x26ff('0x21')](_0x26ff('0x22'),_0x443ed8,_0x26ff('0x23'));logger[_0x26ff('0x24')](_0x26ff('0x25'),_0x443ed8,_0x26ff('0x23'),JSON[_0x26ff('0x26')](_0x5c1137));if(_0x5c1137[_0x26ff('0x27')]){if(_0x5c1137[_0x26ff('0x27')][_0x26ff('0x28')]===0x1f4){logger[_0x26ff('0x27')](_0x26ff('0x22'),_0x443ed8,_0x5c1137['error']['message']);return _0x59b68c(_0x5c1137['error'][_0x26ff('0x29')]);}logger[_0x26ff('0x27')](_0x26ff('0x22'),_0x443ed8,_0x5c1137['error'][_0x26ff('0x29')]);return _0x39bb5d(_0x5c1137[_0x26ff('0x27')]['message']);}else{logger['info'](_0x26ff('0x22'),_0x443ed8,_0x26ff('0x23'));_0x39bb5d(_0x5c1137[_0x26ff('0x2a')][_0x26ff('0x29')]);}})['catch'](function(_0x160dbb){logger['error'](_0x26ff('0x22'),_0x443ed8,_0x160dbb);_0x59b68c(_0x160dbb);});});}function respondWithStatusCode(_0x4dd0a1,_0x483c64){_0x483c64=_0x483c64||0xcc;return function(_0x1cd8a6){if(_0x1cd8a6){return _0x4dd0a1[_0x26ff('0x2b')](_0x483c64);}return _0x4dd0a1[_0x26ff('0x2c')](_0x483c64)[_0x26ff('0x2d')]();};}function respondWithResult(_0x4b359e,_0x2b962d){_0x2b962d=_0x2b962d||0xc8;return function(_0x12908b){if(_0x12908b){return _0x4b359e[_0x26ff('0x2c')](_0x2b962d)['json'](_0x12908b);}};}function respondWithFilteredResult(_0x53e0a4,_0x136357){return function(_0x1074bb){if(_0x1074bb){var _0x458ede=typeof _0x136357[_0x26ff('0x2e')]===_0x26ff('0x2f')&&typeof _0x136357[_0x26ff('0x30')]===_0x26ff('0x2f');var _0x14fd3f=_0x1074bb[_0x26ff('0x31')];var _0x2aa84b=_0x458ede?0x0:_0x136357['offset'];var _0x53bf22=_0x458ede?_0x1074bb['count']:_0x136357[_0x26ff('0x2e')]+_0x136357[_0x26ff('0x30')];var _0x5f672;if(_0x53bf22>=_0x14fd3f){_0x53bf22=_0x14fd3f;_0x5f672=0xc8;}else{_0x5f672=0xce;}_0x53e0a4['status'](_0x5f672);return _0x53e0a4[_0x26ff('0x32')](_0x26ff('0x33'),_0x2aa84b+'-'+_0x53bf22+'/'+_0x14fd3f)[_0x26ff('0x34')](_0x1074bb);}return null;};}function patchUpdates(_0x2ce75e){return function(_0x23734b){try{jsonpatch[_0x26ff('0x35')](_0x23734b,_0x2ce75e,!![]);}catch(_0x327f4c){return BPromise['reject'](_0x327f4c);}return _0x23734b[_0x26ff('0x36')]();};}function saveUpdates(_0x25a2a7,_0x134e73){return function(_0x1d1321){if(_0x1d1321){return _0x1d1321[_0x26ff('0x37')](_0x25a2a7)[_0x26ff('0x20')](function(_0x3fddc6){return _0x3fddc6;});}return null;};}function removeEntity(_0x430f3d,_0x4d2711){return function(_0x2d78a2){if(_0x2d78a2){return _0x2d78a2[_0x26ff('0x38')]()[_0x26ff('0x20')](function(){var _0x4eef38=_0x2d78a2[_0x26ff('0x39')]({'plain':!![]});var _0x273b28=_0x26ff('0x3a');return db[_0x26ff('0x3b')][_0x26ff('0x38')]({'where':{'type':_0x273b28,'resourceId':_0x4eef38['id']}})[_0x26ff('0x20')](function(){return _0x2d78a2;});})[_0x26ff('0x20')](function(){_0x430f3d[_0x26ff('0x2c')](0xcc)[_0x26ff('0x2d')]();});}};}function handleEntityNotFound(_0x5673d2,_0x34b480){return function(_0x4e8b3f){if(!_0x4e8b3f){_0x5673d2[_0x26ff('0x2b')](0x194);}return _0x4e8b3f;};}function handleError(_0x54c16a,_0x18ca2a){_0x18ca2a=_0x18ca2a||0x1f4;return function(_0x4b3254){logger['error'](_0x4b3254[_0x26ff('0x3c')]);if(_0x4b3254[_0x26ff('0x3d')]){delete _0x4b3254[_0x26ff('0x3d')];}_0x54c16a[_0x26ff('0x2c')](_0x18ca2a)[_0x26ff('0x3e')](_0x4b3254);};}exports[_0x26ff('0x3f')]=function(_0xade417,_0x3c807c){var _0x536a3f={'include':[{'model':db['Pause'],'as':_0x26ff('0x40')}]},_0x36a75c={},_0x50789b={'count':0x0,'rows':[]};var _0x2e59ab=_[_0x26ff('0x41')](db[_0x26ff('0x42')]['rawAttributes'],function(_0x406834){return{'name':_0x406834['fieldName'],'type':_0x406834['type']['key']};});_0x36a75c[_0x26ff('0x43')]=_['map'](_0x2e59ab,_0x26ff('0x3d'));_0x36a75c['query']=_[_0x26ff('0x44')](_0xade417[_0x26ff('0x45')]);_0x36a75c[_0x26ff('0x46')]=_[_0x26ff('0x47')](_0x36a75c[_0x26ff('0x43')],_0x36a75c[_0x26ff('0x45')]);_0x536a3f['attributes']=_[_0x26ff('0x47')](_0x36a75c['model'],qs[_0x26ff('0x48')](_0xade417[_0x26ff('0x45')][_0x26ff('0x48')]));_0x536a3f[_0x26ff('0x49')]=_0x536a3f[_0x26ff('0x49')]['length']?_0x536a3f['attributes']:_0x36a75c[_0x26ff('0x43')];if(!_0xade417[_0x26ff('0x45')][_0x26ff('0x4a')](_0x26ff('0x4b'))){_0x536a3f['limit']=qs[_0x26ff('0x30')](_0xade417[_0x26ff('0x45')][_0x26ff('0x30')]);_0x536a3f[_0x26ff('0x2e')]=qs['offset'](_0xade417[_0x26ff('0x45')][_0x26ff('0x2e')]);}_0x536a3f[_0x26ff('0x4c')]=qs[_0x26ff('0x4d')](_0xade417[_0x26ff('0x45')][_0x26ff('0x4d')]);_0x536a3f['where']=qs[_0x26ff('0x46')](_[_0x26ff('0x4e')](_0xade417['query'],_0x36a75c['filters']),_0x2e59ab);if(_0xade417[_0x26ff('0x45')][_0x26ff('0x4f')]){_0x536a3f[_0x26ff('0x50')]=_[_0x26ff('0x51')](_0x536a3f['where'],{'$or':_['map'](_0x2e59ab,function(_0x313a8a){if(_0x313a8a['type']!==_0x26ff('0x52')){var _0x2ea557={};_0x2ea557[_0x313a8a[_0x26ff('0x3d')]]={'$like':'%'+_0xade417[_0x26ff('0x45')][_0x26ff('0x4f')]+'%'};return _0x2ea557;}})});}_0x536a3f=_[_0x26ff('0x51')]({},_0x536a3f,_0xade417[_0x26ff('0x53')]);var _0x50b6ae={'where':_0x536a3f[_0x26ff('0x50')]};return db[_0x26ff('0x42')][_0x26ff('0x31')](_0x50b6ae)[_0x26ff('0x20')](function(_0x2b199c){_0x50789b[_0x26ff('0x31')]=_0x2b199c;if(_0xade417[_0x26ff('0x45')][_0x26ff('0x54')]){_0x536a3f['include']=[{'all':!![]}];}return db[_0x26ff('0x42')][_0x26ff('0x55')](_0x536a3f);})[_0x26ff('0x20')](function(_0xfb8b1c){_0x50789b[_0x26ff('0x56')]=_0xfb8b1c;return _0x50789b;})[_0x26ff('0x20')](respondWithFilteredResult(_0x3c807c,_0x536a3f))[_0x26ff('0x57')](handleError(_0x3c807c,null));};exports['show']=function(_0x1bb490,_0x60992e){var _0x130fd3={'raw':![],'where':{'id':_0x1bb490[_0x26ff('0x58')]['id']},'include':[{'model':db[_0x26ff('0x59')],'as':_0x26ff('0x40')}]},_0x50bcc1={};_0x50bcc1[_0x26ff('0x43')]=_[_0x26ff('0x44')](db['WhatsappAccount'][_0x26ff('0x5a')]);_0x50bcc1[_0x26ff('0x45')]=_['keys'](_0x1bb490['query']);_0x50bcc1[_0x26ff('0x46')]=_[_0x26ff('0x47')](_0x50bcc1['model'],_0x50bcc1[_0x26ff('0x45')]);_0x130fd3['attributes']=_['intersection'](_0x50bcc1['model'],qs['fields'](_0x1bb490[_0x26ff('0x45')]['fields']));_0x130fd3[_0x26ff('0x49')]=_0x130fd3[_0x26ff('0x49')]['length']?_0x130fd3[_0x26ff('0x49')]:_0x50bcc1[_0x26ff('0x43')];if(_0x1bb490['query'][_0x26ff('0x54')]){_0x130fd3[_0x26ff('0x5b')]=[{'all':!![]}];}_0x130fd3=_[_0x26ff('0x51')]({},_0x130fd3,_0x1bb490['options']);return db[_0x26ff('0x42')][_0x26ff('0x5c')](_0x130fd3)['then'](handleEntityNotFound(_0x60992e,null))[_0x26ff('0x20')](respondWithResult(_0x60992e,null))[_0x26ff('0x57')](handleError(_0x60992e,null));};exports[_0x26ff('0x5d')]=function(_0x574a71,_0x87ec5d){return db[_0x26ff('0x42')][_0x26ff('0x5d')](_0x574a71[_0x26ff('0x5e')],{})[_0x26ff('0x20')](function(_0x26c6bb){var _0x34d0d6=_0x574a71[_0x26ff('0x5f')][_0x26ff('0x39')]({'plain':!![]});if(!_0x34d0d6)throw new Error(_0x26ff('0x60'));if(_0x34d0d6[_0x26ff('0x61')]==='user'){var _0x2f2d69=_0x26c6bb[_0x26ff('0x39')]({'plain':!![]});var _0x566d9a='WhatsappAccounts';return db[_0x26ff('0x62')][_0x26ff('0x5c')]({'where':{'name':_0x566d9a,'userProfileId':_0x34d0d6[_0x26ff('0x63')]},'raw':!![]})['then'](function(_0x299867){if(_0x299867&&_0x299867[_0x26ff('0x64')]===0x0){return db['UserProfileResource']['create']({'name':_0x2f2d69[_0x26ff('0x3d')],'resourceId':_0x2f2d69['id'],'type':_0x299867[_0x26ff('0x3d')],'sectionId':_0x299867['id']},{})[_0x26ff('0x20')](function(){return _0x26c6bb;});}else{return _0x26c6bb;}})[_0x26ff('0x57')](function(_0x1490f7){logger[_0x26ff('0x27')](_0x26ff('0x65'),_0x1490f7);throw _0x1490f7;});}return _0x26c6bb;})[_0x26ff('0x20')](respondWithResult(_0x87ec5d,0xc9))[_0x26ff('0x57')](handleError(_0x87ec5d,null));};exports[_0x26ff('0x37')]=function(_0xad91f8,_0x290316){if(_0xad91f8['body']['id']){delete _0xad91f8['body']['id'];}return db[_0x26ff('0x42')][_0x26ff('0x5c')]({'where':{'id':_0xad91f8[_0x26ff('0x58')]['id']},'include':[{'model':db[_0x26ff('0x59')],'as':_0x26ff('0x40')}]})[_0x26ff('0x20')](handleEntityNotFound(_0x290316,null))[_0x26ff('0x20')](saveUpdates(_0xad91f8['body'],null))[_0x26ff('0x20')](respondWithResult(_0x290316,null))[_0x26ff('0x57')](handleError(_0x290316,null));};exports[_0x26ff('0x38')]=function(_0x354ab6,_0xb28348){return db['WhatsappAccount'][_0x26ff('0x5c')]({'where':{'id':_0x354ab6['params']['id']}})[_0x26ff('0x20')](handleEntityNotFound(_0xb28348,null))[_0x26ff('0x20')](removeEntity(_0xb28348,null))[_0x26ff('0x57')](handleError(_0xb28348,null));};exports[_0x26ff('0x66')]=function(_0x2dffd8,_0x1ea295){return db[_0x26ff('0x42')][_0x26ff('0x66')]()[_0x26ff('0x20')](respondWithResult(_0x1ea295,null))[_0x26ff('0x57')](handleError(_0x1ea295,null));};exports[_0x26ff('0x67')]=function(_0x1215af,_0x2cfb9b,_0x1ae407){if(_0x1215af['body']['id']){delete _0x1215af[_0x26ff('0x5e')]['id'];}return db[_0x26ff('0x42')][_0x26ff('0x5c')]({'where':{'id':_0x1215af['params']['id']}})['then'](handleEntityNotFound(_0x2cfb9b,null))[_0x26ff('0x20')](function(_0x3d3459){if(_0x3d3459){_0x1215af['body'][_0x26ff('0x68')]=_0x3d3459['id'];return db['Disposition'][_0x26ff('0x5d')](_0x1215af[_0x26ff('0x5e')]);}})[_0x26ff('0x20')](respondWithResult(_0x2cfb9b,null))[_0x26ff('0x57')](handleError(_0x2cfb9b,null));};exports[_0x26ff('0x69')]=function(_0x3ccf28,_0x2bf6e4,_0x55e0f4){var _0x2bf0a4={'raw':![],'where':{}};var _0x3f86d8={};var _0x5859f8={'count':0x0,'rows':[]};return db[_0x26ff('0x42')]['findOne']({'where':{'id':_0x3ccf28[_0x26ff('0x58')]['id']}})[_0x26ff('0x20')](handleEntityNotFound(_0x2bf6e4,null))[_0x26ff('0x20')](function(_0x2fd431){if(_0x2fd431){_0x3f86d8[_0x26ff('0x43')]=_[_0x26ff('0x44')](db[_0x26ff('0x6a')]['rawAttributes']);_0x3f86d8[_0x26ff('0x45')]=_['keys'](_0x3ccf28[_0x26ff('0x45')]);_0x3f86d8[_0x26ff('0x46')]=_[_0x26ff('0x47')](_0x3f86d8[_0x26ff('0x43')],_0x3f86d8[_0x26ff('0x45')]);_0x2bf0a4[_0x26ff('0x49')]=_[_0x26ff('0x47')](_0x3f86d8[_0x26ff('0x43')],qs[_0x26ff('0x48')](_0x3ccf28[_0x26ff('0x45')][_0x26ff('0x48')]));_0x2bf0a4['attributes']=_0x2bf0a4['attributes'][_0x26ff('0x6b')]?_0x2bf0a4[_0x26ff('0x49')]:_0x3f86d8[_0x26ff('0x43')];if(!_0x3ccf28['query']['hasOwnProperty'](_0x26ff('0x4b'))){_0x2bf0a4[_0x26ff('0x30')]=qs[_0x26ff('0x30')](_0x3ccf28[_0x26ff('0x45')][_0x26ff('0x30')]);_0x2bf0a4[_0x26ff('0x2e')]=qs[_0x26ff('0x2e')](_0x3ccf28['query'][_0x26ff('0x2e')]);}_0x2bf0a4[_0x26ff('0x4c')]=qs[_0x26ff('0x4d')](_0x3ccf28['query']['sort']);_0x2bf0a4[_0x26ff('0x50')]=qs[_0x26ff('0x46')](_[_0x26ff('0x4e')](_0x3ccf28['query'],_0x3f86d8['filters']));_0x2bf0a4[_0x26ff('0x50')][_0x26ff('0x68')]=_0x2fd431['id'];if(_0x3ccf28[_0x26ff('0x45')][_0x26ff('0x4f')]){_0x2bf0a4[_0x26ff('0x50')]=_['merge'](_0x2bf0a4['where'],{'$or':_[_0x26ff('0x41')](_0x2bf0a4['attributes'],function(_0x34e16d){var _0x21c15e={};_0x21c15e[_0x34e16d]={'$like':'%'+_0x3ccf28[_0x26ff('0x45')][_0x26ff('0x4f')]+'%'};return _0x21c15e;})});}_0x2bf0a4=_[_0x26ff('0x51')]({},_0x2bf0a4,_0x3ccf28[_0x26ff('0x53')]);return db[_0x26ff('0x6a')]['count']({'where':_0x2bf0a4[_0x26ff('0x50')]})[_0x26ff('0x20')](function(_0x3d297f){_0x5859f8[_0x26ff('0x31')]=_0x3d297f;if(_0x3ccf28['query'][_0x26ff('0x54')]){_0x2bf0a4[_0x26ff('0x5b')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x2bf0a4);})[_0x26ff('0x20')](function(_0x5e883c){_0x5859f8[_0x26ff('0x56')]=_0x5e883c;return _0x5859f8;});}})['then'](respondWithFilteredResult(_0x2bf6e4,_0x2bf0a4))['catch'](handleError(_0x2bf6e4,null));};exports[_0x26ff('0x6c')]=function(_0x4392b1,_0x486cdc,_0x23189d){return db['WhatsappAccount']['find']({'where':{'id':_0x4392b1['params']['id']}})[_0x26ff('0x20')](handleEntityNotFound(_0x486cdc,null))[_0x26ff('0x20')](function(_0x2666b9){if(_0x2666b9){return _0x2666b9[_0x26ff('0x6c')](_0x4392b1['query'][_0x26ff('0x6d')]);}})[_0x26ff('0x20')](respondWithStatusCode(_0x486cdc,null))[_0x26ff('0x57')](handleError(_0x486cdc,null));};exports[_0x26ff('0x6e')]=function(_0x3eabae,_0x42c0e7,_0x1424af){if(_0x3eabae['body']['id']){delete _0x3eabae['body']['id'];}return db[_0x26ff('0x42')][_0x26ff('0x5c')]({'where':{'id':_0x3eabae[_0x26ff('0x58')]['id']}})['then'](handleEntityNotFound(_0x42c0e7,null))[_0x26ff('0x20')](function(_0x3013cb){if(_0x3013cb){_0x3eabae[_0x26ff('0x5e')][_0x26ff('0x68')]=_0x3013cb['id'];return db[_0x26ff('0x6f')][_0x26ff('0x5d')](_0x3eabae[_0x26ff('0x5e')]);}})['then'](respondWithResult(_0x42c0e7,null))[_0x26ff('0x57')](handleError(_0x42c0e7,null));};exports[_0x26ff('0x70')]=function(_0x1b54d9,_0x4ecfab,_0x14fcab){var _0x4ba2e2={'raw':![],'where':{}};var _0x2cd11a={};var _0x55a807={'count':0x0,'rows':[]};return db[_0x26ff('0x42')][_0x26ff('0x71')]({'where':{'id':_0x1b54d9[_0x26ff('0x58')]['id']}})[_0x26ff('0x20')](handleEntityNotFound(_0x4ecfab,null))[_0x26ff('0x20')](function(_0xd82eed){if(_0xd82eed){_0x2cd11a[_0x26ff('0x43')]=_[_0x26ff('0x44')](db[_0x26ff('0x6f')]['rawAttributes']);_0x2cd11a[_0x26ff('0x45')]=_['keys'](_0x1b54d9['query']);_0x2cd11a[_0x26ff('0x46')]=_['intersection'](_0x2cd11a['model'],_0x2cd11a['query']);_0x4ba2e2['attributes']=_[_0x26ff('0x47')](_0x2cd11a['model'],qs[_0x26ff('0x48')](_0x1b54d9[_0x26ff('0x45')][_0x26ff('0x48')]));_0x4ba2e2[_0x26ff('0x49')]=_0x4ba2e2[_0x26ff('0x49')]['length']?_0x4ba2e2[_0x26ff('0x49')]:_0x2cd11a[_0x26ff('0x43')];if(!_0x1b54d9[_0x26ff('0x45')][_0x26ff('0x4a')](_0x26ff('0x4b'))){_0x4ba2e2['limit']=qs[_0x26ff('0x30')](_0x1b54d9[_0x26ff('0x45')][_0x26ff('0x30')]);_0x4ba2e2[_0x26ff('0x2e')]=qs[_0x26ff('0x2e')](_0x1b54d9[_0x26ff('0x45')]['offset']);}_0x4ba2e2[_0x26ff('0x4c')]=qs['sort'](_0x1b54d9[_0x26ff('0x45')]['sort']);_0x4ba2e2[_0x26ff('0x50')]=qs[_0x26ff('0x46')](_['pick'](_0x1b54d9[_0x26ff('0x45')],_0x2cd11a[_0x26ff('0x46')]));_0x4ba2e2[_0x26ff('0x50')][_0x26ff('0x68')]=_0xd82eed['id'];if(_0x1b54d9[_0x26ff('0x45')][_0x26ff('0x4f')]){_0x4ba2e2[_0x26ff('0x50')]=_[_0x26ff('0x51')](_0x4ba2e2[_0x26ff('0x50')],{'$or':_['map'](_0x4ba2e2[_0x26ff('0x49')],function(_0xe6ede0){var _0x36d7ab={};_0x36d7ab[_0xe6ede0]={'$like':'%'+_0x1b54d9[_0x26ff('0x45')][_0x26ff('0x4f')]+'%'};return _0x36d7ab;})});}_0x4ba2e2=_[_0x26ff('0x51')]({},_0x4ba2e2,_0x1b54d9[_0x26ff('0x53')]);return db[_0x26ff('0x6f')][_0x26ff('0x31')]({'where':_0x4ba2e2['where']})[_0x26ff('0x20')](function(_0xc8ae5){_0x55a807[_0x26ff('0x31')]=_0xc8ae5;if(_0x1b54d9[_0x26ff('0x45')]['includeAll']){_0x4ba2e2[_0x26ff('0x5b')]=[{'all':!![]}];}return db[_0x26ff('0x6f')][_0x26ff('0x55')](_0x4ba2e2);})[_0x26ff('0x20')](function(_0xaf971a){_0x55a807[_0x26ff('0x56')]=_0xaf971a;return _0x55a807;});}})[_0x26ff('0x20')](respondWithFilteredResult(_0x4ecfab,_0x4ba2e2))[_0x26ff('0x57')](handleError(_0x4ecfab,null));};exports[_0x26ff('0x72')]=function(_0x1751c5,_0x52d73f,_0x14a8a6){return db['WhatsappAccount'][_0x26ff('0x5c')]({'where':{'id':_0x1751c5[_0x26ff('0x58')]['id']}})[_0x26ff('0x20')](handleEntityNotFound(_0x52d73f,null))[_0x26ff('0x20')](function(_0x34e3c1){if(_0x34e3c1){return _0x34e3c1[_0x26ff('0x72')](_0x1751c5[_0x26ff('0x45')][_0x26ff('0x6d')]);}})[_0x26ff('0x20')](respondWithStatusCode(_0x52d73f,null))[_0x26ff('0x57')](handleError(_0x52d73f,null));};exports['addAgents']=function(_0x274012,_0x57a4fe,_0x3e3814){return db[_0x26ff('0x42')][_0x26ff('0x5c')]({'where':{'id':_0x274012['params']['id']}})['then'](handleEntityNotFound(_0x57a4fe,null))[_0x26ff('0x20')](function(_0x5b703e){if(_0x5b703e){return _0x5b703e[_0x26ff('0x73')](_0x274012[_0x26ff('0x5e')][_0x26ff('0x6d')],_[_0x26ff('0x74')](_0x274012[_0x26ff('0x5e')],[_0x26ff('0x6d'),'id'])||{})[_0x26ff('0x75')](function(_0x20923b){for(var _0x5d51be=0x0;_0x5d51be<_0x274012['body'][_0x26ff('0x6d')][_0x26ff('0x6b')];_0x5d51be+=0x1){socket[_0x26ff('0x76')](_0x26ff('0x77'),{'UserId':Number(_0x274012[_0x26ff('0x5e')][_0x26ff('0x6d')][_0x5d51be]),'WhatsappAccountId':Number(_0x274012['params']['id'])});}return _0x20923b;});}})['then'](respondWithResult(_0x57a4fe,null))[_0x26ff('0x57')](handleError(_0x57a4fe,null));};exports[_0x26ff('0x78')]=function(_0x18d06c,_0x1671c2,_0x2e0dac){return db[_0x26ff('0x42')][_0x26ff('0x5c')]({'where':{'id':_0x18d06c[_0x26ff('0x58')]['id']}})['then'](handleEntityNotFound(_0x1671c2,null))[_0x26ff('0x20')](function(_0x2562b0){if(_0x2562b0){return _0x2562b0[_0x26ff('0x78')](_0x18d06c[_0x26ff('0x45')]['ids'])[_0x26ff('0x20')](function(){if(_['isArray'](_0x18d06c['query'][_0x26ff('0x6d')])){for(var _0x171347=0x0;_0x171347<_0x18d06c[_0x26ff('0x45')]['ids'][_0x26ff('0x6b')];_0x171347+=0x1){socket['emit'](_0x26ff('0x79'),{'UserId':Number(_0x18d06c[_0x26ff('0x45')][_0x26ff('0x6d')][_0x171347]),'WhatsappAccountId':Number(_0x18d06c[_0x26ff('0x58')]['id'])});}}else{socket['emit'](_0x26ff('0x79'),{'UserId':Number(_0x18d06c[_0x26ff('0x45')][_0x26ff('0x6d')]),'WhatsappAccountId':Number(_0x18d06c[_0x26ff('0x58')]['id'])});}});}})[_0x26ff('0x20')](respondWithStatusCode(_0x1671c2,null))['catch'](handleError(_0x1671c2,null));};exports['getAgents']=function(_0x22b089,_0x29c066,_0xff0b6b){var _0x171bd7={};var _0x11acdf={};var _0x2f8581;var _0x2a5fe2;return db[_0x26ff('0x42')]['findOne']({'where':{'id':_0x22b089['params']['id']}})[_0x26ff('0x20')](handleEntityNotFound(_0x29c066,null))[_0x26ff('0x20')](function(_0x41fc65){if(_0x41fc65){_0x2f8581=_0x41fc65;_0x11acdf[_0x26ff('0x43')]=_[_0x26ff('0x44')](db[_0x26ff('0x7a')][_0x26ff('0x5a')]);_0x11acdf[_0x26ff('0x45')]=_['keys'](_0x22b089[_0x26ff('0x45')]);_0x11acdf[_0x26ff('0x46')]=_[_0x26ff('0x47')](_0x11acdf[_0x26ff('0x43')],_0x11acdf[_0x26ff('0x45')]);_0x171bd7[_0x26ff('0x49')]=_[_0x26ff('0x47')](_0x11acdf[_0x26ff('0x43')],qs[_0x26ff('0x48')](_0x22b089[_0x26ff('0x45')]['fields']));_0x171bd7[_0x26ff('0x49')]=_0x171bd7[_0x26ff('0x49')][_0x26ff('0x6b')]?_0x171bd7['attributes']:_0x11acdf[_0x26ff('0x43')];_0x171bd7['order']=qs[_0x26ff('0x4d')](_0x22b089[_0x26ff('0x45')][_0x26ff('0x4d')]);_0x171bd7[_0x26ff('0x50')]=qs[_0x26ff('0x46')](_[_0x26ff('0x4e')](_0x22b089[_0x26ff('0x45')],_0x11acdf[_0x26ff('0x46')]));if(_0x22b089[_0x26ff('0x45')][_0x26ff('0x4f')]){_0x171bd7[_0x26ff('0x50')]=_[_0x26ff('0x51')](_0x171bd7[_0x26ff('0x50')],{'$or':_[_0x26ff('0x41')](_0x171bd7[_0x26ff('0x49')],function(_0x16a0a6){var _0xefb7e7={};_0xefb7e7[_0x16a0a6]={'$like':'%'+_0x22b089[_0x26ff('0x45')][_0x26ff('0x4f')]+'%'};return _0xefb7e7;})});}_0x171bd7=_[_0x26ff('0x51')]({},_0x171bd7,_0x22b089['options']);return _0x2f8581[_0x26ff('0x7b')](_0x171bd7);}})[_0x26ff('0x20')](function(_0x557201){if(_0x557201){_0x2a5fe2=_0x557201['length'];if(!_0x22b089['query'][_0x26ff('0x4a')](_0x26ff('0x4b'))){_0x171bd7[_0x26ff('0x30')]=qs[_0x26ff('0x30')](_0x22b089[_0x26ff('0x45')][_0x26ff('0x30')]);_0x171bd7['offset']=qs[_0x26ff('0x2e')](_0x22b089[_0x26ff('0x45')]['offset']);}return _0x2f8581[_0x26ff('0x7b')](_0x171bd7);}})[_0x26ff('0x20')](function(_0x2491d0){if(_0x2491d0){return _0x2491d0?{'count':_0x2a5fe2,'rows':_0x2491d0}:null;}})[_0x26ff('0x20')](respondWithResult(_0x29c066,null))[_0x26ff('0x57')](handleError(_0x29c066,null));};exports[_0x26ff('0x7c')]=function(_0x32dad1,_0x56ee34,_0xc1aa8a){return db['WhatsappAccount'][_0x26ff('0x71')]({'where':{'id':_0x32dad1['params']['id']}})[_0x26ff('0x20')](handleEntityNotFound(_0x56ee34,null))['then'](function(_0x4c3a50){if(_0x4c3a50){return db[_0x26ff('0x7d')]['transaction'](function(_0x2bcebc){return db[_0x26ff('0x7e')][_0x26ff('0x38')]({'where':{'WhatsappAccountId':_0x32dad1[_0x26ff('0x58')]['id']},'transaction':_0x2bcebc})[_0x26ff('0x20')](function(_0x1be213){var _0x50790c=_[_0x26ff('0x41')](_0x32dad1[_0x26ff('0x5e')],function(_0x2a12b9){_0x2a12b9[_0x26ff('0x68')]=_0x32dad1[_0x26ff('0x58')]['id'];return _0x2a12b9;});return db['WhatsappApplication']['bulkCreate'](_0x50790c,{'transaction':_0x2bcebc});});})['then'](function(){return db[_0x26ff('0x7e')][_0x26ff('0x7f')]({'where':{'WhatsappAccountId':_0x32dad1[_0x26ff('0x58')]['id']},'order':_0x26ff('0x80')});});}})[_0x26ff('0x20')](respondWithResult(_0x56ee34,null))['catch'](handleError(_0x56ee34,null));};exports[_0x26ff('0x81')]=function(_0x30bb12,_0x431c99,_0x315c64){var _0x2be72a={};var _0x104a56={};var _0x57f006;var _0x2b1a26;return db[_0x26ff('0x42')][_0x26ff('0x71')]({'where':{'id':_0x30bb12[_0x26ff('0x58')]['id']}})['then'](handleEntityNotFound(_0x431c99,null))[_0x26ff('0x20')](function(_0x32e6c8){if(_0x32e6c8){_0x57f006=_0x32e6c8;_0x104a56[_0x26ff('0x43')]=_[_0x26ff('0x44')](db[_0x26ff('0x7e')][_0x26ff('0x5a')]);_0x104a56['query']=_[_0x26ff('0x44')](_0x30bb12[_0x26ff('0x45')]);_0x104a56[_0x26ff('0x46')]=_['intersection'](_0x104a56[_0x26ff('0x43')],_0x104a56['query']);_0x2be72a['attributes']=_[_0x26ff('0x47')](_0x104a56[_0x26ff('0x43')],qs['fields'](_0x30bb12[_0x26ff('0x45')][_0x26ff('0x48')]));_0x2be72a[_0x26ff('0x49')]=_0x2be72a[_0x26ff('0x49')][_0x26ff('0x6b')]?_0x2be72a[_0x26ff('0x49')]:_0x104a56['model'];_0x2be72a[_0x26ff('0x4c')]=qs['sort'](_0x30bb12[_0x26ff('0x45')][_0x26ff('0x4d')]);_0x2be72a['where']=qs['filters'](_[_0x26ff('0x4e')](_0x30bb12['query'],_0x104a56[_0x26ff('0x46')]));if(_0x30bb12[_0x26ff('0x45')][_0x26ff('0x4f')]){_0x2be72a[_0x26ff('0x50')]=_[_0x26ff('0x51')](_0x2be72a[_0x26ff('0x50')],{'$or':_[_0x26ff('0x41')](_0x2be72a[_0x26ff('0x49')],function(_0x2476fe){var _0x3bd13e={};_0x3bd13e[_0x2476fe]={'$like':'%'+_0x30bb12[_0x26ff('0x45')]['filter']+'%'};return _0x3bd13e;})});}_0x2be72a=_['merge']({},_0x2be72a,_0x30bb12['options']);return _0x57f006[_0x26ff('0x81')](_0x2be72a);}})[_0x26ff('0x20')](function(_0x220657){if(_0x220657){_0x2b1a26=_0x220657[_0x26ff('0x6b')];if(!_0x30bb12[_0x26ff('0x45')][_0x26ff('0x4a')](_0x26ff('0x4b'))){_0x2be72a[_0x26ff('0x30')]=qs[_0x26ff('0x30')](_0x30bb12[_0x26ff('0x45')][_0x26ff('0x30')]);_0x2be72a['offset']=qs[_0x26ff('0x2e')](_0x30bb12[_0x26ff('0x45')][_0x26ff('0x2e')]);}return _0x57f006[_0x26ff('0x81')](_0x2be72a);}})['then'](function(_0x4cf957){if(_0x4cf957){return _0x4cf957?{'count':_0x2b1a26,'rows':_0x4cf957}:null;}})['then'](respondWithResult(_0x431c99,null))[_0x26ff('0x57')](handleError(_0x431c99,null));};exports[_0x26ff('0x82')]=function(_0x1a59e2,_0x206907,_0xfd3214){var _0x2974a3={'channel':'whatsapp'};var _0xdda614=[];var _0x3613e1=[];var _0x2cecd1={};return db['WhatsappAccount'][_0x26ff('0x5c')]({'where':{'id':_0x1a59e2[_0x26ff('0x58')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x26ff('0x83')}]})[_0x26ff('0x20')](handleEntityNotFound(_0x206907,null))[_0x26ff('0x20')](function(_0x15581a){_0x2974a3[_0x26ff('0x84')]=_0x15581a;_0x2974a3[_0x26ff('0x85')]=_[_0x26ff('0x86')](_0x15581a[_0x26ff('0x83')],[_0x26ff('0x80')],[_0x26ff('0x87')]);if(_0x2974a3[_0x26ff('0x84')][_0x26ff('0x83')]){delete _0x2974a3['account'][_0x26ff('0x83')];}return db[_0x26ff('0x88')][_0x26ff('0x66')]();})[_0x26ff('0x20')](function(_0x37b278){if(!_0x37b278){throw new db['Sequelize'][(_0x26ff('0x89'))](_0x26ff('0x8a'));}_0xdda614=_['difference'](_['keys'](_0x37b278),[_0x26ff('0x8b'),_0x26ff('0x8c')]);_0x3613e1=_['difference'](_[_0x26ff('0x44')](_0x37b278),[_0x26ff('0x8b'),_0x26ff('0x8c'),_0x26ff('0x8d'),_0x26ff('0x8e')]);_0x2974a3[_0x26ff('0x5e')]={'mapKey':_0x26ff('0x8f')};if(_0x2974a3[_0x26ff('0x84')][_0x26ff('0x90')]&&_0x2974a3[_0x26ff('0x84')]['type']===_0x26ff('0x91')){_0x2974a3[_0x26ff('0x5e')]['from']=_0x1a59e2[_0x26ff('0x5e')][_0x26ff('0x92')][_0x26ff('0x93')](_0x26ff('0x94'),'');_0x2974a3['body'][_0x26ff('0x5e')]=_0x1a59e2['body'][_0x26ff('0x95')];_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x96')]=_0x1a59e2[_0x26ff('0x5e')][_0x26ff('0x97')];}if(_0x2974a3['body']['id']){delete _0x2974a3[_0x26ff('0x5e')]['id'];}if(_[_0x26ff('0x98')](_0x2974a3[_0x26ff('0x5e')]['from'])){throw new db[(_0x26ff('0x99'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x26ff('0x98')](_0x2974a3[_0x26ff('0x5e')]['body'])||_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x5e')]===''){throw new db[(_0x26ff('0x99'))]['ValidationError'](_0x26ff('0x9a'));}if(_[_0x26ff('0x98')](_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x9b')])){throw new db[(_0x26ff('0x99'))][(_0x26ff('0x89'))](_0x26ff('0x9c')+_0x3613e1);}if(!_['includes'](_0x3613e1,_0x2974a3[_0x26ff('0x5e')]['mapKey'])){throw new db[(_0x26ff('0x99'))][(_0x26ff('0x89'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3613e1);}_0x2cecd1[_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x9b')]]=_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x9d')];return db['CmList'][_0x26ff('0x5c')]({'where':{'id':_0x2974a3[_0x26ff('0x84')]['ListId']},'include':[{'model':db['CmContact'],'as':_0x26ff('0x9e'),'where':_0x2cecd1,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x26ff('0x20')](handleEntityNotFound(_0x206907,null))[_0x26ff('0x20')](function(_0x2e0a26){if(_0x2e0a26){_0x2974a3['list']=_[_0x26ff('0x74')](_0x2e0a26,[_0x26ff('0x9e')]);if(_0x2e0a26['Contacts'][_0x26ff('0x6b')]){return _0x2e0a26[_0x26ff('0x9e')][0x0];}var _0x53679c=_[_0x26ff('0x9f')](_0x2974a3[_0x26ff('0x5e')],{'firstName':_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x9d')],'ListId':_0x2e0a26['id']});_0x53679c[_0x2974a3['body'][_0x26ff('0x9b')]]=_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x9d')];return db['CmContact']['create'](_0x53679c,{'fields':_0xdda614,'raw':!![]});}})[_0x26ff('0x20')](handleEntityNotFound(_0x206907,null))[_0x26ff('0x20')](function(_0x1e1be9){if(_0x1e1be9){_0x2974a3[_0x26ff('0xa0')]=_0x1e1be9;var _0x457b20={'ContactId':_0x1e1be9['id'],'phone':_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x9d')],'WhatsappAccountId':_0x1a59e2['params']['id']};var _0x4a268d={'ContactId':_0x1e1be9['id'],'WhatsappAccountId':_0x1a59e2['params']['id'],'closed':![]};return db[_0x26ff('0xa1')][_0x26ff('0x5c')]({'where':_0x4a268d})[_0x26ff('0x20')](function(_0x250b6f){if(_0x250b6f){return[_0x250b6f,![]];}return db[_0x26ff('0xa1')][_0x26ff('0x5d')](_0x457b20)['then'](function(_0x4973d5){return[_0x4973d5,!![]];});});}})[_0x26ff('0x75')](function(_0x35489f,_0x43ad98){_0x2974a3[_0x26ff('0xa2')]=_0x35489f[_0x26ff('0x39')]({'plain':!![]});_0x2974a3[_0x26ff('0xa2')][_0x26ff('0xa3')]=![];if(_0x43ad98){if(_0x2974a3['account'][_0x26ff('0xa4')]){_0x2974a3[_0x26ff('0x85')]['push']({'id':0x0,'priority':_0x2974a3[_0x26ff('0x85')][_0x26ff('0x6b')]+0x1,'app':_0x26ff('0xa5'),'appdata':_0x26ff('0xa6'),'interval':'*,*,*,*'});}_0x2974a3[_0x26ff('0xa2')][_0x26ff('0xa3')]=!![];}return db[_0x26ff('0xa7')]['create']({'phone':_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x9d')],'messageId':_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x96')],'body':_0x2974a3[_0x26ff('0x5e')][_0x26ff('0x5e')],'WhatsappAccountId':_0x1a59e2[_0x26ff('0x58')]['id'],'WhatsappInteractionId':_0x35489f['id'],'direction':'in','ContactId':_0x35489f[_0x26ff('0xa8')],'AttachmentId':_0x2974a3[_0x26ff('0x5e')][_0x26ff('0xa9')]});})[_0x26ff('0x20')](function(_0x4f68b2){_0x2974a3[_0x26ff('0x29')]=_0x4f68b2;if(_0x2974a3[_0x26ff('0xa2')][_0x26ff('0xaa')]){return db[_0x26ff('0x7a')]['find']({'attributes':['id',_0x26ff('0x3d')],'where':{'id':_0x2974a3[_0x26ff('0xa2')][_0x26ff('0xaa')]}})[_0x26ff('0x20')](function(_0x967996){if(_0x967996){_0x2974a3[_0x26ff('0x85')][_0x26ff('0xab')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x967996[_0x26ff('0x3d')]+','+(_0x2974a3[_0x26ff('0x84')][_0x26ff('0xac')]||0xa),'interval':_0x26ff('0xad')});}return respondWithRpcPromise('Start',_0x26ff('0xae'),_0x2974a3);});}return respondWithRpcPromise(_0x26ff('0xaf'),'startRouting',_0x2974a3);})[_0x26ff('0x20')](function(_0x361999){if(_0x361999){var _0x2998f8=0xc8;var _0x52d933=_0x26ff('0xb0');logger[_0x26ff('0x21')](_0x26ff('0x25'),_0x52d933,_0x2998f8,_0x26ff('0xb1'));logger[_0x26ff('0x24')](_0x26ff('0xb2'),_0x52d933,_0x2998f8,_0x26ff('0xb1'),JSON[_0x26ff('0x26')](_0x361999));if(_0x2974a3['account'][_0x26ff('0x90')]==='twilio'){return _0x206907[_0x26ff('0x2c')](_0x2998f8)[_0x26ff('0x32')]('Content-Type',_0x26ff('0xb3'))[_0x26ff('0x3e')](_0x26ff('0xb4'));}else{return _0x206907[_0x26ff('0x2c')](_0x2998f8)['json'](_0x361999);}}})['catch'](handleError(_0x206907,null));};exports[_0x26ff('0x3e')]=function(_0x203dc9,_0x52e848,_0x4d0afb){var _0x31473d,_0x587666,_0x2620b0;if(_[_0x26ff('0x98')](_0x203dc9[_0x26ff('0x5e')]['body'])||_0x203dc9['body']['body']===''){throw new db[(_0x26ff('0x99'))][(_0x26ff('0x89'))](_0x26ff('0x9a'));}if(_[_0x26ff('0x98')](_0x203dc9[_0x26ff('0x5e')]['to'])){throw new db['Sequelize'][(_0x26ff('0x89'))]('to\x20is\x20mandatory');}_0x31473d=_0x203dc9[_0x26ff('0x5e')]['to'];return db[_0x26ff('0x42')][_0x26ff('0x5c')]({'where':{'id':_0x203dc9[_0x26ff('0x58')]['id']},'include':[{'model':db[_0x26ff('0xb5')],'as':_0x26ff('0xb6'),'include':[{'model':db[_0x26ff('0x88')],'as':'Contacts','where':{'mobile':_0x31473d},'limit':0x1,'order':[[_0x26ff('0x8c'),_0x26ff('0xb7')]]}]}]})[_0x26ff('0x20')](handleEntityNotFound(_0x52e848,null))[_0x26ff('0x20')](function(_0x2b87f){if(_0x2b87f&&_0x2b87f['List']){_0x587666=_0x2b87f[_0x26ff('0x39')]({'plain':!![]});if(_0x587666[_0x26ff('0xb6')]&&_0x587666[_0x26ff('0xb6')][_0x26ff('0x9e')]['length']){return _0x587666['List'][_0x26ff('0x9e')][0x0];}return db[_0x26ff('0x88')][_0x26ff('0x5d')](_[_0x26ff('0x9f')](_0x203dc9['body'],{'firstName':_0x31473d,'mobile':_0x31473d,'phone':_0x31473d,'ListId':_0x587666[_0x26ff('0x8e')]}));}})[_0x26ff('0x20')](handleEntityNotFound(_0x52e848,null))['then'](function(_0x4217a3){if(_0x4217a3){_0x2620b0=_0x4217a3;return db[_0x26ff('0xa1')]['find']({'where':{'ContactId':_0x2620b0['id'],'closed':![],'WhatsappAccountId':_0x587666['id']}})[_0x26ff('0x20')](function(_0xf3621b){if(_0xf3621b){return[_0xf3621b,![]];}return db[_0x26ff('0xa1')][_0x26ff('0x5d')]({'UserId':_0x203dc9['user']['id'],'ContactId':_0x2620b0['id'],'WhatsappAccountId':_0x587666['id'],'phone':_0x31473d,'firstMsgDirection':_0x26ff('0xb8'),'Messages':[_[_0x26ff('0x51')](_0x203dc9[_0x26ff('0x5e')],{'read':![],'body':_0x203dc9[_0x26ff('0x5e')][_0x26ff('0x5e')],'phone':_0x31473d,'WhatsappAccountId':_0x587666['id'],'UserId':_0x203dc9['user']['id'],'ContactId':_0x2620b0['id']})]},{'include':[{'model':db[_0x26ff('0xa7')],'as':'Messages'}]})['then'](function(_0x4db88a){return[_0x4db88a,!![]];});});}})['spread'](function(_0x1761c9,_0x5dce8b){if(_0x5dce8b){return _0x1761c9;}return db['WhatsappMessage']['create'](_[_0x26ff('0x51')](_0x203dc9[_0x26ff('0x5e')],{'read':![],'body':_0x203dc9[_0x26ff('0x5e')]['body'],'phone':_0x31473d,'WhatsappAccountId':_0x587666['id'],'WhatsappInteractionId':_0x1761c9['id'],'UserId':_0x203dc9[_0x26ff('0x5f')]['id'],'ContactId':_0x2620b0['id']}))[_0x26ff('0x20')](function(_0x3d19c0){_0x1761c9[_0x26ff('0xb9')][_0x26ff('0xba')]=[];_0x1761c9[_0x26ff('0xb9')]['Messages'][_0x26ff('0xbb')](_0x3d19c0[_0x26ff('0xb9')]);return _0x1761c9;});})[_0x26ff('0x20')](respondWithResult(_0x52e848,null))['catch'](handleError(_0x52e848,null));};
\ No newline at end of file
+var _0x2544=['jayson/promise','client','http','request','then','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','WhatsappAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','map','WhatsappAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','show','params','mandatoryDispositionPause','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','update','describe','addDisposition','WhatsappAccountId','Disposition','findOne','includeAll','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','findAll','rows','removeAnswers','addAgents','emit','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','account','Applications','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','mobile','from','From','replace','whatsapp:','messageId','MessageSid','from\x20is\x20mandatory','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','Contacts','DESC','list','omit','contact','WhatsappInteraction','spread','interaction','created','push','applications','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','Messages','dataValues','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','localhost','./whatsappAccount.socket','register'];(function(_0x51b40b,_0x500335){var _0xc62221=function(_0x1681f4){while(--_0x1681f4){_0x51b40b['push'](_0x51b40b['shift']());}};_0xc62221(++_0x500335);}(_0x2544,0x14d));var _0x4254=function(_0x2a2d04,_0x2a9d65){_0x2a2d04=_0x2a2d04-0x0;var _0x2f493e=_0x2544[_0x2a2d04];return _0x2f493e;};'use strict';var emlformat=require(_0x4254('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4254('0x1'));var rp=require(_0x4254('0x2'));var moment=require(_0x4254('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4254('0x4'));var util=require(_0x4254('0x5'));var path=require(_0x4254('0x6'));var sox=require(_0x4254('0x7'));var csv=require(_0x4254('0x8'));var ejs=require(_0x4254('0x9'));var fs=require('fs');var fs_extra=require(_0x4254('0xa'));var _=require(_0x4254('0xb'));var squel=require('squel');var crypto=require(_0x4254('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4254('0x8'));var querystring=require('querystring');var Papa=require(_0x4254('0xd'));var Redis=require('ioredis');var authService=require(_0x4254('0xe'));var qs=require(_0x4254('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4254('0x10'));var logger=require('../../config/logger')(_0x4254('0x11'));var utils=require(_0x4254('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x4254('0x13'));var db=require(_0x4254('0x14'))['db'];config['redis']=_[_0x4254('0x15')](config['redis'],{'host':_0x4254('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4254('0x17'))[_0x4254('0x18')](socket);var jayson=require(_0x4254('0x19'));var client=jayson[_0x4254('0x1a')][_0x4254('0x1b')]({'port':0x232c});function respondWithRpcPromise(_0x21518d,_0x4d605f,_0x2712f2,_0x3fee6e){return new BPromise(function(_0x20030f,_0x2456f5){var _0x57d1c5=_0x3fee6e||client;return _0x57d1c5[_0x4254('0x1c')](_0x21518d,_0x2712f2)[_0x4254('0x1d')](function(_0x49a0a2){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x4d605f,_0x4254('0x1e'));logger[_0x4254('0x1f')](_0x4254('0x20'),_0x4d605f,_0x4254('0x1e'),JSON['stringify'](_0x49a0a2));if(_0x49a0a2['error']){if(_0x49a0a2[_0x4254('0x21')][_0x4254('0x22')]===0x1f4){logger[_0x4254('0x21')](_0x4254('0x23'),_0x4d605f,_0x49a0a2['error']['message']);return _0x2456f5(_0x49a0a2['error']['message']);}logger[_0x4254('0x21')](_0x4254('0x23'),_0x4d605f,_0x49a0a2[_0x4254('0x21')][_0x4254('0x24')]);return _0x20030f(_0x49a0a2[_0x4254('0x21')][_0x4254('0x24')]);}else{logger[_0x4254('0x25')](_0x4254('0x23'),_0x4d605f,_0x4254('0x1e'));_0x20030f(_0x49a0a2[_0x4254('0x26')][_0x4254('0x24')]);}})[_0x4254('0x27')](function(_0x54bd7d){logger[_0x4254('0x21')](_0x4254('0x23'),_0x4d605f,_0x54bd7d);_0x2456f5(_0x54bd7d);});});}function respondWithStatusCode(_0x5d2bc9,_0x51f08d){_0x51f08d=_0x51f08d||0xcc;return function(_0x446bb1){if(_0x446bb1){return _0x5d2bc9[_0x4254('0x28')](_0x51f08d);}return _0x5d2bc9[_0x4254('0x29')](_0x51f08d)[_0x4254('0x2a')]();};}function respondWithResult(_0x18ce72,_0x4adbec){_0x4adbec=_0x4adbec||0xc8;return function(_0x119bdd){if(_0x119bdd){return _0x18ce72[_0x4254('0x29')](_0x4adbec)['json'](_0x119bdd);}};}function respondWithFilteredResult(_0x18e482,_0x1e0ff8){return function(_0x2fc34b){if(_0x2fc34b){var _0x23ab0d=typeof _0x1e0ff8['offset']===_0x4254('0x2b')&&typeof _0x1e0ff8[_0x4254('0x2c')]===_0x4254('0x2b');var _0x5a8e73=_0x2fc34b[_0x4254('0x2d')];var _0x22eef8=_0x23ab0d?0x0:_0x1e0ff8[_0x4254('0x2e')];var _0x169e28=_0x23ab0d?_0x2fc34b['count']:_0x1e0ff8['offset']+_0x1e0ff8['limit'];var _0x569605;if(_0x169e28>=_0x5a8e73){_0x169e28=_0x5a8e73;_0x569605=0xc8;}else{_0x569605=0xce;}_0x18e482[_0x4254('0x29')](_0x569605);return _0x18e482[_0x4254('0x2f')](_0x4254('0x30'),_0x22eef8+'-'+_0x169e28+'/'+_0x5a8e73)[_0x4254('0x31')](_0x2fc34b);}return null;};}function patchUpdates(_0x120463){return function(_0x105cfb){try{jsonpatch[_0x4254('0x32')](_0x105cfb,_0x120463,!![]);}catch(_0x457b9e){return BPromise[_0x4254('0x33')](_0x457b9e);}return _0x105cfb['save']();};}function saveUpdates(_0x272527,_0x262876){return function(_0x341f39){if(_0x341f39){return _0x341f39['update'](_0x272527)[_0x4254('0x1d')](function(_0x4f0135){return _0x4f0135;});}return null;};}function removeEntity(_0x2678e8,_0x538c7d){return function(_0x1ae8c9){if(_0x1ae8c9){return _0x1ae8c9[_0x4254('0x34')]()[_0x4254('0x1d')](function(){var _0x512f21=_0x1ae8c9[_0x4254('0x35')]({'plain':!![]});var _0x1f54d4=_0x4254('0x36');return db[_0x4254('0x37')]['destroy']({'where':{'type':_0x1f54d4,'resourceId':_0x512f21['id']}})[_0x4254('0x1d')](function(){return _0x1ae8c9;});})[_0x4254('0x1d')](function(){_0x2678e8[_0x4254('0x29')](0xcc)[_0x4254('0x2a')]();});}};}function handleEntityNotFound(_0x21d0cc,_0x573d09){return function(_0x56ac64){if(!_0x56ac64){_0x21d0cc['sendStatus'](0x194);}return _0x56ac64;};}function handleError(_0x4c06d,_0x44e65e){_0x44e65e=_0x44e65e||0x1f4;return function(_0xd6e864){logger[_0x4254('0x21')](_0xd6e864[_0x4254('0x38')]);if(_0xd6e864['name']){delete _0xd6e864[_0x4254('0x39')];}_0x4c06d[_0x4254('0x29')](_0x44e65e)[_0x4254('0x3a')](_0xd6e864);};}exports[_0x4254('0x3b')]=function(_0x5069c1,_0xa0418){var _0x35f1b6={'include':[{'model':db[_0x4254('0x3c')],'as':'mandatoryDispositionPause'}]},_0x520d2f={},_0x3de483={'count':0x0,'rows':[]};var _0x447424=_[_0x4254('0x3d')](db[_0x4254('0x3e')]['rawAttributes'],function(_0x129f9c){return{'name':_0x129f9c[_0x4254('0x3f')],'type':_0x129f9c[_0x4254('0x40')][_0x4254('0x41')]};});_0x520d2f['model']=_[_0x4254('0x3d')](_0x447424,'name');_0x520d2f[_0x4254('0x42')]=_[_0x4254('0x43')](_0x5069c1['query']);_0x520d2f[_0x4254('0x44')]=_[_0x4254('0x45')](_0x520d2f[_0x4254('0x46')],_0x520d2f[_0x4254('0x42')]);_0x35f1b6[_0x4254('0x47')]=_[_0x4254('0x45')](_0x520d2f[_0x4254('0x46')],qs[_0x4254('0x48')](_0x5069c1['query']['fields']));_0x35f1b6[_0x4254('0x47')]=_0x35f1b6[_0x4254('0x47')][_0x4254('0x49')]?_0x35f1b6[_0x4254('0x47')]:_0x520d2f[_0x4254('0x46')];if(!_0x5069c1[_0x4254('0x42')][_0x4254('0x4a')](_0x4254('0x4b'))){_0x35f1b6[_0x4254('0x2c')]=qs[_0x4254('0x2c')](_0x5069c1['query'][_0x4254('0x2c')]);_0x35f1b6[_0x4254('0x2e')]=qs['offset'](_0x5069c1['query'][_0x4254('0x2e')]);}_0x35f1b6[_0x4254('0x4c')]=qs['sort'](_0x5069c1[_0x4254('0x42')][_0x4254('0x4d')]);_0x35f1b6[_0x4254('0x4e')]=qs[_0x4254('0x44')](_[_0x4254('0x4f')](_0x5069c1['query'],_0x520d2f[_0x4254('0x44')]),_0x447424);if(_0x5069c1['query'][_0x4254('0x50')]){_0x35f1b6['where']=_[_0x4254('0x51')](_0x35f1b6[_0x4254('0x4e')],{'$or':_[_0x4254('0x3d')](_0x447424,function(_0x28743c){if(_0x28743c[_0x4254('0x40')]!=='VIRTUAL'){var _0x3fcb2c={};_0x3fcb2c[_0x28743c['name']]={'$like':'%'+_0x5069c1[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x3fcb2c;}})});}_0x35f1b6=_[_0x4254('0x51')]({},_0x35f1b6,_0x5069c1[_0x4254('0x52')]);var _0x2f63a8={'where':_0x35f1b6[_0x4254('0x4e')]};return db[_0x4254('0x3e')][_0x4254('0x2d')](_0x2f63a8)[_0x4254('0x1d')](function(_0xc3afd8){_0x3de483[_0x4254('0x2d')]=_0xc3afd8;if(_0x5069c1['query']['includeAll']){_0x35f1b6[_0x4254('0x53')]=[{'all':!![]}];}return db[_0x4254('0x3e')]['findAll'](_0x35f1b6);})['then'](function(_0x26f7ea){_0x3de483['rows']=_0x26f7ea;return _0x3de483;})[_0x4254('0x1d')](respondWithFilteredResult(_0xa0418,_0x35f1b6))[_0x4254('0x27')](handleError(_0xa0418,null));};exports[_0x4254('0x54')]=function(_0x372600,_0x28d26e){var _0x51c8cd={'raw':![],'where':{'id':_0x372600[_0x4254('0x55')]['id']},'include':[{'model':db[_0x4254('0x3c')],'as':_0x4254('0x56')}]},_0x5d41ca={};_0x5d41ca[_0x4254('0x46')]=_[_0x4254('0x43')](db['WhatsappAccount'][_0x4254('0x57')]);_0x5d41ca[_0x4254('0x42')]=_['keys'](_0x372600[_0x4254('0x42')]);_0x5d41ca['filters']=_['intersection'](_0x5d41ca[_0x4254('0x46')],_0x5d41ca[_0x4254('0x42')]);_0x51c8cd['attributes']=_['intersection'](_0x5d41ca['model'],qs[_0x4254('0x48')](_0x372600['query'][_0x4254('0x48')]));_0x51c8cd['attributes']=_0x51c8cd[_0x4254('0x47')][_0x4254('0x49')]?_0x51c8cd[_0x4254('0x47')]:_0x5d41ca[_0x4254('0x46')];if(_0x372600['query']['includeAll']){_0x51c8cd['include']=[{'all':!![]}];}_0x51c8cd=_[_0x4254('0x51')]({},_0x51c8cd,_0x372600[_0x4254('0x52')]);return db[_0x4254('0x3e')][_0x4254('0x58')](_0x51c8cd)['then'](handleEntityNotFound(_0x28d26e,null))[_0x4254('0x1d')](respondWithResult(_0x28d26e,null))[_0x4254('0x27')](handleError(_0x28d26e,null));};exports[_0x4254('0x59')]=function(_0xe53fbe,_0x2534b9){return db[_0x4254('0x3e')]['create'](_0xe53fbe[_0x4254('0x5a')],{})['then'](function(_0x4e1c43){var _0x25875c=_0xe53fbe['user'][_0x4254('0x35')]({'plain':!![]});if(!_0x25875c)throw new Error(_0x4254('0x5b'));if(_0x25875c['role']===_0x4254('0x5c')){var _0x78d3b8=_0x4e1c43[_0x4254('0x35')]({'plain':!![]});var _0x45ac8c='WhatsappAccounts';return db['UserProfileSection'][_0x4254('0x58')]({'where':{'name':_0x45ac8c,'userProfileId':_0x25875c[_0x4254('0x5d')]},'raw':!![]})[_0x4254('0x1d')](function(_0x569fb8){if(_0x569fb8&&_0x569fb8[_0x4254('0x5e')]===0x0){return db['UserProfileResource'][_0x4254('0x59')]({'name':_0x78d3b8[_0x4254('0x39')],'resourceId':_0x78d3b8['id'],'type':_0x569fb8[_0x4254('0x39')],'sectionId':_0x569fb8['id']},{})[_0x4254('0x1d')](function(){return _0x4e1c43;});}else{return _0x4e1c43;}})['catch'](function(_0x1c3163){logger[_0x4254('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1c3163);throw _0x1c3163;});}return _0x4e1c43;})['then'](respondWithResult(_0x2534b9,0xc9))[_0x4254('0x27')](handleError(_0x2534b9,null));};exports[_0x4254('0x5f')]=function(_0x2fefe1,_0x14becb){if(_0x2fefe1[_0x4254('0x5a')]['id']){delete _0x2fefe1[_0x4254('0x5a')]['id'];}return db[_0x4254('0x3e')]['find']({'where':{'id':_0x2fefe1[_0x4254('0x55')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x4254('0x1d')](handleEntityNotFound(_0x14becb,null))[_0x4254('0x1d')](saveUpdates(_0x2fefe1[_0x4254('0x5a')],null))['then'](respondWithResult(_0x14becb,null))['catch'](handleError(_0x14becb,null));};exports[_0x4254('0x34')]=function(_0x3f17b2,_0x9c8581){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x3f17b2[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x9c8581,null))[_0x4254('0x1d')](removeEntity(_0x9c8581,null))['catch'](handleError(_0x9c8581,null));};exports[_0x4254('0x60')]=function(_0x427d9d,_0x28b2aa){return db[_0x4254('0x3e')][_0x4254('0x60')]()[_0x4254('0x1d')](respondWithResult(_0x28b2aa,null))[_0x4254('0x27')](handleError(_0x28b2aa,null));};exports[_0x4254('0x61')]=function(_0x4a1e4e,_0x44d5ed,_0x3bc208){if(_0x4a1e4e[_0x4254('0x5a')]['id']){delete _0x4a1e4e['body']['id'];}return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x4a1e4e[_0x4254('0x55')]['id']}})['then'](handleEntityNotFound(_0x44d5ed,null))[_0x4254('0x1d')](function(_0xea2142){if(_0xea2142){_0x4a1e4e[_0x4254('0x5a')][_0x4254('0x62')]=_0xea2142['id'];return db[_0x4254('0x63')]['create'](_0x4a1e4e['body']);}})[_0x4254('0x1d')](respondWithResult(_0x44d5ed,null))[_0x4254('0x27')](handleError(_0x44d5ed,null));};exports['getDispositions']=function(_0x347198,_0x643d83,_0x42b17c){var _0x1b266c={'raw':![],'where':{}};var _0x8e4aae={};var _0x27b9c8={'count':0x0,'rows':[]};return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x347198[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x643d83,null))[_0x4254('0x1d')](function(_0x31ccb8){if(_0x31ccb8){_0x8e4aae[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x63')][_0x4254('0x57')]);_0x8e4aae[_0x4254('0x42')]=_[_0x4254('0x43')](_0x347198[_0x4254('0x42')]);_0x8e4aae[_0x4254('0x44')]=_['intersection'](_0x8e4aae[_0x4254('0x46')],_0x8e4aae[_0x4254('0x42')]);_0x1b266c[_0x4254('0x47')]=_[_0x4254('0x45')](_0x8e4aae[_0x4254('0x46')],qs[_0x4254('0x48')](_0x347198[_0x4254('0x42')][_0x4254('0x48')]));_0x1b266c['attributes']=_0x1b266c[_0x4254('0x47')]['length']?_0x1b266c['attributes']:_0x8e4aae[_0x4254('0x46')];if(!_0x347198[_0x4254('0x42')][_0x4254('0x4a')](_0x4254('0x4b'))){_0x1b266c[_0x4254('0x2c')]=qs['limit'](_0x347198[_0x4254('0x42')]['limit']);_0x1b266c[_0x4254('0x2e')]=qs[_0x4254('0x2e')](_0x347198[_0x4254('0x42')]['offset']);}_0x1b266c['order']=qs['sort'](_0x347198[_0x4254('0x42')][_0x4254('0x4d')]);_0x1b266c['where']=qs['filters'](_['pick'](_0x347198[_0x4254('0x42')],_0x8e4aae[_0x4254('0x44')]));_0x1b266c['where'][_0x4254('0x62')]=_0x31ccb8['id'];if(_0x347198[_0x4254('0x42')][_0x4254('0x50')]){_0x1b266c['where']=_[_0x4254('0x51')](_0x1b266c[_0x4254('0x4e')],{'$or':_[_0x4254('0x3d')](_0x1b266c['attributes'],function(_0x3f1eaf){var _0x11371d={};_0x11371d[_0x3f1eaf]={'$like':'%'+_0x347198[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x11371d;})});}_0x1b266c=_[_0x4254('0x51')]({},_0x1b266c,_0x347198[_0x4254('0x52')]);return db['Disposition'][_0x4254('0x2d')]({'where':_0x1b266c[_0x4254('0x4e')]})['then'](function(_0x1da05){_0x27b9c8[_0x4254('0x2d')]=_0x1da05;if(_0x347198[_0x4254('0x42')][_0x4254('0x65')]){_0x1b266c['include']=[{'all':!![]}];}return db[_0x4254('0x63')]['findAll'](_0x1b266c);})['then'](function(_0x3face5){_0x27b9c8['rows']=_0x3face5;return _0x27b9c8;});}})[_0x4254('0x1d')](respondWithFilteredResult(_0x643d83,_0x1b266c))[_0x4254('0x27')](handleError(_0x643d83,null));};exports['removeDispositions']=function(_0x3db3fa,_0x3c494d,_0x55c68a){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x3db3fa[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x3c494d,null))[_0x4254('0x1d')](function(_0x5e17f4){if(_0x5e17f4){return _0x5e17f4[_0x4254('0x66')](_0x3db3fa[_0x4254('0x42')][_0x4254('0x67')]);}})[_0x4254('0x1d')](respondWithStatusCode(_0x3c494d,null))[_0x4254('0x27')](handleError(_0x3c494d,null));};exports[_0x4254('0x68')]=function(_0x55fcf9,_0x17720a,_0x34db05){if(_0x55fcf9['body']['id']){delete _0x55fcf9['body']['id'];}return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x55fcf9['params']['id']}})['then'](handleEntityNotFound(_0x17720a,null))[_0x4254('0x1d')](function(_0x4daeb7){if(_0x4daeb7){_0x55fcf9[_0x4254('0x5a')][_0x4254('0x62')]=_0x4daeb7['id'];return db['CannedAnswer']['create'](_0x55fcf9[_0x4254('0x5a')]);}})['then'](respondWithResult(_0x17720a,null))[_0x4254('0x27')](handleError(_0x17720a,null));};exports[_0x4254('0x69')]=function(_0x20668d,_0x228d19,_0x25ed37){var _0x2441f3={'raw':![],'where':{}};var _0x1d1f32={};var _0x47834c={'count':0x0,'rows':[]};return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x20668d[_0x4254('0x55')]['id']}})['then'](handleEntityNotFound(_0x228d19,null))[_0x4254('0x1d')](function(_0xb3993f){if(_0xb3993f){_0x1d1f32[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x6a')]['rawAttributes']);_0x1d1f32[_0x4254('0x42')]=_['keys'](_0x20668d[_0x4254('0x42')]);_0x1d1f32[_0x4254('0x44')]=_[_0x4254('0x45')](_0x1d1f32[_0x4254('0x46')],_0x1d1f32['query']);_0x2441f3[_0x4254('0x47')]=_[_0x4254('0x45')](_0x1d1f32[_0x4254('0x46')],qs['fields'](_0x20668d[_0x4254('0x42')][_0x4254('0x48')]));_0x2441f3['attributes']=_0x2441f3[_0x4254('0x47')][_0x4254('0x49')]?_0x2441f3[_0x4254('0x47')]:_0x1d1f32[_0x4254('0x46')];if(!_0x20668d['query'][_0x4254('0x4a')]('nolimit')){_0x2441f3[_0x4254('0x2c')]=qs[_0x4254('0x2c')](_0x20668d[_0x4254('0x42')]['limit']);_0x2441f3[_0x4254('0x2e')]=qs[_0x4254('0x2e')](_0x20668d[_0x4254('0x42')]['offset']);}_0x2441f3[_0x4254('0x4c')]=qs[_0x4254('0x4d')](_0x20668d[_0x4254('0x42')][_0x4254('0x4d')]);_0x2441f3[_0x4254('0x4e')]=qs[_0x4254('0x44')](_[_0x4254('0x4f')](_0x20668d[_0x4254('0x42')],_0x1d1f32[_0x4254('0x44')]));_0x2441f3[_0x4254('0x4e')][_0x4254('0x62')]=_0xb3993f['id'];if(_0x20668d[_0x4254('0x42')]['filter']){_0x2441f3[_0x4254('0x4e')]=_[_0x4254('0x51')](_0x2441f3['where'],{'$or':_[_0x4254('0x3d')](_0x2441f3['attributes'],function(_0x177450){var _0x1cfaba={};_0x1cfaba[_0x177450]={'$like':'%'+_0x20668d[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x1cfaba;})});}_0x2441f3=_[_0x4254('0x51')]({},_0x2441f3,_0x20668d[_0x4254('0x52')]);return db[_0x4254('0x6a')][_0x4254('0x2d')]({'where':_0x2441f3[_0x4254('0x4e')]})[_0x4254('0x1d')](function(_0x13abef){_0x47834c['count']=_0x13abef;if(_0x20668d[_0x4254('0x42')]['includeAll']){_0x2441f3[_0x4254('0x53')]=[{'all':!![]}];}return db[_0x4254('0x6a')][_0x4254('0x6b')](_0x2441f3);})[_0x4254('0x1d')](function(_0x3a5035){_0x47834c[_0x4254('0x6c')]=_0x3a5035;return _0x47834c;});}})[_0x4254('0x1d')](respondWithFilteredResult(_0x228d19,_0x2441f3))['catch'](handleError(_0x228d19,null));};exports[_0x4254('0x6d')]=function(_0x458b10,_0x15ccdc,_0x8f94dc){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x458b10['params']['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x15ccdc,null))['then'](function(_0x2366ef){if(_0x2366ef){return _0x2366ef['removeAnswers'](_0x458b10[_0x4254('0x42')][_0x4254('0x67')]);}})[_0x4254('0x1d')](respondWithStatusCode(_0x15ccdc,null))['catch'](handleError(_0x15ccdc,null));};exports[_0x4254('0x6e')]=function(_0x1000e8,_0x252ad0,_0x1fd375){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x1000e8[_0x4254('0x55')]['id']}})['then'](handleEntityNotFound(_0x252ad0,null))[_0x4254('0x1d')](function(_0x54276a){if(_0x54276a){return _0x54276a[_0x4254('0x6e')](_0x1000e8[_0x4254('0x5a')][_0x4254('0x67')],_['omit'](_0x1000e8[_0x4254('0x5a')],[_0x4254('0x67'),'id'])||{})['spread'](function(_0x3bb76b){for(var _0x322ff2=0x0;_0x322ff2<_0x1000e8[_0x4254('0x5a')][_0x4254('0x67')][_0x4254('0x49')];_0x322ff2+=0x1){socket[_0x4254('0x6f')]('userWhatsappAccount:save',{'UserId':Number(_0x1000e8[_0x4254('0x5a')][_0x4254('0x67')][_0x322ff2]),'WhatsappAccountId':Number(_0x1000e8[_0x4254('0x55')]['id'])});}return _0x3bb76b;});}})[_0x4254('0x1d')](respondWithResult(_0x252ad0,null))[_0x4254('0x27')](handleError(_0x252ad0,null));};exports[_0x4254('0x70')]=function(_0x1ebee9,_0x1c1f3e,_0xe99cf3){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x1ebee9[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x1c1f3e,null))[_0x4254('0x1d')](function(_0x59f58c){if(_0x59f58c){return _0x59f58c['removeAgents'](_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')])['then'](function(){if(_[_0x4254('0x71')](_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')])){for(var _0x13254b=0x0;_0x13254b<_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')][_0x4254('0x49')];_0x13254b+=0x1){socket[_0x4254('0x6f')]('userWhatsappAccount:remove',{'UserId':Number(_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')][_0x13254b]),'WhatsappAccountId':Number(_0x1ebee9[_0x4254('0x55')]['id'])});}}else{socket['emit'](_0x4254('0x72'),{'UserId':Number(_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')]),'WhatsappAccountId':Number(_0x1ebee9[_0x4254('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x1c1f3e,null))[_0x4254('0x27')](handleError(_0x1c1f3e,null));};exports[_0x4254('0x73')]=function(_0xfc234f,_0x50a25e,_0x5c6da2){var _0x4afe85={};var _0x21e1aa={};var _0x47e594;var _0x1844ae;return db['WhatsappAccount']['findOne']({'where':{'id':_0xfc234f[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x50a25e,null))['then'](function(_0x3b0140){if(_0x3b0140){_0x47e594=_0x3b0140;_0x21e1aa[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x74')]['rawAttributes']);_0x21e1aa['query']=_[_0x4254('0x43')](_0xfc234f[_0x4254('0x42')]);_0x21e1aa['filters']=_[_0x4254('0x45')](_0x21e1aa['model'],_0x21e1aa[_0x4254('0x42')]);_0x4afe85[_0x4254('0x47')]=_[_0x4254('0x45')](_0x21e1aa[_0x4254('0x46')],qs[_0x4254('0x48')](_0xfc234f['query'][_0x4254('0x48')]));_0x4afe85[_0x4254('0x47')]=_0x4afe85['attributes'][_0x4254('0x49')]?_0x4afe85[_0x4254('0x47')]:_0x21e1aa['model'];_0x4afe85[_0x4254('0x4c')]=qs[_0x4254('0x4d')](_0xfc234f[_0x4254('0x42')][_0x4254('0x4d')]);_0x4afe85['where']=qs['filters'](_[_0x4254('0x4f')](_0xfc234f[_0x4254('0x42')],_0x21e1aa[_0x4254('0x44')]));if(_0xfc234f['query']['filter']){_0x4afe85[_0x4254('0x4e')]=_[_0x4254('0x51')](_0x4afe85[_0x4254('0x4e')],{'$or':_[_0x4254('0x3d')](_0x4afe85['attributes'],function(_0x2e2dc7){var _0x53ab35={};_0x53ab35[_0x2e2dc7]={'$like':'%'+_0xfc234f[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x53ab35;})});}_0x4afe85=_[_0x4254('0x51')]({},_0x4afe85,_0xfc234f['options']);return _0x47e594[_0x4254('0x73')](_0x4afe85);}})[_0x4254('0x1d')](function(_0x3da6ec){if(_0x3da6ec){_0x1844ae=_0x3da6ec[_0x4254('0x49')];if(!_0xfc234f[_0x4254('0x42')]['hasOwnProperty'](_0x4254('0x4b'))){_0x4afe85['limit']=qs['limit'](_0xfc234f[_0x4254('0x42')]['limit']);_0x4afe85[_0x4254('0x2e')]=qs['offset'](_0xfc234f['query']['offset']);}return _0x47e594[_0x4254('0x73')](_0x4afe85);}})[_0x4254('0x1d')](function(_0x560df5){if(_0x560df5){return _0x560df5?{'count':_0x1844ae,'rows':_0x560df5}:null;}})[_0x4254('0x1d')](respondWithResult(_0x50a25e,null))[_0x4254('0x27')](handleError(_0x50a25e,null));};exports[_0x4254('0x75')]=function(_0x5444a1,_0x5e4f88,_0x31aa06){return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x5444a1[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x5e4f88,null))[_0x4254('0x1d')](function(_0x29cb82){if(_0x29cb82){return db['sequelize'][_0x4254('0x76')](function(_0x5495f3){return db['WhatsappApplication'][_0x4254('0x34')]({'where':{'WhatsappAccountId':_0x5444a1['params']['id']},'transaction':_0x5495f3})[_0x4254('0x1d')](function(_0x4ecbe3){var _0x423054=_['map'](_0x5444a1[_0x4254('0x5a')],function(_0x46d4a5){_0x46d4a5[_0x4254('0x62')]=_0x5444a1[_0x4254('0x55')]['id'];return _0x46d4a5;});return db[_0x4254('0x77')][_0x4254('0x78')](_0x423054,{'transaction':_0x5495f3});});})[_0x4254('0x1d')](function(){return db['WhatsappApplication'][_0x4254('0x79')]({'where':{'WhatsappAccountId':_0x5444a1[_0x4254('0x55')]['id']},'order':_0x4254('0x7a')});});}})[_0x4254('0x1d')](respondWithResult(_0x5e4f88,null))[_0x4254('0x27')](handleError(_0x5e4f88,null));};exports['getApplications']=function(_0x28a774,_0x46681e,_0x5a681e){var _0x3d187d={};var _0x4dc605={};var _0x5331c9;var _0x1a64b3;return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x28a774['params']['id']}})['then'](handleEntityNotFound(_0x46681e,null))[_0x4254('0x1d')](function(_0x1db58c){if(_0x1db58c){_0x5331c9=_0x1db58c;_0x4dc605[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x77')][_0x4254('0x57')]);_0x4dc605[_0x4254('0x42')]=_['keys'](_0x28a774[_0x4254('0x42')]);_0x4dc605[_0x4254('0x44')]=_[_0x4254('0x45')](_0x4dc605[_0x4254('0x46')],_0x4dc605['query']);_0x3d187d[_0x4254('0x47')]=_[_0x4254('0x45')](_0x4dc605['model'],qs['fields'](_0x28a774['query'][_0x4254('0x48')]));_0x3d187d[_0x4254('0x47')]=_0x3d187d[_0x4254('0x47')][_0x4254('0x49')]?_0x3d187d['attributes']:_0x4dc605[_0x4254('0x46')];_0x3d187d[_0x4254('0x4c')]=qs[_0x4254('0x4d')](_0x28a774['query'][_0x4254('0x4d')]);_0x3d187d[_0x4254('0x4e')]=qs[_0x4254('0x44')](_[_0x4254('0x4f')](_0x28a774[_0x4254('0x42')],_0x4dc605['filters']));if(_0x28a774[_0x4254('0x42')][_0x4254('0x50')]){_0x3d187d[_0x4254('0x4e')]=_['merge'](_0x3d187d[_0x4254('0x4e')],{'$or':_['map'](_0x3d187d[_0x4254('0x47')],function(_0x185935){var _0x1246a4={};_0x1246a4[_0x185935]={'$like':'%'+_0x28a774['query'][_0x4254('0x50')]+'%'};return _0x1246a4;})});}_0x3d187d=_[_0x4254('0x51')]({},_0x3d187d,_0x28a774[_0x4254('0x52')]);return _0x5331c9[_0x4254('0x7b')](_0x3d187d);}})[_0x4254('0x1d')](function(_0x6d51fa){if(_0x6d51fa){_0x1a64b3=_0x6d51fa[_0x4254('0x49')];if(!_0x28a774[_0x4254('0x42')][_0x4254('0x4a')](_0x4254('0x4b'))){_0x3d187d[_0x4254('0x2c')]=qs['limit'](_0x28a774['query']['limit']);_0x3d187d['offset']=qs[_0x4254('0x2e')](_0x28a774[_0x4254('0x42')][_0x4254('0x2e')]);}return _0x5331c9['getApplications'](_0x3d187d);}})[_0x4254('0x1d')](function(_0x2a69e4){if(_0x2a69e4){return _0x2a69e4?{'count':_0x1a64b3,'rows':_0x2a69e4}:null;}})[_0x4254('0x1d')](respondWithResult(_0x46681e,null))[_0x4254('0x27')](handleError(_0x46681e,null));};exports[_0x4254('0x7c')]=function(_0x1097d2,_0x262781,_0x55c457){var _0x414dc9={'channel':'whatsapp'};var _0x1a47ae=[];var _0x1abf46=[];var _0x1a77e3={};return db['WhatsappAccount'][_0x4254('0x58')]({'where':{'id':_0x1097d2[_0x4254('0x55')]['id']},'include':[{'model':db[_0x4254('0x77')],'as':'Applications'}]})[_0x4254('0x1d')](handleEntityNotFound(_0x262781,null))[_0x4254('0x1d')](function(_0x413883){_0x414dc9[_0x4254('0x7d')]=_0x413883;_0x414dc9['applications']=_['orderBy'](_0x413883[_0x4254('0x7e')],[_0x4254('0x7a')],['asc']);if(_0x414dc9[_0x4254('0x7d')]['Applications']){delete _0x414dc9[_0x4254('0x7d')][_0x4254('0x7e')];}return db[_0x4254('0x7f')][_0x4254('0x60')]();})[_0x4254('0x1d')](function(_0x5488f7){if(!_0x5488f7){throw new db['Sequelize'][(_0x4254('0x80'))](_0x4254('0x81'));}_0x1a47ae=_['difference'](_[_0x4254('0x43')](_0x5488f7),[_0x4254('0x82'),_0x4254('0x83')]);_0x1abf46=_[_0x4254('0x84')](_[_0x4254('0x43')](_0x5488f7),['createdAt',_0x4254('0x83'),_0x4254('0x85'),_0x4254('0x86')]);_0x414dc9[_0x4254('0x5a')]={'mapKey':_0x4254('0x87')};if(_0x414dc9[_0x4254('0x7d')][_0x4254('0x40')]&&_0x414dc9[_0x4254('0x7d')][_0x4254('0x40')]==='twilio'){_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')]=_0x1097d2[_0x4254('0x5a')][_0x4254('0x89')][_0x4254('0x8a')](_0x4254('0x8b'),'');_0x414dc9[_0x4254('0x5a')][_0x4254('0x5a')]=_0x1097d2[_0x4254('0x5a')]['Body'];_0x414dc9[_0x4254('0x5a')][_0x4254('0x8c')]=_0x1097d2['body'][_0x4254('0x8d')];}if(_0x414dc9['body']['id']){delete _0x414dc9['body']['id'];}if(_['isNil'](_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')])){throw new db['Sequelize']['ValidationError'](_0x4254('0x8e'));}if(_['isNil'](_0x414dc9[_0x4254('0x5a')][_0x4254('0x5a')])||_0x414dc9['body']['body']===''){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0x90'));}if(_[_0x4254('0x91')](_0x414dc9[_0x4254('0x5a')]['mapKey'])){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0x92')+_0x1abf46);}if(!_[_0x4254('0x93')](_0x1abf46,_0x414dc9[_0x4254('0x5a')][_0x4254('0x94')])){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1abf46);}_0x1a77e3[_0x414dc9['body'][_0x4254('0x94')]]=_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')];return db['CmList'][_0x4254('0x58')]({'where':{'id':_0x414dc9[_0x4254('0x7d')]['ListId']},'include':[{'model':db[_0x4254('0x7f')],'as':_0x4254('0x95'),'where':_0x1a77e3,'limit':0x1,'order':[['updatedAt',_0x4254('0x96')]]}]});})[_0x4254('0x1d')](handleEntityNotFound(_0x262781,null))['then'](function(_0xef0848){if(_0xef0848){_0x414dc9[_0x4254('0x97')]=_[_0x4254('0x98')](_0xef0848,[_0x4254('0x95')]);if(_0xef0848[_0x4254('0x95')][_0x4254('0x49')]){return _0xef0848['Contacts'][0x0];}var _0x4db76f=_['defaults'](_0x414dc9['body'],{'firstName':_0x414dc9[_0x4254('0x5a')]['from'],'ListId':_0xef0848['id']});_0x4db76f[_0x414dc9[_0x4254('0x5a')][_0x4254('0x94')]]=_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')];return db[_0x4254('0x7f')][_0x4254('0x59')](_0x4db76f,{'fields':_0x1a47ae,'raw':!![]});}})[_0x4254('0x1d')](handleEntityNotFound(_0x262781,null))['then'](function(_0x2f5eec){if(_0x2f5eec){_0x414dc9[_0x4254('0x99')]=_0x2f5eec;var _0x9efa5d={'ContactId':_0x2f5eec['id'],'phone':_0x414dc9[_0x4254('0x5a')]['from'],'WhatsappAccountId':_0x1097d2[_0x4254('0x55')]['id']};var _0x3bacc3={'ContactId':_0x2f5eec['id'],'WhatsappAccountId':_0x1097d2['params']['id'],'closed':![]};return db[_0x4254('0x9a')][_0x4254('0x58')]({'where':_0x3bacc3})['then'](function(_0x372918){if(_0x372918){return[_0x372918,![]];}return db[_0x4254('0x9a')]['create'](_0x9efa5d)[_0x4254('0x1d')](function(_0x42ea39){return[_0x42ea39,!![]];});});}})[_0x4254('0x9b')](function(_0x57910c,_0x27b91d){_0x414dc9[_0x4254('0x9c')]=_0x57910c['get']({'plain':!![]});_0x414dc9['interaction'][_0x4254('0x9d')]=![];if(_0x27b91d){if(_0x414dc9['account']['autoclose']){_0x414dc9['applications'][_0x4254('0x9e')]({'id':0x0,'priority':_0x414dc9[_0x4254('0x9f')][_0x4254('0x49')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x4254('0xa0')});}_0x414dc9[_0x4254('0x9c')][_0x4254('0x9d')]=!![];}return db[_0x4254('0xa1')][_0x4254('0x59')]({'phone':_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')],'messageId':_0x414dc9['body']['messageId'],'body':_0x414dc9['body'][_0x4254('0x5a')],'WhatsappAccountId':_0x1097d2['params']['id'],'WhatsappInteractionId':_0x57910c['id'],'direction':'in','ContactId':_0x57910c[_0x4254('0xa2')],'AttachmentId':_0x414dc9[_0x4254('0x5a')][_0x4254('0xa3')]});})[_0x4254('0x1d')](function(_0x26b309){_0x414dc9[_0x4254('0x24')]=_0x26b309;if(_0x414dc9[_0x4254('0x9c')][_0x4254('0xa4')]){return db[_0x4254('0x74')][_0x4254('0x58')]({'attributes':['id',_0x4254('0x39')],'where':{'id':_0x414dc9['interaction']['UserId']}})['then'](function(_0x58e135){if(_0x58e135){_0x414dc9[_0x4254('0x9f')]['unshift']({'id':0x0,'priority':0x0,'app':_0x4254('0xa5'),'appdata':_0x58e135[_0x4254('0x39')]+','+(_0x414dc9[_0x4254('0x7d')][_0x4254('0xa6')]||0xa),'interval':_0x4254('0xa0')});}return respondWithRpcPromise(_0x4254('0xa7'),_0x4254('0xa8'),_0x414dc9);});}return respondWithRpcPromise(_0x4254('0xa7'),_0x4254('0xa8'),_0x414dc9);})[_0x4254('0x1d')](function(_0x20c430){if(_0x20c430){var _0x4da505=0xc8;var _0x947896=_0x4254('0xa9');logger[_0x4254('0x25')](_0x4254('0x20'),_0x947896,_0x4da505,_0x4254('0xaa'));logger[_0x4254('0x1f')](_0x4254('0xab'),_0x947896,_0x4da505,'entity\x20found',JSON[_0x4254('0xac')](_0x20c430));if(_0x414dc9[_0x4254('0x7d')][_0x4254('0x40')]==='twilio'){return _0x262781['status'](_0x4da505)['set'](_0x4254('0xad'),'text/xml')[_0x4254('0x3a')](_0x4254('0xae'));}else{return _0x262781[_0x4254('0x29')](_0x4da505)[_0x4254('0x31')](_0x20c430);}}})[_0x4254('0x27')](handleError(_0x262781,null));};exports[_0x4254('0x3a')]=function(_0x5e1cdd,_0x46c0a1,_0x3140a1){var _0x522067,_0x2c9a00,_0x24a5b3;if(_['isNil'](_0x5e1cdd['body'][_0x4254('0x5a')])||_0x5e1cdd[_0x4254('0x5a')][_0x4254('0x5a')]===''){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0x90'));}if(_[_0x4254('0x91')](_0x5e1cdd[_0x4254('0x5a')]['to'])){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0xaf'));}_0x522067=_0x5e1cdd[_0x4254('0x5a')]['to'];return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x5e1cdd[_0x4254('0x55')]['id']},'include':[{'model':db['CmList'],'as':_0x4254('0xb0'),'include':[{'model':db[_0x4254('0x7f')],'as':_0x4254('0x95'),'where':{'mobile':_0x522067},'limit':0x1,'order':[[_0x4254('0x83'),'DESC']]}]}]})[_0x4254('0x1d')](handleEntityNotFound(_0x46c0a1,null))[_0x4254('0x1d')](function(_0x2a8e8b){if(_0x2a8e8b&&_0x2a8e8b['List']){_0x2c9a00=_0x2a8e8b[_0x4254('0x35')]({'plain':!![]});if(_0x2c9a00[_0x4254('0xb0')]&&_0x2c9a00[_0x4254('0xb0')][_0x4254('0x95')][_0x4254('0x49')]){return _0x2c9a00[_0x4254('0xb0')][_0x4254('0x95')][0x0];}return db[_0x4254('0x7f')]['create'](_[_0x4254('0x15')](_0x5e1cdd['body'],{'firstName':_0x522067,'mobile':_0x522067,'phone':_0x522067,'ListId':_0x2c9a00[_0x4254('0x86')]}));}})[_0x4254('0x1d')](handleEntityNotFound(_0x46c0a1,null))[_0x4254('0x1d')](function(_0x27d612){if(_0x27d612){_0x24a5b3=_0x27d612;return db[_0x4254('0x9a')][_0x4254('0x58')]({'where':{'ContactId':_0x24a5b3['id'],'closed':![],'WhatsappAccountId':_0x2c9a00['id']}})['then'](function(_0x467ce1){if(_0x467ce1){return[_0x467ce1,![]];}return db[_0x4254('0x9a')][_0x4254('0x59')]({'UserId':_0x5e1cdd[_0x4254('0x5c')]['id'],'ContactId':_0x24a5b3['id'],'WhatsappAccountId':_0x2c9a00['id'],'phone':_0x522067,'firstMsgDirection':'out','Messages':[_[_0x4254('0x51')](_0x5e1cdd[_0x4254('0x5a')],{'read':![],'body':_0x5e1cdd[_0x4254('0x5a')][_0x4254('0x5a')],'phone':_0x522067,'WhatsappAccountId':_0x2c9a00['id'],'UserId':_0x5e1cdd[_0x4254('0x5c')]['id'],'ContactId':_0x24a5b3['id']})]},{'include':[{'model':db[_0x4254('0xa1')],'as':_0x4254('0xb1')}]})[_0x4254('0x1d')](function(_0x47c831){return[_0x47c831,!![]];});});}})[_0x4254('0x9b')](function(_0x3ec42d,_0x215305){if(_0x215305){return _0x3ec42d;}return db[_0x4254('0xa1')][_0x4254('0x59')](_[_0x4254('0x51')](_0x5e1cdd[_0x4254('0x5a')],{'read':![],'body':_0x5e1cdd[_0x4254('0x5a')][_0x4254('0x5a')],'phone':_0x522067,'WhatsappAccountId':_0x2c9a00['id'],'WhatsappInteractionId':_0x3ec42d['id'],'UserId':_0x5e1cdd['user']['id'],'ContactId':_0x24a5b3['id']}))[_0x4254('0x1d')](function(_0x351b06){_0x3ec42d[_0x4254('0xb2')]['Messages']=[];_0x3ec42d[_0x4254('0xb2')][_0x4254('0xb1')][_0x4254('0x9e')](_0x351b06[_0x4254('0xb2')]);return _0x3ec42d;});})[_0x4254('0x1d')](respondWithResult(_0x46c0a1,null))['catch'](handleError(_0x46c0a1,null));};
\ No newline at end of file
index a7950de..2154c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69cb=['emit','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners','remove'];(function(_0x5819fb,_0x47943a){var _0x79c3c1=function(_0x3d9d11){while(--_0x3d9d11){_0x5819fb['push'](_0x5819fb['shift']());}};_0x79c3c1(++_0x47943a);}(_0x69cb,0x183));var _0xb69c=function(_0x105a8e,_0x12dd9a){_0x105a8e=_0x105a8e-0x0;var _0x298729=_0x69cb[_0x105a8e];return _0x298729;};'use strict';var EventEmitter=require(_0xb69c('0x0'));var WhatsappAccount=require(_0xb69c('0x1'))['db'][_0xb69c('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xb69c('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xb69c('0x4')};function emitEvent(_0x55b2bb){return function(_0x18f6e0,_0x526bcd,_0x297f55){WhatsappAccountEvents[_0xb69c('0x5')](_0x55b2bb+':'+_0x18f6e0['id'],_0x18f6e0);WhatsappAccountEvents['emit'](_0x55b2bb,_0x18f6e0);_0x297f55(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0xb69c('0x6')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x16e7=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x1252d9,_0xb59816){var _0x76c018=function(_0x52e72c){while(--_0x52e72c){_0x1252d9['push'](_0x1252d9['shift']());}};_0x76c018(++_0xb59816);}(_0x16e7,0x14e));var _0x716e=function(_0x582691,_0x2f2f7f){_0x582691=_0x582691-0x0;var _0x3a00b9=_0x16e7[_0x582691];return _0x3a00b9;};'use strict';var EventEmitter=require(_0x716e('0x0'));var WhatsappAccount=require(_0x716e('0x1'))['db'][_0x716e('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x716e('0x3')](0x0);var events={'afterCreate':_0x716e('0x4'),'afterUpdate':_0x716e('0x5'),'afterDestroy':_0x716e('0x6')};function emitEvent(_0x930753){return function(_0x2cbc08,_0x317e67,_0x3ae0bd){WhatsappAccountEvents[_0x716e('0x7')](_0x930753+':'+_0x2cbc08['id'],_0x2cbc08);WhatsappAccountEvents['emit'](_0x930753,_0x2cbc08);_0x3ae0bd(null);};}for(var e in events){if(events[_0x716e('0x8')](e)){var event=events[e];WhatsappAccount[_0x716e('0x9')](e,emitEvent(event));}}module[_0x716e('0xa')]=WhatsappAccountEvents;
\ No newline at end of file
index 0fe31b4..3db5fbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b15=['exports','WhatsappAccount','whatsapp_accounts','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7b15,0xf5));var _0x57b1=function(_0x5c5673,_0x1d67c0){_0x5c5673=_0x5c5673-0x0;var _0x482dce=_0x7b15[_0x5c5673];return _0x482dce;};'use strict';var _=require(_0x57b1('0x0'));var util=require(_0x57b1('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x57b1('0x2'));var rp=require(_0x57b1('0x3'));var fs=require('fs');var path=require(_0x57b1('0x4'));var rimraf=require(_0x57b1('0x5'));var config=require(_0x57b1('0x6'));var attributes=require(_0x57b1('0x7'));module[_0x57b1('0x8')]=function(_0x235b48,_0xc6b519){return _0x235b48['define'](_0x57b1('0x9'),attributes,{'tableName':_0x57b1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7295=['whatsapp_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','WhatsappAccount'];(function(_0x2a3caa,_0x5623c7){var _0x208113=function(_0x30eef8){while(--_0x30eef8){_0x2a3caa['push'](_0x2a3caa['shift']());}};_0x208113(++_0x5623c7);}(_0x7295,0x79));var _0x5729=function(_0x511b17,_0xe6b453){_0x511b17=_0x511b17-0x0;var _0x4fa333=_0x7295[_0x511b17];return _0x4fa333;};'use strict';var _=require(_0x5729('0x0'));var util=require(_0x5729('0x1'));var logger=require(_0x5729('0x2'))('api');var moment=require(_0x5729('0x3'));var BPromise=require(_0x5729('0x4'));var rp=require(_0x5729('0x5'));var fs=require('fs');var path=require(_0x5729('0x6'));var rimraf=require(_0x5729('0x7'));var config=require(_0x5729('0x8'));var attributes=require('./whatsappAccount.attributes');module[_0x5729('0x9')]=function(_0x43fd90,_0x5faccc){return _0x43fd90['define'](_0x5729('0xa'),attributes,{'tableName':_0x5729('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b377c26..ed6d554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d66=['find','options','raw','include','map','model','attributes','then','ShowWhatsappAccount','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','WhatsappAccount,\x20%s,\x20%s','catch','WhatsappAccount'];(function(_0x60fb77,_0x207152){var _0x29bba5=function(_0x23516a){while(--_0x23516a){_0x60fb77['push'](_0x60fb77['shift']());}};_0x29bba5(++_0x207152);}(_0x9d66,0x106));var _0x69d6=function(_0x9a7940,_0x483207){_0x9a7940=_0x9a7940-0x0;var _0x431f65=_0x9d66[_0x9a7940];return _0x431f65;};'use strict';var _=require(_0x69d6('0x0'));var util=require(_0x69d6('0x1'));var moment=require(_0x69d6('0x2'));var BPromise=require(_0x69d6('0x3'));var rs=require(_0x69d6('0x4'));var fs=require('fs');var Redis=require(_0x69d6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x69d6('0x6'));var logger=require(_0x69d6('0x7'))(_0x69d6('0x8'));var config=require('../../config/environment');var jayson=require(_0x69d6('0x9'));var client=jayson[_0x69d6('0xa')]['http']({'port':0x232a});config[_0x69d6('0xb')]=_['defaults'](config[_0x69d6('0xb')],{'host':_0x69d6('0xc'),'port':0x18eb});var socket=require(_0x69d6('0xd'))(new Redis(config[_0x69d6('0xb')]));require(_0x69d6('0xe'))[_0x69d6('0xf')](socket);function respondWithRpcPromise(_0x15f65f,_0x39d231,_0x2bb798){return new BPromise(function(_0x526286,_0x1ae278){return client['request'](_0x15f65f,_0x2bb798)['then'](function(_0x1dd467){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x39d231,_0x69d6('0x10'));logger[_0x69d6('0x11')](_0x69d6('0x12'),_0x39d231,'request\x20sent',JSON['stringify'](_0x1dd467));if(_0x1dd467[_0x69d6('0x13')]){if(_0x1dd467[_0x69d6('0x13')][_0x69d6('0x14')]===0x1f4){logger[_0x69d6('0x13')]('WhatsappAccount,\x20%s,\x20%s',_0x39d231,_0x1dd467[_0x69d6('0x13')][_0x69d6('0x15')]);return _0x1ae278(_0x1dd467[_0x69d6('0x13')]['message']);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x39d231,_0x1dd467[_0x69d6('0x13')][_0x69d6('0x15')]);return _0x526286(_0x1dd467[_0x69d6('0x13')][_0x69d6('0x15')]);}else{logger[_0x69d6('0x16')](_0x69d6('0x17'),_0x39d231,'request\x20sent');_0x526286(_0x1dd467['result'][_0x69d6('0x15')]);}})[_0x69d6('0x18')](function(_0x481605){logger[_0x69d6('0x13')](_0x69d6('0x17'),_0x39d231,_0x481605);_0x1ae278(_0x481605);});});}exports['ShowWhatsappAccount']=function(_0x1f9f61){var _0x302e77=this;return new Promise(function(_0x5819d4,_0x4d4e55){return db[_0x69d6('0x19')][_0x69d6('0x1a')]({'raw':_0x1f9f61[_0x69d6('0x1b')]?_0x1f9f61[_0x69d6('0x1b')][_0x69d6('0x1c')]===undefined?!![]:![]:!![],'where':_0x1f9f61[_0x69d6('0x1b')]?_0x1f9f61[_0x69d6('0x1b')]['where']||null:null,'attributes':_0x1f9f61[_0x69d6('0x1b')]?_0x1f9f61[_0x69d6('0x1b')]['attributes']||null:null,'include':_0x1f9f61[_0x69d6('0x1b')]?_0x1f9f61[_0x69d6('0x1b')][_0x69d6('0x1d')]?_[_0x69d6('0x1e')](_0x1f9f61[_0x69d6('0x1b')]['include'],function(_0x15c7f7){return{'model':db[_0x15c7f7[_0x69d6('0x1f')]],'as':_0x15c7f7['as'],'attributes':_0x15c7f7['attributes'],'include':_0x15c7f7['include']?_[_0x69d6('0x1e')](_0x15c7f7[_0x69d6('0x1d')],function(_0x39c89a){return{'model':db[_0x39c89a['model']],'as':_0x39c89a['as'],'attributes':_0x39c89a[_0x69d6('0x20')],'include':_0x39c89a['include']?_[_0x69d6('0x1e')](_0x39c89a[_0x69d6('0x1d')],function(_0x357b43){return{'model':db[_0x357b43[_0x69d6('0x1f')]],'as':_0x357b43['as'],'attributes':_0x357b43[_0x69d6('0x20')]};}):[]};}):[]};}):[]:[]})[_0x69d6('0x21')](function(_0x525339){logger[_0x69d6('0x16')]('ShowWhatsappAccount',_0x1f9f61);logger[_0x69d6('0x11')](_0x69d6('0x22'),_0x1f9f61,JSON[_0x69d6('0x23')](_0x525339));_0x5819d4(_0x525339);})[_0x69d6('0x18')](function(_0x380b1c){logger[_0x69d6('0x13')]('ShowWhatsappAccount',_0x380b1c['message'],_0x1f9f61);_0x4d4e55(_0x302e77[_0x69d6('0x13')](0x1f4,_0x380b1c[_0x69d6('0x15')]));});});};
\ No newline at end of file
+var _0xf801=['model','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','WhatsappAccount,\x20%s,\x20%s','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','map'];(function(_0x549278,_0x450754){var _0x1ea9a1=function(_0x2e559d){while(--_0x2e559d){_0x549278['push'](_0x549278['shift']());}};_0x1ea9a1(++_0x450754);}(_0xf801,0x96));var _0x1f80=function(_0x46f4bb,_0x7dc8a9){_0x46f4bb=_0x46f4bb-0x0;var _0x29f2af=_0xf801[_0x46f4bb];return _0x29f2af;};'use strict';var _=require(_0x1f80('0x0'));var util=require(_0x1f80('0x1'));var moment=require(_0x1f80('0x2'));var BPromise=require(_0x1f80('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1f80('0x4'));var db=require(_0x1f80('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1f80('0x6'))(_0x1f80('0x7'));var config=require(_0x1f80('0x8'));var jayson=require(_0x1f80('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x1f80('0xa')]=_['defaults'](config[_0x1f80('0xa')],{'host':_0x1f80('0xb'),'port':0x18eb});var socket=require(_0x1f80('0xc'))(new Redis(config[_0x1f80('0xa')]));require(_0x1f80('0xd'))[_0x1f80('0xe')](socket);function respondWithRpcPromise(_0x2dc697,_0x2e9bc7,_0x59e4a6){return new BPromise(function(_0x5dddfe,_0x1a650b){return client['request'](_0x2dc697,_0x59e4a6)[_0x1f80('0xf')](function(_0x49c71d){logger[_0x1f80('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x2e9bc7,_0x1f80('0x11'));logger[_0x1f80('0x12')](_0x1f80('0x13'),_0x2e9bc7,_0x1f80('0x11'),JSON['stringify'](_0x49c71d));if(_0x49c71d[_0x1f80('0x14')]){if(_0x49c71d[_0x1f80('0x14')][_0x1f80('0x15')]===0x1f4){logger[_0x1f80('0x14')]('WhatsappAccount,\x20%s,\x20%s',_0x2e9bc7,_0x49c71d[_0x1f80('0x14')][_0x1f80('0x16')]);return _0x1a650b(_0x49c71d['error'][_0x1f80('0x16')]);}logger[_0x1f80('0x14')]('WhatsappAccount,\x20%s,\x20%s',_0x2e9bc7,_0x49c71d[_0x1f80('0x14')][_0x1f80('0x16')]);return _0x5dddfe(_0x49c71d[_0x1f80('0x14')]['message']);}else{logger[_0x1f80('0x10')](_0x1f80('0x17'),_0x2e9bc7,_0x1f80('0x11'));_0x5dddfe(_0x49c71d[_0x1f80('0x18')]['message']);}})[_0x1f80('0x19')](function(_0x435bae){logger[_0x1f80('0x14')](_0x1f80('0x17'),_0x2e9bc7,_0x435bae);_0x1a650b(_0x435bae);});});}exports[_0x1f80('0x1a')]=function(_0x552432){var _0x2103e4=this;return new Promise(function(_0x33877f,_0x5c9244){return db[_0x1f80('0x1b')][_0x1f80('0x1c')]({'raw':_0x552432[_0x1f80('0x1d')]?_0x552432[_0x1f80('0x1d')][_0x1f80('0x1e')]===undefined?!![]:![]:!![],'where':_0x552432[_0x1f80('0x1d')]?_0x552432['options'][_0x1f80('0x1f')]||null:null,'attributes':_0x552432[_0x1f80('0x1d')]?_0x552432[_0x1f80('0x1d')][_0x1f80('0x20')]||null:null,'include':_0x552432['options']?_0x552432[_0x1f80('0x1d')][_0x1f80('0x21')]?_[_0x1f80('0x22')](_0x552432[_0x1f80('0x1d')][_0x1f80('0x21')],function(_0x56b8e8){return{'model':db[_0x56b8e8[_0x1f80('0x23')]],'as':_0x56b8e8['as'],'attributes':_0x56b8e8['attributes'],'include':_0x56b8e8['include']?_[_0x1f80('0x22')](_0x56b8e8[_0x1f80('0x21')],function(_0x33c783){return{'model':db[_0x33c783[_0x1f80('0x23')]],'as':_0x33c783['as'],'attributes':_0x33c783[_0x1f80('0x20')],'include':_0x33c783[_0x1f80('0x21')]?_[_0x1f80('0x22')](_0x33c783[_0x1f80('0x21')],function(_0x3010cd){return{'model':db[_0x3010cd[_0x1f80('0x23')]],'as':_0x3010cd['as'],'attributes':_0x3010cd[_0x1f80('0x20')]};}):[]};}):[]};}):[]:[]})[_0x1f80('0xf')](function(_0x48bc21){logger[_0x1f80('0x10')](_0x1f80('0x1a'),_0x552432);logger['debug'](_0x1f80('0x1a'),_0x552432,JSON[_0x1f80('0x24')](_0x48bc21));_0x33877f(_0x48bc21);})['catch'](function(_0x562a){logger['error'](_0x1f80('0x1a'),_0x562a[_0x1f80('0x16')],_0x552432);_0x5c9244(_0x2103e4[_0x1f80('0x14')](0x1f4,_0x562a[_0x1f80('0x16')]));});});};
\ No newline at end of file
index f8a5368..60bf94c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8705=['save','emit','register','whatsappAccount:','./whatsappAccount.events'];(function(_0x5aa76c,_0x642ac2){var _0xed7a54=function(_0x136ec9){while(--_0x136ec9){_0x5aa76c['push'](_0x5aa76c['shift']());}};_0xed7a54(++_0x642ac2);}(_0x8705,0x1d0));var _0x5870=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8705[_0x2641f9];return _0x585741;};'use strict';var WhatsappAccountEvents=require(_0x5870('0x0'));var events=[_0x5870('0x1'),'remove','update'];function createListener(_0x326bf8,_0x259966){return function(_0x947b8d){_0x259966[_0x5870('0x2')](_0x326bf8,_0x947b8d);};}function removeListener(_0x555fb1,_0x2e27da){return function(){WhatsappAccountEvents['removeListener'](_0x555fb1,_0x2e27da);};}exports[_0x5870('0x3')]=function(_0x8127a){for(var _0x24f18c=0x0,_0x1b145e=events['length'];_0x24f18c<_0x1b145e;_0x24f18c++){var _0x4fd5de=events[_0x24f18c];var _0x28b956=createListener(_0x5870('0x4')+_0x4fd5de,_0x8127a);WhatsappAccountEvents['on'](_0x4fd5de,_0x28b956);}};
\ No newline at end of file
+var _0x1e34=['update','emit','removeListener','register','length','whatsappAccount:','./whatsappAccount.events','save'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x1e34,0x14e));var _0x41e3=function(_0x233f02,_0x369cba){_0x233f02=_0x233f02-0x0;var _0x4b62c6=_0x1e34[_0x233f02];return _0x4b62c6;};'use strict';var WhatsappAccountEvents=require(_0x41e3('0x0'));var events=[_0x41e3('0x1'),'remove',_0x41e3('0x2')];function createListener(_0x3dabb2,_0x47f9fb){return function(_0x3f91f5){_0x47f9fb[_0x41e3('0x3')](_0x3dabb2,_0x3f91f5);};}function removeListener(_0x42a99c,_0x51a9e0){return function(){WhatsappAccountEvents[_0x41e3('0x4')](_0x42a99c,_0x51a9e0);};}exports[_0x41e3('0x5')]=function(_0x13fca9){for(var _0x4e9bcd=0x0,_0x3b2dc1=events[_0x41e3('0x6')];_0x4e9bcd<_0x3b2dc1;_0x4e9bcd++){var _0x5a0d18=events[_0x4e9bcd];var _0x49bd80=createListener(_0x41e3('0x7')+_0x5a0d18,_0x13fca9);WhatsappAccountEvents['on'](_0x5a0d18,_0x49bd80);}};
\ No newline at end of file
index f8968cb..f72ea30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f7=['index','/:id','show','post','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./whatsappApplication.controller','isAuthenticated'];(function(_0x5c811c,_0x313b25){var _0x5df3af=function(_0x3460de){while(--_0x3460de){_0x5c811c['push'](_0x5c811c['shift']());}};_0x5df3af(++_0x313b25);}(_0x19f7,0xa6));var _0x719f=function(_0x2e197d,_0x68d43d){_0x2e197d=_0x2e197d-0x0;var _0x1d7d1c=_0x19f7[_0x2e197d];return _0x1d7d1c;};'use strict';var multer=require(_0x719f('0x0'));var util=require(_0x719f('0x1'));var path=require(_0x719f('0x2'));var timeout=require(_0x719f('0x3'));var express=require(_0x719f('0x4'));var router=express[_0x719f('0x5')]();var fs_extra=require(_0x719f('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x719f('0x7'));var controller=require(_0x719f('0x8'));router['get']('/',auth[_0x719f('0x9')](),controller[_0x719f('0xa')]);router['get'](_0x719f('0xb'),auth[_0x719f('0x9')](),controller[_0x719f('0xc')]);router[_0x719f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x719f('0xb'),auth[_0x719f('0x9')](),controller['update']);router[_0x719f('0xe')]('/:id',auth[_0x719f('0x9')](),controller[_0x719f('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x6a0f=['express','fs-extra','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x12365a,_0x469597){var _0x43d595=function(_0x35b9cd){while(--_0x35b9cd){_0x12365a['push'](_0x12365a['shift']());}};_0x43d595(++_0x469597);}(_0x6a0f,0x106));var _0xf6a0=function(_0xf669dc,_0x588d3b){_0xf669dc=_0xf669dc-0x0;var _0x5028ad=_0x6a0f[_0xf669dc];return _0x5028ad;};'use strict';var multer=require(_0xf6a0('0x0'));var util=require(_0xf6a0('0x1'));var path=require(_0xf6a0('0x2'));var timeout=require(_0xf6a0('0x3'));var express=require(_0xf6a0('0x4'));var router=express['Router']();var fs_extra=require(_0xf6a0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf6a0('0x6'));var controller=require(_0xf6a0('0x7'));router[_0xf6a0('0x8')]('/',auth[_0xf6a0('0x9')](),controller[_0xf6a0('0xa')]);router[_0xf6a0('0x8')](_0xf6a0('0xb'),auth[_0xf6a0('0x9')](),controller[_0xf6a0('0xc')]);router[_0xf6a0('0xd')]('/',auth[_0xf6a0('0x9')](),controller[_0xf6a0('0xe')]);router[_0xf6a0('0xf')]('/:id',auth[_0xf6a0('0x9')](),controller[_0xf6a0('0x10')]);router['delete'](_0xf6a0('0xb'),auth[_0xf6a0('0x9')](),controller[_0xf6a0('0x11')]);module[_0xf6a0('0x12')]=router;
\ No newline at end of file
index 8f45d99..6438a73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x562f=['STRING','noop','TEXT','sequelize','exports','INTEGER'];(function(_0x5ba107,_0x475f5e){var _0x3530ec=function(_0x32fa14){while(--_0x32fa14){_0x5ba107['push'](_0x5ba107['shift']());}};_0x3530ec(++_0x475f5e);}(_0x562f,0x10b));var _0xf562=function(_0x3d7fb5,_0x16eb5c){_0x3d7fb5=_0x3d7fb5-0x0;var _0x3a9642=_0x562f[_0x3d7fb5];return _0x3a9642;};'use strict';var Sequelize=require(_0xf562('0x0'));module[_0xf562('0x1')]={'priority':{'type':Sequelize[_0xf562('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xf562('0x3')],'allowNull':![],'defaultValue':_0xf562('0x4')},'appdata':{'type':Sequelize[_0xf562('0x5')]()},'description':{'type':Sequelize[_0xf562('0x3')]},'interval':{'type':Sequelize[_0xf562('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xb797=['exports','noop','TEXT','STRING','*,*,*,*'];(function(_0x48f1db,_0x554c57){var _0x27de48=function(_0x3cd347){while(--_0x3cd347){_0x48f1db['push'](_0x48f1db['shift']());}};_0x27de48(++_0x554c57);}(_0xb797,0x1d6));var _0x7b79=function(_0x35757d,_0x52e37e){_0x35757d=_0x35757d-0x0;var _0x18fd8b=_0xb797[_0x35757d];return _0x18fd8b;};'use strict';var Sequelize=require('sequelize');module[_0x7b79('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7b79('0x1')},'appdata':{'type':Sequelize[_0x7b79('0x2')]()},'description':{'type':Sequelize[_0x7b79('0x3')]},'interval':{'type':Sequelize[_0x7b79('0x3')],'defaultValue':_0x7b79('0x4')}};
\ No newline at end of file
index 03a9a9f..89a4474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','destroy','then','error','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc2c7,0x134));var _0x7c2c=function(_0x53fe45,_0x2ee3a2){_0x53fe45=_0x53fe45-0x0;var _0x70ae8a=_0xc2c7[_0x53fe45];return _0x70ae8a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7c2c('0x0'));var zipdir=require(_0x7c2c('0x1'));var jsonpatch=require(_0x7c2c('0x2'));var rp=require(_0x7c2c('0x3'));var moment=require(_0x7c2c('0x4'));var BPromise=require(_0x7c2c('0x5'));var Mustache=require(_0x7c2c('0x6'));var util=require(_0x7c2c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x7c2c('0x8'));var ejs=require(_0x7c2c('0x9'));var fs=require('fs');var fs_extra=require(_0x7c2c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7c2c('0xb'));var deskjs=require(_0x7c2c('0xc'));var toCsv=require(_0x7c2c('0x8'));var querystring=require(_0x7c2c('0xd'));var Papa=require(_0x7c2c('0xe'));var Redis=require('ioredis');var authService=require(_0x7c2c('0xf'));var qs=require(_0x7c2c('0x10'));var as=require(_0x7c2c('0x11'));var hardwareService=require(_0x7c2c('0x12'));var logger=require(_0x7c2c('0x13'))(_0x7c2c('0x14'));var utils=require(_0x7c2c('0x15'));var config=require(_0x7c2c('0x16'));var licenseUtil=require(_0x7c2c('0x17'));var db=require(_0x7c2c('0x18'))['db'];function respondWithStatusCode(_0xae8441,_0x45847d){_0x45847d=_0x45847d||0xcc;return function(_0x68398a){if(_0x68398a){return _0xae8441[_0x7c2c('0x19')](_0x45847d);}return _0xae8441[_0x7c2c('0x1a')](_0x45847d)[_0x7c2c('0x1b')]();};}function respondWithResult(_0x4c4aaf,_0x5b5729){_0x5b5729=_0x5b5729||0xc8;return function(_0x102778){if(_0x102778){return _0x4c4aaf[_0x7c2c('0x1a')](_0x5b5729)[_0x7c2c('0x1c')](_0x102778);}};}function respondWithFilteredResult(_0x5ae94f,_0x11424c){return function(_0x206ecd){if(_0x206ecd){var _0x5e55e0=typeof _0x11424c[_0x7c2c('0x1d')]==='undefined'&&typeof _0x11424c[_0x7c2c('0x1e')]==='undefined';var _0x342ea2=_0x206ecd[_0x7c2c('0x1f')];var _0x14453f=_0x5e55e0?0x0:_0x11424c[_0x7c2c('0x1d')];var _0x17df4a=_0x5e55e0?_0x206ecd[_0x7c2c('0x1f')]:_0x11424c[_0x7c2c('0x1d')]+_0x11424c[_0x7c2c('0x1e')];var _0x2d356e;if(_0x17df4a>=_0x342ea2){_0x17df4a=_0x342ea2;_0x2d356e=0xc8;}else{_0x2d356e=0xce;}_0x5ae94f[_0x7c2c('0x1a')](_0x2d356e);return _0x5ae94f[_0x7c2c('0x20')](_0x7c2c('0x21'),_0x14453f+'-'+_0x17df4a+'/'+_0x342ea2)['json'](_0x206ecd);}return null;};}function patchUpdates(_0x1c5491){return function(_0x4adb62){try{jsonpatch['apply'](_0x4adb62,_0x1c5491,!![]);}catch(_0x15ae33){return BPromise[_0x7c2c('0x22')](_0x15ae33);}return _0x4adb62[_0x7c2c('0x23')]();};}function saveUpdates(_0x38ae30,_0x41552f){return function(_0x1883b5){if(_0x1883b5){return _0x1883b5[_0x7c2c('0x24')](_0x38ae30)['then'](function(_0x10c356){return _0x10c356;});}return null;};}function removeEntity(_0x4dedd8,_0x302c93){return function(_0x57f510){if(_0x57f510){return _0x57f510[_0x7c2c('0x25')]()[_0x7c2c('0x26')](function(){_0x4dedd8[_0x7c2c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d6ec7,_0x31a50c){return function(_0x30c53e){if(!_0x30c53e){_0x4d6ec7[_0x7c2c('0x19')](0x194);}return _0x30c53e;};}function handleError(_0x150690,_0x31d8f3){_0x31d8f3=_0x31d8f3||0x1f4;return function(_0xa8e145){logger[_0x7c2c('0x27')](_0xa8e145['stack']);if(_0xa8e145[_0x7c2c('0x28')]){delete _0xa8e145[_0x7c2c('0x28')];}_0x150690[_0x7c2c('0x1a')](_0x31d8f3)[_0x7c2c('0x29')](_0xa8e145);};}exports[_0x7c2c('0x2a')]=function(_0x1f8846,_0xf2bfd1){var _0x26f472={},_0xa040ff={},_0x5769ec={'count':0x0,'rows':[]};var _0x465ad6=_[_0x7c2c('0x2b')](db[_0x7c2c('0x2c')][_0x7c2c('0x2d')],function(_0x53ad23){return{'name':_0x53ad23[_0x7c2c('0x2e')],'type':_0x53ad23[_0x7c2c('0x2f')][_0x7c2c('0x30')]};});_0xa040ff[_0x7c2c('0x31')]=_[_0x7c2c('0x2b')](_0x465ad6,_0x7c2c('0x28'));_0xa040ff[_0x7c2c('0x32')]=_['keys'](_0x1f8846[_0x7c2c('0x32')]);_0xa040ff[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0xa040ff[_0x7c2c('0x31')],_0xa040ff[_0x7c2c('0x32')]);_0x26f472['attributes']=_['intersection'](_0xa040ff[_0x7c2c('0x31')],qs['fields'](_0x1f8846['query'][_0x7c2c('0x35')]));_0x26f472[_0x7c2c('0x36')]=_0x26f472[_0x7c2c('0x36')][_0x7c2c('0x37')]?_0x26f472['attributes']:_0xa040ff[_0x7c2c('0x31')];if(!_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x38')](_0x7c2c('0x39'))){_0x26f472[_0x7c2c('0x1e')]=qs[_0x7c2c('0x1e')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1e')]);_0x26f472[_0x7c2c('0x1d')]=qs[_0x7c2c('0x1d')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1d')]);}_0x26f472[_0x7c2c('0x3a')]=qs['sort'](_0x1f8846['query'][_0x7c2c('0x3b')]);_0x26f472['where']=qs['filters'](_['pick'](_0x1f8846[_0x7c2c('0x32')],_0xa040ff[_0x7c2c('0x33')]),_0x465ad6);if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]){_0x26f472[_0x7c2c('0x3d')]=_[_0x7c2c('0x3e')](_0x26f472[_0x7c2c('0x3d')],{'$or':_[_0x7c2c('0x2b')](_0x465ad6,function(_0x2b6520){if(_0x2b6520[_0x7c2c('0x2f')]!==_0x7c2c('0x3f')){var _0x58696a={};_0x58696a[_0x2b6520['name']]={'$like':'%'+_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]+'%'};return _0x58696a;}})});}_0x26f472=_[_0x7c2c('0x3e')]({},_0x26f472,_0x1f8846[_0x7c2c('0x40')]);var _0x5e8c96={'where':_0x26f472[_0x7c2c('0x3d')]};return db[_0x7c2c('0x2c')][_0x7c2c('0x1f')](_0x5e8c96)[_0x7c2c('0x26')](function(_0x18e288){_0x5769ec[_0x7c2c('0x1f')]=_0x18e288;if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x26f472[_0x7c2c('0x42')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x7c2c('0x43')](_0x26f472);})['then'](function(_0x2c3f40){_0x5769ec[_0x7c2c('0x44')]=_0x2c3f40;return _0x5769ec;})['then'](respondWithFilteredResult(_0xf2bfd1,_0x26f472))[_0x7c2c('0x45')](handleError(_0xf2bfd1,null));};exports['show']=function(_0x3014fb,_0x33b2be){var _0x9b9813={'raw':!![],'where':{'id':_0x3014fb['params']['id']}},_0x26351e={};_0x26351e[_0x7c2c('0x31')]=_['keys'](db['WhatsappApplication'][_0x7c2c('0x2d')]);_0x26351e[_0x7c2c('0x32')]=_[_0x7c2c('0x46')](_0x3014fb['query']);_0x26351e[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0x26351e['model'],_0x26351e[_0x7c2c('0x32')]);_0x9b9813['attributes']=_[_0x7c2c('0x34')](_0x26351e[_0x7c2c('0x31')],qs['fields'](_0x3014fb['query'][_0x7c2c('0x35')]));_0x9b9813[_0x7c2c('0x36')]=_0x9b9813['attributes'][_0x7c2c('0x37')]?_0x9b9813['attributes']:_0x26351e['model'];if(_0x3014fb[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x9b9813[_0x7c2c('0x42')]=[{'all':!![]}];}_0x9b9813=_[_0x7c2c('0x3e')]({},_0x9b9813,_0x3014fb[_0x7c2c('0x40')]);return db[_0x7c2c('0x2c')][_0x7c2c('0x47')](_0x9b9813)[_0x7c2c('0x26')](handleEntityNotFound(_0x33b2be,null))[_0x7c2c('0x26')](respondWithResult(_0x33b2be,null))['catch'](handleError(_0x33b2be,null));};exports['create']=function(_0xeb067b,_0x3091bd){return db[_0x7c2c('0x2c')]['create'](_0xeb067b['body'],{})[_0x7c2c('0x26')](respondWithResult(_0x3091bd,0xc9))[_0x7c2c('0x45')](handleError(_0x3091bd,null));};exports[_0x7c2c('0x24')]=function(_0x2b79d5,_0x5f3de8){if(_0x2b79d5['body']['id']){delete _0x2b79d5['body']['id'];}return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x2b79d5[_0x7c2c('0x48')]['id']}})[_0x7c2c('0x26')](handleEntityNotFound(_0x5f3de8,null))[_0x7c2c('0x26')](saveUpdates(_0x2b79d5['body'],null))[_0x7c2c('0x26')](respondWithResult(_0x5f3de8,null))[_0x7c2c('0x45')](handleError(_0x5f3de8,null));};exports['destroy']=function(_0x19621a,_0x56e09d){return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x19621a[_0x7c2c('0x48')]['id']}})['then'](handleEntityNotFound(_0x56e09d,null))['then'](removeEntity(_0x56e09d,null))[_0x7c2c('0x45')](handleError(_0x56e09d,null));};
\ No newline at end of file
+var _0x341c=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','WhatsappApplication','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','params','create','body','find','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x37fd20,_0x215b63){var _0x1e4b99=function(_0x38c7cd){while(--_0x38c7cd){_0x37fd20['push'](_0x37fd20['shift']());}};_0x1e4b99(++_0x215b63);}(_0x341c,0xcc));var _0xc341=function(_0x13fdb3,_0x493557){_0x13fdb3=_0x13fdb3-0x0;var _0x212e46=_0x341c[_0x13fdb3];return _0x212e46;};'use strict';var emlformat=require(_0xc341('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc341('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc341('0x2'));var moment=require(_0xc341('0x3'));var BPromise=require(_0xc341('0x4'));var Mustache=require(_0xc341('0x5'));var util=require(_0xc341('0x6'));var path=require(_0xc341('0x7'));var sox=require(_0xc341('0x8'));var csv=require(_0xc341('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc341('0xa'));var _=require(_0xc341('0xb'));var squel=require(_0xc341('0xc'));var crypto=require(_0xc341('0xd'));var jsforce=require(_0xc341('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc341('0x9'));var querystring=require(_0xc341('0xf'));var Papa=require(_0xc341('0x10'));var Redis=require(_0xc341('0x11'));var authService=require(_0xc341('0x12'));var qs=require(_0xc341('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc341('0x14'));var logger=require(_0xc341('0x15'))(_0xc341('0x16'));var utils=require(_0xc341('0x17'));var config=require(_0xc341('0x18'));var licenseUtil=require(_0xc341('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x551f9d,_0x15c85c){_0x15c85c=_0x15c85c||0xcc;return function(_0x19a093){if(_0x19a093){return _0x551f9d[_0xc341('0x1a')](_0x15c85c);}return _0x551f9d[_0xc341('0x1b')](_0x15c85c)[_0xc341('0x1c')]();};}function respondWithResult(_0x483e30,_0x22fdc3){_0x22fdc3=_0x22fdc3||0xc8;return function(_0x12a4eb){if(_0x12a4eb){return _0x483e30[_0xc341('0x1b')](_0x22fdc3)[_0xc341('0x1d')](_0x12a4eb);}};}function respondWithFilteredResult(_0x989024,_0x2bd235){return function(_0x203a06){if(_0x203a06){var _0x26bbce=typeof _0x2bd235[_0xc341('0x1e')]===_0xc341('0x1f')&&typeof _0x2bd235[_0xc341('0x20')]==='undefined';var _0x4a0259=_0x203a06[_0xc341('0x21')];var _0x19d0bc=_0x26bbce?0x0:_0x2bd235[_0xc341('0x1e')];var _0x31f1ae=_0x26bbce?_0x203a06[_0xc341('0x21')]:_0x2bd235[_0xc341('0x1e')]+_0x2bd235[_0xc341('0x20')];var _0x41a020;if(_0x31f1ae>=_0x4a0259){_0x31f1ae=_0x4a0259;_0x41a020=0xc8;}else{_0x41a020=0xce;}_0x989024[_0xc341('0x1b')](_0x41a020);return _0x989024[_0xc341('0x22')](_0xc341('0x23'),_0x19d0bc+'-'+_0x31f1ae+'/'+_0x4a0259)[_0xc341('0x1d')](_0x203a06);}return null;};}function patchUpdates(_0x55a3c3){return function(_0x556281){try{jsonpatch[_0xc341('0x24')](_0x556281,_0x55a3c3,!![]);}catch(_0x48351d){return BPromise[_0xc341('0x25')](_0x48351d);}return _0x556281[_0xc341('0x26')]();};}function saveUpdates(_0x330cb2,_0x230754){return function(_0x488d43){if(_0x488d43){return _0x488d43[_0xc341('0x27')](_0x330cb2)[_0xc341('0x28')](function(_0x190599){return _0x190599;});}return null;};}function removeEntity(_0x5a4912,_0x5c749b){return function(_0x440a4d){if(_0x440a4d){return _0x440a4d['destroy']()[_0xc341('0x28')](function(){_0x5a4912[_0xc341('0x1b')](0xcc)[_0xc341('0x1c')]();});}};}function handleEntityNotFound(_0x36b60e,_0x118742){return function(_0x56831d){if(!_0x56831d){_0x36b60e[_0xc341('0x1a')](0x194);}return _0x56831d;};}function handleError(_0x3cd7ba,_0x258378){_0x258378=_0x258378||0x1f4;return function(_0x349380){logger[_0xc341('0x29')](_0x349380[_0xc341('0x2a')]);if(_0x349380[_0xc341('0x2b')]){delete _0x349380['name'];}_0x3cd7ba[_0xc341('0x1b')](_0x258378)[_0xc341('0x2c')](_0x349380);};}exports[_0xc341('0x2d')]=function(_0x469dd4,_0x3914a9){var _0x31ef05={},_0x192611={},_0x430896={'count':0x0,'rows':[]};var _0xb810ae=_['map'](db[_0xc341('0x2e')][_0xc341('0x2f')],function(_0x2bf5fd){return{'name':_0x2bf5fd[_0xc341('0x30')],'type':_0x2bf5fd[_0xc341('0x31')][_0xc341('0x32')]};});_0x192611[_0xc341('0x33')]=_[_0xc341('0x34')](_0xb810ae,_0xc341('0x2b'));_0x192611[_0xc341('0x35')]=_[_0xc341('0x36')](_0x469dd4['query']);_0x192611['filters']=_[_0xc341('0x37')](_0x192611['model'],_0x192611[_0xc341('0x35')]);_0x31ef05[_0xc341('0x38')]=_[_0xc341('0x37')](_0x192611[_0xc341('0x33')],qs[_0xc341('0x39')](_0x469dd4[_0xc341('0x35')][_0xc341('0x39')]));_0x31ef05[_0xc341('0x38')]=_0x31ef05[_0xc341('0x38')]['length']?_0x31ef05[_0xc341('0x38')]:_0x192611[_0xc341('0x33')];if(!_0x469dd4[_0xc341('0x35')][_0xc341('0x3a')](_0xc341('0x3b'))){_0x31ef05['limit']=qs['limit'](_0x469dd4['query'][_0xc341('0x20')]);_0x31ef05[_0xc341('0x1e')]=qs[_0xc341('0x1e')](_0x469dd4[_0xc341('0x35')]['offset']);}_0x31ef05['order']=qs[_0xc341('0x3c')](_0x469dd4[_0xc341('0x35')][_0xc341('0x3c')]);_0x31ef05[_0xc341('0x3d')]=qs['filters'](_[_0xc341('0x3e')](_0x469dd4[_0xc341('0x35')],_0x192611['filters']),_0xb810ae);if(_0x469dd4[_0xc341('0x35')]['filter']){_0x31ef05[_0xc341('0x3d')]=_[_0xc341('0x3f')](_0x31ef05[_0xc341('0x3d')],{'$or':_[_0xc341('0x34')](_0xb810ae,function(_0x13a49b){if(_0x13a49b[_0xc341('0x31')]!==_0xc341('0x40')){var _0x28a962={};_0x28a962[_0x13a49b[_0xc341('0x2b')]]={'$like':'%'+_0x469dd4[_0xc341('0x35')][_0xc341('0x41')]+'%'};return _0x28a962;}})});}_0x31ef05=_[_0xc341('0x3f')]({},_0x31ef05,_0x469dd4['options']);var _0x28e320={'where':_0x31ef05[_0xc341('0x3d')]};return db[_0xc341('0x2e')][_0xc341('0x21')](_0x28e320)[_0xc341('0x28')](function(_0x3af022){_0x430896[_0xc341('0x21')]=_0x3af022;if(_0x469dd4[_0xc341('0x35')][_0xc341('0x42')]){_0x31ef05[_0xc341('0x43')]=[{'all':!![]}];}return db[_0xc341('0x2e')][_0xc341('0x44')](_0x31ef05);})[_0xc341('0x28')](function(_0x5edcd2){_0x430896['rows']=_0x5edcd2;return _0x430896;})[_0xc341('0x28')](respondWithFilteredResult(_0x3914a9,_0x31ef05))[_0xc341('0x45')](handleError(_0x3914a9,null));};exports['show']=function(_0x20d7ff,_0x358421){var _0x1a1260={'raw':!![],'where':{'id':_0x20d7ff[_0xc341('0x46')]['id']}},_0x53a74a={};_0x53a74a['model']=_[_0xc341('0x36')](db[_0xc341('0x2e')][_0xc341('0x2f')]);_0x53a74a[_0xc341('0x35')]=_[_0xc341('0x36')](_0x20d7ff[_0xc341('0x35')]);_0x53a74a['filters']=_[_0xc341('0x37')](_0x53a74a[_0xc341('0x33')],_0x53a74a[_0xc341('0x35')]);_0x1a1260['attributes']=_[_0xc341('0x37')](_0x53a74a['model'],qs[_0xc341('0x39')](_0x20d7ff[_0xc341('0x35')][_0xc341('0x39')]));_0x1a1260[_0xc341('0x38')]=_0x1a1260[_0xc341('0x38')]['length']?_0x1a1260[_0xc341('0x38')]:_0x53a74a['model'];if(_0x20d7ff['query'][_0xc341('0x42')]){_0x1a1260[_0xc341('0x43')]=[{'all':!![]}];}_0x1a1260=_['merge']({},_0x1a1260,_0x20d7ff['options']);return db['WhatsappApplication']['find'](_0x1a1260)[_0xc341('0x28')](handleEntityNotFound(_0x358421,null))[_0xc341('0x28')](respondWithResult(_0x358421,null))['catch'](handleError(_0x358421,null));};exports['create']=function(_0x44d271,_0x500137){return db[_0xc341('0x2e')][_0xc341('0x47')](_0x44d271[_0xc341('0x48')],{})[_0xc341('0x28')](respondWithResult(_0x500137,0xc9))[_0xc341('0x45')](handleError(_0x500137,null));};exports[_0xc341('0x27')]=function(_0x436403,_0x41194b){if(_0x436403[_0xc341('0x48')]['id']){delete _0x436403[_0xc341('0x48')]['id'];}return db[_0xc341('0x2e')][_0xc341('0x49')]({'where':{'id':_0x436403[_0xc341('0x46')]['id']}})[_0xc341('0x28')](handleEntityNotFound(_0x41194b,null))[_0xc341('0x28')](saveUpdates(_0x436403[_0xc341('0x48')],null))[_0xc341('0x28')](respondWithResult(_0x41194b,null))[_0xc341('0x45')](handleError(_0x41194b,null));};exports[_0xc341('0x4a')]=function(_0x427402,_0x2940ba){return db['WhatsappApplication'][_0xc341('0x49')]({'where':{'id':_0x427402[_0xc341('0x46')]['id']}})[_0xc341('0x28')](handleEntityNotFound(_0x2940ba,null))[_0xc341('0x28')](removeEntity(_0x2940ba,null))[_0xc341('0x45')](handleError(_0x2940ba,null));};
\ No newline at end of file
index 00f7e4d..6ddeca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe015=['path','rimraf','../../config/environment','./whatsappApplication.attributes','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird'];(function(_0x5ecd68,_0x7a5e8e){var _0x34bc7b=function(_0x2234d7){while(--_0x2234d7){_0x5ecd68['push'](_0x5ecd68['shift']());}};_0x34bc7b(++_0x7a5e8e);}(_0xe015,0x13b));var _0x5e01=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xe015[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x5e01('0x0'));var util=require(_0x5e01('0x1'));var logger=require(_0x5e01('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5e01('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5e01('0x4'));var rimraf=require(_0x5e01('0x5'));var config=require(_0x5e01('0x6'));var attributes=require(_0x5e01('0x7'));module['exports']=function(_0x1814cb,_0x3d2da2){return _0x1814cb['define']('WhatsappApplication',attributes,{'tableName':_0x5e01('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5e01('0x9'),'collate':_0x5e01('0xa')});};
\ No newline at end of file
+var _0x6b19=['define','utf8mb4','lodash','util','api','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes'];(function(_0x10857f,_0x3cd931){var _0x543437=function(_0x5d24a3){while(--_0x5d24a3){_0x10857f['push'](_0x10857f['shift']());}};_0x543437(++_0x3cd931);}(_0x6b19,0xe8));var _0x96b1=function(_0x674de8,_0x2bdefc){_0x674de8=_0x674de8-0x0;var _0x14f9ad=_0x6b19[_0x674de8];return _0x14f9ad;};'use strict';var _=require(_0x96b1('0x0'));var util=require(_0x96b1('0x1'));var logger=require('../../config/logger')(_0x96b1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x96b1('0x3'));var fs=require('fs');var path=require(_0x96b1('0x4'));var rimraf=require(_0x96b1('0x5'));var config=require(_0x96b1('0x6'));var attributes=require(_0x96b1('0x7'));module['exports']=function(_0x8b5ab8,_0x546193){return _0x8b5ab8[_0x96b1('0x8')]('WhatsappApplication',attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x96b1('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 83b6e35..04031b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x166e5a,_0x8b0f57){var _0x5335cf=function(_0x2c87ea){while(--_0x2c87ea){_0x166e5a['push'](_0x166e5a['shift']());}};_0x5335cf(++_0x8b0f57);}(_0x6aa7,0x178));var _0x76aa=function(_0x1f4c87,_0x152fde){_0x1f4c87=_0x1f4c87-0x0;var _0x37a774=_0x6aa7[_0x1f4c87];return _0x37a774;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
+var _0xb458=['WhatsappApplication,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','debug'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xb458,0x103));var _0x8b45=function(_0x1b7330,_0x2ea8c1){_0x1b7330=_0x1b7330-0x0;var _0x4bdd4e=_0xb458[_0x1b7330];return _0x4bdd4e;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var moment=require(_0x8b45('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b45('0x3'));var db=require(_0x8b45('0x4'))['db'];var utils=require(_0x8b45('0x5'));var logger=require(_0x8b45('0x6'))('rpc');var config=require(_0x8b45('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8b45('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){return client[_0x8b45('0x9')](_0x12bd05,_0x3a8ccb)[_0x8b45('0xa')](function(_0x33f30e){logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,'request\x20sent');logger[_0x8b45('0xd')](_0x8b45('0xe'),_0x2daa9a,'request\x20sent',JSON['stringify'](_0x33f30e));if(_0x33f30e['error']){if(_0x33f30e['error'][_0x8b45('0xf')]===0x1f4){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e['error'][_0x8b45('0x11')]);return _0x4d1718(_0x33f30e[_0x8b45('0x10')][_0x8b45('0x11')]);}logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e[_0x8b45('0x10')]['message']);return _0x32342f(_0x33f30e['error'][_0x8b45('0x11')]);}else{logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,_0x8b45('0x12'));_0x32342f(_0x33f30e[_0x8b45('0x13')][_0x8b45('0x11')]);}})[_0x8b45('0x14')](function(_0x147d6b){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x147d6b);_0x4d1718(_0x147d6b);});});}
\ No newline at end of file
index ebcac82..e2afbf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe626=['whatsapp','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','/:id/tags','removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','isAuthenticated','describe','/:id','show','post','create','/:id/messages','addMessage','tracked','whatsappinteraction:addtags','addTags','put'];(function(_0xe66cf2,_0x32ba5f){var _0x2d84e7=function(_0x58a7d8){while(--_0x58a7d8){_0xe66cf2['push'](_0xe66cf2['shift']());}};_0x2d84e7(++_0x32ba5f);}(_0xe626,0x9d));var _0x6e62=function(_0x5461c5,_0x3e0848){_0x5461c5=_0x5461c5-0x0;var _0x13b12f=_0xe626[_0x5461c5];return _0x13b12f;};'use strict';var multer=require(_0x6e62('0x0'));var util=require(_0x6e62('0x1'));var path=require(_0x6e62('0x2'));var timeout=require(_0x6e62('0x3'));var express=require('express');var router=express[_0x6e62('0x4')]();var fs_extra=require(_0x6e62('0x5'));var auth=require(_0x6e62('0x6'));var interaction=require(_0x6e62('0x7'));var config=require(_0x6e62('0x8'));var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x6e62('0x9')]);router[_0x6e62('0xa')]('/describe',auth[_0x6e62('0xb')](),controller[_0x6e62('0xc')]);router[_0x6e62('0xa')](_0x6e62('0xd'),auth['isAuthenticated'](),controller[_0x6e62('0xe')]);router[_0x6e62('0xa')]('/:id/messages',auth[_0x6e62('0xb')](),controller['getMessages']);router[_0x6e62('0xa')]('/:id/download',auth[_0x6e62('0xb')](),controller['download']);router[_0x6e62('0xf')]('/',auth[_0x6e62('0xb')](),controller[_0x6e62('0x10')]);router[_0x6e62('0xf')](_0x6e62('0x11'),auth[_0x6e62('0xb')](),controller[_0x6e62('0x12')]);router['post']('/:id/tags',auth[_0x6e62('0xb')](),interaction[_0x6e62('0x13')]('whatsapp',_0x6e62('0x14')),controller[_0x6e62('0x15')]);router[_0x6e62('0x16')](_0x6e62('0xd'),auth['isAuthenticated'](),interaction[_0x6e62('0x13')](_0x6e62('0x17'),_0x6e62('0x18')),controller[_0x6e62('0x19')]);router[_0x6e62('0x1a')](_0x6e62('0xd'),auth[_0x6e62('0xb')](),interaction[_0x6e62('0x13')](_0x6e62('0x17'),_0x6e62('0x1b')),controller['destroy']);router[_0x6e62('0x1a')](_0x6e62('0x1c'),auth['isAuthenticated'](),controller[_0x6e62('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x90b1=['index','get','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','delete','whatsappinteraction:destroy','removeTags','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1fa007,_0x5d3503){var _0x24a0c2=function(_0x261ea0){while(--_0x261ea0){_0x1fa007['push'](_0x1fa007['shift']());}};_0x24a0c2(++_0x5d3503);}(_0x90b1,0x1bb));var _0x190b=function(_0x5846b4,_0x2a47f9){_0x5846b4=_0x5846b4-0x0;var _0x49a222=_0x90b1[_0x5846b4];return _0x49a222;};'use strict';var multer=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var path=require(_0x190b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x190b('0x3')]();var fs_extra=require(_0x190b('0x4'));var auth=require(_0x190b('0x5'));var interaction=require(_0x190b('0x6'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x190b('0x7')]);router[_0x190b('0x8')](_0x190b('0x9'),auth[_0x190b('0xa')](),controller[_0x190b('0xb')]);router[_0x190b('0x8')](_0x190b('0xc'),auth['isAuthenticated'](),controller[_0x190b('0xd')]);router[_0x190b('0x8')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0xf')]);router[_0x190b('0x8')](_0x190b('0x10'),auth[_0x190b('0xa')](),controller['download']);router[_0x190b('0x11')]('/',auth[_0x190b('0xa')](),controller['create']);router[_0x190b('0x11')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0x12')]);router[_0x190b('0x11')](_0x190b('0x13'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x16')),controller[_0x190b('0x17')]);router[_0x190b('0x18')](_0x190b('0xc'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x19')),controller['update']);router[_0x190b('0x1a')]('/:id',auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x1b')),controller['destroy']);router[_0x190b('0x1a')](_0x190b('0x13'),auth[_0x190b('0xa')](),controller[_0x190b('0x1c')]);module[_0x190b('0x1d')]=router;
\ No newline at end of file
index 9cc8811..4263db9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d3=['STRING','ENUM','out','sequelize','moment','exports','BOOLEAN','DATE'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x78d3,0x73));var _0x378d=function(_0x4e24c7,_0x439fb1){_0x4e24c7=_0x4e24c7-0x0;var _0x371808=_0x78d3[_0x4e24c7];return _0x371808;};'use strict';var Sequelize=require(_0x378d('0x0'));var moment=require(_0x378d('0x1'));module[_0x378d('0x2')]={'closed':{'type':Sequelize[_0x378d('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x378d('0x4')]},'disposition':{'type':Sequelize[_0x378d('0x5')]},'secondDisposition':{'type':Sequelize[_0x378d('0x5')]},'thirdDisposition':{'type':Sequelize[_0x378d('0x5')]},'note':{'type':Sequelize[_0x378d('0x5')]},'phone':{'type':Sequelize[_0x378d('0x5')]},'read1stAt':{'type':Sequelize[_0x378d('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x378d('0x6')]('in',_0x378d('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x378d('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x378d('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc03e=['STRING','DATE','ENUM','out','sequelize','BOOLEAN'];(function(_0x21a1fb,_0xb5129e){var _0xe70efd=function(_0x447b7c){while(--_0x447b7c){_0x21a1fb['push'](_0x21a1fb['shift']());}};_0xe70efd(++_0xb5129e);}(_0xc03e,0x15a));var _0xec03=function(_0x2d3d0d,_0x67ac82){_0x2d3d0d=_0x2d3d0d-0x0;var _0xca35b6=_0xc03e[_0x2d3d0d];return _0xca35b6;};'use strict';var Sequelize=require(_0xec03('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0xec03('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xec03('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xec03('0x2')]},'note':{'type':Sequelize[_0xec03('0x2')]},'phone':{'type':Sequelize[_0xec03('0x2')]},'read1stAt':{'type':Sequelize[_0xec03('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xec03('0x4')]('in',_0xec03('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xec03('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xec03('0x4')]('in',_0xec03('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index a7dd769..b674e95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0c2=['redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','offset','limit','set','Content-Range','reject','then','stack','Users','map','fullname','Tags','TagIds','split','forEach','push','catch','WhatsappInteraction','rawAttributes','type','key','model','name','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','field','color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','end','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','compact','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','isEmpty','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','role','sequelize','count','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','all','rows','show','includeAll','options','create','body','update','params','destroy','describe','addMessage','ids','omit','getMessages','findOne','WhatsappMessage','format','YYYY-MM-DD\x20HH:mm:ss','include','addTags','spread','whatsappInteractionTags:save','removeTags','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','CmContact','firstName','Attachment','Messages','secret','WhatsappAccount','Account','User','Owner','get','mkdirSync','closedAt','disposition','basename','createWriteStream','System','lastName','direction','out','views','downloadInteraction.ejs','transcript-','Whatsapp','download','log','err','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x1022ed,_0x2ac525){var _0x959b70=function(_0x432441){while(--_0x432441){_0x1022ed['push'](_0x1022ed['shift']());}};_0x959b70(++_0x2ac525);}(_0xc0c2,0x1b7));var _0x2c0c=function(_0x4ece58,_0x50922a){_0x4ece58=_0x4ece58-0x0;var _0x20d209=_0xc0c2[_0x4ece58];return _0x20d209;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2c0c('0x0'));var zipdir=require(_0x2c0c('0x1'));var jsonpatch=require(_0x2c0c('0x2'));var rp=require(_0x2c0c('0x3'));var moment=require('moment');var BPromise=require(_0x2c0c('0x4'));var Mustache=require(_0x2c0c('0x5'));var util=require(_0x2c0c('0x6'));var path=require(_0x2c0c('0x7'));var sox=require(_0x2c0c('0x8'));var csv=require(_0x2c0c('0x9'));var ejs=require(_0x2c0c('0xa'));var fs=require('fs');var fs_extra=require(_0x2c0c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2c0c('0xc'));var jsforce=require(_0x2c0c('0xd'));var deskjs=require(_0x2c0c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2c0c('0xf'));var Papa=require('papaparse');var Redis=require(_0x2c0c('0x10'));var authService=require(_0x2c0c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2c0c('0x12'));var pdf=require(_0x2c0c('0x13'));var hardwareService=require(_0x2c0c('0x14'));var logger=require(_0x2c0c('0x15'))(_0x2c0c('0x16'));var utils=require(_0x2c0c('0x17'));var config=require(_0x2c0c('0x18'));var licenseUtil=require(_0x2c0c('0x19'));var db=require(_0x2c0c('0x1a'))['db'];config[_0x2c0c('0x1b')]=_[_0x2c0c('0x1c')](config[_0x2c0c('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x2c0c('0x1d'))(new Redis(config['redis']));require(_0x2c0c('0x1e'))[_0x2c0c('0x1f')](socket);function respondWithStatusCode(_0x26c4d7,_0x39c43f){_0x39c43f=_0x39c43f||0xcc;return function(_0x21432d){if(_0x21432d){return _0x26c4d7[_0x2c0c('0x20')](_0x39c43f);}return _0x26c4d7[_0x2c0c('0x21')](_0x39c43f)['end']();};}function respondWithResult(_0x1b2841,_0x1f560a){_0x1f560a=_0x1f560a||0xc8;return function(_0x4e3703){if(_0x4e3703){return _0x1b2841['status'](_0x1f560a)[_0x2c0c('0x22')](_0x4e3703);}};}function respondWithFilteredResult(_0x5c967b,_0x159f2e){return function(_0x1d2cda){if(_0x1d2cda){var _0x13b21f=typeof _0x159f2e[_0x2c0c('0x23')]==='undefined'&&typeof _0x159f2e[_0x2c0c('0x24')]==='undefined';var _0x240701=_0x1d2cda['count'];var _0x39dcc9=_0x13b21f?0x0:_0x159f2e[_0x2c0c('0x23')];var _0x4b2ebf=_0x13b21f?_0x1d2cda['count']:_0x159f2e['offset']+_0x159f2e[_0x2c0c('0x24')];var _0x5c0fb9;if(_0x4b2ebf>=_0x240701){_0x4b2ebf=_0x240701;_0x5c0fb9=0xc8;}else{_0x5c0fb9=0xce;}_0x5c967b['status'](_0x5c0fb9);return _0x5c967b[_0x2c0c('0x25')](_0x2c0c('0x26'),_0x39dcc9+'-'+_0x4b2ebf+'/'+_0x240701)[_0x2c0c('0x22')](_0x1d2cda);}return null;};}function patchUpdates(_0x26206c){return function(_0x3e8a99){try{jsonpatch['apply'](_0x3e8a99,_0x26206c,!![]);}catch(_0x2432f1){return BPromise[_0x2c0c('0x27')](_0x2432f1);}return _0x3e8a99['save']();};}function saveUpdates(_0x5aa5df,_0x4a1180){return function(_0xd7c07b){if(_0xd7c07b){return _0xd7c07b['update'](_0x5aa5df)['then'](function(_0x5313e2){return _0x5313e2;});}return null;};}function removeEntity(_0x22084a,_0x4aa5f3){return function(_0xf70384){if(_0xf70384){return _0xf70384['destroy']()[_0x2c0c('0x28')](function(){_0x22084a[_0x2c0c('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf94192,_0xcb0cb2){return function(_0x3fb6f9){if(!_0x3fb6f9){_0xf94192[_0x2c0c('0x20')](0x194);}return _0x3fb6f9;};}function handleError(_0x2e34ed,_0x16330f){_0x16330f=_0x16330f||0x1f4;return function(_0x26a90d){logger['error'](_0x26a90d[_0x2c0c('0x29')]);if(_0x26a90d['name']){delete _0x26a90d['name'];}_0x2e34ed[_0x2c0c('0x21')](_0x16330f)['send'](_0x26a90d);};}function getInteractionUsers(_0x28c2fa,_0x47e0c9){return new BPromise(function(_0xcde80,_0x1a32ef){try{if(_0x47e0c9[_0x28c2fa['id']]){_0x28c2fa[_0x2c0c('0x2a')]=_[_0x2c0c('0x2b')](_0x47e0c9[_0x28c2fa['id']],function(_0x50fde0){return{'id':_0x50fde0['id'],'fullname':_0x50fde0[_0x2c0c('0x2c')]};});}}catch(_0x5accb0){_0x1a32ef(_0x5accb0);}_0xcde80(_0x28c2fa);});}function getInteractionTags(_0x343e8e,_0x9dcfe8){return new BPromise(function(_0x29ffd6,_0x3519b3){try{if(_0x343e8e['TagIds']){_0x343e8e[_0x2c0c('0x2d')]=[];_0x343e8e[_0x2c0c('0x2e')][_0x2c0c('0x2f')](',')[_0x2c0c('0x30')](function(_0x40f37e){_0x343e8e[_0x2c0c('0x2d')][_0x2c0c('0x31')](_0x9dcfe8[_0x40f37e]);});}delete _0x343e8e[_0x2c0c('0x2e')];}catch(_0xba5540){_0x3519b3(_0xba5540);}_0x29ffd6(_0x343e8e);});}function updateWhatsappInteraction(_0x364f19,_0x351e2a,_0x1b3d7c){return new BPromise(function(_0x554a45,_0x45406d){return getInteractionUsers(_0x364f19,_0x1b3d7c)[_0x2c0c('0x28')](function(_0x2840f6){return getInteractionTags(_0x2840f6,_0x351e2a);})[_0x2c0c('0x28')](function(_0x12dd28){_0x554a45(_0x12dd28);})[_0x2c0c('0x32')](function(_0x8128b3){_0x45406d(_0x8128b3);});});}exports['index']=function(_0x15d14b,_0x4d9380){var _0x41153d={},_0x308c29={},_0x3a921e={'count':0x0,'rows':[]};var _0x5b40a1=_['map'](db[_0x2c0c('0x33')][_0x2c0c('0x34')],function(_0x5091f5){return{'name':_0x5091f5['fieldName'],'type':_0x5091f5[_0x2c0c('0x35')][_0x2c0c('0x36')]};});_0x308c29[_0x2c0c('0x37')]=_['map'](_0x5b40a1,_0x2c0c('0x38'));_0x308c29[_0x2c0c('0x39')]=_[_0x2c0c('0x3a')](_0x15d14b[_0x2c0c('0x39')]);_0x308c29['filters']=_[_0x2c0c('0x3b')](_0x308c29[_0x2c0c('0x37')],_0x308c29[_0x2c0c('0x39')]);_0x41153d['attributes']=_[_0x2c0c('0x3b')](_0x308c29[_0x2c0c('0x37')],qs[_0x2c0c('0x3c')](_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x3c')]));_0x41153d['attributes']=_0x41153d[_0x2c0c('0x3d')][_0x2c0c('0x3e')]?_0x41153d[_0x2c0c('0x3d')]:_0x308c29['model'];if(!_0x15d14b[_0x2c0c('0x39')]['hasOwnProperty'](_0x2c0c('0x3f'))){_0x41153d[_0x2c0c('0x24')]=qs[_0x2c0c('0x24')](_0x15d14b['query']['limit']);_0x41153d['offset']=qs[_0x2c0c('0x23')](_0x15d14b['query'][_0x2c0c('0x23')]);}_0x41153d[_0x2c0c('0x40')]=qs[_0x2c0c('0x41')](_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x41')]);_0x41153d[_0x2c0c('0x42')]=qs[_0x2c0c('0x43')](_[_0x2c0c('0x44')](_0x15d14b[_0x2c0c('0x39')],_0x308c29[_0x2c0c('0x43')]),_0x5b40a1);var _0xf79571=[];var _0x1c7d0d=squel['select']()[_0x2c0c('0x45')]('id')['field'](_0x2c0c('0x38'))[_0x2c0c('0x45')](_0x2c0c('0x46'))[_0x2c0c('0x47')](_0x2c0c('0x48'));var _0x1e16d1=squel['select']()[_0x2c0c('0x45')](_0x2c0c('0x49'))[_0x2c0c('0x45')](_0x2c0c('0x4a'))[_0x2c0c('0x45')](_0x2c0c('0x4b'))[_0x2c0c('0x47')](_0x2c0c('0x4c'),'ui')['left_join'](_0x2c0c('0x4d'),'u',_0x2c0c('0x4e'));var _0x257655=squel['select']()[_0x2c0c('0x47')](_0x2c0c('0x4f'),'i')[_0x2c0c('0x50')](_0x2c0c('0x51'),'c',_0x2c0c('0x52'))[_0x2c0c('0x50')](_0x2c0c('0x4d'),'o',_0x2c0c('0x53'))[_0x2c0c('0x50')](_0x2c0c('0x54'),'a',_0x2c0c('0x55'))[_0x2c0c('0x50')]('whatsapp_messages','me',_0x2c0c('0x56'))[_0x2c0c('0x50')](_0x2c0c('0x57'),'it',_0x2c0c('0x58'))[_0x2c0c('0x50')](_0x2c0c('0x48'),'t','t.id\x20=\x20it.TagId');var _0x3477c6=squel[_0x2c0c('0x59')]();var _0x46d012=[];var _0x50d348=squel[_0x2c0c('0x59')]();var _0x512971;if(_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x5a')]){_0x512971=as[_0x2c0c('0x5b')](_0x15d14b[_0x2c0c('0x39')]['search']);var _0x32996a=_0x512971['sqlOperator'];for(var _0x217002=0x0;_0x217002<_0x512971[_0x2c0c('0x5c')]['length'];_0x217002++){var _0x595183=_0x512971[_0x2c0c('0x5c')][_0x217002];var _0x11f01f='i';var _0x3bf1e2=_[_0x2c0c('0x5d')](_0x5b40a1,[_0x2c0c('0x38'),_0x595183[_0x2c0c('0x45')]]);if(!_0x3bf1e2){switch(_0x595183[_0x2c0c('0x45')]){case _0x2c0c('0x5e'):if(_0x595183[_0x2c0c('0x5f')]==0x1){_0x257655['having']('`'+_0x595183[_0x2c0c('0x45')]+_0x2c0c('0x60'));}else{_0x257655[_0x2c0c('0x61')]('`'+_0x595183['field']+_0x2c0c('0x62'));}break;case _0x2c0c('0x63'):if(_0x595183[_0x2c0c('0x64')]===_0x2c0c('0x65')){if(_0x595183['value']['split']('\x20')[_0x2c0c('0x3e')]>0x1){_0x3477c6[_0x32996a](_0x2c0c('0x66'),qs[_0x2c0c('0x67')](_0x595183[_0x2c0c('0x5f')]),null);}else{var _0x23b11a='%'+_0x595183[_0x2c0c('0x5f')]+'%';_0x3477c6[_0x32996a](_0x2c0c('0x68'),_0x23b11a,_0x23b11a,_0x23b11a);}}else{_0x3bf1e2=_[_0x2c0c('0x5d')](_0x5b40a1,[_0x2c0c('0x38'),_0x2c0c('0x69')]);_0x595183[_0x2c0c('0x45')]='ContactId';_0xa8fecc=as[_0x2c0c('0x6a')](_0x11f01f,_0x3bf1e2[_0x2c0c('0x35')],_0x595183);_0x3477c6[_0x32996a](_0xa8fecc['text'],_0xa8fecc[_0x2c0c('0x5f')][_0x2c0c('0x6b')],_0xa8fecc[_0x2c0c('0x5f')][_0x2c0c('0x6c')]);}break;case _0x2c0c('0x6d'):var _0x1ded79=_0x595183['value'][_0x2c0c('0x2f')](',')[_0x2c0c('0x2b')](function(_0x361d37){return Number(_0x361d37);});_0x1ded79[_0x2c0c('0x30')](function(_0x1cfc1b){_0x50d348['or'](_0x2c0c('0x6e'),'%,'+_0x1cfc1b+',%');});_0x46d012=_[_0x2c0c('0x6f')](_0x46d012,_0x1ded79);break;case'User':if(_0x595183['operator']===_0x2c0c('0x65')){_0x3477c6[_0x32996a](_0x2c0c('0x70'),'%'+_0x595183[_0x2c0c('0x5f')]+'%',null);}else{_0x3bf1e2=_['find'](_0x5b40a1,[_0x2c0c('0x38'),_0x2c0c('0x71')]);_0x595183[_0x2c0c('0x45')]='UserId';_0xa8fecc=as[_0x2c0c('0x6a')](_0x11f01f,_0x3bf1e2[_0x2c0c('0x35')],_0x595183);_0x3477c6[_0x32996a](_0xa8fecc['text'],_0xa8fecc[_0x2c0c('0x5f')][_0x2c0c('0x6b')],_0xa8fecc[_0x2c0c('0x5f')]['end']);}break;case'body':_0xa8fecc=as['buildExpression']('me',null,_0x595183);_0x3477c6[_0x32996a](_0xa8fecc[_0x2c0c('0x72')],_0xa8fecc[_0x2c0c('0x5f')]['start'],_0xa8fecc[_0x2c0c('0x5f')][_0x2c0c('0x6c')]);break;}}else{var _0xa8fecc=as[_0x2c0c('0x6a')](_0x11f01f,_0x3bf1e2[_0x2c0c('0x35')],_0x595183);_0x3477c6[_0x32996a](_0xa8fecc[_0x2c0c('0x72')],_0xa8fecc['value']['start'],_0xa8fecc[_0x2c0c('0x5f')][_0x2c0c('0x6c')]);}}}else{var _0x1c2860=_(_0x15d14b['query'])[_0x2c0c('0x3a')]()[_0x2c0c('0x2b')](function(_0x259fa0){return _[_0x2c0c('0x73')](_0x5b40a1,[_0x2c0c('0x38'),_0x259fa0])?_0x259fa0:undefined;})[_0x2c0c('0x74')]()[_0x2c0c('0x5f')]();if(!_['isEmpty'](_0x1c2860)){_0x1c2860[_0x2c0c('0x30')](function(_0x3cf0ee){if(_0x3cf0ee===_0x2c0c('0x75')){_0x257655[_0x2c0c('0x42')](_0x2c0c('0x76'),[][_0x2c0c('0x77')](_0x15d14b['query'][_0x3cf0ee]));}else if(_0x3cf0ee===_0x2c0c('0x78')){var _0x367dfb=JSON['parse'](_0x15d14b[_0x2c0c('0x39')][_0x3cf0ee])[_0x2c0c('0x79')];var _0xc6b975=JSON[_0x2c0c('0x7a')](_0x15d14b[_0x2c0c('0x39')][_0x3cf0ee])[_0x2c0c('0x7b')];_0x257655[_0x2c0c('0x42')](_0x2c0c('0x7c'),_0x367dfb,_0xc6b975);}else{if(_0x15d14b[_0x2c0c('0x39')][_0x3cf0ee]===_0x2c0c('0x7d')){_0x257655[_0x2c0c('0x42')]('i.'+_0x3cf0ee+_0x2c0c('0x7e'));}else{_0x257655['where']('i.'+_0x3cf0ee+_0x2c0c('0x7f'),_0x15d14b[_0x2c0c('0x39')][_0x3cf0ee]);}}});}if(_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x80')]){if(_0x15d14b[_0x2c0c('0x39')]['read']==0x1){_0x257655[_0x2c0c('0x61')]('`unreadMessages`\x20=\x200');}else{_0x257655[_0x2c0c('0x61')](_0x2c0c('0x81'));}}if(_0x15d14b[_0x2c0c('0x39')]['tag']){_0x46d012=_[_0x2c0c('0x82')](_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x83')])?_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x83')]:new Array(_0x15d14b['query'][_0x2c0c('0x83')]);_0x46d012[_0x2c0c('0x30')](function(_0x1ad558){_0x50d348['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1ad558+',%');});}if(_0x15d14b[_0x2c0c('0x39')]['filter']){var _0x39d56=_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x84')][_0x2c0c('0x85')]('\x5c','\x5c\x5c')[_0x2c0c('0x85')](/'/g,'\x27\x27');if(qs[_0x2c0c('0x86')](_0x39d56)){_0x3477c6['or'](_0x2c0c('0x87'),_0x39d56+'%')['or'](_0x2c0c('0x88'),_0x39d56+'%');}else{_0x3477c6['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x2c0c('0x67')](_0x39d56))['or'](_0x2c0c('0x89'),_0x39d56+'%');}}}_0x257655[_0x2c0c('0x42')](_0x3477c6);_0x257655['group'](_0x2c0c('0x8a'));var _0x458243={'type':db['Sequelize'][_0x2c0c('0x8b')]['SELECT'],'raw':!![]};var _0x16908b=_0x257655[_0x2c0c('0x8c')]();_0x16908b[_0x2c0c('0x45')](_0x2c0c('0x8a'));_0x16908b[_0x2c0c('0x45')](_0x2c0c('0x8d'),_0x2c0c('0x5e'));if(_0x41153d[_0x2c0c('0x40')]){_0x41153d['order'][_0x2c0c('0x30')](function(_0x48c68b){var _0x592edc=_0x48c68b[0x0]==='contactName'?_0x48c68b[0x0]:'i.'+_0x48c68b[0x0];_0x257655['order'](_0x592edc,_0x48c68b[0x1]==='DESC'?![]:!![]);});}if(!_[_0x2c0c('0x8e')](_0x46d012)){_0x257655[_0x2c0c('0x61')](_0x50d348);_0x16908b[_0x2c0c('0x42')](_0x2c0c('0x8f'),_0x46d012);}BPromise[_0x2c0c('0x90')]()['then'](function(){if(!_0x512971){if(_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x75')])return;_0x16908b[_0x2c0c('0x42')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');_0x257655['where'](_0x2c0c('0x91'));return;}if(_0x15d14b[_0x2c0c('0x92')]['role']!==_0x2c0c('0x93'))return;return _0x15d14b[_0x2c0c('0x92')][_0x2c0c('0x94')]({'attributes':['id'],'raw':!![]})[_0x2c0c('0x28')](function(_0x353232){if(_[_0x2c0c('0x8e')](_0x353232)){_0x16908b[_0x2c0c('0x42')](_0x2c0c('0x95'));_0x257655['where'](_0x2c0c('0x95'));}else{_0x16908b[_0x2c0c('0x42')](_0x2c0c('0x76'),_[_0x2c0c('0x2b')](_0x353232,'id'));_0x257655['where']('i.WhatsappAccountId\x20IN\x20?',_[_0x2c0c('0x2b')](_0x353232,'id'));}});})[_0x2c0c('0x28')](function(){if(_0x15d14b['user'][_0x2c0c('0x96')]===_0x2c0c('0x93')&&!_0x512971&&!_0x15d14b['query'][_0x2c0c('0x75')])return[];return db[_0x2c0c('0x97')][_0x2c0c('0x39')](_0x16908b['toString'](),_0x458243);})[_0x2c0c('0x28')](function(_0x385318){_0x3a921e[_0x2c0c('0x98')]=_0x385318['length'];if(_0x3a921e[_0x2c0c('0x98')]===0x0)return[];return db['sequelize'][_0x2c0c('0x39')](_0x1c7d0d['toString'](),_0x458243)['then'](function(_0x168d95){_0xf79571=_['keyBy'](_0x168d95,'id');_0x458243=_[_0x2c0c('0x99')](_0x458243,{'model':db[_0x2c0c('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x15d14b[_0x2c0c('0x39')][_0x2c0c('0x3c')]){_0x41153d[_0x2c0c('0x3d')][_0x2c0c('0x30')](function(_0x20e0c8){_0x257655[_0x2c0c('0x45')]('i.'+_0x20e0c8);});}else{_0x257655[_0x2c0c('0x45')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x257655['field'](_0x2c0c('0x9a'),'Account.key');_0x257655[_0x2c0c('0x45')](_0x2c0c('0x9b'),_0x2c0c('0x9c'));_0x257655[_0x2c0c('0x45')](_0x2c0c('0x9d'),'contactName');_0x257655[_0x2c0c('0x45')](_0x2c0c('0x9e'));_0x257655['field'](_0x2c0c('0x9f'),_0x2c0c('0xa0'));_0x257655[_0x2c0c('0x45')](_0x2c0c('0xa1'),_0x2c0c('0xa2'));_0x257655[_0x2c0c('0x45')]('c.email',_0x2c0c('0xa3'));_0x257655[_0x2c0c('0x45')](_0x2c0c('0xa4'),'Contact.phone');_0x257655['field'](_0x2c0c('0xa5'),_0x2c0c('0xa6'));_0x257655['field'](_0x2c0c('0xa7'),'Contact.fax');_0x257655[_0x2c0c('0x45')]('o.fullname',_0x2c0c('0xa8'));_0x257655[_0x2c0c('0x45')](_0x2c0c('0xa9'),_0x2c0c('0xaa'));_0x257655[_0x2c0c('0x45')](_0x2c0c('0xab'),_0x2c0c('0x2e'));}if(_0x41153d['limit'])_0x257655[_0x2c0c('0x24')](_0x41153d['limit']);if(_0x41153d[_0x2c0c('0x23')])_0x257655[_0x2c0c('0x23')](_0x41153d[_0x2c0c('0x23')]);return db[_0x2c0c('0x97')][_0x2c0c('0x39')](_0x257655[_0x2c0c('0xac')](),_0x458243);})[_0x2c0c('0x28')](function(_0x33ca32){if(_0x33ca32[_0x2c0c('0x3e')]>0x0)_0x1e16d1[_0x2c0c('0x42')](_0x2c0c('0xad'),_[_0x2c0c('0x2b')](_0x33ca32,'id'));return db[_0x2c0c('0x97')][_0x2c0c('0x39')](_0x1e16d1[_0x2c0c('0xac')](),_0x458243)[_0x2c0c('0x28')](function(_0xaed0a7){var _0x7092e3=_[_0x2c0c('0xae')](_0xaed0a7,_0x2c0c('0xaf'));var _0x5aa42f=[];_0x33ca32['forEach'](function(_0x2eef69){_0x5aa42f[_0x2c0c('0x31')](updateWhatsappInteraction(_0x2eef69,_0xf79571,_0x7092e3));});return BPromise[_0x2c0c('0xb0')](_0x5aa42f);});});})[_0x2c0c('0x28')](function(_0x25bd70){_0x3a921e[_0x2c0c('0xb1')]=_0x25bd70;return _0x3a921e;})['then'](respondWithFilteredResult(_0x4d9380,_0x41153d))[_0x2c0c('0x32')](handleError(_0x4d9380,null));};exports[_0x2c0c('0xb2')]=function(_0x576b26,_0x537140){var _0x10f844={'raw':![],'where':{'id':_0x576b26['params']['id']}},_0x44e81d={};_0x44e81d['model']=_['keys'](db[_0x2c0c('0x33')][_0x2c0c('0x34')]);_0x44e81d[_0x2c0c('0x39')]=_[_0x2c0c('0x3a')](_0x576b26[_0x2c0c('0x39')]);_0x44e81d[_0x2c0c('0x43')]=_[_0x2c0c('0x3b')](_0x44e81d['model'],_0x44e81d[_0x2c0c('0x39')]);_0x10f844[_0x2c0c('0x3d')]=_['intersection'](_0x44e81d['model'],qs[_0x2c0c('0x3c')](_0x576b26[_0x2c0c('0x39')][_0x2c0c('0x3c')]));_0x10f844[_0x2c0c('0x3d')]=_0x10f844[_0x2c0c('0x3d')][_0x2c0c('0x3e')]?_0x10f844[_0x2c0c('0x3d')]:_0x44e81d[_0x2c0c('0x37')];if(_0x576b26[_0x2c0c('0x39')][_0x2c0c('0xb3')]){_0x10f844['include']=[{'all':!![]}];}_0x10f844=_[_0x2c0c('0x99')]({},_0x10f844,_0x576b26[_0x2c0c('0xb4')]);return db[_0x2c0c('0x33')][_0x2c0c('0x5d')](_0x10f844)[_0x2c0c('0x28')](handleEntityNotFound(_0x537140,null))[_0x2c0c('0x28')](respondWithResult(_0x537140,null))[_0x2c0c('0x32')](handleError(_0x537140,null));};exports[_0x2c0c('0xb5')]=function(_0x12c227,_0x24dbc0){return db[_0x2c0c('0x33')]['create'](_0x12c227[_0x2c0c('0xb6')],{})['then'](respondWithResult(_0x24dbc0,0xc9))[_0x2c0c('0x32')](handleError(_0x24dbc0,null));};exports[_0x2c0c('0xb7')]=function(_0x295cdd,_0x35f00c){if(_0x295cdd[_0x2c0c('0xb6')]['id']){delete _0x295cdd[_0x2c0c('0xb6')]['id'];}return db[_0x2c0c('0x33')][_0x2c0c('0x5d')]({'where':{'id':_0x295cdd[_0x2c0c('0xb8')]['id']}})[_0x2c0c('0x28')](handleEntityNotFound(_0x35f00c,null))[_0x2c0c('0x28')](saveUpdates(_0x295cdd[_0x2c0c('0xb6')],null))[_0x2c0c('0x28')](respondWithResult(_0x35f00c,null))['catch'](handleError(_0x35f00c,null));};exports[_0x2c0c('0xb9')]=function(_0x36b5b8,_0x1a1004){return db['WhatsappInteraction'][_0x2c0c('0x5d')]({'where':{'id':_0x36b5b8['params']['id']}})[_0x2c0c('0x28')](handleEntityNotFound(_0x1a1004,null))[_0x2c0c('0x28')](removeEntity(_0x1a1004,null))[_0x2c0c('0x32')](handleError(_0x1a1004,null));};exports[_0x2c0c('0xba')]=function(_0x20fe0f,_0x113e67){return db['WhatsappInteraction'][_0x2c0c('0xba')]()['then'](respondWithResult(_0x113e67,null))[_0x2c0c('0x32')](handleError(_0x113e67,null));};exports[_0x2c0c('0xbb')]=function(_0x2b6044,_0x4ea9c4,_0x20ed04){return db['WhatsappMessage']['find']({'where':{'id':_0x2b6044[_0x2c0c('0xb8')]['id']}})[_0x2c0c('0x28')](handleEntityNotFound(_0x4ea9c4,null))['then'](function(_0x1daf01){if(_0x1daf01){return _0x1daf01[_0x2c0c('0xbb')](_0x2b6044['body'][_0x2c0c('0xbc')],_[_0x2c0c('0xbd')](_0x2b6044['body'],[_0x2c0c('0xbc'),'id'])||{});}})[_0x2c0c('0x28')](respondWithResult(_0x4ea9c4,null))[_0x2c0c('0x32')](handleError(_0x4ea9c4,null));};exports[_0x2c0c('0xbe')]=function(_0x3d4398,_0x378a45,_0x55d3c1){var _0x54395b={'raw':![],'where':{}};var _0x6105df={};var _0x11e483={'count':0x0,'rows':[]};return db[_0x2c0c('0x33')][_0x2c0c('0xbf')]({'where':{'id':_0x3d4398[_0x2c0c('0xb8')]['id']}})[_0x2c0c('0x28')](handleEntityNotFound(_0x378a45,null))[_0x2c0c('0x28')](function(_0x6b2f7c){if(_0x6b2f7c){_0x6105df[_0x2c0c('0x37')]=_[_0x2c0c('0x3a')](db[_0x2c0c('0xc0')][_0x2c0c('0x34')]);_0x6105df[_0x2c0c('0x39')]=_[_0x2c0c('0x3a')](_0x3d4398['query']);_0x6105df[_0x2c0c('0x43')]=_[_0x2c0c('0x3b')](_0x6105df[_0x2c0c('0x37')],_0x6105df[_0x2c0c('0x39')]);_0x54395b[_0x2c0c('0x3d')]=_['intersection'](_0x6105df['model'],qs['fields'](_0x3d4398[_0x2c0c('0x39')][_0x2c0c('0x3c')]));_0x54395b['attributes']=_0x54395b['attributes'][_0x2c0c('0x3e')]?_0x54395b[_0x2c0c('0x3d')]:_0x6105df[_0x2c0c('0x37')];if(!_0x3d4398[_0x2c0c('0x39')]['hasOwnProperty']('nolimit')){_0x54395b[_0x2c0c('0x24')]=qs[_0x2c0c('0x24')](_0x3d4398[_0x2c0c('0x39')][_0x2c0c('0x24')]);_0x54395b[_0x2c0c('0x23')]=qs['offset'](_0x3d4398[_0x2c0c('0x39')][_0x2c0c('0x23')]);}_0x54395b['order']=qs[_0x2c0c('0x41')](_0x3d4398[_0x2c0c('0x39')]['sort']);_0x54395b[_0x2c0c('0x42')]=qs[_0x2c0c('0x43')](_[_0x2c0c('0x44')](_0x3d4398[_0x2c0c('0x39')],_0x6105df[_0x2c0c('0x43')]));_0x54395b[_0x2c0c('0x42')][_0x2c0c('0xaf')]=_0x6b2f7c['id'];if(_0x3d4398[_0x2c0c('0x39')][_0x2c0c('0x84')]){_0x54395b[_0x2c0c('0x42')]=_[_0x2c0c('0x99')](_0x54395b[_0x2c0c('0x42')],{'$or':_[_0x2c0c('0x2b')](_0x54395b[_0x2c0c('0x3d')],function(_0x1a876d){var _0x4f6f75={};_0x4f6f75[_0x1a876d]={'$like':'%'+_0x3d4398[_0x2c0c('0x39')][_0x2c0c('0x84')]+'%'};return _0x4f6f75;})});}if(_0x3d4398[_0x2c0c('0x39')]['$gte']){var _0x24dc20=_0x3d4398['query'][_0x2c0c('0x79')][_0x2c0c('0x2f')](',');var _0x431f4a={};_0x431f4a[_0x24dc20[0x0]]={'$gte':moment(_0x24dc20[0x1])[_0x2c0c('0xc1')](_0x2c0c('0xc2'))};_0x54395b[_0x2c0c('0x42')]=_[_0x2c0c('0x99')](_0x54395b['where'],_0x431f4a);}_0x54395b=_['merge']({},_0x54395b,_0x3d4398[_0x2c0c('0xb4')]);return db[_0x2c0c('0xc0')][_0x2c0c('0x98')]({'where':_0x54395b[_0x2c0c('0x42')]})[_0x2c0c('0x28')](function(_0x358e70){_0x11e483[_0x2c0c('0x98')]=_0x358e70;if(_0x3d4398[_0x2c0c('0x39')][_0x2c0c('0xb3')]){_0x54395b[_0x2c0c('0xc3')]=[{'all':!![]}];}return db[_0x2c0c('0xc0')]['findAll'](_0x54395b);})[_0x2c0c('0x28')](function(_0x592197){_0x11e483[_0x2c0c('0xb1')]=_0x592197;return _0x11e483;});}})['then'](respondWithFilteredResult(_0x378a45,_0x54395b))[_0x2c0c('0x32')](handleError(_0x378a45,null));};exports[_0x2c0c('0xc4')]=function(_0x5ba5d4,_0x4756ee,_0x48720f){return db[_0x2c0c('0x33')][_0x2c0c('0x5d')]({'where':{'id':_0x5ba5d4[_0x2c0c('0xb8')]['id']}})['then'](handleEntityNotFound(_0x4756ee,null))['then'](function(_0x2bb9ce){if(_0x2bb9ce){return _0x2bb9ce['setTags'](_0x5ba5d4[_0x2c0c('0xb6')]['ids'],_[_0x2c0c('0xbd')](_0x5ba5d4['body'],[_0x2c0c('0xbc'),'id'])||{})[_0x2c0c('0xc5')](function(){return db[_0x2c0c('0x6d')]['findAll']({'attributes':['id',_0x2c0c('0x38'),_0x2c0c('0x46')],'where':{'id':_0x5ba5d4[_0x2c0c('0xb6')][_0x2c0c('0xbc')]}});})[_0x2c0c('0x28')](function(_0x29bf66){socket['emit'](_0x2c0c('0xc6'),{'id':Number(_0x5ba5d4['params']['id']),'tags':_0x29bf66||[]});return{'id':Number(_0x5ba5d4[_0x2c0c('0xb8')]['id']),'tags':_0x29bf66||[]};});}})[_0x2c0c('0x28')](respondWithResult(_0x4756ee,null))[_0x2c0c('0x32')](handleError(_0x4756ee,null));};exports[_0x2c0c('0xc7')]=function(_0x52d96b,_0x4cda51,_0x182c03){return db['WhatsappInteraction']['find']({'where':{'id':_0x52d96b['params']['id']}})[_0x2c0c('0x28')](handleEntityNotFound(_0x4cda51,null))[_0x2c0c('0x28')](function(_0x930357){if(_0x930357){return _0x930357['removeTags'](_0x52d96b[_0x2c0c('0x39')]['ids']);}})[_0x2c0c('0x28')](respondWithStatusCode(_0x4cda51,null))[_0x2c0c('0x32')](handleError(_0x4cda51,null));};exports['download']=function(_0x580839,_0x55e743){var _0x2dc4f1=moment()['unix']()['toString']();var _0x5831e6=path[_0x2c0c('0xc8')](config[_0x2c0c('0xc9')],_0x2c0c('0xca'),_0x2c0c('0xcb'),_0x2c0c('0xcc'));var _0x3359bf=path['join'](config[_0x2c0c('0xc9')],_0x2c0c('0xca'),'files',_0x2c0c('0xcd'));var _0x418b1f=path[_0x2c0c('0xc8')](_0x5831e6,_0x2dc4f1);var _0xf696d8=util[_0x2c0c('0xc1')](_0x2c0c('0xce'),_0x580839[_0x2c0c('0xb8')]['id'],_0x2dc4f1);var _0x38add1=path[_0x2c0c('0xc8')](_0x5831e6,_0xf696d8);var _0x1e42be=[];_0x1e42be[_0x2c0c('0x31')]({'model':db['User'],'as':'User','attributes':['id',_0x2c0c('0x2c')],'raw':!![]});_0x1e42be[_0x2c0c('0x31')]({'model':db[_0x2c0c('0xcf')],'as':_0x2c0c('0x63'),'attributes':['id',_0x2c0c('0xd0'),'lastName'],'raw':!![]});if(_0x580839[_0x2c0c('0x39')]['attachments']){_0x1e42be[_0x2c0c('0x31')]({'model':db[_0x2c0c('0xd1')],'as':_0x2c0c('0xd1'),'raw':!![]});}var _0x3622fa=[{'model':db[_0x2c0c('0xc0')],'as':_0x2c0c('0xd2'),'attributes':['id',_0x2c0c('0xb6'),_0x2c0c('0x78'),'direction',_0x2c0c('0xd3'),'read'],'include':_0x1e42be}];_0x3622fa['push']({'model':db[_0x2c0c('0xd4')],'as':_0x2c0c('0xd5'),'attributes':['id',_0x2c0c('0x38')]});_0x3622fa[_0x2c0c('0x31')]({'model':db[_0x2c0c('0xd6')],'as':_0x2c0c('0xd7'),'attributes':['id',_0x2c0c('0x2c')]});return db[_0x2c0c('0x33')][_0x2c0c('0x5d')]({'where':{'id':_0x580839[_0x2c0c('0xb8')]['id']},'include':_0x3622fa})[_0x2c0c('0x28')](handleEntityNotFound(_0x55e743,null))[_0x2c0c('0x28')](function(_0x429f71){if(_0x429f71){var _0x3caebd=_0x429f71[_0x2c0c('0xd8')]({'plain':!![]});fs[_0x2c0c('0xd9')](_0x418b1f);var _0x2df693={'channel':'Whatsapp','account':_0x3caebd[_0x2c0c('0xd5')][_0x2c0c('0x38')],'agent':_0x3caebd[_0x2c0c('0xd7')]?_0x3caebd[_0x2c0c('0xd7')][_0x2c0c('0x2c')]:'N.A.','createdAt':moment(_0x3caebd['createdAt'])[_0x2c0c('0xc1')](_0x2c0c('0xc2'))[_0x2c0c('0xac')](),'closedAt':_0x3caebd['closed']?moment(_0x3caebd[_0x2c0c('0xda')])[_0x2c0c('0xc1')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2c0c('0xac')]():'','disposition':_0x3caebd[_0x2c0c('0xdb')],'messages':_(_0x3caebd['Messages'])[_0x2c0c('0x84')]({'secret':![]})['map'](function(_0x1cc012){if(_0x1cc012['Attachment']){var _0x11fa3f=path[_0x2c0c('0xc8')](_0x3359bf,_0x1cc012[_0x2c0c('0xd1')][_0x2c0c('0xdc')]);if(fs['existsSync'](_0x11fa3f)){fs['createReadStream'](_0x11fa3f)['pipe'](fs[_0x2c0c('0xdd')](path['join'](_0x418b1f,_0x1cc012[_0x2c0c('0xd1')][_0x2c0c('0xdc')])));}}return{'date':moment(_0x1cc012[_0x2c0c('0x78')])[_0x2c0c('0xc1')](_0x2c0c('0xc2'))['toString'](),'sender':_0x1cc012['direction']==='out'?_0x1cc012['User']?_0x1cc012[_0x2c0c('0xd6')][_0x2c0c('0x2c')]:_0x2c0c('0xde'):_0x1cc012[_0x2c0c('0x63')][_0x2c0c('0xd0')]+(_0x1cc012[_0x2c0c('0x63')][_0x2c0c('0xdf')]?'\x20'+_0x1cc012[_0x2c0c('0x63')]['lastName']:''),'body':_0x1cc012[_0x2c0c('0xd1')]?_0x1cc012[_0x2c0c('0xd1')][_0x2c0c('0xdc')]:_0x1cc012[_0x2c0c('0xb6')],'direction':_0x1cc012[_0x2c0c('0xe0')]===_0x2c0c('0xe1')?'A':'C','secret':_0x1cc012['secret'],'read':_0x1cc012['read'],'attachment':_0x1cc012['Attachment']};})[_0x2c0c('0x5f')]()};return ejs['renderFile'](path['join'](config[_0x2c0c('0xc9')],_0x2c0c('0xca'),_0x2c0c('0xe2'),_0x2c0c('0xe3')),{'interaction':_0x2df693})[_0x2c0c('0x28')](function(_0x320b10){var _0x11b815=path[_0x2c0c('0xc8')](_0x418b1f,_0x2c0c('0xe4')+_0x3caebd['id']+'-'+_0x2dc4f1+'.pdf');var _0x3e1276={'path':_0x11b815,'channel':_0x2c0c('0xe5'),'interactionId':_0x3caebd['id']};return pdf['createPdfFromHTML'](_0x320b10,_0x3e1276);})[_0x2c0c('0x28')](function(){return new BPromise(function(_0x46967d,_0x2256c3){zipdir(_0x418b1f,{'saveTo':_0x38add1},function(_0xc6e32c,_0x5c8a6f){if(_0xc6e32c)return _0x2256c3(_0xc6e32c);return _0x46967d(_0x5c8a6f);});})[_0x2c0c('0x28')](function(){return new BPromise(function(_0x1e1052,_0x2ea38a){rimraf(_0x418b1f,function(_0x4b993b){if(_0x4b993b)_0x2ea38a(_0x4b993b);return _0x1e1052();});});})[_0x2c0c('0x28')](function(){return _0x55e743[_0x2c0c('0xe6')](_0x38add1,_0xf696d8,function(_0x13e56f){if(_0x13e56f){console[_0x2c0c('0xe7')](_0x2c0c('0xe8'),_0x13e56f);}else{fs['unlinkSync'](_0x38add1);}});});});}else{return _0x55e743[_0x2c0c('0x20')](0xc8);}})[_0x2c0c('0x32')](handleError(_0x55e743,null));};
\ No newline at end of file
+var _0xa25a=['UserId','body','some','compact','isEmpty','WhatsappAccountId','where','i.WhatsappAccountId\x20IN\x20?','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','agent','sequelize','toString','merge','a.key','Account.key','a.mandatoryDisposition','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','WhatsappInteractionId','push','all','show','include','options','create','update','describe','addMessage','WhatsappMessage','params','ids','omit','getMessages','findOne','nolimit','filter','$gte','format','findAll','rows','addTags','spread','color','emit','whatsappInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','firstName','lastName','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Account','get','Whatsapp','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','renderFile','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/environment','redis','defaults','localhost','register','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','fullname','Tags','TagIds','split','forEach','catch','index','WhatsappInteraction','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','select','field','from','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','tools_tags','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find'];(function(_0x188703,_0x596b26){var _0x1a0c81=function(_0x1cd22d){while(--_0x1cd22d){_0x188703['push'](_0x188703['shift']());}};_0x1a0c81(++_0x596b26);}(_0xa25a,0x160));var _0xaa25=function(_0xcb8474,_0x36a0fe){_0xcb8474=_0xcb8474-0x0;var _0x212304=_0xa25a[_0xcb8474];return _0x212304;};'use strict';var emlformat=require(_0xaa25('0x0'));var rimraf=require(_0xaa25('0x1'));var zipdir=require(_0xaa25('0x2'));var jsonpatch=require(_0xaa25('0x3'));var rp=require(_0xaa25('0x4'));var moment=require(_0xaa25('0x5'));var BPromise=require(_0xaa25('0x6'));var Mustache=require(_0xaa25('0x7'));var util=require(_0xaa25('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xaa25('0x9'));var ejs=require(_0xaa25('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaa25('0xb'));var squel=require(_0xaa25('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xaa25('0xd'));var toCsv=require(_0xaa25('0x9'));var querystring=require('querystring');var Papa=require(_0xaa25('0xe'));var Redis=require('ioredis');var authService=require(_0xaa25('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xaa25('0x10'));var pdf=require(_0xaa25('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaa25('0x12'))(_0xaa25('0x13'));var utils=require('../../config/utils');var config=require(_0xaa25('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xaa25('0x15')]=_[_0xaa25('0x16')](config['redis'],{'host':_0xaa25('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaa25('0x15')]));require('./whatsappInteraction.socket')[_0xaa25('0x18')](socket);function respondWithStatusCode(_0x47b953,_0x3ae3ab){_0x3ae3ab=_0x3ae3ab||0xcc;return function(_0x452084){if(_0x452084){return _0x47b953[_0xaa25('0x19')](_0x3ae3ab);}return _0x47b953['status'](_0x3ae3ab)[_0xaa25('0x1a')]();};}function respondWithResult(_0x18aad4,_0x9df15f){_0x9df15f=_0x9df15f||0xc8;return function(_0x475436){if(_0x475436){return _0x18aad4[_0xaa25('0x1b')](_0x9df15f)[_0xaa25('0x1c')](_0x475436);}};}function respondWithFilteredResult(_0x896a57,_0x40eac5){return function(_0x4d72d8){if(_0x4d72d8){var _0x4dd7f8=typeof _0x40eac5['offset']===_0xaa25('0x1d')&&typeof _0x40eac5['limit']==='undefined';var _0x5717dd=_0x4d72d8[_0xaa25('0x1e')];var _0x469947=_0x4dd7f8?0x0:_0x40eac5[_0xaa25('0x1f')];var _0x6b1964=_0x4dd7f8?_0x4d72d8[_0xaa25('0x1e')]:_0x40eac5['offset']+_0x40eac5[_0xaa25('0x20')];var _0x30e60e;if(_0x6b1964>=_0x5717dd){_0x6b1964=_0x5717dd;_0x30e60e=0xc8;}else{_0x30e60e=0xce;}_0x896a57[_0xaa25('0x1b')](_0x30e60e);return _0x896a57[_0xaa25('0x21')](_0xaa25('0x22'),_0x469947+'-'+_0x6b1964+'/'+_0x5717dd)['json'](_0x4d72d8);}return null;};}function patchUpdates(_0x445aa5){return function(_0x28dbbf){try{jsonpatch[_0xaa25('0x23')](_0x28dbbf,_0x445aa5,!![]);}catch(_0xcf1316){return BPromise[_0xaa25('0x24')](_0xcf1316);}return _0x28dbbf[_0xaa25('0x25')]();};}function saveUpdates(_0x143a5c,_0x5cd5f1){return function(_0xbdfabc){if(_0xbdfabc){return _0xbdfabc['update'](_0x143a5c)[_0xaa25('0x26')](function(_0x630afe){return _0x630afe;});}return null;};}function removeEntity(_0x51a974,_0x4d3863){return function(_0x430d0a){if(_0x430d0a){return _0x430d0a[_0xaa25('0x27')]()[_0xaa25('0x26')](function(){_0x51a974[_0xaa25('0x1b')](0xcc)[_0xaa25('0x1a')]();});}};}function handleEntityNotFound(_0x171c24,_0x27ff13){return function(_0x280856){if(!_0x280856){_0x171c24[_0xaa25('0x19')](0x194);}return _0x280856;};}function handleError(_0x8eb714,_0x1dcb09){_0x1dcb09=_0x1dcb09||0x1f4;return function(_0x146e28){logger[_0xaa25('0x28')](_0x146e28[_0xaa25('0x29')]);if(_0x146e28[_0xaa25('0x2a')]){delete _0x146e28[_0xaa25('0x2a')];}_0x8eb714[_0xaa25('0x1b')](_0x1dcb09)[_0xaa25('0x2b')](_0x146e28);};}function getInteractionUsers(_0x43f129,_0x681671){return new BPromise(function(_0xe7ed55,_0x4c7904){try{if(_0x681671[_0x43f129['id']]){_0x43f129['Users']=_[_0xaa25('0x2c')](_0x681671[_0x43f129['id']],function(_0x210b22){return{'id':_0x210b22['id'],'fullname':_0x210b22[_0xaa25('0x2d')]};});}}catch(_0x220bb6){_0x4c7904(_0x220bb6);}_0xe7ed55(_0x43f129);});}function getInteractionTags(_0x3ace3b,_0xe45ef6){return new BPromise(function(_0x1bbbe7,_0x5c7209){try{if(_0x3ace3b['TagIds']){_0x3ace3b[_0xaa25('0x2e')]=[];_0x3ace3b[_0xaa25('0x2f')][_0xaa25('0x30')](',')[_0xaa25('0x31')](function(_0x258cb9){_0x3ace3b[_0xaa25('0x2e')]['push'](_0xe45ef6[_0x258cb9]);});}delete _0x3ace3b[_0xaa25('0x2f')];}catch(_0x31cdf6){_0x5c7209(_0x31cdf6);}_0x1bbbe7(_0x3ace3b);});}function updateWhatsappInteraction(_0xcc157e,_0x49b733,_0x549ce4){return new BPromise(function(_0x5c80c7,_0x4c10db){return getInteractionUsers(_0xcc157e,_0x549ce4)[_0xaa25('0x26')](function(_0x4758d1){return getInteractionTags(_0x4758d1,_0x49b733);})[_0xaa25('0x26')](function(_0x625c24){_0x5c80c7(_0x625c24);})[_0xaa25('0x32')](function(_0x98ba31){_0x4c10db(_0x98ba31);});});}exports[_0xaa25('0x33')]=function(_0x1eba53,_0x481f70){var _0x301b0f={},_0x2579eb={},_0xe7503c={'count':0x0,'rows':[]};var _0xaff2ed=_[_0xaa25('0x2c')](db[_0xaa25('0x34')][_0xaa25('0x35')],function(_0x4e8e8c){return{'name':_0x4e8e8c['fieldName'],'type':_0x4e8e8c[_0xaa25('0x36')][_0xaa25('0x37')]};});_0x2579eb[_0xaa25('0x38')]=_[_0xaa25('0x2c')](_0xaff2ed,'name');_0x2579eb[_0xaa25('0x39')]=_[_0xaa25('0x3a')](_0x1eba53[_0xaa25('0x39')]);_0x2579eb[_0xaa25('0x3b')]=_['intersection'](_0x2579eb[_0xaa25('0x38')],_0x2579eb[_0xaa25('0x39')]);_0x301b0f[_0xaa25('0x3c')]=_[_0xaa25('0x3d')](_0x2579eb[_0xaa25('0x38')],qs[_0xaa25('0x3e')](_0x1eba53[_0xaa25('0x39')]['fields']));_0x301b0f[_0xaa25('0x3c')]=_0x301b0f[_0xaa25('0x3c')][_0xaa25('0x3f')]?_0x301b0f['attributes']:_0x2579eb[_0xaa25('0x38')];if(!_0x1eba53['query'][_0xaa25('0x40')]('nolimit')){_0x301b0f['limit']=qs['limit'](_0x1eba53['query'][_0xaa25('0x20')]);_0x301b0f[_0xaa25('0x1f')]=qs[_0xaa25('0x1f')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x1f')]);}_0x301b0f[_0xaa25('0x41')]=qs[_0xaa25('0x42')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x42')]);_0x301b0f['where']=qs[_0xaa25('0x3b')](_[_0xaa25('0x43')](_0x1eba53[_0xaa25('0x39')],_0x2579eb['filters']),_0xaff2ed);var _0x554b02=[];var _0x177d6d=squel[_0xaa25('0x44')]()[_0xaa25('0x45')]('id')[_0xaa25('0x45')]('name')['field']('color')[_0xaa25('0x46')]('tools_tags');var _0x57b043=squel[_0xaa25('0x44')]()[_0xaa25('0x45')](_0xaa25('0x47'))[_0xaa25('0x45')](_0xaa25('0x48'))[_0xaa25('0x45')](_0xaa25('0x49'))['from'](_0xaa25('0x4a'),'ui')[_0xaa25('0x4b')]('users','u',_0xaa25('0x4c'));var _0x20a276=squel[_0xaa25('0x44')]()[_0xaa25('0x46')]('whatsapp_interactions','i')['left_join'](_0xaa25('0x4d'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xaa25('0x4b')]('users','o',_0xaa25('0x4e'))['left_join'](_0xaa25('0x4f'),'a',_0xaa25('0x50'))['left_join'](_0xaa25('0x51'),'me',_0xaa25('0x52'))[_0xaa25('0x4b')](_0xaa25('0x53'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0xaa25('0x4b')](_0xaa25('0x54'),'t','t.id\x20=\x20it.TagId');var _0x2834a6=squel[_0xaa25('0x55')]();var _0xd53b6b=[];var _0x14b6d4=squel[_0xaa25('0x55')]();var _0x181c61;if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x56')]){_0x181c61=as[_0xaa25('0x57')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x56')]);var _0x2aaa32=_0x181c61[_0xaa25('0x58')];for(var _0x25ae56=0x0;_0x25ae56<_0x181c61[_0xaa25('0x59')]['length'];_0x25ae56++){var _0x2b24eb=_0x181c61['conditions'][_0x25ae56];var _0x25278a='i';var _0x832eb4=_['find'](_0xaff2ed,['name',_0x2b24eb[_0xaa25('0x45')]]);if(!_0x832eb4){switch(_0x2b24eb[_0xaa25('0x45')]){case _0xaa25('0x5a'):if(_0x2b24eb[_0xaa25('0x5b')]==0x1){_0x20a276[_0xaa25('0x5c')]('`'+_0x2b24eb[_0xaa25('0x45')]+_0xaa25('0x5d'));}else{_0x20a276[_0xaa25('0x5c')]('`'+_0x2b24eb['field']+_0xaa25('0x5e'));}break;case _0xaa25('0x5f'):if(_0x2b24eb[_0xaa25('0x60')]==='$substring'){if(_0x2b24eb[_0xaa25('0x5b')][_0xaa25('0x30')]('\x20')[_0xaa25('0x3f')]>0x1){_0x2834a6[_0x2aaa32](_0xaa25('0x61'),qs[_0xaa25('0x62')](_0x2b24eb[_0xaa25('0x5b')]),null);}else{var _0x166df3='%'+_0x2b24eb['value']+'%';_0x2834a6[_0x2aaa32](_0xaa25('0x63'),_0x166df3,_0x166df3,_0x166df3);}}else{_0x832eb4=_['find'](_0xaff2ed,[_0xaa25('0x2a'),_0xaa25('0x64')]);_0x2b24eb[_0xaa25('0x45')]=_0xaa25('0x64');_0x21075e=as[_0xaa25('0x65')](_0x25278a,_0x832eb4['type'],_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e[_0xaa25('0x66')],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x67')],_0x21075e[_0xaa25('0x5b')]['end']);}break;case _0xaa25('0x68'):var _0x48907f=_0x2b24eb[_0xaa25('0x5b')]['split'](',')[_0xaa25('0x2c')](function(_0x1e0c68){return Number(_0x1e0c68);});_0x48907f['forEach'](function(_0x470504){_0x14b6d4['or'](_0xaa25('0x69'),'%,'+_0x470504+',%');});_0xd53b6b=_['union'](_0xd53b6b,_0x48907f);break;case _0xaa25('0x6a'):if(_0x2b24eb['operator']===_0xaa25('0x6b')){_0x2834a6[_0x2aaa32](_0xaa25('0x6c'),'%'+_0x2b24eb[_0xaa25('0x5b')]+'%',null);}else{_0x832eb4=_[_0xaa25('0x6d')](_0xaff2ed,[_0xaa25('0x2a'),_0xaa25('0x6e')]);_0x2b24eb['field']=_0xaa25('0x6e');_0x21075e=as[_0xaa25('0x65')](_0x25278a,_0x832eb4[_0xaa25('0x36')],_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e[_0xaa25('0x66')],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x67')],_0x21075e[_0xaa25('0x5b')]['end']);}break;case _0xaa25('0x6f'):_0x21075e=as['buildExpression']('me',null,_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e['text'],_0x21075e['value']['start'],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x1a')]);break;}}else{var _0x21075e=as['buildExpression'](_0x25278a,_0x832eb4[_0xaa25('0x36')],_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e[_0xaa25('0x66')],_0x21075e['value']['start'],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x1a')]);}}}else{var _0x3f76d6=_(_0x1eba53[_0xaa25('0x39')])[_0xaa25('0x3a')]()['map'](function(_0x3a6cf5){return _[_0xaa25('0x70')](_0xaff2ed,[_0xaa25('0x2a'),_0x3a6cf5])?_0x3a6cf5:undefined;})[_0xaa25('0x71')]()['value']();if(!_[_0xaa25('0x72')](_0x3f76d6)){_0x3f76d6[_0xaa25('0x31')](function(_0x213ef4){if(_0x213ef4===_0xaa25('0x73')){_0x20a276[_0xaa25('0x74')](_0xaa25('0x75'),[]['concat'](_0x1eba53[_0xaa25('0x39')][_0x213ef4]));}else if(_0x213ef4==='createdAt'){var _0x13e099=JSON[_0xaa25('0x76')](_0x1eba53['query'][_0x213ef4])['$gte'];var _0x1239e2=JSON[_0xaa25('0x76')](_0x1eba53[_0xaa25('0x39')][_0x213ef4])[_0xaa25('0x77')];_0x20a276[_0xaa25('0x74')](_0xaa25('0x78'),_0x13e099,_0x1239e2);}else{if(_0x1eba53[_0xaa25('0x39')][_0x213ef4]==='null'){_0x20a276['where']('i.'+_0x213ef4+_0xaa25('0x79'));}else{_0x20a276[_0xaa25('0x74')]('i.'+_0x213ef4+_0xaa25('0x7a'),_0x1eba53[_0xaa25('0x39')][_0x213ef4]);}}});}if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7b')]){if(_0x1eba53['query'][_0xaa25('0x7b')]==0x1){_0x20a276[_0xaa25('0x5c')](_0xaa25('0x7c'));}else{_0x20a276[_0xaa25('0x5c')](_0xaa25('0x7d'));}}if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')]){_0xd53b6b=_[_0xaa25('0x7f')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')])?_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')]:new Array(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')]);_0xd53b6b[_0xaa25('0x31')](function(_0x37e4c9){_0x14b6d4['or'](_0xaa25('0x69'),'%,'+_0x37e4c9+',%');});}if(_0x1eba53['query']['filter']){var _0x288fe6=_0x1eba53['query']['filter'][_0xaa25('0x80')]('\x5c','\x5c\x5c')[_0xaa25('0x80')](/'/g,'\x27\x27');if(qs[_0xaa25('0x81')](_0x288fe6)){_0x2834a6['or']('i.id\x20LIKE\x20?',_0x288fe6+'%')['or'](_0xaa25('0x82'),_0x288fe6+'%');}else{_0x2834a6['or'](_0xaa25('0x83'),qs[_0xaa25('0x62')](_0x288fe6))['or'](_0xaa25('0x84'),_0x288fe6+'%');}}}_0x20a276[_0xaa25('0x74')](_0x2834a6);_0x20a276['group'](_0xaa25('0x85'));var _0x1e5855={'type':db[_0xaa25('0x86')][_0xaa25('0x87')]['SELECT'],'raw':!![]};var _0x183731=_0x20a276['clone']();_0x183731[_0xaa25('0x45')](_0xaa25('0x85'));_0x183731[_0xaa25('0x45')](_0xaa25('0x88'),_0xaa25('0x5a'));if(_0x301b0f['order']){_0x301b0f[_0xaa25('0x41')]['forEach'](function(_0x2b2111){var _0x59bd6c=_0x2b2111[0x0]===_0xaa25('0x89')?_0x2b2111[0x0]:'i.'+_0x2b2111[0x0];_0x20a276[_0xaa25('0x41')](_0x59bd6c,_0x2b2111[0x1]==='DESC'?![]:!![]);});}if(!_[_0xaa25('0x72')](_0xd53b6b)){_0x20a276['having'](_0x14b6d4);_0x183731[_0xaa25('0x74')](_0xaa25('0x8a'),_0xd53b6b);}BPromise[_0xaa25('0x8b')]()[_0xaa25('0x26')](function(){if(!_0x181c61){if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x73')])return;_0x183731['where'](_0xaa25('0x8c'));_0x20a276['where'](_0xaa25('0x8c'));return;}if(_0x1eba53[_0xaa25('0x8d')][_0xaa25('0x8e')]!=='agent')return;return _0x1eba53['user'][_0xaa25('0x8f')]({'attributes':['id'],'raw':!![]})[_0xaa25('0x26')](function(_0x42b167){if(_[_0xaa25('0x72')](_0x42b167)){_0x183731['where'](_0xaa25('0x90'));_0x20a276[_0xaa25('0x74')](_0xaa25('0x90'));}else{_0x183731[_0xaa25('0x74')]('i.WhatsappAccountId\x20IN\x20?',_[_0xaa25('0x2c')](_0x42b167,'id'));_0x20a276[_0xaa25('0x74')](_0xaa25('0x75'),_[_0xaa25('0x2c')](_0x42b167,'id'));}});})[_0xaa25('0x26')](function(){if(_0x1eba53[_0xaa25('0x8d')]['role']===_0xaa25('0x91')&&!_0x181c61&&!_0x1eba53[_0xaa25('0x39')]['WhatsappAccountId'])return[];return db[_0xaa25('0x92')][_0xaa25('0x39')](_0x183731[_0xaa25('0x93')](),_0x1e5855);})['then'](function(_0x1c25c5){_0xe7503c[_0xaa25('0x1e')]=_0x1c25c5[_0xaa25('0x3f')];if(_0xe7503c['count']===0x0)return[];return db[_0xaa25('0x92')][_0xaa25('0x39')](_0x177d6d[_0xaa25('0x93')](),_0x1e5855)[_0xaa25('0x26')](function(_0x1d4090){_0x554b02=_['keyBy'](_0x1d4090,'id');_0x1e5855=_[_0xaa25('0x94')](_0x1e5855,{'model':db[_0xaa25('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x3e')]){_0x301b0f['attributes'][_0xaa25('0x31')](function(_0x129514){_0x20a276[_0xaa25('0x45')]('i.'+_0x129514);});}else{_0x20a276[_0xaa25('0x45')](_0xaa25('0x88'),_0xaa25('0x5a'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x95'),_0xaa25('0x96'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x97'),'Account.mandatoryDisposition');_0x20a276['field']('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xaa25('0x89'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x98'));_0x20a276[_0xaa25('0x45')]('c.firstName',_0xaa25('0x99'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x9a'),_0xaa25('0x9b'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x9c'),_0xaa25('0x9d'));_0x20a276['field']('c.phone','Contact.phone');_0x20a276['field'](_0xaa25('0x9e'),'Contact.mobile');_0x20a276[_0xaa25('0x45')](_0xaa25('0x9f'),_0xaa25('0xa0'));_0x20a276['field'](_0xaa25('0xa1'),'Owner.fullname');_0x20a276[_0xaa25('0x45')](_0xaa25('0xa2'),_0xaa25('0xa3'));_0x20a276[_0xaa25('0x45')](_0xaa25('0xa4'),_0xaa25('0x2f'));}if(_0x301b0f[_0xaa25('0x20')])_0x20a276[_0xaa25('0x20')](_0x301b0f[_0xaa25('0x20')]);if(_0x301b0f[_0xaa25('0x1f')])_0x20a276[_0xaa25('0x1f')](_0x301b0f[_0xaa25('0x1f')]);return db[_0xaa25('0x92')]['query'](_0x20a276[_0xaa25('0x93')](),_0x1e5855);})['then'](function(_0x3efa37){if(_0x3efa37[_0xaa25('0x3f')]>0x0)_0x57b043[_0xaa25('0x74')]('ui.WhatsappInteractionId\x20IN\x20?',_[_0xaa25('0x2c')](_0x3efa37,'id'));return db['sequelize']['query'](_0x57b043[_0xaa25('0x93')](),_0x1e5855)[_0xaa25('0x26')](function(_0x36c161){var _0x224f44=_[_0xaa25('0xa5')](_0x36c161,_0xaa25('0xa6'));var _0x7be15d=[];_0x3efa37['forEach'](function(_0x4ea678){_0x7be15d[_0xaa25('0xa7')](updateWhatsappInteraction(_0x4ea678,_0x554b02,_0x224f44));});return BPromise[_0xaa25('0xa8')](_0x7be15d);});});})['then'](function(_0x360876){_0xe7503c['rows']=_0x360876;return _0xe7503c;})[_0xaa25('0x26')](respondWithFilteredResult(_0x481f70,_0x301b0f))[_0xaa25('0x32')](handleError(_0x481f70,null));};exports[_0xaa25('0xa9')]=function(_0x18204b,_0x311662){var _0x178d4b={'raw':![],'where':{'id':_0x18204b['params']['id']}},_0x251627={};_0x251627[_0xaa25('0x38')]=_[_0xaa25('0x3a')](db[_0xaa25('0x34')]['rawAttributes']);_0x251627[_0xaa25('0x39')]=_[_0xaa25('0x3a')](_0x18204b[_0xaa25('0x39')]);_0x251627[_0xaa25('0x3b')]=_[_0xaa25('0x3d')](_0x251627[_0xaa25('0x38')],_0x251627[_0xaa25('0x39')]);_0x178d4b[_0xaa25('0x3c')]=_[_0xaa25('0x3d')](_0x251627[_0xaa25('0x38')],qs['fields'](_0x18204b[_0xaa25('0x39')][_0xaa25('0x3e')]));_0x178d4b[_0xaa25('0x3c')]=_0x178d4b[_0xaa25('0x3c')][_0xaa25('0x3f')]?_0x178d4b['attributes']:_0x251627[_0xaa25('0x38')];if(_0x18204b[_0xaa25('0x39')]['includeAll']){_0x178d4b[_0xaa25('0xaa')]=[{'all':!![]}];}_0x178d4b=_[_0xaa25('0x94')]({},_0x178d4b,_0x18204b[_0xaa25('0xab')]);return db[_0xaa25('0x34')][_0xaa25('0x6d')](_0x178d4b)[_0xaa25('0x26')](handleEntityNotFound(_0x311662,null))[_0xaa25('0x26')](respondWithResult(_0x311662,null))[_0xaa25('0x32')](handleError(_0x311662,null));};exports[_0xaa25('0xac')]=function(_0x1a5b66,_0x3803b3){return db[_0xaa25('0x34')]['create'](_0x1a5b66[_0xaa25('0x6f')],{})[_0xaa25('0x26')](respondWithResult(_0x3803b3,0xc9))[_0xaa25('0x32')](handleError(_0x3803b3,null));};exports[_0xaa25('0xad')]=function(_0x2ea384,_0x1b1621){if(_0x2ea384[_0xaa25('0x6f')]['id']){delete _0x2ea384[_0xaa25('0x6f')]['id'];}return db['WhatsappInteraction'][_0xaa25('0x6d')]({'where':{'id':_0x2ea384['params']['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x1b1621,null))['then'](saveUpdates(_0x2ea384['body'],null))['then'](respondWithResult(_0x1b1621,null))[_0xaa25('0x32')](handleError(_0x1b1621,null));};exports['destroy']=function(_0x3b25d7,_0x265acd){return db['WhatsappInteraction'][_0xaa25('0x6d')]({'where':{'id':_0x3b25d7['params']['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x265acd,null))[_0xaa25('0x26')](removeEntity(_0x265acd,null))[_0xaa25('0x32')](handleError(_0x265acd,null));};exports[_0xaa25('0xae')]=function(_0x28f418,_0xef2bc3){return db[_0xaa25('0x34')][_0xaa25('0xae')]()[_0xaa25('0x26')](respondWithResult(_0xef2bc3,null))[_0xaa25('0x32')](handleError(_0xef2bc3,null));};exports[_0xaa25('0xaf')]=function(_0x22b3a9,_0x132a7c,_0x4ee49b){return db[_0xaa25('0xb0')][_0xaa25('0x6d')]({'where':{'id':_0x22b3a9[_0xaa25('0xb1')]['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x132a7c,null))['then'](function(_0x1425a4){if(_0x1425a4){return _0x1425a4[_0xaa25('0xaf')](_0x22b3a9[_0xaa25('0x6f')][_0xaa25('0xb2')],_[_0xaa25('0xb3')](_0x22b3a9[_0xaa25('0x6f')],['ids','id'])||{});}})[_0xaa25('0x26')](respondWithResult(_0x132a7c,null))[_0xaa25('0x32')](handleError(_0x132a7c,null));};exports[_0xaa25('0xb4')]=function(_0x4603a2,_0x4224c5,_0x346414){var _0x4632dc={'raw':![],'where':{}};var _0x52c30c={};var _0x5994fa={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xaa25('0xb5')]({'where':{'id':_0x4603a2['params']['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x4224c5,null))[_0xaa25('0x26')](function(_0x2273b0){if(_0x2273b0){_0x52c30c[_0xaa25('0x38')]=_[_0xaa25('0x3a')](db[_0xaa25('0xb0')][_0xaa25('0x35')]);_0x52c30c[_0xaa25('0x39')]=_[_0xaa25('0x3a')](_0x4603a2['query']);_0x52c30c[_0xaa25('0x3b')]=_['intersection'](_0x52c30c[_0xaa25('0x38')],_0x52c30c[_0xaa25('0x39')]);_0x4632dc[_0xaa25('0x3c')]=_[_0xaa25('0x3d')](_0x52c30c[_0xaa25('0x38')],qs['fields'](_0x4603a2[_0xaa25('0x39')][_0xaa25('0x3e')]));_0x4632dc[_0xaa25('0x3c')]=_0x4632dc['attributes'][_0xaa25('0x3f')]?_0x4632dc[_0xaa25('0x3c')]:_0x52c30c['model'];if(!_0x4603a2[_0xaa25('0x39')]['hasOwnProperty'](_0xaa25('0xb6'))){_0x4632dc[_0xaa25('0x20')]=qs[_0xaa25('0x20')](_0x4603a2[_0xaa25('0x39')]['limit']);_0x4632dc[_0xaa25('0x1f')]=qs[_0xaa25('0x1f')](_0x4603a2[_0xaa25('0x39')]['offset']);}_0x4632dc[_0xaa25('0x41')]=qs[_0xaa25('0x42')](_0x4603a2['query'][_0xaa25('0x42')]);_0x4632dc[_0xaa25('0x74')]=qs[_0xaa25('0x3b')](_[_0xaa25('0x43')](_0x4603a2['query'],_0x52c30c[_0xaa25('0x3b')]));_0x4632dc[_0xaa25('0x74')]['WhatsappInteractionId']=_0x2273b0['id'];if(_0x4603a2['query'][_0xaa25('0xb7')]){_0x4632dc[_0xaa25('0x74')]=_['merge'](_0x4632dc[_0xaa25('0x74')],{'$or':_['map'](_0x4632dc[_0xaa25('0x3c')],function(_0x4cc11e){var _0x5ea41c={};_0x5ea41c[_0x4cc11e]={'$like':'%'+_0x4603a2[_0xaa25('0x39')][_0xaa25('0xb7')]+'%'};return _0x5ea41c;})});}if(_0x4603a2[_0xaa25('0x39')]['$gte']){var _0x57639c=_0x4603a2['query'][_0xaa25('0xb8')][_0xaa25('0x30')](',');var _0x779c6d={};_0x779c6d[_0x57639c[0x0]]={'$gte':moment(_0x57639c[0x1])[_0xaa25('0xb9')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4632dc[_0xaa25('0x74')]=_[_0xaa25('0x94')](_0x4632dc[_0xaa25('0x74')],_0x779c6d);}_0x4632dc=_[_0xaa25('0x94')]({},_0x4632dc,_0x4603a2[_0xaa25('0xab')]);return db[_0xaa25('0xb0')][_0xaa25('0x1e')]({'where':_0x4632dc[_0xaa25('0x74')]})[_0xaa25('0x26')](function(_0x35d97d){_0x5994fa[_0xaa25('0x1e')]=_0x35d97d;if(_0x4603a2[_0xaa25('0x39')]['includeAll']){_0x4632dc[_0xaa25('0xaa')]=[{'all':!![]}];}return db[_0xaa25('0xb0')][_0xaa25('0xba')](_0x4632dc);})[_0xaa25('0x26')](function(_0x4bf077){_0x5994fa[_0xaa25('0xbb')]=_0x4bf077;return _0x5994fa;});}})[_0xaa25('0x26')](respondWithFilteredResult(_0x4224c5,_0x4632dc))[_0xaa25('0x32')](handleError(_0x4224c5,null));};exports[_0xaa25('0xbc')]=function(_0x34e376,_0x524a9c,_0x2077f1){return db[_0xaa25('0x34')]['find']({'where':{'id':_0x34e376[_0xaa25('0xb1')]['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x524a9c,null))['then'](function(_0x1e56e8){if(_0x1e56e8){return _0x1e56e8['setTags'](_0x34e376[_0xaa25('0x6f')]['ids'],_[_0xaa25('0xb3')](_0x34e376['body'],[_0xaa25('0xb2'),'id'])||{})[_0xaa25('0xbd')](function(){return db['Tag'][_0xaa25('0xba')]({'attributes':['id','name',_0xaa25('0xbe')],'where':{'id':_0x34e376['body'][_0xaa25('0xb2')]}});})['then'](function(_0x385c3f){socket[_0xaa25('0xbf')](_0xaa25('0xc0'),{'id':Number(_0x34e376[_0xaa25('0xb1')]['id']),'tags':_0x385c3f||[]});return{'id':Number(_0x34e376['params']['id']),'tags':_0x385c3f||[]};});}})[_0xaa25('0x26')](respondWithResult(_0x524a9c,null))[_0xaa25('0x32')](handleError(_0x524a9c,null));};exports[_0xaa25('0xc1')]=function(_0x451805,_0x95857a,_0x4f1d22){return db[_0xaa25('0x34')][_0xaa25('0x6d')]({'where':{'id':_0x451805[_0xaa25('0xb1')]['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x95857a,null))['then'](function(_0x451564){if(_0x451564){return _0x451564['removeTags'](_0x451805[_0xaa25('0x39')]['ids']);}})['then'](respondWithStatusCode(_0x95857a,null))['catch'](handleError(_0x95857a,null));};exports[_0xaa25('0xc2')]=function(_0x20ba50,_0x3a5ca3){var _0x2e67f5=moment()[_0xaa25('0xc3')]()[_0xaa25('0x93')]();var _0x2205df=path[_0xaa25('0xc4')](config['root'],_0xaa25('0xc5'),_0xaa25('0xc6'),_0xaa25('0xc7'));var _0x5070c6=path['join'](config[_0xaa25('0xc8')],_0xaa25('0xc5'),_0xaa25('0xc6'),_0xaa25('0xc9'));var _0x137972=path['join'](_0x2205df,_0x2e67f5);var _0x4346cb=util[_0xaa25('0xb9')](_0xaa25('0xca'),_0x20ba50['params']['id'],_0x2e67f5);var _0xa30511=path[_0xaa25('0xc4')](_0x2205df,_0x4346cb);var _0x3d8738=[];_0x3d8738[_0xaa25('0xa7')]({'model':db['User'],'as':_0xaa25('0x6a'),'attributes':['id',_0xaa25('0x2d')],'raw':!![]});_0x3d8738[_0xaa25('0xa7')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xaa25('0xcb'),_0xaa25('0xcc')],'raw':!![]});if(_0x20ba50[_0xaa25('0x39')][_0xaa25('0xc9')]){_0x3d8738[_0xaa25('0xa7')]({'model':db[_0xaa25('0xcd')],'as':_0xaa25('0xcd'),'raw':!![]});}var _0x537664=[{'model':db[_0xaa25('0xb0')],'as':_0xaa25('0xce'),'attributes':['id',_0xaa25('0x6f'),_0xaa25('0xcf'),_0xaa25('0xd0'),_0xaa25('0xd1'),_0xaa25('0x7b')],'include':_0x3d8738}];_0x537664[_0xaa25('0xa7')]({'model':db[_0xaa25('0xd2')],'as':_0xaa25('0xd3'),'attributes':['id',_0xaa25('0x2a')]});_0x537664[_0xaa25('0xa7')]({'model':db['User'],'as':'Owner','attributes':['id',_0xaa25('0x2d')]});return db['WhatsappInteraction'][_0xaa25('0x6d')]({'where':{'id':_0x20ba50[_0xaa25('0xb1')]['id']},'include':_0x537664})['then'](handleEntityNotFound(_0x3a5ca3,null))['then'](function(_0x20f523){if(_0x20f523){var _0x131802=_0x20f523[_0xaa25('0xd4')]({'plain':!![]});fs['mkdirSync'](_0x137972);var _0x5edb66={'channel':_0xaa25('0xd5'),'account':_0x131802['Account'][_0xaa25('0x2a')],'agent':_0x131802[_0xaa25('0xd6')]?_0x131802['Owner']['fullname']:_0xaa25('0xd7'),'createdAt':moment(_0x131802[_0xaa25('0xcf')])[_0xaa25('0xb9')](_0xaa25('0xd8'))[_0xaa25('0x93')](),'closedAt':_0x131802['closed']?moment(_0x131802['closedAt'])[_0xaa25('0xb9')](_0xaa25('0xd8'))['toString']():'','disposition':_0x131802['disposition'],'messages':_(_0x131802[_0xaa25('0xce')])[_0xaa25('0xb7')]({'secret':![]})[_0xaa25('0x2c')](function(_0x26c5b3){if(_0x26c5b3[_0xaa25('0xcd')]){var _0x39b341=path[_0xaa25('0xc4')](_0x5070c6,_0x26c5b3[_0xaa25('0xcd')][_0xaa25('0xd9')]);if(fs[_0xaa25('0xda')](_0x39b341)){fs[_0xaa25('0xdb')](_0x39b341)[_0xaa25('0xdc')](fs[_0xaa25('0xdd')](path[_0xaa25('0xc4')](_0x137972,_0x26c5b3['Attachment']['basename'])));}}return{'date':moment(_0x26c5b3[_0xaa25('0xcf')])[_0xaa25('0xb9')](_0xaa25('0xd8'))['toString'](),'sender':_0x26c5b3['direction']===_0xaa25('0xde')?_0x26c5b3[_0xaa25('0x6a')]?_0x26c5b3[_0xaa25('0x6a')][_0xaa25('0x2d')]:_0xaa25('0xdf'):_0x26c5b3[_0xaa25('0x5f')][_0xaa25('0xcb')]+(_0x26c5b3[_0xaa25('0x5f')]['lastName']?'\x20'+_0x26c5b3['Contact'][_0xaa25('0xcc')]:''),'body':_0x26c5b3['Attachment']?_0x26c5b3[_0xaa25('0xcd')]['basename']:_0x26c5b3[_0xaa25('0x6f')],'direction':_0x26c5b3[_0xaa25('0xd0')]===_0xaa25('0xde')?'A':'C','secret':_0x26c5b3['secret'],'read':_0x26c5b3[_0xaa25('0x7b')],'attachment':_0x26c5b3['Attachment']};})[_0xaa25('0x5b')]()};return ejs[_0xaa25('0xe0')](path[_0xaa25('0xc4')](config[_0xaa25('0xc8')],'server','views','downloadInteraction.ejs'),{'interaction':_0x5edb66})[_0xaa25('0x26')](function(_0x388dad){var _0x275475=path[_0xaa25('0xc4')](_0x137972,_0xaa25('0xe1')+_0x131802['id']+'-'+_0x2e67f5+_0xaa25('0xe2'));var _0x1796f6={'path':_0x275475,'channel':_0xaa25('0xd5'),'interactionId':_0x131802['id']};return pdf[_0xaa25('0xe3')](_0x388dad,_0x1796f6);})[_0xaa25('0x26')](function(){return new BPromise(function(_0x34b29e,_0x2aaeaa){zipdir(_0x137972,{'saveTo':_0xa30511},function(_0x4f1e94,_0x2be357){if(_0x4f1e94)return _0x2aaeaa(_0x4f1e94);return _0x34b29e(_0x2be357);});})[_0xaa25('0x26')](function(){return new BPromise(function(_0x1af2a5,_0x2c1a26){rimraf(_0x137972,function(_0x4c350b){if(_0x4c350b)_0x2c1a26(_0x4c350b);return _0x1af2a5();});});})['then'](function(){return _0x3a5ca3['download'](_0xa30511,_0x4346cb,function(_0x427884){if(_0x427884){console[_0xaa25('0xe4')](_0xaa25('0xe5'),_0x427884);}else{fs[_0xaa25('0xe6')](_0xa30511);}});});});}else{return _0x3a5ca3[_0xaa25('0x19')](0xc8);}})[_0xaa25('0x32')](handleError(_0x3a5ca3,null));};
\ No newline at end of file
index 405e9e7..0bbafb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['exports','WhatsappInteraction','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','hook'];(function(_0x34756e,_0x3c036a){var _0x365e63=function(_0xc96601){while(--_0xc96601){_0x34756e['push'](_0x34756e['shift']());}};_0x365e63(++_0x3c036a);}(_0xa74f,0x9a));var _0xfa74=function(_0x210603,_0x4adbac){_0x210603=_0x210603-0x0;var _0x1bcb7d=_0xa74f[_0x210603];return _0x1bcb7d;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require('../../mysqldb')['db'][_0xfa74('0x0')];var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xfa74('0x1')](0x0);var events={'afterCreate':_0xfa74('0x2'),'afterUpdate':_0xfa74('0x3'),'afterDestroy':_0xfa74('0x4')};function emitEvent(_0x5b367b){return function(_0x141625,_0x4efc79,_0x543cfe){_0x141625[_0xfa74('0x5')]({'attributes':['id'],'raw':!![]})[_0xfa74('0x6')](function(_0x3ac32e){_0x141625[_0xfa74('0x7')](_0xfa74('0x8'),_0x3ac32e[_0xfa74('0x9')](function(_0x5c0eb2){return{'id':_0x5c0eb2['id']};}));return WhatsappMessage[_0xfa74('0xa')]({'where':{'WhatsappInteractionId':_0x141625['id'],'direction':'in','read':![]},'raw':!![]});})[_0xfa74('0x6')](function(_0x355e37){_0x141625[_0xfa74('0x7')]('unreadMessages',_0x355e37[_0xfa74('0xb')]);WhatsappInteractionEvents[_0xfa74('0xc')](_0x5b367b+':'+_0x141625['id'],_0x141625);WhatsappInteractionEvents['emit'](_0x5b367b,_0x141625);_0x543cfe(null);})[_0xfa74('0xd')](_0x543cfe(null));};}for(var e in events){if(events[_0xfa74('0xe')](e)){var event=events[e];WhatsappInteraction[_0xfa74('0xf')](e,emitEvent(event));}}module[_0xfa74('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x60d7=['setMaxListeners','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x11fadc,_0x58d876){var _0xd81fd1=function(_0x45ac34){while(--_0x45ac34){_0x11fadc['push'](_0x11fadc['shift']());}};_0xd81fd1(++_0x58d876);}(_0x60d7,0x139));var _0x760d=function(_0x2675da,_0x1c3978){_0x2675da=_0x2675da-0x0;var _0x130b66=_0x60d7[_0x2675da];return _0x130b66;};'use strict';var EventEmitter=require(_0x760d('0x0'));var WhatsappInteraction=require(_0x760d('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x760d('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x760d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x760d('0x3'),'afterDestroy':_0x760d('0x4')};function emitEvent(_0x2eebb3){return function(_0x2d963b,_0x47affe,_0x34ebba){_0x2d963b[_0x760d('0x5')]({'attributes':['id'],'raw':!![]})[_0x760d('0x6')](function(_0x463b41){_0x2d963b[_0x760d('0x7')]('Users',_0x463b41[_0x760d('0x8')](function(_0x3ffaa4){return{'id':_0x3ffaa4['id']};}));return WhatsappMessage[_0x760d('0x9')]({'where':{'WhatsappInteractionId':_0x2d963b['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x465102){_0x2d963b[_0x760d('0x7')](_0x760d('0xa'),_0x465102['length']);WhatsappInteractionEvents[_0x760d('0xb')](_0x2eebb3+':'+_0x2d963b['id'],_0x2d963b);WhatsappInteractionEvents[_0x760d('0xb')](_0x2eebb3,_0x2d963b);_0x34ebba(null);})['catch'](_0x34ebba(null));};}for(var e in events){if(events[_0x760d('0xc')](e)){var event=events[e];WhatsappInteraction[_0x760d('0xd')](e,emitEvent(event));}}module[_0x760d('0xe')]=WhatsappInteractionEvents;
\ No newline at end of file
index 53d55c2..b7f5e41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f23=['rimraf','../../config/environment','define','WhatsappInteraction','whatsapp_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x16533f,_0x3de254){var _0x372567=function(_0xfbc00f){while(--_0xfbc00f){_0x16533f['push'](_0x16533f['shift']());}};_0x372567(++_0x3de254);}(_0x3f23,0x189));var _0x33f2=function(_0x300048,_0x202bae){_0x300048=_0x300048-0x0;var _0x4385fa=_0x3f23[_0x300048];return _0x4385fa;};'use strict';var _=require(_0x33f2('0x0'));var util=require('util');var logger=require(_0x33f2('0x1'))(_0x33f2('0x2'));var moment=require(_0x33f2('0x3'));var BPromise=require(_0x33f2('0x4'));var rp=require(_0x33f2('0x5'));var fs=require('fs');var path=require(_0x33f2('0x6'));var rimraf=require(_0x33f2('0x7'));var config=require(_0x33f2('0x8'));var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0x1e534e,_0x999b42){return _0x1e534e[_0x33f2('0x9')](_0x33f2('0xa'),attributes,{'tableName':_0x33f2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x26fb89,_0x40fa4f,_0x36d037){if(_0x26fb89['changed'](_0x33f2('0xc'))){_0x26fb89[_0x33f2('0xd')]=moment()[_0x33f2('0xe')](_0x33f2('0xf'));}_0x36d037(null,_0x26fb89);}}});};
\ No newline at end of file
+var _0xccc1=['WhatsappInteraction','whatsapp_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x1c71cd,_0x4b696a){var _0x505500=function(_0x56300b){while(--_0x56300b){_0x1c71cd['push'](_0x1c71cd['shift']());}};_0x505500(++_0x4b696a);}(_0xccc1,0x73));var _0x1ccc=function(_0x1fa9c6,_0x4756ee){_0x1fa9c6=_0x1fa9c6-0x0;var _0x3460c7=_0xccc1[_0x1fa9c6];return _0x3460c7;};'use strict';var _=require(_0x1ccc('0x0'));var util=require(_0x1ccc('0x1'));var logger=require(_0x1ccc('0x2'))(_0x1ccc('0x3'));var moment=require(_0x1ccc('0x4'));var BPromise=require(_0x1ccc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1ccc('0x6'));var rimraf=require(_0x1ccc('0x7'));var config=require(_0x1ccc('0x8'));var attributes=require('./whatsappInteraction.attributes');module[_0x1ccc('0x9')]=function(_0x3df958,_0x749770){return _0x3df958[_0x1ccc('0xa')](_0x1ccc('0xb'),attributes,{'tableName':_0x1ccc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3fe328,_0x23ba3f,_0x6241ac){if(_0x3fe328[_0x1ccc('0xd')](_0x1ccc('0xe'))){_0x3fe328[_0x1ccc('0xf')]=moment()[_0x1ccc('0x10')](_0x1ccc('0x11'));}_0x6241ac(null,_0x3fe328);}}});};
\ No newline at end of file
index 5945a7e..158aa12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2004=['ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','WhatsappInteraction','update','body','options','raw','where','attributes','then','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','find','addTags'];(function(_0x1d864c,_0x23e41e){var _0x1aaefd=function(_0x359e69){while(--_0x359e69){_0x1d864c['push'](_0x1d864c['shift']());}};_0x1aaefd(++_0x23e41e);}(_0x2004,0x13f));var _0x4200=function(_0x919629,_0x2edc8c){_0x919629=_0x919629-0x0;var _0x2e8c2b=_0x2004[_0x919629];return _0x2e8c2b;};'use strict';var _=require(_0x4200('0x0'));var util=require(_0x4200('0x1'));var moment=require(_0x4200('0x2'));var BPromise=require(_0x4200('0x3'));var rs=require(_0x4200('0x4'));var fs=require('fs');var Redis=require(_0x4200('0x5'));var db=require(_0x4200('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4200('0x7'))(_0x4200('0x8'));var config=require(_0x4200('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4200('0xa')][_0x4200('0xb')]({'port':0x232a});config[_0x4200('0xc')]=_[_0x4200('0xd')](config[_0x4200('0xc')],{'host':_0x4200('0xe'),'port':0x18eb});var socket=require(_0x4200('0xf'))(new Redis(config[_0x4200('0xc')]));require(_0x4200('0x10'))[_0x4200('0x11')](socket);function respondWithRpcPromise(_0x1f20fe,_0x3a511d,_0x466fff){return new BPromise(function(_0x23ab88,_0x2fa8ad){return client[_0x4200('0x12')](_0x1f20fe,_0x466fff)['then'](function(_0x3e8535){logger[_0x4200('0x13')](_0x4200('0x14'),_0x3a511d,_0x4200('0x15'));logger[_0x4200('0x16')](_0x4200('0x17'),_0x3a511d,_0x4200('0x15'),JSON[_0x4200('0x18')](_0x3e8535));if(_0x3e8535[_0x4200('0x19')]){if(_0x3e8535[_0x4200('0x19')]['code']===0x1f4){logger[_0x4200('0x19')](_0x4200('0x14'),_0x3a511d,_0x3e8535[_0x4200('0x19')]['message']);return _0x2fa8ad(_0x3e8535['error'][_0x4200('0x1a')]);}logger[_0x4200('0x19')](_0x4200('0x14'),_0x3a511d,_0x3e8535[_0x4200('0x19')][_0x4200('0x1a')]);return _0x23ab88(_0x3e8535[_0x4200('0x19')][_0x4200('0x1a')]);}else{logger[_0x4200('0x13')](_0x4200('0x14'),_0x3a511d,_0x4200('0x15'));_0x23ab88(_0x3e8535[_0x4200('0x1b')][_0x4200('0x1a')]);}})[_0x4200('0x1c')](function(_0x9f7261){logger[_0x4200('0x19')](_0x4200('0x14'),_0x3a511d,_0x9f7261);_0x2fa8ad(_0x9f7261);});});}exports['UpdateWhatsappInteraction']=function(_0x45a879){var _0x37bb68=this;return new Promise(function(_0x49bea9,_0x55168d){return db[_0x4200('0x1d')][_0x4200('0x1e')](_0x45a879[_0x4200('0x1f')],{'raw':_0x45a879[_0x4200('0x20')]?_0x45a879[_0x4200('0x20')][_0x4200('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45a879['options']?_0x45a879[_0x4200('0x20')][_0x4200('0x22')]||null:null,'attributes':_0x45a879['options']?_0x45a879[_0x4200('0x20')][_0x4200('0x23')]||null:null,'limit':_0x45a879[_0x4200('0x20')]?_0x45a879['options']['limit']||null:null})[_0x4200('0x24')](function(_0x54a84e){logger[_0x4200('0x13')](_0x4200('0x25'),_0x45a879);logger[_0x4200('0x16')]('UpdateWhatsappInteraction',_0x45a879,JSON[_0x4200('0x18')](_0x54a84e));_0x49bea9(_0x54a84e);})[_0x4200('0x1c')](function(_0x55b29a){logger['error']('UpdateWhatsappInteraction',_0x55b29a[_0x4200('0x1a')],_0x45a879);_0x55168d(_0x37bb68[_0x4200('0x19')](0x1f4,_0x55b29a[_0x4200('0x1a')]));});});};exports[_0x4200('0x26')]=function(_0x2a82f3){return new Promise(function(_0x447f91,_0x103104){return db['WhatsappInteraction'][_0x4200('0x27')]({'where':_0x2a82f3['options']?_0x2a82f3['options'][_0x4200('0x22')]||null:null})[_0x4200('0x24')](function(_0x198bd8){if(_0x198bd8){return _0x198bd8[_0x4200('0x28')](_0x2a82f3[_0x4200('0x1f')][_0x4200('0x29')],_[_0x4200('0x2a')](_0x2a82f3['body'],['ids','id'])||{});}})[_0x4200('0x2b')](function(_0x4e0747){logger[_0x4200('0x13')]('AddTags',_0x2a82f3);logger[_0x4200('0x16')]('AddTags',_0x2a82f3,JSON[_0x4200('0x18')](_0x4e0747));_0x447f91(_0x4e0747);})[_0x4200('0x1c')](function(_0xd6bfd8){logger[_0x4200('0x19')](_0x4200('0x2c'),_0xd6bfd8[_0x4200('0x1a')],_0x2a82f3);_0x103104(_this[_0x4200('0x19')](0x1f4,_0xd6bfd8[_0x4200('0x1a')]));});});};
\ No newline at end of file
+var _0xf467=['addTags','ids','omit','body','spread','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','error','code','message','result','UpdateWhatsappInteraction','update','options','raw','where','attributes','limit','debug','catch','AddTagsToWhatsappInteraction','WhatsappInteraction','find'];(function(_0x9b075,_0x3b12db){var _0x406ee2=function(_0x55e5c9){while(--_0x55e5c9){_0x9b075['push'](_0x9b075['shift']());}};_0x406ee2(++_0x3b12db);}(_0xf467,0x108));var _0x7f46=function(_0x218596,_0x5655d6){_0x218596=_0x218596-0x0;var _0x3e0674=_0xf467[_0x218596];return _0x3e0674;};'use strict';var _=require(_0x7f46('0x0'));var util=require(_0x7f46('0x1'));var moment=require(_0x7f46('0x2'));var BPromise=require('bluebird');var rs=require(_0x7f46('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7f46('0x4'))['db'];var utils=require(_0x7f46('0x5'));var logger=require(_0x7f46('0x6'))(_0x7f46('0x7'));var config=require(_0x7f46('0x8'));var jayson=require(_0x7f46('0x9'));var client=jayson['client'][_0x7f46('0xa')]({'port':0x232a});config[_0x7f46('0xb')]=_[_0x7f46('0xc')](config[_0x7f46('0xb')],{'host':_0x7f46('0xd'),'port':0x18eb});var socket=require(_0x7f46('0xe'))(new Redis(config[_0x7f46('0xb')]));require(_0x7f46('0xf'))['register'](socket);function respondWithRpcPromise(_0xc1c80,_0x3afe4b,_0x264006){return new BPromise(function(_0x3e7f2f,_0x12ebf8){return client[_0x7f46('0x10')](_0xc1c80,_0x264006)[_0x7f46('0x11')](function(_0x2ac84e){logger[_0x7f46('0x12')](_0x7f46('0x13'),_0x3afe4b,'request\x20sent');logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x3afe4b,_0x7f46('0x14'),JSON['stringify'](_0x2ac84e));if(_0x2ac84e[_0x7f46('0x15')]){if(_0x2ac84e['error'][_0x7f46('0x16')]===0x1f4){logger[_0x7f46('0x15')](_0x7f46('0x13'),_0x3afe4b,_0x2ac84e['error'][_0x7f46('0x17')]);return _0x12ebf8(_0x2ac84e[_0x7f46('0x15')]['message']);}logger[_0x7f46('0x15')](_0x7f46('0x13'),_0x3afe4b,_0x2ac84e['error'][_0x7f46('0x17')]);return _0x3e7f2f(_0x2ac84e[_0x7f46('0x15')][_0x7f46('0x17')]);}else{logger[_0x7f46('0x12')](_0x7f46('0x13'),_0x3afe4b,_0x7f46('0x14'));_0x3e7f2f(_0x2ac84e[_0x7f46('0x18')][_0x7f46('0x17')]);}})['catch'](function(_0x229e6a){logger[_0x7f46('0x15')](_0x7f46('0x13'),_0x3afe4b,_0x229e6a);_0x12ebf8(_0x229e6a);});});}exports[_0x7f46('0x19')]=function(_0x1bd5c9){var _0x247e34=this;return new Promise(function(_0x2283aa,_0x9b4e8f){return db['WhatsappInteraction'][_0x7f46('0x1a')](_0x1bd5c9['body'],{'raw':_0x1bd5c9[_0x7f46('0x1b')]?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1bd5c9[_0x7f46('0x1b')]?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1d')]||null:null,'attributes':_0x1bd5c9['options']?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1e')]||null:null,'limit':_0x1bd5c9[_0x7f46('0x1b')]?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1f')]||null:null})['then'](function(_0x357612){logger[_0x7f46('0x12')](_0x7f46('0x19'),_0x1bd5c9);logger[_0x7f46('0x20')](_0x7f46('0x19'),_0x1bd5c9,JSON['stringify'](_0x357612));_0x2283aa(_0x357612);})[_0x7f46('0x21')](function(_0x7e044b){logger[_0x7f46('0x15')](_0x7f46('0x19'),_0x7e044b['message'],_0x1bd5c9);_0x9b4e8f(_0x247e34[_0x7f46('0x15')](0x1f4,_0x7e044b[_0x7f46('0x17')]));});});};exports[_0x7f46('0x22')]=function(_0x55c23a){return new Promise(function(_0x339699,_0x149e5a){return db[_0x7f46('0x23')][_0x7f46('0x24')]({'where':_0x55c23a['options']?_0x55c23a['options']['where']||null:null})[_0x7f46('0x11')](function(_0x1e370c){if(_0x1e370c){return _0x1e370c[_0x7f46('0x25')](_0x55c23a['body'][_0x7f46('0x26')],_[_0x7f46('0x27')](_0x55c23a[_0x7f46('0x28')],[_0x7f46('0x26'),'id'])||{});}})[_0x7f46('0x29')](function(_0x328a31){logger[_0x7f46('0x12')](_0x7f46('0x2a'),_0x55c23a);logger[_0x7f46('0x20')](_0x7f46('0x2a'),_0x55c23a,JSON['stringify'](_0x328a31));_0x339699(_0x328a31);})[_0x7f46('0x21')](function(_0x100867){logger['error']('AddTags',_0x100867[_0x7f46('0x17')],_0x55c23a);_0x149e5a(_this['error'](0x1f4,_0x100867[_0x7f46('0x17')]));});});};
\ No newline at end of file
index 5d7acde..e018b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a8f=['remove','update','emit','removeListener','register','length','whatsappInteraction:','./whatsappInteraction.events','save'];(function(_0x1ba19c,_0x3975e2){var _0x4e069b=function(_0xd95964){while(--_0xd95964){_0x1ba19c['push'](_0x1ba19c['shift']());}};_0x4e069b(++_0x3975e2);}(_0x5a8f,0x130));var _0xf5a8=function(_0x3b9545,_0x820de2){_0x3b9545=_0x3b9545-0x0;var _0x3ab80a=_0x5a8f[_0x3b9545];return _0x3ab80a;};'use strict';var WhatsappInteractionEvents=require(_0xf5a8('0x0'));var events=[_0xf5a8('0x1'),_0xf5a8('0x2'),_0xf5a8('0x3')];function createListener(_0x43609b,_0x200a93){return function(_0x52494e){_0x200a93[_0xf5a8('0x4')](_0x43609b,_0x52494e);};}function removeListener(_0x4c43bb,_0x1dd3b0){return function(){WhatsappInteractionEvents[_0xf5a8('0x5')](_0x4c43bb,_0x1dd3b0);};}exports[_0xf5a8('0x6')]=function(_0x592b09){for(var _0x3fc0f4=0x0,_0x5e7b09=events[_0xf5a8('0x7')];_0x3fc0f4<_0x5e7b09;_0x3fc0f4++){var _0x3bfd10=events[_0x3fc0f4];var _0x36f02e=createListener(_0xf5a8('0x8')+_0x3bfd10,_0x592b09);WhatsappInteractionEvents['on'](_0x3bfd10,_0x36f02e);}};
\ No newline at end of file
+var _0xa78c=['remove','update','emit','removeListener','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0xa78c,0x13a));var _0xca78=function(_0xea51d,_0x3d8d89){_0xea51d=_0xea51d-0x0;var _0x190c63=_0xa78c[_0xea51d];return _0x190c63;};'use strict';var WhatsappInteractionEvents=require(_0xca78('0x0'));var events=['save',_0xca78('0x1'),_0xca78('0x2')];function createListener(_0xaf1cc4,_0x4f94ff){return function(_0x1a9bcc){_0x4f94ff[_0xca78('0x3')](_0xaf1cc4,_0x1a9bcc);};}function removeListener(_0xc824c6,_0x39f086){return function(){WhatsappInteractionEvents[_0xca78('0x4')](_0xc824c6,_0x39f086);};}exports['register']=function(_0x40ea2d){for(var _0x3d35f4=0x0,_0x50882e=events[_0xca78('0x5')];_0x3d35f4<_0x50882e;_0x3d35f4++){var _0x9f0d2b=events[_0x3d35f4];var _0x4d92b7=createListener(_0xca78('0x6')+_0x9f0d2b,_0x40ea2d);WhatsappInteractionEvents['on'](_0x9f0d2b,_0x4d92b7);}};
\ No newline at end of file
index d619905..46dd176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa80a=['/:id','show','whatsapp','create','post','/:id/status','status','put','update','/:id/reject','reject','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','get','isAuthenticated','/describe','describe'];(function(_0x36a91e,_0x1040db){var _0x38f28d=function(_0x2c5581){while(--_0x2c5581){_0x36a91e['push'](_0x36a91e['shift']());}};_0x38f28d(++_0x1040db);}(_0xa80a,0x8f));var _0xaa80=function(_0x1f1648,_0x77e8ca){_0x1f1648=_0x1f1648-0x0;var _0x2cb313=_0xa80a[_0x1f1648];return _0x2cb313;};'use strict';var multer=require(_0xaa80('0x0'));var util=require(_0xaa80('0x1'));var path=require(_0xaa80('0x2'));var timeout=require(_0xaa80('0x3'));var express=require('express');var router=express[_0xaa80('0x4')]();var fs_extra=require(_0xaa80('0x5'));var auth=require(_0xaa80('0x6'));var interaction=require(_0xaa80('0x7'));var config=require('../../config/environment');var controller=require(_0xaa80('0x8'));router[_0xaa80('0x9')]('/',auth[_0xaa80('0xa')](),controller['index']);router['get'](_0xaa80('0xb'),auth[_0xaa80('0xa')](),controller[_0xaa80('0xc')]);router[_0xaa80('0x9')](_0xaa80('0xd'),auth[_0xaa80('0xa')](),controller[_0xaa80('0xe')]);router['post']('/',auth[_0xaa80('0xa')](),interaction['tracked'](_0xaa80('0xf'),'whatsappmessage:create'),controller[_0xaa80('0x10')]);router[_0xaa80('0x11')](_0xaa80('0x12'),controller[_0xaa80('0x13')]);router[_0xaa80('0x14')](_0xaa80('0xd'),auth[_0xaa80('0xa')](),controller[_0xaa80('0x15')]);router[_0xaa80('0x14')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router['put'](_0xaa80('0x16'),auth[_0xaa80('0xa')](),controller[_0xaa80('0x17')]);router[_0xaa80('0x18')]('/:id',auth[_0xaa80('0xa')](),controller['destroy']);module[_0xaa80('0x19')]=router;
\ No newline at end of file
+var _0x4ce2=['express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','describe','show','post','tracked','whatsapp','whatsappmessage:create','create','put','/:id','update','/:id/accept','/:id/reject','delete','destroy','exports','multer','util'];(function(_0x26b062,_0x29a041){var _0x3d273a=function(_0x3b42aa){while(--_0x3b42aa){_0x26b062['push'](_0x26b062['shift']());}};_0x3d273a(++_0x29a041);}(_0x4ce2,0x1ae));var _0x24ce=function(_0x522c42,_0x46d4a7){_0x522c42=_0x522c42-0x0;var _0xd589e6=_0x4ce2[_0x522c42];return _0xd589e6;};'use strict';var multer=require(_0x24ce('0x0'));var util=require(_0x24ce('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x24ce('0x2'));var router=express[_0x24ce('0x3')]();var fs_extra=require(_0x24ce('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x24ce('0x5'));var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0x24ce('0x6')]('/',auth[_0x24ce('0x7')](),controller[_0x24ce('0x8')]);router[_0x24ce('0x6')]('/describe',auth[_0x24ce('0x7')](),controller[_0x24ce('0x9')]);router[_0x24ce('0x6')]('/:id',auth[_0x24ce('0x7')](),controller[_0x24ce('0xa')]);router[_0x24ce('0xb')]('/',auth['isAuthenticated'](),interaction[_0x24ce('0xc')](_0x24ce('0xd'),_0x24ce('0xe')),controller[_0x24ce('0xf')]);router[_0x24ce('0xb')]('/:id/status',controller['status']);router[_0x24ce('0x10')](_0x24ce('0x11'),auth[_0x24ce('0x7')](),controller[_0x24ce('0x12')]);router['put'](_0x24ce('0x13'),auth['isAuthenticated'](),controller['accept']);router[_0x24ce('0x10')](_0x24ce('0x14'),auth['isAuthenticated'](),controller['reject']);router[_0x24ce('0x15')](_0x24ce('0x11'),auth['isAuthenticated'](),controller[_0x24ce('0x16')]);module[_0x24ce('0x17')]=router;
\ No newline at end of file
index f9c10f7..28418ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ffc=['STRING','TEXT','sequelize','exports','medium','BOOLEAN'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x6ffc,0x11c));var _0xc6ff=function(_0x400238,_0x34fa3c){_0x400238=_0x400238-0x0;var _0x1d0f05=_0x6ffc[_0x400238];return _0x1d0f05;};'use strict';var Sequelize=require(_0xc6ff('0x0'));module[_0xc6ff('0x1')]={'body':{'type':Sequelize['TEXT'](_0xc6ff('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xc6ff('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xc6ff('0x4')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xc6ff('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xc6ff('0x4')]},'providerResponse':{'type':Sequelize[_0xc6ff('0x5')]}};
\ No newline at end of file
+var _0xe58a=['STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x4a4677,_0x10559e){var _0x3d0e6b=function(_0x541356){while(--_0x541356){_0x4a4677['push'](_0x4a4677['shift']());}};_0x3d0e6b(++_0x10559e);}(_0xe58a,0xc8));var _0xae58=function(_0x1ee24d,_0x3cdb24){_0x1ee24d=_0x1ee24d-0x0;var _0x2b5db9=_0xe58a[_0x1ee24d];return _0x2b5db9;};'use strict';var Sequelize=require(_0xae58('0x0'));module[_0xae58('0x1')]={'body':{'type':Sequelize[_0xae58('0x2')](_0xae58('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xae58('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xae58('0x5')]('in',_0xae58('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xae58('0x7')]},'readAt':{'type':Sequelize[_0xae58('0x8')]},'secret':{'type':Sequelize[_0xae58('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xae58('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 5082879..dd9f6b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4a9=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','client','http','then','info','WhatsappMessage,\x20%s,\x20%s','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','name','send','index','map','WhatsappMessage','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','params','rawAttributes','intersection','include','find','create','body','describe','../../config/logger','whatsapp-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','whatsapp','role','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','contact','User','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','messageId','MessageStatus','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto'];(function(_0x49d19d,_0x245cf5){var _0x4ebef1=function(_0xf0a4e6){while(--_0xf0a4e6){_0x49d19d['push'](_0x49d19d['shift']());}};_0x4ebef1(++_0x245cf5);}(_0xa4a9,0x7a));var _0x9a4a=function(_0x7b173,_0x539d7f){_0x7b173=_0x7b173-0x0;var _0x1c598c=_0xa4a9[_0x7b173];return _0x1c598c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a4a('0x0'));var zipdir=require(_0x9a4a('0x1'));var jsonpatch=require(_0x9a4a('0x2'));var rp=require(_0x9a4a('0x3'));var moment=require('moment');var BPromise=require(_0x9a4a('0x4'));var Mustache=require('mustache');var util=require(_0x9a4a('0x5'));var path=require(_0x9a4a('0x6'));var sox=require(_0x9a4a('0x7'));var csv=require(_0x9a4a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9a4a('0x9'));var _=require('lodash');var squel=require(_0x9a4a('0xa'));var crypto=require(_0x9a4a('0xb'));var jsforce=require(_0x9a4a('0xc'));var deskjs=require(_0x9a4a('0xd'));var toCsv=require(_0x9a4a('0x8'));var querystring=require(_0x9a4a('0xe'));var Papa=require(_0x9a4a('0xf'));var Redis=require(_0x9a4a('0x10'));var authService=require(_0x9a4a('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9a4a('0x12'));var hardwareService=require(_0x9a4a('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x9a4a('0x14'));var config=require(_0x9a4a('0x15'));var licenseUtil=require(_0x9a4a('0x16'));var db=require(_0x9a4a('0x17'))['db'];config[_0x9a4a('0x18')]=_[_0x9a4a('0x19')](config[_0x9a4a('0x18')],{'host':_0x9a4a('0x1a'),'port':0x18eb});var socket=require(_0x9a4a('0x1b'))(new Redis(config[_0x9a4a('0x18')]));require(_0x9a4a('0x1c'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x9a4a('0x1d')][_0x9a4a('0x1e')]({'port':0x232c});var client9002=jayson[_0x9a4a('0x1d')][_0x9a4a('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x324284,_0xe6233c,_0x3a630f,_0x11d6c0){return new BPromise(function(_0x4d0827,_0x4581d9){var _0x15d09b=_0x11d6c0||client;return _0x15d09b['request'](_0x324284,_0x3a630f)[_0x9a4a('0x1f')](function(_0x141fea){logger[_0x9a4a('0x20')](_0x9a4a('0x21'),_0xe6233c,'request\x20sent');logger['debug'](_0x9a4a('0x22'),_0xe6233c,_0x9a4a('0x23'),JSON[_0x9a4a('0x24')](_0x141fea));if(_0x141fea['error']){if(_0x141fea['error'][_0x9a4a('0x25')]===0x1f4){logger[_0x9a4a('0x26')](_0x9a4a('0x21'),_0xe6233c,_0x141fea[_0x9a4a('0x26')]['message']);return _0x4581d9(_0x141fea[_0x9a4a('0x26')][_0x9a4a('0x27')]);}logger[_0x9a4a('0x26')](_0x9a4a('0x21'),_0xe6233c,_0x141fea[_0x9a4a('0x26')][_0x9a4a('0x27')]);return _0x4d0827(_0x141fea[_0x9a4a('0x26')]['message']);}else{logger[_0x9a4a('0x20')](_0x9a4a('0x21'),_0xe6233c,_0x9a4a('0x23'));_0x4d0827(_0x141fea['result'][_0x9a4a('0x27')]);}})[_0x9a4a('0x28')](function(_0x1e9a9e){logger[_0x9a4a('0x26')](_0x9a4a('0x21'),_0xe6233c,_0x1e9a9e);_0x4581d9(_0x1e9a9e);});});}function respondWithStatusCode(_0x1db908,_0x1af2e1){_0x1af2e1=_0x1af2e1||0xcc;return function(_0x58a1a2){if(_0x58a1a2){return _0x1db908[_0x9a4a('0x29')](_0x1af2e1);}return _0x1db908[_0x9a4a('0x2a')](_0x1af2e1)[_0x9a4a('0x2b')]();};}function respondWithResult(_0x4eacac,_0x1c22d7){_0x1c22d7=_0x1c22d7||0xc8;return function(_0x72ec93){if(_0x72ec93){return _0x4eacac[_0x9a4a('0x2a')](_0x1c22d7)[_0x9a4a('0x2c')](_0x72ec93);}};}function respondWithFilteredResult(_0x565c08,_0x5adccc){return function(_0x58b562){if(_0x58b562){var _0xfa6e89=typeof _0x5adccc[_0x9a4a('0x2d')]===_0x9a4a('0x2e')&&typeof _0x5adccc[_0x9a4a('0x2f')]==='undefined';var _0x4eee71=_0x58b562[_0x9a4a('0x30')];var _0x21ea44=_0xfa6e89?0x0:_0x5adccc[_0x9a4a('0x2d')];var _0x3e55ba=_0xfa6e89?_0x58b562['count']:_0x5adccc[_0x9a4a('0x2d')]+_0x5adccc[_0x9a4a('0x2f')];var _0xaa3187;if(_0x3e55ba>=_0x4eee71){_0x3e55ba=_0x4eee71;_0xaa3187=0xc8;}else{_0xaa3187=0xce;}_0x565c08[_0x9a4a('0x2a')](_0xaa3187);return _0x565c08['set'](_0x9a4a('0x31'),_0x21ea44+'-'+_0x3e55ba+'/'+_0x4eee71)[_0x9a4a('0x2c')](_0x58b562);}return null;};}function patchUpdates(_0x4983dc){return function(_0x102275){try{jsonpatch[_0x9a4a('0x32')](_0x102275,_0x4983dc,!![]);}catch(_0x20f33a){return BPromise[_0x9a4a('0x33')](_0x20f33a);}return _0x102275['save']();};}function saveUpdates(_0x4fb253,_0xd7eb26){return function(_0x44f76a){if(_0x44f76a){return _0x44f76a[_0x9a4a('0x34')](_0x4fb253)['then'](function(_0x2cec9){return _0x2cec9;});}return null;};}function removeEntity(_0x4986dd,_0x1b3ce3){return function(_0x5c63f2){if(_0x5c63f2){return _0x5c63f2[_0x9a4a('0x35')]()[_0x9a4a('0x1f')](function(){_0x4986dd[_0x9a4a('0x2a')](0xcc)[_0x9a4a('0x2b')]();});}};}function handleEntityNotFound(_0x536502,_0x492749){return function(_0x3ea2e2){if(!_0x3ea2e2){_0x536502[_0x9a4a('0x29')](0x194);}return _0x3ea2e2;};}function handleError(_0x40b0f6,_0x460aea){_0x460aea=_0x460aea||0x1f4;return function(_0x1e7d95){logger['error'](_0x1e7d95['stack']);if(_0x1e7d95[_0x9a4a('0x36')]){delete _0x1e7d95['name'];}_0x40b0f6[_0x9a4a('0x2a')](_0x460aea)[_0x9a4a('0x37')](_0x1e7d95);};}exports[_0x9a4a('0x38')]=function(_0x48dd9f,_0x5a0822){var _0x5236bd={},_0x57fcf5={},_0x1f7068={'count':0x0,'rows':[]};var _0x5ac6d1=_[_0x9a4a('0x39')](db[_0x9a4a('0x3a')]['rawAttributes'],function(_0x500a69){return{'name':_0x500a69[_0x9a4a('0x3b')],'type':_0x500a69[_0x9a4a('0x3c')][_0x9a4a('0x3d')]};});_0x57fcf5[_0x9a4a('0x3e')]=_[_0x9a4a('0x39')](_0x5ac6d1,'name');_0x57fcf5[_0x9a4a('0x3f')]=_[_0x9a4a('0x40')](_0x48dd9f[_0x9a4a('0x3f')]);_0x57fcf5[_0x9a4a('0x41')]=_['intersection'](_0x57fcf5[_0x9a4a('0x3e')],_0x57fcf5[_0x9a4a('0x3f')]);_0x5236bd[_0x9a4a('0x42')]=_['intersection'](_0x57fcf5['model'],qs[_0x9a4a('0x43')](_0x48dd9f[_0x9a4a('0x3f')][_0x9a4a('0x43')]));_0x5236bd['attributes']=_0x5236bd[_0x9a4a('0x42')][_0x9a4a('0x44')]?_0x5236bd[_0x9a4a('0x42')]:_0x57fcf5[_0x9a4a('0x3e')];if(!_0x48dd9f[_0x9a4a('0x3f')][_0x9a4a('0x45')](_0x9a4a('0x46'))){_0x5236bd[_0x9a4a('0x2f')]=qs['limit'](_0x48dd9f['query'][_0x9a4a('0x2f')]);_0x5236bd['offset']=qs[_0x9a4a('0x2d')](_0x48dd9f['query'][_0x9a4a('0x2d')]);}_0x5236bd[_0x9a4a('0x47')]=qs['sort'](_0x48dd9f[_0x9a4a('0x3f')][_0x9a4a('0x48')]);_0x5236bd[_0x9a4a('0x49')]=qs[_0x9a4a('0x41')](_[_0x9a4a('0x4a')](_0x48dd9f[_0x9a4a('0x3f')],_0x57fcf5[_0x9a4a('0x41')]),_0x5ac6d1);if(_0x48dd9f[_0x9a4a('0x3f')][_0x9a4a('0x4b')]){_0x5236bd[_0x9a4a('0x49')]=_[_0x9a4a('0x4c')](_0x5236bd[_0x9a4a('0x49')],{'$or':_['map'](_0x5ac6d1,function(_0x176e8d){if(_0x176e8d[_0x9a4a('0x3c')]!==_0x9a4a('0x4d')){var _0x223faa={};_0x223faa[_0x176e8d[_0x9a4a('0x36')]]={'$like':'%'+_0x48dd9f['query'][_0x9a4a('0x4b')]+'%'};return _0x223faa;}})});}_0x5236bd=_[_0x9a4a('0x4c')]({},_0x5236bd,_0x48dd9f[_0x9a4a('0x4e')]);var _0x1d0470={'where':_0x5236bd[_0x9a4a('0x49')]};return db['WhatsappMessage'][_0x9a4a('0x30')](_0x1d0470)[_0x9a4a('0x1f')](function(_0x4e9288){_0x1f7068[_0x9a4a('0x30')]=_0x4e9288;if(_0x48dd9f['query'][_0x9a4a('0x4f')]){_0x5236bd['include']=[{'all':!![]}];}return db['WhatsappMessage'][_0x9a4a('0x50')](_0x5236bd);})[_0x9a4a('0x1f')](function(_0x39a71e){_0x1f7068['rows']=_0x39a71e;return _0x1f7068;})[_0x9a4a('0x1f')](respondWithFilteredResult(_0x5a0822,_0x5236bd))['catch'](handleError(_0x5a0822,null));};exports['show']=function(_0x6825e8,_0xc8d1da){var _0x250254={'raw':!![],'where':{'id':_0x6825e8[_0x9a4a('0x51')]['id']}},_0xb787ad={};_0xb787ad[_0x9a4a('0x3e')]=_[_0x9a4a('0x40')](db['WhatsappMessage'][_0x9a4a('0x52')]);_0xb787ad[_0x9a4a('0x3f')]=_['keys'](_0x6825e8[_0x9a4a('0x3f')]);_0xb787ad[_0x9a4a('0x41')]=_[_0x9a4a('0x53')](_0xb787ad['model'],_0xb787ad[_0x9a4a('0x3f')]);_0x250254[_0x9a4a('0x42')]=_[_0x9a4a('0x53')](_0xb787ad[_0x9a4a('0x3e')],qs[_0x9a4a('0x43')](_0x6825e8['query'][_0x9a4a('0x43')]));_0x250254[_0x9a4a('0x42')]=_0x250254['attributes']['length']?_0x250254[_0x9a4a('0x42')]:_0xb787ad[_0x9a4a('0x3e')];if(_0x6825e8[_0x9a4a('0x3f')][_0x9a4a('0x4f')]){_0x250254[_0x9a4a('0x54')]=[{'all':!![]}];}_0x250254=_[_0x9a4a('0x4c')]({},_0x250254,_0x6825e8[_0x9a4a('0x4e')]);return db[_0x9a4a('0x3a')][_0x9a4a('0x55')](_0x250254)[_0x9a4a('0x1f')](handleEntityNotFound(_0xc8d1da,null))[_0x9a4a('0x1f')](respondWithResult(_0xc8d1da,null))[_0x9a4a('0x28')](handleError(_0xc8d1da,null));};exports[_0x9a4a('0x56')]=function(_0x37d098,_0x460b51){return db[_0x9a4a('0x3a')][_0x9a4a('0x56')](_0x37d098[_0x9a4a('0x57')],{})[_0x9a4a('0x1f')](respondWithResult(_0x460b51,0xc9))[_0x9a4a('0x28')](handleError(_0x460b51,null));};exports['update']=function(_0x43fbf3,_0x373750){if(_0x43fbf3[_0x9a4a('0x57')]['id']){delete _0x43fbf3[_0x9a4a('0x57')]['id'];}return db[_0x9a4a('0x3a')][_0x9a4a('0x55')]({'where':{'id':_0x43fbf3[_0x9a4a('0x51')]['id']}})[_0x9a4a('0x1f')](handleEntityNotFound(_0x373750,null))[_0x9a4a('0x1f')](saveUpdates(_0x43fbf3[_0x9a4a('0x57')],null))[_0x9a4a('0x1f')](respondWithResult(_0x373750,null))['catch'](handleError(_0x373750,null));};exports[_0x9a4a('0x35')]=function(_0x5f1ba0,_0x3a1a54){return db['WhatsappMessage'][_0x9a4a('0x55')]({'where':{'id':_0x5f1ba0[_0x9a4a('0x51')]['id']}})[_0x9a4a('0x1f')](handleEntityNotFound(_0x3a1a54,null))['then'](removeEntity(_0x3a1a54,null))[_0x9a4a('0x28')](handleError(_0x3a1a54,null));};exports[_0x9a4a('0x58')]=function(_0x40a387,_0x3cba4d){return db['WhatsappMessage'][_0x9a4a('0x58')]()[_0x9a4a('0x1f')](respondWithResult(_0x3cba4d,null))[_0x9a4a('0x28')](handleError(_0x3cba4d,null));};var interaction_log=require(_0x9a4a('0x59'))(_0x9a4a('0x5a'));exports[_0x9a4a('0x5b')]=function(_0x195cdb,_0x352898,_0x18f75d){var _0x43d422={'agent':{},'channel':'whatsapp'};if(_0x195cdb[_0x9a4a('0x57')]['id']){delete _0x195cdb[_0x9a4a('0x57')]['id'];}_0x195cdb[_0x9a4a('0x57')][_0x9a4a('0x5c')]=!![];_0x195cdb[_0x9a4a('0x57')][_0x9a4a('0x5d')]=moment()[_0x9a4a('0x5e')](_0x9a4a('0x5f'));_0x195cdb['body']['UserId']=_0x195cdb[_0x9a4a('0x57')][_0x9a4a('0x60')]||_0x195cdb[_0x9a4a('0x61')]['id'];_0x43d422[_0x9a4a('0x62')]['id']=_0x195cdb[_0x9a4a('0x57')][_0x9a4a('0x60')];return db[_0x9a4a('0x3a')]['find']({'where':{'id':_0x195cdb[_0x9a4a('0x51')]['id'],'UserId':null}})[_0x9a4a('0x1f')](handleEntityNotFound(_0x352898,null))[_0x9a4a('0x1f')](saveUpdates(_0x195cdb['body'],null))[_0x9a4a('0x1f')](function(_0x3d7665){if(_0x3d7665){_0x43d422[_0x9a4a('0x27')]=_0x3d7665[_0x9a4a('0x63')]({'plain':!![]});return db[_0x9a4a('0x64')][_0x9a4a('0x55')]({'where':{'id':_0x3d7665[_0x9a4a('0x65')]}});}return null;})[_0x9a4a('0x1f')](handleEntityNotFound(_0x352898,null))[_0x9a4a('0x1f')](function(_0x2c97f1){if(_0x2c97f1){return _0x2c97f1[_0x9a4a('0x34')]({'UserId':_0x195cdb[_0x9a4a('0x57')][_0x9a4a('0x60')],'read1stAt':_[_0x9a4a('0x66')](_0x2c97f1[_0x9a4a('0x67')])?moment()[_0x9a4a('0x5e')](_0x9a4a('0x5f')):undefined});}return null;})[_0x9a4a('0x1f')](function(_0xe8c800){if(_0xe8c800){_0x43d422[_0x9a4a('0x68')]=_0xe8c800['get']({'plain':!![]});interaction_log[_0x9a4a('0x20')](_0x9a4a('0x69'),_0x195cdb[_0x9a4a('0x61')]['id'],_0x195cdb['user']['name'],_0x195cdb[_0x9a4a('0x61')]['role'],_0x43d422[_0x9a4a('0x68')]['id'],_0x195cdb['body']?JSON['stringify'](_0x195cdb[_0x9a4a('0x57')]):_0x9a4a('0x6a'));return respondWithRpcPromise(_0x9a4a('0x6b'),'acceptMessage',_0x43d422);}return null;})[_0x9a4a('0x1f')](function(_0x1f41d0){var _0x4ccca1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1f41d0[_0x9a4a('0x27')][_0x9a4a('0x6c')];return db[_0x9a4a('0x6d')]['query'](_0x4ccca1,{'type':db[_0x9a4a('0x6e')][_0x9a4a('0x6f')][_0x9a4a('0x70')],'raw':!![]})[_0x9a4a('0x1f')](function(_0x5b7289){return _0x5b7289;});})[_0x9a4a('0x1f')](function(_0xb71201){if(_0xb71201){_0x43d422[_0x9a4a('0x27')]['contact']=_0xb71201[0x0];if(!_0x195cdb[_0x9a4a('0x57')]['UserId'])return;return db['User'][_0x9a4a('0x55')]({'where':{'id':_0x195cdb[_0x9a4a('0x57')]['UserId'],'role':_0x9a4a('0x62')},'attributes':['id',_0x9a4a('0x36'),_0x9a4a('0x71'),'email',_0x9a4a('0x72')],'raw':!![]});}return null;})[_0x9a4a('0x1f')](function(_0x4701c5){if(!_0x4701c5)return null;_0x43d422[_0x9a4a('0x27')]['agent']=_0x4701c5;return _0x43d422;})['then'](function(_0x15ca69){if(_0x15ca69){if(_0x195cdb[_0x9a4a('0x57')][_0x9a4a('0x73')]){_0x43d422['message'][_0x9a4a('0x74')]=util[_0x9a4a('0x5e')](_0x9a4a('0x75'),_0x195cdb[_0x9a4a('0x61')]['name']);_0x43d422[_0x9a4a('0x27')]['channel']=_0x43d422[_0x9a4a('0x76')];_0x43d422[_0x9a4a('0x27')][_0x9a4a('0x77')]=_0x9a4a('0x5b');return respondWithRpcPromise('EventManager',_0x9a4a('0x78'),{'event':'acceptmessage','message':_0x43d422['message']},client9002)[_0x9a4a('0x1f')](function(){return _0x43d422;});}return _0x43d422;}return null;})['then'](respondWithResult(_0x352898,null))[_0x9a4a('0x28')](handleError(_0x352898,null));};var interaction_log=require(_0x9a4a('0x59'))(_0x9a4a('0x5a'));exports[_0x9a4a('0x33')]=function(_0x34bf34,_0x4675c5,_0x144266){var _0x5336f8={'agent':{},'channel':_0x9a4a('0x79')};if(_0x34bf34[_0x9a4a('0x57')]['id']){delete _0x34bf34[_0x9a4a('0x57')]['id'];}_0x34bf34['body'][_0x9a4a('0x60')]=_0x34bf34[_0x9a4a('0x57')][_0x9a4a('0x60')]||_0x34bf34['user']['id'];_0x5336f8[_0x9a4a('0x62')]['id']=_0x34bf34['body']['UserId'];return db[_0x9a4a('0x3a')][_0x9a4a('0x55')]({'where':{'id':_0x34bf34[_0x9a4a('0x51')]['id'],'UserId':null}})[_0x9a4a('0x1f')](handleEntityNotFound(_0x4675c5,null))['then'](function(_0x40185d){if(_0x40185d){_0x5336f8[_0x9a4a('0x27')]=_0x40185d['get']({'plain':!![]});return db['WhatsappInteraction']['find']({'where':{'id':_0x40185d['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x4675c5,null))[_0x9a4a('0x1f')](function(_0x3ec5ac){if(_0x3ec5ac){_0x5336f8['interaction']=_0x3ec5ac['get']({'plain':!![]});interaction_log[_0x9a4a('0x20')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x34bf34[_0x9a4a('0x61')]['id'],_0x34bf34['user']['name'],_0x34bf34[_0x9a4a('0x61')][_0x9a4a('0x7a')],_0x5336f8[_0x9a4a('0x68')]['id'],_0x34bf34[_0x9a4a('0x57')]?JSON[_0x9a4a('0x24')](_0x34bf34['body']):_0x9a4a('0x6a'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x5336f8);}return null;})[_0x9a4a('0x1f')](function(_0x2337eb){var _0x4aa68e=_0x9a4a('0x7b')+_0x2337eb[_0x9a4a('0x27')][_0x9a4a('0x6c')];return db[_0x9a4a('0x6d')][_0x9a4a('0x3f')](_0x4aa68e,{'type':db[_0x9a4a('0x6e')][_0x9a4a('0x6f')]['SELECT'],'raw':!![]})[_0x9a4a('0x1f')](function(_0x581ce6){return _0x581ce6;});})[_0x9a4a('0x1f')](function(_0x47347f){if(_0x47347f){_0x5336f8[_0x9a4a('0x27')][_0x9a4a('0x7c')]=_0x47347f[0x0];if(!_0x34bf34[_0x9a4a('0x57')]['UserId'])return;return db[_0x9a4a('0x7d')][_0x9a4a('0x55')]({'where':{'id':_0x34bf34[_0x9a4a('0x57')][_0x9a4a('0x60')],'role':_0x9a4a('0x62')},'attributes':['id','name',_0x9a4a('0x71'),'email','internal'],'raw':!![]});}return null;})[_0x9a4a('0x1f')](function(_0x33d3b9){if(!_0x33d3b9)return null;_0x5336f8[_0x9a4a('0x27')][_0x9a4a('0x62')]=_0x33d3b9;return _0x5336f8;})[_0x9a4a('0x1f')](function(_0x1c8dbd){if(_0x1c8dbd){_0x1c8dbd[_0x9a4a('0x27')][_0x9a4a('0x74')]=util['format'](_0x9a4a('0x75'),_0x34bf34[_0x9a4a('0x61')][_0x9a4a('0x36')]);_0x1c8dbd[_0x9a4a('0x27')][_0x9a4a('0x76')]=_0x5336f8['channel'];_0x1c8dbd[_0x9a4a('0x27')]['event']=_0x9a4a('0x33');respondWithRpcPromise(_0x9a4a('0x78'),_0x9a4a('0x78'),{'event':_0x9a4a('0x7e'),'message':_0x1c8dbd[_0x9a4a('0x27')]},client9002);return _0x5336f8;}return null;})[_0x9a4a('0x1f')](respondWithResult(_0x4675c5,null))[_0x9a4a('0x28')](handleError(_0x4675c5,null));};exports[_0x9a4a('0x2a')]=function(_0x58eab6,_0x419207,_0x1ad149){if(_0x58eab6['body']['id']){delete _0x58eab6[_0x9a4a('0x57')]['id'];}var _0x2ddd63;return db['WhatsappMessage'][_0x9a4a('0x55')]({'where':{'id':_0x58eab6[_0x9a4a('0x51')]['id']}})[_0x9a4a('0x1f')](handleEntityNotFound(_0x419207,null))['then'](function(_0x55db73){if(_0x55db73){_0x2ddd63=_0x55db73;return db[_0x9a4a('0x7f')]['find']({'where':{'id':_0x55db73[_0x9a4a('0x80')]}});}})[_0x9a4a('0x1f')](handleEntityNotFound(_0x419207,null))[_0x9a4a('0x1f')](function(_0x5212a4){if(_0x5212a4){logger['debug'](_0x9a4a('0x81'),_0x9a4a('0x2a'),'received\x20delivery\x20report\x20from',_0x5212a4[_0x9a4a('0x3c')],util[_0x9a4a('0x82')](_0x58eab6[_0x9a4a('0x57')],{'showHidden':![],'depth':null}));switch(_0x5212a4[_0x9a4a('0x3c')]){case _0x9a4a('0x83'):if(_0x58eab6[_0x9a4a('0x57')]['MessageSid']&&_0x58eab6['body']['MessageSid']===_0x2ddd63[_0x9a4a('0x84')]&&_0x58eab6[_0x9a4a('0x57')][_0x9a4a('0x85')]&&_0x58eab6[_0x9a4a('0x57')]['MessageStatus']==='read'){return _0x2ddd63[_0x9a4a('0x34')]({'read':!![]});}else{logger[_0x9a4a('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s','status',_0x9a4a('0x83'),util[_0x9a4a('0x82')](_0x58eab6['body'],{'showHidden':![],'depth':null}));}break;}return _0x2ddd63;}})[_0x9a4a('0x1f')](respondWithResult(_0x419207,null))[_0x9a4a('0x28')](handleError(_0x419207,null));};
\ No newline at end of file
+var _0x8c4a=['format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','WhatsappAccount','WhatsappAccountId','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','sendStatus','stack','send','index','map','WhatsappMessage','rawAttributes','query','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','name','options','include','rows','show','keys','includeAll','find','create','body','params','describe','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','agent','UserId','get','WhatsappInteraction','WhatsappInteractionId','isNil'];(function(_0x5b2767,_0xc983df){var _0x482816=function(_0x1c8a6c){while(--_0x1c8a6c){_0x5b2767['push'](_0x5b2767['shift']());}};_0x482816(++_0xc983df);}(_0x8c4a,0xb0));var _0xa8c4=function(_0x2d9a29,_0x23df16){_0x2d9a29=_0x2d9a29-0x0;var _0x4a52c8=_0x8c4a[_0x2d9a29];return _0x4a52c8;};'use strict';var emlformat=require(_0xa8c4('0x0'));var rimraf=require(_0xa8c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8c4('0x2'));var rp=require('request-promise');var moment=require(_0xa8c4('0x3'));var BPromise=require(_0xa8c4('0x4'));var Mustache=require(_0xa8c4('0x5'));var util=require(_0xa8c4('0x6'));var path=require(_0xa8c4('0x7'));var sox=require(_0xa8c4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa8c4('0x9'));var _=require(_0xa8c4('0xa'));var squel=require(_0xa8c4('0xb'));var crypto=require(_0xa8c4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa8c4('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa8c4('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa8c4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xa8c4('0x10'));var hardwareService=require(_0xa8c4('0x11'));var logger=require(_0xa8c4('0x12'))(_0xa8c4('0x13'));var utils=require(_0xa8c4('0x14'));var config=require(_0xa8c4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8c4('0x16'))['db'];config['redis']=_['defaults'](config[_0xa8c4('0x17')],{'host':_0xa8c4('0x18'),'port':0x18eb});var socket=require(_0xa8c4('0x19'))(new Redis(config[_0xa8c4('0x17')]));require(_0xa8c4('0x1a'))[_0xa8c4('0x1b')](socket);var jayson=require(_0xa8c4('0x1c'));var client=jayson[_0xa8c4('0x1d')][_0xa8c4('0x1e')]({'port':0x232c});var client9002=jayson[_0xa8c4('0x1d')][_0xa8c4('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x19ee7c,_0x2e7c0b,_0x32d379,_0x256412){return new BPromise(function(_0x4efa9d,_0x182d74){var _0x27543a=_0x256412||client;return _0x27543a[_0xa8c4('0x1f')](_0x19ee7c,_0x32d379)[_0xa8c4('0x20')](function(_0x3557ae){logger[_0xa8c4('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0x2e7c0b,_0xa8c4('0x22'));logger[_0xa8c4('0x23')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2e7c0b,'request\x20sent',JSON[_0xa8c4('0x24')](_0x3557ae));if(_0x3557ae[_0xa8c4('0x25')]){if(_0x3557ae[_0xa8c4('0x25')][_0xa8c4('0x26')]===0x1f4){logger[_0xa8c4('0x25')](_0xa8c4('0x27'),_0x2e7c0b,_0x3557ae[_0xa8c4('0x25')][_0xa8c4('0x28')]);return _0x182d74(_0x3557ae[_0xa8c4('0x25')][_0xa8c4('0x28')]);}logger[_0xa8c4('0x25')](_0xa8c4('0x27'),_0x2e7c0b,_0x3557ae[_0xa8c4('0x25')]['message']);return _0x4efa9d(_0x3557ae[_0xa8c4('0x25')]['message']);}else{logger[_0xa8c4('0x21')](_0xa8c4('0x27'),_0x2e7c0b,_0xa8c4('0x22'));_0x4efa9d(_0x3557ae[_0xa8c4('0x29')][_0xa8c4('0x28')]);}})[_0xa8c4('0x2a')](function(_0x288d79){logger[_0xa8c4('0x25')](_0xa8c4('0x27'),_0x2e7c0b,_0x288d79);_0x182d74(_0x288d79);});});}function respondWithStatusCode(_0xc02d90,_0x4641a2){_0x4641a2=_0x4641a2||0xcc;return function(_0x8f794b){if(_0x8f794b){return _0xc02d90['sendStatus'](_0x4641a2);}return _0xc02d90[_0xa8c4('0x2b')](_0x4641a2)[_0xa8c4('0x2c')]();};}function respondWithResult(_0x524976,_0x551243){_0x551243=_0x551243||0xc8;return function(_0x37526c){if(_0x37526c){return _0x524976[_0xa8c4('0x2b')](_0x551243)[_0xa8c4('0x2d')](_0x37526c);}};}function respondWithFilteredResult(_0x160f7b,_0x2af22c){return function(_0x755c52){if(_0x755c52){var _0xd2b2f=typeof _0x2af22c[_0xa8c4('0x2e')]===_0xa8c4('0x2f')&&typeof _0x2af22c[_0xa8c4('0x30')]===_0xa8c4('0x2f');var _0x5ba4fb=_0x755c52['count'];var _0x43782c=_0xd2b2f?0x0:_0x2af22c[_0xa8c4('0x2e')];var _0x5a37f2=_0xd2b2f?_0x755c52[_0xa8c4('0x31')]:_0x2af22c['offset']+_0x2af22c[_0xa8c4('0x30')];var _0x10b16f;if(_0x5a37f2>=_0x5ba4fb){_0x5a37f2=_0x5ba4fb;_0x10b16f=0xc8;}else{_0x10b16f=0xce;}_0x160f7b['status'](_0x10b16f);return _0x160f7b[_0xa8c4('0x32')](_0xa8c4('0x33'),_0x43782c+'-'+_0x5a37f2+'/'+_0x5ba4fb)['json'](_0x755c52);}return null;};}function patchUpdates(_0x212fe1){return function(_0x1a0e4d){try{jsonpatch[_0xa8c4('0x34')](_0x1a0e4d,_0x212fe1,!![]);}catch(_0x3261e0){return BPromise[_0xa8c4('0x35')](_0x3261e0);}return _0x1a0e4d['save']();};}function saveUpdates(_0x4c8ee6,_0x951ce5){return function(_0x9907c2){if(_0x9907c2){return _0x9907c2[_0xa8c4('0x36')](_0x4c8ee6)[_0xa8c4('0x20')](function(_0x3516a5){return _0x3516a5;});}return null;};}function removeEntity(_0x2dc85e,_0x216ed7){return function(_0x3a5e25){if(_0x3a5e25){return _0x3a5e25[_0xa8c4('0x37')]()[_0xa8c4('0x20')](function(){_0x2dc85e[_0xa8c4('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x316828,_0x1040a4){return function(_0x1e47c4){if(!_0x1e47c4){_0x316828[_0xa8c4('0x38')](0x194);}return _0x1e47c4;};}function handleError(_0x20fedf,_0x22df20){_0x22df20=_0x22df20||0x1f4;return function(_0x3eaed5){logger['error'](_0x3eaed5[_0xa8c4('0x39')]);if(_0x3eaed5['name']){delete _0x3eaed5['name'];}_0x20fedf[_0xa8c4('0x2b')](_0x22df20)[_0xa8c4('0x3a')](_0x3eaed5);};}exports[_0xa8c4('0x3b')]=function(_0x5bd62f,_0x4a8afa){var _0x341a14={},_0x38d6e7={},_0x587dae={'count':0x0,'rows':[]};var _0x171a50=_[_0xa8c4('0x3c')](db[_0xa8c4('0x3d')][_0xa8c4('0x3e')],function(_0x3342d0){return{'name':_0x3342d0['fieldName'],'type':_0x3342d0['type']['key']};});_0x38d6e7['model']=_['map'](_0x171a50,'name');_0x38d6e7[_0xa8c4('0x3f')]=_['keys'](_0x5bd62f[_0xa8c4('0x3f')]);_0x38d6e7['filters']=_[_0xa8c4('0x40')](_0x38d6e7[_0xa8c4('0x41')],_0x38d6e7[_0xa8c4('0x3f')]);_0x341a14[_0xa8c4('0x42')]=_[_0xa8c4('0x40')](_0x38d6e7[_0xa8c4('0x41')],qs[_0xa8c4('0x43')](_0x5bd62f[_0xa8c4('0x3f')][_0xa8c4('0x43')]));_0x341a14[_0xa8c4('0x42')]=_0x341a14[_0xa8c4('0x42')][_0xa8c4('0x44')]?_0x341a14[_0xa8c4('0x42')]:_0x38d6e7[_0xa8c4('0x41')];if(!_0x5bd62f[_0xa8c4('0x3f')]['hasOwnProperty'](_0xa8c4('0x45'))){_0x341a14['limit']=qs['limit'](_0x5bd62f[_0xa8c4('0x3f')]['limit']);_0x341a14[_0xa8c4('0x2e')]=qs[_0xa8c4('0x2e')](_0x5bd62f['query']['offset']);}_0x341a14[_0xa8c4('0x46')]=qs[_0xa8c4('0x47')](_0x5bd62f[_0xa8c4('0x3f')][_0xa8c4('0x47')]);_0x341a14['where']=qs[_0xa8c4('0x48')](_[_0xa8c4('0x49')](_0x5bd62f[_0xa8c4('0x3f')],_0x38d6e7['filters']),_0x171a50);if(_0x5bd62f[_0xa8c4('0x3f')][_0xa8c4('0x4a')]){_0x341a14[_0xa8c4('0x4b')]=_[_0xa8c4('0x4c')](_0x341a14['where'],{'$or':_['map'](_0x171a50,function(_0x18b43b){if(_0x18b43b[_0xa8c4('0x4d')]!==_0xa8c4('0x4e')){var _0x4dba48={};_0x4dba48[_0x18b43b[_0xa8c4('0x4f')]]={'$like':'%'+_0x5bd62f[_0xa8c4('0x3f')]['filter']+'%'};return _0x4dba48;}})});}_0x341a14=_[_0xa8c4('0x4c')]({},_0x341a14,_0x5bd62f[_0xa8c4('0x50')]);var _0x20657d={'where':_0x341a14[_0xa8c4('0x4b')]};return db[_0xa8c4('0x3d')][_0xa8c4('0x31')](_0x20657d)[_0xa8c4('0x20')](function(_0x51d529){_0x587dae[_0xa8c4('0x31')]=_0x51d529;if(_0x5bd62f[_0xa8c4('0x3f')]['includeAll']){_0x341a14[_0xa8c4('0x51')]=[{'all':!![]}];}return db[_0xa8c4('0x3d')]['findAll'](_0x341a14);})['then'](function(_0x3203d6){_0x587dae[_0xa8c4('0x52')]=_0x3203d6;return _0x587dae;})[_0xa8c4('0x20')](respondWithFilteredResult(_0x4a8afa,_0x341a14))['catch'](handleError(_0x4a8afa,null));};exports[_0xa8c4('0x53')]=function(_0x13b598,_0x4d1048){var _0x41b29d={'raw':!![],'where':{'id':_0x13b598['params']['id']}},_0x3b27d8={};_0x3b27d8[_0xa8c4('0x41')]=_[_0xa8c4('0x54')](db['WhatsappMessage'][_0xa8c4('0x3e')]);_0x3b27d8[_0xa8c4('0x3f')]=_[_0xa8c4('0x54')](_0x13b598[_0xa8c4('0x3f')]);_0x3b27d8['filters']=_['intersection'](_0x3b27d8['model'],_0x3b27d8[_0xa8c4('0x3f')]);_0x41b29d[_0xa8c4('0x42')]=_[_0xa8c4('0x40')](_0x3b27d8[_0xa8c4('0x41')],qs[_0xa8c4('0x43')](_0x13b598[_0xa8c4('0x3f')][_0xa8c4('0x43')]));_0x41b29d[_0xa8c4('0x42')]=_0x41b29d[_0xa8c4('0x42')][_0xa8c4('0x44')]?_0x41b29d[_0xa8c4('0x42')]:_0x3b27d8[_0xa8c4('0x41')];if(_0x13b598[_0xa8c4('0x3f')][_0xa8c4('0x55')]){_0x41b29d[_0xa8c4('0x51')]=[{'all':!![]}];}_0x41b29d=_[_0xa8c4('0x4c')]({},_0x41b29d,_0x13b598[_0xa8c4('0x50')]);return db[_0xa8c4('0x3d')][_0xa8c4('0x56')](_0x41b29d)['then'](handleEntityNotFound(_0x4d1048,null))[_0xa8c4('0x20')](respondWithResult(_0x4d1048,null))['catch'](handleError(_0x4d1048,null));};exports[_0xa8c4('0x57')]=function(_0x449b60,_0xeafcbf){return db[_0xa8c4('0x3d')][_0xa8c4('0x57')](_0x449b60['body'],{})[_0xa8c4('0x20')](respondWithResult(_0xeafcbf,0xc9))[_0xa8c4('0x2a')](handleError(_0xeafcbf,null));};exports[_0xa8c4('0x36')]=function(_0x2e3204,_0x383344){if(_0x2e3204[_0xa8c4('0x58')]['id']){delete _0x2e3204[_0xa8c4('0x58')]['id'];}return db[_0xa8c4('0x3d')][_0xa8c4('0x56')]({'where':{'id':_0x2e3204[_0xa8c4('0x59')]['id']}})[_0xa8c4('0x20')](handleEntityNotFound(_0x383344,null))[_0xa8c4('0x20')](saveUpdates(_0x2e3204[_0xa8c4('0x58')],null))[_0xa8c4('0x20')](respondWithResult(_0x383344,null))[_0xa8c4('0x2a')](handleError(_0x383344,null));};exports[_0xa8c4('0x37')]=function(_0x783b98,_0x288244){return db[_0xa8c4('0x3d')]['find']({'where':{'id':_0x783b98[_0xa8c4('0x59')]['id']}})[_0xa8c4('0x20')](handleEntityNotFound(_0x288244,null))['then'](removeEntity(_0x288244,null))[_0xa8c4('0x2a')](handleError(_0x288244,null));};exports[_0xa8c4('0x5a')]=function(_0x5186a8,_0x847279){return db[_0xa8c4('0x3d')][_0xa8c4('0x5a')]()[_0xa8c4('0x20')](respondWithResult(_0x847279,null))[_0xa8c4('0x2a')](handleError(_0x847279,null));};var interaction_log=require(_0xa8c4('0x12'))('whatsapp-interactions');exports[_0xa8c4('0x5b')]=function(_0x2107f8,_0x1f143b,_0x3702de){var _0x1f1331={'agent':{},'channel':_0xa8c4('0x5c')};if(_0x2107f8[_0xa8c4('0x58')]['id']){delete _0x2107f8[_0xa8c4('0x58')]['id'];}_0x2107f8['body'][_0xa8c4('0x5d')]=!![];_0x2107f8[_0xa8c4('0x58')][_0xa8c4('0x5e')]=moment()['format'](_0xa8c4('0x5f'));_0x2107f8['body']['UserId']=_0x2107f8[_0xa8c4('0x58')]['UserId']||_0x2107f8['user']['id'];_0x1f1331[_0xa8c4('0x60')]['id']=_0x2107f8['body'][_0xa8c4('0x61')];return db[_0xa8c4('0x3d')]['find']({'where':{'id':_0x2107f8['params']['id'],'UserId':null}})[_0xa8c4('0x20')](handleEntityNotFound(_0x1f143b,null))[_0xa8c4('0x20')](saveUpdates(_0x2107f8[_0xa8c4('0x58')],null))['then'](function(_0x554303){if(_0x554303){_0x1f1331['message']=_0x554303[_0xa8c4('0x62')]({'plain':!![]});return db[_0xa8c4('0x63')]['find']({'where':{'id':_0x554303[_0xa8c4('0x64')]}});}return null;})[_0xa8c4('0x20')](handleEntityNotFound(_0x1f143b,null))[_0xa8c4('0x20')](function(_0x2e70e4){if(_0x2e70e4){return _0x2e70e4[_0xa8c4('0x36')]({'UserId':_0x2107f8[_0xa8c4('0x58')][_0xa8c4('0x61')],'read1stAt':_[_0xa8c4('0x65')](_0x2e70e4['read1stAt'])?moment()[_0xa8c4('0x66')](_0xa8c4('0x5f')):undefined});}return null;})[_0xa8c4('0x20')](function(_0x50233b){if(_0x50233b){_0x1f1331[_0xa8c4('0x67')]=_0x50233b[_0xa8c4('0x62')]({'plain':!![]});interaction_log[_0xa8c4('0x21')](_0xa8c4('0x68'),_0x2107f8[_0xa8c4('0x69')]['id'],_0x2107f8[_0xa8c4('0x69')][_0xa8c4('0x4f')],_0x2107f8['user'][_0xa8c4('0x6a')],_0x1f1331[_0xa8c4('0x67')]['id'],_0x2107f8[_0xa8c4('0x58')]?JSON[_0xa8c4('0x24')](_0x2107f8[_0xa8c4('0x58')]):_0xa8c4('0x6b'));return respondWithRpcPromise(_0xa8c4('0x6c'),'acceptMessage',_0x1f1331);}return null;})[_0xa8c4('0x20')](function(_0x5d8f15){var _0x42161a=_0xa8c4('0x6d')+_0x5d8f15[_0xa8c4('0x28')][_0xa8c4('0x6e')];return db[_0xa8c4('0x6f')]['query'](_0x42161a,{'type':db[_0xa8c4('0x70')][_0xa8c4('0x71')][_0xa8c4('0x72')],'raw':!![]})[_0xa8c4('0x20')](function(_0x17f780){return _0x17f780;});})[_0xa8c4('0x20')](function(_0x7267f1){if(_0x7267f1){_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x73')]=_0x7267f1[0x0];if(!_0x2107f8['body'][_0xa8c4('0x61')])return;return db[_0xa8c4('0x74')]['find']({'where':{'id':_0x2107f8[_0xa8c4('0x58')]['UserId'],'role':_0xa8c4('0x60')},'attributes':['id','name',_0xa8c4('0x75'),_0xa8c4('0x76'),_0xa8c4('0x77')],'raw':!![]});}return null;})[_0xa8c4('0x20')](function(_0x453d3f){if(!_0x453d3f)return null;_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x60')]=_0x453d3f;return _0x1f1331;})['then'](function(_0x5d2a92){if(_0x5d2a92){if(_0x2107f8[_0xa8c4('0x58')][_0xa8c4('0x78')]){_0x1f1331['message'][_0xa8c4('0x79')]=util[_0xa8c4('0x66')](_0xa8c4('0x7a'),_0x2107f8['user'][_0xa8c4('0x4f')]);_0x1f1331[_0xa8c4('0x28')]['channel']=_0x1f1331[_0xa8c4('0x7b')];_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x7c')]=_0x1f1331[_0xa8c4('0x7b')];_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x7d')]=_0xa8c4('0x5b');return respondWithRpcPromise('EventManager',_0xa8c4('0x7e'),{'event':_0xa8c4('0x7f'),'message':_0x1f1331[_0xa8c4('0x28')]},client9002)[_0xa8c4('0x20')](function(){return _0x1f1331;});}return _0x1f1331;}return null;})[_0xa8c4('0x20')](respondWithResult(_0x1f143b,null))['catch'](handleError(_0x1f143b,null));};var interaction_log=require(_0xa8c4('0x12'))('whatsapp-interactions');exports[_0xa8c4('0x35')]=function(_0x559996,_0x462147,_0x49c4cd){var _0x2e6898={'agent':{},'channel':_0xa8c4('0x5c')};if(_0x559996[_0xa8c4('0x58')]['id']){delete _0x559996[_0xa8c4('0x58')]['id'];}_0x559996[_0xa8c4('0x58')][_0xa8c4('0x61')]=_0x559996[_0xa8c4('0x58')][_0xa8c4('0x61')]||_0x559996[_0xa8c4('0x69')]['id'];_0x2e6898[_0xa8c4('0x60')]['id']=_0x559996[_0xa8c4('0x58')]['UserId'];return db['WhatsappMessage'][_0xa8c4('0x56')]({'where':{'id':_0x559996['params']['id'],'UserId':null}})[_0xa8c4('0x20')](handleEntityNotFound(_0x462147,null))['then'](function(_0x7b30e2){if(_0x7b30e2){_0x2e6898[_0xa8c4('0x28')]=_0x7b30e2['get']({'plain':!![]});return db[_0xa8c4('0x63')][_0xa8c4('0x56')]({'where':{'id':_0x7b30e2[_0xa8c4('0x64')]}});}return null;})[_0xa8c4('0x20')](handleEntityNotFound(_0x462147,null))[_0xa8c4('0x20')](function(_0x868f86){if(_0x868f86){_0x2e6898[_0xa8c4('0x67')]=_0x868f86['get']({'plain':!![]});interaction_log[_0xa8c4('0x21')](_0xa8c4('0x80'),_0x559996[_0xa8c4('0x69')]['id'],_0x559996['user'][_0xa8c4('0x4f')],_0x559996[_0xa8c4('0x69')]['role'],_0x2e6898[_0xa8c4('0x67')]['id'],_0x559996[_0xa8c4('0x58')]?JSON[_0xa8c4('0x24')](_0x559996[_0xa8c4('0x58')]):_0xa8c4('0x6b'));return respondWithRpcPromise(_0xa8c4('0x81'),_0xa8c4('0x82'),_0x2e6898);}return null;})[_0xa8c4('0x20')](function(_0x3698af){var _0x1151a1=_0xa8c4('0x6d')+_0x3698af[_0xa8c4('0x28')][_0xa8c4('0x6e')];return db['sequelize']['query'](_0x1151a1,{'type':db[_0xa8c4('0x70')][_0xa8c4('0x71')][_0xa8c4('0x72')],'raw':!![]})[_0xa8c4('0x20')](function(_0x1c11d8){return _0x1c11d8;});})[_0xa8c4('0x20')](function(_0x20556c){if(_0x20556c){_0x2e6898[_0xa8c4('0x28')]['contact']=_0x20556c[0x0];if(!_0x559996[_0xa8c4('0x58')]['UserId'])return;return db[_0xa8c4('0x74')][_0xa8c4('0x56')]({'where':{'id':_0x559996['body'][_0xa8c4('0x61')],'role':_0xa8c4('0x60')},'attributes':['id',_0xa8c4('0x4f'),'fullname','email',_0xa8c4('0x77')],'raw':!![]});}return null;})[_0xa8c4('0x20')](function(_0x2cfa76){if(!_0x2cfa76)return null;_0x2e6898['message'][_0xa8c4('0x60')]=_0x2cfa76;return _0x2e6898;})['then'](function(_0x1005b3){if(_0x1005b3){_0x1005b3['message'][_0xa8c4('0x79')]=util[_0xa8c4('0x66')](_0xa8c4('0x7a'),_0x559996[_0xa8c4('0x69')][_0xa8c4('0x4f')]);_0x1005b3['message']['channel']=_0x2e6898[_0xa8c4('0x7b')];_0x1005b3[_0xa8c4('0x28')][_0xa8c4('0x7c')]=_0x2e6898[_0xa8c4('0x7b')];_0x1005b3['message']['event']='reject';respondWithRpcPromise('EventManager',_0xa8c4('0x7e'),{'event':_0xa8c4('0x83'),'message':_0x1005b3[_0xa8c4('0x28')]},client9002);return _0x2e6898;}return null;})[_0xa8c4('0x20')](respondWithResult(_0x462147,null))[_0xa8c4('0x2a')](handleError(_0x462147,null));};exports[_0xa8c4('0x2b')]=function(_0x2bd26a,_0x41e3d5,_0x1c0824){if(_0x2bd26a[_0xa8c4('0x58')]['id']){delete _0x2bd26a[_0xa8c4('0x58')]['id'];}var _0x347b61;return db[_0xa8c4('0x3d')][_0xa8c4('0x56')]({'where':{'id':_0x2bd26a['params']['id']}})['then'](handleEntityNotFound(_0x41e3d5,null))[_0xa8c4('0x20')](function(_0x43a65d){if(_0x43a65d){_0x347b61=_0x43a65d;return db[_0xa8c4('0x84')][_0xa8c4('0x56')]({'where':{'id':_0x43a65d[_0xa8c4('0x85')]}});}})['then'](handleEntityNotFound(_0x41e3d5,null))[_0xa8c4('0x20')](function(_0x12eb0a){if(_0x12eb0a){logger[_0xa8c4('0x23')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x12eb0a[_0xa8c4('0x4d')],util['inspect'](_0x2bd26a[_0xa8c4('0x58')],{'showHidden':![],'depth':null}));switch(_0x12eb0a[_0xa8c4('0x4d')]){case _0xa8c4('0x86'):if(_0x2bd26a[_0xa8c4('0x58')][_0xa8c4('0x87')]&&_0x2bd26a[_0xa8c4('0x58')][_0xa8c4('0x87')]===_0x347b61[_0xa8c4('0x88')]&&_0x2bd26a['body'][_0xa8c4('0x89')]&&_0x2bd26a[_0xa8c4('0x58')][_0xa8c4('0x89')]==='read'){return _0x347b61[_0xa8c4('0x36')]({'read':!![]});}else{logger[_0xa8c4('0x25')](_0xa8c4('0x8a'),_0xa8c4('0x2b'),_0xa8c4('0x86'),util['inspect'](_0x2bd26a[_0xa8c4('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x347b61;}})[_0xa8c4('0x20')](respondWithResult(_0x41e3d5,null))[_0xa8c4('0x2a')](handleError(_0x41e3d5,null));};
\ No newline at end of file
index f117731..18fc942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23a3=['update','remove','emit','hasOwnProperty','exports','setMaxListeners'];(function(_0x4c96b9,_0x3aa7fd){var _0x1f4aaa=function(_0x282308){while(--_0x282308){_0x4c96b9['push'](_0x4c96b9['shift']());}};_0x1f4aaa(++_0x3aa7fd);}(_0x23a3,0x131));var _0x323a=function(_0x404460,_0x53dcf8){_0x404460=_0x404460-0x0;var _0x423a08=_0x23a3[_0x404460];return _0x423a08;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x323a('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':_0x323a('0x1'),'afterDestroy':_0x323a('0x2')};function emitEvent(_0x122b97){return function(_0x250485,_0x46030e,_0x180066){WhatsappMessageEvents[_0x323a('0x3')](_0x122b97+':'+_0x250485['id'],_0x250485);WhatsappMessageEvents[_0x323a('0x3')](_0x122b97,_0x250485);_0x180066(null);};}for(var e in events){if(events[_0x323a('0x4')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x323a('0x5')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x4bde=['hook','events','../../mysqldb','WhatsappMessage','save','update','remove','emit','hasOwnProperty'];(function(_0x58e77d,_0x1738fd){var _0x2f3740=function(_0x33146a){while(--_0x33146a){_0x58e77d['push'](_0x58e77d['shift']());}};_0x2f3740(++_0x1738fd);}(_0x4bde,0x1b1));var _0xe4bd=function(_0x5dd439,_0x32cdf2){_0x5dd439=_0x5dd439-0x0;var _0x3fc93b=_0x4bde[_0x5dd439];return _0x3fc93b;};'use strict';var EventEmitter=require(_0xe4bd('0x0'));var WhatsappMessage=require(_0xe4bd('0x1'))['db'][_0xe4bd('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe4bd('0x3'),'afterUpdate':_0xe4bd('0x4'),'afterDestroy':_0xe4bd('0x5')};function emitEvent(_0x3108bd){return function(_0x5741e5,_0x210d47,_0x1b8621){WhatsappMessageEvents[_0xe4bd('0x6')](_0x3108bd+':'+_0x5741e5['id'],_0x5741e5);WhatsappMessageEvents[_0xe4bd('0x6')](_0x3108bd,_0x5741e5);_0x1b8621(null);};}for(var e in events){if(events[_0xe4bd('0x7')](e)){var event=events[e];WhatsappMessage[_0xe4bd('0x8')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 9a825ae..3cc224f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ab=['WhatsappAccountId','type','accountSid','authToken','create','whatsapp:','phone','remote','/status?token=','token','sid','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','lodash','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','WhatsappInteractionId','then','update','createdAt','error','WhatsappAccount','find'];(function(_0x130011,_0x4e9d3e){var _0x4f0423=function(_0x5e3bb8){while(--_0x5e3bb8){_0x130011['push'](_0x130011['shift']());}};_0x4f0423(++_0x4e9d3e);}(_0x92ab,0x193));var _0xb92a=function(_0x48f10a,_0x27f895){_0x48f10a=_0x48f10a-0x0;var _0xc0dfe2=_0x92ab[_0x48f10a];return _0xc0dfe2;};'use strict';var _=require(_0xb92a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb92a('0x1'));var moment=require(_0xb92a('0x2'));var BPromise=require('bluebird');var rp=require(_0xb92a('0x3'));var fs=require('fs');var path=require(_0xb92a('0x4'));var rimraf=require(_0xb92a('0x5'));var config=require(_0xb92a('0x6'));var attributes=require(_0xb92a('0x7'));module['exports']=function(_0x15a645,_0x11acba){return _0x15a645['define'](_0xb92a('0x8'),attributes,{'tableName':_0xb92a('0x9'),'paranoid':![],'indexes':[{'name':_0xb92a('0xa'),'fields':[_0xb92a('0xa')]},{'name':_0xb92a('0xb'),'fields':[_0xb92a('0xc')],'type':_0xb92a('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x7e941d,_0x3f5f9d,_0x4aedce){var _0xffda36=_0x15a645['models'];var _0x4c5594=_0x7e941d[_0xb92a('0xe')]({'plain':!![]});if(_0x4c5594[_0xb92a('0xf')][_0xb92a('0x10')]()==='in'||_0x4c5594['direction'][_0xb92a('0x10')]()===_0xb92a('0x11')&&!_0x4c5594[_0xb92a('0x12')]&&!_[_0xb92a('0x13')](_0x4c5594[_0xb92a('0x14')])){_0xffda36[_0xb92a('0x15')]['findOne']({'where':{'id':_0x4c5594[_0xb92a('0x16')]}})[_0xb92a('0x17')](function(_0x2b6fae){if(_0x2b6fae){_0x2b6fae[_0xb92a('0x18')]({'lastMsgAt':_0x4c5594[_0xb92a('0x19')],'lastMsgDirection':_0x4c5594[_0xb92a('0xf')]['toLowerCase']()});}})['catch'](function(_0x3e49c8){console[_0xb92a('0x1a')](_0x3e49c8);});}if(_0x4c5594[_0xb92a('0xf')]===_0xb92a('0x11')&&!_0x4c5594[_0xb92a('0x12')]){var _0x5c368b;_0xffda36[_0xb92a('0x1b')][_0xb92a('0x1c')]({'where':{'id':_0x4c5594[_0xb92a('0x1d')]},'raw':!![]})[_0xb92a('0x17')](function(_0x4e3cb2){_0x5c368b=_0x4e3cb2;if(_0x5c368b&&_0x5c368b[_0xb92a('0x1e')]){switch(_0x5c368b[_0xb92a('0x1e')]){case'twilio':var _0x20b26f=require('twilio');if(_0x5c368b['accountSid']&&_0x5c368b['authToken']&&_0x5c368b['phone']){var _0x2a6d9e=new _0x20b26f(_0x5c368b[_0xb92a('0x1f')],_0x5c368b[_0xb92a('0x20')]);_0x2a6d9e['messages'][_0xb92a('0x21')]({'body':_0x4c5594[_0xb92a('0xc')],'to':_0xb92a('0x22')+_0x4c5594[_0xb92a('0x23')],'from':'whatsapp:'+_0x5c368b[_0xb92a('0x23')],'statusCallback':_0x5c368b[_0xb92a('0x24')]+'/api/whatsapp/messages/'+_0x4c5594['id']+_0xb92a('0x25')+_0x5c368b[_0xb92a('0x26')]})[_0xb92a('0x17')](function(_0x20fd41){if(_0x20fd41[_0xb92a('0x27')]){return _0x7e941d[_0xb92a('0x18')]({'messageId':_0x20fd41['sid']});}})[_0xb92a('0x28')](function(_0x29805a){logger[_0xb92a('0x1a')](_0xb92a('0x29'),_0xb92a('0x2a'),_0xb92a('0x2b'),util[_0xb92a('0x2c')](_0x29805a,{'showHidden':![],'depth':null}));});}else{logger[_0xb92a('0x1a')](_0xb92a('0x29'),_0xb92a('0x2a'),_0xb92a('0x2b'),_0xb92a('0x2d'));}break;}}})[_0xb92a('0x2e')](function(){_0x4aedce();});}else{_0x4aedce();}}},'charset':_0xb92a('0x2f'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xaa2a=['secret','isNil','UserId','WhatsappInteraction','findOne','then','update','catch','error','out','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','phone','create','whatsapp:','remote','/api/whatsapp/messages/','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','toLowerCase','direction'];(function(_0x4d9947,_0x12e363){var _0x264ae9=function(_0x90af8b){while(--_0x90af8b){_0x4d9947['push'](_0x4d9947['shift']());}};_0x264ae9(++_0x12e363);}(_0xaa2a,0x1a4));var _0xaaa2=function(_0x5a8d27,_0x188425){_0x5a8d27=_0x5a8d27-0x0;var _0x52dfa5=_0xaa2a[_0x5a8d27];return _0x52dfa5;};'use strict';var _=require(_0xaaa2('0x0'));var util=require(_0xaaa2('0x1'));var logger=require(_0xaaa2('0x2'))(_0xaaa2('0x3'));var moment=require('moment');var BPromise=require(_0xaaa2('0x4'));var rp=require(_0xaaa2('0x5'));var fs=require('fs');var path=require(_0xaaa2('0x6'));var rimraf=require(_0xaaa2('0x7'));var config=require(_0xaaa2('0x8'));var attributes=require('./whatsappMessage.attributes');module[_0xaaa2('0x9')]=function(_0x2101c2,_0x2c59d2){return _0x2101c2[_0xaaa2('0xa')](_0xaaa2('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xaaa2('0xc'),'fields':[_0xaaa2('0xc')]},{'name':_0xaaa2('0xd'),'fields':[_0xaaa2('0xe')],'type':_0xaaa2('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x52dd98,_0x827ca4,_0x1a7563){var _0x58efe7=_0x2101c2[_0xaaa2('0x10')];var _0x3d800a=_0x52dd98[_0xaaa2('0x11')]({'plain':!![]});if(_0x3d800a['direction'][_0xaaa2('0x12')]()==='in'||_0x3d800a[_0xaaa2('0x13')][_0xaaa2('0x12')]()==='out'&&!_0x3d800a[_0xaaa2('0x14')]&&!_[_0xaaa2('0x15')](_0x3d800a[_0xaaa2('0x16')])){_0x58efe7[_0xaaa2('0x17')][_0xaaa2('0x18')]({'where':{'id':_0x3d800a['WhatsappInteractionId']}})[_0xaaa2('0x19')](function(_0x49f944){if(_0x49f944){_0x49f944[_0xaaa2('0x1a')]({'lastMsgAt':_0x3d800a['createdAt'],'lastMsgDirection':_0x3d800a[_0xaaa2('0x13')][_0xaaa2('0x12')]()});}})[_0xaaa2('0x1b')](function(_0x45f4ef){console[_0xaaa2('0x1c')](_0x45f4ef);});}if(_0x3d800a[_0xaaa2('0x13')]===_0xaaa2('0x1d')&&!_0x3d800a[_0xaaa2('0x14')]){var _0x383a6d;_0x58efe7[_0xaaa2('0x1e')]['find']({'where':{'id':_0x3d800a[_0xaaa2('0x1f')]},'raw':!![]})[_0xaaa2('0x19')](function(_0x50aff2){_0x383a6d=_0x50aff2;if(_0x383a6d&&_0x383a6d[_0xaaa2('0x20')]){switch(_0x383a6d[_0xaaa2('0x20')]){case'twilio':var _0x130bba=require(_0xaaa2('0x21'));if(_0x383a6d[_0xaaa2('0x22')]&&_0x383a6d['authToken']&&_0x383a6d[_0xaaa2('0x23')]){var _0x127ea4=new _0x130bba(_0x383a6d[_0xaaa2('0x22')],_0x383a6d['authToken']);_0x127ea4['messages'][_0xaaa2('0x24')]({'body':_0x3d800a['body'],'to':_0xaaa2('0x25')+_0x3d800a[_0xaaa2('0x23')],'from':_0xaaa2('0x25')+_0x383a6d['phone'],'statusCallback':_0x383a6d[_0xaaa2('0x26')]+_0xaaa2('0x27')+_0x3d800a['id']+'/status?token='+_0x383a6d['token']})[_0xaaa2('0x19')](function(_0x564ce8){if(_0x564ce8['sid']){return _0x52dd98[_0xaaa2('0x1a')]({'messageId':_0x564ce8[_0xaaa2('0x28')]});}})[_0xaaa2('0x1b')](function(_0x24ef79){logger[_0xaaa2('0x1c')](_0xaaa2('0x29'),'afterCreate',_0xaaa2('0x21'),util[_0xaaa2('0x2a')](_0x24ef79,{'showHidden':![],'depth':null}));});}else{logger[_0xaaa2('0x1c')](_0xaaa2('0x29'),_0xaaa2('0x2b'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})['finally'](function(){_0x1a7563();});}else{_0x1a7563();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 5a43572..dc0dfdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9868=['jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch','CreateWhatsappMessage','create','body','options','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x38feee,_0x3b14c5){var _0x615531=function(_0x45b4de){while(--_0x45b4de){_0x38feee['push'](_0x38feee['shift']());}};_0x615531(++_0x3b14c5);}(_0x9868,0x1d3));var _0x8986=function(_0x265351,_0x4aa6ad){_0x265351=_0x265351-0x0;var _0x10fc41=_0x9868[_0x265351];return _0x10fc41;};'use strict';var _=require(_0x8986('0x0'));var util=require(_0x8986('0x1'));var moment=require(_0x8986('0x2'));var BPromise=require('bluebird');var rs=require(_0x8986('0x3'));var fs=require('fs');var Redis=require(_0x8986('0x4'));var db=require(_0x8986('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8986('0x6'))(_0x8986('0x7'));var config=require(_0x8986('0x8'));var jayson=require(_0x8986('0x9'));var client=jayson[_0x8986('0xa')][_0x8986('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0x8986('0xc')],{'host':_0x8986('0xd'),'port':0x18eb});var socket=require(_0x8986('0xe'))(new Redis(config[_0x8986('0xc')]));require(_0x8986('0xf'))[_0x8986('0x10')](socket);function respondWithRpcPromise(_0x2ce938,_0x448537,_0x5e135e){return new BPromise(function(_0x286c8b,_0x47597e){return client[_0x8986('0x11')](_0x2ce938,_0x5e135e)[_0x8986('0x12')](function(_0x1762ee){logger[_0x8986('0x13')]('WhatsappMessage,\x20%s,\x20%s',_0x448537,_0x8986('0x14'));logger[_0x8986('0x15')](_0x8986('0x16'),_0x448537,_0x8986('0x14'),JSON[_0x8986('0x17')](_0x1762ee));if(_0x1762ee['error']){if(_0x1762ee[_0x8986('0x18')][_0x8986('0x19')]===0x1f4){logger['error'](_0x8986('0x1a'),_0x448537,_0x1762ee[_0x8986('0x18')][_0x8986('0x1b')]);return _0x47597e(_0x1762ee['error'][_0x8986('0x1b')]);}logger[_0x8986('0x18')](_0x8986('0x1a'),_0x448537,_0x1762ee['error']['message']);return _0x286c8b(_0x1762ee[_0x8986('0x18')][_0x8986('0x1b')]);}else{logger[_0x8986('0x13')](_0x8986('0x1a'),_0x448537,_0x8986('0x14'));_0x286c8b(_0x1762ee[_0x8986('0x1c')][_0x8986('0x1b')]);}})[_0x8986('0x1d')](function(_0x573d22){logger[_0x8986('0x18')](_0x8986('0x1a'),_0x448537,_0x573d22);_0x47597e(_0x573d22);});});}exports[_0x8986('0x1e')]=function(_0x3113dc){var _0x30bc00=this;return new Promise(function(_0x276676,_0x1fc888){return db['WhatsappMessage'][_0x8986('0x1f')](_0x3113dc[_0x8986('0x20')],{'raw':_0x3113dc[_0x8986('0x21')]?_0x3113dc[_0x8986('0x21')]['raw']===undefined?!![]:![]:!![]})[_0x8986('0x12')](function(_0x35bc60){logger[_0x8986('0x13')](_0x8986('0x1e'),_0x3113dc);logger[_0x8986('0x15')](_0x8986('0x1e'),_0x3113dc,JSON[_0x8986('0x17')](_0x35bc60));_0x276676(_0x35bc60);})[_0x8986('0x1d')](function(_0x25c03e){logger[_0x8986('0x18')](_0x8986('0x1e'),_0x25c03e[_0x8986('0x1b')],_0x3113dc);_0x1fc888(_0x30bc00[_0x8986('0x18')](0x1f4,_0x25c03e[_0x8986('0x1b')]));});});};
\ No newline at end of file
+var _0x2065=['options','raw','stringify','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','CreateWhatsappMessage','WhatsappMessage','create','body'];(function(_0x37fcda,_0x2f5aa1){var _0xf5ed91=function(_0x3c3241){while(--_0x3c3241){_0x37fcda['push'](_0x37fcda['shift']());}};_0xf5ed91(++_0x2f5aa1);}(_0x2065,0xcf));var _0x5206=function(_0x1ed8d2,_0x129fa2){_0x1ed8d2=_0x1ed8d2-0x0;var _0x5831b7=_0x2065[_0x1ed8d2];return _0x5831b7;};'use strict';var _=require('lodash');var util=require(_0x5206('0x0'));var moment=require('moment');var BPromise=require(_0x5206('0x1'));var rs=require(_0x5206('0x2'));var fs=require('fs');var Redis=require(_0x5206('0x3'));var db=require(_0x5206('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5206('0x5'))('rpc');var config=require(_0x5206('0x6'));var jayson=require(_0x5206('0x7'));var client=jayson[_0x5206('0x8')][_0x5206('0x9')]({'port':0x232a});config[_0x5206('0xa')]=_[_0x5206('0xb')](config[_0x5206('0xa')],{'host':_0x5206('0xc'),'port':0x18eb});var socket=require(_0x5206('0xd'))(new Redis(config[_0x5206('0xa')]));require(_0x5206('0xe'))[_0x5206('0xf')](socket);function respondWithRpcPromise(_0x5d1fd7,_0x563abc,_0x109a35){return new BPromise(function(_0x2761ec,_0x420805){return client[_0x5206('0x10')](_0x5d1fd7,_0x109a35)[_0x5206('0x11')](function(_0x1a7b7e){logger[_0x5206('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x563abc,_0x5206('0x13'));logger[_0x5206('0x14')](_0x5206('0x15'),_0x563abc,_0x5206('0x13'),JSON['stringify'](_0x1a7b7e));if(_0x1a7b7e['error']){if(_0x1a7b7e[_0x5206('0x16')][_0x5206('0x17')]===0x1f4){logger[_0x5206('0x16')](_0x5206('0x18'),_0x563abc,_0x1a7b7e[_0x5206('0x16')][_0x5206('0x19')]);return _0x420805(_0x1a7b7e[_0x5206('0x16')][_0x5206('0x19')]);}logger[_0x5206('0x16')](_0x5206('0x18'),_0x563abc,_0x1a7b7e[_0x5206('0x16')][_0x5206('0x19')]);return _0x2761ec(_0x1a7b7e[_0x5206('0x16')]['message']);}else{logger[_0x5206('0x12')](_0x5206('0x18'),_0x563abc,_0x5206('0x13'));_0x2761ec(_0x1a7b7e[_0x5206('0x1a')][_0x5206('0x19')]);}})['catch'](function(_0x2f7e65){logger[_0x5206('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x563abc,_0x2f7e65);_0x420805(_0x2f7e65);});});}exports[_0x5206('0x1b')]=function(_0x3971cd){var _0x3f41b4=this;return new Promise(function(_0x23916b,_0x4f3e9c){return db[_0x5206('0x1c')][_0x5206('0x1d')](_0x3971cd[_0x5206('0x1e')],{'raw':_0x3971cd[_0x5206('0x1f')]?_0x3971cd[_0x5206('0x1f')][_0x5206('0x20')]===undefined?!![]:![]:!![]})[_0x5206('0x11')](function(_0x5b9e5f){logger[_0x5206('0x12')]('CreateWhatsappMessage',_0x3971cd);logger[_0x5206('0x14')](_0x5206('0x1b'),_0x3971cd,JSON[_0x5206('0x21')](_0x5b9e5f));_0x23916b(_0x5b9e5f);})['catch'](function(_0xe925f3){logger[_0x5206('0x16')](_0x5206('0x1b'),_0xe925f3[_0x5206('0x19')],_0x3971cd);_0x4f3e9c(_0x3f41b4[_0x5206('0x16')](0x1f4,_0xe925f3[_0x5206('0x19')]));});});};
\ No newline at end of file
index 7e1a07d..2024e92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6491=['remove','update','emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save'];(function(_0x10004e,_0xd701e6){var _0x5af990=function(_0x4bab6a){while(--_0x4bab6a){_0x10004e['push'](_0x10004e['shift']());}};_0x5af990(++_0xd701e6);}(_0x6491,0x1ed));var _0x1649=function(_0x330740,_0x5516b5){_0x330740=_0x330740-0x0;var _0x819248=_0x6491[_0x330740];return _0x819248;};'use strict';var WhatsappMessageEvents=require(_0x1649('0x0'));var events=[_0x1649('0x1'),_0x1649('0x2'),_0x1649('0x3')];function createListener(_0x11a720,_0x117eb5){return function(_0x4e85d0){_0x117eb5[_0x1649('0x4')](_0x11a720,_0x4e85d0);};}function removeListener(_0x755af5,_0xaaa1bf){return function(){WhatsappMessageEvents[_0x1649('0x5')](_0x755af5,_0xaaa1bf);};}exports[_0x1649('0x6')]=function(_0x5421bc){for(var _0x1a84f=0x0,_0x4752bd=events[_0x1649('0x7')];_0x1a84f<_0x4752bd;_0x1a84f++){var _0x1a25e2=events[_0x1a84f];var _0x3b541b=createListener(_0x1649('0x8')+_0x1a25e2,_0x5421bc);WhatsappMessageEvents['on'](_0x1a25e2,_0x3b541b);}};
\ No newline at end of file
+var _0xb6cc=['update','emit','removeListener','register','whatsappMessage:','./whatsappMessage.events','save','remove'];(function(_0x2884e2,_0x5b55a4){var _0x1c7647=function(_0x152672){while(--_0x152672){_0x2884e2['push'](_0x2884e2['shift']());}};_0x1c7647(++_0x5b55a4);}(_0xb6cc,0x65));var _0xcb6c=function(_0x39b861,_0x50baf1){_0x39b861=_0x39b861-0x0;var _0x76423a=_0xb6cc[_0x39b861];return _0x76423a;};'use strict';var WhatsappMessageEvents=require(_0xcb6c('0x0'));var events=[_0xcb6c('0x1'),_0xcb6c('0x2'),_0xcb6c('0x3')];function createListener(_0x3bcd89,_0x44d3ac){return function(_0x5b739a){_0x44d3ac[_0xcb6c('0x4')](_0x3bcd89,_0x5b739a);};}function removeListener(_0x4dae51,_0x2e9bc6){return function(){WhatsappMessageEvents[_0xcb6c('0x5')](_0x4dae51,_0x2e9bc6);};}exports[_0xcb6c('0x6')]=function(_0x5b3724){for(var _0x33547d=0x0,_0x4d37c5=events['length'];_0x33547d<_0x4d37c5;_0x33547d++){var _0x4fd544=events[_0x33547d];var _0x197428=createListener(_0xcb6c('0x7')+_0x4fd544,_0x5b3724);WhatsappMessageEvents['on'](_0x4fd544,_0x197428);}};
\ No newline at end of file
index 91535d6..b56154b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89f4=['../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','update','destroy','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x1eda6a,_0x3ab0f3){var _0xaf152b=function(_0x4d4798){while(--_0x4d4798){_0x1eda6a['push'](_0x1eda6a['shift']());}};_0xaf152b(++_0x3ab0f3);}(_0x89f4,0xf8));var _0x489f=function(_0x3a1fa1,_0x55ef50){_0x3a1fa1=_0x3a1fa1-0x0;var _0x1bebca=_0x89f4[_0x3a1fa1];return _0x1bebca;};'use strict';var multer=require(_0x489f('0x0'));var util=require(_0x489f('0x1'));var path=require(_0x489f('0x2'));var timeout=require(_0x489f('0x3'));var express=require(_0x489f('0x4'));var router=express[_0x489f('0x5')]();var fs_extra=require(_0x489f('0x6'));var auth=require(_0x489f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x489f('0x8'));var controller=require(_0x489f('0x9'));router[_0x489f('0xa')]('/',auth[_0x489f('0xb')](),controller[_0x489f('0xc')]);router[_0x489f('0xa')](_0x489f('0xd'),auth[_0x489f('0xb')](),controller['describe']);router[_0x489f('0xa')](_0x489f('0xe'),auth[_0x489f('0xb')](),controller[_0x489f('0xf')]);router['get'](_0x489f('0x10'),auth[_0x489f('0xb')](),controller[_0x489f('0x11')]);router[_0x489f('0xa')](_0x489f('0x12'),auth[_0x489f('0xb')](),controller[_0x489f('0x13')]);router[_0x489f('0xa')](_0x489f('0x14'),auth[_0x489f('0xb')](),controller['getAgents']);router[_0x489f('0x15')]('/',auth['isAuthenticated'](),controller[_0x489f('0x16')]);router['post'](_0x489f('0x12'),auth[_0x489f('0xb')](),controller[_0x489f('0x17')]);router['post'](_0x489f('0x14'),auth[_0x489f('0xb')](),controller[_0x489f('0x18')]);router[_0x489f('0x19')](_0x489f('0xe'),auth[_0x489f('0xb')](),controller[_0x489f('0x1a')]);router['delete'](_0x489f('0xe'),auth[_0x489f('0xb')](),controller[_0x489f('0x1b')]);router[_0x489f('0x1c')](_0x489f('0x12'),auth[_0x489f('0xb')](),controller[_0x489f('0x1d')]);router['delete'](_0x489f('0x14'),auth['isAuthenticated'](),controller[_0x489f('0x1e')]);module[_0x489f('0x1f')]=router;
\ No newline at end of file
+var _0xc067=['removeAgents','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams'];(function(_0x2ef375,_0x5604a4){var _0x418d1f=function(_0x3841d1){while(--_0x3841d1){_0x2ef375['push'](_0x2ef375['shift']());}};_0x418d1f(++_0x5604a4);}(_0xc067,0xb6));var _0x7c06=function(_0x1443eb,_0x203408){_0x1443eb=_0x1443eb-0x0;var _0x2b8810=_0xc067[_0x1443eb];return _0x2b8810;};'use strict';var multer=require(_0x7c06('0x0'));var util=require(_0x7c06('0x1'));var path=require(_0x7c06('0x2'));var timeout=require('connect-timeout');var express=require(_0x7c06('0x3'));var router=express[_0x7c06('0x4')]();var fs_extra=require(_0x7c06('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7c06('0x6'));var controller=require(_0x7c06('0x7'));router[_0x7c06('0x8')]('/',auth[_0x7c06('0x9')](),controller[_0x7c06('0xa')]);router['get'](_0x7c06('0xb'),auth[_0x7c06('0x9')](),controller[_0x7c06('0xc')]);router[_0x7c06('0x8')](_0x7c06('0xd'),auth['isAuthenticated'](),controller[_0x7c06('0xe')]);router[_0x7c06('0x8')](_0x7c06('0xf'),auth['isAuthenticated'](),controller[_0x7c06('0x10')]);router[_0x7c06('0x8')](_0x7c06('0x11'),auth['isAuthenticated'](),controller['getTeams']);router[_0x7c06('0x8')](_0x7c06('0x12'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x13')]);router[_0x7c06('0x14')]('/',auth[_0x7c06('0x9')](),controller[_0x7c06('0x15')]);router[_0x7c06('0x14')]('/:id/teams',auth[_0x7c06('0x9')](),controller[_0x7c06('0x16')]);router[_0x7c06('0x14')](_0x7c06('0x12'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x17')]);router[_0x7c06('0x18')](_0x7c06('0xd'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x19')]);router[_0x7c06('0x1a')](_0x7c06('0xd'),auth[_0x7c06('0x9')](),controller['destroy']);router['delete'](_0x7c06('0x11'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x1b')]);router[_0x7c06('0x1a')](_0x7c06('0x12'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x1c')]);module[_0x7c06('0x1d')]=router;
\ No newline at end of file
index aa51c2f..cbdac82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde50=['STRING','name','INTEGER','ENUM','beepall'];(function(_0x37f594,_0x40aa2c){var _0x1782c5=function(_0x14751e){while(--_0x14751e){_0x37f594['push'](_0x37f594['shift']());}};_0x1782c5(++_0x40aa2c);}(_0xde50,0x140));var _0x0de5=function(_0x4aff86,_0x54007b){_0x4aff86=_0x4aff86-0x0;var _0x16c1e7=_0xde50[_0x4aff86];return _0x16c1e7;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x0de5('0x0')],'unique':_0x0de5('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x0de5('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0de5('0x3')]('rrmemory',_0x0de5('0x4'),'roundrobin')},'description':{'type':Sequelize[_0x0de5('0x0')]}};
\ No newline at end of file
+var _0x40ca=['ENUM','rrmemory','roundrobin','sequelize','name','INTEGER'];(function(_0x492f37,_0x40d98e){var _0x1d981c=function(_0x18b4f2){while(--_0x18b4f2){_0x492f37['push'](_0x492f37['shift']());}};_0x1d981c(++_0x40d98e);}(_0x40ca,0x1a1));var _0xa40c=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x40ca[_0x491a7f];return _0x3d8f44;};'use strict';var Sequelize=require(_0xa40c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xa40c('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xa40c('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa40c('0x3')](_0xa40c('0x4'),'beepall',_0xa40c('0x5'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2a61b38..cd911aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac9a=['%s/%s','whatsappPause','getTeams','Team','addTeams','voicePause','interface','flatMap','Agents','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','ids','select','field','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','toString','sequelize','QueryTypes','SELECT','every','TeamId','union','compact','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./whatsappQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','UserProfileResource','name','send','index','WhatsappQueue','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','WhatsappQueues','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','findOne','UserWhatsappQueue','sort','merge','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0xac9a,0x1ce));var _0xaac9=function(_0x339acf,_0x55bb46){_0x339acf=_0x339acf-0x0;var _0x5d66f4=_0xac9a[_0x339acf];return _0x5d66f4;};'use strict';var emlformat=require(_0xaac9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaac9('0x1'));var jsonpatch=require(_0xaac9('0x2'));var rp=require('request-promise');var moment=require(_0xaac9('0x3'));var BPromise=require(_0xaac9('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xaac9('0x5'));var sox=require(_0xaac9('0x6'));var csv=require(_0xaac9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaac9('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaac9('0x9'));var jsforce=require(_0xaac9('0xa'));var deskjs=require(_0xaac9('0xb'));var toCsv=require(_0xaac9('0x7'));var querystring=require(_0xaac9('0xc'));var Papa=require(_0xaac9('0xd'));var Redis=require(_0xaac9('0xe'));var authService=require(_0xaac9('0xf'));var qs=require(_0xaac9('0x10'));var as=require(_0xaac9('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaac9('0x12'))(_0xaac9('0x13'));var utils=require(_0xaac9('0x14'));var config=require(_0xaac9('0x15'));var licenseUtil=require(_0xaac9('0x16'));var db=require(_0xaac9('0x17'))['db'];config['redis']=_[_0xaac9('0x18')](config[_0xaac9('0x19')],{'host':_0xaac9('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaac9('0x19')]));require(_0xaac9('0x1b'))[_0xaac9('0x1c')](socket);function respondWithStatusCode(_0x193dc5,_0xc29ee0){_0xc29ee0=_0xc29ee0||0xcc;return function(_0x1dad81){if(_0x1dad81){return _0x193dc5[_0xaac9('0x1d')](_0xc29ee0);}return _0x193dc5[_0xaac9('0x1e')](_0xc29ee0)['end']();};}function respondWithResult(_0x26649b,_0x576ae3){_0x576ae3=_0x576ae3||0xc8;return function(_0x5a730d){if(_0x5a730d){return _0x26649b[_0xaac9('0x1e')](_0x576ae3)[_0xaac9('0x1f')](_0x5a730d);}};}function respondWithFilteredResult(_0x557119,_0x37ef41){return function(_0x760ad5){if(_0x760ad5){var _0x26b511=typeof _0x37ef41[_0xaac9('0x20')]===_0xaac9('0x21')&&typeof _0x37ef41[_0xaac9('0x22')]==='undefined';var _0x2ad28b=_0x760ad5[_0xaac9('0x23')];var _0x366528=_0x26b511?0x0:_0x37ef41[_0xaac9('0x20')];var _0x5b1941=_0x26b511?_0x760ad5[_0xaac9('0x23')]:_0x37ef41[_0xaac9('0x20')]+_0x37ef41[_0xaac9('0x22')];var _0x4a0c01;if(_0x5b1941>=_0x2ad28b){_0x5b1941=_0x2ad28b;_0x4a0c01=0xc8;}else{_0x4a0c01=0xce;}_0x557119[_0xaac9('0x1e')](_0x4a0c01);return _0x557119[_0xaac9('0x24')](_0xaac9('0x25'),_0x366528+'-'+_0x5b1941+'/'+_0x2ad28b)[_0xaac9('0x1f')](_0x760ad5);}return null;};}function patchUpdates(_0x486af3){return function(_0x42a295){try{jsonpatch[_0xaac9('0x26')](_0x42a295,_0x486af3,!![]);}catch(_0x1003b2){return BPromise['reject'](_0x1003b2);}return _0x42a295[_0xaac9('0x27')]();};}function saveUpdates(_0x5a5658,_0x2a0178){return function(_0x9593ff){if(_0x9593ff){return _0x9593ff[_0xaac9('0x28')](_0x5a5658)[_0xaac9('0x29')](function(_0x5248e7){return _0x5248e7;});}return null;};}function removeEntity(_0x212d7c,_0xe048b4){return function(_0x5dc441){if(_0x5dc441){return _0x5dc441[_0xaac9('0x2a')]()[_0xaac9('0x29')](function(){var _0x49cb00=_0x5dc441[_0xaac9('0x2b')]({'plain':!![]});var _0x23f7ba='WhatsappQueues';return db[_0xaac9('0x2c')][_0xaac9('0x2a')]({'where':{'type':_0x23f7ba,'resourceId':_0x49cb00['id']}})['then'](function(){return _0x5dc441;});})[_0xaac9('0x29')](function(){_0x212d7c[_0xaac9('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8abdec,_0x394f61){return function(_0x12a005){if(!_0x12a005){_0x8abdec[_0xaac9('0x1d')](0x194);}return _0x12a005;};}function handleError(_0x574bad,_0x4b1116){_0x4b1116=_0x4b1116||0x1f4;return function(_0xb19bc9){logger['error'](_0xb19bc9['stack']);if(_0xb19bc9['name']){delete _0xb19bc9[_0xaac9('0x2d')];}_0x574bad[_0xaac9('0x1e')](_0x4b1116)[_0xaac9('0x2e')](_0xb19bc9);};}exports[_0xaac9('0x2f')]=function(_0x5d1d46,_0x1b22f6){var _0x383b88={},_0xa13911={},_0x359ef5={'count':0x0,'rows':[]};var _0x1c1f3a=_['map'](db[_0xaac9('0x30')][_0xaac9('0x31')],function(_0x1d3591){return{'name':_0x1d3591['fieldName'],'type':_0x1d3591[_0xaac9('0x32')][_0xaac9('0x33')]};});_0xa13911[_0xaac9('0x34')]=_[_0xaac9('0x35')](_0x1c1f3a,_0xaac9('0x2d'));_0xa13911[_0xaac9('0x36')]=_[_0xaac9('0x37')](_0x5d1d46[_0xaac9('0x36')]);_0xa13911[_0xaac9('0x38')]=_[_0xaac9('0x39')](_0xa13911[_0xaac9('0x34')],_0xa13911[_0xaac9('0x36')]);_0x383b88[_0xaac9('0x3a')]=_[_0xaac9('0x39')](_0xa13911[_0xaac9('0x34')],qs[_0xaac9('0x3b')](_0x5d1d46[_0xaac9('0x36')][_0xaac9('0x3b')]));_0x383b88[_0xaac9('0x3a')]=_0x383b88['attributes'][_0xaac9('0x3c')]?_0x383b88['attributes']:_0xa13911[_0xaac9('0x34')];if(!_0x5d1d46[_0xaac9('0x36')][_0xaac9('0x3d')](_0xaac9('0x3e'))){_0x383b88['limit']=qs['limit'](_0x5d1d46[_0xaac9('0x36')][_0xaac9('0x22')]);_0x383b88[_0xaac9('0x20')]=qs[_0xaac9('0x20')](_0x5d1d46[_0xaac9('0x36')][_0xaac9('0x20')]);}_0x383b88[_0xaac9('0x3f')]=qs['sort'](_0x5d1d46['query']['sort']);_0x383b88[_0xaac9('0x40')]=qs[_0xaac9('0x38')](_[_0xaac9('0x41')](_0x5d1d46[_0xaac9('0x36')],_0xa13911[_0xaac9('0x38')]),_0x1c1f3a);if(_0x5d1d46['query']['filter']){_0x383b88[_0xaac9('0x40')]=_['merge'](_0x383b88[_0xaac9('0x40')],{'$or':_[_0xaac9('0x35')](_0x1c1f3a,function(_0x56fc56){if(_0x56fc56[_0xaac9('0x32')]!==_0xaac9('0x42')){var _0x544ae4={};_0x544ae4[_0x56fc56['name']]={'$like':'%'+_0x5d1d46[_0xaac9('0x36')][_0xaac9('0x43')]+'%'};return _0x544ae4;}})});}_0x383b88=_['merge']({},_0x383b88,_0x5d1d46[_0xaac9('0x44')]);var _0x488243={'where':_0x383b88[_0xaac9('0x40')]};return db['WhatsappQueue']['count'](_0x488243)[_0xaac9('0x29')](function(_0x36e23e){_0x359ef5[_0xaac9('0x23')]=_0x36e23e;if(_0x5d1d46[_0xaac9('0x36')][_0xaac9('0x45')]){_0x383b88[_0xaac9('0x46')]=[{'all':!![]}];}return db[_0xaac9('0x30')][_0xaac9('0x47')](_0x383b88);})[_0xaac9('0x29')](function(_0x34629b){_0x359ef5[_0xaac9('0x48')]=_0x34629b;return _0x359ef5;})['then'](respondWithFilteredResult(_0x1b22f6,_0x383b88))[_0xaac9('0x49')](handleError(_0x1b22f6,null));};exports[_0xaac9('0x4a')]=function(_0x3fcd62,_0x41b7ee){var _0xc3c8aa={'raw':!![],'where':{'id':_0x3fcd62[_0xaac9('0x4b')]['id']}},_0x201b33={};_0x201b33['model']=_[_0xaac9('0x37')](db[_0xaac9('0x30')][_0xaac9('0x31')]);_0x201b33[_0xaac9('0x36')]=_[_0xaac9('0x37')](_0x3fcd62[_0xaac9('0x36')]);_0x201b33[_0xaac9('0x38')]=_[_0xaac9('0x39')](_0x201b33['model'],_0x201b33['query']);_0xc3c8aa[_0xaac9('0x3a')]=_[_0xaac9('0x39')](_0x201b33[_0xaac9('0x34')],qs[_0xaac9('0x3b')](_0x3fcd62['query'][_0xaac9('0x3b')]));_0xc3c8aa[_0xaac9('0x3a')]=_0xc3c8aa['attributes']['length']?_0xc3c8aa['attributes']:_0x201b33[_0xaac9('0x34')];if(_0x3fcd62[_0xaac9('0x36')]['includeAll']){_0xc3c8aa['include']=[{'all':!![]}];}_0xc3c8aa=_['merge']({},_0xc3c8aa,_0x3fcd62[_0xaac9('0x44')]);return db[_0xaac9('0x30')][_0xaac9('0x4c')](_0xc3c8aa)['then'](handleEntityNotFound(_0x41b7ee,null))[_0xaac9('0x29')](respondWithResult(_0x41b7ee,null))['catch'](handleError(_0x41b7ee,null));};exports[_0xaac9('0x4d')]=function(_0x177af1,_0x3bedee){return db[_0xaac9('0x30')][_0xaac9('0x4d')](_0x177af1['body'],{})[_0xaac9('0x29')](function(_0x4cd42c){var _0x124a6c=_0x177af1['user'][_0xaac9('0x2b')]({'plain':!![]});if(!_0x124a6c)throw new Error(_0xaac9('0x4e'));if(_0x124a6c[_0xaac9('0x4f')]===_0xaac9('0x50')){var _0xe97efc=_0x4cd42c[_0xaac9('0x2b')]({'plain':!![]});var _0x4c6a33=_0xaac9('0x51');return db['UserProfileSection'][_0xaac9('0x4c')]({'where':{'name':_0x4c6a33,'userProfileId':_0x124a6c[_0xaac9('0x52')]},'raw':!![]})['then'](function(_0x5bb2ce){if(_0x5bb2ce&&_0x5bb2ce['autoAssociation']===0x0){return db[_0xaac9('0x2c')][_0xaac9('0x4d')]({'name':_0xe97efc['name'],'resourceId':_0xe97efc['id'],'type':_0x5bb2ce[_0xaac9('0x2d')],'sectionId':_0x5bb2ce['id']},{})[_0xaac9('0x29')](function(){return _0x4cd42c;});}else{return _0x4cd42c;}})[_0xaac9('0x49')](function(_0x3d189a){logger[_0xaac9('0x53')](_0xaac9('0x54'),_0x3d189a);throw _0x3d189a;});}return _0x4cd42c;})[_0xaac9('0x29')](respondWithResult(_0x3bedee,0xc9))[_0xaac9('0x49')](handleError(_0x3bedee,null));};exports[_0xaac9('0x28')]=function(_0x3726fa,_0x5a7c66){if(_0x3726fa[_0xaac9('0x55')]['id']){delete _0x3726fa[_0xaac9('0x55')]['id'];}return db['WhatsappQueue'][_0xaac9('0x4c')]({'where':{'id':_0x3726fa[_0xaac9('0x4b')]['id']}})[_0xaac9('0x29')](handleEntityNotFound(_0x5a7c66,null))['then'](saveUpdates(_0x3726fa[_0xaac9('0x55')],null))[_0xaac9('0x29')](respondWithResult(_0x5a7c66,null))[_0xaac9('0x49')](handleError(_0x5a7c66,null));};exports[_0xaac9('0x2a')]=function(_0x57a690,_0x522e6f){return db['WhatsappQueue'][_0xaac9('0x4c')]({'where':{'id':_0x57a690[_0xaac9('0x4b')]['id']}})[_0xaac9('0x29')](handleEntityNotFound(_0x522e6f,null))[_0xaac9('0x29')](removeEntity(_0x522e6f,null))['catch'](handleError(_0x522e6f,null));};exports[_0xaac9('0x56')]=function(_0x260c48,_0x59f2d3){return db[_0xaac9('0x30')]['describe']()[_0xaac9('0x29')](respondWithResult(_0x59f2d3,null))['catch'](handleError(_0x59f2d3,null));};exports['getMembers']=function(_0x7744de,_0x1c8bd1,_0xbf813){var _0xb91957={'raw':!![],'where':{}},_0x225181={},_0x4b7e91;return db[_0xaac9('0x30')][_0xaac9('0x57')]({'where':{'id':_0x7744de[_0xaac9('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1c8bd1,null))[_0xaac9('0x29')](function(_0xbee9bd){if(_0xbee9bd){_0x4b7e91=_0xbee9bd[_0xaac9('0x2b')]({'plain':!![]});_0x225181[_0xaac9('0x34')]=_[_0xaac9('0x37')](db[_0xaac9('0x58')][_0xaac9('0x31')]);_0x225181[_0xaac9('0x36')]=_[_0xaac9('0x37')](_0x7744de[_0xaac9('0x36')]);_0x225181[_0xaac9('0x38')]=_[_0xaac9('0x39')](_0x225181['model'],_0x225181[_0xaac9('0x36')]);_0xb91957[_0xaac9('0x3a')]=_[_0xaac9('0x39')](_0x225181['model'],qs[_0xaac9('0x3b')](_0x7744de[_0xaac9('0x36')][_0xaac9('0x3b')]));_0xb91957[_0xaac9('0x3a')]=_0xb91957[_0xaac9('0x3a')][_0xaac9('0x3c')]?_0xb91957[_0xaac9('0x3a')]:_0x225181[_0xaac9('0x34')];if(!_0x7744de[_0xaac9('0x36')][_0xaac9('0x3d')](_0xaac9('0x3e'))){_0xb91957[_0xaac9('0x22')]=qs['limit'](_0x7744de[_0xaac9('0x36')][_0xaac9('0x22')]);_0xb91957['offset']=qs['offset'](_0x7744de[_0xaac9('0x36')][_0xaac9('0x20')]);}_0xb91957[_0xaac9('0x3f')]=qs[_0xaac9('0x59')](_0x7744de[_0xaac9('0x36')][_0xaac9('0x59')]);_0xb91957[_0xaac9('0x40')]=qs['filters'](_[_0xaac9('0x41')](_0x7744de[_0xaac9('0x36')],_0x225181[_0xaac9('0x38')]));_0xb91957[_0xaac9('0x40')]['WhatsappQueueId']=_0xbee9bd['id'];if(_0x7744de[_0xaac9('0x36')][_0xaac9('0x43')]){_0xb91957[_0xaac9('0x40')]=_[_0xaac9('0x5a')](_0xb91957[_0xaac9('0x40')],{'$or':_[_0xaac9('0x35')](_0xb91957['attributes'],function(_0x29eee1){var _0x14e1e1={};_0x14e1e1[_0x29eee1]={'$like':'%'+_0x7744de[_0xaac9('0x36')]['filter']+'%'};return _0x14e1e1;})});}_0xb91957=_['merge']({},_0xb91957,_0x7744de['options']);return db['UserWhatsappQueue'][_0xaac9('0x47')](_0xb91957);}})[_0xaac9('0x29')](function(_0x210e35){if(_0x210e35){return db[_0xaac9('0x5b')][_0xaac9('0x5c')]({'where':{'id':_[_0xaac9('0x35')](_0x210e35,_0xaac9('0x5d')),'role':_0xaac9('0x5e')},'attributes':['id',_0xaac9('0x2d'),'whatsappPause',_0xaac9('0x5f'),_0xaac9('0x60')]});}})[_0xaac9('0x29')](function(_0x578366){if(_0x578366){return{'count':_0x578366[_0xaac9('0x23')],'rows':_['map'](_0x578366['rows'],function(_0x2d5d9b){return{'membername':_0x2d5d9b[_0xaac9('0x2d')],'UserId':_0x2d5d9b['id'],'queue_name':_0x4b7e91[_0xaac9('0x2d')],'WhatsappQueueId':_0x4b7e91['id'],'interface':util[_0xaac9('0x61')](_0xaac9('0x62'),'SIP',_0x2d5d9b[_0xaac9('0x2d')]),'penalty':0x0,'paused':_0x2d5d9b[_0xaac9('0x63')],'createdAt':_0x2d5d9b[_0xaac9('0x60')],'updatedAt':_0x2d5d9b[_0xaac9('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xaac9('0x29')](respondWithFilteredResult(_0x1c8bd1,_0xb91957))[_0xaac9('0x49')](handleError(_0x1c8bd1,null));};exports[_0xaac9('0x64')]=function(_0x1ffaba,_0x5ca9b,_0x27e1cd){var _0x3b79a5={};var _0x2f3fe5={};var _0x4714e4;var _0x189310;return db[_0xaac9('0x30')][_0xaac9('0x57')]({'where':{'id':_0x1ffaba[_0xaac9('0x4b')]['id']}})[_0xaac9('0x29')](handleEntityNotFound(_0x5ca9b,null))[_0xaac9('0x29')](function(_0x1e74e3){if(_0x1e74e3){_0x4714e4=_0x1e74e3;_0x2f3fe5[_0xaac9('0x34')]=_[_0xaac9('0x37')](db[_0xaac9('0x65')][_0xaac9('0x31')]);_0x2f3fe5[_0xaac9('0x36')]=_['keys'](_0x1ffaba[_0xaac9('0x36')]);_0x2f3fe5[_0xaac9('0x38')]=_[_0xaac9('0x39')](_0x2f3fe5[_0xaac9('0x34')],_0x2f3fe5['query']);_0x3b79a5[_0xaac9('0x3a')]=_['intersection'](_0x2f3fe5[_0xaac9('0x34')],qs[_0xaac9('0x3b')](_0x1ffaba['query'][_0xaac9('0x3b')]));_0x3b79a5['attributes']=_0x3b79a5[_0xaac9('0x3a')][_0xaac9('0x3c')]?_0x3b79a5[_0xaac9('0x3a')]:_0x2f3fe5['model'];_0x3b79a5['order']=qs[_0xaac9('0x59')](_0x1ffaba[_0xaac9('0x36')][_0xaac9('0x59')]);_0x3b79a5[_0xaac9('0x40')]=qs[_0xaac9('0x38')](_[_0xaac9('0x41')](_0x1ffaba['query'],_0x2f3fe5[_0xaac9('0x38')]));if(_0x1ffaba[_0xaac9('0x36')][_0xaac9('0x43')]){_0x3b79a5[_0xaac9('0x40')]=_['merge'](_0x3b79a5[_0xaac9('0x40')],{'$or':_[_0xaac9('0x35')](_0x3b79a5[_0xaac9('0x3a')],function(_0x43d417){var _0xd295cd={};_0xd295cd[_0x43d417]={'$like':'%'+_0x1ffaba['query']['filter']+'%'};return _0xd295cd;})});}_0x3b79a5=_['merge']({},_0x3b79a5,_0x1ffaba[_0xaac9('0x44')]);return _0x4714e4[_0xaac9('0x64')](_0x3b79a5);}})['then'](function(_0x1e71c8){if(_0x1e71c8){_0x189310=_0x1e71c8[_0xaac9('0x3c')];if(!_0x1ffaba[_0xaac9('0x36')][_0xaac9('0x3d')](_0xaac9('0x3e'))){_0x3b79a5[_0xaac9('0x22')]=qs[_0xaac9('0x22')](_0x1ffaba[_0xaac9('0x36')]['limit']);_0x3b79a5['offset']=qs[_0xaac9('0x20')](_0x1ffaba[_0xaac9('0x36')][_0xaac9('0x20')]);}return _0x4714e4['getTeams'](_0x3b79a5);}})['then'](function(_0x1f50ce){if(_0x1f50ce){return _0x1f50ce?{'count':_0x189310,'rows':_0x1f50ce}:null;}})[_0xaac9('0x29')](respondWithResult(_0x5ca9b,null))['catch'](handleError(_0x5ca9b,null));};exports[_0xaac9('0x66')]=function(_0x5d4578,_0x531a15,_0x5571d1){var _0x2c5e6e=_0x5d4578[_0xaac9('0x55')]['ids'];return db[_0xaac9('0x65')][_0xaac9('0x47')]({'where':{'id':_0x2c5e6e},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xaac9('0x2d'),'online',_0xaac9('0x67'),_0xaac9('0x68')],'raw':!![]}]})[_0xaac9('0x29')](function(_0x101aa0){if(_0x101aa0){var _0x161914=_[_0xaac9('0x69')](_0x101aa0,function(_0x452c18){var _0x2db523=_0x452c18[_0xaac9('0x2b')]({'plain':!![]});return _0x2db523[_0xaac9('0x6a')];});return db['WhatsappQueue'][_0xaac9('0x4c')]({'where':{'id':_0x5d4578[_0xaac9('0x4b')]['id']}})[_0xaac9('0x29')](function(_0x15a433){return db['sequelize'][_0xaac9('0x6b')](function(_0x5a397f){return _0x15a433[_0xaac9('0x66')](_0x2c5e6e,{'transaction':_0x5a397f})['then'](function(){return BPromise[_0xaac9('0x6c')](_0x161914,function(_0x41d4bc){return db['UserWhatsappQueue'][_0xaac9('0x6d')]({'where':{'UserId':_0x41d4bc['id'],'WhatsappQueueId':_0x5d4578['params']['id']},'transaction':_0x5a397f});});})['then'](function(){_0x161914[_0xaac9('0x6e')](function(_0x303257){socket[_0xaac9('0x6f')](_0xaac9('0x70'),{'UserId':_0x303257['id'],'WhatsappQueueId':_0x15a433['id']});});});});});}})[_0xaac9('0x29')](respondWithStatusCode(_0x531a15,null))[_0xaac9('0x49')](handleError(_0x531a15,null));};exports['removeTeams']=function(_0x81c409,_0xf5bc16,_0x504f7f){return db[_0xaac9('0x65')][_0xaac9('0x47')]({'where':{'id':_0x81c409[_0xaac9('0x36')][_0xaac9('0x71')]},'attributes':['id'],'include':[{'model':db[_0xaac9('0x5b')],'as':_0xaac9('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xaac9('0x29')](handleEntityNotFound(_0xf5bc16,null))['then'](function(_0x252d4d){var _0x3f005d=_['map'](_0x252d4d,'id');var _0x506e79=[];var _0x20dc73=[];var _0x52181b=squel[_0xaac9('0x72')]();_0x52181b[_0xaac9('0x73')]('tq.TeamId')[_0xaac9('0x74')](_0xaac9('0x75'),'tq')[_0xaac9('0x76')](_0xaac9('0x77'),'ut',_0xaac9('0x78'))[_0xaac9('0x40')](_0xaac9('0x79'),_0x81c409[_0xaac9('0x4b')]['id']);for(var _0x474cc5=0x0;_0x474cc5<_0x252d4d[_0xaac9('0x3c')];_0x474cc5+=0x1){let _0x55891c=_0x252d4d[_0x474cc5];for(var _0x19193d=0x0;_0x19193d<_0x55891c[_0xaac9('0x6a')][_0xaac9('0x3c')];_0x19193d+=0x1){let _0x2aba85=_0x55891c[_0xaac9('0x6a')][_0x19193d];var _0x1f1867=_0x52181b[_0xaac9('0x7a')]();_0x1f1867[_0xaac9('0x40')]('ut.UserId\x20=\x20?',_0x2aba85['id']);_0x20dc73['push'](db['sequelize'][_0xaac9('0x36')](_0x1f1867[_0xaac9('0x7b')](),{'type':db[_0xaac9('0x7c')][_0xaac9('0x7d')][_0xaac9('0x7e')]})[_0xaac9('0x29')](function(_0x28b156){if(_0x28b156[_0xaac9('0x3c')]===0x1){return _0x2aba85['id'];}else{var _0x1ee3d1=_[_0xaac9('0x7f')](_[_0xaac9('0x35')](_0x28b156,_0xaac9('0x80')),function(_0x1a2a9a){return _['includes'](_0x3f005d,_0x1a2a9a);});if(_0x1ee3d1){return _0x2aba85['id'];}}}));}}return BPromise['all'](_0x20dc73)['then'](function(_0xa48667){_0x506e79=_(_0x506e79)[_0xaac9('0x81')](_0xa48667)[_0xaac9('0x82')]()[_0xaac9('0x83')]();return db[_0xaac9('0x30')][_0xaac9('0x4c')]({'where':{'id':_0x81c409[_0xaac9('0x4b')]['id']}})[_0xaac9('0x29')](function(_0x2b9d41){return db['sequelize']['transaction'](function(_0x13a172){return _0x2b9d41['removeTeams'](_0x81c409[_0xaac9('0x36')]['ids'],{'transaction':_0x13a172})[_0xaac9('0x29')](function(){if(!_[_0xaac9('0x84')](_0x506e79)){return _0x2b9d41[_0xaac9('0x85')](_0x506e79,{'transaction':_0x13a172});}})['then'](function(){_0x506e79[_0xaac9('0x6e')](function(_0x2c113b){socket[_0xaac9('0x6f')](_0xaac9('0x86'),{'UserId':_0x2c113b,'WhatsappQueueId':_0x2b9d41['id']});});});});});});})['then'](respondWithStatusCode(_0xf5bc16,null))[_0xaac9('0x49')](handleError(_0xf5bc16,null));};exports[_0xaac9('0x87')]=function(_0x55473a,_0xc68fdc,_0x1e8998){return db['WhatsappQueue']['find']({'where':{'id':_0x55473a['params']['id']}})[_0xaac9('0x29')](handleEntityNotFound(_0xc68fdc,null))[_0xaac9('0x29')](function(_0x3a3944){if(_0x3a3944){return _0x3a3944[_0xaac9('0x87')](_0x55473a[_0xaac9('0x55')][_0xaac9('0x71')],_[_0xaac9('0x88')](_0x55473a[_0xaac9('0x55')],[_0xaac9('0x71'),'id'])||{})[_0xaac9('0x89')](function(_0x2774c0){for(var _0x3b7ae3=0x0;_0x3b7ae3<_0x55473a[_0xaac9('0x55')][_0xaac9('0x71')][_0xaac9('0x3c')];_0x3b7ae3+=0x1){socket[_0xaac9('0x6f')](_0xaac9('0x70'),{'UserId':Number(_0x55473a['body'][_0xaac9('0x71')][_0x3b7ae3]),'WhatsappQueueId':Number(_0x55473a[_0xaac9('0x4b')]['id'])});}return _0x2774c0;});}})[_0xaac9('0x29')](respondWithResult(_0xc68fdc,null))[_0xaac9('0x49')](handleError(_0xc68fdc,null));};exports[_0xaac9('0x85')]=function(_0x1f94c5,_0x1c8d36,_0x5ce3e2){return db[_0xaac9('0x30')][_0xaac9('0x4c')]({'where':{'id':_0x1f94c5[_0xaac9('0x4b')]['id']}})[_0xaac9('0x29')](handleEntityNotFound(_0x1c8d36,null))[_0xaac9('0x29')](function(_0x2f25be){if(_0x2f25be){return _0x2f25be[_0xaac9('0x85')](_0x1f94c5[_0xaac9('0x36')][_0xaac9('0x71')])[_0xaac9('0x29')](function(){if(_[_0xaac9('0x8a')](_0x1f94c5[_0xaac9('0x36')][_0xaac9('0x71')])){for(var _0x3fa36b=0x0;_0x3fa36b<_0x1f94c5[_0xaac9('0x36')][_0xaac9('0x71')][_0xaac9('0x3c')];_0x3fa36b+=0x1){socket[_0xaac9('0x6f')](_0xaac9('0x86'),{'UserId':Number(_0x1f94c5[_0xaac9('0x36')]['ids'][_0x3fa36b]),'WhatsappQueueId':Number(_0x1f94c5['params']['id'])});}}else{socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x1f94c5[_0xaac9('0x36')]['ids']),'WhatsappQueueId':Number(_0x1f94c5[_0xaac9('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x1c8d36,null))[_0xaac9('0x49')](handleError(_0x1c8d36,null));};exports[_0xaac9('0x8b')]=function(_0x816748,_0x3ee46d,_0x89a742){var _0x557a2d={};var _0x3ced60={};var _0xeb88;var _0x498880;return db[_0xaac9('0x30')][_0xaac9('0x57')]({'where':{'id':_0x816748[_0xaac9('0x4b')]['id']}})[_0xaac9('0x29')](handleEntityNotFound(_0x3ee46d,null))[_0xaac9('0x29')](function(_0x4c850a){if(_0x4c850a){_0xeb88=_0x4c850a;_0x3ced60[_0xaac9('0x34')]=_[_0xaac9('0x37')](db[_0xaac9('0x5b')][_0xaac9('0x31')]);_0x3ced60[_0xaac9('0x36')]=_[_0xaac9('0x37')](_0x816748['query']);_0x3ced60['filters']=_[_0xaac9('0x39')](_0x3ced60['model'],_0x3ced60[_0xaac9('0x36')]);_0x557a2d['attributes']=_[_0xaac9('0x39')](_0x3ced60[_0xaac9('0x34')],qs['fields'](_0x816748[_0xaac9('0x36')][_0xaac9('0x3b')]));_0x557a2d[_0xaac9('0x3a')]=_0x557a2d['attributes']['length']?_0x557a2d[_0xaac9('0x3a')]:_0x3ced60[_0xaac9('0x34')];_0x557a2d['order']=qs[_0xaac9('0x59')](_0x816748['query'][_0xaac9('0x59')]);_0x557a2d[_0xaac9('0x40')]=qs[_0xaac9('0x38')](_['pick'](_0x816748[_0xaac9('0x36')],_0x3ced60['filters']));if(_0x816748['query'][_0xaac9('0x43')]){_0x557a2d[_0xaac9('0x40')]=_[_0xaac9('0x5a')](_0x557a2d['where'],{'$or':_['map'](_0x557a2d[_0xaac9('0x3a')],function(_0x6d3712){var _0x349f2f={};_0x349f2f[_0x6d3712]={'$like':'%'+_0x816748[_0xaac9('0x36')][_0xaac9('0x43')]+'%'};return _0x349f2f;})});}_0x557a2d=_[_0xaac9('0x5a')]({},_0x557a2d,_0x816748[_0xaac9('0x44')]);return _0xeb88[_0xaac9('0x8b')](_0x557a2d);}})[_0xaac9('0x29')](function(_0x5f5d67){if(_0x5f5d67){_0x498880=_0x5f5d67[_0xaac9('0x3c')];if(!_0x816748[_0xaac9('0x36')][_0xaac9('0x3d')](_0xaac9('0x3e'))){_0x557a2d[_0xaac9('0x22')]=qs[_0xaac9('0x22')](_0x816748['query'][_0xaac9('0x22')]);_0x557a2d[_0xaac9('0x20')]=qs[_0xaac9('0x20')](_0x816748['query'][_0xaac9('0x20')]);}return _0xeb88[_0xaac9('0x8b')](_0x557a2d);}})[_0xaac9('0x29')](function(_0x4de93f){if(_0x4de93f){return _0x4de93f?{'count':_0x498880,'rows':_0x4de93f}:null;}})[_0xaac9('0x29')](respondWithResult(_0x3ee46d,null))[_0xaac9('0x49')](handleError(_0x3ee46d,null));};
\ No newline at end of file
+var _0x445e=['zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./whatsappQueue.socket','register','sendStatus','end','status','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','get','WhatsappQueues','destroy','error','stack','name','send','index','WhatsappQueue','rawAttributes','type','key','map','query','keys','filters','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','limit','sort','pick','filter','merge','where','include','findAll','show','params','includeAll','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','order','WhatsappQueueId','options','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','SIP','Team','ids','Agents','voicePause','interface','sequelize','transaction','addTeams','each','findOrCreate','emit','userWhatsappQueue:save','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','TeamId','includes','all','union','compact','removeTeams','isEmpty','forEach','userWhatsappQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents'];(function(_0x237583,_0x3d9b05){var _0x29d541=function(_0x1b781f){while(--_0x1b781f){_0x237583['push'](_0x237583['shift']());}};_0x29d541(++_0x3d9b05);}(_0x445e,0x116));var _0xe445=function(_0x5e0ec3,_0x30d032){_0x5e0ec3=_0x5e0ec3-0x0;var _0x54bce4=_0x445e[_0x5e0ec3];return _0x54bce4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe445('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe445('0x1'));var moment=require('moment');var BPromise=require(_0xe445('0x2'));var Mustache=require(_0xe445('0x3'));var util=require('util');var path=require(_0xe445('0x4'));var sox=require(_0xe445('0x5'));var csv=require(_0xe445('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe445('0x7'));var _=require(_0xe445('0x8'));var squel=require(_0xe445('0x9'));var crypto=require(_0xe445('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xe445('0xb'));var toCsv=require(_0xe445('0x6'));var querystring=require(_0xe445('0xc'));var Papa=require('papaparse');var Redis=require(_0xe445('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xe445('0xe'));var as=require(_0xe445('0xf'));var hardwareService=require(_0xe445('0x10'));var logger=require(_0xe445('0x11'))(_0xe445('0x12'));var utils=require(_0xe445('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe445('0x14'))['db'];config['redis']=_[_0xe445('0x15')](config['redis'],{'host':_0xe445('0x16'),'port':0x18eb});var socket=require(_0xe445('0x17'))(new Redis(config[_0xe445('0x18')]));require(_0xe445('0x19'))[_0xe445('0x1a')](socket);function respondWithStatusCode(_0x250387,_0x1302f8){_0x1302f8=_0x1302f8||0xcc;return function(_0xedb586){if(_0xedb586){return _0x250387[_0xe445('0x1b')](_0x1302f8);}return _0x250387['status'](_0x1302f8)[_0xe445('0x1c')]();};}function respondWithResult(_0x313740,_0x107767){_0x107767=_0x107767||0xc8;return function(_0x1b2003){if(_0x1b2003){return _0x313740[_0xe445('0x1d')](_0x107767)['json'](_0x1b2003);}};}function respondWithFilteredResult(_0x3792cf,_0x23615c){return function(_0x180ef0){if(_0x180ef0){var _0xfd03b1=typeof _0x23615c[_0xe445('0x1e')]===_0xe445('0x1f')&&typeof _0x23615c['limit']===_0xe445('0x1f');var _0x59d461=_0x180ef0[_0xe445('0x20')];var _0x24f401=_0xfd03b1?0x0:_0x23615c[_0xe445('0x1e')];var _0x43fb00=_0xfd03b1?_0x180ef0[_0xe445('0x20')]:_0x23615c[_0xe445('0x1e')]+_0x23615c['limit'];var _0x471300;if(_0x43fb00>=_0x59d461){_0x43fb00=_0x59d461;_0x471300=0xc8;}else{_0x471300=0xce;}_0x3792cf['status'](_0x471300);return _0x3792cf[_0xe445('0x21')](_0xe445('0x22'),_0x24f401+'-'+_0x43fb00+'/'+_0x59d461)['json'](_0x180ef0);}return null;};}function patchUpdates(_0x3a7598){return function(_0x3089ee){try{jsonpatch[_0xe445('0x23')](_0x3089ee,_0x3a7598,!![]);}catch(_0x4617d3){return BPromise[_0xe445('0x24')](_0x4617d3);}return _0x3089ee[_0xe445('0x25')]();};}function saveUpdates(_0x2a415c,_0x425c0e){return function(_0x5e643e){if(_0x5e643e){return _0x5e643e[_0xe445('0x26')](_0x2a415c)['then'](function(_0x3fa896){return _0x3fa896;});}return null;};}function removeEntity(_0x8ed0e6,_0x4addf1){return function(_0x9a9d5d){if(_0x9a9d5d){return _0x9a9d5d['destroy']()[_0xe445('0x27')](function(){var _0x1a2c1f=_0x9a9d5d[_0xe445('0x28')]({'plain':!![]});var _0x3baac6=_0xe445('0x29');return db['UserProfileResource'][_0xe445('0x2a')]({'where':{'type':_0x3baac6,'resourceId':_0x1a2c1f['id']}})[_0xe445('0x27')](function(){return _0x9a9d5d;});})[_0xe445('0x27')](function(){_0x8ed0e6[_0xe445('0x1d')](0xcc)[_0xe445('0x1c')]();});}};}function handleEntityNotFound(_0x3cb4a5,_0x4658f4){return function(_0x2a8cf2){if(!_0x2a8cf2){_0x3cb4a5['sendStatus'](0x194);}return _0x2a8cf2;};}function handleError(_0x147f83,_0x410d49){_0x410d49=_0x410d49||0x1f4;return function(_0x3be1bc){logger[_0xe445('0x2b')](_0x3be1bc[_0xe445('0x2c')]);if(_0x3be1bc['name']){delete _0x3be1bc[_0xe445('0x2d')];}_0x147f83[_0xe445('0x1d')](_0x410d49)[_0xe445('0x2e')](_0x3be1bc);};}exports[_0xe445('0x2f')]=function(_0x2efa67,_0x415658){var _0x23e551={},_0x3d6ca4={},_0x613b3f={'count':0x0,'rows':[]};var _0x2a9dcb=_['map'](db[_0xe445('0x30')][_0xe445('0x31')],function(_0xe49f4f){return{'name':_0xe49f4f['fieldName'],'type':_0xe49f4f[_0xe445('0x32')][_0xe445('0x33')]};});_0x3d6ca4['model']=_[_0xe445('0x34')](_0x2a9dcb,_0xe445('0x2d'));_0x3d6ca4[_0xe445('0x35')]=_[_0xe445('0x36')](_0x2efa67[_0xe445('0x35')]);_0x3d6ca4[_0xe445('0x37')]=_[_0xe445('0x38')](_0x3d6ca4[_0xe445('0x39')],_0x3d6ca4[_0xe445('0x35')]);_0x23e551['attributes']=_[_0xe445('0x38')](_0x3d6ca4[_0xe445('0x39')],qs[_0xe445('0x3a')](_0x2efa67[_0xe445('0x35')][_0xe445('0x3a')]));_0x23e551['attributes']=_0x23e551['attributes'][_0xe445('0x3b')]?_0x23e551[_0xe445('0x3c')]:_0x3d6ca4[_0xe445('0x39')];if(!_0x2efa67[_0xe445('0x35')][_0xe445('0x3d')](_0xe445('0x3e'))){_0x23e551['limit']=qs[_0xe445('0x3f')](_0x2efa67[_0xe445('0x35')][_0xe445('0x3f')]);_0x23e551['offset']=qs[_0xe445('0x1e')](_0x2efa67['query'][_0xe445('0x1e')]);}_0x23e551['order']=qs[_0xe445('0x40')](_0x2efa67[_0xe445('0x35')][_0xe445('0x40')]);_0x23e551['where']=qs[_0xe445('0x37')](_[_0xe445('0x41')](_0x2efa67['query'],_0x3d6ca4[_0xe445('0x37')]),_0x2a9dcb);if(_0x2efa67[_0xe445('0x35')][_0xe445('0x42')]){_0x23e551['where']=_[_0xe445('0x43')](_0x23e551[_0xe445('0x44')],{'$or':_[_0xe445('0x34')](_0x2a9dcb,function(_0x2298ce){if(_0x2298ce[_0xe445('0x32')]!=='VIRTUAL'){var _0x5b2a7b={};_0x5b2a7b[_0x2298ce[_0xe445('0x2d')]]={'$like':'%'+_0x2efa67[_0xe445('0x35')][_0xe445('0x42')]+'%'};return _0x5b2a7b;}})});}_0x23e551=_['merge']({},_0x23e551,_0x2efa67['options']);var _0x55160b={'where':_0x23e551['where']};return db[_0xe445('0x30')][_0xe445('0x20')](_0x55160b)['then'](function(_0x886c7f){_0x613b3f['count']=_0x886c7f;if(_0x2efa67['query']['includeAll']){_0x23e551[_0xe445('0x45')]=[{'all':!![]}];}return db[_0xe445('0x30')][_0xe445('0x46')](_0x23e551);})[_0xe445('0x27')](function(_0x33e752){_0x613b3f['rows']=_0x33e752;return _0x613b3f;})[_0xe445('0x27')](respondWithFilteredResult(_0x415658,_0x23e551))['catch'](handleError(_0x415658,null));};exports[_0xe445('0x47')]=function(_0x5f415b,_0x54fe95){var _0x3d423d={'raw':!![],'where':{'id':_0x5f415b[_0xe445('0x48')]['id']}},_0x119d39={};_0x119d39[_0xe445('0x39')]=_[_0xe445('0x36')](db['WhatsappQueue'][_0xe445('0x31')]);_0x119d39[_0xe445('0x35')]=_['keys'](_0x5f415b[_0xe445('0x35')]);_0x119d39[_0xe445('0x37')]=_[_0xe445('0x38')](_0x119d39[_0xe445('0x39')],_0x119d39[_0xe445('0x35')]);_0x3d423d[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x119d39[_0xe445('0x39')],qs[_0xe445('0x3a')](_0x5f415b[_0xe445('0x35')][_0xe445('0x3a')]));_0x3d423d['attributes']=_0x3d423d[_0xe445('0x3c')][_0xe445('0x3b')]?_0x3d423d[_0xe445('0x3c')]:_0x119d39[_0xe445('0x39')];if(_0x5f415b[_0xe445('0x35')][_0xe445('0x49')]){_0x3d423d['include']=[{'all':!![]}];}_0x3d423d=_[_0xe445('0x43')]({},_0x3d423d,_0x5f415b['options']);return db[_0xe445('0x30')]['find'](_0x3d423d)[_0xe445('0x27')](handleEntityNotFound(_0x54fe95,null))[_0xe445('0x27')](respondWithResult(_0x54fe95,null))[_0xe445('0x4a')](handleError(_0x54fe95,null));};exports[_0xe445('0x4b')]=function(_0xe19a07,_0x36a737){return db[_0xe445('0x30')][_0xe445('0x4b')](_0xe19a07[_0xe445('0x4c')],{})[_0xe445('0x27')](function(_0x33f63a){var _0x3f3b1c=_0xe19a07[_0xe445('0x4d')]['get']({'plain':!![]});if(!_0x3f3b1c)throw new Error(_0xe445('0x4e'));if(_0x3f3b1c[_0xe445('0x4f')]==='user'){var _0x258dfe=_0x33f63a['get']({'plain':!![]});var _0x119372='WhatsappQueues';return db['UserProfileSection'][_0xe445('0x50')]({'where':{'name':_0x119372,'userProfileId':_0x3f3b1c[_0xe445('0x51')]},'raw':!![]})[_0xe445('0x27')](function(_0x1dc3b0){if(_0x1dc3b0&&_0x1dc3b0['autoAssociation']===0x0){return db['UserProfileResource'][_0xe445('0x4b')]({'name':_0x258dfe[_0xe445('0x2d')],'resourceId':_0x258dfe['id'],'type':_0x1dc3b0[_0xe445('0x2d')],'sectionId':_0x1dc3b0['id']},{})['then'](function(){return _0x33f63a;});}else{return _0x33f63a;}})[_0xe445('0x4a')](function(_0x5180f0){logger[_0xe445('0x2b')](_0xe445('0x52'),_0x5180f0);throw _0x5180f0;});}return _0x33f63a;})['then'](respondWithResult(_0x36a737,0xc9))[_0xe445('0x4a')](handleError(_0x36a737,null));};exports['update']=function(_0x4df8ac,_0x360768){if(_0x4df8ac['body']['id']){delete _0x4df8ac[_0xe445('0x4c')]['id'];}return db[_0xe445('0x30')]['find']({'where':{'id':_0x4df8ac[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x360768,null))[_0xe445('0x27')](saveUpdates(_0x4df8ac[_0xe445('0x4c')],null))['then'](respondWithResult(_0x360768,null))[_0xe445('0x4a')](handleError(_0x360768,null));};exports[_0xe445('0x2a')]=function(_0x405cd0,_0x659bb8){return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x405cd0[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x659bb8,null))[_0xe445('0x27')](removeEntity(_0x659bb8,null))[_0xe445('0x4a')](handleError(_0x659bb8,null));};exports[_0xe445('0x53')]=function(_0x44683a,_0x364319){return db[_0xe445('0x30')][_0xe445('0x53')]()[_0xe445('0x27')](respondWithResult(_0x364319,null))[_0xe445('0x4a')](handleError(_0x364319,null));};exports[_0xe445('0x54')]=function(_0x137989,_0x51d9a3,_0x4ac2f9){var _0x4ba91c={'raw':!![],'where':{}},_0x3d292b={},_0x5aac83;return db[_0xe445('0x30')][_0xe445('0x55')]({'where':{'id':_0x137989[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x51d9a3,null))['then'](function(_0x59da4d){if(_0x59da4d){_0x5aac83=_0x59da4d[_0xe445('0x28')]({'plain':!![]});_0x3d292b[_0xe445('0x39')]=_['keys'](db[_0xe445('0x56')][_0xe445('0x31')]);_0x3d292b[_0xe445('0x35')]=_[_0xe445('0x36')](_0x137989[_0xe445('0x35')]);_0x3d292b[_0xe445('0x37')]=_[_0xe445('0x38')](_0x3d292b[_0xe445('0x39')],_0x3d292b[_0xe445('0x35')]);_0x4ba91c[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x3d292b['model'],qs[_0xe445('0x3a')](_0x137989[_0xe445('0x35')]['fields']));_0x4ba91c['attributes']=_0x4ba91c[_0xe445('0x3c')][_0xe445('0x3b')]?_0x4ba91c[_0xe445('0x3c')]:_0x3d292b[_0xe445('0x39')];if(!_0x137989['query']['hasOwnProperty'](_0xe445('0x3e'))){_0x4ba91c[_0xe445('0x3f')]=qs[_0xe445('0x3f')](_0x137989[_0xe445('0x35')][_0xe445('0x3f')]);_0x4ba91c[_0xe445('0x1e')]=qs[_0xe445('0x1e')](_0x137989[_0xe445('0x35')][_0xe445('0x1e')]);}_0x4ba91c[_0xe445('0x57')]=qs[_0xe445('0x40')](_0x137989['query']['sort']);_0x4ba91c['where']=qs[_0xe445('0x37')](_[_0xe445('0x41')](_0x137989[_0xe445('0x35')],_0x3d292b[_0xe445('0x37')]));_0x4ba91c[_0xe445('0x44')][_0xe445('0x58')]=_0x59da4d['id'];if(_0x137989[_0xe445('0x35')][_0xe445('0x42')]){_0x4ba91c[_0xe445('0x44')]=_[_0xe445('0x43')](_0x4ba91c[_0xe445('0x44')],{'$or':_['map'](_0x4ba91c[_0xe445('0x3c')],function(_0x231683){var _0x586a8d={};_0x586a8d[_0x231683]={'$like':'%'+_0x137989['query'][_0xe445('0x42')]+'%'};return _0x586a8d;})});}_0x4ba91c=_[_0xe445('0x43')]({},_0x4ba91c,_0x137989[_0xe445('0x59')]);return db[_0xe445('0x56')][_0xe445('0x46')](_0x4ba91c);}})['then'](function(_0x573860){if(_0x573860){return db[_0xe445('0x5a')][_0xe445('0x5b')]({'where':{'id':_[_0xe445('0x34')](_0x573860,_0xe445('0x5c')),'role':_0xe445('0x5d')},'attributes':['id','name','whatsappPause',_0xe445('0x5e'),_0xe445('0x5f')]});}})[_0xe445('0x27')](function(_0x11a66f){if(_0x11a66f){return{'count':_0x11a66f[_0xe445('0x20')],'rows':_[_0xe445('0x34')](_0x11a66f['rows'],function(_0x117593){return{'membername':_0x117593[_0xe445('0x2d')],'UserId':_0x117593['id'],'queue_name':_0x5aac83[_0xe445('0x2d')],'WhatsappQueueId':_0x5aac83['id'],'interface':util[_0xe445('0x60')]('%s/%s',_0xe445('0x61'),_0x117593[_0xe445('0x2d')]),'penalty':0x0,'paused':_0x117593['whatsappPause'],'createdAt':_0x117593[_0xe445('0x5f')],'updatedAt':_0x117593['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x51d9a3,_0x4ba91c))[_0xe445('0x4a')](handleError(_0x51d9a3,null));};exports['getTeams']=function(_0x213d30,_0x1c2255,_0x267e41){var _0x4ff368={};var _0x13becf={};var _0x2ca43c;var _0x15b322;return db[_0xe445('0x30')][_0xe445('0x55')]({'where':{'id':_0x213d30['params']['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x1c2255,null))[_0xe445('0x27')](function(_0x5d3696){if(_0x5d3696){_0x2ca43c=_0x5d3696;_0x13becf[_0xe445('0x39')]=_['keys'](db[_0xe445('0x62')][_0xe445('0x31')]);_0x13becf[_0xe445('0x35')]=_[_0xe445('0x36')](_0x213d30[_0xe445('0x35')]);_0x13becf[_0xe445('0x37')]=_[_0xe445('0x38')](_0x13becf['model'],_0x13becf[_0xe445('0x35')]);_0x4ff368[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x13becf['model'],qs[_0xe445('0x3a')](_0x213d30[_0xe445('0x35')][_0xe445('0x3a')]));_0x4ff368['attributes']=_0x4ff368[_0xe445('0x3c')][_0xe445('0x3b')]?_0x4ff368[_0xe445('0x3c')]:_0x13becf['model'];_0x4ff368[_0xe445('0x57')]=qs[_0xe445('0x40')](_0x213d30[_0xe445('0x35')][_0xe445('0x40')]);_0x4ff368['where']=qs['filters'](_[_0xe445('0x41')](_0x213d30[_0xe445('0x35')],_0x13becf['filters']));if(_0x213d30[_0xe445('0x35')][_0xe445('0x42')]){_0x4ff368[_0xe445('0x44')]=_[_0xe445('0x43')](_0x4ff368['where'],{'$or':_[_0xe445('0x34')](_0x4ff368[_0xe445('0x3c')],function(_0x1e9359){var _0x51a46c={};_0x51a46c[_0x1e9359]={'$like':'%'+_0x213d30[_0xe445('0x35')][_0xe445('0x42')]+'%'};return _0x51a46c;})});}_0x4ff368=_[_0xe445('0x43')]({},_0x4ff368,_0x213d30['options']);return _0x2ca43c['getTeams'](_0x4ff368);}})[_0xe445('0x27')](function(_0x4e969e){if(_0x4e969e){_0x15b322=_0x4e969e['length'];if(!_0x213d30[_0xe445('0x35')][_0xe445('0x3d')](_0xe445('0x3e'))){_0x4ff368[_0xe445('0x3f')]=qs[_0xe445('0x3f')](_0x213d30[_0xe445('0x35')][_0xe445('0x3f')]);_0x4ff368[_0xe445('0x1e')]=qs[_0xe445('0x1e')](_0x213d30[_0xe445('0x35')][_0xe445('0x1e')]);}return _0x2ca43c['getTeams'](_0x4ff368);}})[_0xe445('0x27')](function(_0x548a27){if(_0x548a27){return _0x548a27?{'count':_0x15b322,'rows':_0x548a27}:null;}})['then'](respondWithResult(_0x1c2255,null))[_0xe445('0x4a')](handleError(_0x1c2255,null));};exports['addTeams']=function(_0x3a04a8,_0x4e0b4b,_0x27474c){var _0x68dfc4=_0x3a04a8[_0xe445('0x4c')][_0xe445('0x63')];return db[_0xe445('0x62')]['findAll']({'where':{'id':_0x68dfc4},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe445('0x64'),'attributes':['id',_0xe445('0x2d'),'online',_0xe445('0x65'),_0xe445('0x66')],'raw':!![]}]})['then'](function(_0x5be5dc){if(_0x5be5dc){var _0x46c347=_['flatMap'](_0x5be5dc,function(_0x32a600){var _0x35beb1=_0x32a600[_0xe445('0x28')]({'plain':!![]});return _0x35beb1[_0xe445('0x64')];});return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x3a04a8[_0xe445('0x48')]['id']}})[_0xe445('0x27')](function(_0x234e38){return db[_0xe445('0x67')][_0xe445('0x68')](function(_0x3c65ad){return _0x234e38[_0xe445('0x69')](_0x68dfc4,{'transaction':_0x3c65ad})[_0xe445('0x27')](function(){return BPromise[_0xe445('0x6a')](_0x46c347,function(_0x1fbc8d){return db['UserWhatsappQueue'][_0xe445('0x6b')]({'where':{'UserId':_0x1fbc8d['id'],'WhatsappQueueId':_0x3a04a8[_0xe445('0x48')]['id']},'transaction':_0x3c65ad});});})[_0xe445('0x27')](function(){_0x46c347['forEach'](function(_0x284388){socket[_0xe445('0x6c')](_0xe445('0x6d'),{'UserId':_0x284388['id'],'WhatsappQueueId':_0x234e38['id']});});});});});}})[_0xe445('0x27')](respondWithStatusCode(_0x4e0b4b,null))['catch'](handleError(_0x4e0b4b,null));};exports['removeTeams']=function(_0x51a0bf,_0x3eb8bf,_0x2ec298){return db[_0xe445('0x62')]['findAll']({'where':{'id':_0x51a0bf[_0xe445('0x35')][_0xe445('0x63')]},'attributes':['id'],'include':[{'model':db[_0xe445('0x5a')],'as':_0xe445('0x64'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3eb8bf,null))[_0xe445('0x27')](function(_0x4af2b4){var _0x47300c=_[_0xe445('0x34')](_0x4af2b4,'id');var _0x6fdbe0=[];var _0x461653=[];var _0x3b5d12=squel[_0xe445('0x6e')]();_0x3b5d12[_0xe445('0x6f')](_0xe445('0x70'))[_0xe445('0x71')](_0xe445('0x72'),'tq')[_0xe445('0x73')](_0xe445('0x74'),'ut',_0xe445('0x75'))[_0xe445('0x44')](_0xe445('0x76'),_0x51a0bf[_0xe445('0x48')]['id']);for(var _0x2e634c=0x0;_0x2e634c<_0x4af2b4[_0xe445('0x3b')];_0x2e634c+=0x1){let _0x55e4d7=_0x4af2b4[_0x2e634c];for(var _0x55de1f=0x0;_0x55de1f<_0x55e4d7[_0xe445('0x64')][_0xe445('0x3b')];_0x55de1f+=0x1){let _0x2c2e5f=_0x55e4d7[_0xe445('0x64')][_0x55de1f];var _0x5b0dc0=_0x3b5d12[_0xe445('0x77')]();_0x5b0dc0['where'](_0xe445('0x78'),_0x2c2e5f['id']);_0x461653[_0xe445('0x79')](db[_0xe445('0x67')][_0xe445('0x35')](_0x5b0dc0['toString'](),{'type':db[_0xe445('0x67')][_0xe445('0x7a')][_0xe445('0x7b')]})['then'](function(_0x1eba06){if(_0x1eba06[_0xe445('0x3b')]===0x1){return _0x2c2e5f['id'];}else{var _0x5d9159=_['every'](_[_0xe445('0x34')](_0x1eba06,_0xe445('0x7c')),function(_0x2b41f9){return _[_0xe445('0x7d')](_0x47300c,_0x2b41f9);});if(_0x5d9159){return _0x2c2e5f['id'];}}}));}}return BPromise[_0xe445('0x7e')](_0x461653)['then'](function(_0x2d0ca1){_0x6fdbe0=_(_0x6fdbe0)[_0xe445('0x7f')](_0x2d0ca1)[_0xe445('0x80')]()['value']();return db[_0xe445('0x30')]['find']({'where':{'id':_0x51a0bf['params']['id']}})[_0xe445('0x27')](function(_0x1a1630){return db[_0xe445('0x67')]['transaction'](function(_0x37ceac){return _0x1a1630[_0xe445('0x81')](_0x51a0bf['query']['ids'],{'transaction':_0x37ceac})[_0xe445('0x27')](function(){if(!_[_0xe445('0x82')](_0x6fdbe0)){return _0x1a1630['removeAgents'](_0x6fdbe0,{'transaction':_0x37ceac});}})['then'](function(){_0x6fdbe0[_0xe445('0x83')](function(_0x19d7c9){socket['emit'](_0xe445('0x84'),{'UserId':_0x19d7c9,'WhatsappQueueId':_0x1a1630['id']});});});});});});})[_0xe445('0x27')](respondWithStatusCode(_0x3eb8bf,null))['catch'](handleError(_0x3eb8bf,null));};exports['addAgents']=function(_0x4e9a43,_0x3ddac4,_0x1cec5d){return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x4e9a43[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x3ddac4,null))[_0xe445('0x27')](function(_0x45d593){if(_0x45d593){return _0x45d593[_0xe445('0x85')](_0x4e9a43[_0xe445('0x4c')][_0xe445('0x63')],_[_0xe445('0x86')](_0x4e9a43[_0xe445('0x4c')],[_0xe445('0x63'),'id'])||{})[_0xe445('0x87')](function(_0x4b112c){for(var _0x4fcebd=0x0;_0x4fcebd<_0x4e9a43['body'][_0xe445('0x63')][_0xe445('0x3b')];_0x4fcebd+=0x1){socket[_0xe445('0x6c')](_0xe445('0x6d'),{'UserId':Number(_0x4e9a43[_0xe445('0x4c')]['ids'][_0x4fcebd]),'WhatsappQueueId':Number(_0x4e9a43[_0xe445('0x48')]['id'])});}return _0x4b112c;});}})[_0xe445('0x27')](respondWithResult(_0x3ddac4,null))[_0xe445('0x4a')](handleError(_0x3ddac4,null));};exports[_0xe445('0x88')]=function(_0x3e5f50,_0x4c4eba,_0xbe0da9){return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x3e5f50[_0xe445('0x48')]['id']}})['then'](handleEntityNotFound(_0x4c4eba,null))[_0xe445('0x27')](function(_0x5d8e3b){if(_0x5d8e3b){return _0x5d8e3b[_0xe445('0x88')](_0x3e5f50[_0xe445('0x35')][_0xe445('0x63')])[_0xe445('0x27')](function(){if(_[_0xe445('0x89')](_0x3e5f50[_0xe445('0x35')]['ids'])){for(var _0x3fc162=0x0;_0x3fc162<_0x3e5f50[_0xe445('0x35')][_0xe445('0x63')][_0xe445('0x3b')];_0x3fc162+=0x1){socket[_0xe445('0x6c')](_0xe445('0x84'),{'UserId':Number(_0x3e5f50[_0xe445('0x35')][_0xe445('0x63')][_0x3fc162]),'WhatsappQueueId':Number(_0x3e5f50['params']['id'])});}}else{socket[_0xe445('0x6c')](_0xe445('0x84'),{'UserId':Number(_0x3e5f50['query'][_0xe445('0x63')]),'WhatsappQueueId':Number(_0x3e5f50[_0xe445('0x48')]['id'])});}});}})[_0xe445('0x27')](respondWithStatusCode(_0x4c4eba,null))[_0xe445('0x4a')](handleError(_0x4c4eba,null));};exports[_0xe445('0x8a')]=function(_0x2e86f1,_0x39e2c2,_0x485d34){var _0x6de3ae={};var _0x11fccb={};var _0x44bba5;var _0x2b45d9;return db['WhatsappQueue'][_0xe445('0x55')]({'where':{'id':_0x2e86f1[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x39e2c2,null))[_0xe445('0x27')](function(_0x4a7cbf){if(_0x4a7cbf){_0x44bba5=_0x4a7cbf;_0x11fccb['model']=_[_0xe445('0x36')](db[_0xe445('0x5a')][_0xe445('0x31')]);_0x11fccb[_0xe445('0x35')]=_['keys'](_0x2e86f1[_0xe445('0x35')]);_0x11fccb[_0xe445('0x37')]=_[_0xe445('0x38')](_0x11fccb[_0xe445('0x39')],_0x11fccb['query']);_0x6de3ae[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x11fccb[_0xe445('0x39')],qs[_0xe445('0x3a')](_0x2e86f1[_0xe445('0x35')][_0xe445('0x3a')]));_0x6de3ae[_0xe445('0x3c')]=_0x6de3ae[_0xe445('0x3c')][_0xe445('0x3b')]?_0x6de3ae[_0xe445('0x3c')]:_0x11fccb[_0xe445('0x39')];_0x6de3ae['order']=qs[_0xe445('0x40')](_0x2e86f1['query'][_0xe445('0x40')]);_0x6de3ae['where']=qs['filters'](_[_0xe445('0x41')](_0x2e86f1['query'],_0x11fccb[_0xe445('0x37')]));if(_0x2e86f1[_0xe445('0x35')][_0xe445('0x42')]){_0x6de3ae[_0xe445('0x44')]=_[_0xe445('0x43')](_0x6de3ae[_0xe445('0x44')],{'$or':_['map'](_0x6de3ae[_0xe445('0x3c')],function(_0x2bf9c6){var _0x1c0eee={};_0x1c0eee[_0x2bf9c6]={'$like':'%'+_0x2e86f1[_0xe445('0x35')][_0xe445('0x42')]+'%'};return _0x1c0eee;})});}_0x6de3ae=_[_0xe445('0x43')]({},_0x6de3ae,_0x2e86f1[_0xe445('0x59')]);return _0x44bba5[_0xe445('0x8a')](_0x6de3ae);}})[_0xe445('0x27')](function(_0x34e42e){if(_0x34e42e){_0x2b45d9=_0x34e42e['length'];if(!_0x2e86f1[_0xe445('0x35')][_0xe445('0x3d')](_0xe445('0x3e'))){_0x6de3ae[_0xe445('0x3f')]=qs['limit'](_0x2e86f1['query'][_0xe445('0x3f')]);_0x6de3ae[_0xe445('0x1e')]=qs['offset'](_0x2e86f1[_0xe445('0x35')]['offset']);}return _0x44bba5[_0xe445('0x8a')](_0x6de3ae);}})[_0xe445('0x27')](function(_0x31b767){if(_0x31b767){return _0x31b767?{'count':_0x2b45d9,'rows':_0x31b767}:null;}})[_0xe445('0x27')](respondWithResult(_0x39e2c2,null))[_0xe445('0x4a')](handleError(_0x39e2c2,null));};
\ No newline at end of file
index 0a7a228..7cfac2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7254=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x5c85d2,_0x3165af){var _0x2d2d10=function(_0x550a26){while(--_0x550a26){_0x5c85d2['push'](_0x5c85d2['shift']());}};_0x2d2d10(++_0x3165af);}(_0x7254,0xf7));var _0x4725=function(_0x4a628a,_0x52b3a7){_0x4a628a=_0x4a628a-0x0;var _0x25b28d=_0x7254[_0x4a628a];return _0x25b28d;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x4725('0x0'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x4725('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4725('0x2'),'afterDestroy':_0x4725('0x3')};function emitEvent(_0x1705d1){return function(_0x50c4d0,_0x2cbd0c,_0x5d8a6f){WhatsappQueueEvents[_0x4725('0x4')](_0x1705d1+':'+_0x50c4d0['id'],_0x50c4d0);WhatsappQueueEvents[_0x4725('0x4')](_0x1705d1,_0x50c4d0);_0x5d8a6f(null);};}for(var e in events){if(events[_0x4725('0x5')](e)){var event=events[e];WhatsappQueue[_0x4725('0x6')](e,emitEvent(event));}}module[_0x4725('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x7018=['emit','hasOwnProperty','hook','exports','events','WhatsappQueue','setMaxListeners','save','update','remove'];(function(_0x4b26b5,_0x4f71fd){var _0x4dec71=function(_0x184329){while(--_0x184329){_0x4b26b5['push'](_0x4b26b5['shift']());}};_0x4dec71(++_0x4f71fd);}(_0x7018,0xc2));var _0x8701=function(_0x1e373e,_0x2730a6){_0x1e373e=_0x1e373e-0x0;var _0x34fd7a=_0x7018[_0x1e373e];return _0x34fd7a;};'use strict';var EventEmitter=require(_0x8701('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0x8701('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x8701('0x2')](0x0);var events={'afterCreate':_0x8701('0x3'),'afterUpdate':_0x8701('0x4'),'afterDestroy':_0x8701('0x5')};function emitEvent(_0x1462e7){return function(_0x1944f6,_0x13d42c,_0x5b2aa1){WhatsappQueueEvents[_0x8701('0x6')](_0x1462e7+':'+_0x1944f6['id'],_0x1944f6);WhatsappQueueEvents[_0x8701('0x6')](_0x1462e7,_0x1944f6);_0x5b2aa1(null);};}for(var e in events){if(events[_0x8701('0x7')](e)){var event=events[e];WhatsappQueue[_0x8701('0x8')](e,emitEvent(event));}}module[_0x8701('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
index 97cf7e0..941c505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ae3=['define','WhatsappQueue','whatsapp_queues','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueue.attributes','exports'];(function(_0x3fb07b,_0x2920ca){var _0x15cdb4=function(_0x93d9d5){while(--_0x93d9d5){_0x3fb07b['push'](_0x3fb07b['shift']());}};_0x15cdb4(++_0x2920ca);}(_0x5ae3,0xac));var _0x35ae=function(_0x552582,_0x4f82c1){_0x552582=_0x552582-0x0;var _0x364753=_0x5ae3[_0x552582];return _0x364753;};'use strict';var _=require('lodash');var util=require(_0x35ae('0x0'));var logger=require(_0x35ae('0x1'))('api');var moment=require(_0x35ae('0x2'));var BPromise=require(_0x35ae('0x3'));var rp=require(_0x35ae('0x4'));var fs=require('fs');var path=require(_0x35ae('0x5'));var rimraf=require(_0x35ae('0x6'));var config=require(_0x35ae('0x7'));var attributes=require(_0x35ae('0x8'));module[_0x35ae('0x9')]=function(_0xd6ddc8,_0x37a22e){return _0xd6ddc8[_0x35ae('0xa')](_0x35ae('0xb'),attributes,{'tableName':_0x35ae('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9844=['moment','bluebird','path','rimraf','../../config/environment','exports','define','WhatsappQueue','lodash','util'];(function(_0x26528d,_0x45dc7e){var _0x198529=function(_0x55c55e){while(--_0x55c55e){_0x26528d['push'](_0x26528d['shift']());}};_0x198529(++_0x45dc7e);}(_0x9844,0x166));var _0x4984=function(_0x906002,_0x365920){_0x906002=_0x906002-0x0;var _0x55dc5c=_0x9844[_0x906002];return _0x55dc5c;};'use strict';var _=require(_0x4984('0x0'));var util=require(_0x4984('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4984('0x2'));var BPromise=require(_0x4984('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4984('0x4'));var rimraf=require(_0x4984('0x5'));var config=require(_0x4984('0x6'));var attributes=require('./whatsappQueue.attributes');module[_0x4984('0x7')]=function(_0x3395e0,_0x13955c){return _0x3395e0[_0x4984('0x8')](_0x4984('0x9'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a645d0..6ee124d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd4b=['model','then','debug','stringify','ShowWhatsappQueue','WhatsappQueue','raw','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','./whatsappQueue.socket','register','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','WhatsappQueue,\x20%s,\x20%s','result','catch','GetWhatsappQueue','options','where','attributes','limit','include','map'];(function(_0x219e9b,_0x295d91){var _0x332e80=function(_0x567792){while(--_0x567792){_0x219e9b['push'](_0x219e9b['shift']());}};_0x332e80(++_0x295d91);}(_0xbd4b,0x73));var _0xbbd4=function(_0x596271,_0x37f34b){_0x596271=_0x596271-0x0;var _0x543081=_0xbd4b[_0x596271];return _0x543081;};'use strict';var _=require('lodash');var util=require(_0xbbd4('0x0'));var moment=require(_0xbbd4('0x1'));var BPromise=require('bluebird');var rs=require(_0xbbd4('0x2'));var fs=require('fs');var Redis=require(_0xbbd4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbbd4('0x4'));var logger=require(_0xbbd4('0x5'))('rpc');var config=require(_0xbbd4('0x6'));var jayson=require(_0xbbd4('0x7'));var client=jayson['client'][_0xbbd4('0x8')]({'port':0x232a});config[_0xbbd4('0x9')]=_[_0xbbd4('0xa')](config[_0xbbd4('0x9')],{'host':_0xbbd4('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbbd4('0x9')]));require(_0xbbd4('0xc'))[_0xbbd4('0xd')](socket);function respondWithRpcPromise(_0x379971,_0x3746be,_0x18926d){return new BPromise(function(_0x5394ab,_0x14caba){return client['request'](_0x379971,_0x18926d)['then'](function(_0x44a227){logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x3746be,_0xbbd4('0xe'));logger['debug'](_0xbbd4('0xf'),_0x3746be,_0xbbd4('0xe'),JSON['stringify'](_0x44a227));if(_0x44a227[_0xbbd4('0x10')]){if(_0x44a227[_0xbbd4('0x10')][_0xbbd4('0x11')]===0x1f4){logger[_0xbbd4('0x10')]('WhatsappQueue,\x20%s,\x20%s',_0x3746be,_0x44a227[_0xbbd4('0x10')][_0xbbd4('0x12')]);return _0x14caba(_0x44a227[_0xbbd4('0x10')]['message']);}logger[_0xbbd4('0x10')]('WhatsappQueue,\x20%s,\x20%s',_0x3746be,_0x44a227[_0xbbd4('0x10')][_0xbbd4('0x12')]);return _0x5394ab(_0x44a227[_0xbbd4('0x10')]['message']);}else{logger['info'](_0xbbd4('0x13'),_0x3746be,'request\x20sent');_0x5394ab(_0x44a227[_0xbbd4('0x14')][_0xbbd4('0x12')]);}})[_0xbbd4('0x15')](function(_0x3b8f2e){logger[_0xbbd4('0x10')]('WhatsappQueue,\x20%s,\x20%s',_0x3746be,_0x3b8f2e);_0x14caba(_0x3b8f2e);});});}exports[_0xbbd4('0x16')]=function(_0x15735a){var _0x971077=this;return new Promise(function(_0x3545d2,_0xafb010){return db['WhatsappQueue']['findAll']({'raw':_0x15735a[_0xbbd4('0x17')]?_0x15735a[_0xbbd4('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x15735a[_0xbbd4('0x17')]?_0x15735a[_0xbbd4('0x17')][_0xbbd4('0x18')]||null:null,'attributes':_0x15735a[_0xbbd4('0x17')]?_0x15735a[_0xbbd4('0x17')][_0xbbd4('0x19')]||null:null,'limit':_0x15735a['options']?_0x15735a[_0xbbd4('0x17')][_0xbbd4('0x1a')]||null:null,'include':_0x15735a[_0xbbd4('0x17')]?_0x15735a[_0xbbd4('0x17')][_0xbbd4('0x1b')]?_[_0xbbd4('0x1c')](_0x15735a[_0xbbd4('0x17')]['include'],function(_0x45b528){return{'model':db[_0x45b528['model']],'as':_0x45b528['as'],'attributes':_0x45b528[_0xbbd4('0x19')],'include':_0x45b528[_0xbbd4('0x1b')]?_['map'](_0x45b528[_0xbbd4('0x1b')],function(_0x4ecd5d){return{'model':db[_0x4ecd5d[_0xbbd4('0x1d')]],'as':_0x4ecd5d['as'],'attributes':_0x4ecd5d[_0xbbd4('0x19')],'include':_0x4ecd5d[_0xbbd4('0x1b')]?_[_0xbbd4('0x1c')](_0x4ecd5d[_0xbbd4('0x1b')],function(_0x3a477b){return{'model':db[_0x3a477b[_0xbbd4('0x1d')]],'as':_0x3a477b['as'],'attributes':_0x3a477b[_0xbbd4('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbbd4('0x1e')](function(_0x202b88){logger['info'](_0xbbd4('0x16'),_0x15735a);logger[_0xbbd4('0x1f')](_0xbbd4('0x16'),_0x15735a,JSON[_0xbbd4('0x20')](_0x202b88));_0x3545d2(_0x202b88);})[_0xbbd4('0x15')](function(_0x527369){logger[_0xbbd4('0x10')](_0xbbd4('0x16'),_0x527369['message'],_0x15735a);_0xafb010(_0x971077[_0xbbd4('0x10')](0x1f4,_0x527369[_0xbbd4('0x12')]));});});};exports[_0xbbd4('0x21')]=function(_0x1d1ee5){var _0x480b31=this;return new Promise(function(_0x52d66b,_0x3d800e){return db[_0xbbd4('0x22')]['find']({'raw':_0x1d1ee5[_0xbbd4('0x17')]?_0x1d1ee5['options'][_0xbbd4('0x23')]===undefined?!![]:![]:!![],'where':_0x1d1ee5[_0xbbd4('0x17')]?_0x1d1ee5[_0xbbd4('0x17')][_0xbbd4('0x18')]||null:null,'attributes':_0x1d1ee5['options']?_0x1d1ee5[_0xbbd4('0x17')]['attributes']||null:null,'include':_0x1d1ee5[_0xbbd4('0x17')]?_0x1d1ee5[_0xbbd4('0x17')][_0xbbd4('0x1b')]?_[_0xbbd4('0x1c')](_0x1d1ee5[_0xbbd4('0x17')][_0xbbd4('0x1b')],function(_0x1fbae1){return{'model':db[_0x1fbae1['model']],'as':_0x1fbae1['as'],'attributes':_0x1fbae1[_0xbbd4('0x19')],'include':_0x1fbae1[_0xbbd4('0x1b')]?_[_0xbbd4('0x1c')](_0x1fbae1[_0xbbd4('0x1b')],function(_0xa6ab73){return{'model':db[_0xa6ab73[_0xbbd4('0x1d')]],'as':_0xa6ab73['as'],'attributes':_0xa6ab73[_0xbbd4('0x19')],'include':_0xa6ab73[_0xbbd4('0x1b')]?_[_0xbbd4('0x1c')](_0xa6ab73[_0xbbd4('0x1b')],function(_0x235856){return{'model':db[_0x235856[_0xbbd4('0x1d')]],'as':_0x235856['as'],'attributes':_0x235856[_0xbbd4('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbbd4('0x1e')](function(_0x44a0dc){logger['info'](_0xbbd4('0x21'),_0x1d1ee5);logger[_0xbbd4('0x1f')](_0xbbd4('0x21'),_0x1d1ee5,JSON[_0xbbd4('0x20')](_0x44a0dc));_0x52d66b(_0x44a0dc);})[_0xbbd4('0x15')](function(_0x17d6a1){logger['error'](_0xbbd4('0x21'),_0x17d6a1[_0xbbd4('0x12')],_0x1d1ee5);_0x3d800e(_0x480b31['error'](0x1f4,_0x17d6a1[_0xbbd4('0x12')]));});});};
\ No newline at end of file
+var _0xad4a=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','./whatsappQueue.socket','register','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetWhatsappQueue','WhatsappQueue','options','attributes','limit','include','map','model','then','find','ShowWhatsappQueue','util','moment','bluebird'];(function(_0x2c74e5,_0x2f9a66){var _0x3ea53c=function(_0x5bf845){while(--_0x5bf845){_0x2c74e5['push'](_0x2c74e5['shift']());}};_0x3ea53c(++_0x2f9a66);}(_0xad4a,0x189));var _0xaad4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xad4a[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xaad4('0x0'));var moment=require(_0xaad4('0x1'));var BPromise=require(_0xaad4('0x2'));var rs=require(_0xaad4('0x3'));var fs=require('fs');var Redis=require(_0xaad4('0x4'));var db=require(_0xaad4('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaad4('0x6'))(_0xaad4('0x7'));var config=require(_0xaad4('0x8'));var jayson=require(_0xaad4('0x9'));var client=jayson['client'][_0xaad4('0xa')]({'port':0x232a});config[_0xaad4('0xb')]=_['defaults'](config['redis'],{'host':_0xaad4('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaad4('0xb')]));require(_0xaad4('0xd'))[_0xaad4('0xe')](socket);function respondWithRpcPromise(_0x5633df,_0x3098f7,_0x4a1c4a){return new BPromise(function(_0x463709,_0x3129e5){return client['request'](_0x5633df,_0x4a1c4a)['then'](function(_0x1a15de){logger[_0xaad4('0xf')](_0xaad4('0x10'),_0x3098f7,_0xaad4('0x11'));logger[_0xaad4('0x12')](_0xaad4('0x13'),_0x3098f7,_0xaad4('0x11'),JSON[_0xaad4('0x14')](_0x1a15de));if(_0x1a15de[_0xaad4('0x15')]){if(_0x1a15de[_0xaad4('0x15')]['code']===0x1f4){logger[_0xaad4('0x15')](_0xaad4('0x10'),_0x3098f7,_0x1a15de[_0xaad4('0x15')][_0xaad4('0x16')]);return _0x3129e5(_0x1a15de[_0xaad4('0x15')]['message']);}logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x3098f7,_0x1a15de[_0xaad4('0x15')]['message']);return _0x463709(_0x1a15de['error']['message']);}else{logger['info'](_0xaad4('0x10'),_0x3098f7,_0xaad4('0x11'));_0x463709(_0x1a15de[_0xaad4('0x17')][_0xaad4('0x16')]);}})[_0xaad4('0x18')](function(_0x18044e){logger['error'](_0xaad4('0x10'),_0x3098f7,_0x18044e);_0x3129e5(_0x18044e);});});}exports[_0xaad4('0x19')]=function(_0x4c7217){var _0x376465=this;return new Promise(function(_0x49e27c,_0x55dcba){return db[_0xaad4('0x1a')]['findAll']({'raw':_0x4c7217['options']?_0x4c7217['options']['raw']===undefined?!![]:![]:!![],'where':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217[_0xaad4('0x1b')]['where']||null:null,'attributes':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217['options'][_0xaad4('0x1c')]||null:null,'limit':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217[_0xaad4('0x1b')][_0xaad4('0x1d')]||null:null,'include':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217['options'][_0xaad4('0x1e')]?_[_0xaad4('0x1f')](_0x4c7217['options'][_0xaad4('0x1e')],function(_0x5362bb){return{'model':db[_0x5362bb['model']],'as':_0x5362bb['as'],'attributes':_0x5362bb[_0xaad4('0x1c')],'include':_0x5362bb['include']?_['map'](_0x5362bb[_0xaad4('0x1e')],function(_0x3a46c6){return{'model':db[_0x3a46c6['model']],'as':_0x3a46c6['as'],'attributes':_0x3a46c6[_0xaad4('0x1c')],'include':_0x3a46c6[_0xaad4('0x1e')]?_[_0xaad4('0x1f')](_0x3a46c6[_0xaad4('0x1e')],function(_0xbe1584){return{'model':db[_0xbe1584[_0xaad4('0x20')]],'as':_0xbe1584['as'],'attributes':_0xbe1584['attributes']};}):[]};}):[]};}):[]:[]})[_0xaad4('0x21')](function(_0x274f0b){logger[_0xaad4('0xf')](_0xaad4('0x19'),_0x4c7217);logger['debug'](_0xaad4('0x19'),_0x4c7217,JSON['stringify'](_0x274f0b));_0x49e27c(_0x274f0b);})[_0xaad4('0x18')](function(_0x4b1f37){logger[_0xaad4('0x15')](_0xaad4('0x19'),_0x4b1f37['message'],_0x4c7217);_0x55dcba(_0x376465[_0xaad4('0x15')](0x1f4,_0x4b1f37['message']));});});};exports['ShowWhatsappQueue']=function(_0x161997){var _0x191b9f=this;return new Promise(function(_0x363b38,_0x2dd5a9){return db[_0xaad4('0x1a')][_0xaad4('0x22')]({'raw':_0x161997[_0xaad4('0x1b')]?_0x161997['options']['raw']===undefined?!![]:![]:!![],'where':_0x161997['options']?_0x161997[_0xaad4('0x1b')]['where']||null:null,'attributes':_0x161997[_0xaad4('0x1b')]?_0x161997['options'][_0xaad4('0x1c')]||null:null,'include':_0x161997[_0xaad4('0x1b')]?_0x161997[_0xaad4('0x1b')]['include']?_[_0xaad4('0x1f')](_0x161997[_0xaad4('0x1b')]['include'],function(_0xd22fdf){return{'model':db[_0xd22fdf[_0xaad4('0x20')]],'as':_0xd22fdf['as'],'attributes':_0xd22fdf[_0xaad4('0x1c')],'include':_0xd22fdf[_0xaad4('0x1e')]?_[_0xaad4('0x1f')](_0xd22fdf[_0xaad4('0x1e')],function(_0x40a1c1){return{'model':db[_0x40a1c1[_0xaad4('0x20')]],'as':_0x40a1c1['as'],'attributes':_0x40a1c1['attributes'],'include':_0x40a1c1[_0xaad4('0x1e')]?_['map'](_0x40a1c1[_0xaad4('0x1e')],function(_0x59694b){return{'model':db[_0x59694b['model']],'as':_0x59694b['as'],'attributes':_0x59694b[_0xaad4('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xaad4('0x21')](function(_0x4cb510){logger[_0xaad4('0xf')](_0xaad4('0x23'),_0x161997);logger[_0xaad4('0x12')]('ShowWhatsappQueue',_0x161997,JSON['stringify'](_0x4cb510));_0x363b38(_0x4cb510);})[_0xaad4('0x18')](function(_0x52a46f){logger[_0xaad4('0x15')](_0xaad4('0x23'),_0x52a46f['message'],_0x161997);_0x2dd5a9(_0x191b9f[_0xaad4('0x15')](0x1f4,_0x52a46f['message']));});});};
\ No newline at end of file
index 22aa910..8b68685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f4e=['remove','update','removeListener','length','whatsappQueue:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4f4e,0x168));var _0xe4f4=function(_0x4d9bb2,_0x3db50d){_0x4d9bb2=_0x4d9bb2-0x0;var _0x3179fe=_0x4f4e[_0x4d9bb2];return _0x3179fe;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=['save',_0xe4f4('0x0'),_0xe4f4('0x1')];function createListener(_0x271b8f,_0x481b33){return function(_0x1b27f4){_0x481b33['emit'](_0x271b8f,_0x1b27f4);};}function removeListener(_0x20c2e5,_0x26bc24){return function(){WhatsappQueueEvents[_0xe4f4('0x2')](_0x20c2e5,_0x26bc24);};}exports['register']=function(_0x209e97){for(var _0x4db25a=0x0,_0x16abde=events[_0xe4f4('0x3')];_0x4db25a<_0x16abde;_0x4db25a++){var _0x30e968=events[_0x4db25a];var _0x5eb79b=createListener(_0xe4f4('0x4')+_0x30e968,_0x209e97);WhatsappQueueEvents['on'](_0x30e968,_0x5eb79b);}};
\ No newline at end of file
+var _0xf910=['length','whatsappQueue:','save','remove','update','emit','removeListener','register'];(function(_0x3886c4,_0x1dfd90){var _0x1d8391=function(_0x5ca82b){while(--_0x5ca82b){_0x3886c4['push'](_0x3886c4['shift']());}};_0x1d8391(++_0x1dfd90);}(_0xf910,0x1d2));var _0x0f91=function(_0x4b5e1d,_0x39a146){_0x4b5e1d=_0x4b5e1d-0x0;var _0x37697f=_0xf910[_0x4b5e1d];return _0x37697f;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x0f91('0x0'),_0x0f91('0x1'),_0x0f91('0x2')];function createListener(_0x9e1818,_0x4d1558){return function(_0x1e9a02){_0x4d1558[_0x0f91('0x3')](_0x9e1818,_0x1e9a02);};}function removeListener(_0x2402f0,_0x2d3f7f){return function(){WhatsappQueueEvents[_0x0f91('0x4')](_0x2402f0,_0x2d3f7f);};}exports[_0x0f91('0x5')]=function(_0x2311d6){for(var _0x415688=0x0,_0x2df3ea=events[_0x0f91('0x6')];_0x415688<_0x2df3ea;_0x415688++){var _0x3f975f=events[_0x415688];var _0x72f70b=createListener(_0x0f91('0x7')+_0x3f975f,_0x2311d6);WhatsappQueueEvents['on'](_0x3f975f,_0x72f70b);}};
\ No newline at end of file
index b396ad6..63449a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a7f=['./whatsappQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','post','create','put','update','destroy','multer','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x0a7f,0x1b5));var _0xf0a7=function(_0x208749,_0x2b7b66){_0x208749=_0x208749-0x0;var _0x3e0042=_0x0a7f[_0x208749];return _0x3e0042;};'use strict';var multer=require(_0xf0a7('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf0a7('0x1'));var router=express[_0xf0a7('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf0a7('0x3'));var config=require(_0xf0a7('0x4'));var controller=require(_0xf0a7('0x5'));router[_0xf0a7('0x6')]('/',auth['isAuthenticated'](),controller[_0xf0a7('0x7')]);router[_0xf0a7('0x6')](_0xf0a7('0x8'),auth[_0xf0a7('0x9')](),controller[_0xf0a7('0xa')]);router['get'](_0xf0a7('0xb'),auth[_0xf0a7('0x9')](),controller['show']);router[_0xf0a7('0xc')]('/',auth[_0xf0a7('0x9')](),controller[_0xf0a7('0xd')]);router[_0xf0a7('0xe')](_0xf0a7('0xb'),auth[_0xf0a7('0x9')](),controller[_0xf0a7('0xf')]);router['delete'](_0xf0a7('0xb'),auth[_0xf0a7('0x9')](),controller[_0xf0a7('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xcb72=['destroy','exports','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','delete'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xcb72,0xde));var _0x2cb7=function(_0x39f657,_0x215f8e){_0x39f657=_0x39f657-0x0;var _0x30360d=_0xcb72[_0x39f657];return _0x30360d;};'use strict';var multer=require('multer');var util=require(_0x2cb7('0x0'));var path=require(_0x2cb7('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2cb7('0x2')]();var fs_extra=require(_0x2cb7('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2cb7('0x4'));var config=require(_0x2cb7('0x5'));var controller=require(_0x2cb7('0x6'));router[_0x2cb7('0x7')]('/',auth[_0x2cb7('0x8')](),controller[_0x2cb7('0x9')]);router['get'](_0x2cb7('0xa'),auth[_0x2cb7('0x8')](),controller[_0x2cb7('0xb')]);router[_0x2cb7('0x7')]('/:id',auth[_0x2cb7('0x8')](),controller[_0x2cb7('0xc')]);router['post']('/',auth[_0x2cb7('0x8')](),controller[_0x2cb7('0xd')]);router[_0x2cb7('0xe')](_0x2cb7('0xf'),auth[_0x2cb7('0x8')](),controller[_0x2cb7('0x10')]);router[_0x2cb7('0x11')](_0x2cb7('0xf'),auth[_0x2cb7('0x8')](),controller[_0x2cb7('0x12')]);module[_0x2cb7('0x13')]=router;
\ No newline at end of file
index c2fe676..2d0c994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4f29c2,_0x4a7b4b){var _0x5310b3=function(_0x236126){while(--_0x236126){_0x4f29c2['push'](_0x4f29c2['shift']());}};_0x5310b3(++_0x4a7b4b);}(_0x7a54,0x106));var _0x47a5=function(_0x11d322,_0x43790b){_0x11d322=_0x11d322-0x0;var _0x2c45c1=_0x7a54[_0x11d322];return _0x2c45c1;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x1f97fa,_0x34b5de){var _0xc170b=function(_0x10e343){while(--_0x10e343){_0x1f97fa['push'](_0x1f97fa['shift']());}};_0xc170b(++_0x34b5de);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 5890a27..81ddbb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f8=['filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','sort'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x57f8,0x198));var _0x857f=function(_0x20e5d4,_0x4ae460){_0x20e5d4=_0x20e5d4-0x0;var _0x54d52a=_0x57f8[_0x20e5d4];return _0x54d52a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x857f('0x0'));var zipdir=require(_0x857f('0x1'));var jsonpatch=require(_0x857f('0x2'));var rp=require(_0x857f('0x3'));var moment=require(_0x857f('0x4'));var BPromise=require(_0x857f('0x5'));var Mustache=require(_0x857f('0x6'));var util=require(_0x857f('0x7'));var path=require(_0x857f('0x8'));var sox=require(_0x857f('0x9'));var csv=require(_0x857f('0xa'));var ejs=require(_0x857f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x857f('0xc'));var squel=require(_0x857f('0xd'));var crypto=require(_0x857f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x857f('0xf'));var toCsv=require(_0x857f('0xa'));var querystring=require(_0x857f('0x10'));var Papa=require('papaparse');var Redis=require(_0x857f('0x11'));var authService=require(_0x857f('0x12'));var qs=require(_0x857f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x857f('0x14'));var logger=require(_0x857f('0x15'))(_0x857f('0x16'));var utils=require(_0x857f('0x17'));var config=require(_0x857f('0x18'));var licenseUtil=require(_0x857f('0x19'));var db=require(_0x857f('0x1a'))['db'];function respondWithStatusCode(_0x533631,_0x2e1eda){_0x2e1eda=_0x2e1eda||0xcc;return function(_0x2d5e26){if(_0x2d5e26){return _0x533631[_0x857f('0x1b')](_0x2e1eda);}return _0x533631[_0x857f('0x1c')](_0x2e1eda)[_0x857f('0x1d')]();};}function respondWithResult(_0x4a25ec,_0x4bc590){_0x4bc590=_0x4bc590||0xc8;return function(_0x3b09d9){if(_0x3b09d9){return _0x4a25ec['status'](_0x4bc590)[_0x857f('0x1e')](_0x3b09d9);}};}function respondWithFilteredResult(_0x4ac81f,_0x1d47bf){return function(_0x134a4f){if(_0x134a4f){var _0x5c3a69=typeof _0x1d47bf[_0x857f('0x1f')]===_0x857f('0x20')&&typeof _0x1d47bf[_0x857f('0x21')]===_0x857f('0x20');var _0x279e74=_0x134a4f[_0x857f('0x22')];var _0x1a9ef8=_0x5c3a69?0x0:_0x1d47bf[_0x857f('0x1f')];var _0x1014ca=_0x5c3a69?_0x134a4f[_0x857f('0x22')]:_0x1d47bf[_0x857f('0x1f')]+_0x1d47bf['limit'];var _0x1729d8;if(_0x1014ca>=_0x279e74){_0x1014ca=_0x279e74;_0x1729d8=0xc8;}else{_0x1729d8=0xce;}_0x4ac81f[_0x857f('0x1c')](_0x1729d8);return _0x4ac81f['set'](_0x857f('0x23'),_0x1a9ef8+'-'+_0x1014ca+'/'+_0x279e74)[_0x857f('0x1e')](_0x134a4f);}return null;};}function patchUpdates(_0x377587){return function(_0x484035){try{jsonpatch['apply'](_0x484035,_0x377587,!![]);}catch(_0x12ee77){return BPromise[_0x857f('0x24')](_0x12ee77);}return _0x484035[_0x857f('0x25')]();};}function saveUpdates(_0x4fa031,_0x118237){return function(_0x17a98e){if(_0x17a98e){return _0x17a98e[_0x857f('0x26')](_0x4fa031)['then'](function(_0x1961ea){return _0x1961ea;});}return null;};}function removeEntity(_0x14a8ce,_0x50bfb7){return function(_0x3bc543){if(_0x3bc543){return _0x3bc543[_0x857f('0x27')]()[_0x857f('0x28')](function(){_0x14a8ce[_0x857f('0x1c')](0xcc)[_0x857f('0x1d')]();});}};}function handleEntityNotFound(_0x3b23a7,_0x233a68){return function(_0x2a89ba){if(!_0x2a89ba){_0x3b23a7[_0x857f('0x1b')](0x194);}return _0x2a89ba;};}function handleError(_0xcd1ee9,_0x72f0aa){_0x72f0aa=_0x72f0aa||0x1f4;return function(_0x4782ab){logger[_0x857f('0x29')](_0x4782ab[_0x857f('0x2a')]);if(_0x4782ab['name']){delete _0x4782ab[_0x857f('0x2b')];}_0xcd1ee9[_0x857f('0x1c')](_0x72f0aa)[_0x857f('0x2c')](_0x4782ab);};}exports[_0x857f('0x2d')]=function(_0x58c2de,_0x40c306){var _0x57ceaa={},_0x1b405a={},_0x234048={'count':0x0,'rows':[]};var _0x45a37f=_[_0x857f('0x2e')](db[_0x857f('0x2f')][_0x857f('0x30')],function(_0x1c4fff){return{'name':_0x1c4fff[_0x857f('0x31')],'type':_0x1c4fff[_0x857f('0x32')][_0x857f('0x33')]};});_0x1b405a[_0x857f('0x34')]=_[_0x857f('0x2e')](_0x45a37f,_0x857f('0x2b'));_0x1b405a['query']=_[_0x857f('0x35')](_0x58c2de[_0x857f('0x36')]);_0x1b405a['filters']=_[_0x857f('0x37')](_0x1b405a[_0x857f('0x34')],_0x1b405a['query']);_0x57ceaa[_0x857f('0x38')]=_[_0x857f('0x37')](_0x1b405a['model'],qs[_0x857f('0x39')](_0x58c2de[_0x857f('0x36')][_0x857f('0x39')]));_0x57ceaa[_0x857f('0x38')]=_0x57ceaa['attributes']['length']?_0x57ceaa[_0x857f('0x38')]:_0x1b405a[_0x857f('0x34')];if(!_0x58c2de['query'][_0x857f('0x3a')]('nolimit')){_0x57ceaa[_0x857f('0x21')]=qs[_0x857f('0x21')](_0x58c2de[_0x857f('0x36')][_0x857f('0x21')]);_0x57ceaa[_0x857f('0x1f')]=qs['offset'](_0x58c2de['query'][_0x857f('0x1f')]);}_0x57ceaa['order']=qs[_0x857f('0x3b')](_0x58c2de[_0x857f('0x36')][_0x857f('0x3b')]);_0x57ceaa['where']=qs[_0x857f('0x3c')](_[_0x857f('0x3d')](_0x58c2de[_0x857f('0x36')],_0x1b405a[_0x857f('0x3c')]),_0x45a37f);if(_0x58c2de[_0x857f('0x36')][_0x857f('0x3e')]){_0x57ceaa[_0x857f('0x3f')]=_['merge'](_0x57ceaa[_0x857f('0x3f')],{'$or':_[_0x857f('0x2e')](_0x45a37f,function(_0x1f285c){if(_0x1f285c[_0x857f('0x32')]!==_0x857f('0x40')){var _0x2356fb={};_0x2356fb[_0x1f285c[_0x857f('0x2b')]]={'$like':'%'+_0x58c2de['query'][_0x857f('0x3e')]+'%'};return _0x2356fb;}})});}_0x57ceaa=_[_0x857f('0x41')]({},_0x57ceaa,_0x58c2de[_0x857f('0x42')]);var _0xc2ac41={'where':_0x57ceaa[_0x857f('0x3f')]};return db[_0x857f('0x2f')]['count'](_0xc2ac41)[_0x857f('0x28')](function(_0x354678){_0x234048[_0x857f('0x22')]=_0x354678;if(_0x58c2de[_0x857f('0x36')][_0x857f('0x43')]){_0x57ceaa[_0x857f('0x44')]=[{'all':!![]}];}return db[_0x857f('0x2f')][_0x857f('0x45')](_0x57ceaa);})['then'](function(_0x40fb37){_0x234048[_0x857f('0x46')]=_0x40fb37;return _0x234048;})[_0x857f('0x28')](respondWithFilteredResult(_0x40c306,_0x57ceaa))[_0x857f('0x47')](handleError(_0x40c306,null));};exports[_0x857f('0x48')]=function(_0x1bbf9f,_0x374b9f){var _0x42d922={'raw':!![],'where':{'id':_0x1bbf9f[_0x857f('0x49')]['id']}},_0xb4d7c2={};_0xb4d7c2[_0x857f('0x34')]=_[_0x857f('0x35')](db[_0x857f('0x2f')][_0x857f('0x30')]);_0xb4d7c2['query']=_[_0x857f('0x35')](_0x1bbf9f['query']);_0xb4d7c2[_0x857f('0x3c')]=_[_0x857f('0x37')](_0xb4d7c2[_0x857f('0x34')],_0xb4d7c2[_0x857f('0x36')]);_0x42d922[_0x857f('0x38')]=_[_0x857f('0x37')](_0xb4d7c2[_0x857f('0x34')],qs[_0x857f('0x39')](_0x1bbf9f[_0x857f('0x36')][_0x857f('0x39')]));_0x42d922[_0x857f('0x38')]=_0x42d922['attributes']['length']?_0x42d922[_0x857f('0x38')]:_0xb4d7c2['model'];if(_0x1bbf9f[_0x857f('0x36')]['includeAll']){_0x42d922[_0x857f('0x44')]=[{'all':!![]}];}_0x42d922=_[_0x857f('0x41')]({},_0x42d922,_0x1bbf9f[_0x857f('0x42')]);return db[_0x857f('0x2f')][_0x857f('0x4a')](_0x42d922)[_0x857f('0x28')](handleEntityNotFound(_0x374b9f,null))[_0x857f('0x28')](respondWithResult(_0x374b9f,null))[_0x857f('0x47')](handleError(_0x374b9f,null));};exports['create']=function(_0x42cf05,_0x3b431d){return db[_0x857f('0x2f')][_0x857f('0x4b')](_0x42cf05['body'],{})[_0x857f('0x28')](respondWithResult(_0x3b431d,0xc9))[_0x857f('0x47')](handleError(_0x3b431d,null));};exports[_0x857f('0x26')]=function(_0x736ef6,_0x67563){if(_0x736ef6['body']['id']){delete _0x736ef6[_0x857f('0x4c')]['id'];}return db[_0x857f('0x2f')]['find']({'where':{'id':_0x736ef6[_0x857f('0x49')]['id']}})[_0x857f('0x28')](handleEntityNotFound(_0x67563,null))['then'](saveUpdates(_0x736ef6[_0x857f('0x4c')],null))['then'](respondWithResult(_0x67563,null))[_0x857f('0x47')](handleError(_0x67563,null));};exports[_0x857f('0x27')]=function(_0x446fe9,_0x2008d5){return db[_0x857f('0x2f')][_0x857f('0x4a')]({'where':{'id':_0x446fe9[_0x857f('0x49')]['id']}})[_0x857f('0x28')](handleEntityNotFound(_0x2008d5,null))[_0x857f('0x28')](removeEntity(_0x2008d5,null))[_0x857f('0x47')](handleError(_0x2008d5,null));};exports['describe']=function(_0x5464f4,_0x13ef75){return db[_0x857f('0x2f')][_0x857f('0x4d')]()[_0x857f('0x28')](respondWithResult(_0x13ef75,null))[_0x857f('0x47')](handleError(_0x13ef75,null));};
\ No newline at end of file
+var _0x9348=['save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','WhatsappQueueReport','count','include','findAll','show','params','includeAll','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject'];(function(_0x3a167f,_0x56e95c){var _0x15f491=function(_0x50014b){while(--_0x50014b){_0x3a167f['push'](_0x3a167f['shift']());}};_0x15f491(++_0x56e95c);}(_0x9348,0x10d));var _0x8934=function(_0x27fedb,_0x31c693){_0x27fedb=_0x27fedb-0x0;var _0x58ab78=_0x9348[_0x27fedb];return _0x58ab78;};'use strict';var emlformat=require(_0x8934('0x0'));var rimraf=require(_0x8934('0x1'));var zipdir=require(_0x8934('0x2'));var jsonpatch=require(_0x8934('0x3'));var rp=require(_0x8934('0x4'));var moment=require('moment');var BPromise=require(_0x8934('0x5'));var Mustache=require(_0x8934('0x6'));var util=require('util');var path=require(_0x8934('0x7'));var sox=require(_0x8934('0x8'));var csv=require(_0x8934('0x9'));var ejs=require(_0x8934('0xa'));var fs=require('fs');var fs_extra=require(_0x8934('0xb'));var _=require(_0x8934('0xc'));var squel=require('squel');var crypto=require(_0x8934('0xd'));var jsforce=require(_0x8934('0xe'));var deskjs=require(_0x8934('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8934('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8934('0x11'));var hardwareService=require(_0x8934('0x12'));var logger=require(_0x8934('0x13'))(_0x8934('0x14'));var utils=require(_0x8934('0x15'));var config=require(_0x8934('0x16'));var licenseUtil=require(_0x8934('0x17'));var db=require(_0x8934('0x18'))['db'];function respondWithStatusCode(_0x4a999c,_0x68427d){_0x68427d=_0x68427d||0xcc;return function(_0x108eab){if(_0x108eab){return _0x4a999c[_0x8934('0x19')](_0x68427d);}return _0x4a999c[_0x8934('0x1a')](_0x68427d)[_0x8934('0x1b')]();};}function respondWithResult(_0xdf59f4,_0x5b560f){_0x5b560f=_0x5b560f||0xc8;return function(_0x254720){if(_0x254720){return _0xdf59f4[_0x8934('0x1a')](_0x5b560f)[_0x8934('0x1c')](_0x254720);}};}function respondWithFilteredResult(_0x94b948,_0x34d4dc){return function(_0x41e6a9){if(_0x41e6a9){var _0x2a5b04=typeof _0x34d4dc[_0x8934('0x1d')]==='undefined'&&typeof _0x34d4dc[_0x8934('0x1e')]===_0x8934('0x1f');var _0x261c78=_0x41e6a9['count'];var _0x47f25e=_0x2a5b04?0x0:_0x34d4dc['offset'];var _0x2ff9ce=_0x2a5b04?_0x41e6a9['count']:_0x34d4dc[_0x8934('0x1d')]+_0x34d4dc[_0x8934('0x1e')];var _0x14b4e4;if(_0x2ff9ce>=_0x261c78){_0x2ff9ce=_0x261c78;_0x14b4e4=0xc8;}else{_0x14b4e4=0xce;}_0x94b948[_0x8934('0x1a')](_0x14b4e4);return _0x94b948[_0x8934('0x20')]('Content-Range',_0x47f25e+'-'+_0x2ff9ce+'/'+_0x261c78)[_0x8934('0x1c')](_0x41e6a9);}return null;};}function patchUpdates(_0x5ae49f){return function(_0x476c6c){try{jsonpatch[_0x8934('0x21')](_0x476c6c,_0x5ae49f,!![]);}catch(_0x1ccbe5){return BPromise[_0x8934('0x22')](_0x1ccbe5);}return _0x476c6c[_0x8934('0x23')]();};}function saveUpdates(_0x331e18,_0x36fe20){return function(_0x4f4a9b){if(_0x4f4a9b){return _0x4f4a9b[_0x8934('0x24')](_0x331e18)[_0x8934('0x25')](function(_0x32020a){return _0x32020a;});}return null;};}function removeEntity(_0x343e09,_0x43b89a){return function(_0x5e593b){if(_0x5e593b){return _0x5e593b[_0x8934('0x26')]()[_0x8934('0x25')](function(){_0x343e09[_0x8934('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16cfc2,_0x561df2){return function(_0x14c5f0){if(!_0x14c5f0){_0x16cfc2[_0x8934('0x19')](0x194);}return _0x14c5f0;};}function handleError(_0x110f7f,_0x5ef0ed){_0x5ef0ed=_0x5ef0ed||0x1f4;return function(_0x1fd5eb){logger[_0x8934('0x27')](_0x1fd5eb[_0x8934('0x28')]);if(_0x1fd5eb[_0x8934('0x29')]){delete _0x1fd5eb['name'];}_0x110f7f[_0x8934('0x1a')](_0x5ef0ed)[_0x8934('0x2a')](_0x1fd5eb);};}exports[_0x8934('0x2b')]=function(_0x3d93c7,_0x44972b){var _0x20d448={},_0x3f328a={},_0x457634={'count':0x0,'rows':[]};var _0x9c6a71=_[_0x8934('0x2c')](db['WhatsappQueueReport'][_0x8934('0x2d')],function(_0x3e973e){return{'name':_0x3e973e['fieldName'],'type':_0x3e973e[_0x8934('0x2e')][_0x8934('0x2f')]};});_0x3f328a[_0x8934('0x30')]=_[_0x8934('0x2c')](_0x9c6a71,'name');_0x3f328a[_0x8934('0x31')]=_[_0x8934('0x32')](_0x3d93c7[_0x8934('0x31')]);_0x3f328a[_0x8934('0x33')]=_[_0x8934('0x34')](_0x3f328a['model'],_0x3f328a[_0x8934('0x31')]);_0x20d448['attributes']=_['intersection'](_0x3f328a[_0x8934('0x30')],qs[_0x8934('0x35')](_0x3d93c7[_0x8934('0x31')][_0x8934('0x35')]));_0x20d448['attributes']=_0x20d448[_0x8934('0x36')][_0x8934('0x37')]?_0x20d448[_0x8934('0x36')]:_0x3f328a[_0x8934('0x30')];if(!_0x3d93c7[_0x8934('0x31')]['hasOwnProperty'](_0x8934('0x38'))){_0x20d448[_0x8934('0x1e')]=qs['limit'](_0x3d93c7['query'][_0x8934('0x1e')]);_0x20d448[_0x8934('0x1d')]=qs['offset'](_0x3d93c7['query'][_0x8934('0x1d')]);}_0x20d448[_0x8934('0x39')]=qs[_0x8934('0x3a')](_0x3d93c7[_0x8934('0x31')][_0x8934('0x3a')]);_0x20d448[_0x8934('0x3b')]=qs[_0x8934('0x33')](_[_0x8934('0x3c')](_0x3d93c7[_0x8934('0x31')],_0x3f328a[_0x8934('0x33')]),_0x9c6a71);if(_0x3d93c7[_0x8934('0x31')]['filter']){_0x20d448[_0x8934('0x3b')]=_[_0x8934('0x3d')](_0x20d448['where'],{'$or':_[_0x8934('0x2c')](_0x9c6a71,function(_0x122ad1){if(_0x122ad1[_0x8934('0x2e')]!==_0x8934('0x3e')){var _0xb189f1={};_0xb189f1[_0x122ad1['name']]={'$like':'%'+_0x3d93c7['query']['filter']+'%'};return _0xb189f1;}})});}_0x20d448=_[_0x8934('0x3d')]({},_0x20d448,_0x3d93c7[_0x8934('0x3f')]);var _0x8814f6={'where':_0x20d448['where']};return db[_0x8934('0x40')]['count'](_0x8814f6)['then'](function(_0x332098){_0x457634[_0x8934('0x41')]=_0x332098;if(_0x3d93c7['query']['includeAll']){_0x20d448[_0x8934('0x42')]=[{'all':!![]}];}return db[_0x8934('0x40')][_0x8934('0x43')](_0x20d448);})['then'](function(_0x46bfe7){_0x457634['rows']=_0x46bfe7;return _0x457634;})[_0x8934('0x25')](respondWithFilteredResult(_0x44972b,_0x20d448))['catch'](handleError(_0x44972b,null));};exports[_0x8934('0x44')]=function(_0x476ed9,_0x83be9e){var _0x566d67={'raw':!![],'where':{'id':_0x476ed9[_0x8934('0x45')]['id']}},_0xefdfab={};_0xefdfab[_0x8934('0x30')]=_[_0x8934('0x32')](db['WhatsappQueueReport'][_0x8934('0x2d')]);_0xefdfab[_0x8934('0x31')]=_[_0x8934('0x32')](_0x476ed9[_0x8934('0x31')]);_0xefdfab[_0x8934('0x33')]=_[_0x8934('0x34')](_0xefdfab[_0x8934('0x30')],_0xefdfab[_0x8934('0x31')]);_0x566d67['attributes']=_['intersection'](_0xefdfab['model'],qs[_0x8934('0x35')](_0x476ed9[_0x8934('0x31')]['fields']));_0x566d67[_0x8934('0x36')]=_0x566d67['attributes'][_0x8934('0x37')]?_0x566d67[_0x8934('0x36')]:_0xefdfab['model'];if(_0x476ed9[_0x8934('0x31')][_0x8934('0x46')]){_0x566d67[_0x8934('0x42')]=[{'all':!![]}];}_0x566d67=_[_0x8934('0x3d')]({},_0x566d67,_0x476ed9['options']);return db[_0x8934('0x40')][_0x8934('0x47')](_0x566d67)['then'](handleEntityNotFound(_0x83be9e,null))[_0x8934('0x25')](respondWithResult(_0x83be9e,null))[_0x8934('0x48')](handleError(_0x83be9e,null));};exports[_0x8934('0x49')]=function(_0x2d5c6a,_0x406d0a){return db[_0x8934('0x40')][_0x8934('0x49')](_0x2d5c6a[_0x8934('0x4a')],{})[_0x8934('0x25')](respondWithResult(_0x406d0a,0xc9))[_0x8934('0x48')](handleError(_0x406d0a,null));};exports[_0x8934('0x24')]=function(_0xe212bc,_0x2c322d){if(_0xe212bc[_0x8934('0x4a')]['id']){delete _0xe212bc[_0x8934('0x4a')]['id'];}return db[_0x8934('0x40')][_0x8934('0x47')]({'where':{'id':_0xe212bc[_0x8934('0x45')]['id']}})['then'](handleEntityNotFound(_0x2c322d,null))[_0x8934('0x25')](saveUpdates(_0xe212bc[_0x8934('0x4a')],null))['then'](respondWithResult(_0x2c322d,null))['catch'](handleError(_0x2c322d,null));};exports['destroy']=function(_0x4bc431,_0x3610a0){return db[_0x8934('0x40')][_0x8934('0x47')]({'where':{'id':_0x4bc431['params']['id']}})['then'](handleEntityNotFound(_0x3610a0,null))[_0x8934('0x25')](removeEntity(_0x3610a0,null))['catch'](handleError(_0x3610a0,null));};exports['describe']=function(_0xce93cd,_0x2778f9){return db[_0x8934('0x40')][_0x8934('0x4b')]()[_0x8934('0x25')](respondWithResult(_0x2778f9,null))[_0x8934('0x48')](handleError(_0x2778f9,null));};
\ No newline at end of file
index 0f4e9aa..0196ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2cc=['moment','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','uniqueid','lodash','util','../../config/logger'];(function(_0x46fbce,_0x199584){var _0x1e9a7e=function(_0x11866c){while(--_0x11866c){_0x46fbce['push'](_0x46fbce['shift']());}};_0x1e9a7e(++_0x199584);}(_0xb2cc,0xf9));var _0xcb2c=function(_0x58d98a,_0x3040c3){_0x58d98a=_0x58d98a-0x0;var _0x4274ba=_0xb2cc[_0x58d98a];return _0x4274ba;};'use strict';var _=require(_0xcb2c('0x0'));var util=require(_0xcb2c('0x1'));var logger=require(_0xcb2c('0x2'))('api');var moment=require(_0xcb2c('0x3'));var BPromise=require(_0xcb2c('0x4'));var rp=require(_0xcb2c('0x5'));var fs=require('fs');var path=require(_0xcb2c('0x6'));var rimraf=require('rimraf');var config=require(_0xcb2c('0x7'));var attributes=require(_0xcb2c('0x8'));module[_0xcb2c('0x9')]=function(_0x21d38c,_0x2682fe){return _0x21d38c['define'](_0xcb2c('0xa'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0xcb2c('0xb'),'fields':[_0xcb2c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc994=['rimraf','../../config/environment','./whatsappQueueReport.attributes','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','moment','bluebird','request-promise','path'];(function(_0x96f487,_0x5edd96){var _0xef8119=function(_0x23885a){while(--_0x23885a){_0x96f487['push'](_0x96f487['shift']());}};_0xef8119(++_0x5edd96);}(_0xc994,0x1c3));var _0x4c99=function(_0x1c0705,_0x453b20){_0x1c0705=_0x1c0705-0x0;var _0xfab99d=_0xc994[_0x1c0705];return _0xfab99d;};'use strict';var _=require(_0x4c99('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x4c99('0x1'));var BPromise=require(_0x4c99('0x2'));var rp=require(_0x4c99('0x3'));var fs=require('fs');var path=require(_0x4c99('0x4'));var rimraf=require(_0x4c99('0x5'));var config=require(_0x4c99('0x6'));var attributes=require(_0x4c99('0x7'));module['exports']=function(_0x3858df,_0x375b21){return _0x3858df[_0x4c99('0x8')](_0x4c99('0x9'),attributes,{'tableName':_0x4c99('0xa'),'paranoid':![],'indexes':[{'name':_0x4c99('0xb'),'fields':[_0x4c99('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index bdd89e2..58f39ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe688=['../../config/environment','client','http','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','then','UpdateWhatsappQueueReport','update','where','attributes','util','moment','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0xe688,0x144));var _0x8e68=function(_0xad859e,_0x262932){_0xad859e=_0xad859e-0x0;var _0x26d938=_0xe688[_0xad859e];return _0x26d938;};'use strict';var _=require('lodash');var util=require(_0x8e68('0x0'));var moment=require(_0x8e68('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8e68('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8e68('0x3'));var logger=require(_0x8e68('0x4'))(_0x8e68('0x5'));var config=require(_0x8e68('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8e68('0x7')][_0x8e68('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x240027,_0x46af2a,_0x2082aa){return new BPromise(function(_0x4e4023,_0x1c53b5){return client['request'](_0x240027,_0x2082aa)['then'](function(_0x157ac7){logger[_0x8e68('0x9')](_0x8e68('0xa'),_0x46af2a,_0x8e68('0xb'));logger[_0x8e68('0xc')](_0x8e68('0xd'),_0x46af2a,_0x8e68('0xb'),JSON[_0x8e68('0xe')](_0x157ac7));if(_0x157ac7[_0x8e68('0xf')]){if(_0x157ac7['error'][_0x8e68('0x10')]===0x1f4){logger[_0x8e68('0xf')](_0x8e68('0xa'),_0x46af2a,_0x157ac7['error']['message']);return _0x1c53b5(_0x157ac7[_0x8e68('0xf')][_0x8e68('0x11')]);}logger[_0x8e68('0xf')](_0x8e68('0xa'),_0x46af2a,_0x157ac7[_0x8e68('0xf')][_0x8e68('0x11')]);return _0x4e4023(_0x157ac7['error'][_0x8e68('0x11')]);}else{logger[_0x8e68('0x9')]('WhatsappQueueReport,\x20%s,\x20%s',_0x46af2a,'request\x20sent');_0x4e4023(_0x157ac7[_0x8e68('0x12')]['message']);}})[_0x8e68('0x13')](function(_0x15c319){logger[_0x8e68('0xf')](_0x8e68('0xa'),_0x46af2a,_0x15c319);_0x1c53b5(_0x15c319);});});}exports[_0x8e68('0x14')]=function(_0x738f42){var _0xa0d1eb=this;return new Promise(function(_0x12ac5c,_0x2206b6){return db[_0x8e68('0x15')]['create'](_0x738f42[_0x8e68('0x16')],{'raw':_0x738f42[_0x8e68('0x17')]?_0x738f42[_0x8e68('0x17')][_0x8e68('0x18')]===undefined?!![]:![]:!![]})[_0x8e68('0x19')](function(_0x1f9b99){logger[_0x8e68('0x9')](_0x8e68('0x14'),_0x738f42);logger[_0x8e68('0xc')]('CreateWhatsappQueueReport',_0x738f42,JSON[_0x8e68('0xe')](_0x1f9b99));_0x12ac5c(_0x1f9b99);})[_0x8e68('0x13')](function(_0x2c1d7e){logger[_0x8e68('0xf')](_0x8e68('0x14'),_0x2c1d7e[_0x8e68('0x11')],_0x738f42);_0x2206b6(_0xa0d1eb[_0x8e68('0xf')](0x1f4,_0x2c1d7e[_0x8e68('0x11')]));});});};exports[_0x8e68('0x1a')]=function(_0x1d088d){var _0x5a6832=this;return new Promise(function(_0x3b3cda,_0x3cd96f){return db[_0x8e68('0x15')][_0x8e68('0x1b')](_0x1d088d[_0x8e68('0x16')],{'raw':_0x1d088d['options']?_0x1d088d[_0x8e68('0x17')][_0x8e68('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d088d[_0x8e68('0x17')]?_0x1d088d[_0x8e68('0x17')][_0x8e68('0x1c')]||null:null,'attributes':_0x1d088d[_0x8e68('0x17')]?_0x1d088d[_0x8e68('0x17')][_0x8e68('0x1d')]||null:null,'limit':_0x1d088d[_0x8e68('0x17')]?_0x1d088d[_0x8e68('0x17')]['limit']||null:null})[_0x8e68('0x19')](function(_0x4b18ed){logger[_0x8e68('0x9')]('UpdateWhatsappQueueReport',_0x1d088d);logger[_0x8e68('0xc')](_0x8e68('0x1a'),_0x1d088d,JSON[_0x8e68('0xe')](_0x4b18ed));_0x3b3cda(_0x4b18ed);})[_0x8e68('0x13')](function(_0x3b41c6){logger['error'](_0x8e68('0x1a'),_0x3b41c6['message'],_0x1d088d);_0x3cd96f(_0x5a6832[_0x8e68('0xf')](0x1f4,_0x3b41c6[_0x8e68('0x11')]));});});};
\ No newline at end of file
+var _0xca05=['where','attributes','limit','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','then','debug','catch','UpdateWhatsappQueueReport'];(function(_0x1aaa00,_0x245138){var _0x4be822=function(_0x249c61){while(--_0x249c61){_0x1aaa00['push'](_0x1aaa00['shift']());}};_0x4be822(++_0x245138);}(_0xca05,0x80));var _0x5ca0=function(_0xba1760,_0x191969){_0xba1760=_0xba1760-0x0;var _0x1f3143=_0xca05[_0xba1760];return _0x1f3143;};'use strict';var _=require(_0x5ca0('0x0'));var util=require(_0x5ca0('0x1'));var moment=require(_0x5ca0('0x2'));var BPromise=require(_0x5ca0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ca0('0x4'))['db'];var utils=require(_0x5ca0('0x5'));var logger=require(_0x5ca0('0x6'))(_0x5ca0('0x7'));var config=require(_0x5ca0('0x8'));var jayson=require(_0x5ca0('0x9'));var client=jayson[_0x5ca0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10b9e6,_0x23167d,_0xecbd41){return new BPromise(function(_0x1caba0,_0x43ffc8){return client[_0x5ca0('0xb')](_0x10b9e6,_0xecbd41)['then'](function(_0x449bf7){logger[_0x5ca0('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x23167d,_0x5ca0('0xd'));logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x23167d,_0x5ca0('0xd'),JSON['stringify'](_0x449bf7));if(_0x449bf7[_0x5ca0('0xe')]){if(_0x449bf7[_0x5ca0('0xe')][_0x5ca0('0xf')]===0x1f4){logger['error'](_0x5ca0('0x10'),_0x23167d,_0x449bf7[_0x5ca0('0xe')]['message']);return _0x43ffc8(_0x449bf7[_0x5ca0('0xe')]['message']);}logger[_0x5ca0('0xe')](_0x5ca0('0x10'),_0x23167d,_0x449bf7[_0x5ca0('0xe')][_0x5ca0('0x11')]);return _0x1caba0(_0x449bf7[_0x5ca0('0xe')][_0x5ca0('0x11')]);}else{logger[_0x5ca0('0xc')](_0x5ca0('0x10'),_0x23167d,_0x5ca0('0xd'));_0x1caba0(_0x449bf7['result'][_0x5ca0('0x11')]);}})['catch'](function(_0xb586aa){logger['error'](_0x5ca0('0x10'),_0x23167d,_0xb586aa);_0x43ffc8(_0xb586aa);});});}exports[_0x5ca0('0x12')]=function(_0x54fc5c){var _0x36dbbe=this;return new Promise(function(_0x42486a,_0x47f9dd){return db[_0x5ca0('0x13')][_0x5ca0('0x14')](_0x54fc5c[_0x5ca0('0x15')],{'raw':_0x54fc5c['options']?_0x54fc5c[_0x5ca0('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x5ca0('0x17')](function(_0x2fb59c){logger[_0x5ca0('0xc')]('CreateWhatsappQueueReport',_0x54fc5c);logger[_0x5ca0('0x18')](_0x5ca0('0x12'),_0x54fc5c,JSON['stringify'](_0x2fb59c));_0x42486a(_0x2fb59c);})[_0x5ca0('0x19')](function(_0x2c3a77){logger[_0x5ca0('0xe')](_0x5ca0('0x12'),_0x2c3a77[_0x5ca0('0x11')],_0x54fc5c);_0x47f9dd(_0x36dbbe[_0x5ca0('0xe')](0x1f4,_0x2c3a77[_0x5ca0('0x11')]));});});};exports[_0x5ca0('0x1a')]=function(_0x55e701){var _0x498a6d=this;return new Promise(function(_0x378f07,_0x2709b7){return db[_0x5ca0('0x13')]['update'](_0x55e701[_0x5ca0('0x15')],{'raw':_0x55e701[_0x5ca0('0x16')]?_0x55e701[_0x5ca0('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55e701[_0x5ca0('0x16')]?_0x55e701[_0x5ca0('0x16')][_0x5ca0('0x1b')]||null:null,'attributes':_0x55e701[_0x5ca0('0x16')]?_0x55e701['options'][_0x5ca0('0x1c')]||null:null,'limit':_0x55e701['options']?_0x55e701[_0x5ca0('0x16')][_0x5ca0('0x1d')]||null:null})[_0x5ca0('0x17')](function(_0x1fdaf6){logger[_0x5ca0('0xc')](_0x5ca0('0x1a'),_0x55e701);logger['debug']('UpdateWhatsappQueueReport',_0x55e701,JSON[_0x5ca0('0x1e')](_0x1fdaf6));_0x378f07(_0x1fdaf6);})[_0x5ca0('0x19')](function(_0x5afd06){logger[_0x5ca0('0xe')]('UpdateWhatsappQueueReport',_0x5afd06[_0x5ca0('0x11')],_0x55e701);_0x2709b7(_0x498a6d[_0x5ca0('0xe')](0x1f4,_0x5afd06[_0x5ca0('0x11')]));});});};
\ No newline at end of file
index db941cc..317ca43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5c=['show','post','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xad5c,0x7a));var _0xcad5=function(_0xef0cd6,_0x468c3c){_0xef0cd6=_0xef0cd6-0x0;var _0x2461f4=_0xad5c[_0xef0cd6];return _0x2461f4;};'use strict';var multer=require(_0xcad5('0x0'));var util=require('util');var path=require(_0xcad5('0x1'));var timeout=require(_0xcad5('0x2'));var express=require(_0xcad5('0x3'));var router=express[_0xcad5('0x4')]();var fs_extra=require(_0xcad5('0x5'));var auth=require(_0xcad5('0x6'));var interaction=require(_0xcad5('0x7'));var config=require(_0xcad5('0x8'));var controller=require(_0xcad5('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xcad5('0xa')]);router[_0xcad5('0xb')](_0xcad5('0xc'),auth[_0xcad5('0xd')](),controller[_0xcad5('0xe')]);router[_0xcad5('0xb')](_0xcad5('0xf'),auth[_0xcad5('0xd')](),controller[_0xcad5('0x10')]);router[_0xcad5('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0xcad5('0x12')](_0xcad5('0xf'),auth[_0xcad5('0xd')](),controller[_0xcad5('0x13')]);router[_0xcad5('0x14')](_0xcad5('0xf'),auth[_0xcad5('0xd')](),controller[_0xcad5('0x15')]);module[_0xcad5('0x16')]=router;
\ No newline at end of file
+var _0x8329=['/describe','isAuthenticated','describe','show','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','index','get'];(function(_0x5ef521,_0x462391){var _0x4ec811=function(_0x554503){while(--_0x554503){_0x5ef521['push'](_0x5ef521['shift']());}};_0x4ec811(++_0x462391);}(_0x8329,0xed));var _0x9832=function(_0x42203a,_0x28fa12){_0x42203a=_0x42203a-0x0;var _0x1b6fc9=_0x8329[_0x42203a];return _0x1b6fc9;};'use strict';var multer=require(_0x9832('0x0'));var util=require(_0x9832('0x1'));var path=require(_0x9832('0x2'));var timeout=require(_0x9832('0x3'));var express=require('express');var router=express[_0x9832('0x4')]();var fs_extra=require(_0x9832('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9832('0x6'));var config=require(_0x9832('0x7'));var controller=require('./whatsappTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x9832('0x8')]);router[_0x9832('0x9')](_0x9832('0xa'),auth[_0x9832('0xb')](),controller[_0x9832('0xc')]);router[_0x9832('0x9')]('/:id',auth[_0x9832('0xb')](),controller[_0x9832('0xd')]);router[_0x9832('0xe')]('/',auth[_0x9832('0xb')](),controller[_0x9832('0xf')]);router[_0x9832('0x10')]('/:id',auth[_0x9832('0xb')](),controller[_0x9832('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x9832('0x12')]=router;
\ No newline at end of file
index 7c596b5..ca934df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbca0=['exports','agent','queue','DATE','sequelize'];(function(_0x2e314c,_0x1e23bc){var _0x3470bd=function(_0x168244){while(--_0x168244){_0x2e314c['push'](_0x2e314c['shift']());}};_0x3470bd(++_0x1e23bc);}(_0xbca0,0x8b));var _0x0bca=function(_0x571a96,_0x5d1034){_0x571a96=_0x571a96-0x0;var _0x506d60=_0xbca0[_0x571a96];return _0x506d60;};'use strict';var Sequelize=require(_0x0bca('0x0'));module[_0x0bca('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('account',_0x0bca('0x2'),_0x0bca('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x0bca('0x4')]}};
\ No newline at end of file
+var _0xb077=['queue','DATE','sequelize','ENUM','agent'];(function(_0x2aa7b5,_0x3acbfb){var _0x4fb99e=function(_0x2a4196){while(--_0x2a4196){_0x2aa7b5['push'](_0x2aa7b5['shift']());}};_0x4fb99e(++_0x3acbfb);}(_0xb077,0x7a));var _0x7b07=function(_0x1c0897,_0x244222){_0x1c0897=_0x1c0897-0x0;var _0x7806c0=_0xb077[_0x1c0897];return _0x7806c0;};'use strict';var Sequelize=require(_0x7b07('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x7b07('0x1')]('account',_0x7b07('0x2'),_0x7b07('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x7b07('0x4')]}};
\ No newline at end of file
index 355dbe3..c6726a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8e6=['filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','send','index','WhatsappTransferReport','fieldName','key','model','map','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x7a0641,_0x453180){var _0x485e82=function(_0x2a2784){while(--_0x2a2784){_0x7a0641['push'](_0x7a0641['shift']());}};_0x485e82(++_0x453180);}(_0xd8e6,0xb7));var _0x6d8e=function(_0x328886,_0x1faa46){_0x328886=_0x328886-0x0;var _0x1d0e73=_0xd8e6[_0x328886];return _0x1d0e73;};'use strict';var emlformat=require(_0x6d8e('0x0'));var rimraf=require(_0x6d8e('0x1'));var zipdir=require(_0x6d8e('0x2'));var jsonpatch=require(_0x6d8e('0x3'));var rp=require(_0x6d8e('0x4'));var moment=require('moment');var BPromise=require(_0x6d8e('0x5'));var Mustache=require(_0x6d8e('0x6'));var util=require('util');var path=require(_0x6d8e('0x7'));var sox=require(_0x6d8e('0x8'));var csv=require(_0x6d8e('0x9'));var ejs=require(_0x6d8e('0xa'));var fs=require('fs');var fs_extra=require(_0x6d8e('0xb'));var _=require(_0x6d8e('0xc'));var squel=require(_0x6d8e('0xd'));var crypto=require(_0x6d8e('0xe'));var jsforce=require(_0x6d8e('0xf'));var deskjs=require(_0x6d8e('0x10'));var toCsv=require(_0x6d8e('0x9'));var querystring=require(_0x6d8e('0x11'));var Papa=require(_0x6d8e('0x12'));var Redis=require(_0x6d8e('0x13'));var authService=require(_0x6d8e('0x14'));var qs=require(_0x6d8e('0x15'));var as=require(_0x6d8e('0x16'));var hardwareService=require(_0x6d8e('0x17'));var logger=require(_0x6d8e('0x18'))(_0x6d8e('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6d8e('0x1a'));var db=require(_0x6d8e('0x1b'))['db'];function respondWithStatusCode(_0x3031e1,_0x2b141f){_0x2b141f=_0x2b141f||0xcc;return function(_0x5e0049){if(_0x5e0049){return _0x3031e1[_0x6d8e('0x1c')](_0x2b141f);}return _0x3031e1[_0x6d8e('0x1d')](_0x2b141f)[_0x6d8e('0x1e')]();};}function respondWithResult(_0x3057e8,_0x10ec80){_0x10ec80=_0x10ec80||0xc8;return function(_0x107c9b){if(_0x107c9b){return _0x3057e8[_0x6d8e('0x1d')](_0x10ec80)[_0x6d8e('0x1f')](_0x107c9b);}};}function respondWithFilteredResult(_0x362f52,_0x47644b){return function(_0xa14a1){if(_0xa14a1){var _0x418567=typeof _0x47644b[_0x6d8e('0x20')]===_0x6d8e('0x21')&&typeof _0x47644b[_0x6d8e('0x22')]===_0x6d8e('0x21');var _0x47cbf2=_0xa14a1[_0x6d8e('0x23')];var _0x5022d4=_0x418567?0x0:_0x47644b[_0x6d8e('0x20')];var _0x3ccd9b=_0x418567?_0xa14a1['count']:_0x47644b[_0x6d8e('0x20')]+_0x47644b[_0x6d8e('0x22')];var _0x4cd989;if(_0x3ccd9b>=_0x47cbf2){_0x3ccd9b=_0x47cbf2;_0x4cd989=0xc8;}else{_0x4cd989=0xce;}_0x362f52[_0x6d8e('0x1d')](_0x4cd989);return _0x362f52[_0x6d8e('0x24')](_0x6d8e('0x25'),_0x5022d4+'-'+_0x3ccd9b+'/'+_0x47cbf2)[_0x6d8e('0x1f')](_0xa14a1);}return null;};}function patchUpdates(_0x201355){return function(_0x11d42e){try{jsonpatch[_0x6d8e('0x26')](_0x11d42e,_0x201355,!![]);}catch(_0x7d17b3){return BPromise['reject'](_0x7d17b3);}return _0x11d42e[_0x6d8e('0x27')]();};}function saveUpdates(_0x467887,_0x3268ca){return function(_0x23a604){if(_0x23a604){return _0x23a604[_0x6d8e('0x28')](_0x467887)[_0x6d8e('0x29')](function(_0xa26158){return _0xa26158;});}return null;};}function removeEntity(_0x49efc8,_0x3276c9){return function(_0x6e9cec){if(_0x6e9cec){return _0x6e9cec[_0x6d8e('0x2a')]()['then'](function(){_0x49efc8[_0x6d8e('0x1d')](0xcc)[_0x6d8e('0x1e')]();});}};}function handleEntityNotFound(_0x43339b,_0x13ada5){return function(_0x53655c){if(!_0x53655c){_0x43339b[_0x6d8e('0x1c')](0x194);}return _0x53655c;};}function handleError(_0x263d8e,_0xf37b5b){_0xf37b5b=_0xf37b5b||0x1f4;return function(_0xeeb611){logger[_0x6d8e('0x2b')](_0xeeb611[_0x6d8e('0x2c')]);if(_0xeeb611['name']){delete _0xeeb611['name'];}_0x263d8e['status'](_0xf37b5b)[_0x6d8e('0x2d')](_0xeeb611);};}exports[_0x6d8e('0x2e')]=function(_0x4b1d6a,_0x4d86f6){var _0x483887={},_0x1b16b7={},_0x177088={'count':0x0,'rows':[]};var _0x49423b=_['map'](db[_0x6d8e('0x2f')]['rawAttributes'],function(_0x36f11c){return{'name':_0x36f11c[_0x6d8e('0x30')],'type':_0x36f11c['type'][_0x6d8e('0x31')]};});_0x1b16b7[_0x6d8e('0x32')]=_[_0x6d8e('0x33')](_0x49423b,_0x6d8e('0x34'));_0x1b16b7['query']=_[_0x6d8e('0x35')](_0x4b1d6a[_0x6d8e('0x36')]);_0x1b16b7['filters']=_[_0x6d8e('0x37')](_0x1b16b7[_0x6d8e('0x32')],_0x1b16b7[_0x6d8e('0x36')]);_0x483887[_0x6d8e('0x38')]=_[_0x6d8e('0x37')](_0x1b16b7[_0x6d8e('0x32')],qs[_0x6d8e('0x39')](_0x4b1d6a[_0x6d8e('0x36')][_0x6d8e('0x39')]));_0x483887[_0x6d8e('0x38')]=_0x483887[_0x6d8e('0x38')][_0x6d8e('0x3a')]?_0x483887['attributes']:_0x1b16b7[_0x6d8e('0x32')];if(!_0x4b1d6a[_0x6d8e('0x36')][_0x6d8e('0x3b')](_0x6d8e('0x3c'))){_0x483887[_0x6d8e('0x22')]=qs[_0x6d8e('0x22')](_0x4b1d6a[_0x6d8e('0x36')][_0x6d8e('0x22')]);_0x483887[_0x6d8e('0x20')]=qs[_0x6d8e('0x20')](_0x4b1d6a[_0x6d8e('0x36')]['offset']);}_0x483887[_0x6d8e('0x3d')]=qs[_0x6d8e('0x3e')](_0x4b1d6a[_0x6d8e('0x36')][_0x6d8e('0x3e')]);_0x483887[_0x6d8e('0x3f')]=qs[_0x6d8e('0x40')](_[_0x6d8e('0x41')](_0x4b1d6a[_0x6d8e('0x36')],_0x1b16b7[_0x6d8e('0x40')]),_0x49423b);if(_0x4b1d6a['query'][_0x6d8e('0x42')]){_0x483887[_0x6d8e('0x3f')]=_[_0x6d8e('0x43')](_0x483887[_0x6d8e('0x3f')],{'$or':_['map'](_0x49423b,function(_0x4033ff){if(_0x4033ff[_0x6d8e('0x44')]!==_0x6d8e('0x45')){var _0x5b221a={};_0x5b221a[_0x4033ff['name']]={'$like':'%'+_0x4b1d6a[_0x6d8e('0x36')][_0x6d8e('0x42')]+'%'};return _0x5b221a;}})});}_0x483887=_['merge']({},_0x483887,_0x4b1d6a[_0x6d8e('0x46')]);var _0xb5fd0b={'where':_0x483887['where']};return db[_0x6d8e('0x2f')][_0x6d8e('0x23')](_0xb5fd0b)[_0x6d8e('0x29')](function(_0x14dea8){_0x177088['count']=_0x14dea8;if(_0x4b1d6a[_0x6d8e('0x36')][_0x6d8e('0x47')]){_0x483887[_0x6d8e('0x48')]=[{'all':!![]}];}return db[_0x6d8e('0x2f')][_0x6d8e('0x49')](_0x483887);})[_0x6d8e('0x29')](function(_0x2a5c19){_0x177088[_0x6d8e('0x4a')]=_0x2a5c19;return _0x177088;})['then'](respondWithFilteredResult(_0x4d86f6,_0x483887))[_0x6d8e('0x4b')](handleError(_0x4d86f6,null));};exports[_0x6d8e('0x4c')]=function(_0x38cba0,_0x2cba6d){var _0x3b240a={'raw':!![],'where':{'id':_0x38cba0['params']['id']}},_0x3acac1={};_0x3acac1['model']=_[_0x6d8e('0x35')](db[_0x6d8e('0x2f')][_0x6d8e('0x4d')]);_0x3acac1[_0x6d8e('0x36')]=_['keys'](_0x38cba0[_0x6d8e('0x36')]);_0x3acac1[_0x6d8e('0x40')]=_[_0x6d8e('0x37')](_0x3acac1[_0x6d8e('0x32')],_0x3acac1[_0x6d8e('0x36')]);_0x3b240a['attributes']=_['intersection'](_0x3acac1['model'],qs[_0x6d8e('0x39')](_0x38cba0[_0x6d8e('0x36')]['fields']));_0x3b240a[_0x6d8e('0x38')]=_0x3b240a[_0x6d8e('0x38')]['length']?_0x3b240a['attributes']:_0x3acac1[_0x6d8e('0x32')];if(_0x38cba0[_0x6d8e('0x36')][_0x6d8e('0x47')]){_0x3b240a[_0x6d8e('0x48')]=[{'all':!![]}];}_0x3b240a=_[_0x6d8e('0x43')]({},_0x3b240a,_0x38cba0[_0x6d8e('0x46')]);return db[_0x6d8e('0x2f')][_0x6d8e('0x4e')](_0x3b240a)['then'](handleEntityNotFound(_0x2cba6d,null))[_0x6d8e('0x29')](respondWithResult(_0x2cba6d,null))[_0x6d8e('0x4b')](handleError(_0x2cba6d,null));};exports[_0x6d8e('0x4f')]=function(_0x409e5a,_0x387d9f){return db[_0x6d8e('0x2f')][_0x6d8e('0x4f')](_0x409e5a['body'],{})['then'](respondWithResult(_0x387d9f,0xc9))[_0x6d8e('0x4b')](handleError(_0x387d9f,null));};exports[_0x6d8e('0x28')]=function(_0x510668,_0x404c4e){if(_0x510668[_0x6d8e('0x50')]['id']){delete _0x510668['body']['id'];}return db[_0x6d8e('0x2f')]['find']({'where':{'id':_0x510668[_0x6d8e('0x51')]['id']}})['then'](handleEntityNotFound(_0x404c4e,null))[_0x6d8e('0x29')](saveUpdates(_0x510668[_0x6d8e('0x50')],null))['then'](respondWithResult(_0x404c4e,null))[_0x6d8e('0x4b')](handleError(_0x404c4e,null));};exports[_0x6d8e('0x2a')]=function(_0x3202ff,_0x54c107){return db['WhatsappTransferReport']['find']({'where':{'id':_0x3202ff[_0x6d8e('0x51')]['id']}})[_0x6d8e('0x29')](handleEntityNotFound(_0x54c107,null))[_0x6d8e('0x29')](removeEntity(_0x54c107,null))[_0x6d8e('0x4b')](handleError(_0x54c107,null));};exports[_0x6d8e('0x52')]=function(_0x46c5d3,_0x5d1f76){return db[_0x6d8e('0x2f')][_0x6d8e('0x52')]()[_0x6d8e('0x29')](respondWithResult(_0x5d1f76,null))[_0x6d8e('0x4b')](handleError(_0x5d1f76,null));};
\ No newline at end of file
+var _0x3cf5=['map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','WhatsappTransferReport','length','include','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','reject','update','then','error','name','send','index'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3cf5,0xa6));var _0x53cf=function(_0x2409d0,_0x127d21){_0x2409d0=_0x2409d0-0x0;var _0x38eb87=_0x3cf5[_0x2409d0];return _0x38eb87;};'use strict';var emlformat=require(_0x53cf('0x0'));var rimraf=require(_0x53cf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x53cf('0x2'));var rp=require(_0x53cf('0x3'));var moment=require(_0x53cf('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x53cf('0x5'));var path=require('path');var sox=require(_0x53cf('0x6'));var csv=require(_0x53cf('0x7'));var ejs=require(_0x53cf('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x53cf('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x53cf('0xa'));var toCsv=require(_0x53cf('0x7'));var querystring=require(_0x53cf('0xb'));var Papa=require(_0x53cf('0xc'));var Redis=require(_0x53cf('0xd'));var authService=require(_0x53cf('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x53cf('0xf'))(_0x53cf('0x10'));var utils=require(_0x53cf('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x53cf('0x12'));var db=require(_0x53cf('0x13'))['db'];function respondWithStatusCode(_0x33bede,_0xc34a56){_0xc34a56=_0xc34a56||0xcc;return function(_0x3b3b20){if(_0x3b3b20){return _0x33bede[_0x53cf('0x14')](_0xc34a56);}return _0x33bede['status'](_0xc34a56)[_0x53cf('0x15')]();};}function respondWithResult(_0x1623d3,_0x49e73d){_0x49e73d=_0x49e73d||0xc8;return function(_0x943f2e){if(_0x943f2e){return _0x1623d3[_0x53cf('0x16')](_0x49e73d)[_0x53cf('0x17')](_0x943f2e);}};}function respondWithFilteredResult(_0x4ef376,_0x4b79cf){return function(_0x328dcf){if(_0x328dcf){var _0x1c5322=typeof _0x4b79cf[_0x53cf('0x18')]==='undefined'&&typeof _0x4b79cf[_0x53cf('0x19')]==='undefined';var _0x29ecc9=_0x328dcf[_0x53cf('0x1a')];var _0x1878d9=_0x1c5322?0x0:_0x4b79cf[_0x53cf('0x18')];var _0x50d673=_0x1c5322?_0x328dcf[_0x53cf('0x1a')]:_0x4b79cf['offset']+_0x4b79cf[_0x53cf('0x19')];var _0x355dc7;if(_0x50d673>=_0x29ecc9){_0x50d673=_0x29ecc9;_0x355dc7=0xc8;}else{_0x355dc7=0xce;}_0x4ef376[_0x53cf('0x16')](_0x355dc7);return _0x4ef376['set'](_0x53cf('0x1b'),_0x1878d9+'-'+_0x50d673+'/'+_0x29ecc9)['json'](_0x328dcf);}return null;};}function patchUpdates(_0x4897d7){return function(_0x17df3b){try{jsonpatch['apply'](_0x17df3b,_0x4897d7,!![]);}catch(_0x20af67){return BPromise[_0x53cf('0x1c')](_0x20af67);}return _0x17df3b['save']();};}function saveUpdates(_0x2202a8,_0x149546){return function(_0x4c3227){if(_0x4c3227){return _0x4c3227[_0x53cf('0x1d')](_0x2202a8)[_0x53cf('0x1e')](function(_0x279f45){return _0x279f45;});}return null;};}function removeEntity(_0xdc49ce,_0x58f56a){return function(_0x3ee430){if(_0x3ee430){return _0x3ee430['destroy']()[_0x53cf('0x1e')](function(){_0xdc49ce[_0x53cf('0x16')](0xcc)[_0x53cf('0x15')]();});}};}function handleEntityNotFound(_0x3df440,_0x17b536){return function(_0xed826c){if(!_0xed826c){_0x3df440['sendStatus'](0x194);}return _0xed826c;};}function handleError(_0x46199e,_0xde4b6d){_0xde4b6d=_0xde4b6d||0x1f4;return function(_0x397866){logger[_0x53cf('0x1f')](_0x397866['stack']);if(_0x397866['name']){delete _0x397866[_0x53cf('0x20')];}_0x46199e['status'](_0xde4b6d)[_0x53cf('0x21')](_0x397866);};}exports[_0x53cf('0x22')]=function(_0x479d1a,_0x410e98){var _0x46c60e={},_0x3a6fdb={},_0x5586cc={'count':0x0,'rows':[]};var _0x4dec0e=_[_0x53cf('0x23')](db['WhatsappTransferReport'][_0x53cf('0x24')],function(_0x5c9f25){return{'name':_0x5c9f25[_0x53cf('0x25')],'type':_0x5c9f25[_0x53cf('0x26')][_0x53cf('0x27')]};});_0x3a6fdb[_0x53cf('0x28')]=_[_0x53cf('0x23')](_0x4dec0e,_0x53cf('0x20'));_0x3a6fdb[_0x53cf('0x29')]=_[_0x53cf('0x2a')](_0x479d1a[_0x53cf('0x29')]);_0x3a6fdb[_0x53cf('0x2b')]=_['intersection'](_0x3a6fdb['model'],_0x3a6fdb[_0x53cf('0x29')]);_0x46c60e[_0x53cf('0x2c')]=_[_0x53cf('0x2d')](_0x3a6fdb[_0x53cf('0x28')],qs[_0x53cf('0x2e')](_0x479d1a['query'][_0x53cf('0x2e')]));_0x46c60e[_0x53cf('0x2c')]=_0x46c60e[_0x53cf('0x2c')]['length']?_0x46c60e[_0x53cf('0x2c')]:_0x3a6fdb[_0x53cf('0x28')];if(!_0x479d1a[_0x53cf('0x29')]['hasOwnProperty'](_0x53cf('0x2f'))){_0x46c60e[_0x53cf('0x19')]=qs['limit'](_0x479d1a['query'][_0x53cf('0x19')]);_0x46c60e['offset']=qs[_0x53cf('0x18')](_0x479d1a[_0x53cf('0x29')][_0x53cf('0x18')]);}_0x46c60e[_0x53cf('0x30')]=qs[_0x53cf('0x31')](_0x479d1a[_0x53cf('0x29')][_0x53cf('0x31')]);_0x46c60e[_0x53cf('0x32')]=qs[_0x53cf('0x2b')](_[_0x53cf('0x33')](_0x479d1a['query'],_0x3a6fdb[_0x53cf('0x2b')]),_0x4dec0e);if(_0x479d1a[_0x53cf('0x29')][_0x53cf('0x34')]){_0x46c60e[_0x53cf('0x32')]=_[_0x53cf('0x35')](_0x46c60e['where'],{'$or':_[_0x53cf('0x23')](_0x4dec0e,function(_0x37bea8){if(_0x37bea8[_0x53cf('0x26')]!==_0x53cf('0x36')){var _0x4527ac={};_0x4527ac[_0x37bea8['name']]={'$like':'%'+_0x479d1a[_0x53cf('0x29')][_0x53cf('0x34')]+'%'};return _0x4527ac;}})});}_0x46c60e=_[_0x53cf('0x35')]({},_0x46c60e,_0x479d1a[_0x53cf('0x37')]);var _0x377a36={'where':_0x46c60e[_0x53cf('0x32')]};return db['WhatsappTransferReport']['count'](_0x377a36)[_0x53cf('0x1e')](function(_0x1d79dc){_0x5586cc[_0x53cf('0x1a')]=_0x1d79dc;if(_0x479d1a[_0x53cf('0x29')][_0x53cf('0x38')]){_0x46c60e['include']=[{'all':!![]}];}return db['WhatsappTransferReport'][_0x53cf('0x39')](_0x46c60e);})[_0x53cf('0x1e')](function(_0x108a22){_0x5586cc['rows']=_0x108a22;return _0x5586cc;})[_0x53cf('0x1e')](respondWithFilteredResult(_0x410e98,_0x46c60e))[_0x53cf('0x3a')](handleError(_0x410e98,null));};exports[_0x53cf('0x3b')]=function(_0x17cb20,_0x43e588){var _0x27a4df={'raw':!![],'where':{'id':_0x17cb20['params']['id']}},_0x552931={};_0x552931[_0x53cf('0x28')]=_[_0x53cf('0x2a')](db[_0x53cf('0x3c')][_0x53cf('0x24')]);_0x552931[_0x53cf('0x29')]=_['keys'](_0x17cb20[_0x53cf('0x29')]);_0x552931[_0x53cf('0x2b')]=_[_0x53cf('0x2d')](_0x552931['model'],_0x552931['query']);_0x27a4df['attributes']=_['intersection'](_0x552931['model'],qs[_0x53cf('0x2e')](_0x17cb20[_0x53cf('0x29')][_0x53cf('0x2e')]));_0x27a4df[_0x53cf('0x2c')]=_0x27a4df[_0x53cf('0x2c')][_0x53cf('0x3d')]?_0x27a4df['attributes']:_0x552931[_0x53cf('0x28')];if(_0x17cb20[_0x53cf('0x29')][_0x53cf('0x38')]){_0x27a4df[_0x53cf('0x3e')]=[{'all':!![]}];}_0x27a4df=_[_0x53cf('0x35')]({},_0x27a4df,_0x17cb20[_0x53cf('0x37')]);return db[_0x53cf('0x3c')][_0x53cf('0x3f')](_0x27a4df)[_0x53cf('0x1e')](handleEntityNotFound(_0x43e588,null))[_0x53cf('0x1e')](respondWithResult(_0x43e588,null))[_0x53cf('0x3a')](handleError(_0x43e588,null));};exports[_0x53cf('0x40')]=function(_0x367c22,_0x2f7a4d){return db[_0x53cf('0x3c')]['create'](_0x367c22[_0x53cf('0x41')],{})[_0x53cf('0x1e')](respondWithResult(_0x2f7a4d,0xc9))['catch'](handleError(_0x2f7a4d,null));};exports[_0x53cf('0x1d')]=function(_0x2beb72,_0x87e272){if(_0x2beb72[_0x53cf('0x41')]['id']){delete _0x2beb72[_0x53cf('0x41')]['id'];}return db[_0x53cf('0x3c')]['find']({'where':{'id':_0x2beb72[_0x53cf('0x42')]['id']}})[_0x53cf('0x1e')](handleEntityNotFound(_0x87e272,null))[_0x53cf('0x1e')](saveUpdates(_0x2beb72[_0x53cf('0x41')],null))[_0x53cf('0x1e')](respondWithResult(_0x87e272,null))[_0x53cf('0x3a')](handleError(_0x87e272,null));};exports['destroy']=function(_0x51b661,_0x166a58){return db[_0x53cf('0x3c')][_0x53cf('0x3f')]({'where':{'id':_0x51b661['params']['id']}})[_0x53cf('0x1e')](handleEntityNotFound(_0x166a58,null))[_0x53cf('0x1e')](removeEntity(_0x166a58,null))[_0x53cf('0x3a')](handleError(_0x166a58,null));};exports['describe']=function(_0x42f826,_0x5c096c){return db[_0x53cf('0x3c')]['describe']()[_0x53cf('0x1e')](respondWithResult(_0x5c096c,null))['catch'](handleError(_0x5c096c,null));};
\ No newline at end of file
index 7775d6b..f8cc39a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x722c=['exports','uniqueid','util','api','request-promise','path','../../config/environment'];(function(_0x29d824,_0x24a09d){var _0x39d80c=function(_0x528b30){while(--_0x528b30){_0x29d824['push'](_0x29d824['shift']());}};_0x39d80c(++_0x24a09d);}(_0x722c,0xaa));var _0xc722=function(_0x258d3a,_0x349fb3){_0x258d3a=_0x258d3a-0x0;var _0x1cf7fd=_0x722c[_0x258d3a];return _0x1cf7fd;};'use strict';var _=require('lodash');var util=require(_0xc722('0x0'));var logger=require('../../config/logger')(_0xc722('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc722('0x2'));var fs=require('fs');var path=require(_0xc722('0x3'));var rimraf=require('rimraf');var config=require(_0xc722('0x4'));var attributes=require('./whatsappTransferReport.attributes');module[_0xc722('0x5')]=function(_0x35c36b,_0x3f73cf){return _0x35c36b['define']('WhatsappTransferReport',attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0xc722('0x6'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x982b=['moment','request-promise','path','rimraf','../../config/environment','define','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x8cd3b,_0x2ddeb3){var _0x620718=function(_0x177f17){while(--_0x177f17){_0x8cd3b['push'](_0x8cd3b['shift']());}};_0x620718(++_0x2ddeb3);}(_0x982b,0xec));var _0xb982=function(_0x41e2af,_0x3662f8){_0x41e2af=_0x41e2af-0x0;var _0x41df19=_0x982b[_0x41e2af];return _0x41df19;};'use strict';var _=require(_0xb982('0x0'));var util=require(_0xb982('0x1'));var logger=require(_0xb982('0x2'))(_0xb982('0x3'));var moment=require(_0xb982('0x4'));var BPromise=require('bluebird');var rp=require(_0xb982('0x5'));var fs=require('fs');var path=require(_0xb982('0x6'));var rimraf=require(_0xb982('0x7'));var config=require(_0xb982('0x8'));var attributes=require('./whatsappTransferReport.attributes');module['exports']=function(_0x55e2b9,_0x545e87){return _0x55e2b9[_0xb982('0x9')]('WhatsappTransferReport',attributes,{'tableName':_0xb982('0xa'),'paranoid':![],'indexes':[{'name':_0xb982('0xb'),'fields':[_0xb982('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index d85b501..941b907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8f=['then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x41ec2f,_0xedb083){var _0x2abd9f=function(_0x14ce42){while(--_0x14ce42){_0x41ec2f['push'](_0x41ec2f['shift']());}};_0x2abd9f(++_0xedb083);}(_0xce8f,0x17c));var _0xfce8=function(_0xe3bbea,_0x3ae4d3){_0xe3bbea=_0xe3bbea-0x0;var _0x18713d=_0xce8f[_0xe3bbea];return _0x18713d;};'use strict';var _=require(_0xfce8('0x0'));var util=require('util');var moment=require(_0xfce8('0x1'));var BPromise=require('bluebird');var rs=require(_0xfce8('0x2'));var fs=require('fs');var Redis=require(_0xfce8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfce8('0x4'));var logger=require(_0xfce8('0x5'))(_0xfce8('0x6'));var config=require(_0xfce8('0x7'));var jayson=require(_0xfce8('0x8'));var client=jayson[_0xfce8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x557a29,_0x39c2e7,_0x2d88d6){return new BPromise(function(_0xe8dcbc,_0x1503d4){return client[_0xfce8('0xa')](_0x557a29,_0x2d88d6)[_0xfce8('0xb')](function(_0x9a21da){logger['info'](_0xfce8('0xc'),_0x39c2e7,_0xfce8('0xd'));logger[_0xfce8('0xe')](_0xfce8('0xf'),_0x39c2e7,_0xfce8('0xd'),JSON[_0xfce8('0x10')](_0x9a21da));if(_0x9a21da[_0xfce8('0x11')]){if(_0x9a21da[_0xfce8('0x11')][_0xfce8('0x12')]===0x1f4){logger[_0xfce8('0x11')](_0xfce8('0xc'),_0x39c2e7,_0x9a21da[_0xfce8('0x11')]['message']);return _0x1503d4(_0x9a21da[_0xfce8('0x11')]['message']);}logger[_0xfce8('0x11')](_0xfce8('0xc'),_0x39c2e7,_0x9a21da[_0xfce8('0x11')][_0xfce8('0x13')]);return _0xe8dcbc(_0x9a21da['error']['message']);}else{logger[_0xfce8('0x14')](_0xfce8('0xc'),_0x39c2e7,_0xfce8('0xd'));_0xe8dcbc(_0x9a21da[_0xfce8('0x15')][_0xfce8('0x13')]);}})[_0xfce8('0x16')](function(_0x25885e){logger['error'](_0xfce8('0xc'),_0x39c2e7,_0x25885e);_0x1503d4(_0x25885e);});});}
\ No newline at end of file
+var _0xb090=['util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xb090,0x125));var _0x0b09=function(_0x23e3fd,_0x23013c){_0x23e3fd=_0x23e3fd-0x0;var _0x9d32d8=_0xb090[_0x23e3fd];return _0x9d32d8;};'use strict';var _=require(_0x0b09('0x0'));var util=require(_0x0b09('0x1'));var moment=require(_0x0b09('0x2'));var BPromise=require(_0x0b09('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b09('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0b09('0x5'));var logger=require(_0x0b09('0x6'))(_0x0b09('0x7'));var config=require(_0x0b09('0x8'));var jayson=require(_0x0b09('0x9'));var client=jayson[_0x0b09('0xa')][_0x0b09('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ed00d,_0x26e762,_0x2de142){return new BPromise(function(_0x18b29e,_0x527fc7){return client['request'](_0x5ed00d,_0x2de142)['then'](function(_0x58bd47){logger['info'](_0x0b09('0xc'),_0x26e762,_0x0b09('0xd'));logger['debug'](_0x0b09('0xe'),_0x26e762,'request\x20sent',JSON[_0x0b09('0xf')](_0x58bd47));if(_0x58bd47['error']){if(_0x58bd47[_0x0b09('0x10')][_0x0b09('0x11')]===0x1f4){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x26e762,_0x58bd47[_0x0b09('0x10')][_0x0b09('0x12')]);return _0x527fc7(_0x58bd47[_0x0b09('0x10')]['message']);}logger[_0x0b09('0x10')](_0x0b09('0xc'),_0x26e762,_0x58bd47[_0x0b09('0x10')][_0x0b09('0x12')]);return _0x18b29e(_0x58bd47[_0x0b09('0x10')][_0x0b09('0x12')]);}else{logger['info'](_0x0b09('0xc'),_0x26e762,_0x0b09('0xd'));_0x18b29e(_0x58bd47[_0x0b09('0x13')]['message']);}})[_0x0b09('0x14')](function(_0x1ccdc3){logger['error'](_0x0b09('0xc'),_0x26e762,_0x1ccdc3);_0x527fc7(_0x1ccdc3);});});}
\ No newline at end of file
index 869336f..4a9bd9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00da=['map','status','online','None','seedDB','default','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','./config/pm2','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sync','then','start','info','filter','name','join'];(function(_0x5ba8b7,_0x38235e){var _0x102981=function(_0x548479){while(--_0x548479){_0x5ba8b7['push'](_0x5ba8b7['shift']());}};_0x102981(++_0x38235e);}(_0x00da,0x1cb));var _0xa00d=function(_0x37c6c0,_0x5dc424){_0x37c6c0=_0x37c6c0-0x0;var _0x5974d4=_0x00da[_0x37c6c0];return _0x5974d4;};'use strict';var _=require(_0xa00d('0x0'));var mysqldb=require(_0xa00d('0x1'));var rpc=require(_0xa00d('0x2'));var config=require(_0xa00d('0x3'));var logger=require('./config/logger')('app');var pm2=require(_0xa00d('0x4'));var pm2Config=require('./config/pm2/config');var schedule=require(_0xa00d('0x5'));var chat=require(_0xa00d('0x6'));var whatsapp=require(_0xa00d('0x7'));var transcribe=require(_0xa00d('0x8'));function main(){return mysqldb['db']['sequelize'][_0xa00d('0x9')]()[_0xa00d('0xa')](function(){return rpc['listen']();})['then'](function(_0x550c0d){logger['info'](_0x550c0d);return chat[_0xa00d('0xb')]();})['then'](function(){return whatsapp[_0xa00d('0xb')]();})[_0xa00d('0xa')](function(){return schedule[_0xa00d('0xb')]();})[_0xa00d('0xa')](function(){return transcribe[_0xa00d('0xb')]();})[_0xa00d('0xa')](function(_0xcd4fd0){logger[_0xa00d('0xc')](_0xcd4fd0);return pm2['start'](pm2Config);})['then'](function(_0x5d21e6){logger['info']('Online\x20apps:',_['map'](_[_0xa00d('0xd')](_0x5d21e6,{'status':'online'}),_0xa00d('0xe'))[_0xa00d('0xf')]());logger[_0xa00d('0xc')]('Offline\x20apps:',_[_0xa00d('0x10')](_[_0xa00d('0xd')](_0x5d21e6,function(_0x322fb6){return _0x322fb6[_0xa00d('0x11')]!==_0xa00d('0x12');}),'name')[_0xa00d('0xf')]()||_0xa00d('0x13'));config[_0xa00d('0x14')]&&require('./config/seedDB')['default']();require('./config/license')[_0xa00d('0x15')]();})['catch'](function(_0x3c9baf){logger[_0xa00d('0x16')](_0xa00d('0x17'),_0x3c9baf);process[_0xa00d('0x18')](0x1);});}main();
\ No newline at end of file
+var _0xd935=['default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','./mysqldb','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule/whatsapp','sequelize','sync','then','listen','start','Online\x20apps:','map','filter','name','info','Offline\x20apps:','status','online','seedDB','./config/seedDB'];(function(_0x5d76cc,_0x195736){var _0x4acce4=function(_0x3b889d){while(--_0x3b889d){_0x5d76cc['push'](_0x5d76cc['shift']());}};_0x4acce4(++_0x195736);}(_0xd935,0x1ad));var _0x5d93=function(_0x3e4003,_0x3819a2){_0x3e4003=_0x3e4003-0x0;var _0x3280f2=_0xd935[_0x3e4003];return _0x3280f2;};'use strict';var _=require('lodash');var mysqldb=require(_0x5d93('0x0'));var rpc=require('./rpc');var config=require('./config/environment');var logger=require(_0x5d93('0x1'))(_0x5d93('0x2'));var pm2=require(_0x5d93('0x3'));var pm2Config=require(_0x5d93('0x4'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0x5d93('0x5'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x5d93('0x6')][_0x5d93('0x7')]()[_0x5d93('0x8')](function(){return rpc[_0x5d93('0x9')]();})[_0x5d93('0x8')](function(_0x4a36e0){logger['info'](_0x4a36e0);return chat[_0x5d93('0xa')]();})['then'](function(){return whatsapp['start']();})[_0x5d93('0x8')](function(){return schedule[_0x5d93('0xa')]();})[_0x5d93('0x8')](function(){return transcribe[_0x5d93('0xa')]();})[_0x5d93('0x8')](function(_0x2652a5){logger['info'](_0x2652a5);return pm2[_0x5d93('0xa')](pm2Config);})[_0x5d93('0x8')](function(_0x5a2336){logger['info'](_0x5d93('0xb'),_[_0x5d93('0xc')](_[_0x5d93('0xd')](_0x5a2336,{'status':'online'}),_0x5d93('0xe'))['join']());logger[_0x5d93('0xf')](_0x5d93('0x10'),_[_0x5d93('0xc')](_['filter'](_0x5a2336,function(_0x3a96a6){return _0x3a96a6[_0x5d93('0x11')]!==_0x5d93('0x12');}),_0x5d93('0xe'))['join']()||'None');config[_0x5d93('0x13')]&&require(_0x5d93('0x14'))[_0x5d93('0x15')]();require('./config/license')[_0x5d93('0x15')]();})[_0x5d93('0x16')](function(_0x1353dd){logger[_0x5d93('0x17')](_0x5d93('0x18'),_0x1353dd);process['exit'](0x1);});}main();
\ No newline at end of file
index 00603cc..69aa224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bbc=['lastPauseAt','allowmessenger','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','Unmanaged.','Forbidden.','catch','headers','authorization','startsWith','Basic','find','authenticate','pass','Wrong\x20credentials.','Unknown\x20authorization\x20format','query','getUuid','User','sub','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','/dashboards/general','send','isNil','apiKeyIat','generateApiKey','apiKeyNonce','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','split','toLowerCase','format','updatePasswordsHistory','decryptString','length','unshift','encryptString','join','promisify','sign','secret','payload','options','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','util','moment','secrets','session','role','name','internal','email','permissions','md5secret','voicePause','smsPause','openchannelPause'];(function(_0x298064,_0x1d2bfb){var _0x2512ea=function(_0x3e5b28){while(--_0x3e5b28){_0x298064['push'](_0x298064['shift']());}};_0x2512ea(++_0x1d2bfb);}(_0x0bbc,0xdd));var _0xc0bb=function(_0x1d9bd2,_0x3e6ee4){_0x1d9bd2=_0x1d9bd2-0x0;var _0x5921a3=_0x0bbc[_0x1d9bd2];return _0x5921a3;};'use strict';var db=require(_0xc0bb('0x0'))['db'];var config=require(_0xc0bb('0x1'));var hardwareConf=require(_0xc0bb('0x2'));var licenseUtil=require(_0xc0bb('0x3'));var encryptor=require('../encryptor');var _=require(_0xc0bb('0x4'));var jwt=require(_0xc0bb('0x5'));var expressJwt=require(_0xc0bb('0x6'));var compose=require(_0xc0bb('0x7'));var basicAuth=require(_0xc0bb('0x8'));var crypto=require(_0xc0bb('0x9'));var BPromise=require('bluebird');var util=require(_0xc0bb('0xa'));var moment=require(_0xc0bb('0xb'));var validateJwt=expressJwt({'secret':config[_0xc0bb('0xc')][_0xc0bb('0xd')]});var userAttributes=['id',_0xc0bb('0xe'),'fullname',_0xc0bb('0xf'),_0xc0bb('0x10'),_0xc0bb('0x11'),'userpic',_0xc0bb('0x12'),_0xc0bb('0x13'),_0xc0bb('0x14'),'chatPause','mailPause','faxPause',_0xc0bb('0x15'),_0xc0bb('0x16'),'pauseType','showWebBar','lastLoginAt',_0xc0bb('0x17'),'crudPermissions',_0xc0bb('0x18'),'passwordResetAt',_0xc0bb('0x19'),_0xc0bb('0x1a'),_0xc0bb('0x1b'),'phoneBarDnd',_0xc0bb('0x1c'),_0xc0bb('0x1d'),_0xc0bb('0x1e'),_0xc0bb('0x1f'),'phoneBarPrefixRequired',_0xc0bb('0x20'),_0xc0bb('0x21'),'hotdesk',_0xc0bb('0x22'),_0xc0bb('0x23'),_0xc0bb('0x24'),'settingsEnabled','wssPort',_0xc0bb('0x25'),_0xc0bb('0x26'),_0xc0bb('0x27')];exports['isChatInteractionAuthorized']=function(){return this[_0xc0bb('0x28')](!![])[_0xc0bb('0x29')](function(_0x36ce5b,_0x4b5524,_0x227ebb){if(_0x36ce5b[_0xc0bb('0x2a')]){_0x227ebb();}else{return db[_0xc0bb('0x2b')][_0xc0bb('0x2c')]({'where':{'id':_0x36ce5b[_0xc0bb('0x2d')]['id']},'attributes':['id',_0xc0bb('0x2e'),_0xc0bb('0x2f')],'raw':!![]})[_0xc0bb('0x30')](function(_0x187827){if(_0x187827&&_0x187827[_0xc0bb('0x2e')]){return _0x4b5524[_0xc0bb('0x31')](_0x187827[_0xc0bb('0x2f')]===_0xc0bb('0x32')?0x195:0x193)[_0xc0bb('0x33')]({'message':_0x187827['disposition']===_0xc0bb('0x32')?_0xc0bb('0x34'):_0xc0bb('0x35')});}else{_0x227ebb();}})[_0xc0bb('0x36')](function(_0x407d22){_0x227ebb(_0x407d22);});}});};exports[_0xc0bb('0x28')]=function isAuthenticated(_0x4d4a76){return compose()[_0xc0bb('0x29')](function(_0x28da8e,_0x924b33,_0x35515a){var _0x475c5a;if(_0x28da8e[_0xc0bb('0x37')][_0xc0bb('0x38')]){if(_[_0xc0bb('0x39')](_0x28da8e[_0xc0bb('0x37')]['authorization'],_0xc0bb('0x3a'))){var _0x360f01=basicAuth(_0x28da8e);db['User'][_0xc0bb('0x3b')]({'where':{'name':_0x360f01['name']}})[_0xc0bb('0x30')](function(_0x33ece5){if(!_0x33ece5||!_0x33ece5[_0xc0bb('0x3c')](_0x360f01[_0xc0bb('0x3d')])){return _0x924b33['status'](0x191)[_0xc0bb('0x33')]({'message':_0xc0bb('0x3e')});}_0x28da8e['user']={'id':_0x33ece5['id']};_0x35515a();})['catch'](function(_0x1c78aa){_0x35515a(_0x1c78aa);});}else if(_[_0xc0bb('0x39')](_0x28da8e[_0xc0bb('0x37')][_0xc0bb('0x38')],'Bearer')){validateJwt(_0x28da8e,_0x924b33,_0x35515a);}else{if(_0x4d4a76){_0x35515a();}else{return _0x924b33[_0xc0bb('0x31')](0x193)[_0xc0bb('0x33')]({'message':_0xc0bb('0x3f')});}}}else if(_0x28da8e[_0xc0bb('0x40')]['apikey']){try{var _0x417ba4={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xc0bb('0x41')]()};verifyJwt(_0x28da8e['query']['apikey'],_0x417ba4)['then'](function(_0xbf63f5){return db[_0xc0bb('0x42')][_0xc0bb('0x3b')]({'where':{'id':_0xbf63f5[_0xc0bb('0x43')]}})['then'](function(_0x18a9b1){_0x475c5a=_0x18a9b1;return db['Setting'][_0xc0bb('0x2c')]({'where':{'id':0x1},'attributes':[_0xc0bb('0x44'),_0xc0bb('0x45')],'raw':!![]});})[_0xc0bb('0x30')](function(_0x1b4278){if(!_0x475c5a||!_[_0xc0bb('0x46')](_0x475c5a['apiKeyNonce'],_0xbf63f5[_0xc0bb('0x47')])){return _0x924b33[_0xc0bb('0x31')](0x191)[_0xc0bb('0x33')]({'message':_0xc0bb('0x48')});}if(_0x475c5a['disabled']){return _0x924b33[_0xc0bb('0x31')](0x191)[_0xc0bb('0x33')]({'message':_0xc0bb('0x49')});}if(_0x475c5a[_0xc0bb('0x4a')]){if(_0x1b4278[_0xc0bb('0x45')]>0x0){if(moment(_0x475c5a['blockedAt'])[_0xc0bb('0x4b')](_0x1b4278[_0xc0bb('0x45')],_0xc0bb('0x4c'))>moment()){return _0x924b33[_0xc0bb('0x31')](0x191)['json']({'message':_0xc0bb('0x49')});}}else{return _0x924b33['status'](0x191)[_0xc0bb('0x33')]({'message':_0xc0bb('0x49')});}}_0x28da8e[_0xc0bb('0x2a')]={'id':_0x475c5a['id']};_0x35515a();});})['catch'](function(){return _0x924b33[_0xc0bb('0x31')](0x191)[_0xc0bb('0x33')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x23ca21){_0x35515a(_0x23ca21);}}else if(_0x4d4a76){_0x35515a();}else{return _0x924b33[_0xc0bb('0x31')](0x193)[_0xc0bb('0x33')]({'message':_0xc0bb('0x3f')});}})[_0xc0bb('0x29')](function(_0x44bc15,_0x54fb9f,_0x213fba){if(_0x44bc15[_0xc0bb('0x2a')]){db[_0xc0bb('0x42')][_0xc0bb('0x3b')]({'where':{'id':_0x44bc15[_0xc0bb('0x2a')]['id']},'attributes':userAttributes})[_0xc0bb('0x30')](function(_0x4e5a84){if(!_0x4e5a84){return _0x54fb9f[_0xc0bb('0x31')](0x194)[_0xc0bb('0x33')]({'message':_0xc0bb('0x4d')});}_0x44bc15[_0xc0bb('0x2a')]=_0x4e5a84;_0x213fba();})[_0xc0bb('0x36')](function(_0x589d89){_0x213fba(_0x589d89);});}else if(_0x4d4a76){_0x213fba();}else{return _0x54fb9f['status'](0x194)['json']({'message':_0xc0bb('0x4e')});}});};exports[_0xc0bb('0x4f')]=function canUpdate(){return compose()[_0xc0bb('0x29')](function(_0x14cb2c,_0x1a4fcd,_0x5bf3bc){return licenseUtil[_0xc0bb('0x50')]()[_0xc0bb('0x30')](function(_0x40365){if(_0x40365[_0xc0bb('0x51')]){_0x5bf3bc();}else{return _0x1a4fcd[_0xc0bb('0x31')](0x193)[_0xc0bb('0x33')]({'message':_0xc0bb('0x52')});}})[_0xc0bb('0x36')](function(_0x437ace){_0x5bf3bc(_0x437ace);});});};exports['isMiddleware']=function(_0x1bbb6e,_0x385d17,_0x44c061){_0x1bbb6e[_0xc0bb('0x53')]=!![];return _0x44c061();};exports[_0xc0bb('0x54')]=function signToken(_0x1e51c9){return signJwt(_0x1e51c9);};exports[_0xc0bb('0x55')]=function(_0x55b885,_0x3528ea){if(!_0x55b885[_0xc0bb('0x2a')]){return _0x3528ea['status'](0x194)[_0xc0bb('0x33')]({'message':_0xc0bb('0x56')});}var _0x3a1f8a={'payload':{'id':_0x55b885[_0xc0bb('0x2a')]['id'],'role':_0x55b885['user'][_0xc0bb('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x3a1f8a)[_0xc0bb('0x30')](function(_0x2f2fdb){_0x3528ea['cookie'](_0xc0bb('0x57'),_0x2f2fdb);_0x3528ea[_0xc0bb('0x58')](_0xc0bb('0x59'));})['catch'](function(_0x267612){return _0x3528ea[_0xc0bb('0x31')](0x1f4)[_0xc0bb('0x5a')](_0x267612);});};exports['retrieveApiKey']=function(_0x974de3){if(_[_0xc0bb('0x5b')](_0x974de3['apiKeyNonce'])||_[_0xc0bb('0x5b')](_0x974de3[_0xc0bb('0x5c')])){return null;}else{return createJwt(_0x974de3);}};exports[_0xc0bb('0x5d')]=function(_0x3b08fd){_0x3b08fd[_0xc0bb('0x5e')]=generateNonce();_0x3b08fd[_0xc0bb('0x5c')]=generateIssuedAt();return createJwt(_0x3b08fd);};exports['regenerateApiKey']=function(_0x12657,_0x4f03f3){var _0x39f60e=_0x12657[_0xc0bb('0x40')]['apikey'];if(_0x39f60e){var _0xa421fc={'nonce':_0x4f03f3[_0xc0bb('0x5e')],'iat':_0x4f03f3[_0xc0bb('0x5c')],'audience':hardwareConf[_0xc0bb('0x41')](),'issuer':hardwareConf[_0xc0bb('0x41')]()};return verifyJwt(_0x39f60e,_0xa421fc)[_0xc0bb('0x30')](function(){return generateApiKey(_0x4f03f3);});}else{throw{'message':_0xc0bb('0x5f')};}};exports[_0xc0bb('0x60')]=function(_0x292b25){var _0x5caf77=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x5caf77[_0xc0bb('0x61')](_0x292b25))throw new db[(_0xc0bb('0x62'))][(_0xc0bb('0x63'))](_0xc0bb('0x64'));return;};exports['validatePasswordHistory']=function(_0x652afc,_0x56f0b0,_0x49e209){var _0x1973de=encryptor['decryptString'](_0x56f0b0)[_0xc0bb('0x65')](',');for(var _0x408cd9=0x0;_0x408cd9<_0x49e209;_0x408cd9++){if(!_0x1973de[_0x408cd9])break;if(_0x652afc[_0xc0bb('0x66')]()===_0x1973de[_0x408cd9][_0xc0bb('0x66')]()){var _0x2ad31f=util[_0xc0bb('0x67')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x49e209);if(_0x49e209===0x1){_0x2ad31f='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xc0bb('0x62'))]['ValidationError'](_0x2ad31f);}}return;};exports[_0xc0bb('0x68')]=function(_0xc08c26,_0x5b7cca){var _0x14a507=_0x5b7cca?encryptor[_0xc0bb('0x69')](_0x5b7cca)[_0xc0bb('0x65')](','):[];if(_0x14a507[_0xc0bb('0x6a')]===0x5){_0x14a507['splice'](-0x1,0x1);}_0x14a507[_0xc0bb('0x6b')](_0xc08c26);return encryptor[_0xc0bb('0x6c')](_0x14a507[_0xc0bb('0x6d')](','));};function signJwt(_0x4fb7e8){var _0x3218f4=BPromise[_0xc0bb('0x6e')](jwt[_0xc0bb('0x6f')],{'context':jwt});var _0x2cecac=_0x4fb7e8[_0xc0bb('0x70')]||config['secrets'][_0xc0bb('0xd')];return new BPromise(function(_0x37ee6e,_0xa19317){_0x3218f4(_0x4fb7e8[_0xc0bb('0x71')],_0x2cecac,_0x4fb7e8[_0xc0bb('0x72')])[_0xc0bb('0x30')](function(_0x109e56){_0x37ee6e(_0x109e56);})[_0xc0bb('0x36')](function(_0x2f8285){_0xa19317(_0x2f8285);});});}function verifyJwt(_0x5a30f6,_0x5310c7,_0x1af6e0){var _0x1e9679=BPromise[_0xc0bb('0x6e')](jwt[_0xc0bb('0x73')],{'context':jwt});var _0x5227ec=_0x1af6e0||config[_0xc0bb('0xc')]['session'];return new BPromise(function(_0x3f8822,_0x1ec373){_0x1e9679(_0x5a30f6,_0x5227ec,_0x5310c7)['then'](function(_0x369382){_0x3f8822(_0x369382);})[_0xc0bb('0x36')](function(_0xc6eb60){_0x1ec373(_0xc6eb60);});});}function generateNonce(){return crypto[_0xc0bb('0x74')](0x10)[_0xc0bb('0x75')](_0xc0bb('0x76'));}function generateIssuedAt(){return Math[_0xc0bb('0x77')](Date[_0xc0bb('0x78')]()/0x3e8)[_0xc0bb('0x75')]();}function createJwt(_0x2e8f58){var _0xed6dda={'payload':{'iat':_0x2e8f58[_0xc0bb('0x5c')],'nonce':_0x2e8f58[_0xc0bb('0x5e')]},'options':{'algorithm':_0xc0bb('0x79'),'subject':_0x2e8f58['id'][_0xc0bb('0x75')](),'issuer':hardwareConf[_0xc0bb('0x41')](),'audience':hardwareConf[_0xc0bb('0x41')]()}};return signJwt(_0xed6dda)['then'](function(_0x4b2e97){return{'iat':_0x2e8f58[_0xc0bb('0x5c')],'nonce':_0x2e8f58[_0xc0bb('0x5e')],'token':_0x4b2e97};});}
\ No newline at end of file
+var _0x38fd=['unmanaged','json','Unmanaged.','Forbidden.','catch','headers','authorization','startsWith','Basic','User','find','name','then','authenticate','Wrong\x20credentials.','Unknown\x20authorization\x20format','getUuid','query','sub','allowedLoginAttempts','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','minutes','User\x20not\x20found.','canUpdate','getLicense','Forbidden','isMiddleware','setTokenCookie','cookie','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','apikey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','split','length','unshift','encryptString','join','promisify','sign','session','options','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../encryptor','jsonwebtoken','composable-middleware','basic-auth','crypto','util','moment','secrets','role','internal','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','openchannelPause','lastLoginAt','crudPermissions','passwordResetAt','phoneBarAutoAnswerDelay','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','hotdesk','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','closed','disposition','status'];(function(_0x320b8e,_0x1da3fe){var _0x55a10a=function(_0x148a56){while(--_0x148a56){_0x320b8e['push'](_0x320b8e['shift']());}};_0x55a10a(++_0x1da3fe);}(_0x38fd,0x12f));var _0xd38f=function(_0x3c689b,_0x23d31c){_0x3c689b=_0x3c689b-0x0;var _0x117692=_0x38fd[_0x3c689b];return _0x117692;};'use strict';var db=require(_0xd38f('0x0'))['db'];var config=require(_0xd38f('0x1'));var hardwareConf=require(_0xd38f('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0xd38f('0x3'));var _=require('lodash');var jwt=require(_0xd38f('0x4'));var expressJwt=require('express-jwt');var compose=require(_0xd38f('0x5'));var basicAuth=require(_0xd38f('0x6'));var crypto=require(_0xd38f('0x7'));var BPromise=require('bluebird');var util=require(_0xd38f('0x8'));var moment=require(_0xd38f('0x9'));var validateJwt=expressJwt({'secret':config[_0xd38f('0xa')]['session']});var userAttributes=['id',_0xd38f('0xb'),'fullname','name',_0xd38f('0xc'),'email',_0xd38f('0xd'),_0xd38f('0xe'),_0xd38f('0xf'),_0xd38f('0x10'),_0xd38f('0x11'),_0xd38f('0x12'),_0xd38f('0x13'),'smsPause',_0xd38f('0x14'),'pauseType','showWebBar',_0xd38f('0x15'),'lastPauseAt',_0xd38f('0x16'),'allowmessenger',_0xd38f('0x17'),'alias','phoneBarAutoAnswer',_0xd38f('0x18'),'phoneBarDnd','phoneBarEnableRecording',_0xd38f('0x19'),_0xd38f('0x1a'),'phoneBarExpires',_0xd38f('0x1b'),'phoneBarRemoteControl','phoneBarRemoteControlPort',_0xd38f('0x1c'),'interface','userProfileId',_0xd38f('0x1d'),_0xd38f('0x1e'),'wssPort',_0xd38f('0x1f'),_0xd38f('0x20'),'downloadAttachments'];exports[_0xd38f('0x21')]=function(){return this[_0xd38f('0x22')](!![])[_0xd38f('0x23')](function(_0x3da845,_0x13f92b,_0x381df2){if(_0x3da845[_0xd38f('0x24')]){_0x381df2();}else{return db[_0xd38f('0x25')][_0xd38f('0x26')]({'where':{'id':_0x3da845['params']['id']},'attributes':['id',_0xd38f('0x27'),_0xd38f('0x28')],'raw':!![]})['then'](function(_0x586d90){if(_0x586d90&&_0x586d90[_0xd38f('0x27')]){return _0x13f92b[_0xd38f('0x29')](_0x586d90[_0xd38f('0x28')]===_0xd38f('0x2a')?0x195:0x193)[_0xd38f('0x2b')]({'message':_0x586d90[_0xd38f('0x28')]===_0xd38f('0x2a')?_0xd38f('0x2c'):_0xd38f('0x2d')});}else{_0x381df2();}})[_0xd38f('0x2e')](function(_0x4af87f){_0x381df2(_0x4af87f);});}});};exports['isAuthenticated']=function isAuthenticated(_0xfb3926){return compose()[_0xd38f('0x23')](function(_0x39ac21,_0xe16999,_0x1539cd){var _0x5cafe4;if(_0x39ac21[_0xd38f('0x2f')][_0xd38f('0x30')]){if(_[_0xd38f('0x31')](_0x39ac21['headers'][_0xd38f('0x30')],_0xd38f('0x32'))){var _0xe77376=basicAuth(_0x39ac21);db[_0xd38f('0x33')][_0xd38f('0x34')]({'where':{'name':_0xe77376[_0xd38f('0x35')]}})[_0xd38f('0x36')](function(_0x24fb18){if(!_0x24fb18||!_0x24fb18[_0xd38f('0x37')](_0xe77376['pass'])){return _0xe16999['status'](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x38')});}_0x39ac21[_0xd38f('0x24')]={'id':_0x24fb18['id']};_0x1539cd();})[_0xd38f('0x2e')](function(_0x296434){_0x1539cd(_0x296434);});}else if(_[_0xd38f('0x31')](_0x39ac21['headers']['authorization'],'Bearer')){validateJwt(_0x39ac21,_0xe16999,_0x1539cd);}else{if(_0xfb3926){_0x1539cd();}else{return _0xe16999[_0xd38f('0x29')](0x193)[_0xd38f('0x2b')]({'message':_0xd38f('0x39')});}}}else if(_0x39ac21['query']['apikey']){try{var _0x27f123={'audience':hardwareConf[_0xd38f('0x3a')](),'issuer':hardwareConf[_0xd38f('0x3a')]()};verifyJwt(_0x39ac21[_0xd38f('0x3b')]['apikey'],_0x27f123)[_0xd38f('0x36')](function(_0x5d192d){return db[_0xd38f('0x33')][_0xd38f('0x34')]({'where':{'id':_0x5d192d[_0xd38f('0x3c')]}})['then'](function(_0x41bcd6){_0x5cafe4=_0x41bcd6;return db['Setting'][_0xd38f('0x26')]({'where':{'id':0x1},'attributes':[_0xd38f('0x3d'),'blockDuration'],'raw':!![]});})[_0xd38f('0x36')](function(_0x264355){if(!_0x5cafe4||!_[_0xd38f('0x3e')](_0x5cafe4[_0xd38f('0x3f')],_0x5d192d[_0xd38f('0x40')])){return _0xe16999[_0xd38f('0x29')](0x191)['json']({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x5cafe4[_0xd38f('0x41')]){return _0xe16999[_0xd38f('0x29')](0x191)['json']({'message':_0xd38f('0x42')});}if(_0x5cafe4[_0xd38f('0x43')]){if(_0x264355[_0xd38f('0x44')]>0x0){if(moment(_0x5cafe4[_0xd38f('0x45')])[_0xd38f('0x46')](_0x264355[_0xd38f('0x44')],_0xd38f('0x47'))>moment()){return _0xe16999['status'](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x42')});}}else{return _0xe16999[_0xd38f('0x29')](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x42')});}}_0x39ac21['user']={'id':_0x5cafe4['id']};_0x1539cd();});})[_0xd38f('0x2e')](function(){return _0xe16999['status'](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x42')});});}catch(_0x135924){_0x1539cd(_0x135924);}}else if(_0xfb3926){_0x1539cd();}else{return _0xe16999[_0xd38f('0x29')](0x193)[_0xd38f('0x2b')]({'message':_0xd38f('0x39')});}})[_0xd38f('0x23')](function(_0x3e77fb,_0x5a442b,_0x44d91f){if(_0x3e77fb[_0xd38f('0x24')]){db[_0xd38f('0x33')][_0xd38f('0x34')]({'where':{'id':_0x3e77fb[_0xd38f('0x24')]['id']},'attributes':userAttributes})['then'](function(_0x355eef){if(!_0x355eef){return _0x5a442b[_0xd38f('0x29')](0x194)[_0xd38f('0x2b')]({'message':_0xd38f('0x48')});}_0x3e77fb[_0xd38f('0x24')]=_0x355eef;_0x44d91f();})[_0xd38f('0x2e')](function(_0x2018c8){_0x44d91f(_0x2018c8);});}else if(_0xfb3926){_0x44d91f();}else{return _0x5a442b[_0xd38f('0x29')](0x194)[_0xd38f('0x2b')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xd38f('0x49')]=function canUpdate(){return compose()[_0xd38f('0x23')](function(_0x18739c,_0xcee560,_0x5b1704){return licenseUtil[_0xd38f('0x4a')]()['then'](function(_0x2f80c7){if(_0x2f80c7['update']){_0x5b1704();}else{return _0xcee560[_0xd38f('0x29')](0x193)['json']({'message':_0xd38f('0x4b')});}})[_0xd38f('0x2e')](function(_0x3f7d3d){_0x5b1704(_0x3f7d3d);});});};exports[_0xd38f('0x4c')]=function(_0x5ceb56,_0x4545fa,_0x135092){_0x5ceb56[_0xd38f('0x4c')]=!![];return _0x135092();};exports['signToken']=function signToken(_0x31904b){return signJwt(_0x31904b);};exports[_0xd38f('0x4d')]=function(_0x5a5dd0,_0x18be14){if(!_0x5a5dd0[_0xd38f('0x24')]){return _0x18be14[_0xd38f('0x29')](0x194)[_0xd38f('0x2b')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x261bbb={'payload':{'id':_0x5a5dd0[_0xd38f('0x24')]['id'],'role':_0x5a5dd0[_0xd38f('0x24')][_0xd38f('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x261bbb)['then'](function(_0x92e391){_0x18be14[_0xd38f('0x4e')]('motion.token',_0x92e391);_0x18be14[_0xd38f('0x4f')](_0xd38f('0x50'));})[_0xd38f('0x2e')](function(_0x18baaf){return _0x18be14[_0xd38f('0x29')](0x1f4)[_0xd38f('0x51')](_0x18baaf);});};exports[_0xd38f('0x52')]=function(_0x30a455){if(_['isNil'](_0x30a455['apiKeyNonce'])||_[_0xd38f('0x53')](_0x30a455[_0xd38f('0x54')])){return null;}else{return createJwt(_0x30a455);}};exports[_0xd38f('0x55')]=function(_0x103ecb){_0x103ecb[_0xd38f('0x3f')]=generateNonce();_0x103ecb[_0xd38f('0x54')]=generateIssuedAt();return createJwt(_0x103ecb);};exports[_0xd38f('0x56')]=function(_0x3832a5,_0x2e328d){var _0x2c847c=_0x3832a5[_0xd38f('0x3b')][_0xd38f('0x57')];if(_0x2c847c){var _0x472337={'nonce':_0x2e328d['apiKeyNonce'],'iat':_0x2e328d[_0xd38f('0x54')],'audience':hardwareConf[_0xd38f('0x3a')](),'issuer':hardwareConf[_0xd38f('0x3a')]()};return verifyJwt(_0x2c847c,_0x472337)[_0xd38f('0x36')](function(){return generateApiKey(_0x2e328d);});}else{throw{'message':_0xd38f('0x58')};}};exports[_0xd38f('0x59')]=function(_0x14671f){var _0x5578dd=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x5578dd['test'](_0x14671f))throw new db[(_0xd38f('0x5a'))][(_0xd38f('0x5b'))](_0xd38f('0x5c'));return;};exports[_0xd38f('0x5d')]=function(_0x224d38,_0x8f921b,_0x2103f0){var _0x2cafc4=encryptor[_0xd38f('0x5e')](_0x8f921b)['split'](',');for(var _0x154d85=0x0;_0x154d85<_0x2103f0;_0x154d85++){if(!_0x2cafc4[_0x154d85])break;if(_0x224d38[_0xd38f('0x5f')]()===_0x2cafc4[_0x154d85][_0xd38f('0x5f')]()){var _0x2dbf45=util[_0xd38f('0x60')](_0xd38f('0x61'),_0x2103f0);if(_0x2103f0===0x1){_0x2dbf45=_0xd38f('0x62');}throw new db[(_0xd38f('0x5a'))][(_0xd38f('0x5b'))](_0x2dbf45);}}return;};exports[_0xd38f('0x63')]=function(_0x4f218c,_0x2973dc){var _0x876310=_0x2973dc?encryptor[_0xd38f('0x5e')](_0x2973dc)[_0xd38f('0x64')](','):[];if(_0x876310[_0xd38f('0x65')]===0x5){_0x876310['splice'](-0x1,0x1);}_0x876310[_0xd38f('0x66')](_0x4f218c);return encryptor[_0xd38f('0x67')](_0x876310[_0xd38f('0x68')](','));};function signJwt(_0x199db1){var _0x4b3b0b=BPromise[_0xd38f('0x69')](jwt[_0xd38f('0x6a')],{'context':jwt});var _0xc3525f=_0x199db1['secret']||config['secrets'][_0xd38f('0x6b')];return new BPromise(function(_0x44ba08,_0x4d0ced){_0x4b3b0b(_0x199db1['payload'],_0xc3525f,_0x199db1[_0xd38f('0x6c')])[_0xd38f('0x36')](function(_0x2a646a){_0x44ba08(_0x2a646a);})[_0xd38f('0x2e')](function(_0x28ae40){_0x4d0ced(_0x28ae40);});});}function verifyJwt(_0x182046,_0x340d0e,_0x37553e){var _0x27d0da=BPromise[_0xd38f('0x69')](jwt['verify'],{'context':jwt});var _0xc1a1b2=_0x37553e||config[_0xd38f('0xa')][_0xd38f('0x6b')];return new BPromise(function(_0x41b4f3,_0x3df2a5){_0x27d0da(_0x182046,_0xc1a1b2,_0x340d0e)[_0xd38f('0x36')](function(_0x5c9201){_0x41b4f3(_0x5c9201);})[_0xd38f('0x2e')](function(_0x421ce4){_0x3df2a5(_0x421ce4);});});}function generateNonce(){return crypto[_0xd38f('0x6d')](0x10)[_0xd38f('0x6e')](_0xd38f('0x6f'));}function generateIssuedAt(){return Math[_0xd38f('0x70')](Date[_0xd38f('0x71')]()/0x3e8)[_0xd38f('0x6e')]();}function createJwt(_0x4fc7bf){var _0x273264={'payload':{'iat':_0x4fc7bf['apiKeyIat'],'nonce':_0x4fc7bf[_0xd38f('0x3f')]},'options':{'algorithm':_0xd38f('0x72'),'subject':_0x4fc7bf['id']['toString'](),'issuer':hardwareConf[_0xd38f('0x3a')](),'audience':hardwareConf[_0xd38f('0x3a')]()}};return signJwt(_0x273264)['then'](function(_0x1086f6){return{'iat':_0x4fc7bf[_0xd38f('0x54')],'nonce':_0x4fc7bf[_0xd38f('0x3f')],'token':_0x1086f6};});}
\ No newline at end of file
index bf31fd5..2c8aa1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bc3=['algorithm','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','binary','write','end','final','close','decryptFile','unlink','createCipher','base64','decryptString','createDecipher','update','utf8','crypto','bluebird','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x1bc3,0xe4));var _0x31bc=function(_0x371c8a,_0xe8ca1d){_0x371c8a=_0x371c8a-0x0;var _0xef613c=_0x1bc3[_0x371c8a];return _0xef613c;};'use strict';var crypto=require(_0x31bc('0x0'));var fs=require('fs');var BPromise=require(_0x31bc('0x1'));var _=require('lodash');var config=require(_0x31bc('0x2'));var logger=require(_0x31bc('0x3'))(_0x31bc('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x31bc('0x5')][_0x31bc('0x6')],'algorithm':_0x31bc('0x7')};const fileOptions={'algorithm':_0x31bc('0x8')};if(config['encrypt']&&config['encrypt']['algorithm']){var isSupported=isAlgorithmSupported(config[_0x31bc('0x9')][_0x31bc('0xa')]);if(isSupported){fileOptions[_0x31bc('0xa')]=config['encrypt'][_0x31bc('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x31bc('0xb')](config[_0x31bc('0x9')][_0x31bc('0xa')],_0x31bc('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x4a9b27){return AES_SUPPORTED_RX[_0x31bc('0xd')](_0x4a9b27);}function getSupportedCiphers(){return crypto[_0x31bc('0xe')]()[_0x31bc('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0x3b59c6){return getSupportedCiphers()['indexOf'](_0x3b59c6)>-0x1;}function combineOptions(_0x1e0fde){var _0x3e7cf6={};for(var _0x2c068b in fileOptions){if(fileOptions[_0x31bc('0x10')](_0x2c068b)){_0x3e7cf6[_0x2c068b]=fileOptions[_0x2c068b];}}if(_0x1e0fde){for(var _0x4abb84 in _0x1e0fde){if(_0x1e0fde[_0x31bc('0x10')](_0x4abb84)){_0x3e7cf6[_0x4abb84]=_0x1e0fde[_0x4abb84];}}}return _0x3e7cf6;}exports[_0x31bc('0x11')]=function(_0x59b93d,_0x588d46,_0x341587,_0xbfdb1c){return new BPromise(function(_0x4a96d9,_0x3c08d8){_0xbfdb1c=combineOptions(_0xbfdb1c);var _0x18390a=new Buffer(_0x341587);var _0x31513b=fs[_0x31bc('0x12')](_0x59b93d);var _0x1742f3=fs[_0x31bc('0x13')](_0x588d46);var _0x3e8a30=crypto['createCipher'](_0xbfdb1c[_0x31bc('0xa')],_0x18390a);_0x31513b['on'](_0x31bc('0x14'),function(_0x1b3389){var _0x1dd4ee=new Buffer(_0x3e8a30['update'](_0x1b3389),_0x31bc('0x15'));_0x1742f3[_0x31bc('0x16')](_0x1dd4ee);});_0x31513b['on'](_0x31bc('0x17'),function(){try{var _0x44045c=new Buffer(_0x3e8a30[_0x31bc('0x18')](_0x31bc('0x15')),'binary');_0x1742f3[_0x31bc('0x16')](_0x44045c);_0x1742f3[_0x31bc('0x17')]();_0x1742f3['on'](_0x31bc('0x19'),function(){return _0x4a96d9(_0x588d46);});}catch(_0x44407d){fs['unlink'](_0x588d46);return _0x3c08d8(_0x44407d);}});});};exports[_0x31bc('0x1a')]=function(_0x291887,_0xf4dc19,_0x285c4d,_0xe74a5d){return new BPromise(function(_0x5f4aca,_0x59affc){_0xe74a5d=combineOptions(_0xe74a5d);var _0x1b32b7=new Buffer(_0x285c4d);var _0x21c4be=fs['createReadStream'](_0x291887);var _0xb8053a=fs[_0x31bc('0x13')](_0xf4dc19);var _0x1ef90b=crypto['createDecipher'](_0xe74a5d[_0x31bc('0xa')],_0x1b32b7);_0x21c4be['on'](_0x31bc('0x14'),function(_0x28b41f){var _0x38be40=new Buffer(_0x1ef90b['update'](_0x28b41f),'binary');_0xb8053a[_0x31bc('0x16')](_0x38be40);});_0x21c4be['on'](_0x31bc('0x17'),function(){try{var _0x392a6b=new Buffer(_0x1ef90b[_0x31bc('0x18')](_0x31bc('0x15')),_0x31bc('0x15'));_0xb8053a[_0x31bc('0x16')](_0x392a6b);_0xb8053a[_0x31bc('0x17')]();_0xb8053a['on']('close',function(){return _0x5f4aca(_0xf4dc19);});}catch(_0x5b4dbd){fs[_0x31bc('0x1b')](_0xf4dc19);return _0x59affc(_0x5b4dbd);}});});};exports['encryptString']=function(_0x38776f,_0x59b23e,_0x3753d8){var _0x14e672=_0x3753d8||stringOptions['algorithm'];var _0x9c0538=_0x59b23e||stringOptions['secret'];var _0x3ac363=crypto[_0x31bc('0x1c')](_0x14e672,_0x9c0538);var _0x113493=_0x3ac363['update'](_0x38776f,'utf8',_0x31bc('0x1d'));_0x113493+=_0x3ac363[_0x31bc('0x18')](_0x31bc('0x1d'));return _0x113493;};exports[_0x31bc('0x1e')]=function(_0x2fe8df,_0x4cb792,_0x5b4942){var _0x244646=_0x5b4942||stringOptions['algorithm'];var _0x5a17ad=_0x4cb792||stringOptions['secret'];var _0x3b97a1=crypto[_0x31bc('0x1f')](_0x244646,_0x5a17ad);var _0x4a02d1=_0x3b97a1[_0x31bc('0x20')](_0x2fe8df,_0x31bc('0x1d'),_0x31bc('0x21'));_0x4a02d1+=_0x3b97a1[_0x31bc('0x18')](_0x31bc('0x21'));return _0x4a02d1;};
\ No newline at end of file
+var _0xbfa7=['secret','utf8','base64','decryptString','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createWriteStream','createCipher','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','createDecipher','data','encryptString'];(function(_0xe3de60,_0x21bb8b){var _0xe37aa3=function(_0x8b26b8){while(--_0x8b26b8){_0xe3de60['push'](_0xe3de60['shift']());}};_0xe37aa3(++_0x21bb8b);}(_0xbfa7,0x1d8));var _0x7bfa=function(_0x3968ec,_0x496c76){_0x3968ec=_0x3968ec-0x0;var _0x3299b8=_0xbfa7[_0x3968ec];return _0x3299b8;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x7bfa('0x0'));var _=require(_0x7bfa('0x1'));var config=require(_0x7bfa('0x2'));var logger=require(_0x7bfa('0x3'))(_0x7bfa('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x7bfa('0x5')][_0x7bfa('0x6')],'algorithm':_0x7bfa('0x7')};const fileOptions={'algorithm':_0x7bfa('0x8')};if(config[_0x7bfa('0x9')]&&config[_0x7bfa('0x9')][_0x7bfa('0xa')]){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0x7bfa('0xa')]=config[_0x7bfa('0x9')][_0x7bfa('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x7bfa('0xb')](',\x20');logger['error'](config['encrypt'][_0x7bfa('0xa')],_0x7bfa('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x4f013b){return AES_SUPPORTED_RX[_0x7bfa('0xd')](_0x4f013b);}function getSupportedCiphers(){return crypto[_0x7bfa('0xe')]()[_0x7bfa('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0x286be2){return getSupportedCiphers()[_0x7bfa('0x10')](_0x286be2)>-0x1;}function combineOptions(_0x2abdfd){var _0x284248={};for(var _0x88fc24 in fileOptions){if(fileOptions[_0x7bfa('0x11')](_0x88fc24)){_0x284248[_0x88fc24]=fileOptions[_0x88fc24];}}if(_0x2abdfd){for(var _0x48928e in _0x2abdfd){if(_0x2abdfd[_0x7bfa('0x11')](_0x48928e)){_0x284248[_0x48928e]=_0x2abdfd[_0x48928e];}}}return _0x284248;}exports['encryptFile']=function(_0x310c6d,_0x4bf12a,_0x44a495,_0x427604){return new BPromise(function(_0xabd8f8,_0x24f86a){_0x427604=combineOptions(_0x427604);var _0x1e8e73=new Buffer(_0x44a495);var _0x5ad56f=fs['createReadStream'](_0x310c6d);var _0x4dda9f=fs[_0x7bfa('0x12')](_0x4bf12a);var _0x526853=crypto[_0x7bfa('0x13')](_0x427604[_0x7bfa('0xa')],_0x1e8e73);_0x5ad56f['on']('data',function(_0x2cb10c){var _0x4f6c8f=new Buffer(_0x526853[_0x7bfa('0x14')](_0x2cb10c),_0x7bfa('0x15'));_0x4dda9f[_0x7bfa('0x16')](_0x4f6c8f);});_0x5ad56f['on'](_0x7bfa('0x17'),function(){try{var _0x1d2f4e=new Buffer(_0x526853[_0x7bfa('0x18')](_0x7bfa('0x15')),_0x7bfa('0x15'));_0x4dda9f[_0x7bfa('0x16')](_0x1d2f4e);_0x4dda9f['end']();_0x4dda9f['on'](_0x7bfa('0x19'),function(){return _0xabd8f8(_0x4bf12a);});}catch(_0x17068d){fs[_0x7bfa('0x1a')](_0x4bf12a);return _0x24f86a(_0x17068d);}});});};exports[_0x7bfa('0x1b')]=function(_0xbae8ef,_0x121ec7,_0xf2b5c9,_0x1b1b01){return new BPromise(function(_0x336735,_0x4d6ca8){_0x1b1b01=combineOptions(_0x1b1b01);var _0x5bd42c=new Buffer(_0xf2b5c9);var _0xbac005=fs[_0x7bfa('0x1c')](_0xbae8ef);var _0x3c9d72=fs[_0x7bfa('0x12')](_0x121ec7);var _0x128e3e=crypto[_0x7bfa('0x1d')](_0x1b1b01[_0x7bfa('0xa')],_0x5bd42c);_0xbac005['on'](_0x7bfa('0x1e'),function(_0x4b60cd){var _0x1221cd=new Buffer(_0x128e3e[_0x7bfa('0x14')](_0x4b60cd),_0x7bfa('0x15'));_0x3c9d72[_0x7bfa('0x16')](_0x1221cd);});_0xbac005['on'](_0x7bfa('0x17'),function(){try{var _0x2bb45d=new Buffer(_0x128e3e[_0x7bfa('0x18')](_0x7bfa('0x15')),_0x7bfa('0x15'));_0x3c9d72[_0x7bfa('0x16')](_0x2bb45d);_0x3c9d72[_0x7bfa('0x17')]();_0x3c9d72['on']('close',function(){return _0x336735(_0x121ec7);});}catch(_0x4b0efc){fs[_0x7bfa('0x1a')](_0x121ec7);return _0x4d6ca8(_0x4b0efc);}});});};exports[_0x7bfa('0x1f')]=function(_0x1fc379,_0x1aa141,_0x53b1f5){var _0xc193b=_0x53b1f5||stringOptions['algorithm'];var _0x2caf4c=_0x1aa141||stringOptions[_0x7bfa('0x20')];var _0x1cae24=crypto[_0x7bfa('0x13')](_0xc193b,_0x2caf4c);var _0x13eef6=_0x1cae24['update'](_0x1fc379,_0x7bfa('0x21'),_0x7bfa('0x22'));_0x13eef6+=_0x1cae24[_0x7bfa('0x18')]('base64');return _0x13eef6;};exports[_0x7bfa('0x23')]=function(_0x1dae4a,_0x4517d8,_0x3b0d4a){var _0x536696=_0x3b0d4a||stringOptions[_0x7bfa('0xa')];var _0x53bd94=_0x4517d8||stringOptions[_0x7bfa('0x20')];var _0x45d6ba=crypto[_0x7bfa('0x1d')](_0x536696,_0x53bd94);var _0x241e57=_0x45d6ba[_0x7bfa('0x14')](_0x1dae4a,'base64',_0x7bfa('0x21'));_0x241e57+=_0x45d6ba[_0x7bfa('0x18')]('utf8');return _0x241e57;};
\ No newline at end of file
index 2841bce..1d96d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','push','dirname','basename','existsSync','join','mkdirSync','then','%s%d.%s','csv','writeFileSync','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Setting','split','splitSizeCsv','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','Empty','length'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0xf4eb,0xec));var _0xbf4e=function(_0x54ec54,_0x239b19){_0x54ec54=_0x54ec54-0x0;var _0x577804=_0xf4eb[_0x54ec54];return _0x577804;};'use strict';var util=require(_0xbf4e('0x0'));var path=require('path');var _=require('lodash');var csv=require('to-csv');var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0xbf4e('0x1'));var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xbf4e('0x2'))[_0xbf4e('0x3')];var logger=require(_0xbf4e('0x4'))(_0xbf4e('0x5'));var EXTRACTED_REPORT_ID=Number(process[_0xbf4e('0x6')][0x2]);var QUERY=process[_0xbf4e('0x6')][0x3];var PATH=process[_0xbf4e('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x540736,_0x449d55){var _0x5013c2={'status':_0x540736};var _0x5e23d4={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x449d55){_0x5013c2[_0xbf4e('0x7')]=_0x449d55;}return db[_0xbf4e('0x8')][_0xbf4e('0x9')](_0x5013c2,_0x5e23d4);}function main(){var _0xc86f04=0x1388;var _0x5da823;logger[_0xbf4e('0xa')](util[_0xbf4e('0xb')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'));return db[_0xbf4e('0xc')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xbf4e('0xd'),_0xbf4e('0xe')]})['then'](function(_0x17fd01){if(_0x17fd01){_0x5da823=_0x17fd01;_0xc86f04=_0x5da823['splitSizeCsv']||0x1388;}})['then'](function(){return dbH[_0xbf4e('0xf')][_0xbf4e('0x10')](util[_0xbf4e('0xb')](_0xbf4e('0x11'),QUERY),{'type':dbH[_0xbf4e('0xf')][_0xbf4e('0x12')]['SELECT']});})['then'](function(_0x180432){if(!_0x180432[0x0][_0xbf4e('0x13')]){return analyticExtractedReport(_0xbf4e('0x14'));}var _0x542909=[];var _0x14110b=0x0;var _0x2c292c=!![];if(_0x180432&&_0x180432[_0xbf4e('0x15')]){var _0x320e7d=_0x180432[0x0]['num']%(_0x14110b+_0xc86f04);if(_0x5da823[_0xbf4e('0xd')]){for(;_0x2c292c;_0x14110b+=_0xc86f04,_0x320e7d=_0x180432[0x0]['num']%(_0x14110b+_0xc86f04)){if(_0x320e7d==0x0||_0x320e7d==_0x180432[0x0]['num']){_0x2c292c=![];}_0x542909['push'](dbH['sequelize'][_0xbf4e('0x10')](util[_0xbf4e('0xb')](_0xbf4e('0x16'),QUERY,_0xc86f04,_0x14110b),{'type':dbH['sequelize']['QueryTypes'][_0xbf4e('0x17')]}));}}else{_0x542909[_0xbf4e('0x18')](dbH[_0xbf4e('0xf')][_0xbf4e('0x10')](QUERY,{'type':dbH[_0xbf4e('0xf')][_0xbf4e('0x12')][_0xbf4e('0x17')]}));}}var _0x3d642a=path[_0xbf4e('0x19')](PATH);var _0x376832=path[_0xbf4e('0x1a')](PATH,'.csv');var _0x1ff2ec=_0x5da823[_0xbf4e('0xd')]&&_0x542909['length']>0x1;var _0x31e3f5=[];if(!fs[_0xbf4e('0x1b')](path[_0xbf4e('0x1c')](_0x3d642a,_0x376832))&&_0x1ff2ec){fs[_0xbf4e('0x1d')](path[_0xbf4e('0x1c')](_0x3d642a,_0x376832));}return BPromise['each'](_0x542909,function(_0x90635e){_0x31e3f5[_0xbf4e('0x18')](_0x90635e);})[_0xbf4e('0x1e')](function(){for(var _0x5766d4=0x0;_0x5766d4<_0x31e3f5[_0xbf4e('0x15')];_0x5766d4+=0x1){var _0x5e08b1;var _0x5bcf71=_0x31e3f5[_0x5766d4];if(_0x1ff2ec){_0x5e08b1=path[_0xbf4e('0x1c')](_0x3d642a,_0x376832,util['format'](_0xbf4e('0x1f'),_0x376832,_0x5766d4,_0xbf4e('0x20')));}else{_0x5e08b1=path[_0xbf4e('0x1c')](_0x3d642a,util[_0xbf4e('0xb')]('%s.%s',_0x376832,_0xbf4e('0x20')));}fs[_0xbf4e('0x21')](_0x5e08b1,csv(_0x5bcf71));}})[_0xbf4e('0x1e')](function(){if(_0x1ff2ec){zipdir(path['join'](_0x3d642a,_0x376832),{'saveTo':path[_0xbf4e('0x1c')](_0x3d642a,util['format'](_0xbf4e('0x22'),_0x376832,_0xbf4e('0x23')))},function(_0xb8b58e,_0x498dbd){});rimraf(path[_0xbf4e('0x1c')](_0x3d642a,_0x376832),function(){});}})[_0xbf4e('0x1e')](function(){logger[_0xbf4e('0xa')](util[_0xbf4e('0xb')](_0xbf4e('0x24'),EXTRACTED_REPORT_ID,_0xbf4e('0x25')));return analyticExtractedReport('Completed',_0x1ff2ec?util[_0xbf4e('0xb')](_0xbf4e('0x22'),_0x376832,_0x1ff2ec?'zip':_0xbf4e('0x20')):null);});})[_0xbf4e('0x26')](function(_0x5473ed){logger[_0xbf4e('0xa')](util['format'](_0xbf4e('0x27'),EXTRACTED_REPORT_ID,'CSV'),util[_0xbf4e('0x28')](_0x5473ed,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xbf4e('0x29'));})[_0xbf4e('0x2a')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x4227=['analytics','argv','savename','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','splitSizeCsv','then','query','QueryTypes','Empty','length','split','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','dirname','basename','.csv','existsSync','mkdirSync','join','each','%s%d.%s','csv','%s.%s','writeFileSync','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','util','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger'];(function(_0x19fbac,_0x4478ed){var _0x309b41=function(_0x1f3d6c){while(--_0x1f3d6c){_0x19fbac['push'](_0x19fbac['shift']());}};_0x309b41(++_0x4478ed);}(_0x4227,0x89));var _0x7422=function(_0x4922c4,_0x5c17fc){_0x4922c4=_0x4922c4-0x0;var _0x320b3c=_0x4227[_0x4922c4];return _0x320b3c;};'use strict';var util=require(_0x7422('0x0'));var path=require('path');var _=require('lodash');var csv=require(_0x7422('0x1'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x7422('0x2'));var rimraf=require(_0x7422('0x3'));var db=require(_0x7422('0x4'))['db'];var dbH=require('../../mysqldb')[_0x7422('0x5')];var logger=require(_0x7422('0x6'))(_0x7422('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x7422('0x8')][0x2]);var QUERY=process[_0x7422('0x8')][0x3];var PATH=process[_0x7422('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xe99299,_0x45ca1a){var _0x12965e={'status':_0xe99299};var _0x599d78={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x45ca1a){_0x12965e[_0x7422('0x9')]=_0x45ca1a;}return db[_0x7422('0xa')][_0x7422('0xb')](_0x12965e,_0x599d78);}function main(){var _0x511340=0x1388;var _0x1603ee;logger['info'](util[_0x7422('0xc')](_0x7422('0xd'),EXTRACTED_REPORT_ID,_0x7422('0xe')));return db[_0x7422('0xf')][_0x7422('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x7422('0x11')]})[_0x7422('0x12')](function(_0x575c47){if(_0x575c47){_0x1603ee=_0x575c47;_0x511340=_0x1603ee[_0x7422('0x11')]||0x1388;}})[_0x7422('0x12')](function(){return dbH['sequelize'][_0x7422('0x13')](util[_0x7422('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x7422('0x14')]['SELECT']});})[_0x7422('0x12')](function(_0x788829){if(!_0x788829[0x0]['num']){return analyticExtractedReport(_0x7422('0x15'));}var _0x39c31c=[];var _0x31c3ec=0x0;var _0x1d1ac3=!![];if(_0x788829&&_0x788829[_0x7422('0x16')]){var _0x25401d=_0x788829[0x0]['num']%(_0x31c3ec+_0x511340);if(_0x1603ee[_0x7422('0x17')]){for(;_0x1d1ac3;_0x31c3ec+=_0x511340,_0x25401d=_0x788829[0x0][_0x7422('0x18')]%(_0x31c3ec+_0x511340)){if(_0x25401d==0x0||_0x25401d==_0x788829[0x0][_0x7422('0x18')]){_0x1d1ac3=![];}_0x39c31c[_0x7422('0x19')](dbH['sequelize'][_0x7422('0x13')](util['format'](_0x7422('0x1a'),QUERY,_0x511340,_0x31c3ec),{'type':dbH[_0x7422('0x1b')][_0x7422('0x14')]['SELECT']}));}}else{_0x39c31c[_0x7422('0x19')](dbH[_0x7422('0x1b')][_0x7422('0x13')](QUERY,{'type':dbH[_0x7422('0x1b')]['QueryTypes']['SELECT']}));}}var _0x2fedd2=path[_0x7422('0x1c')](PATH);var _0x20c1e3=path[_0x7422('0x1d')](PATH,_0x7422('0x1e'));var _0x35e2b0=_0x1603ee[_0x7422('0x17')]&&_0x39c31c['length']>0x1;var _0x24ce62=[];if(!fs[_0x7422('0x1f')](path['join'](_0x2fedd2,_0x20c1e3))&&_0x35e2b0){fs[_0x7422('0x20')](path[_0x7422('0x21')](_0x2fedd2,_0x20c1e3));}return BPromise[_0x7422('0x22')](_0x39c31c,function(_0x3eeb9c){_0x24ce62['push'](_0x3eeb9c);})[_0x7422('0x12')](function(){for(var _0x2eed9f=0x0;_0x2eed9f<_0x24ce62[_0x7422('0x16')];_0x2eed9f+=0x1){var _0x2dd10f;var _0x3438d1=_0x24ce62[_0x2eed9f];if(_0x35e2b0){_0x2dd10f=path['join'](_0x2fedd2,_0x20c1e3,util[_0x7422('0xc')](_0x7422('0x23'),_0x20c1e3,_0x2eed9f,_0x7422('0x24')));}else{_0x2dd10f=path[_0x7422('0x21')](_0x2fedd2,util['format'](_0x7422('0x25'),_0x20c1e3,_0x7422('0x24')));}fs[_0x7422('0x26')](_0x2dd10f,csv(_0x3438d1));}})[_0x7422('0x12')](function(){if(_0x35e2b0){zipdir(path['join'](_0x2fedd2,_0x20c1e3),{'saveTo':path[_0x7422('0x21')](_0x2fedd2,util[_0x7422('0xc')]('%s.%s',_0x20c1e3,'zip'))},function(_0x2baac6,_0x2fb125){});rimraf(path['join'](_0x2fedd2,_0x20c1e3),function(){});}})[_0x7422('0x12')](function(){logger[_0x7422('0x27')](util[_0x7422('0xc')](_0x7422('0x28'),EXTRACTED_REPORT_ID,_0x7422('0xe')));return analyticExtractedReport(_0x7422('0x29'),_0x35e2b0?util[_0x7422('0xc')](_0x7422('0x25'),_0x20c1e3,_0x35e2b0?_0x7422('0x2a'):_0x7422('0x24')):null);});})[_0x7422('0x2b')](function(_0x47e57b){logger[_0x7422('0x27')](util[_0x7422('0xc')](_0x7422('0x2c'),EXTRACTED_REPORT_ID,_0x7422('0xe')),util['inspect'](_0x47e57b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x7422('0x2d'));})[_0x7422('0x2e')](function(){process[_0x7422('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index bf5b7a8..da027ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa90=['QueryTypes','SELECT','mkdirSync','all','flatten','createPdfKitDocument','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','Failed','finally','exit','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','interactionId','YYYY-MM-DD','center','header','footer','pipe','createWriteStream','finish','error','catch','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','window','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','toString','fill','length','body','push','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','pageBreak','margin','landscape','Arial','black','right','num','dirname','basename','.pdf','join','%s.%s','pdf','find','then','splitSizePdf','split','sequelize','query'];(function(_0x1c9c24,_0x2a517b){var _0x349c69=function(_0x259ff7){while(--_0x259ff7){_0x1c9c24['push'](_0x1c9c24['shift']());}};_0x349c69(++_0x2a517b);}(_0xfa90,0x198));var _0x0fa9=function(_0x36486c,_0x4b6c51){_0x36486c=_0x36486c-0x0;var _0x3d84e1=_0xfa90[_0x36486c];return _0x3d84e1;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x0fa9('0x0'));var path=require(_0x0fa9('0x1'));var moment=require(_0x0fa9('0x2'));var htmlToPdfmake=require(_0x0fa9('0x3'));var PdfPrinter=require(_0x0fa9('0x4'));var zipdir=require(_0x0fa9('0x5'));var rimraf=require(_0x0fa9('0x6'));var JSDOM=require(_0x0fa9('0x7'))['JSDOM'];var window=new JSDOM('')[_0x0fa9('0x8')];var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x0fa9('0x9')];var logger=require('../../config/logger')(_0x0fa9('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x0fa9('0xb')][0x2]);var QUERY=process[_0x0fa9('0xb')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x0fa9('0xb')][0x5];var FORMAT=_0x0fa9('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x58d6bc,_0x5a145d){var _0x59f24f={'status':_0x58d6bc};var _0x5a83fa={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5a145d){_0x59f24f[_0x0fa9('0xd')]=_0x5a145d;}return db[_0x0fa9('0xe')][_0x0fa9('0xf')](_0x59f24f,_0x5a83fa);}function getHeaders(_0xd3a99a){return _[_0x0fa9('0x10')](_0xd3a99a,function(_0x16aa9c){return{'text':_0x16aa9c,'style':'tableHeader'};});}function getRows(_0x49f9a3,_0x4dd6cc){return _[_0x0fa9('0x10')](_0x4dd6cc,function(_0x413040){return _(_0x413040)['pick'](_0x49f9a3)[_0x0fa9('0x10')](function(_0x351a53){return _0x351a53?_[_0x0fa9('0x11')](_0x351a53):'';})['value']();});}function createTable(_0x139254,_0xbe66e7){var _0x5c9df6={'widths':_[_0x0fa9('0x12')](Array(_0x139254[_0x0fa9('0x13')]),0x91),'heights':function(_0x59a828){return _0x59a828===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0xc0cb8d=getHeaders(_0x139254);_0x5c9df6[_0x0fa9('0x14')][_0x0fa9('0x15')](_0xc0cb8d);var _0x5df85e=getRows(_0x139254,_0xbe66e7);_0x5c9df6['body']=_0x5c9df6['body']['concat'](_0x5df85e);return _0x5c9df6;}function createTables(_0x429f1d){var _0x102822=[];var _0x7ba987=_[_0x0fa9('0x16')](Object[_0x0fa9('0x17')](_0x429f1d[0x0]),0x5);_0x7ba987[_0x0fa9('0x18')](function(_0x993db5){_0x102822['push'](createTable(_0x993db5,_0x429f1d));});return _0x102822;}function getPDFDocDefinition(_0x34d4e6){var _0x8a7508=util[_0x0fa9('0x19')](_0x0fa9('0x1a'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x0fa9('0x1b')])[_0x0fa9('0x19')](FORMAT),moment(EXTRACTED_REPORT[_0x0fa9('0x1c')])['format'](FORMAT));var _0x52dbda=[];for(var _0x3ee5c2=0x0;_0x3ee5c2<_0x34d4e6[_0x0fa9('0x13')];_0x3ee5c2++){var _0x1e17a9=[];if(_0x3ee5c2===0x0){_0x1e17a9[_0x0fa9('0x15')]({'text':_0x8a7508,'style':'header'});}var _0x51fcfa={'table':_0x34d4e6[_0x3ee5c2]};if(_0x3ee5c2>0x0){_0x51fcfa[_0x0fa9('0x1d')]='before';_0x51fcfa[_0x0fa9('0x1e')]=[0x0,0x46,0x0,0x0];}_0x1e17a9[_0x0fa9('0x15')](_0x51fcfa);_0x52dbda['push'](_0x1e17a9);}return{'pageSize':'A4','pageOrientation':_0x0fa9('0x1f'),'content':_0x52dbda,'footer':function(_0x11dfbe,_0x25a7fe){return{'text':_0x11dfbe['toString']()+'\x20/\x20'+_0x25a7fe,'style':'footer'};},'defaultStyle':{'font':_0x0fa9('0x20')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x0fa9('0x21')},'footer':{'alignment':_0x0fa9('0x22'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x2ff09e){var _0x57204e=0x1388;var _0x3e5527;if(!_0x2ff09e[0x0][_0x0fa9('0x23')]){return analyticExtractedReport('Empty');}var _0x470914=[];var _0x16e6c9=0x0;var _0x4db49e=!![];var _0x38ea11=path[_0x0fa9('0x24')](PATH);var _0x20eeb6=path[_0x0fa9('0x25')](PATH,_0x0fa9('0x26'));var _0x2bbb18=path[_0x0fa9('0x27')](_0x38ea11,util[_0x0fa9('0x19')](_0x0fa9('0x28'),_0x20eeb6,_0x0fa9('0x29')));var _0x43addc=![];return db['Setting'][_0x0fa9('0x2a')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})[_0x0fa9('0x2b')](function(_0x4f12a3){if(_0x4f12a3){_0x3e5527=_0x4f12a3;_0x57204e=_0x3e5527[_0x0fa9('0x2c')]||0x3e8;}})[_0x0fa9('0x2b')](function(){if(_0x2ff09e&&_0x2ff09e[_0x0fa9('0x13')]){var _0x447f98=_0x2ff09e[0x0][_0x0fa9('0x23')]%(_0x16e6c9+_0x57204e);if(_0x3e5527[_0x0fa9('0x2d')]){for(;_0x4db49e;_0x16e6c9+=_0x57204e,_0x447f98=_0x2ff09e[0x0][_0x0fa9('0x23')]%(_0x16e6c9+_0x57204e)){if(_0x447f98==0x0||_0x447f98==_0x2ff09e[0x0][_0x0fa9('0x23')]){_0x4db49e=![];}_0x470914[_0x0fa9('0x15')](dbH[_0x0fa9('0x2e')][_0x0fa9('0x2f')](util[_0x0fa9('0x19')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x57204e,_0x16e6c9),{'type':dbH[_0x0fa9('0x2e')]['QueryTypes']['SELECT']}));}}else{_0x470914[_0x0fa9('0x15')](dbH[_0x0fa9('0x2e')][_0x0fa9('0x2f')](QUERY,{'type':dbH[_0x0fa9('0x2e')][_0x0fa9('0x30')][_0x0fa9('0x31')]}));}}_0x43addc=_0x3e5527[_0x0fa9('0x2d')]&&_0x470914[_0x0fa9('0x13')]>0x1;if(!fs['existsSync'](path[_0x0fa9('0x27')](_0x38ea11,_0x20eeb6))&&_0x43addc){fs[_0x0fa9('0x32')](path['join'](_0x38ea11,_0x20eeb6));}return Promise[_0x0fa9('0x33')](_0x470914);})[_0x0fa9('0x2b')](function(_0x50334f){return createTables(_[_0x0fa9('0x34')](_0x50334f));})['then'](function(_0x11219a){var _0x3e1d53=getPDFDocDefinition(_0x11219a);var _0x278782=getPDFPrinter();var _0x2755c6=_0x278782[_0x0fa9('0x35')](_0x3e1d53);if(_0x43addc)_0x2bbb18=path['join'](_0x38ea11,_0x20eeb6,util[_0x0fa9('0x19')]('%s%d.%s',_0x20eeb6,index,_0x0fa9('0x29')));return writePDFDocument(_0x2755c6,_0x2bbb18);})['then'](function(){if(!_0x43addc)return;zipdir(path['join'](_0x38ea11,_0x20eeb6),{'saveTo':path[_0x0fa9('0x27')](_0x38ea11,util['format'](_0x0fa9('0x28'),_0x20eeb6,_0x0fa9('0x36')))},function(_0x275edd){if(_0x275edd)throw _0x275edd;return;});})[_0x0fa9('0x2b')](function(){if(!_0x43addc)return;rimraf(path[_0x0fa9('0x27')](_0x38ea11,_0x20eeb6),function(){});})[_0x0fa9('0x2b')](function(){logger['info'](util[_0x0fa9('0x19')](_0x0fa9('0x37'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x0fa9('0x38'),_0x43addc?util[_0x0fa9('0x19')]('%s.%s',_0x20eeb6,_0x43addc?_0x0fa9('0x36'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x0fa9('0x19')](_0x0fa9('0x39'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport'][_0x0fa9('0x3a')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x0fa9('0x2b')](function(_0xf71e1b){EXTRACTED_REPORT=_0xf71e1b;return dbH['sequelize'][_0x0fa9('0x2f')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x0fa9('0x2e')][_0x0fa9('0x30')]['SELECT']});})[_0x0fa9('0x2b')](extractReport)['catch'](function(_0x5bcfe9){logger['info'](util[_0x0fa9('0x19')](_0x0fa9('0x3b'),EXTRACTED_REPORT_ID,_0x0fa9('0x3c')),util['inspect'](_0x5bcfe9,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x0fa9('0x3d'));})[_0x0fa9('0x3e')](function(){process[_0x0fa9('0x3f')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3c6b51=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x0fa9('0x40'),'italics':__dirname+_0x0fa9('0x41'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x3c6b51;}function getPDFDocDefinitionFromHTML(_0x40e550,_0x4a54c3){var _0x58ad9a=util[_0x0fa9('0x19')]('%s\x20#%d',_0x4a54c3['channel'],_0x4a54c3[_0x0fa9('0x42')]);var _0x3c9678=moment()[_0x0fa9('0x19')](_0x0fa9('0x43'))[_0x0fa9('0x11')]();var _0x3a2620=htmlToPdfmake(_0x40e550,{'window':window,'tableAutoSize':!![]});return{'content':[_0x3a2620],'defaultStyle':{'font':_0x0fa9('0x20')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x0fa9('0x44'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x0fa9('0x44')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x0fa9('0x45')}];},'footer':function(_0x201304,_0x1a4d46){return[{'text':util[_0x0fa9('0x19')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x58ad9a,_0x201304,_0x1a4d46,_0x3c9678),'style':_0x0fa9('0x46')}];}};}function writePDFDocument(_0x477184,_0x42b12b){return new Promise(function(_0x28b603,_0x2f0b11){var _0x500e37=_0x477184[_0x0fa9('0x47')](fs[_0x0fa9('0x48')](_0x42b12b));_0x500e37['on'](_0x0fa9('0x49'),function(){_0x28b603(_0x0fa9('0x49'));});_0x500e37['on'](_0x0fa9('0x4a'),function(_0xc6fa2f){_0x2f0b11(_0xc6fa2f);});_0x477184['end']();});}exports['createPdfFromHTML']=function(_0x59c5f6,_0x2d5e3a){var _0x39e9b8=getPDFPrinter();var _0x257e2d=getPDFDocDefinitionFromHTML(_0x59c5f6,_0x2d5e3a);var _0x4faac9=_0x39e9b8['createPdfKitDocument'](_0x257e2d);return writePDFDocument(_0x4faac9,_0x2d5e3a[_0x0fa9('0x1')])[_0x0fa9('0x4b')](function(_0x580132){throw _0x580132;});};
\ No newline at end of file
+var _0x6a3f=['util','moment','html-to-pdfmake','pdfmake/src/printer','rimraf','jsdom','JSDOM','window','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','toString','value','fill','length','body','concat','chunk','keys','forEach','push','format','name','startDate','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','right','num','Empty','dirname','basename','join','%s.%s','find','split','then','splitSizePdf','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','existsSync','all','createPdfKitDocument','%s%d.%s','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','pdf','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','path','lodash'];(function(_0x4cfca2,_0x243488){var _0x23d42a=function(_0x5509a4){while(--_0x5509a4){_0x4cfca2['push'](_0x4cfca2['shift']());}};_0x23d42a(++_0x243488);}(_0x6a3f,0x104));var _0xf6a3=function(_0x17d7ed,_0x57a9cb){_0x17d7ed=_0x17d7ed-0x0;var _0x1d0add=_0x6a3f[_0x17d7ed];return _0x1d0add;};'use strict';var _=require(_0xf6a3('0x0'));var fs=require('fs');var util=require(_0xf6a3('0x1'));var path=require('path');var moment=require(_0xf6a3('0x2'));var htmlToPdfmake=require(_0xf6a3('0x3'));var PdfPrinter=require(_0xf6a3('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0xf6a3('0x5'));var JSDOM=require(_0xf6a3('0x6'))[_0xf6a3('0x7')];var window=new JSDOM('')[_0xf6a3('0x8')];var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xf6a3('0x9')];var logger=require(_0xf6a3('0xa'))(_0xf6a3('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0xf6a3('0xc')][0x2]);var QUERY=process[_0xf6a3('0xc')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT=_0xf6a3('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x16b0f6,_0x27b8b7){var _0xb2f994={'status':_0x16b0f6};var _0x1424f2={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x27b8b7){_0xb2f994[_0xf6a3('0xe')]=_0x27b8b7;}return db[_0xf6a3('0xf')]['update'](_0xb2f994,_0x1424f2);}function getHeaders(_0x3a0f22){return _[_0xf6a3('0x10')](_0x3a0f22,function(_0x4b1710){return{'text':_0x4b1710,'style':_0xf6a3('0x11')};});}function getRows(_0x93861d,_0x4ec536){return _[_0xf6a3('0x10')](_0x4ec536,function(_0x42caf0){return _(_0x42caf0)['pick'](_0x93861d)[_0xf6a3('0x10')](function(_0x263f5b){return _0x263f5b?_[_0xf6a3('0x12')](_0x263f5b):'';})[_0xf6a3('0x13')]();});}function createTable(_0x4765f3,_0x1f4fc0){var _0x1d3716={'widths':_[_0xf6a3('0x14')](Array(_0x4765f3[_0xf6a3('0x15')]),0x91),'heights':function(_0x556c53){return _0x556c53===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x38629c=getHeaders(_0x4765f3);_0x1d3716[_0xf6a3('0x16')]['push'](_0x38629c);var _0x185fc1=getRows(_0x4765f3,_0x1f4fc0);_0x1d3716[_0xf6a3('0x16')]=_0x1d3716[_0xf6a3('0x16')][_0xf6a3('0x17')](_0x185fc1);return _0x1d3716;}function createTables(_0x1cd520){var _0x18565a=[];var _0x4d5b36=_[_0xf6a3('0x18')](Object[_0xf6a3('0x19')](_0x1cd520[0x0]),0x5);_0x4d5b36[_0xf6a3('0x1a')](function(_0x1239eb){_0x18565a[_0xf6a3('0x1b')](createTable(_0x1239eb,_0x1cd520));});return _0x18565a;}function getPDFDocDefinition(_0x4c3ed3){var _0x815c1f=util[_0xf6a3('0x1c')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0xf6a3('0x1d')],moment(EXTRACTED_REPORT[_0xf6a3('0x1e')])[_0xf6a3('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0xf6a3('0x1f')])[_0xf6a3('0x1c')](FORMAT));var _0x1acedd=[];for(var _0xbc93c8=0x0;_0xbc93c8<_0x4c3ed3[_0xf6a3('0x15')];_0xbc93c8++){var _0x549ffa=[];if(_0xbc93c8===0x0){_0x549ffa[_0xf6a3('0x1b')]({'text':_0x815c1f,'style':_0xf6a3('0x20')});}var _0x3bd7d1={'table':_0x4c3ed3[_0xbc93c8]};if(_0xbc93c8>0x0){_0x3bd7d1[_0xf6a3('0x21')]=_0xf6a3('0x22');_0x3bd7d1[_0xf6a3('0x23')]=[0x0,0x46,0x0,0x0];}_0x549ffa[_0xf6a3('0x1b')](_0x3bd7d1);_0x1acedd[_0xf6a3('0x1b')](_0x549ffa);}return{'pageSize':'A4','pageOrientation':_0xf6a3('0x24'),'content':_0x1acedd,'footer':function(_0x43f08e,_0x47f491){return{'text':_0x43f08e['toString']()+_0xf6a3('0x25')+_0x47f491,'style':_0xf6a3('0x26')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0xf6a3('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x411b4e){var _0x3c5f69=0x1388;var _0x4c76d8;if(!_0x411b4e[0x0][_0xf6a3('0x28')]){return analyticExtractedReport(_0xf6a3('0x29'));}var _0x491aaf=[];var _0x427ca5=0x0;var _0x5a9b1f=!![];var _0x1789e0=path[_0xf6a3('0x2a')](PATH);var _0x19a3b9=path[_0xf6a3('0x2b')](PATH,'.pdf');var _0x3e49da=path[_0xf6a3('0x2c')](_0x1789e0,util[_0xf6a3('0x1c')](_0xf6a3('0x2d'),_0x19a3b9,'pdf'));var _0x229fd8=![];return db['Setting'][_0xf6a3('0x2e')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf6a3('0x2f'),'splitSizePdf']})[_0xf6a3('0x30')](function(_0x15a370){if(_0x15a370){_0x4c76d8=_0x15a370;_0x3c5f69=_0x4c76d8[_0xf6a3('0x31')]||0x3e8;}})[_0xf6a3('0x30')](function(){if(_0x411b4e&&_0x411b4e['length']){var _0x36d2f3=_0x411b4e[0x0][_0xf6a3('0x28')]%(_0x427ca5+_0x3c5f69);if(_0x4c76d8[_0xf6a3('0x2f')]){for(;_0x5a9b1f;_0x427ca5+=_0x3c5f69,_0x36d2f3=_0x411b4e[0x0]['num']%(_0x427ca5+_0x3c5f69)){if(_0x36d2f3==0x0||_0x36d2f3==_0x411b4e[0x0][_0xf6a3('0x28')]){_0x5a9b1f=![];}_0x491aaf[_0xf6a3('0x1b')](dbH['sequelize'][_0xf6a3('0x32')](util[_0xf6a3('0x1c')](_0xf6a3('0x33'),QUERY,_0x3c5f69,_0x427ca5),{'type':dbH[_0xf6a3('0x34')][_0xf6a3('0x35')][_0xf6a3('0x36')]}));}}else{_0x491aaf['push'](dbH[_0xf6a3('0x34')]['query'](QUERY,{'type':dbH[_0xf6a3('0x34')]['QueryTypes'][_0xf6a3('0x36')]}));}}_0x229fd8=_0x4c76d8['split']&&_0x491aaf[_0xf6a3('0x15')]>0x1;if(!fs[_0xf6a3('0x37')](path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9))&&_0x229fd8){fs['mkdirSync'](path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9));}return Promise[_0xf6a3('0x38')](_0x491aaf);})['then'](function(_0x95f7b4){return createTables(_['flatten'](_0x95f7b4));})['then'](function(_0x2cb85f){var _0x25dd05=getPDFDocDefinition(_0x2cb85f);var _0x417225=getPDFPrinter();var _0x1fdc9d=_0x417225[_0xf6a3('0x39')](_0x25dd05);if(_0x229fd8)_0x3e49da=path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9,util['format'](_0xf6a3('0x3a'),_0x19a3b9,index,'pdf'));return writePDFDocument(_0x1fdc9d,_0x3e49da);})[_0xf6a3('0x30')](function(){if(!_0x229fd8)return;zipdir(path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9),{'saveTo':path[_0xf6a3('0x2c')](_0x1789e0,util['format'](_0xf6a3('0x2d'),_0x19a3b9,_0xf6a3('0x3b')))},function(_0x22b2b5){if(_0x22b2b5)throw _0x22b2b5;return;});})['then'](function(){if(!_0x229fd8)return;rimraf(path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9),function(){});})[_0xf6a3('0x30')](function(){logger[_0xf6a3('0x3c')](util[_0xf6a3('0x1c')](_0xf6a3('0x3d'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xf6a3('0x3e'),_0x229fd8?util['format'](_0xf6a3('0x2d'),_0x19a3b9,_0x229fd8?_0xf6a3('0x3b'):_0xf6a3('0x3f')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xf6a3('0x3c')](util[_0xf6a3('0x1c')](_0xf6a3('0x40'),EXTRACTED_REPORT_ID,_0xf6a3('0x41')));return db[_0xf6a3('0xf')][_0xf6a3('0x42')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xf6a3('0x30')](function(_0x36f1c8){EXTRACTED_REPORT=_0x36f1c8;return dbH['sequelize'][_0xf6a3('0x32')](util[_0xf6a3('0x1c')](_0xf6a3('0x43'),QUERY),{'type':dbH[_0xf6a3('0x34')][_0xf6a3('0x35')][_0xf6a3('0x36')]});})[_0xf6a3('0x30')](extractReport)[_0xf6a3('0x44')](function(_0x10381c){logger['info'](util[_0xf6a3('0x1c')](_0xf6a3('0x45'),EXTRACTED_REPORT_ID,_0xf6a3('0x41')),util[_0xf6a3('0x46')](_0x10381c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xf6a3('0x47')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x9c6025=new PdfPrinter({'Arial':{'normal':__dirname+_0xf6a3('0x48'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xf6a3('0x49')}});return _0x9c6025;}function getPDFDocDefinitionFromHTML(_0x42da40,_0x511f0d){var _0x245501=util['format'](_0xf6a3('0x4a'),_0x511f0d[_0xf6a3('0x4b')],_0x511f0d['interactionId']);var _0x44fe5e=moment()[_0xf6a3('0x1c')](_0xf6a3('0x4c'))['toString']();var _0xd3a43b=htmlToPdfmake(_0x42da40,{'window':window,'tableAutoSize':!![]});return{'content':[_0xd3a43b],'defaultStyle':{'font':_0xf6a3('0x4d')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xf6a3('0x4e'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xf6a3('0x4e'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xf6a3('0x4e')}},'header':function(){return[{'text':_0xf6a3('0x4f'),'style':_0xf6a3('0x20')}];},'footer':function(_0x2d1d65,_0x1f37c4){return[{'text':util['format'](_0xf6a3('0x50'),_0x245501,_0x2d1d65,_0x1f37c4,_0x44fe5e),'style':'footer'}];}};}function writePDFDocument(_0xf24d4f,_0x484136){return new Promise(function(_0x4f50f8,_0x43515e){var _0x133f73=_0xf24d4f[_0xf6a3('0x51')](fs[_0xf6a3('0x52')](_0x484136));_0x133f73['on'](_0xf6a3('0x53'),function(){_0x4f50f8(_0xf6a3('0x53'));});_0x133f73['on'](_0xf6a3('0x54'),function(_0x58209f){_0x43515e(_0x58209f);});_0xf24d4f[_0xf6a3('0x55')]();});}exports['createPdfFromHTML']=function(_0x366545,_0x196f15){var _0x1863e3=getPDFPrinter();var _0x3a11e4=getPDFDocDefinitionFromHTML(_0x366545,_0x196f15);var _0x15cfb3=_0x1863e3['createPdfKitDocument'](_0x3a11e4);return writePDFDocument(_0x15cfb3,_0x196f15[_0xf6a3('0x56')])['catch'](function(_0x49b3e9){throw _0x49b3e9;});};
\ No newline at end of file
index 6d80d4c..668a03b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e7=['existsSync','join','each','%s%d.%s','xlsx','%s.%s','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','path','lodash','json2xls','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','splitSizeXlsx','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','then','num','Empty','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.xlsx','length'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x56e7,0x166));var _0x756e=function(_0x2008ee,_0xe5f904){_0x2008ee=_0x2008ee-0x0;var _0x25dede=_0x56e7[_0x2008ee];return _0x25dede;};'use strict';var util=require(_0x756e('0x0'));var path=require(_0x756e('0x1'));var _=require(_0x756e('0x2'));var fs=require('fs');var json2xls=require(_0x756e('0x3'));var BPromise=require(_0x756e('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x756e('0x5'));var db=require(_0x756e('0x6'))['db'];var dbH=require(_0x756e('0x6'))[_0x756e('0x7')];var logger=require(_0x756e('0x8'))(_0x756e('0x9'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x756e('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x16f24b,_0xf7ecba){var _0x14d84e={'status':_0x16f24b};var _0x22eebb={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xf7ecba){_0x14d84e['savename']=_0xf7ecba;}return db[_0x756e('0xb')][_0x756e('0xc')](_0x14d84e,_0x22eebb);}function main(){var _0x20cda3=0x1388;var _0x521279;logger[_0x756e('0xd')](util[_0x756e('0xe')](_0x756e('0xf'),EXTRACTED_REPORT_ID,_0x756e('0x10')));return db[_0x756e('0x11')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x756e('0x12'),_0x756e('0x13')]})['then'](function(_0xd267f4){if(_0xd267f4){_0x521279=_0xd267f4;_0x20cda3=_0x521279['splitSizeXlsx']||0x1388;}})['then'](function(){return dbH['sequelize'][_0x756e('0x14')](util[_0x756e('0xe')](_0x756e('0x15'),QUERY),{'type':dbH[_0x756e('0x16')][_0x756e('0x17')]['SELECT']});})[_0x756e('0x18')](function(_0x2dfbe4){if(!_0x2dfbe4[0x0][_0x756e('0x19')]){return analyticExtractedReport(_0x756e('0x1a'));}var _0x25fc1c=[];var _0xa8e504=0x0;var _0xf8f208=!![];if(_0x521279[_0x756e('0x12')]){if(_0x2dfbe4&&_0x2dfbe4['length']){var _0x32cfc8=_0x2dfbe4[0x0][_0x756e('0x19')]%(_0xa8e504+_0x20cda3);for(;_0xf8f208;_0xa8e504+=_0x20cda3,_0x32cfc8=_0x2dfbe4[0x0]['num']%(_0xa8e504+_0x20cda3)){if(_0x32cfc8==0x0||_0x32cfc8==_0x2dfbe4[0x0]['num']){_0xf8f208=![];}_0x25fc1c[_0x756e('0x1b')](dbH[_0x756e('0x16')][_0x756e('0x14')](util[_0x756e('0xe')](_0x756e('0x1c'),QUERY,_0x20cda3,_0xa8e504),{'type':dbH[_0x756e('0x16')]['QueryTypes'][_0x756e('0x1d')]}));}}}else{_0x25fc1c[_0x756e('0x1b')](dbH[_0x756e('0x16')]['query'](QUERY,{'type':dbH[_0x756e('0x16')][_0x756e('0x17')][_0x756e('0x1d')]}));}var _0x12a99b=path[_0x756e('0x1e')](PATH);var _0xd8628e=path[_0x756e('0x1f')](PATH,_0x756e('0x20'));var _0x460b84=_0x521279[_0x756e('0x12')]&&_0x25fc1c[_0x756e('0x21')]>0x1;var _0x126718=[];if(!fs[_0x756e('0x22')](path[_0x756e('0x23')](_0x12a99b,_0xd8628e))&&_0x460b84){fs['mkdirSync'](path[_0x756e('0x23')](_0x12a99b,_0xd8628e));}return BPromise[_0x756e('0x24')](_0x25fc1c,function(_0x2f8b92){_0x126718[_0x756e('0x1b')](_0x2f8b92);})['then'](function(){for(var _0x2416ca=0x0;_0x2416ca<_0x126718[_0x756e('0x21')];_0x2416ca+=0x1){var _0x1bbac0;var _0x131af3=_0x126718[_0x2416ca];if(_0x460b84){_0x1bbac0=path[_0x756e('0x23')](_0x12a99b,_0xd8628e,util[_0x756e('0xe')](_0x756e('0x25'),_0xd8628e,_0x2416ca,_0x756e('0x26')));}else{_0x1bbac0=path['join'](_0x12a99b,util[_0x756e('0xe')](_0x756e('0x27'),_0xd8628e,'xlsx'));}fs['writeFileSync'](_0x1bbac0,json2xls(_0x131af3),_0x756e('0x28'));}})[_0x756e('0x18')](function(){if(_0x460b84){zipdir(path[_0x756e('0x23')](_0x12a99b,_0xd8628e),{'saveTo':path['join'](_0x12a99b,util[_0x756e('0xe')](_0x756e('0x27'),_0xd8628e,_0x756e('0x29')))},function(_0x17a203,_0x46a97d){});rimraf(path['join'](_0x12a99b,_0xd8628e),function(){});}})['then'](function(){logger[_0x756e('0xd')](util[_0x756e('0xe')](_0x756e('0x2a'),EXTRACTED_REPORT_ID,_0x756e('0x10')));return analyticExtractedReport(_0x756e('0x2b'),_0x460b84?util['format'](_0x756e('0x27'),_0xd8628e,_0x460b84?_0x756e('0x29'):_0x756e('0x26')):null);});})[_0x756e('0x2c')](function(_0xf5c73c){logger[_0x756e('0xd')](util[_0x756e('0xe')](_0x756e('0x2d'),EXTRACTED_REPORT_ID,_0x756e('0x10')),util[_0x756e('0x2e')](_0xf5c73c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x756e('0x2f'));})[_0x756e('0x30')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xf62e=['../../config/logger','analytics','argv','savename','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','split','splitSizeXlsx','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','join','mkdirSync','each','xlsx','%s.%s','writeFileSync','binary','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','XLSX','inspect','Failed','finally','exit','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH'];(function(_0x31b6e4,_0x43fca6){var _0x4f66da=function(_0x133c2){while(--_0x133c2){_0x31b6e4['push'](_0x31b6e4['shift']());}};_0x4f66da(++_0x43fca6);}(_0xf62e,0x1ce));var _0xef62=function(_0x46d438,_0x300ae7){_0x46d438=_0x46d438-0x0;var _0xaf8b7a=_0xf62e[_0x46d438];return _0xaf8b7a;};'use strict';var util=require('util');var path=require(_0xef62('0x0'));var _=require(_0xef62('0x1'));var fs=require('fs');var json2xls=require(_0xef62('0x2'));var BPromise=require(_0xef62('0x3'));var zipdir=require(_0xef62('0x4'));var rimraf=require(_0xef62('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0xef62('0x6'))[_0xef62('0x7')];var logger=require(_0xef62('0x8'))(_0xef62('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xef62('0xa')][0x2]);var QUERY=process[_0xef62('0xa')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5c123e,_0x4db3d1){var _0x89aa04={'status':_0x5c123e};var _0x495cce={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4db3d1){_0x89aa04[_0xef62('0xb')]=_0x4db3d1;}return db['AnalyticExtractedReport']['update'](_0x89aa04,_0x495cce);}function main(){var _0x5dc985=0x1388;var _0x516edb;logger['info'](util[_0xef62('0xc')](_0xef62('0xd'),EXTRACTED_REPORT_ID,'XLSX'));return db[_0xef62('0xe')][_0xef62('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xef62('0x10'),_0xef62('0x11')]})[_0xef62('0x12')](function(_0x2baab6){if(_0x2baab6){_0x516edb=_0x2baab6;_0x5dc985=_0x516edb[_0xef62('0x11')]||0x1388;}})[_0xef62('0x12')](function(){return dbH['sequelize'][_0xef62('0x13')](util[_0xef62('0xc')](_0xef62('0x14'),QUERY),{'type':dbH[_0xef62('0x15')][_0xef62('0x16')][_0xef62('0x17')]});})[_0xef62('0x12')](function(_0x52cb96){if(!_0x52cb96[0x0][_0xef62('0x18')]){return analyticExtractedReport(_0xef62('0x19'));}var _0x534d4e=[];var _0x4e9469=0x0;var _0x3e23f6=!![];if(_0x516edb[_0xef62('0x10')]){if(_0x52cb96&&_0x52cb96[_0xef62('0x1a')]){var _0x5afc64=_0x52cb96[0x0][_0xef62('0x18')]%(_0x4e9469+_0x5dc985);for(;_0x3e23f6;_0x4e9469+=_0x5dc985,_0x5afc64=_0x52cb96[0x0][_0xef62('0x18')]%(_0x4e9469+_0x5dc985)){if(_0x5afc64==0x0||_0x5afc64==_0x52cb96[0x0][_0xef62('0x18')]){_0x3e23f6=![];}_0x534d4e[_0xef62('0x1b')](dbH[_0xef62('0x15')][_0xef62('0x13')](util[_0xef62('0xc')](_0xef62('0x1c'),QUERY,_0x5dc985,_0x4e9469),{'type':dbH[_0xef62('0x15')]['QueryTypes'][_0xef62('0x17')]}));}}}else{_0x534d4e[_0xef62('0x1b')](dbH[_0xef62('0x15')]['query'](QUERY,{'type':dbH[_0xef62('0x15')]['QueryTypes'][_0xef62('0x17')]}));}var _0xf90d9f=path[_0xef62('0x1d')](PATH);var _0x2e2eda=path[_0xef62('0x1e')](PATH,'.xlsx');var _0x663c75=_0x516edb[_0xef62('0x10')]&&_0x534d4e[_0xef62('0x1a')]>0x1;var _0x360189=[];if(!fs['existsSync'](path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda))&&_0x663c75){fs[_0xef62('0x20')](path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda));}return BPromise[_0xef62('0x21')](_0x534d4e,function(_0x59d803){_0x360189[_0xef62('0x1b')](_0x59d803);})[_0xef62('0x12')](function(){for(var _0x4f9d59=0x0;_0x4f9d59<_0x360189['length'];_0x4f9d59+=0x1){var _0xb0d03c;var _0x5a869a=_0x360189[_0x4f9d59];if(_0x663c75){_0xb0d03c=path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda,util[_0xef62('0xc')]('%s%d.%s',_0x2e2eda,_0x4f9d59,_0xef62('0x22')));}else{_0xb0d03c=path['join'](_0xf90d9f,util[_0xef62('0xc')](_0xef62('0x23'),_0x2e2eda,'xlsx'));}fs[_0xef62('0x24')](_0xb0d03c,json2xls(_0x5a869a),_0xef62('0x25'));}})[_0xef62('0x12')](function(){if(_0x663c75){zipdir(path['join'](_0xf90d9f,_0x2e2eda),{'saveTo':path[_0xef62('0x1f')](_0xf90d9f,util[_0xef62('0xc')](_0xef62('0x23'),_0x2e2eda,_0xef62('0x26')))},function(_0x399c52,_0x2e591b){});rimraf(path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda),function(){});}})[_0xef62('0x12')](function(){logger[_0xef62('0x27')](util[_0xef62('0xc')](_0xef62('0x28'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0xef62('0x29'),_0x663c75?util['format']('%s.%s',_0x2e2eda,_0x663c75?'zip':_0xef62('0x22')):null);});})['catch'](function(_0x3494f1){logger[_0xef62('0x27')](util[_0xef62('0xc')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xef62('0x2a')),util[_0xef62('0x2b')](_0x3494f1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xef62('0x2c'));})[_0xef62('0x2d')](function(){process[_0xef62('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index 14d2a7d..0106f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe050=['IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','then','filter','queue','hasOwnProperty','priority','extension','find','extensions','push','type','format','CDR(type)=%s','context','VoiceExtensionId','inbound','Set','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','error','rewrite','util','models','Interval','findAll','intervals','VoiceExtension'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe050,0x88));var _0x0e05=function(_0x2bf953,_0x48e9fb){_0x2bf953=_0x2bf953-0x0;var _0x5ea18d=_0xe050[_0x2bf953];return _0x5ea18d;};'use strict';var _=require('lodash');var util=require(_0x0e05('0x0'));function rewrite(_0x287743,_0x2049e6){var _0x16711b=this;return _0x287743[_0x0e05('0x1')][_0x0e05('0x2')][_0x0e05('0x3')]({'raw':!![]})['then'](function(_0x3a03b8){_0x16711b[_0x0e05('0x4')]=_0x3a03b8;return _0x287743[_0x0e05('0x1')][_0x0e05('0x5')][_0x0e05('0x3')]({'where':{'IntervalId':_0x2049e6[_0x0e05('0x6')]},'raw':!![]});})['then'](function(_0x259ee9){return _0x287743[_0x0e05('0x1')][_0x0e05('0x5')][_0x0e05('0x3')]({'where':{'exten':{'$in':_[_0x0e05('0x7')](_[_0x0e05('0x8')](_0x259ee9,_0x0e05('0x9')))}},'order':[{'raw':_0x0e05('0xa')}],'raw':!![]});})[_0x0e05('0xb')](function(_0xc713ed){var _0x3b937f=_[_0x0e05('0xc')](_0xc713ed,{'priority':'1'});var _0x4b2b4b=_['filter'](_0xc713ed,{'isApp':0x1});var _0x242af4=_['groupBy'](_0x4b2b4b,_0x0e05('0x9'));var _0x3abfd8=[_0x0e05('0xd'),'playback'];var _0x251525=[];var _0x3c140e=[];for(var _0x5b3585 in _0x242af4){if(_0x242af4[_0x0e05('0xe')](_0x5b3585)){_0x16711b[_0x0e05('0xf')]=0x2;_0x16711b['extensions']=[];_0x16711b[_0x0e05('0x10')]=_[_0x0e05('0x11')](_0x3b937f,{'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')]});_0x16711b[_0x0e05('0x12')][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')],'app':'Set','appdata':util[_0x0e05('0x15')](_0x0e05('0x16'),_0x242af4[_0x5b3585][0x0]['type']),'context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')],'priority':_0x16711b['priority']++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});if(_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')]===_0x0e05('0x19')){_0x16711b['extensions'][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0]['type'],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x1b')+_0x242af4[_0x5b3585][0x0]['VoiceExtensionId'],'context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'exten':_0x242af4[_0x5b3585][0x0]['exten'],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});}else if(_0x242af4[_0x5b3585][0x0]['type']===_0x0e05('0x1c')){if(_0x16711b[_0x0e05('0x10')]){_0x16711b[_0x0e05('0x12')][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0]['type'],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x1d')+(_0x16711b[_0x0e05('0x10')][_0x0e05('0x1e')]?_0x0e05('0x1f')+_0x16711b[_0x0e05('0x10')][_0x0e05('0x1e')]+'}':'${EXTEN}'),'context':_0x242af4[_0x5b3585][0x0]['context'],'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});}_0x16711b['extensions']['push']({'type':_0x242af4[_0x5b3585][0x0]['type'],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x1b')+_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')],'context':_0x242af4[_0x5b3585][0x0]['context'],'exten':_0x242af4[_0x5b3585][0x0]['exten'],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0]['VoiceExtensionId']});var _0x56ed60=_0x16711b[_0x0e05('0xf')]++;_0x16711b[_0x0e05('0x12')]['push']({'type':_0x242af4[_0x5b3585][0x0]['type'],'app':_0x0e05('0x20'),'appdata':_0x0e05('0x21')+(_0x56ed60+0x2)+_0x0e05('0x22')+(_0x56ed60+0x1)+')','context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'exten':_0x242af4[_0x5b3585][0x0]['exten'],'priority':_0x56ed60,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});if(_0x16711b[_0x0e05('0x10')]){_0x16711b[_0x0e05('0x12')][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x16711b[_0x0e05('0x10')][_0x0e05('0x1e')]?_0x0e05('0x23')+_0x16711b['extension'][_0x0e05('0x1e')]+'}':_0x0e05('0x24'),'context':_0x242af4[_0x5b3585][0x0]['context'],'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});}_0x16711b['extensions']['push']({'type':_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x25')+_0x242af4[_0x5b3585][0x0]['VoiceExtensionId'],'context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'exten':_0x242af4[_0x5b3585][0x0]['exten'],'priority':_0x16711b['priority']++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});if(_0x16711b[_0x0e05('0x10')]&&_0x16711b['extension']['hasOwnProperty'](_0x0e05('0x26'))&&_0x16711b[_0x0e05('0x10')][_0x0e05('0x26')]!==_0x0e05('0x27')){_0x16711b['extensions'][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x28'),'context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0]['VoiceExtensionId']});_0x16711b['extensions'][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x29')+_0x16711b[_0x0e05('0x10')]['recordingFormat']||_0x0e05('0x2a'),'context':_0x242af4[_0x5b3585][0x0]['context'],'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});}}_0x16711b['extensions']['push']({'type':_0x242af4[_0x5b3585][0x0]['type'],'app':_0x0e05('0x1a'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'exten':_0x242af4[_0x5b3585][0x0]['exten'],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});_0x16711b['extensions'][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x2b'),'context':_0x242af4[_0x5b3585][0x0]['context'],'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')],'priority':_0x16711b['priority']++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});_0x16711b[_0x0e05('0x12')][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0]['type'],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x2c'),'context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'exten':_0x242af4[_0x5b3585][0x0][_0x0e05('0x9')],'priority':_0x16711b[_0x0e05('0xf')]++,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});for(var _0x554fe2=0x0,_0x114726=0x0;_0x554fe2<_0x242af4[_0x5b3585][_0x0e05('0x2d')];_0x554fe2+=0x1,_0x114726=0x0){var _0x5b7315=_0x242af4[_0x5b3585][_0x554fe2];if(_0x5b7315['type']){_0x5b7315[_0x0e05('0x14')]=_0x5b7315[_0x0e05('0x14')]['toLowerCase']();}var _0x3f5812=[];var _0x2d72fd=[];delete _0x5b7315['id'];delete _0x5b7315[_0x0e05('0x2e')];delete _0x5b7315[_0x0e05('0x2f')];var _0x447ac8=_0x5b7315[_0x0e05('0x30')]!==_0x0e05('0x31')?[_0x5b7315[_0x0e05('0x30')]]:_0x5b7315[_0x0e05('0x6')]?_['map'](_[_0x0e05('0xc')](_0x16711b[_0x0e05('0x4')],{'IntervalId':_0x5b7315[_0x0e05('0x6')]}),_0x0e05('0x30')):[];if(_0x5b7315[_0x0e05('0xe')](_0x0e05('0x32'))){if(_0x5b7315[_0x0e05('0x32')]&&_0x5b7315[_0x0e05('0x32')]!=='--'){_0x3f5812['push']({'type':_0x5b7315[_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x33')+_0x5b7315['tag'],'context':_0x5b7315[_0x0e05('0x17')],'exten':_0x5b7315[_0x0e05('0x9')],'priority':_0x447ac8['length']+_0x16711b['priority']+_0x114726++,'VoiceExtensionId':_0x5b7315['VoiceExtensionId']});}}if(_0x5b7315[_0x0e05('0x14')]===_0x0e05('0x1c')&&_0x5b7315[_0x0e05('0xe')](_0x0e05('0x34'))){if(_0x5b7315['callerID']){_0x3f5812[_0x0e05('0x13')]({'type':_0x5b7315[_0x0e05('0x14')],'app':'ExecIf','appdata':_0x0e05('0x35')+_0x5b7315[_0x0e05('0x34')]+')','context':_0x5b7315[_0x0e05('0x17')],'exten':_0x5b7315[_0x0e05('0x9')],'priority':_0x447ac8[_0x0e05('0x2d')]+_0x16711b[_0x0e05('0xf')]+_0x114726++,'VoiceExtensionId':_0x5b7315['VoiceExtensionId']});}else{_0x3f5812[_0x0e05('0x13')]({'type':_0x5b7315['type'],'app':_0x0e05('0x20'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x5b7315[_0x0e05('0x17')],'exten':_0x5b7315['exten'],'priority':_0x447ac8['length']+_0x16711b[_0x0e05('0xf')]+_0x114726++,'VoiceExtensionId':_0x5b7315[_0x0e05('0x18')]});}}if(_0x5b7315[_0x0e05('0xe')](_0x0e05('0x36'))){if(_0x3abfd8[_0x0e05('0x37')](_0x5b7315[_0x0e05('0x38')]['toLowerCase']())>=0x0&&_0x5b7315['appType']!==_0x0e05('0x39')){if(_0x5b7315['answer']){_0x3f5812[_0x0e05('0x13')]({'type':_0x5b7315['type'],'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x5b7315[_0x0e05('0x17')],'exten':_0x5b7315['exten'],'priority':_0x447ac8[_0x0e05('0x2d')]+_0x16711b[_0x0e05('0xf')]+_0x114726++,'VoiceExtensionId':_0x5b7315[_0x0e05('0x18')]});_0x3f5812[_0x0e05('0x13')]({'type':_0x5b7315[_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x3a'),'context':_0x5b7315[_0x0e05('0x17')],'exten':_0x5b7315['exten'],'priority':_0x447ac8[_0x0e05('0x2d')]+_0x16711b['priority']+_0x114726++,'VoiceExtensionId':_0x5b7315[_0x0e05('0x18')]});}else{_0x3f5812['push']({'type':_0x5b7315[_0x0e05('0x14')],'app':_0x0e05('0x20'),'appdata':_0x0e05('0x3b'),'context':_0x5b7315[_0x0e05('0x17')],'exten':_0x5b7315['exten'],'priority':_0x447ac8[_0x0e05('0x2d')]+_0x16711b[_0x0e05('0xf')]+_0x114726++,'VoiceExtensionId':_0x5b7315[_0x0e05('0x18')]});_0x3f5812[_0x0e05('0x13')]({'type':_0x5b7315[_0x0e05('0x14')],'app':_0x0e05('0x1a'),'appdata':_0x0e05('0x3c'),'context':_0x5b7315[_0x0e05('0x17')],'exten':_0x5b7315[_0x0e05('0x9')],'priority':_0x447ac8[_0x0e05('0x2d')]+_0x16711b[_0x0e05('0xf')]+_0x114726++,'VoiceExtensionId':_0x5b7315['VoiceExtensionId']});}}}for(var _0x2e9cd7=0x0;_0x2e9cd7<_0x447ac8['length'];_0x2e9cd7+=0x1){var _0x3c12c5=_0x16711b[_0x0e05('0xf')]+_0x447ac8[_0x0e05('0x2d')];var _0x10cfd7=_0x2e9cd7===_0x447ac8[_0x0e05('0x2d')]-0x1?_0x16711b[_0x0e05('0xf')]+_0x3f5812['length']+_0x2d72fd[_0x0e05('0x2d')]+0x2:_0x16711b[_0x0e05('0xf')]+_0x2e9cd7+0x1;_0x3f5812[_0x0e05('0x3d')](_0x2e9cd7,0x0,{'type':_0x5b7315[_0x0e05('0x14')],'app':'GotoIfTime','appdata':_0x447ac8[_0x2e9cd7]+'?'+_0x5b7315[_0x0e05('0x17')]+_0x0e05('0x3e')+_0x3c12c5+':'+_0x5b7315['context']+_0x0e05('0x3e')+_0x10cfd7,'exten':_0x5b7315[_0x0e05('0x9')],'context':_0x5b7315[_0x0e05('0x17')],'priority':_0x16711b[_0x0e05('0xf')]+_0x2e9cd7,'VoiceExtensionId':_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]});}_0x5b7315[_0x0e05('0xf')]=_0x3f5812[_0x0e05('0x2d')]?_[_0x0e05('0x3f')](_0x3f5812)[_0x0e05('0xf')]+0x1:_0x16711b[_0x0e05('0xf')];_0x16711b[_0x0e05('0xf')]=(_0x2d72fd[_0x0e05('0x2d')]?_['last'](_0x2d72fd)['priority']:_0x5b7315[_0x0e05('0xf')])+0x1;_0x16711b[_0x0e05('0x12')]=_[_0x0e05('0x40')](_0x16711b[_0x0e05('0x12')],_0x3f5812,[_0x5b7315],_0x2d72fd);}_0x16711b[_0x0e05('0x12')][_0x0e05('0x13')]({'type':_0x242af4[_0x5b3585][0x0][_0x0e05('0x14')],'app':_0x0e05('0x41'),'exten':_0x242af4[_0x5b3585][0x0]['exten'],'context':_0x242af4[_0x5b3585][0x0][_0x0e05('0x17')],'priority':_0x16711b['priority'],'VoiceExtensionId':_0x242af4[_0x5b3585][0x0]['VoiceExtensionId']});_0x251525[_0x0e05('0x13')](_0x242af4[_0x5b3585][0x0][_0x0e05('0x18')]);_0x3c140e=_['concat'](_0x3c140e,_0x16711b[_0x0e05('0x12')]);}}return _0x287743[_0x0e05('0x42')](function(_0x2097d4){return _0x287743['models'][_0x0e05('0x5')][_0x0e05('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x251525}},'transaction':_0x2097d4})[_0x0e05('0xb')](function(_0x4f9327){return _0x287743[_0x0e05('0x1')][_0x0e05('0x5')][_0x0e05('0x44')](_['sortBy'](_0x3c140e,_0x0e05('0xf')),{'transaction':_0x2097d4});});});})['catch'](function(_0x2a0196){console[_0x0e05('0x45')](_0x2a0196);});}exports[_0x0e05('0x46')]=rewrite;
\ No newline at end of file
+var _0xab89=['Hangup','transaction','destroy','bulkCreate','catch','error','rewrite','lodash','util','models','Interval','findAll','intervals','VoiceExtension','IntervalId','then','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','hasOwnProperty','priority','extensions','extension','find','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','push','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','indexOf','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat'];(function(_0x5221da,_0x405dfd){var _0x3960a6=function(_0x32bb01){while(--_0x32bb01){_0x5221da['push'](_0x5221da['shift']());}};_0x3960a6(++_0x405dfd);}(_0xab89,0x127));var _0x9ab8=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0xab89[_0x344a3f];return _0x264712;};'use strict';var _=require(_0x9ab8('0x0'));var util=require(_0x9ab8('0x1'));function rewrite(_0x18241a,_0xf76f21){var _0x532a37=this;return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x3')][_0x9ab8('0x4')]({'raw':!![]})['then'](function(_0xea57ea){_0x532a37[_0x9ab8('0x5')]=_0xea57ea;return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x6')]['findAll']({'where':{'IntervalId':_0xf76f21[_0x9ab8('0x7')]},'raw':!![]});})[_0x9ab8('0x8')](function(_0x31f2b9){return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x6')][_0x9ab8('0x4')]({'where':{'exten':{'$in':_[_0x9ab8('0x9')](_[_0x9ab8('0xa')](_0x31f2b9,_0x9ab8('0xb')))}},'order':[{'raw':_0x9ab8('0xc')}],'raw':!![]});})[_0x9ab8('0x8')](function(_0x5d25eb){var _0x1df354=_[_0x9ab8('0xd')](_0x5d25eb,{'priority':'1'});var _0x5deba0=_[_0x9ab8('0xd')](_0x5d25eb,{'isApp':0x1});var _0x20b713=_[_0x9ab8('0xe')](_0x5deba0,_0x9ab8('0xb'));var _0x31acb6=[_0x9ab8('0xf'),'playback'];var _0x36bbee=[];var _0x7ecbe7=[];for(var _0x5c6c17 in _0x20b713){if(_0x20b713[_0x9ab8('0x10')](_0x5c6c17)){_0x532a37[_0x9ab8('0x11')]=0x2;_0x532a37[_0x9ab8('0x12')]=[];_0x532a37[_0x9ab8('0x13')]=_[_0x9ab8('0x14')](_0x1df354,{'exten':_0x20b713[_0x5c6c17][0x0]['exten']});_0x532a37[_0x9ab8('0x12')]['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':util[_0x9ab8('0x17')](_0x9ab8('0x18'),_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')]),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});if(_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')]===_0x9ab8('0x1b')){_0x532a37['extensions'][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x1d')+_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')],'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});}else if(_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')]===_0x9ab8('0x1e')){if(_0x532a37[_0x9ab8('0x13')]){_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x1f')+(_0x532a37[_0x9ab8('0x13')][_0x9ab8('0x20')]?_0x9ab8('0x21')+_0x532a37[_0x9ab8('0x13')][_0x9ab8('0x20')]+'}':'${EXTEN}'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37['priority']++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});}_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':'CDR(routeid)='+_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')],'context':_0x20b713[_0x5c6c17][0x0]['context'],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37['priority']++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});var _0x594980=_0x532a37[_0x9ab8('0x11')]++;_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':_0x9ab8('0x23')+(_0x594980+0x2)+_0x9ab8('0x24')+(_0x594980+0x1)+')','context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x594980,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});if(_0x532a37[_0x9ab8('0x13')]){_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':'Set','appdata':_0x532a37[_0x9ab8('0x13')]['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0x532a37[_0x9ab8('0x13')]['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});}_0x532a37[_0x9ab8('0x12')]['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x25')+_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId'],'context':_0x20b713[_0x5c6c17][0x0]['context'],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});if(_0x532a37[_0x9ab8('0x13')]&&_0x532a37['extension'][_0x9ab8('0x10')](_0x9ab8('0x26'))&&_0x532a37['extension'][_0x9ab8('0x26')]!==_0x9ab8('0x27')){_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':'Set','appdata':_0x9ab8('0x28'),'context':_0x20b713[_0x5c6c17][0x0]['context'],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37['priority']++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x29')+_0x532a37[_0x9ab8('0x13')][_0x9ab8('0x26')]||_0x9ab8('0x2a'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});}}_0x532a37['extensions']['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x2b'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0]['type'],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x2c'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x532a37[_0x9ab8('0x12')]['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':'Set','appdata':_0x9ab8('0x2d'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});for(var _0x407720=0x0,_0xdcafda=0x0;_0x407720<_0x20b713[_0x5c6c17]['length'];_0x407720+=0x1,_0xdcafda=0x0){var _0xf729e6=_0x20b713[_0x5c6c17][_0x407720];if(_0xf729e6['type']){_0xf729e6[_0x9ab8('0x15')]=_0xf729e6[_0x9ab8('0x15')][_0x9ab8('0x2e')]();}var _0x3578af=[];var _0x58ef2d=[];delete _0xf729e6['id'];delete _0xf729e6[_0x9ab8('0x2f')];delete _0xf729e6[_0x9ab8('0x30')];var _0x554b47=_0xf729e6[_0x9ab8('0x31')]!==_0x9ab8('0x32')?[_0xf729e6[_0x9ab8('0x31')]]:_0xf729e6[_0x9ab8('0x7')]?_[_0x9ab8('0xa')](_[_0x9ab8('0xd')](_0x532a37[_0x9ab8('0x5')],{'IntervalId':_0xf729e6[_0x9ab8('0x7')]}),_0x9ab8('0x31')):[];if(_0xf729e6[_0x9ab8('0x10')](_0x9ab8('0x33'))){if(_0xf729e6[_0x9ab8('0x33')]&&_0xf729e6[_0x9ab8('0x33')]!=='--'){_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6['type'],'app':_0x9ab8('0x16'),'appdata':'CDR(tag)='+_0xf729e6[_0x9ab8('0x33')],'context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6['exten'],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6['VoiceExtensionId']});}}if(_0xf729e6[_0x9ab8('0x15')]===_0x9ab8('0x1e')&&_0xf729e6[_0x9ab8('0x10')]('callerID')){if(_0xf729e6[_0x9ab8('0x35')]){_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':_0x9ab8('0x36')+_0xf729e6['callerID']+')','context':_0xf729e6['context'],'exten':_0xf729e6['exten'],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}else{_0x3578af['push']({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37[_0x9ab8('0x11')]+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}}if(_0xf729e6[_0x9ab8('0x10')]('answer')){if(_0x31acb6[_0x9ab8('0x37')](_0xf729e6['app'][_0x9ab8('0x2e')]())>=0x0&&_0xf729e6[_0x9ab8('0x38')]!==_0x9ab8('0x39')){if(_0xf729e6['answer']){_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6['type'],'app':_0x9ab8('0x22'),'appdata':_0x9ab8('0x3a'),'context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});_0x3578af['push']({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}else{_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37[_0x9ab8('0x11')]+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});_0x3578af['push']({'type':_0xf729e6[_0x9ab8('0x15')],'app':'Set','appdata':_0x9ab8('0x3b'),'context':_0xf729e6['context'],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47['length']+_0x532a37[_0x9ab8('0x11')]+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}}}for(var _0x457456=0x0;_0x457456<_0x554b47[_0x9ab8('0x34')];_0x457456+=0x1){var _0x28f505=_0x532a37['priority']+_0x554b47[_0x9ab8('0x34')];var _0x197b8a=_0x457456===_0x554b47[_0x9ab8('0x34')]-0x1?_0x532a37['priority']+_0x3578af[_0x9ab8('0x34')]+_0x58ef2d[_0x9ab8('0x34')]+0x2:_0x532a37[_0x9ab8('0x11')]+_0x457456+0x1;_0x3578af[_0x9ab8('0x3c')](_0x457456,0x0,{'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x3d'),'appdata':_0x554b47[_0x457456]+'?'+_0xf729e6[_0x9ab8('0x19')]+',${EXTEN},'+_0x28f505+':'+_0xf729e6[_0x9ab8('0x19')]+_0x9ab8('0x3e')+_0x197b8a,'exten':_0xf729e6[_0x9ab8('0xb')],'context':_0xf729e6[_0x9ab8('0x19')],'priority':_0x532a37[_0x9ab8('0x11')]+_0x457456,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});}_0xf729e6[_0x9ab8('0x11')]=_0x3578af['length']?_[_0x9ab8('0x3f')](_0x3578af)[_0x9ab8('0x11')]+0x1:_0x532a37[_0x9ab8('0x11')];_0x532a37['priority']=(_0x58ef2d[_0x9ab8('0x34')]?_[_0x9ab8('0x3f')](_0x58ef2d)['priority']:_0xf729e6[_0x9ab8('0x11')])+0x1;_0x532a37[_0x9ab8('0x12')]=_[_0x9ab8('0x40')](_0x532a37['extensions'],_0x3578af,[_0xf729e6],_0x58ef2d);}_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x41'),'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'context':_0x20b713[_0x5c6c17][0x0]['context'],'priority':_0x532a37[_0x9ab8('0x11')],'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x36bbee[_0x9ab8('0x1c')](_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]);_0x7ecbe7=_[_0x9ab8('0x40')](_0x7ecbe7,_0x532a37[_0x9ab8('0x12')]);}}return _0x18241a[_0x9ab8('0x42')](function(_0x1cb466){return _0x18241a['models'][_0x9ab8('0x6')][_0x9ab8('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x36bbee}},'transaction':_0x1cb466})['then'](function(_0x16d73e){return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x6')][_0x9ab8('0x44')](_['sortBy'](_0x7ecbe7,'priority'),{'transaction':_0x1cb466});});});})[_0x9ab8('0x45')](function(_0x35537e){console[_0x9ab8('0x46')](_0x35537e);});}exports[_0x9ab8('0x47')]=rewrite;
\ No newline at end of file
index 368d0da..5796a7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c14=['dialCheckDuplicateType','CmList','Lists','get','sequelize','onlyIfOpen','query','VoiceQueueId','catch','all','outbound','BlackLists','Campaign','always','CampaignId','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','../../../api/cmContact/cmContact.socket','register','argv','null','undefined','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','index','isNil','errors','length','map','message','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','inspect','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','field','toString','NOW()','updatedAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','str','calleridnum','cm_hopper_final','\x20=\x20?','cm_hopper_black','id\x20IN\x20?','VoiceQueue','findAll'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7c14,0x8e));var _0x47c1=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x7c14[_0x5d6456];return _0x4d66c1;};'use strict';var BPromise=require(_0x47c1('0x0'));var util=require(_0x47c1('0x1'));var _=require(_0x47c1('0x2'));var fs=require('fs');var squel=require(_0x47c1('0x3'));var Papa=require(_0x47c1('0x4'));var Redis=require('ioredis');var db=require(_0x47c1('0x5'))['db'];var config=require(_0x47c1('0x6'));var logger=require(_0x47c1('0x7'))(_0x47c1('0x8'));config[_0x47c1('0x9')]=_[_0x47c1('0xa')](config[_0x47c1('0x9')],{'host':_0x47c1('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x47c1('0xc'))[_0x47c1('0xd')](socket);try{if(!process['argv'][0x2]||process[_0x47c1('0xe')][0x2]==='undefined'||process['argv'][0x2]===_0x47c1('0xf')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x47c1('0xe')][0x2];if(!process['argv'][0x3]||process[_0x47c1('0xe')][0x3]===_0x47c1('0x10')||process[_0x47c1('0xe')][0x3]===_0x47c1('0xf')||!process['argv'][0x4]||process['argv'][0x4]==='undefined'||process[_0x47c1('0xe')][0x4]==='null'){throw new Error(_0x47c1('0x11'));}var FIELDS=_[_0x47c1('0x12')](process[_0x47c1('0xe')][0x3][_0x47c1('0x13')](','),process['argv'][0x4][_0x47c1('0x13')](','));if(!process[_0x47c1('0xe')][0x5]||process[_0x47c1('0xe')][0x5]==='undefined'||process[_0x47c1('0xe')][0x5]===_0x47c1('0xf')){throw new Error(_0x47c1('0x14'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x47c1('0xe')][0x6]&&process[_0x47c1('0xe')][0x6]!==_0x47c1('0x10')&&process[_0x47c1('0xe')][0x6]!==_0x47c1('0xf')?process[_0x47c1('0xe')][0x6]:null;var DUPLICATES=process[_0x47c1('0xe')][0x7]&&process[_0x47c1('0xe')][0x7]!==_0x47c1('0x10')&&process[_0x47c1('0xe')][0x7]!==_0x47c1('0xf')?process[_0x47c1('0xe')][0x7]:null;if(!process[_0x47c1('0xe')][0x8]||process[_0x47c1('0xe')][0x8]==='undefined'||process[_0x47c1('0xe')][0x8]==='null'){throw new Error(_0x47c1('0x15'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x24e6a5){logger[_0x47c1('0x16')](_0x24e6a5);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x288c19,_0x5879e5,_0x3ebfe4,_0x5ae3ed){var _0x53697e={'message':_0x5879e5};_0x53697e[_0x288c19]=!![];if(_0x3ebfe4){_0x53697e['contact']=_0x3ebfe4;}if(_0x5ae3ed){_0x53697e[_0x47c1('0x17')]=_0x5ae3ed;}return _0x53697e;}function isEmail(_0x5077ac){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x5077ac);}function checkRow(_0x7da574,_0x51c722,_0x22dba2){return new BPromise(function(_0xfdea3a,_0x107993){if(_[_0x47c1('0x18')](_0x7da574)){return _0x107993(handleCheckRowError(_0x47c1('0x16'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x22dba2));}if(_0x7da574['errors']&&_0x7da574[_0x47c1('0x19')][_0x47c1('0x1a')]){var _0x1a1073=_[_0x47c1('0x1b')](_0x7da574[_0x47c1('0x19')],_0x47c1('0x1c'))['join'](';');return _0x107993(handleCheckRowError('error',_0x1a1073,null,_0x22dba2));}var _0x226b08={};for(var _0x5cd2d2 in FIELDS){if(FIELDS[_0x47c1('0x1d')](_0x5cd2d2)&&FIELDS[_0x5cd2d2]){_0x226b08[_0x5cd2d2]=_0x7da574['data'][0x0][FIELDS[_0x5cd2d2]]||_0x7da574[_0x47c1('0x1e')][0x0]['\ufeff'+FIELDS[_0x5cd2d2]];}}if(!_0x226b08['firstName']){return _0x107993(handleCheckRowError(_0x47c1('0x16'),_0x47c1('0x1f'),null,_0x22dba2));}if(!_0x226b08[_0x47c1('0x20')]){return _0x107993(handleCheckRowError(_0x47c1('0x16'),_0x47c1('0x21'),null,_0x22dba2));}if(_0x226b08[_0x47c1('0x22')]){var _0x3164f4=moment(_0x226b08[_0x47c1('0x22')],_0x47c1('0x23'));if(!_0x3164f4[_0x47c1('0x24')]()){return _0x107993(handleCheckRowError(_0x47c1('0x16'),_0x47c1('0x25'),null,_0x22dba2));}}if(_0x226b08[_0x47c1('0x26')]){if(!isEmail(_0x226b08['email'])){return _0x107993(handleCheckRowError(_0x47c1('0x16'),_0x47c1('0x27'),null,_0x22dba2));}}_0x226b08[_0x47c1('0x28')]=LISTID;_0x226b08[_0x47c1('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x51c722){var _0x1842c6={};for(var _0x507860=0x0,_0x19d129=DUPLICATES[_0x47c1('0x1a')];_0x507860<_0x19d129;_0x507860+=0x1){_0x1842c6[DUPLICATES[_0x507860]]=_0x226b08[DUPLICATES[_0x507860]];}var _0x3490d4=_[_0x47c1('0x2a')](_0x51c722,_0x1842c6);if(_0x3490d4){return _0x107993(handleCheckRowError(_0x47c1('0x2b'),_0x47c1('0x2c'),_0x3490d4,_0x22dba2));}}return db[_0x47c1('0x2d')][_0x47c1('0x2e')](_0x226b08,{'raw':!![],'hooks':![],'fields':_[_0x47c1('0x2f')](_0x226b08)})[_0x47c1('0x30')](function(_0x2d57af){if(DUPLICATES&&DUPLICATES[_0x47c1('0x1a')]&&_0x51c722){_0x51c722[_0x47c1('0x31')](_[_0x47c1('0x32')](_0x226b08,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2d57af['id'];return _0xfdea3a();})['catch'](function(_0x2ef4a6){return _0x107993(handleCheckRowError('error',_0x47c1('0x33')+(_0x2ef4a6[_0x47c1('0x1c')]||JSON[_0x47c1('0x34')](_0x2ef4a6)),null,_0x22dba2));});});}function checkHopper(){function _0x48347c(){return function(_0x18bac5){logger[_0x47c1('0x16')](_0x47c1('0x35'),'checkHopper',util[_0x47c1('0x36')](_0x18bac5,{'showHidden':![],'depth':null}));};}var _0x1bce62=function(_0x3d9582,_0x5ac391){var _0x5e1165=squel[_0x47c1('0x37')]()[_0x47c1('0x38')](_0x47c1('0x39'))[_0x47c1('0x3a')]([_0x47c1('0x20'),_0x47c1('0x3b'),_0x47c1('0x3c'),_0x47c1('0x28'),_0x5ac391,_0x47c1('0x3d'),'updatedAt'],squel['select']()[_0x47c1('0x3e')]('phone',_0x47c1('0x20'))[_0x47c1('0x3e')]('NOW()',_0x47c1('0x3b'))[_0x47c1('0x3e')]('id',_0x47c1('0x3c'))[_0x47c1('0x3e')](LISTID['toString'](),'ListId')[_0x47c1('0x3e')](_0x3d9582['id'][_0x47c1('0x3f')](),_0x5ac391)[_0x47c1('0x3e')](_0x47c1('0x40'),_0x47c1('0x3d'))[_0x47c1('0x3e')]('NOW()',_0x47c1('0x41'))[_0x47c1('0x42')](_0x47c1('0x43'))[_0x47c1('0x44')](_0x47c1('0x45'))['where'](_0x47c1('0x46'),LISTID[_0x47c1('0x3f')]())[_0x47c1('0x44')](_0x47c1('0x47'))['where'](_0x47c1('0x48'),squel[_0x47c1('0x49')]()['field']('phone')[_0x47c1('0x42')](_0x47c1('0x39'))[_0x47c1('0x44')](_0x5ac391+'\x20=\x20?',_0x3d9582['id'][_0x47c1('0x3f')]())))[_0x47c1('0x3f')]();return _0x5e1165;};var _0x1ef6e2=function(_0x7acf67,_0x2c9c47){var _0x3559e9=squel[_0x47c1('0x37')]()['into'](_0x47c1('0x39'))['fromQuery'](['phone',_0x47c1('0x3b'),_0x47c1('0x3c'),_0x47c1('0x28'),_0x2c9c47,_0x47c1('0x3d'),_0x47c1('0x41')],squel[_0x47c1('0x49')]()[_0x47c1('0x3e')](_0x47c1('0x20'),_0x47c1('0x20'))[_0x47c1('0x3e')](_0x47c1('0x40'),_0x47c1('0x3b'))[_0x47c1('0x3e')]('id',_0x47c1('0x3c'))[_0x47c1('0x3e')](LISTID['toString'](),_0x47c1('0x28'))[_0x47c1('0x3e')](_0x7acf67['id'][_0x47c1('0x3f')](),_0x2c9c47)[_0x47c1('0x3e')](_0x47c1('0x40'),_0x47c1('0x3d'))[_0x47c1('0x3e')](_0x47c1('0x40'),_0x47c1('0x41'))[_0x47c1('0x42')](_0x47c1('0x43'))[_0x47c1('0x44')](_0x47c1('0x45'))[_0x47c1('0x44')](_0x47c1('0x46'),LISTID[_0x47c1('0x3f')]())[_0x47c1('0x44')]('id\x20IN\x20?',squel[_0x47c1('0x4a')](hopperContacts))[_0x47c1('0x44')](_0x47c1('0x47'))['where'](_0x47c1('0x48'),squel[_0x47c1('0x49')]()['field'](_0x47c1('0x4b'))[_0x47c1('0x42')](_0x47c1('0x4c'))[_0x47c1('0x44')](_0x2c9c47+_0x47c1('0x4d'),_0x7acf67['id']['toString']()))[_0x47c1('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x47c1('0x49')]()[_0x47c1('0x3e')](_0x47c1('0x20'))['from'](_0x47c1('0x39'))[_0x47c1('0x44')](_0x2c9c47+_0x47c1('0x4d'),_0x7acf67['id'][_0x47c1('0x3f')]())))[_0x47c1('0x3f')]();return _0x3559e9;};function _0x4e8302(_0x7fbcfc,_0x71c792){var _0x398c06=squel[_0x47c1('0x37')]()[_0x47c1('0x38')](_0x47c1('0x39'))['fromQuery']([_0x47c1('0x20'),_0x47c1('0x3b'),_0x47c1('0x3c'),_0x47c1('0x28'),_0x71c792,_0x47c1('0x3d'),'updatedAt'],squel['select']()[_0x47c1('0x3e')](_0x47c1('0x20'),'phone')[_0x47c1('0x3e')](_0x47c1('0x40'),_0x47c1('0x3b'))[_0x47c1('0x3e')]('id',_0x47c1('0x3c'))[_0x47c1('0x3e')](LISTID[_0x47c1('0x3f')](),_0x47c1('0x28'))[_0x47c1('0x3e')](_0x7fbcfc['id'][_0x47c1('0x3f')](),_0x71c792)['field'](_0x47c1('0x40'),_0x47c1('0x3d'))[_0x47c1('0x3e')]('NOW()',_0x47c1('0x41'))[_0x47c1('0x42')](_0x47c1('0x43'))[_0x47c1('0x44')](_0x47c1('0x45'))[_0x47c1('0x44')]('ListId\x20=\x20?',LISTID['toString']())[_0x47c1('0x44')]('id\x20IN\x20?',squel[_0x47c1('0x4a')](hopperContacts))[_0x47c1('0x44')](_0x47c1('0x47')))['toString']();return _0x398c06;}function _0x49a1e8(_0x426d9a,_0x3e9262){var _0x11622d=squel[_0x47c1('0x37')]()[_0x47c1('0x38')](_0x47c1('0x4e'))[_0x47c1('0x3a')]([_0x47c1('0x20'),_0x47c1('0x3c'),'ListId',_0x3e9262,_0x47c1('0x3d'),_0x47c1('0x41')],squel[_0x47c1('0x49')]()[_0x47c1('0x3e')](_0x47c1('0x20'),_0x47c1('0x20'))[_0x47c1('0x3e')]('id',_0x47c1('0x3c'))[_0x47c1('0x3e')](LISTID[_0x47c1('0x3f')](),'ListId')['field'](_0x426d9a['id']['toString'](),_0x3e9262)[_0x47c1('0x3e')](_0x47c1('0x40'),_0x47c1('0x3d'))[_0x47c1('0x3e')]('NOW()',_0x47c1('0x41'))[_0x47c1('0x42')](_0x47c1('0x43'))['where'](_0x47c1('0x45'))[_0x47c1('0x44')]('ListId\x20=\x20?',LISTID[_0x47c1('0x3f')]())[_0x47c1('0x44')](_0x47c1('0x4f'),squel[_0x47c1('0x4a')](hopperContacts))[_0x47c1('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x47c1('0x3f')]();return _0x11622d;}return db[_0x47c1('0x50')][_0x47c1('0x51')]({'where':{'type':'outbound'},'attributes':['id',_0x47c1('0x52')],'include':[{'model':db[_0x47c1('0x53')],'as':_0x47c1('0x54'),'where':{'id':LISTID}}]})['then'](function(_0x26f137){var _0x46d5eb=[];if(_0x26f137){var _0x420174;for(var _0x2eea12=0x0,_0x3d495e;_0x2eea12<_0x26f137[_0x47c1('0x1a')];_0x2eea12+=0x1){_0x3d495e=_0x26f137[_0x2eea12][_0x47c1('0x55')]({'plain':!![]});switch(_0x3d495e[_0x47c1('0x52')]){case'always':_0x46d5eb['push'](db[_0x47c1('0x56')]['query'](_0x1ef6e2(_0x3d495e,'VoiceQueueId'))['then'](function(){})['catch'](_0x48347c()));break;case _0x47c1('0x57'):_0x46d5eb[_0x47c1('0x31')](db[_0x47c1('0x56')][_0x47c1('0x58')](_0x1bce62(_0x3d495e,_0x47c1('0x59')))[_0x47c1('0x30')](function(){})[_0x47c1('0x5a')](_0x48347c()));break;default:_0x46d5eb[_0x47c1('0x31')](db[_0x47c1('0x56')][_0x47c1('0x58')](_0x4e8302(_0x3d495e,_0x47c1('0x59')))[_0x47c1('0x30')](function(){})[_0x47c1('0x5a')](_0x48347c()));}}}return _0x46d5eb;})[_0x47c1('0x5b')]()[_0x47c1('0x30')](function(){return db[_0x47c1('0x50')][_0x47c1('0x51')]({'where':{'type':_0x47c1('0x5c')},'attributes':['id'],'include':[{'model':db[_0x47c1('0x53')],'as':_0x47c1('0x5d'),'where':{'id':LISTID}}]})[_0x47c1('0x30')](function(_0x5c2756){var _0x55ed91=[];if(_0x5c2756){var _0x1a8597;for(var _0x11b403=0x0,_0x2eb8d7;_0x11b403<_0x5c2756['length'];_0x11b403+=0x1){_0x2eb8d7=_0x5c2756[_0x11b403][_0x47c1('0x55')]({'plain':!![]});_0x55ed91[_0x47c1('0x31')](db['sequelize'][_0x47c1('0x58')](_0x49a1e8(_0x2eb8d7,_0x47c1('0x59')))[_0x47c1('0x30')](function(){})['catch'](_0x48347c()));}}return _0x55ed91;})[_0x47c1('0x5b')]();})['then'](function(){return db[_0x47c1('0x5e')][_0x47c1('0x51')]({'attributes':['id',_0x47c1('0x52')],'include':[{'model':db[_0x47c1('0x53')],'as':_0x47c1('0x54'),'where':{'id':LISTID}}]})[_0x47c1('0x30')](function(_0x248a6d){var _0xb9d116=[];if(_0x248a6d){for(var _0x510653=0x0,_0x2088e4;_0x510653<_0x248a6d[_0x47c1('0x1a')];_0x510653+=0x1){_0x2088e4=_0x248a6d[_0x510653][_0x47c1('0x55')]({'plain':!![]});switch(_0x2088e4[_0x47c1('0x52')]){case _0x47c1('0x5f'):_0xb9d116[_0x47c1('0x31')](db['sequelize'][_0x47c1('0x58')](_0x1ef6e2(_0x2088e4,_0x47c1('0x60')))[_0x47c1('0x30')](function(){})[_0x47c1('0x5a')](_0x48347c()));break;case'onlyIfOpen':_0xb9d116[_0x47c1('0x31')](db['sequelize']['query'](_0x1bce62(_0x2088e4,_0x47c1('0x60')))[_0x47c1('0x30')](function(){})['catch'](_0x48347c()));break;default:_0xb9d116[_0x47c1('0x31')](db[_0x47c1('0x56')]['query'](_0x4e8302(_0x2088e4,_0x47c1('0x60')))[_0x47c1('0x30')](function(){})[_0x47c1('0x5a')](_0x48347c()));}}}return _0xb9d116;})[_0x47c1('0x5b')]();})['then'](function(){return db['Campaign'][_0x47c1('0x51')]({'attributes':['id'],'include':[{'model':db[_0x47c1('0x53')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x47c1('0x30')](function(_0x42025f){var _0x28bbf2=[];if(_0x42025f){for(var _0xb1fb6c=0x0,_0x3afee4;_0xb1fb6c<_0x42025f[_0x47c1('0x1a')];_0xb1fb6c+=0x1){_0x3afee4=_0x42025f[_0xb1fb6c][_0x47c1('0x55')]({'plain':!![]});_0x28bbf2['push'](db[_0x47c1('0x56')]['query'](_0x49a1e8(_0x3afee4,_0x47c1('0x60')))[_0x47c1('0x30')](function(){})[_0x47c1('0x5a')](_0x48347c()));}}return _0x28bbf2;})[_0x47c1('0x5b')]();})[_0x47c1('0x5a')](function(_0x239c32){logger[_0x47c1('0x16')]('cmContact,\x20%s,\x20%s','generalCheckHopper',_0x239c32[_0x47c1('0x1c')]);});}var processPromises=function(_0x4ed14b){return BPromise[_0x47c1('0x5b')](promises)[_0x47c1('0x30')](function(_0x1bc89e){})['catch'](function(_0x24fe8a){logger[_0x47c1('0x16')](_0x47c1('0x61'),JSON['stringify'](_0x24fe8a));})[_0x47c1('0x62')](function(){socket[_0x47c1('0x63')](_0x47c1('0x64')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4ed14b){return _0x4ed14b[_0x47c1('0x65')]();}});};var endCsv=function(){return BPromise[_0x47c1('0x66')]()[_0x47c1('0x30')](function(){if(hopperContacts){return checkHopper();}})[_0x47c1('0x30')](function(){socket[_0x47c1('0x63')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x47c1('0x67')](FILEPATH);}catch(_0x43c6f1){logger[_0x47c1('0x16')](_0x47c1('0x68'),JSON[_0x47c1('0x34')](_0x43c6f1));}finally{process['exit'](0x0);}});};process['on']('SIGINT',function(){logger[_0x47c1('0x69')](_0x47c1('0x6a'));endCsv();});function main(){return BPromise[_0x47c1('0x66')]()[_0x47c1('0x30')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x47c1('0x2d')][_0x47c1('0x51')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x47c1('0x30')](function(_0x151fbb){var _0x1faa93=fs[_0x47c1('0x6b')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x47c1('0x6c')](_0x1faa93,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2d5393,_0x398db3){total+=0x1;var _0x592a23=total;promises[_0x47c1('0x31')](checkRow(_0x2d5393,_0x151fbb,_0x592a23)[_0x47c1('0x30')](function(){success+=0x1;})[_0x47c1('0x5a')](function(_0x439597){if(_0x439597[_0x47c1('0x16')]){errors+=0x1;delete _0x439597['error'];}else if(_0x439597[_0x47c1('0x2b')]){duplicates+=0x1;delete _0x439597[_0x47c1('0x2b')];}rows[_0x47c1('0x31')](_0x439597);}));if(total%0xc8===0x0){_0x398db3[_0x47c1('0x6d')]();return processPromises(_0x398db3);}},'complete':function(){return processPromises()[_0x47c1('0x30')](function(){logger[_0x47c1('0x69')](_0x47c1('0x6e'));endCsv();});},'error':function(_0x17f543,_0x1dca92){logger['info']('CSV\x20parse\x20error',JSON['stringify'](_0x17f543));endCsv();}});})[_0x47c1('0x5a')](function(_0xcc7b3){logger[_0x47c1('0x16')](_0x47c1('0x6f'),JSON['stringify'](_0xcc7b3));});}main();
\ No newline at end of file
+var _0x16c6=['emit','contact:csv_','resume','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','pause','info','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','api','defaults','redis','localhost','socket.io-emitter','register','argv','undefined','null','Missing\x20filepath\x20parameter!','zipObject','split','Missing\x20ListId\x20parameter!','error','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','map','join','hasOwnProperty','data','firstName','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','find','duplicate','Duplicate\x20Contact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','select','field','NOW()','toString','updatedAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','insert','id\x20IN\x20?','str','phone\x20IS\x20NOT\x20NULL','calleridnum','cm_hopper_final','\x20=\x20?','cm_hopper_black','VoiceQueue','outbound','Lists','get','dialCheckDuplicateType','always','sequelize','VoiceQueueId','query','all','findAll','CmList','BlackLists','CampaignId','Campaign','generalCheckHopper'];(function(_0xcd6876,_0xc064c5){var _0x53b0d2=function(_0x45425d){while(--_0x45425d){_0xcd6876['push'](_0xcd6876['shift']());}};_0x53b0d2(++_0xc064c5);}(_0x16c6,0xe3));var _0x616c=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x16c6[_0x4565bf];return _0x5610ba;};'use strict';var BPromise=require(_0x616c('0x0'));var util=require(_0x616c('0x1'));var _=require(_0x616c('0x2'));var fs=require('fs');var squel=require(_0x616c('0x3'));var Papa=require(_0x616c('0x4'));var Redis=require(_0x616c('0x5'));var db=require(_0x616c('0x6'))['db'];var config=require(_0x616c('0x7'));var logger=require('../../../config/logger')(_0x616c('0x8'));config['redis']=_[_0x616c('0x9')](config[_0x616c('0xa')],{'host':_0x616c('0xb'),'port':0x18eb});var socket=require(_0x616c('0xc'))(new Redis(config[_0x616c('0xa')]));require('../../../api/cmContact/cmContact.socket')[_0x616c('0xd')](socket);try{if(!process[_0x616c('0xe')][0x2]||process[_0x616c('0xe')][0x2]===_0x616c('0xf')||process[_0x616c('0xe')][0x2]===_0x616c('0x10')){throw new Error(_0x616c('0x11'));}var FILEPATH=process[_0x616c('0xe')][0x2];if(!process[_0x616c('0xe')][0x3]||process[_0x616c('0xe')][0x3]===_0x616c('0xf')||process[_0x616c('0xe')][0x3]===_0x616c('0x10')||!process[_0x616c('0xe')][0x4]||process[_0x616c('0xe')][0x4]===_0x616c('0xf')||process[_0x616c('0xe')][0x4]===_0x616c('0x10')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x616c('0x12')](process[_0x616c('0xe')][0x3][_0x616c('0x13')](','),process['argv'][0x4][_0x616c('0x13')](','));if(!process[_0x616c('0xe')][0x5]||process[_0x616c('0xe')][0x5]==='undefined'||process[_0x616c('0xe')][0x5]==='null'){throw new Error(_0x616c('0x14'));}var LISTID=process[_0x616c('0xe')][0x5];var COMPANYID=process['argv'][0x6]&&process[_0x616c('0xe')][0x6]!=='undefined'&&process[_0x616c('0xe')][0x6]!==_0x616c('0x10')?process[_0x616c('0xe')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x616c('0xe')][0x7]!=='undefined'&&process[_0x616c('0xe')][0x7]!=='null'?process['argv'][0x7]:null;if(!process[_0x616c('0xe')][0x8]||process['argv'][0x8]===_0x616c('0xf')||process['argv'][0x8]===_0x616c('0x10')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x616c('0xe')][0x8];}catch(_0x323c9f){logger[_0x616c('0x15')](_0x323c9f);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0xad4603,_0x4e2195,_0x12ef91,_0x560cee){var _0x3d8437={'message':_0x4e2195};_0x3d8437[_0xad4603]=!![];if(_0x12ef91){_0x3d8437['contact']=_0x12ef91;}if(_0x560cee){_0x3d8437[_0x616c('0x16')]=_0x560cee;}return _0x3d8437;}function isEmail(_0xdb2b57){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x616c('0x17')](_0xdb2b57);}function checkRow(_0x11b6e3,_0xdfbe04,_0x3b4f92){return new BPromise(function(_0x1615f8,_0x38fdbc){if(_['isNil'](_0x11b6e3)){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x18'),null,_0x3b4f92));}if(_0x11b6e3['errors']&&_0x11b6e3['errors']['length']){var _0x32d379=_[_0x616c('0x19')](_0x11b6e3['errors'],'message')[_0x616c('0x1a')](';');return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x32d379,null,_0x3b4f92));}var _0x515990={};for(var _0x4e7449 in FIELDS){if(FIELDS[_0x616c('0x1b')](_0x4e7449)&&FIELDS[_0x4e7449]){_0x515990[_0x4e7449]=_0x11b6e3[_0x616c('0x1c')][0x0][FIELDS[_0x4e7449]]||_0x11b6e3['data'][0x0]['\ufeff'+FIELDS[_0x4e7449]];}}if(!_0x515990[_0x616c('0x1d')]){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),'firstName\x20not\x20specified!',null,_0x3b4f92));}if(!_0x515990[_0x616c('0x1e')]){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x1f'),null,_0x3b4f92));}if(_0x515990[_0x616c('0x20')]){var _0x316800=moment(_0x515990['birthDate'],'YYYY-MM-DD');if(!_0x316800[_0x616c('0x21')]()){return _0x38fdbc(handleCheckRowError('error',_0x616c('0x22'),null,_0x3b4f92));}}if(_0x515990[_0x616c('0x23')]){if(!isEmail(_0x515990['email'])){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x24'),null,_0x3b4f92));}}_0x515990[_0x616c('0x25')]=LISTID;_0x515990[_0x616c('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x616c('0x27')]&&_0xdfbe04){var _0x3f110b={};for(var _0x232d8d=0x0,_0x3df356=DUPLICATES[_0x616c('0x27')];_0x232d8d<_0x3df356;_0x232d8d+=0x1){_0x3f110b[DUPLICATES[_0x232d8d]]=_0x515990[DUPLICATES[_0x232d8d]];}var _0xbe9a93=_[_0x616c('0x28')](_0xdfbe04,_0x3f110b);if(_0xbe9a93){return _0x38fdbc(handleCheckRowError(_0x616c('0x29'),_0x616c('0x2a'),_0xbe9a93,_0x3b4f92));}}return db['CmContact'][_0x616c('0x2b')](_0x515990,{'raw':!![],'hooks':![],'fields':_[_0x616c('0x2c')](_0x515990)})[_0x616c('0x2d')](function(_0x50f0f1){if(DUPLICATES&&DUPLICATES[_0x616c('0x27')]&&_0xdfbe04){_0xdfbe04[_0x616c('0x2e')](_[_0x616c('0x2f')](_0x515990,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x50f0f1['id'];return _0x1615f8();})[_0x616c('0x30')](function(_0x3eda79){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x31')+(_0x3eda79[_0x616c('0x32')]||JSON[_0x616c('0x33')](_0x3eda79)),null,_0x3b4f92));});});}function checkHopper(){function _0x288a08(){return function(_0x599d37){logger[_0x616c('0x15')](_0x616c('0x34'),_0x616c('0x35'),util['inspect'](_0x599d37,{'showHidden':![],'depth':null}));};}var _0x2564cb=function(_0x2ef606,_0xd9e0fb){var _0x444857=squel['insert']()[_0x616c('0x36')](_0x616c('0x37'))[_0x616c('0x38')]([_0x616c('0x1e'),_0x616c('0x39'),_0x616c('0x3a'),_0x616c('0x25'),_0xd9e0fb,_0x616c('0x3b'),'updatedAt'],squel[_0x616c('0x3c')]()['field']('phone','phone')[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x39'))['field']('id',_0x616c('0x3a'))['field'](LISTID[_0x616c('0x3f')](),_0x616c('0x25'))[_0x616c('0x3d')](_0x2ef606['id'][_0x616c('0x3f')](),_0xd9e0fb)['field'](_0x616c('0x3e'),'createdAt')['field'](_0x616c('0x3e'),_0x616c('0x40'))[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')](_0x616c('0x44'))[_0x616c('0x43')](_0x616c('0x45'),LISTID['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0x616c('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0x616c('0x3c')]()[_0x616c('0x3d')](_0x616c('0x1e'))[_0x616c('0x41')](_0x616c('0x37'))['where'](_0xd9e0fb+'\x20=\x20?',_0x2ef606['id'][_0x616c('0x3f')]())))[_0x616c('0x3f')]();return _0x444857;};var _0x313c5d=function(_0x2de84a,_0x235ef8){var _0x4ba05d=squel[_0x616c('0x46')]()[_0x616c('0x36')](_0x616c('0x37'))[_0x616c('0x38')](['phone',_0x616c('0x39'),_0x616c('0x3a'),'ListId',_0x235ef8,_0x616c('0x3b'),_0x616c('0x40')],squel[_0x616c('0x3c')]()[_0x616c('0x3d')](_0x616c('0x1e'),'phone')['field']('NOW()','scheduledAt')[_0x616c('0x3d')]('id','ContactId')['field'](LISTID[_0x616c('0x3f')](),_0x616c('0x25'))[_0x616c('0x3d')](_0x2de84a['id'][_0x616c('0x3f')](),_0x235ef8)['field']('NOW()',_0x616c('0x3b'))[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x40'))[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')]('deletedAt\x20IS\x20NULL')[_0x616c('0x43')](_0x616c('0x45'),LISTID[_0x616c('0x3f')]())[_0x616c('0x43')](_0x616c('0x47'),squel[_0x616c('0x48')](hopperContacts))['where'](_0x616c('0x49'))[_0x616c('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0x616c('0x3c')]()['field'](_0x616c('0x4a'))[_0x616c('0x41')](_0x616c('0x4b'))[_0x616c('0x43')](_0x235ef8+_0x616c('0x4c'),_0x2de84a['id']['toString']()))[_0x616c('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0x616c('0x3c')]()[_0x616c('0x3d')](_0x616c('0x1e'))[_0x616c('0x41')](_0x616c('0x37'))[_0x616c('0x43')](_0x235ef8+_0x616c('0x4c'),_0x2de84a['id']['toString']())))[_0x616c('0x3f')]();return _0x4ba05d;};function _0x47a785(_0x3ed1c9,_0x5c9c8f){var _0x3cb0cd=squel[_0x616c('0x46')]()[_0x616c('0x36')](_0x616c('0x37'))['fromQuery']([_0x616c('0x1e'),_0x616c('0x39'),_0x616c('0x3a'),'ListId',_0x5c9c8f,_0x616c('0x3b'),'updatedAt'],squel[_0x616c('0x3c')]()['field'](_0x616c('0x1e'),_0x616c('0x1e'))[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x39'))[_0x616c('0x3d')]('id',_0x616c('0x3a'))[_0x616c('0x3d')](LISTID['toString'](),_0x616c('0x25'))[_0x616c('0x3d')](_0x3ed1c9['id'][_0x616c('0x3f')](),_0x5c9c8f)[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x3b'))[_0x616c('0x3d')]('NOW()',_0x616c('0x40'))[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')](_0x616c('0x44'))[_0x616c('0x43')]('ListId\x20=\x20?',LISTID[_0x616c('0x3f')]())[_0x616c('0x43')](_0x616c('0x47'),squel[_0x616c('0x48')](hopperContacts))['where'](_0x616c('0x49')))[_0x616c('0x3f')]();return _0x3cb0cd;}function _0x410b0b(_0x158b8a,_0x158db4){var _0x5b9633=squel[_0x616c('0x46')]()[_0x616c('0x36')](_0x616c('0x4d'))[_0x616c('0x38')]([_0x616c('0x1e'),_0x616c('0x3a'),_0x616c('0x25'),_0x158db4,'createdAt','updatedAt'],squel[_0x616c('0x3c')]()['field'](_0x616c('0x1e'),_0x616c('0x1e'))[_0x616c('0x3d')]('id',_0x616c('0x3a'))[_0x616c('0x3d')](LISTID[_0x616c('0x3f')](),_0x616c('0x25'))[_0x616c('0x3d')](_0x158b8a['id']['toString'](),_0x158db4)[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x3b'))[_0x616c('0x3d')]('NOW()','updatedAt')[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')]('deletedAt\x20IS\x20NULL')[_0x616c('0x43')](_0x616c('0x45'),LISTID[_0x616c('0x3f')]())[_0x616c('0x43')](_0x616c('0x47'),squel[_0x616c('0x48')](hopperContacts))[_0x616c('0x43')]('phone\x20IS\x20NOT\x20NULL'))[_0x616c('0x3f')]();return _0x5b9633;}return db[_0x616c('0x4e')]['findAll']({'where':{'type':_0x616c('0x4f')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x616c('0x50'),'where':{'id':LISTID}}]})[_0x616c('0x2d')](function(_0x5e53a5){var _0x8622b=[];if(_0x5e53a5){var _0x49a948;for(var _0xcbe814=0x0,_0xa07b6e;_0xcbe814<_0x5e53a5['length'];_0xcbe814+=0x1){_0xa07b6e=_0x5e53a5[_0xcbe814][_0x616c('0x51')]({'plain':!![]});switch(_0xa07b6e[_0x616c('0x52')]){case _0x616c('0x53'):_0x8622b[_0x616c('0x2e')](db[_0x616c('0x54')]['query'](_0x313c5d(_0xa07b6e,_0x616c('0x55')))[_0x616c('0x2d')](function(){})['catch'](_0x288a08()));break;case'onlyIfOpen':_0x8622b[_0x616c('0x2e')](db[_0x616c('0x54')][_0x616c('0x56')](_0x2564cb(_0xa07b6e,_0x616c('0x55')))[_0x616c('0x2d')](function(){})[_0x616c('0x30')](_0x288a08()));break;default:_0x8622b[_0x616c('0x2e')](db[_0x616c('0x54')][_0x616c('0x56')](_0x47a785(_0xa07b6e,_0x616c('0x55')))[_0x616c('0x2d')](function(){})['catch'](_0x288a08()));}}}return _0x8622b;})[_0x616c('0x57')]()['then'](function(){return db[_0x616c('0x4e')][_0x616c('0x58')]({'where':{'type':_0x616c('0x4f')},'attributes':['id'],'include':[{'model':db[_0x616c('0x59')],'as':_0x616c('0x5a'),'where':{'id':LISTID}}]})[_0x616c('0x2d')](function(_0x1bf64b){var _0x327509=[];if(_0x1bf64b){var _0x5ab3e1;for(var _0x2bdfae=0x0,_0x44cc67;_0x2bdfae<_0x1bf64b[_0x616c('0x27')];_0x2bdfae+=0x1){_0x44cc67=_0x1bf64b[_0x2bdfae][_0x616c('0x51')]({'plain':!![]});_0x327509[_0x616c('0x2e')](db['sequelize'][_0x616c('0x56')](_0x410b0b(_0x44cc67,_0x616c('0x55')))['then'](function(){})[_0x616c('0x30')](_0x288a08()));}}return _0x327509;})[_0x616c('0x57')]();})[_0x616c('0x2d')](function(){return db['Campaign'][_0x616c('0x58')]({'attributes':['id',_0x616c('0x52')],'include':[{'model':db['CmList'],'as':_0x616c('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x1d309a){var _0x4578b9=[];if(_0x1d309a){for(var _0x523623=0x0,_0x4a7de6;_0x523623<_0x1d309a[_0x616c('0x27')];_0x523623+=0x1){_0x4a7de6=_0x1d309a[_0x523623][_0x616c('0x51')]({'plain':!![]});switch(_0x4a7de6[_0x616c('0x52')]){case _0x616c('0x53'):_0x4578b9[_0x616c('0x2e')](db['sequelize'][_0x616c('0x56')](_0x313c5d(_0x4a7de6,_0x616c('0x5b')))['then'](function(){})['catch'](_0x288a08()));break;case'onlyIfOpen':_0x4578b9['push'](db[_0x616c('0x54')][_0x616c('0x56')](_0x2564cb(_0x4a7de6,_0x616c('0x5b')))[_0x616c('0x2d')](function(){})[_0x616c('0x30')](_0x288a08()));break;default:_0x4578b9[_0x616c('0x2e')](db[_0x616c('0x54')]['query'](_0x47a785(_0x4a7de6,'CampaignId'))[_0x616c('0x2d')](function(){})['catch'](_0x288a08()));}}}return _0x4578b9;})[_0x616c('0x57')]();})[_0x616c('0x2d')](function(){return db[_0x616c('0x5c')][_0x616c('0x58')]({'attributes':['id'],'include':[{'model':db[_0x616c('0x59')],'as':_0x616c('0x5a'),'where':{'id':LISTID}}]})['then'](function(_0x26631f){var _0x33cb78=[];if(_0x26631f){for(var _0x1e2d50=0x0,_0x2f85d0;_0x1e2d50<_0x26631f['length'];_0x1e2d50+=0x1){_0x2f85d0=_0x26631f[_0x1e2d50]['get']({'plain':!![]});_0x33cb78[_0x616c('0x2e')](db[_0x616c('0x54')][_0x616c('0x56')](_0x410b0b(_0x2f85d0,'CampaignId'))['then'](function(){})[_0x616c('0x30')](_0x288a08()));}}return _0x33cb78;})[_0x616c('0x57')]();})[_0x616c('0x30')](function(_0x5c7080){logger['error']('cmContact,\x20%s,\x20%s',_0x616c('0x5d'),_0x5c7080['message']);});}var processPromises=function(_0x27f63d){return BPromise[_0x616c('0x57')](promises)['then'](function(_0x25a4b8){})[_0x616c('0x30')](function(_0x1022b2){logger[_0x616c('0x15')]('Error\x20processing\x20rows\x20block:',JSON['stringify'](_0x1022b2));})['finally'](function(){socket[_0x616c('0x5e')](_0x616c('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x27f63d){return _0x27f63d[_0x616c('0x60')]();}});};var endCsv=function(){return BPromise['resolve']()[_0x616c('0x2d')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x616c('0x5e')](_0x616c('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x599c5f){logger[_0x616c('0x15')](_0x616c('0x61'),JSON[_0x616c('0x33')](_0x599c5f));}finally{process[_0x616c('0x62')](0x0);}});};process['on'](_0x616c('0x63'),function(){logger['info'](_0x616c('0x64'));endCsv();});function main(){return BPromise['resolve']()[_0x616c('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x616c('0x65')][_0x616c('0x58')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x616c('0x2d')](function(_0x58b3f7){var _0x5c0940=fs[_0x616c('0x66')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x5c0940,{'header':!![],'skipEmptyLines':!![],'step':function(_0xf47caa,_0x1b6b25){total+=0x1;var _0x1fa7df=total;promises[_0x616c('0x2e')](checkRow(_0xf47caa,_0x58b3f7,_0x1fa7df)[_0x616c('0x2d')](function(){success+=0x1;})[_0x616c('0x30')](function(_0x247dd5){if(_0x247dd5[_0x616c('0x15')]){errors+=0x1;delete _0x247dd5[_0x616c('0x15')];}else if(_0x247dd5['duplicate']){duplicates+=0x1;delete _0x247dd5['duplicate'];}rows[_0x616c('0x2e')](_0x247dd5);}));if(total%0xc8===0x0){_0x1b6b25[_0x616c('0x67')]();return processPromises(_0x1b6b25);}},'complete':function(){return processPromises()[_0x616c('0x2d')](function(){logger['info']('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x34d6e1,_0x89db69){logger[_0x616c('0x68')](_0x616c('0x69'),JSON[_0x616c('0x33')](_0x34d6e1));endCsv();}});})[_0x616c('0x30')](function(_0x16a44e){logger['error'](_0x616c('0x6a'),JSON[_0x616c('0x33')](_0x16a44e));});}main();
\ No newline at end of file
index e7a4948..f00297c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe37d=['cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','phone','ContactId','ListId','updatedAt','priority','UserId','recallme','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','createdAt','fields','cm_contacts.ListId\x20=\x20','cm_hopper_black','\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','MIN(id)','info','Received\x20SIGINT','error','message','exit','errors','sequelize','query','spread','push','main','stringify','send','start','socket_timestamp','root','.csv','writeFileSync','parse','createReadStream','data','rows','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','length','appendFileSync','Abort\x20parser','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','CompanyId','isNil','scheduledat',',\x20scheduledAt\x20=\x20NOW()','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','campaigns','each','then','affectedRows','emit','contact:import:','unlink','catch','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','binding','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','SIGINT','uncaughtException','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','localhost','format','YYYY-MM-DD\x20HH:mm:ss','select','field','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0xe37d,0x1ee));var _0xde37=function(_0x54a0d5,_0x151c25){_0x54a0d5=_0x54a0d5-0x0;var _0x135b85=_0xe37d[_0x54a0d5];return _0x135b85;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xde37('0x0'));var Papa=require(_0xde37('0x1'));var util=require(_0xde37('0x2'));var BPromise=require(_0xde37('0x3'));var moment=require(_0xde37('0x4'));var squel=require(_0xde37('0x5'));var Redis=require(_0xde37('0x6'));var db=require(_0xde37('0x7'))['db'];var config=require(_0xde37('0x8'));var logger=require(_0xde37('0x9'))('import');config[_0xde37('0xa')]=_['defaults'](config[_0xde37('0xa')],{'host':_0xde37('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xde37('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xde37('0xc')](_0xde37('0xd'));function isEmail(_0x2b6289){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x2b6289);}function selectNotIn(_0x212852,_0x4b603e,_0x23a295,_0x2ab3da,_0x5694a6){return squel[_0xde37('0xe')]()[_0xde37('0xf')]('phone')[_0xde37('0x10')](_0x2ab3da)[_0xde37('0x11')](_0x4b603e,null,_0x4b603e+_0xde37('0x12')+_0x2ab3da+'.'+_0x23a295)[_0xde37('0x13')](_0x2ab3da+'.'+_0x23a295+_0xde37('0x14')+_0x212852+'.'+_0x23a295)[_0xde37('0x13')](_0x4b603e+_0xde37('0x15')+_0x5694a6['join']()+')');}function insertCmHopper(_0xb74d58,_0xc4441f,_0x2c39f1,_0x5a4b0a,_0x4194e7){var _0x116a82=[_0xde37('0x16'),_0xde37('0x17'),_0xde37('0x18'),_0xde37('0x19'),_0xc4441f+'.'+_0x5a4b0a,'cm_contacts.createdAt',_0xde37('0x1a'),_0xde37('0x1b'),_0xde37('0x1c'),'\x22'+_0x4194e7+'\x22'];return squel[_0xde37('0x1d')]()[_0xde37('0x1e')](_0xde37('0x1f'))[_0xde37('0x20')]([_0xde37('0x21'),'scheduledat',_0xde37('0x22'),_0xde37('0x23'),_0x5a4b0a,'createdAt',_0xde37('0x24'),_0xde37('0x25'),_0xde37('0x26'),_0xde37('0x27')],squel[_0xde37('0xe')]()['fields'](_0x116a82)[_0xde37('0x10')](_0xc4441f)[_0xde37('0x11')](_0xde37('0x28'),null,'cm_contacts.ListId\x20=\x20'+_0xc4441f+_0xde37('0x29'))[_0xde37('0x11')](_0x2c39f1,null,_0x2c39f1+_0xde37('0x12')+_0xc4441f+'.'+_0x5a4b0a)[_0xde37('0x13')](_0xc4441f+_0xde37('0x2a'),_0xb74d58)['where'](_0xde37('0x2b'),NOW)[_0xde37('0x13')](_0xde37('0x2c'),selectNotIn(_0xc4441f,_0x2c39f1,_0x5a4b0a,'cm_hopper',[_0xde37('0x2d'),'\x22onlyIfOpen\x22']))['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0xc4441f,_0x2c39f1,_0x5a4b0a,_0xde37('0x1f'),[_0xde37('0x2d')])))[_0xde37('0x2e')]();}function insertCmHopperBlack(_0x25945b,_0x2855c3,_0x2cd63b,_0x245b8f){var _0x19394f=[_0xde37('0x16'),_0xde37('0x18'),_0xde37('0x19'),_0x2855c3+'.'+_0x245b8f,'cm_contacts.createdAt',_0xde37('0x1a')];return squel[_0xde37('0x1d')]()[_0xde37('0x1e')]('cm_hopper_black')['fromQuery']([_0xde37('0x21'),'ContactId',_0xde37('0x23'),_0x245b8f,_0xde37('0x2f'),_0xde37('0x24')],squel['select']()[_0xde37('0x30')](_0x19394f)[_0xde37('0x10')](_0x2855c3)[_0xde37('0x11')]('cm_contacts',null,_0xde37('0x31')+_0x2855c3+'.CmListId')[_0xde37('0x11')](_0x2cd63b,null,_0x2cd63b+_0xde37('0x12')+_0x2855c3+'.'+_0x245b8f)[_0xde37('0x13')](_0x2855c3+'.CmListId\x20=\x20?',_0x25945b)[_0xde37('0x13')](_0xde37('0x2b'),NOW)[_0xde37('0x13')](_0xde37('0x2c'),squel[_0xde37('0xe')]()[_0xde37('0xf')](_0xde37('0x21'))[_0xde37('0x10')](_0xde37('0x32'))[_0xde37('0x13')]('ListId\x20=\x20?',_0x25945b)[_0xde37('0x13')](_0x245b8f+_0xde37('0x33'),_0x2855c3+'.'+_0x245b8f)))[_0xde37('0x2e')]();}function insertCmContact(_0x332f5a,_0x237729,_0x14543b,_0x1412e4){var _0x5a4fff=_[_0xde37('0x34')](_[_0xde37('0x35')](_0x1412e4),[_0xde37('0x23'),'CompanyId','createdAt','updatedAt']);return squel['insert']()[_0xde37('0x1e')](_0xde37('0x28'))[_0xde37('0x20')](_0x5a4fff,squel[_0xde37('0xe')]()['fields'](_0x5a4fff)[_0xde37('0x10')](_0x237729)[_0xde37('0x13')]('('+_0x14543b[_0xde37('0x11')](',')+_0xde37('0x36'),squel[_0xde37('0xe')]()['fields'](_0x14543b)[_0xde37('0x10')](_0xde37('0x28'))['where'](_0xde37('0x37'),_0x332f5a)[_0xde37('0x13')](_0xde37('0x38')))['where']('id\x20IN\x20?',squel[_0xde37('0xe')]()[_0xde37('0xf')](_0xde37('0x39'),'min_id')[_0xde37('0x10')](_0x237729)['group'](_0x14543b[_0xde37('0x11')](','))))[_0xde37('0x2e')]();}function handleStop(){logger[_0xde37('0x3a')](_0xde37('0x3b'));stopped=!![];}function handleUncaughtException(_0xd3ed70){logger[_0xde37('0x3c')](_0xd3ed70[_0xde37('0x3d')]);process[_0xde37('0x3e')](0x1);}function handleError(_0x49b3b2,_0x1d25bb){stats[_0xde37('0x3f')]['push']({'name':_0x1d25bb['code'],'message':_0x1d25bb[_0xde37('0x3d')],'row':_0x49b3b2});}function handleQuery(_0x5118c1){logger[_0xde37('0x3a')](_0x5118c1);return db[_0xde37('0x40')][_0xde37('0x41')](_0x5118c1)[_0xde37('0x42')](function(_0x43115a){results[_0xde37('0x43')](_0x43115a);})['catch'](function(_0xc2bdc5){logger[_0xde37('0x3c')](_0xc2bdc5[_0xde37('0x3d')]);});}function main(_0x34eb15,_0x3be3fd,_0x32b599,_0x5d1058){logger[_0xde37('0x3a')](_0xde37('0x44'),_0x34eb15,JSON[_0xde37('0x45')](_0x3be3fd));process[_0xde37('0x46')](_0xde37('0x47'));var _0xcebf7=_0x3be3fd['binding'];var _0x293bfd=_0x3be3fd[_0xde37('0x48')];var _0x652add=path[_0xde37('0x11')](config[_0xde37('0x49')],'server/files/tmp',_0x293bfd+_0xde37('0x4a'));var _0x1aa6d4=_[_0xde37('0x35')](_0xcebf7)[_0xde37('0x11')]();logger[_0xde37('0x3a')]('header',_0x1aa6d4);fs[_0xde37('0x4b')](_0x652add,_0x1aa6d4+'\x0a');Papa[_0xde37('0x4c')](fs[_0xde37('0x4d')](_0x34eb15),{'header':!![],'skipEmptyLines':!![],'step':function(_0x5ed687,_0x3fb18a){try{for(var _0x5dddf5=0x0,_0x2f911b=[];_0x5dddf5<_0x5ed687[_0xde37('0x4e')]['length'];_0x5dddf5++){stats[_0xde37('0x4f')]+=0x1;if(_0x5ed687[_0xde37('0x3f')][_0x5dddf5]){handleError(_0x5ed687[_0xde37('0x4e')][_0x5dddf5],_0x5ed687[_0xde37('0x3f')][_0x5dddf5]);}else{var _0x29b7c2=[];for(var _0x28a2d9 in _0xcebf7){if(_0xcebf7['hasOwnProperty'](_0x28a2d9)){if(_0x5ed687[_0xde37('0x4e')][_0x5dddf5][_0xcebf7[_0x28a2d9]]){var _0x55af99=_[_0xde37('0x50')](_0x5ed687['data'][_0x5dddf5][_0xcebf7[_0x28a2d9]][_0xde37('0x51')](/"/g,'\x27'));switch(_0x28a2d9){case'scheduledat':var _0x3aa2a7=moment(_0x55af99,_0xde37('0xd'),!![]);if(_0x3aa2a7[_0xde37('0x52')]()){_0x2f911b[_0xde37('0x43')]('\x22'+_0x55af99+'\x22');}else{_0x29b7c2[_0xde37('0x43')](_0xde37('0x53'));}break;case _0xde37('0x25'):var _0x432aee=parseInt(_0x55af99);_0x55af99=_['isNaN'](_0x432aee)||_0x432aee<0x0||_0x432aee>0x4?_0x5d1058?0x3:0x2:_0x432aee;_0x2f911b['push']('\x22'+_0x55af99+'\x22');break;case _0xde37('0x26'):var _0x59c6f9=parseInt(_0x55af99);if(_[_0xde37('0x54')](_0x59c6f9)&&_[_0xde37('0x55')](_0x32b599,_0x59c6f9)){_0x2f911b[_0xde37('0x43')]('\x22'+_0x59c6f9+'\x22');}else{_0x29b7c2[_0xde37('0x43')](_0xde37('0x56'));}break;case _0xde37('0x57'):if(isEmail(_0x55af99)){_0x2f911b[_0xde37('0x43')]('\x22'+_0x55af99+'\x22');}else{_0x29b7c2['push'](_0xde37('0x58'));}break;case'dateOfBirth':var _0x30def5=moment(_0x55af99,_0xde37('0x59'),!![]);if(_0x30def5[_0xde37('0x52')]()){_0x2f911b[_0xde37('0x43')]('\x22'+_0x55af99+'\x22');}else{_0x29b7c2['push'](_0xde37('0x5a'));}break;default:_0x2f911b[_0xde37('0x43')]('\x22'+_0x55af99+'\x22');}}else{switch(_0x28a2d9){case _0xde37('0x5b'):case _0xde37('0x21'):_0x29b7c2[_0xde37('0x43')](_0x28a2d9+_0xde37('0x5c'));break;default:_0x2f911b[_0xde37('0x43')]('\x22\x22');}}}}if(_0x29b7c2[_0xde37('0x5d')]){handleError(_0x5ed687['data'][_0x5dddf5],{'code':'SystemRow','message':_0x29b7c2[_0xde37('0x11')]()});}else{fs[_0xde37('0x5e')](_0x652add,_0x2f911b[_0xde37('0x11')]()+'\x0a');}_0x2f911b=[];}if(!(stats['rows']%0xc8)){socket['emit']('contact:import:'+_0x293bfd,stats);stats[_0xde37('0x3f')]=[];}}if(stopped){logger[_0xde37('0x3a')](_0xde37('0x5f'));_0x3fb18a['abort']();}}catch(_0x4876c8){handleError(_0x5ed687[_0xde37('0x4e')][_0x5dddf5],{'code':_0xde37('0x60'),'message':_0x4876c8['message']});logger[_0xde37('0x3c')](_0xde37('0x61'),_0x4876c8[_0xde37('0x3d')]);}},'complete':function(){try{var _0x65fa3d=[];var _0x76972=_0xde37('0x28');if(_0x3be3fd['duplicates']&&_0x3be3fd[_0xde37('0x62')][_0xde37('0x5d')]){_0x76972=_0xde37('0x63')+_0x293bfd;_0x65fa3d['push'](_0xde37('0x64')+_0x76972+_0xde37('0x65'));}var _0x1e9fd6=util[_0xde37('0xc')](_0xde37('0x66'),_0x652add,_0x76972,_0x1aa6d4,_0x3be3fd[_0xde37('0x23')],_0x3be3fd[_0xde37('0x67')]||null,NOW,NOW);if(_[_0xde37('0x68')](_0xcebf7[_0xde37('0x69')])){_0x1e9fd6+=_0xde37('0x6a');}_0x65fa3d[_0xde37('0x43')](_0x1e9fd6);if(_0x3be3fd[_0xde37('0x62')]&&_0x3be3fd[_0xde37('0x62')][_0xde37('0x5d')]){_0x65fa3d[_0xde37('0x43')](insertCmContact(_0x3be3fd[_0xde37('0x23')],_0x76972,_0x3be3fd['duplicates'],_0xcebf7));_0x65fa3d[_0xde37('0x43')]('DROP\x20TABLE\x20'+_0x76972+';');}_0x65fa3d[_0xde37('0x43')](insertCmHopper(_0x3be3fd[_0xde37('0x23')],_0xde37('0x6b'),_0xde37('0x6c'),_0xde37('0x6d'),_0x5d1058));_0x65fa3d[_0xde37('0x43')](insertCmHopperBlack(_0x3be3fd[_0xde37('0x23')],_0xde37('0x6e'),_0xde37('0x6c'),_0xde37('0x6d')));_0x65fa3d['push'](insertCmHopper(_0x3be3fd[_0xde37('0x23')],_0xde37('0x6f'),_0xde37('0x70'),'CampaignId',_0x5d1058));_0x65fa3d[_0xde37('0x43')](insertCmHopperBlack(_0x3be3fd[_0xde37('0x23')],'campaigns_has_cm_blacklists',_0xde37('0x70'),'CampaignId'));BPromise[_0xde37('0x71')](_0x65fa3d,handleQuery)[_0xde37('0x72')](function(_0x427b33){stats['finish']=!![];stats[_0xde37('0x73')]=_0x3be3fd[_0xde37('0x62')]&&_0x3be3fd['duplicates'][_0xde37('0x5d')]?results[0x2][_0xde37('0x73')]:results[0x0]['affectedRows'];socket[_0xde37('0x74')](_0xde37('0x75')+_0x293bfd,stats);fs[_0xde37('0x76')](_0x34eb15);fs['unlink'](_0x652add);process[_0xde37('0x3e')](0x0);})[_0xde37('0x77')](function(_0xffc9fc){logger[_0xde37('0x3c')](_0xffc9fc[_0xde37('0x3d')]);process[_0xde37('0x3e')](0x1);});}catch(_0x41ac33){logger[_0xde37('0x3c')](_0xde37('0x78'),_0x41ac33[_0xde37('0x3d')]);process[_0xde37('0x3e')](0x1);}},'error':function(_0x2212ee,_0x47d5e1,_0xa01414,_0x4fb296){throw new Error(_0x4fb296);}});}function validate(){if(process[_0xde37('0x79')]&&process[_0xde37('0x79')][_0xde37('0x5d')]<0x4){throw new Error(_0xde37('0x7a'));}var _0x1f670f=path[_0xde37('0x11')](config['root'],_0xde37('0x7b'),process[_0xde37('0x79')][0x2]);if(!fs[_0xde37('0x7c')](_0x1f670f)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x35ae37={};try{_0x35ae37=JSON[_0xde37('0x4c')](process[_0xde37('0x79')][0x3]);if(!_0x35ae37[_0xde37('0x7d')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x35ae37[_0xde37('0x7d')][_0xde37('0x21')]){throw new Error(_0xde37('0x7e'));}if(!_0x35ae37[_0xde37('0x7d')]['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x3eaea0=0x0;if(_0x35ae37['binding'][_0xde37('0x26')]){_0x3eaea0=0x1;}if(!_0x35ae37['ListId']){throw new Error(_0xde37('0x7f'));}}catch(_0x3a75e5){throw new Error('body\x20id\x20mandatory');}var _0x296166=[];try{_0x296166=_['map'](JSON[_0xde37('0x4c')](process['argv'][0x4]),'id');}catch(_0x4fd1c3){logger[_0xde37('0x3a')]('No\x20agent\x20available');}main(_0x1f670f,_0x35ae37,_0x296166,_0x3eaea0);}validate();process['on'](_0xde37('0x80'),handleStop);process['on'](_0xde37('0x81'),handleUncaughtException);
\ No newline at end of file
+var _0x5df0=['campaigns','each','finish','length','affectedRows','unlink','argv','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','bluebird','moment','squel','ioredis','../../../mysqldb','redis','localhost','socket.io-emitter','format','test','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','recallme','fields','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','into','updatedAt','cm_contacts','.CmListId\x20=\x20?','ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','error','exit','errors','sequelize','query','spread','push','catch','message','main','stringify','send','start','binding','root','.csv','writeFileSync','createReadStream','data','rows','trim','replace','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues','VoiceQueueId','CampaignId','campaigns_has_cm_blacklists'];(function(_0x7033ad,_0x4f191a){var _0x4117fb=function(_0x537976){while(--_0x537976){_0x7033ad['push'](_0x7033ad['shift']());}};_0x4117fb(++_0x4f191a);}(_0x5df0,0x118));var _0x05df=function(_0x172919,_0x20d210){_0x172919=_0x172919-0x0;var _0x519246=_0x5df0[_0x172919];return _0x519246;};'use strict';var fs=require('fs');var path=require(_0x05df('0x0'));var _=require(_0x05df('0x1'));var Papa=require(_0x05df('0x2'));var util=require('util');var BPromise=require(_0x05df('0x3'));var moment=require(_0x05df('0x4'));var squel=require(_0x05df('0x5'));var Redis=require(_0x05df('0x6'));var db=require(_0x05df('0x7'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')('import');config[_0x05df('0x8')]=_['defaults'](config[_0x05df('0x8')],{'host':_0x05df('0x9'),'port':0x18eb});var socket=require(_0x05df('0xa'))(new Redis(config[_0x05df('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x05df('0xb')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x433d82){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x05df('0xc')](_0x433d82);}function selectNotIn(_0x36a3f0,_0xc6bbf8,_0x5dc725,_0x4ca1e1,_0x27389e){return squel[_0x05df('0xd')]()[_0x05df('0xe')](_0x05df('0xf'))[_0x05df('0x10')](_0x4ca1e1)[_0x05df('0x11')](_0xc6bbf8,null,_0xc6bbf8+_0x05df('0x12')+_0x4ca1e1+'.'+_0x5dc725)[_0x05df('0x13')](_0x4ca1e1+'.'+_0x5dc725+_0x05df('0x14')+_0x36a3f0+'.'+_0x5dc725)[_0x05df('0x13')](_0xc6bbf8+'.dialCheckDuplicateType\x20IN\x20('+_0x27389e['join']()+')');}function insertCmHopper(_0x34a772,_0x544163,_0x476d1d,_0x402bf4,_0x2a5206){var _0x4ec35d=[_0x05df('0x15'),_0x05df('0x16'),_0x05df('0x17'),'cm_contacts.ListId',_0x544163+'.'+_0x402bf4,_0x05df('0x18'),_0x05df('0x19'),'cm_contacts.priority',_0x05df('0x1a'),'\x22'+_0x2a5206+'\x22'];return squel[_0x05df('0x1b')]()['into'](_0x05df('0x1c'))[_0x05df('0x1d')]([_0x05df('0xf'),_0x05df('0x1e'),_0x05df('0x1f'),_0x05df('0x20'),_0x402bf4,_0x05df('0x21'),'updatedAt','priority','UserId',_0x05df('0x22')],squel[_0x05df('0xd')]()[_0x05df('0x23')](_0x4ec35d)[_0x05df('0x10')](_0x544163)[_0x05df('0x11')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x544163+_0x05df('0x24'))['join'](_0x476d1d,null,_0x476d1d+_0x05df('0x12')+_0x544163+'.'+_0x402bf4)[_0x05df('0x13')](_0x544163+'.CmListId\x20=\x20?',_0x34a772)[_0x05df('0x13')](_0x05df('0x25'),NOW)[_0x05df('0x13')](_0x05df('0x26'),selectNotIn(_0x544163,_0x476d1d,_0x402bf4,_0x05df('0x1c'),[_0x05df('0x27'),_0x05df('0x28')]))[_0x05df('0x13')](_0x05df('0x26'),selectNotIn(_0x544163,_0x476d1d,_0x402bf4,'cm_hopper',[_0x05df('0x27')])))[_0x05df('0x29')]();}function insertCmHopperBlack(_0x21cbf2,_0x1e52e7,_0x1a5fe0,_0xe1f23c){var _0x31bb5d=[_0x05df('0x15'),_0x05df('0x17'),_0x05df('0x2a'),_0x1e52e7+'.'+_0xe1f23c,_0x05df('0x18'),_0x05df('0x19')];return squel[_0x05df('0x1b')]()[_0x05df('0x2b')]('cm_hopper_black')['fromQuery']([_0x05df('0xf'),'ContactId',_0x05df('0x20'),_0xe1f23c,_0x05df('0x21'),_0x05df('0x2c')],squel['select']()['fields'](_0x31bb5d)[_0x05df('0x10')](_0x1e52e7)[_0x05df('0x11')](_0x05df('0x2d'),null,'cm_contacts.ListId\x20=\x20'+_0x1e52e7+_0x05df('0x24'))[_0x05df('0x11')](_0x1a5fe0,null,_0x1a5fe0+_0x05df('0x12')+_0x1e52e7+'.'+_0xe1f23c)[_0x05df('0x13')](_0x1e52e7+_0x05df('0x2e'),_0x21cbf2)['where'](_0x05df('0x25'),NOW)[_0x05df('0x13')](_0x05df('0x26'),squel[_0x05df('0xd')]()[_0x05df('0xe')](_0x05df('0xf'))[_0x05df('0x10')]('cm_hopper_black')[_0x05df('0x13')](_0x05df('0x2f'),_0x21cbf2)[_0x05df('0x13')](_0xe1f23c+'\x20=\x20?',_0x1e52e7+'.'+_0xe1f23c)))[_0x05df('0x29')]();}function insertCmContact(_0x4db63d,_0x36f5cc,_0x1056cc,_0x3e1f97){var _0x5af564=_[_0x05df('0x30')](_[_0x05df('0x31')](_0x3e1f97),[_0x05df('0x20'),_0x05df('0x32'),_0x05df('0x21'),_0x05df('0x2c')]);return squel[_0x05df('0x1b')]()[_0x05df('0x2b')](_0x05df('0x2d'))[_0x05df('0x1d')](_0x5af564,squel[_0x05df('0xd')]()[_0x05df('0x23')](_0x5af564)[_0x05df('0x10')](_0x36f5cc)['where']('('+_0x1056cc[_0x05df('0x11')](',')+_0x05df('0x33'),squel[_0x05df('0xd')]()[_0x05df('0x23')](_0x1056cc)[_0x05df('0x10')](_0x05df('0x2d'))[_0x05df('0x13')](_0x05df('0x2f'),_0x4db63d)[_0x05df('0x13')](_0x05df('0x34')))[_0x05df('0x13')](_0x05df('0x35'),squel[_0x05df('0xd')]()[_0x05df('0xe')](_0x05df('0x36'),_0x05df('0x37'))[_0x05df('0x10')](_0x36f5cc)[_0x05df('0x38')](_0x1056cc[_0x05df('0x11')](','))))[_0x05df('0x29')]();}function handleStop(){logger[_0x05df('0x39')](_0x05df('0x3a'));stopped=!![];}function handleUncaughtException(_0x2a99d1){logger[_0x05df('0x3b')](_0x2a99d1['message']);process[_0x05df('0x3c')](0x1);}function handleError(_0x4f06af,_0x5f5bfc){stats[_0x05df('0x3d')]['push']({'name':_0x5f5bfc['code'],'message':_0x5f5bfc['message'],'row':_0x4f06af});}function handleQuery(_0x228a7c){logger[_0x05df('0x39')](_0x228a7c);return db[_0x05df('0x3e')][_0x05df('0x3f')](_0x228a7c)[_0x05df('0x40')](function(_0x5e96aa){results[_0x05df('0x41')](_0x5e96aa);})[_0x05df('0x42')](function(_0x146362){logger[_0x05df('0x3b')](_0x146362[_0x05df('0x43')]);});}function main(_0x5485bf,_0x213df1,_0x2ec9ab,_0x561b12){logger['info'](_0x05df('0x44'),_0x5485bf,JSON[_0x05df('0x45')](_0x213df1));process[_0x05df('0x46')](_0x05df('0x47'));var _0x5db780=_0x213df1[_0x05df('0x48')];var _0xa2844f=_0x213df1['socket_timestamp'];var _0x44968e=path[_0x05df('0x11')](config[_0x05df('0x49')],'server/files/tmp',_0xa2844f+_0x05df('0x4a'));var _0x5e7926=_['keys'](_0x5db780)[_0x05df('0x11')]();logger[_0x05df('0x39')]('header',_0x5e7926);fs[_0x05df('0x4b')](_0x44968e,_0x5e7926+'\x0a');Papa['parse'](fs[_0x05df('0x4c')](_0x5485bf),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2b7797,_0xac16e5){try{for(var _0x5a73c6=0x0,_0x393dff=[];_0x5a73c6<_0x2b7797[_0x05df('0x4d')]['length'];_0x5a73c6++){stats[_0x05df('0x4e')]+=0x1;if(_0x2b7797['errors'][_0x5a73c6]){handleError(_0x2b7797[_0x05df('0x4d')][_0x5a73c6],_0x2b7797[_0x05df('0x3d')][_0x5a73c6]);}else{var _0x21d404=[];for(var _0x53f349 in _0x5db780){if(_0x5db780['hasOwnProperty'](_0x53f349)){if(_0x2b7797[_0x05df('0x4d')][_0x5a73c6][_0x5db780[_0x53f349]]){var _0x55373d=_[_0x05df('0x4f')](_0x2b7797[_0x05df('0x4d')][_0x5a73c6][_0x5db780[_0x53f349]][_0x05df('0x50')](/"/g,'\x27'));switch(_0x53f349){case _0x05df('0x1e'):var _0x5582ed=moment(_0x55373d,_0x05df('0x51'),!![]);if(_0x5582ed[_0x05df('0x52')]()){_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');}else{_0x21d404[_0x05df('0x41')](_0x05df('0x53'));}break;case _0x05df('0x54'):var _0x395eb0=parseInt(_0x55373d);_0x55373d=_[_0x05df('0x55')](_0x395eb0)||_0x395eb0<0x0||_0x395eb0>0x4?_0x561b12?0x3:0x2:_0x395eb0;_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');break;case'UserId':var _0x1fd528=parseInt(_0x55373d);if(_[_0x05df('0x56')](_0x1fd528)&&_[_0x05df('0x57')](_0x2ec9ab,_0x1fd528)){_0x393dff[_0x05df('0x41')]('\x22'+_0x1fd528+'\x22');}else{_0x21d404['push'](_0x05df('0x58'));}break;case'email':if(isEmail(_0x55373d)){_0x393dff['push']('\x22'+_0x55373d+'\x22');}else{_0x21d404[_0x05df('0x41')]('email\x20wrong\x20format');}break;case _0x05df('0x59'):var _0x3954c1=moment(_0x55373d,_0x05df('0x5a'),!![]);if(_0x3954c1[_0x05df('0x52')]()){_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');}else{_0x21d404['push'](_0x05df('0x5b'));}break;default:_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');}}else{switch(_0x53f349){case _0x05df('0x5c'):case _0x05df('0xf'):_0x21d404[_0x05df('0x41')](_0x53f349+_0x05df('0x5d'));break;default:_0x393dff['push']('\x22\x22');}}}}if(_0x21d404['length']){handleError(_0x2b7797[_0x05df('0x4d')][_0x5a73c6],{'code':_0x05df('0x5e'),'message':_0x21d404[_0x05df('0x11')]()});}else{fs[_0x05df('0x5f')](_0x44968e,_0x393dff[_0x05df('0x11')]()+'\x0a');}_0x393dff=[];}if(!(stats[_0x05df('0x4e')]%0xc8)){socket[_0x05df('0x60')](_0x05df('0x61')+_0xa2844f,stats);stats[_0x05df('0x3d')]=[];}}if(stopped){logger[_0x05df('0x39')](_0x05df('0x62'));_0xac16e5['abort']();}}catch(_0xa09ead){handleError(_0x2b7797['data'][_0x5a73c6],{'code':_0x05df('0x63'),'message':_0xa09ead[_0x05df('0x43')]});logger[_0x05df('0x3b')](_0x05df('0x64'),_0xa09ead[_0x05df('0x43')]);}},'complete':function(){try{var _0x2c0ed6=[];var _0x496f10='cm_contacts';if(_0x213df1[_0x05df('0x65')]&&_0x213df1[_0x05df('0x65')]['length']){_0x496f10=_0x05df('0x66')+_0xa2844f;_0x2c0ed6[_0x05df('0x41')](_0x05df('0x67')+_0x496f10+_0x05df('0x68'));}var _0xe30c6c=util[_0x05df('0xb')](_0x05df('0x69'),_0x44968e,_0x496f10,_0x5e7926,_0x213df1[_0x05df('0x20')],_0x213df1[_0x05df('0x32')]||null,NOW,NOW);if(_[_0x05df('0x6a')](_0x5db780[_0x05df('0x1e')])){_0xe30c6c+=_0x05df('0x6b');}_0x2c0ed6[_0x05df('0x41')](_0xe30c6c);if(_0x213df1['duplicates']&&_0x213df1['duplicates']['length']){_0x2c0ed6['push'](insertCmContact(_0x213df1['ListId'],_0x496f10,_0x213df1[_0x05df('0x65')],_0x5db780));_0x2c0ed6[_0x05df('0x41')](_0x05df('0x6c')+_0x496f10+';');}_0x2c0ed6['push'](insertCmHopper(_0x213df1[_0x05df('0x20')],'voice_queues_has_cm_lists',_0x05df('0x6d'),'VoiceQueueId',_0x561b12));_0x2c0ed6[_0x05df('0x41')](insertCmHopperBlack(_0x213df1[_0x05df('0x20')],'voice_queues_has_cm_blacklists',_0x05df('0x6d'),_0x05df('0x6e')));_0x2c0ed6['push'](insertCmHopper(_0x213df1[_0x05df('0x20')],'campaigns_has_cm_lists','campaigns',_0x05df('0x6f'),_0x561b12));_0x2c0ed6[_0x05df('0x41')](insertCmHopperBlack(_0x213df1[_0x05df('0x20')],_0x05df('0x70'),_0x05df('0x71'),_0x05df('0x6f')));BPromise[_0x05df('0x72')](_0x2c0ed6,handleQuery)['then'](function(_0x3e5add){stats[_0x05df('0x73')]=!![];stats['affectedRows']=_0x213df1[_0x05df('0x65')]&&_0x213df1['duplicates'][_0x05df('0x74')]?results[0x2][_0x05df('0x75')]:results[0x0]['affectedRows'];socket[_0x05df('0x60')](_0x05df('0x61')+_0xa2844f,stats);fs[_0x05df('0x76')](_0x5485bf);fs[_0x05df('0x76')](_0x44968e);process[_0x05df('0x3c')](0x0);})['catch'](function(_0x3adc95){logger[_0x05df('0x3b')](_0x3adc95[_0x05df('0x43')]);process[_0x05df('0x3c')](0x1);});}catch(_0x5d3368){logger[_0x05df('0x3b')]('complete',_0x5d3368[_0x05df('0x43')]);process[_0x05df('0x3c')](0x1);}},'error':function(_0x42e6d3,_0x4c5d7c,_0x6314c3,_0x58c659){throw new Error(_0x58c659);}});}function validate(){if(process['argv']&&process[_0x05df('0x77')]['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x72e837=path[_0x05df('0x11')](config[_0x05df('0x49')],_0x05df('0x78'),process['argv'][0x2]);if(!fs[_0x05df('0x79')](_0x72e837)){throw new Error(_0x05df('0x7a'));}var _0x489f8f={};try{_0x489f8f=JSON[_0x05df('0x7b')](process[_0x05df('0x77')][0x3]);if(!_0x489f8f[_0x05df('0x48')]){throw new Error(_0x05df('0x7c'));}if(!_0x489f8f[_0x05df('0x48')][_0x05df('0xf')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x489f8f[_0x05df('0x48')][_0x05df('0x5c')]){throw new Error(_0x05df('0x7d'));}var _0x3cbcfe=0x0;if(_0x489f8f[_0x05df('0x48')]['UserId']){_0x3cbcfe=0x1;}if(!_0x489f8f[_0x05df('0x20')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x54650c){throw new Error(_0x05df('0x7e'));}var _0x10ae52=[];try{_0x10ae52=_[_0x05df('0x7f')](JSON[_0x05df('0x7b')](process['argv'][0x4]),'id');}catch(_0xea2151){logger[_0x05df('0x39')](_0x05df('0x80'));}main(_0x72e837,_0x489f8f,_0x10ae52,_0x3cbcfe);}validate();process['on'](_0x05df('0x81'),handleStop);process['on'](_0x05df('0x82'),handleUncaughtException);
\ No newline at end of file
index fc5abc4..41c5ce4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a4=['Date','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','getSubjects','toLowerCase','push','variable','calleridnum','string','Outbound\x20Call','getDescriptions','voice','inbound','***\x20Call\x20Info\x20***','Caller\x20Number','keyValue','Caller\x20Name','calleridname','Call\x20To','Queue','queue','uniqueid','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridnum','***\x20Time\x20Info\x20***','agentcalledAt','Agent\x20Connect','agentconnectAt','Agent\x20Complete','holdtime','Talk\x20Time','talktime','outbound','Called\x20Number','Member\x20Name','membername','UniqueId'];(function(_0x28be69,_0x2aadcf){var _0x549629=function(_0x3273e3){while(--_0x3273e3){_0x28be69['push'](_0x28be69['shift']());}};_0x549629(++_0x2aadcf);}(_0x15a4,0x1f2));var _0x415a=function(_0x4961d2,_0x3d44fb){_0x4961d2=_0x4961d2-0x0;var _0x2bb015=_0x15a4[_0x4961d2];return _0x2bb015;};'use strict';exports[_0x415a('0x0')]=function(_0x4cfb39,_0x335ccd){var _0x4986e1=[{'type':'string','content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x4cfb39['toLowerCase']()){case'voice':switch(_0x335ccd[_0x415a('0x1')]()){case'inbound':_0x4986e1[_0x415a('0x2')]({'type':_0x415a('0x3'),'content':'','variableName':'queue'});_0x4986e1['push']({'type':_0x415a('0x3'),'content':'','variableName':_0x415a('0x4')});break;case'outbound':_0x4986e1['push']({'type':_0x415a('0x5'),'content':_0x415a('0x6'),'variableName':null});_0x4986e1[_0x415a('0x2')]({'type':_0x415a('0x3'),'content':'','variableName':'destcalleridnum'});break;}}return _0x4986e1;};exports[_0x415a('0x7')]=function(_0x203b8c,_0x213cd7){var _0x21abe8=[];switch(_0x203b8c['toLowerCase']()){case _0x415a('0x8'):switch(_0x213cd7['toLowerCase']()){case _0x415a('0x9'):_0x21abe8=[{'type':_0x415a('0x5'),'content':_0x415a('0xa'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x415a('0xb'),'keyType':_0x415a('0x3'),'variableName':'calleridnum'},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0xd'),'keyType':_0x415a('0x3'),'variableName':_0x415a('0xe')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0xf'),'keyType':_0x415a('0x3'),'variableName':'destexten'},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x10'),'keyType':'variable','variableName':_0x415a('0x11')},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0x415a('0x3'),'variableName':_0x415a('0x12')},{'type':_0x415a('0xc'),'content':'','key':'Date','keyType':_0x415a('0x3'),'variableName':'agentcalledAt'},{'type':_0x415a('0x5'),'content':_0x415a('0x13'),'key':null,'keyType':null,'variableName':null},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x14'),'keyType':_0x415a('0x3'),'variableName':'destcalleridname'},{'type':_0x415a('0xc'),'content':'','key':'Agent\x20Number','keyType':_0x415a('0x3'),'variableName':_0x415a('0x15')},{'type':_0x415a('0x5'),'content':_0x415a('0x16'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Ring','keyType':_0x415a('0x3'),'variableName':_0x415a('0x17')},{'type':'keyValue','content':'','key':_0x415a('0x18'),'keyType':_0x415a('0x3'),'variableName':_0x415a('0x19')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x1a'),'keyType':_0x415a('0x3'),'variableName':'agentcompleteAt'},{'type':_0x415a('0xc'),'content':'','key':'Hold\x20Time','keyType':_0x415a('0x3'),'variableName':_0x415a('0x1b')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x1c'),'keyType':_0x415a('0x3'),'variableName':_0x415a('0x1d')}];break;case _0x415a('0x1e'):_0x21abe8=[{'type':_0x415a('0x5'),'content':_0x415a('0xa'),'variableName':null},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x1f'),'keyType':_0x415a('0x3'),'keyContent':'','variableName':_0x415a('0x15')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x20'),'keyType':_0x415a('0x3'),'keyContent':'','variableName':_0x415a('0x21')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x22'),'keyType':'variable','keyContent':'','variableName':_0x415a('0x12')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x23'),'keyType':_0x415a('0x3'),'keyContent':'','variableName':_0x415a('0x24')},{'type':_0x415a('0x5'),'content':_0x415a('0x16')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x25'),'keyType':_0x415a('0x3'),'keyContent':'','variableName':_0x415a('0x26')},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x27'),'keyType':_0x415a('0x3'),'keyContent':'','variableName':'endtime'},{'type':_0x415a('0xc'),'content':'','key':_0x415a('0x28'),'keyType':_0x415a('0x3'),'keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':'Billable\x20Time','keyType':'variable','keyContent':'','variableName':'billableseconds'}];break;}}return _0x21abe8;};
\ No newline at end of file
+var _0x64f4=['Caller\x20Name','calleridname','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','agentconnectAt','agentcompleteAt','Hold\x20Time','talktime','outbound','Called\x20Number','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','toLowerCase','voice','push','variable','queue','string','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum'];(function(_0x25e7f5,_0x24f8e9){var _0x4a0fc9=function(_0x277eb2){while(--_0x277eb2){_0x25e7f5['push'](_0x25e7f5['shift']());}};_0x4a0fc9(++_0x24f8e9);}(_0x64f4,0x112));var _0x464f=function(_0x27080e,_0x43a231){_0x27080e=_0x27080e-0x0;var _0x2fc696=_0x64f4[_0x27080e];return _0x2fc696;};'use strict';exports[_0x464f('0x0')]=function(_0x442974,_0x25b13f){var _0xc6cafe=[{'type':'string','content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x442974[_0x464f('0x1')]()){case _0x464f('0x2'):switch(_0x25b13f[_0x464f('0x1')]()){case'inbound':_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x4'),'content':'','variableName':_0x464f('0x5')});_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x4'),'content':'','variableName':'calleridnum'});break;case'outbound':_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x6'),'content':'Outbound\x20Call','variableName':null});_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x4'),'content':'','variableName':_0x464f('0x7')});break;}}return _0xc6cafe;};exports[_0x464f('0x8')]=function(_0x11a1a0,_0x4a5d36){var _0x53dfc4=[];switch(_0x11a1a0[_0x464f('0x1')]()){case'voice':switch(_0x4a5d36[_0x464f('0x1')]()){case'inbound':_0x53dfc4=[{'type':_0x464f('0x6'),'content':_0x464f('0x9'),'key':null,'keyType':null,'variableName':null},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0xb'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0xc')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0xd'),'keyType':'variable','variableName':_0x464f('0xe')},{'type':'keyValue','content':'','key':'Call\x20To','keyType':_0x464f('0x4'),'variableName':_0x464f('0xf')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x10'),'keyType':'variable','variableName':_0x464f('0x5')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x11'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x12')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x13'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x14')},{'type':'string','content':_0x464f('0x15'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Name','keyType':_0x464f('0x4'),'variableName':_0x464f('0x16')},{'type':'keyValue','content':'','key':_0x464f('0x17'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x7')},{'type':_0x464f('0x6'),'content':_0x464f('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x19'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x14')},{'type':_0x464f('0xa'),'content':'','key':'Agent\x20Connect','keyType':_0x464f('0x4'),'variableName':_0x464f('0x1a')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0x464f('0x4'),'variableName':_0x464f('0x1b')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x1c'),'keyType':_0x464f('0x4'),'variableName':'holdtime'},{'type':_0x464f('0xa'),'content':'','key':'Talk\x20Time','keyType':'variable','variableName':_0x464f('0x1d')}];break;case _0x464f('0x1e'):_0x53dfc4=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x1f'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x7')},{'type':_0x464f('0xa'),'content':'','key':'Member\x20Name','keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x20')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x11'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x12')},{'type':_0x464f('0xa'),'content':'','key':'Date','keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x21')},{'type':_0x464f('0x6'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x22'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x23')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x24'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':'endtime'},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x25'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x26')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x27'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x28')}];break;}}return _0x53dfc4;};
\ No newline at end of file
index 09bbc0f..d2b9fe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x859a=['fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','InteractionId','unknown','toUpperCase','name','role','stringify','null','Interaction','findOne','then','info','catch','user','body','html','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger'];(function(_0x49b87f,_0x2ff92b){var _0x23cfe6=function(_0x36922a){while(--_0x36922a){_0x49b87f['push'](_0x49b87f['shift']());}};_0x23cfe6(++_0x2ff92b);}(_0x859a,0x1c4));var _0xa859=function(_0x381337,_0x280148){_0x381337=_0x381337-0x0;var _0x3959e2=_0x859a[_0x381337];return _0x3959e2;};'use strict';var _=require(_0xa859('0x0'));var db=require(_0xa859('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0xa859('0x2')),'mail':require(_0xa859('0x3'))('mail-interactions'),'fax':require(_0xa859('0x3'))(_0xa859('0x4')),'sms':require(_0xa859('0x3'))(_0xa859('0x5')),'chat':require(_0xa859('0x3'))(_0xa859('0x6')),'whatsapp':require('../../config/logger')(_0xa859('0x7'))};function getInteractionId(_0x456c17,_0x44fc70,_0xfcff1b){if(_0x456c17&&_0x456c17[_['upperFirst'](_0xfcff1b)+_0xa859('0x8')]){return _0x456c17[_['upperFirst'](_0xfcff1b)+_0xa859('0x8')];}else if(_0x456c17&&_0x456c17['id']){return _0x456c17['id'];}else if(_0x44fc70&&_0x44fc70['id']){return _0x44fc70['id'];}else{return _0xa859('0x9');}}function log(_0x581459,_0x668197,_0x168ff2,_0x47eef2,_0xf85657,_0x2e973e){loggers[_0xf85657['toLowerCase']()][_0x581459]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2e973e[_0xa859('0xa')](),_0x668197?_0x668197['id']:null,_0x668197?_0x668197[_0xa859('0xb')]:null,_0x668197?_0x668197[_0xa859('0xc')]:null,getInteractionId(_0x168ff2,_0x47eef2,_0xf85657),_0x168ff2?JSON[_0xa859('0xd')](_0x168ff2):_0xa859('0xe'));}function updateUser(_0x5e956d,_0x417876,_0x25f5db,_0x274be6,_0x8d0c70){db[_['upperFirst'](_0x274be6)+_0xa859('0xf')][_0xa859('0x10')]({'where':{'id':getInteractionId(_0x417876,_0x25f5db,_0x274be6)}})[_0xa859('0x11')](function(_0x1524ee){if(_0x1524ee){return _0x1524ee['update']({'UserId':_0x5e956d?_0x5e956d['id']:null});}})[_0xa859('0x11')](function(_0x4df43e){if(_0x4df43e){log(_0xa859('0x12'),_0x5e956d,_0x417876,_0x25f5db,_0x274be6,_0x8d0c70);}})[_0xa859('0x13')](function(){log('error',_0x5e956d,_0x417876,_0x25f5db,_0x274be6,_0x8d0c70);});}exports['tracked']=function(_0x44f1c6,_0x2c4418){return function(_0x45e925,_0xcc680d,_0x30053b){var _0xf26f66=_0x45e925[_0xa859('0x14')];var _0x244c94={};var _0x542c65=_0x45e925['query'];if(_0x244c94){_0x244c94=_['clone'](_0x45e925[_0xa859('0x15')]);_0x244c94=_['omit'](_0x244c94,[_0xa859('0x15'),_0xa859('0x16'),'phone','fax',_0xa859('0x17')]);}updateUser(_0xf26f66,_0x244c94,_0x542c65,_0x44f1c6,_0x2c4418);_0x30053b(null);};};
\ No newline at end of file
+var _0x6642=['tracked','user','query','omit','body','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','chat-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','null','Interaction','findOne','then','update','info'];(function(_0x43fe51,_0x27179f){var _0x497a3f=function(_0x42d894){while(--_0x42d894){_0x43fe51['push'](_0x43fe51['shift']());}};_0x497a3f(++_0x27179f);}(_0x6642,0x105));var _0x2664=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6642[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2664('0x0'));var db=require(_0x2664('0x1'))['db'];var loggers={'openchannel':require(_0x2664('0x2'))('openchannel-interactions'),'mail':require('../../config/logger')(_0x2664('0x3')),'fax':require('../../config/logger')(_0x2664('0x4')),'sms':require(_0x2664('0x2'))('sms-interactions'),'chat':require('../../config/logger')(_0x2664('0x5')),'whatsapp':require(_0x2664('0x2'))('whatsapp-interactions')};function getInteractionId(_0x5a5fde,_0xad050f,_0x2dc682){if(_0x5a5fde&&_0x5a5fde[_[_0x2664('0x6')](_0x2dc682)+_0x2664('0x7')]){return _0x5a5fde[_[_0x2664('0x6')](_0x2dc682)+_0x2664('0x7')];}else if(_0x5a5fde&&_0x5a5fde['id']){return _0x5a5fde['id'];}else if(_0xad050f&&_0xad050f['id']){return _0xad050f['id'];}else{return _0x2664('0x8');}}function log(_0x128ee5,_0x3702c0,_0x1b5fc3,_0x2b8a8c,_0x289754,_0x4f3143){loggers[_0x289754[_0x2664('0x9')]()][_0x128ee5](_0x2664('0xa'),_0x4f3143[_0x2664('0xb')](),_0x3702c0?_0x3702c0['id']:null,_0x3702c0?_0x3702c0[_0x2664('0xc')]:null,_0x3702c0?_0x3702c0['role']:null,getInteractionId(_0x1b5fc3,_0x2b8a8c,_0x289754),_0x1b5fc3?JSON['stringify'](_0x1b5fc3):_0x2664('0xd'));}function updateUser(_0x4d4b0c,_0x512ae5,_0x3566ef,_0x2ce5ba,_0x171af6){db[_[_0x2664('0x6')](_0x2ce5ba)+_0x2664('0xe')][_0x2664('0xf')]({'where':{'id':getInteractionId(_0x512ae5,_0x3566ef,_0x2ce5ba)}})[_0x2664('0x10')](function(_0x42be86){if(_0x42be86){return _0x42be86[_0x2664('0x11')]({'UserId':_0x4d4b0c?_0x4d4b0c['id']:null});}})['then'](function(_0xb08d48){if(_0xb08d48){log(_0x2664('0x12'),_0x4d4b0c,_0x512ae5,_0x3566ef,_0x2ce5ba,_0x171af6);}})['catch'](function(){log('error',_0x4d4b0c,_0x512ae5,_0x3566ef,_0x2ce5ba,_0x171af6);});}exports[_0x2664('0x13')]=function(_0x23cf6f,_0x39abab){return function(_0x1982f0,_0x2f5aef,_0x5e0681){var _0x3e8202=_0x1982f0[_0x2664('0x14')];var _0x5dc5f7={};var _0x2c43f7=_0x1982f0[_0x2664('0x15')];if(_0x5dc5f7){_0x5dc5f7=_['clone'](_0x1982f0['body']);_0x5dc5f7=_[_0x2664('0x16')](_0x5dc5f7,[_0x2664('0x17'),_0x2664('0x18'),_0x2664('0x19'),_0x2664('0x1a'),_0x2664('0x1b')]);}updateUser(_0x3e8202,_0x5dc5f7,_0x2c43f7,_0x23cf6f,_0x39abab);_0x5e0681(null);};};
\ No newline at end of file
index bc1f9cf..fbf5f57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81b3=['admin','isUserLimit','crypto','util','../../mysqldb','data1','license','split','aes-256-ctr','%s:%s:%s','update','base64','final','utf8','parse','hasOwnProperty','License','findOne','count','then','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users'];(function(_0x4c21ff,_0x384b66){var _0x5185ec=function(_0x245b5c){while(--_0x245b5c){_0x4c21ff['push'](_0x4c21ff['shift']());}};_0x5185ec(++_0x384b66);}(_0x81b3,0x98));var _0x381b=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x81b3[_0x173441];return _0x2423a8;};'use strict';var crypto=require(_0x381b('0x0'));var util=require(_0x381b('0x1'));var compose=require('composable-middleware');var db=require(_0x381b('0x2'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x59a8d0,_0x17f421){if(_0x59a8d0&&_0x17f421){if(_0x17f421[_0x381b('0x3')]&&_0x17f421[_0x381b('0x4')]){var _0x5f1a18=_0x17f421[_0x381b('0x3')];var _0x258c48=_0x17f421[_0x381b('0x4')];var _0x34eba2=_0x5f1a18[_0x381b('0x5')]('-')[0x4];var _0x5528b0=_0x5f1a18['split']('-')[0x0];var _0x4a1fc4=crypto['createDecipher'](_0x381b('0x6'),util['format'](_0x381b('0x7'),_0x34eba2,_0x5f1a18,_0x5528b0));var _0x2b558b=_0x4a1fc4[_0x381b('0x8')](_0x258c48,_0x381b('0x9'),'utf8');_0x2b558b+=_0x4a1fc4[_0x381b('0xa')](_0x381b('0xb'));var _0x4992ce=JSON[_0x381b('0xc')](_0x2b558b);return _0x4992ce[_0x381b('0xd')](_0x59a8d0)?_0x4992ce[_0x59a8d0]:null;}}return null;}function isLimit(_0x39b406,_0x53453f,_0x172bcb,_0x38a12b){var _0x41b0b8=_0x53453f;return compose()['use'](function(_0x5109ac,_0x121e9b,_0x1846a4){return db[_0x381b('0xe')][_0x381b('0xf')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x57c62b){var _0x2aaadd=getValueFromLicense(_0x39b406,_0x57c62b);return _0x2aaadd?_0x2aaadd:_0x41b0b8;})['then'](function(_0x40b9e5){_0x41b0b8=_0x40b9e5;return _0x172bcb[_0x381b('0x10')](_0x38a12b);})[_0x381b('0x11')](function(_0x509d1e){if(_0x509d1e>=_0x41b0b8){return _0x121e9b[_0x381b('0x12')](0x193)[_0x381b('0x13')]({'message':util['format'](_0x381b('0x14'),_0x39b406)});}_0x1846a4();})[_0x381b('0x15')](function(_0x3d77bc){_0x1846a4(_0x3d77bc);});});}function isUserLimit(){return isLimit(_0x381b('0x16'),0x1,db['User'],{'where':{'$or':[{'role':_0x381b('0x17')},{'role':'user'}]}});}exports[_0x381b('0x18')]=isUserLimit;
\ No newline at end of file
+var _0xb57b=['format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','License','findOne','then','count','status','catch','admin','user','isUserLimit','crypto','util','composable-middleware','../../config/environment','license','data1','split','createDecipher'];(function(_0x51e673,_0x1cfdcc){var _0x3733be=function(_0x5f3b44){while(--_0x5f3b44){_0x51e673['push'](_0x51e673['shift']());}};_0x3733be(++_0x1cfdcc);}(_0xb57b,0xae));var _0xbb57=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0xb57b[_0xd1d19a];return _0x52a79d;};'use strict';var crypto=require(_0xbb57('0x0'));var util=require(_0xbb57('0x1'));var compose=require(_0xbb57('0x2'));var db=require('../../mysqldb')['db'];var config=require(_0xbb57('0x3'));function getValueFromLicense(_0x53d840,_0x5ac4e5){if(_0x53d840&&_0x5ac4e5){if(_0x5ac4e5['data1']&&_0x5ac4e5[_0xbb57('0x4')]){var _0x5b6305=_0x5ac4e5[_0xbb57('0x5')];var _0xec8698=_0x5ac4e5[_0xbb57('0x4')];var _0x29d0ab=_0x5b6305[_0xbb57('0x6')]('-')[0x4];var _0x143c8f=_0x5b6305['split']('-')[0x0];var _0xbe6f1e=crypto[_0xbb57('0x7')]('aes-256-ctr',util[_0xbb57('0x8')](_0xbb57('0x9'),_0x29d0ab,_0x5b6305,_0x143c8f));var _0xe0d8b9=_0xbe6f1e[_0xbb57('0xa')](_0xec8698,_0xbb57('0xb'),_0xbb57('0xc'));_0xe0d8b9+=_0xbe6f1e[_0xbb57('0xd')]('utf8');var _0x705b4a=JSON[_0xbb57('0xe')](_0xe0d8b9);return _0x705b4a[_0xbb57('0xf')](_0x53d840)?_0x705b4a[_0x53d840]:null;}}return null;}function isLimit(_0x3ea8b2,_0x4405b2,_0x3e98c3,_0x17f772){var _0x48c3b1=_0x4405b2;return compose()[_0xbb57('0x10')](function(_0x43bb52,_0x295686,_0x1c4a34){return db[_0xbb57('0x11')][_0xbb57('0x12')]({'where':{'id':0x1},'raw':!![]})[_0xbb57('0x13')](function(_0x393ac0){var _0x3932a4=getValueFromLicense(_0x3ea8b2,_0x393ac0);return _0x3932a4?_0x3932a4:_0x48c3b1;})['then'](function(_0x35fa6e){_0x48c3b1=_0x35fa6e;return _0x3e98c3[_0xbb57('0x14')](_0x17f772);})[_0xbb57('0x13')](function(_0x23db6f){if(_0x23db6f>=_0x48c3b1){return _0x295686[_0xbb57('0x15')](0x193)['json']({'message':util[_0xbb57('0x8')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x3ea8b2)});}_0x1c4a34();})[_0xbb57('0x16')](function(_0x48617c){_0x1c4a34(_0x48617c);});});}function isUserLimit(){return isLimit('users',0x1,db['User'],{'where':{'$or':[{'role':_0xbb57('0x17')},{'role':_0xbb57('0x18')}]}});}exports[_0xbb57('0x19')]=isUserLimit;
\ No newline at end of file
index 4cb1a44..b726441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f5=['YYYY-MM-DD','castTo','text','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','$lt','<\x20?','>\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','start','utcOffset','add','hours','minutes','seconds','lodash','moment','parseSearch','startsWith','[$or]','and','replace','[$and]','split','length','slice','match','forEach','indexOf','conditions','push','buildExpression','DATE','operator','$between','value','includes','$gt','$lte','format'];(function(_0x1c7502,_0x5d2c70){var _0x2165fa=function(_0x5a64a2){while(--_0x5a64a2){_0x1c7502['push'](_0x1c7502['shift']());}};_0x2165fa(++_0x5d2c70);}(_0x34f5,0x89));var _0x534f=function(_0x395f19,_0x3629d1){_0x395f19=_0x395f19-0x0;var _0x3e44ea=_0x34f5[_0x395f19];return _0x3e44ea;};'use strict';var _=require(_0x534f('0x0'));var moment=require(_0x534f('0x1'));exports[_0x534f('0x2')]=function(_0x41a50f){var _0x189d4f={'conditions':[]};_0x189d4f['sqlOperator']=_[_0x534f('0x3')](_0x41a50f,_0x534f('0x4'))?'or':_0x534f('0x5');var _0x5b310f=_0x41a50f[_0x534f('0x6')](_0x534f('0x7'),'')[_0x534f('0x6')](_0x534f('0x4'),'')[_0x534f('0x8')]('||');for(var _0x1f6f29=0x0;_0x1f6f29<_0x5b310f[_0x534f('0x9')];_0x1f6f29++){var _0x5634bb=_0x5b310f[_0x1f6f29][_0x534f('0x8')](':=');var _0xe6756a=_0x5634bb[0x0];var _0x3f0dcf=_0x5634bb[_0x534f('0xa')](0x1);_0x3f0dcf['forEach'](function(_0x103a28){var _0x20086e=_0x103a28['split']('[')['shift']();var _0x9eb055=_0x103a28[_0x534f('0xb')](/\[(.*?)\]/g);_0x9eb055[_0x534f('0xc')](function(_0x24e8e8){var _0x4c7a6e=_0x24e8e8[_0x534f('0x8')]('[')['filter'](function(_0x5958b1){return _0x5958b1[_0x534f('0xd')](']')>-0x1;})['map'](function(_0x130cf7){return _0x130cf7[_0x534f('0x8')](']')[0x0];})[0x0];_0x189d4f[_0x534f('0xe')][_0x534f('0xf')]({'field':_0xe6756a,'operator':_0x20086e,'value':_0x4c7a6e});});});}return _0x189d4f;};exports[_0x534f('0x10')]=function(_0x25ad03,_0x65d2e,_0x1a8cf6){var _0x41f390={};if(_0x65d2e===_0x534f('0x11')){if(_0x1a8cf6[_0x534f('0x12')]==='$eq'){_0x1a8cf6[_0x534f('0x12')]=_0x534f('0x13');_0x1a8cf6[_0x534f('0x14')]+=','+_0x1a8cf6[_0x534f('0x14')];}else if(_[_0x534f('0x15')]([_0x534f('0x16'),_0x534f('0x17')],_0x1a8cf6[_0x534f('0x12')])){_0x1a8cf6['value']=moment(_0x1a8cf6['value'])['add'](0x1,'days')[_0x534f('0x18')](_0x534f('0x19'));}}if(_0x1a8cf6[_0x534f('0x1a')]){_0x65d2e=_0x1a8cf6['castTo'];_0x41f390[_0x534f('0x1b')]='CAST('+_0x25ad03+'.'+_0x1a8cf6[_0x534f('0x1c')]+_0x534f('0x1d')+_0x1a8cf6['castTo']+')\x20'+parseOperator(_0x1a8cf6[_0x534f('0x12')]);}else{_0x41f390[_0x534f('0x1b')]=_0x25ad03+'.'+_0x1a8cf6['field']+'\x20'+parseOperator(_0x1a8cf6[_0x534f('0x12')]);}if(_[_0x534f('0x15')]([_0x534f('0x1e'),_0x534f('0x1f')],_0x1a8cf6['operator']))_0x41f390['text']='('+_0x41f390['text']+_0x534f('0x20')+_0x25ad03+'.'+_0x1a8cf6[_0x534f('0x1c')]+_0x534f('0x21');_0x41f390[_0x534f('0x14')]=parseValue(_0x65d2e,_0x1a8cf6['operator'],_0x1a8cf6['value']);return _0x41f390;};function parseOperator(_0x378a13){var _0x366297;switch(_0x378a13){case'$in':_0x366297=_0x534f('0x22');break;case _0x534f('0x1f'):_0x366297=_0x534f('0x23');break;case'$eq':_0x366297=_0x534f('0x24');break;case'$ne':_0x366297=_0x534f('0x25');break;case _0x534f('0x26'):case _0x534f('0x27'):case _0x534f('0x28'):_0x366297='LIKE\x20?';break;case _0x534f('0x29'):_0x366297=_0x534f('0x2a');break;case _0x534f('0x16'):_0x366297=_0x534f('0x2b');break;case'$lte':_0x366297='<=\x20?';break;case _0x534f('0x2c'):_0x366297=_0x534f('0x2d');break;case _0x534f('0x13'):_0x366297=_0x534f('0x2e');break;}return _0x366297;}function parseValue(_0x1ee3f7,_0x4dc4d2,_0x38fdb7){var _0x258559={'start':undefined,'end':undefined};switch(_0x4dc4d2){case _0x534f('0x2f'):case'$notIn':_0x258559[_0x534f('0x30')]=_0x38fdb7['split'](',');break;case _0x534f('0x26'):_0x258559[_0x534f('0x30')]='%'+_0x38fdb7+'%';break;case _0x534f('0x27'):_0x258559['start']=_0x38fdb7+'%';break;case _0x534f('0x28'):_0x258559['start']='%'+_0x38fdb7;break;case _0x534f('0x13'):var _0x434d19=_0x38fdb7[_0x534f('0x8')](',');var _0x38fdb7=_0x434d19['shift']();var _0x24b831=_0x434d19['pop']();if(_0x1ee3f7===_0x534f('0x11')){_0x38fdb7=moment(_0x38fdb7)[_0x534f('0x31')](0x0,!![])['format']();_0x24b831=moment(_0x24b831)['utcOffset'](0x0,!![])[_0x534f('0x32')](0x17,_0x534f('0x33'))['add'](0x3b,_0x534f('0x34'))[_0x534f('0x32')](0x3b,_0x534f('0x35'))[_0x534f('0x18')]();}_0x258559={'start':_0x38fdb7,'end':_0x24b831};break;default:_0x258559['start']=_0x38fdb7;break;}return _0x258559;}
\ No newline at end of file
+var _0x12dd=['pop','utcOffset','hours','seconds','format','moment','parseSearch','sqlOperator','[$or]','replace','[$and]','split','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','$eq','operator','value','includes','$gt','$lte','add','days','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','start','$between'];(function(_0x297e15,_0x4943f2){var _0x553190=function(_0x55b6ad){while(--_0x55b6ad){_0x297e15['push'](_0x297e15['shift']());}};_0x553190(++_0x4943f2);}(_0x12dd,0x1eb));var _0xd12d=function(_0x19b606,_0x33ace0){_0x19b606=_0x19b606-0x0;var _0x471109=_0x12dd[_0x19b606];return _0x471109;};'use strict';var _=require('lodash');var moment=require(_0xd12d('0x0'));exports[_0xd12d('0x1')]=function(_0x1a222b){var _0x30f139={'conditions':[]};_0x30f139[_0xd12d('0x2')]=_['startsWith'](_0x1a222b,_0xd12d('0x3'))?'or':'and';var _0x28cec0=_0x1a222b[_0xd12d('0x4')](_0xd12d('0x5'),'')[_0xd12d('0x4')](_0xd12d('0x3'),'')[_0xd12d('0x6')]('||');for(var _0x3a34b1=0x0;_0x3a34b1<_0x28cec0['length'];_0x3a34b1++){var _0x3c830b=_0x28cec0[_0x3a34b1][_0xd12d('0x6')](':=');var _0x5bb96f=_0x3c830b[0x0];var _0x585c17=_0x3c830b['slice'](0x1);_0x585c17[_0xd12d('0x7')](function(_0x142c44){var _0x5363e3=_0x142c44[_0xd12d('0x6')]('[')[_0xd12d('0x8')]();var _0x376889=_0x142c44[_0xd12d('0x9')](/\[(.*?)\]/g);_0x376889['forEach'](function(_0x2f0bbc){var _0x2a677f=_0x2f0bbc[_0xd12d('0x6')]('[')[_0xd12d('0xa')](function(_0x2b62d2){return _0x2b62d2[_0xd12d('0xb')](']')>-0x1;})[_0xd12d('0xc')](function(_0x631fa2){return _0x631fa2['split'](']')[0x0];})[0x0];_0x30f139[_0xd12d('0xd')][_0xd12d('0xe')]({'field':_0x5bb96f,'operator':_0x5363e3,'value':_0x2a677f});});});}return _0x30f139;};exports[_0xd12d('0xf')]=function(_0x410672,_0x14866a,_0x3ab58f){var _0x25b179={};if(_0x14866a==='DATE'){if(_0x3ab58f['operator']===_0xd12d('0x10')){_0x3ab58f[_0xd12d('0x11')]='$between';_0x3ab58f[_0xd12d('0x12')]+=','+_0x3ab58f[_0xd12d('0x12')];}else if(_[_0xd12d('0x13')]([_0xd12d('0x14'),_0xd12d('0x15')],_0x3ab58f[_0xd12d('0x11')])){_0x3ab58f[_0xd12d('0x12')]=moment(_0x3ab58f[_0xd12d('0x12')])[_0xd12d('0x16')](0x1,_0xd12d('0x17'))['format'](_0xd12d('0x18'));}}if(_0x3ab58f[_0xd12d('0x19')]){_0x14866a=_0x3ab58f[_0xd12d('0x19')];_0x25b179[_0xd12d('0x1a')]=_0xd12d('0x1b')+_0x410672+'.'+_0x3ab58f[_0xd12d('0x1c')]+_0xd12d('0x1d')+_0x3ab58f[_0xd12d('0x19')]+')\x20'+parseOperator(_0x3ab58f[_0xd12d('0x11')]);}else{_0x25b179['text']=_0x410672+'.'+_0x3ab58f[_0xd12d('0x1c')]+'\x20'+parseOperator(_0x3ab58f[_0xd12d('0x11')]);}if(_['includes']([_0xd12d('0x1e'),_0xd12d('0x1f')],_0x3ab58f['operator']))_0x25b179[_0xd12d('0x1a')]='('+_0x25b179[_0xd12d('0x1a')]+_0xd12d('0x20')+_0x410672+'.'+_0x3ab58f[_0xd12d('0x1c')]+_0xd12d('0x21');_0x25b179[_0xd12d('0x12')]=parseValue(_0x14866a,_0x3ab58f[_0xd12d('0x11')],_0x3ab58f[_0xd12d('0x12')]);return _0x25b179;};function parseOperator(_0x3e10cf){var _0x11e991;switch(_0x3e10cf){case _0xd12d('0x22'):_0x11e991=_0xd12d('0x23');break;case _0xd12d('0x1f'):_0x11e991=_0xd12d('0x24');break;case _0xd12d('0x10'):_0x11e991='=\x20?';break;case'$ne':_0x11e991=_0xd12d('0x25');break;case _0xd12d('0x26'):case _0xd12d('0x27'):case _0xd12d('0x28'):_0x11e991=_0xd12d('0x29');break;case _0xd12d('0x2a'):_0x11e991=_0xd12d('0x2b');break;case'$gt':_0x11e991=_0xd12d('0x2c');break;case'$lte':_0x11e991=_0xd12d('0x2d');break;case _0xd12d('0x2e'):_0x11e991='>=\x20?';break;case'$between':_0x11e991='BETWEEN\x20?\x20AND\x20?';break;}return _0x11e991;}function parseValue(_0x105c0d,_0x1a38d7,_0x594654){var _0x56d3a5={'start':undefined,'end':undefined};switch(_0x1a38d7){case _0xd12d('0x22'):case _0xd12d('0x1f'):_0x56d3a5[_0xd12d('0x2f')]=_0x594654[_0xd12d('0x6')](',');break;case _0xd12d('0x26'):_0x56d3a5['start']='%'+_0x594654+'%';break;case'$startsWith':_0x56d3a5[_0xd12d('0x2f')]=_0x594654+'%';break;case _0xd12d('0x28'):_0x56d3a5[_0xd12d('0x2f')]='%'+_0x594654;break;case _0xd12d('0x30'):var _0x42e96e=_0x594654['split'](',');var _0x594654=_0x42e96e['shift']();var _0xb284fc=_0x42e96e[_0xd12d('0x31')]();if(_0x105c0d==='DATE'){_0x594654=moment(_0x594654)[_0xd12d('0x32')](0x0,!![])['format']();_0xb284fc=moment(_0xb284fc)['utcOffset'](0x0,!![])[_0xd12d('0x16')](0x17,_0xd12d('0x33'))[_0xd12d('0x16')](0x3b,'minutes')['add'](0x3b,_0xd12d('0x34'))[_0xd12d('0x35')]();}_0x56d3a5={'start':_0x594654,'end':_0xb284fc};break;default:_0x56d3a5[_0xd12d('0x2f')]=_0x594654;break;}return _0x56d3a5;}
\ No newline at end of file
index 9434cec..4ec058a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a9=['lodash','moment','parse','keys','includes','fields','split','isEmpty','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','$lte','utc','subtract','uniqueid','isArray','offset','map','priority','cast','substr','DESC','unsigned','omit','length','isObject','isString','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','query','$id','model','name','filters','attributes','intersection','hasOwnProperty','nolimit','limit','order','sort','filter','merge','where','VIRTUAL','lower','options'];(function(_0x474a69,_0x44881f){var _0x477544=function(_0xb2ecda){while(--_0xb2ecda){_0x474a69['push'](_0x474a69['shift']());}};_0x477544(++_0x44881f);}(_0x77a9,0x122));var _0x977a=function(_0x2e6ac2,_0x3baa57){_0x2e6ac2=_0x2e6ac2-0x0;var _0x3635ef=_0x77a9[_0x2e6ac2];return _0x3635ef;};'use strict';var _=require(_0x977a('0x0'));var sequelize=require('sequelize');var moment=require(_0x977a('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x389dfc){var _0x805268=['ne'];try{var _0x1d5171=JSON[_0x977a('0x2')](_0x389dfc);var _0x6a1c1c=Object[_0x977a('0x3')](_0x1d5171)[0x0];return _0x805268[_0x977a('0x4')](_0x6a1c1c);}catch(_0x534336){return![];}}function getOperatorValue(_0x4d9295){var _0x45684a=JSON['parse'](_0x4d9295);var _0x5cab17=Object[_0x977a('0x3')](_0x45684a)[0x0];var _0x20a928=_0x45684a[_0x5cab17];return{['$'+_0x5cab17]:_0x20a928};}exports[_0x977a('0x5')]=function(_0x120691){var _0x34cdf2=null;if(_0x120691){_0x34cdf2=_0x120691[_0x977a('0x6')](',');}return _0x34cdf2;};exports['filters']=function(_0x7afad8,_0x5d5e8a){var _0x242efa={};if(!_[_0x977a('0x7')](_0x7afad8)){_['forOwn'](_0x7afad8,function(_0xa44b81,_0x58c767){try{if(_0x5d5e8a){var _0x1d176e=_['find'](_0x5d5e8a,{'name':_0x58c767})||{};if(hasSequelizeOperator(_0xa44b81)){_0x242efa[_0x58c767]=getOperatorValue(_0xa44b81);}else if(_0x1d176e[_0x977a('0x8')]===_0x977a('0x9')&&_[_0x977a('0xa')](_0xa44b81)){var _0x169d10=JSON['parse'](_0xa44b81);var _0x5697c9={'$gte':moment(moment(_0x169d10[_0x977a('0xb')])[_0x977a('0xc')](_0x977a('0xd')))['utc']()[_0x977a('0xc')](),'$lte':moment(moment(_0x169d10[_0x977a('0xe')])[_0x977a('0xc')](_0x977a('0xd')))[_0x977a('0xf')]()[_0x977a('0x10')](0x1,'s')[_0x977a('0xc')]()};_0x242efa[_0x58c767]=_0x5697c9;}else if(_0x1d176e['name']===_0x977a('0x11')){_0x242efa[_0x58c767]=_0xa44b81;}else{_0x242efa[_0x58c767]=_[_0x977a('0x12')](_0xa44b81)?_0xa44b81:JSON['parse'](_0xa44b81);}}else{_0x242efa[_0x58c767]=_[_0x977a('0x12')](_0xa44b81)?_0xa44b81:JSON[_0x977a('0x2')](_0xa44b81);}}catch(_0x2badbf){_0x242efa[_0x58c767]=_0xa44b81['split'](',');}});}return _0x242efa;};exports['limit']=function(_0x493c78){_0x493c78=parseInt(_0x493c78,0xa);if(!_0x493c78||_0x493c78<0x0){_0x493c78=LIMIT_VALUE;}return _0x493c78;};exports[_0x977a('0x13')]=function(_0x5848bf){_0x5848bf=parseInt(_0x5848bf,0xa);if(!_0x5848bf||_0x5848bf<0x0){_0x5848bf=0x0;}return _0x5848bf;};exports['sort']=function(_0x4bbcc4){var _0x815243,_0x1481a8=null;if(_0x4bbcc4){_0x815243=_0x4bbcc4[_0x977a('0x6')](',');_0x1481a8=_[_0x977a('0x14')](_0x815243,function(_0x308e76){if(_0x308e76['indexOf']('-')===0x0){return[_0x308e76===_0x977a('0x15')?sequelize[_0x977a('0x16')](sequelize['col']('priority'),'unsigned'):_0x308e76[_0x977a('0x17')](0x1),_0x977a('0x18')];}else{return[_0x308e76===_0x977a('0x15')?sequelize[_0x977a('0x16')](sequelize['col']('priority'),_0x977a('0x19')):_0x308e76,'ASC'];}});}return _0x1481a8;};exports[_0x977a('0x1a')]=function(_0x35ad89,_0x3c00fb){if(_[_0x977a('0x7')](_0x35ad89)){return _0x35ad89;}if(_[_0x977a('0x12')](_0x35ad89)){for(var _0x21308a=0x0;_0x21308a<_0x35ad89[_0x977a('0x1b')];_0x21308a+=0x1){_0x35ad89[_0x21308a]=this[_0x977a('0x1a')](_0x35ad89[_0x21308a],_0x3c00fb);}return _0x35ad89;}if(!_[_0x977a('0x1c')](_0x35ad89)){return _0x35ad89;}if(_[_0x977a('0x1d')](_0x3c00fb)){_0x3c00fb=[_0x3c00fb];}if(!_[_0x977a('0x12')](_0x3c00fb)){return _0x35ad89;}for(var _0x2ef2bc=0x0;_0x2ef2bc<_0x3c00fb[_0x977a('0x1b')];_0x2ef2bc+=0x1){_[_0x977a('0x1e')](_0x35ad89,_0x3c00fb[_0x2ef2bc]);}for(var _0x498112 in _0x35ad89){if(_0x35ad89['hasOwnProperty'](_0x498112)){_0x35ad89[_0x498112]=this['omit'](_0x35ad89[_0x498112],_0x3c00fb);}}return _0x35ad89;};exports[_0x977a('0x1f')]=function(_0x357bb1){return _0x357bb1[_0x977a('0x20')](RegExp(_0x977a('0x21')))?!![]:![];};exports[_0x977a('0x22')]=function(_0x2179ca){return _0x2179ca[_0x977a('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0x977a('0x23')]=function(_0x1ae0e8){var _0x43390c=[];_0x1ae0e8[_0x977a('0x6')](/[ ,]+/)[_0x977a('0x24')](function(_0x5982e7){_0x5982e7=_0x5982e7[_0x977a('0x25')](/([^:]")"+/g,'$1');_0x5982e7='+'+_0x5982e7+'*';if(_0x5982e7[_0x977a('0x4')]('@'))_0x5982e7='\x22'+_0x5982e7+'\x22';_0x43390c[_0x977a('0x26')](_0x5982e7);});return _0x43390c[_0x977a('0x27')]('\x20');};exports['getOptions']=function(_0x2a79a5,_0x150038,_0x3f6aad){var _0x2b8bf5={},_0x43b6ae={};if(_0x150038[_0x977a('0x28')][_0x977a('0x29')]){_0x150038[_0x977a('0x28')]['id']=_0x150038['query'][_0x977a('0x29')];delete _0x150038[_0x977a('0x28')][_0x977a('0x29')];}_0x2b8bf5[_0x977a('0x2a')]=_[_0x977a('0x14')](_0x2a79a5,_0x977a('0x2b'));_0x2b8bf5[_0x977a('0x28')]=_[_0x977a('0x3')](_0x150038['query']);_0x2b8bf5[_0x977a('0x2c')]=_['intersection'](_0x2b8bf5[_0x977a('0x2a')],_0x2b8bf5[_0x977a('0x28')]);_0x43b6ae[_0x977a('0x2d')]=_[_0x977a('0x2e')](_0x2b8bf5['model'],this[_0x977a('0x5')](_0x150038['query'][_0x977a('0x5')]));_0x43b6ae['attributes']=_0x43b6ae['attributes'][_0x977a('0x1b')]?_0x43b6ae[_0x977a('0x2d')]:_0x2b8bf5[_0x977a('0x2a')];if(!_0x150038[_0x977a('0x28')][_0x977a('0x2f')](_0x977a('0x30'))){_0x43b6ae[_0x977a('0x31')]=this['limit'](_0x150038['query']['limit']);_0x43b6ae[_0x977a('0x13')]=this[_0x977a('0x13')](_0x150038[_0x977a('0x28')][_0x977a('0x13')]);}_0x43b6ae[_0x977a('0x32')]=this[_0x977a('0x33')](_0x150038['query'][_0x977a('0x33')]);_0x43b6ae['where']=this[_0x977a('0x2c')](_['pick'](_0x150038[_0x977a('0x28')],_0x2b8bf5[_0x977a('0x2c')]),_0x2a79a5);if(_0x150038['query'][_0x977a('0x34')]){_0x43b6ae['where']=_[_0x977a('0x35')](_0x43b6ae[_0x977a('0x36')],{'$or':_[_0x977a('0x14')](_0x2a79a5,function(_0x2b0f79){if(_0x2b0f79[_0x977a('0x8')]!==_0x977a('0x37')){if(_0x3f6aad){return sequelize['where'](sequelize['fn'](_0x977a('0x38'),sequelize['col'](_0x2b0f79[_0x977a('0x2b')])),{'$like':sequelize['fn'](_0x977a('0x38'),'%'+_0x150038[_0x977a('0x28')][_0x977a('0x34')]+'%')});}else{var _0x272bb4={};_0x272bb4[_0x2b0f79['name']]={'$like':'%'+_0x150038['query'][_0x977a('0x34')]+'%'};return _0x272bb4;}}})});}_0x43b6ae=_[_0x977a('0x35')]({},_0x43b6ae,_0x150038[_0x977a('0x39')]);return _0x43b6ae;};
\ No newline at end of file
+var _0xcb84=['includes','fields','split','filters','isEmpty','forOwn','type','DATE','isPlainObject','$gte','format','$lte','YYYY-MM-DD','utc','subtract','name','uniqueid','isArray','limit','offset','map','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','length','isString','unset','isNumeric','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','getOptions','$id','query','model','intersection','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','lodash','sequelize','parse','keys'];(function(_0xe00f4c,_0x59ba20){var _0x5dfa97=function(_0xe557dc){while(--_0xe557dc){_0xe00f4c['push'](_0xe00f4c['shift']());}};_0x5dfa97(++_0x59ba20);}(_0xcb84,0x72));var _0x4cb8=function(_0x2cd1fb,_0x291f55){_0x2cd1fb=_0x2cd1fb-0x0;var _0x48fd2b=_0xcb84[_0x2cd1fb];return _0x48fd2b;};'use strict';var _=require(_0x4cb8('0x0'));var sequelize=require(_0x4cb8('0x1'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x5c5013){var _0x4e98cf=['ne'];try{var _0x3c75d6=JSON[_0x4cb8('0x2')](_0x5c5013);var _0x4144cc=Object[_0x4cb8('0x3')](_0x3c75d6)[0x0];return _0x4e98cf[_0x4cb8('0x4')](_0x4144cc);}catch(_0x360dba){return![];}}function getOperatorValue(_0x41b213){var _0x3714d0=JSON['parse'](_0x41b213);var _0x2b9bfe=Object[_0x4cb8('0x3')](_0x3714d0)[0x0];var _0x4b129f=_0x3714d0[_0x2b9bfe];return{['$'+_0x2b9bfe]:_0x4b129f};}exports[_0x4cb8('0x5')]=function(_0x4c0162){var _0x2919ce=null;if(_0x4c0162){_0x2919ce=_0x4c0162[_0x4cb8('0x6')](',');}return _0x2919ce;};exports[_0x4cb8('0x7')]=function(_0x28ab20,_0xa4ac1a){var _0x136c46={};if(!_[_0x4cb8('0x8')](_0x28ab20)){_[_0x4cb8('0x9')](_0x28ab20,function(_0x3100dd,_0x50c037){try{if(_0xa4ac1a){var _0x403ad4=_['find'](_0xa4ac1a,{'name':_0x50c037})||{};if(hasSequelizeOperator(_0x3100dd)){_0x136c46[_0x50c037]=getOperatorValue(_0x3100dd);}else if(_0x403ad4[_0x4cb8('0xa')]===_0x4cb8('0xb')&&_[_0x4cb8('0xc')](_0x3100dd)){var _0x18a46a=JSON['parse'](_0x3100dd);var _0x117344={'$gte':moment(moment(_0x18a46a[_0x4cb8('0xd')])[_0x4cb8('0xe')]('YYYY-MM-DD'))['utc']()['format'](),'$lte':moment(moment(_0x18a46a[_0x4cb8('0xf')])[_0x4cb8('0xe')](_0x4cb8('0x10')))[_0x4cb8('0x11')]()[_0x4cb8('0x12')](0x1,'s')[_0x4cb8('0xe')]()};_0x136c46[_0x50c037]=_0x117344;}else if(_0x403ad4[_0x4cb8('0x13')]===_0x4cb8('0x14')){_0x136c46[_0x50c037]=_0x3100dd;}else{_0x136c46[_0x50c037]=_[_0x4cb8('0x15')](_0x3100dd)?_0x3100dd:JSON[_0x4cb8('0x2')](_0x3100dd);}}else{_0x136c46[_0x50c037]=_[_0x4cb8('0x15')](_0x3100dd)?_0x3100dd:JSON[_0x4cb8('0x2')](_0x3100dd);}}catch(_0x301948){_0x136c46[_0x50c037]=_0x3100dd[_0x4cb8('0x6')](',');}});}return _0x136c46;};exports[_0x4cb8('0x16')]=function(_0x485522){_0x485522=parseInt(_0x485522,0xa);if(!_0x485522||_0x485522<0x0){_0x485522=LIMIT_VALUE;}return _0x485522;};exports[_0x4cb8('0x17')]=function(_0x182a5b){_0x182a5b=parseInt(_0x182a5b,0xa);if(!_0x182a5b||_0x182a5b<0x0){_0x182a5b=0x0;}return _0x182a5b;};exports['sort']=function(_0x1a60c6){var _0x38c752,_0x24cb88=null;if(_0x1a60c6){_0x38c752=_0x1a60c6[_0x4cb8('0x6')](',');_0x24cb88=_[_0x4cb8('0x18')](_0x38c752,function(_0x26b078){if(_0x26b078[_0x4cb8('0x19')]('-')===0x0){return[_0x26b078===_0x4cb8('0x1a')?sequelize[_0x4cb8('0x1b')](sequelize[_0x4cb8('0x1c')](_0x4cb8('0x1a')),_0x4cb8('0x1d')):_0x26b078[_0x4cb8('0x1e')](0x1),_0x4cb8('0x1f')];}else{return[_0x26b078==='priority'?sequelize['cast'](sequelize[_0x4cb8('0x1c')](_0x4cb8('0x1a')),_0x4cb8('0x1d')):_0x26b078,_0x4cb8('0x20')];}});}return _0x24cb88;};exports[_0x4cb8('0x21')]=function(_0x26894d,_0x30a239){if(_[_0x4cb8('0x8')](_0x26894d)){return _0x26894d;}if(_[_0x4cb8('0x15')](_0x26894d)){for(var _0x3b243a=0x0;_0x3b243a<_0x26894d[_0x4cb8('0x22')];_0x3b243a+=0x1){_0x26894d[_0x3b243a]=this[_0x4cb8('0x21')](_0x26894d[_0x3b243a],_0x30a239);}return _0x26894d;}if(!_['isObject'](_0x26894d)){return _0x26894d;}if(_[_0x4cb8('0x23')](_0x30a239)){_0x30a239=[_0x30a239];}if(!_['isArray'](_0x30a239)){return _0x26894d;}for(var _0x46f524=0x0;_0x46f524<_0x30a239[_0x4cb8('0x22')];_0x46f524+=0x1){_[_0x4cb8('0x24')](_0x26894d,_0x30a239[_0x46f524]);}for(var _0x447eeb in _0x26894d){if(_0x26894d['hasOwnProperty'](_0x447eeb)){_0x26894d[_0x447eeb]=this['omit'](_0x26894d[_0x447eeb],_0x30a239);}}return _0x26894d;};exports[_0x4cb8('0x25')]=function(_0x3add3c){return _0x3add3c['match'](RegExp(_0x4cb8('0x26')))?!![]:![];};exports[_0x4cb8('0x27')]=function(_0x461cbc){return _0x461cbc['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x4cb8('0x28')]=function(_0x2206ed){var _0x3e88f9=[];_0x2206ed[_0x4cb8('0x6')](/[ ,]+/)[_0x4cb8('0x29')](function(_0x5cf92c){_0x5cf92c=_0x5cf92c[_0x4cb8('0x2a')](/([^:]")"+/g,'$1');_0x5cf92c='+'+_0x5cf92c+'*';if(_0x5cf92c[_0x4cb8('0x4')]('@'))_0x5cf92c='\x22'+_0x5cf92c+'\x22';_0x3e88f9[_0x4cb8('0x2b')](_0x5cf92c);});return _0x3e88f9['join']('\x20');};exports[_0x4cb8('0x2c')]=function(_0x38bcaf,_0x21aeb8,_0x5b9685){var _0x5aff4b={},_0x48c83f={};if(_0x21aeb8['query'][_0x4cb8('0x2d')]){_0x21aeb8['query']['id']=_0x21aeb8[_0x4cb8('0x2e')]['$id'];delete _0x21aeb8['query'][_0x4cb8('0x2d')];}_0x5aff4b[_0x4cb8('0x2f')]=_[_0x4cb8('0x18')](_0x38bcaf,_0x4cb8('0x13'));_0x5aff4b[_0x4cb8('0x2e')]=_[_0x4cb8('0x3')](_0x21aeb8[_0x4cb8('0x2e')]);_0x5aff4b[_0x4cb8('0x7')]=_[_0x4cb8('0x30')](_0x5aff4b[_0x4cb8('0x2f')],_0x5aff4b[_0x4cb8('0x2e')]);_0x48c83f['attributes']=_[_0x4cb8('0x30')](_0x5aff4b[_0x4cb8('0x2f')],this[_0x4cb8('0x5')](_0x21aeb8['query'][_0x4cb8('0x5')]));_0x48c83f[_0x4cb8('0x31')]=_0x48c83f[_0x4cb8('0x31')][_0x4cb8('0x22')]?_0x48c83f[_0x4cb8('0x31')]:_0x5aff4b['model'];if(!_0x21aeb8[_0x4cb8('0x2e')][_0x4cb8('0x32')](_0x4cb8('0x33'))){_0x48c83f['limit']=this[_0x4cb8('0x16')](_0x21aeb8['query']['limit']);_0x48c83f[_0x4cb8('0x17')]=this[_0x4cb8('0x17')](_0x21aeb8['query'][_0x4cb8('0x17')]);}_0x48c83f[_0x4cb8('0x34')]=this[_0x4cb8('0x35')](_0x21aeb8['query'][_0x4cb8('0x35')]);_0x48c83f['where']=this[_0x4cb8('0x7')](_[_0x4cb8('0x36')](_0x21aeb8[_0x4cb8('0x2e')],_0x5aff4b['filters']),_0x38bcaf);if(_0x21aeb8['query'][_0x4cb8('0x37')]){_0x48c83f[_0x4cb8('0x38')]=_['merge'](_0x48c83f['where'],{'$or':_['map'](_0x38bcaf,function(_0xf7740a){if(_0xf7740a['type']!=='VIRTUAL'){if(_0x5b9685){return sequelize[_0x4cb8('0x38')](sequelize['fn']('lower',sequelize[_0x4cb8('0x1c')](_0xf7740a['name'])),{'$like':sequelize['fn']('lower','%'+_0x21aeb8['query'][_0x4cb8('0x37')]+'%')});}else{var _0x9a5144={};_0x9a5144[_0xf7740a[_0x4cb8('0x13')]]={'$like':'%'+_0x21aeb8['query'][_0x4cb8('0x37')]+'%'};return _0x9a5144;}}})});}_0x48c83f=_[_0x4cb8('0x39')]({},_0x48c83f,_0x21aeb8[_0x4cb8('0x3a')]);return _0x48c83f;};
\ No newline at end of file
index dc581c8..07619b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aca=['client','use','json\x20replacer','toISOString','get','views','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','50mb','json','initialize','express','body-parser','method-override','errorhandler','path','moment','./environment','../mysqldb','default','env','production','set','appPath','join','public','development','test','root'];(function(_0x11aa40,_0x26774d){var _0x3f24a5=function(_0x55ae10){while(--_0x55ae10){_0x11aa40['push'](_0x11aa40['shift']());}};_0x3f24a5(++_0x26774d);}(_0x2aca,0x164));var _0xa2ac=function(_0x3fe4c4,_0x29a5b5){_0x3fe4c4=_0x3fe4c4-0x0;var _0x470479=_0x2aca[_0x3fe4c4];return _0x470479;};'use strict';var express=require(_0xa2ac('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0xa2ac('0x1'));var methodOverride=require(_0xa2ac('0x2'));var cookieParser=require('cookie-parser');var errorHandler=require(_0xa2ac('0x3'));var path=require(_0xa2ac('0x4'));var passport=require('passport');var cors=require('cors');var moment=require(_0xa2ac('0x5'));var config=require(_0xa2ac('0x6'));var db=require(_0xa2ac('0x7'))['db'];exports[_0xa2ac('0x8')]=function(_0x332238){var _0x3eab94=_0x332238['get'](_0xa2ac('0x9'));if(_0x3eab94===_0xa2ac('0xa')){_0x332238[_0xa2ac('0xb')](_0xa2ac('0xc'),path[_0xa2ac('0xd')](config['root'],_0xa2ac('0xe')));}if(_0x3eab94===_0xa2ac('0xf')||_0x3eab94===_0xa2ac('0x10')){_0x332238['set']('appPath',path[_0xa2ac('0xd')](config[_0xa2ac('0x11')],_0xa2ac('0x12')));_0x332238[_0xa2ac('0x13')](errorHandler());}_0x332238['set'](_0xa2ac('0x14'),function(_0x25555d,_0x50aac5){if(this[_0x25555d]instanceof Date){_0x50aac5=this[_0x25555d][_0xa2ac('0x15')]()['split']('.')[0x0]+'Z';}return _0x50aac5;});_0x332238['use'](express['static'](_0x332238[_0xa2ac('0x16')](_0xa2ac('0xc'))));_0x332238[_0xa2ac('0xb')](_0xa2ac('0x17'),config[_0xa2ac('0x11')]+_0xa2ac('0x18'));_0x332238[_0xa2ac('0x19')](_0xa2ac('0x1a'),require(_0xa2ac('0x1b'))[_0xa2ac('0x1c')]);_0x332238[_0xa2ac('0xb')](_0xa2ac('0x1d'),_0xa2ac('0x1a'));_0x332238[_0xa2ac('0x13')](bodyParser[_0xa2ac('0x1e')]({'limit':_0xa2ac('0x1f'),'extended':!![]}));_0x332238[_0xa2ac('0x13')](bodyParser[_0xa2ac('0x20')]({'limit':_0xa2ac('0x1f')}));_0x332238['use'](cors());_0x332238['use'](methodOverride());_0x332238[_0xa2ac('0x13')](cookieParser());_0x332238[_0xa2ac('0x13')](passport[_0xa2ac('0x21')]());};
\ No newline at end of file
+var _0xfa8e=['express','body-parser','cookie-parser','errorhandler','path','passport','cors','moment','./environment','../mysqldb','default','get','env','production','appPath','join','public','test','set','client','use','json\x20replacer','split','static','views','root','engine','html','ejs','view\x20engine','urlencoded','json','50mb','initialize'];(function(_0x1c5142,_0x30ea72){var _0x1268cb=function(_0xaa2299){while(--_0xaa2299){_0x1c5142['push'](_0x1c5142['shift']());}};_0x1268cb(++_0x30ea72);}(_0xfa8e,0xaa));var _0xefa8=function(_0x2355c6,_0x36c21e){_0x2355c6=_0x2355c6-0x0;var _0x238462=_0xfa8e[_0x2355c6];return _0x238462;};'use strict';var express=require(_0xefa8('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0xefa8('0x1'));var methodOverride=require('method-override');var cookieParser=require(_0xefa8('0x2'));var errorHandler=require(_0xefa8('0x3'));var path=require(_0xefa8('0x4'));var passport=require(_0xefa8('0x5'));var cors=require(_0xefa8('0x6'));var moment=require(_0xefa8('0x7'));var config=require(_0xefa8('0x8'));var db=require(_0xefa8('0x9'))['db'];exports[_0xefa8('0xa')]=function(_0x626da8){var _0x4cc204=_0x626da8[_0xefa8('0xb')](_0xefa8('0xc'));if(_0x4cc204===_0xefa8('0xd')){_0x626da8['set'](_0xefa8('0xe'),path[_0xefa8('0xf')](config['root'],_0xefa8('0x10')));}if(_0x4cc204==='development'||_0x4cc204===_0xefa8('0x11')){_0x626da8[_0xefa8('0x12')](_0xefa8('0xe'),path[_0xefa8('0xf')](config['root'],_0xefa8('0x13')));_0x626da8[_0xefa8('0x14')](errorHandler());}_0x626da8['set'](_0xefa8('0x15'),function(_0x285e94,_0xb47d70){if(this[_0x285e94]instanceof Date){_0xb47d70=this[_0x285e94]['toISOString']()[_0xefa8('0x16')]('.')[0x0]+'Z';}return _0xb47d70;});_0x626da8[_0xefa8('0x14')](express[_0xefa8('0x17')](_0x626da8['get'](_0xefa8('0xe'))));_0x626da8[_0xefa8('0x12')](_0xefa8('0x18'),config[_0xefa8('0x19')]+'/server/views');_0x626da8[_0xefa8('0x1a')](_0xefa8('0x1b'),require(_0xefa8('0x1c'))['renderFile']);_0x626da8[_0xefa8('0x12')](_0xefa8('0x1d'),'html');_0x626da8[_0xefa8('0x14')](bodyParser[_0xefa8('0x1e')]({'limit':'50mb','extended':!![]}));_0x626da8[_0xefa8('0x14')](bodyParser[_0xefa8('0x1f')]({'limit':_0xefa8('0x20')}));_0x626da8['use'](cors());_0x626da8[_0xefa8('0x14')](methodOverride());_0x626da8[_0xefa8('0x14')](cookieParser());_0x626da8[_0xefa8('0x14')](passport[_0xefa8('0x21')]());};
\ No newline at end of file
index 8b9358a..15266ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0e0=['digest','substring','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','IPv4','concat','head','mac','address','127.0.0.1','getFirstInterface','model','join','createHash','md5','update','hex','getUuid','platform','licenseToken','win32','utf8','replace','ipAddress'];(function(_0x2eacda,_0x370587){var _0x174b2f=function(_0x59f133){while(--_0x59f133){_0x2eacda['push'](_0x2eacda['shift']());}};_0x174b2f(++_0x370587);}(_0xb0e0,0x1b4));var _0x0b0e=function(_0x1e5fef,_0x11f4f8){_0x1e5fef=_0x1e5fef-0x0;var _0x193f7a=_0xb0e0[_0x1e5fef];return _0x193f7a;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x0b0e('0x0'));var machine=require(_0x0b0e('0x1'));var exec=require(_0x0b0e('0x2'))[_0x0b0e('0x3')];var config=require(_0x0b0e('0x4'));function getInterfaces(){var _0x36ed32=[];var _0x286d47=os[_0x0b0e('0x5')]();var _0xc644a7=_[_0x0b0e('0x6')](_[_0x0b0e('0x7')](_0x286d47));for(var _0x234338=0x0;_0x234338<_0xc644a7[_0x0b0e('0x8')];_0x234338++){var _0x5d4132=_0x286d47[_0xc644a7[_0x234338]]['filter'](function(_0x2fd93e){return _0x2fd93e['family']===_0x0b0e('0x9')&&_0x2fd93e['internal']===![];});_0x36ed32=_0x36ed32[_0x0b0e('0xa')](_0x5d4132);}return _0x36ed32;}function getFirstInterface(){var _0x5c2a6=_[_0x0b0e('0xb')](getInterfaces());return{'macAddress':_0x5c2a6&&_0x5c2a6[_0x0b0e('0xc')]?_0x5c2a6[_0x0b0e('0xc')]:'00:00:00:00:00:00','ipAddress':_0x5c2a6&&_0x5c2a6[_0x0b0e('0xd')]?_0x5c2a6[_0x0b0e('0xd')]:_0x0b0e('0xe')};}exports[_0x0b0e('0xf')]=getFirstInterface;function getCPUhash(){var _0x3601df=_[_0x0b0e('0x6')](os['cpus']()['map'](function(_0x499eb9){return _0x499eb9[_0x0b0e('0x10')];}))[_0x0b0e('0x11')](':');return crypto[_0x0b0e('0x12')](_0x0b0e('0x13'))[_0x0b0e('0x14')](_0x3601df)['digest'](_0x0b0e('0x15'));}exports[_0x0b0e('0x16')]=function(){var _0x4796a2=os[_0x0b0e('0x17')]();var _0x2f9cf3=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x2f9cf3['test'](config[_0x0b0e('0x18')])){return config[_0x0b0e('0x18')];}else if(_0x4796a2===_0x0b0e('0x19')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x0b0e('0x1a')})[_0x0b0e('0x1b')]('\x0d\x0a','');}else{var _0xa1b4ec=getFirstInterface();var _0x36bc36=getCPUhash();var _0x8d4438=_0x36bc36+'|'+os['hostname']()+'|'+_0xa1b4ec['macAddress']+'|'+_0xa1b4ec[_0x0b0e('0x1c')];var _0x6fba4c=crypto[_0x0b0e('0x12')](_0x0b0e('0x13'))['update'](_0x8d4438)[_0x0b0e('0x1d')](_0x0b0e('0x15'));return _0x6fba4c['substring'](0x0,0x8)+'-'+_0x6fba4c[_0x0b0e('0x1e')](0x8,0xc)+'-'+_0x6fba4c[_0x0b0e('0x1e')](0xc,0x10)+'-'+_0x6fba4c[_0x0b0e('0x1e')](0x10,0x14)+'-'+_0x6fba4c['substring'](0x14);}};
\ No newline at end of file
+var _0x2c04=['map','createHash','md5','update','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','digest','substring','lodash','crypto','bimedia-machine-uuid','execSync','networkInterfaces','orderBy','keys','length','filter','family','internal','concat','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface'];(function(_0x553464,_0x57977b){var _0xe3dd09=function(_0x52da88){while(--_0x52da88){_0x553464['push'](_0x553464['shift']());}};_0xe3dd09(++_0x57977b);}(_0x2c04,0x19c));var _0x42c0=function(_0x5be335,_0x257fe0){_0x5be335=_0x5be335-0x0;var _0x58c00e=_0x2c04[_0x5be335];return _0x58c00e;};'use strict';var _=require(_0x42c0('0x0'));var os=require('os');var crypto=require(_0x42c0('0x1'));var machine=require(_0x42c0('0x2'));var exec=require('child_process')[_0x42c0('0x3')];var config=require('../environment');function getInterfaces(){var _0x2405d9=[];var _0x1ada18=os[_0x42c0('0x4')]();var _0x5ba989=_[_0x42c0('0x5')](_[_0x42c0('0x6')](_0x1ada18));for(var _0x5a29cb=0x0;_0x5a29cb<_0x5ba989[_0x42c0('0x7')];_0x5a29cb++){var _0x16624a=_0x1ada18[_0x5ba989[_0x5a29cb]][_0x42c0('0x8')](function(_0x163e97){return _0x163e97[_0x42c0('0x9')]==='IPv4'&&_0x163e97[_0x42c0('0xa')]===![];});_0x2405d9=_0x2405d9[_0x42c0('0xb')](_0x16624a);}return _0x2405d9;}function getFirstInterface(){var _0xa201c=_['head'](getInterfaces());return{'macAddress':_0xa201c&&_0xa201c[_0x42c0('0xc')]?_0xa201c[_0x42c0('0xc')]:_0x42c0('0xd'),'ipAddress':_0xa201c&&_0xa201c['address']?_0xa201c[_0x42c0('0xe')]:_0x42c0('0xf')};}exports[_0x42c0('0x10')]=getFirstInterface;function getCPUhash(){var _0x4b6c28=_['orderBy'](os['cpus']()[_0x42c0('0x11')](function(_0x119ad0){return _0x119ad0['model'];}))['join'](':');return crypto[_0x42c0('0x12')](_0x42c0('0x13'))[_0x42c0('0x14')](_0x4b6c28)['digest'](_0x42c0('0x15'));}exports[_0x42c0('0x16')]=function(){var _0x5ea142=os[_0x42c0('0x17')]();var _0xef05fe=/[0-9a-f-]{36}/;if(config[_0x42c0('0x18')]&&_0xef05fe[_0x42c0('0x19')](config[_0x42c0('0x18')])){return config[_0x42c0('0x18')];}else if(_0x5ea142==='win32'){return exec(_0x42c0('0x1a'),{'encoding':_0x42c0('0x1b')})['replace']('\x0d\x0a','');}else{var _0x3ee8b5=getFirstInterface();var _0xa0ccd0=getCPUhash();var _0x32538a=_0xa0ccd0+'|'+os[_0x42c0('0x1c')]()+'|'+_0x3ee8b5[_0x42c0('0x1d')]+'|'+_0x3ee8b5[_0x42c0('0x1e')];var _0x37bf50=crypto['createHash'](_0x42c0('0x13'))['update'](_0x32538a)[_0x42c0('0x1f')]('hex');return _0x37bf50[_0x42c0('0x20')](0x0,0x8)+'-'+_0x37bf50[_0x42c0('0x20')](0x8,0xc)+'-'+_0x37bf50[_0x42c0('0x20')](0xc,0x10)+'-'+_0x37bf50['substring'](0x10,0x14)+'-'+_0x37bf50['substring'](0x14);}};
\ No newline at end of file
index c1fafab..4bf04ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3900=['%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','catch','get','data1','data2','then','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','info','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','update','error','message','finally','getUuid','findOrCreate','spread','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../logger','license','format'];(function(_0x175219,_0x23ec66){var _0x416369=function(_0x9e96a2){while(--_0x9e96a2){_0x175219['push'](_0x175219['shift']());}};_0x416369(++_0x23ec66);}(_0x3900,0x1f1));var _0x0390=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0x3900[_0x37e845];return _0x59e55b;};'use strict';var util=require(_0x0390('0x0'));var moment=require(_0x0390('0x1'));var rp=require(_0x0390('0x2'));var BPromise=require(_0x0390('0x3'));var pkginfo=require(_0x0390('0x4'))(module,_0x0390('0x5'));var db=require(_0x0390('0x6'))['db'];var encryptor=require('../../components/encryptor');var hardware=require('./hardware');var logger=require(_0x0390('0x7'))(_0x0390('0x8'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x14fad2){return new BPromise(function(_0x529cab,_0x4cf3a3){var _0x2e0fbd=util[_0x0390('0x9')](_0x0390('0xa'),HOST,_0x14fad2,module[_0x0390('0xb')][_0x0390('0x5')]);if(oldToken){_0x2e0fbd=util['format'](_0x0390('0xc'),HOST,_0x14fad2,module[_0x0390('0xb')][_0x0390('0x5')],oldToken);}var _0x1675e3={'uri':_0x2e0fbd,'method':_0x0390('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x1675e3)['then'](function(_0x18810c){_0x529cab(_0x18810c);})[_0x0390('0xe')](function(_0x979724){_0x4cf3a3(_0x979724);});});}function manageLicense(_0x1e80b4,_0x3f9822){var _0x1d7cbf=_0x3f9822[_0x0390('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x1d7cbf[_0x0390('0x10')]!==_0x1e80b4&&!_0x1d7cbf[_0x0390('0x11')]){oldToken=_0x1d7cbf[_0x0390('0x10')];}httpRequest(_0x1e80b4)[_0x0390('0x12')](function(_0x40dffa){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x40dffa['active']){isOldTokenSent=![];if(!_0x1d7cbf[_0x0390('0x8')]&&_0x1d7cbf[_0x0390('0x8')]!=_0x40dffa[_0x0390('0x8')]||_0x1d7cbf['license']&&_0x1d7cbf['data2']){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x1d7cbf[_0x0390('0x8')]&&!_0x1d7cbf[_0x0390('0x11')]&&_0x1d7cbf[_0x0390('0x8')]!=_0x40dffa['license']){logger['info'](_0x0390('0x13'));}if(_0x1d7cbf[_0x0390('0x8')]&&!_0x1d7cbf[_0x0390('0x11')]&&_0x1d7cbf[_0x0390('0x8')]==_0x40dffa[_0x0390('0x8')]){return _0x3f9822;}return _0x3f9822['update']({'data1':_0x1e80b4,'data2':null,'license':_0x40dffa[_0x0390('0x8')]});}else{if(_0x40dffa[_0x0390('0x8')]||_0x1d7cbf['license']){if(!_0x1d7cbf[_0x0390('0x11')]){if(_0x1d7cbf['data1']==_0x1e80b4){GRAY_PERIOD_REASON=_0x0390('0x14');logger[_0x0390('0x15')](_0x0390('0x16'));}else{GRAY_PERIOD_REASON=_0x0390('0x17');logger['info'](_0x0390('0x18'),_0x1d7cbf['data1'],_0x1e80b4);}logger[_0x0390('0x15')](_0x0390('0x19'),GRAY_PERIOD_REASON[_0x0390('0x1a')](),moment()[_0x0390('0x9')](_0x0390('0x1b')));return _0x3f9822['update']({'data2':encryptor['encryptString'](moment()['format'](_0x0390('0x1b')))});}else{if(moment()[_0x0390('0x1c')](encryptor[_0x0390('0x1d')](_0x1d7cbf[_0x0390('0x11')]),_0x0390('0x1e'))>DAYS){logger[_0x0390('0x15')]('DEMO\x20START\x20AT\x20%s',moment()[_0x0390('0x9')](_0x0390('0x1b')));isOldTokenSent=![];return _0x3f9822[_0x0390('0x1f')]({'data1':_0x1e80b4,'data2':null,'license':null});}}}else{if(_0x1d7cbf[_0x0390('0x10')]!=_0x1e80b4){logger[_0x0390('0x15')](_0x0390('0x18'),_0x1d7cbf[_0x0390('0x10')],_0x1e80b4);return _0x3f9822[_0x0390('0x1f')]({'data1':_0x1e80b4,'data2':null,'license':null});}}}return _0x3f9822;})['then'](function(_0x17775d){_0x3f9822=_0x17775d;})[_0x0390('0xe')](function(_0x5b407b){logger[_0x0390('0x20')](_0x5b407b[_0x0390('0x21')]);})[_0x0390('0x22')](function(){setTimeout(function(){manageLicense(hardware[_0x0390('0x23')](),_0x3f9822);},TIME);});}function defaultLicense(){var _0x16e640=hardware[_0x0390('0x23')]();if(_0x16e640){return db['License'][_0x0390('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x16e640}})[_0x0390('0x25')](function(_0x54ac52,_0x578bac){logger['info']('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x16e640);manageLicense(_0x16e640,_0x54ac52);})[_0x0390('0xe')](function(_0x2343e1){logger[_0x0390('0x20')](_0x2343e1[_0x0390('0x21')]);});}}exports[_0x0390('0x26')]=defaultLicense;
\ No newline at end of file
+var _0x006f=['NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','format','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','message','default','util','request-promise','bluebird','pkginfo','../../mysqldb','../../components/encryptor','./hardware','license','exports','version','then','catch','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED'];(function(_0x540e48,_0x19f1b5){var _0x20a1d3=function(_0x3a79c1){while(--_0x3a79c1){_0x540e48['push'](_0x540e48['shift']());}};_0x20a1d3(++_0x19f1b5);}(_0x006f,0x7f));var _0xf006=function(_0x5baa5c,_0x2fc2e0){_0x5baa5c=_0x5baa5c-0x0;var _0x3a12a6=_0x006f[_0x5baa5c];return _0x3a12a6;};'use strict';var util=require(_0xf006('0x0'));var moment=require('moment');var rp=require(_0xf006('0x1'));var BPromise=require(_0xf006('0x2'));var pkginfo=require(_0xf006('0x3'))(module,'version');var db=require(_0xf006('0x4'))['db'];var encryptor=require(_0xf006('0x5'));var hardware=require(_0xf006('0x6'));var logger=require('../logger')(_0xf006('0x7'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x419ba3){return new BPromise(function(_0x12cea6,_0x65d74a){var _0x1e223b=util['format']('%s/api/servers/%s/check?version=%s',HOST,_0x419ba3,module[_0xf006('0x8')][_0xf006('0x9')]);if(oldToken){_0x1e223b=util['format']('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x419ba3,module['exports'][_0xf006('0x9')],oldToken);}var _0x505fcf={'uri':_0x1e223b,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x505fcf)[_0xf006('0xa')](function(_0x2048e3){_0x12cea6(_0x2048e3);})[_0xf006('0xb')](function(_0xd6d950){_0x65d74a(_0xd6d950);});});}function manageLicense(_0x2f1a55,_0xcb1446){var _0x5119a7=_0xcb1446['get']({'plain':!![]});if(!isOldTokenSent&&_0x5119a7[_0xf006('0xc')]!==_0x2f1a55&&!_0x5119a7[_0xf006('0xd')]){oldToken=_0x5119a7['data1'];}httpRequest(_0x2f1a55)[_0xf006('0xa')](function(_0xa532c1){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0xa532c1[_0xf006('0xe')]){isOldTokenSent=![];if(!_0x5119a7['license']&&_0x5119a7[_0xf006('0x7')]!=_0xa532c1['license']||_0x5119a7[_0xf006('0x7')]&&_0x5119a7[_0xf006('0xd')]){logger[_0xf006('0xf')](_0xf006('0x10'));}if(_0x5119a7['license']&&!_0x5119a7[_0xf006('0xd')]&&_0x5119a7[_0xf006('0x7')]!=_0xa532c1['license']){logger['info'](_0xf006('0x11'));}if(_0x5119a7[_0xf006('0x7')]&&!_0x5119a7[_0xf006('0xd')]&&_0x5119a7['license']==_0xa532c1[_0xf006('0x7')]){return _0xcb1446;}return _0xcb1446[_0xf006('0x12')]({'data1':_0x2f1a55,'data2':null,'license':_0xa532c1[_0xf006('0x7')]});}else{if(_0xa532c1[_0xf006('0x7')]||_0x5119a7['license']){if(!_0x5119a7[_0xf006('0xd')]){if(_0x5119a7[_0xf006('0xc')]==_0x2f1a55){GRAY_PERIOD_REASON=_0xf006('0x13');logger[_0xf006('0xf')](_0xf006('0x14'));}else{GRAY_PERIOD_REASON='Changed';logger[_0xf006('0xf')](_0xf006('0x15'),_0x5119a7[_0xf006('0xc')],_0x2f1a55);}logger['info']('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0xf006('0x16')](),moment()[_0xf006('0x17')](_0xf006('0x18')));return _0xcb1446[_0xf006('0x12')]({'data2':encryptor[_0xf006('0x19')](moment()[_0xf006('0x17')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0xf006('0x1a')](encryptor[_0xf006('0x1b')](_0x5119a7['data2']),_0xf006('0x1c'))>DAYS){logger[_0xf006('0xf')](_0xf006('0x1d'),moment()[_0xf006('0x17')](_0xf006('0x18')));isOldTokenSent=![];return _0xcb1446[_0xf006('0x12')]({'data1':_0x2f1a55,'data2':null,'license':null});}}}else{if(_0x5119a7[_0xf006('0xc')]!=_0x2f1a55){logger['info'](_0xf006('0x15'),_0x5119a7[_0xf006('0xc')],_0x2f1a55);return _0xcb1446[_0xf006('0x12')]({'data1':_0x2f1a55,'data2':null,'license':null});}}}return _0xcb1446;})['then'](function(_0x20e133){_0xcb1446=_0x20e133;})[_0xf006('0xb')](function(_0x10ef67){logger['error'](_0x10ef67['message']);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0xcb1446);},TIME);});}function defaultLicense(){var _0x327e11=hardware[_0xf006('0x1e')]();if(_0x327e11){return db['License'][_0xf006('0x1f')]({'where':{'id':0x1},'defaults':{'data1':_0x327e11}})[_0xf006('0x20')](function(_0x48ae7e,_0x26f978){logger[_0xf006('0xf')](_0xf006('0x21'),_0x327e11);manageLicense(_0x327e11,_0x48ae7e);})[_0xf006('0xb')](function(_0x29426d){logger[_0xf006('0x22')](_0x29426d[_0xf006('0x23')]);});}}exports[_0xf006('0x24')]=defaultLicense;
\ No newline at end of file
index 3054f72..e83cca4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec0d=['users','telephones','forEach','countBy','user','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','getUuid','Breaking\x20license','License','find','defaults','then','catch','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','format','%s:%s:%s','parse','demo','uuid','machineUuid','days','grayReason','changed','disabled','message','User','findAll','sequelize','COUNT','role','admin','telephone'];(function(_0x33845d,_0x2fc3e5){var _0x7a184f=function(_0x3c5e69){while(--_0x3c5e69){_0x33845d['push'](_0x33845d['shift']());}};_0x7a184f(++_0x2fc3e5);}(_0xec0d,0x1ec));var _0xdec0=function(_0x2aa93f,_0x4dce40){_0x2aa93f=_0x2aa93f-0x0;var _0x194c71=_0xec0d[_0x2aa93f];return _0x194c71;};'use strict';var util=require(_0xdec0('0x0'));var _=require(_0xdec0('0x1'));var moment=require(_0xdec0('0x2'));var BPromise=require(_0xdec0('0x3'));var hardware=require(_0xdec0('0x4'));var encryptor=require('../../components/encryptor');var db=require(_0xdec0('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xdec0('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0xdec0('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xdec0('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xdec0('0x8'),'machineUuid':hardware[_0xdec0('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5782e5){return new BPromise(function(_0x483c92,_0x33cd29){return db[_0xdec0('0x9')][_0xdec0('0xa')](_[_0xdec0('0xb')](_0x5782e5,{'raw':!![],'where':{'id':0x1}}))[_0xdec0('0xc')](function(_0x60741f){return checkLicense(_0x60741f,null);})['then'](function(_0x1c1d90){_0x483c92(_0x1c1d90);return;})[_0xdec0('0xd')](function(_0x22ec61){_0x33cd29(_0x22ec61);});});}function checkLicense(_0x364713,_0x193e98){if(!_0x364713){demoLicense['uuid']=_0x364713[_0xdec0('0xe')];return demoLicense;}try{var _0x251d13=_0x193e98||_0x364713[_0xdec0('0xf')];if(_[_0xdec0('0x10')](_0x251d13)){throw new Error(_0xdec0('0x11'));}var _0x203165=_0x364713[_0xdec0('0xe')];var _0x3af428=_0x364713['data2'];var _0x230fe6=_0x203165['split']('-')[0x4];var _0x5247c3=_0x203165['split']('-')[0x0];var _0x4820be=encryptor['decryptString'](_0x251d13,util[_0xdec0('0x12')](_0xdec0('0x13'),_0x230fe6,_0x203165,_0x5247c3));var _0x400e38=JSON[_0xdec0('0x14')](_0x4820be);_0x400e38[_0xdec0('0x15')]=![];_0x400e38[_0xdec0('0x16')]=_0x203165;_0x400e38[_0xdec0('0x17')]=hardware[_0xdec0('0x7')]();if(_0x3af428){var _0x3564c2=encryptor['decryptString'](_0x3af428);_0x400e38['gray']=_0x3564c2;_0x400e38['deadline']=moment(_0x3564c2)['add'](0x7,_0xdec0('0x18'))[_0xdec0('0x12')]();_0x400e38[_0xdec0('0x19')]=_0x400e38[_0xdec0('0x16')]!=_0x400e38[_0xdec0('0x17')]?_0xdec0('0x1a'):_0xdec0('0x1b');}return _0x400e38;}catch(_0x382329){breakingLicense[_0xdec0('0x16')]=_0x364713[_0xdec0('0xe')];breakingLicense['message']=_0x382329[_0xdec0('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x5d91c7,_0x2a6cb7){getLicense()[_0xdec0('0xc')](function(_0x54dc9e){return db[_0xdec0('0x1d')][_0xdec0('0x1e')]({'attributes':['role',[db[_0xdec0('0x1f')]['fn'](_0xdec0('0x20'),db[_0xdec0('0x1f')]['col'](_0xdec0('0x21'))),'count']],'group':_0xdec0('0x21'),'where':{'role':{'$or':[_0xdec0('0x22'),'user',_0xdec0('0x23')]}},'raw':!![]})[_0xdec0('0xc')](function(_0x79ef81){var _0x366f87={'user':_0x54dc9e[_0xdec0('0x24')]||0x0,'telephone':_0x54dc9e[_0xdec0('0x25')]||0x0};_0x79ef81[_0xdec0('0x26')](function(_0x1dc501){var _0x5cfba5=_0x1dc501[_0xdec0('0x21')]===_0xdec0('0x22')?'user':_0x1dc501[_0xdec0('0x21')];_0x366f87[_0x5cfba5]-=_0x1dc501['count'];if(_0x366f87[_0x5cfba5]<0x0)_0x366f87[_0x5cfba5]=0x0;});_0x5d91c7(_0x366f87);return;});})[_0xdec0('0xd')](function(_0xbda2a5){_0x2a6cb7(_0xbda2a5);});});}function checkUserLimits(_0x110c69){return new BPromise(function(_0x3e9ac9,_0x1ec5aa){getLimits()[_0xdec0('0xc')](function(_0x3a35cf){var _0x3718bc=_['pick'](_[_0xdec0('0x27')](_0x110c69,_0xdec0('0x21')),['admin',_0xdec0('0x28'),'telephone']);var _0x5dd332=(_0x3718bc[_0xdec0('0x22')]||0x0)+(_0x3718bc['user']||0x0);var _0x35df95=_0x3718bc[_0xdec0('0x23')]||0x0;if(_0x5dd332>_0x3a35cf[_0xdec0('0x28')])return _0x1ec5aa(_0xdec0('0x29'));if(_0x35df95>_0x3a35cf[_0xdec0('0x23')])return _0x1ec5aa(_0xdec0('0x2a'));return _0x3e9ac9();})[_0xdec0('0xd')](function(_0x35716e){_0x1ec5aa(_0x35716e);});});}module[_0xdec0('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x3f65=['col','admin','telephone','users','forEach','user','count','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','moment','bluebird','./hardware','../../mysqldb','Breaking\x20license','getUuid','License','defaults','catch','uuid','license','isEmpty','data1','split','decryptString','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','format','grayReason','changed','disabled','message','then','User','findAll'];(function(_0x12e5b3,_0x52389d){var _0x27a568=function(_0x4218fc){while(--_0x4218fc){_0x12e5b3['push'](_0x12e5b3['shift']());}};_0x27a568(++_0x52389d);}(_0x3f65,0x140));var _0x53f6=function(_0x37ad5a,_0x55b590){_0x37ad5a=_0x37ad5a-0x0;var _0x1ab506=_0x3f65[_0x37ad5a];return _0x1ab506;};'use strict';var util=require(_0x53f6('0x0'));var _=require('lodash');var moment=require(_0x53f6('0x1'));var BPromise=require(_0x53f6('0x2'));var hardware=require(_0x53f6('0x3'));var encryptor=require('../../components/encryptor');var db=require(_0x53f6('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x53f6('0x5'),'machineUuid':hardware[_0x53f6('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5c2613){return new BPromise(function(_0x4ee2d4,_0x459351){return db[_0x53f6('0x7')]['find'](_[_0x53f6('0x8')](_0x5c2613,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x16fb35){return checkLicense(_0x16fb35,null);})['then'](function(_0x5c315a){_0x4ee2d4(_0x5c315a);return;})[_0x53f6('0x9')](function(_0x4167a5){_0x459351(_0x4167a5);});});}function checkLicense(_0x4cb933,_0x2d56d3){if(!_0x4cb933){demoLicense[_0x53f6('0xa')]=_0x4cb933['data1'];return demoLicense;}try{var _0x1a12db=_0x2d56d3||_0x4cb933[_0x53f6('0xb')];if(_[_0x53f6('0xc')](_0x1a12db)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x16c467=_0x4cb933[_0x53f6('0xd')];var _0x3b5303=_0x4cb933['data2'];var _0x5d46c9=_0x16c467['split']('-')[0x4];var _0x1b1444=_0x16c467[_0x53f6('0xe')]('-')[0x0];var _0x2dac81=encryptor[_0x53f6('0xf')](_0x1a12db,util['format'](_0x53f6('0x10'),_0x5d46c9,_0x16c467,_0x1b1444));var _0x259700=JSON[_0x53f6('0x11')](_0x2dac81);_0x259700[_0x53f6('0x12')]=![];_0x259700[_0x53f6('0xa')]=_0x16c467;_0x259700[_0x53f6('0x13')]=hardware[_0x53f6('0x6')]();if(_0x3b5303){var _0x1b71c2=encryptor[_0x53f6('0xf')](_0x3b5303);_0x259700[_0x53f6('0x14')]=_0x1b71c2;_0x259700[_0x53f6('0x15')]=moment(_0x1b71c2)[_0x53f6('0x16')](0x7,_0x53f6('0x17'))[_0x53f6('0x18')]();_0x259700[_0x53f6('0x19')]=_0x259700[_0x53f6('0xa')]!=_0x259700['machineUuid']?_0x53f6('0x1a'):_0x53f6('0x1b');}return _0x259700;}catch(_0x18a577){breakingLicense['uuid']=_0x4cb933[_0x53f6('0xd')];breakingLicense[_0x53f6('0x1c')]=_0x18a577[_0x53f6('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x10f6bd,_0x2ca284){getLicense()[_0x53f6('0x1d')](function(_0x24bcfd){return db[_0x53f6('0x1e')][_0x53f6('0x1f')]({'attributes':['role',[db['sequelize']['fn']('COUNT',db['sequelize'][_0x53f6('0x20')]('role')),'count']],'group':'role','where':{'role':{'$or':[_0x53f6('0x21'),'user',_0x53f6('0x22')]}},'raw':!![]})[_0x53f6('0x1d')](function(_0x231fd4){var _0x15b720={'user':_0x24bcfd[_0x53f6('0x23')]||0x0,'telephone':_0x24bcfd['telephones']||0x0};_0x231fd4[_0x53f6('0x24')](function(_0x5dcea5){var _0x1c183a=_0x5dcea5['role']==='admin'?_0x53f6('0x25'):_0x5dcea5['role'];_0x15b720[_0x1c183a]-=_0x5dcea5[_0x53f6('0x26')];if(_0x15b720[_0x1c183a]<0x0)_0x15b720[_0x1c183a]=0x0;});_0x10f6bd(_0x15b720);return;});})[_0x53f6('0x9')](function(_0x12f76d){_0x2ca284(_0x12f76d);});});}function checkUserLimits(_0x16d5f5){return new BPromise(function(_0x4859db,_0x41eebb){getLimits()['then'](function(_0x21368e){var _0x3e25fb=_[_0x53f6('0x27')](_[_0x53f6('0x28')](_0x16d5f5,'role'),[_0x53f6('0x21'),_0x53f6('0x25'),_0x53f6('0x22')]);var _0x5dcf5f=(_0x3e25fb[_0x53f6('0x21')]||0x0)+(_0x3e25fb[_0x53f6('0x25')]||0x0);var _0x4f9faa=_0x3e25fb[_0x53f6('0x22')]||0x0;if(_0x5dcf5f>_0x21368e[_0x53f6('0x25')])return _0x41eebb(_0x53f6('0x29'));if(_0x4f9faa>_0x21368e[_0x53f6('0x22')])return _0x41eebb(_0x53f6('0x2a'));return _0x4859db();})['catch'](function(_0x65f599){_0x41eebb(_0x65f599);});});}module[_0x53f6('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 890ee70..fea880b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['exports','app-id','secret'];(function(_0x46efd7,_0x43f84d){var _0x5637e4=function(_0x54e078){while(--_0x54e078){_0x46efd7['push'](_0x46efd7['shift']());}};_0x5637e4(++_0x43f84d);}(_0xefda,0x96));var _0xaefd=function(_0x4cce3d,_0x1e84ea){_0x4cce3d=_0x4cce3d-0x0;var _0x39b6df=_0xefda[_0x4cce3d];return _0x39b6df;};'use strict';module[_0xaefd('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0xaefd('0x1'),'GOOGLE_SECRET':_0xaefd('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0xb44a=['myappanuglar-secret','secret'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0xb44a,0x1c2));var _0xab44=function(_0x8c0bf5,_0x2456ab){_0x8c0bf5=_0x8c0bf5-0x0;var _0x447387=_0xb44a[_0x8c0bf5];return _0x447387;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xab44('0x0'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xab44('0x1'),'DEBUG':''};
\ No newline at end of file
index 52d7d26..d22f651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0765=['YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger','transports','File','%s-%s','error','info','Console','env','debugLevel','winston','INFO','join','/var','xcally','format','%s-%s.log','message','{{{','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s'];(function(_0x448f8,_0x2aa1d7){var _0xa73126=function(_0x1fcafa){while(--_0x1fcafa){_0x448f8['push'](_0x448f8['shift']());}};_0xa73126(++_0x2aa1d7);}(_0x0765,0xee));var _0x5076=function(_0x485820,_0x42c10b){_0x485820=_0x485820-0x0;var _0x2dab83=_0x0765[_0x485820];return _0x2dab83;};'use strict';var moment=require('moment');var winston=require(_0x5076('0x0'));var util=require('util');var path=require('path');var debugLevel=_0x5076('0x1');function filename(_0x3103e6,_0x498e65){return path[_0x5076('0x2')](_0x5076('0x3'),'log',_0x5076('0x4'),util[_0x5076('0x5')](_0x5076('0x6'),_0x3103e6,_0x498e65));}function formatter(_0x2ec9e7,_0x26ea39){_0x26ea39[_0x5076('0x7')]=_0x26ea39[_0x5076('0x7')]['replace'](/@@{/g,_0x5076('0x8'))[_0x5076('0x9')](/}@@/g,_0x5076('0xa'))['replace'](/@{/g,'{{')[_0x5076('0x9')](/}@/g,'}}');return util[_0x5076('0x5')](_0x5076('0xb'),moment()['format'](_0x5076('0xc')),_0x26ea39[_0x5076('0xd')][_0x5076('0xe')](),_0x2ec9e7,_0x26ea39[_0x5076('0x7')]);}module[_0x5076('0xf')]=function(_0x5019a3){return new winston[(_0x5076('0x10'))]({'transports':[new winston[(_0x5076('0x11'))][(_0x5076('0x12'))]({'name':util[_0x5076('0x5')](_0x5076('0x13'),_0x5019a3,_0x5076('0x14')),'filename':filename(_0x5019a3,_0x5076('0x14')),'level':_0x5076('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xb64a91){return formatter(_0x5019a3,_0xb64a91);}}),new winston['transports'][(_0x5076('0x12'))]({'name':util[_0x5076('0x5')](_0x5076('0x13'),_0x5019a3,_0x5076('0x15')),'filename':filename(_0x5019a3,_0x5076('0x15')),'level':_0x5076('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x712ebf){return formatter(_0x5019a3,_0x712ebf);}}),new winston[(_0x5076('0x11'))][(_0x5076('0x16'))]({'level':process[_0x5076('0x17')][_0x5076('0x18')]||debugLevel,'json':![],'formatter':function(_0x43d185){return formatter(_0x5019a3,_0x43d185);}})]});};
\ No newline at end of file
+var _0x0b24=['format','%s-%s.log','message','{{{','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','exports','Logger','transports','File','%s-%s','error','info','Console','env','moment','winston','path','INFO','join','/var'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x0b24,0xba));var _0x40b2=function(_0x44132a,_0x3667ff){_0x44132a=_0x44132a-0x0;var _0x6b03c0=_0x0b24[_0x44132a];return _0x6b03c0;};'use strict';var moment=require(_0x40b2('0x0'));var winston=require(_0x40b2('0x1'));var util=require('util');var path=require(_0x40b2('0x2'));var debugLevel=_0x40b2('0x3');function filename(_0xffe265,_0x2cb59d){return path[_0x40b2('0x4')](_0x40b2('0x5'),'log','xcally',util[_0x40b2('0x6')](_0x40b2('0x7'),_0xffe265,_0x2cb59d));}function formatter(_0x526638,_0xa56a7a){_0xa56a7a[_0x40b2('0x8')]=_0xa56a7a[_0x40b2('0x8')]['replace'](/@@{/g,_0x40b2('0x9'))[_0x40b2('0xa')](/}@@/g,_0x40b2('0xb'))['replace'](/@{/g,'{{')[_0x40b2('0xa')](/}@/g,'}}');return util[_0x40b2('0x6')](_0x40b2('0xc'),moment()[_0x40b2('0x6')](_0x40b2('0xd')),_0xa56a7a[_0x40b2('0xe')]['toUpperCase'](),_0x526638,_0xa56a7a[_0x40b2('0x8')]);}module[_0x40b2('0xf')]=function(_0x574e26){return new winston[(_0x40b2('0x10'))]({'transports':[new winston[(_0x40b2('0x11'))][(_0x40b2('0x12'))]({'name':util[_0x40b2('0x6')](_0x40b2('0x13'),_0x574e26,'error'),'filename':filename(_0x574e26,_0x40b2('0x14')),'level':_0x40b2('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1d61e9){return formatter(_0x574e26,_0x1d61e9);}}),new winston[(_0x40b2('0x11'))][(_0x40b2('0x12'))]({'name':util[_0x40b2('0x6')]('%s-%s',_0x574e26,_0x40b2('0x15')),'filename':filename(_0x574e26,_0x40b2('0x15')),'level':_0x40b2('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x45c894){return formatter(_0x574e26,_0x45c894);}}),new winston[(_0x40b2('0x11'))][(_0x40b2('0x16'))]({'level':process[_0x40b2('0x17')]['debugLevel']||debugLevel,'json':![],'formatter':function(_0x5a43f1){return formatter(_0x574e26,_0x5a43f1);}})]});};
\ No newline at end of file
index 5a0a38c..826a7cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x322c=['agi','../../services/agi/index.js','email','../../services/email/index.js','../../services/routing/index.js','xdr','exports','path','express','ami','join'];(function(_0x39d69e,_0x40ae0c){var _0x42c581=function(_0x4b5c42){while(--_0x4b5c42){_0x39d69e['push'](_0x39d69e['shift']());}};_0x42c581(++_0x40ae0c);}(_0x322c,0xe3));var _0xc322=function(_0x2c8bc6,_0x1115a3){_0x2c8bc6=_0x2c8bc6-0x0;var _0x1de4d1=_0x322c[_0x2c8bc6];return _0x1de4d1;};'use strict';var path=require(_0xc322('0x0'));var os=require('os');var config={'apps':[{'name':_0xc322('0x1'),'script':path['join'](__dirname,'../../services/express/index.js')},{'name':_0xc322('0x2'),'script':path[_0xc322('0x3')](__dirname,'../../services/ami/index.js')},{'name':_0xc322('0x4'),'script':path[_0xc322('0x3')](__dirname,_0xc322('0x5'))},{'name':_0xc322('0x6'),'script':path[_0xc322('0x3')](__dirname,_0xc322('0x7'))},{'name':'routing','script':path[_0xc322('0x3')](__dirname,_0xc322('0x8'))},{'name':_0xc322('0x9'),'script':path[_0xc322('0x3')](__dirname,'../../services/xdr/index.js')}]};module[_0xc322('0xa')]=config;
\ No newline at end of file
+var _0x14dd=['../../services/express/index.js','ami','../../services/ami/index.js','agi','email','../../services/routing/index.js','xdr','exports','path','express','join'];(function(_0x17fef8,_0x334993){var _0x457f53=function(_0x4a53c9){while(--_0x4a53c9){_0x17fef8['push'](_0x17fef8['shift']());}};_0x457f53(++_0x334993);}(_0x14dd,0x76));var _0xd14d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x14dd[_0x3dd15e];return _0x231fd0;};'use strict';var path=require(_0xd14d('0x0'));var os=require('os');var config={'apps':[{'name':_0xd14d('0x1'),'script':path[_0xd14d('0x2')](__dirname,_0xd14d('0x3'))},{'name':_0xd14d('0x4'),'script':path[_0xd14d('0x2')](__dirname,_0xd14d('0x5'))},{'name':_0xd14d('0x6'),'script':path[_0xd14d('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0xd14d('0x7'),'script':path[_0xd14d('0x2')](__dirname,'../../services/email/index.js')},{'name':'routing','script':path[_0xd14d('0x2')](__dirname,_0xd14d('0x8'))},{'name':_0xd14d('0x9'),'script':path[_0xd14d('0x2')](__dirname,'../../services/xdr/index.js')}]};module[_0xd14d('0xa')]=config;
\ No newline at end of file
index 7814922..ee7b3ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7738=['saved','pm2','bluebird','connect','connected','start','then','disconnect','stop','restart','list','delete','dump'];(function(_0x5db129,_0x151303){var _0x5ec143=function(_0x245b33){while(--_0x245b33){_0x5db129['push'](_0x5db129['shift']());}};_0x5ec143(++_0x151303);}(_0x7738,0x1c8));var _0x8773=function(_0x44b0de,_0x213afa){_0x44b0de=_0x44b0de-0x0;var _0x21da2a=_0x7738[_0x44b0de];return _0x21da2a;};'use strict';var pm2=require(_0x8773('0x0'));var BPromise=require(_0x8773('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x1efb26,_0x1d77a4){return pm2[_0x8773('0x2')](function(_0x1e307c){if(_0x1e307c){return _0x1d77a4(_0x1e307c);}return _0x1efb26(_0x8773('0x3'));});});};exports[_0x8773('0x4')]=function(_0x10a2d1){return connect()[_0x8773('0x5')](function(){return new BPromise(function(_0x5bc227,_0x137744){return pm2[_0x8773('0x4')](_0x10a2d1,function(_0x13338c,_0x31edde){if(_0x13338c){return _0x137744(_0x13338c);}pm2[_0x8773('0x6')]();return _0x5bc227(_0x31edde);});});});};exports[_0x8773('0x7')]=function(_0x173bec){return connect()[_0x8773('0x5')](function(){return new BPromise(function(_0x3d333a,_0x3f9605){return pm2[_0x8773('0x7')](_0x173bec,function(_0x413954,_0x318031){if(_0x413954){return _0x3f9605(_0x413954);}pm2[_0x8773('0x6')]();return _0x3d333a(_0x318031);});});});};exports[_0x8773('0x8')]=function(_0x51bc01){return connect()[_0x8773('0x5')](function(){return new BPromise(function(_0x198486,_0x409d5e){return pm2[_0x8773('0x8')](_0x51bc01,function(_0x4662e6,_0x390339){if(_0x4662e6){return _0x409d5e(_0x4662e6);}pm2[_0x8773('0x6')]();return _0x198486(_0x390339);});});});};exports[_0x8773('0x9')]=function(){return connect()[_0x8773('0x5')](function(){return new BPromise(function(_0x32bac4,_0x244de5){return pm2[_0x8773('0x9')](function(_0xff2038,_0x3928f2){if(_0xff2038){return _0x244de5(_0xff2038);}pm2['disconnect']();return _0x32bac4(_0x3928f2);});});});};exports['describe']=function(_0x17a308){return connect()[_0x8773('0x5')](function(){return new BPromise(function(_0x1cb5ed,_0x55f73a){return pm2['describe'](_0x17a308,function(_0x1d4650,_0x151677){if(_0x1d4650){return _0x55f73a(_0x1d4650);}pm2['disconnect']();return _0x1cb5ed(_0x151677);});});});};exports[_0x8773('0xa')]=function(_0x183100){return connect()[_0x8773('0x5')](function(){return new BPromise(function(_0x1bf2e6,_0x28d5ff){return pm2['delete'](_0x183100,function(_0x4e2f09,_0x1dc55c){if(_0x4e2f09){return _0x28d5ff(_0x4e2f09);}pm2[_0x8773('0x6')]();return _0x1bf2e6(_0x1dc55c);});});});};exports['dump']=function(){return connect()[_0x8773('0x5')](function(){return new BPromise(function(_0x556526,_0x15c54f){return pm2[_0x8773('0xb')](function(_0x46c0fd){if(_0x46c0fd){return _0x15c54f(_0x46c0fd);}return _0x556526(_0x8773('0xc'));});});});};
\ No newline at end of file
+var _0x85a5=['disconnect','stop','list','describe','delete','dump','saved','bluebird','./config','start','then'];(function(_0x32fc16,_0x26b884){var _0x262a81=function(_0x5a5941){while(--_0x5a5941){_0x32fc16['push'](_0x32fc16['shift']());}};_0x262a81(++_0x26b884);}(_0x85a5,0x1ca));var _0x585a=function(_0x4c11f7,_0x5a0447){_0x4c11f7=_0x4c11f7-0x0;var _0x587d6b=_0x85a5[_0x4c11f7];return _0x587d6b;};'use strict';var pm2=require('pm2');var BPromise=require(_0x585a('0x0'));var config=require(_0x585a('0x1'));function connect(){return new BPromise(function(_0x21e11b,_0x47a934){return pm2['connect'](function(_0x5bcc18){if(_0x5bcc18){return _0x47a934(_0x5bcc18);}return _0x21e11b('connected');});});};exports[_0x585a('0x2')]=function(_0x5b0048){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x8e75db,_0x5655a2){return pm2['start'](_0x5b0048,function(_0x4f81a2,_0x26d4f5){if(_0x4f81a2){return _0x5655a2(_0x4f81a2);}pm2[_0x585a('0x4')]();return _0x8e75db(_0x26d4f5);});});});};exports[_0x585a('0x5')]=function(_0x327d0e){return connect()['then'](function(){return new BPromise(function(_0x24c9c4,_0x2b1cc7){return pm2['stop'](_0x327d0e,function(_0x434197,_0x341261){if(_0x434197){return _0x2b1cc7(_0x434197);}pm2['disconnect']();return _0x24c9c4(_0x341261);});});});};exports['restart']=function(_0x453f94){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x1fd87b,_0x24d6fd){return pm2['restart'](_0x453f94,function(_0x293d61,_0x27cdde){if(_0x293d61){return _0x24d6fd(_0x293d61);}pm2[_0x585a('0x4')]();return _0x1fd87b(_0x27cdde);});});});};exports[_0x585a('0x6')]=function(){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x33acd4,_0x28ef3b){return pm2['list'](function(_0x3200a5,_0x2542ad){if(_0x3200a5){return _0x28ef3b(_0x3200a5);}pm2[_0x585a('0x4')]();return _0x33acd4(_0x2542ad);});});});};exports[_0x585a('0x7')]=function(_0x2f8ec7){return connect()['then'](function(){return new BPromise(function(_0x23de5e,_0x3039ce){return pm2[_0x585a('0x7')](_0x2f8ec7,function(_0x4b1479,_0x5517c2){if(_0x4b1479){return _0x3039ce(_0x4b1479);}pm2[_0x585a('0x4')]();return _0x23de5e(_0x5517c2);});});});};exports['delete']=function(_0x34116d){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x39575c,_0x2b89ad){return pm2[_0x585a('0x8')](_0x34116d,function(_0x118734,_0x56de7d){if(_0x118734){return _0x2b89ad(_0x118734);}pm2[_0x585a('0x4')]();return _0x39575c(_0x56de7d);});});});};exports[_0x585a('0x9')]=function(){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x263993,_0x8324ba){return pm2[_0x585a('0x9')](function(_0x1afa47){if(_0x1afa47){return _0x8324ba(_0x1afa47);}return _0x263993(_0x585a('0xa'));});});});};
\ No newline at end of file
index 4bf945b..923a3ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa02c=['update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','catch','error','start','lodash','moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','socket.io-emitter','find','chatTimeout','then','findAll','lastMsgAt','subtract','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join'];(function(_0x265894,_0x3327ed){var _0x5a1a0d=function(_0x41c047){while(--_0x41c047){_0x265894['push'](_0x265894['shift']());}};_0x5a1a0d(++_0x3327ed);}(_0xa02c,0xf9));var _0xca02=function(_0x2c9962,_0x81cea5){_0x2c9962=_0x2c9962-0x0;var _0x6726f1=_0xa02c[_0x2c9962];return _0x6726f1;};'use strict';var _=require(_0xca02('0x0'));var moment=require(_0xca02('0x1'));var Redis=require(_0xca02('0x2'));var util=require('util');var config=require(_0xca02('0x3'));var db=require(_0xca02('0x4'))['db'];var logger=require(_0xca02('0x5'))(_0xca02('0x6'));config['redis']=_['defaults'](config[_0xca02('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xca02('0x8'))(new Redis(config['redis']));function closeInteractions(){var _0x53660a=0x0;var _0x5bfa7b=[];return db['Setting'][_0xca02('0x9')]({'raw':!![],'attributes':['id',_0xca02('0xa')],'where':{'id':0x1}})[_0xca02('0xb')](function(_0x2d9a0a){_0x53660a=_0x2d9a0a['chatTimeout'];if(_0x53660a){return db['ChatInteraction'][_0xca02('0xc')]({'raw':!![],'attributes':['id',_0xca02('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xca02('0xe')](_0x2d9a0a[_0xca02('0xa')],_0xca02('0xf'))}}});}else{return[];}})['then'](function(_0x58f542){if(_0x58f542&&_0x58f542[_0xca02('0x10')]){_0x5bfa7b=_[_0xca02('0x11')](_0x58f542||[],'id');logger[_0xca02('0x12')](_0xca02('0x13'),_0x5bfa7b[_0xca02('0x14')]());return db['ChatInteraction'][_0xca02('0x15')]({'closeReason':'system','disposition':_0xca02('0x16'),'closed':!![],'closedAt':moment()[_0xca02('0x17')](_0xca02('0x18'))},{'where':{'id':_0x5bfa7b}});}})[_0xca02('0xb')](function(){if(_0x5bfa7b&&_0x5bfa7b[_0xca02('0x10')]){logger[_0xca02('0x12')](_0xca02('0x19'),_0x5bfa7b[_0xca02('0x14')]());for(var _0x5ce4b7=0x0;_0x5ce4b7<_0x5bfa7b[_0xca02('0x10')];_0x5ce4b7++){io['emit'](_0xca02('0x1a'),{'id':_0x5bfa7b[_0x5ce4b7],'closed':!![]});}}})[_0xca02('0x1b')](function(_0x346ecb){logger[_0xca02('0x1c')]('[CHAT]\x20Error\x20closing\x20interactions',_0x346ecb?util['inspect'](_0x346ecb,{'showHidden':![],'depth':null}):'');});}exports[_0xca02('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xe305=['Setting','chatTimeout','ChatInteraction','findAll','lastMsgAt','subtract','length','map','info','join','update','system','format','then','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','inspect','start','lodash','moment','util','../logger','redis','defaults','localhost','socket.io-emitter'];(function(_0x299e98,_0xcf14c){var _0xcf8a38=function(_0x28fa8b){while(--_0x28fa8b){_0x299e98['push'](_0x299e98['shift']());}};_0xcf8a38(++_0xcf14c);}(_0xe305,0x137));var _0x5e30=function(_0x4380da,_0x14a45a){_0x4380da=_0x4380da-0x0;var _0x16c7f8=_0xe305[_0x4380da];return _0x16c7f8;};'use strict';var _=require(_0x5e30('0x0'));var moment=require(_0x5e30('0x1'));var Redis=require('ioredis');var util=require(_0x5e30('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require(_0x5e30('0x3'))('schedule');config[_0x5e30('0x4')]=_[_0x5e30('0x5')](config[_0x5e30('0x4')],{'host':_0x5e30('0x6'),'port':0x18eb});var io=require(_0x5e30('0x7'))(new Redis(config[_0x5e30('0x4')]));function closeInteractions(){var _0x3c2b9d=0x0;var _0x5d22b6=[];return db[_0x5e30('0x8')]['find']({'raw':!![],'attributes':['id',_0x5e30('0x9')],'where':{'id':0x1}})['then'](function(_0x58d002){_0x3c2b9d=_0x58d002[_0x5e30('0x9')];if(_0x3c2b9d){return db[_0x5e30('0xa')][_0x5e30('0xb')]({'raw':!![],'attributes':['id',_0x5e30('0xc')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x5e30('0xd')](_0x58d002[_0x5e30('0x9')],'minutes')}}});}else{return[];}})['then'](function(_0x267edb){if(_0x267edb&&_0x267edb[_0x5e30('0xe')]){_0x5d22b6=_[_0x5e30('0xf')](_0x267edb||[],'id');logger[_0x5e30('0x10')]('[CHAT]\x20Interactions\x20to\x20close:',_0x5d22b6[_0x5e30('0x11')]());return db['ChatInteraction'][_0x5e30('0x12')]({'closeReason':_0x5e30('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x5e30('0x14')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x5d22b6}});}})[_0x5e30('0x15')](function(){if(_0x5d22b6&&_0x5d22b6['length']){logger['info'](_0x5e30('0x16'),_0x5d22b6[_0x5e30('0x11')]());for(var _0x45e6db=0x0;_0x45e6db<_0x5d22b6['length'];_0x45e6db++){io[_0x5e30('0x17')](_0x5e30('0x18'),{'id':_0x5d22b6[_0x45e6db],'closed':!![]});}}})[_0x5e30('0x19')](function(_0xac8a6f){logger[_0x5e30('0x1a')]('[CHAT]\x20Error\x20closing\x20interactions',_0xac8a6f?util[_0x5e30('0x1b')](_0xac8a6f,{'showHidden':![],'depth':null}):'');});}exports[_0x5e30('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 39f135a..5f5d14b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb81=['isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','toString','keyBy','difference','intersection','length','exists','deleteJob','toRun','my\x20id','resolve','run\x20job','cron','isBetween','endAt','add','start','stop\x20cron','active','startAt','update','update\x20cron','stop','run','util','path','moment','cron-job-manager','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','Smtp','service','MailAccount','host','port','auth','user','pass','format','\x22%s\x22\x20<%s>','name','bcc','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','status','Sent','message','text','stringify','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','email\x20sent','catch','error\x20mail','data'];(function(_0x23fed1,_0x386883){var _0x379429=function(_0x51a75d){while(--_0x51a75d){_0x23fed1['push'](_0x23fed1['shift']());}};_0x379429(++_0x386883);}(_0xeb81,0x1e9));var _0x1eb8=function(_0x293e7a,_0x1792a2){_0x293e7a=_0x293e7a-0x0;var _0xb78342=_0xeb81[_0x293e7a];return _0xb78342;};'use strict';var fs=require('fs');var util=require(_0x1eb8('0x0'));var path=require(_0x1eb8('0x1'));var _=require('lodash');var moment=require(_0x1eb8('0x2'));var CronJobManager=require(_0x1eb8('0x3'));var jayson=require('jayson/promise');var BPromise=require(_0x1eb8('0x4'));var logger=require(_0x1eb8('0x5'))(_0x1eb8('0x6'));var db=require(_0x1eb8('0x7'))['db'];var analyticCustomReportController=require(_0x1eb8('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0x1eb8('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x188c1a,_0x2d1113){return function(){logger[_0x1eb8('0xa')](_0x1eb8('0xb'),_0x188c1a[_0x1eb8('0xc')]);var _0x260b07=!![];var _0x1adbef={'tls':{'rejectUnauthorized':![]}};if(_0x188c1a['MailAccount'][_0x1eb8('0xd')][_0x1eb8('0xe')]){_0x1adbef['service']=_0x188c1a[_0x1eb8('0xf')]['Smtp'][_0x1eb8('0xe')];}else{_0x1adbef[_0x1eb8('0x10')]=_0x188c1a['MailAccount']['Smtp'][_0x1eb8('0x10')];_0x1adbef[_0x1eb8('0x11')]=_0x188c1a['MailAccount'][_0x1eb8('0xd')][_0x1eb8('0x11')];_0x1adbef['secure']=_0x188c1a[_0x1eb8('0xf')][_0x1eb8('0xd')]['secure'];}if(_0x188c1a[_0x1eb8('0xf')][_0x1eb8('0xd')]['authentication']){_0x1adbef[_0x1eb8('0x12')]={'user':_0x188c1a[_0x1eb8('0xf')]['Smtp'][_0x1eb8('0x13')],'pass':_0x188c1a[_0x1eb8('0xf')][_0x1eb8('0xd')][_0x1eb8('0x14')]};}var _0x1b1ebe={'account':_0x1adbef,'message':{'from':util[_0x1eb8('0x15')](_0x1eb8('0x16'),_0x188c1a[_0x1eb8('0xf')][_0x1eb8('0x17')],_0x188c1a[_0x1eb8('0xf')]['email']||_0x188c1a[_0x1eb8('0xf')][_0x1eb8('0xd')][_0x1eb8('0x13')]),'to':_0x188c1a[_0x1eb8('0xc')],'cc':_0x188c1a['cc'],'bcc':_0x188c1a[_0x1eb8('0x18')],'subject':util[_0x1eb8('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x2d1113[_0x1eb8('0x17')],_0x188c1a['subtractNumber'],_0x188c1a[_0x1eb8('0x19')])}};var _0x8e2885=path[_0x1eb8('0x1a')](__dirname,_0x1eb8('0x1b'));var _0x4716d7=_0x2d1113[_0x1eb8('0x1c')];var _0x2d0408=util['format'](_0x1eb8('0x1d'),path[_0x1eb8('0x1e')](_0x2d1113[_0x1eb8('0x1c')],path[_0x1eb8('0x1f')](_0x2d1113[_0x1eb8('0x1c')])),_0x1eb8('0x20'));var _0x514a22=path[_0x1eb8('0x1a')](_0x8e2885,_0x4716d7);var _0x5e3453=path[_0x1eb8('0x1a')](_0x8e2885,_0x2d0408);if(fs[_0x1eb8('0x21')](_0x514a22)){_0x2d1113[_0x1eb8('0x22')]=_0x1eb8('0x23');_0x1b1ebe['message']['attachments']=[{'filename':_0x4716d7,'path':_0x514a22}];_0x1b1ebe[_0x1eb8('0x24')][_0x1eb8('0x25')]=util[_0x1eb8('0x15')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x1eb8('0x26')](_0x2d1113,null,0x2));}else if(fs['existsSync'](_0x5e3453)){_0x2d1113[_0x1eb8('0x22')]=_0x1eb8('0x23');_0x1b1ebe[_0x1eb8('0x24')][_0x1eb8('0x27')]=[{'filename':_0x2d0408,'path':_0x5e3453}];}else{_0x1b1ebe[_0x1eb8('0x24')][_0x1eb8('0x25')]=_0x1eb8('0x28');if(!_0x188c1a[_0x1eb8('0x29')]){_0x260b07=![];logger['info'](_0x1eb8('0x2a'));}}if(_0x260b07){return client[_0x1eb8('0x2b')](_0x1eb8('0x2c'),_0x1b1ebe)[_0x1eb8('0x2d')](function(_0x2f988f){if(_0x2f988f[_0x1eb8('0x2e')]){return logger['error']('error\x20mail',JSON[_0x1eb8('0x26')](_0x2f988f));}return logger[_0x1eb8('0xa')](_0x1eb8('0x2f'));})[_0x1eb8('0x30')](function(_0x1725cf){return logger[_0x1eb8('0x2e')](_0x1eb8('0x31'),JSON['stringify'](_0x1725cf));});}};}function handleError(){return function(_0x205204){return logger[_0x1eb8('0x2e')](JSON[_0x1eb8('0x26')](_0x205204));};}function handleResult(_0x2a8392){return function(_0x194d34){logger[_0x1eb8('0xa')](_0x1eb8('0x32'),JSON[_0x1eb8('0x26')](_0x194d34));if(_0x2a8392[_0x1eb8('0xf')]&&_0x2a8392[_0x1eb8('0xf')]['Smtp']&&!_[_0x1eb8('0x33')](_0x2a8392[_0x1eb8('0xc')])){setTimeout(handleSendEmail(_0x2a8392,_0x194d34),0x3c*0x3e8);}};}function handleJob(_0x592d2a){return function(){try{if(_['isNil'](_0x592d2a[_0x1eb8('0x34')])){return logger[_0x1eb8('0xa')](_0x1eb8('0x35'));}if(_['isNil'](_0x592d2a['subtractUnit'])){return logger[_0x1eb8('0xa')](_0x1eb8('0x36'));}var _0x4c56d5={'startDate':moment()['subtract'](_0x592d2a[_0x1eb8('0x34')],_0x592d2a[_0x1eb8('0x19')])[_0x1eb8('0x15')](_0x1eb8('0x37')),'endDate':moment()[_0x1eb8('0x15')](_0x1eb8('0x37')),'type':_0x1eb8('0x38'),'output':_0x592d2a[_0x1eb8('0x39')],'name':_0x592d2a['name']};if(!_[_0x1eb8('0x33')](_0x592d2a[_0x1eb8('0x3a')])){logger['info'](_0x1eb8('0x3b'),_0x592d2a[_0x1eb8('0x3a')]);return analyticDefaultReportController[_0x1eb8('0x3c')]({'id':_0x592d2a[_0x1eb8('0x3a')]},_0x4c56d5)[_0x1eb8('0x2d')](handleResult(_0x592d2a))[_0x1eb8('0x30')](handleError());}if(!_[_0x1eb8('0x33')](_0x592d2a[_0x1eb8('0x3d')])){logger['info'](_0x1eb8('0x3e'),_0x592d2a['CustomReportId']);return analyticCustomReportController[_0x1eb8('0x3c')]({'id':_0x592d2a['CustomReportId']},_0x4c56d5)[_0x1eb8('0x2d')](handleResult(_0x592d2a))[_0x1eb8('0x30')](handleError());}}catch(_0x44b089){logger[_0x1eb8('0x2e')](JSON[_0x1eb8('0x26')](_0x44b089));}return logger['info'](_0x1eb8('0x3f'));};}function getJobs(_0x44c993){var _0x4e1b9f={};if(_0x44c993){_0x4e1b9f['id']=_0x44c993;}return db[_0x1eb8('0x40')][_0x1eb8('0x41')]({'where':_0x4e1b9f,'include':[{'model':db[_0x1eb8('0xf')],'attributes':['id','name','email'],'include':[{'model':db[_0x1eb8('0x42')],'as':'Smtp'}]}]})[_0x1eb8('0x2d')](function(_0x1fe05d){var _0xb2661d=_['keys'](manager['jobs']);var _0x323b0f=_['map'](_0x1fe05d,function(_0x22ac6c){return _0x22ac6c['id'][_0x1eb8('0x43')]();});var _0xa8487d=_[_0x1eb8('0x44')](_0x1fe05d,function(_0x46ad9a){return _0x46ad9a['id'][_0x1eb8('0x43')]();});var _0x2db8b7=_0x44c993?_0x323b0f:_[_0x1eb8('0x45')](_0x323b0f,_0xb2661d);var _0x381f07=_[_0x1eb8('0x46')](_0x323b0f,_0xb2661d);var _0x39dded=_[_0x1eb8('0x45')](_0xb2661d,_0x323b0f);var _0x2ed5a5;var _0x3ab3ad;for(_0x2ed5a5=0x0;_0x2ed5a5<_0x39dded[_0x1eb8('0x47')]&&!_0x44c993;_0x2ed5a5+=0x1){_0x3ab3ad=_0x39dded[_0x2ed5a5]['toString']();if(manager[_0x1eb8('0x48')](_0x3ab3ad)){manager['stop'](_0x3ab3ad);manager[_0x1eb8('0x49')](_0x3ab3ad);logger['info']('delete\x20cron',_0x3ab3ad);}}logger['info'](_0x1eb8('0x4a'),JSON[_0x1eb8('0x26')](_0x2db8b7));for(_0x2ed5a5=0x0;_0x2ed5a5<_0x2db8b7[_0x1eb8('0x47')];_0x2ed5a5+=0x1){_0x3ab3ad=_0x2db8b7[_0x2ed5a5][_0x1eb8('0x43')]();logger[_0x1eb8('0xa')]('index',_0x3ab3ad);if(_0x44c993){logger[_0x1eb8('0xa')](_0x1eb8('0x4b'),_0x44c993);logger[_0x1eb8('0xa')](JSON[_0x1eb8('0x26')](_0xa8487d[_0x3ab3ad]));BPromise[_0x1eb8('0x4c')]()[_0x1eb8('0x2d')](handleJob(_0xa8487d[_0x3ab3ad]));logger[_0x1eb8('0xa')](_0x1eb8('0x4d'),_0xa8487d[_0x3ab3ad][_0x1eb8('0x17')],_0xa8487d[_0x3ab3ad][_0x1eb8('0x4e')]);}else if(_0xa8487d[_0x3ab3ad][_0x1eb8('0x4e')]&&_0xa8487d[_0x3ab3ad]['active']&&moment()[_0x1eb8('0x4f')](_0xa8487d[_0x3ab3ad]['startAt'],_0xa8487d[_0x3ab3ad][_0x1eb8('0x50')])){manager[_0x1eb8('0x51')](_0x3ab3ad,_0xa8487d[_0x3ab3ad]['cron'],handleJob(_0xa8487d[_0x3ab3ad]));manager[_0x1eb8('0x52')](_0x3ab3ad);logger[_0x1eb8('0xa')]('add\x20cron',_0xa8487d[_0x3ab3ad][_0x1eb8('0x17')],_0xa8487d[_0x3ab3ad][_0x1eb8('0x4e')]);}else if(manager['exists'](_0x3ab3ad)){manager['stop'](_0x3ab3ad);manager[_0x1eb8('0x49')](_0x3ab3ad);logger[_0x1eb8('0xa')](_0x1eb8('0x53'),_0xa8487d[_0x3ab3ad]['name'],_0xa8487d[_0x3ab3ad][_0x1eb8('0x4e')]);}}for(_0x2ed5a5=0x0,_0x3ab3ad;_0x2ed5a5<_0x381f07[_0x1eb8('0x47')]&&!_0x44c993;_0x2ed5a5+=0x1){_0x3ab3ad=_0x381f07[_0x2ed5a5][_0x1eb8('0x43')]();if(manager[_0x1eb8('0x48')](_0x3ab3ad)){if(_0xa8487d[_0x3ab3ad][_0x1eb8('0x4e')]&&_0xa8487d[_0x3ab3ad][_0x1eb8('0x54')]&&moment()['isBetween'](_0xa8487d[_0x3ab3ad][_0x1eb8('0x55')],_0xa8487d[_0x3ab3ad]['endAt'])){manager[_0x1eb8('0x56')](_0x3ab3ad,_0xa8487d[_0x3ab3ad][_0x1eb8('0x4e')],handleJob(_0xa8487d[_0x3ab3ad]));logger[_0x1eb8('0xa')](_0x1eb8('0x57'),_0xa8487d[_0x3ab3ad][_0x1eb8('0x17')],_0xa8487d[_0x3ab3ad]['cron']);}else{manager[_0x1eb8('0x58')](_0x3ab3ad);manager[_0x1eb8('0x49')](_0x3ab3ad);logger[_0x1eb8('0xa')](_0x1eb8('0x53'),_0xa8487d[_0x3ab3ad][_0x1eb8('0x17')],_0xa8487d[_0x3ab3ad][_0x1eb8('0x4e')]);}}}})['catch'](function(_0x44238c){logger['error'](JSON[_0x1eb8('0x26')](_0x44238c));});}exports[_0x1eb8('0x59')]=function(_0x1a2f87){return getJobs(_0x1a2f87);};exports[_0x1eb8('0x52')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xd62b=['request','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toString','index','my\x20id','run\x20job','isBetween','startAt','add','cron','start','add\x20cron','stop\x20cron','active','endAt','update','update\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','user','pass','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s','join','savename','%s.%s','zip','existsSync','Sent','message','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','status','attachments','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent'];(function(_0x41dc1a,_0x3bfed4){var _0x14087e=function(_0x4e576d){while(--_0x4e576d){_0x41dc1a['push'](_0x41dc1a['shift']());}};_0x14087e(++_0x3bfed4);}(_0xd62b,0x146));var _0xbd62=function(_0x3e961c,_0x5747e7){_0x3e961c=_0x3e961c-0x0;var _0x474f9c=_0xd62b[_0x3e961c];return _0x474f9c;};'use strict';var fs=require('fs');var util=require(_0xbd62('0x0'));var path=require(_0xbd62('0x1'));var _=require(_0xbd62('0x2'));var moment=require(_0xbd62('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xbd62('0x4'));var BPromise=require(_0xbd62('0x5'));var logger=require(_0xbd62('0x6'))('schedule');var db=require(_0xbd62('0x7'))['db'];var analyticCustomReportController=require(_0xbd62('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0xbd62('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1acfe6,_0x5d6fd3){return function(){logger[_0xbd62('0xa')](_0xbd62('0xb'),_0x1acfe6[_0xbd62('0xc')]);var _0x57bb39=!![];var _0x2a3c0c={'tls':{'rejectUnauthorized':![]}};if(_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0xf')]){_0x2a3c0c['service']=_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0xf')];}else{_0x2a3c0c[_0xbd62('0x10')]=_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')]['host'];_0x2a3c0c['port']=_0x1acfe6['MailAccount'][_0xbd62('0xe')][_0xbd62('0x11')];_0x2a3c0c[_0xbd62('0x12')]=_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0x12')];}if(_0x1acfe6['MailAccount'][_0xbd62('0xe')][_0xbd62('0x13')]){_0x2a3c0c['auth']={'user':_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0x14')],'pass':_0x1acfe6[_0xbd62('0xd')]['Smtp'][_0xbd62('0x15')]};}var _0x5560d2={'account':_0x2a3c0c,'message':{'from':util['format'](_0xbd62('0x16'),_0x1acfe6['MailAccount'][_0xbd62('0x17')],_0x1acfe6['MailAccount'][_0xbd62('0xc')]||_0x1acfe6['MailAccount'][_0xbd62('0xe')][_0xbd62('0x14')]),'to':_0x1acfe6[_0xbd62('0xc')],'cc':_0x1acfe6['cc'],'bcc':_0x1acfe6[_0xbd62('0x18')],'subject':util[_0xbd62('0x19')](_0xbd62('0x1a'),_0x5d6fd3[_0xbd62('0x17')],_0x1acfe6['subtractNumber'],_0x1acfe6['subtractUnit'])}};var _0x5032ba=path[_0xbd62('0x1b')](__dirname,'../../files/reports');var _0x589aee=_0x5d6fd3[_0xbd62('0x1c')];var _0x517b69=util[_0xbd62('0x19')](_0xbd62('0x1d'),path['basename'](_0x5d6fd3[_0xbd62('0x1c')],path['extname'](_0x5d6fd3[_0xbd62('0x1c')])),_0xbd62('0x1e'));var _0x26a74e=path[_0xbd62('0x1b')](_0x5032ba,_0x589aee);var _0x257b1e=path[_0xbd62('0x1b')](_0x5032ba,_0x517b69);if(fs[_0xbd62('0x1f')](_0x26a74e)){_0x5d6fd3['status']=_0xbd62('0x20');_0x5560d2[_0xbd62('0x21')]['attachments']=[{'filename':_0x589aee,'path':_0x26a74e}];_0x5560d2[_0xbd62('0x21')]['text']=util['format'](_0xbd62('0x22'),JSON[_0xbd62('0x23')](_0x5d6fd3,null,0x2));}else if(fs[_0xbd62('0x1f')](_0x257b1e)){_0x5d6fd3[_0xbd62('0x24')]=_0xbd62('0x20');_0x5560d2[_0xbd62('0x21')][_0xbd62('0x25')]=[{'filename':_0x517b69,'path':_0x257b1e}];}else{_0x5560d2[_0xbd62('0x21')][_0xbd62('0x26')]=_0xbd62('0x27');if(!_0x1acfe6[_0xbd62('0x28')]){_0x57bb39=![];logger[_0xbd62('0xa')](_0xbd62('0x29'));}}if(_0x57bb39){return client[_0xbd62('0x2a')]('SendMail',_0x5560d2)[_0xbd62('0x2b')](function(_0xace256){if(_0xace256['error']){return logger[_0xbd62('0x2c')](_0xbd62('0x2d'),JSON[_0xbd62('0x23')](_0xace256));}return logger[_0xbd62('0xa')](_0xbd62('0x2e'));})[_0xbd62('0x2f')](function(_0x3e8da3){return logger['error']('error\x20mail',JSON[_0xbd62('0x23')](_0x3e8da3));});}};}function handleError(){return function(_0x3e70d4){return logger[_0xbd62('0x2c')](JSON[_0xbd62('0x23')](_0x3e70d4));};}function handleResult(_0x14ca86){return function(_0x58b055){logger[_0xbd62('0xa')](_0xbd62('0x30'),JSON[_0xbd62('0x23')](_0x58b055));if(_0x14ca86[_0xbd62('0xd')]&&_0x14ca86['MailAccount'][_0xbd62('0xe')]&&!_[_0xbd62('0x31')](_0x14ca86['email'])){setTimeout(handleSendEmail(_0x14ca86,_0x58b055),0x3c*0x3e8);}};}function handleJob(_0x2eb009){return function(){try{if(_['isNil'](_0x2eb009['subtractNumber'])){return logger['info'](_0xbd62('0x32'));}if(_[_0xbd62('0x31')](_0x2eb009[_0xbd62('0x33')])){return logger[_0xbd62('0xa')](_0xbd62('0x34'));}var _0x1573a7={'startDate':moment()['subtract'](_0x2eb009[_0xbd62('0x35')],_0x2eb009[_0xbd62('0x33')])[_0xbd62('0x19')](_0xbd62('0x36')),'endDate':moment()[_0xbd62('0x19')](_0xbd62('0x36')),'type':_0xbd62('0x37'),'output':_0x2eb009['output'],'name':_0x2eb009['name']};if(!_[_0xbd62('0x31')](_0x2eb009[_0xbd62('0x38')])){logger[_0xbd62('0xa')](_0xbd62('0x39'),_0x2eb009[_0xbd62('0x38')]);return analyticDefaultReportController[_0xbd62('0x3a')]({'id':_0x2eb009[_0xbd62('0x38')]},_0x1573a7)[_0xbd62('0x2b')](handleResult(_0x2eb009))[_0xbd62('0x2f')](handleError());}if(!_[_0xbd62('0x31')](_0x2eb009[_0xbd62('0x3b')])){logger[_0xbd62('0xa')](_0xbd62('0x3c'),_0x2eb009[_0xbd62('0x3b')]);return analyticCustomReportController[_0xbd62('0x3a')]({'id':_0x2eb009[_0xbd62('0x3b')]},_0x1573a7)[_0xbd62('0x2b')](handleResult(_0x2eb009))[_0xbd62('0x2f')](handleError());}}catch(_0x980ad4){logger['error'](JSON['stringify'](_0x980ad4));}return logger[_0xbd62('0xa')](_0xbd62('0x3d'));};}function getJobs(_0x2d60a4){var _0x737aeb={};if(_0x2d60a4){_0x737aeb['id']=_0x2d60a4;}return db[_0xbd62('0x3e')][_0xbd62('0x3f')]({'where':_0x737aeb,'include':[{'model':db['MailAccount'],'attributes':['id',_0xbd62('0x17'),'email'],'include':[{'model':db[_0xbd62('0x40')],'as':'Smtp'}]}]})[_0xbd62('0x2b')](function(_0x5936b6){var _0x496ae9=_[_0xbd62('0x41')](manager[_0xbd62('0x42')]);var _0x45c0c7=_[_0xbd62('0x43')](_0x5936b6,function(_0x136290){return _0x136290['id']['toString']();});var _0x3f4d7e=_[_0xbd62('0x44')](_0x5936b6,function(_0x355650){return _0x355650['id']['toString']();});var _0x258fa3=_0x2d60a4?_0x45c0c7:_[_0xbd62('0x45')](_0x45c0c7,_0x496ae9);var _0x6d9417=_[_0xbd62('0x46')](_0x45c0c7,_0x496ae9);var _0x51832c=_[_0xbd62('0x45')](_0x496ae9,_0x45c0c7);var _0x4c68f8;var _0x26b8a2;for(_0x4c68f8=0x0;_0x4c68f8<_0x51832c[_0xbd62('0x47')]&&!_0x2d60a4;_0x4c68f8+=0x1){_0x26b8a2=_0x51832c[_0x4c68f8]['toString']();if(manager[_0xbd62('0x48')](_0x26b8a2)){manager[_0xbd62('0x49')](_0x26b8a2);manager[_0xbd62('0x4a')](_0x26b8a2);logger['info'](_0xbd62('0x4b'),_0x26b8a2);}}logger[_0xbd62('0xa')]('toRun',JSON[_0xbd62('0x23')](_0x258fa3));for(_0x4c68f8=0x0;_0x4c68f8<_0x258fa3[_0xbd62('0x47')];_0x4c68f8+=0x1){_0x26b8a2=_0x258fa3[_0x4c68f8][_0xbd62('0x4c')]();logger[_0xbd62('0xa')](_0xbd62('0x4d'),_0x26b8a2);if(_0x2d60a4){logger['info'](_0xbd62('0x4e'),_0x2d60a4);logger[_0xbd62('0xa')](JSON[_0xbd62('0x23')](_0x3f4d7e[_0x26b8a2]));BPromise['resolve']()[_0xbd62('0x2b')](handleJob(_0x3f4d7e[_0x26b8a2]));logger[_0xbd62('0xa')](_0xbd62('0x4f'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2]['cron']);}else if(_0x3f4d7e[_0x26b8a2]['cron']&&_0x3f4d7e[_0x26b8a2]['active']&&moment()[_0xbd62('0x50')](_0x3f4d7e[_0x26b8a2][_0xbd62('0x51')],_0x3f4d7e[_0x26b8a2]['endAt'])){manager[_0xbd62('0x52')](_0x26b8a2,_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')],handleJob(_0x3f4d7e[_0x26b8a2]));manager[_0xbd62('0x54')](_0x26b8a2);logger[_0xbd62('0xa')](_0xbd62('0x55'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}else if(manager[_0xbd62('0x48')](_0x26b8a2)){manager['stop'](_0x26b8a2);manager['deleteJob'](_0x26b8a2);logger['info'](_0xbd62('0x56'),_0x3f4d7e[_0x26b8a2]['name'],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}}for(_0x4c68f8=0x0,_0x26b8a2;_0x4c68f8<_0x6d9417[_0xbd62('0x47')]&&!_0x2d60a4;_0x4c68f8+=0x1){_0x26b8a2=_0x6d9417[_0x4c68f8][_0xbd62('0x4c')]();if(manager['exists'](_0x26b8a2)){if(_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]&&_0x3f4d7e[_0x26b8a2][_0xbd62('0x57')]&&moment()[_0xbd62('0x50')](_0x3f4d7e[_0x26b8a2][_0xbd62('0x51')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x58')])){manager[_0xbd62('0x59')](_0x26b8a2,_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')],handleJob(_0x3f4d7e[_0x26b8a2]));logger[_0xbd62('0xa')](_0xbd62('0x5a'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}else{manager[_0xbd62('0x49')](_0x26b8a2);manager['deleteJob'](_0x26b8a2);logger[_0xbd62('0xa')](_0xbd62('0x56'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}}}})[_0xbd62('0x2f')](function(_0xc298f2){logger['error'](JSON[_0xbd62('0x23')](_0xc298f2));});}exports[_0xbd62('0x5b')]=function(_0x175273){return getJobs(_0x175273);};exports[_0xbd62('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index fb63400..bc81e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x544a=['lodash','aws-sdk','request-promise','../../mysqldb','../../config/logger','transcribe','getTranscriptionJob','Comprehend','detectSentiment','substring','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','info','format','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','sentimentAccountId','Cloud\x20Provider\x20not\x20available','data2','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','Mixed','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push'];(function(_0x4f45ef,_0x404d10){var _0x49978d=function(_0x5a1209){while(--_0x5a1209){_0x4f45ef['push'](_0x4f45ef['shift']());}};_0x49978d(++_0x404d10);}(_0x544a,0x118));var _0xa544=function(_0x18b8fb,_0x378e67){_0x18b8fb=_0x18b8fb-0x0;var _0x3327ab=_0x544a[_0x18b8fb];return _0x3327ab;};var _=require(_0xa544('0x0'));var AWS=require(_0xa544('0x1'));var rp=require(_0xa544('0x2'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xa544('0x3'))['db'];var logger=require(_0xa544('0x4'))(_0xa544('0x5'));function getTranscriptionJob(_0xf2d6a0,_0x4b4677,_0x4cfd38,_0x4ec0e3){return new Promise(function(_0x2cb8c5,_0x3690ce){var _0x9609d4=new AWS['TranscribeService']({'accessKeyId':_0x4b4677,'secretAccessKey':_0xf2d6a0,'region':_0x4cfd38});_0x9609d4[_0xa544('0x6')]({'TranscriptionJobName':_0x4ec0e3},function(_0x13ce7a,_0x35abfd){if(_0x13ce7a){return _0x3690ce(_0x13ce7a);}else{return _0x2cb8c5(_0x35abfd);}});});}function sentiment(_0x4a0b98,_0x3e48cd,_0x3066dd,_0x35abd7,_0x9e886d){return new Promise(function(_0x4d2796,_0x295267){var _0x1c961e=new AWS[(_0xa544('0x7'))]({'accessKeyId':_0x3e48cd,'secretAccessKey':_0x4a0b98,'region':_0x3066dd});_0x1c961e[_0xa544('0x8')]({'Text':_0x35abd7,'LanguageCode':_0x9e886d[_0xa544('0x9')](0x0,0x2)},function(_0x49e946,_0x36fa98){if(_0x49e946){return _0x295267(_0x49e946);}else{return _0x4d2796(_0x36fa98);}});});}function checkTranscribeJob(_0x4aa358,_0x5c5388,_0x49bdea){var _0x3de77b;return new BPromise(function(_0x4251ce,_0x498ce4){logger['info'](util['format'](_0xa544('0xa'),_0x4aa358['id'],_0x4aa358[_0xa544('0xb')]));return getTranscriptionJob(_0x49bdea[_0xa544('0xc')],_0x49bdea['data2'],_0x5c5388[_0xa544('0xd')],_0x4aa358[_0xa544('0xb')])[_0xa544('0xe')](function(_0x25c611){logger[_0xa544('0xf')](util[_0xa544('0x10')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x4aa358['id'],_0x4aa358[_0xa544('0xb')],_0x25c611[_0xa544('0x11')]['TranscriptionJobStatus']));if(!_0x4aa358['fileText']){switch(_0x25c611[_0xa544('0x11')][_0xa544('0x12')]){case _0xa544('0x13'):var _0x112262={'transcribeStatus':_0x25c611[_0xa544('0x11')][_0xa544('0x12')],'fileUri':_0x25c611[_0xa544('0x11')][_0xa544('0x14')][_0xa544('0x15')]};logger[_0xa544('0xf')](util[_0xa544('0x10')](_0xa544('0x16'),_0x4aa358['id']));return rp({'uri':_0x25c611[_0xa544('0x11')][_0xa544('0x14')][_0xa544('0x15')],'json':!![]})['then'](function(_0x4d9a8f){logger[_0xa544('0xf')](util[_0xa544('0x10')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x4aa358['id']));if(_0x4d9a8f&&_0x4d9a8f[_0xa544('0x17')]&&_0x4d9a8f[_0xa544('0x17')][_0xa544('0x18')]&&_0x4d9a8f[_0xa544('0x17')][_0xa544('0x18')]['length']){_0x112262['fileText']='';for(var _0xe9bea3=0x0;_0xe9bea3<_0x4d9a8f[_0xa544('0x17')][_0xa544('0x18')][_0xa544('0x19')];_0xe9bea3++){_0x112262[_0xa544('0x1a')]+=_0x4d9a8f[_0xa544('0x17')]['transcripts'][_0xe9bea3][_0xa544('0x1b')]+'';}}return _0x4aa358[_0xa544('0x1c')](_0x112262);})[_0xa544('0xe')](function(){logger[_0xa544('0xf')](util[_0xa544('0x10')](_0xa544('0x1d'),_0x4aa358['id']));if(!_0x4aa358[_0xa544('0x1e')]){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))](_0xa544('0x21'));}if(!_0x5c5388['sentiment']||!_0x5c5388['sentimentAccountId']||!_0x5c5388[_0xa544('0x22')]||!_0x5c5388[_0xa544('0x23')]||!_0x5c5388[_0xa544('0x24')]){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))](_0xa544('0x25'));}if(!_0x112262['fileText']){throw new Error(_0xa544('0x26'));}if(_0x5c5388[_0xa544('0x27')]===_0x49bdea['id']){return _0x49bdea;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xa544('0xe')](function(_0x371f4c){if(!_0x371f4c){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))](_0xa544('0x28'));}if(!_0x371f4c['data1']||!_0x371f4c[_0xa544('0x29')]){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0x3de77b=_0x371f4c;logger[_0xa544('0xf')](util[_0xa544('0x10')](_0xa544('0x2a'),_0x4aa358['id']));return sentiment(_0x3de77b[_0xa544('0xc')],_0x3de77b[_0xa544('0x29')],_0x5c5388[_0xa544('0x22')],_0x112262['fileText'],_0x5c5388[_0xa544('0x23')]);})[_0xa544('0xe')](function(_0x4d3c05){logger['info'](util[_0xa544('0x10')](_0xa544('0x2b'),_0x4aa358['id']));return _0x4aa358[_0xa544('0x1c')]({'sentiment':_0x4d3c05[_0xa544('0x2c')],'sPositive':_0x4d3c05[_0xa544('0x2d')][_0xa544('0x2e')],'sNegative':_0x4d3c05[_0xa544('0x2d')][_0xa544('0x2f')],'sMixed':_0x4d3c05['SentimentScore']['Mixed'],'sNeutral':_0x4d3c05[_0xa544('0x2d')][_0xa544('0x30')]});})[_0xa544('0xe')](function(){logger[_0xa544('0xf')](util[_0xa544('0x10')](_0xa544('0x1d'),_0x4aa358['id']));_0x4251ce();});case _0xa544('0x31'):return _0x4aa358[_0xa544('0x1c')]({'transcribeStatus':_0xa544('0x31'),'failureReason':_0x25c611[_0xa544('0x11')]['FailureReason']})[_0xa544('0xe')](function(){logger['info'](util['format'](_0xa544('0x1d'),_0x4aa358['id']));_0x4251ce();});default:logger[_0xa544('0xf')](util[_0xa544('0x10')](_0xa544('0x32'),_0x4aa358['id']));break;}}else{return BPromise[_0xa544('0x33')]()[_0xa544('0xe')](function(){if(!_0x4aa358[_0xa544('0x1e')]){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5c5388[_0xa544('0x34')]||!_0x5c5388[_0xa544('0x27')]||!_0x5c5388['sentimentRegion']||!_0x5c5388[_0xa544('0x23')]||!_0x5c5388['bucket']){throw new db[(_0xa544('0x1f'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x4aa358[_0xa544('0x1a')]){throw new Error(_0xa544('0x26'));}if(_0x5c5388[_0xa544('0x27')]===_0x49bdea['id']){return _0x49bdea;}else{return db[_0xa544('0x35')][_0xa544('0x36')]({'where':{'id':_settings[_0xa544('0x27')]}});}})[_0xa544('0xe')](function(_0x9c8585){if(!_0x9c8585){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x9c8585[_0xa544('0xc')]||!_0x9c8585[_0xa544('0x29')]){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))](_0xa544('0x37'));}_0x3de77b=_0x9c8585;logger[_0xa544('0xf')](util[_0xa544('0x10')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x4aa358['id']));return sentiment(_0x3de77b[_0xa544('0xc')],_0x3de77b[_0xa544('0x29')],_0x5c5388[_0xa544('0x22')],_0x4aa358['fileText'],_0x5c5388['language']);})[_0xa544('0xe')](function(_0x4ee475){logger[_0xa544('0xf')](util[_0xa544('0x10')](_0xa544('0x2b'),_0x4aa358['id']));return _0x4aa358[_0xa544('0x1c')]({'sentiment':_0x4ee475['Sentiment'],'sPositive':_0x4ee475[_0xa544('0x2d')][_0xa544('0x2e')],'sNegative':_0x4ee475['SentimentScore'][_0xa544('0x2f')],'sMixed':_0x4ee475[_0xa544('0x2d')][_0xa544('0x38')],'sNeutral':_0x4ee475[_0xa544('0x2d')][_0xa544('0x30')],'transcribeStatus':'COMPLETED'});})[_0xa544('0xe')](function(){logger[_0xa544('0xf')](util[_0xa544('0x10')](_0xa544('0x1d'),_0x4aa358['id']));_0x4251ce();});}})[_0xa544('0x39')](function(_0x571db9){if(_0x571db9){if(!_0x571db9[_0xa544('0x3a')]||_0x571db9['name']!=='SequelizeValidationError'){logger[_0xa544('0x3b')](util[_0xa544('0x10')](_0xa544('0x3c'),_0x4aa358['id']),util['inspect'](_0x571db9,{'showHidden':![],'depth':null}));}}_0x4251ce();});});}function checkTranscribe(){var _0x1e85c9;var _0x36eb24;var _0x2b0f4a;return db[_0xa544('0x3d')][_0xa544('0x3e')]({'where':{'transcribeStatus':_0xa544('0x3f')}})[_0xa544('0xe')](function(_0x4e1459){if(!_0x4e1459||!_0x4e1459[_0xa544('0x19')]){throw new db['Sequelize'][(_0xa544('0x20'))](_0xa544('0x40'));}_0x1e85c9=_0x4e1459;return db[_0xa544('0x41')]['findOne']({'where':{'id':0x1}});})[_0xa544('0xe')](function(_0x2890d2){if(!_0x2890d2){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))](_0xa544('0x42'));}_0x36eb24=_0x2890d2;if(!_0x36eb24[_0xa544('0x5')]||!_0x36eb24['transcribeAccountId']||!_0x36eb24['transcribeRegion']||!_0x36eb24[_0xa544('0x23')]||!_0x36eb24['bucket']){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))]('Transcribe\x20not\x20configured');}return db[_0xa544('0x35')][_0xa544('0x36')]({'where':{'id':_0x36eb24[_0xa544('0x43')]}});})[_0xa544('0xe')](function(_0x14cc36){if(!_0x14cc36){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))](_0xa544('0x28'));}if(!_0x14cc36[_0xa544('0xc')]||!_0x14cc36[_0xa544('0x29')]){throw new db[(_0xa544('0x1f'))][(_0xa544('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0x2b0f4a=_0x14cc36;var _0x47e320=[];_0x1e85c9[_0xa544('0x44')](function(_0x222503){_0x47e320[_0xa544('0x45')](checkTranscribeJob(_0x222503,_0x36eb24,_0x2b0f4a));});return BPromise['all'](_0x47e320);})['catch'](function(_0x5e74e9){if(_0x5e74e9){if(!_0x5e74e9[_0xa544('0x3a')]||_0x5e74e9[_0xa544('0x3a')]!=='SequelizeValidationError'){logger[_0xa544('0x3b')](util['inspect'](_0x5e74e9,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x98e5=['TranscribeService','getTranscriptionJob','Comprehend','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Sequelize','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','Sentiment','Positive','SentimentScore','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','update','Negative','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','Setting','findOne','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','util','bluebird','../../config/logger','transcribe'];(function(_0x5573a0,_0x3a93d8){var _0xfdb4e3=function(_0x192a63){while(--_0x192a63){_0x5573a0['push'](_0x5573a0['shift']());}};_0xfdb4e3(++_0x3a93d8);}(_0x98e5,0x8a));var _0x598e=function(_0x1793de,_0x4d7233){_0x1793de=_0x1793de-0x0;var _0x4f0309=_0x98e5[_0x1793de];return _0x4f0309;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x598e('0x0'));var BPromise=require(_0x598e('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x598e('0x2'))(_0x598e('0x3'));function getTranscriptionJob(_0x5cc274,_0x3af01f,_0x5a876c,_0x55025c){return new Promise(function(_0x154755,_0x568749){var _0x4292c3=new AWS[(_0x598e('0x4'))]({'accessKeyId':_0x3af01f,'secretAccessKey':_0x5cc274,'region':_0x5a876c});_0x4292c3[_0x598e('0x5')]({'TranscriptionJobName':_0x55025c},function(_0x3e0212,_0x9dc046){if(_0x3e0212){return _0x568749(_0x3e0212);}else{return _0x154755(_0x9dc046);}});});}function sentiment(_0x3e6e86,_0x1d394c,_0x2550b9,_0x2e8f07,_0x12a9f4){return new Promise(function(_0x28dee7,_0x4883b1){var _0x44e441=new AWS[(_0x598e('0x6'))]({'accessKeyId':_0x1d394c,'secretAccessKey':_0x3e6e86,'region':_0x2550b9});_0x44e441['detectSentiment']({'Text':_0x2e8f07,'LanguageCode':_0x12a9f4[_0x598e('0x7')](0x0,0x2)},function(_0x547579,_0x3bcd08){if(_0x547579){return _0x4883b1(_0x547579);}else{return _0x28dee7(_0x3bcd08);}});});}function checkTranscribeJob(_0x445d1d,_0x2e3614,_0xd29d12){var _0x3811b2;return new BPromise(function(_0x49ac43,_0x1497c9){logger['info'](util[_0x598e('0x8')](_0x598e('0x9'),_0x445d1d['id'],_0x445d1d['transcribeName']));return getTranscriptionJob(_0xd29d12[_0x598e('0xa')],_0xd29d12[_0x598e('0xb')],_0x2e3614[_0x598e('0xc')],_0x445d1d[_0x598e('0xd')])[_0x598e('0xe')](function(_0x93ba6c){logger[_0x598e('0xf')](util['format'](_0x598e('0x10'),_0x445d1d['id'],_0x445d1d[_0x598e('0xd')],_0x93ba6c[_0x598e('0x11')][_0x598e('0x12')]));if(!_0x445d1d['fileText']){switch(_0x93ba6c[_0x598e('0x11')][_0x598e('0x12')]){case _0x598e('0x13'):var _0x31846e={'transcribeStatus':_0x93ba6c[_0x598e('0x11')][_0x598e('0x12')],'fileUri':_0x93ba6c[_0x598e('0x11')][_0x598e('0x14')][_0x598e('0x15')]};logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x16'),_0x445d1d['id']));return rp({'uri':_0x93ba6c[_0x598e('0x11')][_0x598e('0x14')][_0x598e('0x15')],'json':!![]})[_0x598e('0xe')](function(_0x233f16){logger[_0x598e('0xf')](util['format'](_0x598e('0x17'),_0x445d1d['id']));if(_0x233f16&&_0x233f16['results']&&_0x233f16[_0x598e('0x18')][_0x598e('0x19')]&&_0x233f16['results'][_0x598e('0x19')][_0x598e('0x1a')]){_0x31846e[_0x598e('0x1b')]='';for(var _0xc83fcf=0x0;_0xc83fcf<_0x233f16[_0x598e('0x18')][_0x598e('0x19')][_0x598e('0x1a')];_0xc83fcf++){_0x31846e[_0x598e('0x1b')]+=_0x233f16[_0x598e('0x18')][_0x598e('0x19')][_0xc83fcf][_0x598e('0x1c')]+'';}}return _0x445d1d['update'](_0x31846e);})[_0x598e('0xe')](function(){logger['info'](util[_0x598e('0x8')](_0x598e('0x1d'),_0x445d1d['id']));if(!_0x445d1d[_0x598e('0x1e')]){throw new db['Sequelize'][(_0x598e('0x1f'))](_0x598e('0x20'));}if(!_0x2e3614[_0x598e('0x21')]||!_0x2e3614[_0x598e('0x22')]||!_0x2e3614[_0x598e('0x23')]||!_0x2e3614['language']||!_0x2e3614['bucket']){throw new db['Sequelize'][(_0x598e('0x1f'))](_0x598e('0x24'));}if(!_0x31846e[_0x598e('0x1b')]){throw new Error(_0x598e('0x25'));}if(_0x2e3614[_0x598e('0x22')]===_0xd29d12['id']){return _0xd29d12;}else{return db[_0x598e('0x26')]['findOne']({'where':{'id':_settings[_0x598e('0x22')]}});}})[_0x598e('0xe')](function(_0x9922ca){if(!_0x9922ca){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x9922ca[_0x598e('0xa')]||!_0x9922ca[_0x598e('0xb')]){throw new db[(_0x598e('0x27'))]['ValidationError'](_0x598e('0x28'));}_0x3811b2=_0x9922ca;logger[_0x598e('0xf')](util['format'](_0x598e('0x29'),_0x445d1d['id']));return sentiment(_0x3811b2[_0x598e('0xa')],_0x3811b2[_0x598e('0xb')],_0x2e3614[_0x598e('0x23')],_0x31846e[_0x598e('0x1b')],_0x2e3614[_0x598e('0x2a')]);})['then'](function(_0x16de0a){logger[_0x598e('0xf')](util[_0x598e('0x8')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x445d1d['id']));return _0x445d1d['update']({'sentiment':_0x16de0a[_0x598e('0x2b')],'sPositive':_0x16de0a['SentimentScore'][_0x598e('0x2c')],'sNegative':_0x16de0a[_0x598e('0x2d')]['Negative'],'sMixed':_0x16de0a['SentimentScore'][_0x598e('0x2e')],'sNeutral':_0x16de0a['SentimentScore'][_0x598e('0x2f')]});})[_0x598e('0xe')](function(){logger[_0x598e('0xf')](util['format'](_0x598e('0x1d'),_0x445d1d['id']));_0x49ac43();});case'FAILED':return _0x445d1d['update']({'transcribeStatus':_0x598e('0x30'),'failureReason':_0x93ba6c[_0x598e('0x11')]['FailureReason']})['then'](function(){logger[_0x598e('0xf')](util[_0x598e('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x445d1d['id']));_0x49ac43();});default:logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x31'),_0x445d1d['id']));break;}}else{return BPromise[_0x598e('0x32')]()[_0x598e('0xe')](function(){if(!_0x445d1d[_0x598e('0x1e')]){throw new db[(_0x598e('0x27'))]['ValidationError'](_0x598e('0x20'));}if(!_0x2e3614[_0x598e('0x21')]||!_0x2e3614[_0x598e('0x22')]||!_0x2e3614[_0x598e('0x23')]||!_0x2e3614[_0x598e('0x2a')]||!_0x2e3614[_0x598e('0x33')]){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))](_0x598e('0x24'));}if(!_0x445d1d[_0x598e('0x1b')]){throw new Error(_0x598e('0x25'));}if(_0x2e3614[_0x598e('0x22')]===_0xd29d12['id']){return _0xd29d12;}else{return db[_0x598e('0x26')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0x598e('0xe')](function(_0x10218f){if(!_0x10218f){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x10218f[_0x598e('0xa')]||!_0x10218f[_0x598e('0xb')]){throw new db[(_0x598e('0x27'))]['ValidationError'](_0x598e('0x28'));}_0x3811b2=_0x10218f;logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x29'),_0x445d1d['id']));return sentiment(_0x3811b2[_0x598e('0xa')],_0x3811b2[_0x598e('0xb')],_0x2e3614[_0x598e('0x23')],_0x445d1d[_0x598e('0x1b')],_0x2e3614[_0x598e('0x2a')]);})[_0x598e('0xe')](function(_0x1cacb6){logger['info'](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x445d1d['id']));return _0x445d1d[_0x598e('0x34')]({'sentiment':_0x1cacb6[_0x598e('0x2b')],'sPositive':_0x1cacb6[_0x598e('0x2d')]['Positive'],'sNegative':_0x1cacb6[_0x598e('0x2d')][_0x598e('0x35')],'sMixed':_0x1cacb6[_0x598e('0x2d')]['Mixed'],'sNeutral':_0x1cacb6[_0x598e('0x2d')][_0x598e('0x2f')],'transcribeStatus':_0x598e('0x13')});})['then'](function(){logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x1d'),_0x445d1d['id']));_0x49ac43();});}})[_0x598e('0x36')](function(_0x20723d){if(_0x20723d){if(!_0x20723d[_0x598e('0x37')]||_0x20723d['name']!==_0x598e('0x38')){logger[_0x598e('0x39')](util['format'](_0x598e('0x3a'),_0x445d1d['id']),util[_0x598e('0x3b')](_0x20723d,{'showHidden':![],'depth':null}));}}_0x49ac43();});});}function checkTranscribe(){var _0x2a55a7;var _0x584f24;var _0x59e67b;return db['VoiceRecording'][_0x598e('0x3c')]({'where':{'transcribeStatus':_0x598e('0x3d')}})['then'](function(_0x4b4fcb){if(!_0x4b4fcb||!_0x4b4fcb[_0x598e('0x1a')]){throw new db[(_0x598e('0x27'))]['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x2a55a7=_0x4b4fcb;return db[_0x598e('0x3e')][_0x598e('0x3f')]({'where':{'id':0x1}});})[_0x598e('0xe')](function(_0x34a43d){if(!_0x34a43d){throw new db['Sequelize']['ValidationError'](_0x598e('0x40'));}_0x584f24=_0x34a43d;if(!_0x584f24['transcribe']||!_0x584f24[_0x598e('0x41')]||!_0x584f24['transcribeRegion']||!_0x584f24[_0x598e('0x2a')]||!_0x584f24[_0x598e('0x33')]){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))](_0x598e('0x42'));}return db[_0x598e('0x26')][_0x598e('0x3f')]({'where':{'id':_0x584f24['transcribeAccountId']}});})[_0x598e('0xe')](function(_0x170ee8){if(!_0x170ee8){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x170ee8[_0x598e('0xa')]||!_0x170ee8[_0x598e('0xb')]){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))](_0x598e('0x28'));}_0x59e67b=_0x170ee8;var _0x3b37fa=[];_0x2a55a7[_0x598e('0x43')](function(_0x58b6b3){_0x3b37fa[_0x598e('0x44')](checkTranscribeJob(_0x58b6b3,_0x584f24,_0x59e67b));});return BPromise[_0x598e('0x45')](_0x3b37fa);})[_0x598e('0x36')](function(_0x32d5fe){if(_0x32d5fe){if(!_0x32d5fe['name']||_0x32d5fe[_0x598e('0x37')]!=='SequelizeValidationError'){logger['error'](util[_0x598e('0x3b')](_0x32d5fe,{'showHidden':![],'depth':null}));}}});}exports[_0x598e('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 4504830..a19b78c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ee=['join','WhatsappInteraction','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','moment','ioredis','../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','findAll','lastMsgAt','subtract','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:'];(function(_0x623e7,_0x1bef7d){var _0x121131=function(_0x59b734){while(--_0x59b734){_0x623e7['push'](_0x623e7['shift']());}};_0x121131(++_0x1bef7d);}(_0x69ee,0x167));var _0xe69e=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x69ee[_0x1d1779];return _0x2377e9;};'use strict';var _=require('lodash');var moment=require(_0xe69e('0x0'));var Redis=require(_0xe69e('0x1'));var util=require('util');var config=require(_0xe69e('0x2'));var db=require(_0xe69e('0x3'))['db'];var logger=require(_0xe69e('0x4'))('schedule');config[_0xe69e('0x5')]=_[_0xe69e('0x6')](config[_0xe69e('0x5')],{'host':_0xe69e('0x7'),'port':0x18eb});var io=require(_0xe69e('0x8'))(new Redis(config[_0xe69e('0x5')]));function closeInteractions(){var _0x476bab=[];return db['WhatsappInteraction'][_0xe69e('0x9')]({'raw':!![],'attributes':['id',_0xe69e('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xe69e('0xb')](0x18,_0xe69e('0xc'))}}})[_0xe69e('0xd')](function(_0x4f3089){if(_0x4f3089&&_0x4f3089[_0xe69e('0xe')]){_0x476bab=_[_0xe69e('0xf')](_0x4f3089||[],'id');logger[_0xe69e('0x10')](_0xe69e('0x11'),_0x476bab[_0xe69e('0x12')]());return db[_0xe69e('0x13')][_0xe69e('0x14')]({'closeReason':_0xe69e('0x15'),'disposition':_0xe69e('0x16'),'closed':!![],'closedAt':moment()[_0xe69e('0x17')](_0xe69e('0x18'))},{'where':{'id':_0x476bab}});}})[_0xe69e('0xd')](function(){if(_0x476bab&&_0x476bab[_0xe69e('0xe')]){logger[_0xe69e('0x10')](_0xe69e('0x19'),_0x476bab[_0xe69e('0x12')]());for(var _0x16c158=0x0;_0x16c158<_0x476bab[_0xe69e('0xe')];_0x16c158++){io['emit']('whatsappInteraction:update',{'id':_0x476bab[_0x16c158],'closed':!![]});}}})['catch'](function(_0x3c337d){logger[_0xe69e('0x1a')](_0xe69e('0x1b'),_0x3c337d?util[_0xe69e('0x1c')](_0x3c337d,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x4b8f=['map','info','join','update','system','YYYY-MM-DD\x20HH:mm:ss','then','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis','util','../../config/environment','schedule','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours'];(function(_0x65c50e,_0x1aa926){var _0x4573e7=function(_0x5bc049){while(--_0x5bc049){_0x65c50e['push'](_0x65c50e['shift']());}};_0x4573e7(++_0x1aa926);}(_0x4b8f,0x187));var _0xf4b8=function(_0xefe895,_0x4cbfe9){_0xefe895=_0xefe895-0x0;var _0x59c184=_0x4b8f[_0xefe895];return _0x59c184;};'use strict';var _=require(_0xf4b8('0x0'));var moment=require(_0xf4b8('0x1'));var Redis=require(_0xf4b8('0x2'));var util=require(_0xf4b8('0x3'));var config=require(_0xf4b8('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0xf4b8('0x5'));config[_0xf4b8('0x6')]=_[_0xf4b8('0x7')](config['redis'],{'host':_0xf4b8('0x8'),'port':0x18eb});var io=require(_0xf4b8('0x9'))(new Redis(config[_0xf4b8('0x6')]));function closeInteractions(){var _0x111fea=[];return db[_0xf4b8('0xa')][_0xf4b8('0xb')]({'raw':!![],'attributes':['id',_0xf4b8('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf4b8('0xd')](0x18,_0xf4b8('0xe'))}}})['then'](function(_0x447eb1){if(_0x447eb1&&_0x447eb1['length']){_0x111fea=_[_0xf4b8('0xf')](_0x447eb1||[],'id');logger[_0xf4b8('0x10')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x111fea[_0xf4b8('0x11')]());return db[_0xf4b8('0xa')][_0xf4b8('0x12')]({'closeReason':_0xf4b8('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0xf4b8('0x14'))},{'where':{'id':_0x111fea}});}})[_0xf4b8('0x15')](function(){if(_0x111fea&&_0x111fea[_0xf4b8('0x16')]){logger[_0xf4b8('0x10')](_0xf4b8('0x17'),_0x111fea[_0xf4b8('0x11')]());for(var _0xdf70ac=0x0;_0xdf70ac<_0x111fea['length'];_0xdf70ac++){io[_0xf4b8('0x18')](_0xf4b8('0x19'),{'id':_0x111fea[_0xdf70ac],'closed':!![]});}}})['catch'](function(_0x244f92){logger[_0xf4b8('0x1a')](_0xf4b8('0x1b'),_0x244f92?util['inspect'](_0x244f92,{'showHidden':![],'depth':null}):'');});}exports[_0xf4b8('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index b41adeb..057bf52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbf=['then','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','hopper2','catch','push','Innocenzo','now','Biondo','@xcally.com','destroy','CmContact','bulkCreate'];(function(_0xef9f7f,_0x259a17){var _0x6ca606=function(_0x1c200f){while(--_0x1c200f){_0xef9f7f['push'](_0xef9f7f['shift']());}};_0x6ca606(++_0x259a17);}(_0x7fbf,0x15d));var _0xf7fb=function(_0xf492bb,_0x536b60){_0xf492bb=_0xf492bb-0x0;var _0x134b20=_0x7fbf[_0xf492bb];return _0x134b20;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf7fb('0x0')]({'id':i,'firstName':_0xf7fb('0x1')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xf7fb('0x0')]({'id':i,'active':![],'scheduledat':Date[_0xf7fb('0x2')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xf7fb('0x2')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf7fb('0x0')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xf7fb('0x3')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xf7fb('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf7fb('0x0')]({'id':i,'active':![],'scheduledat':Date[_0xf7fb('0x2')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf7fb('0x2')](),'updatedAt':Date['now']()});}db['CmContact'][_0xf7fb('0x5')]({'where':{}})['then'](function(){return db[_0xf7fb('0x6')][_0xf7fb('0x7')](contacts);})[_0xf7fb('0x8')](function(){console[_0xf7fb('0x9')](_0xf7fb('0xa'),_0xf7fb('0xb'));return db[_0xf7fb('0xc')][_0xf7fb('0x5')]({'where':{}});})['then'](function(){return db[_0xf7fb('0xc')][_0xf7fb('0x7')](hopper);})['then'](function(){console['log'](_0xf7fb('0xa'),_0xf7fb('0xd'));return db[_0xf7fb('0x6')]['bulkCreate'](contacts2);})[_0xf7fb('0x8')](function(){console[_0xf7fb('0x9')]('finished\x20populating',_0xf7fb('0xe'));return db['CmHopper'][_0xf7fb('0x7')](hopper2);})[_0xf7fb('0x8')](function(){console['log'](_0xf7fb('0xa'),_0xf7fb('0xf'));})[_0xf7fb('0x10')](function(_0x1161dd){console[_0xf7fb('0x9')](_0x1161dd);});
\ No newline at end of file
+var _0x76a8=['catch','util','../mysqldb','push','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','destroy','bulkCreate','then','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','hopper2'];(function(_0xf20b6,_0x49ddbb){var _0x4ff567=function(_0x3ccc7f){while(--_0x3ccc7f){_0xf20b6['push'](_0xf20b6['shift']());}};_0x4ff567(++_0x49ddbb);}(_0x76a8,0x1ef));var _0x876a=function(_0x30e235,_0x247107){_0x30e235=_0x30e235-0x0;var _0x48977b=_0x76a8[_0x30e235];return _0x48977b;};'use strict';var util=require(_0x876a('0x0'));var db=require(_0x876a('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x876a('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x876a('0x3')+i,'phone':0xf879fb460+i,'email':_0x876a('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x876a('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x876a('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x876a('0x5')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x876a('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x876a('0x3')+i,'phone':0xf879fb460+i,'email':_0x876a('0x4')+i+_0x876a('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x876a('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x876a('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x876a('0x5')](),'updatedAt':Date[_0x876a('0x5')]()});}db[_0x876a('0x7')][_0x876a('0x8')]({'where':{}})['then'](function(){return db[_0x876a('0x7')][_0x876a('0x9')](contacts);})[_0x876a('0xa')](function(){console[_0x876a('0xb')](_0x876a('0xc'),_0x876a('0xd'));return db['CmHopper'][_0x876a('0x8')]({'where':{}});})[_0x876a('0xa')](function(){return db[_0x876a('0xe')][_0x876a('0x9')](hopper);})['then'](function(){console[_0x876a('0xb')](_0x876a('0xc'),_0x876a('0xf'));return db['CmContact'][_0x876a('0x9')](contacts2);})[_0x876a('0xa')](function(){console[_0x876a('0xb')](_0x876a('0xc'),_0x876a('0x10'));return db[_0x876a('0xe')][_0x876a('0x9')](hopper2);})[_0x876a('0xa')](function(){console['log'](_0x876a('0xc'),_0x876a('0x11'));})[_0x876a('0x12')](function(_0x16b8b6){console[_0x876a('0xb')](_0x16b8b6);});
\ No newline at end of file
index 3a6cb86..6831aca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e52=['then','catch','log','util','format','%s%s','agent','%s%s@xcally.com','password','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt','actpass','User','bulkCreate'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1e52,0x173));var _0x21e5=function(_0x4e170e,_0x207e58){_0x4e170e=_0x4e170e-0x0;var _0x338291=_0x1e52[_0x4e170e];return _0x338291;};'use strict';var util=require(_0x21e5('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0x21e5('0x1')](_0x21e5('0x2'),_0x21e5('0x3'),i),'fullname':util[_0x21e5('0x1')](_0x21e5('0x2'),_0x21e5('0x3'),i),'email':util[_0x21e5('0x1')](_0x21e5('0x4'),_0x21e5('0x3'),i),'role':_0x21e5('0x3'),'password':_0x21e5('0x5'),'internal':0xfa0+i,'type':'friend','transport':['udp','ws',_0x21e5('0x6')],'disallow':['all'],'allow':[_0x21e5('0x7')],'defaultuser':util[_0x21e5('0x1')]('%s%s',_0x21e5('0x3'),i),'encryption':_0x21e5('0x8'),'avpf':_0x21e5('0x8'),'force_avp':_0x21e5('0x8'),'icesupport':_0x21e5('0x8'),'dtlsenable':_0x21e5('0x8'),'dtlsverify':'no','dtlscertfile':_0x21e5('0x9'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x21e5('0xa'),'callerid':util[_0x21e5('0x1')]('\x22%s\x22\x20<%s>',util[_0x21e5('0x1')](_0x21e5('0x2'),_0x21e5('0x3'),i),0xfa0+i)});}db[_0x21e5('0xb')][_0x21e5('0xc')](users)[_0x21e5('0xd')](function(){console['log']('add\x20user');})[_0x21e5('0xe')](function(_0x4b7402){console[_0x21e5('0xf')](_0x4b7402);});
\ No newline at end of file
+var _0x02a9=['agent','%s%s@xcally.com','password','friend','udp','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','util','push','format','%s%s'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x02a9,0x1dc));var _0x902a=function(_0x47fc9c,_0x5aacec){_0x47fc9c=_0x47fc9c-0x0;var _0x27a677=_0x02a9[_0x47fc9c];return _0x27a677;};'use strict';var util=require(_0x902a('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x902a('0x1')]({'name':util[_0x902a('0x2')](_0x902a('0x3'),_0x902a('0x4'),i),'fullname':util[_0x902a('0x2')](_0x902a('0x3'),_0x902a('0x4'),i),'email':util[_0x902a('0x2')](_0x902a('0x5'),_0x902a('0x4'),i),'role':_0x902a('0x4'),'password':_0x902a('0x6'),'internal':0xfa0+i,'type':_0x902a('0x7'),'transport':[_0x902a('0x8'),'ws',_0x902a('0x9')],'disallow':['all'],'allow':[_0x902a('0xa')],'defaultuser':util['format']('%s%s',_0x902a('0x4'),i),'encryption':_0x902a('0xb'),'avpf':_0x902a('0xb'),'force_avp':_0x902a('0xb'),'icesupport':_0x902a('0xb'),'dtlsenable':_0x902a('0xb'),'dtlsverify':'no','dtlscertfile':_0x902a('0xc'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x902a('0xd'),'callerid':util[_0x902a('0x2')](_0x902a('0xe'),util[_0x902a('0x2')](_0x902a('0x3'),_0x902a('0x4'),i),0xfa0+i)});}db[_0x902a('0xf')][_0x902a('0x10')](users)[_0x902a('0x11')](function(){console[_0x902a('0x12')](_0x902a('0x13'));})['catch'](function(_0x323f81){console[_0x902a('0x12')](_0x323f81);});
\ No newline at end of file
index 18855fe..1deb7be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f81=['where','format','%s:queue:%s','user:%s','query','find','userProfileId','handshake','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','voice:inbound','include','push','VoiceQueue','MailQueue','Trunk','Campaign','user','voice:outbound','ChatQueue','OpenchannelQueue','Trunks','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','length','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','emit','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','../mysqldb','./environment','Agents','User','name','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','map'];(function(_0xa6f8c2,_0x389554){var _0x468057=function(_0x2bffd5){while(--_0x2bffd5){_0xa6f8c2['push'](_0xa6f8c2['shift']());}};_0x468057(++_0x389554);}(_0x1f81,0xab));var _0x11f8=function(_0x1f6f84,_0x2bab55){_0x1f6f84=_0x1f6f84-0x0;var _0x177f40=_0x1f81[_0x1f6f84];return _0x177f40;};'use strict';var _=require(_0x11f8('0x0'));var util=require(_0x11f8('0x1'));var BPromise=require('bluebird');var db=require(_0x11f8('0x2'))['db'];var config=require(_0x11f8('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x11f8('0x4'),'model':db[_0x11f8('0x5')],'attributes':['id',_0x11f8('0x6'),_0x11f8('0x7')],'raw':!![],'where':{'role':_0x11f8('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x11f8('0x6')],'where':{'role':_0x11f8('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x11f8('0x6')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x11f8('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x11f8('0x6'),_0x11f8('0xa')],'where':{'type':_0x11f8('0xb')}};function getAssociatedResources(_0x1720c2,_0x135a09,_0x5ec20c){return db[_0x11f8('0xc')][_0x11f8('0xd')]({'where':{'name':_0x1720c2,'userProfileId':_0x135a09},'raw':!![]})[_0x11f8('0xe')](function(_0x305ee9){if(_0x305ee9){if(_0x305ee9['autoAssociation']){switch(_0x1720c2){case _0x11f8('0xf'):case _0x11f8('0x10'):case _0x11f8('0x11'):case _0x11f8('0x12'):case _0x11f8('0x13'):case _0x11f8('0x14'):case'WhatsappQueues':return db[_0x5ec20c][_0x11f8('0x15')](queryQueues);case _0x11f8('0x16'):return db[_0x5ec20c][_0x11f8('0x15')](queryTelephones);case'Trunks':return db[_0x5ec20c][_0x11f8('0x15')](queryTrunks);case _0x11f8('0x17'):return db[_0x5ec20c][_0x11f8('0x15')](queryCampaigns);}}else{return db[_0x11f8('0x18')]['findAll']({'attributes':[_0x11f8('0x19')],'where':{'sectionId':_0x305ee9['id']},'raw':!![]})[_0x11f8('0xe')](function(_0x40d5ec){if(_0x40d5ec){var _0x8d7509={'where':{'id':_[_0x11f8('0x1a')](_0x40d5ec,'resourceId')},'raw':!![]};switch(_0x5ec20c){case _0x11f8('0x5'):_0x8d7509[_0x11f8('0x1b')]['role']=_0x11f8('0x9');break;case'Campaign':_0x8d7509[_0x11f8('0x1b')][_0x11f8('0xa')]=_0x11f8('0xb');break;}return db[_0x5ec20c][_0x11f8('0x15')](_0x8d7509);}else{return[];}});}}else{return[];}})[_0x11f8('0xe')](function(_0x2a4512){return _0x2a4512;});}function joinOrLeaveQueues(_0x294f54,_0x1ae686,_0xe57a23,_0x1bee48){_0x294f54[_0x1ae686](util[_0x11f8('0x1c')](_0x11f8('0x1d'),_0xe57a23,_0x1bee48[_0x11f8('0x6')]));if(_0x1bee48[_0x11f8('0x4')]){for(var _0x42f8eb=0x0;_0x42f8eb<_0x1bee48['Agents']['length'];_0x42f8eb+=0x1){_0x294f54[_0x1ae686](util['format'](_0x11f8('0x1e'),_0x1bee48[_0x11f8('0x4')][_0x42f8eb][_0x11f8('0x6')]));}}}function joinOrLeave(_0x40dbda,_0x49d06e,_0x4119ea){var _0x3e994d;if(_0x40dbda['handshake'][_0x11f8('0x1f')]['id']){db[_0x11f8('0x5')][_0x11f8('0x20')]({'attributes':['id',_0x11f8('0x6'),_0x11f8('0x7'),_0x11f8('0x21')],'where':{'id':_0x40dbda[_0x11f8('0x22')]['query']['id']},'include':[{'model':db[_0x11f8('0x23')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x11f8('0x24')],'as':_0x11f8('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x11f8('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x11f8('0x27')],'as':_0x11f8('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x11f8('0x29')],'as':_0x11f8('0x2a'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x11f8('0x2b'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x35ba83){if(_0x35ba83){_0x3e994d=_0x35ba83;_0x40dbda[_0x49d06e](util[_0x11f8('0x1c')](_0x11f8('0x1e'),_0x35ba83['name']));var _0x4d2cc1=[];switch(_0x35ba83[_0x11f8('0x7')]){case'admin':_0x40dbda[_0x49d06e](_0x11f8('0x2c'));_0x40dbda[_0x49d06e]('voice:outbound');if(queryQueues['hasOwnProperty'](_0x11f8('0x2d'))){delete queryQueues['include'];}_0x4d2cc1[_0x11f8('0x2e')](db[_0x11f8('0x2f')]['findAll'](queryQueues));_0x4d2cc1[_0x11f8('0x2e')](db['ChatQueue'][_0x11f8('0x15')](queryQueues));_0x4d2cc1['push'](db['FaxQueue']['findAll'](queryQueues));_0x4d2cc1[_0x11f8('0x2e')](db['SmsQueue']['findAll'](queryQueues));_0x4d2cc1[_0x11f8('0x2e')](db[_0x11f8('0x30')][_0x11f8('0x15')](queryQueues));_0x4d2cc1[_0x11f8('0x2e')](db['OpenchannelQueue']['findAll'](queryQueues));_0x4d2cc1['push'](db['WhatsappQueue'][_0x11f8('0x15')](queryQueues));_0x4d2cc1[_0x11f8('0x2e')](db[_0x11f8('0x5')][_0x11f8('0x15')](queryTelephones));_0x4d2cc1['push'](db[_0x11f8('0x31')][_0x11f8('0x15')](queryTrunks));_0x4d2cc1[_0x11f8('0x2e')](db[_0x11f8('0x32')][_0x11f8('0x15')](queryCampaigns));_0x4d2cc1['push'](db['User'][_0x11f8('0x15')](queryAgents));break;case _0x11f8('0x33'):_0x40dbda[_0x49d06e](_0x11f8('0x2c'));_0x40dbda[_0x49d06e](_0x11f8('0x34'));_0x4d2cc1['push'](getAssociatedResources('VoiceQueues',_0x35ba83['userProfileId'],'VoiceQueue'));_0x4d2cc1['push'](getAssociatedResources(_0x11f8('0x10'),_0x35ba83[_0x11f8('0x21')],_0x11f8('0x35')));_0x4d2cc1[_0x11f8('0x2e')](getAssociatedResources(_0x11f8('0x11'),_0x35ba83['userProfileId'],'FaxQueue'));_0x4d2cc1[_0x11f8('0x2e')](getAssociatedResources(_0x11f8('0x12'),_0x35ba83[_0x11f8('0x21')],'SmsQueue'));_0x4d2cc1['push'](getAssociatedResources('MailQueues',_0x35ba83[_0x11f8('0x21')],'MailQueue'));_0x4d2cc1[_0x11f8('0x2e')](getAssociatedResources(_0x11f8('0x14'),_0x35ba83[_0x11f8('0x21')],_0x11f8('0x36')));_0x4d2cc1[_0x11f8('0x2e')](getAssociatedResources('WhatsappQueues',_0x35ba83[_0x11f8('0x21')],'WhatsappQueue'));_0x4d2cc1['push'](getAssociatedResources(_0x11f8('0x16'),_0x35ba83[_0x11f8('0x21')],_0x11f8('0x5')));_0x4d2cc1[_0x11f8('0x2e')](getAssociatedResources(_0x11f8('0x37'),_0x35ba83[_0x11f8('0x21')],_0x11f8('0x31')));_0x4d2cc1[_0x11f8('0x2e')](getAssociatedResources(_0x11f8('0x17'),_0x35ba83[_0x11f8('0x21')],_0x11f8('0x32')));_0x4d2cc1['push'](db['User'][_0x11f8('0x15')](queryAgents));break;case _0x11f8('0x8'):_0x40dbda[_0x49d06e](_0x11f8('0x2c'));_0x40dbda[_0x49d06e](_0x11f8('0x34'));_0x4d2cc1[_0x11f8('0x2e')](_0x35ba83[_0x11f8('0x38')]({'attributes':['id',_0x11f8('0x6')]}));_0x4d2cc1['push'](_0x35ba83[_0x11f8('0x39')]({'attributes':['id',_0x11f8('0x6')]}));_0x4d2cc1[_0x11f8('0x2e')](_0x35ba83['getFaxQueues']({'attributes':['id',_0x11f8('0x6')]}));_0x4d2cc1[_0x11f8('0x2e')](_0x35ba83[_0x11f8('0x3a')]({'attributes':['id','name']}));_0x4d2cc1[_0x11f8('0x2e')](_0x35ba83[_0x11f8('0x3b')]({'attributes':['id',_0x11f8('0x6')]}));_0x4d2cc1['push'](_0x35ba83[_0x11f8('0x3c')]({'attributes':['id',_0x11f8('0x6')]}));_0x4d2cc1['push'](_0x35ba83['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0x11f8('0x3d')](_0x4d2cc1);}})['then'](function(_0x473631){if(_0x473631&&_0x473631[_0x11f8('0x3e')]){for(var _0x2cf93a=0x0;_0x2cf93a<_0x473631[_0x11f8('0x3e')];_0x2cf93a+=0x1){for(var _0x1b471a=0x0;_0x1b471a<_0x473631[_0x2cf93a][_0x11f8('0x3e')];_0x1b471a+=0x1){switch(_0x2cf93a){case 0x0:joinOrLeaveQueues(_0x40dbda,_0x49d06e,_0x11f8('0x3f'),_0x473631[_0x2cf93a][_0x1b471a]);break;case 0x1:joinOrLeaveQueues(_0x40dbda,_0x49d06e,_0x11f8('0x40'),_0x473631[_0x2cf93a][_0x1b471a]);break;case 0x2:joinOrLeaveQueues(_0x40dbda,_0x49d06e,_0x11f8('0x41'),_0x473631[_0x2cf93a][_0x1b471a]);break;case 0x3:joinOrLeaveQueues(_0x40dbda,_0x49d06e,_0x11f8('0x42'),_0x473631[_0x2cf93a][_0x1b471a]);break;case 0x4:joinOrLeaveQueues(_0x40dbda,_0x49d06e,_0x11f8('0x43'),_0x473631[_0x2cf93a][_0x1b471a]);break;case 0x5:joinOrLeaveQueues(_0x40dbda,_0x49d06e,_0x11f8('0x44'),_0x473631[_0x2cf93a][_0x1b471a]);break;case 0x6:joinOrLeaveQueues(_0x40dbda,_0x49d06e,_0x11f8('0x45'),_0x473631[_0x2cf93a][_0x1b471a]);break;case 0x7:if(_0x3e994d['role']!==_0x11f8('0x8'))_0x40dbda[_0x49d06e](util[_0x11f8('0x1c')](_0x11f8('0x46'),_0x473631[_0x2cf93a][_0x1b471a]['name']));break;case 0x8:if(_0x3e994d[_0x11f8('0x7')]!=='agent')_0x40dbda[_0x49d06e](util[_0x11f8('0x1c')]('trunk:%s',_0x473631[_0x2cf93a][_0x1b471a][_0x11f8('0x6')]));break;case 0x9:if(_0x3e994d[_0x11f8('0x7')]!==_0x11f8('0x8'))_0x40dbda[_0x49d06e](util[_0x11f8('0x1c')](_0x11f8('0x47'),_0x473631[_0x2cf93a][_0x1b471a][_0x11f8('0xa')],_0x473631[_0x2cf93a][_0x1b471a][_0x11f8('0x6')]));break;case 0xa:_0x40dbda[_0x49d06e](util[_0x11f8('0x1c')]('user:%s',_0x473631[_0x2cf93a][_0x1b471a][_0x11f8('0x6')]));break;}}}}})[_0x11f8('0xe')](function(){if(_0x49d06e===_0x11f8('0x48')){var _0x318116=_[_0x11f8('0x1a')](_0x3e994d[_0x11f8('0x49')],'id');return _0x3e994d[_0x11f8('0x4a')](_0x318116)[_0x11f8('0xe')](function(){for(var _0x3a3da3=0x0;_0x3a3da3<_0x318116[_0x11f8('0x3e')];_0x3a3da3+=0x1){_0x4119ea['emit'](_0x11f8('0x4b'),{'ChatInteractionId':Number(_0x318116[_0x3a3da3]),'UserId':Number(_0x3e994d['id'])});}});}})[_0x11f8('0xe')](function(){if(_0x49d06e==='leave'){var _0xc0e2f4=_['map'](_0x3e994d[_0x11f8('0x25')],'id');return _0x3e994d[_0x11f8('0x4c')](_0xc0e2f4)['then'](function(){for(var _0x4f2556=0x0;_0x4f2556<_0xc0e2f4[_0x11f8('0x3e')];_0x4f2556+=0x1){_0x4119ea[_0x11f8('0x4d')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0xc0e2f4[_0x4f2556]),'UserId':Number(_0x3e994d['id'])});}});}})[_0x11f8('0xe')](function(){if(_0x49d06e===_0x11f8('0x48')){var _0x535831=_[_0x11f8('0x1a')](_0x3e994d[_0x11f8('0x4e')],'id');return _0x3e994d[_0x11f8('0x4f')](_0x535831)['then'](function(){for(var _0x5e20e5=0x0;_0x5e20e5<_0x535831[_0x11f8('0x3e')];_0x5e20e5+=0x1){_0x4119ea[_0x11f8('0x4d')](_0x11f8('0x50'),{'FaxInteractionId':Number(_0x535831[_0x5e20e5]),'UserId':Number(_0x3e994d['id'])});}});}})[_0x11f8('0xe')](function(){if(_0x49d06e===_0x11f8('0x48')){var _0x6430c0=_['map'](_0x3e994d['SmsInteractions'],'id');return _0x3e994d['removeSmsInteractions'](_0x6430c0)['then'](function(){for(var _0x4b184e=0x0;_0x4b184e<_0x6430c0[_0x11f8('0x3e')];_0x4b184e+=0x1){_0x4119ea[_0x11f8('0x4d')](_0x11f8('0x51'),{'SmsInteractionId':Number(_0x6430c0[_0x4b184e]),'UserId':Number(_0x3e994d['id'])});}});}})[_0x11f8('0xe')](function(){if(_0x49d06e===_0x11f8('0x48')){var _0xe937ca=_[_0x11f8('0x1a')](_0x3e994d[_0x11f8('0x2a')],'id');return _0x3e994d[_0x11f8('0x52')](_0xe937ca)[_0x11f8('0xe')](function(){for(var _0x3ecd68=0x0;_0x3ecd68<_0xe937ca[_0x11f8('0x3e')];_0x3ecd68+=0x1){_0x4119ea[_0x11f8('0x4d')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xe937ca[_0x3ecd68]),'UserId':Number(_0x3e994d['id'])});}});}})[_0x11f8('0xe')](function(){if(_0x49d06e===_0x11f8('0x48')){var _0x31bb17=_[_0x11f8('0x1a')](_0x3e994d[_0x11f8('0x2b')],'id');return _0x3e994d[_0x11f8('0x53')](_0x31bb17)[_0x11f8('0xe')](function(){for(var _0x116b09=0x0;_0x116b09<_0x31bb17[_0x11f8('0x3e')];_0x116b09+=0x1){_0x4119ea[_0x11f8('0x4d')](_0x11f8('0x54'),{'WhatsappInteractionId':Number(_0x31bb17[_0x116b09]),'UserId':Number(_0x3e994d['id'])});}});}})[_0x11f8('0x55')](function(_0x2bc1f3){_0x40dbda[_0x11f8('0x56')](_0x2bc1f3);});}}function onDisconnect(_0x5b9bc8,_0x4c3192){joinOrLeave(_0x5b9bc8,_0x11f8('0x48'),_0x4c3192);}function onConnect(_0x291b02){joinOrLeave(_0x291b02,_0x11f8('0x57'));}exports[_0x11f8('0x58')]=function(_0x242e4e){_0x242e4e['on'](_0x11f8('0x59'),function(_0x4424b4){_0x4424b4['setMaxListeners'](0x0);_0x4424b4[_0x11f8('0x5a')]=_0x4424b4[_0x11f8('0x5b')][_0x11f8('0x59')][_0x11f8('0x5c')]+':'+_0x4424b4[_0x11f8('0x5b')][_0x11f8('0x59')][_0x11f8('0x5d')];_0x4424b4[_0x11f8('0x5e')]=new Date();_0x4424b4[_0x11f8('0x56')]=function(_0xa9fe13){console[_0x11f8('0x56')](_0x11f8('0x5f')+_0x4424b4[_0x11f8('0x60')][_0x11f8('0x6')]+'['+_0x4424b4[_0x11f8('0x5a')]+']',_0xa9fe13);};_0x4424b4['on'](_0x11f8('0x61'),function(){onDisconnect(_0x4424b4,_0x242e4e);_0x4424b4[_0x11f8('0x56')]('DISCONNECTED');});onConnect(_0x4424b4);_0x4424b4[_0x11f8('0x56')](_0x11f8('0x62'));});};
\ No newline at end of file
+var _0xc0d7=['map','removeChatInteractions','user_has_chat_interactions:remove','leave','removeMailInteractions','emit','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','SocketIO\x20','DISCONNECTED','CONNECTED','../mysqldb','./environment','name','Agents','User','role','agent','ivr','findOne','then','VoiceQueues','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','where','telephone','Campaign','type','format','%s:queue:%s','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','user:%s','admin','voice:outbound','include','ChatQueue','SmsQueue','push','MailQueue','OpenchannelQueue','Trunk','voice:inbound','userProfileId','VoiceQueue','FaxQueues','WhatsappQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','length','voice','fax','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s'];(function(_0xd4de4b,_0x1c5508){var _0x49855b=function(_0x5dcbc6){while(--_0x5dcbc6){_0xd4de4b['push'](_0xd4de4b['shift']());}};_0x49855b(++_0x1c5508);}(_0xc0d7,0x7f));var _0x7c0d=function(_0x231657,_0x4a3f0e){_0x231657=_0x231657-0x0;var _0x1ae1d0=_0xc0d7[_0x231657];return _0x1ae1d0;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require('bluebird');var db=require(_0x7c0d('0x0'))['db'];var config=require(_0x7c0d('0x1'));var queryQueues={'attributes':['id',_0x7c0d('0x2')],'include':[{'as':_0x7c0d('0x3'),'model':db[_0x7c0d('0x4')],'attributes':['id',_0x7c0d('0x2'),_0x7c0d('0x5')],'raw':!![],'where':{'role':_0x7c0d('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7c0d('0x2')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x7c0d('0x2')]};var queryAgents={'raw':!![],'attributes':['id',_0x7c0d('0x2')],'where':{'role':_0x7c0d('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7c0d('0x2'),'type'],'where':{'type':_0x7c0d('0x7')}};function getAssociatedResources(_0x15d9ed,_0x230a6b,_0xfd38a0){return db['UserProfileSection'][_0x7c0d('0x8')]({'where':{'name':_0x15d9ed,'userProfileId':_0x230a6b},'raw':!![]})[_0x7c0d('0x9')](function(_0x4c0798){if(_0x4c0798){if(_0x4c0798['autoAssociation']){switch(_0x15d9ed){case _0x7c0d('0xa'):case _0x7c0d('0xb'):case'FaxQueues':case _0x7c0d('0xc'):case _0x7c0d('0xd'):case _0x7c0d('0xe'):case _0x7c0d('0xf'):return db[_0xfd38a0][_0x7c0d('0x10')](queryQueues);case _0x7c0d('0x11'):return db[_0xfd38a0]['findAll'](queryTelephones);case _0x7c0d('0x12'):return db[_0xfd38a0][_0x7c0d('0x10')](queryTrunks);case _0x7c0d('0x13'):return db[_0xfd38a0][_0x7c0d('0x10')](queryCampaigns);}}else{return db[_0x7c0d('0x14')][_0x7c0d('0x10')]({'attributes':[_0x7c0d('0x15')],'where':{'sectionId':_0x4c0798['id']},'raw':!![]})[_0x7c0d('0x9')](function(_0x4a5fb4){if(_0x4a5fb4){var _0x340937={'where':{'id':_['map'](_0x4a5fb4,_0x7c0d('0x15'))},'raw':!![]};switch(_0xfd38a0){case'User':_0x340937[_0x7c0d('0x16')][_0x7c0d('0x5')]=_0x7c0d('0x17');break;case _0x7c0d('0x18'):_0x340937[_0x7c0d('0x16')][_0x7c0d('0x19')]=_0x7c0d('0x7');break;}return db[_0xfd38a0][_0x7c0d('0x10')](_0x340937);}else{return[];}});}}else{return[];}})[_0x7c0d('0x9')](function(_0xf0657e){return _0xf0657e;});}function joinOrLeaveQueues(_0x111dbe,_0x2e3f30,_0x3e1b95,_0x265d48){_0x111dbe[_0x2e3f30](util[_0x7c0d('0x1a')](_0x7c0d('0x1b'),_0x3e1b95,_0x265d48[_0x7c0d('0x2')]));if(_0x265d48[_0x7c0d('0x3')]){for(var _0x1308c6=0x0;_0x1308c6<_0x265d48['Agents']['length'];_0x1308c6+=0x1){_0x111dbe[_0x2e3f30](util['format']('user:%s',_0x265d48['Agents'][_0x1308c6][_0x7c0d('0x2')]));}}}function joinOrLeave(_0x2997a7,_0x1c7b84,_0x2f657e){var _0x1ef191;if(_0x2997a7[_0x7c0d('0x1c')][_0x7c0d('0x1d')]['id']){db['User'][_0x7c0d('0x1e')]({'attributes':['id',_0x7c0d('0x2'),'role','userProfileId'],'where':{'id':_0x2997a7[_0x7c0d('0x1c')]['query']['id']},'include':[{'model':db[_0x7c0d('0x1f')],'as':_0x7c0d('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x21')],'as':_0x7c0d('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x23')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x24')],'as':_0x7c0d('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x26')],'as':_0x7c0d('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x7c0d('0x9')](function(_0x553627){if(_0x553627){_0x1ef191=_0x553627;_0x2997a7[_0x1c7b84](util[_0x7c0d('0x1a')](_0x7c0d('0x29'),_0x553627[_0x7c0d('0x2')]));var _0x5aa43a=[];switch(_0x553627[_0x7c0d('0x5')]){case _0x7c0d('0x2a'):_0x2997a7[_0x1c7b84]('voice:inbound');_0x2997a7[_0x1c7b84](_0x7c0d('0x2b'));if(queryQueues['hasOwnProperty'](_0x7c0d('0x2c'))){delete queryQueues[_0x7c0d('0x2c')];}_0x5aa43a['push'](db['VoiceQueue'][_0x7c0d('0x10')](queryQueues));_0x5aa43a['push'](db[_0x7c0d('0x2d')][_0x7c0d('0x10')](queryQueues));_0x5aa43a['push'](db['FaxQueue']['findAll'](queryQueues));_0x5aa43a['push'](db[_0x7c0d('0x2e')]['findAll'](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x30')]['findAll'](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x31')][_0x7c0d('0x10')](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db['WhatsappQueue'][_0x7c0d('0x10')](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x4')][_0x7c0d('0x10')](queryTelephones));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x32')][_0x7c0d('0x10')](queryTrunks));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x18')][_0x7c0d('0x10')](queryCampaigns));_0x5aa43a['push'](db[_0x7c0d('0x4')][_0x7c0d('0x10')](queryAgents));break;case'user':_0x2997a7[_0x1c7b84](_0x7c0d('0x33'));_0x2997a7[_0x1c7b84](_0x7c0d('0x2b'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0xa'),_0x553627[_0x7c0d('0x34')],_0x7c0d('0x35')));_0x5aa43a['push'](getAssociatedResources(_0x7c0d('0xb'),_0x553627[_0x7c0d('0x34')],_0x7c0d('0x2d')));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0x36'),_0x553627['userProfileId'],'FaxQueue'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0xc'),_0x553627['userProfileId'],_0x7c0d('0x2e')));_0x5aa43a['push'](getAssociatedResources(_0x7c0d('0xd'),_0x553627[_0x7c0d('0x34')],'MailQueue'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources('OpenchannelQueues',_0x553627[_0x7c0d('0x34')],_0x7c0d('0x31')));_0x5aa43a['push'](getAssociatedResources('WhatsappQueues',_0x553627['userProfileId'],_0x7c0d('0x37')));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0x11'),_0x553627[_0x7c0d('0x34')],'User'));_0x5aa43a['push'](getAssociatedResources(_0x7c0d('0x12'),_0x553627['userProfileId'],'Trunk'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources('IvrCampaigns',_0x553627[_0x7c0d('0x34')],_0x7c0d('0x18')));_0x5aa43a['push'](db[_0x7c0d('0x4')][_0x7c0d('0x10')](queryAgents));break;case _0x7c0d('0x6'):_0x2997a7[_0x1c7b84](_0x7c0d('0x33'));_0x2997a7[_0x1c7b84](_0x7c0d('0x2b'));_0x5aa43a['push'](_0x553627[_0x7c0d('0x38')]({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a['push'](_0x553627[_0x7c0d('0x39')]({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627[_0x7c0d('0x3a')]({'attributes':['id','name']}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627[_0x7c0d('0x3b')]({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627[_0x7c0d('0x3c')]({'attributes':['id','name']}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627['getOpenchannelQueues']({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a['push'](_0x553627[_0x7c0d('0x3d')]({'attributes':['id',_0x7c0d('0x2')]}));break;}return BPromise[_0x7c0d('0x3e')](_0x5aa43a);}})[_0x7c0d('0x9')](function(_0x1d9ced){if(_0x1d9ced&&_0x1d9ced['length']){for(var _0x214303=0x0;_0x214303<_0x1d9ced['length'];_0x214303+=0x1){for(var _0x20f0ec=0x0;_0x20f0ec<_0x1d9ced[_0x214303][_0x7c0d('0x3f')];_0x20f0ec+=0x1){switch(_0x214303){case 0x0:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x40'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x1:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,'chat',_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x2:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x41'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x3:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,'sms',_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x4:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,'mail',_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x5:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x42'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x6:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x43'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x7:if(_0x1ef191[_0x7c0d('0x5')]!=='agent')_0x2997a7[_0x1c7b84](util[_0x7c0d('0x1a')](_0x7c0d('0x44'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x2')]));break;case 0x8:if(_0x1ef191['role']!==_0x7c0d('0x6'))_0x2997a7[_0x1c7b84](util[_0x7c0d('0x1a')](_0x7c0d('0x45'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x2')]));break;case 0x9:if(_0x1ef191[_0x7c0d('0x5')]!=='agent')_0x2997a7[_0x1c7b84](util['format'](_0x7c0d('0x46'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x19')],_0x1d9ced[_0x214303][_0x20f0ec]['name']));break;case 0xa:_0x2997a7[_0x1c7b84](util['format'](_0x7c0d('0x29'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x2')]));break;}}}}})[_0x7c0d('0x9')](function(){if(_0x1c7b84==='leave'){var _0x352e7e=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x20')],'id');return _0x1ef191[_0x7c0d('0x48')](_0x352e7e)[_0x7c0d('0x9')](function(){for(var _0x449841=0x0;_0x449841<_0x352e7e['length'];_0x449841+=0x1){_0x2f657e['emit'](_0x7c0d('0x49'),{'ChatInteractionId':Number(_0x352e7e[_0x449841]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x4a5837=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x22')],'id');return _0x1ef191[_0x7c0d('0x4b')](_0x4a5837)[_0x7c0d('0x9')](function(){for(var _0x4c81fb=0x0;_0x4c81fb<_0x4a5837[_0x7c0d('0x3f')];_0x4c81fb+=0x1){_0x2f657e[_0x7c0d('0x4c')](_0x7c0d('0x4d'),{'MailInteractionId':Number(_0x4a5837[_0x4c81fb]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x5e76ec=_['map'](_0x1ef191[_0x7c0d('0x4e')],'id');return _0x1ef191[_0x7c0d('0x4f')](_0x5e76ec)[_0x7c0d('0x9')](function(){for(var _0x3f3abc=0x0;_0x3f3abc<_0x5e76ec[_0x7c0d('0x3f')];_0x3f3abc+=0x1){_0x2f657e['emit'](_0x7c0d('0x50'),{'FaxInteractionId':Number(_0x5e76ec[_0x3f3abc]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x55efe6=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x25')],'id');return _0x1ef191['removeSmsInteractions'](_0x55efe6)[_0x7c0d('0x9')](function(){for(var _0x446c20=0x0;_0x446c20<_0x55efe6[_0x7c0d('0x3f')];_0x446c20+=0x1){_0x2f657e[_0x7c0d('0x4c')](_0x7c0d('0x51'),{'SmsInteractionId':Number(_0x55efe6[_0x446c20]),'UserId':Number(_0x1ef191['id'])});}});}})['then'](function(){if(_0x1c7b84==='leave'){var _0x5bfc8d=_[_0x7c0d('0x47')](_0x1ef191['OpenchannelInteractions'],'id');return _0x1ef191[_0x7c0d('0x52')](_0x5bfc8d)[_0x7c0d('0x9')](function(){for(var _0x293344=0x0;_0x293344<_0x5bfc8d['length'];_0x293344+=0x1){_0x2f657e[_0x7c0d('0x4c')](_0x7c0d('0x53'),{'OpenchannelInteractionId':Number(_0x5bfc8d[_0x293344]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x4bd3b4=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x54')],'id');return _0x1ef191[_0x7c0d('0x55')](_0x4bd3b4)[_0x7c0d('0x9')](function(){for(var _0x557d74=0x0;_0x557d74<_0x4bd3b4[_0x7c0d('0x3f')];_0x557d74+=0x1){_0x2f657e['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x4bd3b4[_0x557d74]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x56')](function(_0x18f2a3){_0x2997a7[_0x7c0d('0x57')](_0x18f2a3);});}}function onDisconnect(_0x4ce477,_0x87b741){joinOrLeave(_0x4ce477,_0x7c0d('0x4a'),_0x87b741);}function onConnect(_0x4b4396){joinOrLeave(_0x4b4396,_0x7c0d('0x58'));}exports[_0x7c0d('0x59')]=function(_0x22b065){_0x22b065['on']('connection',function(_0x50a24b){_0x50a24b[_0x7c0d('0x5a')](0x0);_0x50a24b[_0x7c0d('0x5b')]=_0x50a24b[_0x7c0d('0x5c')][_0x7c0d('0x5d')][_0x7c0d('0x5e')]+':'+_0x50a24b[_0x7c0d('0x5c')][_0x7c0d('0x5d')][_0x7c0d('0x5f')];_0x50a24b['connectedAt']=new Date();_0x50a24b[_0x7c0d('0x57')]=function(_0x415216){console['log'](_0x7c0d('0x60')+_0x50a24b['nsp'][_0x7c0d('0x2')]+'['+_0x50a24b['address']+']',_0x415216);};_0x50a24b['on']('disconnect',function(){onDisconnect(_0x50a24b,_0x22b065);_0x50a24b['log'](_0x7c0d('0x61'));});onConnect(_0x50a24b);_0x50a24b[_0x7c0d('0x57')](_0x7c0d('0x62'));});};
\ No newline at end of file
index 7593c5b..a1f30f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29f0=['Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','info','Trigger,\x20%s','error','catch','get','channel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','query','Sequelize','QueryTypes','SELECT','UserId','User','interface','format','SIP/%s','agent','outgoingmessage','sequelize','changed','closed','contact','find','fullname','email','name','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','../../mysqldb','../logger','triggers','lodash','client','Chat','afterCreate','ChatMessage','newmessage','Sms','newinteraction','SmsInteraction','afterUpdate','closedinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage'];(function(_0x5c0b3d,_0x486ae0){var _0xe64475=function(_0xdc4be9){while(--_0xdc4be9){_0x5c0b3d['push'](_0x5c0b3d['shift']());}};_0xe64475(++_0x486ae0);}(_0x29f0,0x1b5));var _0x029f=function(_0x576d75,_0x68aa41){_0x576d75=_0x576d75-0x0;var _0x9d2cf5=_0x29f0[_0x576d75];return _0x9d2cf5;};'use strict';var util=require('util');var db=require(_0x029f('0x0'))['db'];var jayson=require('jayson/promise');var logger=require(_0x029f('0x1'))(_0x029f('0x2'));var _=require(_0x029f('0x3'));var client=jayson[_0x029f('0x4')]['http']({'port':0x232a});var triggers=[{'channel':_0x029f('0x5'),'model':'ChatInteraction','event':_0x029f('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x029f('0x5'),'model':'ChatInteraction','event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x029f('0x5'),'model':_0x029f('0x7'),'event':_0x029f('0x6'),'condition':_0x029f('0x8'),'callback':afterCreateMessage},{'channel':_0x029f('0x9'),'model':'SmsInteraction','event':_0x029f('0x6'),'condition':_0x029f('0xa'),'callback':afterCreate},{'channel':_0x029f('0x9'),'model':_0x029f('0xb'),'event':_0x029f('0xc'),'condition':_0x029f('0xd'),'callback':afterUpdate},{'channel':_0x029f('0x9'),'model':_0x029f('0xe'),'event':_0x029f('0x6'),'condition':_0x029f('0x8'),'callback':afterCreateMessage},{'channel':_0x029f('0xf'),'model':'WhatsappInteraction','event':_0x029f('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':'Whatsapp','model':_0x029f('0x10'),'event':_0x029f('0xc'),'condition':_0x029f('0xd'),'callback':afterUpdate},{'channel':_0x029f('0xf'),'model':_0x029f('0x11'),'event':'afterCreate','condition':_0x029f('0x8'),'callback':afterCreateMessage},{'channel':_0x029f('0x12'),'model':_0x029f('0x13'),'event':'afterCreate','condition':_0x029f('0xa'),'callback':afterCreate},{'channel':_0x029f('0x12'),'model':_0x029f('0x13'),'event':_0x029f('0xc'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x029f('0x12'),'model':_0x029f('0x14'),'event':_0x029f('0x6'),'condition':_0x029f('0x8'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x029f('0x15'),'event':_0x029f('0x6'),'condition':_0x029f('0xa'),'callback':afterCreate},{'channel':_0x029f('0x16'),'model':_0x029f('0x15'),'event':_0x029f('0xc'),'condition':_0x029f('0xd'),'callback':afterUpdate},{'channel':_0x029f('0x16'),'model':_0x029f('0x17'),'event':_0x029f('0x6'),'condition':_0x029f('0x8'),'callback':afterCreateMessage},{'channel':_0x029f('0x18'),'model':_0x029f('0x19'),'event':'afterCreate','condition':_0x029f('0xa'),'callback':afterCreate},{'channel':'Openchannel','model':_0x029f('0x19'),'event':_0x029f('0xc'),'condition':_0x029f('0xd'),'callback':afterUpdate},{'channel':_0x029f('0x18'),'model':'OpenchannelMessage','event':_0x029f('0x6'),'condition':_0x029f('0x8'),'callback':afterCreateMessage}];function request(_0x53223b){return client[_0x029f('0x1a')](_0x029f('0x1b'),_0x53223b)[_0x029f('0x1c')](function(_0x56087e){logger[_0x029f('0x1d')](_0x029f('0x1e'),_0x029f('0x1b'),_0x56087e);if(_0x56087e[_0x029f('0x1f')]){if(_0x56087e[_0x029f('0x1f')]['code']===0x1f4){logger[_0x029f('0x1f')](_0x029f('0x1e'),'EventManager',_0x56087e[_0x029f('0x1f')]);}}})[_0x029f('0x20')](function(_0x5aa16a){logger[_0x029f('0x1f')](_0x029f('0x1e'),_0x029f('0x1b'),_0x5aa16a);});}function afterCreateMessage(_0xc3ff56,_0x1f2cf8){return function(_0x4f96b8,_0x34bf5b){_0x4f96b8=_0x4f96b8[_0x029f('0x21')]({'plain':!![]});_0x4f96b8[_0x029f('0x22')]=_0xc3ff56;_0x4f96b8[_0x029f('0x23')]=_0x4f96b8[_0x029f('0x24')];var _0x3ded5f=_0x029f('0x25')+_0x4f96b8[_0x029f('0x26')];return db['sequelize'][_0x029f('0x27')](_0x3ded5f,{'type':db[_0x029f('0x28')][_0x029f('0x29')][_0x029f('0x2a')],'raw':!![]})[_0x029f('0x1c')](function(_0xeae341){return _0xeae341;})['then'](function(_0x2d42d4){if(_0x2d42d4){_0x4f96b8['contact']=_0x2d42d4[0x0];}if(_0x4f96b8[_0x029f('0x2b')]){return db[_0x029f('0x2c')]['find']({'where':{'id':_0x4f96b8[_0x029f('0x2b')]},'attributes':['id','name','fullname','email','internal'],'raw':!![]})[_0x029f('0x1c')](function(_0x54a4dd){_0x4f96b8[_0x029f('0x2d')]=util[_0x029f('0x2e')](_0x029f('0x2f'),_0x54a4dd['name']);_0x4f96b8[_0x029f('0x22')]=_0xc3ff56;_0x4f96b8[_0x029f('0x30')]=_0x54a4dd;return request({'event':'incomingmessage','message':_0x4f96b8});})['catch'](function(_0x87434b){console[_0x029f('0x1f')](_0x87434b);});}else{return request({'event':_0x029f('0x31'),'message':_0x4f96b8});}});};}function afterCreate(_0x5b93c1,_0x1f233d){return function(_0x8ad3c3,_0x5e6885){_0x8ad3c3=_0x8ad3c3[_0x029f('0x21')]({'plain':!![]});_0x8ad3c3[_0x029f('0x22')]=_0x5b93c1;_0x8ad3c3[_0x029f('0x23')]='opened';var _0x206a64='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x8ad3c3['ContactId'];return db[_0x029f('0x32')][_0x029f('0x27')](_0x206a64,{'type':db[_0x029f('0x28')][_0x029f('0x29')]['SELECT'],'raw':!![]})[_0x029f('0x1c')](function(_0x6fb12a){return _0x6fb12a;})[_0x029f('0x1c')](function(_0x2df884){if(_0x2df884){_0x8ad3c3['contact']=_0x2df884[0x0];}return request({'event':_0x1f233d,'message':_0x8ad3c3});});};}function afterUpdate(_0x3f6c94,_0x41c424){return function(_0x296c9d,_0x1cf254){if(_0x296c9d[_0x029f('0x33')](_0x029f('0x34'))&&_0x296c9d[_0x029f('0x34')]){_0x296c9d=_0x296c9d[_0x029f('0x21')]({'plain':!![]});_0x296c9d['channel']=_0x3f6c94;_0x296c9d[_0x029f('0x23')]=_0x029f('0x34');var _0x37b77e=_0x029f('0x25')+_0x296c9d[_0x029f('0x26')];return db['sequelize'][_0x029f('0x27')](_0x37b77e,{'type':db[_0x029f('0x28')][_0x029f('0x29')]['SELECT'],'raw':!![]})[_0x029f('0x1c')](function(_0x4a5b7f){return _0x4a5b7f;})[_0x029f('0x1c')](function(_0x1ed994){if(_0x1ed994){_0x296c9d[_0x029f('0x35')]=_0x1ed994[0x0];}if(_0x296c9d['UserId']){return db[_0x029f('0x2c')][_0x029f('0x36')]({'where':{'id':_0x296c9d[_0x029f('0x2b')]},'attributes':['id','name',_0x029f('0x37'),_0x029f('0x38'),'internal'],'raw':!![]})['then'](function(_0x595e07){_0x296c9d[_0x029f('0x2d')]=util[_0x029f('0x2e')](_0x029f('0x2f'),_0x595e07[_0x029f('0x39')]);_0x296c9d['agent']=_0x595e07;return request({'event':_0x41c424,'message':_0x296c9d});})[_0x029f('0x20')](function(_0x5e9cbe){console[_0x029f('0x1f')](_0x5e9cbe);});}else{return request({'event':_0x41c424,'message':_0x296c9d});}});}};}exports['default']=function(){for(var _0x54b7b8=0x0;_0x54b7b8<triggers[_0x029f('0x3a')];_0x54b7b8+=0x1){if(db[_0x029f('0x3b')](triggers[_0x54b7b8]['model'])){db[triggers[_0x54b7b8][_0x029f('0x3c')]][_0x029f('0x3d')](triggers[_0x54b7b8][_0x029f('0x23')],triggers[_0x54b7b8][_0x029f('0x3e')](triggers[_0x54b7b8][_0x029f('0x22')][_0x029f('0x3f')](),triggers[_0x54b7b8][_0x029f('0x40')]));}}};
\ No newline at end of file
+var _0x306f=['info','Trigger,\x20%s','error','code','catch','get','channel','event','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','SELECT','User','find','UserId','fullname','email','interface','SIP/%s','name','agent','incomingmessage','outgoingmessage','motionChannel','QueryTypes','contact','closed','internal','length','hasOwnProperty','model','toLowerCase','util','../../mysqldb','jayson/promise','../logger','triggers','client','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','WhatsappMessage','FaxInteraction','Fax','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x306f,0x1e9));var _0xf306=function(_0x3907a3,_0x21b55e){_0x3907a3=_0x3907a3-0x0;var _0x53ea7f=_0x306f[_0x3907a3];return _0x53ea7f;};'use strict';var util=require(_0xf306('0x0'));var db=require(_0xf306('0x1'))['db'];var jayson=require(_0xf306('0x2'));var logger=require(_0xf306('0x3'))(_0xf306('0x4'));var _=require('lodash');var client=jayson[_0xf306('0x5')]['http']({'port':0x232a});var triggers=[{'channel':_0xf306('0x6'),'model':_0xf306('0x7'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0x6'),'model':'ChatInteraction','event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':'Chat','model':_0xf306('0xc'),'event':'afterCreate','condition':_0xf306('0xd'),'callback':afterCreateMessage},{'channel':_0xf306('0xe'),'model':_0xf306('0xf'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0xe'),'model':_0xf306('0xf'),'event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0xe'),'model':'SmsMessage','event':_0xf306('0x8'),'condition':_0xf306('0xd'),'callback':afterCreateMessage},{'channel':_0xf306('0x10'),'model':_0xf306('0x11'),'event':'afterCreate','condition':_0xf306('0x9'),'callback':afterCreate},{'channel':'Whatsapp','model':'WhatsappInteraction','event':'afterUpdate','condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x10'),'model':_0xf306('0x12'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':'Fax','model':_0xf306('0x13'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0x14'),'model':'FaxInteraction','event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x14'),'model':_0xf306('0x15'),'event':_0xf306('0x8'),'condition':_0xf306('0xd'),'callback':afterCreateMessage},{'channel':_0xf306('0x16'),'model':_0xf306('0x17'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0x16'),'model':_0xf306('0x17'),'event':'afterUpdate','condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x16'),'model':_0xf306('0x18'),'event':_0xf306('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xf306('0x19'),'model':_0xf306('0x1a'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':'Openchannel','model':_0xf306('0x1a'),'event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x19'),'model':_0xf306('0x1b'),'event':_0xf306('0x8'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x2a63b8){return client[_0xf306('0x1c')](_0xf306('0x1d'),_0x2a63b8)[_0xf306('0x1e')](function(_0x251820){logger[_0xf306('0x1f')](_0xf306('0x20'),_0xf306('0x1d'),_0x251820);if(_0x251820[_0xf306('0x21')]){if(_0x251820['error'][_0xf306('0x22')]===0x1f4){logger[_0xf306('0x21')](_0xf306('0x20'),'EventManager',_0x251820[_0xf306('0x21')]);}}})[_0xf306('0x23')](function(_0x5b4712){logger[_0xf306('0x21')](_0xf306('0x20'),'EventManager',_0x5b4712);});}function afterCreateMessage(_0x268655,_0x56b1f7){return function(_0x2b669b,_0x25693e){_0x2b669b=_0x2b669b[_0xf306('0x24')]({'plain':!![]});_0x2b669b[_0xf306('0x25')]=_0x268655;_0x2b669b['motionChannel']=_0x268655;_0x2b669b[_0xf306('0x26')]=_0x2b669b['direction'];var _0x466428=_0xf306('0x27')+_0x2b669b[_0xf306('0x28')];return db[_0xf306('0x29')][_0xf306('0x2a')](_0x466428,{'type':db[_0xf306('0x2b')]['QueryTypes'][_0xf306('0x2c')],'raw':!![]})[_0xf306('0x1e')](function(_0x1e7739){return _0x1e7739;})[_0xf306('0x1e')](function(_0x7c55b2){if(_0x7c55b2){_0x2b669b['contact']=_0x7c55b2[0x0];}if(_0x2b669b['UserId']){return db[_0xf306('0x2d')][_0xf306('0x2e')]({'where':{'id':_0x2b669b[_0xf306('0x2f')]},'attributes':['id','name',_0xf306('0x30'),_0xf306('0x31'),'internal'],'raw':!![]})[_0xf306('0x1e')](function(_0x18701d){_0x2b669b[_0xf306('0x32')]=util['format'](_0xf306('0x33'),_0x18701d[_0xf306('0x34')]);_0x2b669b[_0xf306('0x25')]=_0x268655;_0x2b669b[_0xf306('0x35')]=_0x18701d;return request({'event':_0xf306('0x36'),'message':_0x2b669b});})['catch'](function(_0x798460){console[_0xf306('0x21')](_0x798460);});}else{return request({'event':_0xf306('0x37'),'message':_0x2b669b});}});};}function afterCreate(_0x49ea7e,_0x579a00){return function(_0x8a6e9c,_0x1e0fe5){_0x8a6e9c=_0x8a6e9c[_0xf306('0x24')]({'plain':!![]});_0x8a6e9c[_0xf306('0x25')]=_0x49ea7e;_0x8a6e9c[_0xf306('0x38')]=_0x49ea7e;_0x8a6e9c[_0xf306('0x26')]='opened';var _0x5c8fe0=_0xf306('0x27')+_0x8a6e9c[_0xf306('0x28')];return db[_0xf306('0x29')][_0xf306('0x2a')](_0x5c8fe0,{'type':db[_0xf306('0x2b')][_0xf306('0x39')][_0xf306('0x2c')],'raw':!![]})['then'](function(_0x8a9dad){return _0x8a9dad;})[_0xf306('0x1e')](function(_0x2a51cf){if(_0x2a51cf){_0x8a6e9c[_0xf306('0x3a')]=_0x2a51cf[0x0];}return request({'event':_0x579a00,'message':_0x8a6e9c});});};}function afterUpdate(_0xc9f980,_0x35e120){return function(_0x154697,_0x5b4fe6){if(_0x154697['changed'](_0xf306('0x3b'))&&_0x154697[_0xf306('0x3b')]){_0x154697=_0x154697[_0xf306('0x24')]({'plain':!![]});_0x154697[_0xf306('0x25')]=_0xc9f980;_0x154697[_0xf306('0x38')]=_0xc9f980;_0x154697[_0xf306('0x26')]=_0xf306('0x3b');var _0x1e2384=_0xf306('0x27')+_0x154697[_0xf306('0x28')];return db[_0xf306('0x29')][_0xf306('0x2a')](_0x1e2384,{'type':db[_0xf306('0x2b')][_0xf306('0x39')][_0xf306('0x2c')],'raw':!![]})['then'](function(_0x278768){return _0x278768;})['then'](function(_0x15dbf6){if(_0x15dbf6){_0x154697[_0xf306('0x3a')]=_0x15dbf6[0x0];}if(_0x154697['UserId']){return db[_0xf306('0x2d')][_0xf306('0x2e')]({'where':{'id':_0x154697[_0xf306('0x2f')]},'attributes':['id','name',_0xf306('0x30'),_0xf306('0x31'),_0xf306('0x3c')],'raw':!![]})[_0xf306('0x1e')](function(_0x7a1518){_0x154697[_0xf306('0x32')]=util['format'](_0xf306('0x33'),_0x7a1518['name']);_0x154697['agent']=_0x7a1518;return request({'event':_0x35e120,'message':_0x154697});})[_0xf306('0x23')](function(_0x58f519){console['error'](_0x58f519);});}else{return request({'event':_0x35e120,'message':_0x154697});}});}};}exports['default']=function(){for(var _0x2b78c7=0x0;_0x2b78c7<triggers[_0xf306('0x3d')];_0x2b78c7+=0x1){if(db[_0xf306('0x3e')](triggers[_0x2b78c7][_0xf306('0x3f')])){db[triggers[_0x2b78c7]['model']]['hook'](triggers[_0x2b78c7]['event'],triggers[_0x2b78c7]['callback'](triggers[_0x2b78c7][_0xf306('0x25')][_0xf306('0x40')](),triggers[_0x2b78c7]['condition']));}}};
\ No newline at end of file
index d835428..0f2a494 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e7b=['getLicense','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','chat','fax','sms','openchannel','toLowerCase','blockedAt','updateAttributes'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x4e7b,0x1b7));var _0xb4e7=function(_0x5a3b6f,_0xae57ea){_0x5a3b6f=_0x5a3b6f-0x0;var _0x219c8a=_0x4e7b[_0x5a3b6f];return _0x219c8a;};'use strict';var _=require(_0xb4e7('0x0'));var BPromise=require(_0xb4e7('0x1'));var db=require('../mysqldb')['db'];var util=require('./license/util');var channels=['voice','mail',_0xb4e7('0x2'),_0xb4e7('0x3'),_0xb4e7('0x4'),'whatsapp',_0xb4e7('0x5')];exports['getChannels']=function(){return channels;};exports['isValidChannel']=function(_0x2861cd){_0x2861cd=_0x2861cd[_0xb4e7('0x6')]();return _['includes'](channels,_0x2861cd);};exports['clearBlockUser']=function(_0x112563,_0x574811,_0x34f1f0,_0x3a971e){var _0xa54a62={'loginAttempts':_0x574811,'blocked':_0x34f1f0};if(!_['isUndefined'](_0x3a971e)){_0xa54a62[_0xb4e7('0x7')]=_0x3a971e;}return _0x112563[_0xb4e7('0x8')](_0xa54a62);};exports[_0xb4e7('0x9')]=function(_0x57fba1){return new BPromise(function(_0x3ba051,_0x3551d4){var _0x3e34af=0x0;if(_0x57fba1['role']!==_0xb4e7('0xa')){_0x3ba051(_0x57fba1);}db[_0xb4e7('0xb')]['count']({'where':{'role':_0xb4e7('0xa'),'online':!![],'id':{'$ne':_0x57fba1['id']}}})[_0xb4e7('0xc')](function(_0x56b33f){_0x3e34af=_0x56b33f;return util['getLicense']();})[_0xb4e7('0xc')](function(_0x2aae5d){if(_0x2aae5d&&_0x2aae5d[_0xb4e7('0xd')]&&_0x3e34af>=_0x2aae5d[_0xb4e7('0xd')]){throw Error(_0xb4e7('0xe'));}_0x3ba051(_0x57fba1);})[_0xb4e7('0xf')](function(_0x399bef){_0x3551d4(_0x399bef);});});};
\ No newline at end of file
+var _0xd63d=['bluebird','./license/util','voice','mail','chat','openchannel','isValidChannel','clearBlockUser','blockedAt','updateAttributes','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0xd63d,0xb4));var _0xdd63=function(_0x5f49c0,_0x27a1b4){_0x5f49c0=_0x5f49c0-0x0;var _0x5ab653=_0xd63d[_0x5f49c0];return _0x5ab653;};'use strict';var _=require('lodash');var BPromise=require(_0xdd63('0x0'));var db=require('../mysqldb')['db'];var util=require(_0xdd63('0x1'));var channels=[_0xdd63('0x2'),_0xdd63('0x3'),_0xdd63('0x4'),'fax','sms','whatsapp',_0xdd63('0x5')];exports['getChannels']=function(){return channels;};exports[_0xdd63('0x6')]=function(_0x829a2a){_0x829a2a=_0x829a2a['toLowerCase']();return _['includes'](channels,_0x829a2a);};exports[_0xdd63('0x7')]=function(_0x3cf0da,_0x3a4088,_0x412758,_0x48e900){var _0x5aac00={'loginAttempts':_0x3a4088,'blocked':_0x412758};if(!_['isUndefined'](_0x48e900)){_0x5aac00[_0xdd63('0x8')]=_0x48e900;}return _0x3cf0da[_0xdd63('0x9')](_0x5aac00);};exports[_0xdd63('0xa')]=function(_0x54dc5a){return new BPromise(function(_0x26fb9e,_0x38737a){var _0x3f41c6=0x0;if(_0x54dc5a[_0xdd63('0xb')]!==_0xdd63('0xc')){_0x26fb9e(_0x54dc5a);}db[_0xdd63('0xd')][_0xdd63('0xe')]({'where':{'role':_0xdd63('0xc'),'online':!![],'id':{'$ne':_0x54dc5a['id']}}})[_0xdd63('0xf')](function(_0x5e6261){_0x3f41c6=_0x5e6261;return util[_0xdd63('0xa')]();})[_0xdd63('0xf')](function(_0x3c2212){if(_0x3c2212&&_0x3c2212[_0xdd63('0x10')]&&_0x3f41c6>=_0x3c2212[_0xdd63('0x10')]){throw Error(_0xdd63('0x11'));}_0x26fb9e(_0x54dc5a);})['catch'](function(_0x265077){_0x38737a(_0x265077);});});};
\ No newline at end of file
index 3ef0701..f790cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca73=['json','send','exports','404','status','render'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0xca73,0x1ee));var _0x3ca7=function(_0x2aa91e,_0x380411){_0x2aa91e=_0x2aa91e-0x0;var _0x1c8143=_0xca73[_0x2aa91e];return _0x1c8143;};'use strict';module[_0x3ca7('0x0')][0x194]=function pageNotFound(_0x2d3315,_0x5aa2fb){var _0x375d9c=_0x3ca7('0x1');var _0xeadd3c=0x194;var _0x9404fa={'status':_0xeadd3c};_0x5aa2fb[_0x3ca7('0x2')](_0x9404fa[_0x3ca7('0x2')]);_0x5aa2fb[_0x3ca7('0x3')](_0x375d9c,{},function(_0x3c9c5d,_0x2460b5){if(_0x3c9c5d){return _0x5aa2fb[_0x3ca7('0x2')](_0x9404fa['status'])[_0x3ca7('0x4')](_0x9404fa);}_0x5aa2fb[_0x3ca7('0x5')](_0x2460b5);});};
\ No newline at end of file
+var _0x5d0e=['exports','status','render','send'];(function(_0x2375ae,_0x3f62f3){var _0x49585e=function(_0x416109){while(--_0x416109){_0x2375ae['push'](_0x2375ae['shift']());}};_0x49585e(++_0x3f62f3);}(_0x5d0e,0x78));var _0xe5d0=function(_0xf4843e,_0xa0fe51){_0xf4843e=_0xf4843e-0x0;var _0x244bb3=_0x5d0e[_0xf4843e];return _0x244bb3;};'use strict';module[_0xe5d0('0x0')][0x194]=function pageNotFound(_0x22260f,_0x5a7e63){var _0x302148='404';var _0x2e6083=0x194;var _0x2b9e91={'status':_0x2e6083};_0x5a7e63['status'](_0x2b9e91[_0xe5d0('0x1')]);_0x5a7e63[_0xe5d0('0x2')](_0x302148,{},function(_0x1f2d32,_0x56b1e4){if(_0x1f2d32){return _0x5a7e63['status'](_0x2b9e91[_0xe5d0('0x1')])['json'](_0x2b9e91);}_0x5a7e63[_0xe5d0('0x3')](_0x56b1e4);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
new file mode 100644 (file)
index 0000000..4b91344
--- /dev/null
@@ -0,0 +1,166 @@
+'use strict';\r
+\r
+var BPromise = require('bluebird');\r
+var util = require('util');\r
+\r
+var logger = require('../config/logger')('migration');\r
+\r
+var Sequence = function() {};\r
+\r
+Sequence.prototype.enqueue = function(fn) {\r
+  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
+};\r
+\r
+var Migration = function(queryInterface) {\r
+  this.queryInterface = queryInterface;\r
+  this.sequence = new Sequence();\r
+};\r
+\r
+Migration.prototype.changeColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .changeColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Changed column %s in table %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Added column %s to %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.dropTable = function(table) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .dropTable(table, {\r
+        force: true\r
+      })\r
+      .then(function() {\r
+        logger.info('table dropped %s', table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addIndex = function(table, column, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addIndex(table, column, {\r
+        indexName: indexName\r
+      })\r
+      .then(function() {\r
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeIndex = function(table, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeIndex(table, indexName)\r
+      .then(function() {\r
+        logger.info('removeIndex %s %s', table, indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.query = function(sql) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface.sequelize\r
+      .query(sql)\r
+      .then(function() {\r
+        logger.info('query %s', sql);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeColumn = function(table, column) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeColumn(table, column)\r
+      .then(function() {\r
+        logger.info('Removed column %s from %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .renameColumn(table, oldColumn, newColumn)\r
+      .then(function() {\r
+        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.final = function(resolve) {\r
+  this.sequence.enqueue(function() {\r
+    return resolve();\r
+  });\r
+};\r
+\r
+module.exports = {\r
+  up: function(queryInterface, Sequelize) {\r
+    return new BPromise(function(resolve) {\r
+      var migration = new Migration(queryInterface);\r
+      migration.query('ALTER TABLE cm_contacts DROP FOREIGN KEY cm_contacts_ibfk_2');\r
+      migration.query('ALTER TABLE cm_contacts ADD CONSTRAINT cm_contacts_ibfk_2 FOREIGN KEY (ListId) REFERENCES cm_lists(id) ON DELETE RESTRICT ON UPDATE RESTRICT');\r
+      // START FINAL\r
+      migration.final(resolve);\r
+      // END FINAL\r
+    });\r
+  },\r
+\r
+  down: function(queryInterface, Sequelize) {\r
+    // var migration = new Migration(queryInterface);\r
+  }\r
+};
\ No newline at end of file
index 2f20fba..2fc3905 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662a=['UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','User','hasOne','cascade','UserId','hasMany','Recordings','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_chat_interactions','FaxInteraction','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','ChatQueues','UserChatQueue','SmsQueues','UserSmsQueue','OpenchannelQueues','WhatsappQueues','UserWhatsappQueue','VoicePrefixes','ChatWebsites','FaxAccounts','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccount','user_has_openchannel_accounts','SmsAccounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Applications','Sound','Sounds','Members','VoiceQueueId','CmHopper','CmHopperBlack','HopperBlacks','Trunk','TrunkId','TrunkBackup','mandatoryDispositionPauseId','Agents','Teams','BlackLists','Messages','mailbox','mailboxuser','uniqueid','VoiceAgentReport','Contact','ContactId','MailAccountId','Imap','Smtp','Answers','Interactions','List','Template','TemplateId','mandatoryDispositionPause','MailQueue','team_has_mail_queues','MailInteractionId','Account','Owner','Tag','mail_interaction_has_tags','Tags','ThroughTags','user_has_mail_interactions','Attachment','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','restrict','IntervalId','TagId','ListId','Dispositions','FaxAccountId','FaxApplication','Exntensions','FaxMessage','FaxInteractionId','fax_interaction_has_tags','user_has_fax_interactions','AttachmentId','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsApplication','SmsInteractionId','sms_interaction_has_tags','Users','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_chat_websites','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatOfflineMessageId','team_has_chat_queues','chat_group_has_users','CmCompany','CompanyId','JscriptySessions','Company','cm_contact_has_tags','CampaignId','OwnerId','All','OneAll','AutomationAllId','Any','Actions','AutomationId','ParentId','MailApplications','ChatApplications','FaxApplications','DefaultReportId','CustomReportId','moh_has_sounds','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','MetricId','Configurations','AccountId','Subjects','Descriptions','DescriptionId','Fields','Subject','SubjectId','FieldId','VariableId','SugarcrmField','Description','Field','int_desk_configuration_has_tags','ZohoConfiguration','ZohoField','int_zendesk_configuration_has_tags','FreshdeskField','int_freshdesk_configuration_has_tags','VtigerAccount','VtigerConfiguration','FromId','ToId','ProjectId','user_has_teams','team_has_whatsapp_queues','HopperHistories','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToAgent','ToMailQueueId','ToAccount','ChatTransferReport','FromChatWebsiteId','ToUserId','ToChatQueueId','ToQueue','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToSmsQueueId','ToSmsAccountId','CmCustomField','HopperHistory','Queues','voice_queues_has_cm_lists','VoicePrefix','user_has_voice_prefixes','UserProfileSection','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','sequelize','lodash','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','database','options','password','import','../api/user/user.model','VoiceChanSpy','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','VoiceRecording','ScreenRecording','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserMailQueue','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','Schedule','../api/sound/sound.model','../api/tag/tag.model','../api/template/template.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZendeskAccount','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','SquareMessage','Team','../api/team/team.model','License','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','../api/attachment/attachment.model','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x662a,0xff));var _0xa662=function(_0x17f52e,_0x4da384){_0x17f52e=_0x17f52e-0x0;var _0x27b3a9=_0x662a[_0x17f52e];return _0x27b3a9;};'use strict';var config=require('../config/environment');var Sequelize=require(_0xa662('0x0'));var _=require(_0xa662('0x1'));var jstz=require(_0xa662('0x2'));var timezone=jstz[_0xa662('0x3')]();config[_0xa662('0x0')]=_[_0xa662('0x4')](config['sequelize'],{'database':_0xa662('0x5'),'username':_0xa662('0x6'),'password':_0xa662('0x7'),'options':{'host':_0xa662('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xa662('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xa662('0xa'),'collate':_0xa662('0xb')}}});config[_0xa662('0xc')]=_[_0xa662('0x4')](config[_0xa662('0xc')],{'database':_0xa662('0x5'),'username':_0xa662('0x6'),'password':_0xa662('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xa662('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xa662('0xa'),'collate':_0xa662('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xa662('0x0')][_0xa662('0xd')],config[_0xa662('0x0')]['username'],config['sequelize']['password'],config['sequelize'][_0xa662('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xa662('0xc')][_0xa662('0xd')],config[_0xa662('0xc')]['username'],config['sequelizeHistory'][_0xa662('0xf')],config[_0xa662('0xc')][_0xa662('0xe')])};db['User']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x11'));db[_0xa662('0x12')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/voiceChanSpy/voiceChanSpy.model');db['VoiceContext']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x13'));db['VoiceExtension']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x14'));db[_0xa662('0x15')]=db[_0xa662('0x0')]['import'](_0xa662('0x16'));db[_0xa662('0x17')]=db[_0xa662('0x0')]['import']('../api/voiceQueue/voiceQueue.model');db[_0xa662('0x18')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/voiceRecording/voiceRecording.model');db[_0xa662('0x19')]=db['sequelize'][_0xa662('0x10')]('../api/screenRecording/screenRecording.model');db[_0xa662('0x1a')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x1b'));db[_0xa662('0x1c')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x1d'));db[_0xa662('0x1e')]=db[_0xa662('0x0')]['import'](_0xa662('0x1f'));db[_0xa662('0x20')]=db['sequelize']['import']('../api/voiceDialReport/voiceDialReport.model');db['VoiceAgentReport']=db[_0xa662('0x0')][_0xa662('0x10')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0xa662('0x21')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x22'));db['MemberReport']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x23'));db['Trunk']=db[_0xa662('0x0')][_0xa662('0x10')]('../api/trunk/trunk.model');db['VoiceTransferReport']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x24'));db[_0xa662('0x25')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x26'));db[_0xa662('0x27')]=db['sequelize'][_0xa662('0x10')]('../api/userVoiceQueue/userVoiceQueue.model');db['UserChatQueue']=db[_0xa662('0x0')][_0xa662('0x10')]('../api/userChatQueue/userChatQueue.model');db[_0xa662('0x28')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/userMailQueue/userMailQueue.model');db[_0xa662('0x29')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x2a'));db['UserSmsQueue']=db['sequelize'][_0xa662('0x10')](_0xa662('0x2b'));db[_0xa662('0x2c')]=db[_0xa662('0x0')]['import'](_0xa662('0x2d'));db['UserWhatsappQueue']=db[_0xa662('0x0')][_0xa662('0x10')]('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xa662('0x2e')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x2f'));db[_0xa662('0x30')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x31'));db['MailAccount']=db[_0xa662('0x0')]['import'](_0xa662('0x32'));db['MailQueue']=db['sequelize'][_0xa662('0x10')](_0xa662('0x33'));db[_0xa662('0x34')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x35'));db['MailInteraction']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x36'));db[_0xa662('0x37')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x38'));db[_0xa662('0x39')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x3a'));db[_0xa662('0x3b')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x3c'));db[_0xa662('0x3d')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x3e'));db[_0xa662('0x3f')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/dashboardItem/dashboardItem.model');db[_0xa662('0x40')]=db[_0xa662('0x0')]['import'](_0xa662('0x41'));db['FaxApplication']=db['sequelize']['import'](_0xa662('0x42'));db['FaxInteraction']=db[_0xa662('0x0')]['import']('../api/faxInteraction/faxInteraction.model');db['FaxMessage']=db[_0xa662('0x0')]['import'](_0xa662('0x43'));db[_0xa662('0x44')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x45'));db['FaxQueueReport']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x46'));db[_0xa662('0x47')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x48'));db['SmsApplication']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x49'));db[_0xa662('0x4a')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x4b'));db[_0xa662('0x4c')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x4d'));db[_0xa662('0x4e')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x4f'));db['OpenchannelAccount']=db[_0xa662('0x0')]['import'](_0xa662('0x50'));db[_0xa662('0x51')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db['sequelize'][_0xa662('0x10')](_0xa662('0x52'));db[_0xa662('0x53')]=db[_0xa662('0x0')]['import']('../api/openchannelMessage/openchannelMessage.model');db[_0xa662('0x54')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x55'));db[_0xa662('0x56')]=db['sequelize']['import'](_0xa662('0x57'));db[_0xa662('0x58')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x59'));db[_0xa662('0x5a')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x5b'));db[_0xa662('0x5c')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x5d'));db[_0xa662('0x5e')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x5f'));db['ChatOfflineMessage']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x60'));db[_0xa662('0x61')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x62'));db[_0xa662('0x63')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x64'));db[_0xa662('0x65')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x66'));db['CmCompany']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x67'));db[_0xa662('0x68')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x69'));db['CmHopper']=db[_0xa662('0x0')]['import'](_0xa662('0x6a'));db['CmHopperBlack']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x6b'));db[_0xa662('0x6c')]=db[_0xa662('0x0')]['import'](_0xa662('0x6d'));db[_0xa662('0x6e')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x6f'));db[_0xa662('0x70')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x71'));db['CmCustomField']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x72'));db[_0xa662('0x73')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x74'));db[_0xa662('0x75')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x76'));db[_0xa662('0x77')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x78'));db[_0xa662('0x79')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x7a'));db[_0xa662('0x7b')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x7c'));db[_0xa662('0x7d')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x7e'));db[_0xa662('0x7f')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x80'));db[_0xa662('0x81')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/cdr/cdr.model');db['VoiceQueuesLog']=db[_0xa662('0x0')]['import']('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0xa662('0x82')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/schedule/schedule.model');db['Sound']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x83'));db['Tag']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x84'));db['Template']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x85'));db['Trigger']=db['sequelize'][_0xa662('0x10')](_0xa662('0x86'));db[_0xa662('0x87')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x88'));db[_0xa662('0x89')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x8a'));db[_0xa662('0x8b')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x8c'));db[_0xa662('0x8d')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x8e'));db[_0xa662('0x8f')]=db[_0xa662('0x0')]['import']('../api/analyticDefaultReport/analyticDefaultReport.model');db['AnalyticExtractedReport']=db[_0xa662('0x0')][_0xa662('0x10')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0xa662('0x90')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x91'));db[_0xa662('0x92')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x93'));db['AnalyticTreeReport']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x94'));db[_0xa662('0x95')]=db[_0xa662('0x0')]['import'](_0xa662('0x96'));db[_0xa662('0x97')]=db[_0xa662('0x0')]['import'](_0xa662('0x98'));db[_0xa662('0x99')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x9a'));db[_0xa662('0x9b')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x9c'));db[_0xa662('0x9d')]=db['sequelize'][_0xa662('0x10')](_0xa662('0x9e'));db['SugarcrmField']=db[_0xa662('0x0')]['import']('../api/intSugarcrmField/intSugarcrmField.model');db[_0xa662('0x9f')]=db[_0xa662('0x0')]['import'](_0xa662('0xa0'));db[_0xa662('0xa1')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xa2'));db[_0xa662('0xa3')]=db[_0xa662('0x0')]['import'](_0xa662('0xa4'));db[_0xa662('0xa5')]=db['sequelize'][_0xa662('0x10')](_0xa662('0xa6'));db['ZohoConfiguration']=db[_0xa662('0x0')][_0xa662('0x10')]('../api/intZohoConfiguration/intZohoConfiguration.model');db['ZohoField']=db[_0xa662('0x0')][_0xa662('0x10')]('../api/intZohoField/intZohoField.model');db[_0xa662('0xa7')]=db[_0xa662('0x0')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db[_0xa662('0xa8')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0xa662('0xa9')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xaa'));db[_0xa662('0xab')]=db[_0xa662('0x0')]['import']('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xa662('0xac')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db['FreshdeskField']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xad'));db['VtigerAccount']=db['sequelize'][_0xa662('0x10')](_0xa662('0xae'));db['VtigerConfiguration']=db['sequelize'][_0xa662('0x10')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0xa662('0xaf')]=db['sequelize']['import']('../api/intVtigerField/intVtigerField.model');db[_0xa662('0xb0')]=db['sequelize'][_0xa662('0x10')](_0xa662('0xb1'));db[_0xa662('0xb2')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xb3'));db[_0xa662('0xb4')]=db[_0xa662('0x0')]['import'](_0xa662('0xb5'));db[_0xa662('0xb6')]=db[_0xa662('0x0')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0xa662('0xb7')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0xa662('0xb8')]=db[_0xa662('0x0')]['import'](_0xa662('0xb9'));db[_0xa662('0xba')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0xa662('0xbb')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xbc'));db[_0xa662('0xbd')]=db[_0xa662('0x0')]['import'](_0xa662('0xbe'));db[_0xa662('0x89')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x8a'));db['Network']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xbf'));db[_0xa662('0xc0')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xc1'));db[_0xa662('0xc2')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0xa662('0xc3')]=db[_0xa662('0x0')]['import'](_0xa662('0xc4'));db[_0xa662('0xc5')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xc6'));db[_0xa662('0xc7')]=db['sequelize'][_0xa662('0x10')](_0xa662('0xc8'));db[_0xa662('0xc9')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xca'));db[_0xa662('0xcb')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xcc'));db['SquareDetailsReport']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xcd'));db['JscriptyProject']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xce'));db[_0xa662('0xcf')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xd0'));db[_0xa662('0xd1')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xd2'));db[_0xa662('0xd3')]=db['sequelize']['import'](_0xa662('0xd4'));db[_0xa662('0xd5')]=db[_0xa662('0x0')]['import']('../api/squareRecording/squareRecording.model');db[_0xa662('0xd6')]=db[_0xa662('0x0')][_0xa662('0x10')]('../api/squareMessage/squareMessage.model');db[_0xa662('0xd7')]=db[_0xa662('0x0')]['import'](_0xa662('0xd8'));db[_0xa662('0xd9')]=db[_0xa662('0x0')]['import']('../api/license/license.model');db[_0xa662('0xda')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xdb'));db['Migration']=db['sequelize'][_0xa662('0x10')](_0xa662('0xdc'));db['Attachment']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xdd'));db['Plugin']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xde'));db[_0xa662('0xdf')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xe0'));db['ChatTransferReport']=db['sequelize']['import'](_0xa662('0xe1'));db[_0xa662('0xe2')]=db['sequelize']['import'](_0xa662('0xe3'));db[_0xa662('0xe4')]=db['sequelize']['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xa662('0xe5')]=db[_0xa662('0x0')]['import'](_0xa662('0xe6'));db[_0xa662('0xe7')]=db['sequelize']['import'](_0xa662('0xe8'));db['VoicePrefix']=db[_0xa662('0x0')]['import'](_0xa662('0xe9'));db[_0xa662('0xea')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xeb'));db['UserProfileSection']=db[_0xa662('0x0')]['import'](_0xa662('0xec'));db[_0xa662('0xed')]=db['sequelize']['import'](_0xa662('0xee'));db[_0xa662('0xef')]=db[_0xa662('0x0')]['import'](_0xa662('0xf0'));db[_0xa662('0xf1')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xf2'));db[_0xa662('0xf3')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xf4'));db[_0xa662('0xf5')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xf6'));db['WhatsappMessage']=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xf7'));db[_0xa662('0xf8')]=db['sequelize'][_0xa662('0x10')](_0xa662('0xf9'));db[_0xa662('0xfa')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0xfb'));db[_0xa662('0xfc')]=db['sequelize']['import'](_0xa662('0xfd'));db['CloudProvider']=db['sequelize']['import'](_0xa662('0xfe'));db[_0xa662('0xff')]=db[_0xa662('0x0')][_0xa662('0x10')](_0xa662('0x100'));db[_0xa662('0x101')][_0xa662('0x102')](db[_0xa662('0x1a')],{'as':'VoiceMail','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x104')});db['User'][_0xa662('0x105')](db[_0xa662('0x18')],{'as':_0xa662('0x106'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x101')][_0xa662('0x105')](db['UserVoiceQueueRt'],{'as':_0xa662('0x107'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x101')][_0xa662('0x105')](db[_0xa662('0x108')],{'as':_0xa662('0x109'),'onDelete':_0xa662('0x103'),'hooks':!![]});db[_0xa662('0x101')][_0xa662('0x105')](db[_0xa662('0x6c')],{'as':_0xa662('0x10a'),'foreignKey':'UserId'});db[_0xa662('0x101')][_0xa662('0x105')](db[_0xa662('0x6e')],{'as':'HopperHistory','foreignKey':'UserId'});db[_0xa662('0x101')][_0xa662('0x105')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':'UserId'});db['User'][_0xa662('0x105')](db[_0xa662('0x10b')],{'as':_0xa662('0x10c'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0xa662('0x5c')],{'as':_0xa662('0x10d'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x101')][_0xa662('0x105')](db['SmsInteraction'],{'as':_0xa662('0x10e'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x101')][_0xa662('0x105')](db['FaxInteraction'],{'as':_0xa662('0x10f'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x101')]['hasMany'](db[_0xa662('0x110')],{'as':_0xa662('0x111'),'foreignKey':'UserId'});db[_0xa662('0x101')][_0xa662('0x105')](db[_0xa662('0xf5')],{'as':_0xa662('0x112'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x101')][_0xa662('0x105')](db['UserNotification'],{'as':_0xa662('0x113'),'foreignKey':_0xa662('0x114')});db[_0xa662('0x101')][_0xa662('0x115')](db[_0xa662('0xea')],{'as':_0xa662('0xea'),'foreignKey':_0xa662('0x116')});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x63')],{'as':_0xa662('0x118'),'through':'chat_group_has_users'});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x68')],{'as':_0xa662('0x119'),'through':_0xa662('0x11a')});db[_0xa662('0x101')][_0xa662('0x117')](db['CmList'],{'as':_0xa662('0x11b'),'through':_0xa662('0x11c')});db[_0xa662('0x101')]['belongsToMany'](db['Team'],{'through':'user_has_teams'});db[_0xa662('0x101')]['belongsToMany'](db[_0xa662('0x110')],{'as':_0xa662('0x111'),'through':'user_has_mail_interactions'});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x5c')],{'as':_0xa662('0x10d'),'through':_0xa662('0x11d')});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x11e')],{'as':'FaxInteractions','through':'user_has_fax_interactions'});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x4a')],{'as':_0xa662('0x10e'),'through':_0xa662('0x11f')});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x10b')],{'as':_0xa662('0x10c'),'through':_0xa662('0x120')});db['User'][_0xa662('0x117')](db[_0xa662('0xf5')],{'as':_0xa662('0x112'),'through':_0xa662('0x121')});db['User'][_0xa662('0x117')](db['VoiceQueue'],{'as':_0xa662('0x122'),'through':'UserVoiceQueue','required':![]});db['User']['belongsToMany'](db['MailQueue'],{'as':_0xa662('0x123'),'through':_0xa662('0x28'),'required':![]});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x61')],{'as':_0xa662('0x124'),'through':_0xa662('0x125'),'required':![],'hooks':!![]});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x44')],{'as':'FaxQueues','through':'UserFaxQueue','required':![]});db[_0xa662('0x101')]['belongsToMany'](db[_0xa662('0x4e')],{'as':_0xa662('0x126'),'through':_0xa662('0x127'),'required':![]});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x54')],{'as':_0xa662('0x128'),'through':'UserOpenchannelQueue','required':![]});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0xfc')],{'as':_0xa662('0x129'),'through':_0xa662('0x12a'),'required':![]});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0xe7')],{'through':_0xa662('0x11c')});db['User']['belongsToMany'](db['VoicePrefix'],{'as':_0xa662('0x12b'),'through':'user_has_voice_prefixes','required':![]});db['User'][_0xa662('0x117')](db[_0xa662('0x56')],{'as':_0xa662('0x12c'),'through':'user_has_chat_websites'});db['User'][_0xa662('0x117')](db[_0xa662('0x40')],{'as':_0xa662('0x12d'),'through':_0xa662('0x12e')});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x12f')],{'as':_0xa662('0x130'),'through':_0xa662('0x131')});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0x132')],{'as':'OpenchannelAccounts','through':_0xa662('0x133')});db[_0xa662('0x101')][_0xa662('0x117')](db['SmsAccount'],{'as':_0xa662('0x134'),'through':'user_has_sms_accounts'});db[_0xa662('0x101')][_0xa662('0x117')](db['WhatsappAccount'],{'as':_0xa662('0x135'),'through':_0xa662('0x136')});db[_0xa662('0x101')][_0xa662('0x117')](db[_0xa662('0xd3')],{'as':_0xa662('0x137'),'through':_0xa662('0x138')});db[_0xa662('0x12')][_0xa662('0x105')](db['VoiceExtension'],{'as':_0xa662('0x139'),'onDelete':'cascade','foreignKey':_0xa662('0x13a')});db[_0xa662('0x13b')][_0xa662('0x105')](db[_0xa662('0x108')],{'onDelete':_0xa662('0x103')});db[_0xa662('0x108')][_0xa662('0x105')](db[_0xa662('0x108')],{'as':_0xa662('0x13c'),'onDelete':_0xa662('0x103')});db[_0xa662('0x15')][_0xa662('0x117')](db[_0xa662('0x13d')],{'as':_0xa662('0x13e'),'through':'moh_has_sounds'});db['VoiceQueue'][_0xa662('0x105')](db[_0xa662('0x25')],{'as':_0xa662('0x13f'),'foreignKey':_0xa662('0x140')});db[_0xa662('0x17')][_0xa662('0x105')](db[_0xa662('0x141')],{'as':'Hoppers','foreignKey':_0xa662('0x140')});db['VoiceQueue'][_0xa662('0x105')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xa662('0x140')});db[_0xa662('0x17')][_0xa662('0x105')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':_0xa662('0x140')});db[_0xa662('0x17')][_0xa662('0x105')](db['ReportAgentPreview'],{'as':_0xa662('0x70'),'foreignKey':_0xa662('0x140')});db[_0xa662('0x17')]['hasMany'](db[_0xa662('0x142')],{'as':_0xa662('0x143'),'foreignKey':_0xa662('0x140')});db[_0xa662('0x17')][_0xa662('0x105')](db[_0xa662('0xc7')],{'as':'JscriptySessions','foreignKey':_0xa662('0x140')});db[_0xa662('0x17')][_0xa662('0x115')](db[_0xa662('0x144')],{'as':_0xa662('0x144'),'foreignKey':_0xa662('0x145')});db[_0xa662('0x17')][_0xa662('0x115')](db['Trunk'],{'as':_0xa662('0x146'),'foreignKey':'TrunkBackupId'});db[_0xa662('0x17')]['belongsTo'](db[_0xa662('0x7d')],{'as':_0xa662('0x7d'),'foreignKey':'IntervalId'});db[_0xa662('0x17')][_0xa662('0x115')](db[_0xa662('0x7f')],{'as':'mandatoryDispositionPause','foreignKey':_0xa662('0x147')});db[_0xa662('0x17')]['belongsToMany'](db[_0xa662('0xe7')],{'as':'Lists','through':'voice_queues_has_cm_lists'});db[_0xa662('0x17')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':_0xa662('0x27')});db['VoiceQueue'][_0xa662('0x117')](db[_0xa662('0xd7')],{'as':_0xa662('0x149'),'through':_0xa662('0xff')});db[_0xa662('0x17')]['belongsToMany'](db['CmList'],{'as':_0xa662('0x14a'),'through':'voice_queues_has_cm_blacklists'});db[_0xa662('0x18')][_0xa662('0x115')](db['User'],{'as':_0xa662('0x101'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x19')][_0xa662('0x115')](db[_0xa662('0x101')],{'as':_0xa662('0x101'),'foreignKey':_0xa662('0x104')});db['VoiceMail'][_0xa662('0x105')](db[_0xa662('0x1c')],{'as':_0xa662('0x14b'),'onDelete':_0xa662('0x103'),'foreignKey':'mailboxuser','sourceKey':_0xa662('0x14c')});db['VoiceMailMessage'][_0xa662('0x115')](db[_0xa662('0x1a')],{'foreignKey':_0xa662('0x14d'),'targetKey':_0xa662('0x14c')});db[_0xa662('0x1e')][_0xa662('0x105')](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':_0xa662('0x14e'),'constraints':![]});db['VoiceCallReport'][_0xa662('0x105')](db[_0xa662('0x14f')],{'as':'AgentReports','foreignKey':_0xa662('0x14e'),'constraints':![]});db[_0xa662('0x1e')][_0xa662('0x115')](db[_0xa662('0x101')],{'as':_0xa662('0x101'),'foreignKey':'UserId'});db[_0xa662('0x1e')][_0xa662('0x115')](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0x2e')]['belongsTo'](db[_0xa662('0x12f')],{'as':_0xa662('0x12f'),'foreignKey':'MailAccountId'});db[_0xa662('0x30')][_0xa662('0x115')](db[_0xa662('0x12f')],{'as':_0xa662('0x12f'),'foreignKey':_0xa662('0x152')});db[_0xa662('0x12f')]['hasOne'](db[_0xa662('0x2e')],{'as':_0xa662('0x153'),'onDelete':_0xa662('0x103')});db[_0xa662('0x12f')]['hasOne'](db[_0xa662('0x30')],{'as':_0xa662('0x154'),'onDelete':'cascade'});db[_0xa662('0x12f')][_0xa662('0x105')](db[_0xa662('0x79')],{'as':'Dispositions','foreignKey':'MailAccountId','onDelete':_0xa662('0x103')});db[_0xa662('0x12f')][_0xa662('0x105')](db[_0xa662('0x77')],{'as':_0xa662('0x155'),'foreignKey':_0xa662('0x152')});db['MailAccount']['hasMany'](db[_0xa662('0x37')],{'as':_0xa662('0x14b'),'foreignKey':_0xa662('0x152')});db[_0xa662('0x12f')][_0xa662('0x105')](db[_0xa662('0x110')],{'as':_0xa662('0x156')});db[_0xa662('0x12f')][_0xa662('0x105')](db[_0xa662('0x39')],{'as':_0xa662('0x13c')});db[_0xa662('0x12f')][_0xa662('0x115')](db[_0xa662('0xe7')],{'as':_0xa662('0x157'),'foreignKey':'ListId'});db[_0xa662('0x12f')][_0xa662('0x115')](db[_0xa662('0x158')],{'as':'Template','foreignKey':_0xa662('0x159')});db['MailAccount'][_0xa662('0x115')](db[_0xa662('0x7f')],{'as':_0xa662('0x15a'),'foreignKey':_0xa662('0x147')});db[_0xa662('0x12f')][_0xa662('0x117')](db['User'],{'as':_0xa662('0x148'),'through':_0xa662('0x131')});db[_0xa662('0x15b')][_0xa662('0x117')](db['User'],{'as':_0xa662('0x148'),'through':'UserMailQueue'});db['MailQueue'][_0xa662('0x117')](db[_0xa662('0xd7')],{'through':_0xa662('0x15c'),'as':_0xa662('0x149')});db[_0xa662('0x110')][_0xa662('0x105')](db[_0xa662('0x37')],{'as':_0xa662('0x14b'),'onDelete':'cascade','foreignKey':_0xa662('0x15d')});db[_0xa662('0x110')][_0xa662('0x115')](db[_0xa662('0x12f')],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x152')});db[_0xa662('0x110')]['belongsTo'](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0x110')][_0xa662('0x115')](db['User'],{'as':_0xa662('0x15f'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x110')]['belongsToMany'](db[_0xa662('0x160')],{'through':_0xa662('0x161'),'as':_0xa662('0x162')});db[_0xa662('0x110')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':'mail_interaction_has_tags','as':_0xa662('0x163')});db[_0xa662('0x110')][_0xa662('0x117')](db['User'],{'as':'Users','through':_0xa662('0x164'),'foreignKey':_0xa662('0x15d')});db[_0xa662('0x37')]['hasMany'](db[_0xa662('0x165')],{'as':_0xa662('0x166'),'onDelete':'cascade'});db[_0xa662('0x37')][_0xa662('0x115')](db[_0xa662('0x101')],{'as':_0xa662('0x101')});db[_0xa662('0x37')][_0xa662('0x115')](db[_0xa662('0x68')],{'onDelete':'cascade','as':'Contact'});db[_0xa662('0x37')][_0xa662('0x115')](db['MailInteraction'],{'as':_0xa662('0x167'),'foreignKey':_0xa662('0x15d')});db[_0xa662('0x37')][_0xa662('0x115')](db['MailAccount'],{'as':_0xa662('0x15e'),'foreignKey':'MailAccountId'});db[_0xa662('0x37')][_0xa662('0x115')](db[_0xa662('0x56')],{'as':'ChatWebsite','foreignKey':_0xa662('0x168')});db[_0xa662('0x37')][_0xa662('0x115')](db[_0xa662('0x169')],{'as':'ChatOfflineMessage','foreignKey':'ChatOfflineMessageId'});db[_0xa662('0x39')][_0xa662('0x115')](db['User'],{'onDelete':_0xa662('0x16a')});db[_0xa662('0x39')]['belongsTo'](db[_0xa662('0x15b')],{'onDelete':'restrict'});db[_0xa662('0x39')][_0xa662('0x115')](db['MailAccount'],{'onDelete':_0xa662('0x16a')});db[_0xa662('0x39')][_0xa662('0x115')](db[_0xa662('0x7d')],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x16b')});db[_0xa662('0x39')][_0xa662('0x115')](db[_0xa662('0x160')],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x16c')});db[_0xa662('0x3b')]['belongsTo'](db['MailAccount'],{});db['MailQueueReport'][_0xa662('0x115')](db['CmList'],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d')});db[_0xa662('0x3b')][_0xa662('0x115')](db['CmContact'],{'as':_0xa662('0x150'),'foreignKey':'ContactId'});db[_0xa662('0x3b')]['belongsTo'](db['MailInteraction'],{});db[_0xa662('0x3b')]['belongsTo'](db[_0xa662('0x37')],{});db['MailQueueReport'][_0xa662('0x115')](db['User'],{});db[_0xa662('0x3b')][_0xa662('0x115')](db[_0xa662('0x15b')],{});db[_0xa662('0x3d')][_0xa662('0x105')](db[_0xa662('0x3f')],{'as':'Items','onDelete':_0xa662('0x103')});db[_0xa662('0x40')][_0xa662('0x105')](db['Disposition'],{'as':_0xa662('0x16e'),'foreignKey':'FaxAccountId','onDelete':_0xa662('0x103')});db['FaxAccount'][_0xa662('0x105')](db[_0xa662('0x77')],{'as':'Answers','foreignKey':_0xa662('0x16f')});db['FaxAccount'][_0xa662('0x105')](db['FaxInteraction'],{'as':_0xa662('0x156')});db[_0xa662('0x40')]['hasMany'](db[_0xa662('0x170')],{'as':_0xa662('0x13c')});db['FaxAccount'][_0xa662('0x105')](db[_0xa662('0x108')],{'as':_0xa662('0x171'),'onDelete':'cascade'});db['FaxAccount']['hasMany'](db[_0xa662('0x172')],{'as':_0xa662('0x14b')});db[_0xa662('0x40')][_0xa662('0x115')](db['Trunk'],{'as':'Trunk'});db[_0xa662('0x40')][_0xa662('0x115')](db[_0xa662('0xe7')],{'as':'List','foreignKey':_0xa662('0x16d')});db[_0xa662('0x40')]['belongsTo'](db[_0xa662('0x7f')],{'as':_0xa662('0x15a'),'foreignKey':'mandatoryDispositionPauseId'});db['FaxAccount'][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':'user_has_fax_accounts'});db[_0xa662('0x170')][_0xa662('0x115')](db[_0xa662('0x101')],{'onDelete':'restrict'});db[_0xa662('0x170')][_0xa662('0x115')](db[_0xa662('0x44')],{'onDelete':_0xa662('0x16a')});db[_0xa662('0x170')][_0xa662('0x115')](db[_0xa662('0x40')],{'onDelete':'restrict'});db[_0xa662('0x170')][_0xa662('0x115')](db[_0xa662('0x160')],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x16c')});db[_0xa662('0x11e')][_0xa662('0x105')](db[_0xa662('0x172')],{'as':'Messages','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x173')});db['FaxInteraction'][_0xa662('0x115')](db[_0xa662('0x40')],{'as':_0xa662('0x15e'),'foreignKey':'FaxAccountId'});db[_0xa662('0x11e')]['belongsTo'](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0x11e')][_0xa662('0x115')](db['User'],{'as':_0xa662('0x15f'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x11e')][_0xa662('0x117')](db['Tag'],{'through':_0xa662('0x174'),'as':_0xa662('0x162')});db[_0xa662('0x11e')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':_0xa662('0x174'),'as':_0xa662('0x163')});db[_0xa662('0x11e')]['belongsToMany'](db[_0xa662('0x101')],{'as':'Users','through':_0xa662('0x175'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0xa662('0x115')](db[_0xa662('0x101')],{'onDelete':_0xa662('0x103'),'as':_0xa662('0x101')});db[_0xa662('0x172')][_0xa662('0x115')](db[_0xa662('0x11e')],{'as':_0xa662('0x167'),'foreignKey':'FaxInteractionId'});db[_0xa662('0x172')][_0xa662('0x115')](db[_0xa662('0x68')],{'onDelete':_0xa662('0x103'),'as':_0xa662('0x150')});db['FaxMessage'][_0xa662('0x115')](db[_0xa662('0x165')],{'as':_0xa662('0x165'),'foreignKey':_0xa662('0x176')});db[_0xa662('0x172')][_0xa662('0x115')](db['FaxAccount'],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x16f')});db[_0xa662('0x44')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':_0xa662('0x29')});db[_0xa662('0x44')]['belongsToMany'](db[_0xa662('0xd7')],{'through':_0xa662('0x177'),'as':_0xa662('0x149')});db[_0xa662('0x178')][_0xa662('0x115')](db[_0xa662('0x40')],{});db[_0xa662('0x178')][_0xa662('0x115')](db['CmList'],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d')});db['FaxQueueReport'][_0xa662('0x115')](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0x178')][_0xa662('0x115')](db[_0xa662('0x11e')],{});db[_0xa662('0x178')]['belongsTo'](db['FaxMessage'],{});db[_0xa662('0x178')]['belongsTo'](db['User'],{});db['FaxQueueReport'][_0xa662('0x115')](db['FaxQueue'],{});db[_0xa662('0x47')][_0xa662('0x105')](db[_0xa662('0x79')],{'as':_0xa662('0x16e'),'foreignKey':_0xa662('0x179'),'onDelete':'cascade'});db[_0xa662('0x47')]['hasMany'](db[_0xa662('0x77')],{'as':'Answers','foreignKey':_0xa662('0x179')});db[_0xa662('0x47')][_0xa662('0x105')](db[_0xa662('0x4c')],{'as':_0xa662('0x14b'),'foreignKey':'SmsAccountId'});db['SmsAccount'][_0xa662('0x105')](db[_0xa662('0x4a')],{'as':'Interactions'});db[_0xa662('0x47')][_0xa662('0x105')](db[_0xa662('0x17a')],{'as':_0xa662('0x13c')});db[_0xa662('0x47')]['belongsTo'](db['CmList'],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d')});db[_0xa662('0x47')]['belongsTo'](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xa662('0x147')});db[_0xa662('0x47')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':'user_has_sms_accounts'});db[_0xa662('0x17a')][_0xa662('0x115')](db[_0xa662('0x101')],{'onDelete':'restrict'});db['SmsApplication'][_0xa662('0x115')](db['SmsQueue'],{'onDelete':_0xa662('0x16a')});db[_0xa662('0x17a')][_0xa662('0x115')](db[_0xa662('0x47')],{'onDelete':_0xa662('0x16a')});db[_0xa662('0x17a')][_0xa662('0x115')](db[_0xa662('0x7d')],{'onDelete':_0xa662('0x16a'),'foreignKey':'IntervalId'});db['SmsApplication']['belongsTo'](db[_0xa662('0x160')],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x16c')});db[_0xa662('0x4a')][_0xa662('0x105')](db['SmsMessage'],{'as':_0xa662('0x14b'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x17b')});db[_0xa662('0x4a')][_0xa662('0x115')](db[_0xa662('0x47')],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x179')});db['SmsInteraction'][_0xa662('0x115')](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':'ContactId'});db[_0xa662('0x4a')][_0xa662('0x115')](db[_0xa662('0x101')],{'as':_0xa662('0x15f'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x4a')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':_0xa662('0x17c'),'as':_0xa662('0x162')});db['SmsInteraction'][_0xa662('0x117')](db[_0xa662('0x160')],{'through':'sms_interaction_has_tags','as':'ThroughTags'});db[_0xa662('0x4a')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x17d'),'through':_0xa662('0x11f'),'foreignKey':_0xa662('0x17b')});db['SmsMessage'][_0xa662('0x115')](db[_0xa662('0x101')],{'as':'User'});db['SmsMessage'][_0xa662('0x115')](db[_0xa662('0x68')],{'onDelete':_0xa662('0x103'),'as':_0xa662('0x150')});db[_0xa662('0x4c')]['belongsTo'](db[_0xa662('0x4a')],{'onDelete':_0xa662('0x103'),'as':_0xa662('0x167'),'foreignKey':_0xa662('0x17b')});db[_0xa662('0x4c')][_0xa662('0x115')](db[_0xa662('0x47')],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x179')});db[_0xa662('0x4e')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':_0xa662('0x127'),'foreignKey':_0xa662('0x17e')});db[_0xa662('0x4e')]['belongsToMany'](db['Team'],{'through':_0xa662('0x17f'),'as':_0xa662('0x149')});db[_0xa662('0x132')][_0xa662('0x105')](db[_0xa662('0x79')],{'as':_0xa662('0x16e'),'foreignKey':_0xa662('0x180'),'onDelete':_0xa662('0x103')});db[_0xa662('0x132')]['hasMany'](db[_0xa662('0x77')],{'as':_0xa662('0x155'),'foreignKey':_0xa662('0x180')});db[_0xa662('0x132')][_0xa662('0x105')](db[_0xa662('0x10b')],{'as':_0xa662('0x156'),'foreignKey':_0xa662('0x180')});db[_0xa662('0x132')][_0xa662('0x105')](db[_0xa662('0x53')],{'as':_0xa662('0x14b'),'foreignKey':_0xa662('0x180')});db['OpenchannelAccount'][_0xa662('0x105')](db[_0xa662('0x51')],{'as':_0xa662('0x13c'),'foreignKey':_0xa662('0x180')});db[_0xa662('0x132')][_0xa662('0x115')](db['CmList'],{'as':'List','foreignKey':_0xa662('0x16d')});db[_0xa662('0x132')][_0xa662('0x115')](db['Pause'],{'as':_0xa662('0x15a'),'foreignKey':_0xa662('0x147')});db[_0xa662('0x132')][_0xa662('0x117')](db['User'],{'as':_0xa662('0x148'),'through':_0xa662('0x133')});db[_0xa662('0x51')][_0xa662('0x115')](db[_0xa662('0x101')],{'onDelete':_0xa662('0x16a')});db[_0xa662('0x51')][_0xa662('0x115')](db['OpenchannelQueue'],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x181')});db[_0xa662('0x51')][_0xa662('0x115')](db['OpenchannelAccount'],{'onDelete':_0xa662('0x16a'),'foreignKey':'OpenchannelAccountId'});db[_0xa662('0x51')][_0xa662('0x115')](db[_0xa662('0x7d')],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x16b')});db[_0xa662('0x51')][_0xa662('0x115')](db[_0xa662('0x160')],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x16c')});db[_0xa662('0x10b')][_0xa662('0x105')](db['OpenchannelMessage'],{'as':_0xa662('0x14b'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x182')});db[_0xa662('0x10b')]['belongsTo'](db[_0xa662('0x132')],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x180')});db['OpenchannelInteraction']['belongsTo'](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0x10b')][_0xa662('0x115')](db['User'],{'as':'Owner','foreignKey':_0xa662('0x104')});db[_0xa662('0x10b')][_0xa662('0x117')](db['Tag'],{'through':_0xa662('0x183'),'as':_0xa662('0x162')});db[_0xa662('0x10b')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':_0xa662('0x183'),'as':_0xa662('0x163')});db[_0xa662('0x10b')][_0xa662('0x117')](db['User'],{'as':'Users','through':_0xa662('0x120'),'foreignKey':'OpenchannelInteractionId'});db[_0xa662('0x53')]['belongsTo'](db[_0xa662('0x101')],{'onDelete':_0xa662('0x103'),'as':'User'});db[_0xa662('0x53')][_0xa662('0x115')](db['CmContact'],{'onDelete':'cascade','as':_0xa662('0x150')});db[_0xa662('0x53')][_0xa662('0x115')](db[_0xa662('0x10b')],{'onDelete':_0xa662('0x103'),'as':'Interaction','foreignKey':_0xa662('0x182')});db[_0xa662('0x53')][_0xa662('0x115')](db[_0xa662('0x165')],{'as':_0xa662('0x165'),'foreignKey':_0xa662('0x176')});db[_0xa662('0x53')][_0xa662('0x115')](db[_0xa662('0x132')],{'as':'Account','foreignKey':_0xa662('0x180')});db[_0xa662('0x54')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':_0xa662('0x2c'),'foreignKey':_0xa662('0x181')});db[_0xa662('0x54')]['belongsToMany'](db[_0xa662('0xd7')],{'through':'team_has_openchannel_queues','as':_0xa662('0x149')});db['ChatWebsite']['hasMany'](db[_0xa662('0x79')],{'as':_0xa662('0x16e'),'foreignKey':_0xa662('0x168'),'onDelete':_0xa662('0x103')});db[_0xa662('0x56')]['hasMany'](db['CannedAnswer'],{'as':_0xa662('0x155'),'foreignKey':_0xa662('0x168')});db['ChatWebsite']['hasMany'](db[_0xa662('0x65')],{'as':'ProactiveActions'});db[_0xa662('0x56')][_0xa662('0x105')](db['ChatInteraction'],{'as':_0xa662('0x156')});db['ChatWebsite'][_0xa662('0x105')](db['ChatApplication'],{'as':_0xa662('0x13c')});db[_0xa662('0x56')][_0xa662('0x105')](db['ChatMessage'],{'as':_0xa662('0x14b')});db[_0xa662('0x56')][_0xa662('0x115')](db[_0xa662('0xe7')],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d')});db[_0xa662('0x56')][_0xa662('0x115')](db[_0xa662('0x7d')],{'as':_0xa662('0x7d'),'foreignKey':_0xa662('0x16b')});db[_0xa662('0x56')][_0xa662('0x115')](db[_0xa662('0x12f')],{'as':_0xa662('0x12f'),'foreignKey':_0xa662('0x152')});db['ChatWebsite'][_0xa662('0x115')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xa662('0x147')});db[_0xa662('0x56')]['belongsToMany'](db['User'],{'as':_0xa662('0x148'),'through':_0xa662('0x184')});db['OpenchannelQueueReport'][_0xa662('0x115')](db[_0xa662('0x132')],{});db['OpenchannelQueueReport'][_0xa662('0x115')](db[_0xa662('0xe7')],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d')});db['OpenchannelQueueReport'][_0xa662('0x115')](db['CmContact'],{'as':_0xa662('0x150'),'foreignKey':'ContactId'});db[_0xa662('0x58')][_0xa662('0x115')](db[_0xa662('0x10b')],{});db[_0xa662('0x58')][_0xa662('0x115')](db['OpenchannelMessage'],{});db[_0xa662('0x58')][_0xa662('0x115')](db[_0xa662('0x101')],{});db['OpenchannelQueueReport'][_0xa662('0x115')](db['OpenchannelQueue'],{});db[_0xa662('0x5a')]['belongsTo'](db[_0xa662('0x101')],{'as':_0xa662('0x185'),'foreignKey':_0xa662('0x104'),'onDelete':_0xa662('0x16a')});db[_0xa662('0x5a')]['belongsTo'](db['ChatQueue'],{'as':_0xa662('0x186'),'foreignKey':_0xa662('0x187'),'onDelete':_0xa662('0x16a')});db[_0xa662('0x5a')][_0xa662('0x115')](db[_0xa662('0x56')],{'as':_0xa662('0x188'),'foreignKey':'ChatWebsiteId','onDelete':_0xa662('0x16a')});db['ChatApplication'][_0xa662('0x115')](db[_0xa662('0x160')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xa662('0x5c')]['hasMany'](db['ChatMessage'],{'as':_0xa662('0x14b'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x189')});db[_0xa662('0x5c')]['belongsTo'](db['ChatWebsite'],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x168')});db[_0xa662('0x5c')][_0xa662('0x115')](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0x5c')][_0xa662('0x115')](db[_0xa662('0x101')],{'as':_0xa662('0x15f'),'foreignKey':'UserId'});db[_0xa662('0x5c')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':'chat_interaction_has_tags','as':'Tags'});db[_0xa662('0x5c')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':_0xa662('0x18a'),'as':'ThroughTags'});db[_0xa662('0x5c')][_0xa662('0x117')](db['User'],{'as':'Users','through':'user_has_chat_interactions','foreignKey':'ChatInteractionId'});db[_0xa662('0x5e')][_0xa662('0x115')](db['User'],{'onDelete':'cascade','as':_0xa662('0x101')});db[_0xa662('0x5e')][_0xa662('0x115')](db['CmContact'],{'onDelete':_0xa662('0x103'),'as':'Contact','foreignKey':_0xa662('0x151')});db[_0xa662('0x5e')][_0xa662('0x115')](db[_0xa662('0x5c')],{'onDelete':_0xa662('0x103'),'as':_0xa662('0x167'),'foreignKey':'ChatInteractionId'});db[_0xa662('0x5e')][_0xa662('0x115')](db[_0xa662('0x165')],{'as':_0xa662('0x165'),'foreignKey':_0xa662('0x176')});db[_0xa662('0x5e')][_0xa662('0x115')](db[_0xa662('0x56')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0xa662('0x169')][_0xa662('0x105')](db[_0xa662('0x165')],{'as':_0xa662('0x166'),'foreignKey':_0xa662('0x18b'),'onDelete':_0xa662('0x103'),'hooks':!![]});db[_0xa662('0x169')][_0xa662('0x115')](db[_0xa662('0x68')],{'onDelete':_0xa662('0x103'),'as':_0xa662('0x150'),'foreignKey':'ContactId'});db[_0xa662('0x169')][_0xa662('0x115')](db[_0xa662('0x56')],{'as':'Account','foreignKey':_0xa662('0x168')});db['ChatQueue']['belongsToMany'](db['User'],{'as':_0xa662('0x148'),'through':_0xa662('0x125'),'hooks':!![]});db[_0xa662('0x61')][_0xa662('0x117')](db['Team'],{'through':_0xa662('0x18c'),'as':_0xa662('0x149')});db[_0xa662('0x63')]['hasMany'](db[_0xa662('0xc2')],{'as':_0xa662('0x14b'),'foreignKey':'ChatGroupId','onDelete':_0xa662('0x103')});db[_0xa662('0x63')]['belongsToMany'](db[_0xa662('0x101')],{'as':_0xa662('0x13f'),'through':_0xa662('0x18d')});db[_0xa662('0x65')][_0xa662('0x115')](db[_0xa662('0x56')],{'as':_0xa662('0x188'),'foreignKey':_0xa662('0x168')});db[_0xa662('0x18e')][_0xa662('0x105')](db[_0xa662('0x68')],{'as':'Contacts','foreignKey':_0xa662('0x18f')});db[_0xa662('0x68')][_0xa662('0x105')](db[_0xa662('0x141')],{'as':'Hoppers','foreignKey':_0xa662('0x151')});db['CmContact']['hasMany'](db['CmHopperFinal'],{'as':_0xa662('0x10a'),'foreignKey':'ContactId'});db[_0xa662('0x68')][_0xa662('0x105')](db[_0xa662('0x6e')],{'as':'HopperHistories','foreignKey':'ContactId'});db[_0xa662('0x68')][_0xa662('0x105')](db[_0xa662('0x70')],{'as':_0xa662('0x70'),'foreignKey':'ContactId'});db[_0xa662('0x68')]['hasMany'](db[_0xa662('0xc7')],{'as':_0xa662('0x190'),'foreignKey':'ContactId'});db[_0xa662('0x68')][_0xa662('0x105')](db[_0xa662('0x10b')],{'as':_0xa662('0x10c'),'foreignKey':_0xa662('0x151'),'onDelete':_0xa662('0x16a')});db[_0xa662('0x68')][_0xa662('0x105')](db[_0xa662('0x5c')],{'as':_0xa662('0x10d'),'foreignKey':_0xa662('0x151'),'onDelete':'restrict'});db[_0xa662('0x68')][_0xa662('0x105')](db[_0xa662('0x4a')],{'as':_0xa662('0x10e'),'foreignKey':'ContactId','onDelete':_0xa662('0x16a')});db['CmContact'][_0xa662('0x105')](db[_0xa662('0x11e')],{'as':_0xa662('0x10f'),'foreignKey':_0xa662('0x151'),'onDelete':_0xa662('0x16a')});db[_0xa662('0x68')]['hasMany'](db['MailInteraction'],{'as':_0xa662('0x111'),'foreignKey':'ContactId','onDelete':_0xa662('0x16a')});db[_0xa662('0x68')][_0xa662('0x115')](db[_0xa662('0x18e')],{'as':_0xa662('0x191'),'foreignKey':'CompanyId'});db[_0xa662('0x68')][_0xa662('0x115')](db['CmList'],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d'),'onDelete':_0xa662('0x103')});db[_0xa662('0x68')]['belongsToMany'](db[_0xa662('0x101')],{'as':_0xa662('0x17d'),'through':_0xa662('0x11a')});db[_0xa662('0x68')][_0xa662('0x117')](db[_0xa662('0x160')],{'as':_0xa662('0x162'),'through':_0xa662('0x192')});db[_0xa662('0x68')]['belongsToMany'](db['Tag'],{'through':'cm_contact_has_tags','as':_0xa662('0x163')});db['CmHopper'][_0xa662('0x115')](db['CmContact'],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151'),'onDelete':_0xa662('0x103')});db[_0xa662('0x141')][_0xa662('0x115')](db['CmList'],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d'),'onDelete':'cascade'});db['CmHopper'][_0xa662('0x115')](db[_0xa662('0x101')],{'as':_0xa662('0x185'),'foreignKey':_0xa662('0x104')});db[_0xa662('0x141')][_0xa662('0x115')](db[_0xa662('0x17')],{'as':_0xa662('0x186'),'foreignKey':_0xa662('0x140'),'onDelete':'cascade'});db['CmHopper'][_0xa662('0x115')](db[_0xa662('0xda')],{'as':'Campaign','foreignKey':_0xa662('0x193'),'onDelete':_0xa662('0x103')});db['CmHopper'][_0xa662('0x115')](db['User'],{'as':_0xa662('0x15f'),'foreignKey':_0xa662('0x194')});db['CmHopperBlack'][_0xa662('0x115')](db['CmContact'],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151'),'onDelete':_0xa662('0x103')});db[_0xa662('0x142')][_0xa662('0x115')](db[_0xa662('0xe7')],{'as':_0xa662('0x157'),'foreignKey':_0xa662('0x16d'),'onDelete':_0xa662('0x103')});db['CmHopperBlack'][_0xa662('0x115')](db[_0xa662('0x17')],{'as':_0xa662('0x186'),'foreignKey':'VoiceQueueId','onDelete':_0xa662('0x103')});db[_0xa662('0x142')]['belongsTo'](db[_0xa662('0xda')],{'as':_0xa662('0xda'),'foreignKey':_0xa662('0x193'),'onDelete':_0xa662('0x103')});db['Automation'][_0xa662('0x105')](db['Condition'],{'as':{'plural':_0xa662('0x195'),'singular':_0xa662('0x196')},'foreignKey':_0xa662('0x197'),'onDelete':'cascade','hooks':!![]});db[_0xa662('0x75')][_0xa662('0x105')](db[_0xa662('0x7b')],{'as':{'plural':_0xa662('0x198'),'singular':'OneAny'},'foreignKey':'AutomationAnyId','onDelete':_0xa662('0x103'),'hooks':!![]});db[_0xa662('0x75')][_0xa662('0x105')](db[_0xa662('0x73')],{'as':_0xa662('0x199'),'foreignKey':_0xa662('0x19a'),'onDelete':'cascade','hooks':!![]});db[_0xa662('0x79')][_0xa662('0x105')](db['Disposition'],{'as':_0xa662('0x16e'),'foreignKey':_0xa662('0x19b'),'onDelete':'cascade'});db[_0xa662('0x7d')][_0xa662('0x105')](db['Interval'],{'as':'Intervals','foreignKey':_0xa662('0x16b'),'onDelete':_0xa662('0x103'),'hooks':!![],'required':![]});db[_0xa662('0x7d')][_0xa662('0x105')](db[_0xa662('0x108')],{'as':_0xa662('0x109'),'foreignKey':_0xa662('0x16b'),'onDelete':_0xa662('0x16a')});db[_0xa662('0x7d')][_0xa662('0x105')](db[_0xa662('0x39')],{'as':_0xa662('0x19c'),'foreignKey':_0xa662('0x16b')});db['Interval']['hasMany'](db['ChatApplication'],{'as':_0xa662('0x19d'),'foreignKey':_0xa662('0x16b')});db[_0xa662('0x7d')][_0xa662('0x105')](db[_0xa662('0x170')],{'as':_0xa662('0x19e'),'foreignKey':_0xa662('0x16b')});db[_0xa662('0x7d')][_0xa662('0x105')](db['SmsApplication'],{'as':'SmsApplications','foreignKey':_0xa662('0x16b')});db['Schedule'][_0xa662('0x115')](db[_0xa662('0x12f')],{});db[_0xa662('0x82')][_0xa662('0x115')](db[_0xa662('0x8f')],{'foreignKey':_0xa662('0x19f')});db['Schedule'][_0xa662('0x115')](db['AnalyticCustomReport'],{'foreignKey':_0xa662('0x1a0')});db[_0xa662('0x13d')]['belongsToMany'](db[_0xa662('0x15')],{'as':'Mohs','through':_0xa662('0x1a1'),'onDelete':'restrict'});db['Tag']['belongsToMany'](db[_0xa662('0x68')],{'through':_0xa662('0x192')});db[_0xa662('0x160')][_0xa662('0x117')](db[_0xa662('0x5c')],{'through':_0xa662('0x18a')});db['Tag']['belongsToMany'](db[_0xa662('0x110')],{'through':_0xa662('0x161')});db['Tag'][_0xa662('0x117')](db[_0xa662('0x4a')],{'through':_0xa662('0x17c')});db[_0xa662('0x160')][_0xa662('0x117')](db[_0xa662('0x11e')],{'through':_0xa662('0x174')});db[_0xa662('0x160')][_0xa662('0x117')](db[_0xa662('0x10b')],{'through':_0xa662('0x183')});db['Tag'][_0xa662('0x117')](db['WhatsappInteraction'],{'through':_0xa662('0x1a2')});db[_0xa662('0x1a3')][_0xa662('0x105')](db[_0xa662('0x7b')],{'as':{'plural':_0xa662('0x1a4'),'singular':_0xa662('0x1a5')},'foreignKey':_0xa662('0x1a6'),'onDelete':_0xa662('0x103'),'hooks':!![]});db['Trigger'][_0xa662('0x105')](db[_0xa662('0x7b')],{'as':{'plural':_0xa662('0x1a7'),'singular':_0xa662('0x1a8')},'foreignKey':_0xa662('0x1a9'),'onDelete':'cascade','hooks':!![]});db['Trigger'][_0xa662('0x105')](db[_0xa662('0x73')],{'as':'Actions','foreignKey':'TriggerId','onDelete':'cascade','hooks':!![]});db[_0xa662('0x8d')][_0xa662('0x105')](db[_0xa662('0x92')],{'as':'Fields','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1a0'),'hooks':!![]});db['AnalyticDefaultReport']['hasMany'](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x19f')});db[_0xa662('0x90')][_0xa662('0x105')](db[_0xa662('0x92')],{'as':'Fields','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1aa')});db[_0xa662('0x92')][_0xa662('0x115')](db[_0xa662('0x90')],{'foreignKey':'MetricId'});db[_0xa662('0x95')]['hasMany'](db[_0xa662('0x97')],{'as':_0xa662('0x1ab'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0x97')]['hasMany'](db[_0xa662('0x99')],{'as':_0xa662('0x1ad'),'onDelete':_0xa662('0x103'),'foreignKey':'SubjectId'});db[_0xa662('0x97')][_0xa662('0x105')](db[_0xa662('0x99')],{'as':_0xa662('0x1ae'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1af')});db[_0xa662('0x97')][_0xa662('0x105')](db[_0xa662('0x99')],{'as':_0xa662('0x1b0'),'onDelete':_0xa662('0x103'),'foreignKey':'FieldId'});db['SalesforceConfiguration'][_0xa662('0x115')](db['SalesforceAccount'],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0x99')][_0xa662('0x105')](db['SalesforceField'],{'as':_0xa662('0x1b1'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0x99')][_0xa662('0x105')](db[_0xa662('0x99')],{'as':'Description','foreignKey':'DescriptionId'});db[_0xa662('0x99')][_0xa662('0x105')](db['SalesforceField'],{'as':'Field','foreignKey':_0xa662('0x1b3')});db[_0xa662('0x99')][_0xa662('0x115')](db['Variable'],{'as':_0xa662('0x87'),'foreignKey':_0xa662('0x1b4')});db[_0xa662('0x9b')]['hasMany'](db[_0xa662('0x9d')],{'as':'Configurations','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0x9d')][_0xa662('0x105')](db[_0xa662('0x1b5')],{'as':_0xa662('0x1ad'),'onDelete':_0xa662('0x103'),'foreignKey':'SubjectId'});db[_0xa662('0x9d')][_0xa662('0x105')](db[_0xa662('0x1b5')],{'as':'Descriptions','onDelete':_0xa662('0x103'),'foreignKey':'DescriptionId'});db[_0xa662('0x9d')]['hasMany'](db[_0xa662('0x1b5')],{'as':_0xa662('0x1b0'),'onDelete':_0xa662('0x103'),'foreignKey':'FieldId'});db[_0xa662('0x9d')]['belongsTo'](db[_0xa662('0x9b')],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x1ac')});db['SugarcrmField'][_0xa662('0x105')](db[_0xa662('0x1b5')],{'as':_0xa662('0x1b1'),'foreignKey':'SubjectId'});db['SugarcrmField'][_0xa662('0x105')](db[_0xa662('0x1b5')],{'as':_0xa662('0x1b6'),'foreignKey':_0xa662('0x1af')});db['SugarcrmField'][_0xa662('0x105')](db[_0xa662('0x1b5')],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db['SugarcrmField'][_0xa662('0x115')](db[_0xa662('0x87')],{'as':_0xa662('0x87'),'foreignKey':_0xa662('0x1b4')});db[_0xa662('0x9f')][_0xa662('0x105')](db[_0xa662('0xa1')],{'as':'Configurations','onDelete':_0xa662('0x103'),'foreignKey':'AccountId'});db[_0xa662('0xa1')][_0xa662('0x105')](db[_0xa662('0xa3')],{'as':_0xa662('0x1ad'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0xa1')]['hasMany'](db[_0xa662('0xa3')],{'as':'Descriptions','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1af')});db['DeskConfiguration'][_0xa662('0x105')](db[_0xa662('0xa3')],{'as':_0xa662('0x1b0'),'onDelete':'cascade','foreignKey':_0xa662('0x1b3')});db[_0xa662('0xa1')]['belongsTo'](db['DeskAccount'],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xa1')]['belongsToMany'](db[_0xa662('0x160')],{'through':_0xa662('0x1b8')});db[_0xa662('0xa3')][_0xa662('0x105')](db[_0xa662('0xa3')],{'as':_0xa662('0x1b1'),'foreignKey':_0xa662('0x1b2')});db['DeskField'][_0xa662('0x105')](db[_0xa662('0xa3')],{'as':_0xa662('0x1b6'),'foreignKey':'DescriptionId'});db[_0xa662('0xa3')][_0xa662('0x105')](db[_0xa662('0xa3')],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0xa3')][_0xa662('0x115')](db[_0xa662('0x87')],{'as':_0xa662('0x87'),'foreignKey':_0xa662('0x1b4')});db[_0xa662('0xa5')][_0xa662('0x105')](db[_0xa662('0x1b9')],{'as':_0xa662('0x1ab'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0x1b9')][_0xa662('0x105')](db[_0xa662('0x1ba')],{'as':_0xa662('0x1ad'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0x1b9')][_0xa662('0x105')](db[_0xa662('0x1ba')],{'as':_0xa662('0x1ae'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xa662('0x1b9')][_0xa662('0x105')](db[_0xa662('0x1ba')],{'as':_0xa662('0x1b0'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0x1b9')]['belongsTo'](db[_0xa662('0xa5')],{'as':'Account','foreignKey':_0xa662('0x1ac')});db[_0xa662('0x1ba')][_0xa662('0x105')](db[_0xa662('0x1ba')],{'as':_0xa662('0x1b1'),'foreignKey':'SubjectId'});db['ZohoField'][_0xa662('0x105')](db[_0xa662('0x1ba')],{'as':_0xa662('0x1b6'),'foreignKey':'DescriptionId'});db[_0xa662('0x1ba')][_0xa662('0x105')](db[_0xa662('0x1ba')],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0x1ba')][_0xa662('0x115')](db['Variable'],{'as':_0xa662('0x87'),'foreignKey':_0xa662('0x1b4')});db[_0xa662('0xa7')][_0xa662('0x105')](db[_0xa662('0xa8')],{'as':_0xa662('0x1ab'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xa8')]['hasMany'](db[_0xa662('0xa9')],{'as':'Subjects','foreignKey':_0xa662('0x1b2')});db['ZendeskConfiguration'][_0xa662('0x105')](db[_0xa662('0xa9')],{'as':'Descriptions','foreignKey':_0xa662('0x1af')});db['ZendeskConfiguration'][_0xa662('0x105')](db[_0xa662('0xa9')],{'as':'Fields','foreignKey':_0xa662('0x1b3')});db['ZendeskConfiguration'][_0xa662('0x115')](db[_0xa662('0xa7')],{'as':_0xa662('0x15e'),'foreignKey':'AccountId'});db[_0xa662('0xa8')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':_0xa662('0x1bb')});db[_0xa662('0xa9')]['hasMany'](db[_0xa662('0xa9')],{'as':_0xa662('0x1b1'),'foreignKey':_0xa662('0x1b2')});db['ZendeskField'][_0xa662('0x105')](db[_0xa662('0xa9')],{'as':_0xa662('0x1b6'),'foreignKey':_0xa662('0x1af')});db[_0xa662('0xa9')][_0xa662('0x105')](db[_0xa662('0xa9')],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0xa9')][_0xa662('0x115')](db['Variable'],{'as':'Variable','foreignKey':'VariableId'});db[_0xa662('0xab')][_0xa662('0x105')](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xac')][_0xa662('0x105')](db['FreshdeskField'],{'as':_0xa662('0x1ad'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0xac')][_0xa662('0x105')](db[_0xa662('0x1bc')],{'as':'Descriptions','onDelete':_0xa662('0x103'),'foreignKey':'DescriptionId'});db['FreshdeskConfiguration'][_0xa662('0x105')](db[_0xa662('0x1bc')],{'as':_0xa662('0x1b0'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0xac')][_0xa662('0x115')](db['FreshdeskAccount'],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xac')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':_0xa662('0x1bd')});db[_0xa662('0x1bc')][_0xa662('0x105')](db[_0xa662('0x1bc')],{'as':_0xa662('0x1b1'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0x1bc')][_0xa662('0x105')](db[_0xa662('0x1bc')],{'as':_0xa662('0x1b6'),'foreignKey':'DescriptionId'});db[_0xa662('0x1bc')]['hasMany'](db[_0xa662('0x1bc')],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0x1bc')][_0xa662('0x115')](db[_0xa662('0x87')],{'as':'Variable','foreignKey':_0xa662('0x1b4')});db[_0xa662('0x1be')][_0xa662('0x105')](db[_0xa662('0x1bf')],{'as':_0xa662('0x1ab'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0x1bf')][_0xa662('0x105')](db['VtigerField'],{'as':_0xa662('0x1ad'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0x1bf')][_0xa662('0x105')](db[_0xa662('0xaf')],{'as':_0xa662('0x1ae'),'foreignKey':'DescriptionId'});db[_0xa662('0x1bf')][_0xa662('0x105')](db[_0xa662('0xaf')],{'as':'Fields','foreignKey':_0xa662('0x1b3')});db['VtigerConfiguration'][_0xa662('0x115')](db[_0xa662('0x1be')],{'as':'Account','foreignKey':_0xa662('0x1ac')});db[_0xa662('0xaf')]['hasMany'](db['VtigerField'],{'as':'Subject','foreignKey':_0xa662('0x1b2')});db[_0xa662('0xaf')]['hasMany'](db[_0xa662('0xaf')],{'as':_0xa662('0x1b6'),'foreignKey':_0xa662('0x1af')});db[_0xa662('0xaf')][_0xa662('0x105')](db[_0xa662('0xaf')],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0xaf')]['belongsTo'](db['Variable'],{'as':_0xa662('0x87'),'foreignKey':_0xa662('0x1b4')});db[_0xa662('0xb0')]['hasMany'](db[_0xa662('0xb2')],{'as':_0xa662('0x1ab'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xb2')][_0xa662('0x105')](db[_0xa662('0xb4')],{'as':_0xa662('0x1ad'),'foreignKey':_0xa662('0x1b2')});db['ServicenowConfiguration'][_0xa662('0x105')](db[_0xa662('0xb4')],{'as':_0xa662('0x1ae'),'foreignKey':_0xa662('0x1af')});db['ServicenowConfiguration'][_0xa662('0x105')](db[_0xa662('0xb4')],{'as':'Fields','foreignKey':'FieldId'});db[_0xa662('0xb2')][_0xa662('0x115')](db[_0xa662('0xb0')],{'as':'Account','foreignKey':'AccountId'});db[_0xa662('0xb4')][_0xa662('0x105')](db[_0xa662('0xb4')],{'as':_0xa662('0x1b1'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0xb4')]['hasMany'](db[_0xa662('0xb4')],{'as':_0xa662('0x1b6'),'foreignKey':_0xa662('0x1af')});db[_0xa662('0xb4')][_0xa662('0x105')](db[_0xa662('0xb4')],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0xb4')][_0xa662('0x115')](db[_0xa662('0x87')],{'as':'Variable','foreignKey':'VariableId'});db[_0xa662('0xb6')][_0xa662('0x105')](db[_0xa662('0xb7')],{'as':_0xa662('0x1ab'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xb7')][_0xa662('0x105')](db[_0xa662('0xb8')],{'as':_0xa662('0x1ad'),'onDelete':_0xa662('0x103'),'foreignKey':'SubjectId'});db[_0xa662('0xb7')]['hasMany'](db[_0xa662('0xb8')],{'as':'Descriptions','onDelete':_0xa662('0x103'),'foreignKey':'DescriptionId'});db[_0xa662('0xb7')][_0xa662('0x105')](db[_0xa662('0xb8')],{'as':_0xa662('0x1b0'),'onDelete':_0xa662('0x103'),'foreignKey':'FieldId'});db[_0xa662('0xb7')][_0xa662('0x115')](db[_0xa662('0xb6')],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xb8')][_0xa662('0x105')](db[_0xa662('0xb8')],{'as':_0xa662('0x1b1'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0xb8')]['hasMany'](db[_0xa662('0xb8')],{'as':_0xa662('0x1b6'),'foreignKey':'DescriptionId'});db['Dynamics365Field'][_0xa662('0x105')](db['Dynamics365Field'],{'as':_0xa662('0x1b7'),'foreignKey':_0xa662('0x1b3')});db['Dynamics365Field'][_0xa662('0x115')](db[_0xa662('0x87')],{'as':'Variable','foreignKey':'VariableId'});db[_0xa662('0xba')]['hasMany'](db[_0xa662('0xbb')],{'as':_0xa662('0x1ab'),'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1ac')});db[_0xa662('0xbb')][_0xa662('0x105')](db[_0xa662('0xbd')],{'as':_0xa662('0x1ad'),'foreignKey':_0xa662('0x1b2')});db['FreshsalesConfiguration'][_0xa662('0x105')](db[_0xa662('0xbd')],{'as':_0xa662('0x1ae'),'foreignKey':'DescriptionId'});db[_0xa662('0xbb')][_0xa662('0x105')](db[_0xa662('0xbd')],{'as':_0xa662('0x1b0'),'foreignKey':_0xa662('0x1b3')});db[_0xa662('0xbb')][_0xa662('0x115')](db[_0xa662('0xba')],{'as':'Account','foreignKey':_0xa662('0x1ac')});db[_0xa662('0xbd')][_0xa662('0x105')](db[_0xa662('0xbd')],{'as':_0xa662('0x1b1'),'foreignKey':_0xa662('0x1b2')});db[_0xa662('0xbd')][_0xa662('0x105')](db[_0xa662('0xbd')],{'as':'Description','foreignKey':'DescriptionId'});db[_0xa662('0xbd')]['hasMany'](db[_0xa662('0xbd')],{'as':_0xa662('0x1b7'),'foreignKey':'FieldId'});db[_0xa662('0xbd')][_0xa662('0x115')](db['Variable'],{'as':'Variable','foreignKey':_0xa662('0x1b4')});db[_0xa662('0xc0')][_0xa662('0x115')](db['ChatWebsite'],{});db[_0xa662('0xc0')][_0xa662('0x115')](db[_0xa662('0xe7')],{'as':'List','foreignKey':_0xa662('0x16d')});db[_0xa662('0xc0')]['belongsTo'](db['CmContact'],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db['ChatQueueReport'][_0xa662('0x115')](db[_0xa662('0x5c')],{});db[_0xa662('0xc0')][_0xa662('0x115')](db[_0xa662('0x5e')],{});db[_0xa662('0xc0')][_0xa662('0x115')](db[_0xa662('0x101')],{});db[_0xa662('0xc0')][_0xa662('0x115')](db[_0xa662('0x61')],{});db['ChatInternalMessage']['belongsTo'](db[_0xa662('0x101')],{'onDelete':'cascade','foreignKey':_0xa662('0x1c0')});db['ChatInternalMessage'][_0xa662('0x115')](db[_0xa662('0x101')],{'onDelete':_0xa662('0x103'),'foreignKey':_0xa662('0x1c1')});db[_0xa662('0xc7')][_0xa662('0x105')](db[_0xa662('0xc5')],{'foreignKey':'SessionId','onDelete':_0xa662('0x103')});db[_0xa662('0xc7')][_0xa662('0x105')](db['JscriptyAnswerReport'],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0xa662('0xc9')][_0xa662('0x115')](db[_0xa662('0x47')],{});db[_0xa662('0xc9')]['belongsTo'](db[_0xa662('0xe7')],{'as':_0xa662('0x157'),'foreignKey':'ListId'});db['SmsQueueReport'][_0xa662('0x115')](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0xc9')][_0xa662('0x115')](db['SmsInteraction'],{});db[_0xa662('0xc9')][_0xa662('0x115')](db['SmsMessage'],{});db['SmsQueueReport'][_0xa662('0x115')](db['User'],{});db[_0xa662('0xc9')][_0xa662('0x115')](db[_0xa662('0x4e')],{});db['JscriptyProject'][_0xa662('0x105')](db[_0xa662('0xc7')],{'foreignKey':_0xa662('0x1c2')});db['JscriptyProject'][_0xa662('0x105')](db[_0xa662('0xc5')],{'foreignKey':_0xa662('0x1c2')});db['JscriptyProject']['hasMany'](db[_0xa662('0xc3')],{'foreignKey':_0xa662('0x1c2')});db[_0xa662('0xd3')]['belongsToMany'](db[_0xa662('0x101')],{'as':_0xa662('0x17d'),'through':_0xa662('0x138')});db['Team'][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':_0xa662('0x1c3')});db[_0xa662('0xd7')]['belongsToMany'](db[_0xa662('0x17')],{'through':_0xa662('0xff'),'as':_0xa662('0x122')});db[_0xa662('0xd7')]['belongsToMany'](db['MailQueue'],{'through':_0xa662('0x15c'),'as':'MailQueues'});db[_0xa662('0xd7')][_0xa662('0x117')](db[_0xa662('0x61')],{'through':_0xa662('0x18c'),'as':_0xa662('0x124')});db['Team'][_0xa662('0x117')](db['FaxQueue'],{'through':_0xa662('0x177'),'as':'FaxQueues'});db['Team'][_0xa662('0x117')](db['SmsQueue'],{'through':_0xa662('0x17f'),'as':'SmsQueues'});db[_0xa662('0xd7')]['belongsToMany'](db[_0xa662('0x54')],{'through':'team_has_openchannel_queues','as':_0xa662('0x128')});db[_0xa662('0xd7')]['belongsToMany'](db[_0xa662('0xfc')],{'through':_0xa662('0x1c4'),'as':'WhatsappQueues'});db[_0xa662('0xda')][_0xa662('0x105')](db[_0xa662('0x141')],{'as':'Hoppers','foreignKey':'CampaignId'});db['Campaign'][_0xa662('0x105')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':'CampaignId'});db[_0xa662('0xda')][_0xa662('0x105')](db['CmHopperHistory'],{'as':_0xa662('0x1c5'),'foreignKey':'CampaignId'});db[_0xa662('0xda')][_0xa662('0x105')](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0xa662('0x193')});db[_0xa662('0xda')][_0xa662('0x115')](db[_0xa662('0x144')],{'as':'Trunk','foreignKey':_0xa662('0x145')});db['Campaign'][_0xa662('0x115')](db[_0xa662('0x144')],{'as':_0xa662('0x146'),'foreignKey':'TrunkBackupId'});db[_0xa662('0xda')][_0xa662('0x115')](db[_0xa662('0x7d')],{'as':_0xa662('0x7d'),'foreignKey':_0xa662('0x16b')});db[_0xa662('0xda')][_0xa662('0x115')](db['SquareProject'],{'as':_0xa662('0xd3'),'foreignKey':_0xa662('0x1c6')});db['Campaign'][_0xa662('0x117')](db['CmList'],{'as':'Lists','through':_0xa662('0x1c7')});db['Campaign']['belongsToMany'](db[_0xa662('0xe7')],{'as':_0xa662('0x14a'),'through':_0xa662('0x1c8')});db[_0xa662('0x165')][_0xa662('0x115')](db[_0xa662('0x169')],{'as':_0xa662('0x169'),'foreignKey':_0xa662('0x18b')});db[_0xa662('0xdf')][_0xa662('0x115')](db[_0xa662('0x37')],{});db[_0xa662('0xdf')]['belongsTo'](db['MailInteraction'],{});db[_0xa662('0xdf')][_0xa662('0x115')](db[_0xa662('0x12f')],{'foreignKey':_0xa662('0x1c9'),'as':_0xa662('0x1ca')});db[_0xa662('0xdf')][_0xa662('0x115')](db[_0xa662('0x101')],{'foreignKey':_0xa662('0x1cb'),'as':_0xa662('0x1cc')});db[_0xa662('0xdf')][_0xa662('0x115')](db[_0xa662('0x101')],{'foreignKey':'ToUserId','as':_0xa662('0x1cd')});db[_0xa662('0xdf')][_0xa662('0x115')](db[_0xa662('0x15b')],{'foreignKey':_0xa662('0x1ce'),'as':'ToQueue'});db['MailTransferReport'][_0xa662('0x115')](db[_0xa662('0x12f')],{'foreignKey':'ToMailAccountId','as':_0xa662('0x1cf')});db['ChatTransferReport'][_0xa662('0x115')](db[_0xa662('0x5e')],{});db[_0xa662('0x1d0')][_0xa662('0x115')](db[_0xa662('0x5c')],{});db[_0xa662('0x1d0')][_0xa662('0x115')](db['ChatWebsite'],{'foreignKey':_0xa662('0x1d1'),'as':_0xa662('0x1ca')});db[_0xa662('0x1d0')][_0xa662('0x115')](db['User'],{'foreignKey':_0xa662('0x1cb'),'as':_0xa662('0x1cc')});db[_0xa662('0x1d0')][_0xa662('0x115')](db['User'],{'foreignKey':_0xa662('0x1d2'),'as':_0xa662('0x1cd')});db[_0xa662('0x1d0')]['belongsTo'](db[_0xa662('0x61')],{'foreignKey':_0xa662('0x1d3'),'as':_0xa662('0x1d4')});db['ChatTransferReport'][_0xa662('0x115')](db[_0xa662('0x56')],{'foreignKey':'ToChatWebsiteId','as':_0xa662('0x1cf')});db['FaxTransferReport'][_0xa662('0x115')](db[_0xa662('0x172')],{});db[_0xa662('0xe2')][_0xa662('0x115')](db[_0xa662('0x11e')],{});db[_0xa662('0xe2')]['belongsTo'](db['FaxAccount'],{'foreignKey':_0xa662('0x1d5'),'as':_0xa662('0x1ca')});db[_0xa662('0xe2')][_0xa662('0x115')](db['User'],{'foreignKey':_0xa662('0x1cb'),'as':_0xa662('0x1cc')});db[_0xa662('0xe2')]['belongsTo'](db[_0xa662('0x101')],{'foreignKey':_0xa662('0x1d2'),'as':_0xa662('0x1cd')});db[_0xa662('0xe2')][_0xa662('0x115')](db['FaxQueue'],{'foreignKey':_0xa662('0x1d6'),'as':_0xa662('0x1d4')});db[_0xa662('0xe2')]['belongsTo'](db[_0xa662('0x40')],{'foreignKey':_0xa662('0x1d7'),'as':'ToAccount'});db['OpenchannelTransferReport'][_0xa662('0x115')](db[_0xa662('0x53')],{});db[_0xa662('0xe4')][_0xa662('0x115')](db['OpenchannelInteraction'],{});db['OpenchannelTransferReport']['belongsTo'](db[_0xa662('0x132')],{'foreignKey':_0xa662('0x1d8'),'as':_0xa662('0x1ca')});db[_0xa662('0xe4')][_0xa662('0x115')](db[_0xa662('0x101')],{'foreignKey':_0xa662('0x1cb'),'as':_0xa662('0x1cc')});db[_0xa662('0xe4')]['belongsTo'](db[_0xa662('0x101')],{'foreignKey':'ToUserId','as':_0xa662('0x1cd')});db['OpenchannelTransferReport'][_0xa662('0x115')](db['OpenchannelQueue'],{'foreignKey':_0xa662('0x1d9'),'as':_0xa662('0x1d4')});db['OpenchannelTransferReport']['belongsTo'](db[_0xa662('0x132')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db[_0xa662('0xe5')][_0xa662('0x115')](db[_0xa662('0x4c')],{});db[_0xa662('0xe5')][_0xa662('0x115')](db[_0xa662('0x4a')],{});db['SmsTransferReport'][_0xa662('0x115')](db['SmsAccount'],{'foreignKey':'FromSmsAccountId','as':_0xa662('0x1ca')});db[_0xa662('0xe5')][_0xa662('0x115')](db['User'],{'foreignKey':_0xa662('0x1cb'),'as':_0xa662('0x1cc')});db['SmsTransferReport'][_0xa662('0x115')](db[_0xa662('0x101')],{'foreignKey':_0xa662('0x1d2'),'as':'ToAgent'});db[_0xa662('0xe5')]['belongsTo'](db['SmsQueue'],{'foreignKey':_0xa662('0x1da'),'as':_0xa662('0x1d4')});db[_0xa662('0xe5')][_0xa662('0x115')](db['SmsAccount'],{'foreignKey':_0xa662('0x1db'),'as':'ToAccount'});db[_0xa662('0xe7')][_0xa662('0x105')](db[_0xa662('0x79')],{'as':_0xa662('0x16e'),'foreignKey':'ListId','onDelete':_0xa662('0x103')});db[_0xa662('0xe7')][_0xa662('0x105')](db[_0xa662('0x1dc')],{'as':'CustomFields','foreignKey':_0xa662('0x16d')});db[_0xa662('0xe7')][_0xa662('0x105')](db['CmContact'],{'as':'Contacts','onDelete':_0xa662('0x103'),'foreignKey':'ListId'});db[_0xa662('0xe7')][_0xa662('0x105')](db[_0xa662('0x6c')],{'as':_0xa662('0x10a'),'foreignKey':_0xa662('0x16d')});db[_0xa662('0xe7')][_0xa662('0x105')](db[_0xa662('0x6e')],{'as':_0xa662('0x1dd'),'foreignKey':_0xa662('0x16d')});db[_0xa662('0xe7')][_0xa662('0x105')](db[_0xa662('0x70')],{'as':_0xa662('0x70'),'foreignKey':'ListId'});db[_0xa662('0xe7')][_0xa662('0x117')](db['VoiceQueue'],{'as':_0xa662('0x1de'),'through':_0xa662('0x1df')});db[_0xa662('0xe7')]['belongsToMany'](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':'cm_user_has_lists'});db[_0xa662('0x1e0')][_0xa662('0x105')](db[_0xa662('0x108')],{'as':'Extensions','onDelete':_0xa662('0x103')});db[_0xa662('0x1e0')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':_0xa662('0x1e1')});db['UserProfile'][_0xa662('0x105')](db[_0xa662('0x101')],{'as':_0xa662('0x17d'),'foreignKey':'userProfileId'});db['UserProfile'][_0xa662('0x105')](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':_0xa662('0x116'),'onDelete':_0xa662('0x103')});db[_0xa662('0x1e2')][_0xa662('0x105')](db[_0xa662('0xed')],{'as':_0xa662('0x1e3'),'foreignKey':_0xa662('0x1e4'),'onDelete':_0xa662('0x103')});db[_0xa662('0xf1')][_0xa662('0x105')](db[_0xa662('0x79')],{'as':_0xa662('0x16e'),'foreignKey':_0xa662('0x1e5'),'onDelete':_0xa662('0x103')});db[_0xa662('0xf1')][_0xa662('0x105')](db[_0xa662('0x77')],{'as':'Answers','foreignKey':'WhatsappAccountId'});db[_0xa662('0xf1')][_0xa662('0x105')](db[_0xa662('0x1e6')],{'as':_0xa662('0x14b'),'foreignKey':_0xa662('0x1e5')});db[_0xa662('0xf1')]['hasMany'](db[_0xa662('0xf5')],{'as':_0xa662('0x156')});db['WhatsappAccount']['hasMany'](db[_0xa662('0xf3')],{'as':_0xa662('0x13c')});db['WhatsappAccount']['belongsTo'](db[_0xa662('0xe7')],{'as':_0xa662('0x157'),'foreignKey':'ListId'});db[_0xa662('0xf1')][_0xa662('0x115')](db['Pause'],{'as':_0xa662('0x15a'),'foreignKey':_0xa662('0x147')});db['WhatsappAccount'][_0xa662('0x117')](db['User'],{'as':_0xa662('0x148'),'through':'user_has_whatsapp_accounts'});db[_0xa662('0xf3')][_0xa662('0x115')](db[_0xa662('0x101')],{'onDelete':_0xa662('0x16a')});db['WhatsappApplication'][_0xa662('0x115')](db[_0xa662('0xfc')],{'onDelete':_0xa662('0x16a')});db[_0xa662('0xf3')][_0xa662('0x115')](db[_0xa662('0xf1')],{'onDelete':_0xa662('0x16a')});db[_0xa662('0xf3')][_0xa662('0x115')](db[_0xa662('0x7d')],{'onDelete':_0xa662('0x16a'),'foreignKey':_0xa662('0x16b')});db[_0xa662('0xf3')][_0xa662('0x115')](db['Tag'],{'onDelete':'restrict','foreignKey':_0xa662('0x16c')});db['WhatsappInteraction']['hasMany'](db[_0xa662('0x1e6')],{'as':_0xa662('0x14b'),'onDelete':'cascade','foreignKey':_0xa662('0x1e7')});db[_0xa662('0xf5')][_0xa662('0x115')](db['WhatsappAccount'],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x1e5')});db['WhatsappInteraction']['belongsTo'](db[_0xa662('0x68')],{'as':_0xa662('0x150'),'foreignKey':'ContactId'});db[_0xa662('0xf5')][_0xa662('0x115')](db[_0xa662('0x101')],{'as':'Owner','foreignKey':_0xa662('0x104')});db[_0xa662('0xf5')]['belongsToMany'](db['Tag'],{'through':_0xa662('0x1a2'),'as':_0xa662('0x162')});db[_0xa662('0xf5')][_0xa662('0x117')](db[_0xa662('0x160')],{'through':_0xa662('0x1a2'),'as':_0xa662('0x163')});db['WhatsappInteraction'][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x17d'),'through':_0xa662('0x121'),'foreignKey':'WhatsappInteractionId'});db[_0xa662('0x1e6')][_0xa662('0x115')](db[_0xa662('0x101')],{'as':_0xa662('0x101')});db[_0xa662('0x1e6')][_0xa662('0x115')](db[_0xa662('0x68')],{'onDelete':_0xa662('0x103'),'as':'Contact'});db[_0xa662('0x1e6')][_0xa662('0x115')](db['WhatsappInteraction'],{'onDelete':_0xa662('0x103'),'as':'Interaction','foreignKey':_0xa662('0x1e7')});db[_0xa662('0x1e6')][_0xa662('0x115')](db['WhatsappAccount'],{'as':_0xa662('0x15e'),'foreignKey':_0xa662('0x1e5')});db[_0xa662('0xf8')][_0xa662('0x115')](db['WhatsappAccount'],{});db[_0xa662('0xf8')][_0xa662('0x115')](db[_0xa662('0xe7')],{'as':_0xa662('0x157'),'foreignKey':'ListId'});db[_0xa662('0xf8')][_0xa662('0x115')](db['CmContact'],{'as':_0xa662('0x150'),'foreignKey':_0xa662('0x151')});db[_0xa662('0xf8')][_0xa662('0x115')](db['WhatsappInteraction'],{});db[_0xa662('0xf8')][_0xa662('0x115')](db[_0xa662('0xfc')],{});db[_0xa662('0xf8')]['belongsTo'](db[_0xa662('0x1e6')],{});db[_0xa662('0xf8')]['belongsTo'](db[_0xa662('0x101')],{});db[_0xa662('0xfa')][_0xa662('0x115')](db['WhatsappMessage'],{});db[_0xa662('0xfa')]['belongsTo'](db[_0xa662('0xf5')],{});db[_0xa662('0xfa')][_0xa662('0x115')](db[_0xa662('0xf1')],{'foreignKey':'FromWhatsappAccountId','as':_0xa662('0x1ca')});db[_0xa662('0xfa')]['belongsTo'](db[_0xa662('0xf1')],{'foreignKey':_0xa662('0x1e8'),'as':_0xa662('0x1cf')});db[_0xa662('0xfa')][_0xa662('0x115')](db[_0xa662('0xfc')],{'foreignKey':_0xa662('0x1e9'),'as':_0xa662('0x1d4')});db[_0xa662('0xfa')][_0xa662('0x115')](db['User'],{'foreignKey':_0xa662('0x1cb'),'as':_0xa662('0x1cc')});db['WhatsappTransferReport'][_0xa662('0x115')](db[_0xa662('0x101')],{'foreignKey':'ToUserId','as':_0xa662('0x1cd')});db[_0xa662('0xfc')][_0xa662('0x117')](db[_0xa662('0x101')],{'as':_0xa662('0x148'),'through':_0xa662('0x12a'),'foreignKey':_0xa662('0x1ea')});db[_0xa662('0xfc')][_0xa662('0x117')](db[_0xa662('0xd7')],{'through':_0xa662('0x1c4'),'as':'Teams'});module[_0xa662('0x1eb')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa0fc=['../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','ServicenowField','Dynamics365Account','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/userProfile/userProfile.model','UserProfileSection','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','hasMany','Recordings','UserId','Extensions','CmHopperFinal','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','ChatGroup','Groups','chat_group_has_users','belongsToMany','CmContact','Contacts','cm_user_has_contacts','cm_user_has_lists','Team','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','UserMailQueue','ChatQueues','FaxQueues','OpenchannelQueues','WhatsappQueues','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','user_has_sms_accounts','user_has_whatsapp_accounts','SquareProject','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','belongsTo','TrunkId','TrunkBackup','TrunkBackupId','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Teams','TeamVoiceQueue','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailbox','mailboxuser','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','Dispositions','Answers','MailMessage','ListId','TemplateId','Pause','Agents','team_has_mail_queues','Account','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','MailApplication','restrict','IntervalId','TagId','MailQueueReport','Dashboard','Items','FaxAccountId','Interactions','List','Owner','fax_interaction_has_tags','FaxInteractionId','AttachmentId','team_has_fax_queues','SmsAccountId','SmsMessage','SmsInteraction','mandatoryDispositionPause','SmsQueue','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','ChatApplication','OpenchannelQueueReport','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatGroupId','HopperHistories','CompanyId','cm_contact_has_tags','CampaignId','OwnerId','CmHopperBlack','Condition','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','Intervals','MailApplications','ChatApplications','FaxApplications','Schedule','DefaultReportId','CustomReportId','Mohs','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','AnalyticFieldReport','AnalyticMetric','Fields','MetricId','SalesforceConfiguration','Configurations','AccountId','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Field','VariableId','DeskAccount','ZendeskConfiguration','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','FreshsalesAccount','FreshsalesConfiguration','FreshsalesField','ChatQueueReport','ChatInternalMessage','FromId','ToId','SessionId','SmsQueueReport','ProjectId','user_has_teams','team_has_chat_queues','SmsQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToAccount','FromChatWebsiteId','FromAgent','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','CustomFields','Queues','userProfileId','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','whatsapp_interaction_has_tags','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','../config/environment','sequelize','jstz','determine','defaultsDeep','motion2','xC@LL1234','127.0.0.1','name','utf8','utf8_general_ci','sequelizeHistory','xcall','mysql','utf8mb4','database','password','options','username','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatQueue','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','Variable','../api/integration/integration.model','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount'];(function(_0x406dcb,_0x215832){var _0x5d8cdf=function(_0x27dcdb){while(--_0x27dcdb){_0x406dcb['push'](_0x406dcb['shift']());}};_0x5d8cdf(++_0x215832);}(_0xa0fc,0x158));var _0xca0f=function(_0x485abd,_0x32c7c1){_0x485abd=_0x485abd-0x0;var _0x3379f1=_0xa0fc[_0x485abd];return _0x3379f1;};'use strict';var config=require(_0xca0f('0x0'));var Sequelize=require(_0xca0f('0x1'));var _=require('lodash');var jstz=require(_0xca0f('0x2'));var timezone=jstz[_0xca0f('0x3')]();config[_0xca0f('0x1')]=_[_0xca0f('0x4')](config[_0xca0f('0x1')],{'database':_0xca0f('0x5'),'username':'xcall','password':_0xca0f('0x6'),'options':{'host':_0xca0f('0x7'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xca0f('0x8')](),'define':{'charset':_0xca0f('0x9'),'collate':_0xca0f('0xa')}}});config['sequelizeHistory']=_[_0xca0f('0x4')](config[_0xca0f('0xb')],{'database':'motion2','username':_0xca0f('0xc'),'password':_0xca0f('0x6'),'options':{'host':_0xca0f('0x7'),'port':0xcea,'dialect':_0xca0f('0xd'),'dialectOptions':{'charset':_0xca0f('0xe')},'logging':![],'timezone':timezone[_0xca0f('0x8')](),'define':{'charset':_0xca0f('0x9'),'collate':_0xca0f('0xa')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xca0f('0x1')][_0xca0f('0xf')],config[_0xca0f('0x1')]['username'],config[_0xca0f('0x1')][_0xca0f('0x10')],config[_0xca0f('0x1')][_0xca0f('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory']['database'],config[_0xca0f('0xb')][_0xca0f('0x12')],config[_0xca0f('0xb')][_0xca0f('0x10')],config[_0xca0f('0xb')][_0xca0f('0x11')])};db[_0xca0f('0x13')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/user/user.model');db[_0xca0f('0x15')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x16'));db[_0xca0f('0x17')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x18'));db[_0xca0f('0x19')]=db['sequelize']['import'](_0xca0f('0x1a'));db[_0xca0f('0x1b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x1c'));db[_0xca0f('0x1d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x1e'));db[_0xca0f('0x1f')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x20'));db['ScreenRecording']=db['sequelize']['import'](_0xca0f('0x21'));db[_0xca0f('0x22')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x23'));db[_0xca0f('0x24')]=db['sequelize'][_0xca0f('0x14')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xca0f('0x25')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/voiceCallReport/voiceCallReport.model');db['VoiceDialReport']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x26'));db[_0xca0f('0x27')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x28'));db[_0xca0f('0x29')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x2a'));db[_0xca0f('0x2b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x2c'));db[_0xca0f('0x2d')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x2e'));db['VoiceTransferReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x2f'));db[_0xca0f('0x30')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x31'));db[_0xca0f('0x32')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x33'));db[_0xca0f('0x34')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/userChatQueue/userChatQueue.model');db['UserMailQueue']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x35'));db[_0xca0f('0x36')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x37'));db[_0xca0f('0x38')]=db['sequelize']['import'](_0xca0f('0x39'));db[_0xca0f('0x3a')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0xca0f('0x3b')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x3c'));db[_0xca0f('0x3d')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x3e'));db[_0xca0f('0x3f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x40'));db[_0xca0f('0x41')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x42'));db[_0xca0f('0x43')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x44'));db[_0xca0f('0x45')]=db['sequelize']['import'](_0xca0f('0x46'));db[_0xca0f('0x47')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x48'));db['MailMessage']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x49'));db['MailApplication']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/mailApplication/mailApplication.model');db['MailQueueReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x4a'));db['Dashboard']=db[_0xca0f('0x1')]['import'](_0xca0f('0x4b'));db[_0xca0f('0x4c')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/dashboardItem/dashboardItem.model');db[_0xca0f('0x4d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x4e'));db[_0xca0f('0x4f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x50'));db[_0xca0f('0x51')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x52'));db[_0xca0f('0x53')]=db[_0xca0f('0x1')]['import']('../api/faxMessage/faxMessage.model');db[_0xca0f('0x54')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x55'));db[_0xca0f('0x56')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x57'));db[_0xca0f('0x58')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/smsAccount/smsAccount.model');db[_0xca0f('0x59')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/smsApplication/smsApplication.model');db['SmsInteraction']=db['sequelize'][_0xca0f('0x14')]('../api/smsInteraction/smsInteraction.model');db['SmsMessage']=db[_0xca0f('0x1')]['import']('../api/smsMessage/smsMessage.model');db['SmsQueue']=db[_0xca0f('0x1')]['import'](_0xca0f('0x5a'));db[_0xca0f('0x5b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x5c'));db[_0xca0f('0x5d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x5e'));db[_0xca0f('0x5f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x60'));db['OpenchannelMessage']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x61'));db[_0xca0f('0x62')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x63'));db[_0xca0f('0x64')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x65'));db['OpenchannelQueueReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x66'));db['ChatApplication']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/chatApplication/chatApplication.model');db[_0xca0f('0x67')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/chatInteraction/chatInteraction.model');db[_0xca0f('0x68')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x69'));db[_0xca0f('0x6a')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0xca0f('0x6b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x6c'));db['ChatGroup']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x6d'));db[_0xca0f('0x6e')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x6f'));db[_0xca0f('0x70')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x71'));db['CmContact']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x72'));db[_0xca0f('0x73')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x74'));db['CmHopperBlack']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x75'));db['CmHopperFinal']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x76'));db[_0xca0f('0x77')]=db[_0xca0f('0x1')]['import']('../api/cmHopperHistory/cmHopperHistory.model');db[_0xca0f('0x78')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x79'));db[_0xca0f('0x7a')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x7b'));db[_0xca0f('0x7c')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x7d'));db[_0xca0f('0x7e')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x7f'));db[_0xca0f('0x80')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x81'));db[_0xca0f('0x82')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x83'));db['Condition']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x84'));db[_0xca0f('0x85')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x86'));db['Pause']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x87'));db[_0xca0f('0x88')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x89'));db[_0xca0f('0x8a')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db['sequelize'][_0xca0f('0x14')]('../api/schedule/schedule.model');db[_0xca0f('0x8b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x8c'));db[_0xca0f('0x8d')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x8e'));db[_0xca0f('0x8f')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x90'));db[_0xca0f('0x91')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/trigger/trigger.model');db[_0xca0f('0x92')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/variable/variable.model');db['Integration']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x93'));db['IntegrationReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x94'));db[_0xca0f('0x95')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x96'));db[_0xca0f('0x97')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x98'));db[_0xca0f('0x99')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x9a'));db['AnalyticMetric']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x9b'));db['AnalyticFieldReport']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x9c'));db[_0xca0f('0x9d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x9e'));db[_0xca0f('0x9f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xa0'));db['SalesforceConfiguration']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xa1'));db['SalesforceField']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intSalesforceField/intSalesforceField.model');db[_0xca0f('0xa2')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xa3'));db[_0xca0f('0xa4')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xa5'));db[_0xca0f('0xa6')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xa7'));db['DeskAccount']=db[_0xca0f('0x1')]['import'](_0xca0f('0xa8'));db[_0xca0f('0xa9')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xaa'));db[_0xca0f('0xab')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xac'));db[_0xca0f('0xad')]=db['sequelize']['import'](_0xca0f('0xae'));db[_0xca0f('0xaf')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xb0'));db[_0xca0f('0xb1')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xb2'));db[_0xca0f('0xb3')]=db[_0xca0f('0x1')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db['ZendeskConfiguration']=db['sequelize'][_0xca0f('0x14')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0xca0f('0xb4')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xb5'));db[_0xca0f('0xb6')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xb7'));db['FreshdeskConfiguration']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xb8'));db[_0xca0f('0xb9')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xba'));db[_0xca0f('0xbb')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xbc'));db[_0xca0f('0xbd')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xbe'));db[_0xca0f('0xbf')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xc0'));db[_0xca0f('0xc1')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intServicenowAccount/intServicenowAccount.model');db[_0xca0f('0xc2')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xca0f('0xc3')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intServicenowField/intServicenowField.model');db[_0xca0f('0xc4')]=db[_0xca0f('0x1')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0xca0f('0xc5')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0xca0f('0xc6')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xc7'));db['FreshsalesAccount']=db[_0xca0f('0x1')]['import']('../api/intFreshsalesAccount/intFreshsalesAccount.model');db['FreshsalesConfiguration']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xc8'));db['FreshsalesField']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xc9'));db['Integration']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/integration/integration.model');db['Network']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xca'));db['ChatQueueReport']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xcb'));db['ChatInternalMessage']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xcc'));db[_0xca0f('0xcd')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xce'));db[_0xca0f('0xcf')]=db['sequelize']['import'](_0xca0f('0xd0'));db[_0xca0f('0xd1')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xd2'));db['SmsQueueReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xd3'));db[_0xca0f('0xd4')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xd5'));db[_0xca0f('0xd6')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xd7'));db[_0xca0f('0xd8')]=db['sequelize']['import'](_0xca0f('0xd9'));db[_0xca0f('0xda')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xdb'));db[_0xca0f('0xdc')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xdd'));db['SquareProject']=db['sequelize'][_0xca0f('0x14')]('../api/squareProject/squareProject.model');db[_0xca0f('0xde')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xdf'));db[_0xca0f('0xe0')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xe1'));db['Team']=db['sequelize']['import'](_0xca0f('0xe2'));db[_0xca0f('0xe3')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xe4'));db[_0xca0f('0xe5')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xe6'));db['Migration']=db[_0xca0f('0x1')]['import'](_0xca0f('0xe7'));db[_0xca0f('0xe8')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xe9'));db[_0xca0f('0xea')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xeb'));db[_0xca0f('0xec')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xed'));db[_0xca0f('0xee')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xef'));db['FaxTransferReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf0'));db[_0xca0f('0xf1')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xf2'));db[_0xca0f('0xf3')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf4'));db[_0xca0f('0xf5')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf6'));db[_0xca0f('0xf7')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/voicePrefix/voicePrefix.model');db['UserProfile']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf8'));db[_0xca0f('0xf9')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/userProfileSection/userProfileSection.model');db[_0xca0f('0xfa')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xfb'));db[_0xca0f('0xfc')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xfd'));db[_0xca0f('0xfe')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xff'));db[_0xca0f('0x100')]=db['sequelize'][_0xca0f('0x14')]('../api/whatsappApplication/whatsappApplication.model');db[_0xca0f('0x101')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0xca0f('0x102')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x103'));db[_0xca0f('0x104')]=db['sequelize'][_0xca0f('0x14')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x105'));db[_0xca0f('0x106')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x107'));db['CloudProvider']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/cloudProvider/cloudProvider.model');db['TeamVoiceQueue']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x108'));db[_0xca0f('0x13')][_0xca0f('0x109')](db[_0xca0f('0x22')],{'as':_0xca0f('0x22'),'onDelete':_0xca0f('0x10a'),'foreignKey':'UserId'});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x1f')],{'as':_0xca0f('0x10c'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')]['hasMany'](db[_0xca0f('0x30')],{'as':'VoiceQueuesRt','foreignKey':'UserId'});db[_0xca0f('0x13')]['hasMany'](db['VoiceExtension'],{'as':_0xca0f('0x10e'),'onDelete':'cascade','hooks':!![]});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x77')],{'as':_0xca0f('0x111'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x78')],{'as':_0xca0f('0x78'),'foreignKey':'UserId'});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x5f')],{'as':_0xca0f('0x112'),'foreignKey':'UserId'});db['User'][_0xca0f('0x10b')](db[_0xca0f('0x67')],{'as':_0xca0f('0x113'),'foreignKey':'UserId'});db[_0xca0f('0x13')][_0xca0f('0x10b')](db['SmsInteraction'],{'as':_0xca0f('0x114'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x51')],{'as':_0xca0f('0x115'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db['MailInteraction'],{'as':_0xca0f('0x116'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x101')],{'as':_0xca0f('0x117'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0xfc')],{'as':_0xca0f('0x118'),'foreignKey':_0xca0f('0x119')});db['User']['belongsTo'](db['UserProfile'],{'as':'UserProfile','foreignKey':'userProfileId'});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x11a')],{'as':_0xca0f('0x11b'),'through':_0xca0f('0x11c')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x11f'),'through':_0xca0f('0x120')});db['User'][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':'Lists','through':_0xca0f('0x121')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':'user_has_teams'});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x47')],{'as':_0xca0f('0x116'),'through':_0xca0f('0x123')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x67')],{'as':_0xca0f('0x113'),'through':_0xca0f('0x124')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['FaxInteraction'],{'as':_0xca0f('0x115'),'through':_0xca0f('0x125')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['SmsInteraction'],{'as':'SmsInteractions','through':_0xca0f('0x126')});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x5f')],{'as':_0xca0f('0x112'),'through':_0xca0f('0x127')});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x101')],{'as':_0xca0f('0x117'),'through':_0xca0f('0x128')});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x1d')],{'as':_0xca0f('0x129'),'through':_0xca0f('0x32'),'required':![]});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x43')],{'as':_0xca0f('0x12a'),'through':_0xca0f('0x12b'),'required':![]});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x6b')],{'as':_0xca0f('0x12c'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x54')],{'as':_0xca0f('0x12d'),'through':_0xca0f('0x36'),'required':![]});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['SmsQueue'],{'as':'SmsQueues','through':'UserSmsQueue','required':![]});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['OpenchannelQueue'],{'as':_0xca0f('0x12e'),'through':_0xca0f('0x3a'),'required':![]});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x106')],{'as':_0xca0f('0x12f'),'through':_0xca0f('0x3b'),'required':![]});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0xf5')],{'through':_0xca0f('0x121')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['VoicePrefix'],{'as':_0xca0f('0x130'),'through':_0xca0f('0x131'),'required':![]});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x64')],{'as':_0xca0f('0x132'),'through':_0xca0f('0x133')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x4d')],{'as':'FaxAccounts','through':_0xca0f('0x134')});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x41')],{'as':'MailAccounts','through':_0xca0f('0x135')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['OpenchannelAccount'],{'as':_0xca0f('0x136'),'through':_0xca0f('0x137')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['SmsAccount'],{'as':'SmsAccounts','through':_0xca0f('0x138')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0xfe')],{'as':'WhatsappAccounts','through':_0xca0f('0x139')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x13a')],{'as':_0xca0f('0x13b'),'through':_0xca0f('0x13c')});db[_0xca0f('0x15')][_0xca0f('0x10b')](db['VoiceExtension'],{'as':_0xca0f('0x13d'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x13e')});db[_0xca0f('0x17')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x19')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':_0xca0f('0x13f'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x1b')][_0xca0f('0x11d')](db[_0xca0f('0x8b')],{'as':_0xca0f('0x140'),'through':_0xca0f('0x141')});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db[_0xca0f('0x30')],{'as':_0xca0f('0x142'),'foreignKey':_0xca0f('0x143')});db['VoiceQueue'][_0xca0f('0x10b')](db['CmHopper'],{'as':_0xca0f('0x144'),'foreignKey':_0xca0f('0x143')});db['VoiceQueue'][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x143')});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':'VoiceQueueId'});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db['CmHopperBlack'],{'as':_0xca0f('0x145'),'foreignKey':'VoiceQueueId'});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db[_0xca0f('0xd1')],{'as':_0xca0f('0x146'),'foreignKey':_0xca0f('0x143')});db['VoiceQueue'][_0xca0f('0x147')](db[_0xca0f('0x2d')],{'as':_0xca0f('0x2d'),'foreignKey':_0xca0f('0x148')});db[_0xca0f('0x1d')][_0xca0f('0x147')](db[_0xca0f('0x2d')],{'as':_0xca0f('0x149'),'foreignKey':_0xca0f('0x14a')});db[_0xca0f('0x1d')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'as':'Interval','foreignKey':'IntervalId'});db[_0xca0f('0x1d')][_0xca0f('0x147')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x14c'),'through':_0xca0f('0x14d')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db['User'],{'as':'Agents','through':_0xca0f('0x32')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'as':_0xca0f('0x14e'),'through':_0xca0f('0x14f')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x150'),'through':_0xca0f('0x151')});db[_0xca0f('0x1f')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':'User','foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x152')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x13'),'foreignKey':_0xca0f('0x10d')});db['VoiceMail'][_0xca0f('0x10b')](db[_0xca0f('0x24')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'mailboxuser','sourceKey':_0xca0f('0x154')});db['VoiceMailMessage'][_0xca0f('0x147')](db[_0xca0f('0x22')],{'foreignKey':_0xca0f('0x155'),'targetKey':_0xca0f('0x154')});db[_0xca0f('0x25')][_0xca0f('0x10b')](db[_0xca0f('0x29')],{'as':_0xca0f('0x156'),'foreignKey':_0xca0f('0x157'),'constraints':![]});db[_0xca0f('0x25')]['hasMany'](db['VoiceAgentReport'],{'as':_0xca0f('0x158'),'foreignKey':_0xca0f('0x157'),'constraints':![]});db[_0xca0f('0x25')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x13'),'foreignKey':'UserId'});db[_0xca0f('0x25')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x3d')]['belongsTo'](db[_0xca0f('0x41')],{'as':_0xca0f('0x41'),'foreignKey':'MailAccountId'});db[_0xca0f('0x3f')][_0xca0f('0x147')](db[_0xca0f('0x41')],{'as':_0xca0f('0x41'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x41')]['hasOne'](db[_0xca0f('0x3d')],{'as':'Imap','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x41')][_0xca0f('0x109')](db[_0xca0f('0x3f')],{'as':'Smtp','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x41')][_0xca0f('0x10b')](db['Disposition'],{'as':_0xca0f('0x15c'),'foreignKey':_0xca0f('0x15b'),'onDelete':_0xca0f('0x10a')});db['MailAccount']['hasMany'](db['CannedAnswer'],{'as':_0xca0f('0x15d'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x41')][_0xca0f('0x10b')](db[_0xca0f('0x15e')],{'as':_0xca0f('0x153'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x41')][_0xca0f('0x10b')](db[_0xca0f('0x47')],{'as':'Interactions'});db['MailAccount'][_0xca0f('0x10b')](db['MailApplication'],{'as':_0xca0f('0x13f')});db['MailAccount'][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':'List','foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x41')][_0xca0f('0x147')](db[_0xca0f('0x8f')],{'as':_0xca0f('0x8f'),'foreignKey':_0xca0f('0x160')});db[_0xca0f('0x41')]['belongsTo'](db[_0xca0f('0x161')],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x41')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x135')});db[_0xca0f('0x43')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x12b')});db[_0xca0f('0x43')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':_0xca0f('0x163'),'as':_0xca0f('0x14e')});db[_0xca0f('0x47')][_0xca0f('0x10b')](db[_0xca0f('0x15e')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'MailInteractionId'});db[_0xca0f('0x47')][_0xca0f('0x147')](db[_0xca0f('0x41')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x47')][_0xca0f('0x147')](db['CmContact'],{'as':'Contact','foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x47')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':'Owner','foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x47')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x165'),'as':_0xca0f('0x166')});db['MailInteraction']['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x165'),'as':_0xca0f('0x167')});db[_0xca0f('0x47')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'through':_0xca0f('0x123'),'foreignKey':_0xca0f('0x169')});db[_0xca0f('0x15e')][_0xca0f('0x10b')](db[_0xca0f('0xe8')],{'as':_0xca0f('0x16a'),'onDelete':'cascade'});db[_0xca0f('0x15e')]['belongsTo'](db['User'],{'as':_0xca0f('0x13')});db['MailMessage'][_0xca0f('0x147')](db['CmContact'],{'onDelete':'cascade','as':_0xca0f('0x159')});db[_0xca0f('0x15e')][_0xca0f('0x147')](db[_0xca0f('0x47')],{'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x169')});db['MailMessage'][_0xca0f('0x147')](db[_0xca0f('0x41')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x15b')});db['MailMessage'][_0xca0f('0x147')](db['ChatWebsite'],{'as':_0xca0f('0x64'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x15e')]['belongsTo'](db['ChatOfflineMessage'],{'as':_0xca0f('0x6a'),'foreignKey':_0xca0f('0x16d')});db[_0xca0f('0x16e')][_0xca0f('0x147')](db['User'],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x43')],{'onDelete':'restrict'});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x41')],{'onDelete':'restrict'});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x171')});db[_0xca0f('0x172')][_0xca0f('0x147')](db['MailAccount'],{});db[_0xca0f('0x172')]['belongsTo'](db[_0xca0f('0xf5')],{'as':'List','foreignKey':'ListId'});db[_0xca0f('0x172')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x172')][_0xca0f('0x147')](db[_0xca0f('0x47')],{});db[_0xca0f('0x172')][_0xca0f('0x147')](db['MailMessage'],{});db[_0xca0f('0x172')]['belongsTo'](db['User'],{});db[_0xca0f('0x172')]['belongsTo'](db[_0xca0f('0x43')],{});db[_0xca0f('0x173')][_0xca0f('0x10b')](db[_0xca0f('0x4c')],{'as':_0xca0f('0x174'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db['Disposition'],{'as':_0xca0f('0x15c'),'foreignKey':_0xca0f('0x175'),'onDelete':'cascade'});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x80')],{'as':_0xca0f('0x15d'),'foreignKey':_0xca0f('0x175')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x51')],{'as':_0xca0f('0x176')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x4f')],{'as':_0xca0f('0x13f')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':'Exntensions','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db['FaxMessage'],{'as':_0xca0f('0x153')});db[_0xca0f('0x4d')]['belongsTo'](db[_0xca0f('0x2d')],{'as':'Trunk'});db[_0xca0f('0x4d')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x4d')][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x4d')]['belongsToMany'](db['User'],{'as':'Agents','through':_0xca0f('0x134')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db['FaxQueue'],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db[_0xca0f('0x8d')],{'onDelete':'restrict','foreignKey':_0xca0f('0x171')});db['FaxInteraction'][_0xca0f('0x10b')](db[_0xca0f('0x53')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'FaxInteractionId'});db[_0xca0f('0x51')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x175')});db[_0xca0f('0x51')][_0xca0f('0x147')](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x51')]['belongsTo'](db[_0xca0f('0x13')],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x51')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x179'),'as':_0xca0f('0x166')});db[_0xca0f('0x51')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x179'),'as':_0xca0f('0x167')});db[_0xca0f('0x51')]['belongsToMany'](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x125'),'foreignKey':_0xca0f('0x17a')});db[_0xca0f('0x53')]['belongsTo'](db[_0xca0f('0x13')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x13')});db[_0xca0f('0x53')][_0xca0f('0x147')](db[_0xca0f('0x51')],{'as':'Interaction','foreignKey':_0xca0f('0x17a')});db[_0xca0f('0x53')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':'cascade','as':_0xca0f('0x159')});db[_0xca0f('0x53')][_0xca0f('0x147')](db['Attachment'],{'as':'Attachment','foreignKey':_0xca0f('0x17b')});db[_0xca0f('0x53')]['belongsTo'](db[_0xca0f('0x4d')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x175')});db[_0xca0f('0x54')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x36')});db[_0xca0f('0x54')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':_0xca0f('0x17c'),'as':_0xca0f('0x14e')});db[_0xca0f('0x56')]['belongsTo'](db['FaxAccount'],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db['CmList'],{'as':'List','foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x56')]['belongsTo'](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x51')],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x53')],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x54')],{});db[_0xca0f('0x58')][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':'Dispositions','foreignKey':_0xca0f('0x17d'),'onDelete':'cascade'});db[_0xca0f('0x58')][_0xca0f('0x10b')](db['CannedAnswer'],{'as':_0xca0f('0x15d'),'foreignKey':'SmsAccountId'});db[_0xca0f('0x58')]['hasMany'](db[_0xca0f('0x17e')],{'as':_0xca0f('0x153'),'foreignKey':_0xca0f('0x17d')});db[_0xca0f('0x58')][_0xca0f('0x10b')](db[_0xca0f('0x17f')],{'as':_0xca0f('0x176')});db[_0xca0f('0x58')][_0xca0f('0x10b')](db['SmsApplication'],{'as':_0xca0f('0x13f')});db[_0xca0f('0x58')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x58')][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':_0xca0f('0x180'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xca0f('0x58')][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x162'),'through':_0xca0f('0x138')});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x181')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x58')],{'onDelete':'restrict'});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':'IntervalId'});db[_0xca0f('0x59')]['belongsTo'](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x171')});db[_0xca0f('0x17f')][_0xca0f('0x10b')](db[_0xca0f('0x17e')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'SmsInteractionId'});db[_0xca0f('0x17f')][_0xca0f('0x147')](db[_0xca0f('0x58')],{'as':_0xca0f('0x164'),'foreignKey':'SmsAccountId'});db[_0xca0f('0x17f')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db['SmsInteraction'][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':'Owner','foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x17f')][_0xca0f('0x11d')](db['Tag'],{'through':_0xca0f('0x182'),'as':_0xca0f('0x166')});db[_0xca0f('0x17f')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x182'),'as':_0xca0f('0x167')});db[_0xca0f('0x17f')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x126'),'foreignKey':'SmsInteractionId'});db[_0xca0f('0x17e')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x13')});db[_0xca0f('0x17e')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x159')});db[_0xca0f('0x17e')][_0xca0f('0x147')](db['SmsInteraction'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x183')});db['SmsMessage'][_0xca0f('0x147')](db[_0xca0f('0x58')],{'as':'Account','foreignKey':_0xca0f('0x17d')});db[_0xca0f('0x181')][_0xca0f('0x11d')](db['User'],{'as':'Agents','through':_0xca0f('0x38'),'foreignKey':_0xca0f('0x184')});db['SmsQueue']['belongsToMany'](db[_0xca0f('0x122')],{'through':_0xca0f('0x185'),'as':'Teams'});db[_0xca0f('0x5b')][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':_0xca0f('0x15c'),'foreignKey':_0xca0f('0x186'),'onDelete':_0xca0f('0x10a')});db['OpenchannelAccount'][_0xca0f('0x10b')](db[_0xca0f('0x80')],{'as':_0xca0f('0x15d'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0xca0f('0x10b')](db[_0xca0f('0x5f')],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db[_0xca0f('0x5b')][_0xca0f('0x10b')](db[_0xca0f('0x187')],{'as':_0xca0f('0x153'),'foreignKey':_0xca0f('0x186')});db[_0xca0f('0x5b')][_0xca0f('0x10b')](db['OpenchannelApplication'],{'as':_0xca0f('0x13f'),'foreignKey':_0xca0f('0x186')});db[_0xca0f('0x5b')][_0xca0f('0x147')](db['CmList'],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db['OpenchannelAccount'][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':_0xca0f('0x180'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xca0f('0x5b')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':'Agents','through':'user_has_openchannel_accounts'});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'onDelete':'restrict'});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x62')],{'onDelete':'restrict','foreignKey':_0xca0f('0x188')});db[_0xca0f('0x5d')]['belongsTo'](db[_0xca0f('0x5b')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x186')});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':'TagId'});db['OpenchannelInteraction'][_0xca0f('0x10b')](db[_0xca0f('0x187')],{'as':_0xca0f('0x153'),'onDelete':'cascade','foreignKey':_0xca0f('0x189')});db[_0xca0f('0x5f')][_0xca0f('0x147')](db[_0xca0f('0x5b')],{'as':'Account','foreignKey':'OpenchannelAccountId'});db[_0xca0f('0x5f')][_0xca0f('0x147')](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':'ContactId'});db[_0xca0f('0x5f')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x5f')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x18a'),'as':_0xca0f('0x166')});db[_0xca0f('0x5f')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x18a'),'as':'ThroughTags'});db[_0xca0f('0x5f')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x127'),'foreignKey':_0xca0f('0x189')});db[_0xca0f('0x187')]['belongsTo'](db['User'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x13')});db[_0xca0f('0x187')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x159')});db[_0xca0f('0x187')][_0xca0f('0x147')](db[_0xca0f('0x5f')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x189')});db[_0xca0f('0x187')]['belongsTo'](db[_0xca0f('0xe8')],{'as':_0xca0f('0xe8'),'foreignKey':_0xca0f('0x17b')});db[_0xca0f('0x187')][_0xca0f('0x147')](db['OpenchannelAccount'],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x186')});db['OpenchannelQueue'][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x3a'),'foreignKey':'OpenchannelQueueId'});db[_0xca0f('0x62')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':_0xca0f('0x18b'),'as':_0xca0f('0x14e')});db['ChatWebsite'][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0xca0f('0x10a')});db['ChatWebsite'][_0xca0f('0x10b')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x64')]['hasMany'](db[_0xca0f('0x6e')],{'as':_0xca0f('0x18c')});db[_0xca0f('0x64')][_0xca0f('0x10b')](db[_0xca0f('0x67')],{'as':'Interactions'});db[_0xca0f('0x64')][_0xca0f('0x10b')](db[_0xca0f('0x18d')],{'as':'Applications'});db[_0xca0f('0x64')][_0xca0f('0x10b')](db['ChatMessage'],{'as':_0xca0f('0x153')});db[_0xca0f('0x64')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x64')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'as':'Interval','foreignKey':_0xca0f('0x170')});db[_0xca0f('0x64')][_0xca0f('0x147')](db['MailAccount'],{'as':_0xca0f('0x41'),'foreignKey':_0xca0f('0x15b')});db['ChatWebsite'][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x64')]['belongsToMany'](db['User'],{'as':_0xca0f('0x162'),'through':_0xca0f('0x133')});db[_0xca0f('0x18e')][_0xca0f('0x147')](db['OpenchannelAccount'],{});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x5f')],{});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x187')],{});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x18e')]['belongsTo'](db[_0xca0f('0x62')],{});db['ChatApplication'][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x18f'),'foreignKey':_0xca0f('0x10d'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x18d')]['belongsTo'](db[_0xca0f('0x6b')],{'as':_0xca0f('0x190'),'foreignKey':_0xca0f('0x191'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x18d')]['belongsTo'](db[_0xca0f('0x64')],{'as':_0xca0f('0x192'),'foreignKey':_0xca0f('0x16c'),'onDelete':'restrict'});db['ChatApplication'][_0xca0f('0x147')](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x171')});db[_0xca0f('0x67')][_0xca0f('0x10b')](db[_0xca0f('0x68')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x193')});db[_0xca0f('0x67')][_0xca0f('0x147')](db['ChatWebsite'],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x67')][_0xca0f('0x147')](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x67')][_0xca0f('0x147')](db['User'],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x67')][_0xca0f('0x11d')](db['Tag'],{'through':_0xca0f('0x194'),'as':_0xca0f('0x166')});db['ChatInteraction'][_0xca0f('0x11d')](db['Tag'],{'through':'chat_interaction_has_tags','as':_0xca0f('0x167')});db[_0xca0f('0x67')]['belongsToMany'](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x124'),'foreignKey':_0xca0f('0x193')});db[_0xca0f('0x68')][_0xca0f('0x147')](db['User'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x13')});db[_0xca0f('0x68')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':'Contact','foreignKey':_0xca0f('0x15a')});db['ChatMessage'][_0xca0f('0x147')](db['ChatInteraction'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x193')});db[_0xca0f('0x68')]['belongsTo'](db['Attachment'],{'as':_0xca0f('0xe8'),'foreignKey':'AttachmentId'});db[_0xca0f('0x68')][_0xca0f('0x147')](db['ChatWebsite'],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x6a')][_0xca0f('0x10b')](db[_0xca0f('0xe8')],{'as':_0xca0f('0x16a'),'foreignKey':_0xca0f('0x16d'),'onDelete':'cascade','hooks':!![]});db[_0xca0f('0x6a')]['belongsTo'](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x6a')][_0xca0f('0x147')](db[_0xca0f('0x64')],{'as':_0xca0f('0x164'),'foreignKey':'ChatWebsiteId'});db[_0xca0f('0x6b')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x34'),'hooks':!![]});db[_0xca0f('0x6b')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':'team_has_chat_queues','as':_0xca0f('0x14e')});db[_0xca0f('0x11a')]['hasMany'](db['ChatInternalMessage'],{'as':'Messages','foreignKey':_0xca0f('0x195'),'onDelete':_0xca0f('0x10a')});db['ChatGroup'][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x142'),'through':'chat_group_has_users'});db[_0xca0f('0x6e')]['belongsTo'](db['ChatWebsite'],{'as':_0xca0f('0x192'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x70')][_0xca0f('0x10b')](db['CmContact'],{'as':_0xca0f('0x11f'),'foreignKey':'CompanyId'});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x73')],{'as':'Hoppers','foreignKey':'ContactId'});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x11e')]['hasMany'](db['CmHopperHistory'],{'as':_0xca0f('0x196'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x11e')][_0xca0f('0x10b')](db[_0xca0f('0x78')],{'as':_0xca0f('0x78'),'foreignKey':_0xca0f('0x15a')});db['CmContact'][_0xca0f('0x10b')](db[_0xca0f('0xd1')],{'as':_0xca0f('0x146'),'foreignKey':'ContactId'});db[_0xca0f('0x11e')][_0xca0f('0x10b')](db['OpenchannelInteraction'],{'as':_0xca0f('0x112'),'foreignKey':_0xca0f('0x15a'),'onDelete':'restrict'});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x67')],{'as':_0xca0f('0x113'),'foreignKey':'ContactId','onDelete':'restrict'});db['CmContact'][_0xca0f('0x10b')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x51')],{'as':_0xca0f('0x115'),'foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')][_0xca0f('0x10b')](db[_0xca0f('0x47')],{'as':_0xca0f('0x116'),'foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')]['belongsTo'](db[_0xca0f('0x70')],{'as':'Company','foreignKey':_0xca0f('0x197')});db[_0xca0f('0x11e')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'through':_0xca0f('0x120')});db[_0xca0f('0x11e')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'as':_0xca0f('0x166'),'through':_0xca0f('0x198')});db[_0xca0f('0x11e')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x198'),'as':_0xca0f('0x167')});db[_0xca0f('0x73')]['belongsTo'](db[_0xca0f('0x11e')],{'as':'Contact','foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')][_0xca0f('0x147')](db['CmList'],{'as':_0xca0f('0x177'),'foreignKey':'ListId','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x18f'),'foreignKey':_0xca0f('0x10d')});db['CmHopper'][_0xca0f('0x147')](db[_0xca0f('0x1d')],{'as':_0xca0f('0x190'),'foreignKey':'VoiceQueueId','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')]['belongsTo'](db[_0xca0f('0xe5')],{'as':_0xca0f('0xe5'),'foreignKey':_0xca0f('0x199'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x19a')});db[_0xca0f('0x19b')]['belongsTo'](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a'),'onDelete':'cascade'});db['CmHopperBlack'][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':'List','foreignKey':_0xca0f('0x15f'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x19b')][_0xca0f('0x147')](db[_0xca0f('0x1d')],{'as':'Queue','foreignKey':_0xca0f('0x143'),'onDelete':_0xca0f('0x10a')});db['CmHopperBlack'][_0xca0f('0x147')](db[_0xca0f('0xe5')],{'as':_0xca0f('0xe5'),'foreignKey':_0xca0f('0x199'),'onDelete':'cascade'});db['Automation'][_0xca0f('0x10b')](db[_0xca0f('0x19c')],{'as':{'plural':_0xca0f('0x19d'),'singular':_0xca0f('0x19e')},'foreignKey':_0xca0f('0x19f'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x7e')][_0xca0f('0x10b')](db['Condition'],{'as':{'plural':_0xca0f('0x1a0'),'singular':_0xca0f('0x1a1')},'foreignKey':_0xca0f('0x1a2'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x7e')][_0xca0f('0x10b')](db[_0xca0f('0x7c')],{'as':_0xca0f('0x1a3'),'foreignKey':_0xca0f('0x1a4'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x82')][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':_0xca0f('0x15c'),'foreignKey':'ParentId','onDelete':_0xca0f('0x10a')});db['Interval'][_0xca0f('0x10b')](db['Interval'],{'as':_0xca0f('0x1a5'),'foreignKey':'IntervalId','onDelete':_0xca0f('0x10a'),'hooks':!![],'required':![]});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':_0xca0f('0x10e'),'foreignKey':'IntervalId','onDelete':_0xca0f('0x16f')});db[_0xca0f('0x85')][_0xca0f('0x10b')](db['MailApplication'],{'as':_0xca0f('0x1a6'),'foreignKey':'IntervalId'});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x18d')],{'as':_0xca0f('0x1a7'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x4f')],{'as':_0xca0f('0x1a8'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x59')],{'as':'SmsApplications','foreignKey':_0xca0f('0x170')});db['Schedule'][_0xca0f('0x147')](db[_0xca0f('0x41')],{});db[_0xca0f('0x1a9')][_0xca0f('0x147')](db[_0xca0f('0x97')],{'foreignKey':_0xca0f('0x1aa')});db[_0xca0f('0x1a9')][_0xca0f('0x147')](db[_0xca0f('0x95')],{'foreignKey':_0xca0f('0x1ab')});db['Sound'][_0xca0f('0x11d')](db[_0xca0f('0x1b')],{'as':_0xca0f('0x1ac'),'through':_0xca0f('0x141'),'onDelete':'restrict'});db[_0xca0f('0x8d')]['belongsToMany'](db[_0xca0f('0x11e')],{'through':_0xca0f('0x198')});db['Tag'][_0xca0f('0x11d')](db[_0xca0f('0x67')],{'through':_0xca0f('0x194')});db['Tag'][_0xca0f('0x11d')](db[_0xca0f('0x47')],{'through':_0xca0f('0x165')});db[_0xca0f('0x8d')][_0xca0f('0x11d')](db[_0xca0f('0x17f')],{'through':_0xca0f('0x182')});db[_0xca0f('0x8d')][_0xca0f('0x11d')](db[_0xca0f('0x51')],{'through':_0xca0f('0x179')});db[_0xca0f('0x8d')]['belongsToMany'](db[_0xca0f('0x5f')],{'through':'openchannel_interaction_has_tags'});db['Tag']['belongsToMany'](db[_0xca0f('0x101')],{'through':'whatsapp_interaction_has_tags'});db[_0xca0f('0x91')]['hasMany'](db[_0xca0f('0x19c')],{'as':{'plural':'AllConditions','singular':'AllCondition'},'foreignKey':_0xca0f('0x1ad'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db['Trigger'][_0xca0f('0x10b')](db[_0xca0f('0x19c')],{'as':{'plural':_0xca0f('0x1ae'),'singular':_0xca0f('0x1af')},'foreignKey':_0xca0f('0x1b0'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x91')][_0xca0f('0x10b')](db[_0xca0f('0x7c')],{'as':_0xca0f('0x1a3'),'foreignKey':_0xca0f('0x1b1'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x95')]['hasMany'](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1ab'),'hooks':!![]});db[_0xca0f('0x97')]['hasMany'](db[_0xca0f('0x1b2')],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1aa')});db[_0xca0f('0x1b3')][_0xca0f('0x10b')](db['AnalyticFieldReport'],{'as':_0xca0f('0x1b4'),'onDelete':_0xca0f('0x10a'),'foreignKey':'MetricId'});db[_0xca0f('0x1b2')][_0xca0f('0x147')](db[_0xca0f('0x1b3')],{'foreignKey':_0xca0f('0x1b5')});db['SalesforceAccount'][_0xca0f('0x10b')](db[_0xca0f('0x1b6')],{'as':_0xca0f('0x1b7'),'onDelete':'cascade','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1b6')]['hasMany'](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1ba'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db['SalesforceConfiguration'][_0xca0f('0x10b')](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1bc'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1b6')]['hasMany'](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1b4'),'onDelete':'cascade','foreignKey':_0xca0f('0x1be')});db[_0xca0f('0x1b6')][_0xca0f('0x147')](db[_0xca0f('0x9f')],{'as':_0xca0f('0x164'),'foreignKey':'AccountId'});db['SalesforceField'][_0xca0f('0x10b')](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1bf'),'foreignKey':'SubjectId'});db[_0xca0f('0x1b9')][_0xca0f('0x10b')](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1b9')]['hasMany'](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1c1'),'foreignKey':'FieldId'});db[_0xca0f('0x1b9')][_0xca0f('0x147')](db['Variable'],{'as':'Variable','foreignKey':'VariableId'});db[_0xca0f('0xa2')][_0xca0f('0x10b')](db['SugarcrmConfiguration'],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa4')]['hasMany'](db['SugarcrmField'],{'as':_0xca0f('0x1ba'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xca0f('0xa4')][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':_0xca0f('0x1bc'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xa4')][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db['SugarcrmConfiguration'][_0xca0f('0x147')](db[_0xca0f('0xa2')],{'as':'Account','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa6')][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db['SugarcrmField'][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xa6')]['hasMany'](db['SugarcrmField'],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xa6')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0x1c3')]['hasMany'](db['DeskConfiguration'],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa9')][_0xca0f('0x10b')](db['DeskField'],{'as':_0xca0f('0x1ba'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xa9')][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1bc'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xa9')]['hasMany'](db[_0xca0f('0xab')],{'as':_0xca0f('0x1b4'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xa9')]['belongsTo'](db[_0xca0f('0x1c3')],{'as':'Account','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa9')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':'int_desk_configuration_has_tags'});db[_0xca0f('0xab')][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xab')][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db['DeskField'][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xab')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xad')]['hasMany'](db['ZohoConfiguration'],{'as':_0xca0f('0x1b7'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xca0f('0xaf')]['hasMany'](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1ba'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xaf')][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1bc'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bd')});db['ZohoConfiguration'][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1b4'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xaf')]['belongsTo'](db[_0xca0f('0xad')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xb1')]['hasMany'](db[_0xca0f('0xb1')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xb1')][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xb1')][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':'Field','foreignKey':_0xca0f('0x1be')});db['ZohoField'][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':'Variable','foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xb3')][_0xca0f('0x10b')](db[_0xca0f('0x1c4')],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':_0xca0f('0x1ba'),'foreignKey':'SubjectId'});db[_0xca0f('0x1c4')][_0xca0f('0x10b')](db['ZendeskField'],{'as':_0xca0f('0x1bc'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1c4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':'Fields','foreignKey':_0xca0f('0x1be')});db[_0xca0f('0x1c4')][_0xca0f('0x147')](db[_0xca0f('0xb3')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c4')]['belongsToMany'](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0xca0f('0xb4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db['ZendeskField']['hasMany'](db['ZendeskField'],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xb4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':_0xca0f('0x1c1'),'foreignKey':'FieldId'});db[_0xca0f('0xb4')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':'VariableId'});db['FreshdeskAccount'][_0xca0f('0x10b')](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c5')][_0xca0f('0x10b')](db[_0xca0f('0xb9')],{'as':'Subjects','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0x1c5')][_0xca0f('0x10b')](db['FreshdeskField'],{'as':_0xca0f('0x1bc'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1c5')]['hasMany'](db[_0xca0f('0xb9')],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db['FreshdeskConfiguration'][_0xca0f('0x147')](db[_0xca0f('0xb6')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c5')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x1c6')});db[_0xca0f('0xb9')][_0xca0f('0x10b')](db[_0xca0f('0xb9')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xb9')]['hasMany'](db[_0xca0f('0xb9')],{'as':_0xca0f('0x1c0'),'foreignKey':'DescriptionId'});db[_0xca0f('0xb9')][_0xca0f('0x10b')](db[_0xca0f('0xb9')],{'as':_0xca0f('0x1c1'),'foreignKey':'FieldId'});db['FreshdeskField']['belongsTo'](db[_0xca0f('0x92')],{'as':'Variable','foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xbb')][_0xca0f('0x10b')](db[_0xca0f('0xbd')],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xbd')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1ba'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xbd')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1bc'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xbd')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1b4'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xbd')][_0xca0f('0x147')](db[_0xca0f('0xbb')],{'as':'Account','foreignKey':'AccountId'});db[_0xca0f('0xbf')][_0xca0f('0x10b')](db['VtigerField'],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xbf')]['hasMany'](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xbf')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xbf')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':'VariableId'});db[_0xca0f('0xc1')]['hasMany'](db['ServicenowConfiguration'],{'as':'Configurations','onDelete':_0xca0f('0x10a'),'foreignKey':'AccountId'});db[_0xca0f('0xc2')][_0xca0f('0x10b')](db['ServicenowField'],{'as':_0xca0f('0x1ba'),'foreignKey':_0xca0f('0x1bb')});db['ServicenowConfiguration']['hasMany'](db[_0xca0f('0xc3')],{'as':_0xca0f('0x1bc'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xc2')][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':_0xca0f('0x1b4'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc2')][_0xca0f('0x147')](db[_0xca0f('0xc1')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xc3')][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db['ServicenowField'][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':'Description','foreignKey':'DescriptionId'});db['ServicenowField'][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc3')][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xc4')][_0xca0f('0x10b')](db[_0xca0f('0xc5')],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xc5')][_0xca0f('0x10b')](db[_0xca0f('0xc6')],{'as':_0xca0f('0x1ba'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bb')});db['Dynamics365Configuration'][_0xca0f('0x10b')](db['Dynamics365Field'],{'as':_0xca0f('0x1bc'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bd')});db['Dynamics365Configuration'][_0xca0f('0x10b')](db[_0xca0f('0xc6')],{'as':_0xca0f('0x1b4'),'onDelete':'cascade','foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc5')][_0xca0f('0x147')](db[_0xca0f('0xc4')],{'as':_0xca0f('0x164'),'foreignKey':'AccountId'});db[_0xca0f('0xc6')]['hasMany'](db[_0xca0f('0xc6')],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xc6')][_0xca0f('0x10b')](db['Dynamics365Field'],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db['Dynamics365Field'][_0xca0f('0x10b')](db['Dynamics365Field'],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc6')][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0x1c7')][_0xca0f('0x10b')](db[_0xca0f('0x1c8')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db['FreshsalesConfiguration']['hasMany'](db[_0xca0f('0x1c9')],{'as':'Subjects','foreignKey':_0xca0f('0x1bb')});db['FreshsalesConfiguration'][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0xca0f('0x1c8')][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':_0xca0f('0x1b4'),'foreignKey':'FieldId'});db[_0xca0f('0x1c8')][_0xca0f('0x147')](db[_0xca0f('0x1c7')],{'as':'Account','foreignKey':_0xca0f('0x1b8')});db['FreshsalesField'][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xca0f('0x1c9')]['hasMany'](db[_0xca0f('0x1c9')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1c9')][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db['FreshsalesField'][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db[_0xca0f('0x64')],{});db[_0xca0f('0x1ca')]['belongsTo'](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db['ChatQueueReport'][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db['ChatInteraction'],{});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db[_0xca0f('0x68')],{});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db['ChatQueue'],{});db[_0xca0f('0x1cb')]['belongsTo'](db['User'],{'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1cc')});db['ChatInternalMessage'][_0xca0f('0x147')](db['User'],{'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1cd')});db[_0xca0f('0xd1')][_0xca0f('0x10b')](db[_0xca0f('0xcf')],{'foreignKey':_0xca0f('0x1ce'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0xd1')][_0xca0f('0x10b')](db[_0xca0f('0xcd')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db['SmsAccount'],{});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db['SmsQueueReport'][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db['SmsQueueReport'][_0xca0f('0x147')](db['SmsInteraction'],{});db['SmsQueueReport']['belongsTo'](db['SmsMessage'],{});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db['User'],{});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db[_0xca0f('0x181')],{});db[_0xca0f('0xd8')][_0xca0f('0x10b')](db[_0xca0f('0xd1')],{'foreignKey':_0xca0f('0x1d0')});db[_0xca0f('0xd8')][_0xca0f('0x10b')](db[_0xca0f('0xcf')],{'foreignKey':_0xca0f('0x1d0')});db['JscriptyProject']['hasMany'](db[_0xca0f('0xcd')],{'foreignKey':_0xca0f('0x1d0')});db[_0xca0f('0x13a')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'through':_0xca0f('0x13c')});db[_0xca0f('0x122')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x1d1')});db['Team'][_0xca0f('0x11d')](db[_0xca0f('0x1d')],{'through':_0xca0f('0x14f'),'as':_0xca0f('0x129')});db['Team'][_0xca0f('0x11d')](db[_0xca0f('0x43')],{'through':_0xca0f('0x163'),'as':_0xca0f('0x12a')});db[_0xca0f('0x122')]['belongsToMany'](db[_0xca0f('0x6b')],{'through':_0xca0f('0x1d2'),'as':_0xca0f('0x12c')});db['Team']['belongsToMany'](db[_0xca0f('0x54')],{'through':_0xca0f('0x17c'),'as':'FaxQueues'});db[_0xca0f('0x122')][_0xca0f('0x11d')](db['SmsQueue'],{'through':_0xca0f('0x185'),'as':_0xca0f('0x1d3')});db[_0xca0f('0x122')][_0xca0f('0x11d')](db[_0xca0f('0x62')],{'through':_0xca0f('0x18b'),'as':_0xca0f('0x12e')});db[_0xca0f('0x122')][_0xca0f('0x11d')](db[_0xca0f('0x106')],{'through':_0xca0f('0x1d4'),'as':_0xca0f('0x12f')});db[_0xca0f('0xe5')][_0xca0f('0x10b')](db[_0xca0f('0x73')],{'as':_0xca0f('0x144'),'foreignKey':_0xca0f('0x199')});db[_0xca0f('0xe5')][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':'HopperFinals','foreignKey':_0xca0f('0x199')});db['Campaign'][_0xca0f('0x10b')](db[_0xca0f('0x77')],{'as':_0xca0f('0x196'),'foreignKey':_0xca0f('0x199')});db[_0xca0f('0xe5')][_0xca0f('0x10b')](db[_0xca0f('0x19b')],{'as':_0xca0f('0x145'),'foreignKey':_0xca0f('0x199')});db[_0xca0f('0xe5')][_0xca0f('0x147')](db[_0xca0f('0x2d')],{'as':_0xca0f('0x2d'),'foreignKey':_0xca0f('0x148')});db[_0xca0f('0xe5')]['belongsTo'](db['Trunk'],{'as':_0xca0f('0x149'),'foreignKey':_0xca0f('0x14a')});db[_0xca0f('0xe5')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'as':_0xca0f('0x85'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0xe5')][_0xca0f('0x147')](db[_0xca0f('0x13a')],{'as':_0xca0f('0x13a'),'foreignKey':_0xca0f('0x1d5')});db[_0xca0f('0xe5')]['belongsToMany'](db[_0xca0f('0xf5')],{'as':_0xca0f('0x14c'),'through':'campaigns_has_cm_lists'});db['Campaign'][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':'BlackLists','through':_0xca0f('0x1d6')});db[_0xca0f('0xe8')][_0xca0f('0x147')](db['ChatOfflineMessage'],{'as':_0xca0f('0x6a'),'foreignKey':_0xca0f('0x16d')});db['MailTransferReport']['belongsTo'](db['MailMessage'],{});db['MailTransferReport'][_0xca0f('0x147')](db['MailInteraction'],{});db[_0xca0f('0xec')][_0xca0f('0x147')](db[_0xca0f('0x41')],{'foreignKey':_0xca0f('0x1d7'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xec')][_0xca0f('0x147')](db['User'],{'foreignKey':_0xca0f('0x1d9'),'as':'FromAgent'});db[_0xca0f('0xec')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':_0xca0f('0x1db')});db[_0xca0f('0xec')][_0xca0f('0x147')](db[_0xca0f('0x43')],{'foreignKey':_0xca0f('0x1dc'),'as':_0xca0f('0x1dd')});db['MailTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x41')],{'foreignKey':'ToMailAccountId','as':_0xca0f('0x1de')});db['ChatTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x68')],{});db[_0xca0f('0xee')]['belongsTo'](db[_0xca0f('0x67')],{});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x64')],{'foreignKey':_0xca0f('0x1df'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1d9'),'as':_0xca0f('0x1e0')});db[_0xca0f('0xee')]['belongsTo'](db['User'],{'foreignKey':_0xca0f('0x1da'),'as':_0xca0f('0x1db')});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x6b')],{'foreignKey':_0xca0f('0x1e1'),'as':_0xca0f('0x1dd')});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x64')],{'foreignKey':_0xca0f('0x1e2'),'as':'ToAccount'});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x53')],{});db[_0xca0f('0x1e3')]['belongsTo'](db[_0xca0f('0x51')],{});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'foreignKey':'FromFaxAccountId','as':_0xca0f('0x1d8')});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1d9'),'as':_0xca0f('0x1e0')});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':'ToAgent'});db[_0xca0f('0x1e3')]['belongsTo'](db[_0xca0f('0x54')],{'foreignKey':_0xca0f('0x1e4'),'as':_0xca0f('0x1dd')});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'foreignKey':_0xca0f('0x1e5'),'as':_0xca0f('0x1de')});db[_0xca0f('0xf1')]['belongsTo'](db['OpenchannelMessage'],{});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x5f')],{});db['OpenchannelTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x5b')],{'foreignKey':_0xca0f('0x1e6'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xf1')]['belongsTo'](db[_0xca0f('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':_0xca0f('0x1db')});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x62')],{'foreignKey':_0xca0f('0x1e7'),'as':'ToQueue'});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x5b')],{'foreignKey':_0xca0f('0x1e8'),'as':'ToAccount'});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x17e')],{});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x17f')],{});db['SmsTransferReport']['belongsTo'](db[_0xca0f('0x58')],{'foreignKey':_0xca0f('0x1e9'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xf3')]['belongsTo'](db[_0xca0f('0x13')],{'foreignKey':'FromUserId','as':_0xca0f('0x1e0')});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':'ToAgent'});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x181')],{'foreignKey':_0xca0f('0x1ea'),'as':_0xca0f('0x1dd')});db[_0xca0f('0xf3')][_0xca0f('0x147')](db['SmsAccount'],{'foreignKey':'ToSmsAccountId','as':_0xca0f('0x1de')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db['Disposition'],{'as':_0xca0f('0x15c'),'foreignKey':'ListId','onDelete':_0xca0f('0x10a')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db['CmCustomField'],{'as':_0xca0f('0x1eb'),'foreignKey':_0xca0f('0x15f')});db['CmList'][_0xca0f('0x10b')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x11f'),'onDelete':'cascade','foreignKey':_0xca0f('0x15f')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db[_0xca0f('0x77')],{'as':_0xca0f('0x111'),'foreignKey':'ListId'});db[_0xca0f('0xf5')]['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':'ListId'});db[_0xca0f('0xf5')][_0xca0f('0x11d')](db[_0xca0f('0x1d')],{'as':_0xca0f('0x1ec'),'through':'voice_queues_has_cm_lists'});db[_0xca0f('0xf5')][_0xca0f('0x11d')](db['User'],{'as':'Agents','through':_0xca0f('0x121')});db[_0xca0f('0xf7')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':'Extensions','onDelete':_0xca0f('0x10a')});db['VoicePrefix'][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x162'),'through':_0xca0f('0x131')});db['UserProfile'][_0xca0f('0x10b')](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'foreignKey':_0xca0f('0x1ed')});db['UserProfile'][_0xca0f('0x10b')](db[_0xca0f('0xf9')],{'as':'UserProfileSections','foreignKey':_0xca0f('0x1ed'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0xf9')][_0xca0f('0x10b')](db[_0xca0f('0xfa')],{'as':_0xca0f('0x1ee'),'foreignKey':_0xca0f('0x1ef'),'onDelete':_0xca0f('0x10a')});db['WhatsappAccount'][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':'Dispositions','foreignKey':_0xca0f('0x1f0'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x80')],{'as':_0xca0f('0x15d'),'foreignKey':_0xca0f('0x1f0')});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x102')],{'as':_0xca0f('0x153'),'foreignKey':'WhatsappAccountId'});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x101')],{'as':'Interactions'});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x100')],{'as':_0xca0f('0x13f')});db['WhatsappAccount']['belongsTo'](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':'ListId'});db[_0xca0f('0xfe')][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':_0xca0f('0x180'),'foreignKey':_0xca0f('0x14b')});db[_0xca0f('0xfe')]['belongsToMany'](db[_0xca0f('0x13')],{'as':'Agents','through':'user_has_whatsapp_accounts'});db[_0xca0f('0x100')]['belongsTo'](db['User'],{'onDelete':'restrict'});db[_0xca0f('0x100')]['belongsTo'](db[_0xca0f('0x106')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x100')][_0xca0f('0x147')](db[_0xca0f('0xfe')],{'onDelete':'restrict'});db['WhatsappApplication'][_0xca0f('0x147')](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x170')});db['WhatsappApplication']['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xca0f('0x101')][_0xca0f('0x10b')](db[_0xca0f('0x102')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1f1')});db[_0xca0f('0x101')]['belongsTo'](db[_0xca0f('0xfe')],{'as':'Account','foreignKey':_0xca0f('0x1f0')});db[_0xca0f('0x101')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':'Contact','foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x101')][_0xca0f('0x147')](db['User'],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x101')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':'whatsapp_interaction_has_tags','as':'Tags'});db['WhatsappInteraction'][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x1f2'),'as':_0xca0f('0x167')});db[_0xca0f('0x101')][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x168'),'through':'user_has_whatsapp_interactions','foreignKey':_0xca0f('0x1f1')});db[_0xca0f('0x102')][_0xca0f('0x147')](db['User'],{'as':_0xca0f('0x13')});db[_0xca0f('0x102')][_0xca0f('0x147')](db['CmContact'],{'onDelete':_0xca0f('0x10a'),'as':'Contact'});db[_0xca0f('0x102')][_0xca0f('0x147')](db['WhatsappInteraction'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x1f1')});db[_0xca0f('0x102')][_0xca0f('0x147')](db[_0xca0f('0xfe')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1f0')});db['WhatsappQueueReport'][_0xca0f('0x147')](db[_0xca0f('0xfe')],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':'List','foreignKey':_0xca0f('0x15f')});db['WhatsappQueueReport']['belongsTo'](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':'ContactId'});db[_0xca0f('0x104')][_0xca0f('0x147')](db['WhatsappInteraction'],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0x106')],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0x102')],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x1f3')]['belongsTo'](db[_0xca0f('0x102')],{});db['WhatsappTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x101')],{});db['WhatsappTransferReport'][_0xca0f('0x147')](db[_0xca0f('0xfe')],{'foreignKey':_0xca0f('0x1f4'),'as':_0xca0f('0x1d8')});db['WhatsappTransferReport']['belongsTo'](db[_0xca0f('0xfe')],{'foreignKey':_0xca0f('0x1f5'),'as':_0xca0f('0x1de')});db[_0xca0f('0x1f3')]['belongsTo'](db[_0xca0f('0x106')],{'foreignKey':_0xca0f('0x1f6'),'as':_0xca0f('0x1dd')});db[_0xca0f('0x1f3')]['belongsTo'](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1d9'),'as':_0xca0f('0x1e0')});db[_0xca0f('0x1f3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':'ToUserId','as':_0xca0f('0x1db')});db[_0xca0f('0x106')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x3b'),'foreignKey':_0xca0f('0x1f7')});db[_0xca0f('0x106')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':'team_has_whatsapp_queues','as':_0xca0f('0x14e')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index 4a2eb32..9908ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ad=['/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','./api/squareReport','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','/api/voice/prefixes','/api/userProfiles','./api/userProfile','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','./api/realtime','/api/auth/local','./api/authLocal','./api/authGoogle','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/snippet','snippet','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','/index.html','username','password','apiKey','firstName','lastName','phone','mobile','fax','clientId','clientSecret','securityToken','code','accessKey','token','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridnum','exten','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isArray','length','replace','@@{','path','express','express-winston','util','./errors','./config/environment','api','./config/logger','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','user','name','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','other','agent_name','test','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceAgentReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','./api/condition','/api/intervals','./api/interval','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','./api/trigger','/api/variables','/api/integrations','/api/integrations/reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport'];(function(_0x2ecfdc,_0x5d1ced){var _0x526ccc=function(_0x40fe7f){while(--_0x40fe7f){_0x2ecfdc['push'](_0x2ecfdc['shift']());}};_0x526ccc(++_0x5d1ced);}(_0x53ad,0xb2));var _0xd53a=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x53ad[_0x5b561d];return _0x431060;};'use strict';var _=require('lodash');var path=require(_0xd53a('0x0'));var express=require(_0xd53a('0x1'));var ewinston=require(_0xd53a('0x2'));var util=require(_0xd53a('0x3'));var errors=require(_0xd53a('0x4'));var config=require(_0xd53a('0x5'));var logger=require('./config/logger')(_0xd53a('0x6'));var authLogger=require(_0xd53a('0x7'))('auth');exports['default']=function(_0x250e42){_0x250e42[_0xd53a('0x8')](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x48a570,_0x4c984b){var _0x57aaa0=_0xd53a('0x9');if(!_[_0xd53a('0xa')](_0x48a570[_0xd53a('0xb')])){_0x57aaa0+=_0xd53a('0xc');var _0xe04662=_0x48a570[_0xd53a('0xb')];maskSensitiveData(_0xe04662);}return util[_0xd53a('0xd')](_0x57aaa0,_0x48a570[_0xd53a('0xe')],_0x48a570[_0xd53a('0xf')][_0xd53a('0x10')]?_0x48a570[_0xd53a('0xf')]['x-forwarded-for']:_0x48a570[_0xd53a('0x11')][_0xd53a('0x12')]||_0x48a570['ip'],_0x48a570[_0xd53a('0x13')],_0x4c984b[_0xd53a('0x14')],_0x4c984b[_0xd53a('0x15')],_0x48a570[_0xd53a('0x16')]?_0x48a570[_0xd53a('0x16')]['id']:null,_0x48a570[_0xd53a('0x16')]?_0x48a570[_0xd53a('0x16')][_0xd53a('0x17')]:null,_0x48a570['user']?_0x48a570[_0xd53a('0x16')]['role']:null,_0xe04662?util[_0xd53a('0x18')](_0xe04662,![],null):'');}}));_0x250e42[_0xd53a('0x8')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x418475,_0x4d896f){var _0x25b421=_0xd53a('0x19');if(_0x418475[_0xd53a('0xb')]&&_0x418475[_0xd53a('0xb')][_0xd53a('0x1a')]&&_0x418475[_0xd53a('0xb')][_0xd53a('0x1b')]){_0x25b421=_0xd53a('0x1c');}return util['format'](_0x25b421,_0x418475[_0xd53a('0xe')],_0x418475[_0xd53a('0xf')][_0xd53a('0x10')]?_0x418475[_0xd53a('0xf')]['x-forwarded-for']:_0x418475[_0xd53a('0x11')]['remoteAddress']||_0x418475['ip'],_0x418475[_0xd53a('0x13')],_0x4d896f[_0xd53a('0x14')],_0x4d896f[_0xd53a('0x15')],_0x418475[_0xd53a('0x16')]?_0x418475[_0xd53a('0x16')]['id']:null,_0x418475[_0xd53a('0x16')]?_0x418475['user']['name']:null,_0x418475[_0xd53a('0x16')]?_0x418475[_0xd53a('0x16')]['role']:null,_0x418475[_0xd53a('0xb')]&&_0x418475[_0xd53a('0xb')][_0xd53a('0x1a')]?_0x418475['body'][_0xd53a('0x1a')]:_0xd53a('0x1d'),_0x418475['body']&&_0x418475[_0xd53a('0xb')][_0xd53a('0x1b')]?_0x418475[_0xd53a('0xb')][_0xd53a('0x1b')]:'',_0x418475[_0xd53a('0xb')]&&_0x418475[_0xd53a('0xb')]['agent_name']?_0x418475[_0xd53a('0xb')][_0xd53a('0x1e')]:'');},'ignoreRoute':function(_0x38773d){var _0x2cd15b=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x2cd15b[_0xd53a('0x1f')](_0x38773d[_0xd53a('0x13')]);}}));_0x250e42[_0xd53a('0x8')]('/api/users',require('./api/user'));_0x250e42['use'](_0xd53a('0x20'),require(_0xd53a('0x21')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x22'),require(_0xd53a('0x23')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x24'),require(_0xd53a('0x25')));_0x250e42['use']('/api/voice/mohs',require(_0xd53a('0x26')));_0x250e42['use'](_0xd53a('0x27'),require('./api/voiceQueue'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x28'),require(_0xd53a('0x29')));_0x250e42[_0xd53a('0x8')]('/api/screen/recordings',require(_0xd53a('0x2a')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x2b'),require(_0xd53a('0x2c')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x2d'),require(_0xd53a('0x2e')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x2f'),require(_0xd53a('0x30')));_0x250e42[_0xd53a('0x8')]('/api/voice/dials/reports',require('./api/voiceDialReport'));_0x250e42[_0xd53a('0x8')]('/api/voice/agents/reports',require(_0xd53a('0x31')));_0x250e42[_0xd53a('0x8')]('/api/voice/queues/reports',require('./api/voiceQueueReport'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x32'),require(_0xd53a('0x33')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x34'),require(_0xd53a('0x35')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x36'),require(_0xd53a('0x37')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x38'),require('./api/mailServerOut'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x39'),require(_0xd53a('0x3a')));_0x250e42['use'](_0xd53a('0x3b'),require(_0xd53a('0x3c')));_0x250e42['use'](_0xd53a('0x3d'),require(_0xd53a('0x3e')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x3f'),require('./api/mailInteraction'));_0x250e42['use'](_0xd53a('0x40'),require(_0xd53a('0x41')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x42'),require(_0xd53a('0x43')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x44'),require(_0xd53a('0x45')));_0x250e42['use'](_0xd53a('0x46'),require(_0xd53a('0x47')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x48'),require('./api/dashboardItem'));_0x250e42['use']('/api/fax/accounts',require(_0xd53a('0x49')));_0x250e42['use'](_0xd53a('0x4a'),require(_0xd53a('0x4b')));_0x250e42[_0xd53a('0x8')]('/api/fax/interactions',require(_0xd53a('0x4c')));_0x250e42[_0xd53a('0x8')]('/api/fax/messages',require('./api/faxMessage'));_0x250e42[_0xd53a('0x8')]('/api/fax/queues',require(_0xd53a('0x4d')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x4e'),require(_0xd53a('0x4f')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x50'),require('./api/smsAccount'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x51'),require(_0xd53a('0x52')));_0x250e42['use'](_0xd53a('0x53'),require('./api/smsInteraction'));_0x250e42['use']('/api/sms/messages',require(_0xd53a('0x54')));_0x250e42['use'](_0xd53a('0x55'),require(_0xd53a('0x56')));_0x250e42['use'](_0xd53a('0x57'),require(_0xd53a('0x58')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x59'),require(_0xd53a('0x5a')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x5b'),require(_0xd53a('0x5c')));_0x250e42[_0xd53a('0x8')]('/api/openchannel/messages',require(_0xd53a('0x5d')));_0x250e42['use'](_0xd53a('0x5e'),require(_0xd53a('0x5f')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x60'),require(_0xd53a('0x61')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x62'),require('./api/openchannelQueueReport'));_0x250e42[_0xd53a('0x8')]('/api/chat/applications',require(_0xd53a('0x63')));_0x250e42['use'](_0xd53a('0x64'),require(_0xd53a('0x65')));_0x250e42['use'](_0xd53a('0x66'),require(_0xd53a('0x67')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x68'),require(_0xd53a('0x69')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x6a'),require(_0xd53a('0x6b')));_0x250e42[_0xd53a('0x8')]('/api/chat/groups',require(_0xd53a('0x6c')));_0x250e42['use'](_0xd53a('0x6d'),require(_0xd53a('0x6e')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x6f'),require(_0xd53a('0x70')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x71'),require(_0xd53a('0x72')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x73'),require(_0xd53a('0x74')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x75'),require(_0xd53a('0x76')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x77'),require(_0xd53a('0x78')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x79'),require(_0xd53a('0x7a')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x7b'),require(_0xd53a('0x7c')));_0x250e42['use'](_0xd53a('0x7d'),require('./api/action'));_0x250e42[_0xd53a('0x8')]('/api/automations',require(_0xd53a('0x7e')));_0x250e42['use']('/api/canned_answers',require(_0xd53a('0x7f')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x80'),require(_0xd53a('0x81')));_0x250e42[_0xd53a('0x8')]('/api/conditions',require(_0xd53a('0x82')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x83'),require(_0xd53a('0x84')));_0x250e42[_0xd53a('0x8')]('/api/pauses',require('./api/pause'));_0x250e42['use']('/api/cdr',require(_0xd53a('0x85')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x86'),require(_0xd53a('0x87')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x88'),require('./api/schedule'));_0x250e42[_0xd53a('0x8')]('/api/sounds',require(_0xd53a('0x89')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x8a'),require(_0xd53a('0x8b')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x8c'),require(_0xd53a('0x8d')));_0x250e42['use']('/api/triggers',require(_0xd53a('0x8e')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x8f'),require('./api/variable'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x90'),require('./api/integration'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x91'),require('./api/integrationReport'));_0x250e42[_0xd53a('0x8')]('/api/analytics/custom_reports',require('./api/analyticCustomReport'));_0x250e42[_0xd53a('0x8')]('/api/analytics/default_reports',require(_0xd53a('0x92')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x93'),require('./api/analyticExtractedReport'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x94'),require(_0xd53a('0x95')));_0x250e42[_0xd53a('0x8')]('/api/analytics/field_reports',require(_0xd53a('0x96')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x97'),require(_0xd53a('0x98')));_0x250e42['use']('/api/integrations/salesforce/accounts',require(_0xd53a('0x99')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x9a'),require('./api/intSalesforceConfiguration'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x9b'),require(_0xd53a('0x9c')));_0x250e42['use'](_0xd53a('0x9d'),require(_0xd53a('0x9e')));_0x250e42[_0xd53a('0x8')]('/api/integrations/sugarcrm/configurations',require(_0xd53a('0x9f')));_0x250e42['use'](_0xd53a('0xa0'),require(_0xd53a('0xa1')));_0x250e42[_0xd53a('0x8')]('/api/integrations/desk/accounts',require(_0xd53a('0xa2')));_0x250e42['use'](_0xd53a('0xa3'),require(_0xd53a('0xa4')));_0x250e42[_0xd53a('0x8')]('/api/integrations/desk/fields',require(_0xd53a('0xa5')));_0x250e42[_0xd53a('0x8')]('/api/integrations/zoho/accounts',require(_0xd53a('0xa6')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xa7'),require(_0xd53a('0xa8')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xa9'),require('./api/intZohoField'));_0x250e42[_0xd53a('0x8')](_0xd53a('0xaa'),require('./api/intZendeskAccount'));_0x250e42['use']('/api/integrations/zendesk/configurations',require(_0xd53a('0xab')));_0x250e42['use'](_0xd53a('0xac'),require(_0xd53a('0xad')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xae'),require(_0xd53a('0xaf')));_0x250e42['use'](_0xd53a('0xb0'),require(_0xd53a('0xb1')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xb2'),require(_0xd53a('0xb3')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xb4'),require(_0xd53a('0xb5')));_0x250e42['use']('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x250e42[_0xd53a('0x8')](_0xd53a('0xb6'),require(_0xd53a('0xb7')));_0x250e42[_0xd53a('0x8')]('/api/integrations/servicenow/accounts',require(_0xd53a('0xb8')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xb9'),require(_0xd53a('0xba')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xbb'),require(_0xd53a('0xbc')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xbd'),require('./api/intDynamics365Account'));_0x250e42[_0xd53a('0x8')](_0xd53a('0xbe'),require(_0xd53a('0xbf')));_0x250e42[_0xd53a('0x8')]('/api/integrations/dynamics365/fields',require(_0xd53a('0xc0')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xc1'),require('./api/intFreshsalesAccount'));_0x250e42[_0xd53a('0x8')]('/api/integrations/freshsales/configurations',require(_0xd53a('0xc2')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xc3'),require(_0xd53a('0xc4')));_0x250e42['use'](_0xd53a('0xc5'),require(_0xd53a('0xc6')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xc7'),require(_0xd53a('0xc8')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xc9'),require(_0xd53a('0xca')));_0x250e42['use'](_0xd53a('0xcb'),require('./api/jscriptyAnswerReport'));_0x250e42[_0xd53a('0x8')](_0xd53a('0xcc'),require(_0xd53a('0xcd')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xce'),require(_0xd53a('0xcf')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xd0'),require('./api/smsQueueReport'));_0x250e42['use'](_0xd53a('0xd1'),require(_0xd53a('0xd2')));_0x250e42[_0xd53a('0x8')]('/api/square/details/reports',require(_0xd53a('0xd3')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xd4'),require(_0xd53a('0xd5')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xd6'),require(_0xd53a('0xd7')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xd8'),require(_0xd53a('0xd9')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xda'),require(_0xd53a('0xdb')));_0x250e42[_0xd53a('0x8')]('/api/square/recordings',require(_0xd53a('0xdc')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xdd'),require(_0xd53a('0xde')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xdf'),require(_0xd53a('0xe0')));_0x250e42['use'](_0xd53a('0xe1'),require(_0xd53a('0xe2')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xe3'),require(_0xd53a('0xe4')));_0x250e42['use'](_0xd53a('0xe5'),require(_0xd53a('0xe6')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xe7'),require(_0xd53a('0xe8')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xe9'),require(_0xd53a('0xea')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xeb'),require('./api/mailTransferReport'));_0x250e42[_0xd53a('0x8')](_0xd53a('0xec'),require(_0xd53a('0xed')));_0x250e42[_0xd53a('0x8')]('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x250e42['use'](_0xd53a('0xee'),require(_0xd53a('0xef')));_0x250e42[_0xd53a('0x8')]('/api/sms/reports/transfer',require(_0xd53a('0xf0')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xf1'),require('./api/cmList'));_0x250e42['use'](_0xd53a('0xf2'),require('./api/voicePrefix'));_0x250e42[_0xd53a('0x8')](_0xd53a('0xf3'),require(_0xd53a('0xf4')));_0x250e42[_0xd53a('0x8')]('/api/userProfile/sections',require(_0xd53a('0xf5')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xf6'),require(_0xd53a('0xf7')));_0x250e42[_0xd53a('0x8')]('/api/userNotifications',require(_0xd53a('0xf8')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xf9'),require(_0xd53a('0xfa')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xfb'),require(_0xd53a('0xfc')));_0x250e42[_0xd53a('0x8')](_0xd53a('0xfd'),require(_0xd53a('0xfe')));_0x250e42['use']('/api/whatsapp/messages',require(_0xd53a('0xff')));_0x250e42[_0xd53a('0x8')]('/api/whatsapp/reports/queue',require(_0xd53a('0x100')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x101'),require(_0xd53a('0x102')));_0x250e42['use'](_0xd53a('0x103'),require(_0xd53a('0x104')));_0x250e42['use'](_0xd53a('0x105'),require(_0xd53a('0x106')));_0x250e42['use']('/api/realtime',require(_0xd53a('0x107')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x108'),require(_0xd53a('0x109')));_0x250e42[_0xd53a('0x8')]('/api/auth/google',require(_0xd53a('0x10a')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x10b'),require(_0xd53a('0x10c')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x10d'),require('./api/rpc'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x10e'),require(_0xd53a('0x10f')));_0x250e42['use'](_0xd53a('0x110'),require(_0xd53a('0x111')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x112'),require('./api/pm2'));_0x250e42[_0xd53a('0x8')](_0xd53a('0x113'),require(_0xd53a('0x114')));_0x250e42[_0xd53a('0x8')](_0xd53a('0x115'),express[_0xd53a('0x116')](path[_0xd53a('0x117')](config[_0xd53a('0x118')],_0xd53a('0x115'))));_0x250e42[_0xd53a('0x8')](_0xd53a('0x119'),express['static'](path[_0xd53a('0x117')](config['root'],_0xd53a('0x119'))));_0x250e42[_0xd53a('0x8')]('/demo',express['static'](path['join'](config[_0xd53a('0x118')],'/demo')));_0x250e42['use'](_0xd53a('0x11a'),express['static'](path[_0xd53a('0x117')](config[_0xd53a('0x118')],_0xd53a('0x11b'),'3.0.0')));_0x250e42['use'](_0xd53a('0x11c'),express[_0xd53a('0x116')](path[_0xd53a('0x117')](config[_0xd53a('0x118')],_0xd53a('0x11d'))));_0x250e42[_0xd53a('0x11e')](_0xd53a('0x11f'))['get'](errors[0x194]);_0x250e42[_0xd53a('0x11e')]('/*')[_0xd53a('0x120')](function(_0x352f96,_0x290472){_0x290472['sendFile'](path[_0xd53a('0x121')](_0x250e42[_0xd53a('0x120')]('appPath')+_0xd53a('0x122')));});};var sensitiveFields=[_0xd53a('0x123'),_0xd53a('0x124'),'newPassword',_0xd53a('0x125'),_0xd53a('0x126'),_0xd53a('0x127'),'street',_0xd53a('0x128'),_0xd53a('0x129'),_0xd53a('0x12a'),'email',_0xd53a('0x12b'),_0xd53a('0x12c'),_0xd53a('0x12d'),_0xd53a('0x12e'),_0xd53a('0x12f'),'tenantId',_0xd53a('0x130'),'channelSecret',_0xd53a('0x131'),_0xd53a('0x132'),_0xd53a('0x133'),_0xd53a('0x134'),_0xd53a('0x135'),_0xd53a('0x136'),'calleridname',_0xd53a('0x137'),_0xd53a('0x138'),_0xd53a('0x139'),'clientEmail',_0xd53a('0x13a'),_0xd53a('0x13b'),_0xd53a('0x13c'),_0xd53a('0x13d'),_0xd53a('0x16'),_0xd53a('0x13e'),_0xd53a('0x13f'),_0xd53a('0x140'),_0xd53a('0x141'),_0xd53a('0x142'),_0xd53a('0x143'),_0xd53a('0x144')];function maskSensitiveData(_0xeb9daf){var _0x226259=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0xeb9daf))return;for(var _0x5de7da in _0xeb9daf){if(_[_0xd53a('0x145')](_0xeb9daf[_0x5de7da])){for(var _0x8c7f9c=0x0;_0x8c7f9c<_0xeb9daf[_0x5de7da][_0xd53a('0x146')];_0x8c7f9c++){maskSensitiveData(_0xeb9daf[_0x5de7da][_0x8c7f9c]);}}else if(_['isPlainObject'](_0xeb9daf[_0x5de7da])){maskSensitiveData(_0xeb9daf[_0x5de7da]);}else if(_['isString'](_0xeb9daf[_0x5de7da])){_0xeb9daf[_0x5de7da]=_0xeb9daf[_0x5de7da][_0xd53a('0x147')](/{{{/g,_0xd53a('0x148'))['replace'](/}}}/g,'}@@')[_0xd53a('0x147')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x5de7da)){_0xeb9daf[_0x5de7da]=_0xeb9daf[_0x5de7da][_0xd53a('0x147')](_0x226259,'*');}}}}
\ No newline at end of file
+var _0x6a2a=['/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/fields','/api/networks','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','/api/square/projects','./api/squareProject','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','/api/license','./api/license','/api/campaigns','./api/campaign','/api/attachments','./api/attachment','/api/plugins','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','/api/voice/prefixes','./api/voicePrefix','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','/api/jira','./api/jira','/api/rpc','./api/rpc','./api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','/apidoc','static','join','root','/demo','/snippet','snippet','3.0.0','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','username','apiKey','firstName','lastName','street','email','clientId','clientSecret','securityToken','code','accessKey','tenantId','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridnum','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','length','isString','replace','@@{','includes','lodash','path','express','util','./errors','./config/environment','api','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','\x20body=%s','format','method','x-forwarded-for','headers','connection','remoteAddress','statusCode','responseTime','user','name','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','body','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','url','role','device','agent_name','/api/users','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','./api/mailApplication','./api/mailQueueReport','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','./api/faxMessage','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','/api/chat/websites','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','/api/tags','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','./api/analyticDefaultReport','./api/analyticExtractedReport','./api/analyticMetric','/api/analytics/field_reports','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskField','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','./api/intDynamics365Field'];(function(_0x493121,_0x17b822){var _0x51b912=function(_0x36850e){while(--_0x36850e){_0x493121['push'](_0x493121['shift']());}};_0x51b912(++_0x17b822);}(_0x6a2a,0x1be));var _0xa6a2=function(_0x18cabd,_0x4c086d){_0x18cabd=_0x18cabd-0x0;var _0x737f87=_0x6a2a[_0x18cabd];return _0x737f87;};'use strict';var _=require(_0xa6a2('0x0'));var path=require(_0xa6a2('0x1'));var express=require(_0xa6a2('0x2'));var ewinston=require('express-winston');var util=require(_0xa6a2('0x3'));var errors=require(_0xa6a2('0x4'));var config=require(_0xa6a2('0x5'));var logger=require('./config/logger')(_0xa6a2('0x6'));var authLogger=require('./config/logger')('auth');exports[_0xa6a2('0x7')]=function(_0x406434){_0x406434[_0xa6a2('0x8')](ewinston[_0xa6a2('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4059ac,_0x3beb87){var _0x5efd04=_0xa6a2('0xa');if(!_['isEmpty'](_0x4059ac['body'])){_0x5efd04+=_0xa6a2('0xb');var _0xaab4fd=_0x4059ac['body'];maskSensitiveData(_0xaab4fd);}return util[_0xa6a2('0xc')](_0x5efd04,_0x4059ac[_0xa6a2('0xd')],_0x4059ac['headers'][_0xa6a2('0xe')]?_0x4059ac[_0xa6a2('0xf')][_0xa6a2('0xe')]:_0x4059ac[_0xa6a2('0x10')][_0xa6a2('0x11')]||_0x4059ac['ip'],_0x4059ac['url'],_0x3beb87[_0xa6a2('0x12')],_0x3beb87[_0xa6a2('0x13')],_0x4059ac['user']?_0x4059ac[_0xa6a2('0x14')]['id']:null,_0x4059ac['user']?_0x4059ac['user'][_0xa6a2('0x15')]:null,_0x4059ac[_0xa6a2('0x14')]?_0x4059ac[_0xa6a2('0x14')]['role']:null,_0xaab4fd?util[_0xa6a2('0x16')](_0xaab4fd,![],null):'');}}));_0x406434[_0xa6a2('0x8')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x34697c,_0x59e85c){var _0x3be8b4=_0xa6a2('0x17');if(_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')]['device']&&_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x19')]){_0x3be8b4=_0xa6a2('0x1a');}return util[_0xa6a2('0xc')](_0x3be8b4,_0x34697c[_0xa6a2('0xd')],_0x34697c[_0xa6a2('0xf')]['x-forwarded-for']?_0x34697c[_0xa6a2('0xf')][_0xa6a2('0xe')]:_0x34697c[_0xa6a2('0x10')][_0xa6a2('0x11')]||_0x34697c['ip'],_0x34697c[_0xa6a2('0x1b')],_0x59e85c['statusCode'],_0x59e85c[_0xa6a2('0x13')],_0x34697c['user']?_0x34697c['user']['id']:null,_0x34697c['user']?_0x34697c[_0xa6a2('0x14')][_0xa6a2('0x15')]:null,_0x34697c[_0xa6a2('0x14')]?_0x34697c[_0xa6a2('0x14')][_0xa6a2('0x1c')]:null,_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')]['device']?_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x1d')]:'other',_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x19')]?_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x19')]:'',_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x1e')]?_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x1e')]:'');},'ignoreRoute':function(_0xeaabd){var _0x1d2e25=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1d2e25['test'](_0xeaabd['url']);}}));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x1f'),require('./api/user'));_0x406434[_0xa6a2('0x8')]('/api/voice/chanspy',require(_0xa6a2('0x20')));_0x406434['use']('/api/voice/contexts',require(_0xa6a2('0x21')));_0x406434['use'](_0xa6a2('0x22'),require(_0xa6a2('0x23')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x24'),require(_0xa6a2('0x25')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x26'),require('./api/voiceQueue'));_0x406434[_0xa6a2('0x8')]('/api/voice/recordings',require(_0xa6a2('0x27')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x28'),require(_0xa6a2('0x29')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x2a'),require('./api/voiceMail'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x2b'),require(_0xa6a2('0x2c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x2d'),require(_0xa6a2('0x2e')));_0x406434['use']('/api/voice/dials/reports',require(_0xa6a2('0x2f')));_0x406434[_0xa6a2('0x8')]('/api/voice/agents/reports',require(_0xa6a2('0x30')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x31'),require(_0xa6a2('0x32')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x33'),require(_0xa6a2('0x34')));_0x406434['use']('/api/trunks',require(_0xa6a2('0x35')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x36'),require(_0xa6a2('0x37')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x38'),require(_0xa6a2('0x39')));_0x406434['use'](_0xa6a2('0x3a'),require(_0xa6a2('0x3b')));_0x406434['use'](_0xa6a2('0x3c'),require(_0xa6a2('0x3d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x3e'),require(_0xa6a2('0x3f')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x40'),require(_0xa6a2('0x41')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x42'),require(_0xa6a2('0x43')));_0x406434[_0xa6a2('0x8')]('/api/mail/applications',require(_0xa6a2('0x44')));_0x406434[_0xa6a2('0x8')]('/api/mail/reports/queue',require(_0xa6a2('0x45')));_0x406434[_0xa6a2('0x8')]('/api/dashboards',require('./api/dashboard'));_0x406434['use'](_0xa6a2('0x46'),require(_0xa6a2('0x47')));_0x406434[_0xa6a2('0x8')]('/api/fax/accounts',require(_0xa6a2('0x48')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x49'),require(_0xa6a2('0x4a')));_0x406434['use']('/api/fax/interactions',require(_0xa6a2('0x4b')));_0x406434['use']('/api/fax/messages',require(_0xa6a2('0x4c')));_0x406434['use']('/api/fax/queues',require('./api/faxQueue'));_0x406434['use']('/api/fax/reports/queue',require(_0xa6a2('0x4d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x4e'),require(_0xa6a2('0x4f')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x50'),require(_0xa6a2('0x51')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x52'),require(_0xa6a2('0x53')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x54'),require(_0xa6a2('0x55')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x56'),require(_0xa6a2('0x57')));_0x406434['use'](_0xa6a2('0x58'),require(_0xa6a2('0x59')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x5a'),require(_0xa6a2('0x5b')));_0x406434['use'](_0xa6a2('0x5c'),require(_0xa6a2('0x5d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x5e'),require('./api/openchannelMessage'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x5f'),require('./api/openchannelQueue'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x60'),require('./api/chatWebsite'));_0x406434['use']('/api/openchannel/reports/queue',require(_0xa6a2('0x61')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x62'),require(_0xa6a2('0x63')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x64'),require('./api/chatInteraction'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x65'),require(_0xa6a2('0x66')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x67'),require(_0xa6a2('0x68')));_0x406434['use']('/api/chat/queues',require(_0xa6a2('0x69')));_0x406434['use'](_0xa6a2('0x6a'),require(_0xa6a2('0x6b')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x6c'),require(_0xa6a2('0x6d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x6e'),require(_0xa6a2('0x6f')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x70'),require('./api/cmContact'));_0x406434['use'](_0xa6a2('0x71'),require('./api/cmHopper'));_0x406434[_0xa6a2('0x8')]('/api/cm/hopper_black',require(_0xa6a2('0x72')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x73'),require(_0xa6a2('0x74')));_0x406434['use']('/api/cm/hopper_history',require('./api/cmHopperHistory'));_0x406434[_0xa6a2('0x8')]('/api/cm/custom_fields',require('./api/cmCustomField'));_0x406434['use'](_0xa6a2('0x75'),require(_0xa6a2('0x76')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x77'),require(_0xa6a2('0x78')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x79'),require(_0xa6a2('0x7a')));_0x406434['use'](_0xa6a2('0x7b'),require('./api/disposition'));_0x406434[_0xa6a2('0x8')]('/api/conditions',require(_0xa6a2('0x7c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x7d'),require(_0xa6a2('0x7e')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x7f'),require(_0xa6a2('0x80')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x81'),require(_0xa6a2('0x82')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x83'),require('./api/voiceQueuesLog'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x84'),require(_0xa6a2('0x85')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x86'),require('./api/sound'));_0x406434['use'](_0xa6a2('0x87'),require('./api/tag'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x88'),require(_0xa6a2('0x89')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x8a'),require('./api/trigger'));_0x406434['use'](_0xa6a2('0x8b'),require(_0xa6a2('0x8c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x8d'),require(_0xa6a2('0x8e')));_0x406434['use'](_0xa6a2('0x8f'),require(_0xa6a2('0x90')));_0x406434['use']('/api/analytics/custom_reports',require(_0xa6a2('0x91')));_0x406434['use']('/api/analytics/default_reports',require(_0xa6a2('0x92')));_0x406434[_0xa6a2('0x8')]('/api/analytics/extracted_reports',require(_0xa6a2('0x93')));_0x406434[_0xa6a2('0x8')]('/api/analytics/metrics',require(_0xa6a2('0x94')));_0x406434['use'](_0xa6a2('0x95'),require('./api/analyticFieldReport'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x96'),require(_0xa6a2('0x97')));_0x406434['use'](_0xa6a2('0x98'),require('./api/intSalesforceAccount'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x99'),require(_0xa6a2('0x9a')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x9b'),require(_0xa6a2('0x9c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x9d'),require(_0xa6a2('0x9e')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x9f'),require(_0xa6a2('0xa0')));_0x406434[_0xa6a2('0x8')]('/api/integrations/sugarcrm/fields',require('./api/intSugarcrmField'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xa1'),require(_0xa6a2('0xa2')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xa3'),require('./api/intDeskConfiguration'));_0x406434[_0xa6a2('0x8')]('/api/integrations/desk/fields',require(_0xa6a2('0xa4')));_0x406434[_0xa6a2('0x8')]('/api/integrations/zoho/accounts',require('./api/intZohoAccount'));_0x406434['use'](_0xa6a2('0xa5'),require(_0xa6a2('0xa6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xa7'),require(_0xa6a2('0xa8')));_0x406434['use'](_0xa6a2('0xa9'),require(_0xa6a2('0xaa')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xab'),require(_0xa6a2('0xac')));_0x406434[_0xa6a2('0x8')]('/api/integrations/zendesk/fields',require('./api/intZendeskField'));_0x406434['use'](_0xa6a2('0xad'),require('./api/intFreshdeskAccount'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xae'),require(_0xa6a2('0xaf')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb0'),require(_0xa6a2('0xb1')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb2'),require(_0xa6a2('0xb3')));_0x406434[_0xa6a2('0x8')]('/api/integrations/vtiger/configurations',require(_0xa6a2('0xb4')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb5'),require(_0xa6a2('0xb6')));_0x406434[_0xa6a2('0x8')]('/api/integrations/servicenow/accounts',require('./api/intServicenowAccount'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb7'),require(_0xa6a2('0xb8')));_0x406434[_0xa6a2('0x8')]('/api/integrations/servicenow/fields',require(_0xa6a2('0xb9')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xba'),require(_0xa6a2('0xbb')));_0x406434[_0xa6a2('0x8')]('/api/integrations/dynamics365/configurations',require(_0xa6a2('0xbc')));_0x406434[_0xa6a2('0x8')]('/api/integrations/dynamics365/fields',require(_0xa6a2('0xbd')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xbe'),require(_0xa6a2('0xbf')));_0x406434[_0xa6a2('0x8')]('/api/integrations/freshsales/configurations',require('./api/intFreshsalesConfiguration'));_0x406434['use'](_0xa6a2('0xc0'),require('./api/intFreshsalesField'));_0x406434['use'](_0xa6a2('0xc1'),require('./api/network'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc2'),require(_0xa6a2('0xc3')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc4'),require('./api/chatInternalMessage'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc5'),require(_0xa6a2('0xc6')));_0x406434[_0xa6a2('0x8')]('/api/jscripty/questions/reports',require(_0xa6a2('0xc7')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc8'),require(_0xa6a2('0xc9')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xca'),require(_0xa6a2('0xcb')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xcc'),require(_0xa6a2('0xcd')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xce'),require(_0xa6a2('0xcf')));_0x406434['use']('/api/jscripty/projects',require(_0xa6a2('0xd0')));_0x406434['use'](_0xa6a2('0xd1'),require(_0xa6a2('0xd2')));_0x406434[_0xa6a2('0x8')]('/api/square/odbc',require(_0xa6a2('0xd3')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xd4'),require(_0xa6a2('0xd5')));_0x406434[_0xa6a2('0x8')]('/api/square/recordings',require(_0xa6a2('0xd6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xd7'),require(_0xa6a2('0xd8')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xd9'),require('./api/team'));_0x406434['use'](_0xa6a2('0xda'),require(_0xa6a2('0xdb')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xdc'),require(_0xa6a2('0xdd')));_0x406434[_0xa6a2('0x8')]('/api/migrations',require('./api/migration'));_0x406434['use'](_0xa6a2('0xde'),require(_0xa6a2('0xdf')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe0'),require('./api/plugin'));_0x406434['use'](_0xa6a2('0xe1'),require(_0xa6a2('0xe2')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe3'),require(_0xa6a2('0xe4')));_0x406434['use']('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe5'),require(_0xa6a2('0xe6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe7'),require(_0xa6a2('0xe8')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe9'),require('./api/cmList'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xea'),require(_0xa6a2('0xeb')));_0x406434[_0xa6a2('0x8')]('/api/userProfiles',require('./api/userProfile'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xec'),require(_0xa6a2('0xed')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xee'),require(_0xa6a2('0xef')));_0x406434['use'](_0xa6a2('0xf0'),require('./api/userNotification'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf1'),require(_0xa6a2('0xf2')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf3'),require('./api/whatsappApplication'));_0x406434[_0xa6a2('0x8')]('/api/whatsapp/interactions',require(_0xa6a2('0xf4')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf5'),require(_0xa6a2('0xf6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf7'),require(_0xa6a2('0xf8')));_0x406434[_0xa6a2('0x8')]('/api/whatsapp/reports/transfer',require(_0xa6a2('0xf9')));_0x406434[_0xa6a2('0x8')]('/api/whatsapp/queues',require(_0xa6a2('0xfa')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xfb'),require(_0xa6a2('0xfc')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xfd'),require(_0xa6a2('0xfe')));_0x406434['use'](_0xa6a2('0xff'),require(_0xa6a2('0x100')));_0x406434['use'](_0xa6a2('0x101'),require('./api/authGoogle'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x102'),require(_0xa6a2('0x103')));_0x406434['use'](_0xa6a2('0x104'),require(_0xa6a2('0x105')));_0x406434['use']('/api/version',require(_0xa6a2('0x106')));_0x406434[_0xa6a2('0x8')]('/api/system',require(_0xa6a2('0x107')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x108'),require(_0xa6a2('0x109')));_0x406434['use'](_0xa6a2('0x10a'),require('./api/webbar'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x10b'),express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config[_0xa6a2('0x10e')],_0xa6a2('0x10b'))));_0x406434[_0xa6a2('0x8')]('/www',express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config[_0xa6a2('0x10e')],'/www')));_0x406434[_0xa6a2('0x8')]('/demo',express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config[_0xa6a2('0x10e')],_0xa6a2('0x10f'))));_0x406434['use'](_0xa6a2('0x110'),express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config['root'],_0xa6a2('0x111'),_0xa6a2('0x112'))));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x113'),express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config['root'],'/server/files/plugins')));_0x406434[_0xa6a2('0x114')](_0xa6a2('0x115'))[_0xa6a2('0x116')](errors[0x194]);_0x406434[_0xa6a2('0x114')]('/*')[_0xa6a2('0x116')](function(_0x170bb8,_0x1d2017){_0x1d2017[_0xa6a2('0x117')](path[_0xa6a2('0x118')](_0x406434[_0xa6a2('0x116')]('appPath')+_0xa6a2('0x119')));});};var sensitiveFields=[_0xa6a2('0x11a'),'password','newPassword',_0xa6a2('0x11b'),_0xa6a2('0x11c'),_0xa6a2('0x11d'),_0xa6a2('0x11e'),'phone','mobile','fax',_0xa6a2('0x11f'),_0xa6a2('0x120'),_0xa6a2('0x121'),_0xa6a2('0x122'),_0xa6a2('0x123'),_0xa6a2('0x124'),_0xa6a2('0x125'),'token',_0xa6a2('0x126'),'accessToken',_0xa6a2('0x127'),_0xa6a2('0x128'),_0xa6a2('0x129'),_0xa6a2('0x12a'),'membername','calleridname',_0xa6a2('0x12b'),'exten','vidaooApiKey',_0xa6a2('0x12c'),_0xa6a2('0x12d'),_0xa6a2('0x12e'),_0xa6a2('0x12f'),_0xa6a2('0x130'),_0xa6a2('0x14'),_0xa6a2('0x131'),_0xa6a2('0x132'),_0xa6a2('0x133'),_0xa6a2('0x134'),_0xa6a2('0x135'),_0xa6a2('0x136'),_0xa6a2('0x137')];function maskSensitiveData(_0x69d6a){var _0x143149=/(?!^)[\s\S](?!$)/g;if(!_[_0xa6a2('0x138')](_0x69d6a))return;for(var _0x1b09bc in _0x69d6a){if(_['isArray'](_0x69d6a[_0x1b09bc])){for(var _0x18b406=0x0;_0x18b406<_0x69d6a[_0x1b09bc][_0xa6a2('0x139')];_0x18b406++){maskSensitiveData(_0x69d6a[_0x1b09bc][_0x18b406]);}}else if(_[_0xa6a2('0x138')](_0x69d6a[_0x1b09bc])){maskSensitiveData(_0x69d6a[_0x1b09bc]);}else if(_[_0xa6a2('0x13a')](_0x69d6a[_0x1b09bc])){_0x69d6a[_0x1b09bc]=_0x69d6a[_0x1b09bc][_0xa6a2('0x13b')](/{{{/g,_0xa6a2('0x13c'))['replace'](/}}}/g,'}@@')['replace'](/{{/g,'@{')[_0xa6a2('0x13b')](/}}/g,'}@');if(_[_0xa6a2('0x13d')](sensitiveFields,_0x1b09bc)){_0x69d6a[_0x1b09bc]=_0x69d6a[_0x1b09bc][_0xa6a2('0x13b')](_0x143149,'*');}}}}
\ No newline at end of file
index 1794144..04c7df7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba6=['default','jayson/promise','bluebird','lodash','../config/environment','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','server','http','rpc','port','error','listen','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers'];(function(_0x5af2fb,_0x2d8cb3){var _0x660927=function(_0x1c7cf7){while(--_0x1c7cf7){_0x5af2fb['push'](_0x5af2fb['shift']());}};_0x660927(++_0x2d8cb3);}(_0xcba6,0xd6));var _0x6cba=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0xcba6[_0x68ee8b];return _0x5148f7;};'use strict';var jayson=require(_0x6cba('0x0'));var BPromise=require(_0x6cba('0x1'));var _=require(_0x6cba('0x2'));var config=require(_0x6cba('0x3'));exports['listen']=function(){return new BPromise(function(_0x2d2bd3,_0x437b70){var _0x4a8a3c={};_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/user/user.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x5')));_0x4a8a3c=_['merge'](_0x4a8a3c,require('../api/voiceQueue/voiceQueue.rpc'));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x6')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x7')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x8')));_0x4a8a3c=_['merge'](_0x4a8a3c,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x9')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0xa')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0xb')));_0x4a8a3c=_['merge'](_0x4a8a3c,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0xc')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0xd')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0xe')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0xf')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x10')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/mailApplication/mailApplication.rpc'));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x11')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/faxAccount/faxAccount.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/faxApplication/faxApplication.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x12')));_0x4a8a3c=_['merge'](_0x4a8a3c,require('../api/faxMessage/faxMessage.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x13')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x14')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x15')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x16')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x17')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/smsQueue/smsQueue.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x18')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x19')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x1a')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x1b')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x1c')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x1d')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x1e')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x1f')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x20')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/cmHopper/cmHopper.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x21')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x22')));_0x4a8a3c=_['merge'](_0x4a8a3c,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x23')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x24')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x25')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x26')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x27')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x28')));_0x4a8a3c=_['merge'](_0x4a8a3c,require('../api/variable/variable.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x29')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x2a')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x2b')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x2c')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x2d')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x2e')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x2f')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x30')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x31')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x32')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x33')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/squareReport/squareReport.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x34')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/setting/setting.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x35')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/squareProject/squareProject.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x36')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x37')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x38')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x39')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x3a')));_0x4a8a3c=_['merge'](_0x4a8a3c,require(_0x6cba('0x3b')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x3c')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require(_0x6cba('0x3d')));_0x4a8a3c=_[_0x6cba('0x4')](_0x4a8a3c,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x1ae5e1=jayson[_0x6cba('0x3e')](_0x4a8a3c)[_0x6cba('0x3f')]();var _0x531be7=config[_0x6cba('0x40')][_0x6cba('0x41')]||config[_0x6cba('0x41')]+0x1;var _0x2c8adf=config[_0x6cba('0x40')]['ip']||'localhost';_0x1ae5e1['on'](_0x6cba('0x42'),function(_0x3a52e9){return _0x437b70(_0x3a52e9);});_0x1ae5e1[_0x6cba('0x43')](_0x531be7,_0x2c8adf,function(){console['log'](_0x6cba('0x44'),_0x2c8adf,_0x531be7);require(_0x6cba('0x45'))[_0x6cba('0x46')]();return _0x2d2bd3('RPC\x20listening\x20on\x20'+_0x2c8adf+':'+_0x531be7);});});};
\ No newline at end of file
+var _0x0c85=['jayson/promise','bluebird','lodash','listen','merge','../api/user/user.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/faxAccount/faxAccount.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default'];(function(_0x4031bb,_0x3f105a){var _0x4087f8=function(_0x3eac42){while(--_0x3eac42){_0x4031bb['push'](_0x4031bb['shift']());}};_0x4087f8(++_0x3f105a);}(_0x0c85,0x14f));var _0x50c8=function(_0x5397fe,_0x430598){_0x5397fe=_0x5397fe-0x0;var _0x289fff=_0x0c85[_0x5397fe];return _0x289fff;};'use strict';var jayson=require(_0x50c8('0x0'));var BPromise=require(_0x50c8('0x1'));var _=require(_0x50c8('0x2'));var config=require('../config/environment');exports[_0x50c8('0x3')]=function(){return new BPromise(function(_0x21a5b2,_0x5cbd1c){var _0x3e758d={};_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x5')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/voiceExtension/voiceExtension.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x6')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x7')));_0x3e758d=_['merge'](_0x3e758d,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x8')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x9')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xa')));_0x3e758d=_['merge'](_0x3e758d,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xb')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0xc')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xd')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0xe')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xf')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x10')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/mailApplication/mailApplication.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x11')));_0x3e758d=_['merge'](_0x3e758d,require('../api/faxApplication/faxApplication.rpc'));_0x3e758d=_['merge'](_0x3e758d,require('../api/faxInteraction/faxInteraction.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x12')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x13')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x14')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x15')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/smsInteraction/smsInteraction.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x16')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x17')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x18')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x19')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x1a')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x1b')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x1c')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x1d')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x1e')));_0x3e758d=_['merge'](_0x3e758d,require('../api/chatQueue/chatQueue.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x1f')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/cmHopper/cmHopper.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x20')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x21')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x22')));_0x3e758d=_['merge'](_0x3e758d,require('../api/interval/interval.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x23')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/sound/sound.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x24')));_0x3e758d=_['merge'](_0x3e758d,require('../api/trigger/trigger.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x25')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x26')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x27')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x28')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x29')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2a')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2b')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2c')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2d')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2e')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2f')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x30')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x31')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/squareProject/squareProject.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x32')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/squareMessage/squareMessage.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x33')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x34')));_0x3e758d=_['merge'](_0x3e758d,require('../api/plugin/plugin.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x35')));_0x3e758d=_['merge'](_0x3e758d,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x36')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x37')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x38')));var _0x35531f=jayson[_0x50c8('0x39')](_0x3e758d)[_0x50c8('0x3a')]();var _0x4d4083=config[_0x50c8('0x3b')][_0x50c8('0x3c')]||config[_0x50c8('0x3c')]+0x1;var _0xa5f046=config[_0x50c8('0x3b')]['ip']||_0x50c8('0x3d');_0x35531f['on'](_0x50c8('0x3e'),function(_0x2d4d62){return _0x5cbd1c(_0x2d4d62);});_0x35531f[_0x50c8('0x3')](_0x4d4083,_0xa5f046,function(){console[_0x50c8('0x3f')](_0x50c8('0x40'),_0xa5f046,_0x4d4083);require(_0x50c8('0x41'))[_0x50c8('0x42')]();return _0x21a5b2('RPC\x20listening\x20on\x20'+_0xa5f046+':'+_0x4d4083);});});};
\ No newline at end of file
index ce3c09d..4b53d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e5=['./error','call','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','indexOf','substr','split','length','match','error','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','write','destroy','prototype','sendRequest','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','isBoolean','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','exec','AGI','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','events','./reply'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc5e5,0xdc));var _0x5c5e=function(_0x3403c7,_0x11d960){_0x3403c7=_0x3403c7-0x0;var _0x26a82=_0xc5e5[_0x3403c7];return _0x26a82;};'use strict';var util=require('util');var _=require('lodash');var EventEmitter=require(_0x5c5e('0x0'))['EventEmitter'];var AGIReply=require(_0x5c5e('0x1'));var AGIError=require(_0x5c5e('0x2'));function AGIChannel(_0x6c0acb){var _0x32d8f5=this,_0x49029d=new AGIReply(),_0x41ee97=![],_0x42c1c2={};EventEmitter[_0x5c5e('0x3')](_0x32d8f5);_0x6c0acb['setEncoding'](_0x5c5e('0x4'));_0x6c0acb[_0x5c5e('0x5')](0x8*0x3c*0x3c*0x3e8);_0x49029d['setEncoding'](_0x5c5e('0x4'));_0x49029d['on'](_0x5c5e('0x6'),function(_0x14ff17){for(var _0x35aceb in _0x14ff17){_0x32d8f5[_0x35aceb]=_0x14ff17[_0x35aceb];}_0x32d8f5[_0x5c5e('0x7')](_0x5c5e('0x8'));});_0x49029d['on'](_0x5c5e('0x9'),function(_0x583b7e){if(_0x583b7e[_0x5c5e('0xa')]()==_0x5c5e('0xb')){_0x32d8f5['emit'](_0x5c5e('0xb'));return;}if(_0x583b7e['substring'](0x0,0xb)==_0x5c5e('0xc')){_0x41ee97=!![];}if(_0x41ee97){_0x42c1c2['rx']+=_0x583b7e+'\x0a';if(_0x583b7e[_0x5c5e('0xd')](_0x5c5e('0xe'))!=-0x1){_0x41ee97=![];}}else{_0x42c1c2['rx']=_0x583b7e;}if(_0x41ee97){return;}if(typeof _0x42c1c2['cb']==_0x5c5e('0xf')){var _0x44ff59=_0x42c1c2['rx'][_0x5c5e('0x10')](0x0,0x3),_0x593aad=null,_0x3ad274=null;_0x44ff59=parseInt(_0x44ff59);if(isNaN(_0x44ff59)){_0x42c1c2['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x5c5e('0x11')});return;}if(_0x44ff59!=0xc8){_0x42c1c2['cb'](null,{'code':_0x44ff59,'result':-0x1,'extra':'KO'});return;}_0x593aad=_0x42c1c2['rx']['substring'](0x4)[_0x5c5e('0x12')]('result=','');if(_0x593aad[_0x5c5e('0x13')]('\x20')!=-0x1){_0x593aad=_0x593aad[_0x5c5e('0x14')](0x0,_0x593aad[_0x5c5e('0x13')]('\x20'));}if(_['startsWith'](_0x593aad,'-1')){_0x593aad=parseInt(_0x593aad);}_0x3ad274=_0x42c1c2['rx'][_0x5c5e('0x15')]('\x20');if(_0x3ad274[_0x5c5e('0x16')]==0x3){_0x3ad274=_0x3ad274[0x2][_0x5c5e('0x10')](0x1,_0x3ad274[0x2][_0x5c5e('0x16')]-0x1);}else if(_0x3ad274[_0x5c5e('0x16')]>0x3){var _0x579b00=/\((.+)\)/;var _0x274714=_0x42c1c2['rx'][_0x5c5e('0x17')](_0x579b00);if(_0x274714){_0x3ad274=_0x274714[0x1];}else{_0x3ad274=null;}}else{_0x3ad274=null;}_0x42c1c2['cb'](null,{'code':_0x44ff59,'result':_0x593aad,'extra':_0x3ad274});}});_0x6c0acb['on'](_0x5c5e('0x18'),function(_0xebbb89){_0x32d8f5[_0x5c5e('0x7')]('error',new AGIError('E_AGI_SOCKET_ERROR',_0xebbb89['code']));});_0x6c0acb['on'](_0x5c5e('0x19'),function(){_0x32d8f5[_0x5c5e('0x7')](_0x5c5e('0x19'),new AGIError(_0x5c5e('0x1a')));});_0x6c0acb['on'](_0x5c5e('0x1b'),function(){_0x32d8f5[_0x5c5e('0x7')](_0x5c5e('0x1b'),new AGIError(_0x5c5e('0x1c')));_0x6c0acb['destroy']();});_0x6c0acb[_0x5c5e('0x1d')](_0x49029d);this[_0x5c5e('0x1e')]=function(_0x2e1bcd,_0x4111ea){var _0x2e1bcd=_0x2e1bcd||'',_0x4111ea=typeof _0x4111ea=='function'?_0x4111ea:new Function();_0x42c1c2={'tx':_0x2e1bcd,'rx':'','cb':_0x4111ea};_0x6c0acb[_0x5c5e('0x1f')](_0x2e1bcd+'\x0a');},this[_0x5c5e('0x19')]=function(){_0x6c0acb[_0x5c5e('0x20')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x22')]=function(_0x10e343){return this[_0x5c5e('0x1e')]['sync'](this,_0x10e343);};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x23')]=function(){return this['sendRequest'](_0x5c5e('0x24'));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x25')]=function(_0x23879c,_0x5e8588,_0xbbb083){_0x23879c=_0x23879c===undefined?_0x5c5e('0x26'):_0x23879c;_0x5e8588=_0x5e8588===undefined?'5':_0x5e8588;_0xbbb083=_0xbbb083===undefined?'1':_0xbbb083;return this['sendRequest'](util[_0x5c5e('0x27')](_0x5c5e('0x28'),_0x23879c,_0x5e8588*0x3e8,_0xbbb083));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x29')]=function(_0x2f7a0d){_0x2f7a0d=_0x2f7a0d||_0x5c5e('0x2a');return this[_0x5c5e('0x22')](util[_0x5c5e('0x27')]('VERBOSE\x20\x22%s\x22',_0x2f7a0d));};AGIChannel[_0x5c5e('0x21')]['exec']=function(_0x322ff3,_0x3b7737){if(_[_0x5c5e('0x2b')](_0x3b7737)){return this['sendRequest'](util[_0x5c5e('0x27')](_0x5c5e('0x2c'),_0x322ff3,_0x3b7737[_0x5c5e('0x2d')](',')));}return this['sendRequest'](util[_0x5c5e('0x27')]('EXEC\x20%s\x20%s',_0x322ff3,_0x3b7737));};AGIChannel['prototype'][_0x5c5e('0x2e')]=function(_0x4b1dae){return this['sendRequest'](util[_0x5c5e('0x27')](_0x5c5e('0x2f'),_0x4b1dae));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x30')]=function(_0x38f1ee){return this[_0x5c5e('0x22')](util[_0x5c5e('0x27')](_0x5c5e('0x31'),_0x38f1ee));};AGIChannel[_0x5c5e('0x21')]['setPriority']=function(_0xdf2d70){return this['sendRequest'](util[_0x5c5e('0x27')](_0x5c5e('0x32'),_0xdf2d70));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0xb')]=function(){return this[_0x5c5e('0x22')](_0x5c5e('0x33'));};AGIChannel[_0x5c5e('0x21')]['setVariable']=function(_0x304707,_0x1efa26){var _0x44896b=_[_0x5c5e('0x34')](_0x1efa26)||_['isNumber'](_0x1efa26)?_0x1efa26[_0x5c5e('0x35')]():_0x1efa26;return this[_0x5c5e('0x22')](util['format'](_0x5c5e('0x36'),_0x304707,_0x44896b?_0x44896b[_0x5c5e('0x35')]()[_0x5c5e('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x37')]=function(_0x513f03,_0x10d739){return this['sendRequest'](util['format'](_0x5c5e('0x38'),_0x513f03,_0x10d739));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x39')]=function(_0x25980,_0x18bd11){return this[_0x5c5e('0x22')](util[_0x5c5e('0x27')](_0x5c5e('0x3a'),_0x25980,_0x18bd11));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x3b')]=function(_0x1b8bad,_0x5be51b){return this[_0x5c5e('0x22')](util[_0x5c5e('0x27')](_0x5c5e('0x3c'),_0x1b8bad,_0x5be51b));};AGIChannel[_0x5c5e('0x21')]['continueAt']=function(_0x5e5233,_0x9ad6b9,_0x3c50bb){_0x9ad6b9=_0x9ad6b9||this['extension'];_0x3c50bb=_0x3c50bb||0x1;this[_0x5c5e('0x2e')](_0x5e5233);this[_0x5c5e('0x30')](_0x9ad6b9);this[_0x5c5e('0x3d')](_0x3c50bb);return this[_0x5c5e('0x29')](util[_0x5c5e('0x27')](_0x5c5e('0x3e'),_0x5e5233,_0x9ad6b9,_0x3c50bb));};AGIChannel['prototype'][_0x5c5e('0x3f')]=function(_0x53d821){return this[_0x5c5e('0x22')](util[_0x5c5e('0x27')]('GET\x20VARIABLE\x20\x22%s\x22',_0x53d821));};AGIChannel['prototype']['recordFile']=function(_0x206d23,_0x1984b4,_0x24bec1,_0x1d1c2b,_0x452d71,_0x5dc658){_0x1984b4=_0x1984b4||_0x5c5e('0x40');_0x24bec1=_0x24bec1||'';_0x1d1c2b=_0x1d1c2b===undefined?-0x1:_0x1d1c2b==='-1'?-0x1:_0x1d1c2b*0x3e8;_0x452d71=_0x452d71===undefined?'':'s='+_0x452d71;_0x5dc658=_0x5dc658?_0x5c5e('0x41'):'';return this[_0x5c5e('0x22')](util['format'](_0x5c5e('0x42'),_0x206d23,_0x1984b4,_0x24bec1,_0x1d1c2b,_0x5dc658,_0x452d71));};AGIChannel[_0x5c5e('0x21')]['streamFile']=function(_0x26cbca,_0x1ac28a){_0x1ac28a=_0x1ac28a||'';return this[_0x5c5e('0x22')](util[_0x5c5e('0x27')](_0x5c5e('0x43'),_0x26cbca,_0x1ac28a));};AGIChannel[_0x5c5e('0x21')][_0x5c5e('0x44')]=function(_0x355d13){return this[_0x5c5e('0x45')](_0x5c5e('0x46'),_0x355d13);};AGIChannel[_0x5c5e('0x21')]['wait']=function(_0x51d1b1){return this[_0x5c5e('0x45')](_0x5c5e('0x47'),_0x51d1b1);};AGIChannel[_0x5c5e('0x21')]['error']=function(_0x529afd,_0x26a72f){this[_0x5c5e('0x29')](util[_0x5c5e('0x27')](_0x5c5e('0x48'),_0x529afd['id'],_0x529afd[_0x5c5e('0x49')],_0x26a72f));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0xb778=['GOTO\x20%s\x20%s\x20%s','getVariable','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','events','./error','setEncoding','utf8','emit','ready','line','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','pipe','command','write','prototype','sendRequest','sync','answer','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','exec','isArray','join','EXEC\x20%s\x20%s','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','setContext'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xb778,0x1c8));var _0x8b77=function(_0x1198a7,_0x58ca47){_0x1198a7=_0x1198a7-0x0;var _0x34e937=_0xb778[_0x1198a7];return _0x34e937;};'use strict';var util=require(_0x8b77('0x0'));var _=require('lodash');var EventEmitter=require(_0x8b77('0x1'))['EventEmitter'];var AGIReply=require('./reply');var AGIError=require(_0x8b77('0x2'));function AGIChannel(_0xa78b66){var _0x169029=this,_0x1d9fc7=new AGIReply(),_0x2a79ef=![],_0x3f309a={};EventEmitter['call'](_0x169029);_0xa78b66[_0x8b77('0x3')](_0x8b77('0x4'));_0xa78b66['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x1d9fc7[_0x8b77('0x3')](_0x8b77('0x4'));_0x1d9fc7['on']('headers',function(_0x1a7405){for(var _0x4909ef in _0x1a7405){_0x169029[_0x4909ef]=_0x1a7405[_0x4909ef];}_0x169029[_0x8b77('0x5')](_0x8b77('0x6'));});_0x1d9fc7['on'](_0x8b77('0x7'),function(_0x576f58){if(_0x576f58['toLowerCase']()==_0x8b77('0x8')){_0x169029['emit'](_0x8b77('0x8'));return;}if(_0x576f58[_0x8b77('0x9')](0x0,0xb)==_0x8b77('0xa')){_0x2a79ef=!![];}if(_0x2a79ef){_0x3f309a['rx']+=_0x576f58+'\x0a';if(_0x576f58[_0x8b77('0xb')](_0x8b77('0xc'))!=-0x1){_0x2a79ef=![];}}else{_0x3f309a['rx']=_0x576f58;}if(_0x2a79ef){return;}if(typeof _0x3f309a['cb']==_0x8b77('0xd')){var _0x3c1e3e=_0x3f309a['rx'][_0x8b77('0x9')](0x0,0x3),_0x1339e5=null,_0x320712=null;_0x3c1e3e=parseInt(_0x3c1e3e);if(isNaN(_0x3c1e3e)){_0x3f309a['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x8b77('0xe')});return;}if(_0x3c1e3e!=0xc8){_0x3f309a['cb'](null,{'code':_0x3c1e3e,'result':-0x1,'extra':'KO'});return;}_0x1339e5=_0x3f309a['rx'][_0x8b77('0x9')](0x4)[_0x8b77('0xf')](_0x8b77('0x10'),'');if(_0x1339e5['indexOf']('\x20')!=-0x1){_0x1339e5=_0x1339e5[_0x8b77('0x11')](0x0,_0x1339e5[_0x8b77('0x12')]('\x20'));}if(_[_0x8b77('0x13')](_0x1339e5,'-1')){_0x1339e5=parseInt(_0x1339e5);}_0x320712=_0x3f309a['rx'][_0x8b77('0x14')]('\x20');if(_0x320712[_0x8b77('0x15')]==0x3){_0x320712=_0x320712[0x2]['substring'](0x1,_0x320712[0x2][_0x8b77('0x15')]-0x1);}else if(_0x320712[_0x8b77('0x15')]>0x3){var _0x525577=/\((.+)\)/;var _0xd30a25=_0x3f309a['rx'][_0x8b77('0x16')](_0x525577);if(_0xd30a25){_0x320712=_0xd30a25[0x1];}else{_0x320712=null;}}else{_0x320712=null;}_0x3f309a['cb'](null,{'code':_0x3c1e3e,'result':_0x1339e5,'extra':_0x320712});}});_0xa78b66['on'](_0x8b77('0x17'),function(_0x20ca52){_0x169029['emit']('error',new AGIError(_0x8b77('0x18'),_0x20ca52[_0x8b77('0x19')]));});_0xa78b66['on'](_0x8b77('0x1a'),function(){_0x169029[_0x8b77('0x5')](_0x8b77('0x1a'),new AGIError(_0x8b77('0x1b')));});_0xa78b66['on']('timeout',function(){_0x169029['emit']('timeout',new AGIError('E_AGI_SOCKET_TIMEOUT'));_0xa78b66['destroy']();});_0xa78b66[_0x8b77('0x1c')](_0x1d9fc7);this[_0x8b77('0x1d')]=function(_0x489850,_0x459f5d){var _0x489850=_0x489850||'',_0x459f5d=typeof _0x459f5d=='function'?_0x459f5d:new Function();_0x3f309a={'tx':_0x489850,'rx':'','cb':_0x459f5d};_0xa78b66[_0x8b77('0x1e')](_0x489850+'\x0a');},this[_0x8b77('0x1a')]=function(){_0xa78b66['destroy']();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x8b77('0x1f')][_0x8b77('0x20')]=function(_0x577aa8){return this[_0x8b77('0x1d')][_0x8b77('0x21')](this,_0x577aa8);};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x22')]=function(){return this[_0x8b77('0x20')]('ANSWER');};AGIChannel['prototype'][_0x8b77('0x23')]=function(_0x57a559,_0x5ba4ce,_0x1b6319){_0x57a559=_0x57a559===undefined?_0x8b77('0x24'):_0x57a559;_0x5ba4ce=_0x5ba4ce===undefined?'5':_0x5ba4ce;_0x1b6319=_0x1b6319===undefined?'1':_0x1b6319;return this['sendRequest'](util[_0x8b77('0x25')](_0x8b77('0x26'),_0x57a559,_0x5ba4ce*0x3e8,_0x1b6319));};AGIChannel['prototype'][_0x8b77('0x27')]=function(_0x3cf13d){_0x3cf13d=_0x3cf13d||'NO\x20MESSAGE';return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('VERBOSE\x20\x22%s\x22',_0x3cf13d));};AGIChannel['prototype'][_0x8b77('0x28')]=function(_0x553e49,_0x178ed4){if(_[_0x8b77('0x29')](_0x178ed4)){return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('EXEC\x20%s\x20%s',_0x553e49,_0x178ed4[_0x8b77('0x2a')](',')));}return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x2b'),_0x553e49,_0x178ed4));};AGIChannel[_0x8b77('0x1f')]['setContext']=function(_0x3942b9){return this[_0x8b77('0x20')](util['format'](_0x8b77('0x2c'),_0x3942b9));};AGIChannel['prototype'][_0x8b77('0x2d')]=function(_0x3374ce){return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x2e'),_0x3374ce));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x2f')]=function(_0x21cc98){return this[_0x8b77('0x20')](util['format'](_0x8b77('0x30'),_0x21cc98));};AGIChannel['prototype'][_0x8b77('0x8')]=function(){return this[_0x8b77('0x20')](_0x8b77('0x31'));};AGIChannel['prototype'][_0x8b77('0x32')]=function(_0x8fbca3,_0x4bd211){var _0x2d6fef=_[_0x8b77('0x33')](_0x4bd211)||_[_0x8b77('0x34')](_0x4bd211)?_0x4bd211[_0x8b77('0x35')]():_0x4bd211;return this[_0x8b77('0x20')](util['format'](_0x8b77('0x36'),_0x8fbca3,_0x2d6fef?_0x2d6fef['toString']()[_0x8b77('0xf')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x37')]=function(_0x21d1e6,_0x454b69){return this['sendRequest'](util['format'](_0x8b77('0x38'),_0x21d1e6,_0x454b69));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x39')]=function(_0x5ca7da,_0x31a65a){return this['sendRequest'](util[_0x8b77('0x25')](_0x8b77('0x3a'),_0x5ca7da,_0x31a65a));};AGIChannel['prototype'][_0x8b77('0x3b')]=function(_0x51e679,_0x3ba4a1){return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x51e679,_0x3ba4a1));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x3c')]=function(_0xcb0304,_0x1a0fad,_0x4fca72){_0x1a0fad=_0x1a0fad||this['extension'];_0x4fca72=_0x4fca72||0x1;this[_0x8b77('0x3d')](_0xcb0304);this['setExtension'](_0x1a0fad);this[_0x8b77('0x2f')](_0x4fca72);return this[_0x8b77('0x27')](util[_0x8b77('0x25')](_0x8b77('0x3e'),_0xcb0304,_0x1a0fad,_0x4fca72));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x3f')]=function(_0x3f52e6){return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('GET\x20VARIABLE\x20\x22%s\x22',_0x3f52e6));};AGIChannel['prototype']['recordFile']=function(_0x368472,_0x4e8dca,_0x42ab68,_0x58aef0,_0x5c4872,_0x12a7b2){_0x4e8dca=_0x4e8dca||_0x8b77('0x40');_0x42ab68=_0x42ab68||'';_0x58aef0=_0x58aef0===undefined?-0x1:_0x58aef0==='-1'?-0x1:_0x58aef0*0x3e8;_0x5c4872=_0x5c4872===undefined?'':'s='+_0x5c4872;_0x12a7b2=_0x12a7b2?_0x8b77('0x41'):'';return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x42'),_0x368472,_0x4e8dca,_0x42ab68,_0x58aef0,_0x12a7b2,_0x5c4872));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x43')]=function(_0x18377e,_0x27a091){_0x27a091=_0x27a091||'';return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x44'),_0x18377e,_0x27a091));};AGIChannel['prototype']['agi']=function(_0xc51a00){return this[_0x8b77('0x28')](_0x8b77('0x45'),_0xc51a00);};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x46')]=function(_0x363c98){return this[_0x8b77('0x28')](_0x8b77('0x47'),_0x363c98);};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x17')]=function(_0xb812b4,_0xb821d5){this[_0x8b77('0x27')](util['format'](_0x8b77('0x48'),_0xb812b4['id'],_0xb812b4[_0x8b77('0x49')],_0xb821d5));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index 98c4923..dc59023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869d=['apply','message','name','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','format'];(function(_0x38330d,_0x2f0b1d){var _0x5023c5=function(_0x5c16bf){while(--_0x5c16bf){_0x38330d['push'](_0x38330d['shift']());}};_0x5023c5(++_0x2f0b1d);}(_0x869d,0x1bd));var _0xd869=function(_0x16a6bc,_0x52c641){_0x16a6bc=_0x16a6bc-0x0;var _0x38aa93=_0x869d[_0x16a6bc];return _0x38aa93;};'use strict';var util=require(_0xd869('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xd869('0x1'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xd869('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xd869('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xd869('0x4'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0xd869('0x5'),'E_AGI_SOCKET_TIMEOUT':_0xd869('0x6'),'E_AGI_COMMAND_EMPTY':_0xd869('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0xd869('0x8')};function AGIError(_0x14df58){var _0x14df58=_0x14df58||null,_0x4e3789=_0x4e3789||[],_0x23e96a=0x1,_0x191f87='';if(!error[_0x14df58]){_0x14df58='E_AGI_UNDEFINED';}_0x4e3789['push'](error[_0x14df58]);while(arguments[_0x23e96a]){_0x4e3789['push'](arguments[_0x23e96a]);_0x23e96a++;}_0x191f87=util[_0xd869('0x9')][_0xd869('0xa')](util,_0x4e3789);this[_0xd869('0xb')]=_0x191f87;this[_0xd869('0xc')]=_0x14df58;}module['exports']=AGIError;
\ No newline at end of file
+var _0xf87c=['Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push','format','message','name','exports','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xf87c,0x174));var _0xcf87=function(_0x3f4891,_0x4e6f62){_0x3f4891=_0x3f4891-0x0;var _0x54f2d8=_0xf87c[_0x3f4891];return _0x54f2d8;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xcf87('0x0'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xcf87('0x1'),'E_AGI_SERVER_MAXCONNECTION':_0xcf87('0x2'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xcf87('0x3'),'E_AGI_SOCKET_CLOSE':_0xcf87('0x4'),'E_AGI_SOCKET_TIMEOUT':_0xcf87('0x5'),'E_AGI_COMMAND_EMPTY':_0xcf87('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xcf87('0x7'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x23fcb2){var _0x23fcb2=_0x23fcb2||null,_0x239398=_0x239398||[],_0x2069af=0x1,_0x3f2555='';if(!error[_0x23fcb2]){_0x23fcb2=_0xcf87('0x8');}_0x239398[_0xcf87('0x9')](error[_0x23fcb2]);while(arguments[_0x2069af]){_0x239398[_0xcf87('0x9')](arguments[_0x2069af]);_0x2069af++;}_0x3f2555=util[_0xcf87('0xa')]['apply'](util,_0x239398);this[_0xcf87('0xb')]=_0x3f2555;this[_0xcf87('0xc')]=_0x23fcb2;}module[_0xcf87('0xd')]=AGIError;
\ No newline at end of file
index 143f6d6..dfefd24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef9=['info','no\x20edge/s\x20available','condition','agicommand','vswitch','default','target','invalid','default\x20on\x20switch\x20not\x20found','lodash','../../../config/logger','agi','menu','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','size','getVertex','traverseBFS','no\x20vertex\x20found','length'];(function(_0x37cf21,_0x2972a5){var _0x2c8fe8=function(_0x1cd279){while(--_0x1cd279){_0x37cf21['push'](_0x37cf21['shift']());}};_0x2c8fe8(++_0x2972a5);}(_0xfef9,0x9f));var _0x9fef=function(_0x3a3afe,_0x15da25){_0x3a3afe=_0x3a3afe-0x0;var _0x262dab=_0xfef9[_0x3a3afe];return _0x262dab;};'use strict';var _=require(_0x9fef('0x0'));var logger=require(_0x9fef('0x1'))(_0x9fef('0x2'));var verticesWithRetry=[_0x9fef('0x3'),'getdigits',_0x9fef('0x4')];var Graph=function(){this[_0x9fef('0x5')]={};this[_0x9fef('0x6')]={};this[_0x9fef('0x7')]=0x0;};Graph[_0x9fef('0x8')][_0x9fef('0x9')]=function(_0x1fd645){this[_0x9fef('0x5')][_0x1fd645['id']]=_0x1fd645;this[_0x9fef('0x6')][_0x1fd645['id']]=[];};Graph[_0x9fef('0x8')][_0x9fef('0xa')]=function(_0x2290b0,_0x271bcb,_0x2282f9){this[_0x9fef('0x6')][_0x2290b0]['push']({'target':_0x271bcb,'condition':_0x2282f9});this[_0x9fef('0x7')]+=0x1;};Graph[_0x9fef('0x8')][_0x9fef('0xb')]=function(){return _[_0x9fef('0xb')](this['vertices']);};Graph[_0x9fef('0x8')]['relations']=function(){return this[_0x9fef('0x7')];};Graph['prototype'][_0x9fef('0xc')]=function(_0x4379ff){return this[_0x9fef('0x5')][_0x4379ff];};Graph[_0x9fef('0x8')][_0x9fef('0xd')]=function(_0x99265c,_0x3b734d){if(!this[_0x9fef('0x5')][_0x99265c]){return logger['info'](_0x9fef('0xe'));}var _0xb8560b=_0x3b734d(this[_0x9fef('0x5')][_0x99265c]);if(!_0xb8560b){return logger['info']('stop\x20traverse');}if(this['edges'][_0x99265c][_0x9fef('0xf')]===0x0){return logger[_0x9fef('0x10')](_0x9fef('0x11'));}for(var _0x43851c=0x0,_0x54e754=[],_0x2c8b67=![];_0x43851c<this[_0x9fef('0x6')][_0x99265c][_0x9fef('0xf')];_0x43851c+=0x1){if(this[_0x9fef('0x6')][_0x99265c][_0x43851c][_0x9fef('0x12')]){_0x54e754=this[_0x9fef('0x6')][_0x99265c][_0x43851c][_0x9fef('0x12')]['split'](',');for(var _0x1cff14=0x0;_0x1cff14<_0x54e754[_0x9fef('0xf')];_0x1cff14+=0x1){if(this[_0x9fef('0x5')][_0x99265c][_0x9fef('0x13')]===_0x9fef('0x14')&&_0x54e754[_0x1cff14]==='-'){_0x2c8b67=this[_0x9fef('0x6')][_0x99265c][_0x43851c]['target'];logger[_0x9fef('0x10')](_0x9fef('0x15'),_0x54e754[_0x1cff14],this[_0x9fef('0x6')][_0x99265c][_0x43851c][_0x9fef('0x16')]);}else if(this['vertices'][_0x99265c][_0x9fef('0x13')]===_0x9fef('0x3')&&_0x54e754[_0x1cff14]==='i'){_0x2c8b67=this[_0x9fef('0x6')][_0x99265c][_0x43851c][_0x9fef('0x16')];logger[_0x9fef('0x10')](_0x9fef('0x17'),_0x54e754[_0x1cff14],this[_0x9fef('0x6')][_0x99265c][_0x43851c][_0x9fef('0x16')]);}if(_0x54e754[_0x1cff14]===_0xb8560b){return this['traverseBFS'](this[_0x9fef('0x6')][_0x99265c][_0x43851c][_0x9fef('0x16')],_0x3b734d);}}}else{return this['traverseBFS'](this[_0x9fef('0x6')][_0x99265c][_0x43851c][_0x9fef('0x16')],_0x3b734d);}}if(_0x54e754[_0x9fef('0xf')]){if(this['vertices'][_0x99265c]['agicommand']===_0x9fef('0x14')){if(_0x2c8b67){return this[_0x9fef('0xd')](_0x2c8b67,_0x3b734d);}return logger[_0x9fef('0x10')](_0x9fef('0x18'));}else if(_['includes'](verticesWithRetry,this[_0x9fef('0x5')][_0x99265c]['agicommand'])){if(_0xb8560b==='-'){return logger[_0x9fef('0x10')]('max\x20retry\x20reach');}if(_0x2c8b67&&_0xb8560b!=='t'){return this['traverseBFS'](_0x2c8b67,_0x3b734d);}return this[_0x9fef('0xd')](_0x99265c,_0x3b734d);}return logger[_0x9fef('0x10')]('condition\x20not\x20found');}};module['exports']=Graph;
\ No newline at end of file
+var _0x7944=['includes','max\x20retry\x20reach','exports','lodash','../../../config/logger','agi','menu','getsecretdigits','edges','numberOfEdges','prototype','addVertex','vertices','addEdge','push','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','vswitch','default','target','invalid','agicommand','default\x20on\x20switch\x20not\x20found'];(function(_0xc94d2,_0xaa25ab){var _0x177666=function(_0x3bfa5c){while(--_0x3bfa5c){_0xc94d2['push'](_0xc94d2['shift']());}};_0x177666(++_0xaa25ab);}(_0x7944,0x11a));var _0x4794=function(_0x16390c,_0x462ee9){_0x16390c=_0x16390c-0x0;var _0x1f01d7=_0x7944[_0x16390c];return _0x1f01d7;};'use strict';var _=require(_0x4794('0x0'));var logger=require(_0x4794('0x1'))(_0x4794('0x2'));var verticesWithRetry=[_0x4794('0x3'),'getdigits',_0x4794('0x4')];var Graph=function(){this['vertices']={};this[_0x4794('0x5')]={};this[_0x4794('0x6')]=0x0;};Graph[_0x4794('0x7')][_0x4794('0x8')]=function(_0x163b2e){this[_0x4794('0x9')][_0x163b2e['id']]=_0x163b2e;this[_0x4794('0x5')][_0x163b2e['id']]=[];};Graph[_0x4794('0x7')][_0x4794('0xa')]=function(_0x1af46f,_0x51d2d3,_0x401178){this['edges'][_0x1af46f][_0x4794('0xb')]({'target':_0x51d2d3,'condition':_0x401178});this[_0x4794('0x6')]+=0x1;};Graph[_0x4794('0x7')][_0x4794('0xc')]=function(){return _[_0x4794('0xc')](this['vertices']);};Graph[_0x4794('0x7')][_0x4794('0xd')]=function(){return this['numberOfEdges'];};Graph[_0x4794('0x7')][_0x4794('0xe')]=function(_0x54f459){return this[_0x4794('0x9')][_0x54f459];};Graph[_0x4794('0x7')][_0x4794('0xf')]=function(_0xfba500,_0x339375){if(!this['vertices'][_0xfba500]){return logger['info'](_0x4794('0x10'));}var _0x3b1a93=_0x339375(this[_0x4794('0x9')][_0xfba500]);if(!_0x3b1a93){return logger[_0x4794('0x11')](_0x4794('0x12'));}if(this[_0x4794('0x5')][_0xfba500][_0x4794('0x13')]===0x0){return logger[_0x4794('0x11')](_0x4794('0x14'));}for(var _0x49463e=0x0,_0x1e15f0=[],_0x457fc5=![];_0x49463e<this[_0x4794('0x5')][_0xfba500][_0x4794('0x13')];_0x49463e+=0x1){if(this[_0x4794('0x5')][_0xfba500][_0x49463e][_0x4794('0x15')]){_0x1e15f0=this['edges'][_0xfba500][_0x49463e][_0x4794('0x15')]['split'](',');for(var _0x71d3cc=0x0;_0x71d3cc<_0x1e15f0[_0x4794('0x13')];_0x71d3cc+=0x1){if(this[_0x4794('0x9')][_0xfba500]['agicommand']===_0x4794('0x16')&&_0x1e15f0[_0x71d3cc]==='-'){_0x457fc5=this['edges'][_0xfba500][_0x49463e]['target'];logger[_0x4794('0x11')](_0x4794('0x17'),_0x1e15f0[_0x71d3cc],this[_0x4794('0x5')][_0xfba500][_0x49463e]['target']);}else if(this[_0x4794('0x9')][_0xfba500]['agicommand']===_0x4794('0x3')&&_0x1e15f0[_0x71d3cc]==='i'){_0x457fc5=this[_0x4794('0x5')][_0xfba500][_0x49463e][_0x4794('0x18')];logger[_0x4794('0x11')](_0x4794('0x19'),_0x1e15f0[_0x71d3cc],this[_0x4794('0x5')][_0xfba500][_0x49463e]['target']);}if(_0x1e15f0[_0x71d3cc]===_0x3b1a93){return this[_0x4794('0xf')](this['edges'][_0xfba500][_0x49463e][_0x4794('0x18')],_0x339375);}}}else{return this[_0x4794('0xf')](this['edges'][_0xfba500][_0x49463e][_0x4794('0x18')],_0x339375);}}if(_0x1e15f0[_0x4794('0x13')]){if(this[_0x4794('0x9')][_0xfba500][_0x4794('0x1a')]==='vswitch'){if(_0x457fc5){return this['traverseBFS'](_0x457fc5,_0x339375);}return logger[_0x4794('0x11')](_0x4794('0x1b'));}else if(_[_0x4794('0x1c')](verticesWithRetry,this['vertices'][_0xfba500][_0x4794('0x1a')])){if(_0x3b1a93==='-'){return logger['info'](_0x4794('0x1d'));}if(_0x457fc5&&_0x3b1a93!=='t'){return this[_0x4794('0xf')](_0x457fc5,_0x339375);}return this[_0x4794('0xf')](_0xfba500,_0x339375);}return logger[_0x4794('0x11')]('condition\x20not\x20found');}};module[_0x4794('0x1e')]=Graph;
\ No newline at end of file
index e5977e4..5558ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9710=['format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','source','target','addEdge','value','catch','createSquareReport','then','indexOf','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','priority','code','result','response','isUndefined','agicommand\x20not\x20found','finally','toString','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','extension','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','port','listening','connection','xml2json','lodash','syncho','util','moment','../../config/logger','agi','./mailRpc','./graph','./vertices','defaults','127.0.0.1','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info'];(function(_0x213b27,_0x3a531a){var _0x2c04ee=function(_0x538d00){while(--_0x538d00){_0x213b27['push'](_0x213b27['shift']());}};_0x2c04ee(++_0x3a531a);}(_0x9710,0x15f));var _0x0971=function(_0xa378fa,_0x25f844){_0xa378fa=_0xa378fa-0x0;var _0x5c8183=_0x9710[_0xa378fa];return _0x5c8183;};'use strict';var parser=require(_0x0971('0x0'));var _=require(_0x0971('0x1'));var syncho=require(_0x0971('0x2'));var util=require(_0x0971('0x3'));var moment=require(_0x0971('0x4'));var config=require('../../config/environment');var logger=require(_0x0971('0x5'))(_0x0971('0x6'));var utilLicense=require('../../config/license/util');var rpc=require('./rpc');var mailRpc=require(_0x0971('0x7'));var Graph=require(_0x0971('0x8'));var Vertices=require(_0x0971('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x0971('0x6')]=_[_0x0971('0xa')](config[_0x0971('0x6')],{'ip':_0x0971('0xb'),'port':0x11dd});function connectionHandler(_0x1b02a3){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x1b02a3);agiHandler(_0x1b02a3);}catch(_0xfa5ee6){logger[_0x0971('0xc')](_0xfa5ee6[_0x0971('0xd')]);}});});}function listeningHandler(){console[_0x0971('0xe')](_0x0971('0xf'),config['agi']['port']);logger[_0x0971('0x10')](util[_0x0971('0x11')](_0x0971('0x12'),config[_0x0971('0x6')]['ip'],config[_0x0971('0x6')]['port']));}function errorHandler(_0x1a06f9){if(_0x1a06f9&&_0x1a06f9[_0x0971('0x13')]&&_0x1a06f9[_0x0971('0x14')]){logger['error'](util['format'](_0x0971('0x15'),_0x1a06f9[_0x0971('0x13')],_0x1a06f9[_0x0971('0x14')]));}else{logger[_0x0971('0xc')](util[_0x0971('0x11')]('[ERROR]\x20%s',_0x1a06f9[_0x0971('0xd')]));}}function closeHandler(){logger[_0x0971('0x10')](util[_0x0971('0x11')](_0x0971('0x16'),this[_0x0971('0x17')],this[_0x0971('0x18')],this[_0x0971('0x19')],this[_0x0971('0x1a')],this['uniqueid']));try{createSquareReport(this);}catch(_0x4e2d98){logger['error'](_0x4e2d98[_0x0971('0xd')]);}}function timeoutHandler(){logger[_0x0971('0x10')](util[_0x0971('0x11')](_0x0971('0x1b'),this['arg_1'],this[_0x0971('0x18')],this['callerid'],this['dnid'],this[_0x0971('0x1c')]));}function hangupHandler(){logger['info'](util[_0x0971('0x11')](_0x0971('0x1d'),this[_0x0971('0x17')],this[_0x0971('0x18')],this['callerid'],this[_0x0971('0x1a')],this[_0x0971('0x1c')]));this[_0x0971('0x1e')]=!![];}function getRoot(_0x128912){return parser[_0x0971('0x1f')](_0x128912,{'object':!![]})[_0x0971('0x20')][_0x0971('0x21')];}function addVertex(_0x3bca08,_0x52fd55,_0x578e17){_0x52fd55[_0x0971('0x22')]=_0x578e17;if(_0x52fd55[_0x0971('0x23')](_0x0971('0x24'))){_0x52fd55[_0x0971('0x25')]=parseInt(_0x52fd55[_0x0971('0x24')],0xa);}_0x3bca08[_0x0971('0x26')](_[_0x0971('0x27')](_0x52fd55,_0x0971('0x28')));}function initGraph(_0x991acc,_0x10a6df){var _0x3a5aa0=new Graph();for(var _0x13968d in _0x991acc){if(_0x991acc[_0x0971('0x23')](_0x13968d)){if(_[_0x0971('0x29')](_0x991acc[_0x13968d])){for(var _0x3771b7=0x0;_0x3771b7<_0x991acc[_0x13968d][_0x0971('0x2a')];_0x3771b7+=0x1){addVertex(_0x3a5aa0,_0x991acc[_0x13968d][_0x3771b7],_0x13968d);}}else{addVertex(_0x3a5aa0,_0x991acc[_0x13968d],_0x13968d);}}}for(var _0x4d9e4b=0x0;_0x4d9e4b<_0x10a6df[_0x0971('0x2a')];_0x4d9e4b+=0x1){if(_0x10a6df[_0x4d9e4b][_0x0971('0x2b')]&&_0x10a6df[_0x4d9e4b][_0x0971('0x2c')]){_0x3a5aa0[_0x0971('0x2d')](_0x10a6df[_0x4d9e4b][_0x0971('0x2b')],_0x10a6df[_0x4d9e4b][_0x0971('0x2c')],_0x10a6df[_0x4d9e4b][_0x0971('0x2e')]);}}return _0x3a5aa0;}function getSquareProject(_0x35bcc9,_0x2024c9){rpc['getSquareProject'](_0x35bcc9)['then'](function(_0x390ffe){_0x2024c9(null,_0x390ffe);})[_0x0971('0x2f')](function(_0x67201d){_0x2024c9(null,_0x67201d);});}function createSquareReport(_0x1132ac,_0x2a8f69){rpc[_0x0971('0x30')](_0x1132ac)[_0x0971('0x31')](function(_0x3e7860){if(_0x2a8f69){_0x2a8f69(null,_0x3e7860);}})[_0x0971('0x2f')](function(_0x1d12ef){if(_0x2a8f69){_0x2a8f69(null,_0x1d12ef);}});}function setChannelVariables(_0x133b23){for(var _0xf0272b in _0x133b23){if(_0x133b23['hasOwnProperty'](_0xf0272b)){if(_0xf0272b[_0x0971('0x32')]('agi_')===0x0){_0x133b23[_0xf0272b['substring'](0x4)]=_0x133b23[_0xf0272b];delete _0x133b23[_0xf0272b];}}}}function getLogFromObject(_0xcedcda){return util[_0x0971('0x33')](_0xcedcda,{'showHidden':![],'depth':null});}function agiHandler(_0x27a13b){var _0x3163a5,_0x59790f,_0x8cf133,_0x3cb72e,_0x377af2;logger[_0x0971('0x34')](_0x0971('0x35'),JSON[_0x0971('0x36')](_0x27a13b,null,0x2));logger['info'](util[_0x0971('0x11')](_0x0971('0x37'),_0x27a13b[_0x0971('0x17')],_0x27a13b[_0x0971('0x18')],_0x27a13b[_0x0971('0x19')],_0x27a13b[_0x0971('0x1a')],_0x27a13b[_0x0971('0x1c')]));_0x27a13b['on'](_0x0971('0xc'),errorHandler);_0x27a13b['on'](_0x0971('0x38'),closeHandler);_0x27a13b['on'](_0x0971('0x39'),timeoutHandler);_0x27a13b[_0x0971('0x1e')]=![];_0x27a13b['on']('hangup',hangupHandler);var _0x14a2aa=getSquareProject[_0x0971('0x3a')](null,_0x27a13b[_0x0971('0x17')]);if(_0x14a2aa){if(_0x14a2aa[_0x0971('0x3b')]){_0x3163a5=getRoot(_0x14a2aa[_0x0971('0x3b')]);if(_0x3163a5&&_0x3163a5[_0x0971('0x3c')]){logger[_0x0971('0x34')](_0x0971('0x21'),JSON[_0x0971('0x36')](_0x3163a5,null,0x2));_0x27a13b[_0x0971('0x3d')]=moment()[_0x0971('0x11')](_0x0971('0x3e'));_0x59790f=initGraph(_[_0x0971('0x27')](_0x3163a5,'mxCell'),_0x3163a5['mxCell']);_0x8cf133=new Vertices(_0x27a13b,rpc,mailRpc);logger['info'](util['format'](_0x0971('0x3f'),_0x27a13b[_0x0971('0x17')],_0x27a13b[_0x0971('0x18')],_0x27a13b['callerid'],_0x27a13b['dnid'],_0x27a13b[_0x0971('0x1c')]));_0x59790f[_0x0971('0x40')](_0x3163a5[_0x0971('0x3c')]['id'],function(_0x1228c7){try{_0x1228c7=_0x8cf133[_0x0971('0x41')](_0x1228c7);logger['debug'](_0x0971('0x42'),JSON['stringify'](_0x1228c7,null,0x2));if(_0x1228c7['agicommand']===_0x0971('0x43')){logger[_0x0971('0x10')](_0x0971('0x44'));_0x27a13b[_0x0971('0x45')]=_0x1228c7['context']||_0x27a13b[_0x0971('0x45')];_0x27a13b['extension']=_0x1228c7['extension'];_0x27a13b[_0x0971('0x46')]=_0x1228c7[_0x0971('0x46')]?_0x1228c7['priority']-0x1:0x1;return null;}else if(_0x1228c7&&_0x8cf133[_0x1228c7[_0x0971('0x22')]]){_0x377af2=_0x8cf133[_0x1228c7[_0x0971('0x22')]](_0x1228c7);logger[_0x0971('0x10')]('response',JSON[_0x0971('0x36')](_0x377af2,null,0x2));if(_0x377af2&&_0x377af2[_0x0971('0x47')]===AGI_CODE_SUCCESS&&_0x377af2[_0x0971('0x48')]!==AGI_RESULT_ERROR&&!_0x27a13b[_0x0971('0x1e')]){logger[_0x0971('0x34')](_0x0971('0x49'),getLogFromObject(_0x377af2));return _[_0x0971('0x4a')](_0x377af2[_0x0971('0x48')])?null:_0x377af2[_0x0971('0x48')]['toString']();}else{logger[_0x0971('0xc')](_0x0971('0x49'),getLogFromObject(_0x377af2));return null;}}else{logger['error'](_0x0971('0x4b'));return null;}}catch(_0xe532d3){logger[_0x0971('0xc')](_0xe532d3[_0x0971('0xd')]);return null;}});if(_0x3163a5[_0x0971('0x4c')]){logger[_0x0971('0x10')](util[_0x0971('0x11')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x27a13b[_0x0971('0x17')],_0x27a13b[_0x0971('0x18')],_0x27a13b[_0x0971('0x19')],_0x27a13b[_0x0971('0x1a')],_0x27a13b['uniqueid']));_0x59790f[_0x0971('0x40')](_0x3163a5[_0x0971('0x4c')]['id'],function(_0x2fe2b1){try{_0x2fe2b1=_0x8cf133[_0x0971('0x41')](_0x2fe2b1);logger['debug'](_0x0971('0x42'),JSON[_0x0971('0x36')](_0x2fe2b1,null,0x2));if(_0x2fe2b1&&_0x8cf133[_0x2fe2b1[_0x0971('0x22')]]){_0x377af2=_0x8cf133[_0x2fe2b1['agicommand']](_0x2fe2b1);if(_0x377af2){logger[_0x0971('0x34')](_0x0971('0x49'),getLogFromObject(_0x377af2));return _['isUndefined'](_0x377af2[_0x0971('0x48')])?null:_0x377af2[_0x0971('0x48')][_0x0971('0x4d')]();}else{logger[_0x0971('0xc')](_0x0971('0x49'),getLogFromObject(_0x377af2));return null;}}else{logger[_0x0971('0xc')](_0x0971('0x4b'));return null;}}catch(_0x44b450){logger[_0x0971('0xc')](_0x44b450[_0x0971('0xd')]);return null;}});}logger['info'](util[_0x0971('0x11')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x27a13b[_0x0971('0x17')],_0x27a13b['calleridname'],_0x27a13b[_0x0971('0x19')],_0x27a13b['dnid'],_0x27a13b[_0x0971('0x1c')]));logger[_0x0971('0x10')](util[_0x0971('0x11')](_0x0971('0x4e'),_0x27a13b['context'],_0x27a13b[_0x0971('0x4f')],parseInt(_0x27a13b[_0x0971('0x46')],0xa)+0x1));_0x27a13b[_0x0971('0x50')](_0x27a13b['context'],_0x27a13b[_0x0971('0x4f')],parseInt(_0x27a13b[_0x0971('0x46')],0xa)+0x1);_0x27a13b[_0x0971('0x38')]();}}else{logger[_0x0971('0xc')](util[_0x0971('0x11')](_0x0971('0x51'),_0x27a13b['arg_1']));_0x27a13b[_0x0971('0x50')](_0x27a13b[_0x0971('0x45')],_0x27a13b[_0x0971('0x4f')],parseInt(_0x27a13b[_0x0971('0x46')],0xa)+0x1);_0x27a13b[_0x0971('0x38')]();}}else{logger[_0x0971('0xc')](util[_0x0971('0x11')](_0x0971('0x52'),_0x27a13b['arg_1']));_0x27a13b[_0x0971('0x50')](_0x27a13b['context'],_0x27a13b[_0x0971('0x4f')],parseInt(_0x27a13b[_0x0971('0x46')],0xa)+0x1);_0x27a13b[_0x0971('0x38')]();}}function main(){var _0x744947;return utilLicense[_0x0971('0x53')]()[_0x0971('0x31')](function(_0x507187){if(_0x507187){if(_0x507187['voice']){if(_0x507187[_0x0971('0x54')]&&_0x507187[_0x0971('0x54')]>0x0){logger[_0x0971('0x10')](util[_0x0971('0x11')](_0x0971('0x55'),_0x507187[_0x0971('0x54')]));_0x744947=_0x507187[_0x0971('0x54')];}else{logger['info'](_0x0971('0x56'));}}else{logger[_0x0971('0x10')](_0x0971('0x57'));_0x744947=-0x1;}}})[_0x0971('0x2f')](function(_0x1ee2c2){logger[_0x0971('0xc')](_0x0971('0x58'),_0x1ee2c2['stack']);})[_0x0971('0x4c')](function(){var _0x44d991=require('./server')(config[_0x0971('0x6')][_0x0971('0x59')],config[_0x0971('0x6')]['ip'],_0x744947);_0x44d991['on'](_0x0971('0xc'),errorHandler);_0x44d991['on'](_0x0971('0x5a'),listeningHandler);_0x44d991['on'](_0x0971('0x5b'),connectionHandler);_0x44d991['on'](_0x0971('0x38'),closeHandler);});}main();
\ No newline at end of file
+var _0x691a=['./graph','./vertices','defaults','nextTick','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','[ERROR]\x20%s','stack','arg_1','calleridname','callerid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','length','target','addEdge','source','value','getSquareProject','then','catch','createSquareReport','indexOf','agi_','inspect','debug','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','sync','production','start','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','traverseBFS','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','agicommand\x20not\x20found','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','syncho','util','moment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc'];(function(_0x2976de,_0x4c546d){var _0xecbf51=function(_0x234025){while(--_0x234025){_0x2976de['push'](_0x2976de['shift']());}};_0xecbf51(++_0x4c546d);}(_0x691a,0x167));var _0xa691=function(_0x48dbe8,_0x36a866){_0x48dbe8=_0x48dbe8-0x0;var _0x4b5006=_0x691a[_0x48dbe8];return _0x4b5006;};'use strict';var parser=require(_0xa691('0x0'));var _=require('lodash');var syncho=require(_0xa691('0x1'));var util=require(_0xa691('0x2'));var moment=require(_0xa691('0x3'));var config=require('../../config/environment');var logger=require(_0xa691('0x4'))(_0xa691('0x5'));var utilLicense=require(_0xa691('0x6'));var rpc=require(_0xa691('0x7'));var mailRpc=require(_0xa691('0x8'));var Graph=require(_0xa691('0x9'));var Vertices=require(_0xa691('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xa691('0xb')](config[_0xa691('0x5')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x3ff9a6){process[_0xa691('0xc')](function(){syncho(function(){try{setChannelVariables(_0x3ff9a6);agiHandler(_0x3ff9a6);}catch(_0x16447a){logger['error'](_0x16447a['stack']);}});});}function listeningHandler(){console[_0xa691('0xd')](_0xa691('0xe'),config[_0xa691('0x5')][_0xa691('0xf')]);logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x12'),config['agi']['ip'],config[_0xa691('0x5')][_0xa691('0xf')]));}function errorHandler(_0x8b888f){if(_0x8b888f&&_0x8b888f[_0xa691('0x13')]&&_0x8b888f[_0xa691('0x14')]){logger[_0xa691('0x15')](util[_0xa691('0x11')](_0xa691('0x16'),_0x8b888f[_0xa691('0x13')],_0x8b888f[_0xa691('0x14')]));}else{logger[_0xa691('0x15')](util[_0xa691('0x11')](_0xa691('0x17'),_0x8b888f[_0xa691('0x18')]));}}function closeHandler(){logger[_0xa691('0x10')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xa691('0x19')],this[_0xa691('0x1a')],this[_0xa691('0x1b')],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x508a28){logger[_0xa691('0x15')](_0x508a28[_0xa691('0x18')]);}}function timeoutHandler(){logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x1c'),this[_0xa691('0x19')],this[_0xa691('0x1a')],this['callerid'],this[_0xa691('0x1d')],this['uniqueid']));}function hangupHandler(){logger[_0xa691('0x10')](util['format'](_0xa691('0x1e'),this['arg_1'],this[_0xa691('0x1a')],this[_0xa691('0x1b')],this['dnid'],this['uniqueid']));this[_0xa691('0x1f')]=!![];}function getRoot(_0x21add0){return parser[_0xa691('0x20')](_0x21add0,{'object':!![]})['mxGraphModel'][_0xa691('0x21')];}function addVertex(_0x52d04c,_0x49b941,_0x115b47){_0x49b941[_0xa691('0x22')]=_0x115b47;if(_0x49b941[_0xa691('0x23')](_0xa691('0x24'))){_0x49b941[_0xa691('0x25')]=parseInt(_0x49b941[_0xa691('0x24')],0xa);}_0x52d04c[_0xa691('0x26')](_['omit'](_0x49b941,'mxCell'));}function initGraph(_0x289a7d,_0x2d8090){var _0x19e4be=new Graph();for(var _0x45b1ae in _0x289a7d){if(_0x289a7d[_0xa691('0x23')](_0x45b1ae)){if(_['isArray'](_0x289a7d[_0x45b1ae])){for(var _0x5895ed=0x0;_0x5895ed<_0x289a7d[_0x45b1ae][_0xa691('0x27')];_0x5895ed+=0x1){addVertex(_0x19e4be,_0x289a7d[_0x45b1ae][_0x5895ed],_0x45b1ae);}}else{addVertex(_0x19e4be,_0x289a7d[_0x45b1ae],_0x45b1ae);}}}for(var _0x55e61a=0x0;_0x55e61a<_0x2d8090[_0xa691('0x27')];_0x55e61a+=0x1){if(_0x2d8090[_0x55e61a]['source']&&_0x2d8090[_0x55e61a][_0xa691('0x28')]){_0x19e4be[_0xa691('0x29')](_0x2d8090[_0x55e61a][_0xa691('0x2a')],_0x2d8090[_0x55e61a]['target'],_0x2d8090[_0x55e61a][_0xa691('0x2b')]);}}return _0x19e4be;}function getSquareProject(_0x316ac9,_0x41bc17){rpc[_0xa691('0x2c')](_0x316ac9)[_0xa691('0x2d')](function(_0x18df24){_0x41bc17(null,_0x18df24);})[_0xa691('0x2e')](function(_0x1ef485){_0x41bc17(null,_0x1ef485);});}function createSquareReport(_0x154152,_0xcebb90){rpc[_0xa691('0x2f')](_0x154152)[_0xa691('0x2d')](function(_0x1e64ea){if(_0xcebb90){_0xcebb90(null,_0x1e64ea);}})[_0xa691('0x2e')](function(_0x71429a){if(_0xcebb90){_0xcebb90(null,_0x71429a);}});}function setChannelVariables(_0x3eed0f){for(var _0x5eb898 in _0x3eed0f){if(_0x3eed0f[_0xa691('0x23')](_0x5eb898)){if(_0x5eb898[_0xa691('0x30')](_0xa691('0x31'))===0x0){_0x3eed0f[_0x5eb898['substring'](0x4)]=_0x3eed0f[_0x5eb898];delete _0x3eed0f[_0x5eb898];}}}}function getLogFromObject(_0x40ce32){return util[_0xa691('0x32')](_0x40ce32,{'showHidden':![],'depth':null});}function agiHandler(_0x55175b){var _0x382c3d,_0x12c43b,_0x2c47fa,_0x5bd578,_0x1771a9;logger[_0xa691('0x33')]('variables',JSON['stringify'](_0x55175b,null,0x2));logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x34'),_0x55175b[_0xa691('0x19')],_0x55175b[_0xa691('0x1a')],_0x55175b[_0xa691('0x1b')],_0x55175b[_0xa691('0x1d')],_0x55175b['uniqueid']));_0x55175b['on'](_0xa691('0x15'),errorHandler);_0x55175b['on'](_0xa691('0x35'),closeHandler);_0x55175b['on'](_0xa691('0x36'),timeoutHandler);_0x55175b[_0xa691('0x1f')]=![];_0x55175b['on'](_0xa691('0x37'),hangupHandler);var _0x10a262=getSquareProject[_0xa691('0x38')](null,_0x55175b[_0xa691('0x19')]);if(_0x10a262){if(_0x10a262[_0xa691('0x39')]){_0x382c3d=getRoot(_0x10a262[_0xa691('0x39')]);if(_0x382c3d&&_0x382c3d[_0xa691('0x3a')]){logger[_0xa691('0x33')](_0xa691('0x21'),JSON[_0xa691('0x3b')](_0x382c3d,null,0x2));_0x55175b[_0xa691('0x3c')]=moment()[_0xa691('0x11')](_0xa691('0x3d'));_0x12c43b=initGraph(_['omit'](_0x382c3d,_0xa691('0x3e')),_0x382c3d[_0xa691('0x3e')]);_0x2c47fa=new Vertices(_0x55175b,rpc,mailRpc);logger[_0xa691('0x10')](util['format'](_0xa691('0x3f'),_0x55175b['arg_1'],_0x55175b['calleridname'],_0x55175b['callerid'],_0x55175b[_0xa691('0x1d')],_0x55175b[_0xa691('0x40')]));_0x12c43b[_0xa691('0x41')](_0x382c3d['start']['id'],function(_0x20742a){try{_0x20742a=_0x2c47fa['clear'](_0x20742a);logger[_0xa691('0x33')](_0xa691('0x42'),JSON['stringify'](_0x20742a,null,0x2));if(_0x20742a['agicommand']===_0xa691('0x43')){logger[_0xa691('0x10')](_0xa691('0x44'));_0x55175b[_0xa691('0x45')]=_0x20742a['context']||_0x55175b[_0xa691('0x45')];_0x55175b['extension']=_0x20742a[_0xa691('0x46')];_0x55175b[_0xa691('0x47')]=_0x20742a['priority']?_0x20742a['priority']-0x1:0x1;return null;}else if(_0x20742a&&_0x2c47fa[_0x20742a['agicommand']]){_0x1771a9=_0x2c47fa[_0x20742a[_0xa691('0x22')]](_0x20742a);logger[_0xa691('0x10')](_0xa691('0x48'),JSON['stringify'](_0x1771a9,null,0x2));if(_0x1771a9&&_0x1771a9[_0xa691('0x49')]===AGI_CODE_SUCCESS&&_0x1771a9['result']!==AGI_RESULT_ERROR&&!_0x55175b[_0xa691('0x1f')]){logger[_0xa691('0x33')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return _[_0xa691('0x4a')](_0x1771a9[_0xa691('0x4b')])?null:_0x1771a9[_0xa691('0x4b')][_0xa691('0x4c')]();}else{logger[_0xa691('0x15')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x54ea44){logger[_0xa691('0x15')](_0x54ea44[_0xa691('0x18')]);return null;}});if(_0x382c3d[_0xa691('0x4d')]){logger[_0xa691('0x10')](util['format'](_0xa691('0x4e'),_0x55175b['arg_1'],_0x55175b[_0xa691('0x1a')],_0x55175b[_0xa691('0x1b')],_0x55175b[_0xa691('0x1d')],_0x55175b[_0xa691('0x40')]));_0x12c43b[_0xa691('0x41')](_0x382c3d['finally']['id'],function(_0x3938f9){try{_0x3938f9=_0x2c47fa['clear'](_0x3938f9);logger[_0xa691('0x33')](_0xa691('0x42'),JSON[_0xa691('0x3b')](_0x3938f9,null,0x2));if(_0x3938f9&&_0x2c47fa[_0x3938f9[_0xa691('0x22')]]){_0x1771a9=_0x2c47fa[_0x3938f9[_0xa691('0x22')]](_0x3938f9);if(_0x1771a9){logger[_0xa691('0x33')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return _[_0xa691('0x4a')](_0x1771a9[_0xa691('0x4b')])?null:_0x1771a9[_0xa691('0x4b')][_0xa691('0x4c')]();}else{logger[_0xa691('0x15')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return null;}}else{logger[_0xa691('0x15')](_0xa691('0x4f'));return null;}}catch(_0x381ef2){logger[_0xa691('0x15')](_0x381ef2[_0xa691('0x18')]);return null;}});}logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x50'),_0x55175b[_0xa691('0x19')],_0x55175b['calleridname'],_0x55175b[_0xa691('0x1b')],_0x55175b[_0xa691('0x1d')],_0x55175b[_0xa691('0x40')]));logger['info'](util['format'](_0xa691('0x51'),_0x55175b[_0xa691('0x45')],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b[_0xa691('0x47')],0xa)+0x1));_0x55175b['continueAt'](_0x55175b[_0xa691('0x45')],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b[_0xa691('0x47')],0xa)+0x1);_0x55175b['close']();}}else{logger[_0xa691('0x15')](util[_0xa691('0x11')]('Project\x20%s\x20not\x20published',_0x55175b[_0xa691('0x19')]));_0x55175b[_0xa691('0x52')](_0x55175b[_0xa691('0x45')],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b['priority'],0xa)+0x1);_0x55175b[_0xa691('0x35')]();}}else{logger[_0xa691('0x15')](util['format']('Project\x20%s\x20not\x20found',_0x55175b[_0xa691('0x19')]));_0x55175b[_0xa691('0x52')](_0x55175b['context'],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b[_0xa691('0x47')],0xa)+0x1);_0x55175b[_0xa691('0x35')]();}}function main(){var _0x5ad50c;return utilLicense[_0xa691('0x53')]()['then'](function(_0x5d0d78){if(_0x5d0d78){if(_0x5d0d78[_0xa691('0x54')]){if(_0x5d0d78[_0xa691('0x55')]&&_0x5d0d78[_0xa691('0x55')]>0x0){logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x56'),_0x5d0d78['callysquare']));_0x5ad50c=_0x5d0d78[_0xa691('0x55')];}else{logger[_0xa691('0x10')](_0xa691('0x57'));}}else{logger['info'](_0xa691('0x58'));_0x5ad50c=-0x1;}}})[_0xa691('0x2e')](function(_0x430bcd){logger['error']('[LICENSE]',_0x430bcd[_0xa691('0x18')]);})['finally'](function(){var _0xac8c6b=require(_0xa691('0x59'))(config[_0xa691('0x5')][_0xa691('0xf')],config[_0xa691('0x5')]['ip'],_0x5ad50c);_0xac8c6b['on'](_0xa691('0x15'),errorHandler);_0xac8c6b['on'](_0xa691('0x5a'),listeningHandler);_0xac8c6b['on'](_0xa691('0x5b'),connectionHandler);_0xac8c6b['on']('close',closeHandler);});}main();
\ No newline at end of file
index 308f0e0..90e795d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58c6=['message','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','error'];(function(_0x5c7198,_0x198b54){var _0x530b11=function(_0x5f5f1a){while(--_0x5f5f1a){_0x5c7198['push'](_0x5c7198['shift']());}};_0x530b11(++_0x198b54);}(_0x58c6,0x16c));var _0x658c=function(_0x4695ba,_0x5a7f2a){_0x4695ba=_0x4695ba-0x0;var _0x524b7d=_0x58c6[_0x4695ba];return _0x524b7d;};'use strict';var BPromise=require(_0x658c('0x0'));var jayson=require(_0x658c('0x1'));var client=jayson[_0x658c('0x2')]['http']({'port':0x232b});function request(_0x294d47,_0x377ef8){return new BPromise(function(_0x9d7b32,_0x3e2944){return client['request'](_0x294d47,_0x377ef8)['then'](function(_0x60e11){if(_0x60e11[_0x658c('0x3')]){return _0x3e2944(_0x60e11[_0x658c('0x3')][_0x658c('0x4')]);}else{return _0x9d7b32(_0x60e11['result']);}})[_0x658c('0x5')](function(_0x18a890){return _0x3e2944(_0x18a890);});});}exports[_0x658c('0x6')]=function(_0x1ece2b,_0x3f0937){return request(_0x658c('0x7'),{'account':_0x1ece2b,'message':_0x3f0937});};
\ No newline at end of file
+var _0xbb94=['error','result','SendMail','jayson/promise','http','request','then'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbb94,0x1df));var _0x4bb9=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xbb94[_0x397e5f];return _0x5302b8;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x4bb9('0x0'));var client=jayson['client'][_0x4bb9('0x1')]({'port':0x232b});function request(_0x47b90f,_0x326c07){return new BPromise(function(_0x2cfca8,_0xdb73dd){return client[_0x4bb9('0x2')](_0x47b90f,_0x326c07)[_0x4bb9('0x3')](function(_0x46768a){if(_0x46768a[_0x4bb9('0x4')]){return _0xdb73dd(_0x46768a[_0x4bb9('0x4')]['message']);}else{return _0x2cfca8(_0x46768a[_0x4bb9('0x5')]);}})['catch'](function(_0x2c84ec){return _0xdb73dd(_0x2c84ec);});});}exports['sendMailMessage']=function(_0xd42ab9,_0x51ad48){return request(_0x4bb9('0x6'),{'account':_0xd42ab9,'message':_0x51ad48});};
\ No newline at end of file
index 618295c..6023828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa9d=['toString','_localBuffer','indexOf','substring','trim','length','emit','headers','exports','Transform','call','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a'];(function(_0x140b0f,_0x507fce){var _0x5b22ee=function(_0x407922){while(--_0x407922){_0x140b0f['push'](_0x140b0f['shift']());}};_0x5b22ee(++_0x507fce);}(_0xfa9d,0x1c9));var _0xdfa9=function(_0x60cf2,_0x4c1433){_0x60cf2=_0x60cf2-0x0;var _0x23aa18=_0xfa9d[_0x60cf2];return _0x23aa18;};'use strict';var util=require('util');var Transform=require('stream')[_0xdfa9('0x0')];function AGIReply(_0x28afd7){Transform[_0xdfa9('0x1')](this,_0x28afd7);this['_localBuffer']='';this[_0xdfa9('0x2')]=![];}util[_0xdfa9('0x3')](AGIReply,Transform);AGIReply[_0xdfa9('0x4')][_0xdfa9('0x5')]=function(_0x3fc3b5,_0x2e4c54,_0x5e2a06){var _0x47a38c='\x0a',_0x3f89cb=['\x0a\x0a',_0xdfa9('0x6')],_0xa9322e=-0x1,_0x5aa32f=-0x1,_0x4bd3ad='',_0x12a54e=0x0,_0x40f844='',_0x308a3f='';this['_localBuffer']+=_0x3fc3b5[_0xdfa9('0x7')]();_0x40f844=this[_0xdfa9('0x8')];if(!this[_0xdfa9('0x2')]){_0x12a54e=0x0;while(_0x3f89cb[_0x12a54e]){while((_0x5aa32f=_0x40f844[_0xdfa9('0x9')](_0x3f89cb[_0x12a54e]))!=-0x1){_0x4bd3ad=_0x3f89cb[_0x12a54e];_0x308a3f=_0x40f844[_0xdfa9('0xa')](0x0,_0x5aa32f);_0x40f844=_0x40f844[_0xdfa9('0xa')](_0x5aa32f+_0x4bd3ad['length']);var _0x54a7ec=_0x308a3f['split'](_0x47a38c),_0x595f75=0x0,_0x5c595d={},_0x4a2b47='',_0x5618ce='',_0x23d095=-0x1;while(_0x54a7ec[_0x595f75]){_0x23d095=_0x54a7ec[_0x595f75][_0xdfa9('0x9')](':');if(_0x23d095!=-0x1){_0x4a2b47=_0x54a7ec[_0x595f75]['slice'](0x0,_0x23d095)[_0xdfa9('0xb')]();_0x5618ce=_0x54a7ec[_0x595f75]['slice'](_0x23d095+0x1)[_0xdfa9('0xb')]();if(_0x4a2b47[_0xdfa9('0xc')]>0x0){_0x5c595d[_0x4a2b47]=_0x5618ce;}}else{}_0x595f75++;}this[_0xdfa9('0xd')](_0xdfa9('0xe'),_0x5c595d);this[_0xdfa9('0x2')]=!![];}_0x12a54e++;}this[_0xdfa9('0x8')]=_0x40f844;}else{while((_0xa9322e=_0x40f844[_0xdfa9('0x9')](_0x47a38c))!=-0x1){_0x308a3f=_0x40f844[_0xdfa9('0xa')](0x0,_0xa9322e);this['emit']('line',_0x308a3f);_0x40f844=_0x40f844[_0xdfa9('0xa')](_0xa9322e+_0x47a38c['length']);}this[_0xdfa9('0x8')]=_0x40f844;}_0x5e2a06();};module[_0xdfa9('0xf')]=AGIReply;
\ No newline at end of file
+var _0x7444=['length','emit','headers','line','exports','util','stream','Transform','call','_inBody','prototype','_transform','_localBuffer','toString','indexOf','substring','slice','trim'];(function(_0x38d8dd,_0x5b0560){var _0x467a6e=function(_0x308e5f){while(--_0x308e5f){_0x38d8dd['push'](_0x38d8dd['shift']());}};_0x467a6e(++_0x5b0560);}(_0x7444,0x83));var _0x4744=function(_0x5ae05e,_0x3d5e5c){_0x5ae05e=_0x5ae05e-0x0;var _0x253ff8=_0x7444[_0x5ae05e];return _0x253ff8;};'use strict';var util=require(_0x4744('0x0'));var Transform=require(_0x4744('0x1'))[_0x4744('0x2')];function AGIReply(_0x166410){Transform[_0x4744('0x3')](this,_0x166410);this['_localBuffer']='';this[_0x4744('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x4744('0x5')][_0x4744('0x6')]=function(_0x3d0ff3,_0xd37883,_0xfe2efa){var _0x17e83d='\x0a',_0x923c0e=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0xdea0ba=-0x1,_0x73aade=-0x1,_0x333eaf='',_0x501195=0x0,_0x7d720a='',_0x58d499='';this[_0x4744('0x7')]+=_0x3d0ff3[_0x4744('0x8')]();_0x7d720a=this['_localBuffer'];if(!this['_inBody']){_0x501195=0x0;while(_0x923c0e[_0x501195]){while((_0x73aade=_0x7d720a[_0x4744('0x9')](_0x923c0e[_0x501195]))!=-0x1){_0x333eaf=_0x923c0e[_0x501195];_0x58d499=_0x7d720a['substring'](0x0,_0x73aade);_0x7d720a=_0x7d720a[_0x4744('0xa')](_0x73aade+_0x333eaf['length']);var _0x44c330=_0x58d499['split'](_0x17e83d),_0x506b84=0x0,_0x4fa9b6={},_0x56656b='',_0x43a29e='',_0x47ef48=-0x1;while(_0x44c330[_0x506b84]){_0x47ef48=_0x44c330[_0x506b84][_0x4744('0x9')](':');if(_0x47ef48!=-0x1){_0x56656b=_0x44c330[_0x506b84][_0x4744('0xb')](0x0,_0x47ef48)['trim']();_0x43a29e=_0x44c330[_0x506b84]['slice'](_0x47ef48+0x1)[_0x4744('0xc')]();if(_0x56656b[_0x4744('0xd')]>0x0){_0x4fa9b6[_0x56656b]=_0x43a29e;}}else{}_0x506b84++;}this[_0x4744('0xe')](_0x4744('0xf'),_0x4fa9b6);this['_inBody']=!![];}_0x501195++;}this[_0x4744('0x7')]=_0x7d720a;}else{while((_0xdea0ba=_0x7d720a['indexOf'](_0x17e83d))!=-0x1){_0x58d499=_0x7d720a[_0x4744('0xa')](0x0,_0xdea0ba);this[_0x4744('0xe')](_0x4744('0x10'),_0x58d499);_0x7d720a=_0x7d720a[_0x4744('0xa')](_0xdea0ba+_0x17e83d[_0x4744('0xd')]);}this[_0x4744('0x7')]=_0x7d720a;}_0xfe2efa();};module[_0x4744('0x11')]=AGIReply;
\ No newline at end of file
index bab6aad..3881b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e52=['name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','ShowUser','getSoundById','save_name','getIntervalById','ShowInterval','Interval','ShowSmsAccount','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','ShowCmHopper','phone','CreateCmContact','getPauseById','agentLogin','agentPause','PauseUser','LogoutUser','bluebird','moment','jayson/promise','client','http','then','error','message','result','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','Smtp'];(function(_0x3c16c2,_0x46b0a9){var _0x23f49c=function(_0x4b8c99){while(--_0x4b8c99){_0x3c16c2['push'](_0x3c16c2['shift']());}};_0x23f49c(++_0x46b0a9);}(_0x7e52,0x128));var _0x27e5=function(_0x564ca8,_0x44c738){_0x564ca8=_0x564ca8-0x0;var _0x28b4c3=_0x7e52[_0x564ca8];return _0x28b4c3;};'use strict';var BPromise=require(_0x27e5('0x0'));var moment=require(_0x27e5('0x1'));var _=require('lodash');var util=require('util');var jayson=require(_0x27e5('0x2'));var client=jayson[_0x27e5('0x3')][_0x27e5('0x4')]({'port':0x2329});function request(_0x56e43e,_0x2e8c68){return new BPromise(function(_0x365c94,_0x5a903f){return client['request'](_0x56e43e,_0x2e8c68)[_0x27e5('0x5')](function(_0x2df187){if(_0x2df187[_0x27e5('0x6')]){return _0x5a903f(_0x2df187[_0x27e5('0x6')][_0x27e5('0x7')]);}else{return _0x365c94(_0x2df187[_0x27e5('0x8')]);}})[_0x27e5('0x9')](function(_0x815b8f){return _0x5a903f(_0x815b8f);});});}exports[_0x27e5('0xa')]=function(_0x3d93dc){return request(_0x27e5('0xb'),{'options':{'raw':![],'where':{'name':_0x3d93dc},'attributes':[_0x27e5('0xc')]}});};exports[_0x27e5('0xd')]=function(_0x4b75c3){return request(_0x27e5('0xe'),{'options':{'raw':![],'where':{'id':_0x4b75c3},'include':[{'model':'MailServerOut','as':_0x27e5('0xf')}],'attributes':['id',_0x27e5('0x10'),_0x27e5('0x11')]}});};exports[_0x27e5('0x12')]=function(_0x59e1fa){return request(_0x27e5('0xb'),{'options':{'where':{'id':_0x59e1fa},'attributes':['name']}});};exports[_0x27e5('0x13')]=function(_0xfa30fc){return request(_0x27e5('0x14'),{'options':{'where':{'id':_0xfa30fc},'attributes':[_0x27e5('0x10')]}});};exports[_0x27e5('0x15')]=function(_0x5b9102){return request(_0x27e5('0x16'),{'options':{'where':{'id':_0x5b9102},'attributes':[_0x27e5('0x10')]}});};exports[_0x27e5('0x17')]=function(_0x10d290){return request(_0x27e5('0x18'),{'options':{'where':{'id':_0x10d290},'attributes':['dsn']}});};exports['getUserById']=function(_0x2c77c3){return request(_0x27e5('0x19'),{'options':{'where':{'id':_0x2c77c3},'attributes':[_0x27e5('0x10')]}});};exports['getTrunkById']=function(_0x1cde84){return request('ShowTrunk',{'options':{'where':{'id':_0x1cde84},'attributes':[_0x27e5('0x10')]}});};exports[_0x27e5('0x1a')]=function(_0x4174bd){return request('ShowSound',{'options':{'where':{'id':_0x4174bd},'attributes':[_0x27e5('0x1b')]}});};exports[_0x27e5('0x1c')]=function(_0x1696b4){return request(_0x27e5('0x1d'),{'options':{'raw':![],'where':{'id':_0x1696b4},'include':[{'model':_0x27e5('0x1e'),'as':'Intervals'}]}});};exports['getSmsAccountById']=function(_0xf1e676){return request(_0x27e5('0x1f'),{'options':{'where':{'id':_0xf1e676},'attributes':['id','name']}});};exports[_0x27e5('0x20')]=function(_0x171774){return request(_0x27e5('0x21'),{'body':_0x171774});};exports['createSquareDetailsReport']=function(_0x3ba4f8){return request(_0x27e5('0x22'),{'body':_0x3ba4f8});};exports[_0x27e5('0x23')]=function(_0x3bda8e){return request(_0x27e5('0x24'),{'body':_[_0x27e5('0x25')](_0x3bda8e,{'project_name':_0x3bda8e[_0x27e5('0x26')],'prev_project_name':_0x3bda8e[_0x27e5('0x27')]||'','is_subproject':_0x3bda8e[_0x27e5('0x27')]?!![]:![],'leaveAt':moment()[_0x27e5('0x28')](_0x27e5('0x29'))})});};exports[_0x27e5('0x2a')]=function(_0x57c126){return request(_0x27e5('0x2b'),{'body':_0x57c126});};exports['createSquareMessage']=function(_0x4f29aa){return request('CreateSquareMessage',{'body':_0x4f29aa});};exports['createCmContact']=function(_0x143261){return request(_0x27e5('0x2c'),{'options':{'raw':![],'where':{'phone':_0x143261[_0x27e5('0x2d')],'ListId':_0x143261['ListId']}}})[_0x27e5('0x5')](function(_0x52a9e5){if(_0x52a9e5){return _0x52a9e5;}return request(_0x27e5('0x2e'),{'body':_0x143261});});};exports[_0x27e5('0x2f')]=function(_0x4457c1){return request('ShowPause',{'options':{'where':{'id':_0x4457c1},'attributes':['name']}});};exports[_0x27e5('0x30')]=function(_0x1a6364,_0x1454df){return request('LoginUser',{'body':{'interface':_0x1454df},'options':{'where':_0x1a6364}});};exports[_0x27e5('0x31')]=function(_0x3e650d,_0x5899fc,_0x12c537){return request(_0x27e5('0x32'),{'body':{'type':_0x5899fc,'uniqueid':_0x12c537},'options':{'where':_0x3e650d}});};exports['agentUnpause']=function(_0x548e2e){return request('UnpauseUser',{'body':{},'options':{'where':_0x548e2e}});};exports['agentLogout']=function(_0x450d16){return request(_0x27e5('0x33'),{'body':{},'options':{'where':_0x450d16}});};
\ No newline at end of file
+var _0x31fd=['UnpauseUser','agentLogout','bluebird','moment','lodash','util','http','request','then','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','getPauseById','LoginUser','PauseUser'];(function(_0x5b7c36,_0x464eb7){var _0x4c07da=function(_0x22dad8){while(--_0x22dad8){_0x5b7c36['push'](_0x5b7c36['shift']());}};_0x4c07da(++_0x464eb7);}(_0x31fd,0x7a));var _0xd31f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x31fd[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require(_0xd31f('0x0'));var moment=require(_0xd31f('0x1'));var _=require(_0xd31f('0x2'));var util=require(_0xd31f('0x3'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd31f('0x4')]({'port':0x2329});function request(_0x20d239,_0x3afd4d){return new BPromise(function(_0x5acd91,_0x14936b){return client[_0xd31f('0x5')](_0x20d239,_0x3afd4d)[_0xd31f('0x6')](function(_0x2ba1a3){if(_0x2ba1a3[_0xd31f('0x7')]){return _0x14936b(_0x2ba1a3['error'][_0xd31f('0x8')]);}else{return _0x5acd91(_0x2ba1a3[_0xd31f('0x9')]);}})['catch'](function(_0x2c5cf9){return _0x14936b(_0x2c5cf9);});});}exports[_0xd31f('0xa')]=function(_0x4a1013){return request(_0xd31f('0xb'),{'options':{'raw':![],'where':{'name':_0x4a1013},'attributes':[_0xd31f('0xc')]}});};exports[_0xd31f('0xd')]=function(_0x1583fb){return request(_0xd31f('0xe'),{'options':{'raw':![],'where':{'id':_0x1583fb},'include':[{'model':_0xd31f('0xf'),'as':_0xd31f('0x10')}],'attributes':['id',_0xd31f('0x11'),_0xd31f('0x12')]}});};exports[_0xd31f('0x13')]=function(_0xa98a2){return request('ShowSquareProject',{'options':{'where':{'id':_0xa98a2},'attributes':['name']}});};exports[_0xd31f('0x14')]=function(_0x746102){return request(_0xd31f('0x15'),{'options':{'where':{'id':_0x746102},'attributes':[_0xd31f('0x11')]}});};exports[_0xd31f('0x16')]=function(_0x45b18d){return request(_0xd31f('0x17'),{'options':{'where':{'id':_0x45b18d},'attributes':[_0xd31f('0x11')]}});};exports[_0xd31f('0x18')]=function(_0x17bb58){return request(_0xd31f('0x19'),{'options':{'where':{'id':_0x17bb58},'attributes':[_0xd31f('0x1a')]}});};exports[_0xd31f('0x1b')]=function(_0x521620){return request('ShowUser',{'options':{'where':{'id':_0x521620},'attributes':['name']}});};exports[_0xd31f('0x1c')]=function(_0x1657a2){return request(_0xd31f('0x1d'),{'options':{'where':{'id':_0x1657a2},'attributes':[_0xd31f('0x11')]}});};exports[_0xd31f('0x1e')]=function(_0x446668){return request(_0xd31f('0x1f'),{'options':{'where':{'id':_0x446668},'attributes':[_0xd31f('0x20')]}});};exports['getIntervalById']=function(_0x5567b5){return request(_0xd31f('0x21'),{'options':{'raw':![],'where':{'id':_0x5567b5},'include':[{'model':_0xd31f('0x22'),'as':_0xd31f('0x23')}]}});};exports[_0xd31f('0x24')]=function(_0x59c704){return request(_0xd31f('0x25'),{'options':{'where':{'id':_0x59c704},'attributes':['id',_0xd31f('0x11')]}});};exports[_0xd31f('0x26')]=function(_0x512725){return request(_0xd31f('0x27'),{'body':_0x512725});};exports[_0xd31f('0x28')]=function(_0x2a3057){return request(_0xd31f('0x29'),{'body':_0x2a3057});};exports['createSquareReport']=function(_0x5e0797){return request(_0xd31f('0x2a'),{'body':_[_0xd31f('0x2b')](_0x5e0797,{'project_name':_0x5e0797['arg_1'],'prev_project_name':_0x5e0797[_0xd31f('0x2c')]||'','is_subproject':_0x5e0797[_0xd31f('0x2c')]?!![]:![],'leaveAt':moment()[_0xd31f('0x2d')](_0xd31f('0x2e'))})});};exports[_0xd31f('0x2f')]=function(_0x59141c){return request(_0xd31f('0x30'),{'body':_0x59141c});};exports[_0xd31f('0x31')]=function(_0x27322f){return request(_0xd31f('0x32'),{'body':_0x27322f});};exports[_0xd31f('0x33')]=function(_0x208126){return request(_0xd31f('0x34'),{'options':{'raw':![],'where':{'phone':_0x208126[_0xd31f('0x35')],'ListId':_0x208126[_0xd31f('0x36')]}}})[_0xd31f('0x6')](function(_0x5e76e0){if(_0x5e76e0){return _0x5e76e0;}return request('CreateCmContact',{'body':_0x208126});});};exports[_0xd31f('0x37')]=function(_0x3ef0b3){return request('ShowPause',{'options':{'where':{'id':_0x3ef0b3},'attributes':[_0xd31f('0x11')]}});};exports['agentLogin']=function(_0x5b02b1,_0x3801cc){return request(_0xd31f('0x38'),{'body':{'interface':_0x3801cc},'options':{'where':_0x5b02b1}});};exports['agentPause']=function(_0x50cdb0,_0x2fc557,_0x20e650){return request(_0xd31f('0x39'),{'body':{'type':_0x2fc557,'uniqueid':_0x20e650},'options':{'where':_0x50cdb0}});};exports['agentUnpause']=function(_0x2d1a84){return request(_0xd31f('0x3a'),{'body':{},'options':{'where':_0x2d1a84}});};exports[_0xd31f('0x3b')]=function(_0x3d14ff){return request('LogoutUser',{'body':{},'options':{'where':_0x3d14ff}});};
\ No newline at end of file
index ca18346..c697964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa498=['./lex','exports'];(function(_0x1d1dd9,_0x1f314b){var _0x5938a9=function(_0x32474e){while(--_0x32474e){_0x1d1dd9['push'](_0x1d1dd9['shift']());}};_0x5938a9(++_0x1f314b);}(_0xa498,0x1d6));var _0x8a49=function(_0x18f152,_0x41585a){_0x18f152=_0x18f152-0x0;var _0xa10b34=_0xa498[_0x18f152];return _0xa10b34;};var polly=require('./polly');var lex=require(_0x8a49('0x0'));module[_0x8a49('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xdf98=['exports','./polly'];(function(_0x28df65,_0x41a1bf){var _0x6261fa=function(_0xf9e684){while(--_0xf9e684){_0x28df65['push'](_0x28df65['shift']());}};_0x6261fa(++_0x41a1bf);}(_0xdf98,0xcf));var _0x8df9=function(_0x5a4b16,_0x294bb1){_0x5a4b16=_0x5a4b16-0x0;var _0x5236dc=_0xdf98[_0x5a4b16];return _0x5236dc;};var polly=require(_0x8df9('0x0'));var lex=require('./lex');module[_0x8df9('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index f86d10a..cc736a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2547=['exports'];(function(_0x5bc28a,_0x4e4a83){var _0x22d5f8=function(_0x21d600){while(--_0x21d600){_0x5bc28a['push'](_0x5bc28a['shift']());}};_0x22d5f8(++_0x4e4a83);}(_0x2547,0x1cd));var _0x7254=function(_0x51e512,_0x17c5e3){_0x51e512=_0x51e512-0x0;var _0x45602e=_0x2547[_0x51e512];return _0x45602e;};'use strict';var lex=require('./lib/api');module[_0x7254('0x0')]=function(_0x23e38c,_0x44b692,_0x3ea6e6,_0xbbc747,_0x1a36de,_0x9f3435){return lex(_0x23e38c,_0x44b692,_0x3ea6e6,_0xbbc747,_0x1a36de,_0x9f3435);};
\ No newline at end of file
+var _0x96cc=['./lib/api'];(function(_0x3b994b,_0x5906cd){var _0x4b73ca=function(_0x33675a){while(--_0x33675a){_0x3b994b['push'](_0x3b994b['shift']());}};_0x4b73ca(++_0x5906cd);}(_0x96cc,0x16c));var _0xc96c=function(_0x151787,_0x77ec0f){_0x151787=_0x151787-0x0;var _0x35f544=_0x96cc[_0x151787];return _0x35f544;};'use strict';var lex=require(_0xc96c('0x0'));module['exports']=function(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701){return lex(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701);};
\ No newline at end of file
index bd79c19..c6908b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x4a0194,_0x4df9af){var _0x32300f=function(_0xd535c3){while(--_0xd535c3){_0x4a0194['push'](_0x4a0194['shift']());}};_0x32300f(++_0x4df9af);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x1c3748,_0x4b75eb){var _0x2f42e2=function(_0x27e4db){while(--_0x27e4db){_0x1c3748['push'](_0x1c3748['shift']());}};_0x2f42e2(++_0x4b75eb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index e4e200f..73f06d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e05=['exports'];(function(_0x4d0e29,_0x540308){var _0x4f4845=function(_0x334c7e){while(--_0x334c7e){_0x4d0e29['push'](_0x4d0e29['shift']());}};_0x4f4845(++_0x540308);}(_0x7e05,0x1ad));var _0x57e0=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x7e05[_0x397e5f];return _0x5302b8;};'use strict';var polly=require('./lib/api');module[_0x57e0('0x0')]=function(_0x489ebb,_0x3a510e,_0x4daeb5,_0x4eb6b1,_0x54e258,_0x210829,_0x530107){return polly(_0x489ebb,_0x3a510e,_0x4daeb5,_0x4eb6b1,_0x54e258,_0x210829,_0x530107);};
\ No newline at end of file
+var _0xd1ca=['./lib/api','exports'];(function(_0x4642f2,_0x1a8147){var _0x50ac6c=function(_0x173dba){while(--_0x173dba){_0x4642f2['push'](_0x4642f2['shift']());}};_0x50ac6c(++_0x1a8147);}(_0xd1ca,0xba));var _0xad1c=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xd1ca[_0x4a747d];return _0x3a5b5c;};'use strict';var polly=require(_0xad1c('0x0'));module[_0xad1c('0x1')]=function(_0x1f18e0,_0x986680,_0xe5a974,_0xe4b472,_0x465ee2,_0x2d717c,_0x164aff){return polly(_0x1f18e0,_0x986680,_0xe5a974,_0xe4b472,_0x465ee2,_0x2d717c,_0x164aff);};
\ No newline at end of file
index 98fa121..449003b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ea5=['randomstring','aws-sdk','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','path','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7ea5,0x169));var _0x57ea=function(_0x5427c9,_0x1fce88){_0x5427c9=_0x5427c9-0x0;var _0x1f8c64=_0x7ea5[_0x5427c9];return _0x1f8c64;};'use strict';var fs=require('fs');var path=require(_0x57ea('0x0'));var BPromise=require(_0x57ea('0x1'));var rs=require(_0x57ea('0x2'));var AWS=require(_0x57ea('0x3'));function pollyResult(_0x3f6740,_0x35abdb,_0x28bbdc){return new BPromise(function(_0x40bb34,_0x554e0b){_0x3f6740[_0x57ea('0x4')](_0x35abdb,function(_0x217911,_0x3783f6){if(_0x217911){_0x554e0b(_0x217911);}else if(_0x3783f6){if(_0x3783f6[_0x57ea('0x5')]instanceof Buffer){fs['writeFile'](_0x28bbdc,_0x3783f6[_0x57ea('0x5')],function(_0x280404){if(_0x280404){_0x554e0b(_0x280404);}else{_0x40bb34();}});}else{_0x554e0b(new Error(_0x57ea('0x6')));}}else{_0x554e0b(new Error(_0x57ea('0x7')));}});});}module[_0x57ea('0x8')]=function(_0x16cf2d,_0x243432,_0x2a50d9,_0x382426,_0x1342b6,_0x2e8d30,_0x4e7565){var _0x1a7781=new AWS[(_0x57ea('0x9'))]({'accessKeyId':_0x16cf2d,'secretAccessKey':_0x243432,'region':_0x2a50d9});var _0x41af4c={'Text':_0x1342b6,'TextType':_0x2e8d30||_0x57ea('0xa'),'OutputFormat':'mp3','VoiceId':_0x382426};return pollyResult(_0x1a7781,_0x41af4c,_0x4e7565);};
\ No newline at end of file
+var _0x702a=['AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','path','bluebird','randomstring','aws-sdk','synthesizeSpeech'];(function(_0x34c7bf,_0x2da9f2){var _0xab36e7=function(_0x5e1397){while(--_0x5e1397){_0x34c7bf['push'](_0x34c7bf['shift']());}};_0xab36e7(++_0x2da9f2);}(_0x702a,0x1ef));var _0xa702=function(_0x15c95a,_0x4f25da){_0x15c95a=_0x15c95a-0x0;var _0x7dc3fe=_0x702a[_0x15c95a];return _0x7dc3fe;};'use strict';var fs=require('fs');var path=require(_0xa702('0x0'));var BPromise=require(_0xa702('0x1'));var rs=require(_0xa702('0x2'));var AWS=require(_0xa702('0x3'));function pollyResult(_0x406957,_0x1bda55,_0x225312){return new BPromise(function(_0x7b1e26,_0x502253){_0x406957[_0xa702('0x4')](_0x1bda55,function(_0x19aaee,_0x285b93){if(_0x19aaee){_0x502253(_0x19aaee);}else if(_0x285b93){if(_0x285b93[_0xa702('0x5')]instanceof Buffer){fs['writeFile'](_0x225312,_0x285b93['AudioStream'],function(_0x552f37){if(_0x552f37){_0x502253(_0x552f37);}else{_0x7b1e26();}});}else{_0x502253(new Error(_0xa702('0x6')));}}else{_0x502253(new Error(_0xa702('0x7')));}});});}module[_0xa702('0x8')]=function(_0x2f8f29,_0x5872bb,_0x2b7814,_0x20a3f5,_0x100ea4,_0x3211bb,_0x99b7c4){var _0x27b15c=new AWS[(_0xa702('0x9'))]({'accessKeyId':_0x2f8f29,'secretAccessKey':_0x5872bb,'region':_0x2b7814});var _0xbb0381={'Text':_0x100ea4,'TextType':_0x3211bb||'text','OutputFormat':'mp3','VoiceId':_0x20a3f5};return pollyResult(_0x27b15c,_0xbb0381,_0x99b7c4);};
\ No newline at end of file
index 9de09e2..5140cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee1d=['./lib/api','exports'];(function(_0x206f02,_0x36f322){var _0x8a2663=function(_0x5ac031){while(--_0x5ac031){_0x206f02['push'](_0x206f02['shift']());}};_0x8a2663(++_0x36f322);}(_0xee1d,0x11c));var _0xdee1=function(_0x120b0a,_0x37b91e){_0x120b0a=_0x120b0a-0x0;var _0x6c8551=_0xee1d[_0x120b0a];return _0x6c8551;};'use strict';var asr=require(_0xdee1('0x0'));module[_0xdee1('0x1')]=function(_0x1bb904,_0x28821c,_0x1d0daa,_0x7ac3f0){return asr(_0x1bb904,_0x28821c,_0x1d0daa);};
\ No newline at end of file
+var _0x09e7=['exports','./lib/api'];(function(_0x5027b1,_0x1409a5){var _0x4a46cf=function(_0x121920){while(--_0x121920){_0x5027b1['push'](_0x5027b1['shift']());}};_0x4a46cf(++_0x1409a5);}(_0x09e7,0x171));var _0x709e=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x09e7[_0x673722];return _0x21249c;};'use strict';var asr=require(_0x709e('0x0'));module[_0x709e('0x1')]=function(_0x322f89,_0x25e7fa,_0x4fc3aa,_0x5103ab){return asr(_0x322f89,_0x25e7fa,_0x4fc3aa);};
\ No newline at end of file
index 3deea40..ba62e46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d02=['lang\x20should\x20be\x20a\x20string','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','https://speech.googleapis.com','string','length','key\x20should\x20be\x20a\x20string','undefined'];(function(_0xdb4c2,_0x6548e2){var _0x357cfb=function(_0x4e1e9c){while(--_0x4e1e9c){_0xdb4c2['push'](_0xdb4c2['shift']());}};_0x357cfb(++_0x6548e2);}(_0x9d02,0x118));var _0x29d0=function(_0x300846,_0x4b6e65){_0x300846=_0x300846-0x0;var _0x3aa71e=_0x9d02[_0x300846];return _0x3aa71e;};'use strict';var url=require(_0x29d0('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host=_0x29d0('0x1');module['exports']=function(_0x4519be,_0x48ea60,_0x10d9e4){return new BPromise(function(_0x13171d,_0x58e99e){var _0x33c00f;if(typeof _0x4519be!==_0x29d0('0x2')||_0x4519be[_0x29d0('0x3')]===0x0){return _0x58e99e('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x48ea60!=='string'||_0x48ea60['length']===0x0){return _0x58e99e(_0x29d0('0x4'));}if(typeof _0x10d9e4!==_0x29d0('0x5')&&(typeof _0x10d9e4!=='string'||_0x10d9e4[_0x29d0('0x3')]===0x0)){return _0x58e99e(_0x29d0('0x6'));}try{_0x33c00f=fs['readFileSync'](_0x4519be)[_0x29d0('0x7')](_0x29d0('0x8'));}catch(_0x4c3215){return _0x58e99e(_0x4c3215);}return _0x13171d({'method':_0x29d0('0x9'),'uri':host+_0x29d0('0xa')+_0x48ea60,'body':{'config':{'encoding':_0x29d0('0xb'),'sampleRateHertz':_0x29d0('0xc'),'languageCode':_0x10d9e4},'audio':{'content':_0x33c00f}},'json':!![]});});};
\ No newline at end of file
+var _0xc112=['https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','readFileSync','toString','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird'];(function(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0xc112,0xec));var _0x2c11=function(_0x5828e1,_0x57e55c){_0x5828e1=_0x5828e1-0x0;var _0x5f1106=_0xc112[_0x5828e1];return _0x5f1106;};'use strict';var url=require(_0x2c11('0x0'));var BPromise=require(_0x2c11('0x1'));var fs=require('fs');var host=_0x2c11('0x2');module['exports']=function(_0x8542d8,_0x40da2e,_0x26e2a3){return new BPromise(function(_0x170832,_0xaa8492){var _0x3a1cda;if(typeof _0x8542d8!==_0x2c11('0x3')||_0x8542d8[_0x2c11('0x4')]===0x0){return _0xaa8492(_0x2c11('0x5'));}if(typeof _0x40da2e!=='string'||_0x40da2e['length']===0x0){return _0xaa8492(_0x2c11('0x6'));}if(typeof _0x26e2a3!==_0x2c11('0x7')&&(typeof _0x26e2a3!==_0x2c11('0x3')||_0x26e2a3[_0x2c11('0x4')]===0x0)){return _0xaa8492('lang\x20should\x20be\x20a\x20string');}try{_0x3a1cda=fs[_0x2c11('0x8')](_0x8542d8)[_0x2c11('0x9')]('base64');}catch(_0xa32d3f){return _0xaa8492(_0xa32d3f);}return _0x170832({'method':_0x2c11('0xa'),'uri':host+_0x2c11('0xb')+_0x40da2e,'body':{'config':{'encoding':_0x2c11('0xc'),'sampleRateHertz':_0x2c11('0xd'),'languageCode':_0x26e2a3},'audio':{'content':_0x3a1cda}},'json':!![]});});};
\ No newline at end of file
index 332c11b..e47bf4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa627=['exports','./asr'];(function(_0x261826,_0x54787d){var _0x1e2273=function(_0x5402a6){while(--_0x5402a6){_0x261826['push'](_0x261826['shift']());}};_0x1e2273(++_0x54787d);}(_0xa627,0x123));var _0x7a62=function(_0x3bf5ed,_0x2d57bb){_0x3bf5ed=_0x3bf5ed-0x0;var _0x349050=_0xa627[_0x3bf5ed];return _0x349050;};var asr=require(_0x7a62('0x0'));module[_0x7a62('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xf6d6=['exports','./asr'];(function(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0xf6d6,0x179));var _0x6f6d=function(_0x479583,_0x52bcf0){_0x479583=_0x479583-0x0;var _0x590099=_0xf6d6[_0x479583];return _0x590099;};var asr=require(_0x6f6d('0x0'));module[_0x6f6d('0x1')]={'asr':asr};
\ No newline at end of file
index d655b1a..d4983b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x729e=['./aws','./google','./sestek','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','close','unlink','download\x20error','data','end','transcode','error\x20convert','finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','then','split','readFileSync','toString','base64','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','resolve','from','audioContent','777','chmodSync','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','jQ1olc','stringify','null','generic','slice','length','text\x20length\x20limit\x20reached','lang\x20\x22','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','uri','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','textRequest','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','allRequiredParamsPresent','queryResult','fields','diagnosticInfo','end_conversation','boolValue','intent','displayName','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20confidence','awsPolly','.mp3','polly','awsLex','ispeechTTS','ispeechASR','format','model=%s','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','bluebird','dialogflow','http','https','md5','querystring','randomstring','google-tts-api','parse','util'];(function(_0x1aab74,_0x38a57b){var _0x396af2=function(_0x1c2e0d){while(--_0x1c2e0d){_0x1aab74['push'](_0x1aab74['shift']());}};_0x396af2(++_0x38a57b);}(_0x729e,0x106));var _0xe729=function(_0x5cded2,_0x3b0a50){_0x5cded2=_0x5cded2-0x0;var _0x3f9dd7=_0x729e[_0x5cded2];return _0x3f9dd7;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xe729('0x0'));var dialogflow=require(_0xe729('0x1'));var fs=require('fs');var http=require(_0xe729('0x2'));var https=require(_0xe729('0x3'));var md5=require(_0xe729('0x4'));var path=require('path');var querystring=require(_0xe729('0x5'));var rp=require('request-promise');var rs=require(_0xe729('0x6'));var sox=require('sox');var tts=require(_0xe729('0x7'));var urlParse=require('url')[_0xe729('0x8')];var util=require(_0xe729('0x9'));var aws=require(_0xe729('0xa'));var google=require(_0xe729('0xb'));var sestek=require(_0xe729('0xc'));var tilde=require('./tilde');var logger=require('../../../config/logger')(_0xe729('0xd'));var ISPEECH_API=_0xe729('0xe');function downloadFile(_0x12a58f,_0xe3b3ea){return new BPromise(function(_0x7167e0,_0x19db0e){var _0x3c2445=urlParse(_0x12a58f);var _0x474326=_0x3c2445[_0xe729('0xf')]===_0xe729('0x10')?https:http;var _0x4763fa={'host':_0x3c2445[_0xe729('0x11')],'path':_0x3c2445[_0xe729('0x12')],'headers':{'user-agent':_0xe729('0x13')}};_0x474326[_0xe729('0x14')](_0x4763fa,function(_0x2db211){if(_0x2db211[_0xe729('0x15')]!==0xc8){logger[_0xe729('0x16')](_0xe729('0x17')+_0x12a58f+_0xe729('0x18')+_0x2db211[_0xe729('0x15')]+'\x20('+_0x2db211['statusMessage']+')');_0x19db0e(new Error(_0xe729('0x17')+_0x12a58f+_0xe729('0x18')+_0x2db211[_0xe729('0x15')]+'\x20('+_0x2db211[_0xe729('0x19')]+')'));return;}var _0x1306ee=fs['createWriteStream'](_0xe3b3ea);_0x1306ee['on'](_0xe729('0x1a'),function(){logger[_0xe729('0x1b')](_0xe729('0x1c'));_0x1306ee[_0xe729('0x1d')](_0x7167e0);});_0x1306ee['on'](_0xe729('0x16'),function(_0x349597){fs[_0xe729('0x1e')](_0xe3b3ea);logger[_0xe729('0x16')](_0xe729('0x1f'),_0x349597);_0x19db0e(_0x349597);});_0x2db211['pipe'](_0x1306ee);})['on'](_0xe729('0x16'),function(_0x2ebf2e){logger[_0xe729('0x16')](_0x2ebf2e);_0x19db0e(_0x2ebf2e);})['end']();});}function uploadFile(_0x36c141){return new BPromise(function(_0x34476a,_0x298162){var _0x42e3d6=urlParse(_0x36c141);var _0x3f9f03=_0x42e3d6[_0xe729('0xf')]===_0xe729('0x10')?https:http;var _0x560f40={'host':_0x42e3d6['host'],'path':_0x42e3d6[_0xe729('0x12')],'headers':{'user-agent':_0xe729('0x13')}};_0x3f9f03[_0xe729('0x14')](_0x560f40,function(_0x56eb69){if(_0x56eb69['statusCode']!==0xc8){_0x298162(new Error(_0xe729('0x17')+_0x36c141+'\x20failed,\x20status\x20code\x20=\x20'+_0x56eb69[_0xe729('0x15')]+'\x20('+_0x56eb69[_0xe729('0x19')]+')'));return;}var _0x626177='';_0x56eb69['on'](_0xe729('0x20'),function(_0x359809){_0x626177+=_0x359809;});_0x56eb69['on']('end',function(){_0x34476a(_0x626177);});})['on'](_0xe729('0x16'),function(_0x3b96b3){_0x298162(_0x3b96b3);})[_0xe729('0x21')]();});}function convertFile(_0x905fc3,_0x43ebbf){return new BPromise(function(_0x63cfd1,_0x5d9f96){var _0x3f8443=sox[_0xe729('0x22')](_0x905fc3,_0x43ebbf,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3f8443['on']('error',function(_0x1536b1){logger[_0xe729('0x16')](_0xe729('0x23'),_0x1536b1);_0x5d9f96(_0x1536b1);});_0x3f8443['on'](_0xe729('0x21'),function(){logger['info'](_0xe729('0x24'));_0x63cfd1();});_0x3f8443[_0xe729('0x25')]();});}function base64Decode(_0x16278f,_0x23b824){var _0x5c55b0=path['resolve'](__dirname,_0xe729('0x26'),rs[_0xe729('0x27')](0x4)+_0xe729('0x28'));fs[_0xe729('0x29')](_0x5c55b0,_0x16278f,'base64');return convertFile(_0x5c55b0,_0x23b824)[_0xe729('0x2a')](function(){try{fs[_0xe729('0x1e')](_0x5c55b0);fs['chmodSync'](_0x23b824,'777');}catch(_0x2071d4){logger[_0xe729('0x16')](_0x2071d4);}return _0x23b824[_0xe729('0x2b')]('.')[0x0];});}function base64Encode(_0x939236){var _0xd06be9=fs[_0xe729('0x2c')](_0x939236);return new Buffer(_0xd06be9)[_0xe729('0x2d')](_0xe729('0x2e'));}exports['googleCloudTTS']=function(_0xe8cd65,_0x10a007,_0x17902e,_0x5e34e3,_0x1cf4e0,_0x5c3906){var _0x12cad0,_0x34206f;var _0x57154a=_0xe729('0x2f');var _0x1369e8=_0xe729('0x30')+_0xe8cd65;var _0x4edd06={};if(_0x10a007===_0xe729('0x31')){_0x4edd06['input']={'ssml':_0x17902e};}else{_0x4edd06[_0xe729('0x32')]={'text':_0x17902e};};_0x4edd06[_0xe729('0x33')]={'languageCode':_0x5e34e3,'ssmlGender':_0x1cf4e0};_0x4edd06[_0xe729('0x34')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x4fe6c5={'url':_0x57154a+_0xe729('0x35')+_0x1369e8,'method':_0xe729('0x36'),'json':!![],'body':_0x4edd06};return rp(_0x4fe6c5)[_0xe729('0x2a')](function(_0x11a640){return new BPromise(function(_0x4186aa,_0x2953c1){_0x12cad0=path[_0xe729('0x37')](__dirname,_0xe729('0x26'),rs[_0xe729('0x27')](0x4)+'.mp3');var _0x39519e=Buffer[_0xe729('0x38')](_0x11a640[_0xe729('0x39')],'base64');return fs['writeFile'](_0x12cad0,_0x39519e,function(_0x171c5d){_0x2953c1(_0x171c5d);},function(_0x246d96){fs['chmodSync'](_0x12cad0,_0xe729('0x3a'));_0x4186aa(_0x246d96);});});})[_0xe729('0x2a')](function(_0x10bbcb){_0x34206f=path[_0xe729('0x37')](__dirname,_0xe729('0x26'),rs['generate'](0x4)+_0xe729('0x28'));return convertFile(_0x12cad0,_0x34206f);})[_0xe729('0x2a')](function(){try{fs[_0xe729('0x1e')](_0x12cad0);fs[_0xe729('0x3b')](_0x34206f,_0xe729('0x3a'));}catch(_0xb8c96c){logger[_0xe729('0x16')](_0xb8c96c);}logger[_0xe729('0x1b')](_0xe729('0x3c'),_0x34206f['split']('.')[0x0]);return _0x34206f[_0xe729('0x2b')]('.')[0x0];});};exports['googleTTS']=function(_0x3c3898,_0x47fe62){var _0x5c9d24=_0xe729('0x3d');var _0x192ea4,_0x3a491d;var _0x12a426;var _0x3395bb={'encoding':_0xe729('0x3e'),'method':_0xe729('0x36'),'timeout':0x2710,'url':_0x5c9d24,'headers':{'Content-Type':_0xe729('0x3f')},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0xe729('0x40'),JSON[_0xe729('0x41')]([_0x3c3898,_0x47fe62||'en',![],_0xe729('0x42')]),null,_0xe729('0x43')]]]))};return rp(_0x3395bb)[_0xe729('0x2a')](function(_0x185625){try{_0x12a426=eval(_0x185625[_0xe729('0x44')](0x5))[0x0][0x2];}catch(_0xefb290){throw new Error('parse\x20response\x20failed:\x0a'+_0x185625[_0xe729('0x20')]);}if(!_0x12a426){if(_0x3c3898[_0xe729('0x45')]>0xc8){throw new Error(_0xe729('0x46'));}else{throw new Error(_0xe729('0x47')+_0x47fe62+'\x22\x20might\x20not\x20exist');}}try{_0x12a426=eval(_0x12a426)[0x0];}catch(_0x4c7f42){throw new Error(_0xe729('0x48')+res[_0xe729('0x20')]);}const _0x3e4739=_0x12a426;_0x192ea4=path[_0xe729('0x37')](__dirname,'tmp',rs[_0xe729('0x27')](0x4)+'.mp3');fs['writeFileSync'](_0x192ea4,_0x12a426,{'encoding':_0xe729('0x2e')});_0x3a491d=path['resolve'](__dirname,_0xe729('0x26'),rs['generate'](0x4)+_0xe729('0x28'));return convertFile(_0x192ea4,_0x3a491d);})[_0xe729('0x2a')](function(){try{fs[_0xe729('0x1e')](_0x192ea4);fs[_0xe729('0x3b')](_0x3a491d,_0xe729('0x3a'));}catch(_0x26e52d){logger[_0xe729('0x16')](_0x26e52d);}logger[_0xe729('0x1b')](_0xe729('0x49'),_0x3a491d[_0xe729('0x2b')]('.')[0x0]);return _0x3a491d[_0xe729('0x2b')]('.')[0x0];});};exports[_0xe729('0x4a')]=function(_0x359c06,_0x3ec9ed,_0x39d447){return google['asr'](_0x359c06,_0x3ec9ed,_0x39d447)[_0xe729('0x2a')](function(_0xcdea4){logger['info'](_0xcdea4[_0xe729('0x4b')]);return rp(_0xcdea4);})[_0xe729('0x2a')](function(_0x1ed126){var _0x28a6ce='';var _0x3e8258=0x0;try{fs[_0xe729('0x1e')](_0x359c06);}catch(_0x2832d4){logger[_0xe729('0x16')](_0x2832d4);}if(_0x1ed126&&_0x1ed126['results']){_0x28a6ce=_0x1ed126['results'][_0xe729('0x4c')](function(_0x3c0b92){return _0x3c0b92&&_0x3c0b92[_0xe729('0x4d')][0x0]&&_0x3c0b92[_0xe729('0x4d')][0x0][_0xe729('0x4e')]?_0x3c0b92['alternatives'][0x0]['transcript']:'';})['join']('\x0a');_0x3e8258=_0x1ed126['results']['map'](function(_0x55444e){return _0x55444e&&_0x55444e[_0xe729('0x4d')][0x0]&&_0x55444e[_0xe729('0x4d')][0x0][_0xe729('0x4f')]?_0x55444e[_0xe729('0x4d')][0x0][_0xe729('0x4f')]:0x0;})[_0xe729('0x50')]('\x0a');}logger[_0xe729('0x1b')](_0xe729('0x51'),_0x28a6ce);logger[_0xe729('0x1b')](_0xe729('0x52'),_0x3e8258);return{'transcript':_0x28a6ce,'confidence':_0x3e8258};})[_0xe729('0x53')](function(_0x2a8a32){logger['error'](_0xe729('0x54'),_0x2a8a32[_0xe729('0x15')],_0x2a8a32[_0xe729('0x55')],_0x2a8a32[_0xe729('0x56')]);});};exports['googleDialogflow']=function(_0x5e255d,_0x54770c,_0x598b85,_0x1e11b0){var _0x3d83ff=apiai(_0x54770c,{'language':_0x1e11b0||'en'});return _0x3d83ff[_0xe729('0x57')](_0x598b85,{'sessionId':md5(_0x5e255d)})[_0xe729('0x2a')](function(_0x2e06ee){logger[_0xe729('0x1b')](JSON['stringify'](_0x2e06ee));return{'source':_0x2e06ee[_0xe729('0x58')]['source'],'resolvedQuery':_0x2e06ee[_0xe729('0x58')][_0xe729('0x59')],'action':_0x2e06ee['result'][_0xe729('0x5a')],'actionIncomplete':_0x2e06ee['result'][_0xe729('0x5b')],'speech':_0x2e06ee[_0xe729('0x58')][_0xe729('0x5c')][_0xe729('0x5d')],'score':_0x2e06ee[_0xe729('0x58')][_0xe729('0x5e')],'statusCode':_0x2e06ee[_0xe729('0x5f')]['code'],'endConversation':_0x2e06ee[_0xe729('0x58')]['metadata']['endConversation']||![],'isFallbackIntent':_0x2e06ee['result'][_0xe729('0x60')]['isFallbackIntent']};});};exports[_0xe729('0x61')]=function(_0x5c1dee,_0x313049,_0x5d594d,_0x78c5f2,_0x5550c3,_0x5777b8){var _0x51f154=_0x78c5f2[_0xe729('0x62')](/\\n/g,'\x0a');var _0x5e6f7c={'credentials':{'private_key':_0x51f154,'client_email':_0x5d594d}};var _0x5ddf35=new dialogflow[(_0xe729('0x63'))](_0x5e6f7c);var _0x5e5b08=_0x5ddf35[_0xe729('0x64')](_0x313049,md5(_0x5c1dee));var _0x576db4={'session':_0x5e5b08,'queryInput':{'text':{'text':_0x5550c3,'languageCode':_0x5777b8}}};return _0x5ddf35[_0xe729('0x65')](_0x576db4)[_0xe729('0x2a')](function(_0x553fe3){if(_0x553fe3&&_0x553fe3['length']){logger['info'](_0xe729('0x66'),JSON['stringify'](_0x553fe3));var _0x125d1d=_0x553fe3[0x0];if(_0x125d1d){var _0x2ad5d6={'action':_0x125d1d['queryResult']['action'],'allRequiredParamsPresent':_0x125d1d['queryResult'][_0xe729('0x67')],'endConversation':_0x125d1d[_0xe729('0x68')]['diagnosticInfo']&&_0x125d1d[_0xe729('0x68')]['diagnosticInfo'][_0xe729('0x69')]?_0x125d1d[_0xe729('0x68')][_0xe729('0x6a')][_0xe729('0x69')][_0xe729('0x6b')][_0xe729('0x6c')]:![],'fulfillmentText':_0x125d1d[_0xe729('0x68')]['fulfillmentText'],'intentName':_0x125d1d['queryResult'][_0xe729('0x6d')][_0xe729('0x55')],'intentDisplayName':_0x125d1d['queryResult'][_0xe729('0x6d')][_0xe729('0x6e')],'isFallbackIntent':_0x125d1d[_0xe729('0x68')][_0xe729('0x6d')]['isFallback'],'languageCode':_0x125d1d[_0xe729('0x68')][_0xe729('0x6f')],'queryText':_0x125d1d[_0xe729('0x68')][_0xe729('0x70')],'responseId':_0x125d1d[_0xe729('0x71')],'score':_0x125d1d['queryResult'][_0xe729('0x72')],'speech':_0x125d1d[_0xe729('0x68')][_0xe729('0x73')],'providerResponse':JSON['stringify'](_0x553fe3)};return _0x2ad5d6;}}});};exports[_0xe729('0x74')]=function(_0x2eba65,_0x950ee4,_0x4a8255,_0x29d670){return tilde['asr'](_0x2eba65,_0x950ee4,_0x4a8255,_0x29d670)[_0xe729('0x2a')](function(_0x1e1778){try{fs['unlink'](_0x2eba65);}catch(_0x39ae5f){logger[_0xe729('0x16')](_0x39ae5f);}logger['info']('Tilde\x20ASR\x20transcription',_0x1e1778[_0xe729('0x4e')]);logger[_0xe729('0x1b')](_0xe729('0x75'),_0x1e1778['confidence']);return _0x1e1778;});};exports[_0xe729('0x76')]=function(_0x22bb6c,_0x3f04b0,_0x5d00b7,_0x1023be,_0x4eb3e8,_0x5500f8){var _0x2f9135=path['resolve'](__dirname,_0xe729('0x26'),rs[_0xe729('0x27')](0x4)+_0xe729('0x77'));var _0x34b9e3;return aws[_0xe729('0x78')](_0x22bb6c,_0x3f04b0,_0x5d00b7,_0x1023be,_0x4eb3e8,_0x5500f8,_0x2f9135)[_0xe729('0x2a')](function(){_0x34b9e3=path['resolve'](__dirname,_0xe729('0x26'),rs[_0xe729('0x27')](0x4)+_0xe729('0x28'));return convertFile(_0x2f9135,_0x34b9e3);})[_0xe729('0x2a')](function(){try{fs[_0xe729('0x1e')](_0x2f9135);fs[_0xe729('0x3b')](_0x34b9e3,_0xe729('0x3a'));}catch(_0x343e0b){logger[_0xe729('0x16')](_0x343e0b);}return _0x34b9e3[_0xe729('0x2b')]('.')[0x0];});};exports[_0xe729('0x79')]=function(_0x2071ec,_0x271a05,_0x40bd7d,_0xc3ae72,_0x347d3e,_0x17ba38){return aws['lex'](_0x2071ec,_0x271a05,_0x40bd7d,_0xc3ae72,_0x347d3e,_0x17ba38)['then'](function(_0x2c8f2e){logger[_0xe729('0x1b')](JSON[_0xe729('0x41')](_0x2c8f2e));return _0x2c8f2e;});};exports[_0xe729('0x7a')]=function(_0x413431,_0x441da3,_0x7a75b3,_0x476b3c){var _0x3adc0f=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x413431,encodeURIComponent(_0x441da3),_0x7a75b3,_0x476b3c);var _0x246658=path[_0xe729('0x37')](__dirname,'tmp',rs[_0xe729('0x27')](0x4)+_0xe729('0x77'));var _0x18d8b1;return downloadFile(_0x3adc0f,_0x246658)['then'](function(){_0x18d8b1=path[_0xe729('0x37')](__dirname,_0xe729('0x26'),rs[_0xe729('0x27')](0x4)+_0xe729('0x28'));return convertFile(_0x246658,_0x18d8b1);})[_0xe729('0x2a')](function(){try{fs[_0xe729('0x1e')](_0x246658);fs[_0xe729('0x3b')](_0x18d8b1,_0xe729('0x3a'));}catch(_0x267d3b){logger[_0xe729('0x16')](_0x267d3b);}return _0x18d8b1[_0xe729('0x2b')]('.')[0x0];});};exports[_0xe729('0x7b')]=function(_0xc65f85,_0x5455be,_0x1efad6,_0x789c61){var _0x469459=util[_0xe729('0x7c')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x5455be,_0x1efad6,base64Encode(_0xc65f85),_0x789c61?util[_0xe729('0x7c')](_0xe729('0x7d'),encodeURIComponent(_0x789c61)):'freeform=3');return uploadFile(_0x469459)['then'](function(_0x5e29e3){return querystring['parse'](_0x5e29e3);});};exports[_0xe729('0x7e')]=function(_0x3695ae,_0x49de3c){return sestek[_0xe729('0x7f')](_0x3695ae,_0x49de3c)[_0xe729('0x2a')](function(_0x4b9ab0){logger[_0xe729('0x1b')](JSON['stringify'](_0x4b9ab0));var _0x36b10a={'speech':_0x4b9ab0[_0xe729('0x80')],'action':_0x4b9ab0[_0xe729('0x81')]?_0x4b9ab0[_0xe729('0x81')][_0xe729('0x82')]:undefined,'actiondata':_0x4b9ab0[_0xe729('0x81')]?_0x4b9ab0[_0xe729('0x81')][_0xe729('0x83')]:undefined};if(_0x4b9ab0[_0xe729('0x81')]&&_0x4b9ab0['channelData'][_0xe729('0x84')]){return base64Decode(_0x4b9ab0[_0xe729('0x81')][_0xe729('0x84')][_0xe729('0x85')],path[_0xe729('0x37')](__dirname,_0xe729('0x26'),rs[_0xe729('0x27')](0x4)+'.wav'))['then'](function(_0x4f221d){_0x36b10a[_0xe729('0x86')]=_0x4f221d;return _0x36b10a;});}return _0x36b10a;});};exports[_0xe729('0x87')]=function(){return __dirname;};
\ No newline at end of file
+var _0x95a2=['data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','base64','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','then','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','generic','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','uri','results','transcript','alternatives','join','confidence','googleASR\x20transcription','name','message','googleDialogflow','textRequest','result','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','path','querystring','randomstring','google-tts-api','url','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','finish\x20download\x20file','close','unlink','pipe','end','protocol','request\x20to\x20'];(function(_0x5bc0f9,_0x1de7b0){var _0x50c294=function(_0x14a9b9){while(--_0x14a9b9){_0x5bc0f9['push'](_0x5bc0f9['shift']());}};_0x50c294(++_0x1de7b0);}(_0x95a2,0x1e5));var _0x295a=function(_0x3df9dd,_0x26f5cd){_0x3df9dd=_0x3df9dd-0x0;var _0x4f11e4=_0x95a2[_0x3df9dd];return _0x4f11e4;};'use strict';var apiai=require(_0x295a('0x0'));var BPromise=require(_0x295a('0x1'));var dialogflow=require(_0x295a('0x2'));var fs=require('fs');var http=require(_0x295a('0x3'));var https=require(_0x295a('0x4'));var md5=require('md5');var path=require(_0x295a('0x5'));var querystring=require(_0x295a('0x6'));var rp=require('request-promise');var rs=require(_0x295a('0x7'));var sox=require('sox');var tts=require(_0x295a('0x8'));var urlParse=require(_0x295a('0x9'))[_0x295a('0xa')];var util=require(_0x295a('0xb'));var aws=require('./aws');var google=require(_0x295a('0xc'));var sestek=require(_0x295a('0xd'));var tilde=require(_0x295a('0xe'));var logger=require(_0x295a('0xf'))(_0x295a('0x10'));var ISPEECH_API=_0x295a('0x11');function downloadFile(_0x29964c,_0x28d5de){return new BPromise(function(_0x5f5104,_0x1b1234){var _0x5d62e4=urlParse(_0x29964c);var _0xf64ef1=_0x5d62e4['protocol']===_0x295a('0x12')?https:http;var _0x5873d9={'host':_0x5d62e4[_0x295a('0x13')],'path':_0x5d62e4[_0x295a('0x5')],'headers':{'user-agent':_0x295a('0x14')}};_0xf64ef1[_0x295a('0x15')](_0x5873d9,function(_0x346b08){if(_0x346b08[_0x295a('0x16')]!==0xc8){logger[_0x295a('0x17')]('request\x20to\x20'+_0x29964c+'\x20failed,\x20status\x20code\x20=\x20'+_0x346b08['statusCode']+'\x20('+_0x346b08['statusMessage']+')');_0x1b1234(new Error('request\x20to\x20'+_0x29964c+_0x295a('0x18')+_0x346b08[_0x295a('0x16')]+'\x20('+_0x346b08[_0x295a('0x19')]+')'));return;}var _0x1c3887=fs[_0x295a('0x1a')](_0x28d5de);_0x1c3887['on']('finish',function(){logger[_0x295a('0x1b')](_0x295a('0x1c'));_0x1c3887[_0x295a('0x1d')](_0x5f5104);});_0x1c3887['on'](_0x295a('0x17'),function(_0x132584){fs[_0x295a('0x1e')](_0x28d5de);logger['error']('download\x20error',_0x132584);_0x1b1234(_0x132584);});_0x346b08[_0x295a('0x1f')](_0x1c3887);})['on'](_0x295a('0x17'),function(_0x82095e){logger[_0x295a('0x17')](_0x82095e);_0x1b1234(_0x82095e);})[_0x295a('0x20')]();});}function uploadFile(_0x54ecfb){return new BPromise(function(_0x45f9dd,_0x351613){var _0x53597a=urlParse(_0x54ecfb);var _0x3810e8=_0x53597a[_0x295a('0x21')]===_0x295a('0x12')?https:http;var _0x2027be={'host':_0x53597a[_0x295a('0x13')],'path':_0x53597a['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x3810e8['get'](_0x2027be,function(_0xef4d53){if(_0xef4d53[_0x295a('0x16')]!==0xc8){_0x351613(new Error(_0x295a('0x22')+_0x54ecfb+'\x20failed,\x20status\x20code\x20=\x20'+_0xef4d53['statusCode']+'\x20('+_0xef4d53[_0x295a('0x19')]+')'));return;}var _0x3e03ea='';_0xef4d53['on'](_0x295a('0x23'),function(_0x4a09c3){_0x3e03ea+=_0x4a09c3;});_0xef4d53['on'](_0x295a('0x20'),function(){_0x45f9dd(_0x3e03ea);});})['on'](_0x295a('0x17'),function(_0xc3f056){_0x351613(_0xc3f056);})['end']();});}function convertFile(_0x1ab0c3,_0x49dd14){return new BPromise(function(_0xc19b4d,_0x39462d){var _0x1c0ba6=sox[_0x295a('0x24')](_0x1ab0c3,_0x49dd14,{'sampleRate':0x1f40,'format':_0x295a('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1c0ba6['on'](_0x295a('0x17'),function(_0x52f8cb){logger['error'](_0x295a('0x26'),_0x52f8cb);_0x39462d(_0x52f8cb);});_0x1c0ba6['on']('end',function(){logger[_0x295a('0x1b')](_0x295a('0x27'));_0xc19b4d();});_0x1c0ba6[_0x295a('0x28')]();});}function base64Decode(_0x52dca7,_0x3c9503){var _0x1763b4=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));fs['writeFileSync'](_0x1763b4,_0x52dca7,_0x295a('0x2d'));return convertFile(_0x1763b4,_0x3c9503)['then'](function(){try{fs[_0x295a('0x1e')](_0x1763b4);fs[_0x295a('0x2e')](_0x3c9503,_0x295a('0x2f'));}catch(_0x1f7813){logger['error'](_0x1f7813);}return _0x3c9503[_0x295a('0x30')]('.')[0x0];});}function base64Encode(_0x129dd7){var _0x449d8f=fs[_0x295a('0x31')](_0x129dd7);return new Buffer(_0x449d8f)[_0x295a('0x32')](_0x295a('0x2d'));}exports[_0x295a('0x33')]=function(_0x37063e,_0x39540b,_0x3233ee,_0x1bb33a,_0x3a6ae2,_0x246f4a){var _0x2281b1,_0xf05dec;var _0xab90ba=_0x295a('0x34');var _0x6e738=_0x295a('0x35')+_0x37063e;var _0x3ca374={};if(_0x39540b==='ssml'){_0x3ca374[_0x295a('0x36')]={'ssml':_0x3233ee};}else{_0x3ca374[_0x295a('0x36')]={'text':_0x3233ee};};_0x3ca374[_0x295a('0x37')]={'languageCode':_0x1bb33a,'ssmlGender':_0x3a6ae2};_0x3ca374[_0x295a('0x38')]={'audioEncoding':_0x295a('0x39'),'sampleRateHertz':0x1f40};var _0x3d846c={'url':_0xab90ba+_0x295a('0x3a')+_0x6e738,'method':_0x295a('0x3b'),'json':!![],'body':_0x3ca374};return rp(_0x3d846c)['then'](function(_0x1c0f93){return new BPromise(function(_0x2ece7e,_0x3559d9){_0x2281b1=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x3c'));var _0x3e1bec=Buffer[_0x295a('0x3d')](_0x1c0f93['audioContent'],_0x295a('0x2d'));return fs['writeFile'](_0x2281b1,_0x3e1bec,function(_0x269c5c){_0x3559d9(_0x269c5c);},function(_0x1ffb6c){fs[_0x295a('0x2e')](_0x2281b1,_0x295a('0x2f'));_0x2ece7e(_0x1ffb6c);});});})[_0x295a('0x3e')](function(_0x2dfa26){_0xf05dec=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0x2281b1,_0xf05dec);})[_0x295a('0x3e')](function(){try{fs[_0x295a('0x1e')](_0x2281b1);fs[_0x295a('0x2e')](_0xf05dec,_0x295a('0x2f'));}catch(_0x3244be){logger[_0x295a('0x17')](_0x3244be);}logger[_0x295a('0x1b')](_0x295a('0x3f'),_0xf05dec['split']('.')[0x0]);return _0xf05dec[_0x295a('0x30')]('.')[0x0];});};exports[_0x295a('0x40')]=function(_0x39dbbc,_0x577999){var _0x21d306=_0x295a('0x41');var _0xc4477a,_0x236fc8;var _0x86d977;var _0x59966c={'encoding':_0x295a('0x42'),'method':_0x295a('0x3b'),'timeout':0x2710,'url':_0x21d306,'headers':{'Content-Type':_0x295a('0x43')},'body':'f.req='+encodeURIComponent(JSON[_0x295a('0x44')]([[['jQ1olc',JSON[_0x295a('0x44')]([_0x39dbbc,_0x577999||'en',![],'null']),null,_0x295a('0x45')]]]))};return rp(_0x59966c)[_0x295a('0x3e')](function(_0x10d3bd){try{_0x86d977=eval(_0x10d3bd[_0x295a('0x46')](0x5))[0x0][0x2];}catch(_0x3d0adc){throw new Error(_0x295a('0x47')+_0x10d3bd[_0x295a('0x23')]);}if(!_0x86d977){if(_0x39dbbc['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x295a('0x48')+_0x577999+_0x295a('0x49'));}}try{_0x86d977=eval(_0x86d977)[0x0];}catch(_0xa5c442){throw new Error(_0x295a('0x47')+res[_0x295a('0x23')]);}const _0x1e447d=_0x86d977;_0xc4477a=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs['generate'](0x4)+_0x295a('0x3c'));fs['writeFileSync'](_0xc4477a,_0x86d977,{'encoding':_0x295a('0x2d')});_0x236fc8=path['resolve'](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0xc4477a,_0x236fc8);})['then'](function(){try{fs[_0x295a('0x1e')](_0xc4477a);fs[_0x295a('0x2e')](_0x236fc8,'777');}catch(_0x5e7dd4){logger[_0x295a('0x17')](_0x5e7dd4);}logger[_0x295a('0x1b')]('goggleTTS\x20path',_0x236fc8[_0x295a('0x30')]('.')[0x0]);return _0x236fc8['split']('.')[0x0];});};exports['googleASR']=function(_0x35d61f,_0x26842e,_0x34673f){return google['asr'](_0x35d61f,_0x26842e,_0x34673f)[_0x295a('0x3e')](function(_0x494d47){logger[_0x295a('0x1b')](_0x494d47[_0x295a('0x4a')]);return rp(_0x494d47);})[_0x295a('0x3e')](function(_0x12d54d){var _0x50138b='';var _0x2bb5fa=0x0;try{fs[_0x295a('0x1e')](_0x35d61f);}catch(_0x58ebb7){logger['error'](_0x58ebb7);}if(_0x12d54d&&_0x12d54d[_0x295a('0x4b')]){_0x50138b=_0x12d54d[_0x295a('0x4b')]['map'](function(_0x4057b6){return _0x4057b6&&_0x4057b6['alternatives'][0x0]&&_0x4057b6['alternatives'][0x0][_0x295a('0x4c')]?_0x4057b6[_0x295a('0x4d')][0x0][_0x295a('0x4c')]:'';})[_0x295a('0x4e')]('\x0a');_0x2bb5fa=_0x12d54d[_0x295a('0x4b')]['map'](function(_0x4706d4){return _0x4706d4&&_0x4706d4['alternatives'][0x0]&&_0x4706d4[_0x295a('0x4d')][0x0][_0x295a('0x4f')]?_0x4706d4[_0x295a('0x4d')][0x0]['confidence']:0x0;})[_0x295a('0x4e')]('\x0a');}logger[_0x295a('0x1b')](_0x295a('0x50'),_0x50138b);logger[_0x295a('0x1b')]('googleASR\x20confidence',_0x2bb5fa);return{'transcript':_0x50138b,'confidence':_0x2bb5fa};})['catch'](function(_0x38510e){logger[_0x295a('0x17')]('[%s]\x20%s:%s',_0x38510e[_0x295a('0x16')],_0x38510e[_0x295a('0x51')],_0x38510e[_0x295a('0x52')]);});};exports[_0x295a('0x53')]=function(_0x2b6bf3,_0x114cb8,_0x2b125c,_0x4a5427){var _0xecff28=apiai(_0x114cb8,{'language':_0x4a5427||'en'});return _0xecff28[_0x295a('0x54')](_0x2b125c,{'sessionId':md5(_0x2b6bf3)})['then'](function(_0x4f41f7){logger['info'](JSON[_0x295a('0x44')](_0x4f41f7));return{'source':_0x4f41f7[_0x295a('0x55')]['source'],'resolvedQuery':_0x4f41f7[_0x295a('0x55')]['resolvedQuery'],'action':_0x4f41f7[_0x295a('0x55')][_0x295a('0x56')],'actionIncomplete':_0x4f41f7[_0x295a('0x55')][_0x295a('0x57')],'speech':_0x4f41f7[_0x295a('0x55')][_0x295a('0x58')][_0x295a('0x59')],'score':_0x4f41f7[_0x295a('0x55')][_0x295a('0x5a')],'statusCode':_0x4f41f7[_0x295a('0x5b')][_0x295a('0x5c')],'endConversation':_0x4f41f7[_0x295a('0x55')][_0x295a('0x5d')]['endConversation']||![],'isFallbackIntent':_0x4f41f7['result'][_0x295a('0x5d')][_0x295a('0x5e')]};});};exports[_0x295a('0x5f')]=function(_0x5a5c2a,_0x1778b9,_0x4b6088,_0x213cc9,_0x13549a,_0x9d096b){var _0x27a7f1=_0x213cc9[_0x295a('0x60')](/\\n/g,'\x0a');var _0x56afe7={'credentials':{'private_key':_0x27a7f1,'client_email':_0x4b6088}};var _0x5f13a9=new dialogflow[(_0x295a('0x61'))](_0x56afe7);var _0x321028=_0x5f13a9[_0x295a('0x62')](_0x1778b9,md5(_0x5a5c2a));var _0x2cfe08={'session':_0x321028,'queryInput':{'text':{'text':_0x13549a,'languageCode':_0x9d096b}}};return _0x5f13a9['detectIntent'](_0x2cfe08)[_0x295a('0x3e')](function(_0x5c7c7b){if(_0x5c7c7b&&_0x5c7c7b['length']){logger[_0x295a('0x1b')]('Dialogflow\x20V2\x20response:',JSON[_0x295a('0x44')](_0x5c7c7b));var _0x26b89b=_0x5c7c7b[0x0];if(_0x26b89b){var _0x378077={'action':_0x26b89b['queryResult']['action'],'allRequiredParamsPresent':_0x26b89b[_0x295a('0x63')][_0x295a('0x64')],'endConversation':_0x26b89b[_0x295a('0x63')]['diagnosticInfo']&&_0x26b89b['queryResult'][_0x295a('0x65')]['fields']?_0x26b89b[_0x295a('0x63')]['diagnosticInfo'][_0x295a('0x66')][_0x295a('0x67')][_0x295a('0x68')]:![],'fulfillmentText':_0x26b89b[_0x295a('0x63')][_0x295a('0x69')],'intentName':_0x26b89b[_0x295a('0x63')][_0x295a('0x6a')][_0x295a('0x51')],'intentDisplayName':_0x26b89b['queryResult'][_0x295a('0x6a')][_0x295a('0x6b')],'isFallbackIntent':_0x26b89b[_0x295a('0x63')][_0x295a('0x6a')][_0x295a('0x6c')],'languageCode':_0x26b89b[_0x295a('0x63')]['languageCode'],'queryText':_0x26b89b[_0x295a('0x63')]['queryText'],'responseId':_0x26b89b[_0x295a('0x6d')],'score':_0x26b89b['queryResult'][_0x295a('0x6e')],'speech':_0x26b89b[_0x295a('0x63')][_0x295a('0x69')],'providerResponse':JSON[_0x295a('0x44')](_0x5c7c7b)};return _0x378077;}}});};exports[_0x295a('0x6f')]=function(_0x3a83b9,_0x1a3cf7,_0x372331,_0x145978){return tilde['asr'](_0x3a83b9,_0x1a3cf7,_0x372331,_0x145978)[_0x295a('0x3e')](function(_0x47fc2b){try{fs[_0x295a('0x1e')](_0x3a83b9);}catch(_0x2f649e){logger[_0x295a('0x17')](_0x2f649e);}logger[_0x295a('0x1b')](_0x295a('0x70'),_0x47fc2b['transcript']);logger[_0x295a('0x1b')](_0x295a('0x71'),_0x47fc2b[_0x295a('0x4f')]);return _0x47fc2b;});};exports[_0x295a('0x72')]=function(_0x5c7f66,_0x340818,_0x1e561f,_0x5900ae,_0x6f8f74,_0x2a3d58){var _0x255de9=path['resolve'](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+'.mp3');var _0x340935;return aws[_0x295a('0x73')](_0x5c7f66,_0x340818,_0x1e561f,_0x5900ae,_0x6f8f74,_0x2a3d58,_0x255de9)[_0x295a('0x3e')](function(){_0x340935=path['resolve'](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0x255de9,_0x340935);})[_0x295a('0x3e')](function(){try{fs[_0x295a('0x1e')](_0x255de9);fs[_0x295a('0x2e')](_0x340935,_0x295a('0x2f'));}catch(_0x35924b){logger[_0x295a('0x17')](_0x35924b);}return _0x340935[_0x295a('0x30')]('.')[0x0];});};exports['awsLex']=function(_0x3653fe,_0x85440c,_0x1ab638,_0x151745,_0x5689e6,_0x142acc){return aws['lex'](_0x3653fe,_0x85440c,_0x1ab638,_0x151745,_0x5689e6,_0x142acc)[_0x295a('0x3e')](function(_0x17f2d9){logger[_0x295a('0x1b')](JSON['stringify'](_0x17f2d9));return _0x17f2d9;});};exports['ispeechTTS']=function(_0x5824d4,_0x590106,_0x12919a,_0x53c455){var _0xb60035=util[_0x295a('0x74')](_0x295a('0x75'),ISPEECH_API,_0x5824d4,encodeURIComponent(_0x590106),_0x12919a,_0x53c455);var _0x4b46a5=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x3c'));var _0x4ff14b;return downloadFile(_0xb60035,_0x4b46a5)['then'](function(){_0x4ff14b=path[_0x295a('0x29')](__dirname,'tmp',rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0x4b46a5,_0x4ff14b);})[_0x295a('0x3e')](function(){try{fs[_0x295a('0x1e')](_0x4b46a5);fs[_0x295a('0x2e')](_0x4ff14b,'777');}catch(_0x10d802){logger[_0x295a('0x17')](_0x10d802);}return _0x4ff14b[_0x295a('0x30')]('.')[0x0];});};exports[_0x295a('0x76')]=function(_0xc9278c,_0x2790f2,_0x41320e,_0x32b0da){var _0x134db3=util[_0x295a('0x74')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x2790f2,_0x41320e,base64Encode(_0xc9278c),_0x32b0da?util['format'](_0x295a('0x77'),encodeURIComponent(_0x32b0da)):_0x295a('0x78'));return uploadFile(_0x134db3)[_0x295a('0x3e')](function(_0x82a221){return querystring[_0x295a('0xa')](_0x82a221);});};exports[_0x295a('0x79')]=function(_0x20034f,_0x217b5f){return sestek[_0x295a('0x7a')](_0x20034f,_0x217b5f)[_0x295a('0x3e')](function(_0x227555){logger['info'](JSON[_0x295a('0x44')](_0x227555));var _0x379543={'speech':_0x227555[_0x295a('0x7b')],'action':_0x227555[_0x295a('0x7c')]?_0x227555[_0x295a('0x7c')][_0x295a('0x7d')]:undefined,'actiondata':_0x227555[_0x295a('0x7c')]?_0x227555[_0x295a('0x7c')][_0x295a('0x7e')]:undefined};if(_0x227555[_0x295a('0x7c')]&&_0x227555[_0x295a('0x7c')][_0x295a('0x7f')]){return base64Decode(_0x227555[_0x295a('0x7c')][_0x295a('0x7f')]['Data'],path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c')))[_0x295a('0x3e')](function(_0x5ea5c7){_0x379543[_0x295a('0x80')]=_0x5ea5c7;return _0x379543;});}return _0x379543;});};exports[_0x295a('0x81')]=function(){return __dirname;};
\ No newline at end of file
index 8b678b3..5fe3ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bc7=['exports'];(function(_0x4edc89,_0x39e685){var _0x59631c=function(_0x5d0296){while(--_0x5d0296){_0x4edc89['push'](_0x4edc89['shift']());}};_0x59631c(++_0x39e685);}(_0x8bc7,0x191));var _0x78bc=function(_0x3a12a6,_0x696426){_0x3a12a6=_0x3a12a6-0x0;var _0x19f127=_0x8bc7[_0x3a12a6];return _0x19f127;};var nda=require('./nda');module[_0x78bc('0x0')]={'nda':nda};
\ No newline at end of file
+var _0x1a3d=['./nda','exports'];(function(_0x38ba59,_0x38df8c){var _0x42ae76=function(_0xbf2780){while(--_0xbf2780){_0x38ba59['push'](_0x38ba59['shift']());}};_0x42ae76(++_0x38df8c);}(_0x1a3d,0x13e));var _0xd1a3=function(_0x4c18d4,_0x53a169){_0x4c18d4=_0x4c18d4-0x0;var _0x34a4ba=_0x1a3d[_0x4c18d4];return _0x34a4ba;};var nda=require(_0xd1a3('0x0'));module[_0xd1a3('0x1')]={'nda':nda};
\ No newline at end of file
index 3cc7ce2..787e136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2c=['channelData','CustomActionData','custom_action_data','request-promise','url','../../../../../config/logger','agi','exports','resolve','ndauth_url','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid','callerid','extension','text','Bearer\x20','access_token','project','body','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action'];(function(_0x23e337,_0x1e3c57){var _0x45facf=function(_0x2abfa3){while(--_0x2abfa3){_0x23e337['push'](_0x23e337['shift']());}};_0x45facf(++_0x1e3c57);}(_0xde2c,0x7f));var _0xcde2=function(_0x3ec122,_0x55150a){_0x3ec122=_0x3ec122-0x0;var _0x4ecf41=_0xde2c[_0x3ec122];return _0x4ecf41;};'use strict';var rp=require(_0xcde2('0x0'));var url=require(_0xcde2('0x1'));var logger=require(_0xcde2('0x2'))(_0xcde2('0x3'));module[_0xcde2('0x4')]=function(_0x40fa0a,_0x33bb0c){var _0x3a309f={'method':'POST','uri':url[_0xcde2('0x5')](_0x33bb0c[_0xcde2('0x6')],_0xcde2('0x7')),'form':{'grant_type':_0xcde2('0x8'),'username':_0x33bb0c[_0xcde2('0x9')],'password':_0x33bb0c['password']},'json':!![]};return rp(_0x3a309f)[_0xcde2('0xa')](function(_0x385e83){var _0x9c7036={'method':'POST','uri':url['resolve'](_0x33bb0c[_0xcde2('0xb')],_0xcde2('0xc')),'body':{'type':_0x33bb0c['ndaactivity_type']||_0xcde2('0xd'),'channelId':_0xcde2('0xe'),'conversation':{'id':_0x40fa0a[_0xcde2('0xf')]},'from':{'id':_0x40fa0a[_0xcde2('0x10')],'name':_0x40fa0a['calleridname']},'recipient':{'id':_0x40fa0a['dnid'],'name':_0x40fa0a[_0xcde2('0x11')]},'text':_0x33bb0c[_0xcde2('0x12')],'channelData':{}},'headers':{'Authorization':_0xcde2('0x13')+_0x385e83[_0xcde2('0x14')]},'json':!![]};if(_0x33bb0c[_0xcde2('0x15')]){_0x9c7036[_0xcde2('0x16')]['channelData'][_0xcde2('0x17')]=_0x33bb0c['project'];}if(_0x33bb0c[_0xcde2('0x18')]=='1'){_0x9c7036['body']['channelData'][_0xcde2('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xcde2('0x1a')};}if(_0x33bb0c[_0xcde2('0x1b')]){_0x9c7036[_0xcde2('0x16')][_0xcde2('0x1c')]['CustomAction']=_0x33bb0c[_0xcde2('0x1b')];if(_0x33bb0c['custom_action_data']){_0x9c7036[_0xcde2('0x16')][_0xcde2('0x1c')][_0xcde2('0x1d')]=_0x33bb0c[_0xcde2('0x1e')];}}logger['info'](JSON['stringify'](_0x9c7036));return rp(_0x9c7036);});};
\ No newline at end of file
+var _0x2621=['message','uniqueid','callerid','extension','text','Bearer\x20','access_token','project','body','ProjectName','ndagenerate_audio','channelData','AudioOutputSettings','custom_action','CustomActionData','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run'];(function(_0x57bd27,_0x2d45d6){var _0x55d683=function(_0x31ac1d){while(--_0x31ac1d){_0x57bd27['push'](_0x57bd27['shift']());}};_0x55d683(++_0x2d45d6);}(_0x2621,0x1d2));var _0x1262=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2621[_0x14add3];return _0x4a174f;};'use strict';var rp=require(_0x1262('0x0'));var url=require(_0x1262('0x1'));var logger=require(_0x1262('0x2'))(_0x1262('0x3'));module[_0x1262('0x4')]=function(_0x44878a,_0x2dfe65){var _0xbabce3={'method':_0x1262('0x5'),'uri':url[_0x1262('0x6')](_0x2dfe65[_0x1262('0x7')],_0x1262('0x8')),'form':{'grant_type':_0x1262('0x9'),'username':_0x2dfe65[_0x1262('0xa')],'password':_0x2dfe65['password']},'json':!![]};return rp(_0xbabce3)[_0x1262('0xb')](function(_0x52af34){var _0xaa3c86={'method':'POST','uri':url[_0x1262('0x6')](_0x2dfe65[_0x1262('0xc')],_0x1262('0xd')),'body':{'type':_0x2dfe65['ndaactivity_type']||_0x1262('0xe'),'channelId':'Nda','conversation':{'id':_0x44878a[_0x1262('0xf')]},'from':{'id':_0x44878a[_0x1262('0x10')],'name':_0x44878a['calleridname']},'recipient':{'id':_0x44878a['dnid'],'name':_0x44878a[_0x1262('0x11')]},'text':_0x2dfe65[_0x1262('0x12')],'channelData':{}},'headers':{'Authorization':_0x1262('0x13')+_0x52af34[_0x1262('0x14')]},'json':!![]};if(_0x2dfe65[_0x1262('0x15')]){_0xaa3c86[_0x1262('0x16')]['channelData'][_0x1262('0x17')]=_0x2dfe65[_0x1262('0x15')];}if(_0x2dfe65[_0x1262('0x18')]=='1'){_0xaa3c86['body'][_0x1262('0x19')][_0x1262('0x1a')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x2dfe65['custom_action']){_0xaa3c86[_0x1262('0x16')][_0x1262('0x19')]['CustomAction']=_0x2dfe65[_0x1262('0x1b')];if(_0x2dfe65['custom_action_data']){_0xaa3c86[_0x1262('0x16')][_0x1262('0x19')][_0x1262('0x1c')]=_0x2dfe65[_0x1262('0x1d')];}}logger[_0x1262('0x1e')](JSON[_0x1262('0x1f')](_0xaa3c86));return rp(_0xaa3c86);});};
\ No newline at end of file
index 5873175..acd8caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ea2=['./lib/api','exports'];(function(_0x56d3bb,_0x3abd86){var _0x3106e5=function(_0x208dd1){while(--_0x208dd1){_0x56d3bb['push'](_0x56d3bb['shift']());}};_0x3106e5(++_0x3abd86);}(_0x6ea2,0xce));var _0x26ea=function(_0x142222,_0x36ef07){_0x142222=_0x142222-0x0;var _0x50ba6e=_0x6ea2[_0x142222];return _0x50ba6e;};'use strict';var asr=require(_0x26ea('0x0'));module[_0x26ea('0x1')]=function(_0x680181,_0x279627,_0x25fdee,_0x53bba3){return asr(_0x680181,_0x279627,_0x25fdee,_0x53bba3);};
\ No newline at end of file
+var _0xbb04=['exports','./lib/api'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xbb04,0x187));var _0x4bb0=function(_0x3240f1,_0x470595){_0x3240f1=_0x3240f1-0x0;var _0x504609=_0xbb04[_0x3240f1];return _0x504609;};'use strict';var asr=require(_0x4bb0('0x0'));module[_0x4bb0('0x1')]=function(_0x435d7f,_0x3c57aa,_0x5d9c59,_0x6a87bd){return asr(_0x435d7f,_0x3c57aa,_0x5d9c59,_0x6a87bd);};
\ No newline at end of file
index 20a5698..ba34e3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fb7=['Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','data','error','terminate','parse','status','result','final','hypotheses','transcript','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','close','lodash','moment','crypto','../../../../../../config/logger','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','sha1','update','digest','hex'];(function(_0x79ed2f,_0x18a5fc){var _0x421792=function(_0x1869ca){while(--_0x1869ca){_0x79ed2f['push'](_0x79ed2f['shift']());}};_0x421792(++_0x18a5fc);}(_0x7fb7,0x11c));var _0x77fb=function(_0x3186aa,_0x34c21e){_0x3186aa=_0x3186aa-0x0;var _0x2d8c36=_0x7fb7[_0x3186aa];return _0x2d8c36;};'use strict';var BPromise=require('bluebird');var _=require(_0x77fb('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x77fb('0x1'));var crypto=require(_0x77fb('0x2'));var logger=require(_0x77fb('0x3'))('agi');module[_0x77fb('0x4')]=function(_0x445b86,_0x4dc8c2,_0x4de2f2,_0x243583){return new BPromise(function(_0x2fe69d,_0x19d1fc){logger[_0x77fb('0x5')](_0x77fb('0x6'),_0x243583||_0x77fb('0x7'));var _0x2dc117=new WebSocket(_0x243583||_0x77fb('0x7'),{'perMessageDeflate':![]});var _0x2e897c='';var _0x3073a8='0';var _0x9ff89c='1';var _0x38747c='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x10f802(_0x3c5ba0){var _0x5406a8=crypto['createHash'](_0x77fb('0x8'));_0x5406a8[_0x77fb('0x9')](_0x3c5ba0);return _0x5406a8[_0x77fb('0xa')](_0x77fb('0xb'));}function _0x4f951c(){try{logger[_0x77fb('0x5')](_0x77fb('0xc'));var _0x1773ae=moment()[_0x77fb('0xd')]();var _0x17dad8=_0x10f802(_0x1773ae+_0x4dc8c2+_0x4de2f2);_0x2dc117[_0x77fb('0xe')](JSON[_0x77fb('0xf')]({'appID':_0x4dc8c2,'timestamp':_0x1773ae,'appKey':_0x17dad8}));var _0xfaf930=fs['createReadStream'](_0x445b86);_0xfaf930['on'](_0x77fb('0x10'),function(_0x1c8ad9){_0x2dc117[_0x77fb('0xe')](_0x1c8ad9);});_0xfaf930['on']('close',function(){_0x2dc117[_0x77fb('0xe')]('EOS');});}catch(_0x45d8a1){logger[_0x77fb('0x11')]('Tilde\x20ASR\x20send\x20error',JSON[_0x77fb('0xf')](_0x45d8a1));_0x2dc117[_0x77fb('0x12')]();}}function _0x33e318(_0x5ec5f5){try{if(_0x5ec5f5){var _0x399ec0=JSON[_0x77fb('0x13')](_0x5ec5f5);switch(_0x399ec0[_0x77fb('0x14')]){case 0x0:if(_0x399ec0[_0x77fb('0x15')]){if(_0x399ec0[_0x77fb('0x15')][_0x77fb('0x16')]){logger[_0x77fb('0x5')]('Tilde\x20ASR\x20hypoteses',JSON[_0x77fb('0xf')](_0x399ec0[_0x77fb('0x15')][_0x77fb('0x17')]));_0x2e897c=_0x399ec0[_0x77fb('0x15')][_0x77fb('0x17')][0x0][_0x77fb('0x18')];_0x3073a8=_0x399ec0['result']['hypotheses'][0x0]['likelihood'];_0x9ff89c='0';_0x38747c='Success.';_0x2dc117[_0x77fb('0x12')]();}}break;case 0x1:logger[_0x77fb('0x5')](_0x77fb('0x19'));_0x9ff89c='1';_0x38747c=_0x77fb('0x19');break;case 0x2:logger[_0x77fb('0x5')](_0x77fb('0x1a'));_0x9ff89c='2';_0x38747c=_0x77fb('0x1a');break;case 0x9:logger['info'](_0x77fb('0x1b'));_0x9ff89c='9';_0x38747c=_0x77fb('0x1b');break;case 0xa:logger['info'](_0x77fb('0x1c'));_0x9ff89c='10';_0x38747c=_0x77fb('0x1c');break;case 0xb:logger['info'](_0x77fb('0x1d'));_0x9ff89c='11';_0x38747c=_0x77fb('0x1d');}}}catch(_0x4b5fd5){logger[_0x77fb('0x11')](_0x77fb('0x1e'),JSON[_0x77fb('0xf')](_0x4b5fd5));_0x2dc117[_0x77fb('0x12')]();}}function _0x5b28f3(){logger['info']('Close\x20Tilde\x20ASR\x20socket');_0x2fe69d({'transcript':_0x2e897c,'confidence':_0x3073a8,'status':_0x9ff89c,'status_message':_0x38747c});}function _0x308c1a(_0x2e7289){logger[_0x77fb('0x11')](_0x77fb('0x1f'));if(!_[_0x77fb('0x20')](_0x2e7289)){logger[_0x77fb('0x11')](_[_0x77fb('0x21')](_0x2e7289)?JSON[_0x77fb('0xf')](_0x2e7289):_0x2e7289);}}_0x2dc117['on'](_0x77fb('0x22'),_0x4f951c);_0x2dc117['on'](_0x77fb('0x23'),_0x33e318);_0x2dc117['on'](_0x77fb('0x24'),_0x5b28f3);_0x2dc117['on'](_0x77fb('0x11'),_0x308c1a);});};
\ No newline at end of file
+var _0x22ab=['open','message','close','bluebird','lodash','../../../../../../config/logger','exports','info','Tilde\x20URI','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','unix','send','createReadStream','data','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','final','stringify','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject'];(function(_0x5e7bd4,_0x1654a6){var _0x423400=function(_0x5db00a){while(--_0x5db00a){_0x5e7bd4['push'](_0x5e7bd4['shift']());}};_0x423400(++_0x1654a6);}(_0x22ab,0x1a5));var _0xb22a=function(_0x5c25f7,_0x3a69dc){_0x5c25f7=_0x5c25f7-0x0;var _0x1d51d1=_0x22ab[_0x5c25f7];return _0x1d51d1;};'use strict';var BPromise=require(_0xb22a('0x0'));var _=require(_0xb22a('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require('crypto');var logger=require(_0xb22a('0x2'))('agi');module[_0xb22a('0x3')]=function(_0x39760b,_0x1763a2,_0x271791,_0x54e3d8){return new BPromise(function(_0x2158b2,_0xe12964){logger[_0xb22a('0x4')](_0xb22a('0x5'),_0x54e3d8||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x503903=new WebSocket(_0x54e3d8||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x573fe5='';var _0x1e7a88='0';var _0x19bd71='1';var _0x15d1e0=_0xb22a('0x6');function _0x31d939(_0x267331){var _0x39f960=crypto[_0xb22a('0x7')](_0xb22a('0x8'));_0x39f960[_0xb22a('0x9')](_0x267331);return _0x39f960[_0xb22a('0xa')]('hex');}function _0x512d45(){try{logger[_0xb22a('0x4')]('Open\x20Tilde\x20ASR\x20socket');var _0x3a7f23=moment()[_0xb22a('0xb')]();var _0x292cd6=_0x31d939(_0x3a7f23+_0x1763a2+_0x271791);_0x503903[_0xb22a('0xc')](JSON['stringify']({'appID':_0x1763a2,'timestamp':_0x3a7f23,'appKey':_0x292cd6}));var _0x3512ce=fs[_0xb22a('0xd')](_0x39760b);_0x3512ce['on'](_0xb22a('0xe'),function(_0xd34ed3){_0x503903['send'](_0xd34ed3);});_0x3512ce['on']('close',function(){_0x503903[_0xb22a('0xc')](_0xb22a('0xf'));});}catch(_0x2d8abf){logger[_0xb22a('0x10')](_0xb22a('0x11'),JSON['stringify'](_0x2d8abf));_0x503903[_0xb22a('0x12')]();}}function _0x1f5ea8(_0x3817db){try{if(_0x3817db){var _0x588b27=JSON['parse'](_0x3817db);switch(_0x588b27[_0xb22a('0x13')]){case 0x0:if(_0x588b27['result']){if(_0x588b27[_0xb22a('0x14')][_0xb22a('0x15')]){logger[_0xb22a('0x4')]('Tilde\x20ASR\x20hypoteses',JSON[_0xb22a('0x16')](_0x588b27['result'][_0xb22a('0x17')]));_0x573fe5=_0x588b27[_0xb22a('0x14')][_0xb22a('0x17')][0x0][_0xb22a('0x18')];_0x1e7a88=_0x588b27[_0xb22a('0x14')][_0xb22a('0x17')][0x0]['likelihood'];_0x19bd71='0';_0x15d1e0=_0xb22a('0x19');_0x503903[_0xb22a('0x12')]();}}break;case 0x1:logger[_0xb22a('0x4')](_0xb22a('0x6'));_0x19bd71='1';_0x15d1e0=_0xb22a('0x6');break;case 0x2:logger['info'](_0xb22a('0x1a'));_0x19bd71='2';_0x15d1e0=_0xb22a('0x1a');break;case 0x9:logger[_0xb22a('0x4')](_0xb22a('0x1b'));_0x19bd71='9';_0x15d1e0=_0xb22a('0x1b');break;case 0xa:logger[_0xb22a('0x4')](_0xb22a('0x1c'));_0x19bd71='10';_0x15d1e0=_0xb22a('0x1c');break;case 0xb:logger[_0xb22a('0x4')](_0xb22a('0x1d'));_0x19bd71='11';_0x15d1e0=_0xb22a('0x1d');}}}catch(_0x5120c8){logger[_0xb22a('0x10')](_0xb22a('0x1e'),JSON['stringify'](_0x5120c8));_0x503903[_0xb22a('0x12')]();}}function _0x2c82b5(){logger[_0xb22a('0x4')](_0xb22a('0x1f'));_0x2158b2({'transcript':_0x573fe5,'confidence':_0x1e7a88,'status':_0x19bd71,'status_message':_0x15d1e0});}function _0x4a3da5(_0x13cfc7){logger[_0xb22a('0x10')](_0xb22a('0x20'));if(!_[_0xb22a('0x21')](_0x13cfc7)){logger[_0xb22a('0x10')](_[_0xb22a('0x22')](_0x13cfc7)?JSON['stringify'](_0x13cfc7):_0x13cfc7);}}_0x503903['on'](_0xb22a('0x23'),_0x512d45);_0x503903['on'](_0xb22a('0x24'),_0x1f5ea8);_0x503903['on'](_0xb22a('0x25'),_0x2c82b5);_0x503903['on'](_0xb22a('0x10'),_0x4a3da5);});};
\ No newline at end of file
index 85135e4..1d13c3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf060=['exports','./asr'];(function(_0x1d17e4,_0x55d54f){var _0x5556b0=function(_0x1c3bb7){while(--_0x1c3bb7){_0x1d17e4['push'](_0x1d17e4['shift']());}};_0x5556b0(++_0x55d54f);}(_0xf060,0x1a3));var _0x0f06=function(_0x280cb6,_0x4b92fa){_0x280cb6=_0x280cb6-0x0;var _0xbaf53=_0xf060[_0x280cb6];return _0xbaf53;};var asr=require(_0x0f06('0x0'));module[_0x0f06('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x65d0=['exports','./asr'];(function(_0x2684ab,_0x3a86c3){var _0x11a08b=function(_0x3420ce){while(--_0x3420ce){_0x2684ab['push'](_0x2684ab['shift']());}};_0x11a08b(++_0x3a86c3);}(_0x65d0,0x1b5));var _0x065d=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x65d0[_0x178e48];return _0x440d7e;};var asr=require(_0x065d('0x0'));module[_0x065d('0x1')]={'asr':asr};
\ No newline at end of file
index af1e3aa..098a4d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0583=['E_AGI_SERVER_ERROR','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','nextTick','inherits','exports','util','events','./error','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','listen','listening','connection','getConnections'];(function(_0x1ae491,_0x5b83b9){var _0x4958a5=function(_0xf0f364){while(--_0xf0f364){_0x1ae491['push'](_0x1ae491['shift']());}};_0x4958a5(++_0x5b83b9);}(_0x0583,0x1ad));var _0x3058=function(_0x242362,_0x1df5bc){_0x242362=_0x242362-0x0;var _0x162d3c=_0x0583[_0x242362];return _0x162d3c;};'use strict';var util=require(_0x3058('0x0'));var net=require('net');var EventEmitter=require(_0x3058('0x1'))['EventEmitter'];var AGIError=require(_0x3058('0x2'));var AGIChannel=require('./channel');var AGIServer=function(_0x17b76e,_0x2ecaf1,_0x1074e0){var _0x485877=this,_0x17b76e=_0x17b76e||0x11dd,_0x2ecaf1=_0x2ecaf1||_0x3058('0x3'),_0x188bde=null,_0x111e3c=0x0;EventEmitter[_0x3058('0x4')](_0x485877);function _0x3c281f(){if(!_0x17b76e){_0x485877[_0x3058('0x5')](_0x3058('0x6'),new AGIError(_0x3058('0x7')));return![];}_0x188bde=net['createServer']();_0x188bde[_0x3058('0x8')](_0x17b76e,_0x2ecaf1);_0x188bde['on'](_0x3058('0x9'),function(){_0x485877['emit']('listening');});_0x188bde['on'](_0x3058('0xa'),function(_0x583f8d){_0x188bde[_0x3058('0xb')](function(_0x325138,_0x1a9d5c){if(_0x325138){_0x485877[_0x3058('0x5')]('error',new AGIError(_0x3058('0xc'),_0x325138));}else if(_0x1074e0&&_0x1074e0<0x0){_0x485877[_0x3058('0x5')](_0x3058('0x6'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x583f8d[_0x3058('0xd')]();}else if(_0x1074e0&&_0x1074e0>0x0&&_0x1074e0<_0x1a9d5c){_0x111e3c+=0x1;_0x485877[_0x3058('0x5')](_0x3058('0x6'),new AGIError(_0x3058('0xe'),_0x111e3c));_0x583f8d[_0x3058('0xd')]();}else{var _0x201a42=new AGIChannel(_0x583f8d);_0x201a42['on'](_0x3058('0xf'),function(){_0x485877[_0x3058('0x5')]('connection',_0x201a42);});}});});_0x188bde['on'](_0x3058('0x6'),function(_0x51c784){_0x485877['emit'](_0x3058('0x6'),new AGIError(_0x3058('0xc'),_0x51c784[_0x3058('0x10')]));});_0x188bde['on'](_0x3058('0x11'),function(){_0x485877['emit']('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x3058('0x12')](function(){_0x3c281f();});};util[_0x3058('0x13')](AGIServer,EventEmitter);module[_0x3058('0x14')]=function(_0x3386a6,_0x2db71a,_0x27bd23){return new AGIServer(_0x3386a6,_0x2db71a,_0x27bd23);};
\ No newline at end of file
+var _0xe71a=['listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','events','EventEmitter','./error','./channel','emit','error','E_AGI_ARGUMENT_PORT','createServer'];(function(_0x2d8802,_0x239ae9){var _0x29c6a6=function(_0x2775fb){while(--_0x2775fb){_0x2d8802['push'](_0x2d8802['shift']());}};_0x29c6a6(++_0x239ae9);}(_0xe71a,0x1b8));var _0xae71=function(_0x2728e2,_0x35a369){_0x2728e2=_0x2728e2-0x0;var _0x25098e=_0xe71a[_0x2728e2];return _0x25098e;};'use strict';var util=require(_0xae71('0x0'));var net=require(_0xae71('0x1'));var EventEmitter=require(_0xae71('0x2'))[_0xae71('0x3')];var AGIError=require(_0xae71('0x4'));var AGIChannel=require(_0xae71('0x5'));var AGIServer=function(_0x2aa249,_0x59c4ba,_0x4e7957){var _0xd14fec=this,_0x2aa249=_0x2aa249||0x11dd,_0x59c4ba=_0x59c4ba||'127.0.0.1',_0x4b68dc=null,_0x4b9c55=0x0;EventEmitter['call'](_0xd14fec);function _0x205414(){if(!_0x2aa249){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0x8')));return![];}_0x4b68dc=net[_0xae71('0x9')]();_0x4b68dc[_0xae71('0xa')](_0x2aa249,_0x59c4ba);_0x4b68dc['on'](_0xae71('0xb'),function(){_0xd14fec['emit'](_0xae71('0xb'));});_0x4b68dc['on'](_0xae71('0xc'),function(_0x641d31){_0x4b68dc[_0xae71('0xd')](function(_0x1e049a,_0x4651dc){if(_0x1e049a){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0xe'),_0x1e049a));}else if(_0x4e7957&&_0x4e7957<0x0){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0xf')));_0x641d31[_0xae71('0x10')]();}else if(_0x4e7957&&_0x4e7957>0x0&&_0x4e7957<_0x4651dc){_0x4b9c55+=0x1;_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0x11'),_0x4b9c55));_0x641d31[_0xae71('0x10')]();}else{var _0x211196=new AGIChannel(_0x641d31);_0x211196['on'](_0xae71('0x12'),function(){_0xd14fec[_0xae71('0x6')]('connection',_0x211196);});}});});_0x4b68dc['on'](_0xae71('0x7'),function(_0x597f6d){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0xe'),_0x597f6d[_0xae71('0x13')]));});_0x4b68dc['on'](_0xae71('0x14'),function(){_0xd14fec[_0xae71('0x6')](_0xae71('0x14'),new AGIError(_0xae71('0x15')));});}process[_0xae71('0x16')](function(){_0x205414();});};util[_0xae71('0x17')](AGIServer,EventEmitter);module[_0xae71('0x18')]=function(_0x301b74,_0x4ea5f2,_0x4a7089){return new AGIServer(_0x301b74,_0x4ea5f2,_0x4a7089);};
\ No newline at end of file
index e738d85..ba12a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93c6=['format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','agicommand','callerid','createSquareRecording','uniqueid','calleridname','context','priority','accountcode','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','random','lastName','isNil','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','callback_priority','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','restAPI','method','timeout','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','appid','appsecret','uri','clone','hasOwnProperty','replaceAllVariables','recursiveNodeIndex','isPlainObject','length','saveRestApiResult','%s.%s','isArray','setVariable','replaceObjectAllVariables','split','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','wait','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','sestektts','lumenvoxasr','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','url','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20client_email\x20configured','private_key','no\x20private_key\x20configured','dialogflowV2_language','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','toString','test','mindigit','no\x20variable\x20found','hiddendigitsnum','generate','hiddendigitspos','substr','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','unlink','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','tildeASR','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','true','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','math','Enter\x20in\x20MATH\x20(%s)\x20block','math\x20%s','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','no\x20find\x20by\x20configured','getPause','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','sayNumber','sayphonetic','sayPhonetic','sendMail','account_id','no\x20mail\x20account\x20configured','Smtp','email','bcc','service','host','port','secure','authentication','pass','template_id','debug','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','START\x20CALLY\x20SQUARE','yes','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','mailbox','VOICEMAIL','vswitch','no\x20variable\x20selected','join','exports','util','shelljs','odbc','randomstring','moment','mustache','../../config/logger','agi','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareOdbc','getSquareOdbcById','dsn','getUser','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccountById','sendMailMessage','interval','map'];(function(_0x187924,_0x17e8e1){var _0x434cff=function(_0xf187eb){while(--_0xf187eb){_0x187924['push'](_0x187924['shift']());}};_0x434cff(++_0x17e8e1);}(_0x93c6,0x1a0));var _0x693c=function(_0x493f56,_0x22b249){_0x493f56=_0x493f56-0x0;var _0x4a3cce=_0x93c6[_0x493f56];return _0x4a3cce;};'use strict';var fs=require('fs');var path=require('path');var util=require(_0x693c('0x0'));var _=require('lodash');var sh=require(_0x693c('0x1'));var odbc=require(_0x693c('0x2'))();var rs=require(_0x693c('0x3'));var moment=require(_0x693c('0x4'));var Mustache=require(_0x693c('0x5'));var rp=require('request-promise');var logger=require(_0x693c('0x6'))(_0x693c('0x7'));var config=require('../../config/environment');var scripts=require('./scripts');var FILES_PATH=_0x693c('0x8');var recursiveMapAttributes=[_0x693c('0x9'),_0x693c('0xa')];var verticesWithRetry=[_0x693c('0xb'),_0x693c('0xc'),'getsecretdigits'];var AGIVertices=function(_0x28e865,_0x9acdc6,_0xf8ab33){this[_0x693c('0xd')]=_0x28e865;this[_0x693c('0xe')]=_0x9acdc6;this[_0x693c('0xf')]=_0xf8ab33;};AGIVertices[_0x693c('0x10')][_0x693c('0x11')]=function(_0x58a724,_0x57e97e){this['rpc'][_0x693c('0x12')](_0x58a724)[_0x693c('0x13')](function(_0x33c460){_0x57e97e(null,_0x33c460?_0x33c460[_0x693c('0x14')]:![]);})[_0x693c('0x15')](function(_0x55c197){_0x57e97e(_0x55c197);});};AGIVertices[_0x693c('0x10')][_0x693c('0x16')]=function(_0x15fc35,_0x2d398f){this['rpc'][_0x693c('0x17')](_0x15fc35)[_0x693c('0x13')](function(_0x4a4d73){_0x2d398f(null,_0x4a4d73?_0x4a4d73[_0x693c('0x14')]:![]);})[_0x693c('0x15')](function(_0x31208f){_0x2d398f(_0x31208f);});};AGIVertices[_0x693c('0x10')][_0x693c('0x18')]=function(_0x2aa7f9,_0x49fa36){this[_0x693c('0xe')]['getSquareProjectById'](_0x2aa7f9)[_0x693c('0x13')](function(_0xa05557){_0x49fa36(null,_0xa05557?_0xa05557[_0x693c('0x14')]:![]);})['catch'](function(_0x46addc){_0x49fa36(_0x46addc);});};AGIVertices[_0x693c('0x10')][_0x693c('0x19')]=function(_0x2ff7e5,_0x63532c){this['rpc'][_0x693c('0x1a')](_0x2ff7e5)[_0x693c('0x13')](function(_0x341f6a){_0x63532c(null,_0x341f6a?_0x341f6a[_0x693c('0x1b')]:![]);})[_0x693c('0x15')](function(_0x52adf0){_0x63532c(_0x52adf0);});};AGIVertices[_0x693c('0x10')][_0x693c('0x1c')]=function(_0x170cca,_0x4afb0a){this[_0x693c('0xe')]['getUserById'](_0x170cca)[_0x693c('0x13')](function(_0x53458d){_0x4afb0a(null,_0x53458d?_0x53458d[_0x693c('0x14')]:![]);})['catch'](function(_0x3b0b9f){_0x4afb0a(_0x3b0b9f);});};AGIVertices[_0x693c('0x10')]['getTrunk']=function(_0x1d8b4e,_0x56782c){this[_0x693c('0xe')][_0x693c('0x1d')](_0x1d8b4e)[_0x693c('0x13')](function(_0x32889a){_0x56782c(null,_0x32889a?_0x32889a['name']:![]);})['catch'](function(_0x2a26c7){_0x56782c(_0x2a26c7);});};AGIVertices['prototype'][_0x693c('0x1e')]=function(_0x200cd9,_0x245ae7){var _0x364e78=this;this[_0x693c('0xe')][_0x693c('0x1f')](_0x200cd9)[_0x693c('0x13')](function(_0x155c0f){_0x245ae7(null,_0x155c0f?_0x364e78[_0x693c('0x20')](_0x155c0f[_0x693c('0x21')]):![]);})[_0x693c('0x15')](function(_0x181875){_0x245ae7(_0x181875);});};AGIVertices[_0x693c('0x10')]['getMailAccount']=function(_0x49ae62,_0x26febd){this[_0x693c('0xe')][_0x693c('0x22')](_0x49ae62)[_0x693c('0x13')](function(_0x21cdf7){_0x26febd(null,_0x21cdf7?_0x21cdf7:![]);})[_0x693c('0x15')](function(_0x3ad71f){_0x26febd(_0x3ad71f);});};AGIVertices[_0x693c('0x10')][_0x693c('0x23')]=function(_0x15610e,_0x276e12,_0x1a9e30){this['mailRpc'][_0x693c('0x23')](_0x15610e,_0x276e12)[_0x693c('0x13')](function(){_0x1a9e30(null);})[_0x693c('0x15')](function(_0x28e2b4){_0x1a9e30(_0x28e2b4);});};AGIVertices['prototype']['getIntervals']=function(_0x4e1347,_0x5b57ed){this[_0x693c('0xe')]['getIntervalById'](_0x4e1347)['then'](function(_0x4db20c){if(_0x4db20c){if(_0x4db20c['IntervalId']){_0x5b57ed(null,[_0x4db20c[_0x693c('0x24')]]);}else{_0x5b57ed(null,_[_0x693c('0x25')](_0x4db20c['Intervals'],_0x693c('0x24')));}}else{_0x5b57ed(null,![]);}})[_0x693c('0x15')](function(_0x16170a){_0x5b57ed(_0x16170a);});};AGIVertices[_0x693c('0x10')][_0x693c('0x20')]=function(_0x2d4adc){return util[_0x693c('0x26')](_0x693c('0x27'),FILES_PATH,_0x2d4adc);};AGIVertices[_0x693c('0x10')][_0x693c('0x28')]=function(_0x4c2715,_0x282361,_0x106b6b){odbc[_0x693c('0x29')](_0x4c2715,function(_0x58b294){if(_0x58b294){logger[_0x693c('0x2a')](_0x693c('0x2b'),_0x58b294);_0x106b6b(_0x58b294);}else{logger[_0x693c('0x2c')](_0x693c('0x2d'));odbc['query'](_0x282361,function(_0x1adcac,_0x119dc2){if(_0x1adcac){logger['info'](_0x693c('0x2e'),_0x282361);_0x106b6b(_0x1adcac);}else{logger[_0x693c('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x282361);odbc[_0x693c('0x2f')](function(_0x10c515){if(_0x10c515){logger[_0x693c('0x2a')](_0x693c('0x30'),_0x10c515);}_0x106b6b(null,_0x119dc2);});}});}});};AGIVertices[_0x693c('0x10')][_0x693c('0x31')]=function(_0x4f3e4c,_0x230e9a){this[_0x693c('0xe')][_0x693c('0x32')](_0x4f3e4c)[_0x693c('0x13')](function(_0x1f7265){_0x230e9a(null,_0x1f7265?_0x1f7265:![]);})[_0x693c('0x15')](function(_0x2e09ed){_0x230e9a(_0x2e09ed);});};AGIVertices[_0x693c('0x10')][_0x693c('0x33')]=function(_0x5130bd,_0x54d8d2){this[_0x693c('0xe')][_0x693c('0x33')](_0x5130bd)[_0x693c('0x13')](function(_0x1b8751){_0x54d8d2(null,_0x1b8751);})['catch'](function(_0x1e1b99){_0x54d8d2(_0x1e1b99);});};AGIVertices[_0x693c('0x10')][_0x693c('0x34')]=function(_0x4f2087,_0x5b84fc,_0x5d6c67){this[_0x693c('0xe')][_0x693c('0x34')]({'uniqueid':this[_0x693c('0xd')]['uniqueid'],'node':_0x4f2087['label'],'application':_0x4f2087[_0x693c('0x35')],'data':_0x5b84fc||null,'project_name':this[_0x693c('0xd')]['arg_1'],'callerid':this[_0x693c('0xd')][_0x693c('0x36')]})[_0x693c('0x13')](function(_0x438190){if(_0x5d6c67){_0x5d6c67(null,_0x438190);}})[_0x693c('0x15')](function(_0x11823b){if(_0x5d6c67){_0x5d6c67(_0x11823b);}});};AGIVertices[_0x693c('0x10')]['createSquareRecording']=function(_0x562f13,_0x43fb0c,_0x36ee58,_0x51e839){this[_0x693c('0xe')][_0x693c('0x37')]({'uniqueid':this[_0x693c('0xd')][_0x693c('0x38')],'callerid':this[_0x693c('0xd')][_0x693c('0x36')],'calleridname':this['channel'][_0x693c('0x39')],'context':this['channel'][_0x693c('0x3a')],'extension':this[_0x693c('0xd')]['extension'],'priority':this[_0x693c('0xd')][_0x693c('0x3b')],'accountcode':this['channel'][_0x693c('0x3c')],'dnid':this[_0x693c('0xd')][_0x693c('0x3d')],'projectName':this['channel'][_0x693c('0x3e')],'saveName':_0x43fb0c,'filename':_0x562f13[_0x693c('0x3f')]||_0x43fb0c,'savePath':_0x36ee58})[_0x693c('0x13')](function(_0x10f9c7){_0x51e839(null,_0x10f9c7);})[_0x693c('0x15')](function(_0x5adb4d){_0x51e839(_0x5adb4d);});};AGIVertices[_0x693c('0x10')]['createSquareMessage']=function(_0x3b7d93,_0x57b4a7,_0x53f39c,_0x2f168c,_0x3edb8e){this[_0x693c('0xe')][_0x693c('0x40')]({'uniqueid':this[_0x693c('0xd')][_0x693c('0x38')],'body':_0x3b7d93,'direction':_0x57b4a7,'providerName':_0x53f39c,'providerResponse':_0x2f168c})[_0x693c('0x13')](function(_0x389814){if(_0x3edb8e){_0x3edb8e(null,_0x389814);}})[_0x693c('0x15')](function(_0xf1d4e9){if(_0x3edb8e){_0x3edb8e(_0xf1d4e9);}});};AGIVertices[_0x693c('0x10')]['createCmContact']=function(_0x53b346,_0x14908f){this[_0x693c('0xe')][_0x693c('0x41')]({'firstName':_[_0x693c('0x42')](_0x53b346[_0x693c('0x14')])||_['isNil'](_0x53b346[_0x693c('0x14')])?'callback_'+Math[_0x693c('0x43')]():_0x53b346['name'],'lastName':_['isEmpty'](_0x53b346[_0x693c('0x44')])||_[_0x693c('0x45')](_0x53b346[_0x693c('0x44')])?null:_0x53b346[_0x693c('0x44')],'phone':_0x53b346[_0x693c('0x46')],'ListId':_0x53b346[_0x693c('0x47')],'scheduledat':_0x53b346[_0x693c('0x48')],'callbackUniqueid':this[_0x693c('0xd')]['uniqueid'],'tags':'callback','description':_0x693c('0x49')+_0x53b346[_0x693c('0x48')]['toString'](),'priority':_0x53b346[_0x693c('0x4a')]})[_0x693c('0x13')](function(_0x2ac5f7){_0x14908f(null,_0x2ac5f7);})['catch'](function(_0x4291d6){_0x14908f(_0x4291d6);});};AGIVertices['prototype']['getPause']=function(_0x3176de,_0x5102ed){this[_0x693c('0xe')]['getPauseById'](_0x3176de)[_0x693c('0x13')](function(_0x75f4cb){_0x5102ed(null,_0x75f4cb?_0x75f4cb[_0x693c('0x14')]:![]);})[_0x693c('0x15')](function(_0x49e4b1){_0x5102ed(_0x49e4b1);});};AGIVertices['prototype'][_0x693c('0x4b')]=function(_0x3c6be2,_0x505707,_0x59517f){var _0x4afd7a={'role':_0x693c('0x4c')};_0x4afd7a[_0x3c6be2]=this[_0x693c('0xd')]['callerid'];this[_0x693c('0xe')]['agentPause'](_0x4afd7a,_0x505707,this[_0x693c('0xd')][_0x693c('0x38')])[_0x693c('0x13')](function(_0x2bfcfd){_0x59517f(null,_[_0x693c('0x45')](_0x2bfcfd)?![]:!![]);})['catch'](function(_0x1240c8){logger['error'](_0x1240c8);_0x59517f(null,![]);});};AGIVertices[_0x693c('0x10')][_0x693c('0x4d')]=function(_0x1b7e54,_0x389cc8){var _0x7a6de3={'role':_0x693c('0x4c')};_0x7a6de3[_0x1b7e54]=this[_0x693c('0xd')]['callerid'];this[_0x693c('0xe')][_0x693c('0x4d')](_0x7a6de3)[_0x693c('0x13')](function(_0x3782e2){_0x389cc8(null,_['isNil'](_0x3782e2)?![]:!![]);})[_0x693c('0x15')](function(_0x4b3b19){logger[_0x693c('0x2a')](_0x4b3b19);_0x389cc8(null,![]);});};AGIVertices[_0x693c('0x10')][_0x693c('0x4e')]=function(_0xe591d3,_0x52d208){var _0x14764f={'role':_0x693c('0x4c')};_0x14764f[_0xe591d3]=this['channel'][_0x693c('0x36')];this[_0x693c('0xe')][_0x693c('0x4e')](_0x14764f)['then'](function(_0x1162e9){_0x52d208(null,_['isNil'](_0x1162e9)?![]:!![]);})['catch'](function(_0x28b7a8){logger[_0x693c('0x2a')](_0x28b7a8);_0x52d208(null,![]);});};AGIVertices[_0x693c('0x10')][_0x693c('0x4f')]=function(_0x57b347,_0x3c3d1c){var _0x38489d={'role':_0x693c('0x4c')};_0x38489d[_0x57b347]=this[_0x693c('0xd')]['callerid'];var _0x2e2877=_0x57b347!=_0x693c('0x50')?util[_0x693c('0x26')](_0x693c('0x51'),_0x693c('0x52'),this[_0x693c('0xd')][_0x693c('0x36')]):undefined;this[_0x693c('0xe')][_0x693c('0x4f')](_0x38489d,_0x2e2877)['then'](function(_0x14dccd){_0x3c3d1c(null,_[_0x693c('0x45')](_0x14dccd)?![]:!![]);})[_0x693c('0x15')](function(_0x439ceb){logger[_0x693c('0x2a')](_0x439ceb);_0x3c3d1c(null,![]);});};AGIVertices[_0x693c('0x10')][_0x693c('0x53')]=function(_0x4e4b70,_0x3329e9){sh[_0x693c('0x54')](_[_0x693c('0x55')](_0x4e4b70),function(_0x2baea7,_0x265390){var _0x54eaa2=_0x265390[_0x693c('0x56')](/(\r\n|\n|\r)/gm,'');_0x3329e9(null,_0x54eaa2);});};AGIVertices[_0x693c('0x10')][_0x693c('0x57')]=function(_0x3c13f1,_0x38f409){scripts[_0x693c('0x57')](_0x3c13f1[_0x693c('0x58')],_0x3c13f1[_0x693c('0x59')]||'text',_0x3c13f1[_0x693c('0x5a')],_0x3c13f1['languageCode']||_0x693c('0x5b'),_0x3c13f1[_0x693c('0x5c')]||_0x693c('0x5d'),_0x3c13f1[_0x693c('0x5e')]||_0x693c('0x5f'))[_0x693c('0x13')](function(_0x1b913e){_0x38f409(null,_0x1b913e);})[_0x693c('0x15')](function(_0x323065){_0x38f409(_0x323065);});};AGIVertices[_0x693c('0x10')][_0x693c('0x60')]=function(_0x147dd8,_0x585d91){scripts[_0x693c('0x60')](_0x147dd8[_0x693c('0x5a')],_0x147dd8['google_tts_language']||'en',0x1)[_0x693c('0x13')](function(_0x2eade0){_0x585d91(null,_0x2eade0);})[_0x693c('0x15')](function(_0xfb1445){_0x585d91(_0xfb1445);});};AGIVertices[_0x693c('0x10')][_0x693c('0x61')]=function(_0x4c4d3f,_0x400a66){var _0x563035={'uri':_0x4c4d3f['url'],'method':_0x4c4d3f[_0x693c('0x62')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x4c4d3f[_0x693c('0x63')])==='number'&&parseInt(_0x4c4d3f['timeout'])>=0x1?parseInt(_0x4c4d3f[_0x693c('0x63')])*0x3e8:0x5*0x3e8};if(_[_0x693c('0x64')]([_0x693c('0x65'),_0x693c('0x66')],_0x563035[_0x693c('0x62')][_0x693c('0x67')]())){try{_0x563035[_0x693c('0x68')]=_0x4c4d3f[_0x693c('0xa')]?JSON[_0x693c('0x69')](_0x4c4d3f[_0x693c('0xa')]):{};}catch(_0x2d271d){logger[_0x693c('0x2a')](_0x693c('0x6a'),_0x2d271d);}}try{_0x563035[_0x693c('0x6b')]=_0x4c4d3f[_0x693c('0x9')]?JSON[_0x693c('0x69')](_0x4c4d3f['rawHeaders']):{};}catch(_0x596171){logger[_0x693c('0x2a')](_0x693c('0x6c'),_0x596171);}if(_0x4c4d3f['computedVariables']){try{var _0x556639=require(_0x4c4d3f[_0x693c('0x6d')])[_0x693c('0x6e')](this,_0x563035);_0x563035['uri']=Mustache[_0x693c('0x6f')](_0x4c4d3f['url'],_0x556639,{},['$$','$$']);if(_0x563035[_0x693c('0x6b')]){_0x563035['headers']=JSON[_0x693c('0x69')](Mustache[_0x693c('0x6f')](JSON[_0x693c('0x70')](_0x563035['headers']),_0x556639,{},['$$','$$']));}if(_0x563035['body']){_0x563035[_0x693c('0x68')]=JSON[_0x693c('0x69')](Mustache[_0x693c('0x6f')](JSON[_0x693c('0x70')](_0x563035[_0x693c('0x68')]),_0x556639,{},['$$','$$']));}}catch(_0x56ebe1){logger[_0x693c('0x2a')](_0x693c('0x71'),_0x56ebe1);}}rp(_0x563035)['then'](function(_0x2cbe8d){var _0x193d5d={'statusCode':_0x2cbe8d[_0x693c('0x72')]||0xc8,'statusMessage':_0x2cbe8d[_0x693c('0x73')]||'OK','headers':_0x2cbe8d['headers']||{},'body':_0x2cbe8d[_0x693c('0x68')]||{}};_0x400a66(null,_0x193d5d);})['catch'](function(_0x251f22){var _0x42659b={'statusCode':_0x251f22[_0x693c('0x72')]||0x1f4,'statusMessage':_0x251f22[_0x693c('0x74')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x251f22['options'][_0x693c('0x6b')]||{},'body':_0x251f22[_0x693c('0x75')][_0x693c('0x68')]||{}};_0x400a66(null,_0x42659b);});};AGIVertices[_0x693c('0x10')][_0x693c('0x76')]=function(_0xcde0b5,_0x25c22e){scripts[_0x693c('0x76')](this['channel'][_0x693c('0x38')],_0xcde0b5[_0x693c('0x77')],_0xcde0b5[_0x693c('0x5a')],_0xcde0b5[_0x693c('0x78')]||'en')['then'](function(_0x2653ea){_0x25c22e(null,_0x2653ea);})[_0x693c('0x15')](function(_0x10b4dc){_0x25c22e(_0x10b4dc);});};AGIVertices[_0x693c('0x10')][_0x693c('0x79')]=function(_0x2deea4,_0x371daf){scripts[_0x693c('0x79')](this[_0x693c('0xd')][_0x693c('0x38')],_0x2deea4[_0x693c('0x7a')],_0x2deea4['client_email'],_0x2deea4['private_key'],_0x2deea4[_0x693c('0x5a')],_0x2deea4['dialogflowV2_language']||'en')[_0x693c('0x13')](function(_0x400279){_0x371daf(null,_0x400279);})['catch'](function(_0x4e02de){_0x371daf(_0x4e02de);});};AGIVertices[_0x693c('0x10')][_0x693c('0x7b')]=function(_0x483cee,_0x5c1961){scripts['sestekNDA'](this[_0x693c('0xd')],_0x483cee)[_0x693c('0x13')](function(_0x34d8ca){_0x5c1961(null,_0x34d8ca);})['catch'](function(_0x3515da){_0x5c1961(_0x3515da);});};AGIVertices[_0x693c('0x10')][_0x693c('0x7c')]=function(_0x460ab9,_0x955874){scripts[_0x693c('0x7c')](_0x460ab9[_0x693c('0x77')],_0x460ab9[_0x693c('0x5a')],_0x460ab9['ispeech_tts_language']||_0x693c('0x5b'),_0x460ab9[_0x693c('0x7d')])['then'](function(_0x19151a){_0x955874(null,_0x19151a);})[_0x693c('0x15')](function(_0x558f55){_0x955874(_0x558f55);});};AGIVertices[_0x693c('0x10')][_0x693c('0x7e')]=function(_0x498d7f,_0x3fc0e8,_0x118c66){scripts[_0x693c('0x7e')](_0x3fc0e8,_0x498d7f[_0x693c('0x77')],_0x498d7f[_0x693c('0x7f')]||'en-US',this[_0x693c('0x80')](_0x498d7f[_0x693c('0x81')])?_0x498d7f[_0x693c('0x81')]:undefined)[_0x693c('0x13')](function(_0x581d6b){_0x118c66(null,_0x581d6b);})['catch'](function(_0x32b9f6){_0x118c66(_0x32b9f6);});};AGIVertices[_0x693c('0x10')]['awsPolly']=function(_0x2342aa,_0x4274c8){scripts[_0x693c('0x82')](_0x2342aa[_0x693c('0x83')],_0x2342aa[_0x693c('0x84')],_0x2342aa[_0x693c('0x85')],_0x2342aa[_0x693c('0x86')]||_0x693c('0x87'),_0x2342aa[_0x693c('0x5a')],_0x2342aa[_0x693c('0x88')]||_0x693c('0x5a'))[_0x693c('0x13')](function(_0x4bb10f){_0x4274c8(null,_0x4bb10f);})[_0x693c('0x15')](function(_0x13e107){_0x4274c8(_0x13e107);});};AGIVertices[_0x693c('0x10')][_0x693c('0x89')]=function(_0x4eefb4,_0x2ab205){scripts[_0x693c('0x89')](this[_0x693c('0xd')][_0x693c('0x38')],_0x4eefb4[_0x693c('0x83')],_0x4eefb4[_0x693c('0x84')],_0x4eefb4[_0x693c('0x8a')],_0x4eefb4['text'],_0x4eefb4[_0x693c('0x8b')])[_0x693c('0x13')](function(_0x1a046c){_0x2ab205(null,_0x1a046c);})['catch'](function(_0x11e184){_0x2ab205(_0x11e184);});};AGIVertices[_0x693c('0x10')][_0x693c('0x8c')]=function(_0x1ca396,_0x3cf2dc,_0x4894cc){scripts[_0x693c('0x8c')](_0x3cf2dc,_0x1ca396[_0x693c('0x77')],_0x1ca396[_0x693c('0x8d')]||_0x693c('0x5b'))[_0x693c('0x13')](function(_0x177b76){_0x4894cc(null,_0x177b76);})[_0x693c('0x15')](function(_0x23dba4){_0x4894cc(_0x23dba4);});};AGIVertices['prototype']['tildeASR']=function(_0x337909,_0x30d5fd,_0xe853bd){scripts['tildeASR'](_0x30d5fd,_0x337909[_0x693c('0x8e')],_0x337909[_0x693c('0x8f')],_0x337909[_0x693c('0x90')])[_0x693c('0x13')](function(_0x4f265e){_0xe853bd(null,_0x4f265e);})['catch'](function(_0x4af3fb){_0xe853bd(_0x4af3fb);});};AGIVertices[_0x693c('0x10')]['clear']=function(_0x105c13){var _0x23b376=_['includes'](verticesWithRetry,_0x105c13[_0x693c('0x35')])?_0x105c13:_[_0x693c('0x91')](_0x105c13);for(var _0xbe34a9 in _0x23b376){if(_0x23b376[_0x693c('0x92')](_0xbe34a9)){if(_0x23b376[_0xbe34a9]&&_['isString'](_0x23b376[_0xbe34a9])){if(_['includes'](recursiveMapAttributes,_0xbe34a9)){_0x23b376[_0xbe34a9]=this['replaceObjectAllVariables'](_0x23b376[_0xbe34a9]);}else{_0x23b376[_0xbe34a9]=this[_0x693c('0x93')](_0x23b376[_0xbe34a9]);}}}}return _0x23b376;};AGIVertices[_0x693c('0x10')][_0x693c('0x94')]=function(_0x469017){for(var _0x52669b in _0x469017){if(_0x469017[_0x693c('0x92')](_0x52669b)){if(_[_0x693c('0x95')](_0x469017[_0x52669b])){this[_0x693c('0x94')](_0x469017[_0x52669b]);}else if(_['isArray'](_0x469017[_0x52669b])){for(var _0x4b49e1=0x0;_0x4b49e1<_0x469017[_0x52669b][_0x693c('0x96')];_0x4b49e1++){this['recursiveNodeIndex'](_0x469017[_0x52669b][_0x4b49e1]);}}else if(_['isString'](_0x469017[_0x52669b])){_0x469017[_0x52669b]=this['replaceAllVariables'](_0x469017[_0x52669b]);}}}};AGIVertices['prototype'][_0x693c('0x97')]=function(_0x2302de,_0x43b43e){for(var _0x3d85f6 in _0x2302de){if(_0x2302de[_0x693c('0x92')](_0x3d85f6)){if(_[_0x693c('0x95')](_0x2302de[_0x3d85f6])){if(!_['isEmpty'](_0x2302de[_0x3d85f6])){this['saveRestApiResult'](_0x2302de[_0x3d85f6],util[_0x693c('0x26')](_0x693c('0x98'),_0x43b43e,_0x3d85f6));}}else if(_[_0x693c('0x99')](_0x2302de[_0x3d85f6])){for(var _0x3ec5f4=0x0;_0x3ec5f4<_0x2302de[_0x3d85f6][_0x693c('0x96')];_0x3ec5f4++){this[_0x693c('0x97')](_0x2302de[_0x3d85f6][_0x3ec5f4],util['format'](_0x693c('0x98'),_0x43b43e,_0x3d85f6+'['+_0x3ec5f4+']'));}}else{if(!_['isNil'](_0x2302de[_0x3d85f6])){this[_0x693c('0xd')][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0x98'),_0x43b43e,_0x3d85f6),_0x2302de[_0x3d85f6]);}}}}};AGIVertices[_0x693c('0x10')][_0x693c('0x9b')]=function(_0x347271){try{var _0x3ac6f7=JSON[_0x693c('0x69')](_0x347271);this[_0x693c('0x94')](_0x3ac6f7);return JSON[_0x693c('0x70')](_0x3ac6f7);}catch(_0x3b580e){return this[_0x693c('0x93')](_0x347271);}};AGIVertices[_0x693c('0x10')]['replaceAllVariables']=function(_0x51f591){var _0x5a8f1f=_0x51f591['split']('{');for(var _0x12fbdd=0x1;_0x12fbdd<_0x5a8f1f[_0x693c('0x96')];_0x12fbdd+=0x1){var _0x900a6f=_0x5a8f1f[_0x12fbdd][_0x693c('0x9c')]('}');if(_0x900a6f[_0x693c('0x96')]>0x1){_0x51f591=_0x51f591['replaceAll']('{'+_0x900a6f[0x0]+'}',this[_0x693c('0xd')][_0x693c('0x11')](_0x900a6f[0x0])[_0x693c('0x9d')]||_0x900a6f[0x0]);}}if(_0x5a8f1f[_0x693c('0x96')]===0x1){return _0x51f591['toString']();}return this[_0x693c('0x93')](_0x51f591);};AGIVertices[_0x693c('0x10')][_0x693c('0x9e')]=function(_0x48fd39,_0x355a6a){var _0x5c5a79=this[_0x693c('0xd')]['getVariable'](_0x48fd39);if(_0x5c5a79[_0x693c('0x9f')]===-0x1){return _0x5c5a79;}logger['info'](util[_0x693c('0x26')](_0x693c('0xa0'),_0x355a6a,_0x5c5a79[_0x693c('0x9d')]));return this[_0x693c('0xd')][_0x693c('0x9a')](_0x355a6a,_0x5c5a79[_0x693c('0x9d')]);};AGIVertices[_0x693c('0x10')]['isConfigured']=function(_0x3f030d){return _0x3f030d&&_0x3f030d!=='0'&&_0x3f030d!=='-1'&&_0x3f030d!=='';};AGIVertices[_0x693c('0x10')][_0x693c('0xa1')]=function(_0x4d6e98){this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x4d6e98,'-');_0x4d6e98[_0x693c('0xa2')]=_0x4d6e98['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x693c('0x10')][_0x693c('0xa3')]=function(_0x463f1e){logger[_0x693c('0x2c')](util['format'](_0x693c('0xa4'),_0x463f1e[_0x693c('0xa5')]));if(!this['isConfigured'](_0x463f1e[_0x693c('0x5a')])){return this[_0x693c('0xd')]['noop']('no\x20text\x20configured');}var _0x2aab3e='\x22'+_0x463f1e[_0x693c('0x5a')]+'\x22';if(this[_0x693c('0x80')](_0x463f1e[_0x693c('0x75')])){_0x2aab3e+=','+_0x463f1e[_0x693c('0x75')];}var _0x47c684=this[_0x693c('0xd')]['exec'](_0x693c('0xa6'),_0x2aab3e);if(_0x47c684[_0x693c('0x9f')]===-0x1){return _0x47c684;}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xa8'),_0x2aab3e));};AGIVertices[_0x693c('0x10')]['mrcprecog']=function(_0x3d5559){logger['info'](util[_0x693c('0x26')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x3d5559[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x3d5559[_0x693c('0xa9')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xaa'));}var _0x47d0fa=_0x3d5559['grammar'];if(this[_0x693c('0x80')](_0x3d5559['options'])){_0x47d0fa+=','+_0x3d5559[_0x693c('0x75')];}var _0x33506b=this[_0x693c('0xd')]['exec'](_0x693c('0xab'),_0x47d0fa);if(_0x33506b[_0x693c('0x9f')]===-0x1){return _0x33506b;}var _0x195dd7=this['getAndSetVariable'](_0x693c('0xac'),_0x693c('0xad'));if(_0x195dd7[_0x693c('0x9f')]===-0x1){return _0x195dd7;}var _0x4d7fc1=this[_0x693c('0x9e')](_0x693c('0xae'),'MRCP_RECOG_TRANSCRIPT');if(_0x4d7fc1[_0x693c('0x9f')]===-0x1){return _0x4d7fc1;}var _0x12540f=this[_0x693c('0x9e')](_0x693c('0xaf'),_0x693c('0xb0'));if(_0x12540f[_0x693c('0x9f')]===-0x1){return _0x12540f;}return this['channel'][_0x693c('0xa7')](util['format'](_0x693c('0xb1'),_0x47d0fa));};AGIVertices[_0x693c('0x10')][_0x693c('0x7')]=function(_0x12c1ed){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0xb2'),_0x12c1ed['label']));return this[_0x693c('0xd')]['agi']([_0x12c1ed[_0x693c('0xb3')],_0x12c1ed['args']]);};AGIVertices['prototype'][_0x693c('0xb4')]=function(_0x49280c){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0xb5'),_0x49280c[_0x693c('0xa5')]));if(this[_0x693c('0x80')](_0x49280c[_0x693c('0x63')])){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x49280c[_0x693c('0x63')]));var _0x524887=this['channel'][_0x693c('0xb6')](_0x49280c['timeout']);if(_0x524887['result']===-0x1){return _0x524887;}}return this['channel']['answer']();};AGIVertices[_0x693c('0x10')][_0x693c('0xb7')]=function(_0x34d96b){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0xb8'),_0x34d96b['label']));if(!this[_0x693c('0x80')](_0x34d96b[_0x693c('0x47')])){return this['channel'][_0x693c('0x2a')](_0x34d96b,'no\x20list\x20selected');}_0x34d96b[_0x693c('0x48')]=moment();if(this[_0x693c('0x80')](_0x34d96b[_0x693c('0xb9')])){_0x34d96b[_0x693c('0x48')]=moment()['add'](_0x34d96b[_0x693c('0xb9')],'minutes');}if(!this[_0x693c('0x80')](_0x34d96b[_0x693c('0x4a')])){_0x34d96b[_0x693c('0x4a')]=0x2;}this[_0x693c('0x41')][_0x693c('0x6e')](this,_0x34d96b);return this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xba'),_0x34d96b['phone'],_0x34d96b['list_id'],_0x34d96b['scheduledAt']));};AGIVertices['prototype'][_0x693c('0xbb')]=function(_0x11946b){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0xbc'),_0x11946b[_0x693c('0xa5')]));var _0x5a877e=this[_0x693c('0xd')][_0x693c('0x54')](_0x11946b[_0x693c('0xbd')],_0x11946b[_0x693c('0x75')]);if(_0x5a877e['result']===-0x1){return _0x5a877e;}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xbe'),_0x11946b[_0x693c('0xbd')],_0x11946b[_0x693c('0x75')]));};AGIVertices[_0x693c('0x10')][_0x693c('0xbf')]=function(_0x3c390a){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0xc0'),_0x3c390a[_0x693c('0xa5')]));if(!this['isConfigured'](_0x3c390a['text'])){return this['channel']['noop'](_0x693c('0xc1'));}var _0x49b52e='\x22'+_0x3c390a[_0x693c('0x5a')]+'\x22';if(this[_0x693c('0x80')](_0x3c390a['options'])){_0x49b52e+=','+_0x3c390a[_0x693c('0x75')];}var _0x2acfd4=this[_0x693c('0xd')][_0x693c('0x54')](_0x693c('0xa6'),_0x49b52e);if(_0x2acfd4['result']===-0x1){return _0x2acfd4;}return this[_0x693c('0xd')][_0x693c('0xa7')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x49b52e));};AGIVertices['prototype'][_0x693c('0xc2')]=function(_0x5630dd){logger['info'](util[_0x693c('0x26')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x5630dd['label']));if(!this[_0x693c('0x80')](_0x5630dd[_0x693c('0x5a')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xc1'));}var _0x213252='\x22'+_0x5630dd[_0x693c('0x5a')]+'\x22';if(this[_0x693c('0x80')](_0x5630dd[_0x693c('0x75')])){_0x213252+=','+_0x5630dd[_0x693c('0x75')];}var _0x82bf16=this[_0x693c('0xd')]['exec'](_0x693c('0xa6'),_0x213252);if(_0x82bf16['result']===-0x1){return _0x82bf16;}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xa8'),_0x213252));};AGIVertices[_0x693c('0x10')][_0x693c('0xc3')]=function(_0x1f5ae6){logger[_0x693c('0x2c')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x1f5ae6[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x1f5ae6[_0x693c('0xa9')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x3e6049=_0x1f5ae6[_0x693c('0xa9')];if(this[_0x693c('0x80')](_0x1f5ae6[_0x693c('0x75')])){_0x3e6049+=','+_0x1f5ae6['options'];}var _0x388c48=this['channel']['exec'](_0x693c('0xab'),_0x3e6049);if(_0x388c48['result']===-0x1){return _0x388c48;}var _0x4b6850=this['getAndSetVariable'](_0x693c('0xac'),'LUMENVOX_ASR_CONFIDENCE');if(_0x4b6850[_0x693c('0x9f')]===-0x1){return _0x4b6850;}var _0x444b59=this[_0x693c('0x9e')]('RECOG_INPUT()',_0x693c('0xc4'));if(_0x444b59[_0x693c('0x9f')]===-0x1){return _0x444b59;}var _0xb78a5a=this[_0x693c('0x9e')](_0x693c('0xaf'),_0x693c('0xc5'));if(_0xb78a5a[_0x693c('0x9f')]===-0x1){return _0xb78a5a;}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xb1'),_0x3e6049));};AGIVertices[_0x693c('0x10')][_0x693c('0xc6')]=function(_0x4e9d16){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0xc7'),_0x4e9d16['label']));if(!this[_0x693c('0x80')](_0x4e9d16[_0x693c('0xa9')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xaa'));}var _0x368f83=_0x4e9d16['grammar'];if(this[_0x693c('0x80')](_0x4e9d16[_0x693c('0x75')])){_0x368f83+=','+_0x4e9d16[_0x693c('0x75')];}var _0x2ac56e=this[_0x693c('0xd')][_0x693c('0x54')]('MRCPRecog',_0x368f83);if(_0x2ac56e[_0x693c('0x9f')]===-0x1){return _0x2ac56e;}var _0x239f1d=this['getAndSetVariable']('RECOG_CONFIDENCE()','SESTEK_ASR_CONFIDENCE');if(_0x239f1d[_0x693c('0x9f')]===-0x1){return _0x239f1d;}var _0x1ea8e0=this[_0x693c('0x9e')]('RECOG_INPUT()',_0x693c('0xc8'));if(_0x1ea8e0[_0x693c('0x9f')]===-0x1){return _0x1ea8e0;}var _0x1142a7=this[_0x693c('0x9e')](_0x693c('0xaf'),_0x693c('0xc9'));if(_0x1142a7['result']===-0x1){return _0x1142a7;}return this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xb1'),_0x368f83));};AGIVertices[_0x693c('0x10')][_0x693c('0xca')]=function(_0x26d669){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0xcb'),_0x26d669['label']));if(!this['isConfigured'](_0x26d669[_0x693c('0xcc')])){return this['channel'][_0x693c('0x2a')](_0x26d669,_0x693c('0xcd'));}var _0x83956d=this[_0x693c('0x19')][_0x693c('0x6e')](this,_0x26d669['odbc_id']);if(!_0x83956d){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x26d669,_0x693c('0xce'));}if(!this['isConfigured'](_0x26d669[_0x693c('0xcf')])){return this['channel'][_0x693c('0x2a')](_0x26d669,_0x693c('0xd0'));}var _0x4b114e=_0x26d669['query'][_0x693c('0x56')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x693c('0xa7')](util['format'](_0x693c('0xd1'),_0x4b114e));var _0x72db8d=this[_0x693c('0x28')][_0x693c('0x6e')](this,_0x83956d,_0x4b114e);this[_0x693c('0x34')]['sync'](this,_0x26d669,_0x4b114e);if(!this['isConfigured'](_0x26d669['variable_id'])){return this['channel'][_0x693c('0xa7')](_0x693c('0xd2'));}var _0x7729cb=this[_0x693c('0x11')][_0x693c('0x6e')](this,_0x26d669[_0x693c('0xd3')]);if(!_0x7729cb){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x26d669,'no\x20variable\x20found');}var _0x2e0cf3=this;_0x72db8d[_0x693c('0xd4')](function(_0x531f87,_0x5e5b60){Object[_0x693c('0xd5')](_0x531f87)[_0x693c('0xd4')](function(_0x2281c7){_0x2e0cf3[_0x693c('0xd')][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0xd6'),_0x7729cb,_0x5e5b60,_0x2281c7),_0x531f87[_0x2281c7]);});});this[_0x693c('0xd')][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0xd7'),_0x7729cb),_0x72db8d[_0x693c('0x96')]);return this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xd8'),_0x7729cb));};AGIVertices[_0x693c('0x10')][_0x693c('0xd9')]=function(_0x34cc03){logger['debug'](util[_0x693c('0x26')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x34cc03['label']));if(!this[_0x693c('0x80')](_0x34cc03[_0x693c('0xda')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x34cc03,_0x693c('0xdb'));}var _0x3e843d=this['getUser']['sync'](this,_0x34cc03[_0x693c('0xda')]);if(!_0x3e843d){return this[_0x693c('0xd')]['error'](_0x34cc03,_0x693c('0xdc'));}var _0x32e030=this[_0x693c('0xd')][_0x693c('0x54')](_0x693c('0xdd'),[util['format'](_0x693c('0xde'),_0x3e843d),_0x34cc03['timeout'],_0x34cc03['opts'],_0x34cc03[_0x693c('0xdf')]]);if(_0x32e030[_0x693c('0x9f')]===-0x1){return _0x32e030;}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')]('Executed\x20command\x20%s',_0x693c('0xdd')));};AGIVertices[_0x693c('0x10')][_0x693c('0xe0')]=function(_0x314bff){logger['info'](util[_0x693c('0x26')](_0x693c('0xe1'),_0x314bff[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x314bff[_0x693c('0x77')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xe2'));}if(!this[_0x693c('0x80')](_0x314bff['text'])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xc1'));}this[_0x693c('0xd')][_0x693c('0xe3')]=!![];this[_0x693c('0x34')](_0x314bff);this['createSquareMessage'](_0x314bff[_0x693c('0x5a')],'in','','');this[_0x693c('0xd')]['noop'](util[_0x693c('0x26')](_0x693c('0xe4'),_0x314bff[_0x693c('0x5a')]));var _0x329cab=this[_0x693c('0x76')]['sync'](this,_0x314bff);if(_0x329cab){for(var _0x487058 in _0x329cab){if(_0x329cab[_0x693c('0x92')](_0x487058)){this[_0x693c('0xd')][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0xe5'),_0x487058[_0x693c('0x67')]()),_0x329cab[_0x487058]);}}this[_0x693c('0x40')](_0x329cab[_0x693c('0xe6')],_0x693c('0xe7'),_0x693c('0xe0'),'');return this[_0x693c('0xd')]['noop'](util[_0x693c('0x26')](_0x693c('0xe8'),_0x329cab[_0x693c('0xe6')]));}return this[_0x693c('0xd')]['error'](_0x314bff,_0x693c('0xe9'));};AGIVertices[_0x693c('0x10')][_0x693c('0xea')]=function(_0x5af0ba){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x5af0ba['label']));if(!this['isConfigured'](_0x5af0ba[_0x693c('0x7a')])){return this['channel'][_0x693c('0xa7')]('no\x20project_id\x20configured');}if(!this[_0x693c('0x80')](_0x5af0ba['client_email'])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xeb'));}if(!this['isConfigured'](_0x5af0ba[_0x693c('0xec')])){return this[_0x693c('0xd')]['noop'](_0x693c('0xed'));}if(!this[_0x693c('0x80')](_0x5af0ba[_0x693c('0xee')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20anguage\x20configured');}if(!this[_0x693c('0x80')](_0x5af0ba[_0x693c('0x5a')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20text\x20configured');}this[_0x693c('0xd')]['bot']=!![];this[_0x693c('0x34')](_0x5af0ba);this['createSquareMessage'](_0x5af0ba['text'],'in','','');this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0xef'),_0x5af0ba['text']));var _0x4e8aeb=this[_0x693c('0x79')][_0x693c('0x6e')](this,_0x5af0ba);if(_0x4e8aeb){for(var _0x40e00 in _0x4e8aeb){if(_0x4e8aeb[_0x693c('0x92')](_0x40e00)){if(_0x40e00!==_0x693c('0xf0')){this[_0x693c('0xd')]['setVariable'](util['format'](_0x693c('0xe5'),_0x40e00['toUpperCase']()),_0x4e8aeb[_0x40e00]);}}}this[_0x693c('0x40')](_0x4e8aeb['speech'],_0x693c('0xe7'),_0x693c('0xea'),_0x4e8aeb[_0x693c('0xf0')]);return this[_0x693c('0xd')]['noop'](util['format']('DialogflowV2\x20Result\x20%s',_0x4e8aeb['speech']));}return this[_0x693c('0xd')]['error'](_0x5af0ba,_0x693c('0xf1'));};AGIVertices[_0x693c('0x10')][_0x693c('0xf2')]=function(_0x544d82){logger[_0x693c('0x2c')](util['format'](_0x693c('0xf3'),_0x544d82[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x544d82[_0x693c('0xf4')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x693c('0x80')](_0x544d82[_0x693c('0xf5')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xf6'));}if(!this[_0x693c('0x80')](_0x544d82[_0x693c('0xf7')])){return this['channel'][_0x693c('0xa7')](_0x693c('0xf8'));}if(!this['isConfigured'](_0x544d82[_0x693c('0xf9')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xc1'));}this[_0x693c('0xd')][_0x693c('0xe3')]=!![];this['createSquareDetailsReport'](_0x544d82);this[_0x693c('0x40')](_0x544d82[_0x693c('0x5a')],'in','','');this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xfa'),_0x544d82[_0x693c('0x5a')]));var _0x1b68c9=this[_0x693c('0x7b')][_0x693c('0x6e')](this,_0x544d82);if(_0x1b68c9){for(var _0x56931f in _0x1b68c9){if(_0x1b68c9[_0x693c('0x92')](_0x56931f)){this[_0x693c('0xd')][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0xfb'),_0x56931f['toUpperCase']()),_0x1b68c9[_0x56931f]);}}this[_0x693c('0x40')](_0x1b68c9[_0x693c('0xe6')],'out',_0x693c('0xf2'),'');if(_0x1b68c9[_0x693c('0xfc')]){this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xfd'),_0x1b68c9[_0x693c('0xfc')]));var _0x470957=this[_0x693c('0xd')][_0x693c('0xfe')](_0x1b68c9[_0x693c('0xfc')]);try{fs['unlink'](_0x1b68c9[_0x693c('0xfc')]+_0x693c('0xff'));}catch(_0x6bfca2){logger['error'](_0x6bfca2);}return _0x470957;}else{return this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0x100'),_0x1b68c9['speech']));}}return this[_0x693c('0xd')]['error'](_0x544d82,_0x693c('0x101'));};AGIVertices[_0x693c('0x10')][_0x693c('0x102')]=function(_0x5414bb){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20END\x20(%s)\x20block',_0x5414bb[_0x693c('0xa5')]));return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0x102'));};AGIVertices[_0x693c('0x10')][_0x693c('0x103')]=function(_0x12bbc0){logger[_0x693c('0x2c')](util['format'](_0x693c('0x104'),_0x12bbc0['label']));var _0x39a8e7='';if(_0x12bbc0[_0x693c('0x105')]){if(!this[_0x693c('0x80')](_0x12bbc0[_0x693c('0x105')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x12bbc0,'no\x20trunk\x20selected');}else{var _0x405c33=parseInt(_0x12bbc0[_0x693c('0x105')],0xa);if(isNaN(_0x405c33)){_0x39a8e7=_0x12bbc0[_0x693c('0x105')];}else{_0x39a8e7=this['getTrunk']['sync'](this,_0x12bbc0[_0x693c('0x105')]);if(!_0x39a8e7){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x12bbc0,_0x693c('0x106'));}}}}else if(_0x12bbc0['trunk_name']){_0x39a8e7=_0x12bbc0[_0x693c('0x107')];}else{return this[_0x693c('0xd')][_0x693c('0x2a')](_0x12bbc0,'no\x20trunk\x20selected');}var _0x907a6=this['channel'][_0x693c('0x54')](_0x693c('0xdd'),[util[_0x693c('0x26')](_0x693c('0x108'),_0x39a8e7,_0x12bbc0['phone']),_0x12bbc0[_0x693c('0x63')],_0x12bbc0[_0x693c('0x109')],_0x12bbc0['url']]);if(_0x907a6['result']===-0x1){return _0x907a6;}return this['channel'][_0x693c('0xa7')](util['format']('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0x693c('0x10')][_0x693c('0x10a')]=function(_0x2ec41f){logger['info'](util['format'](_0x693c('0x10b'),_0x2ec41f[_0x693c('0xa5')]));return this['channel']['noop']('finally');};AGIVertices[_0x693c('0x10')][_0x693c('0xc')]=function(_0x2969cf){logger[_0x693c('0x2c')](util['format'](_0x693c('0x10c'),_0x2969cf[_0x693c('0xa5')]));if(_0x2969cf[_0x693c('0xa2')]===0x0){return this[_0x693c('0xa1')](_0x2969cf);}_0x2969cf['retry']-=0x1;if(!this[_0x693c('0x80')](_0x2969cf[_0x693c('0x10d')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x2969cf,'no\x20file\x20audio\x20selected');}var _0x297a19=this['getSound'][_0x693c('0x6e')](this,_0x2969cf[_0x693c('0x10d')]);if(!_0x297a19){return this['channel'][_0x693c('0x2a')](_0x2969cf,_0x693c('0x10e'));}if(!this['isConfigured'](_0x2969cf[_0x693c('0xd3')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x693c('0xd2'));}var _0x5bde4e=this[_0x693c('0xd')][_0x693c('0x10f')](_0x297a19,_0x2969cf[_0x693c('0x110')],_0x2969cf[_0x693c('0x111')]);var _0x5cda27=_0x5bde4e[_0x693c('0x9f')]?_0x5bde4e[_0x693c('0x9f')][_0x693c('0x112')]():'';logger[_0x693c('0x2c')](_0x693c('0x113'),JSON['stringify'](_0x5bde4e));if(_0x5bde4e[_0x693c('0x9f')]===-0x1){this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x2969cf,_0x5cda27);return _0x5bde4e;}else if(_0x5bde4e[_0x693c('0x9d')]==='timeout'){_0x5bde4e[_0x693c('0x9f')]=_0x5cda27[_0x693c('0x96')]>=parseInt(_0x2969cf['mindigit'])?'x':'i';}else{_0x5bde4e[_0x693c('0x9f')]=_0x5cda27[_0x693c('0x96')]>=parseInt(_0x2969cf[_0x693c('0x114')])&&_0x5cda27[_0x693c('0x96')]<=parseInt(_0x2969cf[_0x693c('0x111')])?'x':'i';}var _0x1e74fa=this[_0x693c('0x11')]['sync'](this,_0x2969cf[_0x693c('0xd3')]);if(!_0x1e74fa){return this['channel'][_0x693c('0x2a')](_0x2969cf,_0x693c('0x115'));}this[_0x693c('0xd')][_0x693c('0x9a')](_0x1e74fa,_0x5cda27);if(this[_0x693c('0x80')](_0x2969cf[_0x693c('0x116')])){var _0x1e7ece=parseInt(_0x2969cf[_0x693c('0x116')],0xa);var _0x30cb4e=rs[_0x693c('0x117')]({'charset':'*','length':_0x1e7ece});var _0x38c73c=_0x5cda27[_0x693c('0x96')];if(_0x38c73c>0x0){if(_0x38c73c>_0x1e7ece){this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x2969cf,_0x2969cf[_0x693c('0x118')]==='first'?_0x30cb4e+_0x5cda27['substr'](_0x1e7ece):_0x5cda27[_0x693c('0x119')](0x0,_0x38c73c-_0x1e7ece)+_0x30cb4e);}else{this[_0x693c('0x34')]['sync'](this,_0x2969cf,rs[_0x693c('0x117')]({'charset':'*','length':_0x38c73c}));}}else{this['createSquareDetailsReport'][_0x693c('0x6e')](this,_0x2969cf,'');}}else{this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x2969cf,_0x5cda27);}return _0x5bde4e;};AGIVertices[_0x693c('0x10')][_0x693c('0x11a')]=function(_0x41490b){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x11b'),_0x41490b[_0x693c('0xa5')]));return this[_0x693c('0xc')](_0x41490b);};AGIVertices[_0x693c('0x10')][_0x693c('0x11c')]=function(_0x4cae59){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x11d'),_0x4cae59[_0x693c('0xa5')]));this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x4cae59,_0x4cae59[_0x693c('0x11e')]);return this['channel']['noop'](util[_0x693c('0x26')](_0x693c('0x11f'),_0x4cae59[_0x693c('0x11e')]));};AGIVertices[_0x693c('0x10')][_0x693c('0x120')]=function(_0x414f96){logger['info'](util[_0x693c('0x26')](_0x693c('0x121'),_0x414f96['label']));if(!this[_0x693c('0x80')](_0x414f96['aws_access_key_id'])||!this['isConfigured'](_0x414f96['aws_secret_access_key'])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0x122'));}if(!this['isConfigured'](_0x414f96[_0x693c('0x5a')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20text\x20configured');}this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x123'),_0x414f96[_0x693c('0x5a')]));var _0x3d85d9=this[_0x693c('0x82')]['sync'](this,_0x414f96);if(_0x3d85d9){this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x124'),_0x3d85d9));var _0x49b585=this[_0x693c('0xd')][_0x693c('0xfe')](_0x3d85d9);try{fs[_0x693c('0x125')](_0x3d85d9+_0x693c('0xff'));}catch(_0x1f66be){logger[_0x693c('0x2a')](_0x1f66be);}return _0x49b585;}return this[_0x693c('0xd')][_0x693c('0x2a')](_0x414f96,_0x693c('0x126'));};AGIVertices[_0x693c('0x10')]['awslex']=function(_0x512d83){logger['info'](util[_0x693c('0x26')](_0x693c('0x127'),_0x512d83[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x512d83[_0x693c('0x83')])||!this[_0x693c('0x80')](_0x512d83[_0x693c('0x84')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x693c('0x80')](_0x512d83[_0x693c('0x8b')])){return this['channel'][_0x693c('0xa7')](_0x693c('0x128'));}if(!this[_0x693c('0x80')](_0x512d83['text'])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xc1'));}this[_0x693c('0xd')][_0x693c('0xe3')]=!![];this[_0x693c('0x34')](_0x512d83);this[_0x693c('0x40')](_0x512d83[_0x693c('0x5a')],'in','','');this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x129'),_0x512d83['text']));var _0x405fe5=this[_0x693c('0x89')][_0x693c('0x6e')](this,_0x512d83);if(_0x405fe5){for(var _0x1a0025 in _0x405fe5){if(_0x405fe5['hasOwnProperty'](_0x1a0025)&&_['isString'](_0x405fe5[_0x1a0025])){this['channel'][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0x12a'),_0x1a0025[_0x693c('0x67')]()),_0x405fe5[_0x1a0025]);}}if(_[_0x693c('0x45')](_0x405fe5[_0x693c('0x74')])){return this['channel']['noop'](_0x693c('0x12b'));}else{this[_0x693c('0x40')](_0x405fe5[_0x693c('0x74')],_0x693c('0xe7'),_0x693c('0x12c'),'');return this[_0x693c('0xd')]['noop'](util[_0x693c('0x26')](_0x693c('0x12d'),_0x405fe5[_0x693c('0x74')]));}}return this[_0x693c('0xd')]['error'](_0x512d83,_0x693c('0x12e'));};AGIVertices[_0x693c('0x10')][_0x693c('0x12f')]=function(_0x1b1e2d){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x130'),_0x1b1e2d[_0x693c('0xa5')],_0x1b1e2d['timeout']));if(!this[_0x693c('0x80')](_0x1b1e2d[_0x693c('0x77')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xe2'));}var _0x3cc7cd=_0x693c('0x131');var _0x1da464=util[_0x693c('0x26')](_0x693c('0x132'),FILES_PATH,rs[_0x693c('0x117')](0x4));var _0x3cfa62=util[_0x693c('0x26')]('%s.%s',_0x1da464,_0x3cc7cd);var _0x2f6c7b=!![];if(_0x1b1e2d[_0x693c('0x133')]==='NOBEEP'){_0x2f6c7b=![];}var _0x14ba69=this[_0x693c('0xd')][_0x693c('0x134')](_0x1da464,_0x3cc7cd,_0x1b1e2d[_0x693c('0x135')],_0x1b1e2d[_0x693c('0x63')],undefined,_0x2f6c7b);if(_0x14ba69[_0x693c('0x9f')]!==-0x1){this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')]('google\x20%s\x20file\x20created',_0x3cfa62));var _0x5a4874=this[_0x693c('0x8c')]['sync'](this,_0x1b1e2d,_0x3cfa62);if(_0x5a4874){for(var _0x290fe7 in _0x5a4874){if(_0x5a4874[_0x693c('0x92')](_0x290fe7)){this[_0x693c('0xd')][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0x136'),_0x290fe7[_0x693c('0x67')]()),_0x5a4874[_0x290fe7]);}}return this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0x137'),JSON['stringify'](_0x5a4874)));}}return _0x14ba69;};AGIVertices[_0x693c('0x10')]['tildeasr']=function(_0x2144fe){logger['info'](util[_0x693c('0x26')](_0x693c('0x138'),_0x2144fe[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x2144fe['appid'])){return this[_0x693c('0xd')]['noop']('no\x20appid\x20configured');}if(!this['isConfigured'](_0x2144fe[_0x693c('0x8f')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20appsecret\x20configured');}var _0x2b1905=_0x693c('0x131');var _0x4bf100=util[_0x693c('0x26')]('%s/recordings/%s',FILES_PATH,rs[_0x693c('0x117')](0x4));var _0x40521b=util['format'](_0x693c('0x98'),_0x4bf100,_0x2b1905);var _0x16ac2d=!![];if(_0x2144fe[_0x693c('0x133')]==='NOBEEP'){_0x16ac2d=![];}var _0xb6f18e=this['channel'][_0x693c('0x134')](_0x4bf100,_0x2b1905,_0x2144fe[_0x693c('0x135')],_0x2144fe[_0x693c('0x63')],undefined,_0x16ac2d);if(_0xb6f18e[_0x693c('0x9f')]!==-0x1){this['channel']['noop'](util[_0x693c('0x26')]('tilde\x20%s\x20file\x20created',_0x40521b));var _0x3ed21b=this[_0x693c('0x139')][_0x693c('0x6e')](this,_0x2144fe,_0x40521b);if(_0x3ed21b){for(var _0x569595 in _0x3ed21b){if(_0x3ed21b[_0x693c('0x92')](_0x569595)){this['channel'][_0x693c('0x9a')](util['format'](_0x693c('0x13a'),_0x569595[_0x693c('0x67')]()),_0x3ed21b[_0x569595]);}}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')]('TildeASR\x20Result\x20%s',JSON[_0x693c('0x70')](_0x3ed21b)));}}return _0xb6f18e;};AGIVertices[_0x693c('0x10')][_0x693c('0x13b')]=function(_0x3ec23d){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x13c'),_0x3ec23d[_0x693c('0xa5')]));return this['channel']['continueAt'](_0x3ec23d['context'],_0x3ec23d['extension'],_0x3ec23d['priority']);};AGIVertices['prototype'][_0x693c('0x13d')]=function(_0xe62cb1){logger['info'](util[_0x693c('0x26')](_0x693c('0x13e'),_0xe62cb1[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0xe62cb1[_0x693c('0x13f')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0xe62cb1,_0x693c('0x140'));}try{var _0xf2e08f=eval(_0xe62cb1[_0x693c('0x13f')])?'true':_0x693c('0x141');this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x142'),_0xe62cb1[_0x693c('0x13f')],_0xf2e08f));return{'code':0xc8,'result':_0xf2e08f};}catch(_0x8a7160){return{'code':0xc8,'result':_0x693c('0x141')};}};AGIVertices[_0x693c('0x10')][_0x693c('0x143')]=function(_0x3e1265){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x3e1265[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x3e1265[_0x693c('0x144')])){return this[_0x693c('0xd')]['error'](_0x3e1265,_0x693c('0x145'));}var _0x2aff48=this['getIntervals']['sync'](this,_0x3e1265[_0x693c('0x144')]);if(!_0x2aff48){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x3e1265,_0x693c('0x146'));}for(var _0x38c053=0x0;_0x38c053<_0x2aff48[_0x693c('0x96')];_0x38c053+=0x1){var _0x4e7a13=this[_0x693c('0xd')][_0x693c('0x11')](util[_0x693c('0x26')](_0x693c('0x147'),_0x2aff48[_0x38c053]));if(_0x4e7a13[_0x693c('0x9f')]===-0x1){return _0x4e7a13;}logger['info'](util['format']('IFTIME\x20%s\x20%s',_0x2aff48[_0x38c053],_0x4e7a13[_0x693c('0x9d')]));if(_0x4e7a13[_0x693c('0x9d')]===_0x693c('0x148')){logger['info'](util[_0x693c('0x26')](_0x693c('0x149'),_0x2aff48[_0x38c053],_0x693c('0x148')));this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x149'),_0x2aff48[_0x38c053],_0x693c('0x148')));return{'code':0xc8,'result':'true'};}else{logger[_0x693c('0x2c')](util[_0x693c('0x26')]('IFTIME\x20%s\x20%s',_0x2aff48[_0x38c053],'false'));this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x149'),_0x2aff48[_0x38c053],_0x693c('0x141')));}}return{'code':0xc8,'result':_0x693c('0x141')};};AGIVertices['prototype']['hangup']=function(_0x55a72f){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x55a72f[_0x693c('0xa5')]));return this[_0x693c('0xd')][_0x693c('0x14a')]();};AGIVertices[_0x693c('0x10')][_0x693c('0x14b')]=function(_0x59f391){logger['info'](util[_0x693c('0x26')](_0x693c('0x14c'),_0x59f391[_0x693c('0xa5')]));if(!this['isConfigured'](_0x59f391[_0x693c('0x77')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xe2'));}var _0x2a5b9c=_0x693c('0x131');var _0x2a5ee7=util[_0x693c('0x26')](_0x693c('0x132'),FILES_PATH,rs['generate'](0x4));var _0x5005f5=util['format']('%s.%s',_0x2a5ee7,_0x2a5b9c);var _0x1a84c9=!![];if(_0x59f391['beep']==='NOBEEP'){_0x1a84c9=![];}var _0x302b69=this[_0x693c('0xd')]['recordFile'](_0x2a5ee7,_0x2a5b9c,_0x59f391[_0x693c('0x135')],_0x59f391[_0x693c('0x63')],undefined,_0x1a84c9);if(_0x302b69['result']!==-0x1){this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0x14d'),_0x5005f5));var _0x5da807=this[_0x693c('0x7e')][_0x693c('0x6e')](this,_0x59f391,_0x5005f5);if(_0x5da807){for(var _0xaed353 in _0x5da807){if(_0x5da807['hasOwnProperty'](_0xaed353)){this[_0x693c('0xd')]['setVariable'](util[_0x693c('0x26')]('ISPEECH_ASR_%s',_0xaed353[_0x693c('0x67')]()),_0x5da807[_0xaed353]);}}return this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0x14e'),JSON[_0x693c('0x70')](_0x5da807)));}}return _0x302b69;};AGIVertices['prototype'][_0x693c('0x14f')]=function(_0x48ac7f){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x150'),_0x48ac7f[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x48ac7f[_0x693c('0x77')])){return this[_0x693c('0xd')]['noop'](_0x693c('0xe2'));}if(!this['isConfigured'](_0x48ac7f[_0x693c('0x5a')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xc1'));}this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x151'),_0x48ac7f[_0x693c('0x5a')]));var _0x1ce7dd=this[_0x693c('0x7c')][_0x693c('0x6e')](this,_0x48ac7f);if(_0x1ce7dd){this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x14d'),_0x1ce7dd));var _0x14b627=this[_0x693c('0xd')][_0x693c('0xfe')](_0x1ce7dd,_0x48ac7f[_0x693c('0x135')]);try{fs[_0x693c('0x125')](_0x1ce7dd+_0x693c('0xff'));}catch(_0x5a682a){logger['error'](_0x5a682a);}return _0x14b627;}return this[_0x693c('0xd')]['error'](_0x48ac7f,_0x693c('0x152'));};AGIVertices[_0x693c('0x10')][_0x693c('0x153')]=function(_0x32292c){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x154'),_0x32292c[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x32292c[_0x693c('0x155')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x32292c,'no\x20find\x20by\x20configured');}logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x156'),this[_0x693c('0xd')][_0x693c('0x36')],_0x32292c[_0x693c('0x155')]));var _0x535a9b=this[_0x693c('0x4f')]['sync'](this,_0x32292c[_0x693c('0x155')]);if(_0x535a9b){logger['info'](util[_0x693c('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x693c('0xd')][_0x693c('0x36')],_0x32292c[_0x693c('0x155')]));this[_0x693c('0xd')]['noop'](util[_0x693c('0x26')](_0x693c('0x157'),this[_0x693c('0xd')][_0x693c('0x36')],_0x32292c[_0x693c('0x155')]));return{'code':0xc8,'result':_0x693c('0x158')};}else{logger[_0x693c('0x2c')](util[_0x693c('0x26')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x693c('0xd')][_0x693c('0x36')],_0x32292c[_0x693c('0x155')]));this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0x159'),this[_0x693c('0xd')]['callerid'],_0x32292c[_0x693c('0x155')]));return{'code':0xc8,'result':_0x693c('0x15a')};}};AGIVertices['prototype'][_0x693c('0x15b')]=function(_0x41eb70){logger[_0x693c('0x2c')](util['format']('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x41eb70[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x41eb70['findBy'])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x41eb70,'no\x20find\x20by\x20configured');}logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x156'),this['channel'][_0x693c('0x36')],_0x41eb70[_0x693c('0x155')]));var _0x1c9fda=this[_0x693c('0x4e')][_0x693c('0x6e')](this,_0x41eb70[_0x693c('0x155')]);if(_0x1c9fda){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x157'),this[_0x693c('0xd')][_0x693c('0x36')],_0x41eb70[_0x693c('0x155')]));this['channel']['noop'](util[_0x693c('0x26')](_0x693c('0x157'),this[_0x693c('0xd')][_0x693c('0x36')],_0x41eb70[_0x693c('0x155')]));return{'code':0xc8,'result':_0x693c('0x158')};}else{logger['info'](util[_0x693c('0x26')](_0x693c('0x159'),this[_0x693c('0xd')][_0x693c('0x36')],_0x41eb70[_0x693c('0x155')]));this['channel']['noop'](util[_0x693c('0x26')](_0x693c('0x159'),this[_0x693c('0xd')][_0x693c('0x36')],_0x41eb70['findBy']));return{'code':0xc8,'result':_0x693c('0x15a')};}};AGIVertices[_0x693c('0x10')][_0x693c('0x15c')]=function(_0x5a1f48){logger[_0x693c('0x2c')](util['format'](_0x693c('0x15d'),_0x5a1f48[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x5a1f48['operation'])){return this['channel'][_0x693c('0x2a')](_0x5a1f48,'no\x20operation\x20configured');}this[_0x693c('0xd')]['noop'](util[_0x693c('0x26')](_0x693c('0x15e'),_0x5a1f48[_0x693c('0x15f')]));var _0x2f8053=eval(_0x5a1f48['operation']);if(!this['isConfigured'](_0x5a1f48[_0x693c('0xd3')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x4b189c=this[_0x693c('0x11')]['sync'](this,_0x5a1f48[_0x693c('0xd3')]);if(!_0x4b189c){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x5a1f48,_0x693c('0x115'));}if(_['isArray'](_0x2f8053)){var _0x5cd280=this;_0x2f8053[_0x693c('0xd4')](function(_0x18b4cb,_0x2e2d16){_0x5cd280[_0x693c('0xd')][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0x160'),_0x4b189c,_0x2e2d16),_0x18b4cb);});return this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x161'),_0x4b189c));}else{return this[_0x693c('0xd')][_0x693c('0x9a')](_0x4b189c,_0x2f8053);}};AGIVertices[_0x693c('0x10')][_0x693c('0xb')]=function(_0x3d2f12){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x162'),_0x3d2f12[_0x693c('0xa5')]));if(_0x3d2f12[_0x693c('0xa2')]===0x0){return this[_0x693c('0xa1')](_0x3d2f12);}_0x3d2f12[_0x693c('0xa2')]-=0x1;if(!this[_0x693c('0x80')](_0x3d2f12[_0x693c('0x10d')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x3d2f12,_0x693c('0x163'));}var _0x51393f=this[_0x693c('0x1e')][_0x693c('0x6e')](this,_0x3d2f12[_0x693c('0x10d')]);if(!_0x51393f){return this['channel'][_0x693c('0x2a')](_0x3d2f12,_0x693c('0x10e'));}var _0x4bd171=this[_0x693c('0xd')][_0x693c('0x10f')](_0x51393f,_0x3d2f12[_0x693c('0x110')],_0x3d2f12[_0x693c('0x164')]);var _0x57944e=_0x4bd171[_0x693c('0x9f')];if(_0x4bd171['result']===-0x1){this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x3d2f12,'-1');return _0x4bd171;}else if(_0x4bd171[_0x693c('0x9d')]==='timeout'){_0x4bd171['result']=_0x4bd171[_0x693c('0x9f')]['length']>0x0?_0x4bd171['result']:'t';}else if(_[_0x693c('0x42')](_0x4bd171[_0x693c('0x9f')])){_0x4bd171[_0x693c('0x9f')]='#';_0x57944e='#';}if(!this[_0x693c('0x80')](_0x3d2f12[_0x693c('0xd3')])){this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0xd2'));}else{var _0x416848=this[_0x693c('0x11')]['sync'](this,_0x3d2f12[_0x693c('0xd3')]);if(!_0x416848){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x3d2f12,_0x693c('0x115'));}this[_0x693c('0xd')][_0x693c('0x9a')](_0x416848,_0x57944e);}this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x3d2f12,_0x57944e);return _0x4bd171;};AGIVertices[_0x693c('0x10')][_0x693c('0xa7')]=function(_0xbb5c87){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x165'),_0xbb5c87[_0x693c('0xa5')]));return this[_0x693c('0xd')][_0x693c('0xa7')](_0xbb5c87['output']||_0xbb5c87['label']);};AGIVertices[_0x693c('0x10')][_0x693c('0x166')]=function(_0x2fa07a){logger[_0x693c('0x2c')](util['format'](_0x693c('0x167'),_0x2fa07a[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x2fa07a[_0x693c('0x155')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x2fa07a,_0x693c('0x168'));}logger[_0x693c('0x2c')](util[_0x693c('0x26')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x693c('0x36')],_0x2fa07a[_0x693c('0x155')]));var _0x21535d=this[_0x693c('0x169')][_0x693c('0x6e')](this,_0x2fa07a['pause_id']);var _0x1c9b02=this[_0x693c('0x4b')][_0x693c('0x6e')](this,_0x2fa07a[_0x693c('0x155')],_0x21535d);if(_0x1c9b02){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x157'),this['channel'][_0x693c('0x36')],_0x2fa07a[_0x693c('0x155')]));this[_0x693c('0xd')]['noop'](util['format'](_0x693c('0x157'),this[_0x693c('0xd')]['callerid'],_0x2fa07a[_0x693c('0x155')]));return{'code':0xc8,'result':_0x693c('0x158')};}else{logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x159'),this['channel']['callerid'],_0x2fa07a['findBy']));this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x157'),this[_0x693c('0xd')]['callerid'],_0x2fa07a[_0x693c('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x693c('0x10')][_0x693c('0x16a')]=function(_0x4859ba){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x16b'),_0x4859ba[_0x693c('0xa5')]));if(!this['isConfigured'](_0x4859ba[_0x693c('0x10d')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x4859ba,'no\x20file\x20audio\x20selected');}var _0x545a4c=this[_0x693c('0x1e')][_0x693c('0x6e')](this,_0x4859ba[_0x693c('0x10d')]);if(!_0x545a4c){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x4859ba,_0x693c('0x10e'));}var _0x1162de=this['channel']['exec'](_0x693c('0x16c'),[_0x545a4c,_0x4859ba[_0x693c('0x109')]]);if(_0x1162de['result']===-0x1){return _0x1162de;}return this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0xbe'),_0x693c('0x16c'),_0x545a4c));};AGIVertices[_0x693c('0x10')][_0x693c('0x16d')]=function(_0x245388){logger[_0x693c('0x2c')](util['format'](_0x693c('0x16e'),_0x245388[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x245388['queue_id'])){return this['channel']['error'](_0x245388,_0x693c('0x16f'));}var _0x581055='';var _0x424d10=parseInt(_0x245388[_0x693c('0x170')],0xa);if(isNaN(_0x424d10)){_0x581055=_0x245388[_0x693c('0x170')];}else{_0x581055=this['getVoiceQueue']['sync'](this,_0x245388['queue_id']);if(!_0x581055){return this['channel']['error'](_0x245388,_0x693c('0x171'));}}var _0x10a32f='';if(this[_0x693c('0x80')](_0x245388['file_id'])){var _0x1a59df=this[_0x693c('0x1e')][_0x693c('0x6e')](this,_0x245388[_0x693c('0x10d')]);if(_0x1a59df){_0x10a32f=_0x1a59df;}}this[_0x693c('0x34')]['sync'](this,_0x245388,_0x581055);if(_0x245388[_0x693c('0x109')]['indexOf']('x')<0x0){_0x245388[_0x693c('0x109')]+='x';}if(_0x245388[_0x693c('0x109')][_0x693c('0x172')]('X')<0x0){_0x245388[_0x693c('0x109')]+='X';}this['channel']['setVariable'](_0x693c('0x173'),_0x581055?_0x581055[_0x693c('0x174')]():'');var _0x5cd9ba=this[_0x693c('0xd')][_0x693c('0x54')](_0x693c('0x175'),[_0x581055,_0x245388[_0x693c('0x109')],_0x245388[_0x693c('0xdf')],_0x10a32f,_0x245388[_0x693c('0x63')],_0x245388[_0x693c('0x7')],_0x245388[_0x693c('0x176')],_0x245388[_0x693c('0x177')],'',_0x245388['position']]);if(_0x5cd9ba[_0x693c('0x9f')]===-0x1){return _0x5cd9ba;}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xbe'),_0x693c('0x175'),_0x581055));};AGIVertices[_0x693c('0x10')][_0x693c('0x178')]=function(_0x984e06){logger['info'](util['format'](_0x693c('0x179'),_0x984e06[_0x693c('0xa5')]));var _0x1545ac=_0x984e06[_0x693c('0x17a')]||_0x693c('0x131');var _0x1e4f8b=util[_0x693c('0x26')](_0x693c('0x17b'),this[_0x693c('0xd')][_0x693c('0x38')],rs[_0x693c('0x117')](0x5));var _0x43b106=util[_0x693c('0x26')](_0x693c('0x17c'),FILES_PATH,_0x1e4f8b,_0x1545ac);var _0x6e80d8=util['format'](_0x693c('0x132'),FILES_PATH,_0x1e4f8b);this[_0x693c('0x37')][_0x693c('0x6e')](this,_0x984e06,_0x1e4f8b,_0x43b106);this[_0x693c('0xd')][_0x693c('0x9a')](_0x693c('0x17d'),_0x1e4f8b);logger['info'](_0x693c('0x17e'),_0x6e80d8,_0x1545ac,_0x984e06['escape_digits'],_0x984e06[_0x693c('0x63')]);return this[_0x693c('0xd')]['recordFile'](_0x6e80d8,_0x1545ac,_0x984e06[_0x693c('0x17f')],_0x984e06['timeout'],undefined,!![]);};AGIVertices['prototype']['restapi']=function(_0x3837c9){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x180'),_0x3837c9[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x3837c9[_0x693c('0xdf')])){return this['channel']['noop'](_0x693c('0x181'));}var _0x1267cb=this['restAPI']['sync'](this,_0x3837c9);logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Response:',util[_0x693c('0x182')](_0x1267cb,{'showHidden':![],'depth':null})));if(!this[_0x693c('0x80')](_0x3837c9['variable_id'])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0x183'));}var _0x480ae2=this[_0x693c('0x11')][_0x693c('0x6e')](this,_0x3837c9[_0x693c('0xd3')]);if(!_0x480ae2){return this[_0x693c('0xd')]['error'](_0x3837c9,_0x693c('0x115'));}this['channel'][_0x693c('0x9a')](util[_0x693c('0x26')](_0x693c('0x184'),_0x480ae2),_0x1267cb[_0x693c('0x72')]?_0x1267cb[_0x693c('0x72')]:_0x693c('0x185'));this['channel'][_0x693c('0x9a')](util[_0x693c('0x26')]('%s_STATUS_MESSAGE',_0x480ae2),_0x1267cb[_0x693c('0x73')]?_0x1267cb[_0x693c('0x73')]:'OK');if(_0x1267cb['body']){try{this[_0x693c('0x97')](_0x1267cb['body'],_0x480ae2);}catch(_0x5a0a5f){logger['error'](util[_0x693c('0x26')](_0x693c('0x186'),_0x480ae2));}}return this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0xd8'),_0x480ae2));};AGIVertices[_0x693c('0x10')][_0x693c('0x187')]=function(_0x3baaa8){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x188'),_0x3baaa8[_0x693c('0xa5')]));return this[_0x693c('0xd')][_0x693c('0x189')](_0x3baaa8[_0x693c('0x18a')][_0x693c('0x56')](/\s+/g,''),_0x3baaa8[_0x693c('0x17f')]);};AGIVertices[_0x693c('0x10')][_0x693c('0x18b')]=function(_0x30a3e6){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x30a3e6['label']));return this[_0x693c('0xd')][_0x693c('0x18c')](_0x30a3e6['number'][_0x693c('0x56')](/\s+/g,''),_0x30a3e6[_0x693c('0x17f')]);};AGIVertices[_0x693c('0x10')][_0x693c('0x18d')]=function(_0x57a093){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x57a093[_0x693c('0xa5')]));return this[_0x693c('0xd')][_0x693c('0x18e')](_0x57a093[_0x693c('0x5a')],_0x57a093[_0x693c('0x17f')]);};AGIVertices['prototype'][_0x693c('0x18f')]=function(_0x284b39){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x284b39['label']));if(!this['isConfigured'](_0x284b39[_0x693c('0x190')])){return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0x191'));}var _0x49e132=this['getMailAccount']['sync'](this,_0x284b39[_0x693c('0x190')]);if(!_0x49e132||!_0x49e132[_0x693c('0x192')]){return this[_0x693c('0xd')]['error'](_0x284b39,'no\x20mail\x20account\x20found');}var _0x1b2ebe={'from':util[_0x693c('0x26')]('\x22%s\x22\x20<%s>',_0x49e132[_0x693c('0x14')],_0x49e132[_0x693c('0x193')]||_0x49e132[_0x693c('0x192')]['user']),'to':_0x284b39['to']||'','cc':_0x284b39['cc']||'','bcc':_0x284b39[_0x693c('0x194')]||'','subject':_0x284b39['subject'],'html':_0x284b39[_0x693c('0x5a')],'text':_0x284b39[_0x693c('0x5a')]};var _0x140d0d={'tls':{'rejectUnauthorized':![]}};if(_0x49e132[_0x693c('0x192')][_0x693c('0x195')]){_0x140d0d[_0x693c('0x195')]=_0x49e132['Smtp'][_0x693c('0x195')];}else{_0x140d0d[_0x693c('0x196')]=_0x49e132[_0x693c('0x192')][_0x693c('0x196')];_0x140d0d[_0x693c('0x197')]=_0x49e132[_0x693c('0x192')][_0x693c('0x197')];_0x140d0d[_0x693c('0x198')]=_0x49e132[_0x693c('0x192')][_0x693c('0x198')];}if(_0x49e132[_0x693c('0x192')][_0x693c('0x199')]){_0x140d0d['auth']={'user':_0x49e132[_0x693c('0x192')]['user'],'pass':_0x49e132['Smtp'][_0x693c('0x19a')]};}if(this['isConfigured'](_0x284b39[_0x693c('0x19b')])){}logger[_0x693c('0x19c')](_0x693c('0x19d'),JSON[_0x693c('0x70')](_0x1b2ebe));this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x284b39,_0x284b39['account_id']);this['channel']['noop'](util[_0x693c('0x26')](_0x693c('0x19e'),_0x49e132[_0x693c('0x14')]));this[_0x693c('0x23')][_0x693c('0x6e')](this,_0x140d0d,_0x1b2ebe);return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0x19f'));};AGIVertices[_0x693c('0x10')][_0x693c('0x1a0')]=function(_0x64d22){logger[_0x693c('0x2c')](util['format']('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x64d22[_0x693c('0xa5')]));return this[_0x693c('0xd')]['noop'](_0x693c('0x1a1'));};AGIVertices[_0x693c('0x10')]['sendSMS']=function(_0x4e7967){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x1a2'),_0x4e7967[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x4e7967[_0x693c('0x1a3')])){return this[_0x693c('0xd')][_0x693c('0xa7')]('no\x20sms\x20account\x20configured');}var _0x5611ef=this[_0x693c('0x31')][_0x693c('0x6e')](this,_0x4e7967[_0x693c('0x1a3')]);if(!_0x5611ef){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x4e7967,'no\x20sms\x20account\x20found');}var _0x128af7={'body':_0x4e7967[_0x693c('0x1a4')],'phone':_0x4e7967['to']||'','SmsAccountId':_0x5611ef['id']};logger[_0x693c('0x19c')]('sendSMS\x20message',JSON[_0x693c('0x70')](_0x128af7));this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x4e7967,_0x4e7967[_0x693c('0x1a3')]);this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x1a5'),_0x5611ef['name']));this[_0x693c('0x33')][_0x693c('0x6e')](this,_0x128af7);return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0x1a6'));};AGIVertices[_0x693c('0x10')]['set']=function(_0x36fe98){logger[_0x693c('0x2c')](util['format'](_0x693c('0x1a7'),_0x36fe98[_0x693c('0xa5')]));if(!this['isConfigured'](_0x36fe98[_0x693c('0xd3')])){return this['channel'][_0x693c('0x2a')](_0x36fe98,'no\x20variable\x20selected');}var _0x675f8f=this[_0x693c('0x11')]['sync'](this,_0x36fe98[_0x693c('0xd3')]);if(!_0x675f8f){return this[_0x693c('0xd')]['error'](_0x36fe98,_0x693c('0x115'));}return this[_0x693c('0xd')][_0x693c('0x9a')](_0x675f8f,_0x36fe98[_0x693c('0x1a8')]);};AGIVertices[_0x693c('0x10')]['start']=function(_0x526433){logger['info'](util[_0x693c('0x26')]('Enter\x20in\x20START\x20(%s)\x20block',_0x526433[_0x693c('0xa5')]));this[_0x693c('0xd')]['noop'](_0x693c('0x1a9'));if(_0x526433[_0x693c('0xb4')]===_0x693c('0x1aa')){this[_0x693c('0xd')]['noop']('Answer');return this[_0x693c('0xd')][_0x693c('0xb4')]();}return this[_0x693c('0xd')][_0x693c('0xa7')](_0x693c('0x1ab'));};AGIVertices[_0x693c('0x10')][_0x693c('0x1ac')]=function(_0x2f6a81){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x1ad'),_0x2f6a81[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x2f6a81[_0x693c('0x1ae')])){return this['channel']['error'](_0x2f6a81,'no\x20subproject\x20selected');}var _0x15187c=this['getSquareProject'][_0x693c('0x6e')](this,_0x2f6a81['project_id']);if(!this[_0x693c('0x80')](_0x15187c)){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x2f6a81,util[_0x693c('0x26')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x2f6a81[_0x693c('0x1ae')]));}if(_0x15187c===this[_0x693c('0xd')][_0x693c('0x3e')]){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x2f6a81,_0x693c('0x1af'));}this[_0x693c('0x34')][_0x693c('0x6e')](this,_0x2f6a81,_0x15187c);var _0x5d5c92=this[_0x693c('0xd')][_0x693c('0x54')](_0x693c('0x1b0'),util[_0x693c('0x26')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x693c('0x7')][_0x693c('0x196')]||'127.0.0.1',_0x15187c,this[_0x693c('0xd')][_0x693c('0x3e')]));if(_0x5d5c92[_0x693c('0x9f')]===-0x1){return _0x5d5c92;}return this['channel']['noop'](util['format'](_0x693c('0xbe'),'AGI',_0x15187c));};AGIVertices[_0x693c('0x10')][_0x693c('0x1b1')]=function(_0x3c121d){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x1b2'),_0x3c121d[_0x693c('0xa5')]));var _0x3aa070=this['shellCommand'][_0x693c('0x6e')](this,_0x3c121d[_0x693c('0xb3')]);this[_0x693c('0x34')]['sync'](this,_0x3c121d,_0x3c121d[_0x693c('0xb3')]);if(this[_0x693c('0x80')](_0x3c121d[_0x693c('0xd3')])){var _0x220dd7=this['getVariable'][_0x693c('0x6e')](this,_0x3c121d['variable_id']);if(_0x220dd7){this['channel'][_0x693c('0x9a')](_0x220dd7,_0x3aa070);return this[_0x693c('0xd')]['noop'](util[_0x693c('0x26')](_0x693c('0x1b3'),_0x3c121d['command'],_0x220dd7));}}return this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x1b4'),_0x3c121d[_0x693c('0xb3')]));};AGIVertices[_0x693c('0x10')][_0x693c('0x1b5')]=function(_0xcab395){logger['info'](util[_0x693c('0x26')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0xcab395[_0x693c('0xa5')]));_0xcab395[_0x693c('0x5a')]=_0xcab395[_0x693c('0x5a')][_0x693c('0x56')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x693c('0x80')](_0xcab395[_0x693c('0x58')])){return this[_0x693c('0xd')]['noop'](_0x693c('0x1b6'));}if(!this['isConfigured'](_0xcab395[_0x693c('0x5a')])){return this['channel'][_0x693c('0xa7')](_0x693c('0xc1'));}this[_0x693c('0xd')][_0x693c('0xa7')](util['format'](_0x693c('0x1b7'),_0xcab395['text']));var _0x2922e2=this[_0x693c('0x57')][_0x693c('0x6e')](this,_0xcab395);if(_0x2922e2){this['channel'][_0x693c('0xa7')](util[_0x693c('0x26')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x2922e2));var _0x55aa4e=this[_0x693c('0xd')][_0x693c('0xfe')](_0x2922e2);try{fs[_0x693c('0x125')](_0x2922e2+_0x693c('0xff'));}catch(_0x4aaffa){logger[_0x693c('0x2a')](_0x4aaffa);}return _0x55aa4e;}return this['channel'][_0x693c('0x2a')](_0xcab395,_0x693c('0x1b8'));};AGIVertices[_0x693c('0x10')][_0x693c('0x1b9')]=function(_0x5299c6){logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x1ba'),_0x5299c6[_0x693c('0xa5')]));_0x5299c6['text']=_0x5299c6[_0x693c('0x5a')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x5299c6[_0x693c('0x5a')])){return this['channel'][_0x693c('0xa7')](_0x693c('0xc1'));}this[_0x693c('0xd')]['noop'](util[_0x693c('0x26')]('Trying\x20Google\x20TTS\x20%s',_0x5299c6[_0x693c('0x5a')]));var _0x1b4757=this[_0x693c('0x60')]['sync'](this,_0x5299c6);if(_0x1b4757){this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x1bb'),_0x1b4757));var _0x1ffd1c=this[_0x693c('0xd')][_0x693c('0xfe')](_0x1b4757);try{fs[_0x693c('0x125')](_0x1b4757+_0x693c('0xff'));}catch(_0x4890c6){logger[_0x693c('0x2a')](_0x4890c6);}return _0x1ffd1c;}return this[_0x693c('0xd')][_0x693c('0x2a')](_0x5299c6,_0x693c('0x1bc'));};AGIVertices[_0x693c('0x10')][_0x693c('0x1bd')]=function(_0x553af7){logger['info'](util[_0x693c('0x26')](_0x693c('0x1be'),_0x553af7[_0x693c('0xa5')]));if(!this[_0x693c('0x80')](_0x553af7[_0x693c('0x155')])){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x553af7,_0x693c('0x168'));}logger[_0x693c('0x2c')](util['format'](_0x693c('0x156'),this['channel'][_0x693c('0x36')],_0x553af7[_0x693c('0x155')]));var _0x53f284=this['agentUnpause'][_0x693c('0x6e')](this,_0x553af7[_0x693c('0x155')]);if(_0x53f284){logger[_0x693c('0x2c')](util['format'](_0x693c('0x157'),this[_0x693c('0xd')][_0x693c('0x36')],_0x553af7[_0x693c('0x155')]));this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x157'),this[_0x693c('0xd')][_0x693c('0x36')],_0x553af7[_0x693c('0x155')]));return{'code':0xc8,'result':_0x693c('0x158')};}else{logger[_0x693c('0x2c')](util[_0x693c('0x26')](_0x693c('0x159'),this[_0x693c('0xd')][_0x693c('0x36')],_0x553af7[_0x693c('0x155')]));this[_0x693c('0xd')][_0x693c('0xa7')](util[_0x693c('0x26')](_0x693c('0x159'),this['channel'][_0x693c('0x36')],_0x553af7['findBy']));return{'code':0xc8,'result':_0x693c('0x15a')};}};AGIVertices[_0x693c('0x10')][_0x693c('0x1bf')]=function(_0x4dcbf4){logger[_0x693c('0x2c')](util[_0x693c('0x26')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x4dcbf4[_0x693c('0xa5')]));var _0x1ed146=this[_0x693c('0xd')][_0x693c('0x54')]('VOICEMAIL',[_0x4dcbf4[_0x693c('0x1c0')],_0x4dcbf4[_0x693c('0x75')]]);if(_0x1ed146['result']===-0x1){return _0x1ed146;}return this['channel']['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0x693c('0x1c1'),_0x4dcbf4[_0x693c('0x1c0')]));};AGIVertices[_0x693c('0x10')][_0x693c('0x1c2')]=function(_0x47dac3){logger['info'](util[_0x693c('0x26')]('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x47dac3['label']));if(!this[_0x693c('0x80')](_0x47dac3[_0x693c('0xd3')])){return this[_0x693c('0xd')]['error'](_0x47dac3,_0x693c('0x1c3'));}var _0x49cbfd=this[_0x693c('0x11')][_0x693c('0x6e')](this,_0x47dac3[_0x693c('0xd3')]);if(!_0x49cbfd){return this[_0x693c('0xd')][_0x693c('0x2a')](_0x47dac3,_0x693c('0x115'));}var _0x4b7aca=this['channel'][_0x693c('0x11')](_0x49cbfd);return{'code':0xc8,'result':_0x4b7aca[_0x693c('0x9d')]?_0x4b7aca[_0x693c('0x9d')]:'-'};};String['prototype']['replaceAll']=function(_0x295c1e,_0x2a34b4){return this[_0x693c('0x9c')](_0x295c1e)[_0x693c('0x1c4')](_0x2a34b4);};module[_0x693c('0x1c5')]=AGIVertices;
\ No newline at end of file
+var _0x742d=['Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','sayPhonetic','sendMail','no\x20mail\x20account\x20configured','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','subject','service','host','port','secure','authentication','pass','template_id','sendMail\x20message','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','START\x20CALLY\x20SQUARE','Skipped\x20Answer','subproject','project_id','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','google_cloud_tts','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','path','util','lodash','shelljs','odbc','randomstring','mustache','request-promise','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','getsecretdigits','channel','mailRpc','prototype','getVariable','rpc','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','format','getQueryOdbc','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','info','Query\x20executed\x20correctly\x20%s','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','callerid','extension','priority','accountcode','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','random','isNil','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','timeout','includes','POST','toUpperCase','body','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_polly_voice','Amy','aws_text_type','awsLex','aws_access_key_id','aws_secret_access_key','googleASR','google_asr_language','tildeASR','clear','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','length','saveRestApiResult','isArray','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','agi','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','no\x20list\x20selected','delay','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','keys','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','SIP/%s','opts','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','SestekNDA\x20Result\x20%s','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','maxRetry','file_id','no\x20file\x20audio\x20found','response','maxdigit','test','mindigit','hiddendigitsnum','hiddendigitspos','first','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','aws\x20Polly\x20%s\x20file\x20created','.wav','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','beep','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','operation','no\x20operation\x20configured','%s[%s]','menu','no\x20file\x20audio\x20selected'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x742d,0x66));var _0xd742=function(_0x292776,_0x54b6e5){_0x292776=_0x292776-0x0;var _0x2dee26=_0x742d[_0x292776];return _0x2dee26;};'use strict';var fs=require('fs');var path=require(_0xd742('0x0'));var util=require(_0xd742('0x1'));var _=require(_0xd742('0x2'));var sh=require(_0xd742('0x3'));var odbc=require(_0xd742('0x4'))();var rs=require(_0xd742('0x5'));var moment=require('moment');var Mustache=require(_0xd742('0x6'));var rp=require(_0xd742('0x7'));var logger=require('../../config/logger')('agi');var config=require(_0xd742('0x8'));var scripts=require(_0xd742('0x9'));var FILES_PATH=_0xd742('0xa');var recursiveMapAttributes=[_0xd742('0xb'),_0xd742('0xc')];var verticesWithRetry=['menu','getdigits',_0xd742('0xd')];var AGIVertices=function(_0x3469b5,_0x4845e2,_0x5386c1){this[_0xd742('0xe')]=_0x3469b5;this['rpc']=_0x4845e2;this[_0xd742('0xf')]=_0x5386c1;};AGIVertices[_0xd742('0x10')][_0xd742('0x11')]=function(_0x33181b,_0x1233e1){this[_0xd742('0x12')][_0xd742('0x13')](_0x33181b)[_0xd742('0x14')](function(_0x3346c9){_0x1233e1(null,_0x3346c9?_0x3346c9[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x222df3){_0x1233e1(_0x222df3);});};AGIVertices[_0xd742('0x10')][_0xd742('0x17')]=function(_0xec5965,_0x5524a7){this[_0xd742('0x12')][_0xd742('0x18')](_0xec5965)[_0xd742('0x14')](function(_0x71333d){_0x5524a7(null,_0x71333d?_0x71333d[_0xd742('0x15')]:![]);})['catch'](function(_0x49313d){_0x5524a7(_0x49313d);});};AGIVertices[_0xd742('0x10')]['getSquareProject']=function(_0x5b8c4d,_0x5b67ba){this['rpc'][_0xd742('0x19')](_0x5b8c4d)[_0xd742('0x14')](function(_0x169bf2){_0x5b67ba(null,_0x169bf2?_0x169bf2[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x45033c){_0x5b67ba(_0x45033c);});};AGIVertices[_0xd742('0x10')][_0xd742('0x1a')]=function(_0x12bdde,_0x1124fc){this[_0xd742('0x12')][_0xd742('0x1b')](_0x12bdde)[_0xd742('0x14')](function(_0x5ade4e){_0x1124fc(null,_0x5ade4e?_0x5ade4e[_0xd742('0x1c')]:![]);})[_0xd742('0x16')](function(_0x534181){_0x1124fc(_0x534181);});};AGIVertices['prototype'][_0xd742('0x1d')]=function(_0x3137d3,_0x1e2871){this[_0xd742('0x12')]['getUserById'](_0x3137d3)[_0xd742('0x14')](function(_0x14014c){_0x1e2871(null,_0x14014c?_0x14014c['name']:![]);})[_0xd742('0x16')](function(_0x4c220a){_0x1e2871(_0x4c220a);});};AGIVertices[_0xd742('0x10')][_0xd742('0x1e')]=function(_0x4dc3c8,_0x33579e){this[_0xd742('0x12')]['getTrunkById'](_0x4dc3c8)[_0xd742('0x14')](function(_0x2581e9){_0x33579e(null,_0x2581e9?_0x2581e9[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x35f212){_0x33579e(_0x35f212);});};AGIVertices[_0xd742('0x10')][_0xd742('0x1f')]=function(_0x3f6327,_0x495647){var _0x3e7d1e=this;this[_0xd742('0x12')][_0xd742('0x20')](_0x3f6327)['then'](function(_0x20421b){_0x495647(null,_0x20421b?_0x3e7d1e[_0xd742('0x21')](_0x20421b[_0xd742('0x22')]):![]);})['catch'](function(_0x50754b){_0x495647(_0x50754b);});};AGIVertices['prototype'][_0xd742('0x23')]=function(_0x435998,_0x562c28){this[_0xd742('0x12')][_0xd742('0x24')](_0x435998)[_0xd742('0x14')](function(_0x347543){_0x562c28(null,_0x347543?_0x347543:![]);})[_0xd742('0x16')](function(_0x43ca2e){_0x562c28(_0x43ca2e);});};AGIVertices[_0xd742('0x10')][_0xd742('0x25')]=function(_0x12ea73,_0x568fc9,_0x5b88e2){this[_0xd742('0xf')]['sendMailMessage'](_0x12ea73,_0x568fc9)[_0xd742('0x14')](function(){_0x5b88e2(null);})[_0xd742('0x16')](function(_0x254de0){_0x5b88e2(_0x254de0);});};AGIVertices[_0xd742('0x10')][_0xd742('0x26')]=function(_0x4c114f,_0x5becc8){this[_0xd742('0x12')][_0xd742('0x27')](_0x4c114f)[_0xd742('0x14')](function(_0x46a9ab){if(_0x46a9ab){if(_0x46a9ab[_0xd742('0x28')]){_0x5becc8(null,[_0x46a9ab[_0xd742('0x29')]]);}else{_0x5becc8(null,_[_0xd742('0x2a')](_0x46a9ab[_0xd742('0x2b')],_0xd742('0x29')));}}else{_0x5becc8(null,![]);}})[_0xd742('0x16')](function(_0x1e3b1e){_0x5becc8(_0x1e3b1e);});};AGIVertices[_0xd742('0x10')]['getSoundPath']=function(_0x1f5e55){return util[_0xd742('0x2c')]('%s/sounds/converted/%s',FILES_PATH,_0x1f5e55);};AGIVertices[_0xd742('0x10')][_0xd742('0x2d')]=function(_0x5b7c98,_0x204fed,_0x51acf8){odbc['open'](_0x5b7c98,function(_0x59d0fd){if(_0x59d0fd){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x59d0fd);_0x51acf8(_0x59d0fd);}else{logger['info'](_0xd742('0x2e'));odbc['query'](_0x204fed,function(_0x445ff4,_0x5747dc){if(_0x445ff4){logger['info'](_0xd742('0x2f'),_0x204fed);_0x51acf8(_0x445ff4);}else{logger[_0xd742('0x30')](_0xd742('0x31'),_0x204fed);odbc['close'](function(_0x3e258a){if(_0x3e258a){logger[_0xd742('0x32')](_0xd742('0x33'),_0x3e258a);}_0x51acf8(null,_0x5747dc);});}});}});};AGIVertices[_0xd742('0x10')][_0xd742('0x34')]=function(_0x1daa5f,_0xfd3532){this[_0xd742('0x12')][_0xd742('0x35')](_0x1daa5f)[_0xd742('0x14')](function(_0xf62dab){_0xfd3532(null,_0xf62dab?_0xf62dab:![]);})[_0xd742('0x16')](function(_0x5ab3d7){_0xfd3532(_0x5ab3d7);});};AGIVertices[_0xd742('0x10')][_0xd742('0x36')]=function(_0x3b2c9a,_0x4ada93){this[_0xd742('0x12')][_0xd742('0x36')](_0x3b2c9a)[_0xd742('0x14')](function(_0x1f8d46){_0x4ada93(null,_0x1f8d46);})[_0xd742('0x16')](function(_0x4afd0e){_0x4ada93(_0x4afd0e);});};AGIVertices['prototype'][_0xd742('0x37')]=function(_0xcbd4bc,_0xef7682,_0x10b986){this[_0xd742('0x12')][_0xd742('0x37')]({'uniqueid':this[_0xd742('0xe')][_0xd742('0x38')],'node':_0xcbd4bc[_0xd742('0x39')],'application':_0xcbd4bc[_0xd742('0x3a')],'data':_0xef7682||null,'project_name':this[_0xd742('0xe')]['arg_1'],'callerid':this['channel'][_0xd742('0x3b')]})[_0xd742('0x14')](function(_0x3b9222){if(_0x10b986){_0x10b986(null,_0x3b9222);}})[_0xd742('0x16')](function(_0x453485){if(_0x10b986){_0x10b986(_0x453485);}});};AGIVertices[_0xd742('0x10')]['createSquareRecording']=function(_0x2a37cc,_0x280e3e,_0x3f65df,_0x321073){this[_0xd742('0x12')]['createSquareRecording']({'uniqueid':this[_0xd742('0xe')][_0xd742('0x38')],'callerid':this[_0xd742('0xe')][_0xd742('0x3b')],'calleridname':this['channel']['calleridname'],'context':this['channel']['context'],'extension':this[_0xd742('0xe')][_0xd742('0x3c')],'priority':this['channel'][_0xd742('0x3d')],'accountcode':this[_0xd742('0xe')][_0xd742('0x3e')],'dnid':this[_0xd742('0xe')][_0xd742('0x3f')],'projectName':this[_0xd742('0xe')][_0xd742('0x40')],'saveName':_0x280e3e,'filename':_0x2a37cc[_0xd742('0x41')]||_0x280e3e,'savePath':_0x3f65df})['then'](function(_0x402bfa){_0x321073(null,_0x402bfa);})[_0xd742('0x16')](function(_0x53d97a){_0x321073(_0x53d97a);});};AGIVertices[_0xd742('0x10')][_0xd742('0x42')]=function(_0x331493,_0x1b5b77,_0x261b9a,_0x1782a6,_0x76f2e7){this[_0xd742('0x12')][_0xd742('0x42')]({'uniqueid':this['channel'][_0xd742('0x38')],'body':_0x331493,'direction':_0x1b5b77,'providerName':_0x261b9a,'providerResponse':_0x1782a6})[_0xd742('0x14')](function(_0x322957){if(_0x76f2e7){_0x76f2e7(null,_0x322957);}})[_0xd742('0x16')](function(_0x46bbc7){if(_0x76f2e7){_0x76f2e7(_0x46bbc7);}});};AGIVertices[_0xd742('0x10')][_0xd742('0x43')]=function(_0xe1a0ed,_0xf7c5a){this[_0xd742('0x12')][_0xd742('0x43')]({'firstName':_[_0xd742('0x44')](_0xe1a0ed[_0xd742('0x15')])||_['isNil'](_0xe1a0ed['name'])?'callback_'+Math[_0xd742('0x45')]():_0xe1a0ed[_0xd742('0x15')],'lastName':_['isEmpty'](_0xe1a0ed['lastName'])||_[_0xd742('0x46')](_0xe1a0ed[_0xd742('0x47')])?null:_0xe1a0ed[_0xd742('0x47')],'phone':_0xe1a0ed[_0xd742('0x48')],'ListId':_0xe1a0ed[_0xd742('0x49')],'scheduledat':_0xe1a0ed[_0xd742('0x4a')],'callbackUniqueid':this[_0xd742('0xe')]['uniqueid'],'tags':_0xd742('0x4b'),'description':_0xd742('0x4c')+_0xe1a0ed[_0xd742('0x4a')][_0xd742('0x4d')](),'priority':_0xe1a0ed['callback_priority']})[_0xd742('0x14')](function(_0x3d020f){_0xf7c5a(null,_0x3d020f);})[_0xd742('0x16')](function(_0x4e2b8a){_0xf7c5a(_0x4e2b8a);});};AGIVertices[_0xd742('0x10')][_0xd742('0x4e')]=function(_0x3da108,_0x2cf15b){this[_0xd742('0x12')][_0xd742('0x4f')](_0x3da108)[_0xd742('0x14')](function(_0x5e77ce){_0x2cf15b(null,_0x5e77ce?_0x5e77ce[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x52520e){_0x2cf15b(_0x52520e);});};AGIVertices[_0xd742('0x10')][_0xd742('0x50')]=function(_0x3a5e9c,_0x216455,_0x4c72b3){var _0x51186d={'role':_0xd742('0x51')};_0x51186d[_0x3a5e9c]=this[_0xd742('0xe')][_0xd742('0x3b')];this[_0xd742('0x12')]['agentPause'](_0x51186d,_0x216455,this[_0xd742('0xe')][_0xd742('0x38')])[_0xd742('0x14')](function(_0x3c3207){_0x4c72b3(null,_[_0xd742('0x46')](_0x3c3207)?![]:!![]);})[_0xd742('0x16')](function(_0xbe898f){logger[_0xd742('0x32')](_0xbe898f);_0x4c72b3(null,![]);});};AGIVertices[_0xd742('0x10')][_0xd742('0x52')]=function(_0x1f397d,_0x1827b6){var _0x38554e={'role':_0xd742('0x51')};_0x38554e[_0x1f397d]=this[_0xd742('0xe')][_0xd742('0x3b')];this[_0xd742('0x12')]['agentUnpause'](_0x38554e)[_0xd742('0x14')](function(_0x3ae5c1){_0x1827b6(null,_['isNil'](_0x3ae5c1)?![]:!![]);})[_0xd742('0x16')](function(_0x54c69e){logger['error'](_0x54c69e);_0x1827b6(null,![]);});};AGIVertices['prototype']['agentLogout']=function(_0x4dbbab,_0x74c1b9){var _0x554960={'role':'agent'};_0x554960[_0x4dbbab]=this[_0xd742('0xe')][_0xd742('0x3b')];this[_0xd742('0x12')][_0xd742('0x53')](_0x554960)['then'](function(_0x3cfc47){_0x74c1b9(null,_[_0xd742('0x46')](_0x3cfc47)?![]:!![]);})[_0xd742('0x16')](function(_0x2da403){logger['error'](_0x2da403);_0x74c1b9(null,![]);});};AGIVertices[_0xd742('0x10')][_0xd742('0x54')]=function(_0x22af8d,_0x9ceed7){var _0x551c41={'role':_0xd742('0x51')};_0x551c41[_0x22af8d]=this[_0xd742('0xe')][_0xd742('0x3b')];var _0x3389bf=_0x22af8d!=_0xd742('0x55')?util['format'](_0xd742('0x56'),_0xd742('0x57'),this['channel'][_0xd742('0x3b')]):undefined;this['rpc'][_0xd742('0x54')](_0x551c41,_0x3389bf)['then'](function(_0x78b7e2){_0x9ceed7(null,_[_0xd742('0x46')](_0x78b7e2)?![]:!![]);})[_0xd742('0x16')](function(_0xd09daa){logger[_0xd742('0x32')](_0xd09daa);_0x9ceed7(null,![]);});};AGIVertices[_0xd742('0x10')][_0xd742('0x58')]=function(_0x1f773f,_0x2ef5aa){sh[_0xd742('0x59')](_['trim'](_0x1f773f),function(_0x386d8e,_0x207696){var _0x3ae3b4=_0x207696[_0xd742('0x5a')](/(\r\n|\n|\r)/gm,'');_0x2ef5aa(null,_0x3ae3b4);});};AGIVertices['prototype'][_0xd742('0x5b')]=function(_0x4d6a8e,_0x393c51){scripts[_0xd742('0x5b')](_0x4d6a8e[_0xd742('0x5c')],_0x4d6a8e[_0xd742('0x5d')]||_0xd742('0x5e'),_0x4d6a8e[_0xd742('0x5e')],_0x4d6a8e[_0xd742('0x5f')]||_0xd742('0x60'),_0x4d6a8e[_0xd742('0x61')]||'MALE',_0x4d6a8e[_0xd742('0x62')]||_0xd742('0x63'))[_0xd742('0x14')](function(_0x13621d){_0x393c51(null,_0x13621d);})['catch'](function(_0x8c25ca){_0x393c51(_0x8c25ca);});};AGIVertices[_0xd742('0x10')]['googleTTS']=function(_0x37cb3a,_0x1529b6){scripts[_0xd742('0x64')](_0x37cb3a[_0xd742('0x5e')],_0x37cb3a[_0xd742('0x65')]||'en',0x1)[_0xd742('0x14')](function(_0x4c065f){_0x1529b6(null,_0x4c065f);})[_0xd742('0x16')](function(_0x3eb557){_0x1529b6(_0x3eb557);});};AGIVertices[_0xd742('0x10')][_0xd742('0x66')]=function(_0x5c992c,_0x2eb568){var _0x413cba={'uri':_0x5c992c[_0xd742('0x67')],'method':_0x5c992c['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x5c992c[_0xd742('0x68')])==='number'&&parseInt(_0x5c992c[_0xd742('0x68')])>=0x1?parseInt(_0x5c992c[_0xd742('0x68')])*0x3e8:0x5*0x3e8};if(_[_0xd742('0x69')]([_0xd742('0x6a'),'PUT'],_0x413cba['method'][_0xd742('0x6b')]())){try{_0x413cba[_0xd742('0x6c')]=_0x5c992c[_0xd742('0xc')]?JSON[_0xd742('0x6d')](_0x5c992c[_0xd742('0xc')]):{};}catch(_0x22101e){logger['error']('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x22101e);}}try{_0x413cba[_0xd742('0x6e')]=_0x5c992c['rawHeaders']?JSON['parse'](_0x5c992c[_0xd742('0xb')]):{};}catch(_0x4fc24a){logger[_0xd742('0x32')](_0xd742('0x6f'),_0x4fc24a);}if(_0x5c992c[_0xd742('0x70')]){try{var _0xf5b266=require(_0x5c992c['computedVariables'])[_0xd742('0x71')](this,_0x413cba);_0x413cba[_0xd742('0x72')]=Mustache['render'](_0x5c992c[_0xd742('0x67')],_0xf5b266,{},['$$','$$']);if(_0x413cba[_0xd742('0x6e')]){_0x413cba['headers']=JSON['parse'](Mustache[_0xd742('0x73')](JSON[_0xd742('0x74')](_0x413cba[_0xd742('0x6e')]),_0xf5b266,{},['$$','$$']));}if(_0x413cba[_0xd742('0x6c')]){_0x413cba['body']=JSON[_0xd742('0x6d')](Mustache['render'](JSON[_0xd742('0x74')](_0x413cba[_0xd742('0x6c')]),_0xf5b266,{},['$$','$$']));}}catch(_0x4cd5c4){logger[_0xd742('0x32')](_0xd742('0x75'),_0x4cd5c4);}}rp(_0x413cba)['then'](function(_0x55dffe){var _0x2e0fb5={'statusCode':_0x55dffe['statusCode']||0xc8,'statusMessage':_0x55dffe[_0xd742('0x76')]||'OK','headers':_0x55dffe['headers']||{},'body':_0x55dffe[_0xd742('0x6c')]||{}};_0x2eb568(null,_0x2e0fb5);})[_0xd742('0x16')](function(_0x5234ed){var _0x837d58={'statusCode':_0x5234ed[_0xd742('0x77')]||0x1f4,'statusMessage':_0x5234ed[_0xd742('0x78')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x5234ed[_0xd742('0x79')]['headers']||{},'body':_0x5234ed[_0xd742('0x79')][_0xd742('0x6c')]||{}};_0x2eb568(null,_0x837d58);});};AGIVertices[_0xd742('0x10')][_0xd742('0x7a')]=function(_0x52ef26,_0x5cad45){scripts[_0xd742('0x7a')](this[_0xd742('0xe')]['uniqueid'],_0x52ef26[_0xd742('0x7b')],_0x52ef26[_0xd742('0x5e')],_0x52ef26[_0xd742('0x7c')]||'en')[_0xd742('0x14')](function(_0x15fff6){_0x5cad45(null,_0x15fff6);})[_0xd742('0x16')](function(_0xd97a37){_0x5cad45(_0xd97a37);});};AGIVertices['prototype'][_0xd742('0x7d')]=function(_0x56f032,_0x588af9){scripts[_0xd742('0x7d')](this[_0xd742('0xe')]['uniqueid'],_0x56f032[_0xd742('0x7e')],_0x56f032[_0xd742('0x7f')],_0x56f032[_0xd742('0x80')],_0x56f032[_0xd742('0x5e')],_0x56f032[_0xd742('0x81')]||'en')[_0xd742('0x14')](function(_0x242efe){_0x588af9(null,_0x242efe);})[_0xd742('0x16')](function(_0x971430){_0x588af9(_0x971430);});};AGIVertices[_0xd742('0x10')]['sestekNDA']=function(_0x432db2,_0x1140de){scripts[_0xd742('0x82')](this[_0xd742('0xe')],_0x432db2)[_0xd742('0x14')](function(_0x51f599){_0x1140de(null,_0x51f599);})[_0xd742('0x16')](function(_0x5d1522){_0x1140de(_0x5d1522);});};AGIVertices[_0xd742('0x10')][_0xd742('0x83')]=function(_0x5ceac5,_0x304b3c){scripts[_0xd742('0x83')](_0x5ceac5[_0xd742('0x7b')],_0x5ceac5['text'],_0x5ceac5[_0xd742('0x84')]||_0xd742('0x60'),_0x5ceac5[_0xd742('0x85')])[_0xd742('0x14')](function(_0x13d065){_0x304b3c(null,_0x13d065);})[_0xd742('0x16')](function(_0x1e18b9){_0x304b3c(_0x1e18b9);});};AGIVertices[_0xd742('0x10')][_0xd742('0x86')]=function(_0x10c9bd,_0x4f08b0,_0x434dfe){scripts['ispeechASR'](_0x4f08b0,_0x10c9bd[_0xd742('0x7b')],_0x10c9bd[_0xd742('0x87')]||'en-US',this['isConfigured'](_0x10c9bd['model'])?_0x10c9bd[_0xd742('0x88')]:undefined)[_0xd742('0x14')](function(_0x4ca73f){_0x434dfe(null,_0x4ca73f);})['catch'](function(_0x2685b3){_0x434dfe(_0x2685b3);});};AGIVertices[_0xd742('0x10')][_0xd742('0x89')]=function(_0x2f8250,_0x50fa9a){scripts[_0xd742('0x89')](_0x2f8250['aws_access_key_id'],_0x2f8250['aws_secret_access_key'],_0x2f8250['aws_polly_region'],_0x2f8250[_0xd742('0x8a')]||_0xd742('0x8b'),_0x2f8250[_0xd742('0x5e')],_0x2f8250[_0xd742('0x8c')]||'text')[_0xd742('0x14')](function(_0x2a2232){_0x50fa9a(null,_0x2a2232);})[_0xd742('0x16')](function(_0x3b8d84){_0x50fa9a(_0x3b8d84);});};AGIVertices[_0xd742('0x10')]['awsLex']=function(_0x22553d,_0x6f144f){scripts[_0xd742('0x8d')](this[_0xd742('0xe')][_0xd742('0x38')],_0x22553d[_0xd742('0x8e')],_0x22553d[_0xd742('0x8f')],_0x22553d['aws_lex_region'],_0x22553d[_0xd742('0x5e')],_0x22553d['aws_bot_name'])[_0xd742('0x14')](function(_0x21a303){_0x6f144f(null,_0x21a303);})[_0xd742('0x16')](function(_0x1d8211){_0x6f144f(_0x1d8211);});};AGIVertices[_0xd742('0x10')]['googleASR']=function(_0x3d6a45,_0x90b457,_0x30aa1a){scripts[_0xd742('0x90')](_0x90b457,_0x3d6a45['key'],_0x3d6a45[_0xd742('0x91')]||_0xd742('0x60'))[_0xd742('0x14')](function(_0x384281){_0x30aa1a(null,_0x384281);})[_0xd742('0x16')](function(_0x393b21){_0x30aa1a(_0x393b21);});};AGIVertices[_0xd742('0x10')][_0xd742('0x92')]=function(_0x58ba6e,_0x335d7d,_0x523eef){scripts['tildeASR'](_0x335d7d,_0x58ba6e['appid'],_0x58ba6e['appsecret'],_0x58ba6e[_0xd742('0x72')])['then'](function(_0x15dd2b){_0x523eef(null,_0x15dd2b);})[_0xd742('0x16')](function(_0x57c7ae){_0x523eef(_0x57c7ae);});};AGIVertices[_0xd742('0x10')][_0xd742('0x93')]=function(_0x9e691){var _0x1b0c68=_['includes'](verticesWithRetry,_0x9e691['agicommand'])?_0x9e691:_['clone'](_0x9e691);for(var _0x3e977d in _0x1b0c68){if(_0x1b0c68['hasOwnProperty'](_0x3e977d)){if(_0x1b0c68[_0x3e977d]&&_[_0xd742('0x94')](_0x1b0c68[_0x3e977d])){if(_[_0xd742('0x69')](recursiveMapAttributes,_0x3e977d)){_0x1b0c68[_0x3e977d]=this[_0xd742('0x95')](_0x1b0c68[_0x3e977d]);}else{_0x1b0c68[_0x3e977d]=this[_0xd742('0x96')](_0x1b0c68[_0x3e977d]);}}}}return _0x1b0c68;};AGIVertices[_0xd742('0x10')][_0xd742('0x97')]=function(_0x3f5a77){for(var _0x4bac27 in _0x3f5a77){if(_0x3f5a77[_0xd742('0x98')](_0x4bac27)){if(_[_0xd742('0x99')](_0x3f5a77[_0x4bac27])){this['recursiveNodeIndex'](_0x3f5a77[_0x4bac27]);}else if(_['isArray'](_0x3f5a77[_0x4bac27])){for(var _0x5772ce=0x0;_0x5772ce<_0x3f5a77[_0x4bac27][_0xd742('0x9a')];_0x5772ce++){this[_0xd742('0x97')](_0x3f5a77[_0x4bac27][_0x5772ce]);}}else if(_['isString'](_0x3f5a77[_0x4bac27])){_0x3f5a77[_0x4bac27]=this['replaceAllVariables'](_0x3f5a77[_0x4bac27]);}}}};AGIVertices['prototype'][_0xd742('0x9b')]=function(_0x31851b,_0x69f671){for(var _0x1078e9 in _0x31851b){if(_0x31851b['hasOwnProperty'](_0x1078e9)){if(_['isPlainObject'](_0x31851b[_0x1078e9])){if(!_[_0xd742('0x44')](_0x31851b[_0x1078e9])){this[_0xd742('0x9b')](_0x31851b[_0x1078e9],util['format']('%s.%s',_0x69f671,_0x1078e9));}}else if(_[_0xd742('0x9c')](_0x31851b[_0x1078e9])){for(var _0x7dd90a=0x0;_0x7dd90a<_0x31851b[_0x1078e9][_0xd742('0x9a')];_0x7dd90a++){this[_0xd742('0x9b')](_0x31851b[_0x1078e9][_0x7dd90a],util[_0xd742('0x2c')](_0xd742('0x9d'),_0x69f671,_0x1078e9+'['+_0x7dd90a+']'));}}else{if(!_[_0xd742('0x46')](_0x31851b[_0x1078e9])){this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x9d'),_0x69f671,_0x1078e9),_0x31851b[_0x1078e9]);}}}}};AGIVertices[_0xd742('0x10')][_0xd742('0x95')]=function(_0x5bfc42){try{var _0x17b262=JSON['parse'](_0x5bfc42);this['recursiveNodeIndex'](_0x17b262);return JSON[_0xd742('0x74')](_0x17b262);}catch(_0x256534){return this[_0xd742('0x96')](_0x5bfc42);}};AGIVertices[_0xd742('0x10')][_0xd742('0x96')]=function(_0x381de5){var _0x3c5ba7=_0x381de5[_0xd742('0x9f')]('{');for(var _0x4eef5b=0x1;_0x4eef5b<_0x3c5ba7[_0xd742('0x9a')];_0x4eef5b+=0x1){var _0x4e54c2=_0x3c5ba7[_0x4eef5b]['split']('}');if(_0x4e54c2[_0xd742('0x9a')]>0x1){_0x381de5=_0x381de5[_0xd742('0xa0')]('{'+_0x4e54c2[0x0]+'}',this[_0xd742('0xe')][_0xd742('0x11')](_0x4e54c2[0x0])[_0xd742('0xa1')]||_0x4e54c2[0x0]);}}if(_0x3c5ba7['length']===0x1){return _0x381de5[_0xd742('0x4d')]();}return this['replaceAllVariables'](_0x381de5);};AGIVertices['prototype'][_0xd742('0xa2')]=function(_0x5abeb4,_0x25c5b1){var _0x2b0676=this[_0xd742('0xe')]['getVariable'](_0x5abeb4);if(_0x2b0676[_0xd742('0xa3')]===-0x1){return _0x2b0676;}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xa4'),_0x25c5b1,_0x2b0676['extra']));return this[_0xd742('0xe')][_0xd742('0x9e')](_0x25c5b1,_0x2b0676[_0xd742('0xa1')]);};AGIVertices[_0xd742('0x10')][_0xd742('0xa5')]=function(_0x47f2df){return _0x47f2df&&_0x47f2df!=='0'&&_0x47f2df!=='-1'&&_0x47f2df!=='';};AGIVertices[_0xd742('0x10')]['maxRetry']=function(_0x499986){this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x499986,'-');_0x499986[_0xd742('0xa6')]=_0x499986['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0xd742('0x10')][_0xd742('0xa7')]=function(_0x578e6c){logger['info'](util['format'](_0xd742('0xa8'),_0x578e6c[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x578e6c[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}var _0x3f2e2f='\x22'+_0x578e6c['text']+'\x22';if(this[_0xd742('0xa5')](_0x578e6c[_0xd742('0x79')])){_0x3f2e2f+=','+_0x578e6c['options'];}var _0x490415=this[_0xd742('0xe')][_0xd742('0x59')]('MRCPSynth',_0x3f2e2f);if(_0x490415[_0xd742('0xa3')]===-0x1){return _0x490415;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xab'),_0x3f2e2f));};AGIVertices[_0xd742('0x10')][_0xd742('0xac')]=function(_0x47a989){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xad'),_0x47a989[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x47a989[_0xd742('0xae')])){return this[_0xd742('0xe')]['noop'](_0xd742('0xaf'));}var _0x5348bb=_0x47a989[_0xd742('0xae')];if(this[_0xd742('0xa5')](_0x47a989[_0xd742('0x79')])){_0x5348bb+=','+_0x47a989['options'];}var _0x55e229=this['channel']['exec'](_0xd742('0xb0'),_0x5348bb);if(_0x55e229[_0xd742('0xa3')]===-0x1){return _0x55e229;}var _0x58b91c=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0xd742('0xb1'));if(_0x58b91c[_0xd742('0xa3')]===-0x1){return _0x58b91c;}var _0x321839=this['getAndSetVariable']('RECOG_INPUT()',_0xd742('0xb2'));if(_0x321839['result']===-0x1){return _0x321839;}var _0x2b1bde=this[_0xd742('0xa2')](_0xd742('0xb3'),_0xd742('0xb4'));if(_0x2b1bde[_0xd742('0xa3')]===-0x1){return _0x2b1bde;}return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5348bb));};AGIVertices[_0xd742('0x10')]['agi']=function(_0x592022){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x592022[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0xb5')]([_0x592022['command'],_0x592022['args']]);};AGIVertices[_0xd742('0x10')][_0xd742('0xb6')]=function(_0x231a85){logger['info'](util['format'](_0xd742('0xb7'),_0x231a85['label']));if(this[_0xd742('0xa5')](_0x231a85[_0xd742('0x68')])){logger[_0xd742('0x30')](util['format'](_0xd742('0xb8'),_0x231a85[_0xd742('0x68')]));var _0x4c4bc7=this[_0xd742('0xe')][_0xd742('0xb9')](_0x231a85[_0xd742('0x68')]);if(_0x4c4bc7[_0xd742('0xa3')]===-0x1){return _0x4c4bc7;}}return this[_0xd742('0xe')][_0xd742('0xb6')]();};AGIVertices[_0xd742('0x10')]['callback']=function(_0x529ac5){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x529ac5[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x529ac5[_0xd742('0x49')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x529ac5,_0xd742('0xba'));}_0x529ac5[_0xd742('0x4a')]=moment();if(this['isConfigured'](_0x529ac5[_0xd742('0xbb')])){_0x529ac5[_0xd742('0x4a')]=moment()['add'](_0x529ac5[_0xd742('0xbb')],'minutes');}if(!this[_0xd742('0xa5')](_0x529ac5[_0xd742('0xbc')])){_0x529ac5[_0xd742('0xbc')]=0x2;}this[_0xd742('0x43')]['sync'](this,_0x529ac5);return this['channel']['noop'](util[_0xd742('0x2c')](_0xd742('0xbd'),_0x529ac5['phone'],_0x529ac5[_0xd742('0x49')],_0x529ac5[_0xd742('0x4a')]));};AGIVertices[_0xd742('0x10')][_0xd742('0xbe')]=function(_0x48e417){logger[_0xd742('0x30')](util['format'](_0xd742('0xbf'),_0x48e417[_0xd742('0x39')]));var _0x5d48d6=this['channel'][_0xd742('0x59')](_0x48e417[_0xd742('0xc0')],_0x48e417[_0xd742('0x79')]);if(_0x5d48d6[_0xd742('0xa3')]===-0x1){return _0x5d48d6;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('Executed\x20command\x20%s\x20%s',_0x48e417['application'],_0x48e417['options']));};AGIVertices[_0xd742('0x10')][_0xd742('0xc1')]=function(_0x1e03cf){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xc2'),_0x1e03cf['label']));if(!this[_0xd742('0xa5')](_0x1e03cf[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}var _0x4e639c='\x22'+_0x1e03cf['text']+'\x22';if(this[_0xd742('0xa5')](_0x1e03cf[_0xd742('0x79')])){_0x4e639c+=','+_0x1e03cf[_0xd742('0x79')];}var _0x5955a3=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0xc3'),_0x4e639c);if(_0x5955a3[_0xd742('0xa3')]===-0x1){return _0x5955a3;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xab'),_0x4e639c));};AGIVertices['prototype'][_0xd742('0xc4')]=function(_0x313024){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xc5'),_0x313024[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x313024[_0xd742('0x5e')])){return this[_0xd742('0xe')]['noop'](_0xd742('0xaa'));}var _0x196711='\x22'+_0x313024[_0xd742('0x5e')]+'\x22';if(this['isConfigured'](_0x313024[_0xd742('0x79')])){_0x196711+=','+_0x313024['options'];}var _0x251d09=this[_0xd742('0xe')][_0xd742('0x59')]('MRCPSynth',_0x196711);if(_0x251d09[_0xd742('0xa3')]===-0x1){return _0x251d09;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xab'),_0x196711));};AGIVertices[_0xd742('0x10')][_0xd742('0xc6')]=function(_0x282da8){logger['info'](util[_0xd742('0x2c')](_0xd742('0xc7'),_0x282da8[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x282da8[_0xd742('0xae')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaf'));}var _0x28a5e8=_0x282da8[_0xd742('0xae')];if(this[_0xd742('0xa5')](_0x282da8[_0xd742('0x79')])){_0x28a5e8+=','+_0x282da8[_0xd742('0x79')];}var _0x57ff65=this[_0xd742('0xe')]['exec'](_0xd742('0xb0'),_0x28a5e8);if(_0x57ff65[_0xd742('0xa3')]===-0x1){return _0x57ff65;}var _0x4ce303=this[_0xd742('0xa2')](_0xd742('0xc8'),_0xd742('0xc9'));if(_0x4ce303[_0xd742('0xa3')]===-0x1){return _0x4ce303;}var _0x318cfb=this[_0xd742('0xa2')](_0xd742('0xca'),_0xd742('0xcb'));if(_0x318cfb[_0xd742('0xa3')]===-0x1){return _0x318cfb;}var _0x385898=this[_0xd742('0xa2')](_0xd742('0xb3'),'LUMENVOX_ASR_INSTANCE');if(_0x385898[_0xd742('0xa3')]===-0x1){return _0x385898;}return this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0xcc'),_0x28a5e8));};AGIVertices['prototype'][_0xd742('0xcd')]=function(_0x4132b9){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x4132b9[_0xd742('0x39')]));if(!this['isConfigured'](_0x4132b9[_0xd742('0xae')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaf'));}var _0x5d2e57=_0x4132b9[_0xd742('0xae')];if(this['isConfigured'](_0x4132b9['options'])){_0x5d2e57+=','+_0x4132b9[_0xd742('0x79')];}var _0x5429f8=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0xb0'),_0x5d2e57);if(_0x5429f8['result']===-0x1){return _0x5429f8;}var _0x15a12a=this[_0xd742('0xa2')](_0xd742('0xc8'),_0xd742('0xce'));if(_0x15a12a[_0xd742('0xa3')]===-0x1){return _0x15a12a;}var _0x2f686b=this[_0xd742('0xa2')]('RECOG_INPUT()',_0xd742('0xcf'));if(_0x2f686b[_0xd742('0xa3')]===-0x1){return _0x2f686b;}var _0x2eefd8=this[_0xd742('0xa2')](_0xd742('0xb3'),_0xd742('0xd0'));if(_0x2eefd8[_0xd742('0xa3')]===-0x1){return _0x2eefd8;}return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5d2e57));};AGIVertices['prototype'][_0xd742('0xd1')]=function(_0x36ee54){logger[_0xd742('0x30')](util['format'](_0xd742('0xd2'),_0x36ee54['label']));if(!this[_0xd742('0xa5')](_0x36ee54[_0xd742('0xd3')])){return this[_0xd742('0xe')]['error'](_0x36ee54,_0xd742('0xd4'));}var _0x4e7568=this[_0xd742('0x1a')][_0xd742('0x71')](this,_0x36ee54['odbc_id']);if(!_0x4e7568){return this[_0xd742('0xe')][_0xd742('0x32')](_0x36ee54,_0xd742('0xd5'));}if(!this['isConfigured'](_0x36ee54[_0xd742('0xd6')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x36ee54,'no\x20query\x20configured');}var _0x3b6558=_0x36ee54[_0xd742('0xd6')][_0xd742('0x5a')](/(\r\n|\n|\r)/gm,'\x20');this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('query:\x20%s',_0x3b6558));var _0x41b082=this[_0xd742('0x2d')][_0xd742('0x71')](this,_0x4e7568,_0x3b6558);this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x36ee54,_0x3b6558);if(!this[_0xd742('0xa5')](_0x36ee54[_0xd742('0xd7')])){return this['channel']['noop'](_0xd742('0xd8'));}var _0x1a4d3e=this['getVariable'][_0xd742('0x71')](this,_0x36ee54[_0xd742('0xd7')]);if(!_0x1a4d3e){return this['channel'][_0xd742('0x32')](_0x36ee54,_0xd742('0xd9'));}var _0x41d293=this;_0x41b082['forEach'](function(_0x146be7,_0x250c17){Object[_0xd742('0xda')](_0x146be7)[_0xd742('0xdb')](function(_0x1dd5e4){_0x41d293[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0xdc'),_0x1a4d3e,_0x250c17,_0x1dd5e4),_0x146be7[_0x1dd5e4]);});});this[_0xd742('0xe')]['setVariable'](util[_0xd742('0x2c')](_0xd742('0xdd'),_0x1a4d3e),_0x41b082[_0xd742('0x9a')]);return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xde'),_0x1a4d3e));};AGIVertices['prototype'][_0xd742('0xdf')]=function(_0xde548c){logger[_0xd742('0xe0')](util[_0xd742('0x2c')](_0xd742('0xe1'),_0xde548c['label']));if(!this[_0xd742('0xa5')](_0xde548c['sip_id'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0xde548c,_0xd742('0xe2'));}var _0x2cd763=this[_0xd742('0x1d')]['sync'](this,_0xde548c[_0xd742('0xe3')]);if(!_0x2cd763){return this[_0xd742('0xe')][_0xd742('0x32')](_0xde548c,'no\x20user\x20found');}var _0x4a19f7=this[_0xd742('0xe')][_0xd742('0x59')]('DIAL',[util[_0xd742('0x2c')](_0xd742('0xe4'),_0x2cd763),_0xde548c['timeout'],_0xde548c[_0xd742('0xe5')],_0xde548c[_0xd742('0x67')]]);if(_0x4a19f7['result']===-0x1){return _0x4a19f7;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xe6'),_0xd742('0xe7')));};AGIVertices[_0xd742('0x10')][_0xd742('0xe8')]=function(_0x4a8752){logger[_0xd742('0x30')](util['format'](_0xd742('0xe9'),_0x4a8752[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x4a8752[_0xd742('0x7b')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xea'));}if(!this[_0xd742('0xa5')](_0x4a8752[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')]('no\x20text\x20configured');}this[_0xd742('0xe')][_0xd742('0xeb')]=!![];this[_0xd742('0x37')](_0x4a8752);this['createSquareMessage'](_0x4a8752[_0xd742('0x5e')],'in','','');this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0xec'),_0x4a8752[_0xd742('0x5e')]));var _0x55384a=this[_0xd742('0x7a')]['sync'](this,_0x4a8752);if(_0x55384a){for(var _0x4b3c6c in _0x55384a){if(_0x55384a[_0xd742('0x98')](_0x4b3c6c)){this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0xed'),_0x4b3c6c['toUpperCase']()),_0x55384a[_0x4b3c6c]);}}this[_0xd742('0x42')](_0x55384a[_0xd742('0xee')],_0xd742('0xef'),'dialogflow','');return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xf0'),_0x55384a['speech']));}return this[_0xd742('0xe')][_0xd742('0x32')](_0x4a8752,_0xd742('0xf1'));};AGIVertices['prototype'][_0xd742('0xf2')]=function(_0x56795b){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x56795b['label']));if(!this[_0xd742('0xa5')](_0x56795b[_0xd742('0x7e')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xf3'));}if(!this[_0xd742('0xa5')](_0x56795b[_0xd742('0x7f')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xf4'));}if(!this[_0xd742('0xa5')](_0x56795b['private_key'])){return this[_0xd742('0xe')]['noop'](_0xd742('0xf5'));}if(!this[_0xd742('0xa5')](_0x56795b['dialogflowV2_language'])){return this['channel']['noop'](_0xd742('0xf6'));}if(!this[_0xd742('0xa5')](_0x56795b['text'])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xeb')]=!![];this['createSquareDetailsReport'](_0x56795b);this[_0xd742('0x42')](_0x56795b[_0xd742('0x5e')],'in','','');this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0xf7'),_0x56795b['text']));var _0x2da29e=this[_0xd742('0x7d')]['sync'](this,_0x56795b);if(_0x2da29e){for(var _0x122f50 in _0x2da29e){if(_0x2da29e['hasOwnProperty'](_0x122f50)){if(_0x122f50!=='providerResponse'){this[_0xd742('0xe')][_0xd742('0x9e')](util['format'](_0xd742('0xed'),_0x122f50[_0xd742('0x6b')]()),_0x2da29e[_0x122f50]);}}}this[_0xd742('0x42')](_0x2da29e['speech'],'out','dialogflowV2',_0x2da29e['providerResponse']);return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xf8'),_0x2da29e[_0xd742('0xee')]));}return this['channel'][_0xd742('0x32')](_0x56795b,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0xd742('0x10')][_0xd742('0xf9')]=function(_0x1dc975){logger['info'](util['format'](_0xd742('0xfa'),_0x1dc975['label']));if(!this[_0xd742('0xa5')](_0x1dc975['ndauth_url'])){return this[_0xd742('0xe')]['noop'](_0xd742('0xfb'));}if(!this[_0xd742('0xa5')](_0x1dc975[_0xd742('0xfc')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xfd'));}if(!this[_0xd742('0xa5')](_0x1dc975[_0xd742('0xfe')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xff'));}if(!this[_0xd742('0xa5')](_0x1dc975[_0xd742('0x100')])){return this['channel']['noop'](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xeb')]=!![];this['createSquareDetailsReport'](_0x1dc975);this[_0xd742('0x42')](_0x1dc975['text'],'in','','');this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x101'),_0x1dc975[_0xd742('0x5e')]));var _0x1eb8f5=this[_0xd742('0x82')][_0xd742('0x71')](this,_0x1dc975);if(_0x1eb8f5){for(var _0x35c100 in _0x1eb8f5){if(_0x1eb8f5['hasOwnProperty'](_0x35c100)){this['channel'][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x102'),_0x35c100[_0xd742('0x6b')]()),_0x1eb8f5[_0x35c100]);}}this['createSquareMessage'](_0x1eb8f5[_0xd742('0xee')],_0xd742('0xef'),_0xd742('0xf9'),'');if(_0x1eb8f5[_0xd742('0x103')]){this['channel']['noop'](util[_0xd742('0x2c')](_0xd742('0x104'),_0x1eb8f5['audiofile']));var _0x17b823=this[_0xd742('0xe')][_0xd742('0x105')](_0x1eb8f5['audiofile']);try{fs[_0xd742('0x106')](_0x1eb8f5['audiofile']+'.wav');}catch(_0xb4bd63){logger[_0xd742('0x32')](_0xb4bd63);}return _0x17b823;}else{return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x107'),_0x1eb8f5['speech']));}}return this['channel'][_0xd742('0x32')](_0x1dc975,'SestekNDA\x20is\x20unreachable');};AGIVertices['prototype']['end']=function(_0x30dbb1){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x108'),_0x30dbb1['label']));return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x109'));};AGIVertices[_0xd742('0x10')][_0xd742('0x10a')]=function(_0x2d2e3d){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x2d2e3d[_0xd742('0x39')]));var _0x36e148='';if(_0x2d2e3d[_0xd742('0x10b')]){if(!this[_0xd742('0xa5')](_0x2d2e3d[_0xd742('0x10b')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x2d2e3d,_0xd742('0x10c'));}else{var _0x47239f=parseInt(_0x2d2e3d[_0xd742('0x10b')],0xa);if(isNaN(_0x47239f)){_0x36e148=_0x2d2e3d[_0xd742('0x10b')];}else{_0x36e148=this[_0xd742('0x1e')]['sync'](this,_0x2d2e3d[_0xd742('0x10b')]);if(!_0x36e148){return this[_0xd742('0xe')]['error'](_0x2d2e3d,_0xd742('0x10d'));}}}}else if(_0x2d2e3d['trunk_name']){_0x36e148=_0x2d2e3d[_0xd742('0x10e')];}else{return this[_0xd742('0xe')]['error'](_0x2d2e3d,_0xd742('0x10c'));}var _0x7de375=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0xe7'),[util[_0xd742('0x2c')](_0xd742('0x10f'),_0x36e148,_0x2d2e3d[_0xd742('0x48')]),_0x2d2e3d[_0xd742('0x68')],_0x2d2e3d[_0xd742('0xe5')],_0x2d2e3d[_0xd742('0x67')]]);if(_0x7de375['result']===-0x1){return _0x7de375;}return this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0xe6'),_0xd742('0xe7')));};AGIVertices[_0xd742('0x10')]['finally']=function(_0x4f4a77){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x110'),_0x4f4a77[_0xd742('0x39')]));return this[_0xd742('0xe')]['noop'](_0xd742('0x111'));};AGIVertices['prototype'][_0xd742('0x112')]=function(_0x5f3bd3){logger[_0xd742('0x30')](util['format'](_0xd742('0x113'),_0x5f3bd3[_0xd742('0x39')]));if(_0x5f3bd3[_0xd742('0xa6')]===0x0){return this[_0xd742('0x114')](_0x5f3bd3);}_0x5f3bd3[_0xd742('0xa6')]-=0x1;if(!this[_0xd742('0xa5')](_0x5f3bd3[_0xd742('0x115')])){return this[_0xd742('0xe')]['error'](_0x5f3bd3,'no\x20file\x20audio\x20selected');}var _0xb5217f=this[_0xd742('0x1f')][_0xd742('0x71')](this,_0x5f3bd3[_0xd742('0x115')]);if(!_0xb5217f){return this[_0xd742('0xe')][_0xd742('0x32')](_0x5f3bd3,_0xd742('0x116'));}if(!this[_0xd742('0xa5')](_0x5f3bd3['variable_id'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0xd742('0xd8'));}var _0x25a576=this[_0xd742('0xe')]['getData'](_0xb5217f,_0x5f3bd3[_0xd742('0x117')],_0x5f3bd3[_0xd742('0x118')]);var _0x3a2c4b=_0x25a576['result']?_0x25a576['result'][_0xd742('0x4d')]():'';logger[_0xd742('0x30')](_0xd742('0x119'),JSON['stringify'](_0x25a576));if(_0x25a576[_0xd742('0xa3')]===-0x1){this[_0xd742('0x37')][_0xd742('0x71')](this,_0x5f3bd3,_0x3a2c4b);return _0x25a576;}else if(_0x25a576['extra']===_0xd742('0x68')){_0x25a576[_0xd742('0xa3')]=_0x3a2c4b[_0xd742('0x9a')]>=parseInt(_0x5f3bd3[_0xd742('0x11a')])?'x':'i';}else{_0x25a576[_0xd742('0xa3')]=_0x3a2c4b[_0xd742('0x9a')]>=parseInt(_0x5f3bd3[_0xd742('0x11a')])&&_0x3a2c4b[_0xd742('0x9a')]<=parseInt(_0x5f3bd3[_0xd742('0x118')])?'x':'i';}var _0x3ba92e=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x5f3bd3['variable_id']);if(!_0x3ba92e){return this[_0xd742('0xe')][_0xd742('0x32')](_0x5f3bd3,_0xd742('0xd9'));}this[_0xd742('0xe')][_0xd742('0x9e')](_0x3ba92e,_0x3a2c4b);if(this[_0xd742('0xa5')](_0x5f3bd3[_0xd742('0x11b')])){var _0x4e6b89=parseInt(_0x5f3bd3[_0xd742('0x11b')],0xa);var _0x1a4081=rs['generate']({'charset':'*','length':_0x4e6b89});var _0x4c54cf=_0x3a2c4b['length'];if(_0x4c54cf>0x0){if(_0x4c54cf>_0x4e6b89){this[_0xd742('0x37')][_0xd742('0x71')](this,_0x5f3bd3,_0x5f3bd3[_0xd742('0x11c')]===_0xd742('0x11d')?_0x1a4081+_0x3a2c4b[_0xd742('0x11e')](_0x4e6b89):_0x3a2c4b[_0xd742('0x11e')](0x0,_0x4c54cf-_0x4e6b89)+_0x1a4081);}else{this[_0xd742('0x37')]['sync'](this,_0x5f3bd3,rs[_0xd742('0x11f')]({'charset':'*','length':_0x4c54cf}));}}else{this[_0xd742('0x37')]['sync'](this,_0x5f3bd3,'');}}else{this[_0xd742('0x37')]['sync'](this,_0x5f3bd3,_0x3a2c4b);}return _0x25a576;};AGIVertices['prototype']['getsecretdigits']=function(_0x2a81ce){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x120'),_0x2a81ce[_0xd742('0x39')]));return this[_0xd742('0x112')](_0x2a81ce);};AGIVertices[_0xd742('0x10')][_0xd742('0x121')]=function(_0x14708f){logger[_0xd742('0x30')](util['format'](_0xd742('0x122'),_0x14708f['label']));this[_0xd742('0x37')][_0xd742('0x71')](this,_0x14708f,_0x14708f[_0xd742('0x123')]);return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x124'),_0x14708f[_0xd742('0x123')]));};AGIVertices[_0xd742('0x10')]['awspolly']=function(_0x3cf12f){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x125'),_0x3cf12f[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x3cf12f[_0xd742('0x8e')])||!this[_0xd742('0xa5')](_0x3cf12f[_0xd742('0x8f')])){return this[_0xd742('0xe')][_0xd742('0xa9')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xd742('0xa5')](_0x3cf12f[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('Trying\x20aws\x20Polly\x20%s',_0x3cf12f[_0xd742('0x5e')]));var _0x1c1645=this['awsPolly'][_0xd742('0x71')](this,_0x3cf12f);if(_0x1c1645){this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x126'),_0x1c1645));var _0x4bc2ec=this[_0xd742('0xe')][_0xd742('0x105')](_0x1c1645);try{fs[_0xd742('0x106')](_0x1c1645+_0xd742('0x127'));}catch(_0x212d67){logger[_0xd742('0x32')](_0x212d67);}return _0x4bc2ec;}return this[_0xd742('0xe')]['error'](_0x3cf12f,_0xd742('0x128'));};AGIVertices['prototype'][_0xd742('0x129')]=function(_0x2f1c20){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x12a'),_0x2f1c20[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x2f1c20[_0xd742('0x8e')])||!this[_0xd742('0xa5')](_0x2f1c20[_0xd742('0x8f')])){return this['channel'][_0xd742('0xa9')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xd742('0xa5')](_0x2f1c20[_0xd742('0x12b')])){return this[_0xd742('0xe')]['noop'](_0xd742('0x12c'));}if(!this['isConfigured'](_0x2f1c20[_0xd742('0x5e')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xaa'));}this['channel'][_0xd742('0xeb')]=!![];this[_0xd742('0x37')](_0x2f1c20);this[_0xd742('0x42')](_0x2f1c20['text'],'in','','');this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x12d'),_0x2f1c20['text']));var _0x47f3c6=this[_0xd742('0x8d')][_0xd742('0x71')](this,_0x2f1c20);if(_0x47f3c6){for(var _0x5e5a47 in _0x47f3c6){if(_0x47f3c6[_0xd742('0x98')](_0x5e5a47)&&_['isString'](_0x47f3c6[_0x5e5a47])){this['channel']['setVariable'](util[_0xd742('0x2c')](_0xd742('0x12e'),_0x5e5a47[_0xd742('0x6b')]()),_0x47f3c6[_0x5e5a47]);}}if(_[_0xd742('0x46')](_0x47f3c6[_0xd742('0x78')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x12f'));}else{this['createSquareMessage'](_0x47f3c6[_0xd742('0x78')],_0xd742('0xef'),_0xd742('0x130'),'');return this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x131'),_0x47f3c6[_0xd742('0x78')]));}}return this['channel']['error'](_0x2f1c20,_0xd742('0x132'));};AGIVertices[_0xd742('0x10')][_0xd742('0x133')]=function(_0x392dc2){logger['info'](util['format'](_0xd742('0x134'),_0x392dc2[_0xd742('0x39')],_0x392dc2[_0xd742('0x68')]));if(!this['isConfigured'](_0x392dc2[_0xd742('0x7b')])){return this[_0xd742('0xe')]['noop']('no\x20key\x20configured');}var _0x1681d6=_0xd742('0x135');var _0x356ab5=util[_0xd742('0x2c')](_0xd742('0x136'),FILES_PATH,rs['generate'](0x4));var _0xd3af6c=util[_0xd742('0x2c')](_0xd742('0x9d'),_0x356ab5,_0x1681d6);var _0x29bf5d=!![];if(_0x392dc2['beep']===_0xd742('0x137')){_0x29bf5d=![];}var _0x2eeb6f=this[_0xd742('0xe')]['recordFile'](_0x356ab5,_0x1681d6,_0x392dc2[_0xd742('0x138')],_0x392dc2[_0xd742('0x68')],undefined,_0x29bf5d);if(_0x2eeb6f['result']!==-0x1){this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x139'),_0xd3af6c));var _0x5050c5=this[_0xd742('0x90')][_0xd742('0x71')](this,_0x392dc2,_0xd3af6c);if(_0x5050c5){for(var _0x16970a in _0x5050c5){if(_0x5050c5[_0xd742('0x98')](_0x16970a)){this[_0xd742('0xe')]['setVariable'](util[_0xd742('0x2c')](_0xd742('0x13a'),_0x16970a[_0xd742('0x6b')]()),_0x5050c5[_0x16970a]);}}return this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x13b'),JSON[_0xd742('0x74')](_0x5050c5)));}}return _0x2eeb6f;};AGIVertices[_0xd742('0x10')]['tildeasr']=function(_0x16f306){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x13c'),_0x16f306[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x16f306[_0xd742('0x13d')])){return this['channel'][_0xd742('0xa9')](_0xd742('0x13e'));}if(!this[_0xd742('0xa5')](_0x16f306[_0xd742('0x13f')])){return this['channel'][_0xd742('0xa9')](_0xd742('0x140'));}var _0x1ce7cf=_0xd742('0x135');var _0x3377f7=util[_0xd742('0x2c')]('%s/recordings/%s',FILES_PATH,rs[_0xd742('0x11f')](0x4));var _0x39a964=util['format'](_0xd742('0x9d'),_0x3377f7,_0x1ce7cf);var _0x258d42=!![];if(_0x16f306[_0xd742('0x141')]===_0xd742('0x137')){_0x258d42=![];}var _0x40747d=this[_0xd742('0xe')][_0xd742('0x142')](_0x3377f7,_0x1ce7cf,_0x16f306['intKey'],_0x16f306[_0xd742('0x68')],undefined,_0x258d42);if(_0x40747d[_0xd742('0xa3')]!==-0x1){this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x143'),_0x39a964));var _0x809d36=this['tildeASR'][_0xd742('0x71')](this,_0x16f306,_0x39a964);if(_0x809d36){for(var _0x4f3105 in _0x809d36){if(_0x809d36[_0xd742('0x98')](_0x4f3105)){this[_0xd742('0xe')]['setVariable'](util[_0xd742('0x2c')](_0xd742('0x144'),_0x4f3105[_0xd742('0x6b')]()),_0x809d36[_0x4f3105]);}}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x145'),JSON[_0xd742('0x74')](_0x809d36)));}}return _0x40747d;};AGIVertices[_0xd742('0x10')][_0xd742('0x146')]=function(_0x23e57b){logger['info'](util[_0xd742('0x2c')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x23e57b[_0xd742('0x39')]));return this['channel'][_0xd742('0x147')](_0x23e57b['context'],_0x23e57b['extension'],_0x23e57b[_0xd742('0x3d')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x148')]=function(_0x3daa40){logger[_0xd742('0x30')](util['format'](_0xd742('0x149'),_0x3daa40[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x3daa40[_0xd742('0x14a')])){return this[_0xd742('0xe')]['error'](_0x3daa40,'no\x20condition\x20configured');}try{var _0x2cb595=eval(_0x3daa40[_0xd742('0x14a')])?'true':'false';this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x14b'),_0x3daa40['condition'],_0x2cb595));return{'code':0xc8,'result':_0x2cb595};}catch(_0xdaf2db){return{'code':0xc8,'result':_0xd742('0x14c')};}};AGIVertices[_0xd742('0x10')][_0xd742('0x14d')]=function(_0x572257){logger['info'](util[_0xd742('0x2c')](_0xd742('0x14e'),_0x572257[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x572257['interval_id'])){return this[_0xd742('0xe')]['error'](_0x572257,_0xd742('0x14f'));}var _0x505c88=this[_0xd742('0x26')]['sync'](this,_0x572257[_0xd742('0x150')]);if(!_0x505c88){return this[_0xd742('0xe')][_0xd742('0x32')](_0x572257,'no\x20intervals\x20found');}for(var _0x316ed8=0x0;_0x316ed8<_0x505c88[_0xd742('0x9a')];_0x316ed8+=0x1){var _0x4162ff=this[_0xd742('0xe')][_0xd742('0x11')](util[_0xd742('0x2c')](_0xd742('0x151'),_0x505c88[_0x316ed8]));if(_0x4162ff[_0xd742('0xa3')]===-0x1){return _0x4162ff;}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x152'),_0x505c88[_0x316ed8],_0x4162ff[_0xd742('0xa1')]));if(_0x4162ff[_0xd742('0xa1')]===_0xd742('0x153')){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x152'),_0x505c88[_0x316ed8],_0xd742('0x153')));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('IFTIME\x20%s\x20%s',_0x505c88[_0x316ed8],'true'));return{'code':0xc8,'result':_0xd742('0x153')};}else{logger[_0xd742('0x30')](util[_0xd742('0x2c')]('IFTIME\x20%s\x20%s',_0x505c88[_0x316ed8],_0xd742('0x14c')));this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x152'),_0x505c88[_0x316ed8],_0xd742('0x14c')));}}return{'code':0xc8,'result':_0xd742('0x14c')};};AGIVertices['prototype'][_0xd742('0x154')]=function(_0x493b85){logger['info'](util[_0xd742('0x2c')](_0xd742('0x155'),_0x493b85[_0xd742('0x39')]));return this[_0xd742('0xe')]['hangup']();};AGIVertices[_0xd742('0x10')]['ispeechasr']=function(_0x92593c){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x156'),_0x92593c['label']));if(!this['isConfigured'](_0x92593c[_0xd742('0x7b')])){return this[_0xd742('0xe')]['noop'](_0xd742('0xea'));}var _0x1c84e5=_0xd742('0x135');var _0x1940dc=util[_0xd742('0x2c')](_0xd742('0x136'),FILES_PATH,rs[_0xd742('0x11f')](0x4));var _0xdd3a32=util['format'](_0xd742('0x9d'),_0x1940dc,_0x1c84e5);var _0x1becab=!![];if(_0x92593c[_0xd742('0x141')]===_0xd742('0x137')){_0x1becab=![];}var _0x25be84=this[_0xd742('0xe')][_0xd742('0x142')](_0x1940dc,_0x1c84e5,_0x92593c[_0xd742('0x138')],_0x92593c['timeout'],undefined,_0x1becab);if(_0x25be84[_0xd742('0xa3')]!==-0x1){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x157'),_0xdd3a32));var _0x261034=this[_0xd742('0x86')][_0xd742('0x71')](this,_0x92593c,_0xdd3a32);if(_0x261034){for(var _0x510fcf in _0x261034){if(_0x261034[_0xd742('0x98')](_0x510fcf)){this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x158'),_0x510fcf['toUpperCase']()),_0x261034[_0x510fcf]);}}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x159'),JSON[_0xd742('0x74')](_0x261034)));}}return _0x25be84;};AGIVertices[_0xd742('0x10')]['ispeechtts']=function(_0x4d35f8){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x15a'),_0x4d35f8['label']));if(!this[_0xd742('0xa5')](_0x4d35f8[_0xd742('0x7b')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xea'));}if(!this[_0xd742('0xa5')](_0x4d35f8['text'])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')]('Trying\x20ispeech\x20TTS\x20%s',_0x4d35f8[_0xd742('0x5e')]));var _0x5d0d63=this[_0xd742('0x83')][_0xd742('0x71')](this,_0x4d35f8);if(_0x5d0d63){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x157'),_0x5d0d63));var _0x41b33b=this[_0xd742('0xe')][_0xd742('0x105')](_0x5d0d63,_0x4d35f8[_0xd742('0x138')]);try{fs['unlink'](_0x5d0d63+_0xd742('0x127'));}catch(_0x17281e){logger[_0xd742('0x32')](_0x17281e);}return _0x41b33b;}return this[_0xd742('0xe')][_0xd742('0x32')](_0x4d35f8,_0xd742('0x15b'));};AGIVertices[_0xd742('0x10')][_0xd742('0x15c')]=function(_0x220932){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x15d'),_0x220932[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x220932[_0xd742('0x15e')])){return this['channel'][_0xd742('0x32')](_0x220932,_0xd742('0x15f'));}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x160'),this[_0xd742('0xe')]['callerid'],_0x220932[_0xd742('0x15e')]));var _0xb8b085=this[_0xd742('0x54')]['sync'](this,_0x220932[_0xd742('0x15e')]);if(_0xb8b085){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')]['callerid'],_0x220932[_0xd742('0x15e')]));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')]['callerid'],_0x220932[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x162')};}else{logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x220932[_0xd742('0x15e')]));this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x163'),this['channel']['callerid'],_0x220932[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x164')};}};AGIVertices[_0xd742('0x10')][_0xd742('0x165')]=function(_0x36e3ba){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x166'),_0x36e3ba['label']));if(!this[_0xd742('0xa5')](_0x36e3ba['findBy'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x36e3ba,'no\x20find\x20by\x20configured');}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x160'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x36e3ba[_0xd742('0x15e')]));var _0x13cc69=this[_0xd742('0x53')][_0xd742('0x71')](this,_0x36e3ba['findBy']);if(_0x13cc69){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x161'),this['channel'][_0xd742('0x3b')],_0x36e3ba[_0xd742('0x15e')]));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')]['callerid'],_0x36e3ba['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format'](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x36e3ba[_0xd742('0x15e')]));this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')]['callerid'],_0x36e3ba[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x164')};}};AGIVertices[_0xd742('0x10')]['math']=function(_0x142e35){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x142e35['label']));if(!this[_0xd742('0xa5')](_0x142e35[_0xd742('0x167')])){return this[_0xd742('0xe')]['error'](_0x142e35,_0xd742('0x168'));}this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('math\x20%s',_0x142e35[_0xd742('0x167')]));var _0x2dfd25=eval(_0x142e35[_0xd742('0x167')]);if(!this[_0xd742('0xa5')](_0x142e35[_0xd742('0xd7')])){return this[_0xd742('0xe')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x341732=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x142e35[_0xd742('0xd7')]);if(!_0x341732){return this[_0xd742('0xe')][_0xd742('0x32')](_0x142e35,_0xd742('0xd9'));}if(_['isArray'](_0x2dfd25)){var _0x2aa4cd=this;_0x2dfd25[_0xd742('0xdb')](function(_0x3b81b2,_0xd31ef4){_0x2aa4cd[_0xd742('0xe')]['setVariable'](util['format'](_0xd742('0x169'),_0x341732,_0xd31ef4),_0x3b81b2);});return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')]('variable\x20%s[key]\x20set',_0x341732));}else{return this[_0xd742('0xe')][_0xd742('0x9e')](_0x341732,_0x2dfd25);}};AGIVertices['prototype'][_0xd742('0x16a')]=function(_0x4555cb){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x4555cb[_0xd742('0x39')]));if(_0x4555cb[_0xd742('0xa6')]===0x0){return this[_0xd742('0x114')](_0x4555cb);}_0x4555cb[_0xd742('0xa6')]-=0x1;if(!this[_0xd742('0xa5')](_0x4555cb[_0xd742('0x115')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x4555cb,_0xd742('0x16b'));}var _0x4e4e69=this[_0xd742('0x1f')]['sync'](this,_0x4555cb[_0xd742('0x115')]);if(!_0x4e4e69){return this[_0xd742('0xe')]['error'](_0x4555cb,_0xd742('0x116'));}var _0x393c79=this[_0xd742('0xe')]['getData'](_0x4e4e69,_0x4555cb['response'],_0x4555cb['digit']);var _0x403c30=_0x393c79[_0xd742('0xa3')];if(_0x393c79[_0xd742('0xa3')]===-0x1){this[_0xd742('0x37')][_0xd742('0x71')](this,_0x4555cb,'-1');return _0x393c79;}else if(_0x393c79[_0xd742('0xa1')]===_0xd742('0x68')){_0x393c79[_0xd742('0xa3')]=_0x393c79[_0xd742('0xa3')]['length']>0x0?_0x393c79[_0xd742('0xa3')]:'t';}else if(_[_0xd742('0x44')](_0x393c79[_0xd742('0xa3')])){_0x393c79['result']='#';_0x403c30='#';}if(!this['isConfigured'](_0x4555cb[_0xd742('0xd7')])){this[_0xd742('0xe')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x1e9eb8=this[_0xd742('0x11')]['sync'](this,_0x4555cb[_0xd742('0xd7')]);if(!_0x1e9eb8){return this[_0xd742('0xe')]['error'](_0x4555cb,_0xd742('0xd9'));}this[_0xd742('0xe')][_0xd742('0x9e')](_0x1e9eb8,_0x403c30);}this[_0xd742('0x37')]['sync'](this,_0x4555cb,_0x403c30);return _0x393c79;};AGIVertices['prototype'][_0xd742('0xa9')]=function(_0xd54683){logger[_0xd742('0x30')](util['format'](_0xd742('0x16c'),_0xd54683['label']));return this[_0xd742('0xe')]['noop'](_0xd54683[_0xd742('0x16d')]||_0xd54683[_0xd742('0x39')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x16e')]=function(_0x47a11e){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x47a11e[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x47a11e[_0xd742('0x15e')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x47a11e,_0xd742('0x15f'));}logger[_0xd742('0x30')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));var _0xf24dab=this[_0xd742('0x4e')]['sync'](this,_0x47a11e[_0xd742('0x16f')]);var _0x4717a6=this[_0xd742('0x50')][_0xd742('0x71')](this,_0x47a11e[_0xd742('0x15e')],_0xf24dab);if(_0x4717a6){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e['findBy']));return{'code':0xc8,'result':_0xd742('0x162')};}else{logger[_0xd742('0x30')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x161'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x164')};}};AGIVertices[_0xd742('0x10')]['playback']=function(_0x4f606b){logger[_0xd742('0x30')](util['format'](_0xd742('0x170'),_0x4f606b['label']));if(!this[_0xd742('0xa5')](_0x4f606b['file_id'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x4f606b,_0xd742('0x16b'));}var _0x2dd5ff=this[_0xd742('0x1f')][_0xd742('0x71')](this,_0x4f606b[_0xd742('0x115')]);if(!_0x2dd5ff){return this[_0xd742('0xe')][_0xd742('0x32')](_0x4f606b,_0xd742('0x116'));}var _0x10eda1=this[_0xd742('0xe')][_0xd742('0x59')]('PLAYBACK',[_0x2dd5ff,_0x4f606b[_0xd742('0xe5')]]);if(_0x10eda1[_0xd742('0xa3')]===-0x1){return _0x10eda1;}return this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0x171'),'PLAYBACK',_0x2dd5ff));};AGIVertices['prototype']['queue']=function(_0x2ac2a0){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x172'),_0x2ac2a0['label']));if(!this[_0xd742('0xa5')](_0x2ac2a0[_0xd742('0x173')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x2ac2a0,_0xd742('0x174'));}var _0x242a5a='';var _0x505898=parseInt(_0x2ac2a0['queue_id'],0xa);if(isNaN(_0x505898)){_0x242a5a=_0x2ac2a0[_0xd742('0x173')];}else{_0x242a5a=this[_0xd742('0x17')][_0xd742('0x71')](this,_0x2ac2a0[_0xd742('0x173')]);if(!_0x242a5a){return this[_0xd742('0xe')]['error'](_0x2ac2a0,_0xd742('0x175'));}}var _0x1e978b='';if(this[_0xd742('0xa5')](_0x2ac2a0['file_id'])){var _0x1b8774=this[_0xd742('0x1f')][_0xd742('0x71')](this,_0x2ac2a0['file_id']);if(_0x1b8774){_0x1e978b=_0x1b8774;}}this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x2ac2a0,_0x242a5a);if(_0x2ac2a0[_0xd742('0xe5')][_0xd742('0x176')]('x')<0x0){_0x2ac2a0[_0xd742('0xe5')]+='x';}if(_0x2ac2a0['opts'][_0xd742('0x176')]('X')<0x0){_0x2ac2a0[_0xd742('0xe5')]+='X';}this[_0xd742('0xe')]['setVariable']('XMCS-QUEUE',_0x242a5a?_0x242a5a[_0xd742('0x177')]():'');var _0x49b266=this[_0xd742('0xe')]['exec'](_0xd742('0x178'),[_0x242a5a,_0x2ac2a0[_0xd742('0xe5')],_0x2ac2a0[_0xd742('0x67')],_0x1e978b,_0x2ac2a0[_0xd742('0x68')],_0x2ac2a0[_0xd742('0xb5')],_0x2ac2a0[_0xd742('0x179')],_0x2ac2a0[_0xd742('0x17a')],'',_0x2ac2a0[_0xd742('0x17b')]]);if(_0x49b266[_0xd742('0xa3')]===-0x1){return _0x49b266;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x171'),_0xd742('0x178'),_0x242a5a));};AGIVertices[_0xd742('0x10')][_0xd742('0x17c')]=function(_0x221e0b){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x17d'),_0x221e0b['label']));var _0x51399c=_0x221e0b[_0xd742('0x17e')]||'wav';var _0x3050dc=util['format'](_0xd742('0x17f'),this[_0xd742('0xe')][_0xd742('0x38')],rs[_0xd742('0x11f')](0x5));var _0x2d96aa=util[_0xd742('0x2c')](_0xd742('0x180'),FILES_PATH,_0x3050dc,_0x51399c);var _0x1ed724=util['format'](_0xd742('0x136'),FILES_PATH,_0x3050dc);this['createSquareRecording'][_0xd742('0x71')](this,_0x221e0b,_0x3050dc,_0x2d96aa);this['channel'][_0xd742('0x9e')](_0xd742('0x181'),_0x3050dc);logger[_0xd742('0x30')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x1ed724,_0x51399c,_0x221e0b[_0xd742('0x182')],_0x221e0b[_0xd742('0x68')]);return this[_0xd742('0xe')]['recordFile'](_0x1ed724,_0x51399c,_0x221e0b[_0xd742('0x182')],_0x221e0b[_0xd742('0x68')],undefined,!![]);};AGIVertices['prototype'][_0xd742('0x183')]=function(_0x5e004d){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x5e004d[_0xd742('0x39')]));if(!this['isConfigured'](_0x5e004d[_0xd742('0x67')])){return this[_0xd742('0xe')]['noop'](_0xd742('0x184'));}var _0x11e3ea=this[_0xd742('0x66')][_0xd742('0x71')](this,_0x5e004d);logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x185'),util[_0xd742('0x186')](_0x11e3ea,{'showHidden':![],'depth':null})));if(!this[_0xd742('0xa5')](_0x5e004d['variable_id'])){return this['channel'][_0xd742('0xa9')](_0xd742('0x187'));}var _0x629fee=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x5e004d[_0xd742('0xd7')]);if(!_0x629fee){return this[_0xd742('0xe')][_0xd742('0x32')](_0x5e004d,_0xd742('0xd9'));}this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x188'),_0x629fee),_0x11e3ea[_0xd742('0x77')]?_0x11e3ea[_0xd742('0x77')]:_0xd742('0x189'));this['channel'][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x18a'),_0x629fee),_0x11e3ea[_0xd742('0x76')]?_0x11e3ea['statusMessage']:'OK');if(_0x11e3ea[_0xd742('0x6c')]){try{this[_0xd742('0x9b')](_0x11e3ea[_0xd742('0x6c')],_0x629fee);}catch(_0x1e9c99){logger[_0xd742('0x32')](util[_0xd742('0x2c')](_0xd742('0x18b'),_0x629fee));}}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xde'),_0x629fee));};AGIVertices[_0xd742('0x10')]['saydigits']=function(_0x3d6a67){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x18c'),_0x3d6a67[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0x18d')](_0x3d6a67[_0xd742('0x18e')]['replace'](/\s+/g,''),_0x3d6a67[_0xd742('0x182')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x18f')]=function(_0x3b4372){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x190'),_0x3b4372[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0x191')](_0x3b4372[_0xd742('0x192')][_0xd742('0x5a')](/\s+/g,''),_0x3b4372[_0xd742('0x182')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x193')]=function(_0x2e5143){logger[_0xd742('0x30')](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x2e5143[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0x194')](_0x2e5143[_0xd742('0x5e')],_0x2e5143[_0xd742('0x182')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x195')]=function(_0x490718){logger['info'](util['format']('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x490718['label']));if(!this[_0xd742('0xa5')](_0x490718['account_id'])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x196'));}var _0x59f492=this[_0xd742('0x23')][_0xd742('0x71')](this,_0x490718[_0xd742('0x197')]);if(!_0x59f492||!_0x59f492[_0xd742('0x198')]){return this[_0xd742('0xe')]['error'](_0x490718,_0xd742('0x199'));}var _0x4cdd59={'from':util[_0xd742('0x2c')](_0xd742('0x19a'),_0x59f492[_0xd742('0x15')],_0x59f492[_0xd742('0x19b')]||_0x59f492[_0xd742('0x198')][_0xd742('0x19c')]),'to':_0x490718['to']||'','cc':_0x490718['cc']||'','bcc':_0x490718['bcc']||'','subject':_0x490718[_0xd742('0x19d')],'html':_0x490718[_0xd742('0x5e')],'text':_0x490718[_0xd742('0x5e')]};var _0x187eaa={'tls':{'rejectUnauthorized':![]}};if(_0x59f492[_0xd742('0x198')][_0xd742('0x19e')]){_0x187eaa[_0xd742('0x19e')]=_0x59f492[_0xd742('0x198')][_0xd742('0x19e')];}else{_0x187eaa[_0xd742('0x19f')]=_0x59f492[_0xd742('0x198')]['host'];_0x187eaa[_0xd742('0x1a0')]=_0x59f492[_0xd742('0x198')][_0xd742('0x1a0')];_0x187eaa[_0xd742('0x1a1')]=_0x59f492[_0xd742('0x198')]['secure'];}if(_0x59f492[_0xd742('0x198')][_0xd742('0x1a2')]){_0x187eaa['auth']={'user':_0x59f492[_0xd742('0x198')][_0xd742('0x19c')],'pass':_0x59f492[_0xd742('0x198')][_0xd742('0x1a3')]};}if(this['isConfigured'](_0x490718[_0xd742('0x1a4')])){}logger[_0xd742('0xe0')](_0xd742('0x1a5'),JSON[_0xd742('0x74')](_0x4cdd59));this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x490718,_0x490718[_0xd742('0x197')]);this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x59f492[_0xd742('0x15')]));this[_0xd742('0x25')][_0xd742('0x71')](this,_0x187eaa,_0x4cdd59);return this[_0xd742('0xe')][_0xd742('0xa9')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xd742('0x10')][_0xd742('0x1a6')]=function(_0x633e57){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x633e57[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x1a7'));};AGIVertices[_0xd742('0x10')][_0xd742('0x1a8')]=function(_0x117bd0){logger['info'](util[_0xd742('0x2c')](_0xd742('0x1a9'),_0x117bd0[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x117bd0[_0xd742('0x1aa')])){return this[_0xd742('0xe')]['noop'](_0xd742('0x1ab'));}var _0x37f598=this[_0xd742('0x34')][_0xd742('0x71')](this,_0x117bd0[_0xd742('0x1aa')]);if(!_0x37f598){return this[_0xd742('0xe')]['error'](_0x117bd0,_0xd742('0x1ac'));}var _0x5a4550={'body':_0x117bd0[_0xd742('0x1ad')],'phone':_0x117bd0['to']||'','SmsAccountId':_0x37f598['id']};logger[_0xd742('0xe0')]('sendSMS\x20message',JSON[_0xd742('0x74')](_0x5a4550));this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x117bd0,_0x117bd0[_0xd742('0x1aa')]);this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x1ae'),_0x37f598[_0xd742('0x15')]));this['createSmsMessage'][_0xd742('0x71')](this,_0x5a4550);return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x1af'));};AGIVertices[_0xd742('0x10')][_0xd742('0x1b0')]=function(_0x3d47cb){logger['info'](util[_0xd742('0x2c')](_0xd742('0x1b1'),_0x3d47cb[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x3d47cb[_0xd742('0xd7')])){return this['channel'][_0xd742('0x32')](_0x3d47cb,_0xd742('0x1b2'));}var _0x37de86=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x3d47cb['variable_id']);if(!_0x37de86){return this[_0xd742('0xe')][_0xd742('0x32')](_0x3d47cb,'no\x20variable\x20found');}return this['channel'][_0xd742('0x9e')](_0x37de86,_0x3d47cb[_0xd742('0x1b3')]);};AGIVertices[_0xd742('0x10')]['start']=function(_0x3f33c8){logger['info'](util['format']('Enter\x20in\x20START\x20(%s)\x20block',_0x3f33c8['label']));this['channel'][_0xd742('0xa9')](_0xd742('0x1b4'));if(_0x3f33c8[_0xd742('0xb6')]==='yes'){this[_0xd742('0xe')][_0xd742('0xa9')]('Answer');return this[_0xd742('0xe')][_0xd742('0xb6')]();}return this[_0xd742('0xe')]['noop'](_0xd742('0x1b5'));};AGIVertices['prototype'][_0xd742('0x1b6')]=function(_0x28e465){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x28e465[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x28e465[_0xd742('0x1b7')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x28e465,_0xd742('0x1b8'));}var _0x598749=this[_0xd742('0x1b9')][_0xd742('0x71')](this,_0x28e465[_0xd742('0x1b7')]);if(!this[_0xd742('0xa5')](_0x598749)){return this[_0xd742('0xe')][_0xd742('0x32')](_0x28e465,util[_0xd742('0x2c')](_0xd742('0x1ba'),_0x28e465[_0xd742('0x1b7')]));}if(_0x598749===this[_0xd742('0xe')][_0xd742('0x40')]){return this[_0xd742('0xe')]['error'](_0x28e465,_0xd742('0x1bb'));}this[_0xd742('0x37')][_0xd742('0x71')](this,_0x28e465,_0x598749);var _0x89ea81=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0x1bc'),util[_0xd742('0x2c')](_0xd742('0x1bd'),config[_0xd742('0xb5')]['host']||'127.0.0.1',_0x598749,this[_0xd742('0xe')]['arg_1']));if(_0x89ea81['result']===-0x1){return _0x89ea81;}return this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x171'),_0xd742('0x1bc'),_0x598749));};AGIVertices[_0xd742('0x10')][_0xd742('0x1be')]=function(_0x3a2090){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x1bf'),_0x3a2090[_0xd742('0x39')]));var _0x36d733=this[_0xd742('0x58')][_0xd742('0x71')](this,_0x3a2090['command']);this[_0xd742('0x37')][_0xd742('0x71')](this,_0x3a2090,_0x3a2090[_0xd742('0x1c0')]);if(this[_0xd742('0xa5')](_0x3a2090[_0xd742('0xd7')])){var _0x56b2d3=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x3a2090['variable_id']);if(_0x56b2d3){this['channel']['setVariable'](_0x56b2d3,_0x36d733);return this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x1c1'),_0x3a2090['command'],_0x56b2d3));}}return this[_0xd742('0xe')]['noop'](util['format']('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x3a2090[_0xd742('0x1c0')]));};AGIVertices[_0xd742('0x10')][_0xd742('0x1c2')]=function(_0x34d2e8){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x34d2e8[_0xd742('0x39')]));_0x34d2e8[_0xd742('0x5e')]=_0x34d2e8['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x34d2e8[_0xd742('0x5c')])){return this[_0xd742('0xe')][_0xd742('0xa9')]('no\x20apiKey\x20configured');}if(!this[_0xd742('0xa5')](_0x34d2e8['text'])){return this['channel']['noop'](_0xd742('0xaa'));}this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x1c3'),_0x34d2e8[_0xd742('0x5e')]));var _0x31c286=this[_0xd742('0x5b')]['sync'](this,_0x34d2e8);if(_0x31c286){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x1c4'),_0x31c286));var _0xb8778a=this[_0xd742('0xe')]['streamFile'](_0x31c286);try{fs[_0xd742('0x106')](_0x31c286+_0xd742('0x127'));}catch(_0x4b41bc){logger[_0xd742('0x32')](_0x4b41bc);}return _0xb8778a;}return this['channel'][_0xd742('0x32')](_0x34d2e8,_0xd742('0x1c5'));};AGIVertices['prototype'][_0xd742('0x1c6')]=function(_0x7f91a9){logger[_0xd742('0x30')](util['format'](_0xd742('0x1c7'),_0x7f91a9['label']));_0x7f91a9[_0xd742('0x5e')]=_0x7f91a9['text'][_0xd742('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xd742('0xa5')](_0x7f91a9[_0xd742('0x5e')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0x1c8'),_0x7f91a9[_0xd742('0x5e')]));var _0x15ec33=this['googleTTS'][_0xd742('0x71')](this,_0x7f91a9);if(_0x15ec33){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('Google\x20TTS\x20%s\x20file\x20created',_0x15ec33));var _0x24405e=this[_0xd742('0xe')]['streamFile'](_0x15ec33);try{fs[_0xd742('0x106')](_0x15ec33+_0xd742('0x127'));}catch(_0x46ea4c){logger[_0xd742('0x32')](_0x46ea4c);}return _0x24405e;}return this[_0xd742('0xe')]['error'](_0x7f91a9,_0xd742('0x1c9'));};AGIVertices['prototype'][_0xd742('0x1ca')]=function(_0xe42b48){logger[_0xd742('0x30')](util['format'](_0xd742('0x1cb'),_0xe42b48[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0xe42b48[_0xd742('0x15e')])){return this[_0xd742('0xe')]['error'](_0xe42b48,_0xd742('0x15f'));}logger['info'](util[_0xd742('0x2c')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48[_0xd742('0x15e')]));var _0x35c89e=this[_0xd742('0x52')]['sync'](this,_0xe42b48['findBy']);if(_0x35c89e){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48[_0xd742('0x15e')]));this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0x161'),this['channel']['callerid'],_0xe42b48['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48['findBy']));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48[_0xd742('0x15e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0xd742('0x1cc')]=function(_0x4e4b4a){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x1cd'),_0x4e4b4a[_0xd742('0x39')]));var _0x4c2bd9=this['channel'][_0xd742('0x59')](_0xd742('0x1ce'),[_0x4e4b4a[_0xd742('0x1cf')],_0x4e4b4a[_0xd742('0x79')]]);if(_0x4c2bd9[_0xd742('0xa3')]===-0x1){return _0x4c2bd9;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x171'),_0xd742('0x1ce'),_0x4e4b4a['mailbox']));};AGIVertices['prototype']['vswitch']=function(_0x47a5a2){logger['info'](util[_0xd742('0x2c')](_0xd742('0x1d0'),_0x47a5a2[_0xd742('0x39')]));if(!this['isConfigured'](_0x47a5a2[_0xd742('0xd7')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x47a5a2,_0xd742('0x1b2'));}var _0x1abd89=this[_0xd742('0x11')]['sync'](this,_0x47a5a2['variable_id']);if(!_0x1abd89){return this[_0xd742('0xe')][_0xd742('0x32')](_0x47a5a2,_0xd742('0xd9'));}var _0xf9c6bd=this[_0xd742('0xe')][_0xd742('0x11')](_0x1abd89);return{'code':0xc8,'result':_0xf9c6bd[_0xd742('0xa1')]?_0xf9c6bd[_0xd742('0xa1')]:'-'};};String[_0xd742('0x10')][_0xd742('0xa0')]=function(_0xf2c00e,_0x316d00){return this[_0xd742('0x9f')](_0xf2c00e)['join'](_0x316d00);};module[_0xd742('0x1d1')]=AGIVertices;
\ No newline at end of file
index 6f00764..1b7ae4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e3=['destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','uniqueid','queue','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','acw','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','secondtransfereruniqueid','transfertargetuniqueid','transfereeuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','util','moment','../ami','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','milliseconds','diff','seconds','prototype','startAcw','interface','mandatoryDisposition','mandatoryDispositionPause','name','Action','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x56e3,0x17f));var _0x356e=function(_0x3bed29,_0x445f70){_0x3bed29=_0x3bed29-0x0;var _0x397c29=_0x56e3[_0x3bed29];return _0x397c29;};'use strict';var util=require(_0x356e('0x0'));var _=require('lodash');var moment=require(_0x356e('0x1'));var ami=require(_0x356e('0x2'));var logger=require('../../../config/logger')('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x356e('0x3'));function Acw(_0x436b14){this[_0x356e('0x4')]=_0x436b14[_0x356e('0x4')];this['agents']=_0x436b14[_0x356e('0x5')];this[_0x356e('0x6')]=_0x436b14['timers'];this[_0x356e('0x7')]={};ami['on'](_0x356e('0x8'),this[_0x356e('0x9')][_0x356e('0xa')](this));ami['on'](_0x356e('0xb'),this[_0x356e('0xc')][_0x356e('0xa')](this));ami['on'](_0x356e('0xd'),this[_0x356e('0xe')][_0x356e('0xa')](this));ami['on'](_0x356e('0xf'),this[_0x356e('0x10')][_0x356e('0xa')](this));ami['on'](_0x356e('0x11'),this[_0x356e('0x12')]['bind'](this));ami['on'](_0x356e('0x13'),this[_0x356e('0x14')]['bind'](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0x356e('0xa')](this));}function getDiff(_0x234b71){var _0x3e46aa=moment()[_0x356e('0x15')](0x0);var _0x1c62a1=moment(_0x234b71)['milliseconds'](0x0);return _0x3e46aa[_0x356e('0x16')](_0x1c62a1,_0x356e('0x17'));}Acw[_0x356e('0x18')][_0x356e('0x19')]=function(_0x1214f4){try{var _0x22c11e=this;var _0x4aacca=this[_0x356e('0x7')][_0x1214f4][_0x356e('0x1a')];var _0x250354=this[_0x356e('0x7')][_0x1214f4]['queue'];var _0x14918f=this[_0x356e('0x4')][_0x250354];var _0x346473=![];var _0x30f38a='ACW';if(_0x14918f[_0x356e('0x1b')]){if(_0x14918f[_0x356e('0x1c')][_0x356e('0x1d')]){_0x346473=!![];_0x30f38a=_0x14918f[_0x356e('0x1c')][_0x356e('0x1d')];}}ami[_0x356e('0x1e')]({'action':'QueuePause','interface':_0x4aacca,'paused':!![],'reason':_0x30f38a})[_0x356e('0x1f')](function(_0x338ca5){if(_0x22c11e[_0x356e('0x5')][_0x4aacca]){return RpcUser[_0x356e('0x20')](_0x22c11e[_0x356e('0x5')][_0x4aacca]['id'])[_0x356e('0x1f')](function(_0x26c82c){if(_0x26c82c&&!_0x26c82c[_0x356e('0x21')]){logger[_0x356e('0x22')](_0x356e('0x23'),_0x1214f4,_0x4aacca,_0x250354);var _0xac4dd2=_0x22c11e[_0x356e('0x7')][_0x1214f4][_0x356e('0x24')]&&_0x22c11e[_0x356e('0x7')][_0x1214f4][_0x356e('0x25')]?_0x22c11e[_0x356e('0x7')][_0x1214f4][_0x356e('0x25')]:_0x1214f4;return RpcUser[_0x356e('0x26')](_0x22c11e['agents'][_0x4aacca],_0x30f38a,_0xac4dd2)[_0x356e('0x1f')](function(_0x50b00b){if(!_0x346473){_0x22c11e[_0x356e('0x6')][_0x4aacca]={};logger[_0x356e('0x22')](_0x356e('0x27'),_0x1214f4,_0x22c11e[_0x356e('0x4')][_0x250354][_0x356e('0x28')],_0x4aacca,_0x250354);_0x22c11e['timers'][_0x4aacca][_0x356e('0x29')]=setTimeout(_0x22c11e[_0x356e('0x2a')][_0x356e('0xa')](_0x22c11e,_0x4aacca),_0x22c11e[_0x356e('0x4')][_0x250354][_0x356e('0x28')]*0x3e8);_0x22c11e[_0x356e('0x6')][_0x4aacca][_0x356e('0x2b')]=moment()[_0x356e('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');_0x22c11e[_0x356e('0x6')][_0x4aacca][_0x356e('0x2d')]=_0x1214f4;_0x22c11e['timers'][_0x4aacca][_0x356e('0x2e')]=_0x250354;_0x22c11e[_0x356e('0x6')][_0x4aacca][_0x356e('0x2f')]=function(){var _0x5142a6=getDiff(_0x22c11e[_0x356e('0x6')][_0x4aacca][_0x356e('0x2b')]);clearTimeout(_0x22c11e[_0x356e('0x6')][_0x4aacca][_0x356e('0x29')]);_0x22c11e[_0x356e('0x6')][_0x4aacca]['timer']=![];RpcVoiceAgentReport[_0x356e('0x30')]({'acwtime':_0x5142a6},_0x22c11e[_0x356e('0x6')][_0x4aacca][_0x356e('0x2d')],_0x4aacca)['then'](function(_0xfbb9ef){logger[_0x356e('0x22')]('[%s][UPDATE][ACWTIME:%s]',_0x1214f4,_0x5142a6,_0xfbb9ef);})[_0x356e('0x31')](function(_0x16ccb1){logger[_0x356e('0x32')](_0x356e('0x33'),_0x1214f4,_0x16ccb1);});delete _0x22c11e[_0x356e('0x6')][_0x4aacca];};}});}else{logger[_0x356e('0x22')](_0x356e('0x34'),_0x1214f4,_0x4aacca,_0x250354);}});}})[_0x356e('0x31')](function(_0x4b5689){logger[_0x356e('0x32')](_0x356e('0x27'),_0x1214f4,_0x22c11e[_0x356e('0x4')][_0x250354][_0x356e('0x28')],_0x4aacca,_0x250354);})[_0x356e('0x35')](function(){delete _0x22c11e['channels'][_0x1214f4];});}catch(_0xbcc5d8){logger[_0x356e('0x32')](_0x356e('0x36'),_0xbcc5d8[_0x356e('0x37')]);}};Acw[_0x356e('0x18')][_0x356e('0x2a')]=function(_0xe11290){try{var _0x4a55e7=this;if(_0x4a55e7['timers'][_0xe11290]){_0x4a55e7[_0x356e('0x6')][_0xe11290][_0x356e('0x29')]=![];var _0x3fbf9c=_0x4a55e7[_0x356e('0x6')][_0xe11290]['uniqueid'];var _0x257ade=_0x4a55e7[_0x356e('0x6')][_0xe11290][_0x356e('0x2e')];var _0x5f1bcc=_0x4a55e7[_0x356e('0x4')][_0x257ade][_0x356e('0x28')];logger[_0x356e('0x22')](_0x356e('0x38'),_0x3fbf9c,_0xe11290);RpcUser['saveUnpause'](this['agents'][_0xe11290]);RpcVoiceAgentReport[_0x356e('0x30')]({'acwtime':_0x5f1bcc,'agentacw':!![]},_0x3fbf9c,_0xe11290)[_0x356e('0x1f')](function(_0x530007){logger[_0x356e('0x22')](_0x356e('0x39'),_0x3fbf9c,_0x5f1bcc,_0x530007);})[_0x356e('0x31')](function(_0x4b479c){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x3fbf9c,_0x4b479c);});}else{logger[_0x356e('0x32')](_0x356e('0x3a'),_0xe11290);if(_0x4a55e7[_0x356e('0x6')]){logger[_0x356e('0x22')]('[ACW][TIMERS]',JSON[_0x356e('0x3b')](_0x4a55e7[_0x356e('0x6')]));}}}catch(_0x4796a6){logger['error']('[ACW][STOP]\x20%s',_0x4796a6[_0x356e('0x37')]);}};Acw[_0x356e('0x18')]['syncAgentConnect']=function(_0x2ba9de){try{if(this[_0x356e('0x4')][_0x2ba9de[_0x356e('0x2e')]]&&(this[_0x356e('0x4')][_0x2ba9de[_0x356e('0x2e')]][_0x356e('0x3c')]||this['voiceQueues'][_0x2ba9de['queue']]['mandatoryDisposition'])){if(this[_0x356e('0x5')][_0x2ba9de[_0x356e('0x1a')]]){this[_0x356e('0x7')][_0x2ba9de[_0x356e('0x2d')]]={'queue':_0x2ba9de[_0x356e('0x2e')],'interface':_0x2ba9de[_0x356e('0x1a')],'destlinkedid':_0x2ba9de['destlinkedid']};}}}catch(_0x2d7292){logger[_0x356e('0x32')](_0x356e('0x3d'),_0x2d7292[_0x356e('0x37')]);}};Acw[_0x356e('0x18')][_0x356e('0x3e')]=function(_0x106156){try{if(this[_0x356e('0x4')][_0x106156[_0x356e('0x2e')]]&&(this[_0x356e('0x4')][_0x106156['queue']][_0x356e('0x3c')]||this['voiceQueues'][_0x106156['queue']][_0x356e('0x1b')])){if(this[_0x356e('0x5')][_0x106156['interface']]){this[_0x356e('0x7')][_0x106156['uniqueid']]={'queue':_0x106156[_0x356e('0x2e')],'interface':_0x106156[_0x356e('0x1a')]};}}}catch(_0x247720){logger[_0x356e('0x32')](_0x356e('0x3f'),_0x247720[_0x356e('0x37')]);}};Acw[_0x356e('0x18')][_0x356e('0xc')]=function(_0x21bf8a){try{if(this['channels'][_0x21bf8a['uniqueid']]&&_[_0x356e('0x40')](this['channels'][_0x21bf8a[_0x356e('0x2d')]]['attended'])){logger[_0x356e('0x22')](_0x356e('0x41'),_0x21bf8a[_0x356e('0x2d')]);this[_0x356e('0x19')](_0x21bf8a[_0x356e('0x2d')]);}else if(this['channels'][_0x21bf8a[_0x356e('0x42')]]&&_[_0x356e('0x40')](this[_0x356e('0x7')][_0x21bf8a[_0x356e('0x42')]][_0x356e('0x24')])){logger['info'](_0x356e('0x43'),_0x21bf8a[_0x356e('0x42')]);this[_0x356e('0x19')](_0x21bf8a[_0x356e('0x42')]);}}catch(_0x4b0333){logger[_0x356e('0x32')](_0x356e('0x44'),_0x4b0333[_0x356e('0x37')]);}};Acw[_0x356e('0x18')][_0x356e('0xe')]=function(_0x22ffd5){try{if(this['channels'][_0x22ffd5['uniqueid']]&&this[_0x356e('0x7')][_0x22ffd5[_0x356e('0x2d')]][_0x356e('0x24')]){logger[_0x356e('0x22')](_0x356e('0x45'),_0x22ffd5['uniqueid']);this[_0x356e('0x19')](_0x22ffd5[_0x356e('0x2d')]);}else if(this[_0x356e('0x7')][_0x22ffd5[_0x356e('0x42')]]&&this[_0x356e('0x7')][_0x22ffd5[_0x356e('0x42')]]['attended']){logger[_0x356e('0x22')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x22ffd5['linkedid']);this['startAcw'](_0x22ffd5[_0x356e('0x42')]);}}catch(_0x111c05){logger[_0x356e('0x32')](_0x356e('0x46'),_0x111c05[_0x356e('0x37')]);}};Acw[_0x356e('0x18')][_0x356e('0x12')]=function(_0x8c9d2a){try{if(!_[_0x356e('0x47')](this[_0x356e('0x7')][_0x8c9d2a['transfereeuniqueid']])){this[_0x356e('0x19')](_0x8c9d2a['transfereeuniqueid']);if(this[_0x356e('0x7')][_0x8c9d2a[_0x356e('0x48')]]){this[_0x356e('0x7')][_0x8c9d2a[_0x356e('0x48')]]['attended']=!![];this['channels'][_0x8c9d2a[_0x356e('0x49')]]=this[_0x356e('0x7')][_0x8c9d2a[_0x356e('0x48')]];delete this[_0x356e('0x7')][_0x8c9d2a[_0x356e('0x48')]];}}else if(!_['isNil'](this[_0x356e('0x7')][_0x8c9d2a['transfertargetuniqueid']])){this[_0x356e('0x19')](_0x8c9d2a[_0x356e('0x49')]);if(this['channels'][_0x8c9d2a['origtransfereruniqueid']]){this[_0x356e('0x7')][_0x8c9d2a['origtransfereruniqueid']][_0x356e('0x24')]=!![];this[_0x356e('0x7')][_0x8c9d2a[_0x356e('0x4a')]]=this[_0x356e('0x7')][_0x8c9d2a[_0x356e('0x4b')]];delete this[_0x356e('0x7')][_0x8c9d2a[_0x356e('0x4b')]];}}}catch(_0x4765aa){logger[_0x356e('0x32')](_0x356e('0x4c'),_0x4765aa[_0x356e('0x37')]);}};Acw['prototype']['syncBlindTransfer']=function(_0x14d6ac){try{if(this[_0x356e('0x7')][_0x14d6ac[_0x356e('0x4d')]]){logger[_0x356e('0x22')](_0x356e('0x4e'),JSON[_0x356e('0x3b')](_0x14d6ac[_0x356e('0x4d')]));this[_0x356e('0x19')](_0x14d6ac[_0x356e('0x4d')]);}else if(this['channels'][_0x14d6ac[_0x356e('0x4f')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x14d6ac[_0x356e('0x4f')]));this['startAcw'](_0x14d6ac['transfererlinkedid']);}}catch(_0xf1430b){logger[_0x356e('0x32')](_0x356e('0x50'),_0xf1430b['message']);}};Acw[_0x356e('0x18')]['syncAgentRingNoAnswer']=function(_0x313c73){try{if(this[_0x356e('0x4')][_0x313c73[_0x356e('0x2e')]]&&this[_0x356e('0x4')][_0x313c73[_0x356e('0x2e')]][_0x356e('0x51')]==='all'){if(this[_0x356e('0x5')][_0x313c73[_0x356e('0x1a')]]){logger[_0x356e('0x22')](_0x356e('0x52'),_0x313c73[_0x356e('0x2d')],_0x313c73[_0x356e('0x1a')],_0x313c73[_0x356e('0x2e')]);return RpcUser[_0x356e('0x26')](this[_0x356e('0x5')][_0x313c73[_0x356e('0x1a')]],_0x356e('0x53'),_0x313c73[_0x356e('0x2d')]);}}}catch(_0x120ce3){logger[_0x356e('0x32')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x120ce3['message']);}};module['exports']=Acw;
\ No newline at end of file
+var _0x9bb4=['lodash','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','timers','channels','syncAgentConnect','bind','agentringnoanswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','milliseconds','diff','seconds','prototype','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','agents','getAgent','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','acwTimeout','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','attended','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util'];(function(_0x500dd2,_0x23bd28){var _0xa7c859=function(_0x49e1b3){while(--_0x49e1b3){_0x500dd2['push'](_0x500dd2['shift']());}};_0xa7c859(++_0x23bd28);}(_0x9bb4,0x13b));var _0x49bb=function(_0x9ebf51,_0x5e17f9){_0x9ebf51=_0x9ebf51-0x0;var _0x2e0f5f=_0x9bb4[_0x9ebf51];return _0x2e0f5f;};'use strict';var util=require(_0x49bb('0x0'));var _=require(_0x49bb('0x1'));var moment=require(_0x49bb('0x2'));var ami=require('../ami');var logger=require(_0x49bb('0x3'))(_0x49bb('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x49bb('0x5'));function Acw(_0x83cd95){this[_0x49bb('0x6')]=_0x83cd95[_0x49bb('0x6')];this['agents']=_0x83cd95['agents'];this[_0x49bb('0x7')]=_0x83cd95[_0x49bb('0x7')];this[_0x49bb('0x8')]={};ami['on']('agentconnect',this[_0x49bb('0x9')][_0x49bb('0xa')](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0x49bb('0xa')](this));ami['on']('hangup',this['syncHangup'][_0x49bb('0xa')](this));ami['on'](_0x49bb('0xb'),this['syncAgentRingNoAnswer'][_0x49bb('0xa')](this));ami['on']('attendedtransfer',this[_0x49bb('0xc')]['bind'](this));ami['on'](_0x49bb('0xd'),this[_0x49bb('0xe')][_0x49bb('0xa')](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x31a42d){var _0x4c305e=moment()[_0x49bb('0xf')](0x0);var _0x4ab991=moment(_0x31a42d)['milliseconds'](0x0);return _0x4c305e[_0x49bb('0x10')](_0x4ab991,_0x49bb('0x11'));}Acw[_0x49bb('0x12')]['startAcw']=function(_0x5ba287){try{var _0xf77c06=this;var _0x369fb7=this[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x13')];var _0x4f5b30=this[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x14')];var _0x56520f=this['voiceQueues'][_0x4f5b30];var _0xb5f8=![];var _0x5e10f7=_0x49bb('0x15');if(_0x56520f[_0x49bb('0x16')]){if(_0x56520f[_0x49bb('0x17')]['name']){_0xb5f8=!![];_0x5e10f7=_0x56520f[_0x49bb('0x17')][_0x49bb('0x18')];}}ami['Action']({'action':_0x49bb('0x19'),'interface':_0x369fb7,'paused':!![],'reason':_0x5e10f7})['then'](function(_0x44f4e3){if(_0xf77c06[_0x49bb('0x1a')][_0x369fb7]){return RpcUser[_0x49bb('0x1b')](_0xf77c06[_0x49bb('0x1a')][_0x369fb7]['id'])[_0x49bb('0x1c')](function(_0x43fd4c){if(_0x43fd4c&&!_0x43fd4c[_0x49bb('0x1d')]){logger[_0x49bb('0x1e')](_0x49bb('0x1f'),_0x5ba287,_0x369fb7,_0x4f5b30);var _0x199f8f=_0xf77c06[_0x49bb('0x8')][_0x5ba287]['attended']&&_0xf77c06[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x20')]?_0xf77c06[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x20')]:_0x5ba287;return RpcUser[_0x49bb('0x21')](_0xf77c06[_0x49bb('0x1a')][_0x369fb7],_0x5e10f7,_0x199f8f)[_0x49bb('0x1c')](function(_0x402044){if(!_0xb5f8){_0xf77c06[_0x49bb('0x7')][_0x369fb7]={};logger[_0x49bb('0x1e')](_0x49bb('0x22'),_0x5ba287,_0xf77c06[_0x49bb('0x6')][_0x4f5b30]['acwTimeout'],_0x369fb7,_0x4f5b30);_0xf77c06['timers'][_0x369fb7][_0x49bb('0x23')]=setTimeout(_0xf77c06['stopAcw'][_0x49bb('0xa')](_0xf77c06,_0x369fb7),_0xf77c06[_0x49bb('0x6')][_0x4f5b30][_0x49bb('0x24')]*0x3e8);_0xf77c06['timers'][_0x369fb7][_0x49bb('0x25')]=moment()['format'](_0x49bb('0x26'));_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x27')]=_0x5ba287;_0xf77c06[_0x49bb('0x7')][_0x369fb7]['queue']=_0x4f5b30;_0xf77c06['timers'][_0x369fb7][_0x49bb('0x28')]=function(){var _0x24eeed=getDiff(_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x25')]);clearTimeout(_0xf77c06[_0x49bb('0x7')][_0x369fb7]['timer']);_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x23')]=![];RpcVoiceAgentReport[_0x49bb('0x29')]({'acwtime':_0x24eeed},_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x27')],_0x369fb7)['then'](function(_0x2809c4){logger[_0x49bb('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x5ba287,_0x24eeed,_0x2809c4);})[_0x49bb('0x2a')](function(_0x53489f){logger[_0x49bb('0x2b')](_0x49bb('0x2c'),_0x5ba287,_0x53489f);});delete _0xf77c06[_0x49bb('0x7')][_0x369fb7];};}});}else{logger['info'](_0x49bb('0x2d'),_0x5ba287,_0x369fb7,_0x4f5b30);}});}})[_0x49bb('0x2a')](function(_0x16d4a0){logger[_0x49bb('0x2b')](_0x49bb('0x22'),_0x5ba287,_0xf77c06[_0x49bb('0x6')][_0x4f5b30][_0x49bb('0x24')],_0x369fb7,_0x4f5b30);})['finally'](function(){delete _0xf77c06[_0x49bb('0x8')][_0x5ba287];});}catch(_0x57e430){logger[_0x49bb('0x2b')](_0x49bb('0x2e'),_0x57e430[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')]['stopAcw']=function(_0x5e664a){try{var _0x435fcc=this;if(_0x435fcc[_0x49bb('0x7')][_0x5e664a]){_0x435fcc[_0x49bb('0x7')][_0x5e664a]['timer']=![];var _0x45320a=_0x435fcc[_0x49bb('0x7')][_0x5e664a][_0x49bb('0x27')];var _0x597ce0=_0x435fcc['timers'][_0x5e664a]['queue'];var _0x2c6f89=_0x435fcc['voiceQueues'][_0x597ce0][_0x49bb('0x24')];logger['info'](_0x49bb('0x30'),_0x45320a,_0x5e664a);RpcUser['saveUnpause'](this[_0x49bb('0x1a')][_0x5e664a]);RpcVoiceAgentReport[_0x49bb('0x29')]({'acwtime':_0x2c6f89,'agentacw':!![]},_0x45320a,_0x5e664a)['then'](function(_0x40a06){logger[_0x49bb('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x45320a,_0x2c6f89,_0x40a06);})[_0x49bb('0x2a')](function(_0x3bc9af){logger['error'](_0x49bb('0x2c'),_0x45320a,_0x3bc9af);});}else{logger[_0x49bb('0x2b')](_0x49bb('0x31'),_0x5e664a);if(_0x435fcc[_0x49bb('0x7')]){logger[_0x49bb('0x1e')]('[ACW][TIMERS]',JSON['stringify'](_0x435fcc[_0x49bb('0x7')]));}}}catch(_0x117cef){logger[_0x49bb('0x2b')]('[ACW][STOP]\x20%s',_0x117cef[_0x49bb('0x2f')]);}};Acw['prototype'][_0x49bb('0x9')]=function(_0x187541){try{if(this[_0x49bb('0x6')][_0x187541[_0x49bb('0x14')]]&&(this[_0x49bb('0x6')][_0x187541[_0x49bb('0x14')]]['acw']||this[_0x49bb('0x6')][_0x187541['queue']]['mandatoryDisposition'])){if(this[_0x49bb('0x1a')][_0x187541[_0x49bb('0x13')]]){this[_0x49bb('0x8')][_0x187541['uniqueid']]={'queue':_0x187541[_0x49bb('0x14')],'interface':_0x187541[_0x49bb('0x13')],'destlinkedid':_0x187541[_0x49bb('0x20')]};}}}catch(_0x284c0b){logger[_0x49bb('0x2b')]('[ACW][syncAgentConnect]\x20%s',_0x284c0b[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')]['syncAgentConnectPreview']=function(_0x5ea65d){try{if(this[_0x49bb('0x6')][_0x5ea65d[_0x49bb('0x14')]]&&(this[_0x49bb('0x6')][_0x5ea65d['queue']]['acw']||this['voiceQueues'][_0x5ea65d[_0x49bb('0x14')]]['mandatoryDisposition'])){if(this[_0x49bb('0x1a')][_0x5ea65d['interface']]){this[_0x49bb('0x8')][_0x5ea65d[_0x49bb('0x27')]]={'queue':_0x5ea65d['queue'],'interface':_0x5ea65d[_0x49bb('0x13')]};}}}catch(_0x510610){logger['error'](_0x49bb('0x32'),_0x510610[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')][_0x49bb('0x33')]=function(_0x5c14a2){try{if(this[_0x49bb('0x8')][_0x5c14a2[_0x49bb('0x27')]]&&_['isUndefined'](this[_0x49bb('0x8')][_0x5c14a2['uniqueid']][_0x49bb('0x34')])){logger[_0x49bb('0x1e')](_0x49bb('0x35'),_0x5c14a2[_0x49bb('0x27')]);this[_0x49bb('0x36')](_0x5c14a2[_0x49bb('0x27')]);}else if(this[_0x49bb('0x8')][_0x5c14a2[_0x49bb('0x37')]]&&_[_0x49bb('0x38')](this[_0x49bb('0x8')][_0x5c14a2['linkedid']][_0x49bb('0x34')])){logger[_0x49bb('0x1e')](_0x49bb('0x39'),_0x5c14a2[_0x49bb('0x37')]);this['startAcw'](_0x5c14a2[_0x49bb('0x37')]);}}catch(_0x599ed9){logger[_0x49bb('0x2b')](_0x49bb('0x3a'),_0x599ed9['message']);}};Acw[_0x49bb('0x12')][_0x49bb('0x3b')]=function(_0x542a3d){try{if(this[_0x49bb('0x8')][_0x542a3d[_0x49bb('0x27')]]&&this[_0x49bb('0x8')][_0x542a3d[_0x49bb('0x27')]][_0x49bb('0x34')]){logger[_0x49bb('0x1e')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x542a3d[_0x49bb('0x27')]);this[_0x49bb('0x36')](_0x542a3d['uniqueid']);}else if(this['channels'][_0x542a3d['linkedid']]&&this[_0x49bb('0x8')][_0x542a3d[_0x49bb('0x37')]][_0x49bb('0x34')]){logger[_0x49bb('0x1e')](_0x49bb('0x3c'),_0x542a3d['linkedid']);this[_0x49bb('0x36')](_0x542a3d[_0x49bb('0x37')]);}}catch(_0x101e97){logger['error'](_0x49bb('0x3d'),_0x101e97['message']);}};Acw[_0x49bb('0x12')][_0x49bb('0xc')]=function(_0x4b8d09){try{if(!_[_0x49bb('0x3e')](this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x3f')]])){this['startAcw'](_0x4b8d09[_0x49bb('0x3f')]);if(this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x40')]]){this['channels'][_0x4b8d09['secondtransfereruniqueid']][_0x49bb('0x34')]=!![];this['channels'][_0x4b8d09[_0x49bb('0x41')]]=this['channels'][_0x4b8d09[_0x49bb('0x40')]];delete this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x40')]];}}else if(!_[_0x49bb('0x3e')](this[_0x49bb('0x8')][_0x4b8d09['transfertargetuniqueid']])){this[_0x49bb('0x36')](_0x4b8d09[_0x49bb('0x41')]);if(this[_0x49bb('0x8')][_0x4b8d09['origtransfereruniqueid']]){this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x42')]][_0x49bb('0x34')]=!![];this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x3f')]]=this[_0x49bb('0x8')][_0x4b8d09['origtransfereruniqueid']];delete this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x42')]];}}}catch(_0x165ea8){logger['error'](_0x49bb('0x43'),_0x165ea8[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')][_0x49bb('0xe')]=function(_0xf85bcc){try{if(this[_0x49bb('0x8')][_0xf85bcc[_0x49bb('0x44')]]){logger['info'](_0x49bb('0x45'),JSON[_0x49bb('0x46')](_0xf85bcc[_0x49bb('0x44')]));this[_0x49bb('0x36')](_0xf85bcc[_0x49bb('0x44')]);}else if(this['channels'][_0xf85bcc[_0x49bb('0x47')]]){logger[_0x49bb('0x1e')](_0x49bb('0x48'),JSON[_0x49bb('0x46')](_0xf85bcc[_0x49bb('0x47')]));this[_0x49bb('0x36')](_0xf85bcc[_0x49bb('0x47')]);}}catch(_0x143181){logger['error'](_0x49bb('0x49'),_0x143181[_0x49bb('0x2f')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x122658){try{if(this[_0x49bb('0x6')][_0x122658['queue']]&&this[_0x49bb('0x6')][_0x122658[_0x49bb('0x14')]][_0x49bb('0x4a')]===_0x49bb('0x4b')){if(this[_0x49bb('0x1a')][_0x122658['interface']]){logger[_0x49bb('0x1e')](_0x49bb('0x4c'),_0x122658[_0x49bb('0x27')],_0x122658[_0x49bb('0x13')],_0x122658[_0x49bb('0x14')]);return RpcUser[_0x49bb('0x21')](this[_0x49bb('0x1a')][_0x122658[_0x49bb('0x13')]],_0x49bb('0x4d'),_0x122658[_0x49bb('0x27')]);}}}catch(_0x4626c7){logger[_0x49bb('0x2b')](_0x49bb('0x4e'),_0x4626c7['message']);}};module['exports']=Acw;
\ No newline at end of file
index 8350b36..7dab1dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d05=['resolve','then','catch','log','close','exports','asterisk-manager','bluebird','moment','util','lodash','../../config/logger','ami','../../config/environment','asterisk','username','password','keepConnected','Action','promisify','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','port','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','once','error','info','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s'];(function(_0x5b8ff3,_0x2b2a26){var _0x18236b=function(_0xe35960){while(--_0xe35960){_0x5b8ff3['push'](_0x5b8ff3['shift']());}};_0x18236b(++_0x2b2a26);}(_0x8d05,0xa6));var _0x58d0=function(_0x36c87a,_0x440257){_0x36c87a=_0x36c87a-0x0;var _0x238095=_0x8d05[_0x36c87a];return _0x238095;};'use strict';var Manager=require(_0x58d0('0x0'));var BPromise=require(_0x58d0('0x1'));var moment=require(_0x58d0('0x2'));var util=require(_0x58d0('0x3'));var _=require(_0x58d0('0x4'));var logger=require(_0x58d0('0x5'))(_0x58d0('0x6'));var config=require(_0x58d0('0x7'));var ami=new Manager(config['asterisk']['port'],config[_0x58d0('0x8')]['ip'],config['asterisk'][_0x58d0('0x9')],config[_0x58d0('0x8')][_0x58d0('0xa')],!![]);ami[_0x58d0('0xb')]();ami[_0x58d0('0xc')]=BPromise[_0x58d0('0xd')](ami[_0x58d0('0xe')]);function error(_0x5a785c){logger['error'](util[_0x58d0('0xf')](_0x58d0('0x10'),config[_0x58d0('0x8')]['username'],config[_0x58d0('0x8')]['ip'],config['asterisk']['port'],util['inspect'](_0x5a785c,![],null)));}function close(){logger['error'](util[_0x58d0('0xf')](_0x58d0('0x11'),config[_0x58d0('0x8')][_0x58d0('0x9')],config['asterisk']['ip'],config['asterisk'][_0x58d0('0x12')]));}ami[_0x58d0('0x13')]=function(){return function(){return ami[_0x58d0('0xc')]({'action':_0x58d0('0x14')});};};ami[_0x58d0('0x15')]=function(){return function(){return ami['Action']({'action':_0x58d0('0x16')});};};ami[_0x58d0('0x17')]=function(){return function(){return ami[_0x58d0('0xc')]({'action':_0x58d0('0x18')});};};ami[_0x58d0('0x19')]=function(){return function(){return ami[_0x58d0('0xc')]({'action':_0x58d0('0x1a')});};};ami[_0x58d0('0x1b')]=function(){return function(){return ami['Action']({'action':_0x58d0('0x1c')});};};function connect(_0x513b63){logger['info'](util[_0x58d0('0xf')]('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0x58d0('0x8')]['username'],config[_0x58d0('0x8')]['ip'],config[_0x58d0('0x8')]['port']));ami[_0x58d0('0x1d')](_0x58d0('0x1e'),error);ami[_0x58d0('0x1d')]('close',close);}ami['on']('connect',connect);ami['on']('shutdown',function(_0x1c6c71){logger[_0x58d0('0x1f')](util[_0x58d0('0xf')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk']['username'],config[_0x58d0('0x8')]['ip'],config[_0x58d0('0x8')][_0x58d0('0x12')],util['inspect'](_0x1c6c71,![],null)));});ami['on'](_0x58d0('0x20'),function(_0x3497b0){logger['info'](util[_0x58d0('0xf')](_0x58d0('0x21'),config['asterisk'][_0x58d0('0x9')],config[_0x58d0('0x8')]['ip'],config['asterisk'][_0x58d0('0x12')]));return BPromise[_0x58d0('0x22')]()[_0x58d0('0x23')](ami[_0x58d0('0x13')]())[_0x58d0('0x23')](ami['actionDeviceStateList']())[_0x58d0('0x23')](ami[_0x58d0('0x17')]())[_0x58d0('0x23')](ami['actionQueueSummary']())[_0x58d0('0x23')](ami[_0x58d0('0x1b')]())[_0x58d0('0x24')](function(_0x2339c9){console[_0x58d0('0x25')](_0x2339c9);});});ami[_0x58d0('0x1d')](_0x58d0('0x1e'),error);ami[_0x58d0('0x1d')](_0x58d0('0x26'),close);module[_0x58d0('0x27')]=ami;
\ No newline at end of file
+var _0x495a=['coreshowchannels','info','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','resolve','then','actionSipShowRegistry','actionCoreShowChannels','catch','asterisk-manager','bluebird','moment','lodash','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','queuesummary'];(function(_0x5c751d,_0x44acb2){var _0x434aad=function(_0x2412b3){while(--_0x2412b3){_0x5c751d['push'](_0x5c751d['shift']());}};_0x434aad(++_0x44acb2);}(_0x495a,0xe5));var _0xa495=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x495a[_0x209941];return _0x1e8729;};'use strict';var Manager=require(_0xa495('0x0'));var BPromise=require(_0xa495('0x1'));var moment=require(_0xa495('0x2'));var util=require('util');var _=require(_0xa495('0x3'));var logger=require(_0xa495('0x4'))(_0xa495('0x5'));var config=require('../../config/environment');var ami=new Manager(config[_0xa495('0x6')][_0xa495('0x7')],config[_0xa495('0x6')]['ip'],config['asterisk'][_0xa495('0x8')],config[_0xa495('0x6')][_0xa495('0x9')],!![]);ami[_0xa495('0xa')]();ami[_0xa495('0xb')]=BPromise['promisify'](ami[_0xa495('0xc')]);function error(_0x134118){logger[_0xa495('0xd')](util['format'](_0xa495('0xe'),config['asterisk'][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config['asterisk'][_0xa495('0x7')],util[_0xa495('0xf')](_0x134118,![],null)));}function close(){logger[_0xa495('0xd')](util[_0xa495('0x10')](_0xa495('0x11'),config[_0xa495('0x6')][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config['asterisk']['port']));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xa495('0xb')]({'action':_0xa495('0x12')});};};ami[_0xa495('0x13')]=function(){return function(){return ami[_0xa495('0xb')]({'action':_0xa495('0x14')});};};ami[_0xa495('0x15')]=function(){return function(){return ami['Action']({'action':'sippeerstatus'});};};ami['actionQueueSummary']=function(){return function(){return ami[_0xa495('0xb')]({'action':_0xa495('0x16')});};};ami['actionCoreShowChannels']=function(){return function(){return ami['Action']({'action':_0xa495('0x17')});};};function connect(_0x490224){logger[_0xa495('0x18')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config['asterisk'][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config[_0xa495('0x6')][_0xa495('0x7')]));ami[_0xa495('0x19')](_0xa495('0xd'),error);ami[_0xa495('0x19')](_0xa495('0x1a'),close);}ami['on'](_0xa495('0x1b'),connect);ami['on'](_0xa495('0x1c'),function(_0x2d9216){logger[_0xa495('0x18')](util['format'](_0xa495('0x1d'),config[_0xa495('0x6')][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config[_0xa495('0x6')][_0xa495('0x7')],util[_0xa495('0xf')](_0x2d9216,![],null)));});ami['on'](_0xa495('0x1e'),function(_0x20c220){logger['info'](util[_0xa495('0x10')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xa495('0x6')]['username'],config[_0xa495('0x6')]['ip'],config['asterisk']['port']));return BPromise[_0xa495('0x1f')]()[_0xa495('0x20')](ami[_0xa495('0x21')]())[_0xa495('0x20')](ami[_0xa495('0x13')]())[_0xa495('0x20')](ami[_0xa495('0x15')]())['then'](ami['actionQueueSummary']())['then'](ami[_0xa495('0x22')]())[_0xa495('0x23')](function(_0x4fa64a){console['log'](_0x4fa64a);});});ami[_0xa495('0x19')](_0xa495('0xd'),error);ami['once'](_0xa495('0x1a'),close);module['exports']=ami;
\ No newline at end of file
index ccd6113..9d1ab83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['ami','client','http','then','debug','memberReport','error','message','result','catch','rpc','jayson/promise','bluebird','../../config/logger'];(function(_0x139b85,_0x5e0691){var _0x1e833f=function(_0xc97932){while(--_0xc97932){_0x139b85['push'](_0x139b85['shift']());}};_0x1e833f(++_0x5e0691);}(_0xac4a,0x13f));var _0xaac4=function(_0x3217b5,_0x47447a){_0x3217b5=_0x3217b5-0x0;var _0x55bb87=_0xac4a[_0x3217b5];return _0x55bb87;};'use strict';var jayson=require(_0xaac4('0x0'));var BPromise=require(_0xaac4('0x1'));var logger=require(_0xaac4('0x2'))(_0xaac4('0x3'));var client=jayson[_0xaac4('0x4')][_0xaac4('0x5')]({'port':0x2329});client['Request']=function(_0x58626e,_0x2af0f6){return new BPromise(function(_0x2a5762,_0x32d34c){return client['request'](_0x58626e,_0x2af0f6)[_0xaac4('0x6')](function(_0x53d03a){logger[_0xaac4('0x7')]('rpc',_0xaac4('0x8'),_0x58626e,_0x2af0f6,_0x53d03a);if(_0x53d03a[_0xaac4('0x9')]){logger['error']('rpc',_0xaac4('0x8'),_0x58626e,_0x53d03a['error'][_0xaac4('0xa')],_0x2af0f6);return _0x32d34c(_0x53d03a['error']['message']);}else{return _0x2a5762(_0x53d03a[_0xaac4('0xb')]);}})[_0xaac4('0xc')](function(_0x38d1d0){logger[_0xaac4('0x9')](_0xaac4('0xd'),'memberReport',_0x58626e,_0x38d1d0,_0x2af0f6);return _0x32d34c(_0x38d1d0);});});};module['exports']=client;
\ No newline at end of file
+var _0xe706=['result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','debug','rpc','memberReport','error','message'];(function(_0x5af59e,_0x3771c1){var _0x4240df=function(_0x2267fd){while(--_0x2267fd){_0x5af59e['push'](_0x5af59e['shift']());}};_0x4240df(++_0x3771c1);}(_0xe706,0xa3));var _0x6e70=function(_0x4c1ec2,_0x4f42b7){_0x4c1ec2=_0x4c1ec2-0x0;var _0x3f6f1c=_0xe706[_0x4c1ec2];return _0x3f6f1c;};'use strict';var jayson=require(_0x6e70('0x0'));var BPromise=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('ami');var client=jayson[_0x6e70('0x3')][_0x6e70('0x4')]({'port':0x2329});client[_0x6e70('0x5')]=function(_0x7dfbc3,_0x142c27){return new BPromise(function(_0x2164a4,_0x376a8d){return client[_0x6e70('0x6')](_0x7dfbc3,_0x142c27)[_0x6e70('0x7')](function(_0x4381d1){logger[_0x6e70('0x8')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x142c27,_0x4381d1);if(_0x4381d1[_0x6e70('0xb')]){logger[_0x6e70('0xb')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')],_0x142c27);return _0x376a8d(_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')]);}else{return _0x2164a4(_0x4381d1[_0x6e70('0xd')]);}})[_0x6e70('0xe')](function(_0x4600f9){logger['error']('rpc',_0x6e70('0xa'),_0x7dfbc3,_0x4600f9,_0x142c27);return _0x376a8d(_0x4600f9);});});};module[_0x6e70('0xf')]=client;
\ No newline at end of file
index 91d3a16..41b8920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8553=['isNil','string','voiceQueue','name','Contact','firstName','lastName','number','phone','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','exports','lodash','moment'];(function(_0x2d2fcf,_0x5cfc08){var _0x4d0238=function(_0x527f9c){while(--_0x527f9c){_0x2d2fcf['push'](_0x2d2fcf['shift']());}};_0x4d0238(++_0x5cfc08);}(_0x8553,0x181));var _0x3855=function(_0xf8e27c,_0x47790d){_0xf8e27c=_0xf8e27c-0x0;var _0x1e3049=_0x8553[_0xf8e27c];return _0x1e3049;};'use strict';var util=require('util');var _=require(_0x3855('0x0'));var moment=require(_0x3855('0x1'));function checkNameSurname(_0x47bed1,_0x3a26ef,_0x2d2d83){var _0x1d88ec='';if(!_[_0x3855('0x2')](_0x3a26ef)&&_0x3855('0x3')===typeof _0x3a26ef){_0x1d88ec+=_0x3a26ef;}if(!_[_0x3855('0x2')](_0x2d2d83)&&_0x3855('0x3')===typeof _0x2d2d83){_0x1d88ec+='\x20'+_0x2d2d83;}if(_0x1d88ec!==''){return _0x1d88ec;}return _0x47bed1;}function Action(_0x5baab4,_0x40e25a,_0x55097a){this[_0x3855('0x4')]=_0x5baab4;this['uniqueid']=_0x55097a||undefined;this[_0x3855('0x5')]=checkNameSurname(_0x40e25a[_0x3855('0x6')]['phone'],_0x40e25a[_0x3855('0x6')][_0x3855('0x7')],_0x40e25a[_0x3855('0x6')][_0x3855('0x8')]);this[_0x3855('0x9')]=_0x40e25a['Contact'][_0x3855('0xa')];this[_0x3855('0xb')]=_0x5baab4['name'];this[_0x3855('0xc')]=_0x40e25a[_0x3855('0xc')]||![];this[_0x3855('0xd')]=_0x5baab4[_0x3855('0xd')];this['dialQueueTimeout']=_0x5baab4[_0x3855('0xe')]||0x3;this[_0x3855('0xf')]=_0x40e25a[_0x3855('0xf')];this[_0x3855('0x10')]=_0x40e25a[_0x3855('0x10')];this['countcongestionretry']=_0x40e25a[_0x3855('0x11')];this[_0x3855('0x12')]=_0x40e25a['countnoanswerretry'];this['countnosuchnumberretry']=_0x40e25a[_0x3855('0x13')];this[_0x3855('0x14')]=_0x40e25a[_0x3855('0x14')];this['countabandonedretry']=_0x40e25a[_0x3855('0x15')];this[_0x3855('0x16')]=_0x40e25a[_0x3855('0x16')];this['countagentrejectretry']=_0x40e25a[_0x3855('0x17')];this[_0x3855('0x18')]=_0x40e25a['ContactId'];this[_0x3855('0x19')]=_0x40e25a['ListId'];this[_0x3855('0x1a')]=_0x40e25a[_0x3855('0x1a')];this[_0x3855('0x1b')]=_0x40e25a[_0x3855('0x1b')];this[_0x3855('0x1c')]=_0x40e25a[_0x3855('0x1c')];this[_0x3855('0x1d')]=_0x40e25a['id'];this[_0x3855('0x1e')]=_0x40e25a[_0x3855('0x6')]['firstName']||'';this['starttime']=moment()[_0x3855('0x1f')](_0x3855('0x20'));this[_0x3855('0x21')]=_0x40e25a['callback'];this[_0x3855('0x22')]=_0x40e25a[_0x3855('0x22')];this[_0x3855('0x23')]=_0x40e25a[_0x3855('0x23')];this[_0x3855('0x24')]=_0x40e25a[_0x3855('0x24')];this[_0x3855('0x25')]='';this['originatecalleridname']='';}Action[_0x3855('0x26')][_0x3855('0x27')]=function(){return util[_0x3855('0x1f')](_0x3855('0x28'),this[_0x3855('0x5')],this['voiceQueue']['dialCutDigit']>0x0?this[_0x3855('0x9')]['substring'](this['voiceQueue'][_0x3855('0x29')]):this[_0x3855('0x9')]);};Action[_0x3855('0x26')]['getQueue']=function(){return this[_0x3855('0xb')];};module[_0x3855('0x2a')]=Action;
\ No newline at end of file
+var _0x83e6=['callbackat','recallme','originatecalleridnum','prototype','getCaller','format','\x22%s\x22\x20<%s>','voiceQueue','substring','dialCutDigit','getQueue','exports','util','lodash','isNil','string','uniqueid','name','Contact','phone','firstName','number','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callbackuniqueid'];(function(_0x48bb2f,_0x3b943e){var _0x20d29a=function(_0x5bd71c){while(--_0x5bd71c){_0x48bb2f['push'](_0x48bb2f['shift']());}};_0x20d29a(++_0x3b943e);}(_0x83e6,0x87));var _0x683e=function(_0x1fc4b8,_0x56613e){_0x1fc4b8=_0x1fc4b8-0x0;var _0x160ab5=_0x83e6[_0x1fc4b8];return _0x160ab5;};'use strict';var util=require(_0x683e('0x0'));var _=require(_0x683e('0x1'));var moment=require('moment');function checkNameSurname(_0x4f446e,_0x2b8387,_0x417e1a){var _0x28d50d='';if(!_[_0x683e('0x2')](_0x2b8387)&&_0x683e('0x3')===typeof _0x2b8387){_0x28d50d+=_0x2b8387;}if(!_[_0x683e('0x2')](_0x417e1a)&&_0x683e('0x3')===typeof _0x417e1a){_0x28d50d+='\x20'+_0x417e1a;}if(_0x28d50d!==''){return _0x28d50d;}return _0x4f446e;}function Action(_0x32f0f5,_0x230ba9,_0x734fa7){this['voiceQueue']=_0x32f0f5;this[_0x683e('0x4')]=_0x734fa7||undefined;this[_0x683e('0x5')]=checkNameSurname(_0x230ba9[_0x683e('0x6')][_0x683e('0x7')],_0x230ba9[_0x683e('0x6')][_0x683e('0x8')],_0x230ba9[_0x683e('0x6')]['lastName']);this[_0x683e('0x9')]=_0x230ba9[_0x683e('0x6')][_0x683e('0x7')];this['queue']=_0x32f0f5[_0x683e('0x5')];this[_0x683e('0xa')]=_0x230ba9['active']||![];this['type']=_0x32f0f5[_0x683e('0xb')];this[_0x683e('0xc')]=_0x32f0f5[_0x683e('0xc')]||0x3;this[_0x683e('0xd')]=_0x230ba9[_0x683e('0xd')];this[_0x683e('0xe')]=_0x230ba9[_0x683e('0xe')];this[_0x683e('0xf')]=_0x230ba9['countcongestionretry'];this[_0x683e('0x10')]=_0x230ba9['countnoanswerretry'];this['countnosuchnumberretry']=_0x230ba9['countnosuchnumberretry'];this[_0x683e('0x11')]=_0x230ba9[_0x683e('0x11')];this[_0x683e('0x12')]=_0x230ba9[_0x683e('0x12')];this[_0x683e('0x13')]=_0x230ba9['countmachineretry'];this[_0x683e('0x14')]=_0x230ba9['countagentrejectretry'];this['ContactId']=_0x230ba9['ContactId'];this[_0x683e('0x15')]=_0x230ba9[_0x683e('0x15')];this[_0x683e('0x16')]=_0x230ba9['UserId'];this[_0x683e('0x17')]=_0x230ba9['VoiceQueueId'];this[_0x683e('0x18')]=_0x230ba9[_0x683e('0x18')];this['idHopper']=_0x230ba9['id'];this[_0x683e('0x19')]=_0x230ba9[_0x683e('0x6')]['firstName']||'';this[_0x683e('0x1a')]=moment()['format'](_0x683e('0x1b'));this['callback']=_0x230ba9['callback'];this['callbackuniqueid']=_0x230ba9[_0x683e('0x1c')];this[_0x683e('0x1d')]=_0x230ba9[_0x683e('0x1d')];this[_0x683e('0x1e')]=_0x230ba9[_0x683e('0x1e')];this[_0x683e('0x1f')]='';this['originatecalleridname']='';}Action[_0x683e('0x20')][_0x683e('0x21')]=function(){return util[_0x683e('0x22')](_0x683e('0x23'),this[_0x683e('0x5')],this[_0x683e('0x24')]['dialCutDigit']>0x0?this[_0x683e('0x9')][_0x683e('0x25')](this['voiceQueue'][_0x683e('0x26')]):this[_0x683e('0x9')]);};Action['prototype'][_0x683e('0x27')]=function(){return this['queue'];};module[_0x683e('0x28')]=Action;
\ No newline at end of file
index 65c7255..a1e7764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc8b=['callbackuniqueid','callbackat','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','type','campaigntype','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','format','ringtime','holdtime','talktime','membername','reason','callback'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0xdc8b,0xe4));var _0xbdc8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xdc8b[_0x321bb2];return _0x9c12ed;};'use strict';var util=require('util');var _=require(_0xbdc8('0x0'));var moment=require(_0xbdc8('0x1'));function getSeconds(_0x421f3d,_0x5a6909){var _0x52b1f1=moment(_0x421f3d)[_0xbdc8('0x2')](0x0);var _0x19222f=moment(_0x5a6909)[_0xbdc8('0x2')](0x0);return _0x52b1f1[_0xbdc8('0x3')](_0x19222f,_0xbdc8('0x4'));}function AgentComplete(_0x433e89,_0x1452a8){this[_0xbdc8('0x5')]=0x4;this[_0xbdc8('0x6')]=_0xbdc8('0x7');this['scheduledat']=_0x433e89['scheduledat'];this[_0xbdc8('0x8')]=_0x433e89[_0xbdc8('0x8')];this[_0xbdc8('0x9')]=_0x433e89[_0xbdc8('0x8')]==='outbound'?_0xbdc8('0xa'):_0x433e89[_0xbdc8('0x8')];this[_0xbdc8('0xb')]=_0x433e89[_0xbdc8('0xb')];this['countcongestionretry']=_0x433e89['countcongestionretry'];this[_0xbdc8('0xc')]=_0x433e89['countnoanswerretry'];this[_0xbdc8('0xd')]=_0x433e89['countbusyretry']+_0x433e89[_0xbdc8('0xe')]+_0x433e89[_0xbdc8('0xc')]+_0x433e89[_0xbdc8('0xf')]+_0x433e89[_0xbdc8('0x10')]+_0x433e89[_0xbdc8('0x11')]+_0x433e89['countmachineretry']+_0x433e89['countagentrejectretry'];this['countnosuchnumberretry']=_0x433e89['countnosuchnumberretry'];this[_0xbdc8('0x10')]=_0x433e89['countdropretry'];this[_0xbdc8('0x11')]=_0x433e89[_0xbdc8('0x11')];this[_0xbdc8('0x12')]=_0x433e89['countmachineretry'];this['countagentrejectretry']=_0x433e89[_0xbdc8('0x13')];this['uniqueid']=_0x1452a8[_0xbdc8('0x14')];this[_0xbdc8('0x15')]=_0x433e89[_0xbdc8('0x16')];this[_0xbdc8('0x17')]=_0x433e89[_0xbdc8('0x18')];this['starttime']=_0x433e89[_0xbdc8('0x19')];this[_0xbdc8('0x1a')]=_0x433e89[_0xbdc8('0x1a')];this[_0xbdc8('0x1b')]=_0x433e89[_0xbdc8('0x1b')];this[_0xbdc8('0x1c')]=moment()[_0xbdc8('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xbdc8('0x1e')]=getSeconds(_0x433e89[_0xbdc8('0x1a')],_0x433e89['starttime']);this[_0xbdc8('0x1f')]=getSeconds(_0x433e89[_0xbdc8('0x1b')],_0x433e89[_0xbdc8('0x1a')]);this[_0xbdc8('0x20')]=getSeconds(this[_0xbdc8('0x1c')],_0x433e89[_0xbdc8('0x1b')]);this['queue']=_0x1452a8[_0xbdc8('0xa')];this['membername']=_0x1452a8[_0xbdc8('0x21')];this[_0xbdc8('0x22')]=_0x1452a8['reason'];this[_0xbdc8('0x23')]=_0x433e89['callback'];this[_0xbdc8('0x24')]=_0x433e89[_0xbdc8('0x24')];this[_0xbdc8('0x25')]=_0x433e89['callbackat'];this['recallme']=_0x433e89['recallme'];this[_0xbdc8('0x26')]=_0x433e89[_0xbdc8('0x26')];this['ListId']=_0x433e89['ListId'];this[_0xbdc8('0x27')]=_0x433e89[_0xbdc8('0x27')];this['VoiceQueueId']=_0x433e89[_0xbdc8('0x28')];this[_0xbdc8('0x29')]=_0x433e89['CampaignId'];this[_0xbdc8('0x2a')]=_0x433e89[_0xbdc8('0x2a')]||'';this[_0xbdc8('0x2b')]=_0x433e89[_0xbdc8('0x2b')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x16a2=['talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime'];(function(_0x2b0a49,_0x1ca05e){var _0xdd87dc=function(_0x3430eb){while(--_0x3430eb){_0x2b0a49['push'](_0x2b0a49['shift']());}};_0xdd87dc(++_0x1ca05e);}(_0x16a2,0x1d0));var _0x216a=function(_0x3ccdf8,_0x584ceb){_0x3ccdf8=_0x3ccdf8-0x0;var _0x243dab=_0x16a2[_0x3ccdf8];return _0x243dab;};'use strict';var util=require(_0x216a('0x0'));var _=require(_0x216a('0x1'));var moment=require(_0x216a('0x2'));function getSeconds(_0x38dc7a,_0x194a77){var _0x4fb28f=moment(_0x38dc7a)['milliseconds'](0x0);var _0x4522fa=moment(_0x194a77)[_0x216a('0x3')](0x0);return _0x4fb28f[_0x216a('0x4')](_0x4522fa,_0x216a('0x5'));}function AgentComplete(_0x5d5f57,_0x4d97cd){this[_0x216a('0x6')]=0x4;this[_0x216a('0x7')]=_0x216a('0x8');this['scheduledat']=_0x5d5f57[_0x216a('0x9')];this[_0x216a('0xa')]=_0x5d5f57[_0x216a('0xa')];this[_0x216a('0xb')]=_0x5d5f57['type']==='outbound'?_0x216a('0xc'):_0x5d5f57[_0x216a('0xa')];this['countbusyretry']=_0x5d5f57[_0x216a('0xd')];this[_0x216a('0xe')]=_0x5d5f57[_0x216a('0xe')];this[_0x216a('0xf')]=_0x5d5f57[_0x216a('0xf')];this['countglobal']=_0x5d5f57[_0x216a('0xd')]+_0x5d5f57[_0x216a('0xe')]+_0x5d5f57['countnoanswerretry']+_0x5d5f57[_0x216a('0x10')]+_0x5d5f57[_0x216a('0x11')]+_0x5d5f57['countabandonedretry']+_0x5d5f57[_0x216a('0x12')]+_0x5d5f57[_0x216a('0x13')];this['countnosuchnumberretry']=_0x5d5f57[_0x216a('0x10')];this['countdropretry']=_0x5d5f57[_0x216a('0x11')];this[_0x216a('0x14')]=_0x5d5f57[_0x216a('0x14')];this[_0x216a('0x12')]=_0x5d5f57['countmachineretry'];this[_0x216a('0x13')]=_0x5d5f57[_0x216a('0x13')];this['uniqueid']=_0x4d97cd[_0x216a('0x15')];this['calleridname']=_0x5d5f57[_0x216a('0x16')];this['calleridnum']=_0x5d5f57[_0x216a('0x17')];this[_0x216a('0x18')]=_0x5d5f57[_0x216a('0x18')];this[_0x216a('0x19')]=_0x5d5f57[_0x216a('0x19')];this['answertime']=_0x5d5f57[_0x216a('0x1a')];this[_0x216a('0x1b')]=moment()[_0x216a('0x1c')](_0x216a('0x1d'));this['ringtime']=getSeconds(_0x5d5f57[_0x216a('0x19')],_0x5d5f57[_0x216a('0x18')]);this[_0x216a('0x1e')]=getSeconds(_0x5d5f57[_0x216a('0x1a')],_0x5d5f57[_0x216a('0x19')]);this[_0x216a('0x1f')]=getSeconds(this[_0x216a('0x1b')],_0x5d5f57[_0x216a('0x1a')]);this[_0x216a('0xc')]=_0x4d97cd[_0x216a('0xc')];this[_0x216a('0x20')]=_0x4d97cd['membername'];this[_0x216a('0x21')]=_0x4d97cd['reason'];this[_0x216a('0x22')]=_0x5d5f57[_0x216a('0x22')];this[_0x216a('0x23')]=_0x5d5f57['callbackuniqueid'];this[_0x216a('0x24')]=_0x5d5f57['callbackat'];this[_0x216a('0x25')]=_0x5d5f57['recallme'];this[_0x216a('0x26')]=_0x5d5f57['ContactId'];this[_0x216a('0x27')]=_0x5d5f57[_0x216a('0x27')];this['UserId']=_0x5d5f57[_0x216a('0x28')];this[_0x216a('0x29')]=_0x5d5f57[_0x216a('0x29')];this[_0x216a('0x2a')]=_0x5d5f57[_0x216a('0x2a')];this['originatecalleridnum']=_0x5d5f57['originatecalleridnum']||'';this[_0x216a('0x2b')]=_0x5d5f57['originatecalleridname']||'';}module[_0x216a('0x2c')]=AgentComplete;
\ No newline at end of file
index 11fb72f..1224642 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277c=['ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','calleridname','calleridnum','responsetime','endtime'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x277c,0x153));var _0xc277=function(_0x1089fa,_0x4b4609){_0x1089fa=_0x1089fa-0x0;var _0x2004d0=_0x277c[_0x1089fa];return _0x2004d0;};'use strict';var util=require(_0xc277('0x0'));var _=require('lodash');var moment=require(_0xc277('0x1'));function getSeconds(_0x3420cf,_0x3cd265){var _0x21d6f2=moment(_0x3420cf)[_0xc277('0x2')](0x0);var _0x1fcae3=moment(_0x3cd265)[_0xc277('0x2')](0x0);return _0x21d6f2[_0xc277('0x3')](_0x1fcae3,'seconds');}function Final(_0x4bfaeb){this[_0xc277('0x4')]=_0x4bfaeb['uniqueid'];this[_0xc277('0x5')]=_0x4bfaeb['scheduledat'];this[_0xc277('0x6')]=_0x4bfaeb[_0xc277('0x6')];this['campaigntype']=_0x4bfaeb[_0xc277('0x6')]===_0xc277('0x7')?_0xc277('0x8'):_0x4bfaeb[_0xc277('0x6')];this[_0xc277('0x9')]=_0x4bfaeb[_0xc277('0x9')];this['countcongestionretry']=_0x4bfaeb['countcongestionretry'];this[_0xc277('0xa')]=_0x4bfaeb[_0xc277('0xa')];this[_0xc277('0xb')]=_0x4bfaeb[_0xc277('0x9')]+_0x4bfaeb['countcongestionretry']+_0x4bfaeb[_0xc277('0xa')]+_0x4bfaeb['countnosuchnumberretry']+_0x4bfaeb[_0xc277('0xc')]+_0x4bfaeb[_0xc277('0xd')]+_0x4bfaeb[_0xc277('0xe')]+_0x4bfaeb[_0xc277('0xf')];this['countnosuchnumberretry']=_0x4bfaeb[_0xc277('0x10')];this[_0xc277('0xc')]=_0x4bfaeb[_0xc277('0xc')];this['countabandonedretry']=_0x4bfaeb['countabandonedretry'];this[_0xc277('0xe')]=_0x4bfaeb['countmachineretry'];this[_0xc277('0xf')]=_0x4bfaeb['countagentrejectretry'];this[_0xc277('0x8')]=_0x4bfaeb[_0xc277('0x8')];this[_0xc277('0x11')]=_0x4bfaeb['calleridname'];this['calleridnum']=_0x4bfaeb[_0xc277('0x12')];this['starttime']=_0x4bfaeb['starttime'];this[_0xc277('0x13')]=_0x4bfaeb[_0xc277('0x13')];this[_0xc277('0x14')]=_0x4bfaeb[_0xc277('0x13')];this[_0xc277('0x15')]=_0x4bfaeb[_0xc277('0x15')]||0x0;this[_0xc277('0x16')]=_0x4bfaeb['holdtime']||0x0;this['talktime']=_0x4bfaeb[_0xc277('0x17')]||0x0;this[_0xc277('0x18')]=_0x4bfaeb[_0xc277('0x18')];this[_0xc277('0x19')]=_0x4bfaeb[_0xc277('0x19')];this[_0xc277('0x1a')]=_0x4bfaeb[_0xc277('0x1a')];this[_0xc277('0x1b')]=_0x4bfaeb[_0xc277('0x1b')];this[_0xc277('0x1c')]=_0x4bfaeb[_0xc277('0x1c')];this['ListId']=_0x4bfaeb[_0xc277('0x1d')];this[_0xc277('0x1e')]=_0x4bfaeb['UserId'];this[_0xc277('0x1f')]=_0x4bfaeb['VoiceQueueId'];this['CampaignId']=_0x4bfaeb[_0xc277('0x20')];this[_0xc277('0x21')]=_0x4bfaeb[_0xc277('0x21')]||'';this[_0xc277('0x22')]=_0x4bfaeb[_0xc277('0x22')]||'';}module[_0xc277('0x23')]=Final;
\ No newline at end of file
+var _0x98a8=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x4a220d,_0x3e01cb){var _0x37ba30=function(_0x2ce397){while(--_0x2ce397){_0x4a220d['push'](_0x4a220d['shift']());}};_0x37ba30(++_0x3e01cb);}(_0x98a8,0x12c));var _0x898a=function(_0x14a25d,_0x323a99){_0x14a25d=_0x14a25d-0x0;var _0x21fdcb=_0x98a8[_0x14a25d];return _0x21fdcb;};'use strict';var util=require(_0x898a('0x0'));var _=require(_0x898a('0x1'));var moment=require(_0x898a('0x2'));function getSeconds(_0x4583d9,_0x213c5d){var _0x226db7=moment(_0x4583d9)[_0x898a('0x3')](0x0);var _0x4a0836=moment(_0x213c5d)[_0x898a('0x3')](0x0);return _0x226db7[_0x898a('0x4')](_0x4a0836,_0x898a('0x5'));}function Final(_0x101b7b){this[_0x898a('0x6')]=_0x101b7b['uniqueid'];this[_0x898a('0x7')]=_0x101b7b['scheduledat'];this[_0x898a('0x8')]=_0x101b7b['type'];this[_0x898a('0x9')]=_0x101b7b[_0x898a('0x8')]===_0x898a('0xa')?_0x898a('0xb'):_0x101b7b[_0x898a('0x8')];this[_0x898a('0xc')]=_0x101b7b[_0x898a('0xc')];this[_0x898a('0xd')]=_0x101b7b[_0x898a('0xd')];this['countnoanswerretry']=_0x101b7b[_0x898a('0xe')];this['countglobal']=_0x101b7b[_0x898a('0xc')]+_0x101b7b['countcongestionretry']+_0x101b7b[_0x898a('0xe')]+_0x101b7b[_0x898a('0xf')]+_0x101b7b[_0x898a('0x10')]+_0x101b7b['countabandonedretry']+_0x101b7b['countmachineretry']+_0x101b7b['countagentrejectretry'];this[_0x898a('0xf')]=_0x101b7b[_0x898a('0xf')];this[_0x898a('0x10')]=_0x101b7b[_0x898a('0x10')];this[_0x898a('0x11')]=_0x101b7b[_0x898a('0x11')];this['countmachineretry']=_0x101b7b[_0x898a('0x12')];this['countagentrejectretry']=_0x101b7b[_0x898a('0x13')];this['queue']=_0x101b7b[_0x898a('0xb')];this['calleridname']=_0x101b7b[_0x898a('0x14')];this['calleridnum']=_0x101b7b[_0x898a('0x15')];this[_0x898a('0x16')]=_0x101b7b[_0x898a('0x16')];this['responsetime']=_0x101b7b[_0x898a('0x17')];this['endtime']=_0x101b7b['responsetime'];this[_0x898a('0x18')]=_0x101b7b[_0x898a('0x18')]||0x0;this['holdtime']=_0x101b7b['holdtime']||0x0;this[_0x898a('0x19')]=_0x101b7b[_0x898a('0x19')]||0x0;this[_0x898a('0x1a')]=_0x101b7b[_0x898a('0x1a')];this[_0x898a('0x1b')]=_0x101b7b[_0x898a('0x1b')];this[_0x898a('0x1c')]=_0x101b7b['callbackat'];this[_0x898a('0x1d')]=_0x101b7b[_0x898a('0x1d')];this[_0x898a('0x1e')]=_0x101b7b[_0x898a('0x1e')];this[_0x898a('0x1f')]=_0x101b7b[_0x898a('0x1f')];this['UserId']=_0x101b7b[_0x898a('0x20')];this[_0x898a('0x21')]=_0x101b7b[_0x898a('0x21')];this[_0x898a('0x22')]=_0x101b7b[_0x898a('0x22')];this[_0x898a('0x23')]=_0x101b7b['originatecalleridnum']||'';this[_0x898a('0x24')]=_0x101b7b['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
index 790a8c6..b9843d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f29=['endtime','ringtime','holdtime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','milliseconds','diff','seconds','Answer','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x8f29,0x1a1));var _0x98f2=function(_0xd2e3d1,_0x52240b){_0xd2e3d1=_0xd2e3d1-0x0;var _0x59c306=_0x8f29[_0xd2e3d1];return _0x59c306;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x98f2('0x0'));function getSeconds(_0x40e92d,_0x5aaa41){var _0x546926=moment(_0x40e92d)[_0x98f2('0x1')](0x0);var _0x153940=moment(_0x5aaa41)[_0x98f2('0x1')](0x0);return _0x546926[_0x98f2('0x2')](_0x153940,_0x98f2('0x3'));}function Hangup(_0x3e4e84,_0x6f495b){this['state']=0x4;this['statedesc']=_0x98f2('0x4');this[_0x98f2('0x5')]=_0x3e4e84[_0x98f2('0x5')];this[_0x98f2('0x6')]=_0x3e4e84[_0x98f2('0x6')];this['campaigntype']=_0x3e4e84[_0x98f2('0x6')]==='outbound'?_0x98f2('0x7'):_0x3e4e84[_0x98f2('0x6')];this[_0x98f2('0x8')]=_0x3e4e84[_0x98f2('0x8')];this[_0x98f2('0x9')]=_0x3e4e84[_0x98f2('0x9')];this[_0x98f2('0xa')]=_0x3e4e84['countnoanswerretry'];this[_0x98f2('0xb')]=_0x3e4e84[_0x98f2('0x8')]+_0x3e4e84[_0x98f2('0x9')]+_0x3e4e84[_0x98f2('0xa')]+_0x3e4e84[_0x98f2('0xc')]+_0x3e4e84[_0x98f2('0xd')]+_0x3e4e84['countabandonedretry']+_0x3e4e84[_0x98f2('0xe')]+_0x3e4e84[_0x98f2('0xf')];this[_0x98f2('0xc')]=_0x3e4e84[_0x98f2('0xc')];this[_0x98f2('0xd')]=_0x3e4e84[_0x98f2('0xd')];this[_0x98f2('0x10')]=_0x3e4e84[_0x98f2('0x10')];this[_0x98f2('0xe')]=_0x3e4e84[_0x98f2('0xe')];this[_0x98f2('0xf')]=_0x3e4e84[_0x98f2('0xf')];this['uniqueid']=_0x6f495b[_0x98f2('0x11')];this[_0x98f2('0x12')]=_0x3e4e84['name'];this[_0x98f2('0x13')]=_0x3e4e84[_0x98f2('0x14')];this[_0x98f2('0x15')]=_0x3e4e84[_0x98f2('0x15')];this[_0x98f2('0x16')]=_0x3e4e84[_0x98f2('0x16')];this[_0x98f2('0x17')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x98f2('0x18')]=getSeconds(_0x3e4e84['responsetime'],_0x3e4e84['starttime']);this[_0x98f2('0x19')]=0x0;this['talktime']=getSeconds(this[_0x98f2('0x17')],_0x3e4e84['responsetime']);this['queue']=_0x3e4e84[_0x98f2('0x7')];this[_0x98f2('0x1a')]=_0x98f2('0x1b');this[_0x98f2('0x1c')]=_0x6f495b[_0x98f2('0x1d')];this[_0x98f2('0x1e')]=_0x3e4e84[_0x98f2('0x1e')];this[_0x98f2('0x1f')]=_0x3e4e84[_0x98f2('0x1f')];this[_0x98f2('0x20')]=_0x3e4e84[_0x98f2('0x20')];this[_0x98f2('0x21')]=_0x3e4e84[_0x98f2('0x21')];this[_0x98f2('0x22')]=_0x3e4e84[_0x98f2('0x22')];this['ListId']=_0x3e4e84[_0x98f2('0x23')];this[_0x98f2('0x24')]=_0x3e4e84['UserId'];this[_0x98f2('0x25')]=_0x3e4e84[_0x98f2('0x25')];this[_0x98f2('0x26')]=_0x3e4e84[_0x98f2('0x26')];}module[_0x98f2('0x27')]=Hangup;
\ No newline at end of file
+var _0x9a97=['holdtime','talktime','endtime','queue','membername','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','seconds','Answer','scheduledat','campaigntype','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9a97,0x13c));var _0x79a9=function(_0x3ba764,_0x31d86d){_0x3ba764=_0x3ba764-0x0;var _0x3308df=_0x9a97[_0x3ba764];return _0x3308df;};'use strict';var util=require(_0x79a9('0x0'));var _=require(_0x79a9('0x1'));var moment=require(_0x79a9('0x2'));function getSeconds(_0x40e49a,_0x361ab9){var _0x1846b5=moment(_0x40e49a)[_0x79a9('0x3')](0x0);var _0x47414b=moment(_0x361ab9)[_0x79a9('0x3')](0x0);return _0x1846b5['diff'](_0x47414b,_0x79a9('0x4'));}function Hangup(_0x4d9051,_0x3ead5a){this['state']=0x4;this['statedesc']=_0x79a9('0x5');this['scheduledat']=_0x4d9051[_0x79a9('0x6')];this['type']=_0x4d9051['type'];this[_0x79a9('0x7')]=_0x4d9051[_0x79a9('0x8')]===_0x79a9('0x9')?'queue':_0x4d9051[_0x79a9('0x8')];this[_0x79a9('0xa')]=_0x4d9051[_0x79a9('0xa')];this[_0x79a9('0xb')]=_0x4d9051[_0x79a9('0xb')];this[_0x79a9('0xc')]=_0x4d9051[_0x79a9('0xc')];this['countglobal']=_0x4d9051[_0x79a9('0xa')]+_0x4d9051[_0x79a9('0xb')]+_0x4d9051[_0x79a9('0xc')]+_0x4d9051['countnosuchnumberretry']+_0x4d9051[_0x79a9('0xd')]+_0x4d9051[_0x79a9('0xe')]+_0x4d9051[_0x79a9('0xf')]+_0x4d9051[_0x79a9('0x10')];this['countnosuchnumberretry']=_0x4d9051[_0x79a9('0x11')];this[_0x79a9('0xd')]=_0x4d9051[_0x79a9('0xd')];this[_0x79a9('0xe')]=_0x4d9051[_0x79a9('0xe')];this[_0x79a9('0xf')]=_0x4d9051[_0x79a9('0xf')];this[_0x79a9('0x10')]=_0x4d9051[_0x79a9('0x10')];this[_0x79a9('0x12')]=_0x3ead5a['uniqueid'];this[_0x79a9('0x13')]=_0x4d9051[_0x79a9('0x14')];this[_0x79a9('0x15')]=_0x4d9051[_0x79a9('0x16')];this['starttime']=_0x4d9051[_0x79a9('0x17')];this[_0x79a9('0x18')]=_0x4d9051[_0x79a9('0x18')];this['endtime']=moment()[_0x79a9('0x19')](_0x79a9('0x1a'));this[_0x79a9('0x1b')]=getSeconds(_0x4d9051['responsetime'],_0x4d9051[_0x79a9('0x17')]);this[_0x79a9('0x1c')]=0x0;this[_0x79a9('0x1d')]=getSeconds(this[_0x79a9('0x1e')],_0x4d9051[_0x79a9('0x18')]);this[_0x79a9('0x1f')]=_0x4d9051[_0x79a9('0x1f')];this[_0x79a9('0x20')]='IVR';this['reason']=_0x3ead5a['cause-txt'];this[_0x79a9('0x21')]=_0x4d9051[_0x79a9('0x21')];this[_0x79a9('0x22')]=_0x4d9051[_0x79a9('0x22')];this['callbackat']=_0x4d9051[_0x79a9('0x23')];this['recallme']=_0x4d9051[_0x79a9('0x24')];this['ContactId']=_0x4d9051[_0x79a9('0x25')];this['ListId']=_0x4d9051[_0x79a9('0x26')];this[_0x79a9('0x27')]=_0x4d9051[_0x79a9('0x27')];this[_0x79a9('0x28')]=_0x4d9051[_0x79a9('0x28')];this[_0x79a9('0x29')]=_0x4d9051['CampaignId'];}module[_0x79a9('0x2a')]=Hangup;
\ No newline at end of file
index e12198c..0d859c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b67=['endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','number','starttime','responsetime'];(function(_0x174c90,_0x3b36c8){var _0x25a658=function(_0x47d6a9){while(--_0x47d6a9){_0x174c90['push'](_0x174c90['shift']());}};_0x25a658(++_0x3b36c8);}(_0x3b67,0xcc));var _0x73b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3b67[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x73b6('0x0'));var _=require(_0x73b6('0x1'));var moment=require('moment');function getSeconds(_0x12850e,_0x485599){var _0x6008be=moment(_0x12850e)[_0x73b6('0x2')](0x0);var _0x2c0eba=moment(_0x485599)[_0x73b6('0x2')](0x0);return _0x6008be[_0x73b6('0x3')](_0x2c0eba,_0x73b6('0x4'));}function History(_0x29e2df){this['uniqueid']=_0x29e2df[_0x73b6('0x5')];this[_0x73b6('0x6')]=_0x29e2df['scheduledat']||undefined;this[_0x73b6('0x7')]=_0x29e2df['type'];this[_0x73b6('0x8')]=_0x29e2df[_0x73b6('0x7')]===_0x73b6('0x9')?'queue':_0x29e2df['type'];this[_0x73b6('0xa')]=_0x29e2df['countbusyretry'];this[_0x73b6('0xb')]=_0x29e2df[_0x73b6('0xb')];this['countnoanswerretry']=_0x29e2df[_0x73b6('0xc')];this[_0x73b6('0xd')]=_0x29e2df[_0x73b6('0xa')]+_0x29e2df[_0x73b6('0xb')]+_0x29e2df['countnoanswerretry']+_0x29e2df[_0x73b6('0xe')]+_0x29e2df[_0x73b6('0xf')]+_0x29e2df[_0x73b6('0x10')]+_0x29e2df[_0x73b6('0x11')]+_0x29e2df['countagentrejectretry'];this[_0x73b6('0xe')]=_0x29e2df[_0x73b6('0xe')];this['countdropretry']=_0x29e2df[_0x73b6('0xf')];this[_0x73b6('0x10')]=_0x29e2df['countabandonedretry'];this[_0x73b6('0x11')]=_0x29e2df[_0x73b6('0x11')];this[_0x73b6('0x12')]=_0x29e2df[_0x73b6('0x12')];this[_0x73b6('0x13')]=_0x29e2df[_0x73b6('0x13')];this[_0x73b6('0x14')]=_0x29e2df['name'];this['calleridnum']=_0x29e2df[_0x73b6('0x15')];this[_0x73b6('0x16')]=_0x29e2df[_0x73b6('0x16')];this[_0x73b6('0x17')]=_0x29e2df['responsetime'];this[_0x73b6('0x18')]=_0x29e2df[_0x73b6('0x17')];this[_0x73b6('0x19')]=getSeconds(_0x29e2df[_0x73b6('0x17')],_0x29e2df[_0x73b6('0x16')]);this['holdtime']=0x0;this[_0x73b6('0x1a')]=0x0;this['callback']=_0x29e2df[_0x73b6('0x1b')];this[_0x73b6('0x1c')]=_0x29e2df['callbackuniqueid'];this[_0x73b6('0x1d')]=_0x29e2df[_0x73b6('0x1d')];this[_0x73b6('0x1e')]=_0x29e2df[_0x73b6('0x1e')];this[_0x73b6('0x1f')]=_0x29e2df[_0x73b6('0x1f')];this[_0x73b6('0x20')]=_0x29e2df['ListId'];this['UserId']=_0x29e2df['UserId'];this[_0x73b6('0x21')]=_0x29e2df[_0x73b6('0x21')];this[_0x73b6('0x22')]=_0x29e2df[_0x73b6('0x22')];this[_0x73b6('0x23')]=_0x29e2df[_0x73b6('0x23')]||'';this[_0x73b6('0x24')]=_0x29e2df[_0x73b6('0x24')]||'';}module[_0x73b6('0x25')]=History;
\ No newline at end of file
+var _0xf42d=['countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','calleridnum','starttime','responsetime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','countbusyretry','countcongestionretry'];(function(_0x5b7820,_0x36ab53){var _0x17db47=function(_0x4805d3){while(--_0x4805d3){_0x5b7820['push'](_0x5b7820['shift']());}};_0x17db47(++_0x36ab53);}(_0xf42d,0xec));var _0xdf42=function(_0x5370ad,_0x3bc8a2){_0x5370ad=_0x5370ad-0x0;var _0x38c59f=_0xf42d[_0x5370ad];return _0x38c59f;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x3052bf,_0x4a198b){var _0x3a9b4e=moment(_0x3052bf)[_0xdf42('0x0')](0x0);var _0x10695f=moment(_0x4a198b)[_0xdf42('0x0')](0x0);return _0x3a9b4e[_0xdf42('0x1')](_0x10695f,_0xdf42('0x2'));}function History(_0x346018){this[_0xdf42('0x3')]=_0x346018[_0xdf42('0x3')];this[_0xdf42('0x4')]=_0x346018[_0xdf42('0x4')]||undefined;this[_0xdf42('0x5')]=_0x346018['type'];this[_0xdf42('0x6')]=_0x346018[_0xdf42('0x5')]==='outbound'?'queue':_0x346018[_0xdf42('0x5')];this[_0xdf42('0x7')]=_0x346018[_0xdf42('0x7')];this[_0xdf42('0x8')]=_0x346018[_0xdf42('0x8')];this[_0xdf42('0x9')]=_0x346018[_0xdf42('0x9')];this[_0xdf42('0xa')]=_0x346018[_0xdf42('0x7')]+_0x346018[_0xdf42('0x8')]+_0x346018[_0xdf42('0x9')]+_0x346018[_0xdf42('0xb')]+_0x346018[_0xdf42('0xc')]+_0x346018[_0xdf42('0xd')]+_0x346018[_0xdf42('0xe')]+_0x346018['countagentrejectretry'];this[_0xdf42('0xb')]=_0x346018[_0xdf42('0xb')];this[_0xdf42('0xc')]=_0x346018[_0xdf42('0xc')];this['countabandonedretry']=_0x346018[_0xdf42('0xd')];this[_0xdf42('0xe')]=_0x346018[_0xdf42('0xe')];this['countagentrejectretry']=_0x346018[_0xdf42('0xf')];this[_0xdf42('0x10')]=_0x346018[_0xdf42('0x10')];this[_0xdf42('0x11')]=_0x346018['name'];this[_0xdf42('0x12')]=_0x346018['number'];this['starttime']=_0x346018[_0xdf42('0x13')];this[_0xdf42('0x14')]=_0x346018['responsetime'];this['endtime']=_0x346018[_0xdf42('0x14')];this['ringtime']=getSeconds(_0x346018[_0xdf42('0x14')],_0x346018[_0xdf42('0x13')]);this[_0xdf42('0x15')]=0x0;this[_0xdf42('0x16')]=0x0;this[_0xdf42('0x17')]=_0x346018[_0xdf42('0x17')];this['callbackuniqueid']=_0x346018[_0xdf42('0x18')];this[_0xdf42('0x19')]=_0x346018[_0xdf42('0x19')];this['recallme']=_0x346018[_0xdf42('0x1a')];this[_0xdf42('0x1b')]=_0x346018[_0xdf42('0x1b')];this['ListId']=_0x346018[_0xdf42('0x1c')];this[_0xdf42('0x1d')]=_0x346018['UserId'];this[_0xdf42('0x1e')]=_0x346018[_0xdf42('0x1e')];this[_0xdf42('0x1f')]=_0x346018[_0xdf42('0x1f')];this[_0xdf42('0x20')]=_0x346018[_0xdf42('0x20')]||'';this['originatecalleridname']=_0x346018[_0xdf42('0x21')]||'';}module[_0xdf42('0x22')]=History;
\ No newline at end of file
index 46bf0c1..3d1ae02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3a8=['value','HANGUP','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','membername','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','[rescheduleContact][Machine]','HangupInAMD','[syncHangupInAMDIvr][createHistory]','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','outboundUnknownCallsDay','cause-txt','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','YYYY-MM-DD\x20HH:mm:ss','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dropreason','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','roundrobin','paused','stateinterface','locked','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','[Catch][Preview][syncQueueStatusComplete]','finally','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','timezones','indexOf','true','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','handleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','match','object','voiceQueue\x20is\x20undefine','Contact','phone','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','\x22%s,%s%s,,,%s\x22','dialer','ACTIVE','NONE','XMD-AMDINITIALSILENCE','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialCutDigit','trim','substring','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countcongestionretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','reason','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','Global','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','abandonmentRate','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','outboundQueuePauses','[CatchErlangB]','agentBusyFactor','busyFactor','[handlePredictive]','fail\x20to\x20scheduled\x20calls','UserId','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','actionOriginate','dialRecallMeTimeout','Agent','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','checkContactBlack','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','countReScheduled','[getContactDialer2]','tryOriginatePredictive','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','[busyFactor]','interval\x20=\x20','Umin\x20=\x20','exports','util','bluebird','uuid','moment','md5','../preview/util/util','../../../config/environment/','booked','../../../config/logger','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','127.0.0.1','rrmemory','enqueue','tail','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','message','name','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','Intervals','\x20INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','answered','available','loggedIn','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','voice:queue:%s','ivr','format','campaign:ivr:%s','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','endtime','starttime','prototype','clearZombieChannels','[actions]','isNil','Action','channel','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','resolve','then','catch','[countReScheduled]\x20','checkIsBlackList','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','merge','pick','ContactId','ListId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isSuccess','isTrunkReachable','SIP/%s','status','reachable','saveInDb','syncVarSet','uniqueid','exten','xcally-motion-dialer','dialAMDActive'];(function(_0x335a85,_0x1c17d6){var _0x1c33c3=function(_0x3ca712){while(--_0x3ca712){_0x335a85['push'](_0x335a85['shift']());}};_0x1c33c3(++_0x1c17d6);}(_0xd3a8,0x135));var _0x8d3a=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xd3a8[_0x4b055c];return _0x4b62bb;};'use strict';var util=require(_0x8d3a('0x0'));var _=require('lodash');var BPromise=require(_0x8d3a('0x1'));var uuid=require(_0x8d3a('0x2'));var moment=require(_0x8d3a('0x3'));var rr=require('rr');var md5=require(_0x8d3a('0x4'));var Redis=require('ioredis');var ut=require(_0x8d3a('0x5'));var config=require(_0x8d3a('0x6'));var logger=require('../../../config/logger')('dialer');var loggerBooked=require('../../../config/logger')(_0x8d3a('0x7'));var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require(_0x8d3a('0x8'))(_0x8d3a('0x9'));var loggerSyncQueueSummary=require(_0x8d3a('0x8'))(_0x8d3a('0xa'));var ami=require(_0x8d3a('0xb'));config[_0x8d3a('0xc')]=_[_0x8d3a('0xd')](config[_0x8d3a('0xc')],{'host':_0x8d3a('0xe'),'port':0x18eb});var io=require(_0x8d3a('0xf'))(new Redis(config[_0x8d3a('0xc')]));var cmHopper=require(_0x8d3a('0x10'));var cmHopperHistory=require(_0x8d3a('0x11'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require('./action');var History=require(_0x8d3a('0x12'));var Final=require(_0x8d3a('0x13'));var AgentComplete=require(_0x8d3a('0x14'));var QueueCallerAbandon=require(_0x8d3a('0x15'));var Hangup=require(_0x8d3a('0x16'));var ipAgi=process[_0x8d3a('0x17')]['XCALLY_IP_AGI']||_0x8d3a('0x18');var strategy={'rrmemory':_0x8d3a('0x19'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence['prototype'][_0x8d3a('0x1a')]=function(_0x560396){this[_0x8d3a('0x1b')]=this[_0x8d3a('0x1b')]?this[_0x8d3a('0x1b')]['finally'](_0x560396):_0x560396();};function Dialer(_0x33eefb,_0x483fea){this[_0x8d3a('0x1c')]=new Sequence();this['preview']=_0x483fea;this[_0x8d3a('0x1d')]=_0x33eefb[_0x8d3a('0x1d')];this[_0x8d3a('0x1e')]=_0x33eefb['campaigns'];this['agents']=_0x33eefb[_0x8d3a('0x1f')];this[_0x8d3a('0x20')]=_0x33eefb[_0x8d3a('0x20')];this[_0x8d3a('0x21')]=config[_0x8d3a('0x21')]||0x2;this['channels']={};this[_0x8d3a('0x22')]={};this[_0x8d3a('0x23')]={};this[_0x8d3a('0x24')]={};this[_0x8d3a('0x25')]={};this[_0x8d3a('0x26')]={};this[_0x8d3a('0x27')]={};this['ivrOriginated']={};this[_0x8d3a('0x28')]={};this[_0x8d3a('0x29')]={};ami['on'](_0x8d3a('0x2a'),this[_0x8d3a('0x2b')]['bind'](this));ami['on'](_0x8d3a('0x2c'),this[_0x8d3a('0x2d')][_0x8d3a('0x2e')](this));ami['on']('originateresponse',this[_0x8d3a('0x2f')][_0x8d3a('0x2e')](this));ami['on'](_0x8d3a('0x30'),this[_0x8d3a('0x31')][_0x8d3a('0x2e')](this));ami['on'](_0x8d3a('0x32'),this[_0x8d3a('0xa')]['bind'](this));ami['on'](_0x8d3a('0x33'),this[_0x8d3a('0x34')][_0x8d3a('0x2e')](this));ami['on'](_0x8d3a('0x35'),this[_0x8d3a('0x36')][_0x8d3a('0x2e')](this));ami['on']('varset',this['syncVarSet'][_0x8d3a('0x2e')](this));ami['on'](_0x8d3a('0x37'),this[_0x8d3a('0x38')][_0x8d3a('0x2e')](this));ami['on'](_0x8d3a('0x39'),this[_0x8d3a('0x3a')]['bind'](this));this[_0x8d3a('0x3b')]();this[_0x8d3a('0x3c')]();}function isNotNull(_0x18f710){return _0x18f710!==null&&!_['isUndefined'](_0x18f710);}function checkIsLoggedIn(_0x4349ad,_0x1b4530){return function(){if(_0x1b4530<=0x0){_0x4349ad[_0x8d3a('0x3d')]='AGENTS_NOT_LOGGED';throw _0x4349ad[_0x8d3a('0x3e')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x1b62e5){return _0x1b62e5;}function checkIsActive(_0x2a3aa8,_0x44dda3){return function(){if(!isActive(_0x44dda3)){_0x2a3aa8['message']=_0x8d3a('0x3f');throw _0x2a3aa8['name']+'\x20NOT\x20Active';}};}function checkInterval(_0x2367b7){return function(){if(!isNotNull(_0x2367b7[_0x8d3a('0x40')])){_0x2367b7['message']=_0x8d3a('0x41');throw _0x2367b7['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x2367b7[_0x8d3a('0x40')][_0x8d3a('0x42')])){_0x2367b7['message']=_0x8d3a('0x41');throw _0x2367b7[_0x8d3a('0x3e')]+_0x8d3a('0x43');}if(!isNotNull(_[_0x8d3a('0x44')](_0x2367b7[_0x8d3a('0x40')][_0x8d3a('0x42')]))){_0x2367b7[_0x8d3a('0x3d')]=_0x8d3a('0x41');throw _0x2367b7[_0x8d3a('0x3e')]+_0x8d3a('0x43');}};}function msgResponse(_0x5933de,_0x214ced,_0x2df8e1){return{'action':_0x5933de,'response':_0x214ced,'message':_0x2df8e1,'stack':_0x2df8e1};}function myreject(_0x4d136f){return function(_0x56383e){return _0x4d136f(msgResponse(_0x8d3a('0x45'),_0x8d3a('0x46'),JSON[_0x8d3a('0x47')](_0x56383e)));};}function getSeconds(_0x5730ee,_0x7253af){var _0x6efa53=moment(_0x5730ee)['milliseconds'](0x0);var _0x3d3250=moment(_0x7253af)[_0x8d3a('0x48')](0x0);return _0x6efa53[_0x8d3a('0x49')](_0x3d3250,_0x8d3a('0x4a'));}function emit(_0x2fd933,_0x43e0aa,_0x562cde){io['to'](_0x2fd933)[_0x8d3a('0x4b')](_0x43e0aa,_0x562cde);}function emitVoiceQueueSummary(_0x1ff0fa){if(_0x1ff0fa[_0x8d3a('0x4c')]===_0x8d3a('0x4d')){var _0x34c34b={'id':_0x1ff0fa['id'],'name':_0x1ff0fa[_0x8d3a('0x3e')],'strategy':_0x1ff0fa[_0x8d3a('0x4e')],'answered':_0x1ff0fa[_0x8d3a('0x4f')],'available':_0x1ff0fa[_0x8d3a('0x50')],'loggedIn':_0x1ff0fa[_0x8d3a('0x51')],'pTalking':_0x1ff0fa['pTalking'],'sumBillable':_0x1ff0fa['sumBillable'],'sumDuration':_0x1ff0fa[_0x8d3a('0x52')],'sumHoldTime':_0x1ff0fa[_0x8d3a('0x53')]||0x0,'talking':_0x1ff0fa[_0x8d3a('0x54')],'total':_0x1ff0fa[_0x8d3a('0x55')],'type':_0x1ff0fa[_0x8d3a('0x4c')],'unmanaged':_0x1ff0fa[_0x8d3a('0x56')],'abandoned':_0x1ff0fa['abandoned'],'waiting':_0x1ff0fa[_0x8d3a('0x57')],'loggedInDb':_0x1ff0fa[_0x8d3a('0x58')],'dialActive':_0x1ff0fa[_0x8d3a('0x59')],'dialMethod':_0x1ff0fa[_0x8d3a('0x5a')],'dialOriginateCallerIdName':_0x1ff0fa[_0x8d3a('0x5b')],'dialOriginateCallerIdNumber':_0x1ff0fa[_0x8d3a('0x5c')],'dialOriginateTimeout':_0x1ff0fa[_0x8d3a('0x5d')],'dialPrefix':_0x1ff0fa[_0x8d3a('0x5e')],'outboundAnswerAgiCallsDay':_0x1ff0fa[_0x8d3a('0x5f')],'outboundAnswerCallsDay':_0x1ff0fa[_0x8d3a('0x60')],'outboundBlacklistCallsDay':_0x1ff0fa[_0x8d3a('0x61')],'outboundBusyCallsDay':_0x1ff0fa[_0x8d3a('0x62')],'outboundCongestionCallsDay':_0x1ff0fa['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x1ff0fa[_0x8d3a('0x63')],'outboundDropCallsDayCallersExit':_0x1ff0fa[_0x8d3a('0x64')],'outboundDropCallsDayTimeout':_0x1ff0fa[_0x8d3a('0x65')],'outboundNoAnswerCallsDay':_0x1ff0fa['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1ff0fa[_0x8d3a('0x66')],'outboundOriginateFailureCallsDay':_0x1ff0fa[_0x8d3a('0x67')],'outboundReCallsDay':_0x1ff0fa[_0x8d3a('0x68')],'outboundRejectCallsDay':_0x1ff0fa['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x1ff0fa['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x1ff0fa[_0x8d3a('0x69')],'predictiveIntervalAvgHoldtime':_0x1ff0fa[_0x8d3a('0x6a')],'predictiveIntervalAvgTalktime':_0x1ff0fa[_0x8d3a('0x6b')],'predictiveIntervalDroppedCallsCallersExit':_0x1ff0fa[_0x8d3a('0x6c')],'predictiveIntervalDroppedCallsTimeout':_0x1ff0fa[_0x8d3a('0x6d')],'predictiveIntervalErlangCalls':_0x1ff0fa['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x1ff0fa[_0x8d3a('0x6e')],'predictiveIntervalHitRate':_0x1ff0fa[_0x8d3a('0x6f')],'predictiveIntervalMultiplicativeFactor':_0x1ff0fa[_0x8d3a('0x70')],'predictiveIntervalPauses':_0x1ff0fa[_0x8d3a('0x71')],'predictiveIntervalAvailable':_0x1ff0fa['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x1ff0fa['predictiveIntervalTotalCalls'],'message':_0x1ff0fa['message'],'originated':_0x1ff0fa[_0x8d3a('0x72')],'erlangCalls':_0x1ff0fa[_0x8d3a('0x73')],'erlangCallToSecond':_0x1ff0fa[_0x8d3a('0x74')],'erlangAbandonmentRate':_0x1ff0fa[_0x8d3a('0x75')],'erlangBusyFactor':_0x1ff0fa[_0x8d3a('0x76')],'startPredictive':_0x1ff0fa[_0x8d3a('0x26')],'startProgressive':_0x1ff0fa['startProgressive']};if(_0x1ff0fa[_0x8d3a('0x77')]){_0x34c34b[_0x8d3a('0x77')]={'id':_0x1ff0fa['Trunk']['id'],'name':_0x1ff0fa[_0x8d3a('0x77')][_0x8d3a('0x3e')],'active':_0x1ff0fa[_0x8d3a('0x77')][_0x8d3a('0x78')],'callerid':_0x1ff0fa['Trunk'][_0x8d3a('0x79')]};}if(_0x1ff0fa[_0x8d3a('0x40')]){_0x34c34b[_0x8d3a('0x40')]={'id':_0x1ff0fa[_0x8d3a('0x40')]['id'],'name':_0x1ff0fa[_0x8d3a('0x40')][_0x8d3a('0x3e')]};}var _0x1ffb91=md5(JSON[_0x8d3a('0x47')](_0x34c34b));if(_0x1ff0fa[_0x8d3a('0x4')]!==_0x1ffb91){_0x1ff0fa[_0x8d3a('0x4')]=_0x1ffb91;emit(util['format'](_0x8d3a('0x7a'),_0x34c34b[_0x8d3a('0x3e')]),'voice_queue:save',_0x34c34b);}}}function emitCampaignSummary(_0x254680){if(_0x254680['type']===_0x8d3a('0x7b')){emit(util[_0x8d3a('0x7c')](_0x8d3a('0x7d'),_0x254680[_0x8d3a('0x3e')]),'campaign:save',_0x254680);}}function checkGetDataPredictive(_0x2d0d27){if(isNotNull(_0x2d0d27)&&!_[_0x8d3a('0x44')](_0x2d0d27)){loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x7f'));loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x80'),_0x2d0d27[_0x8d3a('0x81')]);loggerPredictive[_0x8d3a('0x7e')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2d0d27['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x82'),_0x2d0d27[_0x8d3a('0x6d')]);loggerPredictive['info'](_0x8d3a('0x83'),_0x2d0d27[_0x8d3a('0x6c')]);loggerPredictive['info'](_0x8d3a('0x84'),_0x2d0d27[_0x8d3a('0x6a')]);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x85'),_0x2d0d27[_0x8d3a('0x6b')]);loggerPredictive[_0x8d3a('0x7e')]('---------------------------');if(_0x2d0d27[_0x8d3a('0x81')]>0x0){if(!_[_0x8d3a('0x86')](_0x2d0d27[_0x8d3a('0x6b')])&&_0x2d0d27['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x87'));if(!_['isUndefined'](_0x2d0d27['predictiveIntervalAvgHoldtime'])&&_0x2d0d27[_0x8d3a('0x6a')]>0x0){return!![];}loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x88'));}else{loggerPredictive['info']('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x89'));}return![];}function mergeDataErlangB(_0x4f6114){return function(_0x1e7892){loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x8a'));loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x8b'),_0x1e7892['erlangCalls']);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x8c'),_0x1e7892[_0x8d3a('0x74')]);loggerPredictive[_0x8d3a('0x7e')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e7892['erlangAbandonmentRate']);loggerPredictive['info'](_0x8d3a('0x8d'),_0x1e7892['erlangBusyFactor']);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x8e'),_0x1e7892['erlangAbandonmentRate']);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x8f'));_['merge'](_0x4f6114,_0x1e7892);};}function getDiff(_0x542561){var _0x136ae3=moment()[_0x8d3a('0x48')](0x0);var _0x377b5a=moment(_0x542561)[_0x8d3a('0x48')](0x0);return _0x136ae3[_0x8d3a('0x49')](_0x377b5a,'seconds');}function ifInterval(_0x5b276c,_0x5174a7){if(_[_0x8d3a('0x86')](_0x5174a7)){return![];}return getDiff(_0x5174a7)<_0x5b276c*0x3c;}function freeVariablesPredictive(_0x574ca1){if(isNotNull(_0x574ca1)){if(!_[_0x8d3a('0x86')](_0x574ca1[_0x8d3a('0x27')])){_0x574ca1[_0x8d3a('0x27')]=undefined;loggerPredictive[_0x8d3a('0x7e')](_0x574ca1['name'],_0x8d3a('0x90'));}if(!_[_0x8d3a('0x86')](_0x574ca1[_0x8d3a('0x26')])){_0x574ca1[_0x8d3a('0x26')]=undefined;loggerPredictive['info'](_0x574ca1[_0x8d3a('0x3e')],_0x8d3a('0x91'));}if(!_[_0x8d3a('0x86')](_0x574ca1['handlePredictive'])){clearInterval(_0x574ca1[_0x8d3a('0x92')]);_0x574ca1['handlePredictive']=undefined;loggerPredictive[_0x8d3a('0x7e')](_0x574ca1[_0x8d3a('0x3e')],_0x8d3a('0x93'));}}}function erlangb(_0x5c84c4,_0x330801){if(_0x330801===0x0){return 0x0;}var _0x3892fd=0x1;for(var _0x420ea8=0x1;_0x420ea8<=_0x330801;_0x420ea8+=0x1){_0x3892fd=0x1+_0x3892fd*_0x420ea8/_0x5c84c4;}return 0x1/_0x3892fd;}function isVoiceQueueOutbound(_0x2a6471){return _0x2a6471===_0x8d3a('0x4d');}function isNotPreview(_0x36a69b){return _0x36a69b!==_0x8d3a('0x94');}function isCampaignIvr(_0x27ca33){return _0x27ca33===_0x8d3a('0x7b');}function getCallerId(_0x1a5c3c,_0x18830c,_0x1241bb){if(!_[_0x8d3a('0x86')](_0x1241bb)&&typeof _0x1241bb===_0x8d3a('0x95')&&!_['isEmpty'](_0x1241bb)){if(!_[_0x8d3a('0x86')](_0x18830c)&&typeof _0x18830c===_0x8d3a('0x95')&&!_[_0x8d3a('0x44')](_0x18830c)){return util[_0x8d3a('0x7c')](_0x8d3a('0x96'),_0x18830c,_0x1241bb);}return util['format']('\x22%s\x22\x20<%s>',_0x1241bb,_0x1241bb);}if(!_[_0x8d3a('0x86')](_0x1a5c3c)&&typeof _0x1a5c3c==='string'&&!_[_0x8d3a('0x44')](_0x1a5c3c)){return _0x1a5c3c;}return _0x8d3a('0x97');}function loggerCatchQueueSummary(_0x225576,_0x2d321b){return function(_0x2f2cf9){freeVariablesPredictive(_0x2d321b);emitVoiceQueueSummary(_0x2d321b);emitCampaignSummary(_0x2d321b);loggerSyncQueueSummary[_0x8d3a('0x98')](_0x225576,util[_0x8d3a('0x99')](_0x2f2cf9,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x3554cc,_0x3a62bf){return function(_0x4f4a9c){loggerPredictive[_0x8d3a('0x98')](_0x3a62bf[_0x8d3a('0x3e')],_0x3554cc);loggerPredictive[_0x8d3a('0x98')](_0x4f4a9c[_0x8d3a('0x9a')]);freeVariablesPredictive(_0x3a62bf);};}function loggerCatch(_0x344bd9){return function(_0x5b46b6){logger[_0x8d3a('0x98')](_0x344bd9,util[_0x8d3a('0x99')](_0x5b46b6,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4525f5){return _0x4525f5&&!_[_0x8d3a('0x86')](_0x4525f5)&&_0x4525f5[_0x8d3a('0x9b')]>0x0;}function decremetOriginate(_0x47a2ca){if(!_[_0x8d3a('0x86')](_0x47a2ca)&&_0x47a2ca!==null){if(typeof _0x47a2ca[_0x8d3a('0x72')]!==_0x8d3a('0x9c')){if(_0x47a2ca[_0x8d3a('0x72')]>0x0){_0x47a2ca[_0x8d3a('0x72')]-=0x1;}else{logger['error'](_0x8d3a('0x9d'));}}}else{logger[_0x8d3a('0x98')](_0x8d3a('0x9e'));}}function checkContactLowerLimitOriginate(_0x5c58bb,_0x4c78b9,_0x34c1cc){if(_0x4c78b9>_0x34c1cc){for(var _0x5b34e2=0x0;_0x5b34e2<_0x4c78b9-_0x34c1cc;_0x5b34e2+=0x1){decremetOriginate(_0x5c58bb);}}}function loggerGetContactDialer(_0x690c31,_0x134377,_0x2e451e){return function(_0x14621a){checkContactLowerLimitOriginate(_0x134377,_0x2e451e,0x0);logger['error'](_0x690c31,util[_0x8d3a('0x99')](_0x14621a,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x5814a9){return function(_0x1a5b1c){if(isNotNull(_0x1a5b1c)&&isNotNull(_0x1a5b1c[0x0])){if(_0x1a5b1c[0x0]['contactsRescheduled']>0x0){_0x5814a9['message']=_0x8d3a('0x9f');logger[_0x8d3a('0x7e')](_0x8d3a('0xa0')+_0x5814a9[_0x8d3a('0x3e')],_0x1a5b1c[0x0][_0x8d3a('0xa1')],_0x8d3a('0xa2'));}else{_0x5814a9[_0x8d3a('0x3d')]=_0x8d3a('0xa3');logger[_0x8d3a('0x7e')](_0x8d3a('0xa4')+_0x5814a9[_0x8d3a('0x3e')]);}}};}function notSendMessagesQueue(_0x341696){if(_0x341696[_0x8d3a('0xa5')]){freeVariablesPredictive(_0x341696);if(_0x341696[_0x8d3a('0x72')]===0x0&&_0x341696[_0x8d3a('0x54')]===0x0&&_0x341696['waiting']===0x0&&(_0x341696['pTalking']||0x0)===0x0){_0x341696[_0x8d3a('0xa5')]=![];_0x341696[_0x8d3a('0x50')]=0x0;_0x341696['message']=_0x8d3a('0x3f');loggerSyncQueueSummary[_0x8d3a('0x98')](_0x8d3a('0xa6'),_0x341696[_0x8d3a('0x3e')],_0x8d3a('0xa7'));}else{_0x341696[_0x8d3a('0x3d')]=_0x8d3a('0xa8');loggerSyncQueueSummary[_0x8d3a('0x98')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x341696['name'],_0x8d3a('0xa9'));}emitVoiceQueueSummary(_0x341696);}}function notSendMessagesCampaign(_0x5c943b){if(_0x5c943b[_0x8d3a('0xa5')]){if(_0x5c943b[_0x8d3a('0x72')]===0x0){_0x5c943b['sendMessageOneNotActive']=![];_0x5c943b[_0x8d3a('0x3d')]=_0x8d3a('0x3f');loggerSyncQueueSummary['error'](_0x8d3a('0xaa'),_0x5c943b[_0x8d3a('0x3e')],'is\x20not\x20active');}else{_0x5c943b[_0x8d3a('0x3d')]=_0x8d3a('0xa8');loggerSyncQueueSummary['error'](_0x8d3a('0xaa'),_0x5c943b['name'],'is\x20disactive');}emitCampaignSummary(_0x5c943b);}}function createObjHistory(_0x53dad1,_0x2bb930,_0x178250,_0x5496d4,_0xa0260c){_0x53dad1['message']=_0x178250;var _0x10993b=new Action(_0x53dad1,_0x2bb930);var _0x5ad004=new History(_0x10993b);_0x5ad004[_0x8d3a('0xab')]=_0x5496d4;_0x5ad004[_0x8d3a('0xac')]=_0xa0260c;_0x5ad004[_0x8d3a('0xad')]=_0x10993b[_0x8d3a('0xae')];return _0x5ad004;}Dialer[_0x8d3a('0xaf')][_0x8d3a('0x3c')]=function(){var _0x4cb8e5=this;setInterval(function(){_0x4cb8e5[_0x8d3a('0xb0')](_0x4cb8e5[_0x8d3a('0x24')],'[uniqueid]');_0x4cb8e5[_0x8d3a('0xb0')](_0x4cb8e5['actions'],_0x8d3a('0xb1'));},0x32c8);};Dialer['prototype'][_0x8d3a('0xb0')]=function(_0x318ead,_0x1e956d){var _0x29f8ac=this;for(var _0x16b702 in _0x318ead){if(typeof _0x318ead[_0x16b702]!=='undefined'){this[_0x8d3a('0x1c')]['enqueue'](function(){if(!_[_0x8d3a('0xb2')](_0x318ead[_0x16b702])){return ami[_0x8d3a('0xb3')]({'action':'status','channel':_0x318ead[_0x16b702][_0x8d3a('0xb4')]})['catch'](function(_0x5fa21e){if(_0x5fa21e['message']===_0x8d3a('0xb5')){setTimeout(function(){if(_0x318ead[_0x16b702]&&_0x318ead[_0x16b702][_0x8d3a('0x4c')]!=='ivr'){_0x29f8ac[_0x8d3a('0xb6')](_0x29f8ac[_0x8d3a('0x1d')][_0x318ead[_0x16b702][_0x8d3a('0xb7')]]);logger[_0x8d3a('0x98')](_0x8d3a('0xb8'),_0x1e956d,_0x16b702,_0x318ead[_0x16b702][_0x8d3a('0xb7')]);delete _0x318ead[_0x16b702];}if(_0x318ead[_0x16b702]&&_0x318ead[_0x16b702]['type']===_0x8d3a('0x7b')){_0x29f8ac[_0x8d3a('0xb6')](_0x29f8ac[_0x8d3a('0x1e')][_0x318ead[_0x16b702][_0x8d3a('0xb7')]]);logger[_0x8d3a('0x98')]('[Dialer][checkChannel][ivr]',_0x1e956d,_0x16b702,_0x318ead[_0x16b702]['queue']);delete _0x318ead[_0x16b702];}},0x2328);}});}});}}};Dialer[_0x8d3a('0xaf')]['countReScheduled']=function(_0x5221d3){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopper['countReScheduled'](_0x5221d3))[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xbc')));};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xbd')]=function(_0x54c5f4){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopperBlack[_0x8d3a('0xbd')](_0x54c5f4))[_0x8d3a('0xbb')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x8d3a('0xaf')]['checkIsBlackListIvr']=function(_0x3df1a4){return BPromise['resolve']()[_0x8d3a('0xba')](cmHopperBlack[_0x8d3a('0xbe')](_0x3df1a4))[_0x8d3a('0xbb')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xbf')]=function(_0x18af3b){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopperHistory[_0x8d3a('0xc0')](_0x18af3b))[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xc1')));};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xc2')]=function(_0x50744c){return BPromise['resolve']()[_0x8d3a('0xba')](cmHopper[_0x8d3a('0xc2')](_0x50744c))['catch'](loggerCatch(_0x8d3a('0xc3')));};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xc4')]=function(_0x5c9152,_0x19be2f,_0x76646d){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopper[_0x8d3a('0xc4')](_0x5c9152,_0x19be2f,_0x76646d))[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xc5')));};Dialer['prototype'][_0x8d3a('0xc6')]=function(_0x59003d,_0xd47d1c,_0x2432c1,_0x5d5444,_0x227f57){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopper[_0x8d3a('0xc6')](_0x59003d,_0xd47d1c,_0x2432c1,_0x5d5444))['catch'](function(_0x3f2c56){_0x227f57[_0x8d3a('0xc7')]-=_0x2432c1;_0x227f57[_0x8d3a('0xc7')]=_0x227f57[_0x8d3a('0xc7')]>0x0?_0x227f57['temp']:0x0;loggerCatch(_0x8d3a('0xc8'))(_0x3f2c56);});};Dialer['prototype'][_0x8d3a('0xc9')]=function(_0x5d3910,_0x583ebc,_0x3640ac,_0x10ce9c){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopper[_0x8d3a('0xc9')](_0x5d3910,_0x583ebc,_0x3640ac))[_0x8d3a('0xbb')](function(_0x4ee4f9){_0x10ce9c['temp']-=_0x583ebc;_0x10ce9c[_0x8d3a('0xc7')]=_0x10ce9c['temp']>0x0?_0x10ce9c[_0x8d3a('0xc7')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x4ee4f9);});};Dialer[_0x8d3a('0xaf')]['getVoiceQueueRtPauses']=function(_0x455aae){return BPromise[_0x8d3a('0xb9')]()['then'](voiceQueueRt[_0x8d3a('0xca')](_0x455aae))[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xcb')));};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xcc')]=function(_0x2ae62c){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopper[_0x8d3a('0xcc')](_0x2ae62c))['catch'](loggerCatch(_0x8d3a('0xcd')));};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xce')]=function(_0x12da42){return BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](cmHopperHistory[_0x8d3a('0xce')](_0x12da42))[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xcf')));};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xb6')]=function(_0x3e1616){if(!_[_0x8d3a('0x86')](_0x3e1616)&&_0x3e1616!==null){if(typeof _0x3e1616[_0x8d3a('0x72')]!=='undefined'){if(_0x3e1616[_0x8d3a('0x72')]>0x0){_0x3e1616['originated']-=0x1;}else{logger[_0x8d3a('0x98')](_0x8d3a('0xd0'));}}}else{logger[_0x8d3a('0x98')](_0x8d3a('0xd1'));}};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xd2')]=function(_0x39800b,_0x1250fe){var _0x3c888e=this;return function(_0x2918ca){_0x3c888e['updateOriginated'](_0x1250fe);logger['error'](_0x39800b,util[_0x8d3a('0x99')](_0x2918ca,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x8d3a('0xd3')]=function(_0x4ec901,_0x3f313b,_0x1dbfdb){var _0x19b0b2={'state':0x19,'statedesc':'notFound'};this[_0x8d3a('0xb6')](_0x3f313b);this['saveInDb'](_[_0x8d3a('0xd4')](_0x19b0b2,_[_0x8d3a('0xd5')](_0x1dbfdb,[_0x8d3a('0xd6'),_0x8d3a('0xd7'),'UserId',_0x8d3a('0xd8'),_0x8d3a('0xd9')])),_0x8d3a('0xda'),'[emptyContact]');logger[_0x8d3a('0x98')](_0x4ec901);};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xdb')]=function(_0x152195){return _0x152195==='Success';};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xdc')]=function(_0x1b0d05){return!_[_0x8d3a('0x86')](_0x1b0d05)&&_0x1b0d05&&!_[_0x8d3a('0x86')](_0x1b0d05[_0x8d3a('0x3e')])&&!_['isUndefined'](_0x1b0d05['active'])&&_0x1b0d05[_0x8d3a('0x78')]&&(this['trunks'][util['format'](_0x8d3a('0xdd'),_0x1b0d05[_0x8d3a('0x3e')])][_0x8d3a('0xde')]===_0x8d3a('0xdf')||this[_0x8d3a('0x20')][util['format'](_0x8d3a('0xdd'),_0x1b0d05[_0x8d3a('0x3e')])]['status']==='unmonitored');};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xe0')]=function(_0x5b41cc,_0x1cb63e,_0x107b75){this['createHistory'](_0x5b41cc)[_0x8d3a('0xbb')](loggerCatch(_0x1cb63e));this[_0x8d3a('0xcc')](_0x5b41cc)[_0x8d3a('0xbb')](loggerCatch(_0x107b75));};Dialer['prototype'][_0x8d3a('0xe1')]=function(_0x556b16){var _0x20d35b=this[_0x8d3a('0x24')][_0x556b16[_0x8d3a('0xe2')]];var _0x529aa7;if(!_[_0x8d3a('0xb2')](_0x556b16)&&!_[_0x8d3a('0xb2')](_0x556b16['variable'])&&!_[_0x8d3a('0xb2')](_0x556b16['variable']['amdstatus'])&&_0x556b16[_0x8d3a('0xe3')]===_0x8d3a('0xe4')&&_0x20d35b){if(_0x20d35b[_0x8d3a('0x4c')]!==_0x8d3a('0x7b')&&this[_0x8d3a('0x1d')][_0x20d35b[_0x8d3a('0xb7')]][_0x8d3a('0xe5')]&&_0x556b16[_0x8d3a('0xe6')]===_0x8d3a('0xe7')){delete this[_0x8d3a('0x24')][_0x556b16['uniqueid']];this['updateOriginated'](this[_0x8d3a('0x1d')][_0x20d35b[_0x8d3a('0xb7')]]);this[_0x8d3a('0x1d')][_0x20d35b['queue']][_0x8d3a('0x60')]+=0x1;this[_0x8d3a('0x1d')][_0x20d35b[_0x8d3a('0xb7')]][_0x8d3a('0x5f')]+=0x1;_0x529aa7=new Hangup(_0x20d35b,_0x556b16);_0x529aa7['state']=0x12;_0x529aa7[_0x8d3a('0xac')]='HangupInAMD';_0x529aa7['membername']=_0x8d3a('0xe8');ami['emit'](_0x8d3a('0xe9'),ut[_0x8d3a('0xea')](_0x529aa7,_0x8d3a('0xeb')));this[_0x8d3a('0xe0')](_0x529aa7,_0x8d3a('0xec'),_0x8d3a('0xed'));}if(_0x20d35b[_0x8d3a('0x4c')]!=='ivr'&&this[_0x8d3a('0x1d')][_0x20d35b[_0x8d3a('0xb7')]][_0x8d3a('0xe5')]&&_0x556b16[_0x8d3a('0xe6')]===_0x8d3a('0xee')){var _0x27cbfc=this;return new BPromise(function(_0x1dfc6f,_0xc725c3){delete _0x27cbfc[_0x8d3a('0x24')][_0x556b16[_0x8d3a('0xe2')]];_0x27cbfc[_0x8d3a('0xb6')](_0x27cbfc[_0x8d3a('0x1d')][_0x20d35b[_0x8d3a('0xb7')]]);_0x27cbfc[_0x8d3a('0x1d')][_0x20d35b[_0x8d3a('0xb7')]][_0x8d3a('0x60')]+=0x1;_0x27cbfc['voiceQueues'][_0x20d35b[_0x8d3a('0xb7')]][_0x8d3a('0x5f')]+=0x1;var _0xe48674=_0x27cbfc[_0x8d3a('0x1d')][_0x20d35b[_0x8d3a('0xb7')]];var _0x412e12=new Hangup(_0x20d35b,_0x556b16);_0x412e12[_0x8d3a('0xab')]=0x13;_0x412e12['statedesc']=_0x8d3a('0xef');_0x412e12[_0x8d3a('0xf0')]=_0x8d3a('0xe8');_0x412e12['countmachineretry']+=0x1;_0x412e12[_0x8d3a('0xf1')]+=0x1;_0x412e12[_0x8d3a('0xeb')]=!![];ami[_0x8d3a('0x4b')](_0x8d3a('0xe9'),ut[_0x8d3a('0xea')](_0x412e12,_0x8d3a('0xeb')));_0x27cbfc[_0x8d3a('0xce')](_0x412e12)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xf2')));if(_0x412e12[_0x8d3a('0xf3')]+_0x412e12['countcongestionretry']+_0x412e12[_0x8d3a('0xf4')]+_0x412e12[_0x8d3a('0xf5')]+_0x412e12[_0x8d3a('0xf6')]+_0x412e12[_0x8d3a('0xf7')]+_0x412e12[_0x8d3a('0xf8')]+_0x412e12[_0x8d3a('0xf9')]>=_0xe48674[_0x8d3a('0xfa')]){_0x27cbfc[_0x8d3a('0xfb')](_0x412e12,_0x1dfc6f,_0xc725c3,_0x8d3a('0xfc'));}else{if(_0x412e12[_0x8d3a('0xf8')]>=_0xe48674[_0x8d3a('0xfd')]){_0x27cbfc[_0x8d3a('0xfe')](_0x412e12,_0x1dfc6f,_0xc725c3,_0x8d3a('0xff'));}else{_0x27cbfc['rescheduleContact']({'active':![],'countmachineretry':_0x412e12[_0x8d3a('0xf8')],'scheduledat':moment()[_0x8d3a('0x100')](_0xe48674[_0x8d3a('0x101')],_0x8d3a('0x102'))[_0x8d3a('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x412e12['ContactId'],'ListId':_0x412e12[_0x8d3a('0xd7')],'VoiceQueueId':_0x412e12['VoiceQueueId']||undefined,'CampaignId':_0x412e12['CampaignId']||undefined})['catch'](loggerCatch(_0x8d3a('0x103')));_0x1dfc6f({'reschedule':0x1});}}});}if(_0x20d35b[_0x8d3a('0x4c')]===_0x8d3a('0x7b')&&this[_0x8d3a('0x1e')][_0x20d35b[_0x8d3a('0xb7')]][_0x8d3a('0xe5')]&&_0x556b16['value']===_0x8d3a('0xe7')){delete this['uniqueId'][_0x556b16[_0x8d3a('0xe2')]];this[_0x8d3a('0xb6')](this[_0x8d3a('0x1e')][_0x20d35b[_0x8d3a('0xb7')]]);_0x529aa7=new Hangup(_0x20d35b,_0x556b16);_0x529aa7[_0x8d3a('0xab')]=0x12;_0x529aa7[_0x8d3a('0xac')]=_0x8d3a('0x104');_0x529aa7[_0x8d3a('0xf0')]=_0x8d3a('0xe8');ami[_0x8d3a('0x4b')](_0x8d3a('0xe9'),ut[_0x8d3a('0xea')](_0x529aa7,'amd'));this['saveInDb'](_0x529aa7,_0x8d3a('0x105'),'[syncHangupInAMDIvr]');}if(_0x20d35b['type']===_0x8d3a('0x7b')&&this['campaigns'][_0x20d35b[_0x8d3a('0xb7')]]['dialAMDActive']&&_0x556b16[_0x8d3a('0xe6')]===_0x8d3a('0xee')){var _0x27cbfc=this;return new BPromise(function(_0x59a75e,_0x51d4c6){delete _0x27cbfc[_0x8d3a('0x24')][_0x556b16['uniqueid']];_0x27cbfc[_0x8d3a('0xb6')](_0x27cbfc[_0x8d3a('0x1e')][_0x20d35b[_0x8d3a('0xb7')]]);_0x27cbfc['campaigns'][_0x20d35b[_0x8d3a('0xb7')]][_0x8d3a('0x60')]+=0x1;_0x27cbfc[_0x8d3a('0x1e')][_0x20d35b[_0x8d3a('0xb7')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x135d78=_0x27cbfc[_0x8d3a('0x1e')][_0x20d35b[_0x8d3a('0xb7')]];var _0x378818=new Hangup(_0x20d35b,_0x556b16);_0x378818['state']=0x13;_0x378818['statedesc']=_0x8d3a('0xef');_0x378818[_0x8d3a('0xf0')]=_0x8d3a('0xe8');_0x378818[_0x8d3a('0xf8')]+=0x1;_0x378818['countglobal']+=0x1;_0x378818['amd']=!![];ami[_0x8d3a('0x4b')](_0x8d3a('0xe9'),ut['buildObj'](_0x378818,_0x8d3a('0xeb')));_0x27cbfc[_0x8d3a('0xce')](_0x378818)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xf2')));if(_0x378818[_0x8d3a('0xf3')]+_0x378818['countcongestionretry']+_0x378818[_0x8d3a('0xf4')]+_0x378818[_0x8d3a('0xf5')]+_0x378818[_0x8d3a('0xf6')]+_0x378818[_0x8d3a('0xf7')]+_0x378818[_0x8d3a('0xf8')]+_0x378818[_0x8d3a('0xf9')]>=_0x135d78['dialGlobalMaxRetry']){_0x27cbfc[_0x8d3a('0xfb')](_0x378818,_0x59a75e,_0x51d4c6,_0x8d3a('0xfc'));}else{if(_0x378818['countmachineretry']>=_0x135d78[_0x8d3a('0xfd')]){_0x27cbfc[_0x8d3a('0xfe')](_0x378818,_0x59a75e,_0x51d4c6,_0x8d3a('0xff'));}else{_0x27cbfc[_0x8d3a('0xc2')]({'active':![],'countmachineretry':_0x378818[_0x8d3a('0xf8')],'scheduledat':moment()[_0x8d3a('0x100')](_0x135d78['dialMachineRetryFrequency'],_0x8d3a('0x102'))[_0x8d3a('0x7c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x378818[_0x8d3a('0xd6')],'ListId':_0x378818[_0x8d3a('0xd7')],'VoiceQueueId':_0x378818[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x378818[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x103')));_0x59a75e({'reschedule':0x1});}}});}}};Dialer[_0x8d3a('0xaf')]['syncHangup']=function(_0xf09a45){var _0x3548ec=this[_0x8d3a('0x24')][_0xf09a45[_0x8d3a('0xe2')]];var _0xaecbc8=this;var _0x1db1ea;if(_0x3548ec&&_0x3548ec[_0x8d3a('0x4c')]===_0x8d3a('0x7b')){delete this['uniqueId'][_0xf09a45[_0x8d3a('0xe2')]];this[_0x8d3a('0xb6')](this[_0x8d3a('0x1e')][_0x3548ec[_0x8d3a('0xb7')]]);this[_0x8d3a('0x1e')][_0x3548ec[_0x8d3a('0xb7')]][_0x8d3a('0x106')]+=0x1;_0x1db1ea=new Hangup(_0x3548ec,_0xf09a45);this[_0x8d3a('0xce')](_0x1db1ea)[_0x8d3a('0xbb')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x8d3a('0xcc')](_0x1db1ea)['catch'](loggerCatch(_0x8d3a('0x107')));}if(_0x3548ec&&_0x3548ec[_0x8d3a('0x4c')]!==_0x8d3a('0x7b')&&isNotNull(this[_0x8d3a('0x1d')][_0x3548ec[_0x8d3a('0xb7')]][_0x8d3a('0x108')])){delete this[_0x8d3a('0x24')][_0xf09a45[_0x8d3a('0xe2')]];this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][_0x3548ec[_0x8d3a('0xb7')]]);this[_0x8d3a('0x1d')][_0x3548ec['queue']]['outboundAnswerCallsDay']+=0x1;this[_0x8d3a('0x1d')][_0x3548ec[_0x8d3a('0xb7')]][_0x8d3a('0x5f')]+=0x1;_0x1db1ea=new Hangup(_0x3548ec,_0xf09a45);_0x1db1ea[_0x8d3a('0xab')]=0x10;_0x1db1ea[_0x8d3a('0xac')]=_0x8d3a('0x109');_0x1db1ea[_0x8d3a('0xf0')]=_0x8d3a('0x10a');this[_0x8d3a('0xce')](_0x1db1ea)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x10b')));this[_0x8d3a('0xcc')](_0x1db1ea)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x107')));}if(_0x3548ec&&_0x3548ec[_0x8d3a('0x4c')]!==_0x8d3a('0x7b')&&!isNotNull(this[_0x8d3a('0x1d')][_0x3548ec[_0x8d3a('0xb7')]][_0x8d3a('0x108')])){delete this[_0x8d3a('0x24')][_0xf09a45['uniqueid']];this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][_0x3548ec['queue']]);this['voiceQueues'][_0x3548ec[_0x8d3a('0xb7')]][_0x8d3a('0x10c')]+=0x1;_0x1db1ea=new Hangup(_0x3548ec,_0xf09a45);_0x1db1ea['state']=0xc;_0x1db1ea[_0x8d3a('0xac')]=_0xf09a45[_0x8d3a('0x10d')];_0x1db1ea['membername']='Unknow';this[_0x8d3a('0xce')](_0x1db1ea)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x10b')));this['moveContactManagedDialer'](_0x1db1ea)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x107')));}};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x31')]=function(_0x847fd3){var _0x39ed98=this['uniqueId'][_0x847fd3['uniqueid']];var _0x4bbd00=this;if(this['voiceQueues'][_0x847fd3[_0x8d3a('0xb7')]]){if(_0x39ed98&&_0x39ed98[_0x8d3a('0x4c')]!==_0x8d3a('0x7b')){delete this[_0x8d3a('0x24')][_0x847fd3[_0x8d3a('0xe2')]];this['voiceQueues'][_0x847fd3['queue']][_0x8d3a('0x60')]+=0x1;var _0x20f9d8=new AgentComplete(_0x39ed98,_0x847fd3);if(_0x847fd3['reason']==='agent'){_0x20f9d8[_0x8d3a('0x10e')]=this[_0x8d3a('0x1d')][_0x847fd3['queue']][_0x8d3a('0x10f')]&&this['voiceQueues'][_0x847fd3[_0x8d3a('0xb7')]][_0x8d3a('0x110')]?moment()['format'](_0x8d3a('0x111')):undefined;}this[_0x8d3a('0xce')](_0x20f9d8)['catch'](loggerCatch(_0x8d3a('0x112')));this[_0x8d3a('0xcc')](_0x20f9d8)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x113')));}}};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x2b')]=function(_0x5a0e5c){if(this[_0x8d3a('0x1d')][_0x5a0e5c[_0x8d3a('0xb7')]]){if(this[_0x8d3a('0x24')][_0x5a0e5c['uniqueid']]&&this[_0x8d3a('0x24')][_0x5a0e5c['uniqueid']][_0x8d3a('0x4c')]!=='ivr'){this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][_0x5a0e5c[_0x8d3a('0xb7')]]);this[_0x8d3a('0x24')][_0x5a0e5c['uniqueid']][_0x8d3a('0x114')]=moment()[_0x8d3a('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer['prototype'][_0x8d3a('0x115')]=function(_0x29c3ad){this[_0x8d3a('0xce')](_0x29c3ad)[_0x8d3a('0xbb')](loggerCatch('[syncAgentComplete][createHistory]'));this['moveContactManagedDialer'](_0x29c3ad)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x116')));};Dialer['prototype'][_0x8d3a('0x2d')]=function(_0x4046ca){var _0x30308f=this['uniqueId'][_0x4046ca[_0x8d3a('0xe2')]];var _0xcfa363=this;if(this[_0x8d3a('0x1d')][_0x4046ca[_0x8d3a('0xb7')]]){if(_0x30308f&&_0x30308f['type']!==_0x8d3a('0x7b')){delete this['uniqueId'][_0x4046ca[_0x8d3a('0xe2')]];this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][_0x4046ca['queue']]);_0x30308f[_0x8d3a('0x117')]=moment()['format'](_0x8d3a('0x111'));var _0x3467f7=new QueueCallerAbandon(_0x30308f,_0x4046ca);if(getSeconds(_0x30308f['droptime'],_0x30308f[_0x8d3a('0x118')])>=_0x30308f[_0x8d3a('0x119')]){this['voiceQueues'][_0x4046ca[_0x8d3a('0xb7')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0x8d3a('0x1d')][_0x4046ca['queue']][_0x8d3a('0x65')]+=0x1;this[_0x8d3a('0x1d')][_0x4046ca[_0x8d3a('0xb7')]][_0x8d3a('0x6e')]+=0x1;_0x3467f7['state']=0xa;_0x3467f7[_0x8d3a('0xac')]=_0x8d3a('0x11a');_0x3467f7['dropreason']=_0x8d3a('0x11b');_0x3467f7[_0x8d3a('0x10e')]=this[_0x8d3a('0x1d')][_0x4046ca['queue']][_0x8d3a('0x10f')]?moment()[_0x8d3a('0x7c')](_0x8d3a('0x111')):undefined;_0x3467f7['countdropretry']+=0x1;_0x3467f7[_0x8d3a('0xf1')]+=0x1;if(_0x3467f7[_0x8d3a('0xf6')]>=this[_0x8d3a('0x1d')][_0x4046ca[_0x8d3a('0xb7')]][_0x8d3a('0x11c')]){this[_0x8d3a('0x115')](_0x3467f7);}else{this[_0x8d3a('0xc2')]({'active':![],'countdropretry':_0x3467f7['countdropretry'],'scheduledat':moment()[_0x8d3a('0x100')](this['voiceQueues'][_0x4046ca[_0x8d3a('0xb7')]][_0x8d3a('0x11d')],_0x8d3a('0x102'))[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x30308f[_0x8d3a('0xd6')],'ListId':_0x30308f[_0x8d3a('0xd7')],'VoiceQueueId':_0x30308f[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x30308f[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x11e')));var _0x599a7e=new History(_0x3467f7);_0x599a7e[_0x8d3a('0xab')]=0xa;_0x599a7e[_0x8d3a('0xac')]=_0x8d3a('0x11a');_0x599a7e[_0x8d3a('0xae')]=moment()[_0x8d3a('0x7c')](_0x8d3a('0x111'));_0x599a7e['endtime']=_0x599a7e[_0x8d3a('0xae')];_0x599a7e[_0x8d3a('0x11f')]=_0x3467f7[_0x8d3a('0x11f')];_0x599a7e[_0x8d3a('0x120')]=_0x3467f7[_0x8d3a('0x120')];this[_0x8d3a('0xce')](_0x599a7e)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x121')));}}else{this[_0x8d3a('0x1d')][_0x4046ca[_0x8d3a('0xb7')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x8d3a('0x1d')][_0x4046ca[_0x8d3a('0xb7')]][_0x8d3a('0x64')]+=0x1;_0x3467f7[_0x8d3a('0xab')]=0xb;_0x3467f7[_0x8d3a('0xac')]=_0x8d3a('0x122');_0x3467f7[_0x8d3a('0x123')]='CALLEREXIT';_0x3467f7[_0x8d3a('0xf7')]+=0x1;_0x3467f7[_0x8d3a('0xf1')]+=0x1;if(_0x3467f7[_0x8d3a('0xf7')]>=this[_0x8d3a('0x1d')][_0x4046ca[_0x8d3a('0xb7')]][_0x8d3a('0x124')]){this[_0x8d3a('0x115')](_0x3467f7);}else{this[_0x8d3a('0xc2')]({'active':![],'countabandonedretry':_0x3467f7[_0x8d3a('0xf7')],'scheduledat':moment()['add'](this[_0x8d3a('0x1d')][_0x4046ca['queue']][_0x8d3a('0x125')],_0x8d3a('0x102'))[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x30308f[_0x8d3a('0xd6')],'ListId':_0x30308f[_0x8d3a('0xd7')],'VoiceQueueId':_0x30308f[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x30308f[_0x8d3a('0xd9')]||undefined})['catch'](loggerCatch(_0x8d3a('0x126')));var _0x599a7e=new History(_0x3467f7);_0x599a7e[_0x8d3a('0xab')]=0xb;_0x599a7e[_0x8d3a('0xac')]=_0x8d3a('0x122');_0x599a7e[_0x8d3a('0xae')]=moment()[_0x8d3a('0x7c')](_0x8d3a('0x111'));_0x599a7e[_0x8d3a('0xad')]=_0x599a7e['starttime'];_0x599a7e['calleridname']=_0x3467f7[_0x8d3a('0x11f')];_0x599a7e['calleridnum']=_0x3467f7[_0x8d3a('0x120')];this[_0x8d3a('0xce')](_0x599a7e)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x127')));}}}}};Dialer['prototype']['syncNewExten']=function(_0x4ef00b){if(this['actions'][_0x4ef00b[_0x8d3a('0xe2')]]){this['actions'][_0x4ef00b[_0x8d3a('0xe2')]][_0x8d3a('0xb4')]=_0x4ef00b[_0x8d3a('0xb4')];}if(this[_0x8d3a('0x24')][_0x4ef00b[_0x8d3a('0xe2')]]){this[_0x8d3a('0x24')][_0x4ef00b['uniqueid']][_0x8d3a('0xb4')]=_0x4ef00b[_0x8d3a('0xb4')];}};Dialer['prototype'][_0x8d3a('0x38')]=function(_0x283482){if(strategy[this[_0x8d3a('0x1d')][this[_0x8d3a('0x22')][_0x283482[_0x8d3a('0x128')]][_0x8d3a('0xb7')]][_0x8d3a('0x4e')]]===_0x8d3a('0x129')){if(this[_0x8d3a('0x22')][_0x283482['actionid']]&&_[_0x8d3a('0xb2')](this[_0x8d3a('0x22')][_0x283482[_0x8d3a('0x128')]]['locked'])&&_0x283482[_0x8d3a('0xde')]==='1'&&_0x283482[_0x8d3a('0x12a')]==='0'){if(this[_0x8d3a('0x1f')][_0x283482[_0x8d3a('0x12b')]]){if(!this['agents'][_0x283482[_0x8d3a('0x12b')]][_0x8d3a('0x12c')]){this[_0x8d3a('0x1f')][_0x283482['stateinterface']][_0x8d3a('0x12c')]=!![];this[_0x8d3a('0x22')][_0x283482[_0x8d3a('0x128')]][_0x8d3a('0x12c')]=!![];this[_0x8d3a('0x22')][_0x283482['actionid']]['stateinterface']=_0x283482['stateinterface'];}}}}else if((strategy[this[_0x8d3a('0x1d')][this[_0x8d3a('0x22')][_0x283482['actionid']][_0x8d3a('0xb7')]][_0x8d3a('0x4e')]]||_0x8d3a('0x19'))===_0x8d3a('0x19')){if(this[_0x8d3a('0x22')][_0x283482[_0x8d3a('0x128')]]){if(this[_0x8d3a('0x1f')][_0x283482['stateinterface']]){this[_0x8d3a('0x22')][_0x283482['actionid']][_0x8d3a('0x12b')]=_0x283482[_0x8d3a('0x12b')];if(_[_0x8d3a('0xb2')](this['queueBooked'][this['actions'][_0x283482['actionid']][_0x8d3a('0xb7')]])){this[_0x8d3a('0x28')][this[_0x8d3a('0x22')][_0x283482[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]=[];}this['queueBooked'][this[_0x8d3a('0x22')][_0x283482[_0x8d3a('0x128')]][_0x8d3a('0xb7')]][_0x8d3a('0x12d')](_[_0x8d3a('0xd4')](_[_0x8d3a('0xd5')](this[_0x8d3a('0x22')][_0x283482['actionid']],[_0x8d3a('0x12e'),_0x8d3a('0x12b')]),{'status':_0x283482[_0x8d3a('0xde')],'paused':_0x283482[_0x8d3a('0x12a')]}));}}}};function unlockQueueStatus(_0x37ff40,_0x31396f){setTimeout(function(){if(_[_0x8d3a('0x86')](_0x37ff40[_0x8d3a('0x12f')])){loggerBooked['error'](_0x8d3a('0x130'),_0x31396f);}_0x37ff40[_0x8d3a('0x12f')]=!![];loggerBooked[_0x8d3a('0x7e')](_0x8d3a('0x131'),_0x31396f,JSON[_0x8d3a('0x47')](_[_0x8d3a('0xd5')](_0x37ff40,[_0x8d3a('0x3e'),_0x8d3a('0x12f')])));},0x1f3);}Dialer['prototype'][_0x8d3a('0x3a')]=function(_0x5f227a){var _0x3647ca=this;var _0x4aa618=_0x3647ca[_0x8d3a('0x1d')][_0x3647ca['actions'][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]];if(strategy[this[_0x8d3a('0x1d')][this[_0x8d3a('0x22')][_0x5f227a['actionid']][_0x8d3a('0xb7')]][_0x8d3a('0x4e')]]===_0x8d3a('0x129')){if(this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]&&this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0x12b')]){this[_0x8d3a('0x94')][_0x8d3a('0x132')](this['actions'][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0x12e')],this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['stateinterface'])[_0x8d3a('0xbb')](function(_0x206cd9){logger[_0x8d3a('0x98')](_0x8d3a('0x133'),util[_0x8d3a('0x99')](_0x206cd9,{'showHidden':![],'depth':null}));})[_0x8d3a('0x134')](function(){_0x3647ca['updateOriginated'](_0x3647ca[_0x8d3a('0x1d')][_0x3647ca[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]);_0x3647ca[_0x8d3a('0x1f')][_0x3647ca[_0x8d3a('0x22')][_0x5f227a['actionid']][_0x8d3a('0x12b')]][_0x8d3a('0x12c')]=![];delete _0x3647ca['actions'][_0x5f227a[_0x8d3a('0x128')]];unlockQueueStatus(_0x4aa618);});}else{this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]);this[_0x8d3a('0xc2')]({'active':![],'ContactId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd6')],'ListId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd7')],'VoiceQueueId':this['actions'][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd8')]||undefined,'CampaignId':this['actions'][_0x5f227a['actionid']]['CampaignId']||undefined})['catch'](loggerCatch(_0x8d3a('0x135')));delete this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]];unlockQueueStatus(_0x4aa618);}}else if((strategy[this[_0x8d3a('0x1d')][this['actions'][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]][_0x8d3a('0x4e')]]||'rrmemory')===_0x8d3a('0x19')){var _0x3e2328;if(this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]&&!_[_0x8d3a('0x44')](this[_0x8d3a('0x28')][this['actions'][_0x5f227a['actionid']]['queue']])){if(this[_0x8d3a('0x29')][_0x3647ca[_0x8d3a('0x22')][_0x5f227a['actionid']]['queue']]){this[_0x8d3a('0x29')][_0x3647ca[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['queue']]=this[_0x8d3a('0x29')][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]?this[_0x8d3a('0x29')][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['queue']]:this[_0x8d3a('0x28')][this['actions'][_0x5f227a['actionid']][_0x8d3a('0xb7')]]?this[_0x8d3a('0x28')][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]][_0x8d3a('0x136')]||0x0:0x0;}this['queueBooked'][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]['_rr']=this[_0x8d3a('0x29')][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]];for(var _0x380489=0x0;_0x380489<this[_0x8d3a('0x28')][this[_0x8d3a('0x22')][_0x5f227a['actionid']][_0x8d3a('0xb7')]][_0x8d3a('0x9b')];_0x380489+=0x1){_0x3e2328=rr(this[_0x8d3a('0x28')][this['actions'][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]);this[_0x8d3a('0x29')][_0x3647ca[_0x8d3a('0x22')][_0x5f227a['actionid']][_0x8d3a('0xb7')]]=this['queueBooked'][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['queue']][_0x8d3a('0x136')];if(_0x3e2328[_0x8d3a('0xde')]==='1'&&_0x3e2328[_0x8d3a('0x12a')]==='0'){break;}}if(!_[_0x8d3a('0xb2')](_0x3e2328)){this[_0x8d3a('0x1f')][_0x3e2328[_0x8d3a('0x12b')]][_0x8d3a('0x137')]=_[_0x8d3a('0x86')](this[_0x8d3a('0x1f')][_0x3e2328[_0x8d3a('0x12b')]]['unlockRR'])?!![]:this[_0x8d3a('0x1f')][_0x3e2328[_0x8d3a('0x12b')]][_0x8d3a('0x137')];}loggerBooked[_0x8d3a('0x7e')](_0x8d3a('0x138'),_0x5f227a[_0x8d3a('0x128')],_0x8d3a('0x139'),JSON[_0x8d3a('0x47')](_[_0x8d3a('0xd5')](this[_0x8d3a('0x1f')][_0x3e2328[_0x8d3a('0x12b')]],[_0x8d3a('0x3e'),_0x8d3a('0x137')])),_0x8d3a('0x13a'),JSON[_0x8d3a('0x47')](_0x3e2328[_0x8d3a('0x12e')]));if(!_[_0x8d3a('0xb2')](_0x3e2328)&&_0x3e2328[_0x8d3a('0xde')]==='1'&&_0x3e2328[_0x8d3a('0x12a')]==='0'&&this[_0x8d3a('0x1f')][_0x3e2328[_0x8d3a('0x12b')]][_0x8d3a('0x137')]){this[_0x8d3a('0x1f')][_0x3e2328['stateinterface']]['unlockRR']=![];this['queueBooked'][_0x3647ca[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]=[];this['preview'][_0x8d3a('0x132')](_0x3e2328['idHopper'],_0x3e2328[_0x8d3a('0x12b')])[_0x8d3a('0xbb')](function(_0x22d3d9){logger[_0x8d3a('0x98')](_0x8d3a('0x133'),util[_0x8d3a('0x99')](_0x22d3d9,{'showHidden':![],'depth':null}));})[_0x8d3a('0x134')](function(){_0x3647ca[_0x8d3a('0xb6')](_0x3647ca[_0x8d3a('0x1d')][_0x3647ca[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['queue']]);setTimeout(function(){_0x3647ca['agents'][_0x3e2328[_0x8d3a('0x12b')]][_0x8d3a('0x137')]=!![];loggerBooked[_0x8d3a('0x7e')]('[booked][RR][finaly]',_0x5f227a[_0x8d3a('0x128')],_0x8d3a('0x139'),JSON[_0x8d3a('0x47')](_['pick'](_0x3647ca['agents'][_0x3e2328[_0x8d3a('0x12b')]],[_0x8d3a('0x3e'),_0x8d3a('0x137')])),_0x8d3a('0x13a'),JSON[_0x8d3a('0x47')](_0x3e2328[_0x8d3a('0x12e')]));},0xc7);delete _0x3647ca[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]];unlockQueueStatus(_0x4aa618,_0x5f227a['actionid']);});}else{loggerBooked[_0x8d3a('0x7e')](_0x8d3a('0x13b'));this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['queue']]);this[_0x8d3a('0xc2')]({'active':![],'ContactId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd6')],'ListId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd7')],'VoiceQueueId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x8d3a('0x22')][_0x5f227a['actionid']]['CampaignId']||undefined})[_0x8d3a('0xbb')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x8d3a('0x22')][_0x5f227a['actionid']];unlockQueueStatus(_0x4aa618);}}else{loggerBooked[_0x8d3a('0x7e')](_0x8d3a('0x13c'));this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][this['actions'][_0x5f227a[_0x8d3a('0x128')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]]['ContactId'],'ListId':this[_0x8d3a('0x22')][_0x5f227a['actionid']][_0x8d3a('0xd7')],'VoiceQueueId':this[_0x8d3a('0x22')][_0x5f227a['actionid']][_0x8d3a('0xd8')]||undefined,'CampaignId':this[_0x8d3a('0x22')][_0x5f227a['actionid']][_0x8d3a('0xd9')]||undefined})['catch'](loggerCatch(_0x8d3a('0x13d')));delete this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]];unlockQueueStatus(_0x4aa618);}}else{loggerBooked[_0x8d3a('0x7e')](_0x8d3a('0x13e'));this[_0x8d3a('0xb6')](this[_0x8d3a('0x1d')][this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xb7')]]);this[_0x8d3a('0xc2')]({'active':![],'ContactId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd6')],'ListId':this['actions'][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd7')],'VoiceQueueId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd8')]||undefined,'CampaignId':this[_0x8d3a('0x22')][_0x5f227a[_0x8d3a('0x128')]][_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x13f')));delete this['actions'][_0x5f227a[_0x8d3a('0x128')]];unlockQueueStatus(_0x4aa618);}};Dialer['prototype'][_0x8d3a('0x3b')]=function(){var _0x355730=this;setInterval(function(){_0x355730[_0x8d3a('0x140')]();},0x3e8);};Dialer['prototype'][_0x8d3a('0x141')]=function(_0xfa816a){var _0x4c1bb0=this;return function(){if(!_0x4c1bb0['isTrunkReachable'](_0xfa816a[_0x8d3a('0x77')])){if(!_0x4c1bb0[_0x8d3a('0xdc')](_0xfa816a[_0x8d3a('0x142')])){_0xfa816a[_0x8d3a('0x3d')]=_0x8d3a('0x143');throw _0xfa816a[_0x8d3a('0x3e')]+_0x8d3a('0x144');}}};};Dialer['prototype'][_0x8d3a('0x145')]=function(_0x746d50,_0x3c68a2,_0x406ff3,_0xef449d){var _0x5e323b=this;return function(){var _0x1930ff=!![];return _0x5e323b[_0x8d3a('0x146')](_0x746d50,_0x3c68a2,_0x406ff3,_0xef449d,_0x1930ff);};};Dialer['prototype'][_0x8d3a('0x147')]=function(_0x3a6935,_0x4ae83b,_0x9b6cf,_0x13d762){var _0x14d253=this;return function(){var _0x162450=![];return _0x14d253[_0x8d3a('0x146')](_0x3a6935[_0x8d3a('0x42')],_0x4ae83b,_0x9b6cf,_0x13d762,_0x162450);};};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x146')]=function(_0x5934e7,_0x309f14,_0x2eb8e5,_0x49236e,_0x45ecb0){var _0x53bc24=[];return new BPromise(function(_0x53bb5e,_0x22c7ef){if(!isNotNull(_0x5934e7)){_0x49236e[_0x8d3a('0x3d')]='INTERVAL_IS_NULL';return _0x22c7ef(msgResponse(_0x8d3a('0x146'),'Failure',_0x2eb8e5+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x8d3a('0x44')](_0x5934e7)){_0x49236e[_0x8d3a('0x3d')]=_0x8d3a('0x148');return _0x22c7ef(msgResponse(_0x8d3a('0x146'),_0x8d3a('0x149'),_0x2eb8e5+_0x8d3a('0x14a')));}if(_0x309f14&&_[_0x8d3a('0x86')](config['timezones'][_0x309f14])){_0x49236e[_0x8d3a('0x3d')]=_0x8d3a('0x14b');return _0x22c7ef(msgResponse('ifTime','Failure',_0x2eb8e5+_0x8d3a('0x14c')+_0x309f14));}if(_[_0x8d3a('0x14d')](_0x5934e7)){for(var _0x43119a=0x0;_0x43119a<_0x5934e7[_0x8d3a('0x9b')];_0x43119a+=0x1){_0x53bc24[_0x8d3a('0x12d')](ami[_0x8d3a('0xb3')]({'action':_0x8d3a('0x14e'),'command':util[_0x8d3a('0x7c')](_0x8d3a('0x14f'),_0x5934e7[_0x43119a][_0x8d3a('0x150')],!_[_0x8d3a('0x86')](config[_0x8d3a('0x151')][_0x309f14])?_0x309f14:'')})['then'](function(_0x61205c){return _0x61205c['content'][_0x8d3a('0x152')]('true')>=0x0;})[_0x8d3a('0xbb')](myreject(_0x22c7ef)));}}else{_0x53bc24[_0x8d3a('0x12d')](ami[_0x8d3a('0xb3')]({'action':_0x8d3a('0x14e'),'command':util['format'](_0x8d3a('0x14f'),_0x5934e7,!_['isUndefined'](config[_0x8d3a('0x151')][_0x309f14])?_0x309f14:'')})[_0x8d3a('0xba')](function(_0x208472){return _0x208472['content'][_0x8d3a('0x152')](_0x8d3a('0x153'))>=0x0;})[_0x8d3a('0xbb')](myreject(_0x22c7ef)));}BPromise[_0x8d3a('0x154')](_0x53bc24)[_0x8d3a('0xba')](function(_0x1d900c){var _0x241bdd=_['some'](_0x1d900c);if(_0x241bdd){return _0x53bb5e(_0x241bdd);}else{_0x49236e[_0x8d3a('0x3d')]=_0x45ecb0?_0x8d3a('0x155'):_0x8d3a('0x156');return _0x22c7ef(msgResponse('[ifTime][promiseAll]','Failure',_0x8d3a('0x157')+_0x45ecb0+'\x20'+_0x2eb8e5+_0x8d3a('0x158')+util[_0x8d3a('0x99')](_0x5934e7,{'showHidden':![],'depth':null})+_0x8d3a('0x159')+_0x309f14));}})['catch'](function(_0x54a9b7){return _0x22c7ef(msgResponse(_0x8d3a('0x146'),_0x8d3a('0x149'),JSON[_0x8d3a('0x47')](_0x54a9b7)));});});};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x15a')]=function(_0x52a88b){var _0x478bd4=this;return function(){switch(_0x52a88b[_0x8d3a('0x5a')]){case _0x8d3a('0x15b'):freeVariablesPredictive(_0x52a88b);_0x478bd4[_0x8d3a('0x15c')](_0x52a88b,0x1);break;case _0x8d3a('0x15d'):freeVariablesPredictive(_0x52a88b);_0x478bd4['handlePower'](_0x52a88b,_0x52a88b[_0x8d3a('0x15e')]);break;case _0x8d3a('0x15f'):_0x478bd4['predictive'](_0x52a88b);break;case _0x8d3a('0x7'):freeVariablesPredictive(_0x52a88b);_0x478bd4['handlePower'](_0x52a88b,0x1);break;default:freeVariablesPredictive(_0x52a88b);logger[_0x8d3a('0x98')](_0x8d3a('0x160'),_0x52a88b[_0x8d3a('0x3e')],_0x8d3a('0x161'));}};};Dialer[_0x8d3a('0xaf')]['launchHandleIvr']=function(_0x2a7204){var _0x11b235=this;return function(){_0x11b235[_0x8d3a('0x162')](_0x2a7204);};};Dialer[_0x8d3a('0xaf')][_0x8d3a('0xa')]=function(_0x59e658){var _0x4d861d=this;if(isNotPreview(_0x59e658[_0x8d3a('0x5a')])){if(isVoiceQueueOutbound(_0x59e658[_0x8d3a('0x4c')])&&isActive(_0x59e658['dialActive'])){_0x59e658[_0x8d3a('0xa5')]=!![];BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](checkIsLoggedIn(_0x59e658,_0x59e658[_0x8d3a('0x51')]))['then'](checkIsActive(_0x59e658,_0x59e658['dialActive']))[_0x8d3a('0xba')](checkInterval(_0x59e658))[_0x8d3a('0xba')](_0x4d861d[_0x8d3a('0x141')](_0x59e658))[_0x8d3a('0xba')](_0x4d861d[_0x8d3a('0x145')](_0x59e658[_0x8d3a('0x163')],_0x59e658[_0x8d3a('0x164')],_0x59e658[_0x8d3a('0x3e')],_0x59e658))[_0x8d3a('0xba')](_0x4d861d[_0x8d3a('0x147')](_0x59e658[_0x8d3a('0x40')],_0x59e658[_0x8d3a('0x164')],_0x59e658['name'],_0x59e658))[_0x8d3a('0xba')](_0x4d861d[_0x8d3a('0x15a')](_0x59e658))[_0x8d3a('0xbb')](loggerCatchQueueSummary(_0x8d3a('0x165'),_0x59e658));}else{notSendMessagesQueue(_0x59e658);}}else{freeVariablesPredictive(_0x59e658);}};Dialer['prototype'][_0x8d3a('0x140')]=function(){var _0xb3b6b4=this;var _0x2ee14f;for(var _0x443e31 in this[_0x8d3a('0x1e')]){if(typeof this[_0x8d3a('0x1e')][_0x443e31]!==_0x8d3a('0x9c')){_0x2ee14f=this['campaigns'][_0x443e31];if(isCampaignIvr(_0x2ee14f[_0x8d3a('0x4c')])&&isActive(_0x2ee14f[_0x8d3a('0x78')])){_0x2ee14f[_0x8d3a('0xa5')]=!![];BPromise[_0x8d3a('0xb9')]()[_0x8d3a('0xba')](checkIsActive(_0x2ee14f,_0x2ee14f['active']))[_0x8d3a('0xba')](checkInterval(_0x2ee14f))[_0x8d3a('0xba')](_0xb3b6b4[_0x8d3a('0x141')](_0x2ee14f))[_0x8d3a('0xba')](_0xb3b6b4[_0x8d3a('0x145')](_0x2ee14f[_0x8d3a('0x163')],_0x2ee14f[_0x8d3a('0x164')],_0x2ee14f[_0x8d3a('0x3e')],_0x2ee14f))['then'](_0xb3b6b4[_0x8d3a('0x147')](_0x2ee14f[_0x8d3a('0x40')],_0x2ee14f['dialTimezone'],_0x2ee14f[_0x8d3a('0x3e')],_0x2ee14f))[_0x8d3a('0xba')](_0xb3b6b4[_0x8d3a('0x166')](_0x2ee14f))[_0x8d3a('0xbb')](loggerCatchQueueSummary(_0x8d3a('0x167'),_0x2ee14f));}else{notSendMessagesCampaign(_0x2ee14f);}}}};function getCallerIdRandom(_0x4099a4,_0x57dd8e){var _0x21a121;var _0x28e0a1;var _0x2e45ec;if(_0x57dd8e<=0x0){_0x57dd8e=0x1;}_0x21a121=new RegExp(_0x8d3a('0x168')+_0x57dd8e+'}$');_0x28e0a1=Math[_0x8d3a('0x169')](0xa,_0x57dd8e-0x1);_0x2e45ec=Math[_0x8d3a('0x169')](0xa,_0x57dd8e)-0x1;return util[_0x8d3a('0x7c')]('%s',_[_0x8d3a('0x16a')](_0x4099a4,_0x21a121,_['random'](_0x28e0a1,_0x2e45ec)));}function extractCalleridName(_0x32620e){var _0x5f0c33=_0x32620e['match'](/"(.*?)"/);return _0x5f0c33?_0x5f0c33[0x1]:_0x32620e;}function extractCalleridNumber(_0x2f4db8){var _0x9750ce=_0x2f4db8[_0x8d3a('0x16b')](/<(.*?)>/);return _0x9750ce?_0x9750ce[0x1]:_0x2f4db8;}Dialer[_0x8d3a('0xaf')]['actionOriginate']=function(_0x5b8a16,_0xaabfb8){var _0x5d4507=this;var _0x2edadf=uuid['v4']();this[_0x8d3a('0x22')][_0x2edadf]=new Action(_0x5b8a16,_0xaabfb8,_0x2edadf);return new BPromise(function(_0x230b73,_0x558d6b){if(_[_0x8d3a('0x86')](_0x5b8a16)&&typeof _0x5b8a16!==_0x8d3a('0x16c')){return _0x558d6b(msgResponse('originate',_0x8d3a('0x149'),_0x8d3a('0x16d')));}if(_['isUndefined'](_0xaabfb8[_0x8d3a('0x16e')][_0x8d3a('0x16f')])||_0xaabfb8[_0x8d3a('0x16e')][_0x8d3a('0x16f')]===null){return _0x558d6b(msgResponse(_0x8d3a('0x170'),_0x8d3a('0x149'),_0x8d3a('0x171')));}var _0x484549={'XMD-CALLERID':_0x5d4507[_0x8d3a('0x22')][_0x2edadf][_0x8d3a('0x172')](),'XMD-AGI':_0x5b8a16['dialQueueProject']?util[_0x8d3a('0x7c')](_0x8d3a('0x173'),ipAgi,_0x5b8a16[_0x8d3a('0x108')]):'NONE','XMD-AGIAFTER':_0x5b8a16[_0x8d3a('0x10f')]?util[_0x8d3a('0x7c')]('\x22agi://%s/square,%s\x22',ipAgi,_0x5b8a16[_0x8d3a('0x10f')]):'NONE','XMD-QUEUE':_0x5b8a16[_0x8d3a('0x4c')]===_0x8d3a('0x4d')?util['format'](_0x8d3a('0x174'),_0x5b8a16[_0x8d3a('0x3e')],_0x5b8a16['dialQueueOptions']||'',_0x5b8a16['dialAgiAfterHangupAgent']?'c':'',_0x5b8a16['dialQueueTimeout']||0x3):'NONE','XMD-CONTACTID':_0xaabfb8[_0x8d3a('0xd6')],'XMD-CDRTYPE':_0x8d3a('0x175'),'CALLERID(all)':_0x5d4507[_0x8d3a('0x22')][_0x2edadf]['getCaller'](),'XMD-AMD':_0x5b8a16[_0x8d3a('0xe5')]?_0x8d3a('0x176'):_0x8d3a('0x177'),'XMD-DESTINATION':_0x8d3a('0xe4')};if(_0x5b8a16[_0x8d3a('0xe5')]){_0x484549[_0x8d3a('0x178')]=_0x5b8a16['dialAMDInitialSilence']||0x9c4;_0x484549['XMD-AMDGREETING']=_0x5b8a16['dialAMDGreeting']||0x5dc;_0x484549[_0x8d3a('0x179')]=_0x5b8a16[_0x8d3a('0x17a')]||0x320;_0x484549[_0x8d3a('0x17b')]=_0x5b8a16['dialAMDTotalAnalysisTime']||0x1388;_0x484549['XMD-AMDMINWORDLENGTH']=_0x5b8a16[_0x8d3a('0x17c')]||0x64;_0x484549[_0x8d3a('0x17d')]=_0x5b8a16[_0x8d3a('0x17e')]||0x32;_0x484549[_0x8d3a('0x17f')]=_0x5b8a16[_0x8d3a('0x180')]||0x3;_0x484549[_0x8d3a('0x181')]=_0x5b8a16[_0x8d3a('0x182')]||0x100;_0x484549[_0x8d3a('0x183')]=_0x5b8a16['dialAMDMaximumWordLength']||0x1388;}if(_0x5b8a16[_0x8d3a('0x4c')]==='outbound'){_0x484549[_0x8d3a('0x184')]=_0xaabfb8[_0x8d3a('0xd8')];}else{_0x484549[_0x8d3a('0x185')]=_0xaabfb8[_0x8d3a('0xd9')];}for(var _0x5b0ad6 in _0xaabfb8['Contact']){if(typeof _0xaabfb8[_0x8d3a('0x16e')][_0x5b0ad6]!==_0x8d3a('0x9c')){if(isNotNull(_0xaabfb8[_0x8d3a('0x16e')][_0x5b0ad6])&&_0x5b0ad6!=='id'&&_0x5b0ad6!==_0x8d3a('0x186')&&_0x5b0ad6!==_0x8d3a('0x187')&&_0x5b0ad6!=='updatedAt'){_0x484549[util[_0x8d3a('0x7c')](_0x8d3a('0x188'),_0x8d3a('0x189'),_['toUpper'](_0x5b0ad6))]=_0xaabfb8[_0x8d3a('0x16e')][_0x5b0ad6];}}}var _0x415dc5=_0x5d4507[_0x8d3a('0xdc')](_0x5b8a16[_0x8d3a('0x77')])?getCallerId(_0x5b8a16[_0x8d3a('0x77')][_0x8d3a('0x79')],_0x5b8a16[_0x8d3a('0x5b')],_0x5b8a16[_0x8d3a('0x18a')]>0x0?getCallerIdRandom(_0x5b8a16[_0x8d3a('0x5c')],_0x5b8a16[_0x8d3a('0x18a')]):_0x5b8a16['dialOriginateCallerIdNumber']):getCallerId(_[_0x8d3a('0xb2')](_0x5b8a16[_0x8d3a('0x142')])?_0x5b8a16[_0x8d3a('0x77')][_0x8d3a('0x79')]:_0x5b8a16['TrunkBackup'][_0x8d3a('0x79')],_0x5b8a16[_0x8d3a('0x5b')],_0x5b8a16[_0x8d3a('0x18a')]>0x0?getCallerIdRandom(_0x5b8a16['dialOriginateCallerIdNumber'],_0x5b8a16[_0x8d3a('0x18a')]):_0x5b8a16[_0x8d3a('0x5c')]);if(_0x415dc5){_0x484549[_0x8d3a('0x18b')]=_0x5d4507['actions'][_0x2edadf][_0x8d3a('0x18c')]=extractCalleridName(_0x415dc5);_0x484549[_0x8d3a('0x18d')]=_0x5d4507[_0x8d3a('0x22')][_0x2edadf][_0x8d3a('0x18e')]=extractCalleridNumber(_0x415dc5);}return ami[_0x8d3a('0xb3')]({'actionid':_0x2edadf,'action':_0x8d3a('0x170'),'channel':_0x5d4507[_0x8d3a('0xdc')](_0x5b8a16[_0x8d3a('0x77')])?util[_0x8d3a('0x7c')](_0x8d3a('0x18f'),_0x5b8a16[_0x8d3a('0x77')]['name'],isNotNull(_0x5b8a16['dialPrefix'])?_0x5b8a16[_0x8d3a('0x5e')]['trim']()||'':'',_0x5b8a16['dialCutDigit']>0x0?_0xaabfb8['Contact'][_0x8d3a('0x16f')]['substring'](_0x5b8a16[_0x8d3a('0x190')]):_0xaabfb8['Contact'][_0x8d3a('0x16f')]):util['format'](_0x8d3a('0x18f'),_[_0x8d3a('0xb2')](_0x5b8a16[_0x8d3a('0x142')])?_0x5b8a16[_0x8d3a('0x77')][_0x8d3a('0x3e')]:_0x5b8a16[_0x8d3a('0x142')][_0x8d3a('0x3e')],isNotNull(_0x5b8a16['dialPrefix'])?_0x5b8a16['dialPrefix'][_0x8d3a('0x191')]()||'':'',_0x5b8a16[_0x8d3a('0x190')]>0x0?_0xaabfb8[_0x8d3a('0x16e')][_0x8d3a('0x16f')][_0x8d3a('0x192')](_0x5b8a16[_0x8d3a('0x190')]):_0xaabfb8['Contact'][_0x8d3a('0x16f')]),'callerid':_0x415dc5,'Exten':_0x8d3a('0xe4'),'Context':_0x8d3a('0x193'),'Priority':'1','variable':_0x484549,'timeout':(_0x5b8a16[_0x8d3a('0x5d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2edadf})[_0x8d3a('0xba')](function(_0x318fac){return _0x230b73(_0x318fac);})['catch'](function(_0x516392){_0x5b8a16['outboundOriginateFailureCallsDay']+=0x1;var _0x283a84=new History(_0x5d4507[_0x8d3a('0x22')][_0x2edadf]);logger['error'](util[_0x8d3a('0x7c')]('[originateError]:\x20%s',JSON[_0x8d3a('0x47')](_0x516392)));_0x283a84['state']=0xe;_0x283a84['statedesc']=_0x8d3a('0x194');_0x283a84[_0x8d3a('0xae')]=moment()[_0x8d3a('0x7c')](_0x8d3a('0x111'));_0x283a84[_0x8d3a('0xad')]=_0x283a84[_0x8d3a('0xae')];_0x5d4507[_0x8d3a('0xce')](_0x283a84)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x195')));_0x5d4507[_0x8d3a('0xcc')](_0x283a84)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x195')))['finally'](function(){delete _0x5d4507[_0x8d3a('0x22')][_0x2edadf];return _0x558d6b(msgResponse(_0x8d3a('0x170'),_0x8d3a('0x46'),_0x8d3a('0x196')));});});});};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x2f')]=function(_0x2ff561){var _0xaf250f=this[_0x8d3a('0x22')][_0x2ff561[_0x8d3a('0x128')]];if(_0xaf250f){delete this[_0x8d3a('0x22')][_0x2ff561[_0x8d3a('0x128')]];_0xaf250f[_0x8d3a('0x118')]=moment()[_0x8d3a('0x7c')](_0x8d3a('0x111'));var _0xf7eba1=_0xaf250f['type']===_0x8d3a('0x7b')?this[_0x8d3a('0x1e')][_0xaf250f[_0x8d3a('0xb7')]]:this['voiceQueues'][_0xaf250f[_0x8d3a('0x197')]()];if(!this[_0x8d3a('0xdb')](_0x2ff561['response'])){this[_0x8d3a('0xb6')](_0xf7eba1);return this[_0x8d3a('0x198')](_0xaf250f,_0xf7eba1,_0x2ff561)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x199')));}this[_0x8d3a('0x24')][_0x2ff561[_0x8d3a('0xe2')]]=_0xaf250f;}};Dialer['prototype'][_0x8d3a('0x19a')]=function(_0x3a5769,_0x5c0824,_0x377d9a){var _0x2a15ac=new History(_0x5c0824);if(_0x2a15ac[_0x8d3a('0xf3')]+_0x2a15ac[_0x8d3a('0x19b')]+_0x2a15ac[_0x8d3a('0xf4')]+_0x2a15ac[_0x8d3a('0xf5')]+_0x2a15ac['countdropretry']+_0x2a15ac['countabandonedretry']+_0x2a15ac[_0x8d3a('0xf8')]+_0x2a15ac['countagentrejectretry']>=_0x377d9a[_0x8d3a('0xfa')]-0x1){return!![];}switch(_0x3a5769){case 0x3:if(_0x2a15ac[_0x8d3a('0xf4')]>=_0x377d9a[_0x8d3a('0x19c')]-0x1){return!![];}this[_0x8d3a('0xc2')]({'active':![],'countnoanswerretry':_0x2a15ac[_0x8d3a('0xf4')]+=0x1,'scheduledat':moment()[_0x8d3a('0x100')](_0x377d9a[_0x8d3a('0x19d')],_0x8d3a('0x102'))[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x2a15ac[_0x8d3a('0xd6')],'ListId':_0x2a15ac[_0x8d3a('0xd7')],'VoiceQueueId':_0x2a15ac['VoiceQueueId']||undefined,'CampaignId':_0x2a15ac['CampaignId']||undefined})[_0x8d3a('0xbb')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x2a15ac[_0x8d3a('0xf3')]>=_0x377d9a[_0x8d3a('0x19e')]-0x1){return!![];}this[_0x8d3a('0xc2')]({'active':![],'countbusyretry':_0x2a15ac[_0x8d3a('0xf3')]+=0x1,'scheduledat':moment()[_0x8d3a('0x100')](_0x377d9a[_0x8d3a('0x19f')],_0x8d3a('0x102'))[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x2a15ac[_0x8d3a('0xd6')],'ListId':_0x2a15ac[_0x8d3a('0xd7')],'VoiceQueueId':_0x2a15ac[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x2a15ac[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x2a15ac[_0x8d3a('0x19b')]>=_0x377d9a[_0x8d3a('0x1a0')]-0x1){return!![];}this[_0x8d3a('0xc2')]({'active':![],'countcongestionretry':_0x2a15ac[_0x8d3a('0x19b')]+=0x1,'scheduledat':moment()[_0x8d3a('0x100')](_0x377d9a[_0x8d3a('0x1a1')],_0x8d3a('0x102'))[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x2a15ac['ContactId'],'ListId':_0x2a15ac[_0x8d3a('0xd7')],'VoiceQueueId':_0x2a15ac['VoiceQueueId']||undefined,'CampaignId':_0x2a15ac[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x2a15ac[_0x8d3a('0xf5')]>=_0x377d9a[_0x8d3a('0x1a2')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x2a15ac[_0x8d3a('0xf5')]+=0x1,'scheduledat':moment()['add'](_0x377d9a[_0x8d3a('0x1a3')],_0x8d3a('0x102'))[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x2a15ac[_0x8d3a('0xd6')],'ListId':_0x2a15ac[_0x8d3a('0xd7')],'VoiceQueueId':_0x2a15ac[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x2a15ac[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x1a4')));}break;case 0xa:if(_0x2a15ac[_0x8d3a('0xf6')]>=_0x377d9a['dialDropMaxRetry']-0x1){return!![];}this[_0x8d3a('0xc2')]({'active':![],'countdropretry':_0x2a15ac[_0x8d3a('0xf6')]+=0x1,'scheduledat':moment()[_0x8d3a('0x100')](_0x377d9a[_0x8d3a('0x11d')],_0x8d3a('0x102'))['format'](_0x8d3a('0x111')),'ContactId':_0x2a15ac[_0x8d3a('0xd6')],'ListId':_0x2a15ac[_0x8d3a('0xd7')],'VoiceQueueId':_0x2a15ac[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x2a15ac[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x11e')));break;case 0xb:if(_0x2a15ac[_0x8d3a('0xf7')]>=_0x377d9a[_0x8d3a('0x124')]-0x1){return!![];}this[_0x8d3a('0xc2')]({'active':![],'countabandonedretry':_0x2a15ac[_0x8d3a('0xf7')]+=0x1,'scheduledat':moment()[_0x8d3a('0x100')](_0x377d9a[_0x8d3a('0x125')],_0x8d3a('0x102'))['format'](_0x8d3a('0x111')),'ContactId':_0x2a15ac[_0x8d3a('0xd6')],'ListId':_0x2a15ac['ListId'],'VoiceQueueId':_0x2a15ac['VoiceQueueId']||undefined,'CampaignId':_0x2a15ac[_0x8d3a('0xd9')]||undefined})['catch'](loggerCatch(_0x8d3a('0x126')));break;case 0x13:if(_0x2a15ac[_0x8d3a('0xf8')]>=_0x377d9a[_0x8d3a('0xfd')]-0x1){return!![];}this[_0x8d3a('0xc2')]({'active':![],'countmachineretry':_0x2a15ac[_0x8d3a('0xf8')]+=0x1,'scheduledat':moment()[_0x8d3a('0x100')](_0x377d9a[_0x8d3a('0x101')],'minutes')[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x2a15ac[_0x8d3a('0xd6')],'ListId':_0x2a15ac[_0x8d3a('0xd7')],'VoiceQueueId':_0x2a15ac[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x2a15ac['CampaignId']||undefined})['catch'](loggerCatch(_0x8d3a('0x103')));break;case 0x14:if(_0x2a15ac[_0x8d3a('0xf9')]>=_0x377d9a[_0x8d3a('0x1a5')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x2a15ac[_0x8d3a('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x377d9a[_0x8d3a('0x1a6')],_0x8d3a('0x102'))[_0x8d3a('0x7c')](_0x8d3a('0x111')),'ContactId':_0x2a15ac[_0x8d3a('0xd6')],'ListId':_0x2a15ac[_0x8d3a('0xd7')],'VoiceQueueId':_0x2a15ac['VoiceQueueId']||undefined,'CampaignId':_0x2a15ac[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer['prototype']['callProgressDetecting']=function(_0x39b1b1,_0x2f7fe8,_0x34d92e){var _0x5945a6=this;var _0x1be852=new History(_0x39b1b1);return new BPromise(function(_0x55fc32,_0x108d9a){if(_[_0x8d3a('0x86')](_0x2f7fe8)&&typeof _0x2f7fe8!==_0x8d3a('0x16c')){return _0x108d9a(msgResponse(_0x8d3a('0x1a7'),_0x8d3a('0x149'),_0x8d3a('0x1a8')));}if(_[_0x8d3a('0x86')](_0x34d92e)&&typeof _0x34d92e!=='object'){return _0x108d9a(msgResponse(_0x8d3a('0x1a7'),_0x8d3a('0x149'),_0x8d3a('0x1a9')));}switch(_0x34d92e[_0x8d3a('0x1aa')]){case'0':_0x2f7fe8[_0x8d3a('0x66')]+=0x1;_0x1be852[_0x8d3a('0xab')]=0x0;_0x1be852['statedesc']=_0x8d3a('0x1ab');_0x1be852[_0x8d3a('0xf5')]+=0x1;_0x1be852[_0x8d3a('0xf1')]+=0x1;ami[_0x8d3a('0x4b')](_0x8d3a('0x1ac'),ut[_0x8d3a('0xea')](_0x39b1b1,_0x8d3a('0x1ad')));_0x5945a6[_0x8d3a('0xce')](_0x1be852)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xf2')));if(_0x5945a6[_0x8d3a('0x19a')](0x0,_0x39b1b1,_0x2f7fe8)){if(_0x1be852['countnosuchnumberretry']>=_0x2f7fe8[_0x8d3a('0x1a2')]){_0x5945a6[_0x8d3a('0xfe')](_0x1be852,_0x55fc32,_0x108d9a,'reason\x200\x20no\x20such\x20number....');}else{_0x5945a6[_0x8d3a('0xfb')](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1ae'));}}break;case'3':_0x2f7fe8['outboundNoAnswerCallsDay']+=0x1;_0x1be852[_0x8d3a('0xab')]=0x3;_0x1be852[_0x8d3a('0xac')]=_0x8d3a('0x1af');_0x1be852[_0x8d3a('0xf4')]+=0x1;_0x1be852['countglobal']+=0x1;ami[_0x8d3a('0x4b')]('custom:agentnoanswer',ut['buildObj'](_0x39b1b1,_0x8d3a('0x1b0')));_0x5945a6[_0x8d3a('0xce')](_0x1be852)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x1b1')));if(_0x5945a6[_0x8d3a('0x19a')](0x3,_0x39b1b1,_0x2f7fe8)){if(_0x1be852[_0x8d3a('0xf4')]>=_0x2f7fe8['dialNoAnswerMaxRetry']){_0x5945a6[_0x8d3a('0xfe')](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1b2'));}else{_0x5945a6[_0x8d3a('0xfb')](_0x1be852,_0x55fc32,_0x108d9a,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x2f7fe8[_0x8d3a('0x62')]+=0x1;_0x1be852[_0x8d3a('0xab')]=0x5;_0x1be852['statedesc']=_0x8d3a('0x1b3');_0x1be852[_0x8d3a('0xf3')]+=0x1;_0x1be852[_0x8d3a('0xf1')]+=0x1;ami['emit'](_0x8d3a('0x1b4'),ut[_0x8d3a('0xea')](_0x39b1b1,_0x8d3a('0x1b5')));_0x5945a6[_0x8d3a('0xce')](_0x1be852)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x1b6')));if(_0x5945a6['checkRetriveMax'](0x5,_0x39b1b1,_0x2f7fe8)){if(_0x1be852['countbusyretry']>=_0x2f7fe8[_0x8d3a('0x19e')]){_0x5945a6[_0x8d3a('0xfe')](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1b7'));}else{_0x5945a6['stateGlobal'](_0x1be852,_0x55fc32,_0x108d9a,'reason\x205\x20busy');}}break;case'8':_0x2f7fe8[_0x8d3a('0x1b8')]+=0x1;_0x1be852[_0x8d3a('0xab')]=0x8;_0x1be852[_0x8d3a('0xac')]=_0x8d3a('0x1b9');_0x1be852[_0x8d3a('0x19b')]+=0x1;_0x1be852[_0x8d3a('0xf1')]+=0x1;ami[_0x8d3a('0x4b')]('custom:agentcongestion',ut['buildObj'](_0x39b1b1,'congestion'));_0x5945a6[_0x8d3a('0xce')](_0x1be852)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x1ba')));if(_0x5945a6[_0x8d3a('0x19a')](0x8,_0x39b1b1,_0x2f7fe8)){if(_0x1be852[_0x8d3a('0x19b')]>=_0x2f7fe8[_0x8d3a('0x1a0')]){_0x5945a6[_0x8d3a('0xfe')](_0x1be852,_0x55fc32,_0x108d9a,'reason\x208\x20congestion');}else{_0x5945a6[_0x8d3a('0xfb')](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1bb'));}}break;case'11':_0x2f7fe8[_0x8d3a('0x1bc')]+=0x1;_0x1be852[_0x8d3a('0xab')]=0xb;_0x1be852[_0x8d3a('0xac')]='Abandoned';_0x1be852[_0x8d3a('0xf7')]+=0x1;_0x1be852[_0x8d3a('0xf1')]+=0x1;_0x5945a6[_0x8d3a('0xce')](_0x1be852)['catch'](loggerCatch(_0x8d3a('0x127')));if(_0x5945a6['checkRetriveMax'](0xb,_0x39b1b1,_0x2f7fe8)){if(_0x1be852[_0x8d3a('0xf7')]>=_0x2f7fe8[_0x8d3a('0x124')]){_0x5945a6['createStateFinal'](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1bd'));}else{_0x5945a6[_0x8d3a('0xfb')](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1bd'));}}break;case'20':_0x2f7fe8[_0x8d3a('0x1be')]+=0x1;_0x1be852['state']=0x14;_0x1be852[_0x8d3a('0xac')]=_0x8d3a('0x1bf');_0x1be852[_0x8d3a('0xf9')]+=0x1;_0x1be852['countglobal']+=0x1;ami[_0x8d3a('0x4b')](_0x8d3a('0x1c0'),ut['buildObj'](_0x39b1b1,_0x8d3a('0x1c1')));_0x5945a6[_0x8d3a('0xce')](_0x1be852)[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x1c2')));if(_0x5945a6[_0x8d3a('0x19a')](0x14,_0x39b1b1,_0x2f7fe8)){if(_0x1be852[_0x8d3a('0xf9')]>=_0x2f7fe8[_0x8d3a('0x1a5')]){_0x5945a6[_0x8d3a('0xfe')](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1c3'));}else{_0x5945a6[_0x8d3a('0xfb')](_0x1be852,_0x55fc32,_0x108d9a,_0x8d3a('0x1c3'));}}break;default:_0x2f7fe8['outboundUnknownCallsDay']+=0x1;_0x1be852[_0x8d3a('0xab')]=0xc;_0x1be852['statedesc']=_0x34d92e[_0x8d3a('0x1aa')];_0x5945a6[_0x8d3a('0xce')](_0x1be852)['catch'](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x5945a6[_0x8d3a('0x19a')](_0x34d92e['reason'],_0x39b1b1,_0x2f7fe8)){if(_0x1be852[_0x8d3a('0xf3')]+_0x1be852['countcongestionretry']+_0x1be852[_0x8d3a('0xf4')]+_0x1be852[_0x8d3a('0xf5')]+_0x1be852[_0x8d3a('0xf6')]+_0x1be852['countabandonedretry']+_0x1be852['countmachineretry']+_0x1be852['countagentrejectretry']>=_0x2f7fe8[_0x8d3a('0xfa')]){_0x5945a6[_0x8d3a('0xfb')](_0x1be852,_0x55fc32,_0x108d9a,_0x34d92e[_0x8d3a('0x1aa')]);}else{_0x5945a6[_0x8d3a('0xfe')](_0x1be852,_0x55fc32,_0x108d9a,_0x34d92e[_0x8d3a('0x1aa')]);}}}});};Dialer['prototype'][_0x8d3a('0xfb')]=function(_0x3dec7f,_0x1a7021,_0x3783f6,_0x1fafbb){var _0x2fdfc3=new Final(_0x3dec7f);_0x2fdfc3[_0x8d3a('0xab')]=0xf;_0x2fdfc3[_0x8d3a('0xac')]=_0x8d3a('0x1c4');this[_0x8d3a('0xfe')](_0x2fdfc3,_0x1a7021,_0x3783f6,_0x1fafbb);};Dialer['prototype'][_0x8d3a('0xfe')]=function(_0x459144,_0x24416f,_0x4f2869,_0x1303c7){this[_0x8d3a('0xcc')](_0x459144)['then'](function(){return _0x24416f(msgResponse(_0x8d3a('0x1a7'),'Success',_0x1303c7));})[_0x8d3a('0xbb')](function(){return _0x4f2869(msgResponse('[moveContactManagedDialer][0]',_0x8d3a('0x149'),_0x8d3a('0x1c5')));});};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x15f')]=function(_0xe9eae4){var _0x31c3b6=_0xe9eae4[_0x8d3a('0x1c6')]/0x64;var _0x39e54e=_0xe9eae4[_0x8d3a('0x65')]/(_0xe9eae4[_0x8d3a('0x65')]+_0xe9eae4[_0x8d3a('0x60')]);var _0x124613=Math[_0x8d3a('0x1c7')](_0xe9eae4[_0x8d3a('0x1c8')]*(_0xe9eae4[_0x8d3a('0x1c9')]/0x64));var _0x18c8ac=Math[_0x8d3a('0x1c7')](_0xe9eae4['predictiveIntervalAvailable']*(_0xe9eae4['predictiveIntervalMinThreshold']/0x64));var _0x3e1563=_0xe9eae4[_0x8d3a('0x50')]+_0xe9eae4[_0x8d3a('0x54')];var _0x5b664f=Math[_0x8d3a('0x1ca')](_0xe9eae4['erlangCalls']*_0xe9eae4[_0x8d3a('0x75')]*_0xe9eae4[_0x8d3a('0x6f')]*_0xe9eae4['predictiveIntervalMultiplicativeFactor']);if(_[_0x8d3a('0x86')](_0xe9eae4[_0x8d3a('0x27')])){if(!_[_0x8d3a('0x86')](_0xe9eae4[_0x8d3a('0x26')])){_0xe9eae4[_0x8d3a('0x26')]=undefined;loggerPredictive[_0x8d3a('0x98')](_0x8d3a('0x1cb'),_0x8d3a('0x1cc'));}if(!_[_0x8d3a('0x86')](_0xe9eae4[_0x8d3a('0x92')])){loggerPredictive[_0x8d3a('0x98')](_0x8d3a('0x1cb'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0xe9eae4[_0x8d3a('0x92')]);_0xe9eae4[_0x8d3a('0x92')]=undefined;}_0xe9eae4[_0x8d3a('0x27')]=moment()[_0x8d3a('0x7c')](_0x8d3a('0x111'));loggerPredictive[_0x8d3a('0x7e')](_0xe9eae4['name'],_0x8d3a('0x1cd'),_0xe9eae4[_0x8d3a('0x27')]);this[_0x8d3a('0x15c')](_0xe9eae4,0x1);}else if(ifInterval(_0xe9eae4[_0x8d3a('0x1ce')],_0xe9eae4['startProgressive'])){this[_0x8d3a('0x15c')](_0xe9eae4,0x1);loggerPredictiveCalls[_0x8d3a('0x7e')](_0x8d3a('0x1cf'),_0xe9eae4[_0x8d3a('0x27')],_0xe9eae4[_0x8d3a('0x3e')]);_0xe9eae4['erlangCalls']=0x0;_0xe9eae4[_0x8d3a('0x6e')]=0x0;}else if(_0x31c3b6<_0x39e54e&&_0xe9eae4[_0x8d3a('0x1d0')]===_0x8d3a('0x1d1')){freeVariablesPredictive(_0xe9eae4);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x1d2'),'Dropped\x20calls\x20day',_0x39e54e,_0x8d3a('0x27'),_0xe9eae4[_0x8d3a('0x3e')]);}else if(_0x5b664f<_0xe9eae4['predictiveIntervalErlangCallsDroppedCalls']&&_0xe9eae4[_0x8d3a('0x1d0')]===_0x8d3a('0x1d1')){freeVariablesPredictive(_0xe9eae4);loggerPredictive['info'](_0x8d3a('0x1d3'),_0x8d3a('0x1d4'),_0x5b664f,_0x8d3a('0x1d5'),_0xe9eae4['predictiveIntervalErlangCallsDroppedCalls'],_0x8d3a('0x27'),_0xe9eae4[_0x8d3a('0x3e')]);}else if(!ifInterval(_0xe9eae4[_0x8d3a('0x1ce')],_0xe9eae4[_0x8d3a('0x27')])&&_[_0x8d3a('0x86')](_0xe9eae4[_0x8d3a('0x26')])&&!_[_0x8d3a('0x86')](_0xe9eae4['startProgressive'])){_0xe9eae4[_0x8d3a('0x26')]=moment()[_0x8d3a('0x7c')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x8d3a('0x7e')](_0xe9eae4[_0x8d3a('0x3e')],_0x8d3a('0x1d6'),_0xe9eae4[_0x8d3a('0x26')]);this[_0x8d3a('0xbf')](_0xe9eae4[_0x8d3a('0x1ce')])[_0x8d3a('0xba')](this[_0x8d3a('0x1d7')](_0xe9eae4))[_0x8d3a('0xba')](mergeDataErlangB(_0xe9eae4))[_0x8d3a('0xba')](this[_0x8d3a('0x1d8')](_0xe9eae4))[_0x8d3a('0xbb')](loggerCatchPredictive(_0x8d3a('0x1d9'),_0xe9eae4));}else if(!ifInterval(_0xe9eae4[_0x8d3a('0x1ce')],_0xe9eae4['startPredictive'])){_0xe9eae4[_0x8d3a('0x6e')]=0x0;_0xe9eae4[_0x8d3a('0x26')]=moment()[_0x8d3a('0x7c')](_0x8d3a('0x111'));loggerPredictive[_0x8d3a('0x7e')](_0xe9eae4['name'],'recalculate\x20predictive\x20at',_0xe9eae4[_0x8d3a('0x26')]);clearInterval(_0xe9eae4[_0x8d3a('0x92')]);_0xe9eae4[_0x8d3a('0x92')]=undefined;this['averageHandleTime'](_0xe9eae4[_0x8d3a('0x1ce')])['then'](this['getDataPredictive'](_0xe9eae4))[_0x8d3a('0xba')](mergeDataErlangB(_0xe9eae4))['then'](this['startMethodPredictive'](_0xe9eae4))['catch'](loggerCatchPredictive(_0x8d3a('0x1da'),_0xe9eae4));}else if(_0xe9eae4[_0x8d3a('0x1c8')]&&_0x3e1563<_0xe9eae4[_0x8d3a('0x1c8')]-_0x18c8ac){freeVariablesPredictive(_0xe9eae4);loggerPredictive[_0x8d3a('0x7e')](_0xe9eae4[_0x8d3a('0x3e')],_0x8d3a('0x1db'),_0x3e1563,_0x8d3a('0x1dc'),_0xe9eae4[_0x8d3a('0x1c8')],'-',_0x18c8ac,'=',_0xe9eae4['predictiveIntervalAvailable']-_0x18c8ac,')');}else if(_0xe9eae4[_0x8d3a('0x1c8')]&&_0x3e1563>_0xe9eae4[_0x8d3a('0x1c8')]+_0x124613){freeVariablesPredictive(_0xe9eae4);loggerPredictive[_0x8d3a('0x7e')](_0xe9eae4['name'],_0x8d3a('0x1db'),_0x3e1563,')\x20are\x20more\x20than\x20threshold\x20(',_0xe9eae4[_0x8d3a('0x1c8')],'+',_0x124613,'=',_0xe9eae4[_0x8d3a('0x1c8')]+_0x124613,')');}};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x1d7')]=function(_0x3aeb30){var _0x457948=this;return function(_0x532ec6){return new BPromise(function(_0x46a2f0,_0x3f4909){_['merge'](_0x3aeb30,_0x532ec6[0x0]);if(checkGetDataPredictive(_0x532ec6[0x0])){var _0x263d05=_0x3aeb30[_0x8d3a('0x1c8')]=_0x3aeb30[_0x8d3a('0x54')]+_0x3aeb30['available'];var _0x52cd1f=_0x3aeb30[_0x8d3a('0x1ce')]*0x3c;var _0x4f5ab0=_0x532ec6[0x0][_0x8d3a('0x6b')]+_0x532ec6[0x0][_0x8d3a('0x6a')];var _0x821955=(_0x532ec6[0x0][_0x8d3a('0x69')]+_0x532ec6[0x0][_0x8d3a('0x6d')]+_0x532ec6[0x0][_0x8d3a('0x6c')])/_0x532ec6[0x0][_0x8d3a('0x81')];_0x3aeb30[_0x8d3a('0x6f')]=_0x821955>0x0?_0x821955:0x1;switch(_0x3aeb30[_0x8d3a('0x1d0')]){case _0x8d3a('0x1d1'):var _0x18c835=_0x3aeb30[_0x8d3a('0x1c6')]/0x64;return _0x457948[_0x8d3a('0x1dd')](_0x263d05,_0x52cd1f,_0x4f5ab0,_0x821955,_0x18c835)[_0x8d3a('0xba')](function(_0x55cc98){return _0x46a2f0(_0x55cc98);});case'agentBusyFactor':var _0x67fc6=_0x3aeb30[_0x8d3a('0x1c6')]/0x64;return _0x457948['busyFactor'](_0x263d05,_0x52cd1f,_0x4f5ab0,_0x821955,_0x67fc6)[_0x8d3a('0xba')](function(_0x46393a){return _0x46a2f0(_0x46393a);});default:return _0x3f4909(msgResponse(_0x8d3a('0x1de'),_0x8d3a('0x149'),_0x8d3a('0x1df')));}}else{return _0x3f4909(msgResponse(_0x8d3a('0x1de'),_0x8d3a('0x149'),_0x8d3a('0x1e0')));}});};};Dialer[_0x8d3a('0xaf')]['getDataPredictiveOld']=function(_0x2b322a){var _0x121d8d=this;return function(_0x38f25f){return new BPromise(function(_0x1bf95a,_0x370bd3){_[_0x8d3a('0xd4')](_0x2b322a,_0x38f25f[0x0]);if(checkGetDataPredictive(_0x38f25f[0x0])){loggerPredictive[_0x8d3a('0x7e')](JSON['stringify'](_0x38f25f[0x0]));if(_0x2b322a[_0x8d3a('0x1d0')]===_0x8d3a('0x1d1')){return _0x121d8d[_0x8d3a('0xca')](_0x2b322a['id'])[_0x8d3a('0xba')](function(_0x4312d4){var _0x354ee7=_0x2b322a[_0x8d3a('0x51')]-_0x4312d4[0x0][_0x8d3a('0x1e1')];var _0x244e3d=_0x2b322a[_0x8d3a('0x1ce')]*0x3c;var _0x5d69cf=_0x38f25f[0x0]['predictiveIntervalAvgTalktime']+_0x38f25f[0x0][_0x8d3a('0x6a')];var _0x3a56bf=(_0x38f25f[0x0][_0x8d3a('0x69')]+_0x38f25f[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x38f25f[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x38f25f[0x0][_0x8d3a('0x81')];var _0x4d2ebd=_0x2b322a[_0x8d3a('0x1c6')]/0x64;_0x2b322a[_0x8d3a('0x71')]=_0x4312d4[0x0][_0x8d3a('0x1e1')]||0x0;_0x2b322a[_0x8d3a('0x6f')]=_0x3a56bf>0x0?_0x3a56bf:0x1;return _0x121d8d['abandonmentRate'](_0x354ee7,_0x244e3d,_0x5d69cf,_0x3a56bf,_0x4d2ebd);})[_0x8d3a('0xba')](function(_0x12e865){return _0x1bf95a(_0x12e865);})[_0x8d3a('0xbb')](function(_0x21f938){return _0x370bd3(msgResponse(_0x8d3a('0x1e2'),_0x8d3a('0x149'),JSON[_0x8d3a('0x47')](_0x21f938)));});}if(_0x2b322a[_0x8d3a('0x1d0')]===_0x8d3a('0x1e3')){return _0x121d8d[_0x8d3a('0xca')](_0x2b322a['id'])[_0x8d3a('0xba')](function(_0xe78c76){var _0x34b05e=_0x2b322a[_0x8d3a('0x51')]-_0xe78c76[0x0]['outboundQueuePauses'];var _0x57bd61=_0x2b322a[_0x8d3a('0x1ce')]*0x3c;var _0x5d603f=_0x38f25f[0x0][_0x8d3a('0x6b')]+_0x38f25f[0x0][_0x8d3a('0x6a')];var _0x58da07=(_0x38f25f[0x0][_0x8d3a('0x69')]+_0x38f25f[0x0][_0x8d3a('0x6d')]+_0x38f25f[0x0][_0x8d3a('0x6c')])/_0x38f25f[0x0][_0x8d3a('0x81')];var _0x3cfca2=_0x2b322a[_0x8d3a('0x1c6')]/0x64;_0x2b322a[_0x8d3a('0x71')]=_0xe78c76[0x0]['outboundQueuePauses']||0x0;_0x2b322a[_0x8d3a('0x6f')]=_0x58da07>0x0?_0x58da07:0x1;return _0x121d8d[_0x8d3a('0x1e4')](_0x34b05e,_0x57bd61,_0x5d603f,_0x58da07,_0x3cfca2);})['then'](function(_0x244f6e){return _0x1bf95a(_0x244f6e);})['catch'](function(_0x177ad0){return _0x370bd3(msgResponse(_0x8d3a('0x1e2'),'Failure',JSON[_0x8d3a('0x47')](_0x177ad0)));});}}else{return _0x370bd3(msgResponse(_0x8d3a('0x1de'),_0x8d3a('0x149'),_0x8d3a('0x1e0')));}});};};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x1d8')]=function(_0x6f69a2){var _0x233ffd=this;return function(){var _0x205007=0x0;var _0x940fb5=Math[_0x8d3a('0x1ca')](_0x6f69a2[_0x8d3a('0x74')]*0x3e8);if(_0x940fb5>0x0){_0x940fb5=_0x940fb5<0x64?0x64:_0x940fb5;loggerPredictive['info'](_0x6f69a2[_0x8d3a('0x3e')],'one\x20call\x20every:',_0x940fb5,_0x8d3a('0x48'));_0x6f69a2['handlePredictive']=setInterval(function(){_0x233ffd['handlePredictive'](_0x6f69a2);loggerPredictiveCalls[_0x8d3a('0x7e')](_0x8d3a('0x1e5'),_0x205007+=0x1);},_0x940fb5);}else{loggerPredictive[_0x8d3a('0x7e')](_0x6f69a2[_0x8d3a('0x3e')],_0x8d3a('0x1e6'));}};};Dialer[_0x8d3a('0xaf')]['checkContactBlack']=function(_0x1ebbe4,_0x65995d){var _0x3d9868=this;return function(_0x3aa160){if(_['isEmpty'](_0x3aa160)){if(_['isNil'](_0x65995d[_0x8d3a('0x1e7')])||!_0x65995d[_0x8d3a('0x1e8')]){if(_0x1ebbe4[_0x8d3a('0x5a')]===_0x8d3a('0x7')){_0x1ebbe4['queueStatusComplete']=_['isUndefined'](_0x1ebbe4[_0x8d3a('0x12f')])?!![]:_0x1ebbe4['queueStatusComplete'];var _0x2be110=uuid['v4']();_0x3d9868['actions'][_0x2be110]=new Action(_0x1ebbe4,_0x65995d,_0x2be110);loggerBooked[_0x8d3a('0x7e')](_0x8d3a('0x1e9'),_0x2be110,_0x8d3a('0x1ea'),JSON[_0x8d3a('0x47')](_0x1ebbe4[_0x8d3a('0x12f')]),_0x8d3a('0x1eb'),_0x1ebbe4[_0x8d3a('0x3e')]);if(_0x1ebbe4['queueStatusComplete']){_0x1ebbe4['queueStatusComplete']=![];_0x3d9868['queueBooked'][_0x3d9868[_0x8d3a('0x22')][_0x2be110][_0x8d3a('0xb7')]]=[];ami[_0x8d3a('0xb3')]({'actionid':_0x2be110,'action':_0x8d3a('0x1ec'),'queue':_0x1ebbe4[_0x8d3a('0x3e')]})['catch'](function(){_0x3d9868['updateOriginated'](_0x1ebbe4);_0x3d9868['rescheduleContact']({'active':![],'ContactId':_0x3d9868[_0x8d3a('0x22')][_0x2be110][_0x8d3a('0xd6')],'ListId':_0x3d9868[_0x8d3a('0x22')][_0x2be110]['ListId'],'VoiceQueueId':_0x3d9868['actions'][_0x2be110][_0x8d3a('0xd8')]||undefined,'CampaignId':_0x3d9868['actions'][_0x2be110]['CampaignId']||undefined})['catch'](loggerCatch(_0x8d3a('0x1ed')));delete _0x3d9868[_0x8d3a('0x22')][_0x2be110];});}else{loggerBooked[_0x8d3a('0x7e')](_0x8d3a('0x1ee'),JSON[_0x8d3a('0x47')](_0x1ebbe4[_0x8d3a('0x12f')]),_0x8d3a('0x1eb'),_0x1ebbe4[_0x8d3a('0x3e')]);_0x3d9868['updateOriginated'](_0x1ebbe4);_0x3d9868[_0x8d3a('0xc2')]({'active':![],'ContactId':_0x3d9868[_0x8d3a('0x22')][_0x2be110]['ContactId'],'ListId':_0x3d9868[_0x8d3a('0x22')][_0x2be110][_0x8d3a('0xd7')],'VoiceQueueId':_0x3d9868[_0x8d3a('0x22')][_0x2be110][_0x8d3a('0xd8')]||undefined,'CampaignId':_0x3d9868[_0x8d3a('0x22')][_0x2be110][_0x8d3a('0xd9')]||undefined})['catch'](loggerCatch(_0x8d3a('0x1ed')));delete _0x3d9868['actions'][_0x2be110];}}else{return _0x3d9868[_0x8d3a('0x1ef')](_0x1ebbe4,_0x65995d);}}else{if(getDiff(_0x65995d['scheduledat'])<_0x1ebbe4[_0x8d3a('0x1f0')]*0x3c){if(_0x65995d[_0x8d3a('0x1f1')]&&!_0x65995d[_0x8d3a('0x1f1')]['voicePause']){_0x3d9868[_0x8d3a('0x94')][_0x8d3a('0x132')](_0x65995d['id'])[_0x8d3a('0x134')](function(){_0x3d9868[_0x8d3a('0xb6')](_0x1ebbe4);});}else{_0x3d9868[_0x8d3a('0xc4')]({'active':![]},_0x65995d['id'],0x1)[_0x8d3a('0x134')](function(){_0x3d9868[_0x8d3a('0xb6')](_0x1ebbe4);});}}else{_0x1ebbe4[_0x8d3a('0x68')]+=0x1;_0x3d9868[_0x8d3a('0xb6')](_0x1ebbe4);if(_0x1ebbe4['dialRecallInQueue']){_0x3d9868[_0x8d3a('0xc2')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x65995d[_0x8d3a('0xd6')],'ListId':_0x65995d['ListId'],'VoiceQueueId':_0x65995d[_0x8d3a('0xd8')]||undefined,'CampaignId':_0x65995d[_0x8d3a('0xd9')]||undefined})[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0x1f2')));_0x3d9868[_0x8d3a('0xce')](createObjHistory(_0x1ebbe4,_0x65995d,_0x8d3a('0x1f3'),0x17,_0x8d3a('0x1f4')))[_0x8d3a('0xbb')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x3d9868[_0x8d3a('0xe0')](createObjHistory(_0x1ebbe4,_0x65995d,_0x8d3a('0x1f5'),0x16,_0x8d3a('0x1f6')),_0x8d3a('0x1f7'),'[Originate][HistoryRecallClose]');}}}}else{_0x1ebbe4[_0x8d3a('0x61')]+=0x1;_0x3d9868[_0x8d3a('0xe0')](createObjHistory(_0x1ebbe4,_0x65995d,_0x8d3a('0x1f8'),0xd,'Blacklist'),_0x8d3a('0x1f9'),_0x8d3a('0x1fa'));throw _0x8d3a('0x1fb');}};};Dialer[_0x8d3a('0xaf')]['handleIvr']=function(_0xe9213e){var _0x309465=this;var _0x5d345b=_0xe9213e['limitCalls']-_0xe9213e['originated']-_0xe9213e[_0x8d3a('0xc7')];emitCampaignSummary(_0xe9213e);if(_0x5d345b>0x0){if(_0x5d345b>this['maxNumberOriginate']){_0x5d345b=this[_0x8d3a('0x21')];}_0xe9213e[_0x8d3a('0xc7')]+=_0x5d345b;this[_0x8d3a('0xc9')](_0xe9213e['id'],_0x5d345b,_0xe9213e[_0x8d3a('0x1fc')],_0xe9213e)['then'](function(_0x2d72d3){_0xe9213e[_0x8d3a('0xc7')]-=_0x5d345b;_0xe9213e[_0x8d3a('0xc7')]=_0xe9213e[_0x8d3a('0xc7')]>0x0?_0xe9213e[_0x8d3a('0xc7')]:0x0;if(!checkContactEmpty(_0x2d72d3)){_0xe9213e[_0x8d3a('0x3d')]=_0x8d3a('0xa3');logger[_0x8d3a('0x7e')](_0x8d3a('0x1fd')+_0xe9213e[_0x8d3a('0x3e')]);}else{_0xe9213e[_0x8d3a('0x72')]+=_0x2d72d3[_0x8d3a('0x9b')];_0xe9213e[_0x8d3a('0x3d')]=_0x8d3a('0x1fe');for(var _0x51ca08=0x0;_0x51ca08<_0x2d72d3[_0x8d3a('0x9b')];_0x51ca08+=0x1){_0xe9213e[_0x8d3a('0x1ff')]+=0x1;if(_[_0x8d3a('0xb2')](_0x2d72d3[_0x51ca08])||_[_0x8d3a('0xb2')](_0x2d72d3[_0x51ca08][_0x8d3a('0x16e')])||_[_0x8d3a('0xb2')](_0x2d72d3[_0x51ca08][_0x8d3a('0x16e')][_0x8d3a('0x16f')])){_0x309465[_0x8d3a('0xd3')](_0x8d3a('0x200'),_0xe9213e,_0x2d72d3[_0x51ca08]);}else{_0x309465[_0x8d3a('0xbe')](_['pick'](_0x2d72d3[_0x51ca08],[_0x8d3a('0xd9'),_0x8d3a('0x201')]))[_0x8d3a('0xba')](_0x309465[_0x8d3a('0x202')](_0xe9213e,_0x2d72d3[_0x51ca08]))[_0x8d3a('0xbb')](_0x309465[_0x8d3a('0xd2')](_0x8d3a('0x203'),_0xe9213e));}}}})[_0x8d3a('0xbb')](loggerGetContactDialer(_0x8d3a('0x204'),_0xe9213e,_0x5d345b));}};Dialer[_0x8d3a('0xaf')][_0x8d3a('0x15c')]=function(_0x2f1680,_0x43c104){var _0x5574a5=this;var _0x5be739=[];var _0x1a3217=_0x43c104>=0x1?_0x43c104:0x1;if(_0x2f1680['dialMethod']==='booked'){_0x1a3217=0x1;}var _0x4f6444=Math[_0x8d3a('0x1ca')](_0x2f1680[_0x8d3a('0x50')]*_0x1a3217)-_0x2f1680[_0x8d3a('0x72')]-_0x2f1680[_0x8d3a('0xc7')];emitVoiceQueueSummary(_0x2f1680);if(_0x2f1680['dialLimitQueue']>0x0){var _0x32d6ed=_0x2f1680[_0x8d3a('0x205')]-_0x2f1680[_0x8d3a('0x72')]-_0x2f1680[_0x8d3a('0x54')]-_0x2f1680[_0x8d3a('0xc7')]-_0x2f1680['pTalking'];if(_0x4f6444>_0x32d6ed){_0x4f6444=_0x32d6ed;}}if(_0x4f6444>0x0){if(_0x2f1680[_0x8d3a('0x5a')]===_0x8d3a('0x7')){_0x4f6444=0x1;}if(_0x4f6444>this[_0x8d3a('0x21')]){_0x4f6444=this['maxNumberOriginate'];}_0x2f1680[_0x8d3a('0xc7')]+=_0x4f6444;for(var _0x1215e5 in this[_0x8d3a('0x1f')]){if(typeof this[_0x8d3a('0x1f')][_0x1215e5]!=='undefined'){if(this['agents'][_0x1215e5][_0x8d3a('0xab')]===_0x8d3a('0x206')&&this[_0x8d3a('0x1f')][_0x1215e5][_0x8d3a('0xde')]===_0x8d3a('0xdf')){_0x5be739[_0x8d3a('0x12d')](this[_0x8d3a('0x1f')][_0x1215e5]['id']);}}}this[_0x8d3a('0xc6')](_0x2f1680['id'],_0x5be739,_0x4f6444,_0x2f1680[_0x8d3a('0x1fc')],_0x2f1680)[_0x8d3a('0xba')](function(_0xd49226){_0x2f1680[_0x8d3a('0xc7')]-=_0x4f6444;_0x2f1680['temp']=_0x2f1680['temp']>0x0?_0x2f1680['temp']:0x0;if(!checkContactEmpty(_0xd49226)){_0x5574a5[_0x8d3a('0x207')](_0x2f1680)[_0x8d3a('0xba')](sendMessageReschedule(_0x2f1680))[_0x8d3a('0xbb')](loggerCatch('[countReScheduled]\x20'));}else{_0x2f1680[_0x8d3a('0x72')]+=_0xd49226[_0x8d3a('0x9b')];_0x2f1680[_0x8d3a('0x3d')]=_0x2f1680[_0x8d3a('0x5a')]===_0x8d3a('0x7')?_0x8d3a('0x176'):'RUNNING';for(var _0x50508c=0x0;_0x50508c<_0xd49226[_0x8d3a('0x9b')];_0x50508c+=0x1){if(_[_0x8d3a('0xb2')](_0xd49226[_0x50508c])||_[_0x8d3a('0xb2')](_0xd49226[_0x50508c][_0x8d3a('0x16e')])||_[_0x8d3a('0xb2')](_0xd49226[_0x50508c][_0x8d3a('0x16e')][_0x8d3a('0x16f')])){_0x5574a5[_0x8d3a('0xd3')](_0x8d3a('0x200'),_0x2f1680,_0xd49226[_0x50508c]);}else{_0x5574a5['checkIsBlackList'](_[_0x8d3a('0xd5')](_0xd49226[_0x50508c],[_0x8d3a('0xd8'),_0x8d3a('0x201')]))[_0x8d3a('0xba')](_0x5574a5[_0x8d3a('0x202')](_0x2f1680,_0xd49226[_0x50508c]))[_0x8d3a('0xbb')](_0x5574a5[_0x8d3a('0xd2')](_0x8d3a('0x200'),_0x2f1680));}}}})[_0x8d3a('0xbb')](loggerGetContactDialer(_0x8d3a('0x208'),_0x2f1680,_0x4f6444));}};Dialer['prototype'][_0x8d3a('0x92')]=function(_0x398d2e){if(_0x398d2e['dialLimitQueue']>0x0){var _0x4de223=_0x398d2e[_0x8d3a('0x205')]-_0x398d2e[_0x8d3a('0x72')]-_0x398d2e[_0x8d3a('0x54')];if(_0x4de223>0x0){this[_0x8d3a('0x209')](_0x398d2e);}else{loggerPredictiveCalls['info']('[handlePredictive][limitChannel]');}}else{this[_0x8d3a('0x209')](_0x398d2e);}};Dialer[_0x8d3a('0xaf')]['tryOriginatePredictive']=function(_0xc4052){var _0x43c289=this;var _0x57ae3d=[];_0xc4052['originated']+=0x1;for(var _0x1b9015 in this[_0x8d3a('0x1f')]){if(typeof this['agents'][_0x1b9015]!=='undefined'){if(this[_0x8d3a('0x1f')][_0x1b9015][_0x8d3a('0xab')]===_0x8d3a('0x206')&&this[_0x8d3a('0x1f')][_0x1b9015]['status']===_0x8d3a('0xdf')){_0x57ae3d[_0x8d3a('0x12d')](this['agents'][_0x1b9015]['id']);}}}this[_0x8d3a('0xc6')](_0xc4052['id'],_0x57ae3d,0x1,_0xc4052['dialOrderByScheduledAt'],_0xc4052)[_0x8d3a('0xba')](function(_0x4c594b){if(!checkContactEmpty(_0x4c594b)){checkContactLowerLimitOriginate(_0xc4052,0x1,0x0);_0x43c289['countReScheduled'](_0xc4052)[_0x8d3a('0xba')](sendMessageReschedule(_0xc4052))[_0x8d3a('0xbb')](loggerCatch(_0x8d3a('0xbc')));}else{_0xc4052['message']='RUNNING';if(_[_0x8d3a('0xb2')](_0x4c594b[0x0])||_[_0x8d3a('0xb2')](_0x4c594b[0x0]['Contact'])||_[_0x8d3a('0xb2')](_0x4c594b[0x0]['Contact'][_0x8d3a('0x16f')])){_0x43c289['emptyContact'](_0x8d3a('0x200'),_0xc4052,_0x4c594b[0x0]);}else{_0x43c289[_0x8d3a('0xbd')](_['pick'](_0x4c594b[0x0],[_0x8d3a('0xd8'),_0x8d3a('0x201')]))[_0x8d3a('0xba')](_0x43c289[_0x8d3a('0x202')](_0xc4052,_0x4c594b[0x0]))[_0x8d3a('0xbb')](_0x43c289[_0x8d3a('0xd2')](_0x8d3a('0x20a'),_0xc4052));}}})[_0x8d3a('0xbb')](loggerGetContactDialer(_0x8d3a('0x20b'),_0xc4052,0x1));emitVoiceQueueSummary(_0xc4052);};Dialer[_0x8d3a('0xaf')]['abandonmentRate']=function(_0x5dfdc3,_0x4a3534,_0x430c81,_0x4612bb,_0x24b033,_0x1abb8a){loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x20c'));loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x20d'),_0x5dfdc3);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x20e'),_0x4a3534);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x20f'),_0x430c81);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x210'),_0x4612bb);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x211'),_0x24b033);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x8f'));return new BPromise(function(_0x1ff953,_0x3f4e3c){if(_0x5dfdc3<=0x0||isNaN(_0x5dfdc3)){return _0x3f4e3c(msgResponse(_0x8d3a('0x212'),'Error','m\x20=\x20'+_0x5dfdc3));}if(_0x430c81<=0x0||isNaN(_0x430c81)){return _0x3f4e3c(msgResponse(_0x8d3a('0x212'),'Error',_0x8d3a('0x213')+_0x430c81));}if(_0x4612bb<=0x0||isNaN(_0x4612bb)){return _0x3f4e3c(msgResponse(_0x8d3a('0x212'),'Error','p\x20=\x20'+_0x4612bb));}if(_0x4a3534<=0x0||isNaN(_0x4a3534)){return _0x3f4e3c(msgResponse(_0x8d3a('0x212'),_0x8d3a('0x46'),'interval\x20=\x20'+_0x4a3534));}if(_0x24b033<=0x0||isNaN(_0x24b033)){return _0x3f4e3c(msgResponse(_0x8d3a('0x212'),_0x8d3a('0x46'),'Amax\x20=\x20'+_0x24b033));}_0x1abb8a=_0x1abb8a||0x0;var _0x21d0cf=0x1/_0x430c81;var _0x218ca9=0x0;var _0xc6dbb4=0x0;var _0x11969f=0x0;var _0x6a27da=0x0;for(var _0x256ce3=0x0;_0x11969f<_0x24b033;_0x256ce3+=0x1){_0xc6dbb4=_0x256ce3/_0x4a3534;_0x218ca9=(_0x4612bb*_0xc6dbb4+_0x1abb8a)/_0x21d0cf;_0x11969f=erlangb(_0x218ca9,_0x5dfdc3);_0x6a27da=_0x218ca9/_0x5dfdc3*(0x1-erlangb(_0x218ca9,_0x5dfdc3));}return _0x1ff953({'erlangCalls':_0x256ce3,'erlangCallToSecond':_0x4a3534/_0x256ce3,'erlangAbandonmentRate':_0x11969f,'erlangBusyFactor':_0x6a27da});});};Dialer[_0x8d3a('0xaf')]['busyFactor']=function(_0x322014,_0xbf0cd,_0x5854ef,_0x30f6d4,_0x141a4e,_0xb0f2c9){loggerPredictive['info'](_0x8d3a('0x214'));loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x20d'),_0x322014);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x20e'),_0xbf0cd);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x20f'),_0x5854ef);loggerPredictive['info'](_0x8d3a('0x210'),_0x30f6d4);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x215'),_0x141a4e);loggerPredictive[_0x8d3a('0x7e')](_0x8d3a('0x8f'));return new BPromise(function(_0x27ca16,_0xc67c15){if(_0x322014<=0x0||isNaN(_0x322014)){return _0xc67c15(msgResponse('[busyFactor]',_0x8d3a('0x46'),_0x8d3a('0x216')+_0x322014));}if(_0x5854ef<=0x0||isNaN(_0x5854ef)){return _0xc67c15(msgResponse(_0x8d3a('0x217'),_0x8d3a('0x46'),_0x8d3a('0x213')+_0x5854ef));}if(_0x30f6d4<=0x0||isNaN(_0x30f6d4)){return _0xc67c15(msgResponse(_0x8d3a('0x217'),_0x8d3a('0x46'),'p\x20=\x20'+_0x30f6d4));}if(_0xbf0cd<=0x0||isNaN(_0xbf0cd)){return _0xc67c15(msgResponse(_0x8d3a('0x217'),_0x8d3a('0x46'),_0x8d3a('0x218')+_0xbf0cd));}if(_0x141a4e<=0x0||isNaN(_0x141a4e)){return _0xc67c15(msgResponse('[busyFactor]',_0x8d3a('0x46'),_0x8d3a('0x219')+_0x141a4e));}_0xb0f2c9=_0xb0f2c9||0x0;var _0x5ef265=0x1/_0x5854ef;var _0x56fcb4=0x0;var _0x3fff39=0x0;var _0x546b03=0x0;var _0x45398f=0x0;for(var _0x55cbde=0x0;_0x45398f<_0x141a4e;_0x55cbde+=0x1){_0x3fff39=_0x55cbde/_0xbf0cd;_0x56fcb4=(_0x30f6d4*_0x3fff39+_0xb0f2c9)/_0x5ef265;_0x546b03=erlangb(_0x56fcb4,_0x322014);_0x45398f=_0x56fcb4/_0x322014*(0x1-erlangb(_0x56fcb4,_0x322014));}return _0x27ca16({'erlangCalls':_0x55cbde,'erlangCallToSecond':_0xbf0cd/_0x55cbde,'erlangAbandonmentRate':_0x546b03,'erlangBusyFactor':_0x45398f});});};module[_0x8d3a('0x21a')]=Dialer;
\ No newline at end of file
+var _0x4058=['value','MACHINE','countmachineretry','countglobal','amd','createHistory','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','rescheduleContact','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','HangupInAMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countdropretry','dialGlobalMaxRetry','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','[syncHangupIvr]','outboundUnknownCallsDay','cause-txt','syncAgentComplete','reason','agent','[syncAgentComplete][createHistory]','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','dropreason','TIMEOUT','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','Drop','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','syncQueueMember','actionid','paused','stateinterface','locked','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','checkIsTrunkReachable','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','\x20Intervals\x20is\x20null\x20','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','push','command','iftime\x20%s,%s','content','indexOf','true','all','some','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','dialMethod','progressive','power','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','loggedIn','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','syncCampaigns','[syncCampaigns]','\x5cw{0,','pow','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','dialAgiAfterHangupAgent','dialer','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','substring','dialCutDigit','from-sip','[originate][error]','Error','originate\x20action\x20Error','getQueue','response','callProgressDetecting','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','custom:agentnosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','started\x20in\x20predictive\x20at','dialPredictiveInterval','getDataPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','startMethodPredictive','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','Blacklist','[Originate][historyBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','loggerHandler','[actionOriginateIvr]\x20','[getContactCampaign2]','not_inuse','dialLimitQueue','[handlePredictive][limitChannel]','tryOriginatePredictive','reachable','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','booked','../../../config/logger','predictive','predictiveCalls','syncQueueSummary','../ami','redis','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperBlack','./agentComplete','rrmemory','roundrobin','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','agentcomplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','stringify','milliseconds','diff','emit','outbound','strategy','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','type','abandoned','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','Trunk','active','callerid','voice:queue:%s','voice_queue:save','format','campaign:ivr:%s','campaign:save','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','predictiveIntervalTotalCalls','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','seconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','ivr','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','waiting','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','starttime','prototype','clearZombieChannels','[actions]','Action','status','channel','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','catch','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','[createHistory]\x20','undefined','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','merge','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','unmonitored','saveInDb','uniqueid','isNil','variable','xcally-motion-dialer','dialAMDActive','HANGUP','membername','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]'];(function(_0x595a6a,_0xa4c270){var _0x29fdb3=function(_0x131950){while(--_0x131950){_0x595a6a['push'](_0x595a6a['shift']());}};_0x29fdb3(++_0xa4c270);}(_0x4058,0x129));var _0x8405=function(_0x5d50e4,_0x3810a4){_0x5d50e4=_0x5d50e4-0x0;var _0x56946b=_0x4058[_0x5d50e4];return _0x56946b;};'use strict';var util=require(_0x8405('0x0'));var _=require(_0x8405('0x1'));var BPromise=require(_0x8405('0x2'));var uuid=require(_0x8405('0x3'));var moment=require(_0x8405('0x4'));var rr=require('rr');var md5=require(_0x8405('0x5'));var Redis=require(_0x8405('0x6'));var ut=require(_0x8405('0x7'));var config=require(_0x8405('0x8'));var logger=require('../../../config/logger')('dialer');var loggerBooked=require('../../../config/logger')(_0x8405('0x9'));var loggerPredictive=require(_0x8405('0xa'))(_0x8405('0xb'));var loggerPredictiveCalls=require(_0x8405('0xa'))(_0x8405('0xc'));var loggerSyncQueueSummary=require('../../../config/logger')(_0x8405('0xd'));var ami=require(_0x8405('0xe'));config[_0x8405('0xf')]=_['defaults'](config[_0x8405('0xf')],{'host':'localhost','port':0x18eb});var io=require(_0x8405('0x10'))(new Redis(config[_0x8405('0xf')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x8405('0x11'));var cmHopperBlack=require(_0x8405('0x12'));var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require('./action');var History=require('./history');var Final=require('./final');var AgentComplete=require(_0x8405('0x13'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require('./hangup');var ipAgi=process['env']['XCALLY_IP_AGI']||'127.0.0.1';var strategy={'rrmemory':_0x8405('0x14'),'roundrobin':_0x8405('0x15')};var Sequence=function(){};Sequence['prototype'][_0x8405('0x16')]=function(_0xa60bb4){this[_0x8405('0x17')]=this[_0x8405('0x17')]?this['tail'][_0x8405('0x18')](_0xa60bb4):_0xa60bb4();};function Dialer(_0x2d7601,_0x8ef1fb){this[_0x8405('0x19')]=new Sequence();this[_0x8405('0x1a')]=_0x8ef1fb;this[_0x8405('0x1b')]=_0x2d7601[_0x8405('0x1b')];this[_0x8405('0x1c')]=_0x2d7601[_0x8405('0x1c')];this[_0x8405('0x1d')]=_0x2d7601[_0x8405('0x1d')];this[_0x8405('0x1e')]=_0x2d7601[_0x8405('0x1e')];this[_0x8405('0x1f')]=config[_0x8405('0x1f')]||0x2;this[_0x8405('0x20')]={};this[_0x8405('0x21')]={};this[_0x8405('0x22')]={};this[_0x8405('0x23')]={};this[_0x8405('0x24')]={};this[_0x8405('0x25')]={};this[_0x8405('0x26')]={};this[_0x8405('0x27')]={};this[_0x8405('0x28')]={};this[_0x8405('0x29')]={};ami['on'](_0x8405('0x2a'),this['syncAgentConnect']['bind'](this));ami['on'](_0x8405('0x2b'),this[_0x8405('0x2c')][_0x8405('0x2d')](this));ami['on']('originateresponse',this[_0x8405('0x2e')]['bind'](this));ami['on'](_0x8405('0x2f'),this['syncAgentComplete'][_0x8405('0x2d')](this));ami['on'](_0x8405('0x30'),this[_0x8405('0xd')][_0x8405('0x2d')](this));ami['on'](_0x8405('0x31'),this[_0x8405('0x32')][_0x8405('0x2d')](this));ami['on'](_0x8405('0x33'),this[_0x8405('0x34')][_0x8405('0x2d')](this));ami['on'](_0x8405('0x35'),this[_0x8405('0x36')]['bind'](this));ami['on'](_0x8405('0x37'),this['syncQueueMember']['bind'](this));ami['on'](_0x8405('0x38'),this[_0x8405('0x39')][_0x8405('0x2d')](this));this[_0x8405('0x3a')]();this[_0x8405('0x3b')]();}function isNotNull(_0x16fa59){return _0x16fa59!==null&&!_[_0x8405('0x3c')](_0x16fa59);}function checkIsLoggedIn(_0xa1efa2,_0x7e216b){return function(){if(_0x7e216b<=0x0){_0xa1efa2[_0x8405('0x3d')]=_0x8405('0x3e');throw _0xa1efa2[_0x8405('0x3f')]+_0x8405('0x40');}};}function isActive(_0x54ffcc){return _0x54ffcc;}function checkIsActive(_0x4015c0,_0x305fe8){return function(){if(!isActive(_0x305fe8)){_0x4015c0['message']=_0x8405('0x41');throw _0x4015c0[_0x8405('0x3f')]+_0x8405('0x42');}};}function checkInterval(_0x5c50f9){return function(){if(!isNotNull(_0x5c50f9[_0x8405('0x43')])){_0x5c50f9[_0x8405('0x3d')]=_0x8405('0x44');throw _0x5c50f9['name']+_0x8405('0x45');}if(!isNotNull(_0x5c50f9[_0x8405('0x43')]['Intervals'])){_0x5c50f9[_0x8405('0x3d')]='INTERVAL_IS_NULL';throw _0x5c50f9[_0x8405('0x3f')]+_0x8405('0x45');}if(!isNotNull(_[_0x8405('0x46')](_0x5c50f9[_0x8405('0x43')][_0x8405('0x47')]))){_0x5c50f9[_0x8405('0x3d')]=_0x8405('0x44');throw _0x5c50f9[_0x8405('0x3f')]+_0x8405('0x45');}};}function msgResponse(_0x298b3f,_0x2ddb8d,_0x3b774d){return{'action':_0x298b3f,'response':_0x2ddb8d,'message':_0x3b774d,'stack':_0x3b774d};}function myreject(_0x4cd2bf){return function(_0x23ef27){return _0x4cd2bf(msgResponse('[ifTime][Action]','Error',JSON[_0x8405('0x48')](_0x23ef27)));};}function getSeconds(_0x42587c,_0x5406e3){var _0x17ed2c=moment(_0x42587c)[_0x8405('0x49')](0x0);var _0x13ad1e=moment(_0x5406e3)[_0x8405('0x49')](0x0);return _0x17ed2c[_0x8405('0x4a')](_0x13ad1e,'seconds');}function emit(_0x40b6e0,_0x968b59,_0x177600){io['to'](_0x40b6e0)[_0x8405('0x4b')](_0x968b59,_0x177600);}function emitVoiceQueueSummary(_0x451faa){if(_0x451faa['type']===_0x8405('0x4c')){var _0x27a6ec={'id':_0x451faa['id'],'name':_0x451faa[_0x8405('0x3f')],'strategy':_0x451faa[_0x8405('0x4d')],'answered':_0x451faa[_0x8405('0x4e')],'available':_0x451faa[_0x8405('0x4f')],'loggedIn':_0x451faa['loggedIn'],'pTalking':_0x451faa[_0x8405('0x50')],'sumBillable':_0x451faa[_0x8405('0x51')],'sumDuration':_0x451faa[_0x8405('0x52')],'sumHoldTime':_0x451faa[_0x8405('0x53')]||0x0,'talking':_0x451faa[_0x8405('0x54')],'total':_0x451faa[_0x8405('0x55')],'type':_0x451faa[_0x8405('0x56')],'unmanaged':_0x451faa['unmanaged'],'abandoned':_0x451faa[_0x8405('0x57')],'waiting':_0x451faa['waiting'],'loggedInDb':_0x451faa[_0x8405('0x58')],'dialActive':_0x451faa[_0x8405('0x59')],'dialMethod':_0x451faa['dialMethod'],'dialOriginateCallerIdName':_0x451faa[_0x8405('0x5a')],'dialOriginateCallerIdNumber':_0x451faa[_0x8405('0x5b')],'dialOriginateTimeout':_0x451faa[_0x8405('0x5c')],'dialPrefix':_0x451faa[_0x8405('0x5d')],'outboundAnswerAgiCallsDay':_0x451faa[_0x8405('0x5e')],'outboundAnswerCallsDay':_0x451faa[_0x8405('0x5f')],'outboundBlacklistCallsDay':_0x451faa[_0x8405('0x60')],'outboundBusyCallsDay':_0x451faa[_0x8405('0x61')],'outboundCongestionCallsDay':_0x451faa[_0x8405('0x62')],'outboundDropCallsDayACS':_0x451faa[_0x8405('0x63')],'outboundDropCallsDayCallersExit':_0x451faa['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x451faa['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x451faa[_0x8405('0x64')],'outboundNoSuchCallsDay':_0x451faa['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x451faa[_0x8405('0x65')],'outboundReCallsDay':_0x451faa[_0x8405('0x66')],'outboundRejectCallsDay':_0x451faa[_0x8405('0x67')],'outboundUnknownCallsDay':_0x451faa['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x451faa[_0x8405('0x68')],'predictiveIntervalAvgHoldtime':_0x451faa[_0x8405('0x69')],'predictiveIntervalAvgTalktime':_0x451faa['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x451faa[_0x8405('0x6a')],'predictiveIntervalDroppedCallsTimeout':_0x451faa[_0x8405('0x6b')],'predictiveIntervalErlangCalls':_0x451faa[_0x8405('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x451faa[_0x8405('0x6d')],'predictiveIntervalHitRate':_0x451faa[_0x8405('0x6e')],'predictiveIntervalMultiplicativeFactor':_0x451faa[_0x8405('0x6f')],'predictiveIntervalPauses':_0x451faa[_0x8405('0x70')],'predictiveIntervalAvailable':_0x451faa['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x451faa['predictiveIntervalTotalCalls'],'message':_0x451faa['message'],'originated':_0x451faa[_0x8405('0x71')],'erlangCalls':_0x451faa[_0x8405('0x72')],'erlangCallToSecond':_0x451faa[_0x8405('0x73')],'erlangAbandonmentRate':_0x451faa[_0x8405('0x74')],'erlangBusyFactor':_0x451faa['erlangBusyFactor'],'startPredictive':_0x451faa['startPredictive'],'startProgressive':_0x451faa[_0x8405('0x26')]};if(_0x451faa[_0x8405('0x75')]){_0x27a6ec[_0x8405('0x75')]={'id':_0x451faa[_0x8405('0x75')]['id'],'name':_0x451faa[_0x8405('0x75')][_0x8405('0x3f')],'active':_0x451faa[_0x8405('0x75')][_0x8405('0x76')],'callerid':_0x451faa['Trunk'][_0x8405('0x77')]};}if(_0x451faa['Interval']){_0x27a6ec[_0x8405('0x43')]={'id':_0x451faa[_0x8405('0x43')]['id'],'name':_0x451faa[_0x8405('0x43')][_0x8405('0x3f')]};}var _0x9a0ffe=md5(JSON[_0x8405('0x48')](_0x27a6ec));if(_0x451faa[_0x8405('0x5')]!==_0x9a0ffe){_0x451faa[_0x8405('0x5')]=_0x9a0ffe;emit(util['format'](_0x8405('0x78'),_0x27a6ec[_0x8405('0x3f')]),_0x8405('0x79'),_0x27a6ec);}}}function emitCampaignSummary(_0x3e4473){if(_0x3e4473['type']==='ivr'){emit(util[_0x8405('0x7a')](_0x8405('0x7b'),_0x3e4473[_0x8405('0x3f')]),_0x8405('0x7c'),_0x3e4473);}}function checkGetDataPredictive(_0x3ac9c7){if(isNotNull(_0x3ac9c7)&&!_[_0x8405('0x46')](_0x3ac9c7)){loggerPredictive[_0x8405('0x7d')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive['info'](_0x8405('0x7e'),_0x3ac9c7['predictiveIntervalTotalCalls']);loggerPredictive[_0x8405('0x7d')](_0x8405('0x7f'),_0x3ac9c7[_0x8405('0x68')]);loggerPredictive['info']('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3ac9c7[_0x8405('0x6b')]);loggerPredictive['info'](_0x8405('0x80'),_0x3ac9c7[_0x8405('0x6a')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x81'),_0x3ac9c7[_0x8405('0x69')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x82'),_0x3ac9c7[_0x8405('0x83')]);loggerPredictive[_0x8405('0x7d')]('---------------------------');if(_0x3ac9c7[_0x8405('0x84')]>0x0){if(!_[_0x8405('0x3c')](_0x3ac9c7[_0x8405('0x83')])&&_0x3ac9c7[_0x8405('0x83')]>0x0){return!![];}loggerPredictive['info'](_0x8405('0x85'));if(!_[_0x8405('0x3c')](_0x3ac9c7[_0x8405('0x69')])&&_0x3ac9c7[_0x8405('0x69')]>0x0){return!![];}loggerPredictive[_0x8405('0x7d')](_0x8405('0x86'));}else{loggerPredictive['info'](_0x8405('0x87'));}}else{loggerPredictive[_0x8405('0x7d')](_0x8405('0x88'));}return![];}function mergeDataErlangB(_0x550f08){return function(_0x43a0f4){loggerPredictive[_0x8405('0x7d')](_0x8405('0x89'));loggerPredictive[_0x8405('0x7d')](_0x8405('0x8a'),_0x43a0f4[_0x8405('0x72')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8b'),_0x43a0f4[_0x8405('0x73')]);loggerPredictive[_0x8405('0x7d')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x43a0f4[_0x8405('0x74')]);loggerPredictive['info'](_0x8405('0x8c'),_0x43a0f4['erlangBusyFactor']);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8d'),_0x43a0f4[_0x8405('0x74')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8e'));_['merge'](_0x550f08,_0x43a0f4);};}function getDiff(_0x350e04){var _0x48f7a7=moment()['milliseconds'](0x0);var _0x450863=moment(_0x350e04)['milliseconds'](0x0);return _0x48f7a7[_0x8405('0x4a')](_0x450863,_0x8405('0x8f'));}function ifInterval(_0x2914f6,_0x56f466){if(_[_0x8405('0x3c')](_0x56f466)){return![];}return getDiff(_0x56f466)<_0x2914f6*0x3c;}function freeVariablesPredictive(_0x2dd310){if(isNotNull(_0x2dd310)){if(!_[_0x8405('0x3c')](_0x2dd310[_0x8405('0x26')])){_0x2dd310[_0x8405('0x26')]=undefined;loggerPredictive[_0x8405('0x7d')](_0x2dd310['name'],_0x8405('0x90'));}if(!_[_0x8405('0x3c')](_0x2dd310[_0x8405('0x25')])){_0x2dd310['startPredictive']=undefined;loggerPredictive['info'](_0x2dd310[_0x8405('0x3f')],_0x8405('0x91'));}if(!_[_0x8405('0x3c')](_0x2dd310[_0x8405('0x92')])){clearInterval(_0x2dd310[_0x8405('0x92')]);_0x2dd310['handlePredictive']=undefined;loggerPredictive['info'](_0x2dd310['name'],_0x8405('0x93'));}}}function erlangb(_0x14a39b,_0x2ef75f){if(_0x2ef75f===0x0){return 0x0;}var _0x3da720=0x1;for(var _0x3d4d55=0x1;_0x3d4d55<=_0x2ef75f;_0x3d4d55+=0x1){_0x3da720=0x1+_0x3da720*_0x3d4d55/_0x14a39b;}return 0x1/_0x3da720;}function isVoiceQueueOutbound(_0x23aea4){return _0x23aea4===_0x8405('0x4c');}function isNotPreview(_0x22ce58){return _0x22ce58!==_0x8405('0x1a');}function isCampaignIvr(_0x23d94e){return _0x23d94e===_0x8405('0x94');}function getCallerId(_0x2a4d26,_0x531061,_0x106169){if(!_[_0x8405('0x3c')](_0x106169)&&typeof _0x106169==='string'&&!_[_0x8405('0x46')](_0x106169)){if(!_[_0x8405('0x3c')](_0x531061)&&typeof _0x531061===_0x8405('0x95')&&!_[_0x8405('0x46')](_0x531061)){return util[_0x8405('0x7a')](_0x8405('0x96'),_0x531061,_0x106169);}return util[_0x8405('0x7a')](_0x8405('0x96'),_0x106169,_0x106169);}if(!_[_0x8405('0x3c')](_0x2a4d26)&&typeof _0x2a4d26==='string'&&!_[_0x8405('0x46')](_0x2a4d26)){return _0x2a4d26;}return _0x8405('0x97');}function loggerCatchQueueSummary(_0x17e983,_0x5b709a){return function(_0x1f19ec){freeVariablesPredictive(_0x5b709a);emitVoiceQueueSummary(_0x5b709a);emitCampaignSummary(_0x5b709a);loggerSyncQueueSummary[_0x8405('0x98')](_0x17e983,util[_0x8405('0x99')](_0x1f19ec,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x211e38,_0x27f1ef){return function(_0x4d9f1f){loggerPredictive[_0x8405('0x98')](_0x27f1ef[_0x8405('0x3f')],_0x211e38);loggerPredictive[_0x8405('0x98')](_0x4d9f1f[_0x8405('0x9a')]);freeVariablesPredictive(_0x27f1ef);};}function loggerCatch(_0x18c784){return function(_0xc554dc){logger[_0x8405('0x98')](_0x18c784,util[_0x8405('0x99')](_0xc554dc,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x2b6b43){return _0x2b6b43&&!_['isUndefined'](_0x2b6b43)&&_0x2b6b43[_0x8405('0x9b')]>0x0;}function decremetOriginate(_0x4a41ff){if(!_[_0x8405('0x3c')](_0x4a41ff)&&_0x4a41ff!==null){if(typeof _0x4a41ff[_0x8405('0x71')]!=='undefined'){if(_0x4a41ff['originated']>0x0){_0x4a41ff['originated']-=0x1;}else{logger['error'](_0x8405('0x9c'));}}}else{logger['error'](_0x8405('0x9d'));}}function checkContactLowerLimitOriginate(_0x210220,_0x34c983,_0x3d85d2){if(_0x34c983>_0x3d85d2){for(var _0x372ca9=0x0;_0x372ca9<_0x34c983-_0x3d85d2;_0x372ca9+=0x1){decremetOriginate(_0x210220);}}}function loggerGetContactDialer(_0x22d5ef,_0x3dafeb,_0x56cea5){return function(_0x22ec5c){checkContactLowerLimitOriginate(_0x3dafeb,_0x56cea5,0x0);logger[_0x8405('0x98')](_0x22d5ef,util['inspect'](_0x22ec5c,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x55f959){return function(_0x48b045){if(isNotNull(_0x48b045)&&isNotNull(_0x48b045[0x0])){if(_0x48b045[0x0]['contactsRescheduled']>0x0){_0x55f959['message']='RESCHEDULED_CONTACTS';logger[_0x8405('0x7d')](_0x8405('0x9e')+_0x55f959[_0x8405('0x3f')],_0x48b045[0x0][_0x8405('0x9f')],_0x8405('0xa0'));}else{_0x55f959['message']=_0x8405('0xa1');logger[_0x8405('0x7d')](_0x8405('0xa2')+_0x55f959[_0x8405('0x3f')]);}}};}function notSendMessagesQueue(_0x4c9044){if(_0x4c9044['sendMessageOneNotActive']){freeVariablesPredictive(_0x4c9044);if(_0x4c9044[_0x8405('0x71')]===0x0&&_0x4c9044[_0x8405('0x54')]===0x0&&_0x4c9044[_0x8405('0xa3')]===0x0&&(_0x4c9044[_0x8405('0x50')]||0x0)===0x0){_0x4c9044[_0x8405('0xa4')]=![];_0x4c9044[_0x8405('0x4f')]=0x0;_0x4c9044[_0x8405('0x3d')]=_0x8405('0x41');loggerSyncQueueSummary['error'](_0x8405('0xa5'),_0x4c9044[_0x8405('0x3f')],_0x8405('0xa6'));}else{_0x4c9044[_0x8405('0x3d')]=_0x8405('0xa7');loggerSyncQueueSummary[_0x8405('0x98')](_0x8405('0xa5'),_0x4c9044[_0x8405('0x3f')],_0x8405('0xa8'));}emitVoiceQueueSummary(_0x4c9044);}}function notSendMessagesCampaign(_0x2be89b){if(_0x2be89b[_0x8405('0xa4')]){if(_0x2be89b[_0x8405('0x71')]===0x0){_0x2be89b[_0x8405('0xa4')]=![];_0x2be89b[_0x8405('0x3d')]=_0x8405('0x41');loggerSyncQueueSummary[_0x8405('0x98')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x2be89b[_0x8405('0x3f')],_0x8405('0xa6'));}else{_0x2be89b[_0x8405('0x3d')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x8405('0x98')](_0x8405('0xa9'),_0x2be89b[_0x8405('0x3f')],_0x8405('0xa8'));}emitCampaignSummary(_0x2be89b);}}function createObjHistory(_0x15be77,_0x30c799,_0x34359d,_0x2ba1fc,_0x352112){_0x15be77[_0x8405('0x3d')]=_0x34359d;var _0x5be58d=new Action(_0x15be77,_0x30c799);var _0x48ab26=new History(_0x5be58d);_0x48ab26[_0x8405('0xaa')]=_0x2ba1fc;_0x48ab26[_0x8405('0xab')]=_0x352112;_0x48ab26['endtime']=_0x5be58d[_0x8405('0xac')];return _0x48ab26;}Dialer[_0x8405('0xad')][_0x8405('0x3b')]=function(){var _0x4ae432=this;setInterval(function(){_0x4ae432['clearZombieChannels'](_0x4ae432['uniqueId'],'[uniqueid]');_0x4ae432[_0x8405('0xae')](_0x4ae432[_0x8405('0x21')],_0x8405('0xaf'));},0x32c8);};Dialer['prototype'][_0x8405('0xae')]=function(_0x35607a,_0x44be49){var _0x73c924=this;for(var _0x496893 in _0x35607a){if(typeof _0x35607a[_0x496893]!=='undefined'){this[_0x8405('0x19')][_0x8405('0x16')](function(){if(!_['isNil'](_0x35607a[_0x496893])){return ami[_0x8405('0xb0')]({'action':_0x8405('0xb1'),'channel':_0x35607a[_0x496893][_0x8405('0xb2')]})['catch'](function(_0x197225){if(_0x197225[_0x8405('0x3d')]===_0x8405('0xb3')){setTimeout(function(){if(_0x35607a[_0x496893]&&_0x35607a[_0x496893][_0x8405('0x56')]!==_0x8405('0x94')){_0x73c924[_0x8405('0xb4')](_0x73c924[_0x8405('0x1b')][_0x35607a[_0x496893][_0x8405('0xb5')]]);logger[_0x8405('0x98')](_0x8405('0xb6'),_0x44be49,_0x496893,_0x35607a[_0x496893]['queue']);delete _0x35607a[_0x496893];}if(_0x35607a[_0x496893]&&_0x35607a[_0x496893][_0x8405('0x56')]===_0x8405('0x94')){_0x73c924[_0x8405('0xb4')](_0x73c924['campaigns'][_0x35607a[_0x496893]['queue']]);logger['error'](_0x8405('0xb7'),_0x44be49,_0x496893,_0x35607a[_0x496893][_0x8405('0xb5')]);delete _0x35607a[_0x496893];}},0x2328);}});}});}}};Dialer[_0x8405('0xad')][_0x8405('0xb8')]=function(_0x4ba2f1){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopper[_0x8405('0xb8')](_0x4ba2f1))[_0x8405('0xbb')](loggerCatch(_0x8405('0xbc')));};Dialer[_0x8405('0xad')][_0x8405('0xbd')]=function(_0x40da84){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopperBlack['checkIsBlackList'](_0x40da84))['catch'](loggerCatch(_0x8405('0xbe')));};Dialer[_0x8405('0xad')][_0x8405('0xbf')]=function(_0x3d855d){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopperBlack[_0x8405('0xbf')](_0x3d855d))[_0x8405('0xbb')](loggerCatch(_0x8405('0xc0')));};Dialer['prototype'][_0x8405('0xc1')]=function(_0x1c1d17){return BPromise[_0x8405('0xb9')]()['then'](cmHopperHistory[_0x8405('0xc2')](_0x1c1d17))[_0x8405('0xbb')](loggerCatch(_0x8405('0xc3')));};Dialer['prototype']['rescheduleContact']=function(_0x552529){return BPromise[_0x8405('0xb9')]()['then'](cmHopper['rescheduleContact'](_0x552529))[_0x8405('0xbb')](loggerCatch(_0x8405('0xc4')));};Dialer['prototype'][_0x8405('0xc5')]=function(_0xccce83,_0x43bab2,_0x273e11){return BPromise[_0x8405('0xb9')]()['then'](cmHopper['unlockContact'](_0xccce83,_0x43bab2,_0x273e11))[_0x8405('0xbb')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x8405('0xad')][_0x8405('0xc6')]=function(_0x35bf91,_0xc699f6,_0x57bbb1,_0x39f036,_0x25cf48){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopper[_0x8405('0xc6')](_0x35bf91,_0xc699f6,_0x57bbb1,_0x39f036))['catch'](function(_0x1bb188){_0x25cf48['temp']-=_0x57bbb1;_0x25cf48[_0x8405('0xc7')]=_0x25cf48['temp']>0x0?_0x25cf48[_0x8405('0xc7')]:0x0;loggerCatch(_0x8405('0xc8'))(_0x1bb188);});};Dialer[_0x8405('0xad')]['getContactDialerIvr']=function(_0x489405,_0x3f0564,_0x4682b9,_0x4aaaa8){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopper[_0x8405('0xc9')](_0x489405,_0x3f0564,_0x4682b9))[_0x8405('0xbb')](function(_0x41d41b){_0x4aaaa8[_0x8405('0xc7')]-=_0x3f0564;_0x4aaaa8[_0x8405('0xc7')]=_0x4aaaa8[_0x8405('0xc7')]>0x0?_0x4aaaa8[_0x8405('0xc7')]:0x0;loggerCatch(_0x8405('0xca'))(_0x41d41b);});};Dialer[_0x8405('0xad')][_0x8405('0xcb')]=function(_0x1350bb){return BPromise[_0x8405('0xb9')]()['then'](voiceQueueRt[_0x8405('0xcb')](_0x1350bb))['catch'](loggerCatch(_0x8405('0xcc')));};Dialer['prototype'][_0x8405('0xcd')]=function(_0x2bacbd){return BPromise['resolve']()[_0x8405('0xba')](cmHopper[_0x8405('0xcd')](_0x2bacbd))[_0x8405('0xbb')](loggerCatch(_0x8405('0xce')));};Dialer[_0x8405('0xad')]['createHistory']=function(_0x7b91ee){return BPromise['resolve']()['then'](cmHopperHistory['createHistory'](_0x7b91ee))[_0x8405('0xbb')](loggerCatch(_0x8405('0xcf')));};Dialer[_0x8405('0xad')][_0x8405('0xb4')]=function(_0x272aea){if(!_[_0x8405('0x3c')](_0x272aea)&&_0x272aea!==null){if(typeof _0x272aea[_0x8405('0x71')]!==_0x8405('0xd0')){if(_0x272aea[_0x8405('0x71')]>0x0){_0x272aea['originated']-=0x1;}else{logger['error']('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x8405('0x98')](_0x8405('0xd1'));}};Dialer[_0x8405('0xad')]['loggerHandler']=function(_0x13e8af,_0x30574c){var _0x223ea4=this;return function(_0x176162){_0x223ea4[_0x8405('0xb4')](_0x30574c);logger[_0x8405('0x98')](_0x13e8af,util['inspect'](_0x176162,{'showHidden':![],'depth':null}));};};Dialer[_0x8405('0xad')][_0x8405('0xd2')]=function(_0x79bd13,_0x37fa30,_0x258070){var _0x1fc632={'state':0x19,'statedesc':_0x8405('0xd3')};this[_0x8405('0xb4')](_0x37fa30);this['saveInDb'](_[_0x8405('0xd4')](_0x1fc632,_[_0x8405('0xd5')](_0x258070,[_0x8405('0xd6'),_0x8405('0xd7'),_0x8405('0xd8'),_0x8405('0xd9'),_0x8405('0xda')])),_0x8405('0xdb'),_0x8405('0xdc'));logger[_0x8405('0x98')](_0x79bd13);};Dialer[_0x8405('0xad')][_0x8405('0xdd')]=function(_0x5051c8){return _0x5051c8===_0x8405('0xde');};Dialer[_0x8405('0xad')][_0x8405('0xdf')]=function(_0x4609f9){return!_[_0x8405('0x3c')](_0x4609f9)&&_0x4609f9&&!_['isUndefined'](_0x4609f9[_0x8405('0x3f')])&&!_[_0x8405('0x3c')](_0x4609f9[_0x8405('0x76')])&&_0x4609f9[_0x8405('0x76')]&&(this[_0x8405('0x1e')][util[_0x8405('0x7a')](_0x8405('0xe0'),_0x4609f9[_0x8405('0x3f')])][_0x8405('0xb1')]==='reachable'||this['trunks'][util[_0x8405('0x7a')]('SIP/%s',_0x4609f9[_0x8405('0x3f')])][_0x8405('0xb1')]===_0x8405('0xe1'));};Dialer[_0x8405('0xad')][_0x8405('0xe2')]=function(_0x5a46f7,_0xf8822f,_0x279ed8){this['createHistory'](_0x5a46f7)[_0x8405('0xbb')](loggerCatch(_0xf8822f));this[_0x8405('0xcd')](_0x5a46f7)['catch'](loggerCatch(_0x279ed8));};Dialer[_0x8405('0xad')][_0x8405('0x36')]=function(_0x125f92){var _0x18c80f=this[_0x8405('0x23')][_0x125f92[_0x8405('0xe3')]];var _0x557742;if(!_['isNil'](_0x125f92)&&!_[_0x8405('0xe4')](_0x125f92[_0x8405('0xe5')])&&!_['isNil'](_0x125f92[_0x8405('0xe5')]['amdstatus'])&&_0x125f92['exten']===_0x8405('0xe6')&&_0x18c80f){if(_0x18c80f[_0x8405('0x56')]!==_0x8405('0x94')&&this[_0x8405('0x1b')][_0x18c80f['queue']][_0x8405('0xe7')]&&_0x125f92['value']===_0x8405('0xe8')){delete this['uniqueId'][_0x125f92[_0x8405('0xe3')]];this[_0x8405('0xb4')](this[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]]);this['voiceQueues'][_0x18c80f[_0x8405('0xb5')]]['outboundAnswerCallsDay']+=0x1;this[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;_0x557742=new Hangup(_0x18c80f,_0x125f92);_0x557742[_0x8405('0xaa')]=0x12;_0x557742[_0x8405('0xab')]='HangupInAMD';_0x557742[_0x8405('0xe9')]=_0x8405('0xea');ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x557742,'amd'));this[_0x8405('0xe2')](_0x557742,_0x8405('0xed'),'[syncHangupInAMD]');}if(_0x18c80f['type']!=='ivr'&&this[_0x8405('0x1b')][_0x18c80f['queue']][_0x8405('0xe7')]&&_0x125f92[_0x8405('0xee')]===_0x8405('0xef')){var _0x41a28d=this;return new BPromise(function(_0x2685b4,_0x117053){delete _0x41a28d[_0x8405('0x23')][_0x125f92[_0x8405('0xe3')]];_0x41a28d[_0x8405('0xb4')](_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]]);_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]]['outboundAnswerCallsDay']+=0x1;_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;var _0x594664=_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]];var _0x160bff=new Hangup(_0x18c80f,_0x125f92);_0x160bff[_0x8405('0xaa')]=0x13;_0x160bff[_0x8405('0xab')]='Machine';_0x160bff[_0x8405('0xe9')]=_0x8405('0xea');_0x160bff[_0x8405('0xf0')]+=0x1;_0x160bff[_0x8405('0xf1')]+=0x1;_0x160bff[_0x8405('0xf2')]=!![];ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x160bff,_0x8405('0xf2')));_0x41a28d[_0x8405('0xf3')](_0x160bff)[_0x8405('0xbb')](loggerCatch(_0x8405('0xf4')));if(_0x160bff[_0x8405('0xf5')]+_0x160bff[_0x8405('0xf6')]+_0x160bff[_0x8405('0xf7')]+_0x160bff[_0x8405('0xf8')]+_0x160bff['countdropretry']+_0x160bff[_0x8405('0xf9')]+_0x160bff[_0x8405('0xf0')]+_0x160bff[_0x8405('0xfa')]>=_0x594664['dialGlobalMaxRetry']){_0x41a28d[_0x8405('0xfb')](_0x160bff,_0x2685b4,_0x117053,_0x8405('0xfc'));}else{if(_0x160bff[_0x8405('0xf0')]>=_0x594664[_0x8405('0xfd')]){_0x41a28d[_0x8405('0xfe')](_0x160bff,_0x2685b4,_0x117053,_0x8405('0xff'));}else{_0x41a28d[_0x8405('0x100')]({'active':![],'countmachineretry':_0x160bff[_0x8405('0xf0')],'scheduledat':moment()[_0x8405('0x101')](_0x594664[_0x8405('0x102')],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x160bff[_0x8405('0xd6')],'ListId':_0x160bff[_0x8405('0xd7')],'VoiceQueueId':_0x160bff[_0x8405('0xd9')]||undefined,'CampaignId':_0x160bff['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x105')));_0x2685b4({'reschedule':0x1});}}});}if(_0x18c80f['type']==='ivr'&&this[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]]['dialAMDActive']&&_0x125f92[_0x8405('0xee')]===_0x8405('0xe8')){delete this['uniqueId'][_0x125f92['uniqueid']];this['updateOriginated'](this[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]]);_0x557742=new Hangup(_0x18c80f,_0x125f92);_0x557742['state']=0x12;_0x557742[_0x8405('0xab')]=_0x8405('0x106');_0x557742['membername']=_0x8405('0xea');ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x557742,'amd'));this['saveInDb'](_0x557742,_0x8405('0x107'),_0x8405('0x108'));}if(_0x18c80f[_0x8405('0x56')]===_0x8405('0x94')&&this[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0xe7')]&&_0x125f92[_0x8405('0xee')]===_0x8405('0xef')){var _0x41a28d=this;return new BPromise(function(_0x13c306,_0x27c3f7){delete _0x41a28d[_0x8405('0x23')][_0x125f92[_0x8405('0xe3')]];_0x41a28d[_0x8405('0xb4')](_0x41a28d[_0x8405('0x1c')][_0x18c80f['queue']]);_0x41a28d['campaigns'][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5f')]+=0x1;_0x41a28d[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;var _0x2d3ec7=_0x41a28d[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]];var _0x4ed367=new Hangup(_0x18c80f,_0x125f92);_0x4ed367[_0x8405('0xaa')]=0x13;_0x4ed367['statedesc']='Machine';_0x4ed367[_0x8405('0xe9')]=_0x8405('0xea');_0x4ed367[_0x8405('0xf0')]+=0x1;_0x4ed367[_0x8405('0xf1')]+=0x1;_0x4ed367[_0x8405('0xf2')]=!![];ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x4ed367,'amd'));_0x41a28d[_0x8405('0xf3')](_0x4ed367)[_0x8405('0xbb')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x4ed367[_0x8405('0xf5')]+_0x4ed367[_0x8405('0xf6')]+_0x4ed367[_0x8405('0xf7')]+_0x4ed367['countnosuchnumberretry']+_0x4ed367[_0x8405('0x109')]+_0x4ed367['countabandonedretry']+_0x4ed367[_0x8405('0xf0')]+_0x4ed367[_0x8405('0xfa')]>=_0x2d3ec7[_0x8405('0x10a')]){_0x41a28d[_0x8405('0xfb')](_0x4ed367,_0x13c306,_0x27c3f7,'reason19\x20machine....');}else{if(_0x4ed367[_0x8405('0xf0')]>=_0x2d3ec7[_0x8405('0xfd')]){_0x41a28d[_0x8405('0xfe')](_0x4ed367,_0x13c306,_0x27c3f7,'reason\x2019\x20machine....');}else{_0x41a28d[_0x8405('0x100')]({'active':![],'countmachineretry':_0x4ed367['countmachineretry'],'scheduledat':moment()[_0x8405('0x101')](_0x2d3ec7[_0x8405('0x102')],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x4ed367[_0x8405('0xd6')],'ListId':_0x4ed367[_0x8405('0xd7')],'VoiceQueueId':_0x4ed367[_0x8405('0xd9')]||undefined,'CampaignId':_0x4ed367[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][Machine]'));_0x13c306({'reschedule':0x1});}}});}}};Dialer['prototype'][_0x8405('0x32')]=function(_0x17e5e1){var _0x5b6ce4=this[_0x8405('0x23')][_0x17e5e1[_0x8405('0xe3')]];var _0x4e1e6b=this;var _0x4b533b;if(_0x5b6ce4&&_0x5b6ce4[_0x8405('0x56')]==='ivr'){delete this['uniqueId'][_0x17e5e1[_0x8405('0xe3')]];this[_0x8405('0xb4')](this[_0x8405('0x1c')][_0x5b6ce4[_0x8405('0xb5')]]);this[_0x8405('0x1c')][_0x5b6ce4[_0x8405('0xb5')]][_0x8405('0x10b')]+=0x1;_0x4b533b=new Hangup(_0x5b6ce4,_0x17e5e1);this[_0x8405('0xf3')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10c')));this[_0x8405('0xcd')](_0x4b533b)[_0x8405('0xbb')](loggerCatch('[syncHangupIvr]'));}if(_0x5b6ce4&&_0x5b6ce4[_0x8405('0x56')]!=='ivr'&&isNotNull(this[_0x8405('0x1b')][_0x5b6ce4['queue']][_0x8405('0x10d')])){delete this[_0x8405('0x23')][_0x17e5e1['uniqueid']];this['updateOriginated'](this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]]);this[_0x8405('0x1b')][_0x5b6ce4['queue']][_0x8405('0x5f')]+=0x1;this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;_0x4b533b=new Hangup(_0x5b6ce4,_0x17e5e1);_0x4b533b['state']=0x10;_0x4b533b['statedesc']=_0x8405('0x10e');_0x4b533b['membername']='AGI';this[_0x8405('0xf3')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10c')));this[_0x8405('0xcd')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10f')));}if(_0x5b6ce4&&_0x5b6ce4[_0x8405('0x56')]!==_0x8405('0x94')&&!isNotNull(this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]]['dialQueueProject'])){delete this[_0x8405('0x23')][_0x17e5e1['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0x5b6ce4[_0x8405('0xb5')]]);this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]][_0x8405('0x110')]+=0x1;_0x4b533b=new Hangup(_0x5b6ce4,_0x17e5e1);_0x4b533b[_0x8405('0xaa')]=0xc;_0x4b533b[_0x8405('0xab')]=_0x17e5e1[_0x8405('0x111')];_0x4b533b[_0x8405('0xe9')]='Unknow';this[_0x8405('0xf3')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10c')));this[_0x8405('0xcd')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10f')));}};Dialer['prototype'][_0x8405('0x112')]=function(_0x3ee3b6){var _0x57a469=this[_0x8405('0x23')][_0x3ee3b6[_0x8405('0xe3')]];var _0x4cc423=this;if(this['voiceQueues'][_0x3ee3b6[_0x8405('0xb5')]]){if(_0x57a469&&_0x57a469[_0x8405('0x56')]!==_0x8405('0x94')){delete this['uniqueId'][_0x3ee3b6[_0x8405('0xe3')]];this['voiceQueues'][_0x3ee3b6[_0x8405('0xb5')]][_0x8405('0x5f')]+=0x1;var _0x5acdf6=new AgentComplete(_0x57a469,_0x3ee3b6);if(_0x3ee3b6[_0x8405('0x113')]===_0x8405('0x114')){_0x5acdf6['agiafterat']=this[_0x8405('0x1b')][_0x3ee3b6['queue']]['dialQueueProject2']&&this[_0x8405('0x1b')][_0x3ee3b6['queue']]['dialAgiAfterHangupAgent']?moment()[_0x8405('0x7a')](_0x8405('0x104')):undefined;}this[_0x8405('0xf3')](_0x5acdf6)['catch'](loggerCatch(_0x8405('0x115')));this[_0x8405('0xcd')](_0x5acdf6)['catch'](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x8405('0xad')][_0x8405('0x116')]=function(_0x1dea1d){if(this[_0x8405('0x1b')][_0x1dea1d[_0x8405('0xb5')]]){if(this['uniqueId'][_0x1dea1d[_0x8405('0xe3')]]&&this[_0x8405('0x23')][_0x1dea1d[_0x8405('0xe3')]][_0x8405('0x56')]!==_0x8405('0x94')){this['updateOriginated'](this[_0x8405('0x1b')][_0x1dea1d[_0x8405('0xb5')]]);this['uniqueId'][_0x1dea1d['uniqueid']][_0x8405('0x117')]=moment()[_0x8405('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x8405('0xad')][_0x8405('0x118')]=function(_0x3847f2){this['createHistory'](_0x3847f2)[_0x8405('0xbb')](loggerCatch(_0x8405('0x115')));this[_0x8405('0xcd')](_0x3847f2)[_0x8405('0xbb')](loggerCatch(_0x8405('0x119')));};Dialer[_0x8405('0xad')][_0x8405('0x2c')]=function(_0x2d5dc7){var _0x3e4ed0=this[_0x8405('0x23')][_0x2d5dc7['uniqueid']];var _0x17a1de=this;if(this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]]){if(_0x3e4ed0&&_0x3e4ed0['type']!==_0x8405('0x94')){delete this[_0x8405('0x23')][_0x2d5dc7[_0x8405('0xe3')]];this['updateOriginated'](this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]]);_0x3e4ed0[_0x8405('0x11a')]=moment()['format'](_0x8405('0x104'));var _0x16c524=new QueueCallerAbandon(_0x3e4ed0,_0x2d5dc7);if(getSeconds(_0x3e4ed0[_0x8405('0x11a')],_0x3e4ed0[_0x8405('0x11b')])>=_0x3e4ed0[_0x8405('0x11c')]){this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x6b')]+=0x1;this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x11d')]+=0x1;this['voiceQueues'][_0x2d5dc7['queue']]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x16c524[_0x8405('0xaa')]=0xa;_0x16c524[_0x8405('0xab')]='Drop';_0x16c524[_0x8405('0x11e')]=_0x8405('0x11f');_0x16c524['agiafterat']=this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x120')]?moment()[_0x8405('0x7a')](_0x8405('0x104')):undefined;_0x16c524['countdropretry']+=0x1;_0x16c524['countglobal']+=0x1;if(_0x16c524[_0x8405('0x109')]>=this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x121')]){this[_0x8405('0x118')](_0x16c524);}else{this[_0x8405('0x100')]({'active':![],'countdropretry':_0x16c524[_0x8405('0x109')],'scheduledat':moment()[_0x8405('0x101')](this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x122')],'minutes')[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x3e4ed0['ContactId'],'ListId':_0x3e4ed0[_0x8405('0xd7')],'VoiceQueueId':_0x3e4ed0[_0x8405('0xd9')]||undefined,'CampaignId':_0x3e4ed0[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x123')));var _0x11bf15=new History(_0x16c524);_0x11bf15['state']=0xa;_0x11bf15[_0x8405('0xab')]=_0x8405('0x124');_0x11bf15[_0x8405('0xac')]=moment()['format'](_0x8405('0x104'));_0x11bf15[_0x8405('0x125')]=_0x11bf15[_0x8405('0xac')];_0x11bf15[_0x8405('0x126')]=_0x16c524[_0x8405('0x126')];_0x11bf15[_0x8405('0x127')]=_0x16c524[_0x8405('0x127')];this[_0x8405('0xf3')](_0x11bf15)[_0x8405('0xbb')](loggerCatch(_0x8405('0x128')));}}else{this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x6a')]+=0x1;this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]]['outboundDropCallsDayCallersExit']+=0x1;_0x16c524[_0x8405('0xaa')]=0xb;_0x16c524[_0x8405('0xab')]=_0x8405('0x129');_0x16c524['dropreason']='CALLEREXIT';_0x16c524['countabandonedretry']+=0x1;_0x16c524[_0x8405('0xf1')]+=0x1;if(_0x16c524[_0x8405('0xf9')]>=this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x12a')]){this[_0x8405('0x118')](_0x16c524);}else{this[_0x8405('0x100')]({'active':![],'countabandonedretry':_0x16c524['countabandonedretry'],'scheduledat':moment()[_0x8405('0x101')](this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x12b')],_0x8405('0x103'))['format'](_0x8405('0x104')),'ContactId':_0x3e4ed0[_0x8405('0xd6')],'ListId':_0x3e4ed0[_0x8405('0xd7')],'VoiceQueueId':_0x3e4ed0[_0x8405('0xd9')]||undefined,'CampaignId':_0x3e4ed0[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x12c')));var _0x11bf15=new History(_0x16c524);_0x11bf15[_0x8405('0xaa')]=0xb;_0x11bf15[_0x8405('0xab')]=_0x8405('0x129');_0x11bf15[_0x8405('0xac')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));_0x11bf15[_0x8405('0x125')]=_0x11bf15['starttime'];_0x11bf15[_0x8405('0x126')]=_0x16c524[_0x8405('0x126')];_0x11bf15[_0x8405('0x127')]=_0x16c524[_0x8405('0x127')];this[_0x8405('0xf3')](_0x11bf15)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer['prototype'][_0x8405('0x34')]=function(_0x4f0184){if(this['actions'][_0x4f0184['uniqueid']]){this[_0x8405('0x21')][_0x4f0184[_0x8405('0xe3')]]['channel']=_0x4f0184[_0x8405('0xb2')];}if(this[_0x8405('0x23')][_0x4f0184[_0x8405('0xe3')]]){this[_0x8405('0x23')][_0x4f0184['uniqueid']][_0x8405('0xb2')]=_0x4f0184[_0x8405('0xb2')];}};Dialer[_0x8405('0xad')][_0x8405('0x12d')]=function(_0x5cadbc){if(strategy[this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0xb5')]]['strategy']]==='roundrobin'){if(this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]]&&_[_0x8405('0xe4')](this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]]['locked'])&&_0x5cadbc[_0x8405('0xb1')]==='1'&&_0x5cadbc[_0x8405('0x12f')]==='0'){if(this[_0x8405('0x1d')][_0x5cadbc[_0x8405('0x130')]]){if(!this[_0x8405('0x1d')][_0x5cadbc['stateinterface']]['locked']){this[_0x8405('0x1d')][_0x5cadbc[_0x8405('0x130')]][_0x8405('0x131')]=!![];this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0x131')]=!![];this['actions'][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0x130')]=_0x5cadbc[_0x8405('0x130')];}}}}else if((strategy[this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x4d')]]||_0x8405('0x14'))===_0x8405('0x14')){if(this['actions'][_0x5cadbc['actionid']]){if(this[_0x8405('0x1d')][_0x5cadbc['stateinterface']]){this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0x130')]=_0x5cadbc[_0x8405('0x130')];if(_[_0x8405('0xe4')](this[_0x8405('0x28')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0xb5')]])){this[_0x8405('0x28')][this['actions'][_0x5cadbc[_0x8405('0x12e')]]['queue']]=[];}this[_0x8405('0x28')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]]['queue']]['push'](_[_0x8405('0xd4')](_[_0x8405('0xd5')](this['actions'][_0x5cadbc[_0x8405('0x12e')]],[_0x8405('0x132'),_0x8405('0x130')]),{'status':_0x5cadbc[_0x8405('0xb1')],'paused':_0x5cadbc[_0x8405('0x12f')]}));}}}};function unlockQueueStatus(_0x28344b,_0x1d3ac7){setTimeout(function(){if(_[_0x8405('0x3c')](_0x28344b[_0x8405('0x133')])){loggerBooked['error'](_0x8405('0x134'),_0x1d3ac7);}_0x28344b[_0x8405('0x133')]=!![];loggerBooked['info'](_0x8405('0x135'),_0x1d3ac7,JSON[_0x8405('0x48')](_[_0x8405('0xd5')](_0x28344b,['name',_0x8405('0x133')])));},0x1f3);}Dialer[_0x8405('0xad')][_0x8405('0x39')]=function(_0x2d1d8e){var _0x559aac=this;var _0x4c2c74=_0x559aac[_0x8405('0x1b')][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]];if(strategy[this['voiceQueues'][this['actions'][_0x2d1d8e['actionid']]['queue']]['strategy']]===_0x8405('0x15')){if(this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]&&this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['stateinterface']){this['preview'][_0x8405('0x136')](this[_0x8405('0x21')][_0x2d1d8e['actionid']]['idHopper'],this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0x130')])[_0x8405('0xbb')](function(_0x50fadb){logger[_0x8405('0x98')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x8405('0x99')](_0x50fadb,{'showHidden':![],'depth':null}));})[_0x8405('0x18')](function(){_0x559aac[_0x8405('0xb4')](_0x559aac[_0x8405('0x1b')][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]);_0x559aac[_0x8405('0x1d')][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']]['stateinterface']][_0x8405('0x131')]=![];delete _0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]];unlockQueueStatus(_0x4c2c74);});}else{this[_0x8405('0xb4')](this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd6')],'ListId':this[_0x8405('0x21')][_0x2d1d8e['actionid']]['ListId'],'VoiceQueueId':this['actions'][_0x2d1d8e['actionid']][_0x8405('0xd9')]||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xda')]||undefined})['catch'](loggerCatch(_0x8405('0x137')));delete this[_0x8405('0x21')][_0x2d1d8e['actionid']];unlockQueueStatus(_0x4c2c74);}}else if((strategy[this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['queue']]['strategy']]||_0x8405('0x14'))===_0x8405('0x14')){var _0x4f3e2e;if(this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]&&!_['isEmpty'](this['queueBooked'][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]])){if(this[_0x8405('0x29')][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]){this[_0x8405('0x29')][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]=this[_0x8405('0x29')][this[_0x8405('0x21')][_0x2d1d8e['actionid']]['queue']]?this[_0x8405('0x29')][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]:this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]?this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x138')]||0x0:0x0;}this['queueBooked'][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]['_rr']=this[_0x8405('0x29')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]];for(var _0x23e3e3=0x0;_0x23e3e3<this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x9b')];_0x23e3e3+=0x1){_0x4f3e2e=rr(this[_0x8405('0x28')][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]);this['queueBookedRR'][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]=this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x138')];if(_0x4f3e2e[_0x8405('0xb1')]==='1'&&_0x4f3e2e[_0x8405('0x12f')]==='0'){break;}}if(!_['isNil'](_0x4f3e2e)){this[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]][_0x8405('0x139')]=_[_0x8405('0x3c')](this[_0x8405('0x1d')][_0x4f3e2e['stateinterface']][_0x8405('0x139')])?!![]:this[_0x8405('0x1d')][_0x4f3e2e['stateinterface']][_0x8405('0x139')];}loggerBooked[_0x8405('0x7d')](_0x8405('0x13a'),_0x2d1d8e['actionid'],'Agent:\x20',JSON[_0x8405('0x48')](_['pick'](this[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]],[_0x8405('0x3f'),'unlockRR'])),_0x8405('0x13b'),JSON[_0x8405('0x48')](_0x4f3e2e[_0x8405('0x132')]));if(!_[_0x8405('0xe4')](_0x4f3e2e)&&_0x4f3e2e[_0x8405('0xb1')]==='1'&&_0x4f3e2e[_0x8405('0x12f')]==='0'&&this[_0x8405('0x1d')][_0x4f3e2e['stateinterface']]['unlockRR']){this[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]][_0x8405('0x139')]=![];this[_0x8405('0x28')][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]=[];this[_0x8405('0x1a')]['run'](_0x4f3e2e[_0x8405('0x132')],_0x4f3e2e['stateinterface'])[_0x8405('0xbb')](function(_0x3690f8){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0x8405('0x99')](_0x3690f8,{'showHidden':![],'depth':null}));})[_0x8405('0x18')](function(){_0x559aac[_0x8405('0xb4')](_0x559aac['voiceQueues'][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]);setTimeout(function(){_0x559aac[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]]['unlockRR']=!![];loggerBooked[_0x8405('0x7d')](_0x8405('0x13c'),_0x2d1d8e[_0x8405('0x12e')],'Agent:\x20',JSON[_0x8405('0x48')](_[_0x8405('0xd5')](_0x559aac[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]],[_0x8405('0x3f'),'unlockRR'])),'contactAgent-idHopper:\x20',JSON[_0x8405('0x48')](_0x4f3e2e['idHopper']));},0xc7);delete _0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']];unlockQueueStatus(_0x4c2c74,_0x2d1d8e[_0x8405('0x12e')]);});}else{loggerBooked[_0x8405('0x7d')](_0x8405('0x13d'));this[_0x8405('0xb4')](this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]);this[_0x8405('0x100')]({'active':![],'ContactId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd6')],'ListId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['ListId'],'VoiceQueueId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd9')]||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x137')));delete this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]];unlockQueueStatus(_0x4c2c74);}}else{loggerBooked[_0x8405('0x7d')]('[booked][unlock2]');this[_0x8405('0xb4')](this[_0x8405('0x1b')][this['actions'][_0x2d1d8e['actionid']]['queue']]);this[_0x8405('0x100')]({'active':![],'ContactId':this['actions'][_0x2d1d8e['actionid']]['ContactId'],'ListId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd7')],'VoiceQueueId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd9')]||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x13e')));delete this['actions'][_0x2d1d8e['actionid']];unlockQueueStatus(_0x4c2c74);}}else{loggerBooked[_0x8405('0x7d')](_0x8405('0x13f'));this[_0x8405('0xb4')](this[_0x8405('0x1b')][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]);this[_0x8405('0x100')]({'active':![],'ContactId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['ContactId'],'ListId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['ListId'],'VoiceQueueId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]];unlockQueueStatus(_0x4c2c74);}};Dialer[_0x8405('0xad')]['loopCampaigns']=function(){var _0xf94c1c=this;setInterval(function(){_0xf94c1c['syncCampaigns']();},0x3e8);};Dialer[_0x8405('0xad')][_0x8405('0x140')]=function(_0x294eb9){var _0x9f2398=this;return function(){if(!_0x9f2398[_0x8405('0xdf')](_0x294eb9[_0x8405('0x75')])){if(!_0x9f2398['isTrunkReachable'](_0x294eb9[_0x8405('0x141')])){_0x294eb9[_0x8405('0x3d')]='TRUNK_IS_NOT_REACHABLE';throw _0x294eb9[_0x8405('0x3f')]+_0x8405('0x142');}}};};Dialer[_0x8405('0xad')][_0x8405('0x143')]=function(_0x57648f,_0x430df6,_0x4e423b,_0x1e69fd){var _0x286a66=this;return function(){var _0x655b38=!![];return _0x286a66[_0x8405('0x144')](_0x57648f,_0x430df6,_0x4e423b,_0x1e69fd,_0x655b38);};};Dialer[_0x8405('0xad')]['checkIfTimeIntervals']=function(_0x2a5c4d,_0x3e47d8,_0xf6a5ee,_0x396207){var _0x205b2a=this;return function(){var _0xa78ac6=![];return _0x205b2a['ifTime'](_0x2a5c4d['Intervals'],_0x3e47d8,_0xf6a5ee,_0x396207,_0xa78ac6);};};Dialer[_0x8405('0xad')][_0x8405('0x144')]=function(_0x4f166a,_0x4b7b9f,_0x3c620a,_0x2b3b9b,_0x4a5a85){var _0x15b8d0=[];return new BPromise(function(_0x181c51,_0x74c10c){if(!isNotNull(_0x4f166a)){_0x2b3b9b[_0x8405('0x3d')]=_0x8405('0x44');return _0x74c10c(msgResponse(_0x8405('0x144'),_0x8405('0x145'),_0x3c620a+_0x8405('0x146')));}if(_[_0x8405('0x46')](_0x4f166a)){_0x2b3b9b['message']='INTERVAL_IS_EMPTY';return _0x74c10c(msgResponse(_0x8405('0x144'),_0x8405('0x145'),_0x3c620a+_0x8405('0x147')));}if(_0x4b7b9f&&_[_0x8405('0x3c')](config[_0x8405('0x148')][_0x4b7b9f])){_0x2b3b9b[_0x8405('0x3d')]=_0x8405('0x149');return _0x74c10c(msgResponse(_0x8405('0x144'),_0x8405('0x145'),_0x3c620a+_0x8405('0x14a')+_0x4b7b9f));}if(_[_0x8405('0x14b')](_0x4f166a)){for(var _0x4176ce=0x0;_0x4176ce<_0x4f166a['length'];_0x4176ce+=0x1){_0x15b8d0[_0x8405('0x14c')](ami[_0x8405('0xb0')]({'action':_0x8405('0x14d'),'command':util[_0x8405('0x7a')](_0x8405('0x14e'),_0x4f166a[_0x4176ce]['interval'],!_[_0x8405('0x3c')](config[_0x8405('0x148')][_0x4b7b9f])?_0x4b7b9f:'')})['then'](function(_0x407d12){return _0x407d12[_0x8405('0x14f')][_0x8405('0x150')](_0x8405('0x151'))>=0x0;})[_0x8405('0xbb')](myreject(_0x74c10c)));}}else{_0x15b8d0[_0x8405('0x14c')](ami[_0x8405('0xb0')]({'action':_0x8405('0x14d'),'command':util[_0x8405('0x7a')]('iftime\x20%s,%s',_0x4f166a,!_['isUndefined'](config[_0x8405('0x148')][_0x4b7b9f])?_0x4b7b9f:'')})[_0x8405('0xba')](function(_0x589c9e){return _0x589c9e['content'][_0x8405('0x150')](_0x8405('0x151'))>=0x0;})[_0x8405('0xbb')](myreject(_0x74c10c)));}BPromise[_0x8405('0x152')](_0x15b8d0)[_0x8405('0xba')](function(_0x297121){var _0x1bd42e=_[_0x8405('0x153')](_0x297121);if(_0x1bd42e){return _0x181c51(_0x1bd42e);}else{_0x2b3b9b[_0x8405('0x3d')]=_0x4a5a85?'GLOBAL_INTERVAL_IS_OVERTIME':_0x8405('0x154');return _0x74c10c(msgResponse(_0x8405('0x155'),_0x8405('0x145'),_0x8405('0x156')+_0x4a5a85+'\x20'+_0x3c620a+_0x8405('0x157')+util[_0x8405('0x99')](_0x4f166a,{'showHidden':![],'depth':null})+_0x8405('0x158')+_0x4b7b9f));}})[_0x8405('0xbb')](function(_0x318ec2){return _0x74c10c(msgResponse('ifTime','Failure',JSON[_0x8405('0x48')](_0x318ec2)));});});};Dialer[_0x8405('0xad')][_0x8405('0x159')]=function(_0x5beedc){var _0x536f3d=this;return function(){switch(_0x5beedc[_0x8405('0x15a')]){case _0x8405('0x15b'):freeVariablesPredictive(_0x5beedc);_0x536f3d['handlePower'](_0x5beedc,0x1);break;case _0x8405('0x15c'):freeVariablesPredictive(_0x5beedc);_0x536f3d[_0x8405('0x15d')](_0x5beedc,_0x5beedc[_0x8405('0x15e')]);break;case'predictive':_0x536f3d['predictive'](_0x5beedc);break;case'booked':freeVariablesPredictive(_0x5beedc);_0x536f3d[_0x8405('0x15d')](_0x5beedc,0x1);break;default:freeVariablesPredictive(_0x5beedc);logger[_0x8405('0x98')](_0x8405('0x15f'),_0x5beedc['name'],_0x8405('0x160'));}};};Dialer['prototype'][_0x8405('0x161')]=function(_0x4e915c){var _0x28109f=this;return function(){_0x28109f[_0x8405('0x162')](_0x4e915c);};};Dialer[_0x8405('0xad')]['syncQueueSummary']=function(_0x3ad088){var _0x478479=this;if(isNotPreview(_0x3ad088['dialMethod'])){if(isVoiceQueueOutbound(_0x3ad088[_0x8405('0x56')])&&isActive(_0x3ad088[_0x8405('0x59')])){_0x3ad088[_0x8405('0xa4')]=!![];BPromise['resolve']()[_0x8405('0xba')](checkIsLoggedIn(_0x3ad088,_0x3ad088[_0x8405('0x163')]))[_0x8405('0xba')](checkIsActive(_0x3ad088,_0x3ad088[_0x8405('0x59')]))[_0x8405('0xba')](checkInterval(_0x3ad088))[_0x8405('0xba')](_0x478479[_0x8405('0x140')](_0x3ad088))[_0x8405('0xba')](_0x478479[_0x8405('0x143')](_0x3ad088[_0x8405('0x164')],_0x3ad088[_0x8405('0x165')],_0x3ad088[_0x8405('0x3f')],_0x3ad088))['then'](_0x478479[_0x8405('0x166')](_0x3ad088['Interval'],_0x3ad088[_0x8405('0x165')],_0x3ad088[_0x8405('0x3f')],_0x3ad088))[_0x8405('0xba')](_0x478479[_0x8405('0x159')](_0x3ad088))['catch'](loggerCatchQueueSummary('[syncQueueSummary]',_0x3ad088));}else{notSendMessagesQueue(_0x3ad088);}}else{freeVariablesPredictive(_0x3ad088);}};Dialer[_0x8405('0xad')][_0x8405('0x167')]=function(){var _0x5a7896=this;var _0xc36f0f;for(var _0xa0bb32 in this[_0x8405('0x1c')]){if(typeof this['campaigns'][_0xa0bb32]!==_0x8405('0xd0')){_0xc36f0f=this[_0x8405('0x1c')][_0xa0bb32];if(isCampaignIvr(_0xc36f0f['type'])&&isActive(_0xc36f0f[_0x8405('0x76')])){_0xc36f0f[_0x8405('0xa4')]=!![];BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](checkIsActive(_0xc36f0f,_0xc36f0f[_0x8405('0x76')]))['then'](checkInterval(_0xc36f0f))['then'](_0x5a7896[_0x8405('0x140')](_0xc36f0f))[_0x8405('0xba')](_0x5a7896[_0x8405('0x143')](_0xc36f0f['dialGlobalInterval'],_0xc36f0f[_0x8405('0x165')],_0xc36f0f[_0x8405('0x3f')],_0xc36f0f))[_0x8405('0xba')](_0x5a7896[_0x8405('0x166')](_0xc36f0f[_0x8405('0x43')],_0xc36f0f[_0x8405('0x165')],_0xc36f0f[_0x8405('0x3f')],_0xc36f0f))[_0x8405('0xba')](_0x5a7896[_0x8405('0x161')](_0xc36f0f))[_0x8405('0xbb')](loggerCatchQueueSummary(_0x8405('0x168'),_0xc36f0f));}else{notSendMessagesCampaign(_0xc36f0f);}}}};function getCallerIdRandom(_0x3f9c1c,_0x172d9a){var _0x5f1cbc;var _0x1172af;var _0x18501d;if(_0x172d9a<=0x0){_0x172d9a=0x1;}_0x5f1cbc=new RegExp(_0x8405('0x169')+_0x172d9a+'}$');_0x1172af=Math[_0x8405('0x16a')](0xa,_0x172d9a-0x1);_0x18501d=Math[_0x8405('0x16a')](0xa,_0x172d9a)-0x1;return util[_0x8405('0x7a')]('%s',_['replace'](_0x3f9c1c,_0x5f1cbc,_[_0x8405('0x16b')](_0x1172af,_0x18501d)));}function extractCalleridName(_0xcc1a74){var _0x2bc842=_0xcc1a74[_0x8405('0x16c')](/"(.*?)"/);return _0x2bc842?_0x2bc842[0x1]:_0xcc1a74;}function extractCalleridNumber(_0x1819e2){var _0x14efe2=_0x1819e2[_0x8405('0x16c')](/<(.*?)>/);return _0x14efe2?_0x14efe2[0x1]:_0x1819e2;}Dialer[_0x8405('0xad')][_0x8405('0x16d')]=function(_0x2c6961,_0x5d99ef){var _0x5f3643=this;var _0x4ef248=uuid['v4']();this[_0x8405('0x21')][_0x4ef248]=new Action(_0x2c6961,_0x5d99ef,_0x4ef248);return new BPromise(function(_0x5b29,_0x460b2a){if(_[_0x8405('0x3c')](_0x2c6961)&&typeof _0x2c6961!==_0x8405('0x16e')){return _0x460b2a(msgResponse(_0x8405('0x16f'),_0x8405('0x145'),_0x8405('0x170')));}if(_[_0x8405('0x3c')](_0x5d99ef[_0x8405('0x171')][_0x8405('0x172')])||_0x5d99ef[_0x8405('0x171')]['phone']===null){return _0x460b2a(msgResponse(_0x8405('0x16f'),'Failure','contact\x20is\x20undefine'));}var _0x39a33f={'XMD-CALLERID':_0x5f3643[_0x8405('0x21')][_0x4ef248][_0x8405('0x173')](),'XMD-AGI':_0x2c6961[_0x8405('0x10d')]?util[_0x8405('0x7a')](_0x8405('0x174'),ipAgi,_0x2c6961[_0x8405('0x10d')]):_0x8405('0x175'),'XMD-AGIAFTER':_0x2c6961['dialQueueProject2']?util[_0x8405('0x7a')](_0x8405('0x174'),ipAgi,_0x2c6961['dialQueueProject2']):_0x8405('0x175'),'XMD-QUEUE':_0x2c6961[_0x8405('0x56')]==='outbound'?util[_0x8405('0x7a')]('\x22%s,%s%s,,,%s\x22',_0x2c6961[_0x8405('0x3f')],_0x2c6961[_0x8405('0x176')]||'',_0x2c6961[_0x8405('0x177')]?'c':'',_0x2c6961['dialQueueTimeout']||0x3):_0x8405('0x175'),'XMD-CONTACTID':_0x5d99ef['ContactId'],'XMD-CDRTYPE':_0x8405('0x178'),'CALLERID(all)':_0x5f3643['actions'][_0x4ef248]['getCaller'](),'XMD-AMD':_0x2c6961[_0x8405('0xe7')]?_0x8405('0x179'):'NONE','XMD-DESTINATION':_0x8405('0xe6')};if(_0x2c6961[_0x8405('0xe7')]){_0x39a33f[_0x8405('0x17a')]=_0x2c6961[_0x8405('0x17b')]||0x9c4;_0x39a33f[_0x8405('0x17c')]=_0x2c6961[_0x8405('0x17d')]||0x5dc;_0x39a33f[_0x8405('0x17e')]=_0x2c6961['dialAMDAfterGreetingSilence']||0x320;_0x39a33f[_0x8405('0x17f')]=_0x2c6961[_0x8405('0x180')]||0x1388;_0x39a33f[_0x8405('0x181')]=_0x2c6961[_0x8405('0x182')]||0x64;_0x39a33f[_0x8405('0x183')]=_0x2c6961[_0x8405('0x184')]||0x32;_0x39a33f[_0x8405('0x185')]=_0x2c6961[_0x8405('0x186')]||0x3;_0x39a33f[_0x8405('0x187')]=_0x2c6961[_0x8405('0x188')]||0x100;_0x39a33f['XMD-AMDMAXIMUMWORDLENGTH']=_0x2c6961['dialAMDMaximumWordLength']||0x1388;}if(_0x2c6961[_0x8405('0x56')]===_0x8405('0x4c')){_0x39a33f['XMD-VOICEQUEUEID']=_0x5d99ef[_0x8405('0xd9')];}else{_0x39a33f['XMD-CAMPAIGNID']=_0x5d99ef[_0x8405('0xda')];}for(var _0x4ff3e1 in _0x5d99ef[_0x8405('0x171')]){if(typeof _0x5d99ef['Contact'][_0x4ff3e1]!==_0x8405('0xd0')){if(isNotNull(_0x5d99ef['Contact'][_0x4ff3e1])&&_0x4ff3e1!=='id'&&_0x4ff3e1!=='tags'&&_0x4ff3e1!=='createdAt'&&_0x4ff3e1!=='updatedAt'){_0x39a33f[util[_0x8405('0x7a')](_0x8405('0x189'),_0x8405('0x18a'),_[_0x8405('0x18b')](_0x4ff3e1))]=_0x5d99ef[_0x8405('0x171')][_0x4ff3e1];}}}var _0x2c3426=_0x5f3643[_0x8405('0xdf')](_0x2c6961[_0x8405('0x75')])?getCallerId(_0x2c6961[_0x8405('0x75')][_0x8405('0x77')],_0x2c6961[_0x8405('0x5a')],_0x2c6961[_0x8405('0x18c')]>0x0?getCallerIdRandom(_0x2c6961[_0x8405('0x5b')],_0x2c6961[_0x8405('0x18c')]):_0x2c6961['dialOriginateCallerIdNumber']):getCallerId(_[_0x8405('0xe4')](_0x2c6961[_0x8405('0x141')])?_0x2c6961[_0x8405('0x75')][_0x8405('0x77')]:_0x2c6961[_0x8405('0x141')][_0x8405('0x77')],_0x2c6961[_0x8405('0x5a')],_0x2c6961['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x2c6961[_0x8405('0x5b')],_0x2c6961[_0x8405('0x18c')]):_0x2c6961[_0x8405('0x5b')]);if(_0x2c3426){_0x39a33f[_0x8405('0x18d')]=_0x5f3643[_0x8405('0x21')][_0x4ef248][_0x8405('0x18e')]=extractCalleridName(_0x2c3426);_0x39a33f[_0x8405('0x18f')]=_0x5f3643[_0x8405('0x21')][_0x4ef248]['originatecalleridnum']=extractCalleridNumber(_0x2c3426);}return ami[_0x8405('0xb0')]({'actionid':_0x4ef248,'action':_0x8405('0x16f'),'channel':_0x5f3643[_0x8405('0xdf')](_0x2c6961['Trunk'])?util[_0x8405('0x7a')](_0x8405('0x190'),_0x2c6961['Trunk']['name'],isNotNull(_0x2c6961[_0x8405('0x5d')])?_0x2c6961['dialPrefix'][_0x8405('0x191')]()||'':'',_0x2c6961['dialCutDigit']>0x0?_0x5d99ef[_0x8405('0x171')]['phone'][_0x8405('0x192')](_0x2c6961[_0x8405('0x193')]):_0x5d99ef[_0x8405('0x171')][_0x8405('0x172')]):util['format'](_0x8405('0x190'),_[_0x8405('0xe4')](_0x2c6961['TrunkBackup'])?_0x2c6961['Trunk'][_0x8405('0x3f')]:_0x2c6961['TrunkBackup'][_0x8405('0x3f')],isNotNull(_0x2c6961[_0x8405('0x5d')])?_0x2c6961['dialPrefix'][_0x8405('0x191')]()||'':'',_0x2c6961[_0x8405('0x193')]>0x0?_0x5d99ef[_0x8405('0x171')]['phone'][_0x8405('0x192')](_0x2c6961[_0x8405('0x193')]):_0x5d99ef[_0x8405('0x171')][_0x8405('0x172')]),'callerid':_0x2c3426,'Exten':_0x8405('0xe6'),'Context':_0x8405('0x194'),'Priority':'1','variable':_0x39a33f,'timeout':(_0x2c6961[_0x8405('0x5c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4ef248})[_0x8405('0xba')](function(_0x19212e){return _0x5b29(_0x19212e);})[_0x8405('0xbb')](function(_0x130e24){_0x2c6961['outboundOriginateFailureCallsDay']+=0x1;var _0x4b2165=new History(_0x5f3643['actions'][_0x4ef248]);logger[_0x8405('0x98')](util[_0x8405('0x7a')]('[originateError]:\x20%s',JSON[_0x8405('0x48')](_0x130e24)));_0x4b2165[_0x8405('0xaa')]=0xe;_0x4b2165[_0x8405('0xab')]='OriginateError';_0x4b2165[_0x8405('0xac')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));_0x4b2165['endtime']=_0x4b2165[_0x8405('0xac')];_0x5f3643['createHistory'](_0x4b2165)['catch'](loggerCatch('[originate][error]'));_0x5f3643['moveContactManagedDialer'](_0x4b2165)[_0x8405('0xbb')](loggerCatch(_0x8405('0x195')))[_0x8405('0x18')](function(){delete _0x5f3643['actions'][_0x4ef248];return _0x460b2a(msgResponse(_0x8405('0x16f'),_0x8405('0x196'),_0x8405('0x197')));});});});};Dialer[_0x8405('0xad')]['syncOriginateResponse']=function(_0xc1b123){var _0x31b3f7=this[_0x8405('0x21')][_0xc1b123['actionid']];if(_0x31b3f7){delete this[_0x8405('0x21')][_0xc1b123[_0x8405('0x12e')]];_0x31b3f7['responsetime']=moment()[_0x8405('0x7a')](_0x8405('0x104'));var _0x3fe4d1=_0x31b3f7[_0x8405('0x56')]==='ivr'?this[_0x8405('0x1c')][_0x31b3f7[_0x8405('0xb5')]]:this[_0x8405('0x1b')][_0x31b3f7[_0x8405('0x198')]()];if(!this[_0x8405('0xdd')](_0xc1b123[_0x8405('0x199')])){this[_0x8405('0xb4')](_0x3fe4d1);return this[_0x8405('0x19a')](_0x31b3f7,_0x3fe4d1,_0xc1b123)[_0x8405('0xbb')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x8405('0x23')][_0xc1b123[_0x8405('0xe3')]]=_0x31b3f7;}};Dialer[_0x8405('0xad')]['checkRetriveMax']=function(_0x4b69fe,_0x5ee977,_0x15d896){var _0x52628b=new History(_0x5ee977);if(_0x52628b[_0x8405('0xf5')]+_0x52628b[_0x8405('0xf6')]+_0x52628b['countnoanswerretry']+_0x52628b[_0x8405('0xf8')]+_0x52628b[_0x8405('0x109')]+_0x52628b[_0x8405('0xf9')]+_0x52628b[_0x8405('0xf0')]+_0x52628b['countagentrejectretry']>=_0x15d896[_0x8405('0x10a')]-0x1){return!![];}switch(_0x4b69fe){case 0x3:if(_0x52628b['countnoanswerretry']>=_0x15d896['dialNoAnswerMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x52628b[_0x8405('0xf7')]+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x19b')],_0x8405('0x103'))['format'](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x19c')));break;case 0x5:if(_0x52628b['countbusyretry']>=_0x15d896[_0x8405('0x19d')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x52628b['countbusyretry']+=0x1,'scheduledat':moment()['add'](_0x15d896['dialBusyRetryFrequency'],_0x8405('0x103'))[_0x8405('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b['ListId'],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})['catch'](loggerCatch(_0x8405('0x19e')));break;case 0x8:if(_0x52628b[_0x8405('0xf6')]>=_0x15d896['dialCongestionMaxRetry']-0x1){return!![];}this[_0x8405('0x100')]({'active':![],'countcongestionretry':_0x52628b['countcongestionretry']+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896['dialCongestionRetryFrequency'],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})['catch'](loggerCatch(_0x8405('0x19f')));break;case 0x0:if(_0x52628b[_0x8405('0xf8')]>=_0x15d896[_0x8405('0x1a0')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x52628b['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x1a1')],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b['ContactId'],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b['VoiceQueueId']||undefined,'CampaignId':_0x52628b['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x52628b[_0x8405('0x109')]>=_0x15d896['dialDropMaxRetry']-0x1){return!![];}this[_0x8405('0x100')]({'active':![],'countdropretry':_0x52628b['countdropretry']+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x122')],_0x8405('0x103'))['format'](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b['ListId'],'VoiceQueueId':_0x52628b['VoiceQueueId']||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x52628b[_0x8405('0xf9')]>=_0x15d896[_0x8405('0x12a')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x52628b[_0x8405('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x15d896[_0x8405('0x12b')],'minutes')[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x52628b[_0x8405('0xf0')]>=_0x15d896[_0x8405('0xfd')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x52628b[_0x8405('0xf0')]+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896['dialMachineRetryFrequency'],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x105')));break;case 0x14:if(_0x52628b['countagentrejectretry']>=_0x15d896['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x8405('0x100')]({'active':![],'countagentrejectretry':_0x52628b[_0x8405('0xfa')]+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x1a2')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52628b['ContactId'],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b['VoiceQueueId']||undefined,'CampaignId':_0x52628b['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x1a3')));break;default:return!![];}};Dialer['prototype'][_0x8405('0x19a')]=function(_0x12600b,_0x60529b,_0x518872){var _0x2a5f81=this;var _0x27c8dc=new History(_0x12600b);return new BPromise(function(_0xcd0a55,_0x6aed09){if(_[_0x8405('0x3c')](_0x60529b)&&typeof _0x60529b!==_0x8405('0x16e')){return _0x6aed09(msgResponse(_0x8405('0x1a4'),_0x8405('0x145'),_0x8405('0x1a5')));}if(_['isUndefined'](_0x518872)&&typeof _0x518872!==_0x8405('0x16e')){return _0x6aed09(msgResponse(_0x8405('0x1a4'),_0x8405('0x145'),_0x8405('0x1a6')));}switch(_0x518872['reason']){case'0':_0x60529b[_0x8405('0x1a7')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x0;_0x27c8dc['statedesc']='NoSuchNumber';_0x27c8dc[_0x8405('0xf8')]+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')](_0x8405('0x1a8'),ut['buildObj'](_0x12600b,'nosuchnumber'));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0xf4')));if(_0x2a5f81[_0x8405('0x1a9')](0x0,_0x12600b,_0x60529b)){if(_0x27c8dc['countnosuchnumberretry']>=_0x60529b[_0x8405('0x1a0')]){_0x2a5f81['createStateFinal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1aa'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1aa'));}}break;case'3':_0x60529b[_0x8405('0x64')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x3;_0x27c8dc[_0x8405('0xab')]=_0x8405('0x1ab');_0x27c8dc['countnoanswerretry']+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')]('custom:agentnoanswer',ut['buildObj'](_0x12600b,_0x8405('0x1ac')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1ad')));if(_0x2a5f81[_0x8405('0x1a9')](0x3,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf7')]>=_0x60529b['dialNoAnswerMaxRetry']){_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x203\x20ringing\x20no\x20answer');}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1ae'));}}break;case'5':_0x60529b[_0x8405('0x61')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x5;_0x27c8dc['statedesc']=_0x8405('0x1af');_0x27c8dc[_0x8405('0xf5')]+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')](_0x8405('0x1b0'),ut[_0x8405('0xec')](_0x12600b,_0x8405('0x1b1')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1b2')));if(_0x2a5f81['checkRetriveMax'](0x5,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf5')]>=_0x60529b[_0x8405('0x19d')]){_0x2a5f81['createStateFinal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1b3'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x205\x20busy');}}break;case'8':_0x60529b[_0x8405('0x62')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x8;_0x27c8dc[_0x8405('0xab')]=_0x8405('0x1b4');_0x27c8dc[_0x8405('0xf6')]+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')]('custom:agentcongestion',ut[_0x8405('0xec')](_0x12600b,_0x8405('0x1b5')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1b6')));if(_0x2a5f81[_0x8405('0x1a9')](0x8,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf6')]>=_0x60529b[_0x8405('0x1b7')]){_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1b8'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x208\x20congestion');}}break;case'11':_0x60529b[_0x8405('0x1b9')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0xb;_0x27c8dc['statedesc']='Abandoned';_0x27c8dc[_0x8405('0xf9')]+=0x1;_0x27c8dc['countglobal']+=0x1;_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1ba')));if(_0x2a5f81[_0x8405('0x1a9')](0xb,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf9')]>=_0x60529b[_0x8405('0x12a')]){_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1bb'));}else{_0x2a5f81['stateGlobal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1bb'));}}break;case'20':_0x60529b[_0x8405('0x67')]+=0x1;_0x27c8dc['state']=0x14;_0x27c8dc[_0x8405('0xab')]=_0x8405('0x1bc');_0x27c8dc['countagentrejectretry']+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')](_0x8405('0x1bd'),ut[_0x8405('0xec')](_0x12600b,_0x8405('0x1be')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1bf')));if(_0x2a5f81[_0x8405('0x1a9')](0x14,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xfa')]>=_0x60529b['dialAgentRejectMaxRetry']){_0x2a5f81['createStateFinal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1c0'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x2020\x20agentreject');}}break;default:_0x60529b['outboundUnknownCallsDay']+=0x1;_0x27c8dc[_0x8405('0xaa')]=0xc;_0x27c8dc[_0x8405('0xab')]=_0x518872[_0x8405('0x113')];_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)['catch'](loggerCatch(_0x8405('0x1c1')));if(_0x2a5f81[_0x8405('0x1a9')](_0x518872[_0x8405('0x113')],_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf5')]+_0x27c8dc['countcongestionretry']+_0x27c8dc[_0x8405('0xf7')]+_0x27c8dc[_0x8405('0xf8')]+_0x27c8dc[_0x8405('0x109')]+_0x27c8dc[_0x8405('0xf9')]+_0x27c8dc[_0x8405('0xf0')]+_0x27c8dc[_0x8405('0xfa')]>=_0x60529b[_0x8405('0x10a')]){_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x518872[_0x8405('0x113')]);}else{_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x518872[_0x8405('0x113')]);}}}});};Dialer['prototype'][_0x8405('0xfb')]=function(_0xa14fdc,_0x59b67e,_0x265857,_0x1535da){var _0x2725f3=new Final(_0xa14fdc);_0x2725f3[_0x8405('0xaa')]=0xf;_0x2725f3[_0x8405('0xab')]=_0x8405('0x1c2');this[_0x8405('0xfe')](_0x2725f3,_0x59b67e,_0x265857,_0x1535da);};Dialer[_0x8405('0xad')]['createStateFinal']=function(_0x4d340e,_0x8652e,_0x3adda8,_0xdc1775){this[_0x8405('0xcd')](_0x4d340e)['then'](function(){return _0x8652e(msgResponse('[callProgressDetecting]',_0x8405('0xde'),_0xdc1775));})[_0x8405('0xbb')](function(){return _0x3adda8(msgResponse(_0x8405('0x1c3'),_0x8405('0x145'),'contact\x20not\x20moved'));});};Dialer[_0x8405('0xad')][_0x8405('0xb')]=function(_0x3bbbc9){var _0x195fd8=_0x3bbbc9[_0x8405('0x1c4')]/0x64;var _0x3106dd=_0x3bbbc9[_0x8405('0x11d')]/(_0x3bbbc9[_0x8405('0x11d')]+_0x3bbbc9['outboundAnswerCallsDay']);var _0x18d987=Math[_0x8405('0x1c5')](_0x3bbbc9[_0x8405('0x1c6')]*(_0x3bbbc9[_0x8405('0x1c7')]/0x64));var _0x457247=Math[_0x8405('0x1c5')](_0x3bbbc9['predictiveIntervalAvailable']*(_0x3bbbc9['predictiveIntervalMinThreshold']/0x64));var _0x965838=_0x3bbbc9[_0x8405('0x4f')]+_0x3bbbc9[_0x8405('0x54')];var _0x482b31=Math[_0x8405('0x1c8')](_0x3bbbc9[_0x8405('0x72')]*_0x3bbbc9[_0x8405('0x74')]*_0x3bbbc9[_0x8405('0x6e')]*_0x3bbbc9[_0x8405('0x6f')]);if(_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x26')])){if(!_['isUndefined'](_0x3bbbc9['startPredictive'])){_0x3bbbc9[_0x8405('0x25')]=undefined;loggerPredictive['error'](_0x8405('0x1c9'),_0x8405('0x1ca'));}if(!_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x92')])){loggerPredictive[_0x8405('0x98')](_0x8405('0x1c9'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x3bbbc9[_0x8405('0x92')]);_0x3bbbc9[_0x8405('0x92')]=undefined;}_0x3bbbc9[_0x8405('0x26')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1cb'),_0x3bbbc9['startProgressive']);this['handlePower'](_0x3bbbc9,0x1);}else if(ifInterval(_0x3bbbc9['dialPredictiveInterval'],_0x3bbbc9['startProgressive'])){this['handlePower'](_0x3bbbc9,0x1);loggerPredictiveCalls[_0x8405('0x7d')](_0x8405('0x1cc'),_0x3bbbc9[_0x8405('0x26')],_0x3bbbc9['name']);_0x3bbbc9['erlangCalls']=0x0;_0x3bbbc9[_0x8405('0x6d')]=0x0;}else if(_0x195fd8<_0x3106dd&&_0x3bbbc9[_0x8405('0x1cd')]===_0x8405('0x1ce')){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x8405('0x1cf'),_0x3106dd,'startProgressive',_0x3bbbc9[_0x8405('0x3f')]);}else if(_0x482b31<_0x3bbbc9[_0x8405('0x6d')]&&_0x3bbbc9[_0x8405('0x1cd')]===_0x8405('0x1ce')){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')](_0x8405('0x1d0'),'Max\x20Drop\x20',_0x482b31,'Drop\x20in\x20this\x20interval',_0x3bbbc9[_0x8405('0x6d')],_0x8405('0x26'),_0x3bbbc9[_0x8405('0x3f')]);}else if(!ifInterval(_0x3bbbc9['dialPredictiveInterval'],_0x3bbbc9[_0x8405('0x26')])&&_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x25')])&&!_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x26')])){_0x3bbbc9[_0x8405('0x25')]=moment()['format'](_0x8405('0x104'));loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1d1'),_0x3bbbc9[_0x8405('0x25')]);this[_0x8405('0xc1')](_0x3bbbc9[_0x8405('0x1d2')])[_0x8405('0xba')](this[_0x8405('0x1d3')](_0x3bbbc9))['then'](mergeDataErlangB(_0x3bbbc9))['then'](this['startMethodPredictive'](_0x3bbbc9))['catch'](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x3bbbc9));}else if(!ifInterval(_0x3bbbc9['dialPredictiveInterval'],_0x3bbbc9['startPredictive'])){_0x3bbbc9[_0x8405('0x6d')]=0x0;_0x3bbbc9[_0x8405('0x25')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));loggerPredictive['info'](_0x3bbbc9[_0x8405('0x3f')],'recalculate\x20predictive\x20at',_0x3bbbc9[_0x8405('0x25')]);clearInterval(_0x3bbbc9[_0x8405('0x92')]);_0x3bbbc9[_0x8405('0x92')]=undefined;this[_0x8405('0xc1')](_0x3bbbc9[_0x8405('0x1d2')])[_0x8405('0xba')](this['getDataPredictive'](_0x3bbbc9))[_0x8405('0xba')](mergeDataErlangB(_0x3bbbc9))[_0x8405('0xba')](this['startMethodPredictive'](_0x3bbbc9))['catch'](loggerCatchPredictive(_0x8405('0x1d4'),_0x3bbbc9));}else if(_0x3bbbc9['predictiveIntervalAvailable']&&_0x965838<_0x3bbbc9[_0x8405('0x1c6')]-_0x457247){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1d5'),_0x965838,_0x8405('0x1d6'),_0x3bbbc9[_0x8405('0x1c6')],'-',_0x457247,'=',_0x3bbbc9[_0x8405('0x1c6')]-_0x457247,')');}else if(_0x3bbbc9[_0x8405('0x1c6')]&&_0x965838>_0x3bbbc9[_0x8405('0x1c6')]+_0x18d987){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1d5'),_0x965838,_0x8405('0x1d7'),_0x3bbbc9[_0x8405('0x1c6')],'+',_0x18d987,'=',_0x3bbbc9[_0x8405('0x1c6')]+_0x18d987,')');}};Dialer['prototype'][_0x8405('0x1d3')]=function(_0x4d815d){var _0x4e2cee=this;return function(_0x1cb4e9){return new BPromise(function(_0xd33136,_0x430408){_[_0x8405('0xd4')](_0x4d815d,_0x1cb4e9[0x0]);if(checkGetDataPredictive(_0x1cb4e9[0x0])){var _0x1b9b52=_0x4d815d['predictiveIntervalAvailable']=_0x4d815d[_0x8405('0x54')]+_0x4d815d[_0x8405('0x4f')];var _0x4dc102=_0x4d815d['dialPredictiveInterval']*0x3c;var _0x308339=_0x1cb4e9[0x0][_0x8405('0x83')]+_0x1cb4e9[0x0][_0x8405('0x69')];var _0x39d8c2=(_0x1cb4e9[0x0][_0x8405('0x68')]+_0x1cb4e9[0x0][_0x8405('0x6b')]+_0x1cb4e9[0x0][_0x8405('0x6a')])/_0x1cb4e9[0x0][_0x8405('0x84')];_0x4d815d[_0x8405('0x6e')]=_0x39d8c2>0x0?_0x39d8c2:0x1;switch(_0x4d815d[_0x8405('0x1cd')]){case _0x8405('0x1ce'):var _0x47728e=_0x4d815d[_0x8405('0x1c4')]/0x64;return _0x4e2cee[_0x8405('0x1d8')](_0x1b9b52,_0x4dc102,_0x308339,_0x39d8c2,_0x47728e)[_0x8405('0xba')](function(_0x299a7c){return _0xd33136(_0x299a7c);});case _0x8405('0x1d9'):var _0x306048=_0x4d815d[_0x8405('0x1c4')]/0x64;return _0x4e2cee[_0x8405('0x1da')](_0x1b9b52,_0x4dc102,_0x308339,_0x39d8c2,_0x306048)[_0x8405('0xba')](function(_0x11dded){return _0xd33136(_0x11dded);});default:return _0x430408(msgResponse(_0x8405('0x1db'),_0x8405('0x145'),'Unknown\x20Predictive'));}}else{return _0x430408(msgResponse(_0x8405('0x1db'),_0x8405('0x145'),_0x8405('0x1dc')));}});};};Dialer[_0x8405('0xad')][_0x8405('0x1dd')]=function(_0x543ae7){var _0x36b158=this;return function(_0x107702){return new BPromise(function(_0x27f750,_0x21b4c4){_[_0x8405('0xd4')](_0x543ae7,_0x107702[0x0]);if(checkGetDataPredictive(_0x107702[0x0])){loggerPredictive[_0x8405('0x7d')](JSON[_0x8405('0x48')](_0x107702[0x0]));if(_0x543ae7['dialPredictiveOptimization']===_0x8405('0x1ce')){return _0x36b158[_0x8405('0xcb')](_0x543ae7['id'])[_0x8405('0xba')](function(_0x5f599f){var _0x1d9b0c=_0x543ae7['loggedIn']-_0x5f599f[0x0][_0x8405('0x1de')];var _0x406902=_0x543ae7[_0x8405('0x1d2')]*0x3c;var _0x1c822f=_0x107702[0x0][_0x8405('0x83')]+_0x107702[0x0]['predictiveIntervalAvgHoldtime'];var _0x4bda8b=(_0x107702[0x0][_0x8405('0x68')]+_0x107702[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x107702[0x0][_0x8405('0x6a')])/_0x107702[0x0][_0x8405('0x84')];var _0x5bfa6d=_0x543ae7[_0x8405('0x1c4')]/0x64;_0x543ae7[_0x8405('0x70')]=_0x5f599f[0x0][_0x8405('0x1de')]||0x0;_0x543ae7[_0x8405('0x6e')]=_0x4bda8b>0x0?_0x4bda8b:0x1;return _0x36b158[_0x8405('0x1d8')](_0x1d9b0c,_0x406902,_0x1c822f,_0x4bda8b,_0x5bfa6d);})[_0x8405('0xba')](function(_0x1b900c){return _0x27f750(_0x1b900c);})[_0x8405('0xbb')](function(_0x38ec88){return _0x21b4c4(msgResponse(_0x8405('0x1df'),_0x8405('0x145'),JSON['stringify'](_0x38ec88)));});}if(_0x543ae7[_0x8405('0x1cd')]===_0x8405('0x1d9')){return _0x36b158['getVoiceQueueRtPauses'](_0x543ae7['id'])[_0x8405('0xba')](function(_0x1ffc2b){var _0x3bdb83=_0x543ae7[_0x8405('0x163')]-_0x1ffc2b[0x0][_0x8405('0x1de')];var _0x87e058=_0x543ae7['dialPredictiveInterval']*0x3c;var _0x5b7e41=_0x107702[0x0][_0x8405('0x83')]+_0x107702[0x0][_0x8405('0x69')];var _0x1c45f9=(_0x107702[0x0]['predictiveIntervalAnsweredCalls']+_0x107702[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x107702[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x107702[0x0][_0x8405('0x84')];var _0x295ecf=_0x543ae7['dialPredictiveOptimizationPercentage']/0x64;_0x543ae7[_0x8405('0x70')]=_0x1ffc2b[0x0]['outboundQueuePauses']||0x0;_0x543ae7[_0x8405('0x6e')]=_0x1c45f9>0x0?_0x1c45f9:0x1;return _0x36b158['busyFactor'](_0x3bdb83,_0x87e058,_0x5b7e41,_0x1c45f9,_0x295ecf);})[_0x8405('0xba')](function(_0x1e1a72){return _0x27f750(_0x1e1a72);})['catch'](function(_0x19c4a5){return _0x21b4c4(msgResponse(_0x8405('0x1df'),_0x8405('0x145'),JSON['stringify'](_0x19c4a5)));});}}else{return _0x21b4c4(msgResponse('[getDataPredictive]','Failure',_0x8405('0x1dc')));}});};};Dialer[_0x8405('0xad')][_0x8405('0x1e0')]=function(_0x4b9600){var _0x218ac0=this;return function(){var _0x141bfe=0x0;var _0x234885=Math[_0x8405('0x1c8')](_0x4b9600[_0x8405('0x73')]*0x3e8);if(_0x234885>0x0){_0x234885=_0x234885<0x64?0x64:_0x234885;loggerPredictive[_0x8405('0x7d')](_0x4b9600[_0x8405('0x3f')],_0x8405('0x1e1'),_0x234885,_0x8405('0x49'));_0x4b9600['handlePredictive']=setInterval(function(){_0x218ac0['handlePredictive'](_0x4b9600);loggerPredictiveCalls[_0x8405('0x7d')](_0x8405('0x1e2'),_0x141bfe+=0x1);},_0x234885);}else{loggerPredictive['info'](_0x4b9600['name'],_0x8405('0x1e3'));}};};Dialer['prototype'][_0x8405('0x1e4')]=function(_0x382732,_0x1e08f2){var _0x15f22f=this;return function(_0x191cf8){if(_[_0x8405('0x46')](_0x191cf8)){if(_[_0x8405('0xe4')](_0x1e08f2['UserId'])||!_0x1e08f2['recallme']){if(_0x382732[_0x8405('0x15a')]==='booked'){_0x382732[_0x8405('0x133')]=_[_0x8405('0x3c')](_0x382732['queueStatusComplete'])?!![]:_0x382732[_0x8405('0x133')];var _0x56309f=uuid['v4']();_0x15f22f['actions'][_0x56309f]=new Action(_0x382732,_0x1e08f2,_0x56309f);loggerBooked[_0x8405('0x7d')](_0x8405('0x1e5'),_0x56309f,_0x8405('0x1e6'),JSON[_0x8405('0x48')](_0x382732[_0x8405('0x133')]),'Queue:\x20',_0x382732[_0x8405('0x3f')]);if(_0x382732[_0x8405('0x133')]){_0x382732['queueStatusComplete']=![];_0x15f22f['queueBooked'][_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xb5')]]=[];ami[_0x8405('0xb0')]({'actionid':_0x56309f,'action':_0x8405('0x1e7'),'queue':_0x382732[_0x8405('0x3f')]})[_0x8405('0xbb')](function(){_0x15f22f[_0x8405('0xb4')](_0x382732);_0x15f22f[_0x8405('0x100')]({'active':![],'ContactId':_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xd6')],'ListId':_0x15f22f['actions'][_0x56309f][_0x8405('0xd7')],'VoiceQueueId':_0x15f22f['actions'][_0x56309f]['VoiceQueueId']||undefined,'CampaignId':_0x15f22f[_0x8405('0x21')][_0x56309f]['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x1e8')));delete _0x15f22f['actions'][_0x56309f];});}else{loggerBooked['info'](_0x8405('0x1e9'),JSON['stringify'](_0x382732[_0x8405('0x133')]),_0x8405('0x1ea'),_0x382732[_0x8405('0x3f')]);_0x15f22f['updateOriginated'](_0x382732);_0x15f22f[_0x8405('0x100')]({'active':![],'ContactId':_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xd6')],'ListId':_0x15f22f['actions'][_0x56309f][_0x8405('0xd7')],'VoiceQueueId':_0x15f22f['actions'][_0x56309f][_0x8405('0xd9')]||undefined,'CampaignId':_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x15f22f[_0x8405('0x21')][_0x56309f];}}else{return _0x15f22f['actionOriginate'](_0x382732,_0x1e08f2);}}else{if(getDiff(_0x1e08f2[_0x8405('0x1eb')])<_0x382732[_0x8405('0x1ec')]*0x3c){if(_0x1e08f2[_0x8405('0x1ed')]&&!_0x1e08f2[_0x8405('0x1ed')][_0x8405('0x1ee')]){_0x15f22f['preview'][_0x8405('0x136')](_0x1e08f2['id'])['finally'](function(){_0x15f22f[_0x8405('0xb4')](_0x382732);});}else{_0x15f22f[_0x8405('0xc5')]({'active':![]},_0x1e08f2['id'],0x1)[_0x8405('0x18')](function(){_0x15f22f[_0x8405('0xb4')](_0x382732);});}}else{_0x382732['outboundReCallsDay']+=0x1;_0x15f22f[_0x8405('0xb4')](_0x382732);if(_0x382732[_0x8405('0x1ef')]){_0x15f22f[_0x8405('0x100')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1e08f2[_0x8405('0xd6')],'ListId':_0x1e08f2['ListId'],'VoiceQueueId':_0x1e08f2[_0x8405('0xd9')]||undefined,'CampaignId':_0x1e08f2[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x1f0')));_0x15f22f[_0x8405('0xf3')](createObjHistory(_0x382732,_0x1e08f2,_0x8405('0x1f1'),0x17,_0x8405('0x1f2')))['catch'](loggerCatch(_0x8405('0x1f3')));}else{_0x15f22f['saveInDb'](createObjHistory(_0x382732,_0x1e08f2,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0x8405('0x1f4'),'[Originate][HistoryRecallClose]');}}}}else{_0x382732['outboundBlacklistCallsDay']+=0x1;_0x15f22f[_0x8405('0xe2')](createObjHistory(_0x382732,_0x1e08f2,'BLACKLIST',0xd,_0x8405('0x1f5')),_0x8405('0x1f6'),'[Originate][MoveBlacklist]');throw _0x8405('0x1f7');}};};Dialer[_0x8405('0xad')][_0x8405('0x162')]=function(_0x5e33ca){var _0x147546=this;var _0x555fae=_0x5e33ca[_0x8405('0x1f8')]-_0x5e33ca[_0x8405('0x71')]-_0x5e33ca[_0x8405('0xc7')];emitCampaignSummary(_0x5e33ca);if(_0x555fae>0x0){if(_0x555fae>this[_0x8405('0x1f')]){_0x555fae=this[_0x8405('0x1f')];}_0x5e33ca['temp']+=_0x555fae;this[_0x8405('0xc9')](_0x5e33ca['id'],_0x555fae,_0x5e33ca[_0x8405('0x1f9')],_0x5e33ca)[_0x8405('0xba')](function(_0x447da5){_0x5e33ca[_0x8405('0xc7')]-=_0x555fae;_0x5e33ca['temp']=_0x5e33ca[_0x8405('0xc7')]>0x0?_0x5e33ca[_0x8405('0xc7')]:0x0;if(!checkContactEmpty(_0x447da5)){_0x5e33ca[_0x8405('0x3d')]=_0x8405('0xa1');logger[_0x8405('0x7d')](_0x8405('0x1fa')+_0x5e33ca[_0x8405('0x3f')]);}else{_0x5e33ca[_0x8405('0x71')]+=_0x447da5[_0x8405('0x9b')];_0x5e33ca[_0x8405('0x3d')]=_0x8405('0x1fb');for(var _0xea533d=0x0;_0xea533d<_0x447da5['length'];_0xea533d+=0x1){_0x5e33ca[_0x8405('0x1fc')]+=0x1;if(_[_0x8405('0xe4')](_0x447da5[_0xea533d])||_[_0x8405('0xe4')](_0x447da5[_0xea533d][_0x8405('0x171')])||_['isNil'](_0x447da5[_0xea533d]['Contact'][_0x8405('0x172')])){_0x147546[_0x8405('0xd2')](_0x8405('0x1fd'),_0x5e33ca,_0x447da5[_0xea533d]);}else{_0x147546[_0x8405('0xbf')](_[_0x8405('0xd5')](_0x447da5[_0xea533d],['CampaignId',_0x8405('0x1fe')]))['then'](_0x147546['checkContactBlack'](_0x5e33ca,_0x447da5[_0xea533d]))[_0x8405('0xbb')](_0x147546[_0x8405('0x1ff')](_0x8405('0x200'),_0x5e33ca));}}}})[_0x8405('0xbb')](loggerGetContactDialer(_0x8405('0x201'),_0x5e33ca,_0x555fae));}};Dialer[_0x8405('0xad')][_0x8405('0x15d')]=function(_0x1be31e,_0x194b5e){var _0x2b07d5=this;var _0x280bfb=[];var _0x44589e=_0x194b5e>=0x1?_0x194b5e:0x1;if(_0x1be31e[_0x8405('0x15a')]===_0x8405('0x9')){_0x44589e=0x1;}var _0x3d06cc=Math['floor'](_0x1be31e[_0x8405('0x4f')]*_0x44589e)-_0x1be31e[_0x8405('0x71')]-_0x1be31e[_0x8405('0xc7')];emitVoiceQueueSummary(_0x1be31e);if(_0x1be31e['dialLimitQueue']>0x0){var _0x457f6c=_0x1be31e['dialLimitQueue']-_0x1be31e[_0x8405('0x71')]-_0x1be31e[_0x8405('0x54')]-_0x1be31e[_0x8405('0xc7')]-_0x1be31e['pTalking'];if(_0x3d06cc>_0x457f6c){_0x3d06cc=_0x457f6c;}}if(_0x3d06cc>0x0){if(_0x1be31e[_0x8405('0x15a')]==='booked'){_0x3d06cc=0x1;}if(_0x3d06cc>this[_0x8405('0x1f')]){_0x3d06cc=this[_0x8405('0x1f')];}_0x1be31e[_0x8405('0xc7')]+=_0x3d06cc;for(var _0x113e0d in this['agents']){if(typeof this['agents'][_0x113e0d]!==_0x8405('0xd0')){if(this['agents'][_0x113e0d][_0x8405('0xaa')]===_0x8405('0x202')&&this['agents'][_0x113e0d][_0x8405('0xb1')]==='reachable'){_0x280bfb['push'](this[_0x8405('0x1d')][_0x113e0d]['id']);}}}this['getContactDialer'](_0x1be31e['id'],_0x280bfb,_0x3d06cc,_0x1be31e['dialOrderByScheduledAt'],_0x1be31e)['then'](function(_0x136f1b){_0x1be31e[_0x8405('0xc7')]-=_0x3d06cc;_0x1be31e[_0x8405('0xc7')]=_0x1be31e[_0x8405('0xc7')]>0x0?_0x1be31e['temp']:0x0;if(!checkContactEmpty(_0x136f1b)){_0x2b07d5[_0x8405('0xb8')](_0x1be31e)[_0x8405('0xba')](sendMessageReschedule(_0x1be31e))[_0x8405('0xbb')](loggerCatch(_0x8405('0xbc')));}else{_0x1be31e[_0x8405('0x71')]+=_0x136f1b[_0x8405('0x9b')];_0x1be31e['message']=_0x1be31e[_0x8405('0x15a')]===_0x8405('0x9')?_0x8405('0x179'):_0x8405('0x1fb');for(var _0x38493c=0x0;_0x38493c<_0x136f1b['length'];_0x38493c+=0x1){if(_['isNil'](_0x136f1b[_0x38493c])||_['isNil'](_0x136f1b[_0x38493c][_0x8405('0x171')])||_[_0x8405('0xe4')](_0x136f1b[_0x38493c][_0x8405('0x171')][_0x8405('0x172')])){_0x2b07d5['emptyContact'](_0x8405('0x1fd'),_0x1be31e,_0x136f1b[_0x38493c]);}else{_0x2b07d5[_0x8405('0xbd')](_[_0x8405('0xd5')](_0x136f1b[_0x38493c],[_0x8405('0xd9'),_0x8405('0x1fe')]))[_0x8405('0xba')](_0x2b07d5[_0x8405('0x1e4')](_0x1be31e,_0x136f1b[_0x38493c]))[_0x8405('0xbb')](_0x2b07d5[_0x8405('0x1ff')](_0x8405('0x1fd'),_0x1be31e));}}}})[_0x8405('0xbb')](loggerGetContactDialer('[getContactDialer2]',_0x1be31e,_0x3d06cc));}};Dialer['prototype'][_0x8405('0x92')]=function(_0x4a4977){if(_0x4a4977[_0x8405('0x203')]>0x0){var _0x1e3989=_0x4a4977['dialLimitQueue']-_0x4a4977[_0x8405('0x71')]-_0x4a4977['talking'];if(_0x1e3989>0x0){this['tryOriginatePredictive'](_0x4a4977);}else{loggerPredictiveCalls[_0x8405('0x7d')](_0x8405('0x204'));}}else{this[_0x8405('0x205')](_0x4a4977);}};Dialer[_0x8405('0xad')][_0x8405('0x205')]=function(_0x336dd1){var _0x1d7832=this;var _0x5df3ed=[];_0x336dd1[_0x8405('0x71')]+=0x1;for(var _0x4540bb in this['agents']){if(typeof this[_0x8405('0x1d')][_0x4540bb]!=='undefined'){if(this[_0x8405('0x1d')][_0x4540bb]['state']===_0x8405('0x202')&&this[_0x8405('0x1d')][_0x4540bb][_0x8405('0xb1')]===_0x8405('0x206')){_0x5df3ed['push'](this[_0x8405('0x1d')][_0x4540bb]['id']);}}}this[_0x8405('0xc6')](_0x336dd1['id'],_0x5df3ed,0x1,_0x336dd1['dialOrderByScheduledAt'],_0x336dd1)[_0x8405('0xba')](function(_0x2f4d3a){if(!checkContactEmpty(_0x2f4d3a)){checkContactLowerLimitOriginate(_0x336dd1,0x1,0x0);_0x1d7832['countReScheduled'](_0x336dd1)[_0x8405('0xba')](sendMessageReschedule(_0x336dd1))[_0x8405('0xbb')](loggerCatch('[countReScheduled]\x20'));}else{_0x336dd1['message']=_0x8405('0x1fb');if(_[_0x8405('0xe4')](_0x2f4d3a[0x0])||_[_0x8405('0xe4')](_0x2f4d3a[0x0][_0x8405('0x171')])||_[_0x8405('0xe4')](_0x2f4d3a[0x0]['Contact'][_0x8405('0x172')])){_0x1d7832[_0x8405('0xd2')]('[actionOriginate]\x20',_0x336dd1,_0x2f4d3a[0x0]);}else{_0x1d7832[_0x8405('0xbd')](_['pick'](_0x2f4d3a[0x0],[_0x8405('0xd9'),_0x8405('0x1fe')]))[_0x8405('0xba')](_0x1d7832['checkContactBlack'](_0x336dd1,_0x2f4d3a[0x0]))[_0x8405('0xbb')](_0x1d7832[_0x8405('0x1ff')]('[actionOriginatePredictive]\x20',_0x336dd1));}}})['catch'](loggerGetContactDialer(_0x8405('0x207'),_0x336dd1,0x1));emitVoiceQueueSummary(_0x336dd1);};Dialer[_0x8405('0xad')][_0x8405('0x1d8')]=function(_0x287a58,_0x55a655,_0x457698,_0x515871,_0x5bff20,_0x19988b){loggerPredictive[_0x8405('0x7d')](_0x8405('0x208'));loggerPredictive[_0x8405('0x7d')](_0x8405('0x209'),_0x287a58);loggerPredictive[_0x8405('0x7d')](_0x8405('0x20a'),_0x55a655);loggerPredictive[_0x8405('0x7d')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x457698);loggerPredictive[_0x8405('0x7d')](_0x8405('0x20b'),_0x515871);loggerPredictive[_0x8405('0x7d')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5bff20);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8e'));return new BPromise(function(_0x526724,_0xfece8b){if(_0x287a58<=0x0||isNaN(_0x287a58)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x20d')+_0x287a58));}if(_0x457698<=0x0||isNaN(_0x457698)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x20e')+_0x457698));}if(_0x515871<=0x0||isNaN(_0x515871)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x20f')+_0x515871));}if(_0x55a655<=0x0||isNaN(_0x55a655)){return _0xfece8b(msgResponse(_0x8405('0x20c'),'Error',_0x8405('0x210')+_0x55a655));}if(_0x5bff20<=0x0||isNaN(_0x5bff20)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x211')+_0x5bff20));}_0x19988b=_0x19988b||0x0;var _0x5b276f=0x1/_0x457698;var _0x30dcb5=0x0;var _0x3980f3=0x0;var _0x1b9a60=0x0;var _0x21c4c8=0x0;for(var _0x31fa3b=0x0;_0x1b9a60<_0x5bff20;_0x31fa3b+=0x1){_0x3980f3=_0x31fa3b/_0x55a655;_0x30dcb5=(_0x515871*_0x3980f3+_0x19988b)/_0x5b276f;_0x1b9a60=erlangb(_0x30dcb5,_0x287a58);_0x21c4c8=_0x30dcb5/_0x287a58*(0x1-erlangb(_0x30dcb5,_0x287a58));}return _0x526724({'erlangCalls':_0x31fa3b,'erlangCallToSecond':_0x55a655/_0x31fa3b,'erlangAbandonmentRate':_0x1b9a60,'erlangBusyFactor':_0x21c4c8});});};Dialer[_0x8405('0xad')][_0x8405('0x1da')]=function(_0x82735f,_0x16d871,_0x5f3e14,_0x3b0568,_0x1b473d,_0x46ae64){loggerPredictive[_0x8405('0x7d')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive['info']('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x82735f);loggerPredictive[_0x8405('0x7d')](_0x8405('0x20a'),_0x16d871);loggerPredictive[_0x8405('0x7d')](_0x8405('0x212'),_0x5f3e14);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3b0568);loggerPredictive[_0x8405('0x7d')](_0x8405('0x213'),_0x1b473d);loggerPredictive['info'](_0x8405('0x8e'));return new BPromise(function(_0xdbbbad,_0x4f51b0){if(_0x82735f<=0x0||isNaN(_0x82735f)){return _0x4f51b0(msgResponse(_0x8405('0x214'),_0x8405('0x196'),_0x8405('0x20d')+_0x82735f));}if(_0x5f3e14<=0x0||isNaN(_0x5f3e14)){return _0x4f51b0(msgResponse('[busyFactor]',_0x8405('0x196'),_0x8405('0x20e')+_0x5f3e14));}if(_0x3b0568<=0x0||isNaN(_0x3b0568)){return _0x4f51b0(msgResponse('[busyFactor]',_0x8405('0x196'),_0x8405('0x20f')+_0x3b0568));}if(_0x16d871<=0x0||isNaN(_0x16d871)){return _0x4f51b0(msgResponse(_0x8405('0x214'),_0x8405('0x196'),_0x8405('0x210')+_0x16d871));}if(_0x1b473d<=0x0||isNaN(_0x1b473d)){return _0x4f51b0(msgResponse(_0x8405('0x214'),'Error',_0x8405('0x215')+_0x1b473d));}_0x46ae64=_0x46ae64||0x0;var _0x564345=0x1/_0x5f3e14;var _0x2f4b6b=0x0;var _0x37b863=0x0;var _0x5c4b67=0x0;var _0x3e1098=0x0;for(var _0x3a842f=0x0;_0x3e1098<_0x1b473d;_0x3a842f+=0x1){_0x37b863=_0x3a842f/_0x16d871;_0x2f4b6b=(_0x3b0568*_0x37b863+_0x46ae64)/_0x564345;_0x5c4b67=erlangb(_0x2f4b6b,_0x82735f);_0x3e1098=_0x2f4b6b/_0x82735f*(0x1-erlangb(_0x2f4b6b,_0x82735f));}return _0xdbbbad({'erlangCalls':_0x3a842f,'erlangCallToSecond':_0x16d871/_0x3a842f,'erlangAbandonmentRate':_0x5c4b67,'erlangBusyFactor':_0x3e1098});});};module[_0x8405('0x216')]=Dialer;
\ No newline at end of file
index ff2f05a..70ea367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa683=['connectedlinename','reason','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','endtime','ringtime','talktime','membername'];(function(_0x238469,_0x18495d){var _0x16cb9a=function(_0x29db1d){while(--_0x29db1d){_0x238469['push'](_0x238469['shift']());}};_0x16cb9a(++_0x18495d);}(_0xa683,0xda));var _0x3a68=function(_0x5a6f5f,_0x5baa1a){_0x5a6f5f=_0x5a6f5f-0x0;var _0x680a94=_0xa683[_0x5a6f5f];return _0x680a94;};'use strict';var util=require(_0x3a68('0x0'));var _=require('lodash');var moment=require(_0x3a68('0x1'));function getSeconds(_0x5ee4d1,_0x489137){var _0x221925=moment(_0x5ee4d1)[_0x3a68('0x2')](0x0);var _0xd5c71d=moment(_0x489137)['milliseconds'](0x0);return _0x221925['diff'](_0xd5c71d,'seconds');}function QueueCallerAbandon(_0x189fe9,_0x292546){this[_0x3a68('0x3')]=_0x189fe9['scheduledat'];this[_0x3a68('0x4')]=_0x189fe9[_0x3a68('0x4')];this[_0x3a68('0x5')]=_0x189fe9[_0x3a68('0x4')]===_0x3a68('0x6')?_0x3a68('0x7'):_0x189fe9[_0x3a68('0x4')];this[_0x3a68('0x8')]=_0x189fe9[_0x3a68('0x8')];this[_0x3a68('0x9')]=_0x189fe9[_0x3a68('0x9')];this[_0x3a68('0xa')]=_0x189fe9['countnoanswerretry'];this[_0x3a68('0xb')]=_0x189fe9[_0x3a68('0x8')]+_0x189fe9['countcongestionretry']+_0x189fe9[_0x3a68('0xa')]+_0x189fe9[_0x3a68('0xc')]+_0x189fe9[_0x3a68('0xd')]+_0x189fe9[_0x3a68('0xe')]+_0x189fe9[_0x3a68('0xf')]+_0x189fe9[_0x3a68('0x10')];this[_0x3a68('0xc')]=_0x189fe9['countnosuchnumberretry'];this[_0x3a68('0xd')]=_0x189fe9['countdropretry'];this[_0x3a68('0xe')]=_0x189fe9[_0x3a68('0xe')];this['countmachineretry']=_0x189fe9[_0x3a68('0xf')];this[_0x3a68('0x10')]=_0x189fe9['countagentrejectretry'];this[_0x3a68('0x11')]=_0x292546[_0x3a68('0x11')];this[_0x3a68('0x12')]=_0x189fe9[_0x3a68('0x13')];this[_0x3a68('0x14')]=_0x189fe9['number'];this[_0x3a68('0x15')]=_0x189fe9[_0x3a68('0x15')];this[_0x3a68('0x16')]=_0x189fe9[_0x3a68('0x16')];this[_0x3a68('0x17')]=_0x189fe9[_0x3a68('0x17')];this[_0x3a68('0x18')]=this[_0x3a68('0x17')];this[_0x3a68('0x19')]=getSeconds(_0x189fe9[_0x3a68('0x16')],_0x189fe9[_0x3a68('0x15')]);this['holdtime']=getSeconds(this[_0x3a68('0x17')],_0x189fe9[_0x3a68('0x16')]);this[_0x3a68('0x1a')]=0x0;this['queue']=_0x292546['queue'];this[_0x3a68('0x1b')]=_0x292546[_0x3a68('0x1c')];this[_0x3a68('0x1d')]=_0x292546[_0x3a68('0x1d')];this['callback']=_0x189fe9[_0x3a68('0x1e')];this[_0x3a68('0x1f')]=_0x189fe9[_0x3a68('0x1f')];this[_0x3a68('0x20')]=_0x189fe9[_0x3a68('0x20')];this['recallme']=_0x189fe9['recallme'];this['ContactId']=_0x189fe9[_0x3a68('0x21')];this[_0x3a68('0x22')]=_0x189fe9[_0x3a68('0x22')];this[_0x3a68('0x23')]=_0x189fe9[_0x3a68('0x23')];this[_0x3a68('0x24')]=_0x189fe9[_0x3a68('0x24')];this[_0x3a68('0x25')]=_0x189fe9[_0x3a68('0x25')];this[_0x3a68('0x26')]=_0x189fe9['originatecalleridnum']||'';this[_0x3a68('0x27')]=_0x189fe9[_0x3a68('0x27')]||'';}module[_0x3a68('0x28')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xe6f2=['ringtime','responsetime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','name','starttime','droptime','endtime'];(function(_0x23dcdc,_0x5592bb){var _0x13ddbb=function(_0x1a1593){while(--_0x1a1593){_0x23dcdc['push'](_0x23dcdc['shift']());}};_0x13ddbb(++_0x5592bb);}(_0xe6f2,0x1a7));var _0x2e6f=function(_0x51f0f1,_0x43dec4){_0x51f0f1=_0x51f0f1-0x0;var _0x1cbeb6=_0xe6f2[_0x51f0f1];return _0x1cbeb6;};'use strict';var util=require(_0x2e6f('0x0'));var _=require('lodash');var moment=require(_0x2e6f('0x1'));function getSeconds(_0x438783,_0x4e4f23){var _0x103040=moment(_0x438783)[_0x2e6f('0x2')](0x0);var _0x3b9a97=moment(_0x4e4f23)[_0x2e6f('0x2')](0x0);return _0x103040['diff'](_0x3b9a97,'seconds');}function QueueCallerAbandon(_0x34c550,_0x29bbaf){this['scheduledat']=_0x34c550[_0x2e6f('0x3')];this[_0x2e6f('0x4')]=_0x34c550[_0x2e6f('0x4')];this[_0x2e6f('0x5')]=_0x34c550[_0x2e6f('0x4')]===_0x2e6f('0x6')?_0x2e6f('0x7'):_0x34c550[_0x2e6f('0x4')];this[_0x2e6f('0x8')]=_0x34c550['countbusyretry'];this[_0x2e6f('0x9')]=_0x34c550[_0x2e6f('0x9')];this[_0x2e6f('0xa')]=_0x34c550[_0x2e6f('0xa')];this['countglobal']=_0x34c550['countbusyretry']+_0x34c550[_0x2e6f('0x9')]+_0x34c550[_0x2e6f('0xa')]+_0x34c550[_0x2e6f('0xb')]+_0x34c550[_0x2e6f('0xc')]+_0x34c550['countabandonedretry']+_0x34c550[_0x2e6f('0xd')]+_0x34c550[_0x2e6f('0xe')];this[_0x2e6f('0xb')]=_0x34c550[_0x2e6f('0xb')];this[_0x2e6f('0xc')]=_0x34c550[_0x2e6f('0xc')];this[_0x2e6f('0xf')]=_0x34c550[_0x2e6f('0xf')];this['countmachineretry']=_0x34c550[_0x2e6f('0xd')];this[_0x2e6f('0xe')]=_0x34c550[_0x2e6f('0xe')];this['uniqueid']=_0x29bbaf[_0x2e6f('0x10')];this['calleridname']=_0x34c550[_0x2e6f('0x11')];this['calleridnum']=_0x34c550['number'];this[_0x2e6f('0x12')]=_0x34c550['starttime'];this['responsetime']=_0x34c550['responsetime'];this[_0x2e6f('0x13')]=_0x34c550[_0x2e6f('0x13')];this[_0x2e6f('0x14')]=this['droptime'];this[_0x2e6f('0x15')]=getSeconds(_0x34c550[_0x2e6f('0x16')],_0x34c550[_0x2e6f('0x12')]);this[_0x2e6f('0x17')]=getSeconds(this['droptime'],_0x34c550[_0x2e6f('0x16')]);this[_0x2e6f('0x18')]=0x0;this[_0x2e6f('0x7')]=_0x29bbaf[_0x2e6f('0x7')];this[_0x2e6f('0x19')]=_0x29bbaf['connectedlinename'];this[_0x2e6f('0x1a')]=_0x29bbaf[_0x2e6f('0x1a')];this[_0x2e6f('0x1b')]=_0x34c550[_0x2e6f('0x1b')];this[_0x2e6f('0x1c')]=_0x34c550['callbackuniqueid'];this[_0x2e6f('0x1d')]=_0x34c550[_0x2e6f('0x1d')];this[_0x2e6f('0x1e')]=_0x34c550[_0x2e6f('0x1e')];this['ContactId']=_0x34c550[_0x2e6f('0x1f')];this[_0x2e6f('0x20')]=_0x34c550['ListId'];this[_0x2e6f('0x21')]=_0x34c550[_0x2e6f('0x21')];this['VoiceQueueId']=_0x34c550['VoiceQueueId'];this['CampaignId']=_0x34c550[_0x2e6f('0x22')];this['originatecalleridnum']=_0x34c550[_0x2e6f('0x23')]||'';this[_0x2e6f('0x24')]=_0x34c550[_0x2e6f('0x24')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index b8ada2e..bd76462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x47acd0,_0x37dc02){var _0x25efd5=function(_0x5126e1){while(--_0x5126e1){_0x47acd0['push'](_0x47acd0['shift']());}};_0x25efd5(++_0x37dc02);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x1966f5,_0x5b0945){var _0x1f2ecd=function(_0x5bbf3e){while(--_0x5bbf3e){_0x1966f5['push'](_0x1966f5['shift']());}};_0x1f2ecd(++_0x5b0945);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index d75d35a..0d223b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75c0=['transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','.pdf','application/pdf','then','notify','fax','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','response','AttachmentId','update','logger','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','syncHangup','faxpages','updateStatus','faxstatusstring','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','Action','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','checkTrunk','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','Is\x20Valid','exports','util','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','../ami','./rpcDb','./util/util','./action','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','bind','syncVarSet','newstate','syncNewState','newexten','syncFaxStatus','receivefax','originateresponse','prototype','syncNewchannel','context','hasOwnProperty','exten','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','actions','info','variable','value','channelstate','channelstatedesc','syncNewExten','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred'];(function(_0x1f7819,_0x955f17){var _0x1edcaf=function(_0x21b2a0){while(--_0x21b2a0){_0x1f7819['push'](_0x1f7819['shift']());}};_0x1edcaf(++_0x955f17);}(_0x75c0,0x18c));var _0x075c=function(_0x534c8f,_0x500079){_0x534c8f=_0x534c8f-0x0;var _0x5a57f5=_0x75c0[_0x534c8f];return _0x5a57f5;};'use strict';var util=require(_0x075c('0x0'));var _=require('lodash');var BPromise=require(_0x075c('0x1'));var uuid=require(_0x075c('0x2'));var moment=require(_0x075c('0x3'));var path=require(_0x075c('0x4'));var tiff2pdf=require(_0x075c('0x5'));var gs=require(_0x075c('0x6'));var logger=require(_0x075c('0x7'))('fax');var ami=require(_0x075c('0x8'));var rpcDb=require(_0x075c('0x9'));var Channel=require('./channel');var ut=require(_0x075c('0xa'));var Action=require(_0x075c('0xb'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x075c('0xc'));var faxMessage=require(_0x075c('0xd'));function Fax(_0x14d6a1){this[_0x075c('0xe')]={};this['faxAccounts']=_0x14d6a1[_0x075c('0xf')];this[_0x075c('0x10')]=_0x14d6a1[_0x075c('0x10')];this['actions']={};ami['on']('newchannel',this['syncNewchannel'][_0x075c('0x11')](this));ami['on']('varset',this[_0x075c('0x12')][_0x075c('0x11')](this));ami['on'](_0x075c('0x13'),this[_0x075c('0x14')][_0x075c('0x11')](this));ami['on'](_0x075c('0x15'),this['syncNewExten']['bind'](this));ami['on']('faxstatus',this[_0x075c('0x16')]['bind'](this));ami['on'](_0x075c('0x17'),this['syncReceiveFax']['bind'](this));ami['on']('hangup',this['syncHangup'][_0x075c('0x11')](this));ami['on'](_0x075c('0x18'),this['syncOriginateResponse'][_0x075c('0x11')](this));}Fax[_0x075c('0x19')][_0x075c('0x1a')]=function(_0x5c86cb){if(_0x5c86cb[_0x075c('0x1b')]==='from-voip-provider'){for(var _0x4e4397 in this['faxAccounts']){if(this[_0x075c('0xf')][_0x075c('0x1c')](_0x4e4397)){if(_0x5c86cb[_0x075c('0x1d')]===this[_0x075c('0xf')][_0x4e4397][_0x075c('0x1e')]){this[_0x075c('0xe')][_0x5c86cb['uniqueid']]={};this[_0x075c('0xe')][_0x5c86cb[_0x075c('0x1f')]][_0x075c('0x20')]=_0x5c86cb[_0x075c('0x20')];this[_0x075c('0xe')][_0x5c86cb['uniqueid']]['id']=this[_0x075c('0xf')][_0x4e4397]['id'];this['channels'][_0x5c86cb[_0x075c('0x1f')]][_0x075c('0x21')]=this['faxAccounts'][_0x4e4397][_0x075c('0x21')];logger['info'](_0x5c86cb['uniqueid'],_0x075c('0x22'));}}}}if(this[_0x075c('0x23')][_0x5c86cb[_0x075c('0x1f')]]){this['channels'][_0x5c86cb[_0x075c('0x1f')]]={};this['channels'][_0x5c86cb[_0x075c('0x1f')]][_0x075c('0x20')]=_0x5c86cb[_0x075c('0x20')];logger[_0x075c('0x24')](_0x5c86cb[_0x075c('0x1f')],_0x075c('0x22'));}};Fax['prototype'][_0x075c('0x12')]=function(_0x4f7d87){if(this[_0x075c('0xe')][_0x4f7d87[_0x075c('0x1f')]]){for(var _0x2ac179 in _0x4f7d87[_0x075c('0x25')]){if(_0x4f7d87['variable'][_0x075c('0x1c')](_0x2ac179)){this[_0x075c('0xe')][_0x4f7d87['uniqueid']][_0x2ac179]=_0x4f7d87[_0x075c('0x26')];}}}};Fax['prototype'][_0x075c('0x14')]=function(_0x55be8c){if(this['channels'][_0x55be8c[_0x075c('0x1f')]]){this[_0x075c('0xe')][_0x55be8c[_0x075c('0x1f')]][_0x075c('0x27')]=_0x55be8c[_0x075c('0x27')];this['channels'][_0x55be8c[_0x075c('0x1f')]][_0x075c('0x28')]=_0x55be8c[_0x075c('0x28')];}};Fax[_0x075c('0x19')][_0x075c('0x29')]=function(_0x29d4eb){if(this[_0x075c('0xe')][_0x29d4eb[_0x075c('0x1f')]]){for(var _0x500103 in _0x29d4eb[_0x075c('0x25')]){if(_0x29d4eb['variable'][_0x075c('0x1c')](_0x500103)){this['channels'][_0x29d4eb[_0x075c('0x1f')]][_0x500103]=_0x29d4eb[_0x075c('0x26')];}}}};Fax[_0x075c('0x19')][_0x075c('0x16')]=function(_0x430c51){if(this['channels'][_0x430c51[_0x075c('0x1f')]]){this[_0x075c('0xe')][_0x430c51['uniqueid']][_0x075c('0x2a')]=_0x430c51[_0x075c('0x2a')];this[_0x075c('0xe')][_0x430c51[_0x075c('0x1f')]][_0x075c('0x2b')]=_0x430c51['status'];this[_0x075c('0xe')][_0x430c51[_0x075c('0x1f')]][_0x075c('0x1e')]=_0x430c51[_0x075c('0x1e')];this[_0x075c('0xe')][_0x430c51[_0x075c('0x1f')]][_0x075c('0x2c')]=_0x430c51[_0x075c('0x2c')];logger[_0x075c('0x24')](_0x430c51[_0x075c('0x1f')],_0x075c('0x2d'));}};Fax['prototype']['syncReceiveFax']=function(_0x54d8b3){var _0x509c4d=this;if(this['channels'][_0x54d8b3[_0x075c('0x1f')]]){var _0xc6ef0e=this[_0x075c('0xe')][_0x54d8b3[_0x075c('0x1f')]]['id'];this[_0x075c('0xe')][_0x54d8b3[_0x075c('0x1f')]][_0x075c('0x2e')]=_0x54d8b3['remotestationid'];this[_0x075c('0xe')][_0x54d8b3[_0x075c('0x1f')]][_0x075c('0x2f')]=_0x54d8b3[_0x075c('0x2f')];this[_0x075c('0xe')][_0x54d8b3['uniqueid']][_0x075c('0x1e')]=_0x54d8b3['localstationid'];this[_0x075c('0xe')][_0x54d8b3[_0x075c('0x1f')]]['resolution']=_0x54d8b3['resolution'];this[_0x075c('0xe')][_0x54d8b3['uniqueid']][_0x075c('0x30')]=_0x54d8b3[_0x075c('0x30')];this[_0x075c('0xe')][_0x54d8b3[_0x075c('0x1f')]][_0x075c('0x2c')]=_0x54d8b3[_0x075c('0x2c')];this[_0x075c('0xe')][_0x54d8b3[_0x075c('0x1f')]][_0x075c('0x31')]=_0x54d8b3[_0x075c('0x31')];if(this[_0x075c('0xe')][_0x54d8b3['uniqueid']]['pagestransferred']>0x0){tiff2pdf(_0x54d8b3[_0x075c('0x2c')],_0x075c('0x32'),function(_0x140c10){logger[_0x075c('0x24')](_0x54d8b3['uniqueid'],_0x075c('0x33'),_0x140c10[_0x075c('0x34')]);attachment['create']({'name':path[_0x075c('0x35')](_0x54d8b3[_0x075c('0x2c')])[_0x075c('0x21')],'basename':path[_0x075c('0x35')](_0x54d8b3[_0x075c('0x2c')])['name']+_0x075c('0x36'),'type':_0x075c('0x37')})[_0x075c('0x38')](function(_0x3d3f57){faxAccount[_0x075c('0x39')](_0xc6ef0e,{'from':_0x54d8b3['calleridnum'],'mapKey':_0x075c('0x3a'),'body':path['parse'](_0x54d8b3[_0x075c('0x2c')])[_0x075c('0x21')]+_0x075c('0x36'),'AttachmentId':_0x3d3f57['id']})[_0x075c('0x3b')](function(_0xb79945){logger[_0x075c('0x3c')](_0x54d8b3[_0x075c('0x1f')],_0x075c('0x3d'),JSON[_0x075c('0x3e')](_0xb79945));});})['catch'](function(_0x4edbc3){logger[_0x075c('0x3c')](_0x54d8b3[_0x075c('0x1f')],_0x075c('0x3f'),JSON[_0x075c('0x3e')](_0x4edbc3));});});}logger[_0x075c('0x24')](_0x54d8b3[_0x075c('0x1f')],_0x075c('0x3f'));}};Fax[_0x075c('0x19')]['syncOriginateResponse']=function(_0x480598){if(this['actions'][_0x480598[_0x075c('0x1f')]]){_['merge'](this['channels'][_0x480598[_0x075c('0x1f')]],_['pick'](_0x480598,[_0x075c('0x40'),'reason']));}};function updateStatus(_0x3baa17){if(_0x3baa17[_0x075c('0x41')]){faxMessage[_0x075c('0x42')](_0x3baa17['AttachmentId'],{'failMessage':'SENDING\x20FAILED\x20'})['then'](function(_0x7e5df2){ut[_0x075c('0x43')]('[Fax][Message][Error][Updated]',_0x7e5df2);})[_0x075c('0x3b')](function(_0x15bc00){ut[_0x075c('0x43')]('[Fax][Message][Error][NoUpdate1]',_0x15bc00);});}else{ut['logger'](_0x075c('0x44'));}}Fax['prototype']['updateStatus']=function(_0x45f60f,_0x14d754,_0x3e6ddd){var _0x12200d=this;var _0x45d07f={};if(_0x14d754){_0x45d07f={'read':_0x14d754};}else{_0x45d07f={'failMessage':_0x3e6ddd};}if(this[_0x075c('0x23')][_0x45f60f][_0x075c('0x41')]){faxMessage['update'](this[_0x075c('0x23')][_0x45f60f][_0x075c('0x41')],_0x45d07f)[_0x075c('0x38')](function(_0x1accff){ut['logger'](_0x075c('0x45'),_0x1accff);})[_0x075c('0x3b')](function(_0x5c670f){ut['logger'](_0x075c('0x46'),_0x5c670f);})['finally'](function(){delete _0x12200d[_0x075c('0xe')][_0x45f60f];delete _0x12200d['actions'][_0x45f60f];});}else{ut['logger'](_0x075c('0x47'));delete this[_0x075c('0xe')][_0x45f60f];delete this[_0x075c('0x23')][_0x45f60f];}};Fax['prototype'][_0x075c('0x48')]=function(_0x31e0b4){var _0x51bf3c=this;if(this['channels'][_0x31e0b4[_0x075c('0x1f')]]){if(this['actions'][_0x31e0b4[_0x075c('0x1f')]]){this[_0x075c('0xe')][_0x31e0b4[_0x075c('0x1f')]]['id']=this[_0x075c('0x23')][_0x31e0b4['uniqueid']]['id'];this[_0x075c('0xe')][_0x31e0b4[_0x075c('0x1f')]][_0x075c('0x21')]=this[_0x075c('0x23')][_0x31e0b4[_0x075c('0x1f')]]['name'];}logger[_0x075c('0x24')](_0x31e0b4[_0x075c('0x1f')],this[_0x075c('0x23')][_0x31e0b4['uniqueid']]?'\x20hangup\x20sendFile\x20':'\x20hangup\x20faxRiceive\x20',JSON[_0x075c('0x3e')](this[_0x075c('0xe')][_0x31e0b4['uniqueid']]));if(this[_0x075c('0x23')][_0x31e0b4[_0x075c('0x1f')]]){if(this[_0x075c('0xe')][_0x31e0b4['uniqueid']][_0x075c('0x49')]>0x0&&this[_0x075c('0xe')][_0x31e0b4[_0x075c('0x1f')]]['faxstatus']==='SUCCESS'){this[_0x075c('0x4a')](_0x31e0b4[_0x075c('0x1f')],!![]);}else{this[_0x075c('0x4a')](_0x31e0b4[_0x075c('0x1f')],![],this[_0x075c('0xe')][_0x31e0b4['uniqueid']][_0x075c('0x4b')]?'SENDING\x20FAILED:\x20'+this['channels'][_0x31e0b4['uniqueid']]['faxstatusstring']:'SENDING\x20FAILED');}}}};Fax[_0x075c('0x19')][_0x075c('0x4c')]=function(_0x2afb4e){var _0x394bc2=this;return new BPromise(function(_0x384b58,_0x5a65a9){_0x394bc2[_0x075c('0x4d')](_0x2afb4e,_0x394bc2[_0x075c('0xf')][_0x2afb4e[_0x075c('0x4e')]])['then'](function(_0x19d056){ut[_0x075c('0x43')](_0x075c('0x4f'),_0x19d056);_0x384b58(ut[_0x075c('0x34')](_0x075c('0x50')));})[_0x075c('0x3b')](function(_0x390eaf){ut['logger'](_0x075c('0x51'),_0x390eaf);updateStatus(_0x2afb4e);_0x5a65a9(ut['message'](_0x075c('0x52')));});});};Fax[_0x075c('0x19')][_0x075c('0x53')]=function(_0x534dac){var _0x33eb5d=this;return new BPromise(function(_0x150b42,_0x47f544){var _0x396310=_0x33eb5d['checkTrunk'](_0x33eb5d['faxAccounts'][_0x534dac[_0x075c('0x4e')]][_0x075c('0x54')],_0x534dac);if(_0x396310[_0x075c('0x55')]){_0x150b42(ut[_0x075c('0x34')](_0x075c('0x56')));}else{_0x47f544(ut['message'](_0x396310['message']));}});};function originate(_0x505c20,_0x4a2c40,_0x26cff9){return new BPromise(function(_0x3fdbb3,_0x29f1be){if(_0x26cff9){var _0x9896e7=util[_0x075c('0x57')](_0x075c('0x58'),path[_0x075c('0x35')](_0x505c20[_0x075c('0x4')])[_0x075c('0x21')],_0x505c20[_0x075c('0x4')]);gs[_0x075c('0x59')](_0x9896e7)[_0x075c('0x38')](function(){_0x505c20['path']=util[_0x075c('0x57')](_0x075c('0x5a'),path[_0x075c('0x35')](_0x505c20[_0x075c('0x4')])['dir'],path[_0x075c('0x35')](_0x505c20['path'])['name']);_0x4a2c40[_0x075c('0x5b')]=_0x505c20['path'];ut[_0x075c('0x43')](_0x075c('0x5c'),'');ami['Action'](ut[_0x075c('0x5d')](_0x505c20,_0x4a2c40))[_0x075c('0x38')](function(_0x544f07){_0x3fdbb3(_0x544f07);})[_0x075c('0x3b')](function(_0x345f10){_0x29f1be(_0x345f10);});})['catch'](function(_0x683b95){_0x29f1be(_0x683b95);});}else{ami[_0x075c('0x5e')](ut[_0x075c('0x5d')](_0x505c20,_0x4a2c40))[_0x075c('0x38')](function(_0x4d45eb){_0x3fdbb3(_0x4d45eb);})['catch'](function(_0x21b383){_0x29f1be(_0x21b383);});}});}Fax[_0x075c('0x19')][_0x075c('0x4d')]=function(_0x5e808e,_0x3ccd2e){var _0xa81142=this;return new BPromise(function(_0xd94c1f,_0x20d4d5){var _0x517cb6=uuid['v4']();var _0x312e0a=ut[_0x075c('0x5f')](_0x5e808e,_0x3ccd2e);_0xa81142[_0x075c('0x23')][_0x517cb6]=new Action(_0x517cb6,_0x3ccd2e,_0x5e808e);var _0x1e85f8=_0xa81142[_0x075c('0x23')][_0x517cb6];if(path[_0x075c('0x35')](_0x5e808e[_0x075c('0x4')])[_0x075c('0x60')]===_0x075c('0x36')){originate(_0x1e85f8,_0x312e0a,!![])[_0x075c('0x38')](function(_0x22a3c5){_0xd94c1f(_0x22a3c5);})[_0x075c('0x3b')](function(_0x5deb76){_0x20d4d5(_0x5deb76);});}else{originate(_0x1e85f8,_0x312e0a,![])[_0x075c('0x38')](function(_0x3d06f0){_0xd94c1f(_0x3d06f0);})[_0x075c('0x3b')](function(_0x345153){_0x20d4d5(_0x345153);});}});};Fax['prototype'][_0x075c('0x61')]=function(_0x44f268){return!_[_0x075c('0x62')](_0x44f268)&&!_[_0x075c('0x62')](_0x44f268[_0x075c('0x21')])&&!_['isNil'](_0x44f268['active'])&&_0x44f268[_0x075c('0x63')]&&!_[_0x075c('0x62')](this['trunks'][util['format'](_0x075c('0x64'),_0x44f268[_0x075c('0x21')])])&&!_[_0x075c('0x62')](this[_0x075c('0x10')][util['format'](_0x075c('0x64'),_0x44f268['name'])][_0x075c('0x2b')])&&(this[_0x075c('0x10')][util[_0x075c('0x57')](_0x075c('0x64'),_0x44f268[_0x075c('0x21')])]['status']===_0x075c('0x65')||this['trunks'][util['format'](_0x075c('0x64'),_0x44f268[_0x075c('0x21')])][_0x075c('0x2b')]===_0x075c('0x66'));};Fax[_0x075c('0x19')][_0x075c('0x67')]=function(_0x145ca5,_0x2f03de){if(!this[_0x075c('0x61')](_0x145ca5)){ut[_0x075c('0x43')](_0x075c('0x68'),_[_0x075c('0x62')](_0x145ca5)?'':_0x145ca5[_0x075c('0x21')]+_0x075c('0x69'));return{'isValid':![],'message':_0x075c('0x6a')};}if(_[_0x075c('0x62')](_0x2f03de[_0x075c('0x3a')])){ut['logger'](_0x075c('0x6b'),JSON[_0x075c('0x3e')](_0x2f03de));return{'isValid':![],'message':_0x075c('0x6c')};}if(_[_0x075c('0x62')](_0x2f03de[_0x075c('0x4')])){ut['logger']('[Fax][checkTrunk][Empty\x20path]',JSON[_0x075c('0x3e')](_0x2f03de));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x075c('0x6d')};};module[_0x075c('0x6e')]=Fax;
\ No newline at end of file
+var _0x5cce=['../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','varset','bind','newstate','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','syncNewchannel','context','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','syncVarSet','variable','hasOwnProperty','channelstate','channelstatedesc','value','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','then','fax','.pdf','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','response','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','updateStatus','faxstatusstring','send','execOriginate','FaxAccountId','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','path','execute','format','dir','variablesAction','Action','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','bluebird','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','../ami','./rpcDb','./channel','./util/util','./action'];(function(_0x181030,_0x4aef2d){var _0x4c2bf=function(_0x30ebf6){while(--_0x30ebf6){_0x181030['push'](_0x181030['shift']());}};_0x4c2bf(++_0x4aef2d);}(_0x5cce,0xdd));var _0xe5cc=function(_0xa1021b,_0x19303d){_0xa1021b=_0xa1021b-0x0;var _0x3b3715=_0x5cce[_0xa1021b];return _0x3b3715;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xe5cc('0x0'));var uuid=require(_0xe5cc('0x1'));var moment=require(_0xe5cc('0x2'));var path=require('path');var tiff2pdf=require(_0xe5cc('0x3'));var gs=require(_0xe5cc('0x4'));var logger=require(_0xe5cc('0x5'))('fax');var ami=require(_0xe5cc('0x6'));var rpcDb=require(_0xe5cc('0x7'));var Channel=require(_0xe5cc('0x8'));var ut=require(_0xe5cc('0x9'));var Action=require(_0xe5cc('0xa'));var faxAccount=require(_0xe5cc('0xb'));var attachment=require(_0xe5cc('0xc'));var faxMessage=require(_0xe5cc('0xd'));function Fax(_0x271ada){this[_0xe5cc('0xe')]={};this[_0xe5cc('0xf')]=_0x271ada[_0xe5cc('0xf')];this[_0xe5cc('0x10')]=_0x271ada['trunks'];this[_0xe5cc('0x11')]={};ami['on'](_0xe5cc('0x12'),this['syncNewchannel']['bind'](this));ami['on'](_0xe5cc('0x13'),this['syncVarSet'][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x15'),this['syncNewState'][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x16'),this[_0xe5cc('0x17')][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x18'),this[_0xe5cc('0x19')][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x1a'),this[_0xe5cc('0x1b')][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x1c'),this[_0xe5cc('0x1d')]['bind'](this));ami['on']('originateresponse',this[_0xe5cc('0x1e')]['bind'](this));}Fax['prototype'][_0xe5cc('0x1f')]=function(_0x1edef0){if(_0x1edef0[_0xe5cc('0x20')]==='from-voip-provider'){for(var _0x226fde in this[_0xe5cc('0xf')]){if(this[_0xe5cc('0xf')]['hasOwnProperty'](_0x226fde)){if(_0x1edef0[_0xe5cc('0x21')]===this[_0xe5cc('0xf')][_0x226fde][_0xe5cc('0x22')]){this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]]={};this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]][_0xe5cc('0x24')]=_0x1edef0[_0xe5cc('0x24')];this['channels'][_0x1edef0[_0xe5cc('0x23')]]['id']=this['faxAccounts'][_0x226fde]['id'];this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]][_0xe5cc('0x25')]=this['faxAccounts'][_0x226fde]['name'];logger[_0xe5cc('0x26')](_0x1edef0[_0xe5cc('0x23')],_0xe5cc('0x27'));}}}}if(this[_0xe5cc('0x11')][_0x1edef0['uniqueid']]){this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]]={};this['channels'][_0x1edef0[_0xe5cc('0x23')]][_0xe5cc('0x24')]=_0x1edef0['channel'];logger['info'](_0x1edef0[_0xe5cc('0x23')],'\x20syncNewchannel\x20');}};Fax[_0xe5cc('0x28')][_0xe5cc('0x29')]=function(_0xd9102e){if(this[_0xe5cc('0xe')][_0xd9102e[_0xe5cc('0x23')]]){for(var _0x42d9d0 in _0xd9102e['variable']){if(_0xd9102e[_0xe5cc('0x2a')][_0xe5cc('0x2b')](_0x42d9d0)){this[_0xe5cc('0xe')][_0xd9102e[_0xe5cc('0x23')]][_0x42d9d0]=_0xd9102e['value'];}}}};Fax[_0xe5cc('0x28')]['syncNewState']=function(_0x422b46){if(this[_0xe5cc('0xe')][_0x422b46['uniqueid']]){this[_0xe5cc('0xe')][_0x422b46[_0xe5cc('0x23')]][_0xe5cc('0x2c')]=_0x422b46['channelstate'];this[_0xe5cc('0xe')][_0x422b46['uniqueid']]['channelstatedesc']=_0x422b46[_0xe5cc('0x2d')];}};Fax[_0xe5cc('0x28')][_0xe5cc('0x17')]=function(_0x544502){if(this[_0xe5cc('0xe')][_0x544502[_0xe5cc('0x23')]]){for(var _0xf463eb in _0x544502[_0xe5cc('0x2a')]){if(_0x544502[_0xe5cc('0x2a')]['hasOwnProperty'](_0xf463eb)){this['channels'][_0x544502[_0xe5cc('0x23')]][_0xf463eb]=_0x544502[_0xe5cc('0x2e')];}}}};Fax['prototype']['syncFaxStatus']=function(_0x65201b){if(this[_0xe5cc('0xe')][_0x65201b[_0xe5cc('0x23')]]){this['channels'][_0x65201b[_0xe5cc('0x23')]][_0xe5cc('0x2f')]=_0x65201b[_0xe5cc('0x2f')];this[_0xe5cc('0xe')][_0x65201b[_0xe5cc('0x23')]][_0xe5cc('0x30')]=_0x65201b[_0xe5cc('0x30')];this['channels'][_0x65201b[_0xe5cc('0x23')]][_0xe5cc('0x22')]=_0x65201b['localstationid'];this[_0xe5cc('0xe')][_0x65201b['uniqueid']][_0xe5cc('0x31')]=_0x65201b[_0xe5cc('0x31')];logger[_0xe5cc('0x26')](_0x65201b[_0xe5cc('0x23')],_0xe5cc('0x32'));}};Fax['prototype']['syncReceiveFax']=function(_0x3db4c8){var _0x5c22f8=this;if(this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]]){var _0xc3c1a9=this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]]['id'];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x33')]=_0x3db4c8['remotestationid'];this['channels'][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x34')]=_0x3db4c8[_0xe5cc('0x34')];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x22')]=_0x3db4c8[_0xe5cc('0x22')];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]]['resolution']=_0x3db4c8['resolution'];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x35')]=_0x3db4c8[_0xe5cc('0x35')];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x31')]=_0x3db4c8[_0xe5cc('0x31')];this['channels'][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x36')]=_0x3db4c8['calleridnum'];if(this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x34')]>0x0){tiff2pdf(_0x3db4c8[_0xe5cc('0x31')],_0xe5cc('0x37'),function(_0x1dad66){logger[_0xe5cc('0x26')](_0x3db4c8['uniqueid'],_0xe5cc('0x38'),_0x1dad66[_0xe5cc('0x39')]);attachment[_0xe5cc('0x3a')]({'name':path[_0xe5cc('0x3b')](_0x3db4c8[_0xe5cc('0x31')])[_0xe5cc('0x25')],'basename':path[_0xe5cc('0x3b')](_0x3db4c8['filename'])['name']+'.pdf','type':_0xe5cc('0x3c')})[_0xe5cc('0x3d')](function(_0x33f3f8){faxAccount['notify'](_0xc3c1a9,{'from':_0x3db4c8[_0xe5cc('0x36')],'mapKey':_0xe5cc('0x3e'),'body':path[_0xe5cc('0x3b')](_0x3db4c8[_0xe5cc('0x31')])[_0xe5cc('0x25')]+_0xe5cc('0x3f'),'AttachmentId':_0x33f3f8['id']})[_0xe5cc('0x40')](function(_0x4b8823){logger[_0xe5cc('0x41')](_0x3db4c8[_0xe5cc('0x23')],_0xe5cc('0x42'),JSON[_0xe5cc('0x43')](_0x4b8823));});})[_0xe5cc('0x40')](function(_0x319d66){logger[_0xe5cc('0x41')](_0x3db4c8['uniqueid'],_0xe5cc('0x44'),JSON[_0xe5cc('0x43')](_0x319d66));});});}logger[_0xe5cc('0x26')](_0x3db4c8[_0xe5cc('0x23')],'\x20receiveFax\x20');}};Fax[_0xe5cc('0x28')][_0xe5cc('0x1e')]=function(_0x18d536){if(this[_0xe5cc('0x11')][_0x18d536['uniqueid']]){_[_0xe5cc('0x45')](this[_0xe5cc('0xe')][_0x18d536['uniqueid']],_['pick'](_0x18d536,[_0xe5cc('0x46'),'reason']));}};function updateStatus(_0x2a5b01){if(_0x2a5b01[_0xe5cc('0x47')]){faxMessage[_0xe5cc('0x48')](_0x2a5b01[_0xe5cc('0x47')],{'failMessage':_0xe5cc('0x49')})[_0xe5cc('0x3d')](function(_0x266c47){ut[_0xe5cc('0x4a')](_0xe5cc('0x4b'),_0x266c47);})[_0xe5cc('0x40')](function(_0x5268f7){ut[_0xe5cc('0x4a')](_0xe5cc('0x4c'),_0x5268f7);});}else{ut[_0xe5cc('0x4a')](_0xe5cc('0x4d'));}}Fax[_0xe5cc('0x28')]['updateStatus']=function(_0x25c2ca,_0x9e699b,_0x4f3aa2){var _0x25289f=this;var _0x4bc12f={};if(_0x9e699b){_0x4bc12f={'read':_0x9e699b};}else{_0x4bc12f={'failMessage':_0x4f3aa2};}if(this['actions'][_0x25c2ca][_0xe5cc('0x47')]){faxMessage['update'](this['actions'][_0x25c2ca]['AttachmentId'],_0x4bc12f)[_0xe5cc('0x3d')](function(_0x2cd271){ut[_0xe5cc('0x4a')]('[Fax][Message][Updated]',_0x2cd271);})[_0xe5cc('0x40')](function(_0x59a5df){ut[_0xe5cc('0x4a')](_0xe5cc('0x4e'),_0x59a5df);})[_0xe5cc('0x4f')](function(){delete _0x25289f[_0xe5cc('0xe')][_0x25c2ca];delete _0x25289f[_0xe5cc('0x11')][_0x25c2ca];});}else{ut['logger'](_0xe5cc('0x50'));delete this[_0xe5cc('0xe')][_0x25c2ca];delete this['actions'][_0x25c2ca];}};Fax['prototype'][_0xe5cc('0x1d')]=function(_0x5115ee){var _0x53787e=this;if(this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]]){if(this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]){this['channels'][_0x5115ee[_0xe5cc('0x23')]]['id']=this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]['id'];this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]][_0xe5cc('0x25')]=this[_0xe5cc('0x11')][_0x5115ee['uniqueid']][_0xe5cc('0x25')];}logger[_0xe5cc('0x26')](_0x5115ee[_0xe5cc('0x23')],this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]?_0xe5cc('0x51'):_0xe5cc('0x52'),JSON['stringify'](this[_0xe5cc('0xe')][_0x5115ee['uniqueid']]));if(this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]){if(this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]]['faxpages']>0x0&&this['channels'][_0x5115ee[_0xe5cc('0x23')]][_0xe5cc('0x18')]===_0xe5cc('0x53')){this[_0xe5cc('0x54')](_0x5115ee['uniqueid'],!![]);}else{this[_0xe5cc('0x54')](_0x5115ee[_0xe5cc('0x23')],![],this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]]['faxstatusstring']?'SENDING\x20FAILED:\x20'+this['channels'][_0x5115ee['uniqueid']][_0xe5cc('0x55')]:'SENDING\x20FAILED');}}}};Fax['prototype'][_0xe5cc('0x56')]=function(_0x12b7b4){var _0x498bfc=this;return new BPromise(function(_0x3b82e2,_0x12a6ea){_0x498bfc[_0xe5cc('0x57')](_0x12b7b4,_0x498bfc['faxAccounts'][_0x12b7b4[_0xe5cc('0x58')]])[_0xe5cc('0x3d')](function(_0x1c85ac){ut[_0xe5cc('0x4a')]('[Fax][execOriginate][success]',_0x1c85ac);_0x3b82e2(ut[_0xe5cc('0x39')]('Fax\x20received'));})[_0xe5cc('0x40')](function(_0x5d752c){ut['logger'](_0xe5cc('0x59'),_0x5d752c);updateStatus(_0x12b7b4);_0x12a6ea(ut[_0xe5cc('0x39')](_0xe5cc('0x5a')));});});};Fax[_0xe5cc('0x28')][_0xe5cc('0x5b')]=function(_0x467191){var _0x5b4d69=this;return new BPromise(function(_0x268eab,_0x1b7abc){var _0x5dfff8=_0x5b4d69[_0xe5cc('0x5c')](_0x5b4d69[_0xe5cc('0xf')][_0x467191[_0xe5cc('0x58')]][_0xe5cc('0x5d')],_0x467191);if(_0x5dfff8[_0xe5cc('0x5e')]){_0x268eab(ut[_0xe5cc('0x39')]('Trunk\x20Reachable'));}else{_0x1b7abc(ut['message'](_0x5dfff8['message']));}});};function originate(_0x2c72fc,_0x2efa2e,_0x5178aa){return new BPromise(function(_0x87acc1,_0xc452a9){if(_0x5178aa){var _0x478916=util['format']('gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit',path['parse'](_0x2c72fc[_0xe5cc('0x5f')])[_0xe5cc('0x25')],_0x2c72fc[_0xe5cc('0x5f')]);gs[_0xe5cc('0x60')](_0x478916)[_0xe5cc('0x3d')](function(){_0x2c72fc[_0xe5cc('0x5f')]=util[_0xe5cc('0x61')]('%s/%s.tif',path['parse'](_0x2c72fc[_0xe5cc('0x5f')])[_0xe5cc('0x62')],path[_0xe5cc('0x3b')](_0x2c72fc[_0xe5cc('0x5f')])[_0xe5cc('0x25')]);_0x2efa2e['XMF-PATH']=_0x2c72fc[_0xe5cc('0x5f')];ut[_0xe5cc('0x4a')]('Convert\x20pdf\x20to\x20tif','');ami['Action'](ut[_0xe5cc('0x63')](_0x2c72fc,_0x2efa2e))[_0xe5cc('0x3d')](function(_0x324af8){_0x87acc1(_0x324af8);})[_0xe5cc('0x40')](function(_0x46a9e8){_0xc452a9(_0x46a9e8);});})['catch'](function(_0x1575c5){_0xc452a9(_0x1575c5);});}else{ami[_0xe5cc('0x64')](ut['variablesAction'](_0x2c72fc,_0x2efa2e))[_0xe5cc('0x3d')](function(_0x3a95b7){_0x87acc1(_0x3a95b7);})[_0xe5cc('0x40')](function(_0x384da5){_0xc452a9(_0x384da5);});}});}Fax['prototype'][_0xe5cc('0x57')]=function(_0x138e8f,_0xa63c56){var _0x196c1e=this;return new BPromise(function(_0x285add,_0x8005d0){var _0x12cfd3=uuid['v4']();var _0x347c77=ut[_0xe5cc('0x65')](_0x138e8f,_0xa63c56);_0x196c1e[_0xe5cc('0x11')][_0x12cfd3]=new Action(_0x12cfd3,_0xa63c56,_0x138e8f);var _0x2af56d=_0x196c1e['actions'][_0x12cfd3];if(path['parse'](_0x138e8f[_0xe5cc('0x5f')])[_0xe5cc('0x66')]===_0xe5cc('0x3f')){originate(_0x2af56d,_0x347c77,!![])['then'](function(_0x273ba7){_0x285add(_0x273ba7);})[_0xe5cc('0x40')](function(_0x243f1c){_0x8005d0(_0x243f1c);});}else{originate(_0x2af56d,_0x347c77,![])[_0xe5cc('0x3d')](function(_0x351c68){_0x285add(_0x351c68);})['catch'](function(_0xa9c50c){_0x8005d0(_0xa9c50c);});}});};Fax[_0xe5cc('0x28')][_0xe5cc('0x67')]=function(_0x21a8fa){return!_[_0xe5cc('0x68')](_0x21a8fa)&&!_[_0xe5cc('0x68')](_0x21a8fa[_0xe5cc('0x25')])&&!_[_0xe5cc('0x68')](_0x21a8fa[_0xe5cc('0x69')])&&_0x21a8fa[_0xe5cc('0x69')]&&!_['isNil'](this['trunks'][util['format'](_0xe5cc('0x6a'),_0x21a8fa[_0xe5cc('0x25')])])&&!_['isNil'](this['trunks'][util[_0xe5cc('0x61')]('SIP/%s',_0x21a8fa[_0xe5cc('0x25')])]['status'])&&(this[_0xe5cc('0x10')][util[_0xe5cc('0x61')](_0xe5cc('0x6a'),_0x21a8fa[_0xe5cc('0x25')])]['status']==='reachable'||this[_0xe5cc('0x10')][util[_0xe5cc('0x61')](_0xe5cc('0x6a'),_0x21a8fa['name'])]['status']===_0xe5cc('0x6b'));};Fax[_0xe5cc('0x28')][_0xe5cc('0x5c')]=function(_0x2a58e9,_0x27e5c3){if(!this[_0xe5cc('0x67')](_0x2a58e9)){ut[_0xe5cc('0x4a')](_0xe5cc('0x6c'),_['isNil'](_0x2a58e9)?'':_0x2a58e9[_0xe5cc('0x25')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0xe5cc('0x6d')};}if(_['isNil'](_0x27e5c3[_0xe5cc('0x3e')])){ut[_0xe5cc('0x4a')](_0xe5cc('0x6e'),JSON['stringify'](_0x27e5c3));return{'isValid':![],'message':_0xe5cc('0x6f')};}if(_[_0xe5cc('0x68')](_0x27e5c3[_0xe5cc('0x5f')])){ut[_0xe5cc('0x4a')](_0xe5cc('0x70'),JSON[_0xe5cc('0x43')](_0x27e5c3));return{'isValid':![],'message':_0xe5cc('0x71')};}return{'isValid':!![],'message':_0xe5cc('0x72')};};module[_0xe5cc('0x73')]=Fax;
\ No newline at end of file
index 419ef4b..378a6c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5027=['notify','resolve','then','[Notify]\x20','bluebird','../../../config/logger','preview','inspect'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x5027,0xd4));var _0x7502=function(_0x50f2d6,_0x1dabe1){_0x50f2d6=_0x50f2d6-0x0;var _0x12792b=_0x5027[_0x50f2d6];return _0x12792b;};'use strict';var util=require('util');var BPromise=require(_0x7502('0x0'));var logger=require(_0x7502('0x1'))(_0x7502('0x2'));var _=require('lodash');var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x5e7960){return function(_0x4fb0cd){logger['error'](_0x5e7960,util[_0x7502('0x3')](_0x4fb0cd,{'showHidden':![],'depth':null}));};}exports[_0x7502('0x4')]=function(_0x47c419,_0x272445){return BPromise[_0x7502('0x5')]()[_0x7502('0x6')](faxAccount[_0x7502('0x4')](_0x47c419,_0x272445))['catch'](loggerCatch(_0x7502('0x7')));};
\ No newline at end of file
+var _0x17c0=['then','notify','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x17c0,0xe3));var _0x017c=function(_0x1a9e78,_0x180720){_0x1a9e78=_0x1a9e78-0x0;var _0x113e06=_0x17c0[_0x1a9e78];return _0x113e06;};'use strict';var util=require('util');var BPromise=require(_0x017c('0x0'));var logger=require(_0x017c('0x1'))(_0x017c('0x2'));var _=require(_0x017c('0x3'));var faxAccount=require(_0x017c('0x4'));function loggerCatch(_0x4f741e){return function(_0x1fd2c6){logger[_0x017c('0x5')](_0x4f741e,util[_0x017c('0x6')](_0x1fd2c6,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x522f5a,_0x5d63a2){return BPromise['resolve']()[_0x017c('0x7')](faxAccount[_0x017c('0x8')](_0x522f5a,_0x5d63a2))['catch'](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index 8565be6..dee889f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5362=['exec','execute','info','Exec\x20gs','\x20Error\x20:','util','fax','bluebird'];(function(_0x18c60b,_0x3a046e){var _0x432c4d=function(_0x8840ad){while(--_0x8840ad){_0x18c60b['push'](_0x18c60b['shift']());}};_0x432c4d(++_0x3a046e);}(_0x5362,0x1a5));var _0x2536=function(_0x42e5d1,_0x4406c3){_0x42e5d1=_0x42e5d1-0x0;var _0x8a150f=_0x5362[_0x42e5d1];return _0x8a150f;};'use strict';var util=require(_0x2536('0x0'));var logger=require('../../../../config/logger')(_0x2536('0x1'));var BPromise=require(_0x2536('0x2'));var exec=require('child_process')[_0x2536('0x3')];exports[_0x2536('0x4')]=function(_0xc87f50){return new BPromise(function(_0x5776ee,_0x533cca){exec(_0xc87f50,function(_0x5cbd6f,_0x314415,_0x270d92){logger[_0x2536('0x5')](_0x2536('0x6'),_0x314415);if(_0x5cbd6f){logger[_0x2536('0x5')](_0x2536('0x6'),_0x2536('0x7'),util['inspect'](_0x5cbd6f,{'showHidden':![],'depth':null}),_0x314415,_0x270d92);_0x533cca(_0x5cbd6f);}_0x5776ee(_0x314415);});});};
\ No newline at end of file
+var _0xb631=['info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird','child_process','execute'];(function(_0x4651a7,_0x395425){var _0x78d98a=function(_0x328733){while(--_0x328733){_0x4651a7['push'](_0x4651a7['shift']());}};_0x78d98a(++_0x395425);}(_0xb631,0xe5));var _0x1b63=function(_0x56ccf2,_0x3eb9c5){_0x56ccf2=_0x56ccf2-0x0;var _0x373861=_0xb631[_0x56ccf2];return _0x373861;};'use strict';var util=require('util');var logger=require(_0x1b63('0x0'))(_0x1b63('0x1'));var BPromise=require(_0x1b63('0x2'));var exec=require(_0x1b63('0x3'))['exec'];exports[_0x1b63('0x4')]=function(_0x3ba398){return new BPromise(function(_0x1099e4,_0x3cae55){exec(_0x3ba398,function(_0x132496,_0x28b2d8,_0x2fac16){logger[_0x1b63('0x5')](_0x1b63('0x6'),_0x28b2d8);if(_0x132496){logger[_0x1b63('0x5')](_0x1b63('0x6'),_0x1b63('0x7'),util[_0x1b63('0x8')](_0x132496,{'showHidden':![],'depth':null}),_0x28b2d8,_0x2fac16);_0x3cae55(_0x132496);}_0x1099e4(_0x28b2d8);});});};
\ No newline at end of file
index 5b7db7a..58493bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe75d=['modem','faxdetect','t38timeout','localstationid','path','uniqueid','originate','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','lodash','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','minrate','format','\x22%s\x22'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe75d,0x136));var _0xde75=function(_0x438988,_0x2a86cf){_0x438988=_0x438988-0x0;var _0x1ce59f=_0xe75d[_0x438988];return _0x1ce59f;};'use strict';var util=require(_0xde75('0x0'));var _=require(_0xde75('0x1'));var moment=require(_0xde75('0x2'));var logger=require(_0xde75('0x3'))(_0xde75('0x4'));exports[_0xde75('0x5')]=function(_0x5df399){return{'message':_0x5df399};};exports[_0xde75('0x6')]=function(_0x2f0597,_0x439bfd){logger[_0xde75('0x7')](_0x2f0597,util[_0xde75('0x8')](_0x439bfd,{'showHidden':![],'depth':null}));};exports[_0xde75('0x9')]=function(_0x2e6410,_0x4a347a){var _0x570c8a={'XMF-ECM':_0x4a347a[_0xde75('0xa')],'XMF-HEADERINFO':_0x4a347a[_0xde75('0xb')],'XMF-MINRATE':_0x4a347a[_0xde75('0xc')],'XMF-MAXRATE':_0x4a347a['maxrate'],'XMF-MODEM':util[_0xde75('0xd')](_0xde75('0xe'),_0x4a347a[_0xde75('0xf')]),'XMF-GATEWAY':_0x4a347a['gateway'],'XMF-FAXDETECT':_0x4a347a[_0xde75('0x10')],'XMF-T38TIMEOUT':_0x4a347a[_0xde75('0x11')],'XMF-LOCALSTATIONID':_0x4a347a[_0xde75('0x12')],'XMF-PATH':_0x2e6410[_0xde75('0x13')]};return _0x570c8a;};exports['variablesAction']=function(_0x44b5fa,_0xcd0d80){return{'actionid':_0x44b5fa[_0xde75('0x14')],'action':_0xde75('0x15'),'channel':_0x44b5fa['channel'],'Exten':_0xde75('0x16'),'Context':_0xde75('0x17'),'Priority':'1','callerid':util[_0xde75('0xd')](_0xde75('0x18'),_0x44b5fa[_0xde75('0xb')]?_0x44b5fa[_0xde75('0xb')]:'',_0x44b5fa[_0xde75('0x12')]),'variable':_0xcd0d80,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x44b5fa[_0xde75('0x14')]};};
\ No newline at end of file
+var _0x37c6=['minrate','format','\x22%s\x22','gateway','faxdetect','t38timeout','variablesAction','uniqueid','xcally-motion-fax','from-sip','localstationid','util','lodash','fax','message','logger','info','addVariables','ecm','headerinfo'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x37c6,0x187));var _0x637c=function(_0x517ec6,_0x2523b7){_0x517ec6=_0x517ec6-0x0;var _0x254fd3=_0x37c6[_0x517ec6];return _0x254fd3;};'use strict';var util=require(_0x637c('0x0'));var _=require(_0x637c('0x1'));var moment=require('moment');var logger=require('../../../../config/logger')(_0x637c('0x2'));exports[_0x637c('0x3')]=function(_0x373a87){return{'message':_0x373a87};};exports[_0x637c('0x4')]=function(_0x3b0c9e,_0x379447){logger[_0x637c('0x5')](_0x3b0c9e,util['inspect'](_0x379447,{'showHidden':![],'depth':null}));};exports[_0x637c('0x6')]=function(_0x352021,_0x53ee43){var _0x114b4a={'XMF-ECM':_0x53ee43[_0x637c('0x7')],'XMF-HEADERINFO':_0x53ee43[_0x637c('0x8')],'XMF-MINRATE':_0x53ee43[_0x637c('0x9')],'XMF-MAXRATE':_0x53ee43['maxrate'],'XMF-MODEM':util[_0x637c('0xa')](_0x637c('0xb'),_0x53ee43['modem']),'XMF-GATEWAY':_0x53ee43[_0x637c('0xc')],'XMF-FAXDETECT':_0x53ee43[_0x637c('0xd')],'XMF-T38TIMEOUT':_0x53ee43[_0x637c('0xe')],'XMF-LOCALSTATIONID':_0x53ee43['localstationid'],'XMF-PATH':_0x352021['path']};return _0x114b4a;};exports[_0x637c('0xf')]=function(_0x424158,_0x20a0b3){return{'actionid':_0x424158[_0x637c('0x10')],'action':'originate','channel':_0x424158['channel'],'Exten':_0x637c('0x11'),'Context':_0x637c('0x12'),'Priority':'1','callerid':util[_0x637c('0xa')]('\x22%s\x22\x20<%s>',_0x424158[_0x637c('0x8')]?_0x424158['headerinfo']:'',_0x424158[_0x637c('0x13')]),'variable':_0x20a0b3,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x424158[_0x637c('0x10')]};};
\ No newline at end of file
index e6eb7b1..886e6af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8ae=['./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts','getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initCampaigns','getVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','listen','sync','log','util','moment','./server','./realtime','./report','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue'];(function(_0x3c283a,_0x11e346){var _0xcde1fd=function(_0x2057a3){while(--_0x2057a3){_0x3c283a['push'](_0x3c283a['shift']());}};_0xcde1fd(++_0x11e346);}(_0xc8ae,0x149));var _0xec8a=function(_0x3f1b6d,_0x1ef0c9){_0x3f1b6d=_0x3f1b6d-0x0;var _0x4f600b=_0xc8ae[_0x3f1b6d];return _0x4f600b;};'use strict';var BPromise=require('bluebird');var util=require(_0xec8a('0x0'));var moment=require(_0xec8a('0x1'));var server=require(_0xec8a('0x2'));var Realtime=require(_0xec8a('0x3'));var Report=require(_0xec8a('0x4'));var Acw=require('./acw');var Trigger=require(_0xec8a('0x5'));var Dialer=require(_0xec8a('0x6'));var Preview=require(_0xec8a('0x7'));var Fax=require(_0xec8a('0x8'));var user=require(_0xec8a('0x9'));var voiceQueue=require(_0xec8a('0xa'));var voiceQueueReport=require(_0xec8a('0xb'));var voiceCallReport=require(_0xec8a('0xc'));var trunk=require('./rpc/trunk');var trigger=require(_0xec8a('0xd'));var template=require(_0xec8a('0xe'));var cmHopperHistory=require(_0xec8a('0xf'));var campaign=require(_0xec8a('0x10'));var voiceExtension=require(_0xec8a('0x11'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0xec8a('0x12'));var salesforce=require(_0xec8a('0x13'));var sugarcrm=require(_0xec8a('0x14'));var freshdesk=require(_0xec8a('0x15'));var desk=require(_0xec8a('0x16'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0xec8a('0x17'));var freshsales=require(_0xec8a('0x18'));var servicenow=require(_0xec8a('0x19'));var dynamics365=require(_0xec8a('0x1a'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xec8a('0x1b')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xec8a('0x1b')](_0xec8a('0x1c'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xec8a('0x1d')]()[_0xec8a('0x1e')](user[_0xec8a('0x1f')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x20')]())[_0xec8a('0x1e')](user[_0xec8a('0x21')]())[_0xec8a('0x1e')](realtime['initTelephones']())[_0xec8a('0x1e')](trunk['getTrunks']())[_0xec8a('0x1e')](realtime[_0xec8a('0x22')]())[_0xec8a('0x1e')](voiceQueue[_0xec8a('0x23')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x24')]())[_0xec8a('0x1e')](trigger[_0xec8a('0x25')]())[_0xec8a('0x1e')](realtime['initTriggers']())[_0xec8a('0x1e')](template[_0xec8a('0x26')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x27')]())[_0xec8a('0x1e')](zendesk[_0xec8a('0x28')]())[_0xec8a('0x1e')](realtime['initZendeskAccounts']())[_0xec8a('0x1e')](salesforce[_0xec8a('0x29')]())['then'](realtime['initSalesforceAccounts']())[_0xec8a('0x1e')](sugarcrm[_0xec8a('0x2a')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x2b')]())[_0xec8a('0x1e')](freshdesk[_0xec8a('0x2c')]())['then'](realtime[_0xec8a('0x2d')]())[_0xec8a('0x1e')](desk[_0xec8a('0x2e')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x2f')]())[_0xec8a('0x1e')](zoho['getZohoAccounts']())['then'](realtime[_0xec8a('0x30')]())['then'](vtiger['getVtigerAccounts']())[_0xec8a('0x1e')](realtime['initVtigerAccounts']())[_0xec8a('0x1e')](freshsales[_0xec8a('0x31')]())[_0xec8a('0x1e')](realtime['initFreshsalesAccounts']())['then'](servicenow[_0xec8a('0x32')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x33')]())[_0xec8a('0x1e')](dynamics365['getDynamics365Accounts']())[_0xec8a('0x1e')](realtime['initDynamics365Accounts']())['then'](campaign['getCampaigns']())[_0xec8a('0x1e')](realtime[_0xec8a('0x34')]())[_0xec8a('0x1e')](voiceExtension[_0xec8a('0x35')]())['then'](realtime['initVoiceExtensions']())[_0xec8a('0x1e')](faxAccount[_0xec8a('0x36')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x37')]())[_0xec8a('0x1e')](function(){return realtime;});}function initParams(){return BPromise[_0xec8a('0x1d')]()[_0xec8a('0x1e')](voiceQueueReport[_0xec8a('0x38')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x39')]())[_0xec8a('0x1e')](cmHopperHistory[_0xec8a('0x3a')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x3b')]())[_0xec8a('0x1e')](cmHopperHistory[_0xec8a('0x3c')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x3d')]())[_0xec8a('0x1e')](voiceCallReport[_0xec8a('0x3e')]())[_0xec8a('0x1e')](realtime[_0xec8a('0x3f')]())[_0xec8a('0x1e')](function(_0x4d62f5){})[_0xec8a('0x40')](function(_0x51035d){console['log'](_0x51035d);});}function main(){return server[_0xec8a('0x41')](realtime,preview,fax)[_0xec8a('0x1e')](function(_0x92ef40){return initRealtime();})[_0xec8a('0x1e')](function(){return initParams();})[_0xec8a('0x1e')](function(){report[_0xec8a('0x42')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x44aea9){console[_0xec8a('0x43')](_0x44aea9);});}main();
\ No newline at end of file
+var _0x3953=['./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','getAgents','then','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers','getTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','listen','sync','log','moment','./realtime','./report','./acw','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho'];(function(_0x17a96f,_0x236cd5){var _0x46679c=function(_0x12ecd4){while(--_0x12ecd4){_0x17a96f['push'](_0x17a96f['shift']());}};_0x46679c(++_0x236cd5);}(_0x3953,0xb2));var _0x3395=function(_0x10aaad,_0x5f1831){_0x10aaad=_0x10aaad-0x0;var _0x3dcf40=_0x3953[_0x10aaad];return _0x3dcf40;};'use strict';var BPromise=require('bluebird');var util=require('util');var moment=require(_0x3395('0x0'));var server=require('./server');var Realtime=require(_0x3395('0x1'));var Report=require(_0x3395('0x2'));var Acw=require(_0x3395('0x3'));var Trigger=require(_0x3395('0x4'));var Dialer=require('./dialer');var Preview=require(_0x3395('0x5'));var Fax=require(_0x3395('0x6'));var user=require(_0x3395('0x7'));var voiceQueue=require(_0x3395('0x8'));var voiceQueueReport=require(_0x3395('0x9'));var voiceCallReport=require(_0x3395('0xa'));var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0x3395('0xb'));var cmHopperHistory=require(_0x3395('0xc'));var campaign=require(_0x3395('0xd'));var voiceExtension=require(_0x3395('0xe'));var faxAccount=require(_0x3395('0xf'));var zendesk=require(_0x3395('0x10'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x3395('0x11'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x3395('0x12'));var zoho=require(_0x3395('0x13'));var vtiger=require(_0x3395('0x14'));var freshsales=require(_0x3395('0x15'));var servicenow=require(_0x3395('0x16'));var dynamics365=require(_0x3395('0x17'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x3395('0x18')](_0x3395('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x3395('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user[_0x3395('0x1a')]())['then'](realtime['initAgents']())[_0x3395('0x1b')](user['getTelephones']())[_0x3395('0x1b')](realtime['initTelephones']())[_0x3395('0x1b')](trunk[_0x3395('0x1c')]())[_0x3395('0x1b')](realtime[_0x3395('0x1d')]())[_0x3395('0x1b')](voiceQueue[_0x3395('0x1e')]())[_0x3395('0x1b')](realtime['initVoiceQueues']())[_0x3395('0x1b')](trigger[_0x3395('0x1f')]())[_0x3395('0x1b')](realtime[_0x3395('0x20')]())[_0x3395('0x1b')](template[_0x3395('0x21')]())[_0x3395('0x1b')](realtime['initTemplates']())[_0x3395('0x1b')](zendesk[_0x3395('0x22')]())['then'](realtime[_0x3395('0x23')]())['then'](salesforce['getSalesforceAccounts']())[_0x3395('0x1b')](realtime[_0x3395('0x24')]())[_0x3395('0x1b')](sugarcrm[_0x3395('0x25')]())[_0x3395('0x1b')](realtime[_0x3395('0x26')]())[_0x3395('0x1b')](freshdesk[_0x3395('0x27')]())['then'](realtime[_0x3395('0x28')]())['then'](desk[_0x3395('0x29')]())['then'](realtime['initDeskAccounts']())[_0x3395('0x1b')](zoho[_0x3395('0x2a')]())['then'](realtime[_0x3395('0x2b')]())[_0x3395('0x1b')](vtiger[_0x3395('0x2c')]())[_0x3395('0x1b')](realtime['initVtigerAccounts']())[_0x3395('0x1b')](freshsales[_0x3395('0x2d')]())[_0x3395('0x1b')](realtime[_0x3395('0x2e')]())[_0x3395('0x1b')](servicenow[_0x3395('0x2f')]())[_0x3395('0x1b')](realtime[_0x3395('0x30')]())['then'](dynamics365[_0x3395('0x31')]())[_0x3395('0x1b')](realtime[_0x3395('0x32')]())['then'](campaign['getCampaigns']())[_0x3395('0x1b')](realtime[_0x3395('0x33')]())[_0x3395('0x1b')](voiceExtension[_0x3395('0x34')]())[_0x3395('0x1b')](realtime[_0x3395('0x35')]())['then'](faxAccount[_0x3395('0x36')]())['then'](realtime[_0x3395('0x37')]())[_0x3395('0x1b')](function(){return realtime;});}function initParams(){return BPromise['resolve']()['then'](voiceQueueReport[_0x3395('0x38')]())['then'](realtime[_0x3395('0x39')]())[_0x3395('0x1b')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x3395('0x1b')](realtime[_0x3395('0x3a')]())[_0x3395('0x1b')](cmHopperHistory['getCampaignHopperHistory']())['then'](realtime[_0x3395('0x3b')]())[_0x3395('0x1b')](voiceCallReport[_0x3395('0x3c')]())[_0x3395('0x1b')](realtime[_0x3395('0x3d')]())[_0x3395('0x1b')](function(_0x5f1701){})[_0x3395('0x3e')](function(_0x353e9e){console['log'](_0x353e9e);});}function main(){return server[_0x3395('0x3f')](realtime,preview,fax)[_0x3395('0x1b')](function(_0x2185a8){return initRealtime();})['then'](function(){return initParams();})[_0x3395('0x1b')](function(){report[_0x3395('0x40')]();setInterval(initRealtime,0x1388);})[_0x3395('0x3e')](function(_0x17f30e){console[_0x3395('0x41')](_0x17f30e);});}main();
\ No newline at end of file
index 8836d55..74f74e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','prototype','updateStatusRealtime','state','toLowerCase','idle','inuse','talking','statePause','toNumber','interface','format','user:%s','user:save','emit','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','unknown','status'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xedd9,0xfc));var _0x9edd=function(_0x35bad0,_0x21927d){_0x35bad0=_0x35bad0-0x0;var _0x4fe50f=_0xedd9[_0x35bad0];return _0x4fe50f;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var md5=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var config=require(_0x9edd('0x4'));config[_0x9edd('0x5')]=_[_0x9edd('0x6')](config[_0x9edd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x9edd('0x7'))(new Redis(config[_0x9edd('0x5')]));function Agent(_0x268f9e){this['id']=_0x268f9e['id']||0x0;this[_0x9edd('0x8')]=_0x268f9e['name']||'';this[_0x9edd('0x9')]=_0x268f9e['email']||'';this[_0x9edd('0xa')]=_0x268f9e[_0x9edd('0xa')]||'';this[_0x9edd('0xb')]=_0x268f9e[_0x9edd('0xb')]||'';this['state']=_0x9edd('0xc');this['stateTime']=0x0;this[_0x9edd('0xd')]=_0x9edd('0xc');this['address']='';this[_0x9edd('0xe')]='';this[_0x9edd('0xf')]='';this['interface']='';this[_0x9edd('0x10')]=_0x268f9e[_0x9edd('0x10')]||![];this[_0x9edd('0x11')]=_0x9edd('0xc');this[_0x9edd('0x12')]=0x0;this[_0x9edd('0x13')]='';this[_0x9edd('0x14')]='';this[_0x9edd('0x15')]=![];this['local']=![];this[_0x9edd('0x2')]='';}Agent[_0x9edd('0x16')][_0x9edd('0x17')]=function(_0x4d9a7){var _0x13b6b6;if(_0x4d9a7&&_0x4d9a7[_0x9edd('0x18')]){_0x13b6b6=_0x4d9a7[_0x9edd('0x18')][_0x9edd('0x19')]();switch(_0x13b6b6){case'not_inuse':_0x13b6b6=_0x9edd('0x1a');break;case _0x9edd('0x1b'):_0x13b6b6=_0x9edd('0x1c');break;}}if(_0x13b6b6&&this['voiceStatus']!==_0x13b6b6||_0x4d9a7[_0x9edd('0x1d')]){this[_0x9edd('0x12')]=_[_0x9edd('0x1e')](moment()['format']('x'));}if(_0x13b6b6){this[_0x9edd('0x11')]=_0x13b6b6;}var _0x5d879c={'id':this['id'],'name':this[_0x9edd('0x8')],'email':this[_0x9edd('0x9')],'accountcode':this['accountcode'],'fullname':this['fullname'],'state':this[_0x9edd('0x18')],'stateTime':this['stateTime'],'status':this[_0x9edd('0xd')],'address':this['address'],'online':this['online'],'voiceStatus':this[_0x9edd('0x11')],'voiceStatusTime':this[_0x9edd('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9edd('0x1f')],'onhold':this[_0x9edd('0x15')]};var _0x477878=md5(JSON['stringify'](_0x5d879c));if(this[_0x9edd('0x2')]!==_0x477878){this[_0x9edd('0x2')]=_0x477878;io['to'](util[_0x9edd('0x20')](_0x9edd('0x21'),_0x5d879c[_0x9edd('0x8')]))['emit'](_0x9edd('0x22'),_0x5d879c);io[_0x9edd('0x23')](_0x9edd('0x24'),_0x5d879c);}};module[_0x9edd('0x25')]=Agent;
\ No newline at end of file
+var _0xa9e0=['stateTime','status','address','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','md5','prototype','updateStatusRealtime','not_inuse','inuse','talking','statePause','toNumber','format','fullname','stringify','user:%s','emit','user:save','user:presence','exports','lodash','util','moment','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','email','accountcode','state','unknown'];(function(_0x27657c,_0x36813e){var _0x12324a=function(_0x3f6eea){while(--_0x3f6eea){_0x27657c['push'](_0x27657c['shift']());}};_0x12324a(++_0x36813e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));config['redis']=_[_0x0a9e('0x4')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x6'),'port':0x18eb});var io=require(_0x0a9e('0x7'))(new Redis(config[_0x0a9e('0x5')]));function Agent(_0x57b080){this['id']=_0x57b080['id']||0x0;this[_0x0a9e('0x8')]=_0x57b080[_0x0a9e('0x8')]||'';this[_0x0a9e('0x9')]=_0x57b080['email']||'';this['accountcode']=_0x57b080[_0x0a9e('0xa')]||'';this['fullname']=_0x57b080['fullname']||'';this[_0x0a9e('0xb')]=_0x0a9e('0xc');this[_0x0a9e('0xd')]=0x0;this[_0x0a9e('0xe')]=_0x0a9e('0xc');this[_0x0a9e('0xf')]='';this['phone']='';this['mobile']='';this['interface']='';this['online']=_0x57b080[_0x0a9e('0x10')]||![];this[_0x0a9e('0x11')]=_0x0a9e('0xc');this[_0x0a9e('0x12')]=0x0;this[_0x0a9e('0x13')]='';this[_0x0a9e('0x14')]='';this['onhold']=![];this[_0x0a9e('0x15')]=![];this[_0x0a9e('0x16')]='';}Agent[_0x0a9e('0x17')][_0x0a9e('0x18')]=function(_0x44dcfd){var _0x4d5611;if(_0x44dcfd&&_0x44dcfd['state']){_0x4d5611=_0x44dcfd[_0x0a9e('0xb')]['toLowerCase']();switch(_0x4d5611){case _0x0a9e('0x19'):_0x4d5611='idle';break;case _0x0a9e('0x1a'):_0x4d5611=_0x0a9e('0x1b');break;}}if(_0x4d5611&&this['voiceStatus']!==_0x4d5611||_0x44dcfd[_0x0a9e('0x1c')]){this['voiceStatusTime']=_[_0x0a9e('0x1d')](moment()[_0x0a9e('0x1e')]('x'));}if(_0x4d5611){this[_0x0a9e('0x11')]=_0x4d5611;}var _0x205fd6={'id':this['id'],'name':this[_0x0a9e('0x8')],'email':this[_0x0a9e('0x9')],'accountcode':this[_0x0a9e('0xa')],'fullname':this[_0x0a9e('0x1f')],'state':this[_0x0a9e('0xb')],'stateTime':this[_0x0a9e('0xd')],'status':this[_0x0a9e('0xe')],'address':this[_0x0a9e('0xf')],'online':this['online'],'voiceStatus':this[_0x0a9e('0x11')],'voiceStatusTime':this[_0x0a9e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x0a9e('0x14')],'interface':this['interface'],'onhold':this['onhold']};var _0x3a02e1=md5(JSON[_0x0a9e('0x20')](_0x205fd6));if(this[_0x0a9e('0x16')]!==_0x3a02e1){this[_0x0a9e('0x16')]=_0x3a02e1;io['to'](util['format'](_0x0a9e('0x21'),_0x205fd6[_0x0a9e('0x8')]))[_0x0a9e('0x22')](_0x0a9e('0x23'),_0x205fd6);io[_0x0a9e('0x22')](_0x0a9e('0x24'),_0x205fd6);}};module[_0x0a9e('0x25')]=Agent;
\ No newline at end of file
index 7f8a15f..33e457d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x682b=['dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','name','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry'];(function(_0x4da3b6,_0x233aff){var _0x574d38=function(_0x4fa45b){while(--_0x4fa45b){_0x4da3b6['push'](_0x4da3b6['shift']());}};_0x574d38(++_0x233aff);}(_0x682b,0x7d));var _0xb682=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x682b[_0x4b7895];return _0x264180;};'use strict';function Campaign(_0xfddbb7){this['id']=_0xfddbb7['id']||0x0;this['name']=_0xfddbb7['name']||'';this[_0xb682('0x0')]=_0xfddbb7['type']||_0xb682('0x1');this[_0xb682('0x2')]=0x0;this[_0xb682('0x3')]=0x0;this[_0xb682('0x4')]=0x0;this[_0xb682('0x5')]=0x0;this[_0xb682('0x6')]='';this['sendMessageOneNotActive']=!![];this['active']=_0xfddbb7[_0xb682('0x7')];this[_0xb682('0x8')]=_0xfddbb7[_0xb682('0x8')];this[_0xb682('0x9')]=_0xfddbb7[_0xb682('0x9')]||null;this[_0xb682('0xa')]=_0xfddbb7[_0xb682('0xa')]?_0xfddbb7[_0xb682('0xa')]:null;this[_0xb682('0xb')]=_0xfddbb7[_0xb682('0xb')];this['dialOriginateCallerIdNumber']=_0xfddbb7[_0xb682('0xc')];this['dialOriginateTimeout']=_0xfddbb7['dialOriginateTimeout']||0x1e;this['dialCongestionMaxRetry']=_0xfddbb7[_0xb682('0xd')];this[_0xb682('0xe')]=_0xfddbb7[_0xb682('0xe')];this[_0xb682('0xf')]=_0xfddbb7[_0xb682('0xf')];this['dialBusyRetryFrequency']=_0xfddbb7[_0xb682('0x10')];this[_0xb682('0x11')]=_0xfddbb7[_0xb682('0x11')];this[_0xb682('0x12')]=_0xfddbb7[_0xb682('0x12')];this['dialGlobalMaxRetry']=_0xfddbb7[_0xb682('0x13')];this[_0xb682('0x14')]=_0xfddbb7[_0xb682('0x14')]||0x3;this[_0xb682('0x15')]=_0xfddbb7[_0xb682('0x15')]||0x96;this[_0xb682('0x16')]=_0xfddbb7[_0xb682('0x16')]||0x3;this[_0xb682('0x17')]=_0xfddbb7[_0xb682('0x17')]||0x96;this[_0xb682('0x18')]=_0xfddbb7[_0xb682('0x18')]||0x3;this[_0xb682('0x19')]=_0xfddbb7[_0xb682('0x19')]||0x96;this[_0xb682('0x1a')]=_0xfddbb7[_0xb682('0x1a')]||0x3;this[_0xb682('0x1b')]=_0xfddbb7[_0xb682('0x1b')]||0x96;this[_0xb682('0x1c')]=_0xfddbb7[_0xb682('0x1c')]||0x3;this[_0xb682('0x1d')]=_0xfddbb7['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0xfddbb7[_0xb682('0x1e')]||'DESC';this[_0xb682('0x1f')]=_0xfddbb7[_0xb682('0x1f')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0xfddbb7[_0xb682('0x20')]||undefined;this[_0xb682('0x21')]=_0xfddbb7[_0xb682('0x21')]||undefined;this[_0xb682('0x22')]=_0xfddbb7[_0xb682('0x22')]?_0xfddbb7[_0xb682('0x22')]:undefined;this['Trunk']=_0xfddbb7[_0xb682('0x23')]?_0xfddbb7[_0xb682('0x23')]:undefined;this[_0xb682('0x24')]=_0xfddbb7['Interval']?_0xfddbb7['Interval']:undefined;this[_0xb682('0x25')]=_0xfddbb7['SquareProject']?_0xfddbb7[_0xb682('0x25')]:undefined;this['dialQueueProject']=_0xfddbb7[_0xb682('0x25')]?_0xfddbb7[_0xb682('0x25')][_0xb682('0x26')]:undefined;this[_0xb682('0x27')]=_0xfddbb7[_0xb682('0x27')]||![];this[_0xb682('0x28')]=_0xfddbb7[_0xb682('0x28')];this[_0xb682('0x29')]=_0xfddbb7[_0xb682('0x29')];this[_0xb682('0x2a')]=_0xfddbb7[_0xb682('0x2a')];this['dialAMDTotalAnalysisTime']=_0xfddbb7[_0xb682('0x2b')];this[_0xb682('0x2c')]=_0xfddbb7['dialAMDMinWordLength'];this[_0xb682('0x2d')]=_0xfddbb7['dialAMDBetweenWordsSilence'];this[_0xb682('0x2e')]=_0xfddbb7[_0xb682('0x2e')];this[_0xb682('0x2f')]=_0xfddbb7[_0xb682('0x2f')];this[_0xb682('0x30')]=_0xfddbb7[_0xb682('0x30')];}module[_0xb682('0x31')]=Campaign;
\ No newline at end of file
+var _0x82ed=['dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence'];(function(_0x385849,_0x4a4f72){var _0x3e851a=function(_0x35b2e4){while(--_0x35b2e4){_0x385849['push'](_0x385849['shift']());}};_0x3e851a(++_0x4a4f72);}(_0x82ed,0x13e));var _0xd82e=function(_0x147078,_0x4e509c){_0x147078=_0x147078-0x0;var _0x2d2f5c=_0x82ed[_0x147078];return _0x2d2f5c;};'use strict';function Campaign(_0x166628){this['id']=_0x166628['id']||0x0;this[_0xd82e('0x0')]=_0x166628[_0xd82e('0x0')]||'';this[_0xd82e('0x1')]=_0x166628['type']||_0xd82e('0x2');this[_0xd82e('0x3')]=0x0;this[_0xd82e('0x4')]=0x0;this[_0xd82e('0x5')]=0x0;this[_0xd82e('0x6')]=0x0;this[_0xd82e('0x7')]='';this[_0xd82e('0x8')]=!![];this[_0xd82e('0x9')]=_0x166628['active'];this[_0xd82e('0xa')]=_0x166628[_0xd82e('0xa')];this[_0xd82e('0xb')]=_0x166628['dialTimezone']||null;this[_0xd82e('0xc')]=_0x166628['dialGlobalInterval']?_0x166628[_0xd82e('0xc')]:null;this[_0xd82e('0xd')]=_0x166628[_0xd82e('0xd')];this['dialOriginateCallerIdNumber']=_0x166628[_0xd82e('0xe')];this[_0xd82e('0xf')]=_0x166628[_0xd82e('0xf')]||0x1e;this['dialCongestionMaxRetry']=_0x166628[_0xd82e('0x10')];this[_0xd82e('0x11')]=_0x166628['dialCongestionRetryFrequency'];this[_0xd82e('0x12')]=_0x166628[_0xd82e('0x12')];this[_0xd82e('0x13')]=_0x166628['dialBusyRetryFrequency'];this[_0xd82e('0x14')]=_0x166628['dialNoAnswerMaxRetry'];this[_0xd82e('0x15')]=_0x166628['dialNoAnswerRetryFrequency'];this[_0xd82e('0x16')]=_0x166628[_0xd82e('0x16')];this[_0xd82e('0x17')]=_0x166628[_0xd82e('0x17')]||0x3;this[_0xd82e('0x18')]=_0x166628[_0xd82e('0x18')]||0x96;this[_0xd82e('0x19')]=_0x166628[_0xd82e('0x19')]||0x3;this[_0xd82e('0x1a')]=_0x166628[_0xd82e('0x1a')]||0x96;this[_0xd82e('0x1b')]=_0x166628[_0xd82e('0x1b')]||0x3;this[_0xd82e('0x1c')]=_0x166628[_0xd82e('0x1c')]||0x96;this['dialMachineMaxRetry']=_0x166628[_0xd82e('0x1d')]||0x3;this[_0xd82e('0x1e')]=_0x166628[_0xd82e('0x1e')]||0x96;this[_0xd82e('0x1f')]=_0x166628[_0xd82e('0x1f')]||0x3;this[_0xd82e('0x20')]=_0x166628['dialAgentRejectRetryFrequency']||0x96;this[_0xd82e('0x21')]=_0x166628[_0xd82e('0x21')]||_0xd82e('0x22');this[_0xd82e('0x23')]=_0x166628[_0xd82e('0x23')]||undefined;this[_0xd82e('0x24')]=_0x166628[_0xd82e('0x24')]||undefined;this[_0xd82e('0x25')]=_0x166628[_0xd82e('0x25')]||undefined;this[_0xd82e('0x26')]=_0x166628['TrunkBackup']?_0x166628[_0xd82e('0x26')]:undefined;this['Trunk']=_0x166628[_0xd82e('0x27')]?_0x166628['Trunk']:undefined;this[_0xd82e('0x28')]=_0x166628[_0xd82e('0x28')]?_0x166628[_0xd82e('0x28')]:undefined;this['SquareProject']=_0x166628[_0xd82e('0x29')]?_0x166628[_0xd82e('0x29')]:undefined;this['dialQueueProject']=_0x166628[_0xd82e('0x29')]?_0x166628[_0xd82e('0x29')][_0xd82e('0x0')]:undefined;this['dialAMDActive']=_0x166628[_0xd82e('0x2a')]||![];this['dialAMDInitialSilence']=_0x166628[_0xd82e('0x2b')];this[_0xd82e('0x2c')]=_0x166628['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x166628[_0xd82e('0x2d')];this[_0xd82e('0x2e')]=_0x166628[_0xd82e('0x2e')];this['dialAMDMinWordLength']=_0x166628[_0xd82e('0x2f')];this['dialAMDBetweenWordsSilence']=_0x166628[_0xd82e('0x30')];this[_0xd82e('0x31')]=_0x166628[_0xd82e('0x31')];this[_0xd82e('0x32')]=_0x166628['dialAMDSilenceThreshold'];this[_0xd82e('0x33')]=_0x166628[_0xd82e('0x33')];}module['exports']=Campaign;
\ No newline at end of file
index 8555d17..52f9339 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78e7=['answertime','endtime','unmanaged','abandoned','lastapplication','duration','billableseconds','holdtime','type','tag','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','mohtime','channel','destinationchannel','calleridname','connectedlinename','accountcode','context','uniqueid','exten','answered'];(function(_0xcc1811,_0x5b9a54){var _0x3ab8a0=function(_0x10d6b0){while(--_0x10d6b0){_0xcc1811['push'](_0xcc1811['shift']());}};_0x3ab8a0(++_0x5b9a54);}(_0x78e7,0x17d));var _0x778e=function(_0x41c84a,_0x503802){_0x41c84a=_0x41c84a-0x0;var _0x5c2869=_0x78e7[_0x41c84a];return _0x5c2869;};'use strict';function Channel(){this['starttime']=null;this[_0x778e('0x0')]='';this[_0x778e('0x1')]='';this['calleridnum']=0x0;this[_0x778e('0x2')]='';this['connectedlinenum']=undefined;this[_0x778e('0x3')]=undefined;this[_0x778e('0x4')]=0x0;this[_0x778e('0x5')]='';this[_0x778e('0x6')]=0x0;this['linkedid']=0x0;this[_0x778e('0x7')]=0x0;this[_0x778e('0x8')]=![];this[_0x778e('0x9')]=null;this[_0x778e('0xa')]=null;this[_0x778e('0xb')]=![];this[_0x778e('0xc')]=![];this[_0x778e('0xd')]='';this['lastdata']='';this[_0x778e('0xe')]=0x0;this[_0x778e('0xf')]=0x0;this[_0x778e('0x10')]=0x0;this[_0x778e('0x11')]=null;this[_0x778e('0x12')]=null;this[_0x778e('0x13')]=null;this[_0x778e('0x14')]=![];this[_0x778e('0x15')]=null;this[_0x778e('0x16')]=null;this[_0x778e('0x17')]=[];this[_0x778e('0x18')]=undefined;this['transferconnectedlinenum']=undefined;this['transferType']=undefined;this[_0x778e('0x19')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x4b24=['disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinename','accountcode','uniqueid','exten','answertime','endtime','unmanaged','abandoned','lastdata','duration','holdtime','type','tag'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4b24,0x8a));var _0x44b2=function(_0x2abd22,_0x43fd11){_0x2abd22=_0x2abd22-0x0;var _0x479632=_0x4b24[_0x2abd22];return _0x479632;};'use strict';function Channel(){this[_0x44b2('0x0')]=null;this[_0x44b2('0x1')]='';this[_0x44b2('0x2')]='';this[_0x44b2('0x3')]=0x0;this[_0x44b2('0x4')]='';this['connectedlinenum']=undefined;this[_0x44b2('0x5')]=undefined;this[_0x44b2('0x6')]=0x0;this['context']='';this[_0x44b2('0x7')]=0x0;this['linkedid']=0x0;this[_0x44b2('0x8')]=0x0;this['answered']=![];this[_0x44b2('0x9')]=null;this[_0x44b2('0xa')]=null;this[_0x44b2('0xb')]=![];this[_0x44b2('0xc')]=![];this['lastapplication']='';this[_0x44b2('0xd')]='';this[_0x44b2('0xe')]=0x0;this['billableseconds']=0x0;this[_0x44b2('0xf')]=0x0;this[_0x44b2('0x10')]=null;this[_0x44b2('0x11')]=null;this[_0x44b2('0x12')]=null;this[_0x44b2('0x13')]=![];this[_0x44b2('0x14')]=null;this[_0x44b2('0x15')]=null;this[_0x44b2('0x16')]=[];this[_0x44b2('0x17')]=undefined;this[_0x44b2('0x18')]=undefined;this['transferType']=undefined;this['mohtime']=0x0;}module[_0x44b2('0x19')]=Channel;
\ No newline at end of file
index 154a997..54557c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2022=['username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','serverUrl','name'];(function(_0x569f5f,_0x1c6c5c){var _0x3e8e2e=function(_0x46344f){while(--_0x46344f){_0x569f5f['push'](_0x569f5f['shift']());}};_0x3e8e2e(++_0x1c6c5c);}(_0x2022,0xe5));var _0x2202=function(_0x1c22ac,_0x4c86bd){_0x1c22ac=_0x1c22ac-0x0;var _0x4c867a=_0x2022[_0x1c22ac];return _0x4c867a;};'use strict';function DeskAccount(_0x354335){this['id']=_0x354335['id']||0x0;this[_0x2202('0x0')]=_0x354335[_0x2202('0x0')]||'';this['username']=_0x354335[_0x2202('0x1')]||'';this['remoteUri']=_0x354335[_0x2202('0x2')]||'';this[_0x2202('0x3')]=_0x354335[_0x2202('0x3')]||'';this[_0x2202('0x4')]=_0x354335[_0x2202('0x4')]||'';this['consumerKey']=_0x354335[_0x2202('0x5')]||'';this[_0x2202('0x6')]=_0x354335[_0x2202('0x6')]||'';this[_0x2202('0x7')]=_0x354335[_0x2202('0x7')]||'';this[_0x2202('0x8')]=_0x354335[_0x2202('0x8')]||'';this['type']=_0x354335['type']||'';this[_0x2202('0x9')]=_0x354335['serverUrl']||'';this['Configurations']=_0x354335['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x6656=['name','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x6656,0x1c8));var _0x6665=function(_0x7794ac,_0x19c5c6){_0x7794ac=_0x7794ac-0x0;var _0x54b7d4=_0x6656[_0x7794ac];return _0x54b7d4;};'use strict';function DeskAccount(_0x1582bc){this['id']=_0x1582bc['id']||0x0;this['name']=_0x1582bc[_0x6665('0x0')]||'';this['username']=_0x1582bc['username']||'';this[_0x6665('0x1')]=_0x1582bc[_0x6665('0x1')]||'';this['authType']=_0x1582bc[_0x6665('0x2')]||'';this[_0x6665('0x3')]=_0x1582bc[_0x6665('0x3')]||'';this[_0x6665('0x4')]=_0x1582bc['consumerKey']||'';this[_0x6665('0x5')]=_0x1582bc['consumerSecret']||'';this[_0x6665('0x6')]=_0x1582bc['token']||'';this[_0x6665('0x7')]=_0x1582bc[_0x6665('0x7')]||'';this[_0x6665('0x8')]=_0x1582bc[_0x6665('0x8')]||'';this[_0x6665('0x9')]=_0x1582bc[_0x6665('0x9')]||'';this[_0x6665('0xa')]=_0x1582bc[_0x6665('0xa')]||{};}module[_0x6665('0xb')]=DeskAccount;
\ No newline at end of file
index 03d1da4..c4ca794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['clientId','clientSecret','serverUrl','Configurations','exports','name','username','password','remoteUri','tenantId'];(function(_0x1bbefb,_0x17e79d){var _0x54c6ef=function(_0x3e7f2a){while(--_0x3e7f2a){_0x1bbefb['push'](_0x1bbefb['shift']());}};_0x54c6ef(++_0x17e79d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5d6c3e,_0x409a3e){_0x5d6c3e=_0x5d6c3e-0x0;var _0x44ecb7=_0xcb91[_0x5d6c3e];return _0x44ecb7;};'use strict';function Dynamics365Account(_0x181cac){this['id']=_0x181cac['id']||0x0;this['name']=_0x181cac[_0x1cb9('0x0')]||'';this[_0x1cb9('0x1')]=_0x181cac[_0x1cb9('0x1')]||'';this[_0x1cb9('0x2')]=_0x181cac['password']||'';this[_0x1cb9('0x3')]=_0x181cac[_0x1cb9('0x3')]||'';this['tenantId']=_0x181cac[_0x1cb9('0x4')]||'';this[_0x1cb9('0x5')]=_0x181cac['clientId']||'';this[_0x1cb9('0x6')]=_0x181cac[_0x1cb9('0x6')]||{};this['serverUrl']=_0x181cac[_0x1cb9('0x7')]||'';this[_0x1cb9('0x8')]=_0x181cac['Configurations']||{};}module[_0x1cb9('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0x2dae=['clientId','clientSecret','serverUrl','Configurations','exports','name','username','password','remoteUri','tenantId'];(function(_0x2743b1,_0x29474f){var _0xaaffd1=function(_0x58dd6f){while(--_0x58dd6f){_0x2743b1['push'](_0x2743b1['shift']());}};_0xaaffd1(++_0x29474f);}(_0x2dae,0xc3));var _0xe2da=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0x2dae[_0x403c20];return _0x2b271a;};'use strict';function Dynamics365Account(_0x463a36){this['id']=_0x463a36['id']||0x0;this['name']=_0x463a36[_0xe2da('0x0')]||'';this[_0xe2da('0x1')]=_0x463a36[_0xe2da('0x1')]||'';this[_0xe2da('0x2')]=_0x463a36[_0xe2da('0x2')]||'';this['remoteUri']=_0x463a36[_0xe2da('0x3')]||'';this[_0xe2da('0x4')]=_0x463a36[_0xe2da('0x4')]||'';this[_0xe2da('0x5')]=_0x463a36['clientId']||'';this[_0xe2da('0x6')]=_0x463a36[_0xe2da('0x6')]||{};this[_0xe2da('0x7')]=_0x463a36[_0xe2da('0x7')]||'';this[_0xe2da('0x8')]=_0x463a36[_0xe2da('0x8')]||{};}module[_0xe2da('0x9')]=Dynamics365Account;
\ No newline at end of file
index 77424b0..f6d462c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8c8=['v17,v27,v29','gateway','faxdetect','t38timeout','SIP','Trunk','ListId','key','name','description','ecm','headerinfo','localstationid','minrate','modem'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xa8c8,0x8f));var _0x8a8c=function(_0x589c5e,_0x3fa237){_0x589c5e=_0x589c5e-0x0;var _0x5e8102=_0xa8c8[_0x589c5e];return _0x5e8102;};'use strict';function FaxAccount(_0x5695a7){this['id']=_0x5695a7['id']||0x0;this[_0x8a8c('0x0')]=_0x5695a7[_0x8a8c('0x0')]||'';this[_0x8a8c('0x1')]=_0x5695a7[_0x8a8c('0x1')];this[_0x8a8c('0x2')]=_0x5695a7[_0x8a8c('0x2')];this[_0x8a8c('0x3')]=_0x5695a7['headerinfo'];this[_0x8a8c('0x4')]=_0x5695a7[_0x8a8c('0x4')];this[_0x8a8c('0x5')]=_0x5695a7[_0x8a8c('0x5')]||0x960;this['maxrate']=_0x5695a7['maxrate']||0x3840;this[_0x8a8c('0x6')]=_0x5695a7[_0x8a8c('0x6')]||_0x8a8c('0x7');this['gateway']=_0x5695a7[_0x8a8c('0x8')]||'no';this['faxdetect']=_0x5695a7[_0x8a8c('0x9')]||'no';this[_0x8a8c('0xa')]=_0x5695a7[_0x8a8c('0xa')]||0x1388;this['tech']=_0x5695a7['tech']||_0x8a8c('0xb');this[_0x8a8c('0xc')]=_0x5695a7['Trunk']?_0x5695a7[_0x8a8c('0xc')]:undefined;this[_0x8a8c('0xd')]=_0x5695a7[_0x8a8c('0xd')];this[_0x8a8c('0xe')]=_0x5695a7[_0x8a8c('0xe')];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0x8bed=['t38timeout','tech','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect'];(function(_0x5469e2,_0x1cb459){var _0x5849a2=function(_0x8e818f){while(--_0x8e818f){_0x5469e2['push'](_0x5469e2['shift']());}};_0x5849a2(++_0x1cb459);}(_0x8bed,0x1a6));var _0xd8be=function(_0x3ed1c1,_0x45fe0a){_0x3ed1c1=_0x3ed1c1-0x0;var _0x11797d=_0x8bed[_0x3ed1c1];return _0x11797d;};'use strict';function FaxAccount(_0x51cd83){this['id']=_0x51cd83['id']||0x0;this[_0xd8be('0x0')]=_0x51cd83[_0xd8be('0x0')]||'';this[_0xd8be('0x1')]=_0x51cd83[_0xd8be('0x1')];this['ecm']=_0x51cd83[_0xd8be('0x2')];this['headerinfo']=_0x51cd83[_0xd8be('0x3')];this[_0xd8be('0x4')]=_0x51cd83[_0xd8be('0x4')];this[_0xd8be('0x5')]=_0x51cd83[_0xd8be('0x5')]||0x960;this[_0xd8be('0x6')]=_0x51cd83[_0xd8be('0x6')]||0x3840;this[_0xd8be('0x7')]=_0x51cd83[_0xd8be('0x7')]||'v17,v27,v29';this[_0xd8be('0x8')]=_0x51cd83[_0xd8be('0x8')]||'no';this[_0xd8be('0x9')]=_0x51cd83[_0xd8be('0x9')]||'no';this[_0xd8be('0xa')]=_0x51cd83[_0xd8be('0xa')]||0x1388;this[_0xd8be('0xb')]=_0x51cd83[_0xd8be('0xb')]||'SIP';this[_0xd8be('0xc')]=_0x51cd83[_0xd8be('0xc')]?_0x51cd83[_0xd8be('0xc')]:undefined;this[_0xd8be('0xd')]=_0x51cd83[_0xd8be('0xd')];this[_0xd8be('0xe')]=_0x51cd83[_0xd8be('0xe')];}module[_0xd8be('0xf')]=FaxAccount;
\ No newline at end of file
index 8c09de6..74908a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878b=['remoteUri','serverUrl','Configurations','exports','name','username','token'];(function(_0x3bc1d7,_0x2cbd54){var _0x1fd8eb=function(_0x54c1e8){while(--_0x54c1e8){_0x3bc1d7['push'](_0x3bc1d7['shift']());}};_0x1fd8eb(++_0x2cbd54);}(_0x878b,0x10e));var _0xb878=function(_0x56ee15,_0x1effd1){_0x56ee15=_0x56ee15-0x0;var _0x94991f=_0x878b[_0x56ee15];return _0x94991f;};'use strict';function FreshdeskAccount(_0x331e88){this['id']=_0x331e88['id']||0x0;this[_0xb878('0x0')]=_0x331e88[_0xb878('0x0')]||'';this[_0xb878('0x1')]=_0x331e88[_0xb878('0x1')]||'';this['apiKey']=_0x331e88[_0xb878('0x2')]||'';this[_0xb878('0x3')]=_0x331e88[_0xb878('0x3')]||'';this[_0xb878('0x4')]=_0x331e88[_0xb878('0x4')]||'';this[_0xb878('0x5')]=_0x331e88[_0xb878('0x5')]||{};}module[_0xb878('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0xd5b7=['serverUrl','Configurations','exports','name','username','token','remoteUri'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd5b7,0xea));var _0x7d5b=function(_0x2134b7,_0x1eb5e2){_0x2134b7=_0x2134b7-0x0;var _0x6c5914=_0xd5b7[_0x2134b7];return _0x6c5914;};'use strict';function FreshdeskAccount(_0x295236){this['id']=_0x295236['id']||0x0;this[_0x7d5b('0x0')]=_0x295236[_0x7d5b('0x0')]||'';this['username']=_0x295236[_0x7d5b('0x1')]||'';this['apiKey']=_0x295236[_0x7d5b('0x2')]||'';this[_0x7d5b('0x3')]=_0x295236[_0x7d5b('0x3')]||'';this[_0x7d5b('0x4')]=_0x295236[_0x7d5b('0x4')]||'';this[_0x7d5b('0x5')]=_0x295236[_0x7d5b('0x5')]||{};}module[_0x7d5b('0x6')]=FreshdeskAccount;
\ No newline at end of file
index d2b9bf9..2903580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5162=['token','remoteUri','serverUrl','Configurations','apiKey'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5162,0x103));var _0x2516=function(_0x124ca2,_0x5d5659){_0x124ca2=_0x124ca2-0x0;var _0x329cda=_0x5162[_0x124ca2];return _0x329cda;};'use strict';function FreshsalesAccount(_0x3bac79){this['id']=_0x3bac79['id']||0x0;this['name']=_0x3bac79['name']||'';this['username']=_0x3bac79['username']||'';this[_0x2516('0x0')]=_0x3bac79[_0x2516('0x1')]||'';this[_0x2516('0x2')]=_0x3bac79[_0x2516('0x2')]||'';this[_0x2516('0x3')]=_0x3bac79[_0x2516('0x3')]||'';this[_0x2516('0x4')]=_0x3bac79['Configurations']||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0x018c=['Configurations','exports','name','apiKey','remoteUri','serverUrl'];(function(_0x56bd0c,_0x204faf){var _0x4bf104=function(_0x3fa34d){while(--_0x3fa34d){_0x56bd0c['push'](_0x56bd0c['shift']());}};_0x4bf104(++_0x204faf);}(_0x018c,0xda));var _0xc018=function(_0x51dee0,_0x3dee51){_0x51dee0=_0x51dee0-0x0;var _0x8b687c=_0x018c[_0x51dee0];return _0x8b687c;};'use strict';function FreshsalesAccount(_0x39a85e){this['id']=_0x39a85e['id']||0x0;this[_0xc018('0x0')]=_0x39a85e[_0xc018('0x0')]||'';this['username']=_0x39a85e['username']||'';this[_0xc018('0x1')]=_0x39a85e['token']||'';this[_0xc018('0x2')]=_0x39a85e[_0xc018('0x2')]||'';this[_0xc018('0x3')]=_0x39a85e[_0xc018('0x3')]||'';this['Configurations']=_0x39a85e[_0xc018('0x4')]||{};}module[_0xc018('0x5')]=FreshsalesAccount;
\ No newline at end of file
index 26e20e0..b4a60bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47fa=['connectedlinename','accountcode','exten','priority','holdtime','assigned','lastAssignedTo','mohtime','exports','type','inbound','calleridnum','calleridname','queue','position','count','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','originalposition','connectedlinenum'];(function(_0xcda3c8,_0x268e1c){var _0x316f10=function(_0x51dd80){while(--_0x51dd80){_0xcda3c8['push'](_0xcda3c8['shift']());}};_0x316f10(++_0x268e1c);}(_0x47fa,0x1ad));var _0xa47f=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x47fa[_0x1ab180];return _0xfb2c2d;};'use strict';function QueueReport(){this[_0xa47f('0x0')]=_0xa47f('0x1');this['uniqueid']='';this[_0xa47f('0x2')]='';this[_0xa47f('0x3')]='';this[_0xa47f('0x4')]='';this['queuecallerjoinAt']=null;this['queuecallerleaveAt']=null;this[_0xa47f('0x5')]=0x1;this[_0xa47f('0x6')]=0x1;this['queuecallerabandon']=![];this[_0xa47f('0x7')]=null;this[_0xa47f('0x8')]=![];this[_0xa47f('0x9')]=null;this['queuecallerexit']=![];this['queuecallerexitAt']=null;this[_0xa47f('0xa')]=0x1;this['channel']='';this[_0xa47f('0xb')]='';this[_0xa47f('0xc')]='';this[_0xa47f('0xd')]='';this['context']='';this[_0xa47f('0xe')]='';this[_0xa47f('0xf')]='';this[_0xa47f('0x10')]=0x0;this[_0xa47f('0x11')]=![];this[_0xa47f('0x12')]='';this[_0xa47f('0x13')]=0x0;this['variables']={};}module[_0xa47f('0x14')]=QueueReport;
\ No newline at end of file
+var _0x873b=['channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority','assigned','lastAssignedTo','motionChannel','mohtime','variables','type','uniqueid','calleridnum','calleridname','queue','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexitAt'];(function(_0x573476,_0x4eed04){var _0x340a4b=function(_0x2bbe07){while(--_0x2bbe07){_0x573476['push'](_0x573476['shift']());}};_0x340a4b(++_0x4eed04);}(_0x873b,0xbb));var _0xb873=function(_0x537c37,_0x536e74){_0x537c37=_0x537c37-0x0;var _0x241f84=_0x873b[_0x537c37];return _0x241f84;};'use strict';function QueueReport(){this[_0xb873('0x0')]='inbound';this[_0xb873('0x1')]='';this[_0xb873('0x2')]='';this[_0xb873('0x3')]='';this[_0xb873('0x4')]='';this['queuecallerjoinAt']=null;this[_0xb873('0x5')]=null;this[_0xb873('0x6')]=0x1;this[_0xb873('0x7')]=0x1;this[_0xb873('0x8')]=![];this[_0xb873('0x9')]=null;this[_0xb873('0xa')]=![];this[_0xb873('0xb')]=null;this['queuecallerexit']=![];this[_0xb873('0xc')]=null;this['originalposition']=0x1;this[_0xb873('0xd')]='';this[_0xb873('0xe')]='';this[_0xb873('0xf')]='';this[_0xb873('0x10')]='';this[_0xb873('0x11')]='';this[_0xb873('0x12')]='';this[_0xb873('0x13')]='';this['holdtime']=0x0;this[_0xb873('0x14')]=![];this[_0xb873('0x15')]='';this[_0xb873('0x16')]='voice';this[_0xb873('0x17')]=0x0;this[_0xb873('0x18')]={};}module['exports']=QueueReport;
\ No newline at end of file
index 33a77d4..745ccb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaee=['exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations'];(function(_0xfa87f7,_0x3cc23f){var _0x5ed86e=function(_0x3dc05b){while(--_0x3dc05b){_0xfa87f7['push'](_0xfa87f7['shift']());}};_0x5ed86e(++_0x3cc23f);}(_0xfaee,0x15d));var _0xefae=function(_0x2002b3,_0x11e91c){_0x2002b3=_0x2002b3-0x0;var _0x2756f0=_0xfaee[_0x2002b3];return _0x2756f0;};'use strict';function SalesforceAccount(_0x4c4ef9){this['id']=_0x4c4ef9['id']||0x0;this[_0xefae('0x0')]=_0x4c4ef9['name']||'';this[_0xefae('0x1')]=_0x4c4ef9[_0xefae('0x1')]||'';this[_0xefae('0x2')]=_0x4c4ef9[_0xefae('0x2')]||'';this[_0xefae('0x3')]=_0x4c4ef9[_0xefae('0x3')]||'';this[_0xefae('0x4')]=_0x4c4ef9[_0xefae('0x4')]||'';this[_0xefae('0x5')]=_0x4c4ef9[_0xefae('0x5')]||'';this['securityToken']=_0x4c4ef9[_0xefae('0x6')]||'';this[_0xefae('0x7')]=_0x4c4ef9[_0xefae('0x7')]||_0xefae('0x8');this[_0xefae('0x9')]=_0x4c4ef9['serverUrl']||'';this[_0xefae('0xa')]=_0x4c4ef9[_0xefae('0xa')]||{};}module[_0xefae('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0xc4fd=['clientId','clientSecret','securityToken','type','serverUrl','Configurations','exports','name','username','remoteUri','password'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xc4fd,0x167));var _0xdc4f=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xc4fd[_0x2dea24];return _0x309d58;};'use strict';function SalesforceAccount(_0x57adac){this['id']=_0x57adac['id']||0x0;this[_0xdc4f('0x0')]=_0x57adac[_0xdc4f('0x0')]||'';this[_0xdc4f('0x1')]=_0x57adac[_0xdc4f('0x1')]||'';this[_0xdc4f('0x2')]=_0x57adac['remoteUri']||'';this[_0xdc4f('0x3')]=_0x57adac[_0xdc4f('0x3')]||'';this[_0xdc4f('0x4')]=_0x57adac[_0xdc4f('0x4')]||'';this[_0xdc4f('0x5')]=_0x57adac['clientSecret']||'';this[_0xdc4f('0x6')]=_0x57adac[_0xdc4f('0x6')]||'';this[_0xdc4f('0x7')]=_0x57adac[_0xdc4f('0x7')]||'integrationTab';this[_0xdc4f('0x8')]=_0x57adac[_0xdc4f('0x8')]||'';this[_0xdc4f('0x9')]=_0x57adac[_0xdc4f('0x9')]||{};}module[_0xdc4f('0xa')]=SalesforceAccount;
\ No newline at end of file
index a4fd181..de3a314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa22=['serverUrl','Configurations','exports','username','password','remoteUri'];(function(_0x5ad0e1,_0x2466be){var _0x355c7b=function(_0x303667){while(--_0x303667){_0x5ad0e1['push'](_0x5ad0e1['shift']());}};_0x355c7b(++_0x2466be);}(_0xaa22,0x15f));var _0x2aa2=function(_0x2904f2,_0x3001ad){_0x2904f2=_0x2904f2-0x0;var _0x17936d=_0xaa22[_0x2904f2];return _0x17936d;};'use strict';function ServicenowAccount(_0x4b9f11){this['id']=_0x4b9f11['id']||0x0;this['name']=_0x4b9f11['name']||'';this['username']=_0x4b9f11[_0x2aa2('0x0')]||'';this[_0x2aa2('0x1')]=_0x4b9f11[_0x2aa2('0x1')]||'';this[_0x2aa2('0x2')]=_0x4b9f11[_0x2aa2('0x2')]||'';this[_0x2aa2('0x3')]=_0x4b9f11['serverUrl']||'';this[_0x2aa2('0x4')]=_0x4b9f11[_0x2aa2('0x4')]||{};}module[_0x2aa2('0x5')]=ServicenowAccount;
\ No newline at end of file
+var _0x4a21=['username','password','remoteUri','serverUrl','exports','name'];(function(_0x2fe27a,_0x286478){var _0x248e34=function(_0x344fc4){while(--_0x344fc4){_0x2fe27a['push'](_0x2fe27a['shift']());}};_0x248e34(++_0x286478);}(_0x4a21,0x65));var _0x14a2=function(_0x34232c,_0x18e61d){_0x34232c=_0x34232c-0x0;var _0x4d4f4e=_0x4a21[_0x34232c];return _0x4d4f4e;};'use strict';function ServicenowAccount(_0x46482d){this['id']=_0x46482d['id']||0x0;this[_0x14a2('0x0')]=_0x46482d[_0x14a2('0x0')]||'';this[_0x14a2('0x1')]=_0x46482d[_0x14a2('0x1')]||'';this[_0x14a2('0x2')]=_0x46482d[_0x14a2('0x2')]||'';this[_0x14a2('0x3')]=_0x46482d[_0x14a2('0x3')]||'';this['serverUrl']=_0x46482d[_0x14a2('0x4')]||'';this['Configurations']=_0x46482d['Configurations']||{};}module[_0x14a2('0x5')]=ServicenowAccount;
\ No newline at end of file
index 30c424d..9da98ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e58=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x5076e3,_0x500ef4){var _0x3c973c=function(_0x5ee0cf){while(--_0x5ee0cf){_0x5076e3['push'](_0x5076e3['shift']());}};_0x3c973c(++_0x500ef4);}(_0x3e58,0x16a));var _0x83e5=function(_0x29733c,_0x2da30b){_0x29733c=_0x29733c-0x0;var _0x49e72f=_0x3e58[_0x29733c];return _0x49e72f;};'use strict';function SugarcrmAccount(_0x39b21b){this['id']=_0x39b21b['id']||0x0;this[_0x83e5('0x0')]=_0x39b21b[_0x83e5('0x0')]||'';this[_0x83e5('0x1')]=_0x39b21b['username']||'';this[_0x83e5('0x2')]=_0x39b21b[_0x83e5('0x2')]||'';this[_0x83e5('0x3')]=_0x39b21b[_0x83e5('0x3')]||'';this[_0x83e5('0x4')]=_0x39b21b[_0x83e5('0x4')]||'';this[_0x83e5('0x5')]=_0x39b21b[_0x83e5('0x5')]||{};}module[_0x83e5('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0xa694=['name','username','password','serverUrl','exports'];(function(_0xc49288,_0x2c682d){var _0x13ea06=function(_0x3adcd5){while(--_0x3adcd5){_0xc49288['push'](_0xc49288['shift']());}};_0x13ea06(++_0x2c682d);}(_0xa694,0x9b));var _0x4a69=function(_0x2b9268,_0x4d8738){_0x2b9268=_0x2b9268-0x0;var _0x4a2870=_0xa694[_0x2b9268];return _0x4a2870;};'use strict';function SugarcrmAccount(_0x12c960){this['id']=_0x12c960['id']||0x0;this['name']=_0x12c960[_0x4a69('0x0')]||'';this[_0x4a69('0x1')]=_0x12c960[_0x4a69('0x1')]||'';this[_0x4a69('0x2')]=_0x12c960[_0x4a69('0x2')]||'';this['remoteUri']=_0x12c960['remoteUri']||'';this['serverUrl']=_0x12c960[_0x4a69('0x3')]||'';this['Configurations']=_0x12c960['Configurations']||{};}module[_0x4a69('0x4')]=SugarcrmAccount;
\ No newline at end of file
index cb31ec8..4ed1232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c0e=['status','address','name','accountcode','state','unknown','stateTime'];(function(_0xd88cfa,_0x234dcd){var _0x1a4edf=function(_0x28cff9){while(--_0x28cff9){_0xd88cfa['push'](_0xd88cfa['shift']());}};_0x1a4edf(++_0x234dcd);}(_0x4c0e,0x128));var _0xe4c0=function(_0x5bf840,_0x9fc2ab){_0x5bf840=_0x5bf840-0x0;var _0x4f4355=_0x4c0e[_0x5bf840];return _0x4f4355;};'use strict';function Telephone(_0xfbb107){this['id']=_0xfbb107['id']||0x0;this[_0xe4c0('0x0')]=_0xfbb107[_0xe4c0('0x0')]||'';this[_0xe4c0('0x1')]=_0xfbb107[_0xe4c0('0x1')]||'';this[_0xe4c0('0x2')]=_0xe4c0('0x3');this[_0xe4c0('0x4')]=0x0;this[_0xe4c0('0x5')]='unknown';this[_0xe4c0('0x6')]='';}module['exports']=Telephone;
\ No newline at end of file
+var _0xed4b=['stateTime','status','exports','name','accountcode','state','unknown'];(function(_0x239b5e,_0x208a3f){var _0x577f3d=function(_0x2880de){while(--_0x2880de){_0x239b5e['push'](_0x239b5e['shift']());}};_0x577f3d(++_0x208a3f);}(_0xed4b,0x96));var _0xbed4=function(_0x452d3e,_0x355f51){_0x452d3e=_0x452d3e-0x0;var _0x1e31a6=_0xed4b[_0x452d3e];return _0x1e31a6;};'use strict';function Telephone(_0x417078){this['id']=_0x417078['id']||0x0;this[_0xbed4('0x0')]=_0x417078[_0xbed4('0x0')]||'';this['accountcode']=_0x417078[_0xbed4('0x1')]||'';this[_0xbed4('0x2')]=_0xbed4('0x3');this[_0xbed4('0x4')]=0x0;this[_0xbed4('0x5')]=_0xbed4('0x3');this['address']='';}module[_0xbed4('0x6')]=Telephone;
\ No newline at end of file
index 23b425a..7463b90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x547851,_0x1940b8){var _0x1c3772=function(_0x3fc1e7){while(--_0x3fc1e7){_0x547851['push'](_0x547851['shift']());}};_0x1c3772(++_0x1940b8);}(_0xb10b,0x12a));var _0xbb10=function(_0x3bd2c8,_0x395b96){_0x3bd2c8=_0x3bd2c8-0x0;var _0x25374f=_0xb10b[_0x3bd2c8];return _0x25374f;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x2136c8,_0x432f26){var _0x385e5e=function(_0x422658){while(--_0x422658){_0x2136c8['push'](_0x2136c8['shift']());}};_0x385e5e(++_0x432f26);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index 67c6fed..dacd9f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['Actions','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x49c653,_0x390195){var _0x31e169=function(_0x3684ac){while(--_0x3684ac){_0x49c653['push'](_0x49c653['shift']());}};_0x31e169(++_0x390195);}(_0x5eb8,0xb0));var _0x85eb=function(_0x50148e,_0x4c99c7){_0x50148e=_0x50148e-0x0;var _0x446e9d=_0x5eb8[_0x50148e];return _0x446e9d;};'use strict';function Trigger(_0x5ea4df){this['id']=_0x5ea4df['id']||0x0;this['name']=_0x5ea4df[_0x85eb('0x0')]||'';this[_0x85eb('0x1')]=_0x5ea4df[_0x85eb('0x1')]||_0x85eb('0x2');this[_0x85eb('0x3')]=_0x5ea4df[_0x85eb('0x3')]||![];this[_0x85eb('0x4')]=_0x5ea4df[_0x85eb('0x4')]||[];this[_0x85eb('0x5')]=_0x5ea4df[_0x85eb('0x5')]||[];this[_0x85eb('0x6')]=_0x5ea4df[_0x85eb('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0x5eb8=['Actions','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x3ab928,_0x2b990b){var _0xf47692=function(_0x311b8e){while(--_0x311b8e){_0x3ab928['push'](_0x3ab928['shift']());}};_0xf47692(++_0x2b990b);}(_0x5eb8,0xb0));var _0x85eb=function(_0x3778d8,_0x5ce417){_0x3778d8=_0x3778d8-0x0;var _0x45a1b3=_0x5eb8[_0x3778d8];return _0x45a1b3;};'use strict';function Trigger(_0x5ea4df){this['id']=_0x5ea4df['id']||0x0;this['name']=_0x5ea4df[_0x85eb('0x0')]||'';this[_0x85eb('0x1')]=_0x5ea4df[_0x85eb('0x1')]||_0x85eb('0x2');this[_0x85eb('0x3')]=_0x5ea4df[_0x85eb('0x3')]||![];this[_0x85eb('0x4')]=_0x5ea4df[_0x85eb('0x4')]||[];this[_0x85eb('0x5')]=_0x5ea4df[_0x85eb('0x5')]||[];this[_0x85eb('0x6')]=_0x5ea4df[_0x85eb('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
index ab44bba..224f220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6059=['port','domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','state','unknown','stateTime','status','registry','indexOf','host'];(function(_0x3d3a9a,_0xb4e2aa){var _0x2fe9a5=function(_0x1870f1){while(--_0x1870f1){_0x3d3a9a['push'](_0x3d3a9a['shift']());}};_0x2fe9a5(++_0xb4e2aa);}(_0x6059,0x105));var _0x9605=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x6059[_0x341e0f];return _0x59555a;};'use strict';function Trunk(_0x49392d){this['id']=_0x49392d['id']||0x0;this[_0x9605('0x0')]=_0x49392d[_0x9605('0x0')]||![];this['name']=_0x49392d[_0x9605('0x1')]||'';this[_0x9605('0x2')]=_0x9605('0x3');this[_0x9605('0x4')]=0x0;this[_0x9605('0x5')]=_0x9605('0x3');this[_0x9605('0x6')]=_0x49392d['registry']&&_0x49392d['registry'][_0x9605('0x7')](':')?_0x49392d['registry']['split'](':')[0x0]:'';this[_0x9605('0x8')]='';this[_0x9605('0x9')]='';this[_0x9605('0xa')]='';this[_0x9605('0xb')]='';this[_0x9605('0xc')]='';this[_0x9605('0xd')]=_0x9605('0x3');this[_0x9605('0xe')]='';this[_0x9605('0xf')]='';this['defaultuser']=_0x49392d[_0x9605('0x10')]||'';}module[_0x9605('0x11')]=Trunk;
\ No newline at end of file
+var _0x2251=['state','unknown','stateTime','registry','indexOf','split','host','port','domain','domainport','refresh','stateRegistry','registrationtime','defaultuser','exports','active','name'];(function(_0x710e6f,_0x50f8a2){var _0x3a500a=function(_0x271ba3){while(--_0x271ba3){_0x710e6f['push'](_0x710e6f['shift']());}};_0x3a500a(++_0x50f8a2);}(_0x2251,0x174));var _0x1225=function(_0x26c448,_0x3273e3){_0x26c448=_0x26c448-0x0;var _0x2d14d2=_0x2251[_0x26c448];return _0x2d14d2;};'use strict';function Trunk(_0x44b9b2){this['id']=_0x44b9b2['id']||0x0;this[_0x1225('0x0')]=_0x44b9b2[_0x1225('0x0')]||![];this[_0x1225('0x1')]=_0x44b9b2[_0x1225('0x1')]||'';this[_0x1225('0x2')]=_0x1225('0x3');this[_0x1225('0x4')]=0x0;this['status']=_0x1225('0x3');this[_0x1225('0x5')]=_0x44b9b2['registry']&&_0x44b9b2['registry'][_0x1225('0x6')](':')?_0x44b9b2[_0x1225('0x5')][_0x1225('0x7')](':')[0x0]:'';this[_0x1225('0x8')]='';this[_0x1225('0x9')]='';this[_0x1225('0xa')]='';this[_0x1225('0xb')]='';this[_0x1225('0xc')]='';this[_0x1225('0xd')]=_0x1225('0x3');this[_0x1225('0xe')]='';this['address']='';this[_0x1225('0xf')]=_0x44b9b2['defaultuser']||'';}module[_0x1225('0x10')]=Trunk;
\ No newline at end of file
index 379787e..6472efb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb54=['recordingFormat','exports','exten'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xcb54,0x17c));var _0x4cb5=function(_0x581b3d,_0x2abaed){_0x581b3d=_0x581b3d-0x0;var _0x109224=_0xcb54[_0x581b3d];return _0x109224;};'use strict';function voiceExtension(_0x22a737){this['id']=_0x22a737['id']||0x0;this['exten']=_0x22a737[_0x4cb5('0x0')]||'';this[_0x4cb5('0x1')]=_0x22a737[_0x4cb5('0x1')]||'none';this['mandatoryDisposition']=_0x22a737['mandatoryDisposition']||![];}module[_0x4cb5('0x2')]=voiceExtension;
\ No newline at end of file
+var _0xfb6f=['exten','recordingFormat','none','mandatoryDisposition','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfb6f,0x12c));var _0xffb6=function(_0x4da606,_0x514abe){_0x4da606=_0x4da606-0x0;var _0x239045=_0xfb6f[_0x4da606];return _0x239045;};'use strict';function voiceExtension(_0xfa9886){this['id']=_0xfa9886['id']||0x0;this[_0xffb6('0x0')]=_0xfa9886['exten']||'';this[_0xffb6('0x1')]=_0xfa9886[_0xffb6('0x1')]||_0xffb6('0x2');this[_0xffb6('0x3')]=_0xfa9886['mandatoryDisposition']||![];}module[_0xffb6('0x4')]=voiceExtension;
\ No newline at end of file
index 9db8305..9216629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3527=['dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','inuse','busy','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','sumDuration','sumHoldTime','unmanaged','loggedIn','available','acw','autopause','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue'];(function(_0xfeffda,_0x1e34fe){var _0x21d6b9=function(_0x36a53e){while(--_0x36a53e){_0xfeffda['push'](_0xfeffda['shift']());}};_0x21d6b9(++_0x1e34fe);}(_0x3527,0x171));var _0x7352=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x3527[_0x4fde08];return _0x12e725;};'use strict';var statusDesc=[_0x7352('0x0'),'not_inuse',_0x7352('0x1'),_0x7352('0x2'),'invalid',_0x7352('0x3'),_0x7352('0x4'),_0x7352('0x5'),_0x7352('0x6')];var monitorFormat={'wav':_0x7352('0x7'),'wav49':_0x7352('0x8'),'gsm':_0x7352('0x9')};var strategy={'rrmemory':_0x7352('0xa'),'roundrobin':_0x7352('0xb')};function VoiceQueue(_0x27c860){this['id']=_0x27c860['id']||0x0;this[_0x7352('0xc')]=_0x27c860[_0x7352('0xc')]||'';this[_0x7352('0xd')]=_0x27c860['monitor_format']||'';this[_0x7352('0xe')]=_0x27c860[_0x7352('0xe')]||'inbound';this[_0x7352('0xf')]=0x0;this[_0x7352('0x10')]=0x0;this[_0x7352('0x11')]=0x0;this['answered']=0x0;this[_0x7352('0x12')]=0x0;this[_0x7352('0x13')]=0x0;this['sumBillable']=0x0;this[_0x7352('0x14')]=0x0;this['abandoned']=0x0;this[_0x7352('0x15')]=0x0;this[_0x7352('0x16')]=0x0;this[_0x7352('0x17')]=_0x27c860[_0x7352('0x17')]||![];this['acwTimeout']=_0x27c860['acwTimeout']||0xa;this[_0x7352('0x18')]=_0x27c860[_0x7352('0x18')]||'no';this['sendMessageOneNotActive']=!![];this[_0x7352('0x19')]='';this[_0x7352('0x1a')]=0x0;this[_0x7352('0x1b')]=0x0;this[_0x7352('0x1c')]=_0x27c860['dialTimezone']||null;this[_0x7352('0x1d')]=_0x27c860[_0x7352('0x1d')]?_0x27c860[_0x7352('0x1d')]:null;this[_0x7352('0x1e')]=_0x27c860[_0x7352('0x1e')];this['dialMethod']=_0x27c860['dialMethod']||_0x7352('0x1f');this['dialLimitChannel']=_0x27c860[_0x7352('0x20')]||0x0;this[_0x7352('0x21')]=_0x27c860[_0x7352('0x21')]||0x0;this[_0x7352('0x22')]=_0x27c860[_0x7352('0x22')]||0x1;this[_0x7352('0x23')]=_0x27c860[_0x7352('0x23')]||_0x7352('0x24');this['dialPredictiveOptimizationPercentage']=_0x27c860[_0x7352('0x25')]||0.03;this['dialPredictiveInterval']=_0x27c860['dialPredictiveInterval']||0x258;this[_0x7352('0x26')]=_0x27c860['dialOriginateCallerIdName']||_0x7352('0x27');this[_0x7352('0x28')]=_0x27c860[_0x7352('0x28')]||_0x7352('0x27');this['dialOriginateTimeout']=_0x27c860[_0x7352('0x29')]||0x1e;this['dialQueueOptions']=_0x27c860[_0x7352('0x2a')]||_0x7352('0x2b');this[_0x7352('0x2c')]=_0x27c860[_0x7352('0x2c')]||0x3;this[_0x7352('0x2d')]=_0x27c860[_0x7352('0x2d')]||undefined;this[_0x7352('0x2e')]=_0x27c860[_0x7352('0x2e')]||0x3;this[_0x7352('0x2f')]=_0x27c860[_0x7352('0x2f')]||0x96;this[_0x7352('0x30')]=_0x27c860[_0x7352('0x30')]||0x3;this[_0x7352('0x31')]=_0x27c860[_0x7352('0x31')]||0x96;this[_0x7352('0x32')]=_0x27c860[_0x7352('0x32')]||0x3;this['dialNoAnswerRetryFrequency']=_0x27c860['dialNoAnswerRetryFrequency']||0x96;this['dialNoSuchNumberMaxRetry']=_0x27c860[_0x7352('0x33')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x27c860[_0x7352('0x34')]||0x96;this[_0x7352('0x35')]=_0x27c860[_0x7352('0x35')]||0x3;this[_0x7352('0x36')]=_0x27c860[_0x7352('0x36')]||0x96;this[_0x7352('0x37')]=_0x27c860['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x27c860[_0x7352('0x38')]||0x96;this[_0x7352('0x39')]=_0x27c860[_0x7352('0x39')]||0x3;this[_0x7352('0x3a')]=_0x27c860[_0x7352('0x3a')]||0x96;this[_0x7352('0x3b')]=_0x27c860[_0x7352('0x3b')]||0x3;this['dialAgentRejectRetryFrequency']=_0x27c860[_0x7352('0x3c')]||0x96;this[_0x7352('0x3d')]=_0x27c860[_0x7352('0x3d')]||0x4;this['Trunk']=_0x27c860['Trunk']?_0x27c860[_0x7352('0x3e')]:undefined;this['TrunkBackup']=_0x27c860[_0x7352('0x3f')]?_0x27c860[_0x7352('0x3f')]:undefined;this['dialPrefix']=_0x27c860[_0x7352('0x40')]||undefined;this[_0x7352('0x41')]=_0x27c860[_0x7352('0x41')]?_0x27c860[_0x7352('0x41')]:undefined;this[_0x7352('0x42')]=_0x27c860['dialOrderByScheduledAt']||_0x7352('0x43');this[_0x7352('0x44')]=_0x27c860[_0x7352('0x44')]||undefined;this[_0x7352('0x45')]=_0x27c860[_0x7352('0x45')]||undefined;this['strategy']=strategy[_0x27c860[_0x7352('0x46')]]||'rrmemory';this['queueStatusComplete']=!![];this[_0x7352('0x47')]=_0x27c860[_0x7352('0x47')]||![];this[_0x7352('0x48')]=_0x27c860[_0x7352('0x48')];this[_0x7352('0x49')]=_0x27c860[_0x7352('0x49')];this[_0x7352('0x4a')]=_0x27c860['dialAMDAfterGreetingSilence'];this[_0x7352('0x4b')]=_0x27c860[_0x7352('0x4b')];this[_0x7352('0x4c')]=_0x27c860[_0x7352('0x4c')];this[_0x7352('0x4d')]=_0x27c860[_0x7352('0x4d')];this[_0x7352('0x4e')]=_0x27c860[_0x7352('0x4e')];this[_0x7352('0x4f')]=_0x27c860[_0x7352('0x4f')];this[_0x7352('0x50')]=_0x27c860[_0x7352('0x50')];this[_0x7352('0x51')]=0x0;this[_0x7352('0x52')]=0x0;this['timeout']=_0x27c860[_0x7352('0x53')];this[_0x7352('0x54')]=0x0;this[_0x7352('0x55')]=0x0;this[_0x7352('0x56')]=0x0;this[_0x7352('0x57')]=0x0;this[_0x7352('0x58')]=0x0;this[_0x7352('0x59')]=0x0;this[_0x7352('0x5a')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0x7352('0x5b')]=0x0;this[_0x7352('0x5c')]=0x0;this[_0x7352('0x5d')]=0x0;this[_0x7352('0x5e')]=0x0;this[_0x7352('0x5f')]=0x0;this['outboundAbandonedDay']=0x0;this[_0x7352('0x60')]=undefined;this[_0x7352('0x61')]=undefined;this[_0x7352('0x62')]=undefined;this[_0x7352('0x63')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x7352('0x64')]=0x0;this[_0x7352('0x65')]=0x0;this[_0x7352('0x66')]=0x0;this[_0x7352('0x67')]=0x0;this[_0x7352('0x68')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0x7352('0x69')]=0x0;this[_0x7352('0x6a')]=_0x27c860['dialPredictiveIntervalMaxThreshold']||0x14;this[_0x7352('0x6b')]=_0x27c860['dialPredictiveIntervalMaxThreshold']||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x7352('0x6c')]=0x1;this[_0x7352('0x6d')]=0x0;this[_0x7352('0x6e')]=0x0;this[_0x7352('0x6f')]=0x0;this[_0x7352('0x70')]=0x0;this[_0x7352('0x71')]=_0x27c860[_0x7352('0x71')]||0x1e;this[_0x7352('0x72')]=_0x27c860['dialRecallInQueue']||![];this[_0x7352('0x73')]=_0x27c860[_0x7352('0x73')]||undefined;this['dialAgiAfterHangupClient']=_0x27c860[_0x7352('0x74')]||![];this[_0x7352('0x75')]=_0x27c860[_0x7352('0x75')]||![];this[_0x7352('0xd')]=monitorFormat[_0x27c860['monitor_format']]?monitorFormat[_0x27c860[_0x7352('0xd')]]:undefined;this[_0x7352('0x76')]=_0x27c860[_0x7352('0x76')]||![];this['mandatoryDispositionPause']=_0x27c860[_0x7352('0x77')]?_0x27c860[_0x7352('0x77')]:undefined;}module[_0x7352('0x78')]=VoiceQueue;
\ No newline at end of file
+var _0x3bed=['dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','inuse','busy','unavailable','ringing','ringinuse','onhold','wav49','gsm','rrmemory','roundrobin','name','monitor_format','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','acw','acwTimeout','autopause','message','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting'];(function(_0x69aa78,_0x4a9274){var _0x57988a=function(_0x24fc2f){while(--_0x24fc2f){_0x69aa78['push'](_0x69aa78['shift']());}};_0x57988a(++_0x4a9274);}(_0x3bed,0x11e));var _0xd3be=function(_0x1f79f0,_0x202fb7){_0x1f79f0=_0x1f79f0-0x0;var _0x402e80=_0x3bed[_0x1f79f0];return _0x402e80;};'use strict';var statusDesc=[_0xd3be('0x0'),_0xd3be('0x1'),_0xd3be('0x2'),_0xd3be('0x3'),'invalid',_0xd3be('0x4'),_0xd3be('0x5'),_0xd3be('0x6'),_0xd3be('0x7')];var monitorFormat={'wav':'wav','wav49':_0xd3be('0x8'),'gsm':_0xd3be('0x9')};var strategy={'rrmemory':_0xd3be('0xa'),'roundrobin':_0xd3be('0xb')};function VoiceQueue(_0x3a31a4){this['id']=_0x3a31a4['id']||0x0;this[_0xd3be('0xc')]=_0x3a31a4[_0xd3be('0xc')]||'';this[_0xd3be('0xd')]=_0x3a31a4[_0xd3be('0xd')]||'';this['type']=_0x3a31a4['type']||_0xd3be('0xe');this[_0xd3be('0xf')]=0x0;this[_0xd3be('0x10')]=0x0;this[_0xd3be('0x11')]=0x0;this[_0xd3be('0x12')]=0x0;this[_0xd3be('0x13')]=0x0;this[_0xd3be('0x14')]=0x0;this[_0xd3be('0x15')]=0x0;this[_0xd3be('0x16')]=0x0;this['abandoned']=0x0;this['loggedIn']=0x0;this['available']=0x0;this[_0xd3be('0x17')]=_0x3a31a4[_0xd3be('0x17')]||![];this[_0xd3be('0x18')]=_0x3a31a4['acwTimeout']||0xa;this[_0xd3be('0x19')]=_0x3a31a4[_0xd3be('0x19')]||'no';this['sendMessageOneNotActive']=!![];this[_0xd3be('0x1a')]='';this[_0xd3be('0x1b')]=0x0;this['temp']=0x0;this[_0xd3be('0x1c')]=_0x3a31a4[_0xd3be('0x1c')]||null;this['dialGlobalInterval']=_0x3a31a4[_0xd3be('0x1d')]?_0x3a31a4['dialGlobalInterval']:null;this[_0xd3be('0x1e')]=_0x3a31a4[_0xd3be('0x1e')];this[_0xd3be('0x1f')]=_0x3a31a4[_0xd3be('0x1f')]||'progressive';this[_0xd3be('0x20')]=_0x3a31a4['dialLimitChannel']||0x0;this['dialLimitQueue']=_0x3a31a4['dialLimitQueue']||0x0;this[_0xd3be('0x21')]=_0x3a31a4[_0xd3be('0x21')]||0x1;this[_0xd3be('0x22')]=_0x3a31a4[_0xd3be('0x22')]||_0xd3be('0x23');this[_0xd3be('0x24')]=_0x3a31a4['dialPredictiveOptimizationPercentage']||0.03;this[_0xd3be('0x25')]=_0x3a31a4[_0xd3be('0x25')]||0x258;this[_0xd3be('0x26')]=_0x3a31a4[_0xd3be('0x26')]||_0xd3be('0x27');this[_0xd3be('0x28')]=_0x3a31a4[_0xd3be('0x28')]||_0xd3be('0x27');this[_0xd3be('0x29')]=_0x3a31a4[_0xd3be('0x29')]||0x1e;this[_0xd3be('0x2a')]=_0x3a31a4[_0xd3be('0x2a')]||_0xd3be('0x2b');this[_0xd3be('0x2c')]=_0x3a31a4[_0xd3be('0x2c')]||0x3;this[_0xd3be('0x2d')]=_0x3a31a4[_0xd3be('0x2d')]||undefined;this[_0xd3be('0x2e')]=_0x3a31a4['dialCongestionMaxRetry']||0x3;this[_0xd3be('0x2f')]=_0x3a31a4[_0xd3be('0x2f')]||0x96;this['dialBusyMaxRetry']=_0x3a31a4[_0xd3be('0x30')]||0x3;this[_0xd3be('0x31')]=_0x3a31a4['dialBusyRetryFrequency']||0x96;this[_0xd3be('0x32')]=_0x3a31a4['dialNoAnswerMaxRetry']||0x3;this['dialNoAnswerRetryFrequency']=_0x3a31a4['dialNoAnswerRetryFrequency']||0x96;this[_0xd3be('0x33')]=_0x3a31a4[_0xd3be('0x33')]||0x3;this[_0xd3be('0x34')]=_0x3a31a4['dialNoSuchNumberRetryFrequency']||0x96;this[_0xd3be('0x35')]=_0x3a31a4[_0xd3be('0x35')]||0x3;this[_0xd3be('0x36')]=_0x3a31a4[_0xd3be('0x36')]||0x96;this[_0xd3be('0x37')]=_0x3a31a4['dialAbandonedMaxRetry']||0x3;this[_0xd3be('0x38')]=_0x3a31a4[_0xd3be('0x38')]||0x96;this[_0xd3be('0x39')]=_0x3a31a4[_0xd3be('0x39')]||0x3;this[_0xd3be('0x3a')]=_0x3a31a4[_0xd3be('0x3a')]||0x96;this[_0xd3be('0x3b')]=_0x3a31a4['dialAgentRejectMaxRetry']||0x3;this['dialAgentRejectRetryFrequency']=_0x3a31a4[_0xd3be('0x3c')]||0x96;this[_0xd3be('0x3d')]=_0x3a31a4['dialGlobalMaxRetry']||0x4;this['Trunk']=_0x3a31a4[_0xd3be('0x3e')]?_0x3a31a4['Trunk']:undefined;this[_0xd3be('0x3f')]=_0x3a31a4[_0xd3be('0x3f')]?_0x3a31a4[_0xd3be('0x3f')]:undefined;this['dialPrefix']=_0x3a31a4['dialPrefix']||undefined;this['Interval']=_0x3a31a4[_0xd3be('0x40')]?_0x3a31a4[_0xd3be('0x40')]:undefined;this[_0xd3be('0x41')]=_0x3a31a4[_0xd3be('0x41')]||_0xd3be('0x42');this['dialRandomLastDigitCallerIdNumber']=_0x3a31a4[_0xd3be('0x43')]||undefined;this[_0xd3be('0x44')]=_0x3a31a4['dialCutDigit']||undefined;this[_0xd3be('0x45')]=strategy[_0x3a31a4[_0xd3be('0x45')]]||'rrmemory';this[_0xd3be('0x46')]=!![];this[_0xd3be('0x47')]=_0x3a31a4[_0xd3be('0x47')]||![];this[_0xd3be('0x48')]=_0x3a31a4[_0xd3be('0x48')];this[_0xd3be('0x49')]=_0x3a31a4['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x3a31a4[_0xd3be('0x4a')];this['dialAMDTotalAnalysisTime']=_0x3a31a4[_0xd3be('0x4b')];this[_0xd3be('0x4c')]=_0x3a31a4[_0xd3be('0x4c')];this[_0xd3be('0x4d')]=_0x3a31a4['dialAMDBetweenWordsSilence'];this[_0xd3be('0x4e')]=_0x3a31a4[_0xd3be('0x4e')];this[_0xd3be('0x4f')]=_0x3a31a4[_0xd3be('0x4f')];this[_0xd3be('0x50')]=_0x3a31a4['dialAMDMaximumWordLength'];this[_0xd3be('0x51')]=0x0;this['pTalking']=0x0;this[_0xd3be('0x52')]=_0x3a31a4[_0xd3be('0x52')];this[_0xd3be('0x53')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xd3be('0x54')]=0x0;this[_0xd3be('0x55')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xd3be('0x56')]=0x0;this[_0xd3be('0x57')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xd3be('0x58')]=0x0;this[_0xd3be('0x59')]=0x0;this[_0xd3be('0x5a')]=0x0;this[_0xd3be('0x5b')]=0x0;this[_0xd3be('0x5c')]=0x0;this['outboundAbandonedDay']=0x0;this[_0xd3be('0x5d')]=undefined;this[_0xd3be('0x5e')]=undefined;this[_0xd3be('0x5f')]=undefined;this[_0xd3be('0x60')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0xd3be('0x61')]=0x0;this[_0xd3be('0x62')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0xd3be('0x63')]=0x0;this[_0xd3be('0x64')]=0x0;this[_0xd3be('0x65')]=0x0;this[_0xd3be('0x66')]=0x0;this[_0xd3be('0x67')]=_0x3a31a4[_0xd3be('0x68')]||0x14;this[_0xd3be('0x69')]=_0x3a31a4['dialPredictiveIntervalMaxThreshold']||0xa;this[_0xd3be('0x6a')]=0x0;this[_0xd3be('0x6b')]=0x0;this[_0xd3be('0x6c')]=0x1;this[_0xd3be('0x6d')]=0x0;this[_0xd3be('0x6e')]=0x0;this[_0xd3be('0x6f')]=0x0;this[_0xd3be('0x70')]=0x0;this[_0xd3be('0x71')]=_0x3a31a4['dialRecallMeTimeout']||0x1e;this[_0xd3be('0x72')]=_0x3a31a4[_0xd3be('0x72')]||![];this[_0xd3be('0x73')]=_0x3a31a4[_0xd3be('0x73')]||undefined;this[_0xd3be('0x74')]=_0x3a31a4[_0xd3be('0x74')]||![];this[_0xd3be('0x75')]=_0x3a31a4[_0xd3be('0x75')]||![];this[_0xd3be('0xd')]=monitorFormat[_0x3a31a4[_0xd3be('0xd')]]?monitorFormat[_0x3a31a4[_0xd3be('0xd')]]:undefined;this[_0xd3be('0x76')]=_0x3a31a4[_0xd3be('0x76')]||![];this['mandatoryDispositionPause']=_0x3a31a4[_0xd3be('0x77')]?_0x3a31a4[_0xd3be('0x77')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
index 6a45168..5f7d842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f27=['username','accessKey','remoteUri','serverUrl','Configurations','exports'];(function(_0x59c9db,_0x29eac1){var _0x8fd710=function(_0x561829){while(--_0x561829){_0x59c9db['push'](_0x59c9db['shift']());}};_0x8fd710(++_0x29eac1);}(_0x5f27,0xd8));var _0x75f2=function(_0x4688c2,_0x27a4fd){_0x4688c2=_0x4688c2-0x0;var _0x41fc2a=_0x5f27[_0x4688c2];return _0x41fc2a;};'use strict';function VtigerAccount(_0x9faad5){this['id']=_0x9faad5['id']||0x0;this['name']=_0x9faad5['name']||'';this['username']=_0x9faad5[_0x75f2('0x0')]||'';this[_0x75f2('0x1')]=_0x9faad5['accessKey']||'';this[_0x75f2('0x2')]=_0x9faad5[_0x75f2('0x2')]||'';this[_0x75f2('0x3')]=_0x9faad5[_0x75f2('0x3')]||'';this[_0x75f2('0x4')]=_0x9faad5[_0x75f2('0x4')]||{};}module[_0x75f2('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0x5b43=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0x5b43,0x123));var _0x35b4=function(_0x52f2b5,_0x58ebea){_0x52f2b5=_0x52f2b5-0x0;var _0x3dd4ad=_0x5b43[_0x52f2b5];return _0x3dd4ad;};'use strict';function VtigerAccount(_0x58e18d){this['id']=_0x58e18d['id']||0x0;this[_0x35b4('0x0')]=_0x58e18d[_0x35b4('0x0')]||'';this[_0x35b4('0x1')]=_0x58e18d[_0x35b4('0x1')]||'';this[_0x35b4('0x2')]=_0x58e18d['accessKey']||'';this[_0x35b4('0x3')]=_0x58e18d['remoteUri']||'';this[_0x35b4('0x4')]=_0x58e18d[_0x35b4('0x4')]||'';this[_0x35b4('0x5')]=_0x58e18d[_0x35b4('0x5')]||{};}module[_0x35b4('0x6')]=VtigerAccount;
\ No newline at end of file
index fe050fd..2708432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567d=['Configurations','exports','name','username','password','token','authType','type','serverUrl'];(function(_0x137b1c,_0x5939b3){var _0x1f6d21=function(_0x555a41){while(--_0x555a41){_0x137b1c['push'](_0x137b1c['shift']());}};_0x1f6d21(++_0x5939b3);}(_0x567d,0x1e8));var _0xd567=function(_0x5d950f,_0x3df715){_0x5d950f=_0x5d950f-0x0;var _0x532643=_0x567d[_0x5d950f];return _0x532643;};'use strict';function ZendeskAccount(_0x3958b4){this['id']=_0x3958b4['id']||0x0;this['name']=_0x3958b4[_0xd567('0x0')]||'';this[_0xd567('0x1')]=_0x3958b4['username']||'';this[_0xd567('0x2')]=_0x3958b4[_0xd567('0x2')]||'';this[_0xd567('0x3')]=_0x3958b4['token']||'';this['remoteUri']=_0x3958b4['remoteUri']||'';this[_0xd567('0x4')]=_0x3958b4[_0xd567('0x4')]||'';this[_0xd567('0x5')]=_0x3958b4[_0xd567('0x5')]||'integrationTab';this[_0xd567('0x6')]=_0x3958b4[_0xd567('0x6')]||'';this[_0xd567('0x7')]=_0x3958b4['Configurations']||{};}module[_0xd567('0x8')]=ZendeskAccount;
\ No newline at end of file
+var _0x6193=['integrationTab','serverUrl','Configurations','exports','username','password','remoteUri','authType','type'];(function(_0x27f88b,_0x526bad){var _0x2114f4=function(_0x341508){while(--_0x341508){_0x27f88b['push'](_0x27f88b['shift']());}};_0x2114f4(++_0x526bad);}(_0x6193,0x109));var _0x3619=function(_0x4ce514,_0x2ca53e){_0x4ce514=_0x4ce514-0x0;var _0x10bb8e=_0x6193[_0x4ce514];return _0x10bb8e;};'use strict';function ZendeskAccount(_0x74caa6){this['id']=_0x74caa6['id']||0x0;this['name']=_0x74caa6['name']||'';this[_0x3619('0x0')]=_0x74caa6['username']||'';this[_0x3619('0x1')]=_0x74caa6[_0x3619('0x1')]||'';this['token']=_0x74caa6['token']||'';this[_0x3619('0x2')]=_0x74caa6[_0x3619('0x2')]||'';this['authType']=_0x74caa6[_0x3619('0x3')]||'';this['type']=_0x74caa6[_0x3619('0x4')]||_0x3619('0x5');this['serverUrl']=_0x74caa6[_0x3619('0x6')]||'';this[_0x3619('0x7')]=_0x74caa6[_0x3619('0x7')]||{};}module[_0x3619('0x8')]=ZendeskAccount;
\ No newline at end of file
index 5515b94..915170e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9445=['serverUrl','code','refreshToken','Configurations','name','description','host','zone','clientId','clientSecret'];(function(_0x75f289,_0x28b524){var _0x3f7c4c=function(_0x3c3cf7){while(--_0x3c3cf7){_0x75f289['push'](_0x75f289['shift']());}};_0x3f7c4c(++_0x28b524);}(_0x9445,0xfe));var _0x5944=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x9445[_0x21a9d9];return _0x46adce;};'use strict';function ZohoAccount(_0x1761c7){this['id']=_0x1761c7['id']||0x0;this['name']=_0x1761c7[_0x5944('0x0')]||'';this[_0x5944('0x1')]=_0x1761c7['description']||'';this[_0x5944('0x2')]=_0x1761c7['host']||'';this['zone']=_0x1761c7[_0x5944('0x3')]||'';this[_0x5944('0x4')]=_0x1761c7[_0x5944('0x4')]||'';this[_0x5944('0x5')]=_0x1761c7[_0x5944('0x5')]||'';this[_0x5944('0x6')]=_0x1761c7[_0x5944('0x6')]||'';this[_0x5944('0x7')]=_0x1761c7['code']||'';this[_0x5944('0x8')]=_0x1761c7['refreshToken']||'';this['Configurations']=_0x1761c7[_0x5944('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0x02a6=['code','refreshToken','Configurations','exports','description','host','zone','clientId','serverUrl'];(function(_0x2ce715,_0x22e80c){var _0x41c7bb=function(_0x3b8b6c){while(--_0x3b8b6c){_0x2ce715['push'](_0x2ce715['shift']());}};_0x41c7bb(++_0x22e80c);}(_0x02a6,0xa6));var _0x602a=function(_0x1416bc,_0x3af2d9){_0x1416bc=_0x1416bc-0x0;var _0x1fcb36=_0x02a6[_0x1416bc];return _0x1fcb36;};'use strict';function ZohoAccount(_0x365cb8){this['id']=_0x365cb8['id']||0x0;this['name']=_0x365cb8['name']||'';this[_0x602a('0x0')]=_0x365cb8[_0x602a('0x0')]||'';this[_0x602a('0x1')]=_0x365cb8['host']||'';this[_0x602a('0x2')]=_0x365cb8[_0x602a('0x2')]||'';this[_0x602a('0x3')]=_0x365cb8['clientId']||'';this['clientSecret']=_0x365cb8['clientSecret']||'';this[_0x602a('0x4')]=_0x365cb8['serverUrl']||'';this[_0x602a('0x5')]=_0x365cb8[_0x602a('0x5')]||'';this[_0x602a('0x6')]=_0x365cb8[_0x602a('0x6')]||'';this[_0x602a('0x7')]=_0x365cb8[_0x602a('0x7')]||{};}module[_0x602a('0x8')]=ZohoAccount;
\ No newline at end of file
index c57280c..438048e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46c=['getCaller','\x22%s\x22\x20<%s>','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','type','campaigntype','Agent','name','channelAgent','membername','format','SIP/%s','calleridname','phone','Contact','firstName','lastName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','originatecalleridnum','prototype'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xa46c,0x1e7));var _0xca46=function(_0x21b1b5,_0x589b99){_0x21b1b5=_0x21b1b5-0x0;var _0x5bb0a4=_0xa46c[_0x21b1b5];return _0x5bb0a4;};'use strict';var util=require(_0xca46('0x0'));var _=require(_0xca46('0x1'));var moment=require(_0xca46('0x2'));function checkNameSurname(_0x3c4c52,_0x397790,_0x5677cc){var _0x1d7a7d='';if(!_[_0xca46('0x3')](_0x397790)&&'string'===typeof _0x397790){_0x1d7a7d+=_0x397790;}if(!_[_0xca46('0x3')](_0x5677cc)&&_0xca46('0x4')===typeof _0x5677cc){_0x1d7a7d+='\x20'+_0x5677cc;}if(_0x1d7a7d!==''){return _0x1d7a7d;}return _0x3c4c52;}function Action(_0x20ef39,_0x486402,_0x437e8c,_0x1776a2,_0x572350){this[_0xca46('0x5')]=_0x437e8c||undefined;this[_0xca46('0x6')]=_0x20ef39['id'];this[_0xca46('0x7')]=_0x486402['name'];this[_0xca46('0x8')]=_0x486402[_0xca46('0x8')];this[_0xca46('0x9')]=_0xca46('0x7');this['dialAnswer']=![];this['membername']=_[_0xca46('0x3')](_0x20ef39['Agent'])?undefined:_0x20ef39[_0xca46('0xa')][_0xca46('0xb')];this[_0xca46('0xc')]=this[_0xca46('0xd')]?util[_0xca46('0xe')](_0xca46('0xf'),this[_0xca46('0xd')]):_0x1776a2||undefined;this[_0xca46('0x10')]=checkNameSurname(_0x20ef39['Contact'][_0xca46('0x11')],_0x20ef39[_0xca46('0x12')][_0xca46('0x13')],_0x20ef39[_0xca46('0x12')][_0xca46('0x14')]);this[_0xca46('0x15')]=_0x20ef39[_0xca46('0x15')]||![];this['calleridnum']=_0x20ef39[_0xca46('0x12')][_0xca46('0x11')];this[_0xca46('0x16')]=_0x20ef39[_0xca46('0x16')];this[_0xca46('0x17')]=_0x20ef39[_0xca46('0x17')]||0x0;this[_0xca46('0x18')]=_0x20ef39[_0xca46('0x18')]||0x0;this[_0xca46('0x19')]=_0x20ef39[_0xca46('0x19')]||0x0;this[_0xca46('0x1a')]=(_0x20ef39['countbusyretry']||0x0)+(_0x20ef39[_0xca46('0x18')]||0x0)+(_0x20ef39[_0xca46('0x19')]||0x0)+(_0x20ef39[_0xca46('0x1b')]||0x0)+(_0x20ef39[_0xca46('0x1c')]||0x0)+(_0x20ef39[_0xca46('0x1d')]||0x0)+(_0x20ef39[_0xca46('0x1e')]||0x0)+(_0x20ef39[_0xca46('0x1f')]||0x0);this['countnosuchnumberretry']=_0x20ef39['countnosuchnumberretry']||0x0;this[_0xca46('0x1c')]=_0x20ef39[_0xca46('0x1c')]||0x0;this[_0xca46('0x1d')]=_0x20ef39['countabandonedretry']||0x0;this[_0xca46('0x1e')]=_0x20ef39[_0xca46('0x1e')]||0x0;this[_0xca46('0x1f')]=_0x20ef39['countagentrejectretry']||0x0;this[_0xca46('0x20')]=_0x20ef39[_0xca46('0x20')];this[_0xca46('0x21')]=_0x20ef39['callbackuniqueid'];this[_0xca46('0x22')]=_0x20ef39[_0xca46('0x22')];this[_0xca46('0x23')]=_0x20ef39[_0xca46('0x23')];this[_0xca46('0x24')]=_0x20ef39[_0xca46('0x24')];this[_0xca46('0x25')]=_0x20ef39[_0xca46('0x25')];this['UserId']=_[_0xca46('0x3')](_0x20ef39['Agent'])?_0x20ef39['UserId']:_0x20ef39[_0xca46('0xa')]['id'];this[_0xca46('0x26')]=_0x20ef39['VoiceQueueId'];this[_0xca46('0x27')]='';this['originatecalleridname']='';}Action[_0xca46('0x28')][_0xca46('0x29')]=function(){return util[_0xca46('0xe')](_0xca46('0x2a'),this[_0xca46('0x10')],this['number']);};module[_0xca46('0x2b')]=Action;
\ No newline at end of file
+var _0x0076=['exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','name','type','dialAnswer','membername','format','SIP/%s','calleridname','phone','Contact','firstName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','Agent','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','number'];(function(_0x1da31a,_0x7b769c){var _0x4349fe=function(_0x21ab74){while(--_0x21ab74){_0x1da31a['push'](_0x1da31a['shift']());}};_0x4349fe(++_0x7b769c);}(_0x0076,0x82));var _0x6007=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x0076[_0x2e4e19];return _0x9ba20b;};'use strict';var util=require(_0x6007('0x0'));var _=require(_0x6007('0x1'));var moment=require(_0x6007('0x2'));function checkNameSurname(_0x304bde,_0x116bf8,_0x218289){var _0x57f312='';if(!_[_0x6007('0x3')](_0x116bf8)&&_0x6007('0x4')===typeof _0x116bf8){_0x57f312+=_0x116bf8;}if(!_['isNil'](_0x218289)&&'string'===typeof _0x218289){_0x57f312+='\x20'+_0x218289;}if(_0x57f312!==''){return _0x57f312;}return _0x304bde;}function Action(_0x58e5e6,_0x18016f,_0x176a18,_0x3fc178,_0x2f3ac7){this[_0x6007('0x5')]=_0x176a18||undefined;this[_0x6007('0x6')]=_0x58e5e6['id'];this[_0x6007('0x7')]=_0x18016f[_0x6007('0x8')];this[_0x6007('0x9')]=_0x18016f['type'];this['campaigntype']='queue';this[_0x6007('0xa')]=![];this['membername']=_[_0x6007('0x3')](_0x58e5e6['Agent'])?undefined:_0x58e5e6['Agent'][_0x6007('0x8')];this['channelAgent']=this[_0x6007('0xb')]?util[_0x6007('0xc')](_0x6007('0xd'),this['membername']):_0x3fc178||undefined;this[_0x6007('0xe')]=checkNameSurname(_0x58e5e6['Contact'][_0x6007('0xf')],_0x58e5e6[_0x6007('0x10')][_0x6007('0x11')],_0x58e5e6[_0x6007('0x10')]['lastName']);this['active']=_0x58e5e6[_0x6007('0x12')]||![];this['calleridnum']=_0x58e5e6[_0x6007('0x10')][_0x6007('0xf')];this[_0x6007('0x13')]=_0x58e5e6[_0x6007('0x13')];this[_0x6007('0x14')]=_0x58e5e6[_0x6007('0x14')]||0x0;this[_0x6007('0x15')]=_0x58e5e6[_0x6007('0x15')]||0x0;this[_0x6007('0x16')]=_0x58e5e6[_0x6007('0x16')]||0x0;this[_0x6007('0x17')]=(_0x58e5e6[_0x6007('0x14')]||0x0)+(_0x58e5e6[_0x6007('0x15')]||0x0)+(_0x58e5e6[_0x6007('0x16')]||0x0)+(_0x58e5e6[_0x6007('0x18')]||0x0)+(_0x58e5e6[_0x6007('0x19')]||0x0)+(_0x58e5e6[_0x6007('0x1a')]||0x0)+(_0x58e5e6[_0x6007('0x1b')]||0x0)+(_0x58e5e6['countagentrejectretry']||0x0);this[_0x6007('0x18')]=_0x58e5e6[_0x6007('0x18')]||0x0;this[_0x6007('0x19')]=_0x58e5e6[_0x6007('0x19')]||0x0;this[_0x6007('0x1a')]=_0x58e5e6[_0x6007('0x1a')]||0x0;this[_0x6007('0x1b')]=_0x58e5e6['countmachineretry']||0x0;this[_0x6007('0x1c')]=_0x58e5e6['countagentrejectretry']||0x0;this['callback']=_0x58e5e6['callback'];this[_0x6007('0x1d')]=_0x58e5e6[_0x6007('0x1d')];this[_0x6007('0x1e')]=_0x58e5e6[_0x6007('0x1e')];this['recallme']=_0x58e5e6[_0x6007('0x1f')];this[_0x6007('0x20')]=_0x58e5e6['ContactId'];this['ListId']=_0x58e5e6[_0x6007('0x21')];this[_0x6007('0x22')]=_[_0x6007('0x3')](_0x58e5e6[_0x6007('0x23')])?_0x58e5e6['UserId']:_0x58e5e6[_0x6007('0x23')]['id'];this[_0x6007('0x24')]=_0x58e5e6[_0x6007('0x24')];this[_0x6007('0x25')]='';this[_0x6007('0x26')]='';}Action[_0x6007('0x27')][_0x6007('0x28')]=function(){return util[_0x6007('0xc')]('\x22%s\x22\x20<%s>',this[_0x6007('0xe')],this[_0x6007('0x29')]);};module[_0x6007('0x2a')]=Action;
\ No newline at end of file
index 0d714f7..0dcc114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7736=['logAgent','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','Queue','lookAgent','execCall','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unlock','unlockContact','active','pick','execRun','getContactPreview','recallme','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','isEmpty','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','\x20Not\x20Active','SIP/%s/%s%s','substring','dialCutDigit','dialPrefix','trim','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','accountcode','OriginateError','[originateFailure][logOriginateFailure]','actionid','clone','responsetime','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','syncHangup','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','variables','keys','variable','addVariable','value','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','exports','lodash','uuid','moment','ioredis','../../../config/environment','../../../config/logger','../ami','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','campaignsPreview','voiceQueues','trunks','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','syncHangupRequest','dialend','syncDialEnd','syncNewExten','syncVarSet','attendedtransfer','blindtransfer','syncBlindTransfer','emit','type','name','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','message','originated','erlangCalls','erlangCallToSecond','startPredictive','Trunk','callerid','Interval','stringify','md5','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','loopCampaigns','syncCampaigns','prototype','hasOwnProperty','preview','clearZombieChannels','outbound','setMessage','clearZombieChannel','isNil','[clearZombieChannels][talking]','queue','originated:\x20','pTalking:\x20','actions','dialAnswer','contactId','ListId','Action','channel','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','size','recallMe','getContactRecallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','catch','disableContact','starttime','format','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','linkedid','ANSWER','[syncHangup][talking][increment]','uniqueid','\x20Queue','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','total','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','countbusyretry','Busy','custom:agentbusy','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','dialBusyRetryFrequency','unlockAgent','activeContact','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','Congestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','dialAbandonedRetryFrequency','outboundUnknownCallsDay','cause-txt','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','dialstatus','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','NoSuchNumber','[callProgressDetectingAgent][logNoSuch]','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]'];(function(_0x4e4c97,_0xb88ed7){var _0x1a0e05=function(_0x2ec99c){while(--_0x2ec99c){_0x4e4c97['push'](_0x4e4c97['shift']());}};_0x1a0e05(++_0xb88ed7);}(_0x7736,0x65));var _0x6773=function(_0xb47222,_0x1e3715){_0xb47222=_0xb47222-0x0;var _0x58382a=_0x7736[_0xb47222];return _0x58382a;};'use strict';var util=require('util');var _=require(_0x6773('0x0'));var BPromise=require('bluebird');var uuid=require(_0x6773('0x1'));var moment=require(_0x6773('0x2'));var md5=require('md5');var Redis=require(_0x6773('0x3'));var config=require(_0x6773('0x4'));var logger=require(_0x6773('0x5'))('preview');var loggerAction=require(_0x6773('0x5'))('actionPreview');var ami=require(_0x6773('0x6'));var rpcDb=require(_0x6773('0x7'));var Action=require(_0x6773('0x8'));var ut=require(_0x6773('0x9'));config[_0x6773('0xa')]=_[_0x6773('0xb')](config['redis'],{'host':_0x6773('0xc'),'port':0x18eb});var io=require(_0x6773('0xd'))(new Redis(config['redis']));var Sequence=function(){};Sequence['prototype'][_0x6773('0xe')]=function(_0x5d8518){this[_0x6773('0xf')]=this[_0x6773('0xf')]?this[_0x6773('0xf')][_0x6773('0x10')](_0x5d8518):_0x5d8518();};function Preview(_0x39258b){this['sequence']=new Sequence();this[_0x6773('0x11')]=_0x39258b[_0x6773('0x12')];this[_0x6773('0x13')]=_0x39258b['trunks'];this['actions']={};this[_0x6773('0x14')]=_0x39258b[_0x6773('0x14')];this[_0x6773('0x15')]=0x0;ami['on'](_0x6773('0x16'),this[_0x6773('0x17')][_0x6773('0x18')](this));ami['on']('hangup',this['syncHangup'][_0x6773('0x18')](this));ami['on']('hanguprequest',this[_0x6773('0x19')][_0x6773('0x18')](this));ami['on'](_0x6773('0x1a'),this[_0x6773('0x1b')][_0x6773('0x18')](this));ami['on']('newexten',this[_0x6773('0x1c')][_0x6773('0x18')](this));ami['on']('varset',this[_0x6773('0x1d')]['bind'](this));ami['on'](_0x6773('0x1e'),this['syncAttendedTransfer'][_0x6773('0x18')](this));ami['on'](_0x6773('0x1f'),this[_0x6773('0x20')][_0x6773('0x18')](this));this['loopCampaigns'](this[_0x6773('0x11')]);}function emit(_0x425737,_0x50f388,_0x21c358){io['to'](_0x425737)[_0x6773('0x21')](_0x50f388,_0x21c358);}function emitCampaignPreview(_0x207238){if(_0x207238[_0x6773('0x22')]==='outbound'){var _0x141772={'id':_0x207238['id'],'name':_0x207238[_0x6773('0x23')],'strategy':_0x207238['strategy'],'answered':_0x207238[_0x6773('0x24')],'available':_0x207238[_0x6773('0x25')],'loggedIn':_0x207238[_0x6773('0x26')],'pTalking':_0x207238[_0x6773('0x27')],'sumBillable':_0x207238[_0x6773('0x28')],'sumDuration':_0x207238['sumDuration'],'sumHoldTime':_0x207238[_0x6773('0x29')]||0x0,'talking':_0x207238[_0x6773('0x2a')],'total':_0x207238['total'],'type':_0x207238[_0x6773('0x22')],'unmanaged':_0x207238['unmanaged'],'abandoned':_0x207238['abandoned'],'waiting':_0x207238[_0x6773('0x2b')],'loggedInDb':_0x207238[_0x6773('0x2c')],'dialActive':_0x207238[_0x6773('0x2d')],'dialMethod':_0x207238[_0x6773('0x2e')],'dialOriginateCallerIdName':_0x207238[_0x6773('0x2f')],'dialOriginateCallerIdNumber':_0x207238[_0x6773('0x30')],'dialOriginateTimeout':_0x207238['dialOriginateTimeout'],'dialPrefix':_0x207238['dialPrefix'],'outboundAnswerAgiCallsDay':_0x207238[_0x6773('0x31')],'outboundAnswerCallsDay':_0x207238[_0x6773('0x32')],'outboundBlacklistCallsDay':_0x207238['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x207238[_0x6773('0x33')],'outboundCongestionCallsDay':_0x207238[_0x6773('0x34')],'outboundDropCallsDayACS':_0x207238[_0x6773('0x35')],'outboundDropCallsDayCallersExit':_0x207238[_0x6773('0x36')],'outboundDropCallsDayTimeout':_0x207238[_0x6773('0x37')],'outboundNoAnswerCallsDay':_0x207238[_0x6773('0x38')],'outboundNoSuchCallsDay':_0x207238[_0x6773('0x39')],'outboundOriginateFailureCallsDay':_0x207238[_0x6773('0x3a')],'outboundReCallsDay':_0x207238['outboundReCallsDay'],'outboundRejectCallsDay':_0x207238[_0x6773('0x3b')],'outboundUnknownCallsDay':_0x207238['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x207238['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x207238[_0x6773('0x3c')],'predictiveIntervalAvgHoldtime':_0x207238['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x207238['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x207238[_0x6773('0x3d')],'predictiveIntervalDroppedCallsTimeout':_0x207238[_0x6773('0x3e')],'predictiveIntervalErlangCalls':_0x207238[_0x6773('0x3f')],'predictiveIntervalErlangCallsDroppedCalls':_0x207238['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x207238['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x207238[_0x6773('0x40')],'predictiveIntervalPauses':_0x207238[_0x6773('0x41')],'predictiveIntervalAvailable':_0x207238['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x207238['predictiveIntervalTotalCalls'],'message':_0x207238[_0x6773('0x42')],'originated':_0x207238[_0x6773('0x43')],'erlangCalls':_0x207238[_0x6773('0x44')],'erlangCallToSecond':_0x207238[_0x6773('0x45')],'erlangAbandonmentRate':_0x207238['erlangAbandonmentRate'],'erlangBusyFactor':_0x207238['erlangBusyFactor'],'startPredictive':_0x207238[_0x6773('0x46')],'startProgressive':_0x207238['startProgressive']};if(_0x207238[_0x6773('0x47')]){_0x141772[_0x6773('0x47')]={'id':_0x207238['Trunk']['id'],'name':_0x207238[_0x6773('0x47')]['name'],'active':_0x207238[_0x6773('0x47')]['active'],'callerid':_0x207238[_0x6773('0x47')][_0x6773('0x48')]};}if(_0x207238[_0x6773('0x49')]){_0x141772[_0x6773('0x49')]={'id':_0x207238[_0x6773('0x49')]['id'],'name':_0x207238[_0x6773('0x49')][_0x6773('0x23')]};}var _0x2aa3fa=md5(JSON[_0x6773('0x4a')](_0x141772));if(_0x207238[_0x6773('0x4b')]!==_0x2aa3fa){_0x207238[_0x6773('0x4b')]=_0x2aa3fa;emit(util['format'](_0x6773('0x4c'),_0x141772[_0x6773('0x23')]),_0x6773('0x4d'),_0x141772);}}}function emitVoiceQueueChannelRemove(_0x4ae047){logger[_0x6773('0x4e')](_0x6773('0x4f'),JSON['stringify'](_0x4ae047));emit(util['format'](_0x6773('0x4c'),_0x4ae047['name']),'voice_queue_channel:remove',_0x4ae047);io[_0x6773('0x21')](_0x6773('0x50'),_0x4ae047);}function notSendMessagesQueue(_0x360d8c){if(_0x360d8c[_0x6773('0x51')]){if(_0x360d8c[_0x6773('0x43')]===0x0&&_0x360d8c[_0x6773('0x27')]===0x0){_0x360d8c['sendMessageOneNotActive']=![];_0x360d8c[_0x6773('0x25')]=0x0;_0x360d8c['paused']=0x0;_0x360d8c[_0x6773('0x42')]=_0x6773('0x52');ut[_0x6773('0x53')](_0x6773('0x54'),_0x360d8c[_0x6773('0x23')]+'\x20is\x20not\x20active');}else{_0x360d8c['message']=_0x6773('0x55');ut['logger'](_0x6773('0x54'),_0x360d8c[_0x6773('0x23')]+'\x20is\x20disactive');}emitCampaignPreview(_0x360d8c);}}Preview['prototype'][_0x6773('0x56')]=function(){var _0x5a42dc=this;setInterval(function(){_0x5a42dc[_0x6773('0x57')]();},0x7cf);};Preview[_0x6773('0x58')][_0x6773('0x57')]=function(){var _0x4e2ed3=this['campaignsPreview'];this[_0x6773('0x15')]+=0x1;for(var _0x4bd862 in _0x4e2ed3){if(_0x4e2ed3[_0x6773('0x59')](_0x4bd862)&&(_0x4e2ed3[_0x4bd862][_0x6773('0x2e')]===_0x6773('0x5a')||_0x4e2ed3[_0x4bd862]['dialMethod']==='booked')&&_0x4e2ed3[_0x4bd862][_0x6773('0x22')]==='outbound'){if(this[_0x6773('0x15')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x6773('0x5b')]();}}if(_0x4e2ed3[_0x6773('0x59')](_0x4bd862)&&_0x4e2ed3[_0x4bd862][_0x6773('0x2e')]===_0x6773('0x5a')&&_0x4e2ed3[_0x4bd862][_0x6773('0x22')]===_0x6773('0x5c')){if(_0x4e2ed3[_0x4bd862][_0x6773('0x2d')]){this[_0x6773('0x5d')](_0x4e2ed3[_0x4bd862]);this['recallMe'](_0x4e2ed3[_0x4bd862]);}else{notSendMessagesQueue(_0x4e2ed3[_0x4bd862]);}}}};Preview[_0x6773('0x58')][_0x6773('0x5e')]=function(_0x246601){var _0x397a0c=this;this['sequence'][_0x6773('0xe')](function(){if(!_[_0x6773('0x5f')](_0x397a0c['actions'][_0x246601])){loggerAction[_0x6773('0x4e')](_0x6773('0x60'),_0x246601,'Queue',_0x397a0c['actions'][_0x246601][_0x6773('0x61')],_0x6773('0x62'),JSON[_0x6773('0x4a')](_0x397a0c[_0x6773('0x11')][_0x397a0c['actions'][_0x246601]['queue']][_0x6773('0x43')]),_0x6773('0x63'),JSON[_0x6773('0x4a')](_0x397a0c[_0x6773('0x11')][_0x397a0c['actions'][_0x246601][_0x6773('0x61')]][_0x6773('0x27')]),JSON[_0x6773('0x4a')](_0x397a0c[_0x6773('0x64')][_0x246601][_0x6773('0x65')]),JSON[_0x6773('0x4a')](_['pick'](_0x397a0c[_0x6773('0x64')][_0x246601],[_0x6773('0x66'),'UserId','VoiceQueueId',_0x6773('0x67')])));return ami[_0x6773('0x68')]({'action':'status','channel':_0x397a0c[_0x6773('0x64')][_0x246601][_0x6773('0x69')]})['catch'](function(_0xe4e3fa){if(_0xe4e3fa[_0x6773('0x42')]===_0x6773('0x6a')){setTimeout(function(){if(_0x397a0c[_0x6773('0x64')][_0x246601]){ut[_0x6773('0x6b')](_0x397a0c[_0x6773('0x11')][_0x397a0c[_0x6773('0x64')][_0x246601]['queue']],_0x6773('0x6c'));if(_0x397a0c[_0x6773('0x64')][_0x246601][_0x6773('0x65')]===!![]){ut[_0x6773('0x6d')](_0x397a0c['campaignsPreview'][_0x397a0c[_0x6773('0x64')][_0x246601][_0x6773('0x61')]],'[clearZombieChannel]');ut['loggerError'](_0x6773('0x6e')+_0x246601,_0x397a0c[_0x6773('0x64')][_0x246601][_0x6773('0x61')]);}ut[_0x6773('0x6f')](_0x6773('0x70')+_0x246601,_0x397a0c[_0x6773('0x64')][_0x246601][_0x6773('0x61')]);delete _0x397a0c[_0x6773('0x64')][_0x246601];}},0x2328);}});}});};Preview[_0x6773('0x58')][_0x6773('0x5b')]=function(){var _0x480997=this;loggerAction[_0x6773('0x4e')]('[action]',_[_0x6773('0x71')](this[_0x6773('0x64')]));for(var _0x31fb5c in this[_0x6773('0x64')]){if(_0x480997[_0x6773('0x64')]['hasOwnProperty'](_0x31fb5c)){_0x480997['clearZombieChannel'](_0x31fb5c);}}};Preview[_0x6773('0x58')][_0x6773('0x72')]=function(_0x166d0c){var _0x1d6bdf=this;rpcDb[_0x6773('0x73')](_0x166d0c['id'],ut[_0x6773('0x74')](this[_0x6773('0x14')]))[_0x6773('0x75')](function(_0x71cd93){if(!_[_0x6773('0x5f')](_0x71cd93)){for(var _0x181a2c=0x0;_0x181a2c<_0x71cd93[_0x6773('0x76')];_0x181a2c+=0x1){if(ut[_0x6773('0x77')](_0x71cd93[_0x181a2c][_0x6773('0x78')])<_0x166d0c[_0x6773('0x79')]*0x3c){if(_0x71cd93[_0x181a2c][_0x6773('0x7a')]&&!_0x71cd93[_0x181a2c][_0x6773('0x7a')][_0x6773('0x7b')]){_0x1d6bdf[_0x6773('0x7c')](_0x71cd93[_0x181a2c]['id'])[_0x6773('0x75')](ut[_0x6773('0x7d')](_0x6773('0x7e')))[_0x6773('0x7f')](ut[_0x6773('0x7d')](_0x6773('0x7e')));}else{rpcDb[_0x6773('0x80')](_0x71cd93[_0x181a2c]['id']);}}else{var _0x5757c3=new Action(_0x71cd93[_0x181a2c],_0x166d0c);_0x5757c3[_0x6773('0x81')]=moment()[_0x6773('0x82')](_0x6773('0x83'));_0x166d0c[_0x6773('0x84')]+=0x1;ut[_0x6773('0x85')](_0x5757c3,0x17,'RecallInQueue');if(_0x166d0c['dialRecallInQueue']){rpcDb[_0x6773('0x86')](ut[_0x6773('0x87')](_0x71cd93[_0x181a2c]));rpcDb[_0x6773('0x88')](_0x5757c3,_0x6773('0x89'));}else{ut[_0x6773('0x85')](_0x5757c3,0x16,_0x6773('0x8a'));rpcDb['createCustomerHistory'](_0x5757c3,_0x6773('0x8b'));rpcDb[_0x6773('0x8c')](_0x5757c3,'[HistoryRecallClose]');}}}}})[_0x6773('0x7f')](ut[_0x6773('0x7d')](_0x6773('0x8d')));};Preview[_0x6773('0x58')][_0x6773('0x5d')]=function(_0x214abb){_0x214abb[_0x6773('0x51')]=!![];if(ut[_0x6773('0x8e')](_0x214abb['loggedIn'])){_0x214abb[_0x6773('0x42')]=_0x6773('0x8f');}else if(!ut[_0x6773('0x90')](_0x214abb[_0x6773('0x2d')])){_0x214abb[_0x6773('0x42')]='NOT_ACTIVE';}else if(!this[_0x6773('0x91')](_0x214abb[_0x6773('0x47')])){if(!this[_0x6773('0x91')](_0x214abb[_0x6773('0x92')])){_0x214abb[_0x6773('0x42')]=_0x6773('0x93');}else{_0x214abb[_0x6773('0x42')]=_0x6773('0x94');}}else{_0x214abb[_0x6773('0x42')]=_0x6773('0x94');}emitCampaignPreview(_0x214abb);};Preview['prototype'][_0x6773('0x95')]=function(_0x15739b,_0x3b06ea,_0x476e8a){var _0x525e6e=this;var _0x17892b=this[_0x6773('0x64')][_0x3b06ea];var _0x277aa6=this['campaignsPreview'][_0x17892b[_0x6773('0x61')]];var _0x16cc17;if(_0x277aa6){switch(_0x476e8a){case'1':_0x277aa6[_0x6773('0x39')]+=0x1;_0x17892b[_0x6773('0x96')]+=0x1;_0x17892b[_0x6773('0x97')]=ut[_0x6773('0x98')](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0x0,'NoSuchNumber');ami[_0x6773('0x21')](_0x6773('0x99'),ut[_0x6773('0x9a')](_0x17892b,_0x6773('0x9b')));rpcDb[_0x6773('0x88')](_0x17892b,_0x6773('0x9c'));if(ut['totalGlobal'](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut[_0x6773('0x9e')](_0x17892b,0xf,_0x6773('0x9f'));rpcDb[_0x6773('0x8c')](_0x16cc17,_0x6773('0xa0'));}else{if(_0x17892b['countnosuchnumberretry']>=_0x277aa6[_0x6773('0xa1')]){rpcDb[_0x6773('0x8c')](_0x17892b,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x6773('0xa2')](ut[_0x6773('0xa3')](_0x17892b,_0x6773('0x96'),_0x277aa6['dialNoSuchNumberRetryFrequency']),_0x17892b['unlockAgent'],_0x17892b['activeContact']);}}delete this['actions'][_0x15739b[_0x6773('0xa4')]];break;case _0x6773('0xa5'):var _0x5439f1=moment()['format'](_0x6773('0x83'));_0x17892b['responsetime']=_0x5439f1;_0x17892b['answertime']=_0x5439f1;_0x17892b[_0x6773('0x65')]=!![];_0x277aa6[_0x6773('0x27')]+=0x1;logger[_0x6773('0x4e')](_0x6773('0xa6'),_0x17892b[_0x6773('0xa7')],_0x6773('0xa8'),_0x277aa6[_0x6773('0x23')],_0x6773('0x63'),_0x277aa6['pTalking']);ami[_0x6773('0x21')]('custom:agentconnect',ut[_0x6773('0x9a')](_0x17892b,_0x6773('0xa9'),this[_0x6773('0x11')][_0x17892b[_0x6773('0x61')]]));if(_0x277aa6[_0x6773('0xaa')]){ami[_0x6773('0x21')](_0x6773('0xab'),ut[_0x6773('0xac')](_0x17892b));}break;case'16':ami[_0x6773('0x21')](_0x6773('0xad'),ut[_0x6773('0x9a')](_0x17892b,'complete',this[_0x6773('0x11')][_0x17892b[_0x6773('0x61')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x17892b,_0x6773('0xae')));_0x277aa6[_0x6773('0x32')]+=0x1;_0x277aa6[_0x6773('0xaf')]+=0x1;_0x277aa6[_0x6773('0x24')]+=0x1;ut[_0x6773('0x6d')](_0x277aa6,_0x6773('0xb0'));_0x17892b[_0x6773('0x97')]=ut[_0x6773('0x98')](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0x4,_0x6773('0xb1'));rpcDb[_0x6773('0x88')](_0x17892b,_0x6773('0xb2'));rpcDb[_0x6773('0x8c')](_0x17892b,_0x6773('0xb3'));rpcDb[_0x6773('0xb4')](_0x17892b);_0x277aa6['sumDuration']+=_0x17892b[_0x6773('0xb5')];_0x277aa6[_0x6773('0x28')]+=_0x17892b[_0x6773('0xb5')];logger['info']('[syncHangup][talking][decrement]',_0x17892b[_0x6773('0xa7')],_0x6773('0xa8'),_0x277aa6[_0x6773('0x23')],_0x6773('0x63'),_0x277aa6[_0x6773('0x27')]);delete this[_0x6773('0x64')][_0x15739b[_0x6773('0xa4')]];break;case'BUSY':_0x277aa6['outboundBusyCallsDay']+=0x1;_0x17892b[_0x6773('0xb6')]+=0x1;_0x17892b[_0x6773('0x97')]=ut['totalGlobal'](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0x5,_0x6773('0xb7'));ami[_0x6773('0x21')](_0x6773('0xb8'),ut['buildObj'](_0x17892b,'busy'));rpcDb['createCustomerHistory'](_0x17892b,'[callProgressDetectingCustomer][logBusy]');if(ut[_0x6773('0x98')](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut[_0x6773('0x9e')](_0x17892b,0xf,'Global');rpcDb['createCustomerFinal'](_0x16cc17,_0x6773('0xb9'));}else{if(_0x17892b[_0x6773('0xb6')]>=_0x277aa6[_0x6773('0xba')]){rpcDb[_0x6773('0x8c')](_0x17892b,_0x6773('0xbb'));}else{rpcDb[_0x6773('0xa2')](ut[_0x6773('0xa3')](_0x17892b,'countbusyretry',_0x277aa6[_0x6773('0xbc')]),_0x17892b[_0x6773('0xbd')],_0x17892b[_0x6773('0xbe')]);}}break;case'NOANSWER':_0x277aa6[_0x6773('0x38')]+=0x1;_0x17892b[_0x6773('0xbf')]+=0x1;_0x17892b[_0x6773('0x97')]=ut['totalGlobal'](_0x17892b);ut['logCustomer'](_0x17892b,0x3,_0x6773('0xc0'));ami['emit'](_0x6773('0xc1'),ut[_0x6773('0x9a')](_0x17892b,_0x6773('0xc2')));rpcDb[_0x6773('0x88')](_0x17892b,_0x6773('0xc3'));if(ut[_0x6773('0x98')](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut[_0x6773('0x9e')](_0x17892b,0xf,'Global');rpcDb[_0x6773('0x8c')](_0x16cc17,_0x6773('0xc4'));}else{if(_0x17892b[_0x6773('0xbf')]>=_0x277aa6[_0x6773('0xc5')]){rpcDb[_0x6773('0x8c')](_0x17892b,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0x6773('0xa2')](ut[_0x6773('0xa3')](_0x17892b,_0x6773('0xbf'),_0x277aa6[_0x6773('0xc6')]),_0x17892b[_0x6773('0xbd')],_0x17892b['activeContact']);}}break;case _0x6773('0xc7'):_0x277aa6[_0x6773('0x34')]+=0x1;_0x17892b['countcongestionretry']+=0x1;_0x17892b[_0x6773('0x97')]=ut['totalGlobal'](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0x8,_0x6773('0xc8'));ami[_0x6773('0x21')]('custom:agentcongestion',ut[_0x6773('0x9a')](_0x17892b,_0x6773('0xc9')));rpcDb[_0x6773('0x88')](_0x17892b,_0x6773('0xca'));if(ut[_0x6773('0x98')](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut[_0x6773('0x9e')](_0x17892b,0xf,_0x6773('0x9f'));rpcDb[_0x6773('0x8c')](_0x16cc17,_0x6773('0xcb'));}else{if(_0x17892b[_0x6773('0xcc')]>=_0x277aa6[_0x6773('0xcd')]){rpcDb[_0x6773('0x8c')](_0x17892b,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0x6773('0xa2')](ut[_0x6773('0xa3')](_0x17892b,_0x6773('0xcc'),_0x277aa6[_0x6773('0xbc')]),_0x17892b[_0x6773('0xbd')],_0x17892b[_0x6773('0xbe')]);}}break;case _0x6773('0xce'):_0x277aa6[_0x6773('0x3b')]+=0x1;_0x17892b[_0x6773('0xcf')]+=0x1;_0x17892b['countglobal']=ut[_0x6773('0x98')](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0x14,_0x6773('0xd0'));ami['emit'](_0x6773('0xd1'),ut[_0x6773('0x9a')](_0x17892b,'agentreject'));rpcDb[_0x6773('0x88')](_0x17892b,_0x6773('0xd2'));if(ut[_0x6773('0x98')](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut['cloneAction'](_0x17892b,0x14,_0x6773('0xd0'));rpcDb['createCustomerFinal'](_0x16cc17,_0x6773('0xd3'));}else{if(_0x17892b[_0x6773('0xcf')]>=_0x277aa6['dialAgentRejectMaxRetry']){rpcDb[_0x6773('0x8c')](_0x17892b,_0x6773('0xd3'));}else{rpcDb[_0x6773('0xa2')](ut[_0x6773('0xa3')](_0x17892b,_0x6773('0xcf'),_0x277aa6[_0x6773('0xd4')]),_0x17892b[_0x6773('0xbd')],_0x17892b[_0x6773('0xbe')]);}}break;case'ABANDONED':_0x277aa6['outboundAbandonedCallsDay']+=0x1;_0x17892b[_0x6773('0xd5')]+=0x1;_0x17892b[_0x6773('0x97')]=ut['totalGlobal'](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0xb,_0x6773('0xd6'));rpcDb['createCustomerHistory'](_0x17892b,_0x6773('0xd7'));if(ut[_0x6773('0x98')](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut['cloneAction'](_0x17892b,0xf,_0x6773('0x9f'));rpcDb[_0x6773('0x8c')](_0x16cc17,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x17892b['countabandonedetry']>=_0x277aa6[_0x6773('0xd8')]){rpcDb['createCustomerFinal'](_0x17892b,_0x6773('0xd7'));}else{rpcDb[_0x6773('0xa2')](ut[_0x6773('0xa3')](_0x17892b,'countabandonedretry',_0x277aa6[_0x6773('0xd9')]),_0x17892b[_0x6773('0xbd')],_0x17892b[_0x6773('0xbe')]);}}break;case'18':_0x277aa6[_0x6773('0xda')]+=0x1;_0x17892b['countmachineretry']+=0x1;_0x17892b[_0x6773('0x97')]=ut['totalGlobal'](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0x12,_0x15739b[_0x6773('0xdb')]||_0x15739b['dialstatus']);ami[_0x6773('0x21')](_0x6773('0xdc'),ut[_0x6773('0x9a')](_0x17892b,_0x6773('0xdd')));rpcDb[_0x6773('0x88')](_0x17892b,_0x6773('0xde'));if(ut[_0x6773('0x98')](_0x17892b)>=_0x277aa6['dialGlobalMaxRetry']){_0x16cc17=ut['cloneAction'](_0x17892b,0xf,_0x6773('0x9f'));rpcDb[_0x6773('0x8c')](_0x16cc17,_0x6773('0xde'));}else{rpcDb[_0x6773('0x8c')](_0x17892b,_0x6773('0xde'));}delete this[_0x6773('0x64')][_0x15739b['linkedid']];break;case'19':_0x277aa6[_0x6773('0xda')]+=0x1;_0x17892b['countglobal']=ut[_0x6773('0x98')](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0x13,_0x15739b[_0x6773('0xdb')]||_0x15739b['dialstatus']);ami['emit'](_0x6773('0xdc'),ut[_0x6773('0x9a')](_0x17892b,_0x6773('0xdd')));rpcDb['createCustomerHistory'](_0x17892b,_0x6773('0xdf'));if(ut[_0x6773('0x98')](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut[_0x6773('0x9e')](_0x17892b,0xf,'Global');rpcDb['createCustomerFinal'](_0x16cc17,_0x6773('0xdf'));}else{rpcDb[_0x6773('0x8c')](_0x17892b,'[callProgressDetectingCustomer][machine]');}delete this[_0x6773('0x64')][_0x15739b['linkedid']];break;default:if(_0x17892b['dialAnswer']){ut[_0x6773('0x6d')](_0x277aa6,'[default]');ut[_0x6773('0x6f')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x277aa6[_0x6773('0x23')],_0x15739b);}_0x277aa6['outboundUnknownCallsDay']+=0x1;_0x17892b[_0x6773('0x97')]=ut[_0x6773('0x98')](_0x17892b);ut[_0x6773('0x85')](_0x17892b,0xc,_0x15739b[_0x6773('0xdb')]||_0x15739b[_0x6773('0xe0')]);rpcDb[_0x6773('0x88')](_0x17892b,'[callProgressDetectingCustomer][logUnknown]');if(ut['totalGlobal'](_0x17892b)>=_0x277aa6[_0x6773('0x9d')]){_0x16cc17=ut['cloneAction'](_0x17892b,0xf,_0x6773('0x9f'));rpcDb[_0x6773('0x8c')](_0x16cc17,_0x6773('0xe1'));}else{rpcDb[_0x6773('0x8c')](_0x17892b,_0x6773('0xe1'));}delete this[_0x6773('0x64')][_0x15739b[_0x6773('0xa4')]];}if(!(_0x17892b[_0x6773('0x65')]&&_0x476e8a==='16')){ut[_0x6773('0x6b')](_0x277aa6,_0x6773('0xe2'));logger[_0x6773('0x4e')](_0x6773('0xe3'),_0x17892b[_0x6773('0xa7')],_0x6773('0xa8'),_0x277aa6[_0x6773('0x23')],_0x6773('0x62'),_0x277aa6[_0x6773('0x43')]);}if(_0x476e8a!=='ANSWER'){delete this['actions'][_0x15739b['linkedid']];delete this['actions'][_0x15739b[_0x6773('0xe4')]];}}};Preview[_0x6773('0x58')][_0x6773('0xe5')]=function(_0x1d9a48,_0xc3e5b8,_0x59b78e){if(_[_0x6773('0xe6')](_0xc3e5b8)&&_0x6773('0xe7')!==typeof _0xc3e5b8){return;}if(_[_0x6773('0xe6')](_0x59b78e)&&_0x6773('0xe7')!==typeof _0x59b78e){return;}switch(_0x59b78e[_0x6773('0xe8')]){case'0':ut['logAgent'](_0x1d9a48,0x0,_0x6773('0xe9'));rpcDb['createAgentHistory'](_0x1d9a48,_0x6773('0xea'));break;case'3':ut['logAgent'](_0x1d9a48,0x3,_0x6773('0xc0'));rpcDb[_0x6773('0xeb')](_0x1d9a48,_0x6773('0xec'));break;case'5':ut[_0x6773('0xed')](_0x1d9a48,0x5,_0x6773('0xb7'));rpcDb['createAgentHistory'](_0x1d9a48,_0x6773('0xee'));break;case'8':ut[_0x6773('0xed')](_0x1d9a48,0x8,_0x6773('0xc8'));rpcDb[_0x6773('0xeb')](_0x1d9a48,_0x6773('0xef'));break;case'22':ut[_0x6773('0xed')](_0x1d9a48,0x16,_0x6773('0xf0'));rpcDb[_0x6773('0xeb')](_0x1d9a48,_0x6773('0xf1'));break;default:ut[_0x6773('0xed')](_0x1d9a48,0xc,_0x59b78e[_0x6773('0xe8')]);rpcDb[_0x6773('0xeb')](_0x1d9a48,_0x6773('0xef'));}ut['updateOriginated'](_0xc3e5b8,_0x6773('0xf2'));logger[_0x6773('0x4e')](_0x6773('0xf3'),_0x1d9a48[_0x6773('0xa7')],_0x6773('0xa8'),_0xc3e5b8[_0x6773('0x23')],_0x6773('0x62'),_0xc3e5b8[_0x6773('0x43')]);delete this['actions'][_0x1d9a48['uniqueid']];};Preview[_0x6773('0x58')][_0x6773('0xf4')]=function(_0x4cc386,_0xe6df63,_0x398387,_0x194843,_0x3fff4c){var _0x471c4c=this;return new BPromise(function(_0xaaf088,_0x910715){if(_['isNil'](_0xe6df63)||_[_0x6773('0x5f')](_0xe6df63['Contact'])||_['isNil'](_0xe6df63[_0x6773('0xf5')][_0x6773('0xf6')])||_[_0x6773('0x5f')](_0xe6df63[_0x6773('0xf7')])){_0x910715(ut[_0x6773('0x42')](_0x6773('0xf8'),_0x194843,_0x3fff4c));return;}var _0x304f03=uuid['v4']();var _0x2b3fbd=_0x471c4c[_0x6773('0x11')][_0xe6df63[_0x6773('0xf9')][_0x6773('0x23')]];var _0x3cd9ca=_0x398387?_0x471c4c[_0x6773('0x14')][_0x398387]['id']:undefined;_0x471c4c[_0x6773('0x64')][_0x304f03]=new Action(_0xe6df63,_0x2b3fbd,_0x304f03,_0x398387,_0x3cd9ca);var _0x96463d=_0x471c4c[_0x6773('0x64')][_0x304f03];_0x96463d[_0x6773('0xbd')]=_0x194843;_0x96463d[_0x6773('0xbe')]=_0x3fff4c;_0x96463d[_0x6773('0xfa')]=_0x398387;if(_['isEmpty'](_0x4cc386)){_0x471c4c[_0x6773('0xfb')](_0x96463d,_0x2b3fbd,_0xe6df63,_0x398387)[_0x6773('0x75')](function(_0x2e469b){logger[_0x6773('0x4e')]('[Preview][execCall][success]',_0x6773('0xfc')+_0x96463d[_0x6773('0x61')]+_0x6773('0xfd')+_0x96463d[_0x6773('0xfe')],JSON[_0x6773('0x4a')](_0x2e469b));ami[_0x6773('0x21')](_0x6773('0xff'),ut[_0x6773('0x9a')](_0x96463d,_0x6773('0x100'),_0x471c4c[_0x6773('0x11')][_0x96463d[_0x6773('0x61')]]));_0xaaf088(ut[_0x6773('0x42')]('Calling'));})[_0x6773('0x7f')](function(_0x244163){ut[_0x6773('0x53')](_0x6773('0x101'),_0x244163);_0x910715(ut[_0x6773('0x42')](_0x6773('0x102'),_0x194843,_0x3fff4c));});}else{_0x2b3fbd[_0x6773('0x103')]+=0x1;ut[_0x6773('0x104')](_0x96463d);rpcDb['createHistory'](_0x96463d,_0x6773('0x105'));delete _0x471c4c[_0x6773('0x64')][_0x304f03];_0x910715(ut[_0x6773('0x42')](_0x6773('0x106'),_0x194843,_0x3fff4c));}});};Preview[_0x6773('0x58')][_0x6773('0x91')]=function(_0x24833d){return!_[_0x6773('0x5f')](_0x24833d)&&!_[_0x6773('0x5f')](_0x24833d['name'])&&!_[_0x6773('0x5f')](_0x24833d['active'])&&_0x24833d['active']&&!_[_0x6773('0x5f')](this[_0x6773('0x13')][util['format'](_0x6773('0x107'),_0x24833d[_0x6773('0x23')])])&&!_[_0x6773('0x5f')](this[_0x6773('0x13')][util[_0x6773('0x82')]('SIP/%s',_0x24833d['name'])][_0x6773('0x108')])&&(this['trunks'][util[_0x6773('0x82')]('SIP/%s',_0x24833d['name'])][_0x6773('0x108')]===_0x6773('0x109')||this[_0x6773('0x13')][util['format'](_0x6773('0x107'),_0x24833d['name'])][_0x6773('0x108')]==='unmonitored');};Preview[_0x6773('0x58')][_0x6773('0x7c')]=function(_0x25ad81,_0x562a6e){var _0x22ecb4=this;return new BPromise(function(_0x2924b4,_0x52849f){_0x22ecb4['execRun'](_0x25ad81,_0x562a6e)['then'](function(_0x2f64f0){_0x2924b4(_['pick'](_0x2f64f0,[_0x6773('0x42')]));})['catch'](function(_0x354bdd){if(_0x354bdd[_0x6773('0x10a')]){rpcDb[_0x6773('0x10b')](_0x25ad81);}if(_0x354bdd[_0x6773('0x10c')]){rpcDb[_0x6773('0x80')](_0x25ad81);}_0x52849f(_[_0x6773('0x10d')](_0x354bdd,[_0x6773('0x42')]));});});};Preview['prototype'][_0x6773('0x10e')]=function(_0x3d0a33,_0x587801){var _0x4c5c6a=this;return new BPromise(function(_0x41ae46,_0x230783){var _0x445625,_0x47f3a0;rpcDb[_0x6773('0x10f')](_0x3d0a33)['then'](function(_0x26c151){if(!_[_0x6773('0x5f')](_0x26c151[0x0])){_0x47f3a0=_0x26c151[0x0]['recallme']?![]:!![];_0x445625=_0x26c151[0x0][_0x6773('0x110')]?!![]:![];_0x445625=_0x587801?!![]:_0x445625;}var _0x1557b9=_0x4c5c6a['validateContact'](_0x26c151);if(_0x1557b9[_0x6773('0x111')]){rpcDb[_0x6773('0x112')](_[_0x6773('0x10d')](_0x26c151[0x0],[_0x6773('0xf7'),_0x6773('0x113')]))[_0x6773('0x75')](function(_0x45a79f){_0x4c5c6a[_0x6773('0xf4')](_0x45a79f,_0x26c151[0x0],_0x587801,_0x47f3a0,_0x445625)[_0x6773('0x75')](function(_0x1a6bae){_0x41ae46(_0x1a6bae);})[_0x6773('0x7f')](function(_0x41a49c){_0x230783(_0x41a49c);});})[_0x6773('0x7f')](function(_0x4ff5c2){ut[_0x6773('0x53')](_0x6773('0x114'),_0x4ff5c2);_0x230783(ut[_0x6773('0x42')](_0x6773('0x115'),_0x47f3a0,_0x445625));});}else{_0x230783(ut[_0x6773('0x42')](_0x1557b9[_0x6773('0x42')],_0x47f3a0,_0x445625));}})['catch'](function(_0x460ae9){ut[_0x6773('0x53')](_0x6773('0x116'),_0x460ae9);_0x230783(ut['message'](_0x6773('0x115'),![],!![]));});});};Preview['prototype'][_0x6773('0x117')]=function(_0x3587ba){if(_['isNil'](_0x3587ba)||_[_0x6773('0x118')](_0x3587ba)||!_['isNil'](_0x3587ba[0x0][_0x6773('0x7a')])&&_[_0x6773('0x5f')](_0x3587ba[0x0][_0x6773('0x7a')]['name'])){ut[_0x6773('0x53')](_0x6773('0x119'),_0x3587ba);return{'isValid':![],'message':_0x6773('0x11a')};}var _0x222d8c=this[_0x6773('0x11')][_0x3587ba[0x0][_0x6773('0xf9')][_0x6773('0x23')]];_0x222d8c['message']=_0x6773('0x94');if(_['isNil'](_0x222d8c)){ut[_0x6773('0x53')](_0x6773('0x11b'),_0x222d8c);return{'isValid':![],'message':_0x6773('0x11c')};}if(!this[_0x6773('0x91')](_0x222d8c[_0x6773('0x47')])){ut[_0x6773('0x53')](_0x6773('0x11d'),_0x6773('0x11e')+_0x222d8c[_0x6773('0x23')]+_0x6773('0x11f'));if(!this[_0x6773('0x91')](_0x222d8c[_0x6773('0x92')])){ut[_0x6773('0x53')](_0x6773('0x11d'),_0x222d8c['name']+_0x6773('0x120'));return{'isValid':![],'message':_0x6773('0x121')};}}if(!ut['isActive'](_0x222d8c[_0x6773('0x2d')])){ut[_0x6773('0x53')]('[Preview][validateContact][Campaign\x20Active]',_0x222d8c['name']+_0x6773('0x122'));return{'isValid':![],'message':_0x6773('0x11e')+_0x222d8c[_0x6773('0x23')]+_0x6773('0x122')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x6773('0x58')][_0x6773('0xfb')]=function(_0x506800,_0x2c8cb2,_0x292453,_0x2bb7cb){var _0x25dba4=this;return new BPromise(function(_0x4b626a,_0x288a95){var _0x2ee454=_0x506800[_0x6773('0xa7')];var _0x2d8265=_0x25dba4[_0x6773('0x91')](_0x2c8cb2['Trunk'])?util[_0x6773('0x82')](_0x6773('0x123'),_0x2c8cb2[_0x6773('0x47')][_0x6773('0x23')],_[_0x6773('0x5f')](_0x2c8cb2['dialPrefix'])?'':_0x2c8cb2['dialPrefix']['trim']()||'',_0x2c8cb2['dialCutDigit']>0x0?_0x292453[_0x6773('0xf5')][_0x6773('0xf6')][_0x6773('0x124')](_0x2c8cb2[_0x6773('0x125')]):_0x292453[_0x6773('0xf5')][_0x6773('0xf6')]):util[_0x6773('0x82')](_0x6773('0x123'),_[_0x6773('0x5f')](_0x2c8cb2[_0x6773('0x92')])?_0x2c8cb2['Trunk']['name']:_0x2c8cb2[_0x6773('0x92')][_0x6773('0x23')],_[_0x6773('0x5f')](_0x2c8cb2[_0x6773('0x126')])?'':_0x2c8cb2[_0x6773('0x126')][_0x6773('0x127')]()||'',_0x2c8cb2[_0x6773('0x125')]>0x0?_0x292453[_0x6773('0xf5')][_0x6773('0xf6')]['substring'](_0x2c8cb2[_0x6773('0x125')]):_0x292453['Contact'][_0x6773('0xf6')]);var _0x161005=_0x25dba4[_0x6773('0x91')](_0x2c8cb2['Trunk'])?ut['getCallerId'](_0x2c8cb2[_0x6773('0x47')][_0x6773('0x48')],_0x2c8cb2[_0x6773('0x2f')],_0x2c8cb2[_0x6773('0x128')]>0x0?ut[_0x6773('0x129')](_0x2c8cb2[_0x6773('0x30')],_0x2c8cb2[_0x6773('0x128')]):_0x2c8cb2[_0x6773('0x30')]):ut['getCallerId'](_[_0x6773('0x5f')](_0x2c8cb2[_0x6773('0x92')])?_0x2c8cb2['Trunk'][_0x6773('0x48')]:_0x2c8cb2[_0x6773('0x92')][_0x6773('0x48')],_0x2c8cb2[_0x6773('0x2f')],_0x2c8cb2[_0x6773('0x128')]>0x0?ut[_0x6773('0x129')](_0x2c8cb2[_0x6773('0x30')],_0x2c8cb2[_0x6773('0x128')]):_0x2c8cb2[_0x6773('0x30')]);if(_0x161005){_0x506800[_0x6773('0x12a')]=ut[_0x6773('0x12b')](_0x161005);_0x506800[_0x6773('0x12c')]=ut[_0x6773('0x12d')](_0x161005);}var _0x19c6d3=ut[_0x6773('0x12e')](_0x2c8cb2,_0x292453,_0x2d8265,_0x161005,_0x2ee454,_0x506800);_[_0x6773('0x12f')](_0x506800,ut['toLowerVariables'](_0x19c6d3));_0x506800['starttime']=moment()[_0x6773('0x82')](_0x6773('0x83'));ami[_0x6773('0x68')](ut['variablesAction'](_0x506800,_0x2c8cb2,_0x19c6d3,_0x506800[_0x6773('0xbe')],_0x2bb7cb))['then'](function(_0x44bf52){var _0x4d01bb=_0x506800[_0x6773('0x130')];if(!_[_0x6773('0x5f')](_0x4d01bb)){if(!_['isNil'](_0x25dba4['agents'][_0x4d01bb])){_0x25dba4[_0x6773('0x14')][_0x4d01bb][_0x6773('0x131')]=_0x506800[_0x6773('0x132')];emit(util[_0x6773('0x82')](_0x6773('0x133'),_0x25dba4[_0x6773('0x14')][_0x4d01bb][_0x6773('0x23')]),_0x6773('0x134'),{'destaccountcode':_0x25dba4[_0x6773('0x14')][_0x4d01bb][_0x6773('0x135')],'destconnectedlinenum':_0x506800[_0x6773('0x132')]});}}_0x2c8cb2[_0x6773('0x43')]+=0x1;logger[_0x6773('0x4e')]('[originated][increment]',_0x2ee454,'\x20Queue',_0x2c8cb2[_0x6773('0x23')],_0x6773('0x62'),_0x2c8cb2[_0x6773('0x43')]);_0x4b626a(_0x44bf52);})[_0x6773('0x7f')](function(_0xf46d92){ut[_0x6773('0xed')](_0x506800,0xe,_0x6773('0x136'));rpcDb[_0x6773('0xeb')](_0x506800,_0x6773('0x137'));_0x288a95(_0xf46d92);});});};Preview[_0x6773('0x58')][_0x6773('0x1c')]=function(_0x91f1ab){if(this['actions'][_0x91f1ab['linkedid']]){this[_0x6773('0x64')][_0x91f1ab[_0x6773('0xa4')]][_0x6773('0x69')]=_0x91f1ab[_0x6773('0x69')];}};Preview[_0x6773('0x58')][_0x6773('0x17')]=function(_0x3823e9){var _0x454b71=this;var _0x2231d9=this[_0x6773('0x64')][_0x3823e9[_0x6773('0x138')]];if(_0x2231d9){if(_0x2231d9[_0x6773('0xfa')]&&this[_0x6773('0x14')][_0x2231d9[_0x6773('0xfa')]]){ut['logLookAgent'](_0x2231d9,this[_0x6773('0x14')][_0x2231d9[_0x6773('0xfa')]][_0x6773('0x23')],this[_0x6773('0x14')][_0x2231d9[_0x6773('0xfa')]]['id']);}var _0x46e30b=_[_0x6773('0x139')](_0x2231d9);_0x46e30b[_0x6773('0x13a')]=moment()[_0x6773('0x82')](_0x6773('0x83'));var _0x39c52a=_0x454b71[_0x6773('0x11')][_0x2231d9[_0x6773('0x61')]];if(ut[_0x6773('0x13b')](_0x3823e9[_0x6773('0x13c')])){if(_0x2231d9[_0x6773('0xbd')]){rpcDb[_0x6773('0x10b')](_0x2231d9['idContact']);}if(_0x2231d9[_0x6773('0xbe')]){rpcDb[_0x6773('0x80')](_0x2231d9[_0x6773('0xfe')]);}ami[_0x6773('0x21')](_0x6773('0x13d'),ut[_0x6773('0x9a')](_0x2231d9,_0x6773('0x13e'),this['campaignsPreview'][_0x2231d9[_0x6773('0x61')]]));this[_0x6773('0xe5')](_0x46e30b,_0x39c52a,_0x3823e9);}else{_0x2231d9['starttime']=moment()[_0x6773('0x82')](_0x6773('0x83'));ut['logAgent'](_0x46e30b,0x4,_0x6773('0xb1'));rpcDb[_0x6773('0xeb')](_0x46e30b,_0x6773('0x13f'));}}};Preview[_0x6773('0x58')][_0x6773('0x140')]=function(_0x54d956){var _0x581f4f=this;var _0x3587d3=this[_0x6773('0x64')][_0x54d956[_0x6773('0xa4')]];var _0x225a5f;if(_0x3587d3){_0x225a5f=this[_0x6773('0x11')][_0x3587d3['queue']];logger['info']('[syncHangup][talking]',_0x54d956[_0x6773('0xa4')],_0x6773('0xa8'),_0x225a5f[_0x6773('0x23')],_0x6773('0x63'),_0x225a5f[_0x6773('0x27')]);}if(this[_0x6773('0x64')][_0x54d956['linkedid']]&&_0x54d956[_0x6773('0xa4')]!==_0x54d956['uniqueid']){if(_0x54d956['cause']==='16'&&this['actions'][_0x54d956[_0x6773('0xa4')]][_0x6773('0x65')]){this[_0x6773('0x95')](_0x54d956,_0x54d956[_0x6773('0xa4')],_0x54d956[_0x6773('0x141')]);}else if(this[_0x6773('0x64')][_0x54d956[_0x6773('0xa4')]][_0x6773('0x65')]){logger['info'](_0x6773('0x142'),_0x54d956[_0x6773('0xa4')],_0x54d956[_0x6773('0x141')],'\x20Queue',_0x225a5f['name'],'pTalking:\x20',_0x225a5f[_0x6773('0x27')]);this['callProgressDetectingCustomer'](_0x54d956,_0x54d956['linkedid'],_0x54d956[_0x6773('0x141')]);}}else if(_0x3587d3&&_[_0x6773('0x5f')](_0x3587d3['statedesc'])&&_0x225a5f[_0x6773('0x143')]&&_0x54d956[_0x6773('0xa4')]===_0x54d956[_0x6773('0xa7')]&&_[_0x6773('0x5f')](_0x54d956[_0x6773('0xe8')])&&_0x54d956[_0x6773('0x141')]==='16'&&_0x54d956[_0x6773('0x144')]==='6'&&_['isUndefined'](_0x3587d3[_0x6773('0x145')])){if(_0x3587d3[_0x6773('0xbd')]){rpcDb[_0x6773('0x10b')](_0x3587d3[_0x6773('0xfe')]);}if(_0x3587d3[_0x6773('0xbe')]){rpcDb['disableContact'](_0x3587d3['idContact']);}_0x54d956[_0x6773('0xe8')]='22';this['callProgressDetectingAgent'](_0x3587d3,_0x225a5f,_0x54d956);}else if(_0x3587d3&&_0x3587d3[_0x6773('0x145')]){if(_0x54d956[_0x6773('0x141')]==='16'&&this['actions'][_0x54d956[_0x6773('0xa4')]]['dialAnswer']){logger[_0x6773('0x4e')](_0x6773('0x146'),_0x54d956['linkedid'],_0x54d956[_0x6773('0x141')],_0x6773('0xa8'),_0x225a5f[_0x6773('0x23')],_0x6773('0x63'),_0x225a5f[_0x6773('0x27')]);this[_0x6773('0x95')](_0x54d956,_0x54d956[_0x6773('0xa4')],_0x54d956[_0x6773('0x141')]);}else if(this['actions'][_0x54d956[_0x6773('0xa4')]][_0x6773('0x65')]){logger['info']('[syncHangup][talking][cause]',_0x54d956[_0x6773('0xa4')],_0x54d956[_0x6773('0x141')],_0x6773('0xa8'),_0x225a5f[_0x6773('0x23')],'pTalking:\x20',_0x225a5f[_0x6773('0x27')]);this[_0x6773('0x95')](_0x54d956,_0x54d956['linkedid'],_0x54d956[_0x6773('0x141')]);}}};Preview[_0x6773('0x58')][_0x6773('0x1b')]=function(_0x406b29){if(this['actions'][_0x406b29['destlinkedid']]&&_0x406b29[_0x6773('0xe4')]!==_0x406b29[_0x6773('0x147')]){this[_0x6773('0x95')](_0x406b29,_0x406b29[_0x6773('0xe4')],_0x406b29[_0x6773('0xe0')]);}};Preview[_0x6773('0x58')][_0x6773('0x19')]=function(_0x5b165a){if(this[_0x6773('0x64')][_0x5b165a[_0x6773('0xa4')]]&&_0x5b165a[_0x6773('0xa4')]!==_0x5b165a[_0x6773('0xa7')]&&!this[_0x6773('0x64')][_0x5b165a[_0x6773('0xa4')]][_0x6773('0x65')]){if(_0x5b165a[_0x6773('0x141')]==='1'){this[_0x6773('0x95')](_0x5b165a,_0x5b165a[_0x6773('0xa4')],_0x5b165a['cause']);}}};Preview[_0x6773('0x58')]['addVariable']=function(_0x60f254,_0x6f9e0,_0x1d5528){if(this[_0x6773('0x64')][_0x60f254]){if(_['isNil'](this[_0x6773('0x64')][_0x60f254][_0x6773('0x148')])){this[_0x6773('0x64')][_0x60f254]['variables']={};}this[_0x6773('0x64')][_0x60f254][_0x6773('0x148')][_0x6f9e0]=_0x1d5528;}};Preview[_0x6773('0x58')][_0x6773('0x1d')]=function(_0x2482a2){try{if(!_[_0x6773('0x5f')](_0x2482a2)){if(ut['filterKey'](_[_0x6773('0x149')](_0x2482a2[_0x6773('0x14a')])[0x0])){this[_0x6773('0x14b')](_0x2482a2[_0x6773('0xa7')],_['keys'](_0x2482a2['variable'])[0x0],_0x2482a2[_0x6773('0x14c')]);}}}catch(_0x5e7a4b){logger['error'](_0x6773('0x14d'),util[_0x6773('0x14e')](_0x5e7a4b,{'showHidden':![],'depth':null}));}};Preview[_0x6773('0x58')][_0x6773('0x14f')]=function(_0x1ada63){if(_0x1ada63){if(this[_0x6773('0x64')][_0x1ada63['transfertargetlinkedid']]){this[_0x6773('0x64')][_0x1ada63[_0x6773('0x150')]][_0x6773('0x145')]=!![];}}};Preview[_0x6773('0x58')][_0x6773('0x20')]=function(_0x3ccf56){if(_0x3ccf56){if(this[_0x6773('0x64')][_0x3ccf56['transfererlinkedid']]){this[_0x6773('0x64')][_0x3ccf56['transfererlinkedid']]['transfer']=!![];}}};module[_0x6773('0x151')]=Preview;
\ No newline at end of file
+var _0xe057=['md5','../../../config/environment','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','redis','localhost','socket.io-emitter','prototype','tail','finally','sequence','voiceQueues','trunks','agents','bind','hangup','syncHangup','hanguprequest','dialend','syncDialEnd','newexten','syncNewExten','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','emit','type','name','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','format','voice:queue:%s','voice_queue:save','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','originated','sendMessageOneNotActive','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','syncCampaigns','clockClearZombieChannels','hasOwnProperty','preview','clearZombieChannels','outbound','dialActive','setMessage','recallMe','clearZombieChannel','enqueue','actions','info','[clearZombieChannels][talking]','Queue','originated:\x20','stringify','queue','dialAnswer','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','getContactRecallMe','agentReadyId','then','isNil','length','getDiff','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','activeContact','linkedid','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','pTalking:\x20','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','[syncHangup][talking][decrement]','BUSY','countbusyretry','countglobal','custom:agentbusy','busy','dialGlobalMaxRetry','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','dialBusyRetryFrequency','unlockAgent','outboundNoAnswerCallsDay','countnoanswerretry','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','outboundCongestionCallsDay','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','CANCEL','countagentrejectretry','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','object','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','SIP/%s','reachable','unmonitored','pick','unlockContact','execRun','getContactPreview','recallme','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','originatecalleridnum','extractCalleridNumber','addVariables','toLowerVariables','channelAgent','destconnectedlinenum','calleridnum','user:%s','accountcode','[originated][increment]','OriginateError','actionid','logLookAgent','clone','isFailure','response','rejected','[syncHangup][talking]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','variables','syncVarSet','keys','variable','value','error','[syncVarSet][Preview]','transfertargetlinkedid','util','moment'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0xe057,0x156));var _0x7e05=function(_0x1da303,_0x262f10){_0x1da303=_0x1da303-0x0;var _0x4c58c1=_0xe057[_0x1da303];return _0x4c58c1;};'use strict';var util=require(_0x7e05('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0x7e05('0x1'));var md5=require(_0x7e05('0x2'));var Redis=require('ioredis');var config=require(_0x7e05('0x3'));var logger=require(_0x7e05('0x4'))('preview');var loggerAction=require(_0x7e05('0x4'))(_0x7e05('0x5'));var ami=require(_0x7e05('0x6'));var rpcDb=require(_0x7e05('0x7'));var Action=require(_0x7e05('0x8'));var ut=require(_0x7e05('0x9'));config[_0x7e05('0xa')]=_['defaults'](config[_0x7e05('0xa')],{'host':_0x7e05('0xb'),'port':0x18eb});var io=require(_0x7e05('0xc'))(new Redis(config[_0x7e05('0xa')]));var Sequence=function(){};Sequence[_0x7e05('0xd')]['enqueue']=function(_0x8d7d21){this[_0x7e05('0xe')]=this[_0x7e05('0xe')]?this[_0x7e05('0xe')][_0x7e05('0xf')](_0x8d7d21):_0x8d7d21();};function Preview(_0x18b522){this[_0x7e05('0x10')]=new Sequence();this['campaignsPreview']=_0x18b522[_0x7e05('0x11')];this[_0x7e05('0x12')]=_0x18b522[_0x7e05('0x12')];this['actions']={};this[_0x7e05('0x13')]=_0x18b522[_0x7e05('0x13')];this['clockClearZombieChannels']=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x15'),this[_0x7e05('0x16')][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x17'),this['syncHangupRequest']['bind'](this));ami['on'](_0x7e05('0x18'),this[_0x7e05('0x19')]['bind'](this));ami['on'](_0x7e05('0x1a'),this[_0x7e05('0x1b')][_0x7e05('0x14')](this));ami['on']('varset',this['syncVarSet'][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x1c'),this[_0x7e05('0x1d')][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x1e'),this[_0x7e05('0x1f')][_0x7e05('0x14')](this));this[_0x7e05('0x20')](this[_0x7e05('0x21')]);}function emit(_0x195f37,_0x414788,_0x45d225){io['to'](_0x195f37)[_0x7e05('0x22')](_0x414788,_0x45d225);}function emitCampaignPreview(_0x1591b9){if(_0x1591b9[_0x7e05('0x23')]==='outbound'){var _0xc66a04={'id':_0x1591b9['id'],'name':_0x1591b9[_0x7e05('0x24')],'strategy':_0x1591b9[_0x7e05('0x25')],'answered':_0x1591b9['answered'],'available':_0x1591b9[_0x7e05('0x26')],'loggedIn':_0x1591b9[_0x7e05('0x27')],'pTalking':_0x1591b9[_0x7e05('0x28')],'sumBillable':_0x1591b9[_0x7e05('0x29')],'sumDuration':_0x1591b9[_0x7e05('0x2a')],'sumHoldTime':_0x1591b9[_0x7e05('0x2b')]||0x0,'talking':_0x1591b9[_0x7e05('0x2c')],'total':_0x1591b9[_0x7e05('0x2d')],'type':_0x1591b9['type'],'unmanaged':_0x1591b9[_0x7e05('0x2e')],'abandoned':_0x1591b9[_0x7e05('0x2f')],'waiting':_0x1591b9[_0x7e05('0x30')],'loggedInDb':_0x1591b9[_0x7e05('0x31')],'dialActive':_0x1591b9['dialActive'],'dialMethod':_0x1591b9[_0x7e05('0x32')],'dialOriginateCallerIdName':_0x1591b9['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1591b9[_0x7e05('0x33')],'dialOriginateTimeout':_0x1591b9[_0x7e05('0x34')],'dialPrefix':_0x1591b9[_0x7e05('0x35')],'outboundAnswerAgiCallsDay':_0x1591b9[_0x7e05('0x36')],'outboundAnswerCallsDay':_0x1591b9[_0x7e05('0x37')],'outboundBlacklistCallsDay':_0x1591b9[_0x7e05('0x38')],'outboundBusyCallsDay':_0x1591b9[_0x7e05('0x39')],'outboundCongestionCallsDay':_0x1591b9['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x1591b9[_0x7e05('0x3a')],'outboundDropCallsDayCallersExit':_0x1591b9[_0x7e05('0x3b')],'outboundDropCallsDayTimeout':_0x1591b9['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x1591b9['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1591b9[_0x7e05('0x3c')],'outboundOriginateFailureCallsDay':_0x1591b9[_0x7e05('0x3d')],'outboundReCallsDay':_0x1591b9['outboundReCallsDay'],'outboundRejectCallsDay':_0x1591b9[_0x7e05('0x3e')],'outboundUnknownCallsDay':_0x1591b9[_0x7e05('0x3f')],'outboundAbandonedCallsDay':_0x1591b9[_0x7e05('0x40')],'predictiveIntervalAnsweredCalls':_0x1591b9['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x1591b9['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x1591b9['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x1591b9['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1591b9[_0x7e05('0x41')],'predictiveIntervalErlangCalls':_0x1591b9[_0x7e05('0x42')],'predictiveIntervalErlangCallsDroppedCalls':_0x1591b9['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x1591b9['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x1591b9[_0x7e05('0x43')],'predictiveIntervalPauses':_0x1591b9[_0x7e05('0x44')],'predictiveIntervalAvailable':_0x1591b9[_0x7e05('0x45')],'predictiveIntervalTotalCalls':_0x1591b9[_0x7e05('0x46')],'message':_0x1591b9[_0x7e05('0x47')],'originated':_0x1591b9['originated'],'erlangCalls':_0x1591b9[_0x7e05('0x48')],'erlangCallToSecond':_0x1591b9[_0x7e05('0x49')],'erlangAbandonmentRate':_0x1591b9['erlangAbandonmentRate'],'erlangBusyFactor':_0x1591b9[_0x7e05('0x4a')],'startPredictive':_0x1591b9[_0x7e05('0x4b')],'startProgressive':_0x1591b9[_0x7e05('0x4c')]};if(_0x1591b9[_0x7e05('0x4d')]){_0xc66a04[_0x7e05('0x4d')]={'id':_0x1591b9['Trunk']['id'],'name':_0x1591b9[_0x7e05('0x4d')][_0x7e05('0x24')],'active':_0x1591b9[_0x7e05('0x4d')][_0x7e05('0x4e')],'callerid':_0x1591b9[_0x7e05('0x4d')][_0x7e05('0x4f')]};}if(_0x1591b9[_0x7e05('0x50')]){_0xc66a04[_0x7e05('0x50')]={'id':_0x1591b9['Interval']['id'],'name':_0x1591b9[_0x7e05('0x50')][_0x7e05('0x24')]};}var _0x5259dc=md5(JSON['stringify'](_0xc66a04));if(_0x1591b9['md5']!==_0x5259dc){_0x1591b9[_0x7e05('0x2')]=_0x5259dc;emit(util[_0x7e05('0x51')](_0x7e05('0x52'),_0xc66a04[_0x7e05('0x24')]),_0x7e05('0x53'),_0xc66a04);}}}function emitVoiceQueueChannelRemove(_0x1e398e){logger['info'](_0x7e05('0x54'),JSON['stringify'](_0x1e398e));emit(util[_0x7e05('0x51')](_0x7e05('0x52'),_0x1e398e[_0x7e05('0x24')]),_0x7e05('0x55'),_0x1e398e);io['emit'](_0x7e05('0x56'),_0x1e398e);}function notSendMessagesQueue(_0x4be9e8){if(_0x4be9e8['sendMessageOneNotActive']){if(_0x4be9e8[_0x7e05('0x57')]===0x0&&_0x4be9e8[_0x7e05('0x28')]===0x0){_0x4be9e8[_0x7e05('0x58')]=![];_0x4be9e8[_0x7e05('0x26')]=0x0;_0x4be9e8['paused']=0x0;_0x4be9e8[_0x7e05('0x47')]='NOT_ACTIVE';ut[_0x7e05('0x59')](_0x7e05('0x5a'),_0x4be9e8[_0x7e05('0x24')]+'\x20is\x20not\x20active');}else{_0x4be9e8[_0x7e05('0x47')]='IS_DISACTIVED';ut['logger'](_0x7e05('0x5a'),_0x4be9e8[_0x7e05('0x24')]+'\x20is\x20disactive');}emitCampaignPreview(_0x4be9e8);}}Preview[_0x7e05('0xd')][_0x7e05('0x20')]=function(){var _0x2aaad3=this;setInterval(function(){_0x2aaad3[_0x7e05('0x5b')]();},0x7cf);};Preview[_0x7e05('0xd')][_0x7e05('0x5b')]=function(){var _0x32eef2=this['campaignsPreview'];this[_0x7e05('0x5c')]+=0x1;for(var _0x3332da in _0x32eef2){if(_0x32eef2[_0x7e05('0x5d')](_0x3332da)&&(_0x32eef2[_0x3332da]['dialMethod']===_0x7e05('0x5e')||_0x32eef2[_0x3332da][_0x7e05('0x32')]==='booked')&&_0x32eef2[_0x3332da]['type']==='outbound'){if(this[_0x7e05('0x5c')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x7e05('0x5f')]();}}if(_0x32eef2[_0x7e05('0x5d')](_0x3332da)&&_0x32eef2[_0x3332da][_0x7e05('0x32')]===_0x7e05('0x5e')&&_0x32eef2[_0x3332da][_0x7e05('0x23')]===_0x7e05('0x60')){if(_0x32eef2[_0x3332da][_0x7e05('0x61')]){this[_0x7e05('0x62')](_0x32eef2[_0x3332da]);this[_0x7e05('0x63')](_0x32eef2[_0x3332da]);}else{notSendMessagesQueue(_0x32eef2[_0x3332da]);}}}};Preview['prototype'][_0x7e05('0x64')]=function(_0x45ddb3){var _0x57d624=this;this[_0x7e05('0x10')][_0x7e05('0x65')](function(){if(!_['isNil'](_0x57d624[_0x7e05('0x66')][_0x45ddb3])){loggerAction[_0x7e05('0x67')](_0x7e05('0x68'),_0x45ddb3,_0x7e05('0x69'),_0x57d624[_0x7e05('0x66')][_0x45ddb3]['queue'],_0x7e05('0x6a'),JSON[_0x7e05('0x6b')](_0x57d624[_0x7e05('0x21')][_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x6c')]][_0x7e05('0x57')]),'pTalking:\x20',JSON[_0x7e05('0x6b')](_0x57d624[_0x7e05('0x21')][_0x57d624[_0x7e05('0x66')][_0x45ddb3]['queue']]['pTalking']),JSON[_0x7e05('0x6b')](_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6d')]),JSON[_0x7e05('0x6b')](_['pick'](_0x57d624['actions'][_0x45ddb3],[_0x7e05('0x6e'),_0x7e05('0x6f'),_0x7e05('0x70'),_0x7e05('0x71')])));return ami[_0x7e05('0x72')]({'action':_0x7e05('0x73'),'channel':_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x74')]})[_0x7e05('0x75')](function(_0x4aa819){if(_0x4aa819['message']===_0x7e05('0x76')){setTimeout(function(){if(_0x57d624['actions'][_0x45ddb3]){ut[_0x7e05('0x77')](_0x57d624[_0x7e05('0x21')][_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6c')]],'[clearZombieChannel]');if(_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6d')]===!![]){ut[_0x7e05('0x78')](_0x57d624['campaignsPreview'][_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x6c')]],_0x7e05('0x79'));ut[_0x7e05('0x7a')](_0x7e05('0x7b')+_0x45ddb3,_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x6c')]);}ut[_0x7e05('0x7a')](_0x7e05('0x7c')+_0x45ddb3,_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6c')]);delete _0x57d624['actions'][_0x45ddb3];}},0x2328);}});}});};Preview['prototype'][_0x7e05('0x5f')]=function(){var _0x153b70=this;loggerAction['info']('[action]',_['size'](this['actions']));for(var _0x5e71b1 in this[_0x7e05('0x66')]){if(_0x153b70['actions']['hasOwnProperty'](_0x5e71b1)){_0x153b70[_0x7e05('0x64')](_0x5e71b1);}}};Preview[_0x7e05('0xd')]['recallMe']=function(_0x143262){var _0x104a79=this;rpcDb[_0x7e05('0x7d')](_0x143262['id'],ut[_0x7e05('0x7e')](this['agents']))[_0x7e05('0x7f')](function(_0x240584){if(!_[_0x7e05('0x80')](_0x240584)){for(var _0xab119e=0x0;_0xab119e<_0x240584[_0x7e05('0x81')];_0xab119e+=0x1){if(ut[_0x7e05('0x82')](_0x240584[_0xab119e]['scheduledat'])<_0x143262[_0x7e05('0x83')]*0x3c){if(_0x240584[_0xab119e][_0x7e05('0x84')]&&!_0x240584[_0xab119e]['Agent'][_0x7e05('0x85')]){_0x104a79[_0x7e05('0x86')](_0x240584[_0xab119e]['id'])[_0x7e05('0x7f')](ut[_0x7e05('0x87')](_0x7e05('0x88')))[_0x7e05('0x75')](ut['logger2']('[RecallMe]'));}else{rpcDb[_0x7e05('0x89')](_0x240584[_0xab119e]['id']);}}else{var _0x4900bd=new Action(_0x240584[_0xab119e],_0x143262);_0x4900bd[_0x7e05('0x8a')]=moment()[_0x7e05('0x51')](_0x7e05('0x8b'));_0x143262[_0x7e05('0x8c')]+=0x1;ut[_0x7e05('0x8d')](_0x4900bd,0x17,'RecallInQueue');if(_0x143262[_0x7e05('0x8e')]){rpcDb[_0x7e05('0x8f')](ut[_0x7e05('0x90')](_0x240584[_0xab119e]));rpcDb[_0x7e05('0x91')](_0x4900bd,_0x7e05('0x92'));}else{ut[_0x7e05('0x8d')](_0x4900bd,0x16,_0x7e05('0x93'));rpcDb[_0x7e05('0x91')](_0x4900bd,_0x7e05('0x94'));rpcDb['createCustomerFinal'](_0x4900bd,'[HistoryRecallClose]');}}}}})[_0x7e05('0x75')](ut['logger2'](_0x7e05('0x95')));};Preview[_0x7e05('0xd')][_0x7e05('0x62')]=function(_0x1e9d91){_0x1e9d91[_0x7e05('0x58')]=!![];if(ut[_0x7e05('0x96')](_0x1e9d91[_0x7e05('0x27')])){_0x1e9d91[_0x7e05('0x47')]=_0x7e05('0x97');}else if(!ut['isActive'](_0x1e9d91[_0x7e05('0x61')])){_0x1e9d91['message']='NOT_ACTIVE';}else if(!this[_0x7e05('0x98')](_0x1e9d91[_0x7e05('0x4d')])){if(!this[_0x7e05('0x98')](_0x1e9d91[_0x7e05('0x99')])){_0x1e9d91[_0x7e05('0x47')]=_0x7e05('0x9a');}else{_0x1e9d91[_0x7e05('0x47')]='ACTIVE';}}else{_0x1e9d91['message']=_0x7e05('0x9b');}emitCampaignPreview(_0x1e9d91);};Preview[_0x7e05('0xd')][_0x7e05('0x9c')]=function(_0xaec439,_0x23f9c4,_0x47da1f){var _0x151121=this;var _0x30951b=this[_0x7e05('0x66')][_0x23f9c4];var _0x4baa9c=this[_0x7e05('0x21')][_0x30951b['queue']];var _0x4d3122;if(_0x4baa9c){switch(_0x47da1f){case'1':_0x4baa9c[_0x7e05('0x3c')]+=0x1;_0x30951b[_0x7e05('0x9d')]+=0x1;_0x30951b['countglobal']=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x0,_0x7e05('0x9f'));ami[_0x7e05('0x22')](_0x7e05('0xa0'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xa2')));rpcDb['createCustomerHistory'](_0x30951b,'[callProgressDetectingCustomer][logNoSuch]');if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c['dialGlobalMaxRetry']){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xa6'));}else{if(_0x30951b[_0x7e05('0x9d')]>=_0x4baa9c['dialNoSuchNumberMaxRetry']){rpcDb['createCustomerFinal'](_0x30951b,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x7e05('0xa7')](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0x9d'),_0x4baa9c[_0x7e05('0xa9')]),_0x30951b['unlockAgent'],_0x30951b[_0x7e05('0xaa')]);}}delete this[_0x7e05('0x66')][_0xaec439[_0x7e05('0xab')]];break;case _0x7e05('0xac'):var _0x396a68=moment()[_0x7e05('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x30951b[_0x7e05('0xad')]=_0x396a68;_0x30951b['answertime']=_0x396a68;_0x30951b[_0x7e05('0x6d')]=!![];_0x4baa9c[_0x7e05('0x28')]+=0x1;logger['info'](_0x7e05('0xae'),_0x30951b[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x4baa9c[_0x7e05('0x24')],_0x7e05('0xb1'),_0x4baa9c[_0x7e05('0x28')]);ami['emit'](_0x7e05('0xb2'),ut['buildObj'](_0x30951b,_0x7e05('0xb3'),this['campaignsPreview'][_0x30951b[_0x7e05('0x6c')]]));if(_0x4baa9c[_0x7e05('0xb4')]){ami[_0x7e05('0x22')](_0x7e05('0xb5'),ut[_0x7e05('0xb6')](_0x30951b));}break;case'16':ami['emit'](_0x7e05('0xb7'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xb8'),this[_0x7e05('0x21')][_0x30951b[_0x7e05('0x6c')]]));emitVoiceQueueChannelRemove(ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xb8')));_0x4baa9c[_0x7e05('0x37')]+=0x1;_0x4baa9c[_0x7e05('0x2d')]+=0x1;_0x4baa9c['answered']+=0x1;ut['decrementTalkink'](_0x4baa9c,_0x7e05('0xb9'));_0x30951b['countglobal']=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x4,_0x7e05('0xba'));rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xbb'));rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xbc'));rpcDb[_0x7e05('0xbd')](_0x30951b);_0x4baa9c[_0x7e05('0x2a')]+=_0x30951b['talktime'];_0x4baa9c['sumBillable']+=_0x30951b['talktime'];logger[_0x7e05('0x67')](_0x7e05('0xbe'),_0x30951b[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x4baa9c[_0x7e05('0x24')],_0x7e05('0xb1'),_0x4baa9c[_0x7e05('0x28')]);delete this[_0x7e05('0x66')][_0xaec439['linkedid']];break;case _0x7e05('0xbf'):_0x4baa9c['outboundBusyCallsDay']+=0x1;_0x30951b[_0x7e05('0xc0')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut['logCustomer'](_0x30951b,0x5,'Busy');ami[_0x7e05('0x22')](_0x7e05('0xc2'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xc3')));rpcDb[_0x7e05('0x91')](_0x30951b,'[callProgressDetectingCustomer][logBusy]');if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut['cloneAction'](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xc5'));}else{if(_0x30951b['countbusyretry']>=_0x4baa9c[_0x7e05('0xc6')]){rpcDb['createCustomerFinal'](_0x30951b,_0x7e05('0xc7'));}else{rpcDb[_0x7e05('0xa7')](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xc0'),_0x4baa9c[_0x7e05('0xc8')]),_0x30951b[_0x7e05('0xc9')],_0x30951b['activeContact']);}}break;case'NOANSWER':_0x4baa9c[_0x7e05('0xca')]+=0x1;_0x30951b[_0x7e05('0xcb')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x3,'NoAnswer');ami[_0x7e05('0x22')](_0x7e05('0xcc'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xcd')));rpcDb[_0x7e05('0x91')](_0x30951b,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,'Global');rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xce'));}else{if(_0x30951b[_0x7e05('0xcb')]>=_0x4baa9c[_0x7e05('0xcf')]){rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xd0'));}else{rpcDb['rescheduleContact'](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xcb'),_0x4baa9c[_0x7e05('0xd1')]),_0x30951b['unlockAgent'],_0x30951b[_0x7e05('0xaa')]);}}break;case'CONGESTION':_0x4baa9c[_0x7e05('0xd2')]+=0x1;_0x30951b[_0x7e05('0xd3')]+=0x1;_0x30951b['countglobal']=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x8,_0x7e05('0xd4'));ami[_0x7e05('0x22')](_0x7e05('0xd5'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xd6')));rpcDb['createCustomerHistory'](_0x30951b,_0x7e05('0xd7'));if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xd8'));}else{if(_0x30951b['countcongestionretry']>=_0x4baa9c['dialCongestionMaxRetry']){rpcDb['createCustomerFinal'](_0x30951b,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xd3'),_0x4baa9c[_0x7e05('0xc8')]),_0x30951b[_0x7e05('0xc9')],_0x30951b['activeContact']);}}break;case _0x7e05('0xd9'):_0x4baa9c[_0x7e05('0x3e')]+=0x1;_0x30951b[_0x7e05('0xda')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x14,'AgentReject');ami[_0x7e05('0x22')](_0x7e05('0xdb'),ut['buildObj'](_0x30951b,_0x7e05('0xdc')));rpcDb['createCustomerHistory'](_0x30951b,_0x7e05('0xdd'));if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0x14,_0x7e05('0xde'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xdf'));}else{if(_0x30951b['countagentrejectretry']>=_0x4baa9c[_0x7e05('0xe0')]){rpcDb['createCustomerFinal'](_0x30951b,_0x7e05('0xdf'));}else{rpcDb[_0x7e05('0xa7')](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xda'),_0x4baa9c[_0x7e05('0xe1')]),_0x30951b[_0x7e05('0xc9')],_0x30951b[_0x7e05('0xaa')]);}}break;case'ABANDONED':_0x4baa9c['outboundAbandonedCallsDay']+=0x1;_0x30951b[_0x7e05('0xe2')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0xb,'Abandoned');rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xe3'));if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut['cloneAction'](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xe3'));}else{if(_0x30951b[_0x7e05('0xe4')]>=_0x4baa9c['dialAbandonedMaxRety']){rpcDb[_0x7e05('0xa5')](_0x30951b,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x7e05('0xa7')](ut['scheduledAt'](_0x30951b,'countabandonedretry',_0x4baa9c[_0x7e05('0xe5')]),_0x30951b[_0x7e05('0xc9')],_0x30951b[_0x7e05('0xaa')]);}}break;case'18':_0x4baa9c[_0x7e05('0x3f')]+=0x1;_0x30951b[_0x7e05('0xe6')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut['totalGlobal'](_0x30951b);ut['logCustomer'](_0x30951b,0x12,_0xaec439[_0x7e05('0xe7')]||_0xaec439[_0x7e05('0xe8')]);ami[_0x7e05('0x22')](_0x7e05('0xe9'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xea')));rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xeb'));if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xeb'));}else{rpcDb['createCustomerFinal'](_0x30951b,_0x7e05('0xeb'));}delete this['actions'][_0xaec439['linkedid']];break;case'19':_0x4baa9c[_0x7e05('0x3f')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut['totalGlobal'](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x13,_0xaec439[_0x7e05('0xe7')]||_0xaec439[_0x7e05('0xe8')]);ami['emit'](_0x7e05('0xe9'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xea')));rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xec'));if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb['createCustomerFinal'](_0x4d3122,_0x7e05('0xec'));}else{rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xec'));}delete this[_0x7e05('0x66')][_0xaec439['linkedid']];break;default:if(_0x30951b[_0x7e05('0x6d')]){ut[_0x7e05('0x78')](_0x4baa9c,_0x7e05('0xed'));ut[_0x7e05('0x7a')](_0x7e05('0xee')+_0x4baa9c['name'],_0xaec439);}_0x4baa9c[_0x7e05('0x3f')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut['totalGlobal'](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0xc,_0xaec439[_0x7e05('0xe7')]||_0xaec439['dialstatus']);rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xef'));if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xf0'));}delete this['actions'][_0xaec439[_0x7e05('0xab')]];}if(!(_0x30951b[_0x7e05('0x6d')]&&_0x47da1f==='16')){ut['updateOriginated'](_0x4baa9c,_0x7e05('0xf1'));logger[_0x7e05('0x67')](_0x7e05('0xf2'),_0x30951b[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x4baa9c[_0x7e05('0x24')],_0x7e05('0x6a'),_0x4baa9c[_0x7e05('0x57')]);}if(_0x47da1f!==_0x7e05('0xac')){delete this[_0x7e05('0x66')][_0xaec439[_0x7e05('0xab')]];delete this['actions'][_0xaec439['destlinkedid']];}}};Preview['prototype'][_0x7e05('0xf3')]=function(_0x477969,_0x31ddf4,_0x49d050){if(_[_0x7e05('0xf4')](_0x31ddf4)&&_0x7e05('0xf5')!==typeof _0x31ddf4){return;}if(_[_0x7e05('0xf4')](_0x49d050)&&'object'!==typeof _0x49d050){return;}switch(_0x49d050[_0x7e05('0xf6')]){case'0':ut[_0x7e05('0xf7')](_0x477969,0x0,'NoSuchNumber');rpcDb['createAgentHistory'](_0x477969,_0x7e05('0xf8'));break;case'3':ut[_0x7e05('0xf7')](_0x477969,0x3,_0x7e05('0xf9'));rpcDb[_0x7e05('0xfa')](_0x477969,_0x7e05('0xfb'));break;case'5':ut['logAgent'](_0x477969,0x5,_0x7e05('0xfc'));rpcDb[_0x7e05('0xfa')](_0x477969,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x7e05('0xf7')](_0x477969,0x8,_0x7e05('0xd4'));rpcDb['createAgentHistory'](_0x477969,_0x7e05('0xfd'));break;case'22':ut['logAgent'](_0x477969,0x16,'AnswerAGI');rpcDb[_0x7e05('0xfa')](_0x477969,_0x7e05('0xfe'));break;default:ut[_0x7e05('0xf7')](_0x477969,0xc,_0x49d050[_0x7e05('0xf6')]);rpcDb[_0x7e05('0xfa')](_0x477969,_0x7e05('0xfd'));}ut[_0x7e05('0x77')](_0x31ddf4,_0x7e05('0xff'));logger[_0x7e05('0x67')](_0x7e05('0x100'),_0x477969[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x31ddf4[_0x7e05('0x24')],_0x7e05('0x6a'),_0x31ddf4[_0x7e05('0x57')]);delete this[_0x7e05('0x66')][_0x477969[_0x7e05('0xaf')]];};Preview[_0x7e05('0xd')][_0x7e05('0x101')]=function(_0xd6e628,_0x1955f2,_0x52b527,_0x119f2a,_0x3e3081){var _0x1caa67=this;return new BPromise(function(_0x2850fe,_0x312368){if(_[_0x7e05('0x80')](_0x1955f2)||_[_0x7e05('0x80')](_0x1955f2['Contact'])||_[_0x7e05('0x80')](_0x1955f2[_0x7e05('0x102')][_0x7e05('0x103')])||_['isNil'](_0x1955f2[_0x7e05('0x70')])){_0x312368(ut['message'](_0x7e05('0x104'),_0x119f2a,_0x3e3081));return;}var _0x403271=uuid['v4']();var _0x13ab15=_0x1caa67[_0x7e05('0x21')][_0x1955f2[_0x7e05('0x69')][_0x7e05('0x24')]];var _0xdb53ce=_0x52b527?_0x1caa67[_0x7e05('0x13')][_0x52b527]['id']:undefined;_0x1caa67[_0x7e05('0x66')][_0x403271]=new Action(_0x1955f2,_0x13ab15,_0x403271,_0x52b527,_0xdb53ce);var _0x12c893=_0x1caa67['actions'][_0x403271];_0x12c893[_0x7e05('0xc9')]=_0x119f2a;_0x12c893[_0x7e05('0xaa')]=_0x3e3081;_0x12c893[_0x7e05('0x105')]=_0x52b527;if(_[_0x7e05('0x106')](_0xd6e628)){_0x1caa67[_0x7e05('0x107')](_0x12c893,_0x13ab15,_0x1955f2,_0x52b527)['then'](function(_0x5c7941){logger[_0x7e05('0x67')](_0x7e05('0x108'),_0x7e05('0x109')+_0x12c893[_0x7e05('0x6c')]+_0x7e05('0x10a')+_0x12c893[_0x7e05('0x10b')],JSON['stringify'](_0x5c7941));ami[_0x7e05('0x22')](_0x7e05('0x10c'),ut[_0x7e05('0xa1')](_0x12c893,_0x7e05('0x10d'),_0x1caa67[_0x7e05('0x21')][_0x12c893[_0x7e05('0x6c')]]));_0x2850fe(ut[_0x7e05('0x47')](_0x7e05('0x10e')));})[_0x7e05('0x75')](function(_0xca6ad3){ut[_0x7e05('0x59')](_0x7e05('0x10f'),_0xca6ad3);_0x312368(ut['message'](_0x7e05('0x110'),_0x119f2a,_0x3e3081));});}else{_0x13ab15['outboundBlacklistCallsDay']+=0x1;ut[_0x7e05('0x111')](_0x12c893);rpcDb[_0x7e05('0x112')](_0x12c893,'[Blacklist][error]');delete _0x1caa67['actions'][_0x403271];_0x312368(ut['message']('Contact\x20in\x20black\x20List',_0x119f2a,_0x3e3081));}});};Preview[_0x7e05('0xd')][_0x7e05('0x98')]=function(_0x234937){return!_['isNil'](_0x234937)&&!_[_0x7e05('0x80')](_0x234937[_0x7e05('0x24')])&&!_[_0x7e05('0x80')](_0x234937[_0x7e05('0x4e')])&&_0x234937[_0x7e05('0x4e')]&&!_[_0x7e05('0x80')](this['trunks'][util[_0x7e05('0x51')](_0x7e05('0x113'),_0x234937['name'])])&&!_[_0x7e05('0x80')](this[_0x7e05('0x12')][util[_0x7e05('0x51')](_0x7e05('0x113'),_0x234937[_0x7e05('0x24')])][_0x7e05('0x73')])&&(this[_0x7e05('0x12')][util[_0x7e05('0x51')]('SIP/%s',_0x234937[_0x7e05('0x24')])]['status']===_0x7e05('0x114')||this[_0x7e05('0x12')][util['format']('SIP/%s',_0x234937[_0x7e05('0x24')])][_0x7e05('0x73')]===_0x7e05('0x115'));};Preview[_0x7e05('0xd')][_0x7e05('0x86')]=function(_0x2cb86e,_0x36890c){var _0x3e296a=this;return new BPromise(function(_0x4e785d,_0x4b57b0){_0x3e296a['execRun'](_0x2cb86e,_0x36890c)[_0x7e05('0x7f')](function(_0x1b86b7){_0x4e785d(_[_0x7e05('0x116')](_0x1b86b7,[_0x7e05('0x47')]));})[_0x7e05('0x75')](function(_0x22e764){if(_0x22e764['unlock']){rpcDb[_0x7e05('0x117')](_0x2cb86e);}if(_0x22e764[_0x7e05('0x4e')]){rpcDb[_0x7e05('0x89')](_0x2cb86e);}_0x4b57b0(_[_0x7e05('0x116')](_0x22e764,['message']));});});};Preview[_0x7e05('0xd')][_0x7e05('0x118')]=function(_0x4cfd41,_0x1ecbcb){var _0x40c182=this;return new BPromise(function(_0xb8332b,_0x25cc5c){var _0x152453,_0x1398d7;rpcDb[_0x7e05('0x119')](_0x4cfd41)[_0x7e05('0x7f')](function(_0x3b4f40){if(!_[_0x7e05('0x80')](_0x3b4f40[0x0])){_0x1398d7=_0x3b4f40[0x0][_0x7e05('0x11a')]?![]:!![];_0x152453=_0x3b4f40[0x0][_0x7e05('0x11a')]?!![]:![];_0x152453=_0x1ecbcb?!![]:_0x152453;}var _0x5d0c7a=_0x40c182['validateContact'](_0x3b4f40);if(_0x5d0c7a[_0x7e05('0x11b')]){rpcDb[_0x7e05('0x11c')](_['pick'](_0x3b4f40[0x0],[_0x7e05('0x70'),'Contact.phone']))['then'](function(_0x33d055){_0x40c182['checkInBlack'](_0x33d055,_0x3b4f40[0x0],_0x1ecbcb,_0x1398d7,_0x152453)[_0x7e05('0x7f')](function(_0x2410fb){_0xb8332b(_0x2410fb);})[_0x7e05('0x75')](function(_0x518cdf){_0x25cc5c(_0x518cdf);});})[_0x7e05('0x75')](function(_0x405978){ut[_0x7e05('0x59')](_0x7e05('0x11d'),_0x405978);_0x25cc5c(ut[_0x7e05('0x47')](_0x7e05('0x11e'),_0x1398d7,_0x152453));});}else{_0x25cc5c(ut['message'](_0x5d0c7a['message'],_0x1398d7,_0x152453));}})['catch'](function(_0x49121f){ut['logger'](_0x7e05('0x11f'),_0x49121f);_0x25cc5c(ut[_0x7e05('0x47')](_0x7e05('0x11e'),![],!![]));});});};Preview['prototype'][_0x7e05('0x120')]=function(_0x3da99b){if(_[_0x7e05('0x80')](_0x3da99b)||_[_0x7e05('0x106')](_0x3da99b)||!_['isNil'](_0x3da99b[0x0]['Agent'])&&_[_0x7e05('0x80')](_0x3da99b[0x0][_0x7e05('0x84')]['name'])){ut[_0x7e05('0x59')](_0x7e05('0x121'),_0x3da99b);return{'isValid':![],'message':_0x7e05('0x122')};}var _0x43a0af=this[_0x7e05('0x21')][_0x3da99b[0x0][_0x7e05('0x69')][_0x7e05('0x24')]];_0x43a0af[_0x7e05('0x47')]=_0x7e05('0x9b');if(_[_0x7e05('0x80')](_0x43a0af)){ut[_0x7e05('0x59')](_0x7e05('0x123'),_0x43a0af);return{'isValid':![],'message':_0x7e05('0x124')};}if(!this[_0x7e05('0x98')](_0x43a0af['Trunk'])){ut[_0x7e05('0x59')](_0x7e05('0x125'),_0x7e05('0x126')+_0x43a0af[_0x7e05('0x24')]+_0x7e05('0x127'));if(!this['isTrunkReachable'](_0x43a0af['TrunkBackup'])){ut[_0x7e05('0x59')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x43a0af['name']+_0x7e05('0x128'));return{'isValid':![],'message':'Trunk\x20not\x20work'};}}if(!ut[_0x7e05('0x129')](_0x43a0af['dialActive'])){ut[_0x7e05('0x59')](_0x7e05('0x12a'),_0x43a0af[_0x7e05('0x24')]+'\x20Not\x20Active');return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x43a0af[_0x7e05('0x24')]+_0x7e05('0x12b')};}return{'isValid':!![],'message':_0x7e05('0x12c')};};Preview[_0x7e05('0xd')][_0x7e05('0x107')]=function(_0x1690eb,_0x2fc749,_0x22b11e,_0xbabcd8){var _0xfa46e6=this;return new BPromise(function(_0x34b5b2,_0x5238ae){var _0x83920d=_0x1690eb[_0x7e05('0xaf')];var _0x2443c4=_0xfa46e6[_0x7e05('0x98')](_0x2fc749[_0x7e05('0x4d')])?util['format'](_0x7e05('0x12d'),_0x2fc749[_0x7e05('0x4d')][_0x7e05('0x24')],_['isNil'](_0x2fc749['dialPrefix'])?'':_0x2fc749[_0x7e05('0x35')][_0x7e05('0x12e')]()||'',_0x2fc749[_0x7e05('0x12f')]>0x0?_0x22b11e[_0x7e05('0x102')]['phone'][_0x7e05('0x130')](_0x2fc749[_0x7e05('0x12f')]):_0x22b11e[_0x7e05('0x102')]['phone']):util[_0x7e05('0x51')]('SIP/%s/%s%s',_['isNil'](_0x2fc749['TrunkBackup'])?_0x2fc749['Trunk'][_0x7e05('0x24')]:_0x2fc749[_0x7e05('0x99')][_0x7e05('0x24')],_['isNil'](_0x2fc749['dialPrefix'])?'':_0x2fc749[_0x7e05('0x35')][_0x7e05('0x12e')]()||'',_0x2fc749[_0x7e05('0x12f')]>0x0?_0x22b11e[_0x7e05('0x102')]['phone']['substring'](_0x2fc749[_0x7e05('0x12f')]):_0x22b11e[_0x7e05('0x102')][_0x7e05('0x103')]);var _0x3b014d=_0xfa46e6[_0x7e05('0x98')](_0x2fc749[_0x7e05('0x4d')])?ut[_0x7e05('0x131')](_0x2fc749[_0x7e05('0x4d')][_0x7e05('0x4f')],_0x2fc749[_0x7e05('0x132')],_0x2fc749[_0x7e05('0x133')]>0x0?ut[_0x7e05('0x134')](_0x2fc749[_0x7e05('0x33')],_0x2fc749[_0x7e05('0x133')]):_0x2fc749[_0x7e05('0x33')]):ut[_0x7e05('0x131')](_[_0x7e05('0x80')](_0x2fc749[_0x7e05('0x99')])?_0x2fc749['Trunk'][_0x7e05('0x4f')]:_0x2fc749['TrunkBackup']['callerid'],_0x2fc749[_0x7e05('0x132')],_0x2fc749[_0x7e05('0x133')]>0x0?ut[_0x7e05('0x134')](_0x2fc749['dialOriginateCallerIdNumber'],_0x2fc749[_0x7e05('0x133')]):_0x2fc749[_0x7e05('0x33')]);if(_0x3b014d){_0x1690eb[_0x7e05('0x135')]=ut['extractCalleridName'](_0x3b014d);_0x1690eb[_0x7e05('0x136')]=ut[_0x7e05('0x137')](_0x3b014d);}var _0x34364f=ut[_0x7e05('0x138')](_0x2fc749,_0x22b11e,_0x2443c4,_0x3b014d,_0x83920d,_0x1690eb);_['merge'](_0x1690eb,ut[_0x7e05('0x139')](_0x34364f));_0x1690eb[_0x7e05('0x8a')]=moment()['format'](_0x7e05('0x8b'));ami[_0x7e05('0x72')](ut['variablesAction'](_0x1690eb,_0x2fc749,_0x34364f,_0x1690eb[_0x7e05('0xaa')],_0xbabcd8))[_0x7e05('0x7f')](function(_0x131ddd){var _0x7c9a45=_0x1690eb[_0x7e05('0x13a')];if(!_[_0x7e05('0x80')](_0x7c9a45)){if(!_['isNil'](_0xfa46e6[_0x7e05('0x13')][_0x7c9a45])){_0xfa46e6[_0x7e05('0x13')][_0x7c9a45][_0x7e05('0x13b')]=_0x1690eb[_0x7e05('0x13c')];emit(util[_0x7e05('0x51')](_0x7e05('0x13d'),_0xfa46e6[_0x7e05('0x13')][_0x7c9a45][_0x7e05('0x24')]),'user:agentconnect',{'destaccountcode':_0xfa46e6['agents'][_0x7c9a45][_0x7e05('0x13e')],'destconnectedlinenum':_0x1690eb['calleridnum']});}}_0x2fc749[_0x7e05('0x57')]+=0x1;logger[_0x7e05('0x67')](_0x7e05('0x13f'),_0x83920d,_0x7e05('0xb0'),_0x2fc749[_0x7e05('0x24')],_0x7e05('0x6a'),_0x2fc749['originated']);_0x34b5b2(_0x131ddd);})['catch'](function(_0x470244){ut[_0x7e05('0xf7')](_0x1690eb,0xe,_0x7e05('0x140'));rpcDb['createAgentHistory'](_0x1690eb,'[originateFailure][logOriginateFailure]');_0x5238ae(_0x470244);});});};Preview[_0x7e05('0xd')][_0x7e05('0x1b')]=function(_0x59cdfb){if(this[_0x7e05('0x66')][_0x59cdfb[_0x7e05('0xab')]]){this[_0x7e05('0x66')][_0x59cdfb['linkedid']][_0x7e05('0x74')]=_0x59cdfb[_0x7e05('0x74')];}};Preview['prototype']['syncOriginateResponse']=function(_0x51c038){var _0x32ee09=this;var _0x39ea2b=this[_0x7e05('0x66')][_0x51c038[_0x7e05('0x141')]];if(_0x39ea2b){if(_0x39ea2b['lookAgent']&&this[_0x7e05('0x13')][_0x39ea2b[_0x7e05('0x105')]]){ut[_0x7e05('0x142')](_0x39ea2b,this[_0x7e05('0x13')][_0x39ea2b['lookAgent']]['name'],this[_0x7e05('0x13')][_0x39ea2b[_0x7e05('0x105')]]['id']);}var _0x46b69=_[_0x7e05('0x143')](_0x39ea2b);_0x46b69[_0x7e05('0xad')]=moment()['format'](_0x7e05('0x8b'));var _0x2fffef=_0x32ee09[_0x7e05('0x21')][_0x39ea2b[_0x7e05('0x6c')]];if(ut[_0x7e05('0x144')](_0x51c038[_0x7e05('0x145')])){if(_0x39ea2b['unlockAgent']){rpcDb['unlockContact'](_0x39ea2b[_0x7e05('0x10b')]);}if(_0x39ea2b[_0x7e05('0xaa')]){rpcDb[_0x7e05('0x89')](_0x39ea2b['idContact']);}ami[_0x7e05('0x22')]('custom:agentringnoanswer',ut['buildObj'](_0x39ea2b,_0x7e05('0x146'),this['campaignsPreview'][_0x39ea2b['queue']]));this[_0x7e05('0xf3')](_0x46b69,_0x2fffef,_0x51c038);}else{_0x39ea2b[_0x7e05('0x8a')]=moment()[_0x7e05('0x51')](_0x7e05('0x8b'));ut[_0x7e05('0xf7')](_0x46b69,0x4,'Answer');rpcDb[_0x7e05('0xfa')](_0x46b69,'[callProgressDetectingAgent][logAnswer]');}}};Preview['prototype'][_0x7e05('0x16')]=function(_0x1acb7b){var _0x3e6283=this;var _0x4dcbae=this[_0x7e05('0x66')][_0x1acb7b['linkedid']];var _0x3e739f;if(_0x4dcbae){_0x3e739f=this[_0x7e05('0x21')][_0x4dcbae[_0x7e05('0x6c')]];logger['info'](_0x7e05('0x147'),_0x1acb7b['linkedid'],_0x7e05('0xb0'),_0x3e739f[_0x7e05('0x24')],'pTalking:\x20',_0x3e739f[_0x7e05('0x28')]);}if(this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]]&&_0x1acb7b[_0x7e05('0xab')]!==_0x1acb7b[_0x7e05('0xaf')]){if(_0x1acb7b[_0x7e05('0x148')]==='16'&&this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]]['dialAnswer']){this[_0x7e05('0x9c')](_0x1acb7b,_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')]);}else if(this['actions'][_0x1acb7b[_0x7e05('0xab')]][_0x7e05('0x6d')]){logger[_0x7e05('0x67')](_0x7e05('0x149'),_0x1acb7b['linkedid'],_0x1acb7b[_0x7e05('0x148')],'\x20Queue',_0x3e739f[_0x7e05('0x24')],_0x7e05('0xb1'),_0x3e739f[_0x7e05('0x28')]);this[_0x7e05('0x9c')](_0x1acb7b,_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')]);}}else if(_0x4dcbae&&_[_0x7e05('0x80')](_0x4dcbae['statedesc'])&&_0x3e739f[_0x7e05('0x14a')]&&_0x1acb7b[_0x7e05('0xab')]===_0x1acb7b[_0x7e05('0xaf')]&&_['isNil'](_0x1acb7b[_0x7e05('0xf6')])&&_0x1acb7b[_0x7e05('0x148')]==='16'&&_0x1acb7b[_0x7e05('0x14b')]==='6'&&_[_0x7e05('0xf4')](_0x4dcbae[_0x7e05('0x14c')])){if(_0x4dcbae[_0x7e05('0xc9')]){rpcDb[_0x7e05('0x117')](_0x4dcbae[_0x7e05('0x10b')]);}if(_0x4dcbae[_0x7e05('0xaa')]){rpcDb[_0x7e05('0x89')](_0x4dcbae[_0x7e05('0x10b')]);}_0x1acb7b[_0x7e05('0xf6')]='22';this['callProgressDetectingAgent'](_0x4dcbae,_0x3e739f,_0x1acb7b);}else if(_0x4dcbae&&_0x4dcbae['transfer']){if(_0x1acb7b[_0x7e05('0x148')]==='16'&&this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]][_0x7e05('0x6d')]){logger[_0x7e05('0x67')](_0x7e05('0x14d'),_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')],_0x7e05('0xb0'),_0x3e739f['name'],_0x7e05('0xb1'),_0x3e739f[_0x7e05('0x28')]);this[_0x7e05('0x9c')](_0x1acb7b,_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')]);}else if(this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]][_0x7e05('0x6d')]){logger[_0x7e05('0x67')](_0x7e05('0x149'),_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')],_0x7e05('0xb0'),_0x3e739f[_0x7e05('0x24')],'pTalking:\x20',_0x3e739f[_0x7e05('0x28')]);this['callProgressDetectingCustomer'](_0x1acb7b,_0x1acb7b['linkedid'],_0x1acb7b[_0x7e05('0x148')]);}}};Preview[_0x7e05('0xd')][_0x7e05('0x19')]=function(_0x2ec26c){if(this[_0x7e05('0x66')][_0x2ec26c['destlinkedid']]&&_0x2ec26c[_0x7e05('0x14e')]!==_0x2ec26c[_0x7e05('0x14f')]){this[_0x7e05('0x9c')](_0x2ec26c,_0x2ec26c[_0x7e05('0x14e')],_0x2ec26c[_0x7e05('0xe8')]);}};Preview[_0x7e05('0xd')]['syncHangupRequest']=function(_0x3ded35){if(this[_0x7e05('0x66')][_0x3ded35['linkedid']]&&_0x3ded35['linkedid']!==_0x3ded35[_0x7e05('0xaf')]&&!this['actions'][_0x3ded35[_0x7e05('0xab')]][_0x7e05('0x6d')]){if(_0x3ded35[_0x7e05('0x148')]==='1'){this[_0x7e05('0x9c')](_0x3ded35,_0x3ded35[_0x7e05('0xab')],_0x3ded35[_0x7e05('0x148')]);}}};Preview[_0x7e05('0xd')]['addVariable']=function(_0x3b73cc,_0x586ea1,_0x39e484){if(this[_0x7e05('0x66')][_0x3b73cc]){if(_[_0x7e05('0x80')](this[_0x7e05('0x66')][_0x3b73cc][_0x7e05('0x150')])){this[_0x7e05('0x66')][_0x3b73cc][_0x7e05('0x150')]={};}this['actions'][_0x3b73cc][_0x7e05('0x150')][_0x586ea1]=_0x39e484;}};Preview[_0x7e05('0xd')][_0x7e05('0x151')]=function(_0xbeca39){try{if(!_[_0x7e05('0x80')](_0xbeca39)){if(ut['filterKey'](_[_0x7e05('0x152')](_0xbeca39['variable'])[0x0])){this['addVariable'](_0xbeca39['uniqueid'],_[_0x7e05('0x152')](_0xbeca39[_0x7e05('0x153')])[0x0],_0xbeca39[_0x7e05('0x154')]);}}}catch(_0x1692e2){logger[_0x7e05('0x155')](_0x7e05('0x156'),util['inspect'](_0x1692e2,{'showHidden':![],'depth':null}));}};Preview[_0x7e05('0xd')][_0x7e05('0x1d')]=function(_0x264947){if(_0x264947){if(this[_0x7e05('0x66')][_0x264947[_0x7e05('0x157')]]){this['actions'][_0x264947[_0x7e05('0x157')]][_0x7e05('0x14c')]=!![];}}};Preview[_0x7e05('0xd')]['syncBlindTransfer']=function(_0x146112){if(_0x146112){if(this[_0x7e05('0x66')][_0x146112['transfererlinkedid']]){this['actions'][_0x146112['transfererlinkedid']]['transfer']=!![];}}};module['exports']=Preview;
\ No newline at end of file
index 9b254e4..2727ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd443=['context','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','inspect','then','createHistory','catch','[createHistory]\x20','resolve','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','connectedlinename','membername'];(function(_0x1d2494,_0x43c13a){var _0x3320f3=function(_0x2de81f){while(--_0x2de81f){_0x1d2494['push'](_0x1d2494['shift']());}};_0x3320f3(++_0x43c13a);}(_0xd443,0x1c6));var _0x3d44=function(_0x439e70,_0x5be4a1){_0x439e70=_0x439e70-0x0;var _0x2598d0=_0xd443[_0x439e70];return _0x2598d0;};'use strict';var util=require(_0x3d44('0x0'));var BPromise=require(_0x3d44('0x1'));var logger=require('../../../config/logger')(_0x3d44('0x2'));var _=require(_0x3d44('0x3'));var cmHopper=require(_0x3d44('0x4'));var cmHopperFinal=require(_0x3d44('0x5'));var cmHopperHistory=require(_0x3d44('0x6'));var cmHopperBlack=require(_0x3d44('0x7'));var voiceQueueRt=require(_0x3d44('0x8'));var agentReportPreview=require(_0x3d44('0x9'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x450dd2){return function(_0x5cdf2a){logger['error'](_0x450dd2,util[_0x3d44('0xa')](_0x5cdf2a,{'showHidden':![],'depth':null}));};}function create(_0x34239a){return BPromise['resolve']()[_0x3d44('0xb')](cmHopperHistory[_0x3d44('0xc')](_0x34239a))[_0x3d44('0xd')](loggerCatch(_0x3d44('0xe')));}function createAgent(_0x4617e6){return BPromise[_0x3d44('0xf')]()['then'](agentReportPreview[_0x3d44('0xc')](_0x4617e6))[_0x3d44('0xd')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x11a6f4){return BPromise['resolve']()[_0x3d44('0xb')](cmHopper['moveContactManagedDialer'](_0x11a6f4,!![]))[_0x3d44('0xd')](loggerCatch(_0x3d44('0x10')));}exports[_0x3d44('0x11')]=function(_0x92743a){return BPromise['resolve']()[_0x3d44('0xb')](cmHopperBlack[_0x3d44('0x11')](_0x92743a))[_0x3d44('0xd')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x3d44('0x12')]=function(_0x227e70){return BPromise['resolve']()['then'](cmHopper[_0x3d44('0x12')](_0x227e70))['catch'](loggerCatch(_0x3d44('0x13')));};exports[_0x3d44('0xc')]=function(_0x7b7224,_0x5ed349){create(_0x7b7224)[_0x3d44('0xd')](loggerCatch(_0x5ed349));moveContact(_0x7b7224)[_0x3d44('0xd')](loggerCatch(_0x5ed349));};exports[_0x3d44('0x14')]=function(_0x193c88,_0x9fe1){createAgent(_0x193c88)[_0x3d44('0xd')](loggerCatch(_0x9fe1));};exports[_0x3d44('0x15')]=function(_0x2020a9,_0x80d178){create(_0x2020a9)['catch'](loggerCatch(_0x80d178));};exports[_0x3d44('0x16')]=function(_0x44d495,_0x59ec21){moveContact(_0x44d495)[_0x3d44('0xd')](loggerCatch(_0x59ec21));};exports[_0x3d44('0x17')]=function(_0x57a733,_0x8dfb3f,_0x218691){if(_0x8dfb3f){_0x57a733[_0x3d44('0x18')]=null;}if(_0x218691){_0x57a733[_0x3d44('0x19')]=![];}return BPromise[_0x3d44('0xf')]()[_0x3d44('0xb')](cmHopper[_0x3d44('0x17')](_0x57a733))['catch'](loggerCatch('[rescheduleContact]\x20'));};exports[_0x3d44('0x1a')]=function(_0x44a532){return BPromise['resolve']()[_0x3d44('0xb')](cmHopper[_0x3d44('0x1a')](_0x44a532))[_0x3d44('0xd')](loggerCatch('[countReScheduled]\x20'));};exports[_0x3d44('0x1b')]=function(_0x3de555){return BPromise[_0x3d44('0xf')]()[_0x3d44('0xb')](cmHopper[_0x3d44('0x1b')]({'UserId':null},_0x3de555,0x1))[_0x3d44('0xd')](loggerCatch(_0x3d44('0x1c')));};exports[_0x3d44('0x1d')]=function(_0x5539b7){return BPromise['resolve']()[_0x3d44('0xb')](cmHopper['unlockContact']({'active':![]},_0x5539b7,0x1))['catch'](loggerCatch('[activeContact]\x20'));};exports[_0x3d44('0x1e')]=function(_0x258072){var _0x46e458={};_0x46e458[_0x3d44('0x1f')]=_0x258072['type'];_0x46e458[_0x3d44('0x20')]=_0x258072[_0x3d44('0x20')];_0x46e458[_0x3d44('0x21')]=_0x258072[_0x3d44('0x21')];_0x46e458[_0x3d44('0x22')]=_0x258072[_0x3d44('0x22')];_0x46e458[_0x3d44('0x23')]=_0x258072[_0x3d44('0x23')];_0x46e458[_0x3d44('0x24')]=_0x258072[_0x3d44('0x25')];_0x46e458['queuecallerleaveAt']=_0x258072[_0x3d44('0x25')];_0x46e458[_0x3d44('0x26')]=0x1;_0x46e458['queuecallercompleteAt']=_0x258072['endtime'];_0x46e458[_0x3d44('0x27')]=_0x258072[_0x3d44('0x28')];_0x46e458[_0x3d44('0x29')]='from-sip';_0x46e458[_0x3d44('0x2a')]=_0x3d44('0x2b');_0x46e458[_0x3d44('0x2c')]=0x0;_0x46e458[_0x3d44('0x2d')]=0x1;_0x46e458[_0x3d44('0x2e')]=_0x258072[_0x3d44('0x28')];_0x46e458[_0x3d44('0x2f')]=_0x3d44('0x30');return BPromise[_0x3d44('0xf')]()[_0x3d44('0xb')](voiceQueueReport[_0x3d44('0x31')](_0x46e458))[_0x3d44('0xd')](loggerCatch(_0x3d44('0x32')));};exports[_0x3d44('0x33')]=function(_0x4d6438,_0x36270b){return BPromise['resolve']()[_0x3d44('0xb')](cmHopper[_0x3d44('0x33')](_0x4d6438,_0x36270b))[_0x3d44('0xd')](loggerCatch(_0x3d44('0x34')));};exports[_0x3d44('0x35')]=function(_0x95dab3){return BPromise[_0x3d44('0xf')]()[_0x3d44('0xb')](cmHopper[_0x3d44('0x17')](_0x95dab3,!![],!![]))[_0x3d44('0xd')](loggerCatch(_0x3d44('0x36')));};
\ No newline at end of file
+var _0x2b99=['type','uniqueid','calleridnum','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercomplete','queuecallercompleteAt','membername','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','catch','[createHistory]\x20','createHistory','moveContactManagedDialer','[moveContactManagedDialer]\x20','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x2b99,0x179));var _0x92b9=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x2b99[_0x16d10f];return _0x50c823;};'use strict';var util=require(_0x92b9('0x0'));var BPromise=require(_0x92b9('0x1'));var logger=require(_0x92b9('0x2'))(_0x92b9('0x3'));var _=require(_0x92b9('0x4'));var cmHopper=require(_0x92b9('0x5'));var cmHopperFinal=require(_0x92b9('0x6'));var cmHopperHistory=require(_0x92b9('0x7'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x92b9('0x8'));var agentReportPreview=require(_0x92b9('0x9'));var voiceQueueReport=require(_0x92b9('0xa'));function loggerCatch(_0x3fb596){return function(_0xaefc61){logger[_0x92b9('0xb')](_0x3fb596,util[_0x92b9('0xc')](_0xaefc61,{'showHidden':![],'depth':null}));};}function create(_0x1b7e97){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopperHistory['createHistory'](_0x1b7e97))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x10')));}function createAgent(_0x2cf7cd){return BPromise['resolve']()[_0x92b9('0xe')](agentReportPreview[_0x92b9('0x11')](_0x2cf7cd))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x10')));}function moveContact(_0x18f61a){return BPromise['resolve']()[_0x92b9('0xe')](cmHopper[_0x92b9('0x12')](_0x18f61a,!![]))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x13')));}exports['checkIsBlackList']=function(_0x54aec7){return BPromise[_0x92b9('0xd')]()['then'](cmHopperBlack['checkIsBlackList'](_0x54aec7))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x14')));};exports['getContactPreview']=function(_0x3a8460){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x15')](_0x3a8460))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x16')));};exports[_0x92b9('0x11')]=function(_0x185037,_0x4ac617){create(_0x185037)['catch'](loggerCatch(_0x4ac617));moveContact(_0x185037)[_0x92b9('0xf')](loggerCatch(_0x4ac617));};exports[_0x92b9('0x17')]=function(_0x661dfc,_0x5dcb3b){createAgent(_0x661dfc)['catch'](loggerCatch(_0x5dcb3b));};exports['createCustomerHistory']=function(_0x418ce2,_0x2dac18){create(_0x418ce2)[_0x92b9('0xf')](loggerCatch(_0x2dac18));};exports[_0x92b9('0x18')]=function(_0x4655c4,_0x635c1f){moveContact(_0x4655c4)['catch'](loggerCatch(_0x635c1f));};exports[_0x92b9('0x19')]=function(_0x322b2a,_0x46f0c2,_0x3f283e){if(_0x46f0c2){_0x322b2a[_0x92b9('0x1a')]=null;}if(_0x3f283e){_0x322b2a[_0x92b9('0x1b')]=![];}return BPromise['resolve']()['then'](cmHopper[_0x92b9('0x19')](_0x322b2a))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x1c')));};exports[_0x92b9('0x1d')]=function(_0x16ffc6){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x1d')](_0x16ffc6))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x1e')));};exports[_0x92b9('0x1f')]=function(_0x50c695){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x1f')]({'UserId':null},_0x50c695,0x1))['catch'](loggerCatch(_0x92b9('0x20')));};exports[_0x92b9('0x21')]=function(_0x763ff6){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x1f')]({'active':![]},_0x763ff6,0x1))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x22')));};exports[_0x92b9('0x23')]=function(_0x2c136a){var _0x1277da={};_0x1277da[_0x92b9('0x24')]=_0x2c136a[_0x92b9('0x24')];_0x1277da[_0x92b9('0x25')]=_0x2c136a[_0x92b9('0x25')];_0x1277da[_0x92b9('0x26')]=_0x2c136a[_0x92b9('0x26')];_0x1277da['calleridname']=_0x2c136a['calleridname'];_0x1277da[_0x92b9('0x27')]=_0x2c136a[_0x92b9('0x27')];_0x1277da[_0x92b9('0x28')]=_0x2c136a['answertime'];_0x1277da[_0x92b9('0x29')]=_0x2c136a[_0x92b9('0x2a')];_0x1277da[_0x92b9('0x2b')]=0x1;_0x1277da[_0x92b9('0x2c')]=_0x2c136a['endtime'];_0x1277da['connectedlinename']=_0x2c136a[_0x92b9('0x2d')];_0x1277da['context']=_0x92b9('0x2e');_0x1277da[_0x92b9('0x2f')]=_0x92b9('0x30');_0x1277da[_0x92b9('0x31')]=0x0;_0x1277da[_0x92b9('0x32')]=0x1;_0x1277da[_0x92b9('0x33')]=_0x2c136a[_0x92b9('0x2d')];_0x1277da[_0x92b9('0x34')]='COMPLETED';return BPromise['resolve']()['then'](voiceQueueReport[_0x92b9('0x35')](_0x1277da))['catch'](loggerCatch(_0x92b9('0x36')));};exports[_0x92b9('0x37')]=function(_0x5bf687,_0x176933){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper['getContactRecallMe'](_0x5bf687,_0x176933))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x38')));};exports[_0x92b9('0x39')]=function(_0x259ffe){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x19')](_0x259ffe,!![],!![]))['catch'](loggerCatch(_0x92b9('0x3a')));};
\ No newline at end of file
index 25be156..af02a80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fe1=['XCALLY_IP_AGI','127.0.0.1','milliseconds','seconds','loggerCatch','error','logger','info','loggerError','inspect','logger2','message','isUndefined','string','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','isEmpty','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','dialQueueProject2','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','Contact','hasOwnProperty','tags','createdAt','XMD-','toUpper','toLowerVariables','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','endtime','logAgent','statedesc','responsetime','logLookAgent','membername','UserId','logCustomer','talktime','isFailure','Failure','RECALL','BOOKED','uniqueid','originate','timeout','totalGlobal','countcongestionretry','countagentrejectretry','clone','active','add','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','buildObj','lastevent','queue','interface','channelAgent','mandatoryDisposition','buildAcw','agentReadyId','reachable','push','getDiff','diff','createBody','filterKey','idContact','campaigntype','dialAnswer','scheduledat','countbusyretry','callbackuniqueid','recallme','ContactId','xmd-queue','xmd-phone','xmd-listid','xmd-dialoptions','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosjitter','bridgepeer','bridgepvtcallid','getCallerIdRandom','pow','random','extractCalleridName','match','extractCalleridNumber','moment','../../../../config/logger','preview','env'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1fe1,0x100));var _0x11fe=function(_0x160a37,_0x17adb8){_0x160a37=_0x160a37-0x0;var _0x265abb=_0x1fe1[_0x160a37];return _0x265abb;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x11fe('0x0'));var logger=require(_0x11fe('0x1'))(_0x11fe('0x2'));var ipAgi=process[_0x11fe('0x3')][_0x11fe('0x4')]||_0x11fe('0x5');function getSeconds(_0x3d8fec,_0x36b15e){var _0xc85e16=moment(_0x3d8fec)['milliseconds'](0x0);var _0x3b82c6=moment(_0x36b15e)[_0x11fe('0x6')](0x0);return _0xc85e16['diff'](_0x3b82c6,_0x11fe('0x7'));}exports[_0x11fe('0x8')]=function(_0x5a3b67){return function(_0x20b4c4){logger[_0x11fe('0x9')](_0x5a3b67,util['inspect'](_0x20b4c4,{'showHidden':![],'depth':null}));};};exports[_0x11fe('0xa')]=function(_0x3862ac,_0x23ca51){logger[_0x11fe('0xb')](_0x3862ac,util['inspect'](_0x23ca51,{'showHidden':![],'depth':null}));};exports[_0x11fe('0xc')]=function(_0x1f9eb0,_0x2d2fd8){logger['error'](_0x1f9eb0,util[_0x11fe('0xd')](_0x2d2fd8,{'showHidden':![],'depth':null}));};exports[_0x11fe('0xe')]=function(_0x1b1760){return function(_0x481ecb){logger['info'](_0x1b1760,util[_0x11fe('0xd')](_0x481ecb,{'showHidden':![],'depth':null}));};};exports[_0x11fe('0xf')]=function(_0x331986,_0x393183,_0x359592){return{'message':_0x331986,'unlock':_0x393183,'active':_0x359592};};exports['getCallerId']=function(_0x31f4f9,_0x4a88ce,_0x9d8f1e){if(!_[_0x11fe('0x10')](_0x9d8f1e)&&'string'===typeof _0x9d8f1e&&!_['isEmpty'](_0x9d8f1e)){if(!_[_0x11fe('0x10')](_0x4a88ce)&&_0x11fe('0x11')===typeof _0x4a88ce&&!_['isEmpty'](_0x4a88ce)){return util[_0x11fe('0x12')](_0x11fe('0x13'),_0x4a88ce,_0x9d8f1e);}return util[_0x11fe('0x12')](_0x11fe('0x13'),_0x9d8f1e,_0x9d8f1e);}if(!_[_0x11fe('0x10')](_0x31f4f9)&&'string'===typeof _0x31f4f9&&!_['isEmpty'](_0x31f4f9)){return _0x31f4f9;}return'\x22\x22\x20<>';};exports[_0x11fe('0x14')]=function(_0x46f83a){if(_[_0x11fe('0x15')](_0x46f83a)){return![];}return _0x46f83a;};exports[_0x11fe('0x16')]=function(_0x2b1983,_0x470960,_0x4fb768,_0x51e62,_0x34b832,_0x35bb3f){var _0x1f499f={'XMD-QUEUE':_0x470960[_0x11fe('0x17')]?_0x470960['Queue'][_0x11fe('0x18')]:'','XMD-CALLERID':_0x51e62,'XMD-CALLERID-PREVIEW':_0x35bb3f?util[_0x11fe('0x12')](_0x11fe('0x13'),_0x35bb3f[_0x11fe('0x19')],_0x35bb3f[_0x11fe('0x1a')]):_0x51e62,'XMD-DIALID':_0x34b832,'XMD-CONTACTID':_0x470960['ContactId'],'XMD-CDRTYPE':_0x11fe('0x1b'),'CALLERID(all)':_0x51e62,'XMD-VOICEQUEUEID':_0x470960[_0x11fe('0x1c')],'XMD-DIALCHANNEL':_0x4fb768,'XMD-DIALTIMEOUT':_0x2b1983['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x11fe('0x12')](_0x11fe('0x1d'),_0x2b1983['dialQueueProject2']?'g':'',_[_0x11fe('0x1e')](_0x2b1983[_0x11fe('0x1f')])?'':_0x11fe('0x20')),'XMD-DIALURL':_0x2b1983[_0x11fe('0x21')]||'','XMD-AGI':_0x2b1983[_0x11fe('0x22')]?util[_0x11fe('0x12')](_0x11fe('0x23'),ipAgi,_0x2b1983[_0x11fe('0x22')]):'NONE','XMD-AGIAFTER':_0x2b1983[_0x11fe('0x24')]?util[_0x11fe('0x12')](_0x11fe('0x23'),ipAgi,_0x2b1983[_0x11fe('0x24')]):_0x11fe('0x25'),'XMD-ORIGINATECALLERIDNUM':_0x35bb3f?_0x35bb3f[_0x11fe('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x35bb3f?_0x35bb3f[_0x11fe('0x27')]:'','XMD-DESTINATION':_0x11fe('0x28')};if(!_[_0x11fe('0x1e')](_0x2b1983[_0x11fe('0x1f')])){_0x1f499f[util[_0x11fe('0x12')]('%s',_0x11fe('0x29'))]=_0x2b1983[_0x11fe('0x1f')];_0x1f499f[util['format']('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x34b832;}if(_0x470960&&_0x470960['Contact']){for(var _0x4d772 in _0x470960[_0x11fe('0x2a')]){if(_0x470960[_0x11fe('0x2a')][_0x11fe('0x2b')](_0x4d772)){if(!_[_0x11fe('0x15')](_0x470960[_0x11fe('0x2a')][_0x4d772])&&_0x4d772!=='id'&&_0x4d772!==_0x11fe('0x2c')&&_0x4d772!==_0x11fe('0x2d')&&_0x4d772!=='updatedAt'){_0x1f499f[util['format']('%s%s',_0x11fe('0x2e'),_[_0x11fe('0x2f')](_0x4d772))]=_0x470960[_0x11fe('0x2a')][_0x4d772];}}}}return _0x1f499f;};exports[_0x11fe('0x30')]=function(_0x41c351){var _0x25806f={};for(var _0x2a17f2 in _0x41c351){if(_0x41c351['hasOwnProperty'](_0x2a17f2)){_0x25806f[util[_0x11fe('0x12')]('%s',_['toLower'](_0x2a17f2))]=_0x41c351[_0x2a17f2];}}return{'variables':_0x25806f};};exports[_0x11fe('0x31')]=function(_0x5cd073,_0x17dc8e){if(!_[_0x11fe('0x15')](_0x5cd073)){if(_0x5cd073[_0x11fe('0x2b')]('originated')){if(_0x5cd073[_0x11fe('0x32')]>0x0){_0x5cd073[_0x11fe('0x32')]-=0x1;}else{logger[_0x11fe('0x9')](_0x11fe('0x33'),_0x17dc8e);}}}else{logger[_0x11fe('0x9')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x17dc8e);}};exports[_0x11fe('0x34')]=function(_0x5ce8ae){var _0x1daa7a=moment()['format'](_0x11fe('0x35'));_0x5ce8ae[_0x11fe('0x36')]=0xd;_0x5ce8ae['statedesc']=_0x11fe('0x37');_0x5ce8ae[_0x11fe('0x38')]=_0x1daa7a;_0x5ce8ae['responsetime']=_0x1daa7a;_0x5ce8ae[_0x11fe('0x39')]=_0x1daa7a;};exports[_0x11fe('0x3a')]=function(_0x58f2cf,_0x3cd841,_0x58150c){var _0x2f601d=moment()[_0x11fe('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x58f2cf[_0x11fe('0x36')]=_0x3cd841;_0x58f2cf[_0x11fe('0x3b')]=_0x58150c;_0x58f2cf[_0x11fe('0x3c')]=_0x2f601d;_0x58f2cf['ringtime']=getSeconds(_0x58f2cf[_0x11fe('0x3c')],_0x58f2cf[_0x11fe('0x38')]);};exports[_0x11fe('0x3d')]=function(_0x1c9f0d,_0x347969,_0x48f889){_0x1c9f0d[_0x11fe('0x3e')]=_0x347969;_0x1c9f0d[_0x11fe('0x3f')]=_0x48f889;};exports[_0x11fe('0x40')]=function(_0x51f436,_0xf28deb,_0x5ca054){var _0x25c612=moment()['format'](_0x11fe('0x35'));_0x51f436[_0x11fe('0x36')]=_0xf28deb;_0x51f436[_0x11fe('0x3b')]=_0x5ca054;_0x51f436[_0x11fe('0x3c')]=_0x51f436[_0x11fe('0x3c')]?_0x51f436[_0x11fe('0x3c')]:_0x25c612;_0x51f436[_0x11fe('0x39')]=_0x51f436[_0x11fe('0x39')]?_0x51f436['endtime']:_0x25c612;_0x51f436['ringtime']=getSeconds(_0x51f436[_0x11fe('0x3c')]||0x0,_0x51f436[_0x11fe('0x38')]||0x0);_0x51f436[_0x11fe('0x41')]=_0x51f436['answertime']?getSeconds(_0x51f436[_0x11fe('0x39')],_0x51f436['answertime']):0x0;};exports[_0x11fe('0x42')]=function(_0x2be36b){return _0x2be36b===_0x11fe('0x43');};exports['variablesAction']=function(_0x5ae3e8,_0xab54bb,_0x1714c8,_0x3369f1,_0x569769){var _0x5afad0=_0x3369f1?_0x11fe('0x44'):_0x5ae3e8['calleridname'];_0x5afad0=_0x569769?_0x11fe('0x45'):_0x5afad0;return{'actionid':_0x5ae3e8[_0x11fe('0x46')],'action':_0x11fe('0x47'),'channel':_0x5ae3e8['channelAgent'],'callerid':util[_0x11fe('0x12')](_0x11fe('0x13'),_0x5afad0,_0x5ae3e8['calleridnum']),'Exten':_0x11fe('0x28'),'Context':'from-sip','Priority':'1','variable':_0x1714c8,'timeout':(_0xab54bb[_0x11fe('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5ae3e8[_0x11fe('0x46')]};};exports[_0x11fe('0x49')]=function(_0x4a70d4){return _0x4a70d4['countbusyretry']+_0x4a70d4[_0x11fe('0x4a')]+_0x4a70d4['countnoanswerretry']+_0x4a70d4[_0x11fe('0x4b')]+_0x4a70d4['countnosuchnumberretry'];};exports['cloneAction']=function(_0x4d38da){var _0x5ad5b0=_[_0x11fe('0x4c')](_0x4d38da);_0x5ad5b0['state']=0xf;_0x5ad5b0[_0x11fe('0x3b')]='Global';return _0x5ad5b0;};exports['scheduledAt']=function(_0x5d8821,_0xb98ad6,_0x11c8c5){var _0x1143a9={};_0x1143a9[_0xb98ad6]=_0x5d8821[_0xb98ad6];_0x1143a9[_0x11fe('0x4d')]=![];_0x1143a9['scheduledat']=moment()[_0x11fe('0x4e')](_0x11c8c5,'minutes')['format'](_0x11fe('0x35'));_0x1143a9['ContactId']=_0x5d8821['ContactId'];_0x1143a9[_0x11fe('0x4f')]=_0x5d8821[_0x11fe('0x4f')];_0x1143a9[_0x11fe('0x1c')]=_0x5d8821[_0x11fe('0x1c')]||undefined;return _0x1143a9;};exports['decrementTalkink']=function(_0x223664,_0x1b51b8){if(!_[_0x11fe('0x15')](_0x223664)){if(_0x223664[_0x11fe('0x50')]>0x0){_0x223664[_0x11fe('0x50')]-=0x1;}else{logger['error'](_0x1b51b8,_0x11fe('0x51'));}}else{logger[_0x11fe('0x9')](_0x1b51b8,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports['IsNotLoggedIn']=function(_0x263939){if(_0x263939<=0x0){return!![];}return![];};exports[_0x11fe('0x52')]=function(_0x143cb2,_0x4a8aa9,_0x1cdb41){_0x143cb2[_0x11fe('0x53')]=_0x4a8aa9;_0x143cb2[_0x11fe('0x18')]=_0x143cb2[_0x11fe('0x54')];_0x143cb2[_0x11fe('0x55')]=_0x143cb2[_0x11fe('0x56')];if(_0x1cdb41){_0x143cb2[_0x11fe('0x57')]=_0x1cdb41['mandatoryDisposition'];}return _0x143cb2;};exports[_0x11fe('0x58')]=function(_0xcfeae1){var _0x56ab2e={};_0x56ab2e[_0x11fe('0x54')]=_0xcfeae1[_0x11fe('0x54')];_0x56ab2e[_0x11fe('0x55')]=_0xcfeae1[_0x11fe('0x56')];_0x56ab2e[_0x11fe('0x46')]=_0xcfeae1['uniqueid'];return _0x56ab2e;};exports[_0x11fe('0x59')]=function(_0x514cbb){var _0x486523=[];for(var _0x3dca08 in _0x514cbb){if(_0x514cbb[_0x11fe('0x2b')](_0x3dca08)){if(!_[_0x11fe('0x15')](_0x514cbb[_0x3dca08])&&_0x514cbb[_0x3dca08][_0x11fe('0x36')]==='not_inuse'&&_0x514cbb[_0x3dca08]['status']===_0x11fe('0x5a')){_0x486523[_0x11fe('0x5b')](_0x514cbb[_0x3dca08]['id']);}}}return _0x486523;};exports[_0x11fe('0x5c')]=function(_0x305bf5){var _0xd63a43=moment()[_0x11fe('0x6')](0x0);var _0x4a45b7=moment(_0x305bf5)[_0x11fe('0x6')](0x0);return _0xd63a43[_0x11fe('0x5d')](_0x4a45b7,_0x11fe('0x7'));};exports[_0x11fe('0x5e')]=function(_0x39f7aa){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x39f7aa['ContactId'],'ListId':_0x39f7aa[_0x11fe('0x4f')],'VoiceQueueId':_0x39f7aa[_0x11fe('0x1c')]||undefined,'CampaignId':_0x39f7aa['CampaignId']||undefined};};exports[_0x11fe('0x5f')]=function(_0x34b768){if(_0x34b768===_0x11fe('0x46')||_0x34b768===_0x11fe('0x60')||_0x34b768===_0x11fe('0x54')||_0x34b768==='type'||_0x34b768===_0x11fe('0x61')||_0x34b768===_0x11fe('0x62')||_0x34b768===_0x11fe('0x3e')||_0x34b768===_0x11fe('0x56')||_0x34b768==='calleridname'||_0x34b768===_0x11fe('0x4d')||_0x34b768===_0x11fe('0x1a')||_0x34b768===_0x11fe('0x63')||_0x34b768===_0x11fe('0x64')||_0x34b768===_0x11fe('0x4a')||_0x34b768==='countnoanswerretry'||_0x34b768==='countglobal'||_0x34b768==='callback'||_0x34b768===_0x11fe('0x65')||_0x34b768==='callbackat'||_0x34b768===_0x11fe('0x66')||_0x34b768===_0x11fe('0x67')||_0x34b768===_0x11fe('0x4f')||_0x34b768===_0x11fe('0x3f')||_0x34b768===_0x11fe('0x1c')||_0x34b768==='sipcallid'||_0x34b768==='xmd-voicequeueid'||_0x34b768===_0x11fe('0x68')||_0x34b768===_0x11fe('0x69')||_0x34b768===_0x11fe('0x6a')||_0x34b768==='xmd-dialurl'||_0x34b768==='xmd-dialtimeout'||_0x34b768===_0x11fe('0x6b')||_0x34b768==='xmd-dialid'||_0x34b768===_0x11fe('0x6c')||_0x34b768===_0x11fe('0x6d')||_0x34b768===_0x11fe('0x6e')||_0x34b768===_0x11fe('0x6f')||_0x34b768===_0x11fe('0x70')||_0x34b768===_0x11fe('0x71')||_0x34b768==='rtpaudioqos'||_0x34b768===_0x11fe('0x72')||_0x34b768==='rtpaudioqosjitter'||_0x34b768===_0x11fe('0x73')||_0x34b768===_0x11fe('0x74')||_0x34b768===_0x11fe('0x75')||_0x34b768===_0x11fe('0x76')||_0x34b768===_0x11fe('0x77')||_0x34b768===_0x11fe('0x78')||_0x34b768===_0x11fe('0x72')||_0x34b768===_0x11fe('0x79')||_0x34b768==='rtpaudioqosjitterbridged'||_0x34b768===_0x11fe('0x74')||_0x34b768===_0x11fe('0x75')||_0x34b768===_0x11fe('0x76')||_0x34b768===_0x11fe('0x77')||_0x34b768===_0x11fe('0x7a')||_0x34b768===_0x11fe('0x7b')||_0x34b768===_0x11fe('0x36')||_0x34b768==='statedesc'){return![];}return!![];};exports[_0x11fe('0x7c')]=function(_0x2b74e5,_0x212996){var _0x454253,_0xfb869e,_0x59cccc;if(_0x212996<=0x0){_0x212996=0x1;}_0x454253=new RegExp('\x5cw{0,'+_0x212996+'}$');_0xfb869e=Math[_0x11fe('0x7d')](0xa,_0x212996-0x1);_0x59cccc=Math['pow'](0xa,_0x212996)-0x1;return util['format']('%s',_['replace'](_0x2b74e5,_0x454253,_[_0x11fe('0x7e')](_0xfb869e,_0x59cccc)));};exports[_0x11fe('0x7f')]=function(_0x4eb779){var _0x376c71=_0x4eb779[_0x11fe('0x80')](/"(.*?)"/);return _0x376c71?_0x376c71[0x1]:_0x4eb779;};exports[_0x11fe('0x81')]=function(_0x3867b4){var _0x5541cb=_0x3867b4['match'](/<(.*?)>/);return _0x5541cb?_0x5541cb[0x1]:_0x3867b4;};
\ No newline at end of file
+var _0x7175=['countnosuchnumberretry','cloneAction','clone','Global','active','scheduledat','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','buildObj','lastevent','interface','motionChannel','voice','mandatoryDisposition','buildAcw','queue','agentReadyId','reachable','push','getDiff','diff','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','callback','callbackuniqueid','callbackat','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','rtpaudioqosjitterbridged','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','preview','127.0.0.1','milliseconds','seconds','loggerCatch','inspect','logger','loggerError','error','info','message','getCallerId','isUndefined','isEmpty','format','\x22%s\x22\x20<%s>','string','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialOriginateTimeout','\x22rtTxX%s%s\x22','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','dialQueueProject2','NONE','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','toUpper','toLowerVariables','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','xcally-motion-preview','from-sip','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry'];(function(_0x4489f2,_0x1f9128){var _0x5cc527=function(_0x44201f){while(--_0x44201f){_0x4489f2['push'](_0x4489f2['shift']());}};_0x5cc527(++_0x1f9128);}(_0x7175,0xd1));var _0x5717=function(_0x41cd34,_0x32cd0c){_0x41cd34=_0x41cd34-0x0;var _0x1273e8=_0x7175[_0x41cd34];return _0x1273e8;};'use strict';var util=require(_0x5717('0x0'));var _=require(_0x5717('0x1'));var moment=require(_0x5717('0x2'));var logger=require(_0x5717('0x3'))(_0x5717('0x4'));var ipAgi=process['env']['XCALLY_IP_AGI']||_0x5717('0x5');function getSeconds(_0x4f2b03,_0x3c4975){var _0x437960=moment(_0x4f2b03)['milliseconds'](0x0);var _0x49a5f3=moment(_0x3c4975)[_0x5717('0x6')](0x0);return _0x437960['diff'](_0x49a5f3,_0x5717('0x7'));}exports[_0x5717('0x8')]=function(_0x279d3c){return function(_0x5beb96){logger['error'](_0x279d3c,util[_0x5717('0x9')](_0x5beb96,{'showHidden':![],'depth':null}));};};exports[_0x5717('0xa')]=function(_0x586d95,_0x3de0fb){logger['info'](_0x586d95,util['inspect'](_0x3de0fb,{'showHidden':![],'depth':null}));};exports[_0x5717('0xb')]=function(_0x1a853e,_0xa8b2bc){logger[_0x5717('0xc')](_0x1a853e,util['inspect'](_0xa8b2bc,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x139f32){return function(_0x39cb88){logger[_0x5717('0xd')](_0x139f32,util[_0x5717('0x9')](_0x39cb88,{'showHidden':![],'depth':null}));};};exports[_0x5717('0xe')]=function(_0x478881,_0x27b863,_0x26b130){return{'message':_0x478881,'unlock':_0x27b863,'active':_0x26b130};};exports[_0x5717('0xf')]=function(_0x4ce64c,_0xa9a990,_0x230a09){if(!_[_0x5717('0x10')](_0x230a09)&&'string'===typeof _0x230a09&&!_['isEmpty'](_0x230a09)){if(!_[_0x5717('0x10')](_0xa9a990)&&'string'===typeof _0xa9a990&&!_[_0x5717('0x11')](_0xa9a990)){return util[_0x5717('0x12')]('\x22%s\x22\x20<%s>',_0xa9a990,_0x230a09);}return util['format'](_0x5717('0x13'),_0x230a09,_0x230a09);}if(!_['isUndefined'](_0x4ce64c)&&_0x5717('0x14')===typeof _0x4ce64c&&!_[_0x5717('0x11')](_0x4ce64c)){return _0x4ce64c;}return _0x5717('0x15');};exports[_0x5717('0x16')]=function(_0x137469){if(_[_0x5717('0x17')](_0x137469)){return![];}return _0x137469;};exports[_0x5717('0x18')]=function(_0x3cc538,_0x2b8619,_0xff36c1,_0x1f8f23,_0x41cd78,_0x5901ec){var _0x5a10e8={'XMD-QUEUE':_0x2b8619[_0x5717('0x19')]?_0x2b8619['Queue'][_0x5717('0x1a')]:'','XMD-CALLERID':_0x1f8f23,'XMD-CALLERID-PREVIEW':_0x5901ec?util[_0x5717('0x12')](_0x5717('0x13'),_0x5901ec[_0x5717('0x1b')],_0x5901ec[_0x5717('0x1c')]):_0x1f8f23,'XMD-DIALID':_0x41cd78,'XMD-CONTACTID':_0x2b8619[_0x5717('0x1d')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x1f8f23,'XMD-VOICEQUEUEID':_0x2b8619['VoiceQueueId'],'XMD-DIALCHANNEL':_0xff36c1,'XMD-DIALTIMEOUT':_0x3cc538[_0x5717('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x5717('0x12')](_0x5717('0x1f'),_0x3cc538['dialQueueProject2']?'g':'',_[_0x5717('0x11')](_0x3cc538[_0x5717('0x20')])?'':_0x5717('0x21')),'XMD-DIALURL':_0x3cc538[_0x5717('0x22')]||'','XMD-AGI':_0x3cc538[_0x5717('0x23')]?util[_0x5717('0x12')](_0x5717('0x24'),ipAgi,_0x3cc538[_0x5717('0x23')]):'NONE','XMD-AGIAFTER':_0x3cc538['dialQueueProject2']?util[_0x5717('0x12')](_0x5717('0x24'),ipAgi,_0x3cc538[_0x5717('0x25')]):_0x5717('0x26'),'XMD-ORIGINATECALLERIDNUM':_0x5901ec?_0x5901ec['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x5901ec?_0x5901ec[_0x5717('0x27')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x5717('0x11')](_0x3cc538[_0x5717('0x20')])){_0x5a10e8[util['format']('%s',_0x5717('0x28'))]=_0x3cc538[_0x5717('0x20')];_0x5a10e8[util[_0x5717('0x12')]('%s',_0x5717('0x29'))]=_0x41cd78;}if(_0x2b8619&&_0x2b8619[_0x5717('0x2a')]){for(var _0x12dbb5 in _0x2b8619[_0x5717('0x2a')]){if(_0x2b8619['Contact'][_0x5717('0x2b')](_0x12dbb5)){if(!_[_0x5717('0x17')](_0x2b8619['Contact'][_0x12dbb5])&&_0x12dbb5!=='id'&&_0x12dbb5!==_0x5717('0x2c')&&_0x12dbb5!==_0x5717('0x2d')&&_0x12dbb5!==_0x5717('0x2e')){_0x5a10e8[util[_0x5717('0x12')](_0x5717('0x2f'),'XMD-',_[_0x5717('0x30')](_0x12dbb5))]=_0x2b8619['Contact'][_0x12dbb5];}}}}return _0x5a10e8;};exports[_0x5717('0x31')]=function(_0x23b43e){var _0x2a6886={};for(var _0x89b205 in _0x23b43e){if(_0x23b43e[_0x5717('0x2b')](_0x89b205)){_0x2a6886[util[_0x5717('0x12')]('%s',_[_0x5717('0x32')](_0x89b205))]=_0x23b43e[_0x89b205];}}return{'variables':_0x2a6886};};exports['updateOriginated']=function(_0x3823e5,_0x4aa036){if(!_[_0x5717('0x17')](_0x3823e5)){if(_0x3823e5[_0x5717('0x2b')](_0x5717('0x33'))){if(_0x3823e5['originated']>0x0){_0x3823e5[_0x5717('0x33')]-=0x1;}else{logger[_0x5717('0xc')](_0x5717('0x34'),_0x4aa036);}}}else{logger['error'](_0x5717('0x35'),_0x4aa036);}};exports[_0x5717('0x36')]=function(_0x151987){var _0x57e718=moment()[_0x5717('0x12')](_0x5717('0x37'));_0x151987[_0x5717('0x38')]=0xd;_0x151987[_0x5717('0x39')]=_0x5717('0x3a');_0x151987[_0x5717('0x3b')]=_0x57e718;_0x151987[_0x5717('0x3c')]=_0x57e718;_0x151987[_0x5717('0x3d')]=_0x57e718;};exports[_0x5717('0x3e')]=function(_0xb1cca1,_0x39afea,_0x2b852b){var _0x24f032=moment()[_0x5717('0x12')](_0x5717('0x37'));_0xb1cca1[_0x5717('0x38')]=_0x39afea;_0xb1cca1['statedesc']=_0x2b852b;_0xb1cca1['responsetime']=_0x24f032;_0xb1cca1[_0x5717('0x3f')]=getSeconds(_0xb1cca1['responsetime'],_0xb1cca1['starttime']);};exports[_0x5717('0x40')]=function(_0x11a551,_0xdcc327,_0x17842a){_0x11a551[_0x5717('0x41')]=_0xdcc327;_0x11a551[_0x5717('0x42')]=_0x17842a;};exports[_0x5717('0x43')]=function(_0xd8184,_0x1743c4,_0x57f0d5){var _0x4cf707=moment()[_0x5717('0x12')](_0x5717('0x37'));_0xd8184[_0x5717('0x38')]=_0x1743c4;_0xd8184[_0x5717('0x39')]=_0x57f0d5;_0xd8184[_0x5717('0x3c')]=_0xd8184[_0x5717('0x3c')]?_0xd8184[_0x5717('0x3c')]:_0x4cf707;_0xd8184[_0x5717('0x3d')]=_0xd8184['endtime']?_0xd8184[_0x5717('0x3d')]:_0x4cf707;_0xd8184[_0x5717('0x3f')]=getSeconds(_0xd8184[_0x5717('0x3c')]||0x0,_0xd8184[_0x5717('0x3b')]||0x0);_0xd8184[_0x5717('0x44')]=_0xd8184[_0x5717('0x45')]?getSeconds(_0xd8184[_0x5717('0x3d')],_0xd8184[_0x5717('0x45')]):0x0;};exports[_0x5717('0x46')]=function(_0x984300){return _0x984300===_0x5717('0x47');};exports[_0x5717('0x48')]=function(_0x3448f2,_0x5a1165,_0x39060c,_0x524115,_0x364d6e){var _0x2469b3=_0x524115?_0x5717('0x49'):_0x3448f2['calleridname'];_0x2469b3=_0x364d6e?_0x5717('0x4a'):_0x2469b3;return{'actionid':_0x3448f2[_0x5717('0x4b')],'action':_0x5717('0x4c'),'channel':_0x3448f2[_0x5717('0x4d')],'callerid':util['format'](_0x5717('0x13'),_0x2469b3,_0x3448f2['calleridnum']),'Exten':_0x5717('0x4e'),'Context':_0x5717('0x4f'),'Priority':'1','variable':_0x39060c,'timeout':(_0x5a1165['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x3448f2[_0x5717('0x4b')]};};exports[_0x5717('0x50')]=function(_0x42d63d){return _0x42d63d[_0x5717('0x51')]+_0x42d63d[_0x5717('0x52')]+_0x42d63d[_0x5717('0x53')]+_0x42d63d[_0x5717('0x54')]+_0x42d63d[_0x5717('0x55')];};exports[_0x5717('0x56')]=function(_0xe72216){var _0x5ecf01=_[_0x5717('0x57')](_0xe72216);_0x5ecf01[_0x5717('0x38')]=0xf;_0x5ecf01[_0x5717('0x39')]=_0x5717('0x58');return _0x5ecf01;};exports['scheduledAt']=function(_0x4271cb,_0x47a38c,_0x332519){var _0x28f475={};_0x28f475[_0x47a38c]=_0x4271cb[_0x47a38c];_0x28f475[_0x5717('0x59')]=![];_0x28f475[_0x5717('0x5a')]=moment()[_0x5717('0x5b')](_0x332519,_0x5717('0x5c'))['format'](_0x5717('0x37'));_0x28f475[_0x5717('0x1d')]=_0x4271cb[_0x5717('0x1d')];_0x28f475['ListId']=_0x4271cb[_0x5717('0x5d')];_0x28f475[_0x5717('0x5e')]=_0x4271cb[_0x5717('0x5e')]||undefined;return _0x28f475;};exports[_0x5717('0x5f')]=function(_0x3e3f70,_0x6a67ff){if(!_['isNil'](_0x3e3f70)){if(_0x3e3f70[_0x5717('0x60')]>0x0){_0x3e3f70[_0x5717('0x60')]-=0x1;}else{logger['error'](_0x6a67ff,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x5717('0xc')](_0x6a67ff,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports['IsNotLoggedIn']=function(_0x5f72f0){if(_0x5f72f0<=0x0){return!![];}return![];};exports[_0x5717('0x61')]=function(_0x129cd1,_0x2fc632,_0x267f55){_0x129cd1[_0x5717('0x62')]=_0x2fc632;_0x129cd1[_0x5717('0x1a')]=_0x129cd1['queue'];_0x129cd1[_0x5717('0x63')]=_0x129cd1[_0x5717('0x4d')];_0x129cd1[_0x5717('0x64')]=_0x5717('0x65');if(_0x267f55){_0x129cd1[_0x5717('0x66')]=_0x267f55[_0x5717('0x66')];}return _0x129cd1;};exports[_0x5717('0x67')]=function(_0x2fe089){var _0x2f2220={};_0x2f2220['queue']=_0x2fe089[_0x5717('0x68')];_0x2f2220[_0x5717('0x63')]=_0x2fe089[_0x5717('0x4d')];_0x2f2220[_0x5717('0x4b')]=_0x2fe089['uniqueid'];return _0x2f2220;};exports[_0x5717('0x69')]=function(_0x27700b){var _0x25c67b=[];for(var _0x303e09 in _0x27700b){if(_0x27700b[_0x5717('0x2b')](_0x303e09)){if(!_[_0x5717('0x17')](_0x27700b[_0x303e09])&&_0x27700b[_0x303e09][_0x5717('0x38')]==='not_inuse'&&_0x27700b[_0x303e09]['status']===_0x5717('0x6a')){_0x25c67b[_0x5717('0x6b')](_0x27700b[_0x303e09]['id']);}}}return _0x25c67b;};exports[_0x5717('0x6c')]=function(_0x907607){var _0x1356f2=moment()[_0x5717('0x6')](0x0);var _0x2ac5f7=moment(_0x907607)['milliseconds'](0x0);return _0x1356f2[_0x5717('0x6d')](_0x2ac5f7,_0x5717('0x7'));};exports['createBody']=function(_0x168081){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x168081[_0x5717('0x1d')],'ListId':_0x168081['ListId'],'VoiceQueueId':_0x168081[_0x5717('0x5e')]||undefined,'CampaignId':_0x168081[_0x5717('0x6e')]||undefined};};exports[_0x5717('0x6f')]=function(_0x1c45bf){if(_0x1c45bf===_0x5717('0x4b')||_0x1c45bf===_0x5717('0x70')||_0x1c45bf===_0x5717('0x68')||_0x1c45bf===_0x5717('0x71')||_0x1c45bf===_0x5717('0x72')||_0x1c45bf===_0x5717('0x73')||_0x1c45bf===_0x5717('0x41')||_0x1c45bf==='channelAgent'||_0x1c45bf===_0x5717('0x1b')||_0x1c45bf==='active'||_0x1c45bf==='calleridnum'||_0x1c45bf===_0x5717('0x5a')||_0x1c45bf===_0x5717('0x51')||_0x1c45bf===_0x5717('0x52')||_0x1c45bf===_0x5717('0x53')||_0x1c45bf==='countglobal'||_0x1c45bf===_0x5717('0x74')||_0x1c45bf===_0x5717('0x75')||_0x1c45bf===_0x5717('0x76')||_0x1c45bf==='recallme'||_0x1c45bf===_0x5717('0x1d')||_0x1c45bf===_0x5717('0x5d')||_0x1c45bf===_0x5717('0x42')||_0x1c45bf===_0x5717('0x5e')||_0x1c45bf==='sipcallid'||_0x1c45bf===_0x5717('0x77')||_0x1c45bf===_0x5717('0x78')||_0x1c45bf===_0x5717('0x79')||_0x1c45bf===_0x5717('0x7a')||_0x1c45bf===_0x5717('0x7b')||_0x1c45bf===_0x5717('0x7c')||_0x1c45bf===_0x5717('0x7d')||_0x1c45bf===_0x5717('0x7e')||_0x1c45bf==='xmd-dialchannel'||_0x1c45bf==='xmd-contactid'||_0x1c45bf===_0x5717('0x7f')||_0x1c45bf===_0x5717('0x80')||_0x1c45bf===_0x5717('0x81')||_0x1c45bf===_0x5717('0x82')||_0x1c45bf===_0x5717('0x83')||_0x1c45bf==='rtpaudioqosbridged'||_0x1c45bf===_0x5717('0x84')||_0x1c45bf==='rtpaudioqosjitterbridged'||_0x1c45bf===_0x5717('0x85')||_0x1c45bf===_0x5717('0x86')||_0x1c45bf===_0x5717('0x87')||_0x1c45bf===_0x5717('0x88')||_0x1c45bf===_0x5717('0x83')||_0x1c45bf===_0x5717('0x89')||_0x1c45bf===_0x5717('0x84')||_0x1c45bf===_0x5717('0x8a')||_0x1c45bf===_0x5717('0x85')||_0x1c45bf==='rtpaudioqoslossbridged'||_0x1c45bf===_0x5717('0x87')||_0x1c45bf===_0x5717('0x88')||_0x1c45bf==='bridgepeer'||_0x1c45bf===_0x5717('0x8b')||_0x1c45bf===_0x5717('0x38')||_0x1c45bf===_0x5717('0x39')){return![];}return!![];};exports[_0x5717('0x8c')]=function(_0x1217b6,_0x519b3e){var _0x150604,_0x220465,_0x599986;if(_0x519b3e<=0x0){_0x519b3e=0x1;}_0x150604=new RegExp(_0x5717('0x8d')+_0x519b3e+'}$');_0x220465=Math['pow'](0xa,_0x519b3e-0x1);_0x599986=Math[_0x5717('0x8e')](0xa,_0x519b3e)-0x1;return util['format']('%s',_[_0x5717('0x8f')](_0x1217b6,_0x150604,_[_0x5717('0x90')](_0x220465,_0x599986)));};exports['extractCalleridName']=function(_0x22de3c){var _0x3d0258=_0x22de3c[_0x5717('0x91')](/"(.*?)"/);return _0x3d0258?_0x3d0258[0x1]:_0x22de3c;};exports[_0x5717('0x92')]=function(_0x2a7a9e){var _0x1a8399=_0x2a7a9e['match'](/<(.*?)>/);return _0x1a8399?_0x1a8399[0x1]:_0x2a7a9e;};
\ No newline at end of file
index 20e85cd..72e4563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c83=['voicequeuechannelhangup','voicequeuechannelredirect','string','boolean','queueremove','queuepause','reload','voicequeuechannel','voicechannel'];(function(_0x5b89a8,_0xbbc8f3){var _0x880e31=function(_0x43cbe3){while(--_0x43cbe3){_0x5b89a8['push'](_0x5b89a8['shift']());}};_0x880e31(++_0xbbc8f3);}(_0x5c83,0xbf));var _0x35c8=function(_0x599c44,_0x2fb16e){_0x599c44=_0x599c44-0x0;var _0x1d6cf6=_0x5c83[_0x599c44];return _0x1d6cf6;};'use strict';exports['queueadd']={'queue':{'type':_0x35c8('0x0'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x35c8('0x0'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x35c8('0x1'),'required':![]}};exports[_0x35c8('0x2')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0x35c8('0x0'),'required':!![]}};exports[_0x35c8('0x3')]={'interface':{'type':_0x35c8('0x0'),'required':!![]},'paused':{'type':_0x35c8('0x1')},'reason':{'type':_0x35c8('0x0'),'required':![]}};exports[_0x35c8('0x4')]={'module':{'type':_0x35c8('0x0'),'required':![]}};exports[_0x35c8('0x5')]={'uniqueid':{'type':_0x35c8('0x0'),'required':!![]}};exports[_0x35c8('0x6')]={'uniqueid':{'type':_0x35c8('0x0'),'required':!![]},'filename':{'type':_0x35c8('0x0')},'format':{'type':_0x35c8('0x0')},'mixmonitorid':{'type':'string'}};exports[_0x35c8('0x7')]={'uniqueid':{'type':_0x35c8('0x0'),'required':!![]}};exports[_0x35c8('0x8')]={'uniqueid':{'type':_0x35c8('0x0'),'required':!![]},'exten':{'type':_0x35c8('0x0'),'required':!![]},'context':{'type':_0x35c8('0x0')}};
\ No newline at end of file
+var _0x53fa=['voicequeuechannelhangup','queueadd','string','number','queuepause','reload','voicechannel'];(function(_0x45def4,_0x120bc0){var _0x29821f=function(_0x6c0ef8){while(--_0x6c0ef8){_0x45def4['push'](_0x45def4['shift']());}};_0x29821f(++_0x120bc0);}(_0x53fa,0x1ac));var _0xa53f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53fa[_0x3dd15e];return _0x231fd0;};'use strict';exports[_0xa53f('0x0')]={'queue':{'type':_0xa53f('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xa53f('0x1'),'required':!![]},'penalty':{'type':_0xa53f('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xa53f('0x3')]={'interface':{'type':_0xa53f('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':'string','required':![]}};exports[_0xa53f('0x4')]={'module':{'type':_0xa53f('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]}};exports[_0xa53f('0x5')]={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]},'filename':{'type':_0xa53f('0x1')},'format':{'type':_0xa53f('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xa53f('0x6')]={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0xa53f('0x1')}};
\ No newline at end of file
index 9fc9627..769f1c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3122=['../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','triggers','campaigns','templates','outbound','voiceExtensions','channels','outboundChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','mapKeys','hasOwnProperty','SIP/%s','name','isNil','interface','format','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundAnswerCallsDay','mergeFromDatabase','prototype','length','isUndefined','initTrunks','trunks','initVoiceQueues','voiceQueues','initTriggers','initTemplates','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queuecallerexit','unmanaged','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','duration','disposition','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','faxAccounts','exports','bluebird','util','lodash','../model/agent','../model/trunk','../model/voiceQueue'];(function(_0x3a9349,_0xdb8806){var _0x2c924b=function(_0x2cbfd8){while(--_0x2cbfd8){_0x3a9349['push'](_0x3a9349['shift']());}};_0x2c924b(++_0xdb8806);}(_0x3122,0x1b2));var _0x2312=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x3122[_0x167cc1];return _0x10bc4b;};'use strict';var BPromise=require(_0x2312('0x0'));var util=require(_0x2312('0x1'));var _=require(_0x2312('0x2'));var moment=require('moment');var Agent=require(_0x2312('0x3'));var Telephone=require('../model/telephone');var Trunk=require(_0x2312('0x4'));var VoiceQueue=require(_0x2312('0x5'));var Trigger=require(_0x2312('0x6'));var Template=require(_0x2312('0x7'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0x2312('0x8'));var ZendeskAccount=require(_0x2312('0x9'));var SalesforceAccount=require(_0x2312('0xa'));var FreshdeskAccount=require(_0x2312('0xb'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x2312('0xc'));var DeskAccount=require(_0x2312('0xd'));var VtigerAccount=require(_0x2312('0xe'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x2312('0xf'));var FreshsalesAccount=require(_0x2312('0x10'));var FaxAccount=require(_0x2312('0x11'));var Realtime=function(){this[_0x2312('0x12')]={};this[_0x2312('0x13')]={};this['trunks']={};this['voiceQueues']={};this[_0x2312('0x14')]={};this[_0x2312('0x15')]={};this[_0x2312('0x16')]={};this[_0x2312('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x2312('0x18')]={};this[_0x2312('0x19')]={};this['queueChannels']={};this[_0x2312('0x1a')]={};this[_0x2312('0x1b')]={};this['settings']={};this[_0x2312('0x1c')]={};this[_0x2312('0x1d')]={};this[_0x2312('0x1e')]={};this[_0x2312('0x1f')]={};this[_0x2312('0x20')]={};this[_0x2312('0x21')]={};this[_0x2312('0x22')]={};this[_0x2312('0x23')]={};this[_0x2312('0x24')]={};this['freshsalesAccounts']={};this['faxAccounts']={};};function freeIsNotKey(_0x490018,_0x584eb8,_0x28867c){var _0x5639d2=_[_0x2312('0x25')](_0x490018,function(_0x34217b,_0x501c47){return _0x34217b[_0x28867c];});for(var _0x23afda in _0x584eb8){if(_0x584eb8[_0x2312('0x26')](_0x23afda)){if(!_0x5639d2[_0x23afda]){delete _0x584eb8[_0x23afda];}}}}function freeIsNotKeySip(_0x296624,_0x14b68a){var _0x2ef20c=_['mapKeys'](_0x296624,function(_0x448a24,_0x7701eb){return util['format'](_0x2312('0x27'),_0x448a24[_0x2312('0x28')]);});for(var _0xc57f27 in _0x14b68a){if(_0x14b68a[_0x2312('0x26')](_0xc57f27)){if(!_0x2ef20c[_0xc57f27]){delete _0x14b68a[_0xc57f27];}}}}function freeIsNotKeyAgent(_0x2467a8,_0x3bedb4){var _0x49f300=_[_0x2312('0x25')](_0x2467a8,function(_0x1281c7,_0x4b34d7){var _0x3e923c=_[_0x2312('0x29')](_0x1281c7[_0x2312('0x2a')])?util[_0x2312('0x2b')](_0x2312('0x27'),_0x1281c7[_0x2312('0x28')]):_0x1281c7['interface'];return _0x3e923c;});for(var _0x4b5890 in _0x3bedb4){if(_0x3bedb4['hasOwnProperty'](_0x4b5890)){if(!_0x49f300[_0x4b5890]){delete _0x3bedb4[_0x4b5890];}}}}function clearVoiceCallReports(_0x316c94){_0x316c94[_0x2312('0x2c')]=0x0;_0x316c94[_0x2312('0x2d')]=0x0;_0x316c94[_0x2312('0x2e')]=0x0;_0x316c94[_0x2312('0x2f')]=0x0;_0x316c94[_0x2312('0x30')]=0x0;}function clearCampaigns(_0x6f66a){if(!_[_0x2312('0x31')](_0x6f66a)){for(var _0x1bb878 in _0x6f66a){if(_0x6f66a[_0x2312('0x26')](_0x1bb878)){_0x6f66a[_0x1bb878][_0x2312('0x32')]=0x0;_0x6f66a[_0x1bb878][_0x2312('0x33')]=0x0;}}}}function clearVoiceQueues(_0x36da44){if(!_[_0x2312('0x31')](_0x36da44)){for(var _0x4fb32f in _0x36da44){if(_0x36da44[_0x2312('0x26')](_0x4fb32f)){_0x36da44[_0x4fb32f]['total']=0x0;_0x36da44[_0x4fb32f][_0x2312('0x2d')]=0x0;_0x36da44[_0x4fb32f]['unmanaged']=0x0;_0x36da44[_0x4fb32f][_0x2312('0x34')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x2e')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x2f')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x30')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x35')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x36')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x37')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x38')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x39')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x3a')]=0x0;_0x36da44[_0x4fb32f]['outboundDropCallsDayTimeout']=0x0;_0x36da44[_0x4fb32f][_0x2312('0x3b')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x3c')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x3d')]=0x0;_0x36da44[_0x4fb32f]['outboundRejectCallsDay']=0x0;_0x36da44[_0x4fb32f][_0x2312('0x3e')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x35')]=0x0;_0x36da44[_0x4fb32f][_0x2312('0x3f')]=0x0;_0x36da44[_0x4fb32f]['queueStatusComplete']=!![];}}}}Realtime['prototype'][_0x2312('0x40')]=function(_0x51bee7,_0x91192b){for(var _0x2ffa06 in _0x91192b){if(_0x51bee7[_0x2312('0x26')](_0x2ffa06)){_0x51bee7[_0x2ffa06]=_0x91192b[_0x2ffa06];}}};Realtime[_0x2312('0x41')]['initAgents']=function(){var _0x57cfe7=this;return function(_0x540c91){if(_0x540c91){freeIsNotKeyAgent(_0x540c91,_0x57cfe7[_0x2312('0x12')]);for(var _0x17b257=0x0,_0x205cec={},_0x2ca059={};_0x17b257<_0x540c91[_0x2312('0x42')];_0x17b257+=0x1){_0x205cec=_0x540c91[_0x17b257];var _0x3721a8=_[_0x2312('0x29')](_0x205cec['interface'])?util['format'](_0x2312('0x27'),_0x205cec['name']):_0x205cec[_0x2312('0x2a')];if(_[_0x2312('0x43')](_0x57cfe7[_0x2312('0x12')][_0x3721a8])){_0x57cfe7[_0x2312('0x12')][_0x3721a8]=new Agent(_0x205cec);}else{_0x57cfe7[_0x2312('0x40')](_0x57cfe7['agents'][_0x3721a8],_0x205cec);}}}return _0x57cfe7['agents'];};};Realtime['prototype']['initTelephones']=function(){var _0x40755a=this;return function(_0x341c64){if(_0x341c64){freeIsNotKeySip(_0x341c64,_0x40755a[_0x2312('0x13')]);for(var _0x33dcac=0x0,_0x23b33f={},_0x2778c8={};_0x33dcac<_0x341c64['length'];_0x33dcac+=0x1){_0x23b33f=_0x341c64[_0x33dcac];if(_[_0x2312('0x43')](_0x40755a[_0x2312('0x13')][util[_0x2312('0x2b')](_0x2312('0x27'),_0x23b33f[_0x2312('0x28')])])){_0x40755a[_0x2312('0x13')][util[_0x2312('0x2b')]('SIP/%s',_0x23b33f[_0x2312('0x28')])]=new Telephone(_0x23b33f);}else{_0x40755a['mergeFromDatabase'](_0x40755a[_0x2312('0x13')][util[_0x2312('0x2b')]('SIP/%s',_0x23b33f[_0x2312('0x28')])],_0x23b33f);}}}return _0x40755a['telephones'];};};Realtime[_0x2312('0x41')][_0x2312('0x44')]=function(){var _0xf9cec3=this;return function(_0x3163c6){if(_0x3163c6){freeIsNotKeySip(_0x3163c6,_0xf9cec3[_0x2312('0x45')]);for(var _0x12da7b=0x0,_0x42cbe1={},_0x5a452c={};_0x12da7b<_0x3163c6[_0x2312('0x42')];_0x12da7b+=0x1){_0x42cbe1=_0x3163c6[_0x12da7b];if(_[_0x2312('0x43')](_0xf9cec3[_0x2312('0x45')][util[_0x2312('0x2b')](_0x2312('0x27'),_0x42cbe1['name'])])){_0xf9cec3[_0x2312('0x45')][util[_0x2312('0x2b')]('SIP/%s',_0x42cbe1['name'])]=new Trunk(_0x42cbe1);}else{_0xf9cec3[_0x2312('0x40')](_0xf9cec3[_0x2312('0x45')][util['format'](_0x2312('0x27'),_0x42cbe1['name'])],_0x42cbe1);}}}return _0xf9cec3[_0x2312('0x45')];};};Realtime[_0x2312('0x41')][_0x2312('0x46')]=function(){var _0x4165c5=this;return function(_0x37bd03){if(_0x37bd03){freeIsNotKey(_0x37bd03,_0x4165c5['voiceQueues'],_0x2312('0x28'));for(var _0x483d69=0x0,_0x2c969c={},_0x4eb0c0={};_0x483d69<_0x37bd03[_0x2312('0x42')];_0x483d69+=0x1){_0x2c969c=_0x37bd03[_0x483d69];if(_[_0x2312('0x43')](_0x4165c5[_0x2312('0x47')][_0x2c969c['name']])){_0x4165c5[_0x2312('0x47')][_0x2c969c[_0x2312('0x28')]]=new VoiceQueue(_0x2c969c);}else{_0x4165c5[_0x2312('0x40')](_0x4165c5['voiceQueues'][_0x2c969c[_0x2312('0x28')]],_0x2c969c);}}}return _0x4165c5['voiceQueues'];};};Realtime[_0x2312('0x41')][_0x2312('0x48')]=function(){var _0x54a164=this;return function(_0xce1687){if(_0xce1687){freeIsNotKey(_0xce1687,_0x54a164['triggers'],'id');for(var _0x56d7fd=0x0,_0xe6269c={},_0xfc6b1b={};_0x56d7fd<_0xce1687[_0x2312('0x42')];_0x56d7fd+=0x1){_0xe6269c=_0xce1687[_0x56d7fd];if(_[_0x2312('0x43')](_0x54a164[_0x2312('0x14')][_0xe6269c['id']])){_0x54a164[_0x2312('0x14')][_0xe6269c['id']]=new Trigger(_0xe6269c);}else{_0x54a164[_0x2312('0x40')](_0x54a164[_0x2312('0x14')][_0xe6269c['id']],_0xe6269c);}}}return _0x54a164[_0x2312('0x14')];};};Realtime[_0x2312('0x41')][_0x2312('0x49')]=function(){var _0x3b3698=this;return function(_0x4a1311){if(_0x4a1311){freeIsNotKey(_0x4a1311,_0x3b3698['templates'],'id');for(var _0x5bb193=0x0,_0x10c8d7={},_0x37f46e={};_0x5bb193<_0x4a1311[_0x2312('0x42')];_0x5bb193+=0x1){_0x10c8d7=_0x4a1311[_0x5bb193];if(_[_0x2312('0x43')](_0x3b3698[_0x2312('0x16')][_0x10c8d7['id']])){_0x3b3698[_0x2312('0x16')][_0x10c8d7['id']]=new Template(_0x10c8d7);}else{_0x3b3698[_0x2312('0x40')](_0x3b3698[_0x2312('0x16')][_0x10c8d7['id']],_0x10c8d7);}}}return _0x3b3698[_0x2312('0x16')];};};Realtime[_0x2312('0x41')]['initZendeskAccounts']=function(){var _0x51eb4c=this;return function(_0x2470fb){if(_0x2470fb){freeIsNotKey(_0x2470fb,_0x51eb4c[_0x2312('0x1c')],'id');for(var _0x3cfc1d=0x0,_0xc3c0f2={},_0x3fc091={};_0x3cfc1d<_0x2470fb[_0x2312('0x42')];_0x3cfc1d+=0x1){_0xc3c0f2=_0x2470fb[_0x3cfc1d];if(_[_0x2312('0x43')](_0x51eb4c[_0x2312('0x1c')][_0xc3c0f2['id']])){_0x51eb4c[_0x2312('0x1c')][_0xc3c0f2['id']]=new ZendeskAccount(_0xc3c0f2);}else{_0x51eb4c['mergeFromDatabase'](_0x51eb4c[_0x2312('0x1c')][_0xc3c0f2['id']],_0xc3c0f2);}}}return _0x51eb4c[_0x2312('0x1c')];};};Realtime[_0x2312('0x41')][_0x2312('0x4a')]=function(){var _0x1b1489=this;return function(_0x34840b){if(_0x34840b){freeIsNotKey(_0x34840b,_0x1b1489['salesforceAccounts'],'id');for(var _0x5cc3b5=0x0,_0x36287a={},_0x554f40={};_0x5cc3b5<_0x34840b['length'];_0x5cc3b5+=0x1){_0x36287a=_0x34840b[_0x5cc3b5];if(_[_0x2312('0x43')](_0x1b1489['salesforceAccounts'][_0x36287a['id']])){_0x1b1489[_0x2312('0x1d')][_0x36287a['id']]=new SalesforceAccount(_0x36287a);}else{_0x1b1489[_0x2312('0x40')](_0x1b1489['salesforceAccounts'][_0x36287a['id']],_0x36287a);}}}return _0x1b1489[_0x2312('0x1d')];};};Realtime['prototype'][_0x2312('0x4b')]=function(){var _0x128234=this;return function(_0x1e59ac){if(_0x1e59ac){freeIsNotKey(_0x1e59ac,_0x128234[_0x2312('0x1f')],'id');for(var _0x47f4c6=0x0,_0x439958={},_0x14084e={};_0x47f4c6<_0x1e59ac[_0x2312('0x42')];_0x47f4c6+=0x1){_0x439958=_0x1e59ac[_0x47f4c6];if(_[_0x2312('0x43')](_0x128234[_0x2312('0x1f')][_0x439958['id']])){_0x128234['freshdeskAccounts'][_0x439958['id']]=new FreshdeskAccount(_0x439958);}else{_0x128234['mergeFromDatabase'](_0x128234[_0x2312('0x1f')][_0x439958['id']],_0x439958);}}}return _0x128234['freshdeskAccounts'];};};Realtime['prototype'][_0x2312('0x4c')]=function(){var _0x1ee20b=this;return function(_0xf6c322){if(_0xf6c322){freeIsNotKey(_0xf6c322,_0x1ee20b[_0x2312('0x20')],'id');for(var _0x321dd1=0x0,_0x545671={},_0x8aa4ac={};_0x321dd1<_0xf6c322['length'];_0x321dd1+=0x1){_0x545671=_0xf6c322[_0x321dd1];if(_[_0x2312('0x43')](_0x1ee20b['zohoAccounts'][_0x545671['id']])){_0x1ee20b['zohoAccounts'][_0x545671['id']]=new ZohoAccount(_0x545671);}else{_0x1ee20b[_0x2312('0x40')](_0x1ee20b['zohoAccounts'][_0x545671['id']],_0x545671);}}}return _0x1ee20b[_0x2312('0x20')];};};Realtime[_0x2312('0x41')][_0x2312('0x4d')]=function(){var _0x3f99cd=this;return function(_0x29d434){if(_0x29d434){freeIsNotKey(_0x29d434,_0x3f99cd[_0x2312('0x21')],'id');for(var _0x281934=0x0,_0x35121d={},_0x19dac4={};_0x281934<_0x29d434[_0x2312('0x42')];_0x281934+=0x1){_0x35121d=_0x29d434[_0x281934];if(_[_0x2312('0x43')](_0x3f99cd['deskAccounts'][_0x35121d['id']])){_0x3f99cd[_0x2312('0x21')][_0x35121d['id']]=new DeskAccount(_0x35121d);}else{_0x3f99cd[_0x2312('0x40')](_0x3f99cd[_0x2312('0x21')][_0x35121d['id']],_0x35121d);}}}return _0x3f99cd[_0x2312('0x21')];};};Realtime[_0x2312('0x41')][_0x2312('0x4e')]=function(){var _0x2218f2=this;return function(_0x219219){if(_0x219219){freeIsNotKey(_0x219219,_0x2218f2[_0x2312('0x1e')],'id');for(var _0x3beb12=0x0,_0xb46d1c={},_0x3fe90e={};_0x3beb12<_0x219219['length'];_0x3beb12+=0x1){_0xb46d1c=_0x219219[_0x3beb12];if(_[_0x2312('0x43')](_0x2218f2[_0x2312('0x1e')][_0xb46d1c['id']])){_0x2218f2[_0x2312('0x1e')][_0xb46d1c['id']]=new SugarcrmAccount(_0xb46d1c);}else{_0x2218f2['mergeFromDatabase'](_0x2218f2[_0x2312('0x1e')][_0xb46d1c['id']],_0xb46d1c);}}}return _0x2218f2[_0x2312('0x1e')];};};Realtime[_0x2312('0x41')][_0x2312('0x4f')]=function(){var _0x17a8a3=this;return function(_0x1f7f89){if(_0x1f7f89){freeIsNotKey(_0x1f7f89,_0x17a8a3[_0x2312('0x22')],'id');for(var _0x266d9e=0x0,_0x3b89b0={},_0x5a51c8={};_0x266d9e<_0x1f7f89[_0x2312('0x42')];_0x266d9e+=0x1){_0x3b89b0=_0x1f7f89[_0x266d9e];if(_[_0x2312('0x43')](_0x17a8a3[_0x2312('0x22')][_0x3b89b0['id']])){_0x17a8a3[_0x2312('0x22')][_0x3b89b0['id']]=new VtigerAccount(_0x3b89b0);}else{_0x17a8a3[_0x2312('0x40')](_0x17a8a3['vtigerAccounts'][_0x3b89b0['id']],_0x3b89b0);}}}return _0x17a8a3[_0x2312('0x22')];};};Realtime[_0x2312('0x41')][_0x2312('0x50')]=function(){var _0x48a676=this;return function(_0x106898){if(_0x106898){freeIsNotKey(_0x106898,_0x48a676[_0x2312('0x23')],'id');for(var _0x205b9b=0x0,_0x31653a={},_0x4d1728={};_0x205b9b<_0x106898[_0x2312('0x42')];_0x205b9b+=0x1){_0x31653a=_0x106898[_0x205b9b];if(_[_0x2312('0x43')](_0x48a676[_0x2312('0x23')][_0x31653a['id']])){_0x48a676[_0x2312('0x23')][_0x31653a['id']]=new ServicenowAccount(_0x31653a);}else{_0x48a676[_0x2312('0x40')](_0x48a676[_0x2312('0x23')][_0x31653a['id']],_0x31653a);}}}return _0x48a676[_0x2312('0x23')];};};Realtime[_0x2312('0x41')][_0x2312('0x51')]=function(){var _0x23fa21=this;return function(_0x5db7d2){if(_0x5db7d2){freeIsNotKey(_0x5db7d2,_0x23fa21[_0x2312('0x24')],'id');for(var _0x4e3bb8=0x0,_0x31071d={},_0x6de263={};_0x4e3bb8<_0x5db7d2['length'];_0x4e3bb8+=0x1){_0x31071d=_0x5db7d2[_0x4e3bb8];if(_[_0x2312('0x43')](_0x23fa21[_0x2312('0x24')][_0x31071d['id']])){_0x23fa21[_0x2312('0x24')][_0x31071d['id']]=new Dynamics365Account(_0x31071d);}else{_0x23fa21[_0x2312('0x40')](_0x23fa21['dynamics365Accounts'][_0x31071d['id']],_0x31071d);}}}return _0x23fa21['dynamics365Accounts'];};};Realtime[_0x2312('0x41')][_0x2312('0x52')]=function(){var _0x14e09e=this;return function(_0x3c9721){if(_0x3c9721){freeIsNotKey(_0x3c9721,_0x14e09e[_0x2312('0x53')],'id');for(var _0x591346=0x0,_0x1f9626={},_0x3996aa={};_0x591346<_0x3c9721['length'];_0x591346+=0x1){_0x1f9626=_0x3c9721[_0x591346];if(_[_0x2312('0x43')](_0x14e09e[_0x2312('0x53')][_0x1f9626['id']])){_0x14e09e[_0x2312('0x53')][_0x1f9626['id']]=new FreshsalesAccount(_0x1f9626);}else{_0x14e09e[_0x2312('0x40')](_0x14e09e['freshsalesAccounts'][_0x1f9626['id']],_0x1f9626);}}}return _0x14e09e[_0x2312('0x53')];};};Realtime[_0x2312('0x41')][_0x2312('0x54')]=function(){var _0x4a4019=this;return function(_0x2eadea){for(var _0x46973e=0x0;_0x46973e<_0x2eadea['length'];_0x46973e+=0x1){_[_0x2312('0x55')](_0x4a4019[_0x2312('0x47')][_0x2eadea[_0x46973e][_0x2312('0x28')]],_0x2eadea[_0x46973e]);}return _0x4a4019[_0x2312('0x47')];};};Realtime[_0x2312('0x41')][_0x2312('0x56')]=function(){var _0x20e342=this;return function(_0x37936e){clearVoiceQueues(_0x20e342[_0x2312('0x47')]);if(_0x37936e){_0x37936e=_[_0x2312('0x57')](_0x37936e,_0x2312('0x58'));for(var _0x57231d in _0x37936e){if(_0x37936e[_0x2312('0x26')](_0x57231d)){var _0x357679={};for(var _0x62bd90=0x0;_0x62bd90<_0x37936e[_0x57231d]['length'];_0x62bd90+=0x1){var _0x4b8279=_0x37936e[_0x57231d][_0x62bd90]['queue'];if(_0x20e342[_0x2312('0x47')][_0x4b8279]){if(_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x59')]){_0x20e342['voiceQueues'][_0x4b8279][_0x2312('0x5a')]+=0x1;}if(_0x37936e[_0x57231d][_0x62bd90]['queuecallerabandon']){_0x20e342[_0x2312('0x47')][_0x4b8279][_0x2312('0x34')]+=0x1;}_0x20e342['voiceQueues'][_0x4b8279]['sumHoldTime']+=moment(_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x5b')])[_0x2312('0x5c')](moment(_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x5d')]),_0x2312('0x5e'))||0x0;if(_0x62bd90===_0x37936e[_0x57231d][_0x2312('0x42')]-0x1){_0x20e342['voiceQueues'][_0x4b8279][_0x2312('0x2f')]+=moment(_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x5f')]||_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x60')]||_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x61')])[_0x2312('0x5c')](moment(_0x37936e[_0x57231d][_0x62bd90]['queuecallerjoinAt']),_0x2312('0x5e'))||0x0;_0x20e342[_0x2312('0x47')][_0x4b8279]['total']+=0x1;if(_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x62')]){_0x20e342[_0x2312('0x47')][_0x4b8279][_0x2312('0x2d')]+=0x1;_0x20e342[_0x2312('0x47')][_0x4b8279][_0x2312('0x30')]+=moment(_0x37936e[_0x57231d][_0x62bd90]['queuecallercompleteAt'])[_0x2312('0x5c')](moment(_0x37936e[_0x57231d][_0x62bd90][_0x2312('0x5b')]),_0x2312('0x5e'))||0x0;}}else{_0x20e342[_0x2312('0x47')][_0x4b8279][_0x2312('0x2f')]+=_0x20e342[_0x2312('0x47')][_0x4b8279][_0x2312('0x2e')]||0x0;}}}}}}return _0x20e342['voiceQueues'];};};Realtime[_0x2312('0x41')]['initVoiceCallReports']=function(){var _0x54225b=this;return function(_0x23f8fb){clearVoiceCallReports(_0x54225b[_0x2312('0x17')]);if(_0x23f8fb){for(var _0x18036f=0x0;_0x18036f<_0x23f8fb[_0x2312('0x42')];_0x18036f+=0x1){_0x54225b['outbound'][_0x2312('0x2c')]+=0x1;_0x54225b[_0x2312('0x17')][_0x2312('0x2f')]+=_0x23f8fb[_0x18036f][_0x2312('0x63')];if(_0x23f8fb[_0x18036f][_0x2312('0x64')]==='ANSWERED'){_0x54225b[_0x2312('0x17')]['answered']+=0x1;_0x54225b[_0x2312('0x17')][_0x2312('0x2e')]+=_0x23f8fb[_0x18036f][_0x2312('0x63')]-_0x23f8fb[_0x18036f][_0x2312('0x65')]||0x0;_0x54225b[_0x2312('0x17')]['sumBillable']+=_0x23f8fb[_0x18036f][_0x2312('0x65')];}}}return _0x54225b[_0x2312('0x17')];};};Realtime['prototype'][_0x2312('0x66')]=function(){var _0x225122=this;return function(_0x547d7b){if(_0x547d7b){freeIsNotKey(_0x547d7b,_0x225122[_0x2312('0x15')],_0x2312('0x28'));for(var _0x562c05=0x0,_0x2db5d8={};_0x562c05<_0x547d7b[_0x2312('0x42')];_0x562c05+=0x1){_0x2db5d8=_0x547d7b[_0x562c05];if(_[_0x2312('0x43')](_0x225122[_0x2312('0x15')][_0x2db5d8[_0x2312('0x28')]])){_0x225122[_0x2312('0x15')][_0x2db5d8[_0x2312('0x28')]]=new Campaign(_0x2db5d8);}else{_0x225122[_0x2312('0x40')](_0x225122[_0x2312('0x15')][_0x2db5d8[_0x2312('0x28')]],_0x2db5d8);_0x225122[_0x2312('0x15')][_0x2db5d8[_0x2312('0x28')]][_0x2312('0x67')]=_0x2db5d8[_0x2312('0x68')]?_0x2db5d8[_0x2312('0x68')][_0x2312('0x28')]:undefined;}}}return _0x225122[_0x2312('0x15')];};};Realtime['prototype'][_0x2312('0x69')]=function(){var _0x3f5922=this;return function(_0x53a97e){if(_0x53a97e){freeIsNotKey(_0x53a97e,_0x3f5922[_0x2312('0x18')],'id');for(var _0x40b9b7=0x0,_0x34ce01={};_0x40b9b7<_0x53a97e[_0x2312('0x42')];_0x40b9b7+=0x1){_0x34ce01=_0x53a97e[_0x40b9b7];if(_['isUndefined'](_0x3f5922[_0x2312('0x18')][_0x34ce01['id']])){_0x3f5922[_0x2312('0x18')][_0x34ce01['id']]=new VoiceExtension(_0x34ce01);}else{_0x3f5922['mergeFromDatabase'](_0x3f5922[_0x2312('0x18')][_0x34ce01['id']],_0x34ce01);}}}return _0x3f5922[_0x2312('0x18')];};};Realtime[_0x2312('0x41')][_0x2312('0x6a')]=function(){var _0x2f98d3=this;return function(_0x38dec7){clearCampaigns(_0x2f98d3[_0x2312('0x15')]);for(var _0x314186=0x0;_0x314186<_0x38dec7[_0x2312('0x42')];_0x314186+=0x1){_['merge'](_0x2f98d3[_0x2312('0x15')][_0x38dec7[_0x314186][_0x2312('0x28')]],_0x38dec7[_0x314186]);}return _0x2f98d3['campaigns'];};};Realtime['prototype'][_0x2312('0x6b')]=function(){var _0x583825=this;return function(_0xd2f9a7){if(_0xd2f9a7){freeIsNotKey(_0xd2f9a7,_0x583825[_0x2312('0x6c')],'id');for(var _0x466b1f=0x0,_0x20115d={},_0x237538={};_0x466b1f<_0xd2f9a7[_0x2312('0x42')];_0x466b1f+=0x1){_0x20115d=_0xd2f9a7[_0x466b1f];if(_['isUndefined'](_0x583825[_0x2312('0x6c')][_0x20115d['id']])){_0x583825[_0x2312('0x6c')][_0x20115d['id']]=new FaxAccount(_0x20115d);}else{_0x583825[_0x2312('0x40')](_0x583825['faxAccounts'][_0x20115d['id']],_0x20115d);}}}return _0x583825[_0x2312('0x6c')];};};module[_0x2312('0x6d')]=Realtime;
\ No newline at end of file
+var _0xba9d=['initFreshsalesAccounts','freshsalesAccounts','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','duration','ANSWERED','billableseconds','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','../model/dynamics365Account','../model/faxAccount','agents','telephones','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','queueChannels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','vtigerAccounts','servicenowAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','answered','sumHoldTime','sumDuration','sumBillable','ivrTotalCallsDays','ivrAnswerCallsDay','isEmpty','total','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','length','isUndefined','initTelephones','mergeFromDatabase','trunks','initVoiceQueues','initTriggers','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','zohoAccounts','deskAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','dynamics365Accounts'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0xba9d,0x15a));var _0xdba9=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xba9d[_0x36c5b0];return _0xf19333;};'use strict';var BPromise=require(_0xdba9('0x0'));var util=require(_0xdba9('0x1'));var _=require(_0xdba9('0x2'));var moment=require(_0xdba9('0x3'));var Agent=require(_0xdba9('0x4'));var Telephone=require(_0xdba9('0x5'));var Trunk=require(_0xdba9('0x6'));var VoiceQueue=require(_0xdba9('0x7'));var Trigger=require(_0xdba9('0x8'));var Template=require(_0xdba9('0x9'));var Campaign=require(_0xdba9('0xa'));var VoiceExtension=require(_0xdba9('0xb'));var ZendeskAccount=require(_0xdba9('0xc'));var SalesforceAccount=require(_0xdba9('0xd'));var FreshdeskAccount=require(_0xdba9('0xe'));var SugarcrmAccount=require(_0xdba9('0xf'));var ZohoAccount=require(_0xdba9('0x10'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xdba9('0x11'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0xdba9('0x12'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0xdba9('0x13'));var Realtime=function(){this[_0xdba9('0x14')]={};this[_0xdba9('0x15')]={};this['trunks']={};this[_0xdba9('0x16')]={};this[_0xdba9('0x17')]={};this[_0xdba9('0x18')]={};this[_0xdba9('0x19')]={};this[_0xdba9('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xdba9('0x1b')]={};this['channels']={};this[_0xdba9('0x1c')]={};this[_0xdba9('0x1d')]={};this[_0xdba9('0x1e')]={};this[_0xdba9('0x1f')]={};this[_0xdba9('0x20')]={};this[_0xdba9('0x21')]={};this[_0xdba9('0x22')]={};this[_0xdba9('0x23')]={};this['zohoAccounts']={};this['deskAccounts']={};this[_0xdba9('0x24')]={};this[_0xdba9('0x25')]={};this['dynamics365Accounts']={};this['freshsalesAccounts']={};this[_0xdba9('0x26')]={};};function freeIsNotKey(_0xff006d,_0x469ea5,_0x467101){var _0x565aa3=_[_0xdba9('0x27')](_0xff006d,function(_0x2a4aee,_0x4e9197){return _0x2a4aee[_0x467101];});for(var _0x3115e0 in _0x469ea5){if(_0x469ea5[_0xdba9('0x28')](_0x3115e0)){if(!_0x565aa3[_0x3115e0]){delete _0x469ea5[_0x3115e0];}}}}function freeIsNotKeySip(_0x57981e,_0x486707){var _0x20d157=_[_0xdba9('0x27')](_0x57981e,function(_0x2e9579,_0x250089){return util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x2e9579[_0xdba9('0x2b')]);});for(var _0x3e376c in _0x486707){if(_0x486707[_0xdba9('0x28')](_0x3e376c)){if(!_0x20d157[_0x3e376c]){delete _0x486707[_0x3e376c];}}}}function freeIsNotKeyAgent(_0x1ee894,_0x15f026){var _0xb2ff71=_[_0xdba9('0x27')](_0x1ee894,function(_0x11392a,_0x22308d){var _0x1cbf4f=_[_0xdba9('0x2c')](_0x11392a[_0xdba9('0x2d')])?util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x11392a[_0xdba9('0x2b')]):_0x11392a[_0xdba9('0x2d')];return _0x1cbf4f;});for(var _0x2b698b in _0x15f026){if(_0x15f026['hasOwnProperty'](_0x2b698b)){if(!_0xb2ff71[_0x2b698b]){delete _0x15f026[_0x2b698b];}}}}function clearVoiceCallReports(_0x2abec8){_0x2abec8['total']=0x0;_0x2abec8[_0xdba9('0x2e')]=0x0;_0x2abec8[_0xdba9('0x2f')]=0x0;_0x2abec8[_0xdba9('0x30')]=0x0;_0x2abec8[_0xdba9('0x31')]=0x0;}function clearCampaigns(_0x58fbdc){if(!_['isEmpty'](_0x58fbdc)){for(var _0x3a5b81 in _0x58fbdc){if(_0x58fbdc[_0xdba9('0x28')](_0x3a5b81)){_0x58fbdc[_0x3a5b81][_0xdba9('0x32')]=0x0;_0x58fbdc[_0x3a5b81][_0xdba9('0x33')]=0x0;}}}}function clearVoiceQueues(_0x179b76){if(!_[_0xdba9('0x34')](_0x179b76)){for(var _0x4baa9 in _0x179b76){if(_0x179b76[_0xdba9('0x28')](_0x4baa9)){_0x179b76[_0x4baa9][_0xdba9('0x35')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x2e')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x36')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x37')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x2f')]=0x0;_0x179b76[_0x4baa9]['sumDuration']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x31')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x38')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x39')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3a')]=0x0;_0x179b76[_0x4baa9]['outboundCongestionCallsDay']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3b')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3c')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3d')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3e')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3f')]=0x0;_0x179b76[_0x4baa9]['outboundOriginateFailureCallsDay']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x40')]=0x0;_0x179b76[_0x4baa9]['outboundReCallsDay']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x38')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x41')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x42')]=!![];}}}}Realtime[_0xdba9('0x43')]['mergeFromDatabase']=function(_0x149711,_0x3715a2){for(var _0x10e7d9 in _0x3715a2){if(_0x149711[_0xdba9('0x28')](_0x10e7d9)){_0x149711[_0x10e7d9]=_0x3715a2[_0x10e7d9];}}};Realtime[_0xdba9('0x43')][_0xdba9('0x44')]=function(){var _0x46502d=this;return function(_0x87d729){if(_0x87d729){freeIsNotKeyAgent(_0x87d729,_0x46502d['agents']);for(var _0x4f1f5a=0x0,_0x1be646={},_0xbd2b2a={};_0x4f1f5a<_0x87d729[_0xdba9('0x45')];_0x4f1f5a+=0x1){_0x1be646=_0x87d729[_0x4f1f5a];var _0x28d9e3=_[_0xdba9('0x2c')](_0x1be646['interface'])?util[_0xdba9('0x29')]('SIP/%s',_0x1be646[_0xdba9('0x2b')]):_0x1be646['interface'];if(_[_0xdba9('0x46')](_0x46502d[_0xdba9('0x14')][_0x28d9e3])){_0x46502d[_0xdba9('0x14')][_0x28d9e3]=new Agent(_0x1be646);}else{_0x46502d['mergeFromDatabase'](_0x46502d[_0xdba9('0x14')][_0x28d9e3],_0x1be646);}}}return _0x46502d[_0xdba9('0x14')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x47')]=function(){var _0x5b9aa5=this;return function(_0x59433d){if(_0x59433d){freeIsNotKeySip(_0x59433d,_0x5b9aa5[_0xdba9('0x15')]);for(var _0x387b2c=0x0,_0x15d5cb={},_0x442e24={};_0x387b2c<_0x59433d[_0xdba9('0x45')];_0x387b2c+=0x1){_0x15d5cb=_0x59433d[_0x387b2c];if(_[_0xdba9('0x46')](_0x5b9aa5[_0xdba9('0x15')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x15d5cb[_0xdba9('0x2b')])])){_0x5b9aa5[_0xdba9('0x15')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x15d5cb[_0xdba9('0x2b')])]=new Telephone(_0x15d5cb);}else{_0x5b9aa5[_0xdba9('0x48')](_0x5b9aa5[_0xdba9('0x15')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x15d5cb[_0xdba9('0x2b')])],_0x15d5cb);}}}return _0x5b9aa5[_0xdba9('0x15')];};};Realtime[_0xdba9('0x43')]['initTrunks']=function(){var _0x52b38a=this;return function(_0x1efe3e){if(_0x1efe3e){freeIsNotKeySip(_0x1efe3e,_0x52b38a['trunks']);for(var _0x195aeb=0x0,_0x24ebd8={},_0x4d5559={};_0x195aeb<_0x1efe3e['length'];_0x195aeb+=0x1){_0x24ebd8=_0x1efe3e[_0x195aeb];if(_[_0xdba9('0x46')](_0x52b38a[_0xdba9('0x49')][util['format']('SIP/%s',_0x24ebd8[_0xdba9('0x2b')])])){_0x52b38a[_0xdba9('0x49')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x24ebd8[_0xdba9('0x2b')])]=new Trunk(_0x24ebd8);}else{_0x52b38a[_0xdba9('0x48')](_0x52b38a[_0xdba9('0x49')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x24ebd8[_0xdba9('0x2b')])],_0x24ebd8);}}}return _0x52b38a[_0xdba9('0x49')];};};Realtime['prototype'][_0xdba9('0x4a')]=function(){var _0x1153b8=this;return function(_0x528ca5){if(_0x528ca5){freeIsNotKey(_0x528ca5,_0x1153b8['voiceQueues'],'name');for(var _0x562ea2=0x0,_0x12d30b={},_0x260328={};_0x562ea2<_0x528ca5[_0xdba9('0x45')];_0x562ea2+=0x1){_0x12d30b=_0x528ca5[_0x562ea2];if(_[_0xdba9('0x46')](_0x1153b8[_0xdba9('0x16')][_0x12d30b[_0xdba9('0x2b')]])){_0x1153b8[_0xdba9('0x16')][_0x12d30b[_0xdba9('0x2b')]]=new VoiceQueue(_0x12d30b);}else{_0x1153b8[_0xdba9('0x48')](_0x1153b8['voiceQueues'][_0x12d30b[_0xdba9('0x2b')]],_0x12d30b);}}}return _0x1153b8[_0xdba9('0x16')];};};Realtime['prototype'][_0xdba9('0x4b')]=function(){var _0x459779=this;return function(_0x3625d4){if(_0x3625d4){freeIsNotKey(_0x3625d4,_0x459779['triggers'],'id');for(var _0x44ed19=0x0,_0x41058b={},_0x4df304={};_0x44ed19<_0x3625d4[_0xdba9('0x45')];_0x44ed19+=0x1){_0x41058b=_0x3625d4[_0x44ed19];if(_[_0xdba9('0x46')](_0x459779['triggers'][_0x41058b['id']])){_0x459779[_0xdba9('0x17')][_0x41058b['id']]=new Trigger(_0x41058b);}else{_0x459779[_0xdba9('0x48')](_0x459779[_0xdba9('0x17')][_0x41058b['id']],_0x41058b);}}}return _0x459779[_0xdba9('0x17')];};};Realtime[_0xdba9('0x43')]['initTemplates']=function(){var _0x5538dc=this;return function(_0xa5f4c1){if(_0xa5f4c1){freeIsNotKey(_0xa5f4c1,_0x5538dc[_0xdba9('0x19')],'id');for(var _0x58685f=0x0,_0x1f783a={},_0x334dc7={};_0x58685f<_0xa5f4c1[_0xdba9('0x45')];_0x58685f+=0x1){_0x1f783a=_0xa5f4c1[_0x58685f];if(_['isUndefined'](_0x5538dc[_0xdba9('0x19')][_0x1f783a['id']])){_0x5538dc[_0xdba9('0x19')][_0x1f783a['id']]=new Template(_0x1f783a);}else{_0x5538dc['mergeFromDatabase'](_0x5538dc[_0xdba9('0x19')][_0x1f783a['id']],_0x1f783a);}}}return _0x5538dc['templates'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4c')]=function(){var _0x753c8=this;return function(_0x4f35af){if(_0x4f35af){freeIsNotKey(_0x4f35af,_0x753c8[_0xdba9('0x20')],'id');for(var _0x1c8204=0x0,_0x172245={},_0x254a9e={};_0x1c8204<_0x4f35af[_0xdba9('0x45')];_0x1c8204+=0x1){_0x172245=_0x4f35af[_0x1c8204];if(_[_0xdba9('0x46')](_0x753c8[_0xdba9('0x20')][_0x172245['id']])){_0x753c8[_0xdba9('0x20')][_0x172245['id']]=new ZendeskAccount(_0x172245);}else{_0x753c8[_0xdba9('0x48')](_0x753c8[_0xdba9('0x20')][_0x172245['id']],_0x172245);}}}return _0x753c8['zendeskAccounts'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4d')]=function(){var _0x3eaaff=this;return function(_0x117254){if(_0x117254){freeIsNotKey(_0x117254,_0x3eaaff['salesforceAccounts'],'id');for(var _0x3d3f28=0x0,_0x36ebe1={},_0x3aeebc={};_0x3d3f28<_0x117254[_0xdba9('0x45')];_0x3d3f28+=0x1){_0x36ebe1=_0x117254[_0x3d3f28];if(_[_0xdba9('0x46')](_0x3eaaff[_0xdba9('0x21')][_0x36ebe1['id']])){_0x3eaaff[_0xdba9('0x21')][_0x36ebe1['id']]=new SalesforceAccount(_0x36ebe1);}else{_0x3eaaff[_0xdba9('0x48')](_0x3eaaff[_0xdba9('0x21')][_0x36ebe1['id']],_0x36ebe1);}}}return _0x3eaaff[_0xdba9('0x21')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4e')]=function(){var _0x561f6f=this;return function(_0x2dcca7){if(_0x2dcca7){freeIsNotKey(_0x2dcca7,_0x561f6f[_0xdba9('0x23')],'id');for(var _0x9359d=0x0,_0x26d161={},_0x4d745a={};_0x9359d<_0x2dcca7[_0xdba9('0x45')];_0x9359d+=0x1){_0x26d161=_0x2dcca7[_0x9359d];if(_[_0xdba9('0x46')](_0x561f6f[_0xdba9('0x23')][_0x26d161['id']])){_0x561f6f[_0xdba9('0x23')][_0x26d161['id']]=new FreshdeskAccount(_0x26d161);}else{_0x561f6f[_0xdba9('0x48')](_0x561f6f[_0xdba9('0x23')][_0x26d161['id']],_0x26d161);}}}return _0x561f6f[_0xdba9('0x23')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4f')]=function(){var _0x4df279=this;return function(_0x41be0c){if(_0x41be0c){freeIsNotKey(_0x41be0c,_0x4df279['zohoAccounts'],'id');for(var _0x50e54c=0x0,_0xd4f4c={},_0x37ead1={};_0x50e54c<_0x41be0c['length'];_0x50e54c+=0x1){_0xd4f4c=_0x41be0c[_0x50e54c];if(_[_0xdba9('0x46')](_0x4df279['zohoAccounts'][_0xd4f4c['id']])){_0x4df279[_0xdba9('0x50')][_0xd4f4c['id']]=new ZohoAccount(_0xd4f4c);}else{_0x4df279[_0xdba9('0x48')](_0x4df279[_0xdba9('0x50')][_0xd4f4c['id']],_0xd4f4c);}}}return _0x4df279['zohoAccounts'];};};Realtime[_0xdba9('0x43')]['initDeskAccounts']=function(){var _0x38288d=this;return function(_0x144dca){if(_0x144dca){freeIsNotKey(_0x144dca,_0x38288d['deskAccounts'],'id');for(var _0x256cc9=0x0,_0x5b233c={},_0x4c6024={};_0x256cc9<_0x144dca[_0xdba9('0x45')];_0x256cc9+=0x1){_0x5b233c=_0x144dca[_0x256cc9];if(_[_0xdba9('0x46')](_0x38288d[_0xdba9('0x51')][_0x5b233c['id']])){_0x38288d[_0xdba9('0x51')][_0x5b233c['id']]=new DeskAccount(_0x5b233c);}else{_0x38288d[_0xdba9('0x48')](_0x38288d[_0xdba9('0x51')][_0x5b233c['id']],_0x5b233c);}}}return _0x38288d['deskAccounts'];};};Realtime[_0xdba9('0x43')]['initSugarcrmAccounts']=function(){var _0x6c8287=this;return function(_0x4bea3b){if(_0x4bea3b){freeIsNotKey(_0x4bea3b,_0x6c8287[_0xdba9('0x22')],'id');for(var _0x6eb66c=0x0,_0xcb27d3={},_0x58f742={};_0x6eb66c<_0x4bea3b[_0xdba9('0x45')];_0x6eb66c+=0x1){_0xcb27d3=_0x4bea3b[_0x6eb66c];if(_[_0xdba9('0x46')](_0x6c8287['sugarcrmAccounts'][_0xcb27d3['id']])){_0x6c8287[_0xdba9('0x22')][_0xcb27d3['id']]=new SugarcrmAccount(_0xcb27d3);}else{_0x6c8287[_0xdba9('0x48')](_0x6c8287['sugarcrmAccounts'][_0xcb27d3['id']],_0xcb27d3);}}}return _0x6c8287['sugarcrmAccounts'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x52')]=function(){var _0x286f49=this;return function(_0x3a7c68){if(_0x3a7c68){freeIsNotKey(_0x3a7c68,_0x286f49[_0xdba9('0x24')],'id');for(var _0x5f5c9b=0x0,_0x108754={},_0x4a2c1e={};_0x5f5c9b<_0x3a7c68[_0xdba9('0x45')];_0x5f5c9b+=0x1){_0x108754=_0x3a7c68[_0x5f5c9b];if(_['isUndefined'](_0x286f49['vtigerAccounts'][_0x108754['id']])){_0x286f49[_0xdba9('0x24')][_0x108754['id']]=new VtigerAccount(_0x108754);}else{_0x286f49[_0xdba9('0x48')](_0x286f49['vtigerAccounts'][_0x108754['id']],_0x108754);}}}return _0x286f49['vtigerAccounts'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x53')]=function(){var _0x2da9fd=this;return function(_0x5c9975){if(_0x5c9975){freeIsNotKey(_0x5c9975,_0x2da9fd['servicenowAccounts'],'id');for(var _0x3e8d89=0x0,_0x4a98ad={},_0xd93828={};_0x3e8d89<_0x5c9975[_0xdba9('0x45')];_0x3e8d89+=0x1){_0x4a98ad=_0x5c9975[_0x3e8d89];if(_['isUndefined'](_0x2da9fd[_0xdba9('0x25')][_0x4a98ad['id']])){_0x2da9fd[_0xdba9('0x25')][_0x4a98ad['id']]=new ServicenowAccount(_0x4a98ad);}else{_0x2da9fd[_0xdba9('0x48')](_0x2da9fd[_0xdba9('0x25')][_0x4a98ad['id']],_0x4a98ad);}}}return _0x2da9fd[_0xdba9('0x25')];};};Realtime['prototype'][_0xdba9('0x54')]=function(){var _0x29b5e2=this;return function(_0xe3cc03){if(_0xe3cc03){freeIsNotKey(_0xe3cc03,_0x29b5e2[_0xdba9('0x55')],'id');for(var _0x51e7fd=0x0,_0x1191cc={},_0x5ddf53={};_0x51e7fd<_0xe3cc03['length'];_0x51e7fd+=0x1){_0x1191cc=_0xe3cc03[_0x51e7fd];if(_['isUndefined'](_0x29b5e2['dynamics365Accounts'][_0x1191cc['id']])){_0x29b5e2[_0xdba9('0x55')][_0x1191cc['id']]=new Dynamics365Account(_0x1191cc);}else{_0x29b5e2[_0xdba9('0x48')](_0x29b5e2['dynamics365Accounts'][_0x1191cc['id']],_0x1191cc);}}}return _0x29b5e2[_0xdba9('0x55')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x56')]=function(){var _0x4d17f7=this;return function(_0x85937){if(_0x85937){freeIsNotKey(_0x85937,_0x4d17f7['freshsalesAccounts'],'id');for(var _0x40bdae=0x0,_0x5e582d={},_0x30bf43={};_0x40bdae<_0x85937[_0xdba9('0x45')];_0x40bdae+=0x1){_0x5e582d=_0x85937[_0x40bdae];if(_['isUndefined'](_0x4d17f7[_0xdba9('0x57')][_0x5e582d['id']])){_0x4d17f7[_0xdba9('0x57')][_0x5e582d['id']]=new FreshsalesAccount(_0x5e582d);}else{_0x4d17f7[_0xdba9('0x48')](_0x4d17f7[_0xdba9('0x57')][_0x5e582d['id']],_0x5e582d);}}}return _0x4d17f7[_0xdba9('0x57')];};};Realtime[_0xdba9('0x43')]['initVoiceQueueHopperHistory']=function(){var _0x2920d0=this;return function(_0x45a3df){for(var _0x3dfe1a=0x0;_0x3dfe1a<_0x45a3df[_0xdba9('0x45')];_0x3dfe1a+=0x1){_[_0xdba9('0x58')](_0x2920d0[_0xdba9('0x16')][_0x45a3df[_0x3dfe1a][_0xdba9('0x2b')]],_0x45a3df[_0x3dfe1a]);}return _0x2920d0[_0xdba9('0x16')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x59')]=function(){var _0x1af921=this;return function(_0x259ec3){clearVoiceQueues(_0x1af921[_0xdba9('0x16')]);if(_0x259ec3){_0x259ec3=_['groupBy'](_0x259ec3,_0xdba9('0x5a'));for(var _0x37d4de in _0x259ec3){if(_0x259ec3[_0xdba9('0x28')](_0x37d4de)){var _0x232a30={};for(var _0x1d6dea=0x0;_0x1d6dea<_0x259ec3[_0x37d4de][_0xdba9('0x45')];_0x1d6dea+=0x1){var _0x43b73a=_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5b')];if(_0x1af921[_0xdba9('0x16')][_0x43b73a]){if(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5c')]){_0x1af921['voiceQueues'][_0x43b73a][_0xdba9('0x36')]+=0x1;}if(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5d')]){_0x1af921['voiceQueues'][_0x43b73a]['abandoned']+=0x1;}_0x1af921[_0xdba9('0x16')][_0x43b73a]['sumHoldTime']+=moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5e')])[_0xdba9('0x5f')](moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x60')]),_0xdba9('0x61'))||0x0;if(_0x1d6dea===_0x259ec3[_0x37d4de][_0xdba9('0x45')]-0x1){_0x1af921['voiceQueues'][_0x43b73a][_0xdba9('0x30')]+=moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x62')]||_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x63')]||_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x64')])[_0xdba9('0x5f')](moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x60')]),_0xdba9('0x61'))||0x0;_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x35')]+=0x1;if(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x65')]){_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x2e')]+=0x1;_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x31')]+=moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x62')])[_0xdba9('0x5f')](moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5e')]),_0xdba9('0x61'))||0x0;}}else{_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x30')]+=_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x2f')]||0x0;}}}}}}return _0x1af921['voiceQueues'];};};Realtime[_0xdba9('0x43')]['initVoiceCallReports']=function(){var _0x29a9d9=this;return function(_0xe65b84){clearVoiceCallReports(_0x29a9d9[_0xdba9('0x1a')]);if(_0xe65b84){for(var _0x5760d2=0x0;_0x5760d2<_0xe65b84[_0xdba9('0x45')];_0x5760d2+=0x1){_0x29a9d9[_0xdba9('0x1a')][_0xdba9('0x35')]+=0x1;_0x29a9d9['outbound']['sumDuration']+=_0xe65b84[_0x5760d2][_0xdba9('0x66')];if(_0xe65b84[_0x5760d2]['disposition']===_0xdba9('0x67')){_0x29a9d9[_0xdba9('0x1a')][_0xdba9('0x2e')]+=0x1;_0x29a9d9[_0xdba9('0x1a')]['sumHoldTime']+=_0xe65b84[_0x5760d2][_0xdba9('0x66')]-_0xe65b84[_0x5760d2][_0xdba9('0x68')]||0x0;_0x29a9d9[_0xdba9('0x1a')][_0xdba9('0x31')]+=_0xe65b84[_0x5760d2][_0xdba9('0x68')];}}}return _0x29a9d9[_0xdba9('0x1a')];};};Realtime[_0xdba9('0x43')]['initCampaigns']=function(){var _0x1448c7=this;return function(_0x331148){if(_0x331148){freeIsNotKey(_0x331148,_0x1448c7[_0xdba9('0x18')],_0xdba9('0x2b'));for(var _0x5f2d93=0x0,_0x137217={};_0x5f2d93<_0x331148[_0xdba9('0x45')];_0x5f2d93+=0x1){_0x137217=_0x331148[_0x5f2d93];if(_['isUndefined'](_0x1448c7['campaigns'][_0x137217[_0xdba9('0x2b')]])){_0x1448c7[_0xdba9('0x18')][_0x137217['name']]=new Campaign(_0x137217);}else{_0x1448c7[_0xdba9('0x48')](_0x1448c7[_0xdba9('0x18')][_0x137217['name']],_0x137217);_0x1448c7[_0xdba9('0x18')][_0x137217[_0xdba9('0x2b')]]['dialQueueProject']=_0x137217['SquareProject']?_0x137217['SquareProject'][_0xdba9('0x2b')]:undefined;}}}return _0x1448c7[_0xdba9('0x18')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x69')]=function(){var _0x445e26=this;return function(_0x45d5fc){if(_0x45d5fc){freeIsNotKey(_0x45d5fc,_0x445e26[_0xdba9('0x1b')],'id');for(var _0x420967=0x0,_0x534026={};_0x420967<_0x45d5fc['length'];_0x420967+=0x1){_0x534026=_0x45d5fc[_0x420967];if(_['isUndefined'](_0x445e26['voiceExtensions'][_0x534026['id']])){_0x445e26['voiceExtensions'][_0x534026['id']]=new VoiceExtension(_0x534026);}else{_0x445e26[_0xdba9('0x48')](_0x445e26[_0xdba9('0x1b')][_0x534026['id']],_0x534026);}}}return _0x445e26[_0xdba9('0x1b')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x6a')]=function(){var _0x25b75d=this;return function(_0x22e157){clearCampaigns(_0x25b75d[_0xdba9('0x18')]);for(var _0x57d7ad=0x0;_0x57d7ad<_0x22e157[_0xdba9('0x45')];_0x57d7ad+=0x1){_['merge'](_0x25b75d[_0xdba9('0x18')][_0x22e157[_0x57d7ad][_0xdba9('0x2b')]],_0x22e157[_0x57d7ad]);}return _0x25b75d[_0xdba9('0x18')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x6b')]=function(){var _0x1ddb7a=this;return function(_0x41cfbc){if(_0x41cfbc){freeIsNotKey(_0x41cfbc,_0x1ddb7a['faxAccounts'],'id');for(var _0x5318d8=0x0,_0x11eae1={},_0x4db57a={};_0x5318d8<_0x41cfbc[_0xdba9('0x45')];_0x5318d8+=0x1){_0x11eae1=_0x41cfbc[_0x5318d8];if(_[_0xdba9('0x46')](_0x1ddb7a[_0xdba9('0x26')][_0x11eae1['id']])){_0x1ddb7a['faxAccounts'][_0x11eae1['id']]=new FaxAccount(_0x11eae1);}else{_0x1ddb7a[_0xdba9('0x48')](_0x1ddb7a[_0xdba9('0x26')][_0x11eae1['id']],_0x11eae1);}}}return _0x1ddb7a[_0xdba9('0x26')];};};module['exports']=Realtime;
\ No newline at end of file
index 48bfd2d..16c1a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f63=['lastAssignedTo','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','destination','exten','type','dialer','lastapplication','queue','lastdata','from-voip-provider','callerid','context','from-sip','xcally-motion-preview','calleridnum','originatecalleridnum','channel','destinationchannel','calleridpreview','ANSWERED','transfers','linkedid','transfereelinkedid','monitors','filename','createdAt','calleridname','connectedlinename','membername','xcally-motion-dialer','voiceAgentReport','isArray','forEach','startsWith','Local','substring','indexOf','phone','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','sync','xdr','disabled','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','prototype','find','accountcode','name','isNil','telephones','interface','format','SIP/%s','length','findAgent','connectedlinenum','assigned'];(function(_0x5d7398,_0x2c3d43){var _0x56f109=function(_0x321467){while(--_0x321467){_0x5d7398['push'](_0x5d7398['shift']());}};_0x56f109(++_0x2c3d43);}(_0x5f63,0x185));var _0x35f6=function(_0x2e6da7,_0x204421){_0x2e6da7=_0x2e6da7-0x0;var _0x2539c0=_0x5f63[_0x2e6da7];return _0x2539c0;};'use strict';var _=require(_0x35f6('0x0'));var moment=require(_0x35f6('0x1'));var util=require(_0x35f6('0x2'));var config=require(_0x35f6('0x3'));var ami=require(_0x35f6('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x35f6('0x5'));var RpcVoiceDialReport=require(_0x35f6('0x6'));var RpcMemberReport=require(_0x35f6('0x7'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0x35f6('0x8'));var RpcVoiceTransferReport=require(_0x35f6('0x9'));var VoiceQueueReport=require(_0x35f6('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0x35f6('0xb'));var VoiceDialReport=require(_0x35f6('0xc'));var UserReport=require(_0x35f6('0xd'));function Report(_0x4a7e0d){this[_0x35f6('0xe')]=_0x4a7e0d;this[_0x35f6('0xf')]=_0x4a7e0d[_0x35f6('0xf')];this['telephones']=_0x4a7e0d['telephones'];}Report['prototype'][_0x35f6('0x10')]=function(_0x4185fc){var _0x2b99de=new VoiceQueueReport(this[_0x35f6('0xe')]);var _0x528835=new VoiceAgentReport(this[_0x35f6('0xe')]);var _0x36f987=new VoiceDialReport(this[_0x35f6('0xe')]);var _0x24abcc=new VoiceCallReport(this['realtime']);var _0x1922d3=new UserReport(this[_0x35f6('0xe')]);if(config[_0x35f6('0x11')]&&config['xdr'][_0x35f6('0x12')]){ami['on']('custom:voiceQueueReport',this[_0x35f6('0x13')][_0x35f6('0x14')](this));ami['on']('custom:voiceCallReport',this[_0x35f6('0x15')][_0x35f6('0x14')](this));ami['on'](_0x35f6('0x16'),this['voiceAgentReport'][_0x35f6('0x14')](this));ami['on']('custom:voiceDialReport',this[_0x35f6('0x17')][_0x35f6('0x14')](this));ami['on'](_0x35f6('0x18'),this[_0x35f6('0x19')][_0x35f6('0x14')](this));ami['on'](_0x35f6('0x1a'),this[_0x35f6('0x1b')][_0x35f6('0x14')](this));}};Report[_0x35f6('0x1c')]['findAgent']=function(_0xb69f39){var _0x26e473;_0x26e473=_[_0x35f6('0x1d')](this[_0x35f6('0xf')],function(_0x2012d5){return _0x2012d5[_0x35f6('0x1e')]==_0xb69f39||_0x2012d5[_0x35f6('0x1f')]==_0xb69f39;});if(_[_0x35f6('0x20')](_0x26e473)){var _0x36822e=_['find'](this[_0x35f6('0x21')],function(_0x33aeb7){return _0x33aeb7[_0x35f6('0x1e')]==_0xb69f39||_0x33aeb7['name']==_0xb69f39;});if(_0x36822e){_0x26e473=_[_0x35f6('0x1d')](this[_0x35f6('0xf')],function(_0x578f18){return _0x578f18[_0x35f6('0x22')]==util[_0x35f6('0x23')](_0x35f6('0x24'),_0x36822e[_0x35f6('0x1f')]);});}}return _0x26e473;};Report[_0x35f6('0x1c')][_0x35f6('0x13')]=function(_0x4692b0){for(var _0x407ef9=0x0;_0x407ef9<_0x4692b0[_0x35f6('0x25')];_0x407ef9+=0x1){var _0x3baa45=this[_0x35f6('0x26')](_0x4692b0[_0x407ef9][_0x35f6('0x27')]);if(_0x3baa45){_0x4692b0[_0x407ef9][_0x35f6('0x1e')]=_0x3baa45[_0x35f6('0x1e')];_0x4692b0[_0x407ef9][_0x35f6('0x28')]=!![];_0x4692b0[_0x407ef9][_0x35f6('0x29')]=_0x3baa45[_0x35f6('0x1f')];_0x4692b0[_0x407ef9][_0x35f6('0x22')]=_['isNil'](_0x3baa45['interface'])?util['format'](_0x35f6('0x24'),_0x3baa45[_0x35f6('0x1f')]):_0x3baa45[_0x35f6('0x22')];if(_0x4692b0[_0x407ef9][_0x35f6('0x2a')]){_0x4692b0[_0x407ef9]['queuecallercompleteAt']=moment()[_0x35f6('0x23')](_0x35f6('0x2b'));}if(_0x4692b0[_0x407ef9]['queuecallerexit']){_0x4692b0[_0x407ef9][_0x35f6('0x2c')]=moment()[_0x35f6('0x23')](_0x35f6('0x2b'));}RpcMemberReport[_0x35f6('0x13')](_0x4692b0[_0x407ef9]);}RpcVoiceQueueReport[_0x35f6('0x2d')](_0x4692b0[_0x407ef9]);}};function extractCalleridNumber(_0x2dfa9e){var _0x7c3e01=_0x2dfa9e[_0x35f6('0x2e')](/<(.*?)>/);return _0x7c3e01?_0x7c3e01[0x1]:_0x2dfa9e;}Report[_0x35f6('0x1c')][_0x35f6('0x15')]=function(_0x4f1487){_0x4f1487['destination']=_0x4f1487[_0x35f6('0x2f')]||_0x4f1487[_0x35f6('0x30')];if(_0x4f1487[_0x35f6('0x31')]==_0x35f6('0x32')){_0x4f1487[_0x35f6('0x33')]=_0x35f6('0x34');_0x4f1487[_0x35f6('0x35')]=_0x4f1487[_0x35f6('0x34')];if(_0x4f1487['context']==_0x35f6('0x36')){_0x4f1487[_0x35f6('0x1e')]='';_0x4f1487[_0x35f6('0x2f')]=extractCalleridNumber(_0x4f1487[_0x35f6('0x37')]);}else if(_0x4f1487[_0x35f6('0x38')]==_0x35f6('0x39')){if(_0x4f1487[_0x35f6('0x2f')]==_0x35f6('0x3a')){_0x4f1487['destination']=extractCalleridNumber(_0x4f1487['calleridpreview']);_0x4f1487[_0x35f6('0x3b')]=_0x4f1487[_0x35f6('0x3c')];_0x4f1487['destinationchannel']=[_0x4f1487[_0x35f6('0x3d')],_0x4f1487[_0x35f6('0x3d')]=_0x4f1487[_0x35f6('0x3e')]][0x0];_0x4f1487[_0x35f6('0x37')]=_0x4f1487[_0x35f6('0x3f')];}else{_0x4f1487['destination']=_0x4f1487[_0x35f6('0x3b')];_0x4f1487['calleridnum']=_0x4f1487['originatecalleridnum'];if(_0x4f1487['disposition']==_0x35f6('0x40')){_0x4f1487['accountcode']=_0x4f1487[_0x35f6('0x27')];}else{_0x4f1487[_0x35f6('0x1e')]='';}}}}else{_0x4f1487[_0x35f6('0x37')]=util[_0x35f6('0x23')]('\x22%s\x22\x20<%s>',_0x4f1487['calleridname'],_0x4f1487[_0x35f6('0x3b')]);}if(RpcVoiceTransferReport[_0x35f6('0x41')][_0x4f1487[_0x35f6('0x42')]]){var _0x84c511=RpcVoiceTransferReport['transfers'][_0x4f1487['linkedid']];_0x84c511[_0x35f6('0x43')]=_0x4f1487['uniqueid'];RpcVoiceTransferReport[_0x35f6('0x19')](_0x84c511);delete RpcVoiceTransferReport[_0x35f6('0x41')][_0x4f1487[_0x35f6('0x42')]];}RpcVoiceCallReport[_0x35f6('0x2d')](_0x4f1487);if(_0x4f1487['monitor']){for(var _0x4068c2=0x0;_0x4068c2<_0x4f1487[_0x35f6('0x44')][_0x35f6('0x25')];_0x4068c2+=0x1){_0x4f1487['monitorFilename']=_0x4f1487[_0x35f6('0x44')][_0x4068c2][_0x35f6('0x45')];_0x4f1487[_0x35f6('0x46')]=_0x4f1487[_0x35f6('0x44')][_0x4068c2]['createdAt'];if(_0x4f1487['exten']=='xcally-motion-preview'){_0x4f1487[_0x35f6('0x3b')]=_0x4f1487['connectedlinenum'];_0x4f1487[_0x35f6('0x47')]=_0x4f1487['connectedlinename'];_0x4f1487[_0x35f6('0x27')]=_0x4f1487['accountcode'];_0x4f1487[_0x35f6('0x48')]=_0x4f1487[_0x35f6('0x49')];_0x4f1487[_0x35f6('0x30')]=_0x4f1487['originatecalleridnum'];}else if(_0x4f1487[_0x35f6('0x30')]==_0x35f6('0x4a')){_0x4f1487[_0x35f6('0x3b')]=_0x4f1487[_0x35f6('0x2f')];_0x4f1487[_0x35f6('0x30')]=_0x4f1487[_0x35f6('0x3c')];}RpcVoiceRecording['create'](_0x4f1487);}}};Report[_0x35f6('0x1c')][_0x35f6('0x4b')]=function(_0x5f48d8){if(_[_0x35f6('0x4c')](_0x5f48d8)){_0x5f48d8[_0x35f6('0x4d')](function(_0x5a66c2){RpcVoiceAgentReport[_0x35f6('0x2d')](_0x5a66c2);});}else{RpcVoiceAgentReport['create'](_0x5f48d8);}};Report[_0x35f6('0x1c')][_0x35f6('0x17')]=function(_0x481f69){RpcVoiceDialReport[_0x35f6('0x2d')](_0x481f69);var _0x5198d1;var _0x5c2666;var _0x1e933c=_0x481f69[_0x35f6('0x3d')];if(_[_0x35f6('0x4e')](_0x1e933c,_0x35f6('0x4f'))){_0x5c2666=_0x1e933c[_0x35f6('0x50')](_0x1e933c[_0x35f6('0x51')]('/')+0x1,_0x1e933c[_0x35f6('0x51')]('@'));_0x5198d1=_[_0x35f6('0x1d')](this['agents'],function(_0x480101){return _0x480101['mobile']==_0x5c2666||_0x480101[_0x35f6('0x52')]==_0x5c2666||_0x480101[_0x35f6('0x1e')]==_0x5c2666;});}else{_0x5c2666=_0x1e933c[_0x35f6('0x50')](_0x1e933c[_0x35f6('0x51')]('/')+0x1,_0x1e933c[_0x35f6('0x53')]('-'));_0x5198d1=this[_0x35f6('0x26')](_0x5c2666);}if(_0x5198d1){_0x481f69['interface']=_[_0x35f6('0x20')](_0x5198d1[_0x35f6('0x22')])?util[_0x35f6('0x23')](_0x35f6('0x24'),_0x5198d1[_0x35f6('0x1f')]):_0x5198d1[_0x35f6('0x22')];_0x481f69[_0x35f6('0x49')]=_0x5198d1[_0x35f6('0x1f')];_0x481f69['accountcode']=_0x5198d1[_0x35f6('0x1e')];RpcMemberReport['voiceDialReport'](_0x481f69);}};Report[_0x35f6('0x1c')][_0x35f6('0x19')]=function(_0x1df4c5){RpcVoiceTransferReport[_0x35f6('0x41')][_0x1df4c5[_0x35f6('0x54')]]=_0x1df4c5;};Report['prototype'][_0x35f6('0x1b')]=function(_0x3c74a0){RpcVoiceTransferReport[_0x35f6('0x1b')](_0x3c74a0);};module[_0x35f6('0x55')]=Report;
\ No newline at end of file
+var _0x482b=['filename','createdAt','connectedlinename','membername','exten','xcally-motion-dialer','voiceAgentReport','forEach','startsWith','Local','substring','indexOf','mobile','lastIndexOf','transfererlinkedid','exports','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','realtime','agents','telephones','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindTransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','isNil','interface','SIP/%s','connectedlinenum','assigned','lastAssignedTo','format','name','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create','match','destination','dialer','lastapplication','lastdata','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','linkedid','transfers','transfereelinkedid','uniqueid','monitor','monitors','monitorFilename'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0x482b,0xc4));var _0xb482=function(_0x13d38a,_0x4f8be4){_0x13d38a=_0x13d38a-0x0;var _0x1148e6=_0x482b[_0x13d38a];return _0x1148e6;};'use strict';var _=require('lodash');var moment=require(_0xb482('0x0'));var util=require(_0xb482('0x1'));var config=require(_0xb482('0x2'));var ami=require(_0xb482('0x3'));var RpcVoiceAgentReport=require(_0xb482('0x4'));var RpcVoiceCallReport=require(_0xb482('0x5'));var RpcVoiceDialReport=require(_0xb482('0x6'));var RpcMemberReport=require(_0xb482('0x7'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0xb482('0x8'));var RpcVoiceTransferReport=require(_0xb482('0x9'));var VoiceQueueReport=require(_0xb482('0xa'));var VoiceCallReport=require(_0xb482('0xb'));var VoiceAgentReport=require(_0xb482('0xc'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x4787cb){this[_0xb482('0xd')]=_0x4787cb;this[_0xb482('0xe')]=_0x4787cb['agents'];this[_0xb482('0xf')]=_0x4787cb[_0xb482('0xf')];}Report['prototype']['sync']=function(_0x33baa4){var _0x48080d=new VoiceQueueReport(this[_0xb482('0xd')]);var _0x25516a=new VoiceAgentReport(this[_0xb482('0xd')]);var _0x20c9dc=new VoiceDialReport(this['realtime']);var _0x83d160=new VoiceCallReport(this[_0xb482('0xd')]);var _0x47f60b=new UserReport(this[_0xb482('0xd')]);if(config[_0xb482('0x10')]&&config[_0xb482('0x10')][_0xb482('0x11')]){ami['on'](_0xb482('0x12'),this[_0xb482('0x13')][_0xb482('0x14')](this));ami['on'](_0xb482('0x15'),this[_0xb482('0x16')][_0xb482('0x14')](this));ami['on'](_0xb482('0x17'),this['voiceAgentReport'][_0xb482('0x14')](this));ami['on'](_0xb482('0x18'),this[_0xb482('0x19')][_0xb482('0x14')](this));ami['on']('blindtransfer',this[_0xb482('0x1a')]['bind'](this));ami['on'](_0xb482('0x1b'),this[_0xb482('0x1c')][_0xb482('0x14')](this));}};Report[_0xb482('0x1d')][_0xb482('0x1e')]=function(_0x2b06d5){var _0x2b0bcb;_0x2b0bcb=_[_0xb482('0x1f')](this[_0xb482('0xe')],function(_0x459978){return _0x459978[_0xb482('0x20')]==_0x2b06d5||_0x459978['name']==_0x2b06d5;});if(_[_0xb482('0x21')](_0x2b0bcb)){var _0xe5785d=_['find'](this[_0xb482('0xf')],function(_0x4ad77b){return _0x4ad77b['accountcode']==_0x2b06d5||_0x4ad77b['name']==_0x2b06d5;});if(_0xe5785d){_0x2b0bcb=_[_0xb482('0x1f')](this[_0xb482('0xe')],function(_0x353a17){return _0x353a17[_0xb482('0x22')]==util['format'](_0xb482('0x23'),_0xe5785d['name']);});}}return _0x2b0bcb;};Report['prototype'][_0xb482('0x13')]=function(_0x5deab2){for(var _0x6004bc=0x0;_0x6004bc<_0x5deab2['length'];_0x6004bc+=0x1){var _0x470f87=this[_0xb482('0x1e')](_0x5deab2[_0x6004bc][_0xb482('0x24')]);if(_0x470f87){_0x5deab2[_0x6004bc][_0xb482('0x20')]=_0x470f87[_0xb482('0x20')];_0x5deab2[_0x6004bc][_0xb482('0x25')]=!![];_0x5deab2[_0x6004bc][_0xb482('0x26')]=_0x470f87['name'];_0x5deab2[_0x6004bc][_0xb482('0x22')]=_[_0xb482('0x21')](_0x470f87[_0xb482('0x22')])?util[_0xb482('0x27')]('SIP/%s',_0x470f87[_0xb482('0x28')]):_0x470f87[_0xb482('0x22')];if(_0x5deab2[_0x6004bc][_0xb482('0x29')]){_0x5deab2[_0x6004bc][_0xb482('0x2a')]=moment()[_0xb482('0x27')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x5deab2[_0x6004bc][_0xb482('0x2b')]){_0x5deab2[_0x6004bc][_0xb482('0x2c')]=moment()[_0xb482('0x27')](_0xb482('0x2d'));}RpcMemberReport[_0xb482('0x13')](_0x5deab2[_0x6004bc]);}RpcVoiceQueueReport[_0xb482('0x2e')](_0x5deab2[_0x6004bc]);}};function extractCalleridNumber(_0xdcc884){var _0x5cd93d=_0xdcc884[_0xb482('0x2f')](/<(.*?)>/);return _0x5cd93d?_0x5cd93d[0x1]:_0xdcc884;}Report['prototype'][_0xb482('0x16')]=function(_0x419f26){_0x419f26['destination']=_0x419f26[_0xb482('0x30')]||_0x419f26['exten'];if(_0x419f26['type']==_0xb482('0x31')){_0x419f26[_0xb482('0x32')]='queue';_0x419f26[_0xb482('0x33')]=_0x419f26[_0xb482('0x34')];if(_0x419f26[_0xb482('0x35')]==_0xb482('0x36')){_0x419f26['accountcode']='';_0x419f26[_0xb482('0x30')]=extractCalleridNumber(_0x419f26[_0xb482('0x37')]);}else if(_0x419f26[_0xb482('0x35')]==_0xb482('0x38')){if(_0x419f26[_0xb482('0x30')]==_0xb482('0x39')){_0x419f26[_0xb482('0x30')]=extractCalleridNumber(_0x419f26[_0xb482('0x3a')]);_0x419f26[_0xb482('0x3b')]=_0x419f26[_0xb482('0x3c')];_0x419f26[_0xb482('0x3d')]=[_0x419f26[_0xb482('0x3e')],_0x419f26['channel']=_0x419f26['destinationchannel']][0x0];_0x419f26[_0xb482('0x37')]=_0x419f26['calleridpreview'];}else{_0x419f26['destination']=_0x419f26['calleridnum'];_0x419f26['calleridnum']=_0x419f26[_0xb482('0x3c')];if(_0x419f26[_0xb482('0x3f')]==_0xb482('0x40')){_0x419f26[_0xb482('0x20')]=_0x419f26['connectedlinenum'];}else{_0x419f26[_0xb482('0x20')]='';}}}}else{_0x419f26['callerid']=util[_0xb482('0x27')](_0xb482('0x41'),_0x419f26[_0xb482('0x42')],_0x419f26[_0xb482('0x3b')]);}if(RpcVoiceTransferReport['transfers'][_0x419f26[_0xb482('0x43')]]){var _0x39b59c=RpcVoiceTransferReport[_0xb482('0x44')][_0x419f26[_0xb482('0x43')]];_0x39b59c[_0xb482('0x45')]=_0x419f26[_0xb482('0x46')];RpcVoiceTransferReport[_0xb482('0x1a')](_0x39b59c);delete RpcVoiceTransferReport['transfers'][_0x419f26['linkedid']];}RpcVoiceCallReport[_0xb482('0x2e')](_0x419f26);if(_0x419f26[_0xb482('0x47')]){for(var _0xae21e4=0x0;_0xae21e4<_0x419f26[_0xb482('0x48')]['length'];_0xae21e4+=0x1){_0x419f26[_0xb482('0x49')]=_0x419f26['monitors'][_0xae21e4][_0xb482('0x4a')];_0x419f26['createdAt']=_0x419f26[_0xb482('0x48')][_0xae21e4][_0xb482('0x4b')];if(_0x419f26['exten']==_0xb482('0x39')){_0x419f26[_0xb482('0x3b')]=_0x419f26['connectedlinenum'];_0x419f26[_0xb482('0x42')]=_0x419f26['connectedlinename'];_0x419f26[_0xb482('0x24')]=_0x419f26['accountcode'];_0x419f26[_0xb482('0x4c')]=_0x419f26[_0xb482('0x4d')];_0x419f26[_0xb482('0x4e')]=_0x419f26[_0xb482('0x3c')];}else if(_0x419f26[_0xb482('0x4e')]==_0xb482('0x4f')){_0x419f26[_0xb482('0x3b')]=_0x419f26[_0xb482('0x30')];_0x419f26[_0xb482('0x4e')]=_0x419f26['originatecalleridnum'];}RpcVoiceRecording[_0xb482('0x2e')](_0x419f26);}}};Report['prototype'][_0xb482('0x50')]=function(_0x1d4a2b){if(_['isArray'](_0x1d4a2b)){_0x1d4a2b[_0xb482('0x51')](function(_0x2b0d0e){RpcVoiceAgentReport[_0xb482('0x2e')](_0x2b0d0e);});}else{RpcVoiceAgentReport['create'](_0x1d4a2b);}};Report[_0xb482('0x1d')][_0xb482('0x19')]=function(_0x26f856){RpcVoiceDialReport[_0xb482('0x2e')](_0x26f856);var _0x22112d;var _0x17be6e;var _0x518ae9=_0x26f856[_0xb482('0x3e')];if(_[_0xb482('0x52')](_0x518ae9,_0xb482('0x53'))){_0x17be6e=_0x518ae9[_0xb482('0x54')](_0x518ae9[_0xb482('0x55')]('/')+0x1,_0x518ae9[_0xb482('0x55')]('@'));_0x22112d=_[_0xb482('0x1f')](this[_0xb482('0xe')],function(_0x581aaf){return _0x581aaf[_0xb482('0x56')]==_0x17be6e||_0x581aaf['phone']==_0x17be6e||_0x581aaf[_0xb482('0x20')]==_0x17be6e;});}else{_0x17be6e=_0x518ae9['substring'](_0x518ae9['indexOf']('/')+0x1,_0x518ae9[_0xb482('0x57')]('-'));_0x22112d=this['findAgent'](_0x17be6e);}if(_0x22112d){_0x26f856[_0xb482('0x22')]=_[_0xb482('0x21')](_0x22112d[_0xb482('0x22')])?util[_0xb482('0x27')](_0xb482('0x23'),_0x22112d[_0xb482('0x28')]):_0x22112d[_0xb482('0x22')];_0x26f856[_0xb482('0x4d')]=_0x22112d[_0xb482('0x28')];_0x26f856[_0xb482('0x20')]=_0x22112d['accountcode'];RpcMemberReport[_0xb482('0x19')](_0x26f856);}};Report[_0xb482('0x1d')][_0xb482('0x1a')]=function(_0x1d7bb5){RpcVoiceTransferReport['transfers'][_0x1d7bb5[_0xb482('0x58')]]=_0x1d7bb5;};Report['prototype'][_0xb482('0x1c')]=function(_0x22c365){RpcVoiceTransferReport[_0xb482('0x1c')](_0x22c365);};module[_0xb482('0x59')]=Report;
\ No newline at end of file
index 8c89c42..9e4f5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca14=['exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','error','inspect','resolve','actionDeviceStateList','catch','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','syncRegistry','username','state','debug','find','stateRegistry','merge','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][registry]','info','device','local','toLowerCase','stateTime','toNumber','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','indexOf','mobile','accountcode','updateStatusRealtime','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:'];(function(_0x4e5c24,_0x22729e){var _0x25d056=function(_0x5f0bb2){while(--_0x5f0bb2){_0x4e5c24['push'](_0x4e5c24['shift']());}};_0x25d056(++_0x22729e);}(_0xca14,0x95));var _0x4ca1=function(_0x2f09f7,_0x461707){_0x2f09f7=_0x2f09f7-0x0;var _0x1b266c=_0xca14[_0x2f09f7];return _0x1b266c;};'use strict';var _=require(_0x4ca1('0x0'));var moment=require(_0x4ca1('0x1'));var util=require(_0x4ca1('0x2'));var Redis=require(_0x4ca1('0x3'));var BPromise=require('bluebird');var config=require(_0x4ca1('0x4'));var logger=require(_0x4ca1('0x5'))(_0x4ca1('0x6'));var ami=require(_0x4ca1('0x7'));config[_0x4ca1('0x8')]=_['defaults'](config['redis'],{'host':_0x4ca1('0x9'),'port':0x18eb});var io=require(_0x4ca1('0xa'))(new Redis(config[_0x4ca1('0x8')]));function UserReport(_0x50ea1b){this[_0x4ca1('0xb')]=_0x50ea1b['trunks'];this[_0x4ca1('0xc')]=_0x50ea1b[_0x4ca1('0xc')];this['telephones']=_0x50ea1b[_0x4ca1('0xd')];ami['on']('registryentry',this['syncRegistry']['bind'](this));ami['on'](_0x4ca1('0xe'),this['syncRegistry'][_0x4ca1('0xf')](this));ami['on'](_0x4ca1('0x10'),this[_0x4ca1('0x11')][_0x4ca1('0xf')](this));ami['on'](_0x4ca1('0x12'),this[_0x4ca1('0x13')][_0x4ca1('0xf')](this));return this[_0x4ca1('0x14')]();}function showSipRegistrations(){Promise['resolve']()[_0x4ca1('0x15')](ami[_0x4ca1('0x16')]())['catch'](function(_0x190799){logger[_0x4ca1('0x17')]('[userReport][sipshowregistry]',util[_0x4ca1('0x18')](_0x190799,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x4ca1('0x19')]()[_0x4ca1('0x15')](ami[_0x4ca1('0x1a')]())[_0x4ca1('0x1b')](function(_0x53ed80){logger[_0x4ca1('0x17')](_0x4ca1('0x1c'),util[_0x4ca1('0x18')](_0x53ed80,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x4ca1('0x19')]()[_0x4ca1('0x15')](ami['actionSipPeerStatus']())[_0x4ca1('0x1b')](function(_0x3c84af){logger[_0x4ca1('0x17')](_0x4ca1('0x1d'),util[_0x4ca1('0x18')](_0x3c84af,{'showHidden':![],'depth':null}));});}UserReport[_0x4ca1('0x1e')][_0x4ca1('0x14')]=function(){setInterval(function(){BPromise[_0x4ca1('0x19')]()[_0x4ca1('0x15')](showSipRegistrations())[_0x4ca1('0x15')](listDeviceStates())[_0x4ca1('0x15')](showPeersStatus());},0x32c8);};UserReport[_0x4ca1('0x1e')][_0x4ca1('0x1f')]=function(_0x46a847){return _0x46a847!==null&&!_[_0x4ca1('0x20')](_0x46a847);};UserReport[_0x4ca1('0x1e')][_0x4ca1('0x21')]=function(_0x3c4324,_0x1f8931,_0x5bfb46){io['to'](_0x3c4324)[_0x4ca1('0x21')](_0x1f8931,_0x5bfb46);};UserReport[_0x4ca1('0x1e')][_0x4ca1('0x22')]=function(_0x4358cf){try{if(this[_0x4ca1('0x1f')](_0x4358cf)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x4358cf[_0x4ca1('0x23')],_0x4358cf[_0x4ca1('0x24')]);logger[_0x4ca1('0x25')]('[userReport][registry]',util[_0x4ca1('0x18')](_0x4358cf,{'showHidden':![],'depth':null}));var _0x52609f=_[_0x4ca1('0x26')](this[_0x4ca1('0xb')],{'defaultuser':_0x4358cf[_0x4ca1('0x23')]});if(_0x52609f){_0x4358cf[_0x4ca1('0x27')]=_0x4358cf['state'];_[_0x4ca1('0x28')](_0x52609f,_[_0x4ca1('0x29')](_0x4358cf,[_0x4ca1('0x2a'),'actionid',_0x4ca1('0x23'),'state']));logger[_0x4ca1('0x25')](_0x4ca1('0x2b'),util[_0x4ca1('0x18')](_0x52609f,{'showHidden':![],'depth':null}));this[_0x4ca1('0x21')](util[_0x4ca1('0x2c')](_0x4ca1('0x2d'),_0x52609f[_0x4ca1('0x2e')]),_0x4ca1('0x2f'),_0x52609f);}}}catch(_0x2330af){logger[_0x4ca1('0x17')](_0x4ca1('0x30'),util[_0x4ca1('0x18')](_0x2330af,{'showHidden':![],'depth':null}));}};UserReport[_0x4ca1('0x1e')][_0x4ca1('0x11')]=function(_0x2ab8ff){try{if(this[_0x4ca1('0x1f')](_0x2ab8ff)){logger[_0x4ca1('0x31')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x2ab8ff[_0x4ca1('0x32')],_0x2ab8ff['state']);logger['debug']('[userReport][devicestatechange]',util[_0x4ca1('0x18')](_0x2ab8ff,{'showHidden':![],'depth':null}));if(this[_0x4ca1('0xc')][_0x2ab8ff[_0x4ca1('0x32')]]){if(!this['agents'][_0x2ab8ff['device']][_0x4ca1('0x33')]||_0x2ab8ff['state'][_0x4ca1('0x34')]()=='inuse'){this['agents'][_0x2ab8ff['device']][_0x4ca1('0x33')]=![];if(this[_0x4ca1('0xc')][_0x2ab8ff['device']][_0x4ca1('0x24')]!==_0x2ab8ff[_0x4ca1('0x24')][_0x4ca1('0x34')]()){this[_0x4ca1('0xc')][_0x2ab8ff[_0x4ca1('0x32')]][_0x4ca1('0x35')]=_[_0x4ca1('0x36')](moment()[_0x4ca1('0x2c')]('x'));}this[_0x4ca1('0xc')][_0x2ab8ff[_0x4ca1('0x32')]][_0x4ca1('0x24')]=_0x2ab8ff['state'][_0x4ca1('0x34')]();this[_0x4ca1('0xc')][_0x2ab8ff['device']]['updateStatusRealtime'](_0x2ab8ff);}}else if(this[_0x4ca1('0xd')][_0x2ab8ff[_0x4ca1('0x32')]]){if(this[_0x4ca1('0xd')][_0x2ab8ff[_0x4ca1('0x32')]]['state']!==_0x2ab8ff[_0x4ca1('0x24')][_0x4ca1('0x34')]()){this[_0x4ca1('0xd')][_0x2ab8ff[_0x4ca1('0x32')]][_0x4ca1('0x35')]=_[_0x4ca1('0x36')](moment()[_0x4ca1('0x2c')]('x'));}this[_0x4ca1('0xd')][_0x2ab8ff[_0x4ca1('0x32')]][_0x4ca1('0x24')]=_0x2ab8ff[_0x4ca1('0x24')]['toLowerCase']();logger[_0x4ca1('0x25')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x4ca1('0x18')](this[_0x4ca1('0xd')][_0x2ab8ff[_0x4ca1('0x32')]],{'showHidden':![],'depth':null}));this[_0x4ca1('0x21')](util[_0x4ca1('0x2c')](_0x4ca1('0x37'),this[_0x4ca1('0xd')][_0x2ab8ff[_0x4ca1('0x32')]][_0x4ca1('0x2e')]),'telephone:save',this[_0x4ca1('0xd')][_0x2ab8ff[_0x4ca1('0x32')]]);}else if(this[_0x4ca1('0xb')][_0x2ab8ff['device']]){if(this['trunks'][_0x2ab8ff[_0x4ca1('0x32')]][_0x4ca1('0x24')]!==_0x2ab8ff[_0x4ca1('0x24')][_0x4ca1('0x34')]()){this[_0x4ca1('0xb')][_0x2ab8ff[_0x4ca1('0x32')]]['stateTime']=_[_0x4ca1('0x36')](moment()[_0x4ca1('0x2c')]('x'));}this[_0x4ca1('0xb')][_0x2ab8ff['device']][_0x4ca1('0x24')]=_0x2ab8ff[_0x4ca1('0x24')][_0x4ca1('0x34')]();logger[_0x4ca1('0x25')](_0x4ca1('0x38'),util['inspect'](this[_0x4ca1('0xb')][_0x2ab8ff[_0x4ca1('0x32')]],{'showHidden':![],'depth':null}));this[_0x4ca1('0x21')](util[_0x4ca1('0x2c')]('trunk:%s',this[_0x4ca1('0xb')][_0x2ab8ff[_0x4ca1('0x32')]][_0x4ca1('0x2e')]),_0x4ca1('0x2f'),this['trunks'][_0x2ab8ff[_0x4ca1('0x32')]]);}else if(_[_0x4ca1('0x39')](_0x2ab8ff[_0x4ca1('0x32')],_0x4ca1('0x3a'))){var _0x3d323e=_0x2ab8ff[_0x4ca1('0x32')];var _0x7594fc=_0x3d323e['substring'](_0x3d323e[_0x4ca1('0x3b')]('/')+0x1,_0x3d323e['indexOf']('@'));var _0xd77635=_[_0x4ca1('0x26')](this[_0x4ca1('0xc')],function(_0x14d0b1){return _0x14d0b1[_0x4ca1('0x3c')]==_0x7594fc||_0x14d0b1['phone']==_0x7594fc||_0x14d0b1[_0x4ca1('0x3d')]==_0x7594fc;});if(_0xd77635){if(_0xd77635[_0x4ca1('0x24')]!==_0x2ab8ff['state'][_0x4ca1('0x34')]()){_0xd77635['stateTime']=_[_0x4ca1('0x36')](moment()[_0x4ca1('0x2c')]('x'));}_0xd77635[_0x4ca1('0x24')]=_0x2ab8ff[_0x4ca1('0x24')][_0x4ca1('0x34')]();_0xd77635[_0x4ca1('0x33')]=!![];_0xd77635[_0x4ca1('0x3e')](_0x2ab8ff);}}}}catch(_0x34319e){logger[_0x4ca1('0x17')](_0x4ca1('0x3f'),util['inspect'](_0x34319e,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x4ca1('0x13')]=function(_0x1ebfb0){try{if(this[_0x4ca1('0x1f')](_0x1ebfb0)&&this[_0x4ca1('0x1f')](_0x1ebfb0['peerstatus'])){logger[_0x4ca1('0x31')](_0x4ca1('0x40'),_0x1ebfb0[_0x4ca1('0x41')],_0x1ebfb0[_0x4ca1('0x42')],_0x1ebfb0[_0x4ca1('0x12')]);logger[_0x4ca1('0x25')](_0x4ca1('0x43'),util[_0x4ca1('0x18')](_0x1ebfb0,{'showHidden':![],'depth':null}));if(this[_0x4ca1('0xc')][_0x1ebfb0[_0x4ca1('0x41')]]){if(!this[_0x4ca1('0xc')][_0x1ebfb0[_0x4ca1('0x41')]][_0x4ca1('0x33')]||_0x1ebfb0[_0x4ca1('0x12')][_0x4ca1('0x34')]()==_0x4ca1('0x44')){this[_0x4ca1('0xc')][_0x1ebfb0[_0x4ca1('0x41')]][_0x4ca1('0x33')]=![];this['agents'][_0x1ebfb0[_0x4ca1('0x41')]][_0x4ca1('0x45')]=_0x1ebfb0['peerstatus']['toLowerCase']();this[_0x4ca1('0xc')][_0x1ebfb0['peer']][_0x4ca1('0x42')]=_0x1ebfb0[_0x4ca1('0x42')];this[_0x4ca1('0xc')][_0x1ebfb0[_0x4ca1('0x41')]]['updateStatusRealtime'](_0x1ebfb0);}}else if(this[_0x4ca1('0xd')][_0x1ebfb0[_0x4ca1('0x41')]]){this[_0x4ca1('0xd')][_0x1ebfb0[_0x4ca1('0x41')]][_0x4ca1('0x45')]=_0x1ebfb0[_0x4ca1('0x12')][_0x4ca1('0x34')]();this['telephones'][_0x1ebfb0[_0x4ca1('0x41')]][_0x4ca1('0x42')]=_0x1ebfb0[_0x4ca1('0x42')];logger[_0x4ca1('0x25')](_0x4ca1('0x46'),util[_0x4ca1('0x18')](this['telephones'][_0x1ebfb0[_0x4ca1('0x41')]],{'showHidden':![],'depth':null}));this[_0x4ca1('0x21')](util[_0x4ca1('0x2c')]('telephone:%s',this['telephones'][_0x1ebfb0[_0x4ca1('0x41')]][_0x4ca1('0x2e')]),_0x4ca1('0x47'),this[_0x4ca1('0xd')][_0x1ebfb0['peer']]);}else if(this[_0x4ca1('0xb')][_0x1ebfb0[_0x4ca1('0x41')]]){this[_0x4ca1('0xb')][_0x1ebfb0[_0x4ca1('0x41')]]['status']=_0x1ebfb0[_0x4ca1('0x12')]['toLowerCase']();this['trunks'][_0x1ebfb0[_0x4ca1('0x41')]]['address']=_0x1ebfb0['address'];logger[_0x4ca1('0x25')](_0x4ca1('0x48'),util[_0x4ca1('0x18')](this[_0x4ca1('0xb')][_0x1ebfb0[_0x4ca1('0x41')]],{'showHidden':![],'depth':null}));this[_0x4ca1('0x21')](util['format']('trunk:%s',this['trunks'][_0x1ebfb0[_0x4ca1('0x41')]]['name']),'trunk:save',this['trunks'][_0x1ebfb0[_0x4ca1('0x41')]]);}}}catch(_0x39c3a4){logger[_0x4ca1('0x17')](_0x4ca1('0x43'),util[_0x4ca1('0x18')](_0x39c3a4,{'showHidden':![],'depth':null}));}};module[_0x4ca1('0x49')]=UserReport;
\ No newline at end of file
+var _0x3468=['toLowerCase','stateTime','toNumber','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','updateStatusRealtime','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','catch','[userReport][sipshowregistry]','actionDeviceStateList','error','[userReport][devicestatelist]','inspect','actionSipPeerStatus','prototype','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry','merge','omit','state','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x3468,0x1e0));var _0x8346=function(_0x10d513,_0x3c481f){_0x10d513=_0x10d513-0x0;var _0x421f77=_0x3468[_0x10d513];return _0x421f77;};'use strict';var _=require('lodash');var moment=require(_0x8346('0x0'));var util=require(_0x8346('0x1'));var Redis=require('ioredis');var BPromise=require(_0x8346('0x2'));var config=require(_0x8346('0x3'));var logger=require(_0x8346('0x4'))(_0x8346('0x5'));var ami=require(_0x8346('0x6'));config[_0x8346('0x7')]=_[_0x8346('0x8')](config[_0x8346('0x7')],{'host':_0x8346('0x9'),'port':0x18eb});var io=require(_0x8346('0xa'))(new Redis(config[_0x8346('0x7')]));function UserReport(_0x20d55f){this[_0x8346('0xb')]=_0x20d55f[_0x8346('0xb')];this[_0x8346('0xc')]=_0x20d55f[_0x8346('0xc')];this[_0x8346('0xd')]=_0x20d55f[_0x8346('0xd')];ami['on'](_0x8346('0xe'),this[_0x8346('0xf')][_0x8346('0x10')](this));ami['on'](_0x8346('0x11'),this[_0x8346('0xf')][_0x8346('0x10')](this));ami['on'](_0x8346('0x12'),this[_0x8346('0x13')][_0x8346('0x10')](this));ami['on'](_0x8346('0x14'),this[_0x8346('0x15')][_0x8346('0x10')](this));return this[_0x8346('0x16')]();}function showSipRegistrations(){Promise[_0x8346('0x17')]()[_0x8346('0x18')](ami['actionSipShowRegistry']())[_0x8346('0x19')](function(_0x58d2ff){logger['error'](_0x8346('0x1a'),util['inspect'](_0x58d2ff,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8346('0x17')]()[_0x8346('0x18')](ami[_0x8346('0x1b')]())['catch'](function(_0x5d1c43){logger[_0x8346('0x1c')](_0x8346('0x1d'),util[_0x8346('0x1e')](_0x5d1c43,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x8346('0x17')]()[_0x8346('0x18')](ami[_0x8346('0x1f')]())[_0x8346('0x19')](function(_0x509378){logger[_0x8346('0x1c')]('[userReport][sippeerstatus]',util[_0x8346('0x1e')](_0x509378,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x8346('0x16')]=function(){setInterval(function(){BPromise[_0x8346('0x17')]()[_0x8346('0x18')](showSipRegistrations())[_0x8346('0x18')](listDeviceStates())[_0x8346('0x18')](showPeersStatus());},0x32c8);};UserReport[_0x8346('0x20')]['isNotNull']=function(_0x76ff3d){return _0x76ff3d!==null&&!_['isUndefined'](_0x76ff3d);};UserReport[_0x8346('0x20')][_0x8346('0x21')]=function(_0x4001d6,_0x4e1fe7,_0x51684b){io['to'](_0x4001d6)[_0x8346('0x21')](_0x4e1fe7,_0x51684b);};UserReport[_0x8346('0x20')][_0x8346('0xf')]=function(_0x4eff96){try{if(this[_0x8346('0x22')](_0x4eff96)){logger[_0x8346('0x23')](_0x8346('0x24'),_0x4eff96[_0x8346('0x25')],_0x4eff96['state']);logger[_0x8346('0x26')](_0x8346('0x27'),util[_0x8346('0x1e')](_0x4eff96,{'showHidden':![],'depth':null}));var _0x43c4f3=_[_0x8346('0x28')](this[_0x8346('0xb')],{'defaultuser':_0x4eff96[_0x8346('0x25')]});if(_0x43c4f3){_0x4eff96[_0x8346('0x29')]=_0x4eff96['state'];_[_0x8346('0x2a')](_0x43c4f3,_[_0x8346('0x2b')](_0x4eff96,['event','actionid','username',_0x8346('0x2c')]));logger[_0x8346('0x26')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x8346('0x1e')](_0x43c4f3,{'showHidden':![],'depth':null}));this[_0x8346('0x21')](util['format'](_0x8346('0x2d'),_0x43c4f3[_0x8346('0x2e')]),_0x8346('0x2f'),_0x43c4f3);}}}catch(_0x315217){logger[_0x8346('0x1c')](_0x8346('0x27'),util[_0x8346('0x1e')](_0x315217,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x8346('0x13')]=function(_0x5ae418){try{if(this[_0x8346('0x22')](_0x5ae418)){logger[_0x8346('0x23')](_0x8346('0x30'),_0x5ae418[_0x8346('0x31')],_0x5ae418[_0x8346('0x2c')]);logger[_0x8346('0x26')](_0x8346('0x32'),util[_0x8346('0x1e')](_0x5ae418,{'showHidden':![],'depth':null}));if(this[_0x8346('0xc')][_0x5ae418['device']]){if(!this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x33')]||_0x5ae418[_0x8346('0x2c')]['toLowerCase']()=='inuse'){this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x33')]=![];if(this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]!==_0x5ae418['state'][_0x8346('0x34')]()){this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x35')]=_[_0x8346('0x36')](moment()[_0x8346('0x37')]('x'));}this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();this['agents'][_0x5ae418['device']]['updateStatusRealtime'](_0x5ae418);}}else if(this['telephones'][_0x5ae418['device']]){if(this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]]['state']!==_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]()){this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x35')]=_[_0x8346('0x36')](moment()['format']('x'));}this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();logger[_0x8346('0x26')](_0x8346('0x38'),util[_0x8346('0x1e')](this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]],{'showHidden':![],'depth':null}));this[_0x8346('0x21')](util[_0x8346('0x37')](_0x8346('0x39'),this['telephones'][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2e')]),_0x8346('0x3a'),this['telephones'][_0x5ae418[_0x8346('0x31')]]);}else if(this[_0x8346('0xb')][_0x5ae418[_0x8346('0x31')]]){if(this['trunks'][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]!==_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]()){this['trunks'][_0x5ae418['device']][_0x8346('0x35')]=_[_0x8346('0x36')](moment()[_0x8346('0x37')]('x'));}this['trunks'][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();logger[_0x8346('0x26')](_0x8346('0x3b'),util['inspect'](this[_0x8346('0xb')][_0x5ae418[_0x8346('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8346('0x37')]('trunk:%s',this[_0x8346('0xb')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2e')]),_0x8346('0x2f'),this[_0x8346('0xb')][_0x5ae418['device']]);}else if(_[_0x8346('0x3c')](_0x5ae418['device'],_0x8346('0x3d'))){var _0x278748=_0x5ae418[_0x8346('0x31')];var _0x49e07b=_0x278748[_0x8346('0x3e')](_0x278748[_0x8346('0x3f')]('/')+0x1,_0x278748[_0x8346('0x3f')]('@'));var _0x350cb1=_[_0x8346('0x28')](this['agents'],function(_0x2c3e27){return _0x2c3e27[_0x8346('0x40')]==_0x49e07b||_0x2c3e27[_0x8346('0x41')]==_0x49e07b||_0x2c3e27['accountcode']==_0x49e07b;});if(_0x350cb1){if(_0x350cb1[_0x8346('0x2c')]!==_0x5ae418[_0x8346('0x2c')]['toLowerCase']()){_0x350cb1[_0x8346('0x35')]=_[_0x8346('0x36')](moment()[_0x8346('0x37')]('x'));}_0x350cb1[_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();_0x350cb1['local']=!![];_0x350cb1['updateStatusRealtime'](_0x5ae418);}}}}catch(_0x23de65){logger[_0x8346('0x1c')](_0x8346('0x32'),util[_0x8346('0x1e')](_0x23de65,{'showHidden':![],'depth':null}));}};UserReport[_0x8346('0x20')][_0x8346('0x15')]=function(_0x46f391){try{if(this[_0x8346('0x22')](_0x46f391)&&this[_0x8346('0x22')](_0x46f391[_0x8346('0x14')])){logger[_0x8346('0x23')](_0x8346('0x42'),_0x46f391[_0x8346('0x43')],_0x46f391['address'],_0x46f391[_0x8346('0x14')]);logger['debug'](_0x8346('0x44'),util[_0x8346('0x1e')](_0x46f391,{'showHidden':![],'depth':null}));if(this['agents'][_0x46f391[_0x8346('0x43')]]){if(!this[_0x8346('0xc')][_0x46f391['peer']][_0x8346('0x33')]||_0x46f391[_0x8346('0x14')][_0x8346('0x34')]()==_0x8346('0x45')){this[_0x8346('0xc')][_0x46f391['peer']][_0x8346('0x33')]=![];this[_0x8346('0xc')][_0x46f391['peer']]['status']=_0x46f391[_0x8346('0x14')][_0x8346('0x34')]();this[_0x8346('0xc')][_0x46f391['peer']]['address']=_0x46f391['address'];this[_0x8346('0xc')][_0x46f391[_0x8346('0x43')]][_0x8346('0x46')](_0x46f391);}}else if(this[_0x8346('0xd')][_0x46f391[_0x8346('0x43')]]){this[_0x8346('0xd')][_0x46f391['peer']][_0x8346('0x47')]=_0x46f391[_0x8346('0x14')][_0x8346('0x34')]();this[_0x8346('0xd')][_0x46f391['peer']][_0x8346('0x48')]=_0x46f391['address'];logger[_0x8346('0x26')](_0x8346('0x49'),util[_0x8346('0x1e')](this[_0x8346('0xd')][_0x46f391[_0x8346('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8346('0x37')](_0x8346('0x39'),this[_0x8346('0xd')][_0x46f391['peer']]['name']),_0x8346('0x3a'),this[_0x8346('0xd')][_0x46f391[_0x8346('0x43')]]);}else if(this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]]){this[_0x8346('0xb')][_0x46f391['peer']][_0x8346('0x47')]=_0x46f391[_0x8346('0x14')][_0x8346('0x34')]();this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]]['address']=_0x46f391['address'];logger[_0x8346('0x26')](_0x8346('0x4a'),util[_0x8346('0x1e')](this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]],{'showHidden':![],'depth':null}));this[_0x8346('0x21')](util[_0x8346('0x37')](_0x8346('0x2d'),this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]][_0x8346('0x2e')]),_0x8346('0x2f'),this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]]);}}}catch(_0x2b0535){logger[_0x8346('0x1c')](_0x8346('0x44'),util[_0x8346('0x1e')](_0x2b0535,{'showHidden':![],'depth':null}));}};module[_0x8346('0x4b')]=UserReport;
\ No newline at end of file
index 2a1d3d9..3aa1181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','interface','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami'];(function(_0x5d3080,_0xc09afb){var _0x50d488=function(_0x2e4b23){while(--_0x2e4b23){_0x5d3080['push'](_0x5d3080['shift']());}};_0x50d488(++_0xc09afb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]]};}_[_0x0a9e('0x2c')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);logger['debug'](_0x0a9e('0x32'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')]('user:%s',_0x155cce[_0x0a9e('0x21')]),'user:called',this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);}}catch(_0x3f3d41){logger['error'](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3f3d41,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncAgentConnect']=function(_0x54135e){try{if(this[_0x0a9e('0x1e')](_0x54135e)){if(this['channels'][_0x54135e[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')](_0x0a9e('0x35'),_0x54135e[_0x0a9e('0x26')],util['inspect'](_0x54135e,{'showHidden':![],'depth':null}));for(var _0x31916f in this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]]){if(this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x31916f)){if(_0x54135e[_0x0a9e('0x22')]===_0x31916f){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x54135e[_0x0a9e('0x26')],_0x54135e[_0x0a9e('0x21')],_0x54135e['destuniqueid']);this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x37')]=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x38')]=_0x54135e['connectedlinename'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x39')]=_0x54135e['connectedlinenum'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3a')]=_0x54135e[_0x0a9e('0x3a')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3b')]=_0x54135e[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3c')]=_0x54135e[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3d')]='connect';if(this['voiceChannels'][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]]){var _0x315881=this[_0x0a9e('0x3e')][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]][_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3f')]=_0x315881;_0x54135e['routealias']=_0x315881;}_[_0x0a9e('0x2c')](this[_0x0a9e('0xa')][_0x54135e[_0x0a9e('0x40')]],_[_0x0a9e('0x41')](_0x54135e,[_0x0a9e('0x28'),_0x0a9e('0x42'),_0x0a9e('0x3f')]));logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x43'),this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')](_0x0a9e('0x44'),_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x54135e[_0x0a9e('0x21')]),_0x0a9e('0x46'),this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x54135e[_0x0a9e('0x22')]]);}else if(!this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']&&!this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x47'),_0x54135e[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x21')],_0x31916f);this['channels'][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x48')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['answeredelsewheredestinationuniqueid']=_0x54135e[_0x0a9e('0x22')];this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['answeredelsewheremembername']=_0x54135e[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['lastevent']=_0x0a9e('0x49');this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['reason']=_0x0a9e('0x49');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x54135e['uniqueid']][_0x31916f]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x4a'),_0x54135e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x4b')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x4c'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738['destuniqueid']]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]][_0x0a9e('0x48')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']][_0x0a9e('0x3d')]='rejected';this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]['reason']=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4e'),_0x272738[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4f'),this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]);}}}catch(_0x4d4a35){logger[_0x0a9e('0x50')](_0x0a9e('0x51'),_0x272738[_0x0a9e('0x26')],util['inspect'](_0x4d4a35,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x5211e3){try{if(this[_0x0a9e('0x1e')](_0x5211e3)){logger[_0x0a9e('0x23')](_0x0a9e('0x52'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5211e3,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){for(var _0x54a37d in this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x54a37d)&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x5211e3[_0x0a9e('0x26')],this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x21')],_0x54a37d);this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]=!![];this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x3d')]=_0x0a9e('0x55');this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x56')]=_0x0a9e('0x55');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x5211e3['uniqueid']][_0x54a37d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]);}}}}}catch(_0x4c46c1){logger[_0x0a9e('0x50')](_0x0a9e('0x57'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c46c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x13')]=function(_0x2e9552){try{if(this[_0x0a9e('0x1e')](_0x2e9552)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e9552,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){for(var _0x4abc8f in this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x4abc8f)){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x37')]&&!this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x58'),_0x2e9552[_0x0a9e('0x26')],this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x21')],_0x4abc8f);this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]['lastevent']=_0x0a9e('0x5a');this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x56')]=_0x2e9552['reason']==_0x0a9e('0x5b')?_0x0a9e('0x5c'):_0x2e9552[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5d')]=_0x2e9552[_0x0a9e('0x5d')];if(this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]&&this[_0x0a9e('0x9')][_0x2e9552[_0x0a9e('0x28')]][_0x0a9e('0x5e')]){this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5f')]=this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x60')]=!![];}this[_0x0a9e('0xa')][_0x2e9552['interface']]=_['omit'](this[_0x0a9e('0xa')][_0x2e9552[_0x0a9e('0x40')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')](_0x0a9e('0x61'),_0x2e9552['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);logger[_0x0a9e('0x23')](_0x0a9e('0x62'),_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x2e9552[_0x0a9e('0x21')]),_0x0a9e('0x63'),this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);}}}}}}catch(_0x32f761){logger[_0x0a9e('0x50')]('[%s][voiceAgentReport][agentcomplete]',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x64'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x65')](_0x255e49['uniqueid'],_[_0x0a9e('0x66')](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x69'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x50')](_0x0a9e('0x6a'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x65')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x6b'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),_0x0a9e('0x6e'),'rtpaudioqosloss',_0x0a9e('0x6f'),'rtpaudioqosrtt',_0x0a9e('0x70'),_0x0a9e('0x71'),'sipuri',_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'memberdynamic','memberinterface',_0x0a9e('0x75'),_0x0a9e('0x21'),_0x0a9e('0x76'),_0x0a9e('0x77')];if(!_[_0x0a9e('0x78')](_0x5ce99d)&&!_[_0x0a9e('0x79')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x7a'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x36')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x5b')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x7b'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x7c')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x7d'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x7e'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x7f')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x36')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x82')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x83'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x59')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['lastevent']=_0x0a9e('0x5a');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x5d')]=_0x3450ae[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x37')],_0x0a9e('0x85'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x86')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]];this['channels'][_0x23b39e[_0x0a9e('0x81')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x50')](_0x0a9e('0x87'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x88'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x81')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x0a9e('0x36')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x89')]===_0x17b29d){logger['info'](_0x0a9e('0x8a'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x3d')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x5d')]=_0x1f6f1c[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x37')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x50')](_0x0a9e('0x8b'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x8c')]){_0x33da81=_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x8f'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x90')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x50')](_0x0a9e('0x91'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x92'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x8c')]){_0xd2391=_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x90')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x50')](_0x0a9e('0x93'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
+var _0xe2ea=['[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','../ami','redis','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','varset','hangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','prototype','emit','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','isUndefined','format','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','merge','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','inspect','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','[%s][voiceAgentReport][agentcalled]','isNotNull','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','interface','pick','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','error','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acwtime','agentacw','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]','syncVarSet','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0xe2ea,0xc3));var _0xae2e=function(_0x249014,_0x2c0e45){_0x249014=_0x249014-0x0;var _0xc28949=_0xe2ea[_0x249014];return _0xc28949;};'use strict';var _=require(_0xae2e('0x0'));var moment=require(_0xae2e('0x1'));var util=require(_0xae2e('0x2'));var Redis=require(_0xae2e('0x3'));var config=require(_0xae2e('0x4'));var logger=require(_0xae2e('0x5'))('ami');var ami=require(_0xae2e('0x6'));config[_0xae2e('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xae2e('0x8'))(new Redis(config[_0xae2e('0x7')]));function VoiceAgentReport(_0x2e9b83){this[_0xae2e('0x9')]={};this[_0xae2e('0xa')]=_0x2e9b83[_0xae2e('0x9')];this['voiceQueues']=_0x2e9b83[_0xae2e('0xb')];this[_0xae2e('0xc')]=_0x2e9b83[_0xae2e('0xc')];this[_0xae2e('0xd')]={};ami['on'](_0xae2e('0xe'),this[_0xae2e('0xf')][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x11'),this[_0xae2e('0x12')][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x13'),this[_0xae2e('0x14')]['bind'](this));ami['on']('queuecallerabandon',this[_0xae2e('0x15')][_0xae2e('0x10')](this));ami['on']('agentcomplete',this['syncAgentComplete'][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x16'),this['syncVarSet']['bind'](this));ami['on'](_0xae2e('0x17'),this['syncHangup'][_0xae2e('0x10')](this));ami['on']('musiconholdstart',this[_0xae2e('0x18')][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x19'),this[_0xae2e('0x1a')]['bind'](this));ami['on'](_0xae2e('0x1b'),this[_0xae2e('0x1c')][_0xae2e('0x10')](this));ami['on']('blindtransfer',this[_0xae2e('0x1d')][_0xae2e('0x10')](this));}VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1f')]=function(_0x437761,_0x4ba235,_0x19a1e5){io['to'](_0x437761)[_0xae2e('0x1f')](_0x4ba235,_0x19a1e5);};VoiceAgentReport[_0xae2e('0x1e')]['isNotNull']=function(_0x327139){return _0x327139!==null&&!_['isUndefined'](_0x327139);};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0xf')]=function(_0x4ca586){try{if(this['isNotNull'](_0x4ca586)){logger[_0xae2e('0x20')](_0xae2e('0x21'),_0x4ca586[_0xae2e('0x22')],_0x4ca586[_0xae2e('0x23')],_0x4ca586[_0xae2e('0x24')]);logger[_0xae2e('0x25')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x4ca586[_0xae2e('0x22')],util['inspect'](_0x4ca586,{'showHidden':![],'depth':null}));if(_[_0xae2e('0x26')](this[_0xae2e('0x9')][_0x4ca586['uniqueid']])){this['channels'][_0x4ca586[_0xae2e('0x22')]]={};}if(_['isUndefined'](this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]])){this[_0xae2e('0x9')][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]]={'agentcalledAt':moment()[_0xae2e('0x27')](_0xae2e('0x28')),'lastevent':'called','mandatoryDisposition':this[_0xae2e('0xb')][_0x4ca586[_0xae2e('0x29')]]?this['voiceQueues'][_0x4ca586[_0xae2e('0x29')]][_0xae2e('0x2a')]||![]:![],'type':this[_0xae2e('0xb')][_0x4ca586[_0xae2e('0x29')]]?this[_0xae2e('0xb')][_0x4ca586[_0xae2e('0x29')]][_0xae2e('0x2b')]||_0xae2e('0x2c'):_0xae2e('0x2c'),'variables':this[_0xae2e('0xd')][_0x4ca586[_0xae2e('0x22')]],'motionChannel':_0xae2e('0x2d')};}_[_0xae2e('0x2e')](this[_0xae2e('0x9')][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]],_['omit'](_0x4ca586,[_0xae2e('0x2f'),_0xae2e('0x30')]));logger[_0xae2e('0x25')](_0xae2e('0x31'),_0x4ca586['uniqueid'],util[_0xae2e('0x32')](this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')](_0xae2e('0x33'),this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]]);logger['debug'](_0xae2e('0x34'),_0x4ca586[_0xae2e('0x22')],util['inspect'](this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]],{'showHidden':![],'depth':null}));this[_0xae2e('0x1f')](util['format'](_0xae2e('0x35'),_0x4ca586['membername']),'user:called',this[_0xae2e('0x9')][_0x4ca586['uniqueid']][_0x4ca586[_0xae2e('0x24')]]);}}catch(_0x325cfa){logger['error'](_0xae2e('0x36'),_0x4ca586[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x325cfa,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentConnect']=function(_0xadfe2d){try{if(this[_0xae2e('0x37')](_0xadfe2d)){if(this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]]){logger[_0xae2e('0x25')]('[%s][voiceAgentReport][agentconnect]\x20event:',_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](_0xadfe2d,{'showHidden':![],'depth':null}));for(var _0x539520 in this['channels'][_0xadfe2d['uniqueid']]){if(this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0xae2e('0x38')](_0x539520)){if(_0xadfe2d[_0xae2e('0x24')]===_0x539520){logger[_0xae2e('0x20')](_0xae2e('0x39'),_0xadfe2d[_0xae2e('0x22')],_0xadfe2d[_0xae2e('0x23')],_0xadfe2d[_0xae2e('0x24')]);this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3a')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3b')]=_0xadfe2d['connectedlinename'];this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3c')]=_0xadfe2d[_0xae2e('0x3c')];this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3d')]=_0xadfe2d['destchannelstate'];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520]['destchannelstatedesc']=_0xadfe2d[_0xae2e('0x3e')];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3f')]=_0xadfe2d[_0xae2e('0x3f')];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x40')]=_0xae2e('0x41');if(this['voiceChannels'][this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x22')]]){var _0x49818f=this[_0xae2e('0xa')][this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520]['uniqueid']]['routealias'];this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x42')]=_0x49818f;_0xadfe2d[_0xae2e('0x42')]=_0x49818f;}_[_0xae2e('0x2e')](this[_0xae2e('0xc')][_0xadfe2d[_0xae2e('0x43')]],_[_0xae2e('0x44')](_0xadfe2d,[_0xae2e('0x29'),'destconnectedlinenum','routealias']));logger[_0xae2e('0x25')](_0xae2e('0x45'),_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0xadfe2d['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')](_0xae2e('0x46'),this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0xadfe2d[_0xae2e('0x24')]]);logger['debug'](_0xae2e('0x47'),_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0xadfe2d[_0xae2e('0x24')]],{'showHidden':![],'depth':null}));this[_0xae2e('0x1f')](util['format'](_0xae2e('0x35'),_0xadfe2d[_0xae2e('0x23')]),_0xae2e('0x48'),this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0xadfe2d[_0xae2e('0x24')]]);}else if(!this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x13')]&&!this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x49')]){logger['info'](_0xae2e('0x4a'),_0xadfe2d[_0xae2e('0x22')],this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x23')],_0x539520);this['channels'][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x13')]=!![];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x4b')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x4c')]=_0xadfe2d[_0xae2e('0x24')];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x4d')]=_0xadfe2d[_0xae2e('0x23')];this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x40')]=_0xae2e('0x4e');this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x4f')]=_0xae2e('0x4e');logger[_0xae2e('0x25')](_0xae2e('0x50'),_0xadfe2d['uniqueid'],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')](_0xae2e('0x51'),this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520]);}}}}}}catch(_0x5830b8){logger[_0xae2e('0x52')]('[%s][voiceAgentReport][agentconnect]',_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x5830b8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x14')]=function(_0x554f4b){try{if(this['isNotNull'](_0x554f4b)){logger['debug'](_0xae2e('0x53'),_0x554f4b[_0xae2e('0x22')],util['inspect'](_0x554f4b,{'showHidden':![],'depth':null}));if(this['channels'][_0x554f4b[_0xae2e('0x22')]]&&this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]]){logger[_0xae2e('0x20')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x554f4b[_0xae2e('0x22')],_0x554f4b[_0xae2e('0x23')],_0x554f4b[_0xae2e('0x24')]);this['channels'][_0x554f4b['uniqueid']][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x13')]=!![];this[_0xae2e('0x9')][_0x554f4b['uniqueid']][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x4b')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x40')]='rejected';this[_0xae2e('0x9')][_0x554f4b['uniqueid']][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x4f')]='rejected';logger['debug'](_0xae2e('0x54'),_0x554f4b[_0xae2e('0x22')],util['inspect'](this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentringnoanswer',this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]]);}}}catch(_0x42c736){logger[_0xae2e('0x52')](_0xae2e('0x55'),_0x554f4b[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x42c736,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')]['syncQueueCallerAbandon']=function(_0x412757){try{if(this[_0xae2e('0x37')](_0x412757)){logger[_0xae2e('0x25')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x412757[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x412757,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x412757[_0xae2e('0x22')]]){for(var _0x256cb3 in this['channels'][_0x412757[_0xae2e('0x22')]]){if(this[_0xae2e('0x9')][_0x412757['uniqueid']][_0xae2e('0x38')](_0x256cb3)&&!this[_0xae2e('0x9')][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x13')]&&!this[_0xae2e('0x9')][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x49')]){logger[_0xae2e('0x20')](_0xae2e('0x56'),_0x412757[_0xae2e('0x22')],this['channels'][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x23')],_0x256cb3);this[_0xae2e('0x9')][_0x412757['uniqueid']][_0x256cb3][_0xae2e('0x13')]=!![];this[_0xae2e('0x9')][_0x412757['uniqueid']][_0x256cb3][_0xae2e('0x4b')]=moment()['format'](_0xae2e('0x28'));this['channels'][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x40')]=_0xae2e('0x57');this[_0xae2e('0x9')][_0x412757['uniqueid']][_0x256cb3][_0xae2e('0x4f')]=_0xae2e('0x57');logger[_0xae2e('0x25')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x412757[_0xae2e('0x22')],util[_0xae2e('0x32')](this['channels'][_0x412757[_0xae2e('0x22')]][_0x256cb3],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')]('custom:agentqueuecallerabandon',this['channels'][_0x412757['uniqueid']][_0x256cb3]);}}}}}catch(_0x933a9f){logger['error'](_0xae2e('0x58'),_0x412757[_0xae2e('0x22')],util['inspect'](_0x933a9f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x59')]=function(_0x27b423){try{if(this['isNotNull'](_0x27b423)){logger[_0xae2e('0x25')](_0xae2e('0x5a'),_0x27b423['uniqueid'],util[_0xae2e('0x32')](_0x27b423,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x27b423['uniqueid']]){for(var _0x2be3a3 in this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]]){if(this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0xae2e('0x38')](_0x2be3a3)){if(this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x3a')]&&!this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3]['agentcomplete']){logger[_0xae2e('0x20')](_0xae2e('0x5b'),_0x27b423[_0xae2e('0x22')],this[_0xae2e('0x9')][_0x27b423['uniqueid']][_0x2be3a3]['membername'],_0x2be3a3);this['channels'][_0x27b423['uniqueid']][_0x2be3a3][_0xae2e('0x49')]=!![];this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x5c')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this['channels'][_0x27b423['uniqueid']][_0x2be3a3]['lastevent']=_0xae2e('0x5d');this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x4f')]=_0x27b423[_0xae2e('0x4f')]==_0xae2e('0x5e')?_0xae2e('0x5f'):_0x27b423[_0xae2e('0x4f')];this['channels'][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x60')]=_0x27b423[_0xae2e('0x60')];if(this[_0xae2e('0xb')][_0x27b423[_0xae2e('0x29')]]&&this['voiceQueues'][_0x27b423[_0xae2e('0x29')]]['acw']){this[_0xae2e('0x9')][_0x27b423['uniqueid']][_0x2be3a3][_0xae2e('0x61')]=this['voiceQueues'][_0x27b423[_0xae2e('0x29')]]['acwTimeout'];this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x62')]=!![];}this[_0xae2e('0xc')][_0x27b423['interface']]=_[_0xae2e('0x63')](this[_0xae2e('0xc')][_0x27b423['interface']],[_0xae2e('0x29'),'destconnectedlinenum']);logger['debug'](_0xae2e('0x64'),_0x27b423['uniqueid'],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3],{'showHidden':![],'depth':null}));ami['emit'](_0xae2e('0x65'),this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3]);logger[_0xae2e('0x25')](_0xae2e('0x66'),_0x27b423[_0xae2e('0x22')],util['inspect'](this['channels'][_0x27b423['uniqueid']][_0x2be3a3],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xae2e('0x35'),_0x27b423[_0xae2e('0x23')]),'user:agentcomplete',this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3]);}}}}}}catch(_0x4aee19){logger['error'](_0xae2e('0x67'),_0x27b423[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x4aee19,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x68')]=function(_0x54177d){try{if(this[_0xae2e('0x37')](_0x54177d)){logger[_0xae2e('0x25')](_0xae2e('0x69'),_0x54177d[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x54177d,{'showHidden':![],'depth':null}));this[_0xae2e('0x6a')](_0x54177d[_0xae2e('0x22')],_[_0xae2e('0x6b')](_0x54177d[_0xae2e('0x6c')])[0x0],_0x54177d[_0xae2e('0x6d')]);if(this[_0xae2e('0x9')][_0x54177d[_0xae2e('0x22')]]){for(var _0x4228c6 in this[_0xae2e('0x9')][_0x54177d['uniqueid']]){if(this[_0xae2e('0x9')][_0x54177d[_0xae2e('0x22')]]['hasOwnProperty'](_0x4228c6)){logger[_0xae2e('0x20')](_0xae2e('0x6e'),_0x54177d[_0xae2e('0x22')],_0x4228c6,_[_0xae2e('0x6b')](_0x54177d[_0xae2e('0x6c')])[0x0],_0x54177d[_0xae2e('0x6d')]);if(_[_0xae2e('0x26')](this['channels'][_0x54177d['uniqueid']][_0x4228c6]['variables'])){this['channels'][_0x54177d[_0xae2e('0x22')]][_0x4228c6][_0xae2e('0xd')]={};}this[_0xae2e('0x9')][_0x54177d[_0xae2e('0x22')]][_0x4228c6]['variables']=this[_0xae2e('0xd')][_0x54177d[_0xae2e('0x22')]];}}}}}catch(_0x3d9459){logger[_0xae2e('0x52')](_0xae2e('0x6f'),_0x54177d[_0xae2e('0x22')],util['inspect'](_0x3d9459,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x6a')]=function(_0x26539f,_0x5c609f,_0x304f82){var _0x380d3d=[_0xae2e('0x70'),_0xae2e('0x71'),_0xae2e('0x72'),_0xae2e('0x73'),_0xae2e('0x74'),_0xae2e('0x75'),_0xae2e('0x76'),_0xae2e('0x77'),'sipcallid','sipuri',_0xae2e('0x78'),_0xae2e('0x79'),_0xae2e('0x7a'),_0xae2e('0x7b'),_0xae2e('0x7c'),_0xae2e('0x7d'),_0xae2e('0x23'),_0xae2e('0x7e'),_0xae2e('0x7f')];if(!_[_0xae2e('0x80')](_0x5c609f)&&!_[_0xae2e('0x81')](_0x380d3d,_0x5c609f)){if(_['isUndefined'](this[_0xae2e('0xd')][_0x26539f])){this[_0xae2e('0xd')][_0x26539f]={};}this['variables'][_0x26539f][_0x5c609f]=_0x304f82;}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x82')]=function(_0x21167f){try{if(this[_0xae2e('0x37')](_0x21167f)){logger['debug'](_0xae2e('0x83'),_0x21167f[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x21167f,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]]){for(var _0x454e29 in this[_0xae2e('0x9')][_0x21167f['uniqueid']]){if(this[_0xae2e('0x9')][_0x21167f['uniqueid']][_0xae2e('0x38')](_0x454e29)){if(this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]][_0x454e29][_0xae2e('0x4f')]==_0xae2e('0x5e')&&this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]][_0x454e29][_0xae2e('0x49')]){logger['info'](_0xae2e('0x84'),_0x21167f[_0xae2e('0x22')],_0x454e29);this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]][_0x454e29][_0xae2e('0x5c')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));}}}logger[_0xae2e('0x25')](_0xae2e('0x85'),_0x21167f['uniqueid'],util['inspect'](_[_0xae2e('0x86')](this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]]),{'showHidden':![],'depth':null}));ami['emit']('custom:voiceAgentReport',_[_0xae2e('0x86')](this['channels'][_0x21167f['uniqueid']]));delete this[_0xae2e('0x9')][_0x21167f['uniqueid']];}if(this['variables'][_0x21167f['uniqueid']]){delete this[_0xae2e('0xd')][_0x21167f[_0xae2e('0x22')]];}}}catch(_0x2c6360){logger[_0xae2e('0x52')]('[%s][voiceAgentReport][hangup]',_0x21167f[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x2c6360,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1c')]=function(_0x1ee59e){try{if(this['isNotNull'](_0x1ee59e)){logger[_0xae2e('0x25')](_0xae2e('0x87'),_0x1ee59e[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x1ee59e,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x1ee59e['transfereeuniqueid']]){for(var _0x60408c in this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]]){if(this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0xae2e('0x38')](_0x60408c)){if(_0x1ee59e[_0xae2e('0x89')]===_0x60408c){logger['info'](_0xae2e('0x8a'),_0x1ee59e['uniqueid'],this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['membername'],_0x60408c);var _0x471a53=moment();this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['agentcomplete']=!![];this['channels'][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['agentcompleteAt']=moment()['format'](_0xae2e('0x28'));this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c][_0xae2e('0x40')]=_0xae2e('0x5d');this['channels'][_0x1ee59e['transfereeuniqueid']][_0x60408c][_0xae2e('0x4f')]=_0xae2e('0x5e');this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c][_0xae2e('0x60')]=_0x471a53[_0xae2e('0x8b')](this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['agentconnectAt'],'seconds');}}}}if(this[_0xae2e('0x9')][_0x1ee59e['secondtransfereruniqueid']]){var _0x5621b3=this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x8c')]];this['channels'][_0x1ee59e['secondtransfereruniqueid']]=this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]];this[_0xae2e('0x9')][_0x1ee59e['transfereeuniqueid']]=_0x5621b3;}}}catch(_0xe0c5f1){logger[_0xae2e('0x52')](_0xae2e('0x8d'),_0x1ee59e[_0xae2e('0x22')],util['inspect'](_0xe0c5f1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1d')]=function(_0x551f40){try{if(this[_0xae2e('0x37')](_0x551f40)){logger[_0xae2e('0x25')](_0xae2e('0x8e'),_0x551f40[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x551f40,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]]){for(var _0x5c5474 in this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]]){if(this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]]['hasOwnProperty'](_0x5c5474)){if(_0x551f40['transfereruniqueid']===_0x5c5474){logger[_0xae2e('0x20')](_0xae2e('0x8f'),_0x551f40['uniqueid'],this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x23')],_0x5c5474);var _0x331149=moment();this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x49')]=!![];this['channels'][_0x551f40['transfereeuniqueid']][_0x5c5474][_0xae2e('0x5c')]=_0x331149;this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x40')]=_0xae2e('0x5d');this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474]['reason']=_0xae2e('0x5e');this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x60')]=_0x331149[_0xae2e('0x8b')](this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x3a')],'seconds');}}}}}}catch(_0x8cd7af){logger[_0xae2e('0x52')](_0xae2e('0x90'),_0x551f40[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x8cd7af,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x18')]=function(_0x381940){var _0xa12f4f='';try{if(this[_0xae2e('0x37')](_0x381940)){logger[_0xae2e('0x25')](_0xae2e('0x91'),_0x381940[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x381940,{'showHidden':![],'depth':null}));if(_0x381940[_0xae2e('0x92')]){_0xa12f4f=_0x381940[_0xae2e('0x92')]['substring'](0x0,_0x381940[_0xae2e('0x92')]['lastIndexOf']('-'));if(this[_0xae2e('0xc')][_0xa12f4f]){logger[_0xae2e('0x20')](_0xae2e('0x93'),_0x381940['uniqueid'],_0xa12f4f);this[_0xae2e('0xc')][_0xa12f4f]['onhold']=!![];}}}}catch(_0x3c5547){logger['error']('[%s][voiceAgentReport][musiconholdstart]',_0x381940[_0xae2e('0x22')],util['inspect'](_0x3c5547,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1a')]=function(_0x151272){var _0x50600d='';try{if(this[_0xae2e('0x37')](_0x151272)){logger[_0xae2e('0x25')](_0xae2e('0x94'),_0x151272['uniqueid'],util[_0xae2e('0x32')](_0x151272,{'showHidden':![],'depth':null}));if(_0x151272[_0xae2e('0x92')]){_0x50600d=_0x151272[_0xae2e('0x92')][_0xae2e('0x95')](0x0,_0x151272['channel']['lastIndexOf']('-'));if(this[_0xae2e('0xc')][_0x50600d]){logger[_0xae2e('0x20')](_0xae2e('0x96'),_0x151272[_0xae2e('0x22')],_0x50600d);this['agents'][_0x50600d]['onhold']=![];}}}}catch(_0x178005){logger[_0xae2e('0x52')](_0xae2e('0x97'),_0x151272[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x178005,{'showHidden':![],'depth':null}));}};module[_0xae2e('0x98')]=VoiceAgentReport;
\ No newline at end of file
index 907f01e..40c8e0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40af=['onhold','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','bind','newexten','syncNewChannel','newstate','varset','syncVarSet','syncHangup','syncNewCallerId','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isUndefined','emit','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','linkedid','pick','keys','context','from-sip','channel','exten','xcally-motion-preview','split','user:%s','name','user:agentconnect','[%s][voiceCallReport][newcallerid]','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','format','YYYY-MM-DD\x20HH:mm:ss','toNumber','merge','destconnectedlinenum','accountcode','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','info','subtract','duration','seconds','disposition','lastdata','startsWith','cdr(','match','[%s][voiceCallReport][newexten]','syncNewState','answered','answertime','holdtime','diff','connectedlinenum','connectedlinename','destinationchannel','channelstate','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','.wav49','replace','.WAV','monitorFilename','monitors','isNil','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','mixmonitor_filename','parse','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','starttime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','then','isEmpty','getSettings','resolve','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','type','outbound','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','routeid','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','BlindTransfer','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','mohstarttime','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','not_inuse','busy','invalid'];(function(_0x47c75a,_0x447086){var _0x1e6f62=function(_0x1a2907){while(--_0x1a2907){_0x47c75a['push'](_0x47c75a['shift']());}};_0x1e6f62(++_0x447086);}(_0x40af,0xb4));var _0xf40a=function(_0x376a5c,_0x471fb8){_0x376a5c=_0x376a5c-0x0;var _0x5b34ba=_0x40af[_0x376a5c];return _0x5b34ba;};'use strict';var BPromise=require('bluebird');var _=require(_0xf40a('0x0'));var moment=require(_0xf40a('0x1'));var util=require(_0xf40a('0x2'));var path=require(_0xf40a('0x3'));var Redis=require(_0xf40a('0x4'));var config=require(_0xf40a('0x5'));var logger=require(_0xf40a('0x6'))(_0xf40a('0x7'));var ami=require('../ami');var Channel=require(_0xf40a('0x8'));var RpcSetting=require(_0xf40a('0x9'));var statusDesc=['unknown',_0xf40a('0xa'),'inuse',_0xf40a('0xb'),_0xf40a('0xc'),'unavailable','ringing','ringinuse',_0xf40a('0xd')];var applications=[_0xf40a('0xe'),_0xf40a('0xf'),_0xf40a('0x10'),_0xf40a('0x11'),_0xf40a('0x12'),_0xf40a('0x13')];var dispositions=[_0xf40a('0x14'),'FAILED',_0xf40a('0x15'),_0xf40a('0x14'),'NO\x20ANSWER',_0xf40a('0x14'),_0xf40a('0x16'),_0xf40a('0x17'),'FAILED',_0xf40a('0x15'),_0xf40a('0x15')];var actions={};config[_0xf40a('0x18')]=_[_0xf40a('0x19')](config[_0xf40a('0x18')],{'host':_0xf40a('0x1a'),'port':0x18eb});var io=require(_0xf40a('0x1b'))(new Redis(config['redis']));function VoiceCallReport(_0x549fbe){this[_0xf40a('0x1c')]=_0x549fbe[_0xf40a('0x1c')];this[_0xf40a('0x1d')]=_0x549fbe[_0xf40a('0x1d')];this[_0xf40a('0x1e')]={};ami['on']('coreshowchannel',this[_0xf40a('0x1f')][_0xf40a('0x20')](this));ami['on'](_0xf40a('0x21'),this[_0xf40a('0x1f')][_0xf40a('0x20')](this));ami['on']('newchannel',this[_0xf40a('0x22')]['bind'](this));ami['on'](_0xf40a('0x23'),this['syncNewState'][_0xf40a('0x20')](this));ami['on'](_0xf40a('0x24'),this[_0xf40a('0x25')][_0xf40a('0x20')](this));ami['on']('hangup',this[_0xf40a('0x26')][_0xf40a('0x20')](this));ami['on']('newcallerid',this[_0xf40a('0x27')][_0xf40a('0x20')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0xf40a('0x28'),this[_0xf40a('0x29')][_0xf40a('0x20')](this));ami['on'](_0xf40a('0x2a'),this[_0xf40a('0x2b')][_0xf40a('0x20')](this));ami['on'](_0xf40a('0x2c'),this['syncMusicOnHoldStop'][_0xf40a('0x20')](this));try{logger['info'](_0xf40a('0x2d'));ami[_0xf40a('0x2e')]();}catch(_0xb41fae){logger[_0xf40a('0x2f')](_0xf40a('0x30'),util[_0xf40a('0x31')](_0xb41fae,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xf40a('0x32')]['isNotNull']=function(_0x58ca92){return _0x58ca92!==null&&!_[_0xf40a('0x33')](_0x58ca92);};VoiceCallReport['prototype'][_0xf40a('0x34')]=function(_0x54e865,_0x31760b,_0x224251){io['to'](_0x54e865)[_0xf40a('0x34')](_0x31760b,_0x224251);};VoiceCallReport[_0xf40a('0x32')]['syncNewCallerId']=function(_0x43a303){try{if(this[_0xf40a('0x35')](_0x43a303)){logger['info'](_0xf40a('0x36'),_0x43a303['uniqueid'],_0x43a303[_0xf40a('0x37')],_0x43a303[_0xf40a('0x38')]);logger[_0xf40a('0x39')](_0xf40a('0x3a'),_0x43a303[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x43a303,{'showHidden':![],'depth':null}));if(_0x43a303[_0xf40a('0x3b')]===_0x43a303[_0xf40a('0x3c')]){if(!_[_0xf40a('0x33')](this['channels'][_0x43a303[_0xf40a('0x3b')]])){_['merge'](this[_0xf40a('0x1c')][_0x43a303[_0xf40a('0x3b')]],_[_0xf40a('0x3d')](_0x43a303,_[_0xf40a('0x3e')](this['channels'][_0x43a303[_0xf40a('0x3b')]])));}}if(_0x43a303[_0xf40a('0x3f')]===_0xf40a('0x40')){if(this['agents'][_0x43a303[_0xf40a('0x41')]['split']('-')[0x0]]){if(_0x43a303[_0xf40a('0x42')]==_0xf40a('0x43')){this[_0xf40a('0x1d')][_0x43a303['channel'][_0xf40a('0x44')]('-')[0x0]]['destconnectedlinenum']=_0x43a303['connectedlinenum'];this['emit'](util['format'](_0xf40a('0x45'),this[_0xf40a('0x1d')][_0x43a303[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]][_0xf40a('0x46')]),_0xf40a('0x47'),{'destaccountcode':this[_0xf40a('0x1d')][_0x43a303['channel']['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x43a303['connectedlinenum']});}}}}}catch(_0x492624){logger[_0xf40a('0x2f')](_0xf40a('0x48'),_0x43a303[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x492624,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xf40a('0x22')]=function(_0xfb20e2){try{if(this['isNotNull'](_0xfb20e2)){logger[_0xf40a('0x39')]('[%s][voiceCallReport][newchannel]\x20event:',_0xfb20e2[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0xfb20e2,{'showHidden':![],'depth':null}));if(_0xfb20e2[_0xf40a('0x3b')]===_0xfb20e2[_0xf40a('0x3c')]&&_0xfb20e2[_0xf40a('0x41')]!=_0xf40a('0x49')){if(_[_0xf40a('0x33')](this[_0xf40a('0x1c')][_0xfb20e2[_0xf40a('0x3b')]])){logger['info'](_0xf40a('0x4a'),_0xfb20e2[_0xf40a('0x3b')],_0xfb20e2['context'],_0xfb20e2[_0xf40a('0x42')]);this[_0xf40a('0x1c')][_0xfb20e2[_0xf40a('0x3b')]]=new Channel();this['channels'][_0xfb20e2['uniqueid']]['starttime']=moment()[_0xf40a('0x4b')](_0xf40a('0x4c'));this[_0xf40a('0x1c')][_0xfb20e2[_0xf40a('0x3b')]]['disposition']=dispositions[_[_0xf40a('0x4d')](_0xfb20e2['channelstate'])];_[_0xf40a('0x4e')](this[_0xf40a('0x1c')][_0xfb20e2[_0xf40a('0x3b')]],_['pick'](_0xfb20e2,_[_0xf40a('0x3e')](this[_0xf40a('0x1c')][_0xfb20e2['uniqueid']])));if(_0xfb20e2['context']===_0xf40a('0x40')){if(this[_0xf40a('0x1d')][_0xfb20e2['channel'][_0xf40a('0x44')]('-')[0x0]]){if(_[_0xf40a('0x33')](this[_0xf40a('0x1d')][_0xfb20e2[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]][_0xf40a('0x4f')])){this['agents'][_0xfb20e2['channel'][_0xf40a('0x44')]('-')[0x0]][_0xf40a('0x4f')]=_0xfb20e2[_0xf40a('0x42')];logger['debug']('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0xfb20e2[_0xf40a('0x3b')],util[_0xf40a('0x31')]({'destaccountcode':this[_0xf40a('0x1d')][_0xfb20e2['channel']['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0xfb20e2[_0xf40a('0x42')]},{'showHidden':![],'depth':null}));this[_0xf40a('0x34')](util[_0xf40a('0x4b')](_0xf40a('0x45'),this[_0xf40a('0x1d')][_0xfb20e2[_0xf40a('0x41')]['split']('-')[0x0]][_0xf40a('0x46')]),'user:agentconnect',{'destaccountcode':this[_0xf40a('0x1d')][_0xfb20e2['channel'][_0xf40a('0x44')]('-')[0x0]][_0xf40a('0x50')],'destconnectedlinenum':_0xfb20e2[_0xf40a('0x42')]});}}}}}}}catch(_0x50932f){logger[_0xf40a('0x2f')]('[%s][voiceCallReport][newchannel]',_0xfb20e2[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x50932f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf40a('0x32')][_0xf40a('0x1f')]=function(_0x5a84af){try{if(this['isNotNull'](_0x5a84af)){logger['debug'](_0xf40a('0x51'),_0x5a84af[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x5a84af,{'showHidden':![],'depth':null}));if(_0x5a84af[_0xf40a('0x3b')]===_0x5a84af['linkedid']&&_0x5a84af[_0xf40a('0x42')]!='h'&&_0x5a84af[_0xf40a('0x41')]!=_0xf40a('0x49')){_0x5a84af[_0xf40a('0x52')]=_0x5a84af[_0xf40a('0x52')][_0xf40a('0x53')]();_0x5a84af[_0xf40a('0x54')]=_0x5a84af['appdata']&&_0x5a84af['appdata']['startsWith']('CDR(routeAlias)')?_0x5a84af[_0xf40a('0x55')]:(_0x5a84af[_0xf40a('0x55')]||_0x5a84af[_0xf40a('0x54')])['toLowerCase']();logger[_0xf40a('0x56')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x5a84af[_0xf40a('0x3b')],_0x5a84af[_0xf40a('0x52')],_0x5a84af[_0xf40a('0x54')]);if(_[_0xf40a('0x33')](this['channels'][_0x5a84af[_0xf40a('0x3b')]])){this[_0xf40a('0x1c')][_0x5a84af['uniqueid']]=new Channel();this[_0xf40a('0x1c')][_0x5a84af['uniqueid']]['starttime']=_0x5a84af['duration']?moment()[_0xf40a('0x57')](moment['duration'](_0x5a84af[_0xf40a('0x58')])[_0xf40a('0x59')](),_0xf40a('0x59'))['format'](_0xf40a('0x4c')):moment()[_0xf40a('0x4b')](_0xf40a('0x4c'));this[_0xf40a('0x1c')][_0x5a84af[_0xf40a('0x3b')]][_0xf40a('0x5a')]=_0xf40a('0x14');}_['merge'](this[_0xf40a('0x1c')][_0x5a84af[_0xf40a('0x3b')]],_['pick'](_0x5a84af,_['keys'](this['channels'][_0x5a84af['uniqueid']])));if(_['includes'](applications,_0x5a84af[_0xf40a('0x52')])){this[_0xf40a('0x1c')][_0x5a84af['uniqueid']]['lastapplication']=_0x5a84af[_0xf40a('0x52')];this['channels'][_0x5a84af[_0xf40a('0x3b')]][_0xf40a('0x5b')]=_0x5a84af['applicationdata'];if(_0x5a84af['application']===_0xf40a('0xe')&&_[_0xf40a('0x5c')](_0x5a84af[_0xf40a('0x54')]['toLowerCase'](),_0xf40a('0x5d'))){var _0x4ee2d6=_0x5a84af['applicationdata'][_0xf40a('0x44')]('=');var _0x1ddd52=_0x4ee2d6[0x0][_0xf40a('0x53')]()[_0xf40a('0x5e')](/cdr\((.*)\)/);if(_0x1ddd52){this[_0xf40a('0x1c')][_0x5a84af[_0xf40a('0x3b')]][_0x1ddd52[0x1]]=_0x4ee2d6[0x1];}}else if(_0x5a84af[_0xf40a('0x52')]===_0xf40a('0xf')){this['channels'][_0x5a84af['uniqueid']][_0xf40a('0xf')]=_0x5a84af[_0xf40a('0x54')][_0xf40a('0x44')](',')[0x0];}}}}}catch(_0xb9920){logger[_0xf40a('0x2f')](_0xf40a('0x5f'),_0x5a84af[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0xb9920,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf40a('0x32')][_0xf40a('0x60')]=function(_0x381e10){try{if(this['isNotNull'](_0x381e10)){logger[_0xf40a('0x56')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x381e10['uniqueid'],_0x381e10[_0xf40a('0x3c')],_0x381e10[_0xf40a('0x37')],_0x381e10[_0xf40a('0x38')]);logger[_0xf40a('0x39')]('[%s][voiceCallReport][newstate]\x20event:',_0x381e10[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x381e10,{'showHidden':![],'depth':null}));if(_0x381e10[_0xf40a('0x3b')]!==_0x381e10[_0xf40a('0x3c')]){if(this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]]){if(_0x381e10['channelstate']==='6'){if(!this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x61')]){var _0x23003b=moment();this['channels'][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x61')]=!![];this['channels'][_0x381e10['linkedid']][_0xf40a('0x62')]=_0x23003b[_0xf40a('0x4b')](_0xf40a('0x4c'));if(this[_0xf40a('0x1c')][_0x381e10['linkedid']]['starttime']){this['channels'][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x63')]=_0x23003b[_0xf40a('0x64')](this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]]['starttime'],_0xf40a('0x59'));}}this['channels'][_0x381e10['linkedid']][_0xf40a('0x3c')]=_0x381e10[_0xf40a('0x3b')];if(_0x381e10[_0xf40a('0x38')]!==_0xf40a('0x43')){this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x65')]=_0x381e10[_0xf40a('0x38')];}this['channels'][_0x381e10['linkedid']][_0xf40a('0x66')]=_0x381e10[_0xf40a('0x37')];this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x67')]=_0x381e10[_0xf40a('0x41')];this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x5a')]=dispositions[_['toNumber'](_0x381e10[_0xf40a('0x68')])];if(this['agents'][_0x381e10[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]]){this['channels'][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x69')]=this[_0xf40a('0x1d')][_0x381e10['channel'][_0xf40a('0x44')]('-')[0x0]]['id'];this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]][_0xf40a('0x6a')]=this[_0xf40a('0x1d')][_0x381e10['channel'][_0xf40a('0x44')]('-')[0x0]]['name'];}}}}else{if(this[_0xf40a('0x1c')][_0x381e10['uniqueid']]){if(_0x381e10[_0xf40a('0x68')]==='6'){if(this[_0xf40a('0x1d')][_0x381e10['channel']['split']('-')[0x0]]){this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3b')]][_0xf40a('0x69')]=this[_0xf40a('0x1d')][_0x381e10[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]]['id'];this['channels'][_0x381e10[_0xf40a('0x3b')]][_0xf40a('0x6a')]=this[_0xf40a('0x1d')][_0x381e10[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]]['name'];}}}}if(_0x381e10['channelstate']==='6'&&_0x381e10[_0xf40a('0x3f')]===_0xf40a('0x40')){if(this[_0xf40a('0x1d')][_0x381e10['channel']['split']('-')[0x0]]){this[_0xf40a('0x1d')][_0x381e10[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]][_0xf40a('0x4f')]=_0x381e10[_0xf40a('0x42')];var _0x5744df;if(this[_0xf40a('0x1c')][_0x381e10['uniqueid']])_0x5744df=this[_0xf40a('0x1c')][_0x381e10['uniqueid']][_0xf40a('0x6b')];else if(this['channels'][_0x381e10[_0xf40a('0x3c')]])_0x5744df=this[_0xf40a('0x1c')][_0x381e10[_0xf40a('0x3c')]]['routealias'];logger[_0xf40a('0x39')](_0xf40a('0x6c'),_0x381e10['uniqueid'],util[_0xf40a('0x31')]({'destaccountcode':this['agents'][_0x381e10[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x381e10[_0xf40a('0x42')],'routealias':_0x5744df},{'showHidden':![],'depth':null}));this[_0xf40a('0x34')](util[_0xf40a('0x4b')](_0xf40a('0x45'),this[_0xf40a('0x1d')][_0x381e10['channel']['split']('-')[0x0]][_0xf40a('0x46')]),_0xf40a('0x47'),{'destaccountcode':this[_0xf40a('0x1d')][_0x381e10[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]][_0xf40a('0x50')],'destconnectedlinenum':_0x381e10[_0xf40a('0x42')],'routealias':_0x5744df});}}}}catch(_0xf8f509){logger['error'](_0xf40a('0x6d'),_0x381e10[_0xf40a('0x3b')],util['inspect'](_0xf8f509,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf40a('0x32')][_0xf40a('0x6e')]=function(_0x41fe8e,_0x1d2c26){try{if(this[_0xf40a('0x1c')][_0x41fe8e]){logger[_0xf40a('0x56')](_0xf40a('0x6f'),_0x41fe8e,_0x1d2c26);this[_0xf40a('0x1c')][_0x41fe8e]['monitor']=!![];if(_[_0xf40a('0x70')](_0x1d2c26,_0xf40a('0x71'))){_0x1d2c26=_0x1d2c26[_0xf40a('0x72')]('.wav49',_0xf40a('0x73'));}this[_0xf40a('0x1c')][_0x41fe8e][_0xf40a('0x74')]=_0x1d2c26;var _0x2b378a=_['find'](this[_0xf40a('0x1c')][_0x41fe8e][_0xf40a('0x75')],{'filename':_0x1d2c26});if(_[_0xf40a('0x76')](_0x2b378a)){this[_0xf40a('0x1c')][_0x41fe8e][_0xf40a('0x75')]['push']({'filename':_0x1d2c26,'createdAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0xf40a('0x77')});}}}catch(_0x40031f){logger[_0xf40a('0x2f')](_0xf40a('0x78'),_0x41fe8e,util[_0xf40a('0x31')](_0x40031f,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xf40a('0x25')]=function(_0x26b46a){try{if(this[_0xf40a('0x35')](_0x26b46a)){logger[_0xf40a('0x39')]('[%s][voiceCallReport][varset]\x20event:',_0x26b46a['uniqueid'],util['inspect'](_0x26b46a,{'showHidden':![],'depth':null}));if(this[_0xf40a('0x1c')][_0x26b46a[_0xf40a('0x3b')]]&&_0x26b46a[_0xf40a('0x41')]!='OutgoingSpoolFailed'){if(this['isNotNull'](_0x26b46a['variable'])){if(this['isNotNull'](_0x26b46a[_0xf40a('0x79')]['mixmonitor_filename'])){logger[_0xf40a('0x56')](_0xf40a('0x7a'),_0x26b46a['uniqueid'],_0x26b46a[_0xf40a('0x7b')]);this['syncMixMonitorFilename'](_0x26b46a[_0xf40a('0x3b')],_0x26b46a[_0xf40a('0x7b')]);}else if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')]['xmd-phone'])){logger[_0xf40a('0x56')](_0xf40a('0x7c'),_0x26b46a[_0xf40a('0x3b')],_0x26b46a['value']);this['channels'][_0x26b46a[_0xf40a('0x3b')]]['calleridnum']=_0x26b46a[_0xf40a('0x7b')];}else if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')][_0xf40a('0x7d')])){logger['info'](_0xf40a('0x7e'),_0x26b46a[_0xf40a('0x3b')],_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x1c')][_0x26b46a['uniqueid']]['callerid']=_0x26b46a[_0xf40a('0x7b')];}else if(this[_0xf40a('0x35')](_0x26b46a['variable']['xmd-cdrtype'])){logger[_0xf40a('0x56')](_0xf40a('0x7f'),_0x26b46a[_0xf40a('0x3b')],_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x1c')][_0x26b46a[_0xf40a('0x3b')]]['type']=_0x26b46a[_0xf40a('0x7b')];}else if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')]['xmd-queue'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x26b46a[_0xf40a('0x3b')],_0x26b46a[_0xf40a('0x7b')][_0xf40a('0x44')](',')[0x0]);this['channels'][_0x26b46a['uniqueid']][_0xf40a('0xf')]=_0x26b46a[_0xf40a('0x7b')]['split'](',')[0x0];}else if(this['isNotNull'](_0x26b46a[_0xf40a('0x79')][_0xf40a('0x80')])){logger[_0xf40a('0x56')](_0xf40a('0x81'),_0x26b46a[_0xf40a('0x3b')],_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x1c')][_0x26b46a[_0xf40a('0x3b')]]['originatecalleridnum']=_0x26b46a[_0xf40a('0x7b')];}else if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')][_0xf40a('0x82')])){logger[_0xf40a('0x56')](_0xf40a('0x83'),_0x26b46a[_0xf40a('0x3b')],_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x1c')][_0x26b46a[_0xf40a('0x3b')]][_0xf40a('0x84')]=_0x26b46a[_0xf40a('0x7b')];}else if(this[_0xf40a('0x35')](_0x26b46a['variable'][_0xf40a('0x85')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x26b46a['uniqueid'],_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x1c')][_0x26b46a[_0xf40a('0x3b')]]['calleridpreview']=_0x26b46a[_0xf40a('0x7b')];}else if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')]['xmcs-queue'])){logger['info'](_0xf40a('0x86'),_0x26b46a['uniqueid'],_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x1c')][_0x26b46a['uniqueid']][_0xf40a('0xf')]=_0x26b46a[_0xf40a('0x7b')];}else if(this['isNotNull'](_0x26b46a[_0xf40a('0x79')][_0xf40a('0x87')])){logger[_0xf40a('0x56')](_0xf40a('0x88'),_0x26b46a[_0xf40a('0x3b')],_0x26b46a[_0xf40a('0x7b')]);this['channels'][_0x26b46a[_0xf40a('0x3b')]]['sipcalluniqueid']=_0x26b46a['value'];}}}else if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')][_0xf40a('0x89')])){if(_0x26b46a['value']){var _0x29ddc7=path[_0xf40a('0x8a')](_0x26b46a[_0xf40a('0x7b')])[_0xf40a('0x46')];logger['info'](_0xf40a('0x7a'),_0x29ddc7,_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x6e')](_0x29ddc7,_0x26b46a['value']);}}else if(this[_0xf40a('0x1c')][_0x26b46a[_0xf40a('0x3c')]]){if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')])){if(this[_0xf40a('0x35')](_0x26b46a[_0xf40a('0x79')][_0xf40a('0x87')])){logger['info'](_0xf40a('0x88'),_0x26b46a[_0xf40a('0x3c')],_0x26b46a[_0xf40a('0x7b')]);this[_0xf40a('0x1c')][_0x26b46a['linkedid']]['sipcalllinkedid']=_0x26b46a[_0xf40a('0x7b')];}}}}}catch(_0x509c58){logger[_0xf40a('0x2f')](_0xf40a('0x8b'),_0x26b46a[_0xf40a('0x3b')],util['inspect'](_0x509c58,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf40a('0x32')][_0xf40a('0x26')]=function(_0x407773){try{if(this[_0xf40a('0x35')](_0x407773)){logger[_0xf40a('0x39')](_0xf40a('0x8c'),_0x407773[_0xf40a('0x3b')],util['inspect'](_0x407773,{'showHidden':![],'depth':null}));if(this['channels'][_0x407773['uniqueid']]){logger[_0xf40a('0x56')](_0xf40a('0x8d'),_0x407773[_0xf40a('0x3b')],_0x407773[_0xf40a('0x8e')]);var _0x52968f=moment();this[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]][_0xf40a('0x8f')]=_0x52968f[_0xf40a('0x4b')](_0xf40a('0x4c'));this[_0xf40a('0x1c')][_0x407773['uniqueid']][_0xf40a('0x58')]=_0x52968f[_0xf40a('0x64')](this[_0xf40a('0x1c')][_0x407773['uniqueid']][_0xf40a('0x90')],_0xf40a('0x59'));if(this[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]][_0xf40a('0x61')]){this[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]][_0xf40a('0x91')]=_0x52968f[_0xf40a('0x64')](this[_0xf40a('0x1c')][_0x407773['uniqueid']][_0xf40a('0x62')],'seconds');this[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]][_0xf40a('0x63')]=this[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]][_0xf40a('0x58')]-this[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]]['billableseconds'];}if(_0x407773[_0xf40a('0x3f')]===_0xf40a('0x40')){if(this['agents'][_0x407773[_0xf40a('0x41')]['split']('-')[0x0]]){this['agents'][_0x407773[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]]=_[_0xf40a('0x92')](this[_0xf40a('0x1d')][_0x407773['channel']['split']('-')[0x0]],[_0xf40a('0x4f')]);logger[_0xf40a('0x39')](_0xf40a('0x93'),_0x407773['uniqueid'],util['inspect']({'id':this[_0xf40a('0x1d')][_0x407773['channel'][_0xf40a('0x44')]('-')[0x0]]['id'],'destaccountcode':this[_0xf40a('0x1d')][_0x407773[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0xf40a('0x34')](util[_0xf40a('0x4b')](_0xf40a('0x45'),this[_0xf40a('0x1d')][_0x407773[_0xf40a('0x41')]['split']('-')[0x0]][_0xf40a('0x46')]),'user:agentcomplete',{'id':this[_0xf40a('0x1d')][_0x407773[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]]['id'],'destaccountcode':this[_0xf40a('0x1d')][_0x407773[_0xf40a('0x41')][_0xf40a('0x44')]('-')[0x0]][_0xf40a('0x50')]});}}var _0xde10c7=this;Promise['resolve']()[_0xf40a('0x94')](function(){var _0x505fc9=_0xde10c7[_0xf40a('0x1c')][_0x407773['uniqueid']];if(typeof _0x505fc9['transferType']==='undefined')return;if(_[_0xf40a('0x95')](_0x505fc9['monitors']))return;return RpcSetting[_0xf40a('0x96')]()['then'](function(_0x31dcfa){if(!_0x31dcfa['stopRecordingOnTransfer'])return;return Promise[_0xf40a('0x97')]()['then'](function(){return ami[_0xf40a('0x98')]({'action':'StopMixMonitor','channel':_0x505fc9['channel']})['catch'](function(){});})[_0xf40a('0x94')](function(){return ami[_0xf40a('0x98')]({'action':_0xf40a('0x99'),'channel':_0x505fc9[_0xf40a('0x67')]})[_0xf40a('0x9a')](function(){})[_0xf40a('0x9b')](function(){var _0x4451f1=_0xde10c7[_0xf40a('0x1d')][_0x505fc9['destinationchannel']['split']('-')[0x0]];if(!_0x4451f1)return;io[_0xf40a('0x34')](_0xf40a('0x9c'),{'agentId':_0x4451f1['id'],'uniqueid':_0x505fc9[_0xf40a('0x3b')]});});});});})[_0xf40a('0x94')](function(){if(_0x407773[_0xf40a('0x9d')]==='BlindTransfer'){_0xde10c7['blindTransfers'][_0x407773[_0xf40a('0x3b')]]=_0xde10c7[_0xf40a('0x1c')][_0x407773['uniqueid']];}else{if(_0xde10c7[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]][_0xf40a('0x9e')]===_0xf40a('0x9f')&&_0xde10c7[_0xf40a('0x1e')][_0x407773[_0xf40a('0x3b')]]){_0xde10c7[_0xf40a('0x1c')][_0x407773['uniqueid']][_0xf40a('0x3b')]=[_0xde10c7[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]][_0xf40a('0x3c')],_0xde10c7[_0xf40a('0x1c')][_0x407773['uniqueid']][_0xf40a('0x3c')]=_0xde10c7[_0xf40a('0x1c')][_0x407773['uniqueid']][_0xf40a('0x3b')]][0x0];delete _0xde10c7['blindTransfers'][_0x407773[_0xf40a('0x3b')]];}}logger[_0xf40a('0x39')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x407773[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0xde10c7[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]],{'showHidden':![],'depth':null}));ami[_0xf40a('0x34')]('custom:voiceCallReport',_0xde10c7[_0xf40a('0x1c')][_0x407773['uniqueid']]);delete _0xde10c7[_0xf40a('0x1c')][_0x407773[_0xf40a('0x3b')]];});}}}catch(_0x5bc9d1){logger[_0xf40a('0x2f')](_0xf40a('0xa0'),_0x407773['uniqueid'],util[_0xf40a('0x31')](_0x5bc9d1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf40a('0x32')][_0xf40a('0xa1')]=function(_0x5d531d){try{if(this[_0xf40a('0x35')](_0x5d531d)){logger[_0xf40a('0x56')](_0xf40a('0xa2'),_0x5d531d[_0xf40a('0x3b')],_0x5d531d[_0xf40a('0xa3')],_0x5d531d[_0xf40a('0xa4')]);logger[_0xf40a('0x39')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x5d531d[_0xf40a('0x3b')],util['inspect'](_0x5d531d,{'showHidden':![],'depth':null}));if(this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa5')]]){this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa5')]][_0xf40a('0xa6')]=_0x5d531d[_0xf40a('0xa3')];this[_0xf40a('0x1c')][_0x5d531d['transfereeuniqueid']][_0xf40a('0xa7')]=_0x5d531d[_0xf40a('0xa4')];if(this['channels'][_0x5d531d[_0xf40a('0xa8')]]){var _0x3e7669=this['channels'][_0x5d531d[_0xf40a('0xa8')]];this[_0xf40a('0x1c')][_0x5d531d['secondtransfereruniqueid']]=this['channels'][_0x5d531d[_0xf40a('0xa5')]];this['channels'][_0x5d531d['transfereeuniqueid']]=_0x3e7669;}}else if(this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa9')]]){this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa9')]][_0xf40a('0xa6')]=_0x5d531d[_0xf40a('0xa3')];this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa9')]][_0xf40a('0xa7')]=_0x5d531d[_0xf40a('0xa4')];if(this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xaa')]]){var _0x3e7669=this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xaa')]];this[_0xf40a('0x1c')][_0x5d531d['origtransfereruniqueid']]=this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa9')]];this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa9')]]=_0x3e7669;}}if((this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xaa')]]||this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xab')]])&&this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa8')]]){var _0x14d05b=_['some']([this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xaa')]],this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xab')]],this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xa8')]]],function(_0x466633){return _0x466633&&_0x466633[_0xf40a('0x9e')]==='outbound'&&_0x466633[_0xf40a('0xac')];});if(_0x14d05b){if(this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xaa')]])this[_0xf40a('0x1c')][_0x5d531d[_0xf40a('0xaa')]][_0xf40a('0xad')]=_0xf40a('0xae');if(this[_0xf40a('0x1c')][_0x5d531d['origtransfererlinkedid']])this[_0xf40a('0x1c')][_0x5d531d['origtransfererlinkedid']][_0xf40a('0xad')]=_0xf40a('0xae');this[_0xf40a('0x1c')][_0x5d531d['secondtransfereruniqueid']]['transferType']=_0xf40a('0xae');}}}}catch(_0x368506){logger[_0xf40a('0x2f')](_0xf40a('0xaf'),_0x5d531d[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x368506,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf40a('0x32')][_0xf40a('0x29')]=function(_0x26d35f){try{if(this[_0xf40a('0x35')](_0x26d35f)){logger[_0xf40a('0x56')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x26d35f[_0xf40a('0x3b')],_0x26d35f[_0xf40a('0xb0')],_0x26d35f[_0xf40a('0xb1')]);logger[_0xf40a('0x39')](_0xf40a('0xb2'),_0x26d35f[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x26d35f,{'showHidden':![],'depth':null}));if(this[_0xf40a('0x1c')][_0x26d35f[_0xf40a('0xa5')]]){this['channels'][_0x26d35f['transfereeuniqueid']][_0xf40a('0xa6')]=_0x26d35f['transfereecalleridnum'];this[_0xf40a('0x1c')][_0x26d35f[_0xf40a('0xa5')]]['transferconnectedlinenum']=_0x26d35f[_0xf40a('0xb1')];this[_0xf40a('0x1c')][_0x26d35f[_0xf40a('0xa5')]][_0xf40a('0xad')]=_0xf40a('0xb3');this['syncHangup']({'event':_0xf40a('0xb4'),'uniqueid':_0x26d35f['transfereeuniqueid'],'context':_0x26d35f[_0xf40a('0x3f')],'channel':_0x26d35f[_0xf40a('0xb5')]});}else{this[_0xf40a('0x1c')][_0x26d35f[_0xf40a('0xb6')]][_0xf40a('0xad')]=_0xf40a('0xb3');}}}catch(_0x13c8b6){logger[_0xf40a('0x2f')](_0xf40a('0xb7'),_0x26d35f[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x13c8b6,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMusicOnHoldStart']=function(_0x4b3b1c){try{if(this[_0xf40a('0x35')](_0x4b3b1c)){logger[_0xf40a('0x39')](_0xf40a('0xb8'),_0x4b3b1c[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x4b3b1c,{'showHidden':![],'depth':null}));if(this[_0xf40a('0x1c')][_0x4b3b1c['uniqueid']]){if(!_[_0xf40a('0x76')](this[_0xf40a('0x1c')][_0x4b3b1c[_0xf40a('0x3b')]]['answertime'])){this[_0xf40a('0x1c')][_0x4b3b1c[_0xf40a('0x3b')]]['mohstarttime']=moment()['format'](_0xf40a('0x4c'));logger['info'](_0xf40a('0xb9'),_0x4b3b1c[_0xf40a('0x3b')],this[_0xf40a('0x1c')][_0x4b3b1c[_0xf40a('0x3b')]]['mohstarttime']);}}}}catch(_0x44fd75){logger[_0xf40a('0x2f')](_0xf40a('0xba'),_0x4b3b1c['uniqueid'],util[_0xf40a('0x31')](_0x44fd75,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf40a('0x32')][_0xf40a('0xbb')]=function(_0x5c1ef3){try{if(this[_0xf40a('0x35')](_0x5c1ef3)){logger[_0xf40a('0x39')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x5c1ef3[_0xf40a('0x3b')],util[_0xf40a('0x31')](_0x5c1ef3,{'showHidden':![],'depth':null}));if(this[_0xf40a('0x1c')][_0x5c1ef3['uniqueid']]){if(!_['isNil'](this[_0xf40a('0x1c')][_0x5c1ef3['uniqueid']][_0xf40a('0xbc')])){this[_0xf40a('0x1c')][_0x5c1ef3[_0xf40a('0x3b')]][_0xf40a('0xbd')]+=moment()[_0xf40a('0xbe')](0x0)[_0xf40a('0x64')](this['channels'][_0x5c1ef3[_0xf40a('0x3b')]]['mohstarttime'],_0xf40a('0x59'));logger[_0xf40a('0x56')](_0xf40a('0xbf'),_0x5c1ef3[_0xf40a('0x3b')],this['channels'][_0x5c1ef3[_0xf40a('0x3b')]][_0xf40a('0xbd')]);delete this[_0xf40a('0x1c')][_0x5c1ef3[_0xf40a('0x3b')]][_0xf40a('0xbc')];}}}}catch(_0x5ba760){logger[_0xf40a('0x2f')]('[%s][voiceCallReport][musiconholdstop]',_0x5c1ef3['uniqueid'],util[_0xf40a('0x31')](_0x5ba760,{'showHidden':![],'depth':null}));}};module[_0xf40a('0xc0')]=VoiceCallReport;
\ No newline at end of file
+var _0xa349=['[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','answertime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','getSettings','StopMixMonitor','catch','Action','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','BLIND','transfereruniqueid','[%s][voiceCallReport][musiconholdstart]\x20event:','isNil','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','inuse','busy','invalid','ringing','ringinuse','set','queue','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','localhost','redis','channels','agents','blindTransfers','syncNewExten','bind','syncNewChannel','newstate','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','pick','context','channel','exten','connectedlinenum','user:%s','split','name','user:agentconnect','[%s][voiceCallReport][newcallerid]','debug','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','starttime','format','toNumber','merge','keys','from-sip','destconnectedlinenum','error','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','disposition','includes','lastdata','cdr(','match','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','holdtime','diff','connectedlinename','destinationchannel','membername','UserId','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','accountcode','syncMixMonitorFilename','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','push','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','calleridpreview'];(function(_0x54e85e,_0x96aaa7){var _0x50c408=function(_0xd90cf7){while(--_0xd90cf7){_0x54e85e['push'](_0x54e85e['shift']());}};_0x50c408(++_0x96aaa7);}(_0xa349,0xfb));var _0x9a34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa349[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var _=require(_0x9a34('0x0'));var moment=require(_0x9a34('0x1'));var util=require(_0x9a34('0x2'));var path=require(_0x9a34('0x3'));var Redis=require(_0x9a34('0x4'));var config=require(_0x9a34('0x5'));var logger=require(_0x9a34('0x6'))(_0x9a34('0x7'));var ami=require(_0x9a34('0x8'));var Channel=require(_0x9a34('0x9'));var RpcSetting=require(_0x9a34('0xa'));var statusDesc=[_0x9a34('0xb'),_0x9a34('0xc'),_0x9a34('0xd'),_0x9a34('0xe'),_0x9a34('0xf'),'unavailable',_0x9a34('0x10'),_0x9a34('0x11'),'onhold'];var applications=[_0x9a34('0x12'),_0x9a34('0x13'),'agi',_0x9a34('0x14'),_0x9a34('0x15'),_0x9a34('0x16')];var dispositions=[_0x9a34('0x17'),_0x9a34('0x18'),_0x9a34('0x18'),'NO\x20ANSWER',_0x9a34('0x17'),_0x9a34('0x17'),_0x9a34('0x19'),'BUSY',_0x9a34('0x18'),'FAILED',_0x9a34('0x18')];var actions={};config['redis']=_['defaults'](config['redis'],{'host':_0x9a34('0x1a'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9a34('0x1b')]));function VoiceCallReport(_0x35d0ed){this[_0x9a34('0x1c')]=_0x35d0ed[_0x9a34('0x1c')];this[_0x9a34('0x1d')]=_0x35d0ed['agents'];this[_0x9a34('0x1e')]={};ami['on']('coreshowchannel',this[_0x9a34('0x1f')][_0x9a34('0x20')](this));ami['on']('newexten',this[_0x9a34('0x1f')][_0x9a34('0x20')](this));ami['on']('newchannel',this[_0x9a34('0x21')]['bind'](this));ami['on'](_0x9a34('0x22'),this['syncNewState']['bind'](this));ami['on'](_0x9a34('0x23'),this[_0x9a34('0x24')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x25'),this[_0x9a34('0x26')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x27'),this[_0x9a34('0x28')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x29'),this[_0x9a34('0x2a')][_0x9a34('0x20')](this));ami['on']('blindtransfer',this[_0x9a34('0x2b')]['bind'](this));ami['on'](_0x9a34('0x2c'),this[_0x9a34('0x2d')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x2e'),this[_0x9a34('0x2f')]['bind'](this));try{logger[_0x9a34('0x30')](_0x9a34('0x31'));ami[_0x9a34('0x32')]();}catch(_0x3bcd88){logger['error'](_0x9a34('0x33'),util['inspect'](_0x3bcd88,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x35')]=function(_0x47cf70){return _0x47cf70!==null&&!_[_0x9a34('0x36')](_0x47cf70);};VoiceCallReport['prototype'][_0x9a34('0x37')]=function(_0x3dd497,_0x487db1,_0x4eec17){io['to'](_0x3dd497)[_0x9a34('0x37')](_0x487db1,_0x4eec17);};VoiceCallReport[_0x9a34('0x34')]['syncNewCallerId']=function(_0x5847d4){try{if(this[_0x9a34('0x35')](_0x5847d4)){logger[_0x9a34('0x30')](_0x9a34('0x38'),_0x5847d4[_0x9a34('0x39')],_0x5847d4[_0x9a34('0x3a')],_0x5847d4[_0x9a34('0x3b')]);logger['debug'](_0x9a34('0x3c'),_0x5847d4['uniqueid'],util[_0x9a34('0x3d')](_0x5847d4,{'showHidden':![],'depth':null}));if(_0x5847d4[_0x9a34('0x39')]===_0x5847d4[_0x9a34('0x3e')]){if(!_['isUndefined'](this[_0x9a34('0x1c')][_0x5847d4[_0x9a34('0x39')]])){_['merge'](this[_0x9a34('0x1c')][_0x5847d4[_0x9a34('0x39')]],_[_0x9a34('0x3f')](_0x5847d4,_['keys'](this['channels'][_0x5847d4['uniqueid']])));}}if(_0x5847d4[_0x9a34('0x40')]==='from-sip'){if(this[_0x9a34('0x1d')][_0x5847d4[_0x9a34('0x41')]['split']('-')[0x0]]){if(_0x5847d4[_0x9a34('0x42')]=='xcally-motion-preview'){this[_0x9a34('0x1d')][_0x5847d4[_0x9a34('0x41')]['split']('-')[0x0]]['destconnectedlinenum']=_0x5847d4[_0x9a34('0x43')];this[_0x9a34('0x37')](util['format'](_0x9a34('0x44'),this['agents'][_0x5847d4[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x47'),{'destaccountcode':this[_0x9a34('0x1d')][_0x5847d4[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x5847d4[_0x9a34('0x43')]});}}}}}catch(_0x5f2d51){logger['error'](_0x9a34('0x48'),_0x5847d4[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x5f2d51,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x21')]=function(_0x37283b){try{if(this[_0x9a34('0x35')](_0x37283b)){logger[_0x9a34('0x49')](_0x9a34('0x4a'),_0x37283b[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x37283b,{'showHidden':![],'depth':null}));if(_0x37283b['uniqueid']===_0x37283b[_0x9a34('0x3e')]&&_0x37283b[_0x9a34('0x41')]!=_0x9a34('0x4b')){if(_['isUndefined'](this[_0x9a34('0x1c')][_0x37283b[_0x9a34('0x39')]])){logger[_0x9a34('0x30')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x37283b[_0x9a34('0x39')],_0x37283b[_0x9a34('0x40')],_0x37283b[_0x9a34('0x42')]);this[_0x9a34('0x1c')][_0x37283b[_0x9a34('0x39')]]=new Channel();this[_0x9a34('0x1c')][_0x37283b['uniqueid']][_0x9a34('0x4c')]=moment()[_0x9a34('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9a34('0x1c')][_0x37283b['uniqueid']]['disposition']=dispositions[_[_0x9a34('0x4e')](_0x37283b['channelstate'])];_[_0x9a34('0x4f')](this[_0x9a34('0x1c')][_0x37283b['uniqueid']],_[_0x9a34('0x3f')](_0x37283b,_[_0x9a34('0x50')](this[_0x9a34('0x1c')][_0x37283b['uniqueid']])));if(_0x37283b[_0x9a34('0x40')]===_0x9a34('0x51')){if(this[_0x9a34('0x1d')][_0x37283b['channel'][_0x9a34('0x45')]('-')[0x0]]){if(_[_0x9a34('0x36')](this[_0x9a34('0x1d')][_0x37283b['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x52')])){this[_0x9a34('0x1d')][_0x37283b[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['destconnectedlinenum']=_0x37283b[_0x9a34('0x42')];logger[_0x9a34('0x49')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x37283b['uniqueid'],util[_0x9a34('0x3d')]({'destaccountcode':this[_0x9a34('0x1d')][_0x37283b[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x37283b[_0x9a34('0x42')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x9a34('0x4d')](_0x9a34('0x44'),this['agents'][_0x37283b[_0x9a34('0x41')]['split']('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x47'),{'destaccountcode':this['agents'][_0x37283b[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x37283b[_0x9a34('0x42')]});}}}}}}}catch(_0x8b9d17){logger[_0x9a34('0x53')](_0x9a34('0x54'),_0x37283b['uniqueid'],util[_0x9a34('0x3d')](_0x8b9d17,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x1f')]=function(_0x4f8fc9){try{if(this[_0x9a34('0x35')](_0x4f8fc9)){logger['debug'](_0x9a34('0x55'),_0x4f8fc9[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x4f8fc9,{'showHidden':![],'depth':null}));if(_0x4f8fc9['uniqueid']===_0x4f8fc9[_0x9a34('0x3e')]&&_0x4f8fc9[_0x9a34('0x42')]!='h'&&_0x4f8fc9[_0x9a34('0x41')]!=_0x9a34('0x4b')){_0x4f8fc9['application']=_0x4f8fc9[_0x9a34('0x56')][_0x9a34('0x57')]();_0x4f8fc9[_0x9a34('0x58')]=_0x4f8fc9[_0x9a34('0x59')]&&_0x4f8fc9[_0x9a34('0x59')][_0x9a34('0x5a')]('CDR(routeAlias)')?_0x4f8fc9[_0x9a34('0x59')]:(_0x4f8fc9['appdata']||_0x4f8fc9[_0x9a34('0x58')])[_0x9a34('0x57')]();logger[_0x9a34('0x30')](_0x9a34('0x5b'),_0x4f8fc9[_0x9a34('0x39')],_0x4f8fc9[_0x9a34('0x56')],_0x4f8fc9[_0x9a34('0x58')]);if(_[_0x9a34('0x36')](this[_0x9a34('0x1c')][_0x4f8fc9['uniqueid']])){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]]=new Channel();this[_0x9a34('0x1c')][_0x4f8fc9['uniqueid']]['starttime']=_0x4f8fc9[_0x9a34('0x5c')]?moment()[_0x9a34('0x5d')](moment[_0x9a34('0x5c')](_0x4f8fc9['duration'])['seconds'](),_0x9a34('0x5e'))[_0x9a34('0x4d')](_0x9a34('0x5f')):moment()[_0x9a34('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0x9a34('0x60')]=_0x9a34('0x17');}_[_0x9a34('0x4f')](this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]],_['pick'](_0x4f8fc9,_[_0x9a34('0x50')](this['channels'][_0x4f8fc9[_0x9a34('0x39')]])));if(_[_0x9a34('0x61')](applications,_0x4f8fc9[_0x9a34('0x56')])){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]]['lastapplication']=_0x4f8fc9[_0x9a34('0x56')];this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0x9a34('0x62')]=_0x4f8fc9['applicationdata'];if(_0x4f8fc9[_0x9a34('0x56')]===_0x9a34('0x12')&&_[_0x9a34('0x5a')](_0x4f8fc9[_0x9a34('0x58')][_0x9a34('0x57')](),_0x9a34('0x63'))){var _0x27979b=_0x4f8fc9[_0x9a34('0x58')][_0x9a34('0x45')]('=');var _0xc4d728=_0x27979b[0x0][_0x9a34('0x57')]()[_0x9a34('0x64')](/cdr\((.*)\)/);if(_0xc4d728){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0xc4d728[0x1]]=_0x27979b[0x1];}}else if(_0x4f8fc9[_0x9a34('0x56')]===_0x9a34('0x13')){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0x9a34('0x13')]=_0x4f8fc9[_0x9a34('0x58')][_0x9a34('0x45')](',')[0x0];}}}}}catch(_0x44a246){logger[_0x9a34('0x53')](_0x9a34('0x65'),_0x4f8fc9[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x44a246,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x66')]=function(_0x4447aa){try{if(this['isNotNull'](_0x4447aa)){logger[_0x9a34('0x30')](_0x9a34('0x67'),_0x4447aa[_0x9a34('0x39')],_0x4447aa[_0x9a34('0x3e')],_0x4447aa['calleridname'],_0x4447aa[_0x9a34('0x3b')]);logger[_0x9a34('0x49')](_0x9a34('0x68'),_0x4447aa[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x4447aa,{'showHidden':![],'depth':null}));if(_0x4447aa['uniqueid']!==_0x4447aa[_0x9a34('0x3e')]){if(this[_0x9a34('0x1c')][_0x4447aa['linkedid']]){if(_0x4447aa[_0x9a34('0x69')]==='6'){if(!this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x6a')]){var _0x3e24bc=moment();this['channels'][_0x4447aa['linkedid']][_0x9a34('0x6a')]=!![];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]]['answertime']=_0x3e24bc['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x4c')]){this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x6b')]=_0x3e24bc[_0x9a34('0x6c')](this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x4c')],_0x9a34('0x5e'));}}this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x3e')]=_0x4447aa[_0x9a34('0x39')];if(_0x4447aa[_0x9a34('0x3b')]!=='xcally-motion-preview'){this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]]['connectedlinenum']=_0x4447aa[_0x9a34('0x3b')];}this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x6d')]=_0x4447aa[_0x9a34('0x3a')];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x6e')]=_0x4447aa[_0x9a34('0x41')];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x60')]=dispositions[_[_0x9a34('0x4e')](_0x4447aa['channelstate'])];if(this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]){this['channels'][_0x4447aa[_0x9a34('0x3e')]]['UserId']=this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]['id'];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x6f')]=this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]['name'];}}}}else{if(this[_0x9a34('0x1c')][_0x4447aa['uniqueid']]){if(_0x4447aa[_0x9a34('0x69')]==='6'){if(this['agents'][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]){this[_0x9a34('0x1c')][_0x4447aa['uniqueid']][_0x9a34('0x70')]=this[_0x9a34('0x1d')][_0x4447aa[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['id'];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x39')]]['membername']=this[_0x9a34('0x1d')][_0x4447aa[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')];}}}}if(_0x4447aa[_0x9a34('0x69')]==='6'&&_0x4447aa['context']===_0x9a34('0x51')){if(this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]){this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x52')]=_0x4447aa[_0x9a34('0x42')];var _0x4ab22a;if(this['channels'][_0x4447aa[_0x9a34('0x39')]])_0x4ab22a=this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x39')]]['routealias'];else if(this['channels'][_0x4447aa['linkedid']])_0x4ab22a=this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x71')];logger[_0x9a34('0x49')](_0x9a34('0x72'),_0x4447aa[_0x9a34('0x39')],util[_0x9a34('0x3d')]({'destaccountcode':this[_0x9a34('0x1d')][_0x4447aa[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4447aa[_0x9a34('0x42')],'routealias':_0x4ab22a},{'showHidden':![],'depth':null}));this[_0x9a34('0x37')](util[_0x9a34('0x4d')](_0x9a34('0x44'),this['agents'][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x47'),{'destaccountcode':this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x73')],'destconnectedlinenum':_0x4447aa[_0x9a34('0x42')],'routealias':_0x4ab22a});}}}}catch(_0x30d08b){logger[_0x9a34('0x53')]('[%s][voiceCallReport][newstate]',_0x4447aa[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x30d08b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x74')]=function(_0x40b890,_0x490942){try{if(this['channels'][_0x40b890]){logger[_0x9a34('0x30')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x40b890,_0x490942);this[_0x9a34('0x1c')][_0x40b890][_0x9a34('0x75')]=!![];if(_[_0x9a34('0x76')](_0x490942,_0x9a34('0x77'))){_0x490942=_0x490942['replace']('.wav49',_0x9a34('0x78'));}this[_0x9a34('0x1c')][_0x40b890][_0x9a34('0x79')]=_0x490942;var _0x25bef6=_[_0x9a34('0x7a')](this[_0x9a34('0x1c')][_0x40b890]['monitors'],{'filename':_0x490942});if(_['isNil'](_0x25bef6)){this['channels'][_0x40b890][_0x9a34('0x7b')][_0x9a34('0x7c')]({'filename':_0x490942,'createdAt':moment()[_0x9a34('0x4d')](_0x9a34('0x5f')),'mixmonitorid':'','status':'rec'});}}}catch(_0x7a71c9){logger['error']('[%s][voiceCallReport][mixMonitorFilename]',_0x40b890,util[_0x9a34('0x3d')](_0x7a71c9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x24')]=function(_0x38612e){try{if(this[_0x9a34('0x35')](_0x38612e)){logger[_0x9a34('0x49')](_0x9a34('0x7d'),_0x38612e[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x38612e,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x39')]]&&_0x38612e['channel']!=_0x9a34('0x4b')){if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')])){if(this['isNotNull'](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x7f')])){logger['info'](_0x9a34('0x80'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x74')](_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);}else if(this[_0x9a34('0x35')](_0x38612e['variable']['xmd-phone'])){logger[_0x9a34('0x30')](_0x9a34('0x82'),_0x38612e[_0x9a34('0x39')],_0x38612e['value']);this['channels'][_0x38612e['uniqueid']][_0x9a34('0x3b')]=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x83')])){logger[_0x9a34('0x30')](_0x9a34('0x84'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x39')]][_0x9a34('0x85')]=_0x38612e['value'];}else if(this['isNotNull'](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x86')])){logger[_0x9a34('0x30')](_0x9a34('0x87'),_0x38612e['uniqueid'],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e['uniqueid']]['type']=_0x38612e[_0x9a34('0x81')];}else if(this['isNotNull'](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x88')])){logger['info'](_0x9a34('0x89'),_0x38612e['uniqueid'],_0x38612e[_0x9a34('0x81')][_0x9a34('0x45')](',')[0x0]);this[_0x9a34('0x1c')][_0x38612e['uniqueid']][_0x9a34('0x13')]=_0x38612e[_0x9a34('0x81')]['split'](',')[0x0];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x8a')])){logger[_0x9a34('0x30')](_0x9a34('0x8b'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this['channels'][_0x38612e[_0x9a34('0x39')]][_0x9a34('0x8c')]=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x8d')])){logger[_0x9a34('0x30')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e['uniqueid']]['destination']=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')]['xmd-callerid-preview'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this['channels'][_0x38612e[_0x9a34('0x39')]][_0x9a34('0x8e')]=_0x38612e['value'];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')]['xmcs-queue'])){logger[_0x9a34('0x30')](_0x9a34('0x8f'),_0x38612e['uniqueid'],_0x38612e[_0x9a34('0x81')]);this['channels'][_0x38612e['uniqueid']][_0x9a34('0x13')]=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x90')])){logger[_0x9a34('0x30')](_0x9a34('0x91'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x39')]]['sipcalluniqueid']=_0x38612e['value'];}}}else if(this[_0x9a34('0x35')](_0x38612e['variable']['mixmonitor_filename'])){if(_0x38612e[_0x9a34('0x81')]){var _0x4c9675=path[_0x9a34('0x92')](_0x38612e['value'])[_0x9a34('0x46')];logger['info'](_0x9a34('0x80'),_0x4c9675,_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x74')](_0x4c9675,_0x38612e['value']);}}else if(this[_0x9a34('0x1c')][_0x38612e['linkedid']]){if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')])){if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x90')])){logger['info'](_0x9a34('0x91'),_0x38612e['linkedid'],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x3e')]][_0x9a34('0x93')]=_0x38612e[_0x9a34('0x81')];}}}}}catch(_0x16e5ce){logger[_0x9a34('0x53')](_0x9a34('0x94'),_0x38612e['uniqueid'],util[_0x9a34('0x3d')](_0x16e5ce,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')]['syncHangup']=function(_0x3a3955){try{if(this[_0x9a34('0x35')](_0x3a3955)){logger[_0x9a34('0x49')](_0x9a34('0x95'),_0x3a3955[_0x9a34('0x39')],util['inspect'](_0x3a3955,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]){logger['info'](_0x9a34('0x96'),_0x3a3955[_0x9a34('0x39')],_0x3a3955[_0x9a34('0x97')]);var _0x1c6e46=moment();this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]['endtime']=_0x1c6e46['format'](_0x9a34('0x5f'));this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x5c')]=_0x1c6e46[_0x9a34('0x6c')](this['channels'][_0x3a3955['uniqueid']][_0x9a34('0x4c')],'seconds');if(this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x6a')]){this[_0x9a34('0x1c')][_0x3a3955['uniqueid']][_0x9a34('0x98')]=_0x1c6e46[_0x9a34('0x6c')](this[_0x9a34('0x1c')][_0x3a3955['uniqueid']][_0x9a34('0x99')],_0x9a34('0x5e'));this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x6b')]=this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x5c')]-this['channels'][_0x3a3955['uniqueid']][_0x9a34('0x98')];}if(_0x3a3955[_0x9a34('0x40')]===_0x9a34('0x51')){if(this[_0x9a34('0x1d')][_0x3a3955['channel'][_0x9a34('0x45')]('-')[0x0]]){this[_0x9a34('0x1d')][_0x3a3955['channel']['split']('-')[0x0]]=_[_0x9a34('0x9a')](this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')]['split']('-')[0x0]],[_0x9a34('0x52')]);logger[_0x9a34('0x49')](_0x9a34('0x9b'),_0x3a3955[_0x9a34('0x39')],util[_0x9a34('0x3d')]({'id':this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['id'],'destaccountcode':this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')]['split']('-')[0x0]][_0x9a34('0x73')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x9a34('0x4d')](_0x9a34('0x44'),this[_0x9a34('0x1d')][_0x3a3955['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x9c'),{'id':this[_0x9a34('0x1d')][_0x3a3955['channel'][_0x9a34('0x45')]('-')[0x0]]['id'],'destaccountcode':this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x73')]});}}var _0x15b99c=this;Promise[_0x9a34('0x9d')]()[_0x9a34('0x9e')](function(){var _0x4875da=_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]];if(typeof _0x4875da['transferType']==='undefined')return;if(_['isEmpty'](_0x4875da[_0x9a34('0x7b')]))return;return RpcSetting[_0x9a34('0x9f')]()[_0x9a34('0x9e')](function(_0xfe3430){if(!_0xfe3430['stopRecordingOnTransfer'])return;return Promise[_0x9a34('0x9d')]()['then'](function(){return ami['Action']({'action':_0x9a34('0xa0'),'channel':_0x4875da[_0x9a34('0x41')]})[_0x9a34('0xa1')](function(){});})[_0x9a34('0x9e')](function(){return ami[_0x9a34('0xa2')]({'action':_0x9a34('0xa0'),'channel':_0x4875da[_0x9a34('0x6e')]})[_0x9a34('0xa1')](function(){})['finally'](function(){var _0x5826f5=_0x15b99c['agents'][_0x4875da[_0x9a34('0x6e')][_0x9a34('0x45')]('-')[0x0]];if(!_0x5826f5)return;io[_0x9a34('0x37')](_0x9a34('0xa3'),{'agentId':_0x5826f5['id'],'uniqueid':_0x4875da[_0x9a34('0x39')]});});});});})[_0x9a34('0x9e')](function(){if(_0x3a3955['event']===_0x9a34('0xa4')){_0x15b99c[_0x9a34('0x1e')][_0x3a3955['uniqueid']]=_0x15b99c[_0x9a34('0x1c')][_0x3a3955['uniqueid']];}else{if(_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]['type']===_0x9a34('0xa5')&&_0x15b99c[_0x9a34('0x1e')][_0x3a3955[_0x9a34('0x39')]]){_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x39')]=[_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]['linkedid'],_0x15b99c[_0x9a34('0x1c')][_0x3a3955['uniqueid']]['linkedid']=_0x15b99c['channels'][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x39')]][0x0];delete _0x15b99c[_0x9a34('0x1e')][_0x3a3955[_0x9a34('0x39')]];}}logger['debug'](_0x9a34('0xa6'),_0x3a3955[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceCallReport',_0x15b99c['channels'][_0x3a3955[_0x9a34('0x39')]]);delete _0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]];});}}}catch(_0x3f8952){logger[_0x9a34('0x53')](_0x9a34('0xa7'),_0x3a3955[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x3f8952,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x2a')]=function(_0x1f285f){try{if(this[_0x9a34('0x35')](_0x1f285f)){logger['info']('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x1f285f[_0x9a34('0x39')],_0x1f285f[_0x9a34('0xa8')],_0x1f285f['transfertargetcalleridnum']);logger['debug'](_0x9a34('0xa9'),_0x1f285f[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x1f285f,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xaa')]]){this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xaa')]]['transfercalleridnum']=_0x1f285f[_0x9a34('0xa8')];this['channels'][_0x1f285f[_0x9a34('0xaa')]][_0x9a34('0xab')]=_0x1f285f[_0x9a34('0xac')];if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]]){var _0x5100c6=this['channels'][_0x1f285f['secondtransfereruniqueid']];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]]=this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xaa')]];this['channels'][_0x1f285f['transfereeuniqueid']]=_0x5100c6;}}else if(this['channels'][_0x1f285f[_0x9a34('0xae')]]){this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]][_0x9a34('0xaf')]=_0x1f285f[_0x9a34('0xa8')];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]][_0x9a34('0xab')]=_0x1f285f[_0x9a34('0xac')];if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]]){var _0x5100c6=this['channels'][_0x1f285f['origtransfereruniqueid']];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]]=this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]]=_0x5100c6;}}if((this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]]||this['channels'][_0x1f285f[_0x9a34('0xb1')]])&&this['channels'][_0x1f285f[_0x9a34('0xad')]]){var _0x414986=_[_0x9a34('0xb2')]([this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]],this['channels'][_0x1f285f[_0x9a34('0xb1')]],this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]]],function(_0x5c3eb7){return _0x5c3eb7&&_0x5c3eb7['type']==='outbound'&&_0x5c3eb7[_0x9a34('0xb3')];});if(_0x414986){if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]])this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]][_0x9a34('0xb4')]=_0x9a34('0xb5');if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb1')]])this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb1')]][_0x9a34('0xb4')]=_0x9a34('0xb5');this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]][_0x9a34('0xb4')]=_0x9a34('0xb5');}}}}catch(_0x39c1af){logger['error'](_0x9a34('0xb6'),_0x1f285f['uniqueid'],util[_0x9a34('0x3d')](_0x39c1af,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x2b')]=function(_0x2644d6){try{if(this[_0x9a34('0x35')](_0x2644d6)){logger[_0x9a34('0x30')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x2644d6[_0x9a34('0x39')],_0x2644d6[_0x9a34('0xb7')],_0x2644d6[_0x9a34('0xb8')]);logger[_0x9a34('0x49')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x2644d6[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x2644d6,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xaa')]]){this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xaa')]][_0x9a34('0xaf')]=_0x2644d6[_0x9a34('0xb7')];this[_0x9a34('0x1c')][_0x2644d6['transfereeuniqueid']][_0x9a34('0xab')]=_0x2644d6[_0x9a34('0xb8')];this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xaa')]][_0x9a34('0xb4')]=_0x9a34('0xb9');this[_0x9a34('0x26')]({'event':_0x9a34('0xa4'),'uniqueid':_0x2644d6['transfereeuniqueid'],'context':_0x2644d6[_0x9a34('0x40')],'channel':_0x2644d6['transfererchannel']});}else{this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xba')]]['transferType']=_0x9a34('0xb9');}}}catch(_0x5b54b3){logger['error']('[%s][voiceCallReport][blindtransfer]',_0x2644d6['uniqueid'],util['inspect'](_0x5b54b3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x2d')]=function(_0x4241b4){try{if(this[_0x9a34('0x35')](_0x4241b4)){logger['debug'](_0x9a34('0xbb'),_0x4241b4[_0x9a34('0x39')],util['inspect'](_0x4241b4,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x4241b4['uniqueid']]){if(!_[_0x9a34('0xbc')](this['channels'][_0x4241b4[_0x9a34('0x39')]][_0x9a34('0x99')])){this[_0x9a34('0x1c')][_0x4241b4[_0x9a34('0x39')]][_0x9a34('0xbd')]=moment()[_0x9a34('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');logger['info'](_0x9a34('0xbe'),_0x4241b4[_0x9a34('0x39')],this['channels'][_0x4241b4[_0x9a34('0x39')]][_0x9a34('0xbd')]);}}}}catch(_0x5980eb){logger[_0x9a34('0x53')](_0x9a34('0xbf'),_0x4241b4[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x5980eb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')]['syncMusicOnHoldStop']=function(_0x1185dc){try{if(this['isNotNull'](_0x1185dc)){logger[_0x9a34('0x49')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x1185dc[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x1185dc,{'showHidden':![],'depth':null}));if(this['channels'][_0x1185dc[_0x9a34('0x39')]]){if(!_[_0x9a34('0xbc')](this[_0x9a34('0x1c')][_0x1185dc['uniqueid']][_0x9a34('0xbd')])){this['channels'][_0x1185dc[_0x9a34('0x39')]][_0x9a34('0xc0')]+=moment()[_0x9a34('0xc1')](0x0)[_0x9a34('0x6c')](this[_0x9a34('0x1c')][_0x1185dc['uniqueid']]['mohstarttime'],_0x9a34('0x5e'));logger[_0x9a34('0x30')](_0x9a34('0xc2'),_0x1185dc[_0x9a34('0x39')],this['channels'][_0x1185dc['uniqueid']][_0x9a34('0xc0')]);delete this[_0x9a34('0x1c')][_0x1185dc[_0x9a34('0x39')]][_0x9a34('0xbd')];}}}}catch(_0x5b937d){logger[_0x9a34('0x53')](_0x9a34('0xc3'),_0x1185dc['uniqueid'],util[_0x9a34('0x3d')](_0x5b937d,{'showHidden':![],'depth':null}));}};module[_0x9a34('0xc4')]=VoiceCallReport;
\ No newline at end of file
index f97fdc3..ca90181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4be0=['isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','merge','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','dialstatus','connectedlinenum','connectedlinename','connect','info','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','sipcallid','sipuri','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','duration','endtime','diff','starttime','lastevent','complete','total','answertime','answered','holdtime','billableseconds','seconds','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','toLowerCase','set','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','localhost','socket.io-emitter','channels','outbound','applications','variables','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','hangup','syncHangup','prototype'];(function(_0x14000b,_0x8e0c9c){var _0x1513a0=function(_0x59c06b){while(--_0x59c06b){_0x14000b['push'](_0x14000b['shift']());}};_0x1513a0(++_0x8e0c9c);}(_0x4be0,0x152));var _0x04be=function(_0x4943bf,_0x8509f9){_0x4943bf=_0x4943bf-0x0;var _0xdd22b0=_0x4be0[_0x4943bf];return _0xdd22b0;};'use strict';var _=require(_0x04be('0x0'));var moment=require(_0x04be('0x1'));var util=require('util');var Redis=require(_0x04be('0x2'));var config=require(_0x04be('0x3'));var logger=require(_0x04be('0x4'))(_0x04be('0x5'));var ami=require(_0x04be('0x6'));config['redis']=_[_0x04be('0x7')](config[_0x04be('0x8')],{'host':_0x04be('0x9'),'port':0x18eb});var io=require(_0x04be('0xa'))(new Redis(config[_0x04be('0x8')]));function VoiceDialReport(_0x46be91){this[_0x04be('0xb')]=_0x46be91['outboundChannels'];this[_0x04be('0xc')]=_0x46be91[_0x04be('0xc')];this[_0x04be('0xd')]={};this[_0x04be('0xe')]={};ami['on'](_0x04be('0xf'),this['syncDialBegin'][_0x04be('0x10')](this));ami['on'](_0x04be('0x11'),this[_0x04be('0x12')][_0x04be('0x10')](this));ami['on'](_0x04be('0x13'),this[_0x04be('0x14')][_0x04be('0x10')](this));ami['on'](_0x04be('0x15'),this['syncNewExten'][_0x04be('0x10')](this));ami['on'](_0x04be('0x16'),this[_0x04be('0x17')][_0x04be('0x10')](this));}VoiceDialReport[_0x04be('0x18')][_0x04be('0x19')]=function(_0x275700){return _0x275700!==null&&!_[_0x04be('0x1a')](_0x275700);};VoiceDialReport[_0x04be('0x18')]['emit']=function(_0xec8e4b,_0x28a043,_0x2859b3){io['to'](_0xec8e4b)[_0x04be('0x1b')](_0x28a043,_0x2859b3);};VoiceDialReport[_0x04be('0x18')][_0x04be('0x1c')]=function(_0x482da7){try{if(this[_0x04be('0x19')](_0x482da7)){logger[_0x04be('0x1d')](_0x04be('0x1e'),_0x482da7['uniqueid'],util['inspect'](_0x482da7,{'showHidden':![],'depth':null}));if(this[_0x04be('0xb')][_0x482da7['uniqueid']]){_['merge'](this['channels'][_0x482da7[_0x04be('0x1f')]],{'starttime':moment()[_0x04be('0x20')](_0x04be('0x21')),'lastevent':_0x04be('0x22'),'interface':_0x482da7[_0x04be('0x23')][_0x04be('0x24')](0x0,_0x482da7[_0x04be('0x23')][_0x04be('0x25')]('-')),'membername':_0x482da7[_0x04be('0x23')]['substring'](_0x482da7[_0x04be('0x23')][_0x04be('0x25')]('/')+0x1,_0x482da7['channel'][_0x04be('0x25')]('-'))},_['omit'](_0x482da7,['event',_0x04be('0x26')]));logger['info'](_0x04be('0x27'),_0x482da7['uniqueid'],this['channels'][_0x482da7['uniqueid']][_0x04be('0x28')],this[_0x04be('0xb')][_0x482da7[_0x04be('0x1f')]][_0x04be('0x29')]);logger[_0x04be('0x1d')](_0x04be('0x2a'),_0x482da7[_0x04be('0x1f')],util[_0x04be('0x2b')](this['channels'][_0x482da7[_0x04be('0x1f')]],{'showHidden':![],'depth':null}));if(this[_0x04be('0xd')][_0x482da7[_0x04be('0x1f')]])_[_0x04be('0x2c')](this['channels'][_0x482da7[_0x04be('0x1f')]],this['applications'][_0x482da7['uniqueid']]);this['emit'](_0x04be('0x2d'),_0x04be('0x2e'),this['channels'][_0x482da7['uniqueid']]);logger['debug'](_0x04be('0x2f'),_0x482da7[_0x04be('0x1f')],util[_0x04be('0x2b')](this[_0x04be('0xb')][_0x482da7[_0x04be('0x1f')]],{'showHidden':![],'depth':null}));ami[_0x04be('0x1b')](_0x04be('0x30'),this[_0x04be('0xb')][_0x482da7[_0x04be('0x1f')]]);}}}catch(_0x4b7cbd){logger['error']('[%s][voiceDialReport][dialbegin]',_0x482da7[_0x04be('0x1f')],util[_0x04be('0x2b')](_0x4b7cbd,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x04be('0x18')][_0x04be('0x12')]=function(_0x1530a2){try{if(this[_0x04be('0x19')](_0x1530a2)){logger['debug']('[%s][voiceDialReport][dialend]\x20event:',_0x1530a2['uniqueid'],util[_0x04be('0x2b')](_0x1530a2,{'showHidden':![],'depth':null}));if(this[_0x04be('0xb')][_0x1530a2[_0x04be('0x1f')]]){this[_0x04be('0xb')][_0x1530a2[_0x04be('0x1f')]][_0x04be('0x31')]=_0x1530a2['dialstatus'];if(_0x1530a2[_0x04be('0x31')]==='ANSWER'){this[_0x04be('0xb')][_0x1530a2[_0x04be('0x1f')]][_0x04be('0x32')]=_0x1530a2[_0x04be('0x32')];this[_0x04be('0xb')][_0x1530a2[_0x04be('0x1f')]][_0x04be('0x33')]=_0x1530a2['connectedlinename'];this[_0x04be('0xb')][_0x1530a2['uniqueid']]['answertime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x1530a2[_0x04be('0x1f')]]['lastevent']=_0x04be('0x34');logger[_0x04be('0x35')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x1530a2[_0x04be('0x1f')],_0x1530a2[_0x04be('0x23')][_0x04be('0x24')](_0x1530a2[_0x04be('0x23')][_0x04be('0x25')]('/')+0x1,_0x1530a2[_0x04be('0x23')][_0x04be('0x25')]('-')));logger[_0x04be('0x1d')](_0x04be('0x36'),_0x1530a2[_0x04be('0x1f')],util[_0x04be('0x2b')](this[_0x04be('0xb')][_0x1530a2['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x04be('0x37'),this[_0x04be('0xb')][_0x1530a2[_0x04be('0x1f')]]);}logger[_0x04be('0x1d')](_0x04be('0x38'),_0x1530a2[_0x04be('0x1f')],util[_0x04be('0x2b')](this[_0x04be('0xb')][_0x1530a2['uniqueid']],{'showHidden':![],'depth':null}));this[_0x04be('0x1b')](_0x04be('0x2d'),_0x04be('0x2e'),this[_0x04be('0xb')][_0x1530a2[_0x04be('0x1f')]]);}}}catch(_0x478df4){logger[_0x04be('0x39')](_0x04be('0x3a'),_0x1530a2[_0x04be('0x1f')],util[_0x04be('0x2b')](_0x478df4,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x04be('0x18')][_0x04be('0x14')]=function(_0xdfa6bf){try{if(this[_0x04be('0x19')](_0xdfa6bf)){logger[_0x04be('0x1d')]('[%s][voiceDialReport][varset]\x20event:',_0xdfa6bf['uniqueid'],util[_0x04be('0x2b')](_0xdfa6bf,{'showHidden':![],'depth':null}));this[_0x04be('0x3b')](_0xdfa6bf[_0x04be('0x1f')],_[_0x04be('0x3c')](_0xdfa6bf[_0x04be('0x3d')])[0x0],_0xdfa6bf[_0x04be('0x3e')]);if(this[_0x04be('0x19')](_0xdfa6bf[_0x04be('0x3d')])&&this[_0x04be('0x19')](_0xdfa6bf[_0x04be('0x3d')]['outboundrouteid'])){if(_[_0x04be('0x1a')](this[_0x04be('0xb')][_0xdfa6bf[_0x04be('0x1f')]])){this[_0x04be('0xb')][_0xdfa6bf[_0x04be('0x1f')]]={'routeId':_0xdfa6bf['value'],'variables':this['variables'][_0xdfa6bf['uniqueid']]};logger[_0x04be('0x35')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0xdfa6bf[_0x04be('0x1f')],_0xdfa6bf[_0x04be('0x3d')][_0x04be('0x3f')],_['keys'](_0xdfa6bf['variable'])[0x0],_0xdfa6bf[_0x04be('0x3e')]);logger[_0x04be('0x1d')](_0x04be('0x40'),_0xdfa6bf['uniqueid'],util['inspect'](this[_0x04be('0xb')][_0xdfa6bf[_0x04be('0x1f')]],{'showHidden':![],'depth':null}));this[_0x04be('0x1b')]('voice:outbound',_0x04be('0x2e'),this['channels'][_0xdfa6bf['uniqueid']]);}}}}catch(_0x40f62f){logger[_0x04be('0x39')]('[%s][voiceDialReport][varset]',_0xdfa6bf[_0x04be('0x1f')],util[_0x04be('0x2b')](_0x40f62f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x04be('0x18')][_0x04be('0x3b')]=function(_0x48fe26,_0x443e82,_0x4a7d63){var _0x4822a7=[_0x04be('0x41'),'rtpaudioqosbridged','rtpaudioqosjitter',_0x04be('0x42'),_0x04be('0x43'),_0x04be('0x44'),'rtpaudioqosrtt','rtpaudioqosrttbridged',_0x04be('0x45'),_0x04be('0x46'),'bridgepeer','bridgepvtcallid',_0x04be('0x47'),_0x04be('0x48'),_0x04be('0x49'),_0x04be('0x4a'),_0x04be('0x28'),_0x04be('0x4b'),'memberrealtime'];if(!_[_0x04be('0x4c')](_0x443e82)&&!_[_0x04be('0x4d')](_0x4822a7,_0x443e82)){if(_[_0x04be('0x1a')](this[_0x04be('0xe')][_0x48fe26])){this[_0x04be('0xe')][_0x48fe26]={};}this[_0x04be('0xe')][_0x48fe26][_0x443e82]=_0x4a7d63;}};VoiceDialReport[_0x04be('0x18')][_0x04be('0x17')]=function(_0x47a4fe){try{if(this[_0x04be('0x19')](_0x47a4fe)){logger[_0x04be('0x1d')](_0x04be('0x4e'),_0x47a4fe['uniqueid'],util[_0x04be('0x2b')](_0x47a4fe,{'showHidden':![],'depth':null}));if(this[_0x04be('0xb')][_0x47a4fe['uniqueid']]){logger['info'](_0x04be('0x4f'),_0x47a4fe[_0x04be('0x1f')],_0x47a4fe[_0x04be('0x50')]);this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]]['endtime']=moment()['format'](_0x04be('0x21'));this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x51')]=moment(this['channels'][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x52')])[_0x04be('0x53')](this['channels'][_0x47a4fe['uniqueid']][_0x04be('0x54')],'seconds');this['channels'][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x55')]=_0x04be('0x56');this[_0x04be('0xc')][_0x04be('0x57')]+=0x1;if(this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x58')]){this[_0x04be('0xc')][_0x04be('0x59')]+=0x1;this[_0x04be('0xb')][_0x47a4fe['uniqueid']][_0x04be('0x5a')]=moment(this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x58')])['diff'](this[_0x04be('0xb')][_0x47a4fe['uniqueid']][_0x04be('0x54')],'seconds');this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x5b')]=moment(this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x52')])[_0x04be('0x53')](this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x58')],_0x04be('0x5c'));this[_0x04be('0xc')][_0x04be('0x5d')]+=this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x5a')]||0x0;this['outbound'][_0x04be('0x5e')]+=this['channels'][_0x47a4fe[_0x04be('0x1f')]][_0x04be('0x5b')];}this[_0x04be('0xc')][_0x04be('0x5f')]+=this[_0x04be('0xb')][_0x47a4fe['uniqueid']][_0x04be('0x51')];logger[_0x04be('0x1d')](_0x04be('0x60'),_0x47a4fe[_0x04be('0x1f')],util[_0x04be('0x2b')](this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]],{'showHidden':![],'depth':null}));ami[_0x04be('0x1b')](_0x04be('0x61'),this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]]);logger['debug'](_0x04be('0x62'),_0x47a4fe['uniqueid'],util[_0x04be('0x2b')](this[_0x04be('0xb')][_0x47a4fe['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x04be('0x1b')](_0x04be('0x63'),this['channels'][_0x47a4fe[_0x04be('0x1f')]]);logger[_0x04be('0x1d')](_0x04be('0x64'),_0x47a4fe['uniqueid'],util['inspect'](this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0x04be('0x65'),this[_0x04be('0xc')]);logger[_0x04be('0x35')](_0x04be('0x66'),JSON[_0x04be('0x67')](this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]]));logger['debug'](_0x04be('0x68'),_0x47a4fe[_0x04be('0x1f')],util[_0x04be('0x2b')](this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x1f')]],{'showHidden':![],'depth':null}));this['emit'](_0x04be('0x2d'),_0x04be('0x69'),this[_0x04be('0xb')][_0x47a4fe['uniqueid']]);delete this['channels'][_0x47a4fe[_0x04be('0x1f')]];}else if(this[_0x04be('0xb')][_0x47a4fe['linkedid']]){this[_0x04be('0xb')][_0x47a4fe[_0x04be('0x6a')]][_0x04be('0x1f')]=this['channels'][_0x47a4fe[_0x04be('0x6a')]][_0x04be('0x6b')];}if(this['variables'][_0x47a4fe['uniqueid']]){delete this['variables'][_0x47a4fe[_0x04be('0x1f')]];}}}catch(_0x19ae55){logger[_0x04be('0x39')](_0x04be('0x6c'),_0x47a4fe[_0x04be('0x1f')],util['inspect'](_0x19ae55,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncNewExten']=function(_0xa4a546){try{if(this[_0x04be('0x19')](_0xa4a546)){logger[_0x04be('0x1d')](_0x04be('0x6d'),_0xa4a546[_0x04be('0x1f')],util[_0x04be('0x2b')](_0xa4a546,{'showHidden':![],'depth':null}));if(_0xa4a546['application'][_0x04be('0x6e')]()===_0x04be('0x6f')){_0xa4a546['applicationdata']=(_0xa4a546['appdata']||_0xa4a546[_0x04be('0x70')])[_0x04be('0x6e')]();if(_[_0x04be('0x71')](_0xa4a546[_0x04be('0x70')],_0x04be('0x72'))){if(_['isUndefined'](this[_0x04be('0xd')][_0xa4a546['uniqueid']]))this['applications'][_0xa4a546[_0x04be('0x1f')]]={};logger[_0x04be('0x35')](_0x04be('0x73'),_0xa4a546[_0x04be('0x1f')],_0xa4a546[_0x04be('0x74')],_0xa4a546[_0x04be('0x70')]);var _0xe6ba7=_0xa4a546[_0x04be('0x70')][_0x04be('0x75')]('=');var _0x517487=_0xe6ba7[0x0][_0x04be('0x76')](/cdr\((.*)\)/);if(_0x517487)this[_0x04be('0xd')][_0xa4a546['uniqueid']][_0x517487[0x1]]=_0xe6ba7[0x1];}}}}catch(_0x2324c6){logger[_0x04be('0x39')](_0x04be('0x77'),_0xa4a546[_0x04be('0x1f')],util[_0x04be('0x2b')](_0x2324c6,{'showHidden':![],'depth':null}));}};module[_0x04be('0x78')]=VoiceDialReport;
\ No newline at end of file
+var _0x689d=['moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','localhost','socket.io-emitter','outboundChannels','outbound','dialbegin','syncDialBegin','bind','dialend','syncVarSet','syncNewExten','hangup','prototype','isNotNull','emit','debug','uniqueid','inspect','channels','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','privilege','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','answertime','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','addVariable','keys','variable','value','outboundrouteid','variables','voice','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','membercalls','memberdynamic','memberinterface','memberlastcall','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','seconds','complete','total','answered','holdtime','diff','starttime','billableseconds','sumBillable','sumDuration','custom:voiceDialReport','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','toLowerCase','applicationdata','appdata','cdr(','isUndefined','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','lodash'];(function(_0x512e14,_0x28ca0c){var _0x3a2ca2=function(_0x31f501){while(--_0x31f501){_0x512e14['push'](_0x512e14['shift']());}};_0x3a2ca2(++_0x28ca0c);}(_0x689d,0x71));var _0xd689=function(_0x4e65ce,_0x121e88){_0x4e65ce=_0x4e65ce-0x0;var _0x16499a=_0x689d[_0x4e65ce];return _0x16499a;};'use strict';var _=require(_0xd689('0x0'));var moment=require(_0xd689('0x1'));var util=require(_0xd689('0x2'));var Redis=require(_0xd689('0x3'));var config=require(_0xd689('0x4'));var logger=require(_0xd689('0x5'))(_0xd689('0x6'));var ami=require(_0xd689('0x7'));config['redis']=_[_0xd689('0x8')](config[_0xd689('0x9')],{'host':_0xd689('0xa'),'port':0x18eb});var io=require(_0xd689('0xb'))(new Redis(config[_0xd689('0x9')]));function VoiceDialReport(_0x5f0448){this['channels']=_0x5f0448[_0xd689('0xc')];this['outbound']=_0x5f0448[_0xd689('0xd')];this['applications']={};this['variables']={};ami['on'](_0xd689('0xe'),this[_0xd689('0xf')][_0xd689('0x10')](this));ami['on'](_0xd689('0x11'),this['syncDialEnd'][_0xd689('0x10')](this));ami['on']('varset',this[_0xd689('0x12')]['bind'](this));ami['on']('newexten',this[_0xd689('0x13')]['bind'](this));ami['on'](_0xd689('0x14'),this['syncHangup']['bind'](this));}VoiceDialReport[_0xd689('0x15')][_0xd689('0x16')]=function(_0x2167ef){return _0x2167ef!==null&&!_['isUndefined'](_0x2167ef);};VoiceDialReport[_0xd689('0x15')]['emit']=function(_0x5210f3,_0x4dd41c,_0x61b778){io['to'](_0x5210f3)[_0xd689('0x17')](_0x4dd41c,_0x61b778);};VoiceDialReport[_0xd689('0x15')][_0xd689('0xf')]=function(_0x7c1a23){try{if(this[_0xd689('0x16')](_0x7c1a23)){logger[_0xd689('0x18')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x7c1a23[_0xd689('0x19')],util[_0xd689('0x1a')](_0x7c1a23,{'showHidden':![],'depth':null}));if(this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]]){_[_0xd689('0x1c')](this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]],{'starttime':moment()[_0xd689('0x1d')](_0xd689('0x1e')),'lastevent':_0xd689('0x1f'),'interface':_0x7c1a23[_0xd689('0x20')]['substring'](0x0,_0x7c1a23[_0xd689('0x20')]['lastIndexOf']('-')),'membername':_0x7c1a23['channel'][_0xd689('0x21')](_0x7c1a23['channel']['lastIndexOf']('/')+0x1,_0x7c1a23['channel'][_0xd689('0x22')]('-'))},_['omit'](_0x7c1a23,['event',_0xd689('0x23')]));logger['info']('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x7c1a23[_0xd689('0x19')],this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]][_0xd689('0x24')],this[_0xd689('0x1b')][_0x7c1a23['uniqueid']][_0xd689('0x25')]);logger[_0xd689('0x18')](_0xd689('0x26'),_0x7c1a23[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x7c1a23['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xd689('0x27')][_0x7c1a23[_0xd689('0x19')]])_[_0xd689('0x1c')](this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]],this[_0xd689('0x27')][_0x7c1a23[_0xd689('0x19')]]);this[_0xd689('0x17')](_0xd689('0x28'),_0xd689('0x29'),this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]]);logger[_0xd689('0x18')](_0xd689('0x2a'),_0x7c1a23[_0xd689('0x19')],util['inspect'](this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0xd689('0x1b')][_0x7c1a23['uniqueid']]);}}}catch(_0x5482af){logger[_0xd689('0x2b')](_0xd689('0x2c'),_0x7c1a23[_0xd689('0x19')],util['inspect'](_0x5482af,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x2d')]=function(_0x87211d){try{if(this[_0xd689('0x16')](_0x87211d)){logger[_0xd689('0x18')](_0xd689('0x2e'),_0x87211d[_0xd689('0x19')],util[_0xd689('0x1a')](_0x87211d,{'showHidden':![],'depth':null}));if(this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]]){this[_0xd689('0x1b')][_0x87211d['uniqueid']]['dialstatus']=_0x87211d['dialstatus'];if(_0x87211d[_0xd689('0x2f')]==='ANSWER'){this[_0xd689('0x1b')][_0x87211d['uniqueid']][_0xd689('0x30')]=_0x87211d[_0xd689('0x30')];this[_0xd689('0x1b')][_0x87211d['uniqueid']]['connectedlinename']=_0x87211d['connectedlinename'];this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]][_0xd689('0x31')]=moment()[_0xd689('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]][_0xd689('0x32')]=_0xd689('0x33');logger[_0xd689('0x34')](_0xd689('0x35'),_0x87211d[_0xd689('0x19')],_0x87211d['channel'][_0xd689('0x21')](_0x87211d[_0xd689('0x20')][_0xd689('0x22')]('/')+0x1,_0x87211d[_0xd689('0x20')][_0xd689('0x22')]('-')));logger[_0xd689('0x18')](_0xd689('0x36'),_0x87211d['uniqueid'],util['inspect'](this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]],{'showHidden':![],'depth':null}));ami[_0xd689('0x17')]('custom:dialconnect',this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]]);}logger[_0xd689('0x18')](_0xd689('0x37'),_0x87211d[_0xd689('0x19')],util[_0xd689('0x1a')](this['channels'][_0x87211d['uniqueid']],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0xd689('0x29'),this[_0xd689('0x1b')][_0x87211d['uniqueid']]);}}}catch(_0x291a59){logger[_0xd689('0x2b')](_0xd689('0x38'),_0x87211d['uniqueid'],util[_0xd689('0x1a')](_0x291a59,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x12')]=function(_0x5a5a86){try{if(this[_0xd689('0x16')](_0x5a5a86)){logger['debug']('[%s][voiceDialReport][varset]\x20event:',_0x5a5a86[_0xd689('0x19')],util[_0xd689('0x1a')](_0x5a5a86,{'showHidden':![],'depth':null}));this[_0xd689('0x39')](_0x5a5a86[_0xd689('0x19')],_[_0xd689('0x3a')](_0x5a5a86[_0xd689('0x3b')])[0x0],_0x5a5a86[_0xd689('0x3c')]);if(this['isNotNull'](_0x5a5a86[_0xd689('0x3b')])&&this['isNotNull'](_0x5a5a86[_0xd689('0x3b')][_0xd689('0x3d')])){if(_['isUndefined'](this[_0xd689('0x1b')][_0x5a5a86['uniqueid']])){this[_0xd689('0x1b')][_0x5a5a86['uniqueid']]={'routeId':_0x5a5a86['value'],'variables':this[_0xd689('0x3e')][_0x5a5a86['uniqueid']],'motionChannel':_0xd689('0x3f')};logger[_0xd689('0x34')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x5a5a86[_0xd689('0x19')],_0x5a5a86['variable'][_0xd689('0x3d')],_['keys'](_0x5a5a86[_0xd689('0x3b')])[0x0],_0x5a5a86[_0xd689('0x3c')]);logger[_0xd689('0x18')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x5a5a86[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x5a5a86['uniqueid']],{'showHidden':![],'depth':null}));this[_0xd689('0x17')]('voice:outbound',_0xd689('0x29'),this[_0xd689('0x1b')][_0x5a5a86['uniqueid']]);}}}}catch(_0x160b6f){logger[_0xd689('0x2b')](_0xd689('0x40'),_0x5a5a86[_0xd689('0x19')],util[_0xd689('0x1a')](_0x160b6f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')]['addVariable']=function(_0x34bee1,_0x38f48c,_0x45d6c7){var _0x1236b8=['rtpaudioqos',_0xd689('0x41'),'rtpaudioqosjitter',_0xd689('0x42'),_0xd689('0x43'),_0xd689('0x44'),_0xd689('0x45'),_0xd689('0x46'),_0xd689('0x47'),_0xd689('0x48'),'bridgepeer','bridgepvtcallid',_0xd689('0x49'),_0xd689('0x4a'),_0xd689('0x4b'),_0xd689('0x4c'),_0xd689('0x24'),'memberpenalty','memberrealtime'];if(!_[_0xd689('0x4d')](_0x38f48c)&&!_[_0xd689('0x4e')](_0x1236b8,_0x38f48c)){if(_['isUndefined'](this['variables'][_0x34bee1])){this['variables'][_0x34bee1]={};}this['variables'][_0x34bee1][_0x38f48c]=_0x45d6c7;}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x4f')]=function(_0x748542){try{if(this['isNotNull'](_0x748542)){logger['debug']('[%s][voiceDialReport][hangup]\x20event:',_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](_0x748542,{'showHidden':![],'depth':null}));if(this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]){logger[_0xd689('0x34')](_0xd689('0x50'),_0x748542[_0xd689('0x19')],_0x748542[_0xd689('0x51')]);this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x52')]=moment()[_0xd689('0x1d')](_0xd689('0x1e'));this['channels'][_0x748542[_0xd689('0x19')]][_0xd689('0x53')]=moment(this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x52')])['diff'](this[_0xd689('0x1b')][_0x748542['uniqueid']]['starttime'],_0xd689('0x54'));this[_0xd689('0x1b')][_0x748542['uniqueid']][_0xd689('0x32')]=_0xd689('0x55');this['outbound'][_0xd689('0x56')]+=0x1;if(this[_0xd689('0x1b')][_0x748542['uniqueid']]['answertime']){this[_0xd689('0xd')][_0xd689('0x57')]+=0x1;this['channels'][_0x748542[_0xd689('0x19')]][_0xd689('0x58')]=moment(this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x31')])[_0xd689('0x59')](this['channels'][_0x748542['uniqueid']][_0xd689('0x5a')],_0xd689('0x54'));this[_0xd689('0x1b')][_0x748542['uniqueid']][_0xd689('0x5b')]=moment(this[_0xd689('0x1b')][_0x748542['uniqueid']]['endtime'])[_0xd689('0x59')](this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x31')],_0xd689('0x54'));this[_0xd689('0xd')]['sumHoldTime']+=this['channels'][_0x748542[_0xd689('0x19')]]['holdtime']||0x0;this[_0xd689('0xd')][_0xd689('0x5c')]+=this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x5b')];}this[_0xd689('0xd')][_0xd689('0x5d')]+=this['channels'][_0x748542['uniqueid']][_0xd689('0x53')];logger[_0xd689('0x18')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x748542['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xd689('0x17')](_0xd689('0x5e'),this['channels'][_0x748542['uniqueid']]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](this['channels'][_0x748542[_0xd689('0x19')]],{'showHidden':![],'depth':null}));ami[_0xd689('0x17')](_0xd689('0x5f'),this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]);logger[_0xd689('0x18')](_0xd689('0x60'),_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]],{'showHidden':![],'depth':null}));this['emit'](_0xd689('0x28'),_0xd689('0x61'),this[_0xd689('0xd')]);logger[_0xd689('0x34')](_0xd689('0x62'),JSON[_0xd689('0x63')](this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]));logger[_0xd689('0x18')](_0xd689('0x64'),_0x748542[_0xd689('0x19')],util['inspect'](this['channels'][_0x748542[_0xd689('0x19')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0xd689('0x65'),this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]);delete this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]];}else if(this[_0xd689('0x1b')][_0x748542[_0xd689('0x66')]]){this[_0xd689('0x1b')][_0x748542['linkedid']][_0xd689('0x19')]=this[_0xd689('0x1b')][_0x748542[_0xd689('0x66')]][_0xd689('0x67')];}if(this[_0xd689('0x3e')][_0x748542[_0xd689('0x19')]]){delete this[_0xd689('0x3e')][_0x748542[_0xd689('0x19')]];}}}catch(_0x1a8346){logger['error'](_0xd689('0x68'),_0x748542[_0xd689('0x19')],util['inspect'](_0x1a8346,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x13')]=function(_0x59f4bb){try{if(this[_0xd689('0x16')](_0x59f4bb)){logger[_0xd689('0x18')]('[%s][voiceDialReport][newexten]\x20event:',_0x59f4bb['uniqueid'],util[_0xd689('0x1a')](_0x59f4bb,{'showHidden':![],'depth':null}));if(_0x59f4bb['application'][_0xd689('0x69')]()==='set'){_0x59f4bb[_0xd689('0x6a')]=(_0x59f4bb[_0xd689('0x6b')]||_0x59f4bb[_0xd689('0x6a')])['toLowerCase']();if(_['startsWith'](_0x59f4bb[_0xd689('0x6a')],_0xd689('0x6c'))){if(_[_0xd689('0x6d')](this[_0xd689('0x27')][_0x59f4bb['uniqueid']]))this[_0xd689('0x27')][_0x59f4bb['uniqueid']]={};logger[_0xd689('0x34')](_0xd689('0x6e'),_0x59f4bb[_0xd689('0x19')],_0x59f4bb['application'],_0x59f4bb['applicationdata']);var _0x3a4f6b=_0x59f4bb[_0xd689('0x6a')][_0xd689('0x6f')]('=');var _0x2b4722=_0x3a4f6b[0x0][_0xd689('0x70')](/cdr\((.*)\)/);if(_0x2b4722)this[_0xd689('0x27')][_0x59f4bb[_0xd689('0x19')]][_0x2b4722[0x1]]=_0x3a4f6b[0x1];}}}}catch(_0x51cc06){logger[_0xd689('0x2b')]('[%s][voiceDialReport][newexten]',_0x59f4bb[_0xd689('0x19')],util[_0xd689('0x1a')](_0x51cc06,{'showHidden':![],'depth':null}));}};module[_0xd689('0x71')]=VoiceDialReport;
\ No newline at end of file
index 90c2c5b..d311dc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9755=['channels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','syncQueueSummaryComplete','bind','queuecallerjoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','hangup','fullybooted','syncFullyBooted','syncNewExten','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','loopQueueShow','isEmpty','originated','hasOwnProperty','talking','pTalking','waiting','unlockRR','switch','sequence','Action','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emit','emitVoiceQueueChannelSave','debug','format','name','voice_queue_channel:save','emitVoiceQueueChannelRemove','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','voice:queue:%s','voice_queue_channel:remove','emitVoiceQueueSummary','inbound','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','Trunk','active','callerid','Interval','stringify',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','[voiceQueueReport][queues]','loopQueueSummary','then','[voiceQueueReport][queuesummary]','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','toNumber','callers','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','isUndefined','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','queuecallerexit','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','destexten','transferuniqueid','COMPLETEDBY','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','variable','value','queuestatus','timeout','EXITWITHKEY','[%s][voiceQueueReport][varset]','addVariable','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceQueueReport][hangup]','length','abandoned','diff','milliseconds','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohstarttime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceQueueReport][newexten]','exports','lodash','util','md5','ioredis','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','agents'];(function(_0x499c98,_0x3343ee){var _0x2a2ea2=function(_0x469768){while(--_0x469768){_0x499c98['push'](_0x499c98['shift']());}};_0x2a2ea2(++_0x3343ee);}(_0x9755,0x1c6));var _0x5975=function(_0x571d85,_0xda439c){_0x571d85=_0x571d85-0x0;var _0x3c2e07=_0x9755[_0x571d85];return _0x3c2e07;};'use strict';var _=require(_0x5975('0x0'));var moment=require('moment');var util=require(_0x5975('0x1'));var md5=require(_0x5975('0x2'));var Redis=require(_0x5975('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require(_0x5975('0x4'));var QueueReport=require(_0x5975('0x5'));config[_0x5975('0x6')]=_[_0x5975('0x7')](config[_0x5975('0x6')],{'host':_0x5975('0x8'),'port':0x18eb});var io=require(_0x5975('0x9'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x5975('0xa')][_0x5975('0xb')]=function(_0x55e597){this[_0x5975('0xc')]=this[_0x5975('0xc')]?this[_0x5975('0xc')]['finally'](_0x55e597):_0x55e597();};function VoiceQueueReport(_0xa869fe){this['sequence']=new Sequence();this['queueReports']={};this[_0x5975('0xd')]=_0xa869fe[_0x5975('0xd')];this[_0x5975('0xe')]=_0xa869fe['queueChannels'];this[_0x5975('0xf')]=_0xa869fe[_0x5975('0xf')];this[_0x5975('0x10')]=!![];this['campaigns']=_0xa869fe[_0x5975('0x11')];this[_0x5975('0x12')]={};ami['on'](_0x5975('0x13'),this[_0x5975('0x14')]['bind'](this));ami['on']('queuesummarycomplete',this[_0x5975('0x15')][_0x5975('0x16')](this));ami['on'](_0x5975('0x17'),this['syncQueueCallerJoin'][_0x5975('0x16')](this));ami['on']('queuecallerabandon',this[_0x5975('0x18')]['bind'](this));ami['on'](_0x5975('0x19'),this[_0x5975('0x1a')][_0x5975('0x16')](this));ami['on'](_0x5975('0x1b'),this[_0x5975('0x1c')][_0x5975('0x16')](this));ami['on'](_0x5975('0x1d'),this['syncAgentConnect'][_0x5975('0x16')](this));ami['on']('varset',this['syncVarSet']['bind'](this));ami['on'](_0x5975('0x1e'),this['syncHangup'][_0x5975('0x16')](this));ami['on'](_0x5975('0x1f'),this[_0x5975('0x20')][_0x5975('0x16')](this));ami['on']('newexten',this[_0x5975('0x21')][_0x5975('0x16')](this));ami['on'](_0x5975('0x22'),this['syncMusicOnHoldStart'][_0x5975('0x16')](this));ami['on'](_0x5975('0x23'),this[_0x5975('0x24')][_0x5975('0x16')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x5975('0x16')](this));ami['on'](_0x5975('0x25'),this['syncBlindTransfer'][_0x5975('0x16')](this));this['loopQueueSummary']();this[_0x5975('0x26')]();}function clearChannels(_0x51e316){if(!_['isEmpty'](_0x51e316)){for(var _0x28c52f in _0x51e316){if(_0x51e316['hasOwnProperty'](_0x28c52f)){delete _0x51e316[_0x28c52f];}}}}function clearCampaigns(_0x2290c9){if(!_[_0x5975('0x27')](_0x2290c9)){for(var _0x57efee in _0x2290c9){if(_0x2290c9['hasOwnProperty'](_0x57efee)){_0x2290c9[_0x57efee][_0x5975('0x28')]=0x0;}}}}function clearVoiceQueues(_0x1c1551){if(!_[_0x5975('0x27')](_0x1c1551)){for(var _0x154e1a in _0x1c1551){if(_0x1c1551[_0x5975('0x29')](_0x154e1a)){_0x1c1551[_0x154e1a][_0x5975('0x28')]=0x0;_0x1c1551[_0x154e1a][_0x5975('0x2a')]=0x0;_0x1c1551[_0x154e1a][_0x5975('0x2b')]=0x0;_0x1c1551[_0x154e1a][_0x5975('0x2c')]=0x0;_0x1c1551[_0x154e1a]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x37db84){if(!_[_0x5975('0x27')](_0x37db84)){for(var _0x2920b0 in _0x37db84){if(_0x37db84['hasOwnProperty'](_0x2920b0)){_0x37db84[_0x2920b0][_0x5975('0x2d')]=!![];}}}}VoiceQueueReport['prototype']['clearZombieChannels']=function(){var _0x2df91e=this;for(var _0x191376 in this[_0x5975('0xe')]){if(this[_0x5975('0xe')][_0x5975('0x29')](_0x191376)&&!this['channels'][_0x191376][_0x5975('0x2e')]){this[_0x5975('0x2f')]['enqueue'](function(){if(!_['isNil'](_0x2df91e['channels'][_0x191376])){return ami[_0x5975('0x30')]({'action':_0x5975('0x31'),'channel':_0x2df91e[_0x5975('0xe')][_0x191376][_0x5975('0x32')]})[_0x5975('0x33')](function(_0x28ab2e){if(_0x28ab2e[_0x5975('0x34')]===_0x5975('0x35')){setTimeout(function(){if(_0x2df91e[_0x5975('0xe')][_0x191376]){delete _0x2df91e[_0x5975('0xe')][_0x191376];logger[_0x5975('0x36')](_0x5975('0x37'),_0x191376,util[_0x5975('0x38')](_0x28ab2e,{'showHidden':![],'depth':null}));}if(_0x2df91e[_0x5975('0x39')][_0x191376]){delete _0x2df91e[_0x5975('0x39')][_0x191376];logger[_0x5975('0x36')](_0x5975('0x3a'),_0x191376,util[_0x5975('0x38')](_0x28ab2e,{'showHidden':![],'depth':null}));}if(_0x2df91e[_0x5975('0x12')][_0x191376]){delete _0x2df91e[_0x5975('0x12')][_0x191376];logger['error'](_0x5975('0x3b'),_0x191376,util[_0x5975('0x38')](_0x28ab2e,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x5975('0x20')]=function(){logger[_0x5975('0x36')](_0x5975('0x3c'));clearChannels(this['channels']);this[_0x5975('0x3d')](this[_0x5975('0x39')]);clearAgentBooked(this[_0x5975('0xd')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x5975('0x11')]);};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x3d')]=function(_0x53904d){var _0x5d8a2f=this;if(!_[_0x5975('0x27')](_0x53904d)){for(var _0x16a296 in _0x53904d){if(_0x53904d['hasOwnProperty'](_0x16a296)){_0x5d8a2f['emitVoiceQueueChannelRemove'](_0x53904d[_0x16a296],'clearqueuereport');delete _0x53904d[_0x16a296];}}}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x3e')]=function(_0x2ef020,_0x3234b3,_0x25e1eb){io['to'](_0x2ef020)['emit'](_0x3234b3,_0x25e1eb);};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x3f')]=function(_0x16c5c0,_0x4785b2){logger[_0x5975('0x40')]('[%s][voiceQueueReport]['+_0x4785b2+']\x20sending\x20voice_queue_channel:save\x20event:',_0x16c5c0['uniqueid'],util[_0x5975('0x38')](_0x16c5c0,{'showHidden':![],'depth':null}));this[_0x5975('0x3e')](util[_0x5975('0x41')]('voice:queue:%s',_0x16c5c0[_0x5975('0x42')]),_0x5975('0x43'),_0x16c5c0);io[_0x5975('0x3e')]('voice_queue_presence:save',_0x16c5c0);};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x44')]=function(_0x1251ab,_0x17b2c6){logger['debug'](_0x5975('0x45')+_0x17b2c6+_0x5975('0x46'),_0x1251ab[_0x5975('0x47')],util[_0x5975('0x38')](_0x1251ab,{'showHidden':![],'depth':null}));this[_0x5975('0x3e')](util[_0x5975('0x41')](_0x5975('0x48'),_0x1251ab['name']),_0x5975('0x49'),_0x1251ab);io[_0x5975('0x3e')]('voice_queue_presence:remove',_0x1251ab);};VoiceQueueReport['prototype'][_0x5975('0x4a')]=function(_0x2ae23e,_0x449529){if(_0x2ae23e['type']===_0x5975('0x4b')){var _0x4c55eb={'id':_0x2ae23e['id'],'name':_0x2ae23e[_0x5975('0x42')],'strategy':_0x2ae23e[_0x5975('0x4c')],'answered':_0x2ae23e[_0x5975('0x4d')],'available':_0x2ae23e[_0x5975('0x4e')],'loggedIn':_0x2ae23e[_0x5975('0x4f')],'pTalking':_0x2ae23e[_0x5975('0x2b')],'sumBillable':_0x2ae23e[_0x5975('0x50')],'sumDuration':_0x2ae23e[_0x5975('0x51')],'sumHoldTime':_0x2ae23e[_0x5975('0x52')]||0x0,'talking':_0x2ae23e[_0x5975('0x2a')],'total':_0x2ae23e[_0x5975('0x53')],'type':_0x2ae23e[_0x5975('0x54')],'unmanaged':_0x2ae23e[_0x5975('0x55')],'abandoned':_0x2ae23e['abandoned'],'waiting':_0x2ae23e[_0x5975('0x2c')]};if(_0x2ae23e[_0x5975('0x56')]){_0x4c55eb[_0x5975('0x56')]={'id':_0x2ae23e[_0x5975('0x56')]['id'],'name':_0x2ae23e[_0x5975('0x56')]['name'],'active':_0x2ae23e[_0x5975('0x56')][_0x5975('0x57')],'callerid':_0x2ae23e['Trunk'][_0x5975('0x58')]};}if(_0x2ae23e[_0x5975('0x59')]){_0x4c55eb[_0x5975('0x59')]={'id':_0x2ae23e[_0x5975('0x59')]['id'],'name':_0x2ae23e['Interval'][_0x5975('0x42')]};}var _0x26d74a=md5(JSON[_0x5975('0x5a')](_0x4c55eb));if(_0x2ae23e[_0x5975('0x2')]!==_0x26d74a){_0x2ae23e['md5']=_0x26d74a;logger[_0x5975('0x40')]('[voiceQueueReport]['+_0x449529+_0x5975('0x5b'),util['inspect'](_0x4c55eb,{'showHidden':![],'depth':null}));this[_0x5975('0x3e')](util[_0x5975('0x41')]('voice:queue:%s',_0x4c55eb[_0x5975('0x42')]),_0x5975('0x5c'),_0x4c55eb);}}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x5d')]=function(_0x434eb9){return _0x434eb9!==null&&!_['isUndefined'](_0x434eb9);};VoiceQueueReport[_0x5975('0xa')]['loopQueueShow']=function(){var _0x334402=this;setInterval(function(){_0x334402['clearZombieChannels']();ami[_0x5975('0x30')]({'action':'queues'})[_0x5975('0x33')](function(_0x32c5ea){logger['error'](_0x5975('0x5e'),util[_0x5975('0x38')](_0x32c5ea,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x5f')]=function(){var _0x23f1cd=this;setInterval(function(){if(_0x23f1cd['flagQueueSummary']){return ami[_0x5975('0x30')]({'action':_0x5975('0x13')})[_0x5975('0x60')](function(_0x111460){_0x23f1cd[_0x5975('0x10')]=![];})[_0x5975('0x33')](function(_0x26845c){logger[_0x5975('0x36')](_0x5975('0x61'),util['inspect'](_0x26845c,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x5975('0xa')]['syncQueueSummary']=function(_0x308853){try{if(this[_0x5975('0x5d')](_0x308853)&&this[_0x5975('0x5d')](_0x308853[_0x5975('0x62')])){logger[_0x5975('0x40')]('[voiceQueueReport][queuesummary]\x20event:',util[_0x5975('0x38')](_0x308853,{'showHidden':![],'depth':null}));if(this[_0x5975('0xf')][_0x308853[_0x5975('0x62')]]){logger[_0x5975('0x63')](_0x5975('0x64'),_0x308853[_0x5975('0x62')]);var _0x1ab5d1=_[_0x5975('0x65')](this[_0x5975('0xe')],_0x5975('0x62'))[_0x308853['queue']]||0x0;var _0x5e9d13=_0x1ab5d1-_0x308853['callers'];if(this[_0x5975('0xf')][_0x308853['queue']][_0x5975('0x2c')]!==_[_0x5975('0x66')](_0x308853[_0x5975('0x67')])||this[_0x5975('0xf')][_0x308853[_0x5975('0x62')]][_0x5975('0x4f')]!==_[_0x5975('0x66')](_0x308853[_0x5975('0x68')])||this[_0x5975('0xf')][_0x308853['queue']][_0x5975('0x4e')]!==_[_0x5975('0x66')](_0x308853['available'])||this['voiceQueues'][_0x308853[_0x5975('0x62')]][_0x5975('0x2a')]!==_0x5e9d13){this[_0x5975('0xf')][_0x308853['queue']][_0x5975('0x2c')]=_[_0x5975('0x66')](_0x308853[_0x5975('0x67')]);this[_0x5975('0xf')][_0x308853[_0x5975('0x62')]]['loggedIn']=_[_0x5975('0x66')](_0x308853[_0x5975('0x68')]);this[_0x5975('0xf')][_0x308853[_0x5975('0x62')]][_0x5975('0x4e')]=_[_0x5975('0x66')](_0x308853[_0x5975('0x4e')]);this[_0x5975('0xf')][_0x308853['queue']][_0x5975('0x2a')]=_0x5e9d13>0x0?_0x5e9d13:0x0;this[_0x5975('0xf')][_0x308853[_0x5975('0x62')]][_0x5975('0x2a')]=this[_0x5975('0xf')][_0x308853[_0x5975('0x62')]]['talking']>_[_0x5975('0x66')](_0x308853[_0x5975('0x68')])?_[_0x5975('0x66')](_0x308853[_0x5975('0x68')]):this[_0x5975('0xf')][_0x308853[_0x5975('0x62')]][_0x5975('0x2a')];this['emitVoiceQueueSummary'](this['voiceQueues'][_0x308853['queue']],_0x5975('0x13'));}logger['debug'](_0x5975('0x69'),util[_0x5975('0x38')](this['voiceQueues'][_0x308853[_0x5975('0x62')]],{'showHidden':![],'depth':null}));ami[_0x5975('0x3e')](_0x5975('0x6a'),this[_0x5975('0xf')][_0x308853['queue']]);}}}catch(_0x1ee075){logger[_0x5975('0x36')](_0x5975('0x61'),util[_0x5975('0x38')](_0x1ee075,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x15')]=function(_0xf7c865){logger[_0x5975('0x40')](_0x5975('0x6b'),util[_0x5975('0x38')](_0xf7c865,{'showHidden':![],'depth':null}));this[_0x5975('0x10')]=!![];};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x6c')]=function(_0x3a53bd){try{if(this[_0x5975('0x5d')](_0x3a53bd)){logger[_0x5975('0x40')](_0x5975('0x6d'),_0x3a53bd['uniqueid'],util['inspect'](_0x3a53bd,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x5975('0x39')][_0x3a53bd['uniqueid']]))this['queueReports'][_0x3a53bd[_0x5975('0x47')]]=[];if(_[_0x5975('0x6e')](this[_0x5975('0xe')][_0x3a53bd[_0x5975('0x47')]]))this['channels'][_0x3a53bd[_0x5975('0x47')]]={};var _0x35c5eb=new QueueReport();_0x35c5eb[_0x5975('0x42')]=_0x3a53bd[_0x5975('0x62')];_0x35c5eb[_0x5975('0x54')]=this[_0x5975('0xf')][_0x35c5eb[_0x5975('0x42')]]&&this[_0x5975('0xf')][_0x35c5eb[_0x5975('0x42')]][_0x5975('0x54')]?this['voiceQueues'][_0x35c5eb[_0x5975('0x42')]][_0x5975('0x54')]||_0x5975('0x4b'):_0x5975('0x4b');_0x35c5eb[_0x5975('0x62')]=_0x3a53bd[_0x5975('0x62')];_0x35c5eb[_0x5975('0x6f')]=moment()[_0x5975('0x41')](_0x5975('0x70'));_0x35c5eb[_0x5975('0x71')]=_0x3a53bd[_0x5975('0x71')];_0x35c5eb[_0x5975('0x72')]=_0x3a53bd['count'];_0x35c5eb[_0x5975('0x47')]=_0x3a53bd[_0x5975('0x47')];_0x35c5eb[_0x5975('0x73')]=this['channels'][_0x3a53bd['uniqueid']][_0x5975('0x73')];logger['info'](_0x5975('0x74'),_0x35c5eb[_0x5975('0x42')],_0x35c5eb['type']);_[_0x5975('0x75')](_0x35c5eb,_[_0x5975('0x76')](_0x3a53bd,_[_0x5975('0x77')](_0x35c5eb)));this['queueReports'][_0x3a53bd['uniqueid']][_0x5975('0x78')](_0x35c5eb);this[_0x5975('0xe')][_0x3a53bd[_0x5975('0x47')]]=_0x35c5eb;this[_0x5975('0x3f')](_0x35c5eb,_0x5975('0x17'));}}catch(_0xe57ff4){logger[_0x5975('0x36')](_0x5975('0x6d'),_0x3a53bd[_0x5975('0x47')],util[_0x5975('0x38')](_0xe57ff4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x18')]=function(_0x5ac28b){try{if(this[_0x5975('0x5d')](_0x5ac28b)){logger[_0x5975('0x40')](_0x5975('0x79'),_0x5ac28b[_0x5975('0x47')],util[_0x5975('0x38')](_0x5ac28b,{'showHidden':![],'depth':null}));if(this[_0x5975('0x39')][_0x5ac28b[_0x5975('0x47')]]){var _0x138ff6=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x5ac28b[_0x5975('0x47')]]);_0x138ff6[_0x5975('0x7b')]=![];_0x138ff6[_0x5975('0x7c')]=null;_0x138ff6[_0x5975('0x7d')]=_0x5ac28b['holdtime'];_0x138ff6[_0x5975('0x7e')]=_0x5ac28b['originalposition'];_0x138ff6[_0x5975('0x7f')]=!![];_0x138ff6[_0x5975('0x80')]=moment()[_0x5975('0x41')](_0x5975('0x70'));_0x138ff6[_0x5975('0x81')]=_0x5975('0x82');_0x138ff6[_0x5975('0x83')]=null;logger['info'](_0x5975('0x84'),_0x138ff6[_0x5975('0x42')],_0x138ff6[_0x5975('0x54')]);this[_0x5975('0xe')][_0x5ac28b[_0x5975('0x47')]]=_0x138ff6;this[_0x5975('0x44')](_0x138ff6,_0x5975('0x7f'));}}}catch(_0x16c69c){logger[_0x5975('0x36')]('[%s][voiceQueueReport][queuecallerabandon]',_0x5ac28b['uniqueid'],util['inspect'](_0x16c69c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x1a')]=function(_0x137052){try{if(this[_0x5975('0x5d')](_0x137052)){logger[_0x5975('0x40')](_0x5975('0x85'),_0x137052['uniqueid'],util[_0x5975('0x38')](_0x137052,{'showHidden':![],'depth':null}));if(this[_0x5975('0x39')][_0x137052['uniqueid']]){var _0x343fdd=_[_0x5975('0x7a')](this['queueReports'][_0x137052[_0x5975('0x47')]]);_0x343fdd[_0x5975('0x86')]=moment()['format'](_0x5975('0x70'));_0x343fdd[_0x5975('0x87')]=_0x137052[_0x5975('0x87')];_0x343fdd['connectedlinename']=_0x137052[_0x5975('0x88')];logger['info'](_0x5975('0x89'),_0x343fdd[_0x5975('0x42')],_0x343fdd[_0x5975('0x54')],_0x137052[_0x5975('0x87')],_0x137052['connectedlinename']);this['channels'][_0x137052['uniqueid']]=_0x343fdd;this[_0x5975('0x3f')](_0x343fdd,'queuecallerleave');}}}catch(_0x12b6f0){logger[_0x5975('0x36')](_0x5975('0x85'),_0x137052[_0x5975('0x47')],util[_0x5975('0x38')](_0x12b6f0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0x8a')]=function(_0x5d4fdc){try{if(this[_0x5975('0x5d')](_0x5d4fdc)){logger[_0x5975('0x40')](_0x5975('0x8b'),_0x5d4fdc[_0x5975('0x47')],util[_0x5975('0x38')](_0x5d4fdc,{'showHidden':![],'depth':null}));if(this[_0x5975('0x39')][_0x5d4fdc[_0x5975('0x47')]]){var _0x30f077=_['last'](this[_0x5975('0x39')][_0x5d4fdc[_0x5975('0x47')]]);_0x30f077[_0x5975('0x7b')]=!![];_0x30f077[_0x5975('0x81')]=_0x5975('0x8c');logger['info'](_0x5975('0x8d'),_0x30f077[_0x5975('0x42')],_0x30f077[_0x5975('0x54')]);}}}catch(_0xdd7704){logger[_0x5975('0x36')]('[%s][voiceQueueReport][agentconnect]',_0x5d4fdc[_0x5975('0x47')],util['inspect'](_0xdd7704,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')]['syncAgentComplete']=function(_0x46ab15){try{if(this[_0x5975('0x5d')](_0x46ab15)){logger[_0x5975('0x40')](_0x5975('0x8e'),_0x46ab15[_0x5975('0x47')],util['inspect'](_0x46ab15,{'showHidden':![],'depth':null}));if(this[_0x5975('0x39')][_0x46ab15[_0x5975('0x47')]]){var _0x48b555=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x46ab15[_0x5975('0x47')]]);_0x48b555[_0x5975('0x7f')]=![];_0x48b555[_0x5975('0x80')]=null;_0x48b555[_0x5975('0x8f')]=!![];_0x48b555[_0x5975('0x83')]=_0x46ab15[_0x5975('0x90')];_0x48b555['holdtime']=_0x46ab15[_0x5975('0x7d')];_0x48b555[_0x5975('0x7b')]=!![];_0x48b555['queuecallerexit']=![];_0x48b555[_0x5975('0x91')]=null;if(!_0x48b555[_0x5975('0x92')]){if(_0x46ab15['reason']==_0x5975('0x92')){_0x48b555[_0x5975('0x81')]=_0x5975('0x93');logger[_0x5975('0x63')](_0x5975('0x94'),_0x48b555['name'],_0x48b555['type']);}else{if(_[_0x5975('0x95')](_0x46ab15[_0x5975('0x32')][_0x5975('0x96')](),_0x5975('0x97'))){if(this[_0x5975('0x39')][_0x46ab15[_0x5975('0x98')]]){var _0xb8b5ce=_['last'](this[_0x5975('0x39')][_0x46ab15['linkedid']]);_0xb8b5ce[_0x5975('0x7b')]=![];_0xb8b5ce[_0x5975('0x99')]=!![];_0xb8b5ce['queuecallerexitAt']=moment(_0x48b555[_0x5975('0x6f')])[_0x5975('0x9a')](_0x46ab15[_0x5975('0x7d')],_0x5975('0x9b'))[_0x5975('0x41')](_0x5975('0x70'));_0xb8b5ce['queuecallerexitreason']=_0x5975('0x9c');_0xb8b5ce[_0x5975('0x92')]=!![];_0xb8b5ce[_0x5975('0x9d')]=_0x5975('0x9e');_0xb8b5ce['transferexten']=_0x46ab15[_0x5975('0x9f')];_0xb8b5ce[_0x5975('0xa0')]=_0x46ab15[_0x5975('0x47')];logger[_0x5975('0x63')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0xb8b5ce[_0x5975('0x42')],_0xb8b5ce[_0x5975('0x54')]);var _0x5eab9c=this[_0x5975('0x39')][_0x46ab15[_0x5975('0x98')]];this[_0x5975('0x39')][_0x46ab15['linkedid']]=this[_0x5975('0x39')][_0x46ab15['uniqueid']];this[_0x5975('0x39')][_0x46ab15['uniqueid']]=_0x5eab9c;}}else{_0x48b555['queuecallerexitreason']=_0x5975('0xa1')+_0x46ab15[_0x5975('0xa2')]['toUpperCase']();logger['info'](_0x5975('0xa3'),_0x48b555[_0x5975('0x42')],_0x48b555['type'],_0x48b555[_0x5975('0x81')]);}}}this[_0x5975('0xe')][_0x46ab15[_0x5975('0x47')]]=_0x48b555;this[_0x5975('0x44')](_0x48b555,'agentcomplete');}}}catch(_0x2ae1ae){logger[_0x5975('0x36')](_0x5975('0x8e'),_0x46ab15['uniqueid'],util[_0x5975('0x38')](_0x2ae1ae,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5975('0xa4')]=function(_0x54130b){try{if(this[_0x5975('0x5d')](_0x54130b)){logger[_0x5975('0x40')]('[%s][voiceQueueReport][varset]',_0x54130b['uniqueid'],util['inspect'](_0x54130b,{'showHidden':![],'depth':null}));this['addVariable'](_0x54130b[_0x5975('0x47')],_[_0x5975('0x77')](_0x54130b[_0x5975('0xa5')])[0x0],_0x54130b[_0x5975('0xa6')]);if(this['queueReports'][_0x54130b[_0x5975('0x47')]]){var _0x5c2a01=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x54130b['uniqueid']]);if(_0x5c2a01){if(this[_0x5975('0x5d')](_0x54130b[_0x5975('0xa5')])&&this[_0x5975('0x5d')](_0x54130b[_0x5975('0xa5')][_0x5975('0xa7')])){switch(_0x54130b['value']){case'CONTINUE':_0x5c2a01['queuecallerexit']=![];_0x5c2a01['queuecallerexitAt']=null;break;case'TIMEOUT':_0x5c2a01['lastevent']=_0x5975('0xa8');_0x5c2a01['queuecallerexit']=!![];_0x5c2a01[_0x5975('0x91')]=moment()[_0x5975('0x41')]('YYYY-MM-DD\x20HH:mm:ss');_0x5c2a01['queuecallerleaveAt']=moment()[_0x5975('0x41')](_0x5975('0x70'));logger[_0x5975('0x40')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x54130b[_0x5975('0x47')],util[_0x5975('0x38')](_0x5c2a01,{'showHidden':![],'depth':null}));ami[_0x5975('0x3e')]('custom:timeout',_0x5c2a01);break;default:_0x5c2a01['queuecallerexit']=!![];_0x5c2a01[_0x5975('0x91')]=moment()[_0x5975('0x41')](_0x5975('0x70'));_0x5c2a01['queuecallerleaveAt']=moment()[_0x5975('0x41')](_0x5975('0x70'));}_0x5c2a01[_0x5975('0x7f')]=![];_0x5c2a01[_0x5975('0x80')]=null;_0x5c2a01[_0x5975('0x81')]=_0x54130b[_0x5975('0xa6')];this[_0x5975('0xe')][_0x54130b[_0x5975('0x47')]]=_0x5c2a01;this['emitVoiceQueueChannelRemove'](_0x5c2a01,'varset');}else if(this[_0x5975('0x5d')](_0x54130b['variable'])&&this[_0x5975('0x5d')](_0x54130b['variable']['queueposition'])){if(!_0x5c2a01[_0x5975('0x7f')]){_0x5c2a01[_0x5975('0x99')]=!![];_0x5c2a01[_0x5975('0x91')]=moment()['format'](_0x5975('0x70'));_0x5c2a01[_0x5975('0x81')]=_0x5975('0xa9');_0x5c2a01[_0x5975('0x86')]=moment()[_0x5975('0x41')](_0x5975('0x70'));this[_0x5975('0xe')][_0x54130b[_0x5975('0x47')]]=_0x5c2a01;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x54130b[_0x5975('0x47')],_0x5c2a01['name'],_0x5c2a01[_0x5975('0x54')],_[_0x5975('0x77')](_0x54130b[_0x5975('0xa5')])[0x0],_0x54130b[_0x5975('0xa6')]);_0x5c2a01[_0x5975('0x12')]=this['variables'][_0x54130b[_0x5975('0x47')]];}}}}catch(_0x4cbeb4){logger['error'](_0x5975('0xaa'),_0x54130b[_0x5975('0x47')],util[_0x5975('0x38')](_0x4cbeb4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0xab')]=function(_0x412023,_0x37362e,_0x5e7583){var _0x5fc9c9=[_0x5975('0xac'),'rtpaudioqosbridged',_0x5975('0xad'),_0x5975('0xae'),_0x5975('0xaf'),_0x5975('0xb0'),_0x5975('0xb1'),_0x5975('0xb2'),'sipcallid',_0x5975('0xb3'),_0x5975('0xb4'),'bridgepvtcallid',_0x5975('0xb5'),_0x5975('0xb6'),_0x5975('0xb7'),_0x5975('0xb8'),_0x5975('0x90'),_0x5975('0xb9'),_0x5975('0xba')];if(!_[_0x5975('0xbb')](_0x37362e)&&!_[_0x5975('0xbc')](_0x5fc9c9,_0x37362e)){if(_[_0x5975('0x6e')](this[_0x5975('0x12')][_0x412023])){this[_0x5975('0x12')][_0x412023]={};}this[_0x5975('0x12')][_0x412023][_0x37362e]=_0x5e7583;}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0xbd')]=function(_0x1bb4cb){try{if(this[_0x5975('0x5d')](_0x1bb4cb)){logger[_0x5975('0x40')](_0x5975('0xbe'),_0x1bb4cb[_0x5975('0x47')],util[_0x5975('0x38')](_0x1bb4cb,{'showHidden':![],'depth':null}));if(this[_0x5975('0x39')][_0x1bb4cb[_0x5975('0x47')]]){for(var _0x4d62e0=0x0,_0x591594={};_0x4d62e0<this[_0x5975('0x39')][_0x1bb4cb[_0x5975('0x47')]][_0x5975('0xbf')];_0x4d62e0+=0x1){_0x591594=this['queueReports'][_0x1bb4cb[_0x5975('0x47')]][_0x4d62e0];if(this[_0x5975('0xf')][_0x591594['queue']]){if(_0x591594[_0x5975('0x99')]&&_0x591594['transfer']!=!![]){this[_0x5975('0xf')][_0x591594['queue']][_0x5975('0x55')]+=0x1;}if(_0x591594[_0x5975('0x7f')]){this['voiceQueues'][_0x591594[_0x5975('0x62')]][_0x5975('0xc0')]+=0x1;}this['voiceQueues'][_0x591594['queue']][_0x5975('0x52')]+=moment(_0x591594[_0x5975('0x86')])[_0x5975('0xc1')](_0x591594[_0x5975('0x6f')],_0x5975('0x9b'))||0x0;if(_0x4d62e0===this['queueReports'][_0x1bb4cb[_0x5975('0x47')]][_0x5975('0xbf')]-0x1){this[_0x5975('0xf')][_0x591594['queue']][_0x5975('0x51')]+=moment()[_0x5975('0xc2')](0x0)[_0x5975('0xc1')](_0x591594['queuecallerjoinAt'],_0x5975('0x9b'));this[_0x5975('0xf')][_0x591594[_0x5975('0x62')]][_0x5975('0x53')]+=0x1;if(_0x591594['queuecallercomplete']){this[_0x5975('0xf')][_0x591594[_0x5975('0x62')]][_0x5975('0x4d')]+=0x1;this['voiceQueues'][_0x591594[_0x5975('0x62')]][_0x5975('0x50')]+=moment()[_0x5975('0xc2')](0x0)['diff'](_0x591594[_0x5975('0x86')],_0x5975('0x9b'));_0x591594[_0x5975('0x7c')]=moment()['format'](_0x5975('0x70'));_0x591594['queuecallerexit']=![];_0x591594[_0x5975('0x91')]=null;}if(_0x591594[_0x5975('0x99')]&&_0x591594[_0x5975('0x92')]!=!![]){_0x591594[_0x5975('0xc3')]=_0x5975('0x55');logger[_0x5975('0x40')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x1bb4cb[_0x5975('0x47')],util[_0x5975('0x38')](_0x591594,{'showHidden':![],'depth':null}));ami[_0x5975('0x3e')]('custom:queuecallerunmanaged',_0x591594);}if(_0x591594['queuecallerabandon']){_0x591594[_0x5975('0xc3')]=_0x5975('0xc0');logger[_0x5975('0x40')](_0x5975('0xc4'),_0x1bb4cb[_0x5975('0x47')],util['inspect'](_0x591594,{'showHidden':![],'depth':null}));ami[_0x5975('0x3e')](_0x5975('0xc5'),_0x591594);}}else{this[_0x5975('0xf')][_0x591594[_0x5975('0x62')]][_0x5975('0x51')]+=this[_0x5975('0xf')][_0x591594[_0x5975('0x62')]][_0x5975('0x52')];}logger[_0x5975('0x63')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x1bb4cb[_0x5975('0x47')],_0x591594['name'],_0x591594[_0x5975('0x54')],_0x1bb4cb[_0x5975('0xc6')]);this[_0x5975('0xe')][_0x1bb4cb[_0x5975('0x47')]]=_0x591594;this[_0x5975('0x44')](_0x591594,'hangup');this[_0x5975('0x4a')](this[_0x5975('0xf')][_0x591594[_0x5975('0x62')]],_0x5975('0x1e'));}}logger['debug'](_0x5975('0xc7'),_0x1bb4cb['uniqueid'],util[_0x5975('0x38')](this['queueReports'][_0x1bb4cb[_0x5975('0x47')]],{'showHidden':![],'depth':null}));ami[_0x5975('0x3e')](_0x5975('0xc8'),this[_0x5975('0x39')][_0x1bb4cb[_0x5975('0x47')]]);delete this[_0x5975('0x39')][_0x1bb4cb[_0x5975('0x47')]];delete this[_0x5975('0xe')][_0x1bb4cb[_0x5975('0x47')]];}if(this[_0x5975('0x12')][_0x1bb4cb['uniqueid']]){delete this[_0x5975('0x12')][_0x1bb4cb[_0x5975('0x47')]];}}}catch(_0x41a9e7){logger['error'](_0x5975('0xbe'),_0x1bb4cb['uniqueid'],util['inspect'](_0x41a9e7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')]['syncAttendedTransfer']=function(_0x42059b){try{if(this[_0x5975('0x5d')](_0x42059b)){logger[_0x5975('0x40')](_0x5975('0xc9'),_0x42059b[_0x5975('0x47')],util[_0x5975('0x38')](_0x42059b,{'showHidden':![],'depth':null}));var _0x50ad1d;if(this['queueReports'][_0x42059b[_0x5975('0xca')]]){_0x50ad1d=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x42059b[_0x5975('0xca')]]);_0x50ad1d[_0x5975('0xcb')]=_0x42059b[_0x5975('0xcc')];_0x50ad1d[_0x5975('0xa0')]=_0x42059b[_0x5975('0xcd')];_0x50ad1d[_0x5975('0x81')]=_0x5975('0xce');_0x50ad1d[_0x5975('0x92')]=!![];_0x50ad1d[_0x5975('0x9d')]=_0x5975('0xcf');if(this[_0x5975('0x39')][_0x42059b[_0x5975('0xcd')]]){var _0x3e459f=this[_0x5975('0x39')][_0x42059b['secondtransfereruniqueid']];this[_0x5975('0x39')][_0x42059b['secondtransfereruniqueid']]=this[_0x5975('0x39')][_0x42059b['transfereeuniqueid']];this['queueReports'][_0x42059b[_0x5975('0xca')]]=_0x3e459f;var _0x288764=_[_0x5975('0x7a')](this['queueReports'][_0x42059b[_0x5975('0xca')]]);_0x288764[_0x5975('0x2e')]=!![];}logger[_0x5975('0x63')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x42059b['uniqueid'],_0x50ad1d['name'],_0x50ad1d[_0x5975('0x54')],_0x50ad1d[_0x5975('0xcb')],_0x50ad1d[_0x5975('0xa0')]);}else if(this['queueReports'][_0x42059b[_0x5975('0xd0')]]){_0x50ad1d=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x42059b[_0x5975('0xd0')]]);_0x50ad1d[_0x5975('0xcb')]=_0x42059b['origtransfererexten'];_0x50ad1d[_0x5975('0xa0')]=_0x42059b[_0x5975('0xd1')];_0x50ad1d[_0x5975('0x81')]=_0x5975('0xce');_0x50ad1d[_0x5975('0x92')]=!![];_0x50ad1d['transfertype']='ATTENDED';if(this[_0x5975('0x39')][_0x42059b[_0x5975('0xd1')]]){var _0x3e459f=this[_0x5975('0x39')][_0x42059b[_0x5975('0xd1')]];this[_0x5975('0x39')][_0x42059b[_0x5975('0xd1')]]=this['queueReports'][_0x42059b[_0x5975('0xd0')]];this[_0x5975('0x39')][_0x42059b[_0x5975('0xd0')]]=_0x3e459f;var _0x288764=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x42059b[_0x5975('0xd0')]]);_0x288764[_0x5975('0x2e')]=!![];}logger[_0x5975('0x63')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x42059b[_0x5975('0x47')],_0x50ad1d[_0x5975('0x42')],_0x50ad1d[_0x5975('0x54')],_0x50ad1d[_0x5975('0xcb')],_0x50ad1d[_0x5975('0xa0')]);}}}catch(_0xab215){logger[_0x5975('0x36')](_0x5975('0xc9'),_0x42059b[_0x5975('0x47')],util[_0x5975('0x38')](_0xab215,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')][_0x5975('0xd2')]=function(_0x42c897){try{if(this['isNotNull'](_0x42c897)){logger['debug'](_0x5975('0xd3'),_0x42c897[_0x5975('0x47')],util['inspect'](_0x42c897,{'showHidden':![],'depth':null}));if(this[_0x5975('0x39')][_0x42c897[_0x5975('0xca')]]){var _0x5db97e=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x42c897[_0x5975('0xca')]]);_0x5db97e[_0x5975('0x81')]=_0x5975('0xd4');_0x5db97e['transfer']=!![];_0x5db97e[_0x5975('0x9d')]=_0x5975('0xd5');_0x5db97e[_0x5975('0xcb')]=_0x42c897[_0x5975('0xd6')];_0x5db97e[_0x5975('0xa0')]=_0x42c897[_0x5975('0xca')];logger[_0x5975('0x63')](_0x5975('0xd7'),_0x42c897[_0x5975('0x47')],_0x5db97e[_0x5975('0x42')],_0x5db97e[_0x5975('0x54')],_0x5db97e[_0x5975('0xcb')],_0x5db97e[_0x5975('0xa0')]);this['syncHangup']({'event':_0x5975('0xd8'),'uniqueid':_0x42c897[_0x5975('0xca')],'context':_0x42c897[_0x5975('0xd9')],'channel':_0x42c897[_0x5975('0xda')]});}}}catch(_0x2abc9f){logger[_0x5975('0x36')](_0x5975('0xd3'),_0x42c897['uniqueid'],util[_0x5975('0x38')](_0x2abc9f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')]['syncMusicOnHoldStart']=function(_0x545286){try{if(this['isNotNull'](_0x545286)){logger['debug'](_0x5975('0xdb'),_0x545286[_0x5975('0x47')],util['inspect'](_0x545286,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x545286[_0x5975('0x47')]]){var _0x6ef08c=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x545286['uniqueid']]);if(!_[_0x5975('0xbb')](_0x6ef08c['queuecallerleaveAt'])){_0x6ef08c['mohstarttime']=moment()['format'](_0x5975('0x70'));logger['info']('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x545286[_0x5975('0x47')],_0x6ef08c['mohstarttime']);}}}}catch(_0x325a43){logger[_0x5975('0x36')](_0x5975('0xdb'),_0x545286[_0x5975('0x47')],util[_0x5975('0x38')](_0x325a43,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5975('0x24')]=function(_0x4d5036){try{if(this[_0x5975('0x5d')](_0x4d5036)){logger['debug'](_0x5975('0xdc'),_0x4d5036[_0x5975('0x47')],util[_0x5975('0x38')](_0x4d5036,{'showHidden':![],'depth':null}));if(this[_0x5975('0x39')][_0x4d5036[_0x5975('0x47')]]){var _0x12a398=_[_0x5975('0x7a')](this[_0x5975('0x39')][_0x4d5036[_0x5975('0x47')]]);if(!_['isNil'](_0x12a398['mohstarttime'])){_0x12a398['mohtime']+=moment()[_0x5975('0xc2')](0x0)[_0x5975('0xc1')](_0x12a398[_0x5975('0xdd')],_0x5975('0x9b'));logger[_0x5975('0x63')](_0x5975('0xde'),_0x4d5036['uniqueid'],_0x12a398[_0x5975('0xdf')]);delete _0x12a398[_0x5975('0xdd')];}}}}catch(_0x36fcef){logger[_0x5975('0x36')](_0x5975('0xdc'),_0x4d5036[_0x5975('0x47')],util[_0x5975('0x38')](_0x36fcef,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5975('0xa')]['syncNewExten']=function(_0x14ef5d){try{if(this['isNotNull'](_0x14ef5d)){logger[_0x5975('0x40')](_0x5975('0xe0'),_0x14ef5d[_0x5975('0x47')],util[_0x5975('0x38')](_0x14ef5d,{'showHidden':![],'depth':null}));if(_0x14ef5d[_0x5975('0xe1')]['toLowerCase']()===_0x5975('0xe2')){_0x14ef5d[_0x5975('0xe3')]=_0x14ef5d[_0x5975('0xe4')]&&_0x14ef5d[_0x5975('0xe4')]['startsWith'](_0x5975('0xe5'))?_0x14ef5d[_0x5975('0xe4')]:(_0x14ef5d[_0x5975('0xe4')]||_0x14ef5d[_0x5975('0xe3')])[_0x5975('0x96')]();if(_[_0x5975('0x95')](_0x14ef5d['applicationdata'][_0x5975('0x96')](),'cdr(')){logger['info'](_0x5975('0xe6'),_0x14ef5d['uniqueid'],_0x14ef5d[_0x5975('0xe1')],_0x14ef5d[_0x5975('0xe3')]);if(_[_0x5975('0x6e')](this[_0x5975('0xe')][_0x14ef5d['uniqueid']]))this[_0x5975('0xe')][_0x14ef5d[_0x5975('0x47')]]={};var _0x25b87c=_0x14ef5d[_0x5975('0xe3')][_0x5975('0xe7')]('=');var _0x592ba0=_0x25b87c[0x0][_0x5975('0x96')]()['match'](/cdr\((.*)\)/);if(_0x592ba0)this[_0x5975('0xe')][_0x14ef5d[_0x5975('0x47')]][_0x592ba0[0x1]]=_0x25b87c[0x1];}}}}catch(_0x50fe9e){logger[_0x5975('0x36')](_0x5975('0xe8'),_0x14ef5d[_0x5975('0x47')],util[_0x5975('0x38')](_0x50fe9e,{'showHidden':![],'depth':null}));}};module[_0x5975('0xe9')]=VoiceQueueReport;
\ No newline at end of file
+var _0x9a62=['hangup','syncHangup','fullybooted','syncNewExten','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','waiting','queueStatusComplete','unlockRR','prototype','clearZombieChannels','channels','switch','isNil','Action','channel','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkQueueReport]','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','abandoned','Trunk','active','callerid','Interval','stringify','md5','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','isUndefined','[voiceQueueReport][queues]','flagQueueSummary','queuesummary','[voiceQueueReport][queuesummary]','info','queue','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','syncQueueCallerJoin','isNotNull','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','membername','holdtime','queuecallerexit','queuecallerexitAt','transfer','startsWith','toLowerCase','local/','linkedid','add','seconds','FORWARDTRANSFER','FORWARD','transferexten','destexten','transferuniqueid','COMPLETEDBY','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','syncVarSet','variable','queuestatus','value','CONTINUE','TIMEOUT','lastevent','timeout','custom:timeout','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','addVariable','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','includes','[%s][voiceQueueReport][hangup]','length','diff','milliseconds','queuecallerjoinAt','total','queuecallercompleteAt','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','transfertype','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','context','transfererchannel','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','moment','util','ioredis','../../../config/environment','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','queueReports','agents','queueChannels','voiceQueues','campaigns','variables','syncQueueSummary','bind','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset'];(function(_0x1b2667,_0x279eb1){var _0x179ae8=function(_0x119262){while(--_0x119262){_0x1b2667['push'](_0x1b2667['shift']());}};_0x179ae8(++_0x279eb1);}(_0x9a62,0x1bc));var _0x29a6=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9a62[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var moment=require(_0x29a6('0x0'));var util=require(_0x29a6('0x1'));var md5=require('md5');var Redis=require(_0x29a6('0x2'));var config=require(_0x29a6('0x3'));var logger=require('../../../config/logger')('ami');var ami=require(_0x29a6('0x4'));var QueueReport=require(_0x29a6('0x5'));config[_0x29a6('0x6')]=_[_0x29a6('0x7')](config[_0x29a6('0x6')],{'host':_0x29a6('0x8'),'port':0x18eb});var io=require(_0x29a6('0x9'))(new Redis(config['redis']));var Sequence=function(){};Sequence['prototype'][_0x29a6('0xa')]=function(_0x2e1272){this['tail']=this['tail']?this[_0x29a6('0xb')][_0x29a6('0xc')](_0x2e1272):_0x2e1272();};function VoiceQueueReport(_0x1de426){this[_0x29a6('0xd')]=new Sequence();this[_0x29a6('0xe')]={};this[_0x29a6('0xf')]=_0x1de426[_0x29a6('0xf')];this['channels']=_0x1de426[_0x29a6('0x10')];this[_0x29a6('0x11')]=_0x1de426['voiceQueues'];this['flagQueueSummary']=!![];this['campaigns']=_0x1de426[_0x29a6('0x12')];this[_0x29a6('0x13')]={};ami['on']('queuesummary',this[_0x29a6('0x14')][_0x29a6('0x15')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x16'),this['syncQueueCallerJoin'][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x17'),this[_0x29a6('0x18')]['bind'](this));ami['on'](_0x29a6('0x19'),this[_0x29a6('0x1a')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x1b'),this[_0x29a6('0x1c')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x1d'),this[_0x29a6('0x1e')]['bind'](this));ami['on'](_0x29a6('0x1f'),this['syncVarSet'][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x20'),this[_0x29a6('0x21')]['bind'](this));ami['on'](_0x29a6('0x22'),this['syncFullyBooted']['bind'](this));ami['on']('newexten',this[_0x29a6('0x23')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x24'),this[_0x29a6('0x25')][_0x29a6('0x15')](this));ami['on']('musiconholdstop',this[_0x29a6('0x26')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x27'),this[_0x29a6('0x28')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x29'),this[_0x29a6('0x2a')]['bind'](this));this[_0x29a6('0x2b')]();this[_0x29a6('0x2c')]();}function clearChannels(_0x329325){if(!_[_0x29a6('0x2d')](_0x329325)){for(var _0x1798dd in _0x329325){if(_0x329325[_0x29a6('0x2e')](_0x1798dd)){delete _0x329325[_0x1798dd];}}}}function clearCampaigns(_0x364e72){if(!_['isEmpty'](_0x364e72)){for(var _0x483d22 in _0x364e72){if(_0x364e72[_0x29a6('0x2e')](_0x483d22)){_0x364e72[_0x483d22][_0x29a6('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x291dff){if(!_[_0x29a6('0x2d')](_0x291dff)){for(var _0x237f3e in _0x291dff){if(_0x291dff[_0x29a6('0x2e')](_0x237f3e)){_0x291dff[_0x237f3e]['originated']=0x0;_0x291dff[_0x237f3e]['talking']=0x0;_0x291dff[_0x237f3e][_0x29a6('0x30')]=0x0;_0x291dff[_0x237f3e][_0x29a6('0x31')]=0x0;_0x291dff[_0x237f3e][_0x29a6('0x32')]=!![];}}}}function clearAgentBooked(_0x454df0){if(!_[_0x29a6('0x2d')](_0x454df0)){for(var _0x4fa41e in _0x454df0){if(_0x454df0['hasOwnProperty'](_0x4fa41e)){_0x454df0[_0x4fa41e][_0x29a6('0x33')]=!![];}}}}VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x35')]=function(){var _0x4250f4=this;for(var _0x3b6394 in this[_0x29a6('0x36')]){if(this['channels']['hasOwnProperty'](_0x3b6394)&&!this[_0x29a6('0x36')][_0x3b6394][_0x29a6('0x37')]){this[_0x29a6('0xd')][_0x29a6('0xa')](function(){if(!_[_0x29a6('0x38')](_0x4250f4[_0x29a6('0x36')][_0x3b6394])){return ami[_0x29a6('0x39')]({'action':'status','channel':_0x4250f4[_0x29a6('0x36')][_0x3b6394][_0x29a6('0x3a')]})[_0x29a6('0x3b')](function(_0x2e14da){if(_0x2e14da[_0x29a6('0x3c')]===_0x29a6('0x3d')){setTimeout(function(){if(_0x4250f4[_0x29a6('0x36')][_0x3b6394]){delete _0x4250f4[_0x29a6('0x36')][_0x3b6394];logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][checkChannel]',_0x3b6394,util[_0x29a6('0x3f')](_0x2e14da,{'showHidden':![],'depth':null}));}if(_0x4250f4[_0x29a6('0xe')][_0x3b6394]){delete _0x4250f4[_0x29a6('0xe')][_0x3b6394];logger[_0x29a6('0x3e')](_0x29a6('0x40'),_0x3b6394,util[_0x29a6('0x3f')](_0x2e14da,{'showHidden':![],'depth':null}));}if(_0x4250f4[_0x29a6('0x13')][_0x3b6394]){delete _0x4250f4['variables'][_0x3b6394];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x3b6394,util[_0x29a6('0x3f')](_0x2e14da,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x41')]=function(){logger[_0x29a6('0x3e')](_0x29a6('0x42'));clearChannels(this[_0x29a6('0x36')]);this['clearQueueReport'](this[_0x29a6('0xe')]);clearAgentBooked(this[_0x29a6('0xf')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x29a6('0x12')]);};VoiceQueueReport[_0x29a6('0x34')]['clearQueueReport']=function(_0x479ee4){var _0x39e1c0=this;if(!_[_0x29a6('0x2d')](_0x479ee4)){for(var _0x517267 in _0x479ee4){if(_0x479ee4[_0x29a6('0x2e')](_0x517267)){_0x39e1c0[_0x29a6('0x43')](_0x479ee4[_0x517267],_0x29a6('0x44'));delete _0x479ee4[_0x517267];}}}};VoiceQueueReport['prototype']['emit']=function(_0x177718,_0x59503b,_0x302750){io['to'](_0x177718)[_0x29a6('0x45')](_0x59503b,_0x302750);};VoiceQueueReport['prototype'][_0x29a6('0x46')]=function(_0x417bb5,_0x1e0a26){logger[_0x29a6('0x47')](_0x29a6('0x48')+_0x1e0a26+_0x29a6('0x49'),_0x417bb5[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x417bb5,{'showHidden':![],'depth':null}));this[_0x29a6('0x45')](util[_0x29a6('0x4b')](_0x29a6('0x4c'),_0x417bb5[_0x29a6('0x4d')]),_0x29a6('0x4e'),_0x417bb5);io['emit'](_0x29a6('0x4f'),_0x417bb5);};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x43')]=function(_0x5514be,_0x3b71ad){logger['debug'](_0x29a6('0x48')+_0x3b71ad+_0x29a6('0x50'),_0x5514be[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x5514be,{'showHidden':![],'depth':null}));this['emit'](util[_0x29a6('0x4b')](_0x29a6('0x4c'),_0x5514be[_0x29a6('0x4d')]),'voice_queue_channel:remove',_0x5514be);io[_0x29a6('0x45')](_0x29a6('0x51'),_0x5514be);};VoiceQueueReport['prototype'][_0x29a6('0x52')]=function(_0x90eae3,_0xc4cac2){if(_0x90eae3[_0x29a6('0x53')]===_0x29a6('0x54')){var _0x4a95d={'id':_0x90eae3['id'],'name':_0x90eae3[_0x29a6('0x4d')],'strategy':_0x90eae3[_0x29a6('0x55')],'answered':_0x90eae3[_0x29a6('0x56')],'available':_0x90eae3[_0x29a6('0x57')],'loggedIn':_0x90eae3[_0x29a6('0x58')],'pTalking':_0x90eae3[_0x29a6('0x30')],'sumBillable':_0x90eae3[_0x29a6('0x59')],'sumDuration':_0x90eae3[_0x29a6('0x5a')],'sumHoldTime':_0x90eae3[_0x29a6('0x5b')]||0x0,'talking':_0x90eae3[_0x29a6('0x5c')],'total':_0x90eae3['total'],'type':_0x90eae3['type'],'unmanaged':_0x90eae3['unmanaged'],'abandoned':_0x90eae3[_0x29a6('0x5d')],'waiting':_0x90eae3['waiting']};if(_0x90eae3[_0x29a6('0x5e')]){_0x4a95d['Trunk']={'id':_0x90eae3['Trunk']['id'],'name':_0x90eae3[_0x29a6('0x5e')]['name'],'active':_0x90eae3[_0x29a6('0x5e')][_0x29a6('0x5f')],'callerid':_0x90eae3['Trunk'][_0x29a6('0x60')]};}if(_0x90eae3[_0x29a6('0x61')]){_0x4a95d[_0x29a6('0x61')]={'id':_0x90eae3[_0x29a6('0x61')]['id'],'name':_0x90eae3[_0x29a6('0x61')][_0x29a6('0x4d')]};}var _0x10f357=md5(JSON[_0x29a6('0x62')](_0x4a95d));if(_0x90eae3[_0x29a6('0x63')]!==_0x10f357){_0x90eae3[_0x29a6('0x63')]=_0x10f357;logger['debug'](_0x29a6('0x64')+_0xc4cac2+_0x29a6('0x65'),util[_0x29a6('0x3f')](_0x4a95d,{'showHidden':![],'depth':null}));this[_0x29a6('0x45')](util['format'](_0x29a6('0x4c'),_0x4a95d[_0x29a6('0x4d')]),'voice_queue:save',_0x4a95d);}}};VoiceQueueReport['prototype']['isNotNull']=function(_0x1b103d){return _0x1b103d!==null&&!_[_0x29a6('0x66')](_0x1b103d);};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x2c')]=function(){var _0x5cf8cf=this;setInterval(function(){_0x5cf8cf[_0x29a6('0x35')]();ami[_0x29a6('0x39')]({'action':'queues'})[_0x29a6('0x3b')](function(_0x1eacb0){logger[_0x29a6('0x3e')](_0x29a6('0x67'),util[_0x29a6('0x3f')](_0x1eacb0,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x29a6('0x34')]['loopQueueSummary']=function(){var _0x209805=this;setInterval(function(){if(_0x209805[_0x29a6('0x68')]){return ami['Action']({'action':_0x29a6('0x69')})['then'](function(_0x3fceca){_0x209805['flagQueueSummary']=![];})[_0x29a6('0x3b')](function(_0x31fe76){logger[_0x29a6('0x3e')](_0x29a6('0x6a'),util['inspect'](_0x31fe76,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x14')]=function(_0x2d244f){try{if(this['isNotNull'](_0x2d244f)&&this['isNotNull'](_0x2d244f['queue'])){logger['debug']('[voiceQueueReport][queuesummary]\x20event:',util[_0x29a6('0x3f')](_0x2d244f,{'showHidden':![],'depth':null}));if(this[_0x29a6('0x11')][_0x2d244f['queue']]){logger[_0x29a6('0x6b')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x2d244f[_0x29a6('0x6c')]);var _0x29f320=_[_0x29a6('0x6d')](this[_0x29a6('0x36')],_0x29a6('0x6c'))[_0x2d244f[_0x29a6('0x6c')]]||0x0;var _0xe1b2da=_0x29f320-_0x2d244f[_0x29a6('0x6e')];if(this[_0x29a6('0x11')][_0x2d244f['queue']][_0x29a6('0x31')]!==_[_0x29a6('0x6f')](_0x2d244f['callers'])||this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x58')]!==_['toNumber'](_0x2d244f['loggedin'])||this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]]['available']!==_[_0x29a6('0x6f')](_0x2d244f['available'])||this[_0x29a6('0x11')][_0x2d244f['queue']][_0x29a6('0x5c')]!==_0xe1b2da){this['voiceQueues'][_0x2d244f['queue']][_0x29a6('0x31')]=_[_0x29a6('0x6f')](_0x2d244f['callers']);this[_0x29a6('0x11')][_0x2d244f['queue']][_0x29a6('0x58')]=_['toNumber'](_0x2d244f[_0x29a6('0x70')]);this['voiceQueues'][_0x2d244f[_0x29a6('0x6c')]]['available']=_[_0x29a6('0x6f')](_0x2d244f[_0x29a6('0x57')]);this['voiceQueues'][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')]=_0xe1b2da>0x0?_0xe1b2da:0x0;this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')]=this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')]>_[_0x29a6('0x6f')](_0x2d244f[_0x29a6('0x70')])?_[_0x29a6('0x6f')](_0x2d244f[_0x29a6('0x70')]):this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')];this[_0x29a6('0x52')](this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]],'queuesummary');}logger[_0x29a6('0x47')](_0x29a6('0x71'),util[_0x29a6('0x3f')](this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]],{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0x72'),this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]]);}}}catch(_0x2ec13e){logger[_0x29a6('0x3e')](_0x29a6('0x6a'),util['inspect'](_0x2ec13e,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueSummaryComplete']=function(_0x52adf3){logger['debug'](_0x29a6('0x73'),util[_0x29a6('0x3f')](_0x52adf3,{'showHidden':![],'depth':null}));this[_0x29a6('0x68')]=!![];};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x74')]=function(_0x38ad8b){try{if(this[_0x29a6('0x75')](_0x38ad8b)){logger[_0x29a6('0x47')](_0x29a6('0x76'),_0x38ad8b[_0x29a6('0x4a')],util['inspect'](_0x38ad8b,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x29a6('0xe')][_0x38ad8b[_0x29a6('0x4a')]]))this[_0x29a6('0xe')][_0x38ad8b[_0x29a6('0x4a')]]=[];if(_[_0x29a6('0x66')](this[_0x29a6('0x36')][_0x38ad8b[_0x29a6('0x4a')]]))this[_0x29a6('0x36')][_0x38ad8b[_0x29a6('0x4a')]]={};var _0x4ff917=new QueueReport();_0x4ff917[_0x29a6('0x4d')]=_0x38ad8b[_0x29a6('0x6c')];_0x4ff917[_0x29a6('0x53')]=this[_0x29a6('0x11')][_0x4ff917[_0x29a6('0x4d')]]&&this[_0x29a6('0x11')][_0x4ff917[_0x29a6('0x4d')]][_0x29a6('0x53')]?this[_0x29a6('0x11')][_0x4ff917[_0x29a6('0x4d')]]['type']||_0x29a6('0x54'):'inbound';_0x4ff917[_0x29a6('0x6c')]=_0x38ad8b[_0x29a6('0x6c')];_0x4ff917['queuecallerjoinAt']=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x4ff917[_0x29a6('0x78')]=_0x38ad8b[_0x29a6('0x78')];_0x4ff917[_0x29a6('0x79')]=_0x38ad8b[_0x29a6('0x79')];_0x4ff917[_0x29a6('0x4a')]=_0x38ad8b['uniqueid'];_0x4ff917[_0x29a6('0x7a')]=this[_0x29a6('0x36')][_0x38ad8b[_0x29a6('0x4a')]][_0x29a6('0x7a')];logger[_0x29a6('0x6b')](_0x29a6('0x7b'),_0x4ff917[_0x29a6('0x4d')],_0x4ff917[_0x29a6('0x53')]);_['merge'](_0x4ff917,_[_0x29a6('0x7c')](_0x38ad8b,_[_0x29a6('0x7d')](_0x4ff917)));this[_0x29a6('0xe')][_0x38ad8b[_0x29a6('0x4a')]][_0x29a6('0x7e')](_0x4ff917);this['channels'][_0x38ad8b['uniqueid']]=_0x4ff917;this[_0x29a6('0x46')](_0x4ff917,_0x29a6('0x16'));}}catch(_0x25514c){logger[_0x29a6('0x3e')](_0x29a6('0x76'),_0x38ad8b['uniqueid'],util['inspect'](_0x25514c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x18')]=function(_0x45535d){try{if(this[_0x29a6('0x75')](_0x45535d)){logger[_0x29a6('0x47')](_0x29a6('0x7f'),_0x45535d[_0x29a6('0x4a')],util['inspect'](_0x45535d,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x45535d[_0x29a6('0x4a')]]){var _0x311fb0=_[_0x29a6('0x80')](this['queueReports'][_0x45535d['uniqueid']]);_0x311fb0[_0x29a6('0x81')]=![];_0x311fb0['queuecallercompleteAt']=null;_0x311fb0['holdtime']=_0x45535d['holdtime'];_0x311fb0[_0x29a6('0x82')]=_0x45535d['originalposition'];_0x311fb0[_0x29a6('0x17')]=!![];_0x311fb0[_0x29a6('0x83')]=moment()['format'](_0x29a6('0x77'));_0x311fb0[_0x29a6('0x84')]=_0x29a6('0x85');_0x311fb0[_0x29a6('0x86')]=null;logger[_0x29a6('0x6b')](_0x29a6('0x87'),_0x311fb0[_0x29a6('0x4d')],_0x311fb0[_0x29a6('0x53')]);this[_0x29a6('0x36')][_0x45535d['uniqueid']]=_0x311fb0;this['emitVoiceQueueChannelRemove'](_0x311fb0,_0x29a6('0x17'));}}}catch(_0x2a61a8){logger[_0x29a6('0x3e')](_0x29a6('0x7f'),_0x45535d['uniqueid'],util['inspect'](_0x2a61a8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x1a')]=function(_0x59bd46){try{if(this['isNotNull'](_0x59bd46)){logger[_0x29a6('0x47')](_0x29a6('0x88'),_0x59bd46['uniqueid'],util[_0x29a6('0x3f')](_0x59bd46,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x59bd46['uniqueid']]){var _0x315577=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x59bd46[_0x29a6('0x4a')]]);_0x315577[_0x29a6('0x89')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x315577[_0x29a6('0x8a')]=_0x59bd46['connectedlinenum'];_0x315577[_0x29a6('0x8b')]=_0x59bd46[_0x29a6('0x8b')];logger[_0x29a6('0x6b')](_0x29a6('0x8c'),_0x315577['name'],_0x315577['type'],_0x59bd46[_0x29a6('0x8a')],_0x59bd46[_0x29a6('0x8b')]);this['channels'][_0x59bd46[_0x29a6('0x4a')]]=_0x315577;this[_0x29a6('0x46')](_0x315577,'queuecallerleave');}}}catch(_0x2d7dad){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][queuecallerleave]',_0x59bd46['uniqueid'],util[_0x29a6('0x3f')](_0x2d7dad,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x1e')]=function(_0x2c5251){try{if(this[_0x29a6('0x75')](_0x2c5251)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][agentconnect]',_0x2c5251[_0x29a6('0x4a')],util['inspect'](_0x2c5251,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x2c5251[_0x29a6('0x4a')]]){var _0x48c644=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x2c5251[_0x29a6('0x4a')]]);_0x48c644[_0x29a6('0x81')]=!![];_0x48c644[_0x29a6('0x84')]=_0x29a6('0x8d');logger[_0x29a6('0x6b')](_0x29a6('0x8e'),_0x48c644[_0x29a6('0x4d')],_0x48c644[_0x29a6('0x53')]);}}}catch(_0x1c5f21){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][agentconnect]',_0x2c5251['uniqueid'],util[_0x29a6('0x3f')](_0x1c5f21,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x1c')]=function(_0xe9eac3){try{if(this[_0x29a6('0x75')](_0xe9eac3)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][agentcomplete]',_0xe9eac3[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0xe9eac3,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x4a')]]){var _0x45e01a=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0xe9eac3['uniqueid']]);_0x45e01a['queuecallerabandon']=![];_0x45e01a['queuecallerabandonAt']=null;_0x45e01a[_0x29a6('0x8f')]=!![];_0x45e01a[_0x29a6('0x86')]=_0xe9eac3[_0x29a6('0x90')];_0x45e01a[_0x29a6('0x91')]=_0xe9eac3[_0x29a6('0x91')];_0x45e01a[_0x29a6('0x81')]=!![];_0x45e01a[_0x29a6('0x92')]=![];_0x45e01a[_0x29a6('0x93')]=null;if(!_0x45e01a[_0x29a6('0x94')]){if(_0xe9eac3['reason']==_0x29a6('0x94')){_0x45e01a[_0x29a6('0x84')]='COMPLETED';logger[_0x29a6('0x6b')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x45e01a['name'],_0x45e01a[_0x29a6('0x53')]);}else{if(_[_0x29a6('0x95')](_0xe9eac3[_0x29a6('0x3a')][_0x29a6('0x96')](),_0x29a6('0x97'))){if(this['queueReports'][_0xe9eac3[_0x29a6('0x98')]]){var _0x4108ca=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x98')]]);_0x4108ca[_0x29a6('0x81')]=![];_0x4108ca[_0x29a6('0x92')]=!![];_0x4108ca[_0x29a6('0x93')]=moment(_0x45e01a['queuecallerjoinAt'])[_0x29a6('0x99')](_0xe9eac3['holdtime'],_0x29a6('0x9a'))[_0x29a6('0x4b')](_0x29a6('0x77'));_0x4108ca[_0x29a6('0x84')]=_0x29a6('0x9b');_0x4108ca['transfer']=!![];_0x4108ca['transfertype']=_0x29a6('0x9c');_0x4108ca[_0x29a6('0x9d')]=_0xe9eac3[_0x29a6('0x9e')];_0x4108ca[_0x29a6('0x9f')]=_0xe9eac3[_0x29a6('0x4a')];logger[_0x29a6('0x6b')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x4108ca[_0x29a6('0x4d')],_0x4108ca[_0x29a6('0x53')]);var _0x12d257=this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x98')]];this['queueReports'][_0xe9eac3['linkedid']]=this['queueReports'][_0xe9eac3[_0x29a6('0x4a')]];this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x4a')]]=_0x12d257;}}else{_0x45e01a['queuecallerexitreason']=_0x29a6('0xa0')+_0xe9eac3[_0x29a6('0xa1')][_0x29a6('0xa2')]();logger[_0x29a6('0x6b')](_0x29a6('0xa3'),_0x45e01a[_0x29a6('0x4d')],_0x45e01a['type'],_0x45e01a[_0x29a6('0x84')]);}}}this[_0x29a6('0x36')][_0xe9eac3['uniqueid']]=_0x45e01a;this[_0x29a6('0x43')](_0x45e01a,_0x29a6('0x1b'));}}}catch(_0x41e3cb){logger[_0x29a6('0x3e')](_0x29a6('0xa4'),_0xe9eac3[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x41e3cb,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x29a6('0xa5')]=function(_0xd5807c){try{if(this[_0x29a6('0x75')](_0xd5807c)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][varset]',_0xd5807c[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0xd5807c,{'showHidden':![],'depth':null}));this['addVariable'](_0xd5807c[_0x29a6('0x4a')],_['keys'](_0xd5807c['variable'])[0x0],_0xd5807c['value']);if(this['queueReports'][_0xd5807c['uniqueid']]){var _0x2f53da=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0xd5807c[_0x29a6('0x4a')]]);if(_0x2f53da){if(this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')])&&this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')][_0x29a6('0xa7')])){switch(_0xd5807c[_0x29a6('0xa8')]){case _0x29a6('0xa9'):_0x2f53da[_0x29a6('0x92')]=![];_0x2f53da['queuecallerexitAt']=null;break;case _0x29a6('0xaa'):_0x2f53da[_0x29a6('0xab')]=_0x29a6('0xac');_0x2f53da[_0x29a6('0x92')]=!![];_0x2f53da[_0x29a6('0x93')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x2f53da[_0x29a6('0x89')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));logger[_0x29a6('0x47')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0xd5807c[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x2f53da,{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xad'),_0x2f53da);break;default:_0x2f53da['queuecallerexit']=!![];_0x2f53da[_0x29a6('0x93')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x2f53da[_0x29a6('0x89')]=moment()['format'](_0x29a6('0x77'));}_0x2f53da[_0x29a6('0x17')]=![];_0x2f53da['queuecallerabandonAt']=null;_0x2f53da[_0x29a6('0x84')]=_0xd5807c['value'];this[_0x29a6('0x36')][_0xd5807c[_0x29a6('0x4a')]]=_0x2f53da;this[_0x29a6('0x43')](_0x2f53da,_0x29a6('0x1f'));}else if(this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')])&&this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')][_0x29a6('0xae')])){if(!_0x2f53da['queuecallerabandon']){_0x2f53da[_0x29a6('0x92')]=!![];_0x2f53da['queuecallerexitAt']=moment()[_0x29a6('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x2f53da['queuecallerexitreason']='EXITWITHKEY';_0x2f53da[_0x29a6('0x89')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));this[_0x29a6('0x36')][_0xd5807c[_0x29a6('0x4a')]]=_0x2f53da;}}logger[_0x29a6('0x6b')](_0x29a6('0xaf'),_0xd5807c[_0x29a6('0x4a')],_0x2f53da[_0x29a6('0x4d')],_0x2f53da[_0x29a6('0x53')],_[_0x29a6('0x7d')](_0xd5807c[_0x29a6('0xa6')])[0x0],_0xd5807c[_0x29a6('0xa8')]);_0x2f53da[_0x29a6('0x13')]=this['variables'][_0xd5807c[_0x29a6('0x4a')]];}}}}catch(_0x596658){logger['error'](_0x29a6('0xb0'),_0xd5807c[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x596658,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0xb1')]=function(_0xb90a5c,_0x3beb1e,_0x29439b){var _0x3a74d3=['rtpaudioqos',_0x29a6('0xb2'),'rtpaudioqosjitter',_0x29a6('0xb3'),_0x29a6('0xb4'),_0x29a6('0xb5'),_0x29a6('0xb6'),_0x29a6('0xb7'),'sipcallid',_0x29a6('0xb8'),_0x29a6('0xb9'),_0x29a6('0xba'),_0x29a6('0xbb'),'memberdynamic','memberinterface',_0x29a6('0xbc'),_0x29a6('0x90'),_0x29a6('0xbd'),'memberrealtime'];if(!_[_0x29a6('0x38')](_0x3beb1e)&&!_[_0x29a6('0xbe')](_0x3a74d3,_0x3beb1e)){if(_[_0x29a6('0x66')](this[_0x29a6('0x13')][_0xb90a5c])){this[_0x29a6('0x13')][_0xb90a5c]={};}this[_0x29a6('0x13')][_0xb90a5c][_0x3beb1e]=_0x29439b;}};VoiceQueueReport[_0x29a6('0x34')]['syncHangup']=function(_0x464aab){try{if(this['isNotNull'](_0x464aab)){logger[_0x29a6('0x47')](_0x29a6('0xbf'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x464aab,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x464aab['uniqueid']]){for(var _0x7ccd96=0x0,_0x3c1d1d={};_0x7ccd96<this['queueReports'][_0x464aab[_0x29a6('0x4a')]][_0x29a6('0xc0')];_0x7ccd96+=0x1){_0x3c1d1d=this['queueReports'][_0x464aab[_0x29a6('0x4a')]][_0x7ccd96];if(this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]]){if(_0x3c1d1d[_0x29a6('0x92')]&&_0x3c1d1d['transfer']!=!![]){this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]]['unmanaged']+=0x1;}if(_0x3c1d1d['queuecallerabandon']){this['voiceQueues'][_0x3c1d1d['queue']][_0x29a6('0x5d')]+=0x1;}this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x5b')]+=moment(_0x3c1d1d[_0x29a6('0x89')])[_0x29a6('0xc1')](_0x3c1d1d['queuecallerjoinAt'],_0x29a6('0x9a'))||0x0;if(_0x7ccd96===this[_0x29a6('0xe')][_0x464aab['uniqueid']][_0x29a6('0xc0')]-0x1){this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x5a')]+=moment()[_0x29a6('0xc2')](0x0)[_0x29a6('0xc1')](_0x3c1d1d[_0x29a6('0xc3')],_0x29a6('0x9a'));this[_0x29a6('0x11')][_0x3c1d1d['queue']][_0x29a6('0xc4')]+=0x1;if(_0x3c1d1d[_0x29a6('0x81')]){this['voiceQueues'][_0x3c1d1d['queue']][_0x29a6('0x56')]+=0x1;this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x59')]+=moment()[_0x29a6('0xc2')](0x0)[_0x29a6('0xc1')](_0x3c1d1d['queuecallerleaveAt'],_0x29a6('0x9a'));_0x3c1d1d[_0x29a6('0xc5')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x3c1d1d['queuecallerexit']=![];_0x3c1d1d[_0x29a6('0x93')]=null;}if(_0x3c1d1d[_0x29a6('0x92')]&&_0x3c1d1d[_0x29a6('0x94')]!=!![]){_0x3c1d1d['lastevent']=_0x29a6('0xc6');logger[_0x29a6('0x47')](_0x29a6('0xc7'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x3c1d1d,{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xc8'),_0x3c1d1d);}if(_0x3c1d1d[_0x29a6('0x17')]){_0x3c1d1d[_0x29a6('0xab')]='abandoned';logger[_0x29a6('0x47')](_0x29a6('0xc9'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x3c1d1d,{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xca'),_0x3c1d1d);}}else{this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x5a')]+=this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]]['sumHoldTime'];}logger[_0x29a6('0x6b')](_0x29a6('0xcb'),_0x464aab['uniqueid'],_0x3c1d1d['name'],_0x3c1d1d[_0x29a6('0x53')],_0x464aab[_0x29a6('0xcc')]);this['channels'][_0x464aab['uniqueid']]=_0x3c1d1d;this[_0x29a6('0x43')](_0x3c1d1d,'hangup');this['emitVoiceQueueSummary'](this['voiceQueues'][_0x3c1d1d[_0x29a6('0x6c')]],_0x29a6('0x20'));}}logger[_0x29a6('0x47')](_0x29a6('0xcd'),_0x464aab['uniqueid'],util['inspect'](this[_0x29a6('0xe')][_0x464aab['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xce'),this[_0x29a6('0xe')][_0x464aab[_0x29a6('0x4a')]]);delete this[_0x29a6('0xe')][_0x464aab['uniqueid']];delete this[_0x29a6('0x36')][_0x464aab[_0x29a6('0x4a')]];}if(this['variables'][_0x464aab[_0x29a6('0x4a')]]){delete this['variables'][_0x464aab[_0x29a6('0x4a')]];}}}catch(_0x467303){logger[_0x29a6('0x3e')](_0x29a6('0xbf'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x467303,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x28')]=function(_0x4b1f36){try{if(this[_0x29a6('0x75')](_0x4b1f36)){logger[_0x29a6('0x47')](_0x29a6('0xcf'),_0x4b1f36[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x4b1f36,{'showHidden':![],'depth':null}));var _0x1c073f;if(this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd0')]]){_0x1c073f=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd0')]]);_0x1c073f[_0x29a6('0x9d')]=_0x4b1f36[_0x29a6('0xd1')];_0x1c073f[_0x29a6('0x9f')]=_0x4b1f36[_0x29a6('0xd2')];_0x1c073f[_0x29a6('0x84')]=_0x29a6('0xd3');_0x1c073f[_0x29a6('0x94')]=!![];_0x1c073f['transfertype']=_0x29a6('0xd4');if(this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd2')]]){var _0x49134b=this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd2')]];this[_0x29a6('0xe')][_0x4b1f36['secondtransfereruniqueid']]=this['queueReports'][_0x4b1f36[_0x29a6('0xd0')]];this[_0x29a6('0xe')][_0x4b1f36['transfereeuniqueid']]=_0x49134b;var _0x176079=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd0')]]);_0x176079['switch']=!![];}logger[_0x29a6('0x6b')](_0x29a6('0xd5'),_0x4b1f36[_0x29a6('0x4a')],_0x1c073f[_0x29a6('0x4d')],_0x1c073f['type'],_0x1c073f[_0x29a6('0x9d')],_0x1c073f[_0x29a6('0x9f')]);}else if(this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd6')]]){_0x1c073f=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd6')]]);_0x1c073f[_0x29a6('0x9d')]=_0x4b1f36['origtransfererexten'];_0x1c073f[_0x29a6('0x9f')]=_0x4b1f36[_0x29a6('0xd7')];_0x1c073f[_0x29a6('0x84')]='ATTENDEDTRANSFER';_0x1c073f['transfer']=!![];_0x1c073f[_0x29a6('0xd8')]=_0x29a6('0xd4');if(this[_0x29a6('0xe')][_0x4b1f36['origtransfereruniqueid']]){var _0x49134b=this['queueReports'][_0x4b1f36[_0x29a6('0xd7')]];this['queueReports'][_0x4b1f36[_0x29a6('0xd7')]]=this[_0x29a6('0xe')][_0x4b1f36['transfertargetuniqueid']];this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd6')]]=_0x49134b;var _0x176079=_['last'](this[_0x29a6('0xe')][_0x4b1f36['transfertargetuniqueid']]);_0x176079[_0x29a6('0x37')]=!![];}logger['info'](_0x29a6('0xd5'),_0x4b1f36[_0x29a6('0x4a')],_0x1c073f[_0x29a6('0x4d')],_0x1c073f[_0x29a6('0x53')],_0x1c073f[_0x29a6('0x9d')],_0x1c073f[_0x29a6('0x9f')]);}}}catch(_0x3fa681){logger[_0x29a6('0x3e')](_0x29a6('0xcf'),_0x4b1f36['uniqueid'],util[_0x29a6('0x3f')](_0x3fa681,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x2a')]=function(_0x447b5c){try{if(this[_0x29a6('0x75')](_0x447b5c)){logger['debug'](_0x29a6('0xd9'),_0x447b5c['uniqueid'],util[_0x29a6('0x3f')](_0x447b5c,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x447b5c[_0x29a6('0xd0')]]){var _0x137d98=_[_0x29a6('0x80')](this['queueReports'][_0x447b5c[_0x29a6('0xd0')]]);_0x137d98[_0x29a6('0x84')]=_0x29a6('0xda');_0x137d98[_0x29a6('0x94')]=!![];_0x137d98[_0x29a6('0xd8')]=_0x29a6('0xdb');_0x137d98[_0x29a6('0x9d')]=_0x447b5c['extension'];_0x137d98[_0x29a6('0x9f')]=_0x447b5c[_0x29a6('0xd0')];logger[_0x29a6('0x6b')](_0x29a6('0xdc'),_0x447b5c['uniqueid'],_0x137d98[_0x29a6('0x4d')],_0x137d98[_0x29a6('0x53')],_0x137d98[_0x29a6('0x9d')],_0x137d98[_0x29a6('0x9f')]);this[_0x29a6('0x21')]({'event':'BlindTransfer','uniqueid':_0x447b5c[_0x29a6('0xd0')],'context':_0x447b5c[_0x29a6('0xdd')],'channel':_0x447b5c[_0x29a6('0xde')]});}}}catch(_0x314dcd){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][blindtransfer]',_0x447b5c[_0x29a6('0x4a')],util['inspect'](_0x314dcd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x25')]=function(_0x3d7f81){try{if(this[_0x29a6('0x75')](_0x3d7f81)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][musiconholdstart]',_0x3d7f81[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x3d7f81,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3d7f81['uniqueid']]){var _0x3ec97b=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x3d7f81[_0x29a6('0x4a')]]);if(!_['isNil'](_0x3ec97b['queuecallerleaveAt'])){_0x3ec97b['mohstarttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger['info']('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x3d7f81[_0x29a6('0x4a')],_0x3ec97b[_0x29a6('0xdf')]);}}}}catch(_0x8419be){logger['error'](_0x29a6('0xe0'),_0x3d7f81[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x8419be,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x26')]=function(_0x171a4e){try{if(this[_0x29a6('0x75')](_0x171a4e)){logger[_0x29a6('0x47')](_0x29a6('0xe1'),_0x171a4e[_0x29a6('0x4a')],util['inspect'](_0x171a4e,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x171a4e[_0x29a6('0x4a')]]){var _0x350b1b=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x171a4e[_0x29a6('0x4a')]]);if(!_[_0x29a6('0x38')](_0x350b1b[_0x29a6('0xdf')])){_0x350b1b[_0x29a6('0xe2')]+=moment()[_0x29a6('0xc2')](0x0)['diff'](_0x350b1b[_0x29a6('0xdf')],_0x29a6('0x9a'));logger[_0x29a6('0x6b')](_0x29a6('0xe3'),_0x171a4e[_0x29a6('0x4a')],_0x350b1b[_0x29a6('0xe2')]);delete _0x350b1b[_0x29a6('0xdf')];}}}}catch(_0xcb5b97){logger['error']('[%s][voiceQueueReport][musiconholdstop]',_0x171a4e['uniqueid'],util['inspect'](_0xcb5b97,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x23')]=function(_0x39198f){try{if(this[_0x29a6('0x75')](_0x39198f)){logger[_0x29a6('0x47')](_0x29a6('0xe4'),_0x39198f[_0x29a6('0x4a')],util['inspect'](_0x39198f,{'showHidden':![],'depth':null}));if(_0x39198f[_0x29a6('0xe5')]['toLowerCase']()===_0x29a6('0xe6')){_0x39198f[_0x29a6('0xe7')]=_0x39198f[_0x29a6('0xe8')]&&_0x39198f[_0x29a6('0xe8')]['startsWith'](_0x29a6('0xe9'))?_0x39198f['appdata']:(_0x39198f[_0x29a6('0xe8')]||_0x39198f[_0x29a6('0xe7')])[_0x29a6('0x96')]();if(_[_0x29a6('0x95')](_0x39198f[_0x29a6('0xe7')][_0x29a6('0x96')](),_0x29a6('0xea'))){logger[_0x29a6('0x6b')](_0x29a6('0xeb'),_0x39198f[_0x29a6('0x4a')],_0x39198f[_0x29a6('0xe5')],_0x39198f[_0x29a6('0xe7')]);if(_['isUndefined'](this[_0x29a6('0x36')][_0x39198f['uniqueid']]))this[_0x29a6('0x36')][_0x39198f[_0x29a6('0x4a')]]={};var _0x496286=_0x39198f[_0x29a6('0xe7')][_0x29a6('0xec')]('=');var _0x511e05=_0x496286[0x0]['toLowerCase']()[_0x29a6('0xed')](/cdr\((.*)\)/);if(_0x511e05)this[_0x29a6('0x36')][_0x39198f[_0x29a6('0x4a')]][_0x511e05[0x1]]=_0x496286[0x1];}}}}catch(_0x2c4a58){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][newexten]',_0x39198f['uniqueid'],util[_0x29a6('0x3f')](_0x2c4a58,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index 21fa9dd..abff206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c9a=['createHistory','campaign','queue','CreateReportAgentPreview','../client'];(function(_0xf87721,_0x21017b){var _0x4de68c=function(_0x534315){while(--_0x534315){_0xf87721['push'](_0xf87721['shift']());}};_0x4de68c(++_0x21017b);}(_0x8c9a,0x1d0));var _0xa8c9=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8c9a[_0x3ab51d];return _0x29a04e;};'use strict';var client=require(_0xa8c9('0x0'));exports[_0xa8c9('0x1')]=function(_0x14ab5c){return function(){_0x14ab5c[_0xa8c9('0x2')]=_0x14ab5c[_0xa8c9('0x3')];return client['Request']('CreateReportAgentPreview',{'body':_0x14ab5c,'log':_0xa8c9('0x4')});};};
\ No newline at end of file
+var _0x9f1c=['campaign','queue','Request','../client','createHistory'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9f1c,0x152));var _0xc9f1=function(_0x102d0b,_0x17285f){_0x102d0b=_0x102d0b-0x0;var _0x6f965d=_0x9f1c[_0x102d0b];return _0x6f965d;};'use strict';var client=require(_0xc9f1('0x0'));exports[_0xc9f1('0x1')]=function(_0x21b99b){return function(){_0x21b99b[_0xc9f1('0x2')]=_0x21b99b[_0xc9f1('0x3')];return client[_0xc9f1('0x4')]('CreateReportAgentPreview',{'body':_0x21b99b,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 81c6709..43a8caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaf7=['CreateAttachment','../client','create','Request'];(function(_0x3b58dd,_0x5f3b40){var _0x3539ca=function(_0xa894bf){while(--_0xa894bf){_0x3b58dd['push'](_0x3b58dd['shift']());}};_0x3539ca(++_0x5f3b40);}(_0xaaf7,0x79));var _0x7aaf=function(_0x58ce90,_0x3284ea){_0x58ce90=_0x58ce90-0x0;var _0x1cd178=_0xaaf7[_0x58ce90];return _0x1cd178;};'use strict';var client=require(_0x7aaf('0x0'));exports[_0x7aaf('0x1')]=function(_0x2250b7){return client[_0x7aaf('0x2')](_0x7aaf('0x3'),{'body':_0x2250b7,'log':_0x7aaf('0x3')});};
\ No newline at end of file
+var _0x30c0=['../client','create','Request','CreateAttachment'];(function(_0x4c5822,_0x3d4974){var _0x2e34a1=function(_0x182d8e){while(--_0x182d8e){_0x4c5822['push'](_0x4c5822['shift']());}};_0x2e34a1(++_0x3d4974);}(_0x30c0,0x168));var _0x030c=function(_0x1b2041,_0x2f1f10){_0x1b2041=_0x1b2041-0x0;var _0x3da786=_0x30c0[_0x1b2041];return _0x3da786;};'use strict';var client=require(_0x030c('0x0'));exports[_0x030c('0x1')]=function(_0x329a67){return client[_0x030c('0x2')](_0x030c('0x3'),{'body':_0x329a67,'log':'CreateAttachment'});};
\ No newline at end of file
index b6e7a80..ab8ba8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x43219a,_0x2e2b72){var _0x15350a=function(_0x389550){while(--_0x389550){_0x43219a['push'](_0x43219a['shift']());}};_0x15350a(++_0x2e2b72);}(_0x326f,0xd1));var _0xf326=function(_0x3aa18e,_0x4c9e5d){_0x3aa18e=_0x3aa18e-0x0;var _0x4f3f41=_0x326f[_0x3aa18e];return _0x4f3f41;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x366174,_0xe39292){var _0x449df5=function(_0x497dd9){while(--_0x497dd9){_0x366174['push'](_0x366174['shift']());}};_0x449df5(++_0xe39292);}(_0x326f,0xd1));var _0xf326=function(_0x5c52c2,_0x54b8b6){_0x5c52c2=_0x5c52c2-0x0;var _0x42317a=_0x326f[_0x5c52c2];return _0x42317a;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index c70c6c8..16d021c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfd6=['getContacts','GetCmContact','../client','createContact','Request'];(function(_0x150313,_0x267275){var _0x3ac18a=function(_0x58a7f7){while(--_0x58a7f7){_0x150313['push'](_0x150313['shift']());}};_0x3ac18a(++_0x267275);}(_0xdfd6,0x1a6));var _0x6dfd=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xdfd6[_0x3947c9];return _0x2e7871;};'use strict';var client=require(_0x6dfd('0x0'));exports[_0x6dfd('0x1')]=function(_0x37c76e){return function(){return client[_0x6dfd('0x2')]('CreateCmContact',{'body':_0x37c76e,'log':'CreateCmContact'});};};exports[_0x6dfd('0x3')]=function(_0x1adc52){return function(){return client['Request'](_0x6dfd('0x4'),{'options':_0x1adc52,'log':_0x6dfd('0x4')});};};
\ No newline at end of file
+var _0xdd3e=['../client','createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x18be08,_0x1329bc){var _0x5cdf81=function(_0x5ced79){while(--_0x5ced79){_0x18be08['push'](_0x18be08['shift']());}};_0x5cdf81(++_0x1329bc);}(_0xdd3e,0x78));var _0xedd3=function(_0x392496,_0x558252){_0x392496=_0x392496-0x0;var _0x14aad3=_0xdd3e[_0x392496];return _0x14aad3;};'use strict';var client=require(_0xedd3('0x0'));exports[_0xedd3('0x1')]=function(_0x55ede0){return function(){return client[_0xedd3('0x2')](_0xedd3('0x3'),{'body':_0x55ede0,'log':_0xedd3('0x3')});};};exports[_0xedd3('0x4')]=function(_0x3fece0){return function(){return client[_0xedd3('0x2')](_0xedd3('0x5'),{'options':_0x3fece0,'log':_0xedd3('0x5')});};};
\ No newline at end of file
index cbdaf7b..dc0f2c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa948=['name','VoiceQueue','Queue','unlockContact','GetContactRecallMe','db.CmHopper.UserId','../client','moment','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','GetContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','CountReScheduled','Agent'];(function(_0x4c00a3,_0x2d23e2){var _0x893854=function(_0x6f552c){while(--_0x6f552c){_0x4c00a3['push'](_0x4c00a3['shift']());}};_0x893854(++_0x2d23e2);}(_0xa948,0x1e7));var _0x8a94=function(_0x12f654,_0x4e1c65){_0x12f654=_0x12f654-0x0;var _0x59b5ae=_0xa948[_0x12f654];return _0x59b5ae;};'use strict';var client=require(_0x8a94('0x0'));var moment=require(_0x8a94('0x1'));var _=require('lodash');exports[_0x8a94('0x2')]=function(_0x356861,_0x1420f2){return function(){return client[_0x8a94('0x3')](_0x8a94('0x4'),{'options':{'where':{'VoiceQueueId':_0x356861},'include':[{'model':_0x8a94('0x5'),'as':_0x8a94('0x6')}],'limit':_0x1420f2,'raw':![]},'log':_0x8a94('0x7')});};};exports[_0x8a94('0x8')]=function(_0x1ac885,_0x3c7393,_0x5a4943){return function(){return client[_0x8a94('0x3')](_0x8a94('0x9'),{'body':_0x1ac885,'options':{'where':{'VoiceQueueId':_0x3c7393,'scheduledat':{'$lte':moment()[_0x8a94('0xa')](_0x8a94('0xb'))}},'limit':_0x5a4943},'log':'UpdateCmHopper'});};};exports[_0x8a94('0xc')]=function(_0xafff3e){return function(){return client[_0x8a94('0x3')](_0x8a94('0x9'),{'body':_0xafff3e,'options':{'where':{'ContactId':_0xafff3e[_0x8a94('0xd')],'ListId':_0xafff3e[_0x8a94('0xe')],'VoiceQueueId':_0xafff3e[_0x8a94('0xf')],'CampaignId':_0xafff3e[_0x8a94('0x10')]}},'log':_0x8a94('0xc')});};};exports[_0x8a94('0x11')]=function(_0x1ca438,_0x472d23,_0x34bea9){return function(){return client[_0x8a94('0x3')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x1ca438,'ListId':_0x472d23,'ContactId':_0x34bea9}},'log':_0x8a94('0x12')});};};exports['getContactDialer']=function(_0x19c7ed,_0x294359,_0x99480d,_0x58dd1a){return function(){return client['Request'](_0x8a94('0x13'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x19c7ed,'active':![],'scheduledat':{'$lte':moment()[_0x8a94('0xa')](_0x8a94('0xb'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x294359}}]},'order':[[_0x8a94('0x14'),_0x8a94('0x15')],[_0x8a94('0x16'),_0x58dd1a],['id',_0x8a94('0x17')]],'raw':!![],'limit':_0x99480d},'log':_0x8a94('0x13')});};};exports[_0x8a94('0x18')]=function(_0x553f91,_0x3a8ca6,_0x312f55){return function(){return client[_0x8a94('0x3')](_0x8a94('0x13'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x553f91,'active':![],'scheduledat':{'$lte':moment()[_0x8a94('0xa')](_0x8a94('0xb'))}},'include':[{'model':'CmContact','as':'Contact'}],'order':[[_0x8a94('0x14'),_0x8a94('0x15')],['scheduledat',_0x312f55],['id',_0x8a94('0x17')]],'raw':!![],'limit':_0x3a8ca6},'log':_0x8a94('0x19')});};};exports[_0x8a94('0x1a')]=function(_0x500870,_0x317256){return function(){_0x500870['campaign']=_0x500870[_0x8a94('0x1b')];return client['Request']('MoveContactManagedDialer',{'body':_0x500870,'options':{'where':{'ContactId':_0x500870['ContactId'],'ListId':_0x500870[_0x8a94('0xe')],'VoiceQueueId':_0x500870['VoiceQueueId'],'CampaignId':_0x500870[_0x8a94('0x10')],'active':_0x317256?undefined:!![]}},'log':_0x8a94('0x1c')});};};exports['countReScheduled']=function(_0x23884f){return function(){return client[_0x8a94('0x3')](_0x8a94('0x1d'),{'options':{'where':{'VoiceQueueId':_0x23884f['id']?_0x23884f['id']||null:null}},'log':'countReScheduled'});};};exports['getContactPreview']=function(_0x2e9f2c){return function(){return client[_0x8a94('0x3')]('GetCmHopperPreview',{'options':{'where':{'id':_0x2e9f2c},'include':[{'model':'CmContact','as':'Contact'},{'model':'User','as':_0x8a94('0x1e'),'attributes':['id',_0x8a94('0x1f')]},{'model':_0x8a94('0x20'),'as':_0x8a94('0x21'),'attributes':['id','name']}],'raw':!![]},'log':_0x8a94('0x7')});};};exports[_0x8a94('0x22')]=function(_0x1322e5,_0x16c704,_0x12941b){return function(){return client['Request'](_0x8a94('0x9'),{'body':_0x1322e5,'options':{'where':{'id':_0x16c704},'limit':_0x12941b},'log':_0x8a94('0x9')});};};exports['getContactRecallMe']=function(_0xac83da,_0x1d3d98){return function(){return client[_0x8a94('0x3')](_0x8a94('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xac83da,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x8a94('0xa')](_0x8a94('0xb'))},'UserId':{'$in':_0x1d3d98}},'order':[['priority',_0x8a94('0x15')],['scheduledat',_0x8a94('0x15')],['id',_0x8a94('0x17')]],'include':[{'model':_0x8a94('0x5'),'as':'Contact'},{'model':'User','as':_0x8a94('0x1e'),'attributes':['id','name','voicePause']}],'group':_0x8a94('0x24'),'raw':!![]},'log':_0x8a94('0x13')});};};
\ No newline at end of file
+var _0x6736=['countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','name','VoiceQueue','getCmHopper','unlockContact','getContactRecallMe','GetContactRecallMe','Agent','voicePause','db.CmHopper.UserId','moment','getContacts','Request','GetCmHopper','CmContact','Contact','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','ListId','VoiceQueueId','rescheduleContact','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','ContactId','CampaignId'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0x6736,0x104));var _0x6673=function(_0x59db9e,_0x411550){_0x59db9e=_0x59db9e-0x0;var _0xa272ab=_0x6736[_0x59db9e];return _0xa272ab;};'use strict';var client=require('../client');var moment=require(_0x6673('0x0'));var _=require('lodash');exports[_0x6673('0x1')]=function(_0x35d31a,_0x34acc9){return function(){return client[_0x6673('0x2')](_0x6673('0x3'),{'options':{'where':{'VoiceQueueId':_0x35d31a},'include':[{'model':_0x6673('0x4'),'as':_0x6673('0x5')}],'limit':_0x34acc9,'raw':![]},'log':'getCmHopper'});};};exports[_0x6673('0x6')]=function(_0xf84297,_0x84538a,_0xabe622){return function(){return client[_0x6673('0x2')](_0x6673('0x7'),{'body':_0xf84297,'options':{'where':{'VoiceQueueId':_0x84538a,'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))}},'limit':_0xabe622},'log':_0x6673('0x7')});};};exports['rescheduleContact']=function(_0xe9f842){return function(){return client['Request'](_0x6673('0x7'),{'body':_0xe9f842,'options':{'where':{'ContactId':_0xe9f842['ContactId'],'ListId':_0xe9f842[_0x6673('0xa')],'VoiceQueueId':_0xe9f842[_0x6673('0xb')],'CampaignId':_0xe9f842['CampaignId']}},'log':_0x6673('0xc')});};};exports[_0x6673('0xd')]=function(_0x5d6ee1,_0x3c8872,_0x5b9c5f){return function(){return client['Request'](_0x6673('0xe'),{'options':{'where':{'VoiceQueueId':_0x5d6ee1,'ListId':_0x3c8872,'ContactId':_0x5b9c5f}},'log':_0x6673('0xe')});};};exports[_0x6673('0xf')]=function(_0x41a92d,_0x381b6d,_0x597410,_0x45fd21){return function(){return client[_0x6673('0x2')](_0x6673('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x41a92d,'active':![],'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x381b6d}}]},'order':[[_0x6673('0x11'),_0x6673('0x12')],[_0x6673('0x13'),_0x45fd21],['id',_0x6673('0x14')]],'raw':!![],'limit':_0x597410},'log':_0x6673('0x10')});};};exports[_0x6673('0x15')]=function(_0x92c120,_0x3babf5,_0x264719){return function(){return client[_0x6673('0x2')](_0x6673('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x92c120,'active':![],'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))}},'include':[{'model':_0x6673('0x4'),'as':_0x6673('0x5')}],'order':[[_0x6673('0x11'),_0x6673('0x12')],['scheduledat',_0x264719],['id',_0x6673('0x14')]],'raw':!![],'limit':_0x3babf5},'log':'GetContactDialerIvr'});};};exports[_0x6673('0x16')]=function(_0x4982fc,_0x3a6a6a){return function(){_0x4982fc[_0x6673('0x17')]=_0x4982fc['queue'];return client[_0x6673('0x2')](_0x6673('0x18'),{'body':_0x4982fc,'options':{'where':{'ContactId':_0x4982fc[_0x6673('0x19')],'ListId':_0x4982fc[_0x6673('0xa')],'VoiceQueueId':_0x4982fc[_0x6673('0xb')],'CampaignId':_0x4982fc[_0x6673('0x1a')],'active':_0x3a6a6a?undefined:!![]}},'log':_0x6673('0x18')});};};exports[_0x6673('0x1b')]=function(_0x7c7aed){return function(){return client[_0x6673('0x2')](_0x6673('0x1c'),{'options':{'where':{'VoiceQueueId':_0x7c7aed['id']?_0x7c7aed['id']||null:null}},'log':_0x6673('0x1b')});};};exports[_0x6673('0x1d')]=function(_0x402e1d){return function(){return client[_0x6673('0x2')](_0x6673('0x1e'),{'options':{'where':{'id':_0x402e1d},'include':[{'model':_0x6673('0x4'),'as':'Contact'},{'model':_0x6673('0x1f'),'as':'Agent','attributes':['id',_0x6673('0x20')]},{'model':_0x6673('0x21'),'as':'Queue','attributes':['id','name']}],'raw':!![]},'log':_0x6673('0x22')});};};exports[_0x6673('0x23')]=function(_0x1eb7c0,_0x1191db,_0x400311){return function(){return client['Request'](_0x6673('0x7'),{'body':_0x1eb7c0,'options':{'where':{'id':_0x1191db},'limit':_0x400311},'log':'UpdateCmHopper'});};};exports[_0x6673('0x24')]=function(_0x24a77a,_0x2fcd51){return function(){return client[_0x6673('0x2')](_0x6673('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x24a77a,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))},'UserId':{'$in':_0x2fcd51}},'order':[[_0x6673('0x11'),_0x6673('0x12')],[_0x6673('0x13'),_0x6673('0x12')],['id',_0x6673('0x14')]],'include':[{'model':_0x6673('0x4'),'as':_0x6673('0x5')},{'model':_0x6673('0x1f'),'as':_0x6673('0x26'),'attributes':['id','name',_0x6673('0x27')]}],'group':_0x6673('0x28'),'raw':!![]},'log':_0x6673('0x10')});};};
\ No newline at end of file
index 928a0f2..5f25800 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['Contact','phone','Request','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','GetCmHopperBlack','VoiceQueueId'];(function(_0x4c7410,_0x43bf77){var _0x2cf87d=function(_0x5f3db0){while(--_0x5f3db0){_0x4c7410['push'](_0x4c7410['shift']());}};_0x2cf87d(++_0x43bf77);}(_0x4483,0x1a3));var _0x3448=function(_0x4a3a54,_0x9aaf38){_0x4a3a54=_0x4a3a54-0x0;var _0x131789=_0x4483[_0x4a3a54];return _0x131789;};'use strict';var client=require(_0x3448('0x0'));exports[_0x3448('0x1')]=function(_0x229c0c){return function(){return client['Request'](_0x3448('0x2'),{'options':{'where':{'VoiceQueueId':_0x229c0c[_0x3448('0x3')],'phone':_0x229c0c[_0x3448('0x4')][_0x3448('0x5')]},'raw':![]},'log':_0x3448('0x2')});};};exports['checkIsBlackListIvr']=function(_0xeb5b8){return function(){return client[_0x3448('0x6')](_0x3448('0x2'),{'options':{'where':{'CampaignId':_0xeb5b8[_0x3448('0x7')],'phone':_0xeb5b8[_0x3448('0x4')][_0x3448('0x5')]},'raw':![]},'log':_0x3448('0x8')});};};
\ No newline at end of file
+var _0x1c7c=['phone','GetCmHopperBlack','checkIsBlackListIvr','CampaignId','Contact','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','VoiceQueueId'];(function(_0x11e05d,_0x3a4491){var _0x335588=function(_0x35ec3f){while(--_0x35ec3f){_0x11e05d['push'](_0x11e05d['shift']());}};_0x335588(++_0x3a4491);}(_0x1c7c,0x164));var _0xc1c7=function(_0x380275,_0x12b15a){_0x380275=_0x380275-0x0;var _0x371737=_0x1c7c[_0x380275];return _0x371737;};'use strict';var client=require(_0xc1c7('0x0'));exports[_0xc1c7('0x1')]=function(_0x38fc99){return function(){return client[_0xc1c7('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x38fc99[_0xc1c7('0x3')],'phone':_0x38fc99['Contact'][_0xc1c7('0x4')]},'raw':![]},'log':_0xc1c7('0x5')});};};exports[_0xc1c7('0x6')]=function(_0x2a0383){return function(){return client[_0xc1c7('0x2')](_0xc1c7('0x5'),{'options':{'where':{'CampaignId':_0x2a0383[_0xc1c7('0x7')],'phone':_0x2a0383[_0xc1c7('0x8')][_0xc1c7('0x4')]},'raw':![]},'log':_0xc1c7('0x9')});};};
\ No newline at end of file
index b0ed7fe..ceb92d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93f6=['queue','Request','CreateCmHopperFinal','campaign'];(function(_0x42a094,_0x2b8da0){var _0xfe98e6=function(_0x4131ce){while(--_0x4131ce){_0x42a094['push'](_0x42a094['shift']());}};_0xfe98e6(++_0x2b8da0);}(_0x93f6,0x1f3));var _0x693f=function(_0x39a259,_0xb4e7a9){_0x39a259=_0x39a259-0x0;var _0x515be6=_0x93f6[_0x39a259];return _0x515be6;};'use strict';var client=require('../client');exports['createContact']=function(_0x2b51dc){return function(){_0x2b51dc[_0x693f('0x0')]=_0x2b51dc[_0x693f('0x1')];return client[_0x693f('0x2')](_0x693f('0x3'),{'body':_0x2b51dc,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x94cb=['CreateCmHopperFinal','../client','campaign','queue'];(function(_0x21346e,_0x2b1aa8){var _0x59aaad=function(_0x114bf9){while(--_0x114bf9){_0x21346e['push'](_0x21346e['shift']());}};_0x59aaad(++_0x2b1aa8);}(_0x94cb,0x101));var _0xb94c=function(_0x5a5d81,_0x22dd7f){_0x5a5d81=_0x5a5d81-0x0;var _0x4a2548=_0x94cb[_0x5a5d81];return _0x4a2548;};'use strict';var client=require(_0xb94c('0x0'));exports['createContact']=function(_0x37b596){return function(){_0x37b596[_0xb94c('0x1')]=_0x37b596[_0xb94c('0x2')];return client['Request'](_0xb94c('0x3'),{'body':_0x37b596,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index 46675a4..99a203c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01aa=['avgHandleTime','Request','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','moment','campaign','queue','CreateCmHopperHistory'];(function(_0x294d3c,_0x4f573b){var _0x1db14d=function(_0x25337a){while(--_0x25337a){_0x294d3c['push'](_0x294d3c['shift']());}};_0x1db14d(++_0x4f573b);}(_0x01aa,0xa7));var _0xa01a=function(_0x3b32ff,_0x16b2b4){_0x3b32ff=_0x3b32ff-0x0;var _0x1f0f6f=_0x01aa[_0x3b32ff];return _0x1f0f6f;};'use strict';var client=require('../client');var moment=require(_0xa01a('0x0'));exports['createHistory']=function(_0x448b11){return function(){_0x448b11[_0xa01a('0x1')]=_0x448b11[_0xa01a('0x2')];return client['Request'](_0xa01a('0x3'),{'body':_0x448b11,'log':_0xa01a('0x3')});};};exports[_0xa01a('0x4')]=function(_0x25b7f9){return function(){return client[_0xa01a('0x5')](_0xa01a('0x6'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x25b7f9,_0xa01a('0x7'))[_0xa01a('0x8')](_0xa01a('0x9')),moment()[_0xa01a('0x8')](_0xa01a('0x9'))]}},'raw':![]},'log':_0xa01a('0xa')});};};exports[_0xa01a('0xb')]=function(_0x5a670f){return function(){return client[_0xa01a('0x5')](_0xa01a('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xa01a('0xd')](_0xa01a('0xe'))['format'](_0xa01a('0x9')),moment()[_0xa01a('0xf')](_0xa01a('0xe'))[_0xa01a('0x8')](_0xa01a('0x9'))]},'campaigntype':_0xa01a('0x2')},'raw':![]},'log':_0xa01a('0xc')});};};exports[_0xa01a('0x10')]=function(_0x163555){return function(){return client[_0xa01a('0x5')](_0xa01a('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xa01a('0xd')]('day')[_0xa01a('0x8')](_0xa01a('0x9')),moment()[_0xa01a('0xf')]('day')[_0xa01a('0x8')](_0xa01a('0x9'))]},'campaigntype':_0xa01a('0x12')},'raw':![]},'log':_0xa01a('0x11')});};};
\ No newline at end of file
+var _0xed4d=['startOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','queue','CreateCmHopperHistory','avgHandleTime','Request','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory'];(function(_0xb806a1,_0x2cf4f1){var _0x4aac03=function(_0x5cfe3a){while(--_0x5cfe3a){_0xb806a1['push'](_0xb806a1['shift']());}};_0x4aac03(++_0x2cf4f1);}(_0xed4d,0x1d9));var _0xded4=function(_0x3c87f2,_0x52039c){_0x3c87f2=_0x3c87f2-0x0;var _0x2540ff=_0xed4d[_0x3c87f2];return _0x2540ff;};'use strict';var client=require(_0xded4('0x0'));var moment=require(_0xded4('0x1'));exports[_0xded4('0x2')]=function(_0x59c9e6){return function(){_0x59c9e6[_0xded4('0x3')]=_0x59c9e6[_0xded4('0x4')];return client['Request'](_0xded4('0x5'),{'body':_0x59c9e6,'log':_0xded4('0x5')});};};exports[_0xded4('0x6')]=function(_0x2697ad){return function(){return client[_0xded4('0x7')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x2697ad,'minutes')[_0xded4('0x8')](_0xded4('0x9')),moment()['format'](_0xded4('0x9'))]}},'raw':![]},'log':_0xded4('0xa')});};};exports[_0xded4('0xb')]=function(_0x35950a){return function(){return client[_0xded4('0x7')](_0xded4('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xded4('0xd')](_0xded4('0xe'))[_0xded4('0x8')](_0xded4('0x9')),moment()['endOf']('day')['format'](_0xded4('0x9'))]},'campaigntype':_0xded4('0x4')},'raw':![]},'log':_0xded4('0xc')});};};exports[_0xded4('0xf')]=function(_0x2f8159){return function(){return client[_0xded4('0x7')](_0xded4('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xded4('0xe'))[_0xded4('0x8')](_0xded4('0x9')),moment()['endOf']('day')[_0xded4('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xded4('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index e256344..8d90d5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ace=['notify','NotifyFaxAccount','getFaxAccounts','Request','GetFaxAccount','description','ecm','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','active'];(function(_0x58a310,_0x139725){var _0x4c5599=function(_0x433d24){while(--_0x433d24){_0x58a310['push'](_0x58a310['shift']());}};_0x4c5599(++_0x139725);}(_0x2ace,0x17e));var _0xe2ac=function(_0x254744,_0x219e6b){_0x254744=_0x254744-0x0;var _0x2a6a96=_0x2ace[_0x254744];return _0x2a6a96;};'use strict';var client=require('../client');exports[_0xe2ac('0x0')]=function(){return function(){return client[_0xe2ac('0x1')](_0xe2ac('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xe2ac('0x3'),_0xe2ac('0x4'),'headerinfo',_0xe2ac('0x5'),_0xe2ac('0x6'),_0xe2ac('0x7'),_0xe2ac('0x8'),_0xe2ac('0x9'),_0xe2ac('0xa'),_0xe2ac('0xb'),_0xe2ac('0xc'),_0xe2ac('0xd'),_0xe2ac('0xe'),_0xe2ac('0xf')],'include':[{'model':_0xe2ac('0x10'),'as':_0xe2ac('0x10'),'attributes':['id','name','callerid',_0xe2ac('0x11')]}]},'log':'getFaxAccount'});};};exports[_0xe2ac('0x12')]=function(_0x36fbdf,_0x540a1e){return client[_0xe2ac('0x1')](_0xe2ac('0x13'),{'account':{'id':_0x36fbdf},'body':_0x540a1e,'log':_0xe2ac('0x13')});};
\ No newline at end of file
+var _0xd117=['maxrate','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk','callerid','active','notify','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0xd117,0x182));var _0x7d11=function(_0x420513,_0x30eae3){_0x420513=_0x420513-0x0;var _0x1b44ec=_0xd117[_0x420513];return _0x1b44ec;};'use strict';var client=require(_0x7d11('0x0'));exports[_0x7d11('0x1')]=function(){return function(){return client[_0x7d11('0x2')](_0x7d11('0x3'),{'options':{'raw':![],'attributes':['id',_0x7d11('0x4'),_0x7d11('0x5'),_0x7d11('0x6'),_0x7d11('0x7'),_0x7d11('0x8'),_0x7d11('0x9'),_0x7d11('0xa'),_0x7d11('0xb'),_0x7d11('0xc'),_0x7d11('0xd'),_0x7d11('0xe'),_0x7d11('0xf'),'TrunkId',_0x7d11('0x10'),_0x7d11('0x11')],'include':[{'model':_0x7d11('0x12'),'as':'Trunk','attributes':['id',_0x7d11('0x4'),_0x7d11('0x13'),_0x7d11('0x14')]}]},'log':'getFaxAccount'});};};exports[_0x7d11('0x15')]=function(_0x48b0f1,_0x58a6fd){return client[_0x7d11('0x2')]('NotifyFaxAccount',{'account':{'id':_0x48b0f1},'body':_0x58a6fd,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index af6e35c..f060444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4504=['UpdateFaxMessage','../client','update','Request'];(function(_0x3cc6fe,_0x53ddb1){var _0x4c5c6f=function(_0x240105){while(--_0x240105){_0x3cc6fe['push'](_0x3cc6fe['shift']());}};_0x4c5c6f(++_0x53ddb1);}(_0x4504,0xe5));var _0x4450=function(_0xe6fe89,_0x4775bd){_0xe6fe89=_0xe6fe89-0x0;var _0x2a5fe1=_0x4504[_0xe6fe89];return _0x2a5fe1;};'use strict';var client=require(_0x4450('0x0'));exports[_0x4450('0x1')]=function(_0x5a5e8c,_0x214af7){return client[_0x4450('0x2')]('UpdateFaxMessage',{'body':_0x214af7,'options':{'where':{'AttachmentId':_0x5a5e8c}},'log':_0x4450('0x3')});};
\ No newline at end of file
+var _0x011e=['Request','UpdateFaxMessage','../client','update'];(function(_0x25e2dd,_0x3b035d){var _0x2adc3a=function(_0x204033){while(--_0x204033){_0x25e2dd['push'](_0x25e2dd['shift']());}};_0x2adc3a(++_0x3b035d);}(_0x011e,0xce));var _0xe011=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x011e[_0x433a86];return _0x23000c;};'use strict';var client=require(_0xe011('0x0'));exports[_0xe011('0x1')]=function(_0x40ccbe,_0x9ffd3){return client[_0xe011('0x2')](_0xe011('0x3'),{'body':_0x9ffd3,'options':{'where':{'AttachmentId':_0x40ccbe}},'log':_0xe011('0x3')});};
\ No newline at end of file
index f21be8e..9850ba3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c0=['Subjects','content','variableName','Variable','Descriptions','keyType','keyContent','idField','nameField','Tag','Tags','../../client','getDeskAccounts','GetDeskAccount','name','description','username','password','remoteUri','authType','type','serverUrl','Configurations','DeskField'];(function(_0x2f5189,_0x189535){var _0x2f48f3=function(_0x36009d){while(--_0x36009d){_0x2f5189['push'](_0x2f5189['shift']());}};_0x2f48f3(++_0x189535);}(_0x32c0,0xe3));var _0x032c=function(_0x4d6db9,_0x2496a2){_0x4d6db9=_0x4d6db9-0x0;var _0x16e9d5=_0x32c0[_0x4d6db9];return _0x16e9d5;};'use strict';var client=require(_0x032c('0x0'));exports[_0x032c('0x1')]=function(){return function(_0x40e548){return client['Request'](_0x032c('0x2'),{'options':{'raw':![],'attributes':['id',_0x032c('0x3'),_0x032c('0x4'),_0x032c('0x5'),_0x032c('0x6'),_0x032c('0x7'),_0x032c('0x8'),_0x032c('0x9'),_0x032c('0xa')],'include':[{'model':'DeskConfiguration','as':_0x032c('0xb'),'attributes':['id',_0x032c('0x3')],'include':[{'model':_0x032c('0xc'),'as':_0x032c('0xd'),'attributes':['id',_0x032c('0x9'),_0x032c('0xe'),_0x032c('0xf')],'include':[{'model':_0x032c('0x10'),'as':_0x032c('0x10'),'attributes':['id',_0x032c('0x3')]}]},{'model':_0x032c('0xc'),'as':_0x032c('0x11'),'attributes':['id','type',_0x032c('0xe'),'key',_0x032c('0x12'),_0x032c('0x13'),_0x032c('0xf')],'include':[{'model':_0x032c('0x10'),'as':_0x032c('0x10'),'attributes':['id',_0x032c('0x3')]}]},{'model':_0x032c('0xc'),'as':'Fields','attributes':['id',_0x032c('0x9'),_0x032c('0xe'),_0x032c('0x14'),_0x032c('0x15'),'customField','variableName'],'include':[{'model':'Variable','as':_0x032c('0x10'),'attributes':['id',_0x032c('0x3')]}]},{'model':_0x032c('0x16'),'as':_0x032c('0x17'),'attributes':['id',_0x032c('0x3')]}]}]},'log':_0x032c('0x2')});};};
\ No newline at end of file
+var _0xc5dc=['Variable','key','keyType','idField','nameField','customField','Tag','Tags','GetDeskAccount','../../client','Request','name','description','username','remoteUri','authType','type','serverUrl','DeskField','Subjects','content','variableName'];(function(_0x4fd158,_0x408832){var _0x3ad020=function(_0xf624b6){while(--_0xf624b6){_0x4fd158['push'](_0x4fd158['shift']());}};_0x3ad020(++_0x408832);}(_0xc5dc,0x13d));var _0xcc5d=function(_0x324160,_0x535627){_0x324160=_0x324160-0x0;var _0xb18580=_0xc5dc[_0x324160];return _0xb18580;};'use strict';var client=require(_0xcc5d('0x0'));exports['getDeskAccounts']=function(){return function(_0x5e8c0d){return client[_0xcc5d('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0xcc5d('0x2'),_0xcc5d('0x3'),_0xcc5d('0x4'),'password',_0xcc5d('0x5'),_0xcc5d('0x6'),_0xcc5d('0x7'),_0xcc5d('0x8')],'include':[{'model':'DeskConfiguration','as':'Configurations','attributes':['id','name'],'include':[{'model':_0xcc5d('0x9'),'as':_0xcc5d('0xa'),'attributes':['id',_0xcc5d('0x7'),_0xcc5d('0xb'),_0xcc5d('0xc')],'include':[{'model':_0xcc5d('0xd'),'as':_0xcc5d('0xd'),'attributes':['id',_0xcc5d('0x2')]}]},{'model':_0xcc5d('0x9'),'as':'Descriptions','attributes':['id','type',_0xcc5d('0xb'),_0xcc5d('0xe'),_0xcc5d('0xf'),'keyContent',_0xcc5d('0xc')],'include':[{'model':'Variable','as':_0xcc5d('0xd'),'attributes':['id',_0xcc5d('0x2')]}]},{'model':_0xcc5d('0x9'),'as':'Fields','attributes':['id','type',_0xcc5d('0xb'),_0xcc5d('0x10'),_0xcc5d('0x11'),_0xcc5d('0x12'),_0xcc5d('0xc')],'include':[{'model':_0xcc5d('0xd'),'as':'Variable','attributes':['id',_0xcc5d('0x2')]}]},{'model':_0xcc5d('0x13'),'as':_0xcc5d('0x14'),'attributes':['id',_0xcc5d('0x2')]}]}]},'log':_0xcc5d('0x15')});};};
\ No newline at end of file
index 1dcc622..79e5bff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ea=['Fields','nameField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','username','remoteUri','clientId','clientSecret','description','Dynamics365Configuration','name','ticketType','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','Dynamics365Field'];(function(_0x288b04,_0x1ec33e){var _0x43a226=function(_0x3e5675){while(--_0x3e5675){_0x288b04['push'](_0x288b04['shift']());}};_0x43a226(++_0x1ec33e);}(_0x82ea,0xda));var _0xa82e=function(_0x12431f,_0x4be086){_0x12431f=_0x12431f-0x0;var _0x4ddd0a=_0x82ea[_0x12431f];return _0x4ddd0a;};'use strict';var client=require(_0xa82e('0x0'));exports[_0xa82e('0x1')]=function(){return function(_0xbc7b52){return client[_0xa82e('0x2')](_0xa82e('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xa82e('0x4'),'password',_0xa82e('0x5'),'tenantId',_0xa82e('0x6'),_0xa82e('0x7'),'serverUrl',_0xa82e('0x8')],'include':[{'model':_0xa82e('0x9'),'as':'Configurations','attributes':['id',_0xa82e('0xa'),_0xa82e('0xb')],'include':[{'model':'Dynamics365Field','as':_0xa82e('0xc'),'attributes':['id',_0xa82e('0xd'),'content',_0xa82e('0xe')],'include':[{'model':_0xa82e('0xf'),'as':'Variable','attributes':['id',_0xa82e('0xa')]}]},{'model':'Dynamics365Field','as':_0xa82e('0x10'),'attributes':['id','type',_0xa82e('0x11'),_0xa82e('0x12'),_0xa82e('0x13'),_0xa82e('0x14'),_0xa82e('0xe')],'include':[{'model':'Variable','as':_0xa82e('0xf'),'attributes':['id',_0xa82e('0xa')]}]},{'model':_0xa82e('0x15'),'as':_0xa82e('0x16'),'attributes':['id',_0xa82e('0xd'),_0xa82e('0x11'),'idField',_0xa82e('0x17'),'customField',_0xa82e('0xe')],'include':[{'model':_0xa82e('0xf'),'as':_0xa82e('0xf'),'attributes':['id',_0xa82e('0xa')]}]}]}]},'log':_0xa82e('0x3')});};};
\ No newline at end of file
+var _0x6c75=['serverUrl','description','Dynamics365Configuration','Subjects','type','content','variableName','Variable','key','keyContent','Dynamics365Field','Fields','idField','Request','GetDynamics365Account','name','username','password','tenantId','clientId'];(function(_0x54011c,_0x4bf36e){var _0x2826d9=function(_0x4bd810){while(--_0x4bd810){_0x54011c['push'](_0x54011c['shift']());}};_0x2826d9(++_0x4bf36e);}(_0x6c75,0x175));var _0x56c7=function(_0x27a9b6,_0x3ebdc8){_0x27a9b6=_0x27a9b6-0x0;var _0x55e28c=_0x6c75[_0x27a9b6];return _0x55e28c;};'use strict';var client=require('../../client');exports['getDynamics365Accounts']=function(){return function(_0x33e9ea){return client[_0x56c7('0x0')](_0x56c7('0x1'),{'options':{'raw':![],'attributes':['id',_0x56c7('0x2'),_0x56c7('0x3'),_0x56c7('0x4'),'remoteUri',_0x56c7('0x5'),_0x56c7('0x6'),'clientSecret',_0x56c7('0x7'),_0x56c7('0x8')],'include':[{'model':_0x56c7('0x9'),'as':'Configurations','attributes':['id',_0x56c7('0x2'),'ticketType'],'include':[{'model':'Dynamics365Field','as':_0x56c7('0xa'),'attributes':['id',_0x56c7('0xb'),_0x56c7('0xc'),_0x56c7('0xd')],'include':[{'model':'Variable','as':_0x56c7('0xe'),'attributes':['id',_0x56c7('0x2')]}]},{'model':'Dynamics365Field','as':'Descriptions','attributes':['id','type',_0x56c7('0xc'),_0x56c7('0xf'),'keyType',_0x56c7('0x10'),_0x56c7('0xd')],'include':[{'model':'Variable','as':_0x56c7('0xe'),'attributes':['id',_0x56c7('0x2')]}]},{'model':_0x56c7('0x11'),'as':_0x56c7('0x12'),'attributes':['id',_0x56c7('0xb'),_0x56c7('0xc'),_0x56c7('0x13'),'nameField','customField',_0x56c7('0xd')],'include':[{'model':_0x56c7('0xe'),'as':_0x56c7('0xe'),'attributes':['id','name']}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index d36cb29..7541c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3360=['serverUrl','FreshdeskConfiguration','Configurations','FreshdeskField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields','nameField','customField','../../client','getFreshdeskAccounts','name','remoteUri'];(function(_0x5c9f56,_0x42c9ad){var _0x2a726b=function(_0x4a13cd){while(--_0x4a13cd){_0x5c9f56['push'](_0x5c9f56['shift']());}};_0x2a726b(++_0x42c9ad);}(_0x3360,0x1d7));var _0x0336=function(_0xaef7df,_0x3d62ce){_0xaef7df=_0xaef7df-0x0;var _0x27dabc=_0x3360[_0xaef7df];return _0x27dabc;};'use strict';var client=require(_0x0336('0x0'));exports[_0x0336('0x1')]=function(){return function(_0x4f2539){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x0336('0x2'),'username','apiKey',_0x0336('0x3'),_0x0336('0x4')],'include':[{'model':_0x0336('0x5'),'as':_0x0336('0x6'),'attributes':['id',_0x0336('0x2')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x0336('0x7'),'as':_0x0336('0x8'),'attributes':['id',_0x0336('0x9'),_0x0336('0xa'),_0x0336('0xb')],'include':[{'model':'Variable','as':_0x0336('0xc'),'attributes':['id',_0x0336('0x2')]}]},{'model':_0x0336('0x7'),'as':'Descriptions','attributes':['id',_0x0336('0x9'),'content',_0x0336('0xd'),_0x0336('0xe'),_0x0336('0xf'),_0x0336('0xb')],'include':[{'model':_0x0336('0xc'),'as':'Variable','attributes':['id',_0x0336('0x2')]}]},{'model':_0x0336('0x7'),'as':_0x0336('0x10'),'attributes':['id',_0x0336('0x9'),_0x0336('0xa'),'idField',_0x0336('0x11'),_0x0336('0x12'),_0x0336('0xb')],'include':[{'model':_0x0336('0xc'),'as':'Variable','attributes':['id',_0x0336('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0x1339=['type','content','variableName','Variable','Descriptions','key','keyType','keyContent','nameField','customField','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','Subjects'];(function(_0x129d1f,_0x67d264){var _0x1fde6e=function(_0x22eae8){while(--_0x22eae8){_0x129d1f['push'](_0x129d1f['shift']());}};_0x1fde6e(++_0x67d264);}(_0x1339,0x1ed));var _0x9133=function(_0x3c3e56,_0x346f86){_0x3c3e56=_0x3c3e56-0x0;var _0x34499f=_0x1339[_0x3c3e56];return _0x34499f;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x352a8d){return client[_0x9133('0x0')](_0x9133('0x1'),{'options':{'raw':![],'attributes':['id',_0x9133('0x2'),_0x9133('0x3'),_0x9133('0x4'),_0x9133('0x5'),_0x9133('0x6')],'include':[{'model':'FreshdeskConfiguration','as':_0x9133('0x7'),'attributes':['id',_0x9133('0x2')],'include':[{'model':_0x9133('0x8'),'attributes':['id','name']},{'model':_0x9133('0x9'),'as':_0x9133('0xa'),'attributes':['id',_0x9133('0xb'),_0x9133('0xc'),_0x9133('0xd')],'include':[{'model':_0x9133('0xe'),'as':_0x9133('0xe'),'attributes':['id',_0x9133('0x2')]}]},{'model':_0x9133('0x9'),'as':_0x9133('0xf'),'attributes':['id','type',_0x9133('0xc'),_0x9133('0x10'),_0x9133('0x11'),_0x9133('0x12'),_0x9133('0xd')],'include':[{'model':_0x9133('0xe'),'as':'Variable','attributes':['id',_0x9133('0x2')]}]},{'model':_0x9133('0x9'),'as':'Fields','attributes':['id','type',_0x9133('0xc'),'idField',_0x9133('0x13'),_0x9133('0x14'),_0x9133('0xd')],'include':[{'model':_0x9133('0xe'),'as':_0x9133('0xe'),'attributes':['id',_0x9133('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index c112295..b65049e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['Variable','Descriptions','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','Request','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName'];(function(_0x43297d,_0x54d14e){var _0x466070=function(_0x4d2f3f){while(--_0x4d2f3f){_0x43297d['push'](_0x43297d['shift']());}};_0x466070(++_0x54d14e);}(_0x71ab,0x64));var _0xb71a=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x71ab[_0x465028];return _0xb783d4;};'use strict';var client=require('../../client');exports[_0xb71a('0x0')]=function(){return function(_0x4d5607){return client[_0xb71a('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0xb71a('0x2'),_0xb71a('0x3'),_0xb71a('0x4'),_0xb71a('0x5'),_0xb71a('0x6')],'include':[{'model':_0xb71a('0x7'),'as':_0xb71a('0x8'),'attributes':['id',_0xb71a('0x2')],'include':[{'model':_0xb71a('0x9'),'as':_0xb71a('0xa'),'attributes':['id',_0xb71a('0xb'),_0xb71a('0xc'),_0xb71a('0xd')],'include':[{'model':_0xb71a('0xe'),'as':_0xb71a('0xe'),'attributes':['id',_0xb71a('0x2')]}]},{'model':_0xb71a('0x9'),'as':_0xb71a('0xf'),'attributes':['id','type',_0xb71a('0xc'),'key',_0xb71a('0x10'),_0xb71a('0x11'),_0xb71a('0xd')],'include':[{'model':'Variable','as':_0xb71a('0xe'),'attributes':['id','name']}]}]}]},'log':_0xb71a('0x12')});};};
\ No newline at end of file
+var _0x8375=['name','username','apiKey','remoteUri','serverUrl','Configurations','FreshsalesField','Subjects','type','Variable','content','key','keyType','keyContent','variableName','GetFreshsalesccount','../../client','getFreshsalesAccounts','GetFreshsalesAccount'];(function(_0x2369de,_0x396566){var _0x10ced3=function(_0xd8dd4d){while(--_0xd8dd4d){_0x2369de['push'](_0x2369de['shift']());}};_0x10ced3(++_0x396566);}(_0x8375,0xa8));var _0x5837=function(_0x43fd50,_0x52e381){_0x43fd50=_0x43fd50-0x0;var _0x5432ec=_0x8375[_0x43fd50];return _0x5432ec;};'use strict';var client=require(_0x5837('0x0'));exports[_0x5837('0x1')]=function(){return function(_0xe2a8d5){return client['Request'](_0x5837('0x2'),{'options':{'raw':![],'attributes':['id',_0x5837('0x3'),_0x5837('0x4'),_0x5837('0x5'),_0x5837('0x6'),_0x5837('0x7')],'include':[{'model':'FreshsalesConfiguration','as':_0x5837('0x8'),'attributes':['id',_0x5837('0x3')],'include':[{'model':_0x5837('0x9'),'as':_0x5837('0xa'),'attributes':['id',_0x5837('0xb'),'content','variableName'],'include':[{'model':_0x5837('0xc'),'as':_0x5837('0xc'),'attributes':['id','name']}]},{'model':_0x5837('0x9'),'as':'Descriptions','attributes':['id',_0x5837('0xb'),_0x5837('0xd'),_0x5837('0xe'),_0x5837('0xf'),_0x5837('0x10'),_0x5837('0x11')],'include':[{'model':'Variable','as':_0x5837('0xc'),'attributes':['id',_0x5837('0x3')]}]}]}]},'log':_0x5837('0x12')});};};
\ No newline at end of file
index 92b10c4..81e82e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1956=['Subjects','Variable','Descriptions','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','SalesforceField'];(function(_0x420d8d,_0x78b67f){var _0x4865d7=function(_0x2965df){while(--_0x2965df){_0x420d8d['push'](_0x420d8d['shift']());}};_0x4865d7(++_0x78b67f);}(_0x1956,0x15c));var _0x6195=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0x1956[_0x50007c];return _0x5c1ec7;};'use strict';var client=require(_0x6195('0x0'));exports[_0x6195('0x1')]=function(){return function(_0x2c897b){return client[_0x6195('0x2')](_0x6195('0x3'),{'options':{'raw':![],'attributes':['id',_0x6195('0x4'),_0x6195('0x5'),'password',_0x6195('0x6'),_0x6195('0x7'),_0x6195('0x8'),_0x6195('0x9'),_0x6195('0xa'),_0x6195('0xb')],'include':[{'model':_0x6195('0xc'),'as':_0x6195('0xd'),'attributes':['id',_0x6195('0x4'),'moduleSearch',_0x6195('0xe'),_0x6195('0xf'),_0x6195('0x10'),_0x6195('0x11'),_0x6195('0x12'),'additionalSearchLead'],'include':[{'model':_0x6195('0x13'),'as':_0x6195('0x14'),'include':[{'model':'Variable','as':_0x6195('0x15'),'attributes':['id',_0x6195('0x4')]}]},{'model':_0x6195('0x13'),'as':_0x6195('0x16'),'include':[{'model':_0x6195('0x15'),'as':_0x6195('0x15'),'attributes':['id',_0x6195('0x4')]}]},{'model':_0x6195('0x13'),'as':'Fields','include':[{'model':_0x6195('0x15'),'as':_0x6195('0x15'),'attributes':['id','name']}]}]}]},'log':_0x6195('0x3')});};};
\ No newline at end of file
+var _0x0137=['clientSecret','securityToken','type','SalesforceConfiguration','name','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','password','remoteUri','clientId'];(function(_0x1e400b,_0x3a7a30){var _0x1ff684=function(_0x32739e){while(--_0x32739e){_0x1e400b['push'](_0x1e400b['shift']());}};_0x1ff684(++_0x3a7a30);}(_0x0137,0x1d8));var _0x7013=function(_0x11fa4b,_0x2e0ec1){_0x11fa4b=_0x11fa4b-0x0;var _0x122a99=_0x0137[_0x11fa4b];return _0x122a99;};'use strict';var client=require(_0x7013('0x0'));exports[_0x7013('0x1')]=function(){return function(_0x31faa5){return client[_0x7013('0x2')](_0x7013('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x7013('0x4'),_0x7013('0x5'),_0x7013('0x6'),_0x7013('0x7'),_0x7013('0x8'),_0x7013('0x9'),'serverUrl',_0x7013('0xa')],'include':[{'model':_0x7013('0xb'),'as':'Configurations','attributes':['id',_0x7013('0xc'),_0x7013('0xd'),_0x7013('0xe'),'ticketType',_0x7013('0xf'),_0x7013('0x10'),_0x7013('0x11'),_0x7013('0x12')],'include':[{'model':'SalesforceField','as':_0x7013('0x13'),'include':[{'model':_0x7013('0x14'),'as':_0x7013('0x14'),'attributes':['id',_0x7013('0xc')]}]},{'model':_0x7013('0x15'),'as':_0x7013('0x16'),'include':[{'model':'Variable','as':_0x7013('0x14'),'attributes':['id',_0x7013('0xc')]}]},{'model':_0x7013('0x15'),'as':_0x7013('0x17'),'include':[{'model':_0x7013('0x14'),'as':_0x7013('0x14'),'attributes':['id',_0x7013('0xc')]}]}]}]},'log':_0x7013('0x3')});};};
\ No newline at end of file
index 55c1cde..370262d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['keyContent','Fields','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','email','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType'];(function(_0x5c36c8,_0x25c6d7){var _0x2855a5=function(_0x2778b7){while(--_0x2778b7){_0x5c36c8['push'](_0x5c36c8['shift']());}};_0x2855a5(++_0x25c6d7);}(_0xadb5,0xad));var _0x5adb=function(_0x17890c,_0x4e6187){_0x17890c=_0x17890c-0x0;var _0x234dda=_0xadb5[_0x17890c];return _0x234dda;};'use strict';var client=require('../../client');exports[_0x5adb('0x0')]=function(){return function(_0x49fc17){return client[_0x5adb('0x1')](_0x5adb('0x2'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x3'),'description',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'remoteUri',_0x5adb('0x7')],'include':[{'model':_0x5adb('0x8'),'as':_0x5adb('0x9'),'attributes':['id',_0x5adb('0x3')],'include':[{'model':_0x5adb('0xa'),'as':_0x5adb('0xb'),'attributes':['id',_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe')],'include':[{'model':_0x5adb('0xf'),'as':_0x5adb('0xf'),'attributes':['id',_0x5adb('0x3')]}]},{'model':_0x5adb('0xa'),'as':_0x5adb('0x10'),'attributes':['id','type','content',_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),'variableName'],'include':[{'model':_0x5adb('0xf'),'as':'Variable','attributes':['id',_0x5adb('0x3')]}]},{'model':'ServicenowField','as':_0x5adb('0x14'),'attributes':['id',_0x5adb('0xc'),_0x5adb('0xd'),'idField',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0xe')],'include':[{'model':'Variable','as':_0x5adb('0xf'),'attributes':['id','name']}]}]}]},'log':_0x5adb('0x17')});};};
\ No newline at end of file
+var _0x1967=['description','username','password','email','remoteUri','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','variableName','Variable','content','key','keyType','keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request','GetServicenowAccount','name'];(function(_0x1fe64b,_0x4c4563){var _0x440f7b=function(_0x2f9f5e){while(--_0x2f9f5e){_0x1fe64b['push'](_0x1fe64b['shift']());}};_0x440f7b(++_0x4c4563);}(_0x1967,0x173));var _0x7196=function(_0xce7849,_0x3deba6){_0xce7849=_0xce7849-0x0;var _0x4367fe=_0x1967[_0xce7849];return _0x4367fe;};'use strict';var client=require('../../client');exports[_0x7196('0x0')]=function(){return function(_0xdb72bb){return client[_0x7196('0x1')](_0x7196('0x2'),{'options':{'raw':![],'attributes':['id',_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7'),_0x7196('0x8'),'serverUrl'],'include':[{'model':_0x7196('0x9'),'as':_0x7196('0xa'),'attributes':['id',_0x7196('0x3')],'include':[{'model':_0x7196('0xb'),'as':_0x7196('0xc'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':'Descriptions','attributes':['id','type',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0x12'),_0x7196('0x13'),_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':_0x7196('0x14'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0x15'),_0x7196('0x16'),_0x7196('0x17'),_0x7196('0xe')],'include':[{'model':'Variable','as':_0x7196('0xf'),'attributes':['id','name']}]}]}]},'log':_0x7196('0x18')});};};
\ No newline at end of file
index d2279e4..b33888f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['serverUrl','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','name','Fields','idField','nameField','Request','GetSugarcrmAccount','password','remoteUri'];(function(_0x380447,_0x10a72){var _0xbbba8d=function(_0x2feeca){while(--_0x2feeca){_0x380447['push'](_0x380447['shift']());}};_0xbbba8d(++_0x10a72);}(_0x1a85,0x178));var _0x51a8=function(_0x4057f9,_0x17c5b5){_0x4057f9=_0x4057f9-0x0;var _0x5552b7=_0x1a85[_0x4057f9];return _0x5552b7;};'use strict';var client=require('../../client');exports['getSugarcrmAccounts']=function(){return function(_0x305f18){return client[_0x51a8('0x0')](_0x51a8('0x1'),{'options':{'raw':![],'attributes':['id','name','username',_0x51a8('0x2'),_0x51a8('0x3'),_0x51a8('0x4')],'include':[{'model':'SugarcrmConfiguration','as':_0x51a8('0x5'),'attributes':['id','name'],'include':[{'model':_0x51a8('0x6'),'as':'Subjects','attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),'variableName'],'include':[{'model':_0x51a8('0x9'),'as':'Variable','attributes':['id','name']}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0xa'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0xb'),_0x51a8('0xc'),_0x51a8('0xd'),_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id',_0x51a8('0xf')]}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0x10'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0x11'),_0x51a8('0x12'),'customField',_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id','name']}]}]}]},'log':_0x51a8('0x1')});};};
\ No newline at end of file
+var _0x5f2f=['username','password','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','variableName','Variable','Descriptions','key','Fields','content','idField','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5f2f,0x73));var _0xf5f2=function(_0x357b59,_0x2916c4){_0x357b59=_0x357b59-0x0;var _0x25d5d8=_0x5f2f[_0x357b59];return _0x25d5d8;};'use strict';var client=require(_0xf5f2('0x0'));exports[_0xf5f2('0x1')]=function(){return function(_0x2dcf60){return client[_0xf5f2('0x2')](_0xf5f2('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0xf5f2('0x7'),'as':_0xf5f2('0x8'),'attributes':['id',_0xf5f2('0x4')],'include':[{'model':_0xf5f2('0x9'),'as':_0xf5f2('0xa'),'attributes':['id',_0xf5f2('0xb'),'content',_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':_0xf5f2('0xd'),'attributes':['id','name']}]},{'model':_0xf5f2('0x9'),'as':_0xf5f2('0xe'),'attributes':['id',_0xf5f2('0xb'),'content',_0xf5f2('0xf'),'keyType','keyContent',_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':'Variable','attributes':['id',_0xf5f2('0x4')]}]},{'model':_0xf5f2('0x9'),'as':_0xf5f2('0x10'),'attributes':['id',_0xf5f2('0xb'),_0xf5f2('0x11'),_0xf5f2('0x12'),'nameField',_0xf5f2('0x13'),_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':_0xf5f2('0xd'),'attributes':['id',_0xf5f2('0x4')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
index b4071e1..3574503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4092=['Subjects','type','content','Variable','VtigerField','Descriptions','key','keyType','variableName','Fields','idField','nameField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','serverUrl','VtigerConfiguration','Configurations'];(function(_0x49a77c,_0x25ae63){var _0x34757b=function(_0x4dc88a){while(--_0x4dc88a){_0x49a77c['push'](_0x49a77c['shift']());}};_0x34757b(++_0x25ae63);}(_0x4092,0x64));var _0x2409=function(_0x38e870,_0x3d2e6a){_0x38e870=_0x38e870-0x0;var _0x2dabbe=_0x4092[_0x38e870];return _0x2dabbe;};'use strict';var client=require(_0x2409('0x0'));exports[_0x2409('0x1')]=function(){return function(_0x157337){return client[_0x2409('0x2')](_0x2409('0x3'),{'options':{'raw':![],'attributes':['id',_0x2409('0x4'),_0x2409('0x5'),'username',_0x2409('0x6'),'remoteUri',_0x2409('0x7')],'include':[{'model':_0x2409('0x8'),'as':_0x2409('0x9'),'attributes':['id',_0x2409('0x4')],'include':[{'model':'VtigerField','as':_0x2409('0xa'),'attributes':['id',_0x2409('0xb'),_0x2409('0xc'),'variableName'],'include':[{'model':_0x2409('0xd'),'as':'Variable','attributes':['id',_0x2409('0x4')]}]},{'model':_0x2409('0xe'),'as':_0x2409('0xf'),'attributes':['id',_0x2409('0xb'),_0x2409('0xc'),_0x2409('0x10'),_0x2409('0x11'),'keyContent',_0x2409('0x12')],'include':[{'model':_0x2409('0xd'),'as':_0x2409('0xd'),'attributes':['id',_0x2409('0x4')]}]},{'model':_0x2409('0xe'),'as':_0x2409('0x13'),'attributes':['id',_0x2409('0xb'),_0x2409('0xc'),_0x2409('0x14'),_0x2409('0x15'),'customField',_0x2409('0x12')],'include':[{'model':_0x2409('0xd'),'as':_0x2409('0xd'),'attributes':['id','name']}]}]}]},'log':_0x2409('0x3')});};};
\ No newline at end of file
+var _0x49f7=['serverUrl','Configurations','VtigerField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','type','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','remoteUri'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0x49f7,0xd0));var _0x749f=function(_0x5bdad3,_0x697013){_0x5bdad3=_0x5bdad3-0x0;var _0x8b604a=_0x49f7[_0x5bdad3];return _0x8b604a;};'use strict';var client=require(_0x749f('0x0'));exports[_0x749f('0x1')]=function(){return function(_0x160d48){return client[_0x749f('0x2')](_0x749f('0x3'),{'options':{'raw':![],'attributes':['id',_0x749f('0x4'),_0x749f('0x5'),'username',_0x749f('0x6'),_0x749f('0x7'),_0x749f('0x8')],'include':[{'model':'VtigerConfiguration','as':_0x749f('0x9'),'attributes':['id',_0x749f('0x4')],'include':[{'model':_0x749f('0xa'),'as':_0x749f('0xb'),'attributes':['id','type',_0x749f('0xc'),_0x749f('0xd')],'include':[{'model':'Variable','as':_0x749f('0xe'),'attributes':['id',_0x749f('0x4')]}]},{'model':_0x749f('0xa'),'as':_0x749f('0xf'),'attributes':['id','type','content',_0x749f('0x10'),_0x749f('0x11'),_0x749f('0x12'),_0x749f('0xd')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x749f('0x4')]}]},{'model':_0x749f('0xa'),'as':_0x749f('0x13'),'attributes':['id',_0x749f('0x14'),'content',_0x749f('0x15'),_0x749f('0x16'),_0x749f('0x17'),_0x749f('0xd')],'include':[{'model':_0x749f('0xe'),'as':'Variable','attributes':['id',_0x749f('0x4')]}]}]}]},'log':_0x749f('0x3')});};};
\ No newline at end of file
index 2582591..48988d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e14=['remoteUri','authType','type','ZendeskConfiguration','Configurations','Tag','Subjects','variableName','Variable','ZendeskField','content','key','keyType','keyContent','idField','customField','../../client','getZendeskAccounts','GetZendeskAccount','name','username','password','token'];(function(_0x344ad7,_0x45be5b){var _0x1d5d2d=function(_0x26881c){while(--_0x26881c){_0x344ad7['push'](_0x344ad7['shift']());}};_0x1d5d2d(++_0x45be5b);}(_0x2e14,0x83));var _0x42e1=function(_0x4c4d07,_0x48512b){_0x4c4d07=_0x4c4d07-0x0;var _0x278851=_0x2e14[_0x4c4d07];return _0x278851;};'use strict';var client=require(_0x42e1('0x0'));exports[_0x42e1('0x1')]=function(){return function(_0x58a1d7){return client['Request'](_0x42e1('0x2'),{'options':{'raw':![],'attributes':['id',_0x42e1('0x3'),_0x42e1('0x4'),_0x42e1('0x5'),_0x42e1('0x6'),_0x42e1('0x7'),_0x42e1('0x8'),'serverUrl',_0x42e1('0x9')],'include':[{'model':_0x42e1('0xa'),'as':_0x42e1('0xb'),'attributes':['id',_0x42e1('0x3')],'include':[{'model':_0x42e1('0xc'),'attributes':['id','name']},{'model':'ZendeskField','as':_0x42e1('0xd'),'attributes':['id','type','content',_0x42e1('0xe')],'include':[{'model':_0x42e1('0xf'),'as':'Variable','attributes':['id',_0x42e1('0x3')]}]},{'model':_0x42e1('0x10'),'as':'Descriptions','attributes':['id',_0x42e1('0x9'),_0x42e1('0x11'),_0x42e1('0x12'),_0x42e1('0x13'),_0x42e1('0x14'),_0x42e1('0xe')],'include':[{'model':_0x42e1('0xf'),'as':_0x42e1('0xf'),'attributes':['id',_0x42e1('0x3')]}]},{'model':'ZendeskField','as':'Fields','attributes':['id',_0x42e1('0x9'),_0x42e1('0x11'),_0x42e1('0x15'),'nameField',_0x42e1('0x16'),_0x42e1('0xe')],'include':[{'model':'Variable','as':_0x42e1('0xf'),'attributes':['id',_0x42e1('0x3')]}]}]}]},'log':_0x42e1('0x2')});};};
\ No newline at end of file
+var _0x8a5a=['key','keyType','keyContent','ZendeskField','Fields','idField','nameField','../../client','getZendeskAccounts','name','username','password','remoteUri','authType','type','ZendeskConfiguration','Configurations','Tag','content','variableName','Variable'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8a5a,0xaf));var _0xa8a5=function(_0x8f42d9,_0x2c6a77){_0x8f42d9=_0x8f42d9-0x0;var _0x4ace72=_0x8a5a[_0x8f42d9];return _0x4ace72;};'use strict';var client=require(_0xa8a5('0x0'));exports[_0xa8a5('0x1')]=function(){return function(_0x3b7973){return client['Request']('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0xa8a5('0x2'),_0xa8a5('0x3'),_0xa8a5('0x4'),'token',_0xa8a5('0x5'),_0xa8a5('0x6'),'serverUrl',_0xa8a5('0x7')],'include':[{'model':_0xa8a5('0x8'),'as':_0xa8a5('0x9'),'attributes':['id',_0xa8a5('0x2')],'include':[{'model':_0xa8a5('0xa'),'attributes':['id',_0xa8a5('0x2')]},{'model':'ZendeskField','as':'Subjects','attributes':['id',_0xa8a5('0x7'),_0xa8a5('0xb'),_0xa8a5('0xc')],'include':[{'model':_0xa8a5('0xd'),'as':_0xa8a5('0xd'),'attributes':['id','name']}]},{'model':'ZendeskField','as':'Descriptions','attributes':['id','type','content',_0xa8a5('0xe'),_0xa8a5('0xf'),_0xa8a5('0x10'),'variableName'],'include':[{'model':'Variable','as':_0xa8a5('0xd'),'attributes':['id','name']}]},{'model':_0xa8a5('0x11'),'as':_0xa8a5('0x12'),'attributes':['id',_0xa8a5('0x7'),_0xa8a5('0xb'),_0xa8a5('0x13'),_0xa8a5('0x14'),'customField',_0xa8a5('0xc')],'include':[{'model':'Variable','as':_0xa8a5('0xd'),'attributes':['id',_0xa8a5('0x2')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index 5235d23..53cbd7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a70=['refreshToken','ZohoConfiguration','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields','idField','../../client','getZohoAccounts','Request','name','host','zone','clientId','clientSecret','serverUrl'];(function(_0x18eeea,_0x95700c){var _0x1e1f60=function(_0x184955){while(--_0x184955){_0x18eeea['push'](_0x18eeea['shift']());}};_0x1e1f60(++_0x95700c);}(_0x5a70,0x1ef));var _0x05a7=function(_0x202c61,_0x3673e0){_0x202c61=_0x202c61-0x0;var _0x540691=_0x5a70[_0x202c61];return _0x540691;};'use strict';var client=require(_0x05a7('0x0'));exports[_0x05a7('0x1')]=function(){return function(_0x3dc4db){return client[_0x05a7('0x2')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0x05a7('0x3'),'description',_0x05a7('0x4'),_0x05a7('0x5'),_0x05a7('0x6'),_0x05a7('0x7'),_0x05a7('0x8'),'code',_0x05a7('0x9')],'include':[{'model':_0x05a7('0xa'),'as':'Configurations','attributes':['id',_0x05a7('0x3'),_0x05a7('0xb'),_0x05a7('0xc'),'description'],'include':[{'model':_0x05a7('0xd'),'as':_0x05a7('0xe'),'attributes':['id',_0x05a7('0xf'),_0x05a7('0x10'),_0x05a7('0x11')],'include':[{'model':_0x05a7('0x12'),'as':'Variable','attributes':['id','name']}]},{'model':_0x05a7('0xd'),'as':'Descriptions','attributes':['id','type',_0x05a7('0x10'),_0x05a7('0x13'),_0x05a7('0x14'),_0x05a7('0x15'),'variableName'],'include':[{'model':'Variable','as':_0x05a7('0x12'),'attributes':['id','name']}]},{'model':_0x05a7('0xd'),'as':_0x05a7('0x16'),'attributes':['id',_0x05a7('0xf'),_0x05a7('0x10'),_0x05a7('0x17'),'nameField','customField','variableName'],'include':[{'model':_0x05a7('0x12'),'as':_0x05a7('0x12'),'attributes':['id',_0x05a7('0x3')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0x889b=['Configurations','moduleSearch','Subjects','type','content','variableName','Variable','ZohoField','Descriptions','Fields','idField','customField','GetZohoAccount','getZohoAccounts','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration'];(function(_0x4df1ef,_0x4b3302){var _0x372490=function(_0x284b33){while(--_0x284b33){_0x4df1ef['push'](_0x4df1ef['shift']());}};_0x372490(++_0x4b3302);}(_0x889b,0x1a5));var _0xb889=function(_0xe4db28,_0x4b59c6){_0xe4db28=_0xe4db28-0x0;var _0x49a32f=_0x889b[_0xe4db28];return _0x49a32f;};'use strict';var client=require('../../client');exports[_0xb889('0x0')]=function(){return function(_0x126867){return client['Request']('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xb889('0x1'),_0xb889('0x2'),_0xb889('0x3'),_0xb889('0x4'),_0xb889('0x5'),_0xb889('0x6'),_0xb889('0x7'),_0xb889('0x8'),_0xb889('0x9')],'include':[{'model':_0xb889('0xa'),'as':_0xb889('0xb'),'attributes':['id','name','moduleCreate',_0xb889('0xc'),_0xb889('0x2')],'include':[{'model':'ZohoField','as':_0xb889('0xd'),'attributes':['id',_0xb889('0xe'),_0xb889('0xf'),_0xb889('0x10')],'include':[{'model':_0xb889('0x11'),'as':_0xb889('0x11'),'attributes':['id',_0xb889('0x1')]}]},{'model':_0xb889('0x12'),'as':_0xb889('0x13'),'attributes':['id','type',_0xb889('0xf'),'key','keyType','keyContent',_0xb889('0x10')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb889('0x1')]}]},{'model':_0xb889('0x12'),'as':_0xb889('0x14'),'attributes':['id','type',_0xb889('0xf'),_0xb889('0x15'),'nameField',_0xb889('0x16'),'variableName'],'include':[{'model':'Variable','as':_0xb889('0x11'),'attributes':['id',_0xb889('0x1')]}]}]}]},'log':_0xb889('0x17')});};};
\ No newline at end of file
index 55553d3..90d801b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7022=['starttime','endtime','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','interface','format','SIP/%s','diff','seconds','inbound','calleridnum','exten','queue','agent','accountcode','uniqueid','voiceDialReport','voice','membername'];(function(_0x23ca4d,_0x5c2a32){var _0x435432=function(_0xe1a5e5){while(--_0xe1a5e5){_0x23ca4d['push'](_0x23ca4d['shift']());}};_0x435432(++_0x5c2a32);}(_0x7022,0x18b));var _0x2702=function(_0x14d22c,_0x26e920){_0x14d22c=_0x14d22c-0x0;var _0x41862c=_0x7022[_0x14d22c];return _0x41862c;};'use strict';var moment=require(_0x2702('0x0'));var _=require(_0x2702('0x1'));var util=require(_0x2702('0x2'));var client=require(_0x2702('0x3'));exports[_0x2702('0x4')]=function(_0x575a59){var _0x462396=_0x575a59[_0x2702('0x5')]||_0x575a59[_0x2702('0x6')];return client[_0x2702('0x7')](_0x2702('0x8'),{'body':{'channel':'voice','membername':_0x575a59[_0x2702('0x9')],'interface':_['isNil'](_0x575a59[_0x2702('0xa')])?util[_0x2702('0xb')](_0x2702('0xc'),_0x575a59[_0x2702('0x9')]):_0x575a59[_0x2702('0xa')],'type':'TALKING','enterAt':_0x575a59['queuecallerleaveAt'],'exitAt':_0x462396,'duration':moment(_0x462396)[_0x2702('0xd')](_0x575a59['queuecallerleaveAt'],_0x2702('0xe')),'data1':_0x2702('0xf'),'data2':_0x575a59[_0x2702('0x10')],'data3':_0x575a59[_0x2702('0x11')],'data4':null,'data5':_0x575a59[_0x2702('0x12')],'role':_0x2702('0x13'),'internal':_0x575a59['accountcode']?_['toNumber'](_0x575a59[_0x2702('0x14')]):undefined,'uniqueid':_0x575a59[_0x2702('0x15')]},'log':'CreateMemberReport'});};exports[_0x2702('0x16')]=function(_0xe68448){return client['Request'](_0x2702('0x8'),{'body':{'channel':_0x2702('0x17'),'membername':_0xe68448[_0x2702('0x18')],'interface':_0xe68448['interface'],'type':'TALKING','enterAt':_0xe68448[_0x2702('0x19')],'exitAt':_0xe68448[_0x2702('0x1a')],'duration':moment(_0xe68448['endtime'])['diff'](_0xe68448[_0x2702('0x19')],_0x2702('0xe'))>=0x0?moment(_0xe68448[_0x2702('0x1a')])[_0x2702('0xd')](_0xe68448[_0x2702('0x19')],_0x2702('0xe')):null,'data1':'outbound','data2':_0xe68448[_0x2702('0x14')],'data3':_0xe68448[_0x2702('0x11')],'data4':_0xe68448[_0x2702('0x1b')]||null,'role':_0x2702('0x13'),'internal':_0xe68448[_0x2702('0x14')]?_['toNumber'](_0xe68448['accountcode']):undefined,'uniqueid':_0xe68448[_0x2702('0x15')]},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x83b9=['accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','seconds','outbound','dialstring','agent','lodash','../client','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','inbound','calleridnum','exten','queue'];(function(_0x3d5a85,_0xe82e44){var _0x403a6f=function(_0xc1b0e8){while(--_0xc1b0e8){_0x3d5a85['push'](_0x3d5a85['shift']());}};_0x403a6f(++_0xe82e44);}(_0x83b9,0x1bb));var _0x983b=function(_0x34b0d3,_0x55b139){_0x34b0d3=_0x34b0d3-0x0;var _0x37c298=_0x83b9[_0x34b0d3];return _0x37c298;};'use strict';var moment=require('moment');var _=require(_0x983b('0x0'));var util=require('util');var client=require(_0x983b('0x1'));exports['voiceQueueReport']=function(_0x5063d3){var _0x4de18b=_0x5063d3['queuecallercompleteAt']||_0x5063d3[_0x983b('0x2')];return client[_0x983b('0x3')](_0x983b('0x4'),{'body':{'channel':'voice','membername':_0x5063d3[_0x983b('0x5')],'interface':_[_0x983b('0x6')](_0x5063d3[_0x983b('0x7')])?util[_0x983b('0x8')](_0x983b('0x9'),_0x5063d3[_0x983b('0x5')]):_0x5063d3['interface'],'type':_0x983b('0xa'),'enterAt':_0x5063d3[_0x983b('0xb')],'exitAt':_0x4de18b,'duration':moment(_0x4de18b)['diff'](_0x5063d3[_0x983b('0xb')],'seconds'),'data1':_0x983b('0xc'),'data2':_0x5063d3[_0x983b('0xd')],'data3':_0x5063d3[_0x983b('0xe')],'data4':null,'data5':_0x5063d3[_0x983b('0xf')],'role':'agent','internal':_0x5063d3[_0x983b('0x10')]?_[_0x983b('0x11')](_0x5063d3[_0x983b('0x10')]):undefined,'uniqueid':_0x5063d3[_0x983b('0x12')]},'log':'CreateMemberReport'});};exports[_0x983b('0x13')]=function(_0x20ed5b){return client[_0x983b('0x3')](_0x983b('0x4'),{'body':{'channel':'voice','membername':_0x20ed5b[_0x983b('0x14')],'interface':_0x20ed5b[_0x983b('0x7')],'type':_0x983b('0xa'),'enterAt':_0x20ed5b[_0x983b('0x15')],'exitAt':_0x20ed5b[_0x983b('0x16')],'duration':moment(_0x20ed5b[_0x983b('0x16')])['diff'](_0x20ed5b[_0x983b('0x15')],_0x983b('0x17'))>=0x0?moment(_0x20ed5b[_0x983b('0x16')])['diff'](_0x20ed5b[_0x983b('0x15')],_0x983b('0x17')):null,'data1':_0x983b('0x18'),'data2':_0x20ed5b['accountcode'],'data3':_0x20ed5b[_0x983b('0xe')],'data4':_0x20ed5b[_0x983b('0x19')]||null,'role':_0x983b('0x1a'),'internal':_0x20ed5b['accountcode']?_[_0x983b('0x11')](_0x20ed5b['accountcode']):undefined,'uniqueid':_0x20ed5b[_0x983b('0x12')]},'log':_0x983b('0x4')});};
\ No newline at end of file
index 448735c..1a0a8d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8093=['GetSettings','../client','getSettings','Request','ShowSetting','stopRecordingOnTransfer'];(function(_0xd0b55c,_0x518d87){var _0x18877d=function(_0x2f4f33){while(--_0x2f4f33){_0xd0b55c['push'](_0xd0b55c['shift']());}};_0x18877d(++_0x518d87);}(_0x8093,0xa9));var _0x3809=function(_0xf4a734,_0x1a4fe7){_0xf4a734=_0xf4a734-0x0;var _0x10ee33=_0x8093[_0xf4a734];return _0x10ee33;};'use strict';var client=require(_0x3809('0x0'));exports[_0x3809('0x1')]=function(){return client[_0x3809('0x2')](_0x3809('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x3809('0x4')]},'log':_0x3809('0x5')});};
\ No newline at end of file
+var _0x9d11=['Request','ShowSetting','GetSettings','../client','getSettings'];(function(_0x61c0b1,_0x4c07f3){var _0x5f2d2e=function(_0x5d2c54){while(--_0x5d2c54){_0x61c0b1['push'](_0x61c0b1['shift']());}};_0x5f2d2e(++_0x4c07f3);}(_0x9d11,0xb7));var _0x19d1=function(_0x10a212,_0x579d85){_0x10a212=_0x10a212-0x0;var _0x23c82b=_0x9d11[_0x10a212];return _0x23c82b;};'use strict';var client=require(_0x19d1('0x0'));exports[_0x19d1('0x1')]=function(){return client[_0x19d1('0x2')](_0x19d1('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x19d1('0x4')});};
\ No newline at end of file
index 0265e66..8355b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['../client','getTemplates','GetTemplate','name'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x32f4,0x168));var _0x432f=function(_0x8ca2f7,_0x2a6e77){_0x8ca2f7=_0x8ca2f7-0x0;var _0x307e20=_0x32f4[_0x8ca2f7];return _0x307e20;};'use strict';var client=require(_0x432f('0x0'));exports[_0x432f('0x1')]=function(_0x9e6187){return function(_0x404867){return client['Request'](_0x432f('0x2'),{'options':{'raw':!![],'attributes':['id',_0x432f('0x3'),'html']},'log':_0x432f('0x2')});};};
\ No newline at end of file
+var _0x34b7=['name','../client','getTemplates','Request','GetTemplate'];(function(_0x4fc212,_0x1087aa){var _0x252317=function(_0x6facac){while(--_0x6facac){_0x4fc212['push'](_0x4fc212['shift']());}};_0x252317(++_0x1087aa);}(_0x34b7,0x16e));var _0x734b=function(_0x2b7248,_0x17b24e){_0x2b7248=_0x2b7248-0x0;var _0x418838=_0x34b7[_0x2b7248];return _0x418838;};'use strict';var client=require(_0x734b('0x0'));exports[_0x734b('0x1')]=function(_0xd4c377){return function(_0x52ee24){return client[_0x734b('0x2')](_0x734b('0x3'),{'options':{'raw':!![],'attributes':['id',_0x734b('0x4'),'html']},'log':_0x734b('0x3')});};};
\ No newline at end of file
index f6832f2..0322cea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2299=['status','Condition','field','operator','value','AnyConditions','Action','data2','data3','data6','data7','../client','getTriggers','Request','GetTrigger','name','channel'];(function(_0x5ac84c,_0x287781){var _0x3c53d2=function(_0x40cde0){while(--_0x40cde0){_0x5ac84c['push'](_0x5ac84c['shift']());}};_0x3c53d2(++_0x287781);}(_0x2299,0x11b));var _0x9229=function(_0x2f8237,_0x3e1e6e){_0x2f8237=_0x2f8237-0x0;var _0x5b1f3b=_0x2299[_0x2f8237];return _0x5b1f3b;};'use strict';var client=require(_0x9229('0x0'));exports[_0x9229('0x1')]=function(_0x50ae31){return function(_0x3e1c00){return client[_0x9229('0x2')](_0x9229('0x3'),{'options':{'raw':![],'attributes':['id',_0x9229('0x4'),_0x9229('0x5'),_0x9229('0x6')],'include':[{'model':_0x9229('0x7'),'as':'AllConditions','attributes':['id',_0x9229('0x8'),_0x9229('0x9'),_0x9229('0xa')]},{'model':'Condition','as':_0x9229('0xb'),'attributes':['id','field',_0x9229('0x9'),_0x9229('0xa')]},{'model':_0x9229('0xc'),'as':'Actions','attributes':['id','action','data1',_0x9229('0xd'),_0x9229('0xe'),'data4','data5',_0x9229('0xf'),_0x9229('0x10')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0xca70=['value','Action','Actions','action','data1','data2','data4','data5','data6','data7','../client','getTriggers','Request','GetTrigger','name','channel','Condition','AllConditions','operator'];(function(_0xb7239,_0x3aa6e1){var _0x5a386a=function(_0x29cd5e){while(--_0x29cd5e){_0xb7239['push'](_0xb7239['shift']());}};_0x5a386a(++_0x3aa6e1);}(_0xca70,0x199));var _0x0ca7=function(_0x482bd0,_0x53838f){_0x482bd0=_0x482bd0-0x0;var _0x1bb591=_0xca70[_0x482bd0];return _0x1bb591;};'use strict';var client=require(_0x0ca7('0x0'));exports[_0x0ca7('0x1')]=function(_0x136b09){return function(_0x1e7d80){return client[_0x0ca7('0x2')](_0x0ca7('0x3'),{'options':{'raw':![],'attributes':['id',_0x0ca7('0x4'),_0x0ca7('0x5'),'status'],'include':[{'model':_0x0ca7('0x6'),'as':_0x0ca7('0x7'),'attributes':['id','field',_0x0ca7('0x8'),_0x0ca7('0x9')]},{'model':_0x0ca7('0x6'),'as':'AnyConditions','attributes':['id','field',_0x0ca7('0x8'),_0x0ca7('0x9')]},{'model':_0x0ca7('0xa'),'as':_0x0ca7('0xb'),'attributes':['id',_0x0ca7('0xc'),_0x0ca7('0xd'),_0x0ca7('0xe'),'data3',_0x0ca7('0xf'),_0x0ca7('0x10'),_0x0ca7('0x11'),_0x0ca7('0x12')]}]},'log':_0x0ca7('0x3')});};};
\ No newline at end of file
index 3a3bdc9..66b0048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd3=['registry','../client','Request','GetTrunk','name'];(function(_0x130c43,_0x4b4fa8){var _0x1951e0=function(_0x535068){while(--_0x535068){_0x130c43['push'](_0x130c43['shift']());}};_0x1951e0(++_0x4b4fa8);}(_0x2cd3,0xf1));var _0x32cd=function(_0x57b236,_0x30614e){_0x57b236=_0x57b236-0x0;var _0x4feb29=_0x2cd3[_0x57b236];return _0x4feb29;};'use strict';var client=require(_0x32cd('0x0'));exports['getTrunks']=function(_0x259d34){return function(_0x39041a){return client[_0x32cd('0x1')](_0x32cd('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x32cd('0x3'),_0x32cd('0x4'),'defaultuser']},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0xc96c=['getTrunks','Request','GetTrunk','name','defaultuser'];(function(_0x506d83,_0x1899e9){var _0x335e8b=function(_0x4a7044){while(--_0x4a7044){_0x506d83['push'](_0x506d83['shift']());}};_0x335e8b(++_0x1899e9);}(_0xc96c,0x14a));var _0xcc96=function(_0x33cece,_0x54b9da){_0x33cece=_0x33cece-0x0;var _0x1a2efd=_0xc96c[_0x33cece];return _0x1a2efd;};'use strict';var client=require('../client');exports[_0xcc96('0x0')]=function(_0x5346ad){return function(_0x599d20){return client[_0xcc96('0x1')](_0xcc96('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xcc96('0x3'),'registry',_0xcc96('0x4')]},'log':_0xcc96('0x2')});};};
\ No newline at end of file
index ba75d67..7e5c713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x4ea430,_0x1666d9){var _0x565a6d=function(_0x481dc1){while(--_0x481dc1){_0x4ea430['push'](_0x4ea430['shift']());}};_0x565a6d(++_0x1666d9);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5ac84c,_0x287781){_0x5ac84c=_0x5ac84c-0x0;var _0x3c53d2=_0xcb91[_0x5ac84c];return _0x3c53d2;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
+var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x693008,_0x48ad80){var _0x3efe3b=function(_0x30deac){while(--_0x30deac){_0x693008['push'](_0x693008['shift']());}};_0x3efe3b(++_0x48ad80);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xc69f39,_0x2ce0cf){_0xc69f39=_0xc69f39-0x0;var _0x93be41=_0xcb91[_0xc69f39];return _0x93be41;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
index 8cd75c3..df847ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd276=['Request','CreateVoiceAgentReport','UpdateVoiceAgentReport','../client','create'];(function(_0x183b97,_0x2d297c){var _0x629cf7=function(_0x4ffd24){while(--_0x4ffd24){_0x183b97['push'](_0x183b97['shift']());}};_0x629cf7(++_0x2d297c);}(_0xd276,0xa3));var _0x6d27=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xd276[_0x2f5ac5];return _0x37c9a8;};'use strict';var client=require(_0x6d27('0x0'));exports[_0x6d27('0x1')]=function(_0x404591){return client[_0x6d27('0x2')](_0x6d27('0x3'),{'body':_0x404591,'log':_0x6d27('0x3')});};exports['update']=function(_0x461989,_0x72f681,_0xbd5311){return client[_0x6d27('0x2')](_0x6d27('0x4'),{'body':_0x461989,'options':{'where':{'uniqueid':_0x72f681,'interface':_0xbd5311,'agentcomplete':!![]}},'log':_0x6d27('0x4')});};
\ No newline at end of file
+var _0xd0b7=['Request','UpdateVoiceAgentReport','CreateVoiceAgentReport','update'];(function(_0x11908c,_0x547af6){var _0x10cd4e=function(_0x2c0d66){while(--_0x2c0d66){_0x11908c['push'](_0x11908c['shift']());}};_0x10cd4e(++_0x547af6);}(_0xd0b7,0xda));var _0x7d0b=function(_0x2420d6,_0x35c0b4){_0x2420d6=_0x2420d6-0x0;var _0x22bf68=_0xd0b7[_0x2420d6];return _0x22bf68;};'use strict';var client=require('../client');exports['create']=function(_0x7ec042){return client['Request'](_0x7d0b('0x0'),{'body':_0x7ec042,'log':_0x7d0b('0x0')});};exports[_0x7d0b('0x1')]=function(_0x2199be,_0x462c91,_0x30140d){return client[_0x7d0b('0x2')](_0x7d0b('0x3'),{'body':_0x2199be,'options':{'where':{'uniqueid':_0x462c91,'interface':_0x30140d,'agentcomplete':!![]}},'log':_0x7d0b('0x3')});};
\ No newline at end of file
index 6eb9b7b..eca27fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f8=['startOf','day','format','endOf','YYYY-MM-DD\x20HH:mm:ss','type','disposition','duration','util','../client','Request','merge','calleridnum','context','callerid','DOCUMENTATION','CreateVoiceCallReport','outbound'];(function(_0x135595,_0x418062){var _0x2761f1=function(_0x52a416){while(--_0x52a416){_0x135595['push'](_0x135595['shift']());}};_0x2761f1(++_0x418062);}(_0x31f8,0x86));var _0x831f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x31f8[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require('moment');var util=require(_0x831f('0x0'));var _=require('lodash');var client=require(_0x831f('0x1'));exports['create']=function(_0xa1a047){return client[_0x831f('0x2')]('CreateVoiceCallReport',{'body':_[_0x831f('0x3')](_0xa1a047,{'source':_0xa1a047[_0x831f('0x4')],'destinationcontext':_0xa1a047[_0x831f('0x5')],'callerid':_0xa1a047[_0x831f('0x6')],'amaflags':_0x831f('0x7')}),'log':_0x831f('0x8')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x831f('0x2')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x831f('0x9')],'createdAt':{'$between':[moment()[_0x831f('0xa')](_0x831f('0xb'))[_0x831f('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x831f('0xd')](_0x831f('0xb'))[_0x831f('0xc')](_0x831f('0xe'))]}},'attributes':[_0x831f('0xf'),_0x831f('0x10'),_0x831f('0x11'),'billableseconds']},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0xf6a4=['lodash','../client','create','Request','merge','calleridnum','callerid','CreateVoiceCallReport','getVoiceCallReports','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','GetVoiceCallReports','util'];(function(_0x45aa72,_0x8af642){var _0x75adaa=function(_0x1f6809){while(--_0x1f6809){_0x45aa72['push'](_0x45aa72['shift']());}};_0x75adaa(++_0x8af642);}(_0xf6a4,0xfb));var _0x4f6a=function(_0x4e06e9,_0x56e3ae){_0x4e06e9=_0x4e06e9-0x0;var _0x206081=_0xf6a4[_0x4e06e9];return _0x206081;};'use strict';var moment=require('moment');var util=require(_0x4f6a('0x0'));var _=require(_0x4f6a('0x1'));var client=require(_0x4f6a('0x2'));exports[_0x4f6a('0x3')]=function(_0x3b36ef){return client[_0x4f6a('0x4')]('CreateVoiceCallReport',{'body':_[_0x4f6a('0x5')](_0x3b36ef,{'source':_0x3b36ef[_0x4f6a('0x6')],'destinationcontext':_0x3b36ef['context'],'callerid':_0x3b36ef[_0x4f6a('0x7')],'amaflags':'DOCUMENTATION'}),'log':_0x4f6a('0x8')});};exports[_0x4f6a('0x9')]=function(){return function(){return client[_0x4f6a('0x4')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x4f6a('0xa')],'createdAt':{'$between':[moment()[_0x4f6a('0xb')](_0x4f6a('0xc'))[_0x4f6a('0xd')](_0x4f6a('0xe')),moment()[_0x4f6a('0xf')]('day')[_0x4f6a('0xd')](_0x4f6a('0xe'))]}},'attributes':[_0x4f6a('0x10'),_0x4f6a('0x11'),_0x4f6a('0x12'),_0x4f6a('0x13')]},'log':_0x4f6a('0x14')});};};
\ No newline at end of file
index cca3245..7497050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x358a=['Request','CreateVoiceDialReport','../client','create'];(function(_0x18f5bd,_0xc02ad7){var _0x2426d6=function(_0x412975){while(--_0x412975){_0x18f5bd['push'](_0x18f5bd['shift']());}};_0x2426d6(++_0xc02ad7);}(_0x358a,0xc2));var _0xa358=function(_0x5b4a05,_0x2f82a4){_0x5b4a05=_0x5b4a05-0x0;var _0x127ac9=_0x358a[_0x5b4a05];return _0x127ac9;};'use strict';var client=require(_0xa358('0x0'));exports[_0xa358('0x1')]=function(_0x42b391){return client[_0xa358('0x2')](_0xa358('0x3'),{'body':_0x42b391,'log':_0xa358('0x3')});};
\ No newline at end of file
+var _0x7e5c=['Request','CreateVoiceDialReport','create'];(function(_0x58aa10,_0x1b9067){var _0x594e39=function(_0x264532){while(--_0x264532){_0x58aa10['push'](_0x58aa10['shift']());}};_0x594e39(++_0x1b9067);}(_0x7e5c,0x1f1));var _0xc7e5=function(_0x47bb1d,_0x3d695a){_0x47bb1d=_0x47bb1d-0x0;var _0xb6cd8e=_0x7e5c[_0x47bb1d];return _0xb6cd8e;};'use strict';var client=require('../client');exports[_0xc7e5('0x0')]=function(_0x4cea42){return client[_0xc7e5('0x1')](_0xc7e5('0x2'),{'body':_0x4cea42,'log':_0xc7e5('0x2')});};
\ No newline at end of file
index f816c45..2d0840f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['GetVoiceExtension','recordingFormat','../client','getVoiceExtensions','Request'];(function(_0x34e84d,_0x3f3502){var _0x3f9125=function(_0x2cfc58){while(--_0x2cfc58){_0x34e84d['push'](_0x34e84d['shift']());}};_0x3f9125(++_0x3f3502);}(_0x6324,0x142));var _0x4632=function(_0x35a6f8,_0x2a19d0){_0x35a6f8=_0x35a6f8-0x0;var _0x11d2da=_0x6324[_0x35a6f8];return _0x11d2da;};'use strict';var client=require(_0x4632('0x0'));exports[_0x4632('0x1')]=function(){return function(){return client[_0x4632('0x2')](_0x4632('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0x4632('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0xaa88=['recordingFormat','../client','getVoiceExtensions','Request','GetVoiceExtension'];(function(_0x21dc19,_0x3015ea){var _0xfbd44d=function(_0x4a5ca9){while(--_0x4a5ca9){_0x21dc19['push'](_0x21dc19['shift']());}};_0xfbd44d(++_0x3015ea);}(_0xaa88,0x137));var _0x8aa8=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xaa88[_0x13b8f3];return _0x1a6d06;};'use strict';var client=require(_0x8aa8('0x0'));exports[_0x8aa8('0x1')]=function(){return function(){return client[_0x8aa8('0x2')](_0x8aa8('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0x8aa8('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x8aa8('0x1')});};};
\ No newline at end of file
index aa253c6..077090a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0d4=['dialQueueOptions','dialQueueTimeout','dialQueueProject','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDMinWordLength','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialAgiAfterHangupAgent','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','Trunk','active','Pause','TrunkBackup','callerid','Interval','getVoiceQueues','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout'];(function(_0x412e27,_0x20a978){var _0x53da42=function(_0x43cae5){while(--_0x43cae5){_0x412e27['push'](_0x412e27['shift']());}};_0x53da42(++_0x20a978);}(_0xf0d4,0xfa));var _0x4f0d=function(_0x2a53ad,_0x234135){_0x2a53ad=_0x2a53ad-0x0;var _0x31b3b6=_0xf0d4[_0x2a53ad];return _0x31b3b6;};'use strict';var client=require('../client');exports['getVoiceQueues']=function(){return function(){return client['Request'](_0x4f0d('0x0'),{'options':{'raw':![],'attributes':['id',_0x4f0d('0x1'),_0x4f0d('0x2'),_0x4f0d('0x3'),_0x4f0d('0x4'),_0x4f0d('0x5'),_0x4f0d('0x6'),_0x4f0d('0x7'),'dialMethod',_0x4f0d('0x8'),'dialLimitQueue',_0x4f0d('0x9'),_0x4f0d('0xa'),_0x4f0d('0xb'),'dialPredictiveInterval',_0x4f0d('0xc'),_0x4f0d('0xd'),_0x4f0d('0xe'),_0x4f0d('0xf'),_0x4f0d('0x10'),_0x4f0d('0x11'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x4f0d('0x12'),_0x4f0d('0x13'),_0x4f0d('0x14'),_0x4f0d('0x15'),_0x4f0d('0x16'),_0x4f0d('0x17'),_0x4f0d('0x18'),_0x4f0d('0x19'),'dialCheckDuplicateType',_0x4f0d('0x1a'),_0x4f0d('0x1b'),'dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime',_0x4f0d('0x1c'),'dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords',_0x4f0d('0x1d'),_0x4f0d('0x1e'),_0x4f0d('0x1f'),_0x4f0d('0x20'),'dialRecallInQueue','dialOrderByScheduledAt',_0x4f0d('0x21'),'dialAgiAfterHangupClient','dialQueueProject2',_0x4f0d('0x5'),'strategy',_0x4f0d('0x22'),_0x4f0d('0x23'),_0x4f0d('0x24'),_0x4f0d('0x25'),_0x4f0d('0x26'),_0x4f0d('0x27'),_0x4f0d('0x28'),'dialAbandonedRetryFrequency',_0x4f0d('0x29'),_0x4f0d('0x2a'),_0x4f0d('0x2b'),'dialAgentRejectRetryFrequency',_0x4f0d('0x2c'),_0x4f0d('0x2d'),'dialPredictiveIntervalMinThreshold'],'include':[{'model':_0x4f0d('0x2e'),'as':'Trunk','attributes':['id',_0x4f0d('0x1'),'callerid',_0x4f0d('0x2f')]},{'model':_0x4f0d('0x30'),'as':'mandatoryDispositionPause','attributes':['id','name']},{'model':_0x4f0d('0x2e'),'as':_0x4f0d('0x31'),'attributes':['id','name',_0x4f0d('0x32'),_0x4f0d('0x2f')]},{'model':_0x4f0d('0x33'),'as':_0x4f0d('0x33'),'attributes':['id',_0x4f0d('0x1')],'include':[{'model':'Interval','as':'Intervals','attributes':['id','name','interval']}]}]},'log':_0x4f0d('0x34')});};};
\ No newline at end of file
+var _0xbc77=['dialAgiAfterHangupClient','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','active','Pause','mandatoryDispositionPause','TrunkBackup','callerid','Interval','Intervals','interval','getVoiceQueues','../client','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0xbc77,0x1b3));var _0x7bc7=function(_0x43e4b3,_0x1444de){_0x43e4b3=_0x43e4b3-0x0;var _0x10c655=_0xbc77[_0x43e4b3];return _0x10c655;};'use strict';var client=require(_0x7bc7('0x0'));exports['getVoiceQueues']=function(){return function(){return client['Request']('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x7bc7('0x1'),_0x7bc7('0x2'),_0x7bc7('0x3'),_0x7bc7('0x4'),_0x7bc7('0x5'),_0x7bc7('0x6'),_0x7bc7('0x7'),_0x7bc7('0x8'),'dialLimitChannel','dialLimitQueue','dialPowerLevel',_0x7bc7('0x9'),_0x7bc7('0xa'),_0x7bc7('0xb'),'dialOriginateCallerIdName',_0x7bc7('0xc'),_0x7bc7('0xd'),_0x7bc7('0xe'),_0x7bc7('0xf'),_0x7bc7('0x10'),'dialCongestionMaxRetry',_0x7bc7('0x11'),_0x7bc7('0x12'),'dialBusyRetryFrequency','dialNoAnswerMaxRetry',_0x7bc7('0x13'),_0x7bc7('0x14'),_0x7bc7('0x15'),_0x7bc7('0x16'),_0x7bc7('0x17'),_0x7bc7('0x18'),_0x7bc7('0x19'),_0x7bc7('0x1a'),'dialAMDGreeting',_0x7bc7('0x1b'),_0x7bc7('0x1c'),_0x7bc7('0x1d'),_0x7bc7('0x1e'),_0x7bc7('0x1f'),'dialAMDSilenceThreshold',_0x7bc7('0x20'),_0x7bc7('0x21'),_0x7bc7('0x22'),_0x7bc7('0x23'),'dialOrderByScheduledAt',_0x7bc7('0x24'),_0x7bc7('0x25'),_0x7bc7('0x26'),_0x7bc7('0x5'),'strategy',_0x7bc7('0x27'),_0x7bc7('0x28'),_0x7bc7('0x29'),_0x7bc7('0x2a'),'dialDropMaxRetry','dialDropRetryFrequency',_0x7bc7('0x2b'),_0x7bc7('0x2c'),_0x7bc7('0x2d'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0x7bc7('0x2e'),_0x7bc7('0x2f'),_0x7bc7('0x30'),_0x7bc7('0x31')],'include':[{'model':'Trunk','as':'Trunk','attributes':['id','name','callerid',_0x7bc7('0x32')]},{'model':_0x7bc7('0x33'),'as':_0x7bc7('0x34'),'attributes':['id',_0x7bc7('0x1')]},{'model':'Trunk','as':_0x7bc7('0x35'),'attributes':['id',_0x7bc7('0x1'),_0x7bc7('0x36'),'active']},{'model':_0x7bc7('0x37'),'as':_0x7bc7('0x37'),'attributes':['id',_0x7bc7('0x1')],'include':[{'model':_0x7bc7('0x37'),'as':_0x7bc7('0x38'),'attributes':['id',_0x7bc7('0x1'),_0x7bc7('0x39')]}]}]},'log':_0x7bc7('0x3a')});};};
\ No newline at end of file
index 7104d49..2ba006b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x459f09,_0x2552f3){var _0x41a0e5=function(_0x5ede7b){while(--_0x5ede7b){_0x459f09['push'](_0x459f09['shift']());}};_0x41a0e5(++_0x2552f3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x222ece,_0x4aacf2){var _0x42c1aa=function(_0xae2a2e){while(--_0xae2a2e){_0x222ece['push'](_0x222ece['shift']());}};_0x42c1aa(++_0x4aacf2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 041d8d7..26b183b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66b5=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x11b6e9,_0x144376){var _0x20e413=function(_0x54f6fd){while(--_0x54f6fd){_0x11b6e9['push'](_0x11b6e9['shift']());}};_0x20e413(++_0x144376);}(_0x66b5,0x1bb));var _0x566b=function(_0x144bcf,_0x213f2d){_0x144bcf=_0x144bcf-0x0;var _0x54efad=_0x66b5[_0x144bcf];return _0x54efad;};'use strict';var client=require(_0x566b('0x0'));exports[_0x566b('0x1')]=function(_0x5e1add){return function(){return client[_0x566b('0x2')](_0x566b('0x3'),{'options':{'where':{'VoiceQueueId':_0x5e1add,'paused':!![]},'raw':!![]},'log':_0x566b('0x1')});};};
\ No newline at end of file
+var _0xf039=['GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses','Request'];(function(_0x575d9e,_0x30a98f){var _0x44327b=function(_0x2feb26){while(--_0x2feb26){_0x575d9e['push'](_0x575d9e['shift']());}};_0x44327b(++_0x30a98f);}(_0xf039,0xc5));var _0x9f03=function(_0x58e51a,_0x55c288){_0x58e51a=_0x58e51a-0x0;var _0x532604=_0xf039[_0x58e51a];return _0x532604;};'use strict';var client=require(_0x9f03('0x0'));exports[_0x9f03('0x1')]=function(_0x4a01bf){return function(){return client[_0x9f03('0x2')](_0x9f03('0x3'),{'options':{'where':{'VoiceQueueId':_0x4a01bf,'paused':!![]},'raw':!![]},'log':_0x9f03('0x1')});};};
\ No newline at end of file
index 858cfe0..d7c3678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x4fe17b,_0x3399c9){var _0x2973f3=function(_0x11cb84){while(--_0x11cb84){_0x4fe17b['push'](_0x4fe17b['shift']());}};_0x2973f3(++_0x3399c9);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x5c0285,_0x38d9a5){var _0x674e44=function(_0x26cc2b){while(--_0x26cc2b){_0x5c0285['push'](_0x5c0285['shift']());}};_0x674e44(++_0x38d9a5);}(_0x7a54,0x106));var _0x47a5=function(_0x294e09,_0x14bb80){_0x294e09=_0x294e09-0x0;var _0x551b61=_0x7a54[_0x294e09];return _0x551b61;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index b44ab01..f9c8386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20cc=['transfererchannel','transferercalleridnum','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','isexternal','origtransfererexten','attended','../client','transfers','Request','CreateVoiceTransferReport','result'];(function(_0x7f49d2,_0x43f538){var _0x2fcd02=function(_0x2e786b){while(--_0x2e786b){_0x7f49d2['push'](_0x7f49d2['shift']());}};_0x2fcd02(++_0x43f538);}(_0x20cc,0xaa));var _0xc20c=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x20cc[_0x2d7f0e];return _0x110b07;};'use strict';var client=require(_0xc20c('0x0'));exports[_0xc20c('0x1')]={};exports['blindTransfer']=function(_0x1f44c6){return client[_0xc20c('0x2')](_0xc20c('0x3'),{'body':{'result':_0x1f44c6[_0xc20c('0x4')],'transfererchannel':_0x1f44c6[_0xc20c('0x5')],'transferercalleridnum':_0x1f44c6[_0xc20c('0x6')],'transferercalleridname':_0x1f44c6['transferercalleridname'],'transfererconnectedlinenum':_0x1f44c6['transfererconnectedlinenum'],'transfererconnectedlinename':_0x1f44c6['transfererconnectedlinename'],'transfereraccountcode':_0x1f44c6['transfereraccountcode'],'transferercontext':_0x1f44c6[_0xc20c('0x7')],'transfererexten':_0x1f44c6[_0xc20c('0x8')],'transfererlinkedid':_0x1f44c6[_0xc20c('0x9')],'transfereechannel':_0x1f44c6[_0xc20c('0xa')],'transfereecalleridnum':_0x1f44c6['transfereecalleridnum'],'transfereecalleridname':_0x1f44c6[_0xc20c('0xb')],'transfereeconnectedlinenum':_0x1f44c6[_0xc20c('0xc')],'transfereeconnectedlinename':_0x1f44c6[_0xc20c('0xd')],'transfereeaccountcode':_0x1f44c6[_0xc20c('0xe')],'transfereecontext':_0x1f44c6[_0xc20c('0xf')],'transfereeexten':_0x1f44c6[_0xc20c('0x10')],'transfereelinkedid':_0x1f44c6[_0xc20c('0x11')],'isexternal':_0x1f44c6['isexternal'],'context':_0x1f44c6['context'],'extension':_0x1f44c6['extension'],'type':'blind'},'log':_0xc20c('0x3')});};exports[_0xc20c('0x12')]=function(_0x3a7645){return client[_0xc20c('0x2')](_0xc20c('0x3'),{'body':{'result':_0x3a7645['result'],'transfererchannel':_0x3a7645[_0xc20c('0x13')],'transferercalleridnum':_0x3a7645[_0xc20c('0x14')],'transferercalleridname':_0x3a7645[_0xc20c('0x15')],'transfererconnectedlinenum':_0x3a7645[_0xc20c('0x16')],'transfererconnectedlinename':_0x3a7645['secondtransfererconnectedlinename'],'transfereraccountcode':_0x3a7645[_0xc20c('0x17')],'transferercontext':_0x3a7645[_0xc20c('0x18')],'transfererexten':_0x3a7645['secondtransfererexten'],'transfererlinkedid':_0x3a7645[_0xc20c('0x19')],'transfereechannel':_0x3a7645['transfertargetchannel'],'transfereecalleridnum':_0x3a7645['transfertargetcalleridnum'],'transfereecalleridname':_0x3a7645[_0xc20c('0x1a')],'transfereeconnectedlinenum':_0x3a7645[_0xc20c('0x1b')],'transfereeconnectedlinename':_0x3a7645[_0xc20c('0x1c')],'transfereeaccountcode':_0x3a7645[_0xc20c('0x1d')],'transfereecontext':_0x3a7645[_0xc20c('0x1e')],'transfereeexten':_0x3a7645['transfertargetexten'],'transfereelinkedid':_0x3a7645[_0xc20c('0x1f')],'isexternal':_0x3a7645[_0xc20c('0x20')],'context':_0x3a7645['origtransferercontext'],'extension':_0x3a7645[_0xc20c('0x21')],'type':_0xc20c('0x22')},'log':_0xc20c('0x3')});};
\ No newline at end of file
+var _0xd582=['secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','isexternal','origtransferercontext','origtransfererexten','attended','../client','transfers','Request','result','transfererchannel','transferercalleridnum','transfererconnectedlinenum','transferercontext','transfererlinkedid','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','context','extension','blind','attendedTransfer','CreateVoiceTransferReport','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum'];(function(_0x117f4c,_0x36a9b1){var _0x2b24e9=function(_0x31761b){while(--_0x31761b){_0x117f4c['push'](_0x117f4c['shift']());}};_0x2b24e9(++_0x36a9b1);}(_0xd582,0xfa));var _0x2d58=function(_0x1babb3,_0x4fe096){_0x1babb3=_0x1babb3-0x0;var _0x4f71ff=_0xd582[_0x1babb3];return _0x4f71ff;};'use strict';var client=require(_0x2d58('0x0'));exports[_0x2d58('0x1')]={};exports['blindTransfer']=function(_0x171369){return client[_0x2d58('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x171369[_0x2d58('0x3')],'transfererchannel':_0x171369[_0x2d58('0x4')],'transferercalleridnum':_0x171369[_0x2d58('0x5')],'transferercalleridname':_0x171369['transferercalleridname'],'transfererconnectedlinenum':_0x171369[_0x2d58('0x6')],'transfererconnectedlinename':_0x171369['transfererconnectedlinename'],'transfereraccountcode':_0x171369['transfereraccountcode'],'transferercontext':_0x171369[_0x2d58('0x7')],'transfererexten':_0x171369['transfererexten'],'transfererlinkedid':_0x171369[_0x2d58('0x8')],'transfereechannel':_0x171369['transfereechannel'],'transfereecalleridnum':_0x171369[_0x2d58('0x9')],'transfereecalleridname':_0x171369['transfereecalleridname'],'transfereeconnectedlinenum':_0x171369[_0x2d58('0xa')],'transfereeconnectedlinename':_0x171369[_0x2d58('0xb')],'transfereeaccountcode':_0x171369[_0x2d58('0xc')],'transfereecontext':_0x171369[_0x2d58('0xd')],'transfereeexten':_0x171369['transfereeexten'],'transfereelinkedid':_0x171369[_0x2d58('0xe')],'isexternal':_0x171369['isexternal'],'context':_0x171369[_0x2d58('0xf')],'extension':_0x171369[_0x2d58('0x10')],'type':_0x2d58('0x11')},'log':'CreateVoiceTransferReport'});};exports[_0x2d58('0x12')]=function(_0x1b1ea5){return client[_0x2d58('0x2')](_0x2d58('0x13'),{'body':{'result':_0x1b1ea5[_0x2d58('0x3')],'transfererchannel':_0x1b1ea5[_0x2d58('0x14')],'transferercalleridnum':_0x1b1ea5[_0x2d58('0x15')],'transferercalleridname':_0x1b1ea5['origtransferercalleridname'],'transfererconnectedlinenum':_0x1b1ea5[_0x2d58('0x16')],'transfererconnectedlinename':_0x1b1ea5[_0x2d58('0x17')],'transfereraccountcode':_0x1b1ea5[_0x2d58('0x18')],'transferercontext':_0x1b1ea5['secondtransferercontext'],'transfererexten':_0x1b1ea5[_0x2d58('0x19')],'transfererlinkedid':_0x1b1ea5['origtransfererlinkedid'],'transfereechannel':_0x1b1ea5[_0x2d58('0x1a')],'transfereecalleridnum':_0x1b1ea5[_0x2d58('0x1b')],'transfereecalleridname':_0x1b1ea5[_0x2d58('0x1c')],'transfereeconnectedlinenum':_0x1b1ea5[_0x2d58('0x1d')],'transfereeconnectedlinename':_0x1b1ea5[_0x2d58('0x1e')],'transfereeaccountcode':_0x1b1ea5[_0x2d58('0x1f')],'transfereecontext':_0x1b1ea5[_0x2d58('0x20')],'transfereeexten':_0x1b1ea5[_0x2d58('0x21')],'transfereelinkedid':_0x1b1ea5[_0x2d58('0x22')],'isexternal':_0x1b1ea5[_0x2d58('0x23')],'context':_0x1b1ea5[_0x2d58('0x24')],'extension':_0x1b1ea5[_0x2d58('0x25')],'type':_0x2d58('0x26')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
index f420e9f..df3d5aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6596=['erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','length','find','omit','undefined','values','map','channels','uniqueid','channel','filename','wav','ai(mixmonitorid)','then','/var/spool/asterisk/monitor/','toLowerCase','isNil','monitors','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','StopMixMonitor','destinationchannel','status','stop','%s.%s','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','checkAfterSend','server','http','listen','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util','validate','bluebird','moment','../../../config/environment','../properties','../ami','format','%s/%s','SIP','name','timers','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','join','pick','keys','module','action','Reload','catch','message','ami\x20disconnected','command','Command','Action','voiceQueues','hasOwnProperty','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','abandoned','waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','erlangCalls','erlangCallToSecond','erlangAbandonmentRate'];(function(_0x497a00,_0x204016){var _0x590520=function(_0x79f1fd){while(--_0x79f1fd){_0x497a00['push'](_0x497a00['shift']());}};_0x590520(++_0x204016);}(_0x6596,0x1d3));var _0x6659=function(_0x65e36b,_0x4830d3){_0x65e36b=_0x65e36b-0x0;var _0x2f8a9c=_0x6596[_0x65e36b];return _0x2f8a9c;};'use strict';var _=require(_0x6659('0x0'));var util=require(_0x6659('0x1'));var jayson=require('jayson/promise');var schema=require(_0x6659('0x2'));var BPromise=require(_0x6659('0x3'));var moment=require(_0x6659('0x4'));var config=require(_0x6659('0x5'));var properties=require(_0x6659('0x6'));var ami=require(_0x6659('0x7'));exports['listen']=function(_0x483945,_0x7edf11,_0x3091f1){return new BPromise(function(_0xd6bf59,_0x1ed458){var _0x29292b={'QueuePause':function(_0x4a900d){return new Promise(function(_0x485ea0,_0x24bfdf){var _0x7b07d5=util[_0x6659('0x8')](_0x6659('0x9'),_0x6659('0xa'),_0x4a900d[_0x6659('0xb')]);if(_0x483945['timers']&&_0x483945[_0x6659('0xc')][_0x7b07d5]&&_0x483945['timers'][_0x7b07d5]['timer']){_0x483945[_0x6659('0xc')][_0x7b07d5]['updateAcw']();}if(_0x483945[_0x6659('0xd')][_0x7b07d5]){_0x483945[_0x6659('0xd')][_0x7b07d5][_0x6659('0xe')]({'statePause':_0x4a900d[_0x6659('0xf')]?!![]:![]});}_0x485ea0({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x3d68c5){var _0x329ebc=this;return new Promise(function(_0x518769,_0x2b3118){if(ami[_0x6659('0x10')]()==![]){return _0x2b3118(_0x329ebc[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')][_0x6659('0x13')],'ami\x20disconnected'][_0x6659('0x14')]('\x20')));}_0x3d68c5=_[_0x6659('0x15')](_0x3d68c5,_[_0x6659('0x16')](properties[_0x6659('0x17')]));_0x3d68c5[_0x6659('0x18')]=_0x6659('0x19');return ami['Action'](_0x3d68c5)['then'](function(_0x441d6d){_0x518769({'code':0xc8,'message':_0x441d6d['message']});})[_0x6659('0x1a')](function(_0x38e4d6){_0x2b3118(_0x329ebc['error'](0x1f5,_0x38e4d6[_0x6659('0x1b')]));});});},'Command':function(_0x5253e5){var _0xa5e094=this;return new Promise(function(_0x1dc4f1,_0x522f2e){if(ami[_0x6659('0x10')]()==![]){return _0x522f2e(_0xa5e094[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')][_0x6659('0x13')],_0x6659('0x1c')][_0x6659('0x14')]('\x20')));}_0x5253e5=_['pick'](_0x5253e5,_0x6659('0x1d'));_0x5253e5[_0x6659('0x18')]=_0x6659('0x1e');return ami[_0x6659('0x1f')](_0x5253e5)['then'](function(_0x4ce553){_0x1dc4f1({'code':0xc8,'message':_0x4ce553['content']});})['catch'](function(_0xbad53f){_0x522f2e(_0xa5e094[_0x6659('0x11')](0x1f5,_0xbad53f[_0x6659('0x1b')]));});});},'VoiceQueues':function(_0x6fc27){return new Promise(function(_0x45effc,_0x12b218){var _0x436691=[];for(var _0x3cb0dc in _0x483945[_0x6659('0x20')]){if(_0x483945['voiceQueues'][_0x6659('0x21')](_0x3cb0dc)){var _0x373a3d=_0x483945[_0x6659('0x20')][_0x3cb0dc];var _0x4866e0={'id':_0x373a3d['id'],'name':_0x373a3d['name'],'strategy':_0x373a3d[_0x6659('0x22')],'answered':_0x373a3d[_0x6659('0x23')],'available':_0x373a3d['available'],'loggedIn':_0x373a3d[_0x6659('0x24')],'pTalking':_0x373a3d[_0x6659('0x25')],'sumBillable':_0x373a3d[_0x6659('0x26')],'sumDuration':_0x373a3d[_0x6659('0x27')],'sumHoldTime':_0x373a3d[_0x6659('0x28')]||0x0,'talking':_0x373a3d['talking'],'total':_0x373a3d[_0x6659('0x29')],'type':_0x373a3d[_0x6659('0x2a')],'unmanaged':_0x373a3d[_0x6659('0x2b')],'abandoned':_0x373a3d[_0x6659('0x2c')],'waiting':_0x373a3d[_0x6659('0x2d')],'loggedInDb':_0x373a3d['loggedInDb']};if(_0x373a3d[_0x6659('0x2a')]===_0x6659('0x2e')){_0x4866e0[_0x6659('0x2f')]=_0x373a3d[_0x6659('0x2f')];_0x4866e0[_0x6659('0x30')]=_0x373a3d[_0x6659('0x30')];_0x4866e0[_0x6659('0x31')]=_0x373a3d['dialOriginateCallerIdName'];_0x4866e0[_0x6659('0x32')]=_0x373a3d[_0x6659('0x32')];_0x4866e0['dialOriginateTimeout']=_0x373a3d[_0x6659('0x33')];_0x4866e0['dialPrefix']=_0x373a3d[_0x6659('0x34')];_0x4866e0['temp']=_0x373a3d[_0x6659('0x35')];_0x4866e0[_0x6659('0x36')]=_0x373a3d['outboundAnswerAgiCallsDay'];_0x4866e0['outboundAnswerCallsDay']=_0x373a3d[_0x6659('0x37')];_0x4866e0['outboundBlacklistCallsDay']=_0x373a3d[_0x6659('0x38')];_0x4866e0['outboundBusyCallsDay']=_0x373a3d[_0x6659('0x39')];_0x4866e0['outboundCongestionCallsDay']=_0x373a3d[_0x6659('0x3a')];_0x4866e0[_0x6659('0x3b')]=_0x373a3d['outboundDropCallsDayACS'];_0x4866e0[_0x6659('0x3c')]=_0x373a3d[_0x6659('0x3c')];_0x4866e0[_0x6659('0x3d')]=_0x373a3d[_0x6659('0x3d')];_0x4866e0[_0x6659('0x3e')]=_0x373a3d['outboundNoAnswerCallsDay'];_0x4866e0[_0x6659('0x3f')]=_0x373a3d['outboundNoSuchCallsDay'];_0x4866e0['outboundOriginateFailureCallsDay']=_0x373a3d[_0x6659('0x40')];_0x4866e0[_0x6659('0x41')]=_0x373a3d[_0x6659('0x41')];_0x4866e0['outboundRejectCallsDay']=_0x373a3d[_0x6659('0x42')];_0x4866e0['outboundUnknownCallsDay']=_0x373a3d['outboundUnknownCallsDay'];_0x4866e0[_0x6659('0x43')]=_0x373a3d[_0x6659('0x43')];_0x4866e0[_0x6659('0x44')]=_0x373a3d[_0x6659('0x44')];_0x4866e0[_0x6659('0x45')]=_0x373a3d[_0x6659('0x45')];_0x4866e0[_0x6659('0x46')]=_0x373a3d['predictiveIntervalDroppedCallsCallersExit'];_0x4866e0['predictiveIntervalDroppedCallsTimeout']=_0x373a3d[_0x6659('0x47')];_0x4866e0[_0x6659('0x48')]=_0x373a3d[_0x6659('0x48')];_0x4866e0['predictiveIntervalErlangCallsDroppedCalls']=_0x373a3d[_0x6659('0x49')];_0x4866e0[_0x6659('0x4a')]=_0x373a3d['predictiveIntervalHitRate'];_0x4866e0[_0x6659('0x4b')]=_0x373a3d[_0x6659('0x4b')];_0x4866e0[_0x6659('0x4c')]=_0x373a3d[_0x6659('0x4c')];_0x4866e0[_0x6659('0x4d')]=_0x373a3d['predictiveIntervalAvailable'];_0x4866e0['predictiveIntervalTotalCalls']=_0x373a3d['predictiveIntervalTotalCalls'];_0x4866e0['message']=_0x373a3d[_0x6659('0x1b')];_0x4866e0['originated']=_0x373a3d['originated'];_0x4866e0[_0x6659('0x4e')]=_0x373a3d[_0x6659('0x4e')];_0x4866e0['erlangCallToSecond']=_0x373a3d[_0x6659('0x4f')];_0x4866e0[_0x6659('0x50')]=_0x373a3d['erlangAbandonmentRate'];_0x4866e0[_0x6659('0x51')]=_0x373a3d[_0x6659('0x51')];_0x4866e0[_0x6659('0x52')]=_0x373a3d[_0x6659('0x52')];_0x4866e0['startProgressive']=_0x373a3d[_0x6659('0x53')];}if(_0x373a3d['Trunk']){_0x4866e0[_0x6659('0x54')]={'id':_0x373a3d[_0x6659('0x54')]['id'],'name':_0x373a3d[_0x6659('0x54')][_0x6659('0xb')],'active':_0x373a3d[_0x6659('0x54')][_0x6659('0x55')],'callerid':_0x373a3d['Trunk']['callerid']};}if(_0x373a3d[_0x6659('0x56')]){_0x4866e0[_0x6659('0x56')]={'id':_0x373a3d[_0x6659('0x56')]['id'],'name':_0x373a3d[_0x6659('0x56')][_0x6659('0xb')]};}_0x436691[_0x6659('0x57')](_0x4866e0);}}_0x45effc({'count':_0x436691[_0x6659('0x58')],'rows':_0x436691});});},'UpdateVoiceQueue':function(_0x358f15){return new Promise(function(_0x3077a8,_0x440c7c){var _0x529f35=_[_0x6659('0x59')](_0x483945['voiceQueues'],{'id':parseInt(_0x358f15['id'])});var _0x104d61=_[_0x6659('0x5a')](_0x358f15,['id']);if(_0x529f35){for(var _0x577d7f in _0x104d61){if(typeof _0x104d61[_0x577d7f]!==_0x6659('0x5b')&&typeof _0x529f35[_0x577d7f]!==_0x6659('0x5b')){_0x529f35[_0x577d7f]=_0x104d61[_0x577d7f];}}_0x3077a8(_0x529f35);}else{_0x440c7c();}});},'VoiceChannels':function(_0x5cfef5){return new Promise(function(_0x2cbd80,_0x345313){var _0x6e0e41=_[_0x6659('0x5c')](_0x483945['channels']);_0x2cbd80({'count':_0x6e0e41['length'],'rows':_0x6e0e41});});},'VoiceChannelMixMonitor':function(_0x1832cc){var _0x268e06=this;return new Promise(function(_0x2c4c0e,_0x29f7f1){if(ami[_0x6659('0x10')]()==![]){return _0x29f7f1(_0x268e06[_0x6659('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x6659('0x12')][_0x6659('0x13')],'ami\x20disconnected'][_0x6659('0x14')]('\x20')));}var _0x29e7cc=schema(properties['voicechannel'])[_0x6659('0x2')](_0x1832cc);if(_0x29e7cc[_0x6659('0x58')]>0x0){return _0x29f7f1(_0x268e06[_0x6659('0x11')](0x1f4,_[_0x6659('0x5d')](_0x29e7cc,_0x6659('0x1b'))[_0x6659('0x14')](',\x20')));}var _0x4686d3=_[_0x6659('0x59')](_0x483945[_0x6659('0x5e')],{'uniqueid':_0x1832cc[_0x6659('0x5f')]});if(_0x4686d3&&_0x4686d3[_0x6659('0x60')]){var _0x499c47=util['format']('%s.%s',_0x1832cc[_0x6659('0x61')]||_0x1832cc[_0x6659('0x5f')],_0x1832cc['format']||_0x6659('0x62'));return ami[_0x6659('0x1f')]({'action':'MixMonitor','channel':_0x4686d3[_0x6659('0x60')],'file':_0x499c47,'options':_0x6659('0x63')})[_0x6659('0x64')](function(_0x4f9abf){var _0xf2348f=_['find'](_0x4686d3['monitors'],{'filename':_0x6659('0x65')+_0x499c47[_0x6659('0x66')]()});if(_[_0x6659('0x67')](_0xf2348f)){_0x4686d3[_0x6659('0x68')][_0x6659('0x57')]({'filename':_0x6659('0x65')+_0x499c47[_0x6659('0x66')](),'createdAt':moment()[_0x6659('0x8')](_0x6659('0x69')),'mixmonitorid':_0x4f9abf[_0x6659('0x6a')],'status':_0x6659('0x6b')});}else{_0xf2348f[_0x6659('0x6a')]=_0x4f9abf[_0x6659('0x6a')];_0xf2348f['status']=_0x6659('0x6b');}_0x2c4c0e({'code':0xc8,'message':[_0x1832cc[_0x6659('0x5f')],'MixMonitor\x20Success',_0x4f9abf[_0x6659('0x6a')]][_0x6659('0x14')]('\x20'),'mixmonitorid':_0x4f9abf[_0x6659('0x6a')]});})['catch'](function(_0x21a365){_0x29f7f1(_0x268e06[_0x6659('0x11')](0x1f5,[_0x1832cc[_0x6659('0x5f')],_0x21a365[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x29f7f1(_0x268e06['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceChannelStopMixMonitor':function(_0x35ac7d){var _0x316cb0=this;return new Promise(function(_0x230e61,_0x479178){if(ami[_0x6659('0x10')]()==![]){return _0x479178(_0x316cb0[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')][_0x6659('0x13')],_0x6659('0x1c')][_0x6659('0x14')]('\x20')));}var _0x55db3e=schema(properties['voicechannel'])['validate'](_0x35ac7d);if(_0x55db3e['length']>0x0){return _0x479178(_0x316cb0['error'](0x1f4,_['map'](_0x55db3e,_0x6659('0x1b'))[_0x6659('0x14')](',\x20')));}var _0x13f31d=_['find'](_0x483945[_0x6659('0x5e')],{'uniqueid':_0x35ac7d[_0x6659('0x5f')]});if(_0x13f31d){return BPromise['resolve']()[_0x6659('0x64')](function(){if(_0x13f31d[_0x6659('0x60')]){return ami[_0x6659('0x1f')]({'action':_0x6659('0x6d'),'channel':_0x13f31d['channel'],'mixmonitorid':_0x35ac7d[_0x6659('0x6a')]})[_0x6659('0x1a')](function(_0x1162e8){});}})[_0x6659('0x64')](function(){if(_0x13f31d[_0x6659('0x6e')]){return ami[_0x6659('0x1f')]({'action':'StopMixMonitor','channel':_0x13f31d[_0x6659('0x6e')],'mixmonitorid':_0x35ac7d[_0x6659('0x6a')]})[_0x6659('0x1a')](function(_0x23ba92){});}})['then'](function(_0x34b12e){var _0x4a551d=_['find'](_0x13f31d[_0x6659('0x68')],{'mixmonitorid':_0x35ac7d['mixmonitorid']});if(_0x4a551d){_0x4a551d[_0x6659('0x6f')]=_0x6659('0x70');}})['then'](function(){var _0x3977be=util[_0x6659('0x8')](_0x6659('0x71'),_0x35ac7d['filename']||_0x35ac7d[_0x6659('0x5f')],_0x35ac7d[_0x6659('0x8')]||_0x6659('0x62'));var _0x4c2b65=_['find'](_0x13f31d[_0x6659('0x68')],{'filename':_0x6659('0x65')+_0x3977be[_0x6659('0x66')]()});if(_0x4c2b65){_0x4c2b65['status']=_0x6659('0x70');}})[_0x6659('0x64')](function(){_0x230e61({'code':0xc8,'message':[_0x35ac7d[_0x6659('0x5f')],_0x6659('0x72')][_0x6659('0x14')]('\x20')});})[_0x6659('0x1a')](function(_0x1fcf50){_0x479178(_0x316cb0['error'](0x1f5,[_0x35ac7d[_0x6659('0x5f')],_0x1fcf50[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x479178(_0x316cb0['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceQueuesChannels':function(_0x50b75e){return new Promise(function(_0x466210,_0x4cb1aa){var _0x1027b4=_[_0x6659('0x5c')](_0x483945['queueChannels']);_0x466210({'count':_0x1027b4['length'],'rows':_0x1027b4});});},'VoiceQueuesChannel':function(_0x58755b){var _0x42e469=this;return new Promise(function(_0x58220d,_0x4e7e3e){var _0x445d9b=schema(properties[_0x6659('0x73')])[_0x6659('0x2')](_0x58755b);if(_0x445d9b[_0x6659('0x58')]>0x0){return _0x4e7e3e(_0x42e469['error'](0x1f4,_[_0x6659('0x5d')](_0x445d9b,_0x6659('0x1b'))[_0x6659('0x14')](',\x20')));}var _0x6d5339=_[_0x6659('0x59')](_0x483945[_0x6659('0x74')],{'uniqueid':_0x58755b[_0x6659('0x5f')]});if(_0x6d5339){_0x58220d(_0x6d5339);}else{return _0x4e7e3e(_0x42e469['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceQueuesChannelHangup':function(_0x55a3a9){var _0x2cf584=this;return new Promise(function(_0x27fbf7,_0x5d0a46){if(ami['isConnected']()==![]){return _0x5d0a46(_0x2cf584[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')]['username'],_0x6659('0x1c')][_0x6659('0x14')]('\x20')));}var _0x2704e8=schema(properties['voicequeuechannelhangup'])[_0x6659('0x2')](_0x55a3a9);if(_0x2704e8[_0x6659('0x58')]>0x0){return _0x5d0a46(_0x2cf584['error'](0x1f4,_['map'](_0x2704e8,_0x6659('0x1b'))['join'](',\x20')));}var _0x445fa8=_[_0x6659('0x59')](_0x483945[_0x6659('0x74')],{'uniqueid':_0x55a3a9[_0x6659('0x5f')]});if(_0x445fa8&&_0x445fa8[_0x6659('0x60')]){return ami[_0x6659('0x1f')]({'action':_0x6659('0x75'),'channel':_0x445fa8[_0x6659('0x60')]})[_0x6659('0x64')](function(_0x24b310){_0x27fbf7({'code':0xc8,'message':[_0x55a3a9[_0x6659('0x5f')],_0x24b310[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')});})[_0x6659('0x1a')](function(_0x472485){_0x5d0a46(_0x2cf584[_0x6659('0x11')](0x1f5,[_0x55a3a9[_0x6659('0x5f')],_0x472485[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x5d0a46(_0x2cf584['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceQueuesChannelRedirect':function(_0x43a607){var _0x39bd7d=this;return new Promise(function(_0x55e3e1,_0x1c6bff){if(ami[_0x6659('0x10')]()==![]){return _0x1c6bff(_0x39bd7d[_0x6659('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x6659('0x12')][_0x6659('0x13')],'ami\x20disconnected'][_0x6659('0x14')]('\x20')));}var _0x4f2c4f=schema(properties[_0x6659('0x76')])[_0x6659('0x2')](_0x43a607);if(_0x4f2c4f[_0x6659('0x58')]>0x0){return _0x1c6bff(_0x39bd7d[_0x6659('0x11')](0x1f4,_['map'](_0x4f2c4f,'message')[_0x6659('0x14')](',\x20')));}var _0x1cf948=_[_0x6659('0x59')](_0x483945[_0x6659('0x74')],{'uniqueid':_0x43a607[_0x6659('0x5f')]});if(_0x1cf948&&_0x1cf948[_0x6659('0x60')]){return ami[_0x6659('0x1f')]({'action':_0x6659('0x77'),'channel':_0x1cf948[_0x6659('0x60')],'exten':_0x43a607[_0x6659('0x78')],'context':_0x43a607[_0x6659('0x79')]||_0x1cf948['context'],'priority':0x1})[_0x6659('0x64')](function(_0x52eee1){_0x55e3e1({'code':0xc8,'message':[_0x43a607[_0x6659('0x5f')],_0x52eee1[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')});})['catch'](function(_0x373c74){_0x1c6bff(_0x39bd7d[_0x6659('0x11')](0x1f5,[_0x43a607[_0x6659('0x5f')],_0x373c74['message'][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x1c6bff(_0x39bd7d['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x2637b2){return new Promise(function(_0x42dffc,_0x58631d){var _0x38f9d8=_[_0x6659('0x5c')](_0x483945['agents']);_0x42dffc({'count':_0x38f9d8[_0x6659('0x58')],'rows':_0x38f9d8});});},'Telephones':function(_0x10a6e5){return new Promise(function(_0x3a5530,_0x597b0a){var _0x3abac8=_[_0x6659('0x5c')](_0x483945[_0x6659('0x7a')]);_0x3a5530({'count':_0x3abac8['length'],'rows':_0x3abac8});});},'Trunks':function(_0x1aeebc){return new Promise(function(_0x4e91b6,_0x5e8a39){var _0x5b0e0d=_[_0x6659('0x5c')](_0x483945['trunks']);_0x4e91b6({'count':_0x5b0e0d[_0x6659('0x58')],'rows':_0x5b0e0d});});},'OutboundChannels':function(_0x51f147){return new Promise(function(_0x339a4b,_0x3aabe9){var _0x377f91=_[_0x6659('0x5c')](_0x483945[_0x6659('0x7b')]);_0x339a4b({'count':_0x377f91['length'],'rows':_0x377f91});});},'Outbound':function(_0x52a25e){return new Promise(function(_0x2d8ffd,_0x5589e5){_0x2d8ffd(_0x483945[_0x6659('0x2e')]);});},'Campaigns':function(_0x257235){return new Promise(function(_0x460916,_0x23fe5b){var _0x17222b=_['values'](_0x483945[_0x6659('0x7c')]);_0x460916({'count':_0x17222b['length'],'rows':_0x17222b});});},'VoiceQueuesPreview':function(_0x3653ca){var _0x3b7f51=this;return new Promise(function(_0x5cd96a,_0x5f259a){_0x7edf11[_0x6659('0x7d')](_0x3653ca['id'])[_0x6659('0x64')](function(_0x407371){_0x5cd96a({'code':0xc8,'message':_0x407371[_0x6659('0x1b')]});})[_0x6659('0x1a')](function(_0x140261){_0x5f259a(_0x3b7f51[_0x6659('0x11')](0x1f4,_0x140261[_0x6659('0x1b')]));});});},'EventManager':function(_0x47b382){var _0x14ee7b=this;return new Promise(function(_0xb58af9,_0x33c6d9){if(!_0x47b382[_0x6659('0x7e')]){return _0x33c6d9(_0x14ee7b[_0x6659('0x11')](0x1f4,_0x6659('0x7f')));}ami['emit'](_0x6659('0x80')+_0x47b382['event'],_0x47b382[_0x6659('0x1b')]);_0xb58af9({'code':0xc8,'message':_0x47b382});});},'FaxAccounts':function(_0x3bd970){return new Promise(function(_0x590b7c,_0x3b0534){var _0x188807=_[_0x6659('0x5c')](_0x483945[_0x6659('0x81')]);_0x590b7c({'count':_0x188807[_0x6659('0x58')],'rows':_0x188807});});},'SendFax':function(_0x3fcf16){var _0x21fd8d=this;return new Promise(function(_0x22415c,_0x3b1dcf){_0x3091f1[_0x6659('0x82')](_0x3fcf16)['then'](function(_0x2ddc13){_0x22415c({'code':0xc8,'message':_0x2ddc13[_0x6659('0x1b')]});})[_0x6659('0x1a')](function(_0x1265b0){_0x3b1dcf(_0x21fd8d[_0x6659('0x11')](0x1f4,_0x1265b0[_0x6659('0x1b')]));});});},'CheckAfterSend':function(_0x2c5caf){var _0xfa0367=this;return new Promise(function(_0x43bb74,_0x1642fd){_0x3091f1[_0x6659('0x83')](_0x2c5caf)[_0x6659('0x64')](function(_0x310958){_0x43bb74({'code':0xc8,'message':_0x310958[_0x6659('0x1b')]});})[_0x6659('0x1a')](function(_0x350e91){_0x1642fd(_0xfa0367[_0x6659('0x11')](0x1f4,_0x350e91[_0x6659('0x1b')]));});});}};var _0x4b7f92=jayson[_0x6659('0x84')](_0x29292b)[_0x6659('0x85')]();_0x4b7f92['on']('error',function(_0x46cc91){return _0x1ed458(_0x46cc91);});_0x4b7f92[_0x6659('0x86')](0x232a,_0x6659('0x87'),function(){console['log']('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0xd6bf59(_0x6659('0x88')+0x232a);});});};
\ No newline at end of file
+var _0xdbb1=['asterisk','username','join','pick','keys','action','Reload','then','message','catch','ami\x20disconnected','command','Command','Action','content','voiceQueues','strategy','answered','loggedIn','pTalking','sumBillable','talking','unmanaged','abandoned','waiting','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','omit','undefined','values','length','voicechannel','validate','map','channels','uniqueid','channel','format','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','find','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','Redirect','exten','context','telephones','outboundChannels','campaigns','event','Event\x20name\x20mandatory','emit','send','checkAfterSend','server','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','bluebird','../properties','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','pause','QueuePause','isConnected','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdbb1,0x105));var _0x1dbb=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0xdbb1[_0x422905];return _0x33dc6c;};'use strict';var _=require(_0x1dbb('0x0'));var util=require('util');var jayson=require('jayson/promise');var schema=require('validate');var BPromise=require(_0x1dbb('0x1'));var moment=require('moment');var config=require('../../../config/environment');var properties=require(_0x1dbb('0x2'));var ami=require('../ami');exports[_0x1dbb('0x3')]=function(_0xd53e45,_0x550e25,_0x55df0f){return new BPromise(function(_0xd43ce8,_0x38259d){var _0x2070a8={'QueuePause':function(_0x7c2269){return new Promise(function(_0x5e622c,_0x3ffb54){var _0xf42424=util['format'](_0x1dbb('0x4'),_0x1dbb('0x5'),_0x7c2269[_0x1dbb('0x6')]);if(_0xd53e45[_0x1dbb('0x7')]&&_0xd53e45[_0x1dbb('0x7')][_0xf42424]&&_0xd53e45[_0x1dbb('0x7')][_0xf42424][_0x1dbb('0x8')]){_0xd53e45[_0x1dbb('0x7')][_0xf42424][_0x1dbb('0x9')]();}if(_0xd53e45[_0x1dbb('0xa')][_0xf42424]){_0xd53e45[_0x1dbb('0xa')][_0xf42424]['updateStatusRealtime']({'statePause':_0x7c2269[_0x1dbb('0xb')]?!![]:![]});}_0x5e622c({'code':0xc8,'message':_0x1dbb('0xc')});});},'Reload':function(_0x332380){var _0xd3fea1=this;return new Promise(function(_0x539f2c,_0x506db4){if(ami[_0x1dbb('0xd')]()==![]){return _0x506db4(_0xd3fea1[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],'ami\x20disconnected'][_0x1dbb('0x11')]('\x20')));}_0x332380=_[_0x1dbb('0x12')](_0x332380,_[_0x1dbb('0x13')](properties['module']));_0x332380[_0x1dbb('0x14')]=_0x1dbb('0x15');return ami['Action'](_0x332380)[_0x1dbb('0x16')](function(_0x376daa){_0x539f2c({'code':0xc8,'message':_0x376daa[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0xb21bc5){_0x506db4(_0xd3fea1[_0x1dbb('0xe')](0x1f5,_0xb21bc5[_0x1dbb('0x17')]));});});},'Command':function(_0x239082){var _0x58aa43=this;return new Promise(function(_0x550dd4,_0x4802ba){if(ami[_0x1dbb('0xd')]()==![]){return _0x4802ba(_0x58aa43[_0x1dbb('0xe')](0x1f4,[config['asterisk']['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')][_0x1dbb('0x11')]('\x20')));}_0x239082=_[_0x1dbb('0x12')](_0x239082,_0x1dbb('0x1a'));_0x239082[_0x1dbb('0x14')]=_0x1dbb('0x1b');return ami[_0x1dbb('0x1c')](_0x239082)[_0x1dbb('0x16')](function(_0x2a2458){_0x550dd4({'code':0xc8,'message':_0x2a2458[_0x1dbb('0x1d')]});})[_0x1dbb('0x18')](function(_0x429253){_0x4802ba(_0x58aa43[_0x1dbb('0xe')](0x1f5,_0x429253[_0x1dbb('0x17')]));});});},'VoiceQueues':function(_0x2945ec){return new Promise(function(_0xc33a9f,_0x18f188){var _0x57a9f0=[];for(var _0x44eff7 in _0xd53e45['voiceQueues']){if(_0xd53e45[_0x1dbb('0x1e')]['hasOwnProperty'](_0x44eff7)){var _0x72cfed=_0xd53e45[_0x1dbb('0x1e')][_0x44eff7];var _0x346372={'id':_0x72cfed['id'],'name':_0x72cfed[_0x1dbb('0x6')],'strategy':_0x72cfed[_0x1dbb('0x1f')],'answered':_0x72cfed[_0x1dbb('0x20')],'available':_0x72cfed['available'],'loggedIn':_0x72cfed[_0x1dbb('0x21')],'pTalking':_0x72cfed[_0x1dbb('0x22')],'sumBillable':_0x72cfed[_0x1dbb('0x23')],'sumDuration':_0x72cfed['sumDuration'],'sumHoldTime':_0x72cfed['sumHoldTime']||0x0,'talking':_0x72cfed[_0x1dbb('0x24')],'total':_0x72cfed['total'],'type':_0x72cfed['type'],'unmanaged':_0x72cfed[_0x1dbb('0x25')],'abandoned':_0x72cfed[_0x1dbb('0x26')],'waiting':_0x72cfed[_0x1dbb('0x27')],'loggedInDb':_0x72cfed[_0x1dbb('0x28')]};if(_0x72cfed[_0x1dbb('0x29')]===_0x1dbb('0x2a')){_0x346372[_0x1dbb('0x2b')]=_0x72cfed[_0x1dbb('0x2b')];_0x346372[_0x1dbb('0x2c')]=_0x72cfed['dialMethod'];_0x346372['dialOriginateCallerIdName']=_0x72cfed[_0x1dbb('0x2d')];_0x346372[_0x1dbb('0x2e')]=_0x72cfed[_0x1dbb('0x2e')];_0x346372['dialOriginateTimeout']=_0x72cfed['dialOriginateTimeout'];_0x346372[_0x1dbb('0x2f')]=_0x72cfed[_0x1dbb('0x2f')];_0x346372[_0x1dbb('0x30')]=_0x72cfed['temp'];_0x346372['outboundAnswerAgiCallsDay']=_0x72cfed[_0x1dbb('0x31')];_0x346372[_0x1dbb('0x32')]=_0x72cfed['outboundAnswerCallsDay'];_0x346372[_0x1dbb('0x33')]=_0x72cfed[_0x1dbb('0x33')];_0x346372[_0x1dbb('0x34')]=_0x72cfed[_0x1dbb('0x34')];_0x346372['outboundCongestionCallsDay']=_0x72cfed[_0x1dbb('0x35')];_0x346372[_0x1dbb('0x36')]=_0x72cfed[_0x1dbb('0x36')];_0x346372[_0x1dbb('0x37')]=_0x72cfed[_0x1dbb('0x37')];_0x346372[_0x1dbb('0x38')]=_0x72cfed['outboundDropCallsDayTimeout'];_0x346372[_0x1dbb('0x39')]=_0x72cfed[_0x1dbb('0x39')];_0x346372['outboundNoSuchCallsDay']=_0x72cfed[_0x1dbb('0x3a')];_0x346372[_0x1dbb('0x3b')]=_0x72cfed[_0x1dbb('0x3b')];_0x346372[_0x1dbb('0x3c')]=_0x72cfed[_0x1dbb('0x3c')];_0x346372['outboundRejectCallsDay']=_0x72cfed[_0x1dbb('0x3d')];_0x346372[_0x1dbb('0x3e')]=_0x72cfed[_0x1dbb('0x3e')];_0x346372[_0x1dbb('0x3f')]=_0x72cfed[_0x1dbb('0x3f')];_0x346372[_0x1dbb('0x40')]=_0x72cfed['predictiveIntervalAvgHoldtime'];_0x346372[_0x1dbb('0x41')]=_0x72cfed[_0x1dbb('0x41')];_0x346372['predictiveIntervalDroppedCallsCallersExit']=_0x72cfed[_0x1dbb('0x42')];_0x346372[_0x1dbb('0x43')]=_0x72cfed[_0x1dbb('0x43')];_0x346372[_0x1dbb('0x44')]=_0x72cfed[_0x1dbb('0x44')];_0x346372[_0x1dbb('0x45')]=_0x72cfed[_0x1dbb('0x45')];_0x346372[_0x1dbb('0x46')]=_0x72cfed[_0x1dbb('0x46')];_0x346372[_0x1dbb('0x47')]=_0x72cfed[_0x1dbb('0x47')];_0x346372[_0x1dbb('0x48')]=_0x72cfed[_0x1dbb('0x48')];_0x346372['predictiveIntervalAvailable']=_0x72cfed[_0x1dbb('0x49')];_0x346372[_0x1dbb('0x4a')]=_0x72cfed[_0x1dbb('0x4a')];_0x346372[_0x1dbb('0x17')]=_0x72cfed[_0x1dbb('0x17')];_0x346372[_0x1dbb('0x4b')]=_0x72cfed[_0x1dbb('0x4b')];_0x346372[_0x1dbb('0x4c')]=_0x72cfed[_0x1dbb('0x4c')];_0x346372[_0x1dbb('0x4d')]=_0x72cfed[_0x1dbb('0x4d')];_0x346372[_0x1dbb('0x4e')]=_0x72cfed[_0x1dbb('0x4e')];_0x346372['erlangBusyFactor']=_0x72cfed[_0x1dbb('0x4f')];_0x346372[_0x1dbb('0x50')]=_0x72cfed[_0x1dbb('0x50')];_0x346372[_0x1dbb('0x51')]=_0x72cfed['startProgressive'];}if(_0x72cfed[_0x1dbb('0x52')]){_0x346372[_0x1dbb('0x52')]={'id':_0x72cfed[_0x1dbb('0x52')]['id'],'name':_0x72cfed[_0x1dbb('0x52')][_0x1dbb('0x6')],'active':_0x72cfed[_0x1dbb('0x52')][_0x1dbb('0x53')],'callerid':_0x72cfed[_0x1dbb('0x52')]['callerid']};}if(_0x72cfed[_0x1dbb('0x54')]){_0x346372[_0x1dbb('0x54')]={'id':_0x72cfed[_0x1dbb('0x54')]['id'],'name':_0x72cfed[_0x1dbb('0x54')][_0x1dbb('0x6')]};}_0x57a9f0[_0x1dbb('0x55')](_0x346372);}}_0xc33a9f({'count':_0x57a9f0['length'],'rows':_0x57a9f0});});},'UpdateVoiceQueue':function(_0x4541bc){return new Promise(function(_0x4a8507,_0x11ae4c){var _0xa2942d=_['find'](_0xd53e45[_0x1dbb('0x1e')],{'id':parseInt(_0x4541bc['id'])});var _0x4349a6=_[_0x1dbb('0x56')](_0x4541bc,['id']);if(_0xa2942d){for(var _0x13972d in _0x4349a6){if(typeof _0x4349a6[_0x13972d]!==_0x1dbb('0x57')&&typeof _0xa2942d[_0x13972d]!=='undefined'){_0xa2942d[_0x13972d]=_0x4349a6[_0x13972d];}}_0x4a8507(_0xa2942d);}else{_0x11ae4c();}});},'VoiceChannels':function(_0x3ac569){return new Promise(function(_0x163437,_0x1406a4){var _0x436b78=_[_0x1dbb('0x58')](_0xd53e45['channels']);_0x163437({'count':_0x436b78[_0x1dbb('0x59')],'rows':_0x436b78});});},'VoiceChannelMixMonitor':function(_0x520fe4){var _0x5bad3f=this;return new Promise(function(_0x1273a0,_0x5dd627){if(ami[_0x1dbb('0xd')]()==![]){return _0x5dd627(_0x5bad3f[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')]['join']('\x20')));}var _0x16cf4f=schema(properties[_0x1dbb('0x5a')])[_0x1dbb('0x5b')](_0x520fe4);if(_0x16cf4f[_0x1dbb('0x59')]>0x0){return _0x5dd627(_0x5bad3f[_0x1dbb('0xe')](0x1f4,_[_0x1dbb('0x5c')](_0x16cf4f,'message')['join'](',\x20')));}var _0xc071cc=_['find'](_0xd53e45[_0x1dbb('0x5d')],{'uniqueid':_0x520fe4[_0x1dbb('0x5e')]});if(_0xc071cc&&_0xc071cc[_0x1dbb('0x5f')]){var _0x4c3b99=util[_0x1dbb('0x60')](_0x1dbb('0x61'),_0x520fe4[_0x1dbb('0x62')]||_0x520fe4[_0x1dbb('0x5e')],_0x520fe4['format']||_0x1dbb('0x63'));return ami[_0x1dbb('0x1c')]({'action':_0x1dbb('0x64'),'channel':_0xc071cc[_0x1dbb('0x5f')],'file':_0x4c3b99,'options':_0x1dbb('0x65')})[_0x1dbb('0x16')](function(_0x191a13){var _0x7a64a3=_[_0x1dbb('0x66')](_0xc071cc[_0x1dbb('0x67')],{'filename':_0x1dbb('0x68')+_0x4c3b99[_0x1dbb('0x69')]()});if(_[_0x1dbb('0x6a')](_0x7a64a3)){_0xc071cc[_0x1dbb('0x67')]['push']({'filename':'/var/spool/asterisk/monitor/'+_0x4c3b99[_0x1dbb('0x69')](),'createdAt':moment()['format'](_0x1dbb('0x6b')),'mixmonitorid':_0x191a13[_0x1dbb('0x6c')],'status':_0x1dbb('0x6d')});}else{_0x7a64a3[_0x1dbb('0x6c')]=_0x191a13[_0x1dbb('0x6c')];_0x7a64a3[_0x1dbb('0x6e')]=_0x1dbb('0x6d');}_0x1273a0({'code':0xc8,'message':[_0x520fe4[_0x1dbb('0x5e')],_0x1dbb('0x6f'),_0x191a13[_0x1dbb('0x6c')]][_0x1dbb('0x11')]('\x20'),'mixmonitorid':_0x191a13['mixmonitorid']});})[_0x1dbb('0x18')](function(_0x46b18e){_0x5dd627(_0x5bad3f['error'](0x1f5,[_0x520fe4[_0x1dbb('0x5e')],_0x46b18e[_0x1dbb('0x17')][_0x1dbb('0x69')]()]['join']('\x20')));});}else{return _0x5dd627(_0x5bad3f[_0x1dbb('0xe')](0x1f5,_0x1dbb('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x1d8594){var _0xeb117b=this;return new Promise(function(_0x453726,_0x18ecbc){if(ami[_0x1dbb('0xd')]()==![]){return _0x18ecbc(_0xeb117b[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')][_0x1dbb('0x11')]('\x20')));}var _0x1fd605=schema(properties[_0x1dbb('0x5a')])[_0x1dbb('0x5b')](_0x1d8594);if(_0x1fd605[_0x1dbb('0x59')]>0x0){return _0x18ecbc(_0xeb117b['error'](0x1f4,_[_0x1dbb('0x5c')](_0x1fd605,_0x1dbb('0x17'))[_0x1dbb('0x11')](',\x20')));}var _0x1d8b95=_[_0x1dbb('0x66')](_0xd53e45[_0x1dbb('0x5d')],{'uniqueid':_0x1d8594[_0x1dbb('0x5e')]});if(_0x1d8b95){return BPromise[_0x1dbb('0x71')]()[_0x1dbb('0x16')](function(){if(_0x1d8b95[_0x1dbb('0x5f')]){return ami[_0x1dbb('0x1c')]({'action':'StopMixMonitor','channel':_0x1d8b95['channel'],'mixmonitorid':_0x1d8594[_0x1dbb('0x6c')]})[_0x1dbb('0x18')](function(_0x341b1b){});}})[_0x1dbb('0x16')](function(){if(_0x1d8b95['destinationchannel']){return ami['Action']({'action':_0x1dbb('0x72'),'channel':_0x1d8b95[_0x1dbb('0x73')],'mixmonitorid':_0x1d8594[_0x1dbb('0x6c')]})[_0x1dbb('0x18')](function(_0x2e42dc){});}})[_0x1dbb('0x16')](function(_0x2b2746){var _0x5b7de7=_[_0x1dbb('0x66')](_0x1d8b95[_0x1dbb('0x67')],{'mixmonitorid':_0x1d8594[_0x1dbb('0x6c')]});if(_0x5b7de7){_0x5b7de7[_0x1dbb('0x6e')]='stop';}})[_0x1dbb('0x16')](function(){var _0x7e4e28=util[_0x1dbb('0x60')](_0x1dbb('0x61'),_0x1d8594[_0x1dbb('0x62')]||_0x1d8594[_0x1dbb('0x5e')],_0x1d8594[_0x1dbb('0x60')]||_0x1dbb('0x63'));var _0x30a6ef=_['find'](_0x1d8b95[_0x1dbb('0x67')],{'filename':_0x1dbb('0x68')+_0x7e4e28[_0x1dbb('0x69')]()});if(_0x30a6ef){_0x30a6ef[_0x1dbb('0x6e')]=_0x1dbb('0x74');}})['then'](function(){_0x453726({'code':0xc8,'message':[_0x1d8594[_0x1dbb('0x5e')],_0x1dbb('0x75')]['join']('\x20')});})[_0x1dbb('0x18')](function(_0x2c4a2e){_0x18ecbc(_0xeb117b[_0x1dbb('0xe')](0x1f5,[_0x1d8594[_0x1dbb('0x5e')],_0x2c4a2e[_0x1dbb('0x17')][_0x1dbb('0x69')]()][_0x1dbb('0x11')]('\x20')));});}else{return _0x18ecbc(_0xeb117b['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0xaa3950){return new Promise(function(_0x30d7dc,_0x16fd57){var _0x44d430=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x76')]);_0x30d7dc({'count':_0x44d430['length'],'rows':_0x44d430});});},'VoiceQueuesChannel':function(_0x3d62d9){var _0x51999d=this;return new Promise(function(_0x5a2713,_0x2d8e37){var _0x3aac00=schema(properties[_0x1dbb('0x77')])[_0x1dbb('0x5b')](_0x3d62d9);if(_0x3aac00[_0x1dbb('0x59')]>0x0){return _0x2d8e37(_0x51999d[_0x1dbb('0xe')](0x1f4,_[_0x1dbb('0x5c')](_0x3aac00,_0x1dbb('0x17'))['join'](',\x20')));}var _0x2bf585=_[_0x1dbb('0x66')](_0xd53e45[_0x1dbb('0x76')],{'uniqueid':_0x3d62d9[_0x1dbb('0x5e')]});if(_0x2bf585){_0x5a2713(_0x2bf585);}else{return _0x2d8e37(_0x51999d['error'](0x1f5,_0x1dbb('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x5f1076){var _0x44bf98=this;return new Promise(function(_0x44549d,_0x5e0bbd){if(ami[_0x1dbb('0xd')]()==![]){return _0x5e0bbd(_0x44bf98[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],'ami\x20disconnected'][_0x1dbb('0x11')]('\x20')));}var _0x2752c1=schema(properties[_0x1dbb('0x78')])[_0x1dbb('0x5b')](_0x5f1076);if(_0x2752c1[_0x1dbb('0x59')]>0x0){return _0x5e0bbd(_0x44bf98[_0x1dbb('0xe')](0x1f4,_['map'](_0x2752c1,_0x1dbb('0x17'))['join'](',\x20')));}var _0x520f45=_[_0x1dbb('0x66')](_0xd53e45['queueChannels'],{'uniqueid':_0x5f1076[_0x1dbb('0x5e')]});if(_0x520f45&&_0x520f45[_0x1dbb('0x5f')]){return ami[_0x1dbb('0x1c')]({'action':_0x1dbb('0x79'),'channel':_0x520f45[_0x1dbb('0x5f')]})[_0x1dbb('0x16')](function(_0x4f60b4){_0x44549d({'code':0xc8,'message':[_0x5f1076[_0x1dbb('0x5e')],_0x4f60b4[_0x1dbb('0x17')][_0x1dbb('0x69')]()][_0x1dbb('0x11')]('\x20')});})[_0x1dbb('0x18')](function(_0x59d7c3){_0x5e0bbd(_0x44bf98['error'](0x1f5,[_0x5f1076[_0x1dbb('0x5e')],_0x59d7c3[_0x1dbb('0x17')]['toLowerCase']()][_0x1dbb('0x11')]('\x20')));});}else{return _0x5e0bbd(_0x44bf98[_0x1dbb('0xe')](0x1f5,_0x1dbb('0x70')));}});},'VoiceQueuesChannelRedirect':function(_0x541051){var _0x57f8c5=this;return new Promise(function(_0x2968f5,_0x29be95){if(ami[_0x1dbb('0xd')]()==![]){return _0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')][_0x1dbb('0x11')]('\x20')));}var _0x986f4f=schema(properties['voicequeuechannelredirect'])[_0x1dbb('0x5b')](_0x541051);if(_0x986f4f[_0x1dbb('0x59')]>0x0){return _0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f4,_[_0x1dbb('0x5c')](_0x986f4f,_0x1dbb('0x17'))[_0x1dbb('0x11')](',\x20')));}var _0x2c6b00=_[_0x1dbb('0x66')](_0xd53e45[_0x1dbb('0x76')],{'uniqueid':_0x541051['uniqueid']});if(_0x2c6b00&&_0x2c6b00[_0x1dbb('0x5f')]){return ami['Action']({'action':_0x1dbb('0x7a'),'channel':_0x2c6b00['channel'],'exten':_0x541051[_0x1dbb('0x7b')],'context':_0x541051[_0x1dbb('0x7c')]||_0x2c6b00['context'],'priority':0x1})[_0x1dbb('0x16')](function(_0x1232ce){_0x2968f5({'code':0xc8,'message':[_0x541051[_0x1dbb('0x5e')],_0x1232ce[_0x1dbb('0x17')][_0x1dbb('0x69')]()]['join']('\x20')});})[_0x1dbb('0x18')](function(_0x3a2536){_0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f5,[_0x541051[_0x1dbb('0x5e')],_0x3a2536[_0x1dbb('0x17')][_0x1dbb('0x69')]()]['join']('\x20')));});}else{return _0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f5,_0x1dbb('0x70')));}});},'Agents':function(_0x2939a0){return new Promise(function(_0x471573,_0x5a5cb5){var _0x23b2aa=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0xa')]);_0x471573({'count':_0x23b2aa[_0x1dbb('0x59')],'rows':_0x23b2aa});});},'Telephones':function(_0x20b43a){return new Promise(function(_0x3e9bba,_0xec8c13){var _0x3e22a7=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x7d')]);_0x3e9bba({'count':_0x3e22a7[_0x1dbb('0x59')],'rows':_0x3e22a7});});},'Trunks':function(_0x3e0274){return new Promise(function(_0x5eb878,_0x2e3fd8){var _0x3270de=_[_0x1dbb('0x58')](_0xd53e45['trunks']);_0x5eb878({'count':_0x3270de[_0x1dbb('0x59')],'rows':_0x3270de});});},'OutboundChannels':function(_0x36ada9){return new Promise(function(_0x298141,_0x5339d9){var _0x5264ef=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x7e')]);_0x298141({'count':_0x5264ef[_0x1dbb('0x59')],'rows':_0x5264ef});});},'Outbound':function(_0x6bb668){return new Promise(function(_0x34d856,_0x49274e){_0x34d856(_0xd53e45[_0x1dbb('0x2a')]);});},'Campaigns':function(_0x1cd71c){return new Promise(function(_0x24921d,_0x43ee89){var _0x492c33=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x7f')]);_0x24921d({'count':_0x492c33[_0x1dbb('0x59')],'rows':_0x492c33});});},'VoiceQueuesPreview':function(_0x24dca8){var _0x373ee8=this;return new Promise(function(_0x3c0dc4,_0x5d3fe4){_0x550e25['run'](_0x24dca8['id'])[_0x1dbb('0x16')](function(_0x1c459e){_0x3c0dc4({'code':0xc8,'message':_0x1c459e[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0x44fd09){_0x5d3fe4(_0x373ee8[_0x1dbb('0xe')](0x1f4,_0x44fd09['message']));});});},'EventManager':function(_0x52e5b0){var _0x21db27=this;return new Promise(function(_0xc01d4c,_0x43a488){if(!_0x52e5b0[_0x1dbb('0x80')]){return _0x43a488(_0x21db27['error'](0x1f4,_0x1dbb('0x81')));}ami[_0x1dbb('0x82')]('custom:'+_0x52e5b0[_0x1dbb('0x80')],_0x52e5b0[_0x1dbb('0x17')]);_0xc01d4c({'code':0xc8,'message':_0x52e5b0});});},'FaxAccounts':function(_0x4cac08){return new Promise(function(_0x52bb25,_0x3c4d97){var _0x311d6d=_[_0x1dbb('0x58')](_0xd53e45['faxAccounts']);_0x52bb25({'count':_0x311d6d['length'],'rows':_0x311d6d});});},'SendFax':function(_0x4653d9){var _0x4ecc56=this;return new Promise(function(_0x446cbf,_0x2a7b73){_0x55df0f[_0x1dbb('0x83')](_0x4653d9)[_0x1dbb('0x16')](function(_0x467b90){_0x446cbf({'code':0xc8,'message':_0x467b90[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0x19657e){_0x2a7b73(_0x4ecc56['error'](0x1f4,_0x19657e['message']));});});},'CheckAfterSend':function(_0x17d5c7){var _0x5ec2d7=this;return new Promise(function(_0xfb92a2,_0x99b718){_0x55df0f[_0x1dbb('0x84')](_0x17d5c7)[_0x1dbb('0x16')](function(_0x31e859){_0xfb92a2({'code':0xc8,'message':_0x31e859[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0x1a96c3){_0x99b718(_0x5ec2d7[_0x1dbb('0xe')](0x1f4,_0x1a96c3['message']));});});}};var _0x4f2c36=jayson[_0x1dbb('0x85')](_0x2070a8)['http']();_0x4f2c36['on'](_0x1dbb('0xe'),function(_0x458b6e){return _0x38259d(_0x458b6e);});_0x4f2c36[_0x1dbb('0x3')](0x232a,_0x1dbb('0x86'),function(){console[_0x1dbb('0x87')](_0x1dbb('0x88'),0x232a);return _0xd43ce8(_0x1dbb('0x89')+0x232a);});});};
\ No newline at end of file
index e4b74f0..646ec4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a8b=['then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','isNil','format','user:%s','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','info','stringify','emit','exec','data2','xmd-contactid','ListId','map','routeId','destcalleridnum','calleridnum','firstName','phone','mobile','fax','createdAt','scheduledAt','updatedAt','resolve'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7a8b,0x15c));var _0xb7a8=function(_0x2f2a8b,_0x4208b3){_0x2f2a8b=_0x2f2a8b-0x0;var _0x586892=_0x7a8b[_0x2f2a8b];return _0x586892;};'use strict';var _=require(_0xb7a8('0x0'));var BPromise=require(_0xb7a8('0x1'));var Redis=require(_0xb7a8('0x2'));var util=require(_0xb7a8('0x3'));var config=require(_0xb7a8('0x4'));var logger=require(_0xb7a8('0x5'))(_0xb7a8('0x6'));var cmContactRpc=require(_0xb7a8('0x7'));config[_0xb7a8('0x8')]=_[_0xb7a8('0x9')](config[_0xb7a8('0x8')],{'host':_0xb7a8('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0xdebeef,_0x4a6508,_0x8758eb,_0x340233,_0x27a94d){logger[_0xb7a8('0xb')]('[CM][%s][%s]',_0xdebeef,_0x4a6508['id'],_0x8758eb,_0x340233,JSON[_0xb7a8('0xc')](_0x27a94d));io['to'](_0x8758eb)[_0xb7a8('0xd')](_0x340233,_0x27a94d);}exports[_0xb7a8('0xe')]=function(_0x2f6c92,_0x54b0ce,_0x937abd,_0xcfa34b){var _0x288e40,_0x2b78ca;var _0x401257={};var _0xce7c50=Number(_0x937abd['data1']);var _0x40cb45=_0x937abd[_0xb7a8('0xf')]?Boolean(Number(_0x937abd['data2'])):![];var _0x5a4fd3;if(_0xcfa34b[_0xb7a8('0x10')]){_0x401257['id']=_0xcfa34b[_0xb7a8('0x10')];}if(!_0x401257['id']){_0x401257[_0xb7a8('0x11')]=_0xce7c50;_0x5a4fd3=_0x937abd['data3']&&_0x937abd['data3']!=='0'?_0x937abd['data3']['split'](','):['phone'];_0x401257['$or']=_[_0xb7a8('0x12')](_0x5a4fd3,function(_0x37aad8){var _0x54afa2={};_0x54afa2[_0x37aad8]=_0xcfa34b[_0xb7a8('0x13')]?_0xcfa34b[_0xb7a8('0x14')]:_0xcfa34b[_0xb7a8('0x15')];return _0x54afa2;});}var _0x35181b=['id',_0xb7a8('0x16'),'lastName',_0xb7a8('0x17'),_0xb7a8('0x18'),_0xb7a8('0x19'),_0xb7a8('0x11'),_0xb7a8('0x1a'),_0xb7a8('0x1b'),_0xb7a8('0x1c')];var _0x18443c=_['union'](_0x35181b,_0x5a4fd3);BPromise[_0xb7a8('0x1d')]()[_0xb7a8('0x1e')](cmContactRpc[_0xb7a8('0x1f')]({'attributes':_0x18443c,'where':_0x401257}))['then'](function(_0x41f121){_0x2b78ca=_0x41f121;if(!_[_0xb7a8('0x20')](_0x2b78ca)){if(_0x2b78ca[_0xb7a8('0x21')]===0x1){_0x288e40=_0x2b78ca[0x0];logger[_0xb7a8('0xb')](_0xb7a8('0x22'),_0xcfa34b['uniqueid'],_0x54b0ce['id'],_0x288e40['id']);}else{logger[_0xb7a8('0xb')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0xcfa34b[_0xb7a8('0x23')],_0x54b0ce['id'],_['map'](_0x2b78ca,'id')[_0xb7a8('0x24')](','));}return;}else{logger['info'](_0xb7a8('0x25'),_0xcfa34b[_0xb7a8('0x23')],_0x54b0ce['id']);var _0x1f49a9={'ListId':_0xce7c50};var _0x1abc56=_0x937abd[_0xb7a8('0x26')]&&_0x937abd[_0xb7a8('0x26')]!=='0'?_0x937abd[_0xb7a8('0x26')]:'phone';if(_0x40cb45){logger[_0xb7a8('0xb')](_0xb7a8('0x27'),_0xcfa34b[_0xb7a8('0x23')],_0x54b0ce['id']);_0x1f49a9[_0x1abc56]=_['isNil'](_0xcfa34b[_0xb7a8('0x13')])?_0xcfa34b[_0xb7a8('0x15')]:_0xcfa34b[_0xb7a8('0x14')];if(_['isNil'](_0xcfa34b['routeId'])){_0x1f49a9[_0xb7a8('0x16')]=_0xcfa34b[_0xb7a8('0x28')]&&_0xcfa34b[_0xb7a8('0x28')]!==_0xb7a8('0x29')?_0xcfa34b[_0xb7a8('0x28')]:_0xb7a8('0x2a');}else{_0x1f49a9['firstName']=_0xcfa34b['destcalleridname']&&_0xcfa34b[_0xb7a8('0x2b')]!=='<unknown>'?_0xcfa34b[_0xb7a8('0x2b')]:_0xb7a8('0x2a');}return BPromise[_0xb7a8('0x1d')]()[_0xb7a8('0x1e')](cmContactRpc[_0xb7a8('0x2c')](_0x1f49a9))[_0xb7a8('0x1e')](function(_0x47edc2){_0x288e40=_0x47edc2;_0x2b78ca[_0xb7a8('0x2d')](_0x47edc2);if(_0x288e40){logger[_0xb7a8('0xb')]('[CM][%s][%s]\x20Contact\x20created:%s',_0xcfa34b[_0xb7a8('0x23')],_0x54b0ce['id'],_0x288e40['id']);}return;});}else{logger['info']('[CM][%s][%s]\x20Autocreate\x20disabled',_0xcfa34b[_0xb7a8('0x23')],_0x54b0ce['id']);_0x1f49a9[_0x1abc56]=_[_0xb7a8('0x2e')](_0xcfa34b['routeId'])?_0xcfa34b['calleridnum']:_0xcfa34b[_0xb7a8('0x14')];if(_[_0xb7a8('0x2e')](_0xcfa34b[_0xb7a8('0x13')])){_0x1f49a9['firstName']=_0xcfa34b[_0xb7a8('0x28')]&&_0xcfa34b['calleridname']!==_0xb7a8('0x29')?_0xcfa34b[_0xb7a8('0x28')]:'Unknown';}else{_0x1f49a9[_0xb7a8('0x16')]=_0xcfa34b[_0xb7a8('0x2b')]&&_0xcfa34b[_0xb7a8('0x2b')]!=='<unknown>'?_0xcfa34b['destcalleridname']:_0xb7a8('0x2a');}_0x288e40=_0x1f49a9;_0x2b78ca['push'](_0x1f49a9);return;}}})['then'](function(){if(_0x2f6c92){emit(_0xcfa34b[_0xb7a8('0x23')],_0x54b0ce,util[_0xb7a8('0x2f')](_0xb7a8('0x30'),_0x2f6c92[_0xb7a8('0x31')]),util[_0xb7a8('0x2f')](_0xb7a8('0x32'),_0x937abd[_0xb7a8('0x33')][_0xb7a8('0x34')]()),{'evt':_[_0xb7a8('0x35')](_0xcfa34b,{'autoCreate':_0x40cb45}),'contact':_0x288e40===undefined?{}:_0x288e40,'contacts':_0x2b78ca[_0xb7a8('0x21')]===0x0?undefined:_0x2b78ca});}});};
\ No newline at end of file
+var _0x2b12=['updatedAt','union','resolve','getContacts','isEmpty','length','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','uniqueid','isNil','firstName','calleridname','<unknown>','Unknown','destcalleridname','then','push','format','user:%s','trigger:%s','toLowerCase','merge','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','info','[CM][%s][%s]','stringify','exec','data1','data2','xmd-contactid','ListId','data3','phone','$or','map','routeId','destcalleridnum','calleridnum','mobile','fax'];(function(_0x5f0f92,_0x328856){var _0x169ee8=function(_0x1c0df8){while(--_0x1c0df8){_0x5f0f92['push'](_0x5f0f92['shift']());}};_0x169ee8(++_0x328856);}(_0x2b12,0xaf));var _0x22b1=function(_0x3e1a00,_0x442db9){_0x3e1a00=_0x3e1a00-0x0;var _0x382d36=_0x2b12[_0x3e1a00];return _0x382d36;};'use strict';var _=require('lodash');var BPromise=require(_0x22b1('0x0'));var Redis=require(_0x22b1('0x1'));var util=require(_0x22b1('0x2'));var config=require(_0x22b1('0x3'));var logger=require(_0x22b1('0x4'))(_0x22b1('0x5'));var cmContactRpc=require(_0x22b1('0x6'));config['redis']=_['defaults'](config[_0x22b1('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x22b1('0x7')]));function emit(_0x5c5d35,_0x1381a7,_0x4f85f4,_0x1dbf69,_0xcd1154){logger[_0x22b1('0x8')](_0x22b1('0x9'),_0x5c5d35,_0x1381a7['id'],_0x4f85f4,_0x1dbf69,JSON[_0x22b1('0xa')](_0xcd1154));io['to'](_0x4f85f4)['emit'](_0x1dbf69,_0xcd1154);}exports[_0x22b1('0xb')]=function(_0x560e94,_0x17a929,_0x599404,_0x540a6e){var _0x9297a9,_0x45c504;var _0x27a68b={};var _0x1fdb7d=Number(_0x599404[_0x22b1('0xc')]);var _0x460f92=_0x599404[_0x22b1('0xd')]?Boolean(Number(_0x599404['data2'])):![];var _0x31a857;if(_0x540a6e[_0x22b1('0xe')]){_0x27a68b['id']=_0x540a6e[_0x22b1('0xe')];}if(!_0x27a68b['id']){_0x27a68b[_0x22b1('0xf')]=_0x1fdb7d;_0x31a857=_0x599404[_0x22b1('0x10')]&&_0x599404[_0x22b1('0x10')]!=='0'?_0x599404[_0x22b1('0x10')]['split'](','):[_0x22b1('0x11')];_0x27a68b[_0x22b1('0x12')]=_[_0x22b1('0x13')](_0x31a857,function(_0x38471a){var _0x1ebf3c={};_0x1ebf3c[_0x38471a]=_0x540a6e[_0x22b1('0x14')]?_0x540a6e[_0x22b1('0x15')]:_0x540a6e[_0x22b1('0x16')];return _0x1ebf3c;});}var _0x74cb58=['id','firstName','lastName',_0x22b1('0x11'),_0x22b1('0x17'),_0x22b1('0x18'),_0x22b1('0xf'),'createdAt','scheduledAt',_0x22b1('0x19')];var _0x49a194=_[_0x22b1('0x1a')](_0x74cb58,_0x31a857);BPromise[_0x22b1('0x1b')]()['then'](cmContactRpc[_0x22b1('0x1c')]({'attributes':_0x49a194,'where':_0x27a68b}))['then'](function(_0x1a63f5){_0x45c504=_0x1a63f5;if(!_[_0x22b1('0x1d')](_0x45c504)){if(_0x45c504[_0x22b1('0x1e')]===0x1){_0x9297a9=_0x45c504[0x0];logger[_0x22b1('0x8')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x540a6e['uniqueid'],_0x17a929['id'],_0x9297a9['id']);}else{logger[_0x22b1('0x8')](_0x22b1('0x1f'),_0x540a6e['uniqueid'],_0x17a929['id'],_[_0x22b1('0x13')](_0x45c504,'id')[_0x22b1('0x20')](','));}return;}else{logger[_0x22b1('0x8')](_0x22b1('0x21'),_0x540a6e['uniqueid'],_0x17a929['id']);var _0x467607={'ListId':_0x1fdb7d};var _0x3297cb=_0x599404[_0x22b1('0x22')]&&_0x599404['data4']!=='0'?_0x599404[_0x22b1('0x22')]:_0x22b1('0x11');if(_0x460f92){logger[_0x22b1('0x8')](_0x22b1('0x23'),_0x540a6e[_0x22b1('0x24')],_0x17a929['id']);_0x467607[_0x3297cb]=_[_0x22b1('0x25')](_0x540a6e[_0x22b1('0x14')])?_0x540a6e[_0x22b1('0x16')]:_0x540a6e[_0x22b1('0x15')];if(_[_0x22b1('0x25')](_0x540a6e[_0x22b1('0x14')])){_0x467607[_0x22b1('0x26')]=_0x540a6e[_0x22b1('0x27')]&&_0x540a6e[_0x22b1('0x27')]!==_0x22b1('0x28')?_0x540a6e[_0x22b1('0x27')]:_0x22b1('0x29');}else{_0x467607[_0x22b1('0x26')]=_0x540a6e['destcalleridname']&&_0x540a6e[_0x22b1('0x2a')]!=='<unknown>'?_0x540a6e[_0x22b1('0x2a')]:_0x22b1('0x29');}return BPromise[_0x22b1('0x1b')]()[_0x22b1('0x2b')](cmContactRpc['createContact'](_0x467607))[_0x22b1('0x2b')](function(_0x43e2fd){_0x9297a9=_0x43e2fd;_0x45c504[_0x22b1('0x2c')](_0x43e2fd);if(_0x9297a9){logger[_0x22b1('0x8')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x540a6e[_0x22b1('0x24')],_0x17a929['id'],_0x9297a9['id']);}return;});}else{logger[_0x22b1('0x8')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x540a6e['uniqueid'],_0x17a929['id']);_0x467607[_0x3297cb]=_[_0x22b1('0x25')](_0x540a6e[_0x22b1('0x14')])?_0x540a6e[_0x22b1('0x16')]:_0x540a6e[_0x22b1('0x15')];if(_[_0x22b1('0x25')](_0x540a6e['routeId'])){_0x467607[_0x22b1('0x26')]=_0x540a6e[_0x22b1('0x27')]&&_0x540a6e[_0x22b1('0x27')]!=='<unknown>'?_0x540a6e['calleridname']:_0x22b1('0x29');}else{_0x467607[_0x22b1('0x26')]=_0x540a6e[_0x22b1('0x2a')]&&_0x540a6e[_0x22b1('0x2a')]!==_0x22b1('0x28')?_0x540a6e[_0x22b1('0x2a')]:_0x22b1('0x29');}_0x9297a9=_0x467607;_0x45c504[_0x22b1('0x2c')](_0x467607);return;}}})[_0x22b1('0x2b')](function(){if(_0x560e94){emit(_0x540a6e[_0x22b1('0x24')],_0x17a929,util[_0x22b1('0x2d')](_0x22b1('0x2e'),_0x560e94['name']),util[_0x22b1('0x2d')](_0x22b1('0x2f'),_0x599404['action'][_0x22b1('0x30')]()),{'evt':_[_0x22b1('0x31')](_0x540a6e,{'autoCreate':_0x460f92}),'contact':_0x9297a9===undefined?{}:_0x9297a9,'contacts':_0x45c504[_0x22b1('0x1e')]===0x0?undefined:_0x45c504});}});};
\ No newline at end of file
index 4c55eee..729ca35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ff=['exec','integration','queue','voiceExtensions','urlforward','script','parse','query','search','replace','AllConditions','every','checkConditions','channel','AnyConditions','account','chat','ChatWebsiteId','operator','upperFirst','AccountId','interaction','message','event','value','agent','lastevent','routeId','exports','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','zendeskAccounts','sugarcrmAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','salesforceAccounts','zohoAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:incomingmessage','custom:outgoingmessage','prototype','emit','info','clone','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','Actions','length','action','contactmanager','motionbar','browser','data1','data2','render','html','template\x20not\x20found','uri','buildUri','data3','isNil','data4','uriLocation','windowWidth','data5','800','windowHeight','data6','600','winapp','winApplication','winArguments','format','user:%s','name','trigger:%s:%s','jscripty','trigger:%s','toLowerCase'];(function(_0x4dbaad,_0x730318){var _0x226c72=function(_0x501972){while(--_0x501972){_0x4dbaad['push'](_0x4dbaad['shift']());}};_0x226c72(++_0x730318);}(_0x50ff,0x95));var _0xf50f=function(_0x13f550,_0x3dc497){_0x13f550=_0x13f550-0x0;var _0x42ccf5=_0x50ff[_0x13f550];return _0x42ccf5;};'use strict';var util=require('util');var _=require(_0xf50f('0x0'));var url=require(_0xf50f('0x1'));var Mustache=require(_0xf50f('0x2'));var Redis=require(_0xf50f('0x3'));var urlforward=require(_0xf50f('0x4'));var integration=require(_0xf50f('0x5'));var cmContact=require(_0xf50f('0x6'));var script=require(_0xf50f('0x7'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xf50f('0x8'));var ami=require(_0xf50f('0x9'));config[_0xf50f('0xa')]=_[_0xf50f('0xb')](config[_0xf50f('0xa')],{'host':_0xf50f('0xc'),'port':0x18eb});var io=require(_0xf50f('0xd'))(new Redis(config[_0xf50f('0xa')]));var operators={'equals':function(_0x3941ad,_0x1d4d36){return _0x3941ad==_0x1d4d36;},'not_equals':function(_0x4c8e41,_0x3cabc9){return _0x4c8e41!=_0x3cabc9;}};var barAndWebActions=[_0xf50f('0xe'),'url','winapp'];function Trigger(_0x5957f2){this['triggers']=_0x5957f2[_0xf50f('0xf')];this[_0xf50f('0x10')]=_0x5957f2[_0xf50f('0x10')];this[_0xf50f('0x11')]=_0x5957f2['voiceQueues'];this[_0xf50f('0x12')]=_0x5957f2[_0xf50f('0x12')];this['voiceExtensions']=_0x5957f2['voiceExtensions'];this[_0xf50f('0x13')]=_0x5957f2[_0xf50f('0x13')];this['freshdeskAccounts']=_0x5957f2['freshdeskAccounts'];this['salesforceAccounts']=_0x5957f2['salesforceAccounts'];this[_0xf50f('0x14')]=_0x5957f2['sugarcrmAccounts'];this['zohoAccounts']=_0x5957f2['zohoAccounts'];this['deskAccounts']=_0x5957f2[_0xf50f('0x15')];this[_0xf50f('0x16')]=_0x5957f2[_0xf50f('0x16')];this[_0xf50f('0x17')]=_0x5957f2[_0xf50f('0x17')];this[_0xf50f('0x18')]=_0x5957f2[_0xf50f('0x18')];this[_0xf50f('0x19')]=_0x5957f2[_0xf50f('0x19')];this[_0xf50f('0x1a')]={'zendesk':this[_0xf50f('0x13')],'salesforce':this[_0xf50f('0x1b')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0xf50f('0x14')],'zoho':this[_0xf50f('0x1c')],'desk':this[_0xf50f('0x15')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0xf50f('0x18')],'freshsales':this[_0xf50f('0x19')],'servicenow':this[_0xf50f('0x17')]};ami['on'](_0xf50f('0x1d'),this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x20'),this[_0xf50f('0x1e')]['bind'](this));ami['on'](_0xf50f('0x21'),this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x22'),this[_0xf50f('0x1e')]['bind'](this));ami['on'](_0xf50f('0x23'),this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x24'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentbusy',this[_0xf50f('0x1e')]['bind'](this));ami['on'](_0xf50f('0x25'),this['syncCustomEvent'][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x26'),this['syncCustomEvent'][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x27'),this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x28'),this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on']('custom:timeout',this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x29'),this[_0xf50f('0x2a')]['bind'](this));ami['on'](_0xf50f('0x2b'),this[_0xf50f('0x2a')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x2c'),this[_0xf50f('0x2a')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x2d'),this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on']('custom:closedinteraction',this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on'](_0xf50f('0x2e'),this[_0xf50f('0x1e')]['bind'](this));ami['on'](_0xf50f('0x2f'),this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on']('custom:acceptmessage',this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));ami['on']('custom:rejectmessage',this[_0xf50f('0x1e')][_0xf50f('0x1f')](this));}Trigger[_0xf50f('0x30')][_0xf50f('0x31')]=function(_0x3fd37b,_0x2adff5,_0x90bc9c){logger[_0xf50f('0x32')](_0x3fd37b,_0x2adff5,JSON['stringify'](_0x90bc9c));io['to'](_0x3fd37b)[_0xf50f('0x31')](_0x2adff5,_0x90bc9c);};Trigger['prototype'][_0xf50f('0x1e')]=function(_0x1cf618){var _0x45f8d1=_[_0xf50f('0x33')](_0x1cf618);this[_0xf50f('0x34')](_0x45f8d1);};Trigger['prototype'][_0xf50f('0x2a')]=function(_0x11da42){if(this[_0xf50f('0x10')][_0x11da42[_0xf50f('0x35')]]){this[_0xf50f('0x1e')](_0x11da42);}};Trigger[_0xf50f('0x30')][_0xf50f('0x34')]=function(_0xc87035){var _0x47fd63;for(var _0x263cfa in this[_0xf50f('0xf')]){if(this[_0xf50f('0xf')][_0xf50f('0x36')](_0x263cfa)){if(this[_0xf50f('0xf')][_0x263cfa][_0xf50f('0x37')]){_0x47fd63=this[_0xf50f('0x38')](this[_0xf50f('0xf')][_0x263cfa],_0xc87035);if(_0x47fd63){_[_0xf50f('0x39')](_0xc87035,_0xc87035['variables']);for(var _0x3e32dc=0x0,_0x2c36bd,_0xc05bcd,_0x554410;_0x3e32dc<this[_0xf50f('0xf')][_0x263cfa][_0xf50f('0x3a')][_0xf50f('0x3b')];_0x3e32dc+=0x1){_0x2c36bd=this[_0xf50f('0xf')][_0x263cfa][_0xf50f('0x3a')][_0x3e32dc];if(this[_0xf50f('0x10')][_0xc87035[_0xf50f('0x35')]]){switch(_0x2c36bd[_0xf50f('0x3c')]['toLowerCase']()){case _0xf50f('0x3d'):break;case _0xf50f('0x3e'):case _0xf50f('0x3f'):var _0x12625d={};switch(barAndWebActions[_0x2c36bd[_0xf50f('0x40')]]){case _0xf50f('0xe'):_0x12625d['TemplateId']=_0x2c36bd[_0xf50f('0x41')];_0x12625d['html']=this[_0xf50f('0x12')][_0x2c36bd[_0xf50f('0x41')]]?Mustache[_0xf50f('0x42')](this[_0xf50f('0x12')][_0x2c36bd[_0xf50f('0x41')]][_0xf50f('0x43')],_0xc87035):_0xf50f('0x44');break;case _0xf50f('0x1'):_0x12625d[_0xf50f('0x45')]=this[_0xf50f('0x46')](_0x2c36bd[_0xf50f('0x41')],_0xc87035,_['isNil'](_0x2c36bd['data3'])?!![]:parseInt(_0x2c36bd[_0xf50f('0x47')],0xa));if(_[_0xf50f('0x48')](_0x2c36bd[_0xf50f('0x49')])){_0x12625d['location']='0';}else{_0x12625d[_0xf50f('0x4a')]=_0x2c36bd[_0xf50f('0x49')];_0x12625d[_0xf50f('0x4b')]=_[_0xf50f('0x48')](_0x2c36bd[_0xf50f('0x4c')])?_0xf50f('0x4d'):_0x2c36bd[_0xf50f('0x4c')];_0x12625d[_0xf50f('0x4e')]=_['isNil'](_0x2c36bd[_0xf50f('0x4f')])?_0xf50f('0x50'):_0x2c36bd[_0xf50f('0x4f')];}break;case _0xf50f('0x51'):_0x12625d[_0xf50f('0x52')]=_0x2c36bd[_0xf50f('0x41')]?Mustache[_0xf50f('0x42')](_0x2c36bd[_0xf50f('0x41')],_0xc87035):'';_0x12625d[_0xf50f('0x53')]=_0x2c36bd[_0xf50f('0x47')]?Mustache[_0xf50f('0x42')](_0x2c36bd[_0xf50f('0x47')],_0xc87035):'';break;}this[_0xf50f('0x31')](util[_0xf50f('0x54')](_0xf50f('0x55'),this[_0xf50f('0x10')][_0xc87035['interface']][_0xf50f('0x56')]),util[_0xf50f('0x54')](_0xf50f('0x57'),_0x2c36bd[_0xf50f('0x3c')]['toLowerCase'](),barAndWebActions[_0x2c36bd[_0xf50f('0x40')]]),_[_0xf50f('0x39')](_0x12625d,_0xc87035));break;case _0xf50f('0x58'):this['emit'](util[_0xf50f('0x54')](_0xf50f('0x55'),this['agents'][_0xc87035[_0xf50f('0x35')]][_0xf50f('0x56')]),util[_0xf50f('0x54')](_0xf50f('0x59'),_0x2c36bd[_0xf50f('0x3c')][_0xf50f('0x5a')]()),_[_0xf50f('0x39')]({'ProjectId':parseInt(_0x2c36bd[_0xf50f('0x40')],0xa)},_0xc87035));break;default:this[_0xf50f('0x31')](util['format'](_0xf50f('0x55'),this['agents'][_0xc87035['interface']]['name']),util['format'](_0xf50f('0x59'),_0x2c36bd[_0xf50f('0x3c')][_0xf50f('0x5a')]()),_[_0xf50f('0x39')]({},_0x2c36bd,_0xc87035));}}switch(_0x2c36bd['action'][_0xf50f('0x5a')]()){case _0xf50f('0x3d'):cmContact[_0xf50f('0x5b')](this['agents'][_0xc87035[_0xf50f('0x35')]],this[_0xf50f('0xf')][_0x263cfa],_0x2c36bd,_0xc87035);break;case _0xf50f('0x5c'):integration[_0xf50f('0x5b')](_0x2c36bd,_0xc87035,this[_0xf50f('0x1a')],this['agents'][_0xc87035['interface']],this[_0xf50f('0x11')][_0xc87035[_0xf50f('0x5d')]],this[_0xf50f('0x5e')][_0xc87035['routeId']]);break;case _0xf50f('0x5f'):urlforward[_0xf50f('0x5b')](_0x2c36bd,_0xc87035);break;case _0xf50f('0x60'):script[_0xf50f('0x5b')](_0x2c36bd,_0xc87035);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0x47915e,_0x24b2ff,_0x11dfb5){var _0x36ede1=url[_0xf50f('0x61')](Mustache[_0xf50f('0x42')](_0x47915e,_0x24b2ff),!![]);if(_0x11dfb5){_['merge'](_0x36ede1[_0xf50f('0x62')],_0x24b2ff);}delete _0x36ede1[_0xf50f('0x63')];var _0x1cfe75=url[_0xf50f('0x54')](_0x36ede1);_0x1cfe75=_0x1cfe75[_0xf50f('0x64')](/\/\?/g,'?');return _0x1cfe75;};Trigger['prototype'][_0xf50f('0x38')]=function(_0x42bec2,_0xfc26c2){var _0x30be01=!![],_0x550ff5=!![];if(_0x42bec2[_0xf50f('0x65')]['length']){_0x30be01=_[_0xf50f('0x66')](_0x42bec2['AllConditions'],this[_0xf50f('0x67')](_0xfc26c2,_0x42bec2[_0xf50f('0x68')]));}if(_0x42bec2[_0xf50f('0x69')]['length']){_0x550ff5=_['some'](_0x42bec2[_0xf50f('0x69')],this['checkConditions'](_0xfc26c2,_0x42bec2[_0xf50f('0x68')]));}return _0x30be01&&_0x550ff5;};Trigger[_0xf50f('0x30')][_0xf50f('0x67')]=function(_0x579020,_0x328880){return function(_0x34d471){switch(_0x34d471['field']){case _0xf50f('0x6a'):if(_0x579020[_0xf50f('0x68')]===_0x328880){if(_0x328880===_0xf50f('0x6b')){return _0x579020[_0xf50f('0x6c')]?operators[_0x34d471[_0xf50f('0x6d')]](Number(_0x34d471['value']),_0x579020[_0xf50f('0x6c')]):![];}else{return _0x579020[_[_0xf50f('0x6e')](_0x328880)+_0xf50f('0x6f')]?operators[_0x34d471[_0xf50f('0x6d')]](Number(_0x34d471['value']),_0x579020[_['upperFirst'](_0x328880)+'AccountId']):![];}}break;case _0xf50f('0x70'):case _0xf50f('0x71'):if(_0x579020[_0xf50f('0x68')]===_0x328880){return _0x579020[_0xf50f('0x72')]?operators[_0x34d471[_0xf50f('0x6d')]](_0x34d471[_0xf50f('0x73')],_0x579020[_0xf50f('0x72')]):![];}break;case _0xf50f('0x5d'):return _0x579020[_0xf50f('0x5d')]?operators[_0x34d471[_0xf50f('0x6d')]](_0x34d471[_0xf50f('0x73')],_0x579020['queue']):![];case _0xf50f('0x74'):return _0x579020['membername']?operators[_0x34d471[_0xf50f('0x6d')]](_0x34d471['value'],_0x579020['membername']):![];case _0xf50f('0x75'):return _0x579020[_0xf50f('0x75')]?operators[_0x34d471['operator']](_0x34d471['value'],_0x579020[_0xf50f('0x75')]):![];case _0xf50f('0x76'):return _0x579020[_0xf50f('0x76')]?operators[_0x34d471[_0xf50f('0x6d')]](_0x34d471[_0xf50f('0x73')],_0x579020[_0xf50f('0x76')]):![];}return![];};};module[_0xf50f('0x77')]=Trigger;
\ No newline at end of file
+var _0x4777=['custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','info','stringify','emit','motionChannel','voice','checkTriggers','interface','status','checkTrigger','merge','variables','Actions','length','toLowerCase','contactmanager','motionbar','browser','data2','render','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','windowWidth','data5','800','windowHeight','data6','winApplication','winArguments','format','user:%s','name','action','jscripty','trigger:%s','data1','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','channel','every','AllConditions','some','AnyConditions','checkConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','event','membername','lastevent','exports','util','lodash','url','./urlforward','./cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer'];(function(_0x372400,_0xdaeb10){var _0x4cd28c=function(_0x497d1f){while(--_0x497d1f){_0x372400['push'](_0x372400['shift']());}};_0x4cd28c(++_0xdaeb10);}(_0x4777,0x1cc));var _0x7477=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x4777[_0x543084];return _0x306a57;};'use strict';var util=require(_0x7477('0x0'));var _=require(_0x7477('0x1'));var url=require(_0x7477('0x2'));var Mustache=require('mustache');var Redis=require('ioredis');var urlforward=require(_0x7477('0x3'));var integration=require('./integration');var cmContact=require(_0x7477('0x4'));var script=require('./script');var config=require(_0x7477('0x5'));var logger=require(_0x7477('0x6'))(_0x7477('0x7'));var ami=require(_0x7477('0x8'));config[_0x7477('0x9')]=_[_0x7477('0xa')](config[_0x7477('0x9')],{'host':_0x7477('0xb'),'port':0x18eb});var io=require(_0x7477('0xc'))(new Redis(config[_0x7477('0x9')]));var operators={'equals':function(_0x4d6e84,_0x316e9c){return _0x4d6e84==_0x316e9c;},'not_equals':function(_0x41b6d5,_0x40b662){return _0x41b6d5!=_0x40b662;}};var barAndWebActions=[_0x7477('0xd'),'url',_0x7477('0xe')];function Trigger(_0x360406){this['triggers']=_0x360406[_0x7477('0xf')];this[_0x7477('0x10')]=_0x360406[_0x7477('0x10')];this[_0x7477('0x11')]=_0x360406[_0x7477('0x11')];this[_0x7477('0x12')]=_0x360406[_0x7477('0x12')];this[_0x7477('0x13')]=_0x360406[_0x7477('0x13')];this[_0x7477('0x14')]=_0x360406[_0x7477('0x14')];this[_0x7477('0x15')]=_0x360406[_0x7477('0x15')];this[_0x7477('0x16')]=_0x360406[_0x7477('0x16')];this[_0x7477('0x17')]=_0x360406[_0x7477('0x17')];this[_0x7477('0x18')]=_0x360406[_0x7477('0x18')];this['deskAccounts']=_0x360406[_0x7477('0x19')];this['vtigerAccounts']=_0x360406[_0x7477('0x1a')];this[_0x7477('0x1b')]=_0x360406[_0x7477('0x1b')];this[_0x7477('0x1c')]=_0x360406[_0x7477('0x1c')];this[_0x7477('0x1d')]=_0x360406[_0x7477('0x1d')];this[_0x7477('0x1e')]={'zendesk':this[_0x7477('0x14')],'salesforce':this[_0x7477('0x16')],'freshdesk':this[_0x7477('0x15')],'sugarcrm':this[_0x7477('0x17')],'zoho':this['zohoAccounts'],'desk':this[_0x7477('0x19')],'vtiger':this[_0x7477('0x1a')],'dynamics365':this[_0x7477('0x1c')],'freshsales':this[_0x7477('0x1d')],'servicenow':this[_0x7477('0x1b')]};ami['on'](_0x7477('0x1f'),this[_0x7477('0x20')]['bind'](this));ami['on'](_0x7477('0x21'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x23'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x24'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x25'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x26'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x27'),this[_0x7477('0x20')]['bind'](this));ami['on'](_0x7477('0x28'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on']('custom:agentreject',this['syncCustomEvent']['bind'](this));ami['on'](_0x7477('0x29'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x2a'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x2b'),this[_0x7477('0x20')]['bind'](this));ami['on'](_0x7477('0x2c'),this['syncAgentDial']['bind'](this));ami['on'](_0x7477('0x2d'),this[_0x7477('0x2e')]['bind'](this));ami['on'](_0x7477('0x2f'),this[_0x7477('0x2e')]['bind'](this));ami['on']('custom:newinteraction',this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x30'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x31'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x32'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x33'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x34'),this[_0x7477('0x20')]['bind'](this));}Trigger[_0x7477('0x35')]['emit']=function(_0x45bfd8,_0x1d3c9b,_0x1c6a35){logger[_0x7477('0x36')](_0x45bfd8,_0x1d3c9b,JSON[_0x7477('0x37')](_0x1c6a35));io['to'](_0x45bfd8)[_0x7477('0x38')](_0x1d3c9b,_0x1c6a35);};Trigger[_0x7477('0x35')][_0x7477('0x20')]=function(_0x3c03d2){var _0x453ae9=_['clone'](_0x3c03d2);if(typeof _0x453ae9['motionChannel']==='undefined'){_0x453ae9[_0x7477('0x39')]=_0x7477('0x3a');}this[_0x7477('0x3b')](_0x453ae9);};Trigger['prototype'][_0x7477('0x2e')]=function(_0x58838c){if(this[_0x7477('0x10')][_0x58838c[_0x7477('0x3c')]]){this[_0x7477('0x20')](_0x58838c);}};Trigger[_0x7477('0x35')][_0x7477('0x3b')]=function(_0x4d5e62){var _0x183f2e;for(var _0x5f20fd in this[_0x7477('0xf')]){if(this['triggers']['hasOwnProperty'](_0x5f20fd)){if(this[_0x7477('0xf')][_0x5f20fd][_0x7477('0x3d')]){_0x183f2e=this[_0x7477('0x3e')](this['triggers'][_0x5f20fd],_0x4d5e62);if(_0x183f2e){_[_0x7477('0x3f')](_0x4d5e62,_0x4d5e62[_0x7477('0x40')]);for(var _0x4785cb=0x0,_0x2fbd4b,_0x283621,_0x40c89a;_0x4785cb<this[_0x7477('0xf')][_0x5f20fd][_0x7477('0x41')][_0x7477('0x42')];_0x4785cb+=0x1){_0x2fbd4b=this[_0x7477('0xf')][_0x5f20fd][_0x7477('0x41')][_0x4785cb];if(this[_0x7477('0x10')][_0x4d5e62[_0x7477('0x3c')]]){switch(_0x2fbd4b['action'][_0x7477('0x43')]()){case _0x7477('0x44'):break;case _0x7477('0x45'):case _0x7477('0x46'):var _0x593ca9={};switch(barAndWebActions[_0x2fbd4b['data1']]){case _0x7477('0xd'):_0x593ca9['TemplateId']=_0x2fbd4b[_0x7477('0x47')];_0x593ca9['html']=this['templates'][_0x2fbd4b[_0x7477('0x47')]]?Mustache[_0x7477('0x48')](this[_0x7477('0x12')][_0x2fbd4b[_0x7477('0x47')]][_0x7477('0x49')],_0x4d5e62):_0x7477('0x4a');break;case _0x7477('0x2'):_0x593ca9[_0x7477('0x4b')]=this[_0x7477('0x4c')](_0x2fbd4b[_0x7477('0x47')],_0x4d5e62,_[_0x7477('0x4d')](_0x2fbd4b['data3'])?!![]:parseInt(_0x2fbd4b[_0x7477('0x4e')],0xa));if(_[_0x7477('0x4d')](_0x2fbd4b[_0x7477('0x4f')])){_0x593ca9[_0x7477('0x50')]='0';}else{_0x593ca9['uriLocation']=_0x2fbd4b[_0x7477('0x4f')];_0x593ca9[_0x7477('0x51')]=_['isNil'](_0x2fbd4b[_0x7477('0x52')])?_0x7477('0x53'):_0x2fbd4b[_0x7477('0x52')];_0x593ca9[_0x7477('0x54')]=_[_0x7477('0x4d')](_0x2fbd4b[_0x7477('0x55')])?'600':_0x2fbd4b[_0x7477('0x55')];}break;case'winapp':_0x593ca9[_0x7477('0x56')]=_0x2fbd4b['data2']?Mustache[_0x7477('0x48')](_0x2fbd4b['data2'],_0x4d5e62):'';_0x593ca9[_0x7477('0x57')]=_0x2fbd4b['data3']?Mustache[_0x7477('0x48')](_0x2fbd4b[_0x7477('0x4e')],_0x4d5e62):'';break;}this[_0x7477('0x38')](util[_0x7477('0x58')](_0x7477('0x59'),this[_0x7477('0x10')][_0x4d5e62['interface']][_0x7477('0x5a')]),util['format']('trigger:%s:%s',_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')](),barAndWebActions[_0x2fbd4b['data1']]),_[_0x7477('0x3f')](_0x593ca9,_0x4d5e62));break;case _0x7477('0x5c'):this[_0x7477('0x38')](util[_0x7477('0x58')](_0x7477('0x59'),this[_0x7477('0x10')][_0x4d5e62['interface']]['name']),util[_0x7477('0x58')](_0x7477('0x5d'),_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')]()),_[_0x7477('0x3f')]({'ProjectId':parseInt(_0x2fbd4b[_0x7477('0x5e')],0xa)},_0x4d5e62));break;default:this[_0x7477('0x38')](util['format'](_0x7477('0x59'),this[_0x7477('0x10')][_0x4d5e62['interface']][_0x7477('0x5a')]),util[_0x7477('0x58')](_0x7477('0x5d'),_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')]()),_[_0x7477('0x3f')]({},_0x2fbd4b,_0x4d5e62));}}switch(_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')]()){case _0x7477('0x44'):cmContact[_0x7477('0x5f')](this[_0x7477('0x10')][_0x4d5e62[_0x7477('0x3c')]],this[_0x7477('0xf')][_0x5f20fd],_0x2fbd4b,_0x4d5e62);break;case _0x7477('0x60'):integration[_0x7477('0x5f')](_0x2fbd4b,_0x4d5e62,this['accounts'],this[_0x7477('0x10')][_0x4d5e62[_0x7477('0x3c')]],this[_0x7477('0x11')][_0x4d5e62[_0x7477('0x61')]],this[_0x7477('0x13')][_0x4d5e62[_0x7477('0x62')]]);break;case _0x7477('0x63'):urlforward[_0x7477('0x5f')](_0x2fbd4b,_0x4d5e62);break;case _0x7477('0x64'):script['exec'](_0x2fbd4b,_0x4d5e62);break;}}}}}}};Trigger[_0x7477('0x35')]['buildUri']=function(_0x15b319,_0x1b6246,_0x259072){var _0x2c17fc=url[_0x7477('0x65')](Mustache[_0x7477('0x48')](_0x15b319,_0x1b6246),!![]);if(_0x259072){_['merge'](_0x2c17fc[_0x7477('0x66')],_0x1b6246);}delete _0x2c17fc[_0x7477('0x67')];var _0x3959cd=url['format'](_0x2c17fc);_0x3959cd=_0x3959cd[_0x7477('0x68')](/\/\?/g,'?');return _0x3959cd;};Trigger[_0x7477('0x35')][_0x7477('0x3e')]=function(_0x3163ec,_0x33d80a){var _0x2b70bc=!![];var _0x3c4108=!![];var _0x386215=![];if(_0x3163ec[_0x7477('0x69')]===_0x33d80a[_0x7477('0x39')]){_0x386215=!![];}if(_0x3163ec['AllConditions'][_0x7477('0x42')]){_0x2b70bc=_[_0x7477('0x6a')](_0x3163ec[_0x7477('0x6b')],this['checkConditions'](_0x33d80a,_0x3163ec['channel']));}if(_0x3163ec['AnyConditions'][_0x7477('0x42')]){_0x3c4108=_[_0x7477('0x6c')](_0x3163ec[_0x7477('0x6d')],this[_0x7477('0x6e')](_0x33d80a,_0x3163ec[_0x7477('0x69')]));}return _0x386215&&_0x2b70bc&&_0x3c4108;};Trigger[_0x7477('0x35')][_0x7477('0x6e')]=function(_0x73be1c,_0x16759e){return function(_0x27fd3c){switch(_0x27fd3c[_0x7477('0x6f')]){case _0x7477('0x70'):if(_0x73be1c[_0x7477('0x69')]===_0x16759e){if(_0x16759e===_0x7477('0x71')){return _0x73be1c[_0x7477('0x72')]?operators[_0x27fd3c[_0x7477('0x73')]](Number(_0x27fd3c[_0x7477('0x74')]),_0x73be1c[_0x7477('0x72')]):![];}else{return _0x73be1c[_[_0x7477('0x75')](_0x16759e)+_0x7477('0x76')]?operators[_0x27fd3c[_0x7477('0x73')]](Number(_0x27fd3c[_0x7477('0x74')]),_0x73be1c[_['upperFirst'](_0x16759e)+_0x7477('0x76')]):![];}}break;case _0x7477('0x77'):case'message':if(_0x73be1c[_0x7477('0x69')]===_0x16759e){return _0x73be1c[_0x7477('0x78')]?operators[_0x27fd3c[_0x7477('0x73')]](_0x27fd3c[_0x7477('0x74')],_0x73be1c['event']):![];}break;case _0x7477('0x61'):return _0x73be1c[_0x7477('0x61')]?operators[_0x27fd3c['operator']](_0x27fd3c['value'],_0x73be1c[_0x7477('0x61')]):![];case'agent':return _0x73be1c['membername']?operators[_0x27fd3c[_0x7477('0x73')]](_0x27fd3c[_0x7477('0x74')],_0x73be1c[_0x7477('0x79')]):![];case _0x7477('0x7a'):return _0x73be1c[_0x7477('0x7a')]?operators[_0x27fd3c['operator']](_0x27fd3c[_0x7477('0x74')],_0x73be1c[_0x7477('0x7a')]):![];case'routeId':return _0x73be1c[_0x7477('0x62')]?operators[_0x27fd3c[_0x7477('0x73')]](_0x27fd3c[_0x7477('0x74')],_0x73be1c['routeId']):![];}return![];};};module[_0x7477('0x7b')]=Trigger;
\ No newline at end of file
index 9893c9f..b71375c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','custom_fields','variable','variableName','idField','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','recordingURL','The\x20User\x20ID\x20is:','destcalleridnum','Ticket\x20created!','[OUTBOUND]','unmanaged','lastevent','Recording\x20is\x20enabled!','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','total_entries','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','%s/users/me','debug','stringify','authType','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x5fc3,0xa8));var _0x35fc=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x5fc3[_0x279d37];return _0x530173;};'use strict';var _=require(_0x35fc('0x0'));var rp=require(_0x35fc('0x1'));var md5=require('md5');var util=require(_0x35fc('0x2'));var Redis=require(_0x35fc('0x3'));var intUtil=require(_0x35fc('0x4'));var config=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('desk');config[_0x35fc('0x7')]=_[_0x35fc('0x8')](config[_0x35fc('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x35fc('0x7')]));function emit(_0x508b32,_0x16e153,_0x27524f){io['to'](_0x508b32)[_0x35fc('0x9')](_0x16e153,_0x27524f);}var headers={'Content-Type':_0x35fc('0xa'),'Accept':_0x35fc('0xa')};function getUser(_0xf9d3a6,_0x2051ab){if(intUtil['validateEmail'](_0x2051ab)===!![]){logger[_0x35fc('0xb')](_0x35fc('0xc'),_0x2051ab);return request({'uri':util['format'](_0x35fc('0xd'),_0xf9d3a6[_0x35fc('0xe')])})['then'](function(_0xda83fb){if(_0xda83fb[_0x35fc('0xf')]){return _['find'](_0xda83fb['_embedded'][_0x35fc('0x10')],{'email':_0x2051ab});}})['then'](function(_0x397738){if(_0x397738){logger[_0x35fc('0xb')](_0x35fc('0x11'));return _0x397738;}else{logger[_0x35fc('0xb')](_0x35fc('0x12'));return request({'uri':util['format']('%s/users/me',_0xf9d3a6['remoteUri'])});}});}else{logger['info'](_0x35fc('0x13'));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x15'),_0xf9d3a6[_0x35fc('0xe')])});}}function request(_0x227a49){logger[_0x35fc('0x16')]('[HTTP]',JSON[_0x35fc('0x17')](_0x227a49));return rp(_[_0x35fc('0x8')](_0x227a49,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x41e165){var _0x363e47;if(_0x41e165[_0x35fc('0x18')]==='basic'){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x19'),_0x41e165[_0x35fc('0x1a')],_0x41e165['password']);}else if(_0x41e165[_0x35fc('0x18')]===_0x35fc('0x1b')){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x1c'),_0x41e165[_0x35fc('0x1a')],_0x41e165[_0x35fc('0x1b')]);}return util[_0x35fc('0x14')](_0x35fc('0x1d'),new Buffer(_0x363e47)[_0x35fc('0x1e')](_0x35fc('0x1f')));}function getEndUser(_0x5bd2b8,_0x323aee,_0xd5399f){logger[_0x35fc('0xb')](_0x35fc('0x20'),_0xd5399f);return request({'uri':util[_0x35fc('0x14')]('%s/customers/search',_0x5bd2b8[_0x35fc('0xe')]),'qs':{'phone':_0xd5399f}})[_0x35fc('0x21')](function(_0x561bf8){if(_0x561bf8[_0x35fc('0xf')]){logger[_0x35fc('0xb')](_0x35fc('0x22'));return _0x561bf8['_embedded'][_0x35fc('0x10')][0x0];}else{logger['info'](_0x35fc('0x23'));return request({'uri':util[_0x35fc('0x14')]('%s/customers',_0x5bd2b8['remoteUri']),'method':_0x35fc('0x24'),'body':{'first_name':_0x323aee,'title':_0x323aee,'phone_numbers':[{'type':'work','value':_0xd5399f}]}});}});}function getTags(_0x274208,_0x1a5d92){var _0x57001c=[];if(_0x274208&&_0x274208[_0x35fc('0x25')]>0x0){_0x57001c=_[_0x35fc('0x26')](_0x274208,_0x1a5d92);}return _0x57001c;}function getCustomFields(_0x383837,_0x9f3c8a){var _0x3735da=[];var _0x134dfa={'custom_fields':{}};if(_0x383837[_0x35fc('0x25')]>0x0){_[_0x35fc('0x27')](_0x383837,function(_0x54aedc){if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc['type'])&&_0x54aedc[_0x35fc('0x2b')]&&!_0x54aedc[_0x35fc('0x2c')]){_0x134dfa[_0x54aedc[_0x35fc('0x2b')][_0x35fc('0x2d')]()]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc[_0x35fc('0x2f')])&&_0x54aedc['idField']&&_0x54aedc['customField']){_0x134dfa[_0x35fc('0x30')][_0x54aedc['idField']]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_0x54aedc[_0x35fc('0x2f')]===_0x35fc('0x31')&&_0x54aedc[_0x35fc('0x32')]&&_0x54aedc[_0x35fc('0x33')]&&_0x54aedc['customField']){_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]][_0x35fc('0x1e')]());}else if(_0x54aedc[_0x35fc('0x2f')]==='customVariable'&&_0x54aedc[_0x35fc('0x34')]&&_0x54aedc[_0x35fc('0x34')][_0x35fc('0x35')]&&_0x54aedc['idField']&&_0x54aedc[_0x35fc('0x2c')]){_0x9f3c8a[_0x54aedc['Variable'][_0x35fc('0x35')][_0x35fc('0x2d')]()]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc['Variable']['name']['toLowerCase']()][_0x35fc('0x1e')]());}});}if(_0x134dfa['priority']){_0x134dfa[_0x35fc('0x36')]=Number(_0x134dfa['priority']);}return _0x134dfa;}function getTicket(_0x9c6b65,_0x1f2d66,_0x2ca9ac,_0x22b724,_0x1c10e0){logger[_0x35fc('0xb')](_0x35fc('0x37'));var _0x4ec0dc=_[_0x35fc('0x38')]({'subject':intUtil[_0x35fc('0x39')](_0x22b724['Subjects'],_0x1c10e0,'\x20'),'type':_0x35fc('0x3a'),'status':_0x35fc('0x3b'),'labels':[_0x35fc('0x3c'),_0x35fc('0x3d'),_0x35fc('0x3e')][_0x35fc('0x3f')](getTags(_0x22b724['Tags'],_0x35fc('0x35'))),'description':intUtil[_0x35fc('0x39')](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0x35fc('0x41'),_0x1f2d66['id']),'class':_0x35fc('0x42')}},'message':{'direction':'in','body':intUtil['getString'](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a')}},getCustomFields(_0x22b724[_0x35fc('0x43')],_0x1c10e0));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x44'),_0x9c6b65[_0x35fc('0xe')],_0x2ca9ac['id']),'method':_0x35fc('0x24'),'body':_0x4ec0dc});}exports[_0x35fc('0x45')]=function(_0x3ec51f,_0x5a7e9e,_0x596e83,_0x210d5d,_0x36fcf9,_0x4fdc6d){var _0x5c2e5c,_0x4ff202;_0x4fdc6d[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x4fdc6d['remoteUri']);_0x4fdc6d[_0x35fc('0x47')]=intUtil[_0x35fc('0x46')](_0x4fdc6d[_0x35fc('0x47')]);if(_0x36fcf9&&_0x36fcf9[_0x35fc('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x5a7e9e['recordingURL']=util['format'](_0x35fc('0x49'),_0x4fdc6d[_0x35fc('0x47')],_0x5a7e9e['uniqueid'],md5(_0x5a7e9e[_0x35fc('0x4a')]));}else{_0x5a7e9e['recordingURL']='';}headers[_0x35fc('0x4b')]=getAuth(_0x4fdc6d);return getUser(_0x4fdc6d,_0x210d5d[_0x35fc('0x4c')])[_0x35fc('0x21')](function(_0x2de5d1){_0x5c2e5c=_0x2de5d1;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x5c2e5c['id']);return getEndUser(_0x4fdc6d,_0x5a7e9e[_0x35fc('0x4d')],_0x5a7e9e[_0x35fc('0x4e')]);})['then'](function(_0x18181b){_0x4ff202=_0x18181b;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x4ff202['id']);return getTicket(_0x4fdc6d,_0x5c2e5c,_0x4ff202,_0x596e83,_0x5a7e9e);})[_0x35fc('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){logger[_0x35fc('0xb')]('Ticket\x20created!');logger['info'](_0x35fc('0x50'),_0x5bc8c3['id']);switch(_0x4fdc6d[_0x35fc('0x2f')]){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x53'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d['name']),_0x35fc('0x55'),{'recordId':_0x5bc8c3['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d[_0x35fc('0x35')]),_0x35fc('0x58'),{'uri':util[_0x35fc('0x14')](_0x35fc('0x59'),_0x5bc8c3['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x52'),_0x35fc('0x5b'));}}})['catch'](function(_0x553ed6){console[_0x35fc('0x5a')](_0x553ed6);logger[_0x35fc('0x5a')](_0x35fc('0x52'),JSON[_0x35fc('0x17')](_0x553ed6));});};exports[_0x35fc('0x5c')]=function(_0x3e6494,_0x4a4798,_0x4f024c,_0x388521,_0x19b2ce,_0x395d63,_0x38bc78){var _0x5b2595,_0x467980;_0x395d63[_0x35fc('0xe')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0xe')]);_0x395d63[_0x35fc('0x47')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0x47')]);if(_0x38bc78&&_0x38bc78[_0x35fc('0x5d')]&&_0x38bc78[_0x35fc('0x5d')]!==_0x35fc('0x5e')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4a4798[_0x35fc('0x5f')]=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x395d63[_0x35fc('0x47')],_0x4a4798[_0x35fc('0x4a')],md5(_0x4a4798[_0x35fc('0x4a')]));}headers[_0x35fc('0x4b')]=getAuth(_0x395d63);return getUser(_0x395d63,_0x388521[_0x35fc('0x4c')])['then'](function(_0x2d9d45){_0x5b2595=_0x2d9d45;logger[_0x35fc('0xb')](_0x35fc('0x60'),_0x5b2595['id']);return getEndUser(_0x395d63,_0x4a4798['destcalleridname'],_0x4a4798[_0x35fc('0x61')]);})[_0x35fc('0x21')](function(_0x47fb1a){_0x467980=_0x47fb1a;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x467980['id']);return getTicket(_0x395d63,_0x5b2595,_0x467980,_0x4f024c,_0x4a4798);})[_0x35fc('0x21')](function(_0x1c4c33){if(_0x1c4c33){logger[_0x35fc('0xb')](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x1c4c33['id']);switch(_0x395d63['type']){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:desk:display',{'recordId':_0x1c4c33['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x395d63[_0x35fc('0xe')],_0x1c4c33['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x63'),_0x35fc('0x5b'));}}})['catch'](function(_0x458eb8){logger[_0x35fc('0x5a')](_0x35fc('0x63'),JSON[_0x35fc('0x17')](_0x458eb8));});};exports[_0x35fc('0x64')]=function(_0x1d0e53,_0x27071b,_0x2127e0,_0x462ceb,_0x4c3ace,_0x35d7c8){var _0x47c75f,_0xfbd737;_0x35d7c8[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x35d7c8[_0x35fc('0xe')]);_0x35d7c8['serverUrl']=intUtil[_0x35fc('0x46')](_0x35d7c8['serverUrl']);if(_0x4c3ace&&_0x4c3ace['monitor_format']){logger['info']('['+_0x27071b[_0x35fc('0x65')]['toUpperCase']()+']',_0x35fc('0x66'));_0x27071b['recordingURL']=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35d7c8[_0x35fc('0x47')],_0x27071b[_0x35fc('0x4a')],md5(_0x27071b[_0x35fc('0x4a')]));}else{_0x27071b[_0x35fc('0x5f')]='';}headers['Authorization']=getAuth(_0x35d7c8);return getUser(_0x35d7c8)[_0x35fc('0x21')](function(_0x1e2214){_0x47c75f=_0x1e2214;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x47c75f['id']);return getEndUser(_0x35d7c8,_0x27071b[_0x35fc('0x4d')],_0x27071b[_0x35fc('0x4e')]);})[_0x35fc('0x21')](function(_0x3c1b56){_0xfbd737=_0x3c1b56;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0xfbd737['id']);return getTicket(_0x35d7c8,_0x47c75f,_0xfbd737,_0x2127e0,_0x27071b);})[_0x35fc('0x21')](function(_0x4464d5){if(_0x4464d5){logger['info'](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x4464d5['id']);}})['catch'](function(_0x1c88d8){logger[_0x35fc('0x5a')]('['+_0x27071b['lastevent']['toUpperCase']()+']',JSON[_0x35fc('0x17')](_0x1c88d8));});};
\ No newline at end of file
+var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe14b,0x93));var _0xbe14=function(_0x3475c5,_0x3fb9a7){_0x3475c5=_0x3475c5-0x0;var _0x5bfc67=_0xe14b[_0x3475c5];return _0x5bfc67;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
index 300aae3..21224de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50df=['length','email','isdisabled',']\x20Agent\x20found\x20','systemuserid','info','internalemailaddress','username','userId','message','outbound','destcalleridnum','calleridnum','POST','contacts','/systemusers(','headers','substring','lastIndexOf','enduserId','toLowerCase','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1',']\x20Enduser\x20created!','forEach','includes','type','nameField','customField','idField','indexOf','content','ticketType','assign','getString','Subjects','Fields','phonecalls','Descriptions','/contacts(','callDirection','queue','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId','unmanaged','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','clientId','remoteUri','password','clientSecret','then','access_token','catch','toUpperCase','GET','Bearer\x20','4.0','value','isNil','validateEmail','userEmail'];(function(_0x20a068,_0x324d59){var _0x58a410=function(_0xd9c89c){while(--_0xd9c89c){_0x20a068['push'](_0x20a068['shift']());}};_0x58a410(++_0x324d59);}(_0x50df,0x168));var _0xf50d=function(_0x219c4e,_0x299170){_0x219c4e=_0x219c4e-0x0;var _0x10e65d=_0x50df[_0x219c4e];return _0x10e65d;};'use strict';var _=require(_0xf50d('0x0'));var BPromise=require('bluebird');var rp=require(_0xf50d('0x1'));var util=require(_0xf50d('0x2'));var intUtil=require(_0xf50d('0x3'));var md5=require(_0xf50d('0x4'));var Redis=require(_0xf50d('0x5'));var logger=require(_0xf50d('0x6'))(_0xf50d('0x7'));var config=require(_0xf50d('0x8'));config['redis']=_[_0xf50d('0x9')](config[_0xf50d('0xa')],{'host':_0xf50d('0xb'),'port':0x18eb});var io=require(_0xf50d('0xc'))(new Redis(config[_0xf50d('0xa')]));function getAuthToken(_0x3905e7,_0x52d39a,_0x4294fb){var _0x27fced={'method':'POST','uri':_0x52d39a,'form':{'client_id':_0x3905e7[_0xf50d('0xd')],'resource':_0x3905e7[_0xf50d('0xe')],'username':_0x3905e7['username'],'password':_0x3905e7[_0xf50d('0xf')],'grant_type':_0xf50d('0xf'),'client_secret':_0x3905e7[_0xf50d('0x10')]},'json':!![]};return rp(_0x27fced)[_0xf50d('0x11')](function(_0x1f562a){return _0x1f562a[_0xf50d('0x12')];})[_0xf50d('0x13')](function(_0x18619c){logger['error']('['+[_0x4294fb[_0xf50d('0x14')]()]+']\x20Wrong\x20credentials!');return _0x18619c['message'];});}function getUser(_0x270dd8,_0x4674b6,_0x5196db,_0x23ae3f,_0x72de7c,_0xaa2d2b){return new BPromise(function(_0x16f68e,_0x9a6453){return getAuthToken(_0x4674b6,_0x23ae3f,_0xaa2d2b)[_0xf50d('0x11')](function(_0x3abb2b){var _0x20c6c4={'method':_0xf50d('0x15'),'uri':_0x72de7c+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xf50d('0x16')+_0x3abb2b,'OData-Version':_0xf50d('0x17')},'json':!![]};return rp(_0x20c6c4);})[_0xf50d('0x11')](function(_0x244ff7){var _0x5aac7e=_0x244ff7[_0xf50d('0x18')];var _0x403f44=![];var _0x517e43=null;if(!_[_0xf50d('0x19')](_0x5196db)){if(intUtil[_0xf50d('0x1a')](_0x5196db['email'])){_0x270dd8[_0xf50d('0x1b')]=_0x5196db['email'];for(_0x517e43=0x0;_0x517e43<_0x5aac7e[_0xf50d('0x1c')];_0x517e43++){if(_0x5aac7e[_0x517e43]['internalemailaddress']===_0x5196db[_0xf50d('0x1d')]&&!_0x5aac7e[_0x517e43][_0xf50d('0x1e')]){_0x403f44=!![];logger['info']('['+[_0xaa2d2b[_0xf50d('0x14')]()]+_0xf50d('0x1f')+_0x5aac7e[_0x517e43][_0xf50d('0x20')]+'!');_0x270dd8['userId']=_0x5aac7e[_0x517e43][_0xf50d('0x20')];}}}}if(!_0x403f44){logger[_0xf50d('0x21')]('['+[_0xaa2d2b[_0xf50d('0x14')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x270dd8[_0xf50d('0x1b')]=_0x4674b6['username'];for(_0x517e43=0x0;_0x517e43<_0x5aac7e[_0xf50d('0x1c')];_0x517e43++){if(_0x5aac7e[_0x517e43][_0xf50d('0x22')]===_0x4674b6[_0xf50d('0x23')]){_0x270dd8[_0xf50d('0x24')]=_0x5aac7e[_0x517e43][_0xf50d('0x20')];}}}_0x16f68e(_0x270dd8);})[_0xf50d('0x13')](function(_0x251d70){_0x9a6453(_0x251d70[_0xf50d('0x25')]);});});}function createEndUser(_0x232904,_0x4e7009,_0x185563,_0x5f1ea1,_0x9e931a,_0x412a4d){return new BPromise(function(_0x7e7724,_0x255f13){return getAuthToken(_0x4e7009,_0x185563,_0x412a4d)['then'](function(_0xd1356f){var _0x2553dd=_0x412a4d['toLowerCase']()===_0xf50d('0x26')?_0x9e931a[_0xf50d('0x27')]:_0x9e931a[_0xf50d('0x28')];var _0x4849f0={'method':_0xf50d('0x29'),'uri':_0x5f1ea1+_0xf50d('0x2a'),'body':{'telephone1':_0x2553dd,'fullname':_0x2553dd,'firstname':_0x2553dd,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xf50d('0x2b')+_0x232904[_0xf50d('0x24')]+')'},'headers':{'Authorization':'Bearer\x20'+_0xd1356f,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x4849f0);})[_0xf50d('0x11')](function(_0x2eec66){var _0x8173c7=_0x2eec66[_0xf50d('0x2c')]['odata-entityid'];var _0x55031d=_0x8173c7[_0xf50d('0x2d')](_0x8173c7[_0xf50d('0x2e')]('(')+0x1,_0x8173c7['lastIndexOf'](')'));_0x232904[_0xf50d('0x2f')]=_0x55031d;_0x7e7724(_0x232904);})[_0xf50d('0x13')](function(_0x3cb34e){_0x255f13(_0x3cb34e['message']);});});}function getEndUser(_0x32f01e,_0x45fe66,_0x358a36,_0x5dc201,_0x4d3e40,_0x57b483){return new BPromise(function(_0x2993c1,_0x434e67){var _0x2bfea6=_0x57b483[_0xf50d('0x30')]()===_0xf50d('0x26')?_0x4d3e40[_0xf50d('0x27')]:_0x4d3e40['calleridnum'];return getAuthToken(_0x45fe66,_0x358a36,_0x57b483)[_0xf50d('0x11')](function(_0x116d3a){var _0x20c919={'method':'GET','uri':_0x5dc201+_0xf50d('0x31')+_0x2bfea6[_0xf50d('0x32')]('+',_0xf50d('0x33'))+'\x27','headers':{'Authorization':_0xf50d('0x16')+_0x116d3a,'If-None-Match':null,'OData-Version':_0xf50d('0x17')},'json':!![]};return rp(_0x20c919);})['then'](function(_0x40f2d5){var _0x377d21=null;if(_0x40f2d5){var _0x53161c=_0x40f2d5[_0xf50d('0x18')];var _0x140afa=![];for(_0x377d21=0x0;_0x377d21<_0x53161c[_0xf50d('0x1c')];_0x377d21++){if(_0x53161c[_0x377d21][_0xf50d('0x34')]===_0x2bfea6){_0x140afa=!![];_0x32f01e[_0xf50d('0x2f')]=_0x53161c[_0x377d21]['contactid'];}}if(_0x140afa){_0x2993c1(_0x32f01e);}else{return createEndUser(_0x32f01e,_0x45fe66,_0x358a36,_0x5dc201,_0x4d3e40,_0x57b483)[_0xf50d('0x11')](function(_0x2e2dce){logger['info']('['+[_0x57b483[_0xf50d('0x14')]()]+_0xf50d('0x35'),_0x2e2dce[_0xf50d('0x2f')]);_0x2993c1(_0x2e2dce);});}}else{return createEndUser(_0x32f01e,_0x45fe66,_0x358a36,_0x5dc201,_0x4d3e40,_0x57b483)[_0xf50d('0x11')](function(_0x51d585){logger[_0xf50d('0x21')]('['+[_0x57b483['toUpperCase']()]+']\x20Enduser\x20Created!',_0x51d585[_0xf50d('0x2f')]);_0x2993c1(_0x51d585);});}});});}function getCustomFields(_0x49fc86,_0x44c569,_0x2f23c9){var _0x50958a={};if(_0x49fc86['length']>0x0){_[_0xf50d('0x36')](_0x49fc86,function(_0x500b5a){if(_[_0xf50d('0x37')](['string','picklist'],_0x500b5a[_0xf50d('0x38')])&&_0x500b5a[_0xf50d('0x39')]&&!_0x500b5a[_0xf50d('0x3a')]){var _0x291adb=_0x500b5a[_0xf50d('0x3b')][_0xf50d('0x30')]();var _0x50444e=_0x291adb['substring'](0x0,_0x291adb[_0xf50d('0x3c')]('_'));var _0x557133=_0x291adb['substring'](_0x291adb['indexOf']('_')+0x1);if(_0x50444e===_0x2f23c9){_0x50958a[_0x557133]=_0x500b5a[_0xf50d('0x3d')];}}});}return _0x50958a;}function getTicket(_0x34bc4f,_0x20df1a,_0x312d77,_0x371a9b,_0xbca06b,_0x116749,_0x619efa){return new BPromise(function(_0x43f3a2,_0xbc5a5c){var _0x4b036a;return getAuthToken(_0x20df1a,_0x312d77,_0x619efa)['then'](function(_0x41072a){if(_0x116749[_0xf50d('0x3e')]==='incident'){_0x4b036a={'method':_0xf50d('0x29'),'uri':_0x371a9b+'incidents','body':Object[_0xf50d('0x3f')]({},{'title':intUtil[_0xf50d('0x40')](_0x116749[_0xf50d('0x41')],_0xbca06b,'\x20'),'description':intUtil['getString'](_0x116749['Descriptions'],_0xbca06b,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x34bc4f[_0xf50d('0x2f')]+')','ownerid@odata.bind':_0xf50d('0x2b')+_0x34bc4f[_0xf50d('0x24')]+')','caseorigincode':'1'},getCustomFields(_0x116749[_0xf50d('0x42')],_0xbca06b,_0x116749[_0xf50d('0x3e')])),'headers':{'Authorization':'Bearer\x20'+_0x41072a,'OData-Version':_0xf50d('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x116749['ticketType']==='phonecall'){_0x4b036a={'method':_0xf50d('0x29'),'uri':_0x371a9b+_0xf50d('0x43'),'body':Object[_0xf50d('0x3f')]({},{'subject':intUtil[_0xf50d('0x40')](_0x116749[_0xf50d('0x41')],_0xbca06b,'\x20'),'phonenumber':String(_0xbca06b[_0xf50d('0x28')]),'description':intUtil[_0xf50d('0x40')](_0x116749[_0xf50d('0x44')],_0xbca06b,'\x0a'),'regardingobjectid_contact@odata.bind':_0xf50d('0x45')+_0x34bc4f[_0xf50d('0x2f')]+')','ownerid@odata.bind':_0xf50d('0x2b')+_0x34bc4f['userId']+')','directioncode':_0x34bc4f[_0xf50d('0x46')]===_0xf50d('0x47')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xf50d('0x2b')+_0x34bc4f['userId']+')','participationtypemask':_0x34bc4f[_0xf50d('0x46')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xf50d('0x45')+_0x34bc4f[_0xf50d('0x2f')]+')','participationtypemask':_0x34bc4f[_0xf50d('0x46')]===_0xf50d('0x47')?0x1:0x2}]},getCustomFields(_0x116749[_0xf50d('0x42')],_0xbca06b,_0x116749[_0xf50d('0x3e')])),'headers':{'Authorization':_0xf50d('0x16')+_0x41072a,'OData-Version':_0xf50d('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4b036a);})[_0xf50d('0x11')](function(_0x113d5c){var _0x594da4=_0x113d5c[_0xf50d('0x2c')]['odata-entityid'];var _0x58a9f2=_0x594da4['substring'](_0x594da4[_0xf50d('0x2e')]('(')+0x1,_0x594da4[_0xf50d('0x2e')](')'));_0x34bc4f['ticketId']=_0x58a9f2;_0x43f3a2(_0x34bc4f);})[_0xf50d('0x13')](function(_0x4746c0){_0xbc5a5c(_0x4746c0[_0xf50d('0x25')]);});});}function emit(_0x757cf4,_0xc8bf20,_0x2cd3de,_0x5aa55e){var _0xe1e2bc={'uri':util[_0xf50d('0x48')](_0xf50d('0x49'),_0x757cf4,_0x2cd3de,_0x5aa55e)};io['to'](util[_0xf50d('0x48')](_0xf50d('0x4a'),_0xc8bf20))[_0xf50d('0x4b')]('trigger:browser:url',_0xe1e2bc);}exports['cs']=function(_0x470f48,_0x5b6225,_0x4025c4,_0xab0a02,_0xcec938,_0x5d2293,_0x51f62b,_0x4b52a3){var _0x3fde20={};_0x5d2293[_0xf50d('0xe')]=intUtil[_0xf50d('0x4c')](_0x5d2293[_0xf50d('0xe')]);_0x5d2293[_0xf50d('0x4d')]=intUtil[_0xf50d('0x4c')](_0x5d2293[_0xf50d('0x4d')]);_0x3fde20[_0xf50d('0x46')]=_0x4b52a3===_0xf50d('0x47')||_0x4b52a3==='unmanaged'?'queue':'outbound';var _0x472fc7=util[_0xf50d('0x48')](_0xf50d('0x4e'),_0x5d2293[_0xf50d('0xe')]);var _0x4e1d68=util[_0xf50d('0x48')]('https://login.microsoftonline.com/%s/oauth2/token',_0x5d2293[_0xf50d('0x4f')]);var _0x142572=util['format'](_0xf50d('0x50'),_0x5d2293['serverUrl'],_0x5b6225[_0xf50d('0x51')],md5(_0x5b6225[_0xf50d('0x51')]));if(_0xcec938&&_0xcec938[_0xf50d('0x52')]){logger[_0xf50d('0x21')]('[QUEUE]','Recording\x20is\x20enabled!');_0x5b6225[_0xf50d('0x53')]=_0x142572;}else if(_0x51f62b&&_0x51f62b['recordingFormat']&&_0x51f62b[_0xf50d('0x54')]!==_0xf50d('0x55')){logger[_0xf50d('0x21')](_0xf50d('0x56'),_0xf50d('0x57'));_0x5b6225[_0xf50d('0x53')]=_0x142572;}else{_0x5b6225[_0xf50d('0x53')]='';}return getUser(_0x3fde20,_0x5d2293,_0xab0a02,_0x4e1d68,_0x472fc7,_0x4b52a3)['then'](function(_0x47ebf7){logger['info']('['+_0x4b52a3[_0xf50d('0x14')]()+_0xf50d('0x58'),_0x47ebf7[_0xf50d('0x24')]);logger[_0xf50d('0x21')]('['+_0x4b52a3['toUpperCase']()+_0xf50d('0x59'),_0x47ebf7[_0xf50d('0x1b')]);return getEndUser(_0x47ebf7,_0x5d2293,_0x4e1d68,_0x472fc7,_0x5b6225,_0x4b52a3);})['then'](function(_0x2eb0f4){logger[_0xf50d('0x21')]('['+_0x4b52a3[_0xf50d('0x14')]()+_0xf50d('0x5a'),_0x2eb0f4['enduserId']);logger[_0xf50d('0x21')]('['+_0x4b52a3[_0xf50d('0x14')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x5b6225[_0xf50d('0x28')]);return getTicket(_0x2eb0f4,_0x5d2293,_0x4e1d68,_0x472fc7,_0x5b6225,_0x4025c4,_0x4b52a3);})[_0xf50d('0x11')](function(_0x1616d8){logger[_0xf50d('0x21')](util['format']('['+_0x4b52a3[_0xf50d('0x14')]()+_0xf50d('0x5b'),_0x4025c4[_0xf50d('0x3e')],_0x1616d8[_0xf50d('0x5c')]));logger[_0xf50d('0x21')](util[_0xf50d('0x48')]('['+_0x4b52a3[_0xf50d('0x14')]()+']\x20Call\x20direction:\x20%s',_0x4b52a3));if(_0x4b52a3!==_0xf50d('0x5d')){logger['info']('['+_0x4b52a3['toUpperCase']()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x5d2293[_0xf50d('0xe')],_0xab0a02[_0xf50d('0x5e')],_0x4025c4[_0xf50d('0x3e')],_0x1616d8['ticketId']);}})[_0xf50d('0x13')](function(_0xac9325){logger[_0xf50d('0x5f')]('['+_0x4b52a3[_0xf50d('0x14')]()+_0xf50d('0x60'),util['inspect'](_0xac9325,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x954a=['recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','inspect','lodash','request-promise','util','./util','md5','../../../../config/logger','../../../../config/environment','redis','defaults','socket.io-emitter','remoteUri','password','clientSecret','then','catch','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','validateEmail','email','userEmail','length','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','outbound','destcalleridnum','replace','%2b','value','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','customField','idField','indexOf','content','incident','POST','incidents','Subjects','getString','Descriptions','/contacts(','ticketType','phonecall','phonecalls','callDirection','queue','Fields','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0x954a,0x66));var _0xa954=function(_0x34f6c3,_0x346cb9){_0x34f6c3=_0x34f6c3-0x0;var _0x43b5f6=_0x954a[_0x34f6c3];return _0x43b5f6;};'use strict';var _=require(_0xa954('0x0'));var BPromise=require('bluebird');var rp=require(_0xa954('0x1'));var util=require(_0xa954('0x2'));var intUtil=require(_0xa954('0x3'));var md5=require(_0xa954('0x4'));var Redis=require('ioredis');var logger=require(_0xa954('0x5'))('dynamics365');var config=require(_0xa954('0x6'));config[_0xa954('0x7')]=_[_0xa954('0x8')](config[_0xa954('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xa954('0x9'))(new Redis(config['redis']));function getAuthToken(_0x1faace,_0x5664c8,_0x168052){var _0x31c561={'method':'POST','uri':_0x5664c8,'form':{'client_id':_0x1faace['clientId'],'resource':_0x1faace[_0xa954('0xa')],'username':_0x1faace['username'],'password':_0x1faace[_0xa954('0xb')],'grant_type':'password','client_secret':_0x1faace[_0xa954('0xc')]},'json':!![]};return rp(_0x31c561)[_0xa954('0xd')](function(_0x542e1f){return _0x542e1f['access_token'];})[_0xa954('0xe')](function(_0x576026){logger['error']('['+[_0x168052[_0xa954('0xf')]()]+']\x20Wrong\x20credentials!');return _0x576026[_0xa954('0x10')];});}function getUser(_0x3ffb6b,_0x2db122,_0x36a157,_0x16fdc8,_0x4f408e,_0x433a8b){return new BPromise(function(_0x3d1aec,_0x5d0bea){return getAuthToken(_0x2db122,_0x16fdc8,_0x433a8b)[_0xa954('0xd')](function(_0xc4ae3c){var _0x4675b6={'method':_0xa954('0x11'),'uri':_0x4f408e+_0xa954('0x12'),'headers':{'Authorization':_0xa954('0x13')+_0xc4ae3c,'OData-Version':_0xa954('0x14')},'json':!![]};return rp(_0x4675b6);})['then'](function(_0x6f2613){var _0x52591d=_0x6f2613['value'];var _0x6e9a6=![];var _0x328d3d=null;if(!_['isNil'](_0x36a157)){if(intUtil[_0xa954('0x15')](_0x36a157[_0xa954('0x16')])){_0x3ffb6b[_0xa954('0x17')]=_0x36a157[_0xa954('0x16')];for(_0x328d3d=0x0;_0x328d3d<_0x52591d[_0xa954('0x18')];_0x328d3d++){if(_0x52591d[_0x328d3d]['internalemailaddress']===_0x36a157[_0xa954('0x16')]&&!_0x52591d[_0x328d3d]['isdisabled']){_0x6e9a6=!![];logger[_0xa954('0x19')]('['+[_0x433a8b[_0xa954('0xf')]()]+']\x20Agent\x20found\x20'+_0x52591d[_0x328d3d][_0xa954('0x1a')]+'!');_0x3ffb6b[_0xa954('0x1b')]=_0x52591d[_0x328d3d][_0xa954('0x1a')];}}}}if(!_0x6e9a6){logger[_0xa954('0x19')]('['+[_0x433a8b[_0xa954('0xf')]()]+_0xa954('0x1c'));_0x3ffb6b[_0xa954('0x17')]=_0x2db122[_0xa954('0x1d')];for(_0x328d3d=0x0;_0x328d3d<_0x52591d[_0xa954('0x18')];_0x328d3d++){if(_0x52591d[_0x328d3d]['internalemailaddress']===_0x2db122[_0xa954('0x1d')]){_0x3ffb6b['userId']=_0x52591d[_0x328d3d]['systemuserid'];}}}_0x3d1aec(_0x3ffb6b);})['catch'](function(_0x728139){_0x5d0bea(_0x728139['message']);});});}function createEndUser(_0x3c56fd,_0x4b917c,_0x18a637,_0x10d431,_0x1186e1,_0x178ea5){return new BPromise(function(_0x14a6fa,_0x2fffbc){return getAuthToken(_0x4b917c,_0x18a637,_0x178ea5)[_0xa954('0xd')](function(_0x5c7ddf){var _0xc8ac1a=_0x178ea5[_0xa954('0x1e')]()==='outbound'?_0x1186e1['destcalleridnum']:_0x1186e1[_0xa954('0x1f')];var _0x1eeffb={'method':'POST','uri':_0x10d431+_0xa954('0x20'),'body':{'telephone1':_0xc8ac1a,'fullname':_0xc8ac1a,'firstname':_0xc8ac1a,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xa954('0x21')+_0x3c56fd[_0xa954('0x1b')]+')'},'headers':{'Authorization':_0xa954('0x13')+_0x5c7ddf,'OData-Version':_0xa954('0x14')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x1eeffb);})[_0xa954('0xd')](function(_0x12c358){var _0x12daa3=_0x12c358[_0xa954('0x22')][_0xa954('0x23')];var _0x240f20=_0x12daa3[_0xa954('0x24')](_0x12daa3[_0xa954('0x25')]('(')+0x1,_0x12daa3['lastIndexOf'](')'));_0x3c56fd[_0xa954('0x26')]=_0x240f20;_0x14a6fa(_0x3c56fd);})[_0xa954('0xe')](function(_0x78e8de){_0x2fffbc(_0x78e8de[_0xa954('0x10')]);});});}function getEndUser(_0xa7c2bd,_0x1ef055,_0x186d6f,_0x448883,_0x2eab19,_0xe3d809){return new BPromise(function(_0x3ccbf2,_0x175f8e){var _0xab5ab4=_0xe3d809[_0xa954('0x1e')]()===_0xa954('0x27')?_0x2eab19[_0xa954('0x28')]:_0x2eab19[_0xa954('0x1f')];return getAuthToken(_0x1ef055,_0x186d6f,_0xe3d809)['then'](function(_0x11fc14){var _0x5a4896={'method':'GET','uri':_0x448883+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0xab5ab4[_0xa954('0x29')]('+',_0xa954('0x2a'))+'\x27','headers':{'Authorization':_0xa954('0x13')+_0x11fc14,'If-None-Match':null,'OData-Version':_0xa954('0x14')},'json':!![]};return rp(_0x5a4896);})[_0xa954('0xd')](function(_0x4453e0){var _0x40d51f=null;if(_0x4453e0){var _0x2e780d=_0x4453e0[_0xa954('0x2b')];var _0x67699e=![];for(_0x40d51f=0x0;_0x40d51f<_0x2e780d[_0xa954('0x18')];_0x40d51f++){if(_0x2e780d[_0x40d51f][_0xa954('0x2c')]===_0xab5ab4){_0x67699e=!![];_0xa7c2bd['enduserId']=_0x2e780d[_0x40d51f][_0xa954('0x2d')];}}if(_0x67699e){_0x3ccbf2(_0xa7c2bd);}else{return createEndUser(_0xa7c2bd,_0x1ef055,_0x186d6f,_0x448883,_0x2eab19,_0xe3d809)['then'](function(_0x5b56f3){logger[_0xa954('0x19')]('['+[_0xe3d809[_0xa954('0xf')]()]+_0xa954('0x2e'),_0x5b56f3[_0xa954('0x26')]);_0x3ccbf2(_0x5b56f3);});}}else{return createEndUser(_0xa7c2bd,_0x1ef055,_0x186d6f,_0x448883,_0x2eab19,_0xe3d809)[_0xa954('0xd')](function(_0x3a3de3){logger[_0xa954('0x19')]('['+[_0xe3d809['toUpperCase']()]+_0xa954('0x2f'),_0x3a3de3[_0xa954('0x26')]);_0x3ccbf2(_0x3a3de3);});}});});}function getCustomFields(_0x38b809,_0x51b242,_0x1469a8){var _0x22896c={};if(_0x38b809[_0xa954('0x18')]>0x0){_[_0xa954('0x30')](_0x38b809,function(_0x52aa2a){if(_[_0xa954('0x31')]([_0xa954('0x32'),_0xa954('0x33')],_0x52aa2a['type'])&&_0x52aa2a['nameField']&&!_0x52aa2a[_0xa954('0x34')]){var _0x3600ea=_0x52aa2a[_0xa954('0x35')][_0xa954('0x1e')]();var _0x55ee20=_0x3600ea['substring'](0x0,_0x3600ea[_0xa954('0x36')]('_'));var _0x115227=_0x3600ea[_0xa954('0x24')](_0x3600ea[_0xa954('0x36')]('_')+0x1);if(_0x55ee20===_0x1469a8){_0x22896c[_0x115227]=_0x52aa2a[_0xa954('0x37')];}}});}return _0x22896c;}function getTicket(_0x5c8481,_0x531f50,_0x500bbc,_0x49bf6e,_0x39fb2e,_0x3a07ff,_0x413c31){return new BPromise(function(_0x39a873,_0x1a739c){var _0x469072;return getAuthToken(_0x531f50,_0x500bbc,_0x413c31)[_0xa954('0xd')](function(_0x209f2c){if(_0x3a07ff['ticketType']===_0xa954('0x38')){_0x469072={'method':_0xa954('0x39'),'uri':_0x49bf6e+_0xa954('0x3a'),'body':Object['assign']({},{'title':intUtil['getString'](_0x3a07ff[_0xa954('0x3b')],_0x39fb2e,'\x20'),'description':intUtil[_0xa954('0x3c')](_0x3a07ff[_0xa954('0x3d')],_0x39fb2e,'\x0a'),'customerid_contact@odata.bind':_0xa954('0x3e')+_0x5c8481[_0xa954('0x26')]+')','ownerid@odata.bind':_0xa954('0x21')+_0x5c8481[_0xa954('0x1b')]+')','caseorigincode':'1'},getCustomFields(_0x3a07ff['Fields'],_0x39fb2e,_0x3a07ff[_0xa954('0x3f')])),'headers':{'Authorization':_0xa954('0x13')+_0x209f2c,'OData-Version':_0xa954('0x14')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3a07ff[_0xa954('0x3f')]===_0xa954('0x40')){_0x469072={'method':_0xa954('0x39'),'uri':_0x49bf6e+_0xa954('0x41'),'body':Object['assign']({},{'subject':intUtil['getString'](_0x3a07ff[_0xa954('0x3b')],_0x39fb2e,'\x20'),'phonenumber':String(_0x39fb2e[_0xa954('0x1f')]),'description':intUtil[_0xa954('0x3c')](_0x3a07ff[_0xa954('0x3d')],_0x39fb2e,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x5c8481['enduserId']+')','ownerid@odata.bind':'/systemusers('+_0x5c8481[_0xa954('0x1b')]+')','directioncode':_0x5c8481[_0xa954('0x42')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x5c8481['userId']+')','participationtypemask':_0x5c8481[_0xa954('0x42')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xa954('0x3e')+_0x5c8481[_0xa954('0x26')]+')','participationtypemask':_0x5c8481[_0xa954('0x42')]===_0xa954('0x43')?0x1:0x2}]},getCustomFields(_0x3a07ff[_0xa954('0x44')],_0x39fb2e,_0x3a07ff[_0xa954('0x3f')])),'headers':{'Authorization':'Bearer\x20'+_0x209f2c,'OData-Version':_0xa954('0x14')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x469072);})['then'](function(_0x498899){var _0x697e3f=_0x498899[_0xa954('0x22')]['odata-entityid'];var _0x146b72=_0x697e3f[_0xa954('0x24')](_0x697e3f[_0xa954('0x25')]('(')+0x1,_0x697e3f[_0xa954('0x25')](')'));_0x5c8481[_0xa954('0x45')]=_0x146b72;_0x39a873(_0x5c8481);})['catch'](function(_0x2d3015){_0x1a739c(_0x2d3015[_0xa954('0x10')]);});});}function emit(_0x830317,_0x14cd3c,_0x492f58,_0x29a240){var _0x1132c5={'uri':util['format'](_0xa954('0x46'),_0x830317,_0x492f58,_0x29a240)};io['to'](util[_0xa954('0x47')]('user:%s',_0x14cd3c))[_0xa954('0x48')](_0xa954('0x49'),_0x1132c5);}exports['cs']=function(_0x2850cb,_0x3fa712,_0x1cab7c,_0x3f0f2b,_0x53e14b,_0x1e0c9d,_0x3548a5,_0x286e7e){var _0x3b2974={};_0x1e0c9d[_0xa954('0xa')]=intUtil[_0xa954('0x4a')](_0x1e0c9d[_0xa954('0xa')]);_0x1e0c9d[_0xa954('0x4b')]=intUtil[_0xa954('0x4a')](_0x1e0c9d[_0xa954('0x4b')]);_0x3b2974[_0xa954('0x42')]=_0x286e7e===_0xa954('0x43')||_0x286e7e===_0xa954('0x4c')?_0xa954('0x43'):_0xa954('0x27');var _0x2af837=util[_0xa954('0x47')]('%s/api/data/v9.0/',_0x1e0c9d[_0xa954('0xa')]);var _0x496daf=util[_0xa954('0x47')](_0xa954('0x4d'),_0x1e0c9d['tenantId']);var _0x4fa339=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1e0c9d[_0xa954('0x4b')],_0x3fa712[_0xa954('0x4e')],md5(_0x3fa712[_0xa954('0x4e')]));if(_0x53e14b&&_0x53e14b[_0xa954('0x4f')]){logger['info'](_0xa954('0x50'),_0xa954('0x51'));_0x3fa712['recordingURL']=_0x4fa339;}else if(_0x3548a5&&_0x3548a5['recordingFormat']&&_0x3548a5[_0xa954('0x52')]!=='none'){logger[_0xa954('0x19')](_0xa954('0x53'),'Recording\x20is\x20enabled!');_0x3fa712[_0xa954('0x54')]=_0x4fa339;}else{_0x3fa712[_0xa954('0x54')]='';}return getUser(_0x3b2974,_0x1e0c9d,_0x3f0f2b,_0x496daf,_0x2af837,_0x286e7e)['then'](function(_0x180b09){logger[_0xa954('0x19')]('['+_0x286e7e['toUpperCase']()+_0xa954('0x55'),_0x180b09[_0xa954('0x1b')]);logger[_0xa954('0x19')]('['+_0x286e7e['toUpperCase']()+']\x20The\x20User\x20email\x20is:',_0x180b09['userEmail']);return getEndUser(_0x180b09,_0x1e0c9d,_0x496daf,_0x2af837,_0x3fa712,_0x286e7e);})['then'](function(_0x26dce8){logger[_0xa954('0x19')]('['+_0x286e7e[_0xa954('0xf')]()+_0xa954('0x56'),_0x26dce8[_0xa954('0x26')]);logger[_0xa954('0x19')]('['+_0x286e7e[_0xa954('0xf')]()+_0xa954('0x57'),_0x3fa712[_0xa954('0x1f')]);return getTicket(_0x26dce8,_0x1e0c9d,_0x496daf,_0x2af837,_0x3fa712,_0x1cab7c,_0x286e7e);})[_0xa954('0xd')](function(_0x29802c){logger['info'](util[_0xa954('0x47')]('['+_0x286e7e[_0xa954('0xf')]()+_0xa954('0x58'),_0x1cab7c[_0xa954('0x3f')],_0x29802c['ticketId']));logger[_0xa954('0x19')](util['format']('['+_0x286e7e[_0xa954('0xf')]()+']\x20Call\x20direction:\x20%s',_0x286e7e));if(_0x286e7e!==_0xa954('0x4c')){logger[_0xa954('0x19')]('['+_0x286e7e[_0xa954('0xf')]()+']',_0xa954('0x59'));emit(_0x1e0c9d['remoteUri'],_0x3f0f2b[_0xa954('0x5a')],_0x1cab7c[_0xa954('0x3f')],_0x29802c[_0xa954('0x45')]);}})[_0xa954('0xe')](function(_0x3d35b6){logger[_0xa954('0x5b')]('['+_0x286e7e['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0xa954('0x5c')](_0x3d35b6,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index cb4e521..d196611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc090=['./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','calleridname','calleridnum','getString','Descriptions','<br>','Tags','Fields','custom_fields','mapValues','value','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','toString','base64','debug','stringify','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','variable','variableName','push','customVariable','name','Variable','stripTrailingSlash','serverUrl','monitor_format','recordingURL','uniqueid','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:browser:url','lastevent','toUpperCase','lodash','util','ioredis'];(function(_0x11fc82,_0x37b91f){var _0x3cb0dc=function(_0x1b9bfe){while(--_0x1b9bfe){_0x11fc82['push'](_0x11fc82['shift']());}};_0x3cb0dc(++_0x37b91f);}(_0xc090,0x111));var _0x0c09=function(_0x1f944c,_0x48e821){_0x1f944c=_0x1f944c-0x0;var _0x195b9c=_0xc090[_0x1f944c];return _0x195b9c;};'use strict';var _=require(_0x0c09('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x0c09('0x1'));var Redis=require(_0x0c09('0x2'));var intUtil=require(_0x0c09('0x3'));var config=require(_0x0c09('0x4'));var logger=require(_0x0c09('0x5'))(_0x0c09('0x6'));config[_0x0c09('0x7')]=_[_0x0c09('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x0c09('0x9'))(new Redis(config[_0x0c09('0x7')]));var headers={'Content-Type':'application/json','Accept':_0x0c09('0xa')};function emit(_0x263c1f,_0x424943,_0x21a298){io['to'](_0x263c1f)[_0x0c09('0xb')](_0x424943,_0x21a298);}function getTicket(_0x9f3908,_0x159210,_0x11fe12,_0x6d36b4,_0x50f970){logger[_0x0c09('0xc')](_0x0c09('0xd'));var _0x4b9b96=_[_0x0c09('0xe')]({'responder_id':_0x159210['id'],'requester_id':_0x11fe12['id'],'name':util['format']('Caller\x20-\x20%s',_0x50f970[_0x0c09('0xf')]),'phone':_0x50f970[_0x0c09('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0c09('0x11')](_0x6d36b4['Subjects'],_0x50f970,'\x20'),'description':intUtil[_0x0c09('0x11')](_0x6d36b4[_0x0c09('0x12')],_0x50f970,_0x0c09('0x13')),'tags':getTags(_0x6d36b4[_0x0c09('0x14')],'name')},getCustomFields(_0x6d36b4[_0x0c09('0x15')],_0x50f970));_0x4b9b96[_0x0c09('0x16')]=_[_0x0c09('0x17')](_['keyBy'](_0x4b9b96[_0x0c09('0x16')],'id'),_0x0c09('0x18'));return request({'uri':util[_0x0c09('0x19')](_0x0c09('0x1a'),_0x9f3908[_0x0c09('0x1b')]),'method':_0x0c09('0x1c'),'body':_0x4b9b96})[_0x0c09('0x1d')](function(_0xfdce80){logger[_0x0c09('0xc')](_0x0c09('0x1e'));return _0xfdce80;});}function getUser(_0x3cb5df,_0x1b16af){if(intUtil[_0x0c09('0x1f')](_0x1b16af)){return request({'uri':util[_0x0c09('0x19')](_0x0c09('0x20'),_0x3cb5df[_0x0c09('0x1b')]),'qs':{'email':_0x1b16af}})[_0x0c09('0x1d')](function(_0x3d2e37){if(_0x3d2e37[_0x0c09('0x21')]){logger[_0x0c09('0xc')](_0x0c09('0x22'));return _[_0x0c09('0x23')](_0x3d2e37,function(_0x22ecc2){return _0x22ecc2[_0x0c09('0x24')]['email']===_0x1b16af;});}else{logger['info'](_0x0c09('0x25'));return request({'uri':util[_0x0c09('0x19')](_0x0c09('0x26'),_0x3cb5df[_0x0c09('0x1b')])})[_0x0c09('0x1d')](function(_0x27c3c1){logger['info'](_0x0c09('0x27'));return _0x27c3c1;});}});}else{logger['info'](_0x0c09('0x28'));return request({'uri':util['format'](_0x0c09('0x26'),_0x3cb5df[_0x0c09('0x1b')])})[_0x0c09('0x1d')](function(_0x2b48e8){logger[_0x0c09('0xc')](_0x0c09('0x27'));return _0x2b48e8;});}}function getEndUser(_0x38f21f,_0x3478e6,_0x361601){logger[_0x0c09('0xc')]('Searching\x20enduser\x20with\x20phone',_0x361601);return request({'uri':util['format']('%s/api/v2/contacts',_0x38f21f[_0x0c09('0x1b')]),'qs':{'phone':_0x361601}})[_0x0c09('0x1d')](function(_0x458c8f){if(_0x458c8f[_0x0c09('0x21')]){logger[_0x0c09('0xc')](_0x0c09('0x29'));return _['find'](_0x458c8f,{'phone':_0x361601});}else{logger['info'](_0x0c09('0x2a'));return request({'uri':util[_0x0c09('0x19')]('%s/api/v2/contacts',_0x38f21f[_0x0c09('0x1b')]),'method':_0x0c09('0x1c'),'body':{'name':_0x3478e6,'phone':_0x361601}})[_0x0c09('0x1d')](function(_0x3dc0cc){logger[_0x0c09('0xc')](_0x0c09('0x2b'));return _0x3dc0cc;});}});}function getAuth(_0x60646a){return util['format'](_0x0c09('0x2c'),new Buffer(_0x60646a['apiKey']+':X')[_0x0c09('0x2d')](_0x0c09('0x2e')));}function request(_0x467bef){logger[_0x0c09('0x2f')]('[HTTP]',JSON[_0x0c09('0x30')](_0x467bef));return rp(_['defaults'](_0x467bef,{'method':_0x0c09('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x59a696,_0x5271ef){var _0x25474f=[];if(_0x59a696&&_0x59a696['length']>0x0){_0x25474f=_[_0x0c09('0x32')](_0x59a696,_0x5271ef);}return _0x25474f;}function getCustomFields(_0x2aca31,_0x145040){var _0x2a524b=[];var _0x1b08a4={'custom_fields':[]};if(_0x2aca31[_0x0c09('0x21')]>0x0){_[_0x0c09('0x33')](_0x2aca31,function(_0x3e8a07){if(_[_0x0c09('0x34')](['string',_0x0c09('0x35')],_0x3e8a07[_0x0c09('0x36')])&&_0x3e8a07[_0x0c09('0x37')]&&!_0x3e8a07[_0x0c09('0x38')]){_0x1b08a4[_0x3e8a07[_0x0c09('0x37')][_0x0c09('0x39')]()]=_0x3e8a07[_0x0c09('0x3a')][_0x0c09('0x2d')]();}else if(_['includes']([_0x0c09('0x3b'),_0x0c09('0x35')],_0x3e8a07[_0x0c09('0x36')])&&_0x3e8a07['idField']&&_0x3e8a07[_0x0c09('0x38')]){_0x1b08a4[_0x0c09('0x16')]['push']({'id':_0x3e8a07[_0x0c09('0x3c')],'value':_0x3e8a07[_0x0c09('0x3a')]['toString']()});}else if(_0x3e8a07[_0x0c09('0x36')]===_0x0c09('0x3d')&&_0x3e8a07[_0x0c09('0x3e')]&&_0x3e8a07[_0x0c09('0x3c')]&&_0x3e8a07[_0x0c09('0x38')]){_0x145040[_0x3e8a07['variableName']]&&_0x1b08a4[_0x0c09('0x16')][_0x0c09('0x3f')]({'id':_0x3e8a07[_0x0c09('0x3c')],'value':_0x145040[_0x3e8a07[_0x0c09('0x3e')]][_0x0c09('0x2d')]()});}else if(_0x3e8a07['type']===_0x0c09('0x40')&&_0x3e8a07['Variable']&&_0x3e8a07['Variable'][_0x0c09('0x41')]&&_0x3e8a07[_0x0c09('0x3c')]&&_0x3e8a07[_0x0c09('0x38')]){_0x145040[_0x3e8a07[_0x0c09('0x42')][_0x0c09('0x41')][_0x0c09('0x39')]()]&&_0x1b08a4[_0x0c09('0x16')]['push']({'id':_0x3e8a07[_0x0c09('0x3c')],'value':_0x145040[_0x3e8a07[_0x0c09('0x42')]['name'][_0x0c09('0x39')]()][_0x0c09('0x2d')]()});}});}return _0x1b08a4;}exports['queue']=function(_0x3766c0,_0x43b061,_0x15756c,_0x337577,_0x128e36,_0xf17b96){var _0x2a741c,_0xed1aa;_0xf17b96['remoteUri']=intUtil['stripTrailingSlash'](_0xf17b96['remoteUri']);_0xf17b96['serverUrl']=intUtil[_0x0c09('0x43')](_0xf17b96[_0x0c09('0x44')]);if(_0x128e36&&_0x128e36[_0x0c09('0x45')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x43b061[_0x0c09('0x46')]=util[_0x0c09('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xf17b96['serverUrl'],_0x43b061[_0x0c09('0x47')],md5(_0x43b061[_0x0c09('0x47')]));}else{_0x43b061[_0x0c09('0x46')]='';}headers['Authorization']=getAuth(_0xf17b96);return getUser(_0xf17b96,_0x337577['email'])[_0x0c09('0x1d')](function(_0x257f23){_0x2a741c=_0x257f23;logger[_0x0c09('0xc')](_0x0c09('0x48'),_0x2a741c['id']);return getEndUser(_0xf17b96,_0x43b061[_0x0c09('0xf')],_0x43b061[_0x0c09('0x10')]);})[_0x0c09('0x1d')](function(_0x15d474){_0xed1aa=_0x15d474;logger[_0x0c09('0xc')]('The\x20Enduser\x20ID\x20is:',_0xed1aa['id']);return getTicket(_0xf17b96,_0x2a741c,_0xed1aa,_0x15756c,_0x43b061);})['then'](function(_0x58a1bf){if(_0x58a1bf&&_0x58a1bf['id']){logger[_0x0c09('0xc')](_0x0c09('0x1e'));logger['info'](_0x0c09('0x49'),_0x58a1bf['id']);logger[_0x0c09('0xc')](_0x0c09('0x4a'),_0x0c09('0x4b'));emit(util[_0x0c09('0x19')](_0x0c09('0x4c'),_0x337577['name']),'trigger:browser:url',{'uri':util['format'](_0x0c09('0x4d'),_0xf17b96[_0x0c09('0x1b')],_0x58a1bf['id'])});}})[_0x0c09('0x4e')](function(_0x1c6f61){logger[_0x0c09('0x4f')]('[QUEUE]',JSON[_0x0c09('0x30')](_0x1c6f61));});};exports[_0x0c09('0x50')]=function(_0x3ea73e,_0x8afdce,_0x4beea1,_0x1a6496,_0x53e14e,_0x1c91ab,_0x3e2327){var _0x4cd243,_0x571e63;_0x1c91ab[_0x0c09('0x1b')]=intUtil['stripTrailingSlash'](_0x1c91ab[_0x0c09('0x1b')]);_0x1c91ab[_0x0c09('0x44')]=intUtil['stripTrailingSlash'](_0x1c91ab[_0x0c09('0x44')]);if(_0x3e2327&&_0x3e2327[_0x0c09('0x51')]&&_0x3e2327[_0x0c09('0x51')]!==_0x0c09('0x52')){logger[_0x0c09('0xc')](_0x0c09('0x53'),'Recording\x20is\x20enabled!');_0x8afdce[_0x0c09('0x46')]=util['format'](_0x0c09('0x54'),_0x1c91ab['serverUrl'],_0x8afdce['uniqueid'],md5(_0x8afdce[_0x0c09('0x47')]));}headers[_0x0c09('0x55')]=getAuth(_0x1c91ab);return getUser(_0x1c91ab,_0x1a6496[_0x0c09('0x56')])[_0x0c09('0x1d')](function(_0x33c748){_0x4cd243=_0x33c748;logger[_0x0c09('0xc')](_0x0c09('0x48'),_0x4cd243['id']);return getEndUser(_0x1c91ab,_0x8afdce['destcalleridname'],_0x8afdce[_0x0c09('0x57')]);})[_0x0c09('0x1d')](function(_0x9a5149){_0x571e63=_0x9a5149;logger['info'](_0x0c09('0x58'),_0x571e63['id']);return getTicket(_0x1c91ab,_0x4cd243,_0x571e63,_0x4beea1,_0x8afdce);})[_0x0c09('0x1d')](function(_0x4be942){if(_0x4be942&&_0x4be942['id']){logger[_0x0c09('0xc')]('Ticket\x20created!');logger[_0x0c09('0xc')](_0x0c09('0x49'),_0x4be942['id']);logger[_0x0c09('0xc')](_0x0c09('0x53'),_0x0c09('0x4b'));emit(util['format'](_0x0c09('0x4c'),_0x1a6496[_0x0c09('0x41')]),_0x0c09('0x59'),{'uri':util[_0x0c09('0x19')](_0x0c09('0x4d'),_0x1c91ab[_0x0c09('0x1b')],_0x4be942['id'])});}})['catch'](function(_0x2f9745){logger[_0x0c09('0x4f')]('[OUTBOUND]',JSON['stringify'](_0x2f9745));});};exports['unmanaged']=function(_0x190d29,_0x576af9,_0x4480ff,_0x2ba42f,_0x297d7e,_0x1052dc){var _0x501e12,_0x2191b8;_0x1052dc[_0x0c09('0x1b')]=intUtil[_0x0c09('0x43')](_0x1052dc[_0x0c09('0x1b')]);_0x1052dc[_0x0c09('0x44')]=intUtil['stripTrailingSlash'](_0x1052dc[_0x0c09('0x44')]);if(_0x297d7e&&_0x297d7e[_0x0c09('0x45')]){logger[_0x0c09('0xc')]('['+_0x576af9[_0x0c09('0x5a')][_0x0c09('0x5b')]()+']','Recording\x20is\x20enabled!');_0x576af9[_0x0c09('0x46')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1052dc[_0x0c09('0x44')],_0x576af9[_0x0c09('0x47')],md5(_0x576af9[_0x0c09('0x47')]));}else{_0x576af9['recordingURL']='';}headers[_0x0c09('0x55')]=getAuth(_0x1052dc);return getUser(_0x1052dc,'')[_0x0c09('0x1d')](function(_0x434392){_0x501e12=_0x434392;logger[_0x0c09('0xc')](_0x0c09('0x48'),_0x501e12['id']);return getEndUser(_0x1052dc,_0x576af9['calleridname'],_0x576af9[_0x0c09('0x10')]);})[_0x0c09('0x1d')](function(_0x48c2d8){_0x2191b8=_0x48c2d8;logger['info'](_0x0c09('0x58'),_0x2191b8['id']);return getTicket(_0x1052dc,_0x501e12,_0x2191b8,_0x4480ff,_0x576af9);})[_0x0c09('0x1d')](function(_0x5eef32){if(_0x5eef32){logger[_0x0c09('0xc')](_0x0c09('0x1e'));logger[_0x0c09('0xc')](_0x0c09('0x49'),_0x5eef32['id']);}})[_0x0c09('0x4e')](function(_0x317912){logger[_0x0c09('0x4f')]('['+_0x576af9[_0x0c09('0x5a')][_0x0c09('0x5b')]()+']',JSON[_0x0c09('0x30')](_0x317912));});};
\ No newline at end of file
+var _0x0a80=['includes','string','picklist','nameField','toLowerCase','content','type','customField','push','idField','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','The\x20User\x20ID\x20is:','destcalleridnum','[OUTBOUND]','user:%s','catch','unmanaged','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','name','Fields','custom_fields','keyBy','value','POST','then','Ticket\x20created!','validateEmail','remoteUri','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Enduser\x20created.','toString','base64','[HTTP]','stringify','GET','forEach'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0a80,0x12e));var _0x00a8=function(_0xa0f288,_0x575e84){_0xa0f288=_0xa0f288-0x0;var _0x3b0d55=_0x0a80[_0xa0f288];return _0x3b0d55;};'use strict';var _=require(_0x00a8('0x0'));var rp=require(_0x00a8('0x1'));var md5=require(_0x00a8('0x2'));var util=require(_0x00a8('0x3'));var Redis=require(_0x00a8('0x4'));var intUtil=require(_0x00a8('0x5'));var config=require(_0x00a8('0x6'));var logger=require(_0x00a8('0x7'))(_0x00a8('0x8'));config[_0x00a8('0x9')]=_[_0x00a8('0xa')](config['redis'],{'host':_0x00a8('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x00a8('0x9')]));var headers={'Content-Type':_0x00a8('0xc'),'Accept':_0x00a8('0xc')};function emit(_0x330c4b,_0x50a438,_0x2cdbe3){io['to'](_0x330c4b)[_0x00a8('0xd')](_0x50a438,_0x2cdbe3);}function getTicket(_0x5e3fb5,_0x52a986,_0x51ebd3,_0xd91f3,_0x5d7e50){logger[_0x00a8('0xe')]('Creating\x20new\x20ticket...');var _0xb3a1fe=_[_0x00a8('0xf')]({'responder_id':_0x52a986['id'],'requester_id':_0x51ebd3['id'],'name':util[_0x00a8('0x10')](_0x00a8('0x11'),_0x5d7e50[_0x00a8('0x12')]),'phone':_0x5d7e50[_0x00a8('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x00a8('0x14')](_0xd91f3[_0x00a8('0x15')],_0x5d7e50,'\x20'),'description':intUtil['getString'](_0xd91f3[_0x00a8('0x16')],_0x5d7e50,'<br>'),'tags':getTags(_0xd91f3[_0x00a8('0x17')],_0x00a8('0x18'))},getCustomFields(_0xd91f3[_0x00a8('0x19')],_0x5d7e50));_0xb3a1fe[_0x00a8('0x1a')]=_['mapValues'](_[_0x00a8('0x1b')](_0xb3a1fe['custom_fields'],'id'),_0x00a8('0x1c'));return request({'uri':util[_0x00a8('0x10')]('%s/api/v2/tickets',_0x5e3fb5['remoteUri']),'method':_0x00a8('0x1d'),'body':_0xb3a1fe})[_0x00a8('0x1e')](function(_0xad22b4){logger[_0x00a8('0xe')](_0x00a8('0x1f'));return _0xad22b4;});}function getUser(_0x44c444,_0x11166f){if(intUtil[_0x00a8('0x20')](_0x11166f)){return request({'uri':util[_0x00a8('0x10')]('%s/api/v2/agents',_0x44c444[_0x00a8('0x21')]),'qs':{'email':_0x11166f}})[_0x00a8('0x1e')](function(_0x180bf2){if(_0x180bf2[_0x00a8('0x22')]){logger[_0x00a8('0xe')](_0x00a8('0x23'));return _[_0x00a8('0x24')](_0x180bf2,function(_0x2700fe){return _0x2700fe[_0x00a8('0x25')][_0x00a8('0x26')]===_0x11166f;});}else{logger[_0x00a8('0xe')](_0x00a8('0x27'));return request({'uri':util[_0x00a8('0x10')](_0x00a8('0x28'),_0x44c444[_0x00a8('0x21')])})[_0x00a8('0x1e')](function(_0x356311){logger[_0x00a8('0xe')](_0x00a8('0x29'));return _0x356311;});}});}else{logger['info'](_0x00a8('0x2a'));return request({'uri':util[_0x00a8('0x10')](_0x00a8('0x28'),_0x44c444['remoteUri'])})[_0x00a8('0x1e')](function(_0x394203){logger[_0x00a8('0xe')](_0x00a8('0x29'));return _0x394203;});}}function getEndUser(_0x23e2af,_0x42240b,_0x241c0e){logger[_0x00a8('0xe')]('Searching\x20enduser\x20with\x20phone',_0x241c0e);return request({'uri':util['format']('%s/api/v2/contacts',_0x23e2af[_0x00a8('0x21')]),'qs':{'phone':_0x241c0e}})[_0x00a8('0x1e')](function(_0x5b4d27){if(_0x5b4d27[_0x00a8('0x22')]){logger[_0x00a8('0xe')]('Enduser\x20found!');return _['find'](_0x5b4d27,{'phone':_0x241c0e});}else{logger[_0x00a8('0xe')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x00a8('0x10')]('%s/api/v2/contacts',_0x23e2af[_0x00a8('0x21')]),'method':_0x00a8('0x1d'),'body':{'name':_0x42240b,'phone':_0x241c0e}})[_0x00a8('0x1e')](function(_0x4b93aa){logger[_0x00a8('0xe')](_0x00a8('0x2b'));return _0x4b93aa;});}});}function getAuth(_0x42a6a6){return util['format']('Basic\x20%s',new Buffer(_0x42a6a6['apiKey']+':X')[_0x00a8('0x2c')](_0x00a8('0x2d')));}function request(_0x4a2bf5){logger['debug'](_0x00a8('0x2e'),JSON[_0x00a8('0x2f')](_0x4a2bf5));return rp(_[_0x00a8('0xa')](_0x4a2bf5,{'method':_0x00a8('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x32dd0a,_0x5bfb24){var _0x598058=[];if(_0x32dd0a&&_0x32dd0a['length']>0x0){_0x598058=_['map'](_0x32dd0a,_0x5bfb24);}return _0x598058;}function getCustomFields(_0x325042,_0x4844ff){var _0x52cc27=[];var _0x4dc31a={'custom_fields':[]};if(_0x325042['length']>0x0){_[_0x00a8('0x31')](_0x325042,function(_0x223cec){if(_[_0x00a8('0x32')]([_0x00a8('0x33'),_0x00a8('0x34')],_0x223cec['type'])&&_0x223cec['nameField']&&!_0x223cec['customField']){_0x4dc31a[_0x223cec[_0x00a8('0x35')][_0x00a8('0x36')]()]=_0x223cec[_0x00a8('0x37')][_0x00a8('0x2c')]();}else if(_['includes']([_0x00a8('0x33'),'picklist'],_0x223cec[_0x00a8('0x38')])&&_0x223cec['idField']&&_0x223cec[_0x00a8('0x39')]){_0x4dc31a[_0x00a8('0x1a')][_0x00a8('0x3a')]({'id':_0x223cec[_0x00a8('0x3b')],'value':_0x223cec[_0x00a8('0x37')][_0x00a8('0x2c')]()});}else if(_0x223cec[_0x00a8('0x38')]===_0x00a8('0x3c')&&_0x223cec[_0x00a8('0x3d')]&&_0x223cec['idField']&&_0x223cec['customField']){_0x4844ff[_0x223cec[_0x00a8('0x3d')]]&&_0x4dc31a[_0x00a8('0x1a')][_0x00a8('0x3a')]({'id':_0x223cec[_0x00a8('0x3b')],'value':_0x4844ff[_0x223cec[_0x00a8('0x3d')]]['toString']()});}else if(_0x223cec[_0x00a8('0x38')]===_0x00a8('0x3e')&&_0x223cec['Variable']&&_0x223cec[_0x00a8('0x3f')][_0x00a8('0x18')]&&_0x223cec[_0x00a8('0x3b')]&&_0x223cec[_0x00a8('0x39')]){_0x4844ff[_0x223cec[_0x00a8('0x3f')]['name'][_0x00a8('0x36')]()]&&_0x4dc31a[_0x00a8('0x1a')][_0x00a8('0x3a')]({'id':_0x223cec['idField'],'value':_0x4844ff[_0x223cec[_0x00a8('0x3f')][_0x00a8('0x18')]['toLowerCase']()]['toString']()});}});}return _0x4dc31a;}exports[_0x00a8('0x40')]=function(_0x447b08,_0x2ea742,_0x4d9c0a,_0x457239,_0x140743,_0x5131ed){var _0xfc53ef,_0x56be01;_0x5131ed['remoteUri']=intUtil[_0x00a8('0x41')](_0x5131ed['remoteUri']);_0x5131ed[_0x00a8('0x42')]=intUtil[_0x00a8('0x41')](_0x5131ed[_0x00a8('0x42')]);if(_0x140743&&_0x140743[_0x00a8('0x43')]){logger['info'](_0x00a8('0x44'),_0x00a8('0x45'));_0x2ea742[_0x00a8('0x46')]=util[_0x00a8('0x10')](_0x00a8('0x47'),_0x5131ed['serverUrl'],_0x2ea742[_0x00a8('0x48')],md5(_0x2ea742[_0x00a8('0x48')]));}else{_0x2ea742[_0x00a8('0x46')]='';}headers[_0x00a8('0x49')]=getAuth(_0x5131ed);return getUser(_0x5131ed,_0x457239[_0x00a8('0x26')])[_0x00a8('0x1e')](function(_0x325a77){_0xfc53ef=_0x325a77;logger['info']('The\x20User\x20ID\x20is:',_0xfc53ef['id']);return getEndUser(_0x5131ed,_0x2ea742[_0x00a8('0x12')],_0x2ea742[_0x00a8('0x13')]);})[_0x00a8('0x1e')](function(_0x21ef52){_0x56be01=_0x21ef52;logger['info'](_0x00a8('0x4a'),_0x56be01['id']);return getTicket(_0x5131ed,_0xfc53ef,_0x56be01,_0x4d9c0a,_0x2ea742);})['then'](function(_0x15ceb3){if(_0x15ceb3&&_0x15ceb3['id']){logger['info'](_0x00a8('0x1f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x15ceb3['id']);logger[_0x00a8('0xe')](_0x00a8('0x44'),_0x00a8('0x4b'));emit(util[_0x00a8('0x10')]('user:%s',_0x457239['name']),_0x00a8('0x4c'),{'uri':util[_0x00a8('0x10')](_0x00a8('0x4d'),_0x5131ed[_0x00a8('0x21')],_0x15ceb3['id'])});}})['catch'](function(_0x1e861e){logger[_0x00a8('0x4e')](_0x00a8('0x44'),JSON[_0x00a8('0x2f')](_0x1e861e));});};exports[_0x00a8('0x4f')]=function(_0xf65c55,_0x36243e,_0x448755,_0x53f12b,_0x361780,_0x27a444,_0x580abb){var _0x5f29fc,_0x516a8e;_0x27a444['remoteUri']=intUtil['stripTrailingSlash'](_0x27a444[_0x00a8('0x21')]);_0x27a444[_0x00a8('0x42')]=intUtil[_0x00a8('0x41')](_0x27a444[_0x00a8('0x42')]);if(_0x580abb&&_0x580abb[_0x00a8('0x50')]&&_0x580abb['recordingFormat']!=='none'){logger[_0x00a8('0xe')]('[OUTBOUND]',_0x00a8('0x45'));_0x36243e[_0x00a8('0x46')]=util[_0x00a8('0x10')](_0x00a8('0x47'),_0x27a444[_0x00a8('0x42')],_0x36243e[_0x00a8('0x48')],md5(_0x36243e['uniqueid']));}headers[_0x00a8('0x49')]=getAuth(_0x27a444);return getUser(_0x27a444,_0x53f12b[_0x00a8('0x26')])[_0x00a8('0x1e')](function(_0x2f0f19){_0x5f29fc=_0x2f0f19;logger[_0x00a8('0xe')](_0x00a8('0x51'),_0x5f29fc['id']);return getEndUser(_0x27a444,_0x36243e['destcalleridname'],_0x36243e[_0x00a8('0x52')]);})['then'](function(_0x34af20){_0x516a8e=_0x34af20;logger[_0x00a8('0xe')](_0x00a8('0x4a'),_0x516a8e['id']);return getTicket(_0x27a444,_0x5f29fc,_0x516a8e,_0x448755,_0x36243e);})[_0x00a8('0x1e')](function(_0x29962c){if(_0x29962c&&_0x29962c['id']){logger[_0x00a8('0xe')]('Ticket\x20created!');logger[_0x00a8('0xe')]('The\x20Ticket\x20ID\x20is:',_0x29962c['id']);logger[_0x00a8('0xe')](_0x00a8('0x53'),_0x00a8('0x4b'));emit(util['format'](_0x00a8('0x54'),_0x53f12b['name']),'trigger:browser:url',{'uri':util[_0x00a8('0x10')](_0x00a8('0x4d'),_0x27a444[_0x00a8('0x21')],_0x29962c['id'])});}})[_0x00a8('0x55')](function(_0x229c68){logger[_0x00a8('0x4e')](_0x00a8('0x53'),JSON[_0x00a8('0x2f')](_0x229c68));});};exports[_0x00a8('0x56')]=function(_0x2d9f57,_0x40d4c0,_0x560fd4,_0x34a225,_0x19e764,_0x502ad1){var _0x334723,_0x26f523;_0x502ad1[_0x00a8('0x21')]=intUtil['stripTrailingSlash'](_0x502ad1[_0x00a8('0x21')]);_0x502ad1[_0x00a8('0x42')]=intUtil['stripTrailingSlash'](_0x502ad1['serverUrl']);if(_0x19e764&&_0x19e764['monitor_format']){logger[_0x00a8('0xe')]('['+_0x40d4c0['lastevent']['toUpperCase']()+']',_0x00a8('0x45'));_0x40d4c0[_0x00a8('0x46')]=util[_0x00a8('0x10')](_0x00a8('0x47'),_0x502ad1[_0x00a8('0x42')],_0x40d4c0[_0x00a8('0x48')],md5(_0x40d4c0[_0x00a8('0x48')]));}else{_0x40d4c0[_0x00a8('0x46')]='';}headers[_0x00a8('0x49')]=getAuth(_0x502ad1);return getUser(_0x502ad1,'')['then'](function(_0xba3764){_0x334723=_0xba3764;logger[_0x00a8('0xe')](_0x00a8('0x51'),_0x334723['id']);return getEndUser(_0x502ad1,_0x40d4c0[_0x00a8('0x12')],_0x40d4c0[_0x00a8('0x13')]);})[_0x00a8('0x1e')](function(_0x418e48){_0x26f523=_0x418e48;logger[_0x00a8('0xe')]('The\x20Enduser\x20ID\x20is:',_0x26f523['id']);return getTicket(_0x502ad1,_0x334723,_0x26f523,_0x560fd4,_0x40d4c0);})[_0x00a8('0x1e')](function(_0x1fcf2b){if(_0x1fcf2b){logger[_0x00a8('0xe')](_0x00a8('0x1f'));logger[_0x00a8('0xe')]('The\x20Ticket\x20ID\x20is:',_0x1fcf2b['id']);}})[_0x00a8('0x55')](function(_0x204221){logger[_0x00a8('0x4e')]('['+_0x40d4c0['lastevent'][_0x00a8('0x57')]()+']',JSON[_0x00a8('0x2f')](_0x204221));});};
\ No newline at end of file
index f459633..3ea4a44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cdb=['[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','agentEmail','Getting\x20user\x20with\x20email','userId','Admin\x20selected','userEmail','error','message','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','Subjects','getString','Contact','task','Task\x20created:','ticketId','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none'];(function(_0x38dcf9,_0x236797){var _0x246b3c=function(_0x217e6b){while(--_0x217e6b){_0x38dcf9['push'](_0x38dcf9['shift']());}};_0x246b3c(++_0x236797);}(_0x4cdb,0xb6));var _0xb4cd=function(_0x874cf1,_0x2a4954){_0x874cf1=_0x874cf1-0x0;var _0x233579=_0x4cdb[_0x874cf1];return _0x233579;};'use strict';var _=require(_0xb4cd('0x0'));var rp=require(_0xb4cd('0x1'));var md5=require('md5');var util=require(_0xb4cd('0x2'));var moment=require(_0xb4cd('0x3'));var Promise=require(_0xb4cd('0x4'));var Redis=require(_0xb4cd('0x5'));var intUtil=require('./util');var config=require(_0xb4cd('0x6'));var logger=require(_0xb4cd('0x7'))(_0xb4cd('0x8'));config['redis']=_[_0xb4cd('0x9')](config[_0xb4cd('0xa')],{'host':_0xb4cd('0xb'),'port':0x18eb});var io=require(_0xb4cd('0xc'))(new Redis(config[_0xb4cd('0xa')]));function getAdminId(_0x5cd15a,_0x1d688f,_0x2ec22c,_0x4455c9){return new Promise(function(_0x30cf82,_0x155d62){var _0x4cd37b=![];var _0x58f228={'method':_0xb4cd('0xd'),'uri':_0x4455c9+_0xb4cd('0xe'),'json':!![]};_0x58f228[_0xb4cd('0xf')]=_0x2ec22c;logger[_0xb4cd('0x10')](_0xb4cd('0x11'));return rp(_0x58f228)[_0xb4cd('0x12')](function(_0x5db3fb){if(_0x5db3fb){var _0x4f318e=_0x5db3fb[_0xb4cd('0x13')];var _0x4b43f8=null;for(_0x4b43f8=0x0;_0x4b43f8<_0x4f318e[_0xb4cd('0x14')];_0x4b43f8++){if(_0x4f318e[_0x4b43f8][_0xb4cd('0x15')]===_0x5cd15a[_0xb4cd('0x16')]){_0x5cd15a[_0xb4cd('0x17')]=_0x4f318e[_0x4b43f8]['id'];_0x4cd37b=!![];}}if(_0x4cd37b){logger[_0xb4cd('0x10')]('Admin\x20found:',_0x5cd15a[_0xb4cd('0x17')]);_0x30cf82(_0x5cd15a);}else{_0x155d62({'statusCode':0x194,'message':_0xb4cd('0x18')});}}else{_0x155d62({'statusCode':0x194,'message':_0xb4cd('0x18')});}})[_0xb4cd('0x19')](function(_0x4da2cf){logger['error']('['+[_0x1d688f[_0xb4cd('0x1a')]()]+']',_0x4da2cf['message']);_0x155d62(_0x4da2cf);});});}function getUser(_0x120866,_0x2ddd69,_0x3d4963){return function(_0x521b51){return new Promise(function(_0x5a307b,_0x5d3911){var _0x1b33f6={'method':_0xb4cd('0xd'),'uri':_0x3d4963+_0xb4cd('0xe'),'json':!![]};_0x1b33f6[_0xb4cd('0xf')]=_0x2ddd69;logger[_0xb4cd('0x10')]('Getting\x20user\x20list');return rp(_0x1b33f6)[_0xb4cd('0x12')](function(_0x533c46){if(_0x533c46){var _0x336411=_0x533c46[_0xb4cd('0x13')];var _0x1534b3=![];var _0x2abab5=null;if(_0x521b51[_0xb4cd('0x1b')]!==null){logger[_0xb4cd('0x10')](_0xb4cd('0x1c'),_0x521b51[_0xb4cd('0x1b')]);_0x521b51['userEmail']=_0x521b51[_0xb4cd('0x1b')];for(_0x2abab5=0x0;_0x2abab5<_0x336411[_0xb4cd('0x14')];_0x2abab5++){if(_0x336411[_0x2abab5][_0xb4cd('0x15')]===_0x521b51[_0xb4cd('0x1b')]){_0x1534b3=!![];_0x521b51[_0xb4cd('0x1d')]=_0x336411[_0x2abab5]['id'];logger[_0xb4cd('0x10')]('User\x20found:',_0x521b51[_0xb4cd('0x1d')]);}}}if(!_0x1534b3){logger['info'](_0xb4cd('0x1e'));_0x521b51[_0xb4cd('0x1f')]=_0x521b51[_0xb4cd('0x16')];_0x521b51[_0xb4cd('0x1d')]=_0x521b51[_0xb4cd('0x17')];_0x1534b3=!![];}if(_0x1534b3){_0x5a307b(_0x521b51);}else{_0x5d3911({'statusCode':0x194,'message':_0xb4cd('0x18')});}}else{_0x5d3911({'statusCode':0x194,'message':_0xb4cd('0x18')});}})[_0xb4cd('0x19')](function(_0x591de8){logger[_0xb4cd('0x20')]('['+[_0x120866[_0xb4cd('0x1a')]()]+']',_0x591de8[_0xb4cd('0x21')]);_0x5d3911(_0x591de8);});});};}function searchContact(_0x4b4046,_0x471bd1,_0x1c3ed6,_0x1805a4){return new Promise(function(_0x543f06,_0x6f8ae0){var _0x16338d={'method':_0xb4cd('0xd'),'headers':_0x471bd1,'uri':_0x4b4046+'/api/lookup?q='+_0x1805a4+_0xb4cd('0x22')+_0x1c3ed6+_0xb4cd('0x23'),'json':!![]};rp(_0x16338d)[_0xb4cd('0x12')](function(_0x39b06d){var _0x587b76=_[_0xb4cd('0x24')](_0x39b06d[_0xb4cd('0x25')]['contacts'],[_0x1c3ed6,_0x1805a4]);_0x543f06(_0x587b76);})[_0xb4cd('0x19')](function(_0x389521){_0x6f8ae0(_0x389521);});});}function getEndUser(_0x27ea00,_0x48b3a3,_0x589fb5){return function(_0x10b0e4){return new Promise(function(_0x17c5b4,_0x179542){logger['info'](util[_0xb4cd('0x26')](_0xb4cd('0x27'),_0x10b0e4[_0xb4cd('0x28')]));searchContact(_0x589fb5,_0x48b3a3,_0xb4cd('0x29'),_0x10b0e4[_0xb4cd('0x28')])['then'](function(_0x396993){if(_0x396993){_0x10b0e4['endUserId']=_0x396993['id'];logger['info']('Contact\x20found\x20mobile_number:',_0x10b0e4[_0xb4cd('0x2a')]);return _0x17c5b4(_0x10b0e4);}searchContact(_0x589fb5,_0x48b3a3,_0xb4cd('0x2b'),_0x10b0e4['contactNumber'])[_0xb4cd('0x12')](function(_0x329072){if(_0x329072){_0x10b0e4[_0xb4cd('0x2a')]=_0x329072['id'];logger[_0xb4cd('0x10')](_0xb4cd('0x2c'),_0x10b0e4[_0xb4cd('0x2a')]);return _0x17c5b4(_0x10b0e4);}createEndUser(_0x10b0e4,_0x27ea00,_0x48b3a3,_0x589fb5)['then'](function(_0x2cfd20){logger[_0xb4cd('0x10')](_0xb4cd('0x2d'),_0x2cfd20[_0xb4cd('0x2a')]);return _0x17c5b4(_0x2cfd20);});});})[_0xb4cd('0x19')](function(_0x45e6a5){_0x179542(_0x45e6a5);});});};}function createEndUser(_0x30e02c,_0x48bbf7,_0x3e45dc,_0x4459f9){return new Promise(function(_0x10269c,_0x536cb0){var _0x38e0d4=moment();var _0x49d84c={'method':_0xb4cd('0x2e'),'uri':_0x4459f9+_0xb4cd('0x2f'),'body':{'contact':{'last_name':_0x30e02c[_0xb4cd('0x28')],'work_number':_0x30e02c[_0xb4cd('0x28')],'mobile_number':_0x30e02c['contactNumber'],'owner_id':_0x30e02c[_0xb4cd('0x1d')],'created_at':_0x38e0d4['format'](_0xb4cd('0x30'))}},'json':!![]};_0x49d84c[_0xb4cd('0xf')]=_0x3e45dc;logger[_0xb4cd('0x10')](_0xb4cd('0x31'));return rp(_0x49d84c)['then'](function(_0x425145){_0x30e02c[_0xb4cd('0x2a')]=_0x425145[_0xb4cd('0x32')]['id'];_0x10269c(_0x30e02c);})[_0xb4cd('0x19')](function(_0x4da051){logger[_0xb4cd('0x20')]('['+[_0x48bbf7['toUpperCase']()]+']',_0x4da051[_0xb4cd('0x21')]);_0x536cb0(_0x4da051[_0xb4cd('0x21')]);});});}function getTicket(_0x58598c,_0x44f0c8,_0x3911d8,_0x5a6d87,_0x1af01){return function(_0x274735){logger[_0xb4cd('0x10')](_0xb4cd('0x33'));return new Promise(function(_0x3ae9aa,_0x4766ba){var _0x209a64=moment();var _0x1229c1={'method':_0xb4cd('0x2e'),'uri':_0x3911d8+_0xb4cd('0x34'),'body':{'title':intUtil['getString'](_0x5a6d87[_0xb4cd('0x35')],_0x1af01,'\x20'),'description':intUtil[_0xb4cd('0x36')](_0x5a6d87['Descriptions'],_0x1af01,'\x0a'),'owner_id':_0x274735[_0xb4cd('0x1d')],'creater_id':_0x274735[_0xb4cd('0x17')],'targetable_id':_0x274735['endUserId'],'targetable_type':_0xb4cd('0x37'),'created_at':_0x209a64[_0xb4cd('0x26')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x209a64['add'](0x1e,'m')[_0xb4cd('0x26')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x1229c1['headers']=_0x44f0c8;return rp(_0x1229c1)['then'](function(_0x18a187){_0x274735['ticketId']=_0x18a187[_0xb4cd('0x38')]['id'];logger[_0xb4cd('0x10')](_0xb4cd('0x39'),_0x274735[_0xb4cd('0x3a')]);_0x3ae9aa(_0x274735);})[_0xb4cd('0x19')](function(_0x19b6c0){logger['error']('['+[_0x58598c[_0xb4cd('0x1a')]()]+']',_0x19b6c0['message']);_0x4766ba(_0x19b6c0[_0xb4cd('0x21')]);});});};}function emit(_0x334ab3,_0x4d75ef,_0x38bb05){var _0x485f36={'uri':_0x334ab3+_0xb4cd('0x3b')+_0x38bb05};io['to'](util['format'](_0xb4cd('0x3c'),_0x4d75ef))[_0xb4cd('0x3d')](_0xb4cd('0x3e'),_0x485f36);}exports['cs']=function(_0x384e3c,_0x131d50,_0x4a3609,_0x17ef28,_0xea13a5,_0x2caad1,_0x1a8eb3,_0x1e4c65){var _0x3cbb6e={};var _0x44a363={'Authorization':'Token\x20token='+_0x2caad1[_0xb4cd('0x3f')]};_0x2caad1[_0xb4cd('0x40')]=intUtil[_0xb4cd('0x41')](_0x2caad1[_0xb4cd('0x40')]);_0x2caad1[_0xb4cd('0x42')]=intUtil[_0xb4cd('0x41')](_0x2caad1[_0xb4cd('0x42')]);var _0x21f61a=_0x2caad1[_0xb4cd('0x40')];_0x3cbb6e['adminEmail']=_0x2caad1[_0xb4cd('0x43')];_0x3cbb6e[_0xb4cd('0x28')]=_0x1e4c65[_0xb4cd('0x44')]()===_0xb4cd('0x45')?_0x131d50[_0xb4cd('0x46')]:_0x131d50[_0xb4cd('0x47')];_0x3cbb6e['callDirection']=_0x1e4c65===_0xb4cd('0x48')||_0x1e4c65===_0xb4cd('0x49')?_0xb4cd('0x48'):_0xb4cd('0x45');if(_0x17ef28){_0x3cbb6e['agentEmail']=_0x17ef28[_0xb4cd('0x15')];}var _0x36f285=util[_0xb4cd('0x26')](_0xb4cd('0x4a'),_0x2caad1[_0xb4cd('0x42')],_0x131d50[_0xb4cd('0x4b')],md5(_0x131d50['uniqueid']));if(_0xea13a5&&_0xea13a5[_0xb4cd('0x4c')]){logger['info'](_0xb4cd('0x4d'),_0xb4cd('0x4e'));_0x131d50[_0xb4cd('0x4f')]=_0x36f285;}else if(_0x1a8eb3&&_0x1a8eb3[_0xb4cd('0x50')]&&_0x1a8eb3[_0xb4cd('0x50')]!==_0xb4cd('0x51')){logger['info'](_0xb4cd('0x52'),'Recording\x20is\x20enabled!');_0x131d50[_0xb4cd('0x4f')]=_0x36f285;}else{_0x131d50[_0xb4cd('0x4f')]='';}return getAdminId(_0x3cbb6e,_0x1e4c65,_0x44a363,_0x21f61a)[_0xb4cd('0x12')](getUser(_0x1e4c65,_0x44a363,_0x21f61a))[_0xb4cd('0x12')](getEndUser(_0x1e4c65,_0x44a363,_0x21f61a))[_0xb4cd('0x12')](getTicket(_0x1e4c65,_0x44a363,_0x21f61a,_0x4a3609,_0x131d50))[_0xb4cd('0x12')](function(_0xd51f47){logger[_0xb4cd('0x10')](util[_0xb4cd('0x26')](_0xb4cd('0x53'),_0xd51f47['ticketId']));if(_0x1e4c65!==_0xb4cd('0x49')){logger['info']('['+[_0x1e4c65[_0xb4cd('0x1a')]()]+']',_0xb4cd('0x54'));emit(_0x21f61a,_0x17ef28[_0xb4cd('0x55')],_0xd51f47[_0xb4cd('0x2a')]);}})[_0xb4cd('0x19')](function(_0x292f50){logger['error']('['+[_0x1e4c65['toUpperCase']()]+_0xb4cd('0x56'),util[_0xb4cd('0x57')](_0x292f50,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x623e=['Token\x20token=','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','freshsales','redis','defaults','localhost','GET','headers','info','Getting\x20admin\x20information','then','users','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','message','/api/selector/owners','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','User\x20found:','userId','Admin\x20selected','toUpperCase','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','/api/tasks','getString','Subjects','add','Task\x20created:','ticketId','/contacts/','user:%s','emit'];(function(_0xe8adcc,_0x35c677){var _0xe147da=function(_0x2a3e7d){while(--_0x2a3e7d){_0xe8adcc['push'](_0xe8adcc['shift']());}};_0xe147da(++_0x35c677);}(_0x623e,0xbf));var _0xe623=function(_0x58881b,_0x1cfd33){_0x58881b=_0x58881b-0x0;var _0x36dd36=_0x623e[_0x58881b];return _0x36dd36;};'use strict';var _=require(_0xe623('0x0'));var rp=require(_0xe623('0x1'));var md5=require(_0xe623('0x2'));var util=require(_0xe623('0x3'));var moment=require(_0xe623('0x4'));var Promise=require(_0xe623('0x5'));var Redis=require(_0xe623('0x6'));var intUtil=require(_0xe623('0x7'));var config=require(_0xe623('0x8'));var logger=require('../../../../config/logger')(_0xe623('0x9'));config[_0xe623('0xa')]=_[_0xe623('0xb')](config['redis'],{'host':_0xe623('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe623('0xa')]));function getAdminId(_0x39e6bf,_0x488e98,_0xc3697,_0x11242c){return new Promise(function(_0x4650c9,_0x5b84a4){var _0x204d31=![];var _0x38c214={'method':_0xe623('0xd'),'uri':_0x11242c+'/api/selector/owners','json':!![]};_0x38c214[_0xe623('0xe')]=_0xc3697;logger[_0xe623('0xf')](_0xe623('0x10'));return rp(_0x38c214)[_0xe623('0x11')](function(_0x27af92){if(_0x27af92){var _0x3478c2=_0x27af92[_0xe623('0x12')];var _0x33cff2=null;for(_0x33cff2=0x0;_0x33cff2<_0x3478c2['length'];_0x33cff2++){if(_0x3478c2[_0x33cff2]['email']===_0x39e6bf[_0xe623('0x13')]){_0x39e6bf['adminId']=_0x3478c2[_0x33cff2]['id'];_0x204d31=!![];}}if(_0x204d31){logger['info']('Admin\x20found:',_0x39e6bf[_0xe623('0x14')]);_0x4650c9(_0x39e6bf);}else{_0x5b84a4({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x5b84a4({'statusCode':0x194,'message':_0xe623('0x15')});}})[_0xe623('0x16')](function(_0x5e77fd){logger[_0xe623('0x17')]('['+[_0x488e98['toUpperCase']()]+']',_0x5e77fd[_0xe623('0x18')]);_0x5b84a4(_0x5e77fd);});});}function getUser(_0x519b0c,_0x13f144,_0xba23f5){return function(_0x6509d0){return new Promise(function(_0x39c8e2,_0x1dede4){var _0x422363={'method':'GET','uri':_0xba23f5+_0xe623('0x19'),'json':!![]};_0x422363[_0xe623('0xe')]=_0x13f144;logger[_0xe623('0xf')](_0xe623('0x1a'));return rp(_0x422363)[_0xe623('0x11')](function(_0x97ec6e){if(_0x97ec6e){var _0x4a949b=_0x97ec6e['users'];var _0x87bcd4=![];var _0x3c1e7e=null;if(_0x6509d0[_0xe623('0x1b')]!==null){logger[_0xe623('0xf')](_0xe623('0x1c'),_0x6509d0[_0xe623('0x1b')]);_0x6509d0[_0xe623('0x1d')]=_0x6509d0[_0xe623('0x1b')];for(_0x3c1e7e=0x0;_0x3c1e7e<_0x4a949b[_0xe623('0x1e')];_0x3c1e7e++){if(_0x4a949b[_0x3c1e7e]['email']===_0x6509d0[_0xe623('0x1b')]){_0x87bcd4=!![];_0x6509d0['userId']=_0x4a949b[_0x3c1e7e]['id'];logger[_0xe623('0xf')](_0xe623('0x1f'),_0x6509d0[_0xe623('0x20')]);}}}if(!_0x87bcd4){logger[_0xe623('0xf')](_0xe623('0x21'));_0x6509d0['userEmail']=_0x6509d0[_0xe623('0x13')];_0x6509d0['userId']=_0x6509d0[_0xe623('0x14')];_0x87bcd4=!![];}if(_0x87bcd4){_0x39c8e2(_0x6509d0);}else{_0x1dede4({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x1dede4({'statusCode':0x194,'message':_0xe623('0x15')});}})[_0xe623('0x16')](function(_0x1a5344){logger[_0xe623('0x17')]('['+[_0x519b0c[_0xe623('0x22')]()]+']',_0x1a5344[_0xe623('0x18')]);_0x1dede4(_0x1a5344);});});};}function searchContact(_0x5c37eb,_0x206f35,_0x24c67e,_0xc75203){return new Promise(function(_0x4743f2,_0x487679){var _0x205c51={'method':_0xe623('0xd'),'headers':_0x206f35,'uri':_0x5c37eb+_0xe623('0x23')+_0xc75203+_0xe623('0x24')+_0x24c67e+_0xe623('0x25'),'json':!![]};rp(_0x205c51)['then'](function(_0x43e9ea){var _0x19dcad=_[_0xe623('0x26')](_0x43e9ea[_0xe623('0x27')]['contacts'],[_0x24c67e,_0xc75203]);_0x4743f2(_0x19dcad);})[_0xe623('0x16')](function(_0x51d464){_0x487679(_0x51d464);});});}function getEndUser(_0x145dfd,_0x51781c,_0x51a48c){return function(_0x17e8e9){return new Promise(function(_0x4da281,_0x521b32){logger[_0xe623('0xf')](util[_0xe623('0x28')](_0xe623('0x29'),_0x17e8e9[_0xe623('0x2a')]));searchContact(_0x51a48c,_0x51781c,_0xe623('0x2b'),_0x17e8e9[_0xe623('0x2a')])[_0xe623('0x11')](function(_0x48936b){if(_0x48936b){_0x17e8e9['endUserId']=_0x48936b['id'];logger[_0xe623('0xf')](_0xe623('0x2c'),_0x17e8e9[_0xe623('0x2d')]);return _0x4da281(_0x17e8e9);}searchContact(_0x51a48c,_0x51781c,_0xe623('0x2e'),_0x17e8e9[_0xe623('0x2a')])[_0xe623('0x11')](function(_0x39cfee){if(_0x39cfee){_0x17e8e9[_0xe623('0x2d')]=_0x39cfee['id'];logger[_0xe623('0xf')](_0xe623('0x2f'),_0x17e8e9[_0xe623('0x2d')]);return _0x4da281(_0x17e8e9);}createEndUser(_0x17e8e9,_0x145dfd,_0x51781c,_0x51a48c)[_0xe623('0x11')](function(_0x28021c){logger[_0xe623('0xf')]('Contact\x20created:',_0x28021c[_0xe623('0x2d')]);return _0x4da281(_0x28021c);});});})[_0xe623('0x16')](function(_0x1cee32){_0x521b32(_0x1cee32);});});};}function createEndUser(_0x1ed4b5,_0x51a0b4,_0x578d0e,_0x6b2fd7){return new Promise(function(_0x473439,_0x1f9e33){var _0xbbd3fd=moment();var _0x2c68ee={'method':_0xe623('0x30'),'uri':_0x6b2fd7+_0xe623('0x31'),'body':{'contact':{'last_name':_0x1ed4b5['contactNumber'],'work_number':_0x1ed4b5[_0xe623('0x2a')],'mobile_number':_0x1ed4b5[_0xe623('0x2a')],'owner_id':_0x1ed4b5[_0xe623('0x20')],'created_at':_0xbbd3fd[_0xe623('0x28')](_0xe623('0x32'))}},'json':!![]};_0x2c68ee[_0xe623('0xe')]=_0x578d0e;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x2c68ee)[_0xe623('0x11')](function(_0x5b1f5f){_0x1ed4b5[_0xe623('0x2d')]=_0x5b1f5f[_0xe623('0x33')]['id'];_0x473439(_0x1ed4b5);})[_0xe623('0x16')](function(_0x2fa0c0){logger[_0xe623('0x17')]('['+[_0x51a0b4[_0xe623('0x22')]()]+']',_0x2fa0c0[_0xe623('0x18')]);_0x1f9e33(_0x2fa0c0[_0xe623('0x18')]);});});}function getTicket(_0x2e8576,_0x109e0e,_0x46dac7,_0x3ad406,_0xa1e4a5){return function(_0x1b24a5){logger[_0xe623('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x71df7c,_0x34810e){var _0x2e2dc6=moment();var _0x10ca58={'method':_0xe623('0x30'),'uri':_0x46dac7+_0xe623('0x34'),'body':{'title':intUtil[_0xe623('0x35')](_0x3ad406[_0xe623('0x36')],_0xa1e4a5,'\x20'),'description':intUtil['getString'](_0x3ad406['Descriptions'],_0xa1e4a5,'\x0a'),'owner_id':_0x1b24a5[_0xe623('0x20')],'creater_id':_0x1b24a5[_0xe623('0x14')],'targetable_id':_0x1b24a5['endUserId'],'targetable_type':'Contact','created_at':_0x2e2dc6[_0xe623('0x28')](_0xe623('0x32')),'due_date':_0x2e2dc6[_0xe623('0x37')](0x1e,'m')[_0xe623('0x28')](_0xe623('0x32'))},'json':!![]};_0x10ca58[_0xe623('0xe')]=_0x109e0e;return rp(_0x10ca58)[_0xe623('0x11')](function(_0x476589){_0x1b24a5['ticketId']=_0x476589['task']['id'];logger[_0xe623('0xf')](_0xe623('0x38'),_0x1b24a5[_0xe623('0x39')]);_0x71df7c(_0x1b24a5);})['catch'](function(_0x49a442){logger[_0xe623('0x17')]('['+[_0x2e8576[_0xe623('0x22')]()]+']',_0x49a442[_0xe623('0x18')]);_0x34810e(_0x49a442[_0xe623('0x18')]);});});};}function emit(_0x4024ad,_0x440227,_0x403e60){var _0x549328={'uri':_0x4024ad+_0xe623('0x3a')+_0x403e60};io['to'](util[_0xe623('0x28')](_0xe623('0x3b'),_0x440227))[_0xe623('0x3c')]('trigger:browser:url',_0x549328);}exports['cs']=function(_0x13c3a0,_0x29d179,_0x360eb3,_0x45d082,_0x12ffa1,_0x3c63b2,_0x49ce11,_0x44b216){var _0x4341c7={};var _0x4ae8c7={'Authorization':_0xe623('0x3d')+_0x3c63b2['apiKey']};_0x3c63b2['remoteUri']=intUtil[_0xe623('0x3e')](_0x3c63b2[_0xe623('0x3f')]);_0x3c63b2[_0xe623('0x40')]=intUtil['stripTrailingSlash'](_0x3c63b2['serverUrl']);var _0x342ee4=_0x3c63b2[_0xe623('0x3f')];_0x4341c7[_0xe623('0x13')]=_0x3c63b2[_0xe623('0x41')];_0x4341c7[_0xe623('0x2a')]=_0x44b216[_0xe623('0x42')]()===_0xe623('0x43')?_0x29d179[_0xe623('0x44')]:_0x29d179[_0xe623('0x45')];_0x4341c7[_0xe623('0x46')]=_0x44b216==='queue'||_0x44b216===_0xe623('0x47')?'queue':_0xe623('0x43');if(_0x45d082){_0x4341c7[_0xe623('0x1b')]=_0x45d082['email'];}var _0x58d99f=util['format'](_0xe623('0x48'),_0x3c63b2[_0xe623('0x40')],_0x29d179[_0xe623('0x49')],md5(_0x29d179[_0xe623('0x49')]));if(_0x12ffa1&&_0x12ffa1[_0xe623('0x4a')]){logger[_0xe623('0xf')](_0xe623('0x4b'),'Recording\x20is\x20enabled!');_0x29d179[_0xe623('0x4c')]=_0x58d99f;}else if(_0x49ce11&&_0x49ce11[_0xe623('0x4d')]&&_0x49ce11['recordingFormat']!=='none'){logger['info'](_0xe623('0x4e'),_0xe623('0x4f'));_0x29d179[_0xe623('0x4c')]=_0x58d99f;}else{_0x29d179[_0xe623('0x4c')]='';}return getAdminId(_0x4341c7,_0x44b216,_0x4ae8c7,_0x342ee4)[_0xe623('0x11')](getUser(_0x44b216,_0x4ae8c7,_0x342ee4))['then'](getEndUser(_0x44b216,_0x4ae8c7,_0x342ee4))[_0xe623('0x11')](getTicket(_0x44b216,_0x4ae8c7,_0x342ee4,_0x360eb3,_0x29d179))[_0xe623('0x11')](function(_0x55898c){logger[_0xe623('0xf')](util[_0xe623('0x28')](_0xe623('0x50'),_0x55898c[_0xe623('0x39')]));if(_0x44b216!==_0xe623('0x47')){logger[_0xe623('0xf')]('['+[_0x44b216[_0xe623('0x22')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x342ee4,_0x45d082[_0xe623('0x51')],_0x55898c['endUserId']);}})[_0xe623('0x16')](function(_0x4be16b){logger[_0xe623('0x17')]('['+[_0x44b216[_0xe623('0x22')]()]+_0xe623('0x52'),util[_0xe623('0x53')](_0x4be16b,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 0c448ce..97718ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca8=['freshsales','unknown\x20integration','error','format','%s\x20configuration\x20#%s\x20not\x20found','[EXEC]','%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./freshdesk','./desk','./dynamics365','./freshsales','salesforce','sugarcrm','freshdesk','zoho','desk','dynamics365','servicenow','exec','includes','data1','toLowerCase','find','Configurations','data3','routeId','outbound','log','EVENT\x20UNKNOWN','zendesk','vtiger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ca8,0x1f1));var _0x89ca=function(_0xab9f3d,_0xb336fa){_0xab9f3d=_0xab9f3d-0x0;var _0x5283bf=_0x9ca8[_0xab9f3d];return _0x5283bf;};'use strict';var _=require(_0x89ca('0x0'));var util=require('util');var zendesk=require(_0x89ca('0x1'));var salesforce=require(_0x89ca('0x2'));var sugarcrm=require(_0x89ca('0x3'));var freshdesk=require(_0x89ca('0x4'));var zoho=require('./zoho');var desk=require(_0x89ca('0x5'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require(_0x89ca('0x6'));var freshsales=require(_0x89ca('0x7'));var integrations=['zendesk',_0x89ca('0x8'),_0x89ca('0x9'),_0x89ca('0xa'),_0x89ca('0xb'),_0x89ca('0xc'),'vtiger',_0x89ca('0xd'),'freshsales',_0x89ca('0xe')];exports[_0x89ca('0xf')]=function(_0x1303ad,_0x167cd9,_0x784ded,_0x6f5d4d,_0x1c761b,_0x5ea542){if(_0x784ded){if(_[_0x89ca('0x10')](integrations,_0x1303ad[_0x89ca('0x11')][_0x89ca('0x12')]())){try{var _0x3e0853=null;var _0x864430='';var _0x56a60c=_0x784ded[_0x1303ad[_0x89ca('0x11')][_0x89ca('0x12')]()];if(_0x56a60c){var _0x2e5611=_0x56a60c[_0x1303ad['data2']];if(_0x2e5611){var _0x37965e=_[_0x89ca('0x13')](_0x2e5611[_0x89ca('0x14')],{'id':parseInt(_0x1303ad[_0x89ca('0x15')],0xa)});if(_0x37965e){if(_0x6f5d4d){if(_0x1c761b&&_0x167cd9['queue']){_0x864430='queue';}else if(_0x167cd9[_0x89ca('0x16')]){_0x864430=_0x89ca('0x17');}else{console[_0x89ca('0x18')](_0x89ca('0x19'),_0x167cd9);}}else{_0x864430='unmanaged';}switch(_0x1303ad[_0x89ca('0x11')][_0x89ca('0x12')]()){case _0x89ca('0x1a'):zendesk[_0x864430](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542);break;case _0x89ca('0x8'):salesforce[_0x864430](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542);break;case _0x89ca('0x9'):sugarcrm[_0x864430](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542);break;case _0x89ca('0xa'):freshdesk[_0x864430](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542);break;case _0x89ca('0xb'):zoho[_0x864430](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542);break;case _0x89ca('0xc'):desk[_0x864430](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542);break;case _0x89ca('0x1b'):vtiger[_0x864430](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542);break;case _0x89ca('0x1c'):freshsales['cs'](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542,_0x864430);break;case'servicenow':servicenow['cs'](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542,_0x864430);break;case _0x89ca('0xd'):dynamics365['cs'](_0x1303ad,_0x167cd9,_0x37965e,_0x6f5d4d,_0x1c761b,_0x2e5611,_0x5ea542,_0x864430);break;default:console['log'](_0x89ca('0x1d'));}}else{_0x3e0853=require('../../../../config/logger')(_0x1303ad[_0x89ca('0x11')][_0x89ca('0x12')]());_0x3e0853[_0x89ca('0x1e')]('[EXEC]',util[_0x89ca('0x1f')](_0x89ca('0x20'),_0x1303ad[_0x89ca('0x11')][_0x89ca('0x12')](),_0x1303ad[_0x89ca('0x15')]));}}else{_0x3e0853=require('../../../../config/logger')(_0x1303ad[_0x89ca('0x11')][_0x89ca('0x12')]());_0x3e0853['error'](_0x89ca('0x21'),util[_0x89ca('0x1f')](_0x89ca('0x22'),_0x1303ad[_0x89ca('0x11')][_0x89ca('0x12')](),_0x1303ad['data2']));}}else{}}catch(_0x6ea2e5){console[_0x89ca('0x1e')](_0x6ea2e5);}}}};
\ No newline at end of file
+var _0xd64a=['freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','Configurations','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data2','lodash','util','./zendesk','./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./servicenow','./freshsales','zendesk','salesforce','sugarcrm'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xd64a,0x149));var _0xad64=function(_0x44cb11,_0x5ac3b0){_0x44cb11=_0x44cb11-0x0;var _0x543c48=_0xd64a[_0x44cb11];return _0x543c48;};'use strict';var _=require(_0xad64('0x0'));var util=require(_0xad64('0x1'));var zendesk=require(_0xad64('0x2'));var salesforce=require(_0xad64('0x3'));var sugarcrm=require(_0xad64('0x4'));var freshdesk=require('./freshdesk');var zoho=require(_0xad64('0x5'));var desk=require(_0xad64('0x6'));var vtiger=require(_0xad64('0x7'));var servicenow=require(_0xad64('0x8'));var dynamics365=require('./dynamics365');var freshsales=require(_0xad64('0x9'));var integrations=[_0xad64('0xa'),_0xad64('0xb'),_0xad64('0xc'),_0xad64('0xd'),_0xad64('0xe'),_0xad64('0xf'),_0xad64('0x10'),_0xad64('0x11'),_0xad64('0x12'),_0xad64('0x13')];exports[_0xad64('0x14')]=function(_0x194c52,_0x2cde7b,_0x59588d,_0x1a347e,_0x563025,_0x54d8f6){if(_0x59588d){if(_[_0xad64('0x15')](integrations,_0x194c52[_0xad64('0x16')][_0xad64('0x17')]())){try{var _0x1dcfee=null;var _0x1f6a4f='';var _0x46751f=_0x59588d[_0x194c52[_0xad64('0x16')][_0xad64('0x17')]()];if(_0x46751f){var _0x516c14=_0x46751f[_0x194c52['data2']];if(_0x516c14){var _0x21322b=_['find'](_0x516c14[_0xad64('0x18')],{'id':parseInt(_0x194c52[_0xad64('0x19')],0xa)});if(_0x21322b){if(_0x1a347e){if(_0x563025&&_0x2cde7b[_0xad64('0x1a')]){_0x1f6a4f=_0xad64('0x1a');}else if(_0x2cde7b[_0xad64('0x1b')]){_0x1f6a4f=_0xad64('0x1c');}else{console['log'](_0xad64('0x1d'),_0x2cde7b);}}else{_0x1f6a4f=_0xad64('0x1e');}switch(_0x194c52[_0xad64('0x16')][_0xad64('0x17')]()){case _0xad64('0xa'):zendesk[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'salesforce':salesforce[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'sugarcrm':sugarcrm[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'freshdesk':freshdesk[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case _0xad64('0xe'):zoho[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case _0xad64('0xf'):desk[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case _0xad64('0x10'):vtiger[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'freshsales':freshsales['cs'](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6,_0x1f6a4f);break;case _0xad64('0x13'):servicenow['cs'](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6,_0x1f6a4f);break;case _0xad64('0x11'):dynamics365['cs'](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6,_0x1f6a4f);break;default:console['log'](_0xad64('0x1f'));}}else{_0x1dcfee=require(_0xad64('0x20'))(_0x194c52[_0xad64('0x16')][_0xad64('0x17')]());_0x1dcfee[_0xad64('0x21')](_0xad64('0x22'),util[_0xad64('0x23')](_0xad64('0x24'),_0x194c52[_0xad64('0x16')][_0xad64('0x17')](),_0x194c52[_0xad64('0x19')]));}}else{_0x1dcfee=require('../../../../config/logger')(_0x194c52['data1'][_0xad64('0x17')]());_0x1dcfee[_0xad64('0x21')](_0xad64('0x22'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x194c52[_0xad64('0x16')][_0xad64('0x17')](),_0x194c52[_0xad64('0x25')]));}}else{}}catch(_0x20880c){console[_0xad64('0x21')](_0x20880c);}}}};
\ No newline at end of file
index 2b25804..1a6c0e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f0a=['isNil','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects','ticketType','Task','ActivityDate','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','sobject','create','validateEmail','find','execute','Email','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','then','user_id','display_name','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','additionalSearchContact','merge','$or','length','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Company','No\x20Company','Name','Caller\x20-\x20%s','forEach','includes','picklist','idField','variable','variableName','customVariable','Variable','name','concat','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','stripTrailingSlash','remoteUri','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','calleridname','calleridnum','Fields','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','monitor_format','toUpperCase'];(function(_0x471ca7,_0x3a473d){var _0xed2c8e=function(_0x4ed037){while(--_0x4ed037){_0x471ca7['push'](_0x471ca7['shift']());}};_0xed2c8e(++_0x3a473d);}(_0x3f0a,0x85));var _0xa3f0=function(_0x41df26,_0x5b66f9){_0x41df26=_0x41df26-0x0;var _0x2c4ca1=_0x3f0a[_0x41df26];return _0x2c4ca1;};'use strict';var _=require(_0xa3f0('0x0'));var rp=require(_0xa3f0('0x1'));var moment=require(_0xa3f0('0x2'));var BPromise=require(_0xa3f0('0x3'));var md5=require(_0xa3f0('0x4'));var jsforce=require(_0xa3f0('0x5'));var util=require(_0xa3f0('0x6'));var Redis=require(_0xa3f0('0x7'));var intUtil=require(_0xa3f0('0x8'));var config=require(_0xa3f0('0x9'));var logger=require(_0xa3f0('0xa'))(_0xa3f0('0xb'));config[_0xa3f0('0xc')]=_[_0xa3f0('0xd')](config[_0xa3f0('0xc')],{'host':_0xa3f0('0xe'),'port':0x18eb});var io=require(_0xa3f0('0xf'))(new Redis(config['redis']));function emit(_0x812092,_0x1cd3d5,_0x47414e){io['to'](_0x812092)[_0xa3f0('0x10')](_0x1cd3d5,_0x47414e);}function getTicket(_0x4df8ed,_0x51461d,_0x12f804,_0x19c176,_0x339a00,_0xab3dc0,_0x36ca69,_0x403ca1){var _0xf55fb6=Object['assign']({},{'OwnerId':_0x51461d['id'],'Subject':intUtil[_0xa3f0('0x11')](_0x19c176[_0xa3f0('0x12')],_0x339a00,'\x20'),'Description':intUtil[_0xa3f0('0x11')](_0x19c176['Descriptions'],_0x339a00,'\x0a')},getCustomFields(_0xab3dc0,_0x339a00));if(_0x12f804){if(_0x19c176[_0xa3f0('0x13')]===_0xa3f0('0x14')){_0xf55fb6[_0xa3f0('0x15')]=moment['utc']();_0xf55fb6[_0xa3f0('0x16')]=![];_0xf55fb6[_0xa3f0('0x17')]=![];if(_0x12f804[_0xa3f0('0x18')]===_0xa3f0('0x19')||_0x12f804[_0xa3f0('0x18')]===_0xa3f0('0x1a')){_0xf55fb6[_0xa3f0('0x1b')]=_0x12f804['id'];}else if(_0x12f804['endUserType']===_0xa3f0('0x1c')){_0xf55fb6[_0xa3f0('0x1d')]=_0x12f804['id'];}}else if(_0x19c176[_0xa3f0('0x13')]===_0xa3f0('0x1e')){if(_0x12f804[_0xa3f0('0x18')]===_0xa3f0('0x19')){_0xf55fb6[_0xa3f0('0x1f')]=_0x12f804['id'];}else if(_0x12f804[_0xa3f0('0x18')]===_0xa3f0('0x1c')){_0xf55fb6[_0xa3f0('0x20')]=_0x12f804['id'];}else if(_0x12f804['endUserType']===_0xa3f0('0x1a')&&_0x19c176[_0xa3f0('0x21')]){_0xf55fb6[_0x19c176[_0xa3f0('0x21')]]=_0x12f804['id'];}else{logger[_0xa3f0('0x22')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x36ca69[_0xa3f0('0x23')](_0x19c176['ticketType'])[_0xa3f0('0x24')](_0xf55fb6);}function getUser(_0x25413f,_0xf6d896,_0x5e163d){if(!_['isNil'](_0xf6d896)&&intUtil[_0xa3f0('0x25')](_0xf6d896)){var _0x423751={'Email':_0xf6d896};var _0x553af9={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x5e163d[_0xa3f0('0x23')]('User')[_0xa3f0('0x26')](_0x423751,_0x553af9)[_0xa3f0('0x27')]()['then'](function(_0x491d67){if(_0x491d67['length']){var _0x169f70=_[_0xa3f0('0x26')](_0x491d67,function(_0x3d0669){return _0x3d0669[_0xa3f0('0x28')]===_0xf6d896;});if(_0x169f70){logger[_0xa3f0('0x22')](_0xa3f0('0x29'),_0xf6d896);return BPromise[_0xa3f0('0x2a')]({'id':_0x169f70['Id'],'name':_0x169f70['Name']});}}else{logger[_0xa3f0('0x22')](_0xa3f0('0x2b'),_0xf6d896);return _0x5e163d['identity']()[_0xa3f0('0x2c')](function(_0x54d367){return BPromise[_0xa3f0('0x2a')]({'id':_0x54d367[_0xa3f0('0x2d')],'name':_0x54d367[_0xa3f0('0x2e')]});});}});}else{logger[_0xa3f0('0x22')](_0xa3f0('0x2b'),_0xf6d896);return _0x5e163d[_0xa3f0('0x2f')]()['then'](function(_0x3c444a){return BPromise['resolve']({'id':_0x3c444a[_0xa3f0('0x2d')],'name':_0x3c444a[_0xa3f0('0x2e')]});});}}function getEndUser(_0x88fb85,_0x14a25b,_0x317d6a,_0x50561d,_0x11a1f0){var _0x3121fc={'$or':{'Phone':_0x50561d}};var _0x5df72e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xa3f0('0x2a')]()[_0xa3f0('0x2c')](function(){logger[_0xa3f0('0x22')](_0xa3f0('0x30'),_0x50561d,_0x14a25b[_0xa3f0('0x31')]);switch(_0x14a25b[_0xa3f0('0x31')]){case'contact_lead':var _0x14a56b=_[_0xa3f0('0x32')](_0x3121fc);if(_0x14a25b[_0xa3f0('0x33')]){var _0x3a3402={};_0x3a3402[_0x14a25b[_0xa3f0('0x33')]]=_0x50561d;_[_0xa3f0('0x34')](_0x14a56b[_0xa3f0('0x35')],_0x3a3402);}return _0x11a1f0[_0xa3f0('0x23')]('Contact')[_0xa3f0('0x26')](_0x14a56b,_0x5df72e)[_0xa3f0('0x27')]()[_0xa3f0('0x2c')](function(_0xa82676){if(_0xa82676&&_0xa82676[_0xa3f0('0x36')]){return _0xa82676;}else{var _0x130404=_[_0xa3f0('0x32')](_0x3121fc);if(_0x14a25b[_0xa3f0('0x37')]){var _0x3dcd58={};_0x3dcd58[_0x14a25b[_0xa3f0('0x37')]]=_0x50561d;_[_0xa3f0('0x34')](_0x130404[_0xa3f0('0x35')],_0x3dcd58);}return _0x11a1f0['sobject'](_0xa3f0('0x38'))[_0xa3f0('0x26')](_0x130404,_0x5df72e);}});case _0xa3f0('0x39'):var _0x3904ae=_['cloneDeep'](_0x3121fc);if(_0x14a25b[_0xa3f0('0x3a')]){var _0x3a3402={};_0x3a3402[_0x14a25b['additionalSearchAccount']]=_0x50561d;_[_0xa3f0('0x34')](_0x3904ae[_0xa3f0('0x35')],_0x3a3402);}return _0x11a1f0[_0xa3f0('0x23')](_0xa3f0('0x3b'))[_0xa3f0('0x26')](_0x3904ae,_0x5df72e)[_0xa3f0('0x27')]()[_0xa3f0('0x2c')](function(_0x38cf09){if(_0x38cf09&&_0x38cf09[_0xa3f0('0x36')]){return _0x38cf09;}else{var _0x31a6f2=_[_0xa3f0('0x32')](_0x3121fc);if(_0x14a25b[_0xa3f0('0x33')]){var _0x16c141={};_0x16c141[_0x14a25b[_0xa3f0('0x33')]]=_0x50561d;_[_0xa3f0('0x34')](_0x31a6f2[_0xa3f0('0x35')],_0x16c141);}return _0x11a1f0[_0xa3f0('0x23')](_0xa3f0('0x3c'))[_0xa3f0('0x26')](_0x31a6f2,_0x5df72e)['then'](function(_0x58986d){if(_0x58986d&&_0x58986d['length']){return _0x58986d;}else{var _0x7185=_[_0xa3f0('0x32')](_0x3121fc);if(_0x14a25b['additionalSearchLead']){var _0x32806d={};_0x32806d[_0x14a25b['additionalSearchLead']]=_0x50561d;_[_0xa3f0('0x34')](_0x7185['$or'],_0x32806d);}return _0x11a1f0[_0xa3f0('0x23')](_0xa3f0('0x38'))[_0xa3f0('0x26')](_0x7185,_0x5df72e);}});}});case _0xa3f0('0x19'):var _0x14a56b=_[_0xa3f0('0x32')](_0x3121fc);if(_0x14a25b[_0xa3f0('0x33')]){var _0x3a3402={};_0x3a3402[_0x14a25b[_0xa3f0('0x33')]]=_0x50561d;_[_0xa3f0('0x34')](_0x14a56b[_0xa3f0('0x35')],_0x3a3402);}return _0x11a1f0['sobject'](_0xa3f0('0x3c'))[_0xa3f0('0x26')](_0x14a56b,_0x5df72e)[_0xa3f0('0x27')]();case'lead':var _0x51d7ca=_['cloneDeep'](_0x3121fc);if(_0x14a25b[_0xa3f0('0x37')]){var _0x3a3402={};_0x3a3402[_0x14a25b[_0xa3f0('0x37')]]=_0x50561d;_[_0xa3f0('0x34')](_0x51d7ca['$or'],_0x3a3402);}return _0x11a1f0[_0xa3f0('0x23')](_0xa3f0('0x38'))[_0xa3f0('0x26')](_0x51d7ca,_0x5df72e);case _0xa3f0('0x1c'):var _0x3904ae=_['cloneDeep'](_0x3121fc);if(_0x14a25b[_0xa3f0('0x3a')]){var _0x3a3402={};_0x3a3402[_0x14a25b[_0xa3f0('0x3a')]]=_0x50561d;_[_0xa3f0('0x34')](_0x3904ae[_0xa3f0('0x35')],_0x3a3402);}return _0x11a1f0[_0xa3f0('0x23')](_0xa3f0('0x3b'))[_0xa3f0('0x26')](_0x3904ae,_0x5df72e);default:return null;}})[_0xa3f0('0x2c')](function(_0x387112){if(_0x387112&&_0x387112[_0xa3f0('0x36')]){var _0x540b30=_['first'](_0x387112);if(_0x540b30){return BPromise[_0xa3f0('0x2a')]({'id':_0x540b30['Id'],'name':_0x540b30['Name'],'phone':_0x540b30['Phone'],'endUserType':_0x540b30[_0xa3f0('0x3d')][_0xa3f0('0x3e')][_0xa3f0('0x3f')]()});}}})[_0xa3f0('0x2c')](function(_0x3a450e){if(_0x3a450e){logger['info'](_0xa3f0('0x40'),_0x3a450e[_0xa3f0('0x18')],_0x50561d);return BPromise[_0xa3f0('0x2a')](_0x3a450e);}else{logger[_0xa3f0('0x22')](_0xa3f0('0x41'),_0x50561d);var _0x3fcee1={'Phone':_0x50561d};if(_0x14a25b[_0xa3f0('0x42')]){if(_0x14a25b[_0xa3f0('0x42')]===_0xa3f0('0x19')){logger[_0xa3f0('0x22')](_0xa3f0('0x43'),_0x50561d,_0x14a25b['moduleCreate']);_0x3fcee1[_0xa3f0('0x44')]=_0x317d6a!==_0xa3f0('0x45')?_0x317d6a:util[_0xa3f0('0x46')]('Caller\x20-\x20%s',_0x50561d);}else if(_0x14a25b[_0xa3f0('0x42')]===_0xa3f0('0x1a')){logger[_0xa3f0('0x22')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x50561d,_0x14a25b['moduleCreate']);_0x3fcee1[_0xa3f0('0x44')]=_0x317d6a!=='<unknown>'?_0x317d6a:util[_0xa3f0('0x46')]('Caller\x20-\x20%s',_0x50561d);_0x3fcee1[_0xa3f0('0x47')]=_0xa3f0('0x48');}else if(_0x14a25b['moduleCreate']===_0xa3f0('0x1c')){logger[_0xa3f0('0x22')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x50561d,_0x14a25b[_0xa3f0('0x42')]);_0x3fcee1[_0xa3f0('0x49')]=_0x317d6a!=='<unknown>'?_0x317d6a:util[_0xa3f0('0x46')](_0xa3f0('0x4a'),_0x50561d);}else{return null;}}return _0x11a1f0[_0xa3f0('0x23')](_['upperFirst'](_0x14a25b[_0xa3f0('0x42')]))['create'](_0x3fcee1)[_0xa3f0('0x2c')](function(_0xe67323){return BPromise[_0xa3f0('0x2a')]({'id':_0xe67323['id'],'endUserType':_0x14a25b['moduleCreate']});});}});}function getCustomFields(_0x5aba28,_0x2d5ea0){var _0x1ccb93={};if(_0x5aba28[_0xa3f0('0x36')]>0x0){_[_0xa3f0('0x4b')](_0x5aba28,function(_0x20d3fe){if(_[_0xa3f0('0x4c')](['string',_0xa3f0('0x4d')],_0x20d3fe[_0xa3f0('0x3e')])&&_0x20d3fe[_0xa3f0('0x4e')]){_0x1ccb93[_0x20d3fe['idField']]=_0x20d3fe['content']['toString']();}else if(_0x20d3fe[_0xa3f0('0x3e')]===_0xa3f0('0x4f')&&_0x20d3fe[_0xa3f0('0x50')]&&_0x20d3fe[_0xa3f0('0x4e')]){_0x2d5ea0[_0x20d3fe[_0xa3f0('0x50')]]&&(_0x1ccb93[_0x20d3fe[_0xa3f0('0x4e')]]=_0x2d5ea0[_0x20d3fe[_0xa3f0('0x50')]]['toString']());}else if(_0x20d3fe[_0xa3f0('0x3e')]===_0xa3f0('0x51')&&_0x20d3fe[_0xa3f0('0x52')]&&_0x20d3fe[_0xa3f0('0x52')]['name']&&_0x20d3fe[_0xa3f0('0x4e')]){_0x2d5ea0[_0x20d3fe[_0xa3f0('0x52')]['name'][_0xa3f0('0x3f')]()]&&(_0x1ccb93[_0x20d3fe[_0xa3f0('0x4e')]]=_0x2d5ea0[_0x20d3fe[_0xa3f0('0x52')][_0xa3f0('0x53')][_0xa3f0('0x3f')]()]['toString']());}});}return _0x1ccb93;}function getConnection(_0x27ccd4){var _0x521748=_0x27ccd4['password'][_0xa3f0('0x54')](_0x27ccd4[_0xa3f0('0x55')]);var _0x2585a6=new jsforce[(_0xa3f0('0x56'))]({'oauth2':{'loginUrl':_0x27ccd4['remoteUri']||_0xa3f0('0x57'),'clientId':_0x27ccd4[_0xa3f0('0x58')],'clientSecret':_0x27ccd4[_0xa3f0('0x59')]}});return _0x2585a6[_0xa3f0('0x5a')](_0x27ccd4[_0xa3f0('0x5b')],_0x521748)[_0xa3f0('0x2c')](function(){logger[_0xa3f0('0x22')](_0xa3f0('0x5c'));return _0x2585a6;});}exports[_0xa3f0('0x5d')]=function(_0x64fa3b,_0x537a65,_0x2308db,_0x31379e,_0xe97d59,_0xb932dc){var _0x5e0969,_0x343330,_0x40f09d,_0x59e40c;_0xb932dc['serverUrl']=intUtil[_0xa3f0('0x5e')](_0xb932dc['serverUrl']);_0xb932dc[_0xa3f0('0x5f')]=intUtil[_0xa3f0('0x5e')](_0xb932dc[_0xa3f0('0x5f')]);if(_0xe97d59&&_0xe97d59['monitor_format']){logger['info']('[QUEUE]',_0xa3f0('0x60'));_0x537a65[_0xa3f0('0x61')]=util[_0xa3f0('0x46')](_0xa3f0('0x62'),_0xb932dc[_0xa3f0('0x63')],_0x537a65[_0xa3f0('0x64')],md5(_0x537a65['uniqueid']));}else{_0x537a65[_0xa3f0('0x61')]='';}return getConnection(_0xb932dc)[_0xa3f0('0x2c')](function(_0x37d25c){_0x59e40c=_0x37d25c;return getUser(_0xb932dc,_0x31379e[_0xa3f0('0x65')],_0x59e40c);})[_0xa3f0('0x2c')](function(_0x5d7202){_0x5e0969=_0x5d7202;return getEndUser(_0xb932dc,_0x2308db,_0x537a65[_0xa3f0('0x66')],_0x537a65[_0xa3f0('0x67')],_0x59e40c);})[_0xa3f0('0x2c')](function(_0x129998){_0x343330=_0x129998;return getTicket(_0xb932dc,_0x5e0969,_0x343330,_0x2308db,_0x537a65,_0x2308db[_0xa3f0('0x68')],_0x59e40c,_0xa3f0('0x5d'));})['then'](function(_0x49f6cc){_0x40f09d=_0x49f6cc;logger[_0xa3f0('0x22')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x40f09d['id']);logger[_0xa3f0('0x22')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x40f09d['id'],_0x31379e[_0xa3f0('0x53')],_0xb932dc[_0xa3f0('0x3e')]);switch(_0xb932dc[_0xa3f0('0x3e')]){case _0xa3f0('0x69'):emit(util[_0xa3f0('0x46')](_0xa3f0('0x6a'),_0x31379e[_0xa3f0('0x53')]),_0xa3f0('0x6b'),{'recordId':_0x40f09d['id']});break;case _0xa3f0('0x6c'):emit(util[_0xa3f0('0x46')](_0xa3f0('0x6a'),_0x31379e[_0xa3f0('0x53')]),_0xa3f0('0x6d'),{'uri':util[_0xa3f0('0x46')](_0xa3f0('0x6e'),_0x59e40c[_0xa3f0('0x6f')],_0x40f09d['id'])});break;default:logger[_0xa3f0('0x70')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0x1dbc9e){logger[_0xa3f0('0x70')](_0xa3f0('0x71'),_0x1dbc9e);});};exports['outbound']=function(_0x2b637d,_0x56a781,_0xa8998d,_0x2a8ec2,_0x3b669d,_0x54986d,_0x6dea60){var _0x13c664,_0x5be789,_0x47a38a,_0x194686;_0x54986d[_0xa3f0('0x63')]=intUtil[_0xa3f0('0x5e')](_0x54986d['serverUrl']);_0x54986d[_0xa3f0('0x5f')]=intUtil[_0xa3f0('0x5e')](_0x54986d[_0xa3f0('0x5f')]);if(_0x6dea60&&_0x6dea60[_0xa3f0('0x72')]&&_0x6dea60['recordingFormat']!==_0xa3f0('0x73')){logger[_0xa3f0('0x22')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x56a781[_0xa3f0('0x61')]=util[_0xa3f0('0x46')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x54986d[_0xa3f0('0x63')],_0x56a781[_0xa3f0('0x64')],md5(_0x56a781['uniqueid']));}return getConnection(_0x54986d)[_0xa3f0('0x2c')](function(_0x55e67c){_0x194686=_0x55e67c;return getUser(_0x54986d,_0x2a8ec2[_0xa3f0('0x65')],_0x194686);})[_0xa3f0('0x2c')](function(_0x5a0fbf){_0x13c664=_0x5a0fbf;return getEndUser(_0x54986d,_0xa8998d,_0x56a781[_0xa3f0('0x74')],_0x56a781[_0xa3f0('0x75')],_0x194686);})[_0xa3f0('0x2c')](function(_0x3fce0e){_0x5be789=_0x3fce0e;return getTicket(_0x54986d,_0x13c664,_0x5be789,_0xa8998d,_0x56a781,_0xa8998d[_0xa3f0('0x68')],_0x194686,'outbound');})['then'](function(_0x98f51c){_0x47a38a=_0x98f51c;logger['info'](_0xa3f0('0x76'),_0x47a38a['id']);logger['info']('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x47a38a['id'],_0x2a8ec2[_0xa3f0('0x53')],_0x54986d[_0xa3f0('0x3e')]);switch(_0x54986d['type']){case _0xa3f0('0x69'):emit(util[_0xa3f0('0x46')](_0xa3f0('0x6a'),_0x2a8ec2[_0xa3f0('0x53')]),'trigger:salesforce:display',{'recordId':_0x47a38a['id']});break;case'newTab':emit(util['format'](_0xa3f0('0x6a'),_0x2a8ec2['name']),_0xa3f0('0x6d'),{'uri':util[_0xa3f0('0x46')]('%s/%s/e',_0x194686['instanceUrl'],_0x47a38a['id'])});break;default:logger[_0xa3f0('0x70')](_0xa3f0('0x77'),_0xa3f0('0x78'));}})[_0xa3f0('0x79')](function(_0x327556){logger[_0xa3f0('0x70')](_0xa3f0('0x77'),_0x327556);});};exports[_0xa3f0('0x7a')]=function(_0x5bf636,_0x3a3b6f,_0x28ea91,_0x2c76c0,_0x45e2d9,_0x166982){var _0x45022e,_0x123013,_0x51cb57,_0x525ca6;_0x166982[_0xa3f0('0x63')]=intUtil['stripTrailingSlash'](_0x166982[_0xa3f0('0x63')]);_0x166982['remoteUri']=intUtil[_0xa3f0('0x5e')](_0x166982[_0xa3f0('0x5f')]);if(_0x45e2d9&&_0x45e2d9[_0xa3f0('0x7b')]){logger[_0xa3f0('0x22')]('['+_0x3a3b6f['lastevent'][_0xa3f0('0x7c')]()+']',_0xa3f0('0x60'));_0x3a3b6f[_0xa3f0('0x61')]=util[_0xa3f0('0x46')](_0xa3f0('0x62'),_0x166982[_0xa3f0('0x63')],_0x3a3b6f['uniqueid'],md5(_0x3a3b6f[_0xa3f0('0x64')]));}else{_0x3a3b6f[_0xa3f0('0x61')]='';}return getConnection(_0x166982)[_0xa3f0('0x2c')](function(_0x5087f7){_0x525ca6=_0x5087f7;if(!_[_0xa3f0('0x7d')](_0x2c76c0)){return getUser(_0x166982,_0x2c76c0[_0xa3f0('0x53')],_0x525ca6);}else{return getUser(_0x166982,null,_0x525ca6);}})[_0xa3f0('0x2c')](function(_0x1cf20f){_0x45022e=_0x1cf20f;return getEndUser(_0x166982,_0x28ea91,_0x3a3b6f[_0xa3f0('0x66')],_0x3a3b6f['calleridnum'],_0x525ca6);})[_0xa3f0('0x2c')](function(_0x336c21){_0x123013=_0x336c21;return getTicket(_0x166982,_0x45022e,_0x123013,_0x28ea91,_0x3a3b6f,_0x28ea91[_0xa3f0('0x68')],_0x525ca6);})[_0xa3f0('0x2c')](function(_0x4fca5b){_0x51cb57=_0x4fca5b;logger[_0xa3f0('0x22')]('['+_0x3a3b6f[_0xa3f0('0x7e')][_0xa3f0('0x7c')]()+_0xa3f0('0x7f'),_0x51cb57['id']);logger[_0xa3f0('0x22')]('['+_0x3a3b6f[_0xa3f0('0x7e')][_0xa3f0('0x7c')]()+_0xa3f0('0x80'),_0x166982['type']);})[_0xa3f0('0x79')](function(_0x3a326f){logger[_0xa3f0('0x70')]('['+_0x3a3b6f[_0xa3f0('0x7e')][_0xa3f0('0x7c')]()+']',_0x3a326f);});};
\ No newline at end of file
+var _0x6e07=['Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','resolve','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','account_contact_lead','additionalSearchAccount','execute','Lead','Account','first','Phone','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','upperFirst','create','forEach','includes','string','picklist','idField','toString','variable','variableName','customVariable','Variable','name','concat','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','outbound','none','[OUTBOUND]','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','Salesforce\x20account\x20type\x20not\x20recognized','catch','error','lastevent','toUpperCase','Recording\x20is\x20enabled!',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','lead','endUserType','WhatId','Case','contact','ContactId','account','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','isNil','validateEmail','User','find','then','length','Email','Agent\x20%s\x20found.'];(function(_0x1db653,_0x3a9940){var _0x156348=function(_0x5ec560){while(--_0x5ec560){_0x1db653['push'](_0x1db653['shift']());}};_0x156348(++_0x3a9940);}(_0x6e07,0x15b));var _0x76e0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e07[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x76e0('0x0'));var rp=require(_0x76e0('0x1'));var moment=require(_0x76e0('0x2'));var BPromise=require('bluebird');var md5=require('md5');var jsforce=require(_0x76e0('0x3'));var util=require(_0x76e0('0x4'));var Redis=require(_0x76e0('0x5'));var intUtil=require(_0x76e0('0x6'));var config=require(_0x76e0('0x7'));var logger=require(_0x76e0('0x8'))(_0x76e0('0x9'));config[_0x76e0('0xa')]=_[_0x76e0('0xb')](config[_0x76e0('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x76e0('0xc'))(new Redis(config[_0x76e0('0xa')]));function emit(_0x115bd2,_0x373165,_0x59da3e){io['to'](_0x115bd2)[_0x76e0('0xd')](_0x373165,_0x59da3e);}function getTicket(_0x13fdd2,_0xae0fe5,_0x21337e,_0x2f958f,_0x4e963b,_0x588188,_0x24bcc5,_0x4ab0fe){var _0x5c31f0=Object[_0x76e0('0xe')]({},{'OwnerId':_0xae0fe5['id'],'Subject':intUtil['getString'](_0x2f958f['Subjects'],_0x4e963b,'\x20'),'Description':intUtil[_0x76e0('0xf')](_0x2f958f[_0x76e0('0x10')],_0x4e963b,'\x0a')},getCustomFields(_0x588188,_0x4e963b));if(_0x21337e){if(_0x2f958f[_0x76e0('0x11')]===_0x76e0('0x12')){_0x5c31f0[_0x76e0('0x13')]=moment[_0x76e0('0x14')]();_0x5c31f0[_0x76e0('0x15')]=![];_0x5c31f0[_0x76e0('0x16')]=![];if(_0x21337e['endUserType']==='contact'||_0x21337e['endUserType']===_0x76e0('0x17')){_0x5c31f0['WhoId']=_0x21337e['id'];}else if(_0x21337e[_0x76e0('0x18')]==='account'){_0x5c31f0[_0x76e0('0x19')]=_0x21337e['id'];}}else if(_0x2f958f[_0x76e0('0x11')]===_0x76e0('0x1a')){if(_0x21337e[_0x76e0('0x18')]===_0x76e0('0x1b')){_0x5c31f0[_0x76e0('0x1c')]=_0x21337e['id'];}else if(_0x21337e[_0x76e0('0x18')]===_0x76e0('0x1d')){_0x5c31f0[_0x76e0('0x1e')]=_0x21337e['id'];}else if(_0x21337e[_0x76e0('0x18')]===_0x76e0('0x17')&&_0x2f958f[_0x76e0('0x1f')]){_0x5c31f0[_0x2f958f[_0x76e0('0x1f')]]=_0x21337e['id'];}else{logger[_0x76e0('0x20')](_0x76e0('0x21'));}}}return _0x24bcc5[_0x76e0('0x22')](_0x2f958f[_0x76e0('0x11')])['create'](_0x5c31f0);}function getUser(_0x585c08,_0x48f38c,_0x3363bc){if(!_[_0x76e0('0x23')](_0x48f38c)&&intUtil[_0x76e0('0x24')](_0x48f38c)){var _0x56c8ed={'Email':_0x48f38c};var _0x2eabd0={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3363bc[_0x76e0('0x22')](_0x76e0('0x25'))[_0x76e0('0x26')](_0x56c8ed,_0x2eabd0)['execute']()[_0x76e0('0x27')](function(_0x3c1431){if(_0x3c1431[_0x76e0('0x28')]){var _0x117d2=_['find'](_0x3c1431,function(_0x58ea39){return _0x58ea39[_0x76e0('0x29')]===_0x48f38c;});if(_0x117d2){logger[_0x76e0('0x20')](_0x76e0('0x2a'),_0x48f38c);return BPromise['resolve']({'id':_0x117d2['Id'],'name':_0x117d2[_0x76e0('0x2b')]});}}else{logger[_0x76e0('0x20')](_0x76e0('0x2c'),_0x48f38c);return _0x3363bc[_0x76e0('0x2d')]()[_0x76e0('0x27')](function(_0x3f207d){return BPromise['resolve']({'id':_0x3f207d[_0x76e0('0x2e')],'name':_0x3f207d[_0x76e0('0x2f')]});});}});}else{logger[_0x76e0('0x20')](_0x76e0('0x2c'),_0x48f38c);return _0x3363bc[_0x76e0('0x2d')]()['then'](function(_0x100ac1){return BPromise[_0x76e0('0x30')]({'id':_0x100ac1[_0x76e0('0x2e')],'name':_0x100ac1['display_name']});});}}function getEndUser(_0x516afa,_0xc5103,_0x305246,_0x4fe0f7,_0x4ec08a){var _0x56020b={'$or':{'Phone':_0x4fe0f7}};var _0x2768f9={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x76e0('0x30')]()[_0x76e0('0x27')](function(){logger[_0x76e0('0x20')](_0x76e0('0x31'),_0x4fe0f7,_0xc5103[_0x76e0('0x32')]);switch(_0xc5103[_0x76e0('0x32')]){case'contact_lead':var _0xefc9b3=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x34')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x34')]]=_0x4fe0f7;_['merge'](_0xefc9b3[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x36'))['find'](_0xefc9b3,_0x2768f9)['execute']()[_0x76e0('0x27')](function(_0x2c23a3){if(_0x2c23a3&&_0x2c23a3[_0x76e0('0x28')]){return _0x2c23a3;}else{var _0xaa64b5=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x37')]){var _0x298c91={};_0x298c91[_0xc5103['additionalSearchLead']]=_0x4fe0f7;_[_0x76e0('0x38')](_0xaa64b5['$or'],_0x298c91);}return _0x4ec08a[_0x76e0('0x22')]('Lead')[_0x76e0('0x26')](_0xaa64b5,_0x2768f9);}});case _0x76e0('0x39'):var _0x12fb45=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x3a')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x3a')]]=_0x4fe0f7;_['merge'](_0x12fb45[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')]('Account')[_0x76e0('0x26')](_0x12fb45,_0x2768f9)[_0x76e0('0x3b')]()[_0x76e0('0x27')](function(_0xc837d5){if(_0xc837d5&&_0xc837d5['length']){return _0xc837d5;}else{var _0x50ae2b=_['cloneDeep'](_0x56020b);if(_0xc5103[_0x76e0('0x34')]){var _0x2aba99={};_0x2aba99[_0xc5103['additionalSearchContact']]=_0x4fe0f7;_[_0x76e0('0x38')](_0x50ae2b[_0x76e0('0x35')],_0x2aba99);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x36'))['find'](_0x50ae2b,_0x2768f9)['then'](function(_0x4bbfd7){if(_0x4bbfd7&&_0x4bbfd7[_0x76e0('0x28')]){return _0x4bbfd7;}else{var _0xd37919=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103['additionalSearchLead']){var _0x1231d2={};_0x1231d2[_0xc5103[_0x76e0('0x37')]]=_0x4fe0f7;_[_0x76e0('0x38')](_0xd37919['$or'],_0x1231d2);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x3c'))[_0x76e0('0x26')](_0xd37919,_0x2768f9);}});}});case _0x76e0('0x1b'):var _0xefc9b3=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x34')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x34')]]=_0x4fe0f7;_[_0x76e0('0x38')](_0xefc9b3[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x36'))[_0x76e0('0x26')](_0xefc9b3,_0x2768f9)['execute']();case _0x76e0('0x17'):var _0x4aa696=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x37')]){var _0x2f4929={};_0x2f4929[_0xc5103['additionalSearchLead']]=_0x4fe0f7;_[_0x76e0('0x38')](_0x4aa696[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x3c'))[_0x76e0('0x26')](_0x4aa696,_0x2768f9);case _0x76e0('0x1d'):var _0x12fb45=_['cloneDeep'](_0x56020b);if(_0xc5103[_0x76e0('0x3a')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x3a')]]=_0x4fe0f7;_[_0x76e0('0x38')](_0x12fb45['$or'],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x3d'))[_0x76e0('0x26')](_0x12fb45,_0x2768f9);default:return null;}})['then'](function(_0x32d069){if(_0x32d069&&_0x32d069['length']){var _0x361ed0=_[_0x76e0('0x3e')](_0x32d069);if(_0x361ed0){return BPromise[_0x76e0('0x30')]({'id':_0x361ed0['Id'],'name':_0x361ed0[_0x76e0('0x2b')],'phone':_0x361ed0[_0x76e0('0x3f')],'endUserType':_0x361ed0['attributes'][_0x76e0('0x40')][_0x76e0('0x41')]()});}}})[_0x76e0('0x27')](function(_0x5c09cb){if(_0x5c09cb){logger['info']('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x5c09cb[_0x76e0('0x18')],_0x4fe0f7);return BPromise[_0x76e0('0x30')](_0x5c09cb);}else{logger[_0x76e0('0x20')](_0x76e0('0x42'),_0x4fe0f7);var _0x380870={'Phone':_0x4fe0f7};if(_0xc5103[_0x76e0('0x43')]){if(_0xc5103['moduleCreate']===_0x76e0('0x1b')){logger['info'](_0x76e0('0x44'),_0x4fe0f7,_0xc5103[_0x76e0('0x43')]);_0x380870[_0x76e0('0x45')]=_0x305246!==_0x76e0('0x46')?_0x305246:util[_0x76e0('0x47')](_0x76e0('0x48'),_0x4fe0f7);}else if(_0xc5103[_0x76e0('0x43')]===_0x76e0('0x17')){logger[_0x76e0('0x20')](_0x76e0('0x44'),_0x4fe0f7,_0xc5103[_0x76e0('0x43')]);_0x380870[_0x76e0('0x45')]=_0x305246!=='<unknown>'?_0x305246:util[_0x76e0('0x47')](_0x76e0('0x48'),_0x4fe0f7);_0x380870['Company']='No\x20Company';}else if(_0xc5103[_0x76e0('0x43')]===_0x76e0('0x1d')){logger[_0x76e0('0x20')](_0x76e0('0x44'),_0x4fe0f7,_0xc5103[_0x76e0('0x43')]);_0x380870[_0x76e0('0x2b')]=_0x305246!=='<unknown>'?_0x305246:util[_0x76e0('0x47')](_0x76e0('0x48'),_0x4fe0f7);}else{return null;}}return _0x4ec08a[_0x76e0('0x22')](_[_0x76e0('0x49')](_0xc5103['moduleCreate']))[_0x76e0('0x4a')](_0x380870)['then'](function(_0x4be630){return BPromise[_0x76e0('0x30')]({'id':_0x4be630['id'],'endUserType':_0xc5103[_0x76e0('0x43')]});});}});}function getCustomFields(_0x529faa,_0x3d51e8){var _0x51e8bd={};if(_0x529faa['length']>0x0){_[_0x76e0('0x4b')](_0x529faa,function(_0x41f2f9){if(_[_0x76e0('0x4c')]([_0x76e0('0x4d'),_0x76e0('0x4e')],_0x41f2f9['type'])&&_0x41f2f9[_0x76e0('0x4f')]){_0x51e8bd[_0x41f2f9[_0x76e0('0x4f')]]=_0x41f2f9['content'][_0x76e0('0x50')]();}else if(_0x41f2f9[_0x76e0('0x40')]===_0x76e0('0x51')&&_0x41f2f9[_0x76e0('0x52')]&&_0x41f2f9[_0x76e0('0x4f')]){_0x3d51e8[_0x41f2f9[_0x76e0('0x52')]]&&(_0x51e8bd[_0x41f2f9[_0x76e0('0x4f')]]=_0x3d51e8[_0x41f2f9[_0x76e0('0x52')]][_0x76e0('0x50')]());}else if(_0x41f2f9[_0x76e0('0x40')]===_0x76e0('0x53')&&_0x41f2f9[_0x76e0('0x54')]&&_0x41f2f9[_0x76e0('0x54')]['name']&&_0x41f2f9[_0x76e0('0x4f')]){_0x3d51e8[_0x41f2f9['Variable']['name'][_0x76e0('0x41')]()]&&(_0x51e8bd[_0x41f2f9[_0x76e0('0x4f')]]=_0x3d51e8[_0x41f2f9[_0x76e0('0x54')][_0x76e0('0x55')][_0x76e0('0x41')]()][_0x76e0('0x50')]());}});}return _0x51e8bd;}function getConnection(_0x54977a){var _0x1e5233=_0x54977a['password'][_0x76e0('0x56')](_0x54977a[_0x76e0('0x57')]);var _0x220021=new jsforce['Connection']({'oauth2':{'loginUrl':_0x54977a[_0x76e0('0x58')]||_0x76e0('0x59'),'clientId':_0x54977a[_0x76e0('0x5a')],'clientSecret':_0x54977a[_0x76e0('0x5b')]}});return _0x220021[_0x76e0('0x5c')](_0x54977a[_0x76e0('0x5d')],_0x1e5233)[_0x76e0('0x27')](function(){logger[_0x76e0('0x20')](_0x76e0('0x5e'));return _0x220021;});}exports[_0x76e0('0x5f')]=function(_0x2896ba,_0x5f379a,_0x4caa05,_0x3d799e,_0x8d15d8,_0x47a58b){var _0x325ac9,_0x40bd1f,_0x4aeae5,_0x22921e;_0x47a58b[_0x76e0('0x60')]=intUtil[_0x76e0('0x61')](_0x47a58b[_0x76e0('0x60')]);_0x47a58b[_0x76e0('0x58')]=intUtil[_0x76e0('0x61')](_0x47a58b[_0x76e0('0x58')]);if(_0x8d15d8&&_0x8d15d8[_0x76e0('0x62')]){logger[_0x76e0('0x20')](_0x76e0('0x63'),'Recording\x20is\x20enabled!');_0x5f379a[_0x76e0('0x64')]=util[_0x76e0('0x47')](_0x76e0('0x65'),_0x47a58b[_0x76e0('0x60')],_0x5f379a[_0x76e0('0x66')],md5(_0x5f379a[_0x76e0('0x66')]));}else{_0x5f379a[_0x76e0('0x64')]='';}return getConnection(_0x47a58b)[_0x76e0('0x27')](function(_0xae759a){_0x22921e=_0xae759a;return getUser(_0x47a58b,_0x3d799e[_0x76e0('0x67')],_0x22921e);})['then'](function(_0x5eae56){_0x325ac9=_0x5eae56;return getEndUser(_0x47a58b,_0x4caa05,_0x5f379a[_0x76e0('0x68')],_0x5f379a[_0x76e0('0x69')],_0x22921e);})[_0x76e0('0x27')](function(_0x4c29f2){_0x40bd1f=_0x4c29f2;return getTicket(_0x47a58b,_0x325ac9,_0x40bd1f,_0x4caa05,_0x5f379a,_0x4caa05['Fields'],_0x22921e,'queue');})[_0x76e0('0x27')](function(_0x20cf22){_0x4aeae5=_0x20cf22;logger[_0x76e0('0x20')](_0x76e0('0x6a'),_0x4aeae5['id']);logger['info'](_0x76e0('0x6b'),_0x4aeae5['id'],_0x3d799e[_0x76e0('0x55')],_0x47a58b[_0x76e0('0x40')]);switch(_0x47a58b[_0x76e0('0x40')]){case'integrationTab':emit(util[_0x76e0('0x47')](_0x76e0('0x6c'),_0x3d799e[_0x76e0('0x55')]),_0x76e0('0x6d'),{'recordId':_0x4aeae5['id']});break;case _0x76e0('0x6e'):emit(util['format'](_0x76e0('0x6c'),_0x3d799e[_0x76e0('0x55')]),_0x76e0('0x6f'),{'uri':util['format'](_0x76e0('0x70'),_0x22921e[_0x76e0('0x71')],_0x4aeae5['id'])});break;default:logger['error']('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0xdd8447){logger['error'](_0x76e0('0x63'),_0xdd8447);});};exports[_0x76e0('0x72')]=function(_0x2b8ff0,_0x554d53,_0x3f6bca,_0x47361f,_0x4d484a,_0x330b4c,_0x4fd054){var _0x5f02e4,_0x2ff83d,_0x59c079,_0x3e530d;_0x330b4c['serverUrl']=intUtil[_0x76e0('0x61')](_0x330b4c[_0x76e0('0x60')]);_0x330b4c[_0x76e0('0x58')]=intUtil[_0x76e0('0x61')](_0x330b4c[_0x76e0('0x58')]);if(_0x4fd054&&_0x4fd054['recordingFormat']&&_0x4fd054['recordingFormat']!==_0x76e0('0x73')){logger[_0x76e0('0x20')](_0x76e0('0x74'),'Recording\x20is\x20enabled!');_0x554d53[_0x76e0('0x64')]=util[_0x76e0('0x47')](_0x76e0('0x65'),_0x330b4c['serverUrl'],_0x554d53['uniqueid'],md5(_0x554d53[_0x76e0('0x66')]));}return getConnection(_0x330b4c)[_0x76e0('0x27')](function(_0x32036f){_0x3e530d=_0x32036f;return getUser(_0x330b4c,_0x47361f[_0x76e0('0x67')],_0x3e530d);})['then'](function(_0x3dee18){_0x5f02e4=_0x3dee18;return getEndUser(_0x330b4c,_0x3f6bca,_0x554d53['destcalleridname'],_0x554d53[_0x76e0('0x75')],_0x3e530d);})['then'](function(_0x50842e){_0x2ff83d=_0x50842e;return getTicket(_0x330b4c,_0x5f02e4,_0x2ff83d,_0x3f6bca,_0x554d53,_0x3f6bca[_0x76e0('0x76')],_0x3e530d,_0x76e0('0x72'));})['then'](function(_0x31108b){_0x59c079=_0x31108b;logger[_0x76e0('0x20')](_0x76e0('0x77'),_0x59c079['id']);logger['info'](_0x76e0('0x78'),_0x59c079['id'],_0x47361f['name'],_0x330b4c[_0x76e0('0x40')]);switch(_0x330b4c[_0x76e0('0x40')]){case _0x76e0('0x79'):emit(util[_0x76e0('0x47')](_0x76e0('0x6c'),_0x47361f['name']),_0x76e0('0x6d'),{'recordId':_0x59c079['id']});break;case _0x76e0('0x6e'):emit(util[_0x76e0('0x47')](_0x76e0('0x6c'),_0x47361f[_0x76e0('0x55')]),_0x76e0('0x6f'),{'uri':util[_0x76e0('0x47')](_0x76e0('0x70'),_0x3e530d[_0x76e0('0x71')],_0x59c079['id'])});break;default:logger['error'](_0x76e0('0x74'),_0x76e0('0x7a'));}})[_0x76e0('0x7b')](function(_0x2bc7c6){logger[_0x76e0('0x7c')]('[OUTBOUND]',_0x2bc7c6);});};exports['unmanaged']=function(_0x447b36,_0x24c61b,_0x44fddf,_0x227482,_0x41512f,_0x58282c){var _0x1a3162,_0x214adb,_0x1f16fb,_0x4d3ddd;_0x58282c[_0x76e0('0x60')]=intUtil[_0x76e0('0x61')](_0x58282c['serverUrl']);_0x58282c['remoteUri']=intUtil[_0x76e0('0x61')](_0x58282c[_0x76e0('0x58')]);if(_0x41512f&&_0x41512f['monitor_format']){logger[_0x76e0('0x20')]('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+']',_0x76e0('0x7f'));_0x24c61b[_0x76e0('0x64')]=util['format'](_0x76e0('0x65'),_0x58282c[_0x76e0('0x60')],_0x24c61b[_0x76e0('0x66')],md5(_0x24c61b[_0x76e0('0x66')]));}else{_0x24c61b[_0x76e0('0x64')]='';}return getConnection(_0x58282c)[_0x76e0('0x27')](function(_0x3a8a23){_0x4d3ddd=_0x3a8a23;if(!_[_0x76e0('0x23')](_0x227482)){return getUser(_0x58282c,_0x227482[_0x76e0('0x55')],_0x4d3ddd);}else{return getUser(_0x58282c,null,_0x4d3ddd);}})[_0x76e0('0x27')](function(_0x3d0a69){_0x1a3162=_0x3d0a69;return getEndUser(_0x58282c,_0x44fddf,_0x24c61b[_0x76e0('0x68')],_0x24c61b[_0x76e0('0x69')],_0x4d3ddd);})['then'](function(_0x21c879){_0x214adb=_0x21c879;return getTicket(_0x58282c,_0x1a3162,_0x214adb,_0x44fddf,_0x24c61b,_0x44fddf[_0x76e0('0x76')],_0x4d3ddd);})['then'](function(_0x724130){_0x1f16fb=_0x724130;logger[_0x76e0('0x20')]('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+_0x76e0('0x80'),_0x1f16fb['id']);logger['info']('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+_0x76e0('0x81'),_0x58282c[_0x76e0('0x40')]);})[_0x76e0('0x7b')](function(_0x5d1469){logger['error']('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+']',_0x5d1469);});};
\ No newline at end of file
index 2fd064f..700ff4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ab=['inspect','lodash','bluebird','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','socket.io-emitter','GET','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','toUpperCase','message','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','then','true','userId','adminEmail','],\x20getUser\x20crm','catch','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','picklist','customField','toLowerCase','string','type','idField','content','toString','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','ticketNumber','forEach','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...'];(function(_0x469b7d,_0x4317b0){var _0x5d4b29=function(_0x3b5210){while(--_0x3b5210){_0x469b7d['push'](_0x469b7d['shift']());}};_0x5d4b29(++_0x4317b0);}(_0x41ab,0x6e));var _0xb41a=function(_0x2f05c6,_0x42673e){_0x2f05c6=_0x2f05c6-0x0;var _0x21df7c=_0x41ab[_0x2f05c6];return _0x21df7c;};'use strict';var _=require(_0xb41a('0x0'));var Promise=require(_0xb41a('0x1'));var rp=require(_0xb41a('0x2'));var util=require('util');var md5=require(_0xb41a('0x3'));var Redis=require('ioredis');var intUtil=require(_0xb41a('0x4'));var config=require(_0xb41a('0x5'));var logger=require(_0xb41a('0x6'))(_0xb41a('0x7'));config[_0xb41a('0x8')]=_['defaults'](config[_0xb41a('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xb41a('0x9'))(new Redis(config[_0xb41a('0x8')]));function getAdminUser(_0x15d5fb,_0x4ec632,_0x334167,_0x4437ed,_0x4178fb,_0x4a7d43){return new Promise(function(_0x5e3159,_0x290710){var _0x1a0c9d={'method':_0xb41a('0xa'),'uri':_0x4437ed+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x4178fb+'&'+_0x4a7d43,'auth':_0x4ec632,'json':!![]};return rp(_0x1a0c9d)['then'](function(_0x1ddba8){if(_0x1ddba8[_0xb41a('0xb')][_0xb41a('0xc')]>0x0){_0x334167[_0xb41a('0xd')]=_0x1ddba8[_0xb41a('0xb')][0x0][_0xb41a('0xe')];}logger[_0xb41a('0xf')]('['+[_0x15d5fb['toUpperCase']()]+_0xb41a('0x10'),_0x334167);_0x5e3159(_0x334167);})['catch'](function(_0x21736d){logger['error']('['+[_0x15d5fb[_0xb41a('0x11')]()]+']',_0x21736d[_0xb41a('0x12')]);_0x290710(_0x21736d[_0xb41a('0x12')]);});});}function getUser(_0x454ca2,_0xca1e9d,_0x8799ad,_0x5a8aa3,_0x17b837){return function(_0x13cf0e){logger[_0xb41a('0xf')]('['+[_0x454ca2[_0xb41a('0x11')]()]+_0xb41a('0x13'),_0x13cf0e);return new Promise(function(_0x42dd64,_0x40de6e){if(intUtil['validateEmail'](_0x13cf0e[_0xb41a('0x14')])){var _0x412d0a={'method':_0xb41a('0xa'),'uri':_0x8799ad+_0xb41a('0x15')+_0x13cf0e[_0xb41a('0x14')]+'&'+_0x5a8aa3+'&'+_0x17b837,'auth':_0xca1e9d,'json':!![]};logger[_0xb41a('0xf')]('['+[_0x454ca2[_0xb41a('0x11')]()]+_0xb41a('0x16'),_0x412d0a);return rp(_0x412d0a)[_0xb41a('0x17')](function(_0x17dcb8){logger['info']('['+[_0x454ca2[_0xb41a('0x11')]()]+'],\x20getUser\x20entity',_0x17dcb8);if(_0x17dcb8[_0xb41a('0xb')][_0xb41a('0xc')]>0x0&&String(_0x17dcb8[_0xb41a('0xb')][0x0]['active'])===_0xb41a('0x18')){_0x13cf0e[_0xb41a('0x19')]=_0x17dcb8[_0xb41a('0xb')][0x0][_0xb41a('0xe')];}else{_0x13cf0e[_0xb41a('0x19')]=_0x13cf0e[_0xb41a('0xd')];_0x13cf0e[_0xb41a('0x14')]=_0x13cf0e[_0xb41a('0x1a')];}logger['info']('['+[_0x454ca2[_0xb41a('0x11')]()]+_0xb41a('0x1b'),_0x13cf0e);_0x42dd64(_0x13cf0e);})[_0xb41a('0x1c')](function(_0x2d90d0){logger[_0xb41a('0x1d')]('['+[_0x454ca2[_0xb41a('0x11')]()]+']',_0x2d90d0['message']);_0x40de6e(_0x2d90d0[_0xb41a('0x12')]);});}else{logger['info']('['+[_0x454ca2[_0xb41a('0x11')]()]+_0xb41a('0x1e'));_0x13cf0e['userId']=_0x13cf0e['adminId'];_0x13cf0e['userEmail']=_0x13cf0e[_0xb41a('0x1a')];_0x42dd64(_0x13cf0e);}});};}function createEndUser(_0x2394a2,_0x8657a2,_0x5c67bf,_0x1573d1,_0xc02e66){logger[_0xb41a('0xf')]('['+[_0x2394a2[_0xb41a('0x11')]()]+_0xb41a('0x1f'),_0x5c67bf);return new Promise(function(_0x421817,_0x205e17){var _0x5ee718={'method':_0xb41a('0x20'),'uri':_0x1573d1+_0xb41a('0x21')+_0xc02e66,'body':{'user_name':_0x5c67bf[_0xb41a('0x22')],'roles':_0xb41a('0x23'),'first_name':_0x5c67bf[_0xb41a('0x22')],'active':_0xb41a('0x18'),'date_format':'System','phone':_0x5c67bf[_0xb41a('0x22')]},'auth':_0x8657a2,'json':!![]};return rp(_0x5ee718)[_0xb41a('0x17')](function(_0x1d88e4){logger['info']('['+[_0x2394a2['toUpperCase']()]+_0xb41a('0x24'),_0x1d88e4[_0xb41a('0xb')]);_0x5c67bf['endUserId']=_0x1d88e4[_0xb41a('0xb')][_0xb41a('0xe')];_0x421817(_0x5c67bf);})[_0xb41a('0x1c')](function(_0x242a9e){logger[_0xb41a('0x1d')]('['+[_0x2394a2[_0xb41a('0x11')]()]+']',_0x242a9e[_0xb41a('0x12')]);_0x205e17(_0x242a9e['message']);});});}function getEndUser(_0x11ea75,_0x23fd0b,_0x8c6555,_0x3e1d32,_0x17caf2){return function(_0x58bf63){logger['info']('['+[_0x11ea75[_0xb41a('0x11')]()]+_0xb41a('0x25'),_0x58bf63);return new Promise(function(_0x5083ca,_0x2e96d7){var _0x3d02ec={'method':_0xb41a('0xa'),'uri':_0x8c6555+_0xb41a('0x26')+_0x58bf63[_0xb41a('0x22')]+'&'+_0x3e1d32+'&'+_0x17caf2,'auth':_0x23fd0b,'json':!![]};return rp(_0x3d02ec)[_0xb41a('0x17')](function(_0x49efeb){if(_0x49efeb['result'][_0xb41a('0xc')]>0x0){_0x58bf63[_0xb41a('0x27')]=_0x49efeb[_0xb41a('0xb')][0x0][_0xb41a('0xe')];logger['info']('['+[_0x11ea75[_0xb41a('0x11')]()]+_0xb41a('0x28'),_0x58bf63);_0x5083ca(_0x58bf63);}else{return createEndUser(_0x11ea75,_0x23fd0b,_0x58bf63,_0x8c6555,_0x3e1d32)['then'](function(_0x79c636){logger['info']('['+[_0x11ea75[_0xb41a('0x11')]()]+_0xb41a('0x29'),_0x79c636);_0x5083ca(_0x79c636);});}})[_0xb41a('0x1c')](function(_0x14f4c3){logger[_0xb41a('0x1d')]('['+[_0x11ea75[_0xb41a('0x11')]()]+']',_0x14f4c3[_0xb41a('0x12')]);_0x2e96d7(_0x14f4c3['message']);});});};}function getCustomFields(_0x9427cd,_0x3921e3){var _0x20e6d5={};if(_0x9427cd[_0xb41a('0xc')]>0x0){_['forEach'](_0x9427cd,function(_0x4fa67c){if(_['includes'](['string',_0xb41a('0x2a')],_0x4fa67c['type'])&&_0x4fa67c['nameField']&&!_0x4fa67c[_0xb41a('0x2b')]){_0x20e6d5[_0x4fa67c['nameField'][_0xb41a('0x2c')]()]=_0x4fa67c['content']['toString']();}else if(_['includes']([_0xb41a('0x2d'),_0xb41a('0x2a')],_0x4fa67c[_0xb41a('0x2e')])&&_0x4fa67c[_0xb41a('0x2f')]&&_0x4fa67c[_0xb41a('0x2b')]){_0x20e6d5[_0x4fa67c['idField'][_0xb41a('0x2c')]()]=_0x4fa67c[_0xb41a('0x30')][_0xb41a('0x31')]();}else if(_0x4fa67c[_0xb41a('0x2e')]===_0xb41a('0x32')&&_0x4fa67c['variableName']&&_0x4fa67c['idField']&&_0x4fa67c[_0xb41a('0x2b')]){_0x20e6d5[_0x4fa67c[_0xb41a('0x2f')]['toLowerCase']()]=_0x3921e3[_0x4fa67c[_0xb41a('0x33')]][_0xb41a('0x31')]();}else if(_0x4fa67c['type']===_0xb41a('0x34')&&_0x4fa67c[_0xb41a('0x35')]&&_0x4fa67c[_0xb41a('0x35')][_0xb41a('0x36')]&&_0x4fa67c['idField']&&_0x4fa67c['customField']){_0x20e6d5[_0x4fa67c['idField'][_0xb41a('0x2c')]()]=_0x3921e3[_0x4fa67c[_0xb41a('0x35')][_0xb41a('0x36')][_0xb41a('0x2c')]()]['toString']();}});}return _0x20e6d5;}function getTicket(_0xa6632d,_0x11e69e,_0x28dea7,_0x405b40,_0x138bc6,_0x43186b){return function(_0xccad9a){logger[_0xb41a('0xf')]('['+[_0xa6632d[_0xb41a('0x11')]()]+_0xb41a('0x37'),_0xccad9a);return new Promise(function(_0x4c2290,_0x133ef0){var _0x2eb102=_0xa6632d[_0xb41a('0x2c')]()===_0xb41a('0x38')?_0xccad9a[_0xb41a('0x19')]:_0xccad9a[_0xb41a('0x27')];var _0x450c7f={'method':_0xb41a('0x20'),'uri':_0x28dea7+_0xb41a('0x39')+'?'+_0x43186b,'body':Object[_0xb41a('0x3a')]({},{'active':_0xb41a('0x18'),'caller_id':_0x2eb102,'assigned_to':_0xccad9a[_0xb41a('0x19')],'short_description':intUtil[_0xb41a('0x3b')](_0x405b40['Subjects'],_0x138bc6,'\x20'),'description':intUtil['getString'](_0x405b40[_0xb41a('0x3c')],_0x138bc6,'\x0a')},getCustomFields(_0x405b40[_0xb41a('0x3d')],_0x138bc6)),'auth':_0x11e69e,'json':!![]};return rp(_0x450c7f)['then'](function(_0x89f8c7){logger[_0xb41a('0xf')]('['+[_0xa6632d[_0xb41a('0x11')]()]+_0xb41a('0x3e'),_0x89f8c7[_0xb41a('0xb')]);_0xccad9a[_0xb41a('0x3f')]=_0x89f8c7[_0xb41a('0xb')][_0xb41a('0xe')];_0xccad9a['ticketNumber']=_0x89f8c7[_0xb41a('0xb')][_0xb41a('0x40')];logger[_0xb41a('0xf')]('['+[_0xa6632d[_0xb41a('0x11')]()]+_0xb41a('0x41'),_0xccad9a);_0x4c2290(_0xccad9a);})[_0xb41a('0x1c')](function(_0x45f754){logger[_0xb41a('0x1d')]('['+[_0xa6632d[_0xb41a('0x11')]()]+']',_0x45f754[_0xb41a('0x12')]);_0x133ef0(_0x45f754[_0xb41a('0x12')]);});});};}function createRemoteTag(_0x483d5f,_0x1c0c90,_0x179c7a,_0x95ef04){return new Promise(function(_0xdc6fc0,_0x34662d){var _0x35ad8d={'method':'POST','uri':_0x179c7a+_0xb41a('0x42')+'?'+_0x95ef04,'body':{'short_description':_0x483d5f,'global':!![],'active':!![],'name':_0x483d5f},'auth':_0x1c0c90,'json':!![]};return rp(_0x35ad8d)[_0xb41a('0x17')](function(_0x189b78){var _0x52886c=_0x189b78[_0xb41a('0xb')][_0xb41a('0xe')];_0xdc6fc0(_0x52886c);});});}function getRemoteTag(_0x28f1e7,_0x579fc2,_0x8b2ed2,_0x22759a,_0x77fa8){return new Promise(function(_0xb15675,_0xdc7133){var _0x3504f4={'method':'GET','uri':_0x8b2ed2+_0xb41a('0x42')+_0xb41a('0x43')+_0x28f1e7+'&'+_0x22759a,'auth':_0x579fc2,'json':!![]};return rp(_0x3504f4)[_0xb41a('0x17')](function(_0x1c1f3c){if(_0x1c1f3c[_0xb41a('0xb')]['length']>0x0){var _0x130159=_0x1c1f3c[_0xb41a('0xb')][0x0][_0xb41a('0xe')];_0xb15675(_0x130159);}else{return createRemoteTag(_0x28f1e7,_0x579fc2,_0x8b2ed2,_0x22759a)[_0xb41a('0x17')](function(_0x4e463a){_0xb15675(_0x4e463a);});}});});}function assignTagToIncident(_0x170d19,_0x260568,_0x1202ff,_0xb60bb2,_0x118daa){return new Promise(function(_0x44da54,_0x56ac61){var _0x11a885={'method':_0xb41a('0x20'),'uri':_0x1202ff+_0xb41a('0x44')+'?'+_0x118daa,'body':{'label':_0x170d19,'table':_0xb41a('0x39'),'id_type':_0xb41a('0x45'),'table_key':_0xb60bb2[_0xb41a('0x3f')],'title':'Incident\x20-\x20'+_0xb60bb2['ticketNumber'],'id_display':_0xb60bb2[_0xb41a('0x46')]},'auth':_0x260568,'json':!![]};return rp(_0x11a885)[_0xb41a('0x17')](function(_0x2e3623){_0x44da54();})['catch'](function(){_0x44da54();});});}function manageTags(_0x27262a,_0x131ccf,_0x480619,_0x5d1da1,_0x5d93c2,_0x1dd6e2,_0x3d6cfa){return new Promise(function(_0x54c35a,_0x2201c8){var _0x565370=[];_0x131ccf[_0xb41a('0x47')](function(_0x1507e8){_0x565370[_0xb41a('0x48')](getRemoteTag(_0x1507e8,_0x480619,_0x5d1da1,_0x1dd6e2,_0x3d6cfa));});return Promise[_0xb41a('0x49')](_0x565370)['then'](function(_0x219228){if(_0x219228[_0xb41a('0xc')]){logger[_0xb41a('0xf')]('['+[_0x27262a[_0xb41a('0x11')]()]+_0xb41a('0x4a'),_0x219228);var _0x34b3d2=[];_0x219228[_0xb41a('0x47')](function(_0x3ca654){_0x34b3d2['push'](assignTagToIncident(_0x3ca654,_0x480619,_0x5d1da1,_0x5d93c2,_0x1dd6e2));});return Promise['all'](_0x34b3d2)[_0xb41a('0x17')](function(){_0x54c35a();})[_0xb41a('0x1c')](function(){_0x54c35a();});}else{_0x54c35a();}});});}function getTags(_0x1c45ae,_0x15e995,_0x5e1e9f,_0x1984f4,_0x3280c5,_0x3fe34c){return function(_0x552b6e){return new Promise(function(_0x24c2c2,_0x47bbe9){var _0x4642dc=[];var _0xf4af51=_0x1984f4[_0xb41a('0x4b')];if(_0xf4af51&&_0xf4af51[_0xb41a('0xc')]>0x0){_0x4642dc=_[_0xb41a('0x4c')](_0xf4af51,'name');}if(_0x4642dc['length']>0x0){return manageTags(_0x1c45ae,_0x4642dc,_0x15e995,_0x5e1e9f,_0x552b6e,_0x3280c5,_0x3fe34c)[_0xb41a('0x17')](function(){_0x24c2c2(_0x552b6e);});}else{_0x24c2c2(_0x552b6e);}});};}function emit(_0x5356c5,_0x53a836,_0x127092){var _0x1c54b8='%26sysparm_record_target%3Dincident'+_0xb41a('0x4d')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xb41a('0x4e');var _0x426f58={'uri':_0x5356c5+_0xb41a('0x4f')+_0x127092+_0x1c54b8};io['to'](util[_0xb41a('0x50')]('user:%s',_0x53a836))[_0xb41a('0x51')](_0xb41a('0x52'),_0x426f58);}exports['cs']=function(_0x292b15,_0x2ea427,_0x2e582a,_0x364fb3,_0x2cb8a6,_0x3c5c47,_0x331076,_0x18c64f){var _0x546beb={};var _0x225126={'user':_0x3c5c47[_0xb41a('0x53')],'pass':_0x3c5c47[_0xb41a('0x54')]};var _0x38c45f=_0xb41a('0x55');var _0x1da988=_0xb41a('0x56');_0x3c5c47['remoteUri']=intUtil[_0xb41a('0x57')](_0x3c5c47[_0xb41a('0x58')]);_0x3c5c47[_0xb41a('0x59')]=intUtil[_0xb41a('0x57')](_0x3c5c47['serverUrl']);var _0x2e51ff=util[_0xb41a('0x50')](_0xb41a('0x5a'),_0x3c5c47[_0xb41a('0x58')]);_0x546beb[_0xb41a('0x14')]=!_[_0xb41a('0x5b')](_0x364fb3)?_0x364fb3[_0xb41a('0x5c')]:null;_0x546beb[_0xb41a('0x1a')]=_0x3c5c47[_0xb41a('0x5c')];_0x546beb[_0xb41a('0x22')]=_0x18c64f[_0xb41a('0x2c')]()===_0xb41a('0x38')?_0x2ea427[_0xb41a('0x5d')]:_0x2ea427[_0xb41a('0x5e')];_0x546beb[_0xb41a('0x5f')]=_0x18c64f==='queue'||_0x18c64f===_0xb41a('0x60')?_0xb41a('0x61'):_0xb41a('0x38');var _0x45813b=util[_0xb41a('0x50')](_0xb41a('0x62'),_0x3c5c47[_0xb41a('0x59')],_0x2ea427[_0xb41a('0x63')],md5(_0x2ea427['uniqueid']));if(_0x2cb8a6&&_0x2cb8a6[_0xb41a('0x64')]){logger['info'](_0xb41a('0x65'),_0xb41a('0x66'));_0x2ea427[_0xb41a('0x67')]=_0x45813b;}else if(_0x331076&&_0x331076[_0xb41a('0x68')]&&_0x331076['recordingFormat']!==_0xb41a('0x69')){logger[_0xb41a('0xf')]('[OUTBOUND]',_0xb41a('0x66'));_0x2ea427[_0xb41a('0x67')]=_0x45813b;}else{_0x2ea427['recordingURL']='';}return getAdminUser(_0x18c64f,_0x225126,_0x546beb,_0x2e51ff,_0x1da988,_0x38c45f)[_0xb41a('0x17')](getUser(_0x18c64f,_0x225126,_0x2e51ff,_0x1da988,_0x38c45f))[_0xb41a('0x17')](getEndUser(_0x18c64f,_0x225126,_0x2e51ff,_0x1da988,_0x38c45f))['then'](getTicket(_0x18c64f,_0x225126,_0x2e51ff,_0x2e582a,_0x2ea427,_0x1da988))[_0xb41a('0x17')](function(_0x1ab528){logger['info'](util[_0xb41a('0x50')](_0xb41a('0x6a'),_0x1ab528[_0xb41a('0x3f')]));logger[_0xb41a('0xf')](util[_0xb41a('0x50')]('call\x20direction:\x20%s',_0x18c64f));if(_0x18c64f!==_0xb41a('0x60')){logger[_0xb41a('0xf')]('['+[_0x18c64f[_0xb41a('0x11')]()]+']',_0xb41a('0x6b'));emit(_0x3c5c47[_0xb41a('0x58')],_0x364fb3[_0xb41a('0x36')],_0x1ab528[_0xb41a('0x3f')]);}})[_0xb41a('0x1c')](function(_0x5e387e){logger[_0xb41a('0x1d')]('['+[_0x18c64f[_0xb41a('0x11')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0xb41a('0x6c')](_0x5e387e,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x8339=['isNil','email','destcalleridnum','callDirection','unmanaged','format','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','lodash','bluebird','request-promise','util','md5','ioredis','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','GET','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm','catch','error','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminEmail','message','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','forEach','includes','string','type','customField','nameField','toLowerCase','content','toString','picklist','variableName','idField','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','Subjects','getString','Descriptions','Fields','ticketNumber','number',']\x20getTicket\x20crm','label','Incident','ticketId','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','emit','trigger:browser:url','username','password','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/'];(function(_0x2fa32b,_0x2ed618){var _0x383f36=function(_0x44e111){while(--_0x44e111){_0x2fa32b['push'](_0x2fa32b['shift']());}};_0x383f36(++_0x2ed618);}(_0x8339,0xe1));var _0x9833=function(_0x45cd35,_0x41147c){_0x45cd35=_0x45cd35-0x0;var _0x16db84=_0x8339[_0x45cd35];return _0x16db84;};'use strict';var _=require(_0x9833('0x0'));var Promise=require(_0x9833('0x1'));var rp=require(_0x9833('0x2'));var util=require(_0x9833('0x3'));var md5=require(_0x9833('0x4'));var Redis=require(_0x9833('0x5'));var intUtil=require('./util');var config=require(_0x9833('0x6'));var logger=require(_0x9833('0x7'))(_0x9833('0x8'));config[_0x9833('0x9')]=_['defaults'](config[_0x9833('0x9')],{'host':_0x9833('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9833('0x9')]));function getAdminUser(_0x158261,_0x5f2e13,_0x42b0d6,_0x44a42a,_0x423819,_0x413565){return new Promise(function(_0x3bd46d,_0x15a439){var _0xaeacb={'method':_0x9833('0xb'),'uri':_0x44a42a+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x423819+'&'+_0x413565,'auth':_0x5f2e13,'json':!![]};return rp(_0xaeacb)[_0x9833('0xc')](function(_0x23514f){if(_0x23514f[_0x9833('0xd')][_0x9833('0xe')]>0x0){_0x42b0d6[_0x9833('0xf')]=_0x23514f[_0x9833('0xd')][0x0][_0x9833('0x10')];}logger['info']('['+[_0x158261[_0x9833('0x11')]()]+_0x9833('0x12'),_0x42b0d6);_0x3bd46d(_0x42b0d6);})[_0x9833('0x13')](function(_0x1c8c7d){logger[_0x9833('0x14')]('['+[_0x158261[_0x9833('0x11')]()]+']',_0x1c8c7d['message']);_0x15a439(_0x1c8c7d['message']);});});}function getUser(_0x2738d9,_0x7fe003,_0x444359,_0x24f5bf,_0x39aefe){return function(_0x31bfb2){logger[_0x9833('0x15')]('['+[_0x2738d9[_0x9833('0x11')]()]+_0x9833('0x16'),_0x31bfb2);return new Promise(function(_0x10677e,_0x43449e){if(intUtil[_0x9833('0x17')](_0x31bfb2[_0x9833('0x18')])){var _0xe6baf6={'method':_0x9833('0xb'),'uri':_0x444359+_0x9833('0x19')+_0x31bfb2['userEmail']+'&'+_0x24f5bf+'&'+_0x39aefe,'auth':_0x7fe003,'json':!![]};logger[_0x9833('0x15')]('['+[_0x2738d9[_0x9833('0x11')]()]+_0x9833('0x1a'),_0xe6baf6);return rp(_0xe6baf6)[_0x9833('0xc')](function(_0x3e0397){logger[_0x9833('0x15')]('['+[_0x2738d9['toUpperCase']()]+_0x9833('0x1b'),_0x3e0397);if(_0x3e0397[_0x9833('0xd')][_0x9833('0xe')]>0x0&&String(_0x3e0397[_0x9833('0xd')][0x0][_0x9833('0x1c')])===_0x9833('0x1d')){_0x31bfb2[_0x9833('0x1e')]=_0x3e0397[_0x9833('0xd')][0x0]['sys_id'];}else{_0x31bfb2['userId']=_0x31bfb2[_0x9833('0xf')];_0x31bfb2[_0x9833('0x18')]=_0x31bfb2[_0x9833('0x1f')];}logger[_0x9833('0x15')]('['+[_0x2738d9[_0x9833('0x11')]()]+'],\x20getUser\x20crm',_0x31bfb2);_0x10677e(_0x31bfb2);})[_0x9833('0x13')](function(_0x153608){logger[_0x9833('0x14')]('['+[_0x2738d9[_0x9833('0x11')]()]+']',_0x153608[_0x9833('0x20')]);_0x43449e(_0x153608[_0x9833('0x20')]);});}else{logger[_0x9833('0x15')]('['+[_0x2738d9['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x31bfb2[_0x9833('0x1e')]=_0x31bfb2[_0x9833('0xf')];_0x31bfb2[_0x9833('0x18')]=_0x31bfb2[_0x9833('0x1f')];_0x10677e(_0x31bfb2);}});};}function createEndUser(_0xb4615a,_0x4667cb,_0x3b10dd,_0x440a02,_0x3ef108){logger[_0x9833('0x15')]('['+[_0xb4615a['toUpperCase']()]+_0x9833('0x21'),_0x3b10dd);return new Promise(function(_0x4777f3,_0x236234){var _0x1daba9={'method':_0x9833('0x22'),'uri':_0x440a02+_0x9833('0x23')+_0x3ef108,'body':{'user_name':_0x3b10dd['endUserNumber'],'roles':_0x9833('0x24'),'first_name':_0x3b10dd[_0x9833('0x25')],'active':_0x9833('0x1d'),'date_format':_0x9833('0x26'),'phone':_0x3b10dd[_0x9833('0x25')]},'auth':_0x4667cb,'json':!![]};return rp(_0x1daba9)[_0x9833('0xc')](function(_0x14b189){logger[_0x9833('0x15')]('['+[_0xb4615a['toUpperCase']()]+_0x9833('0x27'),_0x14b189[_0x9833('0xd')]);_0x3b10dd[_0x9833('0x28')]=_0x14b189[_0x9833('0xd')]['sys_id'];_0x4777f3(_0x3b10dd);})[_0x9833('0x13')](function(_0x47711e){logger[_0x9833('0x14')]('['+[_0xb4615a[_0x9833('0x11')]()]+']',_0x47711e[_0x9833('0x20')]);_0x236234(_0x47711e[_0x9833('0x20')]);});});}function getEndUser(_0x575e2a,_0xec3d9b,_0x3be3b3,_0x2f0ef4,_0x37c33b){return function(_0x44679c){logger[_0x9833('0x15')]('['+[_0x575e2a[_0x9833('0x11')]()]+_0x9833('0x29'),_0x44679c);return new Promise(function(_0x1d554a,_0x229871){var _0x558c5a={'method':'GET','uri':_0x3be3b3+_0x9833('0x2a')+_0x44679c[_0x9833('0x25')]+'&'+_0x2f0ef4+'&'+_0x37c33b,'auth':_0xec3d9b,'json':!![]};return rp(_0x558c5a)[_0x9833('0xc')](function(_0x2e1f92){if(_0x2e1f92[_0x9833('0xd')]['length']>0x0){_0x44679c['endUserId']=_0x2e1f92[_0x9833('0xd')][0x0][_0x9833('0x10')];logger[_0x9833('0x15')]('['+[_0x575e2a[_0x9833('0x11')]()]+'],\x20getEndUser\x20crm',_0x44679c);_0x1d554a(_0x44679c);}else{return createEndUser(_0x575e2a,_0xec3d9b,_0x44679c,_0x3be3b3,_0x2f0ef4)['then'](function(_0x14484f){logger[_0x9833('0x15')]('['+[_0x575e2a[_0x9833('0x11')]()]+'],\x20createEndUser\x20crm',_0x14484f);_0x1d554a(_0x14484f);});}})[_0x9833('0x13')](function(_0x25a923){logger[_0x9833('0x14')]('['+[_0x575e2a[_0x9833('0x11')]()]+']',_0x25a923[_0x9833('0x20')]);_0x229871(_0x25a923[_0x9833('0x20')]);});});};}function getCustomFields(_0x2eaedb,_0x26c08c){var _0xa99480={};if(_0x2eaedb[_0x9833('0xe')]>0x0){_[_0x9833('0x2b')](_0x2eaedb,function(_0x5047f1){if(_[_0x9833('0x2c')]([_0x9833('0x2d'),'picklist'],_0x5047f1[_0x9833('0x2e')])&&_0x5047f1['nameField']&&!_0x5047f1[_0x9833('0x2f')]){_0xa99480[_0x5047f1[_0x9833('0x30')][_0x9833('0x31')]()]=_0x5047f1[_0x9833('0x32')][_0x9833('0x33')]();}else if(_['includes']([_0x9833('0x2d'),_0x9833('0x34')],_0x5047f1['type'])&&_0x5047f1['idField']&&_0x5047f1[_0x9833('0x2f')]){_0xa99480[_0x5047f1['idField'][_0x9833('0x31')]()]=_0x5047f1[_0x9833('0x32')][_0x9833('0x33')]();}else if(_0x5047f1['type']==='variable'&&_0x5047f1[_0x9833('0x35')]&&_0x5047f1['idField']&&_0x5047f1[_0x9833('0x2f')]){_0xa99480[_0x5047f1[_0x9833('0x36')][_0x9833('0x31')]()]=_0x26c08c[_0x5047f1[_0x9833('0x35')]][_0x9833('0x33')]();}else if(_0x5047f1[_0x9833('0x2e')]==='customVariable'&&_0x5047f1['Variable']&&_0x5047f1[_0x9833('0x37')][_0x9833('0x38')]&&_0x5047f1['idField']&&_0x5047f1['customField']){_0xa99480[_0x5047f1[_0x9833('0x36')][_0x9833('0x31')]()]=_0x26c08c[_0x5047f1[_0x9833('0x37')][_0x9833('0x38')][_0x9833('0x31')]()][_0x9833('0x33')]();}});}return _0xa99480;}function getTicket(_0x10bab4,_0x514301,_0x542d32,_0x175d4e,_0x2c6de9,_0x3b21ea){return function(_0x597439){logger['info']('['+[_0x10bab4[_0x9833('0x11')]()]+_0x9833('0x39'),_0x597439);return new Promise(function(_0x24515f,_0x33c2f5){var _0x508a36=_0x10bab4[_0x9833('0x31')]()===_0x9833('0x3a')?_0x597439[_0x9833('0x1e')]:_0x597439[_0x9833('0x28')];var _0x9b2f24={'method':_0x9833('0x22'),'uri':_0x542d32+_0x9833('0x3b')+'?'+_0x3b21ea,'body':Object[_0x9833('0x3c')]({},{'active':'true','caller_id':_0x508a36,'assigned_to':_0x597439[_0x9833('0x1e')],'short_description':intUtil['getString'](_0x175d4e[_0x9833('0x3d')],_0x2c6de9,'\x20'),'description':intUtil[_0x9833('0x3e')](_0x175d4e[_0x9833('0x3f')],_0x2c6de9,'\x0a')},getCustomFields(_0x175d4e[_0x9833('0x40')],_0x2c6de9)),'auth':_0x514301,'json':!![]};return rp(_0x9b2f24)['then'](function(_0x17ad58){logger['info']('['+[_0x10bab4[_0x9833('0x11')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x17ad58[_0x9833('0xd')]);_0x597439['ticketId']=_0x17ad58['result'][_0x9833('0x10')];_0x597439[_0x9833('0x41')]=_0x17ad58[_0x9833('0xd')][_0x9833('0x42')];logger['info']('['+[_0x10bab4['toUpperCase']()]+_0x9833('0x43'),_0x597439);_0x24515f(_0x597439);})[_0x9833('0x13')](function(_0x51878c){logger[_0x9833('0x14')]('['+[_0x10bab4[_0x9833('0x11')]()]+']',_0x51878c[_0x9833('0x20')]);_0x33c2f5(_0x51878c[_0x9833('0x20')]);});});};}function createRemoteTag(_0x2ddd00,_0x20f605,_0x4d3d7f,_0x11e102){return new Promise(function(_0x342871,_0x5f0b49){var _0x4204fd={'method':_0x9833('0x22'),'uri':_0x4d3d7f+_0x9833('0x44')+'?'+_0x11e102,'body':{'short_description':_0x2ddd00,'global':!![],'active':!![],'name':_0x2ddd00},'auth':_0x20f605,'json':!![]};return rp(_0x4204fd)['then'](function(_0x386a83){var _0x4c161f=_0x386a83[_0x9833('0xd')][_0x9833('0x10')];_0x342871(_0x4c161f);});});}function getRemoteTag(_0x35986b,_0x4f5f10,_0x385636,_0x4f082d,_0x4a1aa5){return new Promise(function(_0x278fad,_0x36fc41){var _0x36f294={'method':_0x9833('0xb'),'uri':_0x385636+_0x9833('0x44')+'?sysparm_query=name%3D'+_0x35986b+'&'+_0x4f082d,'auth':_0x4f5f10,'json':!![]};return rp(_0x36f294)[_0x9833('0xc')](function(_0xe71e0c){if(_0xe71e0c[_0x9833('0xd')][_0x9833('0xe')]>0x0){var _0x46222f=_0xe71e0c[_0x9833('0xd')][0x0]['sys_id'];_0x278fad(_0x46222f);}else{return createRemoteTag(_0x35986b,_0x4f5f10,_0x385636,_0x4f082d)[_0x9833('0xc')](function(_0x14141b){_0x278fad(_0x14141b);});}});});}function assignTagToIncident(_0x4c1fbb,_0x35a2b7,_0x553a52,_0x4d4a12,_0x58e5a8){return new Promise(function(_0x34512f,_0x1ca00d){var _0x244e16={'method':'POST','uri':_0x553a52+'label_entry'+'?'+_0x58e5a8,'body':{'label':_0x4c1fbb,'table':_0x9833('0x3b'),'id_type':_0x9833('0x45'),'table_key':_0x4d4a12[_0x9833('0x46')],'title':_0x9833('0x47')+_0x4d4a12[_0x9833('0x41')],'id_display':_0x4d4a12[_0x9833('0x41')]},'auth':_0x35a2b7,'json':!![]};return rp(_0x244e16)[_0x9833('0xc')](function(_0x20c44c){_0x34512f();})[_0x9833('0x13')](function(){_0x34512f();});});}function manageTags(_0xe2b7ef,_0x1844cd,_0x1e8cfa,_0xbd5cbf,_0x35a135,_0x4ff04b,_0x1a1dc5){return new Promise(function(_0x294c46,_0x5433e9){var _0x338ef4=[];_0x1844cd['forEach'](function(_0x160fb3){_0x338ef4[_0x9833('0x48')](getRemoteTag(_0x160fb3,_0x1e8cfa,_0xbd5cbf,_0x4ff04b,_0x1a1dc5));});return Promise[_0x9833('0x49')](_0x338ef4)[_0x9833('0xc')](function(_0x3c2989){if(_0x3c2989['length']){logger['info']('['+[_0xe2b7ef[_0x9833('0x11')]()]+_0x9833('0x4a'),_0x3c2989);var _0x31f45b=[];_0x3c2989[_0x9833('0x2b')](function(_0x11c585){_0x31f45b[_0x9833('0x48')](assignTagToIncident(_0x11c585,_0x1e8cfa,_0xbd5cbf,_0x35a135,_0x4ff04b));});return Promise[_0x9833('0x49')](_0x31f45b)[_0x9833('0xc')](function(){_0x294c46();})[_0x9833('0x13')](function(){_0x294c46();});}else{_0x294c46();}});});}function getTags(_0x256a55,_0x35945d,_0x172118,_0x1a8f82,_0x3b8333,_0x31c44b){return function(_0x5e5972){return new Promise(function(_0x3e6a43,_0x2ab6d4){var _0x470596=[];var _0x1d2321=_0x1a8f82[_0x9833('0x4b')];if(_0x1d2321&&_0x1d2321[_0x9833('0xe')]>0x0){_0x470596=_[_0x9833('0x4c')](_0x1d2321,_0x9833('0x38'));}if(_0x470596[_0x9833('0xe')]>0x0){return manageTags(_0x256a55,_0x470596,_0x35945d,_0x172118,_0x5e5972,_0x3b8333,_0x31c44b)['then'](function(){_0x3e6a43(_0x5e5972);});}else{_0x3e6a43(_0x5e5972);}});};}function emit(_0x29b068,_0x15319c,_0x56e812){var _0x433d89='%26sysparm_record_target%3Dincident'+_0x9833('0x4d')+_0x9833('0x4e')+_0x9833('0x4f');var _0x4f4ce5={'uri':_0x29b068+_0x9833('0x50')+_0x56e812+_0x433d89};io['to'](util['format']('user:%s',_0x15319c))[_0x9833('0x51')](_0x9833('0x52'),_0x4f4ce5);}exports['cs']=function(_0x17dcaa,_0x2e107,_0x42d6fb,_0x2ea91b,_0x23de96,_0x2aa460,_0x431cd8,_0x4bd562){var _0x36683f={};var _0xa43de8={'user':_0x2aa460[_0x9833('0x53')],'pass':_0x2aa460[_0x9833('0x54')]};var _0x13edbb='sysparm_limit=1';var _0x3e3554=_0x9833('0x55');_0x2aa460[_0x9833('0x56')]=intUtil[_0x9833('0x57')](_0x2aa460[_0x9833('0x56')]);_0x2aa460['serverUrl']=intUtil[_0x9833('0x57')](_0x2aa460[_0x9833('0x58')]);var _0x4ee09b=util['format'](_0x9833('0x59'),_0x2aa460[_0x9833('0x56')]);_0x36683f[_0x9833('0x18')]=!_[_0x9833('0x5a')](_0x2ea91b)?_0x2ea91b[_0x9833('0x5b')]:null;_0x36683f[_0x9833('0x1f')]=_0x2aa460[_0x9833('0x5b')];_0x36683f[_0x9833('0x25')]=_0x4bd562[_0x9833('0x31')]()==='outbound'?_0x2e107[_0x9833('0x5c')]:_0x2e107['calleridnum'];_0x36683f[_0x9833('0x5d')]=_0x4bd562==='queue'||_0x4bd562===_0x9833('0x5e')?'queue':'outbound';var _0x2f893b=util[_0x9833('0x5f')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2aa460[_0x9833('0x58')],_0x2e107['uniqueid'],md5(_0x2e107[_0x9833('0x60')]));if(_0x23de96&&_0x23de96[_0x9833('0x61')]){logger[_0x9833('0x15')](_0x9833('0x62'),_0x9833('0x63'));_0x2e107['recordingURL']=_0x2f893b;}else if(_0x431cd8&&_0x431cd8['recordingFormat']&&_0x431cd8[_0x9833('0x64')]!==_0x9833('0x65')){logger[_0x9833('0x15')](_0x9833('0x66'),_0x9833('0x63'));_0x2e107['recordingURL']=_0x2f893b;}else{_0x2e107['recordingURL']='';}return getAdminUser(_0x4bd562,_0xa43de8,_0x36683f,_0x4ee09b,_0x3e3554,_0x13edbb)[_0x9833('0xc')](getUser(_0x4bd562,_0xa43de8,_0x4ee09b,_0x3e3554,_0x13edbb))[_0x9833('0xc')](getEndUser(_0x4bd562,_0xa43de8,_0x4ee09b,_0x3e3554,_0x13edbb))[_0x9833('0xc')](getTicket(_0x4bd562,_0xa43de8,_0x4ee09b,_0x42d6fb,_0x2e107,_0x3e3554))[_0x9833('0xc')](function(_0x2d4c3f){logger[_0x9833('0x15')](util[_0x9833('0x5f')](_0x9833('0x67'),_0x2d4c3f[_0x9833('0x46')]));logger[_0x9833('0x15')](util[_0x9833('0x5f')]('call\x20direction:\x20%s',_0x4bd562));if(_0x4bd562!==_0x9833('0x5e')){logger[_0x9833('0x15')]('['+[_0x4bd562[_0x9833('0x11')]()]+']',_0x9833('0x68'));emit(_0x2aa460[_0x9833('0x56')],_0x2ea91b[_0x9833('0x38')],_0x2d4c3f[_0x9833('0x46')]);}})[_0x9833('0x13')](function(_0x229d51){logger['error']('['+[_0x4bd562[_0x9833('0x11')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x229d51,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 07e3376..5320242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc73=['../../../../config/logger','sugarcrm','redis','defaults','socket.io-emitter','emit','info','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','name','direction','length','forEach','variableName','push','set_entry','JSON','stringify','Calls','format','apiKey','base64','get_server_info','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','value','Agent\x20found!','resolve','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','get_entry_list','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Caller\x20-\x20%s','Enduser\x20created.','map','type','string','nameField','customField','toLowerCase','content','custom_fields','toString','variable','idField','customVariable','Variable','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','stripTrailingSlash','Recording\x20is\x20enabled!','destcalleridnum','Outbound','contacts','charAt','[OUTBOUND]','unmanaged','monitor_format','lastevent','toUpperCase','isNil','The\x20User\x20ID\x20is:','calleridnum','catch','lodash','request-promise','bluebird','md5','util','ioredis','./util'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xbc73,0xe9));var _0x3bc7=function(_0xa9eaa0,_0x4ba2b4){_0xa9eaa0=_0xa9eaa0-0x0;var _0x30897a=_0xbc73[_0xa9eaa0];return _0x30897a;};'use strict';var _=require(_0x3bc7('0x0'));var rp=require(_0x3bc7('0x1'));var BPromise=require(_0x3bc7('0x2'));var md5=require(_0x3bc7('0x3'));var util=require(_0x3bc7('0x4'));var Redis=require(_0x3bc7('0x5'));var intUtil=require(_0x3bc7('0x6'));var config=require('../../../../config/environment');var logger=require(_0x3bc7('0x7'))(_0x3bc7('0x8'));config[_0x3bc7('0x9')]=_[_0x3bc7('0xa')](config[_0x3bc7('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x3bc7('0xb'))(new Redis(config['redis']));var def={'method':'POST','json':!![]};function emit(_0x4ac737,_0x79dd87,_0x432476){io['to'](_0x4ac737)[_0x3bc7('0xc')](_0x79dd87,_0x432476);}function getTicket(_0x2134e2,_0x53e9bd,_0x172422,_0x597fbb,_0xc8ea6f,_0x1730ad,_0x3a3f07,_0x224e85){logger[_0x3bc7('0xd')]('Creating\x20new\x20ticket...');var _0x4574f6=new Date();var _0x3d7437=[{'name':'name','value':intUtil[_0x3bc7('0xe')](_0x597fbb[_0x3bc7('0xf')],_0xc8ea6f,'\x20')},{'name':_0x3bc7('0x10'),'value':_0x53e9bd['id']},{'name':_0x3bc7('0x11'),'value':_0x53e9bd['id']},{'name':_0x3bc7('0x12'),'value':intUtil[_0x3bc7('0xe')](_0x597fbb[_0x3bc7('0x13')],_0xc8ea6f,'\x0a')},{'name':_0x3bc7('0x14'),'value':_0x4574f6[_0x3bc7('0x15')]()[_0x3bc7('0x16')](0x0,0x13)[_0x3bc7('0x17')]('T','\x20')},{'name':_0x3bc7('0x18'),'value':'0'},{'name':_0x3bc7('0x19'),'value':'15'},{'name':_0x3bc7('0x1a'),'value':_0x172422['id']},{'name':_0x3bc7('0x1b'),'value':_0x3bc7('0x1c')},{'name':'parent_name','value':_0x172422[_0x3bc7('0x1d')]},{'name':_0x3bc7('0x1e'),'value':_0x224e85}];if(_0x1730ad[_0x3bc7('0x1f')]){_[_0x3bc7('0x20')](_0x1730ad,function(_0x4201ac){if(_0xc8ea6f[_0x4201ac[_0x3bc7('0x21')]]){_0x3d7437[_0x3bc7('0x22')]({'name':_0x4201ac['idField'],'value':_0xc8ea6f[_0x4201ac['variableName']]});}});}return request({'form':{'method':_0x3bc7('0x23'),'input_type':'JSON','response_type':_0x3bc7('0x24'),'rest_data':JSON[_0x3bc7('0x25')]({'session':_0x3a3f07['id'],'module_name':_0x3bc7('0x26'),'name_value_list':_0x3d7437})}});}function getAuth(_0x3ce4a0){return util[_0x3bc7('0x27')]('Basic\x20%s',new Buffer(_0x3ce4a0[_0x3bc7('0x28')]+':X')['toString'](_0x3bc7('0x29')));}function getServerInfo(_0x219c83){return request({'form':{'method':_0x3bc7('0x2a'),'input_type':_0x3bc7('0x24'),'response_type':_0x3bc7('0x24'),'rest_data':JSON[_0x3bc7('0x25')]({'session':_0x219c83['id']})}});}function getUser(_0x13b367,_0x446b1f,_0x28649a){if(!_['isNil'](_0x446b1f)){logger[_0x3bc7('0xd')](_0x3bc7('0x2b'),_0x446b1f);return request({'form':{'method':'get_entry_list','input_type':_0x3bc7('0x24'),'response_type':_0x3bc7('0x24'),'rest_data':JSON['stringify']({'session':_0x28649a['id'],'module_name':_0x3bc7('0x2c'),'query':util[_0x3bc7('0x27')](_0x3bc7('0x2d'),_0x446b1f),'order_by':'','offset':'0','select_fields':['id',_0x3bc7('0x1d'),_0x3bc7('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3bc7('0x2f')](function(_0xd3ac67){if(_0xd3ac67[_0x3bc7('0x30')]['length']){var _0xf35c1=_[_0x3bc7('0x31')](_0xd3ac67[_0x3bc7('0x30')],function(_0x47607f){return _0x47607f[_0x3bc7('0x32')][_0x3bc7('0x2e')][_0x3bc7('0x33')]===_0x446b1f;});if(_0xf35c1){logger['info'](_0x3bc7('0x34'));return BPromise[_0x3bc7('0x35')]({'id':_0xf35c1[_0x3bc7('0x32')]['id']['value'],'name':_0xf35c1['name_value_list'][_0x3bc7('0x1d')][_0x3bc7('0x33')]});}}logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x3bc7('0x35')]({'id':_0x28649a[_0x3bc7('0x32')][_0x3bc7('0x36')][_0x3bc7('0x33')],'name':_0x28649a[_0x3bc7('0x32')][_0x3bc7('0x2e')]['value']});});}else{logger[_0x3bc7('0xd')](_0x3bc7('0x37'));return BPromise[_0x3bc7('0x35')]({'id':_0x28649a[_0x3bc7('0x32')][_0x3bc7('0x36')][_0x3bc7('0x33')],'name':_0x28649a[_0x3bc7('0x32')]['user_name'][_0x3bc7('0x33')]});}}function getEndUser(_0x45aa8f,_0x1e879b,_0x43cd89,_0x1a8353){logger[_0x3bc7('0xd')](_0x3bc7('0x38'),_0x43cd89);return request({'form':{'method':_0x3bc7('0x39'),'input_type':_0x3bc7('0x24'),'response_type':_0x3bc7('0x24'),'rest_data':JSON[_0x3bc7('0x25')]({'session':_0x1a8353['id'],'module_name':_0x3bc7('0x1c'),'query':util[_0x3bc7('0x27')](_0x3bc7('0x3a'),_0x43cd89),'order_by':'','offset':'0','select_fields':['id',_0x3bc7('0x1d'),_0x3bc7('0x3b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3bc7('0x2f')](function(_0x1fd201){if(_0x1fd201[_0x3bc7('0x30')][_0x3bc7('0x1f')]){var _0x28400b=_[_0x3bc7('0x31')](_0x1fd201[_0x3bc7('0x30')],function(_0x58134a){return _0x58134a['name_value_list'][_0x3bc7('0x3b')][_0x3bc7('0x33')]===_0x43cd89;});if(_0x28400b){logger[_0x3bc7('0xd')](_0x3bc7('0x3c'));return BPromise[_0x3bc7('0x35')]({'id':_0x28400b[_0x3bc7('0x32')]['id']['value'],'name':_0x28400b[_0x3bc7('0x32')][_0x3bc7('0x1d')]['value'],'phone':_0x28400b[_0x3bc7('0x32')]['phone_home']['value']});}}else{logger[_0x3bc7('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x3bc7('0x23'),'input_type':_0x3bc7('0x24'),'response_type':_0x3bc7('0x24'),'rest_data':JSON[_0x3bc7('0x25')]({'session':_0x1a8353['id'],'module_name':_0x3bc7('0x1c'),'name_value_list':[{'name':'first_name','value':_0x1e879b!=='<unknown>'?_0x1e879b:util[_0x3bc7('0x27')](_0x3bc7('0x3d'),_0x43cd89)},{'name':_0x3bc7('0x3b'),'value':_0x43cd89}]})}})['then'](function(_0x4bf0c5){logger[_0x3bc7('0xd')](_0x3bc7('0x3e'));return BPromise[_0x3bc7('0x35')]({'id':_0x4bf0c5['id'],'name':_0x4bf0c5['entry_list']['first_name'][_0x3bc7('0x33')],'phone':_0x4bf0c5[_0x3bc7('0x30')][_0x3bc7('0x3b')][_0x3bc7('0x33')]});});}});}function request(_0x1a808e){logger['debug']('[HTTP]',JSON[_0x3bc7('0x25')](_0x1a808e));return rp(_['merge'](def,_0x1a808e));}function getTags(_0x490970,_0x1236b5){var _0xe24f8c=[];if(_0x490970&&_0x490970[_0x3bc7('0x1f')]>0x0){_0xe24f8c=_[_0x3bc7('0x3f')](_0x490970,_0x1236b5);}return _0xe24f8c;}function getCustomFields(_0x1155b4,_0xff7f8c){var _0x58f45c=[];var _0x17be46={'custom_fields':[]};if(_0x1155b4[_0x3bc7('0x1f')]>0x0){_[_0x3bc7('0x20')](_0x1155b4,function(_0x5a66a8){if(_0x5a66a8[_0x3bc7('0x40')]===_0x3bc7('0x41')&&_0x5a66a8[_0x3bc7('0x42')]&&!_0x5a66a8[_0x3bc7('0x43')]){_0x17be46[_0x5a66a8[_0x3bc7('0x42')][_0x3bc7('0x44')]()]=_0x5a66a8[_0x3bc7('0x45')]['toString']();}else if(_0x5a66a8[_0x3bc7('0x40')]===_0x3bc7('0x41')&&_0x5a66a8['idField']&&_0x5a66a8[_0x3bc7('0x43')]){_0x17be46[_0x3bc7('0x46')][_0x3bc7('0x22')]({'id':_0x5a66a8['idField'],'value':_0x5a66a8[_0x3bc7('0x45')][_0x3bc7('0x47')]()});}else if(_0x5a66a8[_0x3bc7('0x40')]===_0x3bc7('0x48')&&_0x5a66a8[_0x3bc7('0x21')]&&_0x5a66a8['idField']&&_0x5a66a8[_0x3bc7('0x43')]){_0xff7f8c[_0x5a66a8[_0x3bc7('0x21')]]&&_0x17be46['custom_fields'][_0x3bc7('0x22')]({'id':_0x5a66a8[_0x3bc7('0x49')],'value':_0xff7f8c[_0x5a66a8[_0x3bc7('0x21')]][_0x3bc7('0x47')]()});}else if(_0x5a66a8[_0x3bc7('0x40')]===_0x3bc7('0x4a')&&_0x5a66a8[_0x3bc7('0x4b')]&&_0x5a66a8[_0x3bc7('0x4b')]['name']&&_0x5a66a8['idField']&&_0x5a66a8[_0x3bc7('0x43')]){_0xff7f8c[_0x5a66a8['Variable']['name'][_0x3bc7('0x44')]()]&&_0x17be46[_0x3bc7('0x46')][_0x3bc7('0x22')]({'id':_0x5a66a8[_0x3bc7('0x49')],'value':_0xff7f8c[_0x5a66a8[_0x3bc7('0x4b')][_0x3bc7('0x1d')]['toLowerCase']()][_0x3bc7('0x47')]()});}});}return _0x17be46;}function getConnection(_0x167ad0){return request({'method':'POST','form':{'method':'login','input_type':_0x3bc7('0x24'),'response_type':_0x3bc7('0x24'),'rest_data':JSON[_0x3bc7('0x25')]({'user_auth':{'user_name':_0x167ad0[_0x3bc7('0x4c')],'password':_0x167ad0[_0x3bc7('0x4d')],'encryption':_0x3bc7('0x4e')},'application':_0x3bc7('0x4f')})}})['then'](function(_0xfd8d35){var _0x2a4ee0=_0xfd8d35;if(_0x2a4ee0['id']){def[_0x3bc7('0x50')]=_0x2a4ee0['id'];return BPromise[_0x3bc7('0x35')](_0x2a4ee0);}else{throw new Error(util['format'](_0x3bc7('0x51'),_0x167ad0['id']));}});}function setRelationship(_0x1ed4da,_0x23afd3,_0xb110e3,_0x13479a){return request({'form':{'method':'set_relationship','input_type':_0x3bc7('0x24'),'response_type':'JSON','rest_data':JSON[_0x3bc7('0x25')]({'session':_0x1ed4da['id'],'module_name':'Calls','module_id':_0xb110e3['id'],'link_field_name':_0x13479a,'related_ids':[_0x23afd3['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x5d14b8,_0x65eae9,_0x480a01,_0x1dfeda,_0x4b5164,_0x2d826d){var _0x25035b,_0x21afad,_0x26b9ee,_0x334fed;_0x2d826d['remoteUri']=intUtil['stripTrailingSlash'](_0x2d826d[_0x3bc7('0x52')]);_0x2d826d['serverUrl']=intUtil['stripTrailingSlash'](_0x2d826d[_0x3bc7('0x53')]);def[_0x3bc7('0x54')]=util[_0x3bc7('0x27')](_0x3bc7('0x55'),_0x2d826d[_0x3bc7('0x52')]);if(_0x4b5164&&_0x4b5164['monitor_format']){logger[_0x3bc7('0xd')](_0x3bc7('0x56'),'Recording\x20is\x20enabled!');_0x65eae9['recordingURL']=util[_0x3bc7('0x27')](_0x3bc7('0x57'),_0x2d826d[_0x3bc7('0x53')],_0x65eae9[_0x3bc7('0x58')],md5(_0x65eae9[_0x3bc7('0x58')]));}else{_0x65eae9[_0x3bc7('0x59')]='';}return getConnection(_0x2d826d)['then'](function(_0x424aa7){_0x334fed=_0x424aa7;return getUser(_0x2d826d,_0x1dfeda[_0x3bc7('0x1d')],_0x334fed);})[_0x3bc7('0x2f')](function(_0xbf16fb){_0x25035b=_0xbf16fb;logger[_0x3bc7('0xd')]('The\x20User\x20ID\x20is:',_0x25035b['id']);return getEndUser(_0x2d826d,_0x65eae9[_0x3bc7('0x5a')],_0x65eae9['calleridnum'],_0x334fed);})[_0x3bc7('0x2f')](function(_0x33f5be){_0x21afad=_0x33f5be;logger[_0x3bc7('0xd')](_0x3bc7('0x5b'),_0x21afad['id']);return getTicket(_0x2d826d,_0x25035b,_0x21afad,_0x480a01,_0x65eae9,_0x480a01[_0x3bc7('0x5c')],_0x334fed,_0x3bc7('0x5d'));})['then'](function(_0x49757b){_0x26b9ee=_0x49757b;logger[_0x3bc7('0xd')](_0x3bc7('0x5e'));logger['info'](_0x3bc7('0x5f'),_0x26b9ee['id']);return setRelationship(_0x334fed,_0x25035b,_0x26b9ee,_0x3bc7('0x60'));})['then'](function(){return setRelationship(_0x334fed,_0x21afad,_0x26b9ee,'contacts');})[_0x3bc7('0x2f')](function(){return getServerInfo(_0x334fed);})[_0x3bc7('0x2f')](function(_0x53eb4e){var _0xa667ab=parseInt(_0x53eb4e[_0x3bc7('0x61')]['charAt'](0x0));var _0x38a742=util[_0x3bc7('0x27')](_0x3bc7('0x62'),_0x2d826d[_0x3bc7('0x52')],_0x26b9ee['id']);if(_0xa667ab>0x6){_0x38a742=util['format'](_0x3bc7('0x63'),_0x2d826d['remoteUri'],_0x26b9ee['id']);}logger['info'](_0x3bc7('0x56'),_0x3bc7('0x64'));emit(util[_0x3bc7('0x27')](_0x3bc7('0x65'),_0x1dfeda['name']),_0x3bc7('0x66'),{'uri':_0x38a742});})['catch'](function(_0x1a9b68){logger[_0x3bc7('0x67')](_0x3bc7('0x56'),JSON['stringify'](_0x1a9b68));});};exports[_0x3bc7('0x68')]=function(_0x3697b9,_0x1786d4,_0x55d9aa,_0x5e722a,_0x27a8f8,_0x366e6d,_0x618e1f){var _0xcae909,_0x3ec050,_0x5d9531,_0x44936e;_0x366e6d[_0x3bc7('0x52')]=intUtil[_0x3bc7('0x69')](_0x366e6d[_0x3bc7('0x52')]);_0x366e6d[_0x3bc7('0x53')]=intUtil[_0x3bc7('0x69')](_0x366e6d[_0x3bc7('0x53')]);def['uri']=util['format']('%s/service/v4_1/rest.php',_0x366e6d[_0x3bc7('0x52')]);if(_0x618e1f&&_0x618e1f['recordingFormat']&&_0x618e1f['recordingFormat']!=='none'){logger[_0x3bc7('0xd')]('[OUTBOUND]',_0x3bc7('0x6a'));_0x1786d4['recordingURL']=util[_0x3bc7('0x27')](_0x3bc7('0x57'),_0x366e6d[_0x3bc7('0x53')],_0x1786d4[_0x3bc7('0x58')],md5(_0x1786d4[_0x3bc7('0x58')]));}return getConnection(_0x366e6d)[_0x3bc7('0x2f')](function(_0x93b9e8){_0x44936e=_0x93b9e8;return getUser(_0x366e6d,_0x5e722a[_0x3bc7('0x1d')],_0x44936e);})[_0x3bc7('0x2f')](function(_0x2078a2){_0xcae909=_0x2078a2;logger['info']('The\x20User\x20ID\x20is:',_0xcae909['id']);return getEndUser(_0x366e6d,_0x1786d4['destcalleridname'],_0x1786d4[_0x3bc7('0x6b')],_0x44936e);})['then'](function(_0x1d0517){_0x3ec050=_0x1d0517;logger[_0x3bc7('0xd')](_0x3bc7('0x5b'),_0x3ec050['id']);return getTicket(_0x366e6d,_0xcae909,_0x3ec050,_0x55d9aa,_0x1786d4,_0x55d9aa[_0x3bc7('0x5c')],_0x44936e,_0x3bc7('0x6c'));})[_0x3bc7('0x2f')](function(_0x1aed8c){_0x5d9531=_0x1aed8c;logger[_0x3bc7('0xd')]('Ticket\x20created!');logger[_0x3bc7('0xd')](_0x3bc7('0x5f'),_0x5d9531['id']);return setRelationship(_0x44936e,_0xcae909,_0x5d9531,_0x3bc7('0x60'));})[_0x3bc7('0x2f')](function(){return setRelationship(_0x44936e,_0x3ec050,_0x5d9531,_0x3bc7('0x6d'));})[_0x3bc7('0x2f')](function(){return getServerInfo(_0x44936e);})[_0x3bc7('0x2f')](function(_0x507a89){var _0x2af62e=parseInt(_0x507a89[_0x3bc7('0x61')][_0x3bc7('0x6e')](0x0));var _0x1c3db1=util['format'](_0x3bc7('0x62'),_0x366e6d[_0x3bc7('0x52')],_0x5d9531['id']);if(_0x2af62e>0x6){_0x1c3db1=util[_0x3bc7('0x27')](_0x3bc7('0x63'),_0x366e6d['remoteUri'],_0x5d9531['id']);}logger[_0x3bc7('0xd')](_0x3bc7('0x6f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x3bc7('0x65'),_0x5e722a['name']),_0x3bc7('0x66'),{'uri':_0x1c3db1});})['catch'](function(_0x199fb){logger[_0x3bc7('0x67')](_0x3bc7('0x6f'),JSON[_0x3bc7('0x25')](_0x199fb));});};exports[_0x3bc7('0x70')]=function(_0x709585,_0x423e67,_0x4746c2,_0x277435,_0x3c0c99,_0x147a77){var _0x351b60,_0x3aad9f,_0x5e8c58,_0x449700;_0x147a77[_0x3bc7('0x52')]=intUtil[_0x3bc7('0x69')](_0x147a77[_0x3bc7('0x52')]);_0x147a77[_0x3bc7('0x53')]=intUtil[_0x3bc7('0x69')](_0x147a77[_0x3bc7('0x53')]);def['uri']=util[_0x3bc7('0x27')](_0x3bc7('0x55'),_0x147a77[_0x3bc7('0x52')]);if(_0x3c0c99&&_0x3c0c99[_0x3bc7('0x71')]){logger[_0x3bc7('0xd')]('['+_0x423e67[_0x3bc7('0x72')][_0x3bc7('0x73')]()+']',_0x3bc7('0x6a'));_0x423e67[_0x3bc7('0x59')]=util['format'](_0x3bc7('0x57'),_0x147a77[_0x3bc7('0x53')],_0x423e67[_0x3bc7('0x58')],md5(_0x423e67['uniqueid']));}else{_0x423e67[_0x3bc7('0x59')]='';}return getConnection(_0x147a77)[_0x3bc7('0x2f')](function(_0x4d7d5d){_0x449700=_0x4d7d5d;if(!_[_0x3bc7('0x74')](_0x277435)){return getUser(_0x147a77,_0x277435['name'],_0x449700);}else{return getUser(_0x147a77,null,_0x449700);}})[_0x3bc7('0x2f')](function(_0x23c14c){_0x351b60=_0x23c14c;logger['info'](_0x3bc7('0x75'),_0x351b60['id']);return getEndUser(_0x147a77,_0x423e67[_0x3bc7('0x5a')],_0x423e67[_0x3bc7('0x76')],_0x449700);})[_0x3bc7('0x2f')](function(_0x2ccf81){_0x3aad9f=_0x2ccf81;logger['info']('The\x20Enduser\x20ID\x20is:',_0x3aad9f['id']);return getTicket(_0x147a77,_0x351b60,_0x3aad9f,_0x4746c2,_0x423e67,_0x4746c2[_0x3bc7('0x5c')],_0x449700,_0x3bc7('0x5d'));})[_0x3bc7('0x2f')](function(_0x5c7116){_0x5e8c58=_0x5c7116;logger['info']('Ticket\x20created!');logger['info'](_0x3bc7('0x5f'),_0x5e8c58['id']);return setRelationship(_0x449700,_0x351b60,_0x5e8c58,_0x3bc7('0x60'));})[_0x3bc7('0x2f')](function(){return setRelationship(_0x449700,_0x3aad9f,_0x5e8c58,_0x3bc7('0x6d'));})[_0x3bc7('0x2f')](function(){return getServerInfo(_0x449700);})[_0x3bc7('0x77')](function(_0x430e2b){logger[_0x3bc7('0x67')]('['+_0x423e67[_0x3bc7('0x72')][_0x3bc7('0x73')]()+']',JSON[_0x3bc7('0x25')](_0x430e2b));});};
\ No newline at end of file
+var _0x4652=['Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','map','string','customField','nameField','toLowerCase','toString','type','custom_fields','push','content','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','contacts','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','users','charAt','unmanaged','lastevent','toUpperCase','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','POST','emit','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','length','forEach','variableName','idField','JSON','stringify','Calls','apiKey','get_server_info','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','value','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0x254076,_0x5e7b8d){var _0x21a93e=function(_0x26aa78){while(--_0x26aa78){_0x254076['push'](_0x254076['shift']());}};_0x21a93e(++_0x5e7b8d);}(_0x4652,0x1b3));var _0x2465=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4652[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var rp=require(_0x2465('0x0'));var BPromise=require(_0x2465('0x1'));var md5=require(_0x2465('0x2'));var util=require('util');var Redis=require(_0x2465('0x3'));var intUtil=require(_0x2465('0x4'));var config=require(_0x2465('0x5'));var logger=require(_0x2465('0x6'))(_0x2465('0x7'));config[_0x2465('0x8')]=_[_0x2465('0x9')](config['redis'],{'host':_0x2465('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2465('0x8')]));var def={'method':_0x2465('0xb'),'json':!![]};function emit(_0x47a6e5,_0x8daba1,_0x5d1e41){io['to'](_0x47a6e5)[_0x2465('0xc')](_0x8daba1,_0x5d1e41);}function getTicket(_0x42cccf,_0xfd5605,_0x2fcde9,_0x3c4ce6,_0x197686,_0x3c277f,_0x5ece4e,_0x8934b){logger['info'](_0x2465('0xd'));var _0x2636bf=new Date();var _0x31aa66=[{'name':_0x2465('0xe'),'value':intUtil[_0x2465('0xf')](_0x3c4ce6[_0x2465('0x10')],_0x197686,'\x20')},{'name':'assigned_user_id','value':_0xfd5605['id']},{'name':_0x2465('0x11'),'value':_0xfd5605['id']},{'name':_0x2465('0x12'),'value':intUtil[_0x2465('0xf')](_0x3c4ce6[_0x2465('0x13')],_0x197686,'\x0a')},{'name':_0x2465('0x14'),'value':_0x2636bf[_0x2465('0x15')]()[_0x2465('0x16')](0x0,0x13)[_0x2465('0x17')]('T','\x20')},{'name':_0x2465('0x18'),'value':'0'},{'name':_0x2465('0x19'),'value':'15'},{'name':_0x2465('0x1a'),'value':_0x2fcde9['id']},{'name':_0x2465('0x1b'),'value':'Contacts'},{'name':_0x2465('0x1c'),'value':_0x2fcde9[_0x2465('0xe')]},{'name':_0x2465('0x1d'),'value':_0x8934b}];if(_0x3c277f[_0x2465('0x1e')]){_[_0x2465('0x1f')](_0x3c277f,function(_0x473132){if(_0x197686[_0x473132[_0x2465('0x20')]]){_0x31aa66['push']({'name':_0x473132[_0x2465('0x21')],'value':_0x197686[_0x473132[_0x2465('0x20')]]});}});}return request({'form':{'method':'set_entry','input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x5ece4e['id'],'module_name':_0x2465('0x24'),'name_value_list':_0x31aa66})}});}function getAuth(_0xf4ea55){return util['format']('Basic\x20%s',new Buffer(_0xf4ea55[_0x2465('0x25')]+':X')['toString']('base64'));}function getServerInfo(_0xa55dda){return request({'form':{'method':_0x2465('0x26'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0xa55dda['id']})}});}function getUser(_0x53afd4,_0x34df08,_0x157435){if(!_[_0x2465('0x27')](_0x34df08)){logger[_0x2465('0x28')](_0x2465('0x29'),_0x34df08);return request({'form':{'method':_0x2465('0x2a'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x157435['id'],'module_name':'Employees','query':util[_0x2465('0x2b')](_0x2465('0x2c'),_0x34df08),'order_by':'','offset':'0','select_fields':['id',_0x2465('0xe'),_0x2465('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2465('0x2e')](function(_0x3f2a57){if(_0x3f2a57[_0x2465('0x2f')][_0x2465('0x1e')]){var _0x3c7c8f=_[_0x2465('0x30')](_0x3f2a57[_0x2465('0x2f')],function(_0x1bf73f){return _0x1bf73f['name_value_list']['user_name'][_0x2465('0x31')]===_0x34df08;});if(_0x3c7c8f){logger['info']('Agent\x20found!');return BPromise[_0x2465('0x32')]({'id':_0x3c7c8f[_0x2465('0x33')]['id']['value'],'name':_0x3c7c8f['name_value_list'][_0x2465('0xe')]['value']});}}logger[_0x2465('0x28')](_0x2465('0x34'));return BPromise[_0x2465('0x32')]({'id':_0x157435['name_value_list']['user_id']['value'],'name':_0x157435[_0x2465('0x33')][_0x2465('0x2d')][_0x2465('0x31')]});});}else{logger[_0x2465('0x28')](_0x2465('0x35'));return BPromise['resolve']({'id':_0x157435[_0x2465('0x33')]['user_id']['value'],'name':_0x157435[_0x2465('0x33')][_0x2465('0x2d')][_0x2465('0x31')]});}}function getEndUser(_0x28a256,_0x21107b,_0x55a2b2,_0x2ae854){logger[_0x2465('0x28')](_0x2465('0x36'),_0x55a2b2);return request({'form':{'method':_0x2465('0x2a'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x2ae854['id'],'module_name':_0x2465('0x37'),'query':util[_0x2465('0x2b')](_0x2465('0x38'),_0x55a2b2),'order_by':'','offset':'0','select_fields':['id',_0x2465('0xe'),_0x2465('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2465('0x2e')](function(_0x59f84c){if(_0x59f84c[_0x2465('0x2f')][_0x2465('0x1e')]){var _0xd86762=_[_0x2465('0x30')](_0x59f84c[_0x2465('0x2f')],function(_0x364bc4){return _0x364bc4[_0x2465('0x33')]['phone_home'][_0x2465('0x31')]===_0x55a2b2;});if(_0xd86762){logger[_0x2465('0x28')]('Enduser\x20found!');return BPromise[_0x2465('0x32')]({'id':_0xd86762[_0x2465('0x33')]['id'][_0x2465('0x31')],'name':_0xd86762[_0x2465('0x33')]['name']['value'],'phone':_0xd86762[_0x2465('0x33')][_0x2465('0x39')][_0x2465('0x31')]});}}else{logger[_0x2465('0x28')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x2ae854['id'],'module_name':_0x2465('0x37'),'name_value_list':[{'name':_0x2465('0x3a'),'value':_0x21107b!==_0x2465('0x3b')?_0x21107b:util[_0x2465('0x2b')](_0x2465('0x3c'),_0x55a2b2)},{'name':_0x2465('0x39'),'value':_0x55a2b2}]})}})[_0x2465('0x2e')](function(_0x3a9872){logger[_0x2465('0x28')](_0x2465('0x3d'));return BPromise['resolve']({'id':_0x3a9872['id'],'name':_0x3a9872[_0x2465('0x2f')][_0x2465('0x3a')][_0x2465('0x31')],'phone':_0x3a9872['entry_list'][_0x2465('0x39')][_0x2465('0x31')]});});}});}function request(_0x5462e4){logger[_0x2465('0x3e')](_0x2465('0x3f'),JSON[_0x2465('0x23')](_0x5462e4));return rp(_['merge'](def,_0x5462e4));}function getTags(_0x5f5a67,_0x9bc913){var _0x43d988=[];if(_0x5f5a67&&_0x5f5a67[_0x2465('0x1e')]>0x0){_0x43d988=_[_0x2465('0x40')](_0x5f5a67,_0x9bc913);}return _0x43d988;}function getCustomFields(_0x191cf8,_0xc9d5ba){var _0x55100b=[];var _0x1f6d98={'custom_fields':[]};if(_0x191cf8[_0x2465('0x1e')]>0x0){_[_0x2465('0x1f')](_0x191cf8,function(_0x2d3bd4){if(_0x2d3bd4['type']===_0x2465('0x41')&&_0x2d3bd4['nameField']&&!_0x2d3bd4[_0x2465('0x42')]){_0x1f6d98[_0x2d3bd4[_0x2465('0x43')][_0x2465('0x44')]()]=_0x2d3bd4['content'][_0x2465('0x45')]();}else if(_0x2d3bd4[_0x2465('0x46')]===_0x2465('0x41')&&_0x2d3bd4[_0x2465('0x21')]&&_0x2d3bd4[_0x2465('0x42')]){_0x1f6d98[_0x2465('0x47')][_0x2465('0x48')]({'id':_0x2d3bd4[_0x2465('0x21')],'value':_0x2d3bd4[_0x2465('0x49')][_0x2465('0x45')]()});}else if(_0x2d3bd4[_0x2465('0x46')]==='variable'&&_0x2d3bd4[_0x2465('0x20')]&&_0x2d3bd4[_0x2465('0x21')]&&_0x2d3bd4[_0x2465('0x42')]){_0xc9d5ba[_0x2d3bd4[_0x2465('0x20')]]&&_0x1f6d98[_0x2465('0x47')][_0x2465('0x48')]({'id':_0x2d3bd4[_0x2465('0x21')],'value':_0xc9d5ba[_0x2d3bd4[_0x2465('0x20')]][_0x2465('0x45')]()});}else if(_0x2d3bd4[_0x2465('0x46')]===_0x2465('0x4a')&&_0x2d3bd4[_0x2465('0x4b')]&&_0x2d3bd4[_0x2465('0x4b')][_0x2465('0xe')]&&_0x2d3bd4[_0x2465('0x21')]&&_0x2d3bd4[_0x2465('0x42')]){_0xc9d5ba[_0x2d3bd4['Variable']['name'][_0x2465('0x44')]()]&&_0x1f6d98[_0x2465('0x47')]['push']({'id':_0x2d3bd4[_0x2465('0x21')],'value':_0xc9d5ba[_0x2d3bd4[_0x2465('0x4b')][_0x2465('0xe')][_0x2465('0x44')]()][_0x2465('0x45')]()});}});}return _0x1f6d98;}function getConnection(_0x544846){return request({'method':_0x2465('0xb'),'form':{'method':_0x2465('0x4c'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x544846[_0x2465('0x4d')],'password':_0x544846[_0x2465('0x4e')],'encryption':_0x2465('0x4f')},'application':_0x2465('0x50')})}})['then'](function(_0x1ab9a8){var _0x598550=_0x1ab9a8;if(_0x598550['id']){def[_0x2465('0x51')]=_0x598550['id'];return BPromise[_0x2465('0x32')](_0x598550);}else{throw new Error(util[_0x2465('0x2b')](_0x2465('0x52'),_0x544846['id']));}});}function setRelationship(_0x56b1ef,_0x2a8995,_0x15365d,_0x91e331){return request({'form':{'method':_0x2465('0x53'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x56b1ef['id'],'module_name':'Calls','module_id':_0x15365d['id'],'link_field_name':_0x91e331,'related_ids':[_0x2a8995['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x5adadd,_0x38a7c9,_0x4f1646,_0x4f5123,_0x5d98d3,_0x107c79){var _0xc5305e,_0x2c3335,_0x218b2b,_0x5c2996;_0x107c79[_0x2465('0x54')]=intUtil[_0x2465('0x55')](_0x107c79[_0x2465('0x54')]);_0x107c79[_0x2465('0x56')]=intUtil[_0x2465('0x55')](_0x107c79[_0x2465('0x56')]);def[_0x2465('0x57')]=util['format'](_0x2465('0x58'),_0x107c79[_0x2465('0x54')]);if(_0x5d98d3&&_0x5d98d3[_0x2465('0x59')]){logger[_0x2465('0x28')](_0x2465('0x5a'),'Recording\x20is\x20enabled!');_0x38a7c9[_0x2465('0x5b')]=util[_0x2465('0x2b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x107c79[_0x2465('0x56')],_0x38a7c9['uniqueid'],md5(_0x38a7c9[_0x2465('0x5c')]));}else{_0x38a7c9[_0x2465('0x5b')]='';}return getConnection(_0x107c79)['then'](function(_0x3ea7a3){_0x5c2996=_0x3ea7a3;return getUser(_0x107c79,_0x4f5123[_0x2465('0xe')],_0x5c2996);})[_0x2465('0x2e')](function(_0x34917d){_0xc5305e=_0x34917d;logger[_0x2465('0x28')](_0x2465('0x5d'),_0xc5305e['id']);return getEndUser(_0x107c79,_0x38a7c9[_0x2465('0x5e')],_0x38a7c9[_0x2465('0x5f')],_0x5c2996);})[_0x2465('0x2e')](function(_0x1b072e){_0x2c3335=_0x1b072e;logger[_0x2465('0x28')](_0x2465('0x60'),_0x2c3335['id']);return getTicket(_0x107c79,_0xc5305e,_0x2c3335,_0x4f1646,_0x38a7c9,_0x4f1646[_0x2465('0x61')],_0x5c2996,_0x2465('0x62'));})['then'](function(_0x8e467){_0x218b2b=_0x8e467;logger[_0x2465('0x28')](_0x2465('0x63'));logger[_0x2465('0x28')](_0x2465('0x64'),_0x218b2b['id']);return setRelationship(_0x5c2996,_0xc5305e,_0x218b2b,'users');})['then'](function(){return setRelationship(_0x5c2996,_0x2c3335,_0x218b2b,_0x2465('0x65'));})[_0x2465('0x2e')](function(){return getServerInfo(_0x5c2996);})['then'](function(_0x452c0a){var _0x44e3d9=parseInt(_0x452c0a[_0x2465('0x66')]['charAt'](0x0));var _0x2de3f6=util[_0x2465('0x2b')](_0x2465('0x67'),_0x107c79[_0x2465('0x54')],_0x218b2b['id']);if(_0x44e3d9>0x6){_0x2de3f6=util[_0x2465('0x2b')](_0x2465('0x68'),_0x107c79[_0x2465('0x54')],_0x218b2b['id']);}logger[_0x2465('0x28')](_0x2465('0x5a'),_0x2465('0x69'));emit(util[_0x2465('0x2b')](_0x2465('0x6a'),_0x4f5123[_0x2465('0xe')]),_0x2465('0x6b'),{'uri':_0x2de3f6});})[_0x2465('0x6c')](function(_0x528750){logger[_0x2465('0x6d')](_0x2465('0x5a'),JSON[_0x2465('0x23')](_0x528750));});};exports[_0x2465('0x6e')]=function(_0x1ae68a,_0x25feca,_0x52625a,_0x4c8003,_0x76965f,_0x2d378e,_0x3c534f){var _0x15ddc2,_0x21aac8,_0x47b4dc,_0xa246c3;_0x2d378e[_0x2465('0x54')]=intUtil['stripTrailingSlash'](_0x2d378e[_0x2465('0x54')]);_0x2d378e['serverUrl']=intUtil[_0x2465('0x55')](_0x2d378e[_0x2465('0x56')]);def[_0x2465('0x57')]=util['format'](_0x2465('0x58'),_0x2d378e[_0x2465('0x54')]);if(_0x3c534f&&_0x3c534f['recordingFormat']&&_0x3c534f[_0x2465('0x6f')]!=='none'){logger[_0x2465('0x28')](_0x2465('0x70'),_0x2465('0x71'));_0x25feca[_0x2465('0x5b')]=util['format'](_0x2465('0x72'),_0x2d378e['serverUrl'],_0x25feca[_0x2465('0x5c')],md5(_0x25feca[_0x2465('0x5c')]));}return getConnection(_0x2d378e)['then'](function(_0x481a56){_0xa246c3=_0x481a56;return getUser(_0x2d378e,_0x4c8003['name'],_0xa246c3);})['then'](function(_0x4abbcf){_0x15ddc2=_0x4abbcf;logger[_0x2465('0x28')](_0x2465('0x5d'),_0x15ddc2['id']);return getEndUser(_0x2d378e,_0x25feca[_0x2465('0x73')],_0x25feca[_0x2465('0x74')],_0xa246c3);})[_0x2465('0x2e')](function(_0x3d57e2){_0x21aac8=_0x3d57e2;logger['info'](_0x2465('0x60'),_0x21aac8['id']);return getTicket(_0x2d378e,_0x15ddc2,_0x21aac8,_0x52625a,_0x25feca,_0x52625a[_0x2465('0x61')],_0xa246c3,'Outbound');})['then'](function(_0x1673fa){_0x47b4dc=_0x1673fa;logger['info'](_0x2465('0x63'));logger[_0x2465('0x28')](_0x2465('0x64'),_0x47b4dc['id']);return setRelationship(_0xa246c3,_0x15ddc2,_0x47b4dc,_0x2465('0x75'));})[_0x2465('0x2e')](function(){return setRelationship(_0xa246c3,_0x21aac8,_0x47b4dc,'contacts');})[_0x2465('0x2e')](function(){return getServerInfo(_0xa246c3);})[_0x2465('0x2e')](function(_0x277b59){var _0x1c6e10=parseInt(_0x277b59['version'][_0x2465('0x76')](0x0));var _0x3f4ad6=util['format'](_0x2465('0x67'),_0x2d378e[_0x2465('0x54')],_0x47b4dc['id']);if(_0x1c6e10>0x6){_0x3f4ad6=util[_0x2465('0x2b')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2d378e[_0x2465('0x54')],_0x47b4dc['id']);}logger[_0x2465('0x28')](_0x2465('0x70'),_0x2465('0x69'));emit(util[_0x2465('0x2b')](_0x2465('0x6a'),_0x4c8003['name']),'trigger:browser:url',{'uri':_0x3f4ad6});})[_0x2465('0x6c')](function(_0x2f7e4b){logger[_0x2465('0x6d')](_0x2465('0x70'),JSON[_0x2465('0x23')](_0x2f7e4b));});};exports[_0x2465('0x77')]=function(_0x1d967e,_0x180e20,_0xe0ece8,_0xdd5a28,_0x33c07f,_0x383624){var _0x2c9076,_0x4848c8,_0x26a2dd,_0x907da7;_0x383624[_0x2465('0x54')]=intUtil[_0x2465('0x55')](_0x383624['remoteUri']);_0x383624[_0x2465('0x56')]=intUtil[_0x2465('0x55')](_0x383624[_0x2465('0x56')]);def['uri']=util[_0x2465('0x2b')](_0x2465('0x58'),_0x383624[_0x2465('0x54')]);if(_0x33c07f&&_0x33c07f[_0x2465('0x59')]){logger['info']('['+_0x180e20[_0x2465('0x78')][_0x2465('0x79')]()+']',_0x2465('0x71'));_0x180e20[_0x2465('0x5b')]=util[_0x2465('0x2b')](_0x2465('0x72'),_0x383624[_0x2465('0x56')],_0x180e20[_0x2465('0x5c')],md5(_0x180e20[_0x2465('0x5c')]));}else{_0x180e20[_0x2465('0x5b')]='';}return getConnection(_0x383624)['then'](function(_0x4b8319){_0x907da7=_0x4b8319;if(!_[_0x2465('0x27')](_0xdd5a28)){return getUser(_0x383624,_0xdd5a28[_0x2465('0xe')],_0x907da7);}else{return getUser(_0x383624,null,_0x907da7);}})['then'](function(_0x5d12ed){_0x2c9076=_0x5d12ed;logger[_0x2465('0x28')](_0x2465('0x5d'),_0x2c9076['id']);return getEndUser(_0x383624,_0x180e20['calleridname'],_0x180e20[_0x2465('0x5f')],_0x907da7);})['then'](function(_0x49eab6){_0x4848c8=_0x49eab6;logger['info'](_0x2465('0x60'),_0x4848c8['id']);return getTicket(_0x383624,_0x2c9076,_0x4848c8,_0xe0ece8,_0x180e20,_0xe0ece8[_0x2465('0x61')],_0x907da7,_0x2465('0x62'));})['then'](function(_0x5d0164){_0x26a2dd=_0x5d0164;logger['info'](_0x2465('0x63'));logger[_0x2465('0x28')](_0x2465('0x64'),_0x26a2dd['id']);return setRelationship(_0x907da7,_0x2c9076,_0x26a2dd,_0x2465('0x75'));})[_0x2465('0x2e')](function(){return setRelationship(_0x907da7,_0x4848c8,_0x26a2dd,_0x2465('0x65'));})[_0x2465('0x2e')](function(){return getServerInfo(_0x907da7);})[_0x2465('0x6c')](function(_0x5c2f8f){logger[_0x2465('0x6d')]('['+_0x180e20[_0x2465('0x78')][_0x2465('0x79')]()+']',JSON[_0x2465('0x23')](_0x5c2f8f));});};
\ No newline at end of file
index 40d1609..4ee69fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d1=['sortBy','string','content','type','variable','variableName','push','toString','Variable','name','toLowerCase','key','format','%s:\x20%s','keyContent','keyType','customVariable','stripTrailingSlash','slice','substring','lodash','getString','length'];(function(_0x2f6ce3,_0x23cd93){var _0x20cf45=function(_0x1d3462){while(--_0x1d3462){_0x2f6ce3['push'](_0x2f6ce3['shift']());}};_0x20cf45(++_0x23cd93);}(_0x11d1,0x9e));var _0x111d=function(_0xc7983a,_0x219a60){_0xc7983a=_0xc7983a-0x0;var _0x1d696c=_0x11d1[_0xc7983a];return _0x1d696c;};'use strict';var _=require(_0x111d('0x0'));var util=require('util');exports[_0x111d('0x1')]=function(_0x2568e3,_0x26b5bc,_0x338865){var _0x1f4023=[];if(_0x2568e3[_0x111d('0x2')]>0x0){var _0x3cbbd1=_[_0x111d('0x3')](_0x2568e3,['id']);for(var _0x52fa26=0x0;_0x52fa26<_0x3cbbd1[_0x111d('0x2')];_0x52fa26++){var _0x5a08ab=_0x3cbbd1[_0x52fa26];if(_0x5a08ab['type']===_0x111d('0x4')){_0x1f4023['push'](_0x5a08ab[_0x111d('0x5')]);}else if(_0x5a08ab[_0x111d('0x6')]===_0x111d('0x7')&&_0x5a08ab['variableName']){_0x26b5bc[_0x5a08ab[_0x111d('0x8')]]&&_0x1f4023[_0x111d('0x9')](_0x26b5bc[_0x5a08ab[_0x111d('0x8')]][_0x111d('0xa')]());}else if(_0x5a08ab[_0x111d('0x6')]==='customVariable'&&_0x5a08ab[_0x111d('0xb')]&&_0x5a08ab[_0x111d('0xb')][_0x111d('0xc')]){_0x26b5bc[_0x5a08ab[_0x111d('0xb')]['name'][_0x111d('0xd')]()]&&_0x1f4023['push'](_0x26b5bc[_0x5a08ab[_0x111d('0xb')][_0x111d('0xc')][_0x111d('0xd')]()][_0x111d('0xa')]());}else if(_0x5a08ab['type']==='keyValue'){if(_0x5a08ab['keyType']===_0x111d('0x4')&&_0x5a08ab[_0x111d('0xe')]){_0x1f4023[_0x111d('0x9')](util[_0x111d('0xf')](_0x111d('0x10'),_0x5a08ab['key'],_0x5a08ab[_0x111d('0x11')]));}else if(_0x5a08ab[_0x111d('0x12')]===_0x111d('0x7')&&_0x5a08ab[_0x111d('0x8')]&&_0x5a08ab[_0x111d('0xe')]){_0x26b5bc[_0x5a08ab[_0x111d('0x8')]]&&_0x1f4023['push'](util['format'](_0x111d('0x10'),_0x5a08ab['key'],_0x26b5bc[_0x5a08ab[_0x111d('0x8')]]));}else if(_0x5a08ab[_0x111d('0x12')]===_0x111d('0x13')&&_0x5a08ab[_0x111d('0xb')]&&_0x5a08ab[_0x111d('0xb')][_0x111d('0xc')]&&_0x5a08ab[_0x111d('0xe')]){_0x26b5bc[_0x5a08ab[_0x111d('0xb')][_0x111d('0xc')][_0x111d('0xd')]()]&&_0x1f4023[_0x111d('0x9')](util[_0x111d('0xf')](_0x111d('0x10'),_0x5a08ab[_0x111d('0xe')],_0x26b5bc[_0x5a08ab[_0x111d('0xb')][_0x111d('0xc')][_0x111d('0xd')]()]));}}}}return _0x1f4023['join'](_0x338865);};exports[_0x111d('0x14')]=function(_0x3577b1){var _0x2086a4=_0x3577b1[_0x111d('0x15')](-0x1);if(_0x2086a4==='/'){_0x3577b1=_0x3577b1[_0x111d('0x16')](0x0,_0x3577b1['lastIndexOf'](_0x2086a4));}return _0x3577b1;};exports['validateEmail']=function(_0xb1c9d){if(!_['isNil'](_0xb1c9d)&&_0xb1c9d!==''){var _0x555829=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x555829['test'](String(_0xb1c9d)[_0x111d('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0xbb9d=['sortBy','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format','keyContent','%s:\x20%s','join','slice','lastIndexOf','validateEmail','getString','length'];(function(_0x161af5,_0x4c9b21){var _0x15549a=function(_0x452066){while(--_0x452066){_0x161af5['push'](_0x161af5['shift']());}};_0x15549a(++_0x4c9b21);}(_0xbb9d,0x1c6));var _0xdbb9=function(_0x24f44c,_0x1b8c57){_0x24f44c=_0x24f44c-0x0;var _0x393d17=_0xbb9d[_0x24f44c];return _0x393d17;};'use strict';var _=require('lodash');var util=require('util');exports[_0xdbb9('0x0')]=function(_0x2407f9,_0x872e94,_0x35e3c6){var _0x4287b8=[];if(_0x2407f9[_0xdbb9('0x1')]>0x0){var _0x108d00=_[_0xdbb9('0x2')](_0x2407f9,['id']);for(var _0xba14b3=0x0;_0xba14b3<_0x108d00[_0xdbb9('0x1')];_0xba14b3++){var _0x5b1321=_0x108d00[_0xba14b3];if(_0x5b1321[_0xdbb9('0x3')]===_0xdbb9('0x4')){_0x4287b8[_0xdbb9('0x5')](_0x5b1321[_0xdbb9('0x6')]);}else if(_0x5b1321[_0xdbb9('0x3')]===_0xdbb9('0x7')&&_0x5b1321['variableName']){_0x872e94[_0x5b1321[_0xdbb9('0x8')]]&&_0x4287b8[_0xdbb9('0x5')](_0x872e94[_0x5b1321[_0xdbb9('0x8')]][_0xdbb9('0x9')]());}else if(_0x5b1321['type']===_0xdbb9('0xa')&&_0x5b1321['Variable']&&_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')]){_0x872e94[_0x5b1321[_0xdbb9('0xb')]['name'][_0xdbb9('0xd')]()]&&_0x4287b8[_0xdbb9('0x5')](_0x872e94[_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')][_0xdbb9('0xd')]()]['toString']());}else if(_0x5b1321[_0xdbb9('0x3')]===_0xdbb9('0xe')){if(_0x5b1321[_0xdbb9('0xf')]===_0xdbb9('0x4')&&_0x5b1321[_0xdbb9('0x10')]){_0x4287b8[_0xdbb9('0x5')](util[_0xdbb9('0x11')]('%s:\x20%s',_0x5b1321['key'],_0x5b1321[_0xdbb9('0x12')]));}else if(_0x5b1321[_0xdbb9('0xf')]==='variable'&&_0x5b1321[_0xdbb9('0x8')]&&_0x5b1321[_0xdbb9('0x10')]){_0x872e94[_0x5b1321['variableName']]&&_0x4287b8[_0xdbb9('0x5')](util[_0xdbb9('0x11')](_0xdbb9('0x13'),_0x5b1321[_0xdbb9('0x10')],_0x872e94[_0x5b1321[_0xdbb9('0x8')]]));}else if(_0x5b1321[_0xdbb9('0xf')]===_0xdbb9('0xa')&&_0x5b1321[_0xdbb9('0xb')]&&_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')]&&_0x5b1321['key']){_0x872e94[_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')][_0xdbb9('0xd')]()]&&_0x4287b8[_0xdbb9('0x5')](util[_0xdbb9('0x11')]('%s:\x20%s',_0x5b1321[_0xdbb9('0x10')],_0x872e94[_0x5b1321[_0xdbb9('0xb')]['name']['toLowerCase']()]));}}}}return _0x4287b8[_0xdbb9('0x14')](_0x35e3c6);};exports['stripTrailingSlash']=function(_0x48104d){var _0x222467=_0x48104d[_0xdbb9('0x15')](-0x1);if(_0x222467==='/'){_0x48104d=_0x48104d['substring'](0x0,_0x48104d[_0xdbb9('0x16')](_0x222467));}return _0x48104d;};exports[_0xdbb9('0x17')]=function(_0x9c60b6){if(!_['isNil'](_0x9c60b6)&&_0x9c60b6!==''){var _0xadcdac=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0xadcdac['test'](String(_0x9c60b6)[_0xdbb9('0xd')]());}else{return![];}};
\ No newline at end of file
index 065af35..234e807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['info','Creating\x20new\x20ticket...','merge','Normal','Subjects','POST','format','%s/webservice.php','remoteUri','create','username','sessionName','HelpDesk','stringify','success','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','then','Agent\x20found!','resolve','email1','first_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','admin','catch','userId','getUser','Searching\x20end\x20user\x20with\x20phone','GET','query','Enduser\x20found!','firstname','Enduser\x20created.','lastname','phone','accessKey','getchallenge','login','token','getConnection','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','lastevent','toUpperCase','lodash','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','localhost','socket.io-emitter','emit','length','forEach','includes','picklist','idField','content','toString','type','variable','variableName','customVariable','Variable','name','toLowerCase'];(function(_0x3ec1da,_0x1e36f5){var _0x472358=function(_0x1d41b1){while(--_0x1d41b1){_0x3ec1da['push'](_0x3ec1da['shift']());}};_0x472358(++_0x1e36f5);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var rp=require(_0x0d8b('0x1'));var BPromise=require('bluebird');var md5=require('md5');var util=require('util');var Redis=require(_0x0d8b('0x2'));var intUtil=require(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));config['redis']=_['defaults'](config[_0x0d8b('0x7')],{'host':_0x0d8b('0x8'),'port':0x18eb});var io=require(_0x0d8b('0x9'))(new Redis(config['redis']));function emit(_0x413284,_0x284169,_0x58e4e2){io['to'](_0x413284)[_0x0d8b('0xa')](_0x284169,_0x58e4e2);}function getCustomFields(_0x348e65,_0x3b027f){var _0x1f4800={};if(_0x348e65[_0x0d8b('0xb')]>0x0){_[_0x0d8b('0xc')](_0x348e65,function(_0x2c5e9e){if(_[_0x0d8b('0xd')](['string',_0x0d8b('0xe')],_0x2c5e9e['type'])&&_0x2c5e9e[_0x0d8b('0xf')]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x2c5e9e[_0x0d8b('0x10')][_0x0d8b('0x11')]();}else if(_0x2c5e9e[_0x0d8b('0x12')]===_0x0d8b('0x13')&&_0x2c5e9e[_0x0d8b('0x14')]&&_0x2c5e9e[_0x0d8b('0xf')]&&_0x3b027f[_0x2c5e9e[_0x0d8b('0x14')]]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x3b027f[_0x2c5e9e[_0x0d8b('0x14')]][_0x0d8b('0x11')]();}else if(_0x2c5e9e[_0x0d8b('0x12')]===_0x0d8b('0x15')&&_0x2c5e9e['Variable']&&_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')]&&_0x2c5e9e[_0x0d8b('0xf')]&&_0x3b027f[_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')]['toLowerCase']()]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x3b027f[_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')][_0x0d8b('0x18')]()][_0x0d8b('0x11')]();}});}return _0x1f4800;}function createTicket(_0x18dd2d,_0x264b39,_0xa3612a,_0x4a15bf,_0x27512e,_0x23d58f,_0x196c0a){logger[_0x0d8b('0x19')](_0x0d8b('0x1a'));var _0x5b709c=_[_0x0d8b('0x1b')]({'parent_id':'','assigned_user_id':_0x264b39['id'],'ticketpriorities':_0x0d8b('0x1c'),'ticketstatus':'Open','ticket_title':intUtil['getString'](_0x4a15bf[_0x0d8b('0x1d')],_0x27512e,'\x20'),'description':intUtil['getString'](_0x4a15bf['Descriptions'],_0x27512e,'\x0a'),'contact_id':_0xa3612a['id']},getCustomFields(_0x23d58f,_0x27512e));var _0x5527d8={'method':_0x0d8b('0x1e'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x18dd2d[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x22'),'username':_0x18dd2d[_0x0d8b('0x23')],'sessionName':_0x196c0a[_0x0d8b('0x24')],'elementType':_0x0d8b('0x25'),'element':JSON[_0x0d8b('0x26')](_0x5b709c)},'json':!![]};return request(_0x5527d8)['then'](function(_0xe8bbee){if(_0xe8bbee[_0x0d8b('0x27')]){return BPromise['resolve']({'id':_0xe8bbee[_0x0d8b('0x28')]['id']});}else{throw new Error(util['format'](_0x0d8b('0x29'),JSON[_0x0d8b('0x26')](_0xe8bbee[_0x0d8b('0x2a')])));}})['catch'](function(_0x59a905){var _0x28f639=_0x59a905[_0x0d8b('0x2b')]||0x1f4;logger['error'](_0x0d8b('0x2c'),'createTicket',_0x28f639,JSON[_0x0d8b('0x26')](_0x59a905));});}function getUser(_0x4b59e5,_0x97050a,_0x48f24f){if(intUtil[_0x0d8b('0x2d')](_0x97050a)){logger['info'](_0x0d8b('0x2e'),_0x97050a);return request({'method':'GET','uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x4b59e5[_0x0d8b('0x21')]),'qs':{'operation':'query','username':_0x4b59e5['username'],'sessionName':_0x48f24f['sessionName'],'query':util[_0x0d8b('0x1f')]('SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;',_0x97050a)},'json':!![]})[_0x0d8b('0x2f')](function(_0x54f6f3){if(_0x54f6f3['success']&&_0x54f6f3[_0x0d8b('0x28')][_0x0d8b('0xb')]){logger[_0x0d8b('0x19')](_0x0d8b('0x30'));return BPromise[_0x0d8b('0x31')]({'id':_0x54f6f3[_0x0d8b('0x28')][0x0]['id'],'email':_0x54f6f3[_0x0d8b('0x28')][0x0][_0x0d8b('0x32')],'name':_0x54f6f3['result'][0x0][_0x0d8b('0x33')]+'\x20'+_0x54f6f3[_0x0d8b('0x28')]['last_name']});}else{logger[_0x0d8b('0x19')](_0x0d8b('0x34'));return BPromise[_0x0d8b('0x31')]({'id':_0x48f24f['userId'],'email':_0x4b59e5[_0x0d8b('0x23')],'name':_0x0d8b('0x35')});}})[_0x0d8b('0x36')](function(_0x31ceba){var _0x933e01=_0x31ceba['statusCode']||0x1f4;logger[_0x0d8b('0x2a')](_0x0d8b('0x2c'),'getUser',_0x933e01,JSON[_0x0d8b('0x26')](_0x31ceba));});}else{logger[_0x0d8b('0x19')](_0x0d8b('0x34'));return BPromise[_0x0d8b('0x31')]({'id':_0x48f24f[_0x0d8b('0x37')],'email':_0x4b59e5['username'],'name':'admin'})[_0x0d8b('0x36')](function(_0x5c2c04){var _0x531c55=_0x5c2c04[_0x0d8b('0x2b')]||0x1f4;logger[_0x0d8b('0x2a')](_0x0d8b('0x2c'),_0x0d8b('0x38'),_0x531c55,JSON[_0x0d8b('0x26')](_0x5c2c04));});}}function getEndUser(_0x24c789,_0x579324,_0x6e5bab,_0x6a02ad){logger[_0x0d8b('0x19')](_0x0d8b('0x39'),_0x6e5bab);return request({'method':_0x0d8b('0x3a'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x24c789['remoteUri']),'qs':{'operation':_0x0d8b('0x3b'),'username':_0x24c789[_0x0d8b('0x23')],'sessionName':_0x6a02ad[_0x0d8b('0x24')],'query':util[_0x0d8b('0x1f')]('SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;',_0x6e5bab,_0x6e5bab,_0x6e5bab,_0x6e5bab,_0x6e5bab)},'json':!![]})[_0x0d8b('0x2f')](function(_0x4b4bde){if(_0x4b4bde[_0x0d8b('0x27')]&&_0x4b4bde[_0x0d8b('0x28')][_0x0d8b('0xb')]){logger[_0x0d8b('0x19')](_0x0d8b('0x3c'));return BPromise[_0x0d8b('0x31')]({'id':_0x4b4bde[_0x0d8b('0x28')][0x0]['id'],'name':_0x4b4bde[_0x0d8b('0x28')][0x0][_0x0d8b('0x3d')]+'\x20'+_0x4b4bde[_0x0d8b('0x28')][0x0]['lastname'],'phone':_0x6e5bab});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'method':'POST','uri':util['format'](_0x0d8b('0x20'),_0x24c789[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x22'),'sessionName':_0x6a02ad['sessionName'],'elementType':'Contacts','element':JSON[_0x0d8b('0x26')]({'lastname':_0x579324,'phone':_0x6e5bab,'assigned_user_id':'\x20'})},'json':!![]})[_0x0d8b('0x2f')](function(_0x344278){logger['info'](_0x0d8b('0x3e'));return BPromise[_0x0d8b('0x31')]({'id':_0x344278['result']['id'],'name':_0x344278['result'][_0x0d8b('0x3f')],'phone':_0x344278['result'][_0x0d8b('0x40')]});})['catch'](function(_0x53f643){var _0x30ccee=_0x53f643[_0x0d8b('0x2b')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','getEndUser',_0x30ccee,JSON['stringify'](_0x53f643));});}});}function getConnection(_0x374d40){var _0x1e0498=_0x374d40[_0x0d8b('0x23')];var _0x490eda=_0x374d40[_0x0d8b('0x41')];return request({'method':_0x0d8b('0x3a'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x374d40[_0x0d8b('0x21')]),'qs':{'operation':_0x0d8b('0x42'),'username':_0x1e0498},'json':!![]})[_0x0d8b('0x2f')](function(_0x1d5067){if(_0x1d5067[_0x0d8b('0x27')]){return request({'method':_0x0d8b('0x1e'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x374d40[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x43'),'username':_0x1e0498,'accessKey':md5(_0x1d5067[_0x0d8b('0x28')][_0x0d8b('0x44')]+_0x490eda)},'json':!![]});}})[_0x0d8b('0x2f')](function(_0x1e162c){if(_0x1e162c[_0x0d8b('0x27')]){return BPromise['resolve'](_0x1e162c[_0x0d8b('0x28')]);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x374d40['id']));}})[_0x0d8b('0x36')](function(_0x113fb7){var _0x3f943a=_0x113fb7[_0x0d8b('0x2b')]||0x1f4;logger['error'](_0x0d8b('0x2c'),_0x0d8b('0x45'),_0x3f943a,JSON[_0x0d8b('0x26')](_0x113fb7));});}function request(_0x241587){logger[_0x0d8b('0x19')]('[HTTP]',JSON['stringify'](_0x241587));return rp(_0x241587);}exports['queue']=function(_0x573f4f,_0x368ede,_0xf22c3c,_0x5e3bb4,_0x4950a8,_0x44c5c1){var _0x3d3cb6,_0x5c5bd7,_0x5ef6c3,_0x900906;_0x44c5c1[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x44c5c1[_0x0d8b('0x21')]);if(_0x4950a8&&_0x4950a8[_0x0d8b('0x47')]){logger['info'](_0x0d8b('0x48'),_0x0d8b('0x49'));_0x368ede['recordingURL']=util['format'](_0x0d8b('0x4a'),_0x44c5c1[_0x0d8b('0x4b')],_0x368ede['uniqueid'],md5(_0x368ede['uniqueid']));}else{_0x368ede[_0x0d8b('0x4c')]='';}return getConnection(_0x44c5c1)[_0x0d8b('0x2f')](function(_0x377027){_0x900906=_0x377027;return getUser(_0x44c5c1,_0x5e3bb4[_0x0d8b('0x4d')],_0x900906);})['then'](function(_0x356b3d){_0x3d3cb6=_0x356b3d;logger['info']('The\x20User\x20ID\x20is:',_0x3d3cb6['id']);return getEndUser(_0x44c5c1,_0x368ede[_0x0d8b('0x4e')],_0x368ede[_0x0d8b('0x4f')],_0x900906);})['then'](function(_0x4a8f33){_0x5c5bd7=_0x4a8f33;logger[_0x0d8b('0x19')](_0x0d8b('0x50'),_0x5c5bd7['id']);return createTicket(_0x44c5c1,_0x3d3cb6,_0x5c5bd7,_0xf22c3c,_0x368ede,_0xf22c3c[_0x0d8b('0x51')],_0x900906);})[_0x0d8b('0x2f')](function(_0x3afc3a){_0x5ef6c3=_0x3afc3a;logger[_0x0d8b('0x19')](_0x0d8b('0x52'));logger[_0x0d8b('0x19')]('The\x20Ticket\x20ID\x20is:',_0x5ef6c3['id']);var _0x24a859=util[_0x0d8b('0x1f')](_0x0d8b('0x53'),_0x44c5c1[_0x0d8b('0x21')],_[_0x0d8b('0x54')](_0x5ef6c3['id'],'x')[0x1]);logger[_0x0d8b('0x19')](_0x0d8b('0x48'),_0x0d8b('0x55'));emit(util[_0x0d8b('0x1f')]('user:%s',_0x5e3bb4[_0x0d8b('0x17')]),_0x0d8b('0x56'),{'uri':_0x24a859});})[_0x0d8b('0x36')](function(_0x23de9e){logger[_0x0d8b('0x2a')]('[QUEUE]',JSON[_0x0d8b('0x26')](_0x23de9e));});};exports[_0x0d8b('0x57')]=function(_0x181d49,_0x17a87f,_0x1d6cd4,_0x59ada2,_0x4d0e7c,_0x3b1166,_0x291b83){var _0x3e4a41,_0xbbb520,_0x5a70bd,_0x199122;_0x3b1166[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x3b1166['remoteUri']);_0x3b1166[_0x0d8b('0x4b')]=intUtil['stripTrailingSlash'](_0x3b1166[_0x0d8b('0x4b')]);if(_0x291b83&&_0x291b83[_0x0d8b('0x58')]&&_0x291b83[_0x0d8b('0x58')]!==_0x0d8b('0x59')){logger[_0x0d8b('0x19')](_0x0d8b('0x5a'),'Recording\x20is\x20enabled!');_0x17a87f[_0x0d8b('0x4c')]=util['format'](_0x0d8b('0x4a'),_0x3b1166[_0x0d8b('0x4b')],_0x17a87f[_0x0d8b('0x5b')],md5(_0x17a87f[_0x0d8b('0x5b')]));}return getConnection(_0x3b1166)['then'](function(_0x19e097){_0x199122=_0x19e097;return getUser(_0x3b1166,_0x59ada2[_0x0d8b('0x4d')],_0x199122);})[_0x0d8b('0x2f')](function(_0x2332fc){_0x3e4a41=_0x2332fc;logger[_0x0d8b('0x19')](_0x0d8b('0x5c'),_0x3e4a41['id']);return getEndUser(_0x3b1166,_0x17a87f[_0x0d8b('0x5d')],_0x17a87f[_0x0d8b('0x5e')],_0x199122);})[_0x0d8b('0x2f')](function(_0x34affb){_0xbbb520=_0x34affb;logger['info']('The\x20Enduser\x20ID\x20is:',_0xbbb520['id']);return createTicket(_0x3b1166,_0x3e4a41,_0xbbb520,_0x1d6cd4,_0x17a87f,_0x1d6cd4[_0x0d8b('0x51')],_0x199122);})[_0x0d8b('0x2f')](function(_0x53e399){_0x5a70bd=_0x53e399;logger[_0x0d8b('0x19')]('Ticket\x20created!');logger['info'](_0x0d8b('0x5f'),_0x5a70bd['id']);var _0x1c4e96=util['format']('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x3b1166[_0x0d8b('0x21')],_[_0x0d8b('0x54')](_0x5a70bd['id'],'x')[0x1]);logger[_0x0d8b('0x19')](_0x0d8b('0x5a'),_0x0d8b('0x55'));emit(util[_0x0d8b('0x1f')](_0x0d8b('0x60'),_0x59ada2['name']),_0x0d8b('0x56'),{'uri':_0x1c4e96});})['catch'](function(_0x1a203e){logger[_0x0d8b('0x2a')](_0x0d8b('0x5a'),JSON[_0x0d8b('0x26')](_0x1a203e));});};exports['unmanaged']=function(_0x3fe47d,_0x4a1c4a,_0x3a356b,_0x2c6c5f,_0x1c5fe2,_0x2ebea3){var _0xc5c35f,_0x2b44e5,_0x3e927c,_0x91aa89;_0x2ebea3[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x2ebea3['remoteUri']);_0x2ebea3[_0x0d8b('0x4b')]=intUtil['stripTrailingSlash'](_0x2ebea3[_0x0d8b('0x4b')]);if(_0x1c5fe2&&_0x1c5fe2[_0x0d8b('0x47')]){logger['info']('['+_0x4a1c4a[_0x0d8b('0x61')]['toUpperCase']()+']',_0x0d8b('0x49'));_0x4a1c4a[_0x0d8b('0x4c')]=util[_0x0d8b('0x1f')](_0x0d8b('0x4a'),_0x2ebea3[_0x0d8b('0x4b')],_0x4a1c4a[_0x0d8b('0x5b')],md5(_0x4a1c4a[_0x0d8b('0x5b')]));}else{_0x4a1c4a[_0x0d8b('0x4c')]='';}return getConnection(_0x2ebea3)['then'](function(_0x10eca6){_0x91aa89=_0x10eca6;return getUser(_0x2ebea3,'',_0x91aa89);})[_0x0d8b('0x2f')](function(_0x5b2916){_0xc5c35f=_0x5b2916;logger[_0x0d8b('0x19')](_0x0d8b('0x5c'),_0xc5c35f['id']);return getEndUser(_0x2ebea3,_0x4a1c4a[_0x0d8b('0x4e')],_0x4a1c4a[_0x0d8b('0x4f')],_0x91aa89);})[_0x0d8b('0x2f')](function(_0x9e44b4){_0x2b44e5=_0x9e44b4;logger[_0x0d8b('0x19')](_0x0d8b('0x50'),_0x2b44e5['id']);return createTicket(_0x2ebea3,_0xc5c35f,_0x2b44e5,_0x3a356b,_0x4a1c4a,_0x3a356b[_0x0d8b('0x51')],_0x91aa89);})[_0x0d8b('0x2f')](function(_0xe35028){_0x3e927c=_0xe35028;logger[_0x0d8b('0x19')]('Ticket\x20created!');logger[_0x0d8b('0x19')](_0x0d8b('0x5f'),_0x3e927c['id']);})[_0x0d8b('0x36')](function(_0x58525c){logger['error']('['+_0x4a1c4a[_0x0d8b('0x61')][_0x0d8b('0x62')]()+']',JSON[_0x0d8b('0x26')](_0x58525c));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index 0cf6bf5..ab3999d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd104=['getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','Getting\x20agent\x20with\x20email','count','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','results','filter','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','end-user','Caller\x20-\x20%s','Enduser\x20created.','password','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','debug','stringify','GET','map','includes','string','picklist','type','customField','nameField','toLowerCase','idField','custom_fields','content','variable','variableName','customVariable','Variable','push','queue','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','replace','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','email','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','%s/agent/tickets/%s','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','emit','info','format','remoteUri','merge','name'];(function(_0xf4a457,_0x5bd9c8){var _0x166b3d=function(_0x3efeea){while(--_0x3efeea){_0xf4a457['push'](_0xf4a457['shift']());}};_0x166b3d(++_0x5bd9c8);}(_0xd104,0xd0));var _0x4d10=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xd104[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x4d10('0x0'));var rp=require(_0x4d10('0x1'));var md5=require(_0x4d10('0x2'));var util=require(_0x4d10('0x3'));var Redis=require(_0x4d10('0x4'));var intUtil=require(_0x4d10('0x5'));var config=require(_0x4d10('0x6'));var logger=require(_0x4d10('0x7'))(_0x4d10('0x8'));config[_0x4d10('0x9')]=_[_0x4d10('0xa')](config[_0x4d10('0x9')],{'host':_0x4d10('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4d10('0x9')]));function emit(_0xda0a5f,_0x1c6ceb,_0x1ddb47){io['to'](_0xda0a5f)[_0x4d10('0xc')](_0x1c6ceb,_0x1ddb47);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getTicket(_0xd9239c,_0x3c1eff,_0x3a96b2,_0x44debd,_0x5eaa55){logger[_0x4d10('0xd')]('Creating\x20new\x20ticket...');return request({'uri':util[_0x4d10('0xe')]('%s/tickets.json',_0xd9239c[_0x4d10('0xf')]),'method':'POST','body':{'ticket':_[_0x4d10('0x10')]({'requester_id':_0x3a96b2['id'],'submitter_id':_0x3c1eff?_0x3c1eff['id']:undefined,'assignee_id':_0x3c1eff?_0x3c1eff['id']:undefined,'tags':getTags(_0x44debd['Tags'],_0x4d10('0x11')),'subject':intUtil[_0x4d10('0x12')](_0x44debd[_0x4d10('0x13')],_0x5eaa55,'\x20'),'description':intUtil[_0x4d10('0x12')](_0x44debd[_0x4d10('0x14')],_0x5eaa55,'\x0a'),'comment':{'public':![],'body':intUtil[_0x4d10('0x12')](_0x44debd[_0x4d10('0x14')],_0x5eaa55,'\x0a')}},getCustomFields(_0x44debd[_0x4d10('0x15')],_0x5eaa55))}})[_0x4d10('0x16')](function(_0x16bdc0){logger[_0x4d10('0xd')]('Ticket\x20created!');return _0x16bdc0[_0x4d10('0x17')];});}function getUser(_0x5f24a6,_0x1984d6){if(intUtil[_0x4d10('0x18')](_0x1984d6)){logger[_0x4d10('0xd')](_0x4d10('0x19'),_0x1984d6);return request({'uri':util[_0x4d10('0xe')]('%s/search.json',_0x5f24a6[_0x4d10('0xf')]),'qs':{'query':util['format']('type:user\x20role:agent\x20email:%s',_0x1984d6)}})[_0x4d10('0x16')](function(_0x18320f){if(_0x18320f[_0x4d10('0x1a')]){logger['info']('Agent\x20found!');return _['find'](_0x18320f['results'],{'email':_0x1984d6,'role':'agent'});}else{logger[_0x4d10('0xd')](_0x4d10('0x1b'));return request({'uri':util['format'](_0x4d10('0x1c'),_0x5f24a6[_0x4d10('0xf')])})[_0x4d10('0x16')](function(_0x22bf8f){logger[_0x4d10('0xd')](_0x4d10('0x1d'));return _0x22bf8f[_0x4d10('0x1e')];});}});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x4d10('0xe')](_0x4d10('0x1c'),_0x5f24a6['remoteUri'])})[_0x4d10('0x16')](function(_0xf1b81f){logger[_0x4d10('0xd')](_0x4d10('0x1d'));return _0xf1b81f[_0x4d10('0x1e')];});}}function getEndUser(_0x56cf71,_0x16372f,_0x1ade17){logger['info'](_0x4d10('0x1f'),_0x1ade17);return request({'uri':util[_0x4d10('0xe')](_0x4d10('0x20'),_0x56cf71[_0x4d10('0xf')]),'qs':{'query':util['format'](_0x4d10('0x21'),_0x1ade17)}})[_0x4d10('0x16')](function(_0x22b5a5){var _0xbbdb7b;if(_0x22b5a5[_0x4d10('0x22')]['length']){_0x22b5a5[_0x4d10('0x22')]=_[_0x4d10('0x23')](_0x22b5a5[_0x4d10('0x22')],{'suspended':![],'role':'end-user'});if(_0x22b5a5[_0x4d10('0x22')][_0x4d10('0x24')]){_0xbbdb7b=_[_0x4d10('0x25')](_0x22b5a5[_0x4d10('0x22')]);}}if(_0xbbdb7b){logger[_0x4d10('0xd')](_0x4d10('0x26'));return _0xbbdb7b;}else{logger[_0x4d10('0xd')](_0x4d10('0x27'));return request({'uri':util[_0x4d10('0xe')](_0x4d10('0x28'),_0x56cf71[_0x4d10('0xf')]),'method':_0x4d10('0x29'),'body':{'user':{'role':_0x4d10('0x2a'),'name':util[_0x4d10('0xe')](_0x4d10('0x2b'),_0x16372f||_0x1ade17),'phone':_0x1ade17}}})[_0x4d10('0x16')](function(_0x21ab2c){logger[_0x4d10('0xd')](_0x4d10('0x2c'));return _0x21ab2c[_0x4d10('0x1e')];});}});}function getAuth(_0x3719b3){var _0x5a8a76;if(_0x3719b3['authType']===_0x4d10('0x2d')){_0x5a8a76=util[_0x4d10('0xe')]('%s:%s',_0x3719b3[_0x4d10('0x2e')],_0x3719b3[_0x4d10('0x2d')]);}else if(_0x3719b3[_0x4d10('0x2f')]===_0x4d10('0x30')){_0x5a8a76=util[_0x4d10('0xe')](_0x4d10('0x31'),_0x3719b3[_0x4d10('0x2e')],_0x3719b3[_0x4d10('0x30')]);}return util[_0x4d10('0xe')](_0x4d10('0x32'),new Buffer(_0x5a8a76)[_0x4d10('0x33')](_0x4d10('0x34')));}function request(_0x3583a5){logger[_0x4d10('0x35')]('[HTTP]',JSON[_0x4d10('0x36')](_0x3583a5));return rp(_[_0x4d10('0xa')](_0x3583a5,{'method':_0x4d10('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x45aee6,_0xbcb39c){var _0x5da05f=[];if(_0x45aee6&&_0x45aee6[_0x4d10('0x24')]>0x0){_0x5da05f=_[_0x4d10('0x38')](_0x45aee6,_0xbcb39c);}return _0x5da05f;}function getCustomFields(_0x1ceac4,_0x1f016a){var _0xe2a193=[];var _0x3f4c10={'custom_fields':[]};if(_0x1ceac4[_0x4d10('0x24')]>0x0){_['forEach'](_0x1ceac4,function(_0x14f048){if(_[_0x4d10('0x39')]([_0x4d10('0x3a'),_0x4d10('0x3b')],_0x14f048[_0x4d10('0x3c')])&&_0x14f048['nameField']&&!_0x14f048[_0x4d10('0x3d')]){_0x3f4c10[_0x14f048[_0x4d10('0x3e')][_0x4d10('0x3f')]()]=_0x14f048['content'][_0x4d10('0x33')]();}else if(_[_0x4d10('0x39')]([_0x4d10('0x3a'),_0x4d10('0x3b')],_0x14f048[_0x4d10('0x3c')])&&_0x14f048[_0x4d10('0x40')]&&_0x14f048['customField']){_0x3f4c10[_0x4d10('0x41')]['push']({'id':_0x14f048[_0x4d10('0x40')],'value':_0x14f048[_0x4d10('0x42')][_0x4d10('0x33')]()});}else if(_0x14f048['type']===_0x4d10('0x43')&&_0x14f048[_0x4d10('0x44')]&&_0x14f048[_0x4d10('0x40')]&&_0x14f048[_0x4d10('0x3d')]){_0x1f016a[_0x14f048[_0x4d10('0x44')]]&&_0x3f4c10[_0x4d10('0x41')]['push']({'id':_0x14f048[_0x4d10('0x40')],'value':_0x1f016a[_0x14f048['variableName']][_0x4d10('0x33')]()});}else if(_0x14f048['type']===_0x4d10('0x45')&&_0x14f048['Variable']&&_0x14f048['Variable'][_0x4d10('0x11')]&&_0x14f048['idField']&&_0x14f048[_0x4d10('0x3d')]){_0x1f016a[_0x14f048[_0x4d10('0x46')][_0x4d10('0x11')][_0x4d10('0x3f')]()]&&_0x3f4c10[_0x4d10('0x41')][_0x4d10('0x47')]({'id':_0x14f048[_0x4d10('0x40')],'value':_0x1f016a[_0x14f048[_0x4d10('0x46')]['name'][_0x4d10('0x3f')]()][_0x4d10('0x33')]()});}});}return _0x3f4c10;}exports[_0x4d10('0x48')]=function(_0x2a4805,_0x4febf3,_0x1983d3,_0x5cdbec,_0x2a6e74,_0x322b1b){var _0x50ddb6,_0x50a4f8;_0x322b1b[_0x4d10('0xf')]=intUtil[_0x4d10('0x49')](_0x322b1b[_0x4d10('0xf')]);_0x322b1b[_0x4d10('0x4a')]=intUtil['stripTrailingSlash'](_0x322b1b[_0x4d10('0x4a')]);if(_0x2a6e74&&_0x2a6e74[_0x4d10('0x4b')]){logger[_0x4d10('0xd')]('[QUEUE]','Recording\x20is\x20enabled!');_0x4febf3[_0x4d10('0x4c')]=util[_0x4d10('0xe')](_0x4d10('0x4d'),_0x322b1b[_0x4d10('0x4a')],_0x4febf3[_0x4d10('0x4e')],md5(_0x4febf3['uniqueid']));}else{_0x4febf3[_0x4d10('0x4c')]='';}headers[_0x4d10('0x4f')]=getAuth(_0x322b1b);return getUser(_0x322b1b,_0x5cdbec['email'])[_0x4d10('0x16')](function(_0x8c5b4c){_0x50ddb6=_0x8c5b4c;logger[_0x4d10('0xd')](_0x4d10('0x50'),_0x50ddb6['id']);return getEndUser(_0x322b1b,_0x4febf3[_0x4d10('0x51')],_0x4febf3[_0x4d10('0x52')]);})[_0x4d10('0x16')](function(_0x110048){_0x50a4f8=_0x110048;logger[_0x4d10('0xd')](_0x4d10('0x53'),_0x50a4f8['id']);return getTicket(_0x322b1b,_0x50ddb6,_0x50a4f8,_0x1983d3,_0x4febf3);})['then'](function(_0x3c9c77){if(_0x3c9c77){logger[_0x4d10('0xd')]('The\x20Ticket\x20ID\x20is:',_0x3c9c77['id']);switch(_0x322b1b[_0x4d10('0x3c')]){case _0x4d10('0x54'):logger['info'](_0x4d10('0x55'),_0x4d10('0x56'));return request({'uri':util[_0x4d10('0xe')](_0x4d10('0x57'),_0x322b1b[_0x4d10('0xf')],_0x50ddb6['id'],_0x3c9c77['id']),'method':_0x4d10('0x29')});case _0x4d10('0x58'):logger[_0x4d10('0xd')](_0x4d10('0x55'),_0x4d10('0x59'));emit(util[_0x4d10('0xe')]('user:%s',_0x5cdbec[_0x4d10('0x11')]),_0x4d10('0x5a'),{'uri':util[_0x4d10('0xe')]('%s/agent/tickets/%s',_0x322b1b[_0x4d10('0xf')][_0x4d10('0x5b')]('/api/v2',''),_0x3c9c77['id'])});break;default:logger[_0x4d10('0x5c')](_0x4d10('0x55'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x4d10('0x5d')](function(_0x3509c4){logger[_0x4d10('0x5c')](_0x4d10('0x5e'),util['inspect'](_0x3509c4,{'showHidden':!![],'depth':null}));});};exports[_0x4d10('0x5f')]=function(_0x3bbd4c,_0x418f7d,_0x3ece43,_0x2415cc,_0x3123c1,_0xc1765b,_0x5d7771){var _0x2002a1,_0x59f0fa;_0xc1765b['remoteUri']=intUtil['stripTrailingSlash'](_0xc1765b[_0x4d10('0xf')]);_0xc1765b[_0x4d10('0x4a')]=intUtil['stripTrailingSlash'](_0xc1765b[_0x4d10('0x4a')]);if(_0x5d7771&&_0x5d7771[_0x4d10('0x60')]&&_0x5d7771[_0x4d10('0x60')]!==_0x4d10('0x61')){logger[_0x4d10('0xd')](_0x4d10('0x62'),_0x4d10('0x63'));_0x418f7d[_0x4d10('0x4c')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xc1765b[_0x4d10('0x4a')],_0x418f7d['uniqueid'],md5(_0x418f7d[_0x4d10('0x4e')]));}headers[_0x4d10('0x4f')]=getAuth(_0xc1765b);return getUser(_0xc1765b,_0x2415cc[_0x4d10('0x64')])[_0x4d10('0x16')](function(_0x329129){_0x2002a1=_0x329129;logger[_0x4d10('0xd')](_0x4d10('0x50'),_0x2002a1['id']);return getEndUser(_0xc1765b,_0x418f7d['destcalleridname'],_0x418f7d[_0x4d10('0x65')]);})[_0x4d10('0x16')](function(_0x1e4898){_0x59f0fa=_0x1e4898;logger[_0x4d10('0xd')](_0x4d10('0x53'),_0x59f0fa['id']);return getTicket(_0xc1765b,_0x2002a1,_0x59f0fa,_0x3ece43,_0x418f7d);})['then'](function(_0x16edc7){if(_0x16edc7){logger['info'](_0x4d10('0x66'),_0x16edc7['id']);switch(_0xc1765b['type']){case _0x4d10('0x54'):logger['info']('[OUTBOUND]',_0x4d10('0x56'));return request({'uri':util['format'](_0x4d10('0x57'),_0xc1765b['remoteUri'],_0x2002a1['id'],_0x16edc7['id']),'method':_0x4d10('0x29')});case _0x4d10('0x58'):logger[_0x4d10('0xd')](_0x4d10('0x62'),_0x4d10('0x59'));emit(util[_0x4d10('0xe')](_0x4d10('0x67'),_0x2415cc[_0x4d10('0x11')]),_0x4d10('0x5a'),{'uri':util[_0x4d10('0xe')](_0x4d10('0x68'),_0xc1765b[_0x4d10('0xf')][_0x4d10('0x5b')](_0x4d10('0x69'),''),_0x16edc7['id'])});break;default:logger['error'](_0x4d10('0x62'),_0x4d10('0x6a'));}}})[_0x4d10('0x5d')](function(_0x5bfce6){logger['error'](_0x4d10('0x6b'),util[_0x4d10('0x6c')](_0x5bfce6,{'showHidden':!![],'depth':null}));});};exports[_0x4d10('0x6d')]=function(_0x51abaa,_0x4ecdd9,_0x5319d1,_0x144bdc,_0x4955e3,_0x1706b5){var _0x3b64ce,_0xeb5266;_0x1706b5[_0x4d10('0xf')]=intUtil['stripTrailingSlash'](_0x1706b5[_0x4d10('0xf')]);_0x1706b5[_0x4d10('0x4a')]=intUtil[_0x4d10('0x49')](_0x1706b5[_0x4d10('0x4a')]);if(_0x4955e3&&_0x4955e3[_0x4d10('0x4b')]){logger[_0x4d10('0xd')]('['+_0x4ecdd9[_0x4d10('0x6e')][_0x4d10('0x6f')]()+']',_0x4d10('0x63'));_0x4ecdd9[_0x4d10('0x4c')]=util[_0x4d10('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1706b5['serverUrl'],_0x4ecdd9[_0x4d10('0x4e')],md5(_0x4ecdd9[_0x4d10('0x4e')]));}else{_0x4ecdd9[_0x4d10('0x4c')]='';}headers['Authorization']=getAuth(_0x1706b5);return getUser(_0x1706b5)[_0x4d10('0x16')](function(_0x22b6ed){_0x3b64ce=_0x22b6ed;logger[_0x4d10('0xd')](_0x4d10('0x50'),_0x3b64ce['id']);return getEndUser(_0x1706b5,_0x4ecdd9['calleridname'],_0x4ecdd9[_0x4d10('0x52')]);})[_0x4d10('0x16')](function(_0x30f190){_0xeb5266=_0x30f190;logger[_0x4d10('0xd')](_0x4d10('0x53'),_0xeb5266['id']);return getTicket(_0x1706b5,_0x3b64ce,_0xeb5266,_0x5319d1,_0x4ecdd9);})[_0x4d10('0x16')](function(_0x37c859){if(_0x37c859){logger['info'](_0x4d10('0x66'),_0x37c859['id']);}})['catch'](function(_0x5e944f){logger['error']('['+_0x4ecdd9[_0x4d10('0x6e')][_0x4d10('0x6f')]()+']'+_0x4d10('0x70'),util[_0x4d10('0x6c')](_0x5e944f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7bd9=['recordingFormat','none','destcalleridname','destcalleridnum','POST','newTab','[OUTBOUND]','lastevent','toUpperCase','The\x20User\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','./util','../../../../config/logger','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','merge','Tags','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','%s/search.json','format','count','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','length','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','user','password','%s:%s','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','variable','variableName','customVariable','Variable','push','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x7bd9,0x14f));var _0x97bd=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x7bd9[_0x2df507];return _0x1f7167;};'use strict';var _=require(_0x97bd('0x0'));var rp=require(_0x97bd('0x1'));var md5=require('md5');var util=require(_0x97bd('0x2'));var Redis=require(_0x97bd('0x3'));var intUtil=require(_0x97bd('0x4'));var config=require('../../../../config/environment');var logger=require(_0x97bd('0x5'))('zendesk');config[_0x97bd('0x6')]=_[_0x97bd('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x97bd('0x8'))(new Redis(config[_0x97bd('0x6')]));function emit(_0x419fbd,_0xcb35ca,_0x1a3ca5){io['to'](_0x419fbd)[_0x97bd('0x9')](_0xcb35ca,_0x1a3ca5);}var headers={'Content-Type':_0x97bd('0xa'),'Accept':_0x97bd('0xa')};function getTicket(_0xcaf280,_0x509406,_0x3f6d8f,_0xb5120,_0x48a6d0){logger[_0x97bd('0xb')](_0x97bd('0xc'));return request({'uri':util['format'](_0x97bd('0xd'),_0xcaf280[_0x97bd('0xe')]),'method':'POST','body':{'ticket':_[_0x97bd('0xf')]({'requester_id':_0x3f6d8f['id'],'submitter_id':_0x509406?_0x509406['id']:undefined,'assignee_id':_0x509406?_0x509406['id']:undefined,'tags':getTags(_0xb5120[_0x97bd('0x10')],_0x97bd('0x11')),'subject':intUtil[_0x97bd('0x12')](_0xb5120[_0x97bd('0x13')],_0x48a6d0,'\x20'),'description':intUtil['getString'](_0xb5120[_0x97bd('0x14')],_0x48a6d0,'\x0a'),'comment':{'public':![],'body':intUtil[_0x97bd('0x12')](_0xb5120[_0x97bd('0x14')],_0x48a6d0,'\x0a')}},getCustomFields(_0xb5120['Fields'],_0x48a6d0))}})[_0x97bd('0x15')](function(_0x19d928){logger[_0x97bd('0xb')](_0x97bd('0x16'));return _0x19d928[_0x97bd('0x17')];});}function getUser(_0x509092,_0x5979bd){if(intUtil['validateEmail'](_0x5979bd)){logger[_0x97bd('0xb')]('Getting\x20agent\x20with\x20email',_0x5979bd);return request({'uri':util['format'](_0x97bd('0x18'),_0x509092['remoteUri']),'qs':{'query':util[_0x97bd('0x19')]('type:user\x20role:agent\x20email:%s',_0x5979bd)}})[_0x97bd('0x15')](function(_0x481351){if(_0x481351[_0x97bd('0x1a')]){logger[_0x97bd('0xb')]('Agent\x20found!');return _['find'](_0x481351[_0x97bd('0x1b')],{'email':_0x5979bd,'role':_0x97bd('0x1c')});}else{logger[_0x97bd('0xb')](_0x97bd('0x1d'));return request({'uri':util['format'](_0x97bd('0x1e'),_0x509092[_0x97bd('0xe')])})['then'](function(_0x7cb02f){logger[_0x97bd('0xb')](_0x97bd('0x1f'));return _0x7cb02f['user'];});}});}else{logger['info'](_0x97bd('0x1d'));return request({'uri':util[_0x97bd('0x19')](_0x97bd('0x1e'),_0x509092[_0x97bd('0xe')])})[_0x97bd('0x15')](function(_0x1b1af9){logger[_0x97bd('0xb')](_0x97bd('0x1f'));return _0x1b1af9['user'];});}}function getEndUser(_0x2d63db,_0x389a40,_0x8fe4f3){logger[_0x97bd('0xb')]('Searching\x20enduser\x20with\x20phone',_0x8fe4f3);return request({'uri':util['format'](_0x97bd('0x18'),_0x2d63db[_0x97bd('0xe')]),'qs':{'query':util[_0x97bd('0x19')]('type:user\x20role:end-user\x20phone:%s',_0x8fe4f3)}})['then'](function(_0xd2be28){var _0x43354b;if(_0xd2be28[_0x97bd('0x1b')][_0x97bd('0x20')]){_0xd2be28[_0x97bd('0x1b')]=_[_0x97bd('0x21')](_0xd2be28[_0x97bd('0x1b')],{'suspended':![],'role':'end-user'});if(_0xd2be28[_0x97bd('0x1b')][_0x97bd('0x20')]){_0x43354b=_[_0x97bd('0x22')](_0xd2be28[_0x97bd('0x1b')]);}}if(_0x43354b){logger['info'](_0x97bd('0x23'));return _0x43354b;}else{logger['info'](_0x97bd('0x24'));return request({'uri':util['format'](_0x97bd('0x25'),_0x2d63db[_0x97bd('0xe')]),'method':'POST','body':{'user':{'role':_0x97bd('0x26'),'name':util[_0x97bd('0x19')](_0x97bd('0x27'),_0x389a40||_0x8fe4f3),'phone':_0x8fe4f3}}})[_0x97bd('0x15')](function(_0x3ee0c6){logger[_0x97bd('0xb')](_0x97bd('0x28'));return _0x3ee0c6[_0x97bd('0x29')];});}});}function getAuth(_0x1cbeab){var _0x588d4e;if(_0x1cbeab['authType']===_0x97bd('0x2a')){_0x588d4e=util[_0x97bd('0x19')](_0x97bd('0x2b'),_0x1cbeab[_0x97bd('0x2c')],_0x1cbeab[_0x97bd('0x2a')]);}else if(_0x1cbeab[_0x97bd('0x2d')]===_0x97bd('0x2e')){_0x588d4e=util[_0x97bd('0x19')](_0x97bd('0x2f'),_0x1cbeab[_0x97bd('0x2c')],_0x1cbeab[_0x97bd('0x2e')]);}return util[_0x97bd('0x19')](_0x97bd('0x30'),new Buffer(_0x588d4e)[_0x97bd('0x31')](_0x97bd('0x32')));}function request(_0x3ebd79){logger['debug']('[HTTP]',JSON[_0x97bd('0x33')](_0x3ebd79));return rp(_[_0x97bd('0x7')](_0x3ebd79,{'method':_0x97bd('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x581b74,_0x57bd5a){var _0x56c945=[];if(_0x581b74&&_0x581b74[_0x97bd('0x20')]>0x0){_0x56c945=_[_0x97bd('0x35')](_0x581b74,_0x57bd5a);}return _0x56c945;}function getCustomFields(_0x25daaa,_0x59fe86){var _0x4e88d4=[];var _0x11cf14={'custom_fields':[]};if(_0x25daaa[_0x97bd('0x20')]>0x0){_[_0x97bd('0x36')](_0x25daaa,function(_0x5a2b32){if(_[_0x97bd('0x37')]([_0x97bd('0x38'),_0x97bd('0x39')],_0x5a2b32[_0x97bd('0x3a')])&&_0x5a2b32[_0x97bd('0x3b')]&&!_0x5a2b32[_0x97bd('0x3c')]){_0x11cf14[_0x5a2b32[_0x97bd('0x3b')][_0x97bd('0x3d')]()]=_0x5a2b32[_0x97bd('0x3e')][_0x97bd('0x31')]();}else if(_[_0x97bd('0x37')]([_0x97bd('0x38'),_0x97bd('0x39')],_0x5a2b32[_0x97bd('0x3a')])&&_0x5a2b32[_0x97bd('0x3f')]&&_0x5a2b32[_0x97bd('0x3c')]){_0x11cf14[_0x97bd('0x40')]['push']({'id':_0x5a2b32[_0x97bd('0x3f')],'value':_0x5a2b32['content'][_0x97bd('0x31')]()});}else if(_0x5a2b32[_0x97bd('0x3a')]===_0x97bd('0x41')&&_0x5a2b32[_0x97bd('0x42')]&&_0x5a2b32[_0x97bd('0x3f')]&&_0x5a2b32[_0x97bd('0x3c')]){_0x59fe86[_0x5a2b32['variableName']]&&_0x11cf14[_0x97bd('0x40')]['push']({'id':_0x5a2b32[_0x97bd('0x3f')],'value':_0x59fe86[_0x5a2b32[_0x97bd('0x42')]][_0x97bd('0x31')]()});}else if(_0x5a2b32[_0x97bd('0x3a')]===_0x97bd('0x43')&&_0x5a2b32[_0x97bd('0x44')]&&_0x5a2b32[_0x97bd('0x44')][_0x97bd('0x11')]&&_0x5a2b32[_0x97bd('0x3f')]&&_0x5a2b32['customField']){_0x59fe86[_0x5a2b32['Variable'][_0x97bd('0x11')]['toLowerCase']()]&&_0x11cf14['custom_fields'][_0x97bd('0x45')]({'id':_0x5a2b32['idField'],'value':_0x59fe86[_0x5a2b32[_0x97bd('0x44')][_0x97bd('0x11')][_0x97bd('0x3d')]()][_0x97bd('0x31')]()});}});}return _0x11cf14;}exports[_0x97bd('0x46')]=function(_0x2406b0,_0x236364,_0x1658c5,_0x581de5,_0x5d6d51,_0x25c55e){var _0x32ac43,_0x348d98;_0x25c55e[_0x97bd('0xe')]=intUtil['stripTrailingSlash'](_0x25c55e['remoteUri']);_0x25c55e[_0x97bd('0x47')]=intUtil[_0x97bd('0x48')](_0x25c55e[_0x97bd('0x47')]);if(_0x5d6d51&&_0x5d6d51[_0x97bd('0x49')]){logger[_0x97bd('0xb')](_0x97bd('0x4a'),_0x97bd('0x4b'));_0x236364['recordingURL']=util[_0x97bd('0x19')](_0x97bd('0x4c'),_0x25c55e['serverUrl'],_0x236364[_0x97bd('0x4d')],md5(_0x236364[_0x97bd('0x4d')]));}else{_0x236364[_0x97bd('0x4e')]='';}headers[_0x97bd('0x4f')]=getAuth(_0x25c55e);return getUser(_0x25c55e,_0x581de5[_0x97bd('0x50')])[_0x97bd('0x15')](function(_0x13152d){_0x32ac43=_0x13152d;logger[_0x97bd('0xb')]('The\x20User\x20ID\x20is:',_0x32ac43['id']);return getEndUser(_0x25c55e,_0x236364[_0x97bd('0x51')],_0x236364['calleridnum']);})['then'](function(_0x346af9){_0x348d98=_0x346af9;logger['info'](_0x97bd('0x52'),_0x348d98['id']);return getTicket(_0x25c55e,_0x32ac43,_0x348d98,_0x1658c5,_0x236364);})['then'](function(_0x201b63){if(_0x201b63){logger['info'](_0x97bd('0x53'),_0x201b63['id']);switch(_0x25c55e['type']){case _0x97bd('0x54'):logger[_0x97bd('0xb')]('[QUEUE]',_0x97bd('0x55'));return request({'uri':util[_0x97bd('0x19')](_0x97bd('0x56'),_0x25c55e['remoteUri'],_0x32ac43['id'],_0x201b63['id']),'method':'POST'});case'newTab':logger[_0x97bd('0xb')]('[QUEUE]',_0x97bd('0x57'));emit(util[_0x97bd('0x19')](_0x97bd('0x58'),_0x581de5['name']),'trigger:browser:url',{'uri':util['format'](_0x97bd('0x59'),_0x25c55e[_0x97bd('0xe')][_0x97bd('0x5a')](_0x97bd('0x5b'),''),_0x201b63['id'])});break;default:logger[_0x97bd('0x5c')](_0x97bd('0x4a'),_0x97bd('0x5d'));}}})[_0x97bd('0x5e')](function(_0x42f865){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x97bd('0x5f')](_0x42f865,{'showHidden':!![],'depth':null}));});};exports[_0x97bd('0x60')]=function(_0x16fe92,_0x554313,_0x95e284,_0xde161c,_0x1ceeb2,_0x4cdf50,_0x161496){var _0x10c09c,_0xf0b79b;_0x4cdf50[_0x97bd('0xe')]=intUtil[_0x97bd('0x48')](_0x4cdf50[_0x97bd('0xe')]);_0x4cdf50[_0x97bd('0x47')]=intUtil[_0x97bd('0x48')](_0x4cdf50[_0x97bd('0x47')]);if(_0x161496&&_0x161496[_0x97bd('0x61')]&&_0x161496['recordingFormat']!==_0x97bd('0x62')){logger[_0x97bd('0xb')]('[OUTBOUND]',_0x97bd('0x4b'));_0x554313[_0x97bd('0x4e')]=util[_0x97bd('0x19')](_0x97bd('0x4c'),_0x4cdf50['serverUrl'],_0x554313[_0x97bd('0x4d')],md5(_0x554313['uniqueid']));}headers[_0x97bd('0x4f')]=getAuth(_0x4cdf50);return getUser(_0x4cdf50,_0xde161c[_0x97bd('0x50')])['then'](function(_0x237d6e){_0x10c09c=_0x237d6e;logger[_0x97bd('0xb')]('The\x20User\x20ID\x20is:',_0x10c09c['id']);return getEndUser(_0x4cdf50,_0x554313[_0x97bd('0x63')],_0x554313[_0x97bd('0x64')]);})[_0x97bd('0x15')](function(_0x5cd386){_0xf0b79b=_0x5cd386;logger[_0x97bd('0xb')](_0x97bd('0x52'),_0xf0b79b['id']);return getTicket(_0x4cdf50,_0x10c09c,_0xf0b79b,_0x95e284,_0x554313);})[_0x97bd('0x15')](function(_0x561f0c){if(_0x561f0c){logger[_0x97bd('0xb')](_0x97bd('0x53'),_0x561f0c['id']);switch(_0x4cdf50[_0x97bd('0x3a')]){case _0x97bd('0x54'):logger[_0x97bd('0xb')]('[OUTBOUND]',_0x97bd('0x55'));return request({'uri':util[_0x97bd('0x19')](_0x97bd('0x56'),_0x4cdf50[_0x97bd('0xe')],_0x10c09c['id'],_0x561f0c['id']),'method':_0x97bd('0x65')});case _0x97bd('0x66'):logger[_0x97bd('0xb')]('[OUTBOUND]',_0x97bd('0x57'));emit(util[_0x97bd('0x19')](_0x97bd('0x58'),_0xde161c[_0x97bd('0x11')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x4cdf50[_0x97bd('0xe')][_0x97bd('0x5a')]('/api/v2',''),_0x561f0c['id'])});break;default:logger[_0x97bd('0x5c')](_0x97bd('0x67'),_0x97bd('0x5d'));}}})[_0x97bd('0x5e')](function(_0x51f0ae){logger[_0x97bd('0x5c')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x97bd('0x5f')](_0x51f0ae,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x24f183,_0x23bd19,_0x4f9f90,_0x5efce4,_0x486de0,_0x36363b){var _0xd419ab,_0x67925e;_0x36363b['remoteUri']=intUtil[_0x97bd('0x48')](_0x36363b[_0x97bd('0xe')]);_0x36363b['serverUrl']=intUtil['stripTrailingSlash'](_0x36363b[_0x97bd('0x47')]);if(_0x486de0&&_0x486de0[_0x97bd('0x49')]){logger[_0x97bd('0xb')]('['+_0x23bd19[_0x97bd('0x68')][_0x97bd('0x69')]()+']',_0x97bd('0x4b'));_0x23bd19[_0x97bd('0x4e')]=util[_0x97bd('0x19')](_0x97bd('0x4c'),_0x36363b[_0x97bd('0x47')],_0x23bd19[_0x97bd('0x4d')],md5(_0x23bd19[_0x97bd('0x4d')]));}else{_0x23bd19[_0x97bd('0x4e')]='';}headers[_0x97bd('0x4f')]=getAuth(_0x36363b);return getUser(_0x36363b)[_0x97bd('0x15')](function(_0x3afd4d){_0xd419ab=_0x3afd4d;logger[_0x97bd('0xb')](_0x97bd('0x6a'),_0xd419ab['id']);return getEndUser(_0x36363b,_0x23bd19[_0x97bd('0x51')],_0x23bd19['calleridnum']);})[_0x97bd('0x15')](function(_0x2dd7d3){_0x67925e=_0x2dd7d3;logger[_0x97bd('0xb')](_0x97bd('0x52'),_0x67925e['id']);return getTicket(_0x36363b,_0xd419ab,_0x67925e,_0x4f9f90,_0x23bd19);})[_0x97bd('0x15')](function(_0x439ffa){if(_0x439ffa){logger[_0x97bd('0xb')]('The\x20Ticket\x20ID\x20is:',_0x439ffa['id']);}})[_0x97bd('0x5e')](function(_0x883c9e){logger['error']('['+_0x23bd19[_0x97bd('0x68')]['toUpperCase']()+']'+_0x97bd('0x6b'),util[_0x97bd('0x5f')](_0x883c9e,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index af72156..f1ef2a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5694=['debug','[HTTP]','stringify','length','forEach','string','picklist','idField','content','toString','variable','variableName','type','customVariable','Variable','name','toLowerCase','indexOf','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','isArrayLikeObject','findIndex','email','info','Agent\x20found!','Using\x20the\x20admin\x20account!','users','profile','Administrator','user','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','then','/crm/v2/','moduleCreate','role','first_name','last_name','data','SUCCESS','enduserType','startCase','The\x20failing\x20result\x20is','Error:\x20','log','moduleSearch','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','nothing','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','administrator','Subject','Subjects','Description','getString','Descriptions','Contacts','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','answertime','endtime','diff','starttime','YYYY-MM-DDTHH:mm:ss','mm:ss','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','Timeout','Call_Start_Time','agentcalledAt','merge','code','Call\x20created!','details','err','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','/downloads?type=uniqueid&token=','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','host','recordingFormat','none','[OUTBOUND]','unmanaged','toUpperCase','lodash','request-promise','md5','util','moment','ioredis','bluebird','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit'];(function(_0x219ed2,_0x1f5c44){var _0x450260=function(_0xd20a3b){while(--_0xd20a3b){_0x219ed2['push'](_0x219ed2['shift']());}};_0x450260(++_0x1f5c44);}(_0x5694,0x1ca));var _0x4569=function(_0x4855ad,_0x365626){_0x4855ad=_0x4855ad-0x0;var _0x22eec4=_0x5694[_0x4855ad];return _0x22eec4;};'use strict';var _=require(_0x4569('0x0'));var rp=require(_0x4569('0x1'));var md5=require(_0x4569('0x2'));var util=require(_0x4569('0x3'));var intUtil=require('./util');var moment=require(_0x4569('0x4'));var Redis=require(_0x4569('0x5'));var BPromise=require(_0x4569('0x6'));var config=require('../../../../config/environment');var logger=require(_0x4569('0x7'))('zoho');config[_0x4569('0x8')]=_[_0x4569('0x9')](config[_0x4569('0x8')],{'host':_0x4569('0xa'),'port':0x18eb});var io=require(_0x4569('0xb'))(new Redis(config[_0x4569('0x8')]));function emit(_0x86dbc4,_0x2cbcfa,_0x2b729e){io['to'](_0x86dbc4)[_0x4569('0xc')](_0x2cbcfa,_0x2b729e);}function request(_0x5e4c6a){logger[_0x4569('0xd')](_0x4569('0xe'),JSON[_0x4569('0xf')](_0x5e4c6a));return rp(_0x5e4c6a);}function getCustomFields(_0x2f4036,_0x54bb8f){var _0x4b0837={};if(_0x2f4036[_0x4569('0x10')]>0x0){_[_0x4569('0x11')](_0x2f4036,function(_0x9ec70e){if(_['includes']([_0x4569('0x12'),_0x4569('0x13')],_0x9ec70e['type'])&&_0x9ec70e[_0x4569('0x14')]){_0x4b0837[_0x9ec70e[_0x4569('0x14')]]=_0x9ec70e[_0x4569('0x15')][_0x4569('0x16')]();}else if(_0x9ec70e['type']===_0x4569('0x17')&&_0x9ec70e[_0x4569('0x18')]&&_0x9ec70e[_0x4569('0x14')]&&_0x54bb8f[_0x9ec70e[_0x4569('0x18')]]){_0x4b0837[_0x9ec70e['idField']]=_0x54bb8f[_0x9ec70e[_0x4569('0x18')]]['toString']();}else if(_0x9ec70e[_0x4569('0x19')]===_0x4569('0x1a')&&_0x9ec70e[_0x4569('0x1b')]&&_0x9ec70e['Variable'][_0x4569('0x1c')]&&_0x9ec70e[_0x4569('0x14')]&&_0x54bb8f[_0x9ec70e[_0x4569('0x1b')]['name'][_0x4569('0x1d')]()]){_0x4b0837[_0x9ec70e[_0x4569('0x14')]]=_0x54bb8f[_0x9ec70e[_0x4569('0x1b')]['name'][_0x4569('0x1d')]()][_0x4569('0x16')]();}});}return _0x4b0837;}function getName(_0x26f38b){if(_0x26f38b[_0x4569('0x1e')]('\x20')>0x0){var _0xe541e6=_0x26f38b['split'](/ (.+)/);if(_0xe541e6[0x1]){return _0xe541e6;}}return[_0x26f38b,_0x26f38b];}var accountsTokens={};function getAccessToken(_0x1b8a00){return new Promise(function(_0x170f6e,_0xdce0bd){if(!_[_0x4569('0x1f')](accountsTokens[_0x1b8a00['id']])&&!_['isNil'](accountsTokens[_0x1b8a00['id']][_0x4569('0x20')])){if(moment()['isBefore'](accountsTokens[_0x1b8a00['id']][_0x4569('0x21')])){_0x170f6e(accountsTokens[_0x1b8a00['id']][_0x4569('0x20')]);}}var _0x1b181d;switch(_0x1b8a00[_0x4569('0x22')]){case'US':_0x1b181d=_0x4569('0x23');break;case'AU':_0x1b181d=_0x4569('0x24');break;case'EU':_0x1b181d=_0x4569('0x25');break;case'IN':_0x1b181d=_0x4569('0x26');break;case'CN':_0x1b181d=_0x4569('0x27');break;default:_0x1b181d=_0x4569('0x25');break;}var _0x282c12={'method':_0x4569('0x28'),'uri':_0x1b181d+_0x4569('0x29'),'qs':{'refresh_token':_0x1b8a00['refreshToken'],'client_id':_0x1b8a00[_0x4569('0x2a')],'client_secret':_0x1b8a00[_0x4569('0x2b')],'grant_type':_0x4569('0x2c')},'json':!![]};return rp(_0x282c12)['then'](function(_0x510df6){accountsTokens[_0x1b8a00['id']]={'access_token':_0x510df6[_0x4569('0x20')],'expires_in':moment()[_0x4569('0x2d')](_0x510df6['expires_in'],_0x4569('0x2e'))};_0x170f6e(_0x510df6['access_token']);})[_0x4569('0x2f')](function(_0x500ea9){logger[_0x4569('0x30')](_0x4569('0x31'),_0x500ea9[_0x4569('0x32')]);_0xdce0bd(_0x500ea9);});});}function getUser(_0xb5a26c,_0x75e04c,_0x29f6b1,_0x16bd59){logger['info'](_0x4569('0x33'));return request({'method':_0x4569('0x34'),'uri':util[_0x4569('0x35')](_0x4569('0x36'),_0x75e04c),'qs':{'type':_0x4569('0x37')},'headers':{'Authorization':_0x4569('0x38')+_0xb5a26c},'json':!![]})['then'](function(_0x434184){if(_0x434184['users']){var _0x566ca7=-0x1;if(_[_0x4569('0x39')](_0x434184['users'])){if(!_[_0x4569('0x1f')](_0x16bd59)){_0x566ca7=_[_0x4569('0x3a')](_0x434184['users'],function(_0x435a6a){return _0x435a6a[_0x4569('0x3b')]===_0x16bd59;});}if(_0x566ca7>=0x0){logger[_0x4569('0x3c')](_0x4569('0x3d'));}else{logger['info'](_0x4569('0x3e'));_0x566ca7=_['findIndex'](_0x434184[_0x4569('0x3f')],function(_0x430f79){return _0x430f79[_0x4569('0x40')][_0x4569('0x1c')]===_0x4569('0x41');});}return _0x434184['users'][_0x566ca7];}else{if(_0x434184[_0x4569('0x42')]['profile']['name']==='Administrator'){logger[_0x4569('0x3c')](_0x4569('0x3e'));user=_0x434184['user'];return user;}else{logger[_0x4569('0x30')]('The\x20failing\x20result\x20is',JSON['stringify'](_0x434184));throw new Error(_0x4569('0x43')+JSON[_0x4569('0xf')](_0x434184));}}}else{logger[_0x4569('0x30')]('The\x20failing\x20result\x20is',JSON[_0x4569('0xf')](_0x434184));throw new Error(_0x4569('0x43')+JSON[_0x4569('0xf')](_0x434184));}})[_0x4569('0x2f')](function(_0x2f4a00){console[_0x4569('0x30')](_0x2f4a00);});}function getZohoUser(_0x4a54f0,_0x1ae2e7){return new BPromise(function(_0x31cfb5,_0x42bc0e){request(_0x4a54f0)[_0x4569('0x44')](function(_0x5c7fd5){var _0xb1e2e7=null;if(_0x5c7fd5){_0xb1e2e7=_0x5c7fd5['data'][0x0];_0xb1e2e7['enduserType']=_0x1ae2e7;}_0x31cfb5(_0xb1e2e7);})['catch'](function(_0x15edbd){_0x42bc0e(_0x15edbd);});});}function createEndUser(_0x78c6dd,_0x122563,_0x2a8f95,_0x5c090a,_0x3908b3,_0x3841d8){var _0x2a8f95=getName(_0x2a8f95);return request({'method':_0x4569('0x28'),'uri':'https://www.zohoapis.'+_0x122563+_0x4569('0x45')+_['startCase'](_0x3841d8[_0x4569('0x46')])+'s','body':{'data':[{'Last_Name':_0x2a8f95[0x1],'First_Name':_0x2a8f95[0x0],'Phone':_0x5c090a,'Owner':{'name':!_[_0x4569('0x1f')](_0x3908b3[_0x4569('0x47')][_0x4569('0x1c')])?_0x3908b3[_0x4569('0x47')][_0x4569('0x1c')]:!_[_0x4569('0x1f')](_0x3908b3[_0x4569('0x48')])?_0x3908b3[_0x4569('0x48')]+'\x20'+_0x3908b3[_0x4569('0x49')]:_0x3908b3['last_name'],'id':_0x3908b3['id']}}]},'headers':{'Authorization':_0x4569('0x38')+_0x78c6dd},'json':!![]})[_0x4569('0x44')](function(_0x8147a0){if(_0x8147a0&&_0x8147a0[_0x4569('0x4a')][0x0]['code']===_0x4569('0x4b')){var _0x155ebb=_0x8147a0[_0x4569('0x4a')][0x0]['details'];_0x155ebb[_0x4569('0x4c')]=_[_0x4569('0x4d')](_0x3841d8[_0x4569('0x46')])+'s';return _0x155ebb;}logger[_0x4569('0x30')](_0x4569('0x4e'),JSON[_0x4569('0xf')](data));throw new Error(_0x4569('0x4f')+JSON[_0x4569('0xf')](data));})[_0x4569('0x2f')](function(_0x2c7f70){console[_0x4569('0x50')]('CREATE\x20ERROR',_0x2c7f70);});}function getEndUser(_0x2aac64,_0x4445ae,_0xb21a51,_0x19a645,_0x424e84,_0x1140a2,_0x879270){var _0x3224b9={'method':'GET','uri':'','headers':{'Authorization':_0x4569('0x38')+_0x2aac64},'json':!![]};switch(_0x879270[_0x4569('0x51')]){case _0x4569('0x52'):_0x3224b9[_0x4569('0x53')]=_0x4569('0x54')+_0x4445ae+_0x4569('0x55')+_0x424e84+'))';return getZohoUser(_0x3224b9,'Contacts')[_0x4569('0x44')](function(_0x44d349){if(_0x44d349)return _0x44d349;_0x3224b9[_0x4569('0x53')]=_0x4569('0x54')+_0x4445ae+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x424e84+'))';return getZohoUser(_0x3224b9,'Leads')[_0x4569('0x44')](function(_0x1ef032){if(_0x1ef032)return _0x1ef032;if(_0x879270[_0x4569('0x46')]!=_0x4569('0x56')){return createEndUser(_0x2aac64,_0x4445ae,_0x19a645,_0x424e84,_0x1140a2,_0x879270);}else{return{};}});});break;case'contact':_0x3224b9[_0x4569('0x53')]=_0x4569('0x54')+_0x4445ae+_0x4569('0x55')+_0x424e84+'))';return getZohoUser(_0x3224b9,'Contacts')[_0x4569('0x44')](function(_0x28957d){if(_0x28957d)return _0x28957d;if(_0x879270[_0x4569('0x46')]!=_0x4569('0x56')){return createEndUser(_0x2aac64,_0x4445ae,_0x19a645,_0x424e84,_0x1140a2,_0x879270);}else{return{};}});break;case'lead':_0x3224b9[_0x4569('0x53')]='https://www.zohoapis.'+_0x4445ae+_0x4569('0x57')+_0x424e84+'))';return getZohoUser(_0x3224b9,_0x4569('0x58'))[_0x4569('0x44')](function(_0x3304d3){if(_0x3304d3)return _0x3304d3;if(_0x879270[_0x4569('0x46')]!=_0x4569('0x56')){return createEndUser(_0x2aac64,_0x4445ae,_0x19a645,_0x424e84,_0x1140a2,_0x879270);}else{return{};}});break;}}function getCall(_0x303f6e,_0x101878,_0xf6aa41,_0x9a1679,_0x5b8b1b,_0x33be27,_0x46cefd,_0x3734c1){logger[_0x4569('0x3c')]('Creating\x20new\x20call...');var _0x1aaafe={};_0x1aaafe['Owner']={'name':!_[_0x4569('0x1f')](_0x9a1679[_0x4569('0x47')]['name'])&&!_[_0x4569('0x1f')](_0x9a1679[_0x4569('0x40')][_0x4569('0x1c')])&&_0x9a1679[_0x4569('0x40')][_0x4569('0x1c')]===_0x4569('0x59')?_0x9a1679[_0x4569('0x47')][_0x4569('0x1c')]:!_[_0x4569('0x1f')](_0x9a1679[_0x4569('0x48')])?_0x9a1679[_0x4569('0x48')]+'\x20'+_0x9a1679[_0x4569('0x49')]:_0x9a1679[_0x4569('0x49')],'id':_0x9a1679['id']};_0x1aaafe[_0x4569('0x5a')]=intUtil['getString'](_0x33be27[_0x4569('0x5b')],_0x46cefd,'\x20');_0x1aaafe[_0x4569('0x5c')]=intUtil[_0x4569('0x5d')](_0x33be27[_0x4569('0x5e')],_0x46cefd,'\x0a');if(_0x5b8b1b[_0x4569('0x4c')]===_0x4569('0x5f')){_0x1aaafe[_0x4569('0x60')]={'name':!_['isNil'](_0x5b8b1b[_0x4569('0x61')])?_0x5b8b1b[_0x4569('0x61')]:!_[_0x4569('0x1f')](_0x5b8b1b[_0x4569('0x62')])?_0x5b8b1b[_0x4569('0x62')]+'\x20'+_0x5b8b1b['Last_Name']:_0x5b8b1b[_0x4569('0x63')],'id':_0x5b8b1b['id']};}if(_0x5b8b1b[_0x4569('0x4c')]===_0x4569('0x58')){_0x1aaafe[_0x4569('0x64')]={'name':!_['isNil'](_0x5b8b1b[_0x4569('0x61')])?_0x5b8b1b[_0x4569('0x61')]:!_['isNil'](_0x5b8b1b[_0x4569('0x62')])?_0x5b8b1b[_0x4569('0x62')]+'\x20'+_0x5b8b1b[_0x4569('0x63')]:_0x5b8b1b[_0x4569('0x63')],'id':_0x5b8b1b['id']};_0x1aaafe[_0x4569('0x65')]=_[_0x4569('0x4d')](_0x5b8b1b[_0x4569('0x4c')]);}if(_0x46cefd[_0x4569('0x66')]){_0x1aaafe[_0x4569('0x67')]=moment[_0x4569('0x68')](parseInt(_0x46cefd['talktime'])*0x3e8)[_0x4569('0x35')]('mm:ss');}else if(_0x46cefd[_0x4569('0x69')]&&_0x46cefd[_0x4569('0x6a')]){_0x1aaafe[_0x4569('0x67')]=moment[_0x4569('0x68')](moment(_0x46cefd[_0x4569('0x6a')],'YYYY-MM-DDTHH:mm:ss')[_0x4569('0x6b')](moment(_0x46cefd[_0x4569('0x6c')],_0x4569('0x6d'))))[_0x4569('0x35')](_0x4569('0x6e'));}switch(_0x46cefd[_0x4569('0x6f')]){case _0x4569('0x70'):_0x1aaafe[_0x4569('0x71')]=_0x4569('0x72');break;case _0x4569('0x73'):case _0x4569('0x74'):_0x1aaafe['Call_Result']=_0x4569('0x75');break;case _0x4569('0x76'):_0x1aaafe[_0x4569('0x71')]=_0x4569('0x77');break;case _0x4569('0x78'):_0x1aaafe[_0x4569('0x71')]='Abandoned';break;case'timeout':_0x1aaafe[_0x4569('0x71')]=_0x4569('0x79');default:}_0x1aaafe[_0x4569('0x7a')]=(_0x3734c1==='outbound'?moment(_0x46cefd[_0x4569('0x6c')])[_0x4569('0x35')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x46cefd[_0x4569('0x7b')])[_0x4569('0x35')](_0x4569('0x6d')))||moment()['format'](_0x4569('0x6d'));_0x1aaafe['Call_Type']=_0x3734c1||'Inbound';_0x1aaafe=_[_0x4569('0x7c')](_0x1aaafe,getCustomFields(_0x33be27['Fields'],_0x46cefd));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x101878+'/crm/v2/Calls','headers':{'Authorization':_0x4569('0x38')+_0x303f6e},'body':{'data':[_0x1aaafe]},'json':!![]})[_0x4569('0x44')](function(_0x3c788c){if(_0x3c788c&&_0x3c788c['data'][0x0][_0x4569('0x7d')]==='SUCCESS'){logger[_0x4569('0x3c')](_0x4569('0x7e'));return{'id':_0x3c788c['data'][0x0][_0x4569('0x7f')]['id']};}})['catch'](function(_0x3c5ee5){logger['info']('err',_0x3c5ee5['stack']);console['log'](_0x4569('0x80'),_0x3c5ee5);});}exports[_0x4569('0x81')]=function(_0x202448,_0x14e6e0,_0x5f0471,_0x33a464,_0x23bb4a,_0x328632){var _0x1de164,_0x370d71,_0x4bae19;_0x328632['host']=intUtil[_0x4569('0x82')](_0x328632['host']);_0x328632[_0x4569('0x83')]=intUtil[_0x4569('0x82')](_0x328632[_0x4569('0x83')]);if(_0x23bb4a&&_0x23bb4a[_0x4569('0x84')]){logger[_0x4569('0x3c')](_0x4569('0x85'),_0x4569('0x86'));_0x14e6e0[_0x4569('0x87')]=_0x328632[_0x4569('0x83')]+_0x4569('0x88')+_0x14e6e0['uniqueid']+_0x4569('0x89')+md5(_0x14e6e0[_0x4569('0x8a')]);}else{_0x14e6e0[_0x4569('0x87')]='';}var _0xd350d3=_0x328632['host']===_0x4569('0x8b')?'eu':_0x4569('0x8c');return getAccessToken(_0x328632)[_0x4569('0x44')](function(_0x166944){_0x4bae19=_0x166944;return getUser(_0x4bae19,_0xd350d3,_0x328632,_0x33a464[_0x4569('0x3b')]);})['then'](function(_0x2dbfe7){_0x1de164=_0x2dbfe7;logger[_0x4569('0x3c')](_0x4569('0x8d'),_0x1de164['id']);return getEndUser(_0x4bae19,_0xd350d3,_0x328632,_0x14e6e0[_0x4569('0x8e')],_0x14e6e0['calleridnum'],_0x1de164,_0x5f0471);})[_0x4569('0x44')](function(_0x84d28c){_0x370d71=_0x84d28c;return getCall(_0x4bae19,_0xd350d3,_0x328632,_0x1de164,_0x370d71,_0x5f0471,_0x14e6e0,_0x4569('0x8f'));})[_0x4569('0x44')](function(_0x221f3a){if(_0x221f3a){logger[_0x4569('0x3c')](_0x4569('0x90'),_0x221f3a['id']);logger[_0x4569('0x3c')](_0x4569('0x85'),_0x4569('0x91'));emit(util[_0x4569('0x35')](_0x4569('0x92'),_0x33a464[_0x4569('0x1c')]),_0x4569('0x93'),{'uri':_0x4569('0x94')+_0x328632['host']+_0x4569('0x95')+_0x221f3a['id']});}})[_0x4569('0x2f')](function(_0x9b4d1d){logger['error'](_0x4569('0x85'),JSON[_0x4569('0xf')](_0x9b4d1d));});};exports[_0x4569('0x96')]=function(_0xad80ce,_0x287912,_0x37f75b,_0x1dd6b7,_0xc011c7,_0x13aa98,_0x48fd61){var _0x16f4b7,_0xf94c58,_0xf6b907;_0x13aa98[_0x4569('0x97')]=intUtil[_0x4569('0x82')](_0x13aa98[_0x4569('0x97')]);_0x13aa98[_0x4569('0x83')]=intUtil[_0x4569('0x82')](_0x13aa98['serverUrl']);if(_0x48fd61&&_0x48fd61['recordingFormat']&&_0x48fd61[_0x4569('0x98')]!==_0x4569('0x99')){logger['info'](_0x4569('0x9a'),_0x4569('0x86'));_0x287912['recordingURL']=_0x13aa98[_0x4569('0x83')]+'/api/voice/recordings/'+_0x287912[_0x4569('0x8a')]+_0x4569('0x89')+md5(_0x287912[_0x4569('0x8a')]);}var _0xe3863e=_0x13aa98[_0x4569('0x97')]===_0x4569('0x8b')?'eu':'com';return getAccessToken(_0x13aa98)['then'](function(_0x65b16e){_0xf6b907=_0x65b16e;return getUser(_0xf6b907,_0xe3863e,_0x13aa98,_0x1dd6b7[_0x4569('0x3b')]);})[_0x4569('0x44')](function(_0x2c5fc9){_0x16f4b7=_0x2c5fc9;logger[_0x4569('0x3c')]('The\x20User\x20ID\x20is:',_0x16f4b7['id']);return getEndUser(_0xf6b907,_0xe3863e,_0x13aa98,_0x287912['destcalleridname'],_0x287912['destcalleridnum'],_0x16f4b7,_0x37f75b);})[_0x4569('0x44')](function(_0x4b14c2){_0xf94c58=_0x4b14c2;return getCall(_0xf6b907,_0xe3863e,_0x13aa98,_0x16f4b7,_0xf94c58,_0x37f75b,_0x287912,'Outbound');})['then'](function(_0x520789){if(_0x520789){logger['info'](_0x4569('0x90'),_0x520789['id']);logger[_0x4569('0x3c')](_0x4569('0x9a'),_0x4569('0x91'));emit(util[_0x4569('0x35')](_0x4569('0x92'),_0x1dd6b7['name']),_0x4569('0x93'),{'uri':_0x4569('0x94')+_0x13aa98[_0x4569('0x97')]+_0x4569('0x95')+_0x520789['id']});}})['catch'](function(_0x430791){logger[_0x4569('0x30')](_0x4569('0x9a'),JSON[_0x4569('0xf')](_0x430791));});};exports[_0x4569('0x9b')]=function(_0x193320,_0x2a9e01,_0x5477b8,_0x2dae29,_0x381cdc,_0x35a592){var _0x5708f1,_0x5d0f30,_0x293d47;_0x35a592[_0x4569('0x97')]=intUtil[_0x4569('0x82')](_0x35a592[_0x4569('0x97')]);_0x35a592[_0x4569('0x83')]=intUtil[_0x4569('0x82')](_0x35a592[_0x4569('0x83')]);if(_0x381cdc&&_0x381cdc[_0x4569('0x84')]){logger[_0x4569('0x3c')]('['+_0x2a9e01['lastevent'][_0x4569('0x9c')]()+']',_0x4569('0x86'));_0x2a9e01[_0x4569('0x87')]=_0x35a592['serverUrl']+_0x4569('0x88')+_0x2a9e01[_0x4569('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x2a9e01[_0x4569('0x8a')]);}else{_0x2a9e01[_0x4569('0x87')]='';}var _0x1fe034=_0x35a592[_0x4569('0x97')]===_0x4569('0x8b')?'eu':_0x4569('0x8c');return getAccessToken(_0x35a592)['then'](function(_0x268de9){_0x293d47=_0x268de9;return getUser(_0x293d47,_0x1fe034,_0x35a592);})[_0x4569('0x44')](function(_0x45f8e6){_0x5708f1=_0x45f8e6;logger[_0x4569('0x3c')](_0x4569('0x8d'),_0x5708f1['id']);return getEndUser(_0x293d47,_0x1fe034,_0x35a592,_0x2a9e01[_0x4569('0x8e')],_0x2a9e01['calleridnum'],_0x5708f1,_0x5477b8);})['then'](function(_0x55eee4){_0x5d0f30=_0x55eee4;return getCall(_0x293d47,_0x1fe034,_0x35a592,_0x5708f1,_0x5d0f30,_0x5477b8,_0x2a9e01,_0x4569('0x8f'));})[_0x4569('0x44')](function(_0x12b762){if(_0x12b762){logger[_0x4569('0x3c')](_0x4569('0x90'),_0x12b762['id']);}})['catch'](function(_0x1b0c74){logger[_0x4569('0x30')]('['+_0x2a9e01[_0x4569('0x6f')]['toUpperCase']()+']',JSON[_0x4569('0xf')](_0x1b0c74));});};
\ No newline at end of file
+var _0x40be=['enduserType','POST','startCase','role','first_name','last_name','data','code','SUCCESS','moduleCreate','Error:\x20','CREATE\x20ERROR','moduleSearch','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','lead','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','talktime','mm:ss','answertime','endtime','Call_Duration','utc','diff','starttime','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','timeout','Timeout','outbound','YYYY-MM-DDTHH:mm:ss','agentcalledAt','Call_Type','Inbound','merge','Fields','Call\x20created!','details','err','log','queue','host','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','uniqueid','recordingURL','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','[QUEUE]','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/api/voice/recordings/','/downloads?type=uniqueid&token=','destcalleridname','destcalleridnum','Outbound','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','toUpperCase','lodash','request-promise','md5','util','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','refresh_token','then','add','expires_in','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','isNil','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x40be,0x100));var _0xe40b=function(_0x9ce209,_0x1c0a0f){_0x9ce209=_0x9ce209-0x0;var _0x6203b7=_0x40be[_0x9ce209];return _0x6203b7;};'use strict';var _=require(_0xe40b('0x0'));var rp=require(_0xe40b('0x1'));var md5=require(_0xe40b('0x2'));var util=require(_0xe40b('0x3'));var intUtil=require(_0xe40b('0x4'));var moment=require('moment');var Redis=require(_0xe40b('0x5'));var BPromise=require(_0xe40b('0x6'));var config=require(_0xe40b('0x7'));var logger=require(_0xe40b('0x8'))(_0xe40b('0x9'));config[_0xe40b('0xa')]=_[_0xe40b('0xb')](config[_0xe40b('0xa')],{'host':_0xe40b('0xc'),'port':0x18eb});var io=require(_0xe40b('0xd'))(new Redis(config[_0xe40b('0xa')]));function emit(_0xeabba2,_0x5abee7,_0x113e9e){io['to'](_0xeabba2)[_0xe40b('0xe')](_0x5abee7,_0x113e9e);}function request(_0x48c7e8){logger['debug'](_0xe40b('0xf'),JSON[_0xe40b('0x10')](_0x48c7e8));return rp(_0x48c7e8);}function getCustomFields(_0xf8708f,_0x2c4ab1){var _0x433f7f={};if(_0xf8708f[_0xe40b('0x11')]>0x0){_[_0xe40b('0x12')](_0xf8708f,function(_0x4428ce){if(_[_0xe40b('0x13')]([_0xe40b('0x14'),'picklist'],_0x4428ce[_0xe40b('0x15')])&&_0x4428ce[_0xe40b('0x16')]){_0x433f7f[_0x4428ce[_0xe40b('0x16')]]=_0x4428ce[_0xe40b('0x17')][_0xe40b('0x18')]();}else if(_0x4428ce[_0xe40b('0x15')]==='variable'&&_0x4428ce[_0xe40b('0x19')]&&_0x4428ce['idField']&&_0x2c4ab1[_0x4428ce[_0xe40b('0x19')]]){_0x433f7f[_0x4428ce[_0xe40b('0x16')]]=_0x2c4ab1[_0x4428ce['variableName']]['toString']();}else if(_0x4428ce['type']===_0xe40b('0x1a')&&_0x4428ce[_0xe40b('0x1b')]&&_0x4428ce['Variable'][_0xe40b('0x1c')]&&_0x4428ce[_0xe40b('0x16')]&&_0x2c4ab1[_0x4428ce[_0xe40b('0x1b')][_0xe40b('0x1c')]['toLowerCase']()]){_0x433f7f[_0x4428ce[_0xe40b('0x16')]]=_0x2c4ab1[_0x4428ce[_0xe40b('0x1b')][_0xe40b('0x1c')][_0xe40b('0x1d')]()]['toString']();}});}return _0x433f7f;}function getName(_0x1fd721){if(_0x1fd721[_0xe40b('0x1e')]('\x20')>0x0){var _0x5cb0e6=_0x1fd721[_0xe40b('0x1f')](/ (.+)/);if(_0x5cb0e6[0x1]){return _0x5cb0e6;}}return[_0x1fd721,_0x1fd721];}var accountsTokens={};function getAccessToken(_0x4ee3e8){return new Promise(function(_0x5c8052,_0x528b1e){if(!_['isNil'](accountsTokens[_0x4ee3e8['id']])&&!_['isNil'](accountsTokens[_0x4ee3e8['id']][_0xe40b('0x20')])){if(moment()['isBefore'](accountsTokens[_0x4ee3e8['id']]['expires_in'])){_0x5c8052(accountsTokens[_0x4ee3e8['id']]['access_token']);}}var _0x3dd9ea;switch(_0x4ee3e8[_0xe40b('0x21')]){case'US':_0x3dd9ea=_0xe40b('0x22');break;case'AU':_0x3dd9ea=_0xe40b('0x23');break;case'EU':_0x3dd9ea=_0xe40b('0x24');break;case'IN':_0x3dd9ea=_0xe40b('0x25');break;case'CN':_0x3dd9ea=_0xe40b('0x26');break;default:_0x3dd9ea=_0xe40b('0x24');break;}var _0x3fd3b2={'method':'POST','uri':_0x3dd9ea+_0xe40b('0x27'),'qs':{'refresh_token':_0x4ee3e8[_0xe40b('0x28')],'client_id':_0x4ee3e8[_0xe40b('0x29')],'client_secret':_0x4ee3e8['clientSecret'],'grant_type':_0xe40b('0x2a')},'json':!![]};return rp(_0x3fd3b2)[_0xe40b('0x2b')](function(_0x59f5e4){accountsTokens[_0x4ee3e8['id']]={'access_token':_0x59f5e4[_0xe40b('0x20')],'expires_in':moment()[_0xe40b('0x2c')](_0x59f5e4[_0xe40b('0x2d')],_0xe40b('0x2e'))};_0x5c8052(_0x59f5e4['access_token']);})[_0xe40b('0x2f')](function(_0x599b8c){logger[_0xe40b('0x30')](_0xe40b('0x31'),_0x599b8c[_0xe40b('0x32')]);_0x528b1e(_0x599b8c);});});}function getUser(_0x467de3,_0x201ebe,_0x529b76,_0x48993e){logger[_0xe40b('0x33')]('Search\x20user');return request({'method':'GET','uri':util[_0xe40b('0x34')](_0xe40b('0x35'),_0x201ebe),'qs':{'type':_0xe40b('0x36')},'headers':{'Authorization':_0xe40b('0x37')+_0x467de3},'json':!![]})['then'](function(_0x1411b6){if(_0x1411b6[_0xe40b('0x38')]){var _0x2a373b=-0x1;if(_[_0xe40b('0x39')](_0x1411b6['users'])){if(!_[_0xe40b('0x3a')](_0x48993e)){_0x2a373b=_[_0xe40b('0x3b')](_0x1411b6['users'],function(_0x50c64b){return _0x50c64b[_0xe40b('0x3c')]===_0x48993e;});}if(_0x2a373b>=0x0){logger[_0xe40b('0x33')](_0xe40b('0x3d'));}else{logger[_0xe40b('0x33')](_0xe40b('0x3e'));_0x2a373b=_[_0xe40b('0x3b')](_0x1411b6[_0xe40b('0x38')],function(_0x3e6178){return _0x3e6178[_0xe40b('0x3f')][_0xe40b('0x1c')]===_0xe40b('0x40');});}return _0x1411b6[_0xe40b('0x38')][_0x2a373b];}else{if(_0x1411b6['user'][_0xe40b('0x3f')][_0xe40b('0x1c')]==='Administrator'){logger[_0xe40b('0x33')](_0xe40b('0x3e'));user=_0x1411b6[_0xe40b('0x41')];return user;}else{logger[_0xe40b('0x30')](_0xe40b('0x42'),JSON[_0xe40b('0x10')](_0x1411b6));throw new Error(_0xe40b('0x43')+JSON[_0xe40b('0x10')](_0x1411b6));}}}else{logger['error'](_0xe40b('0x42'),JSON[_0xe40b('0x10')](_0x1411b6));throw new Error(_0xe40b('0x43')+JSON[_0xe40b('0x10')](_0x1411b6));}})['catch'](function(_0x345837){console['error'](_0x345837);});}function getZohoUser(_0x23d808,_0x2b2c32){return new BPromise(function(_0x3ed3aa,_0x138a3b){request(_0x23d808)[_0xe40b('0x2b')](function(_0x3aead6){var _0x31892a=null;if(_0x3aead6){_0x31892a=_0x3aead6['data'][0x0];_0x31892a[_0xe40b('0x44')]=_0x2b2c32;}_0x3ed3aa(_0x31892a);})[_0xe40b('0x2f')](function(_0x50ca9d){_0x138a3b(_0x50ca9d);});});}function createEndUser(_0x6f9d0,_0x6ab876,_0x4ef79d,_0x3415c7,_0xc630a6,_0x29e223){var _0x4ef79d=getName(_0x4ef79d);return request({'method':_0xe40b('0x45'),'uri':'https://www.zohoapis.'+_0x6ab876+'/crm/v2/'+_[_0xe40b('0x46')](_0x29e223['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x4ef79d[0x1],'First_Name':_0x4ef79d[0x0],'Phone':_0x3415c7,'Owner':{'name':!_[_0xe40b('0x3a')](_0xc630a6[_0xe40b('0x47')][_0xe40b('0x1c')])?_0xc630a6[_0xe40b('0x47')]['name']:!_[_0xe40b('0x3a')](_0xc630a6[_0xe40b('0x48')])?_0xc630a6[_0xe40b('0x48')]+'\x20'+_0xc630a6['last_name']:_0xc630a6[_0xe40b('0x49')],'id':_0xc630a6['id']}}]},'headers':{'Authorization':_0xe40b('0x37')+_0x6f9d0},'json':!![]})[_0xe40b('0x2b')](function(_0x5498c0){if(_0x5498c0&&_0x5498c0[_0xe40b('0x4a')][0x0][_0xe40b('0x4b')]===_0xe40b('0x4c')){var _0x59fde3=_0x5498c0[_0xe40b('0x4a')][0x0]['details'];_0x59fde3[_0xe40b('0x44')]=_['startCase'](_0x29e223[_0xe40b('0x4d')])+'s';return _0x59fde3;}logger['error'](_0xe40b('0x42'),JSON['stringify'](data));throw new Error(_0xe40b('0x4e')+JSON['stringify'](data));})[_0xe40b('0x2f')](function(_0x197466){console['log'](_0xe40b('0x4f'),_0x197466);});}function getEndUser(_0x35b03c,_0x502803,_0x419074,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6){var _0x3dab98={'method':'GET','uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x35b03c},'json':!![]};switch(_0x328ac6[_0xe40b('0x50')]){case _0xe40b('0x51'):_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x54')+_0x4de12d+'))';return getZohoUser(_0x3dab98,_0xe40b('0x55'))[_0xe40b('0x2b')](function(_0xf60289){if(_0xf60289)return _0xf60289;_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x56')+_0x4de12d+'))';return getZohoUser(_0x3dab98,_0xe40b('0x57'))[_0xe40b('0x2b')](function(_0x21073d){if(_0x21073d)return _0x21073d;if(_0x328ac6['moduleCreate']!=_0xe40b('0x58')){return createEndUser(_0x35b03c,_0x502803,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6);}else{return{};}});});break;case'contact':_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x54')+_0x4de12d+'))';return getZohoUser(_0x3dab98,'Contacts')[_0xe40b('0x2b')](function(_0x3274c8){if(_0x3274c8)return _0x3274c8;if(_0x328ac6[_0xe40b('0x4d')]!='nothing'){return createEndUser(_0x35b03c,_0x502803,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6);}else{return{};}});break;case _0xe40b('0x59'):_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x56')+_0x4de12d+'))';return getZohoUser(_0x3dab98,_0xe40b('0x57'))['then'](function(_0x251b49){if(_0x251b49)return _0x251b49;if(_0x328ac6[_0xe40b('0x4d')]!=_0xe40b('0x58')){return createEndUser(_0x35b03c,_0x502803,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6);}else{return{};}});break;}}function getCall(_0x28f0da,_0x509f0d,_0x47a372,_0x4c7d32,_0x5c979f,_0x54b22c,_0x1a2fc5,_0x60ef6e){logger[_0xe40b('0x33')](_0xe40b('0x5a'));var _0x45215c={};_0x45215c[_0xe40b('0x5b')]={'name':!_[_0xe40b('0x3a')](_0x4c7d32[_0xe40b('0x47')][_0xe40b('0x1c')])&&!_[_0xe40b('0x3a')](_0x4c7d32[_0xe40b('0x3f')][_0xe40b('0x1c')])&&_0x4c7d32[_0xe40b('0x3f')][_0xe40b('0x1c')]===_0xe40b('0x5c')?_0x4c7d32[_0xe40b('0x47')][_0xe40b('0x1c')]:!_[_0xe40b('0x3a')](_0x4c7d32[_0xe40b('0x48')])?_0x4c7d32[_0xe40b('0x48')]+'\x20'+_0x4c7d32[_0xe40b('0x49')]:_0x4c7d32[_0xe40b('0x49')],'id':_0x4c7d32['id']};_0x45215c[_0xe40b('0x5d')]=intUtil['getString'](_0x54b22c['Subjects'],_0x1a2fc5,'\x20');_0x45215c['Description']=intUtil[_0xe40b('0x5e')](_0x54b22c[_0xe40b('0x5f')],_0x1a2fc5,'\x0a');if(_0x5c979f[_0xe40b('0x44')]===_0xe40b('0x55')){_0x45215c[_0xe40b('0x60')]={'name':!_['isNil'](_0x5c979f[_0xe40b('0x61')])?_0x5c979f[_0xe40b('0x61')]:!_[_0xe40b('0x3a')](_0x5c979f[_0xe40b('0x62')])?_0x5c979f[_0xe40b('0x62')]+'\x20'+_0x5c979f[_0xe40b('0x63')]:_0x5c979f['Last_Name'],'id':_0x5c979f['id']};}if(_0x5c979f['enduserType']===_0xe40b('0x57')){_0x45215c[_0xe40b('0x64')]={'name':!_['isNil'](_0x5c979f[_0xe40b('0x61')])?_0x5c979f[_0xe40b('0x61')]:!_[_0xe40b('0x3a')](_0x5c979f[_0xe40b('0x62')])?_0x5c979f[_0xe40b('0x62')]+'\x20'+_0x5c979f[_0xe40b('0x63')]:_0x5c979f[_0xe40b('0x63')],'id':_0x5c979f['id']};_0x45215c['$se_module']=_[_0xe40b('0x46')](_0x5c979f['enduserType']);}if(_0x1a2fc5[_0xe40b('0x65')]){_0x45215c['Call_Duration']=moment['utc'](parseInt(_0x1a2fc5[_0xe40b('0x65')])*0x3e8)[_0xe40b('0x34')](_0xe40b('0x66'));}else if(_0x1a2fc5[_0xe40b('0x67')]&&_0x1a2fc5[_0xe40b('0x68')]){_0x45215c[_0xe40b('0x69')]=moment[_0xe40b('0x6a')](moment(_0x1a2fc5[_0xe40b('0x68')],'YYYY-MM-DDTHH:mm:ss')[_0xe40b('0x6b')](moment(_0x1a2fc5[_0xe40b('0x6c')],'YYYY-MM-DDTHH:mm:ss')))[_0xe40b('0x34')](_0xe40b('0x66'));}switch(_0x1a2fc5[_0xe40b('0x6d')]){case _0xe40b('0x6e'):_0x45215c[_0xe40b('0x6f')]=_0xe40b('0x70');break;case _0xe40b('0x71'):case _0xe40b('0x72'):_0x45215c['Call_Result']=_0xe40b('0x73');break;case _0xe40b('0x74'):_0x45215c[_0xe40b('0x6f')]=_0xe40b('0x75');break;case _0xe40b('0x76'):_0x45215c['Call_Result']='Abandoned';break;case _0xe40b('0x77'):_0x45215c['Call_Result']=_0xe40b('0x78');default:}_0x45215c['Call_Start_Time']=(_0x60ef6e===_0xe40b('0x79')?moment(_0x1a2fc5[_0xe40b('0x6c')])[_0xe40b('0x34')](_0xe40b('0x7a')):moment(_0x1a2fc5[_0xe40b('0x7b')])[_0xe40b('0x34')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0xe40b('0x34')]('YYYY-MM-DDTHH:mm:ss');_0x45215c[_0xe40b('0x7c')]=_0x60ef6e||_0xe40b('0x7d');_0x45215c=_[_0xe40b('0x7e')](_0x45215c,getCustomFields(_0x54b22c[_0xe40b('0x7f')],_0x1a2fc5));return request({'method':_0xe40b('0x45'),'uri':'https://www.zohoapis.'+_0x509f0d+'/crm/v2/Calls','headers':{'Authorization':_0xe40b('0x37')+_0x28f0da},'body':{'data':[_0x45215c]},'json':!![]})[_0xe40b('0x2b')](function(_0x1fce22){if(_0x1fce22&&_0x1fce22[_0xe40b('0x4a')][0x0][_0xe40b('0x4b')]==='SUCCESS'){logger[_0xe40b('0x33')](_0xe40b('0x80'));return{'id':_0x1fce22[_0xe40b('0x4a')][0x0][_0xe40b('0x81')]['id']};}})[_0xe40b('0x2f')](function(_0x25fde4){logger[_0xe40b('0x33')](_0xe40b('0x82'),_0x25fde4[_0xe40b('0x32')]);console[_0xe40b('0x83')](_0xe40b('0x82'),_0x25fde4);});}exports[_0xe40b('0x84')]=function(_0x4828a3,_0x12b2a4,_0x4e6920,_0x4e21ca,_0xf5c312,_0x2121a3){var _0x35bcf0,_0x18327d,_0x4a88c8;_0x2121a3[_0xe40b('0x85')]=intUtil[_0xe40b('0x86')](_0x2121a3[_0xe40b('0x85')]);_0x2121a3[_0xe40b('0x87')]=intUtil[_0xe40b('0x86')](_0x2121a3[_0xe40b('0x87')]);if(_0xf5c312&&_0xf5c312[_0xe40b('0x88')]){logger[_0xe40b('0x33')]('[QUEUE]',_0xe40b('0x89'));_0x12b2a4['recordingURL']=_0x2121a3[_0xe40b('0x87')]+'/api/voice/recordings/'+_0x12b2a4[_0xe40b('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x12b2a4[_0xe40b('0x8a')]);}else{_0x12b2a4[_0xe40b('0x8b')]='';}var _0x28d977=_0x2121a3[_0xe40b('0x85')]===_0xe40b('0x8c')?'eu':_0xe40b('0x8d');return getAccessToken(_0x2121a3)[_0xe40b('0x2b')](function(_0x2c2554){_0x4a88c8=_0x2c2554;return getUser(_0x4a88c8,_0x28d977,_0x2121a3,_0x4e21ca[_0xe40b('0x3c')]);})['then'](function(_0x36d54b){_0x35bcf0=_0x36d54b;logger[_0xe40b('0x33')](_0xe40b('0x8e'),_0x35bcf0['id']);return getEndUser(_0x4a88c8,_0x28d977,_0x2121a3,_0x12b2a4[_0xe40b('0x8f')],_0x12b2a4[_0xe40b('0x90')],_0x35bcf0,_0x4e6920);})[_0xe40b('0x2b')](function(_0x1fa250){_0x18327d=_0x1fa250;return getCall(_0x4a88c8,_0x28d977,_0x2121a3,_0x35bcf0,_0x18327d,_0x4e6920,_0x12b2a4,_0xe40b('0x7d'));})[_0xe40b('0x2b')](function(_0xa47053){if(_0xa47053){logger['info'](_0xe40b('0x91'),_0xa47053['id']);logger['info'](_0xe40b('0x92'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xe40b('0x34')](_0xe40b('0x93'),_0x4e21ca[_0xe40b('0x1c')]),_0xe40b('0x94'),{'uri':_0xe40b('0x95')+_0x2121a3[_0xe40b('0x85')]+_0xe40b('0x96')+_0xa47053['id']});}})[_0xe40b('0x2f')](function(_0x3ce57b){logger[_0xe40b('0x30')](_0xe40b('0x92'),JSON[_0xe40b('0x10')](_0x3ce57b));});};exports['outbound']=function(_0xcd1c64,_0x4b7d9a,_0x2c9ab2,_0x4d4e86,_0x464a60,_0x30afa5,_0x505522){var _0x13f652,_0x58b784,_0x261859;_0x30afa5[_0xe40b('0x85')]=intUtil[_0xe40b('0x86')](_0x30afa5['host']);_0x30afa5[_0xe40b('0x87')]=intUtil[_0xe40b('0x86')](_0x30afa5['serverUrl']);if(_0x505522&&_0x505522[_0xe40b('0x97')]&&_0x505522[_0xe40b('0x97')]!==_0xe40b('0x98')){logger['info'](_0xe40b('0x99'),_0xe40b('0x89'));_0x4b7d9a[_0xe40b('0x8b')]=_0x30afa5[_0xe40b('0x87')]+_0xe40b('0x9a')+_0x4b7d9a[_0xe40b('0x8a')]+_0xe40b('0x9b')+md5(_0x4b7d9a[_0xe40b('0x8a')]);}var _0x28d29d=_0x30afa5[_0xe40b('0x85')]===_0xe40b('0x8c')?'eu':_0xe40b('0x8d');return getAccessToken(_0x30afa5)['then'](function(_0x4422ab){_0x261859=_0x4422ab;return getUser(_0x261859,_0x28d29d,_0x30afa5,_0x4d4e86[_0xe40b('0x3c')]);})[_0xe40b('0x2b')](function(_0x48773c){_0x13f652=_0x48773c;logger[_0xe40b('0x33')](_0xe40b('0x8e'),_0x13f652['id']);return getEndUser(_0x261859,_0x28d29d,_0x30afa5,_0x4b7d9a[_0xe40b('0x9c')],_0x4b7d9a[_0xe40b('0x9d')],_0x13f652,_0x2c9ab2);})[_0xe40b('0x2b')](function(_0x4bd81c){_0x58b784=_0x4bd81c;return getCall(_0x261859,_0x28d29d,_0x30afa5,_0x13f652,_0x58b784,_0x2c9ab2,_0x4b7d9a,_0xe40b('0x9e'));})[_0xe40b('0x2b')](function(_0x41871e){if(_0x41871e){logger[_0xe40b('0x33')](_0xe40b('0x91'),_0x41871e['id']);logger[_0xe40b('0x33')](_0xe40b('0x99'),_0xe40b('0x9f'));emit(util['format'](_0xe40b('0x93'),_0x4d4e86[_0xe40b('0x1c')]),_0xe40b('0x94'),{'uri':_0xe40b('0x95')+_0x30afa5[_0xe40b('0x85')]+_0xe40b('0x96')+_0x41871e['id']});}})[_0xe40b('0x2f')](function(_0x54f4c9){logger[_0xe40b('0x30')](_0xe40b('0x99'),JSON['stringify'](_0x54f4c9));});};exports[_0xe40b('0xa0')]=function(_0x21b72b,_0x25af51,_0x1a540c,_0x259fa2,_0x3e02ae,_0x401012){var _0x1ffe6a,_0xcfc348,_0x559a45;_0x401012[_0xe40b('0x85')]=intUtil[_0xe40b('0x86')](_0x401012[_0xe40b('0x85')]);_0x401012[_0xe40b('0x87')]=intUtil[_0xe40b('0x86')](_0x401012[_0xe40b('0x87')]);if(_0x3e02ae&&_0x3e02ae[_0xe40b('0x88')]){logger['info']('['+_0x25af51['lastevent'][_0xe40b('0xa1')]()+']',_0xe40b('0x89'));_0x25af51[_0xe40b('0x8b')]=_0x401012['serverUrl']+'/api/voice/recordings/'+_0x25af51[_0xe40b('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x25af51[_0xe40b('0x8a')]);}else{_0x25af51['recordingURL']='';}var _0x4b51d0=_0x401012[_0xe40b('0x85')]===_0xe40b('0x8c')?'eu':_0xe40b('0x8d');return getAccessToken(_0x401012)[_0xe40b('0x2b')](function(_0x28ff7e){_0x559a45=_0x28ff7e;return getUser(_0x559a45,_0x4b51d0,_0x401012);})[_0xe40b('0x2b')](function(_0x4c105d){_0x1ffe6a=_0x4c105d;logger['info'](_0xe40b('0x8e'),_0x1ffe6a['id']);return getEndUser(_0x559a45,_0x4b51d0,_0x401012,_0x25af51['calleridname'],_0x25af51[_0xe40b('0x90')],_0x1ffe6a,_0x1a540c);})[_0xe40b('0x2b')](function(_0x588d65){_0xcfc348=_0x588d65;return getCall(_0x559a45,_0x4b51d0,_0x401012,_0x1ffe6a,_0xcfc348,_0x1a540c,_0x25af51,_0xe40b('0x7d'));})['then'](function(_0x18b854){if(_0x18b854){logger[_0xe40b('0x33')](_0xe40b('0x91'),_0x18b854['id']);}})[_0xe40b('0x2f')](function(_0x12dde8){logger[_0xe40b('0x30')]('['+_0x25af51[_0xe40b('0x6d')][_0xe40b('0xa1')]()+']',JSON[_0xe40b('0x10')](_0x12dde8));});};
\ No newline at end of file
index 66b56e6..ad0bb7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x872e=['util','trigger','exec','data2','Script','data3','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s'];(function(_0x530fda,_0xc2185b){var _0xf7b960=function(_0x32c1b1){while(--_0x32c1b1){_0x530fda['push'](_0x530fda['shift']());}};_0xf7b960(++_0xc2185b);}(_0x872e,0x181));var _0xe872=function(_0x200769,_0x2c900a){_0x200769=_0x200769-0x0;var _0x628a3a=_0x872e[_0x200769];return _0x628a3a;};'use strict';var util=require(_0xe872('0x0'));var sh=require('shelljs');var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0xe872('0x1'));exports[_0xe872('0x2')]=function(_0x3ac339,_0x4b0e70){var _0x410167=_0x3ac339[_0xe872('0x3')]?_0x3ac339['data2']:_0xe872('0x4');var _0x4d18ec=_0x3ac339['data3']?Mustache['render'](_0x3ac339[_0xe872('0x5')],_0x4b0e70):_0x4b0e70;sh['exec'](_0x4d18ec,function(_0x4be444,_0x35175d,_0x502bed){if(_0x4be444!==0x0){logger[_0xe872('0x6')](util[_0xe872('0x7')](_0xe872('0x8'),_0x410167,_0x4d18ec,_0x4be444,_0x502bed));}else{logger[_0xe872('0x9')](util[_0xe872('0x7')](_0xe872('0xa'),_0x410167,_0x4d18ec,_0x35175d));}});};
\ No newline at end of file
+var _0xa479=['Script','data3','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xa479,0xeb));var _0x9a47=function(_0x46c7ff,_0xaa3094){_0x46c7ff=_0x46c7ff-0x0;var _0x56783c=_0xa479[_0x46c7ff];return _0x56783c;};'use strict';var util=require(_0x9a47('0x0'));var sh=require(_0x9a47('0x1'));var Mustache=require(_0x9a47('0x2'));var logger=require(_0x9a47('0x3'))(_0x9a47('0x4'));exports[_0x9a47('0x5')]=function(_0x598a3c,_0x5690a3){var _0x41001a=_0x598a3c[_0x9a47('0x6')]?_0x598a3c[_0x9a47('0x6')]:_0x9a47('0x7');var _0x5195d1=_0x598a3c[_0x9a47('0x8')]?Mustache['render'](_0x598a3c[_0x9a47('0x8')],_0x5690a3):_0x5690a3;sh[_0x9a47('0x5')](_0x5195d1,function(_0xfa1273,_0x2e5e17,_0x3de806){if(_0xfa1273!==0x0){logger['error'](util[_0x9a47('0x9')](_0x9a47('0xa'),_0x41001a,_0x5195d1,_0xfa1273,_0x3de806));}else{logger['info'](util[_0x9a47('0x9')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x41001a,_0x5195d1,_0x2e5e17));}});};
\ No newline at end of file
index c9085a8..dcf9c01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd031=['stringify','isNil',',\x20request\x20body:\x20','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','message','trigger','exec','data1','toUpperCase','render','data2','data5','data6','error','GET','DELETE','POST','data7','stack','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s'];(function(_0x490283,_0x3ddec1){var _0x2938d7=function(_0x2fb6b7){while(--_0x2fb6b7){_0x490283['push'](_0x490283['shift']());}};_0x2938d7(++_0x3ddec1);}(_0xd031,0x1ef));var _0x1d03=function(_0x5a9c9b,_0x6e1724){_0x5a9c9b=_0x5a9c9b-0x0;var _0x5f066d=_0xd031[_0x5a9c9b];return _0x5f066d;};'use strict';var rp=require('request-promise');var util=require('util');var _=require('lodash');var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0x1d03('0x0'));exports[_0x1d03('0x1')]=function(_0x3fe720,_0x383433){var _0x574ee2,_0x63ca4f;var _0x5276a3={'method':_0x3fe720[_0x1d03('0x2')][_0x1d03('0x3')](),'uri':Mustache[_0x1d03('0x4')](_0x3fe720[_0x1d03('0x5')],_0x383433),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x3fe720[_0x1d03('0x6')])==='number'&&parseInt(_0x3fe720[_0x1d03('0x6')])>=0x1&&parseInt(_0x3fe720[_0x1d03('0x6')])<=0xa?parseInt(_0x3fe720[_0x1d03('0x6')])*0x3e8:0x5*0x3e8};try{_0x5276a3['headers']=_0x3fe720['data6']?JSON['parse'](Mustache[_0x1d03('0x4')](_0x3fe720[_0x1d03('0x7')],_0x383433)):{};}catch(_0x1b2c05){logger[_0x1d03('0x8')](_0x1b2c05['stack']);}switch(_0x3fe720[_0x1d03('0x2')][_0x1d03('0x3')]()){case _0x1d03('0x9'):case _0x1d03('0xa'):_0x574ee2=null;_0x5276a3['qs']=_0x383433;break;case _0x1d03('0xb'):case'PUT':if(_0x3fe720[_0x1d03('0xc')]){try{_0x574ee2=JSON['parse'](Mustache[_0x1d03('0x4')](_0x3fe720[_0x1d03('0xc')],_0x383433));_0x5276a3['body']=_0x574ee2;}catch(_0x286395){logger[_0x1d03('0x8')](_0x286395[_0x1d03('0xd')]);logger[_0x1d03('0x8')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x574ee2=_0x383433;_0x5276a3[_0x1d03('0xe')]=_0x574ee2;}break;}logger[_0x1d03('0xf')](util[_0x1d03('0x10')](_0x1d03('0x11'),_0x3fe720['data1'],_0x3fe720[_0x1d03('0x5')],JSON[_0x1d03('0x12')](_0x5276a3)));rp(_0x5276a3)['then'](function(_0x116282){_0x574ee2=!_[_0x1d03('0x13')](_0x574ee2)?_0x1d03('0x14')+_0x574ee2:'';_0x63ca4f=typeof _0x116282['body']==='object'?JSON['stringify'](_0x116282[_0x1d03('0xe')]):_0x116282[_0x1d03('0xe')];logger[_0x1d03('0xf')](util[_0x1d03('0x10')](_0x1d03('0x15'),_0x3fe720[_0x1d03('0x2')],_0x3fe720['data2'],_0x116282['statusCode'],_0x63ca4f));})[_0x1d03('0x16')](function(_0x5e6504){logger[_0x1d03('0x8')](util[_0x1d03('0x10')](_0x1d03('0x17'),_0x3fe720[_0x1d03('0x2')],_0x3fe720['data2'],_0x5e6504[_0x1d03('0x18')],_0x5e6504[_0x1d03('0x19')],_0x5e6504[_0x1d03('0x1a')]));});};
\ No newline at end of file
+var _0xc5ca=['headers','parse','render','data6','error','GET','DELETE','POST','data7','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','message','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','data2','data5'];(function(_0x2e8909,_0x337d51){var _0x31992c=function(_0x1a1df7){while(--_0x1a1df7){_0x2e8909['push'](_0x2e8909['shift']());}};_0x31992c(++_0x337d51);}(_0xc5ca,0xe5));var _0xac5c=function(_0x66d186,_0x18367d){_0x66d186=_0x66d186-0x0;var _0x5295cd=_0xc5ca[_0x66d186];return _0x5295cd;};'use strict';var rp=require('request-promise');var util=require('util');var _=require(_0xac5c('0x0'));var Mustache=require(_0xac5c('0x1'));var logger=require(_0xac5c('0x2'))(_0xac5c('0x3'));exports[_0xac5c('0x4')]=function(_0x4d7955,_0x5a1350){var _0xcbddd4,_0x26d559;var _0x16c179={'method':_0x4d7955[_0xac5c('0x5')][_0xac5c('0x6')](),'uri':Mustache['render'](_0x4d7955[_0xac5c('0x7')],_0x5a1350),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x4d7955['data5'])==='number'&&parseInt(_0x4d7955['data5'])>=0x1&&parseInt(_0x4d7955['data5'])<=0xa?parseInt(_0x4d7955[_0xac5c('0x8')])*0x3e8:0x5*0x3e8};try{_0x16c179[_0xac5c('0x9')]=_0x4d7955['data6']?JSON[_0xac5c('0xa')](Mustache[_0xac5c('0xb')](_0x4d7955[_0xac5c('0xc')],_0x5a1350)):{};}catch(_0x2c7f33){logger[_0xac5c('0xd')](_0x2c7f33['stack']);}switch(_0x4d7955[_0xac5c('0x5')][_0xac5c('0x6')]()){case _0xac5c('0xe'):case _0xac5c('0xf'):_0xcbddd4=null;_0x16c179['qs']=_0x5a1350;break;case _0xac5c('0x10'):case'PUT':if(_0x4d7955['data7']){try{_0xcbddd4=JSON[_0xac5c('0xa')](Mustache[_0xac5c('0xb')](_0x4d7955[_0xac5c('0x11')],_0x5a1350));_0x16c179['body']=_0xcbddd4;}catch(_0x363d40){logger[_0xac5c('0xd')](_0x363d40[_0xac5c('0x12')]);logger[_0xac5c('0xd')](_0xac5c('0x13'));}}else{_0xcbddd4=_0x5a1350;_0x16c179[_0xac5c('0x14')]=_0xcbddd4;}break;}logger[_0xac5c('0x15')](util[_0xac5c('0x16')](_0xac5c('0x17'),_0x4d7955[_0xac5c('0x5')],_0x4d7955[_0xac5c('0x7')],JSON['stringify'](_0x16c179)));rp(_0x16c179)[_0xac5c('0x18')](function(_0x58239e){_0xcbddd4=!_[_0xac5c('0x19')](_0xcbddd4)?_0xac5c('0x1a')+_0xcbddd4:'';_0x26d559=typeof _0x58239e['body']===_0xac5c('0x1b')?JSON[_0xac5c('0x1c')](_0x58239e[_0xac5c('0x14')]):_0x58239e['body'];logger[_0xac5c('0x15')](util[_0xac5c('0x16')](_0xac5c('0x1d'),_0x4d7955[_0xac5c('0x5')],_0x4d7955['data2'],_0x58239e[_0xac5c('0x1e')],_0x26d559));})[_0xac5c('0x1f')](function(_0x491a0d){logger[_0xac5c('0xd')](util[_0xac5c('0x16')](_0xac5c('0x20'),_0x4d7955['data1'],_0x4d7955[_0xac5c('0x7')],_0x491a0d[_0xac5c('0x1e')],_0x491a0d['name'],_0x491a0d[_0xac5c('0x21')]));});};
\ No newline at end of file
index 5652ace..3820df2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c94=['client','http','Request','then','debug','rpc','error','message','result','exports','jayson/promise','bluebird','routing'];(function(_0x197de3,_0x3e76f8){var _0x3a04ad=function(_0xf614f4){while(--_0xf614f4){_0x197de3['push'](_0x197de3['shift']());}};_0x3a04ad(++_0x3e76f8);}(_0x6c94,0x7f));var _0x46c9=function(_0x3400fb,_0x41d8c1){_0x3400fb=_0x3400fb-0x0;var _0x48a2db=_0x6c94[_0x3400fb];return _0x48a2db;};'use strict';var jayson=require(_0x46c9('0x0'));var BPromise=require(_0x46c9('0x1'));var logger=require('../../config/logger')(_0x46c9('0x2'));var client=jayson[_0x46c9('0x3')][_0x46c9('0x4')]({'port':0x2329});client[_0x46c9('0x5')]=function(_0x339368,_0x5386a6){return new BPromise(function(_0x94ae40,_0x5a18fa){return client['request'](_0x339368,_0x5386a6)[_0x46c9('0x6')](function(_0x2777a1){logger[_0x46c9('0x7')](_0x46c9('0x8'),_0x46c9('0x2'),_0x339368,_0x5386a6,_0x2777a1);if(_0x2777a1[_0x46c9('0x9')]){logger[_0x46c9('0x9')](_0x46c9('0x8'),_0x46c9('0x2'),_0x339368,_0x2777a1[_0x46c9('0x9')][_0x46c9('0xa')],_0x5386a6);return _0x5a18fa(_0x2777a1[_0x46c9('0x9')][_0x46c9('0xa')]);}else{return _0x94ae40(_0x2777a1[_0x46c9('0xb')]);}})['catch'](function(_0x24b85d){logger[_0x46c9('0x9')](_0x46c9('0x8'),_0x46c9('0x2'),_0x339368,_0x24b85d,_0x5386a6);return _0x5a18fa(_0x24b85d);});});};module[_0x46c9('0xc')]=client;
\ No newline at end of file
+var _0x731e=['exports','bluebird','../../config/logger','routing','http','request','rpc','error','message','result','catch'];(function(_0x450d6d,_0x9eb387){var _0x19a20a=function(_0x5d21e1){while(--_0x5d21e1){_0x450d6d['push'](_0x450d6d['shift']());}};_0x19a20a(++_0x9eb387);}(_0x731e,0x14b));var _0xe731=function(_0x37c9af,_0x3b3f6c){_0x37c9af=_0x37c9af-0x0;var _0x172490=_0x731e[_0x37c9af];return _0x172490;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe731('0x0'));var logger=require(_0xe731('0x1'))(_0xe731('0x2'));var client=jayson['client'][_0xe731('0x3')]({'port':0x2329});client['Request']=function(_0x2aba36,_0xcfe915){return new BPromise(function(_0x576fe3,_0x21dac7){return client[_0xe731('0x4')](_0x2aba36,_0xcfe915)['then'](function(_0x511434){logger['debug'](_0xe731('0x5'),'routing',_0x2aba36,_0xcfe915,_0x511434);if(_0x511434['error']){logger['error'](_0xe731('0x5'),_0xe731('0x2'),_0x2aba36,_0x511434[_0xe731('0x6')][_0xe731('0x7')],_0xcfe915);return _0x21dac7(_0x511434['error'][_0xe731('0x7')]);}else{return _0x576fe3(_0x511434[_0xe731('0x8')]);}})[_0xe731('0x9')](function(_0x3933b7){logger[_0xe731('0x6')]('rpc',_0xe731('0x2'),_0x2aba36,_0x3933b7,_0xcfe915);return _0x21dac7(_0x3933b7);});});};module[_0xe731('0xa')]=client;
\ No newline at end of file
index 42894aa..4227df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108f=['./realtime','./rpc/setting','resolve','getMailAccounts','initMailAccounts','then','refresh','mailAccounts','getSettings','catch','bluebird','./server'];(function(_0x33d4c5,_0x21b867){var _0x3ebdaf=function(_0x7d2412){while(--_0x7d2412){_0x33d4c5['push'](_0x33d4c5['shift']());}};_0x3ebdaf(++_0x21b867);}(_0x108f,0xbe));var _0xf108=function(_0x8e47de,_0x571670){_0x8e47de=_0x8e47de-0x0;var _0x24bdcd=_0x108f[_0x8e47de];return _0x24bdcd;};'use strict';var BPromise=require(_0xf108('0x0'));var server=require(_0xf108('0x1'));var Realtime=require(_0xf108('0x2'));var EmailChannel=require('./lib/email');var mailAccount=require('./rpc/mailAccount');var setting=require(_0xf108('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xf108('0x4')]()['then'](mailAccount[_0xf108('0x5')]())['then'](realtime[_0xf108('0x6')]())[_0xf108('0x7')](function(){email[_0xf108('0x8')](realtime[_0xf108('0x9')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0xf108('0x7')](function(){return initRealtime();})[_0xf108('0x7')](function(){return setting[_0xf108('0xa')]();})[_0xf108('0x7')](function(_0x2a604b){return setInterval(initRealtime,_0x2a604b['loginMailFrequency']*0x3e8);})[_0xf108('0xb')](function(_0x3e07f4){console['log'](_0x3e07f4);});}main();
\ No newline at end of file
+var _0x11fc=['then','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','catch','./server','./rpc/mailAccount','./rpc/setting','getMailAccounts'];(function(_0x5bdcf6,_0x130b57){var _0x3b2727=function(_0x2bcedd){while(--_0x2bcedd){_0x5bdcf6['push'](_0x5bdcf6['shift']());}};_0x3b2727(++_0x130b57);}(_0x11fc,0x130));var _0xc11f=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x11fc[_0x1d1779];return _0x2377e9;};'use strict';var BPromise=require('bluebird');var server=require(_0xc11f('0x0'));var Realtime=require('./realtime');var EmailChannel=require('./lib/email');var mailAccount=require(_0xc11f('0x1'));var setting=require(_0xc11f('0x2'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise['resolve']()['then'](mailAccount[_0xc11f('0x3')]())[_0xc11f('0x4')](realtime[_0xc11f('0x5')]())[_0xc11f('0x4')](function(){email[_0xc11f('0x6')](realtime[_0xc11f('0x7')]);return realtime;});}function main(){return server[_0xc11f('0x8')](realtime,email)[_0xc11f('0x4')](function(){return initRealtime();})[_0xc11f('0x4')](function(){return setting['getSettings']();})[_0xc11f('0x4')](function(_0x14949d){return setInterval(initRealtime,_0x14949d[_0xc11f('0x9')]*0x3e8);})[_0xc11f('0xa')](function(_0x392bc6){console['log'](_0x392bc6);});}main();
\ No newline at end of file
index 75bf595..5e9d521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cbc=['md5','../../../config/environment','../../../config/logger','redis','defaults','localhost','socket.io-emitter','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','key','active','Imap','status','messageStatus','total','stringify','mailAccount:update','refresh','hasOwnProperty','box','handleImapBox','handleImapEmail','end','bind','error','handleImapError','isNil','disabled','emit','messages','firstName','lastName','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','sendMail','send','verifySmtp','Smtp','lastSync','verify','verified','exports','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9cbc,0x9e));var _0xc9cb=function(_0x431ae1,_0x385f06){_0x431ae1=_0x431ae1-0x0;var _0x27fcbd=_0x9cbc[_0x431ae1];return _0x27fcbd;};'use strict';var _=require(_0xc9cb('0x0'));var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0xc9cb('0x1'));var Redis=require('ioredis');var config=require(_0xc9cb('0x2'));var logger=require(_0xc9cb('0x3'))('email');config[_0xc9cb('0x4')]=_[_0xc9cb('0x5')](config[_0xc9cb('0x4')],{'host':_0xc9cb('0x6'),'port':0x18eb});var io=require(_0xc9cb('0x7'))(new Redis(config[_0xc9cb('0x4')]));var EmailImap=require('./imap');var EmailSmtp=require('./smtp');var mailAccount=require(_0xc9cb('0x8'));var md5Accounts={};function EmailChannel(_0x1b240a){logger[_0xc9cb('0x9')](_0xc9cb('0xa'));this[_0xc9cb('0xb')]=_0x1b240a[_0xc9cb('0xb')];this[_0xc9cb('0xc')]={};this[_0xc9cb('0xd')]=new EmailSmtp();}EmailChannel[_0xc9cb('0xe')]['emit']=function(_0x107b7c){var _0x1d92ca=this[_0xc9cb('0xb')][_0x107b7c];var _0x18cbea={'id':_0x1d92ca['id'],'name':_0x1d92ca[_0xc9cb('0xf')],'key':_0x1d92ca[_0xc9cb('0x10')],'active':_0x1d92ca[_0xc9cb('0x11')],'Imap':{'status':_0x1d92ca[_0xc9cb('0x12')][_0xc9cb('0x13')],'messageStatus':_0x1d92ca[_0xc9cb('0x12')][_0xc9cb('0x14')],'total':_0x1d92ca[_0xc9cb('0x12')][_0xc9cb('0x15')]}};if(_['isNil'](md5Accounts[_0x107b7c])){md5Accounts[_0x107b7c]={};}var _0x4628e6=md5(JSON[_0xc9cb('0x16')](_0x18cbea));if(md5Accounts[_0x107b7c][_0xc9cb('0x1')]!==_0x4628e6){md5Accounts[_0x107b7c]['md5']=_0x4628e6;io['emit'](_0xc9cb('0x17'),_0x18cbea);}};EmailChannel['prototype'][_0xc9cb('0x18')]=function(_0x4a7c66){for(var _0x7194fb in _0x4a7c66){if(_0x4a7c66[_0xc9cb('0x19')](_0x7194fb)){if(_0x4a7c66[_0x7194fb][_0xc9cb('0x12')]&&_0x4a7c66[_0x7194fb][_0xc9cb('0x11')]){var _0xd627e0=_0x4a7c66[_0x7194fb][_0xc9cb('0x12')];if(!this[_0xc9cb('0xc')][_0xc9cb('0x19')](_0xd627e0['id'])){this[_0xc9cb('0xc')][_0xd627e0['id']]=new EmailImap(_0xd627e0,_0x4a7c66[_0x7194fb]['email']);this[_0xc9cb('0xc')][_0xd627e0['id']]['on'](_0xc9cb('0x1a'),this[_0xc9cb('0x1b')]['bind'](this,_0x7194fb));this[_0xc9cb('0xc')][_0xd627e0['id']]['on']('email',this[_0xc9cb('0x1c')]['bind'](this,_0x7194fb));this['imapAccounts'][_0xd627e0['id']]['on'](_0xc9cb('0x1d'),this['handleImapEnd'][_0xc9cb('0x1e')](this,_0x7194fb));this['imapAccounts'][_0xd627e0['id']]['on'](_0xc9cb('0x1f'),this[_0xc9cb('0x20')]['bind'](this,_0x7194fb));}}else{if(_[_0xc9cb('0x21')](this[_0xc9cb('0xb')][_0x7194fb]['Imap'])){this[_0xc9cb('0xb')][_0x7194fb][_0xc9cb('0x12')]={};}this[_0xc9cb('0xb')][_0x7194fb]['Imap'][_0xc9cb('0x13')]=_0xc9cb('0x22');this[_0xc9cb('0xb')][_0x7194fb][_0xc9cb('0x12')]['messageStatus']='';this[_0xc9cb('0x23')](_0x7194fb);}}}};EmailChannel['prototype'][_0xc9cb('0x1b')]=function(_0x20d022,_0x12b129){if(this[_0xc9cb('0xb')][_0x20d022]){this[_0xc9cb('0xb')][_0x20d022][_0xc9cb('0x12')][_0xc9cb('0x13')]='connected';this['mailAccounts'][_0x20d022][_0xc9cb('0x12')][_0xc9cb('0x14')]=_0x12b129['name'];if(_0x12b129['messages']){this[_0xc9cb('0xb')][_0x20d022][_0xc9cb('0x12')][_0xc9cb('0x15')]=_0x12b129[_0xc9cb('0x24')][_0xc9cb('0x15')];}return this['emit'](_0x20d022);}};EmailChannel[_0xc9cb('0xe')]['handleImapEmail']=function(_0xdbd274,_0x4aba05){logger[_0xc9cb('0x9')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x4aba05[_0xc9cb('0x25')],_0x4aba05[_0xc9cb('0x26')],_0x4aba05['from'],_0xdbd274);if(this[_0xc9cb('0xb')][_0xdbd274]){return mailAccount[_0xc9cb('0x27')](_0xdbd274,_0x4aba05)[_0xc9cb('0x28')](function(_0x3c8ea8){if(_0x3c8ea8){logger['info'](_0xc9cb('0x29'));}})[_0xc9cb('0x2a')](function(_0xc5e1e7){logger[_0xc9cb('0x1f')](_0xc9cb('0x2b'),JSON['stringify'](_0xc5e1e7));});}};EmailChannel[_0xc9cb('0xe')][_0xc9cb('0x2c')]=function(_0x50cd7e){if(this[_0xc9cb('0xb')][_0x50cd7e]&&this[_0xc9cb('0xb')][_0x50cd7e][_0xc9cb('0x12')]){if(this[_0xc9cb('0xc')][this['mailAccounts'][_0x50cd7e][_0xc9cb('0x12')]['id']]){delete this[_0xc9cb('0xc')][this['mailAccounts'][_0x50cd7e][_0xc9cb('0x12')]['id']];}this['mailAccounts'][_0x50cd7e][_0xc9cb('0x12')]['lastSync']=moment();this[_0xc9cb('0x23')](_0x50cd7e);}};EmailChannel[_0xc9cb('0xe')][_0xc9cb('0x20')]=function(_0x18e356,_0x8c5fcf){if(this['mailAccounts'][_0x18e356]){this[_0xc9cb('0xb')][_0x18e356][_0xc9cb('0x12')]['status']=_0xc9cb('0x1f');this['mailAccounts'][_0x18e356][_0xc9cb('0x12')][_0xc9cb('0x14')]=_0x8c5fcf;return this[_0xc9cb('0x23')](_0x18e356);}};EmailChannel[_0xc9cb('0xe')][_0xc9cb('0x2d')]=function(_0x268cb3,_0x5377c3){return this[_0xc9cb('0xd')][_0xc9cb('0x2e')](_0x268cb3,_0x5377c3);};EmailChannel[_0xc9cb('0xe')][_0xc9cb('0x2f')]=function(_0x418f5f){var _0x29d010=this;if(this[_0xc9cb('0xb')][_0x418f5f['id']]){if(_[_0xc9cb('0x21')](this['mailAccounts'][_0x418f5f['id']][_0xc9cb('0x30')])){this[_0xc9cb('0xb')][_0x418f5f['id']][_0xc9cb('0x30')]={};}this[_0xc9cb('0xb')][_0x418f5f['id']]['Smtp'][_0xc9cb('0x31')]=moment();return new BPromise(function(_0x1a8cfa,_0x55693e){return _0x29d010['smtp'][_0xc9cb('0x32')](_0x418f5f)[_0xc9cb('0x28')](function(_0x16f3d4){_0x29d010['mailAccounts'][_0x418f5f['id']][_0xc9cb('0x30')]['status']=_0xc9cb('0x33');_0x29d010[_0xc9cb('0xb')][_0x418f5f['id']][_0xc9cb('0x30')][_0xc9cb('0x14')]='';_0x29d010[_0xc9cb('0x23')](_0x418f5f['id']);_0x1a8cfa(_0x16f3d4);})[_0xc9cb('0x2a')](function(_0x4a90bb){_0x29d010[_0xc9cb('0xb')][_0x418f5f['id']][_0xc9cb('0x30')]['status']=_0xc9cb('0x1f');_0x29d010[_0xc9cb('0xb')][_0x418f5f['id']][_0xc9cb('0x30')][_0xc9cb('0x14')]=_0x4a90bb;_0x29d010[_0xc9cb('0x23')](_0x418f5f['id']);_0x55693e(_0x4a90bb);});});}return this['smtp'][_0xc9cb('0x32')](_0x418f5f);};module[_0xc9cb('0x34')]=EmailChannel;
\ No newline at end of file
+var _0x11e1=['key','Imap','status','messageStatus','total','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','box','handleImapBox','bind','end','handleImapEnd','error','connected','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','smtp','send','verifySmtp','Smtp','verified','verify','lodash','ioredis','../../../config/environment','email','redis','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','prototype','emit'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x11e1,0x1ef));var _0x111e=function(_0x392efe,_0x31049d){_0x392efe=_0x392efe-0x0;var _0x13ef37=_0x11e1[_0x392efe];return _0x13ef37;};'use strict';var _=require(_0x111e('0x0'));var moment=require('moment');var BPromise=require('bluebird');var md5=require('md5');var Redis=require(_0x111e('0x1'));var config=require(_0x111e('0x2'));var logger=require('../../../config/logger')(_0x111e('0x3'));config[_0x111e('0x4')]=_[_0x111e('0x5')](config[_0x111e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x111e('0x6'))(new Redis(config[_0x111e('0x4')]));var EmailImap=require(_0x111e('0x7'));var EmailSmtp=require(_0x111e('0x8'));var mailAccount=require(_0x111e('0x9'));var md5Accounts={};function EmailChannel(_0x1ee085){logger[_0x111e('0xa')]('start\x20email\x20channel');this[_0x111e('0xb')]=_0x1ee085[_0x111e('0xb')];this[_0x111e('0xc')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0x111e('0xd')][_0x111e('0xe')]=function(_0x23da39){var _0x345729=this[_0x111e('0xb')][_0x23da39];var _0x58c064={'id':_0x345729['id'],'name':_0x345729['name'],'key':_0x345729[_0x111e('0xf')],'active':_0x345729['active'],'Imap':{'status':_0x345729[_0x111e('0x10')][_0x111e('0x11')],'messageStatus':_0x345729['Imap'][_0x111e('0x12')],'total':_0x345729[_0x111e('0x10')][_0x111e('0x13')]}};if(_[_0x111e('0x14')](md5Accounts[_0x23da39])){md5Accounts[_0x23da39]={};}var _0x216fa5=md5(JSON[_0x111e('0x15')](_0x58c064));if(md5Accounts[_0x23da39]['md5']!==_0x216fa5){md5Accounts[_0x23da39][_0x111e('0x16')]=_0x216fa5;io[_0x111e('0xe')](_0x111e('0x17'),_0x58c064);}};EmailChannel[_0x111e('0xd')][_0x111e('0x18')]=function(_0xe48ed7){for(var _0xd0e4a5 in _0xe48ed7){if(_0xe48ed7['hasOwnProperty'](_0xd0e4a5)){if(_0xe48ed7[_0xd0e4a5]['Imap']&&_0xe48ed7[_0xd0e4a5]['active']){var _0x31e715=_0xe48ed7[_0xd0e4a5][_0x111e('0x10')];if(!this[_0x111e('0xc')][_0x111e('0x19')](_0x31e715['id'])){this['imapAccounts'][_0x31e715['id']]=new EmailImap(_0x31e715,_0xe48ed7[_0xd0e4a5][_0x111e('0x3')]);this[_0x111e('0xc')][_0x31e715['id']]['on'](_0x111e('0x1a'),this[_0x111e('0x1b')][_0x111e('0x1c')](this,_0xd0e4a5));this[_0x111e('0xc')][_0x31e715['id']]['on']('email',this['handleImapEmail']['bind'](this,_0xd0e4a5));this['imapAccounts'][_0x31e715['id']]['on'](_0x111e('0x1d'),this[_0x111e('0x1e')][_0x111e('0x1c')](this,_0xd0e4a5));this[_0x111e('0xc')][_0x31e715['id']]['on'](_0x111e('0x1f'),this['handleImapError'][_0x111e('0x1c')](this,_0xd0e4a5));}}else{if(_[_0x111e('0x14')](this['mailAccounts'][_0xd0e4a5][_0x111e('0x10')])){this[_0x111e('0xb')][_0xd0e4a5]['Imap']={};}this[_0x111e('0xb')][_0xd0e4a5][_0x111e('0x10')][_0x111e('0x11')]='disabled';this[_0x111e('0xb')][_0xd0e4a5][_0x111e('0x10')][_0x111e('0x12')]='';this[_0x111e('0xe')](_0xd0e4a5);}}}};EmailChannel[_0x111e('0xd')][_0x111e('0x1b')]=function(_0x1bedac,_0x2c55f9){if(this[_0x111e('0xb')][_0x1bedac]){this[_0x111e('0xb')][_0x1bedac][_0x111e('0x10')][_0x111e('0x11')]=_0x111e('0x20');this['mailAccounts'][_0x1bedac][_0x111e('0x10')][_0x111e('0x12')]=_0x2c55f9[_0x111e('0x21')];if(_0x2c55f9['messages']){this['mailAccounts'][_0x1bedac][_0x111e('0x10')][_0x111e('0x13')]=_0x2c55f9[_0x111e('0x22')][_0x111e('0x13')];}return this[_0x111e('0xe')](_0x1bedac);}};EmailChannel[_0x111e('0xd')]['handleImapEmail']=function(_0x112138,_0x5943e6){logger[_0x111e('0xa')](_0x111e('0x23'),_0x5943e6['firstName'],_0x5943e6[_0x111e('0x24')],_0x5943e6[_0x111e('0x25')],_0x112138);if(this[_0x111e('0xb')][_0x112138]){return mailAccount[_0x111e('0x26')](_0x112138,_0x5943e6)[_0x111e('0x27')](function(_0x62828c){if(_0x62828c){logger[_0x111e('0xa')](_0x111e('0x28'));}})[_0x111e('0x29')](function(_0x29d9a6){logger['error'](_0x111e('0x2a'),JSON[_0x111e('0x15')](_0x29d9a6));});}};EmailChannel[_0x111e('0xd')][_0x111e('0x1e')]=function(_0x2b8c61){if(this[_0x111e('0xb')][_0x2b8c61]&&this[_0x111e('0xb')][_0x2b8c61]['Imap']){if(this['imapAccounts'][this[_0x111e('0xb')][_0x2b8c61][_0x111e('0x10')]['id']]){delete this[_0x111e('0xc')][this[_0x111e('0xb')][_0x2b8c61][_0x111e('0x10')]['id']];}this[_0x111e('0xb')][_0x2b8c61][_0x111e('0x10')][_0x111e('0x2b')]=moment();this[_0x111e('0xe')](_0x2b8c61);}};EmailChannel[_0x111e('0xd')]['handleImapError']=function(_0x3d5be5,_0x24ccb2){if(this[_0x111e('0xb')][_0x3d5be5]){this[_0x111e('0xb')][_0x3d5be5][_0x111e('0x10')][_0x111e('0x11')]=_0x111e('0x1f');this[_0x111e('0xb')][_0x3d5be5][_0x111e('0x10')][_0x111e('0x12')]=_0x24ccb2;return this[_0x111e('0xe')](_0x3d5be5);}};EmailChannel[_0x111e('0xd')][_0x111e('0x2c')]=function(_0x1f7f97,_0x3a56f2){return this[_0x111e('0x2d')][_0x111e('0x2e')](_0x1f7f97,_0x3a56f2);};EmailChannel[_0x111e('0xd')][_0x111e('0x2f')]=function(_0x483034){var _0x5091d2=this;if(this['mailAccounts'][_0x483034['id']]){if(_['isNil'](this[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')])){this[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')]={};}this[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')][_0x111e('0x2b')]=moment();return new BPromise(function(_0x25686d,_0x491ea8){return _0x5091d2[_0x111e('0x2d')]['verify'](_0x483034)['then'](function(_0x3554e3){_0x5091d2[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')]['status']=_0x111e('0x31');_0x5091d2[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')][_0x111e('0x12')]='';_0x5091d2[_0x111e('0xe')](_0x483034['id']);_0x25686d(_0x3554e3);})[_0x111e('0x29')](function(_0x33875c){_0x5091d2[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')]['status']='error';_0x5091d2['mailAccounts'][_0x483034['id']][_0x111e('0x30')]['messageStatus']=_0x33875c;_0x5091d2[_0x111e('0xe')](_0x483034['id']);_0x491ea8(_0x33875c);});});}return this[_0x111e('0x2d')][_0x111e('0x32')](_0x483034);};module['exports']=EmailChannel;
\ No newline at end of file
index 4d663fd..da01286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44af=['upperFirst','exports','imap','lodash','randomstring','mailparser','simpleParser','iconv','events','EventEmitter','./utils','../../../config/logger','email','mailbox','INBOX','getAccount','account','ready','end','bind','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','required','getHost','anonymous@xcally.com','handleReady','openBox','handleOpenBox','emit','box','handleCloseBox','readUnseen','search','handleReadUnseen','length','fetch','message','handleFetchMessage','once','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','handleEnd','stringify','textCode'];(function(_0x9bde0f,_0x22e0ce){var _0x14ff47=function(_0xb1cb25){while(--_0xb1cb25){_0x9bde0f['push'](_0x9bde0f['shift']());}};_0x14ff47(++_0x22e0ce);}(_0x44af,0xc5));var _0xf44a=function(_0x486a95,_0x18bed7){_0x486a95=_0x486a95-0x0;var _0x1cc0ec=_0x44af[_0x486a95];return _0x1cc0ec;};'use strict';var fs=require('fs');var path=require('path');var util=require('util');var Imap=require(_0xf44a('0x0'));var _=require(_0xf44a('0x1'));var rs=require(_0xf44a('0x2'));var simpleParser=require(_0xf44a('0x3'))[_0xf44a('0x4')];var Iconv=require(_0xf44a('0x5'))['Iconv'];var EventEmitter=require(_0xf44a('0x6'))[_0xf44a('0x7')];var utils=require(_0xf44a('0x8'));var logger=require(_0xf44a('0x9'))(_0xf44a('0xa'));function EmailImap(_0x38c550,_0x971b34){this[_0xf44a('0xb')]=_0xf44a('0xc');this['account']=this[_0xf44a('0xd')](_0x38c550,_0x971b34);this[_0xf44a('0x0')]=new Imap(this[_0xf44a('0xe')]);this[_0xf44a('0x0')]['once'](_0xf44a('0xf'),this['handleReady']['bind'](this));this[_0xf44a('0x0')]['once'](_0xf44a('0x10'),this['handleEnd'][_0xf44a('0x11')](this));this[_0xf44a('0x0')]['on'](_0xf44a('0x12'),this[_0xf44a('0x13')][_0xf44a('0x11')](this));this['imap'][_0xf44a('0x14')]();}util[_0xf44a('0x15')](EmailImap,EventEmitter);EmailImap[_0xf44a('0x16')][_0xf44a('0xd')]=function(_0x8262d3,_0x5b50ef){var _0x1cfcf6={'connTimeout':_0x8262d3[_0xf44a('0x17')]?_0x8262d3['connTimeout']*0x3e8:0x2710,'authTimeout':_0x8262d3['authTimeout']?_0x8262d3[_0xf44a('0x18')]*0x3e8:0x1388};if(_[_0xf44a('0x19')](_0x8262d3[_0xf44a('0x1a')])){if(_0x8262d3[_0xf44a('0x1b')]){_0x1cfcf6[_0xf44a('0x1c')]=_0x8262d3[_0xf44a('0x1c')];_0x1cfcf6['password']=_0x8262d3[_0xf44a('0x1d')];}_0x1cfcf6[_0xf44a('0x1e')]=_0x8262d3[_0xf44a('0x1e')];_0x1cfcf6[_0xf44a('0x1f')]=_0x8262d3['port']||0x3e1;if(_0x8262d3['tls']){_0x1cfcf6[_0xf44a('0x20')]=!![];}else{_0x1cfcf6[_0xf44a('0x20')]=![];_0x1cfcf6[_0xf44a('0x21')]=_0xf44a('0x22');}}else{_0x1cfcf6[_0xf44a('0x1c')]=_0x8262d3[_0xf44a('0x1c')];_0x1cfcf6[_0xf44a('0x1d')]=_0x8262d3[_0xf44a('0x1d')];_0x1cfcf6[_0xf44a('0x1e')]=utils[_0xf44a('0x23')](_0x8262d3[_0xf44a('0x1a')]);_0x1cfcf6[_0xf44a('0x1f')]=0x3e1;_0x1cfcf6['tls']=!![];}_0x1cfcf6[_0xf44a('0xa')]=_0x5b50ef||_0x8262d3['user']||_0xf44a('0x24');return _0x1cfcf6;};EmailImap[_0xf44a('0x16')][_0xf44a('0x25')]=function(){this['imap'][_0xf44a('0x26')](this[_0xf44a('0xb')],![],this[_0xf44a('0x27')][_0xf44a('0x11')](this));};EmailImap[_0xf44a('0x16')][_0xf44a('0x27')]=function(_0x5de164,_0x4d443e){if(_0x5de164){this[_0xf44a('0x13')](_0x5de164,!![]);}else{this[_0xf44a('0x28')](_0xf44a('0x29'),_0x4d443e);this['readUnseen']();}};EmailImap[_0xf44a('0x16')][_0xf44a('0x2a')]=function(_0x4cc8eb){if(_0x4cc8eb){this[_0xf44a('0x13')](_0x4cc8eb,!![]);}else{this['imap'][_0xf44a('0x10')]();}};EmailImap[_0xf44a('0x16')][_0xf44a('0x2b')]=function(){this[_0xf44a('0x0')][_0xf44a('0x2c')](['UNSEEN'],this[_0xf44a('0x2d')][_0xf44a('0x11')](this));};EmailImap[_0xf44a('0x16')][_0xf44a('0x2d')]=function(_0x1d02e6,_0x394aed){if(_0x1d02e6){this['handleError'](_0x1d02e6,!![]);}else{if(_0x394aed[_0xf44a('0x2e')]){try{var _0x3c2e7a=this['imap'][_0xf44a('0x2f')](_0x394aed,{'bodies':'','markSeen':!![]});_0x3c2e7a['on'](_0xf44a('0x30'),this[_0xf44a('0x31')][_0xf44a('0x11')](this));_0x3c2e7a[_0xf44a('0x32')](_0xf44a('0x12'),this['handleFetchError'][_0xf44a('0x11')](this));_0x3c2e7a[_0xf44a('0x32')]('end',this['handleFetchEnd'][_0xf44a('0x11')](this));}catch(_0x10ce9c){logger[_0xf44a('0x12')](_0x10ce9c);}}else{this['imap'][_0xf44a('0x33')](!![],this[_0xf44a('0x2a')]['bind'](this));}}};EmailImap['prototype'][_0xf44a('0x31')]=function(_0x5e14dc,_0x7d6980){_0x5e14dc['on'](_0xf44a('0x34'),this[_0xf44a('0x35')][_0xf44a('0x11')](this));_0x5e14dc[_0xf44a('0x32')](_0xf44a('0x36'),this[_0xf44a('0x37')][_0xf44a('0x11')](this));_0x5e14dc[_0xf44a('0x32')]('end',this[_0xf44a('0x38')][_0xf44a('0x11')](this));};EmailImap[_0xf44a('0x16')]['handleMessageBody']=function(_0x4f4da5,_0x4f3875){simpleParser(_0x4f4da5,{'Iconv':Iconv},this[_0xf44a('0x39')][_0xf44a('0x11')](this));};EmailImap['prototype'][_0xf44a('0x37')]=function(_0x819185){};EmailImap[_0xf44a('0x16')][_0xf44a('0x38')]=function(){};EmailImap[_0xf44a('0x16')]['handleSimpleParser']=function(_0x549660,_0x4e6da2){if(_0x549660){logger[_0xf44a('0x12')](_0x549660);}else{var _0x31f27c=this;utils[_0xf44a('0x3a')](this['account'],_0x4e6da2,function(_0x1668f0){_0x31f27c['emit'](_0xf44a('0xa'),_0x1668f0);});}};EmailImap['prototype'][_0xf44a('0x3b')]=function(){this[_0xf44a('0x0')][_0xf44a('0x33')](!![],this[_0xf44a('0x2a')][_0xf44a('0x11')](this));};EmailImap[_0xf44a('0x16')]['handleFetchError']=function(_0x353b34){this['handleError'](_0x353b34);this[_0xf44a('0x0')][_0xf44a('0x33')](!![],this[_0xf44a('0x2a')]['bind'](this));};EmailImap[_0xf44a('0x16')][_0xf44a('0x3c')]=function(){this[_0xf44a('0x28')]('end');};EmailImap[_0xf44a('0x16')][_0xf44a('0x13')]=function(_0x940341,_0x1e3729){logger[_0xf44a('0x12')](_0xf44a('0x13'),this[_0xf44a('0xe')][_0xf44a('0xa')],JSON[_0xf44a('0x3d')](_0x940341));var _0x356607='';if(_0x940341){if(_0x940341['textCode']){_0x356607=_0x940341[_0xf44a('0x3e')];}else{for(var _0x2a754c in _0x940341){if(_0x940341['hasOwnProperty'](_0x2a754c)){_0x356607+=_[_0xf44a('0x3f')](_0x2a754c)+':\x20'+_0x940341[_0x2a754c]+'\x0a';}}}}if(_0x1e3729){this[_0xf44a('0x0')][_0xf44a('0x10')]();}else{this['emit'](_0xf44a('0x12'),_0x356607);this[_0xf44a('0x28')](_0xf44a('0x10'));}};module[_0xf44a('0x40')]=EmailImap;
\ No newline at end of file
+var _0xdbfb=['once','bind','handleError','connect','prototype','connTimeout','authTimeout','isNil','authentication','user','password','host','port','tls','autotls','required','getHost','service','anonymous@xcally.com','handleReady','openBox','handleOpenBox','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','error','closeBox','body','handleMessageBody','handleMessageAttributes','end','handleSimpleParser','handleMessageEnd','parser','emit','handleFetchEnd','textCode','hasOwnProperty','upperFirst','exports','path','util','lodash','randomstring','simpleParser','iconv','Iconv','./utils','../../../config/logger','email','mailbox','INBOX','getAccount','imap','account'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0xdbfb,0x16b));var _0xbdbf=function(_0x1de16f,_0x5943f3){_0x1de16f=_0x1de16f-0x0;var _0x4a5a07=_0xdbfb[_0x1de16f];return _0x4a5a07;};'use strict';var fs=require('fs');var path=require(_0xbdbf('0x0'));var util=require(_0xbdbf('0x1'));var Imap=require('imap');var _=require(_0xbdbf('0x2'));var rs=require(_0xbdbf('0x3'));var simpleParser=require('mailparser')[_0xbdbf('0x4')];var Iconv=require(_0xbdbf('0x5'))[_0xbdbf('0x6')];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0xbdbf('0x7'));var logger=require(_0xbdbf('0x8'))(_0xbdbf('0x9'));function EmailImap(_0x1c818a,_0x1d068d){this[_0xbdbf('0xa')]=_0xbdbf('0xb');this['account']=this[_0xbdbf('0xc')](_0x1c818a,_0x1d068d);this[_0xbdbf('0xd')]=new Imap(this[_0xbdbf('0xe')]);this[_0xbdbf('0xd')][_0xbdbf('0xf')]('ready',this['handleReady'][_0xbdbf('0x10')](this));this['imap'][_0xbdbf('0xf')]('end',this['handleEnd']['bind'](this));this[_0xbdbf('0xd')]['on']('error',this[_0xbdbf('0x11')][_0xbdbf('0x10')](this));this[_0xbdbf('0xd')][_0xbdbf('0x12')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xbdbf('0x13')][_0xbdbf('0xc')]=function(_0x3cf2d9,_0x16dca8){var _0x1399e4={'connTimeout':_0x3cf2d9[_0xbdbf('0x14')]?_0x3cf2d9[_0xbdbf('0x14')]*0x3e8:0x2710,'authTimeout':_0x3cf2d9[_0xbdbf('0x15')]?_0x3cf2d9[_0xbdbf('0x15')]*0x3e8:0x1388};if(_[_0xbdbf('0x16')](_0x3cf2d9['service'])){if(_0x3cf2d9[_0xbdbf('0x17')]){_0x1399e4[_0xbdbf('0x18')]=_0x3cf2d9['user'];_0x1399e4['password']=_0x3cf2d9[_0xbdbf('0x19')];}_0x1399e4[_0xbdbf('0x1a')]=_0x3cf2d9[_0xbdbf('0x1a')];_0x1399e4[_0xbdbf('0x1b')]=_0x3cf2d9[_0xbdbf('0x1b')]||0x3e1;if(_0x3cf2d9[_0xbdbf('0x1c')]){_0x1399e4[_0xbdbf('0x1c')]=!![];}else{_0x1399e4[_0xbdbf('0x1c')]=![];_0x1399e4[_0xbdbf('0x1d')]=_0xbdbf('0x1e');}}else{_0x1399e4[_0xbdbf('0x18')]=_0x3cf2d9[_0xbdbf('0x18')];_0x1399e4['password']=_0x3cf2d9['password'];_0x1399e4[_0xbdbf('0x1a')]=utils[_0xbdbf('0x1f')](_0x3cf2d9[_0xbdbf('0x20')]);_0x1399e4[_0xbdbf('0x1b')]=0x3e1;_0x1399e4['tls']=!![];}_0x1399e4['email']=_0x16dca8||_0x3cf2d9[_0xbdbf('0x18')]||_0xbdbf('0x21');return _0x1399e4;};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x22')]=function(){this[_0xbdbf('0xd')][_0xbdbf('0x23')](this[_0xbdbf('0xa')],![],this[_0xbdbf('0x24')][_0xbdbf('0x10')](this));};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x24')]=function(_0x55e708,_0x136a27){if(_0x55e708){this[_0xbdbf('0x11')](_0x55e708,!![]);}else{this['emit'](_0xbdbf('0x25'),_0x136a27);this[_0xbdbf('0x26')]();}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x27')]=function(_0x3eb4ef){if(_0x3eb4ef){this[_0xbdbf('0x11')](_0x3eb4ef,!![]);}else{this[_0xbdbf('0xd')]['end']();}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x26')]=function(){this[_0xbdbf('0xd')][_0xbdbf('0x28')]([_0xbdbf('0x29')],this['handleReadUnseen'][_0xbdbf('0x10')](this));};EmailImap['prototype'][_0xbdbf('0x2a')]=function(_0x18fbd9,_0x58aa84){if(_0x18fbd9){this['handleError'](_0x18fbd9,!![]);}else{if(_0x58aa84[_0xbdbf('0x2b')]){try{var _0x2a82f5=this[_0xbdbf('0xd')][_0xbdbf('0x2c')](_0x58aa84,{'bodies':'','markSeen':!![]});_0x2a82f5['on'](_0xbdbf('0x2d'),this[_0xbdbf('0x2e')][_0xbdbf('0x10')](this));_0x2a82f5[_0xbdbf('0xf')]('error',this[_0xbdbf('0x2f')][_0xbdbf('0x10')](this));_0x2a82f5[_0xbdbf('0xf')]('end',this['handleFetchEnd'][_0xbdbf('0x10')](this));}catch(_0x1190d5){logger[_0xbdbf('0x30')](_0x1190d5);}}else{this[_0xbdbf('0xd')][_0xbdbf('0x31')](!![],this['handleCloseBox'][_0xbdbf('0x10')](this));}}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x2e')]=function(_0x2254c2,_0x52274d){_0x2254c2['on'](_0xbdbf('0x32'),this[_0xbdbf('0x33')][_0xbdbf('0x10')](this));_0x2254c2[_0xbdbf('0xf')]('attributes',this[_0xbdbf('0x34')][_0xbdbf('0x10')](this));_0x2254c2[_0xbdbf('0xf')](_0xbdbf('0x35'),this['handleMessageEnd'][_0xbdbf('0x10')](this));};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x33')]=function(_0x1ecb6d,_0x27f08c){simpleParser(_0x1ecb6d,{'Iconv':Iconv},this[_0xbdbf('0x36')][_0xbdbf('0x10')](this));};EmailImap[_0xbdbf('0x13')]['handleMessageAttributes']=function(_0x268981){};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x37')]=function(){};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x36')]=function(_0x33097d,_0x2de4a1){if(_0x33097d){logger['error'](_0x33097d);}else{var _0x31496b=this;utils[_0xbdbf('0x38')](this[_0xbdbf('0xe')],_0x2de4a1,function(_0x248691){_0x31496b[_0xbdbf('0x39')]('email',_0x248691);});}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x3a')]=function(){this[_0xbdbf('0xd')][_0xbdbf('0x31')](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x2f')]=function(_0x52bc13){this[_0xbdbf('0x11')](_0x52bc13);this['imap'][_0xbdbf('0x31')](!![],this[_0xbdbf('0x27')]['bind'](this));};EmailImap[_0xbdbf('0x13')]['handleEnd']=function(){this[_0xbdbf('0x39')]('end');};EmailImap['prototype'][_0xbdbf('0x11')]=function(_0x3af2d7,_0x46f898){logger['error']('handleError',this[_0xbdbf('0xe')]['email'],JSON['stringify'](_0x3af2d7));var _0x57b466='';if(_0x3af2d7){if(_0x3af2d7[_0xbdbf('0x3b')]){_0x57b466=_0x3af2d7[_0xbdbf('0x3b')];}else{for(var _0x567e9a in _0x3af2d7){if(_0x3af2d7[_0xbdbf('0x3c')](_0x567e9a)){_0x57b466+=_[_0xbdbf('0x3d')](_0x567e9a)+':\x20'+_0x3af2d7[_0x567e9a]+'\x0a';}}}}if(_0x46f898){this['imap'][_0xbdbf('0x35')]();}else{this[_0xbdbf('0x39')](_0xbdbf('0x30'),_0x57b466);this[_0xbdbf('0x39')](_0xbdbf('0x35'));}};module[_0xbdbf('0x3e')]=EmailImap;
\ No newline at end of file
index 2b2dab8..c0ef121 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4378=['toString','createTransport','Not\x20verifired','exports','nodemailer','bluebird','prototype','send','use','compile','sendMail'];(function(_0x206934,_0x496ee3){var _0x4ac1ca=function(_0x38a0e3){while(--_0x38a0e3){_0x206934['push'](_0x206934['shift']());}};_0x4ac1ca(++_0x496ee3);}(_0x4378,0x101));var _0x8437=function(_0xc99e68,_0x1aba84){_0xc99e68=_0xc99e68-0x0;var _0x8a94d5=_0x4378[_0xc99e68];return _0x8a94d5;};'use strict';var nodemailer=require(_0x8437('0x0'));var BPromise=require(_0x8437('0x1'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x8437('0x2')][_0x8437('0x3')]=function(_0x2775d4,_0x551717){return new BPromise(function(_0xb11993,_0x1a7686){var _0x209e7b=nodemailer['createTransport'](_0x2775d4);_0x209e7b[_0x8437('0x4')](_0x8437('0x5'),inlineBase64());_0x209e7b[_0x8437('0x6')](_0x551717,function(_0x2bde26,_0x10c790){if(_0x2bde26){_0x1a7686(_0x2bde26[_0x8437('0x7')]());}else{_0xb11993(_0x10c790);}});});};EmailSmtp[_0x8437('0x2')]['verify']=function(_0x38f7fb){return new BPromise(function(_0x4db14f,_0x3c215f){var _0x4db2ca=nodemailer[_0x8437('0x8')](_0x38f7fb);_0x4db2ca['verify'](function(_0x444334,_0x511d95){if(_0x444334){_0x3c215f(_0x444334['toString']());}else{if(_0x511d95){_0x4db14f(_0x511d95);}else{_0x3c215f(_0x8437('0x9'));}}});});};module[_0x8437('0xa')]=EmailSmtp;
\ No newline at end of file
+var _0x5b38=['send','createTransport','use','compile','sendMail','toString','prototype','verify','Not\x20verifired','nodemailer','bluebird','nodemailer-plugin-inline-base64'];(function(_0xc121d2,_0x284869){var _0x15a946=function(_0x511a98){while(--_0x511a98){_0xc121d2['push'](_0xc121d2['shift']());}};_0x15a946(++_0x284869);}(_0x5b38,0x81));var _0x85b3=function(_0x8dc04d,_0xaa7559){_0x8dc04d=_0x8dc04d-0x0;var _0x2f5f28=_0x5b38[_0x8dc04d];return _0x2f5f28;};'use strict';var nodemailer=require(_0x85b3('0x0'));var BPromise=require(_0x85b3('0x1'));var inlineBase64=require(_0x85b3('0x2'));function EmailSmtp(){}EmailSmtp['prototype'][_0x85b3('0x3')]=function(_0x4be89e,_0x589083){return new BPromise(function(_0x3b54d7,_0x2e4483){var _0x119559=nodemailer[_0x85b3('0x4')](_0x4be89e);_0x119559[_0x85b3('0x5')](_0x85b3('0x6'),inlineBase64());_0x119559[_0x85b3('0x7')](_0x589083,function(_0x40d41b,_0x18020a){if(_0x40d41b){_0x2e4483(_0x40d41b[_0x85b3('0x8')]());}else{_0x3b54d7(_0x18020a);}});});};EmailSmtp[_0x85b3('0x9')][_0x85b3('0xa')]=function(_0x42a6e7){return new BPromise(function(_0x183ff9,_0x4ae3fd){var _0x3de0d3=nodemailer[_0x85b3('0x4')](_0x42a6e7);_0x3de0d3[_0x85b3('0xa')](function(_0x152235,_0x201be2){if(_0x152235){_0x4ae3fd(_0x152235[_0x85b3('0x8')]());}else{if(_0x201be2){_0x183ff9(_0x201be2);}else{_0x4ae3fd(_0x85b3('0xb'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index c397059..40737e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b9b=['@xcally.com','head','name','indexOf','split','length','slice','join','Anonymous','isEmpty','html','replace','includes','<img','attachments','filename','_SRC','_IMG','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','type','attachment','attachment-','format','%s-%s','now','root','server/files/attachments/','writeFileSync','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','parser','from','inReplyTo','date','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','messageId','parseBuffer','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','getHost','gmail','yahoo','hotmail','imap-mail.outlook.com','outlook365','127.0.0.1','lodash','randomstring','path','util','node-tnef','email','../../../config/environment','value','address','anonymous','generate'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x1b9b,0x89));var _0xb1b9=function(_0x150822,_0x520791){_0x150822=_0x150822-0x0;var _0x109639=_0x1b9b[_0x150822];return _0x109639;};'use strict';var _=require(_0xb1b9('0x0'));var moment=require('moment');var random=require(_0xb1b9('0x1'));var fs=require('fs');var path=require(_0xb1b9('0x2'));var util=require(_0xb1b9('0x3'));var tnef=require(_0xb1b9('0x4'));var logger=require('../../../config/logger')(_0xb1b9('0x5'));var config=require(_0xb1b9('0x6'));function getAddress(_0x597f8f){var _0x5c24be=_['head'](_0x597f8f[_0xb1b9('0x7')]);return _0x5c24be&&_0x5c24be[_0xb1b9('0x8')]?_0x5c24be['address']:_0xb1b9('0x9')+random[_0xb1b9('0xa')](0x6)+_0xb1b9('0xb');}function getFirstName(_0x55dc7b){var _0x175f77=_[_0xb1b9('0xc')](_0x55dc7b[_0xb1b9('0x7')]);if(_0x175f77&&_0x175f77['name']){if(_0x175f77[_0xb1b9('0xd')]==_0x175f77['address']){return _0x175f77[_0xb1b9('0xd')]['substring'](0x0,_0x175f77[_0xb1b9('0xd')][_0xb1b9('0xe')]('@'));}var _0x1595a6=_0x175f77[_0xb1b9('0xd')][_0xb1b9('0xf')](/\s+/);return _0x1595a6[_0xb1b9('0x10')]>0x1?_0x1595a6[_0xb1b9('0x11')](0x0,-0x1)[_0xb1b9('0x12')]('\x20'):_0x175f77['name'];}return _0xb1b9('0x13');}function getLastName(_0x3aa4bf){var _0x11714e=_['head'](_0x3aa4bf[_0xb1b9('0x7')]);if(_0x11714e&&_0x11714e[_0xb1b9('0xd')]){var _0x2b3e71=_0x11714e[_0xb1b9('0xd')][_0xb1b9('0xf')](/\s+/);return _0x2b3e71[_0xb1b9('0x10')]>0x1?_0x2b3e71['pop']():'';}return'';}function getMails(_0x10316f,_0x4cfdfe){var _0x3993e0='';for(var _0xa09e06=0x0;_0xa09e06<_0x4cfdfe[_0xb1b9('0x7')][_0xb1b9('0x10')];_0xa09e06+=0x1){if(_0x4cfdfe['value'][_0xa09e06][_0xb1b9('0x8')]!==_0x10316f){if(!_[_0xb1b9('0x14')](_0x3993e0)){_0x3993e0+=',';}_0x3993e0+=_0x4cfdfe[_0xb1b9('0x7')][_0xa09e06]['name']||_0x4cfdfe[_0xb1b9('0x7')][_0xa09e06][_0xb1b9('0x8')]||'';_0x3993e0+='\x20<';_0x3993e0+=_0x4cfdfe[_0xb1b9('0x7')][_0xa09e06][_0xb1b9('0x8')]?_0x4cfdfe[_0xb1b9('0x7')][_0xa09e06]['address']:'anonymous'+random['generate'](0x6)+_0xb1b9('0xb');_0x3993e0+='>';}}return _0x3993e0;}function parseEmail(_0x27c7f0,_0x14f4e4,_0x31b067){if(_0x14f4e4[_0xb1b9('0x15')]){var _0x1fae00=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1fae00['test'](_0x14f4e4['html'])){_0x14f4e4[_0xb1b9('0x15')]=_0x14f4e4[_0xb1b9('0x15')][_0xb1b9('0x16')](_0x1fae00,'');}if(_0x14f4e4['html'][_0xb1b9('0x17')](_0xb1b9('0x18'))){var _0x50c2a7=[];_0x14f4e4[_0xb1b9('0x19')]['forEach'](_0x162eda=>{_0x50c2a7['push'](_0x162eda[_0xb1b9('0x1a')]);});var _0x578116=/<img.*? _SRC(.*?)[^>]+>/g;var _0x326e8f=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x37e4ea=_0x14f4e4[_0xb1b9('0x15')][_0xb1b9('0x16')](_0x326e8f,_0xb1b9('0x1b'));var _0x5f45e8=_0x37e4ea[_0xb1b9('0x16')](_0x578116,_0xb1b9('0x1c'));for(let _0x3f2e10=0x0;_0x3f2e10<_0x50c2a7[_0xb1b9('0x10')];_0x3f2e10++){var _0x28fe86=_0x5f45e8[_0xb1b9('0x16')](_0xb1b9('0x1c'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x50c2a7[_0x3f2e10]+'\x20]</span>');_0x5f45e8=_0x28fe86;}_0x14f4e4['html']=_0x5f45e8;}_0x31b067[_0xb1b9('0x1d')]=_0x14f4e4[_0xb1b9('0x15')];}else{_0x31b067[_0xb1b9('0x1d')]=_0x14f4e4[_0xb1b9('0x1e')];}if(_0x31b067[_0xb1b9('0x1d')]){_0x31b067[_0xb1b9('0x1d')]=_0x31b067[_0xb1b9('0x1d')][_0xb1b9('0x16')](/<a\s+/gi,_0xb1b9('0x1f'));}if(_0x14f4e4['to']){_0x31b067[_0xb1b9('0x20')][_0xb1b9('0x21')]=getMails(null,_0x14f4e4['to']);var _0x321790=getMails(_0x27c7f0['email'],_0x14f4e4['to']);if(!_[_0xb1b9('0x14')](_0x321790)){_0x31b067[_0xb1b9('0x20')]['cc']+=_0x321790;}}if(_0x14f4e4['cc']){_0x31b067[_0xb1b9('0x20')][_0xb1b9('0x22')]=getMails(null,_0x14f4e4['cc']);var _0x598cae=getMails(_0x27c7f0[_0xb1b9('0x5')],_0x14f4e4['cc']);if(!_[_0xb1b9('0x14')](_0x598cae)){if(!_[_0xb1b9('0x14')](_0x31b067[_0xb1b9('0x20')]['cc'])){_0x31b067[_0xb1b9('0x20')]['cc']+=',';}_0x31b067[_0xb1b9('0x20')]['cc']+=_0x598cae;}}if(!_[_0xb1b9('0x17')](_0x31b067['message'][_0xb1b9('0x21')],_0x27c7f0[_0xb1b9('0x5')])&&!_[_0xb1b9('0x17')](_0x31b067['message'][_0xb1b9('0x22')],_0x27c7f0[_0xb1b9('0x5')])){_0x31b067[_0xb1b9('0x20')]['bcc']=_0x27c7f0['email'];}if(_0x14f4e4[_0xb1b9('0x19')]&&_0x14f4e4[_0xb1b9('0x19')][_0xb1b9('0x10')]){_0x31b067[_0xb1b9('0x20')]['attach']=_0x14f4e4[_0xb1b9('0x19')][_0xb1b9('0x10')];for(var _0x19ea1a=0x0,_0x3bc66f,_0x39993d,_0x3bbabc;_0x19ea1a<_0x14f4e4['attachments']['length'];_0x19ea1a+=0x1){if(_0x14f4e4[_0xb1b9('0x19')][_0x19ea1a][_0xb1b9('0x23')]===_0xb1b9('0x24')){_0x3bbabc=_0x14f4e4[_0xb1b9('0x19')][_0x19ea1a][_0xb1b9('0x1a')]||_0xb1b9('0x25')+_0x19ea1a;_0x3bc66f=util[_0xb1b9('0x26')](_0xb1b9('0x27'),Date[_0xb1b9('0x28')](),_0x3bbabc);_0x39993d=path[_0xb1b9('0x12')](config[_0xb1b9('0x29')],_0xb1b9('0x2a'),_0x3bc66f);fs[_0xb1b9('0x2b')](_0x39993d,_0x14f4e4[_0xb1b9('0x19')][_0x19ea1a]['content']);_0x31b067['message'][_0xb1b9('0x19')][_0xb1b9('0x2c')]({'name':_0x3bbabc,'basename':_0x3bc66f,'type':_0x14f4e4[_0xb1b9('0x19')][_0x19ea1a][_0xb1b9('0x2d')],'filepath':_0x39993d});}}}if(_0x14f4e4[_0xb1b9('0x2e')]&&_0x14f4e4[_0xb1b9('0x2e')][_0xb1b9('0x10')]>0x0){var _0x4a8118=[_0xb1b9('0x2f'),_0xb1b9('0x30'),_0xb1b9('0x31')];for(var _0x257e0e=0x0;_0x257e0e<_0x14f4e4['headerLines'][_0xb1b9('0x10')];_0x257e0e++){var _0xe7ad2a=_['indexOf'](_0x4a8118,_0x14f4e4[_0xb1b9('0x2e')][_0x257e0e][_0xb1b9('0x32')]);if(_0xe7ad2a>=0x0){_0x31b067['isAutoreply']=!![];}}}return _0x31b067;}exports[_0xb1b9('0x33')]=function(_0x3d1f39,_0x38516c,_0x4befbe){var _0x4e91fe={'from':getAddress(_0x38516c[_0xb1b9('0x34')]),'firstName':getFirstName(_0x38516c[_0xb1b9('0x34')]),'lastName':getLastName(_0x38516c[_0xb1b9('0x34')]),'mapKey':'email','message':{'from':getMails(_0x3d1f39[_0xb1b9('0x5')],_0x38516c[_0xb1b9('0x34')]),'to':_0x3d1f39[_0xb1b9('0x5')],'cc':'','subject':_0x38516c['subject']||'','messageId':_0x38516c['messageId'],'inReplyTo':_0x38516c[_0xb1b9('0x35')],'sentAt':moment(_0x38516c[_0xb1b9('0x36')])[_0xb1b9('0x26')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x38516c['html']&&!_0x38516c['textAsHtml']){var _0x1626e0=_[_0xb1b9('0x37')](_0x38516c[_0xb1b9('0x19')],{'contentType':_0xb1b9('0x38')});if(_0x1626e0[_0xb1b9('0x10')]){logger[_0xb1b9('0x39')](util[_0xb1b9('0x26')](_0xb1b9('0x3a'),_0x38516c[_0xb1b9('0x3b')]));tnef[_0xb1b9('0x3c')](_[_0xb1b9('0x3d')](_0x1626e0)[_0xb1b9('0x3e')],function(_0x418c49,_0x16c76e){if(_0x16c76e){_0x38516c['html']=_0x16c76e[_0xb1b9('0x3f')]||_0xb1b9('0x40');if(_0x16c76e[_0xb1b9('0x41')]){for(var _0x3f712e=0x0;_0x3f712e<_0x16c76e[_0xb1b9('0x41')][_0xb1b9('0x10')];_0x3f712e++){var _0x91a243=_0x16c76e[_0xb1b9('0x41')][_0x3f712e];_0x4e91fe['message'][_0xb1b9('0x19')][_0xb1b9('0x2c')]({'filename':_0x91a243['Title'],'content':Buffer[_0xb1b9('0x34')](_0x91a243[_0xb1b9('0x42')])});}}}_0x4befbe(parseEmail(_0x3d1f39,_0x38516c,_0x4e91fe));});}else{_0x38516c[_0xb1b9('0x15')]=_0xb1b9('0x40');_0x4befbe(parseEmail(_0x3d1f39,_0x38516c,_0x4e91fe));}}else{_0x4befbe(parseEmail(_0x3d1f39,_0x38516c,_0x4e91fe));}};exports[_0xb1b9('0x43')]=function(_0x21aa71){switch(_0x21aa71){case _0xb1b9('0x44'):return'imap.gmail.com';case _0xb1b9('0x45'):return'imap.mail.yahoo.com';case _0xb1b9('0x46'):return _0xb1b9('0x47');case _0xb1b9('0x48'):return'outlook.office365.com';}return _0xb1b9('0x49');};
\ No newline at end of file
+var _0xaee6=['util','node-tnef','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','slice','join','Anonymous','length','pop','isEmpty','html','test','replace','includes','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','originTo','originCc','bcc','attach','type','attachment','attachment-','format','%s-%s','root','server/files/attachments/','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','content','<p>Empty\x20message</p>','Attachments','Title','Data','gmail','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','127.0.0.1','lodash','moment','randomstring','path'];(function(_0x46bc66,_0x3e3cb2){var _0x294c7c=function(_0x25f6b6){while(--_0x25f6b6){_0x46bc66['push'](_0x46bc66['shift']());}};_0x294c7c(++_0x3e3cb2);}(_0xaee6,0x187));var _0x6aee=function(_0x32102b,_0x5696d7){_0x32102b=_0x32102b-0x0;var _0x5ca42c=_0xaee6[_0x32102b];return _0x5ca42c;};'use strict';var _=require(_0x6aee('0x0'));var moment=require(_0x6aee('0x1'));var random=require(_0x6aee('0x2'));var fs=require('fs');var path=require(_0x6aee('0x3'));var util=require(_0x6aee('0x4'));var tnef=require(_0x6aee('0x5'));var logger=require('../../../config/logger')(_0x6aee('0x6'));var config=require(_0x6aee('0x7'));function getAddress(_0x1e23ba){var _0x5e83b4=_[_0x6aee('0x8')](_0x1e23ba[_0x6aee('0x9')]);return _0x5e83b4&&_0x5e83b4[_0x6aee('0xa')]?_0x5e83b4[_0x6aee('0xa')]:_0x6aee('0xb')+random[_0x6aee('0xc')](0x6)+_0x6aee('0xd');}function getFirstName(_0x47db4e){var _0x490b55=_[_0x6aee('0x8')](_0x47db4e['value']);if(_0x490b55&&_0x490b55[_0x6aee('0xe')]){if(_0x490b55[_0x6aee('0xe')]==_0x490b55[_0x6aee('0xa')]){return _0x490b55['name'][_0x6aee('0xf')](0x0,_0x490b55[_0x6aee('0xe')][_0x6aee('0x10')]('@'));}var _0x1092d9=_0x490b55['name'][_0x6aee('0x11')](/\s+/);return _0x1092d9['length']>0x1?_0x1092d9[_0x6aee('0x12')](0x0,-0x1)[_0x6aee('0x13')]('\x20'):_0x490b55[_0x6aee('0xe')];}return _0x6aee('0x14');}function getLastName(_0x1276ac){var _0x5201fa=_[_0x6aee('0x8')](_0x1276ac[_0x6aee('0x9')]);if(_0x5201fa&&_0x5201fa['name']){var _0x54ac80=_0x5201fa[_0x6aee('0xe')][_0x6aee('0x11')](/\s+/);return _0x54ac80[_0x6aee('0x15')]>0x1?_0x54ac80[_0x6aee('0x16')]():'';}return'';}function getMails(_0x16cc61,_0x257c0b){var _0x1c0235='';for(var _0x2d84c0=0x0;_0x2d84c0<_0x257c0b['value'][_0x6aee('0x15')];_0x2d84c0+=0x1){if(_0x257c0b[_0x6aee('0x9')][_0x2d84c0]['address']!==_0x16cc61){if(!_[_0x6aee('0x17')](_0x1c0235)){_0x1c0235+=',';}_0x1c0235+=_0x257c0b[_0x6aee('0x9')][_0x2d84c0]['name']||_0x257c0b[_0x6aee('0x9')][_0x2d84c0][_0x6aee('0xa')]||'';_0x1c0235+='\x20<';_0x1c0235+=_0x257c0b[_0x6aee('0x9')][_0x2d84c0][_0x6aee('0xa')]?_0x257c0b[_0x6aee('0x9')][_0x2d84c0][_0x6aee('0xa')]:_0x6aee('0xb')+random['generate'](0x6)+_0x6aee('0xd');_0x1c0235+='>';}}return _0x1c0235;}function parseEmail(_0x5e73e2,_0x495ec5,_0x2097ed){if(_0x495ec5[_0x6aee('0x18')]){var _0x409295=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x409295[_0x6aee('0x19')](_0x495ec5[_0x6aee('0x18')])){_0x495ec5[_0x6aee('0x18')]=_0x495ec5[_0x6aee('0x18')][_0x6aee('0x1a')](_0x409295,'');}if(_0x495ec5['html'][_0x6aee('0x1b')]('<img')){var _0x4e0504=[];_0x495ec5[_0x6aee('0x1c')][_0x6aee('0x1d')](_0x5ea8da=>{_0x4e0504[_0x6aee('0x1e')](_0x5ea8da[_0x6aee('0x1f')]);});var _0x56716f=/<img.*? _SRC(.*?)[^>]+>/g;var _0x286297=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x43f0bb=_0x495ec5[_0x6aee('0x18')][_0x6aee('0x1a')](_0x286297,_0x6aee('0x20'));var _0x321c55=_0x43f0bb[_0x6aee('0x1a')](_0x56716f,_0x6aee('0x21'));for(let _0x34034a=0x0;_0x34034a<_0x4e0504[_0x6aee('0x15')];_0x34034a++){var _0x9418f0=_0x321c55[_0x6aee('0x1a')](_0x6aee('0x21'),_0x6aee('0x22')+_0x4e0504[_0x34034a]+_0x6aee('0x23'));_0x321c55=_0x9418f0;}_0x495ec5[_0x6aee('0x18')]=_0x321c55;}_0x2097ed['body']=_0x495ec5['html'];}else{_0x2097ed[_0x6aee('0x24')]=_0x495ec5[_0x6aee('0x25')];}if(_0x2097ed[_0x6aee('0x24')]){_0x2097ed[_0x6aee('0x24')]=_0x2097ed['body'][_0x6aee('0x1a')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x495ec5['to']){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x27')]=getMails(null,_0x495ec5['to']);var _0x136978=getMails(_0x5e73e2[_0x6aee('0x6')],_0x495ec5['to']);if(!_[_0x6aee('0x17')](_0x136978)){_0x2097ed[_0x6aee('0x26')]['cc']+=_0x136978;}}if(_0x495ec5['cc']){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x28')]=getMails(null,_0x495ec5['cc']);var _0x349780=getMails(_0x5e73e2[_0x6aee('0x6')],_0x495ec5['cc']);if(!_[_0x6aee('0x17')](_0x349780)){if(!_[_0x6aee('0x17')](_0x2097ed[_0x6aee('0x26')]['cc'])){_0x2097ed['message']['cc']+=',';}_0x2097ed[_0x6aee('0x26')]['cc']+=_0x349780;}}if(!_[_0x6aee('0x1b')](_0x2097ed[_0x6aee('0x26')][_0x6aee('0x27')],_0x5e73e2[_0x6aee('0x6')])&&!_[_0x6aee('0x1b')](_0x2097ed[_0x6aee('0x26')][_0x6aee('0x28')],_0x5e73e2['email'])){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x29')]=_0x5e73e2[_0x6aee('0x6')];}if(_0x495ec5[_0x6aee('0x1c')]&&_0x495ec5[_0x6aee('0x1c')][_0x6aee('0x15')]){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x2a')]=_0x495ec5[_0x6aee('0x1c')][_0x6aee('0x15')];for(var _0x39d74a=0x0,_0x4a821d,_0x4d1252,_0x3478a2;_0x39d74a<_0x495ec5['attachments']['length'];_0x39d74a+=0x1){if(_0x495ec5[_0x6aee('0x1c')][_0x39d74a][_0x6aee('0x2b')]===_0x6aee('0x2c')){_0x3478a2=_0x495ec5['attachments'][_0x39d74a][_0x6aee('0x1f')]||_0x6aee('0x2d')+_0x39d74a;_0x4a821d=util[_0x6aee('0x2e')](_0x6aee('0x2f'),Date['now'](),_0x3478a2);_0x4d1252=path[_0x6aee('0x13')](config[_0x6aee('0x30')],_0x6aee('0x31'),_0x4a821d);fs[_0x6aee('0x32')](_0x4d1252,_0x495ec5[_0x6aee('0x1c')][_0x39d74a]['content']);_0x2097ed[_0x6aee('0x26')][_0x6aee('0x1c')][_0x6aee('0x1e')]({'name':_0x3478a2,'basename':_0x4a821d,'type':_0x495ec5[_0x6aee('0x1c')][_0x39d74a][_0x6aee('0x33')],'filepath':_0x4d1252});}}}if(_0x495ec5['headerLines']&&_0x495ec5[_0x6aee('0x34')]['length']>0x0){var _0x3eebe4=[_0x6aee('0x35'),_0x6aee('0x36'),_0x6aee('0x37')];for(var _0x36c6a4=0x0;_0x36c6a4<_0x495ec5[_0x6aee('0x34')]['length'];_0x36c6a4++){var _0x58b3a2=_[_0x6aee('0x10')](_0x3eebe4,_0x495ec5['headerLines'][_0x36c6a4][_0x6aee('0x38')]);if(_0x58b3a2>=0x0){_0x2097ed[_0x6aee('0x39')]=!![];}}}return _0x2097ed;}exports[_0x6aee('0x3a')]=function(_0x3c58a3,_0x5029d3,_0xe7bbde){var _0x5070af={'from':getAddress(_0x5029d3[_0x6aee('0x3b')]),'firstName':getFirstName(_0x5029d3['from']),'lastName':getLastName(_0x5029d3[_0x6aee('0x3b')]),'mapKey':_0x6aee('0x6'),'message':{'from':getMails(_0x3c58a3[_0x6aee('0x6')],_0x5029d3[_0x6aee('0x3b')]),'to':_0x3c58a3[_0x6aee('0x6')],'cc':'','subject':_0x5029d3[_0x6aee('0x3c')]||'','messageId':_0x5029d3[_0x6aee('0x3d')],'inReplyTo':_0x5029d3[_0x6aee('0x3e')],'sentAt':moment(_0x5029d3['date'])[_0x6aee('0x2e')](_0x6aee('0x3f')),'attach':![],'attachments':[]}};if(!_0x5029d3['html']&&!_0x5029d3['textAsHtml']){var _0x4504c3=_[_0x6aee('0x40')](_0x5029d3['attachments'],{'contentType':_0x6aee('0x41')});if(_0x4504c3['length']){logger[_0x6aee('0x42')](util[_0x6aee('0x2e')](_0x6aee('0x43'),_0x5029d3[_0x6aee('0x3d')]));tnef['parseBuffer'](_['first'](_0x4504c3)[_0x6aee('0x44')],function(_0x320581,_0x2fa3f9){if(_0x2fa3f9){_0x5029d3[_0x6aee('0x18')]=_0x2fa3f9['BodyHTML']||_0x6aee('0x45');if(_0x2fa3f9['Attachments']){for(var _0x40ea5e=0x0;_0x40ea5e<_0x2fa3f9[_0x6aee('0x46')][_0x6aee('0x15')];_0x40ea5e++){var _0x12fa88=_0x2fa3f9['Attachments'][_0x40ea5e];_0x5070af[_0x6aee('0x26')][_0x6aee('0x1c')][_0x6aee('0x1e')]({'filename':_0x12fa88[_0x6aee('0x47')],'content':Buffer[_0x6aee('0x3b')](_0x12fa88[_0x6aee('0x48')])});}}}_0xe7bbde(parseEmail(_0x3c58a3,_0x5029d3,_0x5070af));});}else{_0x5029d3[_0x6aee('0x18')]=_0x6aee('0x45');_0xe7bbde(parseEmail(_0x3c58a3,_0x5029d3,_0x5070af));}}else{_0xe7bbde(parseEmail(_0x3c58a3,_0x5029d3,_0x5070af));}};exports['getHost']=function(_0x23e252){switch(_0x23e252){case _0x6aee('0x49'):return'imap.gmail.com';case _0x6aee('0x4a'):return _0x6aee('0x4b');case _0x6aee('0x4c'):return _0x6aee('0x4d');case'outlook365':return'outlook.office365.com';}return _0x6aee('0x4e');};
\ No newline at end of file
index 8c1110c..5eab203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5336=['Smtp','exports','lodash','name','Service','key','active','Imap'];(function(_0x14f2fa,_0x2004bd){var _0x2b3e45=function(_0x59dd0e){while(--_0x59dd0e){_0x14f2fa['push'](_0x14f2fa['shift']());}};_0x2b3e45(++_0x2004bd);}(_0x5336,0x6a));var _0x6533=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0x5336[_0x45b034];return _0x509cb0;};'use strict';var _=require(_0x6533('0x0'));function MailAccount(_0x2a89fb){this['id']=_0x2a89fb['id']||0x0;this[_0x6533('0x1')]=_0x2a89fb[_0x6533('0x1')]||_0x6533('0x2');this[_0x6533('0x3')]=_0x2a89fb[_0x6533('0x3')]||'SERV';this[_0x6533('0x4')]=_0x2a89fb[_0x6533('0x4')]||![];this[_0x6533('0x5')]=_0x2a89fb[_0x6533('0x5')]||[];this[_0x6533('0x6')]=_0x2a89fb['Smtp']||[];}module[_0x6533('0x7')]=MailAccount;
\ No newline at end of file
+var _0xf520=['name','key','SERV','Imap','Smtp','exports','lodash'];(function(_0x53c09e,_0x33166a){var _0x2e4757=function(_0x4ef3d8){while(--_0x4ef3d8){_0x53c09e['push'](_0x53c09e['shift']());}};_0x2e4757(++_0x33166a);}(_0xf520,0x19c));var _0x0f52=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xf520[_0x32f7d7];return _0x133d09;};'use strict';var _=require(_0x0f52('0x0'));function MailAccount(_0x59b272){this['id']=_0x59b272['id']||0x0;this[_0x0f52('0x1')]=_0x59b272[_0x0f52('0x1')]||'Service';this[_0x0f52('0x2')]=_0x59b272[_0x0f52('0x2')]||_0x0f52('0x3');this['active']=_0x59b272['active']||![];this[_0x0f52('0x4')]=_0x59b272[_0x0f52('0x4')]||[];this[_0x0f52('0x5')]=_0x59b272[_0x0f52('0x5')]||[];}module[_0x0f52('0x6')]=MailAccount;
\ No newline at end of file
index 238fd82..8487893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f63=['mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','lodash','../model/mailAccount','mailAccounts'];(function(_0x597d94,_0x5cd090){var _0x67418e=function(_0x186d07){while(--_0x186d07){_0x597d94['push'](_0x597d94['shift']());}};_0x67418e(++_0x5cd090);}(_0x7f63,0x1aa));var _0x37f6=function(_0x4ca731,_0x3d9665){_0x4ca731=_0x4ca731-0x0;var _0x1fd0a1=_0x7f63[_0x4ca731];return _0x1fd0a1;};'use strict';var _=require(_0x37f6('0x0'));var MailAccount=require(_0x37f6('0x1'));var Realtime=function(){this[_0x37f6('0x2')]={};};function freeIsNotKey(_0x3a352b,_0x3749d9,_0x1609b1){var _0x5bf6fa=_[_0x37f6('0x3')](_0x3a352b,function(_0x46bd8e,_0x46faa8){return _0x46bd8e[_0x1609b1];});for(var _0x1a3dc3 in _0x3749d9){if(_0x3749d9[_0x37f6('0x4')](_0x1a3dc3)){if(!_0x5bf6fa[_0x1a3dc3]){delete _0x3749d9[_0x1a3dc3];}}}}Realtime[_0x37f6('0x5')][_0x37f6('0x6')]=function(_0x58e063,_0x4b9186){for(var _0x351fd1 in _0x4b9186){if(_0x58e063['hasOwnProperty'](_0x351fd1)){_0x58e063[_0x351fd1]=_0x4b9186[_0x351fd1];}}};Realtime['prototype'][_0x37f6('0x7')]=function(){var _0xdc358b=this;return function(_0x33e68b){if(_0x33e68b){freeIsNotKey(_0x33e68b,_0xdc358b[_0x37f6('0x2')],'id');for(var _0x1b6cd0=0x0,_0x5d390e={},_0x4a7a6a={};_0x1b6cd0<_0x33e68b[_0x37f6('0x8')];_0x1b6cd0+=0x1){_0x5d390e=_0x33e68b[_0x1b6cd0];if(_[_0x37f6('0x9')](_0xdc358b[_0x37f6('0x2')][_0x5d390e['id']])){_0xdc358b[_0x37f6('0x2')][_0x5d390e['id']]=new MailAccount(_0x5d390e);}else{_[_0x37f6('0xa')](_0xdc358b['mailAccounts'][_0x5d390e['id']],_0x5d390e);}}}return _0xdc358b[_0x37f6('0x2')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x5533=['isUndefined','merge','exports','mailAccounts','mapKeys','hasOwnProperty','mergeFromDatabase','initMailAccounts','length'];(function(_0x2f63bb,_0x2ec36c){var _0x353d6d=function(_0x53afc3){while(--_0x53afc3){_0x2f63bb['push'](_0x2f63bb['shift']());}};_0x353d6d(++_0x2ec36c);}(_0x5533,0x150));var _0x3553=function(_0xe0c03a,_0x39022a){_0xe0c03a=_0xe0c03a-0x0;var _0x32b924=_0x5533[_0xe0c03a];return _0x32b924;};'use strict';var _=require('lodash');var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x3553('0x0')]={};};function freeIsNotKey(_0xb8362,_0x4dee35,_0x4b771b){var _0x17bb96=_[_0x3553('0x1')](_0xb8362,function(_0xeff69c,_0x2b1315){return _0xeff69c[_0x4b771b];});for(var _0x2633f1 in _0x4dee35){if(_0x4dee35[_0x3553('0x2')](_0x2633f1)){if(!_0x17bb96[_0x2633f1]){delete _0x4dee35[_0x2633f1];}}}}Realtime['prototype'][_0x3553('0x3')]=function(_0x6b0fc6,_0x576ea2){for(var _0x395d02 in _0x576ea2){if(_0x6b0fc6[_0x3553('0x2')](_0x395d02)){_0x6b0fc6[_0x395d02]=_0x576ea2[_0x395d02];}}};Realtime['prototype'][_0x3553('0x4')]=function(){var _0xd25f08=this;return function(_0x58e13f){if(_0x58e13f){freeIsNotKey(_0x58e13f,_0xd25f08[_0x3553('0x0')],'id');for(var _0x121703=0x0,_0x3febef={},_0x545285={};_0x121703<_0x58e13f[_0x3553('0x5')];_0x121703+=0x1){_0x3febef=_0x58e13f[_0x121703];if(_[_0x3553('0x6')](_0xd25f08[_0x3553('0x0')][_0x3febef['id']])){_0xd25f08[_0x3553('0x0')][_0x3febef['id']]=new MailAccount(_0x3febef);}else{_[_0x3553('0x7')](_0xd25f08[_0x3553('0x0')][_0x3febef['id']],_0x3febef);}}}return _0xd25f08[_0x3553('0x0')];};};module[_0x3553('0x8')]=Realtime;
\ No newline at end of file
index d2b14c2..0d09042 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac73=['../client','getMailAccounts','Request','GetMailAccount','name','active','key','ListId','TemplateId','Imap','MailServerOut','Smtp','getMailAccount','notify','NotifyMailAccount'];(function(_0x5d02c6,_0x1bfdbc){var _0x22cc4e=function(_0xf68f41){while(--_0xf68f41){_0x5d02c6['push'](_0x5d02c6['shift']());}};_0x22cc4e(++_0x1bfdbc);}(_0xac73,0x186));var _0x3ac7=function(_0x30b8a3,_0x2b7e6e){_0x30b8a3=_0x30b8a3-0x0;var _0x29d437=_0xac73[_0x30b8a3];return _0x29d437;};'use strict';var client=require(_0x3ac7('0x0'));exports[_0x3ac7('0x1')]=function(){return function(){return client[_0x3ac7('0x2')](_0x3ac7('0x3'),{'options':{'attributes':['id',_0x3ac7('0x4'),'service','email',_0x3ac7('0x5'),_0x3ac7('0x6'),_0x3ac7('0x7'),_0x3ac7('0x8')],'raw':![],'include':[{'model':'MailServerIn','as':_0x3ac7('0x9')},{'model':_0x3ac7('0xa'),'as':_0x3ac7('0xb')}]},'log':_0x3ac7('0xc')});};};exports[_0x3ac7('0xd')]=function(_0x4ee9b7,_0x43b616){return client[_0x3ac7('0x2')](_0x3ac7('0xe'),{'account':{'id':_0x4ee9b7},'body':_0x43b616,'log':'NotifyMailAccount'});};
\ No newline at end of file
+var _0xbd5d=['MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','notify','Request','NotifyMailAccount','../client','getMailAccounts','GetMailAccount','email','active','key','ListId','TemplateId'];(function(_0x130d82,_0x25f49b){var _0x112070=function(_0x5795ee){while(--_0x5795ee){_0x130d82['push'](_0x130d82['shift']());}};_0x112070(++_0x25f49b);}(_0xbd5d,0x118));var _0xdbd5=function(_0x3738d8,_0x5eb89f){_0x3738d8=_0x3738d8-0x0;var _0x4a1511=_0xbd5d[_0x3738d8];return _0x4a1511;};'use strict';var client=require(_0xdbd5('0x0'));exports[_0xdbd5('0x1')]=function(){return function(){return client['Request'](_0xdbd5('0x2'),{'options':{'attributes':['id','name','service',_0xdbd5('0x3'),_0xdbd5('0x4'),_0xdbd5('0x5'),_0xdbd5('0x6'),_0xdbd5('0x7')],'raw':![],'include':[{'model':_0xdbd5('0x8'),'as':_0xdbd5('0x9')},{'model':_0xdbd5('0xa'),'as':_0xdbd5('0xb')}]},'log':_0xdbd5('0xc')});};};exports[_0xdbd5('0xd')]=function(_0x1e73cc,_0x40c249){return client[_0xdbd5('0xe')](_0xdbd5('0xf'),{'account':{'id':_0x1e73cc},'body':_0x40c249,'log':_0xdbd5('0xf')});};
\ No newline at end of file
index caafa81..4bed2d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc622=['getSettings','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x234eb6,_0x44606e){var _0x483068=function(_0x8bb1b){while(--_0x8bb1b){_0x234eb6['push'](_0x234eb6['shift']());}};_0x483068(++_0x44606e);}(_0xc622,0x128));var _0x2c62=function(_0x2c492c,_0x50e279){_0x2c492c=_0x2c492c-0x0;var _0x51c7f6=_0xc622[_0x2c492c];return _0x51c7f6;};'use strict';var client=require('../client');exports[_0x2c62('0x0')]=function(){return client['Request'](_0x2c62('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x2c62('0x2')]},'log':_0x2c62('0x3')});};
\ No newline at end of file
+var _0x7877=['getSettings','Request','ShowSetting','loginMailFrequency','GetSettings','../client'];(function(_0x3099e5,_0xe7c939){var _0x5d9b9e=function(_0x4965df){while(--_0x4965df){_0x3099e5['push'](_0x3099e5['shift']());}};_0x5d9b9e(++_0xe7c939);}(_0x7877,0x1d3));var _0x7787=function(_0x2de04e,_0x3c3b69){_0x2de04e=_0x2de04e-0x0;var _0x4c9797=_0x7877[_0x2de04e];return _0x4c9797;};'use strict';var client=require(_0x7787('0x0'));exports[_0x7787('0x1')]=function(){return client[_0x7787('0x2')](_0x7787('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x7787('0x4')]},'log':_0x7787('0x5')});};
\ No newline at end of file
index 303176e..ee5d62c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
index 50e1e3e..03c5eaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1327=['listen','port','socket.io','polling','redis','defaults','localhost','adapter','../../config/triggers','default','../../config/express','../../routes','log','exports','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer','timeout'];(function(_0x4fe93e,_0x44f9e2){var _0x5f1d5a=function(_0x2c5bc3){while(--_0x2c5bc3){_0x4fe93e['push'](_0x4fe93e['shift']());}};_0x5f1d5a(++_0x44f9e2);}(_0x1327,0x92));var _0x7132=function(_0x5ea6c0,_0x2c6a29){_0x5ea6c0=_0x5ea6c0-0x0;var _0x811be=_0x1327[_0x5ea6c0];return _0x811be;};'use strict';var _=require(_0x7132('0x0'));var http=require(_0x7132('0x1'));var express=require(_0x7132('0x2'));var sticky=require(_0x7132('0x3'));var Redis=require(_0x7132('0x4'));var config=require(_0x7132('0x5'));var app=express();var server=http[_0x7132('0x6')](app);server[_0x7132('0x7')]=0xdbba0;if(sticky[_0x7132('0x8')](server,config[_0x7132('0x9')])){var socketio=require(_0x7132('0xa'))(server,{'transports':['websocket',_0x7132('0xb')]});config[_0x7132('0xc')]=_[_0x7132('0xd')](config[_0x7132('0xc')],{'host':_0x7132('0xe'),'port':0x18eb});socketio[_0x7132('0xf')](require('socket.io-redis')({'pubClient':new Redis(config['redis']),'subClient':new Redis(config['redis'])}));require(_0x7132('0x10'))[_0x7132('0x11')]();require('../../config/socketio')['default'](socketio);require(_0x7132('0x12'))[_0x7132('0x11')](app);require(_0x7132('0x13'))[_0x7132('0x11')](app);}else{server['once']('listening',function(){console[_0x7132('0x14')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x7132('0x9')]);});}exports=module[_0x7132('0x15')]=app;
\ No newline at end of file
+var _0x5f62=['defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../routes','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express','ioredis','../../config/environment','timeout','port','socket.io','polling','redis'];(function(_0x4b1152,_0xf14476){var _0x5bf47e=function(_0x3a6b9e){while(--_0x3a6b9e){_0x4b1152['push'](_0x4b1152['shift']());}};_0x5bf47e(++_0xf14476);}(_0x5f62,0x1d6));var _0x25f6=function(_0x1d006a,_0x2812b5){_0x1d006a=_0x1d006a-0x0;var _0x20a76b=_0x5f62[_0x1d006a];return _0x20a76b;};'use strict';var _=require(_0x25f6('0x0'));var http=require(_0x25f6('0x1'));var express=require(_0x25f6('0x2'));var sticky=require('sticky-session');var Redis=require(_0x25f6('0x3'));var config=require(_0x25f6('0x4'));var app=express();var server=http['createServer'](app);server[_0x25f6('0x5')]=0xdbba0;if(sticky['listen'](server,config[_0x25f6('0x6')])){var socketio=require(_0x25f6('0x7'))(server,{'transports':['websocket',_0x25f6('0x8')]});config[_0x25f6('0x9')]=_[_0x25f6('0xa')](config['redis'],{'host':_0x25f6('0xb'),'port':0x18eb});socketio[_0x25f6('0xc')](require(_0x25f6('0xd'))({'pubClient':new Redis(config[_0x25f6('0x9')]),'subClient':new Redis(config[_0x25f6('0x9')])}));require(_0x25f6('0xe'))['default']();require('../../config/socketio')[_0x25f6('0xf')](socketio);require('../../config/express')[_0x25f6('0xf')](app);require(_0x25f6('0x10'))[_0x25f6('0xf')](app);}else{server['once']('listening',function(){console[_0x25f6('0x11')](_0x25f6('0x12'),config[_0x25f6('0x6')]);});}exports=module[_0x25f6('0x13')]=app;
\ No newline at end of file
index 3944ca9..3914bad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd8b=['routing','client','http','Request','request','then','debug','error','message','result','catch','rpc','../../config/logger'];(function(_0x3fbf32,_0x2cb594){var _0x473f08=function(_0x5ac92d){while(--_0x5ac92d){_0x3fbf32['push'](_0x3fbf32['shift']());}};_0x473f08(++_0x2cb594);}(_0xcd8b,0x8e));var _0xbcd8=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0xcd8b[_0x4b7895];return _0x264180;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xbcd8('0x0'))(_0xbcd8('0x1'));var client=jayson[_0xbcd8('0x2')][_0xbcd8('0x3')]({'port':0x2329});client[_0xbcd8('0x4')]=function(_0x4652b1,_0x52fb4a){return new BPromise(function(_0xbf4f08,_0x26e0c4){return client[_0xbcd8('0x5')](_0x4652b1,_0x52fb4a)[_0xbcd8('0x6')](function(_0x1fa767){logger[_0xbcd8('0x7')]('rpc','routing',_0x4652b1,_0x52fb4a,_0x1fa767);if(_0x1fa767[_0xbcd8('0x8')]){logger['error']('rpc','routing',_0x4652b1,_0x1fa767['error'][_0xbcd8('0x9')],_0x52fb4a);return _0x26e0c4(_0x1fa767[_0xbcd8('0x8')][_0xbcd8('0x9')]);}else{return _0xbf4f08(_0x1fa767[_0xbcd8('0xa')]);}})[_0xbcd8('0xb')](function(_0x570c4c){logger[_0xbcd8('0x8')](_0xbcd8('0xc'),'routing',_0x4652b1,_0x570c4c,_0x52fb4a);return _0x26e0c4(_0x570c4c);});});};module['exports']=client;
\ No newline at end of file
+var _0x4c12=['result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','Request','request','debug','rpc','error'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x4c12,0x1bf));var _0x24c1=function(_0x378720,_0xa711f1){_0x378720=_0x378720-0x0;var _0x47920a=_0x4c12[_0x378720];return _0x47920a;};'use strict';var jayson=require(_0x24c1('0x0'));var BPromise=require(_0x24c1('0x1'));var logger=require(_0x24c1('0x2'))(_0x24c1('0x3'));var client=jayson['client']['http']({'port':0x2329});client[_0x24c1('0x4')]=function(_0x5b71dd,_0x28f188){return new BPromise(function(_0x2152e0,_0x25ef56){return client[_0x24c1('0x5')](_0x5b71dd,_0x28f188)['then'](function(_0x4c9102){logger[_0x24c1('0x6')](_0x24c1('0x7'),_0x24c1('0x3'),_0x5b71dd,_0x28f188,_0x4c9102);if(_0x4c9102['error']){logger[_0x24c1('0x8')](_0x24c1('0x7'),_0x24c1('0x3'),_0x5b71dd,_0x4c9102['error']['message'],_0x28f188);return _0x25ef56(_0x4c9102[_0x24c1('0x8')]['message']);}else{return _0x2152e0(_0x4c9102[_0x24c1('0x9')]);}})[_0x24c1('0xa')](function(_0xa19535){logger[_0x24c1('0x8')]('rpc','routing',_0x5b71dd,_0xa19535,_0x28f188);return _0x25ef56(_0xa19535);});});};module[_0x24c1('0xb')]=client;
\ No newline at end of file
index df9d37a..6b2773a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ea3=['./rpc/whatsappQueue','resolve','then','getAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/faxQueue'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x8ea3,0x188));var _0x38ea=function(_0x45bf7f,_0x4e5f06){_0x45bf7f=_0x45bf7f-0x0;var _0x2b5458=_0x8ea3[_0x45bf7f];return _0x2b5458;};'use strict';var BPromise=require(_0x38ea('0x0'));var server=require(_0x38ea('0x1'));var Realtime=require(_0x38ea('0x2'));var user=require(_0x38ea('0x3'));var interval=require(_0x38ea('0x4'));var openchannelQueue=require(_0x38ea('0x5'));var chatQueue=require(_0x38ea('0x6'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x38ea('0x7'));var whatsappQueue=require(_0x38ea('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x38ea('0x9')]()[_0x38ea('0xa')](user[_0x38ea('0xb')]())[_0x38ea('0xa')](realtime['initAgents']())[_0x38ea('0xa')](interval[_0x38ea('0xc')]())[_0x38ea('0xa')](realtime[_0x38ea('0xd')]())[_0x38ea('0xa')](openchannelQueue[_0x38ea('0xe')]())[_0x38ea('0xa')](realtime['initOpenchannelQueues']())['then'](chatQueue[_0x38ea('0xf')]())[_0x38ea('0xa')](realtime[_0x38ea('0x10')]())[_0x38ea('0xa')](smsQueue[_0x38ea('0x11')]())[_0x38ea('0xa')](realtime['initSmsQueues']())[_0x38ea('0xa')](mailQueue[_0x38ea('0x12')]())[_0x38ea('0xa')](realtime[_0x38ea('0x13')]())[_0x38ea('0xa')](faxQueue['getFaxQueues']())[_0x38ea('0xa')](realtime[_0x38ea('0x14')]())[_0x38ea('0xa')](whatsappQueue[_0x38ea('0x15')]())[_0x38ea('0xa')](realtime[_0x38ea('0x16')]())[_0x38ea('0xa')](function(){return realtime;});}function main(){return server['listen'](realtime)['then'](function(_0x3d25d5){return initRealtime();})[_0x38ea('0xa')](function(_0x4694ad){return setInterval(initRealtime,0x1388);})[_0x38ea('0x17')](function(_0x1842b5){console[_0x38ea('0x18')](_0x1842b5);});}main();
\ No newline at end of file
+var _0x9dbe=['./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','initFaxQueues','initWhatsappQueues','catch','log','bluebird','./server','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/faxQueue'];(function(_0x563c6a,_0x42b20d){var _0x2eea4d=function(_0x398101){while(--_0x398101){_0x563c6a['push'](_0x563c6a['shift']());}};_0x2eea4d(++_0x42b20d);}(_0x9dbe,0xf3));var _0xe9db=function(_0x4ce851,_0x263eea){_0x4ce851=_0x4ce851-0x0;var _0x126bf1=_0x9dbe[_0x4ce851];return _0x126bf1;};'use strict';var BPromise=require(_0xe9db('0x0'));var server=require(_0xe9db('0x1'));var Realtime=require(_0xe9db('0x2'));var user=require('./rpc/user');var interval=require(_0xe9db('0x3'));var openchannelQueue=require(_0xe9db('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0xe9db('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0xe9db('0x6'));var whatsappQueue=require(_0xe9db('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xe9db('0x8')]()[_0xe9db('0x9')](user[_0xe9db('0xa')]())['then'](realtime[_0xe9db('0xb')]())[_0xe9db('0x9')](interval[_0xe9db('0xc')]())['then'](realtime[_0xe9db('0xd')]())[_0xe9db('0x9')](openchannelQueue[_0xe9db('0xe')]())[_0xe9db('0x9')](realtime[_0xe9db('0xf')]())[_0xe9db('0x9')](chatQueue[_0xe9db('0x10')]())[_0xe9db('0x9')](realtime[_0xe9db('0x11')]())[_0xe9db('0x9')](smsQueue[_0xe9db('0x12')]())[_0xe9db('0x9')](realtime['initSmsQueues']())[_0xe9db('0x9')](mailQueue[_0xe9db('0x13')]())[_0xe9db('0x9')](realtime[_0xe9db('0x14')]())[_0xe9db('0x9')](faxQueue['getFaxQueues']())[_0xe9db('0x9')](realtime[_0xe9db('0x15')]())[_0xe9db('0x9')](whatsappQueue['getWhatsappQueues']())[_0xe9db('0x9')](realtime[_0xe9db('0x16')]())[_0xe9db('0x9')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0xe9db('0x9')](function(_0x53a136){return initRealtime();})[_0xe9db('0x9')](function(_0x724ca5){return setInterval(initRealtime,0x1388);})[_0xe9db('0x17')](function(_0x4c62ff){console[_0xe9db('0x18')](_0x4c62ff);});}main();
\ No newline at end of file
index 96aff64..76d5641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['turn','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','exports','lodash','util','events','isNil','register','ignoreFactChanges','inherits','init','rules','activeRules','concat','prototype','sync','filter','orderBy','asc','execute','clone','consequence','ruleRef','name','index_','nextTick','push','call','isEqual','restart','length','condition','matchPath','noop','findRules'];(function(_0x33a723,_0x4211c8){var _0x325483=function(_0x5c572c){while(--_0x5c572c){_0x33a723['push'](_0x33a723['shift']());}};_0x325483(++_0x4211c8);}(_0x7a54,0x106));var _0x47a5=function(_0x55951a,_0x170146){_0x55951a=_0x55951a-0x0;var _0x392a3f=_0x7a54[_0x55951a];return _0x392a3f;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var EventEmitter=require(_0x47a5('0x2'))['EventEmitter'];function RuleEngine(_0x1d33e,_0x4086cd){this['init']();if(!_[_0x47a5('0x3')](_0x1d33e)){this[_0x47a5('0x4')](_0x1d33e);}if(_0x4086cd){this[_0x47a5('0x5')]=_0x4086cd[_0x47a5('0x5')];}return this;}util[_0x47a5('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x47a5('0x7')]=function(_0x59199c){this[_0x47a5('0x8')]=[];this[_0x47a5('0x9')]=[];};RuleEngine['prototype'][_0x47a5('0x4')]=function(_0x5077f3){if(Array['isArray'](_0x5077f3)){this['rules']=this[_0x47a5('0x8')][_0x47a5('0xa')](_0x5077f3);}else if(_0x5077f3!==null&&_['isObject'](_0x5077f3)){this[_0x47a5('0x8')]['push'](_0x5077f3);}this['sync']();};RuleEngine[_0x47a5('0xb')][_0x47a5('0xc')]=function(){this[_0x47a5('0x9')]=this[_0x47a5('0x8')][_0x47a5('0xd')](function(_0xd308b8){if(_[_0x47a5('0x3')](_0xd308b8['on'])){_0xd308b8['on']=!![];}if(_0xd308b8['on']===!![]){return _0xd308b8;}});this['activeRules']=_[_0x47a5('0xe')](this[_0x47a5('0x9')],['p'],[_0x47a5('0xf')]);};RuleEngine[_0x47a5('0xb')][_0x47a5('0x10')]=function(_0x620ee9,_0x3c6c46){var _0x190faa=![];_0x620ee9['result']=!![];var _0x362359=_[_0x47a5('0x11')](_0x620ee9);var _0x3b001e=_[_0x47a5('0x11')](_0x620ee9);var _0x1ef44c=this['activeRules'];var _0x549de3=[];var _0x138bc0=this['ignoreFactChanges'];(function FnRuleLoop(_0x5247fd){var _0x423a81={'rules':function(){return _0x1ef44c;},'rule':function(){return _0x1ef44c[_0x5247fd];},'when':function(_0xaf70a6){if(_0xaf70a6){var _0x2ce454=_0x1ef44c[_0x5247fd][_0x47a5('0x12')];_0x2ce454[_0x47a5('0x13')]=_0x1ef44c[_0x5247fd]['id']||_0x1ef44c[_0x5247fd][_0x47a5('0x14')]||_0x47a5('0x15')+_0x5247fd;process[_0x47a5('0x16')](function(){_0x549de3[_0x47a5('0x17')](_0x2ce454['ruleRef']);_0x2ce454[_0x47a5('0x18')](_0x362359,_0x423a81);});}else{process[_0x47a5('0x16')](function(){_0x423a81['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190faa=!![];return FnRuleLoop(0x0);},'next':function(_0x2b0360){if(!_0x138bc0&&!_[_0x47a5('0x19')](_0x3b001e,_0x362359)){_0x3b001e=_[_0x47a5('0x11')](_0x362359);process['nextTick'](function(){_0x423a81[_0x47a5('0x1a')]();});}else{process[_0x47a5('0x16')](function(){if(_[_0x47a5('0x3')](_0x2b0360)){return FnRuleLoop(_0x5247fd+0x1);}else{return FnRuleLoop(_0x2b0360);}});}}};if(_0x5247fd<_0x1ef44c[_0x47a5('0x1b')]&&_0x190faa===![]){var _0x5ef1b1=_0x1ef44c[_0x5247fd][_0x47a5('0x1c')];_0x5ef1b1[_0x47a5('0x18')](_0x362359,_0x423a81);}else{process['nextTick'](function(){_0x362359[_0x47a5('0x1d')]=_0x549de3;return _0x3c6c46?_0x3c6c46(_0x362359):_[_0x47a5('0x1e')]();});}}(0x0));};RuleEngine[_0x47a5('0xb')][_0x47a5('0x1f')]=function(_0x3abd6a){if(_['isNil'](_0x3abd6a)){return this['rules'];}else{var _0x136745=_['matches'](_0x3abd6a);return _[_0x47a5('0xd')](this['rules'],_0x136745);}};RuleEngine[_0x47a5('0xb')][_0x47a5('0x20')]=function(_0x36ad34,_0x1dac65){var _0x21f296=_0x36ad34==='on'||_0x36ad34==='ON'?!![]:![];var _0x3ba0b7=this[_0x47a5('0x1f')](_0x1dac65);for(var _0x136b14=0x0,_0x16631f=_0x3ba0b7[_0x47a5('0x1b')];_0x136b14<_0x16631f;_0x136b14+=0x1){_0x3ba0b7[_0x136b14]['on']=_0x21f296;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x21')]=function(_0x528582,_0x243210){_0x528582=parseInt(_0x528582,0xa);var _0x51833b=this[_0x47a5('0x1f')](_0x243210);for(var _0x9ac908=0x0,_0x16901f=_0x51833b['length'];_0x9ac908<_0x16901f;_0x9ac908+=0x1){_0x51833b[_0x9ac908][_0x47a5('0x22')]=_0x528582;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x23')]=function(){var _0x51cc81=this['rules'];if(_0x51cc81 instanceof Array){_0x51cc81=_0x51cc81[_0x47a5('0x24')](function(_0xfb5ddb){_0xfb5ddb['condition']=_0xfb5ddb['condition'][_0x47a5('0x25')]();_0xfb5ddb[_0x47a5('0x12')]=_0xfb5ddb['consequence'][_0x47a5('0x25')]();return _0xfb5ddb;});}else if(!_['isNil'](_0x51cc81)){_0x51cc81[_0x47a5('0x1c')]=_0x51cc81[_0x47a5('0x1c')]['toString']();_0x51cc81['consequence']=_0x51cc81[_0x47a5('0x12')]['toString']();}return _0x51cc81;};RuleEngine[_0x47a5('0xb')][_0x47a5('0x26')]=function(_0xf269a8){this['init']();if(_[_0x47a5('0x27')](_0xf269a8)){_0xf269a8=JSON['parse'](_0xf269a8);}if(_0xf269a8 instanceof Array){_0xf269a8=_0xf269a8['map'](function(_0x65542e){_0x65542e['condition']=eval('('+_0x65542e[_0x47a5('0x1c')]+')');_0x65542e['consequence']=eval('('+_0x65542e[_0x47a5('0x12')]+')');return _0x65542e;});}else if(_0xf269a8!==null&&typeof _0xf269a8==_0x47a5('0x28')){_0xf269a8[_0x47a5('0x1c')]=eval('('+_0xf269a8[_0x47a5('0x1c')]+')');_0xf269a8[_0x47a5('0x12')]=eval('('+_0xf269a8[_0x47a5('0x12')]+')');}this[_0x47a5('0x4')](_0xf269a8);};module[_0x47a5('0x29')]=RuleEngine;
\ No newline at end of file
+var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1261,0x144));var _0x1126=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x1261[_0xc67528];return _0x38e26d;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
index 01e00de..24fb721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41e7=['result','catch','SendMail','bluebird','jayson/promise','client','request','then','error'];(function(_0x2766f2,_0x4c35f4){var _0x2630ee=function(_0x5e45f9){while(--_0x5e45f9){_0x2766f2['push'](_0x2766f2['shift']());}};_0x2630ee(++_0x4c35f4);}(_0x41e7,0xff));var _0x741e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x41e7[_0x19e35c];return _0x3e1fe8;};'use strict';var BPromise=require(_0x741e('0x0'));var jayson=require(_0x741e('0x1'));var client=jayson[_0x741e('0x2')]['http']({'port':0x232b});function request(_0x5117ac,_0x6a6af1){return new BPromise(function(_0x47faca,_0xbeaee0){return client[_0x741e('0x3')](_0x5117ac,_0x6a6af1)[_0x741e('0x4')](function(_0x2928b4){if(_0x2928b4['error']){return _0xbeaee0(_0x2928b4[_0x741e('0x5')]['message']);}else{return _0x47faca(_0x2928b4[_0x741e('0x6')]);}})[_0x741e('0x7')](function(_0x2d0991){return _0xbeaee0(_0x2d0991);});});}exports['sendMailMessage']=function(_0x253749,_0x1a680f){return request(_0x741e('0x8'),{'account':_0x253749,'message':_0x1a680f});};
\ No newline at end of file
+var _0xdb95=['bluebird','jayson/promise','client','http','error','result','catch','sendMailMessage'];(function(_0x2af91c,_0x2be7c4){var _0x512cda=function(_0x313aa0){while(--_0x313aa0){_0x2af91c['push'](_0x2af91c['shift']());}};_0x512cda(++_0x2be7c4);}(_0xdb95,0x1c0));var _0x5db9=function(_0x5b9087,_0x17c626){_0x5b9087=_0x5b9087-0x0;var _0x9de02a=_0xdb95[_0x5b9087];return _0x9de02a;};'use strict';var BPromise=require(_0x5db9('0x0'));var jayson=require(_0x5db9('0x1'));var client=jayson[_0x5db9('0x2')][_0x5db9('0x3')]({'port':0x232b});function request(_0x493209,_0x320234){return new BPromise(function(_0x13db65,_0x3ddac1){return client['request'](_0x493209,_0x320234)['then'](function(_0x14ad91){if(_0x14ad91[_0x5db9('0x4')]){return _0x3ddac1(_0x14ad91['error']['message']);}else{return _0x13db65(_0x14ad91[_0x5db9('0x5')]);}})[_0x5db9('0x6')](function(_0x1779f5){return _0x3ddac1(_0x1779f5);});});}exports[_0x5db9('0x7')]=function(_0xe5d8c9,_0x29abf1){return request('SendMail',{'account':_0xe5d8c9,'message':_0x29abf1});};
\ No newline at end of file
index d648d03..614bb77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf680=['faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','updateRealtime','mail','openchannel','fax','whatsapp','length','Status','toNumber','format','online','whatsappStatus','whatsappStatusTime','busy','stringify','emit','user:save','exports','lodash','moment','md5','ioredis','defaults','redis','localhost','socket.io-emitter','name','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime'];(function(_0x108691,_0x3a3588){var _0xd8a129=function(_0x44ed4e){while(--_0x44ed4e){_0x108691['push'](_0x108691['shift']());}};_0xd8a129(++_0x3a3588);}(_0xf680,0x154));var _0x0f68=function(_0x4b2315,_0x175388){_0x4b2315=_0x4b2315-0x0;var _0x3a24e3=_0xf680[_0x4b2315];return _0x3a24e3;};'use strict';var _=require(_0x0f68('0x0'));var moment=require(_0x0f68('0x1'));var md5=require(_0x0f68('0x2'));var Redis=require(_0x0f68('0x3'));var config=require('../../../config/environment');config['redis']=_[_0x0f68('0x4')](config[_0x0f68('0x5')],{'host':_0x0f68('0x6'),'port':0x18eb});var io=require(_0x0f68('0x7'))(new Redis(config[_0x0f68('0x5')]));function Agent(_0x14f46e){this['id']=_0x14f46e['id']||0x0;this['name']=_0x14f46e[_0x0f68('0x8')]||'';this['online']=_0x14f46e['online']||!![];this[_0x0f68('0x9')]=_0x14f46e[_0x0f68('0x9')]||![];this[_0x0f68('0xa')]=_0x14f46e[_0x0f68('0xa')]||![];this[_0x0f68('0xb')]=_0x14f46e[_0x0f68('0xb')]||![];this[_0x0f68('0xc')]=_0x14f46e['faxPause']||![];this['smsPause']=_0x14f46e[_0x0f68('0xd')]||![];this[_0x0f68('0xe')]=_0x14f46e[_0x0f68('0xe')]||![];this[_0x0f68('0xf')]=_0x0f68('0x10');this[_0x0f68('0x11')]=0x0;this[_0x0f68('0x12')]=_0x14f46e[_0x0f68('0x12')]||0x0;this[_0x0f68('0x13')]=0x0;this[_0x0f68('0x14')]='unknown';this[_0x0f68('0x15')]=0x0;this[_0x0f68('0x16')]=_0x14f46e[_0x0f68('0x16')]||0x0;this[_0x0f68('0x17')]=0x0;this[_0x0f68('0x18')]=_0x0f68('0x10');this[_0x0f68('0x19')]=0x0;this[_0x0f68('0x1a')]=_0x14f46e['faxCapacity']||0x0;this[_0x0f68('0x1b')]=0x0;this['smsStatus']=_0x0f68('0x10');this[_0x0f68('0x1c')]=0x0;this[_0x0f68('0x1d')]=_0x14f46e[_0x0f68('0x1d')]||0x0;this[_0x0f68('0x1e')]=0x0;this['whatsappStatus']=_0x0f68('0x10');this['whatsappStatusTime']=0x0;this[_0x0f68('0x1f')]=_0x14f46e[_0x0f68('0x1f')]||0x0;this[_0x0f68('0x20')]=0x0;this[_0x0f68('0x21')]=_0x0f68('0x10');this[_0x0f68('0x22')]=0x0;this[_0x0f68('0x23')]=_0x14f46e[_0x0f68('0x23')]||0x0;this[_0x0f68('0x24')]=0x0;this['busy']=![];this[_0x0f68('0x25')]=undefined;this[_0x0f68('0x2')]='';this['updateRealtime']();}Agent[_0x0f68('0x26')][_0x0f68('0x27')]=function(_0x485abc){if(this[_0x485abc+_0x0f68('0x28')]>0x0){if(this[_0x485abc+_0x0f68('0x29')]>0x0&&this[_0x485abc+'CurrentCapacity']>=this[_0x485abc+_0x0f68('0x29')]){return _0x0f68('0x2a');}else{return _0x0f68('0x2b');}}else{return'idle';}};Agent[_0x0f68('0x26')][_0x0f68('0x2c')]=function(){var _0x118378=[_0x0f68('0x2d'),'chat',_0x0f68('0x2e'),_0x0f68('0x2f'),'sms',_0x0f68('0x30')];for(var _0x39118f=0x0;_0x39118f<_0x118378[_0x0f68('0x31')];_0x39118f+=0x1){var _0x3d7d30=this[_0x0f68('0x27')](_0x118378[_0x39118f]);if(this[_0x118378[_0x39118f]+_0x0f68('0x32')]!==_0x3d7d30){this[_0x118378[_0x39118f]+'StatusTime']=_[_0x0f68('0x33')](moment()[_0x0f68('0x34')]('x'));}this[_0x118378[_0x39118f]+_0x0f68('0x32')]=_0x3d7d30;}var _0x51a982={'id':this['id'],'name':this[_0x0f68('0x8')],'online':this[_0x0f68('0x35')],'voicePause':this['voicePause'],'chatPause':this[_0x0f68('0xa')],'mailPause':this[_0x0f68('0xb')],'smsPause':this[_0x0f68('0xd')],'faxPause':this[_0x0f68('0xc')],'openchannelPause':this['openchannelPause'],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x0f68('0x11')],'chatCapacity':this[_0x0f68('0x12')],'chatCurrentCapacity':this[_0x0f68('0x13')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x0f68('0x15')],'mailCapacity':this[_0x0f68('0x16')],'mailCurrentCapacity':this[_0x0f68('0x17')],'faxStatus':this[_0x0f68('0x18')],'faxStatusTime':this[_0x0f68('0x19')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x0f68('0x1b')],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0x0f68('0x1d')],'smsCurrentCapacity':this[_0x0f68('0x1e')],'whatsappStatus':this[_0x0f68('0x36')],'whatsappStatusTime':this[_0x0f68('0x37')],'whatsappCapacity':this[_0x0f68('0x1f')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x0f68('0x21')],'openchannelStatusTime':this[_0x0f68('0x22')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x0f68('0x24')],'busy':this[_0x0f68('0x38')],'busyQueue':this[_0x0f68('0x25')]};var _0x11714c=md5(JSON[_0x0f68('0x39')](_0x51a982));if(this[_0x0f68('0x2')]!==_0x11714c){this['md5']=_0x11714c;io[_0x0f68('0x3a')](_0x0f68('0x3b'),_0x51a982);}};module[_0x0f68('0x3c')]=Agent;
\ No newline at end of file
+var _0x2c15=['openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','length','format','Status','stringify','emit','user:save','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','online','voicePause','chatPause','mailPause','faxPause','smsPause'];(function(_0x13f5d1,_0x12e3f7){var _0x5621f3=function(_0x3e589e){while(--_0x3e589e){_0x13f5d1['push'](_0x13f5d1['shift']());}};_0x5621f3(++_0x12e3f7);}(_0x2c15,0x6e));var _0x52c1=function(_0x160fcb,_0x1605ba){_0x160fcb=_0x160fcb-0x0;var _0xd9d009=_0x2c15[_0x160fcb];return _0xd9d009;};'use strict';var _=require('lodash');var moment=require(_0x52c1('0x0'));var md5=require(_0x52c1('0x1'));var Redis=require(_0x52c1('0x2'));var config=require(_0x52c1('0x3'));config[_0x52c1('0x4')]=_[_0x52c1('0x5')](config[_0x52c1('0x4')],{'host':_0x52c1('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x52c1('0x4')]));function Agent(_0x212584){this['id']=_0x212584['id']||0x0;this[_0x52c1('0x7')]=_0x212584[_0x52c1('0x7')]||'';this[_0x52c1('0x8')]=_0x212584[_0x52c1('0x8')]||!![];this[_0x52c1('0x9')]=_0x212584[_0x52c1('0x9')]||![];this[_0x52c1('0xa')]=_0x212584[_0x52c1('0xa')]||![];this[_0x52c1('0xb')]=_0x212584['mailPause']||![];this[_0x52c1('0xc')]=_0x212584[_0x52c1('0xc')]||![];this[_0x52c1('0xd')]=_0x212584[_0x52c1('0xd')]||![];this['openchannelPause']=_0x212584[_0x52c1('0xe')]||![];this[_0x52c1('0xf')]=_0x52c1('0x10');this[_0x52c1('0x11')]=0x0;this['chatCapacity']=_0x212584[_0x52c1('0x12')]||0x0;this[_0x52c1('0x13')]=0x0;this[_0x52c1('0x14')]=_0x52c1('0x10');this[_0x52c1('0x15')]=0x0;this[_0x52c1('0x16')]=_0x212584[_0x52c1('0x16')]||0x0;this[_0x52c1('0x17')]=0x0;this[_0x52c1('0x18')]='unknown';this[_0x52c1('0x19')]=0x0;this[_0x52c1('0x1a')]=_0x212584[_0x52c1('0x1a')]||0x0;this[_0x52c1('0x1b')]=0x0;this[_0x52c1('0x1c')]=_0x52c1('0x10');this[_0x52c1('0x1d')]=0x0;this[_0x52c1('0x1e')]=_0x212584[_0x52c1('0x1e')]||0x0;this[_0x52c1('0x1f')]=0x0;this[_0x52c1('0x20')]='unknown';this[_0x52c1('0x21')]=0x0;this[_0x52c1('0x22')]=_0x212584[_0x52c1('0x22')]||0x0;this[_0x52c1('0x23')]=0x0;this[_0x52c1('0x24')]=_0x52c1('0x10');this[_0x52c1('0x25')]=0x0;this[_0x52c1('0x26')]=_0x212584[_0x52c1('0x26')]||0x0;this[_0x52c1('0x27')]=0x0;this['busy']=![];this[_0x52c1('0x28')]=undefined;this[_0x52c1('0x1')]='';this[_0x52c1('0x29')]();}Agent[_0x52c1('0x2a')][_0x52c1('0x2b')]=function(_0x4b5925){if(this[_0x4b5925+_0x52c1('0x2c')]>0x0){if(this[_0x4b5925+_0x52c1('0x2d')]>0x0&&this[_0x4b5925+'CurrentCapacity']>=this[_0x4b5925+_0x52c1('0x2d')]){return _0x52c1('0x2e');}else{return _0x52c1('0x2f');}}else{return _0x52c1('0x30');}};Agent['prototype']['updateRealtime']=function(){var _0x3c6a48=[_0x52c1('0x31'),_0x52c1('0x32'),_0x52c1('0x33'),_0x52c1('0x34'),_0x52c1('0x35'),_0x52c1('0x36')];for(var _0x241e32=0x0;_0x241e32<_0x3c6a48[_0x52c1('0x37')];_0x241e32+=0x1){var _0x2d760b=this['getChannelStatus'](_0x3c6a48[_0x241e32]);if(this[_0x3c6a48[_0x241e32]+'Status']!==_0x2d760b){this[_0x3c6a48[_0x241e32]+'StatusTime']=_['toNumber'](moment()[_0x52c1('0x38')]('x'));}this[_0x3c6a48[_0x241e32]+_0x52c1('0x39')]=_0x2d760b;}var _0x4aaccd={'id':this['id'],'name':this['name'],'online':this[_0x52c1('0x8')],'voicePause':this[_0x52c1('0x9')],'chatPause':this[_0x52c1('0xa')],'mailPause':this[_0x52c1('0xb')],'smsPause':this[_0x52c1('0xd')],'faxPause':this[_0x52c1('0xc')],'openchannelPause':this[_0x52c1('0xe')],'chatStatus':this[_0x52c1('0xf')],'chatStatusTime':this[_0x52c1('0x11')],'chatCapacity':this[_0x52c1('0x12')],'chatCurrentCapacity':this[_0x52c1('0x13')],'mailStatus':this[_0x52c1('0x14')],'mailStatusTime':this[_0x52c1('0x15')],'mailCapacity':this[_0x52c1('0x16')],'mailCurrentCapacity':this[_0x52c1('0x17')],'faxStatus':this[_0x52c1('0x18')],'faxStatusTime':this[_0x52c1('0x19')],'faxCapacity':this[_0x52c1('0x1a')],'faxCurrentCapacity':this[_0x52c1('0x1b')],'smsStatus':this[_0x52c1('0x1c')],'smsStatusTime':this[_0x52c1('0x1d')],'smsCapacity':this[_0x52c1('0x1e')],'smsCurrentCapacity':this[_0x52c1('0x1f')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x52c1('0x21')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x52c1('0x23')],'openchannelStatus':this[_0x52c1('0x24')],'openchannelStatusTime':this[_0x52c1('0x25')],'openchannelCapacity':this[_0x52c1('0x26')],'openchannelCurrentCapacity':this[_0x52c1('0x27')],'busy':this['busy'],'busyQueue':this[_0x52c1('0x28')]};var _0x3386a2=md5(JSON[_0x52c1('0x3a')](_0x4aaccd));if(this[_0x52c1('0x1')]!==_0x3386a2){this[_0x52c1('0x1')]=_0x3386a2;io[_0x52c1('0x3b')](_0x52c1('0x3c'),_0x4aaccd);}};module[_0x52c1('0x3d')]=Agent;
\ No newline at end of file
index 2067e21..8235e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c29=['prototype','map','_rr','paused','length','online','chatPause','available','loggedIn','waiting','stringify','format','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c29,0x178));var _0x94c2=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x4c29[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0x94c2('0x0'));var md5=require(_0x94c2('0x1'));var util=require(_0x94c2('0x2'));var Redis=require(_0x94c2('0x3'));var config=require(_0x94c2('0x4'));config[_0x94c2('0x5')]=_[_0x94c2('0x6')](config[_0x94c2('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x94c2('0x7'))(new Redis(config[_0x94c2('0x5')]));function ChatQueue(_0x4d1a11){this['id']=_0x4d1a11['id']||0x0;this[_0x94c2('0x8')]=_0x4d1a11[_0x94c2('0x8')]||'';this['timeout']=_0x4d1a11[_0x94c2('0x9')]||0xa;this[_0x94c2('0xa')]=_0x4d1a11[_0x94c2('0xa')]||_0x94c2('0xb');this[_0x94c2('0xc')]=_0x4d1a11[_0x94c2('0xc')];this[_0x94c2('0xd')]={};this['waiting']=0x0;this[_0x94c2('0x1')]='';this[_0x94c2('0xe')]();this[_0x94c2('0xf')]();}ChatQueue[_0x94c2('0x10')]['updateRouting']=function(){var _0x233442=this[_0x94c2('0xd')]['_rr'];this[_0x94c2('0xd')]=_[_0x94c2('0x11')](this[_0x94c2('0xc')],'id');this[_0x94c2('0xd')][_0x94c2('0x12')]=_0x233442;};ChatQueue[_0x94c2('0x10')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x94c2('0x13')]=0x0;for(var _0x42658a=0x0;_0x42658a<this[_0x94c2('0xc')][_0x94c2('0x14')];_0x42658a+=0x1){if(this[_0x94c2('0xc')][_0x42658a][_0x94c2('0x15')]){this['loggedIn']+=0x1;}if(this[_0x94c2('0xc')][_0x42658a][_0x94c2('0x16')]){this[_0x94c2('0x13')]+=0x1;}}this[_0x94c2('0x17')]=this[_0x94c2('0x18')]-this[_0x94c2('0x13')];this[_0x94c2('0x17')]=this['available']>=0x0?this[_0x94c2('0x17')]:0x0;var _0x170129={'id':this['id'],'available':this[_0x94c2('0x17')],'loggedIn':this[_0x94c2('0x18')],'name':this[_0x94c2('0x8')],'paused':this['paused'],'waiting':this[_0x94c2('0x19')]};var _0x7604a0=md5(JSON[_0x94c2('0x1a')](_0x170129));if(this[_0x94c2('0x1')]!==_0x7604a0){this['md5']=_0x7604a0;io['to'](util[_0x94c2('0x1b')]('chat:queue:%s',_0x170129['name']))['emit']('chat_queue:save',_0x170129);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0xe78d=['available','name','waiting','stringify','format','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','timeout','strategy','beepall','mapAgentsId','updateRealtime','prototype','map','Agents','_rr','loggedIn','paused','length','chatPause'];(function(_0x36d28d,_0x5a9e25){var _0x361848=function(_0x569326){while(--_0x569326){_0x36d28d['push'](_0x36d28d['shift']());}};_0x361848(++_0x5a9e25);}(_0xe78d,0x11f));var _0xde78=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xe78d[_0x11005e];return _0x29338f;};'use strict';var _=require(_0xde78('0x0'));var md5=require(_0xde78('0x1'));var util=require(_0xde78('0x2'));var Redis=require(_0xde78('0x3'));var config=require(_0xde78('0x4'));config[_0xde78('0x5')]=_[_0xde78('0x6')](config[_0xde78('0x5')],{'host':_0xde78('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xde78('0x5')]));function ChatQueue(_0x32e7b3){this['id']=_0x32e7b3['id']||0x0;this['name']=_0x32e7b3['name']||'';this[_0xde78('0x8')]=_0x32e7b3[_0xde78('0x8')]||0xa;this[_0xde78('0x9')]=_0x32e7b3[_0xde78('0x9')]||_0xde78('0xa');this['Agents']=_0x32e7b3['Agents'];this[_0xde78('0xb')]={};this['waiting']=0x0;this[_0xde78('0x1')]='';this['updateRouting']();this[_0xde78('0xc')]();}ChatQueue[_0xde78('0xd')]['updateRouting']=function(){var _0x5990c9=this[_0xde78('0xb')]['_rr'];this[_0xde78('0xb')]=_[_0xde78('0xe')](this[_0xde78('0xf')],'id');this['mapAgentsId'][_0xde78('0x10')]=_0x5990c9;};ChatQueue['prototype'][_0xde78('0xc')]=function(){this[_0xde78('0x11')]=0x0;this[_0xde78('0x12')]=0x0;for(var _0x277a26=0x0;_0x277a26<this['Agents'][_0xde78('0x13')];_0x277a26+=0x1){if(this[_0xde78('0xf')][_0x277a26]['online']){this[_0xde78('0x11')]+=0x1;}if(this[_0xde78('0xf')][_0x277a26][_0xde78('0x14')]){this[_0xde78('0x12')]+=0x1;}}this[_0xde78('0x15')]=this[_0xde78('0x11')]-this[_0xde78('0x12')];this['available']=this['available']>=0x0?this[_0xde78('0x15')]:0x0;var _0x318802={'id':this['id'],'available':this[_0xde78('0x15')],'loggedIn':this[_0xde78('0x11')],'name':this[_0xde78('0x16')],'paused':this[_0xde78('0x12')],'waiting':this[_0xde78('0x17')]};var _0x5af526=md5(JSON[_0xde78('0x18')](_0x318802));if(this[_0xde78('0x1')]!==_0x5af526){this[_0xde78('0x1')]=_0x5af526;io['to'](util[_0xde78('0x19')]('chat:queue:%s',_0x318802[_0xde78('0x16')]))['emit'](_0xde78('0x1a'),_0x318802);}};module[_0xde78('0x1b')]=ChatQueue;
\ No newline at end of file
index 0a4c9ea..70d8368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeadb=['exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','name','strategy','beepall','Agents','waiting','updateRealtime','prototype','mapAgentsId','_rr','length','loggedIn','faxPause','paused','available','emit','fax_queue:save'];(function(_0x35717d,_0x1fad98){var _0xafb902=function(_0x1339c0){while(--_0x1339c0){_0x35717d['push'](_0x35717d['shift']());}};_0xafb902(++_0x1fad98);}(_0xeadb,0xb0));var _0xbead=function(_0x488b31,_0xea31c3){_0x488b31=_0x488b31-0x0;var _0x424bf1=_0xeadb[_0x488b31];return _0x424bf1;};'use strict';var _=require(_0xbead('0x0'));var md5=require(_0xbead('0x1'));var util=require(_0xbead('0x2'));var Redis=require(_0xbead('0x3'));var config=require(_0xbead('0x4'));config['redis']=_[_0xbead('0x5')](config[_0xbead('0x6')],{'host':_0xbead('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xbead('0x6')]));function FaxQueue(_0x463dd5){this['id']=_0x463dd5['id']||0x0;this[_0xbead('0x8')]=_0x463dd5[_0xbead('0x8')]||'';this['timeout']=_0x463dd5['timeout']||0xa;this[_0xbead('0x9')]=_0x463dd5[_0xbead('0x9')]||_0xbead('0xa');this[_0xbead('0xb')]=_0x463dd5[_0xbead('0xb')];this['mapAgentsId']={};this[_0xbead('0xc')]=0x0;this[_0xbead('0x1')]='';this['updateRouting']();this[_0xbead('0xd')]();}FaxQueue[_0xbead('0xe')]['updateRouting']=function(){var _0x524225=this[_0xbead('0xf')]['_rr'];this['mapAgentsId']=_['map'](this[_0xbead('0xb')],'id');this[_0xbead('0xf')][_0xbead('0x10')]=_0x524225;};FaxQueue[_0xbead('0xe')][_0xbead('0xd')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x535c0b=0x0;_0x535c0b<this[_0xbead('0xb')][_0xbead('0x11')];_0x535c0b+=0x1){if(this[_0xbead('0xb')][_0x535c0b]['online']){this[_0xbead('0x12')]+=0x1;}if(this[_0xbead('0xb')][_0x535c0b][_0xbead('0x13')]){this[_0xbead('0x14')]+=0x1;}}this[_0xbead('0x15')]=this[_0xbead('0x12')]-this[_0xbead('0x14')];this[_0xbead('0x15')]=this[_0xbead('0x15')]>=0x0?this['available']:0x0;var _0x39f572={'id':this['id'],'available':this['available'],'loggedIn':this[_0xbead('0x12')],'name':this['name'],'paused':this[_0xbead('0x14')],'waiting':this[_0xbead('0xc')]};var _0x43eadc=md5(JSON['stringify'](_0x39f572));if(this['md5']!==_0x43eadc){this[_0xbead('0x1')]=_0x43eadc;io['to'](util['format']('fax:queue:%s',_0x39f572['name']))[_0xbead('0x16')](_0xbead('0x17'),_0x39f572);}};module[_0xbead('0x18')]=FaxQueue;
\ No newline at end of file
+var _0x6a7d=['strategy','beepall','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','Agents','loggedIn','length','online','paused','available','stringify','md5','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout'];(function(_0x4f39bf,_0x426b1c){var _0x526499=function(_0x30faf){while(--_0x30faf){_0x4f39bf['push'](_0x4f39bf['shift']());}};_0x526499(++_0x426b1c);}(_0x6a7d,0x1e7));var _0xd6a7=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x6a7d[_0x45f951];return _0x24756c;};'use strict';var _=require(_0xd6a7('0x0'));var md5=require('md5');var util=require(_0xd6a7('0x1'));var Redis=require(_0xd6a7('0x2'));var config=require(_0xd6a7('0x3'));config[_0xd6a7('0x4')]=_['defaults'](config[_0xd6a7('0x4')],{'host':_0xd6a7('0x5'),'port':0x18eb});var io=require(_0xd6a7('0x6'))(new Redis(config[_0xd6a7('0x4')]));function FaxQueue(_0x4cfb1e){this['id']=_0x4cfb1e['id']||0x0;this[_0xd6a7('0x7')]=_0x4cfb1e['name']||'';this[_0xd6a7('0x8')]=_0x4cfb1e[_0xd6a7('0x8')]||0xa;this[_0xd6a7('0x9')]=_0x4cfb1e[_0xd6a7('0x9')]||_0xd6a7('0xa');this['Agents']=_0x4cfb1e['Agents'];this[_0xd6a7('0xb')]={};this[_0xd6a7('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0xd6a7('0xd')]();}FaxQueue[_0xd6a7('0xe')][_0xd6a7('0xf')]=function(){var _0x58b68e=this[_0xd6a7('0xb')][_0xd6a7('0x10')];this[_0xd6a7('0xb')]=_[_0xd6a7('0x11')](this[_0xd6a7('0x12')],'id');this[_0xd6a7('0xb')][_0xd6a7('0x10')]=_0x58b68e;};FaxQueue[_0xd6a7('0xe')][_0xd6a7('0xd')]=function(){this[_0xd6a7('0x13')]=0x0;this['paused']=0x0;for(var _0x79149e=0x0;_0x79149e<this[_0xd6a7('0x12')][_0xd6a7('0x14')];_0x79149e+=0x1){if(this[_0xd6a7('0x12')][_0x79149e][_0xd6a7('0x15')]){this[_0xd6a7('0x13')]+=0x1;}if(this[_0xd6a7('0x12')][_0x79149e]['faxPause']){this[_0xd6a7('0x16')]+=0x1;}}this[_0xd6a7('0x17')]=this['loggedIn']-this[_0xd6a7('0x16')];this[_0xd6a7('0x17')]=this[_0xd6a7('0x17')]>=0x0?this[_0xd6a7('0x17')]:0x0;var _0x4f0d08={'id':this['id'],'available':this[_0xd6a7('0x17')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0xd6a7('0x16')],'waiting':this['waiting']};var _0x3295ac=md5(JSON[_0xd6a7('0x18')](_0x4f0d08));if(this[_0xd6a7('0x19')]!==_0x3295ac){this['md5']=_0x3295ac;io['to'](util[_0xd6a7('0x1a')](_0xd6a7('0x1b'),_0x4f0d08[_0xd6a7('0x7')]))[_0xd6a7('0x1c')](_0xd6a7('0x1d'),_0x4f0d08);}};module[_0xd6a7('0x1e')]=FaxQueue;
\ No newline at end of file
index e781627..ce9255c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaca4=['name'];(function(_0x300bbe,_0x3e3634){var _0x3f6a22=function(_0x3bd419){while(--_0x3bd419){_0x300bbe['push'](_0x300bbe['shift']());}};_0x3f6a22(++_0x3e3634);}(_0xaca4,0x65));var _0x4aca=function(_0x428dbd,_0x30eeb5){_0x428dbd=_0x428dbd-0x0;var _0xc411d8=_0xaca4[_0x428dbd];return _0xc411d8;};'use strict';function Interval(_0x1a4eef){this['id']=_0x1a4eef['id']||0x0;this[_0x4aca('0x0')]=_0x1a4eef['name']||'';this['Intervals']=_0x1a4eef['Intervals']||{};}module['exports']=Interval;
\ No newline at end of file
+var _0x7515=['name','Intervals'];(function(_0x590699,_0x5ee338){var _0x2b15d6=function(_0x3e643d){while(--_0x3e643d){_0x590699['push'](_0x590699['shift']());}};_0x2b15d6(++_0x5ee338);}(_0x7515,0x94));var _0x5751=function(_0x501b52,_0x541eb3){_0x501b52=_0x501b52-0x0;var _0x55a08d=_0x7515[_0x501b52];return _0x55a08d;};'use strict';function Interval(_0x5289bc){this['id']=_0x5289bc['id']||0x0;this[_0x5751('0x0')]=_0x5289bc[_0x5751('0x0')]||'';this[_0x5751('0x1')]=_0x5289bc[_0x5751('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index 1227eab..5a076f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bf9=['mapAgentsId','waiting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','mailPause','available','name','format','mail:queue:%s','emit','mail_queue:save','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','strategy','beepall','Agents'];(function(_0x5b2c50,_0x4db66b){var _0x47f2f9=function(_0xef76e4){while(--_0xef76e4){_0x5b2c50['push'](_0x5b2c50['shift']());}};_0x47f2f9(++_0x4db66b);}(_0x7bf9,0x17c));var _0x97bf=function(_0x2ea9ef,_0x5a4c79){_0x2ea9ef=_0x2ea9ef-0x0;var _0xb5721a=_0x7bf9[_0x2ea9ef];return _0xb5721a;};'use strict';var _=require(_0x97bf('0x0'));var md5=require(_0x97bf('0x1'));var util=require('util');var Redis=require(_0x97bf('0x2'));var config=require(_0x97bf('0x3'));config[_0x97bf('0x4')]=_[_0x97bf('0x5')](config[_0x97bf('0x4')],{'host':_0x97bf('0x6'),'port':0x18eb});var io=require(_0x97bf('0x7'))(new Redis(config[_0x97bf('0x4')]));function MailQueue(_0x45481e){this['id']=_0x45481e['id']||0x0;this['name']=_0x45481e['name']||'';this[_0x97bf('0x8')]=_0x45481e[_0x97bf('0x8')]||0xa;this[_0x97bf('0x9')]=_0x45481e[_0x97bf('0x9')]||_0x97bf('0xa');this['Agents']=_0x45481e[_0x97bf('0xb')];this[_0x97bf('0xc')]={};this[_0x97bf('0xd')]=0x0;this[_0x97bf('0x1')]='';this['updateRouting']();this[_0x97bf('0xe')]();}MailQueue[_0x97bf('0xf')]['updateRouting']=function(){var _0x1f36e9=this[_0x97bf('0xc')][_0x97bf('0x10')];this['mapAgentsId']=_[_0x97bf('0x11')](this[_0x97bf('0xb')],'id');this[_0x97bf('0xc')][_0x97bf('0x10')]=_0x1f36e9;};MailQueue[_0x97bf('0xf')][_0x97bf('0xe')]=function(){this[_0x97bf('0x12')]=0x0;this[_0x97bf('0x13')]=0x0;for(var _0x3e17a9=0x0;_0x3e17a9<this[_0x97bf('0xb')]['length'];_0x3e17a9+=0x1){if(this[_0x97bf('0xb')][_0x3e17a9][_0x97bf('0x14')]){this[_0x97bf('0x12')]+=0x1;}if(this[_0x97bf('0xb')][_0x3e17a9][_0x97bf('0x15')]){this[_0x97bf('0x13')]+=0x1;}}this[_0x97bf('0x16')]=this['loggedIn']-this['paused'];this[_0x97bf('0x16')]=this[_0x97bf('0x16')]>=0x0?this[_0x97bf('0x16')]:0x0;var _0x4008bb={'id':this['id'],'available':this[_0x97bf('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x97bf('0x17')],'paused':this[_0x97bf('0x13')],'waiting':this['waiting']};var _0x524de6=md5(JSON['stringify'](_0x4008bb));if(this[_0x97bf('0x1')]!==_0x524de6){this[_0x97bf('0x1')]=_0x524de6;io['to'](util[_0x97bf('0x18')](_0x97bf('0x19'),_0x4008bb[_0x97bf('0x17')]))[_0x97bf('0x1a')](_0x97bf('0x1b'),_0x4008bb);}};module['exports']=MailQueue;
\ No newline at end of file
+var _0x167f=['Agents','mapAgentsId','waiting','updateRealtime','updateRouting','_rr','map','prototype','loggedIn','paused','length','online','mailPause','available','stringify','format','mail:queue:%s','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x5b9b0c,_0x36b7d4){var _0x181c52=function(_0x175025){while(--_0x175025){_0x5b9b0c['push'](_0x5b9b0c['shift']());}};_0x181c52(++_0x36b7d4);}(_0x167f,0x199));var _0xf167=function(_0x23ca3a,_0xe44c43){_0x23ca3a=_0x23ca3a-0x0;var _0x5c1aab=_0x167f[_0x23ca3a];return _0x5c1aab;};'use strict';var _=require('lodash');var md5=require(_0xf167('0x0'));var util=require(_0xf167('0x1'));var Redis=require(_0xf167('0x2'));var config=require(_0xf167('0x3'));config[_0xf167('0x4')]=_[_0xf167('0x5')](config[_0xf167('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xf167('0x6'))(new Redis(config[_0xf167('0x4')]));function MailQueue(_0x114f04){this['id']=_0x114f04['id']||0x0;this['name']=_0x114f04[_0xf167('0x7')]||'';this[_0xf167('0x8')]=_0x114f04[_0xf167('0x8')]||0xa;this[_0xf167('0x9')]=_0x114f04[_0xf167('0x9')]||_0xf167('0xa');this['Agents']=_0x114f04[_0xf167('0xb')];this[_0xf167('0xc')]={};this[_0xf167('0xd')]=0x0;this[_0xf167('0x0')]='';this['updateRouting']();this[_0xf167('0xe')]();}MailQueue['prototype'][_0xf167('0xf')]=function(){var _0x196c3b=this[_0xf167('0xc')][_0xf167('0x10')];this[_0xf167('0xc')]=_[_0xf167('0x11')](this['Agents'],'id');this['mapAgentsId'][_0xf167('0x10')]=_0x196c3b;};MailQueue[_0xf167('0x12')]['updateRealtime']=function(){this[_0xf167('0x13')]=0x0;this[_0xf167('0x14')]=0x0;for(var _0x1ce257=0x0;_0x1ce257<this['Agents'][_0xf167('0x15')];_0x1ce257+=0x1){if(this[_0xf167('0xb')][_0x1ce257][_0xf167('0x16')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x1ce257][_0xf167('0x17')]){this[_0xf167('0x14')]+=0x1;}}this[_0xf167('0x18')]=this[_0xf167('0x13')]-this['paused'];this['available']=this[_0xf167('0x18')]>=0x0?this[_0xf167('0x18')]:0x0;var _0x2fe5c9={'id':this['id'],'available':this[_0xf167('0x18')],'loggedIn':this[_0xf167('0x13')],'name':this[_0xf167('0x7')],'paused':this[_0xf167('0x14')],'waiting':this[_0xf167('0xd')]};var _0x37f73b=md5(JSON[_0xf167('0x19')](_0x2fe5c9));if(this[_0xf167('0x0')]!==_0x37f73b){this['md5']=_0x37f73b;io['to'](util[_0xf167('0x1a')](_0xf167('0x1b'),_0x2fe5c9[_0xf167('0x7')]))['emit'](_0xf167('0x1c'),_0x2fe5c9);}};module[_0xf167('0x1d')]=MailQueue;
\ No newline at end of file
index 6e57481..f7f4262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['stringify','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','timeout','strategy','beepall','Agents','mapAgentsId','waiting','prototype','updateRouting','_rr','paused','length','online','available','loggedIn','name'];(function(_0x1e393b,_0x355f6b){var _0x3d0bfe=function(_0x320830){while(--_0x320830){_0x1e393b['push'](_0x1e393b['shift']());}};_0x3d0bfe(++_0x355f6b);}(_0x2ef3,0xba));var _0x32ef=function(_0x32a138,_0x3c7dd7){_0x32a138=_0x32a138-0x0;var _0x24130e=_0x2ef3[_0x32a138];return _0x24130e;};'use strict';var _=require(_0x32ef('0x0'));var md5=require(_0x32ef('0x1'));var util=require(_0x32ef('0x2'));var Redis=require(_0x32ef('0x3'));var config=require(_0x32ef('0x4'));config[_0x32ef('0x5')]=_['defaults'](config[_0x32ef('0x5')],{'host':_0x32ef('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x32ef('0x5')]));function OpenchannelQueue(_0x37dd1d){this['id']=_0x37dd1d['id']||0x0;this['name']=_0x37dd1d['name']||'';this[_0x32ef('0x7')]=_0x37dd1d[_0x32ef('0x7')]||0xa;this[_0x32ef('0x8')]=_0x37dd1d[_0x32ef('0x8')]||_0x32ef('0x9');this[_0x32ef('0xa')]=_0x37dd1d[_0x32ef('0xa')];this[_0x32ef('0xb')]={};this[_0x32ef('0xc')]=0x0;this[_0x32ef('0x1')]='';this['updateRouting']();this['updateRealtime']();}OpenchannelQueue[_0x32ef('0xd')][_0x32ef('0xe')]=function(){var _0x45bfd5=this[_0x32ef('0xb')]['_rr'];this[_0x32ef('0xb')]=_['map'](this[_0x32ef('0xa')],'id');this['mapAgentsId'][_0x32ef('0xf')]=_0x45bfd5;};OpenchannelQueue[_0x32ef('0xd')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x32ef('0x10')]=0x0;for(var _0x4d8009=0x0;_0x4d8009<this[_0x32ef('0xa')][_0x32ef('0x11')];_0x4d8009+=0x1){if(this[_0x32ef('0xa')][_0x4d8009][_0x32ef('0x12')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x4d8009]['openchannelPause']){this[_0x32ef('0x10')]+=0x1;}}this[_0x32ef('0x13')]=this[_0x32ef('0x14')]-this['paused'];this['available']=this[_0x32ef('0x13')]>=0x0?this[_0x32ef('0x13')]:0x0;var _0x286bfb={'id':this['id'],'available':this['available'],'loggedIn':this[_0x32ef('0x14')],'name':this[_0x32ef('0x15')],'paused':this['paused'],'waiting':this[_0x32ef('0xc')]};var _0x314ef1=md5(JSON[_0x32ef('0x16')](_0x286bfb));if(this[_0x32ef('0x1')]!==_0x314ef1){this[_0x32ef('0x1')]=_0x314ef1;io['to'](util[_0x32ef('0x17')]('openchannel:queue:%s',_0x286bfb[_0x32ef('0x15')]))['emit'](_0x32ef('0x18'),_0x286bfb);}};module[_0x32ef('0x19')]=OpenchannelQueue;
\ No newline at end of file
+var _0x7a54=['exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRealtime','mapAgentsId','_rr','map','Agents','prototype','loggedIn','paused','length','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x7a54,0x106));var _0x47a5=function(_0x59248f,_0x2fcfea){_0x59248f=_0x59248f-0x0;var _0x4fd8a2=_0x7a54[_0x59248f];return _0x4fd8a2;};'use strict';var _=require(_0x47a5('0x0'));var md5=require(_0x47a5('0x1'));var util=require(_0x47a5('0x2'));var Redis=require('ioredis');var config=require(_0x47a5('0x3'));config[_0x47a5('0x4')]=_['defaults'](config[_0x47a5('0x4')],{'host':_0x47a5('0x5'),'port':0x18eb});var io=require(_0x47a5('0x6'))(new Redis(config[_0x47a5('0x4')]));function OpenchannelQueue(_0xfdf934){this['id']=_0xfdf934['id']||0x0;this['name']=_0xfdf934[_0x47a5('0x7')]||'';this['timeout']=_0xfdf934[_0x47a5('0x8')]||0xa;this[_0x47a5('0x9')]=_0xfdf934['strategy']||_0x47a5('0xa');this['Agents']=_0xfdf934['Agents'];this['mapAgentsId']={};this[_0x47a5('0xb')]=0x0;this[_0x47a5('0x1')]='';this['updateRouting']();this[_0x47a5('0xc')]();}OpenchannelQueue['prototype']['updateRouting']=function(){var _0x1f47f4=this[_0x47a5('0xd')][_0x47a5('0xe')];this[_0x47a5('0xd')]=_[_0x47a5('0xf')](this[_0x47a5('0x10')],'id');this[_0x47a5('0xd')]['_rr']=_0x1f47f4;};OpenchannelQueue[_0x47a5('0x11')][_0x47a5('0xc')]=function(){this[_0x47a5('0x12')]=0x0;this[_0x47a5('0x13')]=0x0;for(var _0x139f25=0x0;_0x139f25<this[_0x47a5('0x10')][_0x47a5('0x14')];_0x139f25+=0x1){if(this[_0x47a5('0x10')][_0x139f25]['online']){this[_0x47a5('0x12')]+=0x1;}if(this[_0x47a5('0x10')][_0x139f25][_0x47a5('0x15')]){this[_0x47a5('0x13')]+=0x1;}}this[_0x47a5('0x16')]=this['loggedIn']-this['paused'];this[_0x47a5('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x423a81={'id':this['id'],'available':this[_0x47a5('0x16')],'loggedIn':this[_0x47a5('0x12')],'name':this[_0x47a5('0x7')],'paused':this[_0x47a5('0x13')],'waiting':this[_0x47a5('0xb')]};var _0x2763d6=md5(JSON[_0x47a5('0x17')](_0x423a81));if(this[_0x47a5('0x1')]!==_0x2763d6){this['md5']=_0x2763d6;io['to'](util[_0x47a5('0x18')](_0x47a5('0x19'),_0x423a81['name']))[_0x47a5('0x1a')](_0x47a5('0x1b'),_0x423a81);}};module[_0x47a5('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 337da65..1074596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['loggedIn','paused','length','online','smsPause','available','stringify','sms:queue:%s','sms_queue:save','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr'];(function(_0x4de1b1,_0x18c64c){var _0x639f27=function(_0x635e03){while(--_0x635e03){_0x4de1b1['push'](_0x4de1b1['shift']());}};_0x639f27(++_0x18c64c);}(_0x34e8,0x12c));var _0x834e=function(_0x4d6794,_0x4e9002){_0x4d6794=_0x4d6794-0x0;var _0x30164e=_0x34e8[_0x4d6794];return _0x30164e;};'use strict';var _=require(_0x834e('0x0'));var md5=require(_0x834e('0x1'));var util=require(_0x834e('0x2'));var Redis=require(_0x834e('0x3'));var config=require('../../../config/environment');config[_0x834e('0x4')]=_[_0x834e('0x5')](config[_0x834e('0x4')],{'host':_0x834e('0x6'),'port':0x18eb});var io=require(_0x834e('0x7'))(new Redis(config[_0x834e('0x4')]));function SmsQueue(_0x398bee){this['id']=_0x398bee['id']||0x0;this['name']=_0x398bee[_0x834e('0x8')]||'';this['timeout']=_0x398bee[_0x834e('0x9')]||0xa;this[_0x834e('0xa')]=_0x398bee[_0x834e('0xa')]||_0x834e('0xb');this[_0x834e('0xc')]=_0x398bee[_0x834e('0xc')];this[_0x834e('0xd')]={};this[_0x834e('0xe')]=0x0;this[_0x834e('0x1')]='';this[_0x834e('0xf')]();this[_0x834e('0x10')]();}SmsQueue[_0x834e('0x11')][_0x834e('0xf')]=function(){var _0x2e1a37=this[_0x834e('0xd')][_0x834e('0x12')];this[_0x834e('0xd')]=_['map'](this[_0x834e('0xc')],'id');this[_0x834e('0xd')]['_rr']=_0x2e1a37;};SmsQueue[_0x834e('0x11')][_0x834e('0x10')]=function(){this[_0x834e('0x13')]=0x0;this[_0x834e('0x14')]=0x0;for(var _0x50e860=0x0;_0x50e860<this[_0x834e('0xc')][_0x834e('0x15')];_0x50e860+=0x1){if(this['Agents'][_0x50e860][_0x834e('0x16')]){this['loggedIn']+=0x1;}if(this[_0x834e('0xc')][_0x50e860][_0x834e('0x17')]){this['paused']+=0x1;}}this[_0x834e('0x18')]=this[_0x834e('0x13')]-this[_0x834e('0x14')];this['available']=this[_0x834e('0x18')]>=0x0?this[_0x834e('0x18')]:0x0;var _0x34e41a={'id':this['id'],'available':this[_0x834e('0x18')],'loggedIn':this[_0x834e('0x13')],'name':this[_0x834e('0x8')],'paused':this[_0x834e('0x14')],'waiting':this['waiting']};var _0x2545b4=md5(JSON[_0x834e('0x19')](_0x34e41a));if(this[_0x834e('0x1')]!==_0x2545b4){this[_0x834e('0x1')]=_0x2545b4;io['to'](util['format'](_0x834e('0x1a'),_0x34e41a[_0x834e('0x8')]))['emit'](_0x834e('0x1b'),_0x34e41a);}};module[_0x834e('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0x579c=['mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','paused','loggedIn','available','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','timeout','strategy','beepall','Agents'];(function(_0xe80a34,_0x2d1611){var _0x11fa2f=function(_0x54e701){while(--_0x54e701){_0xe80a34['push'](_0xe80a34['shift']());}};_0x11fa2f(++_0x2d1611);}(_0x579c,0xda));var _0xc579=function(_0x471030,_0x53ed70){_0x471030=_0x471030-0x0;var _0xb79fe6=_0x579c[_0x471030];return _0xb79fe6;};'use strict';var _=require(_0xc579('0x0'));var md5=require(_0xc579('0x1'));var util=require(_0xc579('0x2'));var Redis=require(_0xc579('0x3'));var config=require(_0xc579('0x4'));config['redis']=_[_0xc579('0x5')](config['redis'],{'host':_0xc579('0x6'),'port':0x18eb});var io=require(_0xc579('0x7'))(new Redis(config[_0xc579('0x8')]));function SmsQueue(_0x14f261){this['id']=_0x14f261['id']||0x0;this[_0xc579('0x9')]=_0x14f261[_0xc579('0x9')]||'';this[_0xc579('0xa')]=_0x14f261['timeout']||0xa;this[_0xc579('0xb')]=_0x14f261[_0xc579('0xb')]||_0xc579('0xc');this[_0xc579('0xd')]=_0x14f261[_0xc579('0xd')];this[_0xc579('0xe')]={};this[_0xc579('0xf')]=0x0;this[_0xc579('0x1')]='';this['updateRouting']();this[_0xc579('0x10')]();}SmsQueue[_0xc579('0x11')][_0xc579('0x12')]=function(){var _0x3684b7=this[_0xc579('0xe')][_0xc579('0x13')];this[_0xc579('0xe')]=_[_0xc579('0x14')](this[_0xc579('0xd')],'id');this[_0xc579('0xe')][_0xc579('0x13')]=_0x3684b7;};SmsQueue['prototype'][_0xc579('0x10')]=function(){this['loggedIn']=0x0;this[_0xc579('0x15')]=0x0;for(var _0x59243e=0x0;_0x59243e<this[_0xc579('0xd')]['length'];_0x59243e+=0x1){if(this[_0xc579('0xd')][_0x59243e]['online']){this[_0xc579('0x16')]+=0x1;}if(this[_0xc579('0xd')][_0x59243e]['smsPause']){this['paused']+=0x1;}}this[_0xc579('0x17')]=this[_0xc579('0x16')]-this[_0xc579('0x15')];this[_0xc579('0x17')]=this[_0xc579('0x17')]>=0x0?this[_0xc579('0x17')]:0x0;var _0xbbbe3e={'id':this['id'],'available':this[_0xc579('0x17')],'loggedIn':this[_0xc579('0x16')],'name':this[_0xc579('0x9')],'paused':this['paused'],'waiting':this[_0xc579('0xf')]};var _0x2b7d74=md5(JSON['stringify'](_0xbbbe3e));if(this[_0xc579('0x1')]!==_0x2b7d74){this[_0xc579('0x1')]=_0x2b7d74;io['to'](util[_0xc579('0x18')](_0xc579('0x19'),_0xbbbe3e[_0xc579('0x9')]))[_0xc579('0x1a')](_0xc579('0x1b'),_0xbbbe3e);}};module[_0xc579('0x1c')]=SmsQueue;
\ No newline at end of file
index 210404a..32d19d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66e8=['emit','whatsapp_queue:save','exports','md5','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','updateRouting','prototype','loggedIn','paused','length','whatsappPause','available','whatsapp:queue:%s'];(function(_0x263916,_0x2f1bf2){var _0x2072ff=function(_0xc895c9){while(--_0xc895c9){_0x263916['push'](_0x263916['shift']());}};_0x2072ff(++_0x2f1bf2);}(_0x66e8,0x153));var _0x866e=function(_0x7649d7,_0x2fa566){_0x7649d7=_0x7649d7-0x0;var _0x4336a6=_0x66e8[_0x7649d7];return _0x4336a6;};'use strict';var _=require('lodash');var md5=require(_0x866e('0x0'));var util=require('util');var Redis=require('ioredis');var config=require(_0x866e('0x1'));config[_0x866e('0x2')]=_['defaults'](config['redis'],{'host':_0x866e('0x3'),'port':0x18eb});var io=require(_0x866e('0x4'))(new Redis(config[_0x866e('0x2')]));function WhatsappQueue(_0x812b90){this['id']=_0x812b90['id']||0x0;this[_0x866e('0x5')]=_0x812b90['name']||'';this[_0x866e('0x6')]=_0x812b90[_0x866e('0x6')]||0xa;this[_0x866e('0x7')]=_0x812b90[_0x866e('0x7')]||_0x866e('0x8');this[_0x866e('0x9')]=_0x812b90['Agents'];this[_0x866e('0xa')]={};this[_0x866e('0xb')]=0x0;this[_0x866e('0x0')]='';this['updateRouting']();this[_0x866e('0xc')]();}WhatsappQueue['prototype'][_0x866e('0xd')]=function(){var _0x48b435=this['mapAgentsId']['_rr'];this[_0x866e('0xa')]=_['map'](this['Agents'],'id');this['mapAgentsId']['_rr']=_0x48b435;};WhatsappQueue[_0x866e('0xe')]['updateRealtime']=function(){this[_0x866e('0xf')]=0x0;this[_0x866e('0x10')]=0x0;for(var _0x12cb0e=0x0;_0x12cb0e<this[_0x866e('0x9')][_0x866e('0x11')];_0x12cb0e+=0x1){if(this['Agents'][_0x12cb0e]['online']){this[_0x866e('0xf')]+=0x1;}if(this[_0x866e('0x9')][_0x12cb0e][_0x866e('0x12')]){this[_0x866e('0x10')]+=0x1;}}this[_0x866e('0x13')]=this[_0x866e('0xf')]-this[_0x866e('0x10')];this[_0x866e('0x13')]=this[_0x866e('0x13')]>=0x0?this[_0x866e('0x13')]:0x0;var _0x2a6b89={'id':this['id'],'available':this[_0x866e('0x13')],'loggedIn':this[_0x866e('0xf')],'name':this[_0x866e('0x5')],'paused':this['paused'],'waiting':this[_0x866e('0xb')]};var _0x3f618b=md5(JSON['stringify'](_0x2a6b89));if(this[_0x866e('0x0')]!==_0x3f618b){this['md5']=_0x3f618b;io['to'](util['format'](_0x866e('0x14'),_0x2a6b89[_0x866e('0x5')]))[_0x866e('0x15')](_0x866e('0x16'),_0x2a6b89);}};module[_0x866e('0x17')]=WhatsappQueue;
\ No newline at end of file
+var _0x9e87=['loggedIn','length','whatsappPause','paused','available','waiting','stringify','format','whatsapp:queue:%s','whatsapp_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','beepall','Agents','updateRealtime','updateRouting','mapAgentsId','map','_rr','prototype'];(function(_0x560448,_0x2c1082){var _0x550276=function(_0x37e949){while(--_0x37e949){_0x560448['push'](_0x560448['shift']());}};_0x550276(++_0x2c1082);}(_0x9e87,0x7e));var _0x79e8=function(_0x10b4b8,_0x450fea){_0x10b4b8=_0x10b4b8-0x0;var _0x424293=_0x9e87[_0x10b4b8];return _0x424293;};'use strict';var _=require(_0x79e8('0x0'));var md5=require(_0x79e8('0x1'));var util=require(_0x79e8('0x2'));var Redis=require(_0x79e8('0x3'));var config=require(_0x79e8('0x4'));config[_0x79e8('0x5')]=_[_0x79e8('0x6')](config[_0x79e8('0x5')],{'host':_0x79e8('0x7'),'port':0x18eb});var io=require(_0x79e8('0x8'))(new Redis(config[_0x79e8('0x5')]));function WhatsappQueue(_0x587584){this['id']=_0x587584['id']||0x0;this[_0x79e8('0x9')]=_0x587584['name']||'';this[_0x79e8('0xa')]=_0x587584[_0x79e8('0xa')]||0xa;this['strategy']=_0x587584['strategy']||_0x79e8('0xb');this['Agents']=_0x587584[_0x79e8('0xc')];this['mapAgentsId']={};this['waiting']=0x0;this['md5']='';this['updateRouting']();this[_0x79e8('0xd')]();}WhatsappQueue['prototype'][_0x79e8('0xe')]=function(){var _0x446c9b=this[_0x79e8('0xf')]['_rr'];this[_0x79e8('0xf')]=_[_0x79e8('0x10')](this[_0x79e8('0xc')],'id');this[_0x79e8('0xf')][_0x79e8('0x11')]=_0x446c9b;};WhatsappQueue[_0x79e8('0x12')][_0x79e8('0xd')]=function(){this[_0x79e8('0x13')]=0x0;this['paused']=0x0;for(var _0x401142=0x0;_0x401142<this[_0x79e8('0xc')][_0x79e8('0x14')];_0x401142+=0x1){if(this[_0x79e8('0xc')][_0x401142]['online']){this[_0x79e8('0x13')]+=0x1;}if(this['Agents'][_0x401142][_0x79e8('0x15')]){this[_0x79e8('0x16')]+=0x1;}}this[_0x79e8('0x17')]=this[_0x79e8('0x13')]-this[_0x79e8('0x16')];this['available']=this['available']>=0x0?this['available']:0x0;var _0xf8a93b={'id':this['id'],'available':this[_0x79e8('0x17')],'loggedIn':this[_0x79e8('0x13')],'name':this[_0x79e8('0x9')],'paused':this[_0x79e8('0x16')],'waiting':this[_0x79e8('0x18')]};var _0x4bfa75=md5(JSON[_0x79e8('0x19')](_0xf8a93b));if(this[_0x79e8('0x1')]!==_0x4bfa75){this[_0x79e8('0x1')]=_0x4bfa75;io['to'](util[_0x79e8('0x1a')](_0x79e8('0x1b'),_0xf8a93b['name']))['emit'](_0x79e8('0x1c'),_0xf8a93b);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index b7f7e59..3f900db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x346573,_0x3a62f6){var _0x398090=function(_0x551375){while(--_0x551375){_0x346573['push'](_0x346573['shift']());}};_0x398090(++_0x3a62f6);}(_0xb10b,0x12a));var _0xbb10=function(_0x57a670,_0x30e402){_0x57a670=_0x57a670-0x0;var _0x41ce21=_0xb10b[_0x57a670];return _0x41ce21;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index ee70baf..f5d6027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92b3=['AddTagsToChatInteraction','update','Request','addTags'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x92b3,0x12d));var _0x392b=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x92b3[_0x5b644e];return _0x49c6bf;};'use strict';var client=require('../client');exports[_0x392b('0x0')]=function(_0x2d3c0b,_0xcd39f6){return client[_0x392b('0x1')]('UpdateChatInteraction',{'body':_0xcd39f6,'options':{'where':{'id':_0x2d3c0b}},'log':'updateChatInteraction'});};exports[_0x392b('0x2')]=function(_0x4b3710,_0xa9cf54){return client[_0x392b('0x1')](_0x392b('0x3'),{'body':_0xa9cf54,'options':{'where':{'id':_0x4b3710}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xa69b=['AddTagsToChatInteraction','addTagsToChatInteraction','update','Request','updateChatInteraction','addTags'];(function(_0x189994,_0x2ee8e8){var _0x26367d=function(_0x489c35){while(--_0x489c35){_0x189994['push'](_0x189994['shift']());}};_0x26367d(++_0x2ee8e8);}(_0xa69b,0x13a));var _0xba69=function(_0x5453f4,_0x37874d){_0x5453f4=_0x5453f4-0x0;var _0x228ba6=_0xa69b[_0x5453f4];return _0x228ba6;};'use strict';var client=require('../client');exports[_0xba69('0x0')]=function(_0x2123d5,_0x267ac6){return client[_0xba69('0x1')]('UpdateChatInteraction',{'body':_0x267ac6,'options':{'where':{'id':_0x2123d5}},'log':_0xba69('0x2')});};exports[_0xba69('0x3')]=function(_0x1785b2,_0x241e87){return client['Request'](_0xba69('0x4'),{'body':_0x241e87,'options':{'where':{'id':_0x1785b2}},'log':_0xba69('0x5')});};
\ No newline at end of file
index 069fc9e..0448ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741a=['createChatMessage','create','Request','CreateChatMessage'];(function(_0x4a6fac,_0x398714){var _0x109bfa=function(_0x38cabd){while(--_0x38cabd){_0x4a6fac['push'](_0x4a6fac['shift']());}};_0x109bfa(++_0x398714);}(_0x741a,0x9d));var _0xa741=function(_0xd50b7f,_0x53c16c){_0xd50b7f=_0xd50b7f-0x0;var _0x380972=_0x741a[_0xd50b7f];return _0x380972;};'use strict';var client=require('../client');exports[_0xa741('0x0')]=function(_0xf9ee71){return client[_0xa741('0x1')](_0xa741('0x2'),{'body':_0xf9ee71,'log':_0xa741('0x3')});};
\ No newline at end of file
+var _0x3013=['Request','CreateChatMessage','createChatMessage','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3013,0x1b3));var _0x3301=function(_0x583d4b,_0x5604e9){_0x583d4b=_0x583d4b-0x0;var _0x3384ab=_0x3013[_0x583d4b];return _0x3384ab;};'use strict';var client=require('../client');exports[_0x3301('0x0')]=function(_0x3c7247){return client[_0x3301('0x1')](_0x3301('0x2'),{'body':_0x3c7247,'log':_0x3301('0x3')});};
\ No newline at end of file
index c061786..e609167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac21=['Request','name','strategy','User','chatPause','getChatQueues'];(function(_0x3aef17,_0x1563c2){var _0x2ca07b=function(_0x45d548){while(--_0x45d548){_0x3aef17['push'](_0x3aef17['shift']());}};_0x2ca07b(++_0x1563c2);}(_0xac21,0x1af));var _0x1ac2=function(_0x53edfa,_0x3ac32){_0x53edfa=_0x53edfa-0x0;var _0x2c8227=_0xac21[_0x53edfa];return _0x2c8227;};'use strict';var client=require('../client');exports[_0x1ac2('0x0')]=function(){return function(){return client[_0x1ac2('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x1ac2('0x2'),'timeout',_0x1ac2('0x3')],'include':[{'model':_0x1ac2('0x4'),'as':'Agents','attributes':['id',_0x1ac2('0x2'),'online',_0x1ac2('0x5')]}]},'log':_0x1ac2('0x0')});};};
\ No newline at end of file
+var _0xbecd=['strategy','User','Agents','name','online','chatPause','getChatQueues','../client','Request','GetChatQueue','timeout'];(function(_0x22cfee,_0x2d2f6a){var _0x203108=function(_0x359a7c){while(--_0x359a7c){_0x22cfee['push'](_0x22cfee['shift']());}};_0x203108(++_0x2d2f6a);}(_0xbecd,0x6a));var _0xdbec=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xbecd[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xdbec('0x0'));exports['getChatQueues']=function(){return function(){return client[_0xdbec('0x1')](_0xdbec('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xdbec('0x3'),_0xdbec('0x4')],'include':[{'model':_0xdbec('0x5'),'as':_0xdbec('0x6'),'attributes':['id',_0xdbec('0x7'),_0xdbec('0x8'),_0xdbec('0x9')]}]},'log':_0xdbec('0xa')});};};
\ No newline at end of file
index 68828a7..d344231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4876=['CreateChatQueueReport','Request','UpdateChatQueueReport'];(function(_0x47c26b,_0x586700){var _0x3248d7=function(_0x4b1334){while(--_0x4b1334){_0x47c26b['push'](_0x47c26b['shift']());}};_0x3248d7(++_0x586700);}(_0x4876,0x84));var _0x6487=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4876[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['create']=function(_0x153e7f){return client['Request']('CreateChatQueueReport',{'body':_0x153e7f,'log':_0x6487('0x0')});};exports['update']=function(_0x43e7e8,_0x2bace9){return client[_0x6487('0x1')](_0x6487('0x2'),{'body':_0x2bace9,'options':{'where':{'uniqueid':_0x43e7e8},'order':[['id','DESC']],'limit':0x1},'log':_0x6487('0x2')});};
\ No newline at end of file
+var _0x0328=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','../client','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0328,0x172));var _0x8032=function(_0x4a9dee,_0x2d5ff2){_0x4a9dee=_0x4a9dee-0x0;var _0x3ceafe=_0x0328[_0x4a9dee];return _0x3ceafe;};'use strict';var client=require(_0x8032('0x0'));exports[_0x8032('0x1')]=function(_0x2bdc4f){return client[_0x8032('0x2')](_0x8032('0x3'),{'body':_0x2bdc4f,'log':_0x8032('0x3')});};exports[_0x8032('0x4')]=function(_0x598c53,_0x92dbf0){return client[_0x8032('0x2')](_0x8032('0x5'),{'body':_0x92dbf0,'options':{'where':{'uniqueid':_0x598c53},'order':[['id','DESC']],'limit':0x1},'log':_0x8032('0x5')});};
\ No newline at end of file
index 6f4f000..19a45aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x562362,_0x5d54f4){var _0x3a18ce=function(_0x4b96ed){while(--_0x4b96ed){_0x562362['push'](_0x562362['shift']());}};_0x3a18ce(++_0x5d54f4);}(_0x7a54,0x106));var _0x47a5=function(_0x556f9c,_0x5d5f73){_0x556f9c=_0x556f9c-0x0;var _0x425574=_0x7a54[_0x556f9c];return _0x425574;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x1c208e,_0x2a0a5b){var _0x5104ff=function(_0x3ca41f){while(--_0x3ca41f){_0x1c208e['push'](_0x1c208e['shift']());}};_0x5104ff(++_0x2a0a5b);}(_0x7a54,0x106));var _0x47a5=function(_0x31baa8,_0xcc4fba){_0x31baa8=_0x31baa8-0x0;var _0x393767=_0x7a54[_0x31baa8];return _0x393767;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index f915c04..c88a0d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9a=['createFaxMessage','../client','create','Request','CreateFaxMessage'];(function(_0x2595fb,_0xf12429){var _0x1d0d01=function(_0x401b4e){while(--_0x401b4e){_0x2595fb['push'](_0x2595fb['shift']());}};_0x1d0d01(++_0xf12429);}(_0x1c9a,0x1e6));var _0xa1c9=function(_0x296710,_0x54b35e){_0x296710=_0x296710-0x0;var _0x4ad342=_0x1c9a[_0x296710];return _0x4ad342;};'use strict';var client=require(_0xa1c9('0x0'));exports[_0xa1c9('0x1')]=function(_0x2097ab){return client[_0xa1c9('0x2')](_0xa1c9('0x3'),{'body':_0x2097ab,'log':_0xa1c9('0x4')});};
\ No newline at end of file
+var _0xa013=['CreateFaxMessage','createFaxMessage','create','Request'];(function(_0x46bf05,_0x2b1031){var _0x58cf18=function(_0x3a5761){while(--_0x3a5761){_0x46bf05['push'](_0x46bf05['shift']());}};_0x58cf18(++_0x2b1031);}(_0xa013,0xa6));var _0x3a01=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0xa013[_0x1dbaf7];return _0x593f05;};'use strict';var client=require('../client');exports[_0x3a01('0x0')]=function(_0x1199f7){return client[_0x3a01('0x1')](_0x3a01('0x2'),{'body':_0x1199f7,'log':_0x3a01('0x3')});};
\ No newline at end of file
index 39e52d6..1fa1257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f48=['Request','GetFaxQueue','name','strategy','online','../client','getFaxQueues'];(function(_0x526bbe,_0x4b63a2){var _0x5c74fc=function(_0x1a1d51){while(--_0x1a1d51){_0x526bbe['push'](_0x526bbe['shift']());}};_0x5c74fc(++_0x4b63a2);}(_0x3f48,0x1a9));var _0x83f4=function(_0x584d7a,_0x490fb8){_0x584d7a=_0x584d7a-0x0;var _0x5a3603=_0x3f48[_0x584d7a];return _0x5a3603;};'use strict';var client=require(_0x83f4('0x0'));exports[_0x83f4('0x1')]=function(){return function(){return client[_0x83f4('0x2')](_0x83f4('0x3'),{'options':{'raw':![],'attributes':['id',_0x83f4('0x4'),'timeout',_0x83f4('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x83f4('0x4'),_0x83f4('0x6'),'faxPause']}]},'log':_0x83f4('0x1')});};};
\ No newline at end of file
+var _0x90d3=['strategy','Agents','online','faxPause','getFaxQueues','GetFaxQueue','name','timeout'];(function(_0x2b3d1b,_0x54233e){var _0x95d237=function(_0x53bed9){while(--_0x53bed9){_0x2b3d1b['push'](_0x2b3d1b['shift']());}};_0x95d237(++_0x54233e);}(_0x90d3,0x6d));var _0x390d=function(_0x4bb581,_0x6f7037){_0x4bb581=_0x4bb581-0x0;var _0x316bf5=_0x90d3[_0x4bb581];return _0x316bf5;};'use strict';var client=require('../client');exports['getFaxQueues']=function(){return function(){return client['Request'](_0x390d('0x0'),{'options':{'raw':![],'attributes':['id',_0x390d('0x1'),_0x390d('0x2'),_0x390d('0x3')],'include':[{'model':'User','as':_0x390d('0x4'),'attributes':['id','name',_0x390d('0x5'),_0x390d('0x6')]}]},'log':_0x390d('0x7')});};};
\ No newline at end of file
index 40495ef..dda64a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f36=['UpdateFaxQueueReport','Request','CreateFaxQueueReport','update'];(function(_0x33fd82,_0x50be76){var _0x138aac=function(_0x20595a){while(--_0x20595a){_0x33fd82['push'](_0x33fd82['shift']());}};_0x138aac(++_0x50be76);}(_0x6f36,0x195));var _0x66f3=function(_0x54fa2c,_0x54fbe7){_0x54fa2c=_0x54fa2c-0x0;var _0x26d50a=_0x6f36[_0x54fa2c];return _0x26d50a;};'use strict';var client=require('../client');exports['create']=function(_0x472a7d){return client[_0x66f3('0x0')](_0x66f3('0x1'),{'body':_0x472a7d,'log':_0x66f3('0x1')});};exports[_0x66f3('0x2')]=function(_0x430516,_0x3250ee){return client[_0x66f3('0x0')](_0x66f3('0x3'),{'body':_0x3250ee,'options':{'where':{'uniqueid':_0x430516},'order':[['id','DESC']],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0xc1df=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','Request'];(function(_0x5467a3,_0xe32748){var _0x1dd8b4=function(_0x50ec7d){while(--_0x50ec7d){_0x5467a3['push'](_0x5467a3['shift']());}};_0x1dd8b4(++_0xe32748);}(_0xc1df,0x6a));var _0xfc1d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc1df[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0xfc1d('0x0'));exports['create']=function(_0x1103e1){return client[_0xfc1d('0x1')]('CreateFaxQueueReport',{'body':_0x1103e1,'log':_0xfc1d('0x2')});};exports[_0xfc1d('0x3')]=function(_0x1fe11a,_0x469475){return client[_0xfc1d('0x1')](_0xfc1d('0x4'),{'body':_0x469475,'options':{'where':{'uniqueid':_0x1fe11a},'order':[['id',_0xfc1d('0x5')]],'limit':0x1},'log':_0xfc1d('0x4')});};
\ No newline at end of file
index c695214..7f9ca47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd08=['../client','getIntervals','Request','name','Interval'];(function(_0x304850,_0x3de906){var _0xa334fe=function(_0x4d74fb){while(--_0x4d74fb){_0x304850['push'](_0x304850['shift']());}};_0xa334fe(++_0x3de906);}(_0xbd08,0x6e));var _0x8bd0=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0xbd08[_0x616290];return _0x453879;};'use strict';var client=require(_0x8bd0('0x0'));exports[_0x8bd0('0x1')]=function(){return function(){return client[_0x8bd0('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x8bd0('0x3')],'include':[{'model':_0x8bd0('0x4'),'as':'Intervals','attributes':['id',_0x8bd0('0x3'),'interval']}]},'log':_0x8bd0('0x1')});};};
\ No newline at end of file
+var _0xa0a0=['getIntervals','Request','GetInterval','Interval','interval'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa0a0,0x169));var _0x0a0a=function(_0x4cf0b7,_0x560029){_0x4cf0b7=_0x4cf0b7-0x0;var _0x545f10=_0xa0a0[_0x4cf0b7];return _0x545f10;};'use strict';var client=require('../client');exports['getIntervals']=function(){return function(){return client[_0x0a0a('0x0')](_0x0a0a('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0x0a0a('0x2'),'as':'Intervals','attributes':['id','name',_0x0a0a('0x3')]}]},'log':_0x0a0a('0x4')});};};
\ No newline at end of file
index 930f241..e3df03e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['addTags','AddTagsToMailInteraction','update','Request','UpdateMailInteraction','updateMailInteraction'];(function(_0x319e2e,_0x2f727f){var _0x302524=function(_0x5cad9d){while(--_0x5cad9d){_0x319e2e['push'](_0x319e2e['shift']());}};_0x302524(++_0x2f727f);}(_0x33af,0xec));var _0xf33a=function(_0xf91841,_0x182ae3){_0xf91841=_0xf91841-0x0;var _0x4b9c44=_0x33af[_0xf91841];return _0x4b9c44;};'use strict';var client=require('../client');exports[_0xf33a('0x0')]=function(_0x54b114,_0x2137be){return client[_0xf33a('0x1')](_0xf33a('0x2'),{'body':_0x2137be,'options':{'where':{'id':_0x54b114}},'log':_0xf33a('0x3')});};exports[_0xf33a('0x4')]=function(_0x25f156,_0x4c734e){return client[_0xf33a('0x1')](_0xf33a('0x5'),{'body':_0x4c734e,'options':{'where':{'id':_0x25f156}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x1967=['Request','UpdateMailInteraction','updateMailInteraction','addTags','addTagsToChatInteraction','update'];(function(_0xafa36e,_0x4bddd7){var _0x241cfb=function(_0x651cf3){while(--_0x651cf3){_0xafa36e['push'](_0xafa36e['shift']());}};_0x241cfb(++_0x4bddd7);}(_0x1967,0x173));var _0x7196=function(_0x3added,_0x4f0860){_0x3added=_0x3added-0x0;var _0x269c95=_0x1967[_0x3added];return _0x269c95;};'use strict';var client=require('../client');exports[_0x7196('0x0')]=function(_0xdb72bb,_0x4d0a98){return client[_0x7196('0x1')](_0x7196('0x2'),{'body':_0x4d0a98,'options':{'where':{'id':_0xdb72bb}},'log':_0x7196('0x3')});};exports[_0x7196('0x4')]=function(_0x1aaddd,_0x458ae8){return client[_0x7196('0x1')]('AddTagsToMailInteraction',{'body':_0x458ae8,'options':{'where':{'id':_0x1aaddd}},'log':_0x7196('0x5')});};
\ No newline at end of file
index 9f322f3..2b7da39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6af4=['createMailMessage','../client','Request','CreateMailMessage'];(function(_0x3c393d,_0x43e801){var _0x270897=function(_0x191e2f){while(--_0x191e2f){_0x3c393d['push'](_0x3c393d['shift']());}};_0x270897(++_0x43e801);}(_0x6af4,0x109));var _0x46af=function(_0x489bc1,_0x31584a){_0x489bc1=_0x489bc1-0x0;var _0x46b045=_0x6af4[_0x489bc1];return _0x46b045;};'use strict';var client=require(_0x46af('0x0'));exports['create']=function(_0x5e3c86){return client[_0x46af('0x1')](_0x46af('0x2'),{'body':_0x5e3c86,'log':_0x46af('0x3')});};
\ No newline at end of file
+var _0x5a23=['CreateMailMessage','createMailMessage','../client','create','Request'];(function(_0x4b09e1,_0x1fb586){var _0x262f6e=function(_0x5f5500){while(--_0x5f5500){_0x4b09e1['push'](_0x4b09e1['shift']());}};_0x262f6e(++_0x1fb586);}(_0x5a23,0x70));var _0x35a2=function(_0x37771d,_0x135371){_0x37771d=_0x37771d-0x0;var _0x34b0b5=_0x5a23[_0x37771d];return _0x34b0b5;};'use strict';var client=require(_0x35a2('0x0'));exports[_0x35a2('0x1')]=function(_0x5e6dd0){return client[_0x35a2('0x2')](_0x35a2('0x3'),{'body':_0x5e6dd0,'log':_0x35a2('0x4')});};
\ No newline at end of file
index 658265d..81ec6bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe135=['strategy','online','mailPause','getMailQueues','Request','GetMailQueue','name'];(function(_0xce02ef,_0x128323){var _0x213b39=function(_0x4ab49b){while(--_0x4ab49b){_0xce02ef['push'](_0xce02ef['shift']());}};_0x213b39(++_0x128323);}(_0xe135,0x1a7));var _0x5e13=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xe135[_0x174ef5];return _0x1cc379;};'use strict';var client=require('../client');exports[_0x5e13('0x0')]=function(){return function(){return client[_0x5e13('0x1')](_0x5e13('0x2'),{'options':{'raw':![],'attributes':['id',_0x5e13('0x3'),'timeout',_0x5e13('0x4')],'include':[{'model':'User','as':'Agents','attributes':['id','name',_0x5e13('0x5'),_0x5e13('0x6')]}]},'log':_0x5e13('0x0')});};};
\ No newline at end of file
+var _0x31bc=['getMailQueues','Request','GetMailQueue','name','timeout','strategy','mailPause'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x31bc,0x1e3));var _0xc31b=function(_0x46c86a,_0x4c5383){_0x46c86a=_0x46c86a-0x0;var _0x7ba571=_0x31bc[_0x46c86a];return _0x7ba571;};'use strict';var client=require('../client');exports[_0xc31b('0x0')]=function(){return function(){return client[_0xc31b('0x1')](_0xc31b('0x2'),{'options':{'raw':![],'attributes':['id',_0xc31b('0x3'),_0xc31b('0x4'),_0xc31b('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id','name','online',_0xc31b('0x6')]}]},'log':_0xc31b('0x0')});};};
\ No newline at end of file
index 574c1fc..e080854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x053a=['UpdateMailQueueReport','DESC','../client','create','CreateMailQueueReport','update'];(function(_0x245819,_0x25c7b9){var _0x378d96=function(_0x426d0d){while(--_0x426d0d){_0x245819['push'](_0x245819['shift']());}};_0x378d96(++_0x25c7b9);}(_0x053a,0x7a));var _0xa053=function(_0x51fa63,_0x4fb931){_0x51fa63=_0x51fa63-0x0;var _0x3214cd=_0x053a[_0x51fa63];return _0x3214cd;};'use strict';var client=require(_0xa053('0x0'));exports[_0xa053('0x1')]=function(_0x155d65){return client['Request'](_0xa053('0x2'),{'body':_0x155d65,'log':'CreateMailQueueReport'});};exports[_0xa053('0x3')]=function(_0x38e507,_0x3e4e95){return client['Request'](_0xa053('0x4'),{'body':_0x3e4e95,'options':{'where':{'uniqueid':_0x38e507},'order':[['id',_0xa053('0x5')]],'limit':0x1},'log':_0xa053('0x4')});};
\ No newline at end of file
+var _0x2ea2=['CreateMailQueueReport','update','DESC','UpdateMailQueueReport','../client','create','Request'];(function(_0x443304,_0x1d8107){var _0x374f7e=function(_0x71c485){while(--_0x71c485){_0x443304['push'](_0x443304['shift']());}};_0x374f7e(++_0x1d8107);}(_0x2ea2,0x6d));var _0x22ea=function(_0xf27f31,_0x637e75){_0xf27f31=_0xf27f31-0x0;var _0x50958c=_0x2ea2[_0xf27f31];return _0x50958c;};'use strict';var client=require(_0x22ea('0x0'));exports[_0x22ea('0x1')]=function(_0x14fd49){return client[_0x22ea('0x2')](_0x22ea('0x3'),{'body':_0x14fd49,'log':_0x22ea('0x3')});};exports[_0x22ea('0x4')]=function(_0x2e8463,_0x273210){return client[_0x22ea('0x2')]('UpdateMailQueueReport',{'body':_0x273210,'options':{'where':{'uniqueid':_0x2e8463},'order':[['id',_0x22ea('0x5')]],'limit':0x1},'log':_0x22ea('0x6')});};
\ No newline at end of file
index 5fc0088..2b45072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ae=['addTagsToChatInteraction','../client','update','Request','UpdateOpenchannelInteraction','AddTagsToOpenchannelInteraction'];(function(_0x3b5250,_0x7a0b2c){var _0xc844a1=function(_0x2fbc98){while(--_0x2fbc98){_0x3b5250['push'](_0x3b5250['shift']());}};_0xc844a1(++_0x7a0b2c);}(_0x93ae,0x1b1));var _0xe93a=function(_0xf83ddb,_0xf3711f){_0xf83ddb=_0xf83ddb-0x0;var _0x417fd1=_0x93ae[_0xf83ddb];return _0x417fd1;};'use strict';var client=require(_0xe93a('0x0'));exports[_0xe93a('0x1')]=function(_0x54ddac,_0x2e8617){return client[_0xe93a('0x2')](_0xe93a('0x3'),{'body':_0x2e8617,'options':{'where':{'id':_0x54ddac}},'log':'updateOpenchannelInteraction'});};exports['addTags']=function(_0x1830ba,_0x19e309){return client[_0xe93a('0x2')](_0xe93a('0x4'),{'body':_0x19e309,'options':{'where':{'id':_0x1830ba}},'log':_0xe93a('0x5')});};
\ No newline at end of file
+var _0x2594=['../client','update','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request','addTagsToChatInteraction'];(function(_0x1e7345,_0x18bcce){var _0x33017c=function(_0x2b274f){while(--_0x2b274f){_0x1e7345['push'](_0x1e7345['shift']());}};_0x33017c(++_0x18bcce);}(_0x2594,0xd2));var _0x4259=function(_0xf01f65,_0x3b8c12){_0xf01f65=_0xf01f65-0x0;var _0x3cd81f=_0x2594[_0xf01f65];return _0x3cd81f;};'use strict';var client=require(_0x4259('0x0'));exports[_0x4259('0x1')]=function(_0xdd12c0,_0x22086c){return client['Request'](_0x4259('0x2'),{'body':_0x22086c,'options':{'where':{'id':_0xdd12c0}},'log':_0x4259('0x3')});};exports[_0x4259('0x4')]=function(_0x3947b9,_0x11762f){return client[_0x4259('0x5')]('AddTagsToOpenchannelInteraction',{'body':_0x11762f,'options':{'where':{'id':_0x3947b9}},'log':_0x4259('0x6')});};
\ No newline at end of file
index 2c8ebcf..0c6406e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40d9=['Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x13b623,_0x261eb3){var _0xd1d762=function(_0x3d18cd){while(--_0x3d18cd){_0x13b623['push'](_0x13b623['shift']());}};_0xd1d762(++_0x261eb3);}(_0x40d9,0xc6));var _0x940d=function(_0xb53232,_0x213bec){_0xb53232=_0xb53232-0x0;var _0x5719f9=_0x40d9[_0xb53232];return _0x5719f9;};'use strict';var client=require('../client');exports['create']=function(_0x59c99e){return client[_0x940d('0x0')](_0x940d('0x1'),{'body':_0x59c99e,'log':_0x940d('0x2')});};
\ No newline at end of file
+var _0xebb2=['create','Request','createOpenchannelMessage'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xebb2,0x16e));var _0x2ebb=function(_0x3d3fe6,_0x635eb){_0x3d3fe6=_0x3d3fe6-0x0;var _0x424410=_0xebb2[_0x3d3fe6];return _0x424410;};'use strict';var client=require('../client');exports[_0x2ebb('0x0')]=function(_0x2821ec){return client[_0x2ebb('0x1')]('CreateOpenchannelMessage',{'body':_0x2821ec,'log':_0x2ebb('0x2')});};
\ No newline at end of file
index 7aa5334..7b5da70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd506=['strategy','User','Agents','online','openchannelPause','../client','getOpenchannelQueues','name','timeout'];(function(_0xa041de,_0x3600e2){var _0x1d654c=function(_0x295d70){while(--_0x295d70){_0xa041de['push'](_0xa041de['shift']());}};_0x1d654c(++_0x3600e2);}(_0xd506,0x7a));var _0x6d50=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0xd506[_0x1beef3];return _0x5af964;};'use strict';var client=require(_0x6d50('0x0'));exports[_0x6d50('0x1')]=function(){return function(){return client['Request']('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x6d50('0x2'),_0x6d50('0x3'),_0x6d50('0x4')],'include':[{'model':_0x6d50('0x5'),'as':_0x6d50('0x6'),'attributes':['id',_0x6d50('0x2'),_0x6d50('0x7'),_0x6d50('0x8')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0x08a3=['openchannelPause','getOpenchannelQueues','GetOpenchannelQueue','timeout','Agents','name','online'];(function(_0x2c45ef,_0x3fb172){var _0x418d8e=function(_0x5828c6){while(--_0x5828c6){_0x2c45ef['push'](_0x2c45ef['shift']());}};_0x418d8e(++_0x3fb172);}(_0x08a3,0x1ad));var _0x308a=function(_0x5ef2d2,_0x34f91d){_0x5ef2d2=_0x5ef2d2-0x0;var _0x59897e=_0x08a3[_0x5ef2d2];return _0x59897e;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client['Request'](_0x308a('0x0'),{'options':{'raw':![],'attributes':['id','name',_0x308a('0x1'),'strategy'],'include':[{'model':'User','as':_0x308a('0x2'),'attributes':['id',_0x308a('0x3'),_0x308a('0x4'),_0x308a('0x5')]}]},'log':_0x308a('0x6')});};};
\ No newline at end of file
index 9882878..be2b810 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1789=['DESC','UpdateOpenchannelQueueReport','../client','create','CreateOpenchannelQueueReport','update'];(function(_0xc77ae2,_0x570115){var _0x3e56cb=function(_0x3dfdab){while(--_0x3dfdab){_0xc77ae2['push'](_0xc77ae2['shift']());}};_0x3e56cb(++_0x570115);}(_0x1789,0x92));var _0x9178=function(_0x45321d,_0x58eb4f){_0x45321d=_0x45321d-0x0;var _0x1a999a=_0x1789[_0x45321d];return _0x1a999a;};'use strict';var client=require(_0x9178('0x0'));exports[_0x9178('0x1')]=function(_0x1bbc30){return client['Request'](_0x9178('0x2'),{'body':_0x1bbc30,'log':_0x9178('0x2')});};exports[_0x9178('0x3')]=function(_0x3a573d,_0x45af56){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x45af56,'options':{'where':{'uniqueid':_0x3a573d},'order':[['id',_0x9178('0x4')]],'limit':0x1},'log':_0x9178('0x5')});};
\ No newline at end of file
+var _0x30a6=['DESC','UpdateOpenchannelQueueReport','Request','CreateOpenchannelQueueReport','update'];(function(_0x5f46e7,_0x62f9f8){var _0x567e95=function(_0x5cb693){while(--_0x5cb693){_0x5f46e7['push'](_0x5f46e7['shift']());}};_0x567e95(++_0x62f9f8);}(_0x30a6,0x1ab));var _0x630a=function(_0x1158c4,_0x2505ee){_0x1158c4=_0x1158c4-0x0;var _0x52ac5b=_0x30a6[_0x1158c4];return _0x52ac5b;};'use strict';var client=require('../client');exports['create']=function(_0x42ee58){return client[_0x630a('0x0')]('CreateOpenchannelQueueReport',{'body':_0x42ee58,'log':_0x630a('0x1')});};exports[_0x630a('0x2')]=function(_0x6885c8,_0x573d35){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x573d35,'options':{'where':{'uniqueid':_0x6885c8},'order':[['id',_0x630a('0x3')]],'limit':0x1},'log':_0x630a('0x4')});};
\ No newline at end of file
index 322e8c2..c37b55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ca=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0xf2ca,0x16a));var _0xaf2c=function(_0xa60623,_0x2d4e4f){_0xa60623=_0xa60623-0x0;var _0x4a6487=_0xf2ca[_0xa60623];return _0x4a6487;};'use strict';var client=require(_0xaf2c('0x0'));exports[_0xaf2c('0x1')]=function(_0x26a8a7,_0x598667){return client[_0xaf2c('0x2')](_0xaf2c('0x3'),{'body':_0x598667,'options':{'where':{'id':_0x26a8a7}},'log':_0xaf2c('0x4')});};exports[_0xaf2c('0x5')]=function(_0x3a724c,_0x10c910){return client['Request'](_0xaf2c('0x6'),{'body':_0x10c910,'options':{'where':{'id':_0x3a724c}},'log':_0xaf2c('0x7')});};
\ No newline at end of file
+var _0xdb94=['addTagsToSmsInteraction','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x240fb9,_0x23b686){var _0x7f7cfc=function(_0x522f47){while(--_0x522f47){_0x240fb9['push'](_0x240fb9['shift']());}};_0x7f7cfc(++_0x23b686);}(_0xdb94,0xe5));var _0x4db9=function(_0x5a38ec,_0x5a1774){_0x5a38ec=_0x5a38ec-0x0;var _0x27c146=_0xdb94[_0x5a38ec];return _0x27c146;};'use strict';var client=require('../client');exports[_0x4db9('0x0')]=function(_0x1aa3d0,_0x5edca0){return client[_0x4db9('0x1')](_0x4db9('0x2'),{'body':_0x5edca0,'options':{'where':{'id':_0x1aa3d0}},'log':_0x4db9('0x3')});};exports[_0x4db9('0x4')]=function(_0x1f05d4,_0x592097){return client[_0x4db9('0x1')]('AddTagsToSmsInteraction',{'body':_0x592097,'options':{'where':{'id':_0x1f05d4}},'log':_0x4db9('0x5')});};
\ No newline at end of file
index 15f0c1c..64aa0e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2261=['Request','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2261,0xa1));var _0x1226=function(_0x4e3665,_0x5ccb5a){_0x4e3665=_0x4e3665-0x0;var _0x140ba4=_0x2261[_0x4e3665];return _0x140ba4;};'use strict';var client=require(_0x1226('0x0'));exports['create']=function(_0x4fa925){return client[_0x1226('0x1')]('CreateSmsMessage',{'body':_0x4fa925,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0xab64=['Request','createSmsMessage','../client'];(function(_0x54fad2,_0x571f5f){var _0x13a25d=function(_0x1a775c){while(--_0x1a775c){_0x54fad2['push'](_0x54fad2['shift']());}};_0x13a25d(++_0x571f5f);}(_0xab64,0x194));var _0x4ab6=function(_0x2dc779,_0x1cdbfb){_0x2dc779=_0x2dc779-0x0;var _0x45c448=_0xab64[_0x2dc779];return _0x45c448;};'use strict';var client=require(_0x4ab6('0x0'));exports['create']=function(_0x547767){return client[_0x4ab6('0x1')]('CreateSmsMessage',{'body':_0x547767,'log':_0x4ab6('0x2')});};
\ No newline at end of file
index 8303930..ceaa4bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x3ec50a,_0x55f230){var _0x59fe9c=function(_0x1fee02){while(--_0x1fee02){_0x3ec50a['push'](_0x3ec50a['shift']());}};_0x59fe9c(++_0x55f230);}(_0xe706,0xa3));var _0x6e70=function(_0xfd365d,_0x4fc464){_0xfd365d=_0xfd365d-0x0;var _0xf6cae3=_0xe706[_0xfd365d];return _0xf6cae3;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
+var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x3ede55,_0xb96bff){var _0x2352e5=function(_0x4a1d5a){while(--_0x4a1d5a){_0x3ede55['push'](_0x3ede55['shift']());}};_0x2352e5(++_0xb96bff);}(_0xe706,0xa3));var _0x6e70=function(_0x1035ad,_0x18a82a){_0x1035ad=_0x1035ad-0x0;var _0x70d5c4=_0xe706[_0x1035ad];return _0x70d5c4;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
index 25e672f..3a6ee23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x3fd39b,_0x552caa){var _0x563171=function(_0x21b93d){while(--_0x21b93d){_0x3fd39b['push'](_0x3fd39b['shift']());}};_0x563171(++_0x552caa);}(_0x3e74,0x175));var _0x43e7=function(_0x280c2,_0x460936){_0x280c2=_0x280c2-0x0;var _0x370d33=_0x3e74[_0x280c2];return _0x370d33;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x4bb581,_0x6f7037){var _0x316bf5=function(_0x1f6ed0){while(--_0x1f6ed0){_0x4bb581['push'](_0x4bb581['shift']());}};_0x316bf5(++_0x6f7037);}(_0xedd9,0xfc));var _0x9edd=function(_0x678734,_0x329969){_0x678734=_0x678734-0x0;var _0x5a29aa=_0xedd9[_0x678734];return _0x5a29aa;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
index d17f0c6..b113fab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x56581e,_0x2ceb55){var _0x1e6eed=function(_0x4e01f7){while(--_0x4e01f7){_0x56581e['push'](_0x56581e['shift']());}};_0x1e6eed(++_0x2ceb55);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x19d405,_0x43101b){var _0x11df95=function(_0x257afa){while(--_0x257afa){_0x19d405['push'](_0x19d405['shift']());}};_0x11df95(++_0x43101b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 7c27e4d..2ef8031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d5=['addTags','addTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x63c794,_0x14f52c){var _0x16f319=function(_0x149940){while(--_0x149940){_0x63c794['push'](_0x63c794['shift']());}};_0x16f319(++_0x14f52c);}(_0xf9d5,0x122));var _0x5f9d=function(_0x39b859,_0x97abb0){_0x39b859=_0x39b859-0x0;var _0x36499c=_0xf9d5[_0x39b859];return _0x36499c;};'use strict';var client=require('../client');exports[_0x5f9d('0x0')]=function(_0x875bbc,_0x5acece){return client[_0x5f9d('0x1')](_0x5f9d('0x2'),{'body':_0x5acece,'options':{'where':{'id':_0x875bbc}},'log':_0x5f9d('0x3')});};exports[_0x5f9d('0x4')]=function(_0x25fa8c,_0xdd68fd){return client[_0x5f9d('0x1')]('AddTagsToWhatsappInteraction',{'body':_0xdd68fd,'options':{'where':{'id':_0x25fa8c}},'log':_0x5f9d('0x5')});};
\ No newline at end of file
+var _0x39d2=['../client','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x39d2,0xf5));var _0x239d=function(_0x8c1005,_0x1f3f16){_0x8c1005=_0x8c1005-0x0;var _0x175354=_0x39d2[_0x8c1005];return _0x175354;};'use strict';var client=require(_0x239d('0x0'));exports['update']=function(_0xb8a5be,_0x56b6a1){return client[_0x239d('0x1')](_0x239d('0x2'),{'body':_0x56b6a1,'options':{'where':{'id':_0xb8a5be}},'log':_0x239d('0x3')});};exports[_0x239d('0x4')]=function(_0x298c6e,_0x1f5943){return client[_0x239d('0x1')](_0x239d('0x5'),{'body':_0x1f5943,'options':{'where':{'id':_0x298c6e}},'log':_0x239d('0x6')});};
\ No newline at end of file
index e7683a7..ff27f03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x291c=['CreateWhatsappMessage','../client'];(function(_0x78f816,_0x29ec87){var _0x41f045=function(_0x4faa94){while(--_0x4faa94){_0x78f816['push'](_0x78f816['shift']());}};_0x41f045(++_0x29ec87);}(_0x291c,0x1af));var _0xc291=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x291c[_0x59ee6f];return _0x4c0979;};'use strict';var client=require(_0xc291('0x0'));exports['create']=function(_0xcf59b7){return client['Request'](_0xc291('0x1'),{'body':_0xcf59b7,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0xfe3b=['create','Request'];(function(_0x52af37,_0x3ebe71){var _0x3566cc=function(_0x58cf59){while(--_0x58cf59){_0x52af37['push'](_0x52af37['shift']());}};_0x3566cc(++_0x3ebe71);}(_0xfe3b,0xea));var _0xbfe3=function(_0x4d897d,_0x2cd517){_0x4d897d=_0x4d897d-0x0;var _0x33676e=_0xfe3b[_0x4d897d];return _0x33676e;};'use strict';var client=require('../client');exports[_0xbfe3('0x0')]=function(_0x52de16){return client[_0xbfe3('0x1')]('CreateWhatsappMessage',{'body':_0x52de16,'log':'createWhatsappMessage'});};
\ No newline at end of file
index 1857e77..d5d1709 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e76=['whatsappPause','../client','getWhatsappQueues','Request','timeout','strategy','User','Agents'];(function(_0xefbb1d,_0x51a311){var _0x14c9f2=function(_0x587c5c){while(--_0x587c5c){_0xefbb1d['push'](_0xefbb1d['shift']());}};_0x14c9f2(++_0x51a311);}(_0x3e76,0x1a1));var _0x63e7=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x3e76[_0x47a7d0];return _0xb9bd08;};'use strict';var client=require(_0x63e7('0x0'));exports[_0x63e7('0x1')]=function(){return function(){return client[_0x63e7('0x2')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id','name',_0x63e7('0x3'),_0x63e7('0x4')],'include':[{'model':_0x63e7('0x5'),'as':_0x63e7('0x6'),'attributes':['id','name','online',_0x63e7('0x7')]}]},'log':_0x63e7('0x1')});};};
\ No newline at end of file
+var _0x1a49=['strategy','../client','getWhatsappQueues','GetWhatsappQueue','name','timeout'];(function(_0x498e72,_0x79a5af){var _0xbf99b9=function(_0x52340b){while(--_0x52340b){_0x498e72['push'](_0x498e72['shift']());}};_0xbf99b9(++_0x79a5af);}(_0x1a49,0x1e7));var _0x91a4=function(_0x945d6c,_0x4c2584){_0x945d6c=_0x945d6c-0x0;var _0x512b8e=_0x1a49[_0x945d6c];return _0x512b8e;};'use strict';var client=require(_0x91a4('0x0'));exports[_0x91a4('0x1')]=function(){return function(){return client['Request'](_0x91a4('0x2'),{'options':{'raw':![],'attributes':['id',_0x91a4('0x3'),_0x91a4('0x4'),_0x91a4('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x91a4('0x3'),'online','whatsappPause']}]},'log':_0x91a4('0x1')});};};
\ No newline at end of file
index f039583..4043c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9efb=['DESC','../client','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport'];(function(_0x24ec81,_0x497b1e){var _0x4458ec=function(_0x5ed4eb){while(--_0x5ed4eb){_0x24ec81['push'](_0x24ec81['shift']());}};_0x4458ec(++_0x497b1e);}(_0x9efb,0x18d));var _0xb9ef=function(_0xad4ca8,_0x36afe1){_0xad4ca8=_0xad4ca8-0x0;var _0x5b3b25=_0x9efb[_0xad4ca8];return _0x5b3b25;};'use strict';var client=require(_0xb9ef('0x0'));exports['create']=function(_0x4331bf){return client[_0xb9ef('0x1')](_0xb9ef('0x2'),{'body':_0x4331bf,'log':_0xb9ef('0x2')});};exports[_0xb9ef('0x3')]=function(_0x193e3c,_0x4c67af){return client[_0xb9ef('0x1')](_0xb9ef('0x4'),{'body':_0x4c67af,'options':{'where':{'uniqueid':_0x193e3c},'order':[['id',_0xb9ef('0x5')]],'limit':0x1},'log':_0xb9ef('0x4')});};
\ No newline at end of file
+var _0xf86a=['create','Request','CreateWhatsappQueueReport','update','DESC','UpdateWhatsappQueueReport','../client'];(function(_0x17576c,_0x554202){var _0x40c37e=function(_0x32497c){while(--_0x32497c){_0x17576c['push'](_0x17576c['shift']());}};_0x40c37e(++_0x554202);}(_0xf86a,0x99));var _0xaf86=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf86a[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xaf86('0x0'));exports[_0xaf86('0x1')]=function(_0x17fce3){return client[_0xaf86('0x2')]('CreateWhatsappQueueReport',{'body':_0x17fce3,'log':_0xaf86('0x3')});};exports[_0xaf86('0x4')]=function(_0x5ce243,_0x2d523d){return client['Request']('UpdateWhatsappQueueReport',{'body':_0x2d523d,'options':{'where':{'uniqueid':_0x5ce243},'order':[['id',_0xaf86('0x5')]],'limit':0x1},'log':_0xaf86('0x6')});};
\ No newline at end of file
index 066fddb..a644a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe530=['stop','find','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','info','[%s][AGENT]\x20ROUTING\x20END','next','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','string','number','timeout\x20is\x20a\x20number','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','consequence','[%s][AGENT]\x20%s','message','join'];(function(_0x5b1c2d,_0x46332d){var _0x442317=function(_0xf7e486){while(--_0xf7e486){_0x5b1c2d['push'](_0x5b1c2d['shift']());}};_0x442317(++_0x46332d);}(_0xe530,0x1d0));var _0x0e53=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xe530[_0x2b4411];return _0x8e41ef;};'use strict';var schema=require(_0x0e53('0x0'));var _=require(_0x0e53('0x1'));var util=require(_0x0e53('0x2'));var seqqueue=require(_0x0e53('0x3'));var logger=require(_0x0e53('0x4'))(_0x0e53('0x5'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0x0e53('0x6'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x0e53('0x7'),'message':_0x0e53('0x8')}});function writeLog(_0x751c76,_0x192a2c,_0xa231f){return logger['info'](util[_0x0e53('0x9')](_0x0e53('0xa'),_0x751c76,_0x192a2c[_0x0e53('0xb')],_0xa231f));}function handleFindAgent(_0x15f5a5){return function(_0x4f4360){return _0x4f4360[_0x0e53('0xb')]['toLowerCase']()===_0x15f5a5['toLowerCase']();};}exports[_0x0e53('0xc')]=function(_0x2d1b18,_0x5dcee5,_0x5ebf60,_0x14614b){return function(_0x346f4f){try{var _0x5b3171={'name':_0x5dcee5[0x0],'timeout':_0x5dcee5[0x1]};var _0xf909bb=queue['validate'](_0x5b3171,{'typecast':!![]});if(_0xf909bb['length']){logger['error'](_0x0e53('0xd'),_0x2d1b18,_['map'](_0xf909bb,_0x0e53('0xe'))[_0x0e53('0xf')](',\x20'));_0x346f4f[_0x0e53('0x10')]();}else{var _0x16143f=_[_0x0e53('0x11')](_0x5ebf60['agents'],handleFindAgent(_0x5b3171['name']));if(_0x16143f){var _0x4e846f=(_0x5b3171['timeout']||0xa)*0x3e8;var _0x2ea8fe,_0x2ec61d;var _0x22ad5e=seqqueue['createQueue'](_0x4e846f);_0x22ad5e['id']=_0x2d1b18;_0x22ad5e['atimeout']=_0x4e846f;_0x22ad5e[_0x0e53('0x12')]=_0x14614b[_0x0e53('0x12')];writeLog(_0x2d1b18,_0x16143f,util['format'](_0x0e53('0x13'),_0x4e846f));_0x5ebf60[_0x0e53('0x14')][_0x2d1b18]['on']('end',function(){logger['info'](_0x0e53('0x15'),_0x2d1b18);clearTimeout(_0x2ec61d);_0x2ec61d=undefined;_0x22ad5e[_0x0e53('0x16')]();if(_0x5ebf60['rules'][_0x2d1b18]){delete _0x5ebf60['rules'][_0x2d1b18];}_0x346f4f['stop']();});_0x5ebf60[_0x0e53('0x14')][_0x2d1b18]['on'](_0x0e53('0x17'),function(){if(_0x5ebf60[_0x0e53('0x14')][_0x2d1b18]){delete _0x5ebf60[_0x0e53('0x14')][_0x2d1b18];}});_0x2ec61d=setTimeout(function(){logger[_0x0e53('0x18')](_0x0e53('0x19'),_0x2d1b18);clearTimeout(_0x2ec61d);_0x22ad5e[_0x0e53('0x16')]();_0x346f4f[_0x0e53('0x1a')]();},_0x4e846f);strategy['agent'](_0x22ad5e,_0x16143f,_0x5ebf60,_0x14614b);}else{logger[_0x0e53('0x1b')](_0x0e53('0x1c'),_0x2d1b18,_0x5b3171[_0x0e53('0xb')]);_0x346f4f[_0x0e53('0x10')]();}}}catch(_0x3510f4){console[_0x0e53('0x1d')](_0x3510f4);logger[_0x0e53('0x1b')](_0x0e53('0x1e'),_0x2d1b18,_0x3510f4[_0x0e53('0x1f')]);_0x346f4f[_0x0e53('0x10')]();}};};
\ No newline at end of file
+var _0x620d=['atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','stop','[%s][AGENT]\x20ROUTING\x20END','agent','[%s][QUEUE]\x20%s','validate','lodash','util','seq-queue','../../../../config/logger','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','map','message','find','agents','timeout'];(function(_0x3ed1df,_0x18d47a){var _0x313d39=function(_0x31b135){while(--_0x31b135){_0x3ed1df['push'](_0x3ed1df['shift']());}};_0x313d39(++_0x18d47a);}(_0x620d,0x181));var _0xd620=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x620d[_0x8c43de];return _0xa6591b;};'use strict';var schema=require(_0xd620('0x0'));var _=require(_0xd620('0x1'));var util=require(_0xd620('0x2'));var seqqueue=require(_0xd620('0x3'));var logger=require(_0xd620('0x4'))(_0xd620('0x5'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0xd620('0x6'),'required':!![],'message':_0xd620('0x7')},'timeout':{'type':_0xd620('0x8'),'message':_0xd620('0x9')}});function writeLog(_0xc525ca,_0x51a01e,_0x4389b0){return logger[_0xd620('0xa')](util[_0xd620('0xb')](_0xd620('0xc'),_0xc525ca,_0x51a01e[_0xd620('0xd')],_0x4389b0));}function handleFindAgent(_0x450b90){return function(_0x47547c){return _0x47547c['name'][_0xd620('0xe')]()===_0x450b90[_0xd620('0xe')]();};}exports[_0xd620('0xf')]=function(_0x129a9a,_0x1c03bd,_0x561613,_0x167166){return function(_0x2be6dc){try{var _0x3a00f4={'name':_0x1c03bd[0x0],'timeout':_0x1c03bd[0x1]};var _0x5e20ec=queue[_0xd620('0x0')](_0x3a00f4,{'typecast':!![]});if(_0x5e20ec['length']){logger[_0xd620('0x10')](_0xd620('0x11'),_0x129a9a,_[_0xd620('0x12')](_0x5e20ec,_0xd620('0x13'))['join'](',\x20'));_0x2be6dc['stop']();}else{var _0x3bc314=_[_0xd620('0x14')](_0x561613[_0xd620('0x15')],handleFindAgent(_0x3a00f4[_0xd620('0xd')]));if(_0x3bc314){var _0x1ce8e3=(_0x3a00f4[_0xd620('0x16')]||0xa)*0x3e8;var _0x372929,_0x3fc3f3;var _0x835f5a=seqqueue['createQueue'](_0x1ce8e3);_0x835f5a['id']=_0x129a9a;_0x835f5a[_0xd620('0x17')]=_0x1ce8e3;_0x835f5a['channel']=_0x167166[_0xd620('0x18')];writeLog(_0x129a9a,_0x3bc314,util['format'](_0xd620('0x19'),_0x1ce8e3));_0x561613[_0xd620('0x1a')][_0x129a9a]['on'](_0xd620('0x1b'),function(){logger['info'](_0xd620('0x1c'),_0x129a9a);clearTimeout(_0x3fc3f3);_0x3fc3f3=undefined;_0x835f5a[_0xd620('0x1d')]();if(_0x561613[_0xd620('0x1a')][_0x129a9a]){delete _0x561613[_0xd620('0x1a')][_0x129a9a];}_0x2be6dc[_0xd620('0x1e')]();});_0x561613[_0xd620('0x1a')][_0x129a9a]['on']('complete',function(){if(_0x561613[_0xd620('0x1a')][_0x129a9a]){delete _0x561613[_0xd620('0x1a')][_0x129a9a];}});_0x3fc3f3=setTimeout(function(){logger[_0xd620('0xa')](_0xd620('0x1f'),_0x129a9a);clearTimeout(_0x3fc3f3);_0x835f5a['close']();_0x2be6dc['next']();},_0x1ce8e3);strategy[_0xd620('0x20')](_0x835f5a,_0x3bc314,_0x561613,_0x167166);}else{logger['error']('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x129a9a,_0x3a00f4['name']);_0x2be6dc['stop']();}}}catch(_0x240f8a){console['log'](_0x240f8a);logger[_0xd620('0x10')](_0xd620('0x21'),_0x129a9a,_0x240f8a['stack']);_0x2be6dc[_0xd620('0x1e')]();}};};
\ No newline at end of file
index b21faad..6e1fb6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac21=['message','toString','next','providerName','amazonlex','providerResponse','dialogState','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%s][AMAZONLEX]\x20%s','contact','format','out','channel','whatsapp','phone','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','info','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST'];(function(_0x2d8a23,_0x522080){var _0xd7bce1=function(_0x6adbdd){while(--_0x6adbdd){_0x2d8a23['push'](_0x2d8a23['shift']());}};_0xd7bce1(++_0x522080);}(_0xac21,0x97));var _0x1ac2=function(_0x5be218,_0x7f370){_0x5be218=_0x5be218-0x0;var _0x85ca43=_0xac21[_0x5be218];return _0x85ca43;};'use strict';var _=require('lodash');var moment=require(_0x1ac2('0x0'));var AWS=require(_0x1ac2('0x1'));var utils=require(_0x1ac2('0x2'));var logger=require(_0x1ac2('0x3'))(_0x1ac2('0x4'));var rpc={'chatMessage':require(_0x1ac2('0x5')),'openchannelMessage':require(_0x1ac2('0x6')),'mailMessage':require(_0x1ac2('0x7')),'smsMessage':require(_0x1ac2('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x1ac2('0x9'))};exports[_0x1ac2('0xa')]=function(_0x977257,_0x429ff5){return function(_0x5a7bc0){try{if(!_[_0x1ac2('0xb')](this[_0x1ac2('0xc')][_0x1ac2('0xd')])){logger['info'](_0x1ac2('0xe'),_0x977257,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x5a7bc0['next']();}var _0x1052c4={'ContactId':this[_0x1ac2('0xf')]['id'],'sentAt':moment()[_0x1ac2('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x1ac2('0x11')};if(this[_0x1ac2('0x12')]==='sms'||this[_0x1ac2('0x12')]===_0x1ac2('0x13')){_0x1052c4[_0x1ac2('0x14')]=this[_0x1ac2('0xc')][_0x1ac2('0x14')];}var _0x2282dd=this['channel'];if(_0x2282dd==='chat'){_0x1052c4['ChatWebsiteId']=this[_0x1ac2('0x15')]['id'];}else{_0x1052c4[_[_0x1ac2('0x16')](_0x2282dd)+_0x1ac2('0x17')]=this[_0x1ac2('0x15')]['id'];}_0x1052c4[_[_0x1ac2('0x16')](_0x2282dd)+_0x1ac2('0x18')]=this[_0x1ac2('0xc')]['id'];if(this[_0x1ac2('0xc')][_0x1ac2('0x19')]){var _0x5ceaa1=_0x429ff5[0x4];if(!_[_0x1ac2('0x1a')](_0x5ceaa1)){_0x1052c4[_0x1ac2('0x1b')]=utils[_0x1ac2('0x1c')](_0x5ceaa1,this);return rpc[_0x2282dd+_0x1ac2('0x1d')][_0x1ac2('0x1e')](_0x1052c4)[_0x1ac2('0x1f')](function(_0x3f3e9d){logger[_0x1ac2('0x20')](_0x1ac2('0xe'),_0x977257,_0x1052c4[_0x1ac2('0x1b')]);})[_0x1ac2('0x21')](function(_0xf1937f){logger[_0x1ac2('0x22')]('[%s][AMAZONLEX]\x20%s',_0x977257,JSON[_0x1ac2('0x23')](_0xf1937f));})[_0x1ac2('0x24')](function(){logger[_0x1ac2('0x20')](_0x1ac2('0x25'),_0x977257);_0x5a7bc0['stop']();});}else{logger[_0x1ac2('0x20')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x977257);_0x5a7bc0[_0x1ac2('0x26')]();}}else{var _0x199da0=this;var _0x500b80=new AWS[(_0x1ac2('0x27'))]({'accessKeyId':_0x429ff5[0x0],'secretAccessKey':_0x429ff5[0x1],'region':_0x429ff5[0x2]});var _0x4751a2={'botAlias':_0x1ac2('0x28'),'botName':_0x429ff5[0x3],'inputText':this[_0x1ac2('0x29')]['body'],'userId':this[_0x1ac2('0x12')]+':'+this['interaction']['id'][_0x1ac2('0x2a')]()};_0x500b80['postText'](_0x4751a2,function(_0x47b561,_0x5720c8){if(_0x47b561){logger[_0x1ac2('0x22')](_0x1ac2('0xe'),_0x977257,_0x47b561[_0x1ac2('0x29')]);_0x5a7bc0[_0x1ac2('0x2b')]();}else if(_0x5720c8&&_0x5720c8[_0x1ac2('0x29')]){_0x199da0[_0x1ac2('0x1b')]['amazonlex']=_0x5720c8;_0x1052c4[_0x1ac2('0x1b')]=_0x5720c8[_0x1ac2('0x29')];_0x1052c4[_0x1ac2('0x2c')]=_0x1ac2('0x2d');_0x1052c4[_0x1ac2('0x2e')]=JSON['stringify'](_0x5720c8);return rpc[_0x2282dd+_0x1ac2('0x1d')][_0x1ac2('0x1e')](_0x1052c4)[_0x1ac2('0x1f')](function(_0x32ce41){logger[_0x1ac2('0x20')](_0x1ac2('0xe'),_0x977257,_0x1052c4[_0x1ac2('0x1b')]);if(_0x5720c8[_0x1ac2('0x2f')]=='Failed'){_0x5a7bc0[_0x1ac2('0x2b')]();}else{_0x5a7bc0[_0x1ac2('0x26')]();}})['catch'](function(_0xfa6bc2){logger[_0x1ac2('0x22')](_0x1ac2('0xe'),_0x977257,JSON['stringify'](_0xfa6bc2));_0x5a7bc0[_0x1ac2('0x2b')]();});}else{_0x5a7bc0[_0x1ac2('0x2b')]();}});}}catch(_0x3a86f1){logger[_0x1ac2('0x22')]('[%s][AMAZONLEX]\x20%s',_0x977257,JSON[_0x1ac2('0x23')](_0x3a86f1));_0x5a7bc0[_0x1ac2('0x26')]();}};};
\ No newline at end of file
+var _0x924e=['Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','then','catch','error','[%s][AMAZONLEX]\x20%s','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','toString','next','providerName','amazonlex','providerResponse','create','dialogState','Failed','stringify','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info'];(function(_0x120da5,_0x35e37c){var _0x2564ab=function(_0x100133){while(--_0x100133){_0x120da5['push'](_0x120da5['shift']());}};_0x2564ab(++_0x35e37c);}(_0x924e,0x179));var _0xe924=function(_0x15e13f,_0xb72596){_0x15e13f=_0x15e13f-0x0;var _0x5e5664=_0x924e[_0x15e13f];return _0x5e5664;};'use strict';var _=require(_0xe924('0x0'));var moment=require('moment');var AWS=require('aws-sdk');var utils=require(_0xe924('0x1'));var logger=require(_0xe924('0x2'))(_0xe924('0x3'));var rpc={'chatMessage':require(_0xe924('0x4')),'openchannelMessage':require(_0xe924('0x5')),'mailMessage':require(_0xe924('0x6')),'smsMessage':require(_0xe924('0x7')),'faxMessage':require(_0xe924('0x8')),'whatsappMessage':require(_0xe924('0x9'))};exports[_0xe924('0xa')]=function(_0x34608e,_0x40f53f){return function(_0x2a7a8d){try{if(!_[_0xe924('0xb')](this[_0xe924('0xc')][_0xe924('0xd')])){logger[_0xe924('0xe')]('[%s][AMAZONLEX]\x20%s',_0x34608e,_0xe924('0xf'));return _0x2a7a8d['next']();}var _0x49e437={'ContactId':this[_0xe924('0x10')]['id'],'sentAt':moment()['format'](_0xe924('0x11')),'direction':_0xe924('0x12')};if(this[_0xe924('0x13')]===_0xe924('0x14')||this[_0xe924('0x13')]===_0xe924('0x15')){_0x49e437[_0xe924('0x16')]=this[_0xe924('0xc')][_0xe924('0x16')];}var _0x1f264a=this[_0xe924('0x13')];if(_0x1f264a===_0xe924('0x17')){_0x49e437[_0xe924('0x18')]=this[_0xe924('0x19')]['id'];}else{_0x49e437[_[_0xe924('0x1a')](_0x1f264a)+_0xe924('0x1b')]=this[_0xe924('0x19')]['id'];}_0x49e437[_[_0xe924('0x1a')](_0x1f264a)+_0xe924('0x1c')]=this['interaction']['id'];if(this[_0xe924('0xc')]['created']){var _0x332fef=_0x40f53f[0x4];if(!_[_0xe924('0x1d')](_0x332fef)){_0x49e437[_0xe924('0x1e')]=utils['getMustacheRender'](_0x332fef,this);return rpc[_0x1f264a+'Message']['create'](_0x49e437)[_0xe924('0x1f')](function(_0x325df7){logger[_0xe924('0xe')]('[%s][AMAZONLEX]\x20%s',_0x34608e,_0x49e437[_0xe924('0x1e')]);})[_0xe924('0x20')](function(_0x1d8401){logger[_0xe924('0x21')](_0xe924('0x22'),_0x34608e,JSON['stringify'](_0x1d8401));})['finally'](function(){logger[_0xe924('0xe')](_0xe924('0x23'),_0x34608e);_0x2a7a8d[_0xe924('0x24')]();});}else{logger['info'](_0xe924('0x25'),_0x34608e);_0x2a7a8d['stop']();}}else{var _0x1e433b=this;var _0x78a7d6=new AWS[(_0xe924('0x26'))]({'accessKeyId':_0x40f53f[0x0],'secretAccessKey':_0x40f53f[0x1],'region':_0x40f53f[0x2]});var _0x12e772={'botAlias':'$LATEST','botName':_0x40f53f[0x3],'inputText':this[_0xe924('0x27')][_0xe924('0x1e')],'userId':this[_0xe924('0x13')]+':'+this['interaction']['id'][_0xe924('0x28')]()};_0x78a7d6['postText'](_0x12e772,function(_0x2c67d4,_0x478d5e){if(_0x2c67d4){logger[_0xe924('0x21')](_0xe924('0x22'),_0x34608e,_0x2c67d4[_0xe924('0x27')]);_0x2a7a8d[_0xe924('0x29')]();}else if(_0x478d5e&&_0x478d5e[_0xe924('0x27')]){_0x1e433b[_0xe924('0x1e')]['amazonlex']=_0x478d5e;_0x49e437['body']=_0x478d5e[_0xe924('0x27')];_0x49e437[_0xe924('0x2a')]=_0xe924('0x2b');_0x49e437[_0xe924('0x2c')]=JSON['stringify'](_0x478d5e);return rpc[_0x1f264a+'Message'][_0xe924('0x2d')](_0x49e437)['then'](function(_0x2370b3){logger['info'](_0xe924('0x22'),_0x34608e,_0x49e437[_0xe924('0x1e')]);if(_0x478d5e[_0xe924('0x2e')]==_0xe924('0x2f')){_0x2a7a8d[_0xe924('0x29')]();}else{_0x2a7a8d['stop']();}})[_0xe924('0x20')](function(_0x3f3074){logger[_0xe924('0x21')](_0xe924('0x22'),_0x34608e,JSON[_0xe924('0x30')](_0x3f3074));_0x2a7a8d[_0xe924('0x29')]();});}else{_0x2a7a8d['next']();}});}}catch(_0x3e8e42){logger['error']('[%s][AMAZONLEX]\x20%s',_0x34608e,JSON['stringify'](_0x3e8e42));_0x2a7a8d[_0xe924('0x24')]();}};};
\ No newline at end of file
index 0a773ec..2d79a2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38ee=['read','subject','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','port','secure','auth','user','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','YYYY-MM-DD\x20HH:mm:ss','getMustacheRender','from','message','phone'];(function(_0x566ad4,_0x17b92b){var _0x3bdca3=function(_0x2f8afc){while(--_0x2f8afc){_0x566ad4['push'](_0x566ad4['shift']());}};_0x3bdca3(++_0x17b92b);}(_0x38ee,0x71));var _0xe38e=function(_0x2634a7,_0x118508){_0x2634a7=_0x2634a7-0x0;var _0xa52e2c=_0x38ee[_0x2634a7];return _0xa52e2c;};'use strict';var _=require(_0xe38e('0x0'));var moment=require('moment');var utils=require(_0xe38e('0x1'));var logger=require(_0xe38e('0x2'))('routing');var rpc={'chatMessage':require(_0xe38e('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe38e('0x4')),'smsMessage':require(_0xe38e('0x5')),'faxMessage':require(_0xe38e('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0xe38e('0x7')),'openchannelInteraction':require(_0xe38e('0x8')),'mailInteraction':require(_0xe38e('0x9')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xe38e('0xa')),'whatsappInteraction':require(_0xe38e('0xb'))};var mailRpc=require(_0xe38e('0xc'));exports[_0xe38e('0xd')]=function(_0x335290,_0x3f2faa,_0xef4e25,_0x475878){return function(_0x52b0a8){try{var _0x5af7c6=this[_0xe38e('0xe')];if(_0x5af7c6===_0xe38e('0xf')&&_0x475878[_0xe38e('0x10')][_0xe38e('0x11')]){logger[_0xe38e('0x12')](_0xe38e('0x13'),_0x335290,_0xe38e('0x14'));return _0x52b0a8[_0xe38e('0x15')]();}if(_0x3f2faa[0x0]==='1'&&(_[_0xe38e('0x16')](this[_0xe38e('0x17')][_0xe38e('0x18')])||!this[_0xe38e('0x17')][_0xe38e('0x18')])){logger['info'](_0xe38e('0x13'),_0x335290,_0xe38e('0x19'));return _0x52b0a8[_0xe38e('0x15')]();}if(_0x3f2faa[0x0]==='2'&&this['interaction'][_0xe38e('0x1a')]){logger['info'](_0xe38e('0x1b'),_0x335290,_0xe38e('0x1c'));return _0x52b0a8[_0xe38e('0x15')]();}var _0x358cfa={'ContactId':this[_0xe38e('0x1d')]['id'],'sentAt':moment()['format'](_0xe38e('0x1e')),'direction':'out'};if(this['channel']==='mail'){_0x358cfa['body']=utils[_0xe38e('0x1f')](_0x3f2faa[0x2],this);}else{_0x358cfa[_0xe38e('0x10')]=utils['getMustacheRender'](_0x3f2faa[0x1],this);}if(this['message']){_0x358cfa['to']=this['message'][_0xe38e('0x20')]||'';if(this[_0xe38e('0xe')]===_0xe38e('0xf')&&_0x3f2faa[0x1]==='1'){_0x358cfa['cc']=this['message']['cc']||'';}_0x358cfa['from']=this[_0xe38e('0x21')]['to']||'';_0x358cfa[_0xe38e('0x22')]=this[_0xe38e('0x21')][_0xe38e('0x22')]||'';_0x358cfa[_0xe38e('0x23')]=!![];if(this[_0xe38e('0x21')][_0xe38e('0x24')]){_0x358cfa['subject']='';_0x358cfa[_0xe38e('0x24')]+=_['startsWith'](this[_0xe38e('0x21')][_0xe38e('0x24')],_0xe38e('0x25'))?'':_0xe38e('0x26');_0x358cfa[_0xe38e('0x24')]+=this[_0xe38e('0x21')]['subject'];}}if(this['channel']===_0xe38e('0x27')){_0x358cfa[_0xe38e('0x28')]=this[_0xe38e('0x29')]['id'];}else{_0x358cfa[_[_0xe38e('0x2a')](this['channel'])+_0xe38e('0x2b')]=this[_0xe38e('0x29')]['id'];}_0x358cfa[_[_0xe38e('0x2a')](this[_0xe38e('0xe')])+_0xe38e('0x2c')]=this['interaction']['id'];var _0x40cd26=this[_0xe38e('0x17')];if(rpc[this[_0xe38e('0xe')]+_0xe38e('0x2d')]){if(this[_0xe38e('0xe')]==='mail'){var _0xcf488={'tls':{'rejectUnauthorized':![]}};if(this[_0xe38e('0x29')][_0xe38e('0x2e')][_0xe38e('0x2f')]){_0xcf488[_0xe38e('0x2f')]=this[_0xe38e('0x29')][_0xe38e('0x2e')][_0xe38e('0x2f')];}else{_0xcf488['host']=this[_0xe38e('0x29')][_0xe38e('0x2e')]['host'];_0xcf488[_0xe38e('0x30')]=this['account'][_0xe38e('0x2e')]['port'];_0xcf488[_0xe38e('0x31')]=this[_0xe38e('0x29')][_0xe38e('0x2e')][_0xe38e('0x31')];}if(this[_0xe38e('0x29')][_0xe38e('0x2e')]['authentication']){_0xcf488[_0xe38e('0x32')]={'user':this[_0xe38e('0x29')]['Smtp'][_0xe38e('0x33')],'pass':this[_0xe38e('0x29')][_0xe38e('0x2e')]['pass']};}_0x358cfa['inReplyTo']=this[_0xe38e('0x21')][_0xe38e('0x34')];_0x358cfa[_0xe38e('0x35')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0xe38e('0x36')](_0x358cfa[_0xe38e('0x10')],_0xe38e('0x37'),_0xe38e('0x38'))+_0xe38e('0x39');_0x358cfa[_0xe38e('0x3a')]={'Auto-Submitted':_0xe38e('0x3b'),'X-Auto-Response-Suppress':_0xe38e('0x3c'),'Precedence':'auto_reply'};return mailRpc[_0xe38e('0x3d')](_0xcf488,_0x358cfa)[_0xe38e('0x3e')](function(_0x306d71){logger[_0xe38e('0x12')](_0xe38e('0x3f'),_0x335290);_0x358cfa[_0xe38e('0x34')]=_0x306d71[_0xe38e('0x21')]['messageId'];return rpc[_0x5af7c6+_0xe38e('0x2d')][_0xe38e('0x40')](_0x358cfa);})[_0xe38e('0x3e')](function(_0x48b7f9){logger['info'](_0xe38e('0x13'),_0x335290,JSON[_0xe38e('0x41')](_0x48b7f9));})[_0xe38e('0x42')](function(_0xfa8fd3){logger[_0xe38e('0x43')](_0xe38e('0x44'),_0x335290,JSON[_0xe38e('0x41')](_0xfa8fd3));})[_0xe38e('0x45')](function(){Promise['resolve']()[_0xe38e('0x3e')](function(){if(_0x3f2faa[0x0]!=='2'||_0x40cd26[_0xe38e('0x1a')])return;return rpc[_0x5af7c6+_0xe38e('0x46')][_0xe38e('0x47')](_0x40cd26['id'],{'autoreplyExecuted':!![]})['then'](function(_0x32c9df){logger[_0xe38e('0x12')](_0xe38e('0x1b'),_0x335290,JSON[_0xe38e('0x41')](_0x32c9df));})[_0xe38e('0x42')](function(_0x1dfea3){logger[_0xe38e('0x43')](_0xe38e('0x48'),_0x335290,JSON[_0xe38e('0x41')](_0x1dfea3));});})[_0xe38e('0x3e')](function(){_0x52b0a8['next']();});});}else{return rpc[this['channel']+_0xe38e('0x2d')]['create'](_0x358cfa)[_0xe38e('0x3e')](function(_0x3fbd72){logger[_0xe38e('0x12')](_0xe38e('0x13'),_0x335290,_0x358cfa[_0xe38e('0x10')]);})['catch'](function(_0xbc4fb5){logger['error'](_0xe38e('0x13'),_0x335290,JSON[_0xe38e('0x41')](_0xbc4fb5));})['finally'](function(){Promise['resolve']()[_0xe38e('0x3e')](function(){if(_0x3f2faa[0x0]!=='2'||_0x40cd26[_0xe38e('0x1a')])return;return rpc[_0x5af7c6+_0xe38e('0x46')][_0xe38e('0x47')](_0x40cd26['id'],{'autoreplyExecuted':!![]})[_0xe38e('0x3e')](function(_0x54808a){logger[_0xe38e('0x12')](_0xe38e('0x1b'),_0x335290,JSON['stringify'](_0x54808a));})[_0xe38e('0x42')](function(_0x687e){logger[_0xe38e('0x43')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x335290,JSON[_0xe38e('0x41')](_0x687e));});})[_0xe38e('0x3e')](function(){_0x52b0a8[_0xe38e('0x15')]();});});}}}catch(_0x5bd9e7){logger[_0xe38e('0x43')](_0xe38e('0x13'),_0x335290,JSON[_0xe38e('0x41')](_0x5bd9e7));_0x52b0a8[_0xe38e('0x49')]();}};};
\ No newline at end of file
+var _0xd075=['created','next','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','from','message','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','authentication','auth','user','pass','inReplyTo','messageId','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','sendMailMessage','then','create','stringify','catch','resolve','Interaction','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','update','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction'];(function(_0x6bdb38,_0x19ea23){var _0xa38184=function(_0x386f38){while(--_0x386f38){_0x6bdb38['push'](_0x6bdb38['shift']());}};_0xa38184(++_0x19ea23);}(_0xd075,0x10b));var _0x5d07=function(_0x2ab160,_0x2b0aed){_0x2ab160=_0x2ab160-0x0;var _0xbe30e7=_0xd075[_0x2ab160];return _0xbe30e7;};'use strict';var _=require(_0x5d07('0x0'));var moment=require(_0x5d07('0x1'));var utils=require(_0x5d07('0x2'));var logger=require(_0x5d07('0x3'))(_0x5d07('0x4'));var rpc={'chatMessage':require(_0x5d07('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x5d07('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x5d07('0x7')),'mailInteraction':require(_0x5d07('0x8')),'smsInteraction':require(_0x5d07('0x9')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x5d07('0xa'));exports[_0x5d07('0xb')]=function(_0x570685,_0x2f0fea,_0x19dbd8,_0x15d731){return function(_0x32f877){try{var _0x2fd88e=this[_0x5d07('0xc')];if(_0x2fd88e===_0x5d07('0xd')&&_0x15d731[_0x5d07('0xe')][_0x5d07('0xf')]){logger[_0x5d07('0x10')](_0x5d07('0x11'),_0x570685,_0x5d07('0x12'));return _0x32f877['next']();}if(_0x2f0fea[0x0]==='1'&&(_[_0x5d07('0x13')](this[_0x5d07('0x14')][_0x5d07('0x15')])||!this[_0x5d07('0x14')][_0x5d07('0x15')])){logger[_0x5d07('0x10')](_0x5d07('0x11'),_0x570685,'Autoreply\x20already\x20sent');return _0x32f877[_0x5d07('0x16')]();}if(_0x2f0fea[0x0]==='2'&&this[_0x5d07('0x14')][_0x5d07('0x17')]){logger[_0x5d07('0x10')](_0x5d07('0x18'),_0x570685,_0x5d07('0x19'));return _0x32f877[_0x5d07('0x16')]();}var _0x30263a={'ContactId':this[_0x5d07('0x1a')]['id'],'sentAt':moment()['format'](_0x5d07('0x1b')),'direction':_0x5d07('0x1c')};if(this[_0x5d07('0xc')]===_0x5d07('0xd')){_0x30263a[_0x5d07('0xe')]=utils[_0x5d07('0x1d')](_0x2f0fea[0x2],this);}else{_0x30263a[_0x5d07('0xe')]=utils[_0x5d07('0x1d')](_0x2f0fea[0x1],this);}if(this['message']){_0x30263a['to']=this['message'][_0x5d07('0x1e')]||'';if(this[_0x5d07('0xc')]===_0x5d07('0xd')&&_0x2f0fea[0x1]==='1'){_0x30263a['cc']=this['message']['cc']||'';}_0x30263a['from']=this[_0x5d07('0x1f')]['to']||'';_0x30263a['phone']=this[_0x5d07('0x1f')][_0x5d07('0x20')]||'';_0x30263a[_0x5d07('0x21')]=!![];if(this[_0x5d07('0x1f')][_0x5d07('0x22')]){_0x30263a[_0x5d07('0x22')]='';_0x30263a[_0x5d07('0x22')]+=_[_0x5d07('0x23')](this[_0x5d07('0x1f')][_0x5d07('0x22')],_0x5d07('0x24'))?'':_0x5d07('0x25');_0x30263a[_0x5d07('0x22')]+=this[_0x5d07('0x1f')][_0x5d07('0x22')];}}if(this[_0x5d07('0xc')]===_0x5d07('0x26')){_0x30263a[_0x5d07('0x27')]=this[_0x5d07('0x28')]['id'];}else{_0x30263a[_[_0x5d07('0x29')](this['channel'])+_0x5d07('0x2a')]=this[_0x5d07('0x28')]['id'];}_0x30263a[_[_0x5d07('0x29')](this[_0x5d07('0xc')])+_0x5d07('0x2b')]=this[_0x5d07('0x14')]['id'];var _0x176d8b=this[_0x5d07('0x14')];if(rpc[this['channel']+_0x5d07('0x2c')]){if(this[_0x5d07('0xc')]===_0x5d07('0xd')){var _0x258073={'tls':{'rejectUnauthorized':![]}};if(this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x2e')]){_0x258073[_0x5d07('0x2e')]=this[_0x5d07('0x28')]['Smtp']['service'];}else{_0x258073[_0x5d07('0x2f')]=this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x2f')];_0x258073[_0x5d07('0x30')]=this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x30')];_0x258073[_0x5d07('0x31')]=this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x31')];}if(this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x32')]){_0x258073[_0x5d07('0x33')]={'user':this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x34')],'pass':this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x35')]};}_0x30263a[_0x5d07('0x36')]=this[_0x5d07('0x1f')][_0x5d07('0x37')];_0x30263a['html']=_0x5d07('0x38')+_['replace'](_0x30263a[_0x5d07('0xe')],_0x5d07('0x39'),_0x5d07('0x3a'))+_0x5d07('0x3b');_0x30263a['headers']={'Auto-Submitted':_0x5d07('0x3c'),'X-Auto-Response-Suppress':_0x5d07('0x3d'),'Precedence':'auto_reply'};return mailRpc[_0x5d07('0x3e')](_0x258073,_0x30263a)[_0x5d07('0x3f')](function(_0x308a49){logger['info']('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x570685);_0x30263a['messageId']=_0x308a49[_0x5d07('0x1f')][_0x5d07('0x37')];return rpc[_0x2fd88e+'Message'][_0x5d07('0x40')](_0x30263a);})[_0x5d07('0x3f')](function(_0x2836c0){logger[_0x5d07('0x10')](_0x5d07('0x11'),_0x570685,JSON[_0x5d07('0x41')](_0x2836c0));})[_0x5d07('0x42')](function(_0x3f7a79){logger['error']('[RPC][%s][AUTOREPLY]\x20%s',_0x570685,JSON[_0x5d07('0x41')](_0x3f7a79));})['finally'](function(){Promise[_0x5d07('0x43')]()[_0x5d07('0x3f')](function(){if(_0x2f0fea[0x0]!=='2'||_0x176d8b[_0x5d07('0x17')])return;return rpc[_0x2fd88e+_0x5d07('0x44')]['update'](_0x176d8b['id'],{'autoreplyExecuted':!![]})[_0x5d07('0x3f')](function(_0x4ae196){logger[_0x5d07('0x10')](_0x5d07('0x18'),_0x570685,JSON[_0x5d07('0x41')](_0x4ae196));})[_0x5d07('0x42')](function(_0x3b8544){logger[_0x5d07('0x45')](_0x5d07('0x46'),_0x570685,JSON['stringify'](_0x3b8544));});})[_0x5d07('0x3f')](function(){_0x32f877['next']();});});}else{return rpc[this['channel']+_0x5d07('0x2c')][_0x5d07('0x40')](_0x30263a)[_0x5d07('0x3f')](function(_0x51886c){logger['info']('[%s][AUTOREPLY]\x20%s',_0x570685,_0x30263a[_0x5d07('0xe')]);})[_0x5d07('0x42')](function(_0x3319b1){logger[_0x5d07('0x45')](_0x5d07('0x11'),_0x570685,JSON['stringify'](_0x3319b1));})['finally'](function(){Promise[_0x5d07('0x43')]()[_0x5d07('0x3f')](function(){if(_0x2f0fea[0x0]!=='2'||_0x176d8b[_0x5d07('0x17')])return;return rpc[_0x2fd88e+_0x5d07('0x44')][_0x5d07('0x47')](_0x176d8b['id'],{'autoreplyExecuted':!![]})[_0x5d07('0x3f')](function(_0x3e5c0a){logger[_0x5d07('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x570685,JSON[_0x5d07('0x41')](_0x3e5c0a));})['catch'](function(_0x5e037a){logger[_0x5d07('0x45')](_0x5d07('0x46'),_0x570685,JSON[_0x5d07('0x41')](_0x5e037a));});})['then'](function(){_0x32f877[_0x5d07('0x16')]();});});}}}catch(_0x950db6){logger['error'](_0x5d07('0x11'),_0x570685,JSON[_0x5d07('0x41')](_0x950db6));_0x32f877['stop']();}};};
\ No newline at end of file
index c698103..c88d211 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7748=['error','[%s][CLOSE]\x20%s','stringify','stop','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','format','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!'];(function(_0x5ec8c,_0x413d66){var _0x16cc20=function(_0x1e1277){while(--_0x1e1277){_0x5ec8c['push'](_0x5ec8c['shift']());}};_0x16cc20(++_0x413d66);}(_0x7748,0x16c));var _0x8774=function(_0x2d4359,_0x8201a9){_0x2d4359=_0x2d4359-0x0;var _0x556474=_0x7748[_0x2d4359];return _0x556474;};'use strict';var moment=require('moment');var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require(_0x8774('0x0')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x8774('0x1')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x8774('0x2')),'whatsappInteraction':require(_0x8774('0x3'))};exports[_0x8774('0x4')]=function(_0x498335,_0x354338,_0x6f41b8,_0xb0c875){return function(_0x165161){try{logger[_0x8774('0x5')]('[%s][CLOSE]\x20reason\x20%s',_0x498335,_0x354338[0x0]);var _0x5e2fed={'closed':0x1,'closedAt':moment()[_0x8774('0x6')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x8774('0x7'),'disposition':_0x354338[0x0]};if(rpc[_0xb0c875[_0x8774('0x8')]+_0x8774('0x9')]){rpc[_0xb0c875[_0x8774('0x8')]+_0x8774('0x9')][_0x8774('0xa')](_0xb0c875[_0x8774('0xb')]['id'],_0x5e2fed)[_0x8774('0xc')](function(_0x16a72d){logger[_0x8774('0x5')](_0x8774('0xd'),_0x498335,_0xb0c875['interaction']['id']);})['catch'](function(_0xffcdd6){logger[_0x8774('0xe')](_0x8774('0xf'),_0x498335,JSON[_0x8774('0x10')](_0xffcdd6));})['finally'](function(){_0x165161[_0x8774('0x11')]();});}}catch(_0x315c2f){logger[_0x8774('0xe')](_0x8774('0xf'),_0x498335,JSON[_0x8774('0x10')](_0x315c2f));_0x165161['stop']();}};};
\ No newline at end of file
+var _0xa519=['format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s'];(function(_0xcc57bb,_0x51f30a){var _0x11c670=function(_0x17558b){while(--_0x17558b){_0xcc57bb['push'](_0xcc57bb['shift']());}};_0x11c670(++_0x51f30a);}(_0xa519,0x1c6));var _0x9a51=function(_0x5b5dc2,_0x237992){_0x5b5dc2=_0x5b5dc2-0x0;var _0x558506=_0xa519[_0x5b5dc2];return _0x558506;};'use strict';var moment=require('moment');var logger=require(_0x9a51('0x0'))('routing');var rpc={'chatInteraction':require(_0x9a51('0x1')),'openchannelInteraction':require(_0x9a51('0x2')),'smsInteraction':require(_0x9a51('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x9a51('0x4')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x9a51('0x5')]=function(_0x133fa8,_0x394d8f,_0xaa6c4a,_0x5941c3){return function(_0x4f261d){try{logger[_0x9a51('0x6')](_0x9a51('0x7'),_0x133fa8,_0x394d8f[0x0]);var _0x197c2c={'closed':0x1,'closedAt':moment()[_0x9a51('0x8')](_0x9a51('0x9')),'closeReason':_0x9a51('0xa'),'disposition':_0x394d8f[0x0]};if(rpc[_0x5941c3[_0x9a51('0xb')]+_0x9a51('0xc')]){rpc[_0x5941c3[_0x9a51('0xb')]+_0x9a51('0xc')][_0x9a51('0xd')](_0x5941c3[_0x9a51('0xe')]['id'],_0x197c2c)[_0x9a51('0xf')](function(_0x384d45){logger['info']('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x133fa8,_0x5941c3[_0x9a51('0xe')]['id']);})[_0x9a51('0x10')](function(_0x121617){logger[_0x9a51('0x11')](_0x9a51('0x12'),_0x133fa8,JSON[_0x9a51('0x13')](_0x121617));})[_0x9a51('0x14')](function(){_0x4f261d[_0x9a51('0x15')]();});}}catch(_0x59e99e){logger['error']('[%s][CLOSE]\x20%s',_0x133fa8,JSON[_0x9a51('0x13')](_0x59e99e));_0x4f261d[_0x9a51('0x15')]();}};};
\ No newline at end of file
index 4c420b5..eaf296d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d3=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','message','dialogflow','result','speech','providerName','providerResponse','stringify','create','metadata','endConversation','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','isEmpty','body','getMustacheRender','Message','then','catch','error'];(function(_0x1c28a0,_0x21a309){var _0x106434=function(_0x4b362a){while(--_0x4b362a){_0x1c28a0['push'](_0x1c28a0['shift']());}};_0x106434(++_0x21a309);}(_0x78d3,0x73));var _0x378d=function(_0x349f12,_0x424402){_0x349f12=_0x349f12-0x0;var _0x598967=_0x78d3[_0x349f12];return _0x598967;};'use strict';var _=require(_0x378d('0x0'));var moment=require(_0x378d('0x1'));var apiai=require(_0x378d('0x2'));var md5=require(_0x378d('0x3'));var utils=require(_0x378d('0x4'));var logger=require(_0x378d('0x5'))(_0x378d('0x6'));var rpc={'chatMessage':require(_0x378d('0x7')),'openchannelMessage':require(_0x378d('0x8')),'mailMessage':require(_0x378d('0x9')),'smsMessage':require(_0x378d('0xa')),'faxMessage':require(_0x378d('0xb')),'whatsappMessage':require(_0x378d('0xc'))};exports[_0x378d('0xd')]=function(_0x47a99f,_0x4fef30){return function(_0x1c880e){try{if(!_['isNil'](this[_0x378d('0xe')][_0x378d('0xf')])){logger[_0x378d('0x10')](_0x378d('0x11'),_0x47a99f,_0x378d('0x12'));return _0x1c880e[_0x378d('0x13')]();}var _0x53a4b6={'ContactId':this[_0x378d('0x14')]['id'],'sentAt':moment()[_0x378d('0x15')](_0x378d('0x16')),'direction':'out'};if(this[_0x378d('0x17')]==='sms'||this['channel']===_0x378d('0x18')){_0x53a4b6[_0x378d('0x19')]=this['interaction'][_0x378d('0x19')];}var _0x10d0aa=this[_0x378d('0x17')];if(_0x10d0aa==='chat'){_0x53a4b6[_0x378d('0x1a')]=this['account']['id'];}else{_0x53a4b6[_[_0x378d('0x1b')](_0x10d0aa)+_0x378d('0x1c')]=this[_0x378d('0x1d')]['id'];}_0x53a4b6[_[_0x378d('0x1b')](_0x10d0aa)+_0x378d('0x1e')]=this['interaction']['id'];if(this[_0x378d('0xe')]['created']){var _0x2f24dc=_0x4fef30[0x2];if(!_[_0x378d('0x1f')](_0x2f24dc)){_0x53a4b6[_0x378d('0x20')]=utils[_0x378d('0x21')](_0x2f24dc,this);return rpc[_0x10d0aa+_0x378d('0x22')]['create'](_0x53a4b6)[_0x378d('0x23')](function(_0x4b54c7){logger[_0x378d('0x10')](_0x378d('0x11'),_0x47a99f,_0x53a4b6[_0x378d('0x20')]);})[_0x378d('0x24')](function(_0x1ffbaf){logger[_0x378d('0x25')](_0x378d('0x11'),_0x47a99f,JSON['stringify'](_0x1ffbaf));})['finally'](function(){logger[_0x378d('0x10')](_0x378d('0x26'),_0x47a99f);_0x1c880e['stop']();});}else{logger[_0x378d('0x10')](_0x378d('0x27'),_0x47a99f);_0x1c880e[_0x378d('0x28')]();}}else{var _0x1339fb=this;var _0x3acdf9=apiai(_0x4fef30[0x0],{'language':_0x4fef30[0x1]||'en'});return _0x3acdf9['textRequest'](this[_0x378d('0x29')]['body'],{'sessionId':md5(this[_0x378d('0xe')]['id'])})[_0x378d('0x23')](function(_0x3f2ebc){_0x1339fb['body'][_0x378d('0x2a')]=_0x3f2ebc;_0x53a4b6[_0x378d('0x20')]=_0x3f2ebc[_0x378d('0x2b')]['fulfillment'][_0x378d('0x2c')];_0x53a4b6[_0x378d('0x2d')]=_0x378d('0x2a');_0x53a4b6[_0x378d('0x2e')]=JSON[_0x378d('0x2f')](_0x3f2ebc);return rpc[_0x10d0aa+_0x378d('0x22')][_0x378d('0x30')](_0x53a4b6)[_0x378d('0x23')](function(_0x5724f9){logger['info'](_0x378d('0x11'),_0x47a99f,_0x53a4b6['body']);if(_0x3f2ebc[_0x378d('0x2b')][_0x378d('0x31')][_0x378d('0x32')]){_0x1c880e[_0x378d('0x13')]();}else{_0x1c880e['stop']();}})['catch'](function(_0x3de1af){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x47a99f,JSON['stringify'](_0x3de1af));_0x1c880e[_0x378d('0x13')]();});})['catch'](function(_0x4d1de5){logger[_0x378d('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x47a99f,_0x4d1de5[_0x378d('0x29')]);_0x1c880e[_0x378d('0x13')]();});}}catch(_0x2fa358){logger['error'](_0x378d('0x11'),_0x47a99f,JSON[_0x378d('0x2f')](_0x2fa358));_0x1c880e[_0x378d('0x28')]();}};};
\ No newline at end of file
+var _0x50e5=['next','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','isEmpty','create','body','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message','then','dialogflow','result','fulfillment','speech','providerName','providerResponse','Message','metadata','endConversation','lodash','moment','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s'];(function(_0xb161a6,_0x1a69df){var _0x3cd36a=function(_0x331cb4){while(--_0x331cb4){_0xb161a6['push'](_0xb161a6['shift']());}};_0x3cd36a(++_0x1a69df);}(_0x50e5,0xb7));var _0x550e=function(_0x5a1b71,_0x4bcd1a){_0x5a1b71=_0x5a1b71-0x0;var _0x167804=_0x50e5[_0x5a1b71];return _0x167804;};'use strict';var _=require(_0x550e('0x0'));var moment=require(_0x550e('0x1'));var apiai=require('apiai-promise');var md5=require(_0x550e('0x2'));var utils=require(_0x550e('0x3'));var logger=require(_0x550e('0x4'))(_0x550e('0x5'));var rpc={'chatMessage':require(_0x550e('0x6')),'openchannelMessage':require(_0x550e('0x7')),'mailMessage':require(_0x550e('0x8')),'smsMessage':require(_0x550e('0x9')),'faxMessage':require(_0x550e('0xa')),'whatsappMessage':require(_0x550e('0xb'))};exports[_0x550e('0xc')]=function(_0x41a221,_0x4f3357){return function(_0x27ae27){try{if(!_[_0x550e('0xd')](this['interaction'][_0x550e('0xe')])){logger[_0x550e('0xf')](_0x550e('0x10'),_0x41a221,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x27ae27[_0x550e('0x11')]();}var _0x49cc53={'ContactId':this['contact']['id'],'sentAt':moment()[_0x550e('0x12')](_0x550e('0x13')),'direction':'out'};if(this[_0x550e('0x14')]===_0x550e('0x15')||this[_0x550e('0x14')]===_0x550e('0x16')){_0x49cc53['phone']=this[_0x550e('0x17')]['phone'];}var _0x2dc276=this['channel'];if(_0x2dc276===_0x550e('0x18')){_0x49cc53[_0x550e('0x19')]=this[_0x550e('0x1a')]['id'];}else{_0x49cc53[_[_0x550e('0x1b')](_0x2dc276)+_0x550e('0x1c')]=this['account']['id'];}_0x49cc53[_[_0x550e('0x1b')](_0x2dc276)+'InteractionId']=this[_0x550e('0x17')]['id'];if(this['interaction']['created']){var _0x31f4bf=_0x4f3357[0x2];if(!_[_0x550e('0x1d')](_0x31f4bf)){_0x49cc53['body']=utils['getMustacheRender'](_0x31f4bf,this);return rpc[_0x2dc276+'Message'][_0x550e('0x1e')](_0x49cc53)['then'](function(_0x580c6f){logger[_0x550e('0xf')](_0x550e('0x10'),_0x41a221,_0x49cc53[_0x550e('0x1f')]);})[_0x550e('0x20')](function(_0x1ff0e9){logger[_0x550e('0x21')](_0x550e('0x10'),_0x41a221,JSON[_0x550e('0x22')](_0x1ff0e9));})[_0x550e('0x23')](function(){logger['info'](_0x550e('0x24'),_0x41a221);_0x27ae27[_0x550e('0x25')]();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x41a221);_0x27ae27[_0x550e('0x25')]();}}else{var _0x2663c7=this;var _0x5769bb=apiai(_0x4f3357[0x0],{'language':_0x4f3357[0x1]||'en'});return _0x5769bb[_0x550e('0x26')](this[_0x550e('0x27')][_0x550e('0x1f')],{'sessionId':md5(this[_0x550e('0x17')]['id'])})[_0x550e('0x28')](function(_0x3bbca3){_0x2663c7['body'][_0x550e('0x29')]=_0x3bbca3;_0x49cc53[_0x550e('0x1f')]=_0x3bbca3[_0x550e('0x2a')][_0x550e('0x2b')][_0x550e('0x2c')];_0x49cc53[_0x550e('0x2d')]=_0x550e('0x29');_0x49cc53[_0x550e('0x2e')]=JSON[_0x550e('0x22')](_0x3bbca3);return rpc[_0x2dc276+_0x550e('0x2f')][_0x550e('0x1e')](_0x49cc53)[_0x550e('0x28')](function(_0x5e0434){logger[_0x550e('0xf')](_0x550e('0x10'),_0x41a221,_0x49cc53['body']);if(_0x3bbca3[_0x550e('0x2a')][_0x550e('0x30')][_0x550e('0x31')]){_0x27ae27[_0x550e('0x11')]();}else{_0x27ae27[_0x550e('0x25')]();}})[_0x550e('0x20')](function(_0x449da3){logger[_0x550e('0x21')](_0x550e('0x10'),_0x41a221,JSON[_0x550e('0x22')](_0x449da3));_0x27ae27[_0x550e('0x11')]();});})[_0x550e('0x20')](function(_0x32fd38){logger[_0x550e('0x21')]('[%s][DIALOGFLOW]\x20%s',_0x41a221,_0x32fd38[_0x550e('0x27')]);_0x27ae27[_0x550e('0x11')]();});}}catch(_0x5002b0){logger[_0x550e('0x21')](_0x550e('0x10'),_0x41a221,JSON['stringify'](_0x5002b0));_0x27ae27[_0x550e('0x25')]();}};};
\ No newline at end of file
index 160a8f5..0ec4445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde0f=['intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','push','next','md5','moment','bluebird','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','interaction','phone','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','isEmpty','finally','stop','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xde0f,0xa2));var _0xfde0=function(_0x6a56af,_0x54b920){_0x6a56af=_0x6a56af-0x0;var _0x3d3aa4=_0xde0f[_0x6a56af];return _0x3d3aa4;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require(_0xfde0('0x0'));var moment=require(_0xfde0('0x1'));var Promise=require(_0xfde0('0x2'));var logger=require(_0xfde0('0x3'))(_0xfde0('0x4'));var utils=require('./utils');var rpc={'chatMessage':require(_0xfde0('0x5')),'openchannelMessage':require(_0xfde0('0x6')),'mailMessage':require(_0xfde0('0x7')),'smsMessage':require(_0xfde0('0x8')),'faxMessage':require(_0xfde0('0x9')),'whatsappMessage':require(_0xfde0('0xa'))};function createMessage(_0x19fd5f,_0x333cc,_0x26a9e0,_0x331f59){return new Promise(function(_0x242d86,_0x46da7c){var _0x8be1bc=_['clone'](_0x26a9e0);_0x8be1bc[_0xfde0('0xb')]=_0x331f59;return rpc[_0x333cc+_0xfde0('0xc')][_0xfde0('0xd')](_0x8be1bc)[_0xfde0('0xe')](function(){logger['info'](_0xfde0('0xf'),_0x19fd5f,_0x8be1bc[_0xfde0('0xb')]);_0x242d86();})[_0xfde0('0x10')](function(_0x3d2476){logger[_0xfde0('0x11')](_0xfde0('0xf'),_0x19fd5f,JSON[_0xfde0('0x12')](_0x3d2476));_0x46da7c(_0x3d2476);});});}exports[_0xfde0('0x13')]=function(_0x59de6c,_0x29023f){return function(_0x9accee){try{if(!_[_0xfde0('0x14')](this['interaction'][_0xfde0('0x15')])){logger[_0xfde0('0x16')]('[%s][DIALOGFLOWV2]\x20%s',_0x59de6c,_0xfde0('0x17'));return _0x9accee['next']();}var _0x239e69={'ContactId':this[_0xfde0('0x18')]['id'],'sentAt':moment()[_0xfde0('0x19')](_0xfde0('0x1a')),'direction':_0xfde0('0x1b')};if(this[_0xfde0('0x1c')]==='sms'||this['channel']===_0xfde0('0x1d')){_0x239e69['phone']=this[_0xfde0('0x1e')][_0xfde0('0x1f')];}var _0x35d503=this[_0xfde0('0x1c')];if(_0x35d503==='chat'){_0x239e69[_0xfde0('0x20')]=this[_0xfde0('0x21')]['id'];}else{_0x239e69[_['upperFirst'](_0x35d503)+_0xfde0('0x22')]=this[_0xfde0('0x21')]['id'];}_0x239e69[_[_0xfde0('0x23')](_0x35d503)+_0xfde0('0x24')]=this['interaction']['id'];if(this[_0xfde0('0x1e')]['created']){var _0x203558=_0x29023f[0x4];if(!_[_0xfde0('0x25')](_0x203558)){_0x239e69[_0xfde0('0xb')]=utils['getMustacheRender'](_0x203558,this);return rpc[_0x35d503+_0xfde0('0xc')]['create'](_0x239e69)[_0xfde0('0xe')](function(_0x14488e){logger[_0xfde0('0x16')](_0xfde0('0xf'),_0x59de6c,_0x239e69[_0xfde0('0xb')]);})[_0xfde0('0x10')](function(_0x4fd7d2){logger[_0xfde0('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x59de6c,JSON[_0xfde0('0x12')](_0x4fd7d2));})[_0xfde0('0x26')](function(){logger[_0xfde0('0x16')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x59de6c);_0x9accee['stop']();});}else{logger[_0xfde0('0x16')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x59de6c);_0x9accee[_0xfde0('0x27')]();}}else{var _0x35b18f=this;var _0x3a953a=_0x29023f[0x2]['replace'](/\\n/g,'\x0a');var _0x45d7a3={'credentials':{'private_key':_0x3a953a,'client_email':_0x29023f[0x1]}};var _0x3a2bb3=new dialogflow[(_0xfde0('0x28'))](_0x45d7a3);var _0x2654a2=_0x3a2bb3[_0xfde0('0x29')](_0x29023f[0x0],md5(_0x35b18f[_0xfde0('0x1e')]['id']));var _0x3e4cb8={'session':_0x2654a2,'queryInput':{'text':{'text':_0x35b18f[_0xfde0('0x2a')][_0xfde0('0xb')],'languageCode':_0x29023f[0x3]||'en'}}};return _0x3a2bb3[_0xfde0('0x2b')](_0x3e4cb8)[_0xfde0('0xe')](function(_0xc2fcb0){if(_0xc2fcb0&&_0xc2fcb0[_0xfde0('0x2c')]){_0x35b18f[_0xfde0('0xb')][_0xfde0('0x2d')]=_0xc2fcb0;var _0x5b411d=_0xc2fcb0[0x0];var _0x371ba9=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x2f')]&&_0x5b411d[_0xfde0('0x2e')]['diagnosticInfo']['fields']?_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x2f')][_0xfde0('0x30')][_0xfde0('0x31')][_0xfde0('0x32')]:![];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x33')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x34')];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x35')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x36')];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x37')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x2f')]&&_0x5b411d[_0xfde0('0x2e')]['diagnosticInfo'][_0xfde0('0x30')]?_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x2f')][_0xfde0('0x30')][_0xfde0('0x31')]['boolValue']:![];_0x35b18f['body'][_0xfde0('0x38')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x39')][_0xfde0('0x3a')];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x3b')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x39')][_0xfde0('0x3c')];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x3d')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x39')][_0xfde0('0x3e')];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x3f')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x40')];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x41')]=_0x5b411d['queryResult'][_0xfde0('0x42')];_0x35b18f[_0xfde0('0xb')][_0xfde0('0x43')]=_0x5b411d[_0xfde0('0x2e')][_0xfde0('0x44')];_0x239e69[_0xfde0('0x45')]=_0xfde0('0x2d');_0x239e69['providerResponse']=JSON[_0xfde0('0x12')](_0xc2fcb0);var _0x4d4658=[];for(var _0x223dcf=0x0;_0x223dcf<_0xc2fcb0[_0xfde0('0x2c')];_0x223dcf++){var _0xc7fa8d=_0xc2fcb0[_0x223dcf];if(_0xc7fa8d&&_0xc7fa8d['queryResult']&&_0xc7fa8d[_0xfde0('0x2e')][_0xfde0('0x46')]){_0x4d4658[_0xfde0('0x47')](createMessage(_0x59de6c,_0x35d503,_0x239e69,_0xc7fa8d['queryResult'][_0xfde0('0x46')]));}}return Promise['all'](_0x4d4658)[_0xfde0('0xe')](function(){if(_0x371ba9){_0x9accee[_0xfde0('0x48')]();}else{_0x9accee['stop']();}})[_0xfde0('0x10')](function(_0x1e3e6a){logger['error'](_0xfde0('0xf'),_0x59de6c,JSON[_0xfde0('0x12')](_0x1e3e6a));_0x9accee[_0xfde0('0x48')]();});}})[_0xfde0('0x10')](function(_0x30fa1b){logger[_0xfde0('0x11')](_0xfde0('0xf'),_0x59de6c,_0x30fa1b[_0xfde0('0x2a')]);_0x9accee[_0xfde0('0x48')]();});}}catch(_0x4f2bc0){logger[_0xfde0('0x11')](_0xfde0('0xf'),_0x59de6c,JSON[_0xfde0('0x12')](_0x4f2bc0));_0x9accee[_0xfde0('0x27')]();}};};
\ No newline at end of file
+var _0xde02=['channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','lodash','dialogflow','md5','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','info','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out'];(function(_0xfd5f37,_0x24a79c){var _0x11bd01=function(_0x4ae9bd){while(--_0x4ae9bd){_0xfd5f37['push'](_0xfd5f37['shift']());}};_0x11bd01(++_0x24a79c);}(_0xde02,0xd5));var _0x2de0=function(_0x51afbb,_0x48f644){_0x51afbb=_0x51afbb-0x0;var _0x2d9542=_0xde02[_0x51afbb];return _0x2d9542;};'use strict';var _=require(_0x2de0('0x0'));var dialogflow=require(_0x2de0('0x1'));var md5=require(_0x2de0('0x2'));var moment=require('moment');var Promise=require('bluebird');var logger=require(_0x2de0('0x3'))(_0x2de0('0x4'));var utils=require(_0x2de0('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x2de0('0x6')),'mailMessage':require(_0x2de0('0x7')),'smsMessage':require(_0x2de0('0x8')),'faxMessage':require(_0x2de0('0x9')),'whatsappMessage':require(_0x2de0('0xa'))};function createMessage(_0x4a7cc5,_0x1a658f,_0x182b39,_0x15be24){return new Promise(function(_0x3eee21,_0x203095){var _0x405582=_[_0x2de0('0xb')](_0x182b39);_0x405582[_0x2de0('0xc')]=_0x15be24;return rpc[_0x1a658f+_0x2de0('0xd')][_0x2de0('0xe')](_0x405582)[_0x2de0('0xf')](function(){logger['info'](_0x2de0('0x10'),_0x4a7cc5,_0x405582[_0x2de0('0xc')]);_0x3eee21();})[_0x2de0('0x11')](function(_0x2e7928){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x4a7cc5,JSON[_0x2de0('0x13')](_0x2e7928));_0x203095(_0x2e7928);});});}exports[_0x2de0('0x14')]=function(_0x378881,_0x56a504){return function(_0xbbc4bf){try{if(!_[_0x2de0('0x15')](this[_0x2de0('0x16')][_0x2de0('0x17')])){logger[_0x2de0('0x18')](_0x2de0('0x10'),_0x378881,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0xbbc4bf[_0x2de0('0x19')]();}var _0x12f3c1={'ContactId':this[_0x2de0('0x1a')]['id'],'sentAt':moment()[_0x2de0('0x1b')](_0x2de0('0x1c')),'direction':_0x2de0('0x1d')};if(this[_0x2de0('0x1e')]===_0x2de0('0x1f')||this[_0x2de0('0x1e')]==='whatsapp'){_0x12f3c1[_0x2de0('0x20')]=this['interaction'][_0x2de0('0x20')];}var _0x20d3cf=this[_0x2de0('0x1e')];if(_0x20d3cf===_0x2de0('0x21')){_0x12f3c1[_0x2de0('0x22')]=this[_0x2de0('0x23')]['id'];}else{_0x12f3c1[_[_0x2de0('0x24')](_0x20d3cf)+_0x2de0('0x25')]=this['account']['id'];}_0x12f3c1[_[_0x2de0('0x24')](_0x20d3cf)+_0x2de0('0x26')]=this[_0x2de0('0x16')]['id'];if(this[_0x2de0('0x16')][_0x2de0('0x27')]){var _0x28f95c=_0x56a504[0x4];if(!_[_0x2de0('0x28')](_0x28f95c)){_0x12f3c1[_0x2de0('0xc')]=utils[_0x2de0('0x29')](_0x28f95c,this);return rpc[_0x20d3cf+_0x2de0('0xd')][_0x2de0('0xe')](_0x12f3c1)[_0x2de0('0xf')](function(_0x1495b9){logger[_0x2de0('0x18')](_0x2de0('0x10'),_0x378881,_0x12f3c1[_0x2de0('0xc')]);})[_0x2de0('0x11')](function(_0x5b5bd6){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x378881,JSON[_0x2de0('0x13')](_0x5b5bd6));})[_0x2de0('0x2a')](function(){logger[_0x2de0('0x18')](_0x2de0('0x2b'),_0x378881);_0xbbc4bf[_0x2de0('0x2c')]();});}else{logger[_0x2de0('0x18')](_0x2de0('0x2d'),_0x378881);_0xbbc4bf[_0x2de0('0x2c')]();}}else{var _0x5e81ce=this;var _0x105c5b=_0x56a504[0x2][_0x2de0('0x2e')](/\\n/g,'\x0a');var _0x2a0e92={'credentials':{'private_key':_0x105c5b,'client_email':_0x56a504[0x1]}};var _0x448cf7=new dialogflow[(_0x2de0('0x2f'))](_0x2a0e92);var _0xc94f43=_0x448cf7[_0x2de0('0x30')](_0x56a504[0x0],md5(_0x5e81ce['interaction']['id']));var _0x982303={'session':_0xc94f43,'queryInput':{'text':{'text':_0x5e81ce[_0x2de0('0x31')][_0x2de0('0xc')],'languageCode':_0x56a504[0x3]||'en'}}};return _0x448cf7[_0x2de0('0x32')](_0x982303)[_0x2de0('0xf')](function(_0x37224e){if(_0x37224e&&_0x37224e[_0x2de0('0x33')]){_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x34')]=_0x37224e;var _0x53c639=_0x37224e[0x0];var _0x47d35a=_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]&&_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')][_0x2de0('0x37')]?_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]['fields'][_0x2de0('0x38')][_0x2de0('0x39')]:![];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3a')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x3b')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3c')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x3d')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3e')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]&&_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]['fields']?_0x53c639[_0x2de0('0x35')]['diagnosticInfo']['fields'][_0x2de0('0x38')][_0x2de0('0x39')]:![];_0x5e81ce['body'][_0x2de0('0x3f')]=_0x53c639['queryResult'][_0x2de0('0x40')][_0x2de0('0x41')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x42')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x40')][_0x2de0('0x43')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x44')]=_0x53c639['queryResult'][_0x2de0('0x40')][_0x2de0('0x45')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x46')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x47')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x48')]=_0x53c639['queryResult'][_0x2de0('0x49')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x4a')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x4b')];_0x12f3c1[_0x2de0('0x4c')]=_0x2de0('0x34');_0x12f3c1[_0x2de0('0x4d')]=JSON[_0x2de0('0x13')](_0x37224e);var _0x2d95c8=[];for(var _0x3c01c0=0x0;_0x3c01c0<_0x37224e[_0x2de0('0x33')];_0x3c01c0++){var _0x1b5081=_0x37224e[_0x3c01c0];if(_0x1b5081&&_0x1b5081[_0x2de0('0x35')]&&_0x1b5081['queryResult'][_0x2de0('0x4e')]){_0x2d95c8[_0x2de0('0x4f')](createMessage(_0x378881,_0x20d3cf,_0x12f3c1,_0x1b5081['queryResult'][_0x2de0('0x4e')]));}}return Promise[_0x2de0('0x50')](_0x2d95c8)[_0x2de0('0xf')](function(){if(_0x47d35a){_0xbbc4bf['next']();}else{_0xbbc4bf['stop']();}})['catch'](function(_0x8caec7){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x378881,JSON['stringify'](_0x8caec7));_0xbbc4bf[_0x2de0('0x19')]();});}})[_0x2de0('0x11')](function(_0x169e98){logger['error'](_0x2de0('0x10'),_0x378881,_0x169e98[_0x2de0('0x31')]);_0xbbc4bf[_0x2de0('0x19')]();});}}catch(_0x265021){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x378881,JSON[_0x2de0('0x13')](_0x265021));_0xbbc4bf[_0x2de0('0x2c')]();}};};
\ No newline at end of file
index 7804670..74257df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ad=['number','consequence','getMustacheRender','replace','length','error','map','message','join','priorityTrue','info','condition','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOIF]\x20%s','stringify','validate','lodash','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0xd74e3d,_0x8de80b){var _0x3b3ca9=function(_0x167ba5){while(--_0x167ba5){_0xd74e3d['push'](_0xd74e3d['shift']());}};_0x3b3ca9(++_0x8de80b);}(_0xb2ad,0x10d));var _0xdb2a=function(_0x54f4d7,_0x97f9a1){_0x54f4d7=_0x54f4d7-0x0;var _0x5d3764=_0xb2ad[_0x54f4d7];return _0x5d3764;};'use strict';var schema=require(_0xdb2a('0x0'));var _=require(_0xdb2a('0x1'));var htmlToText=require('html-to-text');var utils=require(_0xdb2a('0x2'));var logger=require(_0xdb2a('0x3'))('routing');var gotoif=schema({'condition':{'type':_0xdb2a('0x4'),'required':!![],'message':_0xdb2a('0x5')},'priorityTrue':{'type':_0xdb2a('0x6'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xdb2a('0x6'),'message':'priority\x20false\x20is\x20a\x20number'}});exports[_0xdb2a('0x7')]=function(_0xc00f74,_0x341f81){return function(_0x1acc66){try{var _0x34b86b={'condition':htmlToText['fromString'](utils[_0xdb2a('0x8')](_0x341f81[0x0],this),{'wordwrap':![]})[_0xdb2a('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x341f81[0x1],'priorityFalse':_0x341f81[0x2]};var _0x37d28a=gotoif[_0xdb2a('0x0')](_0x34b86b,{'typecast':!![]});if(_0x37d28a[_0xdb2a('0xa')]){logger[_0xdb2a('0xb')]('[%s][GOTOIF]\x20%s',_0xc00f74,_[_0xdb2a('0xc')](_0x37d28a,_0xdb2a('0xd'))[_0xdb2a('0xe')](',\x20'));_0x1acc66['stop']();}else{try{var _0x130fd2=eval('('+_0x34b86b['condition']+')');var _0x1e0ab4=_0x130fd2?_0x34b86b[_0xdb2a('0xf')]:_0x34b86b['priorityFalse'];logger[_0xdb2a('0x10')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0xc00f74,_0x34b86b[_0xdb2a('0x11')],_0x130fd2,_0x1e0ab4||_0xdb2a('0x12'));if(_0x1e0ab4){var _0x18c46b=_['findIndex'](_0x1acc66[_0xdb2a('0x13')](),{'p':_0x1e0ab4});if(_0x18c46b>=0x0){logger[_0xdb2a('0x10')](_0xdb2a('0x14'),_0xc00f74,_0x1e0ab4||_0xdb2a('0x12'),_0x18c46b);_0x1acc66[_0xdb2a('0x12')](_0x18c46b);}else{logger['info'](_0xdb2a('0x15'),_0xc00f74,_0x1e0ab4||'next');_0x1acc66['stop']();}}else{_0x1acc66['next']();}}catch(_0x5dc310){logger[_0xdb2a('0xb')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0xc00f74,_0x5dc310[_0xdb2a('0xd')]);_0x1acc66[_0xdb2a('0x16')]();}}}catch(_0x53c205){logger[_0xdb2a('0xb')](_0xdb2a('0x17'),_0xc00f74,JSON[_0xdb2a('0x18')](_0x53c205));_0x1acc66['stop']();}};};
\ No newline at end of file
+var _0x250f=['findIndex','rules','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','priorityFalse','info'];(function(_0x597819,_0x221935){var _0xfb2164=function(_0x3e6096){while(--_0x3e6096){_0x597819['push'](_0x597819['shift']());}};_0xfb2164(++_0x221935);}(_0x250f,0x150));var _0xf250=function(_0x192fc3,_0x42bcdb){_0x192fc3=_0x192fc3-0x0;var _0x277e26=_0x250f[_0x192fc3];return _0x277e26;};'use strict';var schema=require(_0xf250('0x0'));var _=require(_0xf250('0x1'));var htmlToText=require(_0xf250('0x2'));var utils=require(_0xf250('0x3'));var logger=require(_0xf250('0x4'))('routing');var gotoif=schema({'condition':{'type':_0xf250('0x5'),'required':!![],'message':_0xf250('0x6')},'priorityTrue':{'type':_0xf250('0x7'),'message':_0xf250('0x8')},'priorityFalse':{'type':_0xf250('0x7'),'message':_0xf250('0x9')}});exports[_0xf250('0xa')]=function(_0x1e8626,_0x10ab87){return function(_0x10726a){try{var _0xda7031={'condition':htmlToText['fromString'](utils[_0xf250('0xb')](_0x10ab87[0x0],this),{'wordwrap':![]})[_0xf250('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x10ab87[0x1],'priorityFalse':_0x10ab87[0x2]};var _0x119375=gotoif[_0xf250('0x0')](_0xda7031,{'typecast':!![]});if(_0x119375[_0xf250('0xd')]){logger[_0xf250('0xe')](_0xf250('0xf'),_0x1e8626,_[_0xf250('0x10')](_0x119375,_0xf250('0x11'))[_0xf250('0x12')](',\x20'));_0x10726a[_0xf250('0x13')]();}else{try{var _0x44f0ce=eval('('+_0xda7031[_0xf250('0x14')]+')');var _0x260dcc=_0x44f0ce?_0xda7031[_0xf250('0x15')]:_0xda7031[_0xf250('0x16')];logger[_0xf250('0x17')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x1e8626,_0xda7031[_0xf250('0x14')],_0x44f0ce,_0x260dcc||'next');if(_0x260dcc){var _0x4c999b=_[_0xf250('0x18')](_0x10726a[_0xf250('0x19')](),{'p':_0x260dcc});if(_0x4c999b>=0x0){logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x1e8626,_0x260dcc||'next',_0x4c999b);_0x10726a[_0xf250('0x1a')](_0x4c999b);}else{logger[_0xf250('0x17')](_0xf250('0x1b'),_0x1e8626,_0x260dcc||'next');_0x10726a[_0xf250('0x13')]();}}else{_0x10726a['next']();}}catch(_0x4a3396){logger[_0xf250('0xe')](_0xf250('0x1c'),_0x1e8626,_0x4a3396[_0xf250('0x11')]);_0x10726a[_0xf250('0x13')]();}}}catch(_0x2eea77){logger[_0xf250('0xe')](_0xf250('0xf'),_0x1e8626,JSON[_0xf250('0x1d')](_0x2eea77));_0x10726a['stop']();}};};
\ No newline at end of file
index 2417e89..f28db57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc250=['lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','map','message','info','priority','findIndex','rules','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','validate'];(function(_0x4e46ca,_0x405659){var _0xa133a0=function(_0x47a72b){while(--_0x47a72b){_0x4e46ca['push'](_0x4e46ca['shift']());}};_0xa133a0(++_0x405659);}(_0xc250,0x143));var _0x0c25=function(_0x5040c4,_0x23dcb6){_0x5040c4=_0x5040c4-0x0;var _0x241c56=_0xc250[_0x5040c4];return _0x241c56;};'use strict';var schema=require(_0x0c25('0x0'));var _=require(_0x0c25('0x1'));var logger=require(_0x0c25('0x2'))(_0x0c25('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x0c25('0x4')}});exports[_0x0c25('0x5')]=function(_0x44e74f,_0x5ee3f6){return function(_0x5706b6){try{var _0x5cb4d6={'priority':_0x5ee3f6[0x0]};var _0xcf75b3=gotop[_0x0c25('0x0')](_0x5cb4d6,{'typecast':!![]});if(_0xcf75b3[_0x0c25('0x6')]){logger[_0x0c25('0x7')]('[%s][GOTOP]\x20%s',_0x44e74f,_[_0x0c25('0x8')](_0xcf75b3,_0x0c25('0x9'))['join'](',\x20'));_0x5706b6['stop']();}else{logger[_0x0c25('0xa')]('[%s][GOTOP]\x20priority\x20%s',_0x44e74f,_0x5cb4d6['priority']);if(_0x5cb4d6[_0x0c25('0xb')]){var _0x57e229=_[_0x0c25('0xc')](_0x5706b6[_0x0c25('0xd')](),{'p':_0x5cb4d6[_0x0c25('0xb')]});if(_0x57e229>=0x0){logger[_0x0c25('0xa')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x44e74f,_0x5cb4d6[_0x0c25('0xb')]||_0x0c25('0xe'),_0x57e229);_0x5706b6[_0x0c25('0xe')](_0x57e229);}else{logger[_0x0c25('0xa')](_0x0c25('0xf'),_0x44e74f,_0x5cb4d6[_0x0c25('0xb')]||_0x0c25('0xe'));_0x5706b6[_0x0c25('0x10')]();}}else{_0x5706b6['next']();}}}catch(_0x37b92b){logger[_0x0c25('0x7')]('[%s][GOTOP]\x20%s',_0x44e74f,JSON[_0x0c25('0x11')](_0x37b92b));_0x5706b6[_0x0c25('0x10')]();}};};
\ No newline at end of file
+var _0x6804=['rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','validate','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','error','map','join','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex'];(function(_0x13c266,_0x4138c8){var _0x20bd82=function(_0x14b466){while(--_0x14b466){_0x13c266['push'](_0x13c266['shift']());}};_0x20bd82(++_0x4138c8);}(_0x6804,0x16f));var _0x4680=function(_0x453d86,_0x4e8d78){_0x453d86=_0x453d86-0x0;var _0xc2288=_0x6804[_0x453d86];return _0xc2288;};'use strict';var schema=require(_0x4680('0x0'));var _=require(_0x4680('0x1'));var logger=require(_0x4680('0x2'))(_0x4680('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x4680('0x4')}});exports['consequence']=function(_0x152d26,_0x58e647){return function(_0x56f909){try{var _0x515aa4={'priority':_0x58e647[0x0]};var _0x8c5689=gotop[_0x4680('0x0')](_0x515aa4,{'typecast':!![]});if(_0x8c5689[_0x4680('0x5')]){logger[_0x4680('0x6')]('[%s][GOTOP]\x20%s',_0x152d26,_[_0x4680('0x7')](_0x8c5689,'message')[_0x4680('0x8')](',\x20'));_0x56f909['stop']();}else{logger[_0x4680('0x9')](_0x4680('0xa'),_0x152d26,_0x515aa4['priority']);if(_0x515aa4[_0x4680('0xb')]){var _0x1e7dde=_[_0x4680('0xc')](_0x56f909[_0x4680('0xd')](),{'p':_0x515aa4[_0x4680('0xb')]});if(_0x1e7dde>=0x0){logger[_0x4680('0x9')](_0x4680('0xe'),_0x152d26,_0x515aa4[_0x4680('0xb')]||_0x4680('0xf'),_0x1e7dde);_0x56f909[_0x4680('0xf')](_0x1e7dde);}else{logger[_0x4680('0x9')](_0x4680('0x10'),_0x152d26,_0x515aa4['priority']||_0x4680('0xf'));_0x56f909[_0x4680('0x11')]();}}else{_0x56f909['next']();}}}catch(_0x5aeb39){logger[_0x4680('0x6')]('[%s][GOTOP]\x20%s',_0x152d26,JSON[_0x4680('0x12')](_0x5aeb39));_0x56f909[_0x4680('0x11')]();}};};
\ No newline at end of file
index 43457f9..8f34cf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5a2=['next','catch','error','stringify','stop','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','account','AccountId','upperFirst','InteractionId','interaction','Message','create','then','[%s][MESSAGE]\x20%s','body'];(function(_0x4682e9,_0x20afcd){var _0x390b05=function(_0x169fa9){while(--_0x169fa9){_0x4682e9['push'](_0x4682e9['shift']());}};_0x390b05(++_0x20afcd);}(_0xd5a2,0x1eb));var _0x2d5a=function(_0xfbfcc2,_0x496365){_0xfbfcc2=_0xfbfcc2-0x0;var _0x1f2fcb=_0xd5a2[_0xfbfcc2];return _0x1f2fcb;};'use strict';var _=require('lodash');var utils=require(_0x2d5a('0x0'));var logger=require(_0x2d5a('0x1'))(_0x2d5a('0x2'));var rpc={'chatMessage':require(_0x2d5a('0x3')),'openchannelMessage':require(_0x2d5a('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x2d5a('0x5')),'faxMessage':require(_0x2d5a('0x6')),'whatsappMessage':require(_0x2d5a('0x7'))};exports[_0x2d5a('0x8')]=function(_0x2f7a0a,_0x1187b5){return function(_0x923c29){try{var _0x1ae103={'body':utils[_0x2d5a('0x9')](_0x1187b5[0x0],this),'ContactId':this[_0x2d5a('0xa')]['id']};if(this[_0x2d5a('0xb')]==='chat'){_0x1ae103['ChatWebsiteId']=this[_0x2d5a('0xc')]['id'];}else{_0x1ae103[_['upperFirst'](this[_0x2d5a('0xb')])+_0x2d5a('0xd')]=this['account']['id'];}_0x1ae103[_[_0x2d5a('0xe')](this[_0x2d5a('0xb')])+_0x2d5a('0xf')]=this[_0x2d5a('0x10')]['id'];if(rpc[this[_0x2d5a('0xb')]+'Message']){return rpc[this[_0x2d5a('0xb')]+_0x2d5a('0x11')][_0x2d5a('0x12')](_0x1ae103)[_0x2d5a('0x13')](function(_0x583be2){logger['info'](_0x2d5a('0x14'),_0x2f7a0a,_0x1ae103[_0x2d5a('0x15')]);_0x923c29[_0x2d5a('0x16')]();})[_0x2d5a('0x17')](function(_0x5c1416){logger[_0x2d5a('0x18')](_0x2d5a('0x14'),_0x2f7a0a,JSON[_0x2d5a('0x19')](_0x5c1416));_0x923c29[_0x2d5a('0x1a')]();});}}catch(_0x281af3){logger['error'](_0x2d5a('0x14'),_0x2f7a0a,JSON[_0x2d5a('0x19')](_0x281af3));_0x923c29[_0x2d5a('0x1a')]();}};};
\ No newline at end of file
+var _0xbf77=['catch','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','contact','channel','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','interaction','create','then','info','[%s][MESSAGE]\x20%s','body','next'];(function(_0x1dff39,_0x1cf83c){var _0x18bc86=function(_0x4971cb){while(--_0x4971cb){_0x1dff39['push'](_0x1dff39['shift']());}};_0x18bc86(++_0x1cf83c);}(_0xbf77,0xec));var _0x7bf7=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xbf77[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0x7bf7('0x0'));var utils=require(_0x7bf7('0x1'));var logger=require(_0x7bf7('0x2'))(_0x7bf7('0x3'));var rpc={'chatMessage':require(_0x7bf7('0x4')),'openchannelMessage':require(_0x7bf7('0x5')),'mailMessage':require(_0x7bf7('0x6')),'smsMessage':require(_0x7bf7('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x7bf7('0x8'))};exports[_0x7bf7('0x9')]=function(_0x3c943a,_0x49dc52){return function(_0x2cf3f5){try{var _0x291c94={'body':utils['getMustacheRender'](_0x49dc52[0x0],this),'ContactId':this[_0x7bf7('0xa')]['id']};if(this[_0x7bf7('0xb')]===_0x7bf7('0xc')){_0x291c94[_0x7bf7('0xd')]=this['account']['id'];}else{_0x291c94[_[_0x7bf7('0xe')](this[_0x7bf7('0xb')])+_0x7bf7('0xf')]=this[_0x7bf7('0x10')]['id'];}_0x291c94[_[_0x7bf7('0xe')](this[_0x7bf7('0xb')])+_0x7bf7('0x11')]=this[_0x7bf7('0x12')]['id'];if(rpc[this[_0x7bf7('0xb')]+'Message']){return rpc[this[_0x7bf7('0xb')]+'Message'][_0x7bf7('0x13')](_0x291c94)[_0x7bf7('0x14')](function(_0x4df560){logger[_0x7bf7('0x15')](_0x7bf7('0x16'),_0x3c943a,_0x291c94[_0x7bf7('0x17')]);_0x2cf3f5[_0x7bf7('0x18')]();})[_0x7bf7('0x19')](function(_0x16c12d){logger[_0x7bf7('0x1a')](_0x7bf7('0x16'),_0x3c943a,JSON[_0x7bf7('0x1b')](_0x16c12d));_0x2cf3f5['stop']();});}}catch(_0x1f1ff4){logger[_0x7bf7('0x1a')]('[%s][MESSAGE]\x20%s',_0x3c943a,JSON[_0x7bf7('0x1b')](_0x1f1ff4));_0x2cf3f5[_0x7bf7('0x1c')]();}};};
\ No newline at end of file
index 6b7b712..2bc5643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc744=['[%s][NOOP]\x20%s','next','error','stringify','stop','./utils','../../../../config/logger','routing','consequence','info'];(function(_0x403af9,_0x607320){var _0x3878d6=function(_0x523ba2){while(--_0x523ba2){_0x403af9['push'](_0x403af9['shift']());}};_0x3878d6(++_0x607320);}(_0xc744,0x87));var _0x4c74=function(_0x2290d4,_0x43d284){_0x2290d4=_0x2290d4-0x0;var _0x1f68ee=_0xc744[_0x2290d4];return _0x1f68ee;};'use strict';var utils=require(_0x4c74('0x0'));var logger=require(_0x4c74('0x1'))(_0x4c74('0x2'));exports[_0x4c74('0x3')]=function(_0x5c1425,_0x22568f){return function(_0x7a4a48){try{logger[_0x4c74('0x4')](_0x4c74('0x5'),_0x5c1425,utils['getMustacheRender'](_0x22568f[0x0],this));_0x7a4a48[_0x4c74('0x6')]();}catch(_0x4f6671){logger[_0x4c74('0x7')]('[%s][NOOP]\x20%s',_0x5c1425,JSON[_0x4c74('0x8')](_0x4f6671));_0x7a4a48[_0x4c74('0x9')]();}};};
\ No newline at end of file
+var _0x5163=['./utils','../../../../config/logger','info','[%s][NOOP]\x20%s','getMustacheRender','stringify','stop'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5163,0xc4));var _0x3516=function(_0x82ddee,_0x57842d){_0x82ddee=_0x82ddee-0x0;var _0x293098=_0x5163[_0x82ddee];return _0x293098;};'use strict';var utils=require(_0x3516('0x0'));var logger=require(_0x3516('0x1'))('routing');exports['consequence']=function(_0x29fdb7,_0x131fc5){return function(_0x5ca9a2){try{logger[_0x3516('0x2')](_0x3516('0x3'),_0x29fdb7,utils[_0x3516('0x4')](_0x131fc5[0x0],this));_0x5ca9a2['next']();}catch(_0xc182ca){logger['error'](_0x3516('0x3'),_0x29fdb7,JSON[_0x3516('0x5')](_0xc182ca));_0x5ca9a2[_0x3516('0x6')]();}};};
\ No newline at end of file
index a0d0a1c..b9f1978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdff=['validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','routing','./strategy','localhost','redis','queue_id','queue','from','joinAt','emit','clone','format','%sQueuesWaitingInteractions','pick','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','number','timeout\x20is\x20a\x20number','body','contact','list','channel','QueueId','InteractionId','interaction','upperFirst','message','account','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update','catch','update\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','length','map','stop','Queues','qtimeout','rules','end','close','complete','next','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xbdff,0x114));var _0xfbdf=function(_0x59a631,_0x186915){_0x59a631=_0x59a631-0x0;var _0x24d8a9=_0xbdff[_0x59a631];return _0x24d8a9;};'use strict';var schema=require(_0xfbdf('0x0'));var _=require(_0xfbdf('0x1'));var util=require(_0xfbdf('0x2'));var seqqueue=require(_0xfbdf('0x3'));var moment=require(_0xfbdf('0x4'));var Redis=require(_0xfbdf('0x5'));var config=require(_0xfbdf('0x6'));var logger=require('../../../../config/logger')(_0xfbdf('0x7'));var strategy=require(_0xfbdf('0x8'));config['redis']=_['defaults'](config['redis'],{'host':_0xfbdf('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xfbdf('0xa')]));var attributes=['id',_0xfbdf('0xb'),'account',_0xfbdf('0xc'),_0xfbdf('0xd'),_0xfbdf('0xe')];function emit(_0x4ef000,_0x1d259f,_0x5268f9){io['to'](_0x4ef000)[_0xfbdf('0xf')](_0x1d259f,_0x5268f9);}function emitChannelQueueInteraction(_0x424c53,_0x41e702,_0x5259f8,_0x30bded,_0xb376c4,_0x4d44ca,_0x4ba8b1,_0x1505fe){var _0x458817=_[_0xfbdf('0x10')](_0x5259f8);_0x458817[_0xfbdf('0xb')]=_0x1505fe;_0x458817['queue']=_0x41e702;_0x458817['account']=_0x30bded;_0x458817['id']=_0xb376c4;if(_0x4d44ca){_0x4ba8b1[util[_0xfbdf('0x11')](_0xfbdf('0x12'),_0x424c53)][_0xb376c4]=_[_0xfbdf('0x13')](_0x458817,attributes);}else{delete _0x4ba8b1[util['format'](_0xfbdf('0x12'),_0x424c53)][_0xb376c4];}emit(util[_0xfbdf('0x11')]('%s:queue:%s',_0x424c53,_0x41e702),util[_0xfbdf('0x11')](_0xfbdf('0x14'),_0x424c53,_0x4d44ca?'save':_0xfbdf('0x15')),_[_0xfbdf('0x13')](_0x458817,attributes));}var rpc={'openchannelQueueReport':require(_0xfbdf('0x16')),'mailQueueReport':require(_0xfbdf('0x17')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0xfbdf('0x18')),'whatsappQueueReport':require(_0xfbdf('0x19'))};var queue=schema({'name':{'type':_0xfbdf('0x1a'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xfbdf('0x1b'),'message':_0xfbdf('0x1c')}});function startRouting(_0x29c34f,_0xad3e04,_0x493f43,_0x5cff0c){if(_0x29c34f&&_0xad3e04&&_0x493f43){_0xad3e04['waiting']+=0x1;var _0x3eacbb={'uniqueid':_0x29c34f,'from':_0x493f43[_0xfbdf('0x1d')]?_0x493f43[_0xfbdf('0x1d')][_0xfbdf('0xd')]:'','joinAt':moment()[_0xfbdf('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x493f43[_0xfbdf('0x1e')]?_0x493f43[_0xfbdf('0x1e')]['id']:null,'ListId':_0x493f43[_0xfbdf('0x1f')]?_0x493f43[_0xfbdf('0x1f')]['id']:null};_0x3eacbb[_['upperFirst'](_0x493f43[_0xfbdf('0x20')])+_0xfbdf('0x21')]=_0xad3e04['id']||null;_0x3eacbb[_['upperFirst'](_0x493f43['channel'])+_0xfbdf('0x22')]=_0x493f43[_0xfbdf('0x23')]?_0x493f43[_0xfbdf('0x23')]['id']:null;_0x3eacbb[_[_0xfbdf('0x24')](_0x493f43['channel'])+'MessageId']=_0x493f43['message']?_0x493f43[_0xfbdf('0x25')]['id']:null;_0x3eacbb[_['upperFirst'](_0x493f43[_0xfbdf('0x20')])+(_0x493f43[_0xfbdf('0x20')]!=='chat'?'AccountId':'WebsiteId')]=_0x493f43[_0xfbdf('0x26')]?_0x493f43[_0xfbdf('0x26')]['id']:null;logger['info'](util['format'](_0xfbdf('0x27'),_0x29c34f,_0xad3e04[_0xfbdf('0x28')]));emitChannelQueueInteraction(_0x493f43[_0xfbdf('0x20')],_0xad3e04[_0xfbdf('0x28')],_0x3eacbb,_0x493f43['account'][_0xfbdf('0x28')],_0x493f43[_0xfbdf('0x25')]['id'],!![],_0x5cff0c,_0xad3e04['id']);if(rpc[_0x493f43[_0xfbdf('0x20')]+_0xfbdf('0x29')]){return rpc[_0x493f43[_0xfbdf('0x20')]+_0xfbdf('0x29')][_0xfbdf('0x2a')](_0x3eacbb)['catch'](function(_0x1e38d2){logger[_0xfbdf('0x2b')]('create\x20queue\x20report');});}}}function stopRouting(_0x1bb8cc,_0xe35091,_0x32bfb5,_0x140456){if(_0x1bb8cc&&_0xe35091){_0xe35091['waiting']-=0x1;var _0x4f7f45={'leaveAt':moment()[_0xfbdf('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xfbdf('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xfbdf('0x2c')};logger[_0xfbdf('0x2d')](util[_0xfbdf('0x11')](_0xfbdf('0x2e'),_0x1bb8cc,_0xe35091[_0xfbdf('0x28')]));emitChannelQueueInteraction(_0x32bfb5[_0xfbdf('0x20')],_0xe35091[_0xfbdf('0x28')],_0x32bfb5['body'],_0x32bfb5['account'][_0xfbdf('0x28')],_0x32bfb5[_0xfbdf('0x25')]['id'],![],_0x140456,_0xe35091['id']);if(rpc[_0x32bfb5[_0xfbdf('0x20')]+'QueueReport']){return rpc[_0x32bfb5[_0xfbdf('0x20')]+_0xfbdf('0x29')][_0xfbdf('0x2f')](_0x1bb8cc,_0x4f7f45)[_0xfbdf('0x30')](function(_0x115a2a){logger[_0xfbdf('0x2b')](_0xfbdf('0x31'));});}}}function endRouting(_0x5678cc,_0x6213c,_0x115f7c,_0x3d0c67){if(_0x5678cc&&_0x6213c){_0x6213c['waiting']-=0x1;var _0x12f1e2={'leaveAt':moment()[_0xfbdf('0x11')](_0xfbdf('0x32')),'exitAt':moment()[_0xfbdf('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xfbdf('0x33')};logger['info'](util['format'](_0xfbdf('0x34'),_0x5678cc,_0x6213c['name']));emitChannelQueueInteraction(_0x115f7c[_0xfbdf('0x20')],_0x6213c['name'],_0x115f7c[_0xfbdf('0x1d')],_0x115f7c['account'][_0xfbdf('0x28')],_0x115f7c[_0xfbdf('0x25')]['id'],![],_0x3d0c67);if(rpc[_0x115f7c[_0xfbdf('0x20')]+'QueueReport']){return rpc[_0x115f7c[_0xfbdf('0x20')]+_0xfbdf('0x29')][_0xfbdf('0x2f')](_0x5678cc,_0x12f1e2)[_0xfbdf('0x30')](function(_0x48615b){logger[_0xfbdf('0x2b')](_0xfbdf('0x31'));});}}}function handleFindQueue(_0x1e6449){return function(_0x439634){return _0x439634[_0xfbdf('0x28')][_0xfbdf('0x35')]()===_0x1e6449[_0xfbdf('0x35')]();};}exports['consequence']=function(_0x2083e9,_0x19c55c,_0x25ca22,_0x4ba5cc){return function(_0x280211){try{var _0x5e55f5={'name':_0x19c55c[0x0],'timeout':_0x19c55c[0x1]};var _0x20f027=queue[_0xfbdf('0x0')](_0x5e55f5,{'typecast':!![]});if(_0x20f027[_0xfbdf('0x36')]){logger[_0xfbdf('0x2b')]('[%s][QUEUE]\x20%s',_0x2083e9,_[_0xfbdf('0x37')](_0x20f027,_0xfbdf('0x25'))['join'](',\x20'));_0x280211[_0xfbdf('0x38')]();}else{var _0x282a70=_['find'](_0x25ca22[_0x4ba5cc['channel']+_0xfbdf('0x39')],handleFindQueue(_0x5e55f5['name']));if(_0x282a70){startRouting(_0x2083e9,_0x282a70,_0x4ba5cc,_0x25ca22);var _0x34c769=(_0x282a70[_0xfbdf('0x33')]||0xa)*0x3e8;var _0x2b7813=(_0x5e55f5[_0xfbdf('0x33')]||0x14)*0x3e8;var _0x467d1c,_0x243f0f;if(_0x34c769>_0x2b7813){_0x2b7813=_0x34c769;}var _0x340230=seqqueue['createQueue'](_0x34c769);_0x340230['id']=_0x2083e9;_0x340230['atimeout']=_0x34c769;_0x340230[_0xfbdf('0x3a')]=_0x2b7813;_0x340230['channel']=_0x4ba5cc['channel'];_0x25ca22[_0xfbdf('0x3b')][_0x2083e9]['on'](_0xfbdf('0x3c'),function(){logger[_0xfbdf('0x2d')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x2083e9);stopRouting(_0x2083e9,_0x282a70,_0x4ba5cc,_0x25ca22);clearTimeout(_0x467d1c);_0x467d1c=undefined;_0x340230[_0xfbdf('0x3d')](!![]);if(_0x25ca22[_0xfbdf('0x3b')][_0x2083e9]){delete _0x25ca22[_0xfbdf('0x3b')][_0x2083e9];}_0x280211[_0xfbdf('0x38')]();});_0x25ca22['rules'][_0x2083e9]['on'](_0xfbdf('0x3e'),function(){if(_0x25ca22[_0xfbdf('0x3b')][_0x2083e9]){delete _0x25ca22[_0xfbdf('0x3b')][_0x2083e9];}});_0x467d1c=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0x2083e9);endRouting(_0x2083e9,_0x282a70,_0x4ba5cc,_0x25ca22);clearTimeout(_0x467d1c);_0x340230[_0xfbdf('0x3d')](!![]);_0x280211[_0xfbdf('0x3f')]();},_0x2b7813);switch(_0x282a70['strategy']){case _0xfbdf('0x40'):strategy[_0xfbdf('0x40')](_0x340230,_0x282a70,_0x25ca22,_0x4ba5cc);break;default:strategy[_0xfbdf('0x41')](_0x340230,_0x282a70,_0x25ca22,_0x4ba5cc);}}else{logger[_0xfbdf('0x2b')](_0xfbdf('0x42'),_0x2083e9,_0x5e55f5['name']);_0x280211[_0xfbdf('0x38')]();}}}catch(_0x588a9b){console[_0xfbdf('0x43')](_0x588a9b);logger[_0xfbdf('0x2b')]('[%s][QUEUE]\x20%s',_0x2083e9,_0x588a9b[_0xfbdf('0x44')]);_0x280211[_0xfbdf('0x38')]();}};};
\ No newline at end of file
+var _0x6c5c=['lodash','seq-queue','moment','ioredis','../../../../config/logger','./strategy','defaults','redis','socket.io-emitter','queue_id','account','queue','from','joinAt','clone','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','InteractionId','interaction','message','chat','WebsiteId','info','name','QueueReport','catch','error','create\x20queue\x20report','accepted','[%s][END:QUEUE][NAME:%s]','update','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','timeout','createQueue','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack'];(function(_0x14837a,_0x499104){var _0x211b4e=function(_0x297d96){while(--_0x297d96){_0x14837a['push'](_0x14837a['shift']());}};_0x211b4e(++_0x499104);}(_0x6c5c,0x124));var _0xc6c5=function(_0x2a499c,_0x13c2b6){_0x2a499c=_0x2a499c-0x0;var _0x5a8ee2=_0x6c5c[_0x2a499c];return _0x5a8ee2;};'use strict';var schema=require('validate');var _=require(_0xc6c5('0x0'));var util=require('util');var seqqueue=require(_0xc6c5('0x1'));var moment=require(_0xc6c5('0x2'));var Redis=require(_0xc6c5('0x3'));var config=require('../../../../config/environment');var logger=require(_0xc6c5('0x4'))('routing');var strategy=require(_0xc6c5('0x5'));config['redis']=_[_0xc6c5('0x6')](config[_0xc6c5('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xc6c5('0x8'))(new Redis(config['redis']));var attributes=['id',_0xc6c5('0x9'),_0xc6c5('0xa'),_0xc6c5('0xb'),_0xc6c5('0xc'),_0xc6c5('0xd')];function emit(_0x184fb5,_0x2c1c88,_0x5137c1){io['to'](_0x184fb5)['emit'](_0x2c1c88,_0x5137c1);}function emitChannelQueueInteraction(_0x3cea7f,_0x109b4d,_0x322884,_0x2c31fc,_0x31a9f5,_0x1b5c7d,_0x4ffa1a,_0x4f8530){var _0x9bb5f3=_[_0xc6c5('0xe')](_0x322884);_0x9bb5f3[_0xc6c5('0x9')]=_0x4f8530;_0x9bb5f3[_0xc6c5('0xb')]=_0x109b4d;_0x9bb5f3['account']=_0x2c31fc;_0x9bb5f3['id']=_0x31a9f5;if(_0x1b5c7d){_0x4ffa1a[util[_0xc6c5('0xf')](_0xc6c5('0x10'),_0x3cea7f)][_0x31a9f5]=_['pick'](_0x9bb5f3,attributes);}else{delete _0x4ffa1a[util[_0xc6c5('0xf')](_0xc6c5('0x10'),_0x3cea7f)][_0x31a9f5];}emit(util[_0xc6c5('0xf')](_0xc6c5('0x11'),_0x3cea7f,_0x109b4d),util[_0xc6c5('0xf')](_0xc6c5('0x12'),_0x3cea7f,_0x1b5c7d?_0xc6c5('0x13'):_0xc6c5('0x14')),_[_0xc6c5('0x15')](_0x9bb5f3,attributes));}var rpc={'openchannelQueueReport':require(_0xc6c5('0x16')),'mailQueueReport':require(_0xc6c5('0x17')),'chatQueueReport':require(_0xc6c5('0x18')),'smsQueueReport':require(_0xc6c5('0x19')),'faxQueueReport':require(_0xc6c5('0x1a')),'whatsappQueueReport':require(_0xc6c5('0x1b'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0xc6c5('0x1c')},'timeout':{'type':_0xc6c5('0x1d'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x12f7e2,_0x5d3dd5,_0x1cc7cd,_0x112393){if(_0x12f7e2&&_0x5d3dd5&&_0x1cc7cd){_0x5d3dd5[_0xc6c5('0x1e')]+=0x1;var _0x50af85={'uniqueid':_0x12f7e2,'from':_0x1cc7cd[_0xc6c5('0x1f')]?_0x1cc7cd[_0xc6c5('0x1f')][_0xc6c5('0xc')]:'','joinAt':moment()[_0xc6c5('0xf')](_0xc6c5('0x20')),'ContactId':_0x1cc7cd[_0xc6c5('0x21')]?_0x1cc7cd[_0xc6c5('0x21')]['id']:null,'ListId':_0x1cc7cd[_0xc6c5('0x22')]?_0x1cc7cd['list']['id']:null};_0x50af85[_[_0xc6c5('0x23')](_0x1cc7cd[_0xc6c5('0x24')])+'QueueId']=_0x5d3dd5['id']||null;_0x50af85[_['upperFirst'](_0x1cc7cd[_0xc6c5('0x24')])+_0xc6c5('0x25')]=_0x1cc7cd[_0xc6c5('0x26')]?_0x1cc7cd['interaction']['id']:null;_0x50af85[_[_0xc6c5('0x23')](_0x1cc7cd[_0xc6c5('0x24')])+'MessageId']=_0x1cc7cd[_0xc6c5('0x27')]?_0x1cc7cd['message']['id']:null;_0x50af85[_[_0xc6c5('0x23')](_0x1cc7cd[_0xc6c5('0x24')])+(_0x1cc7cd[_0xc6c5('0x24')]!==_0xc6c5('0x28')?'AccountId':_0xc6c5('0x29'))]=_0x1cc7cd[_0xc6c5('0xa')]?_0x1cc7cd[_0xc6c5('0xa')]['id']:null;logger[_0xc6c5('0x2a')](util[_0xc6c5('0xf')]('[%s][START:QUEUE][NAME:%s]',_0x12f7e2,_0x5d3dd5['name']));emitChannelQueueInteraction(_0x1cc7cd['channel'],_0x5d3dd5[_0xc6c5('0x2b')],_0x50af85,_0x1cc7cd[_0xc6c5('0xa')]['name'],_0x1cc7cd[_0xc6c5('0x27')]['id'],!![],_0x112393,_0x5d3dd5['id']);if(rpc[_0x1cc7cd['channel']+_0xc6c5('0x2c')]){return rpc[_0x1cc7cd['channel']+_0xc6c5('0x2c')]['create'](_0x50af85)[_0xc6c5('0x2d')](function(_0x595fe4){logger[_0xc6c5('0x2e')](_0xc6c5('0x2f'));});}}}function stopRouting(_0x2b7738,_0x5eaa8d,_0x3cf26b,_0x3b9fbb){if(_0x2b7738&&_0x5eaa8d){_0x5eaa8d[_0xc6c5('0x1e')]-=0x1;var _0x12fff0={'leaveAt':moment()[_0xc6c5('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()['format'](_0xc6c5('0x20')),'reason':_0xc6c5('0x30')};logger['info'](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x2b7738,_0x5eaa8d['name']));emitChannelQueueInteraction(_0x3cf26b[_0xc6c5('0x24')],_0x5eaa8d[_0xc6c5('0x2b')],_0x3cf26b[_0xc6c5('0x1f')],_0x3cf26b['account'][_0xc6c5('0x2b')],_0x3cf26b[_0xc6c5('0x27')]['id'],![],_0x3b9fbb,_0x5eaa8d['id']);if(rpc[_0x3cf26b[_0xc6c5('0x24')]+_0xc6c5('0x2c')]){return rpc[_0x3cf26b[_0xc6c5('0x24')]+_0xc6c5('0x2c')]['update'](_0x2b7738,_0x12fff0)['catch'](function(_0x3a46fb){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x5757ce,_0x1baf8b,_0x25c783,_0x24c432){if(_0x5757ce&&_0x1baf8b){_0x1baf8b[_0xc6c5('0x1e')]-=0x1;var _0x3559e6={'leaveAt':moment()[_0xc6c5('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xc6c5('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'timeout'};logger[_0xc6c5('0x2a')](util['format'](_0xc6c5('0x31'),_0x5757ce,_0x1baf8b[_0xc6c5('0x2b')]));emitChannelQueueInteraction(_0x25c783[_0xc6c5('0x24')],_0x1baf8b[_0xc6c5('0x2b')],_0x25c783[_0xc6c5('0x1f')],_0x25c783[_0xc6c5('0xa')]['name'],_0x25c783[_0xc6c5('0x27')]['id'],![],_0x24c432);if(rpc[_0x25c783[_0xc6c5('0x24')]+_0xc6c5('0x2c')]){return rpc[_0x25c783[_0xc6c5('0x24')]+_0xc6c5('0x2c')][_0xc6c5('0x32')](_0x5757ce,_0x3559e6)[_0xc6c5('0x2d')](function(_0x5789f6){logger[_0xc6c5('0x2e')](_0xc6c5('0x33'));});}}}function handleFindQueue(_0x1336c5){return function(_0xbc6569){return _0xbc6569[_0xc6c5('0x2b')]['toLowerCase']()===_0x1336c5[_0xc6c5('0x34')]();};}exports[_0xc6c5('0x35')]=function(_0x8c30ba,_0x3ae6b0,_0x3cf18b,_0x31599a){return function(_0x5d4b6b){try{var _0x21d959={'name':_0x3ae6b0[0x0],'timeout':_0x3ae6b0[0x1]};var _0x5edc5f=queue['validate'](_0x21d959,{'typecast':!![]});if(_0x5edc5f[_0xc6c5('0x36')]){logger[_0xc6c5('0x2e')](_0xc6c5('0x37'),_0x8c30ba,_['map'](_0x5edc5f,_0xc6c5('0x27'))[_0xc6c5('0x38')](',\x20'));_0x5d4b6b[_0xc6c5('0x39')]();}else{var _0x59a6a1=_['find'](_0x3cf18b[_0x31599a[_0xc6c5('0x24')]+'Queues'],handleFindQueue(_0x21d959['name']));if(_0x59a6a1){startRouting(_0x8c30ba,_0x59a6a1,_0x31599a,_0x3cf18b);var _0x48c725=(_0x59a6a1[_0xc6c5('0x3a')]||0xa)*0x3e8;var _0x496409=(_0x21d959[_0xc6c5('0x3a')]||0x14)*0x3e8;var _0x55018d,_0x22de13;if(_0x48c725>_0x496409){_0x496409=_0x48c725;}var _0x309d35=seqqueue[_0xc6c5('0x3b')](_0x48c725);_0x309d35['id']=_0x8c30ba;_0x309d35['atimeout']=_0x48c725;_0x309d35[_0xc6c5('0x3c')]=_0x496409;_0x309d35[_0xc6c5('0x24')]=_0x31599a[_0xc6c5('0x24')];_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]['on'](_0xc6c5('0x3e'),function(){logger[_0xc6c5('0x2a')](_0xc6c5('0x3f'),_0x8c30ba);stopRouting(_0x8c30ba,_0x59a6a1,_0x31599a,_0x3cf18b);clearTimeout(_0x55018d);_0x55018d=undefined;_0x309d35[_0xc6c5('0x40')](!![]);if(_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]){delete _0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba];}_0x5d4b6b[_0xc6c5('0x39')]();});_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]['on']('complete',function(){if(_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]){delete _0x3cf18b['rules'][_0x8c30ba];}});_0x55018d=setTimeout(function(){logger[_0xc6c5('0x2a')](_0xc6c5('0x41'),_0x8c30ba);endRouting(_0x8c30ba,_0x59a6a1,_0x31599a,_0x3cf18b);clearTimeout(_0x55018d);_0x309d35['close'](!![]);_0x5d4b6b[_0xc6c5('0x42')]();},_0x496409);switch(_0x59a6a1[_0xc6c5('0x43')]){case _0xc6c5('0x44'):strategy[_0xc6c5('0x44')](_0x309d35,_0x59a6a1,_0x3cf18b,_0x31599a);break;default:strategy[_0xc6c5('0x45')](_0x309d35,_0x59a6a1,_0x3cf18b,_0x31599a);}}else{logger[_0xc6c5('0x2e')](_0xc6c5('0x46'),_0x8c30ba,_0x21d959['name']);_0x5d4b6b['stop']();}}}catch(_0x798176){console[_0xc6c5('0x47')](_0x798176);logger['error'](_0xc6c5('0x37'),_0x8c30ba,_0x798176[_0xc6c5('0x48')]);_0x5d4b6b[_0xc6c5('0x39')]();}};};
\ No newline at end of file
index 8296e6c..75432c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531b=['./util','../../../../../config/logger','routing','notificationId','agent','squeue','push','handleRun','bind','handleTimeout','handleDrained','prototype','info','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','realtime','showNotification','writeLog','RINGING','forcedOwnership',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','STOP','exports','uuid'];(function(_0x1fca80,_0x527187){var _0x5ab676=function(_0x1af7c6){while(--_0x1af7c6){_0x1fca80['push'](_0x1fca80['shift']());}};_0x5ab676(++_0x527187);}(_0x531b,0x13e));var _0xb531=function(_0x2072f4,_0x1f2f7e){_0x2072f4=_0x2072f4-0x0;var _0x330448=_0x531b[_0x2072f4];return _0x330448;};'use strict';var _=require('lodash');var uuid=require(_0xb531('0x0'));var util=require(_0xb531('0x1'));var logger=require(_0xb531('0x2'))(_0xb531('0x3'));var Agent=function(_0x3751d1,_0x5db0aa,_0x180f51,_0x4443fa){this[_0xb531('0x4')]=uuid['v4']();this['squeue']=_0x3751d1;this[_0xb531('0x5')]=_0x5db0aa;this['realtime']=_0x180f51;this[_0xb531('0x3')]=_0x4443fa;this[_0xb531('0x6')][_0xb531('0x7')](this[_0xb531('0x8')][_0xb531('0x9')](this),this['handleTimeout']['bind'](this));this[_0xb531('0x6')]['on']('timeout',this[_0xb531('0xa')][_0xb531('0x9')](this));this[_0xb531('0x6')]['on']('drained',this[_0xb531('0xb')][_0xb531('0x9')](this));};Agent[_0xb531('0xc')][_0xb531('0x7')]=function(){this[_0xb531('0x6')][_0xb531('0x7')](this[_0xb531('0x8')][_0xb531('0x9')](this),this[_0xb531('0xa')][_0xb531('0x9')](this));};Agent[_0xb531('0xc')][_0xb531('0xb')]=function(){this[_0xb531('0xa')](!![]);};Agent[_0xb531('0xc')][_0xb531('0x8')]=function(_0x5baa00){logger[_0xb531('0xd')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xb531('0x6')]['id'],this[_0xb531('0x5')]['id']);if(_['isNil'](this['realtime'][_0xb531('0xe')][this[_0xb531('0x5')]['id']])){logger[_0xb531('0xd')](_0xb531('0xf'),this['squeue']['id'],this[_0xb531('0x5')]['id']);setTimeout(this['push'][_0xb531('0x9')](this),0x3e8);}else{if(this[_0xb531('0x3')]['forcedOwnership']||util[_0xb531('0x10')](this[_0xb531('0x6')]['id'],this['realtime'][_0xb531('0xe')][this[_0xb531('0x5')]['id']],this[_0xb531('0x6')][_0xb531('0x11')],![])){this['realtime'][_0xb531('0xe')][this[_0xb531('0x5')]['id']][_0xb531('0x12')]=!![];this[_0xb531('0x13')][_0xb531('0xe')][this[_0xb531('0x5')]['id']]['busyQueue']=undefined;util[_0xb531('0x14')](this[_0xb531('0x4')],this[_0xb531('0x6')]['id'],this[_0xb531('0x13')]['agents'][this[_0xb531('0x5')]['id']],null,this[_0xb531('0x3')]);util[_0xb531('0x15')](this['squeue']['id'],this[_0xb531('0x13')][_0xb531('0xe')][this['agent']['id']],_0xb531('0x16')+(this[_0xb531('0x3')][_0xb531('0x17')]?_0xb531('0x18'):''));}else{logger['info'](_0xb531('0x19'),this[_0xb531('0x6')]['id'],this[_0xb531('0x5')]['id']);setTimeout(this[_0xb531('0x7')][_0xb531('0x9')](this),0x3e8);}}};Agent[_0xb531('0xc')][_0xb531('0xa')]=function(_0x1c366e){if(_['isNil'](this[_0xb531('0x13')][_0xb531('0xe')][this[_0xb531('0x5')]['id']])){return logger[_0xb531('0xd')](_0xb531('0xf'),this[_0xb531('0x6')]['id'],this[_0xb531('0x5')]['id']);}else{logger[_0xb531('0xd')](_0xb531('0x1a'),this[_0xb531('0x6')]['id'],this[_0xb531('0x5')]['id']);util['hideNotification'](this[_0xb531('0x4')],this[_0xb531('0x6')]['id'],this['realtime']['agents'][this[_0xb531('0x5')]['id']],null,this[_0xb531('0x3')]);this[_0xb531('0x13')][_0xb531('0xe')][this['agent']['id']]['busy']=![];this[_0xb531('0x13')]['agents'][this[_0xb531('0x5')]['id']]['busyQueue']=undefined;util[_0xb531('0x15')](this[_0xb531('0x6')]['id'],this[_0xb531('0x13')][_0xb531('0xe')][this[_0xb531('0x5')]['id']],_0x1c366e?_0xb531('0x1b'):'TIMEOUT');}if(!_0x1c366e){setTimeout(this[_0xb531('0x7')][_0xb531('0x9')](this),0x3e8);}};function agent(_0x1300b3,_0x110a14,_0x3d8f7f,_0x25a7ff){return new Agent(_0x1300b3,_0x110a14,_0x3d8f7f,_0x25a7ff);}module[_0xb531('0x1c')]=agent;
\ No newline at end of file
+var _0x7dc8=['TIMEOUT','exports','lodash','./util','../../../../../config/logger','squeue','agent','realtime','routing','push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','forcedOwnership','isAgentAvailable','busyQueue','showNotification','notificationId','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','writeLog','STOP'];(function(_0x5dd79e,_0x3f6b51){var _0x2216cf=function(_0x579a72){while(--_0x579a72){_0x5dd79e['push'](_0x5dd79e['shift']());}};_0x2216cf(++_0x3f6b51);}(_0x7dc8,0x65));var _0x87dc=function(_0x293370,_0x368589){_0x293370=_0x293370-0x0;var _0x5a87af=_0x7dc8[_0x293370];return _0x5a87af;};'use strict';var _=require(_0x87dc('0x0'));var uuid=require('uuid');var util=require(_0x87dc('0x1'));var logger=require(_0x87dc('0x2'))('routing');var Agent=function(_0x4d90e2,_0x51060f,_0x5b6849,_0x122a63){this['notificationId']=uuid['v4']();this[_0x87dc('0x3')]=_0x4d90e2;this[_0x87dc('0x4')]=_0x51060f;this[_0x87dc('0x5')]=_0x5b6849;this[_0x87dc('0x6')]=_0x122a63;this[_0x87dc('0x3')][_0x87dc('0x7')](this[_0x87dc('0x8')]['bind'](this),this['handleTimeout'][_0x87dc('0x9')](this));this['squeue']['on'](_0x87dc('0xa'),this[_0x87dc('0xb')][_0x87dc('0x9')](this));this[_0x87dc('0x3')]['on'](_0x87dc('0xc'),this[_0x87dc('0xd')][_0x87dc('0x9')](this));};Agent['prototype']['push']=function(){this[_0x87dc('0x3')][_0x87dc('0x7')](this[_0x87dc('0x8')]['bind'](this),this['handleTimeout'][_0x87dc('0x9')](this));};Agent[_0x87dc('0xe')][_0x87dc('0xd')]=function(){this['handleTimeout'](!![]);};Agent[_0x87dc('0xe')][_0x87dc('0x8')]=function(_0x2c6fa1){logger[_0x87dc('0xf')](_0x87dc('0x10'),this[_0x87dc('0x3')]['id'],this[_0x87dc('0x4')]['id']);if(_[_0x87dc('0x11')](this['realtime'][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']])){logger[_0x87dc('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x87dc('0x4')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}else{if(this[_0x87dc('0x6')][_0x87dc('0x13')]||util[_0x87dc('0x14')](this[_0x87dc('0x3')]['id'],this['realtime'][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']],this['squeue']['channel'],![])){this[_0x87dc('0x5')][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']]['busy']=!![];this['realtime']['agents'][this[_0x87dc('0x4')]['id']][_0x87dc('0x15')]=undefined;util[_0x87dc('0x16')](this[_0x87dc('0x17')],this['squeue']['id'],this[_0x87dc('0x5')][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']],null,this['routing']);util['writeLog'](this[_0x87dc('0x3')]['id'],this['realtime']['agents'][this['agent']['id']],_0x87dc('0x18')+(this[_0x87dc('0x6')][_0x87dc('0x13')]?_0x87dc('0x19'):''));}else{logger[_0x87dc('0xf')](_0x87dc('0x1a'),this[_0x87dc('0x3')]['id'],this[_0x87dc('0x4')]['id']);setTimeout(this[_0x87dc('0x7')][_0x87dc('0x9')](this),0x3e8);}}};Agent['prototype']['handleTimeout']=function(_0x3b169c){if(_[_0x87dc('0x11')](this['realtime'][_0x87dc('0x12')][this['agent']['id']])){return logger['info'](_0x87dc('0x1b'),this['squeue']['id'],this[_0x87dc('0x4')]['id']);}else{logger[_0x87dc('0xf')]('[%s][AGENT]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agent']['id']);util['hideNotification'](this[_0x87dc('0x17')],this[_0x87dc('0x3')]['id'],this[_0x87dc('0x5')]['agents'][this[_0x87dc('0x4')]['id']],null,this[_0x87dc('0x6')]);this['realtime']['agents'][this[_0x87dc('0x4')]['id']][_0x87dc('0x1c')]=![];this[_0x87dc('0x5')]['agents'][this[_0x87dc('0x4')]['id']][_0x87dc('0x15')]=undefined;util[_0x87dc('0x1d')](this[_0x87dc('0x3')]['id'],this['realtime'][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']],_0x3b169c?_0x87dc('0x1e'):_0x87dc('0x1f'));}if(!_0x3b169c){setTimeout(this[_0x87dc('0x7')]['bind'](this),0x3e8);}};function agent(_0x47cfe4,_0x3a63ce,_0x9e6ea3,_0x591081){return new Agent(_0x47cfe4,_0x3a63ce,_0x9e6ea3,_0x591081);}module[_0x87dc('0x20')]=agent;
\ No newline at end of file
index 9b8d7c0..370463e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bff=['exports','lodash','uuid','../../../../../config/logger','squeue','queue','realtime','routing','push','handleRun','bind','timeout','handleTimeout','drained','prototype','isNil','Agents','length','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel','writeLog','busyQueue','name','showNotification','notificationId','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','busy'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x6bff,0xa6));var _0xf6bf=function(_0x56d84b,_0x22b4dd){_0x56d84b=_0x56d84b-0x0;var _0x57babd=_0x6bff[_0x56d84b];return _0x57babd;};'use strict';var _=require(_0xf6bf('0x0'));var uuid=require(_0xf6bf('0x1'));var util=require('./util');var logger=require(_0xf6bf('0x2'))('routing');var Beepall=function(_0x290028,_0xd1df50,_0x3ab762,_0x14a2d8){this['notificationId']=uuid['v4']();this[_0xf6bf('0x3')]=_0x290028;this[_0xf6bf('0x4')]=_0xd1df50;this[_0xf6bf('0x5')]=_0x3ab762;this[_0xf6bf('0x6')]=_0x14a2d8;this[_0xf6bf('0x3')][_0xf6bf('0x7')](this[_0xf6bf('0x8')][_0xf6bf('0x9')](this),this['handleTimeout']['bind'](this));this['squeue']['on'](_0xf6bf('0xa'),this[_0xf6bf('0xb')][_0xf6bf('0x9')](this));this[_0xf6bf('0x3')]['on'](_0xf6bf('0xc'),this['handleDrained'][_0xf6bf('0x9')](this));};Beepall[_0xf6bf('0xd')]['push']=function(){this['squeue'][_0xf6bf('0x7')](this[_0xf6bf('0x8')]['bind'](this),this[_0xf6bf('0xb')]['bind'](this));};Beepall[_0xf6bf('0xd')]['handleDrained']=function(_0x1aed26){this[_0xf6bf('0xb')](!![]);};Beepall['prototype']['handleRun']=function(_0xfd2b28){var _0x532cb1=!![];if(!_[_0xf6bf('0xe')](this[_0xf6bf('0x4')])&&!_[_0xf6bf('0xe')](this[_0xf6bf('0x4')][_0xf6bf('0xf')])&&this[_0xf6bf('0x4')]['Agents'][_0xf6bf('0x10')]>0x0){for(var _0x3608bf=0x0,_0x14e33f;_0x3608bf<this[_0xf6bf('0x4')]['Agents'][_0xf6bf('0x10')];_0x3608bf+=0x1){_0x14e33f=this[_0xf6bf('0x4')][_0xf6bf('0xf')][_0x3608bf]['id'];if(_[_0xf6bf('0xe')](this[_0xf6bf('0x5')]['agents'][_0x14e33f])){logger[_0xf6bf('0x11')](_0xf6bf('0x12'),this[_0xf6bf('0x3')]['id'],_0x14e33f);}else{if(util[_0xf6bf('0x13')](this[_0xf6bf('0x3')]['id'],this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x14e33f],this[_0xf6bf('0x3')][_0xf6bf('0x15')],!![])){_0x532cb1=![];util[_0xf6bf('0x16')](this[_0xf6bf('0x3')]['id'],this[_0xf6bf('0x5')]['agents'][_0x14e33f],'RINGING');this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x14e33f]['busy']=!![];this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x14e33f][_0xf6bf('0x17')]=this['queue'][_0xf6bf('0x18')];util[_0xf6bf('0x19')](this[_0xf6bf('0x1a')],this[_0xf6bf('0x3')]['id'],this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x14e33f],this[_0xf6bf('0x4')],this['routing']);}}}if(_0x532cb1){logger[_0xf6bf('0x11')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0xf6bf('0x3')]['id']);setTimeout(this[_0xf6bf('0x7')][_0xf6bf('0x9')](this),0x3e8);}}else{logger[_0xf6bf('0x11')](_0xf6bf('0x1b'),this['squeue']['id']);setTimeout(this[_0xf6bf('0x7')][_0xf6bf('0x9')](this),0x3e8);}};Beepall[_0xf6bf('0xd')]['handleTimeout']=function(_0x5bc7cc){if(!_[_0xf6bf('0xe')](this[_0xf6bf('0x4')])&&!_[_0xf6bf('0xe')](this[_0xf6bf('0x4')][_0xf6bf('0xf')])){for(var _0x25f742=0x0,_0x4173d8;_0x25f742<this[_0xf6bf('0x4')][_0xf6bf('0xf')][_0xf6bf('0x10')];_0x25f742+=0x1){_0x4173d8=this[_0xf6bf('0x4')][_0xf6bf('0xf')][_0x25f742]['id'];if(_[_0xf6bf('0xe')](this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x4173d8])){logger[_0xf6bf('0x11')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xf6bf('0x3')]['id'],_0x4173d8);}else{util[_0xf6bf('0x1c')](this['notificationId'],this['squeue']['id'],this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x4173d8],this['queue'],this[_0xf6bf('0x6')]);util[_0xf6bf('0x16')](this[_0xf6bf('0x3')]['id'],this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x4173d8],_0x5bc7cc?_0xf6bf('0x1d'):_0xf6bf('0x1e'));this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x4173d8][_0xf6bf('0x1f')]=![];this[_0xf6bf('0x5')][_0xf6bf('0x14')][_0x4173d8]['busyQueue']=undefined;}}}if(!_0x5bc7cc){setTimeout(this['push']['bind'](this),0x3e8);}};function beepall(_0x4a379b,_0x554f4b,_0x3b5238,_0xbe6360){return new Beepall(_0x4a379b,_0x554f4b,_0x3b5238,_0xbe6360);}module[_0xf6bf('0x20')]=beepall;
\ No newline at end of file
+var _0x78d3=['info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','writeLog','RINGING','busy','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','handleRun','handleTimeout','bind','timeout','drained','handleDrained','push','prototype','isNil','Agents','length','agents'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x78d3,0x73));var _0x378d=function(_0x51a72c,_0x2143d7){_0x51a72c=_0x51a72c-0x0;var _0x262c9b=_0x78d3[_0x51a72c];return _0x262c9b;};'use strict';var _=require(_0x378d('0x0'));var uuid=require(_0x378d('0x1'));var util=require(_0x378d('0x2'));var logger=require(_0x378d('0x3'))(_0x378d('0x4'));var Beepall=function(_0x1d87b8,_0x367f93,_0x29273c,_0x52f934){this[_0x378d('0x5')]=uuid['v4']();this[_0x378d('0x6')]=_0x1d87b8;this[_0x378d('0x7')]=_0x367f93;this[_0x378d('0x8')]=_0x29273c;this[_0x378d('0x4')]=_0x52f934;this['squeue']['push'](this[_0x378d('0x9')]['bind'](this),this[_0x378d('0xa')][_0x378d('0xb')](this));this[_0x378d('0x6')]['on'](_0x378d('0xc'),this[_0x378d('0xa')][_0x378d('0xb')](this));this['squeue']['on'](_0x378d('0xd'),this[_0x378d('0xe')][_0x378d('0xb')](this));};Beepall['prototype'][_0x378d('0xf')]=function(){this['squeue']['push'](this[_0x378d('0x9')][_0x378d('0xb')](this),this['handleTimeout'][_0x378d('0xb')](this));};Beepall[_0x378d('0x10')][_0x378d('0xe')]=function(_0x54ad14){this[_0x378d('0xa')](!![]);};Beepall['prototype'][_0x378d('0x9')]=function(_0x331f32){var _0x1f2f89=!![];if(!_[_0x378d('0x11')](this[_0x378d('0x7')])&&!_['isNil'](this[_0x378d('0x7')]['Agents'])&&this[_0x378d('0x7')][_0x378d('0x12')][_0x378d('0x13')]>0x0){for(var _0x254ff5=0x0,_0x300b21;_0x254ff5<this['queue'][_0x378d('0x12')]['length'];_0x254ff5+=0x1){_0x300b21=this[_0x378d('0x7')][_0x378d('0x12')][_0x254ff5]['id'];if(_[_0x378d('0x11')](this[_0x378d('0x8')][_0x378d('0x14')][_0x300b21])){logger[_0x378d('0x15')](_0x378d('0x16'),this['squeue']['id'],_0x300b21);}else{if(util['isAgentAvailable'](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x300b21],this[_0x378d('0x6')][_0x378d('0x17')],!![])){_0x1f2f89=![];util[_0x378d('0x18')](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x300b21],_0x378d('0x19'));this['realtime'][_0x378d('0x14')][_0x300b21][_0x378d('0x1a')]=!![];this[_0x378d('0x8')]['agents'][_0x300b21][_0x378d('0x1b')]=this[_0x378d('0x7')][_0x378d('0x1c')];util['showNotification'](this[_0x378d('0x5')],this[_0x378d('0x6')]['id'],this[_0x378d('0x8')][_0x378d('0x14')][_0x300b21],this[_0x378d('0x7')],this[_0x378d('0x4')]);}}}if(_0x1f2f89){logger[_0x378d('0x15')](_0x378d('0x1d'),this['squeue']['id']);setTimeout(this['push'][_0x378d('0xb')](this),0x3e8);}}else{logger['info'](_0x378d('0x1e'),this[_0x378d('0x6')]['id']);setTimeout(this[_0x378d('0xf')][_0x378d('0xb')](this),0x3e8);}};Beepall['prototype']['handleTimeout']=function(_0x3de1af){if(!_['isNil'](this['queue'])&&!_['isNil'](this[_0x378d('0x7')]['Agents'])){for(var _0x4d1de5=0x0,_0x217ffc;_0x4d1de5<this['queue'][_0x378d('0x12')][_0x378d('0x13')];_0x4d1de5+=0x1){_0x217ffc=this[_0x378d('0x7')]['Agents'][_0x4d1de5]['id'];if(_[_0x378d('0x11')](this[_0x378d('0x8')][_0x378d('0x14')][_0x217ffc])){logger[_0x378d('0x15')](_0x378d('0x16'),this['squeue']['id'],_0x217ffc);}else{util[_0x378d('0x1f')](this[_0x378d('0x5')],this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x217ffc],this[_0x378d('0x7')],this['routing']);util['writeLog'](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x217ffc],_0x3de1af?_0x378d('0x20'):'TIMEOUT');this['realtime']['agents'][_0x217ffc][_0x378d('0x1a')]=![];this[_0x378d('0x8')][_0x378d('0x14')][_0x217ffc][_0x378d('0x1b')]=undefined;}}}if(!_0x3de1af){setTimeout(this[_0x378d('0xf')]['bind'](this),0x3e8);}};function beepall(_0x3989f0,_0x128d20,_0x3a4430,_0x59917d){return new Beepall(_0x3989f0,_0x128d20,_0x3a4430,_0x59917d);}module[_0x378d('0x21')]=beepall;
\ No newline at end of file
index 05777ec..e389337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b2=['./beepall','./agent','exports','./rrmemory'];(function(_0xdeefbd,_0x9e1b3d){var _0x4ff63f=function(_0x4b51f9){while(--_0x4b51f9){_0xdeefbd['push'](_0xdeefbd['shift']());}};_0x4ff63f(++_0x9e1b3d);}(_0xb8b2,0x132));var _0x2b8b=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xb8b2[_0x4c7fb5];return _0x2e10ac;};'use strict';module[_0x2b8b('0x0')]={'rrmemory':require(_0x2b8b('0x1')),'beepall':require(_0x2b8b('0x2')),'agent':require(_0x2b8b('0x3'))};
\ No newline at end of file
+var _0x5f33=['./agent','./rrmemory'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f33,0x1e3));var _0x35f3=function(_0x5bc0f6,_0x372a6b){_0x5bc0f6=_0x5bc0f6-0x0;var _0x50ef27=_0x5f33[_0x5bc0f6];return _0x50ef27;};'use strict';module['exports']={'rrmemory':require(_0x35f3('0x0')),'beepall':require('./beepall'),'agent':require(_0x35f3('0x1'))};
\ No newline at end of file
index 412991a..bf9ae6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x678d=['mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','busy','busyQueue','name','queue','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','push','bind','handleTimeout','module','timeout','handleDrained','prototype','handleRun','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','intervals','done'];(function(_0x5c04c9,_0x411697){var _0x4bae3b=function(_0xd784c3){while(--_0xd784c3){_0x5c04c9['push'](_0x5c04c9['shift']());}};_0x4bae3b(++_0x411697);}(_0x678d,0xc3));var _0xd678=function(_0x25214b,_0x5800bb){_0x25214b=_0x25214b-0x0;var _0x12a93c=_0x678d[_0x25214b];return _0x12a93c;};'use strict';var rr=require('rr');var _=require(_0xd678('0x0'));var uuid=require('uuid');var util=require(_0xd678('0x1'));var logger=require(_0xd678('0x2'))(_0xd678('0x3'));var RRMemory=function(_0x23dfde,_0x3d69d8,_0x13bac9,_0x434687){this[_0xd678('0x4')]=uuid['v4']();this[_0xd678('0x5')]=_0x23dfde;this['queue']=_0x3d69d8;this[_0xd678('0x6')]=_0x13bac9;this['routing']=_0x434687;this['intervals']={};this[_0xd678('0x5')][_0xd678('0x7')](this['handleRun'][_0xd678('0x8')](this),this[_0xd678('0x9')][_0xd678('0x8')](this),this[_0xd678('0xa')]);this[_0xd678('0x5')]['on'](_0xd678('0xb'),this[_0xd678('0x9')]['bind'](this));this[_0xd678('0x5')]['on']('drained',this[_0xd678('0xc')]['bind'](this));};RRMemory[_0xd678('0xd')][_0xd678('0x7')]=function(){this[_0xd678('0x5')][_0xd678('0x7')](this[_0xd678('0xe')][_0xd678('0x8')](this),this[_0xd678('0x9')][_0xd678('0x8')](this));};RRMemory[_0xd678('0xd')]['handleDrained']=function(_0x422f6b){this[_0xd678('0x9')](!![]);};RRMemory[_0xd678('0xd')]['handleCheckReject']=function(_0x501369){if(util['isAgentAvailable'](this[_0xd678('0x5')]['id'],this[_0xd678('0x6')]['agents'][this[_0xd678('0xf')]],this[_0xd678('0x5')][_0xd678('0x10')],!![])){logger[_0xd678('0x11')](_0xd678('0x12'),this['squeue']['id'],this[_0xd678('0xf')]);clearInterval(this[_0xd678('0x13')][this[_0xd678('0xf')]]);_0x501369[_0xd678('0x14')]();setTimeout(this[_0xd678('0x7')][_0xd678('0x8')](this),0x3e8);}};RRMemory['prototype'][_0xd678('0xe')]=function(_0x33ab89){this[_0xd678('0xf')]=rr(this['queue'][_0xd678('0x15')]);logger[_0xd678('0x11')](_0xd678('0x16'),this[_0xd678('0x5')]['id'],this[_0xd678('0xf')]);if(_[_0xd678('0x17')](this[_0xd678('0x6')][_0xd678('0x18')][this[_0xd678('0xf')]])){logger[_0xd678('0x11')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xd678('0x5')]['id'],this[_0xd678('0xf')]);_0x33ab89[_0xd678('0x14')]();setTimeout(this[_0xd678('0x7')][_0xd678('0x8')](this),0x3e8);}else{if(util['isAgentAvailable'](this['squeue']['id'],this['realtime'][_0xd678('0x18')][this['agentId']],this['squeue'][_0xd678('0x10')],!![])){this[_0xd678('0x6')]['agents'][this[_0xd678('0xf')]][_0xd678('0x19')]=!![];this[_0xd678('0x6')]['agents'][this['agentId']][_0xd678('0x1a')]=this['queue'][_0xd678('0x1b')];util['showNotification'](this[_0xd678('0x4')],this[_0xd678('0x5')]['id'],this[_0xd678('0x6')][_0xd678('0x18')][this[_0xd678('0xf')]],this[_0xd678('0x1c')],this[_0xd678('0x3')]);util[_0xd678('0x1d')](this[_0xd678('0x5')]['id'],this['realtime']['agents'][this[_0xd678('0xf')]],_0xd678('0x1e'));this[_0xd678('0x13')][this[_0xd678('0xf')]]=setInterval(this[_0xd678('0x1f')][_0xd678('0x8')](this,_0x33ab89),0x3e8);}else{logger['info'](_0xd678('0x20'),this['squeue']['id'],this[_0xd678('0xf')]);_0x33ab89[_0xd678('0x14')]();setTimeout(this[_0xd678('0x7')]['bind'](this),0x3e8);}}};RRMemory[_0xd678('0xd')][_0xd678('0x9')]=function(_0x3e70a0){logger[_0xd678('0x11')](_0xd678('0x21'),this['squeue']['id'],this['agentId']);if(_[_0xd678('0x17')](this[_0xd678('0x6')]['agents'][this[_0xd678('0xf')]])){logger[_0xd678('0x11')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0xd678('0xf')]);}else{clearInterval(this[_0xd678('0x13')][this[_0xd678('0xf')]]);util[_0xd678('0x22')](this[_0xd678('0x4')],this[_0xd678('0x5')]['id'],this[_0xd678('0x6')]['agents'][this[_0xd678('0xf')]],this[_0xd678('0x1c')],this['routing']);util['writeLog'](this[_0xd678('0x5')]['id'],this[_0xd678('0x6')][_0xd678('0x18')][this[_0xd678('0xf')]],_0xd678('0x23'));this[_0xd678('0x6')][_0xd678('0x18')][this[_0xd678('0xf')]][_0xd678('0x19')]=![];this[_0xd678('0x6')][_0xd678('0x18')][this[_0xd678('0xf')]][_0xd678('0x1a')]=undefined;}if(!_0x3e70a0){setTimeout(this['push'][_0xd678('0x8')](this),0x3e8);}};function rrmemory(_0x1e6106,_0x458fa5,_0x25296b,_0x232e4d){return new RRMemory(_0x1e6106,_0x458fa5,_0x25296b,_0x232e4d);}module['exports']=rrmemory;
\ No newline at end of file
+var _0xf9d3=['realtime','intervals','handleRun','bind','module','timeout','drained','handleDrained','push','handleTimeout','prototype','handleCheckReject','isAgentAvailable','agents','agentId','channel','done','info','isNil','busy','notificationId','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','writeLog','busyQueue','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','queue'];(function(_0x38bc44,_0x5f3dbf){var _0x56cb18=function(_0x41aa3e){while(--_0x41aa3e){_0x38bc44['push'](_0x38bc44['shift']());}};_0x56cb18(++_0x5f3dbf);}(_0xf9d3,0x119));var _0x3f9d=function(_0x242240,_0x5d1bfa){_0x242240=_0x242240-0x0;var _0x203ea7=_0xf9d3[_0x242240];return _0x203ea7;};'use strict';var rr=require('rr');var _=require(_0x3f9d('0x0'));var uuid=require(_0x3f9d('0x1'));var util=require(_0x3f9d('0x2'));var logger=require(_0x3f9d('0x3'))(_0x3f9d('0x4'));var RRMemory=function(_0x4aca37,_0x4e42a4,_0x1ce72a,_0xa709af){this['notificationId']=uuid['v4']();this[_0x3f9d('0x5')]=_0x4aca37;this[_0x3f9d('0x6')]=_0x4e42a4;this[_0x3f9d('0x7')]=_0x1ce72a;this[_0x3f9d('0x4')]=_0xa709af;this[_0x3f9d('0x8')]={};this['squeue']['push'](this[_0x3f9d('0x9')][_0x3f9d('0xa')](this),this['handleTimeout'][_0x3f9d('0xa')](this),this[_0x3f9d('0xb')]);this[_0x3f9d('0x5')]['on'](_0x3f9d('0xc'),this['handleTimeout'][_0x3f9d('0xa')](this));this[_0x3f9d('0x5')]['on'](_0x3f9d('0xd'),this[_0x3f9d('0xe')][_0x3f9d('0xa')](this));};RRMemory['prototype'][_0x3f9d('0xf')]=function(){this[_0x3f9d('0x5')][_0x3f9d('0xf')](this[_0x3f9d('0x9')][_0x3f9d('0xa')](this),this[_0x3f9d('0x10')][_0x3f9d('0xa')](this));};RRMemory['prototype']['handleDrained']=function(_0x3e55c9){this[_0x3f9d('0x10')](!![]);};RRMemory[_0x3f9d('0x11')][_0x3f9d('0x12')]=function(_0x259d63){if(util[_0x3f9d('0x13')](this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this[_0x3f9d('0x5')][_0x3f9d('0x16')],!![])){logger['info']('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x3f9d('0x5')]['id'],this['agentId']);clearInterval(this[_0x3f9d('0x8')][this[_0x3f9d('0x15')]]);_0x259d63[_0x3f9d('0x17')]();setTimeout(this[_0x3f9d('0xf')][_0x3f9d('0xa')](this),0x3e8);}};RRMemory[_0x3f9d('0x11')]['handleRun']=function(_0x4799e8){this[_0x3f9d('0x15')]=rr(this[_0x3f9d('0x6')]['mapAgentsId']);logger[_0x3f9d('0x18')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);if(_[_0x3f9d('0x19')](this[_0x3f9d('0x7')]['agents'][this['agentId']])){logger[_0x3f9d('0x18')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);_0x4799e8['done']();setTimeout(this['push']['bind'](this),0x3e8);}else{if(util[_0x3f9d('0x13')](this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this[_0x3f9d('0x5')][_0x3f9d('0x16')],!![])){this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]][_0x3f9d('0x1a')]=!![];this['realtime'][_0x3f9d('0x14')][this[_0x3f9d('0x15')]]['busyQueue']=this[_0x3f9d('0x6')]['name'];util['showNotification'](this[_0x3f9d('0x1b')],this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this[_0x3f9d('0x6')],this[_0x3f9d('0x4')]);util['writeLog'](this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this['agentId']],_0x3f9d('0x1c'));this[_0x3f9d('0x8')][this[_0x3f9d('0x15')]]=setInterval(this[_0x3f9d('0x12')][_0x3f9d('0xa')](this,_0x4799e8),0x3e8);}else{logger[_0x3f9d('0x18')](_0x3f9d('0x1d'),this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);_0x4799e8[_0x3f9d('0x17')]();setTimeout(this['push'][_0x3f9d('0xa')](this),0x3e8);}}};RRMemory['prototype'][_0x3f9d('0x10')]=function(_0xf1407d){logger[_0x3f9d('0x18')](_0x3f9d('0x1e'),this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);if(_['isNil'](this[_0x3f9d('0x7')][_0x3f9d('0x14')][this['agentId']])){logger[_0x3f9d('0x18')](_0x3f9d('0x1f'),this[_0x3f9d('0x5')]['id'],this['agentId']);}else{clearInterval(this[_0x3f9d('0x8')][this['agentId']]);util[_0x3f9d('0x20')](this[_0x3f9d('0x1b')],this['squeue']['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this['queue'],this[_0x3f9d('0x4')]);util[_0x3f9d('0x21')](this['squeue']['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],'TIMEOUT');this['realtime'][_0x3f9d('0x14')][this[_0x3f9d('0x15')]][_0x3f9d('0x1a')]=![];this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]][_0x3f9d('0x22')]=undefined;}if(!_0xf1407d){setTimeout(this[_0x3f9d('0xf')][_0x3f9d('0xa')](this),0x3e8);}};function rrmemory(_0x5ca68d,_0x32c53f,_0x176f62,_0x524a89){return new RRMemory(_0x5ca68d,_0x32c53f,_0x176f62,_0x524a89);}module[_0x3f9d('0x23')]=rrmemory;
\ No newline at end of file
index 0284dfe..c5d450a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['../../../../../config/logger','redis','defaults','localhost','emit','user:%s','name','user:save','split','\x20interaction','account','notificationSound','notificationShake','queue','body','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','format','[%s][QUEUE]\x20%s','notification:%s','save','remove','info','isAgentAvailable','busy','BUSY','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','showNotification','writeLog','lodash','util','ioredis','../../../../../config/environment'];(function(_0x2d72b7,_0x583095){var _0x9b5296=function(_0x557374){while(--_0x557374){_0x2d72b7['push'](_0x2d72b7['shift']());}};_0x9b5296(++_0x583095);}(_0x5d17,0x114));var _0x75d1=function(_0x2e0bed,_0x24b28d){_0x2e0bed=_0x2e0bed-0x0;var _0x45e74e=_0x5d17[_0x2e0bed];return _0x45e74e;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var utils=require('../utils');var Mustache=require('mustache');var Redis=require(_0x75d1('0x2'));var config=require(_0x75d1('0x3'));var logger=require(_0x75d1('0x4'))('routing');config[_0x75d1('0x5')]=_[_0x75d1('0x6')](config[_0x75d1('0x5')],{'host':_0x75d1('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x75d1('0x5')]));function emit(_0x116a51,_0x5c957a,_0x1ee61b){io['to'](_0x116a51)[_0x75d1('0x8')](_0x5c957a,_0x1ee61b);}function sendNotification(_0x105607,_0xf9f8e,_0x5acfa0,_0x4cf632,_0x40df40,_0x4a3bb3){io['to'](util['format'](_0x75d1('0x9'),_0x4cf632[_0x75d1('0xa')]))['emit'](_0x75d1('0xb'),_0x4cf632);var _0x3d7e39=_0x4a3bb3||{};var _0x28b9b4=_0x5acfa0[_0x75d1('0xc')]('.');var _0x6c1265={'uniqueid':_0xf9f8e,'channel':_0x28b9b4[0x0],'id':_0x28b9b4[0x1],'title':_0x28b9b4[0x0]+_0x75d1('0xd'),'interactionId':_0x28b9b4[0x2],'queue':_0x40df40?_0x40df40['name']:null,'sound':_0x3d7e39[_0x75d1('0xe')][_0x75d1('0xf')],'shake':_0x3d7e39[_0x75d1('0xe')][_0x75d1('0x10')]};try{if(!_0x3d7e39['body']){_0x3d7e39['body']={};}if(_0x40df40){_0x3d7e39['body'][_0x75d1('0x11')]=_0x40df40;}else if(_0x3d7e39[_0x75d1('0x12')][_0x75d1('0x11')]){delete _0x3d7e39['body'][_0x75d1('0x11')];}_0x6c1265[_0x75d1('0x13')]=utils[_0x75d1('0x14')](_0x3d7e39[_0x75d1('0xe')][_0x75d1('0x15')],_0x3d7e39);}catch(_0x39a26b){_0x6c1265[_0x75d1('0x13')]=_0x75d1('0x16');logger[_0x75d1('0x17')](util[_0x75d1('0x18')](_0x75d1('0x19'),_0xf9f8e,_0x39a26b['message']));}io['to'](util['format'](_0x75d1('0x9'),_0x4cf632[_0x75d1('0xa')]))['emit'](util[_0x75d1('0x18')](_0x75d1('0x1a'),_0x105607?_0x75d1('0x1b'):_0x75d1('0x1c')),_0x6c1265);}function writeLog(_0xa42dbe,_0xac6a24,_0x51d3b0){return logger[_0x75d1('0x1d')](util[_0x75d1('0x18')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0xa42dbe,_0xac6a24[_0x75d1('0xa')],_0x51d3b0));}exports[_0x75d1('0x1e')]=function(_0x526f6c,_0x2c0c21,_0x5e70ec,_0x3a85c0){if(_0x2c0c21[_0x75d1('0x1f')]){writeLog(_0x526f6c,_0x2c0c21,_0x75d1('0x20'));return![];}if(!_0x2c0c21['online']){writeLog(_0x526f6c,_0x2c0c21,'OFFLINE');return![];}if(_0x2c0c21[_0x5e70ec+_0x75d1('0x21')]){writeLog(_0x526f6c,_0x2c0c21,_0x75d1('0x22'));return![];}if(_0x3a85c0&&_0x2c0c21[_0x75d1('0x23')](_0x5e70ec+_0x75d1('0x24'))&&_0x2c0c21['hasOwnProperty'](_0x5e70ec+_0x75d1('0x25'))){if(_0x2c0c21[_0x5e70ec+_0x75d1('0x24')]>0x0&&_0x2c0c21[_0x5e70ec+_0x75d1('0x25')]>=_0x2c0c21[_0x5e70ec+'Capacity']){writeLog(_0x526f6c,_0x2c0c21,_0x5e70ec['toUpperCase']()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x75d1('0x26')]=function(_0x30d9f3,_0x45c182,_0x468bf0,_0x38653d,_0x519ceb){return sendNotification(!![],_0x30d9f3,_0x45c182,_0x468bf0,_0x38653d,_0x519ceb);};exports['hideNotification']=function(_0x410e16,_0x197f52,_0x4967b5,_0x2408b6,_0x5aa4fa){return sendNotification(![],_0x410e16,_0x197f52,_0x4967b5,_0x2408b6,_0x5aa4fa);};exports[_0x75d1('0x27')]=writeLog;
\ No newline at end of file
+var _0x2a07=['socket.io-emitter','emit','format','name','user:save','\x20interaction','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','error','[%s][QUEUE]\x20%s','user:%s','notification:%s','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy','BUSY','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/logger','routing','redis','defaults','localhost'];(function(_0x36b582,_0x1417e9){var _0x372e99=function(_0x48bf30){while(--_0x48bf30){_0x36b582['push'](_0x36b582['shift']());}};_0x372e99(++_0x1417e9);}(_0x2a07,0x74));var _0x72a0=function(_0x4e7f3f,_0x5c57da){_0x4e7f3f=_0x4e7f3f-0x0;var _0x441fd2=_0x2a07[_0x4e7f3f];return _0x441fd2;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var utils=require(_0x72a0('0x2'));var Mustache=require(_0x72a0('0x3'));var Redis=require(_0x72a0('0x4'));var config=require('../../../../../config/environment');var logger=require(_0x72a0('0x5'))(_0x72a0('0x6'));config[_0x72a0('0x7')]=_[_0x72a0('0x8')](config[_0x72a0('0x7')],{'host':_0x72a0('0x9'),'port':0x18eb});var io=require(_0x72a0('0xa'))(new Redis(config[_0x72a0('0x7')]));function emit(_0x193e3b,_0x287b06,_0x21c819){io['to'](_0x193e3b)[_0x72a0('0xb')](_0x287b06,_0x21c819);}function sendNotification(_0x22270e,_0x1d32e9,_0x55b3e9,_0x2bc45b,_0x5c1d1e,_0x169dc2){io['to'](util[_0x72a0('0xc')]('user:%s',_0x2bc45b[_0x72a0('0xd')]))[_0x72a0('0xb')](_0x72a0('0xe'),_0x2bc45b);var _0x44d7cf=_0x169dc2||{};var _0x975c27=_0x55b3e9['split']('.');var _0x130797={'uniqueid':_0x1d32e9,'channel':_0x975c27[0x0],'id':_0x975c27[0x1],'title':_0x975c27[0x0]+_0x72a0('0xf'),'interactionId':_0x975c27[0x2],'queue':_0x5c1d1e?_0x5c1d1e[_0x72a0('0xd')]:null,'sound':_0x44d7cf[_0x72a0('0x10')][_0x72a0('0x11')],'shake':_0x44d7cf[_0x72a0('0x10')][_0x72a0('0x12')]};try{if(!_0x44d7cf['body']){_0x44d7cf['body']={};}if(_0x5c1d1e){_0x44d7cf[_0x72a0('0x13')][_0x72a0('0x14')]=_0x5c1d1e;}else if(_0x44d7cf[_0x72a0('0x13')][_0x72a0('0x14')]){delete _0x44d7cf[_0x72a0('0x13')][_0x72a0('0x14')];}_0x130797['msg']=utils[_0x72a0('0x15')](_0x44d7cf[_0x72a0('0x10')][_0x72a0('0x16')],_0x44d7cf);}catch(_0xb7e22d){_0x130797[_0x72a0('0x17')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x72a0('0x18')](util[_0x72a0('0xc')](_0x72a0('0x19'),_0x1d32e9,_0xb7e22d['message']));}io['to'](util[_0x72a0('0xc')](_0x72a0('0x1a'),_0x2bc45b[_0x72a0('0xd')]))[_0x72a0('0xb')](util['format'](_0x72a0('0x1b'),_0x22270e?'save':_0x72a0('0x1c')),_0x130797);}function writeLog(_0x315413,_0xde058c,_0x5c7479){return logger[_0x72a0('0x1d')](util[_0x72a0('0xc')](_0x72a0('0x1e'),_0x315413,_0xde058c[_0x72a0('0xd')],_0x5c7479));}exports['isAgentAvailable']=function(_0x38a7ba,_0x390464,_0x1ddd54,_0x23b918){if(_0x390464[_0x72a0('0x1f')]){writeLog(_0x38a7ba,_0x390464,_0x72a0('0x20'));return![];}if(!_0x390464['online']){writeLog(_0x38a7ba,_0x390464,'OFFLINE');return![];}if(_0x390464[_0x1ddd54+_0x72a0('0x21')]){writeLog(_0x38a7ba,_0x390464,_0x72a0('0x22'));return![];}if(_0x23b918&&_0x390464[_0x72a0('0x23')](_0x1ddd54+_0x72a0('0x24'))&&_0x390464[_0x72a0('0x23')](_0x1ddd54+_0x72a0('0x25'))){if(_0x390464[_0x1ddd54+_0x72a0('0x24')]>0x0&&_0x390464[_0x1ddd54+_0x72a0('0x25')]>=_0x390464[_0x1ddd54+_0x72a0('0x24')]){writeLog(_0x38a7ba,_0x390464,_0x1ddd54[_0x72a0('0x26')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x72a0('0x27')]=function(_0x553641,_0xc22d18,_0x2928f6,_0x1773ea,_0x177a3a){return sendNotification(!![],_0x553641,_0xc22d18,_0x2928f6,_0x1773ea,_0x177a3a);};exports[_0x72a0('0x28')]=function(_0x12eda2,_0x23c96a,_0x916733,_0x4ba037,_0x41efc1){return sendNotification(![],_0x12eda2,_0x23c96a,_0x916733,_0x4ba037,_0x41efc1);};exports[_0x72a0('0x29')]=writeLog;
\ No newline at end of file
index 868ec3f..9964c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf53f=['./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','map','info','next','getMustacheRender','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','lodash'];(function(_0x2f7ccd,_0x17589f){var _0x614602=function(_0x38467d){while(--_0x38467d){_0x2f7ccd['push'](_0x2f7ccd['shift']());}};_0x614602(++_0x17589f);}(_0xf53f,0x8d));var _0xff53=function(_0x4b0d89,_0xf5cd19){_0x4b0d89=_0x4b0d89-0x0;var _0x37a81a=_0xf53f[_0x4b0d89];return _0x37a81a;};'use strict';var schema=require(_0xff53('0x0'));var sh=require(_0xff53('0x1'));var _=require(_0xff53('0x2'));var utils=require(_0xff53('0x3'));var logger=require(_0xff53('0x4'))(_0xff53('0x5'));var system=schema({'command':{'type':_0xff53('0x6'),'required':!![],'message':_0xff53('0x7')}});exports[_0xff53('0x8')]=function(_0x2077b9,_0x28dacf){return function(_0x495edc){try{var _0x54d39c={'command':_0x28dacf[0x0]};var _0x54e637=system[_0xff53('0x0')](_0x54d39c,{'typecast':!![]});if(_0x54e637['length']){logger[_0xff53('0x9')](_0xff53('0xa'),_0x2077b9,_[_0xff53('0xb')](_0x54e637,'message')['join'](',\x20'));logger[_0xff53('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2077b9);_0x495edc[_0xff53('0xd')]();}else{var _0xecf2a7=this;var _0x511667=utils[_0xff53('0xe')](_0x28dacf[0x0],this);logger[_0xff53('0xc')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x2077b9,_0x511667);sh[_0xff53('0xf')](_[_0xff53('0x10')](_0x511667),function(_0x3f784c,_0x48f3d3){logger[_0xff53('0xc')](_0xff53('0x11'),_0x2077b9,_0x3f784c);if(_0x3f784c==0x0){var _0x97617c=_0x48f3d3['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0xff53('0x12')](_0x28dacf[0x1])||_[_0xff53('0x13')](_0x28dacf[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x2077b9);_0xecf2a7['body'][_0x28dacf[0x1]]=_0x97617c;}else{logger['info'](_0xff53('0x14'),_0x2077b9,_0x28dacf[0x1],_0x97617c);_0xecf2a7[_0xff53('0x15')][_0x28dacf[0x1]]=_0x97617c;}}_0x495edc[_0xff53('0xd')]();});}}catch(_0x5561ec){logger[_0xff53('0x9')]('[%s][SYSTEM]\x20%s',_0x2077b9,_['isObject'](_0x5561ec)?JSON[_0xff53('0x16')](_0x5561ec):_0x5561ec);logger[_0xff53('0xc')](_0xff53('0x17'),_0x2077b9);_0x495edc[_0xff53('0xd')]();}};};
\ No newline at end of file
+var _0xbfc9=['isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','isObject','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','./utils','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xbfc9,0x173));var _0x9bfc=function(_0x1f21f7,_0x34eda3){_0x1f21f7=_0x1f21f7-0x0;var _0x276ed6=_0xbfc9[_0x1f21f7];return _0x276ed6;};'use strict';var schema=require(_0x9bfc('0x0'));var sh=require(_0x9bfc('0x1'));var _=require('lodash');var utils=require(_0x9bfc('0x2'));var logger=require('../../../../config/logger')(_0x9bfc('0x3'));var system=schema({'command':{'type':'string','required':!![],'message':_0x9bfc('0x4')}});exports[_0x9bfc('0x5')]=function(_0x3e57c6,_0x379fa3){return function(_0x555887){try{var _0x34b4ab={'command':_0x379fa3[0x0]};var _0x277959=system[_0x9bfc('0x0')](_0x34b4ab,{'typecast':!![]});if(_0x277959[_0x9bfc('0x6')]){logger[_0x9bfc('0x7')](_0x9bfc('0x8'),_0x3e57c6,_[_0x9bfc('0x9')](_0x277959,_0x9bfc('0xa'))[_0x9bfc('0xb')](',\x20'));logger[_0x9bfc('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x3e57c6);_0x555887[_0x9bfc('0xd')]();}else{var _0x1ce4f9=this;var _0xbe23b4=utils[_0x9bfc('0xe')](_0x379fa3[0x0],this);logger[_0x9bfc('0xc')](_0x9bfc('0xf'),_0x3e57c6,_0xbe23b4);sh['exec'](_[_0x9bfc('0x10')](_0xbe23b4),function(_0x4513d3,_0x24550a){logger[_0x9bfc('0xc')](_0x9bfc('0x11'),_0x3e57c6,_0x4513d3);if(_0x4513d3==0x0){var _0x3d5470=_0x24550a[_0x9bfc('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x9bfc('0x13')](_0x379fa3[0x1])||_[_0x9bfc('0x14')](_0x379fa3[0x1])){logger[_0x9bfc('0xc')](_0x9bfc('0x15'),_0x3e57c6);_0x1ce4f9['body'][_0x379fa3[0x1]]=_0x3d5470;}else{logger[_0x9bfc('0xc')](_0x9bfc('0x16'),_0x3e57c6,_0x379fa3[0x1],_0x3d5470);_0x1ce4f9[_0x9bfc('0x17')][_0x379fa3[0x1]]=_0x3d5470;}}_0x555887[_0x9bfc('0xd')]();});}}catch(_0x4baed5){logger[_0x9bfc('0x7')](_0x9bfc('0x8'),_0x3e57c6,_[_0x9bfc('0x18')](_0x4baed5)?JSON['stringify'](_0x4baed5):_0x4baed5);logger[_0x9bfc('0xc')](_0x9bfc('0x19'),_0x3e57c6);_0x555887[_0x9bfc('0xd')]();}};};
\ No newline at end of file
index efbb5e6..8c8c622 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa010=['validate','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','consequence','length','error','map','message','next','channel','Interaction','addTags','interaction','then','info','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20%s','stringify','finally','isObject','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next'];(function(_0x1bcc20,_0x381264){var _0x2ccf96=function(_0x3782ec){while(--_0x3782ec){_0x1bcc20['push'](_0x1bcc20['shift']());}};_0x2ccf96(++_0x381264);}(_0xa010,0x91));var _0x0a01=function(_0x5ef37b,_0x166e27){_0x5ef37b=_0x5ef37b-0x0;var _0x2a10fa=_0xa010[_0x5ef37b];return _0x2a10fa;};'use strict';var schema=require(_0x0a01('0x0'));var _=require(_0x0a01('0x1'));var rpc={'chatInteraction':require(_0x0a01('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x0a01('0x3')),'mailInteraction':require(_0x0a01('0x4')),'faxInteraction':require(_0x0a01('0x5')),'whatsappInteraction':require(_0x0a01('0x6'))};var logger=require(_0x0a01('0x7'))(_0x0a01('0x8'));var tag=schema({'tag':{'type':_0x0a01('0x9'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x0a01('0xa')]=function(_0x16f49a,_0x3c0bda,_0x8a91ef,_0x34d628){return function(_0x5aa622){try{var _0x240a6b={'tag':_0x3c0bda[0x0]};var _0x39e69d=tag[_0x0a01('0x0')](_0x240a6b,{'typecast':!![]});if(_0x39e69d[_0x0a01('0xb')]){logger[_0x0a01('0xc')]('[%s][TAG]\x20%s',_0x16f49a,_[_0x0a01('0xd')](_0x39e69d,_0x0a01('0xe'))['join'](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x16f49a);_0x5aa622[_0x0a01('0xf')]();}else{var _0x571986={'ids':[_0x3c0bda[0x0]]};if(rpc[_0x34d628[_0x0a01('0x10')]+'Interaction']){rpc[_0x34d628['channel']+_0x0a01('0x11')][_0x0a01('0x12')](_0x34d628[_0x0a01('0x13')]['id'],_0x571986)[_0x0a01('0x14')](function(_0x3788bd){logger[_0x0a01('0x15')](_0x0a01('0x16'),_0x16f49a,_0x3c0bda[0x1],_0x34d628['channel'],_0x34d628[_0x0a01('0x13')]['id']);})[_0x0a01('0x17')](function(_0x583428){logger['error'](_0x0a01('0x18'),_0x16f49a,JSON[_0x0a01('0x19')](_0x583428));logger[_0x0a01('0x15')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x16f49a);})[_0x0a01('0x1a')](function(){_0x5aa622[_0x0a01('0xf')]();});}}}catch(_0x11622e){logger['error'](_0x0a01('0x18'),_0x16f49a,_[_0x0a01('0x1b')](_0x11622e)?JSON['stringify'](_0x11622e):_0x11622e);logger['info'](_0x0a01('0x1c'),_0x16f49a);_0x5aa622[_0x0a01('0xf')]();}};};
\ No newline at end of file
+var _0xa9ad=['[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','Interaction','addTags','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','stringify','finally','next','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error'];(function(_0x14c5e6,_0x2ae8c4){var _0x25a76d=function(_0x271e98){while(--_0x271e98){_0x14c5e6['push'](_0x14c5e6['shift']());}};_0x25a76d(++_0x2ae8c4);}(_0xa9ad,0x7f));var _0xda9a=function(_0x6e4936,_0xa0f05){_0x6e4936=_0x6e4936-0x0;var _0x34ddf6=_0xa9ad[_0x6e4936];return _0x34ddf6;};'use strict';var schema=require(_0xda9a('0x0'));var _=require(_0xda9a('0x1'));var rpc={'chatInteraction':require(_0xda9a('0x2')),'openchannelInteraction':require(_0xda9a('0x3')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xda9a('0x4')),'faxInteraction':require(_0xda9a('0x5')),'whatsappInteraction':require(_0xda9a('0x6'))};var logger=require(_0xda9a('0x7'))(_0xda9a('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xda9a('0x9')}});exports[_0xda9a('0xa')]=function(_0x35784f,_0x49f57e,_0x255dca,_0x4162d4){return function(_0x1942f7){try{var _0x47bc37={'tag':_0x49f57e[0x0]};var _0x242e3b=tag[_0xda9a('0x0')](_0x47bc37,{'typecast':!![]});if(_0x242e3b[_0xda9a('0xb')]){logger[_0xda9a('0xc')](_0xda9a('0xd'),_0x35784f,_[_0xda9a('0xe')](_0x242e3b,_0xda9a('0xf'))[_0xda9a('0x10')](',\x20'));logger[_0xda9a('0x11')](_0xda9a('0x12'),_0x35784f);_0x1942f7['next']();}else{var _0x56cc74={'ids':[_0x49f57e[0x0]]};if(rpc[_0x4162d4['channel']+_0xda9a('0x13')]){rpc[_0x4162d4['channel']+_0xda9a('0x13')][_0xda9a('0x14')](_0x4162d4['interaction']['id'],_0x56cc74)['then'](function(_0x51375e){logger[_0xda9a('0x11')](_0xda9a('0x15'),_0x35784f,_0x49f57e[0x1],_0x4162d4['channel'],_0x4162d4[_0xda9a('0x16')]['id']);})[_0xda9a('0x17')](function(_0x5c2b5a){logger[_0xda9a('0xc')](_0xda9a('0xd'),_0x35784f,JSON[_0xda9a('0x18')](_0x5c2b5a));logger[_0xda9a('0x11')](_0xda9a('0x12'),_0x35784f);})[_0xda9a('0x19')](function(){_0x1942f7[_0xda9a('0x1a')]();});}}}catch(_0x1b1e75){logger[_0xda9a('0xc')](_0xda9a('0xd'),_0x35784f,_[_0xda9a('0x1b')](_0x1b1e75)?JSON[_0xda9a('0x18')](_0x1b1e75):_0x1b1e75);logger['info'](_0xda9a('0x12'),_0x35784f);_0x1942f7[_0xda9a('0x1a')]();}};};
\ No newline at end of file
index c99940f..acabb16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x1bed5a,_0x4ac2af){var _0xe715bb=function(_0x31d948){while(--_0x31d948){_0x1bed5a['push'](_0x1bed5a['shift']());}};_0xe715bb(++_0x4ac2af);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x3a4cc9,_0x2e54e1){var _0x5ae1b7=function(_0x23561c){while(--_0x23561c){_0x3a4cc9['push'](_0x3a4cc9['shift']());}};_0x5ae1b7(++_0x2e54e1);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xbaf0[_0x2b4411];return _0x8e41ef;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
index d264330..255b235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf132=['busyQueue','emit','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','end','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','server','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../lib/rule-engine','format','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflowv2','amazonlex','./interval','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Applications\x20executed','matchPath','complete','error','routing\x20is\x20empty','agent','agents','busy'];(function(_0x1b4f4f,_0x3e22ef){var _0x35e4c4=function(_0x113883){while(--_0x113883){_0x1b4f4f['push'](_0x1b4f4f['shift']());}};_0x35e4c4(++_0x3e22ef);}(_0xf132,0xd1));var _0x2f13=function(_0x53f5fa,_0x1aa52b){_0x53f5fa=_0x53f5fa-0x0;var _0x4eb717=_0xf132[_0x53f5fa];return _0x4eb717;};'use strict';var _=require('lodash');var util=require(_0x2f13('0x0'));var path=require(_0x2f13('0x1'));var fs=require('fs');var jayson=require(_0x2f13('0x2'));var BPromise=require(_0x2f13('0x3'));var uuid=require(_0x2f13('0x4'));var config=require(_0x2f13('0x5'));var logger=require(_0x2f13('0x6'))('routing');var rpc={'openchannelQueueReport':require(_0x2f13('0x7')),'mailQueueReport':require(_0x2f13('0x8')),'chatQueueReport':require(_0x2f13('0x9')),'smsQueueReport':require(_0x2f13('0xa')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x2f13('0xb'));function getId(_0x5c0aa2,_0x5293fe,_0x29c95d){return util[_0x2f13('0xc')]('%s.%s.%s',_0x5c0aa2,_0x5293fe||0x0,_0x29c95d||0x0);}function getIntervals(_0x1b952f,_0x2b21c4){var _0xaa6ed3=[];if(!_[_0x2f13('0xd')](_0x2b21c4['IntervalId'])&&!_[_0x2f13('0xd')](_0x1b952f[_0x2b21c4[_0x2f13('0xe')]])&&!_[_0x2f13('0xd')](_0x1b952f[_0x2b21c4[_0x2f13('0xe')]][_0x2f13('0xf')])){_0xaa6ed3=_[_0x2f13('0x10')](_0x1b952f[_0x2b21c4[_0x2f13('0xe')]][_0x2f13('0xf')],'interval');}else if(!_[_0x2f13('0xd')](_0x2b21c4[_0x2f13('0x11')])){_0xaa6ed3=[_0x2b21c4[_0x2f13('0x11')]];}return _0xaa6ed3;}exports[_0x2f13('0x12')]=function(_0x322c07){_0x322c07[_0x2f13('0x13')]={};return new BPromise(function(_0x360196,_0x2d6495){var _0x30bf95={'Start':function(_0x269a09){var _0x4cfa78=this;return new Promise(function(_0x5628f5,_0x4a38fe){if(_0x269a09){try{var _0xedc911=[];var _0x182b67=getId(_0x269a09[_0x2f13('0x14')],_0x269a09[_0x2f13('0x15')]?_0x269a09[_0x2f13('0x15')]['id']:0x0,_0x269a09[_0x2f13('0x16')]?_0x269a09[_0x2f13('0x16')]['id']:0x0);if(_0x269a09[_0x2f13('0x17')]&&_[_0x2f13('0x18')](_0x269a09[_0x2f13('0x17')])&&_0x269a09[_0x2f13('0x17')][_0x2f13('0x19')]){for(var _0x2ba346=0x0;_0x2ba346<_0x269a09[_0x2f13('0x17')]['length'];_0x2ba346+=0x1){var _0x10f553=_0x269a09[_0x2f13('0x17')][_0x2ba346];if(fs[_0x2f13('0x1a')](path[_0x2f13('0x1b')](__dirname,'applications',_0x10f553[_0x2f13('0x1c')]+_0x2f13('0x1d')))){var _0x487e79=[];switch(_0x10f553[_0x2f13('0x1c')][_0x2f13('0x1e')]()){case _0x2f13('0x1f'):var _0xe8b35b=_0x10f553[_0x2f13('0x20')][_0x2f13('0x21')](',');if(_0x269a09[_0x2f13('0x14')]===_0x2f13('0x22')){_0x487e79['push'](_0xe8b35b[0x0]);_0x487e79[_0x2f13('0x23')](_0xe8b35b[0x1]);_0x487e79[_0x2f13('0x23')](_0xe8b35b['slice'](0x2,_0xe8b35b[_0x2f13('0x19')])['join'](','));}else{_0x487e79['push'](_0xe8b35b[0x0]);_0x487e79[_0x2f13('0x23')](_0xe8b35b[_0x2f13('0x24')](0x1,_0xe8b35b[_0x2f13('0x19')])[_0x2f13('0x1b')](','));}break;case'dialogflow':var _0x4ebc7d=_0x10f553['appdata'][_0x2f13('0x21')](',');_0x487e79['push'](_0x4ebc7d[0x0]);_0x487e79['push'](_0x4ebc7d[0x1]);_0x487e79[_0x2f13('0x23')](_0x4ebc7d[_0x2f13('0x24')](0x2,_0x4ebc7d[_0x2f13('0x19')])[_0x2f13('0x1b')](','));break;case _0x2f13('0x25'):var _0x452f74=_0x10f553[_0x2f13('0x20')][_0x2f13('0x21')](',');_0x487e79['push'](_0x452f74[0x0]);_0x487e79[_0x2f13('0x23')](_0x452f74[0x1]);_0x487e79[_0x2f13('0x23')](_0x452f74[0x2]);_0x487e79[_0x2f13('0x23')](_0x452f74[0x3]);_0x487e79[_0x2f13('0x23')](_0x452f74['slice'](0x4,_0x452f74[_0x2f13('0x19')])[_0x2f13('0x1b')](','));break;case _0x2f13('0x26'):var _0x463f56=_0x10f553[_0x2f13('0x20')][_0x2f13('0x21')](',');_0x487e79[_0x2f13('0x23')](_0x463f56[0x0]);_0x487e79[_0x2f13('0x23')](_0x463f56[0x1]);_0x487e79[_0x2f13('0x23')](_0x463f56[0x2]);_0x487e79[_0x2f13('0x23')](_0x463f56[0x3]);_0x487e79[_0x2f13('0x23')](_0x463f56['slice'](0x4,_0x463f56['length'])[_0x2f13('0x1b')](','));break;case _0x2f13('0x15'):_0x487e79[_0x2f13('0x23')](_0x10f553[_0x2f13('0x20')]);break;case'tag':_0x487e79[_0x2f13('0x23')](_0x10f553['TagId']);_0x487e79[_0x2f13('0x23')](_0x10f553['appdata']);break;default:_0x487e79=_[_0x2f13('0xd')](_0x10f553[_0x2f13('0x20')])?[]:_0x10f553['appdata'][_0x2f13('0x21')](',');}var _0x40d12b={'id':util['format']('%s:%s:%s',_0x182b67,_0x10f553['id'],_0x10f553[_0x2f13('0x1c')]),'condition':require(_0x2f13('0x27'))['condition'](_0x182b67,getIntervals(_0x322c07[_0x2f13('0x28')],_0x10f553),_0x322c07),'consequence':require(_0x2f13('0x29')+_0x10f553[_0x2f13('0x1c')])['consequence'](_0x182b67,_0x487e79,_0x322c07,_0x269a09),'p':_0x10f553[_0x2f13('0x2a')]||0x0};logger[_0x2f13('0x2b')](_0x2f13('0x2c'),_0x40d12b['id'],_0x2f13('0x2d'),getIntervals(_0x322c07[_0x2f13('0x28')],_0x10f553)[_0x2f13('0x1b')](_0x2f13('0x2e')));_0xedc911['push'](_0x40d12b);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0x2f13('0x1b')](__dirname,_0x2f13('0x17'),_0x10f553[_0x2f13('0x1c')]+_0x2f13('0x1d')));}}_0x322c07[_0x2f13('0x13')][_0x182b67]=new RuleEngine(_0xedc911);_0x322c07[_0x2f13('0x13')][_0x182b67]['execute'](_0x269a09,function(_0x1f1f12){logger['info'](_0x2f13('0x2f'),JSON['stringify'](_0x1f1f12[_0x2f13('0x30')]));if(_0x322c07[_0x2f13('0x13')][_0x182b67]){_0x322c07[_0x2f13('0x13')][_0x182b67]['emit'](_0x2f13('0x31'));}});return _0x5628f5({'code':0xc8,'message':_0x269a09});}else{logger['info']('No\x20applications\x20to\x20execute');return _0x5628f5({'code':0xc8,'message':_0x269a09});}}catch(_0x35bf4c){logger[_0x2f13('0x32')](_0x35bf4c['stack']);return _0x4a38fe(_0x4cfa78[_0x2f13('0x32')](0x1f4,_0x35bf4c));}}return _0x4a38fe(_0x2f13('0x33'));});},'AcceptMessage':function(_0x1f61cd){var _0x487299=this;return new Promise(function(_0x360039,_0x1d31b2){if(_0x1f61cd[_0x2f13('0x34')]&&_0x1f61cd[_0x2f13('0x34')]['id']){if(_0x322c07[_0x2f13('0x35')][_0x1f61cd[_0x2f13('0x34')]['id']]){_0x322c07[_0x2f13('0x35')][_0x1f61cd['agent']['id']][_0x2f13('0x36')]=![];_0x322c07[_0x2f13('0x35')][_0x1f61cd[_0x2f13('0x34')]['id']][_0x2f13('0x37')]=undefined;}}if(_0x1f61cd['message']&&_0x1f61cd[_0x2f13('0x15')]['id']){try{var _0x33ba4b=getId(_0x1f61cd[_0x2f13('0x14')],_0x1f61cd[_0x2f13('0x15')]?_0x1f61cd[_0x2f13('0x15')]['id']:0x0,_0x1f61cd[_0x2f13('0x16')]?_0x1f61cd[_0x2f13('0x16')]['id']:0x0);if(_0x322c07[_0x2f13('0x13')][_0x33ba4b]){_0x322c07['rules'][_0x33ba4b][_0x2f13('0x38')]('end');if(rpc[_0x1f61cd[_0x2f13('0x14')]+_0x2f13('0x39')]){rpc[_0x1f61cd[_0x2f13('0x14')]+_0x2f13('0x39')][_0x2f13('0x3a')](_0x33ba4b,{'UserId':_0x1f61cd[_0x2f13('0x15')][_0x2f13('0x3b')]})[_0x2f13('0x3c')](function(_0x804415){logger[_0x2f13('0x32')](_0x2f13('0x3d'));});}}return _0x360039({'code':0xc8,'message':_0x1f61cd});}catch(_0x6d3476){logger[_0x2f13('0x32')](_0x6d3476[_0x2f13('0x3e')]);return _0x1d31b2(_0x487299[_0x2f13('0x32')](0x1f4,_0x6d3476));}}logger['error'](_0x2f13('0x3f'));return _0x1d31b2(_0x487299[_0x2f13('0x32')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x17e400){var _0x4a0cae=this;return new Promise(function(_0x37ef0b,_0x4d607e){if(_0x17e400[_0x2f13('0x34')]&&_0x17e400['agent']['id']){try{if(_0x322c07[_0x2f13('0x35')][_0x17e400['agent']['id']]){_0x322c07['agents'][_0x17e400[_0x2f13('0x34')]['id']][_0x2f13('0x36')]=![];_0x322c07[_0x2f13('0x35')][_0x17e400['agent']['id']][_0x2f13('0x37')]=undefined;}return _0x37ef0b({'code':0xc8,'message':_0x17e400});}catch(_0x39dbbf){logger[_0x2f13('0x32')](_0x39dbbf[_0x2f13('0x3e')]);return _0x4d607e(_0x4a0cae[_0x2f13('0x32')](0x1f4,_0x39dbbf));}}logger[_0x2f13('0x32')]('message\x20is\x20empty');return _0x4d607e(_0x4a0cae[_0x2f13('0x32')](0x1f4,_0x2f13('0x3f')));});},'AbandonInteraction':function(_0x1f107d){var _0x8ee96a=this;return new Promise(function(_0x58e688,_0x19005d){if(_0x1f107d[_0x2f13('0x14')]&&_0x1f107d[_0x2f13('0x16')]&&_0x1f107d[_0x2f13('0x16')]['id']){try{var _0x2eec1b=getId(_0x1f107d['channel'],_0x1f107d[_0x2f13('0x15')]?_0x1f107d[_0x2f13('0x15')]['id']:0x0,_0x1f107d[_0x2f13('0x16')]?_0x1f107d[_0x2f13('0x16')]['id']:0x0);if(_0x322c07[_0x2f13('0x13')][_0x2eec1b]){_0x322c07['rules'][_0x2eec1b][_0x2f13('0x38')](_0x2f13('0x40'));}return _0x58e688({'code':0xc8,'message':_0x1f107d});}catch(_0x4b126a){logger[_0x2f13('0x32')](_0x4b126a['stack']);return _0x19005d(_0x8ee96a[_0x2f13('0x32')](0x1f4,_0x4b126a));}}logger[_0x2f13('0x32')](_0x2f13('0x3f'));return _0x19005d(_0x8ee96a['error'](0x1f4,_0x2f13('0x3f')));});},'AgentCapacity':function(_0x8e558){var _0x3317ef=this;return new Promise(function(_0x31186d,_0x59eb82){if(_0x322c07[_0x2f13('0x35')][_0x2f13('0x41')](_0x8e558['id'])){for(var _0xae6241 in _0x8e558[_0x2f13('0x42')]){if(_0x8e558[_0x2f13('0x42')][_0x2f13('0x41')](_0xae6241)){if(_0x322c07[_0x2f13('0x35')][_0x8e558['id']][_0x2f13('0x41')](_0xae6241+'CurrentCapacity')){_0x322c07[_0x2f13('0x35')][_0x8e558['id']][_0xae6241+_0x2f13('0x43')]=parseInt(_0x8e558[_0x2f13('0x42')][_0xae6241],0xa);}}}_0x322c07[_0x2f13('0x35')][_0x8e558['id']][_0x2f13('0x44')]();return _0x31186d({'code':0xc8,'message':_0x322c07['agents'][_0x8e558['id']]});}else{return _0x59eb82(_0x3317ef[_0x2f13('0x32')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0xa6f7b0){return new Promise(function(_0x4f8dc5,_0x37c37f){var _0x3e43e8=_[_0x2f13('0x45')](_0x322c07['agents']);_0x4f8dc5({'count':_0x3e43e8[_0x2f13('0x19')],'rows':_0x3e43e8});});},'ChatQueues':function(_0x2aa38b){return new Promise(function(_0x37977d,_0x35d921){var _0x4055cc=[];for(var _0x35f901 in _0x322c07[_0x2f13('0x46')]){if(_0x322c07['chatQueues'][_0x2f13('0x41')](_0x35f901)){var _0x1fa2b5=_0x322c07[_0x2f13('0x46')][_0x35f901];var _0x2c144e={'id':_0x1fa2b5['id'],'available':_0x1fa2b5[_0x2f13('0x47')],'loggedIn':_0x1fa2b5[_0x2f13('0x48')],'name':_0x1fa2b5[_0x2f13('0x49')],'paused':_0x1fa2b5[_0x2f13('0x4a')],'waiting':_0x1fa2b5[_0x2f13('0x4b')]};_0x4055cc['push'](_0x2c144e);}}_0x37977d({'count':_0x4055cc[_0x2f13('0x19')],'rows':_0x4055cc});});},'MailQueues':function(_0x1c266f){return new Promise(function(_0x4a984f,_0x22d259){var _0x148e59=[];for(var _0x5259ca in _0x322c07[_0x2f13('0x4c')]){if(_0x322c07['mailQueues']['hasOwnProperty'](_0x5259ca)){var _0x22f9de=_0x322c07['mailQueues'][_0x5259ca];var _0x44ed9e={'id':_0x22f9de['id'],'available':_0x22f9de[_0x2f13('0x47')],'loggedIn':_0x22f9de[_0x2f13('0x48')],'name':_0x22f9de[_0x2f13('0x49')],'paused':_0x22f9de['paused'],'waiting':_0x22f9de[_0x2f13('0x4b')]};_0x148e59[_0x2f13('0x23')](_0x44ed9e);}}_0x4a984f({'count':_0x148e59[_0x2f13('0x19')],'rows':_0x148e59});});},'OpenchannelQueues':function(_0x2eb982){return new Promise(function(_0xacaec3,_0x25f7b4){var _0x105d00=[];for(var _0x2c156f in _0x322c07['openchannelQueues']){if(_0x322c07[_0x2f13('0x4d')][_0x2f13('0x41')](_0x2c156f)){var _0x135127=_0x322c07[_0x2f13('0x4d')][_0x2c156f];var _0x3e36db={'id':_0x135127['id'],'available':_0x135127[_0x2f13('0x47')],'loggedIn':_0x135127['loggedIn'],'name':_0x135127[_0x2f13('0x49')],'paused':_0x135127[_0x2f13('0x4a')],'waiting':_0x135127[_0x2f13('0x4b')]};_0x105d00[_0x2f13('0x23')](_0x3e36db);}}_0xacaec3({'count':_0x105d00['length'],'rows':_0x105d00});});},'SmsQueues':function(_0x51ca1b){return new Promise(function(_0x172d9e,_0x3582c4){var _0x20b6b1=[];for(var _0x563dc7 in _0x322c07[_0x2f13('0x4e')]){if(_0x322c07[_0x2f13('0x4e')][_0x2f13('0x41')](_0x563dc7)){var _0x4a9b33=_0x322c07['smsQueues'][_0x563dc7];var _0x3cad9e={'id':_0x4a9b33['id'],'available':_0x4a9b33['available'],'loggedIn':_0x4a9b33['loggedIn'],'name':_0x4a9b33[_0x2f13('0x49')],'paused':_0x4a9b33['paused'],'waiting':_0x4a9b33[_0x2f13('0x4b')]};_0x20b6b1[_0x2f13('0x23')](_0x3cad9e);}}_0x172d9e({'count':_0x20b6b1[_0x2f13('0x19')],'rows':_0x20b6b1});});},'FaxQueues':function(_0x3f9f86){return new Promise(function(_0x343180,_0x31d167){var _0x53e230=[];for(var _0x35fc3c in _0x322c07[_0x2f13('0x4f')]){if(_0x322c07['faxQueues'][_0x2f13('0x41')](_0x35fc3c)){var _0x559cc9=_0x322c07[_0x2f13('0x4f')][_0x35fc3c];var _0xd5a4ea={'id':_0x559cc9['id'],'available':_0x559cc9['available'],'loggedIn':_0x559cc9[_0x2f13('0x48')],'name':_0x559cc9[_0x2f13('0x49')],'paused':_0x559cc9[_0x2f13('0x4a')],'waiting':_0x559cc9[_0x2f13('0x4b')]};_0x53e230[_0x2f13('0x23')](_0xd5a4ea);}}_0x343180({'count':_0x53e230[_0x2f13('0x19')],'rows':_0x53e230});});},'WhatsappQueues':function(_0x1745e6){return new Promise(function(_0x2686fb,_0xd3880a){var _0x5d4496=[];for(var _0x38ac03 in _0x322c07[_0x2f13('0x50')]){if(_0x322c07[_0x2f13('0x50')][_0x2f13('0x41')](_0x38ac03)){var _0x51d710=_0x322c07[_0x2f13('0x50')][_0x38ac03];var _0x7e9317={'id':_0x51d710['id'],'available':_0x51d710['available'],'loggedIn':_0x51d710[_0x2f13('0x48')],'name':_0x51d710['name'],'paused':_0x51d710['paused'],'waiting':_0x51d710[_0x2f13('0x4b')]};_0x5d4496[_0x2f13('0x23')](_0x7e9317);}}_0x2686fb({'count':_0x5d4496[_0x2f13('0x19')],'rows':_0x5d4496});});},'ChatQueuesWaitingInteractions':function(_0x13c739){return new Promise(function(_0x4cae63,_0x378b95){var _0x240f64=_['values'](_0x322c07[_0x2f13('0x51')]);_0x4cae63({'count':_0x240f64[_0x2f13('0x19')],'rows':_0x240f64});});},'MailQueuesWaitingInteractions':function(_0x8293f4){return new Promise(function(_0x45eddc,_0x41f868){var _0x33f4ca=_['values'](_0x322c07[_0x2f13('0x52')]);_0x45eddc({'count':_0x33f4ca[_0x2f13('0x19')],'rows':_0x33f4ca});});},'OpenchannelQueuesWaitingInteractions':function(_0x4a1587){return new Promise(function(_0x4c590a,_0x50546f){var _0x26b1a5=_[_0x2f13('0x45')](_0x322c07['openchannelQueuesWaitingInteractions']);_0x4c590a({'count':_0x26b1a5['length'],'rows':_0x26b1a5});});},'SmsQueuesWaitingInteractions':function(_0x12772d){return new Promise(function(_0x28adfe,_0x56394e){var _0x438e13=_[_0x2f13('0x45')](_0x322c07[_0x2f13('0x53')]);_0x28adfe({'count':_0x438e13[_0x2f13('0x19')],'rows':_0x438e13});});},'FaxQueuesWaitingInteractions':function(_0x4b435a){return new Promise(function(_0x2aba71,_0x1e94f4){var _0x410619=_[_0x2f13('0x45')](_0x322c07['faxQueuesWaitingInteractions']);_0x2aba71({'count':_0x410619[_0x2f13('0x19')],'rows':_0x410619});});},'WhatsappQueuesWaitingInteractions':function(_0x171e83){return new Promise(function(_0x418a84,_0xe98bea){var _0x3680f1=_[_0x2f13('0x45')](_0x322c07['whatsappQueuesWaitingInteractions']);_0x418a84({'count':_0x3680f1[_0x2f13('0x19')],'rows':_0x3680f1});});}};var _0x591d7e=jayson[_0x2f13('0x54')](_0x30bf95)['http']();_0x591d7e['on'](_0x2f13('0x32'),function(_0x18e0dd){logger['error'](JSON['stringify'](_0x18e0dd));return _0x2d6495(_0x18e0dd);});_0x591d7e['listen'](0x232c,'127.0.0.1',function(){console[_0x2f13('0x55')](_0x2f13('0x56'),0x232c);return _0x360196(_0x2f13('0x57')+0x232c);});});};
\ No newline at end of file
+var _0x057f=['mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','format','%s:%s:%s','./interval','condition','intervals','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','error','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','busyQueue','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','path','jayson/promise','bluebird','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','rules','channel','message','interaction','applications','isArray','length','join','app','.js','toLowerCase','autoreply','appdata','split'];(function(_0x4c59c6,_0xf02b50){var _0x38ae55=function(_0x34a10e){while(--_0x34a10e){_0x4c59c6['push'](_0x4c59c6['shift']());}};_0x38ae55(++_0xf02b50);}(_0x057f,0x1d7));var _0xf057=function(_0x52d9b2,_0x74368b){_0x52d9b2=_0x52d9b2-0x0;var _0x3c8d1b=_0x057f[_0x52d9b2];return _0x3c8d1b;};'use strict';var _=require(_0xf057('0x0'));var util=require('util');var path=require(_0xf057('0x1'));var fs=require('fs');var jayson=require(_0xf057('0x2'));var BPromise=require(_0xf057('0x3'));var uuid=require('uuid');var config=require(_0xf057('0x4'));var logger=require(_0xf057('0x5'))(_0xf057('0x6'));var rpc={'openchannelQueueReport':require(_0xf057('0x7')),'mailQueueReport':require(_0xf057('0x8')),'chatQueueReport':require(_0xf057('0x9')),'smsQueueReport':require(_0xf057('0xa')),'faxQueueReport':require(_0xf057('0xb')),'whatsappQueueReport':require(_0xf057('0xc'))};var RuleEngine=require(_0xf057('0xd'));function getId(_0x12a7d1,_0x37a730,_0x4a4579){return util['format'](_0xf057('0xe'),_0x12a7d1,_0x37a730||0x0,_0x4a4579||0x0);}function getIntervals(_0x450855,_0x57bbbe){var _0xe6ef29=[];if(!_['isNil'](_0x57bbbe[_0xf057('0xf')])&&!_[_0xf057('0x10')](_0x450855[_0x57bbbe[_0xf057('0xf')]])&&!_[_0xf057('0x10')](_0x450855[_0x57bbbe['IntervalId']][_0xf057('0x11')])){_0xe6ef29=_[_0xf057('0x12')](_0x450855[_0x57bbbe[_0xf057('0xf')]][_0xf057('0x11')],'interval');}else if(!_[_0xf057('0x10')](_0x57bbbe['interval'])){_0xe6ef29=[_0x57bbbe[_0xf057('0x13')]];}return _0xe6ef29;}exports['listen']=function(_0x18e093){_0x18e093[_0xf057('0x14')]={};return new BPromise(function(_0x19f17c,_0xf4741f){var _0x113c0f={'Start':function(_0x324521){var _0x452256=this;return new Promise(function(_0x2d69f3,_0x4a8580){if(_0x324521){try{var _0x3d6c27=[];var _0x491828=getId(_0x324521[_0xf057('0x15')],_0x324521[_0xf057('0x16')]?_0x324521['message']['id']:0x0,_0x324521[_0xf057('0x17')]?_0x324521[_0xf057('0x17')]['id']:0x0);if(_0x324521[_0xf057('0x18')]&&_[_0xf057('0x19')](_0x324521[_0xf057('0x18')])&&_0x324521[_0xf057('0x18')]['length']){for(var _0xab6f0e=0x0;_0xab6f0e<_0x324521['applications'][_0xf057('0x1a')];_0xab6f0e+=0x1){var _0x37e25a=_0x324521[_0xf057('0x18')][_0xab6f0e];if(fs['existsSync'](path[_0xf057('0x1b')](__dirname,_0xf057('0x18'),_0x37e25a[_0xf057('0x1c')]+_0xf057('0x1d')))){var _0x1eb210=[];switch(_0x37e25a['app'][_0xf057('0x1e')]()){case _0xf057('0x1f'):var _0x183fc2=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');if(_0x324521[_0xf057('0x15')]===_0xf057('0x22')){_0x1eb210[_0xf057('0x23')](_0x183fc2[0x0]);_0x1eb210[_0xf057('0x23')](_0x183fc2[0x1]);_0x1eb210[_0xf057('0x23')](_0x183fc2[_0xf057('0x24')](0x2,_0x183fc2[_0xf057('0x1a')])[_0xf057('0x1b')](','));}else{_0x1eb210[_0xf057('0x23')](_0x183fc2[0x0]);_0x1eb210[_0xf057('0x23')](_0x183fc2[_0xf057('0x24')](0x1,_0x183fc2[_0xf057('0x1a')])[_0xf057('0x1b')](','));}break;case _0xf057('0x25'):var _0x5879bb=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');_0x1eb210['push'](_0x5879bb[0x0]);_0x1eb210['push'](_0x5879bb[0x1]);_0x1eb210[_0xf057('0x23')](_0x5879bb[_0xf057('0x24')](0x2,_0x5879bb[_0xf057('0x1a')])['join'](','));break;case _0xf057('0x26'):var _0x12b4a8=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');_0x1eb210[_0xf057('0x23')](_0x12b4a8[0x0]);_0x1eb210['push'](_0x12b4a8[0x1]);_0x1eb210['push'](_0x12b4a8[0x2]);_0x1eb210['push'](_0x12b4a8[0x3]);_0x1eb210[_0xf057('0x23')](_0x12b4a8['slice'](0x4,_0x12b4a8[_0xf057('0x1a')])[_0xf057('0x1b')](','));break;case _0xf057('0x27'):var _0x4f6362=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');_0x1eb210[_0xf057('0x23')](_0x4f6362[0x0]);_0x1eb210[_0xf057('0x23')](_0x4f6362[0x1]);_0x1eb210[_0xf057('0x23')](_0x4f6362[0x2]);_0x1eb210[_0xf057('0x23')](_0x4f6362[0x3]);_0x1eb210[_0xf057('0x23')](_0x4f6362[_0xf057('0x24')](0x4,_0x4f6362[_0xf057('0x1a')])[_0xf057('0x1b')](','));break;case _0xf057('0x16'):_0x1eb210[_0xf057('0x23')](_0x37e25a[_0xf057('0x20')]);break;case _0xf057('0x28'):_0x1eb210['push'](_0x37e25a[_0xf057('0x29')]);_0x1eb210['push'](_0x37e25a[_0xf057('0x20')]);break;default:_0x1eb210=_[_0xf057('0x10')](_0x37e25a[_0xf057('0x20')])?[]:_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');}var _0x2176ab={'id':util[_0xf057('0x2a')](_0xf057('0x2b'),_0x491828,_0x37e25a['id'],_0x37e25a[_0xf057('0x1c')]),'condition':require(_0xf057('0x2c'))[_0xf057('0x2d')](_0x491828,getIntervals(_0x18e093[_0xf057('0x2e')],_0x37e25a),_0x18e093),'consequence':require('./applications/'+_0x37e25a[_0xf057('0x1c')])[_0xf057('0x2f')](_0x491828,_0x1eb210,_0x18e093,_0x324521),'p':_0x37e25a[_0xf057('0x30')]||0x0};logger[_0xf057('0x31')](_0xf057('0x32'),_0x2176ab['id'],_0xf057('0x33'),getIntervals(_0x18e093['intervals'],_0x37e25a)[_0xf057('0x1b')](_0xf057('0x34')));_0x3d6c27[_0xf057('0x23')](_0x2176ab);}else{logger['error'](_0xf057('0x35'),path[_0xf057('0x1b')](__dirname,_0xf057('0x18'),_0x37e25a[_0xf057('0x1c')]+_0xf057('0x1d')));}}_0x18e093[_0xf057('0x14')][_0x491828]=new RuleEngine(_0x3d6c27);_0x18e093[_0xf057('0x14')][_0x491828][_0xf057('0x36')](_0x324521,function(_0x46a981){logger[_0xf057('0x31')](_0xf057('0x37'),JSON[_0xf057('0x38')](_0x46a981[_0xf057('0x39')]));if(_0x18e093[_0xf057('0x14')][_0x491828]){_0x18e093[_0xf057('0x14')][_0x491828][_0xf057('0x3a')](_0xf057('0x3b'));}});return _0x2d69f3({'code':0xc8,'message':_0x324521});}else{logger[_0xf057('0x31')](_0xf057('0x3c'));return _0x2d69f3({'code':0xc8,'message':_0x324521});}}catch(_0x1711bf){logger[_0xf057('0x3d')](_0x1711bf['stack']);return _0x4a8580(_0x452256[_0xf057('0x3d')](0x1f4,_0x1711bf));}}return _0x4a8580(_0xf057('0x3e'));});},'AcceptMessage':function(_0x45e5dc){var _0x456753=this;return new Promise(function(_0x47fb8d,_0x55188a){if(_0x45e5dc[_0xf057('0x3f')]&&_0x45e5dc[_0xf057('0x3f')]['id']){if(_0x18e093[_0xf057('0x40')][_0x45e5dc[_0xf057('0x3f')]['id']]){_0x18e093[_0xf057('0x40')][_0x45e5dc[_0xf057('0x3f')]['id']][_0xf057('0x41')]=![];_0x18e093[_0xf057('0x40')][_0x45e5dc[_0xf057('0x3f')]['id']]['busyQueue']=undefined;}}if(_0x45e5dc['message']&&_0x45e5dc['message']['id']){try{var _0x5cde20=getId(_0x45e5dc[_0xf057('0x15')],_0x45e5dc[_0xf057('0x16')]?_0x45e5dc['message']['id']:0x0,_0x45e5dc[_0xf057('0x17')]?_0x45e5dc['interaction']['id']:0x0);if(_0x18e093[_0xf057('0x14')][_0x5cde20]){_0x18e093[_0xf057('0x14')][_0x5cde20][_0xf057('0x3a')](_0xf057('0x42'));if(rpc[_0x45e5dc['channel']+_0xf057('0x43')]){rpc[_0x45e5dc[_0xf057('0x15')]+'QueueReport'][_0xf057('0x44')](_0x5cde20,{'UserId':_0x45e5dc[_0xf057('0x16')][_0xf057('0x45')]})[_0xf057('0x46')](function(_0x1de3ea){logger[_0xf057('0x3d')](_0xf057('0x47'));});}}return _0x47fb8d({'code':0xc8,'message':_0x45e5dc});}catch(_0x40ee59){logger[_0xf057('0x3d')](_0x40ee59[_0xf057('0x48')]);return _0x55188a(_0x456753['error'](0x1f4,_0x40ee59));}}logger[_0xf057('0x3d')]('message\x20is\x20empty');return _0x55188a(_0x456753[_0xf057('0x3d')](0x1f4,_0xf057('0x49')));});},'RejectMessage':function(_0x33695e){var _0x2ccbd6=this;return new Promise(function(_0x19cb64,_0x52da7f){if(_0x33695e[_0xf057('0x3f')]&&_0x33695e[_0xf057('0x3f')]['id']){try{if(_0x18e093[_0xf057('0x40')][_0x33695e['agent']['id']]){_0x18e093[_0xf057('0x40')][_0x33695e[_0xf057('0x3f')]['id']][_0xf057('0x41')]=![];_0x18e093[_0xf057('0x40')][_0x33695e['agent']['id']][_0xf057('0x4a')]=undefined;}return _0x19cb64({'code':0xc8,'message':_0x33695e});}catch(_0x2e9d99){logger['error'](_0x2e9d99['stack']);return _0x52da7f(_0x2ccbd6['error'](0x1f4,_0x2e9d99));}}logger['error']('message\x20is\x20empty');return _0x52da7f(_0x2ccbd6['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x58db9f){var _0x3f25b5=this;return new Promise(function(_0x5a4343,_0xe2624d){if(_0x58db9f[_0xf057('0x15')]&&_0x58db9f[_0xf057('0x17')]&&_0x58db9f['interaction']['id']){try{var _0x128251=getId(_0x58db9f[_0xf057('0x15')],_0x58db9f['message']?_0x58db9f[_0xf057('0x16')]['id']:0x0,_0x58db9f[_0xf057('0x17')]?_0x58db9f['interaction']['id']:0x0);if(_0x18e093['rules'][_0x128251]){_0x18e093['rules'][_0x128251][_0xf057('0x3a')](_0xf057('0x42'));}return _0x5a4343({'code':0xc8,'message':_0x58db9f});}catch(_0x15b443){logger['error'](_0x15b443[_0xf057('0x48')]);return _0xe2624d(_0x3f25b5[_0xf057('0x3d')](0x1f4,_0x15b443));}}logger[_0xf057('0x3d')](_0xf057('0x49'));return _0xe2624d(_0x3f25b5[_0xf057('0x3d')](0x1f4,_0xf057('0x49')));});},'AgentCapacity':function(_0x14d2f9){var _0x5b4938=this;return new Promise(function(_0x5612c4,_0x57ad0a){if(_0x18e093[_0xf057('0x40')]['hasOwnProperty'](_0x14d2f9['id'])){for(var _0x18e11a in _0x14d2f9[_0xf057('0x4b')]){if(_0x14d2f9[_0xf057('0x4b')]['hasOwnProperty'](_0x18e11a)){if(_0x18e093['agents'][_0x14d2f9['id']][_0xf057('0x4c')](_0x18e11a+_0xf057('0x4d'))){_0x18e093[_0xf057('0x40')][_0x14d2f9['id']][_0x18e11a+_0xf057('0x4d')]=parseInt(_0x14d2f9['capacity'][_0x18e11a],0xa);}}}_0x18e093[_0xf057('0x40')][_0x14d2f9['id']][_0xf057('0x4e')]();return _0x5612c4({'code':0xc8,'message':_0x18e093[_0xf057('0x40')][_0x14d2f9['id']]});}else{return _0x57ad0a(_0x5b4938[_0xf057('0x3d')](0x1f4,_0xf057('0x4f')));}});},'Agents':function(_0x2ec62f){return new Promise(function(_0x194d01,_0x390fc1){var _0x294bd1=_[_0xf057('0x50')](_0x18e093[_0xf057('0x40')]);_0x194d01({'count':_0x294bd1[_0xf057('0x1a')],'rows':_0x294bd1});});},'ChatQueues':function(_0x1cf0b0){return new Promise(function(_0x1a38a4,_0x1fb7b6){var _0x583f68=[];for(var _0x321e53 in _0x18e093[_0xf057('0x51')]){if(_0x18e093[_0xf057('0x51')]['hasOwnProperty'](_0x321e53)){var _0x48b827=_0x18e093[_0xf057('0x51')][_0x321e53];var _0x489a17={'id':_0x48b827['id'],'available':_0x48b827[_0xf057('0x52')],'loggedIn':_0x48b827[_0xf057('0x53')],'name':_0x48b827[_0xf057('0x54')],'paused':_0x48b827[_0xf057('0x55')],'waiting':_0x48b827[_0xf057('0x56')]};_0x583f68[_0xf057('0x23')](_0x489a17);}}_0x1a38a4({'count':_0x583f68['length'],'rows':_0x583f68});});},'MailQueues':function(_0x282fdb){return new Promise(function(_0x2358da,_0x564cc9){var _0x45d3da=[];for(var _0x269bd0 in _0x18e093[_0xf057('0x57')]){if(_0x18e093['mailQueues'][_0xf057('0x4c')](_0x269bd0)){var _0x170237=_0x18e093[_0xf057('0x57')][_0x269bd0];var _0x14ab0e={'id':_0x170237['id'],'available':_0x170237[_0xf057('0x52')],'loggedIn':_0x170237[_0xf057('0x53')],'name':_0x170237[_0xf057('0x54')],'paused':_0x170237['paused'],'waiting':_0x170237['waiting']};_0x45d3da['push'](_0x14ab0e);}}_0x2358da({'count':_0x45d3da[_0xf057('0x1a')],'rows':_0x45d3da});});},'OpenchannelQueues':function(_0x18b6bd){return new Promise(function(_0x165021,_0x498ba7){var _0x33ea02=[];for(var _0xf3ce6d in _0x18e093[_0xf057('0x58')]){if(_0x18e093[_0xf057('0x58')][_0xf057('0x4c')](_0xf3ce6d)){var _0x3dc75b=_0x18e093[_0xf057('0x58')][_0xf3ce6d];var _0x37d61c={'id':_0x3dc75b['id'],'available':_0x3dc75b[_0xf057('0x52')],'loggedIn':_0x3dc75b[_0xf057('0x53')],'name':_0x3dc75b[_0xf057('0x54')],'paused':_0x3dc75b[_0xf057('0x55')],'waiting':_0x3dc75b[_0xf057('0x56')]};_0x33ea02[_0xf057('0x23')](_0x37d61c);}}_0x165021({'count':_0x33ea02['length'],'rows':_0x33ea02});});},'SmsQueues':function(_0x151c08){return new Promise(function(_0x489278,_0x197a5b){var _0x271696=[];for(var _0x2213d7 in _0x18e093[_0xf057('0x59')]){if(_0x18e093[_0xf057('0x59')]['hasOwnProperty'](_0x2213d7)){var _0x4bfdee=_0x18e093[_0xf057('0x59')][_0x2213d7];var _0x2fde37={'id':_0x4bfdee['id'],'available':_0x4bfdee[_0xf057('0x52')],'loggedIn':_0x4bfdee['loggedIn'],'name':_0x4bfdee[_0xf057('0x54')],'paused':_0x4bfdee[_0xf057('0x55')],'waiting':_0x4bfdee[_0xf057('0x56')]};_0x271696[_0xf057('0x23')](_0x2fde37);}}_0x489278({'count':_0x271696[_0xf057('0x1a')],'rows':_0x271696});});},'FaxQueues':function(_0x19a29a){return new Promise(function(_0x5307d6,_0xd69e58){var _0x1de858=[];for(var _0x5e6636 in _0x18e093['faxQueues']){if(_0x18e093['faxQueues']['hasOwnProperty'](_0x5e6636)){var _0x494bb1=_0x18e093[_0xf057('0x5a')][_0x5e6636];var _0x4f07f0={'id':_0x494bb1['id'],'available':_0x494bb1['available'],'loggedIn':_0x494bb1[_0xf057('0x53')],'name':_0x494bb1['name'],'paused':_0x494bb1[_0xf057('0x55')],'waiting':_0x494bb1['waiting']};_0x1de858[_0xf057('0x23')](_0x4f07f0);}}_0x5307d6({'count':_0x1de858[_0xf057('0x1a')],'rows':_0x1de858});});},'WhatsappQueues':function(_0x2966e0){return new Promise(function(_0x54abf3,_0x48f7c4){var _0x6f4641=[];for(var _0x3f9ccc in _0x18e093['whatsappQueues']){if(_0x18e093[_0xf057('0x5b')][_0xf057('0x4c')](_0x3f9ccc)){var _0x1dfdf9=_0x18e093['whatsappQueues'][_0x3f9ccc];var _0x16b23d={'id':_0x1dfdf9['id'],'available':_0x1dfdf9['available'],'loggedIn':_0x1dfdf9[_0xf057('0x53')],'name':_0x1dfdf9[_0xf057('0x54')],'paused':_0x1dfdf9[_0xf057('0x55')],'waiting':_0x1dfdf9[_0xf057('0x56')]};_0x6f4641[_0xf057('0x23')](_0x16b23d);}}_0x54abf3({'count':_0x6f4641[_0xf057('0x1a')],'rows':_0x6f4641});});},'ChatQueuesWaitingInteractions':function(_0x14ffa8){return new Promise(function(_0x92fda2,_0x137cf4){var _0x6a4c7e=_[_0xf057('0x50')](_0x18e093[_0xf057('0x5c')]);_0x92fda2({'count':_0x6a4c7e['length'],'rows':_0x6a4c7e});});},'MailQueuesWaitingInteractions':function(_0x2b99bd){return new Promise(function(_0x3a9cc7,_0x7934c2){var _0x14f81c=_[_0xf057('0x50')](_0x18e093[_0xf057('0x5d')]);_0x3a9cc7({'count':_0x14f81c[_0xf057('0x1a')],'rows':_0x14f81c});});},'OpenchannelQueuesWaitingInteractions':function(_0x5a2dc4){return new Promise(function(_0x159be5,_0x57ac68){var _0x56c6a5=_[_0xf057('0x50')](_0x18e093[_0xf057('0x5e')]);_0x159be5({'count':_0x56c6a5[_0xf057('0x1a')],'rows':_0x56c6a5});});},'SmsQueuesWaitingInteractions':function(_0x5c469e){return new Promise(function(_0x3647bf,_0x1b1fb2){var _0x288c2c=_['values'](_0x18e093[_0xf057('0x5f')]);_0x3647bf({'count':_0x288c2c[_0xf057('0x1a')],'rows':_0x288c2c});});},'FaxQueuesWaitingInteractions':function(_0x379045){return new Promise(function(_0x56008f,_0x43b393){var _0xf8bbe4=_['values'](_0x18e093['faxQueuesWaitingInteractions']);_0x56008f({'count':_0xf8bbe4[_0xf057('0x1a')],'rows':_0xf8bbe4});});},'WhatsappQueuesWaitingInteractions':function(_0x40b6ac){return new Promise(function(_0x332d72,_0x55797e){var _0x17c673=_[_0xf057('0x50')](_0x18e093[_0xf057('0x60')]);_0x332d72({'count':_0x17c673[_0xf057('0x1a')],'rows':_0x17c673});});}};var _0x287720=jayson['server'](_0x113c0f)[_0xf057('0x61')]();_0x287720['on'](_0xf057('0x3d'),function(_0x3ee80a){logger[_0xf057('0x3d')](JSON[_0xf057('0x38')](_0x3ee80a));return _0xf4741f(_0x3ee80a);});_0x287720['listen'](0x232c,'127.0.0.1',function(){console[_0xf057('0x62')](_0xf057('0x63'),0x232c);return _0x19f17c(_0xf057('0x64')+0x232c);});});};
\ No newline at end of file
index 7c0132e..0d8949e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46c7=['message','indexOf','true','all','some','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','when','log','join','stack','util','jayson/promise','lodash','../../../config/logger','client','http','then','error','result','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','push','Command','format','iftime\x20%s'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x46c7,0x1cd));var _0x746c=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x46c7[_0x599e60];return _0x468e19;};'use strict';var util=require(_0x746c('0x0'));var BPromise=require('bluebird');var jayson=require(_0x746c('0x1'));var _=require(_0x746c('0x2'));var logger=require(_0x746c('0x3'))('routing');var client=jayson[_0x746c('0x4')][_0x746c('0x5')]({'port':0x232a});function request(_0x88c144,_0x447ff1){return new BPromise(function(_0x10278e,_0x338593){return client['request'](_0x88c144,_0x447ff1)[_0x746c('0x6')](function(_0x21a329){if(_0x21a329['error']){return _0x338593(_0x21a329[_0x746c('0x7')]['message']);}else{return _0x10278e(_0x21a329[_0x746c('0x8')]);}})[_0x746c('0x9')](function(_0xe6b057){return _0x338593(_0xe6b057);});});}exports[_0x746c('0xa')]=function(_0x390315,_0x3395cf,_0x4e73a5){return function(_0x4d3159){if(_0x4e73a5[_0x746c('0xb')]&&!_0x4e73a5[_0x746c('0xb')][_0x390315]){logger[_0x746c('0xc')](_0x746c('0xd'),_0x390315);return _0x4d3159[_0x746c('0xe')]();}var _0x1146ea=[];for(var _0x2fa9b1=0x0;_0x2fa9b1<_0x3395cf['length'];_0x2fa9b1+=0x1){_0x1146ea[_0x746c('0xf')](request(_0x746c('0x10'),{'command':util[_0x746c('0x11')](_0x746c('0x12'),_0x3395cf[_0x2fa9b1])})[_0x746c('0x6')](function(_0x509bc){return _0x509bc&&_0x509bc[_0x746c('0x13')]&&_0x509bc[_0x746c('0x13')][_0x746c('0x14')](_0x746c('0x15'))>=0x0?!![]:![];})['catch'](function(_0x1733e3){logger['error']('[%s][INTERVAL]\x20%s',_0x390315,_0x3395cf[_0x2fa9b1]);}));}BPromise[_0x746c('0x16')](_0x1146ea)['then'](function(_0x27f9b0){var _0x44f9b8=_[_0x746c('0x17')](_0x27f9b0);logger[_0x746c('0xc')](_0x746c('0x18'),_0x390315,_0x3395cf['join'](_0x746c('0x19')),_0x44f9b8);_0x4d3159[_0x746c('0x1a')](_0x44f9b8);})[_0x746c('0x9')](function(_0x517fe){console[_0x746c('0x1b')](_0x517fe);logger[_0x746c('0x7')](_0x746c('0x18'),_0x390315,_0x3395cf[_0x746c('0x1c')](_0x746c('0x19')),_0x517fe[_0x746c('0x1d')]);_0x4d3159[_0x746c('0xe')]();});};};
\ No newline at end of file
+var _0xe4f1=['condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','iftime\x20%s','indexOf','true','catch','[%s][INTERVAL]\x20%s','all','some','join','when','log','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','message','result'];(function(_0x29c545,_0x13432b){var _0x13c257=function(_0x22e319){while(--_0x22e319){_0x29c545['push'](_0x29c545['shift']());}};_0x13c257(++_0x13432b);}(_0xe4f1,0x169));var _0x1e4f=function(_0x50804a,_0x3930b3){_0x50804a=_0x50804a-0x0;var _0x4b507c=_0xe4f1[_0x50804a];return _0x4b507c;};'use strict';var util=require(_0x1e4f('0x0'));var BPromise=require(_0x1e4f('0x1'));var jayson=require(_0x1e4f('0x2'));var _=require(_0x1e4f('0x3'));var logger=require(_0x1e4f('0x4'))(_0x1e4f('0x5'));var client=jayson[_0x1e4f('0x6')][_0x1e4f('0x7')]({'port':0x232a});function request(_0x179831,_0x233bb3){return new BPromise(function(_0x2b8913,_0x192ee0){return client[_0x1e4f('0x8')](_0x179831,_0x233bb3)[_0x1e4f('0x9')](function(_0x488c6c){if(_0x488c6c[_0x1e4f('0xa')]){return _0x192ee0(_0x488c6c[_0x1e4f('0xa')][_0x1e4f('0xb')]);}else{return _0x2b8913(_0x488c6c[_0x1e4f('0xc')]);}})['catch'](function(_0x2adbe5){return _0x192ee0(_0x2adbe5);});});}exports[_0x1e4f('0xd')]=function(_0x33e5b8,_0x3cfd6b,_0x3146bb){return function(_0x3cd211){if(_0x3146bb[_0x1e4f('0xe')]&&!_0x3146bb[_0x1e4f('0xe')][_0x33e5b8]){logger[_0x1e4f('0xf')](_0x1e4f('0x10'),_0x33e5b8);return _0x3cd211[_0x1e4f('0x11')]();}var _0x30242f=[];for(var _0x4453f4=0x0;_0x4453f4<_0x3cfd6b[_0x1e4f('0x12')];_0x4453f4+=0x1){_0x30242f[_0x1e4f('0x13')](request(_0x1e4f('0x14'),{'command':util[_0x1e4f('0x15')](_0x1e4f('0x16'),_0x3cfd6b[_0x4453f4])})['then'](function(_0x5ef91d){return _0x5ef91d&&_0x5ef91d[_0x1e4f('0xb')]&&_0x5ef91d[_0x1e4f('0xb')][_0x1e4f('0x17')](_0x1e4f('0x18'))>=0x0?!![]:![];})[_0x1e4f('0x19')](function(_0x7709cf){logger[_0x1e4f('0xa')](_0x1e4f('0x1a'),_0x33e5b8,_0x3cfd6b[_0x4453f4]);}));}BPromise[_0x1e4f('0x1b')](_0x30242f)['then'](function(_0x49bb14){var _0x238956=_[_0x1e4f('0x1c')](_0x49bb14);logger['info']('[%s][INTERVAL]\x20%s\x20%s',_0x33e5b8,_0x3cfd6b[_0x1e4f('0x1d')]('\x20|\x20'),_0x238956);_0x3cd211[_0x1e4f('0x1e')](_0x238956);})[_0x1e4f('0x19')](function(_0x1d915c){console[_0x1e4f('0x1f')](_0x1d915c);logger['error'](_0x1e4f('0x20'),_0x33e5b8,_0x3cfd6b[_0x1e4f('0x1d')](_0x1e4f('0x21')),_0x1d915c['stack']);_0x3cd211['stop']();});};};
\ No newline at end of file
index 5834a03..d069a36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d2=['blind','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','agent','complete','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','agentcalled','debug','destuniqueid','agentcalledAt','called','connectedlinename','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','agentringnoanswerAt','now','timeout','holdtime','ringtime','push','error','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','talktime','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x16d2,0x123));var _0x216d=function(_0x3d57f5,_0x58043f){_0x3d57f5=_0x3d57f5-0x0;var _0x1b6ef3=_0x16d2[_0x3d57f5];return _0x1b6ef3;};'use strict';var _=require(_0x216d('0x0'));var util=require(_0x216d('0x1'));var utils=require(_0x216d('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x371e93,_0x1688cc){utils[_0x216d('0x3')](util[_0x216d('0x4')](_0x216d('0x5'),_0x371e93[_0x216d('0x6')],_0x371e93['channel'],_0x371e93[_0x216d('0x7')],_0x371e93[_0x216d('0x8')],_0x371e93[_0x216d('0x9')],_0x371e93[_0x216d('0xa')],_0x371e93[_0x216d('0xb')],_0x371e93[_0x216d('0xc')]));if(_0x371e93[_0x216d('0x7')]){utils[_0x216d('0xd')](_0x371e93['queue'])[_0x216d('0xe')](function(_0x1aeb55){if(_0x1aeb55){_0x371e93[_0x216d('0xf')]=_0x1aeb55[_0x216d('0xf')];_0x371e93[_0x216d('0x10')]=_0x371e93[_0x216d('0x11')]?_0x1aeb55['acw']:![];_0x371e93[_0x216d('0x12')]=_0x371e93['agentacw']?_0x1aeb55[_0x216d('0x13')]:0x0;}utils[_0x216d('0x14')](_0x216d('0x15'),_0x371e93);});}else{utils[_0x216d('0x14')](_0x216d('0x15'),_0x371e93);}if(_0x1688cc){delete transfers[_0x371e93[_0x216d('0x6')]];}else{delete agents[_0x371e93['destuniqueid']];}}exports[_0x216d('0x16')]=function(_0x4c07d0){try{utils[_0x216d('0x17')](util[_0x216d('0x4')]('[%s][agents][agentcalled]',_0x4c07d0[_0x216d('0x6')]),_0x4c07d0);agents[_0x4c07d0[_0x216d('0x18')]]=_0x4c07d0;agents[_0x4c07d0['destuniqueid']][_0x216d('0x19')]=utils['now']();agents[_0x4c07d0[_0x216d('0x18')]][_0x216d('0xc')]=_0x216d('0x1a');agents[_0x4c07d0[_0x216d('0x18')]][_0x216d('0xb')]=null;agents[_0x4c07d0[_0x216d('0x18')]][_0x216d('0x1b')]=null;utils[_0x216d('0x3')](util[_0x216d('0x4')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x4c07d0[_0x216d('0x6')],agents[_0x4c07d0['destuniqueid']]['membername'],_0x4c07d0[_0x216d('0x18')]));}catch(_0x35dbe8){utils['error'](util[_0x216d('0x4')](_0x216d('0x1c'),_0x4c07d0['uniqueid']),_0x35dbe8);}};exports[_0x216d('0x1d')]=function(_0x13b8e0){try{if(!_[_0x216d('0x1e')](agents[_0x13b8e0[_0x216d('0x18')]])){utils['debug'](util[_0x216d('0x4')](_0x216d('0x1f'),_0x13b8e0[_0x216d('0x6')]),_0x13b8e0);utils[_0x216d('0x3')](util[_0x216d('0x4')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x13b8e0[_0x216d('0x6')],agents[_0x13b8e0[_0x216d('0x18')]][_0x216d('0x8')],_0x13b8e0[_0x216d('0x18')]));agents[_0x13b8e0[_0x216d('0x18')]]['agentringnoanswer']=!![];agents[_0x13b8e0[_0x216d('0x18')]][_0x216d('0x20')]=utils[_0x216d('0x21')]();agents[_0x13b8e0['destuniqueid']]['lastevent']='timeout';agents[_0x13b8e0['destuniqueid']]['reason']=_0x216d('0x22');agents[_0x13b8e0[_0x216d('0x18')]][_0x216d('0x23')]=_0x13b8e0[_0x216d('0x24')]?parseInt(_0x13b8e0[_0x216d('0x24')])/0x3e8:0x0;agents[_0x13b8e0['destuniqueid']]['talktime']=0x0;unanswered[_0x216d('0x25')](_0x13b8e0['destuniqueid']);}}catch(_0x23d1c3){utils[_0x216d('0x26')](util[_0x216d('0x4')](_0x216d('0x1f'),_0x13b8e0[_0x216d('0x6')]),_0x23d1c3);}};exports[_0x216d('0x27')]=function(_0x28fcc2){try{_[_0x216d('0x28')](agents,function(_0x169cfa,_0x28f56a){if(_0x169cfa[_0x216d('0x6')]==_0x28fcc2[_0x216d('0x6')]&&!_[_0x216d('0x29')](unanswered,_0x169cfa['destuniqueid'])){utils[_0x216d('0x17')](util[_0x216d('0x4')](_0x216d('0x2a'),_0x28fcc2['uniqueid']),_0x28fcc2);utils[_0x216d('0x3')](util[_0x216d('0x4')](_0x216d('0x2b'),_0x28fcc2[_0x216d('0x6')],_0x169cfa['membername'],_0x169cfa[_0x216d('0x18')]));_0x169cfa[_0x216d('0x1d')]=!![];_0x169cfa[_0x216d('0x20')]=utils[_0x216d('0x21')]();_0x169cfa[_0x216d('0xc')]=_0x216d('0x2c');_0x169cfa[_0x216d('0x2d')]=_0x216d('0x2c');_0x169cfa[_0x216d('0x23')]=_0x28fcc2[_0x216d('0x23')];_0x169cfa[_0x216d('0x2e')]=0x0;writeDB(_0x169cfa);}});}catch(_0x4a2caa){utils[_0x216d('0x26')](util[_0x216d('0x4')](_0x216d('0x2a'),_0x28fcc2['uniqueid']),_0x4a2caa);}};exports[_0x216d('0x2f')]=function(_0x2e86f9){try{if(agents[_0x2e86f9['destuniqueid']]){utils[_0x216d('0x17')](util['format']('[%s][agents][agentconnect]',_0x2e86f9[_0x216d('0x6')]),_0x2e86f9);utils[_0x216d('0x3')](util[_0x216d('0x4')](_0x216d('0x30'),_0x2e86f9['uniqueid'],agents[_0x2e86f9['destuniqueid']]['membername'],_0x2e86f9[_0x216d('0x18')]));agents[_0x2e86f9[_0x216d('0x18')]]['agentconnectAt']=utils[_0x216d('0x21')]();agents[_0x2e86f9[_0x216d('0x18')]]['connectedlinenum']=_0x2e86f9[_0x216d('0xb')];agents[_0x2e86f9[_0x216d('0x18')]][_0x216d('0x1b')]=_0x2e86f9[_0x216d('0x1b')];agents[_0x2e86f9[_0x216d('0x18')]][_0x216d('0x23')]=_0x2e86f9[_0x216d('0x24')];agents[_0x2e86f9[_0x216d('0x18')]]['lastevent']='connect';_[_0x216d('0x28')](agents,function(_0x2be24f,_0x504a34){if(_0x2be24f[_0x216d('0x18')]!=_0x2e86f9[_0x216d('0x18')]&&_0x2be24f[_0x216d('0x6')]==_0x2e86f9['uniqueid']){_0x2be24f[_0x216d('0x2e')]=0x0;_0x2be24f[_0x216d('0x23')]=_0x2e86f9[_0x216d('0x24')];_0x2be24f[_0x216d('0x1d')]=!![];_0x2be24f['agentringnoanswerAt']=utils[_0x216d('0x21')]();_0x2be24f[_0x216d('0xc')]='answered_elsewhere';_0x2be24f[_0x216d('0x2d')]=_0x216d('0x31');_0x2be24f['answeredelsewheredestinationuniqueid']=_0x2e86f9['destuniqueid'];_0x2be24f[_0x216d('0x32')]=_0x2e86f9[_0x216d('0x8')];writeDB(_0x2be24f);}});}}catch(_0x3c491e){utils['error'](util[_0x216d('0x4')]('[%s][agents][agentconnect]',_0x2e86f9['uniqueid']),_0x3c491e);}};exports[_0x216d('0x11')]=function(_0x43336e){try{if(!_[_0x216d('0x1e')](agents[_0x43336e['destuniqueid']])){utils[_0x216d('0x17')](util['format'](_0x216d('0x33'),_0x43336e[_0x216d('0x6')]),_0x43336e);utils[_0x216d('0x3')](util['format'](_0x216d('0x34'),_0x43336e[_0x216d('0x6')],agents[_0x43336e[_0x216d('0x18')]][_0x216d('0x8')],_0x43336e['destuniqueid']));agents[_0x43336e['destuniqueid']]['agentcomplete']=!![];agents[_0x43336e[_0x216d('0x18')]][_0x216d('0x35')]=utils[_0x216d('0x21')]();agents[_0x43336e[_0x216d('0x18')]][_0x216d('0x2e')]=utils[_0x216d('0x36')](agents[_0x43336e[_0x216d('0x18')]][_0x216d('0x35')],agents[_0x43336e['destuniqueid']][_0x216d('0x37')]);agents[_0x43336e[_0x216d('0x18')]][_0x216d('0x2d')]=_0x43336e[_0x216d('0x2d')];agents[_0x43336e['destuniqueid']][_0x216d('0xc')]='complete';writeDB(agents[_0x43336e[_0x216d('0x18')]]);}}catch(_0x36179){utils[_0x216d('0x26')](util['format']('[%s][agents][agentcomplete]',_0x43336e[_0x216d('0x6')]),_0x36179);}};exports[_0x216d('0x38')]=function(_0x3932a3){try{if(!_[_0x216d('0x1e')](agents[_0x3932a3[_0x216d('0x39')]])){utils[_0x216d('0x17')](util['format']('[%s][agents][blindtransfer]',_0x3932a3[_0x216d('0x6')]),_0x3932a3);utils['info'](util[_0x216d('0x4')](_0x216d('0x3a'),_0x3932a3['uniqueid'],agents[_0x3932a3['transfereruniqueid']]['membername'],agents[_0x3932a3['transfereruniqueid']][_0x216d('0x6')]));agents[_0x3932a3[_0x216d('0x39')]][_0x216d('0x3b')]=!![];agents[_0x3932a3[_0x216d('0x39')]][_0x216d('0x3c')]=_0x216d('0x3d');agents[_0x3932a3[_0x216d('0x39')]]['transferexten']=_0x3932a3[_0x216d('0x3e')];agents[_0x3932a3[_0x216d('0x39')]][_0x216d('0x3f')]=agents[_0x3932a3['transfereruniqueid']][_0x216d('0x6')];}}catch(_0x10fe2e){utils[_0x216d('0x26')](util[_0x216d('0x4')]('[%s][agents][blindtransfer]',_0x3932a3[_0x216d('0x6')]),_0x10fe2e);}};exports[_0x216d('0x40')]=function(_0x18a0bf){try{utils[_0x216d('0x17')](util['format'](_0x216d('0x41'),_0x18a0bf[_0x216d('0x42')]),_0x18a0bf);if(_0x18a0bf['origtransfereruniqueid']==_0x18a0bf[_0x216d('0x43')]){if(!_['isNil'](agents[_0x18a0bf[_0x216d('0x44')]])){utils[_0x216d('0x3')](util[_0x216d('0x4')](_0x216d('0x45'),_0x18a0bf[_0x216d('0x42')],agents[_0x18a0bf[_0x216d('0x44')]][_0x216d('0x8')]));agents[_0x18a0bf[_0x216d('0x44')]][_0x216d('0x3b')]=!![];agents[_0x18a0bf['secondtransfereruniqueid']][_0x216d('0x3c')]=_0x216d('0x46');agents[_0x18a0bf['secondtransfereruniqueid']][_0x216d('0x47')]=_0x18a0bf[_0x216d('0x48')];agents[_0x18a0bf['secondtransfereruniqueid']]['transferuniqueid']=_0x18a0bf[_0x216d('0x42')];}if(_0x18a0bf['transfereeuniqueid']&&agents[_0x18a0bf[_0x216d('0x49')]]){agents[_0x18a0bf[_0x216d('0x49')]][_0x216d('0x4a')]=0x1;transfers[_0x18a0bf['transfereeuniqueid']]=_[_0x216d('0x4b')](agents[_0x18a0bf['transfereeuniqueid']]);transfers[_0x18a0bf['transfereeuniqueid']][_0x216d('0xa')]=agents[_0x18a0bf[_0x216d('0x44')]]['calleridnum'];transfers[_0x18a0bf[_0x216d('0x49')]][_0x216d('0x4c')]=agents[_0x18a0bf[_0x216d('0x44')]][_0x216d('0x4c')];transfers[_0x18a0bf[_0x216d('0x49')]][_0x216d('0x19')]=utils['now']();transfers[_0x18a0bf['transfereeuniqueid']][_0x216d('0x37')]=utils[_0x216d('0x21')]();transfers[_0x18a0bf[_0x216d('0x49')]][_0x216d('0x23')]=0x0;transfers[_0x18a0bf[_0x216d('0x49')]][_0x216d('0x4a')]=0x2;}}else if(_0x18a0bf[_0x216d('0x44')]==_0x18a0bf[_0x216d('0x4d')]){if(!_[_0x216d('0x1e')](agents[_0x18a0bf[_0x216d('0x42')]])){utils[_0x216d('0x3')](util[_0x216d('0x4')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x18a0bf['origtransfereruniqueid'],agents[_0x18a0bf[_0x216d('0x42')]][_0x216d('0x8')]));agents[_0x18a0bf['origtransfereruniqueid']][_0x216d('0x3b')]=!![];agents[_0x18a0bf['origtransfereruniqueid']]['transfertype']=_0x216d('0x46');agents[_0x18a0bf[_0x216d('0x42')]][_0x216d('0x47')]=_0x18a0bf[_0x216d('0x4e')];agents[_0x18a0bf[_0x216d('0x42')]][_0x216d('0x3f')]=_0x18a0bf[_0x216d('0x44')];}if(_0x18a0bf[_0x216d('0x4f')]&&agents[_0x18a0bf[_0x216d('0x4f')]]){agents[_0x18a0bf[_0x216d('0x4f')]][_0x216d('0x4a')]=0x1;transfers[_0x18a0bf[_0x216d('0x4f')]]=_[_0x216d('0x4b')](agents[_0x18a0bf[_0x216d('0x4f')]]);transfers[_0x18a0bf[_0x216d('0x4f')]][_0x216d('0xa')]=agents[_0x18a0bf[_0x216d('0x42')]][_0x216d('0xa')];transfers[_0x18a0bf[_0x216d('0x4f')]][_0x216d('0x4c')]=agents[_0x18a0bf[_0x216d('0x42')]][_0x216d('0x4c')];transfers[_0x18a0bf['transfertargetuniqueid']][_0x216d('0x19')]=utils['now']();transfers[_0x18a0bf[_0x216d('0x4f')]]['agentconnectAt']=utils[_0x216d('0x21')]();transfers[_0x18a0bf[_0x216d('0x4f')]]['holdtime']=0x0;transfers[_0x18a0bf[_0x216d('0x4f')]][_0x216d('0x4a')]=0x2;}}}catch(_0x3729b6){utils[_0x216d('0x26')](util[_0x216d('0x4')](_0x216d('0x41'),_0x18a0bf[_0x216d('0x42')]),_0x3729b6);}};exports[_0x216d('0x50')]=function(_0x2727c7){try{utils['debug'](util[_0x216d('0x4')](_0x216d('0x51'),_0x2727c7[_0x216d('0x6')]),_0x2727c7);if(agents[_0x2727c7['uniqueid']]&&agents[_0x2727c7['uniqueid']]['reason']==='timeout'){if(_0x2727c7[_0x216d('0x52')]==='21'){agents[_0x2727c7['uniqueid']][_0x216d('0x2d')]=_0x216d('0x53');agents[_0x2727c7[_0x216d('0x6')]][_0x216d('0xc')]=_0x216d('0x53');}utils[_0x216d('0x3')](util[_0x216d('0x4')](_0x216d('0x54'),_0x2727c7[_0x216d('0x6')],agents[_0x2727c7['uniqueid']][_0x216d('0x8')],agents[_0x2727c7[_0x216d('0x6')]]['reason'],agents[_0x2727c7[_0x216d('0x6')]][_0x216d('0xc')]));writeDB(agents[_0x2727c7[_0x216d('0x6')]]);var _0x1650fd=unanswered[_0x216d('0x55')](_0x2727c7[_0x216d('0x6')]);if(_0x1650fd>-0x1){unanswered['splice'](_0x1650fd,0x1);}}if(transfers[_0x2727c7['uniqueid']]){transfers[_0x2727c7[_0x216d('0x6')]]['agentcomplete']=!![];transfers[_0x2727c7[_0x216d('0x6')]][_0x216d('0x35')]=utils[_0x216d('0x21')]();transfers[_0x2727c7['uniqueid']]['talktime']=utils['diffTime'](transfers[_0x2727c7[_0x216d('0x6')]][_0x216d('0x35')],transfers[_0x2727c7[_0x216d('0x6')]][_0x216d('0x37')]);transfers[_0x2727c7['uniqueid']][_0x216d('0x2d')]=_0x216d('0x56');transfers[_0x2727c7[_0x216d('0x6')]]['lastevent']='complete';utils[_0x216d('0x3')](util[_0x216d('0x4')](_0x216d('0x54'),_0x2727c7[_0x216d('0x6')],transfers[_0x2727c7[_0x216d('0x6')]]['membername'],transfers[_0x2727c7[_0x216d('0x6')]][_0x216d('0x2d')],transfers[_0x2727c7[_0x216d('0x6')]][_0x216d('0xc')]));writeDB(transfers[_0x2727c7['uniqueid']],!![]);}if(agents[_0x2727c7[_0x216d('0x6')]]&&agents[_0x2727c7['uniqueid']][_0x216d('0x37')]){agents[_0x2727c7['uniqueid']][_0x216d('0x11')]=!![];agents[_0x2727c7[_0x216d('0x6')]][_0x216d('0x35')]=utils[_0x216d('0x21')]();agents[_0x2727c7[_0x216d('0x6')]]['talktime']=utils[_0x216d('0x36')](agents[_0x2727c7['uniqueid']]['agentcompleteAt'],agents[_0x2727c7['uniqueid']]['agentconnectAt']);agents[_0x2727c7[_0x216d('0x6')]][_0x216d('0x2d')]=agents[_0x2727c7[_0x216d('0x6')]]['transfer']?'transfer':_0x216d('0x56');agents[_0x2727c7[_0x216d('0x6')]][_0x216d('0xc')]=_0x216d('0x57');utils[_0x216d('0x3')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x2727c7[_0x216d('0x6')],agents[_0x2727c7['uniqueid']][_0x216d('0x8')],agents[_0x2727c7['uniqueid']][_0x216d('0x2d')],agents[_0x2727c7[_0x216d('0x6')]][_0x216d('0xc')]));writeDB(agents[_0x2727c7[_0x216d('0x6')]]);}}catch(_0x4899d1){utils['error'](util[_0x216d('0x4')](_0x216d('0x51'),_0x2727c7[_0x216d('0x6')]),_0x4899d1);}};
\ No newline at end of file
+var _0x96cc=['rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','agent','lodash','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acwtime','acwTimeout','CreateVoiceAgentReport','request','agentcalled','debug','destuniqueid','agentcalledAt','now','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','timeout','ringtime','talktime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','agentconnectAt','connectedlinename','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','calleridnum','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause'];(function(_0xb252cf,_0x267eca){var _0x624db1=function(_0x5e0896){while(--_0x5e0896){_0xb252cf['push'](_0xb252cf['shift']());}};_0x624db1(++_0x267eca);}(_0x96cc,0x16c));var _0xc96c=function(_0x51dbba,_0x817f0d){_0x51dbba=_0x51dbba-0x0;var _0x34906d=_0x96cc[_0x51dbba];return _0x34906d;};'use strict';var _=require(_0xc96c('0x0'));var util=require('util');var utils=require(_0xc96c('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x5f11f2,_0x30bf8a){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x4'),_0x5f11f2[_0xc96c('0x5')],_0x5f11f2[_0xc96c('0x6')],_0x5f11f2[_0xc96c('0x7')],_0x5f11f2[_0xc96c('0x8')],_0x5f11f2[_0xc96c('0x9')],_0x5f11f2['calleridnum'],_0x5f11f2[_0xc96c('0xa')],_0x5f11f2[_0xc96c('0xb')]));if(_0x5f11f2[_0xc96c('0x7')]){utils[_0xc96c('0xc')](_0x5f11f2[_0xc96c('0x7')])[_0xc96c('0xd')](function(_0x36b2b4){if(_0x36b2b4){_0x5f11f2['type']=_0x36b2b4[_0xc96c('0xe')];_0x5f11f2[_0xc96c('0xf')]=_0x5f11f2[_0xc96c('0x10')]?_0x36b2b4['acw']:![];_0x5f11f2[_0xc96c('0x11')]=_0x5f11f2['agentacw']?_0x36b2b4[_0xc96c('0x12')]:0x0;}utils['request'](_0xc96c('0x13'),_0x5f11f2);});}else{utils[_0xc96c('0x14')](_0xc96c('0x13'),_0x5f11f2);}if(_0x30bf8a){delete transfers[_0x5f11f2[_0xc96c('0x5')]];}else{delete agents[_0x5f11f2['destuniqueid']];}}exports[_0xc96c('0x15')]=function(_0x43fcaa){try{utils[_0xc96c('0x16')](util[_0xc96c('0x3')]('[%s][agents][agentcalled]',_0x43fcaa[_0xc96c('0x5')]),_0x43fcaa);agents[_0x43fcaa[_0xc96c('0x17')]]=_0x43fcaa;agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0x18')]=utils[_0xc96c('0x19')]();agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x1a');agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0xa')]=null;agents[_0x43fcaa[_0xc96c('0x17')]]['connectedlinename']=null;utils['info'](util[_0xc96c('0x3')](_0xc96c('0x1b'),_0x43fcaa[_0xc96c('0x5')],agents[_0x43fcaa[_0xc96c('0x17')]]['membername'],_0x43fcaa[_0xc96c('0x17')]));}catch(_0x100fdb){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x1d'),_0x43fcaa[_0xc96c('0x5')]),_0x100fdb);}};exports[_0xc96c('0x1e')]=function(_0x41daba){try{if(!_[_0xc96c('0x1f')](agents[_0x41daba[_0xc96c('0x17')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x20'),_0x41daba[_0xc96c('0x5')]),_0x41daba);utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x21'),_0x41daba['uniqueid'],agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x8')],_0x41daba[_0xc96c('0x17')]));agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x1e')]=!![];agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x22')]=utils[_0xc96c('0x19')]();agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0xb')]='timeout';agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x23')]=_0xc96c('0x24');agents[_0x41daba[_0xc96c('0x17')]]['holdtime']=_0x41daba['ringtime']?parseInt(_0x41daba[_0xc96c('0x25')])/0x3e8:0x0;agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x26')]=0x0;unanswered[_0xc96c('0x27')](_0x41daba[_0xc96c('0x17')]);}}catch(_0x5e1727){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x20'),_0x41daba[_0xc96c('0x5')]),_0x5e1727);}};exports[_0xc96c('0x28')]=function(_0x40c72b){try{_[_0xc96c('0x29')](agents,function(_0x328ee4,_0x556108){if(_0x328ee4[_0xc96c('0x5')]==_0x40c72b['uniqueid']&&!_[_0xc96c('0x2a')](unanswered,_0x328ee4[_0xc96c('0x17')])){utils[_0xc96c('0x16')](util['format'](_0xc96c('0x2b'),_0x40c72b[_0xc96c('0x5')]),_0x40c72b);utils[_0xc96c('0x2')](util[_0xc96c('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x40c72b['uniqueid'],_0x328ee4[_0xc96c('0x8')],_0x328ee4[_0xc96c('0x17')]));_0x328ee4[_0xc96c('0x1e')]=!![];_0x328ee4['agentringnoanswerAt']=utils[_0xc96c('0x19')]();_0x328ee4[_0xc96c('0xb')]=_0xc96c('0x2c');_0x328ee4[_0xc96c('0x23')]='abandoned';_0x328ee4[_0xc96c('0x2d')]=_0x40c72b[_0xc96c('0x2d')];_0x328ee4['talktime']=0x0;writeDB(_0x328ee4);}});}catch(_0x2b1dec){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x2b'),_0x40c72b[_0xc96c('0x5')]),_0x2b1dec);}};exports[_0xc96c('0x2e')]=function(_0x4e8241){try{if(agents[_0x4e8241[_0xc96c('0x17')]]){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x2f'),_0x4e8241[_0xc96c('0x5')]),_0x4e8241);utils[_0xc96c('0x2')](util['format']('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x4e8241[_0xc96c('0x5')],agents[_0x4e8241[_0xc96c('0x17')]]['membername'],_0x4e8241['destuniqueid']));agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x30')]=utils[_0xc96c('0x19')]();agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0xa')]=_0x4e8241[_0xc96c('0xa')];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x31')]=_0x4e8241[_0xc96c('0x31')];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x2d')]=_0x4e8241['ringtime'];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x32');_[_0xc96c('0x29')](agents,function(_0x4eb180,_0x167671){if(_0x4eb180[_0xc96c('0x17')]!=_0x4e8241[_0xc96c('0x17')]&&_0x4eb180['uniqueid']==_0x4e8241['uniqueid']){_0x4eb180[_0xc96c('0x26')]=0x0;_0x4eb180[_0xc96c('0x2d')]=_0x4e8241[_0xc96c('0x25')];_0x4eb180['agentringnoanswer']=!![];_0x4eb180[_0xc96c('0x22')]=utils[_0xc96c('0x19')]();_0x4eb180[_0xc96c('0xb')]=_0xc96c('0x33');_0x4eb180[_0xc96c('0x23')]=_0xc96c('0x33');_0x4eb180[_0xc96c('0x34')]=_0x4e8241[_0xc96c('0x17')];_0x4eb180[_0xc96c('0x35')]=_0x4e8241['membername'];writeDB(_0x4eb180);}});}}catch(_0x4c3088){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x2f'),_0x4e8241[_0xc96c('0x5')]),_0x4c3088);}};exports['agentcomplete']=function(_0x5ee6ac){try{if(!_[_0xc96c('0x1f')](agents[_0x5ee6ac[_0xc96c('0x17')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x36'),_0x5ee6ac[_0xc96c('0x5')]),_0x5ee6ac);utils[_0xc96c('0x2')](util['format'](_0xc96c('0x37'),_0x5ee6ac[_0xc96c('0x5')],agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x8')],_0x5ee6ac['destuniqueid']));agents[_0x5ee6ac['destuniqueid']][_0xc96c('0x10')]=!![];agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x38')]=utils[_0xc96c('0x19')]();agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x38')],agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x30')]);agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x23')]=_0x5ee6ac['reason'];agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x3a');writeDB(agents[_0x5ee6ac[_0xc96c('0x17')]]);}}catch(_0x56bce1){utils[_0xc96c('0x1c')](util['format'](_0xc96c('0x36'),_0x5ee6ac[_0xc96c('0x5')]),_0x56bce1);}};exports['blindtransfer']=function(_0x2581ae){try{if(!_[_0xc96c('0x1f')](agents[_0x2581ae[_0xc96c('0x3b')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x3c'),_0x2581ae['uniqueid']),_0x2581ae);utils['info'](util['format'](_0xc96c('0x3d'),_0x2581ae['uniqueid'],agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x8')],agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x5')]));agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x3e')]=!![];agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x3f')]=_0xc96c('0x40');agents[_0x2581ae[_0xc96c('0x3b')]]['transferexten']=_0x2581ae[_0xc96c('0x41')];agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x42')]=agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x5')];}}catch(_0xcde9){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')]('[%s][agents][blindtransfer]',_0x2581ae['uniqueid']),_0xcde9);}};exports['attendedtransfer']=function(_0x5c3d95){try{utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x43'),_0x5c3d95[_0xc96c('0x44')]),_0x5c3d95);if(_0x5c3d95[_0xc96c('0x44')]==_0x5c3d95[_0xc96c('0x45')]){if(!_[_0xc96c('0x1f')](agents[_0x5c3d95['secondtransfereruniqueid']])){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x46'),_0x5c3d95[_0xc96c('0x44')],agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x8')]));agents[_0x5c3d95[_0xc96c('0x47')]]['transfer']=!![];agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x3f')]=_0xc96c('0x48');agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x49')]=_0x5c3d95[_0xc96c('0x4a')];agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x42')]=_0x5c3d95[_0xc96c('0x44')];}if(_0x5c3d95[_0xc96c('0x4b')]&&agents[_0x5c3d95[_0xc96c('0x4b')]]){agents[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4c')]=0x1;transfers[_0x5c3d95[_0xc96c('0x4b')]]=_['clone'](agents[_0x5c3d95[_0xc96c('0x4b')]]);transfers[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4d')]=agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x4d')];transfers[_0x5c3d95['transfereeuniqueid']][_0xc96c('0x4e')]=agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x4e')];transfers[_0x5c3d95[_0xc96c('0x4b')]]['agentcalledAt']=utils[_0xc96c('0x19')]();transfers[_0x5c3d95[_0xc96c('0x4b')]]['agentconnectAt']=utils['now']();transfers[_0x5c3d95['transfereeuniqueid']][_0xc96c('0x2d')]=0x0;transfers[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4c')]=0x2;}}else if(_0x5c3d95[_0xc96c('0x47')]==_0x5c3d95[_0xc96c('0x4f')]){if(!_['isNil'](agents[_0x5c3d95['origtransfereruniqueid']])){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x46'),_0x5c3d95[_0xc96c('0x44')],agents[_0x5c3d95[_0xc96c('0x44')]]['membername']));agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x3e')]=!![];agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x3f')]='ATTENDED';agents[_0x5c3d95['origtransfereruniqueid']][_0xc96c('0x49')]=_0x5c3d95[_0xc96c('0x50')];agents[_0x5c3d95['origtransfereruniqueid']][_0xc96c('0x42')]=_0x5c3d95['secondtransfereruniqueid'];}if(_0x5c3d95[_0xc96c('0x51')]&&agents[_0x5c3d95[_0xc96c('0x51')]]){agents[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4c')]=0x1;transfers[_0x5c3d95[_0xc96c('0x51')]]=_[_0xc96c('0x52')](agents[_0x5c3d95[_0xc96c('0x51')]]);transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4d')]=agents[_0x5c3d95[_0xc96c('0x44')]]['calleridnum'];transfers[_0x5c3d95[_0xc96c('0x51')]]['calleridname']=agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x4e')];transfers[_0x5c3d95['transfertargetuniqueid']][_0xc96c('0x18')]=utils['now']();transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x30')]=utils[_0xc96c('0x19')]();transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x2d')]=0x0;transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4c')]=0x2;}}}catch(_0xbd6525){utils[_0xc96c('0x1c')](util['format'](_0xc96c('0x43'),_0x5c3d95[_0xc96c('0x44')]),_0xbd6525);}};exports[_0xc96c('0x53')]=function(_0x43f94e){try{utils['debug'](util[_0xc96c('0x3')](_0xc96c('0x54'),_0x43f94e['uniqueid']),_0x43f94e);if(agents[_0x43f94e['uniqueid']]&&agents[_0x43f94e[_0xc96c('0x5')]]['reason']===_0xc96c('0x24')){if(_0x43f94e[_0xc96c('0x55')]==='21'){agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x23')]=_0xc96c('0x56');agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]=_0xc96c('0x56');}utils[_0xc96c('0x2')](util['format'](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],agents[_0x43f94e[_0xc96c('0x5')]]['membername'],agents[_0x43f94e['uniqueid']][_0xc96c('0x23')],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]));writeDB(agents[_0x43f94e[_0xc96c('0x5')]]);var _0x1efa88=unanswered[_0xc96c('0x58')](_0x43f94e[_0xc96c('0x5')]);if(_0x1efa88>-0x1){unanswered['splice'](_0x1efa88,0x1);}}if(transfers[_0x43f94e[_0xc96c('0x5')]]){transfers[_0x43f94e[_0xc96c('0x5')]]['agentcomplete']=!![];transfers[_0x43f94e[_0xc96c('0x5')]]['agentcompleteAt']=utils[_0xc96c('0x19')]();transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')],transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]);transfers[_0x43f94e[_0xc96c('0x5')]]['reason']=_0xc96c('0x59');transfers[_0x43f94e[_0xc96c('0x5')]]['lastevent']=_0xc96c('0x3a');utils['info'](util[_0xc96c('0x3')](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],transfers[_0x43f94e['uniqueid']][_0xc96c('0x8')],transfers[_0x43f94e[_0xc96c('0x5')]]['reason'],transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]));writeDB(transfers[_0x43f94e[_0xc96c('0x5')]],!![]);}if(agents[_0x43f94e['uniqueid']]&&agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]){agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x10')]=!![];agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')]=utils[_0xc96c('0x19')]();agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]);agents[_0x43f94e[_0xc96c('0x5')]]['reason']=agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x3e')]?_0xc96c('0x3e'):_0xc96c('0x59');agents[_0x43f94e[_0xc96c('0x5')]]['lastevent']=_0xc96c('0x3a');utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],agents[_0x43f94e['uniqueid']]['membername'],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x23')],agents[_0x43f94e['uniqueid']][_0xc96c('0xb')]));writeDB(agents[_0x43f94e[_0xc96c('0x5')]]);}}catch(_0x563449){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')]('[%s][agents][hangup]',_0x43f94e[_0xc96c('0x5')]),_0x563449);}};
\ No newline at end of file
index 6abd9df..e9e982b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fef=['startsWith','appdata','cdr','split','lastIndexOf','includes','noop','execif','gotoif','util','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','error','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','answertime','toNumber','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','cause-txt','duration','diffTime','endtime','starttime','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','destinationchannel','_attended','transfertargetchannel','origtransfererchannel','userfield','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x6fef,0x76));var _0xf6fe=function(_0x32cae2,_0x1d8e53){_0x32cae2=_0x32cae2-0x0;var _0xbc434b=_0x6fef[_0x32cae2];return _0xbc434b;};'use strict';var _=require('lodash');var util=require(_0xf6fe('0x0'));var utils=require('./utils');var transfers=require('./transfers.controller');var dispositions=[_0xf6fe('0x1'),_0xf6fe('0x2'),_0xf6fe('0x2'),_0xf6fe('0x1'),_0xf6fe('0x1'),'NO\x20ANSWER',_0xf6fe('0x3'),_0xf6fe('0x4'),_0xf6fe('0x2'),'FAILED',_0xf6fe('0x2')];var channels={};function writeDB(_0x491d24){var _0x47e85d;if(transfers['blinds'][_0x491d24[_0xf6fe('0x5')]]){_0x47e85d=_0x491d24[_0xf6fe('0x5')];_0x491d24[_0xf6fe('0x5')]=transfers[_0xf6fe('0x6')][_0x491d24['uniqueid']][_0xf6fe('0x7')];}utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0xa'),_0x491d24['uniqueid'],_0x491d24[_0xf6fe('0xb')],_0x491d24['queue'],_0x491d24[_0xf6fe('0xc')],_0x491d24['interface'],_0x491d24[_0xf6fe('0xd')],_0x491d24[_0xf6fe('0xe')],_0x491d24[_0xf6fe('0xf')]));if(_0x491d24[_0xf6fe('0x10')]){utils[_0xf6fe('0x11')](_0x491d24[_0xf6fe('0x10')])['then'](function(_0x13d5a1){if(_0x13d5a1){_0x491d24['UserId']=_0x13d5a1['id'];}utils[_0xf6fe('0x12')](_0xf6fe('0x13'),_0x491d24);});}else{utils[_0xf6fe('0x12')](_0xf6fe('0x13'),_0x491d24);}if(channels[_0x491d24['uniqueid']]){delete channels[_0x491d24['uniqueid']];}else if(_0x47e85d&&channels[_0x47e85d]){delete transfers[_0xf6fe('0x6')][_0x47e85d];delete channels[_0x47e85d];}}exports[_0xf6fe('0x14')]=function(_0x2b0739){try{utils[_0xf6fe('0x15')](util[_0xf6fe('0x9')](_0xf6fe('0x16'),_0x2b0739[_0xf6fe('0x5')]),_0x2b0739);if(_0x2b0739[_0xf6fe('0x5')]==_0x2b0739[_0xf6fe('0x17')]&&_0x2b0739[_0xf6fe('0xb')]!=_0xf6fe('0x18')){utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0x19'),_0x2b0739[_0xf6fe('0x5')],_0x2b0739[_0xf6fe('0x1a')],_0x2b0739[_0xf6fe('0x1b')]));channels[_0x2b0739[_0xf6fe('0x5')]]={'uniqueid':_0x2b0739[_0xf6fe('0x5')],'accountcode':_0x2b0739[_0xf6fe('0x10')],'source':_0x2b0739[_0xf6fe('0xd')],'destination':_0x2b0739['exten'],'destinationcontext':_0x2b0739['context'],'channel':_0x2b0739[_0xf6fe('0xb')],'starttime':utils[_0xf6fe('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xf6fe('0x1d')};}}catch(_0x5dc770){utils[_0xf6fe('0x1e')](util[_0xf6fe('0x9')]('[%s][calls][newchannel]',_0x2b0739[_0xf6fe('0x5')]),_0x5dc770);}};exports['newstate']=function(_0x3bb51f){try{utils[_0xf6fe('0x15')](util[_0xf6fe('0x9')]('[%s][calls][newstate]',_0x3bb51f[_0xf6fe('0x5')]),_0x3bb51f);if(!_[_0xf6fe('0x1f')](channels[_0x3bb51f[_0xf6fe('0x5')]])&&_0x3bb51f[_0xf6fe('0x20')]==0x6){utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0x21'),_0x3bb51f[_0xf6fe('0x5')],_0x3bb51f[_0xf6fe('0x1a')],_0x3bb51f[_0xf6fe('0xb')]));if(_[_0xf6fe('0x1f')](channels[_0x3bb51f[_0xf6fe('0x5')]][_0xf6fe('0x22')])){channels[_0x3bb51f['uniqueid']]['systemanswertime']=utils[_0xf6fe('0x1c')]();}}else if(!_[_0xf6fe('0x1f')](channels[_0x3bb51f['linkedid']])&&_0x3bb51f['channelstate']==0x6&&_0x3bb51f[_0xf6fe('0x1a')]!=_0xf6fe('0x23')){utils[_0xf6fe('0x8')](util['format'](_0xf6fe('0x24'),_0x3bb51f['uniqueid'],_0x3bb51f[_0xf6fe('0x17')],_0x3bb51f[_0xf6fe('0x1a')],_0x3bb51f[_0xf6fe('0xb')]));channels[_0x3bb51f['linkedid']][_0xf6fe('0x10')]=_0x3bb51f[_0xf6fe('0x10')];channels[_0x3bb51f[_0xf6fe('0x17')]]['destinationchannel']=_0x3bb51f[_0xf6fe('0xb')];if(_[_0xf6fe('0x1f')](channels[_0x3bb51f['linkedid']][_0xf6fe('0x25')])){channels[_0x3bb51f[_0xf6fe('0x17')]][_0xf6fe('0x25')]=utils[_0xf6fe('0x1c')]();}channels[_0x3bb51f['linkedid']]['disposition']=dispositions[_[_0xf6fe('0x26')](_0x3bb51f[_0xf6fe('0x20')])]||_0xf6fe('0x3');}}catch(_0x69dda){utils[_0xf6fe('0x1e')](util['format'](_0xf6fe('0x27'),_0x3bb51f['uniqueid']),_0x69dda);}};exports[_0xf6fe('0x28')]=function(_0xdd06ef){try{if(!_[_0xf6fe('0x1f')](channels[_0xdd06ef['uniqueid']])){utils[_0xf6fe('0x15')](util[_0xf6fe('0x9')](_0xf6fe('0x29'),_0xdd06ef[_0xf6fe('0x5')]),_0xdd06ef);if(_[_0xf6fe('0x1f')](channels[_0xdd06ef[_0xf6fe('0x5')]][_0xf6fe('0x2a')])){channels[_0xdd06ef['uniqueid']][_0xf6fe('0x2a')]=_0xdd06ef[_0xf6fe('0x2b')]+'\x20<'+_0xdd06ef['calleridnum']+'>';}utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0xdd06ef[_0xf6fe('0x5')],channels[_0xdd06ef[_0xf6fe('0x5')]][_0xf6fe('0x2a')],_0xdd06ef[_0xf6fe('0x2c')]));channels[_0xdd06ef[_0xf6fe('0x5')]]['endtime']=utils[_0xf6fe('0x1c')]();channels[_0xdd06ef[_0xf6fe('0x5')]][_0xf6fe('0x2d')]=utils[_0xf6fe('0x2e')](channels[_0xdd06ef[_0xf6fe('0x5')]][_0xf6fe('0x2f')],channels[_0xdd06ef[_0xf6fe('0x5')]][_0xf6fe('0x30')]);channels[_0xdd06ef[_0xf6fe('0x5')]]['billableseconds']=channels[_0xdd06ef[_0xf6fe('0x5')]][_0xf6fe('0x25')]?utils['diffTime'](channels[_0xdd06ef[_0xf6fe('0x5')]][_0xf6fe('0x2f')],channels[_0xdd06ef['uniqueid']]['answertime']):0x0;writeDB(channels[_0xdd06ef['uniqueid']]);}}catch(_0x45f733){utils[_0xf6fe('0x1e')](util[_0xf6fe('0x9')](_0xf6fe('0x29'),_0xdd06ef['uniqueid']),_0x45f733);}};exports[_0xf6fe('0x31')]=function(_0x52309b){try{if(!_['isNil'](channels[_0x52309b['localtwolinkedid']])){utils[_0xf6fe('0x15')](util[_0xf6fe('0x9')](_0xf6fe('0x32'),_0x52309b[_0xf6fe('0x33')]),_0x52309b);if(channels[_0x52309b[_0xf6fe('0x34')]][_0xf6fe('0xb')]==_0x52309b[_0xf6fe('0x35')]){utils[_0xf6fe('0x8')](util['format'](_0xf6fe('0x36'),_0x52309b[_0xf6fe('0x33')],_0x52309b[_0xf6fe('0x34')],_0x52309b[_0xf6fe('0x37')]));channels[_0x52309b[_0xf6fe('0x34')]][_0xf6fe('0x38')]=_0x52309b[_0xf6fe('0x37')];channels[_0x52309b[_0xf6fe('0x34')]]['userfield']=_0xf6fe('0x39');}else if(channels[_0x52309b[_0xf6fe('0x34')]][_0xf6fe('0xb')]=_0x52309b[_0xf6fe('0x3a')]){utils['info'](util['format'](_0xf6fe('0x36'),_0x52309b['origtransfereruniqueid'],_0x52309b['localtwolinkedid'],_0x52309b[_0xf6fe('0x3b')]));channels[_0x52309b[_0xf6fe('0x34')]]['destinationchannel']=_0x52309b[_0xf6fe('0x3b')];channels[_0x52309b[_0xf6fe('0x34')]][_0xf6fe('0x3c')]='_attended';}}}catch(_0x3b8165){utils[_0xf6fe('0x1e')](util[_0xf6fe('0x9')](_0xf6fe('0x32'),_0x52309b[_0xf6fe('0x33')]),_0x3b8165);}};exports[_0xf6fe('0x3d')]=function(_0x272b99){try{if(!_[_0xf6fe('0x1f')](channels[_0x272b99[_0xf6fe('0x5')]])){utils[_0xf6fe('0x15')](util['format'](_0xf6fe('0x3e'),_0x272b99['uniqueid']),_0x272b99);channels[_0x272b99['uniqueid']][_0xf6fe('0x3f')]=utils[_0xf6fe('0x1c')]();utils['info'](util[_0xf6fe('0x9')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x272b99[_0xf6fe('0x5')],channels[_0x272b99['uniqueid']]['musiconholdstartAt']));}}catch(_0xd026b1){utils[_0xf6fe('0x1e')](util[_0xf6fe('0x9')](_0xf6fe('0x3e'),_0x272b99[_0xf6fe('0x5')]),_0xd026b1);}};exports[_0xf6fe('0x40')]=function(_0x25af94){try{if(!_[_0xf6fe('0x1f')](channels[_0x25af94[_0xf6fe('0x5')]])){utils[_0xf6fe('0x15')](util['format'](_0xf6fe('0x41'),_0x25af94[_0xf6fe('0x5')]),_0x25af94);if(!_[_0xf6fe('0x1f')](channels[_0x25af94[_0xf6fe('0x5')]][_0xf6fe('0x3f')])){channels[_0x25af94[_0xf6fe('0x5')]]['mohtime']+=utils[_0xf6fe('0x2e')](utils[_0xf6fe('0x1c')](),channels[_0x25af94[_0xf6fe('0x5')]][_0xf6fe('0x3f')]);utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0x42'),_0x25af94[_0xf6fe('0x5')],channels[_0x25af94[_0xf6fe('0x5')]]['mohtime']));delete channels[_0x25af94[_0xf6fe('0x5')]][_0xf6fe('0x3f')];}}}catch(_0x2f31e9){utils[_0xf6fe('0x1e')](util[_0xf6fe('0x9')](_0xf6fe('0x41'),_0x25af94[_0xf6fe('0x5')]),_0x2f31e9);}};exports[_0xf6fe('0x43')]=function(_0x11b9d9){try{if(!_['isNil'](channels[_0x11b9d9[_0xf6fe('0x5')]])){utils[_0xf6fe('0x15')](util[_0xf6fe('0x9')]('[%s][calls][varset]',_0x11b9d9[_0xf6fe('0x5')]),_0x11b9d9);if(!_[_0xf6fe('0x1f')](_0x11b9d9[_0xf6fe('0x44')]['xmd-originatecalleridnum'])){utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0x45'),_0x11b9d9[_0xf6fe('0x5')],_0x11b9d9['value']));channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x46')]=_0x11b9d9[_0xf6fe('0x47')];}if(!_[_0xf6fe('0x1f')](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x48')])){utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0x49'),_0x11b9d9[_0xf6fe('0x5')],_0x11b9d9[_0xf6fe('0x47')]));channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x4a')]=_0x11b9d9[_0xf6fe('0x47')];channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x2a')]='\x22'+_0x11b9d9[_0xf6fe('0x47')]+_0xf6fe('0x4b')+_0x11b9d9[_0xf6fe('0x47')]+'>';}if(!_['isNil'](_0x11b9d9['variable'][_0xf6fe('0x4c')])||!_[_0xf6fe('0x1f')](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x4d')])){utils['info'](util[_0xf6fe('0x9')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x11b9d9[_0xf6fe('0x5')],!_['isNil'](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x4c')])?'xmd-callerid-preview':'xmd-callerid',_0x11b9d9['value']));channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x2a')]=_0x11b9d9[_0xf6fe('0x47')];}if(!_[_0xf6fe('0x1f')](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x4e')])||!_[_0xf6fe('0x1f')](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x4f')])){utils['info'](util[_0xf6fe('0x9')](_0xf6fe('0x50'),_0x11b9d9[_0xf6fe('0x5')],!_[_0xf6fe('0x1f')](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x4e')])?_0xf6fe('0x4e'):_0xf6fe('0x4f'),_0x11b9d9[_0xf6fe('0x47')]));channels[_0x11b9d9[_0xf6fe('0x5')]]['lastapplication']=_0xf6fe('0x51');channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x52')]=_0x11b9d9[_0xf6fe('0x47')];channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x53')]=!![];}if(!_[_0xf6fe('0x1f')](_0x11b9d9['variable'][_0xf6fe('0x54')])){utils['info'](util[_0xf6fe('0x9')](_0xf6fe('0x55'),_0x11b9d9[_0xf6fe('0x5')],_0x11b9d9[_0xf6fe('0x47')]));channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x56')]=_0x11b9d9[_0xf6fe('0x47')];}if(!_[_0xf6fe('0x1f')](_0x11b9d9['variable'][_0xf6fe('0x57')])){utils['info'](util[_0xf6fe('0x9')](_0xf6fe('0x58'),_0x11b9d9[_0xf6fe('0x5')],_0x11b9d9[_0xf6fe('0x47')]));channels[_0x11b9d9['uniqueid']]['type']=_0x11b9d9[_0xf6fe('0x47')];}if(!_[_0xf6fe('0x1f')](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x59')])){utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0x5a'),_0x11b9d9[_0xf6fe('0x5')],_0x11b9d9[_0xf6fe('0x47')]));channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x5b')]=_0x11b9d9[_0xf6fe('0x47')];}if(!_['isNil'](_0x11b9d9[_0xf6fe('0x44')][_0xf6fe('0x5c')])){utils[_0xf6fe('0x8')](util[_0xf6fe('0x9')](_0xf6fe('0x5d'),_0x11b9d9[_0xf6fe('0x5')],_0x11b9d9[_0xf6fe('0x47')]));channels[_0x11b9d9[_0xf6fe('0x5')]][_0xf6fe('0x5c')]=_0x11b9d9['value'];}}}catch(_0x41af02){utils['error'](util[_0xf6fe('0x9')](_0xf6fe('0x5e'),_0x11b9d9[_0xf6fe('0x5')]),_0x41af02);}};exports['newexten']=function(_0x3a6fbe){try{if(!_[_0xf6fe('0x1f')](channels[_0x3a6fbe[_0xf6fe('0x5')]])){utils['debug'](util[_0xf6fe('0x9')](_0xf6fe('0x5f'),_0x3a6fbe[_0xf6fe('0x5')]),_0x3a6fbe);utils['info'](util['format'](_0xf6fe('0x60'),_0x3a6fbe[_0xf6fe('0x5')],_0x3a6fbe[_0xf6fe('0x61')],_0x3a6fbe['appdata']));if(_0x3a6fbe['application'][_0xf6fe('0x62')]()==_0xf6fe('0x63')&&_[_0xf6fe('0x64')](_0x3a6fbe[_0xf6fe('0x65')][_0xf6fe('0x62')](),_0xf6fe('0x66'))){var _0x4046b9=_0x3a6fbe[_0xf6fe('0x65')][_0xf6fe('0x67')]('=');var _0x31aac0=_0x4046b9[0x0]['substring'](_0x4046b9[0x0][_0xf6fe('0x68')]('(')+0x1,_0x4046b9[0x0]['lastIndexOf'](')'));var _0x27d2d3=_0x4046b9[0x1];channels[_0x3a6fbe[_0xf6fe('0x5')]][_0x31aac0]=_0x27d2d3;}if(!_[_0xf6fe('0x69')]([_0xf6fe('0x28'),_0xf6fe('0x6a'),_0xf6fe('0x6b'),_0xf6fe('0x63'),_0xf6fe('0x6c')],_0x3a6fbe[_0xf6fe('0x61')][_0xf6fe('0x62')]())){channels[_0x3a6fbe['uniqueid']]['lastapplication']=_0x3a6fbe['application'];channels[_0x3a6fbe[_0xf6fe('0x5')]][_0xf6fe('0x52')]=_0x3a6fbe[_0xf6fe('0x65')];}}}catch(_0xfebecb){utils[_0xf6fe('0x1e')](util[_0xf6fe('0x9')](_0xf6fe('0x5f'),_0x3a6fbe[_0xf6fe('0x5')]),_0xfebecb);}};
\ No newline at end of file
+var _0x0a95=['cdr','appdata','split','substring','lastIndexOf','noop','set','gotoif','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','ANSWERED','error','hangup','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','attendedtransfer','localtwolinkedid','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','varset','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid-preview','xmd-callerid','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','application','toLowerCase'];(function(_0x3c9089,_0x531504){var _0x31ceda=function(_0x1e8945){while(--_0x1e8945){_0x3c9089['push'](_0x3c9089['shift']());}};_0x31ceda(++_0x531504);}(_0x0a95,0x1ac));var _0x50a9=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x0a95[_0x1e7b16];return _0x37fadc;};'use strict';var _=require('lodash');var util=require(_0x50a9('0x0'));var utils=require(_0x50a9('0x1'));var transfers=require(_0x50a9('0x2'));var dispositions=[_0x50a9('0x3'),_0x50a9('0x4'),_0x50a9('0x4'),_0x50a9('0x3'),_0x50a9('0x3'),'NO\x20ANSWER','ANSWERED',_0x50a9('0x5'),_0x50a9('0x4'),_0x50a9('0x4'),'FAILED'];var channels={};function writeDB(_0x5c7ac5){var _0x489740;if(transfers[_0x50a9('0x6')][_0x5c7ac5['uniqueid']]){_0x489740=_0x5c7ac5[_0x50a9('0x7')];_0x5c7ac5['uniqueid']=transfers[_0x50a9('0x6')][_0x5c7ac5[_0x50a9('0x7')]][_0x50a9('0x8')];}utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0xb'),_0x5c7ac5[_0x50a9('0x7')],_0x5c7ac5[_0x50a9('0xc')],_0x5c7ac5[_0x50a9('0xd')],_0x5c7ac5[_0x50a9('0xe')],_0x5c7ac5[_0x50a9('0xf')],_0x5c7ac5[_0x50a9('0x10')],_0x5c7ac5['connectedlinenum'],_0x5c7ac5[_0x50a9('0x11')]));if(_0x5c7ac5[_0x50a9('0x12')]){utils[_0x50a9('0x13')](_0x5c7ac5['accountcode'])[_0x50a9('0x14')](function(_0x4f3742){if(_0x4f3742){_0x5c7ac5[_0x50a9('0x15')]=_0x4f3742['id'];}utils[_0x50a9('0x16')](_0x50a9('0x17'),_0x5c7ac5);});}else{utils[_0x50a9('0x16')](_0x50a9('0x17'),_0x5c7ac5);}if(channels[_0x5c7ac5[_0x50a9('0x7')]]){delete channels[_0x5c7ac5['uniqueid']];}else if(_0x489740&&channels[_0x489740]){delete transfers[_0x50a9('0x6')][_0x489740];delete channels[_0x489740];}}exports[_0x50a9('0x18')]=function(_0x37e1ab){try{utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x1a'),_0x37e1ab[_0x50a9('0x7')]),_0x37e1ab);if(_0x37e1ab[_0x50a9('0x7')]==_0x37e1ab[_0x50a9('0x1b')]&&_0x37e1ab[_0x50a9('0xc')]!=_0x50a9('0x1c')){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x1d'),_0x37e1ab['uniqueid'],_0x37e1ab[_0x50a9('0x1e')],_0x37e1ab[_0x50a9('0x1f')]));channels[_0x37e1ab['uniqueid']]={'uniqueid':_0x37e1ab[_0x50a9('0x7')],'accountcode':_0x37e1ab[_0x50a9('0x12')],'source':_0x37e1ab[_0x50a9('0x10')],'destination':_0x37e1ab[_0x50a9('0x1f')],'destinationcontext':_0x37e1ab[_0x50a9('0x1e')],'channel':_0x37e1ab[_0x50a9('0xc')],'starttime':utils[_0x50a9('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x50a9('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x725b97){utils['error'](util['format'](_0x50a9('0x1a'),_0x37e1ab[_0x50a9('0x7')]),_0x725b97);}};exports[_0x50a9('0x21')]=function(_0x3f2da4){try{utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x22'),_0x3f2da4[_0x50a9('0x7')]),_0x3f2da4);if(!_[_0x50a9('0x23')](channels[_0x3f2da4['uniqueid']])&&_0x3f2da4[_0x50a9('0x24')]==0x6){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x25'),_0x3f2da4[_0x50a9('0x7')],_0x3f2da4[_0x50a9('0x1e')],_0x3f2da4[_0x50a9('0xc')]));if(_[_0x50a9('0x23')](channels[_0x3f2da4[_0x50a9('0x7')]][_0x50a9('0x26')])){channels[_0x3f2da4[_0x50a9('0x7')]]['systemanswertime']=utils[_0x50a9('0x20')]();}}else if(!_[_0x50a9('0x23')](channels[_0x3f2da4[_0x50a9('0x1b')]])&&_0x3f2da4['channelstate']==0x6&&_0x3f2da4[_0x50a9('0x1e')]!='transfer'){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x27'),_0x3f2da4[_0x50a9('0x7')],_0x3f2da4[_0x50a9('0x1b')],_0x3f2da4['context'],_0x3f2da4[_0x50a9('0xc')]));channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x12')]=_0x3f2da4[_0x50a9('0x12')];channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x28')]=_0x3f2da4['channel'];if(_['isNil'](channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x29')])){channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x29')]=utils[_0x50a9('0x20')]();}channels[_0x3f2da4[_0x50a9('0x1b')]]['disposition']=dispositions[_[_0x50a9('0x2a')](_0x3f2da4['channelstate'])]||_0x50a9('0x2b');}}catch(_0x19d583){utils[_0x50a9('0x2c')](util['format'](_0x50a9('0x22'),_0x3f2da4[_0x50a9('0x7')]),_0x19d583);}};exports[_0x50a9('0x2d')]=function(_0x439c39){try{if(!_[_0x50a9('0x23')](channels[_0x439c39[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x2e'),_0x439c39[_0x50a9('0x7')]),_0x439c39);if(_[_0x50a9('0x23')](channels[_0x439c39['uniqueid']][_0x50a9('0x2f')])){channels[_0x439c39[_0x50a9('0x7')]]['callerid']=_0x439c39['calleridname']+'\x20<'+_0x439c39[_0x50a9('0x10')]+'>';}utils['info'](util[_0x50a9('0xa')](_0x50a9('0x30'),_0x439c39[_0x50a9('0x7')],channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x2f')],_0x439c39[_0x50a9('0x31')]));channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x32')]=utils[_0x50a9('0x20')]();channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x33')]=utils[_0x50a9('0x34')](channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x32')],channels[_0x439c39[_0x50a9('0x7')]]['starttime']);channels[_0x439c39[_0x50a9('0x7')]]['billableseconds']=channels[_0x439c39[_0x50a9('0x7')]]['answertime']?utils['diffTime'](channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x32')],channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x29')]):0x0;writeDB(channels[_0x439c39[_0x50a9('0x7')]]);}}catch(_0x28904e){utils['error'](util[_0x50a9('0xa')](_0x50a9('0x2e'),_0x439c39[_0x50a9('0x7')]),_0x28904e);}};exports[_0x50a9('0x35')]=function(_0x4900c2){try{if(!_[_0x50a9('0x23')](channels[_0x4900c2[_0x50a9('0x36')]])){utils['debug'](util[_0x50a9('0xa')]('[%s][calls][attendedtransfer]',_0x4900c2[_0x50a9('0x37')]),_0x4900c2);if(channels[_0x4900c2['localtwolinkedid']][_0x50a9('0xc')]==_0x4900c2['transfereechannel']){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x38'),_0x4900c2[_0x50a9('0x37')],_0x4900c2['localtwolinkedid'],_0x4900c2[_0x50a9('0x39')]));channels[_0x4900c2[_0x50a9('0x36')]][_0x50a9('0x28')]=_0x4900c2[_0x50a9('0x39')];channels[_0x4900c2['localtwolinkedid']][_0x50a9('0x3a')]=_0x50a9('0x3b');}else if(channels[_0x4900c2[_0x50a9('0x36')]][_0x50a9('0xc')]=_0x4900c2['transfertargetchannel']){utils['info'](util['format'](_0x50a9('0x38'),_0x4900c2[_0x50a9('0x37')],_0x4900c2[_0x50a9('0x36')],_0x4900c2[_0x50a9('0x3c')]));channels[_0x4900c2[_0x50a9('0x36')]][_0x50a9('0x28')]=_0x4900c2[_0x50a9('0x3c')];channels[_0x4900c2['localtwolinkedid']]['userfield']='_attended';}}}catch(_0x24c65d){utils[_0x50a9('0x2c')](util[_0x50a9('0xa')]('[%s][calls][attendedtransfer]',_0x4900c2['origtransfereruniqueid']),_0x24c65d);}};exports[_0x50a9('0x3d')]=function(_0x59781b){try{if(!_['isNil'](channels[_0x59781b[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x3e'),_0x59781b[_0x50a9('0x7')]),_0x59781b);channels[_0x59781b[_0x50a9('0x7')]][_0x50a9('0x3f')]=utils[_0x50a9('0x20')]();utils['info'](util[_0x50a9('0xa')](_0x50a9('0x40'),_0x59781b[_0x50a9('0x7')],channels[_0x59781b[_0x50a9('0x7')]]['musiconholdstartAt']));}}catch(_0x543c82){utils['error'](util[_0x50a9('0xa')](_0x50a9('0x3e'),_0x59781b[_0x50a9('0x7')]),_0x543c82);}};exports[_0x50a9('0x41')]=function(_0x5dc3e8){try{if(!_[_0x50a9('0x23')](channels[_0x5dc3e8[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util['format'](_0x50a9('0x42'),_0x5dc3e8[_0x50a9('0x7')]),_0x5dc3e8);if(!_[_0x50a9('0x23')](channels[_0x5dc3e8[_0x50a9('0x7')]]['musiconholdstartAt'])){channels[_0x5dc3e8['uniqueid']][_0x50a9('0x43')]+=utils[_0x50a9('0x34')](utils[_0x50a9('0x20')](),channels[_0x5dc3e8[_0x50a9('0x7')]]['musiconholdstartAt']);utils['info'](util['format']('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x5dc3e8[_0x50a9('0x7')],channels[_0x5dc3e8[_0x50a9('0x7')]]['mohtime']));delete channels[_0x5dc3e8['uniqueid']][_0x50a9('0x3f')];}}}catch(_0x9690df){utils[_0x50a9('0x2c')](util[_0x50a9('0xa')](_0x50a9('0x42'),_0x5dc3e8[_0x50a9('0x7')]),_0x9690df);}};exports[_0x50a9('0x44')]=function(_0x57a163){try{if(!_[_0x50a9('0x23')](channels[_0x57a163[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util['format']('[%s][calls][varset]',_0x57a163['uniqueid']),_0x57a163);if(!_[_0x50a9('0x23')](_0x57a163['variable'][_0x50a9('0x45')])){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x46'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x48')]=_0x57a163[_0x50a9('0x47')];}if(!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x4a')])){utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0x4b'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x4c')]=_0x57a163[_0x50a9('0x47')];channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x2f')]='\x22'+_0x57a163['value']+'\x22\x20<'+_0x57a163[_0x50a9('0x47')]+'>';}if(!_[_0x50a9('0x23')](_0x57a163['variable'][_0x50a9('0x4d')])||!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')]['xmd-callerid'])){utils['info'](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x57a163['uniqueid'],!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x4d')])?_0x50a9('0x4d'):_0x50a9('0x4e'),_0x57a163['value']));channels[_0x57a163[_0x50a9('0x7')]]['callerid']=_0x57a163['value'];}if(!_['isNil'](_0x57a163['variable']['xmd-queue'])||!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x4f')])){utils['info'](util['format'](_0x50a9('0x50'),_0x57a163[_0x50a9('0x7')],!_[_0x50a9('0x23')](_0x57a163['variable'][_0x50a9('0x51')])?_0x50a9('0x51'):_0x50a9('0x4f'),_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x52')]=_0x50a9('0x53');channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x54')]=_0x57a163[_0x50a9('0x47')];channels[_0x57a163[_0x50a9('0x7')]]['queue']=!![];}if(!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x55')])){utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0x56'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x57')]=_0x57a163[_0x50a9('0x47')];}if(!_[_0x50a9('0x23')](_0x57a163['variable']['xmd-cdrtype'])){utils[_0x50a9('0x9')](util['format']('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x57a163['uniqueid'],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]]['type']=_0x57a163['value'];}if(!_['isNil'](_0x57a163['variable'][_0x50a9('0x58')])){utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0x59'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]]['routeid']=_0x57a163[_0x50a9('0x47')];}if(!_['isNil'](_0x57a163[_0x50a9('0x49')][_0x50a9('0x5a')])){utils['info'](util['format'](_0x50a9('0x5b'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]]['sipcallid']=_0x57a163[_0x50a9('0x47')];}}}catch(_0x5844dd){utils[_0x50a9('0x2c')](util['format'](_0x50a9('0x5c'),_0x57a163[_0x50a9('0x7')]),_0x5844dd);}};exports[_0x50a9('0x5d')]=function(_0x25aac2){try{if(!_['isNil'](channels[_0x25aac2[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util['format'](_0x50a9('0x5e'),_0x25aac2[_0x50a9('0x7')]),_0x25aac2);utils[_0x50a9('0x9')](util[_0x50a9('0xa')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x25aac2[_0x50a9('0x7')],_0x25aac2[_0x50a9('0x5f')],_0x25aac2['appdata']));if(_0x25aac2[_0x50a9('0x5f')][_0x50a9('0x60')]()=='set'&&_['startsWith'](_0x25aac2['appdata'][_0x50a9('0x60')](),_0x50a9('0x61'))){var _0x10263f=_0x25aac2[_0x50a9('0x62')][_0x50a9('0x63')]('=');var _0x271406=_0x10263f[0x0][_0x50a9('0x64')](_0x10263f[0x0][_0x50a9('0x65')]('(')+0x1,_0x10263f[0x0][_0x50a9('0x65')](')'));var _0x48d096=_0x10263f[0x1];channels[_0x25aac2[_0x50a9('0x7')]][_0x271406]=_0x48d096;}if(!_['includes']([_0x50a9('0x2d'),_0x50a9('0x66'),'execif',_0x50a9('0x67'),_0x50a9('0x68')],_0x25aac2[_0x50a9('0x5f')][_0x50a9('0x60')]())){channels[_0x25aac2['uniqueid']][_0x50a9('0x52')]=_0x25aac2[_0x50a9('0x5f')];channels[_0x25aac2['uniqueid']][_0x50a9('0x54')]=_0x25aac2[_0x50a9('0x62')];}}}catch(_0x927657){utils[_0x50a9('0x2c')](util[_0x50a9('0xa')](_0x50a9('0x5e'),_0x25aac2[_0x50a9('0x7')]),_0x927657);}};
\ No newline at end of file
index 3a89c40..d815a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8548=['[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','managerevent','./utils','connect','info','[core]\x20connected','shutdown'];(function(_0x2d6d58,_0x1593a1){var _0x598b95=function(_0x86ea4c){while(--_0x86ea4c){_0x2d6d58['push'](_0x2d6d58['shift']());}};_0x598b95(++_0x1593a1);}(_0x8548,0x1e5));var _0x8854=function(_0xc4e3c0,_0x423646){_0xc4e3c0=_0xc4e3c0-0x0;var _0x5779c9=_0x8548[_0xc4e3c0];return _0x5779c9;};'use strict';var utils=require(_0x8854('0x0'));exports[_0x8854('0x1')]=function(){utils[_0x8854('0x2')](_0x8854('0x3'));};exports[_0x8854('0x4')]=function(){utils['info'](_0x8854('0x5'));};exports[_0x8854('0x6')]=function(){utils[_0x8854('0x2')](_0x8854('0x7'));};exports['error']=function(_0x4a087a){utils[_0x8854('0x8')]('[core]\x20error',_0x4a087a);};exports['close']=function(){utils[_0x8854('0x2')]('[core]\x20close');};exports[_0x8854('0x9')]=function(_0x3de28){};
\ No newline at end of file
+var _0xe3aa=['connect','info','[core]\x20connected','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','./utils'];(function(_0x4f2a1b,_0x2a8e45){var _0xa32c5a=function(_0x27283f){while(--_0x27283f){_0x4f2a1b['push'](_0x4f2a1b['shift']());}};_0xa32c5a(++_0x2a8e45);}(_0xe3aa,0x1d8));var _0xae3a=function(_0xfce33b,_0x127935){_0xfce33b=_0xfce33b-0x0;var _0x51d9e2=_0xe3aa[_0xfce33b];return _0x51d9e2;};'use strict';var utils=require(_0xae3a('0x0'));exports[_0xae3a('0x1')]=function(){utils[_0xae3a('0x2')](_0xae3a('0x3'));};exports['shutdown']=function(){utils[_0xae3a('0x2')]('[core]\x20shutdown');};exports[_0xae3a('0x4')]=function(){utils[_0xae3a('0x2')](_0xae3a('0x5'));};exports[_0xae3a('0x6')]=function(_0x1f94d6){utils[_0xae3a('0x6')](_0xae3a('0x7'),_0x1f94d6);};exports[_0xae3a('0x8')]=function(){utils['info'](_0xae3a('0x9'));};exports[_0xae3a('0xa')]=function(_0x33a6c4){};
\ No newline at end of file
index 06e0513..b294de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa88d=['CreateVoiceDialReport','newexten','[%s][dials][newexten]','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','error','varset','[%s][dials][varset]','variable','outboundrouteid','value','dialbegin','isNil','[%s][dials][dialbegin]','assign','lastevent','called','starttime','dialend','debug','[%s][dials][dialend]','answertime','now','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','diffTime','endtime','holdtime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','calleridnum','dialstatus','request'];(function(_0x39ef0e,_0x1dd6b9){var _0x1b96e6=function(_0x295028){while(--_0x295028){_0x39ef0e['push'](_0x39ef0e['shift']());}};_0x1b96e6(++_0x1dd6b9);}(_0xa88d,0xf4));var _0xda88=function(_0x8b42ef,_0x1100c2){_0x8b42ef=_0x8b42ef-0x0;var _0x5d9c02=_0xa88d[_0x8b42ef];return _0x5d9c02;};'use strict';var _=require(_0xda88('0x0'));var util=require(_0xda88('0x1'));var utils=require(_0xda88('0x2'));var dials={};function writeDB(_0xdf149f){utils[_0xda88('0x3')](util[_0xda88('0x4')](_0xda88('0x5'),_0xdf149f[_0xda88('0x6')],_0xdf149f['channel'],_0xdf149f[_0xda88('0x7')],_0xdf149f[_0xda88('0x8')],_0xdf149f['connectedlinenum'],_0xdf149f[_0xda88('0x9')]));utils[_0xda88('0xa')](_0xda88('0xb'),_0xdf149f);delete dials[_0xdf149f[_0xda88('0x6')]];}exports[_0xda88('0xc')]=function(_0x28f41f){try{utils['debug'](util[_0xda88('0x4')](_0xda88('0xd'),_0x28f41f['uniqueid']),_0x28f41f);utils[_0xda88('0x3')](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x28f41f[_0xda88('0x6')],_0x28f41f[_0xda88('0xe')],_0x28f41f[_0xda88('0xf')]));if(_0x28f41f[_0xda88('0xe')][_0xda88('0x10')]()==_0xda88('0x11')&&_[_0xda88('0x12')](_0x28f41f['appdata']['toLowerCase'](),_0xda88('0x13'))){var _0x546ddb=_0x28f41f[_0xda88('0xf')][_0xda88('0x14')]('=');dials[_0x28f41f[_0xda88('0x6')]]={'routeId':_0x546ddb[0x1]};}}catch(_0xfbff7c){utils[_0xda88('0x15')](util[_0xda88('0x4')]('[%s][dials][newexten]',_0x28f41f[_0xda88('0x6')]),_0xfbff7c);}};exports[_0xda88('0x16')]=function(_0x1e7f86){try{utils['debug'](util[_0xda88('0x4')](_0xda88('0x17'),_0x1e7f86[_0xda88('0x6')]),_0x1e7f86);if(!_['isNil'](_0x1e7f86[_0xda88('0x18')][_0xda88('0x19')])){utils[_0xda88('0x3')](util[_0xda88('0x4')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x1e7f86['uniqueid'],_0x1e7f86['value']));dials[_0x1e7f86[_0xda88('0x6')]]={'routeId':_0x1e7f86[_0xda88('0x1a')]};}}catch(_0x411864){utils[_0xda88('0x15')](util[_0xda88('0x4')](_0xda88('0x17'),_0x1e7f86[_0xda88('0x6')]),_0x411864);}};exports[_0xda88('0x1b')]=function(_0x1fb650){try{if(!_[_0xda88('0x1c')](dials[_0x1fb650[_0xda88('0x6')]])){utils['debug'](util[_0xda88('0x4')](_0xda88('0x1d'),_0x1fb650[_0xda88('0x6')]),_0x1fb650);dials[_0x1fb650['uniqueid']]=_[_0xda88('0x1e')](dials[_0x1fb650[_0xda88('0x6')]],_0x1fb650);dials[_0x1fb650[_0xda88('0x6')]]['starttime']=utils['now']();dials[_0x1fb650['uniqueid']][_0xda88('0x1f')]=_0xda88('0x20');utils[_0xda88('0x3')](util[_0xda88('0x4')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x1fb650[_0xda88('0x6')],dials[_0x1fb650[_0xda88('0x6')]][_0xda88('0x21')]));}}catch(_0x2a9241){utils[_0xda88('0x15')](util[_0xda88('0x4')]('[%s][dials][dialbegin]',_0x1fb650['uniqueid']),_0x2a9241);}};exports[_0xda88('0x22')]=function(_0x275dee){try{if(!_['isNil'](dials[_0x275dee[_0xda88('0x6')]])){utils[_0xda88('0x23')](util[_0xda88('0x4')](_0xda88('0x24'),_0x275dee[_0xda88('0x6')]),_0x275dee);dials[_0x275dee['uniqueid']][_0xda88('0x9')]=_0x275dee['dialstatus'];if(_0x275dee['dialstatus']=='ANSWER'){dials[_0x275dee['uniqueid']]=_[_0xda88('0x1e')](dials[_0x275dee[_0xda88('0x6')]],_0x275dee);dials[_0x275dee[_0xda88('0x6')]][_0xda88('0x25')]=utils[_0xda88('0x26')]();dials[_0x275dee['uniqueid']][_0xda88('0x1f')]='connect';utils['info'](util[_0xda88('0x4')](_0xda88('0x27'),_0x275dee[_0xda88('0x6')],_0x275dee[_0xda88('0x9')],dials[_0x275dee['uniqueid']][_0xda88('0x25')]));}else{utils[_0xda88('0x3')](util[_0xda88('0x4')](_0xda88('0x28'),_0x275dee[_0xda88('0x6')],_0x275dee[_0xda88('0x9')]));}}}catch(_0x58ff93){utils[_0xda88('0x15')](util[_0xda88('0x4')](_0xda88('0x24'),_0x275dee[_0xda88('0x6')]),_0x58ff93);}};exports[_0xda88('0x29')]=function(_0x37963c){try{if(!_[_0xda88('0x1c')](dials[_0x37963c['uniqueid']])){utils[_0xda88('0x23')](util[_0xda88('0x4')](_0xda88('0x2a'),_0x37963c[_0xda88('0x6')]),_0x37963c);utils['info'](util[_0xda88('0x4')](_0xda88('0x2b'),_0x37963c[_0xda88('0x6')],_0x37963c[_0xda88('0x8')],_0x37963c[_0xda88('0x2c')],_0x37963c[_0xda88('0x2d')]));dials[_0x37963c[_0xda88('0x6')]]=_['assign'](dials[_0x37963c[_0xda88('0x6')]],{'endtime':utils[_0xda88('0x26')](),'lastevent':_0xda88('0x2e')});dials[_0x37963c['uniqueid']]['duration']=utils[_0xda88('0x2f')](dials[_0x37963c[_0xda88('0x6')]][_0xda88('0x30')],dials[_0x37963c[_0xda88('0x6')]][_0xda88('0x21')]);dials[_0x37963c['uniqueid']][_0xda88('0x31')]=utils[_0xda88('0x2f')](dials[_0x37963c[_0xda88('0x6')]]['answertime']||dials[_0x37963c[_0xda88('0x6')]][_0xda88('0x30')],dials[_0x37963c[_0xda88('0x6')]]['starttime']);dials[_0x37963c[_0xda88('0x6')]][_0xda88('0x32')]=dials[_0x37963c[_0xda88('0x6')]][_0xda88('0x25')]?utils[_0xda88('0x2f')](dials[_0x37963c[_0xda88('0x6')]][_0xda88('0x30')],dials[_0x37963c['uniqueid']][_0xda88('0x25')]):0x0;writeDB(dials[_0x37963c['uniqueid']]);}}catch(_0x236d1c){utils['error'](util[_0xda88('0x4')](_0xda88('0x2a'),_0x37963c[_0xda88('0x6')]),_0x236d1c);}};
\ No newline at end of file
+var _0x77fd=['starttime','now','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','assign','connect','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','endtime','holdtime','diffTime','answertime','[%s][dials][hangup]','lodash','./utils','info','format','uniqueid','channel','dialstring','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','set','startsWith','appdata','toLowerCase','cdr(routeid)','split','error','[%s][dials][varset]','isNil','variable','outboundrouteid','value','dialbegin','[%s][dials][dialbegin]'];(function(_0x59dd10,_0x125d21){var _0x2d3777=function(_0x4c346e){while(--_0x4c346e){_0x59dd10['push'](_0x59dd10['shift']());}};_0x2d3777(++_0x125d21);}(_0x77fd,0x11f));var _0xd77f=function(_0x47f153,_0x22d502){_0x47f153=_0x47f153-0x0;var _0x1bfc1c=_0x77fd[_0x47f153];return _0x1bfc1c;};'use strict';var _=require(_0xd77f('0x0'));var util=require('util');var utils=require(_0xd77f('0x1'));var dials={};function writeDB(_0x57a11c){utils[_0xd77f('0x2')](util[_0xd77f('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x57a11c[_0xd77f('0x4')],_0x57a11c[_0xd77f('0x5')],_0x57a11c[_0xd77f('0x6')],_0x57a11c['calleridnum'],_0x57a11c['connectedlinenum'],_0x57a11c[_0xd77f('0x7')]));utils[_0xd77f('0x8')](_0xd77f('0x9'),_0x57a11c);delete dials[_0x57a11c[_0xd77f('0x4')]];}exports[_0xd77f('0xa')]=function(_0x4930ae){try{utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0xc'),_0x4930ae[_0xd77f('0x4')]),_0x4930ae);utils['info'](util[_0xd77f('0x3')](_0xd77f('0xd'),_0x4930ae['uniqueid'],_0x4930ae['application'],_0x4930ae['appdata']));if(_0x4930ae['application']['toLowerCase']()==_0xd77f('0xe')&&_[_0xd77f('0xf')](_0x4930ae[_0xd77f('0x10')][_0xd77f('0x11')](),_0xd77f('0x12'))){var _0x51d701=_0x4930ae[_0xd77f('0x10')][_0xd77f('0x13')]('=');dials[_0x4930ae[_0xd77f('0x4')]]={'routeId':_0x51d701[0x1]};}}catch(_0x3701f3){utils[_0xd77f('0x14')](util['format']('[%s][dials][newexten]',_0x4930ae[_0xd77f('0x4')]),_0x3701f3);}};exports['varset']=function(_0x180ef8){try{utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0x15'),_0x180ef8['uniqueid']),_0x180ef8);if(!_[_0xd77f('0x16')](_0x180ef8[_0xd77f('0x17')][_0xd77f('0x18')])){utils['info'](util[_0xd77f('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x180ef8[_0xd77f('0x4')],_0x180ef8['value']));dials[_0x180ef8[_0xd77f('0x4')]]={'routeId':_0x180ef8[_0xd77f('0x19')]};}}catch(_0x219b69){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x15'),_0x180ef8[_0xd77f('0x4')]),_0x219b69);}};exports[_0xd77f('0x1a')]=function(_0x1e2a77){try{if(!_[_0xd77f('0x16')](dials[_0x1e2a77[_0xd77f('0x4')]])){utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0x1b'),_0x1e2a77[_0xd77f('0x4')]),_0x1e2a77);dials[_0x1e2a77[_0xd77f('0x4')]]=_['assign'](dials[_0x1e2a77[_0xd77f('0x4')]],_0x1e2a77);dials[_0x1e2a77['uniqueid']][_0xd77f('0x1c')]=utils[_0xd77f('0x1d')]();dials[_0x1e2a77[_0xd77f('0x4')]]['lastevent']='called';utils[_0xd77f('0x2')](util[_0xd77f('0x3')](_0xd77f('0x1e'),_0x1e2a77[_0xd77f('0x4')],dials[_0x1e2a77[_0xd77f('0x4')]][_0xd77f('0x1c')]));}}catch(_0x3fa619){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x1b'),_0x1e2a77[_0xd77f('0x4')]),_0x3fa619);}};exports[_0xd77f('0x1f')]=function(_0x455554){try{if(!_[_0xd77f('0x16')](dials[_0x455554['uniqueid']])){utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0x20'),_0x455554[_0xd77f('0x4')]),_0x455554);dials[_0x455554[_0xd77f('0x4')]][_0xd77f('0x7')]=_0x455554['dialstatus'];if(_0x455554['dialstatus']=='ANSWER'){dials[_0x455554[_0xd77f('0x4')]]=_[_0xd77f('0x21')](dials[_0x455554[_0xd77f('0x4')]],_0x455554);dials[_0x455554['uniqueid']]['answertime']=utils[_0xd77f('0x1d')]();dials[_0x455554['uniqueid']]['lastevent']=_0xd77f('0x22');utils[_0xd77f('0x2')](util[_0xd77f('0x3')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x455554[_0xd77f('0x4')],_0x455554['dialstatus'],dials[_0x455554['uniqueid']]['answertime']));}else{utils[_0xd77f('0x2')](util[_0xd77f('0x3')]('[%s][dials][dialend]\x20dialstatus:%s',_0x455554[_0xd77f('0x4')],_0x455554[_0xd77f('0x7')]));}}}catch(_0x38a7bc){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x20'),_0x455554[_0xd77f('0x4')]),_0x38a7bc);}};exports['hangup']=function(_0x18608a){try{if(!_[_0xd77f('0x16')](dials[_0x18608a[_0xd77f('0x4')]])){utils['debug'](util['format']('[%s][dials][hangup]',_0x18608a[_0xd77f('0x4')]),_0x18608a);utils[_0xd77f('0x2')](util[_0xd77f('0x3')](_0xd77f('0x23'),_0x18608a[_0xd77f('0x4')],_0x18608a['calleridnum'],_0x18608a[_0xd77f('0x24')],_0x18608a[_0xd77f('0x25')]));dials[_0x18608a[_0xd77f('0x4')]]=_['assign'](dials[_0x18608a[_0xd77f('0x4')]],{'endtime':utils[_0xd77f('0x1d')](),'lastevent':_0xd77f('0x26')});dials[_0x18608a['uniqueid']][_0xd77f('0x27')]=utils['diffTime'](dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x28')],dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x1c')]);dials[_0x18608a['uniqueid']][_0xd77f('0x29')]=utils[_0xd77f('0x2a')](dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x2b')]||dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x28')],dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x1c')]);dials[_0x18608a[_0xd77f('0x4')]]['billableseconds']=dials[_0x18608a['uniqueid']]['answertime']?utils[_0xd77f('0x2a')](dials[_0x18608a['uniqueid']][_0xd77f('0x28')],dials[_0x18608a['uniqueid']][_0xd77f('0x2b')]):0x0;writeDB(dials[_0x18608a[_0xd77f('0x4')]]);}}catch(_0x349f58){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x2c'),_0x18608a[_0xd77f('0x4')]),_0x349f58);}};
\ No newline at end of file
index 8b4087a..83a4510 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7efa=['hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','asterisk','port','username','xdr','disabled','XDR\x20DISABLED','./calls.controller','./queues.controller','./members.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','[%s][index][devicestatechange]','device','devicestatechange','format','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentconnect','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]'];(function(_0x455e47,_0x439568){var _0x39001f=function(_0x5ddf79){while(--_0x5ddf79){_0x455e47['push'](_0x455e47['shift']());}};_0x39001f(++_0x439568);}(_0x7efa,0x95));var _0xa7ef=function(_0x326e79,_0x33dc91){_0x326e79=_0x326e79-0x0;var _0x37eb89=_0x7efa[_0x326e79];return _0x37eb89;};var AsteriskManager=require(_0xa7ef('0x0'));var config=require(_0xa7ef('0x1'));var utils=require(_0xa7ef('0x2'));var util=require('util');var ami=new AsteriskManager(config[_0xa7ef('0x3')][_0xa7ef('0x4')],config['asterisk']['ip'],config[_0xa7ef('0x3')][_0xa7ef('0x5')],config[_0xa7ef('0x3')]['password'],!![]);ami['keepConnected']();if(config[_0xa7ef('0x6')]&&config[_0xa7ef('0x6')][_0xa7ef('0x7')]){utils['info'](_0xa7ef('0x8'));}else{var agents=require('./agents.controller');var calls=require(_0xa7ef('0x9'));var queues=require(_0xa7ef('0xa'));var recordings=require('./recordings.controller');var members=require(_0xa7ef('0xb'));var dials=require(_0xa7ef('0xc'));var transfers=require(_0xa7ef('0xd'));var core=require('./core.controller');ami['on'](_0xa7ef('0xe'),core[_0xa7ef('0xe')]);ami['on'](_0xa7ef('0xf'),core[_0xa7ef('0xf')]);ami['on'](_0xa7ef('0x10'),core['fullybooted']);ami['on'](_0xa7ef('0x11'),core[_0xa7ef('0x11')]);ami['on'](_0xa7ef('0x12'),core[_0xa7ef('0x12')]);ami['on'](_0xa7ef('0x13'),core[_0xa7ef('0x13')]);ami['on']('devicestatechange',function(_0x46cc4b){try{utils['debug'](util['format'](_0xa7ef('0x14'),_0x46cc4b[_0xa7ef('0x15')]),_0x46cc4b);members[_0xa7ef('0x16')](_0x46cc4b);}catch(_0x23c7b3){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')](_0xa7ef('0x14'),_0x46cc4b[_0xa7ef('0x15')]),_0x23c7b3);}});ami['on'](_0xa7ef('0x18'),function(_0x58e414){try{utils[_0xa7ef('0x19')](util[_0xa7ef('0x17')](_0xa7ef('0x1a'),_0x58e414[_0xa7ef('0x1b')]),_0x58e414);agents[_0xa7ef('0x18')](_0x58e414);}catch(_0x47a0a1){utils[_0xa7ef('0x11')](util['format'](_0xa7ef('0x1a'),_0x58e414[_0xa7ef('0x1b')]),_0x47a0a1);}});ami['on'](_0xa7ef('0x1c'),function(_0x2e8cf2){try{utils[_0xa7ef('0x19')](util['format'](_0xa7ef('0x1d'),_0x2e8cf2['uniqueid']),_0x2e8cf2);agents[_0xa7ef('0x1c')](_0x2e8cf2);}catch(_0x74161a){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')]('[%s][index][agentringnoanswer]',_0x2e8cf2[_0xa7ef('0x1b')]),_0x74161a);}});ami['on']('agentconnect',function(_0x57de04){try{utils[_0xa7ef('0x19')](util['format'](_0xa7ef('0x1e'),_0x57de04[_0xa7ef('0x1b')]),_0x57de04);agents[_0xa7ef('0x1f')](_0x57de04);queues[_0xa7ef('0x1f')](_0x57de04);}catch(_0x578cc4){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')](_0xa7ef('0x1e'),_0x57de04[_0xa7ef('0x1b')]),_0x578cc4);}});ami['on'](_0xa7ef('0x20'),function(_0x2f4153){try{utils[_0xa7ef('0x19')](util[_0xa7ef('0x17')](_0xa7ef('0x21'),_0x2f4153[_0xa7ef('0x1b')]),_0x2f4153);agents[_0xa7ef('0x20')](_0x2f4153);queues[_0xa7ef('0x20')](_0x2f4153);members['agentcomplete'](_0x2f4153);}catch(_0x47a8ee){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')](_0xa7ef('0x21'),_0x2f4153['uniqueid']),_0x47a8ee);}});ami['on'](_0xa7ef('0x22'),function(_0x20e196){try{utils[_0xa7ef('0x19')](util[_0xa7ef('0x17')](_0xa7ef('0x23'),_0x20e196[_0xa7ef('0x1b')]),_0x20e196);agents['queuecallerabandon'](_0x20e196);queues[_0xa7ef('0x22')](_0x20e196);}catch(_0x4b2b7b){utils['error'](util['format'](_0xa7ef('0x23'),_0x20e196[_0xa7ef('0x1b')]),_0x4b2b7b);}});ami['on']('queuecallerjoin',function(_0x5b926a){try{utils['debug'](util[_0xa7ef('0x17')](_0xa7ef('0x24'),_0x5b926a[_0xa7ef('0x1b')]),_0x5b926a);queues[_0xa7ef('0x25')](_0x5b926a);recordings[_0xa7ef('0x25')](_0x5b926a);}catch(_0x41c4b6){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')](_0xa7ef('0x24'),_0x5b926a[_0xa7ef('0x1b')]),_0x41c4b6);}});ami['on'](_0xa7ef('0x26'),function(_0x3a2572){try{utils[_0xa7ef('0x19')](util['format'](_0xa7ef('0x27'),_0x3a2572[_0xa7ef('0x1b')]),_0x3a2572);queues['queuecallerleave'](_0x3a2572);}catch(_0x249dd8){utils['error'](util[_0xa7ef('0x17')](_0xa7ef('0x27'),_0x3a2572[_0xa7ef('0x1b')]),_0x249dd8);}});ami['on'](_0xa7ef('0x28'),function(_0x3e6f0b){try{utils['debug'](util[_0xa7ef('0x17')](_0xa7ef('0x29'),_0x3e6f0b[_0xa7ef('0x1b')]),_0x3e6f0b);queues[_0xa7ef('0x28')](_0x3e6f0b);calls[_0xa7ef('0x28')](_0x3e6f0b);}catch(_0x5d21b7){utils['error'](util[_0xa7ef('0x17')](_0xa7ef('0x29'),_0x3e6f0b[_0xa7ef('0x1b')]),_0x5d21b7);}});ami['on']('musiconholdstop',function(_0x2c6787){try{utils['debug'](util[_0xa7ef('0x17')](_0xa7ef('0x2a'),_0x2c6787['uniqueid']),_0x2c6787);queues[_0xa7ef('0x2b')](_0x2c6787);calls['musiconholdstop'](_0x2c6787);}catch(_0x30cc19){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')](_0xa7ef('0x2a'),_0x2c6787['uniqueid']),_0x30cc19);}});ami['on'](_0xa7ef('0x2c'),function(_0x168aac){try{utils['debug'](util[_0xa7ef('0x17')](_0xa7ef('0x2d'),_0x168aac[_0xa7ef('0x1b')]),_0x168aac);calls['newstate'](_0x168aac);recordings[_0xa7ef('0x2c')](_0x168aac);}catch(_0x4c0697){utils[_0xa7ef('0x11')](util['format']('[%s][index][newstate]',_0x168aac[_0xa7ef('0x1b')]),_0x4c0697);}});ami['on'](_0xa7ef('0x2e'),function(_0x43f6fd){try{utils['debug'](util[_0xa7ef('0x17')](_0xa7ef('0x2f'),_0x43f6fd[_0xa7ef('0x1b')]),_0x43f6fd);calls[_0xa7ef('0x2e')](_0x43f6fd);recordings[_0xa7ef('0x2e')](_0x43f6fd);dials[_0xa7ef('0x2e')](_0x43f6fd);agents[_0xa7ef('0x2e')](_0x43f6fd);queues[_0xa7ef('0x2e')](_0x43f6fd);}catch(_0xbe679e){utils['error'](util[_0xa7ef('0x17')](_0xa7ef('0x2f'),_0x43f6fd[_0xa7ef('0x1b')]),_0xbe679e);}});ami['on'](_0xa7ef('0x30'),function(_0x5097be){try{utils[_0xa7ef('0x19')](util[_0xa7ef('0x17')]('[%s][index][cdr]',_0x5097be['uniqueid']),_0x5097be);members[_0xa7ef('0x30')](_0x5097be);}catch(_0x5ed831){utils['error'](util[_0xa7ef('0x17')](_0xa7ef('0x31'),_0x5097be[_0xa7ef('0x1b')]),_0x5ed831);}});ami['on'](_0xa7ef('0x32'),function(_0x129086){try{utils[_0xa7ef('0x19')](util['format'](_0xa7ef('0x33'),_0x129086['uniqueid']),_0x129086);queues['blindtransfer'](_0x129086);agents[_0xa7ef('0x32')](_0x129086);transfers[_0xa7ef('0x32')](_0x129086);}catch(_0x39b8e4){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')]('[%s][index][blindtransfer]',_0x129086[_0xa7ef('0x1b')]),_0x39b8e4);}});ami['on'](_0xa7ef('0x34'),function(_0xd8065f){try{utils['debug'](util[_0xa7ef('0x17')](_0xa7ef('0x35'),_0xd8065f[_0xa7ef('0x36')]),_0xd8065f);queues[_0xa7ef('0x34')](_0xd8065f);transfers[_0xa7ef('0x34')](_0xd8065f);agents[_0xa7ef('0x34')](_0xd8065f);calls[_0xa7ef('0x34')](_0xd8065f);}catch(_0x51fef5){utils['error'](util[_0xa7ef('0x17')]('[%s][index][attendedtransfer]',_0xd8065f[_0xa7ef('0x36')]),_0x51fef5);}});ami['on'](_0xa7ef('0x37'),function(_0x425113){try{utils[_0xa7ef('0x19')](util['format'](_0xa7ef('0x38'),_0x425113[_0xa7ef('0x1b')]),_0x425113);queues[_0xa7ef('0x37')](_0x425113);recordings[_0xa7ef('0x37')](_0x425113);calls[_0xa7ef('0x37')](_0x425113);dials[_0xa7ef('0x37')](_0x425113);}catch(_0x2b9b77){utils[_0xa7ef('0x11')](util['format'](_0xa7ef('0x38'),_0x425113[_0xa7ef('0x1b')]),_0x2b9b77);}});ami['on'](_0xa7ef('0x39'),function(_0x53f624){try{utils[_0xa7ef('0x19')](util['format']('[%s][index][newexten]',_0x53f624[_0xa7ef('0x1b')]),_0x53f624);calls[_0xa7ef('0x39')](_0x53f624);recordings[_0xa7ef('0x39')](_0x53f624);dials[_0xa7ef('0x39')](_0x53f624);}catch(_0x1d0445){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')](_0xa7ef('0x3a'),_0x53f624[_0xa7ef('0x1b')]),_0x1d0445);}});ami['on'](_0xa7ef('0x3b'),function(_0x46c000){try{utils[_0xa7ef('0x19')](util['format'](_0xa7ef('0x3c'),_0x46c000[_0xa7ef('0x1b')]),_0x46c000);calls[_0xa7ef('0x3b')](_0x46c000);recordings[_0xa7ef('0x3b')](_0x46c000);}catch(_0x2b8aea){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')]('[%s][index][newchannel]',_0x46c000[_0xa7ef('0x1b')]),_0x2b8aea);}});ami['on']('dialbegin',function(_0x50937e){try{utils[_0xa7ef('0x19')](util['format'](_0xa7ef('0x3d'),_0x50937e[_0xa7ef('0x1b')]),_0x50937e);dials[_0xa7ef('0x3e')](_0x50937e);}catch(_0x8cc18b){utils[_0xa7ef('0x11')](util['format']('[%s]dialbegin',_0x50937e['uniqueid']),_0x8cc18b);}});ami['on'](_0xa7ef('0x3f'),function(_0x5d437c){try{utils['debug'](util[_0xa7ef('0x17')](_0xa7ef('0x40'),_0x5d437c['uniqueid']),_0x5d437c);dials['dialend'](_0x5d437c);}catch(_0x2f56da){utils[_0xa7ef('0x11')](util[_0xa7ef('0x17')](_0xa7ef('0x40'),_0x5d437c[_0xa7ef('0x1b')]),_0x2f56da);}});}
\ No newline at end of file
+var _0x7c18=['./queues.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentconnect','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','username','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller'];(function(_0xacabb,_0x1fbcd9){var _0x2b4a14=function(_0x3a2353){while(--_0x3a2353){_0xacabb['push'](_0xacabb['shift']());}};_0x2b4a14(++_0x1fbcd9);}(_0x7c18,0x7a));var _0x87c1=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7c18[_0x501510];return _0x1e6ee5;};var AsteriskManager=require(_0x87c1('0x0'));var config=require(_0x87c1('0x1'));var utils=require(_0x87c1('0x2'));var util=require(_0x87c1('0x3'));var ami=new AsteriskManager(config[_0x87c1('0x4')]['port'],config[_0x87c1('0x4')]['ip'],config[_0x87c1('0x4')][_0x87c1('0x5')],config['asterisk'][_0x87c1('0x6')],!![]);ami[_0x87c1('0x7')]();if(config[_0x87c1('0x8')]&&config[_0x87c1('0x8')][_0x87c1('0x9')]){utils[_0x87c1('0xa')](_0x87c1('0xb'));}else{var agents=require(_0x87c1('0xc'));var calls=require(_0x87c1('0xd'));var queues=require(_0x87c1('0xe'));var recordings=require('./recordings.controller');var members=require('./members.controller');var dials=require(_0x87c1('0xf'));var transfers=require(_0x87c1('0x10'));var core=require(_0x87c1('0x11'));ami['on'](_0x87c1('0x12'),core['connect']);ami['on'](_0x87c1('0x13'),core[_0x87c1('0x13')]);ami['on']('fullybooted',core[_0x87c1('0x14')]);ami['on']('error',core[_0x87c1('0x15')]);ami['on'](_0x87c1('0x16'),core[_0x87c1('0x16')]);ami['on'](_0x87c1('0x17'),core['managerevent']);ami['on'](_0x87c1('0x18'),function(_0x175a0c){try{utils['debug'](util[_0x87c1('0x19')](_0x87c1('0x1a'),_0x175a0c['device']),_0x175a0c);members[_0x87c1('0x18')](_0x175a0c);}catch(_0x2c084f){utils[_0x87c1('0x15')](util['format'](_0x87c1('0x1a'),_0x175a0c['device']),_0x2c084f);}});ami['on'](_0x87c1('0x1b'),function(_0x2cd2b0){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x1d'),_0x2cd2b0[_0x87c1('0x1e')]),_0x2cd2b0);agents[_0x87c1('0x1b')](_0x2cd2b0);}catch(_0x3220d4){utils[_0x87c1('0x15')](util[_0x87c1('0x19')]('[%s][index][agentcalled]',_0x2cd2b0[_0x87c1('0x1e')]),_0x3220d4);}});ami['on'](_0x87c1('0x1f'),function(_0x34eddc){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x20'),_0x34eddc[_0x87c1('0x1e')]),_0x34eddc);agents[_0x87c1('0x1f')](_0x34eddc);}catch(_0x33989d){utils['error'](util['format'](_0x87c1('0x20'),_0x34eddc[_0x87c1('0x1e')]),_0x33989d);}});ami['on']('agentconnect',function(_0x42f9eb){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x21'),_0x42f9eb[_0x87c1('0x1e')]),_0x42f9eb);agents[_0x87c1('0x22')](_0x42f9eb);queues[_0x87c1('0x22')](_0x42f9eb);}catch(_0x5ed77d){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x21'),_0x42f9eb['uniqueid']),_0x5ed77d);}});ami['on'](_0x87c1('0x23'),function(_0x117bc7){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x24'),_0x117bc7['uniqueid']),_0x117bc7);agents['agentcomplete'](_0x117bc7);queues[_0x87c1('0x23')](_0x117bc7);members[_0x87c1('0x23')](_0x117bc7);}catch(_0x396381){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x24'),_0x117bc7[_0x87c1('0x1e')]),_0x396381);}});ami['on'](_0x87c1('0x25'),function(_0x49d537){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x26'),_0x49d537['uniqueid']),_0x49d537);agents[_0x87c1('0x25')](_0x49d537);queues[_0x87c1('0x25')](_0x49d537);}catch(_0x2abc3b){utils[_0x87c1('0x15')](util['format'](_0x87c1('0x26'),_0x49d537['uniqueid']),_0x2abc3b);}});ami['on'](_0x87c1('0x27'),function(_0x4e59dd){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x28'),_0x4e59dd[_0x87c1('0x1e')]),_0x4e59dd);queues['queuecallerjoin'](_0x4e59dd);recordings['queuecallerjoin'](_0x4e59dd);}catch(_0x3cc330){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x28'),_0x4e59dd['uniqueid']),_0x3cc330);}});ami['on'](_0x87c1('0x29'),function(_0x5c117b){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][queuecallerleave]',_0x5c117b['uniqueid']),_0x5c117b);queues['queuecallerleave'](_0x5c117b);}catch(_0x3685bd){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x2a'),_0x5c117b['uniqueid']),_0x3685bd);}});ami['on'](_0x87c1('0x2b'),function(_0x4293ba){try{utils['debug'](util[_0x87c1('0x19')](_0x87c1('0x2c'),_0x4293ba['uniqueid']),_0x4293ba);queues[_0x87c1('0x2b')](_0x4293ba);calls[_0x87c1('0x2b')](_0x4293ba);}catch(_0x3f6211){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x2c'),_0x4293ba['uniqueid']),_0x3f6211);}});ami['on']('musiconholdstop',function(_0x50b77c){try{utils[_0x87c1('0x1c')](util['format'](_0x87c1('0x2d'),_0x50b77c['uniqueid']),_0x50b77c);queues['musiconholdstop'](_0x50b77c);calls[_0x87c1('0x2e')](_0x50b77c);}catch(_0x36202e){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x2d'),_0x50b77c[_0x87c1('0x1e')]),_0x36202e);}});ami['on']('newstate',function(_0x5cf4c5){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][newstate]',_0x5cf4c5[_0x87c1('0x1e')]),_0x5cf4c5);calls[_0x87c1('0x2f')](_0x5cf4c5);recordings[_0x87c1('0x2f')](_0x5cf4c5);}catch(_0x3ba62d){utils['error'](util['format'](_0x87c1('0x30'),_0x5cf4c5[_0x87c1('0x1e')]),_0x3ba62d);}});ami['on']('hangup',function(_0x607be5){try{utils[_0x87c1('0x1c')](util['format'](_0x87c1('0x31'),_0x607be5[_0x87c1('0x1e')]),_0x607be5);calls[_0x87c1('0x32')](_0x607be5);recordings['hangup'](_0x607be5);dials[_0x87c1('0x32')](_0x607be5);agents[_0x87c1('0x32')](_0x607be5);queues[_0x87c1('0x32')](_0x607be5);}catch(_0x3966de){utils[_0x87c1('0x15')](util['format'](_0x87c1('0x31'),_0x607be5[_0x87c1('0x1e')]),_0x3966de);}});ami['on'](_0x87c1('0x33'),function(_0x553ffe){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x34'),_0x553ffe['uniqueid']),_0x553ffe);members[_0x87c1('0x33')](_0x553ffe);}catch(_0x160b06){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x34'),_0x553ffe[_0x87c1('0x1e')]),_0x160b06);}});ami['on'](_0x87c1('0x35'),function(_0x48ef0d){try{utils['debug'](util['format'](_0x87c1('0x36'),_0x48ef0d[_0x87c1('0x1e')]),_0x48ef0d);queues[_0x87c1('0x35')](_0x48ef0d);agents[_0x87c1('0x35')](_0x48ef0d);transfers[_0x87c1('0x35')](_0x48ef0d);}catch(_0x56420a){utils['error'](util[_0x87c1('0x19')]('[%s][index][blindtransfer]',_0x48ef0d[_0x87c1('0x1e')]),_0x56420a);}});ami['on'](_0x87c1('0x37'),function(_0xcc41f7){try{utils[_0x87c1('0x1c')](util['format']('[%s][index][attendedtransfer]',_0xcc41f7[_0x87c1('0x38')]),_0xcc41f7);queues[_0x87c1('0x37')](_0xcc41f7);transfers[_0x87c1('0x37')](_0xcc41f7);agents[_0x87c1('0x37')](_0xcc41f7);calls[_0x87c1('0x37')](_0xcc41f7);}catch(_0x267b79){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x39'),_0xcc41f7[_0x87c1('0x38')]),_0x267b79);}});ami['on']('varset',function(_0x3c087e){try{utils['debug'](util['format'](_0x87c1('0x3a'),_0x3c087e[_0x87c1('0x1e')]),_0x3c087e);queues[_0x87c1('0x3b')](_0x3c087e);recordings['varset'](_0x3c087e);calls['varset'](_0x3c087e);dials[_0x87c1('0x3b')](_0x3c087e);}catch(_0x1fd5a7){utils[_0x87c1('0x15')](util[_0x87c1('0x19')]('[%s][index][varset]',_0x3c087e['uniqueid']),_0x1fd5a7);}});ami['on']('newexten',function(_0x1ac4f1){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][newexten]',_0x1ac4f1[_0x87c1('0x1e')]),_0x1ac4f1);calls['newexten'](_0x1ac4f1);recordings['newexten'](_0x1ac4f1);dials[_0x87c1('0x3c')](_0x1ac4f1);}catch(_0xda7628){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x3d'),_0x1ac4f1[_0x87c1('0x1e')]),_0xda7628);}});ami['on'](_0x87c1('0x3e'),function(_0x3b26f3){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][newchannel]',_0x3b26f3[_0x87c1('0x1e')]),_0x3b26f3);calls['newchannel'](_0x3b26f3);recordings[_0x87c1('0x3e')](_0x3b26f3);}catch(_0x558cbc){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x3f'),_0x3b26f3[_0x87c1('0x1e')]),_0x558cbc);}});ami['on'](_0x87c1('0x40'),function(_0x53154a){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][dialbegin]',_0x53154a['uniqueid']),_0x53154a);dials[_0x87c1('0x40')](_0x53154a);}catch(_0x147a3e){utils['error'](util['format'](_0x87c1('0x41'),_0x53154a[_0x87c1('0x1e')]),_0x147a3e);}});ami['on']('dialend',function(_0x1e45b4){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][dialend]',_0x1e45b4[_0x87c1('0x1e')]),_0x1e45b4);dials[_0x87c1('0x42')](_0x1e45b4);}catch(_0x2999eb){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x43'),_0x1e45b4[_0x87c1('0x1e')]),_0x2999eb);}});}
\ No newline at end of file
index 1a26d42..7476e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f1e=['info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','type','getUserByInterface','membername','name','internal','request','CreateMemberReport','getUserByName','catch','error','format','startsWith','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','voice','TALKING','now','agent','NOT_INUSE','isNil','exitAt','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','data1','data2','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','split','./utils','Queue:'];(function(_0x1b74f0,_0x5a7991){var _0x24f81c=function(_0xd5f0dc){while(--_0xd5f0dc){_0x1b74f0['push'](_0x1b74f0['shift']());}};_0x24f81c(++_0x5a7991);}(_0x0f1e,0x18e));var _0xe0f1=function(_0x29a709,_0x56e5cd){_0x29a709=_0x29a709-0x0;var _0x35d73e=_0x0f1e[_0x29a709];return _0x35d73e;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xe0f1('0x0'));var members={};var exclude=['Local/_attended@transfer',_0xe0f1('0x1')];function writeDB(_0x2a0b5f){utils[_0xe0f1('0x2')](util['format'](_0xe0f1('0x3'),_0x2a0b5f[_0xe0f1('0x4')],_0x2a0b5f[_0xe0f1('0x5')],_0x2a0b5f[_0xe0f1('0x6')],_0x2a0b5f['data2'],_0x2a0b5f['membername'],_0x2a0b5f[_0xe0f1('0x7')]));if(_0x2a0b5f['interface']){utils[_0xe0f1('0x8')](_0x2a0b5f[_0xe0f1('0x5')])['then'](function(_0x337edb){if(_0x337edb){_0x2a0b5f[_0xe0f1('0x9')]=_0x337edb[_0xe0f1('0xa')];_0x2a0b5f[_0xe0f1('0xb')]=_0x337edb[_0xe0f1('0xb')];utils[_0xe0f1('0xc')](_0xe0f1('0xd'),_0x2a0b5f);}else{utils[_0xe0f1('0xe')](_0x2a0b5f[_0xe0f1('0x5')]['split']('/')[0x1])['then'](function(_0x50836d){if(_0x50836d){_0x2a0b5f['membername']=_0x50836d[_0xe0f1('0xa')];_0x2a0b5f[_0xe0f1('0xb')]=_0x50836d[_0xe0f1('0xb')];utils['request'](_0xe0f1('0xd'),_0x2a0b5f);}});}})[_0xe0f1('0xf')](function(_0x51e540){utils[_0xe0f1('0x10')](util[_0xe0f1('0x11')]('[%s][members][writeDB]',_0x2a0b5f[_0xe0f1('0x4')]),_0x51e540);});}delete members[_0x2a0b5f[_0xe0f1('0x5')]];}function startsWith(_0x3f7295,_0x245a0d){return _['some'](_0x3f7295,function(_0x295e97){return _[_0xe0f1('0x12')](_0x245a0d,_0x295e97);});}exports['devicestatechange']=function(_0xd76938){try{utils[_0xe0f1('0x13')](util[_0xe0f1('0x11')](_0xe0f1('0x14'),members[_0xd76938['device']]?members[_0xd76938[_0xe0f1('0x15')]][_0xe0f1('0x4')]:_0xd76938[_0xe0f1('0x15')]),_0xd76938);utils['info'](util['format'](_0xe0f1('0x16'),members[_0xd76938[_0xe0f1('0x15')]]?members[_0xd76938[_0xe0f1('0x15')]][_0xe0f1('0x4')]:_0xd76938[_0xe0f1('0x15')],_0xd76938[_0xe0f1('0x17')],_0xd76938['device']));switch(_0xd76938[_0xe0f1('0x17')]){case _0xe0f1('0x18'):case'BUSY':if(!startsWith(exclude,_0xd76938[_0xe0f1('0x15')])){members[_0xd76938[_0xe0f1('0x15')]]={'channel':_0xe0f1('0x19'),'interface':_0xd76938[_0xe0f1('0x15')],'type':_0xe0f1('0x1a'),'enterAt':utils[_0xe0f1('0x1b')](),'role':_0xe0f1('0x1c')};}break;case _0xe0f1('0x1d'):if(!_[_0xe0f1('0x1e')](members[_0xd76938[_0xe0f1('0x15')]])){members[_0xd76938[_0xe0f1('0x15')]][_0xe0f1('0x1f')]=utils[_0xe0f1('0x1b')]();members[_0xd76938[_0xe0f1('0x15')]][_0xe0f1('0x20')]=utils[_0xe0f1('0x21')](members[_0xd76938[_0xe0f1('0x15')]]['exitAt'],members[_0xd76938[_0xe0f1('0x15')]][_0xe0f1('0x22')]);if(members[_0xd76938[_0xe0f1('0x15')]][_0xe0f1('0x4')]){writeDB(members[_0xd76938['device']]);}}break;default:break;}}catch(_0x5177c1){utils[_0xe0f1('0x10')](util[_0xe0f1('0x11')]('[%s][members][devicestatechange]',members[_0xd76938[_0xe0f1('0x15')]]?members[_0xd76938[_0xe0f1('0x15')]][_0xe0f1('0x4')]:_0xd76938['device']),_0x5177c1);}};exports[_0xe0f1('0x23')]=function(_0x82bc98){try{if(!_[_0xe0f1('0x1e')](members[_0x82bc98[_0xe0f1('0x5')]])){utils[_0xe0f1('0x13')](util[_0xe0f1('0x11')]('[%s][members][agentcomplete]',_0x82bc98[_0xe0f1('0x4')]),_0x82bc98);utils[_0xe0f1('0x2')](util[_0xe0f1('0x11')](_0xe0f1('0x24'),_0x82bc98[_0xe0f1('0x4')],_0x82bc98['interface'],_0x82bc98[_0xe0f1('0x25')]));members[_0x82bc98[_0xe0f1('0x5')]]=_[_0xe0f1('0x26')](members[_0x82bc98[_0xe0f1('0x5')]],{'data4':_0x82bc98[_0xe0f1('0x25')],'uniqueid':_0x82bc98['uniqueid']});}}catch(_0x4bfc9d){utils[_0xe0f1('0x10')](util[_0xe0f1('0x11')](_0xe0f1('0x27'),_0x82bc98['uniqueid']),_0x4bfc9d);}};exports[_0xe0f1('0x28')]=function(_0x54a701){try{utils[_0xe0f1('0x13')](util[_0xe0f1('0x11')](_0xe0f1('0x29'),_0x54a701['uniqueid']),_0x54a701);if(_0x54a701['channel']){var _0x3269e1=_0x54a701[_0xe0f1('0x6')]['split']('-')[0x0];if(!_[_0xe0f1('0x1e')](members[_0x3269e1])){members[_0x3269e1]=_['assign'](members[_0x3269e1],{'data1':members[_0x3269e1][_0xe0f1('0x2a')]||_0x54a701[_0xe0f1('0x7')],'data2':members[_0x3269e1][_0xe0f1('0x2b')]||_0x54a701[_0xe0f1('0x2c')],'data3':members[_0x3269e1][_0xe0f1('0x2d')]||_0x54a701[_0xe0f1('0x2e')],'uniqueid':members[_0x3269e1][_0xe0f1('0x4')]||_0x54a701[_0xe0f1('0x4')]});utils['info'](util['format'](_0xe0f1('0x2f'),_0x54a701['uniqueid'],members[_0x3269e1][_0xe0f1('0x2a')],members[_0x3269e1][_0xe0f1('0x2b')],members[_0x3269e1][_0xe0f1('0x2d')]));if(members[_0x3269e1][_0xe0f1('0x1f')]){writeDB(members[_0x3269e1]);}}}if(_0x54a701[_0xe0f1('0x30')]){var _0x3e003b=_0x54a701[_0xe0f1('0x30')][_0xe0f1('0x31')]('-')[0x0];if(!_['isNil'](members[_0x3e003b])){members[_0x3e003b]=_[_0xe0f1('0x26')](members[_0x3e003b],{'data1':members[_0x3e003b][_0xe0f1('0x2a')]||_0x54a701[_0xe0f1('0x7')],'data2':members[_0x3e003b][_0xe0f1('0x2b')]||_0x54a701[_0xe0f1('0x2c')],'data3':members[_0x3e003b][_0xe0f1('0x2d')]||_0x54a701[_0xe0f1('0x2e')],'uniqueid':members[_0x3e003b][_0xe0f1('0x4')]||_0x54a701[_0xe0f1('0x4')]});utils[_0xe0f1('0x2')](util['format'](_0xe0f1('0x2f'),_0x54a701[_0xe0f1('0x4')],members[_0x3e003b][_0xe0f1('0x2a')],members[_0x3e003b][_0xe0f1('0x2b')],members[_0x3e003b]['data3']));if(members[_0x3e003b]['exitAt']){writeDB(members[_0x3e003b]);}}}}catch(_0xf8c7cf){utils[_0xe0f1('0x10')](util[_0xe0f1('0x11')](_0xe0f1('0x29'),_0x54a701[_0xe0f1('0x4')]),_0xf8c7cf);}};
\ No newline at end of file
+var _0x3eec=['queue','assign','cdr','[%s][members][cdr]','channel','split','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','util','./utils','Local/_attended@transfer','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','data2','membername','type','getUserByInterface','then','name','request','CreateMemberReport','getUserByName','catch','error','[%s][members][writeDB]','some','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','TALKING','now','agent','NOT_INUSE','isNil','exitAt','duration','diffTime','enterAt','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s'];(function(_0x192d6e,_0x2ddc37){var _0x37d811=function(_0xcb8fc2){while(--_0xcb8fc2){_0x192d6e['push'](_0x192d6e['shift']());}};_0x37d811(++_0x2ddc37);}(_0x3eec,0x1e9));var _0xc3ee=function(_0x2e19af,_0x1f04bf){_0x2e19af=_0x2e19af-0x0;var _0x307361=_0x3eec[_0x2e19af];return _0x307361;};'use strict';var _=require(_0xc3ee('0x0'));var util=require(_0xc3ee('0x1'));var utils=require(_0xc3ee('0x2'));var members={};var exclude=[_0xc3ee('0x3'),'Queue:'];function writeDB(_0x223d08){utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x6'),_0x223d08[_0xc3ee('0x7')],_0x223d08[_0xc3ee('0x8')],_0x223d08['channel'],_0x223d08[_0xc3ee('0x9')],_0x223d08[_0xc3ee('0xa')],_0x223d08[_0xc3ee('0xb')]));if(_0x223d08[_0xc3ee('0x8')]){utils[_0xc3ee('0xc')](_0x223d08[_0xc3ee('0x8')])[_0xc3ee('0xd')](function(_0x2c9701){if(_0x2c9701){_0x223d08[_0xc3ee('0xa')]=_0x2c9701[_0xc3ee('0xe')];_0x223d08['internal']=_0x2c9701['internal'];utils[_0xc3ee('0xf')](_0xc3ee('0x10'),_0x223d08);}else{utils[_0xc3ee('0x11')](_0x223d08[_0xc3ee('0x8')]['split']('/')[0x1])[_0xc3ee('0xd')](function(_0x4b1bff){if(_0x4b1bff){_0x223d08[_0xc3ee('0xa')]=_0x4b1bff[_0xc3ee('0xe')];_0x223d08['internal']=_0x4b1bff['internal'];utils[_0xc3ee('0xf')]('CreateMemberReport',_0x223d08);}});}})[_0xc3ee('0x12')](function(_0x535d1a){utils[_0xc3ee('0x13')](util['format'](_0xc3ee('0x14'),_0x223d08[_0xc3ee('0x7')]),_0x535d1a);});}delete members[_0x223d08[_0xc3ee('0x8')]];}function startsWith(_0x664bad,_0x476f8f){return _[_0xc3ee('0x15')](_0x664bad,function(_0x277e11){return _['startsWith'](_0x476f8f,_0x277e11);});}exports[_0xc3ee('0x16')]=function(_0x4eea89){try{utils[_0xc3ee('0x17')](util[_0xc3ee('0x5')](_0xc3ee('0x18'),members[_0x4eea89[_0xc3ee('0x19')]]?members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]:_0x4eea89[_0xc3ee('0x19')]),_0x4eea89);utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x1a'),members[_0x4eea89[_0xc3ee('0x19')]]?members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]:_0x4eea89[_0xc3ee('0x19')],_0x4eea89[_0xc3ee('0x1b')],_0x4eea89[_0xc3ee('0x19')]));switch(_0x4eea89[_0xc3ee('0x1b')]){case _0xc3ee('0x1c'):case _0xc3ee('0x1d'):if(!startsWith(exclude,_0x4eea89[_0xc3ee('0x19')])){members[_0x4eea89[_0xc3ee('0x19')]]={'channel':'voice','interface':_0x4eea89['device'],'type':_0xc3ee('0x1e'),'enterAt':utils[_0xc3ee('0x1f')](),'role':_0xc3ee('0x20')};}break;case _0xc3ee('0x21'):if(!_[_0xc3ee('0x22')](members[_0x4eea89[_0xc3ee('0x19')]])){members[_0x4eea89['device']][_0xc3ee('0x23')]=utils[_0xc3ee('0x1f')]();members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x24')]=utils[_0xc3ee('0x25')](members[_0x4eea89['device']]['exitAt'],members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x26')]);if(members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]){writeDB(members[_0x4eea89[_0xc3ee('0x19')]]);}}break;default:break;}}catch(_0x4ecfec){utils['error'](util['format'](_0xc3ee('0x18'),members[_0x4eea89[_0xc3ee('0x19')]]?members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]:_0x4eea89[_0xc3ee('0x19')]),_0x4ecfec);}};exports['agentcomplete']=function(_0x13f30d){try{if(!_[_0xc3ee('0x22')](members[_0x13f30d[_0xc3ee('0x8')]])){utils[_0xc3ee('0x17')](util[_0xc3ee('0x5')](_0xc3ee('0x27'),_0x13f30d[_0xc3ee('0x7')]),_0x13f30d);utils['info'](util[_0xc3ee('0x5')](_0xc3ee('0x28'),_0x13f30d[_0xc3ee('0x7')],_0x13f30d['interface'],_0x13f30d[_0xc3ee('0x29')]));members[_0x13f30d[_0xc3ee('0x8')]]=_[_0xc3ee('0x2a')](members[_0x13f30d[_0xc3ee('0x8')]],{'data4':_0x13f30d[_0xc3ee('0x29')],'uniqueid':_0x13f30d[_0xc3ee('0x7')]});}}catch(_0x16677d){utils['error'](util[_0xc3ee('0x5')]('[%s][members][agentcomplete]',_0x13f30d[_0xc3ee('0x7')]),_0x16677d);}};exports[_0xc3ee('0x2b')]=function(_0x13d6e5){try{utils[_0xc3ee('0x17')](util[_0xc3ee('0x5')](_0xc3ee('0x2c'),_0x13d6e5['uniqueid']),_0x13d6e5);if(_0x13d6e5[_0xc3ee('0x2d')]){var _0x3f2e5a=_0x13d6e5[_0xc3ee('0x2d')][_0xc3ee('0x2e')]('-')[0x0];if(!_[_0xc3ee('0x22')](members[_0x3f2e5a])){members[_0x3f2e5a]=_[_0xc3ee('0x2a')](members[_0x3f2e5a],{'data1':members[_0x3f2e5a][_0xc3ee('0x2f')]||_0x13d6e5[_0xc3ee('0xb')],'data2':members[_0x3f2e5a][_0xc3ee('0x9')]||_0x13d6e5[_0xc3ee('0x30')],'data3':members[_0x3f2e5a][_0xc3ee('0x31')]||_0x13d6e5[_0xc3ee('0x32')],'uniqueid':members[_0x3f2e5a][_0xc3ee('0x7')]||_0x13d6e5[_0xc3ee('0x7')]});utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x33'),_0x13d6e5[_0xc3ee('0x7')],members[_0x3f2e5a][_0xc3ee('0x2f')],members[_0x3f2e5a][_0xc3ee('0x9')],members[_0x3f2e5a][_0xc3ee('0x31')]));if(members[_0x3f2e5a]['exitAt']){writeDB(members[_0x3f2e5a]);}}}if(_0x13d6e5[_0xc3ee('0x34')]){var _0x548df8=_0x13d6e5[_0xc3ee('0x34')][_0xc3ee('0x2e')]('-')[0x0];if(!_[_0xc3ee('0x22')](members[_0x548df8])){members[_0x548df8]=_[_0xc3ee('0x2a')](members[_0x548df8],{'data1':members[_0x548df8][_0xc3ee('0x2f')]||_0x13d6e5[_0xc3ee('0xb')],'data2':members[_0x548df8]['data2']||_0x13d6e5[_0xc3ee('0x30')],'data3':members[_0x548df8][_0xc3ee('0x31')]||_0x13d6e5[_0xc3ee('0x32')],'uniqueid':members[_0x548df8]['uniqueid']||_0x13d6e5[_0xc3ee('0x7')]});utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x33'),_0x13d6e5[_0xc3ee('0x7')],members[_0x548df8][_0xc3ee('0x2f')],members[_0x548df8][_0xc3ee('0x9')],members[_0x548df8][_0xc3ee('0x31')]));if(members[_0x548df8][_0xc3ee('0x23')]){writeDB(members[_0x548df8]);}}}}catch(_0x23d365){utils[_0xc3ee('0x13')](util['format'](_0xc3ee('0x2c'),_0x13d6e5[_0xc3ee('0x7')]),_0x23d365);}};
\ No newline at end of file
index 5761067..34c2763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d2=['secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transferuniqueid','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','clone','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','ATTENDED','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','lodash','util','./utils','info','format','uniqueid','queue','lastAssignedTo','accountcode','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','hangup','[%s][queues][hangup]','queuecallerexit','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','varset','[%s][queues][varset]','isNil','value','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','variable','queueposition','EXITWITHKEY','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','queuecallerleaveAt','queuecallerjoinAt','agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','queuecallercomplete','reason','transfer','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid'];(function(_0x4b1bb0,_0x7dc32b){var _0x549407=function(_0xa08deb){while(--_0xa08deb){_0x4b1bb0['push'](_0x4b1bb0['shift']());}};_0x549407(++_0x7dc32b);}(_0x97d2,0xe5));var _0x297d=function(_0x317fea,_0xecb32b){_0x317fea=_0x317fea-0x0;var _0x3ed543=_0x97d2[_0x317fea];return _0x3ed543;};'use strict';var _=require(_0x297d('0x0'));var util=require(_0x297d('0x1'));var utils=require(_0x297d('0x2'));var queues={};function writeDB(_0x4b0d6b){utils[_0x297d('0x3')](util[_0x297d('0x4')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x4b0d6b[_0x297d('0x5')],_0x4b0d6b['channel'],_0x4b0d6b[_0x297d('0x6')],_0x4b0d6b[_0x297d('0x7')],_0x4b0d6b['calleridnum'],_0x4b0d6b[_0x297d('0x8')],_0x4b0d6b['queuecallerexitreason']));if(_0x4b0d6b[_0x297d('0x6')]){utils[_0x297d('0x9')](_0x4b0d6b[_0x297d('0x6')])[_0x297d('0xa')](function(_0x30f696){if(_0x30f696){_0x4b0d6b[_0x297d('0xb')]=_0x30f696[_0x297d('0xb')];}utils[_0x297d('0xc')]('CreateVoiceQueueReport',_0x4b0d6b);});}else{utils[_0x297d('0xc')](_0x297d('0xd'),_0x4b0d6b);}if(_0x4b0d6b['transfereduniqueid']){delete queues[_0x4b0d6b[_0x297d('0xe')]];}else{delete queues[_0x4b0d6b[_0x297d('0x5')]];}}exports[_0x297d('0xf')]=function(_0xd7fae3){try{utils[_0x297d('0x10')](util[_0x297d('0x4')](_0x297d('0x11'),_0xd7fae3['uniqueid']),_0xd7fae3);utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x12'),_0xd7fae3[_0x297d('0x5')],_0xd7fae3['queue'],_0xd7fae3[_0x297d('0x13')]));queues[_0xd7fae3[_0x297d('0x5')]]=_[_0x297d('0x14')](_0xd7fae3,{'originalposition':_0xd7fae3['position'],'queuecallerjoinAt':utils[_0x297d('0x15')](),'mohtime':0x0});}catch(_0x219581){utils['error'](util[_0x297d('0x4')]('[%s][queues][queuecallerjoin]',_0xd7fae3[_0x297d('0x5')]),_0x219581);}};exports[_0x297d('0x16')]=function(_0x49b84b){try{if(!_['isNil'](queues[_0x49b84b[_0x297d('0x5')]])){utils[_0x297d('0x10')](util[_0x297d('0x4')](_0x297d('0x17'),_0x49b84b[_0x297d('0x5')]),_0x49b84b);if(queues[_0x49b84b[_0x297d('0x5')]]['queuecallerleaveAt']){if(!queues[_0x49b84b[_0x297d('0x5')]]['queuecallerabandon']&&!queues[_0x49b84b[_0x297d('0x5')]][_0x297d('0x18')]){queues[_0x49b84b['uniqueid']]['queuecallercomplete']=!![];queues[_0x49b84b['uniqueid']]['queuecallercompleteAt']=utils['now']();queues[_0x49b84b[_0x297d('0x5')]][_0x297d('0x19')]=_0x297d('0x1a');}utils['info'](util['format'](_0x297d('0x1b'),_0x49b84b[_0x297d('0x5')],queues[_0x49b84b[_0x297d('0x5')]][_0x297d('0x1c')],queues[_0x49b84b[_0x297d('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x49b84b[_0x297d('0x5')]]);}else if(queues[_0x49b84b[_0x297d('0x5')]]['transfereduniqueid']){utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x1d'),_0x49b84b['uniqueid'],queues[_0x49b84b['uniqueid']][_0x297d('0x1c')],queues[_0x49b84b[_0x297d('0x5')]][_0x297d('0xe')]));queues[queues[_0x49b84b[_0x297d('0x5')]][_0x297d('0xe')]]=queues[_0x49b84b[_0x297d('0x5')]];queues[queues[_0x49b84b['uniqueid']]['transfereduniqueid']][_0x297d('0x1e')]=0x2;delete queues[_0x49b84b['uniqueid']];}}}catch(_0x4c8358){utils[_0x297d('0x1f')](util[_0x297d('0x4')](_0x297d('0x17'),_0x49b84b[_0x297d('0x5')]),_0x4c8358);}};exports[_0x297d('0x20')]=function(_0x4f5475){try{utils[_0x297d('0x10')](util['format'](_0x297d('0x21'),_0x4f5475[_0x297d('0x5')]),_0x4f5475);if(!_[_0x297d('0x22')](_0x4f5475['variable']['queuestatus'])&&_0x4f5475[_0x297d('0x23')][_0x297d('0x24')]()!==_0x297d('0x25')){if(!_[_0x297d('0x22')](queues[_0x4f5475[_0x297d('0x5')]])){queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x26')]=![];queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x27')]=null;queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x18')]=!![];queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x28')]=utils[_0x297d('0x15')]();queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x19')]=_0x4f5475['value']['toUpperCase']();utils[_0x297d('0x3')](util[_0x297d('0x4')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x4f5475[_0x297d('0x5')],queues[_0x4f5475[_0x297d('0x5')]]['name'],_0x4f5475[_0x297d('0x23')],queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x19')]));writeDB(queues[_0x4f5475[_0x297d('0x5')]]);}}else if(!_['isNil'](_0x4f5475[_0x297d('0x29')][_0x297d('0x2a')])){if(!_[_0x297d('0x22')](queues[_0x4f5475[_0x297d('0x5')]])&&!queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x26')]){queues[_0x4f5475['uniqueid']]['queuecallerabandon']=![];queues[_0x4f5475['uniqueid']][_0x297d('0x27')]=null;queues[_0x4f5475['uniqueid']][_0x297d('0x18')]=!![];queues[_0x4f5475[_0x297d('0x5')]]['queuecallerexitAt']=utils['now']();queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x19')]=_0x297d('0x2b');utils[_0x297d('0x3')](util[_0x297d('0x4')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x4f5475['uniqueid'],queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x1c')],_0x4f5475['value'],queues[_0x4f5475[_0x297d('0x5')]][_0x297d('0x19')]));}}}catch(_0x4d823e){utils[_0x297d('0x1f')](util[_0x297d('0x4')](_0x297d('0x21'),_0x4f5475['uniqueid']),_0x4d823e);}};exports['queuecallerabandon']=function(_0x15d44d){try{if(!_[_0x297d('0x22')](queues[_0x15d44d[_0x297d('0x5')]])){utils[_0x297d('0x10')](util[_0x297d('0x4')](_0x297d('0x2c'),_0x15d44d[_0x297d('0x5')]),_0x15d44d);queues[_0x15d44d[_0x297d('0x5')]][_0x297d('0x18')]=![];queues[_0x15d44d['uniqueid']][_0x297d('0x28')]=null;queues[_0x15d44d[_0x297d('0x5')]][_0x297d('0x26')]=!![];queues[_0x15d44d[_0x297d('0x5')]][_0x297d('0x27')]=utils[_0x297d('0x15')]();queues[_0x15d44d['uniqueid']][_0x297d('0x19')]='ABANDONED';utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x2d'),_0x15d44d['uniqueid'],queues[_0x15d44d[_0x297d('0x5')]][_0x297d('0x1c')],queues[_0x15d44d['uniqueid']][_0x297d('0x19')]));}}catch(_0xfc6e75){utils[_0x297d('0x1f')](util['format'](_0x297d('0x2c'),_0x15d44d[_0x297d('0x5')]),_0xfc6e75);}};exports[_0x297d('0x2e')]=function(_0x4d73a0){try{if(!_[_0x297d('0x22')](queues[_0x4d73a0[_0x297d('0x5')]])){utils[_0x297d('0x10')](util[_0x297d('0x4')](_0x297d('0x2f'),_0x4d73a0[_0x297d('0x5')]),_0x4d73a0);utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x30'),_0x4d73a0[_0x297d('0x5')],queues[_0x4d73a0['uniqueid']]['name'],_0x4d73a0[_0x297d('0x31')],_0x4d73a0[_0x297d('0x32')]));queues[_0x4d73a0[_0x297d('0x5')]][_0x297d('0x2e')]=!![];queues[_0x4d73a0[_0x297d('0x5')]]['queuecallerleaveAt']=utils[_0x297d('0x15')]();queues[_0x4d73a0[_0x297d('0x5')]][_0x297d('0x33')]=utils[_0x297d('0x34')](queues[_0x4d73a0['uniqueid']][_0x297d('0x35')],queues[_0x4d73a0['uniqueid']][_0x297d('0x36')]);queues[_0x4d73a0[_0x297d('0x5')]]['position']=_0x4d73a0[_0x297d('0x13')];queues[_0x4d73a0[_0x297d('0x5')]]['count']=_0x4d73a0['count'];queues[_0x4d73a0['uniqueid']][_0x297d('0x31')]=_0x4d73a0['connectedlinenum'];queues[_0x4d73a0[_0x297d('0x5')]]['connectedlinename']=_0x4d73a0['connectedlinename'];}}catch(_0x5c7622){utils[_0x297d('0x1f')](util[_0x297d('0x4')](_0x297d('0x2f'),_0x4d73a0['uniqueid']),_0x5c7622);}};exports[_0x297d('0x37')]=function(_0x10837d){try{if(!_['isNil'](queues[_0x10837d['uniqueid']])){utils[_0x297d('0x10')](util[_0x297d('0x4')](_0x297d('0x38'),_0x10837d[_0x297d('0x5')]),_0x10837d);utils['info'](util[_0x297d('0x4')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x10837d[_0x297d('0x5')],queues[_0x10837d['uniqueid']][_0x297d('0x1c')],_0x10837d[_0x297d('0x39')],_0x10837d[_0x297d('0x3a')]));queues[_0x10837d[_0x297d('0x5')]][_0x297d('0x26')]=![];queues[_0x10837d['uniqueid']][_0x297d('0x26')]=![];queues[_0x10837d[_0x297d('0x5')]][_0x297d('0x27')]=null;queues[_0x10837d['uniqueid']][_0x297d('0x18')]=![];queues[_0x10837d[_0x297d('0x5')]][_0x297d('0x19')]=null;queues[_0x10837d[_0x297d('0x5')]][_0x297d('0x28')]=null;queues[_0x10837d['uniqueid']][_0x297d('0x3b')]=!![];queues[_0x10837d[_0x297d('0x5')]][_0x297d('0x8')]=_0x10837d[_0x297d('0x3a')];queues[_0x10837d[_0x297d('0x5')]]['lastAssignedTo']=_0x10837d[_0x297d('0x39')];}}catch(_0x5f5b37){utils[_0x297d('0x1f')](util[_0x297d('0x4')](_0x297d('0x38'),_0x10837d[_0x297d('0x5')]),_0x5f5b37);}};exports[_0x297d('0x3c')]=function(_0x150112){try{if(!_['isNil'](queues[_0x150112[_0x297d('0x5')]])){if(queues[_0x150112[_0x297d('0x5')]][_0x297d('0x35')]){utils[_0x297d('0x10')](util['format'](_0x297d('0x3d'),_0x150112[_0x297d('0x5')]),_0x150112);queues[_0x150112['uniqueid']][_0x297d('0x26')]=![];queues[_0x150112['uniqueid']][_0x297d('0x26')]=![];queues[_0x150112[_0x297d('0x5')]][_0x297d('0x27')]=null;queues[_0x150112[_0x297d('0x5')]][_0x297d('0x18')]=![];queues[_0x150112[_0x297d('0x5')]]['queuecallerexitAt']=null;queues[_0x150112[_0x297d('0x5')]]['assigned']=!![];queues[_0x150112[_0x297d('0x5')]][_0x297d('0x7')]=_0x150112[_0x297d('0x39')];queues[_0x150112[_0x297d('0x5')]][_0x297d('0x3e')]=!![];queues[_0x150112[_0x297d('0x5')]]['queuecallercompleteAt']=utils[_0x297d('0x15')]();if(_0x150112[_0x297d('0x3f')]==_0x297d('0x40')){if(!queues[_0x150112[_0x297d('0x5')]][_0x297d('0x40')]){queues[_0x150112[_0x297d('0x5')]][_0x297d('0x19')]='TRANSFER';}}else{queues[_0x150112[_0x297d('0x5')]][_0x297d('0x19')]='COMPLETEDBY'+_0x150112['reason'][_0x297d('0x24')]();}utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x41'),_0x150112[_0x297d('0x5')],queues[_0x150112[_0x297d('0x5')]][_0x297d('0x1c')],_0x150112['membername'],queues[_0x150112[_0x297d('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x150112[_0x297d('0x5')]]);}}}catch(_0x4adcf0){utils[_0x297d('0x1f')](util['format'](_0x297d('0x3d'),_0x150112['uniqueid']),_0x4adcf0);}};exports[_0x297d('0x42')]=function(_0x3143ac){try{if(!_[_0x297d('0x22')](queues[_0x3143ac[_0x297d('0x43')]])){utils['debug'](util[_0x297d('0x4')](_0x297d('0x44'),_0x3143ac[_0x297d('0x5')]),_0x3143ac);queues[_0x3143ac[_0x297d('0x43')]][_0x297d('0x40')]=!![];queues[_0x3143ac[_0x297d('0x43')]][_0x297d('0x45')]=_0x297d('0x46');queues[_0x3143ac[_0x297d('0x43')]][_0x297d('0x47')]=_0x3143ac[_0x297d('0x48')];queues[_0x3143ac['transfereeuniqueid']]['transferuniqueid']=_0x3143ac['transfereeuniqueid'];queues[_0x3143ac['transfereeuniqueid']][_0x297d('0x19')]=_0x297d('0x49');utils[_0x297d('0x3')](util[_0x297d('0x4')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x3143ac[_0x297d('0x5')],queues[_0x3143ac[_0x297d('0x43')]][_0x297d('0x1c')],_0x3143ac['transfereeuniqueid'],_0x3143ac['extension']));}}catch(_0x28bec2){utils[_0x297d('0x1f')](util[_0x297d('0x4')](_0x297d('0x44'),_0x3143ac[_0x297d('0x5')]),_0x28bec2);}};exports[_0x297d('0x4a')]=function(_0x137f71){try{utils[_0x297d('0x10')](util['format'](_0x297d('0x4b'),_0x137f71[_0x297d('0x4c')]),_0x137f71);if(_0x137f71['origtransfereruniqueid']==_0x137f71['origtransfererlinkedid']){if(!_[_0x297d('0x22')](queues[_0x137f71[_0x297d('0x4d')]])){utils[_0x297d('0x3')](util['format'](_0x297d('0x4e'),_0x137f71['origtransfereruniqueid'],queues[_0x137f71[_0x297d('0x4d')]]['name'],_0x137f71['origtransfererexten']));queues[_0x137f71['secondtransfererlinkedid']][_0x297d('0x40')]=!![];queues[_0x137f71[_0x297d('0x4d')]][_0x297d('0x45')]='ATTENDED';queues[_0x137f71[_0x297d('0x4d')]][_0x297d('0x47')]=_0x137f71['origtransfererexten'];queues[_0x137f71[_0x297d('0x4d')]][_0x297d('0x4f')]=_0x137f71[_0x297d('0x4c')];queues[_0x137f71[_0x297d('0x4d')]]['queuecallerexitreason']=_0x297d('0x50');}if(!_[_0x297d('0x22')](queues[_0x137f71[_0x297d('0x51')]])){if(_0x137f71[_0x297d('0x52')]&&queues[_0x137f71[_0x297d('0x52')]]){queues[_0x137f71[_0x297d('0x52')]][_0x297d('0x1e')]=0x1;queues[_0x137f71['transfereeuniqueid']]=_[_0x297d('0x53')](queues[_0x137f71[_0x297d('0x52')]]);queues[_0x137f71[_0x297d('0x43')]]['transfereduniqueid']=_0x137f71[_0x297d('0x54')];queues[_0x137f71[_0x297d('0x43')]][_0x297d('0x1e')]=0x2;queues[_0x137f71[_0x297d('0x43')]][_0x297d('0x55')]=queues[_0x137f71[_0x297d('0x4d')]][_0x297d('0x55')];queues[_0x137f71[_0x297d('0x43')]]['calleridname']=queues[_0x137f71[_0x297d('0x4d')]][_0x297d('0x56')];queues[_0x137f71['transfereeuniqueid']][_0x297d('0x36')]=utils['now']();queues[_0x137f71[_0x297d('0x43')]]['queuecallerleaveAt']=utils['now']();queues[_0x137f71['transfereeuniqueid']]['holdtime']=0x0;queues[_0x137f71['transfereeuniqueid']][_0x297d('0x57')]=0x0;utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x58'),_0x137f71[_0x297d('0x4c')],queues[_0x137f71[_0x297d('0x43')]]['name'],queues[_0x137f71[_0x297d('0x43')]]['calleridnum'],queues[_0x137f71['transfereeuniqueid']][_0x297d('0x56')]));}else{utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x59'),_0x137f71[_0x297d('0x4c')],queues[_0x137f71[_0x297d('0x51')]][_0x297d('0x1c')],_0x137f71[_0x297d('0x4d')]));queues[_0x137f71['origtransfererlinkedid']]['transfereduniqueid']=_0x137f71[_0x297d('0x4d')];}}}else if(_0x137f71[_0x297d('0x5a')]==_0x137f71[_0x297d('0x4d')]){if(!_[_0x297d('0x22')](queues[_0x137f71[_0x297d('0x51')]])){utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x5b'),_0x137f71[_0x297d('0x4c')],queues[_0x137f71[_0x297d('0x51')]][_0x297d('0x1c')],_0x137f71[_0x297d('0x5a')],_0x137f71[_0x297d('0x5c')]));queues[_0x137f71[_0x297d('0x51')]][_0x297d('0x40')]=!![];queues[_0x137f71[_0x297d('0x51')]][_0x297d('0x45')]=_0x297d('0x5d');queues[_0x137f71['origtransfererlinkedid']]['transferexten']=_0x137f71[_0x297d('0x5c')];queues[_0x137f71[_0x297d('0x51')]][_0x297d('0x4f')]=_0x137f71[_0x297d('0x5a')];queues[_0x137f71[_0x297d('0x51')]][_0x297d('0x19')]=_0x297d('0x50');}if(!_[_0x297d('0x22')](queues[_0x137f71[_0x297d('0x4d')]])){if(_0x137f71[_0x297d('0x5e')]&&queues[_0x137f71[_0x297d('0x5e')]]){queues[_0x137f71[_0x297d('0x5e')]][_0x297d('0x1e')]=0x1;queues[_0x137f71[_0x297d('0x54')]]=_[_0x297d('0x53')](queues[_0x137f71[_0x297d('0x5e')]]);queues[_0x137f71['transfertargetuniqueid']][_0x297d('0xe')]=_0x137f71['transfertargetuniqueid'];queues[_0x137f71['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x137f71['transfertargetuniqueid']]['calleridnum']=queues[_0x137f71[_0x297d('0x51')]][_0x297d('0x55')];queues[_0x137f71['transfertargetuniqueid']][_0x297d('0x56')]=queues[_0x137f71['origtransfererlinkedid']][_0x297d('0x56')];queues[_0x137f71[_0x297d('0x54')]][_0x297d('0x36')]=utils[_0x297d('0x15')]();queues[_0x137f71[_0x297d('0x54')]][_0x297d('0x35')]=utils[_0x297d('0x15')]();queues[_0x137f71[_0x297d('0x54')]][_0x297d('0x33')]=0x0;queues[_0x137f71[_0x297d('0x54')]]['mohtime']=0x0;utils[_0x297d('0x3')](util[_0x297d('0x4')](_0x297d('0x5f'),_0x137f71[_0x297d('0x4c')],queues[_0x137f71[_0x297d('0x54')]][_0x297d('0x1c')],queues[_0x137f71[_0x297d('0x54')]][_0x297d('0xe')],queues[_0x137f71[_0x297d('0x54')]][_0x297d('0x55')],queues[_0x137f71['transfertargetuniqueid']][_0x297d('0x56')]));}else{utils['info'](util[_0x297d('0x4')](_0x297d('0x59'),_0x137f71[_0x297d('0x4c')],queues[_0x137f71[_0x297d('0x4d')]]['name'],_0x137f71[_0x297d('0x51')]));queues[_0x137f71[_0x297d('0x4d')]][_0x297d('0xe')]=_0x137f71[_0x297d('0x51')];}}}}catch(_0x20b034){utils[_0x297d('0x1f')](util[_0x297d('0x4')](_0x297d('0x4b'),_0x137f71[_0x297d('0x4c')]),_0x20b034);}};exports[_0x297d('0x60')]=function(_0x570426){try{if(!_['isNil'](queues[_0x570426['uniqueid']])){utils[_0x297d('0x10')](util[_0x297d('0x4')](_0x297d('0x61'),_0x570426[_0x297d('0x5')]),_0x570426);queues[_0x570426[_0x297d('0x5')]][_0x297d('0x62')]=utils[_0x297d('0x15')]();utils['info'](util['format'](_0x297d('0x63'),_0x570426['uniqueid'],queues[_0x570426['uniqueid']][_0x297d('0x1c')],queues[_0x570426['uniqueid']][_0x297d('0x62')]));}}catch(_0x23d7e2){utils['error'](util[_0x297d('0x4')]('[%s][queues][musiconholdstart]',_0x570426[_0x297d('0x5')]),_0x23d7e2);}};exports[_0x297d('0x64')]=function(_0x564be2){try{if(!_[_0x297d('0x22')](queues[_0x564be2['uniqueid']])){if(!_['isNil'](queues[_0x564be2[_0x297d('0x5')]][_0x297d('0x62')])){utils['debug'](util['format'](_0x297d('0x65'),_0x564be2[_0x297d('0x5')]),_0x564be2);queues[_0x564be2[_0x297d('0x5')]][_0x297d('0x57')]+=utils[_0x297d('0x34')](utils['now'](),queues[_0x564be2[_0x297d('0x5')]][_0x297d('0x62')]);utils['info'](util[_0x297d('0x4')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x564be2[_0x297d('0x5')],queues[_0x564be2['uniqueid']][_0x297d('0x1c')],queues[_0x564be2[_0x297d('0x5')]][_0x297d('0x57')]));delete queues[_0x564be2[_0x297d('0x5')]]['musiconholdstartAt'];}}}catch(_0x4e7f52){utils[_0x297d('0x1f')](util['format'](_0x297d('0x65'),_0x564be2['uniqueid']),_0x4e7f52);}};
\ No newline at end of file
+var _0xec80=['reason','transfereeuniqueid','BLIND','transferexten','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','secondtransfererlinkedid','origtransfererexten','transfertype','ATTENDED','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','queuecallerenterreason','transfertargetuniqueid','calleridname','queuecallerjoinAt','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfererexten','transferuniqueid','secondtransfereruniqueid','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','queue','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','varset','value','CONTINUE','queuecallerabandonAt','queuecallerexitAt','toUpperCase','queueposition','EXITWITHKEY','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','position','count','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentcomplete]','transfer'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xec80,0x144));var _0x0ec8=function(_0x148073,_0x37dbaa){_0x148073=_0x148073-0x0;var _0x30ba58=_0xec80[_0x148073];return _0x30ba58;};'use strict';var _=require(_0x0ec8('0x0'));var util=require(_0x0ec8('0x1'));var utils=require(_0x0ec8('0x2'));var queues={};function writeDB(_0x2267f0){utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x4'),_0x2267f0[_0x0ec8('0x5')],_0x2267f0[_0x0ec8('0x6')],_0x2267f0['queue'],_0x2267f0[_0x0ec8('0x7')],_0x2267f0[_0x0ec8('0x8')],_0x2267f0[_0x0ec8('0x9')],_0x2267f0[_0x0ec8('0xa')]));if(_0x2267f0[_0x0ec8('0xb')]){utils['getVoiceQueueByName'](_0x2267f0[_0x0ec8('0xb')])['then'](function(_0x598b5c){if(_0x598b5c){_0x2267f0[_0x0ec8('0xc')]=_0x598b5c[_0x0ec8('0xc')];}utils[_0x0ec8('0xd')](_0x0ec8('0xe'),_0x2267f0);});}else{utils[_0x0ec8('0xd')]('CreateVoiceQueueReport',_0x2267f0);}if(_0x2267f0[_0x0ec8('0xf')]){delete queues[_0x2267f0[_0x0ec8('0xf')]];}else{delete queues[_0x2267f0['uniqueid']];}}exports[_0x0ec8('0x10')]=function(_0x3643bb){try{utils[_0x0ec8('0x11')](util['format']('[%s][queues][queuecallerjoin]',_0x3643bb[_0x0ec8('0x5')]),_0x3643bb);utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x13'),_0x3643bb[_0x0ec8('0x5')],_0x3643bb[_0x0ec8('0xb')],_0x3643bb['position']));queues[_0x3643bb[_0x0ec8('0x5')]]=_[_0x0ec8('0x14')](_0x3643bb,{'originalposition':_0x3643bb['position'],'queuecallerjoinAt':utils[_0x0ec8('0x15')](),'mohtime':0x0});}catch(_0x5be643){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')](_0x0ec8('0x17'),_0x3643bb[_0x0ec8('0x5')]),_0x5be643);}};exports[_0x0ec8('0x18')]=function(_0x83133e){try{if(!_[_0x0ec8('0x19')](queues[_0x83133e[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util['format'](_0x0ec8('0x1a'),_0x83133e[_0x0ec8('0x5')]),_0x83133e);if(queues[_0x83133e['uniqueid']][_0x0ec8('0x1b')]){if(!queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1c')]&&!queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1d')]){queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1e')]=!![];queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1f')]=utils[_0x0ec8('0x15')]();queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0xa')]=_0x0ec8('0x20');}utils['info'](util[_0x0ec8('0x12')](_0x0ec8('0x21'),_0x83133e['uniqueid'],queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x83133e['uniqueid']][_0x0ec8('0xa')]));writeDB(queues[_0x83133e[_0x0ec8('0x5')]]);}else if(queues[_0x83133e['uniqueid']][_0x0ec8('0xf')]){utils['info'](util[_0x0ec8('0x12')](_0x0ec8('0x23'),_0x83133e[_0x0ec8('0x5')],queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x83133e[_0x0ec8('0x5')]]['transfereduniqueid']));queues[queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0xf')]]=queues[_0x83133e[_0x0ec8('0x5')]];queues[queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0xf')]]['queuecallerenterreason']=0x2;delete queues[_0x83133e['uniqueid']];}}}catch(_0x4634a2){utils['error'](util[_0x0ec8('0x12')](_0x0ec8('0x1a'),_0x83133e[_0x0ec8('0x5')]),_0x4634a2);}};exports[_0x0ec8('0x24')]=function(_0x514f62){try{utils[_0x0ec8('0x11')](util['format']('[%s][queues][varset]',_0x514f62['uniqueid']),_0x514f62);if(!_[_0x0ec8('0x19')](_0x514f62['variable']['queuestatus'])&&_0x514f62[_0x0ec8('0x25')]['toUpperCase']()!==_0x0ec8('0x26')){if(!_['isNil'](queues[_0x514f62[_0x0ec8('0x5')]])){queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerabandon']=![];queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x27')]=null;queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x1d')]=!![];queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x28')]=utils['now']();queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0xa')]=_0x514f62['value'][_0x0ec8('0x29')]();utils[_0x0ec8('0x3')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x514f62['uniqueid'],queues[_0x514f62[_0x0ec8('0x5')]]['name'],_0x514f62['value'],queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0xa')]));writeDB(queues[_0x514f62[_0x0ec8('0x5')]]);}}else if(!_[_0x0ec8('0x19')](_0x514f62['variable'][_0x0ec8('0x2a')])){if(!_[_0x0ec8('0x19')](queues[_0x514f62[_0x0ec8('0x5')]])&&!queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerabandon']){queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=![];queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerabandonAt']=null;queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x1d')]=!![];queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x28')]=utils['now']();queues[_0x514f62['uniqueid']][_0x0ec8('0xa')]=_0x0ec8('0x2b');utils[_0x0ec8('0x3')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x514f62[_0x0ec8('0x5')],queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x514f62['value'],queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerexitreason']));}}}catch(_0x2e9788){utils['error'](util[_0x0ec8('0x12')]('[%s][queues][varset]',_0x514f62[_0x0ec8('0x5')]),_0x2e9788);}};exports[_0x0ec8('0x1c')]=function(_0x1c1c4c){try{if(!_[_0x0ec8('0x19')](queues[_0x1c1c4c[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x2c'),_0x1c1c4c[_0x0ec8('0x5')]),_0x1c1c4c);queues[_0x1c1c4c[_0x0ec8('0x5')]]['queuecallerexit']=![];queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x28')]=null;queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=!![];queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x27')]=utils['now']();queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0xa')]=_0x0ec8('0x2d');utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x2e'),_0x1c1c4c[_0x0ec8('0x5')],queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0xa')]));}}catch(_0x4d44dc){utils['error'](util[_0x0ec8('0x12')]('[%s][queues][queuecallerabandon]',_0x1c1c4c[_0x0ec8('0x5')]),_0x4d44dc);}};exports[_0x0ec8('0x2f')]=function(_0x40692f){try{if(!_[_0x0ec8('0x19')](queues[_0x40692f[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x30'),_0x40692f[_0x0ec8('0x5')]),_0x40692f);utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x31'),_0x40692f[_0x0ec8('0x5')],queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x40692f[_0x0ec8('0x32')],_0x40692f[_0x0ec8('0x33')]));queues[_0x40692f[_0x0ec8('0x5')]]['queuecallerleave']=!![];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x1b')]=utils[_0x0ec8('0x15')]();queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x34')]=utils[_0x0ec8('0x35')](queues[_0x40692f['uniqueid']][_0x0ec8('0x1b')],queues[_0x40692f[_0x0ec8('0x5')]]['queuecallerjoinAt']);queues[_0x40692f['uniqueid']][_0x0ec8('0x36')]=_0x40692f['position'];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x37')]=_0x40692f[_0x0ec8('0x37')];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x32')]=_0x40692f[_0x0ec8('0x32')];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x33')]=_0x40692f[_0x0ec8('0x33')];}}catch(_0x435673){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')]('[%s][queues][queuecallerleave]',_0x40692f['uniqueid']),_0x435673);}};exports[_0x0ec8('0x38')]=function(_0x7ccf06){try{if(!_[_0x0ec8('0x19')](queues[_0x7ccf06[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x39'),_0x7ccf06['uniqueid']),_0x7ccf06);utils['info'](util['format'](_0x0ec8('0x3a'),_0x7ccf06['uniqueid'],queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x7ccf06[_0x0ec8('0x3b')],_0x7ccf06[_0x0ec8('0x3c')]));queues[_0x7ccf06['uniqueid']][_0x0ec8('0x1c')]=![];queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=![];queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x27')]=null;queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x1d')]=![];queues[_0x7ccf06['uniqueid']][_0x0ec8('0xa')]=null;queues[_0x7ccf06['uniqueid']][_0x0ec8('0x28')]=null;queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x3d')]=!![];queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x9')]=_0x7ccf06[_0x0ec8('0x3c')];queues[_0x7ccf06[_0x0ec8('0x5')]]['lastAssignedTo']=_0x7ccf06[_0x0ec8('0x3b')];}}catch(_0x20b70f){utils[_0x0ec8('0x16')](util['format'](_0x0ec8('0x39'),_0x7ccf06[_0x0ec8('0x5')]),_0x20b70f);}};exports['agentcomplete']=function(_0x12e599){try{if(!_['isNil'](queues[_0x12e599[_0x0ec8('0x5')]])){if(queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1b')]){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x3e'),_0x12e599[_0x0ec8('0x5')]),_0x12e599);queues[_0x12e599[_0x0ec8('0x5')]]['queuecallerabandon']=![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x27')]=null;queues[_0x12e599[_0x0ec8('0x5')]]['queuecallerexit']=![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x28')]=null;queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x3d')]=!![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x7')]=_0x12e599[_0x0ec8('0x3b')];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1e')]=!![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1f')]=utils[_0x0ec8('0x15')]();if(_0x12e599['reason']==_0x0ec8('0x3f')){if(!queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x3f')]){queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0xa')]='TRANSFER';}}else{queues[_0x12e599['uniqueid']]['queuecallerexitreason']='COMPLETEDBY'+_0x12e599[_0x0ec8('0x40')][_0x0ec8('0x29')]();}utils['info'](util[_0x0ec8('0x12')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x12e599[_0x0ec8('0x5')],queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x12e599[_0x0ec8('0x3b')],queues[_0x12e599['uniqueid']][_0x0ec8('0xa')]));writeDB(queues[_0x12e599[_0x0ec8('0x5')]]);}}}catch(_0x4f11c6){utils[_0x0ec8('0x16')](util['format'](_0x0ec8('0x3e'),_0x12e599[_0x0ec8('0x5')]),_0x4f11c6);}};exports['blindtransfer']=function(_0x4ed37f){try{if(!_['isNil'](queues[_0x4ed37f['transfereeuniqueid']])){utils['debug'](util[_0x0ec8('0x12')]('[%s][queues][blindtransfer]',_0x4ed37f[_0x0ec8('0x5')]),_0x4ed37f);queues[_0x4ed37f[_0x0ec8('0x41')]][_0x0ec8('0x3f')]=!![];queues[_0x4ed37f[_0x0ec8('0x41')]]['transfertype']=_0x0ec8('0x42');queues[_0x4ed37f[_0x0ec8('0x41')]][_0x0ec8('0x43')]=_0x4ed37f[_0x0ec8('0x44')];queues[_0x4ed37f[_0x0ec8('0x41')]]['transferuniqueid']=_0x4ed37f['transfereeuniqueid'];queues[_0x4ed37f['transfereeuniqueid']][_0x0ec8('0xa')]=_0x0ec8('0x45');utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x46'),_0x4ed37f[_0x0ec8('0x5')],queues[_0x4ed37f[_0x0ec8('0x41')]][_0x0ec8('0x22')],_0x4ed37f[_0x0ec8('0x41')],_0x4ed37f['extension']));}}catch(_0x1978e4){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')]('[%s][queues][blindtransfer]',_0x4ed37f['uniqueid']),_0x1978e4);}};exports[_0x0ec8('0x47')]=function(_0x419d9e){try{utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')]('[%s][queues][attendedtransfer]',_0x419d9e[_0x0ec8('0x48')]),_0x419d9e);if(_0x419d9e[_0x0ec8('0x48')]==_0x419d9e['origtransfererlinkedid']){if(!_[_0x0ec8('0x19')](queues[_0x419d9e['secondtransfererlinkedid']])){utils[_0x0ec8('0x3')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x49')]]['name'],_0x419d9e[_0x0ec8('0x4a')]));queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x3f')]=!![];queues[_0x419d9e['secondtransfererlinkedid']][_0x0ec8('0x4b')]=_0x0ec8('0x4c');queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x43')]=_0x419d9e[_0x0ec8('0x4a')];queues[_0x419d9e[_0x0ec8('0x49')]]['transferuniqueid']=_0x419d9e[_0x0ec8('0x48')];queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0xa')]=_0x0ec8('0x4d');}if(!_[_0x0ec8('0x19')](queues[_0x419d9e[_0x0ec8('0x4e')]])){if(_0x419d9e[_0x0ec8('0x4f')]&&queues[_0x419d9e[_0x0ec8('0x4f')]]){queues[_0x419d9e[_0x0ec8('0x4f')]][_0x0ec8('0x50')]=0x1;queues[_0x419d9e['transfereeuniqueid']]=_['clone'](queues[_0x419d9e[_0x0ec8('0x4f')]]);queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0xf')]=_0x419d9e[_0x0ec8('0x51')];queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x50')]=0x2;queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x8')]=queues[_0x419d9e['secondtransfererlinkedid']][_0x0ec8('0x8')];queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x52')]=queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x52')];queues[_0x419d9e['transfereeuniqueid']][_0x0ec8('0x53')]=utils[_0x0ec8('0x15')]();queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x1b')]=utils['now']();queues[_0x419d9e['transfereeuniqueid']]['holdtime']=0x0;queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x54')]=0x0;utils['info'](util[_0x0ec8('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x41')]]['name'],queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x8')],queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x52')]));}else{utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x55'),_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0x22')],_0x419d9e[_0x0ec8('0x49')]));queues[_0x419d9e[_0x0ec8('0x4e')]][_0x0ec8('0xf')]=_0x419d9e['secondtransfererlinkedid'];}}}else if(_0x419d9e['secondtransfereruniqueid']==_0x419d9e['secondtransfererlinkedid']){if(!_['isNil'](queues[_0x419d9e[_0x0ec8('0x4e')]])){utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e['origtransfererlinkedid']]['name'],_0x419d9e['secondtransfereruniqueid'],_0x419d9e['secondtransfererexten']));queues[_0x419d9e['origtransfererlinkedid']]['transfer']=!![];queues[_0x419d9e['origtransfererlinkedid']]['transfertype']=_0x0ec8('0x4c');queues[_0x419d9e[_0x0ec8('0x4e')]][_0x0ec8('0x43')]=_0x419d9e[_0x0ec8('0x56')];queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0x57')]=_0x419d9e[_0x0ec8('0x58')];queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0xa')]=_0x0ec8('0x4d');}if(!_[_0x0ec8('0x19')](queues[_0x419d9e[_0x0ec8('0x49')]])){if(_0x419d9e[_0x0ec8('0x59')]&&queues[_0x419d9e[_0x0ec8('0x59')]]){queues[_0x419d9e[_0x0ec8('0x59')]]['queuecallerenterreason']=0x1;queues[_0x419d9e['transfertargetuniqueid']]=_[_0x0ec8('0x5a')](queues[_0x419d9e[_0x0ec8('0x59')]]);queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0xf')]=_0x419d9e[_0x0ec8('0x51')];queues[_0x419d9e['transfertargetuniqueid']][_0x0ec8('0x50')]=0x2;queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x8')]=queues[_0x419d9e[_0x0ec8('0x4e')]][_0x0ec8('0x8')];queues[_0x419d9e['transfertargetuniqueid']]['calleridname']=queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0x52')];queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x53')]=utils[_0x0ec8('0x15')]();queues[_0x419d9e[_0x0ec8('0x51')]]['queuecallerleaveAt']=utils['now']();queues[_0x419d9e['transfertargetuniqueid']][_0x0ec8('0x34')]=0x0;queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x54')]=0x0;utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x5b'),_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x51')]]['name'],queues[_0x419d9e[_0x0ec8('0x51')]]['transfereduniqueid'],queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x8')],queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x52')]));}else{utils['info'](util[_0x0ec8('0x12')](_0x0ec8('0x55'),_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x22')],_0x419d9e['origtransfererlinkedid']));queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0xf')]=_0x419d9e[_0x0ec8('0x4e')];}}}}catch(_0x4fb5f1){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')](_0x0ec8('0x5c'),_0x419d9e[_0x0ec8('0x48')]),_0x4fb5f1);}};exports['musiconholdstart']=function(_0x1c059a){try{if(!_[_0x0ec8('0x19')](queues[_0x1c059a[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x5d'),_0x1c059a[_0x0ec8('0x5')]),_0x1c059a);queues[_0x1c059a['uniqueid']][_0x0ec8('0x5e')]=utils[_0x0ec8('0x15')]();utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x5f'),_0x1c059a[_0x0ec8('0x5')],queues[_0x1c059a[_0x0ec8('0x5')]]['name'],queues[_0x1c059a[_0x0ec8('0x5')]][_0x0ec8('0x5e')]));}}catch(_0x3679c4){utils['error'](util[_0x0ec8('0x12')](_0x0ec8('0x5d'),_0x1c059a[_0x0ec8('0x5')]),_0x3679c4);}};exports['musiconholdstop']=function(_0x3ff0ca){try{if(!_[_0x0ec8('0x19')](queues[_0x3ff0ca[_0x0ec8('0x5')]])){if(!_[_0x0ec8('0x19')](queues[_0x3ff0ca['uniqueid']][_0x0ec8('0x5e')])){utils['debug'](util[_0x0ec8('0x12')](_0x0ec8('0x60'),_0x3ff0ca[_0x0ec8('0x5')]),_0x3ff0ca);queues[_0x3ff0ca[_0x0ec8('0x5')]][_0x0ec8('0x54')]+=utils['diffTime'](utils['now'](),queues[_0x3ff0ca[_0x0ec8('0x5')]]['musiconholdstartAt']);utils[_0x0ec8('0x3')](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x3ff0ca['uniqueid'],queues[_0x3ff0ca[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x3ff0ca[_0x0ec8('0x5')]]['mohtime']));delete queues[_0x3ff0ca[_0x0ec8('0x5')]][_0x0ec8('0x5e')];}}}catch(_0x2e73a1){utils[_0x0ec8('0x16')](util['format'](_0x0ec8('0x60'),_0x3ff0ca[_0x0ec8('0x5')]),_0x2e73a1);}};
\ No newline at end of file
index 2b2adc2..8c8c712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4301=['./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','name','request','CreateVoiceRecording','newchannel','debug','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','channel','error','[%s][recordings][newchannel]','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','context','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','newexten','[%s][recordings][newexten]','application','appdata','toLowerCase','set','startsWith','cdr','split','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','util'];(function(_0x3b711c,_0x4b22dc){var _0x2685f0=function(_0x3b5ba6){while(--_0x3b5ba6){_0x3b711c['push'](_0x3b711c['shift']());}};_0x2685f0(++_0x4b22dc);}(_0x4301,0x17e));var _0x1430=function(_0x49d45c,_0x1b2dad){_0x49d45c=_0x49d45c-0x0;var _0x30f881=_0x4301[_0x49d45c];return _0x30f881;};'use strict';var _=require(_0x1430('0x0'));var util=require(_0x1430('0x1'));var utils=require(_0x1430('0x2'));var recordings={};function writeDB(_0x16f116){utils[_0x1430('0x3')](util[_0x1430('0x4')](_0x1430('0x5'),_0x16f116[_0x1430('0x6')]));if(_0x16f116[_0x1430('0x7')]){utils[_0x1430('0x8')](_0x16f116[_0x1430('0x7')])[_0x1430('0x9')](function(_0xb5a1b0){if(_0xb5a1b0){_0x16f116[_0x1430('0xa')]=_0xb5a1b0[_0x1430('0xb')];_0x16f116['UserId']=_0xb5a1b0['id'];}utils['request']('CreateVoiceRecording',_0x16f116);});}else{utils[_0x1430('0xc')](_0x1430('0xd'),_0x16f116);}}exports[_0x1430('0xe')]=function(_0x5d0ebb){try{utils[_0x1430('0xf')](util['format']('[%s][recordings][newchannel]',_0x5d0ebb[_0x1430('0x6')]),_0x5d0ebb);if(_0x5d0ebb[_0x1430('0x6')]==_0x5d0ebb[_0x1430('0x10')]){utils[_0x1430('0x3')](util[_0x1430('0x4')](_0x1430('0x11'),_0x5d0ebb[_0x1430('0x6')],_0x5d0ebb['context'],_0x5d0ebb[_0x1430('0x12')]));recordings[_0x5d0ebb[_0x1430('0x6')]]={'uniqueid':_0x5d0ebb[_0x1430('0x6')],'accountcode':_0x5d0ebb[_0x1430('0x7')],'exten':_0x5d0ebb[_0x1430('0x12')],'context':_0x5d0ebb['context'],'channel':_0x5d0ebb[_0x1430('0x13')],'monitors':[]};}}catch(_0x734042){utils[_0x1430('0x14')](util[_0x1430('0x4')](_0x1430('0x15'),_0x5d0ebb[_0x1430('0x6')]),_0x734042);}};exports[_0x1430('0x16')]=function(_0x3d6f85){try{utils[_0x1430('0xf')](util[_0x1430('0x4')](_0x1430('0x17'),_0x3d6f85['uniqueid']),_0x3d6f85);if(!_[_0x1430('0x18')](recordings[_0x3d6f85[_0x1430('0x6')]])&&_0x3d6f85[_0x1430('0x19')]==0x6){utils[_0x1430('0x3')](util[_0x1430('0x4')](_0x1430('0x1a'),_0x3d6f85[_0x1430('0x6')],_0x3d6f85[_0x1430('0x1b')],_0x3d6f85[_0x1430('0x13')]));}else if(!_[_0x1430('0x18')](recordings[_0x3d6f85['linkedid']])&&_0x3d6f85[_0x1430('0x19')]==0x6&&_0x3d6f85[_0x1430('0x1b')]!='transfer'){utils[_0x1430('0x3')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x3d6f85[_0x1430('0x6')],_0x3d6f85['linkedid'],_0x3d6f85['context'],_0x3d6f85[_0x1430('0x13')]));recordings[_0x3d6f85[_0x1430('0x10')]][_0x1430('0x7')]=_0x3d6f85['accountcode'];}}catch(_0x4a67a4){utils[_0x1430('0x14')](util[_0x1430('0x4')](_0x1430('0x17'),_0x3d6f85[_0x1430('0x6')]),_0x4a67a4);}};exports[_0x1430('0x1c')]=function(_0x2cdadb){try{if(!_[_0x1430('0x18')](_0x2cdadb[_0x1430('0x1d')])&&!_[_0x1430('0x18')](_0x2cdadb[_0x1430('0x1d')][_0x1430('0x1e')])){utils[_0x1430('0xf')](util['format'](_0x1430('0x1f'),_0x2cdadb[_0x1430('0x6')]),_0x2cdadb);utils[_0x1430('0x3')](util[_0x1430('0x4')](_0x1430('0x20'),_0x2cdadb[_0x1430('0x6')],_0x2cdadb[_0x1430('0x1d')],_0x2cdadb[_0x1430('0x21')]));if(_[_0x1430('0x22')](_0x2cdadb[_0x1430('0x21')],_0x1430('0x23'))){_0x2cdadb[_0x1430('0x21')]=_0x2cdadb[_0x1430('0x21')][_0x1430('0x24')]('.wav49',_0x1430('0x25'));}if(recordings[_0x2cdadb[_0x1430('0x10')]]){var _0x15d831=_[_0x1430('0x26')](recordings[_0x2cdadb[_0x1430('0x10')]][_0x1430('0x27')],{'value':_0x2cdadb[_0x1430('0x21')]});if(_[_0x1430('0x18')](_0x15d831)){recordings[_0x2cdadb[_0x1430('0x10')]][_0x1430('0x27')][_0x1430('0x28')]({'value':_0x2cdadb[_0x1430('0x21')]});}}}}catch(_0x248bc1){utils[_0x1430('0x14')](util[_0x1430('0x4')](_0x1430('0x1f'),_0x2cdadb[_0x1430('0x6')]),_0x248bc1);}};exports['hangup']=function(_0x3a84ab){try{if(!_[_0x1430('0x18')](recordings[_0x3a84ab[_0x1430('0x6')]])){utils['debug'](util[_0x1430('0x4')](_0x1430('0x29'),_0x3a84ab[_0x1430('0x6')]),_0x3a84ab);utils[_0x1430('0x3')](util[_0x1430('0x4')](_0x1430('0x2a'),_0x3a84ab[_0x1430('0x6')],_0x3a84ab[_0x1430('0x2b')],_0x3a84ab[_0x1430('0x2c')],_0x3a84ab[_0x1430('0x2d')]));recordings[_0x3a84ab[_0x1430('0x6')]][_0x1430('0x2b')]=_0x3a84ab[_0x1430('0x2b')];recordings[_0x3a84ab[_0x1430('0x6')]][_0x1430('0x2c')]=_0x3a84ab[_0x1430('0x2c')];recordings[_0x3a84ab['uniqueid']][_0x1430('0x2e')]=_0x3a84ab['connectedlinenum'];recordings[_0x3a84ab[_0x1430('0x6')]][_0x1430('0x2f')]=_0x3a84ab[_0x1430('0x2f')];if(recordings[_0x3a84ab[_0x1430('0x6')]][_0x1430('0x30')]==_0x1430('0x31')&&recordings[_0x3a84ab[_0x1430('0x6')]]['accountcode']){recordings[_0x3a84ab[_0x1430('0x6')]][_0x1430('0x2e')]=recordings[_0x3a84ab[_0x1430('0x6')]]['accountcode'];recordings[_0x3a84ab[_0x1430('0x6')]]['connectedlinename']='';}recordings[_0x3a84ab[_0x1430('0x6')]]['monitors'][_0x1430('0x32')](function(_0x5505f4){var _0x1546a8=_[_0x1430('0x33')](recordings[_0x3a84ab[_0x1430('0x6')]]);_0x1546a8[_0x1430('0x21')]=_0x5505f4[_0x1430('0x21')];writeDB(_0x1546a8);});delete recordings[_0x3a84ab[_0x1430('0x6')]];}}catch(_0xf05ffb){utils['error'](util[_0x1430('0x4')]('[%s][recordings][hangup]',_0x3a84ab['uniqueid']),_0xf05ffb);}};exports[_0x1430('0x34')]=function(_0x59ec1e){try{if(!_[_0x1430('0x18')](recordings[_0x59ec1e[_0x1430('0x6')]])){utils[_0x1430('0xf')](util[_0x1430('0x4')](_0x1430('0x35'),_0x59ec1e[_0x1430('0x6')]),_0x59ec1e);utils[_0x1430('0x3')](util[_0x1430('0x4')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x59ec1e[_0x1430('0x6')],_0x59ec1e[_0x1430('0x36')],_0x59ec1e[_0x1430('0x37')]));if(_0x59ec1e['application'][_0x1430('0x38')]()==_0x1430('0x39')&&_[_0x1430('0x3a')](_0x59ec1e[_0x1430('0x37')][_0x1430('0x38')](),_0x1430('0x3b'))){var _0x1a2b35=_0x59ec1e[_0x1430('0x37')][_0x1430('0x3c')]('=');var _0x2cc202=_0x1a2b35[0x0]['substring'](_0x1a2b35[0x0]['lastIndexOf']('(')+0x1,_0x1a2b35[0x0]['lastIndexOf'](')'));var _0x53d3ac=_0x1a2b35[0x1];recordings[_0x59ec1e[_0x1430('0x6')]][_0x2cc202]=_0x53d3ac;}}}catch(_0x102636){utils[_0x1430('0x14')](util['format'](_0x1430('0x35'),_0x59ec1e[_0x1430('0x6')]),_0x102636);}};exports[_0x1430('0x3d')]=function(_0x3974c8){try{if(!_[_0x1430('0x18')](recordings[_0x3974c8['uniqueid']])){utils[_0x1430('0xf')](util[_0x1430('0x4')](_0x1430('0x3e'),_0x3974c8[_0x1430('0x6')]),_0x3974c8);utils[_0x1430('0x3')](util[_0x1430('0x4')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x3974c8[_0x1430('0x6')],_0x3974c8['queue']));recordings[_0x3974c8[_0x1430('0x6')]][_0x1430('0x3f')]=_0x3974c8['queue'];}}catch(_0x2f067d){utils[_0x1430('0x14')](util[_0x1430('0x4')](_0x1430('0x3e'),_0x3974c8[_0x1430('0x6')]),_0x2f067d);}};
\ No newline at end of file
+var _0x9547=['cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','name','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','error','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channel','varset','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith'];(function(_0x2a55f8,_0x540ac4){var _0x245efd=function(_0x4dbc19){while(--_0x4dbc19){_0x2a55f8['push'](_0x2a55f8['shift']());}};_0x245efd(++_0x540ac4);}(_0x9547,0x17c));var _0x7954=function(_0x1499d4,_0x347320){_0x1499d4=_0x1499d4-0x0;var _0x57d6d0=_0x9547[_0x1499d4];return _0x57d6d0;};'use strict';var _=require(_0x7954('0x0'));var util=require(_0x7954('0x1'));var utils=require(_0x7954('0x2'));var recordings={};function writeDB(_0xc7b70b){utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x5'),_0xc7b70b[_0x7954('0x6')]));if(_0xc7b70b[_0x7954('0x7')]){utils[_0x7954('0x8')](_0xc7b70b[_0x7954('0x7')])[_0x7954('0x9')](function(_0x567ddc){if(_0x567ddc){_0xc7b70b[_0x7954('0xa')]=_0x567ddc[_0x7954('0xb')];_0xc7b70b['UserId']=_0x567ddc['id'];}utils[_0x7954('0xc')]('CreateVoiceRecording',_0xc7b70b);});}else{utils['request'](_0x7954('0xd'),_0xc7b70b);}}exports[_0x7954('0xe')]=function(_0xc6fda7){try{utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x10'),_0xc6fda7[_0x7954('0x6')]),_0xc6fda7);if(_0xc6fda7['uniqueid']==_0xc6fda7[_0x7954('0x11')]){utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x12'),_0xc6fda7[_0x7954('0x6')],_0xc6fda7[_0x7954('0x13')],_0xc6fda7['exten']));recordings[_0xc6fda7['uniqueid']]={'uniqueid':_0xc6fda7[_0x7954('0x6')],'accountcode':_0xc6fda7[_0x7954('0x7')],'exten':_0xc6fda7['exten'],'context':_0xc6fda7[_0x7954('0x13')],'channel':_0xc6fda7['channel'],'monitors':[]};}}catch(_0x4cbc6a){utils[_0x7954('0x14')](util[_0x7954('0x4')]('[%s][recordings][newchannel]',_0xc6fda7[_0x7954('0x6')]),_0x4cbc6a);}};exports['newstate']=function(_0x5dc542){try{utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x15'),_0x5dc542[_0x7954('0x6')]),_0x5dc542);if(!_[_0x7954('0x16')](recordings[_0x5dc542[_0x7954('0x6')]])&&_0x5dc542['channelstate']==0x6){utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x17'),_0x5dc542[_0x7954('0x6')],_0x5dc542[_0x7954('0x13')],_0x5dc542[_0x7954('0x18')]));}else if(!_[_0x7954('0x16')](recordings[_0x5dc542['linkedid']])&&_0x5dc542['channelstate']==0x6&&_0x5dc542[_0x7954('0x13')]!='transfer'){utils[_0x7954('0x3')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x5dc542[_0x7954('0x6')],_0x5dc542['linkedid'],_0x5dc542[_0x7954('0x13')],_0x5dc542['channel']));recordings[_0x5dc542[_0x7954('0x11')]][_0x7954('0x7')]=_0x5dc542[_0x7954('0x7')];}}catch(_0x43bbf1){utils['error'](util[_0x7954('0x4')]('[%s][recordings][newstate]',_0x5dc542[_0x7954('0x6')]),_0x43bbf1);}};exports[_0x7954('0x19')]=function(_0x9f7dd5){try{if(!_[_0x7954('0x16')](_0x9f7dd5[_0x7954('0x1a')])&&!_[_0x7954('0x16')](_0x9f7dd5['variable']['mixmonitor_filename'])){utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x1b'),_0x9f7dd5[_0x7954('0x6')]),_0x9f7dd5);utils[_0x7954('0x3')](util['format'](_0x7954('0x1c'),_0x9f7dd5[_0x7954('0x6')],_0x9f7dd5[_0x7954('0x1a')],_0x9f7dd5[_0x7954('0x1d')]));if(_[_0x7954('0x1e')](_0x9f7dd5[_0x7954('0x1d')],_0x7954('0x1f'))){_0x9f7dd5[_0x7954('0x1d')]=_0x9f7dd5['value'][_0x7954('0x20')](_0x7954('0x1f'),_0x7954('0x21'));}if(recordings[_0x9f7dd5[_0x7954('0x11')]]){var _0x587c2a=_[_0x7954('0x22')](recordings[_0x9f7dd5['linkedid']]['monitors'],{'value':_0x9f7dd5[_0x7954('0x1d')]});if(_[_0x7954('0x16')](_0x587c2a)){recordings[_0x9f7dd5['linkedid']][_0x7954('0x23')][_0x7954('0x24')]({'value':_0x9f7dd5['value']});}}}}catch(_0x3e301b){utils[_0x7954('0x14')](util[_0x7954('0x4')](_0x7954('0x1b'),_0x9f7dd5[_0x7954('0x6')]),_0x3e301b);}};exports['hangup']=function(_0xf9688){try{if(!_[_0x7954('0x16')](recordings[_0xf9688[_0x7954('0x6')]])){utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x25'),_0xf9688[_0x7954('0x6')]),_0xf9688);utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x26'),_0xf9688[_0x7954('0x6')],_0xf9688[_0x7954('0x27')],_0xf9688[_0x7954('0x28')],_0xf9688[_0x7954('0x29')]));recordings[_0xf9688[_0x7954('0x6')]]['calleridnum']=_0xf9688[_0x7954('0x27')];recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x28')]=_0xf9688[_0x7954('0x28')];recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x2a')]=_0xf9688['connectedlinenum'];recordings[_0xf9688[_0x7954('0x6')]]['connectedlinename']=_0xf9688[_0x7954('0x2b')];if(recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x2c')]==_0x7954('0x2d')&&recordings[_0xf9688[_0x7954('0x6')]]['accountcode']){recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x2a')]=recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x7')];recordings[_0xf9688['uniqueid']][_0x7954('0x2b')]='';}recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x23')][_0x7954('0x2e')](function(_0x5c2f90){var _0x2486f1=_['clone'](recordings[_0xf9688[_0x7954('0x6')]]);_0x2486f1[_0x7954('0x1d')]=_0x5c2f90[_0x7954('0x1d')];writeDB(_0x2486f1);});delete recordings[_0xf9688['uniqueid']];}}catch(_0xa6eb1f){utils['error'](util['format'](_0x7954('0x25'),_0xf9688[_0x7954('0x6')]),_0xa6eb1f);}};exports[_0x7954('0x2f')]=function(_0x70a885){try{if(!_[_0x7954('0x16')](recordings[_0x70a885[_0x7954('0x6')]])){utils[_0x7954('0xf')](util['format'](_0x7954('0x30'),_0x70a885[_0x7954('0x6')]),_0x70a885);utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x31'),_0x70a885[_0x7954('0x6')],_0x70a885[_0x7954('0x32')],_0x70a885[_0x7954('0x33')]));if(_0x70a885[_0x7954('0x32')][_0x7954('0x34')]()=='set'&&_[_0x7954('0x35')](_0x70a885['appdata'][_0x7954('0x34')](),_0x7954('0x36'))){var _0x828c4d=_0x70a885[_0x7954('0x33')][_0x7954('0x37')]('=');var _0x1a15e5=_0x828c4d[0x0][_0x7954('0x38')](_0x828c4d[0x0][_0x7954('0x39')]('(')+0x1,_0x828c4d[0x0][_0x7954('0x39')](')'));var _0x4470e4=_0x828c4d[0x1];recordings[_0x70a885[_0x7954('0x6')]][_0x1a15e5]=_0x4470e4;}}}catch(_0x3258c8){utils[_0x7954('0x14')](util[_0x7954('0x4')](_0x7954('0x30'),_0x70a885[_0x7954('0x6')]),_0x3258c8);}};exports[_0x7954('0x3a')]=function(_0x2a0169){try{if(!_['isNil'](recordings[_0x2a0169['uniqueid']])){utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x3b'),_0x2a0169[_0x7954('0x6')]),_0x2a0169);utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x3c'),_0x2a0169[_0x7954('0x6')],_0x2a0169[_0x7954('0x3d')]));recordings[_0x2a0169[_0x7954('0x6')]][_0x7954('0x3d')]=_0x2a0169[_0x7954('0x3d')];}}catch(_0x2eeca7){utils[_0x7954('0x14')](util[_0x7954('0x4')](_0x7954('0x3b'),_0x2a0169[_0x7954('0x6')]),_0x2eeca7);}};
\ No newline at end of file
index 480e18f..04df38f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd881=['secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','attended','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','origtransfereruniqueid','uniqueid','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum'];(function(_0x23a43d,_0x4d825b){var _0x237807=function(_0x3c398a){while(--_0x3c398a){_0x23a43d['push'](_0x23a43d['shift']());}};_0x237807(++_0x4d825b);}(_0xd881,0x167));var _0x1d88=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd881[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x1d88('0x0'));var util=require(_0x1d88('0x1'));var utils=require(_0x1d88('0x2'));function writeDB(_0x4f0c8a){utils[_0x1d88('0x3')](util[_0x1d88('0x4')](_0x1d88('0x5'),_0x4f0c8a[_0x1d88('0x6')]==='attended'?_0x4f0c8a[_0x1d88('0x7')]:_0x4f0c8a[_0x1d88('0x8')],_0x4f0c8a['type']));utils['request'](_0x1d88('0x9'),_0x4f0c8a);}exports[_0x1d88('0xa')]={};exports[_0x1d88('0xb')]=function(_0x3e90d2){try{utils[_0x1d88('0xc')](util['format'](_0x1d88('0xd'),_0x3e90d2['uniqueid']),_0x3e90d2);utils[_0x1d88('0x3')](util['format']('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x3e90d2[_0x1d88('0x8')],_0x3e90d2[_0x1d88('0xe')],_0x3e90d2['transferercalleridname'],_0x3e90d2[_0x1d88('0xf')],_0x3e90d2[_0x1d88('0x10')]));_0x3e90d2['type']='blind';exports[_0x1d88('0xa')][_0x3e90d2[_0x1d88('0x11')]]=_0x3e90d2;writeDB(_0x3e90d2);}catch(_0x1d69af){utils[_0x1d88('0x12')](util[_0x1d88('0x4')](_0x1d88('0xd'),_0x3e90d2['uniqueid']),_0x1d69af);}};exports[_0x1d88('0x13')]=function(_0x1daee2){try{utils[_0x1d88('0xc')](util[_0x1d88('0x4')](_0x1d88('0x14'),_0x1daee2[_0x1d88('0x7')]),_0x1daee2);utils[_0x1d88('0x3')](util[_0x1d88('0x4')](_0x1d88('0x15'),_0x1daee2[_0x1d88('0x7')],_0x1daee2['origtransferercalleridnum'],_0x1daee2['origtransferercalleridname'],_0x1daee2['transfertargetcalleridnum'],_0x1daee2[_0x1d88('0x16')]));_0x1daee2=_[_0x1d88('0x17')](_0x1daee2,{'transfererchannel':_0x1daee2[_0x1d88('0x18')],'transferercalleridnum':_0x1daee2[_0x1d88('0x19')],'transferercalleridname':_0x1daee2[_0x1d88('0x1a')],'transfererconnectedlinenum':_0x1daee2[_0x1d88('0x1b')],'transfererconnectedlinename':_0x1daee2[_0x1d88('0x1c')],'transfereraccountcode':_0x1daee2[_0x1d88('0x1d')],'transferercontext':_0x1daee2[_0x1d88('0x1e')],'transfererexten':_0x1daee2[_0x1d88('0x1f')],'transfererlinkedid':_0x1daee2[_0x1d88('0x20')],'context':_0x1daee2['origtransferercontext'],'extension':_0x1daee2['origtransfererexten'],'type':_0x1d88('0x21')});if(_[_0x1d88('0x22')](_0x1daee2[_0x1d88('0x23')])){_0x1daee2=_[_0x1d88('0x17')](_0x1daee2,{'transfereechannel':_0x1daee2[_0x1d88('0x24')],'transfereecalleridnum':_0x1daee2['transfertargetcalleridnum'],'transfereecalleridname':_0x1daee2[_0x1d88('0x16')],'transfereeconnectedlinenum':_0x1daee2[_0x1d88('0x25')],'transfereeconnectedlinename':_0x1daee2[_0x1d88('0x26')],'transfereeaccountcode':_0x1daee2[_0x1d88('0x27')],'transfereecontext':_0x1daee2[_0x1d88('0x28')],'transfereeexten':_0x1daee2[_0x1d88('0x29')],'transfereelinkedid':_0x1daee2[_0x1d88('0x2a')]});}writeDB(_0x1daee2);}catch(_0x783ad9){utils['error'](util[_0x1d88('0x4')](_0x1d88('0x14'),_0x1daee2[_0x1d88('0x7')]),_0x783ad9);}};
\ No newline at end of file
+var _0x4501=['origtransfererexten','isNil','transfereechannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid'];(function(_0x34aec4,_0x3801da){var _0x51e1a7=function(_0x24e87f){while(--_0x24e87f){_0x34aec4['push'](_0x34aec4['shift']());}};_0x51e1a7(++_0x3801da);}(_0x4501,0x1a2));var _0x1450=function(_0x167b9e,_0x15520e){_0x167b9e=_0x167b9e-0x0;var _0x44576d=_0x4501[_0x167b9e];return _0x44576d;};'use strict';var _=require('lodash');var util=require(_0x1450('0x0'));var utils=require(_0x1450('0x1'));function writeDB(_0x53a44d){utils[_0x1450('0x2')](util[_0x1450('0x3')](_0x1450('0x4'),_0x53a44d[_0x1450('0x5')]===_0x1450('0x6')?_0x53a44d['origtransfereruniqueid']:_0x53a44d[_0x1450('0x7')],_0x53a44d[_0x1450('0x5')]));utils[_0x1450('0x8')](_0x1450('0x9'),_0x53a44d);}exports[_0x1450('0xa')]={};exports[_0x1450('0xb')]=function(_0x3fc626){try{utils[_0x1450('0xc')](util[_0x1450('0x3')]('[%s][transfers][blindtransfer]',_0x3fc626[_0x1450('0x7')]),_0x3fc626);utils[_0x1450('0x2')](util[_0x1450('0x3')](_0x1450('0xd'),_0x3fc626[_0x1450('0x7')],_0x3fc626[_0x1450('0xe')],_0x3fc626[_0x1450('0xf')],_0x3fc626[_0x1450('0x10')],_0x3fc626[_0x1450('0x11')]));_0x3fc626[_0x1450('0x5')]=_0x1450('0x12');exports[_0x1450('0xa')][_0x3fc626[_0x1450('0x13')]]=_0x3fc626;writeDB(_0x3fc626);}catch(_0x2d1b27){utils[_0x1450('0x14')](util['format']('[%s][transfers][blindtransfer]',_0x3fc626[_0x1450('0x7')]),_0x2d1b27);}};exports[_0x1450('0x15')]=function(_0x5814a5){try{utils['debug'](util['format']('[%s][transfers][attendedtransfer]',_0x5814a5[_0x1450('0x16')]),_0x5814a5);utils[_0x1450('0x2')](util[_0x1450('0x3')](_0x1450('0x17'),_0x5814a5[_0x1450('0x16')],_0x5814a5[_0x1450('0x18')],_0x5814a5[_0x1450('0x19')],_0x5814a5[_0x1450('0x1a')],_0x5814a5['transfertargetcalleridname']));_0x5814a5=_[_0x1450('0x1b')](_0x5814a5,{'transfererchannel':_0x5814a5[_0x1450('0x1c')],'transferercalleridnum':_0x5814a5[_0x1450('0x18')],'transferercalleridname':_0x5814a5[_0x1450('0x19')],'transfererconnectedlinenum':_0x5814a5[_0x1450('0x1d')],'transfererconnectedlinename':_0x5814a5['secondtransfererconnectedlinename'],'transfereraccountcode':_0x5814a5[_0x1450('0x1e')],'transferercontext':_0x5814a5[_0x1450('0x1f')],'transfererexten':_0x5814a5['secondtransfererexten'],'transfererlinkedid':_0x5814a5[_0x1450('0x20')],'context':_0x5814a5['origtransferercontext'],'extension':_0x5814a5[_0x1450('0x21')],'type':_0x1450('0x6')});if(_[_0x1450('0x22')](_0x5814a5[_0x1450('0x23')])){_0x5814a5=_[_0x1450('0x1b')](_0x5814a5,{'transfereechannel':_0x5814a5['transfertargetchannel'],'transfereecalleridnum':_0x5814a5[_0x1450('0x1a')],'transfereecalleridname':_0x5814a5[_0x1450('0x24')],'transfereeconnectedlinenum':_0x5814a5[_0x1450('0x25')],'transfereeconnectedlinename':_0x5814a5['transfertargetconnectedlinename'],'transfereeaccountcode':_0x5814a5[_0x1450('0x26')],'transfereecontext':_0x5814a5['transfertargetcontext'],'transfereeexten':_0x5814a5[_0x1450('0x27')],'transfereelinkedid':_0x5814a5[_0x1450('0x28')]});}writeDB(_0x5814a5);}catch(_0x1ca0f4){utils[_0x1450('0x14')](util[_0x1450('0x3')]('[%s][transfers][attendedtransfer]',_0x5814a5[_0x1450('0x16')]),_0x1ca0f4);}};
\ No newline at end of file
index 89d12e5..b318719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec66=['subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','now','isBefore','bluebird','jayson/promise','moment','util','http','../../config/logger','xdr','info','debug','inspect','error','request','then','catch','[utils][request]\x20name:%s','GetUser','internal','[utils][getUser]\x20where:%s','stringify','length','result','found','notfound','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','getVoiceQueueByName','GetVoiceQueue','type','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','add','seconds','format'];(function(_0x3c70e0,_0x1573dd){var _0x2f2f6e=function(_0x16c7a6){while(--_0x16c7a6){_0x3c70e0['push'](_0x3c70e0['shift']());}};_0x2f2f6e(++_0x1573dd);}(_0xec66,0x103));var _0x6ec6=function(_0x2ed7d1,_0x363741){_0x2ed7d1=_0x2ed7d1-0x0;var _0x38ae3c=_0xec66[_0x2ed7d1];return _0x38ae3c;};'use strict';var BPromise=require(_0x6ec6('0x0'));var jayson=require(_0x6ec6('0x1'));var moment=require(_0x6ec6('0x2'));var util=require(_0x6ec6('0x3'));var client=jayson['client'][_0x6ec6('0x4')]({'port':0x2329});var logger=require(_0x6ec6('0x5'))(_0x6ec6('0x6'));exports['info']=function(_0x1222b9,_0x4cc593){logger[_0x6ec6('0x7')](_0x1222b9,_0x4cc593?util['inspect'](_0x4cc593,{'showHidden':![],'depth':null}):'');};exports[_0x6ec6('0x8')]=function(_0xbda0ae,_0x18b97c){logger[_0x6ec6('0x8')](_0xbda0ae,_0x18b97c?util[_0x6ec6('0x9')](_0x18b97c,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x486113,_0x54c5c1){logger[_0x6ec6('0xa')](_0x486113,_0x54c5c1?util[_0x6ec6('0x9')](_0x54c5c1,{'showHidden':![],'depth':null}):'');};exports[_0x6ec6('0xb')]=function(_0x3d4a62,_0x307dda){return client[_0x6ec6('0xb')](_0x3d4a62,{'body':_0x307dda})[_0x6ec6('0xc')](function(_0x2c2e5e){logger[_0x6ec6('0x8')]('[utils][request]\x20name:%s',_0x3d4a62,_0x2c2e5e?util[_0x6ec6('0x9')](_0x2c2e5e,{'showHidden':![],'depth':null}):'');})[_0x6ec6('0xd')](function(_0x45726b){logger[_0x6ec6('0xa')](_0x6ec6('0xe'),_0x3d4a62,_0x45726b?util[_0x6ec6('0x9')](_0x45726b,{'showHidden':![],'depth':null}):'');});};function getUser(_0x478764){return client[_0x6ec6('0xb')](_0x6ec6('0xf'),{'options':{'raw':!![],'attributes':['id',_0x6ec6('0x10'),'name','interface'],'where':_0x478764,'limit':0x1}})[_0x6ec6('0xc')](function(_0x18a133){logger[_0x6ec6('0x8')](_0x6ec6('0x11'),JSON[_0x6ec6('0x12')](_0x478764),_0x18a133?util[_0x6ec6('0x9')](_0x18a133,{'showHidden':![],'depth':null}):'');return _0x18a133['result'][_0x6ec6('0x13')]?_0x18a133[_0x6ec6('0x14')][0x0]:null;});}exports['getUserByInternal']=function(_0x4c7f2e){return new BPromise(function(_0xc41b0a,_0x1ef506){if(_0x4c7f2e){return getUser({'internal':_0x4c7f2e})[_0x6ec6('0xc')](function(_0x332f4e){logger[_0x6ec6('0x7')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x4c7f2e,_0x332f4e?_0x6ec6('0x15'):_0x6ec6('0x16'));return _0xc41b0a(_0x332f4e);})[_0x6ec6('0xd')](function(_0x3a33fe){logger[_0x6ec6('0xa')](_0x6ec6('0x17'),_0x3a33fe?util[_0x6ec6('0x9')](_0x3a33fe,{'showHidden':![],'depth':null}):'');return _0xc41b0a(null);});}return _0xc41b0a(null);});};exports['getUserByInterface']=function(_0x5e6824){return new BPromise(function(_0x2ed5c6,_0x544a2d){if(_0x5e6824){return getUser({'interface':_0x5e6824})[_0x6ec6('0xc')](function(_0x20884b){logger[_0x6ec6('0x7')](_0x6ec6('0x18'),_0x5e6824,_0x20884b?_0x6ec6('0x15'):_0x6ec6('0x16'));return _0x2ed5c6(_0x20884b);})['catch'](function(_0x45e46f){logger[_0x6ec6('0xa')](_0x6ec6('0x19'),_0x45e46f?util[_0x6ec6('0x9')](_0x45e46f,{'showHidden':![],'depth':null}):'');return _0x2ed5c6(null);});}return _0x2ed5c6(null);});};exports[_0x6ec6('0x1a')]=function(_0x40a2d2){return new BPromise(function(_0x25c32d,_0x2577f2){if(_0x40a2d2){return getUser({'name':_0x40a2d2})[_0x6ec6('0xc')](function(_0x48c4ca){logger[_0x6ec6('0x7')]('[utils][getUserByName]\x20name:%s\x20%s',_0x40a2d2,_0x48c4ca?_0x6ec6('0x15'):_0x6ec6('0x16'));return _0x25c32d(_0x48c4ca);})[_0x6ec6('0xd')](function(_0x470fd2){logger[_0x6ec6('0xa')]('[utils][getUserByName]',_0x470fd2?util['inspect'](_0x470fd2,{'showHidden':![],'depth':null}):'');return _0x25c32d(null);});}return _0x25c32d(null);});};exports[_0x6ec6('0x1b')]=function(_0x580d3a){return new BPromise(function(_0x2df116,_0x4b20e4){if(_0x580d3a){return client[_0x6ec6('0xb')](_0x6ec6('0x1c'),{'options':{'raw':!![],'attributes':['id','name',_0x6ec6('0x1d'),'acw','acwTimeout'],'where':{'name':_0x580d3a},'limit':0x1}})[_0x6ec6('0xc')](function(_0x18917f){logger['debug'](_0x6ec6('0x1e'),_0x580d3a,_0x18917f?util[_0x6ec6('0x9')](_0x18917f,{'showHidden':![],'depth':null}):'');logger[_0x6ec6('0x7')](_0x6ec6('0x1f'),_0x580d3a,_0x18917f?_0x6ec6('0x15'):'notfound');return _0x2df116(_0x18917f[_0x6ec6('0x14')][_0x6ec6('0x13')]?_0x18917f[_0x6ec6('0x14')][0x0]:null);})[_0x6ec6('0xd')](function(_0x53cbed){logger['error']('[utils][getVoiceQueueByName]',_0x53cbed?util['inspect'](_0x53cbed,{'showHidden':![],'depth':null}):'');return _0x2df116(null);});}return _0x2df116(null);});};exports['addTime']=function(_0xae11e6,_0x1e443f){return moment(_0xae11e6)[_0x6ec6('0x20')](_0x1e443f,_0x6ec6('0x21'))[_0x6ec6('0x22')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x6ec6('0x23')]=function(_0x586dd6,_0xb20f4e){return moment(_0x586dd6)[_0x6ec6('0x24')](_0xb20f4e,'seconds')['format'](_0x6ec6('0x25'));};exports[_0x6ec6('0x26')]=function(_0x4cc0ae,_0x475db6){return moment(_0x4cc0ae)[_0x6ec6('0x27')](moment(_0x475db6),_0x6ec6('0x21'));};exports['sumTime']=function(_0x366864,_0x1f306b){return parseInt(_0x366864,0xa)+parseInt(_0x1f306b,0xa);};exports[_0x6ec6('0x28')]=function(){return moment()[_0x6ec6('0x22')](_0x6ec6('0x25'));};exports['isAfter']=function(_0x213c16,_0x3ff891){if(_0x3ff891){return moment(_0x213c16)['isAfter'](_0x3ff891);}return!![];};exports[_0x6ec6('0x29')]=function(_0x5871af,_0x5e4563){if(_0x5e4563){return moment(_0x5871af)['isBefore'](_0x5e4563);}else if(_0x5871af){return!![];}return![];};
\ No newline at end of file
+var _0x6829=['now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','[utils][getUserByInternal]','found','notfound','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','name','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','sumTime'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0x6829,0xf3));var _0x9682=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x6829[_0xc4001c];return _0x49f7bc;};'use strict';var BPromise=require(_0x9682('0x0'));var jayson=require(_0x9682('0x1'));var moment=require(_0x9682('0x2'));var util=require(_0x9682('0x3'));var client=jayson[_0x9682('0x4')][_0x9682('0x5')]({'port':0x2329});var logger=require('../../config/logger')(_0x9682('0x6'));exports['info']=function(_0x4c738e,_0x55e1a9){logger[_0x9682('0x7')](_0x4c738e,_0x55e1a9?util[_0x9682('0x8')](_0x55e1a9,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x1469d1,_0x5f14a5){logger[_0x9682('0x9')](_0x1469d1,_0x5f14a5?util[_0x9682('0x8')](_0x5f14a5,{'showHidden':![],'depth':null}):'');};exports[_0x9682('0xa')]=function(_0x501b3b,_0x3190f0){logger[_0x9682('0xa')](_0x501b3b,_0x3190f0?util[_0x9682('0x8')](_0x3190f0,{'showHidden':![],'depth':null}):'');};exports[_0x9682('0xb')]=function(_0x43b2b4,_0x311d7c){return client[_0x9682('0xb')](_0x43b2b4,{'body':_0x311d7c})[_0x9682('0xc')](function(_0x33134d){logger['debug'](_0x9682('0xd'),_0x43b2b4,_0x33134d?util[_0x9682('0x8')](_0x33134d,{'showHidden':![],'depth':null}):'');})[_0x9682('0xe')](function(_0x24b534){logger[_0x9682('0xa')](_0x9682('0xd'),_0x43b2b4,_0x24b534?util[_0x9682('0x8')](_0x24b534,{'showHidden':![],'depth':null}):'');});};function getUser(_0xcc8a63){return client['request'](_0x9682('0xf'),{'options':{'raw':!![],'attributes':['id',_0x9682('0x10'),'name',_0x9682('0x11')],'where':_0xcc8a63,'limit':0x1}})[_0x9682('0xc')](function(_0x1582f0){logger[_0x9682('0x9')](_0x9682('0x12'),JSON[_0x9682('0x13')](_0xcc8a63),_0x1582f0?util['inspect'](_0x1582f0,{'showHidden':![],'depth':null}):'');return _0x1582f0[_0x9682('0x14')][_0x9682('0x15')]?_0x1582f0['result'][0x0]:null;});}exports[_0x9682('0x16')]=function(_0xc1555d){return new BPromise(function(_0x25eb14,_0x1de916){if(_0xc1555d){return getUser({'internal':_0xc1555d})['then'](function(_0xb6478d){logger['info'](_0x9682('0x17'),_0xc1555d,_0xb6478d?'found':'notfound');return _0x25eb14(_0xb6478d);})[_0x9682('0xe')](function(_0x461307){logger[_0x9682('0xa')](_0x9682('0x18'),_0x461307?util[_0x9682('0x8')](_0x461307,{'showHidden':![],'depth':null}):'');return _0x25eb14(null);});}return _0x25eb14(null);});};exports['getUserByInterface']=function(_0xd5193){return new BPromise(function(_0x164359,_0xd9d97c){if(_0xd5193){return getUser({'interface':_0xd5193})['then'](function(_0xebfdce){logger[_0x9682('0x7')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0xd5193,_0xebfdce?_0x9682('0x19'):_0x9682('0x1a'));return _0x164359(_0xebfdce);})['catch'](function(_0x2634e7){logger[_0x9682('0xa')](_0x9682('0x1b'),_0x2634e7?util[_0x9682('0x8')](_0x2634e7,{'showHidden':![],'depth':null}):'');return _0x164359(null);});}return _0x164359(null);});};exports[_0x9682('0x1c')]=function(_0x49af57){return new BPromise(function(_0xb29922,_0xcb2b70){if(_0x49af57){return getUser({'name':_0x49af57})[_0x9682('0xc')](function(_0x57bce5){logger[_0x9682('0x7')](_0x9682('0x1d'),_0x49af57,_0x57bce5?_0x9682('0x19'):_0x9682('0x1a'));return _0xb29922(_0x57bce5);})[_0x9682('0xe')](function(_0xc24749){logger[_0x9682('0xa')](_0x9682('0x1e'),_0xc24749?util[_0x9682('0x8')](_0xc24749,{'showHidden':![],'depth':null}):'');return _0xb29922(null);});}return _0xb29922(null);});};exports[_0x9682('0x1f')]=function(_0x43c729){return new BPromise(function(_0x48df78,_0x24cbe9){if(_0x43c729){return client['request'](_0x9682('0x20'),{'options':{'raw':!![],'attributes':['id',_0x9682('0x21'),'type','acw',_0x9682('0x22')],'where':{'name':_0x43c729},'limit':0x1}})[_0x9682('0xc')](function(_0x5d4c3d){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0x43c729,_0x5d4c3d?util[_0x9682('0x8')](_0x5d4c3d,{'showHidden':![],'depth':null}):'');logger[_0x9682('0x7')](_0x9682('0x23'),_0x43c729,_0x5d4c3d?_0x9682('0x19'):'notfound');return _0x48df78(_0x5d4c3d[_0x9682('0x14')][_0x9682('0x15')]?_0x5d4c3d[_0x9682('0x14')][0x0]:null);})['catch'](function(_0x15bdcb){logger[_0x9682('0xa')](_0x9682('0x24'),_0x15bdcb?util['inspect'](_0x15bdcb,{'showHidden':![],'depth':null}):'');return _0x48df78(null);});}return _0x48df78(null);});};exports[_0x9682('0x25')]=function(_0x101fcc,_0x3b95be){return moment(_0x101fcc)[_0x9682('0x26')](_0x3b95be,_0x9682('0x27'))[_0x9682('0x28')](_0x9682('0x29'));};exports[_0x9682('0x2a')]=function(_0x1ad001,_0x25152e){return moment(_0x1ad001)[_0x9682('0x2b')](_0x25152e,_0x9682('0x27'))[_0x9682('0x28')](_0x9682('0x29'));};exports['diffTime']=function(_0x1c3ed6,_0x85aed0){return moment(_0x1c3ed6)['diff'](moment(_0x85aed0),_0x9682('0x27'));};exports[_0x9682('0x2c')]=function(_0x54dfa1,_0x544f2d){return parseInt(_0x54dfa1,0xa)+parseInt(_0x544f2d,0xa);};exports[_0x9682('0x2d')]=function(){return moment()[_0x9682('0x28')](_0x9682('0x29'));};exports['isAfter']=function(_0x1b6278,_0xb815ac){if(_0xb815ac){return moment(_0x1b6278)[_0x9682('0x2e')](_0xb815ac);}return!![];};exports[_0x9682('0x2f')]=function(_0x2a3092,_0x2149c5){if(_0x2149c5){return moment(_0x2a3092)[_0x9682('0x2f')](_0x2149c5);}else if(_0x2a3092){return!![];}return![];};
\ No newline at end of file